./PaxHeaders.22528/elk-2.3.220000644002504400250440000000005012337331340013466 xustar000000000000000020 atime=1400746705 20 ctime=1400746720 elk-2.3.22/0000755002504400250440000000000012337331340014152 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/PaxHeaders.22528/setup0000644002504400250440000000005012337331332014472 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/setup0000755002504400250440000000565412337331332015253 0ustar00dewhurstdewhurst00000000000000#! /bin/sh # Setup script for the Elk Code # generic values MAKE="make" F90="f90" F90_OPTS="-O3" F77=$F90 F77_OPTS=$F90_OPTS AR="ar" LIB_SYS="" LIB_LPK="lapack.a blas.a" LIB_FFT="fftlib.a" # get system type from user GETSYS () { clear echo "Choose compiler:" echo echo " 1. Intel Fortran (ifort) with OpenMP" echo " 2. GNU Fortran (gfortran) with OpenMP" echo " 3. Portland Group Fortran (pgf90) with OpenMP" echo " 4. G95 (g95)" echo " 5. NAG Fortran (nagfor)" echo " 6. IBM Fortran (xlf90_r) with OpenMP" echo echo " 20. Intel Fortran profiling (debug only)" echo " 21. GNU Fortran code check (debug only)" echo " 22. G95 code check (debug only)" echo echo " o. Other x. Exit" echo read SYS if [ "$SYS" = x ] ; then exit 0 elif [ "$SYS" = o ] ; then echo "Enter Fortran 90 compiler command:" read F90 echo "Enter Fortran 90 compiler options:" read F90_OPTS echo "Enter Fortran 77 compiler command:" read F77 echo "Enter Fortran 77 compiler options:" read F77_OPTS elif [ "$SYS" = 1 ] ; then F90="ifort" F90_OPTS="-O3 -ip -unroll -no-prec-div -openmp" F77=$F90 F77_OPTS=$F90_OPTS elif [ "$SYS" = 2 ] ; then F90="gfortran" F90_OPTS="-O3 -ffast-math -funroll-loops -fopenmp" F77=$F90 F77_OPTS=$F90_OPTS elif [ "$SYS" = 3 ] ; then F90="pgf90" F90_OPTS="-O3 -mp -lpthread" F77=$F90 F77_OPTS=$F90_OPTS elif [ "$SYS" = 4 ] ; then F90="g95" F90_OPTS="-O3 -fno-second-underscore" F77=$F90 F77_OPTS=$F90_OPTS elif [ "$SYS" = 5 ] ; then F90="nagfor" F90_OPTS="-O4 -kind=byte -dusty -dcfuns" F77=$F90 F77_OPTS=$F90_OPTS elif [ "$SYS" = 6 ] ; then F90="xlf90_r" F90_OPTS="-O3 -qsmp=omp" F77=$F90 F77_OPTS=$F90_OPTS elif [ "$SYS" = 20 ] ; then F90="ifort" F90_OPTS="-O3 -ip -unroll -no-prec-div -g -p" F77=$F90 F77_OPTS=$F90_OPTS elif [ "$SYS" = 21 ] ; then F90="gfortran" F90_OPTS="-O3 -fopenmp -fcheck=all -finit-real=snan -Wextra -Wall" F77=$F90 F77_OPTS=$F90_OPTS elif [ "$SYS" = 22 ] ; then F90="g95" F90_OPTS="-O3 -Wall -std=f95 -pedantic -fbounds-check -fno-second-underscore -ftrace=full" F77=$F90 F77_OPTS="-O3 -fno-second-underscore" else GETSYS fi } GETSYS # produce the make.inc file echo > make.inc echo "MAKE = $MAKE" >> make.inc echo "F90 = $F90" >> make.inc echo "F90_OPTS = $F90_OPTS" >> make.inc echo "F77 = $F77" >> make.inc echo "F77_OPTS = $F77_OPTS" >> make.inc echo "AR = $AR" >> make.inc echo "LIB_SYS = $LIB_SYS" >> make.inc echo "# LAPACK and BLAS libraries" >> make.inc echo "LIB_LPK = $LIB_LPK" >> make.inc echo "LIB_FFT = $LIB_FFT" >> make.inc cat make.def >> make.inc echo echo "You can now edit the compiler options in 'make.inc' to use optimised" echo "BLAS/LAPACK/FFT libraries, MPI parallelisation and Libxc." echo "See the Elk manual for details." echo echo "Then run 'make' to compile the code." echo elk-2.3.22/PaxHeaders.22528/Makefile0000644002504400250440000000005012337331332015047 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/Makefile0000644002504400250440000000042512337331332015614 0ustar00dewhurstdewhurst00000000000000 MAKE = make include make.inc all: cd src; $(MAKE) all cd src/eos; $(MAKE) cd src/spacegroup; $(MAKE) clean: cd src; $(MAKE) cleanall cd src/eos; $(MAKE) clean cd src/spacegroup; $(MAKE) clean rm -f *.o *.mod *~ fort.* ifc* *.gcno *.exe test: cd tests; ./tests.sh elk-2.3.22/PaxHeaders.22528/species0000644002504400250440000000005012337331332014765 xustar000000000000000020 atime=1400746713 20 ctime=1400746714 elk-2.3.22/species/0000755002504400250440000000000012337331332015606 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/species/PaxHeaders.22528/Te.in0000644002504400250440000000005012337331332015742 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Te.in0000644002504400250440000000347612337331332016520 0ustar00dewhurstdewhurst00000000000000 'Te' : spsymb 'tellurium' : spname -52.0000 : spzn 232600.5707 : spmass 0.277350E-06 2.6000 39.8837 600 : sprmin, rmt, sprmax, nrmt 17 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.5022 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5594 0 T elk-2.3.22/species/PaxHeaders.22528/K.in0000644002504400250440000000005012337331332015564 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/K.in0000644002504400250440000000265612337331332016341 0ustar00dewhurstdewhurst00000000000000 'K' : spsymb 'potassium' : spname -19.0000 : spzn 71271.84084 : spmass 0.458831E-06 2.4000 64.2814 500 : sprmin, rmt, sprmax, nrmt 8 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 4 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.2928 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6889 0 T elk-2.3.22/species/PaxHeaders.22528/Cr.in0000644002504400250440000000005012337331332015736 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Cr.in0000644002504400250440000000344012337331332016503 0ustar00dewhurstdewhurst00000000000000 'Cr' : spsymb 'chromium' : spname -24.0000 : spzn 94783.09194 : spmass 0.408248E-06 2.4000 49.5382 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 3.00000 F 3 2 3 2.00000 F 4 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.7020 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6530 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1134 0 T elk-2.3.22/species/PaxHeaders.22528/Ac.in0000644002504400250440000000005012337331331015714 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Ac.in0000644002504400250440000000434012337331331016461 0ustar00dewhurstdewhurst00000000000000 'Ac' : spsymb 'actinium' : spname -89.0000 : spzn 413795.6860 : spmass 0.212000E-06 3.0000 58.5155 800 : sprmin, rmt, sprmax, nrmt 26 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 6 2 2 1.000000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.8323 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.4862 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6749 0 T elk-2.3.22/species/PaxHeaders.22528/Np.in0000644002504400250440000000005012337331332015747 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Np.in0000644002504400250440000000465412337331332016524 0ustar00dewhurstdewhurst00000000000000 'Np' : spsymb 'neptunium' : spname -93.0000 : spzn 432024.5709 : spmass 0.207390E-06 3.0000 59.9281 800 : sprmin, rmt, sprmax, nrmt 28 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 3.00000 F 5 3 4 1.000000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 6 2 2 1.000000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1316 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8240 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7920 0 T elk-2.3.22/species/PaxHeaders.22528/N.in0000644002504400250440000000005012337331332015567 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/N.in0000644002504400250440000000223012337331332016330 0ustar00dewhurstdewhurst00000000000000 'N' : spsymb 'nitrogen' : spname -7.00000 : spzn 25532.65214 : spmass 0.755929E-06 1.8000 34.9411 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 1.000000 F 2 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6770 0 T elk-2.3.22/species/PaxHeaders.22528/C.in0000644002504400250440000000005012337331331015553 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/C.in0000644002504400250440000000223012337331331016314 0ustar00dewhurstdewhurst00000000000000 'C' : spsymb 'carbon' : spname -6.00000 : spzn 21894.16672 : spmass 0.816497E-06 1.8000 39.9481 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 1.000000 F 2 1 2 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5012 0 T elk-2.3.22/species/PaxHeaders.22528/Ba.in0000644002504400250440000000005012337331331015713 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Ba.in0000644002504400250440000000400012337331331016451 0ustar00dewhurstdewhurst00000000000000 'Ba' : spsymb 'barium' : spname -56.0000 : spzn 250331.8069 : spmass 0.267261E-06 2.8000 54.2866 700 : sprmin, rmt, sprmax, nrmt 18 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.2515 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.2408 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6670 0 T elk-2.3.22/species/PaxHeaders.22528/Pd.in0000644002504400250440000000005012337331332015735 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Pd.in0000644002504400250440000000362012337331332016502 0ustar00dewhurstdewhurst00000000000000 'Pd' : spsymb 'palladium' : spname -46.0000 : spzn 193991.7925 : spmass 0.294884E-06 2.6000 41.5324 500 : sprmin, rmt, sprmax, nrmt 14 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 6.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.1380 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8352 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1522 0 T elk-2.3.22/species/PaxHeaders.22528/Re.in0000644002504400250440000000005012337331332015740 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Re.in0000644002504400250440000000465212337331332016513 0ustar00dewhurstdewhurst00000000000000 'Re' : spsymb 'rhenium' : spname -75.0000 : spzn 339434.5961 : spmass 0.230940E-06 2.8000 40.9628 700 : sprmin, rmt, sprmax, nrmt 22 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 3.00000 F 5 2 3 2.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 8 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.5110 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.1270 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6149 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1881 0 T elk-2.3.22/species/PaxHeaders.22528/Fe.in0000644002504400250440000000005012337331332015724 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Fe.in0000644002504400250440000000344012337331332016471 0ustar00dewhurstdewhurst00000000000000 'Fe' : spsymb 'iron' : spname -26.0000 : spzn 101799.2074 : spmass 0.392232E-06 2.4000 42.6274 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 4.00000 F 3 2 3 2.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.4344 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.1817 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2816 0 T elk-2.3.22/species/PaxHeaders.22528/Xe.in0000644002504400250440000000005012337331332015746 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Xe.in0000644002504400250440000000347612337331332016524 0ustar00dewhurstdewhurst00000000000000 'Xe' : spsymb 'xenon' : spname -54.0000 : spzn 239332.4978 : spmass 0.272166E-06 2.4000 35.5505 600 : sprmin, rmt, sprmax, nrmt 17 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.1523 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7334 0 T elk-2.3.22/species/PaxHeaders.22528/Ir.in0000644002504400250440000000005012337331332015744 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ir.in0000644002504400250440000000440412337331332016512 0ustar00dewhurstdewhurst00000000000000 'Ir' : spsymb 'iridium' : spname -77.0000 : spzn 350390.1559 : spmass 0.227921E-06 2.8000 41.0330 700 : sprmin, rmt, sprmax, nrmt 22 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 T 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 4.00000 F 5 2 3 3.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.2294 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8716 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2478 0 T elk-2.3.22/species/PaxHeaders.22528/Pt.in0000644002504400250440000000005012337331332015755 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Pt.in0000644002504400250440000000440412337331332016523 0ustar00dewhurstdewhurst00000000000000 'Pt' : spsymb 'platinum' : spname -78.0000 : spzn 355605.4398 : spmass 0.226455E-06 2.8000 40.1191 700 : sprmin, rmt, sprmax, nrmt 22 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 T 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 4.00000 F 5 2 3 5.00000 F 6 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.5235 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.9151 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2143 0 T elk-2.3.22/species/PaxHeaders.22528/No.in0000644002504400250440000000005012337331332015746 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/No.in0000644002504400250440000000462012337331332016514 0ustar00dewhurstdewhurst00000000000000 'No' : spsymb 'nobelium' : spname -102.000 : spzn 472128.1176 : spmass 0.198030E-06 3.0000 49.0598 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 6.00000 F 5 3 4 8.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1751 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.3481 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8216 0 T elk-2.3.22/species/PaxHeaders.22528/Sn.in0000644002504400250440000000005012337331332015752 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Sn.in0000644002504400250440000000347612337331332016530 0ustar00dewhurstdewhurst00000000000000 'Sn' : spsymb 'tin' : spname -50.0000 : spzn 216395.0920 : spmass 0.282843E-06 2.6000 51.9870 600 : sprmin, rmt, sprmax, nrmt 17 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 5 1 1 1.000000 F 5 1 2 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.1993 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9327 0 T elk-2.3.22/species/PaxHeaders.22528/Lr.in0000644002504400250440000000005012337331332015747 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Lr.in0000644002504400250440000000465412337331332016524 0ustar00dewhurstdewhurst00000000000000 'Lr' : spsymb 'lawrencium' : spname -103.000 : spzn 477596.7830 : spmass 0.197066E-06 3.0000 68.3662 800 : sprmin, rmt, sprmax, nrmt 28 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 6.00000 F 5 3 4 8.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 6 2 2 1.000000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.3668 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.5853 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9447 0 T elk-2.3.22/species/PaxHeaders.22528/Ta.in0000644002504400250440000000005012337331332015736 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ta.in0000644002504400250440000000435012337331332016504 0ustar00dewhurstdewhurst00000000000000 'Ta' : spsymb 'tantalum' : spname -73.0000 : spzn 329847.8433 : spmass 0.234082E-06 2.8000 47.0304 700 : sprmin, rmt, sprmax, nrmt 21 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 3.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8655 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.6690 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.3498 0 T elk-2.3.22/species/PaxHeaders.22528/W.in0000644002504400250440000000005012337331332015600 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/W.in0000644002504400250440000000465212337331332016353 0ustar00dewhurstdewhurst00000000000000 'W' : spsymb 'tungsten' : spname -74.0000 : spzn 335119.8190 : spmass 0.232495E-06 2.8000 47.0748 700 : sprmin, rmt, sprmax, nrmt 22 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 3.00000 F 5 2 3 1.000000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 8 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.1774 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.8962 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.4828 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1560 0 T elk-2.3.22/species/PaxHeaders.22528/Fm.in0000644002504400250440000000005012337331332015734 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Fm.in0000644002504400250440000000462012337331332016502 0ustar00dewhurstdewhurst00000000000000 'Fm' : spsymb 'fermium' : spname -100.0000 : spzn 468482.3406 : spmass 0.200000E-06 3.0000 55.4667 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 6.00000 F 5 3 4 6.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1486 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.2021 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8046 0 T elk-2.3.22/species/PaxHeaders.22528/Sc.in0000644002504400250440000000005012337331332015737 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Sc.in0000644002504400250440000000313612337331332016506 0ustar00dewhurstdewhurst00000000000000 'Sc' : spsymb 'scandium' : spname -21.0000 : spzn 81949.61066 : spmass 0.436436E-06 2.4000 49.0173 500 : sprmin, rmt, sprmax, nrmt 9 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 1.000000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0100 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.2267 0 T elk-2.3.22/species/PaxHeaders.22528/Os.in0000644002504400250440000000005012337331332015753 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Os.in0000644002504400250440000000465212337331332016526 0ustar00dewhurstdewhurst00000000000000 'Os' : spsymb 'osmium' : spname -76.0000 : spzn 346768.0765 : spmass 0.229416E-06 2.8000 40.9981 700 : sprmin, rmt, sprmax, nrmt 22 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 4.00000 F 5 2 3 2.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 8 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8559 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.3540 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7397 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2159 0 T elk-2.3.22/species/PaxHeaders.22528/As.in0000644002504400250440000000005012337331331015734 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/As.in0000644002504400250440000000326212337331331016503 0ustar00dewhurstdewhurst00000000000000 'As' : spsymb 'arsenic' : spname -33.0000 : spzn 136573.7219 : spmass 0.348155E-06 2.4000 40.7341 500 : sprmin, rmt, sprmax, nrmt 12 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 2.00000 F 4 1 1 1.000000 F 4 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.4917 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5401 0 T elk-2.3.22/species/PaxHeaders.22528/Co.in0000644002504400250440000000005012337331332015733 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Co.in0000644002504400250440000000317212337331332016502 0ustar00dewhurstdewhurst00000000000000 'Co' : spsymb 'cobalt' : spname -27.0000 : spzn 107428.6517 : spmass 0.384900E-06 2.4000 41.4274 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 4.00000 F 3 2 3 3.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.3834 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.3072 0 T elk-2.3.22/species/PaxHeaders.22528/Cs.in0000644002504400250440000000005012337331332015737 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Cs.in0000644002504400250440000000400012337331332016475 0ustar00dewhurstdewhurst00000000000000 'Cs' : spsymb 'caesium' : spname -55.0000 : spzn 242271.8144 : spmass 0.269680E-06 2.8000 68.3104 700 : sprmin, rmt, sprmax, nrmt 18 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.6912 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9872 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.4810 0 T elk-2.3.22/species/PaxHeaders.22528/Hg.in0000644002504400250440000000005012337331332015730 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Hg.in0000644002504400250440000000371212337331332016477 0ustar00dewhurstdewhurst00000000000000 'Hg' : spsymb 'mercury' : spname -80.0000 : spzn 365653.2012 : spmass 0.223607E-06 2.8000 38.3488 700 : sprmin, rmt, sprmax, nrmt 22 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.2710 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.3442 0 T elk-2.3.22/species/PaxHeaders.22528/Yb.in0000644002504400250440000000005012337331332015744 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Yb.in0000644002504400250440000000431412337331332016512 0ustar00dewhurstdewhurst00000000000000 'Yb' : spsymb 'ytterbium' : spname -70.0000 : spzn 315432.6234 : spmass 0.239046E-06 2.8000 49.1291 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.0982 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0212 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9503 0 T elk-2.3.22/species/PaxHeaders.22528/H.in0000644002504400250440000000005012337331332015561 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/H.in0000644002504400250440000000163612337331332016333 0ustar00dewhurstdewhurst00000000000000 'H' : spsymb 'hydrogen' : spname -1.000000 : spzn 1837.362219 : spmass 0.200000E-05 1.4000 36.6488 200 : sprmin, rmt, sprmax, nrmt 1 : spnst 1 0 1 1.000000 F : spn, spl, spk, spocc, spcore 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 2 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F elk-2.3.22/species/PaxHeaders.22528/Ga.in0000644002504400250440000000005012337331332015721 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ga.in0000644002504400250440000000276012337331332016472 0ustar00dewhurstdewhurst00000000000000 'Ga' : spsymb 'gallium' : spname -31.0000 : spzn 127097.2538 : spmass 0.359211E-06 2.4000 57.3386 500 : sprmin, rmt, sprmax, nrmt 11 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 2.00000 F 4 1 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7036 0 T elk-2.3.22/species/PaxHeaders.22528/Rf.in0000644002504400250440000000005012337331332015741 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Rf.in0000644002504400250440000000465412337331332016516 0ustar00dewhurstdewhurst00000000000000 'Rf' : spsymb 'rutherfordium' : spname -104.000 : spzn 475773.8945 : spmass 0.196116E-06 3.0000 54.4823 800 : sprmin, rmt, sprmax, nrmt 28 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 6.00000 F 5 3 4 8.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 6 2 2 2.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5604 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.8179 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.0541 0 T elk-2.3.22/species/PaxHeaders.22528/Es.in0000644002504400250440000000005012337331332015741 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Es.in0000644002504400250440000000462012337331332016507 0ustar00dewhurstdewhurst00000000000000 'Es' : spsymb 'einsteinium' : spname -99.0000 : spzn 459367.8982 : spmass 0.201008E-06 3.0000 51.0277 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 6.00000 F 5 3 4 5.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1339 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.1315 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7952 0 T elk-2.3.22/species/PaxHeaders.22528/S.in0000644002504400250440000000005012337331332015574 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/S.in0000644002504400250440000000235412337331332016344 0ustar00dewhurstdewhurst00000000000000 'S' : spsymb 'sulphur' : spname -16.0000 : spzn 58450.91926 : spmass 0.500000E-06 2.2000 36.9680 400 : sprmin, rmt, sprmax, nrmt 7 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6346 0 T elk-2.3.22/species/PaxHeaders.22528/Sm.in0000644002504400250440000000005012337331332015751 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Sm.in0000644002504400250440000000431412337331332016517 0ustar00dewhurstdewhurst00000000000000 'Sm' : spsymb 'samarium' : spname -62.0000 : spzn 274089.5126 : spmass 0.254000E-06 2.8000 52.2193 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 3.00000 F 4 3 4 3.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.0883 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.5919 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8177 0 T elk-2.3.22/species/PaxHeaders.22528/Ar.in0000644002504400250440000000005012337331331015733 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Ar.in0000644002504400250440000000235412337331331016503 0ustar00dewhurstdewhurst00000000000000 'Ar' : spsymb 'argon' : spname -18.0000 : spzn 72820.74919 : spmass 0.471405E-06 2.0000 32.1724 400 : sprmin, rmt, sprmax, nrmt 7 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8916 0 T elk-2.3.22/species/PaxHeaders.22528/O.in0000644002504400250440000000005012337331332015570 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/O.in0000644002504400250440000000223012337331332016331 0ustar00dewhurstdewhurst00000000000000 'O' : spsymb 'oxygen' : spname -8.00000 : spzn 29165.12202 : spmass 0.707107E-06 1.8000 30.4661 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 2.00000 F 2 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8728 0 T elk-2.3.22/species/PaxHeaders.22528/Tm.in0000644002504400250440000000005012337331332015752 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Tm.in0000644002504400250440000000431412337331332016520 0ustar00dewhurstdewhurst00000000000000 'Tm' : spsymb 'thulium' : spname -69.0000 : spzn 307948.2261 : spmass 0.240772E-06 2.8000 52.6285 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 7.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1016 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.9638 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9340 0 T elk-2.3.22/species/PaxHeaders.22528/V.in0000644002504400250440000000005012337331332015577 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/V.in0000644002504400250440000000313612337331332016346 0ustar00dewhurstdewhurst00000000000000 'V' : spsymb 'vanadium' : spname -23.0000 : spzn 92860.67375 : spmass 0.417029E-06 2.4000 46.3855 500 : sprmin, rmt, sprmax, nrmt 9 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 3.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.5646 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6038 0 T elk-2.3.22/species/PaxHeaders.22528/Pa.in0000644002504400250440000000005012337331332015732 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Pa.in0000644002504400250440000000435212337331332016502 0ustar00dewhurstdewhurst00000000000000 'Pa' : spsymb 'protactinium' : spname -91.0000 : spzn 421152.6452 : spmass 0.209657E-06 3.0000 58.6108 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 2.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 6 2 2 1.000000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6682 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7444 0 T elk-2.3.22/species/PaxHeaders.22528/Ge.in0000644002504400250440000000005012337331332015725 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ge.in0000644002504400250440000000326212337331332016474 0ustar00dewhurstdewhurst00000000000000 'Ge' : spsymb 'germanium' : spname -32.0000 : spzn 132414.6195 : spmass 0.353553E-06 2.4000 49.1065 500 : sprmin, rmt, sprmax, nrmt 12 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 2.00000 F 4 1 1 1.000000 F 4 1 2 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.0759 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.4380 0 T elk-2.3.22/species/PaxHeaders.22528/Be.in0000644002504400250440000000005012337331331015717 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Be.in0000644002504400250440000000167212337331331016471 0ustar00dewhurstdewhurst00000000000000 'Be' : spsymb 'beryllium' : spname -4.00000 : spzn 16428.20279 : spmass 0.100000E-05 1.8000 40.4673 300 : sprmin, rmt, sprmax, nrmt 2 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 2 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F elk-2.3.22/species/PaxHeaders.22528/Rb.in0000644002504400250440000000005012337331332015735 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Rb.in0000644002504400250440000000307212337331332016503 0ustar00dewhurstdewhurst00000000000000 'Rb' : spsymb 'rubidium' : spname -37.0000 : spzn 155798.2684 : spmass 0.328798E-06 2.6000 66.2401 600 : sprmin, rmt, sprmax, nrmt 13 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 5 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.1744 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5784 0 T elk-2.3.22/species/PaxHeaders.22528/Er.in0000644002504400250440000000005012337331332015740 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Er.in0000644002504400250440000000431412337331332016506 0ustar00dewhurstdewhurst00000000000000 'Er' : spsymb 'erbium' : spname -68.0000 : spzn 304894.5051 : spmass 0.242536E-06 2.8000 51.3635 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 6.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1037 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.9077 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9177 0 T elk-2.3.22/species/PaxHeaders.22528/In.in0000644002504400250440000000005012337331332015740 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/In.in0000644002504400250440000000344212337331332016507 0ustar00dewhurstdewhurst00000000000000 'In' : spsymb 'indium' : spname -49.0000 : spzn 209300.4100 : spmass 0.285714E-06 2.6000 57.7696 600 : sprmin, rmt, sprmax, nrmt 16 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 5 1 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.7840 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6687 0 T elk-2.3.22/species/PaxHeaders.22528/La.in0000644002504400250440000000005012337331332015726 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/La.in0000644002504400250440000000356612337331332016504 0ustar00dewhurstdewhurst00000000000000 'La' : spsymb 'lanthanum' : spname -57.0000 : spzn 253209.2364 : spmass 0.264906E-06 2.8000 55.6305 700 : sprmin, rmt, sprmax, nrmt 19 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 1.000000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.4321 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7953 0 T elk-2.3.22/species/PaxHeaders.22528/Tl.in0000644002504400250440000000005012337331332015751 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Tl.in0000644002504400250440000000374612337331332016527 0ustar00dewhurstdewhurst00000000000000 'Tl' : spsymb 'thallium' : spname -81.0000 : spzn 372567.9640 : spmass 0.222222E-06 2.8000 52.0168 700 : sprmin, rmt, sprmax, nrmt 23 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.5798 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5217 0 T elk-2.3.22/species/PaxHeaders.22528/F.in0000644002504400250440000000005012337331332015557 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/F.in0000644002504400250440000000247612337331332016334 0ustar00dewhurstdewhurst00000000000000 'F' : spsymb 'fluorine' : spname -9.00000 : spzn 34631.97042 : spmass 0.666667E-06 2.0000 28.4379 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 2.00000 F 2 1 2 3.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.0894 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.4142 0 T elk-2.3.22/species/PaxHeaders.22528/Ni.in0000644002504400250440000000005012337331332015740 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ni.in0000644002504400250440000000317212337331332016507 0ustar00dewhurstdewhurst00000000000000 'Ni' : spsymb 'nickel' : spname -28.0000 : spzn 106991.5230 : spmass 0.377964E-06 2.4000 39.0101 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 4.00000 F 3 2 3 4.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.5905 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.3317 0 T elk-2.3.22/species/PaxHeaders.22528/Am.in0000644002504400250440000000005012337331331015726 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Am.in0000644002504400250440000000462012337331331016474 0ustar00dewhurstdewhurst00000000000000 'Am' : spsymb 'americium' : spname -95.0000 : spzn 442961.9018 : spmass 0.205196E-06 3.0000 51.9446 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 3.00000 F 5 3 4 4.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.0774 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8674 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7549 0 T elk-2.3.22/species/PaxHeaders.22528/Ho.in0000644002504400250440000000005012337331332015740 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ho.in0000644002504400250440000000431412337331332016506 0ustar00dewhurstdewhurst00000000000000 'Ho' : spsymb 'holmium' : spname -67.0000 : spzn 300649.5811 : spmass 0.244339E-06 2.8000 53.7512 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 5.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1044 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8527 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9014 0 T elk-2.3.22/species/PaxHeaders.22528/Gd.in0000644002504400250440000000005012337331332015724 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Gd.in0000644002504400250440000000435012337331332016472 0ustar00dewhurstdewhurst00000000000000 'Gd' : spsymb 'gadolinium' : spname -64.0000 : spzn 286649.2142 : spmass 0.250000E-06 2.8000 54.8286 700 : sprmin, rmt, sprmax, nrmt 21 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 3.00000 F 4 3 4 4.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 1.000000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.3108 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8262 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9546 0 T elk-2.3.22/species/PaxHeaders.22528/Rh.in0000644002504400250440000000005012337331332015743 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Rh.in0000644002504400250440000000365412337331332016517 0ustar00dewhurstdewhurst00000000000000 'Rh' : spsymb 'rhodium' : spname -45.0000 : spzn 187585.2510 : spmass 0.298142E-06 2.6000 45.1320 600 : sprmin, rmt, sprmax, nrmt 15 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 4.00000 F 5 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.0301 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8089 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2190 0 T elk-2.3.22/species/PaxHeaders.22528/Pm.in0000644002504400250440000000005012337331332015746 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Pm.in0000644002504400250440000000431412337331332016514 0ustar00dewhurstdewhurst00000000000000 'Pm' : spsymb 'promethium' : spname -61.0000 : spzn 264318.8303 : spmass 0.256074E-06 2.8000 54.6331 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 3.00000 F 4 3 4 2.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.0768 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.5401 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7991 0 T elk-2.3.22/species/PaxHeaders.22528/Y.in0000644002504400250440000000005012337331332015602 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Y.in0000644002504400250440000000335212337331332016351 0ustar00dewhurstdewhurst00000000000000 'Y' : spsymb 'yttrium' : spname -39.0000 : spzn 162065.4502 : spmass 0.320256E-06 2.6000 55.2463 600 : sprmin, rmt, sprmax, nrmt 14 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 1.000000 F 5 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7619 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.0082 0 T elk-2.3.22/species/PaxHeaders.22528/Si.in0000644002504400250440000000005012337331332015745 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Si.in0000644002504400250440000000210612337331332016510 0ustar00dewhurstdewhurst00000000000000 'Si' : spsymb 'silicon' : spname -14.0000 : spzn 51196.73454 : spmass 0.534522E-06 2.2000 47.8169 400 : sprmin, rmt, sprmax, nrmt 7 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 1.000000 F 3 1 2 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 2 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F elk-2.3.22/species/PaxHeaders.22528/Al.in0000644002504400250440000000005012337331331015725 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Al.in0000644002504400250440000000232012337331331016466 0ustar00dewhurstdewhurst00000000000000 'Al' : spsymb 'aluminium' : spname -13.0000 : spzn 49184.33492 : spmass 0.554700E-06 2.2000 55.3437 400 : sprmin, rmt, sprmax, nrmt 6 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 F 2 1 2 4.00000 F 3 0 1 2.00000 F 3 1 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.5562 0 T elk-2.3.22/species/PaxHeaders.22528/P.in0000644002504400250440000000005012337331332015571 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/P.in0000644002504400250440000000235412337331332016341 0ustar00dewhurstdewhurst00000000000000 'P' : spsymb 'phosphorus' : spname -15.0000 : spzn 56461.71226 : spmass 0.516398E-06 2.2000 42.8760 400 : sprmin, rmt, sprmax, nrmt 7 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 1.000000 F 3 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5151 0 T elk-2.3.22/species/PaxHeaders.22528/Ag.in0000644002504400250440000000005012337331331015720 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Ag.in0000644002504400250440000000365412337331331016474 0ustar00dewhurstdewhurst00000000000000 'Ag' : spsymb 'silver' : spname -47.0000 : spzn 196631.6997 : spmass 0.291730E-06 2.6000 57.5790 600 : sprmin, rmt, sprmax, nrmt 15 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.4920 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0961 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2735 0 T elk-2.3.22/species/PaxHeaders.22528/Bi.in0000644002504400250440000000005012337331331015723 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Bi.in0000644002504400250440000000400212337331331016463 0ustar00dewhurstdewhurst00000000000000 'Bi' : spsymb 'bismuth' : spname -83.0000 : spzn 380947.9282 : spmass 0.219529E-06 2.8000 47.4512 700 : sprmin, rmt, sprmax, nrmt 24 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 1.000000 F 6 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.9498 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5393 0 T elk-2.3.22/species/PaxHeaders.22528/Sr.in0000644002504400250440000000005012337331332015756 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Sr.in0000644002504400250440000000307212337331332016524 0ustar00dewhurstdewhurst00000000000000 'Sr' : spsymb 'strontium' : spname -38.0000 : spzn 159721.4890 : spmass 0.324443E-06 2.6000 52.2837 600 : sprmin, rmt, sprmax, nrmt 13 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 5 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.5031 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8259 0 T elk-2.3.22/species/PaxHeaders.22528/Th.in0000644002504400250440000000005012337331332015745 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Th.in0000644002504400250440000000434012337331332016512 0ustar00dewhurstdewhurst00000000000000 'Th' : spsymb 'thorium' : spname -90.0000 : spzn 422979.5805 : spmass 0.210819E-06 3.0000 50.6941 800 : sprmin, rmt, sprmax, nrmt 26 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 6 2 2 2.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.2122 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6772 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7795 0 T elk-2.3.22/species/PaxHeaders.22528/Sb.in0000644002504400250440000000005012337331332015736 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Sb.in0000644002504400250440000000347612337331332016514 0ustar00dewhurstdewhurst00000000000000 'Sb' : spsymb 'antimony' : spname -51.0000 : spzn 221954.9019 : spmass 0.280056E-06 2.6000 44.3358 600 : sprmin, rmt, sprmax, nrmt 17 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 5 1 1 1.000000 F 5 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.2137 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.4804 0 T elk-2.3.22/species/PaxHeaders.22528/Tb.in0000644002504400250440000000005012337331332015737 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Tb.in0000644002504400250440000000431412337331332016505 0ustar00dewhurstdewhurst00000000000000 'Tb' : spsymb 'terbium' : spname -65.0000 : spzn 289703.1722 : spmass 0.248069E-06 2.8000 51.1964 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 5.00000 F 4 3 4 4.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1036 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7464 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8687 0 T elk-2.3.22/species/PaxHeaders.22528/Fr.in0000644002504400250440000000005012337331332015741 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Fr.in0000644002504400250440000000430412337331332016506 0ustar00dewhurstdewhurst00000000000000 'Fr' : spsymb 'francium' : spname -87.0000 : spzn 406504.1321 : spmass 0.214423E-06 3.0000 66.1011 800 : sprmin, rmt, sprmax, nrmt 25 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0328 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.0471 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.4089 0 T elk-2.3.22/species/PaxHeaders.22528/Bk.in0000644002504400250440000000005012337331331015725 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Bk.in0000644002504400250440000000462012337331331016473 0ustar00dewhurstdewhurst00000000000000 'Bk' : spsymb 'berkelium' : spname -97.0000 : spzn 450253.4557 : spmass 0.203069E-06 3.0000 55.3463 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 5.00000 F 5 3 4 4.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1057 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.9965 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7758 0 T elk-2.3.22/species/PaxHeaders.22528/Se.in0000644002504400250440000000005012337331332015741 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Se.in0000644002504400250440000000326212337331332016510 0ustar00dewhurstdewhurst00000000000000 'Se' : spsymb 'selenium' : spname -34.0000 : spzn 143935.2748 : spmass 0.342997E-06 2.4000 37.1314 500 : sprmin, rmt, sprmax, nrmt 12 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.9444 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6402 0 T elk-2.3.22/species/PaxHeaders.22528/Zn.in0000644002504400250440000000005012337331332015761 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Zn.in0000644002504400250440000000317212337331332016530 0ustar00dewhurstdewhurst00000000000000 'Zn' : spsymb 'zinc' : spname -30.0000 : spzn 119233.3129 : spmass 0.365148E-06 2.4000 43.0821 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.0221 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.3778 0 T elk-2.3.22/species/PaxHeaders.22528/Ra.in0000644002504400250440000000005012337331332015734 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ra.in0000644002504400250440000000430412337331332016501 0ustar00dewhurstdewhurst00000000000000 'Ra' : spsymb 'radium' : spname -88.0000 : spzn 411972.7976 : spmass 0.213201E-06 3.0000 66.1593 800 : sprmin, rmt, sprmax, nrmt 25 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.4469 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.2846 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5588 0 T elk-2.3.22/species/PaxHeaders.22528/Na.in0000644002504400250440000000005012337331332015730 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Na.in0000644002504400250440000000253212337331332016476 0ustar00dewhurstdewhurst00000000000000 'Na' : spsymb 'sodium' : spname -11.0000 : spzn 41907.78700 : spmass 0.603023E-06 2.2000 61.1003 400 : sprmin, rmt, sprmax, nrmt 5 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 2.00000 F 2 1 2 4.00000 F 3 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0701 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.0570 0 T elk-2.3.22/species/PaxHeaders.22528/Cd.in0000644002504400250440000000005012337331331015717 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Cd.in0000644002504400250440000000340612337331331016466 0ustar00dewhurstdewhurst00000000000000 'Cd' : spsymb 'cadmium' : spname -48.0000 : spzn 204912.7175 : spmass 0.288675E-06 2.6000 41.8471 600 : sprmin, rmt, sprmax, nrmt 15 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.3934 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.4270 0 T elk-2.3.22/species/PaxHeaders.22528/B.in0000644002504400250440000000005012337331331015552 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/B.in0000644002504400250440000000172612337331331016324 0ustar00dewhurstdewhurst00000000000000 'B' : spsymb 'boron' : spname -5.00000 : spzn 19707.24741 : spmass 0.894427E-06 1.8000 45.4840 300 : sprmin, rmt, sprmax, nrmt 3 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 2 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F elk-2.3.22/species/PaxHeaders.22528/Mn.in0000644002504400250440000000005012337331332015744 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Mn.in0000644002504400250440000000344012337331332016511 0ustar00dewhurstdewhurst00000000000000 'Mn' : spsymb 'manganese' : spname -25.0000 : spzn 100145.9369 : spmass 0.400000E-06 2.4000 42.5036 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 3.00000 F 3 2 3 2.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.1372 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.9857 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2553 0 T elk-2.3.22/species/PaxHeaders.22528/Mg.in0000644002504400250440000000005012337331332015735 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Mg.in0000644002504400250440000000253212337331332016503 0ustar00dewhurstdewhurst00000000000000 'Mg' : spsymb 'magnesium' : spname -12.0000 : spzn 44305.30462 : spmass 0.577350E-06 2.2000 43.7580 400 : sprmin, rmt, sprmax, nrmt 5 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 2.00000 F 2 1 2 4.00000 F 3 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.9139 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7134 0 T elk-2.3.22/species/PaxHeaders.22528/Tc.in0000644002504400250440000000005012337331332015740 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Tc.in0000644002504400250440000000365412337331332016514 0ustar00dewhurstdewhurst00000000000000 'Tc' : spsymb 'technetium' : spname -43.0000 : spzn 178643.0715 : spmass 0.304997E-06 2.6000 48.7280 600 : sprmin, rmt, sprmax, nrmt 15 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 2.00000 F 5 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.5825 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.5257 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1656 0 T elk-2.3.22/species/PaxHeaders.22528/Mo.in0000644002504400250440000000005012337331332015745 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Mo.in0000644002504400250440000000365412337331332016521 0ustar00dewhurstdewhurst00000000000000 'Mo' : spsymb 'molybdenum' : spname -42.0000 : spzn 174887.9212 : spmass 0.308607E-06 2.6000 46.1206 600 : sprmin, rmt, sprmax, nrmt 15 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 3.00000 F 4 2 3 2.00000 F 5 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.3643 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.3863 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1404 0 T elk-2.3.22/species/PaxHeaders.22528/Pb.in0000644002504400250440000000005012337331332015733 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Pb.in0000644002504400250440000000400212337331332016473 0ustar00dewhurstdewhurst00000000000000 'Pb' : spsymb 'lead' : spname -82.0000 : spzn 377702.4940 : spmass 0.220863E-06 2.8000 53.2955 700 : sprmin, rmt, sprmax, nrmt 24 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 1.000000 F 6 1 2 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7322 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.4439 0 T elk-2.3.22/species/PaxHeaders.22528/Dy.in0000644002504400250440000000005012337331332015746 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Dy.in0000644002504400250440000000431412337331332016514 0ustar00dewhurstdewhurst00000000000000 'Dy' : spsymb 'dysprosium' : spname -66.0000 : spzn 296219.3788 : spmass 0.246183E-06 2.8000 60.3084 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 4.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1037 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7987 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8849 0 T elk-2.3.22/species/PaxHeaders.22528/Md.in0000644002504400250440000000005012337331332015732 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Md.in0000644002504400250440000000462012337331332016500 0ustar00dewhurstdewhurst00000000000000 'Md' : spsymb 'mendelevium' : spname -101.000 : spzn 470305.2291 : spmass 0.199007E-06 3.0000 49.0271 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 6.00000 F 5 3 4 7.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1623 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.2742 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8134 0 T elk-2.3.22/species/PaxHeaders.22528/At.in0000644002504400250440000000005012337331331015735 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/At.in0000644002504400250440000000400212337331331016475 0ustar00dewhurstdewhurst00000000000000 'At' : spsymb 'astatine' : spname -85.0000 : spzn 382806.5818 : spmass 0.216930E-06 2.8000 39.4078 700 : sprmin, rmt, sprmax, nrmt 24 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 3.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.3831 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7106 0 T elk-2.3.22/species/PaxHeaders.22528/Ce.in0000644002504400250440000000005012337331331015720 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Ce.in0000644002504400250440000000401212337331331016461 0ustar00dewhurstdewhurst00000000000000 'Ce' : spsymb 'cerium' : spname -58.0000 : spzn 255415.8429 : spmass 0.262613E-06 2.8000 77.0262 700 : sprmin, rmt, sprmax, nrmt 19 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 2.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.3797 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7361 0 T elk-2.3.22/species/PaxHeaders.22528/Rn.in0000644002504400250440000000005012337331332015751 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Rn.in0000644002504400250440000000400212337331332016511 0ustar00dewhurstdewhurst00000000000000 'Rn' : spsymb 'radon' : spname -86.0000 : spzn 404681.2436 : spmass 0.215666E-06 2.6000 40.7638 700 : sprmin, rmt, sprmax, nrmt 24 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6273 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8085 0 T elk-2.3.22/species/PaxHeaders.22528/Eu.in0000644002504400250440000000005012337331332015743 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Eu.in0000644002504400250440000000431412337331332016511 0ustar00dewhurstdewhurst00000000000000 'Eu' : spsymb 'europium' : spname -63.0000 : spzn 277013.4257 : spmass 0.251976E-06 2.8000 56.0503 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 3.00000 F 4 3 4 4.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.0972 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6436 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8355 0 T elk-2.3.22/species/PaxHeaders.22528/Ru.in0000644002504400250440000000005012337331332015760 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ru.in0000644002504400250440000000365412337331332016534 0ustar00dewhurstdewhurst00000000000000 'Ru' : spsymb 'ruthenium' : spname -44.0000 : spzn 184239.3392 : spmass 0.301511E-06 2.6000 48.8112 600 : sprmin, rmt, sprmax, nrmt 15 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 3.00000 F 5 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.8048 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6670 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1922 0 T elk-2.3.22/species/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331332016145 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/elk.in0000644002504400250440000006662312337331332016726 0ustar00dewhurstdewhurst00000000000000 ! This is a special input file for Elk which generates the default species ! files. No task is required: the code generates the file as soon as it ! encounters a 'species' block. Note the masses are the 'standard atomic weight' ! and are in relative atomic mass units (i.e. multiples of 1/12 times the mass ! of carbon-12); taken from J. S. Coursey, D. J. Schwab, and R. A. Dragoset ! (2005), Atomic Weights and Isotopic Compositions (version 2.4.1). species 1 : atomic number 'H' 'hydrogen' : symbol, name 1.00794 : standard atomic weight (units of 1/12 carbon-12) 1.4 : muffin-tin radius 1 : number of occupied states 1 0 1 1 : n, l, k, occupancy for each state species 2 'He' 'helium' 4.002602 1.4 1 1 0 1 2 species 3 'Li' 'lithium' 6.941 1.8 2 1 0 1 2 2 0 1 1 species 4 'Be' 'beryllium' 9.012182 1.8 2 1 0 1 2 2 0 1 2 species 5 'B' 'boron' 10.811 1.8 3 1 0 1 2 2 0 1 2 2 1 1 1 species 6 'C' 'carbon' 12.0107 1.8 4 1 0 1 2 2 0 1 2 2 1 1 1 2 1 2 1 species 7 'N' 'nitrogen' 14.0067 1.8 4 1 0 1 2 2 0 1 2 2 1 1 1 2 1 2 2 species 8 'O' 'oxygen' 15.9994 1.8 4 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 2 species 9 'F' 'fluorine' 18.9984032 2.0 4 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 3 species 10 'Ne' 'neon' 20.1797 1.6 4 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 species 11 'Na' 'sodium' 22.989770 2.2 5 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 1 species 12 'Mg' 'magnesium' 24.3050 2.2 5 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 species 13 'Al' 'aluminium' 26.981538 2.2 6 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 1 species 14 'Si' 'silicon' 28.0855 2.2 7 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 1 3 1 2 1 species 15 'P' 'phosphorus' 30.973761 2.2 7 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 1 3 1 2 2 species 16 'S' 'sulphur' 32.065 2.2 7 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 2 species 17 'Cl' 'chlorine' 35.453 2.2 7 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 3 species 18 'Ar' 'argon' 39.948 2.0 7 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 species 19 'K' 'potassium' 39.0983 2.4 8 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 4 0 1 1 species 20 'Ca' 'calcium' 40.078 2.4 8 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 4 0 1 2 species 21 'Sc' 'scandium' 44.955910 2.4 9 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 1 4 0 1 2 species 22 'Ti' 'titanium' 47.867 2.4 9 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 2 4 0 1 2 species 23 'V' 'vanadium' 50.9415 2.4 9 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 3 4 0 1 2 species 24 'Cr' 'chromium' 51.9961 2.4 10 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 3 3 2 3 2 4 0 1 1 species 25 'Mn' 'manganese' 54.938049 2.4 10 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 3 3 2 3 2 4 0 1 2 species 26 'Fe' 'iron' 55.845 2.4 10 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 2 4 0 1 2 species 27 'Co' 'cobalt' 58.933200 2.4 10 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 3 4 0 1 2 species 28 'Ni' 'nickel' 58.6934 2.4 10 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 4 4 0 1 2 species 29 'Cu' 'copper' 63.546 2.4 10 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 1 species 30 'Zn' 'zinc' 65.409 2.4 10 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 species 31 'Ga' 'gallium' 69.723 2.4 11 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 1 species 32 'Ge' 'germanium' 72.64 2.4 12 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 1 4 1 2 1 species 33 'As' 'arsenic' 74.92160 2.4 12 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 1 4 1 2 2 species 34 'Se' 'selenium' 78.96 2.4 12 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 2 species 35 'Br' 'bromine' 79.904 2.4 12 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 3 species 36 'Kr' 'krypton' 83.798 2.2 12 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 species 37 'Rb' 'rubidium' 85.4678 2.6 13 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 5 0 1 1 species 38 'Sr' 'strontium' 87.62 2.6 13 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 5 0 1 2 species 39 'Y' 'yttrium' 88.90585 2.6 14 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 1 5 0 1 2 species 40 'Zr' 'zirconium' 91.224 2.6 14 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 2 5 0 1 2 species 41 'Nb' 'niobium' 92.90638 2.6 15 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 3 4 2 3 1 5 0 1 1 species 42 'Mo' 'molybdenum' 95.94 2.6 15 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 3 4 2 3 2 5 0 1 1 species 43 'Tc' 'technetium' 98.0 2.6 15 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 2 5 0 1 1 species 44 'Ru' 'ruthenium' 101.07 2.6 15 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 3 5 0 1 1 species 45 'Rh' 'rhodium' 102.90550 2.6 15 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 4 5 0 1 1 species 46 'Pd' 'palladium' 106.42 2.6 14 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 species 47 'Ag' 'silver' 107.8682 2.6 15 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 1 species 48 'Cd' 'cadmium' 112.411 2.6 15 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 species 49 'In' 'indium' 114.818 2.6 16 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 1 species 50 'Sn' 'tin' 118.710 2.6 17 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 1 5 1 2 1 species 51 'Sb' 'antimony' 121.760 2.6 17 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 1 5 1 2 2 species 52 'Te' 'tellurium' 127.60 2.6 17 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 2 5 1 2 2 species 53 'I' 'iodine' 126.90447 2.6 17 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 2 5 1 2 3 species 54 'Xe' 'xenon' 131.293 2.4 17 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 2 5 1 2 4 species 55 'Cs' 'caesium' 132.90545 2.8 18 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 1 species 56 'Ba' 'barium' 137.327 2.8 18 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 57 'La' 'lanthanum' 138.9055 2.8 19 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 1 6 0 1 2 species 58 'Ce' 'cerium' 140.116 2.8 19 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 2 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 59 'Pr' 'praseodymium' 140.90765 2.8 19 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 3 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 60 'Nd' 'neodymium' 144.24 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 3 4 3 4 1 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 61 'Pm' 'promethium' 145.0 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 3 4 3 4 2 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 62 'Sm' 'samarium' 150.36 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 3 4 3 4 3 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 63 'Eu' 'europium' 151.964 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 3 4 3 4 4 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 64 'Gd' 'gadolinium' 157.25 2.8 21 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 3 4 3 4 4 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 1 6 0 1 2 species 65 'Tb' 'terbium' 158.92534 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 5 4 3 4 4 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 66 'Dy' 'dysprosium' 162.500 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 4 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 67 'Ho' 'holmium' 164.93032 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 5 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 68 'Er' 'erbium' 167.259 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 6 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 69 'Tm' 'thulium' 168.93421 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 7 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 70 'Yb' 'ytterbium' 173.04 2.8 20 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 6 0 1 2 species 71 'Lu' 'lutetium' 174.967 2.8 21 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 1 6 0 1 2 species 72 'Hf' 'hafnium' 178.49 2.8 21 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 2 6 0 1 2 species 73 'Ta' 'tantalum' 180.9479 2.8 21 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 3 6 0 1 2 species 74 'W' 'tungsten' 183.84 2.8 22 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 3 5 2 3 1 6 0 1 2 species 75 'Re' 'rhenium' 186.207 2.8 22 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 3 5 2 3 2 6 0 1 2 species 76 'Os' 'osmium' 190.23 2.8 22 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 2 6 0 1 2 species 77 'Ir' 'iridium' 192.217 2.8 22 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 3 6 0 1 2 species 78 'Pt' 'platinum' 195.078 2.8 22 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 5 6 0 1 1 species 79 'Au' 'gold' 196.96655 2.8 22 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 1 species 80 'Hg' 'mercury' 200.59 2.8 22 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 species 81 'Tl' 'thallium' 204.3833 2.8 23 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 1 species 82 'Pb' 'lead' 207.2 2.8 24 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 1 6 1 2 1 species 83 'Bi' 'bismuth' 208.98038 2.8 24 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 1 6 1 2 2 species 84 'Po' 'polonium' 209.0 2.8 24 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 2 6 1 2 2 species 85 'At' 'astatine' 210.0 2.8 24 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 2 6 1 2 3 species 86 'Rn' 'radon' 222.0 2.6 24 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 2 6 1 2 4 species 87 'Fr' 'francium' 223.0 3.0 25 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 1 species 88 'Ra' 'radium' 226.0 3.0 25 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 89 'Ac' 'actinium' 227.0 3.0 26 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 1 7 0 1 2 species 90 'Th' 'thorium' 232.0381 3.0 26 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 2 7 0 1 2 species 91 'Pa' 'protactinium' 231.03588 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 2 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 1 7 0 1 2 species 92 'U' 'uranium' 238.02891 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 3 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 1 7 0 1 2 species 93 'Np' 'neptunium' 237.0 3.0 28 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 3 5 3 4 1 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 1 7 0 1 2 species 94 'Pu' 'plutonium' 244.0 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 3 5 3 4 3 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 95 'Am' 'americium' 243.0 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 3 5 3 4 4 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 96 'Cm' 'curium' 247.0 3.0 28 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 3 5 3 4 4 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 1 7 0 1 2 species 97 'Bk' 'berkelium' 247.0 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 5 5 3 4 4 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 98 'Cf' 'californium' 251.0 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 6 5 3 4 4 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 99 'Es' 'einsteinium' 252.0 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 6 5 3 4 5 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 100 'Fm' 'fermium' 257.0 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 6 5 3 4 6 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 101 'Md' 'mendelevium' 258.0 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 6 5 3 4 7 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 102 'No' 'nobelium' 259.0 3.0 27 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 6 5 3 4 8 6 0 1 2 6 1 1 2 6 1 2 4 7 0 1 2 species 103 'Lr' 'lawrencium' 262.0 3.0 28 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 6 5 3 4 8 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 1 7 0 1 2 species 104 'Rf' 'rutherfordium' 261.0 3.0 28 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 6 5 3 4 8 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 2 7 0 1 2 elk-2.3.22/species/PaxHeaders.22528/Cf.in0000644002504400250440000000005012337331331015721 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Cf.in0000644002504400250440000000462012337331331016467 0ustar00dewhurstdewhurst00000000000000 'Cf' : spsymb 'californium' : spname -98.0000 : spzn 457545.0097 : spmass 0.202031E-06 3.0000 52.0569 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 6.00000 F 5 3 4 4.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1183 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0620 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7850 0 T elk-2.3.22/species/PaxHeaders.22528/Zr.in0000644002504400250440000000005012337331332015765 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Zr.in0000644002504400250440000000335212337331332016534 0ustar00dewhurstdewhurst00000000000000 'Zr' : spsymb 'zirconium' : spname -40.0000 : spzn 166291.1791 : spmass 0.316228E-06 2.6000 45.9575 600 : sprmin, rmt, sprmax, nrmt 14 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 2.00000 F 5 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0002 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.1708 0 T elk-2.3.22/species/PaxHeaders.22528/Kr.in0000644002504400250440000000005012337331332015746 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Kr.in0000644002504400250440000000326212337331332016515 0ustar00dewhurstdewhurst00000000000000 'Kr' : spsymb 'krypton' : spname -36.0000 : spzn 152754.4092 : spmass 0.333333E-06 2.2000 31.7038 500 : sprmin, rmt, sprmax, nrmt 12 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.9818 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8532 0 T elk-2.3.22/species/PaxHeaders.22528/Cm.in0000644002504400250440000000005012337331331015730 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Cm.in0000644002504400250440000000465412337331331016505 0ustar00dewhurstdewhurst00000000000000 'Cm' : spsymb 'curium' : spname -96.0000 : spzn 450253.4557 : spmass 0.204124E-06 3.0000 55.3054 800 : sprmin, rmt, sprmax, nrmt 28 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 3.00000 F 5 3 4 4.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 6 2 2 1.000000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2184 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0481 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.8489 0 T elk-2.3.22/species/PaxHeaders.22528/Cl.in0000644002504400250440000000005012337331331015727 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Cl.in0000644002504400250440000000235412337331331016477 0ustar00dewhurstdewhurst00000000000000 'Cl' : spsymb 'chlorine' : spname -17.0000 : spzn 64626.86545 : spmass 0.485071E-06 2.2000 31.8449 400 : sprmin, rmt, sprmax, nrmt 7 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 3.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7601 0 T elk-2.3.22/species/PaxHeaders.22528/Ca.in0000644002504400250440000000005012337331331015714 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Ca.in0000644002504400250440000000265612337331331016471 0ustar00dewhurstdewhurst00000000000000 'Ca' : spsymb 'calcium' : spname -20.0000 : spzn 73057.72469 : spmass 0.447214E-06 2.4000 50.3684 500 : sprmin, rmt, sprmax, nrmt 8 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7208 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.0235 0 T elk-2.3.22/species/PaxHeaders.22528/Nb.in0000644002504400250440000000005012337331332015731 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Nb.in0000644002504400250440000000365412337331332016505 0ustar00dewhurstdewhurst00000000000000 'Nb' : spsymb 'niobium' : spname -41.0000 : spzn 169357.9703 : spmass 0.312348E-06 2.6000 48.5558 600 : sprmin, rmt, sprmax, nrmt 15 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 3.00000 F 4 2 3 1.000000 F 5 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.1446 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.2440 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1141 0 T elk-2.3.22/species/PaxHeaders.22528/Li.in0000644002504400250440000000005012337331332015736 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Li.in0000644002504400250440000000214012337331332016477 0ustar00dewhurstdewhurst00000000000000 'Li' : spsymb 'lithium' : spname -3.00000 : spzn 12652.66897 : spmass 0.115470E-05 1.8000 57.7730 300 : sprmin, rmt, sprmax, nrmt 2 : spnst 1 0 1 2.00000 F : spn, spl, spk, spocc, spcore 2 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8784 0 T elk-2.3.22/species/PaxHeaders.22528/Pr.in0000644002504400250440000000005012337331332015753 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Pr.in0000644002504400250440000000401212337331332016514 0ustar00dewhurstdewhurst00000000000000 'Pr' : spsymb 'praseodymium' : spname -59.0000 : spzn 256858.9326 : spmass 0.260378E-06 2.8000 55.7748 700 : sprmin, rmt, sprmax, nrmt 19 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 3.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.4342 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7585 0 T elk-2.3.22/species/PaxHeaders.22528/I.in0000644002504400250440000000005012337331332015562 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/I.in0000644002504400250440000000347612337331332016340 0ustar00dewhurstdewhurst00000000000000 'I' : spsymb 'iodine' : spname -53.0000 : spzn 231332.6970 : spmass 0.274721E-06 2.6000 37.8497 600 : sprmin, rmt, sprmax, nrmt 17 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 F 4 2 3 6.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 3.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.8184 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6456 0 T elk-2.3.22/species/PaxHeaders.22528/Hf.in0000644002504400250440000000005012337331332015727 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Hf.in0000644002504400250440000000435012337331332016475 0ustar00dewhurstdewhurst00000000000000 'Hf' : spsymb 'hafnium' : spname -72.0000 : spzn 325367.3656 : spmass 0.235702E-06 2.8000 49.2272 700 : sprmin, rmt, sprmax, nrmt 21 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 2.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5852 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.4529 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.2221 0 T elk-2.3.22/species/PaxHeaders.22528/Au.in0000644002504400250440000000005012337331331015736 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Au.in0000644002504400250440000000440412337331331016504 0ustar00dewhurstdewhurst00000000000000 'Au' : spsymb 'gold' : spname -79.0000 : spzn 359048.0559 : spmass 0.225018E-06 2.8000 41.1015 700 : sprmin, rmt, sprmax, nrmt 22 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 T 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.9275 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.0422 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2406 0 T elk-2.3.22/species/PaxHeaders.22528/Po.in0000644002504400250440000000005012337331332015750 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Po.in0000644002504400250440000000400212337331332016510 0ustar00dewhurstdewhurst00000000000000 'Po' : spsymb 'polonium' : spname -84.0000 : spzn 380983.6933 : spmass 0.218218E-06 2.8000 44.2691 700 : sprmin, rmt, sprmax, nrmt 24 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 F 5 2 3 6.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.1481 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6144 0 T elk-2.3.22/species/PaxHeaders.22528/Br.in0000644002504400250440000000005012337331331015734 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/species/Br.in0000644002504400250440000000326212337331331016503 0ustar00dewhurstdewhurst00000000000000 'Br' : spsymb 'bromine' : spname -35.0000 : spzn 145656.0815 : spmass 0.338062E-06 2.4000 36.0481 500 : sprmin, rmt, sprmax, nrmt 12 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 3.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.4430 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7453 0 T elk-2.3.22/species/PaxHeaders.22528/Ne.in0000644002504400250440000000005012337331332015734 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ne.in0000644002504400250440000000247612337331332016511 0ustar00dewhurstdewhurst00000000000000 'Ne' : spsymb 'neon' : spname -10.00000 : spzn 36785.34276 : spmass 0.632456E-06 1.6000 24.5143 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 2.00000 F 2 1 2 4.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 4 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.3272 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.4961 0 T elk-2.3.22/species/PaxHeaders.22528/Cu.in0000644002504400250440000000005012337331332015741 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Cu.in0000644002504400250440000000317212337331332016510 0ustar00dewhurstdewhurst00000000000000 'Cu' : spsymb 'copper' : spname -29.0000 : spzn 115837.2717 : spmass 0.371391E-06 2.4000 42.9740 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 1.000000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.6152 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.1918 0 T elk-2.3.22/species/PaxHeaders.22528/He.in0000644002504400250440000000005012337331332015726 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/He.in0000644002504400250440000000210412337331332016467 0ustar00dewhurstdewhurst00000000000000 'He' : spsymb 'helium' : spname -2.00000 : spzn 7296.297095 : spmass 0.141421E-05 1.4000 24.1776 200 : sprmin, rmt, sprmax, nrmt 1 : spnst 1 0 1 2.00000 F : spn, spl, spk, spocc, spcore 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5703 0 T elk-2.3.22/species/PaxHeaders.22528/Ti.in0000644002504400250440000000005012337331332015746 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Ti.in0000644002504400250440000000313612337331332016515 0ustar00dewhurstdewhurst00000000000000 'Ti' : spsymb 'titanium' : spname -22.0000 : spzn 87256.20310 : spmass 0.426401E-06 2.4000 46.2267 500 : sprmin, rmt, sprmax, nrmt 9 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 2.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.2872 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.4164 0 T elk-2.3.22/species/PaxHeaders.22528/Pu.in0000644002504400250440000000005012337331332015756 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Pu.in0000644002504400250440000000462012337331332016524 0ustar00dewhurstdewhurst00000000000000 'Pu' : spsymb 'plutonium' : spname -94.0000 : spzn 444784.7903 : spmass 0.206284E-06 3.0000 58.7501 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 3.00000 F 5 3 4 3.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.0579 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7999 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7412 0 T elk-2.3.22/species/PaxHeaders.22528/Lu.in0000644002504400250440000000005012337331332015752 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Lu.in0000644002504400250440000000435012337331332016520 0ustar00dewhurstdewhurst00000000000000 'Lu' : spsymb 'lutetium' : spname -71.0000 : spzn 318945.3295 : spmass 0.237356E-06 2.8000 59.2531 700 : sprmin, rmt, sprmax, nrmt 21 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 F 4 3 4 8.00000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 5 2 2 1.000000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.3291 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.2383 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.0908 0 T elk-2.3.22/species/PaxHeaders.22528/Nd.in0000644002504400250440000000005012337331332015733 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/Nd.in0000644002504400250440000000431412337331332016501 0ustar00dewhurstdewhurst00000000000000 'Nd' : spsymb 'neodymium' : spname -60.0000 : spzn 262933.4350 : spmass 0.258199E-06 2.8000 53.3159 700 : sprmin, rmt, sprmax, nrmt 20 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 3.00000 F 4 3 4 1.000000 F 5 0 1 2.00000 F 5 1 1 2.00000 F 5 1 2 4.00000 F 6 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.0620 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.4878 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7795 0 T elk-2.3.22/species/PaxHeaders.22528/U.in0000644002504400250440000000005012337331332015576 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/species/U.in0000644002504400250440000000435212337331332016346 0ustar00dewhurstdewhurst00000000000000 'U' : spsymb 'uranium' : spname -92.0000 : spzn 433900.1591 : spmass 0.208514E-06 3.0000 56.2869 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 4.00000 T 4 2 2 4.00000 T 4 2 3 6.00000 T 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 3.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 6 2 2 1.000000 F 7 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7461 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7688 0 T elk-2.3.22/PaxHeaders.22528/release_notes.txt0000644002504400250440000000005012337331332017000 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/release_notes.txt0000644002504400250440000006331312337331332017552 0ustar00dewhurstdewhurst00000000000000elk-2.3.22 -Lars Nordström, Francesco Cricchio and JKD added fixed tensor moment (FTM) calculations (experimental) -LN made changes to the mixer routine which makes restarts smoother -the Hamiltonian is now made real for systems with inversion symmetry; this was removed in the previous release because of a bug; the FV step is now up to four times faster -fixed problem with symmetry breaking of tetragonal systems during lattice optimisation pointed out by various users -further improved and stabilised lattice optimisation -fixed a long-standing bug related to electron-phonon coupling pointed out by Matthieu Verstraete and Ryotaro Arita -fixed a problem with electron-phonon coupling introduced in a previous version, discovered by user 'wuhuagumu' and Heung-Sik Kim -TDDFT reponse code for both charge and magnetism has been made faster and more memory efficient -creating a STOP file in the running directory now cleanly stops a structural optimisation run; as requested by James Mudd -problem with nested OpenMP has now been fixed -more OpenMP parallel loops have been added -extended the use of BLAS throughout the code -fixed bug which affected the running of task=120 -removed the 'frozencr' option for the moment because the core energy was incorrectly calculated; this will be restored in a later release -various optimisations and minor bug fixes elk-2.3.16 -DFT+U now works with multiple entries per atom; every mention of LDA+U has now changed to DFT+U to reflect the generality of the method, and to give it an air of respectibility; for example, the block 'lda+u' is now 'dft+u'; old input files will still work fine -greatly improved the magnetic anisotropy energy (MAE) calculations, thanks to suggestions by various users; the crystal is now rotated instead of the magnetisation direction -fractional atomic species can now be generated on the fly using the 'fspecies' block; see the example 'fractional-species'; note that the atomic mass is only an estimate in these species files; this is useful for the virtual crystal approximation (VCA) -spin-orbit coupling can now be used with strictly collinear calculations by using 'cmagz=.true.'; this will speed up the calculation considerably; use only when the system is genuinely collinear -unstable non-collinear GGA calculations can now be stabilised by setting 'ncgga=.true.' -improved the speed and stability of the lattice vector optimisation; thanks to forum discussions regarding BaTiO3 -added the lattice optimisation of BaTiO3 to the examples directory; thanks to David Tompsett -geometry optimisation should now work fine with MPI -added highly converged osmium example 'Os-convergence' thanks to a lengthy discussion on the forum started by Marcin Dulak; also increased the value of 'lmaxmat' for the 'highq' option thanks to Marcin's careful testing -Important: greatly improved the code setup and compilation thanks to suggestions by Marcin Dulak; all compiler options are now in the file 'elk/make.inc'; the Makefile in 'elk/src' no longer requires modification -new variable 'rotavec' available in elk.in; this is a rotation specified in axis-angle convention which allows the rotation of the crystal axes -thanks go to Rich Martin and collaborator Wen for useful testing and suggestions -improved the DFPT phonon calculations and added the example 'Nb-phonon-DFPT' -decreased the chance of accidentally triggering the convergence indicator in the self-consistent loop thanks to a suggestion from Markus Meinert -fixed problem with the routine 'nonlinopt', pointed out by user Sabrina and Koichi Kitahara -improved the OpenMP efficiency in parts by using '$OMP ATOMIC' instead of '$OMP CRITICAL' -changed the names of various internal subroutines; for example 'seceqnfv' is now 'eveqnfv' -thanks go to Igor Mazin, Konrad Bussmann and James Glasbrenner for some very useful improvments -fixed problem with species generation and MPI pointed out by Marcin Dulak -fixed problem with use of Fortran 'APPEND' flag thanks to user Alaska -updated the fundamental constants and conversion factors to CODATA 2008 recommended values -Important: updated code for compatibility with Libxc version 2.2.0; see the manual and note the change in compilation instructions -fixed problem with the routine 'energyfdu' which affected DFT+U calculations with 'inpdftu=4' (input of Yukawa screening length) -Important: temporarily switched of the conversion of the Hamiltonian to a real symmetric problem because of possible bug; the only effect of this is that the code is slower for systems with inversion symmetry; this will be fixed in the next release -minor bug fixes and optimisations elk-2.2.10 -fixed problem reported by Sonu Sharma and Michael Fechner with calculation of expectation values L, S and J -slightly improved the magnetic anisotropy energy (MAE) calculation -added new variable 'socscf' which scales the spin-orbit interaction term in the Hamiltonian; this allows calculation by interpolation of the MAE for cases where the MAE is small -added new variables to VARIABLES.OUT elk-2.2.9 -fixed problem with fixed spin moment (FSM) calculations pointed out by Jagdish Kumar -added new output file VARIABLES.OUT; this is for developers wanting to interface their codes to Elk; it contains most of the useful variables required for reading the Elk binary files; if you would like a variable added then just send me a mail; enabled when 'wrtvars' is set to .true. -minor cosmetic changes elk-2.2.8 -Important: fixed serious bug discovered by Jan Balluff and Markus Meinert which produced erroneous magnetic moments with GGA; this only affects version 2.2.5; sorry about that -even more substantial speed-ups for most parts of the code -fixed MPI problem with the magnetic anisotropy energy (MAE) routine reported by Konrad Bussmann and José A. Flores-Livas -minor bug fixes and improvements elk-2.2.5 -dramatic speed-up for most parts of the code thanks to some (fairly obvious) optimisations -greatly improved lattice vector optimisation -automatic determination of the magnetic anisotropy energy (MAE) with 'task=28' (experimental); see the example 'FeCo-MAE' -the variable 'nempty' is now a real number; see manual entry -magnitude of total magnetisation vector written to MOMENTM.OUT -improved the species files -made the linearisation energy search more reliable -reduced the annoying 'linearisation energy not found' warning elk-2.2.1 -added full structural optimisation; setting 'latvopt=1' performs unconstrained optimisation of the lattice vectors; 'latvopt=2' performs iso-volumetric optimisation; see the example 'MgB2-lattice-opt' -minor bug fixes and optimisations -all tests should now report 'Passed' elk-2.1.25 -fixed several problems with the previous (beta) release; thanks to Markus Meinert for the exhaustive checking -magnetic hyperfine fields are now correctly calculated thanks to MM -added missing items to the manual -added the example 'Si-phonon-DFPT' -thanks to Kari Ruotsalainen, Aleksay Golovchan and Vladimir Nazarov for pointing out bugs in 2.1.22 - now fixed -added estimation of direct gap to INFO.OUT; thanks to user Sean for the idea -this is the version that will be used for the Elk Turorial -see you in Lausanne! elk-2.1.22 (beta) -Important: this is a beta version and should not be used for production work; a production release will be made in a few weeks -Important: this version is not backwards compatible; calculations will have to be converged from scratch -density functional perturbation theory (DFPT) phonons now available; only for spin-unpolarised calculations at the moment; spin-polarisation will be added for the next release; use with task=205; still experimental and generates incorrect results for certain symmetries - we're still working on this; see the example 'Al-phonon-DFPT' -full frequency-dependent magnetic response function now available; works with non-collinear magnetism, etc.; use task=330; see example 'Ni-magnetic-response' -iterative diagonalisation greatly improved; now uses the method of P. Blaha, et al., J. Comp. Phys. 229, p453 (2010) -upgraded code to handle libxc version 2 -hybrid functionals should now work with libxc (experimental) -upgraded LAPACK to version 3.4.2 -block name dos changed to wplot; changed variable 'nwdos' to 'nwplot' -variable 'gmaxrpa' changed to 'gmaxrf'; this is the response function G-vector cut-off -BSE and TDDFT now faster, more accurate and memory efficient; thanks to M. Meinert for discussions -task 188 changed to 320 -reintroduced the variables 'lmaxinr' and 'fracinr'; this improves stability -lots of optimisations -added more MPI parallelism -various minor bug fixes -conduction state local-orbitals can now be switched on; use 'lorbcnd=.true.'; this can improve both ground-state and response function calculations; this is switched on automatically when 'highq=.true.' -most species files have been changed; mostly larger muffin-tin radii -Important: Markus Meinert suggested a change to 'nempty'; this variable now represents the number of states per atom and spin; this scales automatically as the number of atoms is increased -default 'nempty' is now 4 -M. Meinert changed the default Broyden parameters after extensive testing -LN fixed bug in XCrysDen Fermi surface plotting -LN also reduced the number of states which contribution to the Fermi surface plot to the minimum -supercell phonon calculations can now be restarted with 'task=202' -Frank Wagner discovered a bug which affects certain types of symmetries in rare instances; this has now been fixed -Important: default smearing function is now Fermi-Dirac (stype=3) -entropy contribution now added to the total energy -default smearing width reduced to 0.001 Ha, corresponding to room temperature -M. Meinert added a blocks-to-columns script; this is in the 'utilities' directory -Oscar Grånäs added to list of main authors elk-1.4.22 -Important:fixed bug in BSE calculations owing to incorrect rotation of dielectric function matrix elements; thanks to Arkardy Davydov for pointing this out -BSE is now three separate tasks: 185 writes the BSE Hamiltonian to file, 186 diagonalises the Hamiltonian and 187 produces the BSE dielectric function; thanks to Markus Meinert for suggesting this -adiabatic local density approximation (ALDA) for linear-response TDDFT now available; see example 'diamond-TDDFT-ALDA' -added Markus' suggestion that the Tran-Blaha constant can now be read in with the variable 'c_tb09' -added new variable 'highq'; set this to .true. and the most important parameters are set for a high-quality, well-converged calculation; see the settings in the file 'readinput.f90'; thanks to Igor Mazin for all the testing -removed the variables 'lmaxinr' and 'fracinr' as they were unnecessary -simplified TDDFT routines -Important: the variable 'radkpt' has been redefined and should be made larger by 2π ; (sorry about this, the original scale for this variable was correct!) -fixed problem with MPI that caused some LDA+U runs to crash; thanks to Alaska Subedi for pointing this out -added documentation -several minor bug fixes and optimisations elk-1.4.18 -Important:fixed severe bug affecting spin-unpolarised native GGA functionals, thanks to Jiji Pulikkotil for pointing out a problem with Mg3Sb2 which led to its discovery; this now makes structural optimisation truly variational for PBE -Important:fixed severe bug affecting spin-polarised 'libxc' GGA functionals -thanks to Miguel Marques and Silvana Botti for the week-long collaboration at Université Lyon where, amongst other things, we rewrote the meta-GGA interface to 'libxc' -thanks to Markus Meinert for careful testing of meta-GGA with various systems -MM also added questions and answers to the FAQ -meta-GGA now works for collinear magnetism only: it is inconsistent with non-collinearity -Henning Glawe pointed out a bug affecting the generation of the k-point set when 'autokpt=.true.' -Important: the variable 'radkpt' has been redefined and should be made smaller by a factor of 2π -SS fixed a bug in the plotting of spin-polarised Fermi surfaces -electron momentum density now available with 'task=170'; thanks to S. Dugdale and D. Ernsting for discussions -lattice vectors, atomic positions and muffin-tin magnetic fields can now be randomised by setting the random amplitudes 'rndavec', 'rndatposc' and 'rndbfcmt' to positive values; this is useful for checking stability of a calculation -the k-points corresponding to the indirect band-gap are now reported to 'INFO.OUT' -lots of optimisations and simplifications elk-1.4.5 -potential-only meta-GGA now available in conjunction with Libxc as an experimental feature; see the example 'Si-meta-GGA'; thanks to Miguel Marques for discussions -finite q-vector linear response TDDFT now available thanks to SS -Important: variable 'autormt' has been removed and automatic scaling of the muffin-tin radii is now always on; a new simpler algorithm for computing the radii was implemented; non-overlapping muffin-tins will not be rescaled; calculations may need to be reconverged -changed parameter for estimation of the nuclear radius from Z to A; thanks to Giorgio Concas for pointing this out -Kohn-Sham band gap written to 'GAP.OUT' after each iteration -3D nesting function plot now available; use 'task=105' -fixed problem with a constant in the BSE exchange term -fixed problem of TDDFT freezing with MPI -lots of optimisations and simplifications elk-1.3.31 -fixed problem with OpenMP 'reduction' clause in calculation of dielectric function -no other changes elk-1.3.30 -removed factor of 2 from the BSE exchange term, this has little effect on spectra in the optical range; spotted by Markus Meinert after careful investigation of core-state BSE spectra -M. Meinert also improved the 'CaO-BSE-core' and 'Fe-XMCD' examples -fixed problem with symmetry discovered by Alexey Baranov -calculation of the partial DOS is now parallel, thanks to suggestions from Anton Filanovich -various optimisations; including some ideas from Anton Kozhevnikov -iterative diagonalisation is now much faster -improved the adaptive mixing scheme -improved the initial stability of the self-consistent loop, thanks to discussions with Lars Nordstrom Notes for developers -inverse indices from 'idxis', 'idxia', 'idxil' and 'idxim' for species, atoms and angular momenta are now available, thanks to A. Kozhevnikov -the arguments to hmlaa, hmlalo, hmllolo, olpaa, olpalo, olplolo have changed elk-1.3.22 -fixed a problem which occurs with version 10 of the Intel compiler -simplified the 'setup' script and added OpenMP compiler options by default -no other changes elk-1.3.20 -added directionality to the TDDFT code; thanks also to Vladimir Nazarov for discussions -a pre-print is now available for the new TDDFT 'bootstrap' kernel: arXiv:1107.0199v1 [cond-mat.mtrl-sci] -added the scissor correction to the RPA inverse dielectric function in EPSINV_RPA.OUT -fixed a problem with running geometry optimisation with MPI; thanks to Arkady Davydov and Antonio Sanna for discussions -geometry optmimisation has changed: now the geometry, interatomic distances, final total energies and forces are stored for each optimisation step in GEOMETRY_OPT.OUT, IADIST_OPT.OUT, TOTENERGY_OPT.OUT and FORCES_OPT.OUT -removed geometry optmisation from the ground-state calculation and put it in a separate subroutine -reduced pseudocharge density constant (lnpsd) because the spherical bessel function order could be too large; may change total energies slightly -q-points and weights written to QPOINTS.OUT -minor changes and optimisations elk-1.3.15 -fixed serious bug introduced in the last version affecting some tasks (for example DOS plots) for crystals with non-symorphic symmetries; thanks to Vladimir Nazarov and Daniel Rohr for pointing this out -VM also fixed the graphene example, in which the atomic coordinates were (embarrassingly) incorrect; also included a high-precision DOS plot to demonstrate the Dirac-like band structure -SS, JKD, Antonio Sanna and Hardy Gross added a new TDDFT functional, called the 'bootstrap' kernel, which produces remarkably good linear optical response functions (article currently in preparation); see the example 'LiF-TDDFT' -Antonio Sanna added the Eliashberg equations for finding the superconducting gap as a function of temperature; see the example 'Al-Eliashberg' -improved the electron-phonon coupling calculation (task=240); this is faster, more accurate and now works for spin-spirals; now also parallelised with MPI -removed packed matrix format everwhere in the code, along with the variable 'tpmat'; the first-variational matrices are now stored in upper triangular format; this takes more memory, but is faster -Anton Kozhevnikov fixed a small problem with calculating the nuclear-nuclear energy -various optimisations, simplifications and minor bug fixes -this version of the code with be used in the CECAM Tutorial Notes for developers -the order of indeices for the q- and w-dependent inverse dielectric function, epsinv, have changed from (w,G,G') to (G,G',w) elk-1.3.2 -linear response time-dependent density functional theory (TDDFT) now available for calculating the q->0 dielectric response; see the example 'LiF-TDDFT' (experimental) -fixed a problem with the BSE calculation which made the response function too large -added the possibility of using arbitrary states in the BSE kernel thanks to discussions with Markus Meinert; this enables the calulation of core state BSE spectra; see the example 'CaO-BSE-core' (experimental) -MM also added an X-ray magnetic circular dichroism (XMCD) example: 'Fe-XMCD' -BSE calculations are now faster, thanks to discussions with MM -Alexey Baranov made several changes to the structure factor code, including adding an energy window, 'wsfac', for the calculations; see the example 'MnO-str-factors' -Tyrel McQueen suggested a way to speed up the Hartree-Fock calculation; this has been implemented and also considerably speeds up OEP and RDMFT -TMcQ also made some ongoing changes to the hybrid functional code -made the radial Dirac and Schrodinger integrators yet more stable; thanks to AB and Frank Wagner for discussions -fixed a problem with the ordinary RPA dielectric function; only affects calculations which have a scissor shift which made epsilon slightly too small -real symmetric diagonalisation now used for the first-variational eigenvalue problem for crystals with inversion symmetry; this can speed up the calculation by a factor of three; this is thanks to discussions with Lars Nordstrom; Important: the atomic basis may be shifted to a different position and old output files may need to be reconverged -fixed a stability problem which occurs when using GGA functionals by removing G-vector truncation of the effective potential introduced in version 1.0.16; thanks to Greg Walker for discovering this -LDA+U calculations are now faster thanks to fast evaluation of the atomic density matrix -Broyden mixing scheme now available: this seems to be both fast and stable (use 'mixtype=3') -removed Anderson mixing -improved starting guess for the density in ground-state calculations -upgraded to LAPACK 3.3.1 -various optimisations and simplifications Notes for developers -the arrays haa, halo, hlolo, oalo, ololo are now smaller and the indexing has been rearranged elk-1.2.20 -the Bethe-Salpeter equation (BSE) for linear optics now works beyond the Tamm-Dankoff approximation -RPA and BSE calculations now use full wavefunctions instead of plane waves -removed the Coulomb regulator from the calculation of RPA dielectric function, instead used the analytic results for the head and the wings of the matrix (thanks to Vladimir Nazarov for discussions) -improved the stability of radial Dirac and Schrodinger integrators (thanks to Alexei Baranov, Frank Wagner and Ondrej Certik for discussions) -added more block descriptions to the manual (thanks to various people for pointing out omissions) -various optimisations elk-1.2.15 -SS and JKD added the Bethe-Salpeter equation (BSE) for linear optics calculations. This feature works with LDA+U, magnetism and spin-orbit coupling. It is also parallelised with MPI and can be run across a cluster. See the 'LiF-BSE' and 'Si-BSE' examples. Currently an experimental feature -Alexey Baranov added density and magnetic structure factors: see the 'MnO-str-factors' example -AB also fixed a problem with output of the spacegroup code -full frequency and G vector dependent RPA inverse dielectric function now available with 'task=180'. Works with metals, insulators, magnetism and SOC, and can be calculated for arbitrary complex frequencies. Also parallelised with OpenMP and MPI. Thanks to Anton Kozhevnikov for discussions -added lots more MPI parallelism and made the code more MPI-friendly -many optimisations across the whole code -Simone Chiesa, Anton Kozhevnikov and Adolfo Eguiluz found a problem in the plotting of the partial DOS which has now been fixed -the first-variational eigenvalue matrices can now be stored and diagonalised in non-packed storage mode: use 'tpmat=.false.'. This can speed up calculations at the expense of memory -Tyrel McQueen found a bug in the 'findprim' routine, now fixed -TMcQ also suggested a change to how the code connects the points of the 'plot1d' vertices -Martin Stankovski suggested that 'ecvcut' be made into an input variable, allowing the core-valence cut-off to be adjusted -added the phonon calculation of Ni to the examples -Jerzy Goraus contributed a script for calculating VB-XPS spectra from PDOS* files; and also one for converting the Wien2K struct file to spacegroup.in -modified some species files thanks to tests done by J. Goraus -Henning Glawe suggested including the version number in the release directory -upgraded to LAPACK 3.3.0 -made tolerance for finding the linearisation energies (epsband) much smaller: this improves the overall stability of the self-consistent loop Notes for developers -arguments to 'genppts' have changed; also the non-reduced k-points are now stored in the remaining part of the reduced k-point arrays elk-1.1.4 -message passing interface (MPI) parallel runs now available; scalable to hundreds of cores across a cluster; can also be used as hybrid OpenMP+MPI parallelism for maximum efficiency; with thanks to Bhagawan Sahu for help with testing; see manual for compilation and running instructions -S. Sharma added susceptibility tensor for non-linear optical second-harmonic generation (SHG); see example 'GaAs-NLO' for details -added spin-orbit correction to momentum matrix elements; affects linear and non-linear optics -optical calculations now work in combination with spin-spirals -updated interface to version 1.0 of the ETSF exchange-correlation library, libxc; thanks to M. Marques and T. McQueen for assistance -fixed bug spotted by T. McQueen involving using multiple tasks in conjunction with 'primcell=.true.' -A. Kozhevnikov fixed bug in 'xc_pwca.f90' -A. Kozhevnikov also fixed serious bug in 'getevecfv.f90' -F. Cricchio changed the order of lattice vector angles in 'spacegroup' utility to 'bc, ac, ab' which corresponds to the convention alpha, beta, gamma -removed scissor correction from eigenvalue solver; now it is used, as before, only in optics calculations -T. McQueen suggested an improvement to the routine which generates the path in reciprocal space for bandstructure plots, 'connect.f90', which has been implemented -fixed problem with XCrysDen Fermi surface plots, spotted by FC -various optimisations and simplifications Notes for developers -arguments to 'zpotcoul' have changed in anticipation of linear-response phonons; should now be called in conjunction with 'genzvclmt' elk-1.0.17 -fixed problem with Fermi surface generation introduced in the last version -E. K. U. Gross added to list of main developers -no other changes elk-1.0.16 -fixed problem in linear optics calculations for metals - thanks to Antonio Sanna, Fabio Bernardini and Sandro Massida for pointing this out -FC and LN added option for automatic determination of APW linearisation energies (use 'autolinengy=.true.') -Marty Blaber made a script which allows for semi-automatic labeling of the vertex locations with gnuplot (found in the 'elk/utilities' directory) -FC and LN fixed problem with some compilers when writing FERMISURF.OUT -FC and LN fixed problem with writing XCrysDen Fermi surface plots -Anton Kozhevnikov found and fixed a problem with the generation of the irreducible representation file 'ELMIREP.OUT' -Torbjörn Björkman added a new routine which automatically determines the smearing width from the k-point density. See 'autoswidth' in the manual and the example 'Nb-autoswidth' for details -added a constant electric field E in the form of a saw-tooth potential: set the vector 'efieldc' (experimental) -added a constant vector potential A to the Hamiltonian to generate constant currents: set the variable 'afieldc' (experimental) -FC and LN fixed problem with a spin-polarised GGA routine -FC and LN pointed out that the energy term associated with the excess charge compensating background should be zero. This term has now been removed -code now more memory efficient thanks to smarter array allocation -the variable 'rgkmax' can now be made arbitrarily large without risk of instability -removed variable 'cfdamp' -Anton Kozhevnikov pointed out that the radial functions were being redundantly calculated for equivalent atoms -- now fixed -Anton Filanovich added several questions to the FAQ -scissors correction (given by the variable 'scissor') now applied consistently immediately after the generation of the eigenvalues -FC and LN removed the spherical harmonic transform matrices with rank lmmaxapw -added dielectric function calculation for arbitrary q-vector, see 'LiF-Yambo' example (experimental) -by setting 'gmaxvr=0', the G-vector cut-off for the potential and density is automatically determined from 'gmaxvr=2*gkmax+epslat' -various bug fixes, simplifications and optimisations elk-2.3.22/PaxHeaders.22528/utilities0000644002504400250440000000005012337331332015345 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/0000755002504400250440000000000012337331332016166 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/utilities/PaxHeaders.22528/blocks2columns0000644002504400250440000000005012337331332020305 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/blocks2columns/0000755002504400250440000000000012337331332021126 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/utilities/blocks2columns/PaxHeaders.22528/blocks2columns.py0000644002504400250440000000005012337331332023674 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/blocks2columns/blocks2columns.py0000644002504400250440000000352612337331332024446 0ustar00dewhurstdewhurst00000000000000#!/usr/bin/python # elk blocks to columns by Markus Meinert # Usage: blocks2columns.py PDOS_S01_A0001.OUT # blocks2columns.py TDOS.OUT # blocks2columns.py BAND.OUT import sys, os print("\n =========================\n | elk blocks to columns |\n =========================\n") # Read the file. filename = sys.argv[1] f = open(filename, 'r') data = f.readlines() f.close() # Analyze the file. # Number of lines. nlines = len(data) print(" Number of lines: %i " % nlines) # Count blank lines to determine number of datasets. ndatasets = 0 for line in data: if line.split() == []: ndatasets += 1 print(" Number of datasets: %i " % ndatasets) # Number of lines per block is: nlinesperblock = (nlines - ndatasets)/ndatasets print(" Number of lines per block: %i " % nlinesperblock) # Collect the datasets into a list of lists with a double-loop over datasets and lines. datasets = [] for i in range(0,ndatasets): currentset = [] for j in range(i*nlinesperblock + i, (i*nlinesperblock + i) + nlinesperblock): currentset.append(data[j].split()) # Split each line by empty spaces. datasets.append(currentset) output = "" # Generate a head line output += "#%21s" % "x-axis" for i in range(1,ndatasets+1): blockname = "block_%i" % i output += "%22s" % blockname output += "\n" # Merge the datasets line-wise. for i in range(0,nlinesperblock): # x-axis as first column, read from first block line = '%22.13e' % (float(datasets[0][i][0])) # Append the block values as columns. for j in range(0, ndatasets): line += '%22.13e' % (float(datasets[j][i][1])) line += "\n" output += line filename = filename + ".columns" if os.path.exists(filename): print("\n Output file %s exists. Exit.\n" % filename) else: f = open(filename, 'w') f.write(output) f.close() print("\n Output filename: %s\n Done.\n" % filename) elk-2.3.22/utilities/PaxHeaders.22528/xps0000644002504400250440000000005012337331332016157 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/xps/0000755002504400250440000000000012337331332017000 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/utilities/xps/PaxHeaders.22528/conv.c0000644002504400250440000000005012337331332017345 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/xps/conv.c0000644002504400250440000000335712337331332020121 0ustar00dewhurstdewhurst00000000000000#include #include #include #include #include #define N 100000 // Convolution with Lorentz and Fermi function, // compile with: gcc conv.c -oconv -lm // modify the N above if needed. // Use at your own risk. // Jerzy Goraus (2003) typedef struct { double x,y; } pT; pT p1[N],p2[N]; double a_lor,Ef; int cmp1(pT *t1, pT *t2) { double t=t1->x-t2->x; return (int)(2*t/fabs(t)); } inline double lor(double x) { return (1/(1+x*x*a_lor)); } inline double fermi(double x) { return 1/(1+exp((x-Ef)/0.02569)); } main (int argc, char **argv) { int m=4,i1; double *tabl=malloc(1600); FILE *f; double dE=0.4,Ef=0,DE=0.2; char *buffer=malloc(256); if (!((argc==2)||(argc==4))) { printf("\nconv: convolution with Lorentz and Fermi function\n\ conv [{ FWHM Ef }]\nfilename is xy ascii data file,\ FWHM - Full Width at Half Maximum default : 0.4eV \n \ Ef - Fermi Energy default : 0 eV n\n");exit(0); } if (argc==4) { sscanf(argv[2],"%lf",&dE); sscanf(argv[3],"%lf",&Ef); if (dE>20) {printf("%i value too high\n",m);exit(1);} }; a_lor=4/(dE*dE); srand (time (NULL)); double y,sum; int i=0,k,n1=0,n2=0; f = fopen (argv[1], "r"); if (f==NULL) { printf("can't open for reading %s\n",argv[1]); exit(1);} while (!feof(f)) { fgets(buffer,255,f); sscanf(buffer,"%lf %lf",&(p1[n1].x),&(p1[n1].y)); n1++; assert(n1; close(STR); $atcnt=0; print "\nElements : "; for ($i=0; $i<$#str; $i++) { $_=$str[$i]; if (/atoms\n/) { $i++; $_=$str[$i]; s/\s//g; ($ATCNT,$TMP)=split(/:/); } if (/spinpol/) { $i++; $_=$str[$i]; if (/true/) { $SPOL=1;} } if (/in\'/) { ($ELNAME,$TMP)=split(/\./); $_=$ELNAME; s/\'//; $ELNAME=$_; #print "\n",$ELNAME; $_=$str[$i+1]; s/\s//g; ($MULT,$TMP)=split(/:/); push @atoms, $ELNAME; print $ELNAME," (",$MULT,") "; $mtab{$ELNAME}=$MULT; $idxtab{$ELNAME}=$atidx; $atidx++; #print "|",$MULT,"|"; } } if ($SPOL ) { print "\nMagnetic case\n"; } else { print "\nNon-magnetic case\n";} #print $ATCNT; open(CRS,"./CROSEC") or die "Can't open CROSEC"; # Here enter the position of CROSEC print "\nRead CROSEC"; @crs=; close(CRS); foreach ($i=1 ; $i<@crs; $i++) { $_=$crs[$i]; if (/ATOM=/) { $A=substr($_,5); $A=~s/\s//g; } else { $CR{$A}=$_; } } print "\n"; $NDOS=0; foreach (@atoms) { $ELNAME=$_; for ($i=1; $i<=$mtab{$_}; $i++) { $fname=sprintf("PDOS_S%02d_A%04d.OUT", $idxtab{$_}, $i); print "\nRead : ",$fname ; open(pdos, $fname) or die "Can't open $fname\n"; @pdos=; close(pdos); if ($NDOS==0) { foreach (@pdos) { if (/\d/) {$NDOS++}; } $NDOS/=32; $NDOS++; #- init to 0 for ($j=0; $j<$NDOS-1; $j++) { $atw_su[$j]=0; $atw_pu[$j]=0; $atw_du[$j]=0; $atw_fu[$j]=0; $atw_sd[$j]=0; $atw_pd[$j]=0; $atw_dd[$j]=0; $atw_fd[$j]=0; $att_su[$j]=0; $att_pu[$j]=0; $att_du[$j]=0; $att_fu[$j]=0; $att_sd[$j]=0; $att_pd[$j]=0; $att_dd[$j]=0; $att_fd[$j]=0; $attc_su[$j]=0; $attc_pu[$j]=0; $attc_du[$j]=0; $attc_fu[$j]=0; $attc_sd[$j]=0; $attc_pd[$j]=0; $attc_dd[$j]=0; $attc_fd[$j]=0; } } $atfout=sprintf("_%s_%04d.dat",$ELNAME,$i); open(atpart, ">".$atfout) or die "Can't open output file $atfout\n"; if ($SPOL ) { print atpart "# spin up - s,p,d,f and spin down s,p,d,f\n"; } else { print atpart "# s, p, d, f\n";} for ($q=0; $q<$#pdos; $q++) { ($TMP,$pdosx[$q],$pdosy[$q])=split(/\s+/,$pdos[$q]); $pdosx[$q]*=$FACTOR; $pdosy[$q]/=$FACTOR; } for ($j=0; $j<$NDOS-1; $j++) { $at_su[$j]=$pdosy[$j]; if ($SPOL ) {$at_sd[$j]=$pdosy[$j+16*$NDOS];} $at_pu[$j]=0; $at_pd[$j]=0; $at_du[$j]=0; $at_dd[$j]=0; $at_fu[$j]=0; $at_fd[$j]=0; for ($q=1; $q<4; $q++) { $at_pu[$j]+=$pdosy[$j+$q*$NDOS]; if ($SPOL ) {$at_pd[$j]+=$pdosy[$j+16*$NDOS+$q*$NDOS];} } for ($q=4; $q<9; $q++) { $at_du[$j]+=$pdosy[$j+$q*$NDOS]; if ($SPOL ) {$at_dd[$j]+=$pdosy[$j+16*$NDOS+$q*$NDOS];} } for ($q=9; $q<16; $q++) { $at_fu[$j]+=$pdosy[$j+$q*$NDOS]; if ($SPOL ) {$at_fd[$j]+=$pdosy[$j+16*$NDOS+$q*$NDOS];} } print atpart $pdosx[$j], " ",$at_su[$j]," ",$at_pu[$j]," ",$at_du[$j]," ",$at_fu[$j]; if ($SPOL ) { print atpart " ",$at_sd[$j]," ",$at_pd[$j]," ",$at_dd[$j]," ",$at_fd[$j],"\n";} else {print atpart "\n";} $atw_su[$j]+=$at_su[$j]; $atw_pu[$j]+=$at_pu[$j]; $atw_du[$j]+=$at_du[$j]; $atw_fu[$j]+=$at_fu[$j]; $atw_sd[$j]+=$at_sd[$j]; $atw_pd[$j]+=$at_pd[$j]; $atw_dd[$j]+=$at_dd[$j]; $atw_fd[$j]+=$at_fd[$j]; } close atpart; print "\nWritten ",$atfout; #-- $gatfout=sprintf("_g_%s_%04d",$ELNAME,$i); open(GNU,">".$gatfout.".gnu") or die "can't open $gatfout\n"; print GNU $TERM,"\n",$OPT,"\n"; print GNU "set output \"$gatfout.$SUF\"\n"; print GNU "set xlabel \"Eb [eV]\"\n"; print GNU "set ylabel \"DOS [st/eV f.u.]\"\n"; print GNU "set title \"$ELNAME - $i\"\n"; print GNU "plot \"$atfout\" using 1:2 smooth uniq t 's' "; printf GNU ", \"$atfout\" using 1:3 smooth uniq t \'p\' "; printf GNU ", \"$atfout\" using 1:4 smooth uniq t \'d\' "; printf GNU ", \"$atfout\" using 1:5 smooth uniq t \'f\' "; if ($SPOL ) { print GNU ", \"$atfout\" using 1:6 smooth uniq t \'s\' "; print GNU ", \"$atfout\" using 1:7 smooth uniq t \'p\' "; print GNU ", \"$atfout\" using 1:8 smooth uniq t \'d\' "; print GNU ", \"$atfout\" using 1:9 smooth uniq t \'f\' "; } close(GNU); print "\nWritten ",$gatfout,".gnu"; #-- } $atwfout=sprintf("_%s.dat",$ELNAME); #at - atomic DOS, atw - given specie dos, att - total dos , attc - total dos with crossection open(atwpart, ">".$atwfout) or die "Can't open output file $atwfout \n"; if ($SPOL ) { print atwpart "# spin up - s,p,d,f and spin down s,p,d,f\n"; } else { print atwpart "# s, p, d, f\n";} if ($CR{$ELNAME} ne "") { ($Ks,$Kp,$Kd,$Kf)=split(/\,/,$CR{$ELNAME}); } else {$Ks=$Kp=$Kd=$Kf=0; print "\n----------------- No $ELNAME in CROSEC, Using 0 as crossection\n";}; for ($j=0; $j<$NDOS-1; $j++) { $att_su[$j]+=$atw_su[$j]; $att_pu[$j]+=$atw_pu[$j]; $att_du[$j]+=$atw_du[$j]; $att_fu[$j]+=$atw_fu[$j]; $att_sd[$j]+=$atw_sd[$j]; $att_pd[$j]+=$atw_pd[$j]; $att_dd[$j]+=$atw_dd[$j]; $att_fd[$j]+=$atw_fd[$j]; $attc_su[$j]+=$atw_su[$j]*$Ks; $attc_pu[$j]+=$atw_pu[$j]*$Kp; $attc_du[$j]+=$atw_du[$j]*$Kd; $attc_fu[$j]+=$atw_fu[$j]*$Kf; $attc_sd[$j]+=$atw_sd[$j]*$Ks; $attc_pd[$j]+=$atw_pd[$j]*$Kp; $attc_dd[$j]+=$atw_dd[$j]*$Kd; $attc_fd[$j]+=$atw_fd[$j]*$Kf; print atwpart $pdosx[$j], " ",$atw_su[$j]," ",$atw_pu[$j]," ",$atw_du[$j]," ",$atw_fu[$j]; if ($SPOL ) { print atwpart " ",$atw_sd[$j]," ",$atw_pd[$j]," ",$atw_dd[$j]," ",$atw_fd[$j],"\n";} else {print atwpart "\n";} } close atwpart; #- $gatwfout=sprintf("_g_%s",$ELNAME); open(GNU,">".$gatwfout.".gnu") or die "can't open $gatwfout\n"; print GNU $TERM,"\n",$OPT,"\n"; print GNU "set output \"$gatwfout.$SUF\"\n"; print GNU "set xlabel \"Eb [eV]\"\n"; print GNU "set ylabel \"DOS [st/eV f.u.]\"\n"; print GNU "set title \"$ELNAME \"\n"; print GNU "plot \"$atwfout\" using 1:2 smooth uniq t 's' "; printf GNU ", \"$atwfout\" using 1:3 smooth uniq t \'p\' "; printf GNU ", \"$atwfout\" using 1:4 smooth uniq t \'d\' "; printf GNU ", \"$atwfout\" using 1:5 smooth uniq t \'f\' "; if ($SPOL ) { print GNU ", \"$atwfout\" using 1:6 smooth uniq t \'s\' "; print GNU ", \"$atwfout\" using 1:7 smooth uniq t \'p\' "; print GNU ", \"$atwfout\" using 1:8 smooth uniq t \'d\' "; print GNU ", \"$atwfout\" using 1:9 smooth uniq t \'f\' "; } close(GNU); print "\nWritten ",$gatwfout,".gnu"; #- print "\nWritten ",$atwfout; for ($j=0; $j<$NDOS-1; $j++) { $atw_su[$j]=0; $atw_pu[$j]=0; $atw_du[$j]=0; $atw_fu[$j]=0; $atw_sd[$j]=0; $atw_pd[$j]=0; $atw_dd[$j]=0; $atw_fd[$j]=0; } } open(att, ">_TDOS.dat") or die "Can't open output file TDOS.dat \n"; open(attc, ">_cTDOS.dat") or die "Can't open output file cTDOS.dat \n"; for ($j=0; $j<$NDOS-1; $j++) { $u=$att_su[$j]+$att_pu[$j]+$att_du[$j]+$att_fu[$j]; $d=$att_sd[$j]+$att_pd[$j]+$att_dd[$j]+$att_fd[$j]; $uc=$attc_su[$j]+$attc_pu[$j]+$attc_du[$j]+$attc_fu[$j]; $dc=$attc_sd[$j]+$attc_pd[$j]+$attc_dd[$j]+$attc_fd[$j]; if ($SPOL ) { print att $pdosx[$j], " ",$u-$d," ",$u," ",$d,"\n"; print attc $pdosx[$j], " ",$uc-$dc," ",$uc," ",$dc,"\n"; } else { print att $pdosx[$j], " ",$u,"\n"; print attc $pdosx[$j], " ",$u,"\n"; } } close att; print "\nWritten _TDOS.dat"; close attc; print "\nWritten _cTDOS.dat"; print "\n"; elk-2.3.22/utilities/PaxHeaders.22528/wien2k-elk0000644002504400250440000000005012337331332017315 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/wien2k-elk/0000755002504400250440000000000012337331332020136 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/utilities/wien2k-elk/PaxHeaders.22528/se.pl0000644002504400250440000000005012337331332020336 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/wien2k-elk/se.pl0000755002504400250440000000221612337331332021106 0ustar00dewhurstdewhurst00000000000000#!/usr/bin/perl if (@ARGV<1) { print "Script for conversion Wien2K struct files to spacegroup.in files used in exciting/elk\n"; print "The only argument is the name of the struct file, spacegroup.in is written to standard output\n"; print "Use at your own risk. \n Jerzy Goraus 2009\n"; exit; }; open(STR,$ARGV[0]) or die "can't open ",$ARGV[0]," file\n "; @STRUCT=; ($TMP,$GROUP)=split(/\_/,$STRUCT[1]); ($GROUP,$TMP)=split(/\n/,$GROUP); ($GROUP,$TMP)=split(/\ /,$GROUP); ($TMP,$LA,$LB,$LC,$AA,$AB,$AG)=split(/\s+/,$STRUCT[3]); $ATCNT=0; print " '",$GROUP,"\'\n ",$LA," ",$LB," ",$LC,"\n ",$AA," ",$AB," ",$AG,"\n 1 1 1\n .false.\n "; foreach (@STRUCT) { $BUF=$_; if (/ATOM/) { ($TMP,$X,$Y,$Z)=split(/=/,$BUF); ($X,$TMP)=split(/\ /,$X); ($Y,$TMP)=split(/\ /,$Y); $ATCNT+=1; # print "\n",$X, " ", $Y," ", $Z; $RESULT = sprintf(" %lf %lf %lf\n", $X,$Y,$Z); }; if (/NPT/) { $ATL=substr($_,0,2); $_=$ATL; s/\s//g; $ATL=$_; # print $ATL; $TAB{$ATL}=$TAB{$ATL}.$RESULT; $TABN{$ATL}+=1; }; }; $NUM=keys(TAB); print " ",$NUM ,"\n"; foreach (keys(TAB)) { print " '",$_,"' '",$_,".in'\n"; print " ",$TABN{$_},"\n"; print $TAB{$_}; } elk-2.3.22/utilities/PaxHeaders.22528/elk-bands0000644002504400250440000000005012337331332017205 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/elk-bands/0000755002504400250440000000000012337331332020026 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/utilities/elk-bands/PaxHeaders.22528/elk-bands0000644002504400250440000000005012337331332021045 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/utilities/elk-bands/elk-bands0000755002504400250440000001572612337331332021627 0ustar00dewhurstdewhurst00000000000000#!/bin/bash # # Copyright (C) 2010 M. G. Blaber # This file is distributed under the terms of the GNU General Public License. # See the file COPYING for license details. # # http://elk.sourceforge.net/ # # Marty's plotting program for elk band structures. # Changelog: # v0.2 - Fixed a bug regarding white space noticed by Kay Dewhurst # # Description: # -Plots the bands from elk, including labels that you have specified in your # elk.in file (see below for details) # -Notes on the necessary files and programs and Usage are given below. # -I recommend adding this script to your "path", a guide is given in the # Installation Notes below. # # A sample plot1d block is given below: # ------------- # plot1d # 3 100 : nvp1d, npp1d # 0.0 0.0 1.0 !G : vlvp1d # 0.5 0.5 1.0 !X # 0.0 0.0 0.0 !G # -------------- # #Some user defineable plot parameters (You may always change the parameters of #individual plots by editing elk-bands.gps) plot_width="15 cm" #For publication, change to 8.5 cm plot_height="10 cm" #For publication, change to 6 - 10 cm plot_font="Times, 18" #For publication, change to 12 border_linewidth="2" band_linewidth="1" #This number is scaled by border_linewidth internally by gnuplot # # # REQUIRED FILES: # elk.in BAND.OUT BANDLINES.OUT # # REQUIRED PROGRAMS: # awk gnuplot # # USAGE: # elk-bands # OR (energies in eV) # elk-bands [min_energy] [max_energy] # eg: elk-bands -5 10 # # INSTALLATION NOTES: # HOW TO ADD elk-bands TO YOUR PATH # -Make a new directory in your home folder named bin: # mkdir /home/username/bin # -Add this new directory to your path by editing your bashrc file, # /home/username/.bashrc # and add the following line: # export PATH=$PATH:/home/username/bin # To update the path variable for the terminal you are currently in, type: # source ~/.bashrc # ########### me="elk-bands" version="0.2" input_file=elk.in band_file=BAND.OUT bandlines_file=BANDLINES.OUT #Output: gps_file=$me.gps eps_file=$me.eps echo "- Welcome to $me version $version" echo "- Use ~ in front of any character in the labels list to make that letter greek!" echo "---------------------------------------------" ######### # Check Dependencies # Error Message dependencies_usage="ERROR - Programs required by $me not found. $me requires the following programs: - awk - gnuplot Your local package manager should have them, alternatively you can grab them from: http://www.gnu.org/software/gawk/ http://www.gnuplot.info/ " # awk check check=$(which awk 2>&1) if [ ! $? -eq 0 ]; then echo "Ahhhhhhhhhhhhhh - No awk found" echo "$dependencies_usage" exit 1 fi # gnuplot check check=$(which gnuplot 2>&1) if [ ! $? -eq 0 ]; then echo "Ahhhhhhhhhhhhhh - No gnuplot found" echo "$dependencies_usage" exit 1 fi echo "- Found awk and gnuplot" ######### # Check for input files # Error message inputfiles_usage="ERROR - Some file required by $me not found. $me requires the following files: $input_file $band_file $bandlines_file" # Check for f in $input_file $band_file $bandlines_file; do if [ ! -f $f ]; then echo "Ooops, can't find $f" echo "$inputfiles_usage" exit 1 fi done echo "- Found $input_file $band_file $bandlines_file" ######### # Check Parameters # Error message usage="Welcome to $me $version Usage (energies in eV): $me [min energy] [max energy] eg: elk-bands -5.5 10.0 " # Check if [ $1 ]; then if [ $2 ]; then min_energy=$1 max_energy=$2 else echo "ERROR - Please provide both energies" exit 1 fi else #no parameters provided min_energy="-15" max_energy="15" fi ######### # Get the labels and check them # Error for when someone forgets the labels in elk.in label_usage="ERROR - Labels not found. All tildes ~ convert the following letter to a greek symbol. $me requires the plot1d block in $input_file to look like: ------------------------ plot1d 7 400 : nvp1d, npp1d 0.0 0.0 1.0 ~G : vlvp1d 0.5 0.5 1.0 X 0.0 0.0 0.0 ~G 0.5 0.0 0.0 L 0.5 0.5 0.0 Merry Christmas 0.5 0.25 -0.25 W 0.5 0.0 0.0 L ------------------------- ERROR - Labels not defined correctly - scroll back up to see what went wrong " # Read the labels from elk.in and put them in a file label_names.tmp cat $input_file | awk '{ if($1=="plot1d"){go=1} if(go==2){number_of_labels=$1} if(go>number_of_labels+2){go=0} if(go>2){ for (i = 4; i <= NF; i++){printf("%s ", $i)} printf("\n") } if(go>0){go=go+1} }' | sed 's/://g' | sed 's/vlvp1d//g' | sed 's/ / /g' > label_names.tmp #Check the labels. no_label_line=$(cat label_names.tmp | awk '{if($1==""){print NR; exit}}') if [ $no_label_line ]; then echo "ERROR - No label found on line $((no_label_line+2)) of plot1d block" echo "$label_usage" exit 1 fi # Get the positions of the labels from bandlines file cat $bandlines_file | awk 'BEGIN{last=-1}{ if($1!=""){ if($1!=last){last=$1;print $1} } }' > label_positions.tmp # Match up the labels with their positions and remove the exclamation marks if they exist paste label_positions.tmp label_names.tmp | sed 's/!//' > labels.tmp rm label_names.tmp label_positions.tmp #this thing joins all the labels together into a format gnuplot can understand. labels=$(cat labels.tmp | awk '{ for (i = 2; i <= NF; i++){if (i==2){label=$i}else{label=label " " $i}} printf("%s%s%s %f, ",q,label,q,$1) label="" }' q=\" ) #Replace all instances of capital G with the gamma symbol labels=$(echo $labels | sed 's/~\(.\)/\{\/Symbol \1\}/g' ) if [[ $labels == *"{/Symbol }"* ]] then echo "WARNING -> There is a space after a \"~\" in the labels block... get rid of it."; fi echo "- Found labels" ######### # Write elk-bands.gps, the file which gnuplot uses. #this is a neat trick to spew out a file without having to use quotes. the end of the file is labeled _EOF cat > bands.tmp << _EOF set terminal postscript enhanced eps colour lw $border_linewidth dashlength 2 font "$plot_font" size $plot_width, $plot_height set style data lines set output "$eps_file" set ylabel "Energy (eV)" set grid noytics xtics #this puts vertical lines on the band structure according to xtics below set xtics( $labels ) set mytics 5 #minor y tics, the number of little tics in between labeled tics. unset key #change this to "set key top left" or something if you want the key in the plot #if you use "set key" then the title "Bands" will appear in the key plot [:][$min_energy:$max_energy] \ "BAND.OUT" using 1:((\$2)*27.21138386) title "Bands" lw $band_linewidth lt 1 lc rgb "black",\ 0.0 lt -1 notitle _EOF #this thing just removes the final comma from the end of the "set xtics ( )" line. cat bands.tmp | sed 's/, )/)/' > $gps_file rm bands.tmp rm labels.tmp echo "- Plotting file written to $gps_file" gnuplot $gps_file if [ ! $? -eq 0 ]; then echo "Unfortunately, some sort of unforseen error has occurred, try posting a message on the forum at http://sourceforge.net/projects/elk/forums/ " else echo "- Band plot is ready in $eps_file" fi echo "" exit 0 elk-2.3.22/PaxHeaders.22528/src0000644002504400250440000000005012337331324014122 xustar000000000000000020 atime=1400746705 20 ctime=1400746708 elk-2.3.22/src/0000755002504400250440000000000012337331324014743 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/src/PaxHeaders.22528/tddftsplr.f900000644002504400250440000000005012337331324016525 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/tddftsplr.f900000644002504400250440000001763712337331324017307 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine tddftsplr use modmain use modmpi implicit none ! local variables integer ik,isym,iq,iw integer igq0,ig,jg integer info,i,j,n real(8) v(3),t1,t2 complex(8) a(4,4),b(4,4),z1 character(256) fname ! allocatable arrays integer, allocatable :: ipiv(:) real(8), allocatable :: vgqc(:,:),gqc(:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: chi(:,:,:,:,:),chit(:),fxc(:,:,:,:) complex(8), allocatable :: c(:,:,:,:),d(:,:),e(:,:,:,:),work(:) if (.not.spinpol) then write(*,*) write(*,'("Error(tddftsplr): spin-unpolarised calculation")') write(*,*) stop end if ! initialise global variables call init0 call init1 call init2 call init3 ! check q-vector is commensurate with k-point grid v(:)=dble(ngridk(:))*vecql(:) v(:)=abs(v(:)-nint(v(:))) if ((v(1).gt.epslat).or.(v(2).gt.epslat).or.(v(3).gt.epslat)) then write(*,*) write(*,'("Error(tddftsplr): q-vector incommensurate with k-point grid")') write(*,'(" ngridk : ",3I6)') ngridk write(*,'(" vecql : ",3G18.10)') vecql write(*,*) stop end if ! find the equivalent reduced q-point call findqpt(vecql,isym,iq) ! read density and potentials from file call readstate ! read Fermi energy from a file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! get the eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! generate the G+q-vectors and related quantities allocate(vgqc(3,ngrf),gqc(ngrf)) allocate(ylmgq(lmmaxvr,ngrf),sfacgq(ngrf,natmtot)) call gengqrf(vecqc,igq0,vgqc,gqc,ylmgq,sfacgq) deallocate(vgqc) ! compute chi0 allocate(chi(nwrf,ngrf,4,ngrf,4)) chi(:,:,:,:,:)=0.d0 !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkptnr ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle !$OMP CRITICAL write(*,'("Info(tddftsplr): ",I6," of ",I6," k-points")') ik,nkptnr !$OMP END CRITICAL call genspchi0(ik,scissor,vecql,gqc,ylmgq,sfacgq,chi) end do !$OMP END DO !$OMP END PARALLEL ! add chi0 from each process and redistribute if (np_mpi.gt.1) then n=nwrf*ngrf*4*ngrf*4 call mpi_allreduce(mpi_in_place,chi,n,mpi_double_complex,mpi_sum, & mpi_comm_kpt,ierror) end if ! transform chi0 from 2x2 to 1x3 basis do ig=1,ngrf do jg=1,ngrf do iw=1,nwrf a(:,:)=chi(iw,ig,:,jg,:) call tfm2213(a,b) chi(iw,ig,:,jg,:)=b(:,:) end do end do end do ! generate transverse chi0 for the collinear case if (.not.ncmag) then allocate(chit(nwrf)) do iw=1,nwrf a(:,:)=chi(iw,1,:,1,:) call tfm13t(a,b) chit(iw)=b(2,2) end do end if ! write chi0 to file if (mp_mpi) then ! write chi0 to file in 1x3 basis do i=1,4 do j=1,4 write(fname,'("CHI0_",2I1,".OUT")') i-1,j-1 open(50,file=trim(fname),action='WRITE',form='FORMATTED') do iw=1,nwrf write(50,'(2G18.10)') dble(wrf(iw)),dble(chi(iw,1,i,1,j)) end do write(50,*) do iw=1,nwrf write(50,'(2G18.10)') dble(wrf(iw)),aimag(chi(iw,1,i,1,j)) end do close(50) end do end do ! write transverse chi0 for collinear case if (.not.ncmag) then open(50,file='CHI0_T.OUT',action='WRITE',form='FORMATTED') do iw=1,nwrf write(50,'(2G18.10)') dble(wrf(iw)),dble(chit(iw)) end do write(50,*) do iw=1,nwrf write(50,'(2G18.10)') dble(wrf(iw)),aimag(chit(iw)) end do close(50) end if end if ! compute f_xc in G-space allocate(fxc(ngrf,4,ngrf,4)) call genspfxcg(fxc) ! add the regularised Coulomb interaction to f_xc to give f_Hxc do ig=1,ngrf if (ig.eq.igq0) then ! volume of small parallelepiped around q-point (see genwiq2) t2=omegabz*wkptnr t1=fourpi*wiq2(iq)/t2 else t1=fourpi/gqc(ig)**2 end if fxc(ig,1,ig,1)=fxc(ig,1,ig,1)+t1 end do ! matrix size n=4*ngrf allocate(ipiv(n),work(n)) allocate(c(ngrf,4,ngrf,4),d(n,n),e(ngrf,4,ngrf,4)) ! loop over frequencies do iw=1,nwrf ! store chi0 for this frequency c(:,:,:,:)=chi(iw,:,:,:,:) ! multiply f_Hxc by -chi0 from the left z1=-1.d0 call zgemm('N','N',n,n,n,z1,c,n,fxc,n,zzero,d,n) ! add the identity do i=1,n d(i,i)=d(i,i)+1.d0 end do ! invert the matrix call zgetrf(n,n,d,n,ipiv,info) if (info.eq.0) call zgetri(n,d,n,ipiv,work,n,info) if (info.ne.0) then write(*,*) write(*,'("Error(tddftsplr): unable to invert matrix")') write(*,'(" for frequency ",I6)') iw write(*,*) stop end if ! multiply by chi0 on the right and store in chi call zgemm('N','N',n,n,n,zone,d,n,c,n,zzero,e,n) chi(iw,:,:,:,:)=e(:,:,:,:) end do deallocate(ipiv,work,c,d,e) ! generate transverse chi for the collinear case if (.not.ncmag) then do iw=1,nwrf a(:,:)=chi(iw,1,:,1,:) call tfm13t(a,b) chit(iw)=b(2,2) end do end if if (mp_mpi) then ! write chi in the 1x3 basis do i=1,4 do j=1,4 write(fname,'("CHI_",2I1,".OUT")') i-1,j-1 open(50,file=trim(fname),action='WRITE',form='FORMATTED') do iw=1,nwrf write(50,'(2G18.10)') dble(wrf(iw)),dble(chi(iw,1,i,1,j)) end do write(50,*) do iw=1,nwrf write(50,'(2G18.10)') dble(wrf(iw)),aimag(chi(iw,1,i,1,j)) end do close(50) end do end do ! write transverse chi for collinear case if (.not.ncmag) then open(50,file='CHI_T.OUT',action='WRITE',form='FORMATTED') do iw=1,nwrf write(50,'(2G18.10)') dble(wrf(iw)),dble(chit(iw)) end do write(50,*) do iw=1,nwrf write(50,'(2G18.10)') dble(wrf(iw)),aimag(chit(iw)) end do close(50) end if write(*,*) write(*,'("Info(tddftsplr):")') write(*,'(" Spin-dependent response function chi_ij(G,G'',q,w) written to & &CHI_ij.OUT")') write(*,'(" for i,j = 0-3; G = G'' = 0; and all wplot frequencies")') write(*,'(" q-vector (lattice coordinates) : ")') write(*,'(3G18.10)') vecql write(*,'(" q-vector length : ",G18.10)') gqc(1) write(*,*) write(*,'(" The elements of chi labeled by (i,j) form the 4x4 matrix :")') write(*,*) write(*,'(" (_|_ _ _)")') write(*,'(" chi(G,G'',q,w) = ( | )")') write(*,'(" ( | )")') write(*,'(" ( | )")') write(*,*) write(*,'(" (0,0) is the charge-charge response drho/dv")') write(*,'(" (0,1-3) is the charge-magnetisation response drho/dB")') write(*,'(" (1-3,0) is the magnetisation-charge response dm/v")') write(*,'(" (1-3,1-3) is the magnetisation-magnetisation response dm/dB")') write(*,*) write(*,'(" Non-interacting Kohn-Sham reponse function written to & &CHI0_ij.OUT")') if (.not.ncmag) then write(*,*) write(*,'(" Transverse components corresponding to m_+- = m_x +- im_y")') write(*,'(" written to CHI_T.OUT and CHI0_T.OUT")') end if end if deallocate(gqc,ylmgq,sfacgq,chi,fxc) if (.not.ncmag) deallocate(chit) return contains subroutine tfm2213(a,b) implicit none ! arguments complex(8), intent(in) :: a(4,4) complex(8), intent(out) :: b(4,4) ! local variables integer i,j complex(8) c(4,4),z1 do i=1,4 c(i,1)=a(i,1)+a(i,4) c(i,2)=a(i,2)+a(i,3) z1=a(i,2)-a(i,3) c(i,3)=cmplx(aimag(z1),-dble(z1),8) c(i,4)=a(i,1)-a(i,4) end do do j=1,4 b(1,j)=c(1,j)+c(4,j) b(2,j)=c(2,j)+c(3,j) z1=c(2,j)-c(3,j) b(3,j)=cmplx(-aimag(z1),dble(z1),8) b(4,j)=c(1,j)-c(4,j) end do return end subroutine subroutine tfm13t(a,b) implicit none ! arguments complex(8), intent(in) :: a(4,4) complex(8), intent(out) :: b(4,4) ! local variables integer i,j complex(8) c(4,4),z1 do i=1,4 c(i,1)=a(i,1) z1=a(i,3) c(i,2)=a(i,2)+cmplx(aimag(z1),-dble(z1),8) c(i,3)=a(i,2)+cmplx(-aimag(z1),dble(z1),8) c(i,4)=a(i,4) end do do j=1,4 b(1,j)=c(1,j) z1=c(3,j) b(2,j)=c(2,j)+cmplx(-aimag(z1),dble(z1),8) b(3,j)=c(2,j)+cmplx(aimag(z1),-dble(z1),8) b(4,j)=c(4,j) end do return end subroutine end subroutine elk-2.3.22/src/PaxHeaders.22528/getwfpw.f900000644002504400250440000000005012337331324016202 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/getwfpw.f900000644002504400250440000001147012337331324016751 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getwfpw(vpl,vhpl,wfpw) use modmain use modpw implicit none ! arguments real(8), intent(in) :: vpl(3) real(8), intent(in) :: vhpl(3,nhkmax,nspnfv) complex(8), intent(out) :: wfpw(nhkmax,nspinor,nstsv) ! local variables integer isym,lspl,ilspl,lspn integer ik,ist,ihk,ihp,jhp,ig integer ispn0,ispn1,jspn,i integer recl,nhkmax_,nspinor_,nstsv_ real(8) vkl_(3),si(3,3) real(8) v(3),det,th,t1 complex(8) su2(2,2),z1,z2 ! allocatable arrays complex(8), allocatable :: wfpw_(:,:,:) ! find the equivalent k-point number and crystal symmetry element call findkpt(vpl,isym,ik) ! index to spatial rotation in lattice point group lspl=lsplsymc(isym) ! find the record length inquire(iolength=recl) vkl_,nhkmax_,nspinor_,nstsv_,wfpw !$OMP CRITICAL open(105,file='WFPW.OUT',action='READ',form='UNFORMATTED',access='DIRECT', & recl=recl) read(105,rec=ik) vkl_,nhkmax_,nspinor_,nstsv_,wfpw close(105) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getwfpw): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" WFPW.OUT : ",3G18.10)') vkl_ write(*,*) stop end if if (nhkmax.ne.nhkmax_) then write(*,*) write(*,'("Error(getwfpw): differing nhkmax for k-point ",I8)') ik write(*,'(" current : ",I8)') nhkmax write(*,'(" WFPW.OUT : ",I8)') nhkmax_ write(*,*) stop end if if (nspinor.ne.nspinor_) then write(*,*) write(*,'("Error(getwfpw): differing nspinor for k-point ",I8)') ik write(*,'(" current : ",I8)') nspinor write(*,'(" WFPW.OUT : ",I8)') nspinor_ write(*,*) stop end if if (nstsv.ne.nstsv_) then write(*,*) write(*,'("Error(getwfpw): differing nstsv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstsv write(*,'(" WFPW.OUT : ",I8)') nstsv_ write(*,*) stop end if ! if p = k then return t1=abs(vpl(1)-vkl(1,ik))+abs(vpl(2)-vkl(2,ik))+abs(vpl(3)-vkl(3,ik)) if (t1.lt.epslat) return !--------------------------------------------------------! ! translate and rotate wavefunction coefficients ! !--------------------------------------------------------! ! allocate temporary copy of wavefunction allocate(wfpw_(nhkmax,nspinor,nstsv)) ! the inverse of the spatial symmetry rotates k into p ilspl=isymlat(lspl) si(:,:)=dble(symlat(:,:,ilspl)) ! loop over first-variational spins do jspn=1,nspnfv if (spinsprl) then ispn0=jspn; ispn1=jspn else ispn0=1; ispn1=nspinor end if ! apply translation operation if required if (tvzsymc(isym)) then ! translation vector is zero do ihk=1,nhk(jspn,ik) wfpw_(ihk,ispn0:ispn1,:)=wfpw(ihk,ispn0:ispn1,:) end do else ! non-zero translation vector gives a phase factor do ihk=1,nhk(jspn,ik) ig=ihkig(ihk,jspn,ik) t1=-twopi*dot_product(dble(ivg(:,ig)),vtlsymc(:,isym)) z1=cmplx(cos(t1),sin(t1),8) wfpw_(ihk,ispn0:ispn1,:)=z1*wfpw(ihk,ispn0:ispn1,:) end do end if ! apply spatial rotation operation (passive transformation) i=1 do ihk=1,nhk(jspn,ik) call r3mtv(si,vhkl(:,ihk,jspn,ik),v) do ihp=i,nhk(jspn,ik) t1=abs(v(1)-vhpl(1,ihp,jspn)) & +abs(v(2)-vhpl(2,ihp,jspn)) & +abs(v(3)-vhpl(3,ihp,jspn)) if (t1.lt.epslat) then wfpw(ihp,ispn0:ispn1,:)=wfpw_(ihk,ispn0:ispn1,:) if (ihp.eq.i) i=i+1 exit end if end do end do end do ! apply spin rotation if required if (spinpol) then ! index to global spin rotation in lattice point group lspn=lspnsymc(isym) ! if symmetry element is the identity return if (lspn.eq.1) return ! find the SU(2) representation of the spin rotation matrix call rotaxang(epslat,symlatc(:,:,lspn),det,v,th) call axangsu2(v,th,su2) ! apply SU(2) matrix to spinor wavefunctions (active transformation) if (spinsprl) then ! spin-spiral case wfpw(:,2,:)=0.d0 i=1 do ihp=1,nhk(1,ik) v(:)=vhpl(:,ihp,1)-vqlss(:) do jhp=i,nhk(2,ik) t1=abs(v(1)-vhpl(1,jhp,2)) & +abs(v(2)-vhpl(2,jhp,2)) & +abs(v(3)-vhpl(3,jhp,2)) if (t1.lt.epslat) then do ist=1,nstsv z1=wfpw(ihp,1,ist) z2=wfpw(jhp,2,ist) wfpw(ihp,1,ist)=su2(1,1)*z1+su2(1,2)*z2 wfpw(jhp,2,ist)=su2(2,1)*z1+su2(2,2)*z2 end do if (jhp.eq.i) i=i+1 goto 10 end if end do wfpw(ihp,1,:)=0.d0 10 continue end do else ! normal spin case do ist=1,nstsv do ihp=1,nhk(1,ik) z1=wfpw(ihp,1,ist) z2=wfpw(ihp,2,ist) wfpw(ihp,1,ist)=su2(1,1)*z1+su2(1,2)*z2 wfpw(ihp,2,ist)=su2(2,1)*z1+su2(2,2)*z2 end do end do end if end if deallocate(wfpw_) return end subroutine elk-2.3.22/src/PaxHeaders.22528/putoccsv.f900000644002504400250440000000005012337331323016364 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/putoccsv.f900000644002504400250440000000117312337331323017132 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine putoccsv(ik,occsvp) use modmain implicit none ! arguments integer, intent(in) :: ik real(8), intent(in) :: occsvp(nstsv) ! local variables integer recl ! find the record length inquire(iolength=recl) vkl(:,ik),nstsv,occsvp !$OMP CRITICAL open(70,file='OCCSV'//trim(filext),action='WRITE',form='UNFORMATTED', & access='DIRECT',recl=recl) write(70,rec=ik) vkl(:,ik),nstsv,occsvp close(70) !$OMP END CRITICAL return end subroutine elk-2.3.22/src/PaxHeaders.22528/wfplot.f900000644002504400250440000000005012337331323016031 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/wfplot.f900000644002504400250440000000657312337331323016610 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine wfplot use modmain implicit none ! local variables integer ik,ist real(8) x,t1 ! allocatable arrays complex(8), allocatable :: evecfv(:,:),evecsv(:,:) ! external functions real(8) sdelta external sdelta ! initialise universal variables call init0 call init1 allocate(evecfv(nmatmax,nstfv)) allocate(evecsv(nstsv,nstsv)) ! read the density and potentials from file call readstate ! read Fermi energy from file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! set the occupancies if ((task.eq.61).or.(task.eq.62).or.(task.eq.63)) then ik=kstlist(1,1) ist=kstlist(2,1) if ((ik.lt.1).or.(ik.gt.nkpt)) then write(*,*) write(*,'("Error(wfplot): k-point out of range : ",I8)') ik write(*,*) stop end if if ((ist.lt.1).or.(ist.gt.nstsv)) then write(*,*) write(*,'("Error(wfplot): state out of range : ",I8)') ist write(*,*) stop end if ! plotting a single wavefunction occsv(:,:)=0.d0 occsv(ist,ik)=1.d0/wkpt(ik) else ! plotting an STM image by setting occupancies to be a delta function at the ! Fermi energy t1=1.d0/swidth do ik=1,nkpt ! get the eigenvalues from file call getevalsv(vkl(:,ik),evalsv(:,ik)) do ist=1,nstsv x=(efermi-evalsv(ist,ik))*t1 occsv(ist,ik)=occmax*wkpt(ik)*sdelta(stype,x)*t1 end do end do end if ! set the charge density to zero rhomt(:,:,:)=0.d0 rhoir(:)=0.d0 ! compute the charge density with the new occupancies do ik=1,nkpt ! get the eigenvectors from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) call rhomagk(ik,evecfv,evecsv) end do ! convert muffin-tin density/magnetisation to spherical harmonics call rhomagsh ! symmetrise the density for the STM plot if (task.eq.162) then call symrf(lradstp,rhomt,rhoir) end if ! convert the density from a coarse to a fine radial mesh call rfmtctof(rhomt) ! write the wavefunction modulus squared plot to file select case(task) case(61) open(50,file='WF1D.OUT',action='WRITE',form='FORMATTED') open(51,file='WFLINES.OUT',action='WRITE',form='FORMATTED') call plot1d(50,51,1,rhomt,rhoir) close(50) close(51) write(*,*) write(*,'("Info(wfplot):")') write(*,'(" 1D wavefunction modulus squared written to WF1D.OUT")') write(*,'(" vertex location lines written to WFLINES.OUT")') case(62) open(50,file='WF2D.OUT',action='WRITE',form='FORMATTED') call plot2d(50,1,rhomt,rhoir) close(50) write(*,*) write(*,'("Info(wfplot):")') write(*,'(" 2D wavefunction modulus squared written to WF2D.OUT")') case(162) open(50,file='STM2D.OUT',action='WRITE',form='FORMATTED') call plot2d(50,1,rhomt,rhoir) close(50) write(*,*) write(*,'("Info(wfplot):")') write(*,'(" 2D STM image written to STM2D.OUT")') case(63) open(50,file='WF3D.OUT',action='WRITE',form='FORMATTED') call plot3d(50,1,rhomt,rhoir) close(50) write(*,*) write(*,'("Info(wfplot):")') write(*,'(" 3D wavefunction modulus squared written to WF3D.OUT")') end select if (task.ne.162) then write(*,'(" for k-point ",I8," and state ",I6)') kstlist(1,1),kstlist(2,1) end if deallocate(evecfv,evecsv) return end subroutine elk-2.3.22/src/PaxHeaders.22528/phlwidth.f900000644002504400250440000000005012337331324016342 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phlwidth.f900000644002504400250440000000547412337331324017120 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phlwidth use modmain use modphonon implicit none ! local variables integer i,j,iq,iv integer lwork,info real(8) gmin,gmax ! allocatable arrays real(8), allocatable :: wq(:),gq(:,:),gp(:,:) real(8), allocatable :: rwork(:) complex(8), allocatable :: dynq(:,:,:) complex(8), allocatable :: ev(:,:),b(:,:) complex(8), allocatable :: gmq(:,:,:),gmr(:,:,:) complex(8), allocatable :: gmp(:,:),work(:) ! initialise universal variables call init0 call init2 allocate(wq(nbph),gq(nbph,nqpt),gp(nbph,npp1d)) allocate(rwork(3*nbph)) allocate(dynq(nbph,nbph,nqpt)) allocate(ev(nbph,nbph),b(nbph,nbph)) allocate(gmq(nbph,nbph,nqpt)) allocate(gmr(nbph,nbph,nqptnr)) allocate(gmp(nbph,nbph)) lwork=2*nbph allocate(work(lwork)) ! read in the dynamical matrices call readdyn(dynq) ! apply the acoustic sum rule call sumrule(dynq) ! read in the phonon linewidths for each q-point call readgamma(gq) ! loop over phonon q-points do iq=1,nqpt ! diagonalise the dynamical matrix call dynev(dynq(:,:,iq),wq,ev) ! construct a complex matrix from the phonon eigenvectors such that its ! eigenvalues squared are the phonon linewidths do i=1,nbph do j=1,nbph b(i,j)=sqrt(abs(gq(i,iq)))*conjg(ev(j,i)) end do end do call zgemm('N','N',nbph,nbph,nbph,zone,ev,nbph,b,nbph,zzero,gmq(:,:,iq),nbph) end do ! Fourier transform the gamma matrices to real-space call dynqtor(gmq,gmr) ! generate a set of q-point vectors along a path in the Brillouin zone call connect(bvec,nvp1d,npp1d,vvlp1d,vplp1d,dvp1d,dpp1d) gmin=1.d8 gmax=0.d0 ! compute the linewidths along the path do iq=1,npp1d ! compute the gamma matrix at this particular q-point call dynrtoq(vplp1d(:,iq),gmr,gmp) ! diagonalise the gamma matrix call zheev('N','U',nbph,gmp,nbph,gp(:,iq),work,lwork,rwork,info) ! square the eigenvalues to recover the linewidths gp(:,iq)=gp(:,iq)**2 gmin=min(gmin,gp(1,iq)) gmax=max(gmax,gp(nbph,iq)) end do gmax=gmax+(gmax-gmin)*0.5d0 gmin=gmin-(gmax-gmin)*0.5d0 ! output the vertex location lines open(50,file='PHLWLINES.OUT',action='WRITE',form='FORMATTED') do iv=1,nvp1d write(50,'(2G18.10)') dvp1d(iv),gmin write(50,'(2G18.10)') dvp1d(iv),gmax write(50,'(" ")') end do close(50) ! output the phonon linewidth dispersion open(50,file='PHLWIDTH.OUT',action='WRITE',form='FORMATTED') do i=1,nbph do iq=1,npp1d write(50,'(2G18.10)') dpp1d(iq),gp(i,iq) end do write(50,'(" ")') end do close(50) write(*,*) write(*,'("Info(phlwidth):")') write(*,'(" phonon linewidth dispersion written to PHLWIDTH.OUT")') write(*,'(" vertex location lines written to PHLWLINES.OUT")') deallocate(wq,gq,gp,rwork,dynq) deallocate(ev,b,gmq,gmr,gmp,work) return end subroutine elk-2.3.22/src/PaxHeaders.22528/ggamt_2b.f900000644002504400250440000000005012337331323016200 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggamt_2b.f900000644002504400250440000000372712337331323016755 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggamt_2b ! !INTERFACE: subroutine ggamt_2b(is,g2rho,gvrho,vx,vc,dxdg2,dcdg2) ! !USES: use modmain ! !DESCRIPTION: ! Spin-unpolarised version of {\tt ggamt\_sp\_2b}. ! ! !REVISION HISTORY: ! Created November 2009 (JKD and TMcQ) !EOP !BOC implicit none ! arguments integer, intent(in) :: is real(8), intent(in) :: g2rho(lmmaxvr,nrmtmax) real(8), intent(in) :: gvrho(lmmaxvr,nrmtmax,3) real(8), intent(inout) :: vx(lmmaxvr,nrmtmax) real(8), intent(inout) :: vc(lmmaxvr,nrmtmax) real(8), intent(in) :: dxdg2(lmmaxvr,nrmtmax) real(8), intent(in) :: dcdg2(lmmaxvr,nrmtmax) ! local variables integer nr,nri,i ! allocatable arrays real(8), allocatable :: rfmt1(:,:),rfmt2(:,:),grfmt(:,:,:) allocate(rfmt1(lmmaxvr,nrmtmax),rfmt2(lmmaxvr,nrmtmax)) allocate(grfmt(lmmaxvr,nrmtmax,3)) nr=nrmt(is) nri=nrmtinr(is) !------------------! ! exchange ! !------------------! ! convert dxdg2 to spherical harmonics call rfsht(nr,nri,1,dxdg2,1,rfmt1) ! compute grad dxdg2 call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) ! (grad dxdg2).(grad rho) in spherical coordinates rfmt1(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt2) rfmt1(:,1:nr)=rfmt1(:,1:nr)+rfmt2(:,1:nr)*gvrho(:,1:nr,i) end do vx(:,1:nr)=vx(:,1:nr)-2.d0*(rfmt1(:,1:nr)+dxdg2(:,1:nr)*g2rho(:,1:nr)) !---------------------! ! correlation ! !---------------------! ! convert dcdg2 to spherical harmonics call rfsht(nr,nri,1,dcdg2,1,rfmt1) ! compute grad dcdg2 call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) ! (grad dcdg2).(grad rho) in spherical coordinates rfmt1(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt2) rfmt1(:,1:nr)=rfmt1(:,1:nr)+rfmt2(:,1:nr)*gvrho(:,1:nr,i) end do vc(:,1:nr)=vc(:,1:nr)-2.d0*(rfmt1(:,1:nr)+dcdg2(:,1:nr)*g2rho(:,1:nr)) deallocate(rfmt1,rfmt2,grfmt) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writeefg.f900000644002504400250440000000005012337331323016332 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writeefg.f900000644002504400250440000000541112337331323017077 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writeefg ! !INTERFACE: subroutine writeefg ! !USES: use modmain ! !DESCRIPTION: ! Computes the electric field gradient (EFG) tensor for each atom, $\alpha$, ! and writes it to the file {\tt EFG.OUT} along with its eigenvalues. The EFG ! is defined by ! $$ V^{\alpha}_{ij}\equiv\left.\frac{\partial^2 V'_{\rm C}({\bf r})} ! {\partial{\bf r}_i\partial{\bf r}_j}\right|_{{\bf r}={\bf r}_{\alpha}}, $$ ! where $V'_{\rm C}$ is the Coulomb potential with the $l=m=0$ component ! removed in each muffin-tin. The derivatives are computed explicitly using ! the routine {\tt gradrfmt}. ! ! !REVISION HISTORY: ! Created May 2004 (JKD) ! Fixed serious problem, November 2006 (JKD) !EOP !BOC implicit none ! local variables integer, parameter :: lwork=10 integer is,ia,ias integer nr,nri,ir integer i,j,info real(8) efg(3,3),a(3,3) real(8) w(3),work(lwork) ! allocatable arrays real(8), allocatable :: rfmt(:,:),grfmt1(:,:,:),grfmt2(:,:,:) ! initialise universal variables call init0 ! read density and potentials from file call readstate ! allocate local arrays allocate(rfmt(lmmaxvr,nrmtmax)) allocate(grfmt1(lmmaxvr,nrmtmax,3)) allocate(grfmt2(lmmaxvr,nrmtmax,3)) open(50,file='EFG.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("(electric field gradient tensor is in Cartesian coordinates)")') do is=1,nspecies nr=nrmt(is) nri=nrmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,*) write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is,trim(spsymb(is)),ia ! remove the l=m=0 part of the potential do ir=1,nr rfmt(1,ir)=0.d0 rfmt(2:lmmaxvr,ir)=vclmt(2:lmmaxvr,ir,ias) end do ! compute the gradient of the Coulomb potential call gradrfmt(nr,nri,spr(:,is),rfmt,nrmtmax,grfmt1) do i=1,3 ! compute the gradient of the gradient call gradrfmt(nr,nri,spr(:,is),grfmt1(:,:,i),nrmtmax,grfmt2) do j=1,3 efg(i,j)=grfmt2(1,1,j)*y00 end do end do ! symmetrise the EFG do i=1,3 do j=i+1,3 efg(i,j)=0.5d0*(efg(i,j)+efg(j,i)) efg(j,i)=efg(i,j) end do end do write(50,*) write(50,'(" EFG tensor :")') do i=1,3 write(50,'(3G18.10)') (efg(i,j),j=1,3) end do write(50,'(" trace : ",G18.10)') efg(1,1)+efg(2,2)+efg(3,3) ! diagonalise the EFG a(:,:)=efg(:,:) call dsyev('N','U',3,a,3,w,work,lwork,info) write(50,'(" eigenvalues :")') write(50,'(3G18.10)') w end do end do close(50) write(*,*) write(*,'("Info(writeefg): electric field gradient written to EFG.OUT")') deallocate(rfmt,grfmt1,grfmt2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writevclijji.f900000644002504400250440000000005012337331324017224 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writevclijji.f900000644002504400250440000000251012337331324017766 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writevclijji ! !INTERFACE: subroutine writevclijji ! !USES: use modmain use modmpi ! !DESCRIPTION: ! Generates Coulomb matrix elements of the type $(i-jj-i)$ and outputs them to ! the file {\tt VCLIJJI.OUT}. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! allocatable arrays real(8), allocatable :: vclijji(:,:,:) integer recl,ik ! determine record length for vclijji and open file allocate(vclijji(nstsv,nstsv,nkpt)) inquire(iolength=recl) vclijji deallocate(vclijji) open(100,file='VCLIJJI.OUT',action='WRITE',form='UNFORMATTED',access='DIRECT', & recl=recl) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(vclijji) !$OMP DO do ik=1,nkptnr ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(vclijji(nstsv,nstsv,nkpt)) !$OMP CRITICAL write(*,'("Info(writevclijji): ",I6," of ",I6," k-points")') ik,nkptnr !$OMP END CRITICAL ! calculate Coulomb matrix elements of the type (i-jj-i) call genvclijji(ik,vclijji) !$OMP CRITICAL write(100,rec=ik) vclijji !$OMP END CRITICAL deallocate(vclijji) end do !$OMP END DO !$OMP END PARALLEL close(100) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/getvclijji.f900000644002504400250440000000005012337331324016651 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/getvclijji.f900000644002504400250440000000217312337331324017420 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: getvclijji ! !INTERFACE: subroutine getvclijji(ikp,vclijji) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ikp : k-point from non-reduced set (in,integer) ! vclijji : Coulomb matrix elements (out,real(nstsv,nstsv,nkpt)) ! !DESCRIPTION: ! Retrieves Coulomb matrix elements of the type $(i-jj-i)$ from the file ! {\tt VCLIJJI.OUT}. ! ! !REVISION HISTORY: ! Created 2009 (Sharma) !EOP !BOC implicit none ! arguments integer, intent(in) :: ikp real(8), intent(out) :: vclijji(nstsv,nstsv,nkpt) ! local variables integer recl,iostat ! determine record length inquire(iolength=recl) vclijji !$OMP CRITICAL open(95,file='VCLIJJI.OUT',action='READ',form='UNFORMATTED',access='DIRECT', & recl=recl,iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(getvclijji): error opening file VCLIJJI.OUT")') write(*,*) stop end if read(95,rec=ikp) vclijji close(95) !$OMP END CRITICAL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hmldbse.f900000644002504400250440000000005012337331324016135 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hmldbse.f900000644002504400250440000000112112337331324016674 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hmldbse use modmain use modmpi implicit none ! local variables integer ik2 !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik2=1,nkptnr ! distribute among MPI processes if (mod(ik2-1,np_mpi).ne.lp_mpi) cycle !$OMP CRITICAL write(*,'("Info(hmldbse): ",I6," of ",I6," k-points")') ik2,nkptnr !$OMP END CRITICAL call hmldbsek(ik2) end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/moment.f900000644002504400250440000000005012337331322016014 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/moment.f900000644002504400250440000000272012337331322016561 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: moment ! !INTERFACE: subroutine moment ! !USES: use modmain use modtest ! !DESCRIPTION: ! Computes the muffin-tin, interstitial and total moments by integrating the ! magnetisation. ! ! !REVISION HISTORY: ! Created January 2005 (JKD) !EOP !BOC implicit none ! local variables integer idm,is,ias,ir real(8) t1 ! automatic arrays real(8) fr(nrmtmax),gr(nrmtmax) ! external functions real(8) ddot external ddot if (.not.spinpol) then mommt(:,:)=0.d0 mommttot(:)=0.d0 momir(:)=0.d0 momtot(:)=0.d0 return end if ! find the muffin-tin moments mommttot(:)=0.d0 do idm=1,ndmag do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) fr(ir)=magmt(1,ir,ias,idm)*spr(ir,is)**2 end do call fderiv(-1,nrmt(is),spr(:,is),fr,gr) mommt(idm,ias)=fourpi*y00*gr(nrmt(is)) mommttot(idm)=mommttot(idm)+mommt(idm,ias) end do end do ! find the interstitial moments do idm=1,ndmag t1=ddot(ngtot,magir(:,idm),1,cfunir,1) momir(idm)=t1*omega/dble(ngtot) end do momtot(:)=mommttot(:)+momir(:) ! write total moment to test file call writetest(450,'total moment',nv=ndmag,tol=2.d-2,rva=momtot) ! total moment magnitude if (ncmag) then momtotm=sqrt(momtot(1)**2+momtot(2)**2+momtot(3)**2) else momtotm=abs(momtot(1)) end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/exxengyk.f900000644002504400250440000000005012337331323016360 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/exxengyk.f900000644002504400250440000001360212337331323017126 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine exxengyk(ikp) use modmain implicit none ! arguments integer, intent(in) :: ikp ! local variables integer jkp,ik,jk integer nst1,nst2,ist,jst integer is,ia,ias,nrc,nrci integer iv(3),ig,iq,igq0,m real(8) cfq,v(3),t1 complex(8) zrho0,z1 ! automatic arrays integer idx(nstsv) ! allocatable arrays real(8), allocatable :: vgqc(:,:),gqc(:),tpgqc(:,:),jlgqr(:,:,:) complex(8), allocatable :: apwalm(:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: wfmt1(:,:,:,:,:),wfmt2(:,:,:,:,:) complex(8), allocatable :: wfir1(:,:,:),wfir2(:,:,:) complex(8), allocatable :: wfcr(:,:,:),zfmt(:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zvclmt(:,:,:),zvclir(:) ! external functions complex(8) zfinp,zfmtinp external zfinp,zfmtinp ! allocate local arrays allocate(vgqc(3,ngvec),gqc(ngvec),tpgqc(2,ngvec)) allocate(jlgqr(0:lnpsd,ngvec,nspecies)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(ylmgq(lmmaxvr,ngvec),sfacgq(ngvec,natmtot)) allocate(wfmt2(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir2(ngtot,nspinor,nstsv)) allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot),zrhoir(ngtot)) allocate(zvclmt(lmmaxvr,nrcmtmax,natmtot),zvclir(ngtot)) ! coefficient for long-range term cfq=0.5d0*(omega/pi)**2 ! get the eigenvectors from file for input k-point call getevecfv(vkl(:,ikp),vgkl(:,:,:,ikp),evecfv) call getevecsv(vkl(:,ikp),evecsv) ! find the matching coefficients call match(ngk(1,ikp),gkc(:,1,ikp),tpgkc(:,:,1,ikp),sfacgk(:,:,1,ikp),apwalm) ! equivalent reduced input k-point jkp=ikmap(ivk(1,ikp),ivk(2,ikp),ivk(3,ikp)) ! count and index the occupied states nst1=0 do ist=1,nstsv if (evalsv(ist,jkp).lt.efermi) then nst1=nst1+1 idx(nst1)=ist end if end do ! calculate the wavefunctions for occupied states of the input k-point allocate(wfmt1(lmmaxvr,nrcmtmax,natmtot,nspinor,nst1)) allocate(wfir1(ngtot,nspinor,nst1)) call genwfsv(.false.,.false.,nst1,idx,ngk(1,ikp),igkig(:,1,ikp),apwalm,evecfv, & evecsv,wfmt1,ngtot,wfir1) ! start loop over non-reduced k-point set do ik=1,nkptnr ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! determine q-vector iv(:)=ivk(:,ikp)-ivk(:,ik) iv(:)=modulo(iv(:),ngridk(:)) iq=iqmap(iv(1),iv(2),iv(3)) v(:)=vkc(:,ikp)-vkc(:,ik) do ig=1,ngvec ! determine the G+q-vectors vgqc(:,ig)=vgc(:,ig)+v(:) ! G+q-vector length and (theta, phi) coordinates call sphcrd(vgqc(:,ig),gqc(ig),tpgqc(:,ig)) ! spherical harmonics for G+q-vectors call genylm(lmaxvr,tpgqc(:,ig),ylmgq(:,ig)) end do ! structure factors for G+q call gensfacgp(ngvec,vgqc,ngvec,sfacgq) ! find the shortest G+q-vector call findigp0(ngvec,gqc,igq0) ! compute the required spherical Bessel functions call genjlgpr(lnpsd,gqc,jlgqr) ! find the matching coefficients call match(ngk(1,ik),gkc(:,1,ik),tpgkc(:,:,1,ik),sfacgk(:,:,1,ik),apwalm) ! get the eigenvectors from file for non-reduced k-points call getevecfv(vkl(:,ik),vgkl(:,:,1,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! count and index the occupied states nst2=0 do jst=1,nstsv if (evalsv(jst,jk).lt.efermi) then nst2=nst2+1 idx(nst2)=jst end if end do ! calculate the wavefunctions for occupied states call genwfsv(.false.,.false.,nst2,idx,ngk(1,ik),igkig(:,1,ik),apwalm,evecfv, & evecsv,wfmt2,ngtot,wfir2) !--------------------------------------------! ! valence-valence-valence contribution ! !--------------------------------------------! do jst=1,nst2 do ist=1,nst1 ! calculate the complex overlap density call genzrho(.true.,.true.,wfmt2(:,:,:,:,jst),wfir2(:,:,jst), & wfmt1(:,:,:,:,ist),wfir1(:,:,ist),zrhomt,zrhoir) ! calculate the Coulomb potential call genzvclmt(nrcmt,nrcmtinr,nrcmtmax,rcmt,nrcmtmax,zrhomt,zvclmt) call zpotcoul(nrcmt,nrcmtinr,nrcmtmax,rcmt,igq0,gqc,jlgqr,ylmgq,sfacgq, & zrhoir,nrcmtmax,zvclmt,zvclir,zrho0) z1=zfinp(.true.,zrhomt,zrhoir,zvclmt,zvclir) t1=cfq*wiq2(iq)*(dble(zrho0)**2+aimag(zrho0)**2) !$OMP ATOMIC engyx=engyx-0.5d0*occmax*wkpt(ikp)*(wkptnr*dble(z1)+t1) end do end do ! end loop over non-reduced k-point set end do deallocate(vgqc,gqc,tpgqc,jlgqr) deallocate(evecfv,evecsv) deallocate(apwalm,ylmgq,sfacgq) deallocate(wfmt2,wfir2) !-----------------------------------------! ! valence-core-valence contribution ! !-----------------------------------------! allocate(wfcr(lmmaxvr,nrcmtmax,2),zfmt(lmmaxvr,nrcmtmax)) ! begin loops over atoms and species do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) do jst=1,spnst(is) if (spcore(jst,is)) then do m=-spk(jst,is),spk(jst,is)-1 ! pass m-1/2 to wavefcr call wavefcr(.false.,lradstp,is,ia,jst,m,nrcmtmax,wfcr) do ist=1,nst1 ! calculate the complex overlap density in spherical harmonics if (spinpol) then call zfmtmul2(nrc,nrci,wfcr(:,:,1),wfcr(:,:,2), & wfmt1(:,:,ias,1,ist),wfmt1(:,:,ias,2,ist),zfmt) else call zfmtmul1(nrc,nrci,wfcr(:,:,1),wfmt1(:,:,ias,1,ist),zfmt) end if call zfsht(nrc,nrci,zfmt,zrhomt(:,:,ias)) ! calculate the Coulomb potential call zpotclmt(nrc,nrci,rcmt(:,is),zrhomt(:,:,ias),zvclmt(:,:,ias)) z1=zfmtinp(.true.,nrc,nrci,rcmt(:,is),zrhomt(:,:,ias), & zvclmt(:,:,ias)) !$OMP ATOMIC engyx=engyx-occmax*wkpt(ikp)*dble(z1) end do ! end loop over m end do ! end loop over jst end if end do ! end loops over atoms and species end do end do deallocate(wfmt1,wfir1,wfcr,zfmt) deallocate(zrhomt,zrhoir,zvclmt,zvclir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/vclcore.f900000644002504400250440000000005012337331324016154 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/vclcore.f900000644002504400250440000000455212337331324016726 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine vclcore(wfmt,vmat) use modmain implicit none ! arguments complex(8), intent(in) :: wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv) complex(8), intent(inout) :: vmat(nstsv,nstsv) ! local variables integer ist1,ist2,ist3,m integer is,ia,ias,nrc,nrci complex(8) z1 ! allocatable arrays complex(8), allocatable :: zrhomt(:,:,:) complex(8), allocatable :: wfcr(:,:,:),zfmt(:,:) ! external functions complex(8) zfmtinp external zfmtinp allocate(zrhomt(lmmaxvr,nrcmtmax,nstsv)) allocate(wfcr(lmmaxvr,nrcmtmax,2)) vmat(:,:)=0.d0 do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) do ist3=1,spnst(is) if (spcore(ist3,is)) then do m=-spk(ist3,is),spk(ist3,is)-1 ! pass m-1/2 to wavefcr call wavefcr(.false.,lradstp,is,ia,ist3,m,nrcmtmax,wfcr) !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(zfmt) !$OMP DO do ist1=1,nstsv allocate(zfmt(lmmaxvr,nrcmtmax)) ! calculate the complex overlap density in spherical harmonics if (spinpol) then call zfmtmul2(nrc,nrci,wfcr(:,:,1),wfcr(:,:,2), & wfmt(:,:,ias,1,ist1),wfmt(:,:,ias,2,ist1),zfmt) else call zfmtmul1(nrc,nrci,wfcr(:,:,1),wfmt(:,:,ias,1,ist1),zfmt) end if call zfsht(nrc,nrci,zfmt,zrhomt(:,:,ist1)) deallocate(zfmt) end do !$OMP END DO !$OMP END PARALLEL !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(zfmt,ist1,z1) !$OMP DO do ist2=1,nstsv allocate(zfmt(lmmaxvr,nrcmtmax)) call zpotclmt(nrc,nrci,rcmt(:,is),zrhomt(:,:,ist2),zfmt) do ist1=1,ist2 z1=zfmtinp(.true.,nrc,nrci,rcmt(:,is),zrhomt(:,:,ist1),zfmt) !$OMP ATOMIC vmat(ist1,ist2)=vmat(ist1,ist2)-z1 end do deallocate(zfmt) end do !$OMP END DO !$OMP END PARALLEL end do end if end do end do end do ! set the lower triangular part of the matrix do ist1=1,nstsv do ist2=1,ist1-1 vmat(ist1,ist2)=conjg(vmat(ist2,ist1)) end do end do ! scale the Coulomb matrix elements in the case of a hybrid functional if (hybrid) vmat(:,:)=hybridc*vmat(:,:) deallocate(zrhomt,wfcr) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rfirvec.f900000644002504400250440000000005012337331324016157 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rfirvec.f900000644002504400250440000000321212337331324016721 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. real(8) function rfirvec(ngridp,ainv,vc,rfir) implicit none ! arguments integer, intent(in) :: ngridp(3) real(8), intent(in) :: ainv(3,3) real(8), intent(in) :: vc(3) real(8), intent(in) :: rfir(ngridp(1),ngridp(2),ngridp(3)) ! local variables integer i1,i2,i3,j1,j2,j3 real(8), parameter :: eps=1.d-6 real(8) v1,v2,v3,p1,p2,p3,q1,q2,q3 real(8) f00,f01,f10,f11,f0,f1 ! input vector in lattice coordinates v1=ainv(1,1)*vc(1)+ainv(1,2)*vc(2)+ainv(1,3)*vc(3) v2=ainv(2,1)*vc(1)+ainv(2,2)*vc(2)+ainv(2,3)*vc(3) v3=ainv(3,1)*vc(1)+ainv(3,2)*vc(2)+ainv(3,3)*vc(3) ! map lattice coordinates to [0,1) interval i1=floor(v1); i2=floor(v2); i3=floor(v3) v1=v1-i1; v2=v2-i2; v3=v3-i3 if ((1.d0-v1).lt.eps) v1=v1+1.d0 if ((1.d0-v2).lt.eps) v2=v2+1.d0 if ((1.d0-v3).lt.eps) v3=v3+1.d0 if (v1.lt.eps) v1=0.d0 if (v2.lt.eps) v2=0.d0 if (v3.lt.eps) v3=0.d0 ! determine coordinates on grid v1=ngridp(1)*v1; v2=ngridp(2)*v2; v3=ngridp(3)*v3 i1=int(v1); i2=int(v2); i3=int(v3) ! use trilinear interpolation with neighbouring points p1=v1-i1; p2=v2-i2; p3=v3-i3 q1=1.d0-p1; q2=1.d0-p2; q3=1.d0-p3 i1=modulo(i1,ngridp(1))+1 i2=modulo(i2,ngridp(2))+1 i3=modulo(i3,ngridp(3))+1 j1=modulo(i1+1,ngridp(1))+1 j2=modulo(i2+1,ngridp(2))+1 j3=modulo(i3+1,ngridp(3))+1 f00=rfir(i1,i2,i3)*q1+rfir(j1,i2,i3)*p1 f01=rfir(i1,i2,j3)*q1+rfir(j1,i2,j3)*p1 f10=rfir(i1,j2,i3)*q1+rfir(j1,j2,i3)*p1 f11=rfir(i1,j2,j3)*q1+rfir(j1,j2,j3)*p1 f0=f00*q2+f10*p2 f1=f01*q2+f11*p2 rfirvec=f0*q3+f1*p3 return end function elk-2.3.22/src/PaxHeaders.22528/writeengy.f900000644002504400250440000000005012337331323016533 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writeengy.f900000644002504400250440000000306712337331323017305 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine writeengy(fnum) use modmain use moddftu implicit none ! arguments integer, intent(in) :: fnum write(fnum,*) write(fnum,'("Energies :")') write(fnum,'(" Fermi",T30,": ",G22.12)') efermi write(fnum,'(" sum of eigenvalues",T30,": ",G22.12)') evalsum write(fnum,'(" electron kinetic",T30,": ",G22.12)') engykn write(fnum,'(" core electron kinetic",T30,": ",G22.12)') engykncr write(fnum,'(" Coulomb",T30,": ",G22.12)') engycl write(fnum,'(" Coulomb potential",T30,": ",G22.12)') engyvcl write(fnum,'(" nuclear-nuclear",T30,": ",G22.12)') engynn write(fnum,'(" electron-nuclear",T30,": ",G22.12)') engyen write(fnum,'(" Hartree",T30,": ",G22.12)') engyhar write(fnum,'(" Madelung",T30,": ",G22.12)') engymad write(fnum,'(" xc potential",T30,": ",G22.12)') engyvxc if (spinpol) then write(fnum,'(" xc effective B-field",T30,": ",G22.12)') engybxc write(fnum,'(" external B-field",T30,": ",G22.12)') engybext end if write(fnum,'(" exchange",T30,": ",G22.12)') engyx write(fnum,'(" correlation",T30,": ",G22.12)') engyc if (dftu.ne.0) then write(fnum,'(" DFT+U",T30,": ",G22.12)') engydu end if if (stype.eq.3) then write(fnum,'(" electron entropic",T30,": ",G22.12)') engyts end if write(fnum,'(" total energy",T30,": ",G22.12)') engytot if (spinpol) then write(fnum,'(" (external B-field energy excluded from total)")') end if call flushifc(fnum) return end subroutine elk-2.3.22/src/PaxHeaders.22528/lopzflm.f900000644002504400250440000000005012337331323016201 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/lopzflm.f900000644002504400250440000000375512337331323016757 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: lopzflm ! !INTERFACE: subroutine lopzflm(lmax,zflm,ld,zlflm) ! !INPUT/OUTPUT PARAMETERS: ! lmax : maximum angular momentum (in,integer) ! zflm : coefficients of input spherical harmonic expansion ! (in,complex((lmax+1)**2)) ! ld : leading dimension (in,integer) ! zlflm : coefficients of output spherical harmonic expansion ! (out,complex(ld,3)) ! !DESCRIPTION: ! Applies the angular momentum operator $\hat{\bf L}$ to a function expanded ! in terms of complex spherical harmonics. This makes use of the identities ! \begin{align*} ! (L_x+iL_y)Y_{lm}(\theta,\phi)&=\sqrt{(l-m)(l+m+1)}Y_{lm+1}(\theta,\phi)\\ ! (L_x-iL_y)Y_{lm}(\theta,\phi)&=\sqrt{(l+m)(l-m+1)}Y_{lm-1}(\theta,\phi)\\ ! L_zY_{lm}(\theta,\phi)&=mY_{lm}(\theta,\phi). ! \end{align*} ! ! !REVISION HISTORY: ! Created March 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: lmax complex(8), intent(in) :: zflm(*) integer, intent(in) :: ld complex(8), intent(out) :: zlflm(ld,3) ! local variables integer l,m,lm real(8) t1 complex(8) z1 if (lmax.lt.0) then write(*,*) write(*,'("Error(lopzflm): lmax < 0 : ",I8)') lmax write(*,*) stop end if lm=0 do l=0,lmax do m=-l,l lm=lm+1 if (m.eq.-l) then zlflm(lm,1)=0.d0 zlflm(lm,2)=0.d0 end if if (m.lt.l) then t1=0.5d0*sqrt(dble((l-m)*(l+m+1))) z1=t1*zflm(lm) zlflm(lm+1,1)=z1 zlflm(lm+1,2)=cmplx(aimag(z1),-dble(z1),8) end if if (m.gt.-l) then t1=0.5d0*sqrt(dble((l+m)*(l-m+1))) z1=t1*zflm(lm) zlflm(lm-1,1)=zlflm(lm-1,1)+z1 zlflm(lm-1,2)=zlflm(lm-1,2)+cmplx(-aimag(z1),dble(z1),8) end if if (m.ne.0) then zlflm(lm,3)=dble(m)*zflm(lm) else zlflm(lm,3)=0.d0 end if end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/geomopt.f900000644002504400250440000000005012337331323016170 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/geomopt.f900000644002504400250440000001352512337331323016742 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine geomopt use modmain use modmpi use modstore implicit none ! local variables integer istp,jstp,i real(8) ds ! store original rmtdelta (minimum distance between muffin-tin surfaces) rmtdelta0=rmtdelta ! make rmtdelta large enough to accomodate changes in atomic positions rmtdelta=0.1d0 ! enable form factor damping ffdamp0=ffdamp ffdamp=.true. ! initialise global variables (and the muffin-tin radii) call init0 ! make rmtdelta small so the muffin-tin radii are not subsequently adjusted rmtdelta=0.01d0 ! store orginal volume omega0=omega ! atomic forces are required tforce=.true. if (task.eq.3) then trdstate=.true. else trdstate=.false. end if ! initial atomic step sizes if (allocated(tauatp)) deallocate(tauatp) allocate(tauatp(natmtot)) tauatp(:)=tau0atp ! initialise the previous total force on each atom if (allocated(forcetotp)) deallocate(forcetotp) allocate(forcetotp(3,natmtot)) forcetotp(:,:)=0.d0 ! initial lattice vector step size taulatv(:)=tau0latv ! initialise previous stress tensor stressp(:)=0.d0 if (mp_mpi) then ! open TOTENERGY.OUT open(71,file='TOTENERGY_OPT.OUT',action='WRITE',form='FORMATTED') ! open FORCEMAX.OUT open(72,file='FORCEMAX.OUT',action='WRITE',form='FORMATTED') ! open GEOMETRY_OPT.OUT open(73,file='GEOMETRY_OPT.OUT',action='WRITE',form='FORMATTED') ! open IADIST_OPT.OUT open(74,file='IADIST_OPT.OUT',action='WRITE',form='FORMATTED') ! open FORCES_OPT.OUT open(75,file='FORCES_OPT.OUT',action='WRITE',form='FORMATTED') ! open MOMENTM_OPT.OUT if (spinpol) then open(78,file='MOMENTM_OPT.OUT',action='WRITE',form='FORMATTED') end if ! open STRESSMAX.OUT and STRESS_OPT.OUT if required if (latvopt.ne.0) then open(86,file='STRESSMAX.OUT',action='WRITE',form='FORMATTED') open(87,file='STRESS_OPT.OUT',action='WRITE',form='FORMATTED') open(88,file='OMEGA_OPT.OUT',action='WRITE',form='FORMATTED') end if end if if (mp_mpi) write(*,*) do istp=1,maxlatvstp do jstp=1,maxatpstp if (mp_mpi) then write(*,'("Info(geomopt): Lattice and atomic position optimisation & &steps : ",2I6)') istp,jstp end if ! ground-state and forces calculation call gndstate ! check for stop signal if (tstop) goto 10 ! subsequent calculations will read in the potential from STATE.OUT trdstate=.true. ! update the atomic positions call atpstep ! write total energy, forces, atomic positions, interatomic distances to file if (mp_mpi) then write(71,'(G22.12)') engytot call flushifc(71) write(72,'(G18.10)') forcemax call flushifc(72) write(73,*); write(73,*) write(73,'("! Lattice and atomic position optimisation steps : ",2I6)') & istp,jstp call writegeom(73) call flushifc(73) write(74,*); write(74,*) write(74,'("Lattice and atomic position optimisation steps : ",2I6)') & istp,jstp call writeiad(74) call flushifc(74) write(75,*); write(75,*) write(75,'("Lattice and atomic position optimisation steps : ",2I6)') & istp,jstp call writeforces(75) write(75,*) write(75,'("Maximum force magnitude over all atoms (target) : ",G18.10,& &" (",G18.10,")")') forcemax,epsforce call flushifc(75) if (spinpol) then write(78,'(G22.12)') momtotm call flushifc(78) end if end if ! broadcast forcemax from master process to all other processes call mpi_bcast(forcemax,1,mpi_double_precision,0,mpi_comm_kpt,ierror) ! check force convergence if (forcemax.le.epsforce) then if (mp_mpi) then write(75,*) write(75,'("Force convergence target achieved")') end if exit end if if ((jstp.eq.maxatpstp).and.mp_mpi) then write(*,*) write(*,'("Warning(geomopt): atomic position optimisation failed to & &converge in ",I6," steps")') maxatpstp end if ! store the current forces array forcetotp(:,:)=forcetot(:,:) ! end loop over atomic position optimisation end do ! exit lattice optimisation loop if required if (latvopt.eq.0) exit ! generate the stress tensor call genstress ! check for stop signal if (tstop) goto 10 ! update the lattice vectors call latvstep ! write stress tensor components and maximum magnitude to file if (mp_mpi) then write(86,'(G18.10)') stressmax call flushifc(86) write(87,*) write(87,'("Lattice vector optimisation step : ",I6)') istp write(87,'("Derivative of total energy w.r.t. strain tensors :")') do i=1,nstrain write(87,'(G18.10)') stress(i) end do call flushifc(87) write(88,'(G18.10)') omega call flushifc(88) end if ! check for stress convergence; stress may be non-zero because of volume ! constraint; checking change in stress tensor components instead ds=sum(abs(stress(1:nstrain)-stressp(1:nstrain))) ! broadcase ds from master process to all other processes call mpi_bcast(ds,1,mpi_double_precision,0,mpi_comm_kpt,ierror) if ((istp.ge.3).and.(ds.le.epsstress*tau0latv)) then if (mp_mpi) then write(87,*) write(87,'("Stress convergence target achieved")') end if exit end if if ((istp.eq.maxlatvstp).and.mp_mpi) then write(*,*) write(*,'("Warning(geomopt): lattice vector optimisation failed to & &converge in ",I6," steps")') maxlatvstp end if stressp(1:nstrain)=stress(1:nstrain) ! end loop over lattice optimisation end do 10 continue if (mp_mpi) then close(71); close(72); close(73); close(74); close(75) if (spinpol) close(78) if (latvopt.ne.0) then close(86); close(87); close(88) end if end if ! ground-state should be run again after lattice vector optimisation if (latvopt.ne.0) call gndstate ! restore original parameters rmtdelta=rmtdelta0 ffdamp=ffdamp0 return end subroutine elk-2.3.22/src/PaxHeaders.22528/r3mtm.f900000644002504400250440000000005012337331323015560 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/r3mtm.f900000644002504400250440000000214512337331323016326 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3mtm ! !INTERFACE: subroutine r3mtm(a,b,c) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix 1 (in,real(3,3)) ! b : input matrix 2 (in,real(3,3)) ! c : output matrix (out,real(3,3)) ! !DESCRIPTION: ! Multiplies the transpose of one real $3\times 3$ matrix with another. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3),b(3,3) real(8), intent(out) :: c(3,3) c(1,1)=a(1,1)*b(1,1)+a(2,1)*b(2,1)+a(3,1)*b(3,1) c(2,1)=a(1,2)*b(1,1)+a(2,2)*b(2,1)+a(3,2)*b(3,1) c(3,1)=a(1,3)*b(1,1)+a(2,3)*b(2,1)+a(3,3)*b(3,1) c(1,2)=a(1,1)*b(1,2)+a(2,1)*b(2,2)+a(3,1)*b(3,2) c(2,2)=a(1,2)*b(1,2)+a(2,2)*b(2,2)+a(3,2)*b(3,2) c(3,2)=a(1,3)*b(1,2)+a(2,3)*b(2,2)+a(3,3)*b(3,2) c(1,3)=a(1,1)*b(1,3)+a(2,1)*b(2,3)+a(3,1)*b(3,3) c(2,3)=a(1,2)*b(1,3)+a(2,2)*b(2,3)+a(3,2)*b(3,3) c(3,3)=a(1,3)*b(1,3)+a(2,3)*b(2,3)+a(3,3)*b(3,3) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/readspecies.f900000644002504400250440000000005012337331323017005 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/readspecies.f900000644002504400250440000001764112337331323017562 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readspecies use modmain implicit none ! local variables integer is,ist,iostat integer io,nlx,ilx,lx,ilo e0min=0.d0 do is=1,nspecies open(50,file=trim(sppath)//trim(spfname(is)),action='READ',status='OLD', & form='FORMATTED',iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(readspecies): error opening species file ",A)') & trim(sppath)//trim(spfname(is)) write(*,*) stop end if read(50,*) spsymb(is) read(50,*) spname(is) read(50,*) spzn(is) read(50,*) spmass(is) read(50,*) sprmin(is),rmt(is),sprmax(is),nrmt(is) if (sprmin(is).le.0.d0) then write(*,*) write(*,'("Error(readspecies): sprmin <= 0 : ",G18.10)') sprmin(is) write(*,'(" for species ",I4)') is write(*,*) stop end if if (rmt(is).le.sprmin(is)) then write(*,*) write(*,'("Error(readspecies): rmt <= sprmin : ",2G18.10)') rmt(is), & sprmin(is) write(*,'(" for species ",I4)') is write(*,*) stop end if if (sprmax(is).lt.rmt(is)) then write(*,*) write(*,'("Error(readspecies): sprmax < rmt : ",2G18.10)') sprmax(is), & rmt(is) write(*,*) stop end if if (nrmt(is).lt.20) then write(*,*) write(*,'("Error(readspecies): nrmt too small : ",I8)') nrmt(is) write(*,'(" for species ",I4)') is write(*,*) stop end if ! multiply nrmt by the scale factor nrmt(is)=nrmt(is)*nrmtscf ! reduce the minimum radial mesh point by the same factor sprmin(is)=sprmin(is)/dble(nrmtscf) read(50,*) spnst(is) if ((spnst(is).le.0).or.(spnst(is).gt.maxspst)) then write(*,*) write(*,'("Error(readspecies): spnst out of range : ",I8)') spnst(is) write(*,'(" for species ",I4)') is write(*,*) stop end if do ist=1,spnst(is) read(50,*) spn(ist,is),spl(ist,is),spk(ist,is),spocc(ist,is),spcore(ist,is) if (spn(ist,is).lt.1) then write(*,*) write(*,'("Error(readspecies): spn < 1 : ",I8)') spn(ist,is) write(*,'(" for species ",I4)') is write(*,'(" and state ",I4)') ist write(*,*) stop end if if (spl(ist,is).lt.0) then write(*,*) write(*,'("Error(readspecies): spl < 0 : ",I8)') spl(ist,is) write(*,'(" for species ",I4)') is write(*,'(" and state ",I4)') ist write(*,*) stop end if if (spk(ist,is).lt.1) then write(*,*) write(*,'("Error(readspecies): spk < 1 : ",I8)') spk(ist,is) write(*,'(" for species ",I4)') is write(*,'(" and state ",I4)') ist write(*,*) stop end if if (spocc(ist,is).lt.0.d0) then write(*,*) write(*,'("Error(readspecies): spocc < 0 : ",G18.10)') spocc(ist,is) write(*,'(" for species ",I4)') is write(*,'(" and state ",I4)') ist write(*,*) stop end if end do read(50,*) apword(0,is) if (apword(0,is).le.0) then write(*,*) write(*,'("Error(readspecies): apword <= 0 : ",I8)') apword(0,is) write(*,'(" for species ",I4)') is write(*,*) stop end if if (apword(0,is).gt.maxapword) then write(*,*) write(*,'("Error(readspecies): apword too large : ",I8)') apword(0,is) write(*,'(" for species ",I4)') is write(*,'("Adjust maxapword in modmain and recompile code")') write(*,*) stop end if ! set the APW orders for l>0 apword(1:lmaxapw,is)=apword(0,is) do io=1,apword(0,is) read(50,*) apwe0(io,0,is),apwdm(io,0,is),apwve(io,0,is) if (apwdm(io,0,is).lt.0) then write(*,*) write(*,'("Error(readspecies): apwdm < 0 : ",I8)') apwdm(io,0,is) write(*,'(" for species ",I4)') is write(*,'(" and order ",I4)') io write(*,*) stop end if ! set the APW linearisation energies, derivative orders and variability for l>0 apwe0(io,1:lmaxapw,is)=apwe0(io,0,is) apwdm(io,1:lmaxapw,is)=apwdm(io,0,is) apwve(io,1:lmaxapw,is)=apwve(io,0,is) e0min=min(e0min,apwe0(io,0,is)) end do read(50,*) nlx if (nlx.lt.0) then write(*,*) write(*,'("Error(readspecies): nlx < 0 : ",I8)') nlx write(*,'(" for species ",I4)') is write(*,*) stop end if do ilx=1,nlx read(50,*) lx,io if (lx.lt.0) then write(*,*) write(*,'("Error(readspecies): lx < 0 : ",I8)') lx write(*,'(" for species ",I4)') is write(*,'(" and exception number ",I4)') ilx write(*,*) stop end if if (lx.gt.lmaxapw) then write(*,*) write(*,'("Error(readspecies): lx > lmaxapw : ",I8)') lx write(*,'(" for species ",I4)') is write(*,'(" and exception number ",I4)') ilx write(*,*) stop end if apword(lx,is)=io if (apword(lx,is).le.0) then write(*,*) write(*,'("Error(readspecies): apword <= 0 : ",I8)') apword(lx,is) write(*,'(" for species ",I4)') is write(*,'(" and exception number ",I4)') ilx write(*,*) stop end if if (apword(lx,is).gt.maxapword) then write(*,*) write(*,'("Error(readspecies): apword too large : ",I8)') apword(lx,is) write(*,'(" for species ",I4)') is write(*,'(" and exception number ",I4)') ilx write(*,'("Adjust maxapword in modmain and recompile code")') write(*,*) stop end if do io=1,apword(lx,is) read(50,*) apwe0(io,lx,is),apwdm(io,lx,is),apwve(io,lx,is) if (apwdm(io,lx,is).lt.0) then write(*,*) write(*,'("Error(readspecies): apwdm < 0 : ",I8)') apwdm(io,lx,is) write(*,'(" for species ",I4)') is write(*,'(" exception number ",I4)') ilx write(*,'(" and order ",I4)') io write(*,*) stop end if e0min=min(e0min,apwe0(io,lx,is)) end do end do read(50,*) nlorb(is) if (nlorb(is).lt.0) then write(*,*) write(*,'("Error(readspecies): nlorb < 0 : ",I8)') nlorb(is) write(*,'(" for species ",I4)') is write(*,*) stop end if if (nlorb(is).gt.maxlorb) then write(*,*) write(*,'("Error(readspecies): nlorb too large : ",I8)') nlorb(is) write(*,'(" for species ",I4)') is write(*,'("Adjust maxlorb in modmain and recompile code")') write(*,*) stop end if do ilo=1,nlorb(is) read(50,*) lorbl(ilo,is),lorbord(ilo,is) if (lorbl(ilo,is).lt.0) then write(*,*) write(*,'("Error(readspecies): lorbl < 0 : ",I8)') lorbl(ilo,is) write(*,'(" for species ",I4)') is write(*,'(" and local-orbital ",I4)') ilo write(*,*) stop end if if (lorbl(ilo,is).gt.lmaxmat) then write(*,*) write(*,'("Error(readspecies): lorbl > lmaxmat : ",2I8)') lorbl(ilo,is), & lmaxmat write(*,'(" for species ",I4)') is write(*,'(" and local-orbital ",I4)') ilo write(*,*) stop end if if (lorbord(ilo,is).lt.2) then write(*,*) write(*,'("Error(readspecies): lorbord < 2 : ",I8)') lorbord(ilo,is) write(*,'(" for species ",I4)') is write(*,'(" and local-orbital ",I4)') ilo write(*,*) stop end if if (lorbord(ilo,is).gt.maxlorbord) then write(*,*) write(*,'("Error(readspecies): lorbord too large : ",I8)') lorbord(ilo,is) write(*,'(" for species ",I4)') is write(*,'(" and local-orbital ",I4)') ilo write(*,'("Adjust maxlorbord in modmain and recompile code")') write(*,*) stop end if do io=1,lorbord(ilo,is) read(50,*) lorbe0(io,ilo,is),lorbdm(io,ilo,is),lorbve(io,ilo,is) if (lorbdm(io,ilo,is).lt.0) then write(*,*) write(*,'("Error(readspecies): lorbdm < 0 : ",I8)') lorbdm(io,ilo,is) write(*,'(" for species ",I4)') is write(*,'(" local-orbital ",I4)') ilo write(*,'(" and order ",I4)') io write(*,*) stop end if e0min=min(e0min,lorbe0(io,ilo,is)) end do end do close(50) end do ! add conduction state local-orbitals if required call addlorbcnd return end subroutine elk-2.3.22/src/PaxHeaders.22528/mixpulay.f900000644002504400250440000000005012337331323016366 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mixpulay.f900000644002504400250440000000520212337331323017131 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 S. Suehara. This file is distributed under the terms of the ! GNU Lesser General Public License. See the file COPYING for license details. !BOP ! !ROUTINE: mixpulay ! !INTERFACE: subroutine mixpulay(iscl,n,msd,nu,mu,f,d) ! !INPUT/OUTPUT PARAMETERS: ! iscl : self-consistent loop number (in,integer) ! n : vector length (in,integer) ! msd : maximum subspace dimension (in,integer) ! nu : current output vector as well as the next input vector of the ! self-consistent loop (inout,real(n)) ! mu : used internally (inout,real(n,msd)) ! f : used internally (inout,real(n,msd)) ! d : RMS difference between old and new output vectors (out,real) ! !DESCRIPTION: ! Pulay's mixing scheme which uses direct inversion in the iterative subspace ! (DIIS). See {\it Chem. Phys. Lett.} {\bf 73}, 393 (1980). ! ! !REVISION HISTORY: ! Created October 2008 (S. Suehara, NIMS) ! Modified, October 2008 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: iscl integer, intent(in) :: n integer, intent(in) :: msd real(8), intent(inout) :: nu(n) real(8), intent(inout) :: mu(n,msd) real(8), intent(inout) :: f(n,msd) real(8), intent(out) :: d ! local variables integer jc,jn,i,j,m,info ! initial mixing parameter real(8), parameter :: beta=0.25d0 ! allocatable arrays integer, allocatable :: ipiv(:) real(8), allocatable :: alpha(:),a(:,:),work(:) ! external functions real(8) ddot external ddot if (n.lt.1) then write(*,*) write(*,'("Error(mixpulay): n < 1 : ",I8)') n write(*,*) stop end if if (msd.lt.2) then write(*,*) write(*,'("Error(mixpulay): msd < 2 : ",I8)') msd write(*,*) stop end if if (iscl.le.0) then mu(:,1)=nu(:) f(:,1)=0.d0 d=1.d0 return end if if (iscl.le.(msd-1)) then nu(:)=beta*nu(:)+(1.d0-beta)*mu(:,iscl) f(:,iscl+1)=nu(:)-mu(:,iscl) mu(:,iscl+1)=nu(:) d=sum(f(:,iscl+1)**2) d=sqrt(d/dble(n)) return end if ! current index jc=mod(iscl,msd)+1 ! next index jn=mod(iscl+1,msd)+1 ! matrix size m=min(iscl+1,msd)+1 allocate(ipiv(m),alpha(m),a(m,m),work(m)) ! compute f and RMS difference f(:,jc)=nu(:)-mu(:,jc) d=sum(f(:,jc)**2) d=sqrt(d/dble(n)) ! solve the linear system a(:,:)=0.d0 do i=1,m-1 do j=i,m-1 a(i,j)=a(i,j)+ddot(n,f(:,i),1,f(:,j),1) end do a(i,m)=1.d0 end do alpha(:)=0.d0 alpha(m)=1.d0 call dsysv('U',m,1,a,m,ipiv,alpha,m,work,m,info) if (info.ne.0) then write(*,*) write(*,'("Error(mixpulay): could not solve linear system")') write(*,'(" DSYSV returned INFO = ",I8)') info write(*,*) stop end if nu(:)=0.d0 do i=1,m-1 nu(:)=nu(:)+alpha(i)*(mu(:,i)+f(:,i)) end do mu(:,jn)=nu(:) deallocate(ipiv,alpha,a,work) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/oepvclk.f900000644002504400250440000000005012337331324016162 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/oepvclk.f900000644002504400250440000002327212337331324016734 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine oepvclk(ikp,vclcv,vclvv) use modmain implicit none ! arguments integer, intent(in) :: ikp complex(8), intent(out) :: vclcv(ncrmax,natmtot,nstsv) complex(8), intent(out) :: vclvv(nstsv,nstsv) ! local variables integer ik,jk,nst,ist1,ist2,ist3 integer is,ia,ias,nrc,nrci integer iv(3),ig,iq,igq0 integer ic,jc,m1,m2 real(8) v(3),cfq complex(8) zrho01,zrho02,z1,z2 ! automatic arrays integer idx(nstsv) complex(8) sfacgq0(natmtot) ! allocatable arrays real(8), allocatable :: vgqc(:,:),tpgqc(:,:),gqc(:) real(8), allocatable :: jlgqr(:,:,:),jlgq0r(:,:,:) complex(8), allocatable :: apwalm(:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: wfmt1(:,:,:,:,:),wfmt2(:,:,:,:,:) complex(8), allocatable :: wfir1(:,:,:),wfir2(:,:,:) complex(8), allocatable :: wfcr1(:,:,:),wfcr2(:,:,:) complex(8), allocatable :: zrhomt1(:,:,:,:),zrhomt2(:,:,:),zrhoir1(:,:) complex(8), allocatable :: zvclmt(:,:,:),zvclir(:),zfmt(:,:) ! external functions complex(8) zfinp,zfmtinp external zfinp,zfmtinp ! allocate local arrays allocate(vgqc(3,ngvec),tpgqc(2,ngvec),gqc(ngvec)) allocate(jlgqr(0:lnpsd,ngvec,nspecies),jlgq0r(0:lmaxvr,nrcmtmax,nspecies)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(ylmgq(lmmaxvr,ngvec),sfacgq(ngvec,natmtot)) allocate(wfmt1(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfmt2(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir1(ngtot,nspinor,nstsv),wfir2(ngtot,nspinor,nstsv)) allocate(wfcr1(lmmaxvr,nrcmtmax,2),wfcr2(lmmaxvr,nrcmtmax,2)) allocate(zrhomt1(lmmaxvr,nrcmtmax,natmtot,nstsv)) allocate(zrhomt2(lmmaxvr,nrcmtmax,nstcr)) allocate(zrhoir1(ngtot,nstsv)) allocate(zvclmt(lmmaxvr,nrcmtmax,natmtot),zvclir(ngtot)) allocate(zfmt(lmmaxvr,nrcmtmax)) ! factor for long-range term cfq=0.5d0*(omega/pi)**2 ! zero the Coulomb matrix elements vclcv(:,:,:)=0.d0 vclvv(:,:)=0.d0 ! get the eigenvectors from file for input k-point call getevecfv(vkl(:,ikp),vgkl(:,:,:,ikp),evecfv) call getevecsv(vkl(:,ikp),evecsv) ! find the matching coefficients call match(ngk(1,ikp),gkc(:,1,ikp),tpgkc(:,:,1,ikp),sfacgk(:,:,1,ikp),apwalm) ! index to all states do ist1=1,nstsv idx(ist1)=ist1 end do ! calculate the wavefunctions for all states of the input k-point call genwfsv(.false.,.false.,nstsv,idx,ngk(1,ikp),igkig(:,1,ikp),apwalm, & evecfv,evecsv,wfmt1,ngtot,wfir1) ! start loop over non-reduced k-point set do ik=1,nkptnr ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! determine q-vector iv(:)=ivk(:,ikp)-ivk(:,ik) iv(:)=modulo(iv(:),ngridk(:)) iq=iqmap(iv(1),iv(2),iv(3)) v(:)=vkc(:,ikp)-vkc(:,ik) do ig=1,ngvec ! determine G+q-vectors vgqc(:,ig)=vgc(:,ig)+v(:) ! G+q-vector length and (theta, phi) coordinates call sphcrd(vgqc(:,ig),gqc(ig),tpgqc(:,ig)) ! spherical harmonics for G+q-vector call genylm(lmaxvr,tpgqc(:,ig),ylmgq(:,ig)) end do ! structure factors for G+q call gensfacgp(ngvec,vgqc,ngvec,sfacgq) ! find the shortest G+q-vector call findigp0(ngvec,gqc,igq0) sfacgq0(:)=sfacgq(igq0,:) ! compute the required spherical Bessel functions call genjlgpr(lnpsd,gqc,jlgqr) call genjlgq0r(gqc(igq0),jlgq0r) ! find the matching coefficients call match(ngk(1,ik),gkc(:,1,ik),tpgkc(:,:,1,ik),sfacgk(:,:,1,ik),apwalm) ! get the eigenvectors from file for non-reduced k-points call getevecfv(vkl(:,ik),vgkl(:,:,1,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! count and index occupied states nst=0 do ist3=1,nstsv if (evalsv(ist3,jk).lt.efermi) then nst=nst+1 idx(nst)=ist3 end if end do ! calculate the wavefunctions for occupied states call genwfsv(.false.,.false.,nst,idx,ngk(1,ik),igkig(:,1,ik),apwalm,evecfv, & evecsv,wfmt2,ngtot,wfir2) do ist3=1,nst ! compute the complex overlap densities for all valence-valence states do ist1=1,nstsv call genzrho(.true.,.true.,wfmt2(:,:,:,:,ist3),wfir2(:,:,ist3), & wfmt1(:,:,:,:,ist1),wfir1(:,:,ist1),zrhomt1(:,:,:,ist1),zrhoir1(:,ist1)) end do ! compute the complex overlap densities for all valence-core states jc=0 do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) do ist1=1,spnst(is) if (spcore(ist1,is)) then do m1=-spk(ist1,is),spk(ist1,is)-1 jc=jc+1 ! pass m-1/2 to wavefcr call wavefcr(.false.,lradstp,is,ia,ist1,m1,nrcmtmax,wfcr1) if (spinpol) then call zfmtmul2(nrc,nrci,wfmt2(:,:,ias,1,ist3), & wfmt2(:,:,ias,2,ist3),wfcr1(:,:,1),wfcr1(:,:,2),zfmt) else call zfmtmul1(nrc,nrci,wfmt2(:,:,ias,1,ist3),wfcr1(:,:,1),zfmt) end if ! convert to spherical harmonics call zfsht(nrc,nrci,zfmt,zrhomt2(:,:,jc)) end do end if end do end do end do do ist2=1,nstsv if (evalsv(ist2,ikp).gt.efermi) then ! calculate the Coulomb potential call genzvclmt(nrcmt,nrcmtinr,nrcmtmax,rcmt,nrcmtmax, & zrhomt1(:,:,:,ist2),zvclmt) call zpotcoul(nrcmt,nrcmtinr,nrcmtmax,rcmt,igq0,gqc,jlgqr,ylmgq, & sfacgq,zrhoir1(:,ist2),nrcmtmax,zvclmt,zvclir,zrho02) !----------------------------------------------! ! valence-valence-valence contribution ! !----------------------------------------------! do ist1=1,nstsv if (evalsv(ist1,ikp).lt.efermi) then z1=zfinp(.true.,zrhomt1(:,:,:,ist1),zrhoir1(:,ist1),zvclmt,zvclir) ! compute the density coefficient of the smallest G+q-vector call zrhogp(jlgq0r,ylmgq(:,igq0),sfacgq0,zrhomt1(:,:,:,ist1), & zrhoir1(:,ist1),zrho01) z2=cfq*wiq2(iq)*(conjg(zrho01)*zrho02) vclvv(ist1,ist2)=vclvv(ist1,ist2)-(wkptnr*z1+z2) end if end do !-------------------------------------------! ! core-valence-valence contribution ! !-------------------------------------------! jc=0 do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) ic=0 do ist1=1,spnst(is) if (spcore(ist1,is)) then do m1=-spk(ist1,is),spk(ist1,is)-1 ic=ic+1 jc=jc+1 z1=zfmtinp(.true.,nrc,nrci,rcmt(:,is),zrhomt2(:,:,jc), & zvclmt(:,:,ias)) vclcv(ic,ias,ist2)=vclcv(ic,ias,ist2)-wkptnr*z1 end do ! end loop over ist1 end if end do ! end loops over atoms and species end do end do ! end loop over ist2 end if end do ! end loop over ist3 end do ! end loop over non-reduced k-point set end do ! begin loops over atoms and species do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) do ist3=1,spnst(is) if (spcore(ist3,is)) then do m1=-spk(ist3,is),spk(ist3,is)-1 ! pass m-1/2 to wavefcr call wavefcr(.false.,lradstp,is,ia,ist3,m1,nrcmtmax,wfcr1) ! compute the complex overlap densities for the core-valence states do ist1=1,nstsv if (spinpol) then call zfmtmul2(nrc,nrci,wfcr1(:,:,1),wfcr1(:,:,2), & wfmt1(:,:,ias,1,ist1),wfmt1(:,:,ias,2,ist1),zfmt) else call zfmtmul1(nrc,nrci,wfcr1(:,:,1),wfmt1(:,:,ias,1,ist1),zfmt) end if call zfsht(nrc,nrci,zfmt,zrhomt1(:,:,ias,ist1)) end do ! compute the complex overlap densities for the core-core states ic=0 do ist1=1,spnst(is) if (spcore(ist1,is)) then do m2=-spk(ist1,is),spk(ist1,is)-1 ic=ic+1 call wavefcr(.false.,lradstp,is,ia,ist1,m2,nrcmtmax,wfcr2) call zfmtmul2(nrc,nrci,wfcr1(:,:,1),wfcr1(:,:,2),wfcr2(:,:,1), & wfcr2(:,:,2),zfmt) call zfsht(nrc,nrci,zfmt,zrhomt2(:,:,ic)) end do end if end do do ist2=1,nstsv if (evalsv(ist2,ikp).gt.efermi) then ! calculate the Coulomb potential call zpotclmt(nrc,nrci,rcmt(:,is),zrhomt1(:,:,ias,ist2),zvclmt) !-------------------------------------------! ! valence-core-valence contribution ! !-------------------------------------------! do ist1=1,nstsv if (evalsv(ist1,ikp).lt.efermi) then z1=zfmtinp(.true.,nrc,nrci,rcmt(:,is),zrhomt1(:,:,ias,ist1), & zvclmt) vclvv(ist1,ist2)=vclvv(ist1,ist2)-z1 end if end do !----------------------------------------! ! core-core-valence contribution ! !----------------------------------------! ic=0 do ist1=1,spnst(is) if (spcore(ist1,is)) then do m2=-spk(ist1,is),spk(ist1,is)-1 ic=ic+1 z1=zfmtinp(.true.,nrc,nrci,rcmt(:,is),zrhomt2(:,:,ic), & zvclmt) vclcv(ic,ias,ist2)=vclcv(ic,ias,ist2)-z1 end do ! end loop over ist1 end if end do ! end loop over ist2 end if end do ! end loops over ist3 and m1 end do end if end do ! end loops over atoms and species end do end do deallocate(vgqc,tpgqc,gqc,jlgqr,jlgq0r) deallocate(apwalm,evecfv,evecsv,ylmgq,sfacgq) deallocate(wfmt1,wfmt2,wfir1,wfir2,wfcr1,wfcr2) deallocate(zrhomt1,zrhomt2,zrhoir1) deallocate(zvclmt,zvclir,zfmt) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/olpistl.f900000644002504400250440000000005012337331323016204 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/olpistl.f900000644002504400250440000000252312337331323016752 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: olpistl ! !INTERFACE: subroutine olpistl(ngp,igpig,ld,o) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ngp : number of G+p-vectors (in,integer) ! igpig : index from G+p-vectors to G-vectors (in,integer(ngkmax)) ! ld : leading dimension of o (in,integer) ! o : overlap matrix (inout,complex(*)) ! !DESCRIPTION: ! Computes the interstitial contribution to the overlap matrix for the APW ! basis functions. The overlap is given by ! $$ O^{\rm I}({\bf G+k,G'+k})=\tilde{\Theta}({\bf G-G'}), $$ ! where $\tilde{\Theta}$ is the characteristic function. See routine ! {\tt gencfun}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ngp integer, intent(in) :: igpig(ngkmax) integer, intent(in) :: ld complex(8), intent(inout) :: o(*) ! local variables integer iv(3),jv(3),i,j,k !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,jv,i,iv) !$OMP DO do j=1,ngp k=(j-1)*ld jv(:)=ivg(:,igpig(j)) do i=1,j k=k+1 iv(:)=ivg(:,igpig(i))-jv(:) o(k)=o(k)+cfunig(ivgig(iv(1),iv(2),iv(3))) end do end do !$OMP END DO !$OMP END PARALLEL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writestress.f900000644002504400250440000000005012337331323017114 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writestress.f900000644002504400250440000000233112337331323017657 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writestress use modmain use modmpi implicit none ! local variables integer i,j,k ! initialise universal variables call init0 ! start from the atomic densities trdstate=.false. ! generate the stress tensor call genstress ! write the stress tensor to file if (mp_mpi) then open(50,file='STRESS.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("Lattice vector matrix, A, changed by")') write(50,*) write(50,'(" A --> A + e_i dt,")') write(50,*) write(50,'("where dt is an infinitesimal scalar and e_i is a strain tensor")') write(50,*) write(50,'("Stress is given by the derivative of the total energy dE/dt")') do k=1,nstrain write(50,*); write(50,*) write(50,'("Strain matrix : ",I1)') k do i=1,3 write(50,'(3G18.10)') (strain(i,j,k),j=1,3) end do write(50,*) write(50,'("Stress matrix component : ",G18.10)') stress(k) end do close(50) write(*,*) write(*,'("Info(writestress):")') write(*,'(" Stress matrix written to STRESS.OUT")') end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/genzmag.f900000644002504400250440000000005012337331324016147 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genzmag.f900000644002504400250440000000313212337331324016712 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2010 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genzmag(wfmt1,wfmt2,wfir1,wfir2,zmagmt,zmagir) use modmain implicit none ! arguments complex(8), intent(in) :: wfmt1(lmmaxvr,nrcmtmax,natmtot,nspinor) complex(8), intent(in) :: wfmt2(lmmaxvr,nrcmtmax,natmtot,nspinor) complex(8), intent(in) :: wfir1(ngtot,nspinor) complex(8), intent(in) :: wfir2(ngtot,nspinor) complex(8), intent(out) :: zmagmt(lmmaxvr,nrcmtmax,natmtot,ndmag) complex(8), intent(out) :: zmagir(ngtot,ndmag) ! local variables integer is,ias,ir complex(8) z1,z2 !-------------------------! ! muffin-tin part ! !-------------------------! !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is) !$OMP DO do ias=1,natmtot is=idxis(ias) call genzmagmt(is,wfmt1(:,:,ias,1),wfmt1(:,:,ias,2),wfmt2(:,:,ias,1), & wfmt2(:,:,ias,2),natmtot,zmagmt(:,:,ias,1)) end do !$OMP END DO !$OMP END PARALLEL !---------------------------! ! interstitial part ! !---------------------------! ! calculate the z-component of magnetisation: up-up - dn-dn zmagir(:,ndmag)=conjg(wfir1(:,1))*wfir2(:,1)-conjg(wfir1(:,2))*wfir2(:,2) ! non-collinear case if (ncmag) then do ir=1,ngtot ! up-dn spin density z1=conjg(wfir1(ir,1))*wfir2(ir,2) ! dn-up spin density z2=conjg(wfir1(ir,2))*wfir2(ir,1) ! calculate the x-component: up-dn + dn-up zmagir(ir,1)=z1+z2 ! calculate the y-component: i*(dn-up - up-dn) z1=z2-z1 zmagir(ir,2)=cmplx(-aimag(z1),dble(z1),8) end do end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/r3mmt.f900000644002504400250440000000005012337331323015560 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/r3mmt.f900000644002504400250440000000212712337331323016326 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2003-2004 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3mmt ! !INTERFACE: subroutine r3mmt(a,b,c) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix 1 (in,real(3,3)) ! b : input matrix 2 (in,real(3,3)) ! c : output matrix (out,real(3,3)) ! !DESCRIPTION: ! Multiplies a real matrix with the transpose of another. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3),b(3,3) real(8), intent(out) :: c(3,3) c(1,1)=a(1,1)*b(1,1)+a(1,2)*b(1,2)+a(1,3)*b(1,3) c(2,1)=a(2,1)*b(1,1)+a(2,2)*b(1,2)+a(2,3)*b(1,3) c(3,1)=a(3,1)*b(1,1)+a(3,2)*b(1,2)+a(3,3)*b(1,3) c(1,2)=a(1,1)*b(2,1)+a(1,2)*b(2,2)+a(1,3)*b(2,3) c(2,2)=a(2,1)*b(2,1)+a(2,2)*b(2,2)+a(2,3)*b(2,3) c(3,2)=a(3,1)*b(2,1)+a(3,2)*b(2,2)+a(3,3)*b(2,3) c(1,3)=a(1,1)*b(3,1)+a(1,2)*b(3,2)+a(1,3)*b(3,3) c(2,3)=a(2,1)*b(3,1)+a(2,2)*b(3,2)+a(2,3)*b(3,3) c(3,3)=a(3,1)*b(3,1)+a(3,2)*b(3,2)+a(3,3)*b(3,3) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/dhmlalo.f900000644002504400250440000000005012337331324016137 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dhmlalo.f900000644002504400250440000000477312337331324016716 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dhmlalo(ias,ngp,ngpq,apwalm,apwalmq,dapwalm,dapwalmq,ld,dh) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw) complex(8), intent(in) :: dapwalmq(ngkmax,apwordmax,lmmaxapw) integer, intent(in) :: ld complex(8), intent(inout) :: dh(ld,*) ! local variables integer is,io,ilo integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3,i,j complex(8) zsum is=idxis(ias) do ilo=1,nlorb(is) l1=lorbl(ilo,is) do m1=-l1,l1 lm1=idxlm(l1,m1) lm3=0 do l3=0,lmaxmat do m3=-l3,l3 lm3=lm3+1 do io=1,apword(l3,is) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyyy(lm1,lm2,lm3)*dhloa(lm2,io,l3,ilo,ias) end do end if end do if (abs(dble(zsum))+abs(aimag(zsum)).gt.1.d-14) then j=ngp+idxlo(lm1,ilo,ias) do i=1,ngpq dh(i,j)=dh(i,j)+conjg(zsum*apwalmq(i,io,lm3,ias)) end do i=ngpq+idxlo(lm1,ilo,ias) do j=1,ngp dh(i,j)=dh(i,j)+zsum*apwalm(j,io,lm3,ias) end do end if end do end do end do if (ias.eq.iasph) then lm3=0 do l3=0,lmaxmat do m3=-l3,l3 lm3=lm3+1 do io=1,apword(l3,is) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyry(lm1,lm2,lm3)*hloa(lm2,io,l3,ilo,ias) end do end if end do if (abs(dble(zsum))+abs(aimag(zsum)).gt.1.d-14) then j=ngp+idxlo(lm1,ilo,ias) do i=1,ngpq dh(i,j)=dh(i,j)+conjg(zsum*dapwalmq(i,io,lm3)) end do i=ngpq+idxlo(lm1,ilo,ias) do j=1,ngp dh(i,j)=dh(i,j)+zsum*dapwalm(j,io,lm3) end do end if end do end do end do end if end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/getevalsv.f900000644002504400250440000000005012337331323016516 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/getevalsv.f900000644002504400250440000000234412337331323017265 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getevalsv(vpl,evalsvp) use modmain implicit none ! arguments real(8), intent(in) :: vpl(3) real(8), intent(out) :: evalsvp(nstsv) ! local variables integer isym,ik integer recl,nstsv_ real(8) vkl_(3),t1 ! find the k-point number call findkpt(vpl,isym,ik) ! find the record length inquire(iolength=recl) vkl_,nstsv_,evalsvp !$OMP CRITICAL open(70,file='EVALSV'//trim(filext),action='READ',form='UNFORMATTED', & access='DIRECT',recl=recl) read(70,rec=ik) vkl_,nstsv_,evalsvp close(70) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getevalsv): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" EVALSV.OUT : ",3G18.10)') vkl_ write(*,*) stop end if if (nstsv.ne.nstsv_) then write(*,*) write(*,'("Error(getevalsv): differing nstsv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstsv write(*,'(" EVALSV.OUT : ",I8)') nstsv_ write(*,*) stop end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/putdevecfv.f900000644002504400250440000000005012337331324016672 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/putdevecfv.f900000644002504400250440000000145312337331324017441 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine putdevecfv(ik,devecfv) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ik complex(8), intent(in) :: devecfv(nmatmax,nstfv,nspnfv) ! local variables integer recl character(256) fext ! find the record length inquire(iolength=recl) vkl(:,ik),nmatmax,nstfv,nspnfv,devecfv ! construct the phonon file extension call phfext(iqph,isph,iaph,ipph,fext) !$OMP CRITICAL open(70,file=trim(scrpath)//'DEVECFV'//trim(fext),action='WRITE', & form='UNFORMATTED',access='DIRECT',recl=recl) write(70,rec=ik) vkl(:,ik),nmatmax,nstfv,nspnfv,devecfv close(70) !$OMP END CRITICAL return end subroutine elk-2.3.22/src/PaxHeaders.22528/dforce.f900000644002504400250440000000005012337331324015761 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dforce.f900000644002504400250440000001225012337331324016525 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dforce(dyn) use modmain use modphonon implicit none ! arguments complex(8), intent(out) :: dyn(3,natmtot) ! local variables integer ik,is,ias integer nr,nri,ir integer igq0,i complex(8) zrho0,zsum,z1 ! automatic arrays real(8) vn(nrmtmax) ! allocatable arrays complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: grhomt(:,:,:,:),grhoir(:,:) complex(8), allocatable :: zvclmt(:,:,:),zvclir(:) complex(8), allocatable :: gvclmt(:,:,:,:),gvclir(:,:) complex(8), allocatable :: zfmt(:,:),gzfmt(:,:,:) ! external functions complex(8) zfinp,zfmtinp external zfinp,zfmtinp allocate(zrhomt(lmmaxvr,nrmtmax,natmtot),zrhoir(ngtot)) allocate(grhomt(lmmaxvr,nrmtmax,natmtot,3),grhoir(ngtot,3)) allocate(zvclmt(lmmaxvr,nrmtmax,natmtot),zvclir(ngtot)) allocate(gvclmt(lmmaxvr,nrmtmax,natmtot,3),gvclir(ngtot,3)) allocate(zfmt(lmmaxvr,nrmtmax),gzfmt(lmmaxvr,nrmtmax,3)) ! make complex copy of the density do ias=1,natmtot is=idxis(ias) call rtozfmt(nrmt(is),nrmtinr(is),1,rhomt(:,:,ias),1,zrhomt(:,:,ias)) end do zrhoir(:)=rhoir(:) ! compute the gradient of the density call gradzf(zrhomt,zrhoir,grhomt,grhoir) !--------------------------------------------------------------! ! Hellmann-Feynman force derivative for displaced atom ! !--------------------------------------------------------------! if (iqph.eq.iq0) then igq0=1 else igq0=0 end if nr=nrmt(isph) ! zero the interstitial density zrhoir(:)=0.d0 ! compute the gradient of the nuclear potential call potnucl(ptnucl,nr,spr(:,isph),spzn(isph),vn) do ir=1,nr zfmt(:,ir)=0.d0 zfmt(1,ir)=vn(ir)/y00 end do call gradzfmt(nr,nrmtinr(isph),spr(:,isph),zfmt,nrmtmax,gzfmt) ! compute the q-dependent nuclear Coulomb potential derivative zvclmt(:,:,:)=0.d0 do ir=1,nr zvclmt(2:4,ir,iasph)=gzfmt(2:4,ir,ipph) end do tphdyn=.true. call zpotcoul(nrmt,nrmtinr,spnrmax,spr,igq0,gqc,jlgqr,ylmgq,sfacgq,zrhoir, & nrmtmax,zvclmt,zvclir,zrho0) zfmt(:,:)=zvnmt(:,:) ! multiply with density derivative and integrate zsum=0.d0 do ir=1,ngtot zsum=zsum+cfunir(ir)*conjg(zvclir(ir))*drhoir(ir) end do zsum=zsum*omega/dble(ngtot) do ias=1,natmtot is=idxis(ias) zsum=zsum+zfmtinp(.true.,nrmt(is),nrmtinr(is),spr(:,is),zvclmt(:,:,ias), & drhomt(:,:,ias)) end do dyn(ipph,iasph)=-zsum ! compute the lattice-periodic nuclear Coulomb potential derivative zvclmt(:,:,:)=0.d0 do ir=1,nr zvclmt(2:4,ir,iasph)=gzfmt(2:4,ir,ipph) end do call zpotcoul(nrmt,nrmtinr,spnrmax,spr,1,gc,jlgr,ylmg,sfacg,zrhoir,nrmtmax, & zvclmt,zvclir,zrho0) tphdyn=.false. ! multiply with density gradient and integrate zsum=0.d0 do ir=1,ngtot zsum=zsum+cfunir(ir)*zvclir(ir)*grhoir(ir,ipph) end do zsum=zsum*omega/dble(ngtot) do ias=1,natmtot is=idxis(ias) zsum=zsum+zfmtinp(.true.,nrmt(is),nrmtinr(is),spr(:,is),zvclmt(:,:,ias), & grhomt(:,:,ias,ipph)) end do dyn(ipph,iasph)=dyn(ipph,iasph)-zsum ! nuclear-nuclear term zvclmt(:,:,iasph)=zvnmt(:,:)-zfmt(:,:) call gradzf(zvclmt,zvclir,gvclmt,gvclir) do ias=1,natmtot is=idxis(ias) z1=spzn(is)*gvclmt(1,irfhf(is),ias,ipph)*y00 dyn(ipph,iasph)=dyn(ipph,iasph)+z1 end do !-------------------------------------------------------------------! ! Hellmann-Feynman force derivative for non-displaced atoms ! !-------------------------------------------------------------------! do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) ! remove the gradient part of the Coulomb potential for displaced muffin-tin if (ias.eq.iasph) then call rtozfmt(nr,nri,1,vclmt(:,:,iasph),1,zfmt) call gradzfmt(nr,nri,spr(:,isph),zfmt,nrmtmax,gzfmt) dvclmt(:,1:nr,ias)=dvclmt(:,1:nr,ias)+gzfmt(:,1:nr,ipph) end if ! compute the gradient of the Coulomb potential derivative at the nucleus call gradzfmt(nr,nri,spr(:,is),dvclmt(:,:,ias),nrmtmax,gzfmt) do i=1,3 if ((ias.eq.iasph).and.(i.eq.ipph)) cycle dyn(i,ias)=spzn(is)*gzfmt(1,irfhf(is),i)*y00 end do end do !--------------------------------------------! ! IBS correction to force derivative ! !--------------------------------------------! if (tfibs) then ! k-point dependent part !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkptnr call dforcek(ik,dyn) end do !$OMP END DO !$OMP END PARALLEL ! k-point independent part do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) do i=1,3 z1=zfmtinp(.true.,nr,nri,spr(:,is),grhomt(:,:,ias,i),dvsmt(:,:,ias)) dyn(i,ias)=dyn(i,ias)-z1 end do ! convert Kohn-Sham potential to complex spherical harmonics call rtozfmt(nr,nri,1,vsmt(:,:,ias),1,zfmt) ! remove the gradient part from the density derivative for displaced muffin-tin if (ias.eq.iasph) then drhomt(:,1:nr,ias)=drhomt(:,1:nr,ias)+grhomt(:,1:nr,ias,ipph) end if ! compute the gradient of the density derivative call gradzfmt(nr,nri,spr(:,is),drhomt(:,:,ias),nrmtmax,gzfmt) do i=1,3 z1=zfmtinp(.true.,nr,nri,spr(:,is),zfmt,gzfmt(:,:,i)) dyn(i,ias)=dyn(i,ias)-z1 end do end do end if deallocate(zrhomt,zrhoir,grhomt,grhoir) deallocate(zvclmt,zvclir,gvclmt,gvclir,zfmt,gzfmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dynev.f900000644002504400250440000000005012337331324015644 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dynev.f900000644002504400250440000000305412337331324016412 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dynev(dynp,w,ev) use modmain use modphonon implicit none ! arguments complex(8), intent(in) :: dynp(nbph,nbph) real(8), intent(out) :: w(nbph) complex(8), intent(out) :: ev(nbph,nbph) ! local variables integer is,ia,ip,js,ja,jp integer i,j,lwork,info real(8) t1 ! allocatable arrays real(8), allocatable :: rwork(:) complex(8), allocatable :: work(:) ev(:,:)=0.d0 i=0 do is=1,nspecies do ia=1,natoms(is) do ip=1,3 i=i+1 j=0 do js=1,nspecies ! mass factor if ((spmass(is).le.0.d0).or.(spmass(js).le.0.d0)) then ! infinite mass t1=0.d0 else t1=1.d0/sqrt(spmass(is)*spmass(js)) end if do ja=1,natoms(js) do jp=1,3 j=j+1 if (i.le.j) then ! use Hermitian average of dynamical matrix ev(i,j)=0.5d0*t1*(dynp(i,j)+conjg(dynp(j,i))) end if end do end do end do end do end do end do allocate(rwork(3*nbph)) lwork=2*nbph allocate(work(lwork)) call zheev('V','U',nbph,ev,nbph,w,work,lwork,rwork,info) if (info.ne.0) then write(*,*) write(*,'("Error(dynev): diagonalisation failed")') write(*,'(" ZHEEV returned INFO = ",I8)') info write(*,*) stop end if do i=1,nbph if (w(i).ge.0.d0) then w(i)=sqrt(w(i)) else w(i)=-sqrt(abs(w(i))) end if end do deallocate(rwork,work) return end subroutine elk-2.3.22/src/PaxHeaders.22528/phdelete.f900000644002504400250440000000005012337331324016311 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phdelete.f900000644002504400250440000000112112337331324017050 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phdelete use modmain use modphonon implicit none character(256) fext ! construct the phonon file extension call phfext(iqph,isph,iaph,ipph,fext) ! delete the eigenvalue/vector files open(70,file='DEVALFV'//trim(fext)) close(70,status='DELETE') open(70,file='DEVECFV'//trim(fext)) close(70,status='DELETE') open(70,file='DEVECSV'//trim(fext)) close(70,status='DELETE') return end subroutine elk-2.3.22/src/PaxHeaders.22528/stheta_lr.f900000644002504400250440000000005012337331323016503 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/stheta_lr.f900000644002504400250440000000030712337331323017247 0ustar00dewhurstdewhurst00000000000000 real(8) function stheta_lr(x) implicit none ! arguments real(8), intent(in) :: x ! local variables real(8), parameter :: pi=3.1415926535897932385d0 stheta_lr=0.5d0+atan(2*x)/pi return end function elk-2.3.22/src/PaxHeaders.22528/zfmtadd.f900000644002504400250440000000005012337331323016147 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zfmtadd.f900000644002504400250440000000132112337331323016710 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zfmtadd(nr,nri,za,zfmt1,zfmt2) use modmain implicit none ! arguments integer, intent(in) :: nr,nri complex(8), intent(in) :: za complex(8), intent(in) :: zfmt1(lmmaxvr,nr) complex(8), intent(inout) :: zfmt2(lmmaxvr,nr) ! local variables integer nr0,ir0,ir ! add on inner part of muffin-tin do ir=1,nri call zaxpy(lmmaxinr,za,zfmt1(:,ir),1,zfmt2(:,ir),1) end do ! add on outer part of muffin-tin nr0=nr-nri if (nr0.eq.0) return ir0=nri+1 call zaxpy(lmmaxvr*nr0,za,zfmt1(:,ir0),1,zfmt2(:,ir0),1) return end subroutine elk-2.3.22/src/PaxHeaders.22528/zbessela.f900000644002504400250440000000005012337331324016327 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/zbessela.f900000644002504400250440000000365512337331324017104 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: zbessela ! !INTERFACE: subroutine zbessela(lmax,x,a) ! !INPUT/OUTPUT PARAMETERS: ! lmax : maximum order of Bessel function (in,integer) ! x : real argument (in,real) ! a : array of returned values (out,real(0:lmax)) ! !DESCRIPTION: ! Computes variations of the spherical Bessel function, $a_l(x)=i^lj_l(ix)$, ! for real argument $x$ and $l=0,1,\ldots,l_{\rm max}$. The recursion relation ! $$ j_{l+1}(x)=\frac{2l+1}{x}j_l(x)+j_{l-1}(x) $$ ! is used upwards. For starting values there are ! $$ a_0(x)=\frac{\sinh(x)}{x};\qquad a_1(x)=\frac{a_0(x)-\cosh(x)}{x} $$. ! For $x\ll 1$ the asymtotic forms ! $$ a_l(x)\approx\frac{(-x)^l}{(2l+1)!!} $$ ! are used. ! ! !REVISION HISTORY: ! Created April 2008 from sbessel routine (Lars Nordstrom) !EOP !BOC implicit none ! arguments integer, intent(in) :: lmax real(8), intent(in) :: x real(8), intent(out) :: a(0:lmax) ! local variables integer l real(8) xi,a0,a1,at,t1,t2,xmin if ((lmax.lt.0).or.(lmax.gt.50)) then write(*,*) write(*,'("Error(zbessela): lmax out of range : ",I8)') lmax write(*,*) stop end if if ((x.lt.0.d0).or.(x.gt.1.d8)) then write(*,*) write(*,'("Error(zbessela): x out of range : ",G18.10)') x write(*,*) stop end if xi=1.d0/x xmin=1.d-7 select case (lmax) case(0) xmin=1.d-6 case(1:2) xmin=1.d-4 case(3:4) xmin=1.d-2 case(5:) xmin=1.d0 end select ! treat x << 1 if (x.lt.xmin) then a(0)=1.d0 t1=1.d0 t2=1.d0 do l=1,lmax t1=t1/dble(2*l+1) t2=-t2*x a(l)=t2*t1 end do return end if ! recurse up a(0)=xi*(sinh(x)) if (lmax.eq.0) return a(1)=xi*(a(0)-cosh(x)) if (lmax.eq.1) return a0=a(0) a1=a(1) do l=2,lmax at=dble(2*l-1)*a1*xi+a0 a0=a1 a1=at a(l)=a1 end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/findngkmax.f900000644002504400250440000000005012337331323016644 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findngkmax.f900000644002504400250440000000375712337331323017424 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2012 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: findngkmax ! !INTERFACE: subroutine findngkmax(nkpt,vkc,nspnfv,vqcss,ngvec,vgc,gkmax,ngkmax) ! !INPUT/OUTPUT PARAMETERS: ! nkpt : number of k-points (in,integer) ! vkc : k-point vectors in Cartesian coordinates (in,real(3,nkpt)) ! nspnfv : number of first-variational spin components: 1 normal case, 2 for ! spin-spiral case (in,integer) ! vqcss : spin-spiral q-vector, not referenced if nspnfv=1 (in,integer) ! ngvec : number of G-vectors (in,integer) ! vgc : G-vectors in Cartesian coordinates (in,real(3,ngvec)) ! gkmax : maximum allowed |G+k| (in,real) ! ngkmax : maximum number of G+k-vectors over all k-points (out,integer) ! !DESCRIPTION: ! Determines the largest number of ${\bf G+k}$-vectors with length less than ! {\tt gkmax} over all the $k$-points. This variable is used for allocating ! arrays. ! ! !REVISION HISTORY: ! Created October 2004 (JKD) ! Modified, August 2012 (JKD) ! Removed modmain and added arguments, September 2012 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: nkpt real(8), intent(in) :: vkc(3,nkpt) integer, intent(in) :: nspnfv real(8), intent(in) :: vqcss(3) integer, intent(in) :: ngvec real(8), intent(in) :: vgc(3,ngvec) real(8), intent(in) :: gkmax integer, intent(out) :: ngkmax ! local variables integer ispn,ik,n,ig real(8) v1(3),v2(3),t0,t1 t0=gkmax**2 ngkmax=0 do ispn=1,nspnfv do ik=1,nkpt if (nspnfv.eq.2) then ! spin-spiral case if (ispn.eq.1) then v1(:)=vkc(:,ik)+0.5d0*vqcss(:) else v1(:)=vkc(:,ik)-0.5d0*vqcss(:) end if else v1(:)=vkc(:,ik) end if n=0 do ig=1,ngvec v2(:)=vgc(:,ig)+v1(:) t1=v2(1)**2+v2(2)**2+v2(3)**2 if (t1.lt.t0) n=n+1 end do ngkmax=max(ngkmax,n) end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genlmirep.f900000644002504400250440000000005012337331323016500 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genlmirep.f900000644002504400250440000000434012337331323017245 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genlmirep(lmax,ld,elm,ulm) use modmain implicit none ! arguments integer, intent(in) :: lmax integer, intent(in) :: ld real(8), intent(out) :: elm(ld,natmtot) complex(8), intent(out) :: ulm(ld,ld,natmtot) ! local variables integer isym,lspl,is,ia,ias integer lmmax,i,j,l,lm,n,p integer info,lwork ! allocatable arrays real(8), allocatable :: rwork(:) complex(8), allocatable :: ulat(:,:,:) complex(8), allocatable :: a(:,:),b(:,:) complex(8), allocatable :: h(:,:) complex(8), allocatable :: work(:) lmmax=(lmax+1)**2 allocate(rwork(3*lmmax)) allocate(ulat(lmmax,lmmax,nsymlat)) allocate(a(lmmax,lmmax),b(lmmax,lmmax)) allocate(h(lmmax,lmmax)) lwork=2*lmmax allocate(work(lwork)) ! construct (l,m) rotation matrix for each lattice symmetry a(:,:)=0.d0 do i=1,lmmax a(i,i)=1.d0 end do do isym=1,nsymlat call rotzflm(symlatc(:,:,isym),0,lmax,lmmax,lmmax,a,ulat(:,:,isym)) end do ! set up pseudorandom symmetric matrix H h(:,:)=0.d0 p=1 do l=0,lmax n=2*l+1 lm=idxlm(l,-l) do i=lm,lm+n-1 do j=i,lm+n-1 ! Park and Miller linear congruential generator p=mod(p*171,30269) h(i,j)=mod(p,lmmax) h(j,i)=h(i,j) end do end do end do ! loop over species and atoms do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! symmetrise H with site symmetries b(:,:)=0.d0 do isym=1,nsymsite(ias) ! spatial rotation element in lattice point group lspl=lsplsyms(isym,ias) ! apply lattice symmetry as U*H*conjg(U') call zgemm('N','N',lmmax,lmmax,lmmax,zone,ulat(:,:,lspl),lmmax,h,lmmax, & zzero,a,lmmax) call zgemm('N','C',lmmax,lmmax,lmmax,zone,a,lmmax,ulat(:,:,lspl),lmmax, & zone,b,lmmax) end do ! block diagonalise symmetrised H do l=0,lmax n=2*l+1 lm=idxlm(l,-l) call zheev('V','U',n,b(lm,lm),lmmax,elm(lm,ias),work,lwork,rwork,info) end do ! the unitary matrix U is the transpose of the eigenvector array do i=1,lmmax do j=1,lmmax ulm(i,j,ias)=b(j,i) end do end do end do end do deallocate(rwork,ulat,a,b,h,work) return end subroutine elk-2.3.22/src/PaxHeaders.22528/fyukawa.f900000644002504400250440000000005012337331324016166 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/fyukawa.f900000644002504400250440000000455112337331324016737 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: fyukawa ! !INTERFACE: real(8) function fyukawa(is,l,k,lambda) ! !USES: use modmain use moddftu ! !INPUT/OUTPUT PARAMETERS: ! is : species type (in,integer) ! l : an angular momentum (in,integer) ! k : order of Slater parameter (in,integer) ! lambda : screening length of Yukawa potential (in,real) ! !DESCRIPTION: ! Calculates the Slater parameters using a screened Yukawa potential. See ! {\it Phys. Rev. B} {\bf 52}, 1421 (1995) and {\it Phys. Rev. B} {\bf 80}, ! 035121 (2009). ! ! !REVISION HISTORY: ! Created April 2008 (Lars Nordstrom) ! Modified and tested July 2008 (LN and FC) !EOP !BOC implicit none ! arguments integer, intent(in) :: is integer, intent(in) :: l,k real(8), intent(in) :: lambda ! local variables integer ias,io,nr,ir integer nr1,nr2,ir1,ir2 real(8) r2,x,t1 ! automatic arrays real(8) clow(nrmtmax),chigh(nrmtmax) real(8) blow(nrmtmax),bhigh(nrmtmax),fint(nrmtmax) real(8) bint(nrmtmax),cint(nrmtmax) ! allocatable arrays real(8), allocatable :: a(:,:),b(:,:) ias=idxas(1,is) io=1 nr=nrmt(is) ! (-1)**k factor takes care of the additional (-1)**k introduced by zbessela(b) t1=lambda*dble((2*k+1)*(-1)**(k+1)) ! allocate Bessel and Hankel functions allocate(a(0:2*l,nr),b(0:2*l,nr)) ! zero all quantities a(:,:)=0.d0 b(:,:)=0.d0 bint(:)=0.d0 blow(:)=0.d0 bhigh(:)=0.d0 clow(:)=0.d0 chigh(:)=0.d0 ! calculate Slater parameters do ir=1,nr r2=spr(ir,is)**2 bint(ir)=fdufr(ir,1,io,l,ias)*fdufr(ir,1,io,l,ias)*r2 ! argument of Bessel and Hankel functions divided by i x=spr(ir,is)*lambda ! calculate Bessel and Hankel functions divided by i call zbessela(2*l,x,a(:,ir)) call zbesselb(2*l,x,b(:,ir)) end do do ir=1,nr nr1=ir nr2=nr-ir+1 ! 1st term: r1 < r do ir1=1,nr1 ir2=ir1 blow(ir1)=bint(ir2)*a(k,ir2) end do ! integrate 1st term call fderiv(-1,nr1,spr(1,is),blow,clow) ! 2nd term : r2 > r do ir1=1,nr2 ir2=ir1+ir-1 bhigh(ir1)=bint(ir2)*b(k,ir2) end do ! integrate 2nd term call fderiv(-1,nr2,spr(ir,is),bhigh,chigh) ! sum of the two terms cint(ir)=bint(ir)*(b(k,ir)*clow(nr1)+a(k,ir)*chigh(nr2)) end do call fderiv(-1,nr,spr(1,is),cint,fint) fyukawa=t1*fint(nr) deallocate(a,b) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/genvchi0.f900000644002504400250440000000005012337331324016222 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvchi0.f900000644002504400250440000001123012337331324016763 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genvchi0(ikp,icmp,scsr,vqpl,igq0,gqc,ylmgq,sfacgq,vchi0) use modmain implicit none ! local variables integer, intent(in) :: ikp integer, intent(in) :: icmp real(8), intent(in) :: scsr real(8), intent(in) :: vqpl(3) integer, intent(in) :: igq0 real(8), intent(in) :: gqc(ngrf) complex(8), intent(in) :: ylmgq(lmmaxvr,ngrf) complex(8), intent(in) :: sfacgq(ngrf,natmtot) complex(8), intent(inout) :: vchi0(nwrf,ngrf,ngrf) ! local variables integer isym,jkp,jkpq,iw integer nst,nstq,ist,jst integer kst,lst,ig,jg real(8) vkql(3),eij,t1,t2 complex(8) z1,z2 ! automatic arrays integer idx(nstsv),idxq(nstsv) ! allocatable arrays complex(8), allocatable :: pmat(:,:,:) complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) complex(8), allocatable :: wfmtq(:,:,:,:,:),wfirq(:,:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zw(:),zg(:) ! k+q-vector in lattice coordinates vkql(:)=vkl(:,ikp)+vqpl(:) ! equivalent reduced k-points for k and k+q call findkpt(vkl(:,ikp),isym,jkp) call findkpt(vkql,isym,jkpq) ! count and index states at k and k+q in energy window nst=0 do ist=1,nstsv if (abs(evalsv(ist,jkp)-efermi).lt.emaxrf) then nst=nst+1 idx(nst)=ist end if end do nstq=0 do jst=1,nstsv if (abs(evalsv(jst,jkpq)-efermi).lt.emaxrf) then nstq=nstq+1 idxq(nstq)=jst end if end do ! generate the wavefunctions for all states at k and k+q in energy window allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nst)) allocate(wfir(ngtot,nspinor,nst)) call genwfsvp(.false.,.false.,nst,idx,vkl(:,ikp),wfmt,ngtot,wfir) allocate(wfmtq(lmmaxvr,nrcmtmax,natmtot,nspinor,nstq)) allocate(wfirq(ngtot,nspinor,nstq)) call genwfsvp(.false.,.false.,nstq,idxq,vkql,wfmtq,ngtot,wfirq) ! read the momentum matrix elements from file allocate(pmat(3,nstsv,nstsv)) call getpmat(vkl(:,ikp),pmat) ! divide by unit cell volume t1=1.d0/omega pmat(:,:,:)=t1*pmat(:,:,:) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(zrhomt,zrhoir,zw,zg) & !$OMP PRIVATE(jst,kst,lst,t1,t2,eij) & !$OMP PRIVATE(iw,ig,jg,z1,z2) !$OMP DO do ist=1,nst allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot),zrhoir(ngtot)) allocate(zw(nwrf),zg(ngrf)) kst=idx(ist) do jst=1,nstq lst=idxq(jst) t1=wkptnr*omega*(occsv(kst,jkp)-occsv(lst,jkpq)) if (abs(t1).lt.1.d-8) cycle eij=evalsv(kst,jkp)-evalsv(lst,jkpq) ! scissor operator if (abs(scsr).gt.1.d-8) then t2=eij if (eij.gt.0.d0) then eij=eij+scsr else eij=eij-scsr end if t2=eij/t2 ! scale the momentum matrix elements pmat(:,kst,lst)=t2*pmat(:,kst,lst) end if ! frequency-dependent part in response function formula for all frequencies do iw=1,nwrf zw(iw)=t1/(eij+wrf(iw)) end do ! compute the complex density in G+q-space call genzrho(.true.,.true.,wfmt(:,:,:,:,ist),wfir(:,:,ist), & wfmtq(:,:,:,:,jst),wfirq(:,:,jst),zrhomt,zrhoir) call zftzf(ngrf,gqc,ylmgq,ngrf,sfacgq,zrhomt,zrhoir,zg) !$OMP CRITICAL !------------------------! ! body of matrix ! !------------------------! do jg=1,ngrf z1=conjg(zg(jg)) do ig=1,ngrf t1=gqc(ig)*gqc(jg) if (t1.gt.1.d-8) then z2=(fourpi/t1)*zg(ig)*z1 call zaxpy(nwrf,z2,zw,1,vchi0(:,ig,jg),1) end if end do end do ! special case of q = 0 if ((gqc(igq0).lt.epslat).and.(abs(eij).gt.1.d-8)) then !----------------------------------------! ! head of matrix: G = G' = q = 0 ! !----------------------------------------! if (icmp.eq.0) then ! trace of dielectric tensor t1=sum(dble(pmat(:,kst,lst))**2+aimag(pmat(:,kst,lst))**2)/3.d0 else ! particular macroscopic component t1=dble(pmat(icmp,kst,lst))**2+aimag(pmat(icmp,kst,lst))**2 end if t1=fourpi*t1/eij**2 vchi0(:,igq0,igq0)=vchi0(:,igq0,igq0)+t1*zw(:) !-------------------------! ! wings of matrix ! !-------------------------! t1=-fourpi/eij if (icmp.eq.0) then z1=(t1/3.d0)*(pmat(1,kst,lst)+pmat(2,kst,lst)+pmat(3,kst,lst)) else z1=t1*pmat(icmp,kst,lst) end if ! G = q = 0 do ig=2,ngrf z2=zg(ig)*conjg(z1)/gqc(ig) call zaxpy(nwrf,z2,zw,1,vchi0(:,ig,igq0),1) end do ! G' = q = 0 do jg=2,ngrf z2=z1*conjg(zg(jg))/gqc(jg) call zaxpy(nwrf,z2,zw,1,vchi0(:,igq0,jg),1) end do end if !$OMP END CRITICAL ! end loop over jst end do deallocate(zrhomt,zrhoir,zw,zg) ! end loop over ist end do !$OMP END DO !$OMP END PARALLEL deallocate(pmat,wfmt,wfmtq,wfir,wfirq) return end subroutine elk-2.3.22/src/PaxHeaders.22528/findigp0.f900000644002504400250440000000005012337331323016216 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findigp0.f900000644002504400250440000000104512337331323016762 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine findigp0(ngp,gpc,igp0) implicit none ! arguments integer, intent(in) :: ngp real(8), intent(in) :: gpc(ngp) integer, intent(out) :: igp0 ! local variables integer igp real(8), parameter :: eps=1.d-14 real(8) t1 igp0=1 t1=gpc(1)-eps do igp=2,ngp if (gpc(igp).lt.t1) then igp0=igp t1=gpc(igp)-eps end if end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/hmlrad.f900000644002504400250440000000005012337331323015765 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/hmlrad.f900000644002504400250440000001114012337331323016526 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: hmlrad ! !INTERFACE: subroutine hmlrad ! !USES: use modmain ! !DESCRIPTION: ! Calculates the radial Hamiltonian integrals of the APW and local-orbital ! basis functions. In other words, for atom $\alpha$, it computes integrals of ! the form ! $$ h^{\alpha}_{qq';ll'l''m''}=\begin{cases} ! \int_0^{R_i}u^{\alpha}_{q;l}(r)H u^{\alpha}_{q';l'}(r)r^2dr & l''=0 \\ ! \int_0^{R_i}u^{\alpha}_{q;l}(r)V^{\alpha}_{l''m''}(r) ! u^{\alpha}_{q';l'}(r)r^2dr & l''>0 \end{cases}, $$ ! where $u^{\alpha}_{q;l}$ is the $q$th APW radial function for angular ! momentum $l$; $H$ is the Hamiltonian of the radial Schr\"{o}dinger equation; ! and $V^{\alpha}_{l''m''}$ is the muffin-tin Kohn-Sham potential. Similar ! integrals are calculated for APW-local-orbital and ! local-orbital-local-orbital contributions. ! ! !REVISION HISTORY: ! Created December 2003 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ias,nr,ir integer l1,l2,l3,m2,lm2 integer ilo,jlo,io,jo real(8) t1 ! allocatable arrays real(8), allocatable :: fr(:),gr(:) ! automatic arrays real(8) r2(nrmtmax) ! begin loops over atoms and species do is=1,nspecies nr=nrmt(is) r2(1:nr)=spr(1:nr,is)**2 !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(fr,gr,ias) & !$OMP PRIVATE(l1,l2,l3,io,jo,ir) & !$OMP PRIVATE(lm2,m2,t1,ilo,jlo) SHARED(is) !$OMP DO do ia=1,natoms(is) allocate(fr(nrmtmax),gr(nrmtmax)) ias=idxas(ia,is) !---------------------------! ! APW-APW integrals ! !---------------------------! do l1=0,lmaxmat do io=1,apword(l1,is) do l3=0,lmaxmat do jo=1,apword(l3,is) if (l1.eq.l3) then do ir=1,nr fr(ir)=apwfr(ir,1,io,l1,ias)*apwfr(ir,2,jo,l3,ias)*r2(ir) end do call fderiv(-1,nr,spr(:,is),fr,gr) haa(1,jo,l3,io,l1,ias)=gr(nr)/y00 else haa(1,jo,l3,io,l1,ias)=0.d0 end if if (l1.ge.l3) then lm2=1 do l2=1,lmaxvr do m2=-l2,l2 lm2=lm2+1 do ir=1,nr t1=apwfr(ir,1,io,l1,ias)*apwfr(ir,1,jo,l3,ias)*r2(ir) fr(ir)=t1*vsmt(lm2,ir,ias) end do call fderiv(-1,nr,spr(:,is),fr,gr) haa(lm2,jo,l3,io,l1,ias)=gr(nr) haa(lm2,io,l1,jo,l3,ias)=gr(nr) end do end do end if end do end do end do end do !-------------------------------------! ! local-orbital-APW integrals ! !-------------------------------------! do ilo=1,nlorb(is) l1=lorbl(ilo,is) do l3=0,lmaxmat do io=1,apword(l3,is) if (l1.eq.l3) then do ir=1,nr fr(ir)=lofr(ir,1,ilo,ias)*apwfr(ir,2,io,l3,ias)*r2(ir) end do call fderiv(-1,nr,spr(:,is),fr,gr) hloa(1,io,l3,ilo,ias)=gr(nr)/y00 else hloa(1,io,l3,ilo,ias)=0.d0 end if lm2=1 do l2=1,lmaxvr do m2=-l2,l2 lm2=lm2+1 do ir=1,nr t1=lofr(ir,1,ilo,ias)*apwfr(ir,1,io,l3,ias)*r2(ir) fr(ir)=t1*vsmt(lm2,ir,ias) end do call fderiv(-1,nr,spr(:,is),fr,gr) hloa(lm2,io,l3,ilo,ias)=gr(nr) end do end do end do end do end do !-----------------------------------------------! ! local-orbital-local-orbital integrals ! !-----------------------------------------------! do ilo=1,nlorb(is) l1=lorbl(ilo,is) do jlo=1,nlorb(is) l3=lorbl(jlo,is) if (l1.eq.l3) then do ir=1,nr fr(ir)=lofr(ir,1,ilo,ias)*lofr(ir,2,jlo,ias)*r2(ir) end do call fderiv(-1,nr,spr(:,is),fr,gr) hlolo(1,jlo,ilo,ias)=gr(nr)/y00 else hlolo(1,jlo,ilo,ias)=0.d0 end if lm2=1 do l2=1,lmaxvr do m2=-l2,l2 lm2=lm2+1 do ir=1,nr t1=lofr(ir,1,ilo,ias)*lofr(ir,1,jlo,ias)*r2(ir) fr(ir)=t1*vsmt(lm2,ir,ias) end do call fderiv(-1,nr,spr(:,is),fr,gr) hlolo(lm2,jlo,ilo,ias)=gr(nr) end do end do end do end do deallocate(fr,gr) ! end loops over atoms and species end do !$OMP END DO !$OMP END PARALLEL end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gencfun.f900000644002504400250440000000005012337331323016143 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gencfun.f900000644002504400250440000000376012337331323016715 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: gencfun ! !INTERFACE: subroutine gencfun ! !USES: use modmain ! !DESCRIPTION: ! Generates the smooth characteristic function. This is the function which is ! 0 within the muffin-tins and 1 in the intersitial region and is constructed ! from radial step function form factors with $GG_{\rm max}\end{cases}, $$ ! where $R_i$ is the muffin-tin radius of the $i$th species and $\Omega$ is ! the unit cell volume. Therefore the characteristic function in $G$-space is ! $$ \tilde{\Theta}({\bf G})=\delta_{G,0}-\sum_{ij}\exp(-i{\bf G}\cdot ! {\bf r}_{ij})\tilde{\Theta}_i(G), $$ ! where ${\bf r}_{ij}$ is the position of the $j$th atom of the $i$th species. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ig real(8) t1 complex(8) z1 ! allocatable arrays complex(8), allocatable :: zfft(:) allocate(zfft(ngtot)) ! allocate global characteristic function arrays if (allocated(cfunig)) deallocate(cfunig) allocate(cfunig(ngtot)) if (allocated(cfunir)) deallocate(cfunir) allocate(cfunir(ngtot)) cfunig(:)=0.d0 cfunig(1)=1.d0 ! begin loop over species do is=1,nspecies ! loop over atoms do ia=1,natoms(is) do ig=1,ngtot ! structure factor t1=-dot_product(vgc(:,ig),atposc(:,ia,is)) z1=cmplx(cos(t1),sin(t1),8) ! add to characteristic function in G-space cfunig(ig)=cfunig(ig)-ffacg(ig,is)*z1 end do end do end do do ig=1,ngtot zfft(igfft(ig))=cfunig(ig) end do ! Fourier transform to real-space call zfftifc(3,ngridg,1,zfft) cfunir(:)=dble(zfft(:)) deallocate(zfft) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/r3cross.f900000644002504400250440000000005012337331323016114 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/r3cross.f900000644002504400250440000000134312337331323016661 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3cross ! !INTERFACE: subroutine r3cross(x,y,z) ! !INPUT/OUTPUT PARAMETERS: ! x : input vector 1 (in,real(3)) ! y : input vector 2 (in,real(3)) ! z : output cross-product (out,real(3)) ! !DESCRIPTION: ! Returns the cross product of two real 3-vectors. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: x(3),y(3) real(8), intent(out) :: z(3) z(1)=x(2)*y(3)-x(3)*y(2) z(2)=x(3)*y(1)-x(1)*y(3) z(3)=x(1)*y(2)-x(2)*y(1) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/plot1d.f900000644002504400250440000000005012337331323015721 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/plot1d.f900000644002504400250440000000371612337331323016474 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: plot1d ! !INTERFACE: subroutine plot1d(fnum1,fnum2,nf,rfmt,rfir) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! fnum1 : plot file number (in,integer) ! fnum2 : vertex location file number (in,integer) ! nf : number of functions (in,integer) ! rfmt : real muffin-tin function (in,real(lmmaxvr,nrmtmax,natmtot,nf)) ! rfir : real intersitial function (in,real(ngtot,nf)) ! !DESCRIPTION: ! Produces a 1D plot of the real functions contained in arrays {\tt rfmt} and ! {\tt rfir} along the lines connecting the vertices in the global array ! {\tt vvlp1d}. See routine {\tt rfarray}. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum1,fnum2 integer, intent(in) :: nf real(8), intent(in) :: rfmt(lmmaxvr,nrmtmax,natmtot,nf) real(8), intent(in) :: rfir(ngtot,nf) ! local variables integer i,ip,iv real(8) fmin,fmax,t1 ! allocatable arrays real(8), allocatable :: fp(:,:) if ((nf.lt.1).or.(nf.gt.4)) then write(*,*) write(*,'("Error(plot1d): invalid number of functions : ",I8)') nf write(*,*) stop end if allocate(fp(npp1d,nf)) ! connect the plotting vertices call connect(avec,nvp1d,npp1d,vvlp1d,vplp1d,dvp1d,dpp1d) do i=1,nf ! evaluate function at each point call rfarray(npp1d,vplp1d,rfmt(:,:,:,i),rfir(:,i),fp(:,i)) end do fmin=fp(1,1) fmax=fp(1,1) do ip=1,npp1d do i=1,nf fmin=min(fmin,fp(ip,i)) fmax=max(fmax,fp(ip,i)) end do ! write the point distances and function to file write(fnum1,'(5G18.10)') dpp1d(ip),(fp(ip,i),i=1,nf) end do ! write the vertex location lines t1=0.5d0*(fmax-fmin) do iv=1,nvp1d write(fnum2,'(2G18.10)') dvp1d(iv),fmax+t1 write(fnum2,'(2G18.10)') dvp1d(iv),fmin-t1 write(fnum2,'(" ")') end do deallocate(fp) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rdmminc.f900000644002504400250440000000005012337331324016150 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmminc.f900000644002504400250440000000310512337331324016713 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmminc ! !INTERFACE: subroutine rdmminc ! !USES: use modmain use modrdm use modmpi ! !DESCRIPTION: ! Minimizes the total energy with respect to the second-variational ! coefficients {\tt evecsv}. The steepest-descent algorithm is used. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! local variables integer it if (maxitc.lt.1) return ! begin iteration loop do it=1,maxitc if (mp_mpi) then write(*,'("Info(rdmminc): iteration ",I4," of ",I4)') it,maxitc end if ! generate the density and magnetisation call rhomag ! calculate the Coulomb potential call potcoul ! calculate Coulomb potential matrix elements call genvmat(vclmt,vclir,vclmat) ! calculate derivative of kinetic energy w.r.t. evecsv call rdmdkdc ! write the Coulomb matrix elements to file call writevclijjk ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! update evecsv, orthogonalise and write to file (MPI master process only) if (mp_mpi) call rdmvaryc ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! calculate the energy call rdmenergy ! write energy to file if (mp_mpi) then write(62,'(I6,G18.10)') it,engytot call flushifc(62) end if ! end iteration loop end do if (mp_mpi) then write(60,*) write(60,'("Natural orbital minimisation done")') write(62,*) if (spinpol) write(64,*) end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/r3mdet.f900000644002504400250440000000005012337331323015714 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/r3mdet.f900000644002504400250440000000126212337331323016461 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3mdet ! !INTERFACE: real(8) function r3mdet(a) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,real(3,3)) ! !DESCRIPTION: ! Returns the determinant of a real $3\times 3$ matrix $A$. ! ! !REVISION HISTORY: ! Created May 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3) r3mdet=a(1,1)*(a(2,2)*a(3,3)-a(3,2)*a(2,3)) & +a(2,1)*(a(3,2)*a(1,3)-a(1,2)*a(3,3)) & +a(3,1)*(a(1,2)*a(2,3)-a(2,2)*a(1,3)) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/gradrfmt.f900000644002504400250440000000005012337331324016325 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gradrfmt.f900000644002504400250440000000357712337331324017105 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: gradrfmt ! !INTERFACE: subroutine gradrfmt(nr,nri,r,rfmt,ld,grfmt) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! nr : number of radial mesh points (in,integer) ! nri : number of points on inner part of muffin-tin (in,integer) ! r : radial mesh (in,real(nr)) ! rfmt : real muffin-tin function (in,real(lmmaxvr,nr)) ! ld : leading dimension (in,integer) ! grfmt : gradient of rfmt (out,real(lmmaxvr,ld,3)) ! !DESCRIPTION: ! Calculates the gradient of a real muffin-tin function. In other words, given ! the real spherical harmonic expansion coefficients, $f_{lm}(r)$, of a ! function $f({\bf r})$, the routine returns ${\bf F}_{lm}$ where ! $$ \sum_{lm}{\bf F}_{lm}(r)R_{lm}(\hat{\bf r})=\nabla f({\bf r}), $$ ! and $R_{lm}$ is a real spherical harmonic function. This is done by first ! converting the function to a complex spherical harmonic expansion and then ! using the routine {\tt gradzfmt}. See routine {\tt genrlm}. ! ! !REVISION HISTORY: ! Created August 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: nr,nri real(8), intent(in) :: r(nr) real(8), intent(in) :: rfmt(lmmaxvr,nr) integer, intent(in) :: ld real(8), intent(out) :: grfmt(lmmaxvr,ld,3) ! local variables integer i ! allocatable arrays complex(8), allocatable :: zfmt(:,:),gzfmt(:,:,:) allocate(zfmt(lmmaxvr,nr),gzfmt(lmmaxvr,nr,3)) ! convert real to complex spherical harmonic expansion call rtozfmt(nr,nri,1,rfmt,1,zfmt) ! compute the gradient call gradzfmt(nr,nri,r,zfmt,nr,gzfmt) ! convert complex to real spherical harmonic expansion do i=1,3 call ztorfmt(nr,nri,1,gzfmt(:,:,i),1,grfmt(:,:,i)) end do deallocate(zfmt,gzfmt) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/ggamt_sp_1.f900000644002504400250440000000005012337331323016537 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggamt_sp_1.f900000644002504400250440000001105612337331323017306 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggamt_sp_1 ! !INTERFACE: subroutine ggamt_sp_1(is,rhoup,rhodn,grho,gup,gdn,g2up,g2dn,g3rho,g3up,g3dn) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! is : species number (in,integer) ! rhoup : spin-up density in spherical coordinates (in,real(lmmaxvr,nrmtmax)) ! rhodn : spin-down density (in,real(lmmaxvr,nrmtmax)) ! grho : |grad rho| (out,real(lmmaxvr,nrmtmax)) ! gup : |grad rhoup| (out,real(lmmaxvr,nrmtmax)) ! gdn : |grad rhodn| (out,real(lmmaxvr,nrmtmax)) ! g2up : grad^2 rhoup (out,real(lmmaxvr,nrmtmax)) ! g2dn : grad^2 rhodn (out,real(lmmaxvr,nrmtmax)) ! g3rho : (grad rho).(grad |grad rho|) (out,real(lmmaxvr,nrmtmax)) ! g3up : (grad rhoup).(grad |grad rhoup|) (out,real(lmmaxvr,nrmtmax)) ! g3dn : (grad rhodn).(grad |grad rhodn|) (out,real(lmmaxvr,nrmtmax)) ! !DESCRIPTION: ! Computes $|\nabla\rho|$, $|\nabla\rho^{\uparrow}|$, ! $|\nabla\rho^{\downarrow}|$, $\nabla^2\rho^{\uparrow}$, ! $\nabla^2\rho^{\downarrow}$, $\nabla\rho\cdot(\nabla|\nabla\rho|)$, ! $\nabla\rho^{\uparrow}\cdot(\nabla|\nabla\rho^{\uparrow}|)$ and ! $\nabla\rho^{\downarrow}\cdot(\nabla|\nabla\rho^{\downarrow}|)$ ! for a muffin-tin charge density, as required by the generalised gradient ! approximation functionals of type 1 for spin-polarised densities. The input ! densities and output gradients are in terms of spherical coordinates. See ! routines {\tt potxc} and {\tt modxcifc}. ! ! !REVISION HISTORY: ! Created April 2004 (JKD) ! Simplified and improved, October 2009 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: is real(8), intent(in) :: rhoup(lmmaxvr,nrmtmax) real(8), intent(in) :: rhodn(lmmaxvr,nrmtmax) real(8), intent(out) :: grho(lmmaxvr,nrmtmax) real(8), intent(out) :: gup(lmmaxvr,nrmtmax) real(8), intent(out) :: gdn(lmmaxvr,nrmtmax) real(8), intent(out) :: g2up(lmmaxvr,nrmtmax) real(8), intent(out) :: g2dn(lmmaxvr,nrmtmax) real(8), intent(out) :: g3rho(lmmaxvr,nrmtmax) real(8), intent(out) :: g3up(lmmaxvr,nrmtmax) real(8), intent(out) :: g3dn(lmmaxvr,nrmtmax) ! local variables integer nr,nri,i ! allocatable arrays real(8), allocatable :: rfmt1(:,:),rfmt2(:,:),grfmt(:,:,:) real(8), allocatable :: gvup(:,:,:),gvdn(:,:,:) allocate(rfmt1(lmmaxvr,nrmtmax),rfmt2(lmmaxvr,nrmtmax)) allocate(grfmt(lmmaxvr,nrmtmax,3)) allocate(gvup(lmmaxvr,nrmtmax,3),gvdn(lmmaxvr,nrmtmax,3)) nr=nrmt(is) nri=nrmtinr(is) !----------------! ! rho up ! !----------------! ! convert rhoup to spherical harmonics call rfsht(nr,nri,1,rhoup,1,rfmt1) ! grad rhoup in spherical coordinates call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,gvup(:,:,i)) end do ! |grad rhoup| gup(:,1:nr)=sqrt(gvup(:,1:nr,1)**2+gvup(:,1:nr,2)**2+gvup(:,1:nr,3)**2) ! grad^2 rhoup in spherical coordinates call grad2rfmt(nr,nri,spr(:,is),rfmt1,rfmt2) call rbsht(nr,nri,1,rfmt2,1,g2up) ! (grad rhoup).(grad |grad rhoup|) call rfsht(nr,nri,1,gup,1,rfmt1) call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) g3up(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt1) g3up(:,1:nr)=g3up(:,1:nr)+gvup(:,1:nr,i)*rfmt1(:,1:nr) end do !------------------! ! rho down ! !------------------! ! convert rhodn to spherical harmonics call rfsht(nr,nri,1,rhodn,1,rfmt1) ! grad rhodn in spherical coordinates call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,gvdn(:,:,i)) end do gdn(:,1:nr)=sqrt(gvdn(:,1:nr,1)**2+gvdn(:,1:nr,2)**2+gvdn(:,1:nr,3)**2) ! grad^2 rhodn in spherical coordinates call grad2rfmt(nr,nri,spr(:,is),rfmt1,rfmt2) call rbsht(nr,nri,1,rfmt2,1,g2dn) ! (grad rhodn).(grad |grad rhodn|) call rfsht(nr,nri,1,gdn,1,rfmt1) call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) g3dn(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt1) g3dn(:,1:nr)=g3dn(:,1:nr)+gvdn(:,1:nr,i)*rfmt1(:,1:nr) end do !-------------! ! rho ! !-------------! ! |grad rho| grho(:,1:nr)=sqrt((gvup(:,1:nr,1)+gvdn(:,1:nr,1))**2 & +(gvup(:,1:nr,2)+gvdn(:,1:nr,2))**2 & +(gvup(:,1:nr,3)+gvdn(:,1:nr,3))**2) ! (grad rho).(grad |grad rho|) call rfsht(nr,nri,1,grho,1,rfmt1) call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) g3rho(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt1) g3rho(:,1:nr)=g3rho(:,1:nr)+(gvup(:,1:nr,i)+gvdn(:,1:nr,i))*rfmt1(:,1:nr) end do deallocate(rfmt1,rfmt2,grfmt,gvup,gvdn) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writevclijjk.f900000644002504400250440000000005012337331324017226 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writevclijjk.f900000644002504400250440000000365512337331324020003 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writevclijjk ! !INTERFACE: subroutine writevclijjk ! !USES: use modmain use modmpi ! !DESCRIPTION: ! Generates Coulomb matrix elements of the type $(i-jj-k)$ and outputs them to ! the file {\tt VCLIJJK.OUT}. Also writes the real diagonal of this matrix, ! $(i-jj-i)$, to {\tt VCLIJJI.OUT}. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! local variables integer ik,ist,recl ! allocatable arrays real(8), allocatable :: vclijji(:,:,:) complex(8), allocatable :: vclijjk(:,:,:,:) ! determine record length for vclijji and open file allocate(vclijji(nstsv,nstsv,nkpt)) inquire(iolength=recl) vclijji deallocate(vclijji) open(100,file='VCLIJJI.OUT',action='WRITE',form='UNFORMATTED',access='DIRECT', & recl=recl) ! determine record length for vclijjk and open file allocate(vclijjk(nstsv,nstsv,nstsv,nkpt)) inquire(iolength=recl) vclijjk deallocate(vclijjk) open(101,file='VCLIJJK.OUT',action='WRITE',form='UNFORMATTED',access='DIRECT', & recl=recl) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(vclijji,vclijjk,ist) !$OMP DO do ik=1,nkptnr ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(vclijji(nstsv,nstsv,nkpt)) allocate(vclijjk(nstsv,nstsv,nstsv,nkpt)) !$OMP CRITICAL write(*,'("Info(writevclijjk): ",I6," of ",I6," k-points")') ik,nkptnr !$OMP END CRITICAL ! calculate Coulomb matrix elements of the type (i-jj-k) call genvclijjk(ik,vclijjk) ! make a copy of the diagonal elements (i-jj-i) do ist=1,nstsv vclijji(ist,:,:)=dble(vclijjk(ist,ist,:,:)) end do !$OMP CRITICAL write(100,rec=ik) vclijji write(101,rec=ik) vclijjk !$OMP END CRITICAL deallocate(vclijji,vclijjk) end do !$OMP END DO !$OMP END PARALLEL close(100) close(101) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genffacgp.f900000644002504400250440000000005012337331324016437 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genffacgp.f900000644002504400250440000000153112337331324017203 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genffacgp(is,gpc,ffacgp) use modmain implicit none ! arguments integer, intent(in) :: is real(8), intent(in) :: gpc(ngtot) real(8), intent(out) :: ffacgp(ngtot) ! local variables integer ig real(8) t1,t2 ! external functions real(8) stheta_mp external stheta_mp t1=fourpi/omega do ig=1,ngtot if (gpc(ig).gt.epslat) then t2=gpc(ig)*rmt(is) ffacgp(ig)=t1*(sin(t2)-t2*cos(t2))/(gpc(ig)**3) else ffacgp(ig)=(t1/3.d0)*rmt(is)**3 end if end do ! apply damping if required if (ffdamp) then do ig=1,ngvec t1=(1.d0-(gpc(ig)/gmaxvr)**12)**4 ffacgp(ig)=ffacgp(ig)*t1 end do ffacgp(ngvec+1:ngtot)=0.d0 end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/dhmlaa.f900000644002504400250440000000005012337331324015745 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dhmlaa.f900000644002504400250440000000554612337331324016523 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dhmlaa(ias,ngp,ngpq,apwalm,apwalmq,dapwalm,dapwalmq,ld,dh) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw) complex(8), intent(in) :: dapwalmq(ngkmax,apwordmax,lmmaxapw) integer, intent(in) :: ld complex(8), intent(inout) :: dh(ld,*) ! local variables integer is,io,jo integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3 real(8) t1 complex(8) z1,zsum ! automatic arrays complex(8) x(ngp),y(ngp) is=idxis(ias) lm1=0 do l1=0,lmaxmat do m1=-l1,l1 lm1=lm1+1 do io=1,apword(l1,is) x(:)=0.d0 lm3=0 do l3=0,lmaxmat do m3=-l3,l3 lm3=lm3+1 do jo=1,apword(l3,is) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyyy(lm1,lm2,lm3)*dhaa(lm2,jo,l3,io,l1,ias) end do end if end do if (abs(dble(zsum))+abs(aimag(zsum)).gt.1.d-14) then call zaxpy(ngp,zsum,apwalm(:,jo,lm3,ias),1,x,1) end if end do end do end do if (ias.eq.iasph) then y(:)=0.d0 lm3=0 do l3=0,lmaxmat do m3=-l3,l3 lm3=lm3+1 do jo=1,apword(l3,is) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyry(lm1,lm2,lm3)*haa(lm2,jo,l3,io,l1,ias) end do end if end do if (abs(dble(zsum))+abs(aimag(zsum)).gt.1.d-14) then call zaxpy(ngp,zsum,dapwalm(:,jo,lm3),1,x,1) call zaxpy(ngp,zsum,apwalm(:,jo,lm3,ias),1,y,1) end if end do end do end do call zgerci(ngpq,ngp,zone,dapwalmq(:,io,lm1),y,ld,dh) end if call zgerci(ngpq,ngp,zone,apwalmq(:,io,lm1,ias),x,ld,dh) end do end do end do if (ias.ne.iasph) return ! kinetic surface contribution t1=0.5d0*rmt(is)**2 lm1=0 do l1=0,lmaxmat do m1=-l1,l1 lm1=lm1+1 do io=1,apword(l1,is) do jo=1,apword(l1,is) z1=t1*apwfr(nrmt(is),1,io,l1,ias)*apwdfr(jo,l1,ias) call zgerci(ngpq,ngp,z1,apwalmq(:,io,lm1,ias),dapwalm(:,jo,lm1),ld,dh) call zgerci(ngpq,ngp,z1,dapwalmq(:,io,lm1),apwalm(:,jo,lm1,ias),ld,dh) end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/sfacmag.f900000644002504400250440000000005012337331324016120 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/sfacmag.f900000644002504400250440000000532612337331324016672 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 A. I. Baranov and F. Wagner. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: sfacmag ! !INTERFACE: subroutine sfacmag ! !USES: use modmain use modpw ! !DESCRIPTION: ! Outputs magnetic structure factors, i.e. the Fourier transform coefficients ! of each component $j$ of magnetization ${\bf m}({\bf r})$, ! $$ F_j({\bf H})=\int_{\Omega}d^3r\,m_j({\bf r})e^{i{\bf H}\cdot{\bf r}}, $$ ! to the files {\tt SFACMAG\_j.OUT}. The lattice coordinates $(h,k,l)$ of ! $\bf H$-vectors in this file are transformed by the matrix {\tt vhmat}. See ! also routines {\tt zftrf} and {\tt genhvec}. ! ! !REVISION HISTORY: ! Created July 2010 (Alexey I. Baranov) ! Added multiplicity of the H-vectors, Oct. 2010 (Alexey I. Baranov) !EOP !BOC implicit none ! local variables integer idm,ih,iv(3) real(8) v(3),a,b,r character(256) fname ! allocatable arrays complex(8), allocatable :: zmagh(:) if (.not.spinpol) return ! initialise the structure factor specific variables call sfacinit ! generate the magnetic structure factors allocate(zmagh(nhvec)) do idm=1,ndmag call zftrf(nhvec,ivh,vhc,magmt(:,:,:,idm),magir(:,idm),zmagh) write(fname,'("SFACMAG_",I1.1,".OUT")') idm open(50,file=trim(fname),action='WRITE',form='FORMATTED') write(50,*) write(50,'("h k l indices transformed by vhmat matrix:")') write(50,'(3G18.10)') vhmat(:,1) write(50,'(3G18.10)') vhmat(:,2) write(50,'(3G18.10)') vhmat(:,3) write(50,*) write(50,'(" h k l multipl. |H| Re(F)& & Im(F) |F|")') write(50,*) do ih=1,nhvec ! apply transformation matrix v(:)=vhmat(:,1)*dble(ivh(1,ih)) & +vhmat(:,2)*dble(ivh(2,ih)) & +vhmat(:,3)*dble(ivh(3,ih)) ! in crystallography the forward Fourier transform of real-space density is ! usually done with positive phase and without 1/omega prefactor a=dble(zmagh(ih))*omega b=-aimag(zmagh(ih))*omega r=abs(zmagh(ih))*omega iv(:)=nint(v(:)) if ((abs(v(1)-iv(1)).le.epslat).and. & (abs(v(2)-iv(2)).le.epslat).and. & (abs(v(3)-iv(3)).le.epslat)) then ! integer hkl write(50,'(4I7,4G16.8)') iv(:),mulh(ih),hc(ih),a,b,r else ! non-integer hkl write(50,'(3F7.2,I7,4G16.8)') v(:),mulh(ih),hc(ih),a,b,r end if end do close(50) end do deallocate(zmagh) write(*,*) write(*,'("Info(sfacmag): magnetic structure factors written to & &SFACMAG_j.OUT")') write(*,'(" for magnetic components j = ",3I2)') (idm,idm=1,ndmag) if (ndmag.eq.1) then write(*,'(" (this corresponds to the z-component of the magnetisation)")') end if write(*,*) write(*,'(" Energy window : ",2G18.10)') wsfac(:) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/symmetry.f900000644002504400250440000000005012337331323016407 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/symmetry.f900000644002504400250440000000205412337331323017154 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine symmetry use modmain use modvars implicit none ! inverse of the lattice vector matrix call r3minv(avec,ainv) ! find Bravais lattice symmetries call findsymlat ! use only the identity if required if (symtype.eq.0) nsymlat=1 ! find the crystal symmetries and shift atomic positions if required call findsymcrys ! find the site symmetries call findsymsite ! check if fixed spin moments are invariant under the symmetry group call checkfsm ! check if real symmetric first-variational eigen solver can be used if (.not.tsyminv) tefvr=.false. ! write to VARIABLES.OUT call writevars('nsymlat',iv=nsymlat) call writevars('symlat',nv=9*nsymlat,iva=symlat) call writevars('nsymcrys',iv=nsymcrys) call writevars('vtlsymc',nv=3*nsymcrys,rva=vtlsymc) call writevars('lsplsymc',nv=nsymcrys,iva=lsplsymc) call writevars('lspnsymc',nv=nsymcrys,iva=lspnsymc) return end subroutine elk-2.3.22/src/PaxHeaders.22528/wigner3j.f900000644002504400250440000000005012337331323016246 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/wigner3j.f900000644002504400250440000000507712337331323017023 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: wigner3j ! !INTERFACE: real(8) function wigner3j(j1,j2,j3,m1,m2,m3) ! !INPUT/OUTPUT PARAMETERS: ! j1, j2, j3 : angular momentum quantum numbers (in,integer) ! m1, m2, m3 : magnetic quantum numbers (in,integer) ! !DESCRIPTION: ! Returns the Wigner $3j$-symbol. There are many equivalent formulae for ! the $3j$-symbols, the following provides high accuracy for $j\le 50$ ! \begin{align*} ! &\begin{pmatrix} j_1 & j_2 & j_3 \\ m_1 & m_2 & m_3 \end{pmatrix}= \\ ! &(-1)^{j1+j2+m3}\sqrt{\frac{(j_1+m_1)!\,(j_2+m_2)!\,(j_3+m_3)!\, ! (j_3-m_3)!\,(j_1-m_1)!\,(j_2-m_2)!}{(j_2-j_1+j_3)!\,(j_1-j_2+j_3)!\, ! (j_1+j_2-j_3)!\,(1+j_1+j_2+j_3)!}}\,\sum_k(-1)^k \\ ! &\frac{(j_2-j_1+j_3)!\,(j_1-j_2+j_3)!\,(j_1+j_2-j_3)!}{(j_3-j_1-m_2+k)!\, ! (j_3-j_2+m_1+k)!\,(j_1+j_2-j_3-k)!\,k!\,(j_1-m_1-k)!\,(j_2+m_2-k)!}, ! \end{align*} ! where the sum is over all integers $k$ for which the factorials in the ! summand are non-negative. ! ! !REVISION HISTORY: ! Created November 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: j1,j2,j3 integer, intent(in) :: m1,m2,m3 ! local variables integer k,k1,k2,l1,l2,l3,n1,n2 real(8) sgn,sum,t1 ! external functions real(8) factnm,factr external factnm,factr ! check input variables if ((j1.lt.0).or.(j2.lt.0).or.(j3.lt.0).or.(abs(m1).gt.j1).or.(abs(m2).gt.j2) & .or.(abs(m3).gt.j3)) then write(*,*) write(*,'("Error(wigner3j): invalid arguments :")') write(*,'("j1 = ",I8," j2 = ",I8," j3 = ",I8)') j1,j2,j3 write(*,'("m1 = ",I8," m2 = ",I8," m3 = ",I8)') m1,m2,m3 write(*,*) stop end if if ((j1.eq.0).and.(j2.eq.0).and.(j3.eq.0)) then wigner3j=1.d0 return end if if ((j1.gt.50).or.(j2.gt.50).or.(j3.gt.50)) then write(*,*) write(*,'("Error(wigner3j): angular momenta out of range : ",3I8)') j1,j2,j3 write(*,*) stop end if l1=j2-j1+j3 l2=j1-j2+j3 l3=j1+j2-j3 if ((m1+m2+m3.ne.0).or.(l1.lt.0).or.(l2.lt.0).or.(l3.lt.0)) then wigner3j=0.d0 return end if n1=j1-m1 n2=j2+m2 k1=max(0,n1-l2,n2-l1) k2=min(l3,n1,n2) if (mod(k1-j1+j2+m3,2).ne.0) then sgn=-1.d0 else sgn=1.d0 end if sum=0.d0 do k=k1,k2 t1=sgn*factr(l1,l1-n2+k)*factr(l2,l2-n1+k)*factr(l3,l3-k) sum=sum+t1/(factnm(k,1)*factnm(n1-k,1)*factnm(n2-k,1)) sgn=-sgn end do t1=factr(j1+m1,l1)*factr(j2+m2,l2)*factr(j3+m3,l3) t1=t1*factr(j3-m3,1+j1+j2+j3)*factnm(j1-m1,1)*factnm(j2-m2,1) wigner3j=sum*sqrt(t1) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/Makefile0000644002504400250440000000005012337331324015637 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/Makefile0000644002504400250440000002364412337331324016414 0ustar00dewhurstdewhurst00000000000000 include ../make.inc # modules SRC_modules = modmain.f90 $(SRC_MPI) modmpi.f90 $(SRC_libxc) modxcifc.f90 \ modfxcifc.f90 moddftu.f90 modrdm.f90 modphonon.f90 modscdft.f90 modtest.f90 \ modrandom.f90 modstore.f90 modpw.f90 modvars.f90 modtddft.f90 # main program SRC_main = main.f90 # subroutines and functions SRC_routines = \ findprimcell.f90 charge.f90 moment.f90 genppts.f90 rbsht.f90 rfsht.f90 \ rfinp.f90 rfmtinp.f90 energy.f90 rhonorm.f90 rhocore.f90 energynn.f90 \ zfmtctof.f90 rfmtctof.f90 init0.f90 init1.f90 init2.f90 init3.f90 init4.f90 \ hmlrad.f90 olprad.f90 potks.f90 bfieldks.f90 zpotclmt.f90 zpotcoul.f90 \ writeengy.f90 writechg.f90 ztorflm.f90 rtozflm.f90 potplot.f90 plot1d.f90 \ plot2d.f90 plot3d.f90 genvsig.f90 findswidth.f90 sphcover.f90 allatoms.f90 \ zbsht.f90 zfsht.f90 genylm.f90 genrlm.f90 fderiv.f90 fsmooth.f90 zheri.f90 \ zher2i.f90 lopzflm.f90 potnucl.f90 timesec.f90 rhomag.f90 erf.f90 mae.f90 \ writestate.f90 readstate.f90 rotaxang.f90 axangrot.f90 i3minv.f90 i3mdet.f90 \ i3mtv.f90 r3mv.f90 r3mtv.f90 r3cross.f90 r3minv.f90 r3mdet.f90 r3frac.f90 \ r3mm.f90 r3mtm.f90 r3mmt.f90 zflmconj.f90 rotzflm.f90 z2mm.f90 z2mctm.f90 \ z2mmct.f90 rfmtsm.f90 rhomagsm.f90 gentpmae.f90 symmat.f90 genstrain.f90 \ genshtmat.f90 writeiad.f90 symvect.f90 sbessel.f90 sbesseldm.f90 nuclei.f90 \ polynom.f90 genstress.f90 writestress.f90 latvstep.f90 zfmtadd.f90 occupy.f90 \ putoccsv.f90 getoccsv.f90 linengy.f90 writeinfo.f90 readinput.f90 genylmg.f90 \ writefermi.f90 readfermi.f90 writelinen.f90 writesf.f90 gengvec.f90 match.f90 \ wigner3j.f90 wigner3jf.f90 wigner6j.f90 clebgor.f90 nfftifc.f90 gridsize.f90 \ gaunt.f90 gauntyry.f90 sphcrd.f90 wavefmt.f90 brzint.f90 gcd.f90 sortidx.f90 \ factnm.f90 factr.f90 hermite.f90 roteuler.f90 eulerrot.f90 reciplat.f90 \ fermisurfbxsf.f90 writeeval.f90 rhomagsh.f90 mixpack.f90 readspecies.f90 \ delevec.f90 rdiracint.f90 rdiracdme.f90 rdirac.f90 spline.f90 rschrodint.f90 \ rschroddme.f90 rschrodapp.f90 rfinterp.f90 gencore.f90 genhvec.f90 \ writelat.f90 findigp0.f90 writeforces.f90 genjlgpr.f90 pade.f90 symmetry.f90 \ findsym.f90 findsymcrys.f90 findsymsite.f90 writekpts.f90 olpistl.f90 \ olpaa.f90 olpalo.f90 olplolo.f90 hmlistl.f90 hmlaa.f90 hmlalo.f90 hmllolo.f90 \ writefsm.f90 connect.f90 flushifc.f90 testcheck.f90 checkfsm.f90 atom.f90 \ fsmfield.f90 geomopt.f90 atpstep.f90 bandstr.f90 findsymlat.f90 findkpt.f90 \ putevalfv.f90 getevalfv.f90 mixerifc.f90 axangsu2.f90 wfplot.f90 genwiq2.f90 \ writewiq2.f90 writeefg.f90 gensocfr.f90 nesting.f90 checkmt.f90 mtdmin.f90 \ putevalsv.f90 getevalsv.f90 dos.f90 putevecfv.f90 getevecfv.f90 putevecsv.f90 \ getevecsv.f90 fermisurf.f90 writesym.f90 genidxlo.f90 addlorbcnd.f90 \ genlofr.f90 genapwfr.f90 sdelta.f90 stheta.f90 sdelta_mp.f90 stheta_mp.f90 \ sdelta_fd.f90 stheta_fd.f90 sdelta_sq.f90 stheta_sq.f90 sdelta_lr.f90 \ stheta_lr.f90 vecfbz.f90 mixlinear.f90 mixadapt.f90 mixpulay.f90 \ mixbroyden.f90 ylmrot.f90 ylmroty.f90 rlmrot.f90 rotrflm.f90 radnucl.f90 \ findngkmax.f90 zgerci.f90 gencfun.f90 writegeom.f90 genrmesh.f90 effmass.f90 \ mossbauer.f90 findband.f90 compton.f90 geomplot.f90 genlmirep.f90 \ gndstate.f90 genjlgq0r.f90 findqpt.f90 ssfext.f90 sstask.f90 spiralsc.f90 \ genscss.f90 findscq.f90 writeqpts.f90 writelsj.f90 getcf2pt.f90 proj2d.f90 \ dielectric.f90 nonlinopt.f90 vecplot.f90 gengkvec.f90 wfcrplot.f90 rfpack.f90 \ rfint.f90 energykncr.f90 rhoplot.f90 genwfsv.f90 genwfsvp.f90 eveqn.f90 \ eveqnfv.f90 eveqnfvz.f90 eveqnfvr.f90 eveqnit.f90 eveqnsv.f90 eveqnss.f90 \ genevfsv.f90 zfinp.f90 zfmtinp.f90 rhoinit.f90 grad2rfmt.f90 gendmat.f90 \ symdmat.f90 gensdmat.f90 ggamt_1.f90 ggair_1.f90 ggamt_sp_1.f90 \ ggair_sp_1.f90 ggamt_2a.f90 ggair_2a.f90 ggamt_2b.f90 ggair_2b.f90 \ ggamt_sp_2a.f90 ggair_sp_2a.f90 ggamt_sp_2b.f90 ggair_sp_2b.f90 \ genspecies.f90 writeemd.f90 gensfacgp.f90 rhomagk.f90 wavefcr.f90 exxengy.f90 \ exxengyk.f90 zfmtmul1.f90 zfmtmul2.f90 eveqnhf.f90 genzvclmt.f90 elnes.f90 \ potefield.f90 genffacgp.f90 gentau.f90 gentauk.f90 gentaucr.f90 genzrho.f90 \ potcoul.f90 rtozfmt.f90 ztorfmt.f90 xc_c_tb09.f90 rfirvec.f90 elfplot.f90 \ genexpmt.f90 gradzfmt.f90 gradrfmt.f90 gradzf.f90 gradrf.f90 projsbf.f90 \ genpmat.f90 writepmat.f90 getpmat.f90 gengqrf.f90 moke.f90 sfacinit.f90 \ sfacrho.f90 sfacmag.f90 gradwf2.f90 gradwfcr2.f90 force.f90 forcek.f90 \ symrf.f90 symrfir.f90 symrvfir.f90 symrvf.f90 potxc.f90 oepmain.f90 \ oepresk.f90 oepvcl.f90 oepvclk.f90 genvchi0.f90 genspchi0.f90 epsinv_rpa.f90 \ dbxcplot.f90 genvmat.f90 genvmatk.f90 vclcore.f90 genzmagmt.f90 genzmag.f90 \ zftrf.f90 zftzf.f90 writehmlbse.f90 hmlxbse.f90 hmlxbsek.f90 hmldbse.f90 \ hmldbsek.f90 dielectric_bse.f90 genidxbse.f90 writeevbse.f90 hartfock.f90 \ hflocal.f90 genkmatc.f90 zrhogp.f90 genwfpw.f90 writewfpw.f90 getwfpw.f90 \ genbmatk.f90 genexpmat.f90 writeexpmat.f90 rvfcross.f90 rfarray.f90 \ rotdmat.f90 hrmdmat.f90 genfspecies.f90 writespecies.f90 massnucl.f90 SRC_phonon = \ phononsc.f90 dyntask.f90 genscph.f90 phdisp.f90 readdyn.f90 dynqtor.f90 \ dynrtoq.f90 dynsymapp.f90 dynsym.f90 dynev.f90 dynevs.f90 phdos.f90 \ sumrule.f90 writephn.f90 phfext.f90 writegamma.f90 readgamma.f90 phlwidth.f90 \ alpha2f.f90 writelambda.f90 phscdelete.f90 ephcouple.f90 genephmat.f90 \ eliashberg.f90 phdvs.f90 writedvs.f90 readdvs.f90 readalpha2f.f90 \ mcmillan.f90 phonon.f90 dforce.f90 dmatch.f90 dhmlaa.f90 dhmlalo.f90 \ dhmllolo.f90 dhmlistl.f90 dolpaa.f90 dolpalo.f90 dolpistl.f90 putdevalfv.f90 \ getdevalfv.f90 dhmlrad.f90 putdevecfv.f90 getdevecfv.f90 putdevecsv.f90 \ getdevecsv.f90 deveqnfv.f90 gendcfun.f90 dwavefmt.f90 gendsocfr.f90 \ dpotcoul.f90 dpotxc.f90 gendvsig.f90 dpotks.f90 phmixpack.f90 zfpack.f90 \ gendwfsv.f90 drhomagk.f90 gradrhomt.f90 phdelete.f90 gengvsmt.f90 dforcek.f90 \ hmlaaq.f90 hmlaloq.f90 olpaaq.f90 olpaloq.f90 SRC_SCDFT = \ hmlbdg.f90 eveqnbdg.f90 scdft.f90 genachi.f90 bdginv.f90 achiinit.f90 \ genidxbdg.f90 SRC_DFTU = \ gendmatmt.f90 genveedu.f90 genvmatmt.f90 writedftu.f90 readalphadu.f90 \ fyukawa.f90 fyukawa0.f90 genfdufr.f90 energyfdu.f90 writeefdu.f90 \ zbessela.f90 zbesselb.f90 readdmatmt.f90 genfdu.f90 findlambdadu.f90 \ readfdu.f90 writetmdu.f90 writetm2du.f90 writetm3du.f90 dmtotm2.f90 \ dmtotm3.f90 tm2todm.f90 tm3todm.f90 pottm2.f90 pottm3.f90 tm2pol.f90 \ tm3pol.f90 gendmftm.f90 ftmfield.f90 writeftm.f90 SRC_RDMFT = \ rdmft.f90 rdmdkdc.f90 rdmminc.f90 rdmvaryc.f90 rdmdedc.f90 rdmenergy.f90 \ rdmengyxc.f90 rdmwritededn.f90 rdmwriteengy.f90 rdmminn.f90 rdmvaryn.f90 \ rdmdedn.f90 rdmdexcdn.f90 genvclijji.f90 genvclijjk.f90 getvclijji.f90 \ getvclijjk.f90 writevclijji.f90 writevclijjk.f90 rdmdexcdc.f90 rdmdtsdn.f90 \ rdmentropy.f90 rdmeval.f90 SRC_TDDFT = tddftlr.f90 genvfxc.f90 genfxcr.f90 genspfxcr.f90 genvfxcg.f90 \ tddftsplr.f90 genspfxcg.f90 genafieldt.f90 readafieldt.f90 tddft.f90 \ writetddft.f90 genpmatc.f90 genvbmatk.f90 SRC_XC = \ xc_pzca.f90 xc_pwca.f90 xc_pbe.f90 xc_am05.f90 xc_xalpha.f90 xc_wc06.f90 \ x_wc06.f90 x_pbe.f90 c_pbe.f90 c_pbe_gcor.f90 xc_vbh.f90 fxc_pwca.f90 SRC = $(SRC_modules) $(SRC_FFT) $(SRC_main) $(SRC_routines) $(SRC_phonon) \ $(SRC_SCDFT) $(SRC_XC) $(SRC_DFTU) $(SRC_RDMFT) $(SRC_TDDFT) OBJ = $(SRC:.f90=.o) EXE = elk #------------------------------------------------------------------------------- # Suffix rules #------------------------------------------------------------------------------- .SUFFIXES: .o .f90 .f90.o: $(F90) $(F90_OPTS) -c $< #------------------------------------------------------------------------------- # Targets #------------------------------------------------------------------------------- elk: $(OBJ) $(F90) $(F90_OPTS) -o $(EXE) $(OBJ) $(LIB_LPK) $(LIB_FFT) $(LIB_libxc) \ $(LIB_SYS) blas: cd BLAS; $(MAKE); cp blas.a .. lapack: cd LAPACK; $(MAKE); cp lapack.a .. fft: cd fftlib; $(MAKE); cp fftlib.a .. all: blas lapack fft elk clean: rm -f *.o *.mod *~ ifc* *.gcno gmon.out *.aux *.dvi *.log \ elk.pdf *.tex *.toc $(EXE) cleanall: cd BLAS; $(MAKE) clean cd LAPACK; $(MAKE) clean cd fftlib; $(MAKE) clean $(MAKE) clean doc: rm -f elk.aux elk.bbl elk.blg elk.log elk.pdf elk.tex elk.toc elk.lst ls $(SRC_modules) $(SRC_routines) $(SRC_XC) $(SRC_phonon) $(SRC_DFTU) \ $(SRC_RDMFT) $(SRC_TDDFT) > elk.lst ./protex -F -s $(SRC_main) $$(cat elk.lst) > elk.tex pdflatex elk;pdflatex elk;pdflatex elk backup: tar -czf elk.tgz *.f90 fftlib eos spacegroup junk BLAS LAPACK \ Makefile notes.txt ../docs ../examples ../tests protex ../COPYING \ ../README elk_silhouette.pdf depend gentest genalltests \ checklist.txt rmspaces grepelk VERSION = $$(awk -F"/" '/data version/ {print $$2}' modmain.f90 | sed 's/ //g;s/,/./g')$ NAME = elk-$(VERSION) RELEASE = ../release/$(NAME) release: rm -rf $(RELEASE) mkdir $(RELEASE) cd BLAS; $(MAKE) clean cd LAPACK; $(MAKE) clean cd fftlib; $(MAKE) clean cd eos; $(MAKE) clean cd spacegroup; $(MAKE) clean cd ..; find . -type f -name *~ -exec rm -f {} \; cd ..; find . -type f -name gmon.out -exec rm -f {} \; cd ..; find . -type f -name RUNNING -exec rm -f {} \; mkdir $(RELEASE)/src cp -r BLAS $(RELEASE)/src cp -r LAPACK $(RELEASE)/src cp -r fftlib $(RELEASE)/src cp -r eos $(RELEASE)/src cp -r spacegroup $(RELEASE)/src cp $(SRC) Makefile protex elk_silhouette.pdf $(RELEASE)/src cp libxc_funcs.f90 libxc.f90 libxcifc.f90 $(RELEASE)/src cp zfftifc.f90 zfftifc_fftw.f90 zfftifc_mkl.f90 $(RELEASE)/src cp -r ../examples $(RELEASE) cp -r ../tests $(RELEASE) mkdir $(RELEASE)/species cp ../species/*.in $(RELEASE)/species cp -r ../utilities $(RELEASE) cp ../COPYING $(RELEASE) cp ../README $(RELEASE) cp ../release_notes.txt $(RELEASE) cp ../Makefile $(RELEASE) cp ../setup $(RELEASE) cp ../make.def $(RELEASE) $(MAKE) doc cp elk.pdf ../docs cd spacegroup;$(MAKE) doc;cp spacegroup.pdf ../../docs;$(MAKE) clean cp -r ../docs $(RELEASE) tar -C ../release -czf ../release/$(NAME).tgz $(NAME) cp ../docs/elk.pdf ../release cp ../docs/spacegroup.pdf ../release lines: cat $(SRC) | wc -l spaces: ./rmspaces $(SRC) elk-2.3.22/src/PaxHeaders.22528/linengy.f900000644002504400250440000000005012337331323016163 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/linengy.f900000644002504400250440000000645312337331323016737 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: linengy ! !INTERFACE: subroutine linengy ! !USES: use modmain use modmpi ! !DESCRIPTION: ! Calculates the new linearisation energies for both the APW and local-orbital ! radial functions. See the routine {\tt findband}. ! ! !REVISION HISTORY: ! Created May 2003 (JKD) !EOP !BOC implicit none ! local variables logical fnd integer is,ia,ja,ias,jas integer l,ilo,io,jo,nnf ! automatic arrays logical done(natmmax) real(8) vr(nrmtmax) nnf=0 ! begin loops over atoms and species do is=1,nspecies done(:)=.false. do ia=1,natoms(is) if (done(ia)) cycle ias=idxas(ia,is) vr(1:nrmt(is))=vsmt(1,1:nrmt(is),ias)*y00 !-----------------------! ! APW functions ! !-----------------------! do l=0,lmaxapw do io=1,apword(l,is) if (apwve(io,l,is)) then ! check if previous radial functions have same default energies do jo=1,io-1 if (apwve(jo,l,is)) then if (abs(apwe0(io,l,is)-apwe0(jo,l,is)).lt.1.d-4) then apwe(io,l,ias)=apwe(jo,l,ias) goto 10 end if end if end do ! find the band energy starting from default apwe(io,l,ias)=apwe0(io,l,is) call findband(solsc,l,0,nrmt(is),spr(:,is),vr,epsband,demaxbnd, & apwe(io,l,ias),fnd) if (.not.fnd) nnf=nnf+1 else ! set linearisation energy automatically if (autolinengy) apwe(io,l,ias)=efermi+dlefe end if 10 continue end do end do !---------------------------------! ! local-orbital functions ! !---------------------------------! do ilo=1,nlorb(is) do io=1,lorbord(ilo,is) if (lorbve(io,ilo,is)) then ! check if previous radial functions have same default energies do jo=1,io-1 if (lorbve(jo,ilo,is)) then if (abs(lorbe0(io,ilo,is)-lorbe0(jo,ilo,is)).lt.1.d-4) then lorbe(io,ilo,ias)=lorbe(jo,ilo,ias) goto 20 end if end if end do l=lorbl(ilo,is) ! find the band energy starting from default lorbe(io,ilo,ias)=lorbe0(io,ilo,is) call findband(solsc,l,0,nrmt(is),spr(:,is),vr,epsband,demaxbnd, & lorbe(io,ilo,ias),fnd) if (.not.fnd) nnf=nnf+1 else ! set linearisation energy automatically if (autolinengy) lorbe(io,ilo,ias)=efermi+dlefe end if 20 continue end do end do done(ia)=.true. ! copy to equivalent atoms do ja=1,natoms(is) if ((.not.done(ja)).and.(eqatoms(ia,ja,is))) then jas=idxas(ja,is) do l=0,lmaxapw do io=1,apword(l,is) apwe(io,l,jas)=apwe(io,l,ias) end do end do do ilo=1,nlorb(is) do io=1,lorbord(ilo,is) lorbe(io,ilo,jas)=lorbe(io,ilo,ias) end do end do done(ja)=.true. end if end do ! end loops over atoms and species end do end do if ((nnf.gt.0).and.mp_mpi) then write(*,*) write(*,'("Warning(linengy): could not find ",I3," linearisation energies & &in s.c. loop ",I5)') nnf,iscl end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/olplolo.f900000644002504400250440000000005012337331323016176 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/olplolo.f900000644002504400250440000000143412337331323016744 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine olplolo(ias,ngp,ld,o) use modmain implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp integer, intent(in) :: ld complex(8), intent(inout) :: o(ld,*) ! local variables integer is,ilo,jlo integer l,m,lm,i,j is=idxis(ias) do ilo=1,nlorb(is) l=lorbl(ilo,is) do jlo=1,nlorb(is) if (lorbl(jlo,is).eq.l) then do m=-l,l lm=idxlm(l,m) i=ngp+idxlo(lm,ilo,ias) j=ngp+idxlo(lm,jlo,ias) if (i.le.j) then o(i,j)=o(i,j)+ololo(ilo,jlo,ias) end if end do end if end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/genfspecies.f900000644002504400250440000000005012337331324017012 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genfspecies.f900000644002504400250440000000647012337331324017565 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genfspecies(zn,symb) use modmain use modmpi implicit none ! arguments real(8), intent(in) :: zn character(256), intent(in) :: symb ! local variables integer, parameter :: nit=4 integer nst,ist,jst integer nmax,in,il,ik integer nrm,nr,ir,it integer n(maxspst),l(maxspst),k(maxspst) integer idx(maxspst),iv(maxspst) real(8) rm,rmin,rmax real(8) mass,t1,t2,t3 real(8) occ(maxspst),eval(maxspst),rv(maxspst) character(256) name ! allocatable arrays real(8), allocatable :: r(:),rho(:),vr(:),rwf(:,:,:) ! external functions real(8) massnucl external massnucl name='Fractional species' ! set up the initial occupancies occ(:)=0.d0 t1=abs(zn) nmax=1 ist=0 do in=1,maxspst do il=0,in-1 do ik=max(il,1),il+1 t2=dble(2*ik) t2=min(t2,t1) ist=ist+1 n(ist)=in l(ist)=il k(ist)=ik occ(ist)=t2 if (t2.gt.epsocc) nmax=in t1=t1-t2 if (ist.eq.maxspst) then if (t1.gt.epsocc) then write(*,*) write(*,'("Error(genfspecies): too many states for fractional & &species ",A)') trim(symb) write(*,*) stop else goto 10 end if end if end do end do end do 10 continue ! minimum radius rmin=2.d-6/sqrt(abs(zn)) ! initial maximum radius rmax=100.d0 ! initial muffin-tin radius rm=2.d0 ! number of points to muffin-tin radius nrm=100*(nmax+1) ! iterate the solution but not to self-consistency do it=1,nit ! number of points to effective infinity t1=log(rm/rmin) t2=log(rmax/rmin) t3=dble(nrm)*t2/t1 nr=int(t3) allocate(r(nr),rho(nr),vr(nr),rwf(nr,2,maxspst)) ! generate logarithmic radial mesh t2=t1/dble(nrm-1) do ir=1,nr r(ir)=rmin*exp(dble(ir-1)*t2) end do ! solve the Kohn-Sham-Dirac equation for the atom call atom(sol,.true.,zn,maxspst,n,l,k,occ,3,0,nr,r,eval,rho,vr,rwf) ! check for spurious eigenvalues do ist=2,maxspst if (eval(ist).lt.eval(1)) eval(ist)=1.d6 end do ! recompute the effective infinity do ir=nr,1,-1 if (rho(ir).gt.1.d-20) then rmax=1.75d0*r(ir) exit end if end do ! estimate the muffin-tin radius do ir=nr,1,-1 if (rho(ir).gt.2.d-2) then rm=r(ir) exit end if end do if (rm.lt.1.d0) rm=1.d0 if (rm.gt.3.2d0) rm=3.2d0 ! sort the eigenvalues call sortidx(maxspst,eval,idx) ! recompute the occupancies occ(:)=0.d0 t1=abs(zn) do ist=1,maxspst jst=idx(ist) ik=k(jst) t2=dble(2*ik) t2=min(t2,t1) occ(jst)=t2 t1=t1-t2 end do deallocate(r,rho,vr,rwf) end do ! rearrange the arrays iv(:)=n(:) n(:)=iv(idx(:)) iv(:)=l(:) l(:)=iv(idx(:)) iv(:)=k(:) k(:)=iv(idx(:)) rv(:)=occ(:) occ(:)=rv(idx(:)) rv(:)=eval(:) eval(:)=rv(idx(:)) ! find the number of occupied states nst=0 do ist=1,maxspst if (occ(ist).lt.epsocc) then nst=ist exit end if end do ! estimate the nuclear mass mass=massnucl(zn) ! convert from 'atomic mass units' to atomic units mass=mass*amu ! write the species file call writespecies(symb,name,zn,mass,rmin,rm,rmax,nrm,nst,n,l,k,occ,eval) if (mp_mpi) then write(*,*) write(*,'("Info(genfspecies): wrote fractional species file ",A,".in")') & trim(symb) end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmdedn.f900000644002504400250440000000005012337331324016134 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmdedn.f900000644002504400250440000000255012337331324016702 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmdedn ! !INTERFACE: subroutine rdmdedn(dedn) ! !USES: use modmain use modrdm ! !INPUT/OUTPUT PARAMETERS: ! dedn : free energy derivative (out,real(nstsv,nkpt)) ! !DESCRIPTION: ! Calculates the negative of the derivative of total free energy w.r.t. ! occupation numbers. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! arguments real(8), intent(out) :: dedn(nstsv,nkpt) ! allocatable complex(8), allocatable :: evecsv(:,:) complex(8), allocatable :: c(:,:) integer ik,ist !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evecsv,c,ist) !$OMP DO do ik=1,nkpt allocate(evecsv(nstsv,nstsv)) allocate(c(nstsv,nstsv)) ! get eigenvectors from file call getevecsv(vkl(:,ik),evecsv) ! kinetic and Coulomb potential contribution call zgemm('C','N',nstsv,nstsv,nstsv,zone,evecsv,nstsv,dkdc(:,:,ik),nstsv, & zzero,c,nstsv) do ist=1,nstsv dedn(ist,ik)=-(dble(c(ist,ist))+dble(vclmat(ist,ist,ik))) end do deallocate(evecsv,c) end do !$OMP END DO !$OMP END PARALLEL ! add exchange correlation contribution call rdmdexcdn(dedn) ! add entropic contribution if needed if (rdmtemp.gt.0.d0) call rdmdtsdn(dedn) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rhomagsm.f900000644002504400250440000000005012337331323016333 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rhomagsm.f900000644002504400250440000000117012337331323017076 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine rhomagsm use modmain implicit none ! local variables integer is,ias,idm if (msmooth.eq.0) return ! smooth the muffin-tin density do ias=1,natmtot is=idxis(ias) call rfmtsm(msmooth,lmmaxvr,nrmt(is),lmmaxvr,rhomt(:,:,ias)) end do ! smooth the muffin-tin magnetisation do idm=1,ndmag do ias=1,natmtot is=idxis(ias) call rfmtsm(msmooth,lmmaxvr,nrmt(is),lmmaxvr,magmt(:,:,ias,idm)) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/charge.f900000644002504400250440000000005012337331322015746 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/charge.f900000644002504400250440000000221012337331322016505 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: charge ! !INTERFACE: subroutine charge ! !USES: use modmain use modtest ! !DESCRIPTION: ! Computes the muffin-tin, interstitial and total charges by integrating the ! density. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! local variables integer is,ias,ir real(8) t1 ! automatic arrays real(8) fr(nrmtmax),gr(nrmtmax) ! external functions real(8) ddot external ddot ! find the muffin-tin charges chgmttot=0.d0 do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) fr(ir)=rhomt(1,ir,ias)*spr(ir,is)**2 end do call fderiv(-1,nrmt(is),spr(:,is),fr,gr) chgmt(ias)=fourpi*y00*gr(nrmt(is)) chgmttot=chgmttot+chgmt(ias) end do ! find the interstitial charge t1=ddot(ngtot,rhoir,1,cfunir,1) chgir=t1*omega/dble(ngtot) ! total calculated charge chgcalc=chgmttot+chgir ! write calculated total charge to test file call writetest(400,'calculated total charge',tol=1.d-6,rv=chgcalc) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/effmass.f900000644002504400250440000000005012337331323016142 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/effmass.f900000644002504400250440000001123712337331323016712 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst and S. Sharma. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine effmass use modmain implicit none ! local variables integer, parameter :: lwork=10 integer ik,ik0,ist,info integer i,j,k,l,m,n integer i1,i2,i3,j1,j2,j3 real(8) d(3,3),em(3,3) real(8) v1(3),v2(3) real(8) w(3),work(lwork) ! allocatable arrays integer, allocatable :: ipiv(:) real(8), allocatable :: a(:,:) real(8), allocatable :: b(:,:,:,:) real(8), allocatable :: c(:,:,:) real(8), allocatable :: evalfv(:,:) complex(8), allocatable :: evecfv(:,:,:) complex(8), allocatable :: evecsv(:,:) ! initialise universal variables call init0 call init1 allocate(ipiv(nkpt)) allocate(a(nkpt,nkpt)) n=2*ndspem+1 allocate(b(0:n-1,0:n-1,0:n-1,nstsv)) allocate(c(0:n-1,0:n-1,0:n-1)) ! read density and potentials from file call readstate ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr ik0=0 ! begin parallel loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evalfv,evecfv,evecsv) & !$OMP PRIVATE(i1,i2,i3,j1,j2,j3,ist) !$OMP DO do ik=1,nkpt allocate(evalfv(nstfv,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) i1=ivk(1,ik); i2=ivk(2,ik); i3=ivk(3,ik) if ((i1.eq.0).and.(i2.eq.0).and.(i3.eq.0)) ik0=ik ! solve the first- and second-variational eigenvalue equations call eveqn(ik,evalfv,evecfv,evecsv) ! copy eigenvalues to new array j1=i1+ndspem; j2=i2+ndspem; j3=i3+ndspem do ist=1,nstsv b(j1,j2,j3,ist)=evalsv(ist,ik) end do deallocate(evalfv,evecfv,evecsv) end do !$OMP END DO !$OMP END PARALLEL ! set up polynomial matrix i=0 do i3=-ndspem,ndspem do i2=-ndspem,ndspem do i1=-ndspem,ndspem i=i+1 v1(1)=dble(i1); v1(2)=dble(i2); v1(3)=dble(i3) v1(:)=v1(:)*deltaem j=0 v2(3)=1.d0 do j3=0,n-1 v2(2)=1.d0 do j2=0,n-1 v2(1)=1.d0 do j1=0,n-1 j=j+1 a(i,j)=v2(1)*v2(2)*v2(3) v2(1)=v2(1)*v1(1) end do v2(2)=v2(2)*v1(2) end do v2(3)=v2(3)*v1(3) end do end do end do end do ! solve for the polynomial coefficients call dgesv(nkpt,nstsv,a,nkpt,ipiv,b,nkpt,info) if (info.ne.0) then write(*,*) write(*,'("Error(effmass): could not determine polynomial coefficients")') write(*,'(" DGESV returned INFO = ",I8)') info write(*,*) stop end if open(50,file='EFFMASS.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("(effective mass matrices are in Cartesian coordinates)")') write(50,*) write(50,'("k-point (lattice coordinates) :")') write(50,'(3G18.10)') vklem write(50,*) write(50,'("k-point (Cartesian coordinates) :")') call r3mv(bvec,vklem,v1) write(50,'(3G18.10)') v1 ! begin loop over states do ist=1,nstsv ! compute matrix of derivatives with respect to k-vector do k=1,3 do l=1,3 c(:,:,:)=b(:,:,:,ist) do i=1,2 if (i.eq.1) then m=k else m=l end if if (m.eq.1) then do j=0,n-2 c(j,:,:)=dble(j+1)*c(j+1,:,:) end do c(n-1,:,:)=0.d0 else if (m.eq.2) then do j=0,n-2 c(:,j,:)=dble(j+1)*c(:,j+1,:) end do c(:,n-1,:)=0.d0 else if (m.eq.3) then do j=0,n-2 c(:,:,j)=dble(j+1)*c(:,:,j+1) end do c(:,:,n-1)=0.d0 end if end do ! derivative evaluated at zero d(k,l)=c(0,0,0) end do end do write(50,*) write(50,*) write(50,'("State, eigenvalue : ",I6,G18.10)') ist,evalsv(ist,ik0) write(50,*) write(50,'(" matrix of eigenvalue derivatives with respect to k :")') do i=1,3 write(50,'(3G18.10)') (d(i,j),j=1,3) end do write(50,'(" trace : ",G18.10)') d(1,1)+d(2,2)+d(3,3) ! invert derivative matrix call r3minv(d,em) write(50,*) write(50,'(" effective mass tensor (inverse of derivative matrix) :")') do i=1,3 write(50,'(3G18.10)') (em(i,j),j=1,3) end do write(50,'(" trace : ",G18.10)') em(1,1)+em(2,2)+em(3,3) ! find the eigenvalues call dsyev('N','U',3,em,3,w,work,lwork,info) write(50,'(" eigenvalues :")') write(50,'(3G18.10)') w ! end loop over states end do close(50) write(*,*) write(*,'("Info(effmass):")') write(*,'(" Effective mass tensor for each state written to EFFMASS.OUT")') write(*,'(" for k-point (lattice) ",3G18.10)') vklem deallocate(ipiv,a,b,c) return end subroutine elk-2.3.22/src/PaxHeaders.22528/olpaloq.f900000644002504400250440000000005012337331324016166 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/olpaloq.f900000644002504400250440000000202212337331324016726 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine olpaloq(ias,ngp,ngpq,apwalm,apwalmq,ld,oq) use modmain implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) integer, intent(in) :: ld complex(8), intent(inout) :: oq(ld,*) ! local variables integer is,ilo,io integer l,m,lm,i,j is=idxis(ias) do ilo=1,nlorb(is) l=lorbl(ilo,is) do m=-l,l lm=idxlm(l,m) j=ngp+idxlo(lm,ilo,ias) do i=1,ngpq do io=1,apword(l,is) oq(i,j)=oq(i,j)+conjg(apwalmq(i,io,lm,ias))*oalo(io,ilo,ias) end do end do i=ngpq+idxlo(lm,ilo,ias) do j=1,ngp do io=1,apword(l,is) oq(i,j)=oq(i,j)+oalo(io,ilo,ias)*apwalm(j,io,lm,ias) end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/LAPACK0000644002504400250440000000005012337331322015053 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/0000755002504400250440000000000012337331322015674 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/src/LAPACK/PaxHeaders.22528/dgetrs.f0000644002504400250440000000005012337331322016567 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dgetrs.f0000644002504400250440000001360412337331322017337 0ustar00dewhurstdewhurst00000000000000*> \brief \b DGETRS * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DGETRS + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DGETRS( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * .. Scalar Arguments .. * CHARACTER TRANS * INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DGETRS solves a system of linear equations *> A * X = B or A**T * X = B *> with a general N-by-N matrix A using the LU factorization computed *> by DGETRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> Specifies the form of the system of equations: *> = 'N': A * X = B (No transpose) *> = 'T': A**T* X = B (Transpose) *> = 'C': A**T* X = B (Conjugate transpose = Transpose) *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] NRHS *> \verbatim *> NRHS is INTEGER *> The number of right hand sides, i.e., the number of columns *> of the matrix B. NRHS >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The factors L and U from the factorization A = P*L*U *> as computed by DGETRF. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> The pivot indices from DGETRF; for 1<=i<=N, row i of the *> matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB,NRHS) *> On entry, the right hand side matrix B. *> On exit, the solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleGEcomputational * * ===================================================================== SUBROUTINE DGETRS( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER TRANS INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL NOTRAN * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL DLASWP, DTRSM, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 NOTRAN = LSAME( TRANS, 'N' ) IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT. $ LSAME( TRANS, 'C' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( NRHS.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DGETRS', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 .OR. NRHS.EQ.0 ) $ RETURN * IF( NOTRAN ) THEN * * Solve A * X = B. * * Apply row interchanges to the right hand sides. * CALL DLASWP( NRHS, B, LDB, 1, N, IPIV, 1 ) * * Solve L*X = B, overwriting B with X. * CALL DTRSM( 'Left', 'Lower', 'No transpose', 'Unit', N, NRHS, $ ONE, A, LDA, B, LDB ) * * Solve U*X = B, overwriting B with X. * CALL DTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', N, $ NRHS, ONE, A, LDA, B, LDB ) ELSE * * Solve A**T * X = B. * * Solve U**T *X = B, overwriting B with X. * CALL DTRSM( 'Left', 'Upper', 'Transpose', 'Non-unit', N, NRHS, $ ONE, A, LDA, B, LDB ) * * Solve L**T *X = B, overwriting B with X. * CALL DTRSM( 'Left', 'Lower', 'Transpose', 'Unit', N, NRHS, ONE, $ A, LDA, B, LDB ) * * Apply row interchanges to the solution vectors. * CALL DLASWP( NRHS, B, LDB, 1, N, IPIV, -1 ) END IF * RETURN * * End of DGETRS * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlaruv.f0000644002504400250440000000005012337331322016574 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlaruv.f0000644002504400250440000004412412337331322017345 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLARUV returns a vector of n random real numbers from a uniform distribution. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLARUV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLARUV( ISEED, N, X ) * * .. Scalar Arguments .. * INTEGER N * .. * .. Array Arguments .. * INTEGER ISEED( 4 ) * DOUBLE PRECISION X( N ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLARUV returns a vector of n random real numbers from a uniform (0,1) *> distribution (n <= 128). *> *> This is an auxiliary routine called by DLARNV and ZLARNV. *> \endverbatim * * Arguments: * ========== * *> \param[in,out] ISEED *> \verbatim *> ISEED is INTEGER array, dimension (4) *> On entry, the seed of the random number generator; the array *> elements must be between 0 and 4095, and ISEED(4) must be *> odd. *> On exit, the seed is updated. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of random numbers to be generated. N <= 128. *> \endverbatim *> *> \param[out] X *> \verbatim *> X is DOUBLE PRECISION array, dimension (N) *> The generated random numbers. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> This routine uses a multiplicative congruential method with modulus *> 2**48 and multiplier 33952834046453 (see G.S.Fishman, *> 'Multiplicative congruential random number generators with modulus *> 2**b: an exhaustive analysis for b = 32 and a partial analysis for *> b = 48', Math. Comp. 189, pp 331-344, 1990). *> *> 48-bit integers are stored in 4 integer array elements with 12 bits *> per element. Hence the routine is portable across machines with *> integers of 32 bits or more. *> \endverbatim *> * ===================================================================== SUBROUTINE DLARUV( ISEED, N, X ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER N * .. * .. Array Arguments .. INTEGER ISEED( 4 ) DOUBLE PRECISION X( N ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D0 ) INTEGER LV, IPW2 DOUBLE PRECISION R PARAMETER ( LV = 128, IPW2 = 4096, R = ONE / IPW2 ) * .. * .. Local Scalars .. INTEGER I, I1, I2, I3, I4, IT1, IT2, IT3, IT4, J * .. * .. Local Arrays .. INTEGER MM( LV, 4 ) * .. * .. Intrinsic Functions .. INTRINSIC DBLE, MIN, MOD * .. * .. Data statements .. DATA ( MM( 1, J ), J = 1, 4 ) / 494, 322, 2508, $ 2549 / DATA ( MM( 2, J ), J = 1, 4 ) / 2637, 789, 3754, $ 1145 / DATA ( MM( 3, J ), J = 1, 4 ) / 255, 1440, 1766, $ 2253 / DATA ( MM( 4, J ), J = 1, 4 ) / 2008, 752, 3572, $ 305 / DATA ( MM( 5, J ), J = 1, 4 ) / 1253, 2859, 2893, $ 3301 / DATA ( MM( 6, J ), J = 1, 4 ) / 3344, 123, 307, $ 1065 / DATA ( MM( 7, J ), J = 1, 4 ) / 4084, 1848, 1297, $ 3133 / DATA ( MM( 8, J ), J = 1, 4 ) / 1739, 643, 3966, $ 2913 / DATA ( MM( 9, J ), J = 1, 4 ) / 3143, 2405, 758, $ 3285 / DATA ( MM( 10, J ), J = 1, 4 ) / 3468, 2638, 2598, $ 1241 / DATA ( MM( 11, J ), J = 1, 4 ) / 688, 2344, 3406, $ 1197 / DATA ( MM( 12, J ), J = 1, 4 ) / 1657, 46, 2922, $ 3729 / DATA ( MM( 13, J ), J = 1, 4 ) / 1238, 3814, 1038, $ 2501 / DATA ( MM( 14, J ), J = 1, 4 ) / 3166, 913, 2934, $ 1673 / DATA ( MM( 15, J ), J = 1, 4 ) / 1292, 3649, 2091, $ 541 / DATA ( MM( 16, J ), J = 1, 4 ) / 3422, 339, 2451, $ 2753 / DATA ( MM( 17, J ), J = 1, 4 ) / 1270, 3808, 1580, $ 949 / DATA ( MM( 18, J ), J = 1, 4 ) / 2016, 822, 1958, $ 2361 / DATA ( MM( 19, J ), J = 1, 4 ) / 154, 2832, 2055, $ 1165 / DATA ( MM( 20, J ), J = 1, 4 ) / 2862, 3078, 1507, $ 4081 / DATA ( MM( 21, J ), J = 1, 4 ) / 697, 3633, 1078, $ 2725 / DATA ( MM( 22, J ), J = 1, 4 ) / 1706, 2970, 3273, $ 3305 / DATA ( MM( 23, J ), J = 1, 4 ) / 491, 637, 17, $ 3069 / DATA ( MM( 24, J ), J = 1, 4 ) / 931, 2249, 854, $ 3617 / DATA ( MM( 25, J ), J = 1, 4 ) / 1444, 2081, 2916, $ 3733 / DATA ( MM( 26, J ), J = 1, 4 ) / 444, 4019, 3971, $ 409 / DATA ( MM( 27, J ), J = 1, 4 ) / 3577, 1478, 2889, $ 2157 / DATA ( MM( 28, J ), J = 1, 4 ) / 3944, 242, 3831, $ 1361 / DATA ( MM( 29, J ), J = 1, 4 ) / 2184, 481, 2621, $ 3973 / DATA ( MM( 30, J ), J = 1, 4 ) / 1661, 2075, 1541, $ 1865 / DATA ( MM( 31, J ), J = 1, 4 ) / 3482, 4058, 893, $ 2525 / DATA ( MM( 32, J ), J = 1, 4 ) / 657, 622, 736, $ 1409 / DATA ( MM( 33, J ), J = 1, 4 ) / 3023, 3376, 3992, $ 3445 / DATA ( MM( 34, J ), J = 1, 4 ) / 3618, 812, 787, $ 3577 / DATA ( MM( 35, J ), J = 1, 4 ) / 1267, 234, 2125, $ 77 / DATA ( MM( 36, J ), J = 1, 4 ) / 1828, 641, 2364, $ 3761 / DATA ( MM( 37, J ), J = 1, 4 ) / 164, 4005, 2460, $ 2149 / DATA ( MM( 38, J ), J = 1, 4 ) / 3798, 1122, 257, $ 1449 / DATA ( MM( 39, J ), J = 1, 4 ) / 3087, 3135, 1574, $ 3005 / DATA ( MM( 40, J ), J = 1, 4 ) / 2400, 2640, 3912, $ 225 / DATA ( MM( 41, J ), J = 1, 4 ) / 2870, 2302, 1216, $ 85 / DATA ( MM( 42, J ), J = 1, 4 ) / 3876, 40, 3248, $ 3673 / DATA ( MM( 43, J ), J = 1, 4 ) / 1905, 1832, 3401, $ 3117 / DATA ( MM( 44, J ), J = 1, 4 ) / 1593, 2247, 2124, $ 3089 / DATA ( MM( 45, J ), J = 1, 4 ) / 1797, 2034, 2762, $ 1349 / DATA ( MM( 46, J ), J = 1, 4 ) / 1234, 2637, 149, $ 2057 / DATA ( MM( 47, J ), J = 1, 4 ) / 3460, 1287, 2245, $ 413 / DATA ( MM( 48, J ), J = 1, 4 ) / 328, 1691, 166, $ 65 / DATA ( MM( 49, J ), J = 1, 4 ) / 2861, 496, 466, $ 1845 / DATA ( MM( 50, J ), J = 1, 4 ) / 1950, 1597, 4018, $ 697 / DATA ( MM( 51, J ), J = 1, 4 ) / 617, 2394, 1399, $ 3085 / DATA ( MM( 52, J ), J = 1, 4 ) / 2070, 2584, 190, $ 3441 / DATA ( MM( 53, J ), J = 1, 4 ) / 3331, 1843, 2879, $ 1573 / DATA ( MM( 54, J ), J = 1, 4 ) / 769, 336, 153, $ 3689 / DATA ( MM( 55, J ), J = 1, 4 ) / 1558, 1472, 2320, $ 2941 / DATA ( MM( 56, J ), J = 1, 4 ) / 2412, 2407, 18, $ 929 / DATA ( MM( 57, J ), J = 1, 4 ) / 2800, 433, 712, $ 533 / DATA ( MM( 58, J ), J = 1, 4 ) / 189, 2096, 2159, $ 2841 / DATA ( MM( 59, J ), J = 1, 4 ) / 287, 1761, 2318, $ 4077 / DATA ( MM( 60, J ), J = 1, 4 ) / 2045, 2810, 2091, $ 721 / DATA ( MM( 61, J ), J = 1, 4 ) / 1227, 566, 3443, $ 2821 / DATA ( MM( 62, J ), J = 1, 4 ) / 2838, 442, 1510, $ 2249 / DATA ( MM( 63, J ), J = 1, 4 ) / 209, 41, 449, $ 2397 / DATA ( MM( 64, J ), J = 1, 4 ) / 2770, 1238, 1956, $ 2817 / DATA ( MM( 65, J ), J = 1, 4 ) / 3654, 1086, 2201, $ 245 / DATA ( MM( 66, J ), J = 1, 4 ) / 3993, 603, 3137, $ 1913 / DATA ( MM( 67, J ), J = 1, 4 ) / 192, 840, 3399, $ 1997 / DATA ( MM( 68, J ), J = 1, 4 ) / 2253, 3168, 1321, $ 3121 / DATA ( MM( 69, J ), J = 1, 4 ) / 3491, 1499, 2271, $ 997 / DATA ( MM( 70, J ), J = 1, 4 ) / 2889, 1084, 3667, $ 1833 / DATA ( MM( 71, J ), J = 1, 4 ) / 2857, 3438, 2703, $ 2877 / DATA ( MM( 72, J ), J = 1, 4 ) / 2094, 2408, 629, $ 1633 / DATA ( MM( 73, J ), J = 1, 4 ) / 1818, 1589, 2365, $ 981 / DATA ( MM( 74, J ), J = 1, 4 ) / 688, 2391, 2431, $ 2009 / DATA ( MM( 75, J ), J = 1, 4 ) / 1407, 288, 1113, $ 941 / DATA ( MM( 76, J ), J = 1, 4 ) / 634, 26, 3922, $ 2449 / DATA ( MM( 77, J ), J = 1, 4 ) / 3231, 512, 2554, $ 197 / DATA ( MM( 78, J ), J = 1, 4 ) / 815, 1456, 184, $ 2441 / DATA ( MM( 79, J ), J = 1, 4 ) / 3524, 171, 2099, $ 285 / DATA ( MM( 80, J ), J = 1, 4 ) / 1914, 1677, 3228, $ 1473 / DATA ( MM( 81, J ), J = 1, 4 ) / 516, 2657, 4012, $ 2741 / DATA ( MM( 82, J ), J = 1, 4 ) / 164, 2270, 1921, $ 3129 / DATA ( MM( 83, J ), J = 1, 4 ) / 303, 2587, 3452, $ 909 / DATA ( MM( 84, J ), J = 1, 4 ) / 2144, 2961, 3901, $ 2801 / DATA ( MM( 85, J ), J = 1, 4 ) / 3480, 1970, 572, $ 421 / DATA ( MM( 86, J ), J = 1, 4 ) / 119, 1817, 3309, $ 4073 / DATA ( MM( 87, J ), J = 1, 4 ) / 3357, 676, 3171, $ 2813 / DATA ( MM( 88, J ), J = 1, 4 ) / 837, 1410, 817, $ 2337 / DATA ( MM( 89, J ), J = 1, 4 ) / 2826, 3723, 3039, $ 1429 / DATA ( MM( 90, J ), J = 1, 4 ) / 2332, 2803, 1696, $ 1177 / DATA ( MM( 91, J ), J = 1, 4 ) / 2089, 3185, 1256, $ 1901 / DATA ( MM( 92, J ), J = 1, 4 ) / 3780, 184, 3715, $ 81 / DATA ( MM( 93, J ), J = 1, 4 ) / 1700, 663, 2077, $ 1669 / DATA ( MM( 94, J ), J = 1, 4 ) / 3712, 499, 3019, $ 2633 / DATA ( MM( 95, J ), J = 1, 4 ) / 150, 3784, 1497, $ 2269 / DATA ( MM( 96, J ), J = 1, 4 ) / 2000, 1631, 1101, $ 129 / DATA ( MM( 97, J ), J = 1, 4 ) / 3375, 1925, 717, $ 1141 / DATA ( MM( 98, J ), J = 1, 4 ) / 1621, 3912, 51, $ 249 / DATA ( MM( 99, J ), J = 1, 4 ) / 3090, 1398, 981, $ 3917 / DATA ( MM( 100, J ), J = 1, 4 ) / 3765, 1349, 1978, $ 2481 / DATA ( MM( 101, J ), J = 1, 4 ) / 1149, 1441, 1813, $ 3941 / DATA ( MM( 102, J ), J = 1, 4 ) / 3146, 2224, 3881, $ 2217 / DATA ( MM( 103, J ), J = 1, 4 ) / 33, 2411, 76, $ 2749 / DATA ( MM( 104, J ), J = 1, 4 ) / 3082, 1907, 3846, $ 3041 / DATA ( MM( 105, J ), J = 1, 4 ) / 2741, 3192, 3694, $ 1877 / DATA ( MM( 106, J ), J = 1, 4 ) / 359, 2786, 1682, $ 345 / DATA ( MM( 107, J ), J = 1, 4 ) / 3316, 382, 124, $ 2861 / DATA ( MM( 108, J ), J = 1, 4 ) / 1749, 37, 1660, $ 1809 / DATA ( MM( 109, J ), J = 1, 4 ) / 185, 759, 3997, $ 3141 / DATA ( MM( 110, J ), J = 1, 4 ) / 2784, 2948, 479, $ 2825 / DATA ( MM( 111, J ), J = 1, 4 ) / 2202, 1862, 1141, $ 157 / DATA ( MM( 112, J ), J = 1, 4 ) / 2199, 3802, 886, $ 2881 / DATA ( MM( 113, J ), J = 1, 4 ) / 1364, 2423, 3514, $ 3637 / DATA ( MM( 114, J ), J = 1, 4 ) / 1244, 2051, 1301, $ 1465 / DATA ( MM( 115, J ), J = 1, 4 ) / 2020, 2295, 3604, $ 2829 / DATA ( MM( 116, J ), J = 1, 4 ) / 3160, 1332, 1888, $ 2161 / DATA ( MM( 117, J ), J = 1, 4 ) / 2785, 1832, 1836, $ 3365 / DATA ( MM( 118, J ), J = 1, 4 ) / 2772, 2405, 1990, $ 361 / DATA ( MM( 119, J ), J = 1, 4 ) / 1217, 3638, 2058, $ 2685 / DATA ( MM( 120, J ), J = 1, 4 ) / 1822, 3661, 692, $ 3745 / DATA ( MM( 121, J ), J = 1, 4 ) / 1245, 327, 1194, $ 2325 / DATA ( MM( 122, J ), J = 1, 4 ) / 2252, 3660, 20, $ 3609 / DATA ( MM( 123, J ), J = 1, 4 ) / 3904, 716, 3285, $ 3821 / DATA ( MM( 124, J ), J = 1, 4 ) / 2774, 1842, 2046, $ 3537 / DATA ( MM( 125, J ), J = 1, 4 ) / 997, 3987, 2107, $ 517 / DATA ( MM( 126, J ), J = 1, 4 ) / 2573, 1368, 3508, $ 3017 / DATA ( MM( 127, J ), J = 1, 4 ) / 1148, 1848, 3525, $ 2141 / DATA ( MM( 128, J ), J = 1, 4 ) / 545, 2366, 3801, $ 1537 / * .. * .. Executable Statements .. * I1 = ISEED( 1 ) I2 = ISEED( 2 ) I3 = ISEED( 3 ) I4 = ISEED( 4 ) * DO 10 I = 1, MIN( N, LV ) * 20 CONTINUE * * Multiply the seed by i-th power of the multiplier modulo 2**48 * IT4 = I4*MM( I, 4 ) IT3 = IT4 / IPW2 IT4 = IT4 - IPW2*IT3 IT3 = IT3 + I3*MM( I, 4 ) + I4*MM( I, 3 ) IT2 = IT3 / IPW2 IT3 = IT3 - IPW2*IT2 IT2 = IT2 + I2*MM( I, 4 ) + I3*MM( I, 3 ) + I4*MM( I, 2 ) IT1 = IT2 / IPW2 IT2 = IT2 - IPW2*IT1 IT1 = IT1 + I1*MM( I, 4 ) + I2*MM( I, 3 ) + I3*MM( I, 2 ) + $ I4*MM( I, 1 ) IT1 = MOD( IT1, IPW2 ) * * Convert 48-bit integer to a real number in the interval (0,1) * X( I ) = R*( DBLE( IT1 )+R*( DBLE( IT2 )+R*( DBLE( IT3 )+R* $ DBLE( IT4 ) ) ) ) * IF (X( I ).EQ.1.0D0) THEN * If a real number has n bits of precision, and the first * n bits of the 48-bit integer above happen to be all 1 (which * will occur about once every 2**n calls), then X( I ) will * be rounded to exactly 1.0. * Since X( I ) is not supposed to return exactly 0.0 or 1.0, * the statistically correct thing to do in this situation is * simply to iterate again. * N.B. the case X( I ) = 0.0 should not be possible. I1 = I1 + 2 I2 = I2 + 2 I3 = I3 + 2 I4 = I4 + 2 GOTO 20 END IF * 10 CONTINUE * * Return final value of seed * ISEED( 1 ) = IT1 ISEED( 2 ) = IT2 ISEED( 3 ) = IT3 ISEED( 4 ) = IT4 RETURN * * End of DLARUV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsyevx.f0000644002504400250440000000005012337331322016621 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsyevx.f0000644002504400250440000004214212337331322017370 0ustar00dewhurstdewhurst00000000000000*> \brief DSYEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYEVX + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, * ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, * IFAIL, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, RANGE, UPLO * INTEGER IL, INFO, IU, LDA, LDZ, LWORK, M, N * DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. * INTEGER IFAIL( * ), IWORK( * ) * DOUBLE PRECISION A( LDA, * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYEVX computes selected eigenvalues and, optionally, eigenvectors *> of a real symmetric matrix A. Eigenvalues and eigenvectors can be *> selected by specifying either a range of values or a range of indices *> for the desired eigenvalues. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] RANGE *> \verbatim *> RANGE is CHARACTER*1 *> = 'A': all eigenvalues will be found. *> = 'V': all eigenvalues in the half-open interval (VL,VU] *> will be found. *> = 'I': the IL-th through IU-th eigenvalues will be found. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA, N) *> On entry, the symmetric matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of A contains the *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. *> On exit, the lower triangle (if UPLO='L') or the upper *> triangle (if UPLO='U') of A, including the diagonal, is *> destroyed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION *> \endverbatim *> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER *> \endverbatim *> *> \param[in] IU *> \verbatim *> IU is INTEGER *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim *> *> \param[in] ABSTOL *> \verbatim *> ABSTOL is DOUBLE PRECISION *> The absolute error tolerance for the eigenvalues. *> An approximate eigenvalue is accepted as converged *> when it is determined to lie in an interval [a,b] *> of width less than or equal to *> *> ABSTOL + EPS * max( |a|,|b| ) , *> *> where EPS is the machine precision. If ABSTOL is less than *> or equal to zero, then EPS*|T| will be used in its place, *> where |T| is the 1-norm of the tridiagonal matrix obtained *> by reducing A to tridiagonal form. *> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*DLAMCH('S'), not zero. *> If this routine returns with INFO>0, indicating that some *> eigenvectors did not converge, try setting ABSTOL to *> 2*DLAMCH('S'). *> *> See "Computing Small Singular Values of Bidiagonal Matrices *> with Guaranteed High Relative Accuracy," by Demmel and *> Kahan, LAPACK Working Note #3. *> \endverbatim *> *> \param[out] M *> \verbatim *> M is INTEGER *> The total number of eigenvalues found. 0 <= M <= N. *> If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> On normal exit, the first M elements contain the selected *> eigenvalues in ascending order. *> \endverbatim *> *> \param[out] Z *> \verbatim *> Z is DOUBLE PRECISION array, dimension (LDZ, max(1,M)) *> If JOBZ = 'V', then if INFO = 0, the first M columns of Z *> contain the orthonormal eigenvectors of the matrix A *> corresponding to the selected eigenvalues, with the i-th *> column of Z holding the eigenvector associated with W(i). *> If an eigenvector fails to converge, then that column of Z *> contains the latest approximation to the eigenvector, and the *> index of the eigenvector is returned in IFAIL. *> If JOBZ = 'N', then Z is not referenced. *> Note: the user must ensure that at least max(1,M) columns are *> supplied in the array Z; if RANGE = 'V', the exact value of M *> is not known in advance and an upper bound must be used. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= 1, and if *> JOBZ = 'V', LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of the array WORK. LWORK >= 1, when N <= 1; *> otherwise 8*N. *> For optimal efficiency, LWORK >= (NB+3)*N, *> where NB is the max of the blocksize for DSYTRD and DORMTR *> returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (5*N) *> \endverbatim *> *> \param[out] IFAIL *> \verbatim *> IFAIL is INTEGER array, dimension (N) *> If JOBZ = 'V', then if INFO = 0, the first M elements of *> IFAIL are zero. If INFO > 0, then IFAIL contains the *> indices of the eigenvectors that failed to converge. *> If JOBZ = 'N', then IFAIL is not referenced. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, then i eigenvectors failed to converge. *> Their indices are stored in array IFAIL. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYeigen * * ===================================================================== SUBROUTINE DSYEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, $ ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, $ IFAIL, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, RANGE, UPLO INTEGER IL, INFO, IU, LDA, LDZ, LWORK, M, N DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. INTEGER IFAIL( * ), IWORK( * ) DOUBLE PRECISION A( LDA, * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL ALLEIG, INDEIG, LOWER, LQUERY, TEST, VALEIG, $ WANTZ CHARACTER ORDER INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL, $ INDISP, INDIWO, INDTAU, INDWKN, INDWRK, ISCALE, $ ITMP1, J, JJ, LLWORK, LLWRKN, LWKMIN, $ LWKOPT, NB, NSPLIT DOUBLE PRECISION ABSTLL, ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, $ SIGMA, SMLNUM, TMP1, VLL, VUU * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV DOUBLE PRECISION DLAMCH, DLANSY EXTERNAL LSAME, ILAENV, DLAMCH, DLANSY * .. * .. External Subroutines .. EXTERNAL DCOPY, DLACPY, DORGTR, DORMTR, DSCAL, DSTEBZ, $ DSTEIN, DSTEQR, DSTERF, DSWAP, DSYTRD, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * LOWER = LSAME( UPLO, 'L' ) WANTZ = LSAME( JOBZ, 'V' ) ALLEIG = LSAME( RANGE, 'A' ) VALEIG = LSAME( RANGE, 'V' ) INDEIG = LSAME( RANGE, 'I' ) LQUERY = ( LWORK.EQ.-1 ) * INFO = 0 IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -1 ELSE IF( .NOT.( ALLEIG .OR. VALEIG .OR. INDEIG ) ) THEN INFO = -2 ELSE IF( .NOT.( LOWER .OR. LSAME( UPLO, 'U' ) ) ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -6 ELSE IF( VALEIG ) THEN IF( N.GT.0 .AND. VU.LE.VL ) $ INFO = -8 ELSE IF( INDEIG ) THEN IF( IL.LT.1 .OR. IL.GT.MAX( 1, N ) ) THEN INFO = -9 ELSE IF( IU.LT.MIN( N, IL ) .OR. IU.GT.N ) THEN INFO = -10 END IF END IF END IF IF( INFO.EQ.0 ) THEN IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.N ) ) THEN INFO = -15 END IF END IF * IF( INFO.EQ.0 ) THEN IF( N.LE.1 ) THEN LWKMIN = 1 WORK( 1 ) = LWKMIN ELSE LWKMIN = 8*N NB = ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) NB = MAX( NB, ILAENV( 1, 'DORMTR', UPLO, N, -1, -1, -1 ) ) LWKOPT = MAX( LWKMIN, ( NB + 3 )*N ) WORK( 1 ) = LWKOPT END IF * IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) $ INFO = -17 END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYEVX', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * M = 0 IF( N.EQ.0 ) THEN RETURN END IF * IF( N.EQ.1 ) THEN IF( ALLEIG .OR. INDEIG ) THEN M = 1 W( 1 ) = A( 1, 1 ) ELSE IF( VL.LT.A( 1, 1 ) .AND. VU.GE.A( 1, 1 ) ) THEN M = 1 W( 1 ) = A( 1, 1 ) END IF END IF IF( WANTZ ) $ Z( 1, 1 ) = ONE RETURN END IF * * Get machine constants. * SAFMIN = DLAMCH( 'Safe minimum' ) EPS = DLAMCH( 'Precision' ) SMLNUM = SAFMIN / EPS BIGNUM = ONE / SMLNUM RMIN = SQRT( SMLNUM ) RMAX = MIN( SQRT( BIGNUM ), ONE / SQRT( SQRT( SAFMIN ) ) ) * * Scale matrix to allowable range, if necessary. * ISCALE = 0 ABSTLL = ABSTOL IF( VALEIG ) THEN VLL = VL VUU = VU END IF ANRM = DLANSY( 'M', UPLO, N, A, LDA, WORK ) IF( ANRM.GT.ZERO .AND. ANRM.LT.RMIN ) THEN ISCALE = 1 SIGMA = RMIN / ANRM ELSE IF( ANRM.GT.RMAX ) THEN ISCALE = 1 SIGMA = RMAX / ANRM END IF IF( ISCALE.EQ.1 ) THEN IF( LOWER ) THEN DO 10 J = 1, N CALL DSCAL( N-J+1, SIGMA, A( J, J ), 1 ) 10 CONTINUE ELSE DO 20 J = 1, N CALL DSCAL( J, SIGMA, A( 1, J ), 1 ) 20 CONTINUE END IF IF( ABSTOL.GT.0 ) $ ABSTLL = ABSTOL*SIGMA IF( VALEIG ) THEN VLL = VL*SIGMA VUU = VU*SIGMA END IF END IF * * Call DSYTRD to reduce symmetric matrix to tridiagonal form. * INDTAU = 1 INDE = INDTAU + N INDD = INDE + N INDWRK = INDD + N LLWORK = LWORK - INDWRK + 1 CALL DSYTRD( UPLO, N, A, LDA, WORK( INDD ), WORK( INDE ), $ WORK( INDTAU ), WORK( INDWRK ), LLWORK, IINFO ) * * If all eigenvalues are desired and ABSTOL is less than or equal to * zero, then call DSTERF or DORGTR and SSTEQR. If this fails for * some eigenvalue, then try DSTEBZ. * TEST = .FALSE. IF( INDEIG ) THEN IF( IL.EQ.1 .AND. IU.EQ.N ) THEN TEST = .TRUE. END IF END IF IF( ( ALLEIG .OR. TEST ) .AND. ( ABSTOL.LE.ZERO ) ) THEN CALL DCOPY( N, WORK( INDD ), 1, W, 1 ) INDEE = INDWRK + 2*N IF( .NOT.WANTZ ) THEN CALL DCOPY( N-1, WORK( INDE ), 1, WORK( INDEE ), 1 ) CALL DSTERF( N, W, WORK( INDEE ), INFO ) ELSE CALL DLACPY( 'A', N, N, A, LDA, Z, LDZ ) CALL DORGTR( UPLO, N, Z, LDZ, WORK( INDTAU ), $ WORK( INDWRK ), LLWORK, IINFO ) CALL DCOPY( N-1, WORK( INDE ), 1, WORK( INDEE ), 1 ) CALL DSTEQR( JOBZ, N, W, WORK( INDEE ), Z, LDZ, $ WORK( INDWRK ), INFO ) IF( INFO.EQ.0 ) THEN DO 30 I = 1, N IFAIL( I ) = 0 30 CONTINUE END IF END IF IF( INFO.EQ.0 ) THEN M = N GO TO 40 END IF INFO = 0 END IF * * Otherwise, call DSTEBZ and, if eigenvectors are desired, SSTEIN. * IF( WANTZ ) THEN ORDER = 'B' ELSE ORDER = 'E' END IF INDIBL = 1 INDISP = INDIBL + N INDIWO = INDISP + N CALL DSTEBZ( RANGE, ORDER, N, VLL, VUU, IL, IU, ABSTLL, $ WORK( INDD ), WORK( INDE ), M, NSPLIT, W, $ IWORK( INDIBL ), IWORK( INDISP ), WORK( INDWRK ), $ IWORK( INDIWO ), INFO ) * IF( WANTZ ) THEN CALL DSTEIN( N, WORK( INDD ), WORK( INDE ), M, W, $ IWORK( INDIBL ), IWORK( INDISP ), Z, LDZ, $ WORK( INDWRK ), IWORK( INDIWO ), IFAIL, INFO ) * * Apply orthogonal matrix used in reduction to tridiagonal * form to eigenvectors returned by DSTEIN. * INDWKN = INDE LLWRKN = LWORK - INDWKN + 1 CALL DORMTR( 'L', UPLO, 'N', N, M, A, LDA, WORK( INDTAU ), Z, $ LDZ, WORK( INDWKN ), LLWRKN, IINFO ) END IF * * If matrix was scaled, then rescale eigenvalues appropriately. * 40 CONTINUE IF( ISCALE.EQ.1 ) THEN IF( INFO.EQ.0 ) THEN IMAX = M ELSE IMAX = INFO - 1 END IF CALL DSCAL( IMAX, ONE / SIGMA, W, 1 ) END IF * * If eigenvalues are not in order, then sort them, along with * eigenvectors. * IF( WANTZ ) THEN DO 60 J = 1, M - 1 I = 0 TMP1 = W( J ) DO 50 JJ = J + 1, M IF( W( JJ ).LT.TMP1 ) THEN I = JJ TMP1 = W( JJ ) END IF 50 CONTINUE * IF( I.NE.0 ) THEN ITMP1 = IWORK( INDIBL+I-1 ) W( I ) = W( J ) IWORK( INDIBL+I-1 ) = IWORK( INDIBL+J-1 ) W( J ) = TMP1 IWORK( INDIBL+J-1 ) = ITMP1 CALL DSWAP( N, Z( 1, I ), 1, Z( 1, J ), 1 ) IF( INFO.NE.0 ) THEN ITMP1 = IFAIL( I ) IFAIL( I ) = IFAIL( J ) IFAIL( J ) = ITMP1 END IF END IF 60 CONTINUE END IF * * Set WORK(1) to optimal workspace size. * WORK( 1 ) = LWKOPT * RETURN * * End of DSYEVX * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dorgql.f0000644002504400250440000000005012337331322016567 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dorgql.f0000644002504400250440000002002612337331322017333 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORGQL * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORGQL + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORGQL generates an M-by-N real matrix Q with orthonormal columns, *> which is defined as the last N columns of a product of K elementary *> reflectors of order M *> *> Q = H(k) . . . H(2) H(1) *> *> as returned by DGEQLF. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix Q. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix Q. M >= N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines the *> matrix Q. N >= K >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the (n-k+i)-th column must contain the vector which *> defines the elementary reflector H(i), for i = 1,2,...,k, as *> returned by DGEQLF in the last k columns of its array *> argument A. *> On exit, the M-by-N matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The first dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DGEQLF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument has an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IB, IINFO, IWS, J, KK, L, LDWORK, LWKOPT, $ NB, NBMIN, NX * .. * .. External Subroutines .. EXTERNAL DLARFB, DLARFT, DORG2L, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LQUERY = ( LWORK.EQ.-1 ) IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 END IF * IF( INFO.EQ.0 ) THEN IF( N.EQ.0 ) THEN LWKOPT = 1 ELSE NB = ILAENV( 1, 'DORGQL', ' ', M, N, K, -1 ) LWKOPT = N*NB END IF WORK( 1 ) = LWKOPT * IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -8 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORGQL', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.LE.0 ) THEN RETURN END IF * NBMIN = 2 NX = 0 IWS = N IF( NB.GT.1 .AND. NB.LT.K ) THEN * * Determine when to cross over from blocked to unblocked code. * NX = MAX( 0, ILAENV( 3, 'DORGQL', ' ', M, N, K, -1 ) ) IF( NX.LT.K ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: reduce NB and * determine the minimum value of NB. * NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'DORGQL', ' ', M, N, K, -1 ) ) END IF END IF END IF * IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN * * Use blocked code after the first block. * The last kk columns are handled by the block method. * KK = MIN( K, ( ( K-NX+NB-1 ) / NB )*NB ) * * Set A(m-kk+1:m,1:n-kk) to zero. * DO 20 J = 1, N - KK DO 10 I = M - KK + 1, M A( I, J ) = ZERO 10 CONTINUE 20 CONTINUE ELSE KK = 0 END IF * * Use unblocked code for the first or only block. * CALL DORG2L( M-KK, N-KK, K-KK, A, LDA, TAU, WORK, IINFO ) * IF( KK.GT.0 ) THEN * * Use blocked code * DO 50 I = K - KK + 1, K, NB IB = MIN( NB, K-I+1 ) IF( N-K+I.GT.1 ) THEN * * Form the triangular factor of the block reflector * H = H(i+ib-1) . . . H(i+1) H(i) * CALL DLARFT( 'Backward', 'Columnwise', M-K+I+IB-1, IB, $ A( 1, N-K+I ), LDA, TAU( I ), WORK, LDWORK ) * * Apply H to A(1:m-k+i+ib-1,1:n-k+i-1) from the left * CALL DLARFB( 'Left', 'No transpose', 'Backward', $ 'Columnwise', M-K+I+IB-1, N-K+I-1, IB, $ A( 1, N-K+I ), LDA, WORK, LDWORK, A, LDA, $ WORK( IB+1 ), LDWORK ) END IF * * Apply H to rows 1:m-k+i+ib-1 of current block * CALL DORG2L( M-K+I+IB-1, IB, IB, A( 1, N-K+I ), LDA, $ TAU( I ), WORK, IINFO ) * * Set rows m-k+i+ib:m of current block to zero * DO 40 J = N - K + I, N - K + I + IB - 1 DO 30 L = M - K + I + IB, M A( L, J ) = ZERO 30 CONTINUE 40 CONTINUE 50 CONTINUE END IF * WORK( 1 ) = IWS RETURN * * End of DORGQL * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgehrd.f0000644002504400250440000000005012337331322016562 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgehrd.f0000644002504400250440000002511212337331322017327 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGEHRD * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGEHRD + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, INFO, LDA, LWORK, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGEHRD reduces a complex general matrix A to upper Hessenberg form H by *> an unitary similarity transformation: Q**H * A * Q = H . *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> *> It is assumed that A is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally *> set by a previous call to ZGEBAL; otherwise they should be *> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the N-by-N general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the unitary matrix Q as a product of elementary *> reflectors. See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to *> zero. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (LWORK) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16GEcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors *> *> Q = H(ilo) H(ilo+1) . . . H(ihi-1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on *> exit in A(i+2:ihi,i), and tau in TAU(i). *> *> The contents of A are illustrated by the following example, with *> n = 7, ilo = 2 and ihi = 6: *> *> on entry, on exit, *> *> ( a a a a a a a ) ( a a h h h h a ) *> ( a a a a a a ) ( a h h h h a ) *> ( a a a a a a ) ( h h h h h h ) *> ( a a a a a a ) ( v2 h h h h h ) *> ( a a a a a a ) ( v2 v3 h h h h ) *> ( a a a a a a ) ( v2 v3 v4 h h h ) *> ( a ) ( a ) *> *> where a denotes an element of the original matrix A, h denotes a *> modified element of the upper Hessenberg matrix H, and vi denotes an *> element of the vector defining H(i). *> *> This file is a slight modification of LAPACK-3.0's DGEHRD *> subroutine incorporating improvements proposed by Quintana-Orti and *> Van de Geijn (2006). (See DLAHR2.) *> \endverbatim *> * ===================================================================== SUBROUTINE ZGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER IHI, ILO, INFO, LDA, LWORK, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. INTEGER NBMAX, LDT PARAMETER ( NBMAX = 64, LDT = NBMAX+1 ) COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ), $ ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IB, IINFO, IWS, J, LDWORK, LWKOPT, NB, $ NBMIN, NH, NX COMPLEX*16 EI * .. * .. Local Arrays .. COMPLEX*16 T( LDT, NBMAX ) * .. * .. External Subroutines .. EXTERNAL ZAXPY, ZGEHD2, ZGEMM, ZLAHR2, ZLARFB, ZTRMM, $ XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 NB = MIN( NBMAX, ILAENV( 1, 'ZGEHRD', ' ', N, ILO, IHI, -1 ) ) LWKOPT = N*NB WORK( 1 ) = LWKOPT LQUERY = ( LWORK.EQ.-1 ) IF( N.LT.0 ) THEN INFO = -1 ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN INFO = -2 ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGEHRD', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Set elements 1:ILO-1 and IHI:N-1 of TAU to zero * DO 10 I = 1, ILO - 1 TAU( I ) = ZERO 10 CONTINUE DO 20 I = MAX( 1, IHI ), N - 1 TAU( I ) = ZERO 20 CONTINUE * * Quick return if possible * NH = IHI - ILO + 1 IF( NH.LE.1 ) THEN WORK( 1 ) = 1 RETURN END IF * * Determine the block size * NB = MIN( NBMAX, ILAENV( 1, 'ZGEHRD', ' ', N, ILO, IHI, -1 ) ) NBMIN = 2 IWS = 1 IF( NB.GT.1 .AND. NB.LT.NH ) THEN * * Determine when to cross over from blocked to unblocked code * (last block is always handled by unblocked code) * NX = MAX( NB, ILAENV( 3, 'ZGEHRD', ' ', N, ILO, IHI, -1 ) ) IF( NX.LT.NH ) THEN * * Determine if workspace is large enough for blocked code * IWS = N*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: determine the * minimum value of NB, and reduce NB or force use of * unblocked code * NBMIN = MAX( 2, ILAENV( 2, 'ZGEHRD', ' ', N, ILO, IHI, $ -1 ) ) IF( LWORK.GE.N*NBMIN ) THEN NB = LWORK / N ELSE NB = 1 END IF END IF END IF END IF LDWORK = N * IF( NB.LT.NBMIN .OR. NB.GE.NH ) THEN * * Use unblocked code below * I = ILO * ELSE * * Use blocked code * DO 40 I = ILO, IHI - 1 - NX, NB IB = MIN( NB, IHI-I ) * * Reduce columns i:i+ib-1 to Hessenberg form, returning the * matrices V and T of the block reflector H = I - V*T*V**H * which performs the reduction, and also the matrix Y = A*V*T * CALL ZLAHR2( IHI, I, IB, A( 1, I ), LDA, TAU( I ), T, LDT, $ WORK, LDWORK ) * * Apply the block reflector H to A(1:ihi,i+ib:ihi) from the * right, computing A := A - Y * V**H. V(i+ib,ib-1) must be set * to 1 * EI = A( I+IB, I+IB-1 ) A( I+IB, I+IB-1 ) = ONE CALL ZGEMM( 'No transpose', 'Conjugate transpose', $ IHI, IHI-I-IB+1, $ IB, -ONE, WORK, LDWORK, A( I+IB, I ), LDA, ONE, $ A( 1, I+IB ), LDA ) A( I+IB, I+IB-1 ) = EI * * Apply the block reflector H to A(1:i,i+1:i+ib-1) from the * right * CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose', $ 'Unit', I, IB-1, $ ONE, A( I+1, I ), LDA, WORK, LDWORK ) DO 30 J = 0, IB-2 CALL ZAXPY( I, -ONE, WORK( LDWORK*J+1 ), 1, $ A( 1, I+J+1 ), 1 ) 30 CONTINUE * * Apply the block reflector H to A(i+1:ihi,i+ib:n) from the * left * CALL ZLARFB( 'Left', 'Conjugate transpose', 'Forward', $ 'Columnwise', $ IHI-I, N-I-IB+1, IB, A( I+1, I ), LDA, T, LDT, $ A( I+1, I+IB ), LDA, WORK, LDWORK ) 40 CONTINUE END IF * * Use unblocked code to reduce the rest of the matrix * CALL ZGEHD2( N, I, IHI, A, LDA, TAU, WORK, IINFO ) WORK( 1 ) = IWS * RETURN * * End of ZGEHRD * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zrot.f0000644002504400250440000000005012337331322016275 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zrot.f0000644002504400250440000001015612337331322017044 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZROT applies a plane rotation with real cosine and complex sine to a pair of complex vectors. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZROT + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZROT( N, CX, INCX, CY, INCY, C, S ) * * .. Scalar Arguments .. * INTEGER INCX, INCY, N * DOUBLE PRECISION C * COMPLEX*16 S * .. * .. Array Arguments .. * COMPLEX*16 CX( * ), CY( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZROT applies a plane rotation, where the cos (C) is real and the *> sin (S) is complex, and the vectors CX and CY are complex. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The number of elements in the vectors CX and CY. *> \endverbatim *> *> \param[in,out] CX *> \verbatim *> CX is COMPLEX*16 array, dimension (N) *> On input, the vector X. *> On output, CX is overwritten with C*X + S*Y. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The increment between successive values of CY. INCX <> 0. *> \endverbatim *> *> \param[in,out] CY *> \verbatim *> CY is COMPLEX*16 array, dimension (N) *> On input, the vector Y. *> On output, CY is overwritten with -CONJG(S)*X + C*Y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> The increment between successive values of CY. INCX <> 0. *> \endverbatim *> *> \param[in] C *> \verbatim *> C is DOUBLE PRECISION *> \endverbatim *> *> \param[in] S *> \verbatim *> S is COMPLEX*16 *> C and S define a rotation *> [ C S ] *> [ -conjg(S) C ] *> where C*C + S*CONJG(S) = 1.0. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZROT( N, CX, INCX, CY, INCY, C, S ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INCX, INCY, N DOUBLE PRECISION C COMPLEX*16 S * .. * .. Array Arguments .. COMPLEX*16 CX( * ), CY( * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, IX, IY COMPLEX*16 STEMP * .. * .. Intrinsic Functions .. INTRINSIC DCONJG * .. * .. Executable Statements .. * IF( N.LE.0 ) $ RETURN IF( INCX.EQ.1 .AND. INCY.EQ.1 ) $ GO TO 20 * * Code for unequal increments or equal increments not equal to 1 * IX = 1 IY = 1 IF( INCX.LT.0 ) $ IX = ( -N+1 )*INCX + 1 IF( INCY.LT.0 ) $ IY = ( -N+1 )*INCY + 1 DO 10 I = 1, N STEMP = C*CX( IX ) + S*CY( IY ) CY( IY ) = C*CY( IY ) - DCONJG( S )*CX( IX ) CX( IX ) = STEMP IX = IX + INCX IY = IY + INCY 10 CONTINUE RETURN * * Code for both increments equal to 1 * 20 CONTINUE DO 30 I = 1, N STEMP = C*CX( I ) + S*CY( I ) CY( I ) = C*CY( I ) - DCONJG( S )*CX( I ) CX( I ) = STEMP 30 CONTINUE RETURN END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhetd2.f0000644002504400250440000000005012337331322016477 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhetd2.f0000644002504400250440000002373312337331322017253 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHETD2 reduces a Hermitian matrix to real symmetric tridiagonal form by an unitary similarity transformation (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHETD2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHETD2( UPLO, N, A, LDA, D, E, TAU, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION D( * ), E( * ) * COMPLEX*16 A( LDA, * ), TAU( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHETD2 reduces a complex Hermitian matrix A to real symmetric *> tridiagonal form T by a unitary similarity transformation: *> Q**H * A * Q = T. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> Hermitian matrix A is stored: *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the leading *> n-by-n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n-by-n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> On exit, if UPLO = 'U', the diagonal and first superdiagonal *> of A are overwritten by the corresponding elements of the *> tridiagonal matrix T, and the elements above the first *> superdiagonal, with the array TAU, represent the unitary *> matrix Q as a product of elementary reflectors; if UPLO *> = 'L', the diagonal and first subdiagonal of A are over- *> written by the corresponding elements of the tridiagonal *> matrix T, and the elements below the first subdiagonal, with *> the array TAU, represent the unitary matrix Q as a product *> of elementary reflectors. See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). *> \endverbatim *> *> \param[out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16HEcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(n-1) . . . H(2) H(1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in *> A(1:i-1,i+1), and tau in TAU(i). *> *> If UPLO = 'L', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(1) H(2) . . . H(n-1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i), *> and tau in TAU(i). *> *> The contents of A on exit are illustrated by the following examples *> with n = 5: *> *> if UPLO = 'U': if UPLO = 'L': *> *> ( d e v2 v3 v4 ) ( d ) *> ( d e v3 v4 ) ( e d ) *> ( d e v4 ) ( v1 e d ) *> ( d e ) ( v1 v2 e d ) *> ( d ) ( v1 v2 v3 e d ) *> *> where d and e denote diagonal and off-diagonal elements of T, and vi *> denotes an element of the vector defining H(i). *> \endverbatim *> * ===================================================================== SUBROUTINE ZHETD2( UPLO, N, A, LDA, D, E, TAU, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION D( * ), E( * ) COMPLEX*16 A( LDA, * ), TAU( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE, ZERO, HALF PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ), $ ZERO = ( 0.0D+0, 0.0D+0 ), $ HALF = ( 0.5D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER I COMPLEX*16 ALPHA, TAUI * .. * .. External Subroutines .. EXTERNAL XERBLA, ZAXPY, ZHEMV, ZHER2, ZLARFG * .. * .. External Functions .. LOGICAL LSAME COMPLEX*16 ZDOTC EXTERNAL LSAME, ZDOTC * .. * .. Intrinsic Functions .. INTRINSIC DBLE, MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 UPPER = LSAME( UPLO, 'U') IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHETD2', -INFO ) RETURN END IF * * Quick return if possible * IF( N.LE.0 ) $ RETURN * IF( UPPER ) THEN * * Reduce the upper triangle of A * A( N, N ) = DBLE( A( N, N ) ) DO 10 I = N - 1, 1, -1 * * Generate elementary reflector H(i) = I - tau * v * v**H * to annihilate A(1:i-1,i+1) * ALPHA = A( I, I+1 ) CALL ZLARFG( I, ALPHA, A( 1, I+1 ), 1, TAUI ) E( I ) = ALPHA * IF( TAUI.NE.ZERO ) THEN * * Apply H(i) from both sides to A(1:i,1:i) * A( I, I+1 ) = ONE * * Compute x := tau * A * v storing x in TAU(1:i) * CALL ZHEMV( UPLO, I, TAUI, A, LDA, A( 1, I+1 ), 1, ZERO, $ TAU, 1 ) * * Compute w := x - 1/2 * tau * (x**H * v) * v * ALPHA = -HALF*TAUI*ZDOTC( I, TAU, 1, A( 1, I+1 ), 1 ) CALL ZAXPY( I, ALPHA, A( 1, I+1 ), 1, TAU, 1 ) * * Apply the transformation as a rank-2 update: * A := A - v * w**H - w * v**H * CALL ZHER2( UPLO, I, -ONE, A( 1, I+1 ), 1, TAU, 1, A, $ LDA ) * ELSE A( I, I ) = DBLE( A( I, I ) ) END IF A( I, I+1 ) = E( I ) D( I+1 ) = A( I+1, I+1 ) TAU( I ) = TAUI 10 CONTINUE D( 1 ) = A( 1, 1 ) ELSE * * Reduce the lower triangle of A * A( 1, 1 ) = DBLE( A( 1, 1 ) ) DO 20 I = 1, N - 1 * * Generate elementary reflector H(i) = I - tau * v * v**H * to annihilate A(i+2:n,i) * ALPHA = A( I+1, I ) CALL ZLARFG( N-I, ALPHA, A( MIN( I+2, N ), I ), 1, TAUI ) E( I ) = ALPHA * IF( TAUI.NE.ZERO ) THEN * * Apply H(i) from both sides to A(i+1:n,i+1:n) * A( I+1, I ) = ONE * * Compute x := tau * A * v storing y in TAU(i:n-1) * CALL ZHEMV( UPLO, N-I, TAUI, A( I+1, I+1 ), LDA, $ A( I+1, I ), 1, ZERO, TAU( I ), 1 ) * * Compute w := x - 1/2 * tau * (x**H * v) * v * ALPHA = -HALF*TAUI*ZDOTC( N-I, TAU( I ), 1, A( I+1, I ), $ 1 ) CALL ZAXPY( N-I, ALPHA, A( I+1, I ), 1, TAU( I ), 1 ) * * Apply the transformation as a rank-2 update: * A := A - v * w**H - w * v**H * CALL ZHER2( UPLO, N-I, -ONE, A( I+1, I ), 1, TAU( I ), 1, $ A( I+1, I+1 ), LDA ) * ELSE A( I+1, I+1 ) = DBLE( A( I+1, I+1 ) ) END IF A( I+1, I ) = E( I ) D( I ) = A( I, I ) TAU( I ) = TAUI 20 CONTINUE D( N ) = A( N, N ) END IF * RETURN * * End of ZHETD2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlansy.f0000644002504400250440000000005012337331322016571 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlansy.f0000644002504400250440000001634112337331322017342 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a real symmetric matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLANSY + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DLANSY( NORM, UPLO, N, A, LDA, WORK ) * * .. Scalar Arguments .. * CHARACTER NORM, UPLO * INTEGER LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLANSY returns the value of the one norm, or the Frobenius norm, or *> the infinity norm, or the element of largest absolute value of a *> real symmetric matrix A. *> \endverbatim *> *> \return DLANSY *> \verbatim *> *> DLANSY = ( max(abs(A(i,j))), NORM = 'M' or 'm' *> ( *> ( norm1(A), NORM = '1', 'O' or 'o' *> ( *> ( normI(A), NORM = 'I' or 'i' *> ( *> ( normF(A), NORM = 'F', 'f', 'E' or 'e' *> *> where norm1 denotes the one norm of a matrix (maximum column sum), *> normI denotes the infinity norm of a matrix (maximum row sum) and *> normF denotes the Frobenius norm of a matrix (square root of sum of *> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm. *> \endverbatim * * Arguments: * ========== * *> \param[in] NORM *> \verbatim *> NORM is CHARACTER*1 *> Specifies the value to be returned in DLANSY as described *> above. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> symmetric matrix A is to be referenced. *> = 'U': Upper triangular part of A is referenced *> = 'L': Lower triangular part of A is referenced *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. When N = 0, DLANSY is *> set to zero. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The symmetric matrix A. If UPLO = 'U', the leading n by n *> upper triangular part of A contains the upper triangular part *> of the matrix A, and the strictly lower triangular part of A *> is not referenced. If UPLO = 'L', the leading n by n lower *> triangular part of A contains the lower triangular part of *> the matrix A, and the strictly upper triangular part of A is *> not referenced. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(N,1). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)), *> where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise, *> WORK is not referenced. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleSYauxiliary * * ===================================================================== DOUBLE PRECISION FUNCTION DLANSY( NORM, UPLO, N, A, LDA, WORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER NORM, UPLO INTEGER LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, J DOUBLE PRECISION ABSA, SCALE, SUM, VALUE * .. * .. External Subroutines .. EXTERNAL DLASSQ * .. * .. External Functions .. LOGICAL LSAME, DISNAN EXTERNAL LSAME, DISNAN * .. * .. Intrinsic Functions .. INTRINSIC ABS, SQRT * .. * .. Executable Statements .. * IF( N.EQ.0 ) THEN VALUE = ZERO ELSE IF( LSAME( NORM, 'M' ) ) THEN * * Find max(abs(A(i,j))). * VALUE = ZERO IF( LSAME( UPLO, 'U' ) ) THEN DO 20 J = 1, N DO 10 I = 1, J SUM = ABS( A( I, J ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1, N DO 30 I = J, N SUM = ABS( A( I, J ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 30 CONTINUE 40 CONTINUE END IF ELSE IF( ( LSAME( NORM, 'I' ) ) .OR. ( LSAME( NORM, 'O' ) ) .OR. $ ( NORM.EQ.'1' ) ) THEN * * Find normI(A) ( = norm1(A), since A is symmetric). * VALUE = ZERO IF( LSAME( UPLO, 'U' ) ) THEN DO 60 J = 1, N SUM = ZERO DO 50 I = 1, J - 1 ABSA = ABS( A( I, J ) ) SUM = SUM + ABSA WORK( I ) = WORK( I ) + ABSA 50 CONTINUE WORK( J ) = SUM + ABS( A( J, J ) ) 60 CONTINUE DO 70 I = 1, N SUM = WORK( I ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 70 CONTINUE ELSE DO 80 I = 1, N WORK( I ) = ZERO 80 CONTINUE DO 100 J = 1, N SUM = WORK( J ) + ABS( A( J, J ) ) DO 90 I = J + 1, N ABSA = ABS( A( I, J ) ) SUM = SUM + ABSA WORK( I ) = WORK( I ) + ABSA 90 CONTINUE IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 100 CONTINUE END IF ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN * * Find normF(A). * SCALE = ZERO SUM = ONE IF( LSAME( UPLO, 'U' ) ) THEN DO 110 J = 2, N CALL DLASSQ( J-1, A( 1, J ), 1, SCALE, SUM ) 110 CONTINUE ELSE DO 120 J = 1, N - 1 CALL DLASSQ( N-J, A( J+1, J ), 1, SCALE, SUM ) 120 CONTINUE END IF SUM = 2*SUM CALL DLASSQ( N, A, LDA+1, SCALE, SUM ) VALUE = SCALE*SQRT( SUM ) END IF * DLANSY = VALUE RETURN * * End of DLANSY * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgetri.f0000644002504400250440000000005012337331322016603 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgetri.f0000644002504400250440000001640512337331322017355 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGETRI * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGETRI + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * COMPLEX*16 A( LDA, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGETRI computes the inverse of a matrix using the LU factorization *> computed by ZGETRF. *> *> This method inverts U and then computes inv(A) by solving the system *> inv(A)*L = inv(U) for inv(A). *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the factors L and U from the factorization *> A = P*L*U as computed by ZGETRF. *> On exit, if INFO = 0, the inverse of the original matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> The pivot indices from ZGETRF; for 1<=i<=N, row i of the *> matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO=0, then WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimal performance LWORK >= N*NB, where NB is *> the optimal blocksize returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, U(i,i) is exactly zero; the matrix is *> singular and its inverse could not be computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16GEcomputational * * ===================================================================== SUBROUTINE ZGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. INTEGER IPIV( * ) COMPLEX*16 A( LDA, * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ), $ ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IWS, J, JB, JJ, JP, LDWORK, LWKOPT, NB, $ NBMIN, NN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZGEMM, ZGEMV, ZSWAP, ZTRSM, ZTRTRI * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 NB = ILAENV( 1, 'ZGETRI', ' ', N, -1, -1, -1 ) LWKOPT = N*NB WORK( 1 ) = LWKOPT LQUERY = ( LWORK.EQ.-1 ) IF( N.LT.0 ) THEN INFO = -1 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -3 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -6 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGETRI', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Form inv(U). If INFO > 0 from ZTRTRI, then U is singular, * and the inverse is not computed. * CALL ZTRTRI( 'Upper', 'Non-unit', N, A, LDA, INFO ) IF( INFO.GT.0 ) $ RETURN * NBMIN = 2 LDWORK = N IF( NB.GT.1 .AND. NB.LT.N ) THEN IWS = MAX( LDWORK*NB, 1 ) IF( LWORK.LT.IWS ) THEN NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'ZGETRI', ' ', N, -1, -1, -1 ) ) END IF ELSE IWS = N END IF * * Solve the equation inv(A)*L = inv(U) for inv(A). * IF( NB.LT.NBMIN .OR. NB.GE.N ) THEN * * Use unblocked code. * DO 20 J = N, 1, -1 * * Copy current column of L to WORK and replace with zeros. * DO 10 I = J + 1, N WORK( I ) = A( I, J ) A( I, J ) = ZERO 10 CONTINUE * * Compute current column of inv(A). * IF( J.LT.N ) $ CALL ZGEMV( 'No transpose', N, N-J, -ONE, A( 1, J+1 ), $ LDA, WORK( J+1 ), 1, ONE, A( 1, J ), 1 ) 20 CONTINUE ELSE * * Use blocked code. * NN = ( ( N-1 ) / NB )*NB + 1 DO 50 J = NN, 1, -NB JB = MIN( NB, N-J+1 ) * * Copy current block column of L to WORK and replace with * zeros. * DO 40 JJ = J, J + JB - 1 DO 30 I = JJ + 1, N WORK( I+( JJ-J )*LDWORK ) = A( I, JJ ) A( I, JJ ) = ZERO 30 CONTINUE 40 CONTINUE * * Compute current block column of inv(A). * IF( J+JB.LE.N ) $ CALL ZGEMM( 'No transpose', 'No transpose', N, JB, $ N-J-JB+1, -ONE, A( 1, J+JB ), LDA, $ WORK( J+JB ), LDWORK, ONE, A( 1, J ), LDA ) CALL ZTRSM( 'Right', 'Lower', 'No transpose', 'Unit', N, JB, $ ONE, WORK( J ), LDWORK, A( 1, J ), LDA ) 50 CONTINUE END IF * * Apply column interchanges. * DO 60 J = N - 1, 1, -1 JP = IPIV( J ) IF( JP.NE.J ) $ CALL ZSWAP( N, A( 1, J ), 1, A( 1, JP ), 1 ) 60 CONTINUE * WORK( 1 ) = IWS RETURN * * End of ZGETRI * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/Makefile0000644002504400250440000000005012337331322016570 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/Makefile0000644002504400250440000000413712337331322017341 0ustar00dewhurstdewhurst00000000000000 AR = ar include ../../make.inc #------------------------------------------------------------------------------- # Suffix Rules #------------------------------------------------------------------------------- .SUFFIXES: .o .f .f.o: $(F77) $(F77_OPTS) -c $< #------------------------------------------------------------------------------- # File dependencies #------------------------------------------------------------------------------- SRC = \ dgesv.f dgetf2.f dgetrf.f dgetri.f dgetrs.f disnan.f dlabad.f \ dlacpy.f dladiv.f dlae2.f dlaebz.f dlaev2.f dlagtf.f dlagts.f \ dlaisnan.f dlamch.f dlanst.f dlansy.f dlapy2.f dlapy3.f dlarfb.f \ dlarf.f dlarfg.f dlarft.f dlarnv.f dlartg.f dlaruv.f dlascl.f \ dlaset.f dlasr.f dlasrt.f dlassq.f dlaswp.f dlasyf.f dlatrd.f \ dorg2l.f dorg2r.f dorgql.f dorgqr.f dorgtr.f dorm2l.f dorm2r.f \ dormql.f dormqr.f dormtr.f dpotf2.f dpotrf.f dstebz.f dstein.f \ dsteqr.f dsterf.f dsyconv.f dsyev.f dsyevx.f dsygs2.f dsygst.f \ dsygvx.f dsysv.f dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytrs2.f \ dsytrs.f dtrti2.f dtrtri.f ieeeck.f iladlc.f iladlr.f ilaenv.f \ ilazlc.f ilazlr.f iparmq.f xerbla.f zgebak.f zgebal.f zgeev.f \ zgehd2.f zgehrd.f zgesv.f zgetf2.f zgetrf.f zgetri.f zgetrs.f \ zheev.f zheevx.f zhegs2.f zhegst.f zhegv.f zhegvx.f zhetd2.f \ zhetrd.f zhpevx.f zhpgst.f zhpgvx.f zhptrd.f zhseqr.f zlacgv.f \ zlacpy.f zladiv.f zlahqr.f zlahr2.f zlange.f zlanhe.f zlanhp.f \ zlaqr0.f zlaqr1.f zlaqr2.f zlaqr3.f zlaqr4.f zlaqr5.f zlarfb.f \ zlarf.f zlarfg.f zlarft.f zlartg.f zlascl.f zlaset.f zlasr.f \ zlassq.f zlaswp.f zlatrd.f zlatrs.f zpotf2.f zpotrf.f zpptrf.f \ zrot.f zstein.f zsteqr.f ztrevc.f ztrexc.f ztrti2.f ztrtri.f \ zung2l.f zung2r.f zunghr.f zungql.f zungqr.f zungtr.f zunm2l.f \ zunm2r.f zunmhr.f zunmql.f zunmqr.f zunmtr.f zupgtr.f zupmtr.f OBJ = $(SRC:.f=.o) lapack: $(OBJ) $(AR) -rc lapack.a $(OBJ) clean: rm -f *.o *.mod *~ *.a ifc* *.gcno gmon.out ls: ls -x --width=80 *.f elk-2.3.22/src/LAPACK/PaxHeaders.22528/zheev.f0000644002504400250440000000005012337331322016420 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zheev.f0000644002504400250440000002116612337331322017172 0ustar00dewhurstdewhurst00000000000000*> \brief ZHEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHEEV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHEEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, * INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, UPLO * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * DOUBLE PRECISION RWORK( * ), W( * ) * COMPLEX*16 A( LDA, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHEEV computes all eigenvalues and, optionally, eigenvectors of a *> complex Hermitian matrix A. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA, N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of A contains the *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. *> On exit, if JOBZ = 'V', then if INFO = 0, A contains the *> orthonormal eigenvectors of the matrix A. *> If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') *> or the upper triangle (if UPLO='U') of A, including the *> diagonal, is destroyed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> If INFO = 0, the eigenvalues in ascending order. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,2*N-1). *> For optimal efficiency, LWORK >= (NB+1)*N, *> where NB is the blocksize for ZHETRD returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (max(1, 3*N-2)) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, the algorithm failed to converge; i *> off-diagonal elements of an intermediate tridiagonal *> form did not converge to zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16HEeigen * * ===================================================================== SUBROUTINE ZHEEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, $ INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, UPLO INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION RWORK( * ), W( * ) COMPLEX*16 A( LDA, * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) COMPLEX*16 CONE PARAMETER ( CONE = ( 1.0D0, 0.0D0 ) ) * .. * .. Local Scalars .. LOGICAL LOWER, LQUERY, WANTZ INTEGER IINFO, IMAX, INDE, INDTAU, INDWRK, ISCALE, $ LLWORK, LWKOPT, NB DOUBLE PRECISION ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA, $ SMLNUM * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV DOUBLE PRECISION DLAMCH, ZLANHE EXTERNAL LSAME, ILAENV, DLAMCH, ZLANHE * .. * .. External Subroutines .. EXTERNAL DSCAL, DSTERF, XERBLA, ZHETRD, ZLASCL, ZSTEQR, $ ZUNGTR * .. * .. Intrinsic Functions .. INTRINSIC MAX, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * WANTZ = LSAME( JOBZ, 'V' ) LOWER = LSAME( UPLO, 'L' ) LQUERY = ( LWORK.EQ.-1 ) * INFO = 0 IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -1 ELSE IF( .NOT.( LOWER .OR. LSAME( UPLO, 'U' ) ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF * IF( INFO.EQ.0 ) THEN NB = ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) LWKOPT = MAX( 1, ( NB+1 )*N ) WORK( 1 ) = LWKOPT * IF( LWORK.LT.MAX( 1, 2*N-1 ) .AND. .NOT.LQUERY ) $ INFO = -8 END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHEEV ', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN RETURN END IF * IF( N.EQ.1 ) THEN W( 1 ) = A( 1, 1 ) WORK( 1 ) = 1 IF( WANTZ ) $ A( 1, 1 ) = CONE RETURN END IF * * Get machine constants. * SAFMIN = DLAMCH( 'Safe minimum' ) EPS = DLAMCH( 'Precision' ) SMLNUM = SAFMIN / EPS BIGNUM = ONE / SMLNUM RMIN = SQRT( SMLNUM ) RMAX = SQRT( BIGNUM ) * * Scale matrix to allowable range, if necessary. * ANRM = ZLANHE( 'M', UPLO, N, A, LDA, RWORK ) ISCALE = 0 IF( ANRM.GT.ZERO .AND. ANRM.LT.RMIN ) THEN ISCALE = 1 SIGMA = RMIN / ANRM ELSE IF( ANRM.GT.RMAX ) THEN ISCALE = 1 SIGMA = RMAX / ANRM END IF IF( ISCALE.EQ.1 ) $ CALL ZLASCL( UPLO, 0, 0, ONE, SIGMA, N, N, A, LDA, INFO ) * * Call ZHETRD to reduce Hermitian matrix to tridiagonal form. * INDE = 1 INDTAU = 1 INDWRK = INDTAU + N LLWORK = LWORK - INDWRK + 1 CALL ZHETRD( UPLO, N, A, LDA, W, RWORK( INDE ), WORK( INDTAU ), $ WORK( INDWRK ), LLWORK, IINFO ) * * For eigenvalues only, call DSTERF. For eigenvectors, first call * ZUNGTR to generate the unitary matrix, then call ZSTEQR. * IF( .NOT.WANTZ ) THEN CALL DSTERF( N, W, RWORK( INDE ), INFO ) ELSE CALL ZUNGTR( UPLO, N, A, LDA, WORK( INDTAU ), WORK( INDWRK ), $ LLWORK, IINFO ) INDWRK = INDE + N CALL ZSTEQR( JOBZ, N, W, RWORK( INDE ), A, LDA, $ RWORK( INDWRK ), INFO ) END IF * * If matrix was scaled, then rescale eigenvalues appropriately. * IF( ISCALE.EQ.1 ) THEN IF( INFO.EQ.0 ) THEN IMAX = N ELSE IMAX = INFO - 1 END IF CALL DSCAL( IMAX, ONE / SIGMA, W, 1 ) END IF * * Set WORK(1) to optimal complex workspace size. * WORK( 1 ) = LWKOPT * RETURN * * End of ZHEEV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlanhp.f0000644002504400250440000000005012337331322016573 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlanhp.f0000644002504400250440000002021212337331322017334 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLANHP returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a complex Hermitian matrix supplied in packed form. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLANHP + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * DOUBLE PRECISION FUNCTION ZLANHP( NORM, UPLO, N, AP, WORK ) * * .. Scalar Arguments .. * CHARACTER NORM, UPLO * INTEGER N * .. * .. Array Arguments .. * DOUBLE PRECISION WORK( * ) * COMPLEX*16 AP( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLANHP returns the value of the one norm, or the Frobenius norm, or *> the infinity norm, or the element of largest absolute value of a *> complex hermitian matrix A, supplied in packed form. *> \endverbatim *> *> \return ZLANHP *> \verbatim *> *> ZLANHP = ( max(abs(A(i,j))), NORM = 'M' or 'm' *> ( *> ( norm1(A), NORM = '1', 'O' or 'o' *> ( *> ( normI(A), NORM = 'I' or 'i' *> ( *> ( normF(A), NORM = 'F', 'f', 'E' or 'e' *> *> where norm1 denotes the one norm of a matrix (maximum column sum), *> normI denotes the infinity norm of a matrix (maximum row sum) and *> normF denotes the Frobenius norm of a matrix (square root of sum of *> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm. *> \endverbatim * * Arguments: * ========== * *> \param[in] NORM *> \verbatim *> NORM is CHARACTER*1 *> Specifies the value to be returned in ZLANHP as described *> above. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> hermitian matrix A is supplied. *> = 'U': Upper triangular part of A is supplied *> = 'L': Lower triangular part of A is supplied *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. When N = 0, ZLANHP is *> set to zero. *> \endverbatim *> *> \param[in] AP *> \verbatim *> AP is COMPLEX*16 array, dimension (N*(N+1)/2) *> The upper or lower triangle of the hermitian matrix A, packed *> columnwise in a linear array. The j-th column of A is stored *> in the array AP as follows: *> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; *> if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n. *> Note that the imaginary parts of the diagonal elements need *> not be set and are assumed to be zero. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)), *> where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise, *> WORK is not referenced. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== DOUBLE PRECISION FUNCTION ZLANHP( NORM, UPLO, N, AP, WORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER NORM, UPLO INTEGER N * .. * .. Array Arguments .. DOUBLE PRECISION WORK( * ) COMPLEX*16 AP( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, J, K DOUBLE PRECISION ABSA, SCALE, SUM, VALUE * .. * .. External Functions .. LOGICAL LSAME, DISNAN EXTERNAL LSAME, DISNAN * .. * .. External Subroutines .. EXTERNAL ZLASSQ * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, SQRT * .. * .. Executable Statements .. * IF( N.EQ.0 ) THEN VALUE = ZERO ELSE IF( LSAME( NORM, 'M' ) ) THEN * * Find max(abs(A(i,j))). * VALUE = ZERO IF( LSAME( UPLO, 'U' ) ) THEN K = 0 DO 20 J = 1, N DO 10 I = K + 1, K + J - 1 SUM = ABS( AP( I ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 10 CONTINUE K = K + J SUM = ABS( DBLE( AP( K ) ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 20 CONTINUE ELSE K = 1 DO 40 J = 1, N SUM = ABS( DBLE( AP( K ) ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM DO 30 I = K + 1, K + N - J SUM = ABS( AP( I ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 30 CONTINUE K = K + N - J + 1 40 CONTINUE END IF ELSE IF( ( LSAME( NORM, 'I' ) ) .OR. ( LSAME( NORM, 'O' ) ) .OR. $ ( NORM.EQ.'1' ) ) THEN * * Find normI(A) ( = norm1(A), since A is hermitian). * VALUE = ZERO K = 1 IF( LSAME( UPLO, 'U' ) ) THEN DO 60 J = 1, N SUM = ZERO DO 50 I = 1, J - 1 ABSA = ABS( AP( K ) ) SUM = SUM + ABSA WORK( I ) = WORK( I ) + ABSA K = K + 1 50 CONTINUE WORK( J ) = SUM + ABS( DBLE( AP( K ) ) ) K = K + 1 60 CONTINUE DO 70 I = 1, N SUM = WORK( I ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 70 CONTINUE ELSE DO 80 I = 1, N WORK( I ) = ZERO 80 CONTINUE DO 100 J = 1, N SUM = WORK( J ) + ABS( DBLE( AP( K ) ) ) K = K + 1 DO 90 I = J + 1, N ABSA = ABS( AP( K ) ) SUM = SUM + ABSA WORK( I ) = WORK( I ) + ABSA K = K + 1 90 CONTINUE IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 100 CONTINUE END IF ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN * * Find normF(A). * SCALE = ZERO SUM = ONE K = 2 IF( LSAME( UPLO, 'U' ) ) THEN DO 110 J = 2, N CALL ZLASSQ( J-1, AP( K ), 1, SCALE, SUM ) K = K + J 110 CONTINUE ELSE DO 120 J = 1, N - 1 CALL ZLASSQ( N-J, AP( K ), 1, SCALE, SUM ) K = K + N - J + 1 120 CONTINUE END IF SUM = 2*SUM K = 1 DO 130 I = 1, N IF( DBLE( AP( K ) ).NE.ZERO ) THEN ABSA = ABS( DBLE( AP( K ) ) ) IF( SCALE.LT.ABSA ) THEN SUM = ONE + SUM*( SCALE / ABSA )**2 SCALE = ABSA ELSE SUM = SUM + ( ABSA / SCALE )**2 END IF END IF IF( LSAME( UPLO, 'U' ) ) THEN K = K + I + 1 ELSE K = K + N - I + 1 END IF 130 CONTINUE VALUE = SCALE*SQRT( SUM ) END IF * ZLANHP = VALUE RETURN * * End of ZLANHP * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/ztrexc.f0000644002504400250440000000005012337331322016616 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/ztrexc.f0000644002504400250440000001436712337331322017375 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTREXC * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZTREXC + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZTREXC( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, INFO ) * * .. Scalar Arguments .. * CHARACTER COMPQ * INTEGER IFST, ILST, INFO, LDQ, LDT, N * .. * .. Array Arguments .. * COMPLEX*16 Q( LDQ, * ), T( LDT, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTREXC reorders the Schur factorization of a complex matrix *> A = Q*T*Q**H, so that the diagonal element of T with row index IFST *> is moved to row ILST. *> *> The Schur form T is reordered by a unitary similarity transformation *> Z**H*T*Z, and optionally the matrix Q of Schur vectors is updated by *> postmultplying it with Z. *> \endverbatim * * Arguments: * ========== * *> \param[in] COMPQ *> \verbatim *> COMPQ is CHARACTER*1 *> = 'V': update the matrix Q of Schur vectors; *> = 'N': do not update Q. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix T. N >= 0. *> \endverbatim *> *> \param[in,out] T *> \verbatim *> T is COMPLEX*16 array, dimension (LDT,N) *> On entry, the upper triangular matrix T. *> On exit, the reordered upper triangular matrix. *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> *> \param[in,out] Q *> \verbatim *> Q is COMPLEX*16 array, dimension (LDQ,N) *> On entry, if COMPQ = 'V', the matrix Q of Schur vectors. *> On exit, if COMPQ = 'V', Q has been postmultiplied by the *> unitary transformation matrix Z which reorders T. *> If COMPQ = 'N', Q is not referenced. *> \endverbatim *> *> \param[in] LDQ *> \verbatim *> LDQ is INTEGER *> The leading dimension of the array Q. LDQ >= max(1,N). *> \endverbatim *> *> \param[in] IFST *> \verbatim *> IFST is INTEGER *> \endverbatim *> *> \param[in] ILST *> \verbatim *> ILST is INTEGER *> *> Specify the reordering of the diagonal elements of T: *> The element with row index IFST is moved to row ILST by a *> sequence of transpositions between adjacent elements. *> 1 <= IFST <= N; 1 <= ILST <= N. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZTREXC( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER COMPQ INTEGER IFST, ILST, INFO, LDQ, LDT, N * .. * .. Array Arguments .. COMPLEX*16 Q( LDQ, * ), T( LDT, * ) * .. * * ===================================================================== * * .. Local Scalars .. LOGICAL WANTQ INTEGER K, M1, M2, M3 DOUBLE PRECISION CS COMPLEX*16 SN, T11, T22, TEMP * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARTG, ZROT * .. * .. Intrinsic Functions .. INTRINSIC DCONJG, MAX * .. * .. Executable Statements .. * * Decode and test the input parameters. * INFO = 0 WANTQ = LSAME( COMPQ, 'V' ) IF( .NOT.LSAME( COMPQ, 'N' ) .AND. .NOT.WANTQ ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDT.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LDQ.LT.1 .OR. ( WANTQ .AND. LDQ.LT.MAX( 1, N ) ) ) THEN INFO = -6 ELSE IF( IFST.LT.1 .OR. IFST.GT.N ) THEN INFO = -7 ELSE IF( ILST.LT.1 .OR. ILST.GT.N ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZTREXC', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.1 .OR. IFST.EQ.ILST ) $ RETURN * IF( IFST.LT.ILST ) THEN * * Move the IFST-th diagonal element forward down the diagonal. * M1 = 0 M2 = -1 M3 = 1 ELSE * * Move the IFST-th diagonal element backward up the diagonal. * M1 = -1 M2 = 0 M3 = -1 END IF * DO 10 K = IFST + M1, ILST + M2, M3 * * Interchange the k-th and (k+1)-th diagonal elements. * T11 = T( K, K ) T22 = T( K+1, K+1 ) * * Determine the transformation to perform the interchange. * CALL ZLARTG( T( K, K+1 ), T22-T11, CS, SN, TEMP ) * * Apply transformation to the matrix T. * IF( K+2.LE.N ) $ CALL ZROT( N-K-1, T( K, K+2 ), LDT, T( K+1, K+2 ), LDT, CS, $ SN ) CALL ZROT( K-1, T( 1, K ), 1, T( 1, K+1 ), 1, CS, $ DCONJG( SN ) ) * T( K, K ) = T22 T( K+1, K+1 ) = T11 * IF( WANTQ ) THEN * * Accumulate transformation in the matrix Q. * CALL ZROT( N, Q( 1, K ), 1, Q( 1, K+1 ), 1, CS, $ DCONJG( SN ) ) END IF * 10 CONTINUE * RETURN * * End of ZTREXC * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dgetf2.f0000644002504400250440000000005012337331322016452 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dgetf2.f0000644002504400250440000001342512337331322017223 0ustar00dewhurstdewhurst00000000000000*> \brief \b DGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row interchanges (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DGETF2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DGETF2( M, N, A, LDA, IPIV, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, M, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DGETF2 computes an LU factorization of a general m-by-n matrix A *> using partial pivoting with row interchanges. *> *> The factorization has the form *> A = P * L * U *> where P is a permutation matrix, L is lower triangular with unit *> diagonal elements (lower trapezoidal if m > n), and U is upper *> triangular (upper trapezoidal if m < n). *> *> This is the right-looking Level 2 BLAS version of the algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the m by n matrix to be factored. *> On exit, the factors L and U from the factorization *> A = P*L*U; the unit diagonal elements of L are not stored. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (min(M,N)) *> The pivot indices; for 1 <= i <= min(M,N), row i of the *> matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -k, the k-th argument had an illegal value *> > 0: if INFO = k, U(k,k) is exactly zero. The factorization *> has been completed, but the factor U is exactly *> singular, and division by zero will occur if it is used *> to solve a system of equations. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleGEcomputational * * ===================================================================== SUBROUTINE DGETF2( M, N, A, LDA, IPIV, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INFO, LDA, M, N * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. DOUBLE PRECISION SFMIN INTEGER I, J, JP * .. * .. External Functions .. DOUBLE PRECISION DLAMCH INTEGER IDAMAX EXTERNAL DLAMCH, IDAMAX * .. * .. External Subroutines .. EXTERNAL DGER, DSCAL, DSWAP, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DGETF2', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 ) $ RETURN * * Compute machine safe minimum * SFMIN = DLAMCH('S') * DO 10 J = 1, MIN( M, N ) * * Find pivot and test for singularity. * JP = J - 1 + IDAMAX( M-J+1, A( J, J ), 1 ) IPIV( J ) = JP IF( A( JP, J ).NE.ZERO ) THEN * * Apply the interchange to columns 1:N. * IF( JP.NE.J ) $ CALL DSWAP( N, A( J, 1 ), LDA, A( JP, 1 ), LDA ) * * Compute elements J+1:M of J-th column. * IF( J.LT.M ) THEN IF( ABS(A( J, J )) .GE. SFMIN ) THEN CALL DSCAL( M-J, ONE / A( J, J ), A( J+1, J ), 1 ) ELSE DO 20 I = 1, M-J A( J+I, J ) = A( J+I, J ) / A( J, J ) 20 CONTINUE END IF END IF * ELSE IF( INFO.EQ.0 ) THEN * INFO = J END IF * IF( J.LT.MIN( M, N ) ) THEN * * Update trailing submatrix. * CALL DGER( M-J, N-J, -ONE, A( J+1, J ), 1, A( J, J+1 ), LDA, $ A( J+1, J+1 ), LDA ) END IF 10 CONTINUE RETURN * * End of DGETF2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dgetri.f0000644002504400250440000000005012337331322016555 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dgetri.f0000644002504400250440000001633512337331322017331 0ustar00dewhurstdewhurst00000000000000*> \brief \b DGETRI * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DGETRI + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DGETRI computes the inverse of a matrix using the LU factorization *> computed by DGETRF. *> *> This method inverts U and then computes inv(A) by solving the system *> inv(A)*L = inv(U) for inv(A). *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the factors L and U from the factorization *> A = P*L*U as computed by DGETRF. *> On exit, if INFO = 0, the inverse of the original matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> The pivot indices from DGETRF; for 1<=i<=N, row i of the *> matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO=0, then WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimal performance LWORK >= N*NB, where NB is *> the optimal blocksize returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, U(i,i) is exactly zero; the matrix is *> singular and its inverse could not be computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleGEcomputational * * ===================================================================== SUBROUTINE DGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IWS, J, JB, JJ, JP, LDWORK, LWKOPT, NB, $ NBMIN, NN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. External Subroutines .. EXTERNAL DGEMM, DGEMV, DSWAP, DTRSM, DTRTRI, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 NB = ILAENV( 1, 'DGETRI', ' ', N, -1, -1, -1 ) LWKOPT = N*NB WORK( 1 ) = LWKOPT LQUERY = ( LWORK.EQ.-1 ) IF( N.LT.0 ) THEN INFO = -1 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -3 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -6 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DGETRI', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Form inv(U). If INFO > 0 from DTRTRI, then U is singular, * and the inverse is not computed. * CALL DTRTRI( 'Upper', 'Non-unit', N, A, LDA, INFO ) IF( INFO.GT.0 ) $ RETURN * NBMIN = 2 LDWORK = N IF( NB.GT.1 .AND. NB.LT.N ) THEN IWS = MAX( LDWORK*NB, 1 ) IF( LWORK.LT.IWS ) THEN NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'DGETRI', ' ', N, -1, -1, -1 ) ) END IF ELSE IWS = N END IF * * Solve the equation inv(A)*L = inv(U) for inv(A). * IF( NB.LT.NBMIN .OR. NB.GE.N ) THEN * * Use unblocked code. * DO 20 J = N, 1, -1 * * Copy current column of L to WORK and replace with zeros. * DO 10 I = J + 1, N WORK( I ) = A( I, J ) A( I, J ) = ZERO 10 CONTINUE * * Compute current column of inv(A). * IF( J.LT.N ) $ CALL DGEMV( 'No transpose', N, N-J, -ONE, A( 1, J+1 ), $ LDA, WORK( J+1 ), 1, ONE, A( 1, J ), 1 ) 20 CONTINUE ELSE * * Use blocked code. * NN = ( ( N-1 ) / NB )*NB + 1 DO 50 J = NN, 1, -NB JB = MIN( NB, N-J+1 ) * * Copy current block column of L to WORK and replace with * zeros. * DO 40 JJ = J, J + JB - 1 DO 30 I = JJ + 1, N WORK( I+( JJ-J )*LDWORK ) = A( I, JJ ) A( I, JJ ) = ZERO 30 CONTINUE 40 CONTINUE * * Compute current block column of inv(A). * IF( J+JB.LE.N ) $ CALL DGEMM( 'No transpose', 'No transpose', N, JB, $ N-J-JB+1, -ONE, A( 1, J+JB ), LDA, $ WORK( J+JB ), LDWORK, ONE, A( 1, J ), LDA ) CALL DTRSM( 'Right', 'Lower', 'No transpose', 'Unit', N, JB, $ ONE, WORK( J ), LDWORK, A( 1, J ), LDA ) 50 CONTINUE END IF * * Apply column interchanges. * DO 60 J = N - 1, 1, -1 JP = IPIV( J ) IF( JP.NE.J ) $ CALL DSWAP( N, A( 1, J ), 1, A( 1, JP ), 1 ) 60 CONTINUE * WORK( 1 ) = IWS RETURN * * End of DGETRI * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlatrd.f0000644002504400250440000000005012337331322016577 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlatrd.f0000644002504400250440000003042612337331322017350 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an unitary similarity transformation. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLATRD + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER LDA, LDW, N, NB * .. * .. Array Arguments .. * DOUBLE PRECISION E( * ) * COMPLEX*16 A( LDA, * ), TAU( * ), W( LDW, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLATRD reduces NB rows and columns of a complex Hermitian matrix A to *> Hermitian tridiagonal form by a unitary similarity *> transformation Q**H * A * Q, and returns the matrices V and W which are *> needed to apply the transformation to the unreduced part of A. *> *> If UPLO = 'U', ZLATRD reduces the last NB rows and columns of a *> matrix, of which the upper triangle is supplied; *> if UPLO = 'L', ZLATRD reduces the first NB rows and columns of a *> matrix, of which the lower triangle is supplied. *> *> This is an auxiliary routine called by ZHETRD. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> Hermitian matrix A is stored: *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. *> \endverbatim *> *> \param[in] NB *> \verbatim *> NB is INTEGER *> The number of rows and columns to be reduced. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the leading *> n-by-n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n-by-n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> On exit: *> if UPLO = 'U', the last NB columns have been reduced to *> tridiagonal form, with the diagonal elements overwriting *> the diagonal elements of A; the elements above the diagonal *> with the array TAU, represent the unitary matrix Q as a *> product of elementary reflectors; *> if UPLO = 'L', the first NB columns have been reduced to *> tridiagonal form, with the diagonal elements overwriting *> the diagonal elements of A; the elements below the diagonal *> with the array TAU, represent the unitary matrix Q as a *> product of elementary reflectors. *> See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal *> elements of the last NB columns of the reduced matrix; *> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of *> the first NB columns of the reduced matrix. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors, stored in *> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'. *> See Further Details. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is COMPLEX*16 array, dimension (LDW,NB) *> The n-by-nb matrix W required to update the unreduced part *> of A. *> \endverbatim *> *> \param[in] LDW *> \verbatim *> LDW is INTEGER *> The leading dimension of the array W. LDW >= max(1,N). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(n) H(n-1) . . . H(n-nb+1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(i:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i), *> and tau in TAU(i-1). *> *> If UPLO = 'L', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(1) H(2) . . . H(nb). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(1:i) = 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), *> and tau in TAU(i). *> *> The elements of the vectors v together form the n-by-nb matrix V *> which is needed, with W, to apply the transformation to the unreduced *> part of the matrix, using a Hermitian rank-2k update of the form: *> A := A - V*W**H - W*V**H. *> *> The contents of A on exit are illustrated by the following examples *> with n = 5 and nb = 2: *> *> if UPLO = 'U': if UPLO = 'L': *> *> ( a a a v4 v5 ) ( d ) *> ( a a v4 v5 ) ( 1 d ) *> ( a 1 v5 ) ( v1 1 a ) *> ( d 1 ) ( v1 v2 a a ) *> ( d ) ( v1 v2 a a a ) *> *> where d denotes a diagonal element of the reduced matrix, a denotes *> an element of the original matrix that is unchanged, and vi denotes *> an element of the vector defining H(i). *> \endverbatim *> * ===================================================================== SUBROUTINE ZLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER LDA, LDW, N, NB * .. * .. Array Arguments .. DOUBLE PRECISION E( * ) COMPLEX*16 A( LDA, * ), TAU( * ), W( LDW, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO, ONE, HALF PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ), $ ONE = ( 1.0D+0, 0.0D+0 ), $ HALF = ( 0.5D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. INTEGER I, IW COMPLEX*16 ALPHA * .. * .. External Subroutines .. EXTERNAL ZAXPY, ZGEMV, ZHEMV, ZLACGV, ZLARFG, ZSCAL * .. * .. External Functions .. LOGICAL LSAME COMPLEX*16 ZDOTC EXTERNAL LSAME, ZDOTC * .. * .. Intrinsic Functions .. INTRINSIC DBLE, MIN * .. * .. Executable Statements .. * * Quick return if possible * IF( N.LE.0 ) $ RETURN * IF( LSAME( UPLO, 'U' ) ) THEN * * Reduce last NB columns of upper triangle * DO 10 I = N, N - NB + 1, -1 IW = I - N + NB IF( I.LT.N ) THEN * * Update A(1:i,i) * A( I, I ) = DBLE( A( I, I ) ) CALL ZLACGV( N-I, W( I, IW+1 ), LDW ) CALL ZGEMV( 'No transpose', I, N-I, -ONE, A( 1, I+1 ), $ LDA, W( I, IW+1 ), LDW, ONE, A( 1, I ), 1 ) CALL ZLACGV( N-I, W( I, IW+1 ), LDW ) CALL ZLACGV( N-I, A( I, I+1 ), LDA ) CALL ZGEMV( 'No transpose', I, N-I, -ONE, W( 1, IW+1 ), $ LDW, A( I, I+1 ), LDA, ONE, A( 1, I ), 1 ) CALL ZLACGV( N-I, A( I, I+1 ), LDA ) A( I, I ) = DBLE( A( I, I ) ) END IF IF( I.GT.1 ) THEN * * Generate elementary reflector H(i) to annihilate * A(1:i-2,i) * ALPHA = A( I-1, I ) CALL ZLARFG( I-1, ALPHA, A( 1, I ), 1, TAU( I-1 ) ) E( I-1 ) = ALPHA A( I-1, I ) = ONE * * Compute W(1:i-1,i) * CALL ZHEMV( 'Upper', I-1, ONE, A, LDA, A( 1, I ), 1, $ ZERO, W( 1, IW ), 1 ) IF( I.LT.N ) THEN CALL ZGEMV( 'Conjugate transpose', I-1, N-I, ONE, $ W( 1, IW+1 ), LDW, A( 1, I ), 1, ZERO, $ W( I+1, IW ), 1 ) CALL ZGEMV( 'No transpose', I-1, N-I, -ONE, $ A( 1, I+1 ), LDA, W( I+1, IW ), 1, ONE, $ W( 1, IW ), 1 ) CALL ZGEMV( 'Conjugate transpose', I-1, N-I, ONE, $ A( 1, I+1 ), LDA, A( 1, I ), 1, ZERO, $ W( I+1, IW ), 1 ) CALL ZGEMV( 'No transpose', I-1, N-I, -ONE, $ W( 1, IW+1 ), LDW, W( I+1, IW ), 1, ONE, $ W( 1, IW ), 1 ) END IF CALL ZSCAL( I-1, TAU( I-1 ), W( 1, IW ), 1 ) ALPHA = -HALF*TAU( I-1 )*ZDOTC( I-1, W( 1, IW ), 1, $ A( 1, I ), 1 ) CALL ZAXPY( I-1, ALPHA, A( 1, I ), 1, W( 1, IW ), 1 ) END IF * 10 CONTINUE ELSE * * Reduce first NB columns of lower triangle * DO 20 I = 1, NB * * Update A(i:n,i) * A( I, I ) = DBLE( A( I, I ) ) CALL ZLACGV( I-1, W( I, 1 ), LDW ) CALL ZGEMV( 'No transpose', N-I+1, I-1, -ONE, A( I, 1 ), $ LDA, W( I, 1 ), LDW, ONE, A( I, I ), 1 ) CALL ZLACGV( I-1, W( I, 1 ), LDW ) CALL ZLACGV( I-1, A( I, 1 ), LDA ) CALL ZGEMV( 'No transpose', N-I+1, I-1, -ONE, W( I, 1 ), $ LDW, A( I, 1 ), LDA, ONE, A( I, I ), 1 ) CALL ZLACGV( I-1, A( I, 1 ), LDA ) A( I, I ) = DBLE( A( I, I ) ) IF( I.LT.N ) THEN * * Generate elementary reflector H(i) to annihilate * A(i+2:n,i) * ALPHA = A( I+1, I ) CALL ZLARFG( N-I, ALPHA, A( MIN( I+2, N ), I ), 1, $ TAU( I ) ) E( I ) = ALPHA A( I+1, I ) = ONE * * Compute W(i+1:n,i) * CALL ZHEMV( 'Lower', N-I, ONE, A( I+1, I+1 ), LDA, $ A( I+1, I ), 1, ZERO, W( I+1, I ), 1 ) CALL ZGEMV( 'Conjugate transpose', N-I, I-1, ONE, $ W( I+1, 1 ), LDW, A( I+1, I ), 1, ZERO, $ W( 1, I ), 1 ) CALL ZGEMV( 'No transpose', N-I, I-1, -ONE, A( I+1, 1 ), $ LDA, W( 1, I ), 1, ONE, W( I+1, I ), 1 ) CALL ZGEMV( 'Conjugate transpose', N-I, I-1, ONE, $ A( I+1, 1 ), LDA, A( I+1, I ), 1, ZERO, $ W( 1, I ), 1 ) CALL ZGEMV( 'No transpose', N-I, I-1, -ONE, W( I+1, 1 ), $ LDW, W( 1, I ), 1, ONE, W( I+1, I ), 1 ) CALL ZSCAL( N-I, TAU( I ), W( I+1, I ), 1 ) ALPHA = -HALF*TAU( I )*ZDOTC( N-I, W( I+1, I ), 1, $ A( I+1, I ), 1 ) CALL ZAXPY( N-I, ALPHA, A( I+1, I ), 1, W( I+1, I ), 1 ) END IF * 20 CONTINUE END IF * RETURN * * End of ZLATRD * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dpotf2.f0000644002504400250440000000005012337331322016475 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dpotf2.f0000644002504400250440000001465412337331322017253 0ustar00dewhurstdewhurst00000000000000*> \brief \b DPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DPOTF2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DPOTF2( UPLO, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DPOTF2 computes the Cholesky factorization of a real symmetric *> positive definite matrix A. *> *> The factorization has the form *> A = U**T * U , if UPLO = 'U', or *> A = L * L**T, if UPLO = 'L', *> where U is an upper triangular matrix and L is lower triangular. *> *> This is the unblocked version of the algorithm, calling Level 2 BLAS. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> symmetric matrix A is stored. *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> n by n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n by n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the factor U or L from the Cholesky *> factorization A = U**T *U or A = L*L**T. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -k, the k-th argument had an illegal value *> > 0: if INFO = k, the leading minor of order k is not *> positive definite, and the factorization could not be *> completed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doublePOcomputational * * ===================================================================== SUBROUTINE DPOTF2( UPLO, N, A, LDA, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER J DOUBLE PRECISION AJJ * .. * .. External Functions .. LOGICAL LSAME, DISNAN DOUBLE PRECISION DDOT EXTERNAL LSAME, DDOT, DISNAN * .. * .. External Subroutines .. EXTERNAL DGEMV, DSCAL, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DPOTF2', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( UPPER ) THEN * * Compute the Cholesky factorization A = U**T *U. * DO 10 J = 1, N * * Compute U(J,J) and test for non-positive-definiteness. * AJJ = A( J, J ) - DDOT( J-1, A( 1, J ), 1, A( 1, J ), 1 ) IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) ) THEN A( J, J ) = AJJ GO TO 30 END IF AJJ = SQRT( AJJ ) A( J, J ) = AJJ * * Compute elements J+1:N of row J. * IF( J.LT.N ) THEN CALL DGEMV( 'Transpose', J-1, N-J, -ONE, A( 1, J+1 ), $ LDA, A( 1, J ), 1, ONE, A( J, J+1 ), LDA ) CALL DSCAL( N-J, ONE / AJJ, A( J, J+1 ), LDA ) END IF 10 CONTINUE ELSE * * Compute the Cholesky factorization A = L*L**T. * DO 20 J = 1, N * * Compute L(J,J) and test for non-positive-definiteness. * AJJ = A( J, J ) - DDOT( J-1, A( J, 1 ), LDA, A( J, 1 ), $ LDA ) IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) ) THEN A( J, J ) = AJJ GO TO 30 END IF AJJ = SQRT( AJJ ) A( J, J ) = AJJ * * Compute elements J+1:N of column J. * IF( J.LT.N ) THEN CALL DGEMV( 'No transpose', N-J, J-1, -ONE, A( J+1, 1 ), $ LDA, A( J, 1 ), LDA, ONE, A( J+1, J ), 1 ) CALL DSCAL( N-J, ONE / AJJ, A( J+1, J ), 1 ) END IF 20 CONTINUE END IF GO TO 40 * 30 CONTINUE INFO = J * 40 CONTINUE RETURN * * End of DPOTF2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlapy2.f0000644002504400250440000000005012337331322016472 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlapy2.f0000644002504400250440000000475112337331322017245 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLAPY2 returns sqrt(x2+y2). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLAPY2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DLAPY2( X, Y ) * * .. Scalar Arguments .. * DOUBLE PRECISION X, Y * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLAPY2 returns sqrt(x**2+y**2), taking care not to cause unnecessary *> overflow. *> \endverbatim * * Arguments: * ========== * *> \param[in] X *> \verbatim *> X is DOUBLE PRECISION *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is DOUBLE PRECISION *> X and Y specify the values x and y. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== DOUBLE PRECISION FUNCTION DLAPY2( X, Y ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION X, Y * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D0 ) DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D0 ) * .. * .. Local Scalars .. DOUBLE PRECISION W, XABS, YABS, Z * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, MIN, SQRT * .. * .. Executable Statements .. * XABS = ABS( X ) YABS = ABS( Y ) W = MAX( XABS, YABS ) Z = MIN( XABS, YABS ) IF( Z.EQ.ZERO ) THEN DLAPY2 = W ELSE DLAPY2 = W*SQRT( ONE+( Z / W )**2 ) END IF RETURN * * End of DLAPY2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgeev.f0000644002504400250440000000005012337331322016417 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgeev.f0000644002504400250440000003604412337331322017172 0ustar00dewhurstdewhurst00000000000000*> \brief ZGEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGEEV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, * WORK, LWORK, RWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBVL, JOBVR * INTEGER INFO, LDA, LDVL, LDVR, LWORK, N * .. * .. Array Arguments .. * DOUBLE PRECISION RWORK( * ) * COMPLEX*16 A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), * $ W( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGEEV computes for an N-by-N complex nonsymmetric matrix A, the *> eigenvalues and, optionally, the left and/or right eigenvectors. *> *> The right eigenvector v(j) of A satisfies *> A * v(j) = lambda(j) * v(j) *> where lambda(j) is its eigenvalue. *> The left eigenvector u(j) of A satisfies *> u(j)**H * A = lambda(j) * u(j)**H *> where u(j)**H denotes the conjugate transpose of u(j). *> *> The computed eigenvectors are normalized to have Euclidean norm *> equal to 1 and largest component real. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOBVL *> \verbatim *> JOBVL is CHARACTER*1 *> = 'N': left eigenvectors of A are not computed; *> = 'V': left eigenvectors of are computed. *> \endverbatim *> *> \param[in] JOBVR *> \verbatim *> JOBVR is CHARACTER*1 *> = 'N': right eigenvectors of A are not computed; *> = 'V': right eigenvectors of A are computed. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the N-by-N matrix A. *> On exit, A has been overwritten. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] W *> \verbatim *> W is COMPLEX*16 array, dimension (N) *> W contains the computed eigenvalues. *> \endverbatim *> *> \param[out] VL *> \verbatim *> VL is COMPLEX*16 array, dimension (LDVL,N) *> If JOBVL = 'V', the left eigenvectors u(j) are stored one *> after another in the columns of VL, in the same order *> as their eigenvalues. *> If JOBVL = 'N', VL is not referenced. *> u(j) = VL(:,j), the j-th column of VL. *> \endverbatim *> *> \param[in] LDVL *> \verbatim *> LDVL is INTEGER *> The leading dimension of the array VL. LDVL >= 1; if *> JOBVL = 'V', LDVL >= N. *> \endverbatim *> *> \param[out] VR *> \verbatim *> VR is COMPLEX*16 array, dimension (LDVR,N) *> If JOBVR = 'V', the right eigenvectors v(j) are stored one *> after another in the columns of VR, in the same order *> as their eigenvalues. *> If JOBVR = 'N', VR is not referenced. *> v(j) = VR(:,j), the j-th column of VR. *> \endverbatim *> *> \param[in] LDVR *> \verbatim *> LDVR is INTEGER *> The leading dimension of the array VR. LDVR >= 1; if *> JOBVR = 'V', LDVR >= N. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,2*N). *> For good performance, LWORK must generally be larger. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (2*N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> > 0: if INFO = i, the QR algorithm failed to compute all the *> eigenvalues, and no eigenvectors have been computed; *> elements and i+1:N of W contain eigenvalues which have *> converged. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16GEeigen * * ===================================================================== SUBROUTINE ZGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, $ WORK, LWORK, RWORK, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBVL, JOBVR INTEGER INFO, LDA, LDVL, LDVR, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION RWORK( * ) COMPLEX*16 A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), $ W( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) * .. * .. Local Scalars .. LOGICAL LQUERY, SCALEA, WANTVL, WANTVR CHARACTER SIDE INTEGER HSWORK, I, IBAL, IERR, IHI, ILO, IRWORK, ITAU, $ IWRK, K, MAXWRK, MINWRK, NOUT DOUBLE PRECISION ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM COMPLEX*16 TMP * .. * .. Local Arrays .. LOGICAL SELECT( 1 ) DOUBLE PRECISION DUM( 1 ) * .. * .. External Subroutines .. EXTERNAL DLABAD, XERBLA, ZDSCAL, ZGEBAK, ZGEBAL, ZGEHRD, $ ZHSEQR, ZLACPY, ZLASCL, ZSCAL, ZTREVC, ZUNGHR * .. * .. External Functions .. LOGICAL LSAME INTEGER IDAMAX, ILAENV DOUBLE PRECISION DLAMCH, DZNRM2, ZLANGE EXTERNAL LSAME, IDAMAX, ILAENV, DLAMCH, DZNRM2, ZLANGE * .. * .. Intrinsic Functions .. INTRINSIC DBLE, DCMPLX, DCONJG, DIMAG, MAX, SQRT * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LQUERY = ( LWORK.EQ.-1 ) WANTVL = LSAME( JOBVL, 'V' ) WANTVR = LSAME( JOBVR, 'V' ) IF( ( .NOT.WANTVL ) .AND. ( .NOT.LSAME( JOBVL, 'N' ) ) ) THEN INFO = -1 ELSE IF( ( .NOT.WANTVR ) .AND. ( .NOT.LSAME( JOBVR, 'N' ) ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDVL.LT.1 .OR. ( WANTVL .AND. LDVL.LT.N ) ) THEN INFO = -8 ELSE IF( LDVR.LT.1 .OR. ( WANTVR .AND. LDVR.LT.N ) ) THEN INFO = -10 END IF * * Compute workspace * (Note: Comments in the code beginning "Workspace:" describe the * minimal amount of workspace needed at that point in the code, * as well as the preferred amount for good performance. * CWorkspace refers to complex workspace, and RWorkspace to real * workspace. NB refers to the optimal block size for the * immediately following subroutine, as returned by ILAENV. * HSWORK refers to the workspace preferred by ZHSEQR, as * calculated below. HSWORK is computed assuming ILO=1 and IHI=N, * the worst case.) * IF( INFO.EQ.0 ) THEN IF( N.EQ.0 ) THEN MINWRK = 1 MAXWRK = 1 ELSE MAXWRK = N + N*ILAENV( 1, 'ZGEHRD', ' ', N, 1, N, 0 ) MINWRK = 2*N IF( WANTVL ) THEN MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'ZUNGHR', $ ' ', N, 1, N, -1 ) ) CALL ZHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VL, LDVL, $ WORK, -1, INFO ) ELSE IF( WANTVR ) THEN MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'ZUNGHR', $ ' ', N, 1, N, -1 ) ) CALL ZHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VR, LDVR, $ WORK, -1, INFO ) ELSE CALL ZHSEQR( 'E', 'N', N, 1, N, A, LDA, W, VR, LDVR, $ WORK, -1, INFO ) END IF HSWORK = WORK( 1 ) MAXWRK = MAX( MAXWRK, HSWORK, MINWRK ) END IF WORK( 1 ) = MAXWRK * IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN INFO = -12 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGEEV ', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Get machine constants * EPS = DLAMCH( 'P' ) SMLNUM = DLAMCH( 'S' ) BIGNUM = ONE / SMLNUM CALL DLABAD( SMLNUM, BIGNUM ) SMLNUM = SQRT( SMLNUM ) / EPS BIGNUM = ONE / SMLNUM * * Scale A if max element outside range [SMLNUM,BIGNUM] * ANRM = ZLANGE( 'M', N, N, A, LDA, DUM ) SCALEA = .FALSE. IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN SCALEA = .TRUE. CSCALE = SMLNUM ELSE IF( ANRM.GT.BIGNUM ) THEN SCALEA = .TRUE. CSCALE = BIGNUM END IF IF( SCALEA ) $ CALL ZLASCL( 'G', 0, 0, ANRM, CSCALE, N, N, A, LDA, IERR ) * * Balance the matrix * (CWorkspace: none) * (RWorkspace: need N) * IBAL = 1 CALL ZGEBAL( 'B', N, A, LDA, ILO, IHI, RWORK( IBAL ), IERR ) * * Reduce to upper Hessenberg form * (CWorkspace: need 2*N, prefer N+N*NB) * (RWorkspace: none) * ITAU = 1 IWRK = ITAU + N CALL ZGEHRD( N, ILO, IHI, A, LDA, WORK( ITAU ), WORK( IWRK ), $ LWORK-IWRK+1, IERR ) * IF( WANTVL ) THEN * * Want left eigenvectors * Copy Householder vectors to VL * SIDE = 'L' CALL ZLACPY( 'L', N, N, A, LDA, VL, LDVL ) * * Generate unitary matrix in VL * (CWorkspace: need 2*N-1, prefer N+(N-1)*NB) * (RWorkspace: none) * CALL ZUNGHR( N, ILO, IHI, VL, LDVL, WORK( ITAU ), WORK( IWRK ), $ LWORK-IWRK+1, IERR ) * * Perform QR iteration, accumulating Schur vectors in VL * (CWorkspace: need 1, prefer HSWORK (see comments) ) * (RWorkspace: none) * IWRK = ITAU CALL ZHSEQR( 'S', 'V', N, ILO, IHI, A, LDA, W, VL, LDVL, $ WORK( IWRK ), LWORK-IWRK+1, INFO ) * IF( WANTVR ) THEN * * Want left and right eigenvectors * Copy Schur vectors to VR * SIDE = 'B' CALL ZLACPY( 'F', N, N, VL, LDVL, VR, LDVR ) END IF * ELSE IF( WANTVR ) THEN * * Want right eigenvectors * Copy Householder vectors to VR * SIDE = 'R' CALL ZLACPY( 'L', N, N, A, LDA, VR, LDVR ) * * Generate unitary matrix in VR * (CWorkspace: need 2*N-1, prefer N+(N-1)*NB) * (RWorkspace: none) * CALL ZUNGHR( N, ILO, IHI, VR, LDVR, WORK( ITAU ), WORK( IWRK ), $ LWORK-IWRK+1, IERR ) * * Perform QR iteration, accumulating Schur vectors in VR * (CWorkspace: need 1, prefer HSWORK (see comments) ) * (RWorkspace: none) * IWRK = ITAU CALL ZHSEQR( 'S', 'V', N, ILO, IHI, A, LDA, W, VR, LDVR, $ WORK( IWRK ), LWORK-IWRK+1, INFO ) * ELSE * * Compute eigenvalues only * (CWorkspace: need 1, prefer HSWORK (see comments) ) * (RWorkspace: none) * IWRK = ITAU CALL ZHSEQR( 'E', 'N', N, ILO, IHI, A, LDA, W, VR, LDVR, $ WORK( IWRK ), LWORK-IWRK+1, INFO ) END IF * * If INFO > 0 from ZHSEQR, then quit * IF( INFO.GT.0 ) $ GO TO 50 * IF( WANTVL .OR. WANTVR ) THEN * * Compute left and/or right eigenvectors * (CWorkspace: need 2*N) * (RWorkspace: need 2*N) * IRWORK = IBAL + N CALL ZTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR, $ N, NOUT, WORK( IWRK ), RWORK( IRWORK ), IERR ) END IF * IF( WANTVL ) THEN * * Undo balancing of left eigenvectors * (CWorkspace: none) * (RWorkspace: need N) * CALL ZGEBAK( 'B', 'L', N, ILO, IHI, RWORK( IBAL ), N, VL, LDVL, $ IERR ) * * Normalize left eigenvectors and make largest component real * DO 20 I = 1, N SCL = ONE / DZNRM2( N, VL( 1, I ), 1 ) CALL ZDSCAL( N, SCL, VL( 1, I ), 1 ) DO 10 K = 1, N RWORK( IRWORK+K-1 ) = DBLE( VL( K, I ) )**2 + $ DIMAG( VL( K, I ) )**2 10 CONTINUE K = IDAMAX( N, RWORK( IRWORK ), 1 ) TMP = DCONJG( VL( K, I ) ) / SQRT( RWORK( IRWORK+K-1 ) ) CALL ZSCAL( N, TMP, VL( 1, I ), 1 ) VL( K, I ) = DCMPLX( DBLE( VL( K, I ) ), ZERO ) 20 CONTINUE END IF * IF( WANTVR ) THEN * * Undo balancing of right eigenvectors * (CWorkspace: none) * (RWorkspace: need N) * CALL ZGEBAK( 'B', 'R', N, ILO, IHI, RWORK( IBAL ), N, VR, LDVR, $ IERR ) * * Normalize right eigenvectors and make largest component real * DO 40 I = 1, N SCL = ONE / DZNRM2( N, VR( 1, I ), 1 ) CALL ZDSCAL( N, SCL, VR( 1, I ), 1 ) DO 30 K = 1, N RWORK( IRWORK+K-1 ) = DBLE( VR( K, I ) )**2 + $ DIMAG( VR( K, I ) )**2 30 CONTINUE K = IDAMAX( N, RWORK( IRWORK ), 1 ) TMP = DCONJG( VR( K, I ) ) / SQRT( RWORK( IRWORK+K-1 ) ) CALL ZSCAL( N, TMP, VR( 1, I ), 1 ) VR( K, I ) = DCMPLX( DBLE( VR( K, I ) ), ZERO ) 40 CONTINUE END IF * * Undo scaling if necessary * 50 CONTINUE IF( SCALEA ) THEN CALL ZLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, W( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) IF( INFO.GT.0 ) THEN CALL ZLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, W, N, IERR ) END IF END IF * WORK( 1 ) = MAXWRK RETURN * * End of ZGEEV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlatrs.f0000644002504400250440000000005012337331322016616 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlatrs.f0000644002504400250440000007254712337331322017401 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLATRS solves a triangular system of equations with the scale factor set to prevent overflow. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLATRS + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLATRS( UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE, * CNORM, INFO ) * * .. Scalar Arguments .. * CHARACTER DIAG, NORMIN, TRANS, UPLO * INTEGER INFO, LDA, N * DOUBLE PRECISION SCALE * .. * .. Array Arguments .. * DOUBLE PRECISION CNORM( * ) * COMPLEX*16 A( LDA, * ), X( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLATRS solves one of the triangular systems *> *> A * x = s*b, A**T * x = s*b, or A**H * x = s*b, *> *> with scaling to prevent overflow. Here A is an upper or lower *> triangular matrix, A**T denotes the transpose of A, A**H denotes the *> conjugate transpose of A, x and b are n-element vectors, and s is a *> scaling factor, usually less than or equal to 1, chosen so that the *> components of x will be less than the overflow threshold. If the *> unscaled problem will not cause overflow, the Level 2 BLAS routine *> ZTRSV is called. If the matrix A is singular (A(j,j) = 0 for some j), *> then s is set to 0 and a non-trivial solution to A*x = 0 is returned. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the matrix A is upper or lower triangular. *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> Specifies the operation applied to A. *> = 'N': Solve A * x = s*b (No transpose) *> = 'T': Solve A**T * x = s*b (Transpose) *> = 'C': Solve A**H * x = s*b (Conjugate transpose) *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> Specifies whether or not the matrix A is unit triangular. *> = 'N': Non-unit triangular *> = 'U': Unit triangular *> \endverbatim *> *> \param[in] NORMIN *> \verbatim *> NORMIN is CHARACTER*1 *> Specifies whether CNORM has been set or not. *> = 'Y': CNORM contains the column norms on entry *> = 'N': CNORM is not set on entry. On exit, the norms will *> be computed and stored in CNORM. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The triangular matrix A. If UPLO = 'U', the leading n by n *> upper triangular part of the array A contains the upper *> triangular matrix, and the strictly lower triangular part of *> A is not referenced. If UPLO = 'L', the leading n by n lower *> triangular part of the array A contains the lower triangular *> matrix, and the strictly upper triangular part of A is not *> referenced. If DIAG = 'U', the diagonal elements of A are *> also not referenced and are assumed to be 1. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max (1,N). *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is COMPLEX*16 array, dimension (N) *> On entry, the right hand side b of the triangular system. *> On exit, X is overwritten by the solution vector x. *> \endverbatim *> *> \param[out] SCALE *> \verbatim *> SCALE is DOUBLE PRECISION *> The scaling factor s for the triangular system *> A * x = s*b, A**T * x = s*b, or A**H * x = s*b. *> If SCALE = 0, the matrix A is singular or badly scaled, and *> the vector x is an exact or approximate solution to A*x = 0. *> \endverbatim *> *> \param[in,out] CNORM *> \verbatim *> CNORM is DOUBLE PRECISION array, dimension (N) *> *> If NORMIN = 'Y', CNORM is an input argument and CNORM(j) *> contains the norm of the off-diagonal part of the j-th column *> of A. If TRANS = 'N', CNORM(j) must be greater than or equal *> to the infinity-norm, and if TRANS = 'T' or 'C', CNORM(j) *> must be greater than or equal to the 1-norm. *> *> If NORMIN = 'N', CNORM is an output argument and CNORM(j) *> returns the 1-norm of the offdiagonal part of the j-th column *> of A. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -k, the k-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> A rough bound on x is computed; if that is less than overflow, ZTRSV *> is called, otherwise, specific code is used which checks for possible *> overflow or divide-by-zero at every operation. *> *> A columnwise scheme is used for solving A*x = b. The basic algorithm *> if A is lower triangular is *> *> x[1:n] := b[1:n] *> for j = 1, ..., n *> x(j) := x(j) / A(j,j) *> x[j+1:n] := x[j+1:n] - x(j) * A[j+1:n,j] *> end *> *> Define bounds on the components of x after j iterations of the loop: *> M(j) = bound on x[1:j] *> G(j) = bound on x[j+1:n] *> Initially, let M(0) = 0 and G(0) = max{x(i), i=1,...,n}. *> *> Then for iteration j+1 we have *> M(j+1) <= G(j) / | A(j+1,j+1) | *> G(j+1) <= G(j) + M(j+1) * | A[j+2:n,j+1] | *> <= G(j) ( 1 + CNORM(j+1) / | A(j+1,j+1) | ) *> *> where CNORM(j+1) is greater than or equal to the infinity-norm of *> column j+1 of A, not counting the diagonal. Hence *> *> G(j) <= G(0) product ( 1 + CNORM(i) / | A(i,i) | ) *> 1<=i<=j *> and *> *> |x(j)| <= ( G(0) / |A(j,j)| ) product ( 1 + CNORM(i) / |A(i,i)| ) *> 1<=i< j *> *> Since |x(j)| <= M(j), we use the Level 2 BLAS routine ZTRSV if the *> reciprocal of the largest M(j), j=1,..,n, is larger than *> max(underflow, 1/overflow). *> *> The bound on x(j) is also used to determine when a step in the *> columnwise method can be performed without fear of overflow. If *> the computed bound is greater than a large constant, x is scaled to *> prevent overflow, but if the bound overflows, x is set to 0, x(j) to *> 1, and scale to 0, and a non-trivial solution to A*x = 0 is found. *> *> Similarly, a row-wise scheme is used to solve A**T *x = b or *> A**H *x = b. The basic algorithm for A upper triangular is *> *> for j = 1, ..., n *> x(j) := ( b(j) - A[1:j-1,j]' * x[1:j-1] ) / A(j,j) *> end *> *> We simultaneously compute two bounds *> G(j) = bound on ( b(i) - A[1:i-1,i]' * x[1:i-1] ), 1<=i<=j *> M(j) = bound on x(i), 1<=i<=j *> *> The initial values are G(0) = 0, M(0) = max{b(i), i=1,..,n}, and we *> add the constraint G(j) >= G(j-1) and M(j) >= M(j-1) for j >= 1. *> Then the bound on x(j) is *> *> M(j) <= M(j-1) * ( 1 + CNORM(j) ) / | A(j,j) | *> *> <= M(0) * product ( ( 1 + CNORM(i) ) / |A(i,i)| ) *> 1<=i<=j *> *> and we can safely call ZTRSV if 1/M(n) and 1/G(n) are both greater *> than max(underflow, 1/overflow). *> \endverbatim *> * ===================================================================== SUBROUTINE ZLATRS( UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE, $ CNORM, INFO ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIAG, NORMIN, TRANS, UPLO INTEGER INFO, LDA, N DOUBLE PRECISION SCALE * .. * .. Array Arguments .. DOUBLE PRECISION CNORM( * ) COMPLEX*16 A( LDA, * ), X( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, HALF, ONE, TWO PARAMETER ( ZERO = 0.0D+0, HALF = 0.5D+0, ONE = 1.0D+0, $ TWO = 2.0D+0 ) * .. * .. Local Scalars .. LOGICAL NOTRAN, NOUNIT, UPPER INTEGER I, IMAX, J, JFIRST, JINC, JLAST DOUBLE PRECISION BIGNUM, GROW, REC, SMLNUM, TJJ, TMAX, TSCAL, $ XBND, XJ, XMAX COMPLEX*16 CSUMJ, TJJS, USCAL, ZDUM * .. * .. External Functions .. LOGICAL LSAME INTEGER IDAMAX, IZAMAX DOUBLE PRECISION DLAMCH, DZASUM COMPLEX*16 ZDOTC, ZDOTU, ZLADIV EXTERNAL LSAME, IDAMAX, IZAMAX, DLAMCH, DZASUM, ZDOTC, $ ZDOTU, ZLADIV * .. * .. External Subroutines .. EXTERNAL DSCAL, XERBLA, ZAXPY, ZDSCAL, ZTRSV * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, MAX, MIN * .. * .. Statement Functions .. DOUBLE PRECISION CABS1, CABS2 * .. * .. Statement Function definitions .. CABS1( ZDUM ) = ABS( DBLE( ZDUM ) ) + ABS( DIMAG( ZDUM ) ) CABS2( ZDUM ) = ABS( DBLE( ZDUM ) / 2.D0 ) + $ ABS( DIMAG( ZDUM ) / 2.D0 ) * .. * .. Executable Statements .. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) NOTRAN = LSAME( TRANS, 'N' ) NOUNIT = LSAME( DIAG, 'N' ) * * Test the input parameters. * IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT. $ LSAME( TRANS, 'C' ) ) THEN INFO = -2 ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN INFO = -3 ELSE IF( .NOT.LSAME( NORMIN, 'Y' ) .AND. .NOT. $ LSAME( NORMIN, 'N' ) ) THEN INFO = -4 ELSE IF( N.LT.0 ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -7 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZLATRS', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Determine machine dependent parameters to control overflow. * SMLNUM = DLAMCH( 'Safe minimum' ) BIGNUM = ONE / SMLNUM CALL DLABAD( SMLNUM, BIGNUM ) SMLNUM = SMLNUM / DLAMCH( 'Precision' ) BIGNUM = ONE / SMLNUM SCALE = ONE * IF( LSAME( NORMIN, 'N' ) ) THEN * * Compute the 1-norm of each column, not including the diagonal. * IF( UPPER ) THEN * * A is upper triangular. * DO 10 J = 1, N CNORM( J ) = DZASUM( J-1, A( 1, J ), 1 ) 10 CONTINUE ELSE * * A is lower triangular. * DO 20 J = 1, N - 1 CNORM( J ) = DZASUM( N-J, A( J+1, J ), 1 ) 20 CONTINUE CNORM( N ) = ZERO END IF END IF * * Scale the column norms by TSCAL if the maximum element in CNORM is * greater than BIGNUM/2. * IMAX = IDAMAX( N, CNORM, 1 ) TMAX = CNORM( IMAX ) IF( TMAX.LE.BIGNUM*HALF ) THEN TSCAL = ONE ELSE TSCAL = HALF / ( SMLNUM*TMAX ) CALL DSCAL( N, TSCAL, CNORM, 1 ) END IF * * Compute a bound on the computed solution vector to see if the * Level 2 BLAS routine ZTRSV can be used. * XMAX = ZERO DO 30 J = 1, N XMAX = MAX( XMAX, CABS2( X( J ) ) ) 30 CONTINUE XBND = XMAX * IF( NOTRAN ) THEN * * Compute the growth in A * x = b. * IF( UPPER ) THEN JFIRST = N JLAST = 1 JINC = -1 ELSE JFIRST = 1 JLAST = N JINC = 1 END IF * IF( TSCAL.NE.ONE ) THEN GROW = ZERO GO TO 60 END IF * IF( NOUNIT ) THEN * * A is non-unit triangular. * * Compute GROW = 1/G(j) and XBND = 1/M(j). * Initially, G(0) = max{x(i), i=1,...,n}. * GROW = HALF / MAX( XBND, SMLNUM ) XBND = GROW DO 40 J = JFIRST, JLAST, JINC * * Exit the loop if the growth factor is too small. * IF( GROW.LE.SMLNUM ) $ GO TO 60 * TJJS = A( J, J ) TJJ = CABS1( TJJS ) * IF( TJJ.GE.SMLNUM ) THEN * * M(j) = G(j-1) / abs(A(j,j)) * XBND = MIN( XBND, MIN( ONE, TJJ )*GROW ) ELSE * * M(j) could overflow, set XBND to 0. * XBND = ZERO END IF * IF( TJJ+CNORM( J ).GE.SMLNUM ) THEN * * G(j) = G(j-1)*( 1 + CNORM(j) / abs(A(j,j)) ) * GROW = GROW*( TJJ / ( TJJ+CNORM( J ) ) ) ELSE * * G(j) could overflow, set GROW to 0. * GROW = ZERO END IF 40 CONTINUE GROW = XBND ELSE * * A is unit triangular. * * Compute GROW = 1/G(j), where G(0) = max{x(i), i=1,...,n}. * GROW = MIN( ONE, HALF / MAX( XBND, SMLNUM ) ) DO 50 J = JFIRST, JLAST, JINC * * Exit the loop if the growth factor is too small. * IF( GROW.LE.SMLNUM ) $ GO TO 60 * * G(j) = G(j-1)*( 1 + CNORM(j) ) * GROW = GROW*( ONE / ( ONE+CNORM( J ) ) ) 50 CONTINUE END IF 60 CONTINUE * ELSE * * Compute the growth in A**T * x = b or A**H * x = b. * IF( UPPER ) THEN JFIRST = 1 JLAST = N JINC = 1 ELSE JFIRST = N JLAST = 1 JINC = -1 END IF * IF( TSCAL.NE.ONE ) THEN GROW = ZERO GO TO 90 END IF * IF( NOUNIT ) THEN * * A is non-unit triangular. * * Compute GROW = 1/G(j) and XBND = 1/M(j). * Initially, M(0) = max{x(i), i=1,...,n}. * GROW = HALF / MAX( XBND, SMLNUM ) XBND = GROW DO 70 J = JFIRST, JLAST, JINC * * Exit the loop if the growth factor is too small. * IF( GROW.LE.SMLNUM ) $ GO TO 90 * * G(j) = max( G(j-1), M(j-1)*( 1 + CNORM(j) ) ) * XJ = ONE + CNORM( J ) GROW = MIN( GROW, XBND / XJ ) * TJJS = A( J, J ) TJJ = CABS1( TJJS ) * IF( TJJ.GE.SMLNUM ) THEN * * M(j) = M(j-1)*( 1 + CNORM(j) ) / abs(A(j,j)) * IF( XJ.GT.TJJ ) $ XBND = XBND*( TJJ / XJ ) ELSE * * M(j) could overflow, set XBND to 0. * XBND = ZERO END IF 70 CONTINUE GROW = MIN( GROW, XBND ) ELSE * * A is unit triangular. * * Compute GROW = 1/G(j), where G(0) = max{x(i), i=1,...,n}. * GROW = MIN( ONE, HALF / MAX( XBND, SMLNUM ) ) DO 80 J = JFIRST, JLAST, JINC * * Exit the loop if the growth factor is too small. * IF( GROW.LE.SMLNUM ) $ GO TO 90 * * G(j) = ( 1 + CNORM(j) )*G(j-1) * XJ = ONE + CNORM( J ) GROW = GROW / XJ 80 CONTINUE END IF 90 CONTINUE END IF * IF( ( GROW*TSCAL ).GT.SMLNUM ) THEN * * Use the Level 2 BLAS solve if the reciprocal of the bound on * elements of X is not too small. * CALL ZTRSV( UPLO, TRANS, DIAG, N, A, LDA, X, 1 ) ELSE * * Use a Level 1 BLAS solve, scaling intermediate results. * IF( XMAX.GT.BIGNUM*HALF ) THEN * * Scale X so that its components are less than or equal to * BIGNUM in absolute value. * SCALE = ( BIGNUM*HALF ) / XMAX CALL ZDSCAL( N, SCALE, X, 1 ) XMAX = BIGNUM ELSE XMAX = XMAX*TWO END IF * IF( NOTRAN ) THEN * * Solve A * x = b * DO 120 J = JFIRST, JLAST, JINC * * Compute x(j) = b(j) / A(j,j), scaling x if necessary. * XJ = CABS1( X( J ) ) IF( NOUNIT ) THEN TJJS = A( J, J )*TSCAL ELSE TJJS = TSCAL IF( TSCAL.EQ.ONE ) $ GO TO 110 END IF TJJ = CABS1( TJJS ) IF( TJJ.GT.SMLNUM ) THEN * * abs(A(j,j)) > SMLNUM: * IF( TJJ.LT.ONE ) THEN IF( XJ.GT.TJJ*BIGNUM ) THEN * * Scale x by 1/b(j). * REC = ONE / XJ CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC XMAX = XMAX*REC END IF END IF X( J ) = ZLADIV( X( J ), TJJS ) XJ = CABS1( X( J ) ) ELSE IF( TJJ.GT.ZERO ) THEN * * 0 < abs(A(j,j)) <= SMLNUM: * IF( XJ.GT.TJJ*BIGNUM ) THEN * * Scale x by (1/abs(x(j)))*abs(A(j,j))*BIGNUM * to avoid overflow when dividing by A(j,j). * REC = ( TJJ*BIGNUM ) / XJ IF( CNORM( J ).GT.ONE ) THEN * * Scale by 1/CNORM(j) to avoid overflow when * multiplying x(j) times column j. * REC = REC / CNORM( J ) END IF CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC XMAX = XMAX*REC END IF X( J ) = ZLADIV( X( J ), TJJS ) XJ = CABS1( X( J ) ) ELSE * * A(j,j) = 0: Set x(1:n) = 0, x(j) = 1, and * scale = 0, and compute a solution to A*x = 0. * DO 100 I = 1, N X( I ) = ZERO 100 CONTINUE X( J ) = ONE XJ = ONE SCALE = ZERO XMAX = ZERO END IF 110 CONTINUE * * Scale x if necessary to avoid overflow when adding a * multiple of column j of A. * IF( XJ.GT.ONE ) THEN REC = ONE / XJ IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN * * Scale x by 1/(2*abs(x(j))). * REC = REC*HALF CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC END IF ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN * * Scale x by 1/2. * CALL ZDSCAL( N, HALF, X, 1 ) SCALE = SCALE*HALF END IF * IF( UPPER ) THEN IF( J.GT.1 ) THEN * * Compute the update * x(1:j-1) := x(1:j-1) - x(j) * A(1:j-1,j) * CALL ZAXPY( J-1, -X( J )*TSCAL, A( 1, J ), 1, X, $ 1 ) I = IZAMAX( J-1, X, 1 ) XMAX = CABS1( X( I ) ) END IF ELSE IF( J.LT.N ) THEN * * Compute the update * x(j+1:n) := x(j+1:n) - x(j) * A(j+1:n,j) * CALL ZAXPY( N-J, -X( J )*TSCAL, A( J+1, J ), 1, $ X( J+1 ), 1 ) I = J + IZAMAX( N-J, X( J+1 ), 1 ) XMAX = CABS1( X( I ) ) END IF END IF 120 CONTINUE * ELSE IF( LSAME( TRANS, 'T' ) ) THEN * * Solve A**T * x = b * DO 170 J = JFIRST, JLAST, JINC * * Compute x(j) = b(j) - sum A(k,j)*x(k). * k<>j * XJ = CABS1( X( J ) ) USCAL = TSCAL REC = ONE / MAX( XMAX, ONE ) IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN * * If x(j) could overflow, scale x by 1/(2*XMAX). * REC = REC*HALF IF( NOUNIT ) THEN TJJS = A( J, J )*TSCAL ELSE TJJS = TSCAL END IF TJJ = CABS1( TJJS ) IF( TJJ.GT.ONE ) THEN * * Divide by A(j,j) when scaling x if A(j,j) > 1. * REC = MIN( ONE, REC*TJJ ) USCAL = ZLADIV( USCAL, TJJS ) END IF IF( REC.LT.ONE ) THEN CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC XMAX = XMAX*REC END IF END IF * CSUMJ = ZERO IF( USCAL.EQ.DCMPLX( ONE ) ) THEN * * If the scaling needed for A in the dot product is 1, * call ZDOTU to perform the dot product. * IF( UPPER ) THEN CSUMJ = ZDOTU( J-1, A( 1, J ), 1, X, 1 ) ELSE IF( J.LT.N ) THEN CSUMJ = ZDOTU( N-J, A( J+1, J ), 1, X( J+1 ), 1 ) END IF ELSE * * Otherwise, use in-line code for the dot product. * IF( UPPER ) THEN DO 130 I = 1, J - 1 CSUMJ = CSUMJ + ( A( I, J )*USCAL )*X( I ) 130 CONTINUE ELSE IF( J.LT.N ) THEN DO 140 I = J + 1, N CSUMJ = CSUMJ + ( A( I, J )*USCAL )*X( I ) 140 CONTINUE END IF END IF * IF( USCAL.EQ.DCMPLX( TSCAL ) ) THEN * * Compute x(j) := ( x(j) - CSUMJ ) / A(j,j) if 1/A(j,j) * was not used to scale the dotproduct. * X( J ) = X( J ) - CSUMJ XJ = CABS1( X( J ) ) IF( NOUNIT ) THEN TJJS = A( J, J )*TSCAL ELSE TJJS = TSCAL IF( TSCAL.EQ.ONE ) $ GO TO 160 END IF * * Compute x(j) = x(j) / A(j,j), scaling if necessary. * TJJ = CABS1( TJJS ) IF( TJJ.GT.SMLNUM ) THEN * * abs(A(j,j)) > SMLNUM: * IF( TJJ.LT.ONE ) THEN IF( XJ.GT.TJJ*BIGNUM ) THEN * * Scale X by 1/abs(x(j)). * REC = ONE / XJ CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC XMAX = XMAX*REC END IF END IF X( J ) = ZLADIV( X( J ), TJJS ) ELSE IF( TJJ.GT.ZERO ) THEN * * 0 < abs(A(j,j)) <= SMLNUM: * IF( XJ.GT.TJJ*BIGNUM ) THEN * * Scale x by (1/abs(x(j)))*abs(A(j,j))*BIGNUM. * REC = ( TJJ*BIGNUM ) / XJ CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC XMAX = XMAX*REC END IF X( J ) = ZLADIV( X( J ), TJJS ) ELSE * * A(j,j) = 0: Set x(1:n) = 0, x(j) = 1, and * scale = 0 and compute a solution to A**T *x = 0. * DO 150 I = 1, N X( I ) = ZERO 150 CONTINUE X( J ) = ONE SCALE = ZERO XMAX = ZERO END IF 160 CONTINUE ELSE * * Compute x(j) := x(j) / A(j,j) - CSUMJ if the dot * product has already been divided by 1/A(j,j). * X( J ) = ZLADIV( X( J ), TJJS ) - CSUMJ END IF XMAX = MAX( XMAX, CABS1( X( J ) ) ) 170 CONTINUE * ELSE * * Solve A**H * x = b * DO 220 J = JFIRST, JLAST, JINC * * Compute x(j) = b(j) - sum A(k,j)*x(k). * k<>j * XJ = CABS1( X( J ) ) USCAL = TSCAL REC = ONE / MAX( XMAX, ONE ) IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN * * If x(j) could overflow, scale x by 1/(2*XMAX). * REC = REC*HALF IF( NOUNIT ) THEN TJJS = DCONJG( A( J, J ) )*TSCAL ELSE TJJS = TSCAL END IF TJJ = CABS1( TJJS ) IF( TJJ.GT.ONE ) THEN * * Divide by A(j,j) when scaling x if A(j,j) > 1. * REC = MIN( ONE, REC*TJJ ) USCAL = ZLADIV( USCAL, TJJS ) END IF IF( REC.LT.ONE ) THEN CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC XMAX = XMAX*REC END IF END IF * CSUMJ = ZERO IF( USCAL.EQ.DCMPLX( ONE ) ) THEN * * If the scaling needed for A in the dot product is 1, * call ZDOTC to perform the dot product. * IF( UPPER ) THEN CSUMJ = ZDOTC( J-1, A( 1, J ), 1, X, 1 ) ELSE IF( J.LT.N ) THEN CSUMJ = ZDOTC( N-J, A( J+1, J ), 1, X( J+1 ), 1 ) END IF ELSE * * Otherwise, use in-line code for the dot product. * IF( UPPER ) THEN DO 180 I = 1, J - 1 CSUMJ = CSUMJ + ( DCONJG( A( I, J ) )*USCAL )* $ X( I ) 180 CONTINUE ELSE IF( J.LT.N ) THEN DO 190 I = J + 1, N CSUMJ = CSUMJ + ( DCONJG( A( I, J ) )*USCAL )* $ X( I ) 190 CONTINUE END IF END IF * IF( USCAL.EQ.DCMPLX( TSCAL ) ) THEN * * Compute x(j) := ( x(j) - CSUMJ ) / A(j,j) if 1/A(j,j) * was not used to scale the dotproduct. * X( J ) = X( J ) - CSUMJ XJ = CABS1( X( J ) ) IF( NOUNIT ) THEN TJJS = DCONJG( A( J, J ) )*TSCAL ELSE TJJS = TSCAL IF( TSCAL.EQ.ONE ) $ GO TO 210 END IF * * Compute x(j) = x(j) / A(j,j), scaling if necessary. * TJJ = CABS1( TJJS ) IF( TJJ.GT.SMLNUM ) THEN * * abs(A(j,j)) > SMLNUM: * IF( TJJ.LT.ONE ) THEN IF( XJ.GT.TJJ*BIGNUM ) THEN * * Scale X by 1/abs(x(j)). * REC = ONE / XJ CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC XMAX = XMAX*REC END IF END IF X( J ) = ZLADIV( X( J ), TJJS ) ELSE IF( TJJ.GT.ZERO ) THEN * * 0 < abs(A(j,j)) <= SMLNUM: * IF( XJ.GT.TJJ*BIGNUM ) THEN * * Scale x by (1/abs(x(j)))*abs(A(j,j))*BIGNUM. * REC = ( TJJ*BIGNUM ) / XJ CALL ZDSCAL( N, REC, X, 1 ) SCALE = SCALE*REC XMAX = XMAX*REC END IF X( J ) = ZLADIV( X( J ), TJJS ) ELSE * * A(j,j) = 0: Set x(1:n) = 0, x(j) = 1, and * scale = 0 and compute a solution to A**H *x = 0. * DO 200 I = 1, N X( I ) = ZERO 200 CONTINUE X( J ) = ONE SCALE = ZERO XMAX = ZERO END IF 210 CONTINUE ELSE * * Compute x(j) := x(j) / A(j,j) - CSUMJ if the dot * product has already been divided by 1/A(j,j). * X( J ) = ZLADIV( X( J ), TJJS ) - CSUMJ END IF XMAX = MAX( XMAX, CABS1( X( J ) ) ) 220 CONTINUE END IF SCALE = SCALE / TSCAL END IF * * Scale the column norms by 1/TSCAL for return. * IF( TSCAL.NE.ONE ) THEN CALL DSCAL( N, ONE / TSCAL, CNORM, 1 ) END IF * RETURN * * End of ZLATRS * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlagts.f0000644002504400250440000000005012337331322016555 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlagts.f0000644002504400250440000003036612337331322017331 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLAGTS solves the system of equations (T-λI)x = y or (T-λI)Tx = y,where T is a general tridiagonal matrix and λ a scalar, using the LU factorization computed by slagtf. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLAGTS + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLAGTS( JOB, N, A, B, C, D, IN, Y, TOL, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, JOB, N * DOUBLE PRECISION TOL * .. * .. Array Arguments .. * INTEGER IN( * ) * DOUBLE PRECISION A( * ), B( * ), C( * ), D( * ), Y( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLAGTS may be used to solve one of the systems of equations *> *> (T - lambda*I)*x = y or (T - lambda*I)**T*x = y, *> *> where T is an n by n tridiagonal matrix, for x, following the *> factorization of (T - lambda*I) as *> *> (T - lambda*I) = P*L*U , *> *> by routine DLAGTF. The choice of equation to be solved is *> controlled by the argument JOB, and in each case there is an option *> to perturb zero or very small diagonal elements of U, this option *> being intended for use in applications such as inverse iteration. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOB *> \verbatim *> JOB is INTEGER *> Specifies the job to be performed by DLAGTS as follows: *> = 1: The equations (T - lambda*I)x = y are to be solved, *> but diagonal elements of U are not to be perturbed. *> = -1: The equations (T - lambda*I)x = y are to be solved *> and, if overflow would otherwise occur, the diagonal *> elements of U are to be perturbed. See argument TOL *> below. *> = 2: The equations (T - lambda*I)**Tx = y are to be solved, *> but diagonal elements of U are not to be perturbed. *> = -2: The equations (T - lambda*I)**Tx = y are to be solved *> and, if overflow would otherwise occur, the diagonal *> elements of U are to be perturbed. See argument TOL *> below. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix T. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (N) *> On entry, A must contain the diagonal elements of U as *> returned from DLAGTF. *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (N-1) *> On entry, B must contain the first super-diagonal elements of *> U as returned from DLAGTF. *> \endverbatim *> *> \param[in] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (N-1) *> On entry, C must contain the sub-diagonal elements of L as *> returned from DLAGTF. *> \endverbatim *> *> \param[in] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N-2) *> On entry, D must contain the second super-diagonal elements *> of U as returned from DLAGTF. *> \endverbatim *> *> \param[in] IN *> \verbatim *> IN is INTEGER array, dimension (N) *> On entry, IN must contain details of the matrix P as returned *> from DLAGTF. *> \endverbatim *> *> \param[in,out] Y *> \verbatim *> Y is DOUBLE PRECISION array, dimension (N) *> On entry, the right hand side vector y. *> On exit, Y is overwritten by the solution vector x. *> \endverbatim *> *> \param[in,out] TOL *> \verbatim *> TOL is DOUBLE PRECISION *> On entry, with JOB .lt. 0, TOL should be the minimum *> perturbation to be made to very small diagonal elements of U. *> TOL should normally be chosen as about eps*norm(U), where eps *> is the relative machine precision, but if TOL is supplied as *> non-positive, then it is reset to eps*max( abs( u(i,j) ) ). *> If JOB .gt. 0 then TOL is not referenced. *> *> On exit, TOL is changed as described above, only if TOL is *> non-positive on entry. Otherwise TOL is unchanged. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0 : successful exit *> .lt. 0: if INFO = -i, the i-th argument had an illegal value *> .gt. 0: overflow would occur when computing the INFO(th) *> element of the solution vector x. This can only occur *> when JOB is supplied as positive and either means *> that a diagonal element of U is very small, or that *> the elements of the right-hand side vector y are very *> large. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLAGTS( JOB, N, A, B, C, D, IN, Y, TOL, INFO ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INFO, JOB, N DOUBLE PRECISION TOL * .. * .. Array Arguments .. INTEGER IN( * ) DOUBLE PRECISION A( * ), B( * ), C( * ), D( * ), Y( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER K DOUBLE PRECISION ABSAK, AK, BIGNUM, EPS, PERT, SFMIN, TEMP * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, SIGN * .. * .. External Functions .. DOUBLE PRECISION DLAMCH EXTERNAL DLAMCH * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Executable Statements .. * INFO = 0 IF( ( ABS( JOB ).GT.2 ) .OR. ( JOB.EQ.0 ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DLAGTS', -INFO ) RETURN END IF * IF( N.EQ.0 ) $ RETURN * EPS = DLAMCH( 'Epsilon' ) SFMIN = DLAMCH( 'Safe minimum' ) BIGNUM = ONE / SFMIN * IF( JOB.LT.0 ) THEN IF( TOL.LE.ZERO ) THEN TOL = ABS( A( 1 ) ) IF( N.GT.1 ) $ TOL = MAX( TOL, ABS( A( 2 ) ), ABS( B( 1 ) ) ) DO 10 K = 3, N TOL = MAX( TOL, ABS( A( K ) ), ABS( B( K-1 ) ), $ ABS( D( K-2 ) ) ) 10 CONTINUE TOL = TOL*EPS IF( TOL.EQ.ZERO ) $ TOL = EPS END IF END IF * IF( ABS( JOB ).EQ.1 ) THEN DO 20 K = 2, N IF( IN( K-1 ).EQ.0 ) THEN Y( K ) = Y( K ) - C( K-1 )*Y( K-1 ) ELSE TEMP = Y( K-1 ) Y( K-1 ) = Y( K ) Y( K ) = TEMP - C( K-1 )*Y( K ) END IF 20 CONTINUE IF( JOB.EQ.1 ) THEN DO 30 K = N, 1, -1 IF( K.LE.N-2 ) THEN TEMP = Y( K ) - B( K )*Y( K+1 ) - D( K )*Y( K+2 ) ELSE IF( K.EQ.N-1 ) THEN TEMP = Y( K ) - B( K )*Y( K+1 ) ELSE TEMP = Y( K ) END IF AK = A( K ) ABSAK = ABS( AK ) IF( ABSAK.LT.ONE ) THEN IF( ABSAK.LT.SFMIN ) THEN IF( ABSAK.EQ.ZERO .OR. ABS( TEMP )*SFMIN.GT.ABSAK ) $ THEN INFO = K RETURN ELSE TEMP = TEMP*BIGNUM AK = AK*BIGNUM END IF ELSE IF( ABS( TEMP ).GT.ABSAK*BIGNUM ) THEN INFO = K RETURN END IF END IF Y( K ) = TEMP / AK 30 CONTINUE ELSE DO 50 K = N, 1, -1 IF( K.LE.N-2 ) THEN TEMP = Y( K ) - B( K )*Y( K+1 ) - D( K )*Y( K+2 ) ELSE IF( K.EQ.N-1 ) THEN TEMP = Y( K ) - B( K )*Y( K+1 ) ELSE TEMP = Y( K ) END IF AK = A( K ) PERT = SIGN( TOL, AK ) 40 CONTINUE ABSAK = ABS( AK ) IF( ABSAK.LT.ONE ) THEN IF( ABSAK.LT.SFMIN ) THEN IF( ABSAK.EQ.ZERO .OR. ABS( TEMP )*SFMIN.GT.ABSAK ) $ THEN AK = AK + PERT PERT = 2*PERT GO TO 40 ELSE TEMP = TEMP*BIGNUM AK = AK*BIGNUM END IF ELSE IF( ABS( TEMP ).GT.ABSAK*BIGNUM ) THEN AK = AK + PERT PERT = 2*PERT GO TO 40 END IF END IF Y( K ) = TEMP / AK 50 CONTINUE END IF ELSE * * Come to here if JOB = 2 or -2 * IF( JOB.EQ.2 ) THEN DO 60 K = 1, N IF( K.GE.3 ) THEN TEMP = Y( K ) - B( K-1 )*Y( K-1 ) - D( K-2 )*Y( K-2 ) ELSE IF( K.EQ.2 ) THEN TEMP = Y( K ) - B( K-1 )*Y( K-1 ) ELSE TEMP = Y( K ) END IF AK = A( K ) ABSAK = ABS( AK ) IF( ABSAK.LT.ONE ) THEN IF( ABSAK.LT.SFMIN ) THEN IF( ABSAK.EQ.ZERO .OR. ABS( TEMP )*SFMIN.GT.ABSAK ) $ THEN INFO = K RETURN ELSE TEMP = TEMP*BIGNUM AK = AK*BIGNUM END IF ELSE IF( ABS( TEMP ).GT.ABSAK*BIGNUM ) THEN INFO = K RETURN END IF END IF Y( K ) = TEMP / AK 60 CONTINUE ELSE DO 80 K = 1, N IF( K.GE.3 ) THEN TEMP = Y( K ) - B( K-1 )*Y( K-1 ) - D( K-2 )*Y( K-2 ) ELSE IF( K.EQ.2 ) THEN TEMP = Y( K ) - B( K-1 )*Y( K-1 ) ELSE TEMP = Y( K ) END IF AK = A( K ) PERT = SIGN( TOL, AK ) 70 CONTINUE ABSAK = ABS( AK ) IF( ABSAK.LT.ONE ) THEN IF( ABSAK.LT.SFMIN ) THEN IF( ABSAK.EQ.ZERO .OR. ABS( TEMP )*SFMIN.GT.ABSAK ) $ THEN AK = AK + PERT PERT = 2*PERT GO TO 70 ELSE TEMP = TEMP*BIGNUM AK = AK*BIGNUM END IF ELSE IF( ABS( TEMP ).GT.ABSAK*BIGNUM ) THEN AK = AK + PERT PERT = 2*PERT GO TO 70 END IF END IF Y( K ) = TEMP / AK 80 CONTINUE END IF * DO 90 K = N, 2, -1 IF( IN( K-1 ).EQ.0 ) THEN Y( K-1 ) = Y( K-1 ) - C( K-1 )*Y( K ) ELSE TEMP = Y( K-1 ) Y( K-1 ) = Y( K ) Y( K ) = TEMP - C( K-1 )*Y( K ) END IF 90 CONTINUE END IF * * End of DLAGTS * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsterf.f0000644002504400250440000000005012337331322016566 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsterf.f0000644002504400250440000002465712337331322017350 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSTERF * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSTERF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSTERF( N, D, E, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, N * .. * .. Array Arguments .. * DOUBLE PRECISION D( * ), E( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSTERF computes all eigenvalues of a symmetric tridiagonal matrix *> using the Pal-Walker-Kahan variant of the QL or QR algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix. N >= 0. *> \endverbatim *> *> \param[in,out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> On entry, the n diagonal elements of the tridiagonal matrix. *> On exit, if INFO = 0, the eigenvalues in ascending order. *> \endverbatim *> *> \param[in,out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> On entry, the (n-1) subdiagonal elements of the tridiagonal *> matrix. *> On exit, E has been destroyed. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: the algorithm failed to find all of the eigenvalues in *> a total of 30*N iterations; if INFO = i, then i *> elements of E have not converged to zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup auxOTHERcomputational * * ===================================================================== SUBROUTINE DSTERF( N, D, E, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, N * .. * .. Array Arguments .. DOUBLE PRECISION D( * ), E( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE, TWO, THREE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0, $ THREE = 3.0D0 ) INTEGER MAXIT PARAMETER ( MAXIT = 30 ) * .. * .. Local Scalars .. INTEGER I, ISCALE, JTOT, L, L1, LEND, LENDSV, LSV, M, $ NMAXIT DOUBLE PRECISION ALPHA, ANORM, BB, C, EPS, EPS2, GAMMA, OLDC, $ OLDGAM, P, R, RT1, RT2, RTE, S, SAFMAX, SAFMIN, $ SIGMA, SSFMAX, SSFMIN, RMAX * .. * .. External Functions .. DOUBLE PRECISION DLAMCH, DLANST, DLAPY2 EXTERNAL DLAMCH, DLANST, DLAPY2 * .. * .. External Subroutines .. EXTERNAL DLAE2, DLASCL, DLASRT, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC ABS, SIGN, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 * * Quick return if possible * IF( N.LT.0 ) THEN INFO = -1 CALL XERBLA( 'DSTERF', -INFO ) RETURN END IF IF( N.LE.1 ) $ RETURN * * Determine the unit roundoff for this environment. * EPS = DLAMCH( 'E' ) EPS2 = EPS**2 SAFMIN = DLAMCH( 'S' ) SAFMAX = ONE / SAFMIN SSFMAX = SQRT( SAFMAX ) / THREE SSFMIN = SQRT( SAFMIN ) / EPS2 RMAX = DLAMCH( 'O' ) * * Compute the eigenvalues of the tridiagonal matrix. * NMAXIT = N*MAXIT SIGMA = ZERO JTOT = 0 * * Determine where the matrix splits and choose QL or QR iteration * for each block, according to whether top or bottom diagonal * element is smaller. * L1 = 1 * 10 CONTINUE IF( L1.GT.N ) $ GO TO 170 IF( L1.GT.1 ) $ E( L1-1 ) = ZERO DO 20 M = L1, N - 1 IF( ABS( E( M ) ).LE.( SQRT( ABS( D( M ) ) )*SQRT( ABS( D( M+ $ 1 ) ) ) )*EPS ) THEN E( M ) = ZERO GO TO 30 END IF 20 CONTINUE M = N * 30 CONTINUE L = L1 LSV = L LEND = M LENDSV = LEND L1 = M + 1 IF( LEND.EQ.L ) $ GO TO 10 * * Scale submatrix in rows and columns L to LEND * ANORM = DLANST( 'M', LEND-L+1, D( L ), E( L ) ) ISCALE = 0 IF( ANORM.EQ.ZERO ) $ GO TO 10 IF( (ANORM.GT.SSFMAX) ) THEN ISCALE = 1 CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L+1, 1, D( L ), N, $ INFO ) CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L, 1, E( L ), N, $ INFO ) ELSE IF( ANORM.LT.SSFMIN ) THEN ISCALE = 2 CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L+1, 1, D( L ), N, $ INFO ) CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L, 1, E( L ), N, $ INFO ) END IF * DO 40 I = L, LEND - 1 E( I ) = E( I )**2 40 CONTINUE * * Choose between QL and QR iteration * IF( ABS( D( LEND ) ).LT.ABS( D( L ) ) ) THEN LEND = LSV L = LENDSV END IF * IF( LEND.GE.L ) THEN * * QL Iteration * * Look for small subdiagonal element. * 50 CONTINUE IF( L.NE.LEND ) THEN DO 60 M = L, LEND - 1 IF( ABS( E( M ) ).LE.EPS2*ABS( D( M )*D( M+1 ) ) ) $ GO TO 70 60 CONTINUE END IF M = LEND * 70 CONTINUE IF( M.LT.LEND ) $ E( M ) = ZERO P = D( L ) IF( M.EQ.L ) $ GO TO 90 * * If remaining matrix is 2 by 2, use DLAE2 to compute its * eigenvalues. * IF( M.EQ.L+1 ) THEN RTE = SQRT( E( L ) ) CALL DLAE2( D( L ), RTE, D( L+1 ), RT1, RT2 ) D( L ) = RT1 D( L+1 ) = RT2 E( L ) = ZERO L = L + 2 IF( L.LE.LEND ) $ GO TO 50 GO TO 150 END IF * IF( JTOT.EQ.NMAXIT ) $ GO TO 150 JTOT = JTOT + 1 * * Form shift. * RTE = SQRT( E( L ) ) SIGMA = ( D( L+1 )-P ) / ( TWO*RTE ) R = DLAPY2( SIGMA, ONE ) SIGMA = P - ( RTE / ( SIGMA+SIGN( R, SIGMA ) ) ) * C = ONE S = ZERO GAMMA = D( M ) - SIGMA P = GAMMA*GAMMA * * Inner loop * DO 80 I = M - 1, L, -1 BB = E( I ) R = P + BB IF( I.NE.M-1 ) $ E( I+1 ) = S*R OLDC = C C = P / R S = BB / R OLDGAM = GAMMA ALPHA = D( I ) GAMMA = C*( ALPHA-SIGMA ) - S*OLDGAM D( I+1 ) = OLDGAM + ( ALPHA-GAMMA ) IF( C.NE.ZERO ) THEN P = ( GAMMA*GAMMA ) / C ELSE P = OLDC*BB END IF 80 CONTINUE * E( L ) = S*P D( L ) = SIGMA + GAMMA GO TO 50 * * Eigenvalue found. * 90 CONTINUE D( L ) = P * L = L + 1 IF( L.LE.LEND ) $ GO TO 50 GO TO 150 * ELSE * * QR Iteration * * Look for small superdiagonal element. * 100 CONTINUE DO 110 M = L, LEND + 1, -1 IF( ABS( E( M-1 ) ).LE.EPS2*ABS( D( M )*D( M-1 ) ) ) $ GO TO 120 110 CONTINUE M = LEND * 120 CONTINUE IF( M.GT.LEND ) $ E( M-1 ) = ZERO P = D( L ) IF( M.EQ.L ) $ GO TO 140 * * If remaining matrix is 2 by 2, use DLAE2 to compute its * eigenvalues. * IF( M.EQ.L-1 ) THEN RTE = SQRT( E( L-1 ) ) CALL DLAE2( D( L ), RTE, D( L-1 ), RT1, RT2 ) D( L ) = RT1 D( L-1 ) = RT2 E( L-1 ) = ZERO L = L - 2 IF( L.GE.LEND ) $ GO TO 100 GO TO 150 END IF * IF( JTOT.EQ.NMAXIT ) $ GO TO 150 JTOT = JTOT + 1 * * Form shift. * RTE = SQRT( E( L-1 ) ) SIGMA = ( D( L-1 )-P ) / ( TWO*RTE ) R = DLAPY2( SIGMA, ONE ) SIGMA = P - ( RTE / ( SIGMA+SIGN( R, SIGMA ) ) ) * C = ONE S = ZERO GAMMA = D( M ) - SIGMA P = GAMMA*GAMMA * * Inner loop * DO 130 I = M, L - 1 BB = E( I ) R = P + BB IF( I.NE.M ) $ E( I-1 ) = S*R OLDC = C C = P / R S = BB / R OLDGAM = GAMMA ALPHA = D( I+1 ) GAMMA = C*( ALPHA-SIGMA ) - S*OLDGAM D( I ) = OLDGAM + ( ALPHA-GAMMA ) IF( C.NE.ZERO ) THEN P = ( GAMMA*GAMMA ) / C ELSE P = OLDC*BB END IF 130 CONTINUE * E( L-1 ) = S*P D( L ) = SIGMA + GAMMA GO TO 100 * * Eigenvalue found. * 140 CONTINUE D( L ) = P * L = L - 1 IF( L.GE.LEND ) $ GO TO 100 GO TO 150 * END IF * * Undo scaling if necessary * 150 CONTINUE IF( ISCALE.EQ.1 ) $ CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV+1, 1, $ D( LSV ), N, INFO ) IF( ISCALE.EQ.2 ) $ CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV+1, 1, $ D( LSV ), N, INFO ) * * Check for no convergence to an eigenvalue after a total * of N*MAXIT iterations. * IF( JTOT.LT.NMAXIT ) $ GO TO 10 DO 160 I = 1, N - 1 IF( E( I ).NE.ZERO ) $ INFO = INFO + 1 160 CONTINUE GO TO 180 * * Sort eigenvalues in increasing order. * 170 CONTINUE CALL DLASRT( 'I', N, D, INFO ) * 180 CONTINUE RETURN * * End of DSTERF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlahqr.f0000644002504400250440000000005012337331322016600 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlahqr.f0000644002504400250440000004401612337331322017351 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLAHQR computes the eigenvalues and Schur factorization of an upper Hessenberg matrix, using the double-shift/single-shift QR algorithm. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLAHQR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, * IHIZ, Z, LDZ, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, N * LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. * COMPLEX*16 H( LDH, * ), W( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLAHQR is an auxiliary routine called by CHSEQR to update the *> eigenvalues and Schur decomposition already computed by CHSEQR, by *> dealing with the Hessenberg submatrix in rows and columns ILO to *> IHI. *> \endverbatim * * Arguments: * ========== * *> \param[in] WANTT *> \verbatim *> WANTT is LOGICAL *> = .TRUE. : the full Schur form T is required; *> = .FALSE.: only eigenvalues are required. *> \endverbatim *> *> \param[in] WANTZ *> \verbatim *> WANTZ is LOGICAL *> = .TRUE. : the matrix of Schur vectors Z is required; *> = .FALSE.: Schur vectors are not required. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix H. N >= 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> It is assumed that H is already upper triangular in rows and *> columns IHI+1:N, and that H(ILO,ILO-1) = 0 (unless ILO = 1). *> ZLAHQR works primarily with the Hessenberg submatrix in rows *> and columns ILO to IHI, but applies transformations to all of *> H if WANTT is .TRUE.. *> 1 <= ILO <= max(1,IHI); IHI <= N. *> \endverbatim *> *> \param[in,out] H *> \verbatim *> H is COMPLEX*16 array, dimension (LDH,N) *> On entry, the upper Hessenberg matrix H. *> On exit, if INFO is zero and if WANTT is .TRUE., then H *> is upper triangular in rows and columns ILO:IHI. If INFO *> is zero and if WANTT is .FALSE., then the contents of H *> are unspecified on exit. The output state of H in case *> INF is positive is below under the description of INFO. *> \endverbatim *> *> \param[in] LDH *> \verbatim *> LDH is INTEGER *> The leading dimension of the array H. LDH >= max(1,N). *> \endverbatim *> *> \param[out] W *> \verbatim *> W is COMPLEX*16 array, dimension (N) *> The computed eigenvalues ILO to IHI are stored in the *> corresponding elements of W. If WANTT is .TRUE., the *> eigenvalues are stored in the same order as on the diagonal *> of the Schur form returned in H, with W(i) = H(i,i). *> \endverbatim *> *> \param[in] ILOZ *> \verbatim *> ILOZ is INTEGER *> \endverbatim *> *> \param[in] IHIZ *> \verbatim *> IHIZ is INTEGER *> Specify the rows of Z to which transformations must be *> applied if WANTZ is .TRUE.. *> 1 <= ILOZ <= ILO; IHI <= IHIZ <= N. *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ,N) *> If WANTZ is .TRUE., on entry Z must contain the current *> matrix Z of transformations accumulated by CHSEQR, and on *> exit Z has been updated; transformations are applied only to *> the submatrix Z(ILOZ:IHIZ,ILO:IHI). *> If WANTZ is .FALSE., Z is not referenced. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> .GT. 0: if INFO = i, ZLAHQR failed to compute all the *> eigenvalues ILO to IHI in a total of 30 iterations *> per eigenvalue; elements i+1:ihi of W contain *> those eigenvalues which have been successfully *> computed. *> *> If INFO .GT. 0 and WANTT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the *> eigenvalues of the upper Hessenberg matrix *> rows and columns ILO thorugh INFO of the final, *> output value of H. *> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit *> (*) (initial value of H)*U = U*(final value of H) *> where U is an orthognal matrix. The final *> value of H is upper Hessenberg and triangular in *> rows and columns INFO+1 through IHI. *> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit *> (final value of Z) = (initial value of Z)*U *> where U is the orthogonal matrix in (*) *> (regardless of the value of WANTT.) *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Contributors: * ================== *> *> \verbatim *> *> 02-96 Based on modifications by *> David Day, Sandia National Laboratory, USA *> *> 12-04 Further modifications by *> Ralph Byers, University of Kansas, USA *> This is a modified version of ZLAHQR from LAPACK version 3.0. *> It is (1) more robust against overflow and underflow and *> (2) adopts the more conservative Ahues & Tisseur stopping *> criterion (LAWN 122, 1997). *> \endverbatim *> * ===================================================================== SUBROUTINE ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, $ IHIZ, Z, LDZ, INFO ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, N LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. COMPLEX*16 H( LDH, * ), W( * ), Z( LDZ, * ) * .. * * ========================================================= * * .. Parameters .. INTEGER ITMAX PARAMETER ( ITMAX = 30 ) COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ), $ ONE = ( 1.0d0, 0.0d0 ) ) DOUBLE PRECISION RZERO, RONE, HALF PARAMETER ( RZERO = 0.0d0, RONE = 1.0d0, HALF = 0.5d0 ) DOUBLE PRECISION DAT1 PARAMETER ( DAT1 = 3.0d0 / 4.0d0 ) * .. * .. Local Scalars .. COMPLEX*16 CDUM, H11, H11S, H22, SC, SUM, T, T1, TEMP, U, $ V2, X, Y DOUBLE PRECISION AA, AB, BA, BB, H10, H21, RTEMP, S, SAFMAX, $ SAFMIN, SMLNUM, SX, T2, TST, ULP INTEGER I, I1, I2, ITS, J, JHI, JLO, K, L, M, NH, NZ * .. * .. Local Arrays .. COMPLEX*16 V( 2 ) * .. * .. External Functions .. COMPLEX*16 ZLADIV DOUBLE PRECISION DLAMCH EXTERNAL ZLADIV, DLAMCH * .. * .. External Subroutines .. EXTERNAL DLABAD, ZCOPY, ZLARFG, ZSCAL * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCONJG, DIMAG, MAX, MIN, SQRT * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. * INFO = 0 * * Quick return if possible * IF( N.EQ.0 ) $ RETURN IF( ILO.EQ.IHI ) THEN W( ILO ) = H( ILO, ILO ) RETURN END IF * * ==== clear out the trash ==== DO 10 J = ILO, IHI - 3 H( J+2, J ) = ZERO H( J+3, J ) = ZERO 10 CONTINUE IF( ILO.LE.IHI-2 ) $ H( IHI, IHI-2 ) = ZERO * ==== ensure that subdiagonal entries are real ==== IF( WANTT ) THEN JLO = 1 JHI = N ELSE JLO = ILO JHI = IHI END IF DO 20 I = ILO + 1, IHI IF( DIMAG( H( I, I-1 ) ).NE.RZERO ) THEN * ==== The following redundant normalization * . avoids problems with both gradual and * . sudden underflow in ABS(H(I,I-1)) ==== SC = H( I, I-1 ) / CABS1( H( I, I-1 ) ) SC = DCONJG( SC ) / ABS( SC ) H( I, I-1 ) = ABS( H( I, I-1 ) ) CALL ZSCAL( JHI-I+1, SC, H( I, I ), LDH ) CALL ZSCAL( MIN( JHI, I+1 )-JLO+1, DCONJG( SC ), $ H( JLO, I ), 1 ) IF( WANTZ ) $ CALL ZSCAL( IHIZ-ILOZ+1, DCONJG( SC ), Z( ILOZ, I ), 1 ) END IF 20 CONTINUE * NH = IHI - ILO + 1 NZ = IHIZ - ILOZ + 1 * * Set machine-dependent constants for the stopping criterion. * SAFMIN = DLAMCH( 'SAFE MINIMUM' ) SAFMAX = RONE / SAFMIN CALL DLABAD( SAFMIN, SAFMAX ) ULP = DLAMCH( 'PRECISION' ) SMLNUM = SAFMIN*( DBLE( NH ) / ULP ) * * I1 and I2 are the indices of the first row and last column of H * to which transformations must be applied. If eigenvalues only are * being computed, I1 and I2 are set inside the main loop. * IF( WANTT ) THEN I1 = 1 I2 = N END IF * * The main loop begins here. I is the loop index and decreases from * IHI to ILO in steps of 1. Each iteration of the loop works * with the active submatrix in rows and columns L to I. * Eigenvalues I+1 to IHI have already converged. Either L = ILO, or * H(L,L-1) is negligible so that the matrix splits. * I = IHI 30 CONTINUE IF( I.LT.ILO ) $ GO TO 150 * * Perform QR iterations on rows and columns ILO to I until a * submatrix of order 1 splits off at the bottom because a * subdiagonal element has become negligible. * L = ILO DO 130 ITS = 0, ITMAX * * Look for a single small subdiagonal element. * DO 40 K = I, L + 1, -1 IF( CABS1( H( K, K-1 ) ).LE.SMLNUM ) $ GO TO 50 TST = CABS1( H( K-1, K-1 ) ) + CABS1( H( K, K ) ) IF( TST.EQ.ZERO ) THEN IF( K-2.GE.ILO ) $ TST = TST + ABS( DBLE( H( K-1, K-2 ) ) ) IF( K+1.LE.IHI ) $ TST = TST + ABS( DBLE( H( K+1, K ) ) ) END IF * ==== The following is a conservative small subdiagonal * . deflation criterion due to Ahues & Tisseur (LAWN 122, * . 1997). It has better mathematical foundation and * . improves accuracy in some examples. ==== IF( ABS( DBLE( H( K, K-1 ) ) ).LE.ULP*TST ) THEN AB = MAX( CABS1( H( K, K-1 ) ), CABS1( H( K-1, K ) ) ) BA = MIN( CABS1( H( K, K-1 ) ), CABS1( H( K-1, K ) ) ) AA = MAX( CABS1( H( K, K ) ), $ CABS1( H( K-1, K-1 )-H( K, K ) ) ) BB = MIN( CABS1( H( K, K ) ), $ CABS1( H( K-1, K-1 )-H( K, K ) ) ) S = AA + AB IF( BA*( AB / S ).LE.MAX( SMLNUM, $ ULP*( BB*( AA / S ) ) ) )GO TO 50 END IF 40 CONTINUE 50 CONTINUE L = K IF( L.GT.ILO ) THEN * * H(L,L-1) is negligible * H( L, L-1 ) = ZERO END IF * * Exit from loop if a submatrix of order 1 has split off. * IF( L.GE.I ) $ GO TO 140 * * Now the active submatrix is in rows and columns L to I. If * eigenvalues only are being computed, only the active submatrix * need be transformed. * IF( .NOT.WANTT ) THEN I1 = L I2 = I END IF * IF( ITS.EQ.10 ) THEN * * Exceptional shift. * S = DAT1*ABS( DBLE( H( L+1, L ) ) ) T = S + H( L, L ) ELSE IF( ITS.EQ.20 ) THEN * * Exceptional shift. * S = DAT1*ABS( DBLE( H( I, I-1 ) ) ) T = S + H( I, I ) ELSE * * Wilkinson's shift. * T = H( I, I ) U = SQRT( H( I-1, I ) )*SQRT( H( I, I-1 ) ) S = CABS1( U ) IF( S.NE.RZERO ) THEN X = HALF*( H( I-1, I-1 )-T ) SX = CABS1( X ) S = MAX( S, CABS1( X ) ) Y = S*SQRT( ( X / S )**2+( U / S )**2 ) IF( SX.GT.RZERO ) THEN IF( DBLE( X / SX )*DBLE( Y )+DIMAG( X / SX )* $ DIMAG( Y ).LT.RZERO )Y = -Y END IF T = T - U*ZLADIV( U, ( X+Y ) ) END IF END IF * * Look for two consecutive small subdiagonal elements. * DO 60 M = I - 1, L + 1, -1 * * Determine the effect of starting the single-shift QR * iteration at row M, and see if this would make H(M,M-1) * negligible. * H11 = H( M, M ) H22 = H( M+1, M+1 ) H11S = H11 - T H21 = DBLE( H( M+1, M ) ) S = CABS1( H11S ) + ABS( H21 ) H11S = H11S / S H21 = H21 / S V( 1 ) = H11S V( 2 ) = H21 H10 = DBLE( H( M, M-1 ) ) IF( ABS( H10 )*ABS( H21 ).LE.ULP* $ ( CABS1( H11S )*( CABS1( H11 )+CABS1( H22 ) ) ) ) $ GO TO 70 60 CONTINUE H11 = H( L, L ) H22 = H( L+1, L+1 ) H11S = H11 - T H21 = DBLE( H( L+1, L ) ) S = CABS1( H11S ) + ABS( H21 ) H11S = H11S / S H21 = H21 / S V( 1 ) = H11S V( 2 ) = H21 70 CONTINUE * * Single-shift QR step * DO 120 K = M, I - 1 * * The first iteration of this loop determines a reflection G * from the vector V and applies it from left and right to H, * thus creating a nonzero bulge below the subdiagonal. * * Each subsequent iteration determines a reflection G to * restore the Hessenberg form in the (K-1)th column, and thus * chases the bulge one step toward the bottom of the active * submatrix. * * V(2) is always real before the call to ZLARFG, and hence * after the call T2 ( = T1*V(2) ) is also real. * IF( K.GT.M ) $ CALL ZCOPY( 2, H( K, K-1 ), 1, V, 1 ) CALL ZLARFG( 2, V( 1 ), V( 2 ), 1, T1 ) IF( K.GT.M ) THEN H( K, K-1 ) = V( 1 ) H( K+1, K-1 ) = ZERO END IF V2 = V( 2 ) T2 = DBLE( T1*V2 ) * * Apply G from the left to transform the rows of the matrix * in columns K to I2. * DO 80 J = K, I2 SUM = DCONJG( T1 )*H( K, J ) + T2*H( K+1, J ) H( K, J ) = H( K, J ) - SUM H( K+1, J ) = H( K+1, J ) - SUM*V2 80 CONTINUE * * Apply G from the right to transform the columns of the * matrix in rows I1 to min(K+2,I). * DO 90 J = I1, MIN( K+2, I ) SUM = T1*H( J, K ) + T2*H( J, K+1 ) H( J, K ) = H( J, K ) - SUM H( J, K+1 ) = H( J, K+1 ) - SUM*DCONJG( V2 ) 90 CONTINUE * IF( WANTZ ) THEN * * Accumulate transformations in the matrix Z * DO 100 J = ILOZ, IHIZ SUM = T1*Z( J, K ) + T2*Z( J, K+1 ) Z( J, K ) = Z( J, K ) - SUM Z( J, K+1 ) = Z( J, K+1 ) - SUM*DCONJG( V2 ) 100 CONTINUE END IF * IF( K.EQ.M .AND. M.GT.L ) THEN * * If the QR step was started at row M > L because two * consecutive small subdiagonals were found, then extra * scaling must be performed to ensure that H(M,M-1) remains * real. * TEMP = ONE - T1 TEMP = TEMP / ABS( TEMP ) H( M+1, M ) = H( M+1, M )*DCONJG( TEMP ) IF( M+2.LE.I ) $ H( M+2, M+1 ) = H( M+2, M+1 )*TEMP DO 110 J = M, I IF( J.NE.M+1 ) THEN IF( I2.GT.J ) $ CALL ZSCAL( I2-J, TEMP, H( J, J+1 ), LDH ) CALL ZSCAL( J-I1, DCONJG( TEMP ), H( I1, J ), 1 ) IF( WANTZ ) THEN CALL ZSCAL( NZ, DCONJG( TEMP ), Z( ILOZ, J ), $ 1 ) END IF END IF 110 CONTINUE END IF 120 CONTINUE * * Ensure that H(I,I-1) is real. * TEMP = H( I, I-1 ) IF( DIMAG( TEMP ).NE.RZERO ) THEN RTEMP = ABS( TEMP ) H( I, I-1 ) = RTEMP TEMP = TEMP / RTEMP IF( I2.GT.I ) $ CALL ZSCAL( I2-I, DCONJG( TEMP ), H( I, I+1 ), LDH ) CALL ZSCAL( I-I1, TEMP, H( I1, I ), 1 ) IF( WANTZ ) THEN CALL ZSCAL( NZ, TEMP, Z( ILOZ, I ), 1 ) END IF END IF * 130 CONTINUE * * Failure to converge in remaining number of iterations * INFO = I RETURN * 140 CONTINUE * * H(I,I-1) is negligible: one eigenvalue has converged. * W( I ) = H( I, I ) * * return to start of the main loop with new value of I. * I = L - 1 GO TO 30 * 150 CONTINUE RETURN * * End of ZLAHQR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zunm2r.f0000644002504400250440000000005012337331322016534 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zunm2r.f0000644002504400250440000001657412337331322017315 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNM2R multiplies a general matrix by the unitary matrix from a QR factorization determined by cgeqrf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNM2R + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER INFO, K, LDA, LDC, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNM2R overwrites the general complex m-by-n matrix C with *> *> Q * C if SIDE = 'L' and TRANS = 'N', or *> *> Q**H* C if SIDE = 'L' and TRANS = 'C', or *> *> C * Q if SIDE = 'R' and TRANS = 'N', or *> *> C * Q**H if SIDE = 'R' and TRANS = 'C', *> *> where Q is a complex unitary matrix defined as the product of k *> elementary reflectors *> *> Q = H(1) H(2) . . . H(k) *> *> as returned by ZGEQRF. Q is of order m if SIDE = 'L' and of order n *> if SIDE = 'R'. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**H from the Left *> = 'R': apply Q or Q**H from the Right *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': apply Q (No transpose) *> = 'C': apply Q**H (Conjugate transpose) *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines *> the matrix Q. *> If SIDE = 'L', M >= K >= 0; *> if SIDE = 'R', N >= K >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> ZGEQRF in the first k columns of its array argument A. *> A is modified by the routine but restored on exit. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDA >= max(1,M); *> if SIDE = 'R', LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEQRF. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the m-by-n matrix C. *> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension *> (N) if SIDE = 'L', *> (M) if SIDE = 'R' *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER INFO, K, LDA, LDC, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LEFT, NOTRAN INTEGER I, I1, I2, I3, IC, JC, MI, NI, NQ COMPLEX*16 AII, TAUI * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARF * .. * .. Intrinsic Functions .. INTRINSIC DCONJG, MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) * * NQ is the order of Q * IF( LEFT ) THEN NQ = M ELSE NQ = N END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNM2R', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) $ RETURN * IF( ( LEFT .AND. .NOT.NOTRAN .OR. .NOT.LEFT .AND. NOTRAN ) ) THEN I1 = 1 I2 = K I3 = 1 ELSE I1 = K I2 = 1 I3 = -1 END IF * IF( LEFT ) THEN NI = N JC = 1 ELSE MI = M IC = 1 END IF * DO 10 I = I1, I2, I3 IF( LEFT ) THEN * * H(i) or H(i)**H is applied to C(i:m,1:n) * MI = M - I + 1 IC = I ELSE * * H(i) or H(i)**H is applied to C(1:m,i:n) * NI = N - I + 1 JC = I END IF * * Apply H(i) or H(i)**H * IF( NOTRAN ) THEN TAUI = TAU( I ) ELSE TAUI = DCONJG( TAU( I ) ) END IF AII = A( I, I ) A( I, I ) = ONE CALL ZLARF( SIDE, MI, NI, A( I, I ), 1, TAUI, C( IC, JC ), LDC, $ WORK ) A( I, I ) = AII 10 CONTINUE RETURN * * End of ZUNM2R * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlascl.f0000644002504400250440000000005012337331322016567 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlascl.f0000644002504400250440000002322112337331322017333 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLASCL + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER TYPE * INTEGER INFO, KL, KU, LDA, M, N * DOUBLE PRECISION CFROM, CTO * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLASCL multiplies the M by N complex matrix A by the real scalar *> CTO/CFROM. This is done without over/underflow as long as the final *> result CTO*A(I,J)/CFROM does not over/underflow. TYPE specifies that *> A may be full, upper triangular, lower triangular, upper Hessenberg, *> or banded. *> \endverbatim * * Arguments: * ========== * *> \param[in] TYPE *> \verbatim *> TYPE is CHARACTER*1 *> TYPE indices the storage type of the input matrix. *> = 'G': A is a full matrix. *> = 'L': A is a lower triangular matrix. *> = 'U': A is an upper triangular matrix. *> = 'H': A is an upper Hessenberg matrix. *> = 'B': A is a symmetric band matrix with lower bandwidth KL *> and upper bandwidth KU and with the only the lower *> half stored. *> = 'Q': A is a symmetric band matrix with lower bandwidth KL *> and upper bandwidth KU and with the only the upper *> half stored. *> = 'Z': A is a band matrix with lower bandwidth KL and upper *> bandwidth KU. See ZGBTRF for storage details. *> \endverbatim *> *> \param[in] KL *> \verbatim *> KL is INTEGER *> The lower bandwidth of A. Referenced only if TYPE = 'B', *> 'Q' or 'Z'. *> \endverbatim *> *> \param[in] KU *> \verbatim *> KU is INTEGER *> The upper bandwidth of A. Referenced only if TYPE = 'B', *> 'Q' or 'Z'. *> \endverbatim *> *> \param[in] CFROM *> \verbatim *> CFROM is DOUBLE PRECISION *> \endverbatim *> *> \param[in] CTO *> \verbatim *> CTO is DOUBLE PRECISION *> *> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed *> without over/underflow if the final result CTO*A(I,J)/CFROM *> can be represented without over/underflow. CFROM must be *> nonzero. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The matrix to be multiplied by CTO/CFROM. See TYPE for the *> storage type. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> 0 - successful exit *> <0 - if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER TYPE INTEGER INFO, KL, KU, LDA, M, N DOUBLE PRECISION CFROM, CTO * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) * .. * .. Local Scalars .. LOGICAL DONE INTEGER I, ITYPE, J, K1, K2, K3, K4 DOUBLE PRECISION BIGNUM, CFROM1, CFROMC, CTO1, CTOC, MUL, SMLNUM * .. * .. External Functions .. LOGICAL LSAME, DISNAN DOUBLE PRECISION DLAMCH EXTERNAL LSAME, DLAMCH, DISNAN * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, MIN * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 * IF( LSAME( TYPE, 'G' ) ) THEN ITYPE = 0 ELSE IF( LSAME( TYPE, 'L' ) ) THEN ITYPE = 1 ELSE IF( LSAME( TYPE, 'U' ) ) THEN ITYPE = 2 ELSE IF( LSAME( TYPE, 'H' ) ) THEN ITYPE = 3 ELSE IF( LSAME( TYPE, 'B' ) ) THEN ITYPE = 4 ELSE IF( LSAME( TYPE, 'Q' ) ) THEN ITYPE = 5 ELSE IF( LSAME( TYPE, 'Z' ) ) THEN ITYPE = 6 ELSE ITYPE = -1 END IF * IF( ITYPE.EQ.-1 ) THEN INFO = -1 ELSE IF( CFROM.EQ.ZERO .OR. DISNAN(CFROM) ) THEN INFO = -4 ELSE IF( DISNAN(CTO) ) THEN INFO = -5 ELSE IF( M.LT.0 ) THEN INFO = -6 ELSE IF( N.LT.0 .OR. ( ITYPE.EQ.4 .AND. N.NE.M ) .OR. $ ( ITYPE.EQ.5 .AND. N.NE.M ) ) THEN INFO = -7 ELSE IF( ITYPE.LE.3 .AND. LDA.LT.MAX( 1, M ) ) THEN INFO = -9 ELSE IF( ITYPE.GE.4 ) THEN IF( KL.LT.0 .OR. KL.GT.MAX( M-1, 0 ) ) THEN INFO = -2 ELSE IF( KU.LT.0 .OR. KU.GT.MAX( N-1, 0 ) .OR. $ ( ( ITYPE.EQ.4 .OR. ITYPE.EQ.5 ) .AND. KL.NE.KU ) ) $ THEN INFO = -3 ELSE IF( ( ITYPE.EQ.4 .AND. LDA.LT.KL+1 ) .OR. $ ( ITYPE.EQ.5 .AND. LDA.LT.KU+1 ) .OR. $ ( ITYPE.EQ.6 .AND. LDA.LT.2*KL+KU+1 ) ) THEN INFO = -9 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZLASCL', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 .OR. M.EQ.0 ) $ RETURN * * Get machine parameters * SMLNUM = DLAMCH( 'S' ) BIGNUM = ONE / SMLNUM * CFROMC = CFROM CTOC = CTO * 10 CONTINUE CFROM1 = CFROMC*SMLNUM IF( CFROM1.EQ.CFROMC ) THEN ! CFROMC is an inf. Multiply by a correctly signed zero for ! finite CTOC, or a NaN if CTOC is infinite. MUL = CTOC / CFROMC DONE = .TRUE. CTO1 = CTOC ELSE CTO1 = CTOC / BIGNUM IF( CTO1.EQ.CTOC ) THEN ! CTOC is either 0 or an inf. In both cases, CTOC itself ! serves as the correct multiplication factor. MUL = CTOC DONE = .TRUE. CFROMC = ONE ELSE IF( ABS( CFROM1 ).GT.ABS( CTOC ) .AND. CTOC.NE.ZERO ) THEN MUL = SMLNUM DONE = .FALSE. CFROMC = CFROM1 ELSE IF( ABS( CTO1 ).GT.ABS( CFROMC ) ) THEN MUL = BIGNUM DONE = .FALSE. CTOC = CTO1 ELSE MUL = CTOC / CFROMC DONE = .TRUE. END IF END IF * IF( ITYPE.EQ.0 ) THEN * * Full matrix * DO 30 J = 1, N DO 20 I = 1, M A( I, J ) = A( I, J )*MUL 20 CONTINUE 30 CONTINUE * ELSE IF( ITYPE.EQ.1 ) THEN * * Lower triangular matrix * DO 50 J = 1, N DO 40 I = J, M A( I, J ) = A( I, J )*MUL 40 CONTINUE 50 CONTINUE * ELSE IF( ITYPE.EQ.2 ) THEN * * Upper triangular matrix * DO 70 J = 1, N DO 60 I = 1, MIN( J, M ) A( I, J ) = A( I, J )*MUL 60 CONTINUE 70 CONTINUE * ELSE IF( ITYPE.EQ.3 ) THEN * * Upper Hessenberg matrix * DO 90 J = 1, N DO 80 I = 1, MIN( J+1, M ) A( I, J ) = A( I, J )*MUL 80 CONTINUE 90 CONTINUE * ELSE IF( ITYPE.EQ.4 ) THEN * * Lower half of a symmetric band matrix * K3 = KL + 1 K4 = N + 1 DO 110 J = 1, N DO 100 I = 1, MIN( K3, K4-J ) A( I, J ) = A( I, J )*MUL 100 CONTINUE 110 CONTINUE * ELSE IF( ITYPE.EQ.5 ) THEN * * Upper half of a symmetric band matrix * K1 = KU + 2 K3 = KU + 1 DO 130 J = 1, N DO 120 I = MAX( K1-J, 1 ), K3 A( I, J ) = A( I, J )*MUL 120 CONTINUE 130 CONTINUE * ELSE IF( ITYPE.EQ.6 ) THEN * * Band matrix * K1 = KL + KU + 2 K2 = KL + 1 K3 = 2*KL + KU + 1 K4 = KL + KU + 1 + M DO 150 J = 1, N DO 140 I = MAX( K1-J, K2 ), MIN( K3, K4-J ) A( I, J ) = A( I, J )*MUL 140 CONTINUE 150 CONTINUE * END IF * IF( .NOT.DONE ) $ GO TO 10 * RETURN * * End of ZLASCL * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dstebz.f0000644002504400250440000000005012337331322016572 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dstebz.f0000644002504400250440000005634212337331322017350 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSTEBZ * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSTEBZ + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSTEBZ( RANGE, ORDER, N, VL, VU, IL, IU, ABSTOL, D, E, * M, NSPLIT, W, IBLOCK, ISPLIT, WORK, IWORK, * INFO ) * * .. Scalar Arguments .. * CHARACTER ORDER, RANGE * INTEGER IL, INFO, IU, M, N, NSPLIT * DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. * INTEGER IBLOCK( * ), ISPLIT( * ), IWORK( * ) * DOUBLE PRECISION D( * ), E( * ), W( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSTEBZ computes the eigenvalues of a symmetric tridiagonal *> matrix T. The user may ask for all eigenvalues, all eigenvalues *> in the half-open interval (VL, VU], or the IL-th through IU-th *> eigenvalues. *> *> To avoid overflow, the matrix must be scaled so that its *> largest element is no greater than overflow**(1/2) * underflow**(1/4) in absolute value, and for greatest *> accuracy, it should not be much smaller than that. *> *> See W. Kahan "Accurate Eigenvalues of a Symmetric Tridiagonal *> Matrix", Report CS41, Computer Science Dept., Stanford *> University, July 21, 1966. *> \endverbatim * * Arguments: * ========== * *> \param[in] RANGE *> \verbatim *> RANGE is CHARACTER*1 *> = 'A': ("All") all eigenvalues will be found. *> = 'V': ("Value") all eigenvalues in the half-open interval *> (VL, VU] will be found. *> = 'I': ("Index") the IL-th through IU-th eigenvalues (of the *> entire matrix) will be found. *> \endverbatim *> *> \param[in] ORDER *> \verbatim *> ORDER is CHARACTER*1 *> = 'B': ("By Block") the eigenvalues will be grouped by *> split-off block (see IBLOCK, ISPLIT) and *> ordered from smallest to largest within *> the block. *> = 'E': ("Entire matrix") *> the eigenvalues for the entire matrix *> will be ordered from smallest to *> largest. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the tridiagonal matrix T. N >= 0. *> \endverbatim *> *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION *> \endverbatim *> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION *> *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. Eigenvalues less than or equal *> to VL, or greater than VU, will not be returned. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER *> \endverbatim *> *> \param[in] IU *> \verbatim *> IU is INTEGER *> *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim *> *> \param[in] ABSTOL *> \verbatim *> ABSTOL is DOUBLE PRECISION *> The absolute tolerance for the eigenvalues. An eigenvalue *> (or cluster) is considered to be located if it has been *> determined to lie in an interval whose width is ABSTOL or *> less. If ABSTOL is less than or equal to zero, then ULP*|T| *> will be used, where |T| means the 1-norm of T. *> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*DLAMCH('S'), not zero. *> \endverbatim *> *> \param[in] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The n diagonal elements of the tridiagonal matrix T. *> \endverbatim *> *> \param[in] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The (n-1) off-diagonal elements of the tridiagonal matrix T. *> \endverbatim *> *> \param[out] M *> \verbatim *> M is INTEGER *> The actual number of eigenvalues found. 0 <= M <= N. *> (See also the description of INFO=2,3.) *> \endverbatim *> *> \param[out] NSPLIT *> \verbatim *> NSPLIT is INTEGER *> The number of diagonal blocks in the matrix T. *> 1 <= NSPLIT <= N. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> On exit, the first M elements of W will contain the *> eigenvalues. (DSTEBZ may use the remaining N-M elements as *> workspace.) *> \endverbatim *> *> \param[out] IBLOCK *> \verbatim *> IBLOCK is INTEGER array, dimension (N) *> At each row/column j where E(j) is zero or small, the *> matrix T is considered to split into a block diagonal *> matrix. On exit, if INFO = 0, IBLOCK(i) specifies to which *> block (from 1 to the number of blocks) the eigenvalue W(i) *> belongs. (DSTEBZ may use the remaining N-M elements as *> workspace.) *> \endverbatim *> *> \param[out] ISPLIT *> \verbatim *> ISPLIT is INTEGER array, dimension (N) *> The splitting points, at which T breaks up into submatrices. *> The first submatrix consists of rows/columns 1 to ISPLIT(1), *> the second of rows/columns ISPLIT(1)+1 through ISPLIT(2), *> etc., and the NSPLIT-th consists of rows/columns *> ISPLIT(NSPLIT-1)+1 through ISPLIT(NSPLIT)=N. *> (Only the first NSPLIT elements will actually be used, but *> since the user cannot know a priori what value NSPLIT will *> have, N words must be reserved for ISPLIT.) *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (4*N) *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (3*N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: some or all of the eigenvalues failed to converge or *> were not computed: *> =1 or 3: Bisection failed to converge for some *> eigenvalues; these eigenvalues are flagged by a *> negative block number. The effect is that the *> eigenvalues may not be as accurate as the *> absolute and relative tolerances. This is *> generally caused by unexpectedly inaccurate *> arithmetic. *> =2 or 3: RANGE='I' only: Not all of the eigenvalues *> IL:IU were found. *> Effect: M < IU+1-IL *> Cause: non-monotonic arithmetic, causing the *> Sturm sequence to be non-monotonic. *> Cure: recalculate, using RANGE='A', and pick *> out eigenvalues IL:IU. In some cases, *> increasing the PARAMETER "FUDGE" may *> make things work. *> = 4: RANGE='I', and the Gershgorin interval *> initially used was too small. No eigenvalues *> were computed. *> Probable cause: your machine has sloppy *> floating-point arithmetic. *> Cure: Increase the PARAMETER "FUDGE", *> recompile, and try again. *> \endverbatim * *> \par Internal Parameters: * ========================= *> *> \verbatim *> RELFAC DOUBLE PRECISION, default = 2.0e0 *> The relative tolerance. An interval (a,b] lies within *> "relative tolerance" if b-a < RELFAC*ulp*max(|a|,|b|), *> where "ulp" is the machine precision (distance from 1 to *> the next larger floating point number.) *> *> FUDGE DOUBLE PRECISION, default = 2 *> A "fudge factor" to widen the Gershgorin intervals. Ideally, *> a value of 1 should work, but on machines with sloppy *> arithmetic, this needs to be larger. The default for *> publicly released versions should be large enough to handle *> the worst machine around. Note that this has no effect *> on accuracy of the solution. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup auxOTHERcomputational * * ===================================================================== SUBROUTINE DSTEBZ( RANGE, ORDER, N, VL, VU, IL, IU, ABSTOL, D, E, $ M, NSPLIT, W, IBLOCK, ISPLIT, WORK, IWORK, $ INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER ORDER, RANGE INTEGER IL, INFO, IU, M, N, NSPLIT DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. INTEGER IBLOCK( * ), ISPLIT( * ), IWORK( * ) DOUBLE PRECISION D( * ), E( * ), W( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE, TWO, HALF PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0, $ HALF = 1.0D0 / TWO ) DOUBLE PRECISION FUDGE, RELFAC PARAMETER ( FUDGE = 2.1D0, RELFAC = 2.0D0 ) * .. * .. Local Scalars .. LOGICAL NCNVRG, TOOFEW INTEGER IB, IBEGIN, IDISCL, IDISCU, IE, IEND, IINFO, $ IM, IN, IOFF, IORDER, IOUT, IRANGE, ITMAX, $ ITMP1, IW, IWOFF, J, JB, JDISC, JE, NB, NWL, $ NWU DOUBLE PRECISION ATOLI, BNORM, GL, GU, PIVMIN, RTOLI, SAFEMN, $ TMP1, TMP2, TNORM, ULP, WKILL, WL, WLU, WU, WUL * .. * .. Local Arrays .. INTEGER IDUMMA( 1 ) * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV DOUBLE PRECISION DLAMCH EXTERNAL LSAME, ILAENV, DLAMCH * .. * .. External Subroutines .. EXTERNAL DLAEBZ, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC ABS, INT, LOG, MAX, MIN, SQRT * .. * .. Executable Statements .. * INFO = 0 * * Decode RANGE * IF( LSAME( RANGE, 'A' ) ) THEN IRANGE = 1 ELSE IF( LSAME( RANGE, 'V' ) ) THEN IRANGE = 2 ELSE IF( LSAME( RANGE, 'I' ) ) THEN IRANGE = 3 ELSE IRANGE = 0 END IF * * Decode ORDER * IF( LSAME( ORDER, 'B' ) ) THEN IORDER = 2 ELSE IF( LSAME( ORDER, 'E' ) ) THEN IORDER = 1 ELSE IORDER = 0 END IF * * Check for Errors * IF( IRANGE.LE.0 ) THEN INFO = -1 ELSE IF( IORDER.LE.0 ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( IRANGE.EQ.2 ) THEN IF( VL.GE.VU ) $ INFO = -5 ELSE IF( IRANGE.EQ.3 .AND. ( IL.LT.1 .OR. IL.GT.MAX( 1, N ) ) ) $ THEN INFO = -6 ELSE IF( IRANGE.EQ.3 .AND. ( IU.LT.MIN( N, IL ) .OR. IU.GT.N ) ) $ THEN INFO = -7 END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSTEBZ', -INFO ) RETURN END IF * * Initialize error flags * INFO = 0 NCNVRG = .FALSE. TOOFEW = .FALSE. * * Quick return if possible * M = 0 IF( N.EQ.0 ) $ RETURN * * Simplifications: * IF( IRANGE.EQ.3 .AND. IL.EQ.1 .AND. IU.EQ.N ) $ IRANGE = 1 * * Get machine constants * NB is the minimum vector length for vector bisection, or 0 * if only scalar is to be done. * SAFEMN = DLAMCH( 'S' ) ULP = DLAMCH( 'P' ) RTOLI = ULP*RELFAC NB = ILAENV( 1, 'DSTEBZ', ' ', N, -1, -1, -1 ) IF( NB.LE.1 ) $ NB = 0 * * Special Case when N=1 * IF( N.EQ.1 ) THEN NSPLIT = 1 ISPLIT( 1 ) = 1 IF( IRANGE.EQ.2 .AND. ( VL.GE.D( 1 ) .OR. VU.LT.D( 1 ) ) ) THEN M = 0 ELSE W( 1 ) = D( 1 ) IBLOCK( 1 ) = 1 M = 1 END IF RETURN END IF * * Compute Splitting Points * NSPLIT = 1 WORK( N ) = ZERO PIVMIN = ONE * DO 10 J = 2, N TMP1 = E( J-1 )**2 IF( ABS( D( J )*D( J-1 ) )*ULP**2+SAFEMN.GT.TMP1 ) THEN ISPLIT( NSPLIT ) = J - 1 NSPLIT = NSPLIT + 1 WORK( J-1 ) = ZERO ELSE WORK( J-1 ) = TMP1 PIVMIN = MAX( PIVMIN, TMP1 ) END IF 10 CONTINUE ISPLIT( NSPLIT ) = N PIVMIN = PIVMIN*SAFEMN * * Compute Interval and ATOLI * IF( IRANGE.EQ.3 ) THEN * * RANGE='I': Compute the interval containing eigenvalues * IL through IU. * * Compute Gershgorin interval for entire (split) matrix * and use it as the initial interval * GU = D( 1 ) GL = D( 1 ) TMP1 = ZERO * DO 20 J = 1, N - 1 TMP2 = SQRT( WORK( J ) ) GU = MAX( GU, D( J )+TMP1+TMP2 ) GL = MIN( GL, D( J )-TMP1-TMP2 ) TMP1 = TMP2 20 CONTINUE * GU = MAX( GU, D( N )+TMP1 ) GL = MIN( GL, D( N )-TMP1 ) TNORM = MAX( ABS( GL ), ABS( GU ) ) GL = GL - FUDGE*TNORM*ULP*N - FUDGE*TWO*PIVMIN GU = GU + FUDGE*TNORM*ULP*N + FUDGE*PIVMIN * * Compute Iteration parameters * ITMAX = INT( ( LOG( TNORM+PIVMIN )-LOG( PIVMIN ) ) / $ LOG( TWO ) ) + 2 IF( ABSTOL.LE.ZERO ) THEN ATOLI = ULP*TNORM ELSE ATOLI = ABSTOL END IF * WORK( N+1 ) = GL WORK( N+2 ) = GL WORK( N+3 ) = GU WORK( N+4 ) = GU WORK( N+5 ) = GL WORK( N+6 ) = GU IWORK( 1 ) = -1 IWORK( 2 ) = -1 IWORK( 3 ) = N + 1 IWORK( 4 ) = N + 1 IWORK( 5 ) = IL - 1 IWORK( 6 ) = IU * CALL DLAEBZ( 3, ITMAX, N, 2, 2, NB, ATOLI, RTOLI, PIVMIN, D, E, $ WORK, IWORK( 5 ), WORK( N+1 ), WORK( N+5 ), IOUT, $ IWORK, W, IBLOCK, IINFO ) * IF( IWORK( 6 ).EQ.IU ) THEN WL = WORK( N+1 ) WLU = WORK( N+3 ) NWL = IWORK( 1 ) WU = WORK( N+4 ) WUL = WORK( N+2 ) NWU = IWORK( 4 ) ELSE WL = WORK( N+2 ) WLU = WORK( N+4 ) NWL = IWORK( 2 ) WU = WORK( N+3 ) WUL = WORK( N+1 ) NWU = IWORK( 3 ) END IF * IF( NWL.LT.0 .OR. NWL.GE.N .OR. NWU.LT.1 .OR. NWU.GT.N ) THEN INFO = 4 RETURN END IF ELSE * * RANGE='A' or 'V' -- Set ATOLI * TNORM = MAX( ABS( D( 1 ) )+ABS( E( 1 ) ), $ ABS( D( N ) )+ABS( E( N-1 ) ) ) * DO 30 J = 2, N - 1 TNORM = MAX( TNORM, ABS( D( J ) )+ABS( E( J-1 ) )+ $ ABS( E( J ) ) ) 30 CONTINUE * IF( ABSTOL.LE.ZERO ) THEN ATOLI = ULP*TNORM ELSE ATOLI = ABSTOL END IF * IF( IRANGE.EQ.2 ) THEN WL = VL WU = VU ELSE WL = ZERO WU = ZERO END IF END IF * * Find Eigenvalues -- Loop Over Blocks and recompute NWL and NWU. * NWL accumulates the number of eigenvalues .le. WL, * NWU accumulates the number of eigenvalues .le. WU * M = 0 IEND = 0 INFO = 0 NWL = 0 NWU = 0 * DO 70 JB = 1, NSPLIT IOFF = IEND IBEGIN = IOFF + 1 IEND = ISPLIT( JB ) IN = IEND - IOFF * IF( IN.EQ.1 ) THEN * * Special Case -- IN=1 * IF( IRANGE.EQ.1 .OR. WL.GE.D( IBEGIN )-PIVMIN ) $ NWL = NWL + 1 IF( IRANGE.EQ.1 .OR. WU.GE.D( IBEGIN )-PIVMIN ) $ NWU = NWU + 1 IF( IRANGE.EQ.1 .OR. ( WL.LT.D( IBEGIN )-PIVMIN .AND. WU.GE. $ D( IBEGIN )-PIVMIN ) ) THEN M = M + 1 W( M ) = D( IBEGIN ) IBLOCK( M ) = JB END IF ELSE * * General Case -- IN > 1 * * Compute Gershgorin Interval * and use it as the initial interval * GU = D( IBEGIN ) GL = D( IBEGIN ) TMP1 = ZERO * DO 40 J = IBEGIN, IEND - 1 TMP2 = ABS( E( J ) ) GU = MAX( GU, D( J )+TMP1+TMP2 ) GL = MIN( GL, D( J )-TMP1-TMP2 ) TMP1 = TMP2 40 CONTINUE * GU = MAX( GU, D( IEND )+TMP1 ) GL = MIN( GL, D( IEND )-TMP1 ) BNORM = MAX( ABS( GL ), ABS( GU ) ) GL = GL - FUDGE*BNORM*ULP*IN - FUDGE*PIVMIN GU = GU + FUDGE*BNORM*ULP*IN + FUDGE*PIVMIN * * Compute ATOLI for the current submatrix * IF( ABSTOL.LE.ZERO ) THEN ATOLI = ULP*MAX( ABS( GL ), ABS( GU ) ) ELSE ATOLI = ABSTOL END IF * IF( IRANGE.GT.1 ) THEN IF( GU.LT.WL ) THEN NWL = NWL + IN NWU = NWU + IN GO TO 70 END IF GL = MAX( GL, WL ) GU = MIN( GU, WU ) IF( GL.GE.GU ) $ GO TO 70 END IF * * Set Up Initial Interval * WORK( N+1 ) = GL WORK( N+IN+1 ) = GU CALL DLAEBZ( 1, 0, IN, IN, 1, NB, ATOLI, RTOLI, PIVMIN, $ D( IBEGIN ), E( IBEGIN ), WORK( IBEGIN ), $ IDUMMA, WORK( N+1 ), WORK( N+2*IN+1 ), IM, $ IWORK, W( M+1 ), IBLOCK( M+1 ), IINFO ) * NWL = NWL + IWORK( 1 ) NWU = NWU + IWORK( IN+1 ) IWOFF = M - IWORK( 1 ) * * Compute Eigenvalues * ITMAX = INT( ( LOG( GU-GL+PIVMIN )-LOG( PIVMIN ) ) / $ LOG( TWO ) ) + 2 CALL DLAEBZ( 2, ITMAX, IN, IN, 1, NB, ATOLI, RTOLI, PIVMIN, $ D( IBEGIN ), E( IBEGIN ), WORK( IBEGIN ), $ IDUMMA, WORK( N+1 ), WORK( N+2*IN+1 ), IOUT, $ IWORK, W( M+1 ), IBLOCK( M+1 ), IINFO ) * * Copy Eigenvalues Into W and IBLOCK * Use -JB for block number for unconverged eigenvalues. * DO 60 J = 1, IOUT TMP1 = HALF*( WORK( J+N )+WORK( J+IN+N ) ) * * Flag non-convergence. * IF( J.GT.IOUT-IINFO ) THEN NCNVRG = .TRUE. IB = -JB ELSE IB = JB END IF DO 50 JE = IWORK( J ) + 1 + IWOFF, $ IWORK( J+IN ) + IWOFF W( JE ) = TMP1 IBLOCK( JE ) = IB 50 CONTINUE 60 CONTINUE * M = M + IM END IF 70 CONTINUE * * If RANGE='I', then (WL,WU) contains eigenvalues NWL+1,...,NWU * If NWL+1 < IL or NWU > IU, discard extra eigenvalues. * IF( IRANGE.EQ.3 ) THEN IM = 0 IDISCL = IL - 1 - NWL IDISCU = NWU - IU * IF( IDISCL.GT.0 .OR. IDISCU.GT.0 ) THEN DO 80 JE = 1, M IF( W( JE ).LE.WLU .AND. IDISCL.GT.0 ) THEN IDISCL = IDISCL - 1 ELSE IF( W( JE ).GE.WUL .AND. IDISCU.GT.0 ) THEN IDISCU = IDISCU - 1 ELSE IM = IM + 1 W( IM ) = W( JE ) IBLOCK( IM ) = IBLOCK( JE ) END IF 80 CONTINUE M = IM END IF IF( IDISCL.GT.0 .OR. IDISCU.GT.0 ) THEN * * Code to deal with effects of bad arithmetic: * Some low eigenvalues to be discarded are not in (WL,WLU], * or high eigenvalues to be discarded are not in (WUL,WU] * so just kill off the smallest IDISCL/largest IDISCU * eigenvalues, by simply finding the smallest/largest * eigenvalue(s). * * (If N(w) is monotone non-decreasing, this should never * happen.) * IF( IDISCL.GT.0 ) THEN WKILL = WU DO 100 JDISC = 1, IDISCL IW = 0 DO 90 JE = 1, M IF( IBLOCK( JE ).NE.0 .AND. $ ( W( JE ).LT.WKILL .OR. IW.EQ.0 ) ) THEN IW = JE WKILL = W( JE ) END IF 90 CONTINUE IBLOCK( IW ) = 0 100 CONTINUE END IF IF( IDISCU.GT.0 ) THEN * WKILL = WL DO 120 JDISC = 1, IDISCU IW = 0 DO 110 JE = 1, M IF( IBLOCK( JE ).NE.0 .AND. $ ( W( JE ).GT.WKILL .OR. IW.EQ.0 ) ) THEN IW = JE WKILL = W( JE ) END IF 110 CONTINUE IBLOCK( IW ) = 0 120 CONTINUE END IF IM = 0 DO 130 JE = 1, M IF( IBLOCK( JE ).NE.0 ) THEN IM = IM + 1 W( IM ) = W( JE ) IBLOCK( IM ) = IBLOCK( JE ) END IF 130 CONTINUE M = IM END IF IF( IDISCL.LT.0 .OR. IDISCU.LT.0 ) THEN TOOFEW = .TRUE. END IF END IF * * If ORDER='B', do nothing -- the eigenvalues are already sorted * by block. * If ORDER='E', sort the eigenvalues from smallest to largest * IF( IORDER.EQ.1 .AND. NSPLIT.GT.1 ) THEN DO 150 JE = 1, M - 1 IE = 0 TMP1 = W( JE ) DO 140 J = JE + 1, M IF( W( J ).LT.TMP1 ) THEN IE = J TMP1 = W( J ) END IF 140 CONTINUE * IF( IE.NE.0 ) THEN ITMP1 = IBLOCK( IE ) W( IE ) = W( JE ) IBLOCK( IE ) = IBLOCK( JE ) W( JE ) = TMP1 IBLOCK( JE ) = ITMP1 END IF 150 CONTINUE END IF * INFO = 0 IF( NCNVRG ) $ INFO = INFO + 1 IF( TOOFEW ) $ INFO = INFO + 2 RETURN * * End of DSTEBZ * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/xerbla.f0000644002504400250440000000005012337331322016554 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/xerbla.f0000644002504400250440000000505412337331322017324 0ustar00dewhurstdewhurst00000000000000*> \brief \b XERBLA * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download XERBLA + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE XERBLA( SRNAME, INFO ) * * .. Scalar Arguments .. * CHARACTER*(*) SRNAME * INTEGER INFO * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> XERBLA is an error handler for the LAPACK routines. *> It is called by an LAPACK routine if an input parameter has an *> invalid value. A message is printed and execution stops. *> *> Installers may consider modifying the STOP statement in order to *> call system-specific exception-handling facilities. *> \endverbatim * * Arguments: * ========== * *> \param[in] SRNAME *> \verbatim *> SRNAME is CHARACTER*(*) *> The name of the routine which called XERBLA. *> \endverbatim *> *> \param[in] INFO *> \verbatim *> INFO is INTEGER *> The position of the invalid parameter in the parameter list *> of the calling routine. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE XERBLA( SRNAME, INFO ) * * -- LAPACK auxiliary routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER*(*) SRNAME INTEGER INFO * .. * * ===================================================================== * * .. Intrinsic Functions .. INTRINSIC LEN_TRIM * .. * .. Executable Statements .. * WRITE( *, FMT = 9999 )SRNAME( 1:LEN_TRIM( SRNAME ) ), INFO * STOP * 9999 FORMAT( ' ** On entry to ', A, ' parameter number ', I2, ' had ', $ 'an illegal value' ) * * End of XERBLA * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsyconv.f0000644002504400250440000000005012337331322016764 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsyconv.f0000644002504400250440000002141212337331322017530 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYCONV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYCONV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYCONV( UPLO, WAY, N, A, LDA, IPIV, WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO, WAY * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYCONV convert A given by TRF into L and D and vice-versa. *> Get Non-diag elements of D (returned in workspace) and *> apply or reverse permutation done in TRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the details of the factorization are stored *> as an upper or lower triangular matrix. *> = 'U': Upper triangular, form is A = U*D*U**T; *> = 'L': Lower triangular, form is A = L*D*L**T. *> \endverbatim *> *> \param[in] WAY *> \verbatim *> WAY is CHARACTER*1 *> = 'C': Convert *> = 'R': Revert *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The block diagonal matrix D and the multipliers used to *> obtain the factor U or L as computed by DSYTRF. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> Details of the interchanges and the block structure of D *> as determined by DSYTRF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYcomputational * * ===================================================================== SUBROUTINE DSYCONV( UPLO, WAY, N, A, LDA, IPIV, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO, WAY INTEGER INFO, LDA, N * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * * .. External Subroutines .. EXTERNAL XERBLA * .. Local Scalars .. LOGICAL UPPER, CONVERT INTEGER I, IP, J DOUBLE PRECISION TEMP * .. * .. Executable Statements .. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) CONVERT = LSAME( WAY, 'C' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( .NOT.CONVERT .AND. .NOT.LSAME( WAY, 'R' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYCONV', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( UPPER ) THEN * * A is UPPER * * Convert A (A is upper) * * Convert VALUE * IF ( CONVERT ) THEN I=N WORK(1)=ZERO DO WHILE ( I .GT. 1 ) IF( IPIV(I) .LT. 0 ) THEN WORK(I)=A(I-1,I) A(I-1,I)=ZERO I=I-1 ELSE WORK(I)=ZERO ENDIF I=I-1 END DO * * Convert PERMUTATIONS * I=N DO WHILE ( I .GE. 1 ) IF( IPIV(I) .GT. 0) THEN IP=IPIV(I) IF( I .LT. N) THEN DO 12 J= I+1,N TEMP=A(IP,J) A(IP,J)=A(I,J) A(I,J)=TEMP 12 CONTINUE ENDIF ELSE IP=-IPIV(I) IF( I .LT. N) THEN DO 13 J= I+1,N TEMP=A(IP,J) A(IP,J)=A(I-1,J) A(I-1,J)=TEMP 13 CONTINUE ENDIF I=I-1 ENDIF I=I-1 END DO ELSE * * Revert A (A is upper) * * * Revert PERMUTATIONS * I=1 DO WHILE ( I .LE. N ) IF( IPIV(I) .GT. 0 ) THEN IP=IPIV(I) IF( I .LT. N) THEN DO J= I+1,N TEMP=A(IP,J) A(IP,J)=A(I,J) A(I,J)=TEMP END DO ENDIF ELSE IP=-IPIV(I) I=I+1 IF( I .LT. N) THEN DO J= I+1,N TEMP=A(IP,J) A(IP,J)=A(I-1,J) A(I-1,J)=TEMP END DO ENDIF ENDIF I=I+1 END DO * * Revert VALUE * I=N DO WHILE ( I .GT. 1 ) IF( IPIV(I) .LT. 0 ) THEN A(I-1,I)=WORK(I) I=I-1 ENDIF I=I-1 END DO END IF ELSE * * A is LOWER * IF ( CONVERT ) THEN * * Convert A (A is lower) * * * Convert VALUE * I=1 WORK(N)=ZERO DO WHILE ( I .LE. N ) IF( I.LT.N .AND. IPIV(I) .LT. 0 ) THEN WORK(I)=A(I+1,I) A(I+1,I)=ZERO I=I+1 ELSE WORK(I)=ZERO ENDIF I=I+1 END DO * * Convert PERMUTATIONS * I=1 DO WHILE ( I .LE. N ) IF( IPIV(I) .GT. 0 ) THEN IP=IPIV(I) IF (I .GT. 1) THEN DO 22 J= 1,I-1 TEMP=A(IP,J) A(IP,J)=A(I,J) A(I,J)=TEMP 22 CONTINUE ENDIF ELSE IP=-IPIV(I) IF (I .GT. 1) THEN DO 23 J= 1,I-1 TEMP=A(IP,J) A(IP,J)=A(I+1,J) A(I+1,J)=TEMP 23 CONTINUE ENDIF I=I+1 ENDIF I=I+1 END DO ELSE * * Revert A (A is lower) * * * Revert PERMUTATIONS * I=N DO WHILE ( I .GE. 1 ) IF( IPIV(I) .GT. 0 ) THEN IP=IPIV(I) IF (I .GT. 1) THEN DO J= 1,I-1 TEMP=A(I,J) A(I,J)=A(IP,J) A(IP,J)=TEMP END DO ENDIF ELSE IP=-IPIV(I) I=I-1 IF (I .GT. 1) THEN DO J= 1,I-1 TEMP=A(I+1,J) A(I+1,J)=A(IP,J) A(IP,J)=TEMP END DO ENDIF ENDIF I=I-1 END DO * * Revert VALUE * I=1 DO WHILE ( I .LE. N-1 ) IF( IPIV(I) .LT. ZERO ) THEN A(I+1,I)=WORK(I) I=I+1 ENDIF I=I+1 END DO END IF END IF RETURN * * End of DSYCONV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlarfg.f0000644002504400250440000000005012337331322016564 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlarfg.f0000644002504400250440000001245112337331322017333 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLARFG generates an elementary reflector (Householder matrix). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLARFG + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLARFG( N, ALPHA, X, INCX, TAU ) * * .. Scalar Arguments .. * INTEGER INCX, N * COMPLEX*16 ALPHA, TAU * .. * .. Array Arguments .. * COMPLEX*16 X( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLARFG generates a complex elementary reflector H of order n, such *> that *> *> H**H * ( alpha ) = ( beta ), H**H * H = I. *> ( x ) ( 0 ) *> *> where alpha and beta are scalars, with beta real, and x is an *> (n-1)-element complex vector. H is represented in the form *> *> H = I - tau * ( 1 ) * ( 1 v**H ) , *> ( v ) *> *> where tau is a complex scalar and v is a complex (n-1)-element *> vector. Note that H is not hermitian. *> *> If the elements of x are all zero and alpha is real, then tau = 0 *> and H is taken to be the unit matrix. *> *> Otherwise 1 <= real(tau) <= 2 and abs(tau-1) <= 1 . *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the elementary reflector. *> \endverbatim *> *> \param[in,out] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, the value alpha. *> On exit, it is overwritten with the value beta. *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is COMPLEX*16 array, dimension *> (1+(N-2)*abs(INCX)) *> On entry, the vector x. *> On exit, it is overwritten with the vector v. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The increment between elements of X. INCX > 0. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is COMPLEX*16 *> The value tau. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZLARFG( N, ALPHA, X, INCX, TAU ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INCX, N COMPLEX*16 ALPHA, TAU * .. * .. Array Arguments .. COMPLEX*16 X( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER J, KNT DOUBLE PRECISION ALPHI, ALPHR, BETA, RSAFMN, SAFMIN, XNORM * .. * .. External Functions .. DOUBLE PRECISION DLAMCH, DLAPY3, DZNRM2 COMPLEX*16 ZLADIV EXTERNAL DLAMCH, DLAPY3, DZNRM2, ZLADIV * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, DIMAG, SIGN * .. * .. External Subroutines .. EXTERNAL ZDSCAL, ZSCAL * .. * .. Executable Statements .. * IF( N.LE.0 ) THEN TAU = ZERO RETURN END IF * XNORM = DZNRM2( N-1, X, INCX ) ALPHR = DBLE( ALPHA ) ALPHI = DIMAG( ALPHA ) * IF( XNORM.EQ.ZERO .AND. ALPHI.EQ.ZERO ) THEN * * H = I * TAU = ZERO ELSE * * general case * BETA = -SIGN( DLAPY3( ALPHR, ALPHI, XNORM ), ALPHR ) SAFMIN = DLAMCH( 'S' ) / DLAMCH( 'E' ) RSAFMN = ONE / SAFMIN * KNT = 0 IF( ABS( BETA ).LT.SAFMIN ) THEN * * XNORM, BETA may be inaccurate; scale X and recompute them * 10 CONTINUE KNT = KNT + 1 CALL ZDSCAL( N-1, RSAFMN, X, INCX ) BETA = BETA*RSAFMN ALPHI = ALPHI*RSAFMN ALPHR = ALPHR*RSAFMN IF( ABS( BETA ).LT.SAFMIN ) $ GO TO 10 * * New BETA is at most 1, at least SAFMIN * XNORM = DZNRM2( N-1, X, INCX ) ALPHA = DCMPLX( ALPHR, ALPHI ) BETA = -SIGN( DLAPY3( ALPHR, ALPHI, XNORM ), ALPHR ) END IF TAU = DCMPLX( ( BETA-ALPHR ) / BETA, -ALPHI / BETA ) ALPHA = ZLADIV( DCMPLX( ONE ), ALPHA-BETA ) CALL ZSCAL( N-1, ALPHA, X, INCX ) * * If ALPHA is subnormal, it may lose relative accuracy * DO 20 J = 1, KNT BETA = BETA*SAFMIN 20 CONTINUE ALPHA = BETA END IF * RETURN * * End of ZLARFG * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dpotrf.f0000644002504400250440000000005012337331322016575 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dpotrf.f0000644002504400250440000001606212337331322017346 0ustar00dewhurstdewhurst00000000000000*> \brief \b DPOTRF * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DPOTRF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DPOTRF( UPLO, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DPOTRF computes the Cholesky factorization of a real symmetric *> positive definite matrix A. *> *> The factorization has the form *> A = U**T * U, if UPLO = 'U', or *> A = L * L**T, if UPLO = 'L', *> where U is an upper triangular matrix and L is lower triangular. *> *> This is the block version of the algorithm, calling Level 3 BLAS. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> N-by-N upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the factor U or L from the Cholesky *> factorization A = U**T*U or A = L*L**T. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, the leading minor of order i is not *> positive definite, and the factorization could not be *> completed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doublePOcomputational * * ===================================================================== SUBROUTINE DPOTRF( UPLO, N, A, LDA, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER J, JB, NB * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DGEMM, DPOTF2, DSYRK, DTRSM, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DPOTRF', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Determine the block size for this environment. * NB = ILAENV( 1, 'DPOTRF', UPLO, N, -1, -1, -1 ) IF( NB.LE.1 .OR. NB.GE.N ) THEN * * Use unblocked code. * CALL DPOTF2( UPLO, N, A, LDA, INFO ) ELSE * * Use blocked code. * IF( UPPER ) THEN * * Compute the Cholesky factorization A = U**T*U. * DO 10 J = 1, N, NB * * Update and factorize the current diagonal block and test * for non-positive-definiteness. * JB = MIN( NB, N-J+1 ) CALL DSYRK( 'Upper', 'Transpose', JB, J-1, -ONE, $ A( 1, J ), LDA, ONE, A( J, J ), LDA ) CALL DPOTF2( 'Upper', JB, A( J, J ), LDA, INFO ) IF( INFO.NE.0 ) $ GO TO 30 IF( J+JB.LE.N ) THEN * * Compute the current block row. * CALL DGEMM( 'Transpose', 'No transpose', JB, N-J-JB+1, $ J-1, -ONE, A( 1, J ), LDA, A( 1, J+JB ), $ LDA, ONE, A( J, J+JB ), LDA ) CALL DTRSM( 'Left', 'Upper', 'Transpose', 'Non-unit', $ JB, N-J-JB+1, ONE, A( J, J ), LDA, $ A( J, J+JB ), LDA ) END IF 10 CONTINUE * ELSE * * Compute the Cholesky factorization A = L*L**T. * DO 20 J = 1, N, NB * * Update and factorize the current diagonal block and test * for non-positive-definiteness. * JB = MIN( NB, N-J+1 ) CALL DSYRK( 'Lower', 'No transpose', JB, J-1, -ONE, $ A( J, 1 ), LDA, ONE, A( J, J ), LDA ) CALL DPOTF2( 'Lower', JB, A( J, J ), LDA, INFO ) IF( INFO.NE.0 ) $ GO TO 30 IF( J+JB.LE.N ) THEN * * Compute the current block column. * CALL DGEMM( 'No transpose', 'Transpose', N-J-JB+1, JB, $ J-1, -ONE, A( J+JB, 1 ), LDA, A( J, 1 ), $ LDA, ONE, A( J+JB, J ), LDA ) CALL DTRSM( 'Right', 'Lower', 'Transpose', 'Non-unit', $ N-J-JB+1, JB, ONE, A( J, J ), LDA, $ A( J+JB, J ), LDA ) END IF 20 CONTINUE END IF END IF GO TO 40 * 30 CONTINUE INFO = INFO + J - 1 * 40 CONTINUE RETURN * * End of DPOTRF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhseqr.f0000644002504400250440000000005012337331322016613 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhseqr.f0000644002504400250440000004305012337331322017361 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHSEQR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHSEQR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, * WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, INFO, LDH, LDZ, LWORK, N * CHARACTER COMPZ, JOB * .. * .. Array Arguments .. * COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHSEQR computes the eigenvalues of a Hessenberg matrix H *> and, optionally, the matrices T and Z from the Schur decomposition *> H = Z T Z**H, where T is an upper triangular matrix (the *> Schur form), and Z is the unitary matrix of Schur vectors. *> *> Optionally Z may be postmultiplied into an input unitary *> matrix Q so that this routine can give the Schur factorization *> of a matrix A which has been reduced to the Hessenberg form H *> by the unitary matrix Q: A = Q*H*Q**H = (QZ)*H*(QZ)**H. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOB *> \verbatim *> JOB is CHARACTER*1 *> = 'E': compute eigenvalues only; *> = 'S': compute eigenvalues and the Schur form T. *> \endverbatim *> *> \param[in] COMPZ *> \verbatim *> COMPZ is CHARACTER*1 *> = 'N': no Schur vectors are computed; *> = 'I': Z is initialized to the unit matrix and the matrix Z *> of Schur vectors of H is returned; *> = 'V': Z must contain an unitary matrix Q on entry, and *> the product Q*Z is returned. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix H. N .GE. 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> *> It is assumed that H is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally *> set by a previous call to ZGEBAL, and then passed to ZGEHRD *> when the matrix output by ZGEBAL is reduced to Hessenberg *> form. Otherwise ILO and IHI should be set to 1 and N *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. *> If N = 0, then ILO = 1 and IHI = 0. *> \endverbatim *> *> \param[in,out] H *> \verbatim *> H is COMPLEX*16 array, dimension (LDH,N) *> On entry, the upper Hessenberg matrix H. *> On exit, if INFO = 0 and JOB = 'S', H contains the upper *> triangular matrix T from the Schur decomposition (the *> Schur form). If INFO = 0 and JOB = 'E', the contents of *> H are unspecified on exit. (The output value of H when *> INFO.GT.0 is given under the description of INFO below.) *> *> Unlike earlier versions of ZHSEQR, this subroutine may *> explicitly H(i,j) = 0 for i.GT.j and j = 1, 2, ... ILO-1 *> or j = IHI+1, IHI+2, ... N. *> \endverbatim *> *> \param[in] LDH *> \verbatim *> LDH is INTEGER *> The leading dimension of the array H. LDH .GE. max(1,N). *> \endverbatim *> *> \param[out] W *> \verbatim *> W is COMPLEX*16 array, dimension (N) *> The computed eigenvalues. If JOB = 'S', the eigenvalues are *> stored in the same order as on the diagonal of the Schur *> form returned in H, with W(i) = H(i,i). *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ,N) *> If COMPZ = 'N', Z is not referenced. *> If COMPZ = 'I', on entry Z need not be set and on exit, *> if INFO = 0, Z contains the unitary matrix Z of the Schur *> vectors of H. If COMPZ = 'V', on entry Z must contain an *> N-by-N matrix Q, which is assumed to be equal to the unit *> matrix except for the submatrix Z(ILO:IHI,ILO:IHI). On exit, *> if INFO = 0, Z contains Q*Z. *> Normally Q is the unitary matrix generated by ZUNGHR *> after the call to ZGEHRD which formed the Hessenberg matrix *> H. (The output value of Z when INFO.GT.0 is given under *> the description of INFO below.) *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. if COMPZ = 'I' or *> COMPZ = 'V', then LDZ.GE.MAX(1,N). Otherwize, LDZ.GE.1. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (LWORK) *> On exit, if INFO = 0, WORK(1) returns an estimate of *> the optimal value for LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK .GE. max(1,N) *> is sufficient and delivers very good and sometimes *> optimal performance. However, LWORK as large as 11*N *> may be required for optimal performance. A workspace *> query is recommended to determine the optimal workspace *> size. *> *> If LWORK = -1, then ZHSEQR does a workspace query. *> In this case, ZHSEQR checks the input parameters and *> estimates the optimal workspace size for the given *> values of N, ILO and IHI. The estimate is returned *> in WORK(1). No error message related to LWORK is *> issued by XERBLA. Neither H nor Z are accessed. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> .LT. 0: if INFO = -i, the i-th argument had an illegal *> value *> .GT. 0: if INFO = i, ZHSEQR failed to compute all of *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) *> *> If INFO .GT. 0 and JOB = 'E', then on exit, the *> remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. *> *> If INFO .GT. 0 and JOB = 'S', then on exit *> *> (*) (initial value of H)*U = U*(final value of H) *> *> where U is a unitary matrix. The final *> value of H is upper Hessenberg and triangular in *> rows and columns INFO+1 through IHI. *> *> If INFO .GT. 0 and COMPZ = 'V', then on exit *> *> (final value of Z) = (initial value of Z)*U *> *> where U is the unitary matrix in (*) (regard- *> less of the value of JOB.) *> *> If INFO .GT. 0 and COMPZ = 'I', then on exit *> (final value of Z) = U *> where U is the unitary matrix in (*) (regard- *> less of the value of JOB.) *> *> If INFO .GT. 0 and COMPZ = 'N', then Z is not *> accessed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * *> \par Contributors: * ================== *> *> Karen Braman and Ralph Byers, Department of Mathematics, *> University of Kansas, USA * *> \par Further Details: * ===================== *> *> \verbatim *> *> Default values supplied by *> ILAENV(ISPEC,'ZHSEQR',JOB(:1)//COMPZ(:1),N,ILO,IHI,LWORK). *> It is suggested that these defaults be adjusted in order *> to attain best performance in each particular *> computational environment. *> *> ISPEC=12: The ZLAHQR vs ZLAQR0 crossover point. *> Default: 75. (Must be at least 11.) *> *> ISPEC=13: Recommended deflation window size. *> This depends on ILO, IHI and NS. NS is the *> number of simultaneous shifts returned *> by ILAENV(ISPEC=15). (See ISPEC=15 below.) *> The default for (IHI-ILO+1).LE.500 is NS. *> The default for (IHI-ILO+1).GT.500 is 3*NS/2. *> *> ISPEC=14: Nibble crossover point. (See IPARMQ for *> details.) Default: 14% of deflation window *> size. *> *> ISPEC=15: Number of simultaneous shifts in a multishift *> QR iteration. *> *> If IHI-ILO+1 is ... *> *> greater than ...but less ... the *> or equal to ... than default is *> *> 1 30 NS = 2(+) *> 30 60 NS = 4(+) *> 60 150 NS = 10(+) *> 150 590 NS = ** *> 590 3000 NS = 64 *> 3000 6000 NS = 128 *> 6000 infinity NS = 256 *> *> (+) By default some or all matrices of this order *> are passed to the implicit double shift routine *> ZLAHQR and this parameter is ignored. See *> ISPEC=12 above and comments in IPARMQ for *> details. *> *> (**) The asterisks (**) indicate an ad-hoc *> function of N increasing from 10 to 64. *> *> ISPEC=16: Select structured matrix multiply. *> If the number of simultaneous shifts (specified *> by ISPEC=15) is less than 14, then the default *> for ISPEC=16 is 0. Otherwise the default for *> ISPEC=16 is 2. *> \endverbatim * *> \par References: * ================ *> *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 *> Performance, SIAM Journal of Matrix Analysis, volume 23, pages *> 929--947, 2002. *> \n *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part II: Aggressive Early Deflation, SIAM Journal *> of Matrix Analysis, volume 23, pages 948--973, 2002. * * ===================================================================== SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, $ WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER IHI, ILO, INFO, LDH, LDZ, LWORK, N CHARACTER COMPZ, JOB * .. * .. Array Arguments .. COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. * * ==== Matrices of order NTINY or smaller must be processed by * . ZLAHQR because of insufficient subdiagonal scratch space. * . (This is a hard limit.) ==== INTEGER NTINY PARAMETER ( NTINY = 11 ) * * ==== NL allocates some local workspace to help small matrices * . through a rare ZLAHQR failure. NL .GT. NTINY = 11 is * . required and NL .LE. NMIN = ILAENV(ISPEC=12,...) is recom- * . mended. (The default value of NMIN is 75.) Using NL = 49 * . allows up to six simultaneous shifts and a 16-by-16 * . deflation window. ==== INTEGER NL PARAMETER ( NL = 49 ) COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ), $ ONE = ( 1.0d0, 0.0d0 ) ) DOUBLE PRECISION RZERO PARAMETER ( RZERO = 0.0d0 ) * .. * .. Local Arrays .. COMPLEX*16 HL( NL, NL ), WORKL( NL ) * .. * .. Local Scalars .. INTEGER KBOT, NMIN LOGICAL INITZ, LQUERY, WANTT, WANTZ * .. * .. External Functions .. INTEGER ILAENV LOGICAL LSAME EXTERNAL ILAENV, LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZCOPY, ZLACPY, ZLAHQR, ZLAQR0, ZLASET * .. * .. Intrinsic Functions .. INTRINSIC DBLE, DCMPLX, MAX, MIN * .. * .. Executable Statements .. * * ==== Decode and check the input parameters. ==== * WANTT = LSAME( JOB, 'S' ) INITZ = LSAME( COMPZ, 'I' ) WANTZ = INITZ .OR. LSAME( COMPZ, 'V' ) WORK( 1 ) = DCMPLX( DBLE( MAX( 1, N ) ), RZERO ) LQUERY = LWORK.EQ.-1 * INFO = 0 IF( .NOT.LSAME( JOB, 'E' ) .AND. .NOT.WANTT ) THEN INFO = -1 ELSE IF( .NOT.LSAME( COMPZ, 'N' ) .AND. .NOT.WANTZ ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN INFO = -5 ELSE IF( LDH.LT.MAX( 1, N ) ) THEN INFO = -7 ELSE IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.MAX( 1, N ) ) ) THEN INFO = -10 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * IF( INFO.NE.0 ) THEN * * ==== Quick return in case of invalid argument. ==== * CALL XERBLA( 'ZHSEQR', -INFO ) RETURN * ELSE IF( N.EQ.0 ) THEN * * ==== Quick return in case N = 0; nothing to do. ==== * RETURN * ELSE IF( LQUERY ) THEN * * ==== Quick return in case of a workspace query ==== * CALL ZLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILO, IHI, Z, $ LDZ, WORK, LWORK, INFO ) * ==== Ensure reported workspace size is backward-compatible with * . previous LAPACK versions. ==== WORK( 1 ) = DCMPLX( MAX( DBLE( WORK( 1 ) ), DBLE( MAX( 1, $ N ) ) ), RZERO ) RETURN * ELSE * * ==== copy eigenvalues isolated by ZGEBAL ==== * IF( ILO.GT.1 ) $ CALL ZCOPY( ILO-1, H, LDH+1, W, 1 ) IF( IHI.LT.N ) $ CALL ZCOPY( N-IHI, H( IHI+1, IHI+1 ), LDH+1, W( IHI+1 ), 1 ) * * ==== Initialize Z, if requested ==== * IF( INITZ ) $ CALL ZLASET( 'A', N, N, ZERO, ONE, Z, LDZ ) * * ==== Quick return if possible ==== * IF( ILO.EQ.IHI ) THEN W( ILO ) = H( ILO, ILO ) RETURN END IF * * ==== ZLAHQR/ZLAQR0 crossover point ==== * NMIN = ILAENV( 12, 'ZHSEQR', JOB( : 1 ) // COMPZ( : 1 ), N, $ ILO, IHI, LWORK ) NMIN = MAX( NTINY, NMIN ) * * ==== ZLAQR0 for big matrices; ZLAHQR for small ones ==== * IF( N.GT.NMIN ) THEN CALL ZLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILO, IHI, $ Z, LDZ, WORK, LWORK, INFO ) ELSE * * ==== Small matrix ==== * CALL ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILO, IHI, $ Z, LDZ, INFO ) * IF( INFO.GT.0 ) THEN * * ==== A rare ZLAHQR failure! ZLAQR0 sometimes succeeds * . when ZLAHQR fails. ==== * KBOT = INFO * IF( N.GE.NL ) THEN * * ==== Larger matrices have enough subdiagonal scratch * . space to call ZLAQR0 directly. ==== * CALL ZLAQR0( WANTT, WANTZ, N, ILO, KBOT, H, LDH, W, $ ILO, IHI, Z, LDZ, WORK, LWORK, INFO ) * ELSE * * ==== Tiny matrices don't have enough subdiagonal * . scratch space to benefit from ZLAQR0. Hence, * . tiny matrices must be copied into a larger * . array before calling ZLAQR0. ==== * CALL ZLACPY( 'A', N, N, H, LDH, HL, NL ) HL( N+1, N ) = ZERO CALL ZLASET( 'A', NL, NL-N, ZERO, ZERO, HL( 1, N+1 ), $ NL ) CALL ZLAQR0( WANTT, WANTZ, NL, ILO, KBOT, HL, NL, W, $ ILO, IHI, Z, LDZ, WORKL, NL, INFO ) IF( WANTT .OR. INFO.NE.0 ) $ CALL ZLACPY( 'A', N, N, HL, NL, H, LDH ) END IF END IF END IF * * ==== Clear out the trash, if necessary. ==== * IF( ( WANTT .OR. INFO.NE.0 ) .AND. N.GT.2 ) $ CALL ZLASET( 'L', N-2, N-2, ZERO, ZERO, H( 3, 1 ), LDH ) * * ==== Ensure reported workspace size is backward-compatible with * . previous LAPACK versions. ==== * WORK( 1 ) = DCMPLX( MAX( DBLE( MAX( 1, N ) ), $ DBLE( WORK( 1 ) ) ), RZERO ) END IF * * ==== End of ZHSEQR ==== * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zpotf2.f0000644002504400250440000000005012337331322016523 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zpotf2.f0000644002504400250440000001540012337331322017267 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZPOTF2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZPOTF2( UPLO, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZPOTF2 computes the Cholesky factorization of a complex Hermitian *> positive definite matrix A. *> *> The factorization has the form *> A = U**H * U , if UPLO = 'U', or *> A = L * L**H, if UPLO = 'L', *> where U is an upper triangular matrix and L is lower triangular. *> *> This is the unblocked version of the algorithm, calling Level 2 BLAS. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> Hermitian matrix A is stored. *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the leading *> n by n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n by n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the factor U or L from the Cholesky *> factorization A = U**H *U or A = L*L**H. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -k, the k-th argument had an illegal value *> > 0: if INFO = k, the leading minor of order k is not *> positive definite, and the factorization could not be *> completed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16POcomputational * * ===================================================================== SUBROUTINE ZPOTF2( UPLO, N, A, LDA, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) COMPLEX*16 CONE PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER J DOUBLE PRECISION AJJ * .. * .. External Functions .. LOGICAL LSAME, DISNAN COMPLEX*16 ZDOTC EXTERNAL LSAME, ZDOTC, DISNAN * .. * .. External Subroutines .. EXTERNAL XERBLA, ZDSCAL, ZGEMV, ZLACGV * .. * .. Intrinsic Functions .. INTRINSIC DBLE, MAX, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZPOTF2', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( UPPER ) THEN * * Compute the Cholesky factorization A = U**H *U. * DO 10 J = 1, N * * Compute U(J,J) and test for non-positive-definiteness. * AJJ = DBLE( A( J, J ) ) - ZDOTC( J-1, A( 1, J ), 1, $ A( 1, J ), 1 ) IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) ) THEN A( J, J ) = AJJ GO TO 30 END IF AJJ = SQRT( AJJ ) A( J, J ) = AJJ * * Compute elements J+1:N of row J. * IF( J.LT.N ) THEN CALL ZLACGV( J-1, A( 1, J ), 1 ) CALL ZGEMV( 'Transpose', J-1, N-J, -CONE, A( 1, J+1 ), $ LDA, A( 1, J ), 1, CONE, A( J, J+1 ), LDA ) CALL ZLACGV( J-1, A( 1, J ), 1 ) CALL ZDSCAL( N-J, ONE / AJJ, A( J, J+1 ), LDA ) END IF 10 CONTINUE ELSE * * Compute the Cholesky factorization A = L*L**H. * DO 20 J = 1, N * * Compute L(J,J) and test for non-positive-definiteness. * AJJ = DBLE( A( J, J ) ) - ZDOTC( J-1, A( J, 1 ), LDA, $ A( J, 1 ), LDA ) IF( AJJ.LE.ZERO.OR.DISNAN( AJJ ) ) THEN A( J, J ) = AJJ GO TO 30 END IF AJJ = SQRT( AJJ ) A( J, J ) = AJJ * * Compute elements J+1:N of column J. * IF( J.LT.N ) THEN CALL ZLACGV( J-1, A( J, 1 ), LDA ) CALL ZGEMV( 'No transpose', N-J, J-1, -CONE, A( J+1, 1 ), $ LDA, A( J, 1 ), LDA, CONE, A( J+1, J ), 1 ) CALL ZLACGV( J-1, A( J, 1 ), LDA ) CALL ZDSCAL( N-J, ONE / AJJ, A( J+1, J ), 1 ) END IF 20 CONTINUE END IF GO TO 40 * 30 CONTINUE INFO = J * 40 CONTINUE RETURN * * End of ZPOTF2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/ilazlc.f0000644002504400250440000000005012337331322016555 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/ilazlc.f0000644002504400250440000000570112337331322017324 0ustar00dewhurstdewhurst00000000000000*> \brief \b ILAZLC scans a matrix for its last non-zero column. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ILAZLC + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * INTEGER FUNCTION ILAZLC( M, N, A, LDA ) * * .. Scalar Arguments .. * INTEGER M, N, LDA * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ILAZLC scans A for its last non-zero column. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The m by n matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== INTEGER FUNCTION ILAZLC( M, N, A, LDA ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER M, N, LDA * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER ( ZERO = (0.0D+0, 0.0D+0) ) * .. * .. Local Scalars .. INTEGER I * .. * .. Executable Statements .. * * Quick test for the common case where one corner is non-zero. IF( N.EQ.0 ) THEN ILAZLC = N ELSE IF( A(1, N).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN ILAZLC = N ELSE * Now scan each column from the end, returning with the first non-zero. DO ILAZLC = N, 1, -1 DO I = 1, M IF( A(I, ILAZLC).NE.ZERO ) RETURN END DO END DO END IF RETURN END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dorg2r.f0000644002504400250440000000005012337331322016476 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dorg2r.f0000644002504400250440000001224212337331322017243 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORG2R generates all or part of the orthogonal matrix Q from a QR factorization determined by sgeqrf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORG2R + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORG2R( M, N, K, A, LDA, TAU, WORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, K, LDA, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORG2R generates an m by n real matrix Q with orthonormal columns, *> which is defined as the first n columns of a product of k elementary *> reflectors of order m *> *> Q = H(1) H(2) . . . H(k) *> *> as returned by DGEQRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix Q. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix Q. M >= N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines the *> matrix Q. N >= K >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the i-th column must contain the vector which *> defines the elementary reflector H(i), for i = 1,2,...,k, as *> returned by DGEQRF in the first k columns of its array *> argument A. *> On exit, the m-by-n matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The first dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DGEQRF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument has an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORG2R( M, N, K, A, LDA, TAU, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, J, L * .. * .. External Subroutines .. EXTERNAL DLARF, DSCAL, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORG2R', -INFO ) RETURN END IF * * Quick return if possible * IF( N.LE.0 ) $ RETURN * * Initialise columns k+1:n to columns of the unit matrix * DO 20 J = K + 1, N DO 10 L = 1, M A( L, J ) = ZERO 10 CONTINUE A( J, J ) = ONE 20 CONTINUE * DO 40 I = K, 1, -1 * * Apply H(i) to A(i:m,i:n) from the left * IF( I.LT.N ) THEN A( I, I ) = ONE CALL DLARF( 'Left', M-I+1, N-I, A( I, I ), 1, TAU( I ), $ A( I, I+1 ), LDA, WORK ) END IF IF( I.LT.M ) $ CALL DSCAL( M-I, -TAU( I ), A( I+1, I ), 1 ) A( I, I ) = ONE - TAU( I ) * * Set A(1:i-1,i) to zero * DO 30 L = 1, I - 1 A( L, I ) = ZERO 30 CONTINUE 40 CONTINUE RETURN * * End of DORG2R * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlae2.f0000644002504400250440000000005012337331322016266 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlae2.f0000644002504400250440000001133612337331322017036 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLAE2 computes the eigenvalues of a 2-by-2 symmetric matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLAE2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLAE2( A, B, C, RT1, RT2 ) * * .. Scalar Arguments .. * DOUBLE PRECISION A, B, C, RT1, RT2 * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLAE2 computes the eigenvalues of a 2-by-2 symmetric matrix *> [ A B ] *> [ B C ]. *> On return, RT1 is the eigenvalue of larger absolute value, and RT2 *> is the eigenvalue of smaller absolute value. *> \endverbatim * * Arguments: * ========== * *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION *> The (1,1) element of the 2-by-2 matrix. *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION *> The (1,2) and (2,1) elements of the 2-by-2 matrix. *> \endverbatim *> *> \param[in] C *> \verbatim *> C is DOUBLE PRECISION *> The (2,2) element of the 2-by-2 matrix. *> \endverbatim *> *> \param[out] RT1 *> \verbatim *> RT1 is DOUBLE PRECISION *> The eigenvalue of larger absolute value. *> \endverbatim *> *> \param[out] RT2 *> \verbatim *> RT2 is DOUBLE PRECISION *> The eigenvalue of smaller absolute value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> RT1 is accurate to a few ulps barring over/underflow. *> *> RT2 may be inaccurate if there is massive cancellation in the *> determinant A*C-B*B; higher precision or correctly rounded or *> correctly truncated arithmetic would be needed to compute RT2 *> accurately in all cases. *> *> Overflow is possible only if RT1 is within a factor of 5 of overflow. *> Underflow is harmless if the input data is 0 or exceeds *> underflow_threshold / macheps. *> \endverbatim *> * ===================================================================== SUBROUTINE DLAE2( A, B, C, RT1, RT2 ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION A, B, C, RT1, RT2 * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D0 ) DOUBLE PRECISION TWO PARAMETER ( TWO = 2.0D0 ) DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D0 ) DOUBLE PRECISION HALF PARAMETER ( HALF = 0.5D0 ) * .. * .. Local Scalars .. DOUBLE PRECISION AB, ACMN, ACMX, ADF, DF, RT, SM, TB * .. * .. Intrinsic Functions .. INTRINSIC ABS, SQRT * .. * .. Executable Statements .. * * Compute the eigenvalues * SM = A + C DF = A - C ADF = ABS( DF ) TB = B + B AB = ABS( TB ) IF( ABS( A ).GT.ABS( C ) ) THEN ACMX = A ACMN = C ELSE ACMX = C ACMN = A END IF IF( ADF.GT.AB ) THEN RT = ADF*SQRT( ONE+( AB / ADF )**2 ) ELSE IF( ADF.LT.AB ) THEN RT = AB*SQRT( ONE+( ADF / AB )**2 ) ELSE * * Includes case AB=ADF=0 * RT = AB*SQRT( TWO ) END IF IF( SM.LT.ZERO ) THEN RT1 = HALF*( SM-RT ) * * Order of execution important. * To get fully accurate smaller eigenvalue, * next line needs to be executed in higher precision. * RT2 = ( ACMX / RT1 )*ACMN - ( B / RT1 )*B ELSE IF( SM.GT.ZERO ) THEN RT1 = HALF*( SM+RT ) * * Order of execution important. * To get fully accurate smaller eigenvalue, * next line needs to be executed in higher precision. * RT2 = ( ACMX / RT1 )*ACMN - ( B / RT1 )*B ELSE * * Includes case RT1 = RT2 = 0 * RT1 = HALF*RT RT2 = -HALF*RT END IF RETURN * * End of DLAE2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlarf.f0000644002504400250440000000005012337331322016367 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlarf.f0000644002504400250440000001413212337331322017134 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLARF applies an elementary reflector to a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLARF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) * * .. Scalar Arguments .. * CHARACTER SIDE * INTEGER INCV, LDC, M, N * DOUBLE PRECISION TAU * .. * .. Array Arguments .. * DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLARF applies a real elementary reflector H to a real m by n matrix *> C, from either the left or the right. H is represented in the form *> *> H = I - tau * v * v**T *> *> where tau is a real scalar and v is a real vector. *> *> If tau = 0, then H is taken to be the unit matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': form H * C *> = 'R': form C * H *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. *> \endverbatim *> *> \param[in] V *> \verbatim *> V is DOUBLE PRECISION array, dimension *> (1 + (M-1)*abs(INCV)) if SIDE = 'L' *> or (1 + (N-1)*abs(INCV)) if SIDE = 'R' *> The vector v in the representation of H. V is not used if *> TAU = 0. *> \endverbatim *> *> \param[in] INCV *> \verbatim *> INCV is INTEGER *> The increment between elements of v. INCV <> 0. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION *> The value tau in the representation of H. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> On entry, the m by n matrix C. *> On exit, C is overwritten by the matrix H * C if SIDE = 'L', *> or C * H if SIDE = 'R'. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension *> (N) if SIDE = 'L' *> or (M) if SIDE = 'R' *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERauxiliary * * ===================================================================== SUBROUTINE DLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER SIDE INTEGER INCV, LDC, M, N DOUBLE PRECISION TAU * .. * .. Array Arguments .. DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. LOGICAL APPLYLEFT INTEGER I, LASTV, LASTC * .. * .. External Subroutines .. EXTERNAL DGEMV, DGER * .. * .. External Functions .. LOGICAL LSAME INTEGER ILADLR, ILADLC EXTERNAL LSAME, ILADLR, ILADLC * .. * .. Executable Statements .. * APPLYLEFT = LSAME( SIDE, 'L' ) LASTV = 0 LASTC = 0 IF( TAU.NE.ZERO ) THEN ! Set up variables for scanning V. LASTV begins pointing to the end ! of V. IF( APPLYLEFT ) THEN LASTV = M ELSE LASTV = N END IF IF( INCV.GT.0 ) THEN I = 1 + (LASTV-1) * INCV ELSE I = 1 END IF ! Look for the last non-zero row in V. DO WHILE( LASTV.GT.0 .AND. V( I ).EQ.ZERO ) LASTV = LASTV - 1 I = I - INCV END DO IF( APPLYLEFT ) THEN ! Scan for the last non-zero column in C(1:lastv,:). LASTC = ILADLC(LASTV, N, C, LDC) ELSE ! Scan for the last non-zero row in C(:,1:lastv). LASTC = ILADLR(M, LASTV, C, LDC) END IF END IF ! Note that lastc.eq.0 renders the BLAS operations null; no special ! case is needed at this level. IF( APPLYLEFT ) THEN * * Form H * C * IF( LASTV.GT.0 ) THEN * * w(1:lastc,1) := C(1:lastv,1:lastc)**T * v(1:lastv,1) * CALL DGEMV( 'Transpose', LASTV, LASTC, ONE, C, LDC, V, INCV, $ ZERO, WORK, 1 ) * * C(1:lastv,1:lastc) := C(...) - v(1:lastv,1) * w(1:lastc,1)**T * CALL DGER( LASTV, LASTC, -TAU, V, INCV, WORK, 1, C, LDC ) END IF ELSE * * Form C * H * IF( LASTV.GT.0 ) THEN * * w(1:lastc,1) := C(1:lastc,1:lastv) * v(1:lastv,1) * CALL DGEMV( 'No transpose', LASTC, LASTV, ONE, C, LDC, $ V, INCV, ZERO, WORK, 1 ) * * C(1:lastc,1:lastv) := C(...) - w(1:lastc,1) * v(1:lastv,1)**T * CALL DGER( LASTC, LASTV, -TAU, WORK, 1, V, INCV, C, LDC ) END IF END IF RETURN * * End of DLARF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlaset.f0000644002504400250440000000005012337331322016553 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlaset.f0000644002504400250440000001152412337331322017322 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLASET + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER LDA, M, N * DOUBLE PRECISION ALPHA, BETA * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLASET initializes an m-by-n matrix A to BETA on the diagonal and *> ALPHA on the offdiagonals. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies the part of the matrix A to be set. *> = 'U': Upper triangular part is set; the strictly lower *> triangular part of A is not changed. *> = 'L': Lower triangular part is set; the strictly upper *> triangular part of A is not changed. *> Otherwise: All of the matrix A is set. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION *> The constant to which the offdiagonal elements are to be set. *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION *> The constant to which the diagonal elements are to be set. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On exit, the leading m-by-n submatrix of A is set as follows: *> *> if UPLO = 'U', A(i,j) = ALPHA, 1<=i<=j-1, 1<=j<=n, *> if UPLO = 'L', A(i,j) = ALPHA, j+1<=i<=m, 1<=j<=n, *> otherwise, A(i,j) = ALPHA, 1<=i<=m, 1<=j<=n, i.ne.j, *> *> and, for all UPLO, A(i,i) = BETA, 1<=i<=min(m,n). *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER LDA, M, N DOUBLE PRECISION ALPHA, BETA * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, J * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Intrinsic Functions .. INTRINSIC MIN * .. * .. Executable Statements .. * IF( LSAME( UPLO, 'U' ) ) THEN * * Set the strictly upper triangular or trapezoidal part of the * array to ALPHA. * DO 20 J = 2, N DO 10 I = 1, MIN( J-1, M ) A( I, J ) = ALPHA 10 CONTINUE 20 CONTINUE * ELSE IF( LSAME( UPLO, 'L' ) ) THEN * * Set the strictly lower triangular or trapezoidal part of the * array to ALPHA. * DO 40 J = 1, MIN( M, N ) DO 30 I = J + 1, M A( I, J ) = ALPHA 30 CONTINUE 40 CONTINUE * ELSE * * Set the leading m-by-n submatrix to ALPHA. * DO 60 J = 1, N DO 50 I = 1, M A( I, J ) = ALPHA 50 CONTINUE 60 CONTINUE END IF * * Set the first min(M,N) diagonal elements to BETA. * DO 70 I = 1, MIN( M, N ) A( I, I ) = BETA 70 CONTINUE * RETURN * * End of DLASET * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgesv.f0000644002504400250440000000005012337331322016435 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgesv.f0000644002504400250440000001206112337331322017201 0ustar00dewhurstdewhurst00000000000000*> \brief ZGESV computes the solution to system of linear equations A * X = B for GE matrices (simple driver) * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGESV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. * INTEGER IPIV( * ) * COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGESV computes the solution to a complex system of linear equations *> A * X = B, *> where A is an N-by-N matrix and X and B are N-by-NRHS matrices. *> *> The LU decomposition with partial pivoting and row interchanges is *> used to factor A as *> A = P * L * U, *> where P is a permutation matrix, L is unit lower triangular, and U is *> upper triangular. The factored form of A is then used to solve the *> system of equations A * X = B. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The number of linear equations, i.e., the order of the *> matrix A. N >= 0. *> \endverbatim *> *> \param[in] NRHS *> \verbatim *> NRHS is INTEGER *> The number of right hand sides, i.e., the number of columns *> of the matrix B. NRHS >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the N-by-N coefficient matrix A. *> On exit, the factors L and U from the factorization *> A = P*L*U; the unit diagonal elements of L are not stored. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> The pivot indices that define the permutation matrix P; *> row i of the matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is COMPLEX*16 array, dimension (LDB,NRHS) *> On entry, the N-by-NRHS matrix of right hand side matrix B. *> On exit, if INFO = 0, the N-by-NRHS solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, U(i,i) is exactly zero. The factorization *> has been completed, but the factor U is exactly *> singular, so the solution could not be computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16GEsolve * * ===================================================================== SUBROUTINE ZGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. INTEGER IPIV( * ) COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. External Subroutines .. EXTERNAL XERBLA, ZGETRF, ZGETRS * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 IF( N.LT.0 ) THEN INFO = -1 ELSE IF( NRHS.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -7 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGESV ', -INFO ) RETURN END IF * * Compute the LU factorization of A. * CALL ZGETRF( N, N, A, LDA, IPIV, INFO ) IF( INFO.EQ.0 ) THEN * * Solve the system A*X = B, overwriting B with X. * CALL ZGETRS( 'No transpose', N, NRHS, A, LDA, IPIV, B, LDB, $ INFO ) END IF RETURN * * End of ZGESV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhegv.f0000644002504400250440000000005012337331322016422 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhegv.f0000644002504400250440000002311012337331322017163 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHEGST * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHEGV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHEGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, * LWORK, RWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, UPLO * INTEGER INFO, ITYPE, LDA, LDB, LWORK, N * .. * .. Array Arguments .. * DOUBLE PRECISION RWORK( * ), W( * ) * COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHEGV computes all the eigenvalues, and optionally, the eigenvectors *> of a complex generalized Hermitian-definite eigenproblem, of the form *> A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. *> Here A and B are assumed to be Hermitian and B is also *> positive definite. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> Specifies the problem type to be solved: *> = 1: A*x = (lambda)*B*x *> = 2: A*B*x = (lambda)*x *> = 3: B*A*x = (lambda)*x *> \endverbatim *> *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangles of A and B are stored; *> = 'L': Lower triangles of A and B are stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrices A and B. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA, N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of A contains the *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. *> *> On exit, if JOBZ = 'V', then if INFO = 0, A contains the *> matrix Z of eigenvectors. The eigenvectors are normalized *> as follows: *> if ITYPE = 1 or 2, Z**H*B*Z = I; *> if ITYPE = 3, Z**H*inv(B)*Z = I. *> If JOBZ = 'N', then on exit the upper triangle (if UPLO='U') *> or the lower triangle (if UPLO='L') of A, including the *> diagonal, is destroyed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is COMPLEX*16 array, dimension (LDB, N) *> On entry, the Hermitian positive definite matrix B. *> If UPLO = 'U', the leading N-by-N upper triangular part of B *> contains the upper triangular part of the matrix B. *> If UPLO = 'L', the leading N-by-N lower triangular part of B *> contains the lower triangular part of the matrix B. *> *> On exit, if INFO <= N, the part of B containing the matrix is *> overwritten by the triangular factor U or L from the Cholesky *> factorization B = U**H*U or B = L*L**H. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> If INFO = 0, the eigenvalues in ascending order. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,2*N-1). *> For optimal efficiency, LWORK >= (NB+1)*N, *> where NB is the blocksize for ZHETRD returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (max(1, 3*N-2)) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: ZPOTRF or ZHEEV returned an error code: *> <= N: if INFO = i, ZHEEV failed to converge; *> i off-diagonal elements of an intermediate *> tridiagonal form did not converge to zero; *> > N: if INFO = N + i, for 1 <= i <= N, then the leading *> minor of order i of B is not positive definite. *> The factorization of B could not be completed and *> no eigenvalues or eigenvectors were computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16HEeigen * * ===================================================================== SUBROUTINE ZHEGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, $ LWORK, RWORK, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, UPLO INTEGER INFO, ITYPE, LDA, LDB, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION RWORK( * ), W( * ) COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LQUERY, UPPER, WANTZ CHARACTER TRANS INTEGER LWKOPT, NB, NEIG * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZHEEV, ZHEGST, ZPOTRF, ZTRMM, ZTRSM * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * WANTZ = LSAME( JOBZ, 'V' ) UPPER = LSAME( UPLO, 'U' ) LQUERY = ( LWORK.EQ.-1 ) * INFO = 0 IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -2 ELSE IF( .NOT.( UPPER .OR. LSAME( UPLO, 'L' ) ) ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -6 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -8 END IF * IF( INFO.EQ.0 ) THEN NB = ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) LWKOPT = MAX( 1, ( NB + 1 )*N ) WORK( 1 ) = LWKOPT * IF( LWORK.LT.MAX( 1, 2*N - 1 ) .AND. .NOT.LQUERY ) THEN INFO = -11 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHEGV ', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Form a Cholesky factorization of B. * CALL ZPOTRF( UPLO, N, B, LDB, INFO ) IF( INFO.NE.0 ) THEN INFO = N + INFO RETURN END IF * * Transform problem to standard eigenvalue problem and solve. * CALL ZHEGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) CALL ZHEEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO ) * IF( WANTZ ) THEN * * Backtransform eigenvectors to the original problem. * NEIG = N IF( INFO.GT.0 ) $ NEIG = INFO - 1 IF( ITYPE.EQ.1 .OR. ITYPE.EQ.2 ) THEN * * For A*x=(lambda)*B*x and A*B*x=(lambda)*x; * backtransform eigenvectors: x = inv(L)**H *y or inv(U)*y * IF( UPPER ) THEN TRANS = 'N' ELSE TRANS = 'C' END IF * CALL ZTRSM( 'Left', UPLO, TRANS, 'Non-unit', N, NEIG, ONE, $ B, LDB, A, LDA ) * ELSE IF( ITYPE.EQ.3 ) THEN * * For B*A*x=(lambda)*x; * backtransform eigenvectors: x = L*y or U**H *y * IF( UPPER ) THEN TRANS = 'C' ELSE TRANS = 'N' END IF * CALL ZTRMM( 'Left', UPLO, TRANS, 'Non-unit', N, NEIG, ONE, $ B, LDB, A, LDA ) END IF END IF * WORK( 1 ) = LWKOPT * RETURN * * End of ZHEGV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlaswp.f0000644002504400250440000000005012337331322016617 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlaswp.f0000644002504400250440000001167412337331322017374 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLASWP performs a series of row interchanges on a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLASWP + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLASWP( N, A, LDA, K1, K2, IPIV, INCX ) * * .. Scalar Arguments .. * INTEGER INCX, K1, K2, LDA, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLASWP performs a series of row interchanges on the matrix A. *> One row interchange is initiated for each of rows K1 through K2 of A. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the matrix of column dimension N to which the row *> interchanges will be applied. *> On exit, the permuted matrix. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> \endverbatim *> *> \param[in] K1 *> \verbatim *> K1 is INTEGER *> The first element of IPIV for which a row interchange will *> be done. *> \endverbatim *> *> \param[in] K2 *> \verbatim *> K2 is INTEGER *> The last element of IPIV for which a row interchange will *> be done. *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (K2*abs(INCX)) *> The vector of pivot indices. Only the elements in positions *> K1 through K2 of IPIV are accessed. *> IPIV(K) = L implies rows K and L are to be interchanged. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The increment between successive values of IPIV. If IPIV *> is negative, the pivots are applied in reverse order. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> Modified by *> R. C. Whaley, Computer Science Dept., Univ. of Tenn., Knoxville, USA *> \endverbatim *> * ===================================================================== SUBROUTINE ZLASWP( N, A, LDA, K1, K2, IPIV, INCX ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INCX, K1, K2, LDA, N * .. * .. Array Arguments .. INTEGER IPIV( * ) COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, I1, I2, INC, IP, IX, IX0, J, K, N32 COMPLEX*16 TEMP * .. * .. Executable Statements .. * * Interchange row I with row IPIV(I) for each of rows K1 through K2. * IF( INCX.GT.0 ) THEN IX0 = K1 I1 = K1 I2 = K2 INC = 1 ELSE IF( INCX.LT.0 ) THEN IX0 = 1 + ( 1-K2 )*INCX I1 = K2 I2 = K1 INC = -1 ELSE RETURN END IF * N32 = ( N / 32 )*32 IF( N32.NE.0 ) THEN DO 30 J = 1, N32, 32 IX = IX0 DO 20 I = I1, I2, INC IP = IPIV( IX ) IF( IP.NE.I ) THEN DO 10 K = J, J + 31 TEMP = A( I, K ) A( I, K ) = A( IP, K ) A( IP, K ) = TEMP 10 CONTINUE END IF IX = IX + INCX 20 CONTINUE 30 CONTINUE END IF IF( N32.NE.N ) THEN N32 = N32 + 1 IX = IX0 DO 50 I = I1, I2, INC IP = IPIV( IX ) IF( IP.NE.I ) THEN DO 40 K = N32, N TEMP = A( I, K ) A( I, K ) = A( IP, K ) A( IP, K ) = TEMP 40 CONTINUE END IF IX = IX + INCX 50 CONTINUE END IF * RETURN * * End of ZLASWP * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlarft.f0000644002504400250440000000005012337331322016601 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlarft.f0000644002504400250440000002443512337331322017355 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLARFT forms the triangular factor T of a block reflector H = I - vtvH * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLARFT + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT ) * * .. Scalar Arguments .. * CHARACTER DIRECT, STOREV * INTEGER K, LDT, LDV, N * .. * .. Array Arguments .. * COMPLEX*16 T( LDT, * ), TAU( * ), V( LDV, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLARFT forms the triangular factor T of a complex block reflector H *> of order n, which is defined as a product of k elementary reflectors. *> *> If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular; *> *> If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular. *> *> If STOREV = 'C', the vector which defines the elementary reflector *> H(i) is stored in the i-th column of the array V, and *> *> H = I - V * T * V**H *> *> If STOREV = 'R', the vector which defines the elementary reflector *> H(i) is stored in the i-th row of the array V, and *> *> H = I - V**H * T * V *> \endverbatim * * Arguments: * ========== * *> \param[in] DIRECT *> \verbatim *> DIRECT is CHARACTER*1 *> Specifies the order in which the elementary reflectors are *> multiplied to form the block reflector: *> = 'F': H = H(1) H(2) . . . H(k) (Forward) *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> *> \param[in] STOREV *> \verbatim *> STOREV is CHARACTER*1 *> Specifies how the vectors which define the elementary *> reflectors are stored (see also Further Details): *> = 'C': columnwise *> = 'R': rowwise *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the block reflector H. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. *> \endverbatim *> *> \param[in] V *> \verbatim *> V is COMPLEX*16 array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. *> \endverbatim *> *> \param[in] LDV *> \verbatim *> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). *> \endverbatim *> *> \param[out] T *> \verbatim *> T is COMPLEX*16 array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and *> k = 3. The elements equal to 1 are not stored. *> *> DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R': *> *> V = ( 1 ) V = ( 1 v1 v1 v1 v1 ) *> ( v1 1 ) ( 1 v2 v2 v2 ) *> ( v1 v2 1 ) ( 1 v3 v3 ) *> ( v1 v2 v3 ) *> ( v1 v2 v3 ) *> *> DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R': *> *> V = ( v1 v2 v3 ) V = ( v1 v1 1 ) *> ( v1 v2 v3 ) ( v2 v2 v2 1 ) *> ( 1 v2 v3 ) ( v3 v3 v3 v3 1 ) *> ( 1 v3 ) *> ( 1 ) *> \endverbatim *> * ===================================================================== SUBROUTINE ZLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIRECT, STOREV INTEGER K, LDT, LDV, N * .. * .. Array Arguments .. COMPLEX*16 T( LDT, * ), TAU( * ), V( LDV, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE, ZERO PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ), $ ZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. INTEGER I, J, PREVLASTV, LASTV * .. * .. External Subroutines .. EXTERNAL ZGEMV, ZLACGV, ZTRMV * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Executable Statements .. * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( LSAME( DIRECT, 'F' ) ) THEN PREVLASTV = N DO I = 1, K PREVLASTV = MAX( PREVLASTV, I ) IF( TAU( I ).EQ.ZERO ) THEN * * H(i) = I * DO J = 1, I T( J, I ) = ZERO END DO ELSE * * general case * IF( LSAME( STOREV, 'C' ) ) THEN * Skip any trailing zeros. DO LASTV = N, I+1, -1 IF( V( LASTV, I ).NE.ZERO ) EXIT END DO DO J = 1, I-1 T( J, I ) = -TAU( I ) * CONJG( V( I , J ) ) END DO J = MIN( LASTV, PREVLASTV ) * * T(1:i-1,i) := - tau(i) * V(i:j,1:i-1)**H * V(i:j,i) * CALL ZGEMV( 'Conjugate transpose', J-I, I-1, $ -TAU( I ), V( I+1, 1 ), LDV, $ V( I+1, I ), 1, ONE, T( 1, I ), 1 ) ELSE * Skip any trailing zeros. DO LASTV = N, I+1, -1 IF( V( I, LASTV ).NE.ZERO ) EXIT END DO DO J = 1, I-1 T( J, I ) = -TAU( I ) * V( J , I ) END DO J = MIN( LASTV, PREVLASTV ) * * T(1:i-1,i) := - tau(i) * V(1:i-1,i:j) * V(i,i:j)**H * CALL ZGEMM( 'N', 'C', I-1, 1, J-I, -TAU( I ), $ V( 1, I+1 ), LDV, V( I, I+1 ), LDV, $ ONE, T( 1, I ), LDT ) END IF * * T(1:i-1,i) := T(1:i-1,1:i-1) * T(1:i-1,i) * CALL ZTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, T, $ LDT, T( 1, I ), 1 ) T( I, I ) = TAU( I ) IF( I.GT.1 ) THEN PREVLASTV = MAX( PREVLASTV, LASTV ) ELSE PREVLASTV = LASTV END IF END IF END DO ELSE PREVLASTV = 1 DO I = K, 1, -1 IF( TAU( I ).EQ.ZERO ) THEN * * H(i) = I * DO J = I, K T( J, I ) = ZERO END DO ELSE * * general case * IF( I.LT.K ) THEN IF( LSAME( STOREV, 'C' ) ) THEN * Skip any leading zeros. DO LASTV = 1, I-1 IF( V( LASTV, I ).NE.ZERO ) EXIT END DO DO J = I+1, K T( J, I ) = -TAU( I ) * CONJG( V( N-K+I , J ) ) END DO J = MAX( LASTV, PREVLASTV ) * * T(i+1:k,i) = -tau(i) * V(j:n-k+i,i+1:k)**H * V(j:n-k+i,i) * CALL ZGEMV( 'Conjugate transpose', N-K+I-J, K-I, $ -TAU( I ), V( J, I+1 ), LDV, V( J, I ), $ 1, ONE, T( I+1, I ), 1 ) ELSE * Skip any leading zeros. DO LASTV = 1, I-1 IF( V( I, LASTV ).NE.ZERO ) EXIT END DO DO J = I+1, K T( J, I ) = -TAU( I ) * V( J, N-K+I ) END DO J = MAX( LASTV, PREVLASTV ) * * T(i+1:k,i) = -tau(i) * V(i+1:k,j:n-k+i) * V(i,j:n-k+i)**H * CALL ZGEMM( 'N', 'C', K-I, 1, N-K+I-J, -TAU( I ), $ V( I+1, J ), LDV, V( I, J ), LDV, $ ONE, T( I+1, I ), LDT ) END IF * * T(i+1:k,i) := T(i+1:k,i+1:k) * T(i+1:k,i) * CALL ZTRMV( 'Lower', 'No transpose', 'Non-unit', K-I, $ T( I+1, I+1 ), LDT, T( I+1, I ), 1 ) IF( I.GT.1 ) THEN PREVLASTV = MIN( PREVLASTV, LASTV ) ELSE PREVLASTV = LASTV END IF END IF T( I, I ) = TAU( I ) END IF END DO END IF RETURN * * End of ZLARFT * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhpevx.f0000644002504400250440000000005012337331322016623 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhpevx.f0000644002504400250440000003715312337331322017400 0ustar00dewhurstdewhurst00000000000000*> \brief ZHPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHPEVX + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHPEVX( JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, * ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, * IFAIL, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, RANGE, UPLO * INTEGER IL, INFO, IU, LDZ, M, N * DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. * INTEGER IFAIL( * ), IWORK( * ) * DOUBLE PRECISION RWORK( * ), W( * ) * COMPLEX*16 AP( * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHPEVX computes selected eigenvalues and, optionally, eigenvectors *> of a complex Hermitian matrix A in packed storage. *> Eigenvalues/vectors can be selected by specifying either a range of *> values or a range of indices for the desired eigenvalues. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] RANGE *> \verbatim *> RANGE is CHARACTER*1 *> = 'A': all eigenvalues will be found; *> = 'V': all eigenvalues in the half-open interval (VL,VU] *> will be found; *> = 'I': the IL-th through IU-th eigenvalues will be found. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] AP *> \verbatim *> AP is COMPLEX*16 array, dimension (N*(N+1)/2) *> On entry, the upper or lower triangle of the Hermitian matrix *> A, packed columnwise in a linear array. The j-th column of A *> is stored in the array AP as follows: *> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; *> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. *> *> On exit, AP is overwritten by values generated during the *> reduction to tridiagonal form. If UPLO = 'U', the diagonal *> and first superdiagonal of the tridiagonal matrix T overwrite *> the corresponding elements of A, and if UPLO = 'L', the *> diagonal and first subdiagonal of T overwrite the *> corresponding elements of A. *> \endverbatim *> *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION *> \endverbatim *> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER *> \endverbatim *> *> \param[in] IU *> \verbatim *> IU is INTEGER *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim *> *> \param[in] ABSTOL *> \verbatim *> ABSTOL is DOUBLE PRECISION *> The absolute error tolerance for the eigenvalues. *> An approximate eigenvalue is accepted as converged *> when it is determined to lie in an interval [a,b] *> of width less than or equal to *> *> ABSTOL + EPS * max( |a|,|b| ) , *> *> where EPS is the machine precision. If ABSTOL is less than *> or equal to zero, then EPS*|T| will be used in its place, *> where |T| is the 1-norm of the tridiagonal matrix obtained *> by reducing AP to tridiagonal form. *> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*DLAMCH('S'), not zero. *> If this routine returns with INFO>0, indicating that some *> eigenvectors did not converge, try setting ABSTOL to *> 2*DLAMCH('S'). *> *> See "Computing Small Singular Values of Bidiagonal Matrices *> with Guaranteed High Relative Accuracy," by Demmel and *> Kahan, LAPACK Working Note #3. *> \endverbatim *> *> \param[out] M *> \verbatim *> M is INTEGER *> The total number of eigenvalues found. 0 <= M <= N. *> If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> If INFO = 0, the selected eigenvalues in ascending order. *> \endverbatim *> *> \param[out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ, max(1,M)) *> If JOBZ = 'V', then if INFO = 0, the first M columns of Z *> contain the orthonormal eigenvectors of the matrix A *> corresponding to the selected eigenvalues, with the i-th *> column of Z holding the eigenvector associated with W(i). *> If an eigenvector fails to converge, then that column of Z *> contains the latest approximation to the eigenvector, and *> the index of the eigenvector is returned in IFAIL. *> If JOBZ = 'N', then Z is not referenced. *> Note: the user must ensure that at least max(1,M) columns are *> supplied in the array Z; if RANGE = 'V', the exact value of M *> is not known in advance and an upper bound must be used. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= 1, and if *> JOBZ = 'V', LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (2*N) *> \endverbatim *> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (7*N) *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (5*N) *> \endverbatim *> *> \param[out] IFAIL *> \verbatim *> IFAIL is INTEGER array, dimension (N) *> If JOBZ = 'V', then if INFO = 0, the first M elements of *> IFAIL are zero. If INFO > 0, then IFAIL contains the *> indices of the eigenvectors that failed to converge. *> If JOBZ = 'N', then IFAIL is not referenced. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, then i eigenvectors failed to converge. *> Their indices are stored in array IFAIL. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHEReigen * * ===================================================================== SUBROUTINE ZHPEVX( JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, $ ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, $ IFAIL, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, RANGE, UPLO INTEGER IL, INFO, IU, LDZ, M, N DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. INTEGER IFAIL( * ), IWORK( * ) DOUBLE PRECISION RWORK( * ), W( * ) COMPLEX*16 AP( * ), WORK( * ), Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) COMPLEX*16 CONE PARAMETER ( CONE = ( 1.0D0, 0.0D0 ) ) * .. * .. Local Scalars .. LOGICAL ALLEIG, INDEIG, TEST, VALEIG, WANTZ CHARACTER ORDER INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL, $ INDISP, INDIWK, INDRWK, INDTAU, INDWRK, ISCALE, $ ITMP1, J, JJ, NSPLIT DOUBLE PRECISION ABSTLL, ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, $ SIGMA, SMLNUM, TMP1, VLL, VUU * .. * .. External Functions .. LOGICAL LSAME DOUBLE PRECISION DLAMCH, ZLANHP EXTERNAL LSAME, DLAMCH, ZLANHP * .. * .. External Subroutines .. EXTERNAL DCOPY, DSCAL, DSTEBZ, DSTERF, XERBLA, ZDSCAL, $ ZHPTRD, ZSTEIN, ZSTEQR, ZSWAP, ZUPGTR, ZUPMTR * .. * .. Intrinsic Functions .. INTRINSIC DBLE, MAX, MIN, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * WANTZ = LSAME( JOBZ, 'V' ) ALLEIG = LSAME( RANGE, 'A' ) VALEIG = LSAME( RANGE, 'V' ) INDEIG = LSAME( RANGE, 'I' ) * INFO = 0 IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -1 ELSE IF( .NOT.( ALLEIG .OR. VALEIG .OR. INDEIG ) ) THEN INFO = -2 ELSE IF( .NOT.( LSAME( UPLO, 'L' ) .OR. LSAME( UPLO, 'U' ) ) ) $ THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( VALEIG ) THEN IF( N.GT.0 .AND. VU.LE.VL ) $ INFO = -7 ELSE IF( INDEIG ) THEN IF( IL.LT.1 .OR. IL.GT.MAX( 1, N ) ) THEN INFO = -8 ELSE IF( IU.LT.MIN( N, IL ) .OR. IU.GT.N ) THEN INFO = -9 END IF END IF END IF IF( INFO.EQ.0 ) THEN IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.N ) ) $ INFO = -14 END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHPEVX', -INFO ) RETURN END IF * * Quick return if possible * M = 0 IF( N.EQ.0 ) $ RETURN * IF( N.EQ.1 ) THEN IF( ALLEIG .OR. INDEIG ) THEN M = 1 W( 1 ) = AP( 1 ) ELSE IF( VL.LT.DBLE( AP( 1 ) ) .AND. VU.GE.DBLE( AP( 1 ) ) ) THEN M = 1 W( 1 ) = AP( 1 ) END IF END IF IF( WANTZ ) $ Z( 1, 1 ) = CONE RETURN END IF * * Get machine constants. * SAFMIN = DLAMCH( 'Safe minimum' ) EPS = DLAMCH( 'Precision' ) SMLNUM = SAFMIN / EPS BIGNUM = ONE / SMLNUM RMIN = SQRT( SMLNUM ) RMAX = MIN( SQRT( BIGNUM ), ONE / SQRT( SQRT( SAFMIN ) ) ) * * Scale matrix to allowable range, if necessary. * ISCALE = 0 ABSTLL = ABSTOL IF( VALEIG ) THEN VLL = VL VUU = VU ELSE VLL = ZERO VUU = ZERO END IF ANRM = ZLANHP( 'M', UPLO, N, AP, RWORK ) IF( ANRM.GT.ZERO .AND. ANRM.LT.RMIN ) THEN ISCALE = 1 SIGMA = RMIN / ANRM ELSE IF( ANRM.GT.RMAX ) THEN ISCALE = 1 SIGMA = RMAX / ANRM END IF IF( ISCALE.EQ.1 ) THEN CALL ZDSCAL( ( N*( N+1 ) ) / 2, SIGMA, AP, 1 ) IF( ABSTOL.GT.0 ) $ ABSTLL = ABSTOL*SIGMA IF( VALEIG ) THEN VLL = VL*SIGMA VUU = VU*SIGMA END IF END IF * * Call ZHPTRD to reduce Hermitian packed matrix to tridiagonal form. * INDD = 1 INDE = INDD + N INDRWK = INDE + N INDTAU = 1 INDWRK = INDTAU + N CALL ZHPTRD( UPLO, N, AP, RWORK( INDD ), RWORK( INDE ), $ WORK( INDTAU ), IINFO ) * * If all eigenvalues are desired and ABSTOL is less than or equal * to zero, then call DSTERF or ZUPGTR and ZSTEQR. If this fails * for some eigenvalue, then try DSTEBZ. * TEST = .FALSE. IF (INDEIG) THEN IF (IL.EQ.1 .AND. IU.EQ.N) THEN TEST = .TRUE. END IF END IF IF ((ALLEIG .OR. TEST) .AND. (ABSTOL.LE.ZERO)) THEN CALL DCOPY( N, RWORK( INDD ), 1, W, 1 ) INDEE = INDRWK + 2*N IF( .NOT.WANTZ ) THEN CALL DCOPY( N-1, RWORK( INDE ), 1, RWORK( INDEE ), 1 ) CALL DSTERF( N, W, RWORK( INDEE ), INFO ) ELSE CALL ZUPGTR( UPLO, N, AP, WORK( INDTAU ), Z, LDZ, $ WORK( INDWRK ), IINFO ) CALL DCOPY( N-1, RWORK( INDE ), 1, RWORK( INDEE ), 1 ) CALL ZSTEQR( JOBZ, N, W, RWORK( INDEE ), Z, LDZ, $ RWORK( INDRWK ), INFO ) IF( INFO.EQ.0 ) THEN DO 10 I = 1, N IFAIL( I ) = 0 10 CONTINUE END IF END IF IF( INFO.EQ.0 ) THEN M = N GO TO 20 END IF INFO = 0 END IF * * Otherwise, call DSTEBZ and, if eigenvectors are desired, ZSTEIN. * IF( WANTZ ) THEN ORDER = 'B' ELSE ORDER = 'E' END IF INDIBL = 1 INDISP = INDIBL + N INDIWK = INDISP + N CALL DSTEBZ( RANGE, ORDER, N, VLL, VUU, IL, IU, ABSTLL, $ RWORK( INDD ), RWORK( INDE ), M, NSPLIT, W, $ IWORK( INDIBL ), IWORK( INDISP ), RWORK( INDRWK ), $ IWORK( INDIWK ), INFO ) * IF( WANTZ ) THEN CALL ZSTEIN( N, RWORK( INDD ), RWORK( INDE ), M, W, $ IWORK( INDIBL ), IWORK( INDISP ), Z, LDZ, $ RWORK( INDRWK ), IWORK( INDIWK ), IFAIL, INFO ) * * Apply unitary matrix used in reduction to tridiagonal * form to eigenvectors returned by ZSTEIN. * INDWRK = INDTAU + N CALL ZUPMTR( 'L', UPLO, 'N', N, M, AP, WORK( INDTAU ), Z, LDZ, $ WORK( INDWRK ), IINFO ) END IF * * If matrix was scaled, then rescale eigenvalues appropriately. * 20 CONTINUE IF( ISCALE.EQ.1 ) THEN IF( INFO.EQ.0 ) THEN IMAX = M ELSE IMAX = INFO - 1 END IF CALL DSCAL( IMAX, ONE / SIGMA, W, 1 ) END IF * * If eigenvalues are not in order, then sort them, along with * eigenvectors. * IF( WANTZ ) THEN DO 40 J = 1, M - 1 I = 0 TMP1 = W( J ) DO 30 JJ = J + 1, M IF( W( JJ ).LT.TMP1 ) THEN I = JJ TMP1 = W( JJ ) END IF 30 CONTINUE * IF( I.NE.0 ) THEN ITMP1 = IWORK( INDIBL+I-1 ) W( I ) = W( J ) IWORK( INDIBL+I-1 ) = IWORK( INDIBL+J-1 ) W( J ) = TMP1 IWORK( INDIBL+J-1 ) = ITMP1 CALL ZSWAP( N, Z( 1, I ), 1, Z( 1, J ), 1 ) IF( INFO.NE.0 ) THEN ITMP1 = IFAIL( I ) IFAIL( I ) = IFAIL( J ) IFAIL( J ) = ITMP1 END IF END IF 40 CONTINUE END IF * RETURN * * End of ZHPEVX * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/iparmq.f0000644002504400250440000000005012337331322016570 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/iparmq.f0000644002504400250440000002644212337331322017344 0ustar00dewhurstdewhurst00000000000000*> \brief \b IPARMQ * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download IPARMQ + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * INTEGER FUNCTION IPARMQ( ISPEC, NAME, OPTS, N, ILO, IHI, LWORK ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, ISPEC, LWORK, N * CHARACTER NAME*( * ), OPTS*( * ) * * *> \par Purpose: * ============= *> *> \verbatim *> *> This program sets problem and machine dependent parameters *> useful for xHSEQR and its subroutines. It is called whenever *> ILAENV is called with 12 <= ISPEC <= 16 *> \endverbatim * * Arguments: * ========== * *> \param[in] ISPEC *> \verbatim *> ISPEC is integer scalar *> ISPEC specifies which tunable parameter IPARMQ should *> return. *> *> ISPEC=12: (INMIN) Matrices of order nmin or less *> are sent directly to xLAHQR, the implicit *> double shift QR algorithm. NMIN must be *> at least 11. *> *> ISPEC=13: (INWIN) Size of the deflation window. *> This is best set greater than or equal to *> the number of simultaneous shifts NS. *> Larger matrices benefit from larger deflation *> windows. *> *> ISPEC=14: (INIBL) Determines when to stop nibbling and *> invest in an (expensive) multi-shift QR sweep. *> If the aggressive early deflation subroutine *> finds LD converged eigenvalues from an order *> NW deflation window and LD.GT.(NW*NIBBLE)/100, *> then the next QR sweep is skipped and early *> deflation is applied immediately to the *> remaining active diagonal block. Setting *> IPARMQ(ISPEC=14) = 0 causes TTQRE to skip a *> multi-shift QR sweep whenever early deflation *> finds a converged eigenvalue. Setting *> IPARMQ(ISPEC=14) greater than or equal to 100 *> prevents TTQRE from skipping a multi-shift *> QR sweep. *> *> ISPEC=15: (NSHFTS) The number of simultaneous shifts in *> a multi-shift QR iteration. *> *> ISPEC=16: (IACC22) IPARMQ is set to 0, 1 or 2 with the *> following meanings. *> 0: During the multi-shift QR sweep, *> xLAQR5 does not accumulate reflections and *> does not use matrix-matrix multiply to *> update the far-from-diagonal matrix *> entries. *> 1: During the multi-shift QR sweep, *> xLAQR5 and/or xLAQRaccumulates reflections and uses *> matrix-matrix multiply to update the *> far-from-diagonal matrix entries. *> 2: During the multi-shift QR sweep. *> xLAQR5 accumulates reflections and takes *> advantage of 2-by-2 block structure during *> matrix-matrix multiplies. *> (If xTRMM is slower than xGEMM, then *> IPARMQ(ISPEC=16)=1 may be more efficient than *> IPARMQ(ISPEC=16)=2 despite the greater level of *> arithmetic work implied by the latter choice.) *> \endverbatim *> *> \param[in] NAME *> \verbatim *> NAME is character string *> Name of the calling subroutine *> \endverbatim *> *> \param[in] OPTS *> \verbatim *> OPTS is character string *> This is a concatenation of the string arguments to *> TTQRE. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is integer scalar *> N is the order of the Hessenberg matrix H. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> It is assumed that H is already upper triangular *> in rows and columns 1:ILO-1 and IHI+1:N. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is integer scalar *> The amount of workspace available. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup auxOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> Little is known about how best to choose these parameters. *> It is possible to use different values of the parameters *> for each of CHSEQR, DHSEQR, SHSEQR and ZHSEQR. *> *> It is probably best to choose different parameters for *> different matrices and different parameters at different *> times during the iteration, but this has not been *> implemented --- yet. *> *> *> The best choices of most of the parameters depend *> in an ill-understood way on the relative execution *> rate of xLAQR3 and xLAQR5 and on the nature of each *> particular eigenvalue problem. Experiment may be the *> only practical way to determine which choices are most *> effective. *> *> Following is a list of default values supplied by IPARMQ. *> These defaults may be adjusted in order to attain better *> performance in any particular computational environment. *> *> IPARMQ(ISPEC=12) The xLAHQR vs xLAQR0 crossover point. *> Default: 75. (Must be at least 11.) *> *> IPARMQ(ISPEC=13) Recommended deflation window size. *> This depends on ILO, IHI and NS, the *> number of simultaneous shifts returned *> by IPARMQ(ISPEC=15). The default for *> (IHI-ILO+1).LE.500 is NS. The default *> for (IHI-ILO+1).GT.500 is 3*NS/2. *> *> IPARMQ(ISPEC=14) Nibble crossover point. Default: 14. *> *> IPARMQ(ISPEC=15) Number of simultaneous shifts, NS. *> a multi-shift QR iteration. *> *> If IHI-ILO+1 is ... *> *> greater than ...but less ... the *> or equal to ... than default is *> *> 0 30 NS = 2+ *> 30 60 NS = 4+ *> 60 150 NS = 10 *> 150 590 NS = ** *> 590 3000 NS = 64 *> 3000 6000 NS = 128 *> 6000 infinity NS = 256 *> *> (+) By default matrices of this order are *> passed to the implicit double shift routine *> xLAHQR. See IPARMQ(ISPEC=12) above. These *> values of NS are used only in case of a rare *> xLAHQR failure. *> *> (**) The asterisks (**) indicate an ad-hoc *> function increasing from 10 to 64. *> *> IPARMQ(ISPEC=16) Select structured matrix multiply. *> (See ISPEC=16 above for details.) *> Default: 3. *> \endverbatim *> * ===================================================================== INTEGER FUNCTION IPARMQ( ISPEC, NAME, OPTS, N, ILO, IHI, LWORK ) * * -- LAPACK auxiliary routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER IHI, ILO, ISPEC, LWORK, N CHARACTER NAME*( * ), OPTS*( * ) * * ================================================================ * .. Parameters .. INTEGER INMIN, INWIN, INIBL, ISHFTS, IACC22 PARAMETER ( INMIN = 12, INWIN = 13, INIBL = 14, $ ISHFTS = 15, IACC22 = 16 ) INTEGER NMIN, K22MIN, KACMIN, NIBBLE, KNWSWP PARAMETER ( NMIN = 75, K22MIN = 14, KACMIN = 14, $ NIBBLE = 14, KNWSWP = 500 ) REAL TWO PARAMETER ( TWO = 2.0 ) * .. * .. Local Scalars .. INTEGER NH, NS * .. * .. Intrinsic Functions .. INTRINSIC LOG, MAX, MOD, NINT, REAL * .. * .. Executable Statements .. IF( ( ISPEC.EQ.ISHFTS ) .OR. ( ISPEC.EQ.INWIN ) .OR. $ ( ISPEC.EQ.IACC22 ) ) THEN * * ==== Set the number simultaneous shifts ==== * NH = IHI - ILO + 1 NS = 2 IF( NH.GE.30 ) $ NS = 4 IF( NH.GE.60 ) $ NS = 10 IF( NH.GE.150 ) $ NS = MAX( 10, NH / NINT( LOG( REAL( NH ) ) / LOG( TWO ) ) ) IF( NH.GE.590 ) $ NS = 64 IF( NH.GE.3000 ) $ NS = 128 IF( NH.GE.6000 ) $ NS = 256 NS = MAX( 2, NS-MOD( NS, 2 ) ) END IF * IF( ISPEC.EQ.INMIN ) THEN * * * ===== Matrices of order smaller than NMIN get sent * . to xLAHQR, the classic double shift algorithm. * . This must be at least 11. ==== * IPARMQ = NMIN * ELSE IF( ISPEC.EQ.INIBL ) THEN * * ==== INIBL: skip a multi-shift qr iteration and * . whenever aggressive early deflation finds * . at least (NIBBLE*(window size)/100) deflations. ==== * IPARMQ = NIBBLE * ELSE IF( ISPEC.EQ.ISHFTS ) THEN * * ==== NSHFTS: The number of simultaneous shifts ===== * IPARMQ = NS * ELSE IF( ISPEC.EQ.INWIN ) THEN * * ==== NW: deflation window size. ==== * IF( NH.LE.KNWSWP ) THEN IPARMQ = NS ELSE IPARMQ = 3*NS / 2 END IF * ELSE IF( ISPEC.EQ.IACC22 ) THEN * * ==== IACC22: Whether to accumulate reflections * . before updating the far-from-diagonal elements * . and whether to use 2-by-2 block structure while * . doing it. A small amount of work could be saved * . by making this choice dependent also upon the * . NH=IHI-ILO+1. * IPARMQ = 0 IF( NS.GE.KACMIN ) $ IPARMQ = 1 IF( NS.GE.K22MIN ) $ IPARMQ = 2 * ELSE * ===== invalid value of ispec ===== IPARMQ = -1 * END IF * * ==== End of IPARMQ ==== * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhegvx.f0000644002504400250440000000005012337331322016612 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhegvx.f0000644002504400250440000003540212337331322017362 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHEGST * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHEGVX + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHEGVX( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, * VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, * LWORK, RWORK, IWORK, IFAIL, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, RANGE, UPLO * INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N * DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. * INTEGER IFAIL( * ), IWORK( * ) * DOUBLE PRECISION RWORK( * ), W( * ) * COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * ), * $ Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHEGVX computes selected eigenvalues, and optionally, eigenvectors *> of a complex generalized Hermitian-definite eigenproblem, of the form *> A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A and *> B are assumed to be Hermitian and B is also positive definite. *> Eigenvalues and eigenvectors can be selected by specifying either a *> range of values or a range of indices for the desired eigenvalues. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> Specifies the problem type to be solved: *> = 1: A*x = (lambda)*B*x *> = 2: A*B*x = (lambda)*x *> = 3: B*A*x = (lambda)*x *> \endverbatim *> *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] RANGE *> \verbatim *> RANGE is CHARACTER*1 *> = 'A': all eigenvalues will be found. *> = 'V': all eigenvalues in the half-open interval (VL,VU] *> will be found. *> = 'I': the IL-th through IU-th eigenvalues will be found. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangles of A and B are stored; *> = 'L': Lower triangles of A and B are stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrices A and B. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA, N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of A contains the *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. *> *> On exit, the lower triangle (if UPLO='L') or the upper *> triangle (if UPLO='U') of A, including the diagonal, is *> destroyed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is COMPLEX*16 array, dimension (LDB, N) *> On entry, the Hermitian matrix B. If UPLO = 'U', the *> leading N-by-N upper triangular part of B contains the *> upper triangular part of the matrix B. If UPLO = 'L', *> the leading N-by-N lower triangular part of B contains *> the lower triangular part of the matrix B. *> *> On exit, if INFO <= N, the part of B containing the matrix is *> overwritten by the triangular factor U or L from the Cholesky *> factorization B = U**H*U or B = L*L**H. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION *> \endverbatim *> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION *> *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER *> \endverbatim *> *> \param[in] IU *> \verbatim *> IU is INTEGER *> *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim *> *> \param[in] ABSTOL *> \verbatim *> ABSTOL is DOUBLE PRECISION *> The absolute error tolerance for the eigenvalues. *> An approximate eigenvalue is accepted as converged *> when it is determined to lie in an interval [a,b] *> of width less than or equal to *> *> ABSTOL + EPS * max( |a|,|b| ) , *> *> where EPS is the machine precision. If ABSTOL is less than *> or equal to zero, then EPS*|T| will be used in its place, *> where |T| is the 1-norm of the tridiagonal matrix obtained *> by reducing C to tridiagonal form, where C is the symmetric *> matrix of the standard symmetric problem to which the *> generalized problem is transformed. *> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*DLAMCH('S'), not zero. *> If this routine returns with INFO>0, indicating that some *> eigenvectors did not converge, try setting ABSTOL to *> 2*DLAMCH('S'). *> \endverbatim *> *> \param[out] M *> \verbatim *> M is INTEGER *> The total number of eigenvalues found. 0 <= M <= N. *> If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> The first M elements contain the selected *> eigenvalues in ascending order. *> \endverbatim *> *> \param[out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ, max(1,M)) *> If JOBZ = 'N', then Z is not referenced. *> If JOBZ = 'V', then if INFO = 0, the first M columns of Z *> contain the orthonormal eigenvectors of the matrix A *> corresponding to the selected eigenvalues, with the i-th *> column of Z holding the eigenvector associated with W(i). *> The eigenvectors are normalized as follows: *> if ITYPE = 1 or 2, Z**T*B*Z = I; *> if ITYPE = 3, Z**T*inv(B)*Z = I. *> *> If an eigenvector fails to converge, then that column of Z *> contains the latest approximation to the eigenvector, and the *> index of the eigenvector is returned in IFAIL. *> Note: the user must ensure that at least max(1,M) columns are *> supplied in the array Z; if RANGE = 'V', the exact value of M *> is not known in advance and an upper bound must be used. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= 1, and if *> JOBZ = 'V', LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,2*N). *> For optimal efficiency, LWORK >= (NB+1)*N, *> where NB is the blocksize for ZHETRD returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (7*N) *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (5*N) *> \endverbatim *> *> \param[out] IFAIL *> \verbatim *> IFAIL is INTEGER array, dimension (N) *> If JOBZ = 'V', then if INFO = 0, the first M elements of *> IFAIL are zero. If INFO > 0, then IFAIL contains the *> indices of the eigenvectors that failed to converge. *> If JOBZ = 'N', then IFAIL is not referenced. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: ZPOTRF or ZHEEVX returned an error code: *> <= N: if INFO = i, ZHEEVX failed to converge; *> i eigenvectors failed to converge. Their indices *> are stored in array IFAIL. *> > N: if INFO = N + i, for 1 <= i <= N, then the leading *> minor of order i of B is not positive definite. *> The factorization of B could not be completed and *> no eigenvalues or eigenvectors were computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16HEeigen * *> \par Contributors: * ================== *> *> Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA * * ===================================================================== SUBROUTINE ZHEGVX( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, $ VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, $ LWORK, RWORK, IWORK, IFAIL, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, RANGE, UPLO INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. INTEGER IFAIL( * ), IWORK( * ) DOUBLE PRECISION RWORK( * ), W( * ) COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * ), $ Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 CONE PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL ALLEIG, INDEIG, LQUERY, UPPER, VALEIG, WANTZ CHARACTER TRANS INTEGER LWKOPT, NB * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZHEEVX, ZHEGST, ZPOTRF, ZTRMM, ZTRSM * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * WANTZ = LSAME( JOBZ, 'V' ) UPPER = LSAME( UPLO, 'U' ) ALLEIG = LSAME( RANGE, 'A' ) VALEIG = LSAME( RANGE, 'V' ) INDEIG = LSAME( RANGE, 'I' ) LQUERY = ( LWORK.EQ.-1 ) * INFO = 0 IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -2 ELSE IF( .NOT.( ALLEIG .OR. VALEIG .OR. INDEIG ) ) THEN INFO = -3 ELSE IF( .NOT.( UPPER .OR. LSAME( UPLO, 'L' ) ) ) THEN INFO = -4 ELSE IF( N.LT.0 ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -7 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -9 ELSE IF( VALEIG ) THEN IF( N.GT.0 .AND. VU.LE.VL ) $ INFO = -11 ELSE IF( INDEIG ) THEN IF( IL.LT.1 .OR. IL.GT.MAX( 1, N ) ) THEN INFO = -12 ELSE IF( IU.LT.MIN( N, IL ) .OR. IU.GT.N ) THEN INFO = -13 END IF END IF END IF IF (INFO.EQ.0) THEN IF (LDZ.LT.1 .OR. (WANTZ .AND. LDZ.LT.N)) THEN INFO = -18 END IF END IF * IF( INFO.EQ.0 ) THEN NB = ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) LWKOPT = MAX( 1, ( NB + 1 )*N ) WORK( 1 ) = LWKOPT * IF( LWORK.LT.MAX( 1, 2*N ) .AND. .NOT.LQUERY ) THEN INFO = -20 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHEGVX', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * M = 0 IF( N.EQ.0 ) THEN RETURN END IF * * Form a Cholesky factorization of B. * CALL ZPOTRF( UPLO, N, B, LDB, INFO ) IF( INFO.NE.0 ) THEN INFO = N + INFO RETURN END IF * * Transform problem to standard eigenvalue problem and solve. * CALL ZHEGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) CALL ZHEEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, $ M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, $ INFO ) * IF( WANTZ ) THEN * * Backtransform eigenvectors to the original problem. * IF( INFO.GT.0 ) $ M = INFO - 1 IF( ITYPE.EQ.1 .OR. ITYPE.EQ.2 ) THEN * * For A*x=(lambda)*B*x and A*B*x=(lambda)*x; * backtransform eigenvectors: x = inv(L)**H *y or inv(U)*y * IF( UPPER ) THEN TRANS = 'N' ELSE TRANS = 'C' END IF * CALL ZTRSM( 'Left', UPLO, TRANS, 'Non-unit', N, M, CONE, B, $ LDB, Z, LDZ ) * ELSE IF( ITYPE.EQ.3 ) THEN * * For B*A*x=(lambda)*x; * backtransform eigenvectors: x = L*y or U**H *y * IF( UPPER ) THEN TRANS = 'C' ELSE TRANS = 'N' END IF * CALL ZTRMM( 'Left', UPLO, TRANS, 'Non-unit', N, M, CONE, B, $ LDB, Z, LDZ ) END IF END IF * * Set WORK(1) to optimal complex workspace size. * WORK( 1 ) = LWKOPT * RETURN * * End of ZHEGVX * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlaqr3.f0000644002504400250440000000005012337331322016513 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlaqr3.f0000644002504400250440000004320412337331322017262 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLAQR3 performs the unitary similarity transformation of a Hessenberg matrix to detect and deflate fully converged eigenvalues from a trailing principal submatrix (aggressive early deflation). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLAQR3 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLAQR3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, * IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, * NV, WV, LDWV, WORK, LWORK ) * * .. Scalar Arguments .. * INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV, * $ LDZ, LWORK, N, ND, NH, NS, NV, NW * LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. * COMPLEX*16 H( LDH, * ), SH( * ), T( LDT, * ), V( LDV, * ), * $ WORK( * ), WV( LDWV, * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> Aggressive early deflation: *> *> ZLAQR3 accepts as input an upper Hessenberg matrix *> H and performs an unitary similarity transformation *> designed to detect and deflate fully converged eigenvalues from *> a trailing principal submatrix. On output H has been over- *> written by a new Hessenberg matrix that is a perturbation of *> an unitary similarity transformation of H. It is to be *> hoped that the final version of H has many zero subdiagonal *> entries. *> *> \endverbatim * * Arguments: * ========== * *> \param[in] WANTT *> \verbatim *> WANTT is LOGICAL *> If .TRUE., then the Hessenberg matrix H is fully updated *> so that the triangular Schur factor may be *> computed (in cooperation with the calling subroutine). *> If .FALSE., then only enough of H is updated to preserve *> the eigenvalues. *> \endverbatim *> *> \param[in] WANTZ *> \verbatim *> WANTZ is LOGICAL *> If .TRUE., then the unitary matrix Z is updated so *> so that the unitary Schur factor may be computed *> (in cooperation with the calling subroutine). *> If .FALSE., then Z is not referenced. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix H and (if WANTZ is .TRUE.) the *> order of the unitary matrix Z. *> \endverbatim *> *> \param[in] KTOP *> \verbatim *> KTOP is INTEGER *> It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0. *> KBOT and KTOP together determine an isolated block *> along the diagonal of the Hessenberg matrix. *> \endverbatim *> *> \param[in] KBOT *> \verbatim *> KBOT is INTEGER *> It is assumed without a check that either *> KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together *> determine an isolated block along the diagonal of the *> Hessenberg matrix. *> \endverbatim *> *> \param[in] NW *> \verbatim *> NW is INTEGER *> Deflation window size. 1 .LE. NW .LE. (KBOT-KTOP+1). *> \endverbatim *> *> \param[in,out] H *> \verbatim *> H is COMPLEX*16 array, dimension (LDH,N) *> On input the initial N-by-N section of H stores the *> Hessenberg matrix undergoing aggressive early deflation. *> On output H has been transformed by a unitary *> similarity transformation, perturbed, and the returned *> to Hessenberg form that (it is to be hoped) has some *> zero subdiagonal entries. *> \endverbatim *> *> \param[in] LDH *> \verbatim *> LDH is integer *> Leading dimension of H just as declared in the calling *> subroutine. N .LE. LDH *> \endverbatim *> *> \param[in] ILOZ *> \verbatim *> ILOZ is INTEGER *> \endverbatim *> *> \param[in] IHIZ *> \verbatim *> IHIZ is INTEGER *> Specify the rows of Z to which transformations must be *> applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N. *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ,N) *> IF WANTZ is .TRUE., then on output, the unitary *> similarity transformation mentioned above has been *> accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right. *> If WANTZ is .FALSE., then Z is unreferenced. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is integer *> The leading dimension of Z just as declared in the *> calling subroutine. 1 .LE. LDZ. *> \endverbatim *> *> \param[out] NS *> \verbatim *> NS is integer *> The number of unconverged (ie approximate) eigenvalues *> returned in SR and SI that may be used as shifts by the *> calling subroutine. *> \endverbatim *> *> \param[out] ND *> \verbatim *> ND is integer *> The number of converged eigenvalues uncovered by this *> subroutine. *> \endverbatim *> *> \param[out] SH *> \verbatim *> SH is COMPLEX*16 array, dimension KBOT *> On output, approximate eigenvalues that may *> be used for shifts are stored in SH(KBOT-ND-NS+1) *> through SR(KBOT-ND). Converged eigenvalues are *> stored in SH(KBOT-ND+1) through SH(KBOT). *> \endverbatim *> *> \param[out] V *> \verbatim *> V is COMPLEX*16 array, dimension (LDV,NW) *> An NW-by-NW work array. *> \endverbatim *> *> \param[in] LDV *> \verbatim *> LDV is integer scalar *> The leading dimension of V just as declared in the *> calling subroutine. NW .LE. LDV *> \endverbatim *> *> \param[in] NH *> \verbatim *> NH is integer scalar *> The number of columns of T. NH.GE.NW. *> \endverbatim *> *> \param[out] T *> \verbatim *> T is COMPLEX*16 array, dimension (LDT,NW) *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is integer *> The leading dimension of T just as declared in the *> calling subroutine. NW .LE. LDT *> \endverbatim *> *> \param[in] NV *> \verbatim *> NV is integer *> The number of rows of work array WV available for *> workspace. NV.GE.NW. *> \endverbatim *> *> \param[out] WV *> \verbatim *> WV is COMPLEX*16 array, dimension (LDWV,NW) *> \endverbatim *> *> \param[in] LDWV *> \verbatim *> LDWV is integer *> The leading dimension of W just as declared in the *> calling subroutine. NW .LE. LDV *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension LWORK. *> On exit, WORK(1) is set to an estimate of the optimal value *> of LWORK for the given values of N, NW, KTOP and KBOT. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is integer *> The dimension of the work array WORK. LWORK = 2*NW *> suffices, but greater efficiency may result from larger *> values of LWORK. *> *> If LWORK = -1, then a workspace query is assumed; ZLAQR3 *> only estimates the optimal workspace size for the given *> values of N, NW, KTOP and KBOT. The estimate is returned *> in WORK(1). No error message related to LWORK is issued *> by XERBLA. Neither H nor Z are accessed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Contributors: * ================== *> *> Karen Braman and Ralph Byers, Department of Mathematics, *> University of Kansas, USA *> * ===================================================================== SUBROUTINE ZLAQR3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, $ IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, $ NV, WV, LDWV, WORK, LWORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV, $ LDZ, LWORK, N, ND, NH, NS, NV, NW LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. COMPLEX*16 H( LDH, * ), SH( * ), T( LDT, * ), V( LDV, * ), $ WORK( * ), WV( LDWV, * ), Z( LDZ, * ) * .. * * ================================================================ * * .. Parameters .. COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ), $ ONE = ( 1.0d0, 0.0d0 ) ) DOUBLE PRECISION RZERO, RONE PARAMETER ( RZERO = 0.0d0, RONE = 1.0d0 ) * .. * .. Local Scalars .. COMPLEX*16 BETA, CDUM, S, TAU DOUBLE PRECISION FOO, SAFMAX, SAFMIN, SMLNUM, ULP INTEGER I, IFST, ILST, INFO, INFQR, J, JW, KCOL, KLN, $ KNT, KROW, KWTOP, LTOP, LWK1, LWK2, LWK3, $ LWKOPT, NMIN * .. * .. External Functions .. DOUBLE PRECISION DLAMCH INTEGER ILAENV EXTERNAL DLAMCH, ILAENV * .. * .. External Subroutines .. EXTERNAL DLABAD, ZCOPY, ZGEHRD, ZGEMM, ZLACPY, ZLAHQR, $ ZLAQR4, ZLARF, ZLARFG, ZLASET, ZTREXC, ZUNMHR * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, MAX, MIN * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. * * ==== Estimate optimal workspace. ==== * JW = MIN( NW, KBOT-KTOP+1 ) IF( JW.LE.2 ) THEN LWKOPT = 1 ELSE * * ==== Workspace query call to ZGEHRD ==== * CALL ZGEHRD( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO ) LWK1 = INT( WORK( 1 ) ) * * ==== Workspace query call to ZUNMHR ==== * CALL ZUNMHR( 'R', 'N', JW, JW, 1, JW-1, T, LDT, WORK, V, LDV, $ WORK, -1, INFO ) LWK2 = INT( WORK( 1 ) ) * * ==== Workspace query call to ZLAQR4 ==== * CALL ZLAQR4( .true., .true., JW, 1, JW, T, LDT, SH, 1, JW, V, $ LDV, WORK, -1, INFQR ) LWK3 = INT( WORK( 1 ) ) * * ==== Optimal workspace ==== * LWKOPT = MAX( JW+MAX( LWK1, LWK2 ), LWK3 ) END IF * * ==== Quick return in case of workspace query. ==== * IF( LWORK.EQ.-1 ) THEN WORK( 1 ) = DCMPLX( LWKOPT, 0 ) RETURN END IF * * ==== Nothing to do ... * ... for an empty active block ... ==== NS = 0 ND = 0 WORK( 1 ) = ONE IF( KTOP.GT.KBOT ) $ RETURN * ... nor for an empty deflation window. ==== IF( NW.LT.1 ) $ RETURN * * ==== Machine constants ==== * SAFMIN = DLAMCH( 'SAFE MINIMUM' ) SAFMAX = RONE / SAFMIN CALL DLABAD( SAFMIN, SAFMAX ) ULP = DLAMCH( 'PRECISION' ) SMLNUM = SAFMIN*( DBLE( N ) / ULP ) * * ==== Setup deflation window ==== * JW = MIN( NW, KBOT-KTOP+1 ) KWTOP = KBOT - JW + 1 IF( KWTOP.EQ.KTOP ) THEN S = ZERO ELSE S = H( KWTOP, KWTOP-1 ) END IF * IF( KBOT.EQ.KWTOP ) THEN * * ==== 1-by-1 deflation window: not much to do ==== * SH( KWTOP ) = H( KWTOP, KWTOP ) NS = 1 ND = 0 IF( CABS1( S ).LE.MAX( SMLNUM, ULP*CABS1( H( KWTOP, $ KWTOP ) ) ) ) THEN NS = 0 ND = 1 IF( KWTOP.GT.KTOP ) $ H( KWTOP, KWTOP-1 ) = ZERO END IF WORK( 1 ) = ONE RETURN END IF * * ==== Convert to spike-triangular form. (In case of a * . rare QR failure, this routine continues to do * . aggressive early deflation using that part of * . the deflation window that converged using INFQR * . here and there to keep track.) ==== * CALL ZLACPY( 'U', JW, JW, H( KWTOP, KWTOP ), LDH, T, LDT ) CALL ZCOPY( JW-1, H( KWTOP+1, KWTOP ), LDH+1, T( 2, 1 ), LDT+1 ) * CALL ZLASET( 'A', JW, JW, ZERO, ONE, V, LDV ) NMIN = ILAENV( 12, 'ZLAQR3', 'SV', JW, 1, JW, LWORK ) IF( JW.GT.NMIN ) THEN CALL ZLAQR4( .true., .true., JW, 1, JW, T, LDT, SH( KWTOP ), 1, $ JW, V, LDV, WORK, LWORK, INFQR ) ELSE CALL ZLAHQR( .true., .true., JW, 1, JW, T, LDT, SH( KWTOP ), 1, $ JW, V, LDV, INFQR ) END IF * * ==== Deflation detection loop ==== * NS = JW ILST = INFQR + 1 DO 10 KNT = INFQR + 1, JW * * ==== Small spike tip deflation test ==== * FOO = CABS1( T( NS, NS ) ) IF( FOO.EQ.RZERO ) $ FOO = CABS1( S ) IF( CABS1( S )*CABS1( V( 1, NS ) ).LE.MAX( SMLNUM, ULP*FOO ) ) $ THEN * * ==== One more converged eigenvalue ==== * NS = NS - 1 ELSE * * ==== One undeflatable eigenvalue. Move it up out of the * . way. (ZTREXC can not fail in this case.) ==== * IFST = NS CALL ZTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, INFO ) ILST = ILST + 1 END IF 10 CONTINUE * * ==== Return to Hessenberg form ==== * IF( NS.EQ.0 ) $ S = ZERO * IF( NS.LT.JW ) THEN * * ==== sorting the diagonal of T improves accuracy for * . graded matrices. ==== * DO 30 I = INFQR + 1, NS IFST = I DO 20 J = I + 1, NS IF( CABS1( T( J, J ) ).GT.CABS1( T( IFST, IFST ) ) ) $ IFST = J 20 CONTINUE ILST = I IF( IFST.NE.ILST ) $ CALL ZTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, INFO ) 30 CONTINUE END IF * * ==== Restore shift/eigenvalue array from T ==== * DO 40 I = INFQR + 1, JW SH( KWTOP+I-1 ) = T( I, I ) 40 CONTINUE * * IF( NS.LT.JW .OR. S.EQ.ZERO ) THEN IF( NS.GT.1 .AND. S.NE.ZERO ) THEN * * ==== Reflect spike back into lower triangle ==== * CALL ZCOPY( NS, V, LDV, WORK, 1 ) DO 50 I = 1, NS WORK( I ) = DCONJG( WORK( I ) ) 50 CONTINUE BETA = WORK( 1 ) CALL ZLARFG( NS, BETA, WORK( 2 ), 1, TAU ) WORK( 1 ) = ONE * CALL ZLASET( 'L', JW-2, JW-2, ZERO, ZERO, T( 3, 1 ), LDT ) * CALL ZLARF( 'L', NS, JW, WORK, 1, DCONJG( TAU ), T, LDT, $ WORK( JW+1 ) ) CALL ZLARF( 'R', NS, NS, WORK, 1, TAU, T, LDT, $ WORK( JW+1 ) ) CALL ZLARF( 'R', JW, NS, WORK, 1, TAU, V, LDV, $ WORK( JW+1 ) ) * CALL ZGEHRD( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ), $ LWORK-JW, INFO ) END IF * * ==== Copy updated reduced window into place ==== * IF( KWTOP.GT.1 ) $ H( KWTOP, KWTOP-1 ) = S*DCONJG( V( 1, 1 ) ) CALL ZLACPY( 'U', JW, JW, T, LDT, H( KWTOP, KWTOP ), LDH ) CALL ZCOPY( JW-1, T( 2, 1 ), LDT+1, H( KWTOP+1, KWTOP ), $ LDH+1 ) * * ==== Accumulate orthogonal matrix in order update * . H and Z, if requested. ==== * IF( NS.GT.1 .AND. S.NE.ZERO ) $ CALL ZUNMHR( 'R', 'N', JW, NS, 1, NS, T, LDT, WORK, V, LDV, $ WORK( JW+1 ), LWORK-JW, INFO ) * * ==== Update vertical slab in H ==== * IF( WANTT ) THEN LTOP = 1 ELSE LTOP = KTOP END IF DO 60 KROW = LTOP, KWTOP - 1, NV KLN = MIN( NV, KWTOP-KROW ) CALL ZGEMM( 'N', 'N', KLN, JW, JW, ONE, H( KROW, KWTOP ), $ LDH, V, LDV, ZERO, WV, LDWV ) CALL ZLACPY( 'A', KLN, JW, WV, LDWV, H( KROW, KWTOP ), LDH ) 60 CONTINUE * * ==== Update horizontal slab in H ==== * IF( WANTT ) THEN DO 70 KCOL = KBOT + 1, N, NH KLN = MIN( NH, N-KCOL+1 ) CALL ZGEMM( 'C', 'N', JW, KLN, JW, ONE, V, LDV, $ H( KWTOP, KCOL ), LDH, ZERO, T, LDT ) CALL ZLACPY( 'A', JW, KLN, T, LDT, H( KWTOP, KCOL ), $ LDH ) 70 CONTINUE END IF * * ==== Update vertical slab in Z ==== * IF( WANTZ ) THEN DO 80 KROW = ILOZ, IHIZ, NV KLN = MIN( NV, IHIZ-KROW+1 ) CALL ZGEMM( 'N', 'N', KLN, JW, JW, ONE, Z( KROW, KWTOP ), $ LDZ, V, LDV, ZERO, WV, LDWV ) CALL ZLACPY( 'A', KLN, JW, WV, LDWV, Z( KROW, KWTOP ), $ LDZ ) 80 CONTINUE END IF END IF * * ==== Return the number of deflations ... ==== * ND = JW - NS * * ==== ... and the number of shifts. (Subtracting * . INFQR from the spike length takes care * . of the case of a rare QR failure while * . calculating eigenvalues of the deflation * . window.) ==== * NS = NS - INFQR * * ==== Return optimal workspace. ==== * WORK( 1 ) = DCMPLX( LWKOPT, 0 ) * * ==== End of ZLAQR3 ==== * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsytd2.f0000644002504400250440000000005012337331322016510 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsytd2.f0000644002504400250440000002321412337331322017256 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYTD2 reduces a symmetric matrix to real symmetric tridiagonal form by an orthogonal similarity transformation (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYTD2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYTD2( UPLO, N, A, LDA, D, E, TAU, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYTD2 reduces a real symmetric matrix A to symmetric tridiagonal *> form T by an orthogonal similarity transformation: Q**T * A * Q = T. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> symmetric matrix A is stored: *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> n-by-n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n-by-n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> On exit, if UPLO = 'U', the diagonal and first superdiagonal *> of A are overwritten by the corresponding elements of the *> tridiagonal matrix T, and the elements above the first *> superdiagonal, with the array TAU, represent the orthogonal *> matrix Q as a product of elementary reflectors; if UPLO *> = 'L', the diagonal and first subdiagonal of A are over- *> written by the corresponding elements of the tridiagonal *> matrix T, and the elements below the first subdiagonal, with *> the array TAU, represent the orthogonal matrix Q as a product *> of elementary reflectors. See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). *> \endverbatim *> *> \param[out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleSYcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(n-1) . . . H(2) H(1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**T *> *> where tau is a real scalar, and v is a real vector with *> v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in *> A(1:i-1,i+1), and tau in TAU(i). *> *> If UPLO = 'L', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(1) H(2) . . . H(n-1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**T *> *> where tau is a real scalar, and v is a real vector with *> v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i), *> and tau in TAU(i). *> *> The contents of A on exit are illustrated by the following examples *> with n = 5: *> *> if UPLO = 'U': if UPLO = 'L': *> *> ( d e v2 v3 v4 ) ( d ) *> ( d e v3 v4 ) ( e d ) *> ( d e v4 ) ( v1 e d ) *> ( d e ) ( v1 v2 e d ) *> ( d ) ( v1 v2 v3 e d ) *> *> where d and e denote diagonal and off-diagonal elements of T, and vi *> denotes an element of the vector defining H(i). *> \endverbatim *> * ===================================================================== SUBROUTINE DSYTD2( UPLO, N, A, LDA, D, E, TAU, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO, HALF PARAMETER ( ONE = 1.0D0, ZERO = 0.0D0, $ HALF = 1.0D0 / 2.0D0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER I DOUBLE PRECISION ALPHA, TAUI * .. * .. External Subroutines .. EXTERNAL DAXPY, DLARFG, DSYMV, DSYR2, XERBLA * .. * .. External Functions .. LOGICAL LSAME DOUBLE PRECISION DDOT EXTERNAL LSAME, DDOT * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYTD2', -INFO ) RETURN END IF * * Quick return if possible * IF( N.LE.0 ) $ RETURN * IF( UPPER ) THEN * * Reduce the upper triangle of A * DO 10 I = N - 1, 1, -1 * * Generate elementary reflector H(i) = I - tau * v * v**T * to annihilate A(1:i-1,i+1) * CALL DLARFG( I, A( I, I+1 ), A( 1, I+1 ), 1, TAUI ) E( I ) = A( I, I+1 ) * IF( TAUI.NE.ZERO ) THEN * * Apply H(i) from both sides to A(1:i,1:i) * A( I, I+1 ) = ONE * * Compute x := tau * A * v storing x in TAU(1:i) * CALL DSYMV( UPLO, I, TAUI, A, LDA, A( 1, I+1 ), 1, ZERO, $ TAU, 1 ) * * Compute w := x - 1/2 * tau * (x**T * v) * v * ALPHA = -HALF*TAUI*DDOT( I, TAU, 1, A( 1, I+1 ), 1 ) CALL DAXPY( I, ALPHA, A( 1, I+1 ), 1, TAU, 1 ) * * Apply the transformation as a rank-2 update: * A := A - v * w**T - w * v**T * CALL DSYR2( UPLO, I, -ONE, A( 1, I+1 ), 1, TAU, 1, A, $ LDA ) * A( I, I+1 ) = E( I ) END IF D( I+1 ) = A( I+1, I+1 ) TAU( I ) = TAUI 10 CONTINUE D( 1 ) = A( 1, 1 ) ELSE * * Reduce the lower triangle of A * DO 20 I = 1, N - 1 * * Generate elementary reflector H(i) = I - tau * v * v**T * to annihilate A(i+2:n,i) * CALL DLARFG( N-I, A( I+1, I ), A( MIN( I+2, N ), I ), 1, $ TAUI ) E( I ) = A( I+1, I ) * IF( TAUI.NE.ZERO ) THEN * * Apply H(i) from both sides to A(i+1:n,i+1:n) * A( I+1, I ) = ONE * * Compute x := tau * A * v storing y in TAU(i:n-1) * CALL DSYMV( UPLO, N-I, TAUI, A( I+1, I+1 ), LDA, $ A( I+1, I ), 1, ZERO, TAU( I ), 1 ) * * Compute w := x - 1/2 * tau * (x**T * v) * v * ALPHA = -HALF*TAUI*DDOT( N-I, TAU( I ), 1, A( I+1, I ), $ 1 ) CALL DAXPY( N-I, ALPHA, A( I+1, I ), 1, TAU( I ), 1 ) * * Apply the transformation as a rank-2 update: * A := A - v * w**T - w * v**T * CALL DSYR2( UPLO, N-I, -ONE, A( I+1, I ), 1, TAU( I ), 1, $ A( I+1, I+1 ), LDA ) * A( I+1, I ) = E( I ) END IF D( I ) = A( I, I ) TAU( I ) = TAUI 20 CONTINUE D( N ) = A( N, N ) END IF * RETURN * * End of DSYTD2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgetrf.f0000644002504400250440000000005012337331322016600 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgetrf.f0000644002504400250440000001425412337331322017352 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGETRF * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGETRF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGETRF( M, N, A, LDA, IPIV, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, M, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGETRF computes an LU factorization of a general M-by-N matrix A *> using partial pivoting with row interchanges. *> *> The factorization has the form *> A = P * L * U *> where P is a permutation matrix, L is lower triangular with unit *> diagonal elements (lower trapezoidal if m > n), and U is upper *> triangular (upper trapezoidal if m < n). *> *> This is the right-looking Level 3 BLAS version of the algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the M-by-N matrix to be factored. *> On exit, the factors L and U from the factorization *> A = P*L*U; the unit diagonal elements of L are not stored. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (min(M,N)) *> The pivot indices; for 1 <= i <= min(M,N), row i of the *> matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, U(i,i) is exactly zero. The factorization *> has been completed, but the factor U is exactly *> singular, and division by zero will occur if it is used *> to solve a system of equations. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16GEcomputational * * ===================================================================== SUBROUTINE ZGETRF( M, N, A, LDA, IPIV, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, LDA, M, N * .. * .. Array Arguments .. INTEGER IPIV( * ) COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. INTEGER I, IINFO, J, JB, NB * .. * .. External Subroutines .. EXTERNAL XERBLA, ZGEMM, ZGETF2, ZLASWP, ZTRSM * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGETRF', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 ) $ RETURN * * Determine the block size for this environment. * NB = ILAENV( 1, 'ZGETRF', ' ', M, N, -1, -1 ) IF( NB.LE.1 .OR. NB.GE.MIN( M, N ) ) THEN * * Use unblocked code. * CALL ZGETF2( M, N, A, LDA, IPIV, INFO ) ELSE * * Use blocked code. * DO 20 J = 1, MIN( M, N ), NB JB = MIN( MIN( M, N )-J+1, NB ) * * Factor diagonal and subdiagonal blocks and test for exact * singularity. * CALL ZGETF2( M-J+1, JB, A( J, J ), LDA, IPIV( J ), IINFO ) * * Adjust INFO and the pivot indices. * IF( INFO.EQ.0 .AND. IINFO.GT.0 ) $ INFO = IINFO + J - 1 DO 10 I = J, MIN( M, J+JB-1 ) IPIV( I ) = J - 1 + IPIV( I ) 10 CONTINUE * * Apply interchanges to columns 1:J-1. * CALL ZLASWP( J-1, A, LDA, J, J+JB-1, IPIV, 1 ) * IF( J+JB.LE.N ) THEN * * Apply interchanges to columns J+JB:N. * CALL ZLASWP( N-J-JB+1, A( 1, J+JB ), LDA, J, J+JB-1, $ IPIV, 1 ) * * Compute block row of U. * CALL ZTRSM( 'Left', 'Lower', 'No transpose', 'Unit', JB, $ N-J-JB+1, ONE, A( J, J ), LDA, A( J, J+JB ), $ LDA ) IF( J+JB.LE.M ) THEN * * Update trailing submatrix. * CALL ZGEMM( 'No transpose', 'No transpose', M-J-JB+1, $ N-J-JB+1, JB, -ONE, A( J+JB, J ), LDA, $ A( J, J+JB ), LDA, ONE, A( J+JB, J+JB ), $ LDA ) END IF END IF 20 CONTINUE END IF RETURN * * End of ZGETRF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsytf2.f0000644002504400250440000000005012337331322016512 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsytf2.f0000644002504400250440000004346012337331322017265 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYTF2 computes the factorization of a real symmetric indefinite matrix, using the diagonal pivoting method (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYTF2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYTF2( UPLO, N, A, LDA, IPIV, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYTF2 computes the factorization of a real symmetric matrix A using *> the Bunch-Kaufman diagonal pivoting method: *> *> A = U*D*U**T or A = L*D*L**T *> *> where U (or L) is a product of permutation and unit upper (lower) *> triangular matrices, U**T is the transpose of U, and D is symmetric and *> block diagonal with 1-by-1 and 2-by-2 diagonal blocks. *> *> This is the unblocked version of the algorithm, calling Level 2 BLAS. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> symmetric matrix A is stored: *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> n-by-n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n-by-n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, the block diagonal matrix D and the multipliers used *> to obtain the factor U or L (see below for further details). *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> Details of the interchanges and the block structure of D. *> If IPIV(k) > 0, then rows and columns k and IPIV(k) were *> interchanged and D(k,k) is a 1-by-1 diagonal block. *> If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and *> columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k) *> is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) = *> IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were *> interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -k, the k-th argument had an illegal value *> > 0: if INFO = k, D(k,k) is exactly zero. The factorization *> has been completed, but the block diagonal matrix D is *> exactly singular, and division by zero will occur if it *> is used to solve a system of equations. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleSYcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', then A = U*D*U**T, where *> U = P(n)*U(n)* ... *P(k)U(k)* ..., *> i.e., U is a product of terms P(k)*U(k), where k decreases from n to *> 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 *> and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as *> defined by IPIV(k), and U(k) is a unit upper triangular matrix, such *> that if the diagonal block D(k) is of order s (s = 1 or 2), then *> *> ( I v 0 ) k-s *> U(k) = ( 0 I 0 ) s *> ( 0 0 I ) n-k *> k-s s n-k *> *> If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k). *> If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k), *> and A(k,k), and v overwrites A(1:k-2,k-1:k). *> *> If UPLO = 'L', then A = L*D*L**T, where *> L = P(1)*L(1)* ... *P(k)*L(k)* ..., *> i.e., L is a product of terms P(k)*L(k), where k increases from 1 to *> n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 *> and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as *> defined by IPIV(k), and L(k) is a unit lower triangular matrix, such *> that if the diagonal block D(k) is of order s (s = 1 or 2), then *> *> ( I 0 0 ) k-1 *> L(k) = ( 0 I 0 ) s *> ( 0 v I ) n-k-s+1 *> k-1 s n-k-s+1 *> *> If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k). *> If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k), *> and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1). *> \endverbatim * *> \par Contributors: * ================== *> *> \verbatim *> *> 09-29-06 - patch from *> Bobby Cheng, MathWorks *> *> Replace l.204 and l.372 *> IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN *> by *> IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. DISNAN(ABSAKK) ) THEN *> *> 01-01-96 - Based on modifications by *> J. Lewis, Boeing Computer Services Company *> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA *> 1-96 - Based on modifications by J. Lewis, Boeing Computer Services *> Company *> \endverbatim * * ===================================================================== SUBROUTINE DSYTF2( UPLO, N, A, LDA, IPIV, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) DOUBLE PRECISION EIGHT, SEVTEN PARAMETER ( EIGHT = 8.0D+0, SEVTEN = 17.0D+0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER I, IMAX, J, JMAX, K, KK, KP, KSTEP DOUBLE PRECISION ABSAKK, ALPHA, COLMAX, D11, D12, D21, D22, R1, $ ROWMAX, T, WK, WKM1, WKP1 * .. * .. External Functions .. LOGICAL LSAME, DISNAN INTEGER IDAMAX EXTERNAL LSAME, IDAMAX, DISNAN * .. * .. External Subroutines .. EXTERNAL DSCAL, DSWAP, DSYR, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYTF2', -INFO ) RETURN END IF * * Initialize ALPHA for use in choosing pivot block size. * ALPHA = ( ONE+SQRT( SEVTEN ) ) / EIGHT * IF( UPPER ) THEN * * Factorize A as U*D*U**T using the upper triangle of A * * K is the main loop index, decreasing from N to 1 in steps of * 1 or 2 * K = N 10 CONTINUE * * If K < 1, exit from loop * IF( K.LT.1 ) $ GO TO 70 KSTEP = 1 * * Determine rows and columns to be interchanged and whether * a 1-by-1 or 2-by-2 pivot block will be used * ABSAKK = ABS( A( K, K ) ) * * IMAX is the row-index of the largest off-diagonal element in * column K, and COLMAX is its absolute value * IF( K.GT.1 ) THEN IMAX = IDAMAX( K-1, A( 1, K ), 1 ) COLMAX = ABS( A( IMAX, K ) ) ELSE COLMAX = ZERO END IF * IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. DISNAN(ABSAKK) ) THEN * * Column K is zero or contains a NaN: set INFO and continue * IF( INFO.EQ.0 ) $ INFO = K KP = K ELSE IF( ABSAKK.GE.ALPHA*COLMAX ) THEN * * no interchange, use 1-by-1 pivot block * KP = K ELSE * * JMAX is the column-index of the largest off-diagonal * element in row IMAX, and ROWMAX is its absolute value * JMAX = IMAX + IDAMAX( K-IMAX, A( IMAX, IMAX+1 ), LDA ) ROWMAX = ABS( A( IMAX, JMAX ) ) IF( IMAX.GT.1 ) THEN JMAX = IDAMAX( IMAX-1, A( 1, IMAX ), 1 ) ROWMAX = MAX( ROWMAX, ABS( A( JMAX, IMAX ) ) ) END IF * IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN * * no interchange, use 1-by-1 pivot block * KP = K ELSE IF( ABS( A( IMAX, IMAX ) ).GE.ALPHA*ROWMAX ) THEN * * interchange rows and columns K and IMAX, use 1-by-1 * pivot block * KP = IMAX ELSE * * interchange rows and columns K-1 and IMAX, use 2-by-2 * pivot block * KP = IMAX KSTEP = 2 END IF END IF * KK = K - KSTEP + 1 IF( KP.NE.KK ) THEN * * Interchange rows and columns KK and KP in the leading * submatrix A(1:k,1:k) * CALL DSWAP( KP-1, A( 1, KK ), 1, A( 1, KP ), 1 ) CALL DSWAP( KK-KP-1, A( KP+1, KK ), 1, A( KP, KP+1 ), $ LDA ) T = A( KK, KK ) A( KK, KK ) = A( KP, KP ) A( KP, KP ) = T IF( KSTEP.EQ.2 ) THEN T = A( K-1, K ) A( K-1, K ) = A( KP, K ) A( KP, K ) = T END IF END IF * * Update the leading submatrix * IF( KSTEP.EQ.1 ) THEN * * 1-by-1 pivot block D(k): column k now holds * * W(k) = U(k)*D(k) * * where U(k) is the k-th column of U * * Perform a rank-1 update of A(1:k-1,1:k-1) as * * A := A - U(k)*D(k)*U(k)**T = A - W(k)*1/D(k)*W(k)**T * R1 = ONE / A( K, K ) CALL DSYR( UPLO, K-1, -R1, A( 1, K ), 1, A, LDA ) * * Store U(k) in column k * CALL DSCAL( K-1, R1, A( 1, K ), 1 ) ELSE * * 2-by-2 pivot block D(k): columns k and k-1 now hold * * ( W(k-1) W(k) ) = ( U(k-1) U(k) )*D(k) * * where U(k) and U(k-1) are the k-th and (k-1)-th columns * of U * * Perform a rank-2 update of A(1:k-2,1:k-2) as * * A := A - ( U(k-1) U(k) )*D(k)*( U(k-1) U(k) )**T * = A - ( W(k-1) W(k) )*inv(D(k))*( W(k-1) W(k) )**T * IF( K.GT.2 ) THEN * D12 = A( K-1, K ) D22 = A( K-1, K-1 ) / D12 D11 = A( K, K ) / D12 T = ONE / ( D11*D22-ONE ) D12 = T / D12 * DO 30 J = K - 2, 1, -1 WKM1 = D12*( D11*A( J, K-1 )-A( J, K ) ) WK = D12*( D22*A( J, K )-A( J, K-1 ) ) DO 20 I = J, 1, -1 A( I, J ) = A( I, J ) - A( I, K )*WK - $ A( I, K-1 )*WKM1 20 CONTINUE A( J, K ) = WK A( J, K-1 ) = WKM1 30 CONTINUE * END IF * END IF END IF * * Store details of the interchanges in IPIV * IF( KSTEP.EQ.1 ) THEN IPIV( K ) = KP ELSE IPIV( K ) = -KP IPIV( K-1 ) = -KP END IF * * Decrease K and return to the start of the main loop * K = K - KSTEP GO TO 10 * ELSE * * Factorize A as L*D*L**T using the lower triangle of A * * K is the main loop index, increasing from 1 to N in steps of * 1 or 2 * K = 1 40 CONTINUE * * If K > N, exit from loop * IF( K.GT.N ) $ GO TO 70 KSTEP = 1 * * Determine rows and columns to be interchanged and whether * a 1-by-1 or 2-by-2 pivot block will be used * ABSAKK = ABS( A( K, K ) ) * * IMAX is the row-index of the largest off-diagonal element in * column K, and COLMAX is its absolute value * IF( K.LT.N ) THEN IMAX = K + IDAMAX( N-K, A( K+1, K ), 1 ) COLMAX = ABS( A( IMAX, K ) ) ELSE COLMAX = ZERO END IF * IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. DISNAN(ABSAKK) ) THEN * * Column K is zero or contains a NaN: set INFO and continue * IF( INFO.EQ.0 ) $ INFO = K KP = K ELSE IF( ABSAKK.GE.ALPHA*COLMAX ) THEN * * no interchange, use 1-by-1 pivot block * KP = K ELSE * * JMAX is the column-index of the largest off-diagonal * element in row IMAX, and ROWMAX is its absolute value * JMAX = K - 1 + IDAMAX( IMAX-K, A( IMAX, K ), LDA ) ROWMAX = ABS( A( IMAX, JMAX ) ) IF( IMAX.LT.N ) THEN JMAX = IMAX + IDAMAX( N-IMAX, A( IMAX+1, IMAX ), 1 ) ROWMAX = MAX( ROWMAX, ABS( A( JMAX, IMAX ) ) ) END IF * IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN * * no interchange, use 1-by-1 pivot block * KP = K ELSE IF( ABS( A( IMAX, IMAX ) ).GE.ALPHA*ROWMAX ) THEN * * interchange rows and columns K and IMAX, use 1-by-1 * pivot block * KP = IMAX ELSE * * interchange rows and columns K+1 and IMAX, use 2-by-2 * pivot block * KP = IMAX KSTEP = 2 END IF END IF * KK = K + KSTEP - 1 IF( KP.NE.KK ) THEN * * Interchange rows and columns KK and KP in the trailing * submatrix A(k:n,k:n) * IF( KP.LT.N ) $ CALL DSWAP( N-KP, A( KP+1, KK ), 1, A( KP+1, KP ), 1 ) CALL DSWAP( KP-KK-1, A( KK+1, KK ), 1, A( KP, KK+1 ), $ LDA ) T = A( KK, KK ) A( KK, KK ) = A( KP, KP ) A( KP, KP ) = T IF( KSTEP.EQ.2 ) THEN T = A( K+1, K ) A( K+1, K ) = A( KP, K ) A( KP, K ) = T END IF END IF * * Update the trailing submatrix * IF( KSTEP.EQ.1 ) THEN * * 1-by-1 pivot block D(k): column k now holds * * W(k) = L(k)*D(k) * * where L(k) is the k-th column of L * IF( K.LT.N ) THEN * * Perform a rank-1 update of A(k+1:n,k+1:n) as * * A := A - L(k)*D(k)*L(k)**T = A - W(k)*(1/D(k))*W(k)**T * D11 = ONE / A( K, K ) CALL DSYR( UPLO, N-K, -D11, A( K+1, K ), 1, $ A( K+1, K+1 ), LDA ) * * Store L(k) in column K * CALL DSCAL( N-K, D11, A( K+1, K ), 1 ) END IF ELSE * * 2-by-2 pivot block D(k) * IF( K.LT.N-1 ) THEN * * Perform a rank-2 update of A(k+2:n,k+2:n) as * * A := A - ( (A(k) A(k+1))*D(k)**(-1) ) * (A(k) A(k+1))**T * * where L(k) and L(k+1) are the k-th and (k+1)-th * columns of L * D21 = A( K+1, K ) D11 = A( K+1, K+1 ) / D21 D22 = A( K, K ) / D21 T = ONE / ( D11*D22-ONE ) D21 = T / D21 * DO 60 J = K + 2, N * WK = D21*( D11*A( J, K )-A( J, K+1 ) ) WKP1 = D21*( D22*A( J, K+1 )-A( J, K ) ) * DO 50 I = J, N A( I, J ) = A( I, J ) - A( I, K )*WK - $ A( I, K+1 )*WKP1 50 CONTINUE * A( J, K ) = WK A( J, K+1 ) = WKP1 * 60 CONTINUE END IF END IF END IF * * Store details of the interchanges in IPIV * IF( KSTEP.EQ.1 ) THEN IPIV( K ) = KP ELSE IPIV( K ) = -KP IPIV( K+1 ) = -KP END IF * * Increase K and return to the start of the main loop * K = K + KSTEP GO TO 40 * END IF * 70 CONTINUE * RETURN * * End of DSYTF2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlartg.f0000644002504400250440000000005012337331322016554 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlartg.f0000644002504400250440000001264012337331322017323 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLARTG generates a plane rotation with real cosine and real sine. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLARTG + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLARTG( F, G, CS, SN, R ) * * .. Scalar Arguments .. * DOUBLE PRECISION CS, F, G, R, SN * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLARTG generate a plane rotation so that *> *> [ CS SN ] . [ F ] = [ R ] where CS**2 + SN**2 = 1. *> [ -SN CS ] [ G ] [ 0 ] *> *> This is a slower, more accurate version of the BLAS1 routine DROTG, *> with the following other differences: *> F and G are unchanged on return. *> If G=0, then CS=1 and SN=0. *> If F=0 and (G .ne. 0), then CS=0 and SN=1 without doing any *> floating point operations (saves work in DBDSQR when *> there are zeros on the diagonal). *> *> If F exceeds G in magnitude, CS will be positive. *> \endverbatim * * Arguments: * ========== * *> \param[in] F *> \verbatim *> F is DOUBLE PRECISION *> The first component of vector to be rotated. *> \endverbatim *> *> \param[in] G *> \verbatim *> G is DOUBLE PRECISION *> The second component of vector to be rotated. *> \endverbatim *> *> \param[out] CS *> \verbatim *> CS is DOUBLE PRECISION *> The cosine of the rotation. *> \endverbatim *> *> \param[out] SN *> \verbatim *> SN is DOUBLE PRECISION *> The sine of the rotation. *> \endverbatim *> *> \param[out] R *> \verbatim *> R is DOUBLE PRECISION *> The nonzero component of the rotated vector. *> *> This version has a few statements commented out for thread safety *> (machine parameters are computed on each entry). 10 feb 03, SJH. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLARTG( F, G, CS, SN, R ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION CS, F, G, R, SN * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D0 ) DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D0 ) DOUBLE PRECISION TWO PARAMETER ( TWO = 2.0D0 ) * .. * .. Local Scalars .. * LOGICAL FIRST INTEGER COUNT, I DOUBLE PRECISION EPS, F1, G1, SAFMIN, SAFMN2, SAFMX2, SCALE * .. * .. External Functions .. DOUBLE PRECISION DLAMCH EXTERNAL DLAMCH * .. * .. Intrinsic Functions .. INTRINSIC ABS, INT, LOG, MAX, SQRT * .. * .. Save statement .. * SAVE FIRST, SAFMX2, SAFMIN, SAFMN2 * .. * .. Data statements .. * DATA FIRST / .TRUE. / * .. * .. Executable Statements .. * * IF( FIRST ) THEN SAFMIN = DLAMCH( 'S' ) EPS = DLAMCH( 'E' ) SAFMN2 = DLAMCH( 'B' )**INT( LOG( SAFMIN / EPS ) / $ LOG( DLAMCH( 'B' ) ) / TWO ) SAFMX2 = ONE / SAFMN2 * FIRST = .FALSE. * END IF IF( G.EQ.ZERO ) THEN CS = ONE SN = ZERO R = F ELSE IF( F.EQ.ZERO ) THEN CS = ZERO SN = ONE R = G ELSE F1 = F G1 = G SCALE = MAX( ABS( F1 ), ABS( G1 ) ) IF( SCALE.GE.SAFMX2 ) THEN COUNT = 0 10 CONTINUE COUNT = COUNT + 1 F1 = F1*SAFMN2 G1 = G1*SAFMN2 SCALE = MAX( ABS( F1 ), ABS( G1 ) ) IF( SCALE.GE.SAFMX2 ) $ GO TO 10 R = SQRT( F1**2+G1**2 ) CS = F1 / R SN = G1 / R DO 20 I = 1, COUNT R = R*SAFMX2 20 CONTINUE ELSE IF( SCALE.LE.SAFMN2 ) THEN COUNT = 0 30 CONTINUE COUNT = COUNT + 1 F1 = F1*SAFMX2 G1 = G1*SAFMX2 SCALE = MAX( ABS( F1 ), ABS( G1 ) ) IF( SCALE.LE.SAFMN2 ) $ GO TO 30 R = SQRT( F1**2+G1**2 ) CS = F1 / R SN = G1 / R DO 40 I = 1, COUNT R = R*SAFMN2 40 CONTINUE ELSE R = SQRT( F1**2+G1**2 ) CS = F1 / R SN = G1 / R END IF IF( ABS( F ).GT.ABS( G ) .AND. CS.LT.ZERO ) THEN CS = -CS SN = -SN R = -R END IF END IF RETURN * * End of DLARTG * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlaqr5.f0000644002504400250440000000005012337331322016515 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlaqr5.f0000644002504400250440000010166112337331322017266 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLAQR5 performs a single small-bulge multi-shift QR sweep. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLAQR5 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S, * H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, * WV, LDWV, NH, WH, LDWH ) * * .. Scalar Arguments .. * INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, * $ LDWH, LDWV, LDZ, N, NH, NSHFTS, NV * LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. * COMPLEX*16 H( LDH, * ), S( * ), U( LDU, * ), V( LDV, * ), * $ WH( LDWH, * ), WV( LDWV, * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLAQR5, called by ZLAQR0, performs a *> single small-bulge multi-shift QR sweep. *> \endverbatim * * Arguments: * ========== * *> \param[in] WANTT *> \verbatim *> WANTT is logical scalar *> WANTT = .true. if the triangular Schur factor *> is being computed. WANTT is set to .false. otherwise. *> \endverbatim *> *> \param[in] WANTZ *> \verbatim *> WANTZ is logical scalar *> WANTZ = .true. if the unitary Schur factor is being *> computed. WANTZ is set to .false. otherwise. *> \endverbatim *> *> \param[in] KACC22 *> \verbatim *> KACC22 is integer with value 0, 1, or 2. *> Specifies the computation mode of far-from-diagonal *> orthogonal updates. *> = 0: ZLAQR5 does not accumulate reflections and does not *> use matrix-matrix multiply to update far-from-diagonal *> matrix entries. *> = 1: ZLAQR5 accumulates reflections and uses matrix-matrix *> multiply to update the far-from-diagonal matrix entries. *> = 2: ZLAQR5 accumulates reflections, uses matrix-matrix *> multiply to update the far-from-diagonal matrix entries, *> and takes advantage of 2-by-2 block structure during *> matrix multiplies. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is integer scalar *> N is the order of the Hessenberg matrix H upon which this *> subroutine operates. *> \endverbatim *> *> \param[in] KTOP *> \verbatim *> KTOP is integer scalar *> \endverbatim *> *> \param[in] KBOT *> \verbatim *> KBOT is integer scalar *> These are the first and last rows and columns of an *> isolated diagonal block upon which the QR sweep is to be *> applied. It is assumed without a check that *> either KTOP = 1 or H(KTOP,KTOP-1) = 0 *> and *> either KBOT = N or H(KBOT+1,KBOT) = 0. *> \endverbatim *> *> \param[in] NSHFTS *> \verbatim *> NSHFTS is integer scalar *> NSHFTS gives the number of simultaneous shifts. NSHFTS *> must be positive and even. *> \endverbatim *> *> \param[in,out] S *> \verbatim *> S is COMPLEX*16 array of size (NSHFTS) *> S contains the shifts of origin that define the multi- *> shift QR sweep. On output S may be reordered. *> \endverbatim *> *> \param[in,out] H *> \verbatim *> H is COMPLEX*16 array of size (LDH,N) *> On input H contains a Hessenberg matrix. On output a *> multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied *> to the isolated diagonal block in rows and columns KTOP *> through KBOT. *> \endverbatim *> *> \param[in] LDH *> \verbatim *> LDH is integer scalar *> LDH is the leading dimension of H just as declared in the *> calling procedure. LDH.GE.MAX(1,N). *> \endverbatim *> *> \param[in] ILOZ *> \verbatim *> ILOZ is INTEGER *> \endverbatim *> *> \param[in] IHIZ *> \verbatim *> IHIZ is INTEGER *> Specify the rows of Z to which transformations must be *> applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array of size (LDZ,IHI) *> If WANTZ = .TRUE., then the QR Sweep unitary *> similarity transformation is accumulated into *> Z(ILOZ:IHIZ,ILO:IHI) from the right. *> If WANTZ = .FALSE., then Z is unreferenced. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is integer scalar *> LDA is the leading dimension of Z just as declared in *> the calling procedure. LDZ.GE.N. *> \endverbatim *> *> \param[out] V *> \verbatim *> V is COMPLEX*16 array of size (LDV,NSHFTS/2) *> \endverbatim *> *> \param[in] LDV *> \verbatim *> LDV is integer scalar *> LDV is the leading dimension of V as declared in the *> calling procedure. LDV.GE.3. *> \endverbatim *> *> \param[out] U *> \verbatim *> U is COMPLEX*16 array of size *> (LDU,3*NSHFTS-3) *> \endverbatim *> *> \param[in] LDU *> \verbatim *> LDU is integer scalar *> LDU is the leading dimension of U just as declared in the *> in the calling subroutine. LDU.GE.3*NSHFTS-3. *> \endverbatim *> *> \param[in] NH *> \verbatim *> NH is integer scalar *> NH is the number of columns in array WH available for *> workspace. NH.GE.1. *> \endverbatim *> *> \param[out] WH *> \verbatim *> WH is COMPLEX*16 array of size (LDWH,NH) *> \endverbatim *> *> \param[in] LDWH *> \verbatim *> LDWH is integer scalar *> Leading dimension of WH just as declared in the *> calling procedure. LDWH.GE.3*NSHFTS-3. *> \endverbatim *> *> \param[in] NV *> \verbatim *> NV is integer scalar *> NV is the number of rows in WV agailable for workspace. *> NV.GE.1. *> \endverbatim *> *> \param[out] WV *> \verbatim *> WV is COMPLEX*16 array of size *> (LDWV,3*NSHFTS-3) *> \endverbatim *> *> \param[in] LDWV *> \verbatim *> LDWV is integer scalar *> LDWV is the leading dimension of WV as declared in the *> in the calling subroutine. LDWV.GE.NV. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Contributors: * ================== *> *> Karen Braman and Ralph Byers, Department of Mathematics, *> University of Kansas, USA * *> \par References: * ================ *> *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 *> Performance, SIAM Journal of Matrix Analysis, volume 23, pages *> 929--947, 2002. *> * ===================================================================== SUBROUTINE ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S, $ H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, $ WV, LDWV, NH, WH, LDWH ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, $ LDWH, LDWV, LDZ, N, NH, NSHFTS, NV LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. COMPLEX*16 H( LDH, * ), S( * ), U( LDU, * ), V( LDV, * ), $ WH( LDWH, * ), WV( LDWV, * ), Z( LDZ, * ) * .. * * ================================================================ * .. Parameters .. COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ), $ ONE = ( 1.0d0, 0.0d0 ) ) DOUBLE PRECISION RZERO, RONE PARAMETER ( RZERO = 0.0d0, RONE = 1.0d0 ) * .. * .. Local Scalars .. COMPLEX*16 ALPHA, BETA, CDUM, REFSUM DOUBLE PRECISION H11, H12, H21, H22, SAFMAX, SAFMIN, SCL, $ SMLNUM, TST1, TST2, ULP INTEGER I2, I4, INCOL, J, J2, J4, JBOT, JCOL, JLEN, $ JROW, JTOP, K, K1, KDU, KMS, KNZ, KRCOL, KZS, $ M, M22, MBOT, MEND, MSTART, MTOP, NBMPS, NDCOL, $ NS, NU LOGICAL ACCUM, BLK22, BMP22 * .. * .. External Functions .. DOUBLE PRECISION DLAMCH EXTERNAL DLAMCH * .. * .. Intrinsic Functions .. * INTRINSIC ABS, DBLE, DCONJG, DIMAG, MAX, MIN, MOD * .. * .. Local Arrays .. COMPLEX*16 VT( 3 ) * .. * .. External Subroutines .. EXTERNAL DLABAD, ZGEMM, ZLACPY, ZLAQR1, ZLARFG, ZLASET, $ ZTRMM * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. * * ==== If there are no shifts, then there is nothing to do. ==== * IF( NSHFTS.LT.2 ) $ RETURN * * ==== If the active block is empty or 1-by-1, then there * . is nothing to do. ==== * IF( KTOP.GE.KBOT ) $ RETURN * * ==== NSHFTS is supposed to be even, but if it is odd, * . then simply reduce it by one. ==== * NS = NSHFTS - MOD( NSHFTS, 2 ) * * ==== Machine constants for deflation ==== * SAFMIN = DLAMCH( 'SAFE MINIMUM' ) SAFMAX = RONE / SAFMIN CALL DLABAD( SAFMIN, SAFMAX ) ULP = DLAMCH( 'PRECISION' ) SMLNUM = SAFMIN*( DBLE( N ) / ULP ) * * ==== Use accumulated reflections to update far-from-diagonal * . entries ? ==== * ACCUM = ( KACC22.EQ.1 ) .OR. ( KACC22.EQ.2 ) * * ==== If so, exploit the 2-by-2 block structure? ==== * BLK22 = ( NS.GT.2 ) .AND. ( KACC22.EQ.2 ) * * ==== clear trash ==== * IF( KTOP+2.LE.KBOT ) $ H( KTOP+2, KTOP ) = ZERO * * ==== NBMPS = number of 2-shift bulges in the chain ==== * NBMPS = NS / 2 * * ==== KDU = width of slab ==== * KDU = 6*NBMPS - 3 * * ==== Create and chase chains of NBMPS bulges ==== * DO 210 INCOL = 3*( 1-NBMPS ) + KTOP - 1, KBOT - 2, 3*NBMPS - 2 NDCOL = INCOL + KDU IF( ACCUM ) $ CALL ZLASET( 'ALL', KDU, KDU, ZERO, ONE, U, LDU ) * * ==== Near-the-diagonal bulge chase. The following loop * . performs the near-the-diagonal part of a small bulge * . multi-shift QR sweep. Each 6*NBMPS-2 column diagonal * . chunk extends from column INCOL to column NDCOL * . (including both column INCOL and column NDCOL). The * . following loop chases a 3*NBMPS column long chain of * . NBMPS bulges 3*NBMPS-2 columns to the right. (INCOL * . may be less than KTOP and and NDCOL may be greater than * . KBOT indicating phantom columns from which to chase * . bulges before they are actually introduced or to which * . to chase bulges beyond column KBOT.) ==== * DO 140 KRCOL = INCOL, MIN( INCOL+3*NBMPS-3, KBOT-2 ) * * ==== Bulges number MTOP to MBOT are active double implicit * . shift bulges. There may or may not also be small * . 2-by-2 bulge, if there is room. The inactive bulges * . (if any) must wait until the active bulges have moved * . down the diagonal to make room. The phantom matrix * . paradigm described above helps keep track. ==== * MTOP = MAX( 1, ( ( KTOP-1 )-KRCOL+2 ) / 3+1 ) MBOT = MIN( NBMPS, ( KBOT-KRCOL ) / 3 ) M22 = MBOT + 1 BMP22 = ( MBOT.LT.NBMPS ) .AND. ( KRCOL+3*( M22-1 ) ).EQ. $ ( KBOT-2 ) * * ==== Generate reflections to chase the chain right * . one column. (The minimum value of K is KTOP-1.) ==== * DO 10 M = MTOP, MBOT K = KRCOL + 3*( M-1 ) IF( K.EQ.KTOP-1 ) THEN CALL ZLAQR1( 3, H( KTOP, KTOP ), LDH, S( 2*M-1 ), $ S( 2*M ), V( 1, M ) ) ALPHA = V( 1, M ) CALL ZLARFG( 3, ALPHA, V( 2, M ), 1, V( 1, M ) ) ELSE BETA = H( K+1, K ) V( 2, M ) = H( K+2, K ) V( 3, M ) = H( K+3, K ) CALL ZLARFG( 3, BETA, V( 2, M ), 1, V( 1, M ) ) * * ==== A Bulge may collapse because of vigilant * . deflation or destructive underflow. In the * . underflow case, try the two-small-subdiagonals * . trick to try to reinflate the bulge. ==== * IF( H( K+3, K ).NE.ZERO .OR. H( K+3, K+1 ).NE. $ ZERO .OR. H( K+3, K+2 ).EQ.ZERO ) THEN * * ==== Typical case: not collapsed (yet). ==== * H( K+1, K ) = BETA H( K+2, K ) = ZERO H( K+3, K ) = ZERO ELSE * * ==== Atypical case: collapsed. Attempt to * . reintroduce ignoring H(K+1,K) and H(K+2,K). * . If the fill resulting from the new * . reflector is too large, then abandon it. * . Otherwise, use the new one. ==== * CALL ZLAQR1( 3, H( K+1, K+1 ), LDH, S( 2*M-1 ), $ S( 2*M ), VT ) ALPHA = VT( 1 ) CALL ZLARFG( 3, ALPHA, VT( 2 ), 1, VT( 1 ) ) REFSUM = DCONJG( VT( 1 ) )* $ ( H( K+1, K )+DCONJG( VT( 2 ) )* $ H( K+2, K ) ) * IF( CABS1( H( K+2, K )-REFSUM*VT( 2 ) )+ $ CABS1( REFSUM*VT( 3 ) ).GT.ULP* $ ( CABS1( H( K, K ) )+CABS1( H( K+1, $ K+1 ) )+CABS1( H( K+2, K+2 ) ) ) ) THEN * * ==== Starting a new bulge here would * . create non-negligible fill. Use * . the old one with trepidation. ==== * H( K+1, K ) = BETA H( K+2, K ) = ZERO H( K+3, K ) = ZERO ELSE * * ==== Stating a new bulge here would * . create only negligible fill. * . Replace the old reflector with * . the new one. ==== * H( K+1, K ) = H( K+1, K ) - REFSUM H( K+2, K ) = ZERO H( K+3, K ) = ZERO V( 1, M ) = VT( 1 ) V( 2, M ) = VT( 2 ) V( 3, M ) = VT( 3 ) END IF END IF END IF 10 CONTINUE * * ==== Generate a 2-by-2 reflection, if needed. ==== * K = KRCOL + 3*( M22-1 ) IF( BMP22 ) THEN IF( K.EQ.KTOP-1 ) THEN CALL ZLAQR1( 2, H( K+1, K+1 ), LDH, S( 2*M22-1 ), $ S( 2*M22 ), V( 1, M22 ) ) BETA = V( 1, M22 ) CALL ZLARFG( 2, BETA, V( 2, M22 ), 1, V( 1, M22 ) ) ELSE BETA = H( K+1, K ) V( 2, M22 ) = H( K+2, K ) CALL ZLARFG( 2, BETA, V( 2, M22 ), 1, V( 1, M22 ) ) H( K+1, K ) = BETA H( K+2, K ) = ZERO END IF END IF * * ==== Multiply H by reflections from the left ==== * IF( ACCUM ) THEN JBOT = MIN( NDCOL, KBOT ) ELSE IF( WANTT ) THEN JBOT = N ELSE JBOT = KBOT END IF DO 30 J = MAX( KTOP, KRCOL ), JBOT MEND = MIN( MBOT, ( J-KRCOL+2 ) / 3 ) DO 20 M = MTOP, MEND K = KRCOL + 3*( M-1 ) REFSUM = DCONJG( V( 1, M ) )* $ ( H( K+1, J )+DCONJG( V( 2, M ) )* $ H( K+2, J )+DCONJG( V( 3, M ) )*H( K+3, J ) ) H( K+1, J ) = H( K+1, J ) - REFSUM H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M ) H( K+3, J ) = H( K+3, J ) - REFSUM*V( 3, M ) 20 CONTINUE 30 CONTINUE IF( BMP22 ) THEN K = KRCOL + 3*( M22-1 ) DO 40 J = MAX( K+1, KTOP ), JBOT REFSUM = DCONJG( V( 1, M22 ) )* $ ( H( K+1, J )+DCONJG( V( 2, M22 ) )* $ H( K+2, J ) ) H( K+1, J ) = H( K+1, J ) - REFSUM H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M22 ) 40 CONTINUE END IF * * ==== Multiply H by reflections from the right. * . Delay filling in the last row until the * . vigilant deflation check is complete. ==== * IF( ACCUM ) THEN JTOP = MAX( KTOP, INCOL ) ELSE IF( WANTT ) THEN JTOP = 1 ELSE JTOP = KTOP END IF DO 80 M = MTOP, MBOT IF( V( 1, M ).NE.ZERO ) THEN K = KRCOL + 3*( M-1 ) DO 50 J = JTOP, MIN( KBOT, K+3 ) REFSUM = V( 1, M )*( H( J, K+1 )+V( 2, M )* $ H( J, K+2 )+V( 3, M )*H( J, K+3 ) ) H( J, K+1 ) = H( J, K+1 ) - REFSUM H( J, K+2 ) = H( J, K+2 ) - $ REFSUM*DCONJG( V( 2, M ) ) H( J, K+3 ) = H( J, K+3 ) - $ REFSUM*DCONJG( V( 3, M ) ) 50 CONTINUE * IF( ACCUM ) THEN * * ==== Accumulate U. (If necessary, update Z later * . with with an efficient matrix-matrix * . multiply.) ==== * KMS = K - INCOL DO 60 J = MAX( 1, KTOP-INCOL ), KDU REFSUM = V( 1, M )*( U( J, KMS+1 )+V( 2, M )* $ U( J, KMS+2 )+V( 3, M )*U( J, KMS+3 ) ) U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM U( J, KMS+2 ) = U( J, KMS+2 ) - $ REFSUM*DCONJG( V( 2, M ) ) U( J, KMS+3 ) = U( J, KMS+3 ) - $ REFSUM*DCONJG( V( 3, M ) ) 60 CONTINUE ELSE IF( WANTZ ) THEN * * ==== U is not accumulated, so update Z * . now by multiplying by reflections * . from the right. ==== * DO 70 J = ILOZ, IHIZ REFSUM = V( 1, M )*( Z( J, K+1 )+V( 2, M )* $ Z( J, K+2 )+V( 3, M )*Z( J, K+3 ) ) Z( J, K+1 ) = Z( J, K+1 ) - REFSUM Z( J, K+2 ) = Z( J, K+2 ) - $ REFSUM*DCONJG( V( 2, M ) ) Z( J, K+3 ) = Z( J, K+3 ) - $ REFSUM*DCONJG( V( 3, M ) ) 70 CONTINUE END IF END IF 80 CONTINUE * * ==== Special case: 2-by-2 reflection (if needed) ==== * K = KRCOL + 3*( M22-1 ) IF( BMP22 ) THEN IF ( V( 1, M22 ).NE.ZERO ) THEN DO 90 J = JTOP, MIN( KBOT, K+3 ) REFSUM = V( 1, M22 )*( H( J, K+1 )+V( 2, M22 )* $ H( J, K+2 ) ) H( J, K+1 ) = H( J, K+1 ) - REFSUM H( J, K+2 ) = H( J, K+2 ) - $ REFSUM*DCONJG( V( 2, M22 ) ) 90 CONTINUE * IF( ACCUM ) THEN KMS = K - INCOL DO 100 J = MAX( 1, KTOP-INCOL ), KDU REFSUM = V( 1, M22 )*( U( J, KMS+1 )+ $ V( 2, M22 )*U( J, KMS+2 ) ) U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM U( J, KMS+2 ) = U( J, KMS+2 ) - $ REFSUM*DCONJG( V( 2, M22 ) ) 100 CONTINUE ELSE IF( WANTZ ) THEN DO 110 J = ILOZ, IHIZ REFSUM = V( 1, M22 )*( Z( J, K+1 )+V( 2, M22 )* $ Z( J, K+2 ) ) Z( J, K+1 ) = Z( J, K+1 ) - REFSUM Z( J, K+2 ) = Z( J, K+2 ) - $ REFSUM*DCONJG( V( 2, M22 ) ) 110 CONTINUE END IF END IF END IF * * ==== Vigilant deflation check ==== * MSTART = MTOP IF( KRCOL+3*( MSTART-1 ).LT.KTOP ) $ MSTART = MSTART + 1 MEND = MBOT IF( BMP22 ) $ MEND = MEND + 1 IF( KRCOL.EQ.KBOT-2 ) $ MEND = MEND + 1 DO 120 M = MSTART, MEND K = MIN( KBOT-1, KRCOL+3*( M-1 ) ) * * ==== The following convergence test requires that * . the tradition small-compared-to-nearby-diagonals * . criterion and the Ahues & Tisseur (LAWN 122, 1997) * . criteria both be satisfied. The latter improves * . accuracy in some examples. Falling back on an * . alternate convergence criterion when TST1 or TST2 * . is zero (as done here) is traditional but probably * . unnecessary. ==== * IF( H( K+1, K ).NE.ZERO ) THEN TST1 = CABS1( H( K, K ) ) + CABS1( H( K+1, K+1 ) ) IF( TST1.EQ.RZERO ) THEN IF( K.GE.KTOP+1 ) $ TST1 = TST1 + CABS1( H( K, K-1 ) ) IF( K.GE.KTOP+2 ) $ TST1 = TST1 + CABS1( H( K, K-2 ) ) IF( K.GE.KTOP+3 ) $ TST1 = TST1 + CABS1( H( K, K-3 ) ) IF( K.LE.KBOT-2 ) $ TST1 = TST1 + CABS1( H( K+2, K+1 ) ) IF( K.LE.KBOT-3 ) $ TST1 = TST1 + CABS1( H( K+3, K+1 ) ) IF( K.LE.KBOT-4 ) $ TST1 = TST1 + CABS1( H( K+4, K+1 ) ) END IF IF( CABS1( H( K+1, K ) ).LE.MAX( SMLNUM, ULP*TST1 ) ) $ THEN H12 = MAX( CABS1( H( K+1, K ) ), $ CABS1( H( K, K+1 ) ) ) H21 = MIN( CABS1( H( K+1, K ) ), $ CABS1( H( K, K+1 ) ) ) H11 = MAX( CABS1( H( K+1, K+1 ) ), $ CABS1( H( K, K )-H( K+1, K+1 ) ) ) H22 = MIN( CABS1( H( K+1, K+1 ) ), $ CABS1( H( K, K )-H( K+1, K+1 ) ) ) SCL = H11 + H12 TST2 = H22*( H11 / SCL ) * IF( TST2.EQ.RZERO .OR. H21*( H12 / SCL ).LE. $ MAX( SMLNUM, ULP*TST2 ) )H( K+1, K ) = ZERO END IF END IF 120 CONTINUE * * ==== Fill in the last row of each bulge. ==== * MEND = MIN( NBMPS, ( KBOT-KRCOL-1 ) / 3 ) DO 130 M = MTOP, MEND K = KRCOL + 3*( M-1 ) REFSUM = V( 1, M )*V( 3, M )*H( K+4, K+3 ) H( K+4, K+1 ) = -REFSUM H( K+4, K+2 ) = -REFSUM*DCONJG( V( 2, M ) ) H( K+4, K+3 ) = H( K+4, K+3 ) - $ REFSUM*DCONJG( V( 3, M ) ) 130 CONTINUE * * ==== End of near-the-diagonal bulge chase. ==== * 140 CONTINUE * * ==== Use U (if accumulated) to update far-from-diagonal * . entries in H. If required, use U to update Z as * . well. ==== * IF( ACCUM ) THEN IF( WANTT ) THEN JTOP = 1 JBOT = N ELSE JTOP = KTOP JBOT = KBOT END IF IF( ( .NOT.BLK22 ) .OR. ( INCOL.LT.KTOP ) .OR. $ ( NDCOL.GT.KBOT ) .OR. ( NS.LE.2 ) ) THEN * * ==== Updates not exploiting the 2-by-2 block * . structure of U. K1 and NU keep track of * . the location and size of U in the special * . cases of introducing bulges and chasing * . bulges off the bottom. In these special * . cases and in case the number of shifts * . is NS = 2, there is no 2-by-2 block * . structure to exploit. ==== * K1 = MAX( 1, KTOP-INCOL ) NU = ( KDU-MAX( 0, NDCOL-KBOT ) ) - K1 + 1 * * ==== Horizontal Multiply ==== * DO 150 JCOL = MIN( NDCOL, KBOT ) + 1, JBOT, NH JLEN = MIN( NH, JBOT-JCOL+1 ) CALL ZGEMM( 'C', 'N', NU, JLEN, NU, ONE, U( K1, K1 ), $ LDU, H( INCOL+K1, JCOL ), LDH, ZERO, WH, $ LDWH ) CALL ZLACPY( 'ALL', NU, JLEN, WH, LDWH, $ H( INCOL+K1, JCOL ), LDH ) 150 CONTINUE * * ==== Vertical multiply ==== * DO 160 JROW = JTOP, MAX( KTOP, INCOL ) - 1, NV JLEN = MIN( NV, MAX( KTOP, INCOL )-JROW ) CALL ZGEMM( 'N', 'N', JLEN, NU, NU, ONE, $ H( JROW, INCOL+K1 ), LDH, U( K1, K1 ), $ LDU, ZERO, WV, LDWV ) CALL ZLACPY( 'ALL', JLEN, NU, WV, LDWV, $ H( JROW, INCOL+K1 ), LDH ) 160 CONTINUE * * ==== Z multiply (also vertical) ==== * IF( WANTZ ) THEN DO 170 JROW = ILOZ, IHIZ, NV JLEN = MIN( NV, IHIZ-JROW+1 ) CALL ZGEMM( 'N', 'N', JLEN, NU, NU, ONE, $ Z( JROW, INCOL+K1 ), LDZ, U( K1, K1 ), $ LDU, ZERO, WV, LDWV ) CALL ZLACPY( 'ALL', JLEN, NU, WV, LDWV, $ Z( JROW, INCOL+K1 ), LDZ ) 170 CONTINUE END IF ELSE * * ==== Updates exploiting U's 2-by-2 block structure. * . (I2, I4, J2, J4 are the last rows and columns * . of the blocks.) ==== * I2 = ( KDU+1 ) / 2 I4 = KDU J2 = I4 - I2 J4 = KDU * * ==== KZS and KNZ deal with the band of zeros * . along the diagonal of one of the triangular * . blocks. ==== * KZS = ( J4-J2 ) - ( NS+1 ) KNZ = NS + 1 * * ==== Horizontal multiply ==== * DO 180 JCOL = MIN( NDCOL, KBOT ) + 1, JBOT, NH JLEN = MIN( NH, JBOT-JCOL+1 ) * * ==== Copy bottom of H to top+KZS of scratch ==== * (The first KZS rows get multiplied by zero.) ==== * CALL ZLACPY( 'ALL', KNZ, JLEN, H( INCOL+1+J2, JCOL ), $ LDH, WH( KZS+1, 1 ), LDWH ) * * ==== Multiply by U21**H ==== * CALL ZLASET( 'ALL', KZS, JLEN, ZERO, ZERO, WH, LDWH ) CALL ZTRMM( 'L', 'U', 'C', 'N', KNZ, JLEN, ONE, $ U( J2+1, 1+KZS ), LDU, WH( KZS+1, 1 ), $ LDWH ) * * ==== Multiply top of H by U11**H ==== * CALL ZGEMM( 'C', 'N', I2, JLEN, J2, ONE, U, LDU, $ H( INCOL+1, JCOL ), LDH, ONE, WH, LDWH ) * * ==== Copy top of H to bottom of WH ==== * CALL ZLACPY( 'ALL', J2, JLEN, H( INCOL+1, JCOL ), LDH, $ WH( I2+1, 1 ), LDWH ) * * ==== Multiply by U21**H ==== * CALL ZTRMM( 'L', 'L', 'C', 'N', J2, JLEN, ONE, $ U( 1, I2+1 ), LDU, WH( I2+1, 1 ), LDWH ) * * ==== Multiply by U22 ==== * CALL ZGEMM( 'C', 'N', I4-I2, JLEN, J4-J2, ONE, $ U( J2+1, I2+1 ), LDU, $ H( INCOL+1+J2, JCOL ), LDH, ONE, $ WH( I2+1, 1 ), LDWH ) * * ==== Copy it back ==== * CALL ZLACPY( 'ALL', KDU, JLEN, WH, LDWH, $ H( INCOL+1, JCOL ), LDH ) 180 CONTINUE * * ==== Vertical multiply ==== * DO 190 JROW = JTOP, MAX( INCOL, KTOP ) - 1, NV JLEN = MIN( NV, MAX( INCOL, KTOP )-JROW ) * * ==== Copy right of H to scratch (the first KZS * . columns get multiplied by zero) ==== * CALL ZLACPY( 'ALL', JLEN, KNZ, H( JROW, INCOL+1+J2 ), $ LDH, WV( 1, 1+KZS ), LDWV ) * * ==== Multiply by U21 ==== * CALL ZLASET( 'ALL', JLEN, KZS, ZERO, ZERO, WV, LDWV ) CALL ZTRMM( 'R', 'U', 'N', 'N', JLEN, KNZ, ONE, $ U( J2+1, 1+KZS ), LDU, WV( 1, 1+KZS ), $ LDWV ) * * ==== Multiply by U11 ==== * CALL ZGEMM( 'N', 'N', JLEN, I2, J2, ONE, $ H( JROW, INCOL+1 ), LDH, U, LDU, ONE, WV, $ LDWV ) * * ==== Copy left of H to right of scratch ==== * CALL ZLACPY( 'ALL', JLEN, J2, H( JROW, INCOL+1 ), LDH, $ WV( 1, 1+I2 ), LDWV ) * * ==== Multiply by U21 ==== * CALL ZTRMM( 'R', 'L', 'N', 'N', JLEN, I4-I2, ONE, $ U( 1, I2+1 ), LDU, WV( 1, 1+I2 ), LDWV ) * * ==== Multiply by U22 ==== * CALL ZGEMM( 'N', 'N', JLEN, I4-I2, J4-J2, ONE, $ H( JROW, INCOL+1+J2 ), LDH, $ U( J2+1, I2+1 ), LDU, ONE, WV( 1, 1+I2 ), $ LDWV ) * * ==== Copy it back ==== * CALL ZLACPY( 'ALL', JLEN, KDU, WV, LDWV, $ H( JROW, INCOL+1 ), LDH ) 190 CONTINUE * * ==== Multiply Z (also vertical) ==== * IF( WANTZ ) THEN DO 200 JROW = ILOZ, IHIZ, NV JLEN = MIN( NV, IHIZ-JROW+1 ) * * ==== Copy right of Z to left of scratch (first * . KZS columns get multiplied by zero) ==== * CALL ZLACPY( 'ALL', JLEN, KNZ, $ Z( JROW, INCOL+1+J2 ), LDZ, $ WV( 1, 1+KZS ), LDWV ) * * ==== Multiply by U12 ==== * CALL ZLASET( 'ALL', JLEN, KZS, ZERO, ZERO, WV, $ LDWV ) CALL ZTRMM( 'R', 'U', 'N', 'N', JLEN, KNZ, ONE, $ U( J2+1, 1+KZS ), LDU, WV( 1, 1+KZS ), $ LDWV ) * * ==== Multiply by U11 ==== * CALL ZGEMM( 'N', 'N', JLEN, I2, J2, ONE, $ Z( JROW, INCOL+1 ), LDZ, U, LDU, ONE, $ WV, LDWV ) * * ==== Copy left of Z to right of scratch ==== * CALL ZLACPY( 'ALL', JLEN, J2, Z( JROW, INCOL+1 ), $ LDZ, WV( 1, 1+I2 ), LDWV ) * * ==== Multiply by U21 ==== * CALL ZTRMM( 'R', 'L', 'N', 'N', JLEN, I4-I2, ONE, $ U( 1, I2+1 ), LDU, WV( 1, 1+I2 ), $ LDWV ) * * ==== Multiply by U22 ==== * CALL ZGEMM( 'N', 'N', JLEN, I4-I2, J4-J2, ONE, $ Z( JROW, INCOL+1+J2 ), LDZ, $ U( J2+1, I2+1 ), LDU, ONE, $ WV( 1, 1+I2 ), LDWV ) * * ==== Copy the result back to Z ==== * CALL ZLACPY( 'ALL', JLEN, KDU, WV, LDWV, $ Z( JROW, INCOL+1 ), LDZ ) 200 CONTINUE END IF END IF END IF 210 CONTINUE * * ==== End of ZLAQR5 ==== * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zpptrf.f0000644002504400250440000000005012337331322016624 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zpptrf.f0000644002504400250440000001451612337331322017377 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZPPTRF * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZPPTRF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZPPTRF( UPLO, N, AP, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, N * .. * .. Array Arguments .. * COMPLEX*16 AP( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZPPTRF computes the Cholesky factorization of a complex Hermitian *> positive definite matrix A stored in packed format. *> *> The factorization has the form *> A = U**H * U, if UPLO = 'U', or *> A = L * L**H, if UPLO = 'L', *> where U is an upper triangular matrix and L is lower triangular. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] AP *> \verbatim *> AP is COMPLEX*16 array, dimension (N*(N+1)/2) *> On entry, the upper or lower triangle of the Hermitian matrix *> A, packed columnwise in a linear array. The j-th column of A *> is stored in the array AP as follows: *> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; *> if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n. *> See below for further details. *> *> On exit, if INFO = 0, the triangular factor U or L from the *> Cholesky factorization A = U**H*U or A = L*L**H, in the same *> storage format as A. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, the leading minor of order i is not *> positive definite, and the factorization could not be *> completed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> The packed storage scheme is illustrated by the following example *> when N = 4, UPLO = 'U': *> *> Two-dimensional storage of the Hermitian matrix A: *> *> a11 a12 a13 a14 *> a22 a23 a24 *> a33 a34 (aij = conjg(aji)) *> a44 *> *> Packed storage of the upper triangle of A: *> *> AP = [ a11, a12, a22, a13, a23, a33, a14, a24, a34, a44 ] *> \endverbatim *> * ===================================================================== SUBROUTINE ZPPTRF( UPLO, N, AP, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, N * .. * .. Array Arguments .. COMPLEX*16 AP( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER J, JC, JJ DOUBLE PRECISION AJJ * .. * .. External Functions .. LOGICAL LSAME COMPLEX*16 ZDOTC EXTERNAL LSAME, ZDOTC * .. * .. External Subroutines .. EXTERNAL XERBLA, ZDSCAL, ZHPR, ZTPSV * .. * .. Intrinsic Functions .. INTRINSIC DBLE, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZPPTRF', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( UPPER ) THEN * * Compute the Cholesky factorization A = U**H * U. * JJ = 0 DO 10 J = 1, N JC = JJ + 1 JJ = JJ + J * * Compute elements 1:J-1 of column J. * IF( J.GT.1 ) $ CALL ZTPSV( 'Upper', 'Conjugate transpose', 'Non-unit', $ J-1, AP, AP( JC ), 1 ) * * Compute U(J,J) and test for non-positive-definiteness. * AJJ = DBLE( AP( JJ ) ) - ZDOTC( J-1, AP( JC ), 1, AP( JC ), $ 1 ) IF( AJJ.LE.ZERO ) THEN AP( JJ ) = AJJ GO TO 30 END IF AP( JJ ) = SQRT( AJJ ) 10 CONTINUE ELSE * * Compute the Cholesky factorization A = L * L**H. * JJ = 1 DO 20 J = 1, N * * Compute L(J,J) and test for non-positive-definiteness. * AJJ = DBLE( AP( JJ ) ) IF( AJJ.LE.ZERO ) THEN AP( JJ ) = AJJ GO TO 30 END IF AJJ = SQRT( AJJ ) AP( JJ ) = AJJ * * Compute elements J+1:N of column J and update the trailing * submatrix. * IF( J.LT.N ) THEN CALL ZDSCAL( N-J, ONE / AJJ, AP( JJ+1 ), 1 ) CALL ZHPR( 'Lower', N-J, -ONE, AP( JJ+1 ), 1, $ AP( JJ+N-J+1 ) ) JJ = JJ + N - J + 1 END IF 20 CONTINUE END IF GO TO 40 * 30 CONTINUE INFO = J * 40 CONTINUE RETURN * * End of ZPPTRF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/ztrevc.f0000644002504400250440000000005012337331322016614 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/ztrevc.f0000644002504400250440000003520012337331322017360 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTREVC * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZTREVC + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZTREVC( SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, * LDVR, MM, M, WORK, RWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER HOWMNY, SIDE * INTEGER INFO, LDT, LDVL, LDVR, M, MM, N * .. * .. Array Arguments .. * LOGICAL SELECT( * ) * DOUBLE PRECISION RWORK( * ) * COMPLEX*16 T( LDT, * ), VL( LDVL, * ), VR( LDVR, * ), * $ WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTREVC computes some or all of the right and/or left eigenvectors of *> a complex upper triangular matrix T. *> Matrices of this type are produced by the Schur factorization of *> a complex general matrix: A = Q*T*Q**H, as computed by ZHSEQR. *> *> The right eigenvector x and the left eigenvector y of T corresponding *> to an eigenvalue w are defined by: *> *> T*x = w*x, (y**H)*T = w*(y**H) *> *> where y**H denotes the conjugate transpose of the vector y. *> The eigenvalues are not input to this routine, but are read directly *> from the diagonal of T. *> *> This routine returns the matrices X and/or Y of right and left *> eigenvectors of T, or the products Q*X and/or Q*Y, where Q is an *> input matrix. If Q is the unitary factor that reduces a matrix A to *> Schur form T, then Q*X and Q*Y are the matrices of right and left *> eigenvectors of A. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'R': compute right eigenvectors only; *> = 'L': compute left eigenvectors only; *> = 'B': compute both right and left eigenvectors. *> \endverbatim *> *> \param[in] HOWMNY *> \verbatim *> HOWMNY is CHARACTER*1 *> = 'A': compute all right and/or left eigenvectors; *> = 'B': compute all right and/or left eigenvectors, *> backtransformed using the matrices supplied in *> VR and/or VL; *> = 'S': compute selected right and/or left eigenvectors, *> as indicated by the logical array SELECT. *> \endverbatim *> *> \param[in] SELECT *> \verbatim *> SELECT is LOGICAL array, dimension (N) *> If HOWMNY = 'S', SELECT specifies the eigenvectors to be *> computed. *> The eigenvector corresponding to the j-th eigenvalue is *> computed if SELECT(j) = .TRUE.. *> Not referenced if HOWMNY = 'A' or 'B'. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix T. N >= 0. *> \endverbatim *> *> \param[in,out] T *> \verbatim *> T is COMPLEX*16 array, dimension (LDT,N) *> The upper triangular matrix T. T is modified, but restored *> on exit. *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> *> \param[in,out] VL *> \verbatim *> VL is COMPLEX*16 array, dimension (LDVL,MM) *> On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must *> contain an N-by-N matrix Q (usually the unitary matrix Q of *> Schur vectors returned by ZHSEQR). *> On exit, if SIDE = 'L' or 'B', VL contains: *> if HOWMNY = 'A', the matrix Y of left eigenvectors of T; *> if HOWMNY = 'B', the matrix Q*Y; *> if HOWMNY = 'S', the left eigenvectors of T specified by *> SELECT, stored consecutively in the columns *> of VL, in the same order as their *> eigenvalues. *> Not referenced if SIDE = 'R'. *> \endverbatim *> *> \param[in] LDVL *> \verbatim *> LDVL is INTEGER *> The leading dimension of the array VL. LDVL >= 1, and if *> SIDE = 'L' or 'B', LDVL >= N. *> \endverbatim *> *> \param[in,out] VR *> \verbatim *> VR is COMPLEX*16 array, dimension (LDVR,MM) *> On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must *> contain an N-by-N matrix Q (usually the unitary matrix Q of *> Schur vectors returned by ZHSEQR). *> On exit, if SIDE = 'R' or 'B', VR contains: *> if HOWMNY = 'A', the matrix X of right eigenvectors of T; *> if HOWMNY = 'B', the matrix Q*X; *> if HOWMNY = 'S', the right eigenvectors of T specified by *> SELECT, stored consecutively in the columns *> of VR, in the same order as their *> eigenvalues. *> Not referenced if SIDE = 'L'. *> \endverbatim *> *> \param[in] LDVR *> \verbatim *> LDVR is INTEGER *> The leading dimension of the array VR. LDVR >= 1, and if *> SIDE = 'R' or 'B'; LDVR >= N. *> \endverbatim *> *> \param[in] MM *> \verbatim *> MM is INTEGER *> The number of columns in the arrays VL and/or VR. MM >= M. *> \endverbatim *> *> \param[out] M *> \verbatim *> M is INTEGER *> The number of columns in the arrays VL and/or VR actually *> used to store the eigenvectors. If HOWMNY = 'A' or 'B', M *> is set to N. Each selected eigenvector occupies one *> column. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (2*N) *> \endverbatim *> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> The algorithm used in this program is basically backward (forward) *> substitution, with scaling to make the the code robust against *> possible overflow. *> *> Each eigenvector is normalized so that the element of largest *> magnitude has magnitude 1; here the magnitude of a complex number *> (x,y) is taken to be |x| + |y|. *> \endverbatim *> * ===================================================================== SUBROUTINE ZTREVC( SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, $ LDVR, MM, M, WORK, RWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER HOWMNY, SIDE INTEGER INFO, LDT, LDVL, LDVR, M, MM, N * .. * .. Array Arguments .. LOGICAL SELECT( * ) DOUBLE PRECISION RWORK( * ) COMPLEX*16 T( LDT, * ), VL( LDVL, * ), VR( LDVR, * ), $ WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) COMPLEX*16 CMZERO, CMONE PARAMETER ( CMZERO = ( 0.0D+0, 0.0D+0 ), $ CMONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL ALLV, BOTHV, LEFTV, OVER, RIGHTV, SOMEV INTEGER I, II, IS, J, K, KI DOUBLE PRECISION OVFL, REMAX, SCALE, SMIN, SMLNUM, ULP, UNFL COMPLEX*16 CDUM * .. * .. External Functions .. LOGICAL LSAME INTEGER IZAMAX DOUBLE PRECISION DLAMCH, DZASUM EXTERNAL LSAME, IZAMAX, DLAMCH, DZASUM * .. * .. External Subroutines .. EXTERNAL XERBLA, ZCOPY, ZDSCAL, ZGEMV, ZLATRS * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, MAX * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. * * Decode and test the input parameters * BOTHV = LSAME( SIDE, 'B' ) RIGHTV = LSAME( SIDE, 'R' ) .OR. BOTHV LEFTV = LSAME( SIDE, 'L' ) .OR. BOTHV * ALLV = LSAME( HOWMNY, 'A' ) OVER = LSAME( HOWMNY, 'B' ) SOMEV = LSAME( HOWMNY, 'S' ) * * Set M to the number of columns required to store the selected * eigenvectors. * IF( SOMEV ) THEN M = 0 DO 10 J = 1, N IF( SELECT( J ) ) $ M = M + 1 10 CONTINUE ELSE M = N END IF * INFO = 0 IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN INFO = -1 ELSE IF( .NOT.ALLV .AND. .NOT.OVER .AND. .NOT.SOMEV ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( LDT.LT.MAX( 1, N ) ) THEN INFO = -6 ELSE IF( LDVL.LT.1 .OR. ( LEFTV .AND. LDVL.LT.N ) ) THEN INFO = -8 ELSE IF( LDVR.LT.1 .OR. ( RIGHTV .AND. LDVR.LT.N ) ) THEN INFO = -10 ELSE IF( MM.LT.M ) THEN INFO = -11 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZTREVC', -INFO ) RETURN END IF * * Quick return if possible. * IF( N.EQ.0 ) $ RETURN * * Set the constants to control overflow. * UNFL = DLAMCH( 'Safe minimum' ) OVFL = ONE / UNFL CALL DLABAD( UNFL, OVFL ) ULP = DLAMCH( 'Precision' ) SMLNUM = UNFL*( N / ULP ) * * Store the diagonal elements of T in working array WORK. * DO 20 I = 1, N WORK( I+N ) = T( I, I ) 20 CONTINUE * * Compute 1-norm of each column of strictly upper triangular * part of T to control overflow in triangular solver. * RWORK( 1 ) = ZERO DO 30 J = 2, N RWORK( J ) = DZASUM( J-1, T( 1, J ), 1 ) 30 CONTINUE * IF( RIGHTV ) THEN * * Compute right eigenvectors. * IS = M DO 80 KI = N, 1, -1 * IF( SOMEV ) THEN IF( .NOT.SELECT( KI ) ) $ GO TO 80 END IF SMIN = MAX( ULP*( CABS1( T( KI, KI ) ) ), SMLNUM ) * WORK( 1 ) = CMONE * * Form right-hand side. * DO 40 K = 1, KI - 1 WORK( K ) = -T( K, KI ) 40 CONTINUE * * Solve the triangular system: * (T(1:KI-1,1:KI-1) - T(KI,KI))*X = SCALE*WORK. * DO 50 K = 1, KI - 1 T( K, K ) = T( K, K ) - T( KI, KI ) IF( CABS1( T( K, K ) ).LT.SMIN ) $ T( K, K ) = SMIN 50 CONTINUE * IF( KI.GT.1 ) THEN CALL ZLATRS( 'Upper', 'No transpose', 'Non-unit', 'Y', $ KI-1, T, LDT, WORK( 1 ), SCALE, RWORK, $ INFO ) WORK( KI ) = SCALE END IF * * Copy the vector x or Q*x to VR and normalize. * IF( .NOT.OVER ) THEN CALL ZCOPY( KI, WORK( 1 ), 1, VR( 1, IS ), 1 ) * II = IZAMAX( KI, VR( 1, IS ), 1 ) REMAX = ONE / CABS1( VR( II, IS ) ) CALL ZDSCAL( KI, REMAX, VR( 1, IS ), 1 ) * DO 60 K = KI + 1, N VR( K, IS ) = CMZERO 60 CONTINUE ELSE IF( KI.GT.1 ) $ CALL ZGEMV( 'N', N, KI-1, CMONE, VR, LDVR, WORK( 1 ), $ 1, DCMPLX( SCALE ), VR( 1, KI ), 1 ) * II = IZAMAX( N, VR( 1, KI ), 1 ) REMAX = ONE / CABS1( VR( II, KI ) ) CALL ZDSCAL( N, REMAX, VR( 1, KI ), 1 ) END IF * * Set back the original diagonal elements of T. * DO 70 K = 1, KI - 1 T( K, K ) = WORK( K+N ) 70 CONTINUE * IS = IS - 1 80 CONTINUE END IF * IF( LEFTV ) THEN * * Compute left eigenvectors. * IS = 1 DO 130 KI = 1, N * IF( SOMEV ) THEN IF( .NOT.SELECT( KI ) ) $ GO TO 130 END IF SMIN = MAX( ULP*( CABS1( T( KI, KI ) ) ), SMLNUM ) * WORK( N ) = CMONE * * Form right-hand side. * DO 90 K = KI + 1, N WORK( K ) = -DCONJG( T( KI, K ) ) 90 CONTINUE * * Solve the triangular system: * (T(KI+1:N,KI+1:N) - T(KI,KI))**H * X = SCALE*WORK. * DO 100 K = KI + 1, N T( K, K ) = T( K, K ) - T( KI, KI ) IF( CABS1( T( K, K ) ).LT.SMIN ) $ T( K, K ) = SMIN 100 CONTINUE * IF( KI.LT.N ) THEN CALL ZLATRS( 'Upper', 'Conjugate transpose', 'Non-unit', $ 'Y', N-KI, T( KI+1, KI+1 ), LDT, $ WORK( KI+1 ), SCALE, RWORK, INFO ) WORK( KI ) = SCALE END IF * * Copy the vector x or Q*x to VL and normalize. * IF( .NOT.OVER ) THEN CALL ZCOPY( N-KI+1, WORK( KI ), 1, VL( KI, IS ), 1 ) * II = IZAMAX( N-KI+1, VL( KI, IS ), 1 ) + KI - 1 REMAX = ONE / CABS1( VL( II, IS ) ) CALL ZDSCAL( N-KI+1, REMAX, VL( KI, IS ), 1 ) * DO 110 K = 1, KI - 1 VL( K, IS ) = CMZERO 110 CONTINUE ELSE IF( KI.LT.N ) $ CALL ZGEMV( 'N', N, N-KI, CMONE, VL( 1, KI+1 ), LDVL, $ WORK( KI+1 ), 1, DCMPLX( SCALE ), $ VL( 1, KI ), 1 ) * II = IZAMAX( N, VL( 1, KI ), 1 ) REMAX = ONE / CABS1( VL( II, KI ) ) CALL ZDSCAL( N, REMAX, VL( 1, KI ), 1 ) END IF * * Set back the original diagonal elements of T. * DO 120 K = KI + 1, N T( K, K ) = WORK( K+N ) 120 CONTINUE * IS = IS + 1 130 CONTINUE END IF * RETURN * * End of ZTREVC * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zladiv.f0000644002504400250440000000005012337331322016570 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zladiv.f0000644002504400250440000000461312337331322017340 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLADIV performs complex division in real arithmetic, avoiding unnecessary overflow. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLADIV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * COMPLEX*16 FUNCTION ZLADIV( X, Y ) * * .. Scalar Arguments .. * COMPLEX*16 X, Y * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLADIV := X / Y, where X and Y are complex. The computation of X / Y *> will not overflow on an intermediary step unless the results *> overflows. *> \endverbatim * * Arguments: * ========== * *> \param[in] X *> \verbatim *> X is COMPLEX*16 *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is COMPLEX*16 *> The complex scalars X and Y. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== COMPLEX*16 FUNCTION ZLADIV( X, Y ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. COMPLEX*16 X, Y * .. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION ZI, ZR * .. * .. External Subroutines .. EXTERNAL DLADIV * .. * .. Intrinsic Functions .. INTRINSIC DBLE, DCMPLX, DIMAG * .. * .. Executable Statements .. * CALL DLADIV( DBLE( X ), DIMAG( X ), DBLE( Y ), DIMAG( Y ), ZR, $ ZI ) ZLADIV = DCMPLX( ZR, ZI ) * RETURN * * End of ZLADIV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zunmqr.f0000644002504400250440000000005012337331322016633 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zunmqr.f0000644002504400250440000002252012337331322017400 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNMQR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNMQR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER INFO, K, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNMQR overwrites the general complex M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q *> TRANS = 'C': Q**H * C C * Q**H *> *> where Q is a complex unitary matrix defined as the product of k *> elementary reflectors *> *> Q = H(1) H(2) . . . H(k) *> *> as returned by ZGEQRF. Q is of order M if SIDE = 'L' and of order N *> if SIDE = 'R'. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**H from the Left; *> = 'R': apply Q or Q**H from the Right. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': No transpose, apply Q; *> = 'C': Conjugate transpose, apply Q**H. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines *> the matrix Q. *> If SIDE = 'L', M >= K >= 0; *> if SIDE = 'R', N >= K >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> ZGEQRF in the first k columns of its array argument A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDA >= max(1,M); *> if SIDE = 'R', LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEQRF. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. *> If SIDE = 'L', LWORK >= max(1,N); *> if SIDE = 'R', LWORK >= max(1,M). *> For optimum performance LWORK >= N*NB if SIDE = 'L', and *> LWORK >= M*NB if SIDE = 'R', where NB is the optimal *> blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER INFO, K, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. INTEGER NBMAX, LDT PARAMETER ( NBMAX = 64, LDT = NBMAX+1 ) * .. * .. Local Scalars .. LOGICAL LEFT, LQUERY, NOTRAN INTEGER I, I1, I2, I3, IB, IC, IINFO, IWS, JC, LDWORK, $ LWKOPT, MI, NB, NBMIN, NI, NQ, NW * .. * .. Local Arrays .. COMPLEX*16 T( LDT, NBMAX ) * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNM2R * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) LQUERY = ( LWORK.EQ.-1 ) * * NQ is the order of Q and NW is the minimum dimension of WORK * IF( LEFT ) THEN NQ = M NW = N ELSE NQ = N NW = M END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * IF( INFO.EQ.0 ) THEN * * Determine the block size. NB may be at most NBMAX, where NBMAX * is used to define the local array T. * NB = MIN( NBMAX, ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, N, K, $ -1 ) ) LWKOPT = MAX( 1, NW )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNMQR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NBMIN = 2 LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IWS = NW*NB IF( LWORK.LT.IWS ) THEN NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'ZUNMQR', SIDE // TRANS, M, N, K, $ -1 ) ) END IF ELSE IWS = NW END IF * IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN * * Use unblocked code * CALL ZUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, $ IINFO ) ELSE * * Use blocked code * IF( ( LEFT .AND. .NOT.NOTRAN ) .OR. $ ( .NOT.LEFT .AND. NOTRAN ) ) THEN I1 = 1 I2 = K I3 = NB ELSE I1 = ( ( K-1 ) / NB )*NB + 1 I2 = 1 I3 = -NB END IF * IF( LEFT ) THEN NI = N JC = 1 ELSE MI = M IC = 1 END IF * DO 10 I = I1, I2, I3 IB = MIN( NB, K-I+1 ) * * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * CALL ZLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ), $ LDA, TAU( I ), T, LDT ) IF( LEFT ) THEN * * H or H**H is applied to C(i:m,1:n) * MI = M - I + 1 IC = I ELSE * * H or H**H is applied to C(1:m,i:n) * NI = N - I + 1 JC = I END IF * * Apply H or H**H * CALL ZLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI, $ IB, A( I, I ), LDA, T, LDT, C( IC, JC ), LDC, $ WORK, LDWORK ) 10 CONTINUE END IF WORK( 1 ) = LWKOPT RETURN * * End of ZUNMQR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zunmtr.f0000644002504400250440000000005012337331322016636 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zunmtr.f0000644002504400250440000002114312337331322017403 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNMTR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNMTR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, * WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS, UPLO * INTEGER INFO, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNMTR overwrites the general complex M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q *> TRANS = 'C': Q**H * C C * Q**H *> *> where Q is a complex unitary matrix of order nq, with nq = m if *> SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of *> nq-1 elementary reflectors, as returned by ZHETRD: *> *> if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1); *> *> if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1). *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**H from the Left; *> = 'R': apply Q or Q**H from the Right. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A contains elementary reflectors *> from ZHETRD; *> = 'L': Lower triangle of A contains elementary reflectors *> from ZHETRD. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': No transpose, apply Q; *> = 'C': Conjugate transpose, apply Q**H. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension *> (LDA,M) if SIDE = 'L' *> (LDA,N) if SIDE = 'R' *> The vectors which define the elementary reflectors, as *> returned by ZHETRD. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> LDA >= max(1,M) if SIDE = 'L'; LDA >= max(1,N) if SIDE = 'R'. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension *> (M-1) if SIDE = 'L' *> (N-1) if SIDE = 'R' *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZHETRD. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. *> If SIDE = 'L', LWORK >= max(1,N); *> if SIDE = 'R', LWORK >= max(1,M). *> For optimum performance LWORK >= N*NB if SIDE = 'L', and *> LWORK >=M*NB if SIDE = 'R', where NB is the optimal *> blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS, UPLO INTEGER INFO, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Local Scalars .. LOGICAL LEFT, LQUERY, UPPER INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZUNMQL, ZUNMQR * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) UPPER = LSAME( UPLO, 'U' ) LQUERY = ( LWORK.EQ.-1 ) * * NQ is the order of Q and NW is the minimum dimension of WORK * IF( LEFT ) THEN NQ = M NW = N ELSE NQ = N NW = M END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( .NOT.LSAME( TRANS, 'N' ) .AND. .NOT.LSAME( TRANS, 'C' ) ) $ THEN INFO = -3 ELSE IF( M.LT.0 ) THEN INFO = -4 ELSE IF( N.LT.0 ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * IF( INFO.EQ.0 ) THEN IF( UPPER ) THEN IF( LEFT ) THEN NB = ILAENV( 1, 'ZUNMQL', SIDE // TRANS, M-1, N, M-1, $ -1 ) ELSE NB = ILAENV( 1, 'ZUNMQL', SIDE // TRANS, M, N-1, N-1, $ -1 ) END IF ELSE IF( LEFT ) THEN NB = ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M-1, N, M-1, $ -1 ) ELSE NB = ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, N-1, N-1, $ -1 ) END IF END IF LWKOPT = MAX( 1, NW )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNMTR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. NQ.EQ.1 ) THEN WORK( 1 ) = 1 RETURN END IF * IF( LEFT ) THEN MI = M - 1 NI = N ELSE MI = M NI = N - 1 END IF * IF( UPPER ) THEN * * Q was determined by a call to ZHETRD with UPLO = 'U' * CALL ZUNMQL( SIDE, TRANS, MI, NI, NQ-1, A( 1, 2 ), LDA, TAU, C, $ LDC, WORK, LWORK, IINFO ) ELSE * * Q was determined by a call to ZHETRD with UPLO = 'L' * IF( LEFT ) THEN I1 = 2 I2 = 1 ELSE I1 = 1 I2 = 2 END IF CALL ZUNMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU, $ C( I1, I2 ), LDC, WORK, LWORK, IINFO ) END IF WORK( 1 ) = LWKOPT RETURN * * End of ZUNMTR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dormtr.f0000644002504400250440000000005012337331322016606 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dormtr.f0000644002504400250440000002115412337331322017355 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORMTR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORMTR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, * WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS, UPLO * INTEGER INFO, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORMTR overwrites the general real M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q *> TRANS = 'T': Q**T * C C * Q**T *> *> where Q is a real orthogonal matrix of order nq, with nq = m if *> SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of *> nq-1 elementary reflectors, as returned by DSYTRD: *> *> if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1); *> *> if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1). *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**T from the Left; *> = 'R': apply Q or Q**T from the Right. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A contains elementary reflectors *> from DSYTRD; *> = 'L': Lower triangle of A contains elementary reflectors *> from DSYTRD. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': No transpose, apply Q; *> = 'T': Transpose, apply Q**T. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension *> (LDA,M) if SIDE = 'L' *> (LDA,N) if SIDE = 'R' *> The vectors which define the elementary reflectors, as *> returned by DSYTRD. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> LDA >= max(1,M) if SIDE = 'L'; LDA >= max(1,N) if SIDE = 'R'. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension *> (M-1) if SIDE = 'L' *> (N-1) if SIDE = 'R' *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DSYTRD. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. *> If SIDE = 'L', LWORK >= max(1,N); *> if SIDE = 'R', LWORK >= max(1,M). *> For optimum performance LWORK >= N*NB if SIDE = 'L', and *> LWORK >= M*NB if SIDE = 'R', where NB is the optimal *> blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS, UPLO INTEGER INFO, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Local Scalars .. LOGICAL LEFT, LQUERY, UPPER INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DORMQL, DORMQR, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) UPPER = LSAME( UPLO, 'U' ) LQUERY = ( LWORK.EQ.-1 ) * * NQ is the order of Q and NW is the minimum dimension of WORK * IF( LEFT ) THEN NQ = M NW = N ELSE NQ = N NW = M END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( .NOT.LSAME( TRANS, 'N' ) .AND. .NOT.LSAME( TRANS, 'T' ) ) $ THEN INFO = -3 ELSE IF( M.LT.0 ) THEN INFO = -4 ELSE IF( N.LT.0 ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * IF( INFO.EQ.0 ) THEN IF( UPPER ) THEN IF( LEFT ) THEN NB = ILAENV( 1, 'DORMQL', SIDE // TRANS, M-1, N, M-1, $ -1 ) ELSE NB = ILAENV( 1, 'DORMQL', SIDE // TRANS, M, N-1, N-1, $ -1 ) END IF ELSE IF( LEFT ) THEN NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, M-1, N, M-1, $ -1 ) ELSE NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N-1, N-1, $ -1 ) END IF END IF LWKOPT = MAX( 1, NW )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORMTR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. NQ.EQ.1 ) THEN WORK( 1 ) = 1 RETURN END IF * IF( LEFT ) THEN MI = M - 1 NI = N ELSE MI = M NI = N - 1 END IF * IF( UPPER ) THEN * * Q was determined by a call to DSYTRD with UPLO = 'U' * CALL DORMQL( SIDE, TRANS, MI, NI, NQ-1, A( 1, 2 ), LDA, TAU, C, $ LDC, WORK, LWORK, IINFO ) ELSE * * Q was determined by a call to DSYTRD with UPLO = 'L' * IF( LEFT ) THEN I1 = 2 I2 = 1 ELSE I1 = 1 I2 = 2 END IF CALL DORMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU, $ C( I1, I2 ), LDC, WORK, LWORK, IINFO ) END IF WORK( 1 ) = LWKOPT RETURN * * End of DORMTR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlange.f0000644002504400250440000000005012337331322016557 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlange.f0000644002504400250440000001344112337331322017326 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value of any element of a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLANGE + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * DOUBLE PRECISION FUNCTION ZLANGE( NORM, M, N, A, LDA, WORK ) * * .. Scalar Arguments .. * CHARACTER NORM * INTEGER LDA, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION WORK( * ) * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLANGE returns the value of the one norm, or the Frobenius norm, or *> the infinity norm, or the element of largest absolute value of a *> complex matrix A. *> \endverbatim *> *> \return ZLANGE *> \verbatim *> *> ZLANGE = ( max(abs(A(i,j))), NORM = 'M' or 'm' *> ( *> ( norm1(A), NORM = '1', 'O' or 'o' *> ( *> ( normI(A), NORM = 'I' or 'i' *> ( *> ( normF(A), NORM = 'F', 'f', 'E' or 'e' *> *> where norm1 denotes the one norm of a matrix (maximum column sum), *> normI denotes the infinity norm of a matrix (maximum row sum) and *> normF denotes the Frobenius norm of a matrix (square root of sum of *> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm. *> \endverbatim * * Arguments: * ========== * *> \param[in] NORM *> \verbatim *> NORM is CHARACTER*1 *> Specifies the value to be returned in ZLANGE as described *> above. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. When M = 0, *> ZLANGE is set to zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. When N = 0, *> ZLANGE is set to zero. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The m by n matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(M,1). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)), *> where LWORK >= M when NORM = 'I'; otherwise, WORK is not *> referenced. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16GEauxiliary * * ===================================================================== DOUBLE PRECISION FUNCTION ZLANGE( NORM, M, N, A, LDA, WORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER NORM INTEGER LDA, M, N * .. * .. Array Arguments .. DOUBLE PRECISION WORK( * ) COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, J DOUBLE PRECISION SCALE, SUM, VALUE, TEMP * .. * .. External Functions .. LOGICAL LSAME, DISNAN EXTERNAL LSAME, DISNAN * .. * .. External Subroutines .. EXTERNAL ZLASSQ * .. * .. Intrinsic Functions .. INTRINSIC ABS, MIN, SQRT * .. * .. Executable Statements .. * IF( MIN( M, N ).EQ.0 ) THEN VALUE = ZERO ELSE IF( LSAME( NORM, 'M' ) ) THEN * * Find max(abs(A(i,j))). * VALUE = ZERO DO 20 J = 1, N DO 10 I = 1, M TEMP = ABS( A( I, J ) ) IF( VALUE.LT.TEMP .OR. DISNAN( TEMP ) ) VALUE = TEMP 10 CONTINUE 20 CONTINUE ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN * * Find norm1(A). * VALUE = ZERO DO 40 J = 1, N SUM = ZERO DO 30 I = 1, M SUM = SUM + ABS( A( I, J ) ) 30 CONTINUE IF( VALUE.LT.SUM .OR. DISNAN( SUM ) ) VALUE = SUM 40 CONTINUE ELSE IF( LSAME( NORM, 'I' ) ) THEN * * Find normI(A). * DO 50 I = 1, M WORK( I ) = ZERO 50 CONTINUE DO 70 J = 1, N DO 60 I = 1, M WORK( I ) = WORK( I ) + ABS( A( I, J ) ) 60 CONTINUE 70 CONTINUE VALUE = ZERO DO 80 I = 1, M TEMP = WORK( I ) IF( VALUE.LT.TEMP .OR. DISNAN( TEMP ) ) VALUE = TEMP 80 CONTINUE ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN * * Find normF(A). * SCALE = ZERO SUM = ONE DO 90 J = 1, N CALL ZLASSQ( M, A( 1, J ), 1, SCALE, SUM ) 90 CONTINUE VALUE = SCALE*SQRT( SUM ) END IF * ZLANGE = VALUE RETURN * * End of ZLANGE * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/ilazlr.f0000644002504400250440000000005012337331322016574 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/ilazlr.f0000644002504400250440000000576412337331322017354 0ustar00dewhurstdewhurst00000000000000*> \brief \b ILAZLR scans a matrix for its last non-zero row. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ILAZLR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * INTEGER FUNCTION ILAZLR( M, N, A, LDA ) * * .. Scalar Arguments .. * INTEGER M, N, LDA * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ILAZLR scans A for its last non-zero row. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The m by n matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== INTEGER FUNCTION ILAZLR( M, N, A, LDA ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER M, N, LDA * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER ( ZERO = (0.0D+0, 0.0D+0) ) * .. * .. Local Scalars .. INTEGER I, J * .. * .. Executable Statements .. * * Quick test for the common case where one corner is non-zero. IF( M.EQ.0 ) THEN ILAZLR = M ELSE IF( A(M, 1).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN ILAZLR = M ELSE * Scan up each column tracking the last zero row seen. ILAZLR = 0 DO J = 1, N I=M DO WHILE((A(MAX(I,1),J).EQ.ZERO).AND.(I.GE.1)) I=I-1 ENDDO ILAZLR = MAX( ILAZLR, I ) END DO END IF RETURN END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dorm2l.f0000644002504400250440000000005012337331322016476 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dorm2l.f0000644002504400250440000001624312337331322017250 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORM2L multiplies a general matrix by the orthogonal matrix from a QL factorization determined by sgeqlf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORM2L + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER INFO, K, LDA, LDC, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORM2L overwrites the general real m by n matrix C with *> *> Q * C if SIDE = 'L' and TRANS = 'N', or *> *> Q**T * C if SIDE = 'L' and TRANS = 'T', or *> *> C * Q if SIDE = 'R' and TRANS = 'N', or *> *> C * Q**T if SIDE = 'R' and TRANS = 'T', *> *> where Q is a real orthogonal matrix defined as the product of k *> elementary reflectors *> *> Q = H(k) . . . H(2) H(1) *> *> as returned by DGEQLF. Q is of order m if SIDE = 'L' and of order n *> if SIDE = 'R'. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**T from the Left *> = 'R': apply Q or Q**T from the Right *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': apply Q (No transpose) *> = 'T': apply Q**T (Transpose) *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines *> the matrix Q. *> If SIDE = 'L', M >= K >= 0; *> if SIDE = 'R', N >= K >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DGEQLF in the last k columns of its array argument A. *> A is modified by the routine but restored on exit. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDA >= max(1,M); *> if SIDE = 'R', LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DGEQLF. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> On entry, the m by n matrix C. *> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension *> (N) if SIDE = 'L', *> (M) if SIDE = 'R' *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER INFO, K, LDA, LDC, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL LEFT, NOTRAN INTEGER I, I1, I2, I3, MI, NI, NQ DOUBLE PRECISION AII * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL DLARF, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) * * NQ is the order of Q * IF( LEFT ) THEN NQ = M ELSE NQ = N END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORM2L', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) $ RETURN * IF( ( LEFT .AND. NOTRAN ) .OR. ( .NOT.LEFT .AND. .NOT.NOTRAN ) ) $ THEN I1 = 1 I2 = K I3 = 1 ELSE I1 = K I2 = 1 I3 = -1 END IF * IF( LEFT ) THEN NI = N ELSE MI = M END IF * DO 10 I = I1, I2, I3 IF( LEFT ) THEN * * H(i) is applied to C(1:m-k+i,1:n) * MI = M - K + I ELSE * * H(i) is applied to C(1:m,1:n-k+i) * NI = N - K + I END IF * * Apply H(i) * AII = A( NQ-K+I, I ) A( NQ-K+I, I ) = ONE CALL DLARF( SIDE, MI, NI, A( 1, I ), 1, TAU( I ), C, LDC, $ WORK ) A( NQ-K+I, I ) = AII 10 CONTINUE RETURN * * End of DORM2L * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlassq.f0000644002504400250440000000005012337331322016614 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlassq.f0000644002504400250440000001123712337331322017364 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLASSQ updates a sum of squares represented in scaled form. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLASSQ + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLASSQ( N, X, INCX, SCALE, SUMSQ ) * * .. Scalar Arguments .. * INTEGER INCX, N * DOUBLE PRECISION SCALE, SUMSQ * .. * .. Array Arguments .. * COMPLEX*16 X( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLASSQ returns the values scl and ssq such that *> *> ( scl**2 )*ssq = x( 1 )**2 +...+ x( n )**2 + ( scale**2 )*sumsq, *> *> where x( i ) = abs( X( 1 + ( i - 1 )*INCX ) ). The value of sumsq is *> assumed to be at least unity and the value of ssq will then satisfy *> *> 1.0 .le. ssq .le. ( sumsq + 2*n ). *> *> scale is assumed to be non-negative and scl returns the value *> *> scl = max( scale, abs( real( x( i ) ) ), abs( aimag( x( i ) ) ) ), *> i *> *> scale and sumsq must be supplied in SCALE and SUMSQ respectively. *> SCALE and SUMSQ are overwritten by scl and ssq respectively. *> *> The routine makes only one pass through the vector X. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The number of elements to be used from the vector X. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array, dimension (N) *> The vector x as described above. *> x( i ) = X( 1 + ( i - 1 )*INCX ), 1 <= i <= n. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The increment between successive values of the vector X. *> INCX > 0. *> \endverbatim *> *> \param[in,out] SCALE *> \verbatim *> SCALE is DOUBLE PRECISION *> On entry, the value scale in the equation above. *> On exit, SCALE is overwritten with the value scl . *> \endverbatim *> *> \param[in,out] SUMSQ *> \verbatim *> SUMSQ is DOUBLE PRECISION *> On entry, the value sumsq in the equation above. *> On exit, SUMSQ is overwritten with the value ssq . *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZLASSQ( N, X, INCX, SCALE, SUMSQ ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INCX, N DOUBLE PRECISION SCALE, SUMSQ * .. * .. Array Arguments .. COMPLEX*16 X( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER IX DOUBLE PRECISION TEMP1 * .. * .. External Functions .. LOGICAL DISNAN EXTERNAL DISNAN * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DIMAG * .. * .. Executable Statements .. * IF( N.GT.0 ) THEN DO 10 IX = 1, 1 + ( N-1 )*INCX, INCX TEMP1 = ABS( DBLE( X( IX ) ) ) IF( TEMP1.GT.ZERO.OR.DISNAN( TEMP1 ) ) THEN IF( SCALE.LT.TEMP1 ) THEN SUMSQ = 1 + SUMSQ*( SCALE / TEMP1 )**2 SCALE = TEMP1 ELSE SUMSQ = SUMSQ + ( TEMP1 / SCALE )**2 END IF END IF TEMP1 = ABS( DIMAG( X( IX ) ) ) IF( TEMP1.GT.ZERO.OR.DISNAN( TEMP1 ) ) THEN IF( SCALE.LT.TEMP1 ) THEN SUMSQ = 1 + SUMSQ*( SCALE / TEMP1 )**2 SCALE = TEMP1 ELSE SUMSQ = SUMSQ + ( TEMP1 / SCALE )**2 END IF END IF 10 CONTINUE END IF * RETURN * * End of ZLASSQ * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dorm2r.f0000644002504400250440000000005012337331322016504 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dorm2r.f0000644002504400250440000001634412337331322017260 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sgeqrf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORM2R + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER INFO, K, LDA, LDC, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORM2R overwrites the general real m by n matrix C with *> *> Q * C if SIDE = 'L' and TRANS = 'N', or *> *> Q**T* C if SIDE = 'L' and TRANS = 'T', or *> *> C * Q if SIDE = 'R' and TRANS = 'N', or *> *> C * Q**T if SIDE = 'R' and TRANS = 'T', *> *> where Q is a real orthogonal matrix defined as the product of k *> elementary reflectors *> *> Q = H(1) H(2) . . . H(k) *> *> as returned by DGEQRF. Q is of order m if SIDE = 'L' and of order n *> if SIDE = 'R'. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**T from the Left *> = 'R': apply Q or Q**T from the Right *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': apply Q (No transpose) *> = 'T': apply Q**T (Transpose) *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines *> the matrix Q. *> If SIDE = 'L', M >= K >= 0; *> if SIDE = 'R', N >= K >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DGEQRF in the first k columns of its array argument A. *> A is modified by the routine but restored on exit. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDA >= max(1,M); *> if SIDE = 'R', LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DGEQRF. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> On entry, the m by n matrix C. *> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension *> (N) if SIDE = 'L', *> (M) if SIDE = 'R' *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER INFO, K, LDA, LDC, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL LEFT, NOTRAN INTEGER I, I1, I2, I3, IC, JC, MI, NI, NQ DOUBLE PRECISION AII * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL DLARF, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) * * NQ is the order of Q * IF( LEFT ) THEN NQ = M ELSE NQ = N END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORM2R', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) $ RETURN * IF( ( LEFT .AND. .NOT.NOTRAN ) .OR. ( .NOT.LEFT .AND. NOTRAN ) ) $ THEN I1 = 1 I2 = K I3 = 1 ELSE I1 = K I2 = 1 I3 = -1 END IF * IF( LEFT ) THEN NI = N JC = 1 ELSE MI = M IC = 1 END IF * DO 10 I = I1, I2, I3 IF( LEFT ) THEN * * H(i) is applied to C(i:m,1:n) * MI = M - I + 1 IC = I ELSE * * H(i) is applied to C(1:m,i:n) * NI = N - I + 1 JC = I END IF * * Apply H(i) * AII = A( I, I ) A( I, I ) = ONE CALL DLARF( SIDE, MI, NI, A( I, I ), 1, TAU( I ), C( IC, JC ), $ LDC, WORK ) A( I, I ) = AII 10 CONTINUE RETURN * * End of DORM2R * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zsteqr.f0000644002504400250440000000005012337331322016627 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zsteqr.f0000644002504400250440000003663012337331322017403 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZSTEQR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZSTEQR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZSTEQR( COMPZ, N, D, E, Z, LDZ, WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER COMPZ * INTEGER INFO, LDZ, N * .. * .. Array Arguments .. * DOUBLE PRECISION D( * ), E( * ), WORK( * ) * COMPLEX*16 Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZSTEQR computes all eigenvalues and, optionally, eigenvectors of a *> symmetric tridiagonal matrix using the implicit QL or QR method. *> The eigenvectors of a full or band complex Hermitian matrix can also *> be found if ZHETRD or ZHPTRD or ZHBTRD has been used to reduce this *> matrix to tridiagonal form. *> \endverbatim * * Arguments: * ========== * *> \param[in] COMPZ *> \verbatim *> COMPZ is CHARACTER*1 *> = 'N': Compute eigenvalues only. *> = 'V': Compute eigenvalues and eigenvectors of the original *> Hermitian matrix. On entry, Z must contain the *> unitary matrix used to reduce the original matrix *> to tridiagonal form. *> = 'I': Compute eigenvalues and eigenvectors of the *> tridiagonal matrix. Z is initialized to the identity *> matrix. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix. N >= 0. *> \endverbatim *> *> \param[in,out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> On entry, the diagonal elements of the tridiagonal matrix. *> On exit, if INFO = 0, the eigenvalues in ascending order. *> \endverbatim *> *> \param[in,out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> On entry, the (n-1) subdiagonal elements of the tridiagonal *> matrix. *> On exit, E has been destroyed. *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ, N) *> On entry, if COMPZ = 'V', then Z contains the unitary *> matrix used in the reduction to tridiagonal form. *> On exit, if INFO = 0, then if COMPZ = 'V', Z contains the *> orthonormal eigenvectors of the original Hermitian matrix, *> and if COMPZ = 'I', Z contains the orthonormal eigenvectors *> of the symmetric tridiagonal matrix. *> If COMPZ = 'N', then Z is not referenced. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= 1, and if *> eigenvectors are desired, then LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (max(1,2*N-2)) *> If COMPZ = 'N', then WORK is not referenced. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: the algorithm has failed to find all the eigenvalues in *> a total of 30*N iterations; if INFO = i, then i *> elements of E have not converged to zero; on exit, D *> and E contain the elements of a symmetric tridiagonal *> matrix which is unitarily similar to the original *> matrix. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZSTEQR( COMPZ, N, D, E, Z, LDZ, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER COMPZ INTEGER INFO, LDZ, N * .. * .. Array Arguments .. DOUBLE PRECISION D( * ), E( * ), WORK( * ) COMPLEX*16 Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE, TWO, THREE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0, $ THREE = 3.0D0 ) COMPLEX*16 CZERO, CONE PARAMETER ( CZERO = ( 0.0D0, 0.0D0 ), $ CONE = ( 1.0D0, 0.0D0 ) ) INTEGER MAXIT PARAMETER ( MAXIT = 30 ) * .. * .. Local Scalars .. INTEGER I, ICOMPZ, II, ISCALE, J, JTOT, K, L, L1, LEND, $ LENDM1, LENDP1, LENDSV, LM1, LSV, M, MM, MM1, $ NM1, NMAXIT DOUBLE PRECISION ANORM, B, C, EPS, EPS2, F, G, P, R, RT1, RT2, $ S, SAFMAX, SAFMIN, SSFMAX, SSFMIN, TST * .. * .. External Functions .. LOGICAL LSAME DOUBLE PRECISION DLAMCH, DLANST, DLAPY2 EXTERNAL LSAME, DLAMCH, DLANST, DLAPY2 * .. * .. External Subroutines .. EXTERNAL DLAE2, DLAEV2, DLARTG, DLASCL, DLASRT, XERBLA, $ ZLASET, ZLASR, ZSWAP * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, SIGN, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 * IF( LSAME( COMPZ, 'N' ) ) THEN ICOMPZ = 0 ELSE IF( LSAME( COMPZ, 'V' ) ) THEN ICOMPZ = 1 ELSE IF( LSAME( COMPZ, 'I' ) ) THEN ICOMPZ = 2 ELSE ICOMPZ = -1 END IF IF( ICOMPZ.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( ( LDZ.LT.1 ) .OR. ( ICOMPZ.GT.0 .AND. LDZ.LT.MAX( 1, $ N ) ) ) THEN INFO = -6 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZSTEQR', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( N.EQ.1 ) THEN IF( ICOMPZ.EQ.2 ) $ Z( 1, 1 ) = CONE RETURN END IF * * Determine the unit roundoff and over/underflow thresholds. * EPS = DLAMCH( 'E' ) EPS2 = EPS**2 SAFMIN = DLAMCH( 'S' ) SAFMAX = ONE / SAFMIN SSFMAX = SQRT( SAFMAX ) / THREE SSFMIN = SQRT( SAFMIN ) / EPS2 * * Compute the eigenvalues and eigenvectors of the tridiagonal * matrix. * IF( ICOMPZ.EQ.2 ) $ CALL ZLASET( 'Full', N, N, CZERO, CONE, Z, LDZ ) * NMAXIT = N*MAXIT JTOT = 0 * * Determine where the matrix splits and choose QL or QR iteration * for each block, according to whether top or bottom diagonal * element is smaller. * L1 = 1 NM1 = N - 1 * 10 CONTINUE IF( L1.GT.N ) $ GO TO 160 IF( L1.GT.1 ) $ E( L1-1 ) = ZERO IF( L1.LE.NM1 ) THEN DO 20 M = L1, NM1 TST = ABS( E( M ) ) IF( TST.EQ.ZERO ) $ GO TO 30 IF( TST.LE.( SQRT( ABS( D( M ) ) )*SQRT( ABS( D( M+ $ 1 ) ) ) )*EPS ) THEN E( M ) = ZERO GO TO 30 END IF 20 CONTINUE END IF M = N * 30 CONTINUE L = L1 LSV = L LEND = M LENDSV = LEND L1 = M + 1 IF( LEND.EQ.L ) $ GO TO 10 * * Scale submatrix in rows and columns L to LEND * ANORM = DLANST( 'I', LEND-L+1, D( L ), E( L ) ) ISCALE = 0 IF( ANORM.EQ.ZERO ) $ GO TO 10 IF( ANORM.GT.SSFMAX ) THEN ISCALE = 1 CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L+1, 1, D( L ), N, $ INFO ) CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L, 1, E( L ), N, $ INFO ) ELSE IF( ANORM.LT.SSFMIN ) THEN ISCALE = 2 CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L+1, 1, D( L ), N, $ INFO ) CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L, 1, E( L ), N, $ INFO ) END IF * * Choose between QL and QR iteration * IF( ABS( D( LEND ) ).LT.ABS( D( L ) ) ) THEN LEND = LSV L = LENDSV END IF * IF( LEND.GT.L ) THEN * * QL Iteration * * Look for small subdiagonal element. * 40 CONTINUE IF( L.NE.LEND ) THEN LENDM1 = LEND - 1 DO 50 M = L, LENDM1 TST = ABS( E( M ) )**2 IF( TST.LE.( EPS2*ABS( D( M ) ) )*ABS( D( M+1 ) )+ $ SAFMIN )GO TO 60 50 CONTINUE END IF * M = LEND * 60 CONTINUE IF( M.LT.LEND ) $ E( M ) = ZERO P = D( L ) IF( M.EQ.L ) $ GO TO 80 * * If remaining matrix is 2-by-2, use DLAE2 or SLAEV2 * to compute its eigensystem. * IF( M.EQ.L+1 ) THEN IF( ICOMPZ.GT.0 ) THEN CALL DLAEV2( D( L ), E( L ), D( L+1 ), RT1, RT2, C, S ) WORK( L ) = C WORK( N-1+L ) = S CALL ZLASR( 'R', 'V', 'B', N, 2, WORK( L ), $ WORK( N-1+L ), Z( 1, L ), LDZ ) ELSE CALL DLAE2( D( L ), E( L ), D( L+1 ), RT1, RT2 ) END IF D( L ) = RT1 D( L+1 ) = RT2 E( L ) = ZERO L = L + 2 IF( L.LE.LEND ) $ GO TO 40 GO TO 140 END IF * IF( JTOT.EQ.NMAXIT ) $ GO TO 140 JTOT = JTOT + 1 * * Form shift. * G = ( D( L+1 )-P ) / ( TWO*E( L ) ) R = DLAPY2( G, ONE ) G = D( M ) - P + ( E( L ) / ( G+SIGN( R, G ) ) ) * S = ONE C = ONE P = ZERO * * Inner loop * MM1 = M - 1 DO 70 I = MM1, L, -1 F = S*E( I ) B = C*E( I ) CALL DLARTG( G, F, C, S, R ) IF( I.NE.M-1 ) $ E( I+1 ) = R G = D( I+1 ) - P R = ( D( I )-G )*S + TWO*C*B P = S*R D( I+1 ) = G + P G = C*R - B * * If eigenvectors are desired, then save rotations. * IF( ICOMPZ.GT.0 ) THEN WORK( I ) = C WORK( N-1+I ) = -S END IF * 70 CONTINUE * * If eigenvectors are desired, then apply saved rotations. * IF( ICOMPZ.GT.0 ) THEN MM = M - L + 1 CALL ZLASR( 'R', 'V', 'B', N, MM, WORK( L ), WORK( N-1+L ), $ Z( 1, L ), LDZ ) END IF * D( L ) = D( L ) - P E( L ) = G GO TO 40 * * Eigenvalue found. * 80 CONTINUE D( L ) = P * L = L + 1 IF( L.LE.LEND ) $ GO TO 40 GO TO 140 * ELSE * * QR Iteration * * Look for small superdiagonal element. * 90 CONTINUE IF( L.NE.LEND ) THEN LENDP1 = LEND + 1 DO 100 M = L, LENDP1, -1 TST = ABS( E( M-1 ) )**2 IF( TST.LE.( EPS2*ABS( D( M ) ) )*ABS( D( M-1 ) )+ $ SAFMIN )GO TO 110 100 CONTINUE END IF * M = LEND * 110 CONTINUE IF( M.GT.LEND ) $ E( M-1 ) = ZERO P = D( L ) IF( M.EQ.L ) $ GO TO 130 * * If remaining matrix is 2-by-2, use DLAE2 or SLAEV2 * to compute its eigensystem. * IF( M.EQ.L-1 ) THEN IF( ICOMPZ.GT.0 ) THEN CALL DLAEV2( D( L-1 ), E( L-1 ), D( L ), RT1, RT2, C, S ) WORK( M ) = C WORK( N-1+M ) = S CALL ZLASR( 'R', 'V', 'F', N, 2, WORK( M ), $ WORK( N-1+M ), Z( 1, L-1 ), LDZ ) ELSE CALL DLAE2( D( L-1 ), E( L-1 ), D( L ), RT1, RT2 ) END IF D( L-1 ) = RT1 D( L ) = RT2 E( L-1 ) = ZERO L = L - 2 IF( L.GE.LEND ) $ GO TO 90 GO TO 140 END IF * IF( JTOT.EQ.NMAXIT ) $ GO TO 140 JTOT = JTOT + 1 * * Form shift. * G = ( D( L-1 )-P ) / ( TWO*E( L-1 ) ) R = DLAPY2( G, ONE ) G = D( M ) - P + ( E( L-1 ) / ( G+SIGN( R, G ) ) ) * S = ONE C = ONE P = ZERO * * Inner loop * LM1 = L - 1 DO 120 I = M, LM1 F = S*E( I ) B = C*E( I ) CALL DLARTG( G, F, C, S, R ) IF( I.NE.M ) $ E( I-1 ) = R G = D( I ) - P R = ( D( I+1 )-G )*S + TWO*C*B P = S*R D( I ) = G + P G = C*R - B * * If eigenvectors are desired, then save rotations. * IF( ICOMPZ.GT.0 ) THEN WORK( I ) = C WORK( N-1+I ) = S END IF * 120 CONTINUE * * If eigenvectors are desired, then apply saved rotations. * IF( ICOMPZ.GT.0 ) THEN MM = L - M + 1 CALL ZLASR( 'R', 'V', 'F', N, MM, WORK( M ), WORK( N-1+M ), $ Z( 1, M ), LDZ ) END IF * D( L ) = D( L ) - P E( LM1 ) = G GO TO 90 * * Eigenvalue found. * 130 CONTINUE D( L ) = P * L = L - 1 IF( L.GE.LEND ) $ GO TO 90 GO TO 140 * END IF * * Undo scaling if necessary * 140 CONTINUE IF( ISCALE.EQ.1 ) THEN CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV+1, 1, $ D( LSV ), N, INFO ) CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV, 1, E( LSV ), $ N, INFO ) ELSE IF( ISCALE.EQ.2 ) THEN CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV+1, 1, $ D( LSV ), N, INFO ) CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV, 1, E( LSV ), $ N, INFO ) END IF * * Check for no convergence to an eigenvalue after a total * of N*MAXIT iterations. * IF( JTOT.EQ.NMAXIT ) THEN DO 150 I = 1, N - 1 IF( E( I ).NE.ZERO ) $ INFO = INFO + 1 150 CONTINUE RETURN END IF GO TO 10 * * Order eigenvalues and eigenvectors. * 160 CONTINUE IF( ICOMPZ.EQ.0 ) THEN * * Use Quick Sort * CALL DLASRT( 'I', N, D, INFO ) * ELSE * * Use Selection Sort to minimize swaps of eigenvectors * DO 180 II = 2, N I = II - 1 K = I P = D( I ) DO 170 J = II, N IF( D( J ).LT.P ) THEN K = J P = D( J ) END IF 170 CONTINUE IF( K.NE.I ) THEN D( K ) = D( I ) D( I ) = P CALL ZSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 ) END IF 180 CONTINUE END IF RETURN * * End of ZSTEQR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zunmql.f0000644002504400250440000000005012337331322016625 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zunmql.f0000644002504400250440000002257312337331322017402 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNMQL * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNMQL + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER INFO, K, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNMQL overwrites the general complex M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q *> TRANS = 'C': Q**H * C C * Q**H *> *> where Q is a complex unitary matrix defined as the product of k *> elementary reflectors *> *> Q = H(k) . . . H(2) H(1) *> *> as returned by ZGEQLF. Q is of order M if SIDE = 'L' and of order N *> if SIDE = 'R'. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**H from the Left; *> = 'R': apply Q or Q**H from the Right. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': No transpose, apply Q; *> = 'C': Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines *> the matrix Q. *> If SIDE = 'L', M >= K >= 0; *> if SIDE = 'R', N >= K >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> ZGEQLF in the last k columns of its array argument A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDA >= max(1,M); *> if SIDE = 'R', LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEQLF. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. *> If SIDE = 'L', LWORK >= max(1,N); *> if SIDE = 'R', LWORK >= max(1,M). *> For optimum performance LWORK >= N*NB if SIDE = 'L', and *> LWORK >= M*NB if SIDE = 'R', where NB is the optimal *> blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER INFO, K, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. INTEGER NBMAX, LDT PARAMETER ( NBMAX = 64, LDT = NBMAX+1 ) * .. * .. Local Scalars .. LOGICAL LEFT, LQUERY, NOTRAN INTEGER I, I1, I2, I3, IB, IINFO, IWS, LDWORK, LWKOPT, $ MI, NB, NBMIN, NI, NQ, NW * .. * .. Local Arrays .. COMPLEX*16 T( LDT, NBMAX ) * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNM2L * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) LQUERY = ( LWORK.EQ.-1 ) * * NQ is the order of Q and NW is the minimum dimension of WORK * IF( LEFT ) THEN NQ = M NW = MAX( 1, N ) ELSE NQ = N NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 END IF * IF( INFO.EQ.0 ) THEN IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE * * Determine the block size. NB may be at most NBMAX, where * NBMAX is used to define the local array T. * NB = MIN( NBMAX, ILAENV( 1, 'ZUNMQL', SIDE // TRANS, M, N, $ K, -1 ) ) LWKOPT = NW*NB END IF WORK( 1 ) = LWKOPT * IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNMQL', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 ) THEN RETURN END IF * NBMIN = 2 LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IWS = NW*NB IF( LWORK.LT.IWS ) THEN NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'ZUNMQL', SIDE // TRANS, M, N, K, $ -1 ) ) END IF ELSE IWS = NW END IF * IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN * * Use unblocked code * CALL ZUNM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, $ IINFO ) ELSE * * Use blocked code * IF( ( LEFT .AND. NOTRAN ) .OR. $ ( .NOT.LEFT .AND. .NOT.NOTRAN ) ) THEN I1 = 1 I2 = K I3 = NB ELSE I1 = ( ( K-1 ) / NB )*NB + 1 I2 = 1 I3 = -NB END IF * IF( LEFT ) THEN NI = N ELSE MI = M END IF * DO 10 I = I1, I2, I3 IB = MIN( NB, K-I+1 ) * * Form the triangular factor of the block reflector * H = H(i+ib-1) . . . H(i+1) H(i) * CALL ZLARFT( 'Backward', 'Columnwise', NQ-K+I+IB-1, IB, $ A( 1, I ), LDA, TAU( I ), T, LDT ) IF( LEFT ) THEN * * H or H**H is applied to C(1:m-k+i+ib-1,1:n) * MI = M - K + I + IB - 1 ELSE * * H or H**H is applied to C(1:m,1:n-k+i+ib-1) * NI = N - K + I + IB - 1 END IF * * Apply H or H**H * CALL ZLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, NI, $ IB, A( 1, I ), LDA, T, LDT, C, LDC, WORK, $ LDWORK ) 10 CONTINUE END IF WORK( 1 ) = LWKOPT RETURN * * End of ZUNMQL * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlasrt.f0000644002504400250440000000005012337331322016570 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlasrt.f0000644002504400250440000001734512337331322017346 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLASRT sorts numbers in increasing or decreasing order. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLASRT + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLASRT( ID, N, D, INFO ) * * .. Scalar Arguments .. * CHARACTER ID * INTEGER INFO, N * .. * .. Array Arguments .. * DOUBLE PRECISION D( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> Sort the numbers in D in increasing order (if ID = 'I') or *> in decreasing order (if ID = 'D' ). *> *> Use Quick Sort, reverting to Insertion sort on arrays of *> size <= 20. Dimension of STACK limits N to about 2**32. *> \endverbatim * * Arguments: * ========== * *> \param[in] ID *> \verbatim *> ID is CHARACTER*1 *> = 'I': sort D in increasing order; *> = 'D': sort D in decreasing order. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The length of the array D. *> \endverbatim *> *> \param[in,out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> On entry, the array to be sorted. *> On exit, D has been sorted into increasing order *> (D(1) <= ... <= D(N) ) or into decreasing order *> (D(1) >= ... >= D(N) ), depending on ID. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERcomputational * * ===================================================================== SUBROUTINE DLASRT( ID, N, D, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER ID INTEGER INFO, N * .. * .. Array Arguments .. DOUBLE PRECISION D( * ) * .. * * ===================================================================== * * .. Parameters .. INTEGER SELECT PARAMETER ( SELECT = 20 ) * .. * .. Local Scalars .. INTEGER DIR, ENDD, I, J, START, STKPNT DOUBLE PRECISION D1, D2, D3, DMNMX, TMP * .. * .. Local Arrays .. INTEGER STACK( 2, 32 ) * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Executable Statements .. * * Test the input paramters. * INFO = 0 DIR = -1 IF( LSAME( ID, 'D' ) ) THEN DIR = 0 ELSE IF( LSAME( ID, 'I' ) ) THEN DIR = 1 END IF IF( DIR.EQ.-1 ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DLASRT', -INFO ) RETURN END IF * * Quick return if possible * IF( N.LE.1 ) $ RETURN * STKPNT = 1 STACK( 1, 1 ) = 1 STACK( 2, 1 ) = N 10 CONTINUE START = STACK( 1, STKPNT ) ENDD = STACK( 2, STKPNT ) STKPNT = STKPNT - 1 IF( ENDD-START.LE.SELECT .AND. ENDD-START.GT.0 ) THEN * * Do Insertion sort on D( START:ENDD ) * IF( DIR.EQ.0 ) THEN * * Sort into decreasing order * DO 30 I = START + 1, ENDD DO 20 J = I, START + 1, -1 IF( D( J ).GT.D( J-1 ) ) THEN DMNMX = D( J ) D( J ) = D( J-1 ) D( J-1 ) = DMNMX ELSE GO TO 30 END IF 20 CONTINUE 30 CONTINUE * ELSE * * Sort into increasing order * DO 50 I = START + 1, ENDD DO 40 J = I, START + 1, -1 IF( D( J ).LT.D( J-1 ) ) THEN DMNMX = D( J ) D( J ) = D( J-1 ) D( J-1 ) = DMNMX ELSE GO TO 50 END IF 40 CONTINUE 50 CONTINUE * END IF * ELSE IF( ENDD-START.GT.SELECT ) THEN * * Partition D( START:ENDD ) and stack parts, largest one first * * Choose partition entry as median of 3 * D1 = D( START ) D2 = D( ENDD ) I = ( START+ENDD ) / 2 D3 = D( I ) IF( D1.LT.D2 ) THEN IF( D3.LT.D1 ) THEN DMNMX = D1 ELSE IF( D3.LT.D2 ) THEN DMNMX = D3 ELSE DMNMX = D2 END IF ELSE IF( D3.LT.D2 ) THEN DMNMX = D2 ELSE IF( D3.LT.D1 ) THEN DMNMX = D3 ELSE DMNMX = D1 END IF END IF * IF( DIR.EQ.0 ) THEN * * Sort into decreasing order * I = START - 1 J = ENDD + 1 60 CONTINUE 70 CONTINUE J = J - 1 IF( D( J ).LT.DMNMX ) $ GO TO 70 80 CONTINUE I = I + 1 IF( D( I ).GT.DMNMX ) $ GO TO 80 IF( I.LT.J ) THEN TMP = D( I ) D( I ) = D( J ) D( J ) = TMP GO TO 60 END IF IF( J-START.GT.ENDD-J-1 ) THEN STKPNT = STKPNT + 1 STACK( 1, STKPNT ) = START STACK( 2, STKPNT ) = J STKPNT = STKPNT + 1 STACK( 1, STKPNT ) = J + 1 STACK( 2, STKPNT ) = ENDD ELSE STKPNT = STKPNT + 1 STACK( 1, STKPNT ) = J + 1 STACK( 2, STKPNT ) = ENDD STKPNT = STKPNT + 1 STACK( 1, STKPNT ) = START STACK( 2, STKPNT ) = J END IF ELSE * * Sort into increasing order * I = START - 1 J = ENDD + 1 90 CONTINUE 100 CONTINUE J = J - 1 IF( D( J ).GT.DMNMX ) $ GO TO 100 110 CONTINUE I = I + 1 IF( D( I ).LT.DMNMX ) $ GO TO 110 IF( I.LT.J ) THEN TMP = D( I ) D( I ) = D( J ) D( J ) = TMP GO TO 90 END IF IF( J-START.GT.ENDD-J-1 ) THEN STKPNT = STKPNT + 1 STACK( 1, STKPNT ) = START STACK( 2, STKPNT ) = J STKPNT = STKPNT + 1 STACK( 1, STKPNT ) = J + 1 STACK( 2, STKPNT ) = ENDD ELSE STKPNT = STKPNT + 1 STACK( 1, STKPNT ) = J + 1 STACK( 2, STKPNT ) = ENDD STKPNT = STKPNT + 1 STACK( 1, STKPNT ) = START STACK( 2, STKPNT ) = J END IF END IF END IF IF( STKPNT.GT.0 ) $ GO TO 10 RETURN * * End of DLASRT * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dtrti2.f0000644002504400250440000000005012337331322016507 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dtrti2.f0000644002504400250440000001344512337331322017262 0ustar00dewhurstdewhurst00000000000000*> \brief \b DTRTI2 computes the inverse of a triangular matrix (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DTRTI2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DTRTI2( UPLO, DIAG, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER DIAG, UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DTRTI2 computes the inverse of a real upper or lower triangular *> matrix. *> *> This is the Level 2 BLAS version of the algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the matrix A is upper or lower triangular. *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> Specifies whether or not the matrix A is unit triangular. *> = 'N': Non-unit triangular *> = 'U': Unit triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the triangular matrix A. If UPLO = 'U', the *> leading n by n upper triangular part of the array A contains *> the upper triangular matrix, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n by n lower triangular part of the array A contains *> the lower triangular matrix, and the strictly upper *> triangular part of A is not referenced. If DIAG = 'U', the *> diagonal elements of A are also not referenced and are *> assumed to be 1. *> *> On exit, the (triangular) inverse of the original matrix, in *> the same storage format. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -k, the k-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DTRTI2( UPLO, DIAG, N, A, LDA, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIAG, UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL NOUNIT, UPPER INTEGER J DOUBLE PRECISION AJJ * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL DSCAL, DTRMV, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) NOUNIT = LSAME( DIAG, 'N' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DTRTI2', -INFO ) RETURN END IF * IF( UPPER ) THEN * * Compute inverse of upper triangular matrix. * DO 10 J = 1, N IF( NOUNIT ) THEN A( J, J ) = ONE / A( J, J ) AJJ = -A( J, J ) ELSE AJJ = -ONE END IF * * Compute elements 1:j-1 of j-th column. * CALL DTRMV( 'Upper', 'No transpose', DIAG, J-1, A, LDA, $ A( 1, J ), 1 ) CALL DSCAL( J-1, AJJ, A( 1, J ), 1 ) 10 CONTINUE ELSE * * Compute inverse of lower triangular matrix. * DO 20 J = N, 1, -1 IF( NOUNIT ) THEN A( J, J ) = ONE / A( J, J ) AJJ = -A( J, J ) ELSE AJJ = -ONE END IF IF( J.LT.N ) THEN * * Compute elements j+1:n of j-th column. * CALL DTRMV( 'Lower', 'No transpose', DIAG, N-J, $ A( J+1, J+1 ), LDA, A( J+1, J ), 1 ) CALL DSCAL( N-J, AJJ, A( J+1, J ), 1 ) END IF 20 CONTINUE END IF * RETURN * * End of DTRTI2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlagtf.f0000644002504400250440000000005012337331322016540 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlagtf.f0000644002504400250440000002010412337331322017301 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLAGTF computes an LU factorization of a matrix T-λI, where T is a general tridiagonal matrix, and λ a scalar, using partial pivoting with row interchanges. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLAGTF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLAGTF( N, A, LAMBDA, B, C, TOL, D, IN, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, N * DOUBLE PRECISION LAMBDA, TOL * .. * .. Array Arguments .. * INTEGER IN( * ) * DOUBLE PRECISION A( * ), B( * ), C( * ), D( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLAGTF factorizes the matrix (T - lambda*I), where T is an n by n *> tridiagonal matrix and lambda is a scalar, as *> *> T - lambda*I = PLU, *> *> where P is a permutation matrix, L is a unit lower tridiagonal matrix *> with at most one non-zero sub-diagonal elements per column and U is *> an upper triangular matrix with at most two non-zero super-diagonal *> elements per column. *> *> The factorization is obtained by Gaussian elimination with partial *> pivoting and implicit row scaling. *> *> The parameter LAMBDA is included in the routine so that DLAGTF may *> be used, in conjunction with DLAGTS, to obtain eigenvectors of T by *> inverse iteration. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix T. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (N) *> On entry, A must contain the diagonal elements of T. *> *> On exit, A is overwritten by the n diagonal elements of the *> upper triangular matrix U of the factorization of T. *> \endverbatim *> *> \param[in] LAMBDA *> \verbatim *> LAMBDA is DOUBLE PRECISION *> On entry, the scalar lambda. *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (N-1) *> On entry, B must contain the (n-1) super-diagonal elements of *> T. *> *> On exit, B is overwritten by the (n-1) super-diagonal *> elements of the matrix U of the factorization of T. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (N-1) *> On entry, C must contain the (n-1) sub-diagonal elements of *> T. *> *> On exit, C is overwritten by the (n-1) sub-diagonal elements *> of the matrix L of the factorization of T. *> \endverbatim *> *> \param[in] TOL *> \verbatim *> TOL is DOUBLE PRECISION *> On entry, a relative tolerance used to indicate whether or *> not the matrix (T - lambda*I) is nearly singular. TOL should *> normally be chose as approximately the largest relative error *> in the elements of T. For example, if the elements of T are *> correct to about 4 significant figures, then TOL should be *> set to about 5*10**(-4). If TOL is supplied as less than eps, *> where eps is the relative machine precision, then the value *> eps is used in place of TOL. *> \endverbatim *> *> \param[out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N-2) *> On exit, D is overwritten by the (n-2) second super-diagonal *> elements of the matrix U of the factorization of T. *> \endverbatim *> *> \param[out] IN *> \verbatim *> IN is INTEGER array, dimension (N) *> On exit, IN contains details of the permutation matrix P. If *> an interchange occurred at the kth step of the elimination, *> then IN(k) = 1, otherwise IN(k) = 0. The element IN(n) *> returns the smallest positive integer j such that *> *> abs( u(j,j) ).le. norm( (T - lambda*I)(j) )*TOL, *> *> where norm( A(j) ) denotes the sum of the absolute values of *> the jth row of the matrix A. If no such j exists then IN(n) *> is returned as zero. If IN(n) is returned as positive, then a *> diagonal element of U is small, indicating that *> (T - lambda*I) is singular or nearly singular, *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0 : successful exit *> .lt. 0: if INFO = -k, the kth argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERcomputational * * ===================================================================== SUBROUTINE DLAGTF( N, A, LAMBDA, B, C, TOL, D, IN, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INFO, N DOUBLE PRECISION LAMBDA, TOL * .. * .. Array Arguments .. INTEGER IN( * ) DOUBLE PRECISION A( * ), B( * ), C( * ), D( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER K DOUBLE PRECISION EPS, MULT, PIV1, PIV2, SCALE1, SCALE2, TEMP, TL * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX * .. * .. External Functions .. DOUBLE PRECISION DLAMCH EXTERNAL DLAMCH * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Executable Statements .. * INFO = 0 IF( N.LT.0 ) THEN INFO = -1 CALL XERBLA( 'DLAGTF', -INFO ) RETURN END IF * IF( N.EQ.0 ) $ RETURN * A( 1 ) = A( 1 ) - LAMBDA IN( N ) = 0 IF( N.EQ.1 ) THEN IF( A( 1 ).EQ.ZERO ) $ IN( 1 ) = 1 RETURN END IF * EPS = DLAMCH( 'Epsilon' ) * TL = MAX( TOL, EPS ) SCALE1 = ABS( A( 1 ) ) + ABS( B( 1 ) ) DO 10 K = 1, N - 1 A( K+1 ) = A( K+1 ) - LAMBDA SCALE2 = ABS( C( K ) ) + ABS( A( K+1 ) ) IF( K.LT.( N-1 ) ) $ SCALE2 = SCALE2 + ABS( B( K+1 ) ) IF( A( K ).EQ.ZERO ) THEN PIV1 = ZERO ELSE PIV1 = ABS( A( K ) ) / SCALE1 END IF IF( C( K ).EQ.ZERO ) THEN IN( K ) = 0 PIV2 = ZERO SCALE1 = SCALE2 IF( K.LT.( N-1 ) ) $ D( K ) = ZERO ELSE PIV2 = ABS( C( K ) ) / SCALE2 IF( PIV2.LE.PIV1 ) THEN IN( K ) = 0 SCALE1 = SCALE2 C( K ) = C( K ) / A( K ) A( K+1 ) = A( K+1 ) - C( K )*B( K ) IF( K.LT.( N-1 ) ) $ D( K ) = ZERO ELSE IN( K ) = 1 MULT = A( K ) / C( K ) A( K ) = C( K ) TEMP = A( K+1 ) A( K+1 ) = B( K ) - MULT*TEMP IF( K.LT.( N-1 ) ) THEN D( K ) = B( K+1 ) B( K+1 ) = -MULT*D( K ) END IF B( K ) = TEMP C( K ) = MULT END IF END IF IF( ( MAX( PIV1, PIV2 ).LE.TL ) .AND. ( IN( N ).EQ.0 ) ) $ IN( N ) = K 10 CONTINUE IF( ( ABS( A( N ) ).LE.SCALE1*TL ) .AND. ( IN( N ).EQ.0 ) ) $ IN( N ) = N * RETURN * * End of DLAGTF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/ieeeck.f0000644002504400250440000000005012337331322016524 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/ieeeck.f0000644002504400250440000001074712337331322017301 0ustar00dewhurstdewhurst00000000000000*> \brief \b IEEECK * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download IEEECK + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * INTEGER FUNCTION IEEECK( ISPEC, ZERO, ONE ) * * .. Scalar Arguments .. * INTEGER ISPEC * REAL ONE, ZERO * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> IEEECK is called from the ILAENV to verify that Infinity and *> possibly NaN arithmetic is safe (i.e. will not trap). *> \endverbatim * * Arguments: * ========== * *> \param[in] ISPEC *> \verbatim *> ISPEC is INTEGER *> Specifies whether to test just for inifinity arithmetic *> or whether to test for infinity and NaN arithmetic. *> = 0: Verify infinity arithmetic only. *> = 1: Verify infinity and NaN arithmetic. *> \endverbatim *> *> \param[in] ZERO *> \verbatim *> ZERO is REAL *> Must contain the value 0.0 *> This is passed to prevent the compiler from optimizing *> away this code. *> \endverbatim *> *> \param[in] ONE *> \verbatim *> ONE is REAL *> Must contain the value 1.0 *> This is passed to prevent the compiler from optimizing *> away this code. *> *> RETURN VALUE: INTEGER *> = 0: Arithmetic failed to produce the correct answers *> = 1: Arithmetic produced the correct answers *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup auxOTHERauxiliary * * ===================================================================== INTEGER FUNCTION IEEECK( ISPEC, ZERO, ONE ) * * -- LAPACK auxiliary routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER ISPEC REAL ONE, ZERO * .. * * ===================================================================== * * .. Local Scalars .. REAL NAN1, NAN2, NAN3, NAN4, NAN5, NAN6, NEGINF, $ NEGZRO, NEWZRO, POSINF * .. * .. Executable Statements .. IEEECK = 1 * POSINF = ONE / ZERO IF( POSINF.LE.ONE ) THEN IEEECK = 0 RETURN END IF * NEGINF = -ONE / ZERO IF( NEGINF.GE.ZERO ) THEN IEEECK = 0 RETURN END IF * NEGZRO = ONE / ( NEGINF+ONE ) IF( NEGZRO.NE.ZERO ) THEN IEEECK = 0 RETURN END IF * NEGINF = ONE / NEGZRO IF( NEGINF.GE.ZERO ) THEN IEEECK = 0 RETURN END IF * NEWZRO = NEGZRO + ZERO IF( NEWZRO.NE.ZERO ) THEN IEEECK = 0 RETURN END IF * POSINF = ONE / NEWZRO IF( POSINF.LE.ONE ) THEN IEEECK = 0 RETURN END IF * NEGINF = NEGINF*POSINF IF( NEGINF.GE.ZERO ) THEN IEEECK = 0 RETURN END IF * POSINF = POSINF*POSINF IF( POSINF.LE.ONE ) THEN IEEECK = 0 RETURN END IF * * * * * Return if we were only asked to check infinity arithmetic * IF( ISPEC.EQ.0 ) $ RETURN * NAN1 = POSINF + NEGINF * NAN2 = POSINF / NEGINF * NAN3 = POSINF / POSINF * NAN4 = POSINF*ZERO * NAN5 = NEGINF*NEGZRO * NAN6 = NAN5*ZERO * IF( NAN1.EQ.NAN1 ) THEN IEEECK = 0 RETURN END IF * IF( NAN2.EQ.NAN2 ) THEN IEEECK = 0 RETURN END IF * IF( NAN3.EQ.NAN3 ) THEN IEEECK = 0 RETURN END IF * IF( NAN4.EQ.NAN4 ) THEN IEEECK = 0 RETURN END IF * IF( NAN5.EQ.NAN5 ) THEN IEEECK = 0 RETURN END IF * IF( NAN6.EQ.NAN6 ) THEN IEEECK = 0 RETURN END IF * RETURN END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dorgqr.f0000644002504400250440000000005012337331322016575 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dorgqr.f0000644002504400250440000001763012337331322017350 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORGQR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORGQR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORGQR generates an M-by-N real matrix Q with orthonormal columns, *> which is defined as the first N columns of a product of K elementary *> reflectors of order M *> *> Q = H(1) H(2) . . . H(k) *> *> as returned by DGEQRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix Q. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix Q. M >= N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines the *> matrix Q. N >= K >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the i-th column must contain the vector which *> defines the elementary reflector H(i), for i = 1,2,...,k, as *> returned by DGEQRF in the first k columns of its array *> argument A. *> On exit, the M-by-N matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The first dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DGEQRF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument has an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IB, IINFO, IWS, J, KI, KK, L, LDWORK, $ LWKOPT, NB, NBMIN, NX * .. * .. External Subroutines .. EXTERNAL DLARFB, DLARFT, DORG2R, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 NB = ILAENV( 1, 'DORGQR', ' ', M, N, K, -1 ) LWKOPT = MAX( 1, N )*NB WORK( 1 ) = LWKOPT LQUERY = ( LWORK.EQ.-1 ) IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORGQR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.LE.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NBMIN = 2 NX = 0 IWS = N IF( NB.GT.1 .AND. NB.LT.K ) THEN * * Determine when to cross over from blocked to unblocked code. * NX = MAX( 0, ILAENV( 3, 'DORGQR', ' ', M, N, K, -1 ) ) IF( NX.LT.K ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: reduce NB and * determine the minimum value of NB. * NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'DORGQR', ' ', M, N, K, -1 ) ) END IF END IF END IF * IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN * * Use blocked code after the last block. * The first kk columns are handled by the block method. * KI = ( ( K-NX-1 ) / NB )*NB KK = MIN( K, KI+NB ) * * Set A(1:kk,kk+1:n) to zero. * DO 20 J = KK + 1, N DO 10 I = 1, KK A( I, J ) = ZERO 10 CONTINUE 20 CONTINUE ELSE KK = 0 END IF * * Use unblocked code for the last or only block. * IF( KK.LT.N ) $ CALL DORG2R( M-KK, N-KK, K-KK, A( KK+1, KK+1 ), LDA, $ TAU( KK+1 ), WORK, IINFO ) * IF( KK.GT.0 ) THEN * * Use blocked code * DO 50 I = KI + 1, 1, -NB IB = MIN( NB, K-I+1 ) IF( I+IB.LE.N ) THEN * * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * CALL DLARFT( 'Forward', 'Columnwise', M-I+1, IB, $ A( I, I ), LDA, TAU( I ), WORK, LDWORK ) * * Apply H to A(i:m,i+ib:n) from the left * CALL DLARFB( 'Left', 'No transpose', 'Forward', $ 'Columnwise', M-I+1, N-I-IB+1, IB, $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ), $ LDA, WORK( IB+1 ), LDWORK ) END IF * * Apply H to rows i:m of current block * CALL DORG2R( M-I+1, IB, IB, A( I, I ), LDA, TAU( I ), WORK, $ IINFO ) * * Set rows 1:i-1 of current block to zero * DO 40 J = I, I + IB - 1 DO 30 L = 1, I - 1 A( L, J ) = ZERO 30 CONTINUE 40 CONTINUE 50 CONTINUE END IF * WORK( 1 ) = IWS RETURN * * End of DORGQR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zungqr.f0000644002504400250440000000005012337331322016625 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zungqr.f0000644002504400250440000001763012337331322017400 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNGQR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNGQR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNGQR generates an M-by-N complex matrix Q with orthonormal columns, *> which is defined as the first N columns of a product of K elementary *> reflectors of order M *> *> Q = H(1) H(2) . . . H(k) *> *> as returned by ZGEQRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix Q. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix Q. M >= N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines the *> matrix Q. N >= K >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the i-th column must contain the vector which *> defines the elementary reflector H(i), for i = 1,2,...,k, as *> returned by ZGEQRF in the first k columns of its array *> argument A. *> On exit, the M-by-N matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The first dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEQRF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument has an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IB, IINFO, IWS, J, KI, KK, L, LDWORK, $ LWKOPT, NB, NBMIN, NX * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNG2R * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 NB = ILAENV( 1, 'ZUNGQR', ' ', M, N, K, -1 ) LWKOPT = MAX( 1, N )*NB WORK( 1 ) = LWKOPT LQUERY = ( LWORK.EQ.-1 ) IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNGQR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.LE.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NBMIN = 2 NX = 0 IWS = N IF( NB.GT.1 .AND. NB.LT.K ) THEN * * Determine when to cross over from blocked to unblocked code. * NX = MAX( 0, ILAENV( 3, 'ZUNGQR', ' ', M, N, K, -1 ) ) IF( NX.LT.K ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: reduce NB and * determine the minimum value of NB. * NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'ZUNGQR', ' ', M, N, K, -1 ) ) END IF END IF END IF * IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN * * Use blocked code after the last block. * The first kk columns are handled by the block method. * KI = ( ( K-NX-1 ) / NB )*NB KK = MIN( K, KI+NB ) * * Set A(1:kk,kk+1:n) to zero. * DO 20 J = KK + 1, N DO 10 I = 1, KK A( I, J ) = ZERO 10 CONTINUE 20 CONTINUE ELSE KK = 0 END IF * * Use unblocked code for the last or only block. * IF( KK.LT.N ) $ CALL ZUNG2R( M-KK, N-KK, K-KK, A( KK+1, KK+1 ), LDA, $ TAU( KK+1 ), WORK, IINFO ) * IF( KK.GT.0 ) THEN * * Use blocked code * DO 50 I = KI + 1, 1, -NB IB = MIN( NB, K-I+1 ) IF( I+IB.LE.N ) THEN * * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * CALL ZLARFT( 'Forward', 'Columnwise', M-I+1, IB, $ A( I, I ), LDA, TAU( I ), WORK, LDWORK ) * * Apply H to A(i:m,i+ib:n) from the left * CALL ZLARFB( 'Left', 'No transpose', 'Forward', $ 'Columnwise', M-I+1, N-I-IB+1, IB, $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ), $ LDA, WORK( IB+1 ), LDWORK ) END IF * * Apply H to rows i:m of current block * CALL ZUNG2R( M-I+1, IB, IB, A( I, I ), LDA, TAU( I ), WORK, $ IINFO ) * * Set rows 1:i-1 of current block to zero * DO 40 J = I, I + IB - 1 DO 30 L = 1, I - 1 A( L, J ) = ZERO 30 CONTINUE 40 CONTINUE 50 CONTINUE END IF * WORK( 1 ) = IWS RETURN * * End of ZUNGQR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlacgv.f0000644002504400250440000000005012337331322016565 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlacgv.f0000644002504400250440000000546612337331322017344 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLACGV conjugates a complex vector. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLACGV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLACGV( N, X, INCX ) * * .. Scalar Arguments .. * INTEGER INCX, N * .. * .. Array Arguments .. * COMPLEX*16 X( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLACGV conjugates a complex vector of length N. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The length of the vector X. N >= 0. *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is COMPLEX*16 array, dimension *> (1+(N-1)*abs(INCX)) *> On entry, the vector of length N to be conjugated. *> On exit, X is overwritten with conjg(X). *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The spacing between successive elements of X. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZLACGV( N, X, INCX ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INCX, N * .. * .. Array Arguments .. COMPLEX*16 X( * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, IOFF * .. * .. Intrinsic Functions .. INTRINSIC DCONJG * .. * .. Executable Statements .. * IF( INCX.EQ.1 ) THEN DO 10 I = 1, N X( I ) = DCONJG( X( I ) ) 10 CONTINUE ELSE IOFF = 1 IF( INCX.LT.0 ) $ IOFF = 1 - ( N-1 )*INCX DO 20 I = 1, N X( IOFF ) = DCONJG( X( IOFF ) ) IOFF = IOFF + INCX 20 CONTINUE END IF RETURN * * End of ZLACGV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsytrs2.f0000644002504400250440000000005012337331322016711 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsytrs2.f0000644002504400250440000002360412337331322017462 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYTRS2 * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYTRS2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYTRS2( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, * WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYTRS2 solves a system of linear equations A*X = B with a real *> symmetric matrix A using the factorization A = U*D*U**T or *> A = L*D*L**T computed by DSYTRF and converted by DSYCONV. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the details of the factorization are stored *> as an upper or lower triangular matrix. *> = 'U': Upper triangular, form is A = U*D*U**T; *> = 'L': Lower triangular, form is A = L*D*L**T. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] NRHS *> \verbatim *> NRHS is INTEGER *> The number of right hand sides, i.e., the number of columns *> of the matrix B. NRHS >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The block diagonal matrix D and the multipliers used to *> obtain the factor U or L as computed by DSYTRF. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> Details of the interchanges and the block structure of D *> as determined by DSYTRF. *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB,NRHS) *> On entry, the right hand side matrix B. *> On exit, the solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is REAL array, dimension (N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYcomputational * * ===================================================================== SUBROUTINE DSYTRS2( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, $ WORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER I, IINFO, J, K, KP DOUBLE PRECISION AK, AKM1, AKM1K, BK, BKM1, DENOM * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL DSCAL, DSYCONV, DSWAP, DTRSM, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( NRHS.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYTRS2', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 .OR. NRHS.EQ.0 ) $ RETURN * * Convert A * CALL DSYCONV( UPLO, 'C', N, A, LDA, IPIV, WORK, IINFO ) * IF( UPPER ) THEN * * Solve A*X = B, where A = U*D*U**T. * * P**T * B K=N DO WHILE ( K .GE. 1 ) IF( IPIV( K ).GT.0 ) THEN * 1 x 1 diagonal block * Interchange rows K and IPIV(K). KP = IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K=K-1 ELSE * 2 x 2 diagonal block * Interchange rows K-1 and -IPIV(K). KP = -IPIV( K ) IF( KP.EQ.-IPIV( K-1 ) ) $ CALL DSWAP( NRHS, B( K-1, 1 ), LDB, B( KP, 1 ), LDB ) K=K-2 END IF END DO * * Compute (U \P**T * B) -> B [ (U \P**T * B) ] * CALL DTRSM('L','U','N','U',N,NRHS,ONE,A,LDA,B,LDB) * * Compute D \ B -> B [ D \ (U \P**T * B) ] * I=N DO WHILE ( I .GE. 1 ) IF( IPIV(I) .GT. 0 ) THEN CALL DSCAL( NRHS, ONE / A( I, I ), B( I, 1 ), LDB ) ELSEIF ( I .GT. 1) THEN IF ( IPIV(I-1) .EQ. IPIV(I) ) THEN AKM1K = WORK(I) AKM1 = A( I-1, I-1 ) / AKM1K AK = A( I, I ) / AKM1K DENOM = AKM1*AK - ONE DO 15 J = 1, NRHS BKM1 = B( I-1, J ) / AKM1K BK = B( I, J ) / AKM1K B( I-1, J ) = ( AK*BKM1-BK ) / DENOM B( I, J ) = ( AKM1*BK-BKM1 ) / DENOM 15 CONTINUE I = I - 1 ENDIF ENDIF I = I - 1 END DO * * Compute (U**T \ B) -> B [ U**T \ (D \ (U \P**T * B) ) ] * CALL DTRSM('L','U','T','U',N,NRHS,ONE,A,LDA,B,LDB) * * P * B [ P * (U**T \ (D \ (U \P**T * B) )) ] * K=1 DO WHILE ( K .LE. N ) IF( IPIV( K ).GT.0 ) THEN * 1 x 1 diagonal block * Interchange rows K and IPIV(K). KP = IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K=K+1 ELSE * 2 x 2 diagonal block * Interchange rows K-1 and -IPIV(K). KP = -IPIV( K ) IF( K .LT. N .AND. KP.EQ.-IPIV( K+1 ) ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K=K+2 ENDIF END DO * ELSE * * Solve A*X = B, where A = L*D*L**T. * * P**T * B K=1 DO WHILE ( K .LE. N ) IF( IPIV( K ).GT.0 ) THEN * 1 x 1 diagonal block * Interchange rows K and IPIV(K). KP = IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K=K+1 ELSE * 2 x 2 diagonal block * Interchange rows K and -IPIV(K+1). KP = -IPIV( K+1 ) IF( KP.EQ.-IPIV( K ) ) $ CALL DSWAP( NRHS, B( K+1, 1 ), LDB, B( KP, 1 ), LDB ) K=K+2 ENDIF END DO * * Compute (L \P**T * B) -> B [ (L \P**T * B) ] * CALL DTRSM('L','L','N','U',N,NRHS,ONE,A,LDA,B,LDB) * * Compute D \ B -> B [ D \ (L \P**T * B) ] * I=1 DO WHILE ( I .LE. N ) IF( IPIV(I) .GT. 0 ) THEN CALL DSCAL( NRHS, ONE / A( I, I ), B( I, 1 ), LDB ) ELSE AKM1K = WORK(I) AKM1 = A( I, I ) / AKM1K AK = A( I+1, I+1 ) / AKM1K DENOM = AKM1*AK - ONE DO 25 J = 1, NRHS BKM1 = B( I, J ) / AKM1K BK = B( I+1, J ) / AKM1K B( I, J ) = ( AK*BKM1-BK ) / DENOM B( I+1, J ) = ( AKM1*BK-BKM1 ) / DENOM 25 CONTINUE I = I + 1 ENDIF I = I + 1 END DO * * Compute (L**T \ B) -> B [ L**T \ (D \ (L \P**T * B) ) ] * CALL DTRSM('L','L','T','U',N,NRHS,ONE,A,LDA,B,LDB) * * P * B [ P * (L**T \ (D \ (L \P**T * B) )) ] * K=N DO WHILE ( K .GE. 1 ) IF( IPIV( K ).GT.0 ) THEN * 1 x 1 diagonal block * Interchange rows K and IPIV(K). KP = IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K=K-1 ELSE * 2 x 2 diagonal block * Interchange rows K-1 and -IPIV(K). KP = -IPIV( K ) IF( K.GT.1 .AND. KP.EQ.-IPIV( K-1 ) ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K=K-2 ENDIF END DO * END IF * * Revert A * CALL DSYCONV( UPLO, 'R', N, A, LDA, IPIV, WORK, IINFO ) * RETURN * * End of DSYTRS2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dormql.f0000644002504400250440000000005012337331322016575 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dormql.f0000644002504400250440000002261512337331322017347 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORMQL * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORMQL + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER INFO, K, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORMQL overwrites the general real M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q *> TRANS = 'T': Q**T * C C * Q**T *> *> where Q is a real orthogonal matrix defined as the product of k *> elementary reflectors *> *> Q = H(k) . . . H(2) H(1) *> *> as returned by DGEQLF. Q is of order M if SIDE = 'L' and of order N *> if SIDE = 'R'. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**T from the Left; *> = 'R': apply Q or Q**T from the Right. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': No transpose, apply Q; *> = 'T': Transpose, apply Q**T. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines *> the matrix Q. *> If SIDE = 'L', M >= K >= 0; *> if SIDE = 'R', N >= K >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DGEQLF in the last k columns of its array argument A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDA >= max(1,M); *> if SIDE = 'R', LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DGEQLF. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. *> If SIDE = 'L', LWORK >= max(1,N); *> if SIDE = 'R', LWORK >= max(1,M). *> For optimum performance LWORK >= N*NB if SIDE = 'L', and *> LWORK >= M*NB if SIDE = 'R', where NB is the optimal *> blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER INFO, K, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. INTEGER NBMAX, LDT PARAMETER ( NBMAX = 64, LDT = NBMAX+1 ) * .. * .. Local Scalars .. LOGICAL LEFT, LQUERY, NOTRAN INTEGER I, I1, I2, I3, IB, IINFO, IWS, LDWORK, LWKOPT, $ MI, NB, NBMIN, NI, NQ, NW * .. * .. Local Arrays .. DOUBLE PRECISION T( LDT, NBMAX ) * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DLARFB, DLARFT, DORM2L, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) LQUERY = ( LWORK.EQ.-1 ) * * NQ is the order of Q and NW is the minimum dimension of WORK * IF( LEFT ) THEN NQ = M NW = MAX( 1, N ) ELSE NQ = N NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 END IF * IF( INFO.EQ.0 ) THEN IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE * * Determine the block size. NB may be at most NBMAX, where * NBMAX is used to define the local array T. * NB = MIN( NBMAX, ILAENV( 1, 'DORMQL', SIDE // TRANS, M, N, $ K, -1 ) ) LWKOPT = NW*NB END IF WORK( 1 ) = LWKOPT * IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORMQL', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 ) THEN RETURN END IF * NBMIN = 2 LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IWS = NW*NB IF( LWORK.LT.IWS ) THEN NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'DORMQL', SIDE // TRANS, M, N, K, $ -1 ) ) END IF ELSE IWS = NW END IF * IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN * * Use unblocked code * CALL DORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, $ IINFO ) ELSE * * Use blocked code * IF( ( LEFT .AND. NOTRAN ) .OR. $ ( .NOT.LEFT .AND. .NOT.NOTRAN ) ) THEN I1 = 1 I2 = K I3 = NB ELSE I1 = ( ( K-1 ) / NB )*NB + 1 I2 = 1 I3 = -NB END IF * IF( LEFT ) THEN NI = N ELSE MI = M END IF * DO 10 I = I1, I2, I3 IB = MIN( NB, K-I+1 ) * * Form the triangular factor of the block reflector * H = H(i+ib-1) . . . H(i+1) H(i) * CALL DLARFT( 'Backward', 'Columnwise', NQ-K+I+IB-1, IB, $ A( 1, I ), LDA, TAU( I ), T, LDT ) IF( LEFT ) THEN * * H or H**T is applied to C(1:m-k+i+ib-1,1:n) * MI = M - K + I + IB - 1 ELSE * * H or H**T is applied to C(1:m,1:n-k+i+ib-1) * NI = N - K + I + IB - 1 END IF * * Apply H or H**T * CALL DLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, NI, $ IB, A( 1, I ), LDA, T, LDT, C, LDC, WORK, $ LDWORK ) 10 CONTINUE END IF WORK( 1 ) = LWKOPT RETURN * * End of DORMQL * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlaev2.f0000644002504400250440000000005012337331322016454 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlaev2.f0000644002504400250440000001411712337331322017224 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLAEV2 computes the eigenvalues and eigenvectors of a 2-by-2 symmetric/Hermitian matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLAEV2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLAEV2( A, B, C, RT1, RT2, CS1, SN1 ) * * .. Scalar Arguments .. * DOUBLE PRECISION A, B, C, CS1, RT1, RT2, SN1 * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLAEV2 computes the eigendecomposition of a 2-by-2 symmetric matrix *> [ A B ] *> [ B C ]. *> On return, RT1 is the eigenvalue of larger absolute value, RT2 is the *> eigenvalue of smaller absolute value, and (CS1,SN1) is the unit right *> eigenvector for RT1, giving the decomposition *> *> [ CS1 SN1 ] [ A B ] [ CS1 -SN1 ] = [ RT1 0 ] *> [-SN1 CS1 ] [ B C ] [ SN1 CS1 ] [ 0 RT2 ]. *> \endverbatim * * Arguments: * ========== * *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION *> The (1,1) element of the 2-by-2 matrix. *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION *> The (1,2) element and the conjugate of the (2,1) element of *> the 2-by-2 matrix. *> \endverbatim *> *> \param[in] C *> \verbatim *> C is DOUBLE PRECISION *> The (2,2) element of the 2-by-2 matrix. *> \endverbatim *> *> \param[out] RT1 *> \verbatim *> RT1 is DOUBLE PRECISION *> The eigenvalue of larger absolute value. *> \endverbatim *> *> \param[out] RT2 *> \verbatim *> RT2 is DOUBLE PRECISION *> The eigenvalue of smaller absolute value. *> \endverbatim *> *> \param[out] CS1 *> \verbatim *> CS1 is DOUBLE PRECISION *> \endverbatim *> *> \param[out] SN1 *> \verbatim *> SN1 is DOUBLE PRECISION *> The vector (CS1, SN1) is a unit right eigenvector for RT1. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> RT1 is accurate to a few ulps barring over/underflow. *> *> RT2 may be inaccurate if there is massive cancellation in the *> determinant A*C-B*B; higher precision or correctly rounded or *> correctly truncated arithmetic would be needed to compute RT2 *> accurately in all cases. *> *> CS1 and SN1 are accurate to a few ulps barring over/underflow. *> *> Overflow is possible only if RT1 is within a factor of 5 of overflow. *> Underflow is harmless if the input data is 0 or exceeds *> underflow_threshold / macheps. *> \endverbatim *> * ===================================================================== SUBROUTINE DLAEV2( A, B, C, RT1, RT2, CS1, SN1 ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION A, B, C, CS1, RT1, RT2, SN1 * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D0 ) DOUBLE PRECISION TWO PARAMETER ( TWO = 2.0D0 ) DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D0 ) DOUBLE PRECISION HALF PARAMETER ( HALF = 0.5D0 ) * .. * .. Local Scalars .. INTEGER SGN1, SGN2 DOUBLE PRECISION AB, ACMN, ACMX, ACS, ADF, CS, CT, DF, RT, SM, $ TB, TN * .. * .. Intrinsic Functions .. INTRINSIC ABS, SQRT * .. * .. Executable Statements .. * * Compute the eigenvalues * SM = A + C DF = A - C ADF = ABS( DF ) TB = B + B AB = ABS( TB ) IF( ABS( A ).GT.ABS( C ) ) THEN ACMX = A ACMN = C ELSE ACMX = C ACMN = A END IF IF( ADF.GT.AB ) THEN RT = ADF*SQRT( ONE+( AB / ADF )**2 ) ELSE IF( ADF.LT.AB ) THEN RT = AB*SQRT( ONE+( ADF / AB )**2 ) ELSE * * Includes case AB=ADF=0 * RT = AB*SQRT( TWO ) END IF IF( SM.LT.ZERO ) THEN RT1 = HALF*( SM-RT ) SGN1 = -1 * * Order of execution important. * To get fully accurate smaller eigenvalue, * next line needs to be executed in higher precision. * RT2 = ( ACMX / RT1 )*ACMN - ( B / RT1 )*B ELSE IF( SM.GT.ZERO ) THEN RT1 = HALF*( SM+RT ) SGN1 = 1 * * Order of execution important. * To get fully accurate smaller eigenvalue, * next line needs to be executed in higher precision. * RT2 = ( ACMX / RT1 )*ACMN - ( B / RT1 )*B ELSE * * Includes case RT1 = RT2 = 0 * RT1 = HALF*RT RT2 = -HALF*RT SGN1 = 1 END IF * * Compute the eigenvector * IF( DF.GE.ZERO ) THEN CS = DF + RT SGN2 = 1 ELSE CS = DF - RT SGN2 = -1 END IF ACS = ABS( CS ) IF( ACS.GT.AB ) THEN CT = -TB / CS SN1 = ONE / SQRT( ONE+CT*CT ) CS1 = CT*SN1 ELSE IF( AB.EQ.ZERO ) THEN CS1 = ONE SN1 = ZERO ELSE TN = -CS / TB CS1 = ONE / SQRT( ONE+TN*TN ) SN1 = TN*CS1 END IF END IF IF( SGN1.EQ.SGN2 ) THEN TN = CS1 CS1 = -SN1 SN1 = TN END IF RETURN * * End of DLAEV2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlapy3.f0000644002504400250440000000005012337331322016473 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlapy3.f0000644002504400250440000000531312337331322017241 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLAPY3 returns sqrt(x2+y2+z2). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLAPY3 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DLAPY3( X, Y, Z ) * * .. Scalar Arguments .. * DOUBLE PRECISION X, Y, Z * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLAPY3 returns sqrt(x**2+y**2+z**2), taking care not to cause *> unnecessary overflow. *> \endverbatim * * Arguments: * ========== * *> \param[in] X *> \verbatim *> X is DOUBLE PRECISION *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is DOUBLE PRECISION *> \endverbatim *> *> \param[in] Z *> \verbatim *> Z is DOUBLE PRECISION *> X, Y and Z specify the values x, y and z. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== DOUBLE PRECISION FUNCTION DLAPY3( X, Y, Z ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION X, Y, Z * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D0 ) * .. * .. Local Scalars .. DOUBLE PRECISION W, XABS, YABS, ZABS * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, SQRT * .. * .. Executable Statements .. * XABS = ABS( X ) YABS = ABS( Y ) ZABS = ABS( Z ) W = MAX( XABS, YABS, ZABS ) IF( W.EQ.ZERO ) THEN * W can be zero for max(0,nan,0) * adding all three entries together will make sure * NaN will not disappear. DLAPY3 = XABS + YABS + ZABS ELSE DLAPY3 = W*SQRT( ( XABS / W )**2+( YABS / W )**2+ $ ( ZABS / W )**2 ) END IF RETURN * * End of DLAPY3 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgetf2.f0000644002504400250440000000005012337331322016500 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgetf2.f0000644002504400250440000001346612337331322017256 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row interchanges (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGETF2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGETF2( M, N, A, LDA, IPIV, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, M, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGETF2 computes an LU factorization of a general m-by-n matrix A *> using partial pivoting with row interchanges. *> *> The factorization has the form *> A = P * L * U *> where P is a permutation matrix, L is lower triangular with unit *> diagonal elements (lower trapezoidal if m > n), and U is upper *> triangular (upper trapezoidal if m < n). *> *> This is the right-looking Level 2 BLAS version of the algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the m by n matrix to be factored. *> On exit, the factors L and U from the factorization *> A = P*L*U; the unit diagonal elements of L are not stored. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (min(M,N)) *> The pivot indices; for 1 <= i <= min(M,N), row i of the *> matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -k, the k-th argument had an illegal value *> > 0: if INFO = k, U(k,k) is exactly zero. The factorization *> has been completed, but the factor U is exactly *> singular, and division by zero will occur if it is used *> to solve a system of equations. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16GEcomputational * * ===================================================================== SUBROUTINE ZGETF2( M, N, A, LDA, IPIV, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INFO, LDA, M, N * .. * .. Array Arguments .. INTEGER IPIV( * ) COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE, ZERO PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ), $ ZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. DOUBLE PRECISION SFMIN INTEGER I, J, JP * .. * .. External Functions .. DOUBLE PRECISION DLAMCH INTEGER IZAMAX EXTERNAL DLAMCH, IZAMAX * .. * .. External Subroutines .. EXTERNAL XERBLA, ZGERU, ZSCAL, ZSWAP * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGETF2', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 ) $ RETURN * * Compute machine safe minimum * SFMIN = DLAMCH('S') * DO 10 J = 1, MIN( M, N ) * * Find pivot and test for singularity. * JP = J - 1 + IZAMAX( M-J+1, A( J, J ), 1 ) IPIV( J ) = JP IF( A( JP, J ).NE.ZERO ) THEN * * Apply the interchange to columns 1:N. * IF( JP.NE.J ) $ CALL ZSWAP( N, A( J, 1 ), LDA, A( JP, 1 ), LDA ) * * Compute elements J+1:M of J-th column. * IF( J.LT.M ) THEN IF( ABS(A( J, J )) .GE. SFMIN ) THEN CALL ZSCAL( M-J, ONE / A( J, J ), A( J+1, J ), 1 ) ELSE DO 20 I = 1, M-J A( J+I, J ) = A( J+I, J ) / A( J, J ) 20 CONTINUE END IF END IF * ELSE IF( INFO.EQ.0 ) THEN * INFO = J END IF * IF( J.LT.MIN( M, N ) ) THEN * * Update trailing submatrix. * CALL ZGERU( M-J, N-J, -ONE, A( J+1, J ), 1, A( J, J+1 ), $ LDA, A( J+1, J+1 ), LDA ) END IF 10 CONTINUE RETURN * * End of ZGETF2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/iladlr.f0000644002504400250440000000005012337331322016546 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/iladlr.f0000644002504400250440000000575212337331322017323 0ustar00dewhurstdewhurst00000000000000*> \brief \b ILADLR scans a matrix for its last non-zero row. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ILADLR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * INTEGER FUNCTION ILADLR( M, N, A, LDA ) * * .. Scalar Arguments .. * INTEGER M, N, LDA * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ILADLR scans A for its last non-zero row. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The m by n matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== INTEGER FUNCTION ILADLR( M, N, A, LDA ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER M, N, LDA * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, J * .. * .. Executable Statements .. * * Quick test for the common case where one corner is non-zero. IF( M.EQ.0 ) THEN ILADLR = M ELSE IF( A(M, 1).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN ILADLR = M ELSE * Scan up each column tracking the last zero row seen. ILADLR = 0 DO J = 1, N I=M DO WHILE((A(MAX(I,1),J).EQ.ZERO).AND.(I.GE.1)) I=I-1 ENDDO ILADLR = MAX( ILADLR, I ) END DO END IF RETURN END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlarnv.f0000644002504400250440000000005012337331322016565 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlarnv.f0000644002504400250440000001130712337331322017333 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLARNV returns a vector of random numbers from a uniform or normal distribution. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLARNV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLARNV( IDIST, ISEED, N, X ) * * .. Scalar Arguments .. * INTEGER IDIST, N * .. * .. Array Arguments .. * INTEGER ISEED( 4 ) * DOUBLE PRECISION X( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLARNV returns a vector of n random real numbers from a uniform or *> normal distribution. *> \endverbatim * * Arguments: * ========== * *> \param[in] IDIST *> \verbatim *> IDIST is INTEGER *> Specifies the distribution of the random numbers: *> = 1: uniform (0,1) *> = 2: uniform (-1,1) *> = 3: normal (0,1) *> \endverbatim *> *> \param[in,out] ISEED *> \verbatim *> ISEED is INTEGER array, dimension (4) *> On entry, the seed of the random number generator; the array *> elements must be between 0 and 4095, and ISEED(4) must be *> odd. *> On exit, the seed is updated. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of random numbers to be generated. *> \endverbatim *> *> \param[out] X *> \verbatim *> X is DOUBLE PRECISION array, dimension (N) *> The generated random numbers. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> This routine calls the auxiliary routine DLARUV to generate random *> real numbers from a uniform (0,1) distribution, in batches of up to *> 128 using vectorisable code. The Box-Muller method is used to *> transform numbers from a uniform to a normal distribution. *> \endverbatim *> * ===================================================================== SUBROUTINE DLARNV( IDIST, ISEED, N, X ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IDIST, N * .. * .. Array Arguments .. INTEGER ISEED( 4 ) DOUBLE PRECISION X( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, TWO PARAMETER ( ONE = 1.0D+0, TWO = 2.0D+0 ) INTEGER LV PARAMETER ( LV = 128 ) DOUBLE PRECISION TWOPI PARAMETER ( TWOPI = 6.2831853071795864769252867663D+0 ) * .. * .. Local Scalars .. INTEGER I, IL, IL2, IV * .. * .. Local Arrays .. DOUBLE PRECISION U( LV ) * .. * .. Intrinsic Functions .. INTRINSIC COS, LOG, MIN, SQRT * .. * .. External Subroutines .. EXTERNAL DLARUV * .. * .. Executable Statements .. * DO 40 IV = 1, N, LV / 2 IL = MIN( LV / 2, N-IV+1 ) IF( IDIST.EQ.3 ) THEN IL2 = 2*IL ELSE IL2 = IL END IF * * Call DLARUV to generate IL2 numbers from a uniform (0,1) * distribution (IL2 <= LV) * CALL DLARUV( ISEED, IL2, U ) * IF( IDIST.EQ.1 ) THEN * * Copy generated numbers * DO 10 I = 1, IL X( IV+I-1 ) = U( I ) 10 CONTINUE ELSE IF( IDIST.EQ.2 ) THEN * * Convert generated numbers to uniform (-1,1) distribution * DO 20 I = 1, IL X( IV+I-1 ) = TWO*U( I ) - ONE 20 CONTINUE ELSE IF( IDIST.EQ.3 ) THEN * * Convert generated numbers to normal (0,1) distribution * DO 30 I = 1, IL X( IV+I-1 ) = SQRT( -TWO*LOG( U( 2*I-1 ) ) )* $ COS( TWOPI*U( 2*I ) ) 30 CONTINUE END IF 40 CONTINUE RETURN * * End of DLARNV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgetrs.f0000644002504400250440000000005012337331322016615 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgetrs.f0000644002504400250440000001366312337331322017372 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGETRS * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGETRS + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGETRS( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * .. Scalar Arguments .. * CHARACTER TRANS * INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. * INTEGER IPIV( * ) * COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGETRS solves a system of linear equations *> A * X = B, A**T * X = B, or A**H * X = B *> with a general N-by-N matrix A using the LU factorization computed *> by ZGETRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> Specifies the form of the system of equations: *> = 'N': A * X = B (No transpose) *> = 'T': A**T * X = B (Transpose) *> = 'C': A**H * X = B (Conjugate transpose) *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] NRHS *> \verbatim *> NRHS is INTEGER *> The number of right hand sides, i.e., the number of columns *> of the matrix B. NRHS >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The factors L and U from the factorization A = P*L*U *> as computed by ZGETRF. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> The pivot indices from ZGETRF; for 1<=i<=N, row i of the *> matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is COMPLEX*16 array, dimension (LDB,NRHS) *> On entry, the right hand side matrix B. *> On exit, the solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16GEcomputational * * ===================================================================== SUBROUTINE ZGETRS( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER TRANS INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. INTEGER IPIV( * ) COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL NOTRAN * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLASWP, ZTRSM * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 NOTRAN = LSAME( TRANS, 'N' ) IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) .AND. .NOT. $ LSAME( TRANS, 'C' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( NRHS.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGETRS', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 .OR. NRHS.EQ.0 ) $ RETURN * IF( NOTRAN ) THEN * * Solve A * X = B. * * Apply row interchanges to the right hand sides. * CALL ZLASWP( NRHS, B, LDB, 1, N, IPIV, 1 ) * * Solve L*X = B, overwriting B with X. * CALL ZTRSM( 'Left', 'Lower', 'No transpose', 'Unit', N, NRHS, $ ONE, A, LDA, B, LDB ) * * Solve U*X = B, overwriting B with X. * CALL ZTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', N, $ NRHS, ONE, A, LDA, B, LDB ) ELSE * * Solve A**T * X = B or A**H * X = B. * * Solve U**T *X = B or U**H *X = B, overwriting B with X. * CALL ZTRSM( 'Left', 'Upper', TRANS, 'Non-unit', N, NRHS, ONE, $ A, LDA, B, LDB ) * * Solve L**T *X = B, or L**H *X = B overwriting B with X. * CALL ZTRSM( 'Left', 'Lower', TRANS, 'Unit', N, NRHS, ONE, A, $ LDA, B, LDB ) * * Apply row interchanges to the solution vectors. * CALL ZLASWP( NRHS, B, LDB, 1, N, IPIV, -1 ) END IF * RETURN * * End of ZGETRS * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dormqr.f0000644002504400250440000000005012337331322016603 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dormqr.f0000644002504400250440000002253012337331322017351 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORMQR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORMQR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER INFO, K, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORMQR overwrites the general real M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q *> TRANS = 'T': Q**T * C C * Q**T *> *> where Q is a real orthogonal matrix defined as the product of k *> elementary reflectors *> *> Q = H(1) H(2) . . . H(k) *> *> as returned by DGEQRF. Q is of order M if SIDE = 'L' and of order N *> if SIDE = 'R'. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**T from the Left; *> = 'R': apply Q or Q**T from the Right. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': No transpose, apply Q; *> = 'T': Transpose, apply Q**T. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines *> the matrix Q. *> If SIDE = 'L', M >= K >= 0; *> if SIDE = 'R', N >= K >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DGEQRF in the first k columns of its array argument A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDA >= max(1,M); *> if SIDE = 'R', LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DGEQRF. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. *> If SIDE = 'L', LWORK >= max(1,N); *> if SIDE = 'R', LWORK >= max(1,M). *> For optimum performance LWORK >= N*NB if SIDE = 'L', and *> LWORK >= M*NB if SIDE = 'R', where NB is the optimal *> blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER INFO, K, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. INTEGER NBMAX, LDT PARAMETER ( NBMAX = 64, LDT = NBMAX+1 ) * .. * .. Local Scalars .. LOGICAL LEFT, LQUERY, NOTRAN INTEGER I, I1, I2, I3, IB, IC, IINFO, IWS, JC, LDWORK, $ LWKOPT, MI, NB, NBMIN, NI, NQ, NW * .. * .. Local Arrays .. DOUBLE PRECISION T( LDT, NBMAX ) * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DLARFB, DLARFT, DORM2R, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) LQUERY = ( LWORK.EQ.-1 ) * * NQ is the order of Q and NW is the minimum dimension of WORK * IF( LEFT ) THEN NQ = M NW = N ELSE NQ = N NW = M END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * IF( INFO.EQ.0 ) THEN * * Determine the block size. NB may be at most NBMAX, where NBMAX * is used to define the local array T. * NB = MIN( NBMAX, ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N, K, $ -1 ) ) LWKOPT = MAX( 1, NW )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORMQR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NBMIN = 2 LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IWS = NW*NB IF( LWORK.LT.IWS ) THEN NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'DORMQR', SIDE // TRANS, M, N, K, $ -1 ) ) END IF ELSE IWS = NW END IF * IF( NB.LT.NBMIN .OR. NB.GE.K ) THEN * * Use unblocked code * CALL DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, $ IINFO ) ELSE * * Use blocked code * IF( ( LEFT .AND. .NOT.NOTRAN ) .OR. $ ( .NOT.LEFT .AND. NOTRAN ) ) THEN I1 = 1 I2 = K I3 = NB ELSE I1 = ( ( K-1 ) / NB )*NB + 1 I2 = 1 I3 = -NB END IF * IF( LEFT ) THEN NI = N JC = 1 ELSE MI = M IC = 1 END IF * DO 10 I = I1, I2, I3 IB = MIN( NB, K-I+1 ) * * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * CALL DLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ), $ LDA, TAU( I ), T, LDT ) IF( LEFT ) THEN * * H or H**T is applied to C(i:m,1:n) * MI = M - I + 1 IC = I ELSE * * H or H**T is applied to C(1:m,i:n) * NI = N - I + 1 JC = I END IF * * Apply H or H**T * CALL DLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI, $ IB, A( I, I ), LDA, T, LDT, C( IC, JC ), LDC, $ WORK, LDWORK ) 10 CONTINUE END IF WORK( 1 ) = LWKOPT RETURN * * End of DORMQR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zung2r.f0000644002504400250440000000005012337331322016526 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zung2r.f0000644002504400250440000001212012337331322017266 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNG2R * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNG2R + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNG2R( M, N, K, A, LDA, TAU, WORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, K, LDA, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNG2R generates an m by n complex matrix Q with orthonormal columns, *> which is defined as the first n columns of a product of k elementary *> reflectors of order m *> *> Q = H(1) H(2) . . . H(k) *> *> as returned by ZGEQRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix Q. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix Q. M >= N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines the *> matrix Q. N >= K >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the i-th column must contain the vector which *> defines the elementary reflector H(i), for i = 1,2,...,k, as *> returned by ZGEQRF in the first k columns of its array *> argument A. *> On exit, the m by n matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The first dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEQRF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument has an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNG2R( M, N, K, A, LDA, TAU, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE, ZERO PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ), $ ZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. INTEGER I, J, L * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARF, ZSCAL * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNG2R', -INFO ) RETURN END IF * * Quick return if possible * IF( N.LE.0 ) $ RETURN * * Initialise columns k+1:n to columns of the unit matrix * DO 20 J = K + 1, N DO 10 L = 1, M A( L, J ) = ZERO 10 CONTINUE A( J, J ) = ONE 20 CONTINUE * DO 40 I = K, 1, -1 * * Apply H(i) to A(i:m,i:n) from the left * IF( I.LT.N ) THEN A( I, I ) = ONE CALL ZLARF( 'Left', M-I+1, N-I, A( I, I ), 1, TAU( I ), $ A( I, I+1 ), LDA, WORK ) END IF IF( I.LT.M ) $ CALL ZSCAL( M-I, -TAU( I ), A( I+1, I ), 1 ) A( I, I ) = ONE - TAU( I ) * * Set A(1:i-1,i) to zero * DO 30 L = 1, I - 1 A( L, I ) = ZERO 30 CONTINUE 40 CONTINUE RETURN * * End of ZUNG2R * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/disnan.f0000644002504400250440000000005012337331322016553 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/disnan.f0000644002504400250440000000373212337331322017324 0ustar00dewhurstdewhurst00000000000000*> \brief \b DISNAN tests input for NaN. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DISNAN + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * LOGICAL FUNCTION DISNAN( DIN ) * * .. Scalar Arguments .. * DOUBLE PRECISION DIN * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DISNAN returns .TRUE. if its argument is NaN, and .FALSE. *> otherwise. To be replaced by the Fortran 2003 intrinsic in the *> future. *> \endverbatim * * Arguments: * ========== * *> \param[in] DIN *> \verbatim *> DIN is DOUBLE PRECISION *> Input to test for NaN. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== LOGICAL FUNCTION DISNAN( DIN ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION DIN * .. * * ===================================================================== * * .. External Functions .. LOGICAL DLAISNAN EXTERNAL DLAISNAN * .. * .. Executable Statements .. DISNAN = DLAISNAN(DIN,DIN) RETURN END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgehd2.f0000644002504400250440000000005012337331322016462 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgehd2.f0000644002504400250440000001471512337331322017236 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGEHD2 reduces a general square matrix to upper Hessenberg form using an unblocked algorithm. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGEHD2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGEHD2( N, ILO, IHI, A, LDA, TAU, WORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, INFO, LDA, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGEHD2 reduces a complex general matrix A to upper Hessenberg form H *> by a unitary similarity transformation: Q**H * A * Q = H . *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> *> It is assumed that A is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally *> set by a previous call to ZGEBAL; otherwise they should be *> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= max(1,N). *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the n by n general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the unitary matrix Q as a product of elementary *> reflectors. See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16GEcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors *> *> Q = H(ilo) H(ilo+1) . . . H(ihi-1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on *> exit in A(i+2:ihi,i), and tau in TAU(i). *> *> The contents of A are illustrated by the following example, with *> n = 7, ilo = 2 and ihi = 6: *> *> on entry, on exit, *> *> ( a a a a a a a ) ( a a h h h h a ) *> ( a a a a a a ) ( a h h h h a ) *> ( a a a a a a ) ( h h h h h h ) *> ( a a a a a a ) ( v2 h h h h h ) *> ( a a a a a a ) ( v2 v3 h h h h ) *> ( a a a a a a ) ( v2 v3 v4 h h h ) *> ( a ) ( a ) *> *> where a denotes an element of the original matrix A, h denotes a *> modified element of the upper Hessenberg matrix H, and vi denotes an *> element of the vector defining H(i). *> \endverbatim *> * ===================================================================== SUBROUTINE ZGEHD2( N, ILO, IHI, A, LDA, TAU, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IHI, ILO, INFO, LDA, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. INTEGER I COMPLEX*16 ALPHA * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARF, ZLARFG * .. * .. Intrinsic Functions .. INTRINSIC DCONJG, MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 IF( N.LT.0 ) THEN INFO = -1 ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN INFO = -2 ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGEHD2', -INFO ) RETURN END IF * DO 10 I = ILO, IHI - 1 * * Compute elementary reflector H(i) to annihilate A(i+2:ihi,i) * ALPHA = A( I+1, I ) CALL ZLARFG( IHI-I, ALPHA, A( MIN( I+2, N ), I ), 1, TAU( I ) ) A( I+1, I ) = ONE * * Apply H(i) to A(1:ihi,i+1:ihi) from the right * CALL ZLARF( 'Right', IHI, IHI-I, A( I+1, I ), 1, TAU( I ), $ A( 1, I+1 ), LDA, WORK ) * * Apply H(i)**H to A(i+1:ihi,i+1:n) from the left * CALL ZLARF( 'Left', IHI-I, N-I, A( I+1, I ), 1, $ DCONJG( TAU( I ) ), A( I+1, I+1 ), LDA, WORK ) * A( I+1, I ) = ALPHA 10 CONTINUE * RETURN * * End of ZGEHD2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsteqr.f0000644002504400250440000000005012337331322016601 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsteqr.f0000644002504400250440000003631612337331322017356 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSTEQR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSTEQR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSTEQR( COMPZ, N, D, E, Z, LDZ, WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER COMPZ * INTEGER INFO, LDZ, N * .. * .. Array Arguments .. * DOUBLE PRECISION D( * ), E( * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSTEQR computes all eigenvalues and, optionally, eigenvectors of a *> symmetric tridiagonal matrix using the implicit QL or QR method. *> The eigenvectors of a full or band symmetric matrix can also be found *> if DSYTRD or DSPTRD or DSBTRD has been used to reduce this matrix to *> tridiagonal form. *> \endverbatim * * Arguments: * ========== * *> \param[in] COMPZ *> \verbatim *> COMPZ is CHARACTER*1 *> = 'N': Compute eigenvalues only. *> = 'V': Compute eigenvalues and eigenvectors of the original *> symmetric matrix. On entry, Z must contain the *> orthogonal matrix used to reduce the original matrix *> to tridiagonal form. *> = 'I': Compute eigenvalues and eigenvectors of the *> tridiagonal matrix. Z is initialized to the identity *> matrix. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix. N >= 0. *> \endverbatim *> *> \param[in,out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> On entry, the diagonal elements of the tridiagonal matrix. *> On exit, if INFO = 0, the eigenvalues in ascending order. *> \endverbatim *> *> \param[in,out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> On entry, the (n-1) subdiagonal elements of the tridiagonal *> matrix. *> On exit, E has been destroyed. *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is DOUBLE PRECISION array, dimension (LDZ, N) *> On entry, if COMPZ = 'V', then Z contains the orthogonal *> matrix used in the reduction to tridiagonal form. *> On exit, if INFO = 0, then if COMPZ = 'V', Z contains the *> orthonormal eigenvectors of the original symmetric matrix, *> and if COMPZ = 'I', Z contains the orthonormal eigenvectors *> of the symmetric tridiagonal matrix. *> If COMPZ = 'N', then Z is not referenced. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= 1, and if *> eigenvectors are desired, then LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (max(1,2*N-2)) *> If COMPZ = 'N', then WORK is not referenced. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: the algorithm has failed to find all the eigenvalues in *> a total of 30*N iterations; if INFO = i, then i *> elements of E have not converged to zero; on exit, D *> and E contain the elements of a symmetric tridiagonal *> matrix which is orthogonally similar to the original *> matrix. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup auxOTHERcomputational * * ===================================================================== SUBROUTINE DSTEQR( COMPZ, N, D, E, Z, LDZ, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER COMPZ INTEGER INFO, LDZ, N * .. * .. Array Arguments .. DOUBLE PRECISION D( * ), E( * ), WORK( * ), Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE, TWO, THREE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0, $ THREE = 3.0D0 ) INTEGER MAXIT PARAMETER ( MAXIT = 30 ) * .. * .. Local Scalars .. INTEGER I, ICOMPZ, II, ISCALE, J, JTOT, K, L, L1, LEND, $ LENDM1, LENDP1, LENDSV, LM1, LSV, M, MM, MM1, $ NM1, NMAXIT DOUBLE PRECISION ANORM, B, C, EPS, EPS2, F, G, P, R, RT1, RT2, $ S, SAFMAX, SAFMIN, SSFMAX, SSFMIN, TST * .. * .. External Functions .. LOGICAL LSAME DOUBLE PRECISION DLAMCH, DLANST, DLAPY2 EXTERNAL LSAME, DLAMCH, DLANST, DLAPY2 * .. * .. External Subroutines .. EXTERNAL DLAE2, DLAEV2, DLARTG, DLASCL, DLASET, DLASR, $ DLASRT, DSWAP, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, SIGN, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 * IF( LSAME( COMPZ, 'N' ) ) THEN ICOMPZ = 0 ELSE IF( LSAME( COMPZ, 'V' ) ) THEN ICOMPZ = 1 ELSE IF( LSAME( COMPZ, 'I' ) ) THEN ICOMPZ = 2 ELSE ICOMPZ = -1 END IF IF( ICOMPZ.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( ( LDZ.LT.1 ) .OR. ( ICOMPZ.GT.0 .AND. LDZ.LT.MAX( 1, $ N ) ) ) THEN INFO = -6 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSTEQR', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( N.EQ.1 ) THEN IF( ICOMPZ.EQ.2 ) $ Z( 1, 1 ) = ONE RETURN END IF * * Determine the unit roundoff and over/underflow thresholds. * EPS = DLAMCH( 'E' ) EPS2 = EPS**2 SAFMIN = DLAMCH( 'S' ) SAFMAX = ONE / SAFMIN SSFMAX = SQRT( SAFMAX ) / THREE SSFMIN = SQRT( SAFMIN ) / EPS2 * * Compute the eigenvalues and eigenvectors of the tridiagonal * matrix. * IF( ICOMPZ.EQ.2 ) $ CALL DLASET( 'Full', N, N, ZERO, ONE, Z, LDZ ) * NMAXIT = N*MAXIT JTOT = 0 * * Determine where the matrix splits and choose QL or QR iteration * for each block, according to whether top or bottom diagonal * element is smaller. * L1 = 1 NM1 = N - 1 * 10 CONTINUE IF( L1.GT.N ) $ GO TO 160 IF( L1.GT.1 ) $ E( L1-1 ) = ZERO IF( L1.LE.NM1 ) THEN DO 20 M = L1, NM1 TST = ABS( E( M ) ) IF( TST.EQ.ZERO ) $ GO TO 30 IF( TST.LE.( SQRT( ABS( D( M ) ) )*SQRT( ABS( D( M+ $ 1 ) ) ) )*EPS ) THEN E( M ) = ZERO GO TO 30 END IF 20 CONTINUE END IF M = N * 30 CONTINUE L = L1 LSV = L LEND = M LENDSV = LEND L1 = M + 1 IF( LEND.EQ.L ) $ GO TO 10 * * Scale submatrix in rows and columns L to LEND * ANORM = DLANST( 'M', LEND-L+1, D( L ), E( L ) ) ISCALE = 0 IF( ANORM.EQ.ZERO ) $ GO TO 10 IF( ANORM.GT.SSFMAX ) THEN ISCALE = 1 CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L+1, 1, D( L ), N, $ INFO ) CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L, 1, E( L ), N, $ INFO ) ELSE IF( ANORM.LT.SSFMIN ) THEN ISCALE = 2 CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L+1, 1, D( L ), N, $ INFO ) CALL DLASCL( 'G', 0, 0, ANORM, SSFMIN, LEND-L, 1, E( L ), N, $ INFO ) END IF * * Choose between QL and QR iteration * IF( ABS( D( LEND ) ).LT.ABS( D( L ) ) ) THEN LEND = LSV L = LENDSV END IF * IF( LEND.GT.L ) THEN * * QL Iteration * * Look for small subdiagonal element. * 40 CONTINUE IF( L.NE.LEND ) THEN LENDM1 = LEND - 1 DO 50 M = L, LENDM1 TST = ABS( E( M ) )**2 IF( TST.LE.( EPS2*ABS( D( M ) ) )*ABS( D( M+1 ) )+ $ SAFMIN )GO TO 60 50 CONTINUE END IF * M = LEND * 60 CONTINUE IF( M.LT.LEND ) $ E( M ) = ZERO P = D( L ) IF( M.EQ.L ) $ GO TO 80 * * If remaining matrix is 2-by-2, use DLAE2 or SLAEV2 * to compute its eigensystem. * IF( M.EQ.L+1 ) THEN IF( ICOMPZ.GT.0 ) THEN CALL DLAEV2( D( L ), E( L ), D( L+1 ), RT1, RT2, C, S ) WORK( L ) = C WORK( N-1+L ) = S CALL DLASR( 'R', 'V', 'B', N, 2, WORK( L ), $ WORK( N-1+L ), Z( 1, L ), LDZ ) ELSE CALL DLAE2( D( L ), E( L ), D( L+1 ), RT1, RT2 ) END IF D( L ) = RT1 D( L+1 ) = RT2 E( L ) = ZERO L = L + 2 IF( L.LE.LEND ) $ GO TO 40 GO TO 140 END IF * IF( JTOT.EQ.NMAXIT ) $ GO TO 140 JTOT = JTOT + 1 * * Form shift. * G = ( D( L+1 )-P ) / ( TWO*E( L ) ) R = DLAPY2( G, ONE ) G = D( M ) - P + ( E( L ) / ( G+SIGN( R, G ) ) ) * S = ONE C = ONE P = ZERO * * Inner loop * MM1 = M - 1 DO 70 I = MM1, L, -1 F = S*E( I ) B = C*E( I ) CALL DLARTG( G, F, C, S, R ) IF( I.NE.M-1 ) $ E( I+1 ) = R G = D( I+1 ) - P R = ( D( I )-G )*S + TWO*C*B P = S*R D( I+1 ) = G + P G = C*R - B * * If eigenvectors are desired, then save rotations. * IF( ICOMPZ.GT.0 ) THEN WORK( I ) = C WORK( N-1+I ) = -S END IF * 70 CONTINUE * * If eigenvectors are desired, then apply saved rotations. * IF( ICOMPZ.GT.0 ) THEN MM = M - L + 1 CALL DLASR( 'R', 'V', 'B', N, MM, WORK( L ), WORK( N-1+L ), $ Z( 1, L ), LDZ ) END IF * D( L ) = D( L ) - P E( L ) = G GO TO 40 * * Eigenvalue found. * 80 CONTINUE D( L ) = P * L = L + 1 IF( L.LE.LEND ) $ GO TO 40 GO TO 140 * ELSE * * QR Iteration * * Look for small superdiagonal element. * 90 CONTINUE IF( L.NE.LEND ) THEN LENDP1 = LEND + 1 DO 100 M = L, LENDP1, -1 TST = ABS( E( M-1 ) )**2 IF( TST.LE.( EPS2*ABS( D( M ) ) )*ABS( D( M-1 ) )+ $ SAFMIN )GO TO 110 100 CONTINUE END IF * M = LEND * 110 CONTINUE IF( M.GT.LEND ) $ E( M-1 ) = ZERO P = D( L ) IF( M.EQ.L ) $ GO TO 130 * * If remaining matrix is 2-by-2, use DLAE2 or SLAEV2 * to compute its eigensystem. * IF( M.EQ.L-1 ) THEN IF( ICOMPZ.GT.0 ) THEN CALL DLAEV2( D( L-1 ), E( L-1 ), D( L ), RT1, RT2, C, S ) WORK( M ) = C WORK( N-1+M ) = S CALL DLASR( 'R', 'V', 'F', N, 2, WORK( M ), $ WORK( N-1+M ), Z( 1, L-1 ), LDZ ) ELSE CALL DLAE2( D( L-1 ), E( L-1 ), D( L ), RT1, RT2 ) END IF D( L-1 ) = RT1 D( L ) = RT2 E( L-1 ) = ZERO L = L - 2 IF( L.GE.LEND ) $ GO TO 90 GO TO 140 END IF * IF( JTOT.EQ.NMAXIT ) $ GO TO 140 JTOT = JTOT + 1 * * Form shift. * G = ( D( L-1 )-P ) / ( TWO*E( L-1 ) ) R = DLAPY2( G, ONE ) G = D( M ) - P + ( E( L-1 ) / ( G+SIGN( R, G ) ) ) * S = ONE C = ONE P = ZERO * * Inner loop * LM1 = L - 1 DO 120 I = M, LM1 F = S*E( I ) B = C*E( I ) CALL DLARTG( G, F, C, S, R ) IF( I.NE.M ) $ E( I-1 ) = R G = D( I ) - P R = ( D( I+1 )-G )*S + TWO*C*B P = S*R D( I ) = G + P G = C*R - B * * If eigenvectors are desired, then save rotations. * IF( ICOMPZ.GT.0 ) THEN WORK( I ) = C WORK( N-1+I ) = S END IF * 120 CONTINUE * * If eigenvectors are desired, then apply saved rotations. * IF( ICOMPZ.GT.0 ) THEN MM = L - M + 1 CALL DLASR( 'R', 'V', 'F', N, MM, WORK( M ), WORK( N-1+M ), $ Z( 1, M ), LDZ ) END IF * D( L ) = D( L ) - P E( LM1 ) = G GO TO 90 * * Eigenvalue found. * 130 CONTINUE D( L ) = P * L = L - 1 IF( L.GE.LEND ) $ GO TO 90 GO TO 140 * END IF * * Undo scaling if necessary * 140 CONTINUE IF( ISCALE.EQ.1 ) THEN CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV+1, 1, $ D( LSV ), N, INFO ) CALL DLASCL( 'G', 0, 0, SSFMAX, ANORM, LENDSV-LSV, 1, E( LSV ), $ N, INFO ) ELSE IF( ISCALE.EQ.2 ) THEN CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV+1, 1, $ D( LSV ), N, INFO ) CALL DLASCL( 'G', 0, 0, SSFMIN, ANORM, LENDSV-LSV, 1, E( LSV ), $ N, INFO ) END IF * * Check for no convergence to an eigenvalue after a total * of N*MAXIT iterations. * IF( JTOT.LT.NMAXIT ) $ GO TO 10 DO 150 I = 1, N - 1 IF( E( I ).NE.ZERO ) $ INFO = INFO + 1 150 CONTINUE GO TO 190 * * Order eigenvalues and eigenvectors. * 160 CONTINUE IF( ICOMPZ.EQ.0 ) THEN * * Use Quick Sort * CALL DLASRT( 'I', N, D, INFO ) * ELSE * * Use Selection Sort to minimize swaps of eigenvectors * DO 180 II = 2, N I = II - 1 K = I P = D( I ) DO 170 J = II, N IF( D( J ).LT.P ) THEN K = J P = D( J ) END IF 170 CONTINUE IF( K.NE.I ) THEN D( K ) = D( I ) D( I ) = P CALL DSWAP( N, Z( 1, I ), 1, Z( 1, K ), 1 ) END IF 180 CONTINUE END IF * 190 CONTINUE RETURN * * End of DSTEQR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsygst.f0000644002504400250440000000005012337331322016614 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsygst.f0000644002504400250440000002540012337331322017361 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYGST * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYGST + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, ITYPE, LDA, LDB, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYGST reduces a real symmetric-definite generalized eigenproblem *> to standard form. *> *> If ITYPE = 1, the problem is A*x = lambda*B*x, *> and A is overwritten by inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T) *> *> If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or *> B*A*x = lambda*x, and A is overwritten by U*A*U**T or L**T*A*L. *> *> B must have been previously factorized as U**T*U or L*L**T by DPOTRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> = 1: compute inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T); *> = 2 or 3: compute U*A*U**T or L**T*A*L. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored and B is factored as *> U**T*U; *> = 'L': Lower triangle of A is stored and B is factored as *> L*L**T. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrices A and B. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> N-by-N upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the transformed matrix, stored in the *> same format as A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB,N) *> The triangular factor from the Cholesky factorization of B, *> as returned by DPOTRF. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYcomputational * * ===================================================================== SUBROUTINE DSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, ITYPE, LDA, LDB, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, HALF PARAMETER ( ONE = 1.0D0, HALF = 0.5D0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER K, KB, NB * .. * .. External Subroutines .. EXTERNAL DSYGS2, DSYMM, DSYR2K, DTRMM, DTRSM, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -7 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYGST', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Determine the block size for this environment. * NB = ILAENV( 1, 'DSYGST', UPLO, N, -1, -1, -1 ) * IF( NB.LE.1 .OR. NB.GE.N ) THEN * * Use unblocked code * CALL DSYGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) ELSE * * Use blocked code * IF( ITYPE.EQ.1 ) THEN IF( UPPER ) THEN * * Compute inv(U**T)*A*inv(U) * DO 10 K = 1, N, NB KB = MIN( N-K+1, NB ) * * Update the upper triangle of A(k:n,k:n) * CALL DSYGS2( ITYPE, UPLO, KB, A( K, K ), LDA, $ B( K, K ), LDB, INFO ) IF( K+KB.LE.N ) THEN CALL DTRSM( 'Left', UPLO, 'Transpose', 'Non-unit', $ KB, N-K-KB+1, ONE, B( K, K ), LDB, $ A( K, K+KB ), LDA ) CALL DSYMM( 'Left', UPLO, KB, N-K-KB+1, -HALF, $ A( K, K ), LDA, B( K, K+KB ), LDB, ONE, $ A( K, K+KB ), LDA ) CALL DSYR2K( UPLO, 'Transpose', N-K-KB+1, KB, -ONE, $ A( K, K+KB ), LDA, B( K, K+KB ), LDB, $ ONE, A( K+KB, K+KB ), LDA ) CALL DSYMM( 'Left', UPLO, KB, N-K-KB+1, -HALF, $ A( K, K ), LDA, B( K, K+KB ), LDB, ONE, $ A( K, K+KB ), LDA ) CALL DTRSM( 'Right', UPLO, 'No transpose', $ 'Non-unit', KB, N-K-KB+1, ONE, $ B( K+KB, K+KB ), LDB, A( K, K+KB ), $ LDA ) END IF 10 CONTINUE ELSE * * Compute inv(L)*A*inv(L**T) * DO 20 K = 1, N, NB KB = MIN( N-K+1, NB ) * * Update the lower triangle of A(k:n,k:n) * CALL DSYGS2( ITYPE, UPLO, KB, A( K, K ), LDA, $ B( K, K ), LDB, INFO ) IF( K+KB.LE.N ) THEN CALL DTRSM( 'Right', UPLO, 'Transpose', 'Non-unit', $ N-K-KB+1, KB, ONE, B( K, K ), LDB, $ A( K+KB, K ), LDA ) CALL DSYMM( 'Right', UPLO, N-K-KB+1, KB, -HALF, $ A( K, K ), LDA, B( K+KB, K ), LDB, ONE, $ A( K+KB, K ), LDA ) CALL DSYR2K( UPLO, 'No transpose', N-K-KB+1, KB, $ -ONE, A( K+KB, K ), LDA, B( K+KB, K ), $ LDB, ONE, A( K+KB, K+KB ), LDA ) CALL DSYMM( 'Right', UPLO, N-K-KB+1, KB, -HALF, $ A( K, K ), LDA, B( K+KB, K ), LDB, ONE, $ A( K+KB, K ), LDA ) CALL DTRSM( 'Left', UPLO, 'No transpose', $ 'Non-unit', N-K-KB+1, KB, ONE, $ B( K+KB, K+KB ), LDB, A( K+KB, K ), $ LDA ) END IF 20 CONTINUE END IF ELSE IF( UPPER ) THEN * * Compute U*A*U**T * DO 30 K = 1, N, NB KB = MIN( N-K+1, NB ) * * Update the upper triangle of A(1:k+kb-1,1:k+kb-1) * CALL DTRMM( 'Left', UPLO, 'No transpose', 'Non-unit', $ K-1, KB, ONE, B, LDB, A( 1, K ), LDA ) CALL DSYMM( 'Right', UPLO, K-1, KB, HALF, A( K, K ), $ LDA, B( 1, K ), LDB, ONE, A( 1, K ), LDA ) CALL DSYR2K( UPLO, 'No transpose', K-1, KB, ONE, $ A( 1, K ), LDA, B( 1, K ), LDB, ONE, A, $ LDA ) CALL DSYMM( 'Right', UPLO, K-1, KB, HALF, A( K, K ), $ LDA, B( 1, K ), LDB, ONE, A( 1, K ), LDA ) CALL DTRMM( 'Right', UPLO, 'Transpose', 'Non-unit', $ K-1, KB, ONE, B( K, K ), LDB, A( 1, K ), $ LDA ) CALL DSYGS2( ITYPE, UPLO, KB, A( K, K ), LDA, $ B( K, K ), LDB, INFO ) 30 CONTINUE ELSE * * Compute L**T*A*L * DO 40 K = 1, N, NB KB = MIN( N-K+1, NB ) * * Update the lower triangle of A(1:k+kb-1,1:k+kb-1) * CALL DTRMM( 'Right', UPLO, 'No transpose', 'Non-unit', $ KB, K-1, ONE, B, LDB, A( K, 1 ), LDA ) CALL DSYMM( 'Left', UPLO, KB, K-1, HALF, A( K, K ), $ LDA, B( K, 1 ), LDB, ONE, A( K, 1 ), LDA ) CALL DSYR2K( UPLO, 'Transpose', K-1, KB, ONE, $ A( K, 1 ), LDA, B( K, 1 ), LDB, ONE, A, $ LDA ) CALL DSYMM( 'Left', UPLO, KB, K-1, HALF, A( K, K ), $ LDA, B( K, 1 ), LDB, ONE, A( K, 1 ), LDA ) CALL DTRMM( 'Left', UPLO, 'Transpose', 'Non-unit', KB, $ K-1, ONE, B( K, K ), LDB, A( K, 1 ), LDA ) CALL DSYGS2( ITYPE, UPLO, KB, A( K, K ), LDA, $ B( K, K ), LDB, INFO ) 40 CONTINUE END IF END IF END IF RETURN * * End of DSYGST * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsytrf.f0000644002504400250440000000005012337331322016612 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsytrf.f0000644002504400250440000002556012337331322017366 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYTRF * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYTRF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYTRF computes the factorization of a real symmetric matrix A using *> the Bunch-Kaufman diagonal pivoting method. The form of the *> factorization is *> *> A = U*D*U**T or A = L*D*L**T *> *> where U (or L) is a product of permutation and unit upper (lower) *> triangular matrices, and D is symmetric and block diagonal with *> 1-by-1 and 2-by-2 diagonal blocks. *> *> This is the blocked version of the algorithm, calling Level 3 BLAS. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> N-by-N upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, the block diagonal matrix D and the multipliers used *> to obtain the factor U or L (see below for further details). *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> Details of the interchanges and the block structure of D. *> If IPIV(k) > 0, then rows and columns k and IPIV(k) were *> interchanged and D(k,k) is a 1-by-1 diagonal block. *> If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and *> columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k) *> is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) = *> IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were *> interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of WORK. LWORK >=1. For best performance *> LWORK >= N*NB, where NB is the block size returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, D(i,i) is exactly zero. The factorization *> has been completed, but the block diagonal matrix D is *> exactly singular, and division by zero will occur if it *> is used to solve a system of equations. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', then A = U*D*U**T, where *> U = P(n)*U(n)* ... *P(k)U(k)* ..., *> i.e., U is a product of terms P(k)*U(k), where k decreases from n to *> 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 *> and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as *> defined by IPIV(k), and U(k) is a unit upper triangular matrix, such *> that if the diagonal block D(k) is of order s (s = 1 or 2), then *> *> ( I v 0 ) k-s *> U(k) = ( 0 I 0 ) s *> ( 0 0 I ) n-k *> k-s s n-k *> *> If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k). *> If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k), *> and A(k,k), and v overwrites A(1:k-2,k-1:k). *> *> If UPLO = 'L', then A = L*D*L**T, where *> L = P(1)*L(1)* ... *P(k)*L(k)* ..., *> i.e., L is a product of terms P(k)*L(k), where k increases from 1 to *> n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 *> and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as *> defined by IPIV(k), and L(k) is a unit lower triangular matrix, such *> that if the diagonal block D(k) is of order s (s = 1 or 2), then *> *> ( I 0 0 ) k-1 *> L(k) = ( 0 I 0 ) s *> ( 0 v I ) n-k-s+1 *> k-1 s n-k-s+1 *> *> If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k). *> If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k), *> and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1). *> \endverbatim *> * ===================================================================== SUBROUTINE DSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), WORK( * ) * .. * * ===================================================================== * * .. Local Scalars .. LOGICAL LQUERY, UPPER INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DLASYF, DSYTF2, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) LQUERY = ( LWORK.EQ.-1 ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN INFO = -7 END IF * IF( INFO.EQ.0 ) THEN * * Determine the block size * NB = ILAENV( 1, 'DSYTRF', UPLO, N, -1, -1, -1 ) LWKOPT = N*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYTRF', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * NBMIN = 2 LDWORK = N IF( NB.GT.1 .AND. NB.LT.N ) THEN IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN NB = MAX( LWORK / LDWORK, 1 ) NBMIN = MAX( 2, ILAENV( 2, 'DSYTRF', UPLO, N, -1, -1, -1 ) ) END IF ELSE IWS = 1 END IF IF( NB.LT.NBMIN ) $ NB = N * IF( UPPER ) THEN * * Factorize A as U*D*U**T using the upper triangle of A * * K is the main loop index, decreasing from N to 1 in steps of * KB, where KB is the number of columns factorized by DLASYF; * KB is either NB or NB-1, or K for the last block * K = N 10 CONTINUE * * If K < 1, exit from loop * IF( K.LT.1 ) $ GO TO 40 * IF( K.GT.NB ) THEN * * Factorize columns k-kb+1:k of A and use blocked code to * update columns 1:k-kb * CALL DLASYF( UPLO, K, NB, KB, A, LDA, IPIV, WORK, LDWORK, $ IINFO ) ELSE * * Use unblocked code to factorize columns 1:k of A * CALL DSYTF2( UPLO, K, A, LDA, IPIV, IINFO ) KB = K END IF * * Set INFO on the first occurrence of a zero pivot * IF( INFO.EQ.0 .AND. IINFO.GT.0 ) $ INFO = IINFO * * Decrease K and return to the start of the main loop * K = K - KB GO TO 10 * ELSE * * Factorize A as L*D*L**T using the lower triangle of A * * K is the main loop index, increasing from 1 to N in steps of * KB, where KB is the number of columns factorized by DLASYF; * KB is either NB or NB-1, or N-K+1 for the last block * K = 1 20 CONTINUE * * If K > N, exit from loop * IF( K.GT.N ) $ GO TO 40 * IF( K.LE.N-NB ) THEN * * Factorize columns k:k+kb-1 of A and use blocked code to * update columns k+kb:n * CALL DLASYF( UPLO, N-K+1, NB, KB, A( K, K ), LDA, IPIV( K ), $ WORK, LDWORK, IINFO ) ELSE * * Use unblocked code to factorize columns k:n of A * CALL DSYTF2( UPLO, N-K+1, A( K, K ), LDA, IPIV( K ), IINFO ) KB = N - K + 1 END IF * * Set INFO on the first occurrence of a zero pivot * IF( INFO.EQ.0 .AND. IINFO.GT.0 ) $ INFO = IINFO + K - 1 * * Adjust IPIV * DO 30 J = K, K + KB - 1 IF( IPIV( J ).GT.0 ) THEN IPIV( J ) = IPIV( J ) + K - 1 ELSE IPIV( J ) = IPIV( J ) - K + 1 END IF 30 CONTINUE * * Increase K and return to the start of the main loop * K = K + KB GO TO 20 * END IF * 40 CONTINUE WORK( 1 ) = LWKOPT RETURN * * End of DSYTRF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlacpy.f0000644002504400250440000000005012337331322016553 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlacpy.f0000644002504400250440000001002612337331322017316 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLACPY copies all or part of one two-dimensional array to another. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLACPY + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER LDA, LDB, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLACPY copies all or part of a two-dimensional matrix A to another *> matrix B. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies the part of the matrix A to be copied to B. *> = 'U': Upper triangular part *> = 'L': Lower triangular part *> Otherwise: All of the matrix A *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The m by n matrix A. If UPLO = 'U', only the upper triangle *> or trapezoid is accessed; if UPLO = 'L', only the lower *> triangle or trapezoid is accessed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[out] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB,N) *> On exit, B = A in the locations specified by UPLO. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER LDA, LDB, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, J * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Intrinsic Functions .. INTRINSIC MIN * .. * .. Executable Statements .. * IF( LSAME( UPLO, 'U' ) ) THEN DO 20 J = 1, N DO 10 I = 1, MIN( J, M ) B( I, J ) = A( I, J ) 10 CONTINUE 20 CONTINUE ELSE IF( LSAME( UPLO, 'L' ) ) THEN DO 40 J = 1, N DO 30 I = J, M B( I, J ) = A( I, J ) 30 CONTINUE 40 CONTINUE ELSE DO 60 J = 1, N DO 50 I = 1, M B( I, J ) = A( I, J ) 50 CONTINUE 60 CONTINUE END IF RETURN * * End of DLACPY * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlarf.f0000644002504400250440000000005012337331322016415 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlarf.f0000644002504400250440000001431112337331322017161 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLARF applies an elementary reflector to a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLARF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) * * .. Scalar Arguments .. * CHARACTER SIDE * INTEGER INCV, LDC, M, N * COMPLEX*16 TAU * .. * .. Array Arguments .. * COMPLEX*16 C( LDC, * ), V( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLARF applies a complex elementary reflector H to a complex M-by-N *> matrix C, from either the left or the right. H is represented in the *> form *> *> H = I - tau * v * v**H *> *> where tau is a complex scalar and v is a complex vector. *> *> If tau = 0, then H is taken to be the unit matrix. *> *> To apply H**H, supply conjg(tau) instead *> tau. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': form H * C *> = 'R': form C * H *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. *> \endverbatim *> *> \param[in] V *> \verbatim *> V is COMPLEX*16 array, dimension *> (1 + (M-1)*abs(INCV)) if SIDE = 'L' *> or (1 + (N-1)*abs(INCV)) if SIDE = 'R' *> The vector v in the representation of H. V is not used if *> TAU = 0. *> \endverbatim *> *> \param[in] INCV *> \verbatim *> INCV is INTEGER *> The increment between elements of v. INCV <> 0. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 *> The value tau in the representation of H. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by the matrix H * C if SIDE = 'L', *> or C * H if SIDE = 'R'. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension *> (N) if SIDE = 'L' *> or (M) if SIDE = 'R' *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZLARF( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER SIDE INTEGER INCV, LDC, M, N COMPLEX*16 TAU * .. * .. Array Arguments .. COMPLEX*16 C( LDC, * ), V( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE, ZERO PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ), $ ZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL APPLYLEFT INTEGER I, LASTV, LASTC * .. * .. External Subroutines .. EXTERNAL ZGEMV, ZGERC * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAZLR, ILAZLC EXTERNAL LSAME, ILAZLR, ILAZLC * .. * .. Executable Statements .. * APPLYLEFT = LSAME( SIDE, 'L' ) LASTV = 0 LASTC = 0 IF( TAU.NE.ZERO ) THEN * Set up variables for scanning V. LASTV begins pointing to the end * of V. IF( APPLYLEFT ) THEN LASTV = M ELSE LASTV = N END IF IF( INCV.GT.0 ) THEN I = 1 + (LASTV-1) * INCV ELSE I = 1 END IF * Look for the last non-zero row in V. DO WHILE( LASTV.GT.0 .AND. V( I ).EQ.ZERO ) LASTV = LASTV - 1 I = I - INCV END DO IF( APPLYLEFT ) THEN * Scan for the last non-zero column in C(1:lastv,:). LASTC = ILAZLC(LASTV, N, C, LDC) ELSE * Scan for the last non-zero row in C(:,1:lastv). LASTC = ILAZLR(M, LASTV, C, LDC) END IF END IF * Note that lastc.eq.0 renders the BLAS operations null; no special * case is needed at this level. IF( APPLYLEFT ) THEN * * Form H * C * IF( LASTV.GT.0 ) THEN * * w(1:lastc,1) := C(1:lastv,1:lastc)**H * v(1:lastv,1) * CALL ZGEMV( 'Conjugate transpose', LASTV, LASTC, ONE, $ C, LDC, V, INCV, ZERO, WORK, 1 ) * * C(1:lastv,1:lastc) := C(...) - v(1:lastv,1) * w(1:lastc,1)**H * CALL ZGERC( LASTV, LASTC, -TAU, V, INCV, WORK, 1, C, LDC ) END IF ELSE * * Form C * H * IF( LASTV.GT.0 ) THEN * * w(1:lastc,1) := C(1:lastc,1:lastv) * v(1:lastv,1) * CALL ZGEMV( 'No transpose', LASTC, LASTV, ONE, C, LDC, $ V, INCV, ZERO, WORK, 1 ) * * C(1:lastc,1:lastv) := C(...) - w(1:lastc,1) * v(1:lastv,1)**H * CALL ZGERC( LASTC, LASTV, -TAU, WORK, 1, V, INCV, C, LDC ) END IF END IF RETURN * * End of ZLARF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlasyf.f0000644002504400250440000000005012337331322016561 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlasyf.f0000644002504400250440000004763312337331322017342 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLASYF computes a partial factorization of a real symmetric matrix, using the diagonal pivoting method. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLASYF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLASYF( UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, KB, LDA, LDW, N, NB * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), W( LDW, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLASYF computes a partial factorization of a real symmetric matrix A *> using the Bunch-Kaufman diagonal pivoting method. The partial *> factorization has the form: *> *> A = ( I U12 ) ( A11 0 ) ( I 0 ) if UPLO = 'U', or: *> ( 0 U22 ) ( 0 D ) ( U12**T U22**T ) *> *> A = ( L11 0 ) ( D 0 ) ( L11**T L21**T ) if UPLO = 'L' *> ( L21 I ) ( 0 A22 ) ( 0 I ) *> *> where the order of D is at most NB. The actual order is returned in *> the argument KB, and is either NB or NB-1, or N if N <= NB. *> *> DLASYF is an auxiliary routine called by DSYTRF. It uses blocked code *> (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or *> A22 (if UPLO = 'L'). *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> symmetric matrix A is stored: *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] NB *> \verbatim *> NB is INTEGER *> The maximum number of columns of the matrix A that should be *> factored. NB should be at least 2 to allow for 2-by-2 pivot *> blocks. *> \endverbatim *> *> \param[out] KB *> \verbatim *> KB is INTEGER *> The number of columns of A that were actually factored. *> KB is either NB-1 or NB, or N if N <= NB. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> n-by-n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n-by-n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> On exit, A contains details of the partial factorization. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> Details of the interchanges and the block structure of D. *> If UPLO = 'U', only the last KB elements of IPIV are set; *> if UPLO = 'L', only the first KB elements are set. *> *> If IPIV(k) > 0, then rows and columns k and IPIV(k) were *> interchanged and D(k,k) is a 1-by-1 diagonal block. *> If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and *> columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k) *> is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) = *> IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were *> interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (LDW,NB) *> \endverbatim *> *> \param[in] LDW *> \verbatim *> LDW is INTEGER *> The leading dimension of the array W. LDW >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> > 0: if INFO = k, D(k,k) is exactly zero. The factorization *> has been completed, but the block diagonal matrix D is *> exactly singular. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleSYcomputational * * ===================================================================== SUBROUTINE DLASYF( UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, KB, LDA, LDW, N, NB * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), W( LDW, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) DOUBLE PRECISION EIGHT, SEVTEN PARAMETER ( EIGHT = 8.0D+0, SEVTEN = 17.0D+0 ) * .. * .. Local Scalars .. INTEGER IMAX, J, JB, JJ, JMAX, JP, K, KK, KKW, KP, $ KSTEP, KW DOUBLE PRECISION ABSAKK, ALPHA, COLMAX, D11, D21, D22, R1, $ ROWMAX, T * .. * .. External Functions .. LOGICAL LSAME INTEGER IDAMAX EXTERNAL LSAME, IDAMAX * .. * .. External Subroutines .. EXTERNAL DCOPY, DGEMM, DGEMV, DSCAL, DSWAP * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, MIN, SQRT * .. * .. Executable Statements .. * INFO = 0 * * Initialize ALPHA for use in choosing pivot block size. * ALPHA = ( ONE+SQRT( SEVTEN ) ) / EIGHT * IF( LSAME( UPLO, 'U' ) ) THEN * * Factorize the trailing columns of A using the upper triangle * of A and working backwards, and compute the matrix W = U12*D * for use in updating A11 * * K is the main loop index, decreasing from N in steps of 1 or 2 * * KW is the column of W which corresponds to column K of A * K = N 10 CONTINUE KW = NB + K - N * * Exit from loop * IF( ( K.LE.N-NB+1 .AND. NB.LT.N ) .OR. K.LT.1 ) $ GO TO 30 * * Copy column K of A to column KW of W and update it * CALL DCOPY( K, A( 1, K ), 1, W( 1, KW ), 1 ) IF( K.LT.N ) $ CALL DGEMV( 'No transpose', K, N-K, -ONE, A( 1, K+1 ), LDA, $ W( K, KW+1 ), LDW, ONE, W( 1, KW ), 1 ) * KSTEP = 1 * * Determine rows and columns to be interchanged and whether * a 1-by-1 or 2-by-2 pivot block will be used * ABSAKK = ABS( W( K, KW ) ) * * IMAX is the row-index of the largest off-diagonal element in * column K, and COLMAX is its absolute value * IF( K.GT.1 ) THEN IMAX = IDAMAX( K-1, W( 1, KW ), 1 ) COLMAX = ABS( W( IMAX, KW ) ) ELSE COLMAX = ZERO END IF * IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN * * Column K is zero: set INFO and continue * IF( INFO.EQ.0 ) $ INFO = K KP = K ELSE IF( ABSAKK.GE.ALPHA*COLMAX ) THEN * * no interchange, use 1-by-1 pivot block * KP = K ELSE * * Copy column IMAX to column KW-1 of W and update it * CALL DCOPY( IMAX, A( 1, IMAX ), 1, W( 1, KW-1 ), 1 ) CALL DCOPY( K-IMAX, A( IMAX, IMAX+1 ), LDA, $ W( IMAX+1, KW-1 ), 1 ) IF( K.LT.N ) $ CALL DGEMV( 'No transpose', K, N-K, -ONE, A( 1, K+1 ), $ LDA, W( IMAX, KW+1 ), LDW, ONE, $ W( 1, KW-1 ), 1 ) * * JMAX is the column-index of the largest off-diagonal * element in row IMAX, and ROWMAX is its absolute value * JMAX = IMAX + IDAMAX( K-IMAX, W( IMAX+1, KW-1 ), 1 ) ROWMAX = ABS( W( JMAX, KW-1 ) ) IF( IMAX.GT.1 ) THEN JMAX = IDAMAX( IMAX-1, W( 1, KW-1 ), 1 ) ROWMAX = MAX( ROWMAX, ABS( W( JMAX, KW-1 ) ) ) END IF * IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN * * no interchange, use 1-by-1 pivot block * KP = K ELSE IF( ABS( W( IMAX, KW-1 ) ).GE.ALPHA*ROWMAX ) THEN * * interchange rows and columns K and IMAX, use 1-by-1 * pivot block * KP = IMAX * * copy column KW-1 of W to column KW * CALL DCOPY( K, W( 1, KW-1 ), 1, W( 1, KW ), 1 ) ELSE * * interchange rows and columns K-1 and IMAX, use 2-by-2 * pivot block * KP = IMAX KSTEP = 2 END IF END IF * KK = K - KSTEP + 1 KKW = NB + KK - N * * Updated column KP is already stored in column KKW of W * IF( KP.NE.KK ) THEN * * Copy non-updated column KK to column KP * A( KP, K ) = A( KK, K ) CALL DCOPY( K-1-KP, A( KP+1, KK ), 1, A( KP, KP+1 ), $ LDA ) CALL DCOPY( KP, A( 1, KK ), 1, A( 1, KP ), 1 ) * * Interchange rows KK and KP in last KK columns of A and W * CALL DSWAP( N-KK+1, A( KK, KK ), LDA, A( KP, KK ), LDA ) CALL DSWAP( N-KK+1, W( KK, KKW ), LDW, W( KP, KKW ), $ LDW ) END IF * IF( KSTEP.EQ.1 ) THEN * * 1-by-1 pivot block D(k): column KW of W now holds * * W(k) = U(k)*D(k) * * where U(k) is the k-th column of U * * Store U(k) in column k of A * CALL DCOPY( K, W( 1, KW ), 1, A( 1, K ), 1 ) R1 = ONE / A( K, K ) CALL DSCAL( K-1, R1, A( 1, K ), 1 ) ELSE * * 2-by-2 pivot block D(k): columns KW and KW-1 of W now * hold * * ( W(k-1) W(k) ) = ( U(k-1) U(k) )*D(k) * * where U(k) and U(k-1) are the k-th and (k-1)-th columns * of U * IF( K.GT.2 ) THEN * * Store U(k) and U(k-1) in columns k and k-1 of A * D21 = W( K-1, KW ) D11 = W( K, KW ) / D21 D22 = W( K-1, KW-1 ) / D21 T = ONE / ( D11*D22-ONE ) D21 = T / D21 DO 20 J = 1, K - 2 A( J, K-1 ) = D21*( D11*W( J, KW-1 )-W( J, KW ) ) A( J, K ) = D21*( D22*W( J, KW )-W( J, KW-1 ) ) 20 CONTINUE END IF * * Copy D(k) to A * A( K-1, K-1 ) = W( K-1, KW-1 ) A( K-1, K ) = W( K-1, KW ) A( K, K ) = W( K, KW ) END IF END IF * * Store details of the interchanges in IPIV * IF( KSTEP.EQ.1 ) THEN IPIV( K ) = KP ELSE IPIV( K ) = -KP IPIV( K-1 ) = -KP END IF * * Decrease K and return to the start of the main loop * K = K - KSTEP GO TO 10 * 30 CONTINUE * * Update the upper triangle of A11 (= A(1:k,1:k)) as * * A11 := A11 - U12*D*U12**T = A11 - U12*W**T * * computing blocks of NB columns at a time * DO 50 J = ( ( K-1 ) / NB )*NB + 1, 1, -NB JB = MIN( NB, K-J+1 ) * * Update the upper triangle of the diagonal block * DO 40 JJ = J, J + JB - 1 CALL DGEMV( 'No transpose', JJ-J+1, N-K, -ONE, $ A( J, K+1 ), LDA, W( JJ, KW+1 ), LDW, ONE, $ A( J, JJ ), 1 ) 40 CONTINUE * * Update the rectangular superdiagonal block * CALL DGEMM( 'No transpose', 'Transpose', J-1, JB, N-K, -ONE, $ A( 1, K+1 ), LDA, W( J, KW+1 ), LDW, ONE, $ A( 1, J ), LDA ) 50 CONTINUE * * Put U12 in standard form by partially undoing the interchanges * in columns k+1:n * J = K + 1 60 CONTINUE JJ = J JP = IPIV( J ) IF( JP.LT.0 ) THEN JP = -JP J = J + 1 END IF J = J + 1 IF( JP.NE.JJ .AND. J.LE.N ) $ CALL DSWAP( N-J+1, A( JP, J ), LDA, A( JJ, J ), LDA ) IF( J.LE.N ) $ GO TO 60 * * Set KB to the number of columns factorized * KB = N - K * ELSE * * Factorize the leading columns of A using the lower triangle * of A and working forwards, and compute the matrix W = L21*D * for use in updating A22 * * K is the main loop index, increasing from 1 in steps of 1 or 2 * K = 1 70 CONTINUE * * Exit from loop * IF( ( K.GE.NB .AND. NB.LT.N ) .OR. K.GT.N ) $ GO TO 90 * * Copy column K of A to column K of W and update it * CALL DCOPY( N-K+1, A( K, K ), 1, W( K, K ), 1 ) CALL DGEMV( 'No transpose', N-K+1, K-1, -ONE, A( K, 1 ), LDA, $ W( K, 1 ), LDW, ONE, W( K, K ), 1 ) * KSTEP = 1 * * Determine rows and columns to be interchanged and whether * a 1-by-1 or 2-by-2 pivot block will be used * ABSAKK = ABS( W( K, K ) ) * * IMAX is the row-index of the largest off-diagonal element in * column K, and COLMAX is its absolute value * IF( K.LT.N ) THEN IMAX = K + IDAMAX( N-K, W( K+1, K ), 1 ) COLMAX = ABS( W( IMAX, K ) ) ELSE COLMAX = ZERO END IF * IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN * * Column K is zero: set INFO and continue * IF( INFO.EQ.0 ) $ INFO = K KP = K ELSE IF( ABSAKK.GE.ALPHA*COLMAX ) THEN * * no interchange, use 1-by-1 pivot block * KP = K ELSE * * Copy column IMAX to column K+1 of W and update it * CALL DCOPY( IMAX-K, A( IMAX, K ), LDA, W( K, K+1 ), 1 ) CALL DCOPY( N-IMAX+1, A( IMAX, IMAX ), 1, W( IMAX, K+1 ), $ 1 ) CALL DGEMV( 'No transpose', N-K+1, K-1, -ONE, A( K, 1 ), $ LDA, W( IMAX, 1 ), LDW, ONE, W( K, K+1 ), 1 ) * * JMAX is the column-index of the largest off-diagonal * element in row IMAX, and ROWMAX is its absolute value * JMAX = K - 1 + IDAMAX( IMAX-K, W( K, K+1 ), 1 ) ROWMAX = ABS( W( JMAX, K+1 ) ) IF( IMAX.LT.N ) THEN JMAX = IMAX + IDAMAX( N-IMAX, W( IMAX+1, K+1 ), 1 ) ROWMAX = MAX( ROWMAX, ABS( W( JMAX, K+1 ) ) ) END IF * IF( ABSAKK.GE.ALPHA*COLMAX*( COLMAX / ROWMAX ) ) THEN * * no interchange, use 1-by-1 pivot block * KP = K ELSE IF( ABS( W( IMAX, K+1 ) ).GE.ALPHA*ROWMAX ) THEN * * interchange rows and columns K and IMAX, use 1-by-1 * pivot block * KP = IMAX * * copy column K+1 of W to column K * CALL DCOPY( N-K+1, W( K, K+1 ), 1, W( K, K ), 1 ) ELSE * * interchange rows and columns K+1 and IMAX, use 2-by-2 * pivot block * KP = IMAX KSTEP = 2 END IF END IF * KK = K + KSTEP - 1 * * Updated column KP is already stored in column KK of W * IF( KP.NE.KK ) THEN * * Copy non-updated column KK to column KP * A( KP, K ) = A( KK, K ) CALL DCOPY( KP-K-1, A( K+1, KK ), 1, A( KP, K+1 ), LDA ) CALL DCOPY( N-KP+1, A( KP, KK ), 1, A( KP, KP ), 1 ) * * Interchange rows KK and KP in first KK columns of A and W * CALL DSWAP( KK, A( KK, 1 ), LDA, A( KP, 1 ), LDA ) CALL DSWAP( KK, W( KK, 1 ), LDW, W( KP, 1 ), LDW ) END IF * IF( KSTEP.EQ.1 ) THEN * * 1-by-1 pivot block D(k): column k of W now holds * * W(k) = L(k)*D(k) * * where L(k) is the k-th column of L * * Store L(k) in column k of A * CALL DCOPY( N-K+1, W( K, K ), 1, A( K, K ), 1 ) IF( K.LT.N ) THEN R1 = ONE / A( K, K ) CALL DSCAL( N-K, R1, A( K+1, K ), 1 ) END IF ELSE * * 2-by-2 pivot block D(k): columns k and k+1 of W now hold * * ( W(k) W(k+1) ) = ( L(k) L(k+1) )*D(k) * * where L(k) and L(k+1) are the k-th and (k+1)-th columns * of L * IF( K.LT.N-1 ) THEN * * Store L(k) and L(k+1) in columns k and k+1 of A * D21 = W( K+1, K ) D11 = W( K+1, K+1 ) / D21 D22 = W( K, K ) / D21 T = ONE / ( D11*D22-ONE ) D21 = T / D21 DO 80 J = K + 2, N A( J, K ) = D21*( D11*W( J, K )-W( J, K+1 ) ) A( J, K+1 ) = D21*( D22*W( J, K+1 )-W( J, K ) ) 80 CONTINUE END IF * * Copy D(k) to A * A( K, K ) = W( K, K ) A( K+1, K ) = W( K+1, K ) A( K+1, K+1 ) = W( K+1, K+1 ) END IF END IF * * Store details of the interchanges in IPIV * IF( KSTEP.EQ.1 ) THEN IPIV( K ) = KP ELSE IPIV( K ) = -KP IPIV( K+1 ) = -KP END IF * * Increase K and return to the start of the main loop * K = K + KSTEP GO TO 70 * 90 CONTINUE * * Update the lower triangle of A22 (= A(k:n,k:n)) as * * A22 := A22 - L21*D*L21**T = A22 - L21*W**T * * computing blocks of NB columns at a time * DO 110 J = K, N, NB JB = MIN( NB, N-J+1 ) * * Update the lower triangle of the diagonal block * DO 100 JJ = J, J + JB - 1 CALL DGEMV( 'No transpose', J+JB-JJ, K-1, -ONE, $ A( JJ, 1 ), LDA, W( JJ, 1 ), LDW, ONE, $ A( JJ, JJ ), 1 ) 100 CONTINUE * * Update the rectangular subdiagonal block * IF( J+JB.LE.N ) $ CALL DGEMM( 'No transpose', 'Transpose', N-J-JB+1, JB, $ K-1, -ONE, A( J+JB, 1 ), LDA, W( J, 1 ), LDW, $ ONE, A( J+JB, J ), LDA ) 110 CONTINUE * * Put L21 in standard form by partially undoing the interchanges * in columns 1:k-1 * J = K - 1 120 CONTINUE JJ = J JP = IPIV( J ) IF( JP.LT.0 ) THEN JP = -JP J = J - 1 END IF J = J - 1 IF( JP.NE.JJ .AND. J.GE.1 ) $ CALL DSWAP( J, A( JP, 1 ), LDA, A( JJ, 1 ), LDA ) IF( J.GE.1 ) $ GO TO 120 * * Set KB to the number of columns factorized * KB = K - 1 * END IF RETURN * * End of DLASYF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsygvx.f0000644002504400250440000000005012337331322016623 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsygvx.f0000644002504400250440000003510512337331322017373 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYGST * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYGVX + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYGVX( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, * VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, * LWORK, IWORK, IFAIL, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, RANGE, UPLO * INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N * DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. * INTEGER IFAIL( * ), IWORK( * ) * DOUBLE PRECISION A( LDA, * ), B( LDB, * ), W( * ), WORK( * ), * $ Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYGVX computes selected eigenvalues, and optionally, eigenvectors *> of a real generalized symmetric-definite eigenproblem, of the form *> A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A *> and B are assumed to be symmetric and B is also positive definite. *> Eigenvalues and eigenvectors can be selected by specifying either a *> range of values or a range of indices for the desired eigenvalues. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> Specifies the problem type to be solved: *> = 1: A*x = (lambda)*B*x *> = 2: A*B*x = (lambda)*x *> = 3: B*A*x = (lambda)*x *> \endverbatim *> *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] RANGE *> \verbatim *> RANGE is CHARACTER*1 *> = 'A': all eigenvalues will be found. *> = 'V': all eigenvalues in the half-open interval (VL,VU] *> will be found. *> = 'I': the IL-th through IU-th eigenvalues will be found. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A and B are stored; *> = 'L': Lower triangle of A and B are stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix pencil (A,B). N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA, N) *> On entry, the symmetric matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of A contains the *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. *> *> On exit, the lower triangle (if UPLO='L') or the upper *> triangle (if UPLO='U') of A, including the diagonal, is *> destroyed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB, N) *> On entry, the symmetric matrix B. If UPLO = 'U', the *> leading N-by-N upper triangular part of B contains the *> upper triangular part of the matrix B. If UPLO = 'L', *> the leading N-by-N lower triangular part of B contains *> the lower triangular part of the matrix B. *> *> On exit, if INFO <= N, the part of B containing the matrix is *> overwritten by the triangular factor U or L from the Cholesky *> factorization B = U**T*U or B = L*L**T. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION *> \endverbatim *> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER *> \endverbatim *> *> \param[in] IU *> \verbatim *> IU is INTEGER *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim *> *> \param[in] ABSTOL *> \verbatim *> ABSTOL is DOUBLE PRECISION *> The absolute error tolerance for the eigenvalues. *> An approximate eigenvalue is accepted as converged *> when it is determined to lie in an interval [a,b] *> of width less than or equal to *> *> ABSTOL + EPS * max( |a|,|b| ) , *> *> where EPS is the machine precision. If ABSTOL is less than *> or equal to zero, then EPS*|T| will be used in its place, *> where |T| is the 1-norm of the tridiagonal matrix obtained *> by reducing C to tridiagonal form, where C is the symmetric *> matrix of the standard symmetric problem to which the *> generalized problem is transformed. *> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*DLAMCH('S'), not zero. *> If this routine returns with INFO>0, indicating that some *> eigenvectors did not converge, try setting ABSTOL to *> 2*DLAMCH('S'). *> \endverbatim *> *> \param[out] M *> \verbatim *> M is INTEGER *> The total number of eigenvalues found. 0 <= M <= N. *> If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> On normal exit, the first M elements contain the selected *> eigenvalues in ascending order. *> \endverbatim *> *> \param[out] Z *> \verbatim *> Z is DOUBLE PRECISION array, dimension (LDZ, max(1,M)) *> If JOBZ = 'N', then Z is not referenced. *> If JOBZ = 'V', then if INFO = 0, the first M columns of Z *> contain the orthonormal eigenvectors of the matrix A *> corresponding to the selected eigenvalues, with the i-th *> column of Z holding the eigenvector associated with W(i). *> The eigenvectors are normalized as follows: *> if ITYPE = 1 or 2, Z**T*B*Z = I; *> if ITYPE = 3, Z**T*inv(B)*Z = I. *> *> If an eigenvector fails to converge, then that column of Z *> contains the latest approximation to the eigenvector, and the *> index of the eigenvector is returned in IFAIL. *> Note: the user must ensure that at least max(1,M) columns are *> supplied in the array Z; if RANGE = 'V', the exact value of M *> is not known in advance and an upper bound must be used. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= 1, and if *> JOBZ = 'V', LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,8*N). *> For optimal efficiency, LWORK >= (NB+3)*N, *> where NB is the blocksize for DSYTRD returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (5*N) *> \endverbatim *> *> \param[out] IFAIL *> \verbatim *> IFAIL is INTEGER array, dimension (N) *> If JOBZ = 'V', then if INFO = 0, the first M elements of *> IFAIL are zero. If INFO > 0, then IFAIL contains the *> indices of the eigenvectors that failed to converge. *> If JOBZ = 'N', then IFAIL is not referenced. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: DPOTRF or DSYEVX returned an error code: *> <= N: if INFO = i, DSYEVX failed to converge; *> i eigenvectors failed to converge. Their indices *> are stored in array IFAIL. *> > N: if INFO = N + i, for 1 <= i <= N, then the leading *> minor of order i of B is not positive definite. *> The factorization of B could not be completed and *> no eigenvalues or eigenvectors were computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYeigen * *> \par Contributors: * ================== *> *> Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA * * ===================================================================== SUBROUTINE DSYGVX( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, $ VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, $ LWORK, IWORK, IFAIL, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, RANGE, UPLO INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. INTEGER IFAIL( * ), IWORK( * ) DOUBLE PRECISION A( LDA, * ), B( LDB, * ), W( * ), WORK( * ), $ Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL ALLEIG, INDEIG, LQUERY, UPPER, VALEIG, WANTZ CHARACTER TRANS INTEGER LWKMIN, LWKOPT, NB * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DPOTRF, DSYEVX, DSYGST, DTRMM, DTRSM, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * UPPER = LSAME( UPLO, 'U' ) WANTZ = LSAME( JOBZ, 'V' ) ALLEIG = LSAME( RANGE, 'A' ) VALEIG = LSAME( RANGE, 'V' ) INDEIG = LSAME( RANGE, 'I' ) LQUERY = ( LWORK.EQ.-1 ) * INFO = 0 IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -2 ELSE IF( .NOT.( ALLEIG .OR. VALEIG .OR. INDEIG ) ) THEN INFO = -3 ELSE IF( .NOT.( UPPER .OR. LSAME( UPLO, 'L' ) ) ) THEN INFO = -4 ELSE IF( N.LT.0 ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -7 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -9 ELSE IF( VALEIG ) THEN IF( N.GT.0 .AND. VU.LE.VL ) $ INFO = -11 ELSE IF( INDEIG ) THEN IF( IL.LT.1 .OR. IL.GT.MAX( 1, N ) ) THEN INFO = -12 ELSE IF( IU.LT.MIN( N, IL ) .OR. IU.GT.N ) THEN INFO = -13 END IF END IF END IF IF (INFO.EQ.0) THEN IF (LDZ.LT.1 .OR. (WANTZ .AND. LDZ.LT.N)) THEN INFO = -18 END IF END IF * IF( INFO.EQ.0 ) THEN LWKMIN = MAX( 1, 8*N ) NB = ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) LWKOPT = MAX( LWKMIN, ( NB + 3 )*N ) WORK( 1 ) = LWKOPT * IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN INFO = -20 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYGVX', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * M = 0 IF( N.EQ.0 ) THEN RETURN END IF * * Form a Cholesky factorization of B. * CALL DPOTRF( UPLO, N, B, LDB, INFO ) IF( INFO.NE.0 ) THEN INFO = N + INFO RETURN END IF * * Transform problem to standard eigenvalue problem and solve. * CALL DSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) CALL DSYEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, $ M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO ) * IF( WANTZ ) THEN * * Backtransform eigenvectors to the original problem. * IF( INFO.GT.0 ) $ M = INFO - 1 IF( ITYPE.EQ.1 .OR. ITYPE.EQ.2 ) THEN * * For A*x=(lambda)*B*x and A*B*x=(lambda)*x; * backtransform eigenvectors: x = inv(L)**T*y or inv(U)*y * IF( UPPER ) THEN TRANS = 'N' ELSE TRANS = 'T' END IF * CALL DTRSM( 'Left', UPLO, TRANS, 'Non-unit', N, M, ONE, B, $ LDB, Z, LDZ ) * ELSE IF( ITYPE.EQ.3 ) THEN * * For B*A*x=(lambda)*x; * backtransform eigenvectors: x = L*y or U**T*y * IF( UPPER ) THEN TRANS = 'T' ELSE TRANS = 'N' END IF * CALL DTRMM( 'Left', UPLO, TRANS, 'Non-unit', N, M, ONE, B, $ LDB, Z, LDZ ) END IF END IF * * Set WORK(1) to optimal workspace size. * WORK( 1 ) = LWKOPT * RETURN * * End of DSYGVX * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zstein.f0000644002504400250440000000005012337331322016613 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zstein.f0000644002504400250440000003337712337331322017374 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZSTEIN * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZSTEIN + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, * IWORK, IFAIL, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDZ, M, N * .. * .. Array Arguments .. * INTEGER IBLOCK( * ), IFAIL( * ), ISPLIT( * ), * $ IWORK( * ) * DOUBLE PRECISION D( * ), E( * ), W( * ), WORK( * ) * COMPLEX*16 Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZSTEIN computes the eigenvectors of a real symmetric tridiagonal *> matrix T corresponding to specified eigenvalues, using inverse *> iteration. *> *> The maximum number of iterations allowed for each eigenvector is *> specified by an internal parameter MAXITS (currently set to 5). *> *> Although the eigenvectors are real, they are stored in a complex *> array, which may be passed to ZUNMTR or ZUPMTR for back *> transformation to the eigenvectors of a complex Hermitian matrix *> which was reduced to tridiagonal form. *> *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix. N >= 0. *> \endverbatim *> *> \param[in] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The n diagonal elements of the tridiagonal matrix T. *> \endverbatim *> *> \param[in] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The (n-1) subdiagonal elements of the tridiagonal matrix *> T, stored in elements 1 to N-1. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of eigenvectors to be found. 0 <= M <= N. *> \endverbatim *> *> \param[in] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> The first M elements of W contain the eigenvalues for *> which eigenvectors are to be computed. The eigenvalues *> should be grouped by split-off block and ordered from *> smallest to largest within the block. ( The output array *> W from DSTEBZ with ORDER = 'B' is expected here. ) *> \endverbatim *> *> \param[in] IBLOCK *> \verbatim *> IBLOCK is INTEGER array, dimension (N) *> The submatrix indices associated with the corresponding *> eigenvalues in W; IBLOCK(i)=1 if eigenvalue W(i) belongs to *> the first submatrix from the top, =2 if W(i) belongs to *> the second submatrix, etc. ( The output array IBLOCK *> from DSTEBZ is expected here. ) *> \endverbatim *> *> \param[in] ISPLIT *> \verbatim *> ISPLIT is INTEGER array, dimension (N) *> The splitting points, at which T breaks up into submatrices. *> The first submatrix consists of rows/columns 1 to *> ISPLIT( 1 ), the second of rows/columns ISPLIT( 1 )+1 *> through ISPLIT( 2 ), etc. *> ( The output array ISPLIT from DSTEBZ is expected here. ) *> \endverbatim *> *> \param[out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ, M) *> The computed eigenvectors. The eigenvector associated *> with the eigenvalue W(i) is stored in the i-th column of *> Z. Any vector which fails to converge is set to its current *> iterate after MAXITS iterations. *> The imaginary parts of the eigenvectors are set to zero. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (5*N) *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (N) *> \endverbatim *> *> \param[out] IFAIL *> \verbatim *> IFAIL is INTEGER array, dimension (M) *> On normal exit, all elements of IFAIL are zero. *> If one or more eigenvectors fail to converge after *> MAXITS iterations, then their indices are stored in *> array IFAIL. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, then i eigenvectors failed to converge *> in MAXITS iterations. Their indices are stored in *> array IFAIL. *> \endverbatim * *> \par Internal Parameters: * ========================= *> *> \verbatim *> MAXITS INTEGER, default = 5 *> The maximum number of iterations performed. *> *> EXTRA INTEGER, default = 2 *> The number of iterations performed after norm growth *> criterion is satisfied, should be at least 1. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, $ IWORK, IFAIL, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, LDZ, M, N * .. * .. Array Arguments .. INTEGER IBLOCK( * ), IFAIL( * ), ISPLIT( * ), $ IWORK( * ) DOUBLE PRECISION D( * ), E( * ), W( * ), WORK( * ) COMPLEX*16 Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 CZERO, CONE PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ), $ CONE = ( 1.0D+0, 0.0D+0 ) ) DOUBLE PRECISION ZERO, ONE, TEN, ODM3, ODM1 PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, TEN = 1.0D+1, $ ODM3 = 1.0D-3, ODM1 = 1.0D-1 ) INTEGER MAXITS, EXTRA PARAMETER ( MAXITS = 5, EXTRA = 2 ) * .. * .. Local Scalars .. INTEGER B1, BLKSIZ, BN, GPIND, I, IINFO, INDRV1, $ INDRV2, INDRV3, INDRV4, INDRV5, ITS, J, J1, $ JBLK, JMAX, JR, NBLK, NRMCHK DOUBLE PRECISION DTPCRT, EPS, EPS1, NRM, ONENRM, ORTOL, PERTOL, $ SCL, SEP, TOL, XJ, XJM, ZTR * .. * .. Local Arrays .. INTEGER ISEED( 4 ) * .. * .. External Functions .. INTEGER IDAMAX DOUBLE PRECISION DASUM, DLAMCH, DNRM2 EXTERNAL IDAMAX, DASUM, DLAMCH, DNRM2 * .. * .. External Subroutines .. EXTERNAL DCOPY, DLAGTF, DLAGTS, DLARNV, DSCAL, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, MAX, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 DO 10 I = 1, M IFAIL( I ) = 0 10 CONTINUE * IF( N.LT.0 ) THEN INFO = -1 ELSE IF( M.LT.0 .OR. M.GT.N ) THEN INFO = -4 ELSE IF( LDZ.LT.MAX( 1, N ) ) THEN INFO = -9 ELSE DO 20 J = 2, M IF( IBLOCK( J ).LT.IBLOCK( J-1 ) ) THEN INFO = -6 GO TO 30 END IF IF( IBLOCK( J ).EQ.IBLOCK( J-1 ) .AND. W( J ).LT.W( J-1 ) ) $ THEN INFO = -5 GO TO 30 END IF 20 CONTINUE 30 CONTINUE END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZSTEIN', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 .OR. M.EQ.0 ) THEN RETURN ELSE IF( N.EQ.1 ) THEN Z( 1, 1 ) = CONE RETURN END IF * * Get machine constants. * EPS = DLAMCH( 'Precision' ) * * Initialize seed for random number generator DLARNV. * DO 40 I = 1, 4 ISEED( I ) = 1 40 CONTINUE * * Initialize pointers. * INDRV1 = 0 INDRV2 = INDRV1 + N INDRV3 = INDRV2 + N INDRV4 = INDRV3 + N INDRV5 = INDRV4 + N * * Compute eigenvectors of matrix blocks. * J1 = 1 DO 180 NBLK = 1, IBLOCK( M ) * * Find starting and ending indices of block nblk. * IF( NBLK.EQ.1 ) THEN B1 = 1 ELSE B1 = ISPLIT( NBLK-1 ) + 1 END IF BN = ISPLIT( NBLK ) BLKSIZ = BN - B1 + 1 IF( BLKSIZ.EQ.1 ) $ GO TO 60 GPIND = B1 * * Compute reorthogonalization criterion and stopping criterion. * ONENRM = ABS( D( B1 ) ) + ABS( E( B1 ) ) ONENRM = MAX( ONENRM, ABS( D( BN ) )+ABS( E( BN-1 ) ) ) DO 50 I = B1 + 1, BN - 1 ONENRM = MAX( ONENRM, ABS( D( I ) )+ABS( E( I-1 ) )+ $ ABS( E( I ) ) ) 50 CONTINUE ORTOL = ODM3*ONENRM * DTPCRT = SQRT( ODM1 / BLKSIZ ) * * Loop through eigenvalues of block nblk. * 60 CONTINUE JBLK = 0 DO 170 J = J1, M IF( IBLOCK( J ).NE.NBLK ) THEN J1 = J GO TO 180 END IF JBLK = JBLK + 1 XJ = W( J ) * * Skip all the work if the block size is one. * IF( BLKSIZ.EQ.1 ) THEN WORK( INDRV1+1 ) = ONE GO TO 140 END IF * * If eigenvalues j and j-1 are too close, add a relatively * small perturbation. * IF( JBLK.GT.1 ) THEN EPS1 = ABS( EPS*XJ ) PERTOL = TEN*EPS1 SEP = XJ - XJM IF( SEP.LT.PERTOL ) $ XJ = XJM + PERTOL END IF * ITS = 0 NRMCHK = 0 * * Get random starting vector. * CALL DLARNV( 2, ISEED, BLKSIZ, WORK( INDRV1+1 ) ) * * Copy the matrix T so it won't be destroyed in factorization. * CALL DCOPY( BLKSIZ, D( B1 ), 1, WORK( INDRV4+1 ), 1 ) CALL DCOPY( BLKSIZ-1, E( B1 ), 1, WORK( INDRV2+2 ), 1 ) CALL DCOPY( BLKSIZ-1, E( B1 ), 1, WORK( INDRV3+1 ), 1 ) * * Compute LU factors with partial pivoting ( PT = LU ) * TOL = ZERO CALL DLAGTF( BLKSIZ, WORK( INDRV4+1 ), XJ, WORK( INDRV2+2 ), $ WORK( INDRV3+1 ), TOL, WORK( INDRV5+1 ), IWORK, $ IINFO ) * * Update iteration count. * 70 CONTINUE ITS = ITS + 1 IF( ITS.GT.MAXITS ) $ GO TO 120 * * Normalize and scale the righthand side vector Pb. * SCL = BLKSIZ*ONENRM*MAX( EPS, $ ABS( WORK( INDRV4+BLKSIZ ) ) ) / $ DASUM( BLKSIZ, WORK( INDRV1+1 ), 1 ) CALL DSCAL( BLKSIZ, SCL, WORK( INDRV1+1 ), 1 ) * * Solve the system LU = Pb. * CALL DLAGTS( -1, BLKSIZ, WORK( INDRV4+1 ), WORK( INDRV2+2 ), $ WORK( INDRV3+1 ), WORK( INDRV5+1 ), IWORK, $ WORK( INDRV1+1 ), TOL, IINFO ) * * Reorthogonalize by modified Gram-Schmidt if eigenvalues are * close enough. * IF( JBLK.EQ.1 ) $ GO TO 110 IF( ABS( XJ-XJM ).GT.ORTOL ) $ GPIND = J IF( GPIND.NE.J ) THEN DO 100 I = GPIND, J - 1 ZTR = ZERO DO 80 JR = 1, BLKSIZ ZTR = ZTR + WORK( INDRV1+JR )* $ DBLE( Z( B1-1+JR, I ) ) 80 CONTINUE DO 90 JR = 1, BLKSIZ WORK( INDRV1+JR ) = WORK( INDRV1+JR ) - $ ZTR*DBLE( Z( B1-1+JR, I ) ) 90 CONTINUE 100 CONTINUE END IF * * Check the infinity norm of the iterate. * 110 CONTINUE JMAX = IDAMAX( BLKSIZ, WORK( INDRV1+1 ), 1 ) NRM = ABS( WORK( INDRV1+JMAX ) ) * * Continue for additional iterations after norm reaches * stopping criterion. * IF( NRM.LT.DTPCRT ) $ GO TO 70 NRMCHK = NRMCHK + 1 IF( NRMCHK.LT.EXTRA+1 ) $ GO TO 70 * GO TO 130 * * If stopping criterion was not satisfied, update info and * store eigenvector number in array ifail. * 120 CONTINUE INFO = INFO + 1 IFAIL( INFO ) = J * * Accept iterate as jth eigenvector. * 130 CONTINUE SCL = ONE / DNRM2( BLKSIZ, WORK( INDRV1+1 ), 1 ) JMAX = IDAMAX( BLKSIZ, WORK( INDRV1+1 ), 1 ) IF( WORK( INDRV1+JMAX ).LT.ZERO ) $ SCL = -SCL CALL DSCAL( BLKSIZ, SCL, WORK( INDRV1+1 ), 1 ) 140 CONTINUE DO 150 I = 1, N Z( I, J ) = CZERO 150 CONTINUE DO 160 I = 1, BLKSIZ Z( B1+I-1, J ) = DCMPLX( WORK( INDRV1+I ), ZERO ) 160 CONTINUE * * Save the shift to check eigenvalue spacing at next * iteration. * XJM = XJ * 170 CONTINUE 180 CONTINUE * RETURN * * End of ZSTEIN * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgebak.f0000644002504400250440000000005012337331322016542 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgebak.f0000644002504400250440000001617712337331322017322 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGEBAK * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGEBAK + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, * INFO ) * * .. Scalar Arguments .. * CHARACTER JOB, SIDE * INTEGER IHI, ILO, INFO, LDV, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION SCALE( * ) * COMPLEX*16 V( LDV, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGEBAK forms the right or left eigenvectors of a complex general *> matrix by backward transformation on the computed eigenvectors of the *> balanced matrix output by ZGEBAL. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOB *> \verbatim *> JOB is CHARACTER*1 *> Specifies the type of backward transformation required: *> = 'N', do nothing, return immediately; *> = 'P', do backward transformation for permutation only; *> = 'S', do backward transformation for scaling only; *> = 'B', do backward transformations for both permutation and *> scaling. *> JOB must be the same as the argument JOB supplied to ZGEBAL. *> \endverbatim *> *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'R': V contains right eigenvectors; *> = 'L': V contains left eigenvectors. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of rows of the matrix V. N >= 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> The integers ILO and IHI determined by ZGEBAL. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim *> *> \param[in] SCALE *> \verbatim *> SCALE is DOUBLE PRECISION array, dimension (N) *> Details of the permutation and scaling factors, as returned *> by ZGEBAL. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of columns of the matrix V. M >= 0. *> \endverbatim *> *> \param[in,out] V *> \verbatim *> V is COMPLEX*16 array, dimension (LDV,M) *> On entry, the matrix of right or left eigenvectors to be *> transformed, as returned by ZHSEIN or ZTREVC. *> On exit, V is overwritten by the transformed eigenvectors. *> \endverbatim *> *> \param[in] LDV *> \verbatim *> LDV is INTEGER *> The leading dimension of the array V. LDV >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16GEcomputational * * ===================================================================== SUBROUTINE ZGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, $ INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOB, SIDE INTEGER IHI, ILO, INFO, LDV, M, N * .. * .. Array Arguments .. DOUBLE PRECISION SCALE( * ) COMPLEX*16 V( LDV, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL LEFTV, RIGHTV INTEGER I, II, K DOUBLE PRECISION S * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZDSCAL, ZSWAP * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Decode and Test the input parameters * RIGHTV = LSAME( SIDE, 'R' ) LEFTV = LSAME( SIDE, 'L' ) * INFO = 0 IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND. $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN INFO = -1 ELSE IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN INFO = -5 ELSE IF( M.LT.0 ) THEN INFO = -7 ELSE IF( LDV.LT.MAX( 1, N ) ) THEN INFO = -9 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGEBAK', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN IF( M.EQ.0 ) $ RETURN IF( LSAME( JOB, 'N' ) ) $ RETURN * IF( ILO.EQ.IHI ) $ GO TO 30 * * Backward balance * IF( LSAME( JOB, 'S' ) .OR. LSAME( JOB, 'B' ) ) THEN * IF( RIGHTV ) THEN DO 10 I = ILO, IHI S = SCALE( I ) CALL ZDSCAL( M, S, V( I, 1 ), LDV ) 10 CONTINUE END IF * IF( LEFTV ) THEN DO 20 I = ILO, IHI S = ONE / SCALE( I ) CALL ZDSCAL( M, S, V( I, 1 ), LDV ) 20 CONTINUE END IF * END IF * * Backward permutation * * For I = ILO-1 step -1 until 1, * IHI+1 step 1 until N do -- * 30 CONTINUE IF( LSAME( JOB, 'P' ) .OR. LSAME( JOB, 'B' ) ) THEN IF( RIGHTV ) THEN DO 40 II = 1, N I = II IF( I.GE.ILO .AND. I.LE.IHI ) $ GO TO 40 IF( I.LT.ILO ) $ I = ILO - II K = SCALE( I ) IF( K.EQ.I ) $ GO TO 40 CALL ZSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV ) 40 CONTINUE END IF * IF( LEFTV ) THEN DO 50 II = 1, N I = II IF( I.GE.ILO .AND. I.LE.IHI ) $ GO TO 50 IF( I.LT.ILO ) $ I = ILO - II K = SCALE( I ) IF( K.EQ.I ) $ GO TO 50 CALL ZSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV ) 50 CONTINUE END IF END IF * RETURN * * End of ZGEBAK * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlaqr2.f0000644002504400250440000000005012337331322016512 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlaqr2.f0000644002504400250440000004232512337331322017264 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLAQR2 performs the unitary similarity transformation of a Hessenberg matrix to detect and deflate fully converged eigenvalues from a trailing principal submatrix (aggressive early deflation). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLAQR2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, * IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, * NV, WV, LDWV, WORK, LWORK ) * * .. Scalar Arguments .. * INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV, * $ LDZ, LWORK, N, ND, NH, NS, NV, NW * LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. * COMPLEX*16 H( LDH, * ), SH( * ), T( LDT, * ), V( LDV, * ), * $ WORK( * ), WV( LDWV, * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLAQR2 is identical to ZLAQR3 except that it avoids *> recursion by calling ZLAHQR instead of ZLAQR4. *> *> Aggressive early deflation: *> *> ZLAQR2 accepts as input an upper Hessenberg matrix *> H and performs an unitary similarity transformation *> designed to detect and deflate fully converged eigenvalues from *> a trailing principal submatrix. On output H has been over- *> written by a new Hessenberg matrix that is a perturbation of *> an unitary similarity transformation of H. It is to be *> hoped that the final version of H has many zero subdiagonal *> entries. *> *> \endverbatim * * Arguments: * ========== * *> \param[in] WANTT *> \verbatim *> WANTT is LOGICAL *> If .TRUE., then the Hessenberg matrix H is fully updated *> so that the triangular Schur factor may be *> computed (in cooperation with the calling subroutine). *> If .FALSE., then only enough of H is updated to preserve *> the eigenvalues. *> \endverbatim *> *> \param[in] WANTZ *> \verbatim *> WANTZ is LOGICAL *> If .TRUE., then the unitary matrix Z is updated so *> so that the unitary Schur factor may be computed *> (in cooperation with the calling subroutine). *> If .FALSE., then Z is not referenced. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix H and (if WANTZ is .TRUE.) the *> order of the unitary matrix Z. *> \endverbatim *> *> \param[in] KTOP *> \verbatim *> KTOP is INTEGER *> It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0. *> KBOT and KTOP together determine an isolated block *> along the diagonal of the Hessenberg matrix. *> \endverbatim *> *> \param[in] KBOT *> \verbatim *> KBOT is INTEGER *> It is assumed without a check that either *> KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together *> determine an isolated block along the diagonal of the *> Hessenberg matrix. *> \endverbatim *> *> \param[in] NW *> \verbatim *> NW is INTEGER *> Deflation window size. 1 .LE. NW .LE. (KBOT-KTOP+1). *> \endverbatim *> *> \param[in,out] H *> \verbatim *> H is COMPLEX*16 array, dimension (LDH,N) *> On input the initial N-by-N section of H stores the *> Hessenberg matrix undergoing aggressive early deflation. *> On output H has been transformed by a unitary *> similarity transformation, perturbed, and the returned *> to Hessenberg form that (it is to be hoped) has some *> zero subdiagonal entries. *> \endverbatim *> *> \param[in] LDH *> \verbatim *> LDH is integer *> Leading dimension of H just as declared in the calling *> subroutine. N .LE. LDH *> \endverbatim *> *> \param[in] ILOZ *> \verbatim *> ILOZ is INTEGER *> \endverbatim *> *> \param[in] IHIZ *> \verbatim *> IHIZ is INTEGER *> Specify the rows of Z to which transformations must be *> applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N. *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ,N) *> IF WANTZ is .TRUE., then on output, the unitary *> similarity transformation mentioned above has been *> accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right. *> If WANTZ is .FALSE., then Z is unreferenced. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is integer *> The leading dimension of Z just as declared in the *> calling subroutine. 1 .LE. LDZ. *> \endverbatim *> *> \param[out] NS *> \verbatim *> NS is integer *> The number of unconverged (ie approximate) eigenvalues *> returned in SR and SI that may be used as shifts by the *> calling subroutine. *> \endverbatim *> *> \param[out] ND *> \verbatim *> ND is integer *> The number of converged eigenvalues uncovered by this *> subroutine. *> \endverbatim *> *> \param[out] SH *> \verbatim *> SH is COMPLEX*16 array, dimension KBOT *> On output, approximate eigenvalues that may *> be used for shifts are stored in SH(KBOT-ND-NS+1) *> through SR(KBOT-ND). Converged eigenvalues are *> stored in SH(KBOT-ND+1) through SH(KBOT). *> \endverbatim *> *> \param[out] V *> \verbatim *> V is COMPLEX*16 array, dimension (LDV,NW) *> An NW-by-NW work array. *> \endverbatim *> *> \param[in] LDV *> \verbatim *> LDV is integer scalar *> The leading dimension of V just as declared in the *> calling subroutine. NW .LE. LDV *> \endverbatim *> *> \param[in] NH *> \verbatim *> NH is integer scalar *> The number of columns of T. NH.GE.NW. *> \endverbatim *> *> \param[out] T *> \verbatim *> T is COMPLEX*16 array, dimension (LDT,NW) *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is integer *> The leading dimension of T just as declared in the *> calling subroutine. NW .LE. LDT *> \endverbatim *> *> \param[in] NV *> \verbatim *> NV is integer *> The number of rows of work array WV available for *> workspace. NV.GE.NW. *> \endverbatim *> *> \param[out] WV *> \verbatim *> WV is COMPLEX*16 array, dimension (LDWV,NW) *> \endverbatim *> *> \param[in] LDWV *> \verbatim *> LDWV is integer *> The leading dimension of W just as declared in the *> calling subroutine. NW .LE. LDV *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension LWORK. *> On exit, WORK(1) is set to an estimate of the optimal value *> of LWORK for the given values of N, NW, KTOP and KBOT. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is integer *> The dimension of the work array WORK. LWORK = 2*NW *> suffices, but greater efficiency may result from larger *> values of LWORK. *> *> If LWORK = -1, then a workspace query is assumed; ZLAQR2 *> only estimates the optimal workspace size for the given *> values of N, NW, KTOP and KBOT. The estimate is returned *> in WORK(1). No error message related to LWORK is issued *> by XERBLA. Neither H nor Z are accessed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Contributors: * ================== *> *> Karen Braman and Ralph Byers, Department of Mathematics, *> University of Kansas, USA *> * ===================================================================== SUBROUTINE ZLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, $ IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, $ NV, WV, LDWV, WORK, LWORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV, $ LDZ, LWORK, N, ND, NH, NS, NV, NW LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. COMPLEX*16 H( LDH, * ), SH( * ), T( LDT, * ), V( LDV, * ), $ WORK( * ), WV( LDWV, * ), Z( LDZ, * ) * .. * * ================================================================ * * .. Parameters .. COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ), $ ONE = ( 1.0d0, 0.0d0 ) ) DOUBLE PRECISION RZERO, RONE PARAMETER ( RZERO = 0.0d0, RONE = 1.0d0 ) * .. * .. Local Scalars .. COMPLEX*16 BETA, CDUM, S, TAU DOUBLE PRECISION FOO, SAFMAX, SAFMIN, SMLNUM, ULP INTEGER I, IFST, ILST, INFO, INFQR, J, JW, KCOL, KLN, $ KNT, KROW, KWTOP, LTOP, LWK1, LWK2, LWKOPT * .. * .. External Functions .. DOUBLE PRECISION DLAMCH EXTERNAL DLAMCH * .. * .. External Subroutines .. EXTERNAL DLABAD, ZCOPY, ZGEHRD, ZGEMM, ZLACPY, ZLAHQR, $ ZLARF, ZLARFG, ZLASET, ZTREXC, ZUNMHR * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, MAX, MIN * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. * * ==== Estimate optimal workspace. ==== * JW = MIN( NW, KBOT-KTOP+1 ) IF( JW.LE.2 ) THEN LWKOPT = 1 ELSE * * ==== Workspace query call to ZGEHRD ==== * CALL ZGEHRD( JW, 1, JW-1, T, LDT, WORK, WORK, -1, INFO ) LWK1 = INT( WORK( 1 ) ) * * ==== Workspace query call to ZUNMHR ==== * CALL ZUNMHR( 'R', 'N', JW, JW, 1, JW-1, T, LDT, WORK, V, LDV, $ WORK, -1, INFO ) LWK2 = INT( WORK( 1 ) ) * * ==== Optimal workspace ==== * LWKOPT = JW + MAX( LWK1, LWK2 ) END IF * * ==== Quick return in case of workspace query. ==== * IF( LWORK.EQ.-1 ) THEN WORK( 1 ) = DCMPLX( LWKOPT, 0 ) RETURN END IF * * ==== Nothing to do ... * ... for an empty active block ... ==== NS = 0 ND = 0 WORK( 1 ) = ONE IF( KTOP.GT.KBOT ) $ RETURN * ... nor for an empty deflation window. ==== IF( NW.LT.1 ) $ RETURN * * ==== Machine constants ==== * SAFMIN = DLAMCH( 'SAFE MINIMUM' ) SAFMAX = RONE / SAFMIN CALL DLABAD( SAFMIN, SAFMAX ) ULP = DLAMCH( 'PRECISION' ) SMLNUM = SAFMIN*( DBLE( N ) / ULP ) * * ==== Setup deflation window ==== * JW = MIN( NW, KBOT-KTOP+1 ) KWTOP = KBOT - JW + 1 IF( KWTOP.EQ.KTOP ) THEN S = ZERO ELSE S = H( KWTOP, KWTOP-1 ) END IF * IF( KBOT.EQ.KWTOP ) THEN * * ==== 1-by-1 deflation window: not much to do ==== * SH( KWTOP ) = H( KWTOP, KWTOP ) NS = 1 ND = 0 IF( CABS1( S ).LE.MAX( SMLNUM, ULP*CABS1( H( KWTOP, $ KWTOP ) ) ) ) THEN NS = 0 ND = 1 IF( KWTOP.GT.KTOP ) $ H( KWTOP, KWTOP-1 ) = ZERO END IF WORK( 1 ) = ONE RETURN END IF * * ==== Convert to spike-triangular form. (In case of a * . rare QR failure, this routine continues to do * . aggressive early deflation using that part of * . the deflation window that converged using INFQR * . here and there to keep track.) ==== * CALL ZLACPY( 'U', JW, JW, H( KWTOP, KWTOP ), LDH, T, LDT ) CALL ZCOPY( JW-1, H( KWTOP+1, KWTOP ), LDH+1, T( 2, 1 ), LDT+1 ) * CALL ZLASET( 'A', JW, JW, ZERO, ONE, V, LDV ) CALL ZLAHQR( .true., .true., JW, 1, JW, T, LDT, SH( KWTOP ), 1, $ JW, V, LDV, INFQR ) * * ==== Deflation detection loop ==== * NS = JW ILST = INFQR + 1 DO 10 KNT = INFQR + 1, JW * * ==== Small spike tip deflation test ==== * FOO = CABS1( T( NS, NS ) ) IF( FOO.EQ.RZERO ) $ FOO = CABS1( S ) IF( CABS1( S )*CABS1( V( 1, NS ) ).LE.MAX( SMLNUM, ULP*FOO ) ) $ THEN * * ==== One more converged eigenvalue ==== * NS = NS - 1 ELSE * * ==== One undeflatable eigenvalue. Move it up out of the * . way. (ZTREXC can not fail in this case.) ==== * IFST = NS CALL ZTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, INFO ) ILST = ILST + 1 END IF 10 CONTINUE * * ==== Return to Hessenberg form ==== * IF( NS.EQ.0 ) $ S = ZERO * IF( NS.LT.JW ) THEN * * ==== sorting the diagonal of T improves accuracy for * . graded matrices. ==== * DO 30 I = INFQR + 1, NS IFST = I DO 20 J = I + 1, NS IF( CABS1( T( J, J ) ).GT.CABS1( T( IFST, IFST ) ) ) $ IFST = J 20 CONTINUE ILST = I IF( IFST.NE.ILST ) $ CALL ZTREXC( 'V', JW, T, LDT, V, LDV, IFST, ILST, INFO ) 30 CONTINUE END IF * * ==== Restore shift/eigenvalue array from T ==== * DO 40 I = INFQR + 1, JW SH( KWTOP+I-1 ) = T( I, I ) 40 CONTINUE * * IF( NS.LT.JW .OR. S.EQ.ZERO ) THEN IF( NS.GT.1 .AND. S.NE.ZERO ) THEN * * ==== Reflect spike back into lower triangle ==== * CALL ZCOPY( NS, V, LDV, WORK, 1 ) DO 50 I = 1, NS WORK( I ) = DCONJG( WORK( I ) ) 50 CONTINUE BETA = WORK( 1 ) CALL ZLARFG( NS, BETA, WORK( 2 ), 1, TAU ) WORK( 1 ) = ONE * CALL ZLASET( 'L', JW-2, JW-2, ZERO, ZERO, T( 3, 1 ), LDT ) * CALL ZLARF( 'L', NS, JW, WORK, 1, DCONJG( TAU ), T, LDT, $ WORK( JW+1 ) ) CALL ZLARF( 'R', NS, NS, WORK, 1, TAU, T, LDT, $ WORK( JW+1 ) ) CALL ZLARF( 'R', JW, NS, WORK, 1, TAU, V, LDV, $ WORK( JW+1 ) ) * CALL ZGEHRD( JW, 1, NS, T, LDT, WORK, WORK( JW+1 ), $ LWORK-JW, INFO ) END IF * * ==== Copy updated reduced window into place ==== * IF( KWTOP.GT.1 ) $ H( KWTOP, KWTOP-1 ) = S*DCONJG( V( 1, 1 ) ) CALL ZLACPY( 'U', JW, JW, T, LDT, H( KWTOP, KWTOP ), LDH ) CALL ZCOPY( JW-1, T( 2, 1 ), LDT+1, H( KWTOP+1, KWTOP ), $ LDH+1 ) * * ==== Accumulate orthogonal matrix in order update * . H and Z, if requested. ==== * IF( NS.GT.1 .AND. S.NE.ZERO ) $ CALL ZUNMHR( 'R', 'N', JW, NS, 1, NS, T, LDT, WORK, V, LDV, $ WORK( JW+1 ), LWORK-JW, INFO ) * * ==== Update vertical slab in H ==== * IF( WANTT ) THEN LTOP = 1 ELSE LTOP = KTOP END IF DO 60 KROW = LTOP, KWTOP - 1, NV KLN = MIN( NV, KWTOP-KROW ) CALL ZGEMM( 'N', 'N', KLN, JW, JW, ONE, H( KROW, KWTOP ), $ LDH, V, LDV, ZERO, WV, LDWV ) CALL ZLACPY( 'A', KLN, JW, WV, LDWV, H( KROW, KWTOP ), LDH ) 60 CONTINUE * * ==== Update horizontal slab in H ==== * IF( WANTT ) THEN DO 70 KCOL = KBOT + 1, N, NH KLN = MIN( NH, N-KCOL+1 ) CALL ZGEMM( 'C', 'N', JW, KLN, JW, ONE, V, LDV, $ H( KWTOP, KCOL ), LDH, ZERO, T, LDT ) CALL ZLACPY( 'A', JW, KLN, T, LDT, H( KWTOP, KCOL ), $ LDH ) 70 CONTINUE END IF * * ==== Update vertical slab in Z ==== * IF( WANTZ ) THEN DO 80 KROW = ILOZ, IHIZ, NV KLN = MIN( NV, IHIZ-KROW+1 ) CALL ZGEMM( 'N', 'N', KLN, JW, JW, ONE, Z( KROW, KWTOP ), $ LDZ, V, LDV, ZERO, WV, LDWV ) CALL ZLACPY( 'A', KLN, JW, WV, LDWV, Z( KROW, KWTOP ), $ LDZ ) 80 CONTINUE END IF END IF * * ==== Return the number of deflations ... ==== * ND = JW - NS * * ==== ... and the number of shifts. (Subtracting * . INFQR from the spike length takes care * . of the case of a rare QR failure while * . calculating eigenvalues of the deflation * . window.) ==== * NS = NS - INFQR * * ==== Return optimal workspace. ==== * WORK( 1 ) = DCMPLX( LWKOPT, 0 ) * * ==== End of ZLAQR2 ==== * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhpgvx.f0000644002504400250440000000005012337331322016625 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhpgvx.f0000644002504400250440000003153312337331322017376 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHPGST * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHPGVX + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHPGVX( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, * IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, * IWORK, IFAIL, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, RANGE, UPLO * INTEGER IL, INFO, ITYPE, IU, LDZ, M, N * DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. * INTEGER IFAIL( * ), IWORK( * ) * DOUBLE PRECISION RWORK( * ), W( * ) * COMPLEX*16 AP( * ), BP( * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHPGVX computes selected eigenvalues and, optionally, eigenvectors *> of a complex generalized Hermitian-definite eigenproblem, of the form *> A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A and *> B are assumed to be Hermitian, stored in packed format, and B is also *> positive definite. Eigenvalues and eigenvectors can be selected by *> specifying either a range of values or a range of indices for the *> desired eigenvalues. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> Specifies the problem type to be solved: *> = 1: A*x = (lambda)*B*x *> = 2: A*B*x = (lambda)*x *> = 3: B*A*x = (lambda)*x *> \endverbatim *> *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] RANGE *> \verbatim *> RANGE is CHARACTER*1 *> = 'A': all eigenvalues will be found; *> = 'V': all eigenvalues in the half-open interval (VL,VU] *> will be found; *> = 'I': the IL-th through IU-th eigenvalues will be found. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangles of A and B are stored; *> = 'L': Lower triangles of A and B are stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrices A and B. N >= 0. *> \endverbatim *> *> \param[in,out] AP *> \verbatim *> AP is COMPLEX*16 array, dimension (N*(N+1)/2) *> On entry, the upper or lower triangle of the Hermitian matrix *> A, packed columnwise in a linear array. The j-th column of A *> is stored in the array AP as follows: *> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; *> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. *> *> On exit, the contents of AP are destroyed. *> \endverbatim *> *> \param[in,out] BP *> \verbatim *> BP is COMPLEX*16 array, dimension (N*(N+1)/2) *> On entry, the upper or lower triangle of the Hermitian matrix *> B, packed columnwise in a linear array. The j-th column of B *> is stored in the array BP as follows: *> if UPLO = 'U', BP(i + (j-1)*j/2) = B(i,j) for 1<=i<=j; *> if UPLO = 'L', BP(i + (j-1)*(2*n-j)/2) = B(i,j) for j<=i<=n. *> *> On exit, the triangular factor U or L from the Cholesky *> factorization B = U**H*U or B = L*L**H, in the same storage *> format as B. *> \endverbatim *> *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION *> \endverbatim *> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION *> *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER *> \endverbatim *> *> \param[in] IU *> \verbatim *> IU is INTEGER *> *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim *> *> \param[in] ABSTOL *> \verbatim *> ABSTOL is DOUBLE PRECISION *> The absolute error tolerance for the eigenvalues. *> An approximate eigenvalue is accepted as converged *> when it is determined to lie in an interval [a,b] *> of width less than or equal to *> *> ABSTOL + EPS * max( |a|,|b| ) , *> *> where EPS is the machine precision. If ABSTOL is less than *> or equal to zero, then EPS*|T| will be used in its place, *> where |T| is the 1-norm of the tridiagonal matrix obtained *> by reducing AP to tridiagonal form. *> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*DLAMCH('S'), not zero. *> If this routine returns with INFO>0, indicating that some *> eigenvectors did not converge, try setting ABSTOL to *> 2*DLAMCH('S'). *> \endverbatim *> *> \param[out] M *> \verbatim *> M is INTEGER *> The total number of eigenvalues found. 0 <= M <= N. *> If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> On normal exit, the first M elements contain the selected *> eigenvalues in ascending order. *> \endverbatim *> *> \param[out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ, N) *> If JOBZ = 'N', then Z is not referenced. *> If JOBZ = 'V', then if INFO = 0, the first M columns of Z *> contain the orthonormal eigenvectors of the matrix A *> corresponding to the selected eigenvalues, with the i-th *> column of Z holding the eigenvector associated with W(i). *> The eigenvectors are normalized as follows: *> if ITYPE = 1 or 2, Z**H*B*Z = I; *> if ITYPE = 3, Z**H*inv(B)*Z = I. *> *> If an eigenvector fails to converge, then that column of Z *> contains the latest approximation to the eigenvector, and the *> index of the eigenvector is returned in IFAIL. *> Note: the user must ensure that at least max(1,M) columns are *> supplied in the array Z; if RANGE = 'V', the exact value of M *> is not known in advance and an upper bound must be used. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= 1, and if *> JOBZ = 'V', LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (2*N) *> \endverbatim *> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (7*N) *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (5*N) *> \endverbatim *> *> \param[out] IFAIL *> \verbatim *> IFAIL is INTEGER array, dimension (N) *> If JOBZ = 'V', then if INFO = 0, the first M elements of *> IFAIL are zero. If INFO > 0, then IFAIL contains the *> indices of the eigenvectors that failed to converge. *> If JOBZ = 'N', then IFAIL is not referenced. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: ZPPTRF or ZHPEVX returned an error code: *> <= N: if INFO = i, ZHPEVX failed to converge; *> i eigenvectors failed to converge. Their indices *> are stored in array IFAIL. *> > N: if INFO = N + i, for 1 <= i <= n, then the leading *> minor of order i of B is not positive definite. *> The factorization of B could not be completed and *> no eigenvalues or eigenvectors were computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHEReigen * *> \par Contributors: * ================== *> *> Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA * * ===================================================================== SUBROUTINE ZHPGVX( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, $ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, $ IWORK, IFAIL, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, RANGE, UPLO INTEGER IL, INFO, ITYPE, IU, LDZ, M, N DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. INTEGER IFAIL( * ), IWORK( * ) DOUBLE PRECISION RWORK( * ), W( * ) COMPLEX*16 AP( * ), BP( * ), WORK( * ), Z( LDZ, * ) * .. * * ===================================================================== * * .. Local Scalars .. LOGICAL ALLEIG, INDEIG, UPPER, VALEIG, WANTZ CHARACTER TRANS INTEGER J * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZHPEVX, ZHPGST, ZPPTRF, ZTPMV, ZTPSV * .. * .. Intrinsic Functions .. INTRINSIC MIN * .. * .. Executable Statements .. * * Test the input parameters. * WANTZ = LSAME( JOBZ, 'V' ) UPPER = LSAME( UPLO, 'U' ) ALLEIG = LSAME( RANGE, 'A' ) VALEIG = LSAME( RANGE, 'V' ) INDEIG = LSAME( RANGE, 'I' ) * INFO = 0 IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -2 ELSE IF( .NOT.( ALLEIG .OR. VALEIG .OR. INDEIG ) ) THEN INFO = -3 ELSE IF( .NOT.( UPPER .OR. LSAME( UPLO, 'L' ) ) ) THEN INFO = -4 ELSE IF( N.LT.0 ) THEN INFO = -5 ELSE IF( VALEIG ) THEN IF( N.GT.0 .AND. VU.LE.VL ) THEN INFO = -9 END IF ELSE IF( INDEIG ) THEN IF( IL.LT.1 ) THEN INFO = -10 ELSE IF( IU.LT.MIN( N, IL ) .OR. IU.GT.N ) THEN INFO = -11 END IF END IF END IF IF( INFO.EQ.0 ) THEN IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.N ) ) THEN INFO = -16 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHPGVX', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Form a Cholesky factorization of B. * CALL ZPPTRF( UPLO, N, BP, INFO ) IF( INFO.NE.0 ) THEN INFO = N + INFO RETURN END IF * * Transform problem to standard eigenvalue problem and solve. * CALL ZHPGST( ITYPE, UPLO, N, AP, BP, INFO ) CALL ZHPEVX( JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, $ W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO ) * IF( WANTZ ) THEN * * Backtransform eigenvectors to the original problem. * IF( INFO.GT.0 ) $ M = INFO - 1 IF( ITYPE.EQ.1 .OR. ITYPE.EQ.2 ) THEN * * For A*x=(lambda)*B*x and A*B*x=(lambda)*x; * backtransform eigenvectors: x = inv(L)**H *y or inv(U)*y * IF( UPPER ) THEN TRANS = 'N' ELSE TRANS = 'C' END IF * DO 10 J = 1, M CALL ZTPSV( UPLO, TRANS, 'Non-unit', N, BP, Z( 1, J ), $ 1 ) 10 CONTINUE * ELSE IF( ITYPE.EQ.3 ) THEN * * For B*A*x=(lambda)*x; * backtransform eigenvectors: x = L*y or U**H *y * IF( UPPER ) THEN TRANS = 'C' ELSE TRANS = 'N' END IF * DO 20 J = 1, M CALL ZTPMV( UPLO, TRANS, 'Non-unit', N, BP, Z( 1, J ), $ 1 ) 20 CONTINUE END IF END IF * RETURN * * End of ZHPGVX * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlasr.f0000644002504400250440000000005012337331322016404 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlasr.f0000644002504400250440000003535712337331322017165 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLASR applies a sequence of plane rotations to a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLASR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA ) * * .. Scalar Arguments .. * CHARACTER DIRECT, PIVOT, SIDE * INTEGER LDA, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), C( * ), S( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLASR applies a sequence of plane rotations to a real matrix A, *> from either the left or the right. *> *> When SIDE = 'L', the transformation takes the form *> *> A := P*A *> *> and when SIDE = 'R', the transformation takes the form *> *> A := A*P**T *> *> where P is an orthogonal matrix consisting of a sequence of z plane *> rotations, with z = M when SIDE = 'L' and z = N when SIDE = 'R', *> and P**T is the transpose of P. *> *> When DIRECT = 'F' (Forward sequence), then *> *> P = P(z-1) * ... * P(2) * P(1) *> *> and when DIRECT = 'B' (Backward sequence), then *> *> P = P(1) * P(2) * ... * P(z-1) *> *> where P(k) is a plane rotation matrix defined by the 2-by-2 rotation *> *> R(k) = ( c(k) s(k) ) *> = ( -s(k) c(k) ). *> *> When PIVOT = 'V' (Variable pivot), the rotation is performed *> for the plane (k,k+1), i.e., P(k) has the form *> *> P(k) = ( 1 ) *> ( ... ) *> ( 1 ) *> ( c(k) s(k) ) *> ( -s(k) c(k) ) *> ( 1 ) *> ( ... ) *> ( 1 ) *> *> where R(k) appears as a rank-2 modification to the identity matrix in *> rows and columns k and k+1. *> *> When PIVOT = 'T' (Top pivot), the rotation is performed for the *> plane (1,k+1), so P(k) has the form *> *> P(k) = ( c(k) s(k) ) *> ( 1 ) *> ( ... ) *> ( 1 ) *> ( -s(k) c(k) ) *> ( 1 ) *> ( ... ) *> ( 1 ) *> *> where R(k) appears in rows and columns 1 and k+1. *> *> Similarly, when PIVOT = 'B' (Bottom pivot), the rotation is *> performed for the plane (k,z), giving P(k) the form *> *> P(k) = ( 1 ) *> ( ... ) *> ( 1 ) *> ( c(k) s(k) ) *> ( 1 ) *> ( ... ) *> ( 1 ) *> ( -s(k) c(k) ) *> *> where R(k) appears in rows and columns k and z. The rotations are *> performed without ever forming P(k) explicitly. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> Specifies whether the plane rotation matrix P is applied to *> A on the left or the right. *> = 'L': Left, compute A := P*A *> = 'R': Right, compute A:= A*P**T *> \endverbatim *> *> \param[in] PIVOT *> \verbatim *> PIVOT is CHARACTER*1 *> Specifies the plane for which P(k) is a plane rotation *> matrix. *> = 'V': Variable pivot, the plane (k,k+1) *> = 'T': Top pivot, the plane (1,k+1) *> = 'B': Bottom pivot, the plane (k,z) *> \endverbatim *> *> \param[in] DIRECT *> \verbatim *> DIRECT is CHARACTER*1 *> Specifies whether P is a forward or backward sequence of *> plane rotations. *> = 'F': Forward, P = P(z-1)*...*P(2)*P(1) *> = 'B': Backward, P = P(1)*P(2)*...*P(z-1) *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. If m <= 1, an immediate *> return is effected. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. If n <= 1, an *> immediate return is effected. *> \endverbatim *> *> \param[in] C *> \verbatim *> C is DOUBLE PRECISION array, dimension *> (M-1) if SIDE = 'L' *> (N-1) if SIDE = 'R' *> The cosines c(k) of the plane rotations. *> \endverbatim *> *> \param[in] S *> \verbatim *> S is DOUBLE PRECISION array, dimension *> (M-1) if SIDE = 'L' *> (N-1) if SIDE = 'R' *> The sines s(k) of the plane rotations. The 2-by-2 plane *> rotation part of the matrix P(k), R(k), has the form *> R(k) = ( c(k) s(k) ) *> ( -s(k) c(k) ). *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The M-by-N matrix A. On exit, A is overwritten by P*A if *> SIDE = 'R' or by A*P**T if SIDE = 'L'. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIRECT, PIVOT, SIDE INTEGER LDA, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), C( * ), S( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, INFO, J DOUBLE PRECISION CTEMP, STEMP, TEMP * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 IF( .NOT.( LSAME( SIDE, 'L' ) .OR. LSAME( SIDE, 'R' ) ) ) THEN INFO = 1 ELSE IF( .NOT.( LSAME( PIVOT, 'V' ) .OR. LSAME( PIVOT, $ 'T' ) .OR. LSAME( PIVOT, 'B' ) ) ) THEN INFO = 2 ELSE IF( .NOT.( LSAME( DIRECT, 'F' ) .OR. LSAME( DIRECT, 'B' ) ) ) $ THEN INFO = 3 ELSE IF( M.LT.0 ) THEN INFO = 4 ELSE IF( N.LT.0 ) THEN INFO = 5 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = 9 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DLASR ', INFO ) RETURN END IF * * Quick return if possible * IF( ( M.EQ.0 ) .OR. ( N.EQ.0 ) ) $ RETURN IF( LSAME( SIDE, 'L' ) ) THEN * * Form P * A * IF( LSAME( PIVOT, 'V' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 20 J = 1, M - 1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 10 I = 1, N TEMP = A( J+1, I ) A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I ) A( J, I ) = STEMP*TEMP + CTEMP*A( J, I ) 10 CONTINUE END IF 20 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 40 J = M - 1, 1, -1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 30 I = 1, N TEMP = A( J+1, I ) A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I ) A( J, I ) = STEMP*TEMP + CTEMP*A( J, I ) 30 CONTINUE END IF 40 CONTINUE END IF ELSE IF( LSAME( PIVOT, 'T' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 60 J = 2, M CTEMP = C( J-1 ) STEMP = S( J-1 ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 50 I = 1, N TEMP = A( J, I ) A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I ) A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I ) 50 CONTINUE END IF 60 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 80 J = M, 2, -1 CTEMP = C( J-1 ) STEMP = S( J-1 ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 70 I = 1, N TEMP = A( J, I ) A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I ) A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I ) 70 CONTINUE END IF 80 CONTINUE END IF ELSE IF( LSAME( PIVOT, 'B' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 100 J = 1, M - 1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 90 I = 1, N TEMP = A( J, I ) A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP 90 CONTINUE END IF 100 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 120 J = M - 1, 1, -1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 110 I = 1, N TEMP = A( J, I ) A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP 110 CONTINUE END IF 120 CONTINUE END IF END IF ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form A * P**T * IF( LSAME( PIVOT, 'V' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 140 J = 1, N - 1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 130 I = 1, M TEMP = A( I, J+1 ) A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J ) A( I, J ) = STEMP*TEMP + CTEMP*A( I, J ) 130 CONTINUE END IF 140 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 160 J = N - 1, 1, -1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 150 I = 1, M TEMP = A( I, J+1 ) A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J ) A( I, J ) = STEMP*TEMP + CTEMP*A( I, J ) 150 CONTINUE END IF 160 CONTINUE END IF ELSE IF( LSAME( PIVOT, 'T' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 180 J = 2, N CTEMP = C( J-1 ) STEMP = S( J-1 ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 170 I = 1, M TEMP = A( I, J ) A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 ) A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 ) 170 CONTINUE END IF 180 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 200 J = N, 2, -1 CTEMP = C( J-1 ) STEMP = S( J-1 ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 190 I = 1, M TEMP = A( I, J ) A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 ) A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 ) 190 CONTINUE END IF 200 CONTINUE END IF ELSE IF( LSAME( PIVOT, 'B' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 220 J = 1, N - 1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 210 I = 1, M TEMP = A( I, J ) A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP 210 CONTINUE END IF 220 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 240 J = N - 1, 1, -1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 230 I = 1, M TEMP = A( I, J ) A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP 230 CONTINUE END IF 240 CONTINUE END IF END IF END IF * RETURN * * End of DLASR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dladiv.f0000644002504400250440000000005012337331322016542 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dladiv.f0000644002504400250440000000575012337331322017315 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLADIV performs complex division in real arithmetic, avoiding unnecessary overflow. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLADIV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLADIV( A, B, C, D, P, Q ) * * .. Scalar Arguments .. * DOUBLE PRECISION A, B, C, D, P, Q * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLADIV performs complex division in real arithmetic *> *> a + i*b *> p + i*q = --------- *> c + i*d *> *> The algorithm is due to Robert L. Smith and can be found *> in D. Knuth, The art of Computer Programming, Vol.2, p.195 *> \endverbatim * * Arguments: * ========== * *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION *> \endverbatim *> *> \param[in] C *> \verbatim *> C is DOUBLE PRECISION *> \endverbatim *> *> \param[in] D *> \verbatim *> D is DOUBLE PRECISION *> The scalars a, b, c, and d in the above expression. *> \endverbatim *> *> \param[out] P *> \verbatim *> P is DOUBLE PRECISION *> \endverbatim *> *> \param[out] Q *> \verbatim *> Q is DOUBLE PRECISION *> The scalars p and q in the above expression. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLADIV( A, B, C, D, P, Q ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION A, B, C, D, P, Q * .. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION E, F * .. * .. Intrinsic Functions .. INTRINSIC ABS * .. * .. Executable Statements .. * IF( ABS( D ).LT.ABS( C ) ) THEN E = D / C F = C + D*E P = ( A+B*E ) / F Q = ( B-A*E ) / F ELSE E = C / D F = D + C*E P = ( B+A*E ) / F Q = ( -A+B*E ) / F END IF * RETURN * * End of DLADIV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlascl.f0000644002504400250440000000005012337331322016541 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlascl.f0000644002504400250440000002321612337331322017311 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLASCL + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER TYPE * INTEGER INFO, KL, KU, LDA, M, N * DOUBLE PRECISION CFROM, CTO * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLASCL multiplies the M by N real matrix A by the real scalar *> CTO/CFROM. This is done without over/underflow as long as the final *> result CTO*A(I,J)/CFROM does not over/underflow. TYPE specifies that *> A may be full, upper triangular, lower triangular, upper Hessenberg, *> or banded. *> \endverbatim * * Arguments: * ========== * *> \param[in] TYPE *> \verbatim *> TYPE is CHARACTER*1 *> TYPE indices the storage type of the input matrix. *> = 'G': A is a full matrix. *> = 'L': A is a lower triangular matrix. *> = 'U': A is an upper triangular matrix. *> = 'H': A is an upper Hessenberg matrix. *> = 'B': A is a symmetric band matrix with lower bandwidth KL *> and upper bandwidth KU and with the only the lower *> half stored. *> = 'Q': A is a symmetric band matrix with lower bandwidth KL *> and upper bandwidth KU and with the only the upper *> half stored. *> = 'Z': A is a band matrix with lower bandwidth KL and upper *> bandwidth KU. See DGBTRF for storage details. *> \endverbatim *> *> \param[in] KL *> \verbatim *> KL is INTEGER *> The lower bandwidth of A. Referenced only if TYPE = 'B', *> 'Q' or 'Z'. *> \endverbatim *> *> \param[in] KU *> \verbatim *> KU is INTEGER *> The upper bandwidth of A. Referenced only if TYPE = 'B', *> 'Q' or 'Z'. *> \endverbatim *> *> \param[in] CFROM *> \verbatim *> CFROM is DOUBLE PRECISION *> \endverbatim *> *> \param[in] CTO *> \verbatim *> CTO is DOUBLE PRECISION *> *> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed *> without over/underflow if the final result CTO*A(I,J)/CFROM *> can be represented without over/underflow. CFROM must be *> nonzero. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The matrix to be multiplied by CTO/CFROM. See TYPE for the *> storage type. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> 0 - successful exit *> <0 - if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER TYPE INTEGER INFO, KL, KU, LDA, M, N DOUBLE PRECISION CFROM, CTO * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) * .. * .. Local Scalars .. LOGICAL DONE INTEGER I, ITYPE, J, K1, K2, K3, K4 DOUBLE PRECISION BIGNUM, CFROM1, CFROMC, CTO1, CTOC, MUL, SMLNUM * .. * .. External Functions .. LOGICAL LSAME, DISNAN DOUBLE PRECISION DLAMCH EXTERNAL LSAME, DLAMCH, DISNAN * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, MIN * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 * IF( LSAME( TYPE, 'G' ) ) THEN ITYPE = 0 ELSE IF( LSAME( TYPE, 'L' ) ) THEN ITYPE = 1 ELSE IF( LSAME( TYPE, 'U' ) ) THEN ITYPE = 2 ELSE IF( LSAME( TYPE, 'H' ) ) THEN ITYPE = 3 ELSE IF( LSAME( TYPE, 'B' ) ) THEN ITYPE = 4 ELSE IF( LSAME( TYPE, 'Q' ) ) THEN ITYPE = 5 ELSE IF( LSAME( TYPE, 'Z' ) ) THEN ITYPE = 6 ELSE ITYPE = -1 END IF * IF( ITYPE.EQ.-1 ) THEN INFO = -1 ELSE IF( CFROM.EQ.ZERO .OR. DISNAN(CFROM) ) THEN INFO = -4 ELSE IF( DISNAN(CTO) ) THEN INFO = -5 ELSE IF( M.LT.0 ) THEN INFO = -6 ELSE IF( N.LT.0 .OR. ( ITYPE.EQ.4 .AND. N.NE.M ) .OR. $ ( ITYPE.EQ.5 .AND. N.NE.M ) ) THEN INFO = -7 ELSE IF( ITYPE.LE.3 .AND. LDA.LT.MAX( 1, M ) ) THEN INFO = -9 ELSE IF( ITYPE.GE.4 ) THEN IF( KL.LT.0 .OR. KL.GT.MAX( M-1, 0 ) ) THEN INFO = -2 ELSE IF( KU.LT.0 .OR. KU.GT.MAX( N-1, 0 ) .OR. $ ( ( ITYPE.EQ.4 .OR. ITYPE.EQ.5 ) .AND. KL.NE.KU ) ) $ THEN INFO = -3 ELSE IF( ( ITYPE.EQ.4 .AND. LDA.LT.KL+1 ) .OR. $ ( ITYPE.EQ.5 .AND. LDA.LT.KU+1 ) .OR. $ ( ITYPE.EQ.6 .AND. LDA.LT.2*KL+KU+1 ) ) THEN INFO = -9 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DLASCL', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 .OR. M.EQ.0 ) $ RETURN * * Get machine parameters * SMLNUM = DLAMCH( 'S' ) BIGNUM = ONE / SMLNUM * CFROMC = CFROM CTOC = CTO * 10 CONTINUE CFROM1 = CFROMC*SMLNUM IF( CFROM1.EQ.CFROMC ) THEN ! CFROMC is an inf. Multiply by a correctly signed zero for ! finite CTOC, or a NaN if CTOC is infinite. MUL = CTOC / CFROMC DONE = .TRUE. CTO1 = CTOC ELSE CTO1 = CTOC / BIGNUM IF( CTO1.EQ.CTOC ) THEN ! CTOC is either 0 or an inf. In both cases, CTOC itself ! serves as the correct multiplication factor. MUL = CTOC DONE = .TRUE. CFROMC = ONE ELSE IF( ABS( CFROM1 ).GT.ABS( CTOC ) .AND. CTOC.NE.ZERO ) THEN MUL = SMLNUM DONE = .FALSE. CFROMC = CFROM1 ELSE IF( ABS( CTO1 ).GT.ABS( CFROMC ) ) THEN MUL = BIGNUM DONE = .FALSE. CTOC = CTO1 ELSE MUL = CTOC / CFROMC DONE = .TRUE. END IF END IF * IF( ITYPE.EQ.0 ) THEN * * Full matrix * DO 30 J = 1, N DO 20 I = 1, M A( I, J ) = A( I, J )*MUL 20 CONTINUE 30 CONTINUE * ELSE IF( ITYPE.EQ.1 ) THEN * * Lower triangular matrix * DO 50 J = 1, N DO 40 I = J, M A( I, J ) = A( I, J )*MUL 40 CONTINUE 50 CONTINUE * ELSE IF( ITYPE.EQ.2 ) THEN * * Upper triangular matrix * DO 70 J = 1, N DO 60 I = 1, MIN( J, M ) A( I, J ) = A( I, J )*MUL 60 CONTINUE 70 CONTINUE * ELSE IF( ITYPE.EQ.3 ) THEN * * Upper Hessenberg matrix * DO 90 J = 1, N DO 80 I = 1, MIN( J+1, M ) A( I, J ) = A( I, J )*MUL 80 CONTINUE 90 CONTINUE * ELSE IF( ITYPE.EQ.4 ) THEN * * Lower half of a symmetric band matrix * K3 = KL + 1 K4 = N + 1 DO 110 J = 1, N DO 100 I = 1, MIN( K3, K4-J ) A( I, J ) = A( I, J )*MUL 100 CONTINUE 110 CONTINUE * ELSE IF( ITYPE.EQ.5 ) THEN * * Upper half of a symmetric band matrix * K1 = KU + 2 K3 = KU + 1 DO 130 J = 1, N DO 120 I = MAX( K1-J, 1 ), K3 A( I, J ) = A( I, J )*MUL 120 CONTINUE 130 CONTINUE * ELSE IF( ITYPE.EQ.6 ) THEN * * Band matrix * K1 = KL + KU + 2 K2 = KL + 1 K3 = 2*KL + KU + 1 K4 = KL + KU + 1 + M DO 150 J = 1, N DO 140 I = MAX( K1-J, K2 ), MIN( K3, K4-J ) A( I, J ) = A( I, J )*MUL 140 CONTINUE 150 CONTINUE * END IF * IF( .NOT.DONE ) $ GO TO 10 * RETURN * * End of DLASCL * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlasr.f0000644002504400250440000000005012337331322016432 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlasr.f0000644002504400250440000003547412337331322017213 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLASR applies a sequence of plane rotations to a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLASR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA ) * * .. Scalar Arguments .. * CHARACTER DIRECT, PIVOT, SIDE * INTEGER LDA, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION C( * ), S( * ) * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLASR applies a sequence of real plane rotations to a complex matrix *> A, from either the left or the right. *> *> When SIDE = 'L', the transformation takes the form *> *> A := P*A *> *> and when SIDE = 'R', the transformation takes the form *> *> A := A*P**T *> *> where P is an orthogonal matrix consisting of a sequence of z plane *> rotations, with z = M when SIDE = 'L' and z = N when SIDE = 'R', *> and P**T is the transpose of P. *> *> When DIRECT = 'F' (Forward sequence), then *> *> P = P(z-1) * ... * P(2) * P(1) *> *> and when DIRECT = 'B' (Backward sequence), then *> *> P = P(1) * P(2) * ... * P(z-1) *> *> where P(k) is a plane rotation matrix defined by the 2-by-2 rotation *> *> R(k) = ( c(k) s(k) ) *> = ( -s(k) c(k) ). *> *> When PIVOT = 'V' (Variable pivot), the rotation is performed *> for the plane (k,k+1), i.e., P(k) has the form *> *> P(k) = ( 1 ) *> ( ... ) *> ( 1 ) *> ( c(k) s(k) ) *> ( -s(k) c(k) ) *> ( 1 ) *> ( ... ) *> ( 1 ) *> *> where R(k) appears as a rank-2 modification to the identity matrix in *> rows and columns k and k+1. *> *> When PIVOT = 'T' (Top pivot), the rotation is performed for the *> plane (1,k+1), so P(k) has the form *> *> P(k) = ( c(k) s(k) ) *> ( 1 ) *> ( ... ) *> ( 1 ) *> ( -s(k) c(k) ) *> ( 1 ) *> ( ... ) *> ( 1 ) *> *> where R(k) appears in rows and columns 1 and k+1. *> *> Similarly, when PIVOT = 'B' (Bottom pivot), the rotation is *> performed for the plane (k,z), giving P(k) the form *> *> P(k) = ( 1 ) *> ( ... ) *> ( 1 ) *> ( c(k) s(k) ) *> ( 1 ) *> ( ... ) *> ( 1 ) *> ( -s(k) c(k) ) *> *> where R(k) appears in rows and columns k and z. The rotations are *> performed without ever forming P(k) explicitly. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> Specifies whether the plane rotation matrix P is applied to *> A on the left or the right. *> = 'L': Left, compute A := P*A *> = 'R': Right, compute A:= A*P**T *> \endverbatim *> *> \param[in] PIVOT *> \verbatim *> PIVOT is CHARACTER*1 *> Specifies the plane for which P(k) is a plane rotation *> matrix. *> = 'V': Variable pivot, the plane (k,k+1) *> = 'T': Top pivot, the plane (1,k+1) *> = 'B': Bottom pivot, the plane (k,z) *> \endverbatim *> *> \param[in] DIRECT *> \verbatim *> DIRECT is CHARACTER*1 *> Specifies whether P is a forward or backward sequence of *> plane rotations. *> = 'F': Forward, P = P(z-1)*...*P(2)*P(1) *> = 'B': Backward, P = P(1)*P(2)*...*P(z-1) *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. If m <= 1, an immediate *> return is effected. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. If n <= 1, an *> immediate return is effected. *> \endverbatim *> *> \param[in] C *> \verbatim *> C is DOUBLE PRECISION array, dimension *> (M-1) if SIDE = 'L' *> (N-1) if SIDE = 'R' *> The cosines c(k) of the plane rotations. *> \endverbatim *> *> \param[in] S *> \verbatim *> S is DOUBLE PRECISION array, dimension *> (M-1) if SIDE = 'L' *> (N-1) if SIDE = 'R' *> The sines s(k) of the plane rotations. The 2-by-2 plane *> rotation part of the matrix P(k), R(k), has the form *> R(k) = ( c(k) s(k) ) *> ( -s(k) c(k) ). *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The M-by-N matrix A. On exit, A is overwritten by P*A if *> SIDE = 'R' or by A*P**T if SIDE = 'L'. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZLASR( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIRECT, PIVOT, SIDE INTEGER LDA, M, N * .. * .. Array Arguments .. DOUBLE PRECISION C( * ), S( * ) COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, INFO, J DOUBLE PRECISION CTEMP, STEMP COMPLEX*16 TEMP * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 IF( .NOT.( LSAME( SIDE, 'L' ) .OR. LSAME( SIDE, 'R' ) ) ) THEN INFO = 1 ELSE IF( .NOT.( LSAME( PIVOT, 'V' ) .OR. LSAME( PIVOT, $ 'T' ) .OR. LSAME( PIVOT, 'B' ) ) ) THEN INFO = 2 ELSE IF( .NOT.( LSAME( DIRECT, 'F' ) .OR. LSAME( DIRECT, 'B' ) ) ) $ THEN INFO = 3 ELSE IF( M.LT.0 ) THEN INFO = 4 ELSE IF( N.LT.0 ) THEN INFO = 5 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = 9 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZLASR ', INFO ) RETURN END IF * * Quick return if possible * IF( ( M.EQ.0 ) .OR. ( N.EQ.0 ) ) $ RETURN IF( LSAME( SIDE, 'L' ) ) THEN * * Form P * A * IF( LSAME( PIVOT, 'V' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 20 J = 1, M - 1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 10 I = 1, N TEMP = A( J+1, I ) A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I ) A( J, I ) = STEMP*TEMP + CTEMP*A( J, I ) 10 CONTINUE END IF 20 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 40 J = M - 1, 1, -1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 30 I = 1, N TEMP = A( J+1, I ) A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I ) A( J, I ) = STEMP*TEMP + CTEMP*A( J, I ) 30 CONTINUE END IF 40 CONTINUE END IF ELSE IF( LSAME( PIVOT, 'T' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 60 J = 2, M CTEMP = C( J-1 ) STEMP = S( J-1 ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 50 I = 1, N TEMP = A( J, I ) A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I ) A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I ) 50 CONTINUE END IF 60 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 80 J = M, 2, -1 CTEMP = C( J-1 ) STEMP = S( J-1 ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 70 I = 1, N TEMP = A( J, I ) A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I ) A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I ) 70 CONTINUE END IF 80 CONTINUE END IF ELSE IF( LSAME( PIVOT, 'B' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 100 J = 1, M - 1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 90 I = 1, N TEMP = A( J, I ) A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP 90 CONTINUE END IF 100 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 120 J = M - 1, 1, -1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 110 I = 1, N TEMP = A( J, I ) A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP 110 CONTINUE END IF 120 CONTINUE END IF END IF ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form A * P**T * IF( LSAME( PIVOT, 'V' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 140 J = 1, N - 1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 130 I = 1, M TEMP = A( I, J+1 ) A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J ) A( I, J ) = STEMP*TEMP + CTEMP*A( I, J ) 130 CONTINUE END IF 140 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 160 J = N - 1, 1, -1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 150 I = 1, M TEMP = A( I, J+1 ) A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J ) A( I, J ) = STEMP*TEMP + CTEMP*A( I, J ) 150 CONTINUE END IF 160 CONTINUE END IF ELSE IF( LSAME( PIVOT, 'T' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 180 J = 2, N CTEMP = C( J-1 ) STEMP = S( J-1 ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 170 I = 1, M TEMP = A( I, J ) A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 ) A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 ) 170 CONTINUE END IF 180 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 200 J = N, 2, -1 CTEMP = C( J-1 ) STEMP = S( J-1 ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 190 I = 1, M TEMP = A( I, J ) A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 ) A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 ) 190 CONTINUE END IF 200 CONTINUE END IF ELSE IF( LSAME( PIVOT, 'B' ) ) THEN IF( LSAME( DIRECT, 'F' ) ) THEN DO 220 J = 1, N - 1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 210 I = 1, M TEMP = A( I, J ) A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP 210 CONTINUE END IF 220 CONTINUE ELSE IF( LSAME( DIRECT, 'B' ) ) THEN DO 240 J = N - 1, 1, -1 CTEMP = C( J ) STEMP = S( J ) IF( ( CTEMP.NE.ONE ) .OR. ( STEMP.NE.ZERO ) ) THEN DO 230 I = 1, M TEMP = A( I, J ) A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP 230 CONTINUE END IF 240 CONTINUE END IF END IF END IF * RETURN * * End of ZLASR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsygs2.f0000644002504400250440000000005012337331322016512 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsygs2.f0000644002504400250440000002126112337331322017260 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYGS2 reduces a symmetric definite generalized eigenproblem to standard form, using the factorization results obtained from spotrf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYGS2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, ITYPE, LDA, LDB, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYGS2 reduces a real symmetric-definite generalized eigenproblem *> to standard form. *> *> If ITYPE = 1, the problem is A*x = lambda*B*x, *> and A is overwritten by inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T) *> *> If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or *> B*A*x = lambda*x, and A is overwritten by U*A*U**T or L**T *A*L. *> *> B must have been previously factorized as U**T *U or L*L**T by DPOTRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> = 1: compute inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T); *> = 2 or 3: compute U*A*U**T or L**T *A*L. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> symmetric matrix A is stored, and how B has been factorized. *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrices A and B. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> n by n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n by n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the transformed matrix, stored in the *> same format as A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB,N) *> The triangular factor from the Cholesky factorization of B, *> as returned by DPOTRF. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleSYcomputational * * ===================================================================== SUBROUTINE DSYGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, ITYPE, LDA, LDB, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, HALF PARAMETER ( ONE = 1.0D0, HALF = 0.5D0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER K DOUBLE PRECISION AKK, BKK, CT * .. * .. External Subroutines .. EXTERNAL DAXPY, DSCAL, DSYR2, DTRMV, DTRSV, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -7 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYGS2', -INFO ) RETURN END IF * IF( ITYPE.EQ.1 ) THEN IF( UPPER ) THEN * * Compute inv(U**T)*A*inv(U) * DO 10 K = 1, N * * Update the upper triangle of A(k:n,k:n) * AKK = A( K, K ) BKK = B( K, K ) AKK = AKK / BKK**2 A( K, K ) = AKK IF( K.LT.N ) THEN CALL DSCAL( N-K, ONE / BKK, A( K, K+1 ), LDA ) CT = -HALF*AKK CALL DAXPY( N-K, CT, B( K, K+1 ), LDB, A( K, K+1 ), $ LDA ) CALL DSYR2( UPLO, N-K, -ONE, A( K, K+1 ), LDA, $ B( K, K+1 ), LDB, A( K+1, K+1 ), LDA ) CALL DAXPY( N-K, CT, B( K, K+1 ), LDB, A( K, K+1 ), $ LDA ) CALL DTRSV( UPLO, 'Transpose', 'Non-unit', N-K, $ B( K+1, K+1 ), LDB, A( K, K+1 ), LDA ) END IF 10 CONTINUE ELSE * * Compute inv(L)*A*inv(L**T) * DO 20 K = 1, N * * Update the lower triangle of A(k:n,k:n) * AKK = A( K, K ) BKK = B( K, K ) AKK = AKK / BKK**2 A( K, K ) = AKK IF( K.LT.N ) THEN CALL DSCAL( N-K, ONE / BKK, A( K+1, K ), 1 ) CT = -HALF*AKK CALL DAXPY( N-K, CT, B( K+1, K ), 1, A( K+1, K ), 1 ) CALL DSYR2( UPLO, N-K, -ONE, A( K+1, K ), 1, $ B( K+1, K ), 1, A( K+1, K+1 ), LDA ) CALL DAXPY( N-K, CT, B( K+1, K ), 1, A( K+1, K ), 1 ) CALL DTRSV( UPLO, 'No transpose', 'Non-unit', N-K, $ B( K+1, K+1 ), LDB, A( K+1, K ), 1 ) END IF 20 CONTINUE END IF ELSE IF( UPPER ) THEN * * Compute U*A*U**T * DO 30 K = 1, N * * Update the upper triangle of A(1:k,1:k) * AKK = A( K, K ) BKK = B( K, K ) CALL DTRMV( UPLO, 'No transpose', 'Non-unit', K-1, B, $ LDB, A( 1, K ), 1 ) CT = HALF*AKK CALL DAXPY( K-1, CT, B( 1, K ), 1, A( 1, K ), 1 ) CALL DSYR2( UPLO, K-1, ONE, A( 1, K ), 1, B( 1, K ), 1, $ A, LDA ) CALL DAXPY( K-1, CT, B( 1, K ), 1, A( 1, K ), 1 ) CALL DSCAL( K-1, BKK, A( 1, K ), 1 ) A( K, K ) = AKK*BKK**2 30 CONTINUE ELSE * * Compute L**T *A*L * DO 40 K = 1, N * * Update the lower triangle of A(1:k,1:k) * AKK = A( K, K ) BKK = B( K, K ) CALL DTRMV( UPLO, 'Transpose', 'Non-unit', K-1, B, LDB, $ A( K, 1 ), LDA ) CT = HALF*AKK CALL DAXPY( K-1, CT, B( K, 1 ), LDB, A( K, 1 ), LDA ) CALL DSYR2( UPLO, K-1, ONE, A( K, 1 ), LDA, B( K, 1 ), $ LDB, A, LDA ) CALL DAXPY( K-1, CT, B( K, 1 ), LDB, A( K, 1 ), LDA ) CALL DSCAL( K-1, BKK, A( K, 1 ), LDA ) A( K, K ) = AKK*BKK**2 40 CONTINUE END IF END IF RETURN * * End of DSYGS2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlaset.f0000644002504400250440000000005012337331322016601 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlaset.f0000644002504400250440000001140512337331322017346 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLASET + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLASET( UPLO, M, N, ALPHA, BETA, A, LDA ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER LDA, M, N * COMPLEX*16 ALPHA, BETA * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLASET initializes a 2-D array A to BETA on the diagonal and *> ALPHA on the offdiagonals. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies the part of the matrix A to be set. *> = 'U': Upper triangular part is set. The lower triangle *> is unchanged. *> = 'L': Lower triangular part is set. The upper triangle *> is unchanged. *> Otherwise: All of the matrix A is set. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of A. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of A. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> All the offdiagonal array elements are set to ALPHA. *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is COMPLEX*16 *> All the diagonal array elements are set to BETA. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the m by n matrix A. *> On exit, A(i,j) = ALPHA, 1 <= i <= m, 1 <= j <= n, i.ne.j; *> A(i,i) = BETA , 1 <= i <= min(m,n) *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZLASET( UPLO, M, N, ALPHA, BETA, A, LDA ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER LDA, M, N COMPLEX*16 ALPHA, BETA * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, J * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Intrinsic Functions .. INTRINSIC MIN * .. * .. Executable Statements .. * IF( LSAME( UPLO, 'U' ) ) THEN * * Set the diagonal to BETA and the strictly upper triangular * part of the array to ALPHA. * DO 20 J = 2, N DO 10 I = 1, MIN( J-1, M ) A( I, J ) = ALPHA 10 CONTINUE 20 CONTINUE DO 30 I = 1, MIN( N, M ) A( I, I ) = BETA 30 CONTINUE * ELSE IF( LSAME( UPLO, 'L' ) ) THEN * * Set the diagonal to BETA and the strictly lower triangular * part of the array to ALPHA. * DO 50 J = 1, MIN( M, N ) DO 40 I = J + 1, M A( I, J ) = ALPHA 40 CONTINUE 50 CONTINUE DO 60 I = 1, MIN( N, M ) A( I, I ) = BETA 60 CONTINUE * ELSE * * Set the array to BETA on the diagonal and ALPHA on the * offdiagonal. * DO 80 J = 1, N DO 70 I = 1, M A( I, J ) = ALPHA 70 CONTINUE 80 CONTINUE DO 90 I = 1, MIN( M, N ) A( I, I ) = BETA 90 CONTINUE END IF * RETURN * * End of ZLASET * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zungtr.f0000644002504400250440000000005012337331322016630 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zungtr.f0000644002504400250440000001566112337331322017405 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNGTR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNGTR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNGTR generates a complex unitary matrix Q which is defined as the *> product of n-1 elementary reflectors of order N, as returned by *> ZHETRD: *> *> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1), *> *> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1). *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A contains elementary reflectors *> from ZHETRD; *> = 'L': Lower triangle of A contains elementary reflectors *> from ZHETRD. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix Q. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the vectors which define the elementary reflectors, *> as returned by ZHETRD. *> On exit, the N-by-N unitary matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= N. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZHETRD. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= N-1. *> For optimum performance LWORK >= (N-1)*NB, where NB is *> the optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ), $ ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LQUERY, UPPER INTEGER I, IINFO, J, LWKOPT, NB * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZUNGQL, ZUNGQR * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LQUERY = ( LWORK.EQ.-1 ) UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LWORK.LT.MAX( 1, N-1 ) .AND. .NOT.LQUERY ) THEN INFO = -7 END IF * IF( INFO.EQ.0 ) THEN IF( UPPER ) THEN NB = ILAENV( 1, 'ZUNGQL', ' ', N-1, N-1, N-1, -1 ) ELSE NB = ILAENV( 1, 'ZUNGQR', ' ', N-1, N-1, N-1, -1 ) END IF LWKOPT = MAX( 1, N-1 )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNGTR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * IF( UPPER ) THEN * * Q was determined by a call to ZHETRD with UPLO = 'U' * * Shift the vectors which define the elementary reflectors one * column to the left, and set the last row and column of Q to * those of the unit matrix * DO 20 J = 1, N - 1 DO 10 I = 1, J - 1 A( I, J ) = A( I, J+1 ) 10 CONTINUE A( N, J ) = ZERO 20 CONTINUE DO 30 I = 1, N - 1 A( I, N ) = ZERO 30 CONTINUE A( N, N ) = ONE * * Generate Q(1:n-1,1:n-1) * CALL ZUNGQL( N-1, N-1, N-1, A, LDA, TAU, WORK, LWORK, IINFO ) * ELSE * * Q was determined by a call to ZHETRD with UPLO = 'L'. * * Shift the vectors which define the elementary reflectors one * column to the right, and set the first row and column of Q to * those of the unit matrix * DO 50 J = N, 2, -1 A( 1, J ) = ZERO DO 40 I = J + 1, N A( I, J ) = A( I, J-1 ) 40 CONTINUE 50 CONTINUE A( 1, 1 ) = ONE DO 60 I = 2, N A( I, 1 ) = ZERO 60 CONTINUE IF( N.GT.1 ) THEN * * Generate Q(2:n,2:n) * CALL ZUNGQR( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK, $ LWORK, IINFO ) END IF END IF WORK( 1 ) = LWKOPT RETURN * * End of ZUNGTR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/ztrti2.f0000644002504400250440000000005012337331322016535 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/ztrti2.f0000644002504400250440000001346112337331322017306 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTRTI2 computes the inverse of a triangular matrix (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZTRTI2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZTRTI2( UPLO, DIAG, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER DIAG, UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTRTI2 computes the inverse of a complex upper or lower triangular *> matrix. *> *> This is the Level 2 BLAS version of the algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the matrix A is upper or lower triangular. *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> Specifies whether or not the matrix A is unit triangular. *> = 'N': Non-unit triangular *> = 'U': Unit triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the triangular matrix A. If UPLO = 'U', the *> leading n by n upper triangular part of the array A contains *> the upper triangular matrix, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n by n lower triangular part of the array A contains *> the lower triangular matrix, and the strictly upper *> triangular part of A is not referenced. If DIAG = 'U', the *> diagonal elements of A are also not referenced and are *> assumed to be 1. *> *> On exit, the (triangular) inverse of the original matrix, in *> the same storage format. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -k, the k-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZTRTI2( UPLO, DIAG, N, A, LDA, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIAG, UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL NOUNIT, UPPER INTEGER J COMPLEX*16 AJJ * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZSCAL, ZTRMV * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) NOUNIT = LSAME( DIAG, 'N' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZTRTI2', -INFO ) RETURN END IF * IF( UPPER ) THEN * * Compute inverse of upper triangular matrix. * DO 10 J = 1, N IF( NOUNIT ) THEN A( J, J ) = ONE / A( J, J ) AJJ = -A( J, J ) ELSE AJJ = -ONE END IF * * Compute elements 1:j-1 of j-th column. * CALL ZTRMV( 'Upper', 'No transpose', DIAG, J-1, A, LDA, $ A( 1, J ), 1 ) CALL ZSCAL( J-1, AJJ, A( 1, J ), 1 ) 10 CONTINUE ELSE * * Compute inverse of lower triangular matrix. * DO 20 J = N, 1, -1 IF( NOUNIT ) THEN A( J, J ) = ONE / A( J, J ) AJJ = -A( J, J ) ELSE AJJ = -ONE END IF IF( J.LT.N ) THEN * * Compute elements j+1:n of j-th column. * CALL ZTRMV( 'Lower', 'No transpose', DIAG, N-J, $ A( J+1, J+1 ), LDA, A( J+1, J ), 1 ) CALL ZSCAL( N-J, AJJ, A( J+1, J ), 1 ) END IF 20 CONTINUE END IF * RETURN * * End of ZTRTI2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlarfb.f0000644002504400250440000000005012337331322016557 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlarfb.f0000644002504400250440000005521012337331322017326 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLARFB applies a block reflector or its conjugate-transpose to a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLARFB + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, * T, LDT, C, LDC, WORK, LDWORK ) * * .. Scalar Arguments .. * CHARACTER DIRECT, SIDE, STOREV, TRANS * INTEGER K, LDC, LDT, LDV, LDWORK, M, N * .. * .. Array Arguments .. * COMPLEX*16 C( LDC, * ), T( LDT, * ), V( LDV, * ), * $ WORK( LDWORK, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLARFB applies a complex block reflector H or its transpose H**H to a *> complex M-by-N matrix C, from either the left or the right. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply H or H**H from the Left *> = 'R': apply H or H**H from the Right *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': apply H (No transpose) *> = 'C': apply H**H (Conjugate transpose) *> \endverbatim *> *> \param[in] DIRECT *> \verbatim *> DIRECT is CHARACTER*1 *> Indicates how H is formed from a product of elementary *> reflectors *> = 'F': H = H(1) H(2) . . . H(k) (Forward) *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> *> \param[in] STOREV *> \verbatim *> STOREV is CHARACTER*1 *> Indicates how the vectors which define the elementary *> reflectors are stored: *> = 'C': Columnwise *> = 'R': Rowwise *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The order of the matrix T (= the number of elementary *> reflectors whose product defines the block reflector). *> \endverbatim *> *> \param[in] V *> \verbatim *> V is COMPLEX*16 array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,M) if STOREV = 'R' and SIDE = 'L' *> (LDV,N) if STOREV = 'R' and SIDE = 'R' *> See Further Details. *> \endverbatim *> *> \param[in] LDV *> \verbatim *> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. *> \endverbatim *> *> \param[in] T *> \verbatim *> T is COMPLEX*16 array, dimension (LDT,K) *> The triangular K-by-K matrix T in the representation of the *> block reflector. *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by H*C or H**H*C or C*H or C*H**H. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (LDWORK,K) *> \endverbatim *> *> \param[in] LDWORK *> \verbatim *> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= max(1,N); *> if SIDE = 'R', LDWORK >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and *> k = 3. The elements equal to 1 are not stored; the corresponding *> array elements are modified but restored on exit. The rest of the *> array is not used. *> *> DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R': *> *> V = ( 1 ) V = ( 1 v1 v1 v1 v1 ) *> ( v1 1 ) ( 1 v2 v2 v2 ) *> ( v1 v2 1 ) ( 1 v3 v3 ) *> ( v1 v2 v3 ) *> ( v1 v2 v3 ) *> *> DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R': *> *> V = ( v1 v2 v3 ) V = ( v1 v1 1 ) *> ( v1 v2 v3 ) ( v2 v2 v2 1 ) *> ( 1 v2 v3 ) ( v3 v3 v3 v3 1 ) *> ( 1 v3 ) *> ( 1 ) *> \endverbatim *> * ===================================================================== SUBROUTINE ZLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, $ T, LDT, C, LDC, WORK, LDWORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIRECT, SIDE, STOREV, TRANS INTEGER K, LDC, LDT, LDV, LDWORK, M, N * .. * .. Array Arguments .. COMPLEX*16 C( LDC, * ), T( LDT, * ), V( LDV, * ), $ WORK( LDWORK, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. CHARACTER TRANST INTEGER I, J, LASTV, LASTC * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAZLR, ILAZLC EXTERNAL LSAME, ILAZLR, ILAZLC * .. * .. External Subroutines .. EXTERNAL ZCOPY, ZGEMM, ZLACGV, ZTRMM * .. * .. Intrinsic Functions .. INTRINSIC DCONJG * .. * .. Executable Statements .. * * Quick return if possible * IF( M.LE.0 .OR. N.LE.0 ) $ RETURN * IF( LSAME( TRANS, 'N' ) ) THEN TRANST = 'C' ELSE TRANST = 'N' END IF * IF( LSAME( STOREV, 'C' ) ) THEN * IF( LSAME( DIRECT, 'F' ) ) THEN * * Let V = ( V1 ) (first K rows) * ( V2 ) * where V1 is unit lower triangular. * IF( LSAME( SIDE, 'L' ) ) THEN * * Form H * C or H**H * C where C = ( C1 ) * ( C2 ) * LASTV = MAX( K, ILAZLR( M, K, V, LDV ) ) LASTC = ILAZLC( LASTV, N, C, LDC ) * * W := C**H * V = (C1**H * V1 + C2**H * V2) (stored in WORK) * * W := C1**H * DO 10 J = 1, K CALL ZCOPY( LASTC, C( J, 1 ), LDC, WORK( 1, J ), 1 ) CALL ZLACGV( LASTC, WORK( 1, J ), 1 ) 10 CONTINUE * * W := W * V1 * CALL ZTRMM( 'Right', 'Lower', 'No transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) IF( LASTV.GT.K ) THEN * * W := W + C2**H *V2 * CALL ZGEMM( 'Conjugate transpose', 'No transpose', $ LASTC, K, LASTV-K, ONE, C( K+1, 1 ), LDC, $ V( K+1, 1 ), LDV, ONE, WORK, LDWORK ) END IF * * W := W * T**H or W * T * CALL ZTRMM( 'Right', 'Upper', TRANST, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - V * W**H * IF( M.GT.K ) THEN * * C2 := C2 - V2 * W**H * CALL ZGEMM( 'No transpose', 'Conjugate transpose', $ LASTV-K, LASTC, K, $ -ONE, V( K+1, 1 ), LDV, WORK, LDWORK, $ ONE, C( K+1, 1 ), LDC ) END IF * * W := W * V1**H * CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose', $ 'Unit', LASTC, K, ONE, V, LDV, WORK, LDWORK ) * * C1 := C1 - W**H * DO 30 J = 1, K DO 20 I = 1, LASTC C( J, I ) = C( J, I ) - DCONJG( WORK( I, J ) ) 20 CONTINUE 30 CONTINUE * ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form C * H or C * H**H where C = ( C1 C2 ) * LASTV = MAX( K, ILAZLR( N, K, V, LDV ) ) LASTC = ILAZLR( M, LASTV, C, LDC ) * * W := C * V = (C1*V1 + C2*V2) (stored in WORK) * * W := C1 * DO 40 J = 1, K CALL ZCOPY( LASTC, C( 1, J ), 1, WORK( 1, J ), 1 ) 40 CONTINUE * * W := W * V1 * CALL ZTRMM( 'Right', 'Lower', 'No transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) IF( LASTV.GT.K ) THEN * * W := W + C2 * V2 * CALL ZGEMM( 'No transpose', 'No transpose', $ LASTC, K, LASTV-K, $ ONE, C( 1, K+1 ), LDC, V( K+1, 1 ), LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T or W * T**H * CALL ZTRMM( 'Right', 'Upper', TRANS, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - W * V**H * IF( LASTV.GT.K ) THEN * * C2 := C2 - W * V2**H * CALL ZGEMM( 'No transpose', 'Conjugate transpose', $ LASTC, LASTV-K, K, $ -ONE, WORK, LDWORK, V( K+1, 1 ), LDV, $ ONE, C( 1, K+1 ), LDC ) END IF * * W := W * V1**H * CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose', $ 'Unit', LASTC, K, ONE, V, LDV, WORK, LDWORK ) * * C1 := C1 - W * DO 60 J = 1, K DO 50 I = 1, LASTC C( I, J ) = C( I, J ) - WORK( I, J ) 50 CONTINUE 60 CONTINUE END IF * ELSE * * Let V = ( V1 ) * ( V2 ) (last K rows) * where V2 is unit upper triangular. * IF( LSAME( SIDE, 'L' ) ) THEN * * Form H * C or H**H * C where C = ( C1 ) * ( C2 ) * LASTC = ILAZLC( M, N, C, LDC ) * * W := C**H * V = (C1**H * V1 + C2**H * V2) (stored in WORK) * * W := C2**H * DO 70 J = 1, K CALL ZCOPY( LASTC, C( M-K+J, 1 ), LDC, $ WORK( 1, J ), 1 ) CALL ZLACGV( LASTC, WORK( 1, J ), 1 ) 70 CONTINUE * * W := W * V2 * CALL ZTRMM( 'Right', 'Upper', 'No transpose', 'Unit', $ LASTC, K, ONE, V( M-K+1, 1 ), LDV, $ WORK, LDWORK ) IF( M.GT.K ) THEN * * W := W + C1**H*V1 * CALL ZGEMM( 'Conjugate transpose', 'No transpose', $ LASTC, K, M-K, $ ONE, C, LDC, V, LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T**H or W * T * CALL ZTRMM( 'Right', 'Lower', TRANST, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - V * W**H * IF( M.GT.K ) THEN * * C1 := C1 - V1 * W**H * CALL ZGEMM( 'No transpose', 'Conjugate transpose', $ M-K, LASTC, K, $ -ONE, V, LDV, WORK, LDWORK, $ ONE, C, LDC ) END IF * * W := W * V2**H * CALL ZTRMM( 'Right', 'Upper', 'Conjugate transpose', $ 'Unit', LASTC, K, ONE, V( M-K+1, 1 ), LDV, $ WORK, LDWORK ) * * C2 := C2 - W**H * DO 90 J = 1, K DO 80 I = 1, LASTC C( M-K+J, I ) = C( M-K+J, I ) - $ DCONJG( WORK( I, J ) ) 80 CONTINUE 90 CONTINUE * ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form C * H or C * H**H where C = ( C1 C2 ) * LASTC = ILAZLR( M, N, C, LDC ) * * W := C * V = (C1*V1 + C2*V2) (stored in WORK) * * W := C2 * DO 100 J = 1, K CALL ZCOPY( LASTC, C( 1, N-K+J ), 1, $ WORK( 1, J ), 1 ) 100 CONTINUE * * W := W * V2 * CALL ZTRMM( 'Right', 'Upper', 'No transpose', 'Unit', $ LASTC, K, ONE, V( N-K+1, 1 ), LDV, $ WORK, LDWORK ) IF( N.GT.K ) THEN * * W := W + C1 * V1 * CALL ZGEMM( 'No transpose', 'No transpose', $ LASTC, K, N-K, $ ONE, C, LDC, V, LDV, ONE, WORK, LDWORK ) END IF * * W := W * T or W * T**H * CALL ZTRMM( 'Right', 'Lower', TRANS, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - W * V**H * IF( N.GT.K ) THEN * * C1 := C1 - W * V1**H * CALL ZGEMM( 'No transpose', 'Conjugate transpose', $ LASTC, N-K, K, -ONE, WORK, LDWORK, V, LDV, $ ONE, C, LDC ) END IF * * W := W * V2**H * CALL ZTRMM( 'Right', 'Upper', 'Conjugate transpose', $ 'Unit', LASTC, K, ONE, V( N-K+1, 1 ), LDV, $ WORK, LDWORK ) * * C2 := C2 - W * DO 120 J = 1, K DO 110 I = 1, LASTC C( I, N-K+J ) = C( I, N-K+J ) $ - WORK( I, J ) 110 CONTINUE 120 CONTINUE END IF END IF * ELSE IF( LSAME( STOREV, 'R' ) ) THEN * IF( LSAME( DIRECT, 'F' ) ) THEN * * Let V = ( V1 V2 ) (V1: first K columns) * where V1 is unit upper triangular. * IF( LSAME( SIDE, 'L' ) ) THEN * * Form H * C or H**H * C where C = ( C1 ) * ( C2 ) * LASTV = MAX( K, ILAZLC( K, M, V, LDV ) ) LASTC = ILAZLC( LASTV, N, C, LDC ) * * W := C**H * V**H = (C1**H * V1**H + C2**H * V2**H) (stored in WORK) * * W := C1**H * DO 130 J = 1, K CALL ZCOPY( LASTC, C( J, 1 ), LDC, WORK( 1, J ), 1 ) CALL ZLACGV( LASTC, WORK( 1, J ), 1 ) 130 CONTINUE * * W := W * V1**H * CALL ZTRMM( 'Right', 'Upper', 'Conjugate transpose', $ 'Unit', LASTC, K, ONE, V, LDV, WORK, LDWORK ) IF( LASTV.GT.K ) THEN * * W := W + C2**H*V2**H * CALL ZGEMM( 'Conjugate transpose', $ 'Conjugate transpose', LASTC, K, LASTV-K, $ ONE, C( K+1, 1 ), LDC, V( 1, K+1 ), LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T**H or W * T * CALL ZTRMM( 'Right', 'Upper', TRANST, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - V**H * W**H * IF( LASTV.GT.K ) THEN * * C2 := C2 - V2**H * W**H * CALL ZGEMM( 'Conjugate transpose', $ 'Conjugate transpose', LASTV-K, LASTC, K, $ -ONE, V( 1, K+1 ), LDV, WORK, LDWORK, $ ONE, C( K+1, 1 ), LDC ) END IF * * W := W * V1 * CALL ZTRMM( 'Right', 'Upper', 'No transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) * * C1 := C1 - W**H * DO 150 J = 1, K DO 140 I = 1, LASTC C( J, I ) = C( J, I ) - DCONJG( WORK( I, J ) ) 140 CONTINUE 150 CONTINUE * ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form C * H or C * H**H where C = ( C1 C2 ) * LASTV = MAX( K, ILAZLC( K, N, V, LDV ) ) LASTC = ILAZLR( M, LASTV, C, LDC ) * * W := C * V**H = (C1*V1**H + C2*V2**H) (stored in WORK) * * W := C1 * DO 160 J = 1, K CALL ZCOPY( LASTC, C( 1, J ), 1, WORK( 1, J ), 1 ) 160 CONTINUE * * W := W * V1**H * CALL ZTRMM( 'Right', 'Upper', 'Conjugate transpose', $ 'Unit', LASTC, K, ONE, V, LDV, WORK, LDWORK ) IF( LASTV.GT.K ) THEN * * W := W + C2 * V2**H * CALL ZGEMM( 'No transpose', 'Conjugate transpose', $ LASTC, K, LASTV-K, ONE, C( 1, K+1 ), LDC, $ V( 1, K+1 ), LDV, ONE, WORK, LDWORK ) END IF * * W := W * T or W * T**H * CALL ZTRMM( 'Right', 'Upper', TRANS, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - W * V * IF( LASTV.GT.K ) THEN * * C2 := C2 - W * V2 * CALL ZGEMM( 'No transpose', 'No transpose', $ LASTC, LASTV-K, K, $ -ONE, WORK, LDWORK, V( 1, K+1 ), LDV, $ ONE, C( 1, K+1 ), LDC ) END IF * * W := W * V1 * CALL ZTRMM( 'Right', 'Upper', 'No transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) * * C1 := C1 - W * DO 180 J = 1, K DO 170 I = 1, LASTC C( I, J ) = C( I, J ) - WORK( I, J ) 170 CONTINUE 180 CONTINUE * END IF * ELSE * * Let V = ( V1 V2 ) (V2: last K columns) * where V2 is unit lower triangular. * IF( LSAME( SIDE, 'L' ) ) THEN * * Form H * C or H**H * C where C = ( C1 ) * ( C2 ) * LASTC = ILAZLC( M, N, C, LDC ) * * W := C**H * V**H = (C1**H * V1**H + C2**H * V2**H) (stored in WORK) * * W := C2**H * DO 190 J = 1, K CALL ZCOPY( LASTC, C( M-K+J, 1 ), LDC, $ WORK( 1, J ), 1 ) CALL ZLACGV( LASTC, WORK( 1, J ), 1 ) 190 CONTINUE * * W := W * V2**H * CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose', $ 'Unit', LASTC, K, ONE, V( 1, M-K+1 ), LDV, $ WORK, LDWORK ) IF( M.GT.K ) THEN * * W := W + C1**H * V1**H * CALL ZGEMM( 'Conjugate transpose', $ 'Conjugate transpose', LASTC, K, M-K, $ ONE, C, LDC, V, LDV, ONE, WORK, LDWORK ) END IF * * W := W * T**H or W * T * CALL ZTRMM( 'Right', 'Lower', TRANST, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - V**H * W**H * IF( M.GT.K ) THEN * * C1 := C1 - V1**H * W**H * CALL ZGEMM( 'Conjugate transpose', $ 'Conjugate transpose', M-K, LASTC, K, $ -ONE, V, LDV, WORK, LDWORK, ONE, C, LDC ) END IF * * W := W * V2 * CALL ZTRMM( 'Right', 'Lower', 'No transpose', 'Unit', $ LASTC, K, ONE, V( 1, M-K+1 ), LDV, $ WORK, LDWORK ) * * C2 := C2 - W**H * DO 210 J = 1, K DO 200 I = 1, LASTC C( M-K+J, I ) = C( M-K+J, I ) - $ DCONJG( WORK( I, J ) ) 200 CONTINUE 210 CONTINUE * ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form C * H or C * H**H where C = ( C1 C2 ) * LASTC = ILAZLR( M, N, C, LDC ) * * W := C * V**H = (C1*V1**H + C2*V2**H) (stored in WORK) * * W := C2 * DO 220 J = 1, K CALL ZCOPY( LASTC, C( 1, N-K+J ), 1, $ WORK( 1, J ), 1 ) 220 CONTINUE * * W := W * V2**H * CALL ZTRMM( 'Right', 'Lower', 'Conjugate transpose', $ 'Unit', LASTC, K, ONE, V( 1, N-K+1 ), LDV, $ WORK, LDWORK ) IF( N.GT.K ) THEN * * W := W + C1 * V1**H * CALL ZGEMM( 'No transpose', 'Conjugate transpose', $ LASTC, K, N-K, ONE, C, LDC, V, LDV, ONE, $ WORK, LDWORK ) END IF * * W := W * T or W * T**H * CALL ZTRMM( 'Right', 'Lower', TRANS, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - W * V * IF( N.GT.K ) THEN * * C1 := C1 - W * V1 * CALL ZGEMM( 'No transpose', 'No transpose', $ LASTC, N-K, K, -ONE, WORK, LDWORK, V, LDV, $ ONE, C, LDC ) END IF * * W := W * V2 * CALL ZTRMM( 'Right', 'Lower', 'No transpose', 'Unit', $ LASTC, K, ONE, V( 1, N-K+1 ), LDV, $ WORK, LDWORK ) * * C1 := C1 - W * DO 240 J = 1, K DO 230 I = 1, LASTC C( I, N-K+J ) = C( I, N-K+J ) - WORK( I, J ) 230 CONTINUE 240 CONTINUE * END IF * END IF END IF * RETURN * * End of ZLARFB * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zupmtr.f0000644002504400250440000000005012337331322016640 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zupmtr.f0000644002504400250440000002157412337331322017415 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUPMTR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUPMTR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUPMTR( SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK, * INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS, UPLO * INTEGER INFO, LDC, M, N * .. * .. Array Arguments .. * COMPLEX*16 AP( * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUPMTR overwrites the general complex M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q *> TRANS = 'C': Q**H * C C * Q**H *> *> where Q is a complex unitary matrix of order nq, with nq = m if *> SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of *> nq-1 elementary reflectors, as returned by ZHPTRD using packed *> storage: *> *> if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1); *> *> if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1). *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**H from the Left; *> = 'R': apply Q or Q**H from the Right. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangular packed storage used in previous *> call to ZHPTRD; *> = 'L': Lower triangular packed storage used in previous *> call to ZHPTRD. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': No transpose, apply Q; *> = 'C': Conjugate transpose, apply Q**H. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] AP *> \verbatim *> AP is COMPLEX*16 array, dimension *> (M*(M+1)/2) if SIDE = 'L' *> (N*(N+1)/2) if SIDE = 'R' *> The vectors which define the elementary reflectors, as *> returned by ZHPTRD. AP is modified by the routine but *> restored on exit. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (M-1) if SIDE = 'L' *> or (N-1) if SIDE = 'R' *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZHPTRD. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension *> (N) if SIDE = 'L' *> (M) if SIDE = 'R' *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUPMTR( SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK, $ INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS, UPLO INTEGER INFO, LDC, M, N * .. * .. Array Arguments .. COMPLEX*16 AP( * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL FORWRD, LEFT, NOTRAN, UPPER INTEGER I, I1, I2, I3, IC, II, JC, MI, NI, NQ COMPLEX*16 AII, TAUI * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARF * .. * .. Intrinsic Functions .. INTRINSIC DCONJG, MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) UPPER = LSAME( UPLO, 'U' ) * * NQ is the order of Q * IF( LEFT ) THEN NQ = M ELSE NQ = N END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN INFO = -3 ELSE IF( M.LT.0 ) THEN INFO = -4 ELSE IF( N.LT.0 ) THEN INFO = -5 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -9 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUPMTR', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 ) $ RETURN * IF( UPPER ) THEN * * Q was determined by a call to ZHPTRD with UPLO = 'U' * FORWRD = ( LEFT .AND. NOTRAN ) .OR. $ ( .NOT.LEFT .AND. .NOT.NOTRAN ) * IF( FORWRD ) THEN I1 = 1 I2 = NQ - 1 I3 = 1 II = 2 ELSE I1 = NQ - 1 I2 = 1 I3 = -1 II = NQ*( NQ+1 ) / 2 - 1 END IF * IF( LEFT ) THEN NI = N ELSE MI = M END IF * DO 10 I = I1, I2, I3 IF( LEFT ) THEN * * H(i) or H(i)**H is applied to C(1:i,1:n) * MI = I ELSE * * H(i) or H(i)**H is applied to C(1:m,1:i) * NI = I END IF * * Apply H(i) or H(i)**H * IF( NOTRAN ) THEN TAUI = TAU( I ) ELSE TAUI = DCONJG( TAU( I ) ) END IF AII = AP( II ) AP( II ) = ONE CALL ZLARF( SIDE, MI, NI, AP( II-I+1 ), 1, TAUI, C, LDC, $ WORK ) AP( II ) = AII * IF( FORWRD ) THEN II = II + I + 2 ELSE II = II - I - 1 END IF 10 CONTINUE ELSE * * Q was determined by a call to ZHPTRD with UPLO = 'L'. * FORWRD = ( LEFT .AND. .NOT.NOTRAN ) .OR. $ ( .NOT.LEFT .AND. NOTRAN ) * IF( FORWRD ) THEN I1 = 1 I2 = NQ - 1 I3 = 1 II = 2 ELSE I1 = NQ - 1 I2 = 1 I3 = -1 II = NQ*( NQ+1 ) / 2 - 1 END IF * IF( LEFT ) THEN NI = N JC = 1 ELSE MI = M IC = 1 END IF * DO 20 I = I1, I2, I3 AII = AP( II ) AP( II ) = ONE IF( LEFT ) THEN * * H(i) or H(i)**H is applied to C(i+1:m,1:n) * MI = M - I IC = I + 1 ELSE * * H(i) or H(i)**H is applied to C(1:m,i+1:n) * NI = N - I JC = I + 1 END IF * * Apply H(i) or H(i)**H * IF( NOTRAN ) THEN TAUI = TAU( I ) ELSE TAUI = DCONJG( TAU( I ) ) END IF CALL ZLARF( SIDE, MI, NI, AP( II ), 1, TAUI, C( IC, JC ), $ LDC, WORK ) AP( II ) = AII * IF( FORWRD ) THEN II = II + NQ - I + 1 ELSE II = II - NQ + I - 2 END IF 20 CONTINUE END IF RETURN * * End of ZUPMTR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlanst.f0000644002504400250440000000005012337331322016564 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlanst.f0000644002504400250440000001235112337331322017332 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLANST returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a real symmetric tridiagonal matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLANST + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DLANST( NORM, N, D, E ) * * .. Scalar Arguments .. * CHARACTER NORM * INTEGER N * .. * .. Array Arguments .. * DOUBLE PRECISION D( * ), E( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLANST returns the value of the one norm, or the Frobenius norm, or *> the infinity norm, or the element of largest absolute value of a *> real symmetric tridiagonal matrix A. *> \endverbatim *> *> \return DLANST *> \verbatim *> *> DLANST = ( max(abs(A(i,j))), NORM = 'M' or 'm' *> ( *> ( norm1(A), NORM = '1', 'O' or 'o' *> ( *> ( normI(A), NORM = 'I' or 'i' *> ( *> ( normF(A), NORM = 'F', 'f', 'E' or 'e' *> *> where norm1 denotes the one norm of a matrix (maximum column sum), *> normI denotes the infinity norm of a matrix (maximum row sum) and *> normF denotes the Frobenius norm of a matrix (square root of sum of *> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm. *> \endverbatim * * Arguments: * ========== * *> \param[in] NORM *> \verbatim *> NORM is CHARACTER*1 *> Specifies the value to be returned in DLANST as described *> above. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. When N = 0, DLANST is *> set to zero. *> \endverbatim *> *> \param[in] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of A. *> \endverbatim *> *> \param[in] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The (n-1) sub-diagonal or super-diagonal elements of A. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== DOUBLE PRECISION FUNCTION DLANST( NORM, N, D, E ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER NORM INTEGER N * .. * .. Array Arguments .. DOUBLE PRECISION D( * ), E( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I DOUBLE PRECISION ANORM, SCALE, SUM * .. * .. External Functions .. LOGICAL LSAME, DISNAN EXTERNAL LSAME, DISNAN * .. * .. External Subroutines .. EXTERNAL DLASSQ * .. * .. Intrinsic Functions .. INTRINSIC ABS, SQRT * .. * .. Executable Statements .. * IF( N.LE.0 ) THEN ANORM = ZERO ELSE IF( LSAME( NORM, 'M' ) ) THEN * * Find max(abs(A(i,j))). * ANORM = ABS( D( N ) ) DO 10 I = 1, N - 1 SUM = ABS( D( I ) ) IF( ANORM .LT. SUM .OR. DISNAN( SUM ) ) ANORM = SUM SUM = ABS( E( I ) ) IF( ANORM .LT. SUM .OR. DISNAN( SUM ) ) ANORM = SUM 10 CONTINUE ELSE IF( LSAME( NORM, 'O' ) .OR. NORM.EQ.'1' .OR. $ LSAME( NORM, 'I' ) ) THEN * * Find norm1(A). * IF( N.EQ.1 ) THEN ANORM = ABS( D( 1 ) ) ELSE ANORM = ABS( D( 1 ) )+ABS( E( 1 ) ) SUM = ABS( E( N-1 ) )+ABS( D( N ) ) IF( ANORM .LT. SUM .OR. DISNAN( SUM ) ) ANORM = SUM DO 20 I = 2, N - 1 SUM = ABS( D( I ) )+ABS( E( I ) )+ABS( E( I-1 ) ) IF( ANORM .LT. SUM .OR. DISNAN( SUM ) ) ANORM = SUM 20 CONTINUE END IF ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN * * Find normF(A). * SCALE = ZERO SUM = ONE IF( N.GT.1 ) THEN CALL DLASSQ( N-1, E, 1, SCALE, SUM ) SUM = 2*SUM END IF CALL DLASSQ( N, D, 1, SCALE, SUM ) ANORM = SCALE*SQRT( SUM ) END IF * DLANST = ANORM RETURN * * End of DLANST * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zunmhr.f0000644002504400250440000000005012337331322016622 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zunmhr.f0000644002504400250440000002026712337331322017375 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNMHR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNMHR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, * LDC, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER IHI, ILO, INFO, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNMHR overwrites the general complex M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q *> TRANS = 'C': Q**H * C C * Q**H *> *> where Q is a complex unitary matrix of order nq, with nq = m if *> SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of *> IHI-ILO elementary reflectors, as returned by ZGEHRD: *> *> Q = H(ilo) H(ilo+1) . . . H(ihi-1). *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**H from the Left; *> = 'R': apply Q or Q**H from the Right. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': apply Q (No transpose) *> = 'C': apply Q**H (Conjugate transpose) *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> *> ILO and IHI must have the same values as in the previous call *> of ZGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). *> If SIDE = 'L', then 1 <= ILO <= IHI <= M, if M > 0, and *> ILO = 1 and IHI = 0, if M = 0; *> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and *> ILO = 1 and IHI = 0, if N = 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension *> (LDA,M) if SIDE = 'L' *> (LDA,N) if SIDE = 'R' *> The vectors which define the elementary reflectors, as *> returned by ZGEHRD. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> LDA >= max(1,M) if SIDE = 'L'; LDA >= max(1,N) if SIDE = 'R'. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension *> (M-1) if SIDE = 'L' *> (N-1) if SIDE = 'R' *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEHRD. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. *> If SIDE = 'L', LWORK >= max(1,N); *> if SIDE = 'R', LWORK >= max(1,M). *> For optimum performance LWORK >= N*NB if SIDE = 'L', and *> LWORK >= M*NB if SIDE = 'R', where NB is the optimal *> blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, $ LDC, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER IHI, ILO, INFO, LDA, LDC, LWORK, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Local Scalars .. LOGICAL LEFT, LQUERY INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NH, NI, NQ, NW * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZUNMQR * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 NH = IHI - ILO LEFT = LSAME( SIDE, 'L' ) LQUERY = ( LWORK.EQ.-1 ) * * NQ is the order of Q and NW is the minimum dimension of WORK * IF( LEFT ) THEN NQ = M NW = N ELSE NQ = N NW = M END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.LSAME( TRANS, 'N' ) .AND. .NOT.LSAME( TRANS, 'C' ) ) $ THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, NQ ) ) THEN INFO = -5 ELSE IF( IHI.LT.MIN( ILO, NQ ) .OR. IHI.GT.NQ ) THEN INFO = -6 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * IF( INFO.EQ.0 ) THEN IF( LEFT ) THEN NB = ILAENV( 1, 'ZUNMQR', SIDE // TRANS, NH, N, NH, -1 ) ELSE NB = ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, NH, NH, -1 ) END IF LWKOPT = MAX( 1, NW )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNMHR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. NH.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * IF( LEFT ) THEN MI = NH NI = N I1 = ILO + 1 I2 = 1 ELSE MI = M NI = NH I1 = 1 I2 = ILO + 1 END IF * CALL ZUNMQR( SIDE, TRANS, MI, NI, NH, A( ILO+1, ILO ), LDA, $ TAU( ILO ), C( I1, I2 ), LDC, WORK, LWORK, IINFO ) * WORK( 1 ) = LWKOPT RETURN * * End of ZUNMHR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsysv.f0000644002504400250440000000005012337331322016447 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsysv.f0000644002504400250440000002035312337331322017216 0ustar00dewhurstdewhurst00000000000000*> \brief DSYSV computes the solution to system of linear equations A * X = B for SY matrices * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYSV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, * LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, LDB, LWORK, N, NRHS * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYSV computes the solution to a real system of linear equations *> A * X = B, *> where A is an N-by-N symmetric matrix and X and B are N-by-NRHS *> matrices. *> *> The diagonal pivoting method is used to factor A as *> A = U * D * U**T, if UPLO = 'U', or *> A = L * D * L**T, if UPLO = 'L', *> where U (or L) is a product of permutation and unit upper (lower) *> triangular matrices, and D is symmetric and block diagonal with *> 1-by-1 and 2-by-2 diagonal blocks. The factored form of A is then *> used to solve the system of equations A * X = B. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of linear equations, i.e., the order of the *> matrix A. N >= 0. *> \endverbatim *> *> \param[in] NRHS *> \verbatim *> NRHS is INTEGER *> The number of right hand sides, i.e., the number of columns *> of the matrix B. NRHS >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> N-by-N upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the block diagonal matrix D and the *> multipliers used to obtain the factor U or L from the *> factorization A = U*D*U**T or A = L*D*L**T as computed by *> DSYTRF. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> Details of the interchanges and the block structure of D, as *> determined by DSYTRF. If IPIV(k) > 0, then rows and columns *> k and IPIV(k) were interchanged, and D(k,k) is a 1-by-1 *> diagonal block. If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, *> then rows and columns k-1 and -IPIV(k) were interchanged and *> D(k-1:k,k-1:k) is a 2-by-2 diagonal block. If UPLO = 'L' and *> IPIV(k) = IPIV(k+1) < 0, then rows and columns k+1 and *> -IPIV(k) were interchanged and D(k:k+1,k:k+1) is a 2-by-2 *> diagonal block. *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB,NRHS) *> On entry, the N-by-NRHS right hand side matrix B. *> On exit, if INFO = 0, the N-by-NRHS solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of WORK. LWORK >= 1, and for best performance *> LWORK >= max(1,N*NB), where NB is the optimal blocksize for *> DSYTRF. *> for LWORK < N, TRS will be done with Level BLAS 2 *> for LWORK >= N, TRS will be done with Level BLAS 3 *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, D(i,i) is exactly zero. The factorization *> has been completed, but the block diagonal matrix D is *> exactly singular, so the solution could not be computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYsolve * * ===================================================================== SUBROUTINE DSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, $ LWORK, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LDB, LWORK, N, NRHS * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * ) * .. * * ===================================================================== * * .. Local Scalars .. LOGICAL LQUERY INTEGER LWKOPT * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, DSYTRF, DSYTRS, DSYTRS2 * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 LQUERY = ( LWORK.EQ.-1 ) IF( .NOT.LSAME( UPLO, 'U' ) .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( NRHS.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -8 ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN INFO = -10 END IF * IF( INFO.EQ.0 ) THEN IF( N.EQ.0 ) THEN LWKOPT = 1 ELSE CALL DSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO ) LWKOPT = WORK(1) END IF WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYSV ', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Compute the factorization A = U*D*U**T or A = L*D*L**T. * CALL DSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) IF( INFO.EQ.0 ) THEN * * Solve the system A*X = B, overwriting B with X. * IF ( LWORK.LT.N ) THEN * * Solve with TRS ( Use Level BLAS 2) * CALL DSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * ELSE * * Solve with TRS2 ( Use Level BLAS 3) * CALL DSYTRS2( UPLO,N,NRHS,A,LDA,IPIV,B,LDB,WORK,INFO ) * END IF * END IF * WORK( 1 ) = LWKOPT * RETURN * * End of DSYSV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zheevx.f0000644002504400250440000000005012337331322016610 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zheevx.f0000644002504400250440000004267012337331322017365 0ustar00dewhurstdewhurst00000000000000*> \brief ZHEEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHEEVX + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHEEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, * ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, * IWORK, IFAIL, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, RANGE, UPLO * INTEGER IL, INFO, IU, LDA, LDZ, LWORK, M, N * DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. * INTEGER IFAIL( * ), IWORK( * ) * DOUBLE PRECISION RWORK( * ), W( * ) * COMPLEX*16 A( LDA, * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHEEVX computes selected eigenvalues and, optionally, eigenvectors *> of a complex Hermitian matrix A. Eigenvalues and eigenvectors can *> be selected by specifying either a range of values or a range of *> indices for the desired eigenvalues. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] RANGE *> \verbatim *> RANGE is CHARACTER*1 *> = 'A': all eigenvalues will be found. *> = 'V': all eigenvalues in the half-open interval (VL,VU] *> will be found. *> = 'I': the IL-th through IU-th eigenvalues will be found. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA, N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of A contains the *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. *> On exit, the lower triangle (if UPLO='L') or the upper *> triangle (if UPLO='U') of A, including the diagonal, is *> destroyed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION *> \endverbatim *> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER *> \endverbatim *> *> \param[in] IU *> \verbatim *> IU is INTEGER *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim *> *> \param[in] ABSTOL *> \verbatim *> ABSTOL is DOUBLE PRECISION *> The absolute error tolerance for the eigenvalues. *> An approximate eigenvalue is accepted as converged *> when it is determined to lie in an interval [a,b] *> of width less than or equal to *> *> ABSTOL + EPS * max( |a|,|b| ) , *> *> where EPS is the machine precision. If ABSTOL is less than *> or equal to zero, then EPS*|T| will be used in its place, *> where |T| is the 1-norm of the tridiagonal matrix obtained *> by reducing A to tridiagonal form. *> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*DLAMCH('S'), not zero. *> If this routine returns with INFO>0, indicating that some *> eigenvectors did not converge, try setting ABSTOL to *> 2*DLAMCH('S'). *> *> See "Computing Small Singular Values of Bidiagonal Matrices *> with Guaranteed High Relative Accuracy," by Demmel and *> Kahan, LAPACK Working Note #3. *> \endverbatim *> *> \param[out] M *> \verbatim *> M is INTEGER *> The total number of eigenvalues found. 0 <= M <= N. *> If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> On normal exit, the first M elements contain the selected *> eigenvalues in ascending order. *> \endverbatim *> *> \param[out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ, max(1,M)) *> If JOBZ = 'V', then if INFO = 0, the first M columns of Z *> contain the orthonormal eigenvectors of the matrix A *> corresponding to the selected eigenvalues, with the i-th *> column of Z holding the eigenvector associated with W(i). *> If an eigenvector fails to converge, then that column of Z *> contains the latest approximation to the eigenvector, and the *> index of the eigenvector is returned in IFAIL. *> If JOBZ = 'N', then Z is not referenced. *> Note: the user must ensure that at least max(1,M) columns are *> supplied in the array Z; if RANGE = 'V', the exact value of M *> is not known in advance and an upper bound must be used. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= 1, and if *> JOBZ = 'V', LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of the array WORK. LWORK >= 1, when N <= 1; *> otherwise 2*N. *> For optimal efficiency, LWORK >= (NB+1)*N, *> where NB is the max of the blocksize for ZHETRD and for *> ZUNMTR as returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (7*N) *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (5*N) *> \endverbatim *> *> \param[out] IFAIL *> \verbatim *> IFAIL is INTEGER array, dimension (N) *> If JOBZ = 'V', then if INFO = 0, the first M elements of *> IFAIL are zero. If INFO > 0, then IFAIL contains the *> indices of the eigenvectors that failed to converge. *> If JOBZ = 'N', then IFAIL is not referenced. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, then i eigenvectors failed to converge. *> Their indices are stored in array IFAIL. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16HEeigen * * ===================================================================== SUBROUTINE ZHEEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, $ ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, $ IWORK, IFAIL, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, RANGE, UPLO INTEGER IL, INFO, IU, LDA, LDZ, LWORK, M, N DOUBLE PRECISION ABSTOL, VL, VU * .. * .. Array Arguments .. INTEGER IFAIL( * ), IWORK( * ) DOUBLE PRECISION RWORK( * ), W( * ) COMPLEX*16 A( LDA, * ), WORK( * ), Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) COMPLEX*16 CONE PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL ALLEIG, INDEIG, LOWER, LQUERY, TEST, VALEIG, $ WANTZ CHARACTER ORDER INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL, $ INDISP, INDIWK, INDRWK, INDTAU, INDWRK, ISCALE, $ ITMP1, J, JJ, LLWORK, LWKMIN, LWKOPT, NB, $ NSPLIT DOUBLE PRECISION ABSTLL, ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, $ SIGMA, SMLNUM, TMP1, VLL, VUU * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV DOUBLE PRECISION DLAMCH, ZLANHE EXTERNAL LSAME, ILAENV, DLAMCH, ZLANHE * .. * .. External Subroutines .. EXTERNAL DCOPY, DSCAL, DSTEBZ, DSTERF, XERBLA, ZDSCAL, $ ZHETRD, ZLACPY, ZSTEIN, ZSTEQR, ZSWAP, ZUNGTR, $ ZUNMTR * .. * .. Intrinsic Functions .. INTRINSIC DBLE, MAX, MIN, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * LOWER = LSAME( UPLO, 'L' ) WANTZ = LSAME( JOBZ, 'V' ) ALLEIG = LSAME( RANGE, 'A' ) VALEIG = LSAME( RANGE, 'V' ) INDEIG = LSAME( RANGE, 'I' ) LQUERY = ( LWORK.EQ.-1 ) * INFO = 0 IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -1 ELSE IF( .NOT.( ALLEIG .OR. VALEIG .OR. INDEIG ) ) THEN INFO = -2 ELSE IF( .NOT.( LOWER .OR. LSAME( UPLO, 'U' ) ) ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -6 ELSE IF( VALEIG ) THEN IF( N.GT.0 .AND. VU.LE.VL ) $ INFO = -8 ELSE IF( INDEIG ) THEN IF( IL.LT.1 .OR. IL.GT.MAX( 1, N ) ) THEN INFO = -9 ELSE IF( IU.LT.MIN( N, IL ) .OR. IU.GT.N ) THEN INFO = -10 END IF END IF END IF IF( INFO.EQ.0 ) THEN IF( LDZ.LT.1 .OR. ( WANTZ .AND. LDZ.LT.N ) ) THEN INFO = -15 END IF END IF * IF( INFO.EQ.0 ) THEN IF( N.LE.1 ) THEN LWKMIN = 1 WORK( 1 ) = LWKMIN ELSE LWKMIN = 2*N NB = ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) NB = MAX( NB, ILAENV( 1, 'ZUNMTR', UPLO, N, -1, -1, -1 ) ) LWKOPT = MAX( 1, ( NB + 1 )*N ) WORK( 1 ) = LWKOPT END IF * IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) $ INFO = -17 END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHEEVX', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * M = 0 IF( N.EQ.0 ) THEN RETURN END IF * IF( N.EQ.1 ) THEN IF( ALLEIG .OR. INDEIG ) THEN M = 1 W( 1 ) = A( 1, 1 ) ELSE IF( VALEIG ) THEN IF( VL.LT.DBLE( A( 1, 1 ) ) .AND. VU.GE.DBLE( A( 1, 1 ) ) ) $ THEN M = 1 W( 1 ) = A( 1, 1 ) END IF END IF IF( WANTZ ) $ Z( 1, 1 ) = CONE RETURN END IF * * Get machine constants. * SAFMIN = DLAMCH( 'Safe minimum' ) EPS = DLAMCH( 'Precision' ) SMLNUM = SAFMIN / EPS BIGNUM = ONE / SMLNUM RMIN = SQRT( SMLNUM ) RMAX = MIN( SQRT( BIGNUM ), ONE / SQRT( SQRT( SAFMIN ) ) ) * * Scale matrix to allowable range, if necessary. * ISCALE = 0 ABSTLL = ABSTOL IF( VALEIG ) THEN VLL = VL VUU = VU END IF ANRM = ZLANHE( 'M', UPLO, N, A, LDA, RWORK ) IF( ANRM.GT.ZERO .AND. ANRM.LT.RMIN ) THEN ISCALE = 1 SIGMA = RMIN / ANRM ELSE IF( ANRM.GT.RMAX ) THEN ISCALE = 1 SIGMA = RMAX / ANRM END IF IF( ISCALE.EQ.1 ) THEN IF( LOWER ) THEN DO 10 J = 1, N CALL ZDSCAL( N-J+1, SIGMA, A( J, J ), 1 ) 10 CONTINUE ELSE DO 20 J = 1, N CALL ZDSCAL( J, SIGMA, A( 1, J ), 1 ) 20 CONTINUE END IF IF( ABSTOL.GT.0 ) $ ABSTLL = ABSTOL*SIGMA IF( VALEIG ) THEN VLL = VL*SIGMA VUU = VU*SIGMA END IF END IF * * Call ZHETRD to reduce Hermitian matrix to tridiagonal form. * INDD = 1 INDE = INDD + N INDRWK = INDE + N INDTAU = 1 INDWRK = INDTAU + N LLWORK = LWORK - INDWRK + 1 CALL ZHETRD( UPLO, N, A, LDA, RWORK( INDD ), RWORK( INDE ), $ WORK( INDTAU ), WORK( INDWRK ), LLWORK, IINFO ) * * If all eigenvalues are desired and ABSTOL is less than or equal to * zero, then call DSTERF or ZUNGTR and ZSTEQR. If this fails for * some eigenvalue, then try DSTEBZ. * TEST = .FALSE. IF( INDEIG ) THEN IF( IL.EQ.1 .AND. IU.EQ.N ) THEN TEST = .TRUE. END IF END IF IF( ( ALLEIG .OR. TEST ) .AND. ( ABSTOL.LE.ZERO ) ) THEN CALL DCOPY( N, RWORK( INDD ), 1, W, 1 ) INDEE = INDRWK + 2*N IF( .NOT.WANTZ ) THEN CALL DCOPY( N-1, RWORK( INDE ), 1, RWORK( INDEE ), 1 ) CALL DSTERF( N, W, RWORK( INDEE ), INFO ) ELSE CALL ZLACPY( 'A', N, N, A, LDA, Z, LDZ ) CALL ZUNGTR( UPLO, N, Z, LDZ, WORK( INDTAU ), $ WORK( INDWRK ), LLWORK, IINFO ) CALL DCOPY( N-1, RWORK( INDE ), 1, RWORK( INDEE ), 1 ) CALL ZSTEQR( JOBZ, N, W, RWORK( INDEE ), Z, LDZ, $ RWORK( INDRWK ), INFO ) IF( INFO.EQ.0 ) THEN DO 30 I = 1, N IFAIL( I ) = 0 30 CONTINUE END IF END IF IF( INFO.EQ.0 ) THEN M = N GO TO 40 END IF INFO = 0 END IF * * Otherwise, call DSTEBZ and, if eigenvectors are desired, ZSTEIN. * IF( WANTZ ) THEN ORDER = 'B' ELSE ORDER = 'E' END IF INDIBL = 1 INDISP = INDIBL + N INDIWK = INDISP + N CALL DSTEBZ( RANGE, ORDER, N, VLL, VUU, IL, IU, ABSTLL, $ RWORK( INDD ), RWORK( INDE ), M, NSPLIT, W, $ IWORK( INDIBL ), IWORK( INDISP ), RWORK( INDRWK ), $ IWORK( INDIWK ), INFO ) * IF( WANTZ ) THEN CALL ZSTEIN( N, RWORK( INDD ), RWORK( INDE ), M, W, $ IWORK( INDIBL ), IWORK( INDISP ), Z, LDZ, $ RWORK( INDRWK ), IWORK( INDIWK ), IFAIL, INFO ) * * Apply unitary matrix used in reduction to tridiagonal * form to eigenvectors returned by ZSTEIN. * CALL ZUNMTR( 'L', UPLO, 'N', N, M, A, LDA, WORK( INDTAU ), Z, $ LDZ, WORK( INDWRK ), LLWORK, IINFO ) END IF * * If matrix was scaled, then rescale eigenvalues appropriately. * 40 CONTINUE IF( ISCALE.EQ.1 ) THEN IF( INFO.EQ.0 ) THEN IMAX = M ELSE IMAX = INFO - 1 END IF CALL DSCAL( IMAX, ONE / SIGMA, W, 1 ) END IF * * If eigenvalues are not in order, then sort them, along with * eigenvectors. * IF( WANTZ ) THEN DO 60 J = 1, M - 1 I = 0 TMP1 = W( J ) DO 50 JJ = J + 1, M IF( W( JJ ).LT.TMP1 ) THEN I = JJ TMP1 = W( JJ ) END IF 50 CONTINUE * IF( I.NE.0 ) THEN ITMP1 = IWORK( INDIBL+I-1 ) W( I ) = W( J ) IWORK( INDIBL+I-1 ) = IWORK( INDIBL+J-1 ) W( J ) = TMP1 IWORK( INDIBL+J-1 ) = ITMP1 CALL ZSWAP( N, Z( 1, I ), 1, Z( 1, J ), 1 ) IF( INFO.NE.0 ) THEN ITMP1 = IFAIL( I ) IFAIL( I ) = IFAIL( J ) IFAIL( J ) = ITMP1 END IF END IF 60 CONTINUE END IF * * Set WORK(1) to optimal complex workspace size. * WORK( 1 ) = LWKOPT * RETURN * * End of ZHEEVX * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zgebal.f0000644002504400250440000000005012337331322016543 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zgebal.f0000644002504400250440000002543512337331322017320 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGEBAL * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZGEBAL + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZGEBAL( JOB, N, A, LDA, ILO, IHI, SCALE, INFO ) * * .. Scalar Arguments .. * CHARACTER JOB * INTEGER IHI, ILO, INFO, LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION SCALE( * ) * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGEBAL balances a general complex matrix A. This involves, first, *> permuting A by a similarity transformation to isolate eigenvalues *> in the first 1 to ILO-1 and last IHI+1 to N elements on the *> diagonal; and second, applying a diagonal similarity transformation *> to rows and columns ILO to IHI to make the rows and columns as *> close in norm as possible. Both steps are optional. *> *> Balancing may reduce the 1-norm of the matrix, and improve the *> accuracy of the computed eigenvalues and/or eigenvectors. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOB *> \verbatim *> JOB is CHARACTER*1 *> Specifies the operations to be performed on A: *> = 'N': none: simply set ILO = 1, IHI = N, SCALE(I) = 1.0 *> for i = 1,...,N; *> = 'P': permute only; *> = 'S': scale only; *> = 'B': both permute and scale. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the input matrix A. *> On exit, A is overwritten by the balanced matrix. *> If JOB = 'N', A is not referenced. *> See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] ILO *> \verbatim *> \endverbatim *> *> \param[out] IHI *> \verbatim *> ILO and IHI are set to INTEGER such that on exit *> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N. *> If JOB = 'N' or 'S', ILO = 1 and IHI = N. *> \endverbatim *> *> \param[out] SCALE *> \verbatim *> SCALE is DOUBLE PRECISION array, dimension (N) *> Details of the permutations and scaling factors applied to *> A. If P(j) is the index of the row and column interchanged *> with row and column j and D(j) is the scaling factor *> applied to row and column j, then *> SCALE(j) = P(j) for j = 1,...,ILO-1 *> = D(j) for j = ILO,...,IHI *> = P(j) for j = IHI+1,...,N. *> The order in which the interchanges are made is N to IHI+1, *> then 1 to ILO-1. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16GEcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> The permutations consist of row and column interchanges which put *> the matrix in the form *> *> ( T1 X Y ) *> P A P = ( 0 B Z ) *> ( 0 0 T2 ) *> *> where T1 and T2 are upper triangular matrices whose eigenvalues lie *> along the diagonal. The column indices ILO and IHI mark the starting *> and ending columns of the submatrix B. Balancing consists of applying *> a diagonal similarity transformation inv(D) * B * D to make the *> 1-norms of each row of B and its corresponding column nearly equal. *> The output matrix is *> *> ( T1 X*D Y ) *> ( 0 inv(D)*B*D inv(D)*Z ). *> ( 0 0 T2 ) *> *> Information about the permutations P and the diagonal matrix D is *> returned in the vector SCALE. *> *> This subroutine is based on the EISPACK routine CBAL. *> *> Modified by Tzu-Yi Chen, Computer Science Division, University of *> California at Berkeley, USA *> \endverbatim *> * ===================================================================== SUBROUTINE ZGEBAL( JOB, N, A, LDA, ILO, IHI, SCALE, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOB INTEGER IHI, ILO, INFO, LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION SCALE( * ) COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) DOUBLE PRECISION SCLFAC PARAMETER ( SCLFAC = 2.0D+0 ) DOUBLE PRECISION FACTOR PARAMETER ( FACTOR = 0.95D+0 ) * .. * .. Local Scalars .. LOGICAL NOCONV INTEGER I, ICA, IEXC, IRA, J, K, L, M DOUBLE PRECISION C, CA, F, G, R, RA, S, SFMAX1, SFMAX2, SFMIN1, $ SFMIN2 COMPLEX*16 CDUM * .. * .. External Functions .. LOGICAL DISNAN, LSAME INTEGER IZAMAX DOUBLE PRECISION DLAMCH EXTERNAL DISNAN, LSAME, IZAMAX, DLAMCH * .. * .. External Subroutines .. EXTERNAL XERBLA, ZDSCAL, ZSWAP * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DIMAG, MAX, MIN * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 IF( .NOT.LSAME( JOB, 'N' ) .AND. .NOT.LSAME( JOB, 'P' ) .AND. $ .NOT.LSAME( JOB, 'S' ) .AND. .NOT.LSAME( JOB, 'B' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZGEBAL', -INFO ) RETURN END IF * K = 1 L = N * IF( N.EQ.0 ) $ GO TO 210 * IF( LSAME( JOB, 'N' ) ) THEN DO 10 I = 1, N SCALE( I ) = ONE 10 CONTINUE GO TO 210 END IF * IF( LSAME( JOB, 'S' ) ) $ GO TO 120 * * Permutation to isolate eigenvalues if possible * GO TO 50 * * Row and column exchange. * 20 CONTINUE SCALE( M ) = J IF( J.EQ.M ) $ GO TO 30 * CALL ZSWAP( L, A( 1, J ), 1, A( 1, M ), 1 ) CALL ZSWAP( N-K+1, A( J, K ), LDA, A( M, K ), LDA ) * 30 CONTINUE GO TO ( 40, 80 )IEXC * * Search for rows isolating an eigenvalue and push them down. * 40 CONTINUE IF( L.EQ.1 ) $ GO TO 210 L = L - 1 * 50 CONTINUE DO 70 J = L, 1, -1 * DO 60 I = 1, L IF( I.EQ.J ) $ GO TO 60 IF( DBLE( A( J, I ) ).NE.ZERO .OR. DIMAG( A( J, I ) ).NE. $ ZERO )GO TO 70 60 CONTINUE * M = L IEXC = 1 GO TO 20 70 CONTINUE * GO TO 90 * * Search for columns isolating an eigenvalue and push them left. * 80 CONTINUE K = K + 1 * 90 CONTINUE DO 110 J = K, L * DO 100 I = K, L IF( I.EQ.J ) $ GO TO 100 IF( DBLE( A( I, J ) ).NE.ZERO .OR. DIMAG( A( I, J ) ).NE. $ ZERO )GO TO 110 100 CONTINUE * M = K IEXC = 2 GO TO 20 110 CONTINUE * 120 CONTINUE DO 130 I = K, L SCALE( I ) = ONE 130 CONTINUE * IF( LSAME( JOB, 'P' ) ) $ GO TO 210 * * Balance the submatrix in rows K to L. * * Iterative loop for norm reduction * SFMIN1 = DLAMCH( 'S' ) / DLAMCH( 'P' ) SFMAX1 = ONE / SFMIN1 SFMIN2 = SFMIN1*SCLFAC SFMAX2 = ONE / SFMIN2 140 CONTINUE NOCONV = .FALSE. * DO 200 I = K, L C = ZERO R = ZERO * DO 150 J = K, L IF( J.EQ.I ) $ GO TO 150 C = C + CABS1( A( J, I ) ) R = R + CABS1( A( I, J ) ) 150 CONTINUE ICA = IZAMAX( L, A( 1, I ), 1 ) CA = ABS( A( ICA, I ) ) IRA = IZAMAX( N-K+1, A( I, K ), LDA ) RA = ABS( A( I, IRA+K-1 ) ) * * Guard against zero C or R due to underflow. * IF( C.EQ.ZERO .OR. R.EQ.ZERO ) $ GO TO 200 G = R / SCLFAC F = ONE S = C + R 160 CONTINUE IF( C.GE.G .OR. MAX( F, C, CA ).GE.SFMAX2 .OR. $ MIN( R, G, RA ).LE.SFMIN2 )GO TO 170 IF( DISNAN( C+F+CA+R+G+RA ) ) THEN * * Exit if NaN to avoid infinite loop * INFO = -3 CALL XERBLA( 'ZGEBAL', -INFO ) RETURN END IF F = F*SCLFAC C = C*SCLFAC CA = CA*SCLFAC R = R / SCLFAC G = G / SCLFAC RA = RA / SCLFAC GO TO 160 * 170 CONTINUE G = C / SCLFAC 180 CONTINUE IF( G.LT.R .OR. MAX( R, RA ).GE.SFMAX2 .OR. $ MIN( F, C, G, CA ).LE.SFMIN2 )GO TO 190 F = F / SCLFAC C = C / SCLFAC G = G / SCLFAC CA = CA / SCLFAC R = R*SCLFAC RA = RA*SCLFAC GO TO 180 * * Now balance. * 190 CONTINUE IF( ( C+R ).GE.FACTOR*S ) $ GO TO 200 IF( F.LT.ONE .AND. SCALE( I ).LT.ONE ) THEN IF( F*SCALE( I ).LE.SFMIN1 ) $ GO TO 200 END IF IF( F.GT.ONE .AND. SCALE( I ).GT.ONE ) THEN IF( SCALE( I ).GE.SFMAX1 / F ) $ GO TO 200 END IF G = ONE / F SCALE( I ) = SCALE( I )*F NOCONV = .TRUE. * CALL ZDSCAL( N-K+1, G, A( I, K ), LDA ) CALL ZDSCAL( L, F, A( 1, I ), 1 ) * 200 CONTINUE * IF( NOCONV ) $ GO TO 140 * 210 CONTINUE ILO = K IHI = L * RETURN * * End of ZGEBAL * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zunghr.f0000644002504400250440000000005012337331322016614 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zunghr.f0000644002504400250440000001472712337331322017373 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNGHR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNGHR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, ILO, INFO, LDA, LWORK, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNGHR generates a complex unitary matrix Q which is defined as the *> product of IHI-ILO elementary reflectors of order N, as returned by *> ZGEHRD: *> *> Q = H(ilo) H(ilo+1) . . . H(ihi-1). *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix Q. N >= 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> *> ILO and IHI must have the same values as in the previous call *> of ZGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the vectors which define the elementary reflectors, *> as returned by ZGEHRD. *> On exit, the N-by-N unitary matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEHRD. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= IHI-ILO. *> For optimum performance LWORK >= (IHI-ILO)*NB, where NB is *> the optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER IHI, ILO, INFO, LDA, LWORK, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ), $ ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IINFO, J, LWKOPT, NB, NH * .. * .. External Subroutines .. EXTERNAL XERBLA, ZUNGQR * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 NH = IHI - ILO LQUERY = ( LWORK.EQ.-1 ) IF( N.LT.0 ) THEN INFO = -1 ELSE IF( ILO.LT.1 .OR. ILO.GT.MAX( 1, N ) ) THEN INFO = -2 ELSE IF( IHI.LT.MIN( ILO, N ) .OR. IHI.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LWORK.LT.MAX( 1, NH ) .AND. .NOT.LQUERY ) THEN INFO = -8 END IF * IF( INFO.EQ.0 ) THEN NB = ILAENV( 1, 'ZUNGQR', ' ', NH, NH, NH, -1 ) LWKOPT = MAX( 1, NH )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNGHR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * * Shift the vectors which define the elementary reflectors one * column to the right, and set the first ilo and the last n-ihi * rows and columns to those of the unit matrix * DO 40 J = IHI, ILO + 1, -1 DO 10 I = 1, J - 1 A( I, J ) = ZERO 10 CONTINUE DO 20 I = J + 1, IHI A( I, J ) = A( I, J-1 ) 20 CONTINUE DO 30 I = IHI + 1, N A( I, J ) = ZERO 30 CONTINUE 40 CONTINUE DO 60 J = 1, ILO DO 50 I = 1, N A( I, J ) = ZERO 50 CONTINUE A( J, J ) = ONE 60 CONTINUE DO 80 J = IHI + 1, N DO 70 I = 1, N A( I, J ) = ZERO 70 CONTINUE A( J, J ) = ONE 80 CONTINUE * IF( NH.GT.0 ) THEN * * Generate Q(ilo+1:ihi,ilo+1:ihi) * CALL ZUNGQR( NH, NH, NH, A( ILO+1, ILO+1 ), LDA, TAU( ILO ), $ WORK, LWORK, IINFO ) END IF WORK( 1 ) = LWKOPT RETURN * * End of ZUNGHR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dorgtr.f0000644002504400250440000000005012337331322016600 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dorgtr.f0000644002504400250440000001564012337331322017352 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORGTR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORGTR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORGTR generates a real orthogonal matrix Q which is defined as the *> product of n-1 elementary reflectors of order N, as returned by *> DSYTRD: *> *> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1), *> *> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1). *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A contains elementary reflectors *> from DSYTRD; *> = 'L': Lower triangle of A contains elementary reflectors *> from DSYTRD. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix Q. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the vectors which define the elementary reflectors, *> as returned by DSYTRD. *> On exit, the N-by-N orthogonal matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (N-1) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DSYTRD. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N-1). *> For optimum performance LWORK >= (N-1)*NB, where NB is *> the optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY, UPPER INTEGER I, IINFO, J, LWKOPT, NB * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DORGQL, DORGQR, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LQUERY = ( LWORK.EQ.-1 ) UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LWORK.LT.MAX( 1, N-1 ) .AND. .NOT.LQUERY ) THEN INFO = -7 END IF * IF( INFO.EQ.0 ) THEN IF( UPPER ) THEN NB = ILAENV( 1, 'DORGQL', ' ', N-1, N-1, N-1, -1 ) ELSE NB = ILAENV( 1, 'DORGQR', ' ', N-1, N-1, N-1, -1 ) END IF LWKOPT = MAX( 1, N-1 )*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORGTR', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * IF( UPPER ) THEN * * Q was determined by a call to DSYTRD with UPLO = 'U' * * Shift the vectors which define the elementary reflectors one * column to the left, and set the last row and column of Q to * those of the unit matrix * DO 20 J = 1, N - 1 DO 10 I = 1, J - 1 A( I, J ) = A( I, J+1 ) 10 CONTINUE A( N, J ) = ZERO 20 CONTINUE DO 30 I = 1, N - 1 A( I, N ) = ZERO 30 CONTINUE A( N, N ) = ONE * * Generate Q(1:n-1,1:n-1) * CALL DORGQL( N-1, N-1, N-1, A, LDA, TAU, WORK, LWORK, IINFO ) * ELSE * * Q was determined by a call to DSYTRD with UPLO = 'L'. * * Shift the vectors which define the elementary reflectors one * column to the right, and set the first row and column of Q to * those of the unit matrix * DO 50 J = N, 2, -1 A( 1, J ) = ZERO DO 40 I = J + 1, N A( I, J ) = A( I, J-1 ) 40 CONTINUE 50 CONTINUE A( 1, 1 ) = ONE DO 60 I = 2, N A( I, 1 ) = ZERO 60 CONTINUE IF( N.GT.1 ) THEN * * Generate Q(2:n,2:n) * CALL DORGQR( N-1, N-1, N-1, A( 2, 2 ), LDA, TAU, WORK, $ LWORK, IINFO ) END IF END IF WORK( 1 ) = LWKOPT RETURN * * End of DORGTR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhegst.f0000644002504400250440000000005012337331322016603 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhegst.f0000644002504400250440000002624612337331322017361 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHEGST * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHEGST + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHEGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, ITYPE, LDA, LDB, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHEGST reduces a complex Hermitian-definite generalized *> eigenproblem to standard form. *> *> If ITYPE = 1, the problem is A*x = lambda*B*x, *> and A is overwritten by inv(U**H)*A*inv(U) or inv(L)*A*inv(L**H) *> *> If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or *> B*A*x = lambda*x, and A is overwritten by U*A*U**H or L**H*A*L. *> *> B must have been previously factorized as U**H*U or L*L**H by ZPOTRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> = 1: compute inv(U**H)*A*inv(U) or inv(L)*A*inv(L**H); *> = 2 or 3: compute U*A*U**H or L**H*A*L. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored and B is factored as *> U**H*U; *> = 'L': Lower triangle of A is stored and B is factored as *> L*L**H. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrices A and B. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the leading *> N-by-N upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the transformed matrix, stored in the *> same format as A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is COMPLEX*16 array, dimension (LDB,N) *> The triangular factor from the Cholesky factorization of B, *> as returned by ZPOTRF. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16HEcomputational * * ===================================================================== SUBROUTINE ZHEGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, ITYPE, LDA, LDB, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) COMPLEX*16 CONE, HALF PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ), $ HALF = ( 0.5D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER K, KB, NB * .. * .. External Subroutines .. EXTERNAL XERBLA, ZHEGS2, ZHEMM, ZHER2K, ZTRMM, ZTRSM * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -7 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHEGST', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Determine the block size for this environment. * NB = ILAENV( 1, 'ZHEGST', UPLO, N, -1, -1, -1 ) * IF( NB.LE.1 .OR. NB.GE.N ) THEN * * Use unblocked code * CALL ZHEGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) ELSE * * Use blocked code * IF( ITYPE.EQ.1 ) THEN IF( UPPER ) THEN * * Compute inv(U**H)*A*inv(U) * DO 10 K = 1, N, NB KB = MIN( N-K+1, NB ) * * Update the upper triangle of A(k:n,k:n) * CALL ZHEGS2( ITYPE, UPLO, KB, A( K, K ), LDA, $ B( K, K ), LDB, INFO ) IF( K+KB.LE.N ) THEN CALL ZTRSM( 'Left', UPLO, 'Conjugate transpose', $ 'Non-unit', KB, N-K-KB+1, CONE, $ B( K, K ), LDB, A( K, K+KB ), LDA ) CALL ZHEMM( 'Left', UPLO, KB, N-K-KB+1, -HALF, $ A( K, K ), LDA, B( K, K+KB ), LDB, $ CONE, A( K, K+KB ), LDA ) CALL ZHER2K( UPLO, 'Conjugate transpose', N-K-KB+1, $ KB, -CONE, A( K, K+KB ), LDA, $ B( K, K+KB ), LDB, ONE, $ A( K+KB, K+KB ), LDA ) CALL ZHEMM( 'Left', UPLO, KB, N-K-KB+1, -HALF, $ A( K, K ), LDA, B( K, K+KB ), LDB, $ CONE, A( K, K+KB ), LDA ) CALL ZTRSM( 'Right', UPLO, 'No transpose', $ 'Non-unit', KB, N-K-KB+1, CONE, $ B( K+KB, K+KB ), LDB, A( K, K+KB ), $ LDA ) END IF 10 CONTINUE ELSE * * Compute inv(L)*A*inv(L**H) * DO 20 K = 1, N, NB KB = MIN( N-K+1, NB ) * * Update the lower triangle of A(k:n,k:n) * CALL ZHEGS2( ITYPE, UPLO, KB, A( K, K ), LDA, $ B( K, K ), LDB, INFO ) IF( K+KB.LE.N ) THEN CALL ZTRSM( 'Right', UPLO, 'Conjugate transpose', $ 'Non-unit', N-K-KB+1, KB, CONE, $ B( K, K ), LDB, A( K+KB, K ), LDA ) CALL ZHEMM( 'Right', UPLO, N-K-KB+1, KB, -HALF, $ A( K, K ), LDA, B( K+KB, K ), LDB, $ CONE, A( K+KB, K ), LDA ) CALL ZHER2K( UPLO, 'No transpose', N-K-KB+1, KB, $ -CONE, A( K+KB, K ), LDA, $ B( K+KB, K ), LDB, ONE, $ A( K+KB, K+KB ), LDA ) CALL ZHEMM( 'Right', UPLO, N-K-KB+1, KB, -HALF, $ A( K, K ), LDA, B( K+KB, K ), LDB, $ CONE, A( K+KB, K ), LDA ) CALL ZTRSM( 'Left', UPLO, 'No transpose', $ 'Non-unit', N-K-KB+1, KB, CONE, $ B( K+KB, K+KB ), LDB, A( K+KB, K ), $ LDA ) END IF 20 CONTINUE END IF ELSE IF( UPPER ) THEN * * Compute U*A*U**H * DO 30 K = 1, N, NB KB = MIN( N-K+1, NB ) * * Update the upper triangle of A(1:k+kb-1,1:k+kb-1) * CALL ZTRMM( 'Left', UPLO, 'No transpose', 'Non-unit', $ K-1, KB, CONE, B, LDB, A( 1, K ), LDA ) CALL ZHEMM( 'Right', UPLO, K-1, KB, HALF, A( K, K ), $ LDA, B( 1, K ), LDB, CONE, A( 1, K ), $ LDA ) CALL ZHER2K( UPLO, 'No transpose', K-1, KB, CONE, $ A( 1, K ), LDA, B( 1, K ), LDB, ONE, A, $ LDA ) CALL ZHEMM( 'Right', UPLO, K-1, KB, HALF, A( K, K ), $ LDA, B( 1, K ), LDB, CONE, A( 1, K ), $ LDA ) CALL ZTRMM( 'Right', UPLO, 'Conjugate transpose', $ 'Non-unit', K-1, KB, CONE, B( K, K ), LDB, $ A( 1, K ), LDA ) CALL ZHEGS2( ITYPE, UPLO, KB, A( K, K ), LDA, $ B( K, K ), LDB, INFO ) 30 CONTINUE ELSE * * Compute L**H*A*L * DO 40 K = 1, N, NB KB = MIN( N-K+1, NB ) * * Update the lower triangle of A(1:k+kb-1,1:k+kb-1) * CALL ZTRMM( 'Right', UPLO, 'No transpose', 'Non-unit', $ KB, K-1, CONE, B, LDB, A( K, 1 ), LDA ) CALL ZHEMM( 'Left', UPLO, KB, K-1, HALF, A( K, K ), $ LDA, B( K, 1 ), LDB, CONE, A( K, 1 ), $ LDA ) CALL ZHER2K( UPLO, 'Conjugate transpose', K-1, KB, $ CONE, A( K, 1 ), LDA, B( K, 1 ), LDB, $ ONE, A, LDA ) CALL ZHEMM( 'Left', UPLO, KB, K-1, HALF, A( K, K ), $ LDA, B( K, 1 ), LDB, CONE, A( K, 1 ), $ LDA ) CALL ZTRMM( 'Left', UPLO, 'Conjugate transpose', $ 'Non-unit', KB, K-1, CONE, B( K, K ), LDB, $ A( K, 1 ), LDA ) CALL ZHEGS2( ITYPE, UPLO, KB, A( K, K ), LDA, $ B( K, K ), LDB, INFO ) 40 CONTINUE END IF END IF END IF RETURN * * End of ZHEGST * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dtrtri.f0000644002504400250440000000005012337331322016607 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dtrtri.f0000644002504400250440000001540712337331322017362 0ustar00dewhurstdewhurst00000000000000*> \brief \b DTRTRI * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DTRTRI + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DTRTRI( UPLO, DIAG, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER DIAG, UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DTRTRI computes the inverse of a real upper or lower triangular *> matrix A. *> *> This is the Level 3 BLAS version of the algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': A is upper triangular; *> = 'L': A is lower triangular. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> = 'N': A is non-unit triangular; *> = 'U': A is unit triangular. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the triangular matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of the array A contains *> the upper triangular matrix, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of the array A contains *> the lower triangular matrix, and the strictly upper *> triangular part of A is not referenced. If DIAG = 'U', the *> diagonal elements of A are also not referenced and are *> assumed to be 1. *> On exit, the (triangular) inverse of the original matrix, in *> the same storage format. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, A(i,i) is exactly zero. The triangular *> matrix is singular and its inverse can not be computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DTRTRI( UPLO, DIAG, N, A, LDA, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER DIAG, UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. LOGICAL NOUNIT, UPPER INTEGER J, JB, NB, NN * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL DTRMM, DTRSM, DTRTI2, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) NOUNIT = LSAME( DIAG, 'N' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DTRTRI', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Check for singularity if non-unit. * IF( NOUNIT ) THEN DO 10 INFO = 1, N IF( A( INFO, INFO ).EQ.ZERO ) $ RETURN 10 CONTINUE INFO = 0 END IF * * Determine the block size for this environment. * NB = ILAENV( 1, 'DTRTRI', UPLO // DIAG, N, -1, -1, -1 ) IF( NB.LE.1 .OR. NB.GE.N ) THEN * * Use unblocked code * CALL DTRTI2( UPLO, DIAG, N, A, LDA, INFO ) ELSE * * Use blocked code * IF( UPPER ) THEN * * Compute inverse of upper triangular matrix * DO 20 J = 1, N, NB JB = MIN( NB, N-J+1 ) * * Compute rows 1:j-1 of current block column * CALL DTRMM( 'Left', 'Upper', 'No transpose', DIAG, J-1, $ JB, ONE, A, LDA, A( 1, J ), LDA ) CALL DTRSM( 'Right', 'Upper', 'No transpose', DIAG, J-1, $ JB, -ONE, A( J, J ), LDA, A( 1, J ), LDA ) * * Compute inverse of current diagonal block * CALL DTRTI2( 'Upper', DIAG, JB, A( J, J ), LDA, INFO ) 20 CONTINUE ELSE * * Compute inverse of lower triangular matrix * NN = ( ( N-1 ) / NB )*NB + 1 DO 30 J = NN, 1, -NB JB = MIN( NB, N-J+1 ) IF( J+JB.LE.N ) THEN * * Compute rows j+jb:n of current block column * CALL DTRMM( 'Left', 'Lower', 'No transpose', DIAG, $ N-J-JB+1, JB, ONE, A( J+JB, J+JB ), LDA, $ A( J+JB, J ), LDA ) CALL DTRSM( 'Right', 'Lower', 'No transpose', DIAG, $ N-J-JB+1, JB, -ONE, A( J, J ), LDA, $ A( J+JB, J ), LDA ) END IF * * Compute inverse of current diagonal block * CALL DTRTI2( 'Lower', DIAG, JB, A( J, J ), LDA, INFO ) 30 CONTINUE END IF END IF * RETURN * * End of DTRTRI * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlacpy.f0000644002504400250440000000005012337331322016601 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlacpy.f0000644002504400250440000000777612337331322017366 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLACPY copies all or part of one two-dimensional array to another. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLACPY + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER LDA, LDB, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLACPY copies all or part of a two-dimensional matrix A to another *> matrix B. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies the part of the matrix A to be copied to B. *> = 'U': Upper triangular part *> = 'L': Lower triangular part *> Otherwise: All of the matrix A *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The m by n matrix A. If UPLO = 'U', only the upper trapezium *> is accessed; if UPLO = 'L', only the lower trapezium is *> accessed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[out] B *> \verbatim *> B is COMPLEX*16 array, dimension (LDB,N) *> On exit, B = A in the locations specified by UPLO. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * * ===================================================================== SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER LDA, LDB, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, J * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Intrinsic Functions .. INTRINSIC MIN * .. * .. Executable Statements .. * IF( LSAME( UPLO, 'U' ) ) THEN DO 20 J = 1, N DO 10 I = 1, MIN( J, M ) B( I, J ) = A( I, J ) 10 CONTINUE 20 CONTINUE * ELSE IF( LSAME( UPLO, 'L' ) ) THEN DO 40 J = 1, N DO 30 I = J, M B( I, J ) = A( I, J ) 30 CONTINUE 40 CONTINUE * ELSE DO 60 J = 1, N DO 50 I = 1, M B( I, J ) = A( I, J ) 50 CONTINUE 60 CONTINUE END IF * RETURN * * End of ZLACPY * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsytrd.f0000644002504400250440000000005012337331322016610 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsytrd.f0000644002504400250440000002636612337331322017371 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYTRD * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYTRD + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYTRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ), * $ WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYTRD reduces a real symmetric matrix A to real symmetric *> tridiagonal form T by an orthogonal similarity transformation: *> Q**T * A * Q = T. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> N-by-N upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> On exit, if UPLO = 'U', the diagonal and first superdiagonal *> of A are overwritten by the corresponding elements of the *> tridiagonal matrix T, and the elements above the first *> superdiagonal, with the array TAU, represent the orthogonal *> matrix Q as a product of elementary reflectors; if UPLO *> = 'L', the diagonal and first subdiagonal of A are over- *> written by the corresponding elements of the tridiagonal *> matrix T, and the elements below the first subdiagonal, with *> the array TAU, represent the orthogonal matrix Q as a product *> of elementary reflectors. See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). *> \endverbatim *> *> \param[out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= 1. *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(n-1) . . . H(2) H(1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**T *> *> where tau is a real scalar, and v is a real vector with *> v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in *> A(1:i-1,i+1), and tau in TAU(i). *> *> If UPLO = 'L', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(1) H(2) . . . H(n-1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**T *> *> where tau is a real scalar, and v is a real vector with *> v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i), *> and tau in TAU(i). *> *> The contents of A on exit are illustrated by the following examples *> with n = 5: *> *> if UPLO = 'U': if UPLO = 'L': *> *> ( d e v2 v3 v4 ) ( d ) *> ( d e v3 v4 ) ( e d ) *> ( d e v4 ) ( v1 e d ) *> ( d e ) ( v1 v2 e d ) *> ( d ) ( v1 v2 v3 e d ) *> *> where d and e denote diagonal and off-diagonal elements of T, and vi *> denotes an element of the vector defining H(i). *> \endverbatim *> * ===================================================================== SUBROUTINE DSYTRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), D( * ), E( * ), TAU( * ), $ WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL LQUERY, UPPER INTEGER I, IINFO, IWS, J, KK, LDWORK, LWKOPT, NB, $ NBMIN, NX * .. * .. External Subroutines .. EXTERNAL DLATRD, DSYR2K, DSYTD2, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 UPPER = LSAME( UPLO, 'U' ) LQUERY = ( LWORK.EQ.-1 ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN INFO = -9 END IF * IF( INFO.EQ.0 ) THEN * * Determine the block size. * NB = ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) LWKOPT = N*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYTRD', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NX = N IWS = 1 IF( NB.GT.1 .AND. NB.LT.N ) THEN * * Determine when to cross over from blocked to unblocked code * (last block is always handled by unblocked code). * NX = MAX( NB, ILAENV( 3, 'DSYTRD', UPLO, N, -1, -1, -1 ) ) IF( NX.LT.N ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: determine the * minimum value of NB, and reduce NB or force use of * unblocked code by setting NX = N. * NB = MAX( LWORK / LDWORK, 1 ) NBMIN = ILAENV( 2, 'DSYTRD', UPLO, N, -1, -1, -1 ) IF( NB.LT.NBMIN ) $ NX = N END IF ELSE NX = N END IF ELSE NB = 1 END IF * IF( UPPER ) THEN * * Reduce the upper triangle of A. * Columns 1:kk are handled by the unblocked method. * KK = N - ( ( N-NX+NB-1 ) / NB )*NB DO 20 I = N - NB + 1, KK + 1, -NB * * Reduce columns i:i+nb-1 to tridiagonal form and form the * matrix W which is needed to update the unreduced part of * the matrix * CALL DLATRD( UPLO, I+NB-1, NB, A, LDA, E, TAU, WORK, $ LDWORK ) * * Update the unreduced submatrix A(1:i-1,1:i-1), using an * update of the form: A := A - V*W**T - W*V**T * CALL DSYR2K( UPLO, 'No transpose', I-1, NB, -ONE, A( 1, I ), $ LDA, WORK, LDWORK, ONE, A, LDA ) * * Copy superdiagonal elements back into A, and diagonal * elements into D * DO 10 J = I, I + NB - 1 A( J-1, J ) = E( J-1 ) D( J ) = A( J, J ) 10 CONTINUE 20 CONTINUE * * Use unblocked code to reduce the last or only block * CALL DSYTD2( UPLO, KK, A, LDA, D, E, TAU, IINFO ) ELSE * * Reduce the lower triangle of A * DO 40 I = 1, N - NX, NB * * Reduce columns i:i+nb-1 to tridiagonal form and form the * matrix W which is needed to update the unreduced part of * the matrix * CALL DLATRD( UPLO, N-I+1, NB, A( I, I ), LDA, E( I ), $ TAU( I ), WORK, LDWORK ) * * Update the unreduced submatrix A(i+ib:n,i+ib:n), using * an update of the form: A := A - V*W**T - W*V**T * CALL DSYR2K( UPLO, 'No transpose', N-I-NB+1, NB, -ONE, $ A( I+NB, I ), LDA, WORK( NB+1 ), LDWORK, ONE, $ A( I+NB, I+NB ), LDA ) * * Copy subdiagonal elements back into A, and diagonal * elements into D * DO 30 J = I, I + NB - 1 A( J+1, J ) = E( J ) D( J ) = A( J, J ) 30 CONTINUE 40 CONTINUE * * Use unblocked code to reduce the last or only block * CALL DSYTD2( UPLO, N-I+1, A( I, I ), LDA, D( I ), E( I ), $ TAU( I ), IINFO ) END IF * WORK( 1 ) = LWKOPT RETURN * * End of DSYTRD * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/ilaenv.f0000644002504400250440000000005012337331322016555 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/ilaenv.f0000644002504400250440000004357212337331322017334 0ustar00dewhurstdewhurst00000000000000*> \brief \b ILAENV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ILAENV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) * * .. Scalar Arguments .. * CHARACTER*( * ) NAME, OPTS * INTEGER ISPEC, N1, N2, N3, N4 * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ILAENV is called from the LAPACK routines to choose problem-dependent *> parameters for the local environment. See ISPEC for a description of *> the parameters. *> *> ILAENV returns an INTEGER *> if ILAENV >= 0: ILAENV returns the value of the parameter specified by ISPEC *> if ILAENV < 0: if ILAENV = -k, the k-th argument had an illegal value. *> *> This version provides a set of parameters which should give good, *> but not optimal, performance on many of the currently available *> computers. Users are encouraged to modify this subroutine to set *> the tuning parameters for their particular machine using the option *> and problem size information in the arguments. *> *> This routine will not function correctly if it is converted to all *> lower case. Converting it to all upper case is allowed. *> \endverbatim * * Arguments: * ========== * *> \param[in] ISPEC *> \verbatim *> ISPEC is INTEGER *> Specifies the parameter to be returned as the value of *> ILAENV. *> = 1: the optimal blocksize; if this value is 1, an unblocked *> algorithm will give the best performance. *> = 2: the minimum block size for which the block routine *> should be used; if the usable block size is less than *> this value, an unblocked routine should be used. *> = 3: the crossover point (in a block routine, for N less *> than this value, an unblocked routine should be used) *> = 4: the number of shifts, used in the nonsymmetric *> eigenvalue routines (DEPRECATED) *> = 5: the minimum column dimension for blocking to be used; *> rectangular blocks must have dimension at least k by m, *> where k is given by ILAENV(2,...) and m by ILAENV(5,...) *> = 6: the crossover point for the SVD (when reducing an m by n *> matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds *> this value, a QR factorization is used first to reduce *> the matrix to a triangular form.) *> = 7: the number of processors *> = 8: the crossover point for the multishift QR method *> for nonsymmetric eigenvalue problems (DEPRECATED) *> = 9: maximum size of the subproblems at the bottom of the *> computation tree in the divide-and-conquer algorithm *> (used by xGELSD and xGESDD) *> =10: ieee NaN arithmetic can be trusted not to trap *> =11: infinity arithmetic can be trusted not to trap *> 12 <= ISPEC <= 16: *> xHSEQR or one of its subroutines, *> see IPARMQ for detailed explanation *> \endverbatim *> *> \param[in] NAME *> \verbatim *> NAME is CHARACTER*(*) *> The name of the calling subroutine, in either upper case or *> lower case. *> \endverbatim *> *> \param[in] OPTS *> \verbatim *> OPTS is CHARACTER*(*) *> The character options to the subroutine NAME, concatenated *> into a single character string. For example, UPLO = 'U', *> TRANS = 'T', and DIAG = 'N' for a triangular routine would *> be specified as OPTS = 'UTN'. *> \endverbatim *> *> \param[in] N1 *> \verbatim *> N1 is INTEGER *> \endverbatim *> *> \param[in] N2 *> \verbatim *> N2 is INTEGER *> \endverbatim *> *> \param[in] N3 *> \verbatim *> N3 is INTEGER *> \endverbatim *> *> \param[in] N4 *> \verbatim *> N4 is INTEGER *> Problem dimensions for the subroutine NAME; these may not all *> be required. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup auxOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> The following conventions have been used when calling ILAENV from the *> LAPACK routines: *> 1) OPTS is a concatenation of all of the character options to *> subroutine NAME, in the same order that they appear in the *> argument list for NAME, even if they are not used in determining *> the value of the parameter specified by ISPEC. *> 2) The problem dimensions N1, N2, N3, N4 are specified in the order *> that they appear in the argument list for NAME. N1 is used *> first, N2 second, and so on, and unused problem dimensions are *> passed a value of -1. *> 3) The parameter value returned by ILAENV is checked for validity in *> the calling subroutine. For example, ILAENV is used to retrieve *> the optimal blocksize for STRTRI as follows: *> *> NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 ) *> IF( NB.LE.1 ) NB = MAX( 1, N ) *> \endverbatim *> * ===================================================================== INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) * * -- LAPACK auxiliary routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER*( * ) NAME, OPTS INTEGER ISPEC, N1, N2, N3, N4 * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, IC, IZ, NB, NBMIN, NX LOGICAL CNAME, SNAME CHARACTER C1*1, C2*2, C4*2, C3*3, SUBNAM*6 * .. * .. Intrinsic Functions .. INTRINSIC CHAR, ICHAR, INT, MIN, REAL * .. * .. External Functions .. INTEGER IEEECK, IPARMQ EXTERNAL IEEECK, IPARMQ * .. * .. Executable Statements .. * GO TO ( 10, 10, 10, 80, 90, 100, 110, 120, $ 130, 140, 150, 160, 160, 160, 160, 160 )ISPEC * * Invalid value for ISPEC * ILAENV = -1 RETURN * 10 CONTINUE * * Convert NAME to upper case if the first character is lower case. * ILAENV = 1 SUBNAM = NAME IC = ICHAR( SUBNAM( 1: 1 ) ) IZ = ICHAR( 'Z' ) IF( IZ.EQ.90 .OR. IZ.EQ.122 ) THEN * * ASCII character set * IF( IC.GE.97 .AND. IC.LE.122 ) THEN SUBNAM( 1: 1 ) = CHAR( IC-32 ) DO 20 I = 2, 6 IC = ICHAR( SUBNAM( I: I ) ) IF( IC.GE.97 .AND. IC.LE.122 ) $ SUBNAM( I: I ) = CHAR( IC-32 ) 20 CONTINUE END IF * ELSE IF( IZ.EQ.233 .OR. IZ.EQ.169 ) THEN * * EBCDIC character set * IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR. $ ( IC.GE.145 .AND. IC.LE.153 ) .OR. $ ( IC.GE.162 .AND. IC.LE.169 ) ) THEN SUBNAM( 1: 1 ) = CHAR( IC+64 ) DO 30 I = 2, 6 IC = ICHAR( SUBNAM( I: I ) ) IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR. $ ( IC.GE.145 .AND. IC.LE.153 ) .OR. $ ( IC.GE.162 .AND. IC.LE.169 ) )SUBNAM( I: $ I ) = CHAR( IC+64 ) 30 CONTINUE END IF * ELSE IF( IZ.EQ.218 .OR. IZ.EQ.250 ) THEN * * Prime machines: ASCII+128 * IF( IC.GE.225 .AND. IC.LE.250 ) THEN SUBNAM( 1: 1 ) = CHAR( IC-32 ) DO 40 I = 2, 6 IC = ICHAR( SUBNAM( I: I ) ) IF( IC.GE.225 .AND. IC.LE.250 ) $ SUBNAM( I: I ) = CHAR( IC-32 ) 40 CONTINUE END IF END IF * C1 = SUBNAM( 1: 1 ) SNAME = C1.EQ.'S' .OR. C1.EQ.'D' CNAME = C1.EQ.'C' .OR. C1.EQ.'Z' IF( .NOT.( CNAME .OR. SNAME ) ) $ RETURN C2 = SUBNAM( 2: 3 ) C3 = SUBNAM( 4: 6 ) C4 = C3( 2: 3 ) * GO TO ( 50, 60, 70 )ISPEC * 50 CONTINUE * * ISPEC = 1: block size * * In these examples, separate code is provided for setting NB for * real and complex. We assume that NB will take the same value in * single or double precision. * NB = 1 * IF( C2.EQ.'GE' ) THEN IF( C3.EQ.'TRF' ) THEN IF( SNAME ) THEN NB = 64 ELSE NB = 64 END IF ELSE IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. $ C3.EQ.'QLF' ) THEN IF( SNAME ) THEN NB = 32 ELSE NB = 32 END IF ELSE IF( C3.EQ.'HRD' ) THEN IF( SNAME ) THEN NB = 32 ELSE NB = 32 END IF ELSE IF( C3.EQ.'BRD' ) THEN IF( SNAME ) THEN NB = 32 ELSE NB = 32 END IF ELSE IF( C3.EQ.'TRI' ) THEN IF( SNAME ) THEN NB = 64 ELSE NB = 64 END IF END IF ELSE IF( C2.EQ.'PO' ) THEN IF( C3.EQ.'TRF' ) THEN IF( SNAME ) THEN NB = 64 ELSE NB = 64 END IF END IF ELSE IF( C2.EQ.'SY' ) THEN IF( C3.EQ.'TRF' ) THEN IF( SNAME ) THEN NB = 64 ELSE NB = 64 END IF ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN NB = 32 ELSE IF( SNAME .AND. C3.EQ.'GST' ) THEN NB = 64 END IF ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN IF( C3.EQ.'TRF' ) THEN NB = 64 ELSE IF( C3.EQ.'TRD' ) THEN NB = 32 ELSE IF( C3.EQ.'GST' ) THEN NB = 64 END IF ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN IF( C3( 1: 1 ).EQ.'G' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NB = 32 END IF ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NB = 32 END IF END IF ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN IF( C3( 1: 1 ).EQ.'G' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NB = 32 END IF ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NB = 32 END IF END IF ELSE IF( C2.EQ.'GB' ) THEN IF( C3.EQ.'TRF' ) THEN IF( SNAME ) THEN IF( N4.LE.64 ) THEN NB = 1 ELSE NB = 32 END IF ELSE IF( N4.LE.64 ) THEN NB = 1 ELSE NB = 32 END IF END IF END IF ELSE IF( C2.EQ.'PB' ) THEN IF( C3.EQ.'TRF' ) THEN IF( SNAME ) THEN IF( N2.LE.64 ) THEN NB = 1 ELSE NB = 32 END IF ELSE IF( N2.LE.64 ) THEN NB = 1 ELSE NB = 32 END IF END IF END IF ELSE IF( C2.EQ.'TR' ) THEN IF( C3.EQ.'TRI' ) THEN IF( SNAME ) THEN NB = 64 ELSE NB = 64 END IF END IF ELSE IF( C2.EQ.'LA' ) THEN IF( C3.EQ.'UUM' ) THEN IF( SNAME ) THEN NB = 64 ELSE NB = 64 END IF END IF ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN IF( C3.EQ.'EBZ' ) THEN NB = 1 END IF END IF ILAENV = NB RETURN * 60 CONTINUE * * ISPEC = 2: minimum block size * NBMIN = 2 IF( C2.EQ.'GE' ) THEN IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. C3.EQ. $ 'QLF' ) THEN IF( SNAME ) THEN NBMIN = 2 ELSE NBMIN = 2 END IF ELSE IF( C3.EQ.'HRD' ) THEN IF( SNAME ) THEN NBMIN = 2 ELSE NBMIN = 2 END IF ELSE IF( C3.EQ.'BRD' ) THEN IF( SNAME ) THEN NBMIN = 2 ELSE NBMIN = 2 END IF ELSE IF( C3.EQ.'TRI' ) THEN IF( SNAME ) THEN NBMIN = 2 ELSE NBMIN = 2 END IF END IF ELSE IF( C2.EQ.'SY' ) THEN IF( C3.EQ.'TRF' ) THEN IF( SNAME ) THEN NBMIN = 8 ELSE NBMIN = 8 END IF ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN NBMIN = 2 END IF ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN IF( C3.EQ.'TRD' ) THEN NBMIN = 2 END IF ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN IF( C3( 1: 1 ).EQ.'G' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NBMIN = 2 END IF ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NBMIN = 2 END IF END IF ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN IF( C3( 1: 1 ).EQ.'G' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NBMIN = 2 END IF ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NBMIN = 2 END IF END IF END IF ILAENV = NBMIN RETURN * 70 CONTINUE * * ISPEC = 3: crossover point * NX = 0 IF( C2.EQ.'GE' ) THEN IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. C3.EQ. $ 'QLF' ) THEN IF( SNAME ) THEN NX = 128 ELSE NX = 128 END IF ELSE IF( C3.EQ.'HRD' ) THEN IF( SNAME ) THEN NX = 128 ELSE NX = 128 END IF ELSE IF( C3.EQ.'BRD' ) THEN IF( SNAME ) THEN NX = 128 ELSE NX = 128 END IF END IF ELSE IF( C2.EQ.'SY' ) THEN IF( SNAME .AND. C3.EQ.'TRD' ) THEN NX = 32 END IF ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN IF( C3.EQ.'TRD' ) THEN NX = 32 END IF ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN IF( C3( 1: 1 ).EQ.'G' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NX = 128 END IF END IF ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN IF( C3( 1: 1 ).EQ.'G' ) THEN IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' ) $ THEN NX = 128 END IF END IF END IF ILAENV = NX RETURN * 80 CONTINUE * * ISPEC = 4: number of shifts (used by xHSEQR) * ILAENV = 6 RETURN * 90 CONTINUE * * ISPEC = 5: minimum column dimension (not used) * ILAENV = 2 RETURN * 100 CONTINUE * * ISPEC = 6: crossover point for SVD (used by xGELSS and xGESVD) * ILAENV = INT( REAL( MIN( N1, N2 ) )*1.6E0 ) RETURN * 110 CONTINUE * * ISPEC = 7: number of processors (not used) * ILAENV = 1 RETURN * 120 CONTINUE * * ISPEC = 8: crossover point for multishift (used by xHSEQR) * ILAENV = 50 RETURN * 130 CONTINUE * * ISPEC = 9: maximum size of the subproblems at the bottom of the * computation tree in the divide-and-conquer algorithm * (used by xGELSD and xGESDD) * ILAENV = 25 RETURN * 140 CONTINUE * * ISPEC = 10: ieee NaN arithmetic can be trusted not to trap * * ILAENV = 0 ILAENV = 1 IF( ILAENV.EQ.1 ) THEN ILAENV = IEEECK( 1, 0.0, 1.0 ) END IF RETURN * 150 CONTINUE * * ISPEC = 11: infinity arithmetic can be trusted not to trap * * ILAENV = 0 ILAENV = 1 IF( ILAENV.EQ.1 ) THEN ILAENV = IEEECK( 0, 0.0, 1.0 ) END IF RETURN * 160 CONTINUE * * 12 <= ISPEC <= 16: xHSEQR or one of its subroutines. * ILAENV = IPARMQ( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) RETURN * * End of ILAENV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlamch.f0000644002504400250440000000005012337331322016527 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlamch.f0000644002504400250440000000672312337331322017303 0ustar00dewhurstdewhurst00000000000000 FUNCTION DLAMCH ( CMACH ) RESULT(RMACH) ! ! -- LAPACK auxiliary routine Replacement for DLAMCH.f ! use Fortran 90 Machine Parameter built-in functions. ! character(len=1) :: CMACH real(kind(1.d0)) :: xdbl, ydbl, RMACH ! ! Purpose ! ======= ! ! ! DLAMCH determines double precision machine parameters. ! ! Arguments ! ========= ! ! CMACH (input) CHARACTER*1 ! Specifies the value to be returned by DLAMCH: ! = 'E' or 'e', DLAMCH := eps ! = 'S' or 's , DLAMCH := sfmin ! = 'B' or 'b', DLAMCH := base ! = 'P' or 'p', DLAMCH := eps*base ! = 'N' or 'n', DLAMCH := t ! = 'R' or 'r', DLAMCH := rnd ! = 'M' or 'm', DLAMCH := emin ! = 'U' or 'u', DLAMCH := rmin ! = 'L' or 'l', DLAMCH := emax ! = 'O' or 'o', DLAMCH := rmax ! ! where ! ! ! ===================================================================== xdbl=1.d0 IF( CMACH == 'E' .or. CMACH == 'e' ) THEN ! eps = relative machine precision RMACH = Epsilon(xdbl) ELSE IF( CMACH == 'S' .or. CMACH == 's' ) THEN ! sfmin = safe minimum, such that 1/sfmin does not overflow RMACH = Tiny(xdbl) ELSE IF( CMACH == 'B' .or. CMACH == 'b' ) THEN ! base = base of the machine RMACH = Radix(xdbl) ELSE IF( CMACH == 'P' .or. CMACH == 'p' ) THEN ! prec = eps*base RMACH = Radix(xdbl)*Epsilon(xdbl) ELSE IF( CMACH == 'N' .or. CMACH == 'n' ) THEN ! t = number of (base) digits in the mantissa RMACH = Digits(xdbl) ELSE IF( CMACH == 'R' .or. CMACH == 'r' ) THEN ! rnd = 1.0 when rounding occurs in addition, 0.0 otherwise ! Assume rounding (IEEE). RMACH = 1.0 ELSE IF( CMACH == 'M' .or. CMACH == 'm' ) THEN ! emin = minimum exponent before (gradual) underflow RMACH = Minexponent(xdbl) ELSE IF( CMACH == 'U' .or. CMACH == 'u' ) THEN ! rmin = underflow threshold - base**(emin-1) RMACH = Tiny(xdbl) ELSE IF( CMACH == 'L' .or. CMACH == 'l' ) THEN ! emax = largest exponent before overflow RMACH = Maxexponent(xdbl) ELSE IF( CMACH == 'O' .or. CMACH == 'o' ) THEN ! rmax = overflow threshold - (base**emax)*(1-eps) RMACH = Huge(xdbl) END IF ! END * ************************************************************************ * DOUBLE PRECISION FUNCTION DLAMC3( A, B ) * * -- LAPACK auxiliary routine (version 3.1) -- * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. * November 2006 * * .. Scalar Arguments .. DOUBLE PRECISION A, B * * .. Local variables .. INTEGER I DOUBLE PRECISION X(10),Y(10) * .. * * Purpose * ======= * * DLAMC3 is intended to force A and B to be stored prior to doing * the addition of A and B , for use in situations where optimizers * might hold one of these in a register. * * Arguments * ========= * * A (input) DOUBLE PRECISION * B (input) DOUBLE PRECISION * The values A and B. * * ===================================================================== * * .. Executable Statements .. * * DLAMC3 = A + B * Modification by JKD to ensure variables are flushed to memory DO I=1,10 X(I)=A END DO DO I=1,10 Y(I)=X(I)+B END DO DLAMC3=Y(10) * RETURN * * End of DLAMC3 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dstein.f0000644002504400250440000000005012337331322016565 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dstein.f0000644002504400250440000003212012337331322017327 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSTEIN * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSTEIN + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, * IWORK, IFAIL, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDZ, M, N * .. * .. Array Arguments .. * INTEGER IBLOCK( * ), IFAIL( * ), ISPLIT( * ), * $ IWORK( * ) * DOUBLE PRECISION D( * ), E( * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSTEIN computes the eigenvectors of a real symmetric tridiagonal *> matrix T corresponding to specified eigenvalues, using inverse *> iteration. *> *> The maximum number of iterations allowed for each eigenvector is *> specified by an internal parameter MAXITS (currently set to 5). *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix. N >= 0. *> \endverbatim *> *> \param[in] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The n diagonal elements of the tridiagonal matrix T. *> \endverbatim *> *> \param[in] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The (n-1) subdiagonal elements of the tridiagonal matrix *> T, in elements 1 to N-1. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of eigenvectors to be found. 0 <= M <= N. *> \endverbatim *> *> \param[in] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> The first M elements of W contain the eigenvalues for *> which eigenvectors are to be computed. The eigenvalues *> should be grouped by split-off block and ordered from *> smallest to largest within the block. ( The output array *> W from DSTEBZ with ORDER = 'B' is expected here. ) *> \endverbatim *> *> \param[in] IBLOCK *> \verbatim *> IBLOCK is INTEGER array, dimension (N) *> The submatrix indices associated with the corresponding *> eigenvalues in W; IBLOCK(i)=1 if eigenvalue W(i) belongs to *> the first submatrix from the top, =2 if W(i) belongs to *> the second submatrix, etc. ( The output array IBLOCK *> from DSTEBZ is expected here. ) *> \endverbatim *> *> \param[in] ISPLIT *> \verbatim *> ISPLIT is INTEGER array, dimension (N) *> The splitting points, at which T breaks up into submatrices. *> The first submatrix consists of rows/columns 1 to *> ISPLIT( 1 ), the second of rows/columns ISPLIT( 1 )+1 *> through ISPLIT( 2 ), etc. *> ( The output array ISPLIT from DSTEBZ is expected here. ) *> \endverbatim *> *> \param[out] Z *> \verbatim *> Z is DOUBLE PRECISION array, dimension (LDZ, M) *> The computed eigenvectors. The eigenvector associated *> with the eigenvalue W(i) is stored in the i-th column of *> Z. Any vector which fails to converge is set to its current *> iterate after MAXITS iterations. *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. LDZ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (5*N) *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (N) *> \endverbatim *> *> \param[out] IFAIL *> \verbatim *> IFAIL is INTEGER array, dimension (M) *> On normal exit, all elements of IFAIL are zero. *> If one or more eigenvectors fail to converge after *> MAXITS iterations, then their indices are stored in *> array IFAIL. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, then i eigenvectors failed to converge *> in MAXITS iterations. Their indices are stored in *> array IFAIL. *> \endverbatim * *> \par Internal Parameters: * ========================= *> *> \verbatim *> MAXITS INTEGER, default = 5 *> The maximum number of iterations performed. *> *> EXTRA INTEGER, default = 2 *> The number of iterations performed after norm growth *> criterion is satisfied, should be at least 1. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK, $ IWORK, IFAIL, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, LDZ, M, N * .. * .. Array Arguments .. INTEGER IBLOCK( * ), IFAIL( * ), ISPLIT( * ), $ IWORK( * ) DOUBLE PRECISION D( * ), E( * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE, TEN, ODM3, ODM1 PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, TEN = 1.0D+1, $ ODM3 = 1.0D-3, ODM1 = 1.0D-1 ) INTEGER MAXITS, EXTRA PARAMETER ( MAXITS = 5, EXTRA = 2 ) * .. * .. Local Scalars .. INTEGER B1, BLKSIZ, BN, GPIND, I, IINFO, INDRV1, $ INDRV2, INDRV3, INDRV4, INDRV5, ITS, J, J1, $ JBLK, JMAX, NBLK, NRMCHK DOUBLE PRECISION DTPCRT, EPS, EPS1, NRM, ONENRM, ORTOL, PERTOL, $ SCL, SEP, TOL, XJ, XJM, ZTR * .. * .. Local Arrays .. INTEGER ISEED( 4 ) * .. * .. External Functions .. INTEGER IDAMAX DOUBLE PRECISION DASUM, DDOT, DLAMCH, DNRM2 EXTERNAL IDAMAX, DASUM, DDOT, DLAMCH, DNRM2 * .. * .. External Subroutines .. EXTERNAL DAXPY, DCOPY, DLAGTF, DLAGTS, DLARNV, DSCAL, $ XERBLA * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 DO 10 I = 1, M IFAIL( I ) = 0 10 CONTINUE * IF( N.LT.0 ) THEN INFO = -1 ELSE IF( M.LT.0 .OR. M.GT.N ) THEN INFO = -4 ELSE IF( LDZ.LT.MAX( 1, N ) ) THEN INFO = -9 ELSE DO 20 J = 2, M IF( IBLOCK( J ).LT.IBLOCK( J-1 ) ) THEN INFO = -6 GO TO 30 END IF IF( IBLOCK( J ).EQ.IBLOCK( J-1 ) .AND. W( J ).LT.W( J-1 ) ) $ THEN INFO = -5 GO TO 30 END IF 20 CONTINUE 30 CONTINUE END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSTEIN', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 .OR. M.EQ.0 ) THEN RETURN ELSE IF( N.EQ.1 ) THEN Z( 1, 1 ) = ONE RETURN END IF * * Get machine constants. * EPS = DLAMCH( 'Precision' ) * * Initialize seed for random number generator DLARNV. * DO 40 I = 1, 4 ISEED( I ) = 1 40 CONTINUE * * Initialize pointers. * INDRV1 = 0 INDRV2 = INDRV1 + N INDRV3 = INDRV2 + N INDRV4 = INDRV3 + N INDRV5 = INDRV4 + N * * Compute eigenvectors of matrix blocks. * J1 = 1 DO 160 NBLK = 1, IBLOCK( M ) * * Find starting and ending indices of block nblk. * IF( NBLK.EQ.1 ) THEN B1 = 1 ELSE B1 = ISPLIT( NBLK-1 ) + 1 END IF BN = ISPLIT( NBLK ) BLKSIZ = BN - B1 + 1 IF( BLKSIZ.EQ.1 ) $ GO TO 60 GPIND = B1 * * Compute reorthogonalization criterion and stopping criterion. * ONENRM = ABS( D( B1 ) ) + ABS( E( B1 ) ) ONENRM = MAX( ONENRM, ABS( D( BN ) )+ABS( E( BN-1 ) ) ) DO 50 I = B1 + 1, BN - 1 ONENRM = MAX( ONENRM, ABS( D( I ) )+ABS( E( I-1 ) )+ $ ABS( E( I ) ) ) 50 CONTINUE ORTOL = ODM3*ONENRM * DTPCRT = SQRT( ODM1 / BLKSIZ ) * * Loop through eigenvalues of block nblk. * 60 CONTINUE JBLK = 0 DO 150 J = J1, M IF( IBLOCK( J ).NE.NBLK ) THEN J1 = J GO TO 160 END IF JBLK = JBLK + 1 XJ = W( J ) * * Skip all the work if the block size is one. * IF( BLKSIZ.EQ.1 ) THEN WORK( INDRV1+1 ) = ONE GO TO 120 END IF * * If eigenvalues j and j-1 are too close, add a relatively * small perturbation. * IF( JBLK.GT.1 ) THEN EPS1 = ABS( EPS*XJ ) PERTOL = TEN*EPS1 SEP = XJ - XJM IF( SEP.LT.PERTOL ) $ XJ = XJM + PERTOL END IF * ITS = 0 NRMCHK = 0 * * Get random starting vector. * CALL DLARNV( 2, ISEED, BLKSIZ, WORK( INDRV1+1 ) ) * * Copy the matrix T so it won't be destroyed in factorization. * CALL DCOPY( BLKSIZ, D( B1 ), 1, WORK( INDRV4+1 ), 1 ) CALL DCOPY( BLKSIZ-1, E( B1 ), 1, WORK( INDRV2+2 ), 1 ) CALL DCOPY( BLKSIZ-1, E( B1 ), 1, WORK( INDRV3+1 ), 1 ) * * Compute LU factors with partial pivoting ( PT = LU ) * TOL = ZERO CALL DLAGTF( BLKSIZ, WORK( INDRV4+1 ), XJ, WORK( INDRV2+2 ), $ WORK( INDRV3+1 ), TOL, WORK( INDRV5+1 ), IWORK, $ IINFO ) * * Update iteration count. * 70 CONTINUE ITS = ITS + 1 IF( ITS.GT.MAXITS ) $ GO TO 100 * * Normalize and scale the righthand side vector Pb. * SCL = BLKSIZ*ONENRM*MAX( EPS, $ ABS( WORK( INDRV4+BLKSIZ ) ) ) / $ DASUM( BLKSIZ, WORK( INDRV1+1 ), 1 ) CALL DSCAL( BLKSIZ, SCL, WORK( INDRV1+1 ), 1 ) * * Solve the system LU = Pb. * CALL DLAGTS( -1, BLKSIZ, WORK( INDRV4+1 ), WORK( INDRV2+2 ), $ WORK( INDRV3+1 ), WORK( INDRV5+1 ), IWORK, $ WORK( INDRV1+1 ), TOL, IINFO ) * * Reorthogonalize by modified Gram-Schmidt if eigenvalues are * close enough. * IF( JBLK.EQ.1 ) $ GO TO 90 IF( ABS( XJ-XJM ).GT.ORTOL ) $ GPIND = J IF( GPIND.NE.J ) THEN DO 80 I = GPIND, J - 1 ZTR = -DDOT( BLKSIZ, WORK( INDRV1+1 ), 1, Z( B1, I ), $ 1 ) CALL DAXPY( BLKSIZ, ZTR, Z( B1, I ), 1, $ WORK( INDRV1+1 ), 1 ) 80 CONTINUE END IF * * Check the infinity norm of the iterate. * 90 CONTINUE JMAX = IDAMAX( BLKSIZ, WORK( INDRV1+1 ), 1 ) NRM = ABS( WORK( INDRV1+JMAX ) ) * * Continue for additional iterations after norm reaches * stopping criterion. * IF( NRM.LT.DTPCRT ) $ GO TO 70 NRMCHK = NRMCHK + 1 IF( NRMCHK.LT.EXTRA+1 ) $ GO TO 70 * GO TO 110 * * If stopping criterion was not satisfied, update info and * store eigenvector number in array ifail. * 100 CONTINUE INFO = INFO + 1 IFAIL( INFO ) = J * * Accept iterate as jth eigenvector. * 110 CONTINUE SCL = ONE / DNRM2( BLKSIZ, WORK( INDRV1+1 ), 1 ) JMAX = IDAMAX( BLKSIZ, WORK( INDRV1+1 ), 1 ) IF( WORK( INDRV1+JMAX ).LT.ZERO ) $ SCL = -SCL CALL DSCAL( BLKSIZ, SCL, WORK( INDRV1+1 ), 1 ) 120 CONTINUE DO 130 I = 1, N Z( I, J ) = ZERO 130 CONTINUE DO 140 I = 1, BLKSIZ Z( B1+I-1, J ) = WORK( INDRV1+I ) 140 CONTINUE * * Save the shift to check eigenvalue spacing at next * iteration. * XJM = XJ * 150 CONTINUE 160 CONTINUE * RETURN * * End of DSTEIN * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhptrd.f0000644002504400250440000000005012337331322016612 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhptrd.f0000644002504400250440000002165012337331322017362 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHPTRD * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHPTRD + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHPTRD( UPLO, N, AP, D, E, TAU, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, N * .. * .. Array Arguments .. * DOUBLE PRECISION D( * ), E( * ) * COMPLEX*16 AP( * ), TAU( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHPTRD reduces a complex Hermitian matrix A stored in packed form to *> real symmetric tridiagonal form T by a unitary similarity *> transformation: Q**H * A * Q = T. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] AP *> \verbatim *> AP is COMPLEX*16 array, dimension (N*(N+1)/2) *> On entry, the upper or lower triangle of the Hermitian matrix *> A, packed columnwise in a linear array. The j-th column of A *> is stored in the array AP as follows: *> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; *> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. *> On exit, if UPLO = 'U', the diagonal and first superdiagonal *> of A are overwritten by the corresponding elements of the *> tridiagonal matrix T, and the elements above the first *> superdiagonal, with the array TAU, represent the unitary *> matrix Q as a product of elementary reflectors; if UPLO *> = 'L', the diagonal and first subdiagonal of A are over- *> written by the corresponding elements of the tridiagonal *> matrix T, and the elements below the first subdiagonal, with *> the array TAU, represent the unitary matrix Q as a product *> of elementary reflectors. See Further Details. *> \endverbatim *> *> \param[out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). *> \endverbatim *> *> \param[out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(n-1) . . . H(2) H(1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in AP, *> overwriting A(1:i-1,i+1), and tau is stored in TAU(i). *> *> If UPLO = 'L', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(1) H(2) . . . H(n-1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in AP, *> overwriting A(i+2:n,i), and tau is stored in TAU(i). *> \endverbatim *> * ===================================================================== SUBROUTINE ZHPTRD( UPLO, N, AP, D, E, TAU, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, N * .. * .. Array Arguments .. DOUBLE PRECISION D( * ), E( * ) COMPLEX*16 AP( * ), TAU( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE, ZERO, HALF PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ), $ ZERO = ( 0.0D+0, 0.0D+0 ), $ HALF = ( 0.5D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER I, I1, I1I1, II COMPLEX*16 ALPHA, TAUI * .. * .. External Subroutines .. EXTERNAL XERBLA, ZAXPY, ZHPMV, ZHPR2, ZLARFG * .. * .. External Functions .. LOGICAL LSAME COMPLEX*16 ZDOTC EXTERNAL LSAME, ZDOTC * .. * .. Intrinsic Functions .. INTRINSIC DBLE * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHPTRD', -INFO ) RETURN END IF * * Quick return if possible * IF( N.LE.0 ) $ RETURN * IF( UPPER ) THEN * * Reduce the upper triangle of A. * I1 is the index in AP of A(1,I+1). * I1 = N*( N-1 ) / 2 + 1 AP( I1+N-1 ) = DBLE( AP( I1+N-1 ) ) DO 10 I = N - 1, 1, -1 * * Generate elementary reflector H(i) = I - tau * v * v**H * to annihilate A(1:i-1,i+1) * ALPHA = AP( I1+I-1 ) CALL ZLARFG( I, ALPHA, AP( I1 ), 1, TAUI ) E( I ) = ALPHA * IF( TAUI.NE.ZERO ) THEN * * Apply H(i) from both sides to A(1:i,1:i) * AP( I1+I-1 ) = ONE * * Compute y := tau * A * v storing y in TAU(1:i) * CALL ZHPMV( UPLO, I, TAUI, AP, AP( I1 ), 1, ZERO, TAU, $ 1 ) * * Compute w := y - 1/2 * tau * (y**H *v) * v * ALPHA = -HALF*TAUI*ZDOTC( I, TAU, 1, AP( I1 ), 1 ) CALL ZAXPY( I, ALPHA, AP( I1 ), 1, TAU, 1 ) * * Apply the transformation as a rank-2 update: * A := A - v * w**H - w * v**H * CALL ZHPR2( UPLO, I, -ONE, AP( I1 ), 1, TAU, 1, AP ) * END IF AP( I1+I-1 ) = E( I ) D( I+1 ) = AP( I1+I ) TAU( I ) = TAUI I1 = I1 - I 10 CONTINUE D( 1 ) = AP( 1 ) ELSE * * Reduce the lower triangle of A. II is the index in AP of * A(i,i) and I1I1 is the index of A(i+1,i+1). * II = 1 AP( 1 ) = DBLE( AP( 1 ) ) DO 20 I = 1, N - 1 I1I1 = II + N - I + 1 * * Generate elementary reflector H(i) = I - tau * v * v**H * to annihilate A(i+2:n,i) * ALPHA = AP( II+1 ) CALL ZLARFG( N-I, ALPHA, AP( II+2 ), 1, TAUI ) E( I ) = ALPHA * IF( TAUI.NE.ZERO ) THEN * * Apply H(i) from both sides to A(i+1:n,i+1:n) * AP( II+1 ) = ONE * * Compute y := tau * A * v storing y in TAU(i:n-1) * CALL ZHPMV( UPLO, N-I, TAUI, AP( I1I1 ), AP( II+1 ), 1, $ ZERO, TAU( I ), 1 ) * * Compute w := y - 1/2 * tau * (y**H *v) * v * ALPHA = -HALF*TAUI*ZDOTC( N-I, TAU( I ), 1, AP( II+1 ), $ 1 ) CALL ZAXPY( N-I, ALPHA, AP( II+1 ), 1, TAU( I ), 1 ) * * Apply the transformation as a rank-2 update: * A := A - v * w**H - w * v**H * CALL ZHPR2( UPLO, N-I, -ONE, AP( II+1 ), 1, TAU( I ), 1, $ AP( I1I1 ) ) * END IF AP( II+1 ) = E( I ) D( I ) = AP( II ) TAU( I ) = TAUI II = I1I1 20 CONTINUE D( N ) = AP( II ) END IF * RETURN * * End of ZHPTRD * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlatrd.f0000644002504400250440000000005012337331322016551 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlatrd.f0000644002504400250440000002660212337331322017323 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an orthogonal similarity transformation. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLATRD + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER LDA, LDW, N, NB * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), E( * ), TAU( * ), W( LDW, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLATRD reduces NB rows and columns of a real symmetric matrix A to *> symmetric tridiagonal form by an orthogonal similarity *> transformation Q**T * A * Q, and returns the matrices V and W which are *> needed to apply the transformation to the unreduced part of A. *> *> If UPLO = 'U', DLATRD reduces the last NB rows and columns of a *> matrix, of which the upper triangle is supplied; *> if UPLO = 'L', DLATRD reduces the first NB rows and columns of a *> matrix, of which the lower triangle is supplied. *> *> This is an auxiliary routine called by DSYTRD. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> symmetric matrix A is stored: *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. *> \endverbatim *> *> \param[in] NB *> \verbatim *> NB is INTEGER *> The number of rows and columns to be reduced. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the symmetric matrix A. If UPLO = 'U', the leading *> n-by-n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n-by-n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> On exit: *> if UPLO = 'U', the last NB columns have been reduced to *> tridiagonal form, with the diagonal elements overwriting *> the diagonal elements of A; the elements above the diagonal *> with the array TAU, represent the orthogonal matrix Q as a *> product of elementary reflectors; *> if UPLO = 'L', the first NB columns have been reduced to *> tridiagonal form, with the diagonal elements overwriting *> the diagonal elements of A; the elements below the diagonal *> with the array TAU, represent the orthogonal matrix Q as a *> product of elementary reflectors. *> See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= (1,N). *> \endverbatim *> *> \param[out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal *> elements of the last NB columns of the reduced matrix; *> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of *> the first NB columns of the reduced matrix. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (N-1) *> The scalar factors of the elementary reflectors, stored in *> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'. *> See Further Details. *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (LDW,NB) *> The n-by-nb matrix W required to update the unreduced part *> of A. *> \endverbatim *> *> \param[in] LDW *> \verbatim *> LDW is INTEGER *> The leading dimension of the array W. LDW >= max(1,N). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(n) H(n-1) . . . H(n-nb+1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**T *> *> where tau is a real scalar, and v is a real vector with *> v(i:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i), *> and tau in TAU(i-1). *> *> If UPLO = 'L', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(1) H(2) . . . H(nb). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**T *> *> where tau is a real scalar, and v is a real vector with *> v(1:i) = 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), *> and tau in TAU(i). *> *> The elements of the vectors v together form the n-by-nb matrix V *> which is needed, with W, to apply the transformation to the unreduced *> part of the matrix, using a symmetric rank-2k update of the form: *> A := A - V*W**T - W*V**T. *> *> The contents of A on exit are illustrated by the following examples *> with n = 5 and nb = 2: *> *> if UPLO = 'U': if UPLO = 'L': *> *> ( a a a v4 v5 ) ( d ) *> ( a a v4 v5 ) ( 1 d ) *> ( a 1 v5 ) ( v1 1 a ) *> ( d 1 ) ( v1 v2 a a ) *> ( d ) ( v1 v2 a a a ) *> *> where d denotes a diagonal element of the reduced matrix, a denotes *> an element of the original matrix that is unchanged, and vi denotes *> an element of the vector defining H(i). *> \endverbatim *> * ===================================================================== SUBROUTINE DLATRD( UPLO, N, NB, A, LDA, E, TAU, W, LDW ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER LDA, LDW, N, NB * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), E( * ), TAU( * ), W( LDW, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE, HALF PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0, HALF = 0.5D+0 ) * .. * .. Local Scalars .. INTEGER I, IW DOUBLE PRECISION ALPHA * .. * .. External Subroutines .. EXTERNAL DAXPY, DGEMV, DLARFG, DSCAL, DSYMV * .. * .. External Functions .. LOGICAL LSAME DOUBLE PRECISION DDOT EXTERNAL LSAME, DDOT * .. * .. Intrinsic Functions .. INTRINSIC MIN * .. * .. Executable Statements .. * * Quick return if possible * IF( N.LE.0 ) $ RETURN * IF( LSAME( UPLO, 'U' ) ) THEN * * Reduce last NB columns of upper triangle * DO 10 I = N, N - NB + 1, -1 IW = I - N + NB IF( I.LT.N ) THEN * * Update A(1:i,i) * CALL DGEMV( 'No transpose', I, N-I, -ONE, A( 1, I+1 ), $ LDA, W( I, IW+1 ), LDW, ONE, A( 1, I ), 1 ) CALL DGEMV( 'No transpose', I, N-I, -ONE, W( 1, IW+1 ), $ LDW, A( I, I+1 ), LDA, ONE, A( 1, I ), 1 ) END IF IF( I.GT.1 ) THEN * * Generate elementary reflector H(i) to annihilate * A(1:i-2,i) * CALL DLARFG( I-1, A( I-1, I ), A( 1, I ), 1, TAU( I-1 ) ) E( I-1 ) = A( I-1, I ) A( I-1, I ) = ONE * * Compute W(1:i-1,i) * CALL DSYMV( 'Upper', I-1, ONE, A, LDA, A( 1, I ), 1, $ ZERO, W( 1, IW ), 1 ) IF( I.LT.N ) THEN CALL DGEMV( 'Transpose', I-1, N-I, ONE, W( 1, IW+1 ), $ LDW, A( 1, I ), 1, ZERO, W( I+1, IW ), 1 ) CALL DGEMV( 'No transpose', I-1, N-I, -ONE, $ A( 1, I+1 ), LDA, W( I+1, IW ), 1, ONE, $ W( 1, IW ), 1 ) CALL DGEMV( 'Transpose', I-1, N-I, ONE, A( 1, I+1 ), $ LDA, A( 1, I ), 1, ZERO, W( I+1, IW ), 1 ) CALL DGEMV( 'No transpose', I-1, N-I, -ONE, $ W( 1, IW+1 ), LDW, W( I+1, IW ), 1, ONE, $ W( 1, IW ), 1 ) END IF CALL DSCAL( I-1, TAU( I-1 ), W( 1, IW ), 1 ) ALPHA = -HALF*TAU( I-1 )*DDOT( I-1, W( 1, IW ), 1, $ A( 1, I ), 1 ) CALL DAXPY( I-1, ALPHA, A( 1, I ), 1, W( 1, IW ), 1 ) END IF * 10 CONTINUE ELSE * * Reduce first NB columns of lower triangle * DO 20 I = 1, NB * * Update A(i:n,i) * CALL DGEMV( 'No transpose', N-I+1, I-1, -ONE, A( I, 1 ), $ LDA, W( I, 1 ), LDW, ONE, A( I, I ), 1 ) CALL DGEMV( 'No transpose', N-I+1, I-1, -ONE, W( I, 1 ), $ LDW, A( I, 1 ), LDA, ONE, A( I, I ), 1 ) IF( I.LT.N ) THEN * * Generate elementary reflector H(i) to annihilate * A(i+2:n,i) * CALL DLARFG( N-I, A( I+1, I ), A( MIN( I+2, N ), I ), 1, $ TAU( I ) ) E( I ) = A( I+1, I ) A( I+1, I ) = ONE * * Compute W(i+1:n,i) * CALL DSYMV( 'Lower', N-I, ONE, A( I+1, I+1 ), LDA, $ A( I+1, I ), 1, ZERO, W( I+1, I ), 1 ) CALL DGEMV( 'Transpose', N-I, I-1, ONE, W( I+1, 1 ), LDW, $ A( I+1, I ), 1, ZERO, W( 1, I ), 1 ) CALL DGEMV( 'No transpose', N-I, I-1, -ONE, A( I+1, 1 ), $ LDA, W( 1, I ), 1, ONE, W( I+1, I ), 1 ) CALL DGEMV( 'Transpose', N-I, I-1, ONE, A( I+1, 1 ), LDA, $ A( I+1, I ), 1, ZERO, W( 1, I ), 1 ) CALL DGEMV( 'No transpose', N-I, I-1, -ONE, W( I+1, 1 ), $ LDW, W( 1, I ), 1, ONE, W( I+1, I ), 1 ) CALL DSCAL( N-I, TAU( I ), W( I+1, I ), 1 ) ALPHA = -HALF*TAU( I )*DDOT( N-I, W( I+1, I ), 1, $ A( I+1, I ), 1 ) CALL DAXPY( N-I, ALPHA, A( I+1, I ), 1, W( I+1, I ), 1 ) END IF * 20 CONTINUE END IF * RETURN * * End of DLATRD * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlahr2.f0000644002504400250440000000005012337331322016501 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlahr2.f0000644002504400250440000002422012337331322017245 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLAHR2 reduces the specified number of first columns of a general rectangular matrix A so that elements below the specified subdiagonal are zero, and returns auxiliary matrices which are needed to apply the transformation to the unreduced part of A. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLAHR2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLAHR2( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY ) * * .. Scalar Arguments .. * INTEGER K, LDA, LDT, LDY, N, NB * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), T( LDT, NB ), TAU( NB ), * $ Y( LDY, NB ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLAHR2 reduces the first NB columns of A complex general n-BY-(n-k+1) *> matrix A so that elements below the k-th subdiagonal are zero. The *> reduction is performed by an unitary similarity transformation *> Q**H * A * Q. The routine returns the matrices V and T which determine *> Q as a block reflector I - V*T*V**H, and also the matrix Y = A * V * T. *> *> This is an auxiliary routine called by ZGEHRD. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The offset for the reduction. Elements below the k-th *> subdiagonal in the first NB columns are reduced to zero. *> K < N. *> \endverbatim *> *> \param[in] NB *> \verbatim *> NB is INTEGER *> The number of columns to be reduced. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N-K+1) *> On entry, the n-by-(n-k+1) general matrix A. *> On exit, the elements on and above the k-th subdiagonal in *> the first NB columns are overwritten with the corresponding *> elements of the reduced matrix; the elements below the k-th *> subdiagonal, with the array TAU, represent the matrix Q as a *> product of elementary reflectors. The other columns of A are *> unchanged. See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (NB) *> The scalar factors of the elementary reflectors. See Further *> Details. *> \endverbatim *> *> \param[out] T *> \verbatim *> T is COMPLEX*16 array, dimension (LDT,NB) *> The upper triangular matrix T. *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. *> \endverbatim *> *> \param[out] Y *> \verbatim *> Y is COMPLEX*16 array, dimension (LDY,NB) *> The n-by-nb matrix Y. *> \endverbatim *> *> \param[in] LDY *> \verbatim *> LDY is INTEGER *> The leading dimension of the array Y. LDY >= N. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> The matrix Q is represented as a product of nb elementary reflectors *> *> Q = H(1) H(2) . . . H(nb). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(1:i+k-1) = 0, v(i+k) = 1; v(i+k+1:n) is stored on exit in *> A(i+k+1:n,i), and tau in TAU(i). *> *> The elements of the vectors v together form the (n-k+1)-by-nb matrix *> V which is needed, with T and Y, to apply the transformation to the *> unreduced part of the matrix, using an update of the form: *> A := (I - V*T*V**H) * (A - Y*V**H). *> *> The contents of A on exit are illustrated by the following example *> with n = 7, k = 3 and nb = 2: *> *> ( a a a a a ) *> ( a a a a a ) *> ( a a a a a ) *> ( h h a a a ) *> ( v1 h a a a ) *> ( v1 v2 a a a ) *> ( v1 v2 a a a ) *> *> where a denotes an element of the original matrix A, h denotes a *> modified element of the upper Hessenberg matrix H, and vi denotes an *> element of the vector defining H(i). *> *> This subroutine is a slight modification of LAPACK-3.0's DLAHRD *> incorporating improvements proposed by Quintana-Orti and Van de *> Gejin. Note that the entries of A(1:K,2:NB) differ from those *> returned by the original LAPACK-3.0's DLAHRD routine. (This *> subroutine is not backward compatible with LAPACK-3.0's DLAHRD.) *> \endverbatim * *> \par References: * ================ *> *> Gregorio Quintana-Orti and Robert van de Geijn, "Improving the *> performance of reduction to Hessenberg form," ACM Transactions on *> Mathematical Software, 32(2):180-194, June 2006. *> * ===================================================================== SUBROUTINE ZLAHR2( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER K, LDA, LDT, LDY, N, NB * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), T( LDT, NB ), TAU( NB ), $ Y( LDY, NB ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ), $ ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. INTEGER I COMPLEX*16 EI * .. * .. External Subroutines .. EXTERNAL ZAXPY, ZCOPY, ZGEMM, ZGEMV, ZLACPY, $ ZLARFG, ZSCAL, ZTRMM, ZTRMV, ZLACGV * .. * .. Intrinsic Functions .. INTRINSIC MIN * .. * .. Executable Statements .. * * Quick return if possible * IF( N.LE.1 ) $ RETURN * DO 10 I = 1, NB IF( I.GT.1 ) THEN * * Update A(K+1:N,I) * * Update I-th column of A - Y * V**H * CALL ZLACGV( I-1, A( K+I-1, 1 ), LDA ) CALL ZGEMV( 'NO TRANSPOSE', N-K, I-1, -ONE, Y(K+1,1), LDY, $ A( K+I-1, 1 ), LDA, ONE, A( K+1, I ), 1 ) CALL ZLACGV( I-1, A( K+I-1, 1 ), LDA ) * * Apply I - V * T**H * V**H to this column (call it b) from the * left, using the last column of T as workspace * * Let V = ( V1 ) and b = ( b1 ) (first I-1 rows) * ( V2 ) ( b2 ) * * where V1 is unit lower triangular * * w := V1**H * b1 * CALL ZCOPY( I-1, A( K+1, I ), 1, T( 1, NB ), 1 ) CALL ZTRMV( 'Lower', 'Conjugate transpose', 'UNIT', $ I-1, A( K+1, 1 ), $ LDA, T( 1, NB ), 1 ) * * w := w + V2**H * b2 * CALL ZGEMV( 'Conjugate transpose', N-K-I+1, I-1, $ ONE, A( K+I, 1 ), $ LDA, A( K+I, I ), 1, ONE, T( 1, NB ), 1 ) * * w := T**H * w * CALL ZTRMV( 'Upper', 'Conjugate transpose', 'NON-UNIT', $ I-1, T, LDT, $ T( 1, NB ), 1 ) * * b2 := b2 - V2*w * CALL ZGEMV( 'NO TRANSPOSE', N-K-I+1, I-1, -ONE, $ A( K+I, 1 ), $ LDA, T( 1, NB ), 1, ONE, A( K+I, I ), 1 ) * * b1 := b1 - V1*w * CALL ZTRMV( 'Lower', 'NO TRANSPOSE', $ 'UNIT', I-1, $ A( K+1, 1 ), LDA, T( 1, NB ), 1 ) CALL ZAXPY( I-1, -ONE, T( 1, NB ), 1, A( K+1, I ), 1 ) * A( K+I-1, I-1 ) = EI END IF * * Generate the elementary reflector H(I) to annihilate * A(K+I+1:N,I) * CALL ZLARFG( N-K-I+1, A( K+I, I ), A( MIN( K+I+1, N ), I ), 1, $ TAU( I ) ) EI = A( K+I, I ) A( K+I, I ) = ONE * * Compute Y(K+1:N,I) * CALL ZGEMV( 'NO TRANSPOSE', N-K, N-K-I+1, $ ONE, A( K+1, I+1 ), $ LDA, A( K+I, I ), 1, ZERO, Y( K+1, I ), 1 ) CALL ZGEMV( 'Conjugate transpose', N-K-I+1, I-1, $ ONE, A( K+I, 1 ), LDA, $ A( K+I, I ), 1, ZERO, T( 1, I ), 1 ) CALL ZGEMV( 'NO TRANSPOSE', N-K, I-1, -ONE, $ Y( K+1, 1 ), LDY, $ T( 1, I ), 1, ONE, Y( K+1, I ), 1 ) CALL ZSCAL( N-K, TAU( I ), Y( K+1, I ), 1 ) * * Compute T(1:I,I) * CALL ZSCAL( I-1, -TAU( I ), T( 1, I ), 1 ) CALL ZTRMV( 'Upper', 'No Transpose', 'NON-UNIT', $ I-1, T, LDT, $ T( 1, I ), 1 ) T( I, I ) = TAU( I ) * 10 CONTINUE A( K+NB, NB ) = EI * * Compute Y(1:K,1:NB) * CALL ZLACPY( 'ALL', K, NB, A( 1, 2 ), LDA, Y, LDY ) CALL ZTRMM( 'RIGHT', 'Lower', 'NO TRANSPOSE', $ 'UNIT', K, NB, $ ONE, A( K+1, 1 ), LDA, Y, LDY ) IF( N.GT.K+NB ) $ CALL ZGEMM( 'NO TRANSPOSE', 'NO TRANSPOSE', K, $ NB, N-K-NB, ONE, $ A( 1, 2+NB ), LDA, A( K+1+NB, 1 ), LDA, ONE, Y, $ LDY ) CALL ZTRMM( 'RIGHT', 'Upper', 'NO TRANSPOSE', $ 'NON-UNIT', K, NB, $ ONE, T, LDT, Y, LDY ) * RETURN * * End of ZLAHR2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dgetrf.f0000644002504400250440000000005012337331322016552 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dgetrf.f0000644002504400250440000001424312337331322017322 0ustar00dewhurstdewhurst00000000000000*> \brief \b DGETRF * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DGETRF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DGETRF( M, N, A, LDA, IPIV, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, M, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DGETRF computes an LU factorization of a general M-by-N matrix A *> using partial pivoting with row interchanges. *> *> The factorization has the form *> A = P * L * U *> where P is a permutation matrix, L is lower triangular with unit *> diagonal elements (lower trapezoidal if m > n), and U is upper *> triangular (upper trapezoidal if m < n). *> *> This is the right-looking Level 3 BLAS version of the algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the M-by-N matrix to be factored. *> On exit, the factors L and U from the factorization *> A = P*L*U; the unit diagonal elements of L are not stored. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (min(M,N)) *> The pivot indices; for 1 <= i <= min(M,N), row i of the *> matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, U(i,i) is exactly zero. The factorization *> has been completed, but the factor U is exactly *> singular, and division by zero will occur if it is used *> to solve a system of equations. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleGEcomputational * * ===================================================================== SUBROUTINE DGETRF( M, N, A, LDA, IPIV, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, LDA, M, N * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. INTEGER I, IINFO, J, JB, NB * .. * .. External Subroutines .. EXTERNAL DGEMM, DGETF2, DLASWP, DTRSM, XERBLA * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DGETRF', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 ) $ RETURN * * Determine the block size for this environment. * NB = ILAENV( 1, 'DGETRF', ' ', M, N, -1, -1 ) IF( NB.LE.1 .OR. NB.GE.MIN( M, N ) ) THEN * * Use unblocked code. * CALL DGETF2( M, N, A, LDA, IPIV, INFO ) ELSE * * Use blocked code. * DO 20 J = 1, MIN( M, N ), NB JB = MIN( MIN( M, N )-J+1, NB ) * * Factor diagonal and subdiagonal blocks and test for exact * singularity. * CALL DGETF2( M-J+1, JB, A( J, J ), LDA, IPIV( J ), IINFO ) * * Adjust INFO and the pivot indices. * IF( INFO.EQ.0 .AND. IINFO.GT.0 ) $ INFO = IINFO + J - 1 DO 10 I = J, MIN( M, J+JB-1 ) IPIV( I ) = J - 1 + IPIV( I ) 10 CONTINUE * * Apply interchanges to columns 1:J-1. * CALL DLASWP( J-1, A, LDA, J, J+JB-1, IPIV, 1 ) * IF( J+JB.LE.N ) THEN * * Apply interchanges to columns J+JB:N. * CALL DLASWP( N-J-JB+1, A( 1, J+JB ), LDA, J, J+JB-1, $ IPIV, 1 ) * * Compute block row of U. * CALL DTRSM( 'Left', 'Lower', 'No transpose', 'Unit', JB, $ N-J-JB+1, ONE, A( J, J ), LDA, A( J, J+JB ), $ LDA ) IF( J+JB.LE.M ) THEN * * Update trailing submatrix. * CALL DGEMM( 'No transpose', 'No transpose', M-J-JB+1, $ N-J-JB+1, JB, -ONE, A( J+JB, J ), LDA, $ A( J, J+JB ), LDA, ONE, A( J+JB, J+JB ), $ LDA ) END IF END IF 20 CONTINUE END IF RETURN * * End of DGETRF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlarft.f0000644002504400250440000000005012337331322016553 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlarft.f0000644002504400250440000002406612337331322017327 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLARFT forms the triangular factor T of a block reflector H = I - vtvH * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLARFT + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT ) * * .. Scalar Arguments .. * CHARACTER DIRECT, STOREV * INTEGER K, LDT, LDV, N * .. * .. Array Arguments .. * DOUBLE PRECISION T( LDT, * ), TAU( * ), V( LDV, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLARFT forms the triangular factor T of a real block reflector H *> of order n, which is defined as a product of k elementary reflectors. *> *> If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular; *> *> If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular. *> *> If STOREV = 'C', the vector which defines the elementary reflector *> H(i) is stored in the i-th column of the array V, and *> *> H = I - V * T * V**T *> *> If STOREV = 'R', the vector which defines the elementary reflector *> H(i) is stored in the i-th row of the array V, and *> *> H = I - V**T * T * V *> \endverbatim * * Arguments: * ========== * *> \param[in] DIRECT *> \verbatim *> DIRECT is CHARACTER*1 *> Specifies the order in which the elementary reflectors are *> multiplied to form the block reflector: *> = 'F': H = H(1) H(2) . . . H(k) (Forward) *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> *> \param[in] STOREV *> \verbatim *> STOREV is CHARACTER*1 *> Specifies how the vectors which define the elementary *> reflectors are stored (see also Further Details): *> = 'C': columnwise *> = 'R': rowwise *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the block reflector H. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. *> \endverbatim *> *> \param[in] V *> \verbatim *> V is DOUBLE PRECISION array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. *> \endverbatim *> *> \param[in] LDV *> \verbatim *> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). *> \endverbatim *> *> \param[out] T *> \verbatim *> T is DOUBLE PRECISION array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and *> k = 3. The elements equal to 1 are not stored. *> *> DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R': *> *> V = ( 1 ) V = ( 1 v1 v1 v1 v1 ) *> ( v1 1 ) ( 1 v2 v2 v2 ) *> ( v1 v2 1 ) ( 1 v3 v3 ) *> ( v1 v2 v3 ) *> ( v1 v2 v3 ) *> *> DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R': *> *> V = ( v1 v2 v3 ) V = ( v1 v1 1 ) *> ( v1 v2 v3 ) ( v2 v2 v2 1 ) *> ( 1 v2 v3 ) ( v3 v3 v3 v3 1 ) *> ( 1 v3 ) *> ( 1 ) *> \endverbatim *> * ===================================================================== SUBROUTINE DLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIRECT, STOREV INTEGER K, LDT, LDV, N * .. * .. Array Arguments .. DOUBLE PRECISION T( LDT, * ), TAU( * ), V( LDV, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, J, PREVLASTV, LASTV * .. * .. External Subroutines .. EXTERNAL DGEMV, DTRMV * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Executable Statements .. * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( LSAME( DIRECT, 'F' ) ) THEN PREVLASTV = N DO I = 1, K PREVLASTV = MAX( I, PREVLASTV ) IF( TAU( I ).EQ.ZERO ) THEN * * H(i) = I * DO J = 1, I T( J, I ) = ZERO END DO ELSE * * general case * IF( LSAME( STOREV, 'C' ) ) THEN * Skip any trailing zeros. DO LASTV = N, I+1, -1 IF( V( LASTV, I ).NE.ZERO ) EXIT END DO DO J = 1, I-1 T( J, I ) = -TAU( I ) * V( I , J ) END DO J = MIN( LASTV, PREVLASTV ) * * T(1:i-1,i) := - tau(i) * V(i:j,1:i-1)**T * V(i:j,i) * CALL DGEMV( 'Transpose', J-I, I-1, -TAU( I ), $ V( I+1, 1 ), LDV, V( I+1, I ), 1, ONE, $ T( 1, I ), 1 ) ELSE * Skip any trailing zeros. DO LASTV = N, I+1, -1 IF( V( I, LASTV ).NE.ZERO ) EXIT END DO DO J = 1, I-1 T( J, I ) = -TAU( I ) * V( J , I ) END DO J = MIN( LASTV, PREVLASTV ) * * T(1:i-1,i) := - tau(i) * V(1:i-1,i:j) * V(i,i:j)**T * CALL DGEMV( 'No transpose', I-1, J-I, -TAU( I ), $ V( 1, I+1 ), LDV, V( I, I+1 ), LDV, ONE, $ T( 1, I ), 1 ) END IF * * T(1:i-1,i) := T(1:i-1,1:i-1) * T(1:i-1,i) * CALL DTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, T, $ LDT, T( 1, I ), 1 ) T( I, I ) = TAU( I ) IF( I.GT.1 ) THEN PREVLASTV = MAX( PREVLASTV, LASTV ) ELSE PREVLASTV = LASTV END IF END IF END DO ELSE PREVLASTV = 1 DO I = K, 1, -1 IF( TAU( I ).EQ.ZERO ) THEN * * H(i) = I * DO J = I, K T( J, I ) = ZERO END DO ELSE * * general case * IF( I.LT.K ) THEN IF( LSAME( STOREV, 'C' ) ) THEN * Skip any leading zeros. DO LASTV = 1, I-1 IF( V( LASTV, I ).NE.ZERO ) EXIT END DO DO J = I+1, K T( J, I ) = -TAU( I ) * V( N-K+I , J ) END DO J = MAX( LASTV, PREVLASTV ) * * T(i+1:k,i) = -tau(i) * V(j:n-k+i,i+1:k)**T * V(j:n-k+i,i) * CALL DGEMV( 'Transpose', N-K+I-J, K-I, -TAU( I ), $ V( J, I+1 ), LDV, V( J, I ), 1, ONE, $ T( I+1, I ), 1 ) ELSE * Skip any leading zeros. DO LASTV = 1, I-1 IF( V( I, LASTV ).NE.ZERO ) EXIT END DO DO J = I+1, K T( J, I ) = -TAU( I ) * V( J, N-K+I ) END DO J = MAX( LASTV, PREVLASTV ) * * T(i+1:k,i) = -tau(i) * V(i+1:k,j:n-k+i) * V(i,j:n-k+i)**T * CALL DGEMV( 'No transpose', K-I, N-K+I-J, $ -TAU( I ), V( I+1, J ), LDV, V( I, J ), LDV, $ ONE, T( I+1, I ), 1 ) END IF * * T(i+1:k,i) := T(i+1:k,i+1:k) * T(i+1:k,i) * CALL DTRMV( 'Lower', 'No transpose', 'Non-unit', K-I, $ T( I+1, I+1 ), LDT, T( I+1, I ), 1 ) IF( I.GT.1 ) THEN PREVLASTV = MIN( PREVLASTV, LASTV ) ELSE PREVLASTV = LASTV END IF END IF T( I, I ) = TAU( I ) END IF END DO END IF RETURN * * End of DLARFT * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlartg.f0000644002504400250440000000005012337331322016602 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlartg.f0000644002504400250440000001663412337331322017360 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLARTG generates a plane rotation with real cosine and complex sine. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLARTG + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLARTG( F, G, CS, SN, R ) * * .. Scalar Arguments .. * DOUBLE PRECISION CS * COMPLEX*16 F, G, R, SN * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLARTG generates a plane rotation so that *> *> [ CS SN ] [ F ] [ R ] *> [ __ ] . [ ] = [ ] where CS**2 + |SN|**2 = 1. *> [ -SN CS ] [ G ] [ 0 ] *> *> This is a faster version of the BLAS1 routine ZROTG, except for *> the following differences: *> F and G are unchanged on return. *> If G=0, then CS=1 and SN=0. *> If F=0, then CS=0 and SN is chosen so that R is real. *> \endverbatim * * Arguments: * ========== * *> \param[in] F *> \verbatim *> F is COMPLEX*16 *> The first component of vector to be rotated. *> \endverbatim *> *> \param[in] G *> \verbatim *> G is COMPLEX*16 *> The second component of vector to be rotated. *> \endverbatim *> *> \param[out] CS *> \verbatim *> CS is DOUBLE PRECISION *> The cosine of the rotation. *> \endverbatim *> *> \param[out] SN *> \verbatim *> SN is COMPLEX*16 *> The sine of the rotation. *> \endverbatim *> *> \param[out] R *> \verbatim *> R is COMPLEX*16 *> The nonzero component of the rotated vector. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> 3-5-96 - Modified with a new algorithm by W. Kahan and J. Demmel *> *> This version has a few statements commented out for thread safety *> (machine parameters are computed on each entry). 10 feb 03, SJH. *> \endverbatim *> * ===================================================================== SUBROUTINE ZLARTG( F, G, CS, SN, R ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION CS COMPLEX*16 F, G, R, SN * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION TWO, ONE, ZERO PARAMETER ( TWO = 2.0D+0, ONE = 1.0D+0, ZERO = 0.0D+0 ) COMPLEX*16 CZERO PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. * LOGICAL FIRST INTEGER COUNT, I DOUBLE PRECISION D, DI, DR, EPS, F2, F2S, G2, G2S, SAFMIN, $ SAFMN2, SAFMX2, SCALE COMPLEX*16 FF, FS, GS * .. * .. External Functions .. DOUBLE PRECISION DLAMCH, DLAPY2 EXTERNAL DLAMCH, DLAPY2 * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, LOG, $ MAX, SQRT * .. * .. Statement Functions .. DOUBLE PRECISION ABS1, ABSSQ * .. * .. Save statement .. * SAVE FIRST, SAFMX2, SAFMIN, SAFMN2 * .. * .. Data statements .. * DATA FIRST / .TRUE. / * .. * .. Statement Function definitions .. ABS1( FF ) = MAX( ABS( DBLE( FF ) ), ABS( DIMAG( FF ) ) ) ABSSQ( FF ) = DBLE( FF )**2 + DIMAG( FF )**2 * .. * .. Executable Statements .. * * IF( FIRST ) THEN SAFMIN = DLAMCH( 'S' ) EPS = DLAMCH( 'E' ) SAFMN2 = DLAMCH( 'B' )**INT( LOG( SAFMIN / EPS ) / $ LOG( DLAMCH( 'B' ) ) / TWO ) SAFMX2 = ONE / SAFMN2 * FIRST = .FALSE. * END IF SCALE = MAX( ABS1( F ), ABS1( G ) ) FS = F GS = G COUNT = 0 IF( SCALE.GE.SAFMX2 ) THEN 10 CONTINUE COUNT = COUNT + 1 FS = FS*SAFMN2 GS = GS*SAFMN2 SCALE = SCALE*SAFMN2 IF( SCALE.GE.SAFMX2 ) $ GO TO 10 ELSE IF( SCALE.LE.SAFMN2 ) THEN IF( G.EQ.CZERO ) THEN CS = ONE SN = CZERO R = F RETURN END IF 20 CONTINUE COUNT = COUNT - 1 FS = FS*SAFMX2 GS = GS*SAFMX2 SCALE = SCALE*SAFMX2 IF( SCALE.LE.SAFMN2 ) $ GO TO 20 END IF F2 = ABSSQ( FS ) G2 = ABSSQ( GS ) IF( F2.LE.MAX( G2, ONE )*SAFMIN ) THEN * * This is a rare case: F is very small. * IF( F.EQ.CZERO ) THEN CS = ZERO R = DLAPY2( DBLE( G ), DIMAG( G ) ) * Do complex/real division explicitly with two real divisions D = DLAPY2( DBLE( GS ), DIMAG( GS ) ) SN = DCMPLX( DBLE( GS ) / D, -DIMAG( GS ) / D ) RETURN END IF F2S = DLAPY2( DBLE( FS ), DIMAG( FS ) ) * G2 and G2S are accurate * G2 is at least SAFMIN, and G2S is at least SAFMN2 G2S = SQRT( G2 ) * Error in CS from underflow in F2S is at most * UNFL / SAFMN2 .lt. sqrt(UNFL*EPS) .lt. EPS * If MAX(G2,ONE)=G2, then F2 .lt. G2*SAFMIN, * and so CS .lt. sqrt(SAFMIN) * If MAX(G2,ONE)=ONE, then F2 .lt. SAFMIN * and so CS .lt. sqrt(SAFMIN)/SAFMN2 = sqrt(EPS) * Therefore, CS = F2S/G2S / sqrt( 1 + (F2S/G2S)**2 ) = F2S/G2S CS = F2S / G2S * Make sure abs(FF) = 1 * Do complex/real division explicitly with 2 real divisions IF( ABS1( F ).GT.ONE ) THEN D = DLAPY2( DBLE( F ), DIMAG( F ) ) FF = DCMPLX( DBLE( F ) / D, DIMAG( F ) / D ) ELSE DR = SAFMX2*DBLE( F ) DI = SAFMX2*DIMAG( F ) D = DLAPY2( DR, DI ) FF = DCMPLX( DR / D, DI / D ) END IF SN = FF*DCMPLX( DBLE( GS ) / G2S, -DIMAG( GS ) / G2S ) R = CS*F + SN*G ELSE * * This is the most common case. * Neither F2 nor F2/G2 are less than SAFMIN * F2S cannot overflow, and it is accurate * F2S = SQRT( ONE+G2 / F2 ) * Do the F2S(real)*FS(complex) multiply with two real multiplies R = DCMPLX( F2S*DBLE( FS ), F2S*DIMAG( FS ) ) CS = ONE / F2S D = F2 + G2 * Do complex/real division explicitly with two real divisions SN = DCMPLX( DBLE( R ) / D, DIMAG( R ) / D ) SN = SN*DCONJG( GS ) IF( COUNT.NE.0 ) THEN IF( COUNT.GT.0 ) THEN DO 30 I = 1, COUNT R = R*SAFMX2 30 CONTINUE ELSE DO 40 I = 1, -COUNT R = R*SAFMN2 40 CONTINUE END IF END IF END IF RETURN * * End of ZLARTG * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlarfb.f0000644002504400250440000000005012337331322016531 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlarfb.f0000644002504400250440000005366712337331322017316 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLARFB applies a block reflector or its transpose to a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLARFB + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, * T, LDT, C, LDC, WORK, LDWORK ) * * .. Scalar Arguments .. * CHARACTER DIRECT, SIDE, STOREV, TRANS * INTEGER K, LDC, LDT, LDV, LDWORK, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION C( LDC, * ), T( LDT, * ), V( LDV, * ), * $ WORK( LDWORK, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLARFB applies a real block reflector H or its transpose H**T to a *> real m by n matrix C, from either the left or the right. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply H or H**T from the Left *> = 'R': apply H or H**T from the Right *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': apply H (No transpose) *> = 'T': apply H**T (Transpose) *> \endverbatim *> *> \param[in] DIRECT *> \verbatim *> DIRECT is CHARACTER*1 *> Indicates how H is formed from a product of elementary *> reflectors *> = 'F': H = H(1) H(2) . . . H(k) (Forward) *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> *> \param[in] STOREV *> \verbatim *> STOREV is CHARACTER*1 *> Indicates how the vectors which define the elementary *> reflectors are stored: *> = 'C': Columnwise *> = 'R': Rowwise *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The order of the matrix T (= the number of elementary *> reflectors whose product defines the block reflector). *> \endverbatim *> *> \param[in] V *> \verbatim *> V is DOUBLE PRECISION array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,M) if STOREV = 'R' and SIDE = 'L' *> (LDV,N) if STOREV = 'R' and SIDE = 'R' *> The matrix V. See Further Details. *> \endverbatim *> *> \param[in] LDV *> \verbatim *> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. *> \endverbatim *> *> \param[in] T *> \verbatim *> T is DOUBLE PRECISION array, dimension (LDT,K) *> The triangular k by k matrix T in the representation of the *> block reflector. *> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> On entry, the m by n matrix C. *> On exit, C is overwritten by H*C or H**T*C or C*H or C*H**T. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (LDWORK,K) *> \endverbatim *> *> \param[in] LDWORK *> \verbatim *> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= max(1,N); *> if SIDE = 'R', LDWORK >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and *> k = 3. The elements equal to 1 are not stored; the corresponding *> array elements are modified but restored on exit. The rest of the *> array is not used. *> *> DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R': *> *> V = ( 1 ) V = ( 1 v1 v1 v1 v1 ) *> ( v1 1 ) ( 1 v2 v2 v2 ) *> ( v1 v2 1 ) ( 1 v3 v3 ) *> ( v1 v2 v3 ) *> ( v1 v2 v3 ) *> *> DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R': *> *> V = ( v1 v2 v3 ) V = ( v1 v1 1 ) *> ( v1 v2 v3 ) ( v2 v2 v2 1 ) *> ( 1 v2 v3 ) ( v3 v3 v3 v3 1 ) *> ( 1 v3 ) *> ( 1 ) *> \endverbatim *> * ===================================================================== SUBROUTINE DLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, $ T, LDT, C, LDC, WORK, LDWORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER DIRECT, SIDE, STOREV, TRANS INTEGER K, LDC, LDT, LDV, LDWORK, M, N * .. * .. Array Arguments .. DOUBLE PRECISION C( LDC, * ), T( LDT, * ), V( LDV, * ), $ WORK( LDWORK, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. CHARACTER TRANST INTEGER I, J, LASTV, LASTC, lastv2 * .. * .. External Functions .. LOGICAL LSAME INTEGER ILADLR, ILADLC EXTERNAL LSAME, ILADLR, ILADLC * .. * .. External Subroutines .. EXTERNAL DCOPY, DGEMM, DTRMM * .. * .. Executable Statements .. * * Quick return if possible * IF( M.LE.0 .OR. N.LE.0 ) $ RETURN * IF( LSAME( TRANS, 'N' ) ) THEN TRANST = 'T' ELSE TRANST = 'N' END IF * IF( LSAME( STOREV, 'C' ) ) THEN * IF( LSAME( DIRECT, 'F' ) ) THEN * * Let V = ( V1 ) (first K rows) * ( V2 ) * where V1 is unit lower triangular. * IF( LSAME( SIDE, 'L' ) ) THEN * * Form H * C or H**T * C where C = ( C1 ) * ( C2 ) * LASTV = MAX( K, ILADLR( M, K, V, LDV ) ) LASTC = ILADLC( LASTV, N, C, LDC ) * * W := C**T * V = (C1**T * V1 + C2**T * V2) (stored in WORK) * * W := C1**T * DO 10 J = 1, K CALL DCOPY( LASTC, C( J, 1 ), LDC, WORK( 1, J ), 1 ) 10 CONTINUE * * W := W * V1 * CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) IF( LASTV.GT.K ) THEN * * W := W + C2**T *V2 * CALL DGEMM( 'Transpose', 'No transpose', $ LASTC, K, LASTV-K, $ ONE, C( K+1, 1 ), LDC, V( K+1, 1 ), LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T**T or W * T * CALL DTRMM( 'Right', 'Upper', TRANST, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - V * W**T * IF( LASTV.GT.K ) THEN * * C2 := C2 - V2 * W**T * CALL DGEMM( 'No transpose', 'Transpose', $ LASTV-K, LASTC, K, $ -ONE, V( K+1, 1 ), LDV, WORK, LDWORK, ONE, $ C( K+1, 1 ), LDC ) END IF * * W := W * V1**T * CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) * * C1 := C1 - W**T * DO 30 J = 1, K DO 20 I = 1, LASTC C( J, I ) = C( J, I ) - WORK( I, J ) 20 CONTINUE 30 CONTINUE * ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form C * H or C * H**T where C = ( C1 C2 ) * LASTV = MAX( K, ILADLR( N, K, V, LDV ) ) LASTC = ILADLR( M, LASTV, C, LDC ) * * W := C * V = (C1*V1 + C2*V2) (stored in WORK) * * W := C1 * DO 40 J = 1, K CALL DCOPY( LASTC, C( 1, J ), 1, WORK( 1, J ), 1 ) 40 CONTINUE * * W := W * V1 * CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) IF( LASTV.GT.K ) THEN * * W := W + C2 * V2 * CALL DGEMM( 'No transpose', 'No transpose', $ LASTC, K, LASTV-K, $ ONE, C( 1, K+1 ), LDC, V( K+1, 1 ), LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T or W * T**T * CALL DTRMM( 'Right', 'Upper', TRANS, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - W * V**T * IF( LASTV.GT.K ) THEN * * C2 := C2 - W * V2**T * CALL DGEMM( 'No transpose', 'Transpose', $ LASTC, LASTV-K, K, $ -ONE, WORK, LDWORK, V( K+1, 1 ), LDV, ONE, $ C( 1, K+1 ), LDC ) END IF * * W := W * V1**T * CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) * * C1 := C1 - W * DO 60 J = 1, K DO 50 I = 1, LASTC C( I, J ) = C( I, J ) - WORK( I, J ) 50 CONTINUE 60 CONTINUE END IF * ELSE * * Let V = ( V1 ) * ( V2 ) (last K rows) * where V2 is unit upper triangular. * IF( LSAME( SIDE, 'L' ) ) THEN * * Form H * C or H**T * C where C = ( C1 ) * ( C2 ) * LASTC = ILADLC( M, N, C, LDC ) * * W := C**T * V = (C1**T * V1 + C2**T * V2) (stored in WORK) * * W := C2**T * DO 70 J = 1, K CALL DCOPY( LASTC, C( M-K+J, 1 ), LDC, $ WORK( 1, J ), 1 ) 70 CONTINUE * * W := W * V2 * CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit', $ LASTC, K, ONE, V( M-K+1, 1 ), LDV, $ WORK, LDWORK ) IF( M.GT.K ) THEN * * W := W + C1**T*V1 * CALL DGEMM( 'Transpose', 'No transpose', $ LASTC, K, M-K, ONE, C, LDC, V, LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T**T or W * T * CALL DTRMM( 'Right', 'Lower', TRANST, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - V * W**T * IF( M.GT.K ) THEN * * C1 := C1 - V1 * W**T * CALL DGEMM( 'No transpose', 'Transpose', $ M-K, LASTC, K, -ONE, V, LDV, WORK, LDWORK, $ ONE, C, LDC ) END IF * * W := W * V2**T * CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit', $ LASTC, K, ONE, V( M-K+1, 1 ), LDV, $ WORK, LDWORK ) * * C2 := C2 - W**T * DO 90 J = 1, K DO 80 I = 1, LASTC C( M-K+J, I ) = C( M-K+J, I ) - WORK(I, J) 80 CONTINUE 90 CONTINUE * ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form C * H or C * H**T where C = ( C1 C2 ) * LASTC = ILADLR( M, N, C, LDC ) * * W := C * V = (C1*V1 + C2*V2) (stored in WORK) * * W := C2 * DO 100 J = 1, K CALL DCOPY( LASTC, C( 1, N-K+J ), 1, WORK( 1, J ), 1 ) 100 CONTINUE * * W := W * V2 * CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit', $ LASTC, K, ONE, V( N-K+1, 1 ), LDV, $ WORK, LDWORK ) IF( N.GT.K ) THEN * * W := W + C1 * V1 * CALL DGEMM( 'No transpose', 'No transpose', $ LASTC, K, N-K, ONE, C, LDC, V, LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T or W * T**T * CALL DTRMM( 'Right', 'Lower', TRANS, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - W * V**T * IF( N.GT.K ) THEN * * C1 := C1 - W * V1**T * CALL DGEMM( 'No transpose', 'Transpose', $ LASTC, N-K, K, -ONE, WORK, LDWORK, V, LDV, $ ONE, C, LDC ) END IF * * W := W * V2**T * CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit', $ LASTC, K, ONE, V( N-K+1, 1 ), LDV, $ WORK, LDWORK ) * * C2 := C2 - W * DO 120 J = 1, K DO 110 I = 1, LASTC C( I, N-K+J ) = C( I, N-K+J ) - WORK(I, J) 110 CONTINUE 120 CONTINUE END IF END IF * ELSE IF( LSAME( STOREV, 'R' ) ) THEN * IF( LSAME( DIRECT, 'F' ) ) THEN * * Let V = ( V1 V2 ) (V1: first K columns) * where V1 is unit upper triangular. * IF( LSAME( SIDE, 'L' ) ) THEN * * Form H * C or H**T * C where C = ( C1 ) * ( C2 ) * LASTV = MAX( K, ILADLC( K, M, V, LDV ) ) LASTC = ILADLC( LASTV, N, C, LDC ) * * W := C**T * V**T = (C1**T * V1**T + C2**T * V2**T) (stored in WORK) * * W := C1**T * DO 130 J = 1, K CALL DCOPY( LASTC, C( J, 1 ), LDC, WORK( 1, J ), 1 ) 130 CONTINUE * * W := W * V1**T * CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) IF( LASTV.GT.K ) THEN * * W := W + C2**T*V2**T * CALL DGEMM( 'Transpose', 'Transpose', $ LASTC, K, LASTV-K, $ ONE, C( K+1, 1 ), LDC, V( 1, K+1 ), LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T**T or W * T * CALL DTRMM( 'Right', 'Upper', TRANST, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - V**T * W**T * IF( LASTV.GT.K ) THEN * * C2 := C2 - V2**T * W**T * CALL DGEMM( 'Transpose', 'Transpose', $ LASTV-K, LASTC, K, $ -ONE, V( 1, K+1 ), LDV, WORK, LDWORK, $ ONE, C( K+1, 1 ), LDC ) END IF * * W := W * V1 * CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) * * C1 := C1 - W**T * DO 150 J = 1, K DO 140 I = 1, LASTC C( J, I ) = C( J, I ) - WORK( I, J ) 140 CONTINUE 150 CONTINUE * ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form C * H or C * H**T where C = ( C1 C2 ) * LASTV = MAX( K, ILADLC( K, N, V, LDV ) ) LASTC = ILADLR( M, LASTV, C, LDC ) * * W := C * V**T = (C1*V1**T + C2*V2**T) (stored in WORK) * * W := C1 * DO 160 J = 1, K CALL DCOPY( LASTC, C( 1, J ), 1, WORK( 1, J ), 1 ) 160 CONTINUE * * W := W * V1**T * CALL DTRMM( 'Right', 'Upper', 'Transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) IF( LASTV.GT.K ) THEN * * W := W + C2 * V2**T * CALL DGEMM( 'No transpose', 'Transpose', $ LASTC, K, LASTV-K, $ ONE, C( 1, K+1 ), LDC, V( 1, K+1 ), LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T or W * T**T * CALL DTRMM( 'Right', 'Upper', TRANS, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - W * V * IF( LASTV.GT.K ) THEN * * C2 := C2 - W * V2 * CALL DGEMM( 'No transpose', 'No transpose', $ LASTC, LASTV-K, K, $ -ONE, WORK, LDWORK, V( 1, K+1 ), LDV, $ ONE, C( 1, K+1 ), LDC ) END IF * * W := W * V1 * CALL DTRMM( 'Right', 'Upper', 'No transpose', 'Unit', $ LASTC, K, ONE, V, LDV, WORK, LDWORK ) * * C1 := C1 - W * DO 180 J = 1, K DO 170 I = 1, LASTC C( I, J ) = C( I, J ) - WORK( I, J ) 170 CONTINUE 180 CONTINUE * END IF * ELSE * * Let V = ( V1 V2 ) (V2: last K columns) * where V2 is unit lower triangular. * IF( LSAME( SIDE, 'L' ) ) THEN * * Form H * C or H**T * C where C = ( C1 ) * ( C2 ) * LASTC = ILADLC( M, N, C, LDC ) * * W := C**T * V**T = (C1**T * V1**T + C2**T * V2**T) (stored in WORK) * * W := C2**T * DO 190 J = 1, K CALL DCOPY( LASTC, C( M-K+J, 1 ), LDC, $ WORK( 1, J ), 1 ) 190 CONTINUE * * W := W * V2**T * CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit', $ LASTC, K, ONE, V( 1, M-K+1 ), LDV, $ WORK, LDWORK ) IF( M.GT.K ) THEN * * W := W + C1**T * V1**T * CALL DGEMM( 'Transpose', 'Transpose', $ LASTC, K, M-K, ONE, C, LDC, V, LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T**T or W * T * CALL DTRMM( 'Right', 'Lower', TRANST, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - V**T * W**T * IF( M.GT.K ) THEN * * C1 := C1 - V1**T * W**T * CALL DGEMM( 'Transpose', 'Transpose', $ M-K, LASTC, K, -ONE, V, LDV, WORK, LDWORK, $ ONE, C, LDC ) END IF * * W := W * V2 * CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit', $ LASTC, K, ONE, V( 1, M-K+1 ), LDV, $ WORK, LDWORK ) * * C2 := C2 - W**T * DO 210 J = 1, K DO 200 I = 1, LASTC C( M-K+J, I ) = C( M-K+J, I ) - WORK(I, J) 200 CONTINUE 210 CONTINUE * ELSE IF( LSAME( SIDE, 'R' ) ) THEN * * Form C * H or C * H**T where C = ( C1 C2 ) * LASTC = ILADLR( M, N, C, LDC ) * * W := C * V**T = (C1*V1**T + C2*V2**T) (stored in WORK) * * W := C2 * DO 220 J = 1, K CALL DCOPY( LASTC, C( 1, N-K+J ), 1, $ WORK( 1, J ), 1 ) 220 CONTINUE * * W := W * V2**T * CALL DTRMM( 'Right', 'Lower', 'Transpose', 'Unit', $ LASTC, K, ONE, V( 1, N-K+1 ), LDV, $ WORK, LDWORK ) IF( N.GT.K ) THEN * * W := W + C1 * V1**T * CALL DGEMM( 'No transpose', 'Transpose', $ LASTC, K, N-K, ONE, C, LDC, V, LDV, $ ONE, WORK, LDWORK ) END IF * * W := W * T or W * T**T * CALL DTRMM( 'Right', 'Lower', TRANS, 'Non-unit', $ LASTC, K, ONE, T, LDT, WORK, LDWORK ) * * C := C - W * V * IF( N.GT.K ) THEN * * C1 := C1 - W * V1 * CALL DGEMM( 'No transpose', 'No transpose', $ LASTC, N-K, K, -ONE, WORK, LDWORK, V, LDV, $ ONE, C, LDC ) END IF * * W := W * V2 * CALL DTRMM( 'Right', 'Lower', 'No transpose', 'Unit', $ LASTC, K, ONE, V( 1, N-K+1 ), LDV, $ WORK, LDWORK ) * * C1 := C1 - W * DO 240 J = 1, K DO 230 I = 1, LASTC C( I, N-K+J ) = C( I, N-K+J ) - WORK(I, J) 230 CONTINUE 240 CONTINUE * END IF * END IF END IF * RETURN * * End of DLARFB * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dgesv.f0000644002504400250440000000005012337331322016407 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dgesv.f0000644002504400250440000001204612337331322017156 0ustar00dewhurstdewhurst00000000000000*> \brief DGESV computes the solution to system of linear equations A * X = B for GE matrices * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DGESV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DGESV computes the solution to a real system of linear equations *> A * X = B, *> where A is an N-by-N matrix and X and B are N-by-NRHS matrices. *> *> The LU decomposition with partial pivoting and row interchanges is *> used to factor A as *> A = P * L * U, *> where P is a permutation matrix, L is unit lower triangular, and U is *> upper triangular. The factored form of A is then used to solve the *> system of equations A * X = B. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The number of linear equations, i.e., the order of the *> matrix A. N >= 0. *> \endverbatim *> *> \param[in] NRHS *> \verbatim *> NRHS is INTEGER *> The number of right hand sides, i.e., the number of columns *> of the matrix B. NRHS >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the N-by-N coefficient matrix A. *> On exit, the factors L and U from the factorization *> A = P*L*U; the unit diagonal elements of L are not stored. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> The pivot indices that define the permutation matrix P; *> row i of the matrix was interchanged with row IPIV(i). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB,NRHS) *> On entry, the N-by-NRHS matrix of right hand side matrix B. *> On exit, if INFO = 0, the N-by-NRHS solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, U(i,i) is exactly zero. The factorization *> has been completed, but the factor U is exactly *> singular, so the solution could not be computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleGEsolve * * ===================================================================== SUBROUTINE DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. External Subroutines .. EXTERNAL DGETRF, DGETRS, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 IF( N.LT.0 ) THEN INFO = -1 ELSE IF( NRHS.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -7 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DGESV ', -INFO ) RETURN END IF * * Compute the LU factorization of A. * CALL DGETRF( N, N, A, LDA, IPIV, INFO ) IF( INFO.EQ.0 ) THEN * * Solve the system A*X = B, overwriting B with X. * CALL DGETRS( 'No transpose', N, NRHS, A, LDA, IPIV, B, LDB, $ INFO ) END IF RETURN * * End of DGESV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/iladlc.f0000644002504400250440000000005012337331322016527 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/iladlc.f0000644002504400250440000000566712337331322017311 0ustar00dewhurstdewhurst00000000000000*> \brief \b ILADLC scans a matrix for its last non-zero column. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ILADLC + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * INTEGER FUNCTION ILADLC( M, N, A, LDA ) * * .. Scalar Arguments .. * INTEGER M, N, LDA * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ILADLC scans A for its last non-zero column. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix A. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The m by n matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== INTEGER FUNCTION ILADLC( M, N, A, LDA ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER M, N, LDA * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I * .. * .. Executable Statements .. * * Quick test for the common case where one corner is non-zero. IF( N.EQ.0 ) THEN ILADLC = N ELSE IF( A(1, N).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN ILADLC = N ELSE * Now scan each column from the end, returning with the first non-zero. DO ILADLC = N, 1, -1 DO I = 1, M IF( A(I, ILADLC).NE.ZERO ) RETURN END DO END DO END IF RETURN END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zunm2l.f0000644002504400250440000000005012337331322016526 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zunm2l.f0000644002504400250440000001644512337331322017304 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNM2L multiplies a general matrix by the unitary matrix from a QL factorization determined by cgeqlf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNM2L + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER SIDE, TRANS * INTEGER INFO, K, LDA, LDC, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNM2L overwrites the general complex m-by-n matrix C with *> *> Q * C if SIDE = 'L' and TRANS = 'N', or *> *> Q**H* C if SIDE = 'L' and TRANS = 'C', or *> *> C * Q if SIDE = 'R' and TRANS = 'N', or *> *> C * Q**H if SIDE = 'R' and TRANS = 'C', *> *> where Q is a complex unitary matrix defined as the product of k *> elementary reflectors *> *> Q = H(k) . . . H(2) H(1) *> *> as returned by ZGEQLF. Q is of order m if SIDE = 'L' and of order n *> if SIDE = 'R'. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> = 'L': apply Q or Q**H from the Left *> = 'R': apply Q or Q**H from the Right *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': apply Q (No transpose) *> = 'C': apply Q**H (Conjugate transpose) *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix C. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix C. N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines *> the matrix Q. *> If SIDE = 'L', M >= K >= 0; *> if SIDE = 'R', N >= K >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> ZGEQLF in the last k columns of its array argument A. *> A is modified by the routine but restored on exit. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDA >= max(1,M); *> if SIDE = 'R', LDA >= max(1,N). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEQLF. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the m-by-n matrix C. *> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension *> (N) if SIDE = 'L', *> (M) if SIDE = 'R' *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER SIDE, TRANS INTEGER INFO, K, LDA, LDC, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LEFT, NOTRAN INTEGER I, I1, I2, I3, MI, NI, NQ COMPLEX*16 AII, TAUI * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARF * .. * .. Intrinsic Functions .. INTRINSIC DCONJG, MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LEFT = LSAME( SIDE, 'L' ) NOTRAN = LSAME( TRANS, 'N' ) * * NQ is the order of Q * IF( LEFT ) THEN NQ = M ELSE NQ = N END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 ELSE IF( .NOT.NOTRAN .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN INFO = -2 ELSE IF( M.LT.0 ) THEN INFO = -3 ELSE IF( N.LT.0 ) THEN INFO = -4 ELSE IF( K.LT.0 .OR. K.GT.NQ ) THEN INFO = -5 ELSE IF( LDA.LT.MAX( 1, NQ ) ) THEN INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNM2L', -INFO ) RETURN END IF * * Quick return if possible * IF( M.EQ.0 .OR. N.EQ.0 .OR. K.EQ.0 ) $ RETURN * IF( ( LEFT .AND. NOTRAN .OR. .NOT.LEFT .AND. .NOT.NOTRAN ) ) THEN I1 = 1 I2 = K I3 = 1 ELSE I1 = K I2 = 1 I3 = -1 END IF * IF( LEFT ) THEN NI = N ELSE MI = M END IF * DO 10 I = I1, I2, I3 IF( LEFT ) THEN * * H(i) or H(i)**H is applied to C(1:m-k+i,1:n) * MI = M - K + I ELSE * * H(i) or H(i)**H is applied to C(1:m,1:n-k+i) * NI = N - K + I END IF * * Apply H(i) or H(i)**H * IF( NOTRAN ) THEN TAUI = TAU( I ) ELSE TAUI = DCONJG( TAU( I ) ) END IF AII = A( NQ-K+I, I ) A( NQ-K+I, I ) = ONE CALL ZLARF( SIDE, MI, NI, A( 1, I ), 1, TAUI, C, LDC, WORK ) A( NQ-K+I, I ) = AII 10 CONTINUE RETURN * * End of ZUNM2L * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhpgst.f0000644002504400250440000000005012337331322016616 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhpgst.f0000644002504400250440000002056212337331322017367 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHPGST * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHPGST + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHPGST( ITYPE, UPLO, N, AP, BP, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, ITYPE, N * .. * .. Array Arguments .. * COMPLEX*16 AP( * ), BP( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHPGST reduces a complex Hermitian-definite generalized *> eigenproblem to standard form, using packed storage. *> *> If ITYPE = 1, the problem is A*x = lambda*B*x, *> and A is overwritten by inv(U**H)*A*inv(U) or inv(L)*A*inv(L**H) *> *> If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or *> B*A*x = lambda*x, and A is overwritten by U*A*U**H or L**H*A*L. *> *> B must have been previously factorized as U**H*U or L*L**H by ZPPTRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> = 1: compute inv(U**H)*A*inv(U) or inv(L)*A*inv(L**H); *> = 2 or 3: compute U*A*U**H or L**H*A*L. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored and B is factored as *> U**H*U; *> = 'L': Lower triangle of A is stored and B is factored as *> L*L**H. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrices A and B. N >= 0. *> \endverbatim *> *> \param[in,out] AP *> \verbatim *> AP is COMPLEX*16 array, dimension (N*(N+1)/2) *> On entry, the upper or lower triangle of the Hermitian matrix *> A, packed columnwise in a linear array. The j-th column of A *> is stored in the array AP as follows: *> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; *> if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n. *> *> On exit, if INFO = 0, the transformed matrix, stored in the *> same format as A. *> \endverbatim *> *> \param[in] BP *> \verbatim *> BP is COMPLEX*16 array, dimension (N*(N+1)/2) *> The triangular factor from the Cholesky factorization of B, *> stored in the same format as A, as returned by ZPPTRF. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZHPGST( ITYPE, UPLO, N, AP, BP, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, ITYPE, N * .. * .. Array Arguments .. COMPLEX*16 AP( * ), BP( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, HALF PARAMETER ( ONE = 1.0D+0, HALF = 0.5D+0 ) COMPLEX*16 CONE PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER J, J1, J1J1, JJ, K, K1, K1K1, KK DOUBLE PRECISION AJJ, AKK, BJJ, BKK COMPLEX*16 CT * .. * .. External Subroutines .. EXTERNAL XERBLA, ZAXPY, ZDSCAL, ZHPMV, ZHPR2, ZTPMV, $ ZTPSV * .. * .. Intrinsic Functions .. INTRINSIC DBLE * .. * .. External Functions .. LOGICAL LSAME COMPLEX*16 ZDOTC EXTERNAL LSAME, ZDOTC * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHPGST', -INFO ) RETURN END IF * IF( ITYPE.EQ.1 ) THEN IF( UPPER ) THEN * * Compute inv(U**H)*A*inv(U) * * J1 and JJ are the indices of A(1,j) and A(j,j) * JJ = 0 DO 10 J = 1, N J1 = JJ + 1 JJ = JJ + J * * Compute the j-th column of the upper triangle of A * AP( JJ ) = DBLE( AP( JJ ) ) BJJ = BP( JJ ) CALL ZTPSV( UPLO, 'Conjugate transpose', 'Non-unit', J, $ BP, AP( J1 ), 1 ) CALL ZHPMV( UPLO, J-1, -CONE, AP, BP( J1 ), 1, CONE, $ AP( J1 ), 1 ) CALL ZDSCAL( J-1, ONE / BJJ, AP( J1 ), 1 ) AP( JJ ) = ( AP( JJ )-ZDOTC( J-1, AP( J1 ), 1, BP( J1 ), $ 1 ) ) / BJJ 10 CONTINUE ELSE * * Compute inv(L)*A*inv(L**H) * * KK and K1K1 are the indices of A(k,k) and A(k+1,k+1) * KK = 1 DO 20 K = 1, N K1K1 = KK + N - K + 1 * * Update the lower triangle of A(k:n,k:n) * AKK = AP( KK ) BKK = BP( KK ) AKK = AKK / BKK**2 AP( KK ) = AKK IF( K.LT.N ) THEN CALL ZDSCAL( N-K, ONE / BKK, AP( KK+1 ), 1 ) CT = -HALF*AKK CALL ZAXPY( N-K, CT, BP( KK+1 ), 1, AP( KK+1 ), 1 ) CALL ZHPR2( UPLO, N-K, -CONE, AP( KK+1 ), 1, $ BP( KK+1 ), 1, AP( K1K1 ) ) CALL ZAXPY( N-K, CT, BP( KK+1 ), 1, AP( KK+1 ), 1 ) CALL ZTPSV( UPLO, 'No transpose', 'Non-unit', N-K, $ BP( K1K1 ), AP( KK+1 ), 1 ) END IF KK = K1K1 20 CONTINUE END IF ELSE IF( UPPER ) THEN * * Compute U*A*U**H * * K1 and KK are the indices of A(1,k) and A(k,k) * KK = 0 DO 30 K = 1, N K1 = KK + 1 KK = KK + K * * Update the upper triangle of A(1:k,1:k) * AKK = AP( KK ) BKK = BP( KK ) CALL ZTPMV( UPLO, 'No transpose', 'Non-unit', K-1, BP, $ AP( K1 ), 1 ) CT = HALF*AKK CALL ZAXPY( K-1, CT, BP( K1 ), 1, AP( K1 ), 1 ) CALL ZHPR2( UPLO, K-1, CONE, AP( K1 ), 1, BP( K1 ), 1, $ AP ) CALL ZAXPY( K-1, CT, BP( K1 ), 1, AP( K1 ), 1 ) CALL ZDSCAL( K-1, BKK, AP( K1 ), 1 ) AP( KK ) = AKK*BKK**2 30 CONTINUE ELSE * * Compute L**H *A*L * * JJ and J1J1 are the indices of A(j,j) and A(j+1,j+1) * JJ = 1 DO 40 J = 1, N J1J1 = JJ + N - J + 1 * * Compute the j-th column of the lower triangle of A * AJJ = AP( JJ ) BJJ = BP( JJ ) AP( JJ ) = AJJ*BJJ + ZDOTC( N-J, AP( JJ+1 ), 1, $ BP( JJ+1 ), 1 ) CALL ZDSCAL( N-J, BJJ, AP( JJ+1 ), 1 ) CALL ZHPMV( UPLO, N-J, CONE, AP( J1J1 ), BP( JJ+1 ), 1, $ CONE, AP( JJ+1 ), 1 ) CALL ZTPMV( UPLO, 'Conjugate transpose', 'Non-unit', $ N-J+1, BP( JJ ), AP( JJ ), 1 ) JJ = J1J1 40 CONTINUE END IF END IF RETURN * * End of ZHPGST * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhetrd.f0000644002504400250440000000005012337331322016577 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhetrd.f0000644002504400250440000002650112337331322017347 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHETRD * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHETRD + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHETRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * DOUBLE PRECISION D( * ), E( * ) * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHETRD reduces a complex Hermitian matrix A to real symmetric *> tridiagonal form T by a unitary similarity transformation: *> Q**H * A * Q = T. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the leading *> N-by-N upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> On exit, if UPLO = 'U', the diagonal and first superdiagonal *> of A are overwritten by the corresponding elements of the *> tridiagonal matrix T, and the elements above the first *> superdiagonal, with the array TAU, represent the unitary *> matrix Q as a product of elementary reflectors; if UPLO *> = 'L', the diagonal and first subdiagonal of A are over- *> written by the corresponding elements of the tridiagonal *> matrix T, and the elements below the first subdiagonal, with *> the array TAU, represent the unitary matrix Q as a product *> of elementary reflectors. See Further Details. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). *> \endverbatim *> *> \param[out] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= 1. *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16HEcomputational * *> \par Further Details: * ===================== *> *> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(n-1) . . . H(2) H(1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in *> A(1:i-1,i+1), and tau in TAU(i). *> *> If UPLO = 'L', the matrix Q is represented as a product of elementary *> reflectors *> *> Q = H(1) H(2) . . . H(n-1). *> *> Each H(i) has the form *> *> H(i) = I - tau * v * v**H *> *> where tau is a complex scalar, and v is a complex vector with *> v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i), *> and tau in TAU(i). *> *> The contents of A on exit are illustrated by the following examples *> with n = 5: *> *> if UPLO = 'U': if UPLO = 'L': *> *> ( d e v2 v3 v4 ) ( d ) *> ( d e v3 v4 ) ( e d ) *> ( d e v4 ) ( v1 e d ) *> ( d e ) ( v1 v2 e d ) *> ( d ) ( v1 v2 v3 e d ) *> *> where d and e denote diagonal and off-diagonal elements of T, and vi *> denotes an element of the vector defining H(i). *> \endverbatim *> * ===================================================================== SUBROUTINE ZHETRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION D( * ), E( * ) COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) COMPLEX*16 CONE PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LQUERY, UPPER INTEGER I, IINFO, IWS, J, KK, LDWORK, LWKOPT, NB, $ NBMIN, NX * .. * .. External Subroutines .. EXTERNAL XERBLA, ZHER2K, ZHETD2, ZLATRD * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. Executable Statements .. * * Test the input parameters * INFO = 0 UPPER = LSAME( UPLO, 'U' ) LQUERY = ( LWORK.EQ.-1 ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 ELSE IF( LWORK.LT.1 .AND. .NOT.LQUERY ) THEN INFO = -9 END IF * IF( INFO.EQ.0 ) THEN * * Determine the block size. * NB = ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) LWKOPT = N*NB WORK( 1 ) = LWKOPT END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHETRD', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN WORK( 1 ) = 1 RETURN END IF * NX = N IWS = 1 IF( NB.GT.1 .AND. NB.LT.N ) THEN * * Determine when to cross over from blocked to unblocked code * (last block is always handled by unblocked code). * NX = MAX( NB, ILAENV( 3, 'ZHETRD', UPLO, N, -1, -1, -1 ) ) IF( NX.LT.N ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: determine the * minimum value of NB, and reduce NB or force use of * unblocked code by setting NX = N. * NB = MAX( LWORK / LDWORK, 1 ) NBMIN = ILAENV( 2, 'ZHETRD', UPLO, N, -1, -1, -1 ) IF( NB.LT.NBMIN ) $ NX = N END IF ELSE NX = N END IF ELSE NB = 1 END IF * IF( UPPER ) THEN * * Reduce the upper triangle of A. * Columns 1:kk are handled by the unblocked method. * KK = N - ( ( N-NX+NB-1 ) / NB )*NB DO 20 I = N - NB + 1, KK + 1, -NB * * Reduce columns i:i+nb-1 to tridiagonal form and form the * matrix W which is needed to update the unreduced part of * the matrix * CALL ZLATRD( UPLO, I+NB-1, NB, A, LDA, E, TAU, WORK, $ LDWORK ) * * Update the unreduced submatrix A(1:i-1,1:i-1), using an * update of the form: A := A - V*W**H - W*V**H * CALL ZHER2K( UPLO, 'No transpose', I-1, NB, -CONE, $ A( 1, I ), LDA, WORK, LDWORK, ONE, A, LDA ) * * Copy superdiagonal elements back into A, and diagonal * elements into D * DO 10 J = I, I + NB - 1 A( J-1, J ) = E( J-1 ) D( J ) = A( J, J ) 10 CONTINUE 20 CONTINUE * * Use unblocked code to reduce the last or only block * CALL ZHETD2( UPLO, KK, A, LDA, D, E, TAU, IINFO ) ELSE * * Reduce the lower triangle of A * DO 40 I = 1, N - NX, NB * * Reduce columns i:i+nb-1 to tridiagonal form and form the * matrix W which is needed to update the unreduced part of * the matrix * CALL ZLATRD( UPLO, N-I+1, NB, A( I, I ), LDA, E( I ), $ TAU( I ), WORK, LDWORK ) * * Update the unreduced submatrix A(i+nb:n,i+nb:n), using * an update of the form: A := A - V*W**H - W*V**H * CALL ZHER2K( UPLO, 'No transpose', N-I-NB+1, NB, -CONE, $ A( I+NB, I ), LDA, WORK( NB+1 ), LDWORK, ONE, $ A( I+NB, I+NB ), LDA ) * * Copy subdiagonal elements back into A, and diagonal * elements into D * DO 30 J = I, I + NB - 1 A( J+1, J ) = E( J ) D( J ) = A( J, J ) 30 CONTINUE 40 CONTINUE * * Use unblocked code to reduce the last or only block * CALL ZHETD2( UPLO, N-I+1, A( I, I ), LDA, D( I ), E( I ), $ TAU( I ), IINFO ) END IF * WORK( 1 ) = LWKOPT RETURN * * End of ZHETRD * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zungql.f0000644002504400250440000000005012337331322016617 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zungql.f0000644002504400250440000002002612337331322017363 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNGQL * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNGQL + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNGQL generates an M-by-N complex matrix Q with orthonormal columns, *> which is defined as the last N columns of a product of K elementary *> reflectors of order M *> *> Q = H(k) . . . H(2) H(1) *> *> as returned by ZGEQLF. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix Q. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix Q. M >= N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines the *> matrix Q. N >= K >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the (n-k+i)-th column must contain the vector which *> defines the elementary reflector H(i), for i = 1,2,...,k, as *> returned by ZGEQLF in the last k columns of its array *> argument A. *> On exit, the M-by-N matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The first dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEQLF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument has an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, LWORK, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER I, IB, IINFO, IWS, J, KK, L, LDWORK, LWKOPT, $ NB, NBMIN, NX * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARFB, ZLARFT, ZUNG2L * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 LQUERY = ( LWORK.EQ.-1 ) IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 END IF * IF( INFO.EQ.0 ) THEN IF( N.EQ.0 ) THEN LWKOPT = 1 ELSE NB = ILAENV( 1, 'ZUNGQL', ' ', M, N, K, -1 ) LWKOPT = N*NB END IF WORK( 1 ) = LWKOPT * IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN INFO = -8 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNGQL', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.LE.0 ) THEN RETURN END IF * NBMIN = 2 NX = 0 IWS = N IF( NB.GT.1 .AND. NB.LT.K ) THEN * * Determine when to cross over from blocked to unblocked code. * NX = MAX( 0, ILAENV( 3, 'ZUNGQL', ' ', M, N, K, -1 ) ) IF( NX.LT.K ) THEN * * Determine if workspace is large enough for blocked code. * LDWORK = N IWS = LDWORK*NB IF( LWORK.LT.IWS ) THEN * * Not enough workspace to use optimal NB: reduce NB and * determine the minimum value of NB. * NB = LWORK / LDWORK NBMIN = MAX( 2, ILAENV( 2, 'ZUNGQL', ' ', M, N, K, -1 ) ) END IF END IF END IF * IF( NB.GE.NBMIN .AND. NB.LT.K .AND. NX.LT.K ) THEN * * Use blocked code after the first block. * The last kk columns are handled by the block method. * KK = MIN( K, ( ( K-NX+NB-1 ) / NB )*NB ) * * Set A(m-kk+1:m,1:n-kk) to zero. * DO 20 J = 1, N - KK DO 10 I = M - KK + 1, M A( I, J ) = ZERO 10 CONTINUE 20 CONTINUE ELSE KK = 0 END IF * * Use unblocked code for the first or only block. * CALL ZUNG2L( M-KK, N-KK, K-KK, A, LDA, TAU, WORK, IINFO ) * IF( KK.GT.0 ) THEN * * Use blocked code * DO 50 I = K - KK + 1, K, NB IB = MIN( NB, K-I+1 ) IF( N-K+I.GT.1 ) THEN * * Form the triangular factor of the block reflector * H = H(i+ib-1) . . . H(i+1) H(i) * CALL ZLARFT( 'Backward', 'Columnwise', M-K+I+IB-1, IB, $ A( 1, N-K+I ), LDA, TAU( I ), WORK, LDWORK ) * * Apply H to A(1:m-k+i+ib-1,1:n-k+i-1) from the left * CALL ZLARFB( 'Left', 'No transpose', 'Backward', $ 'Columnwise', M-K+I+IB-1, N-K+I-1, IB, $ A( 1, N-K+I ), LDA, WORK, LDWORK, A, LDA, $ WORK( IB+1 ), LDWORK ) END IF * * Apply H to rows 1:m-k+i+ib-1 of current block * CALL ZUNG2L( M-K+I+IB-1, IB, IB, A( 1, N-K+I ), LDA, $ TAU( I ), WORK, IINFO ) * * Set rows m-k+i+ib:m of current block to zero * DO 40 J = N - K + I, N - K + I + IB - 1 DO 30 L = M - K + I + IB, M A( L, J ) = ZERO 30 CONTINUE 40 CONTINUE 50 CONTINUE END IF * WORK( 1 ) = IWS RETURN * * End of ZUNGQL * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlaqr0.f0000644002504400250440000000005012337331322016510 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlaqr0.f0000644002504400250440000006101212337331322017254 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLAQR0 computes the eigenvalues of a Hessenberg matrix, and optionally the matrices from the Schur decomposition. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLAQR0 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, * IHIZ, Z, LDZ, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N * LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. * COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLAQR0 computes the eigenvalues of a Hessenberg matrix H *> and, optionally, the matrices T and Z from the Schur decomposition *> H = Z T Z**H, where T is an upper triangular matrix (the *> Schur form), and Z is the unitary matrix of Schur vectors. *> *> Optionally Z may be postmultiplied into an input unitary *> matrix Q so that this routine can give the Schur factorization *> of a matrix A which has been reduced to the Hessenberg form H *> by the unitary matrix Q: A = Q*H*Q**H = (QZ)*H*(QZ)**H. *> \endverbatim * * Arguments: * ========== * *> \param[in] WANTT *> \verbatim *> WANTT is LOGICAL *> = .TRUE. : the full Schur form T is required; *> = .FALSE.: only eigenvalues are required. *> \endverbatim *> *> \param[in] WANTZ *> \verbatim *> WANTZ is LOGICAL *> = .TRUE. : the matrix of Schur vectors Z is required; *> = .FALSE.: Schur vectors are not required. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix H. N .GE. 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> *> It is assumed that H is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1, *> H(ILO,ILO-1) is zero. ILO and IHI are normally set by a *> previous call to ZGEBAL, and then passed to ZGEHRD when the *> matrix output by ZGEBAL is reduced to Hessenberg form. *> Otherwise, ILO and IHI should be set to 1 and N, *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. *> If N = 0, then ILO = 1 and IHI = 0. *> \endverbatim *> *> \param[in,out] H *> \verbatim *> H is COMPLEX*16 array, dimension (LDH,N) *> On entry, the upper Hessenberg matrix H. *> On exit, if INFO = 0 and WANTT is .TRUE., then H *> contains the upper triangular matrix T from the Schur *> decomposition (the Schur form). If INFO = 0 and WANT is *> .FALSE., then the contents of H are unspecified on exit. *> (The output value of H when INFO.GT.0 is given under the *> description of INFO below.) *> *> This subroutine may explicitly set H(i,j) = 0 for i.GT.j and *> j = 1, 2, ... ILO-1 or j = IHI+1, IHI+2, ... N. *> \endverbatim *> *> \param[in] LDH *> \verbatim *> LDH is INTEGER *> The leading dimension of the array H. LDH .GE. max(1,N). *> \endverbatim *> *> \param[out] W *> \verbatim *> W is COMPLEX*16 array, dimension (N) *> The computed eigenvalues of H(ILO:IHI,ILO:IHI) are stored *> in W(ILO:IHI). If WANTT is .TRUE., then the eigenvalues are *> stored in the same order as on the diagonal of the Schur *> form returned in H, with W(i) = H(i,i). *> \endverbatim *> *> \param[in] ILOZ *> \verbatim *> ILOZ is INTEGER *> \endverbatim *> *> \param[in] IHIZ *> \verbatim *> IHIZ is INTEGER *> Specify the rows of Z to which transformations must be *> applied if WANTZ is .TRUE.. *> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N. *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ,IHI) *> If WANTZ is .FALSE., then Z is not referenced. *> If WANTZ is .TRUE., then Z(ILO:IHI,ILOZ:IHIZ) is *> replaced by Z(ILO:IHI,ILOZ:IHIZ)*U where U is the *> orthogonal Schur factor of H(ILO:IHI,ILO:IHI). *> (The output value of Z when INFO.GT.0 is given under *> the description of INFO below.) *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. if WANTZ is .TRUE. *> then LDZ.GE.MAX(1,IHIZ). Otherwize, LDZ.GE.1. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension LWORK *> On exit, if LWORK = -1, WORK(1) returns an estimate of *> the optimal value for LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK .GE. max(1,N) *> is sufficient, but LWORK typically as large as 6*N may *> be required for optimal performance. A workspace query *> to determine the optimal workspace size is recommended. *> *> If LWORK = -1, then ZLAQR0 does a workspace query. *> In this case, ZLAQR0 checks the input parameters and *> estimates the optimal workspace size for the given *> values of N, ILO and IHI. The estimate is returned *> in WORK(1). No error message related to LWORK is *> issued by XERBLA. Neither H nor Z are accessed. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> .GT. 0: if INFO = i, ZLAQR0 failed to compute all of *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) *> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. *> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit *> *> (*) (initial value of H)*U = U*(final value of H) *> *> where U is a unitary matrix. The final *> value of H is upper Hessenberg and triangular in *> rows and columns INFO+1 through IHI. *> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit *> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U *> *> where U is the unitary matrix in (*) (regard- *> less of the value of WANTT.) *> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Contributors: * ================== *> *> Karen Braman and Ralph Byers, Department of Mathematics, *> University of Kansas, USA * *> \par References: * ================ *> *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 *> Performance, SIAM Journal of Matrix Analysis, volume 23, pages *> 929--947, 2002. *> \n *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part II: Aggressive Early Deflation, SIAM Journal *> of Matrix Analysis, volume 23, pages 948--973, 2002. *> * ===================================================================== SUBROUTINE ZLAQR0( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, $ IHIZ, Z, LDZ, WORK, LWORK, INFO ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * ================================================================ * * .. Parameters .. * * ==== Matrices of order NTINY or smaller must be processed by * . ZLAHQR because of insufficient subdiagonal scratch space. * . (This is a hard limit.) ==== INTEGER NTINY PARAMETER ( NTINY = 11 ) * * ==== Exceptional deflation windows: try to cure rare * . slow convergence by varying the size of the * . deflation window after KEXNW iterations. ==== INTEGER KEXNW PARAMETER ( KEXNW = 5 ) * * ==== Exceptional shifts: try to cure rare slow convergence * . with ad-hoc exceptional shifts every KEXSH iterations. * . ==== INTEGER KEXSH PARAMETER ( KEXSH = 6 ) * * ==== The constant WILK1 is used to form the exceptional * . shifts. ==== DOUBLE PRECISION WILK1 PARAMETER ( WILK1 = 0.75d0 ) COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ), $ ONE = ( 1.0d0, 0.0d0 ) ) DOUBLE PRECISION TWO PARAMETER ( TWO = 2.0d0 ) * .. * .. Local Scalars .. COMPLEX*16 AA, BB, CC, CDUM, DD, DET, RTDISC, SWAP, TR2 DOUBLE PRECISION S INTEGER I, INF, IT, ITMAX, K, KACC22, KBOT, KDU, KS, $ KT, KTOP, KU, KV, KWH, KWTOP, KWV, LD, LS, $ LWKOPT, NDEC, NDFL, NH, NHO, NIBBLE, NMIN, NS, $ NSMAX, NSR, NVE, NW, NWMAX, NWR, NWUPBD LOGICAL SORTED CHARACTER JBCMPZ*2 * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Local Arrays .. COMPLEX*16 ZDUM( 1, 1 ) * .. * .. External Subroutines .. EXTERNAL ZLACPY, ZLAHQR, ZLAQR3, ZLAQR4, ZLAQR5 * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, DIMAG, INT, MAX, MIN, MOD, $ SQRT * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. INFO = 0 * * ==== Quick return for N = 0: nothing to do. ==== * IF( N.EQ.0 ) THEN WORK( 1 ) = ONE RETURN END IF * IF( N.LE.NTINY ) THEN * * ==== Tiny matrices must use ZLAHQR. ==== * LWKOPT = 1 IF( LWORK.NE.-1 ) $ CALL ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, $ IHIZ, Z, LDZ, INFO ) ELSE * * ==== Use small bulge multi-shift QR with aggressive early * . deflation on larger-than-tiny matrices. ==== * * ==== Hope for the best. ==== * INFO = 0 * * ==== Set up job flags for ILAENV. ==== * IF( WANTT ) THEN JBCMPZ( 1: 1 ) = 'S' ELSE JBCMPZ( 1: 1 ) = 'E' END IF IF( WANTZ ) THEN JBCMPZ( 2: 2 ) = 'V' ELSE JBCMPZ( 2: 2 ) = 'N' END IF * * ==== NWR = recommended deflation window size. At this * . point, N .GT. NTINY = 11, so there is enough * . subdiagonal workspace for NWR.GE.2 as required. * . (In fact, there is enough subdiagonal space for * . NWR.GE.3.) ==== * NWR = ILAENV( 13, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK ) NWR = MAX( 2, NWR ) NWR = MIN( IHI-ILO+1, ( N-1 ) / 3, NWR ) * * ==== NSR = recommended number of simultaneous shifts. * . At this point N .GT. NTINY = 11, so there is at * . enough subdiagonal workspace for NSR to be even * . and greater than or equal to two as required. ==== * NSR = ILAENV( 15, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK ) NSR = MIN( NSR, ( N+6 ) / 9, IHI-ILO ) NSR = MAX( 2, NSR-MOD( NSR, 2 ) ) * * ==== Estimate optimal workspace ==== * * ==== Workspace query call to ZLAQR3 ==== * CALL ZLAQR3( WANTT, WANTZ, N, ILO, IHI, NWR+1, H, LDH, ILOZ, $ IHIZ, Z, LDZ, LS, LD, W, H, LDH, N, H, LDH, N, H, $ LDH, WORK, -1 ) * * ==== Optimal workspace = MAX(ZLAQR5, ZLAQR3) ==== * LWKOPT = MAX( 3*NSR / 2, INT( WORK( 1 ) ) ) * * ==== Quick return in case of workspace query. ==== * IF( LWORK.EQ.-1 ) THEN WORK( 1 ) = DCMPLX( LWKOPT, 0 ) RETURN END IF * * ==== ZLAHQR/ZLAQR0 crossover point ==== * NMIN = ILAENV( 12, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK ) NMIN = MAX( NTINY, NMIN ) * * ==== Nibble crossover point ==== * NIBBLE = ILAENV( 14, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK ) NIBBLE = MAX( 0, NIBBLE ) * * ==== Accumulate reflections during ttswp? Use block * . 2-by-2 structure during matrix-matrix multiply? ==== * KACC22 = ILAENV( 16, 'ZLAQR0', JBCMPZ, N, ILO, IHI, LWORK ) KACC22 = MAX( 0, KACC22 ) KACC22 = MIN( 2, KACC22 ) * * ==== NWMAX = the largest possible deflation window for * . which there is sufficient workspace. ==== * NWMAX = MIN( ( N-1 ) / 3, LWORK / 2 ) NW = NWMAX * * ==== NSMAX = the Largest number of simultaneous shifts * . for which there is sufficient workspace. ==== * NSMAX = MIN( ( N+6 ) / 9, 2*LWORK / 3 ) NSMAX = NSMAX - MOD( NSMAX, 2 ) * * ==== NDFL: an iteration count restarted at deflation. ==== * NDFL = 1 * * ==== ITMAX = iteration limit ==== * ITMAX = MAX( 30, 2*KEXSH )*MAX( 10, ( IHI-ILO+1 ) ) * * ==== Last row and column in the active block ==== * KBOT = IHI * * ==== Main Loop ==== * DO 70 IT = 1, ITMAX * * ==== Done when KBOT falls below ILO ==== * IF( KBOT.LT.ILO ) $ GO TO 80 * * ==== Locate active block ==== * DO 10 K = KBOT, ILO + 1, -1 IF( H( K, K-1 ).EQ.ZERO ) $ GO TO 20 10 CONTINUE K = ILO 20 CONTINUE KTOP = K * * ==== Select deflation window size: * . Typical Case: * . If possible and advisable, nibble the entire * . active block. If not, use size MIN(NWR,NWMAX) * . or MIN(NWR+1,NWMAX) depending upon which has * . the smaller corresponding subdiagonal entry * . (a heuristic). * . * . Exceptional Case: * . If there have been no deflations in KEXNW or * . more iterations, then vary the deflation window * . size. At first, because, larger windows are, * . in general, more powerful than smaller ones, * . rapidly increase the window to the maximum possible. * . Then, gradually reduce the window size. ==== * NH = KBOT - KTOP + 1 NWUPBD = MIN( NH, NWMAX ) IF( NDFL.LT.KEXNW ) THEN NW = MIN( NWUPBD, NWR ) ELSE NW = MIN( NWUPBD, 2*NW ) END IF IF( NW.LT.NWMAX ) THEN IF( NW.GE.NH-1 ) THEN NW = NH ELSE KWTOP = KBOT - NW + 1 IF( CABS1( H( KWTOP, KWTOP-1 ) ).GT. $ CABS1( H( KWTOP-1, KWTOP-2 ) ) )NW = NW + 1 END IF END IF IF( NDFL.LT.KEXNW ) THEN NDEC = -1 ELSE IF( NDEC.GE.0 .OR. NW.GE.NWUPBD ) THEN NDEC = NDEC + 1 IF( NW-NDEC.LT.2 ) $ NDEC = 0 NW = NW - NDEC END IF * * ==== Aggressive early deflation: * . split workspace under the subdiagonal into * . - an nw-by-nw work array V in the lower * . left-hand-corner, * . - an NW-by-at-least-NW-but-more-is-better * . (NW-by-NHO) horizontal work array along * . the bottom edge, * . - an at-least-NW-but-more-is-better (NHV-by-NW) * . vertical work array along the left-hand-edge. * . ==== * KV = N - NW + 1 KT = NW + 1 NHO = ( N-NW-1 ) - KT + 1 KWV = NW + 2 NVE = ( N-NW ) - KWV + 1 * * ==== Aggressive early deflation ==== * CALL ZLAQR3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, $ IHIZ, Z, LDZ, LS, LD, W, H( KV, 1 ), LDH, NHO, $ H( KV, KT ), LDH, NVE, H( KWV, 1 ), LDH, WORK, $ LWORK ) * * ==== Adjust KBOT accounting for new deflations. ==== * KBOT = KBOT - LD * * ==== KS points to the shifts. ==== * KS = KBOT - LS + 1 * * ==== Skip an expensive QR sweep if there is a (partly * . heuristic) reason to expect that many eigenvalues * . will deflate without it. Here, the QR sweep is * . skipped if many eigenvalues have just been deflated * . or if the remaining active block is small. * IF( ( LD.EQ.0 ) .OR. ( ( 100*LD.LE.NW*NIBBLE ) .AND. ( KBOT- $ KTOP+1.GT.MIN( NMIN, NWMAX ) ) ) ) THEN * * ==== NS = nominal number of simultaneous shifts. * . This may be lowered (slightly) if ZLAQR3 * . did not provide that many shifts. ==== * NS = MIN( NSMAX, NSR, MAX( 2, KBOT-KTOP ) ) NS = NS - MOD( NS, 2 ) * * ==== If there have been no deflations * . in a multiple of KEXSH iterations, * . then try exceptional shifts. * . Otherwise use shifts provided by * . ZLAQR3 above or from the eigenvalues * . of a trailing principal submatrix. ==== * IF( MOD( NDFL, KEXSH ).EQ.0 ) THEN KS = KBOT - NS + 1 DO 30 I = KBOT, KS + 1, -2 W( I ) = H( I, I ) + WILK1*CABS1( H( I, I-1 ) ) W( I-1 ) = W( I ) 30 CONTINUE ELSE * * ==== Got NS/2 or fewer shifts? Use ZLAQR4 or * . ZLAHQR on a trailing principal submatrix to * . get more. (Since NS.LE.NSMAX.LE.(N+6)/9, * . there is enough space below the subdiagonal * . to fit an NS-by-NS scratch array.) ==== * IF( KBOT-KS+1.LE.NS / 2 ) THEN KS = KBOT - NS + 1 KT = N - NS + 1 CALL ZLACPY( 'A', NS, NS, H( KS, KS ), LDH, $ H( KT, 1 ), LDH ) IF( NS.GT.NMIN ) THEN CALL ZLAQR4( .false., .false., NS, 1, NS, $ H( KT, 1 ), LDH, W( KS ), 1, 1, $ ZDUM, 1, WORK, LWORK, INF ) ELSE CALL ZLAHQR( .false., .false., NS, 1, NS, $ H( KT, 1 ), LDH, W( KS ), 1, 1, $ ZDUM, 1, INF ) END IF KS = KS + INF * * ==== In case of a rare QR failure use * . eigenvalues of the trailing 2-by-2 * . principal submatrix. Scale to avoid * . overflows, underflows and subnormals. * . (The scale factor S can not be zero, * . because H(KBOT,KBOT-1) is nonzero.) ==== * IF( KS.GE.KBOT ) THEN S = CABS1( H( KBOT-1, KBOT-1 ) ) + $ CABS1( H( KBOT, KBOT-1 ) ) + $ CABS1( H( KBOT-1, KBOT ) ) + $ CABS1( H( KBOT, KBOT ) ) AA = H( KBOT-1, KBOT-1 ) / S CC = H( KBOT, KBOT-1 ) / S BB = H( KBOT-1, KBOT ) / S DD = H( KBOT, KBOT ) / S TR2 = ( AA+DD ) / TWO DET = ( AA-TR2 )*( DD-TR2 ) - BB*CC RTDISC = SQRT( -DET ) W( KBOT-1 ) = ( TR2+RTDISC )*S W( KBOT ) = ( TR2-RTDISC )*S * KS = KBOT - 1 END IF END IF * IF( KBOT-KS+1.GT.NS ) THEN * * ==== Sort the shifts (Helps a little) ==== * SORTED = .false. DO 50 K = KBOT, KS + 1, -1 IF( SORTED ) $ GO TO 60 SORTED = .true. DO 40 I = KS, K - 1 IF( CABS1( W( I ) ).LT.CABS1( W( I+1 ) ) ) $ THEN SORTED = .false. SWAP = W( I ) W( I ) = W( I+1 ) W( I+1 ) = SWAP END IF 40 CONTINUE 50 CONTINUE 60 CONTINUE END IF END IF * * ==== If there are only two shifts, then use * . only one. ==== * IF( KBOT-KS+1.EQ.2 ) THEN IF( CABS1( W( KBOT )-H( KBOT, KBOT ) ).LT. $ CABS1( W( KBOT-1 )-H( KBOT, KBOT ) ) ) THEN W( KBOT-1 ) = W( KBOT ) ELSE W( KBOT ) = W( KBOT-1 ) END IF END IF * * ==== Use up to NS of the the smallest magnatiude * . shifts. If there aren't NS shifts available, * . then use them all, possibly dropping one to * . make the number of shifts even. ==== * NS = MIN( NS, KBOT-KS+1 ) NS = NS - MOD( NS, 2 ) KS = KBOT - NS + 1 * * ==== Small-bulge multi-shift QR sweep: * . split workspace under the subdiagonal into * . - a KDU-by-KDU work array U in the lower * . left-hand-corner, * . - a KDU-by-at-least-KDU-but-more-is-better * . (KDU-by-NHo) horizontal work array WH along * . the bottom edge, * . - and an at-least-KDU-but-more-is-better-by-KDU * . (NVE-by-KDU) vertical work WV arrow along * . the left-hand-edge. ==== * KDU = 3*NS - 3 KU = N - KDU + 1 KWH = KDU + 1 NHO = ( N-KDU+1-4 ) - ( KDU+1 ) + 1 KWV = KDU + 4 NVE = N - KDU - KWV + 1 * * ==== Small-bulge multi-shift QR sweep ==== * CALL ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NS, $ W( KS ), H, LDH, ILOZ, IHIZ, Z, LDZ, WORK, $ 3, H( KU, 1 ), LDH, NVE, H( KWV, 1 ), LDH, $ NHO, H( KU, KWH ), LDH ) END IF * * ==== Note progress (or the lack of it). ==== * IF( LD.GT.0 ) THEN NDFL = 1 ELSE NDFL = NDFL + 1 END IF * * ==== End of main loop ==== 70 CONTINUE * * ==== Iteration limit exceeded. Set INFO to show where * . the problem occurred and exit. ==== * INFO = KBOT 80 CONTINUE END IF * * ==== Return the optimal value of LWORK. ==== * WORK( 1 ) = DCMPLX( LWKOPT, 0 ) * * ==== End of ZLAQR0 ==== * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlassq.f0000644002504400250440000000005012337331322016566 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlassq.f0000644002504400250440000001040612337331322017333 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLASSQ updates a sum of squares represented in scaled form. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLASSQ + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLASSQ( N, X, INCX, SCALE, SUMSQ ) * * .. Scalar Arguments .. * INTEGER INCX, N * DOUBLE PRECISION SCALE, SUMSQ * .. * .. Array Arguments .. * DOUBLE PRECISION X( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLASSQ returns the values scl and smsq such that *> *> ( scl**2 )*smsq = x( 1 )**2 +...+ x( n )**2 + ( scale**2 )*sumsq, *> *> where x( i ) = X( 1 + ( i - 1 )*INCX ). The value of sumsq is *> assumed to be non-negative and scl returns the value *> *> scl = max( scale, abs( x( i ) ) ). *> *> scale and sumsq must be supplied in SCALE and SUMSQ and *> scl and smsq are overwritten on SCALE and SUMSQ respectively. *> *> The routine makes only one pass through the vector x. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The number of elements to be used from the vector X. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is DOUBLE PRECISION array, dimension (N) *> The vector for which a scaled sum of squares is computed. *> x( i ) = X( 1 + ( i - 1 )*INCX ), 1 <= i <= n. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The increment between successive values of the vector X. *> INCX > 0. *> \endverbatim *> *> \param[in,out] SCALE *> \verbatim *> SCALE is DOUBLE PRECISION *> On entry, the value scale in the equation above. *> On exit, SCALE is overwritten with scl , the scaling factor *> for the sum of squares. *> \endverbatim *> *> \param[in,out] SUMSQ *> \verbatim *> SUMSQ is DOUBLE PRECISION *> On entry, the value sumsq in the equation above. *> On exit, SUMSQ is overwritten with smsq , the basic sum of *> squares from which scl has been factored out. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLASSQ( N, X, INCX, SCALE, SUMSQ ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INCX, N DOUBLE PRECISION SCALE, SUMSQ * .. * .. Array Arguments .. DOUBLE PRECISION X( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER IX DOUBLE PRECISION ABSXI * .. * .. External Functions .. LOGICAL DISNAN EXTERNAL DISNAN * .. * .. Intrinsic Functions .. INTRINSIC ABS * .. * .. Executable Statements .. * IF( N.GT.0 ) THEN DO 10 IX = 1, 1 + ( N-1 )*INCX, INCX ABSXI = ABS( X( IX ) ) IF( ABSXI.GT.ZERO.OR.DISNAN( ABSXI ) ) THEN IF( SCALE.LT.ABSXI ) THEN SUMSQ = 1 + SUMSQ*( SCALE / ABSXI )**2 SCALE = ABSXI ELSE SUMSQ = SUMSQ + ( ABSXI / SCALE )**2 END IF END IF 10 CONTINUE END IF RETURN * * End of DLASSQ * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlaebz.f0000644002504400250440000000005012337331322016540 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlaebz.f0000644002504400250440000005404512337331322017314 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLAEBZ computes the number of eigenvalues of a real symmetric tridiagonal matrix which are less than or equal to a given value, and performs other tasks required by the routine sstebz. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLAEBZ + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLAEBZ( IJOB, NITMAX, N, MMAX, MINP, NBMIN, ABSTOL, * RELTOL, PIVMIN, D, E, E2, NVAL, AB, C, MOUT, * NAB, WORK, IWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IJOB, INFO, MINP, MMAX, MOUT, N, NBMIN, NITMAX * DOUBLE PRECISION ABSTOL, PIVMIN, RELTOL * .. * .. Array Arguments .. * INTEGER IWORK( * ), NAB( MMAX, * ), NVAL( * ) * DOUBLE PRECISION AB( MMAX, * ), C( * ), D( * ), E( * ), E2( * ), * $ WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLAEBZ contains the iteration loops which compute and use the *> function N(w), which is the count of eigenvalues of a symmetric *> tridiagonal matrix T less than or equal to its argument w. It *> performs a choice of two types of loops: *> *> IJOB=1, followed by *> IJOB=2: It takes as input a list of intervals and returns a list of *> sufficiently small intervals whose union contains the same *> eigenvalues as the union of the original intervals. *> The input intervals are (AB(j,1),AB(j,2)], j=1,...,MINP. *> The output interval (AB(j,1),AB(j,2)] will contain *> eigenvalues NAB(j,1)+1,...,NAB(j,2), where 1 <= j <= MOUT. *> *> IJOB=3: It performs a binary search in each input interval *> (AB(j,1),AB(j,2)] for a point w(j) such that *> N(w(j))=NVAL(j), and uses C(j) as the starting point of *> the search. If such a w(j) is found, then on output *> AB(j,1)=AB(j,2)=w. If no such w(j) is found, then on output *> (AB(j,1),AB(j,2)] will be a small interval containing the *> point where N(w) jumps through NVAL(j), unless that point *> lies outside the initial interval. *> *> Note that the intervals are in all cases half-open intervals, *> i.e., of the form (a,b] , which includes b but not a . *> *> To avoid underflow, the matrix should be scaled so that its largest *> element is no greater than overflow**(1/2) * underflow**(1/4) *> in absolute value. To assure the most accurate computation *> of small eigenvalues, the matrix should be scaled to be *> not much smaller than that, either. *> *> See W. Kahan "Accurate Eigenvalues of a Symmetric Tridiagonal *> Matrix", Report CS41, Computer Science Dept., Stanford *> University, July 21, 1966 *> *> Note: the arguments are, in general, *not* checked for unreasonable *> values. *> \endverbatim * * Arguments: * ========== * *> \param[in] IJOB *> \verbatim *> IJOB is INTEGER *> Specifies what is to be done: *> = 1: Compute NAB for the initial intervals. *> = 2: Perform bisection iteration to find eigenvalues of T. *> = 3: Perform bisection iteration to invert N(w), i.e., *> to find a point which has a specified number of *> eigenvalues of T to its left. *> Other values will cause DLAEBZ to return with INFO=-1. *> \endverbatim *> *> \param[in] NITMAX *> \verbatim *> NITMAX is INTEGER *> The maximum number of "levels" of bisection to be *> performed, i.e., an interval of width W will not be made *> smaller than 2^(-NITMAX) * W. If not all intervals *> have converged after NITMAX iterations, then INFO is set *> to the number of non-converged intervals. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The dimension n of the tridiagonal matrix T. It must be at *> least 1. *> \endverbatim *> *> \param[in] MMAX *> \verbatim *> MMAX is INTEGER *> The maximum number of intervals. If more than MMAX intervals *> are generated, then DLAEBZ will quit with INFO=MMAX+1. *> \endverbatim *> *> \param[in] MINP *> \verbatim *> MINP is INTEGER *> The initial number of intervals. It may not be greater than *> MMAX. *> \endverbatim *> *> \param[in] NBMIN *> \verbatim *> NBMIN is INTEGER *> The smallest number of intervals that should be processed *> using a vector loop. If zero, then only the scalar loop *> will be used. *> \endverbatim *> *> \param[in] ABSTOL *> \verbatim *> ABSTOL is DOUBLE PRECISION *> The minimum (absolute) width of an interval. When an *> interval is narrower than ABSTOL, or than RELTOL times the *> larger (in magnitude) endpoint, then it is considered to be *> sufficiently small, i.e., converged. This must be at least *> zero. *> \endverbatim *> *> \param[in] RELTOL *> \verbatim *> RELTOL is DOUBLE PRECISION *> The minimum relative width of an interval. When an interval *> is narrower than ABSTOL, or than RELTOL times the larger (in *> magnitude) endpoint, then it is considered to be *> sufficiently small, i.e., converged. Note: this should *> always be at least radix*machine epsilon. *> \endverbatim *> *> \param[in] PIVMIN *> \verbatim *> PIVMIN is DOUBLE PRECISION *> The minimum absolute value of a "pivot" in the Sturm *> sequence loop. *> This must be at least max |e(j)**2|*safe_min and at *> least safe_min, where safe_min is at least *> the smallest number that can divide one without overflow. *> \endverbatim *> *> \param[in] D *> \verbatim *> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of the tridiagonal matrix T. *> \endverbatim *> *> \param[in] E *> \verbatim *> E is DOUBLE PRECISION array, dimension (N) *> The offdiagonal elements of the tridiagonal matrix T in *> positions 1 through N-1. E(N) is arbitrary. *> \endverbatim *> *> \param[in] E2 *> \verbatim *> E2 is DOUBLE PRECISION array, dimension (N) *> The squares of the offdiagonal elements of the tridiagonal *> matrix T. E2(N) is ignored. *> \endverbatim *> *> \param[in,out] NVAL *> \verbatim *> NVAL is INTEGER array, dimension (MINP) *> If IJOB=1 or 2, not referenced. *> If IJOB=3, the desired values of N(w). The elements of NVAL *> will be reordered to correspond with the intervals in AB. *> Thus, NVAL(j) on output will not, in general be the same as *> NVAL(j) on input, but it will correspond with the interval *> (AB(j,1),AB(j,2)] on output. *> \endverbatim *> *> \param[in,out] AB *> \verbatim *> AB is DOUBLE PRECISION array, dimension (MMAX,2) *> The endpoints of the intervals. AB(j,1) is a(j), the left *> endpoint of the j-th interval, and AB(j,2) is b(j), the *> right endpoint of the j-th interval. The input intervals *> will, in general, be modified, split, and reordered by the *> calculation. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array, dimension (MMAX) *> If IJOB=1, ignored. *> If IJOB=2, workspace. *> If IJOB=3, then on input C(j) should be initialized to the *> first search point in the binary search. *> \endverbatim *> *> \param[out] MOUT *> \verbatim *> MOUT is INTEGER *> If IJOB=1, the number of eigenvalues in the intervals. *> If IJOB=2 or 3, the number of intervals output. *> If IJOB=3, MOUT will equal MINP. *> \endverbatim *> *> \param[in,out] NAB *> \verbatim *> NAB is INTEGER array, dimension (MMAX,2) *> If IJOB=1, then on output NAB(i,j) will be set to N(AB(i,j)). *> If IJOB=2, then on input, NAB(i,j) should be set. It must *> satisfy the condition: *> N(AB(i,1)) <= NAB(i,1) <= NAB(i,2) <= N(AB(i,2)), *> which means that in interval i only eigenvalues *> NAB(i,1)+1,...,NAB(i,2) will be considered. Usually, *> NAB(i,j)=N(AB(i,j)), from a previous call to DLAEBZ with *> IJOB=1. *> On output, NAB(i,j) will contain *> max(na(k),min(nb(k),N(AB(i,j)))), where k is the index of *> the input interval that the output interval *> (AB(j,1),AB(j,2)] came from, and na(k) and nb(k) are the *> the input values of NAB(k,1) and NAB(k,2). *> If IJOB=3, then on output, NAB(i,j) contains N(AB(i,j)), *> unless N(w) > NVAL(i) for all search points w , in which *> case NAB(i,1) will not be modified, i.e., the output *> value will be the same as the input value (modulo *> reorderings -- see NVAL and AB), or unless N(w) < NVAL(i) *> for all search points w , in which case NAB(i,2) will *> not be modified. Normally, NAB should be set to some *> distinctive value(s) before DLAEBZ is called. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MMAX) *> Workspace. *> \endverbatim *> *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, dimension (MMAX) *> Workspace. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: All intervals converged. *> = 1--MMAX: The last INFO intervals did not converge. *> = MMAX+1: More than MMAX intervals were generated. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> This routine is intended to be called only by other LAPACK *> routines, thus the interface is less user-friendly. It is intended *> for two purposes: *> *> (a) finding eigenvalues. In this case, DLAEBZ should have one or *> more initial intervals set up in AB, and DLAEBZ should be called *> with IJOB=1. This sets up NAB, and also counts the eigenvalues. *> Intervals with no eigenvalues would usually be thrown out at *> this point. Also, if not all the eigenvalues in an interval i *> are desired, NAB(i,1) can be increased or NAB(i,2) decreased. *> For example, set NAB(i,1)=NAB(i,2)-1 to get the largest *> eigenvalue. DLAEBZ is then called with IJOB=2 and MMAX *> no smaller than the value of MOUT returned by the call with *> IJOB=1. After this (IJOB=2) call, eigenvalues NAB(i,1)+1 *> through NAB(i,2) are approximately AB(i,1) (or AB(i,2)) to the *> tolerance specified by ABSTOL and RELTOL. *> *> (b) finding an interval (a',b'] containing eigenvalues w(f),...,w(l). *> In this case, start with a Gershgorin interval (a,b). Set up *> AB to contain 2 search intervals, both initially (a,b). One *> NVAL element should contain f-1 and the other should contain l *> , while C should contain a and b, resp. NAB(i,1) should be -1 *> and NAB(i,2) should be N+1, to flag an error if the desired *> interval does not lie in (a,b). DLAEBZ is then called with *> IJOB=3. On exit, if w(f-1) < w(f), then one of the intervals -- *> j -- will have AB(j,1)=AB(j,2) and NAB(j,1)=NAB(j,2)=f-1, while *> if, to the specified tolerance, w(f-k)=...=w(f+r), k > 0 and r *> >= 0, then the interval will have N(AB(j,1))=NAB(j,1)=f-k and *> N(AB(j,2))=NAB(j,2)=f+r. The cases w(l) < w(l+1) and *> w(l-r)=...=w(l+k) are handled similarly. *> \endverbatim *> * ===================================================================== SUBROUTINE DLAEBZ( IJOB, NITMAX, N, MMAX, MINP, NBMIN, ABSTOL, $ RELTOL, PIVMIN, D, E, E2, NVAL, AB, C, MOUT, $ NAB, WORK, IWORK, INFO ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IJOB, INFO, MINP, MMAX, MOUT, N, NBMIN, NITMAX DOUBLE PRECISION ABSTOL, PIVMIN, RELTOL * .. * .. Array Arguments .. INTEGER IWORK( * ), NAB( MMAX, * ), NVAL( * ) DOUBLE PRECISION AB( MMAX, * ), C( * ), D( * ), E( * ), E2( * ), $ WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, TWO, HALF PARAMETER ( ZERO = 0.0D0, TWO = 2.0D0, $ HALF = 1.0D0 / TWO ) * .. * .. Local Scalars .. INTEGER ITMP1, ITMP2, J, JI, JIT, JP, KF, KFNEW, KL, $ KLNEW DOUBLE PRECISION TMP1, TMP2 * .. * .. Intrinsic Functions .. INTRINSIC ABS, MAX, MIN * .. * .. Executable Statements .. * * Check for Errors * INFO = 0 IF( IJOB.LT.1 .OR. IJOB.GT.3 ) THEN INFO = -1 RETURN END IF * * Initialize NAB * IF( IJOB.EQ.1 ) THEN * * Compute the number of eigenvalues in the initial intervals. * MOUT = 0 DO 30 JI = 1, MINP DO 20 JP = 1, 2 TMP1 = D( 1 ) - AB( JI, JP ) IF( ABS( TMP1 ).LT.PIVMIN ) $ TMP1 = -PIVMIN NAB( JI, JP ) = 0 IF( TMP1.LE.ZERO ) $ NAB( JI, JP ) = 1 * DO 10 J = 2, N TMP1 = D( J ) - E2( J-1 ) / TMP1 - AB( JI, JP ) IF( ABS( TMP1 ).LT.PIVMIN ) $ TMP1 = -PIVMIN IF( TMP1.LE.ZERO ) $ NAB( JI, JP ) = NAB( JI, JP ) + 1 10 CONTINUE 20 CONTINUE MOUT = MOUT + NAB( JI, 2 ) - NAB( JI, 1 ) 30 CONTINUE RETURN END IF * * Initialize for loop * * KF and KL have the following meaning: * Intervals 1,...,KF-1 have converged. * Intervals KF,...,KL still need to be refined. * KF = 1 KL = MINP * * If IJOB=2, initialize C. * If IJOB=3, use the user-supplied starting point. * IF( IJOB.EQ.2 ) THEN DO 40 JI = 1, MINP C( JI ) = HALF*( AB( JI, 1 )+AB( JI, 2 ) ) 40 CONTINUE END IF * * Iteration loop * DO 130 JIT = 1, NITMAX * * Loop over intervals * IF( KL-KF+1.GE.NBMIN .AND. NBMIN.GT.0 ) THEN * * Begin of Parallel Version of the loop * DO 60 JI = KF, KL * * Compute N(c), the number of eigenvalues less than c * WORK( JI ) = D( 1 ) - C( JI ) IWORK( JI ) = 0 IF( WORK( JI ).LE.PIVMIN ) THEN IWORK( JI ) = 1 WORK( JI ) = MIN( WORK( JI ), -PIVMIN ) END IF * DO 50 J = 2, N WORK( JI ) = D( J ) - E2( J-1 ) / WORK( JI ) - C( JI ) IF( WORK( JI ).LE.PIVMIN ) THEN IWORK( JI ) = IWORK( JI ) + 1 WORK( JI ) = MIN( WORK( JI ), -PIVMIN ) END IF 50 CONTINUE 60 CONTINUE * IF( IJOB.LE.2 ) THEN * * IJOB=2: Choose all intervals containing eigenvalues. * KLNEW = KL DO 70 JI = KF, KL * * Insure that N(w) is monotone * IWORK( JI ) = MIN( NAB( JI, 2 ), $ MAX( NAB( JI, 1 ), IWORK( JI ) ) ) * * Update the Queue -- add intervals if both halves * contain eigenvalues. * IF( IWORK( JI ).EQ.NAB( JI, 2 ) ) THEN * * No eigenvalue in the upper interval: * just use the lower interval. * AB( JI, 2 ) = C( JI ) * ELSE IF( IWORK( JI ).EQ.NAB( JI, 1 ) ) THEN * * No eigenvalue in the lower interval: * just use the upper interval. * AB( JI, 1 ) = C( JI ) ELSE KLNEW = KLNEW + 1 IF( KLNEW.LE.MMAX ) THEN * * Eigenvalue in both intervals -- add upper to * queue. * AB( KLNEW, 2 ) = AB( JI, 2 ) NAB( KLNEW, 2 ) = NAB( JI, 2 ) AB( KLNEW, 1 ) = C( JI ) NAB( KLNEW, 1 ) = IWORK( JI ) AB( JI, 2 ) = C( JI ) NAB( JI, 2 ) = IWORK( JI ) ELSE INFO = MMAX + 1 END IF END IF 70 CONTINUE IF( INFO.NE.0 ) $ RETURN KL = KLNEW ELSE * * IJOB=3: Binary search. Keep only the interval containing * w s.t. N(w) = NVAL * DO 80 JI = KF, KL IF( IWORK( JI ).LE.NVAL( JI ) ) THEN AB( JI, 1 ) = C( JI ) NAB( JI, 1 ) = IWORK( JI ) END IF IF( IWORK( JI ).GE.NVAL( JI ) ) THEN AB( JI, 2 ) = C( JI ) NAB( JI, 2 ) = IWORK( JI ) END IF 80 CONTINUE END IF * ELSE * * End of Parallel Version of the loop * * Begin of Serial Version of the loop * KLNEW = KL DO 100 JI = KF, KL * * Compute N(w), the number of eigenvalues less than w * TMP1 = C( JI ) TMP2 = D( 1 ) - TMP1 ITMP1 = 0 IF( TMP2.LE.PIVMIN ) THEN ITMP1 = 1 TMP2 = MIN( TMP2, -PIVMIN ) END IF * DO 90 J = 2, N TMP2 = D( J ) - E2( J-1 ) / TMP2 - TMP1 IF( TMP2.LE.PIVMIN ) THEN ITMP1 = ITMP1 + 1 TMP2 = MIN( TMP2, -PIVMIN ) END IF 90 CONTINUE * IF( IJOB.LE.2 ) THEN * * IJOB=2: Choose all intervals containing eigenvalues. * * Insure that N(w) is monotone * ITMP1 = MIN( NAB( JI, 2 ), $ MAX( NAB( JI, 1 ), ITMP1 ) ) * * Update the Queue -- add intervals if both halves * contain eigenvalues. * IF( ITMP1.EQ.NAB( JI, 2 ) ) THEN * * No eigenvalue in the upper interval: * just use the lower interval. * AB( JI, 2 ) = TMP1 * ELSE IF( ITMP1.EQ.NAB( JI, 1 ) ) THEN * * No eigenvalue in the lower interval: * just use the upper interval. * AB( JI, 1 ) = TMP1 ELSE IF( KLNEW.LT.MMAX ) THEN * * Eigenvalue in both intervals -- add upper to queue. * KLNEW = KLNEW + 1 AB( KLNEW, 2 ) = AB( JI, 2 ) NAB( KLNEW, 2 ) = NAB( JI, 2 ) AB( KLNEW, 1 ) = TMP1 NAB( KLNEW, 1 ) = ITMP1 AB( JI, 2 ) = TMP1 NAB( JI, 2 ) = ITMP1 ELSE INFO = MMAX + 1 RETURN END IF ELSE * * IJOB=3: Binary search. Keep only the interval * containing w s.t. N(w) = NVAL * IF( ITMP1.LE.NVAL( JI ) ) THEN AB( JI, 1 ) = TMP1 NAB( JI, 1 ) = ITMP1 END IF IF( ITMP1.GE.NVAL( JI ) ) THEN AB( JI, 2 ) = TMP1 NAB( JI, 2 ) = ITMP1 END IF END IF 100 CONTINUE KL = KLNEW * END IF * * Check for convergence * KFNEW = KF DO 110 JI = KF, KL TMP1 = ABS( AB( JI, 2 )-AB( JI, 1 ) ) TMP2 = MAX( ABS( AB( JI, 2 ) ), ABS( AB( JI, 1 ) ) ) IF( TMP1.LT.MAX( ABSTOL, PIVMIN, RELTOL*TMP2 ) .OR. $ NAB( JI, 1 ).GE.NAB( JI, 2 ) ) THEN * * Converged -- Swap with position KFNEW, * then increment KFNEW * IF( JI.GT.KFNEW ) THEN TMP1 = AB( JI, 1 ) TMP2 = AB( JI, 2 ) ITMP1 = NAB( JI, 1 ) ITMP2 = NAB( JI, 2 ) AB( JI, 1 ) = AB( KFNEW, 1 ) AB( JI, 2 ) = AB( KFNEW, 2 ) NAB( JI, 1 ) = NAB( KFNEW, 1 ) NAB( JI, 2 ) = NAB( KFNEW, 2 ) AB( KFNEW, 1 ) = TMP1 AB( KFNEW, 2 ) = TMP2 NAB( KFNEW, 1 ) = ITMP1 NAB( KFNEW, 2 ) = ITMP2 IF( IJOB.EQ.3 ) THEN ITMP1 = NVAL( JI ) NVAL( JI ) = NVAL( KFNEW ) NVAL( KFNEW ) = ITMP1 END IF END IF KFNEW = KFNEW + 1 END IF 110 CONTINUE KF = KFNEW * * Choose Midpoints * DO 120 JI = KF, KL C( JI ) = HALF*( AB( JI, 1 )+AB( JI, 2 ) ) 120 CONTINUE * * If no more intervals to refine, quit. * IF( KF.GT.KL ) $ GO TO 140 130 CONTINUE * * Converged * 140 CONTINUE INFO = MAX( KL+1-KF, 0 ) MOUT = KL * RETURN * * End of DLAEBZ * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dorg2l.f0000644002504400250440000000005012337331322016470 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dorg2l.f0000644002504400250440000001223012337331322017232 0ustar00dewhurstdewhurst00000000000000*> \brief \b DORG2L generates all or part of the orthogonal matrix Q from a QL factorization determined by sgeqlf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DORG2L + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DORG2L( M, N, K, A, LDA, TAU, WORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, K, LDA, M, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DORG2L generates an m by n real matrix Q with orthonormal columns, *> which is defined as the last n columns of a product of k elementary *> reflectors of order m *> *> Q = H(k) . . . H(2) H(1) *> *> as returned by DGEQLF. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix Q. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix Q. M >= N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines the *> matrix Q. N >= K >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the (n-k+i)-th column must contain the vector which *> defines the elementary reflector H(i), for i = 1,2,...,k, as *> returned by DGEQLF in the last k columns of its array *> argument A. *> On exit, the m by n matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The first dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by DGEQLF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument has an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERcomputational * * ===================================================================== SUBROUTINE DORG2L( M, N, K, A, LDA, TAU, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, M, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, II, J, L * .. * .. External Subroutines .. EXTERNAL DLARF, DSCAL, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DORG2L', -INFO ) RETURN END IF * * Quick return if possible * IF( N.LE.0 ) $ RETURN * * Initialise columns 1:n-k to columns of the unit matrix * DO 20 J = 1, N - K DO 10 L = 1, M A( L, J ) = ZERO 10 CONTINUE A( M-N+J, J ) = ONE 20 CONTINUE * DO 40 I = 1, K II = N - K + I * * Apply H(i) to A(1:m-k+i,1:n-k+i) from the left * A( M-N+II, II ) = ONE CALL DLARF( 'Left', M-N+II, II-1, A( 1, II ), 1, TAU( I ), A, $ LDA, WORK ) CALL DSCAL( M-N+II-1, -TAU( I ), A( 1, II ), 1 ) A( M-N+II, II ) = ONE - TAU( I ) * * Set A(m-k+i+1:m,n-k+i) to zero * DO 30 L = M - N + II + 1, M A( L, II ) = ZERO 30 CONTINUE 40 CONTINUE RETURN * * End of DORG2L * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlabad.f0000644002504400250440000000005012337331322016506 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlabad.f0000644002504400250440000000604012337331322017252 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLABAD * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLABAD + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLABAD( SMALL, LARGE ) * * .. Scalar Arguments .. * DOUBLE PRECISION LARGE, SMALL * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLABAD takes as input the values computed by DLAMCH for underflow and *> overflow, and returns the square root of each of these values if the *> log of LARGE is sufficiently large. This subroutine is intended to *> identify machines with a large exponent range, such as the Crays, and *> redefine the underflow and overflow limits to be the square roots of *> the values computed by DLAMCH. This subroutine is needed because *> DLAMCH does not compensate for poor arithmetic in the upper half of *> the exponent range, as is found on a Cray. *> \endverbatim * * Arguments: * ========== * *> \param[in,out] SMALL *> \verbatim *> SMALL is DOUBLE PRECISION *> On entry, the underflow threshold as computed by DLAMCH. *> On exit, if LOG10(LARGE) is sufficiently large, the square *> root of SMALL, otherwise unchanged. *> \endverbatim *> *> \param[in,out] LARGE *> \verbatim *> LARGE is DOUBLE PRECISION *> On entry, the overflow threshold as computed by DLAMCH. *> On exit, if LOG10(LARGE) is sufficiently large, the square *> root of LARGE, otherwise unchanged. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup auxOTHERauxiliary * * ===================================================================== SUBROUTINE DLABAD( SMALL, LARGE ) * * -- LAPACK auxiliary routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION LARGE, SMALL * .. * * ===================================================================== * * .. Intrinsic Functions .. INTRINSIC LOG10, SQRT * .. * .. Executable Statements .. * * If it looks like we're on a Cray, take the square root of * SMALL and LARGE to avoid overflow and underflow problems. * IF( LOG10( LARGE ).GT.2000.D0 ) THEN SMALL = SQRT( SMALL ) LARGE = SQRT( LARGE ) END IF * RETURN * * End of DLABAD * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlarfg.f0000644002504400250440000000005012337331322016536 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlarfg.f0000644002504400250440000001161412337331322017305 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLARFG generates an elementary reflector (Householder matrix). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLARFG + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLARFG( N, ALPHA, X, INCX, TAU ) * * .. Scalar Arguments .. * INTEGER INCX, N * DOUBLE PRECISION ALPHA, TAU * .. * .. Array Arguments .. * DOUBLE PRECISION X( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLARFG generates a real elementary reflector H of order n, such *> that *> *> H * ( alpha ) = ( beta ), H**T * H = I. *> ( x ) ( 0 ) *> *> where alpha and beta are scalars, and x is an (n-1)-element real *> vector. H is represented in the form *> *> H = I - tau * ( 1 ) * ( 1 v**T ) , *> ( v ) *> *> where tau is a real scalar and v is a real (n-1)-element *> vector. *> *> If the elements of x are all zero, then tau = 0 and H is taken to be *> the unit matrix. *> *> Otherwise 1 <= tau <= 2. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the elementary reflector. *> \endverbatim *> *> \param[in,out] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION *> On entry, the value alpha. *> On exit, it is overwritten with the value beta. *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is DOUBLE PRECISION array, dimension *> (1+(N-2)*abs(INCX)) *> On entry, the vector x. *> On exit, it is overwritten with the vector v. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The increment between elements of X. INCX > 0. *> \endverbatim *> *> \param[out] TAU *> \verbatim *> TAU is DOUBLE PRECISION *> The value tau. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERauxiliary * * ===================================================================== SUBROUTINE DLARFG( N, ALPHA, X, INCX, TAU ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INCX, N DOUBLE PRECISION ALPHA, TAU * .. * .. Array Arguments .. DOUBLE PRECISION X( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER J, KNT DOUBLE PRECISION BETA, RSAFMN, SAFMIN, XNORM * .. * .. External Functions .. DOUBLE PRECISION DLAMCH, DLAPY2, DNRM2 EXTERNAL DLAMCH, DLAPY2, DNRM2 * .. * .. Intrinsic Functions .. INTRINSIC ABS, SIGN * .. * .. External Subroutines .. EXTERNAL DSCAL * .. * .. Executable Statements .. * IF( N.LE.1 ) THEN TAU = ZERO RETURN END IF * XNORM = DNRM2( N-1, X, INCX ) * IF( XNORM.EQ.ZERO ) THEN * * H = I * TAU = ZERO ELSE * * general case * BETA = -SIGN( DLAPY2( ALPHA, XNORM ), ALPHA ) SAFMIN = DLAMCH( 'S' ) / DLAMCH( 'E' ) KNT = 0 IF( ABS( BETA ).LT.SAFMIN ) THEN * * XNORM, BETA may be inaccurate; scale X and recompute them * RSAFMN = ONE / SAFMIN 10 CONTINUE KNT = KNT + 1 CALL DSCAL( N-1, RSAFMN, X, INCX ) BETA = BETA*RSAFMN ALPHA = ALPHA*RSAFMN IF( ABS( BETA ).LT.SAFMIN ) $ GO TO 10 * * New BETA is at most 1, at least SAFMIN * XNORM = DNRM2( N-1, X, INCX ) BETA = -SIGN( DLAPY2( ALPHA, XNORM ), ALPHA ) END IF TAU = ( BETA-ALPHA ) / BETA CALL DSCAL( N-1, ONE / ( ALPHA-BETA ), X, INCX ) * * If ALPHA is subnormal, it may lose relative accuracy * DO 20 J = 1, KNT BETA = BETA*SAFMIN 20 CONTINUE ALPHA = BETA END IF * RETURN * * End of DLARFG * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsytrs.f0000644002504400250440000000005012337331322016627 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsytrs.f0000644002504400250440000003021312337331322017372 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYTRS * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYTRS + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYTRS solves a system of linear equations A*X = B with a real *> symmetric matrix A using the factorization A = U*D*U**T or *> A = L*D*L**T computed by DSYTRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the details of the factorization are stored *> as an upper or lower triangular matrix. *> = 'U': Upper triangular, form is A = U*D*U**T; *> = 'L': Lower triangular, form is A = L*D*L**T. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in] NRHS *> \verbatim *> NRHS is INTEGER *> The number of right hand sides, i.e., the number of columns *> of the matrix B. NRHS >= 0. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> The block diagonal matrix D and the multipliers used to *> obtain the factor U or L as computed by DSYTRF. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (N) *> Details of the interchanges and the block structure of D *> as determined by DSYTRF. *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array, dimension (LDB,NRHS) *> On entry, the right hand side matrix B. *> On exit, the solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYcomputational * * ===================================================================== SUBROUTINE DSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, LDB, N, NRHS * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D+0 ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER J, K, KP DOUBLE PRECISION AK, AKM1, AKM1K, BK, BKM1, DENOM * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL DGEMV, DGER, DSCAL, DSWAP, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( NRHS.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -8 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYTRS', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 .OR. NRHS.EQ.0 ) $ RETURN * IF( UPPER ) THEN * * Solve A*X = B, where A = U*D*U**T. * * First solve U*D*X = B, overwriting B with X. * * K is the main loop index, decreasing from N to 1 in steps of * 1 or 2, depending on the size of the diagonal blocks. * K = N 10 CONTINUE * * If K < 1, exit from loop. * IF( K.LT.1 ) $ GO TO 30 * IF( IPIV( K ).GT.0 ) THEN * * 1 x 1 diagonal block * * Interchange rows K and IPIV(K). * KP = IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) * * Multiply by inv(U(K)), where U(K) is the transformation * stored in column K of A. * CALL DGER( K-1, NRHS, -ONE, A( 1, K ), 1, B( K, 1 ), LDB, $ B( 1, 1 ), LDB ) * * Multiply by the inverse of the diagonal block. * CALL DSCAL( NRHS, ONE / A( K, K ), B( K, 1 ), LDB ) K = K - 1 ELSE * * 2 x 2 diagonal block * * Interchange rows K-1 and -IPIV(K). * KP = -IPIV( K ) IF( KP.NE.K-1 ) $ CALL DSWAP( NRHS, B( K-1, 1 ), LDB, B( KP, 1 ), LDB ) * * Multiply by inv(U(K)), where U(K) is the transformation * stored in columns K-1 and K of A. * CALL DGER( K-2, NRHS, -ONE, A( 1, K ), 1, B( K, 1 ), LDB, $ B( 1, 1 ), LDB ) CALL DGER( K-2, NRHS, -ONE, A( 1, K-1 ), 1, B( K-1, 1 ), $ LDB, B( 1, 1 ), LDB ) * * Multiply by the inverse of the diagonal block. * AKM1K = A( K-1, K ) AKM1 = A( K-1, K-1 ) / AKM1K AK = A( K, K ) / AKM1K DENOM = AKM1*AK - ONE DO 20 J = 1, NRHS BKM1 = B( K-1, J ) / AKM1K BK = B( K, J ) / AKM1K B( K-1, J ) = ( AK*BKM1-BK ) / DENOM B( K, J ) = ( AKM1*BK-BKM1 ) / DENOM 20 CONTINUE K = K - 2 END IF * GO TO 10 30 CONTINUE * * Next solve U**T *X = B, overwriting B with X. * * K is the main loop index, increasing from 1 to N in steps of * 1 or 2, depending on the size of the diagonal blocks. * K = 1 40 CONTINUE * * If K > N, exit from loop. * IF( K.GT.N ) $ GO TO 50 * IF( IPIV( K ).GT.0 ) THEN * * 1 x 1 diagonal block * * Multiply by inv(U**T(K)), where U(K) is the transformation * stored in column K of A. * CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, A( 1, K ), $ 1, ONE, B( K, 1 ), LDB ) * * Interchange rows K and IPIV(K). * KP = IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K = K + 1 ELSE * * 2 x 2 diagonal block * * Multiply by inv(U**T(K+1)), where U(K+1) is the transformation * stored in columns K and K+1 of A. * CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, A( 1, K ), $ 1, ONE, B( K, 1 ), LDB ) CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, $ A( 1, K+1 ), 1, ONE, B( K+1, 1 ), LDB ) * * Interchange rows K and -IPIV(K). * KP = -IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K = K + 2 END IF * GO TO 40 50 CONTINUE * ELSE * * Solve A*X = B, where A = L*D*L**T. * * First solve L*D*X = B, overwriting B with X. * * K is the main loop index, increasing from 1 to N in steps of * 1 or 2, depending on the size of the diagonal blocks. * K = 1 60 CONTINUE * * If K > N, exit from loop. * IF( K.GT.N ) $ GO TO 80 * IF( IPIV( K ).GT.0 ) THEN * * 1 x 1 diagonal block * * Interchange rows K and IPIV(K). * KP = IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) * * Multiply by inv(L(K)), where L(K) is the transformation * stored in column K of A. * IF( K.LT.N ) $ CALL DGER( N-K, NRHS, -ONE, A( K+1, K ), 1, B( K, 1 ), $ LDB, B( K+1, 1 ), LDB ) * * Multiply by the inverse of the diagonal block. * CALL DSCAL( NRHS, ONE / A( K, K ), B( K, 1 ), LDB ) K = K + 1 ELSE * * 2 x 2 diagonal block * * Interchange rows K+1 and -IPIV(K). * KP = -IPIV( K ) IF( KP.NE.K+1 ) $ CALL DSWAP( NRHS, B( K+1, 1 ), LDB, B( KP, 1 ), LDB ) * * Multiply by inv(L(K)), where L(K) is the transformation * stored in columns K and K+1 of A. * IF( K.LT.N-1 ) THEN CALL DGER( N-K-1, NRHS, -ONE, A( K+2, K ), 1, B( K, 1 ), $ LDB, B( K+2, 1 ), LDB ) CALL DGER( N-K-1, NRHS, -ONE, A( K+2, K+1 ), 1, $ B( K+1, 1 ), LDB, B( K+2, 1 ), LDB ) END IF * * Multiply by the inverse of the diagonal block. * AKM1K = A( K+1, K ) AKM1 = A( K, K ) / AKM1K AK = A( K+1, K+1 ) / AKM1K DENOM = AKM1*AK - ONE DO 70 J = 1, NRHS BKM1 = B( K, J ) / AKM1K BK = B( K+1, J ) / AKM1K B( K, J ) = ( AK*BKM1-BK ) / DENOM B( K+1, J ) = ( AKM1*BK-BKM1 ) / DENOM 70 CONTINUE K = K + 2 END IF * GO TO 60 80 CONTINUE * * Next solve L**T *X = B, overwriting B with X. * * K is the main loop index, decreasing from N to 1 in steps of * 1 or 2, depending on the size of the diagonal blocks. * K = N 90 CONTINUE * * If K < 1, exit from loop. * IF( K.LT.1 ) $ GO TO 100 * IF( IPIV( K ).GT.0 ) THEN * * 1 x 1 diagonal block * * Multiply by inv(L**T(K)), where L(K) is the transformation * stored in column K of A. * IF( K.LT.N ) $ CALL DGEMV( 'Transpose', N-K, NRHS, -ONE, B( K+1, 1 ), $ LDB, A( K+1, K ), 1, ONE, B( K, 1 ), LDB ) * * Interchange rows K and IPIV(K). * KP = IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K = K - 1 ELSE * * 2 x 2 diagonal block * * Multiply by inv(L**T(K-1)), where L(K-1) is the transformation * stored in columns K-1 and K of A. * IF( K.LT.N ) THEN CALL DGEMV( 'Transpose', N-K, NRHS, -ONE, B( K+1, 1 ), $ LDB, A( K+1, K ), 1, ONE, B( K, 1 ), LDB ) CALL DGEMV( 'Transpose', N-K, NRHS, -ONE, B( K+1, 1 ), $ LDB, A( K+1, K-1 ), 1, ONE, B( K-1, 1 ), $ LDB ) END IF * * Interchange rows K and -IPIV(K). * KP = -IPIV( K ) IF( KP.NE.K ) $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) K = K - 2 END IF * GO TO 90 100 CONTINUE END IF * RETURN * * End of DSYTRS * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zupgtr.f0000644002504400250440000000005012337331322016632 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zupgtr.f0000644002504400250440000001375212337331322017406 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUPGTR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUPGTR + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUPGTR( UPLO, N, AP, TAU, Q, LDQ, WORK, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDQ, N * .. * .. Array Arguments .. * COMPLEX*16 AP( * ), Q( LDQ, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUPGTR generates a complex unitary matrix Q which is defined as the *> product of n-1 elementary reflectors H(i) of order n, as returned by *> ZHPTRD using packed storage: *> *> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1), *> *> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1). *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangular packed storage used in previous *> call to ZHPTRD; *> = 'L': Lower triangular packed storage used in previous *> call to ZHPTRD. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix Q. N >= 0. *> \endverbatim *> *> \param[in] AP *> \verbatim *> AP is COMPLEX*16 array, dimension (N*(N+1)/2) *> The vectors which define the elementary reflectors, as *> returned by ZHPTRD. *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (N-1) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZHPTRD. *> \endverbatim *> *> \param[out] Q *> \verbatim *> Q is COMPLEX*16 array, dimension (LDQ,N) *> The N-by-N unitary matrix Q. *> \endverbatim *> *> \param[in] LDQ *> \verbatim *> LDQ is INTEGER *> The leading dimension of the array Q. LDQ >= max(1,N). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (N-1) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUPGTR( UPLO, N, AP, TAU, Q, LDQ, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDQ, N * .. * .. Array Arguments .. COMPLEX*16 AP( * ), Q( LDQ, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 CZERO, CONE PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ), $ CONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER I, IINFO, IJ, J * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA, ZUNG2L, ZUNG2R * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDQ.LT.MAX( 1, N ) ) THEN INFO = -6 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUPGTR', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * IF( UPPER ) THEN * * Q was determined by a call to ZHPTRD with UPLO = 'U' * * Unpack the vectors which define the elementary reflectors and * set the last row and column of Q equal to those of the unit * matrix * IJ = 2 DO 20 J = 1, N - 1 DO 10 I = 1, J - 1 Q( I, J ) = AP( IJ ) IJ = IJ + 1 10 CONTINUE IJ = IJ + 2 Q( N, J ) = CZERO 20 CONTINUE DO 30 I = 1, N - 1 Q( I, N ) = CZERO 30 CONTINUE Q( N, N ) = CONE * * Generate Q(1:n-1,1:n-1) * CALL ZUNG2L( N-1, N-1, N-1, Q, LDQ, TAU, WORK, IINFO ) * ELSE * * Q was determined by a call to ZHPTRD with UPLO = 'L'. * * Unpack the vectors which define the elementary reflectors and * set the first row and column of Q equal to those of the unit * matrix * Q( 1, 1 ) = CONE DO 40 I = 2, N Q( I, 1 ) = CZERO 40 CONTINUE IJ = 3 DO 60 J = 2, N Q( 1, J ) = CZERO DO 50 I = J + 1, N Q( I, J ) = AP( IJ ) IJ = IJ + 1 50 CONTINUE IJ = IJ + 2 60 CONTINUE IF( N.GT.1 ) THEN * * Generate Q(2:n,2:n) * CALL ZUNG2R( N-1, N-1, N-1, Q( 2, 2 ), LDQ, TAU, WORK, $ IINFO ) END IF END IF RETURN * * End of ZUPGTR * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zhegs2.f0000644002504400250440000000005012337331322016501 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zhegs2.f0000644002504400250440000002243612337331322017254 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHEGS2 reduces a Hermitian definite generalized eigenproblem to standard form, using the factorization results obtained from cpotrf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZHEGS2 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZHEGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, ITYPE, LDA, LDB, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHEGS2 reduces a complex Hermitian-definite generalized *> eigenproblem to standard form. *> *> If ITYPE = 1, the problem is A*x = lambda*B*x, *> and A is overwritten by inv(U**H)*A*inv(U) or inv(L)*A*inv(L**H) *> *> If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or *> B*A*x = lambda*x, and A is overwritten by U*A*U**H or L**H *A*L. *> *> B must have been previously factorized as U**H *U or L*L**H by ZPOTRF. *> \endverbatim * * Arguments: * ========== * *> \param[in] ITYPE *> \verbatim *> ITYPE is INTEGER *> = 1: compute inv(U**H)*A*inv(U) or inv(L)*A*inv(L**H); *> = 2 or 3: compute U*A*U**H or L**H *A*L. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> Hermitian matrix A is stored, and how B has been factorized. *> = 'U': Upper triangular *> = 'L': Lower triangular *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrices A and B. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the leading *> n by n upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading n by n lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the transformed matrix, stored in the *> same format as A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is COMPLEX*16 array, dimension (LDB,N) *> The triangular factor from the Cholesky factorization of B, *> as returned by ZPOTRF. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16HEcomputational * * ===================================================================== SUBROUTINE ZHEGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, ITYPE, LDA, LDB, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), B( LDB, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, HALF PARAMETER ( ONE = 1.0D+0, HALF = 0.5D+0 ) COMPLEX*16 CONE PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER K DOUBLE PRECISION AKK, BKK COMPLEX*16 CT * .. * .. External Subroutines .. EXTERNAL XERBLA, ZAXPY, ZDSCAL, ZHER2, ZLACGV, ZTRMV, $ ZTRSV * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( ITYPE.LT.1 .OR. ITYPE.GT.3 ) THEN INFO = -1 ELSE IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, N ) ) THEN INFO = -7 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZHEGS2', -INFO ) RETURN END IF * IF( ITYPE.EQ.1 ) THEN IF( UPPER ) THEN * * Compute inv(U**H)*A*inv(U) * DO 10 K = 1, N * * Update the upper triangle of A(k:n,k:n) * AKK = A( K, K ) BKK = B( K, K ) AKK = AKK / BKK**2 A( K, K ) = AKK IF( K.LT.N ) THEN CALL ZDSCAL( N-K, ONE / BKK, A( K, K+1 ), LDA ) CT = -HALF*AKK CALL ZLACGV( N-K, A( K, K+1 ), LDA ) CALL ZLACGV( N-K, B( K, K+1 ), LDB ) CALL ZAXPY( N-K, CT, B( K, K+1 ), LDB, A( K, K+1 ), $ LDA ) CALL ZHER2( UPLO, N-K, -CONE, A( K, K+1 ), LDA, $ B( K, K+1 ), LDB, A( K+1, K+1 ), LDA ) CALL ZAXPY( N-K, CT, B( K, K+1 ), LDB, A( K, K+1 ), $ LDA ) CALL ZLACGV( N-K, B( K, K+1 ), LDB ) CALL ZTRSV( UPLO, 'Conjugate transpose', 'Non-unit', $ N-K, B( K+1, K+1 ), LDB, A( K, K+1 ), $ LDA ) CALL ZLACGV( N-K, A( K, K+1 ), LDA ) END IF 10 CONTINUE ELSE * * Compute inv(L)*A*inv(L**H) * DO 20 K = 1, N * * Update the lower triangle of A(k:n,k:n) * AKK = A( K, K ) BKK = B( K, K ) AKK = AKK / BKK**2 A( K, K ) = AKK IF( K.LT.N ) THEN CALL ZDSCAL( N-K, ONE / BKK, A( K+1, K ), 1 ) CT = -HALF*AKK CALL ZAXPY( N-K, CT, B( K+1, K ), 1, A( K+1, K ), 1 ) CALL ZHER2( UPLO, N-K, -CONE, A( K+1, K ), 1, $ B( K+1, K ), 1, A( K+1, K+1 ), LDA ) CALL ZAXPY( N-K, CT, B( K+1, K ), 1, A( K+1, K ), 1 ) CALL ZTRSV( UPLO, 'No transpose', 'Non-unit', N-K, $ B( K+1, K+1 ), LDB, A( K+1, K ), 1 ) END IF 20 CONTINUE END IF ELSE IF( UPPER ) THEN * * Compute U*A*U**H * DO 30 K = 1, N * * Update the upper triangle of A(1:k,1:k) * AKK = A( K, K ) BKK = B( K, K ) CALL ZTRMV( UPLO, 'No transpose', 'Non-unit', K-1, B, $ LDB, A( 1, K ), 1 ) CT = HALF*AKK CALL ZAXPY( K-1, CT, B( 1, K ), 1, A( 1, K ), 1 ) CALL ZHER2( UPLO, K-1, CONE, A( 1, K ), 1, B( 1, K ), 1, $ A, LDA ) CALL ZAXPY( K-1, CT, B( 1, K ), 1, A( 1, K ), 1 ) CALL ZDSCAL( K-1, BKK, A( 1, K ), 1 ) A( K, K ) = AKK*BKK**2 30 CONTINUE ELSE * * Compute L**H *A*L * DO 40 K = 1, N * * Update the lower triangle of A(1:k,1:k) * AKK = A( K, K ) BKK = B( K, K ) CALL ZLACGV( K-1, A( K, 1 ), LDA ) CALL ZTRMV( UPLO, 'Conjugate transpose', 'Non-unit', K-1, $ B, LDB, A( K, 1 ), LDA ) CT = HALF*AKK CALL ZLACGV( K-1, B( K, 1 ), LDB ) CALL ZAXPY( K-1, CT, B( K, 1 ), LDB, A( K, 1 ), LDA ) CALL ZHER2( UPLO, K-1, CONE, A( K, 1 ), LDA, B( K, 1 ), $ LDB, A, LDA ) CALL ZAXPY( K-1, CT, B( K, 1 ), LDB, A( K, 1 ), LDA ) CALL ZLACGV( K-1, B( K, 1 ), LDB ) CALL ZDSCAL( K-1, BKK, A( K, 1 ), LDA ) CALL ZLACGV( K-1, A( K, 1 ), LDA ) A( K, K ) = AKK*BKK**2 40 CONTINUE END IF END IF RETURN * * End of ZHEGS2 * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlaqr1.f0000644002504400250440000000005012337331322016511 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlaqr1.f0000644002504400250440000001140712337331322017260 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLAQR1 sets a scalar multiple of the first column of the product of 2-by-2 or 3-by-3 matrix H and specified shifts. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLAQR1 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLAQR1( N, H, LDH, S1, S2, V ) * * .. Scalar Arguments .. * COMPLEX*16 S1, S2 * INTEGER LDH, N * .. * .. Array Arguments .. * COMPLEX*16 H( LDH, * ), V( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> Given a 2-by-2 or 3-by-3 matrix H, ZLAQR1 sets v to a *> scalar multiple of the first column of the product *> *> (*) K = (H - s1*I)*(H - s2*I) *> *> scaling to avoid overflows and most underflows. *> *> This is useful for starting double implicit shift bulges *> in the QR algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is integer *> Order of the matrix H. N must be either 2 or 3. *> \endverbatim *> *> \param[in] H *> \verbatim *> H is COMPLEX*16 array of dimension (LDH,N) *> The 2-by-2 or 3-by-3 matrix H in (*). *> \endverbatim *> *> \param[in] LDH *> \verbatim *> LDH is integer *> The leading dimension of H as declared in *> the calling procedure. LDH.GE.N *> \endverbatim *> *> \param[in] S1 *> \verbatim *> S1 is COMPLEX*16 *> \endverbatim *> *> \param[in] S2 *> \verbatim *> S2 is COMPLEX*16 *> *> S1 and S2 are the shifts defining K in (*) above. *> \endverbatim *> *> \param[out] V *> \verbatim *> V is COMPLEX*16 array of dimension N *> A scalar multiple of the first column of the *> matrix K in (*). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Contributors: * ================== *> *> Karen Braman and Ralph Byers, Department of Mathematics, *> University of Kansas, USA *> * ===================================================================== SUBROUTINE ZLAQR1( N, H, LDH, S1, S2, V ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. COMPLEX*16 S1, S2 INTEGER LDH, N * .. * .. Array Arguments .. COMPLEX*16 H( LDH, * ), V( * ) * .. * * ================================================================ * * .. Parameters .. COMPLEX*16 ZERO PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ) ) DOUBLE PRECISION RZERO PARAMETER ( RZERO = 0.0d0 ) * .. * .. Local Scalars .. COMPLEX*16 CDUM, H21S, H31S DOUBLE PRECISION S * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DIMAG * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. IF( N.EQ.2 ) THEN S = CABS1( H( 1, 1 )-S2 ) + CABS1( H( 2, 1 ) ) IF( S.EQ.RZERO ) THEN V( 1 ) = ZERO V( 2 ) = ZERO ELSE H21S = H( 2, 1 ) / S V( 1 ) = H21S*H( 1, 2 ) + ( H( 1, 1 )-S1 )* $ ( ( H( 1, 1 )-S2 ) / S ) V( 2 ) = H21S*( H( 1, 1 )+H( 2, 2 )-S1-S2 ) END IF ELSE S = CABS1( H( 1, 1 )-S2 ) + CABS1( H( 2, 1 ) ) + $ CABS1( H( 3, 1 ) ) IF( S.EQ.ZERO ) THEN V( 1 ) = ZERO V( 2 ) = ZERO V( 3 ) = ZERO ELSE H21S = H( 2, 1 ) / S H31S = H( 3, 1 ) / S V( 1 ) = ( H( 1, 1 )-S1 )*( ( H( 1, 1 )-S2 ) / S ) + $ H( 1, 2 )*H21S + H( 1, 3 )*H31S V( 2 ) = H21S*( H( 1, 1 )+H( 2, 2 )-S1-S2 ) + H( 2, 3 )*H31S V( 3 ) = H31S*( H( 1, 1 )+H( 3, 3 )-S1-S2 ) + H21S*H( 3, 2 ) END IF END IF END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dsyev.f0000644002504400250440000000005012337331322016431 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dsyev.f0000644002504400250440000002040412337331322017175 0ustar00dewhurstdewhurst00000000000000*> \brief DSYEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DSYEV + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * CHARACTER JOBZ, UPLO * INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. * DOUBLE PRECISION A( LDA, * ), W( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYEV computes all eigenvalues and, optionally, eigenvectors of a *> real symmetric matrix A. *> \endverbatim * * Arguments: * ========== * *> \param[in] JOBZ *> \verbatim *> JOBZ is CHARACTER*1 *> = 'N': Compute eigenvalues only; *> = 'V': Compute eigenvalues and eigenvectors. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA, N) *> On entry, the symmetric matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of A contains the *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. *> On exit, if JOBZ = 'V', then if INFO = 0, A contains the *> orthonormal eigenvectors of the matrix A. *> If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') *> or the upper triangle (if UPLO='U') of A, including the *> diagonal, is destroyed. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] W *> \verbatim *> W is DOUBLE PRECISION array, dimension (N) *> If INFO = 0, the eigenvalues in ascending order. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,3*N-1). *> For optimal efficiency, LWORK >= (NB+2)*N, *> where NB is the blocksize for DSYTRD returned by ILAENV. *> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, the algorithm failed to converge; i *> off-diagonal elements of an intermediate tridiagonal *> form did not converge to zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup doubleSYeigen * * ===================================================================== SUBROUTINE DSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO ) * * -- LAPACK driver routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER JOBZ, UPLO INTEGER INFO, LDA, LWORK, N * .. * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), W( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) * .. * .. Local Scalars .. LOGICAL LOWER, LQUERY, WANTZ INTEGER IINFO, IMAX, INDE, INDTAU, INDWRK, ISCALE, $ LLWORK, LWKOPT, NB DOUBLE PRECISION ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA, $ SMLNUM * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV DOUBLE PRECISION DLAMCH, DLANSY EXTERNAL LSAME, ILAENV, DLAMCH, DLANSY * .. * .. External Subroutines .. EXTERNAL DLASCL, DORGTR, DSCAL, DSTEQR, DSTERF, DSYTRD, $ XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, SQRT * .. * .. Executable Statements .. * * Test the input parameters. * WANTZ = LSAME( JOBZ, 'V' ) LOWER = LSAME( UPLO, 'L' ) LQUERY = ( LWORK.EQ.-1 ) * INFO = 0 IF( .NOT.( WANTZ .OR. LSAME( JOBZ, 'N' ) ) ) THEN INFO = -1 ELSE IF( .NOT.( LOWER .OR. LSAME( UPLO, 'U' ) ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF * IF( INFO.EQ.0 ) THEN NB = ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) LWKOPT = MAX( 1, ( NB+2 )*N ) WORK( 1 ) = LWKOPT * IF( LWORK.LT.MAX( 1, 3*N-1 ) .AND. .NOT.LQUERY ) $ INFO = -8 END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DSYEV ', -INFO ) RETURN ELSE IF( LQUERY ) THEN RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) THEN RETURN END IF * IF( N.EQ.1 ) THEN W( 1 ) = A( 1, 1 ) WORK( 1 ) = 2 IF( WANTZ ) $ A( 1, 1 ) = ONE RETURN END IF * * Get machine constants. * SAFMIN = DLAMCH( 'Safe minimum' ) EPS = DLAMCH( 'Precision' ) SMLNUM = SAFMIN / EPS BIGNUM = ONE / SMLNUM RMIN = SQRT( SMLNUM ) RMAX = SQRT( BIGNUM ) * * Scale matrix to allowable range, if necessary. * ANRM = DLANSY( 'M', UPLO, N, A, LDA, WORK ) ISCALE = 0 IF( ANRM.GT.ZERO .AND. ANRM.LT.RMIN ) THEN ISCALE = 1 SIGMA = RMIN / ANRM ELSE IF( ANRM.GT.RMAX ) THEN ISCALE = 1 SIGMA = RMAX / ANRM END IF IF( ISCALE.EQ.1 ) $ CALL DLASCL( UPLO, 0, 0, ONE, SIGMA, N, N, A, LDA, INFO ) * * Call DSYTRD to reduce symmetric matrix to tridiagonal form. * INDE = 1 INDTAU = INDE + N INDWRK = INDTAU + N LLWORK = LWORK - INDWRK + 1 CALL DSYTRD( UPLO, N, A, LDA, W, WORK( INDE ), WORK( INDTAU ), $ WORK( INDWRK ), LLWORK, IINFO ) * * For eigenvalues only, call DSTERF. For eigenvectors, first call * DORGTR to generate the orthogonal matrix, then call DSTEQR. * IF( .NOT.WANTZ ) THEN CALL DSTERF( N, W, WORK( INDE ), INFO ) ELSE CALL DORGTR( UPLO, N, A, LDA, WORK( INDTAU ), WORK( INDWRK ), $ LLWORK, IINFO ) CALL DSTEQR( JOBZ, N, W, WORK( INDE ), A, LDA, WORK( INDTAU ), $ INFO ) END IF * * If matrix was scaled, then rescale eigenvalues appropriately. * IF( ISCALE.EQ.1 ) THEN IF( INFO.EQ.0 ) THEN IMAX = N ELSE IMAX = INFO - 1 END IF CALL DSCAL( IMAX, ONE / SIGMA, W, 1 ) END IF * * Set WORK(1) to optimal workspace size. * WORK( 1 ) = LWKOPT * RETURN * * End of DSYEV * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zung2l.f0000644002504400250440000000005012337331322016520 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zung2l.f0000644002504400250440000001227212337331322017270 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZUNG2L generates all or part of the unitary matrix Q from a QL factorization determined by cgeqlf (unblocked algorithm). * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZUNG2L + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZUNG2L( M, N, K, A, LDA, TAU, WORK, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, K, LDA, M, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZUNG2L generates an m by n complex matrix Q with orthonormal columns, *> which is defined as the last n columns of a product of k elementary *> reflectors of order m *> *> Q = H(k) . . . H(2) H(1) *> *> as returned by ZGEQLF. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> The number of rows of the matrix Q. M >= 0. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix Q. M >= N >= 0. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> The number of elementary reflectors whose product defines the *> matrix Q. N >= K >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the (n-k+i)-th column must contain the vector which *> defines the elementary reflector H(i), for i = 1,2,...,k, as *> returned by ZGEQLF in the last k columns of its array *> argument A. *> On exit, the m-by-n matrix Q. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The first dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in] TAU *> \verbatim *> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i), as returned by ZGEQLF. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension (N) *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument has an illegal value *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZUNG2L( M, N, K, A, LDA, TAU, WORK, INFO ) * * -- LAPACK computational routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INFO, K, LDA, M, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE, ZERO PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ), $ ZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. INTEGER I, II, J, L * .. * .. External Subroutines .. EXTERNAL XERBLA, ZLARF, ZSCAL * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Executable Statements .. * * Test the input arguments * INFO = 0 IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN INFO = -2 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZUNG2L', -INFO ) RETURN END IF * * Quick return if possible * IF( N.LE.0 ) $ RETURN * * Initialise columns 1:n-k to columns of the unit matrix * DO 20 J = 1, N - K DO 10 L = 1, M A( L, J ) = ZERO 10 CONTINUE A( M-N+J, J ) = ONE 20 CONTINUE * DO 40 I = 1, K II = N - K + I * * Apply H(i) to A(1:m-k+i,1:n-k+i) from the left * A( M-N+II, II ) = ONE CALL ZLARF( 'Left', M-N+II, II-1, A( 1, II ), 1, TAU( I ), A, $ LDA, WORK ) CALL ZSCAL( M-N+II-1, -TAU( I ), A( 1, II ), 1 ) A( M-N+II, II ) = ONE - TAU( I ) * * Set A(m-k+i+1:m,n-k+i) to zero * DO 30 L = M - N + II + 1, M A( L, II ) = ZERO 30 CONTINUE 40 CONTINUE RETURN * * End of ZUNG2L * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlaqr4.f0000644002504400250440000000005012337331322016514 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlaqr4.f0000644002504400250440000006105012337331322017262 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLAQR4 computes the eigenvalues of a Hessenberg matrix, and optionally the matrices from the Schur decomposition. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLAQR4 + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZLAQR4( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, * IHIZ, Z, LDZ, WORK, LWORK, INFO ) * * .. Scalar Arguments .. * INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N * LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. * COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLAQR4 implements one level of recursion for ZLAQR0. *> It is a complete implementation of the small bulge multi-shift *> QR algorithm. It may be called by ZLAQR0 and, for large enough *> deflation window size, it may be called by ZLAQR3. This *> subroutine is identical to ZLAQR0 except that it calls ZLAQR2 *> instead of ZLAQR3. *> *> ZLAQR4 computes the eigenvalues of a Hessenberg matrix H *> and, optionally, the matrices T and Z from the Schur decomposition *> H = Z T Z**H, where T is an upper triangular matrix (the *> Schur form), and Z is the unitary matrix of Schur vectors. *> *> Optionally Z may be postmultiplied into an input unitary *> matrix Q so that this routine can give the Schur factorization *> of a matrix A which has been reduced to the Hessenberg form H *> by the unitary matrix Q: A = Q*H*Q**H = (QZ)*H*(QZ)**H. *> \endverbatim * * Arguments: * ========== * *> \param[in] WANTT *> \verbatim *> WANTT is LOGICAL *> = .TRUE. : the full Schur form T is required; *> = .FALSE.: only eigenvalues are required. *> \endverbatim *> *> \param[in] WANTZ *> \verbatim *> WANTZ is LOGICAL *> = .TRUE. : the matrix of Schur vectors Z is required; *> = .FALSE.: Schur vectors are not required. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix H. N .GE. 0. *> \endverbatim *> *> \param[in] ILO *> \verbatim *> ILO is INTEGER *> \endverbatim *> *> \param[in] IHI *> \verbatim *> IHI is INTEGER *> It is assumed that H is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1, *> H(ILO,ILO-1) is zero. ILO and IHI are normally set by a *> previous call to ZGEBAL, and then passed to ZGEHRD when the *> matrix output by ZGEBAL is reduced to Hessenberg form. *> Otherwise, ILO and IHI should be set to 1 and N, *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. *> If N = 0, then ILO = 1 and IHI = 0. *> \endverbatim *> *> \param[in,out] H *> \verbatim *> H is COMPLEX*16 array, dimension (LDH,N) *> On entry, the upper Hessenberg matrix H. *> On exit, if INFO = 0 and WANTT is .TRUE., then H *> contains the upper triangular matrix T from the Schur *> decomposition (the Schur form). If INFO = 0 and WANT is *> .FALSE., then the contents of H are unspecified on exit. *> (The output value of H when INFO.GT.0 is given under the *> description of INFO below.) *> *> This subroutine may explicitly set H(i,j) = 0 for i.GT.j and *> j = 1, 2, ... ILO-1 or j = IHI+1, IHI+2, ... N. *> \endverbatim *> *> \param[in] LDH *> \verbatim *> LDH is INTEGER *> The leading dimension of the array H. LDH .GE. max(1,N). *> \endverbatim *> *> \param[out] W *> \verbatim *> W is COMPLEX*16 array, dimension (N) *> The computed eigenvalues of H(ILO:IHI,ILO:IHI) are stored *> in W(ILO:IHI). If WANTT is .TRUE., then the eigenvalues are *> stored in the same order as on the diagonal of the Schur *> form returned in H, with W(i) = H(i,i). *> \endverbatim *> *> \param[in] ILOZ *> \verbatim *> ILOZ is INTEGER *> \endverbatim *> *> \param[in] IHIZ *> \verbatim *> IHIZ is INTEGER *> Specify the rows of Z to which transformations must be *> applied if WANTZ is .TRUE.. *> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N. *> \endverbatim *> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ,IHI) *> If WANTZ is .FALSE., then Z is not referenced. *> If WANTZ is .TRUE., then Z(ILO:IHI,ILOZ:IHIZ) is *> replaced by Z(ILO:IHI,ILOZ:IHIZ)*U where U is the *> orthogonal Schur factor of H(ILO:IHI,ILO:IHI). *> (The output value of Z when INFO.GT.0 is given under *> the description of INFO below.) *> \endverbatim *> *> \param[in] LDZ *> \verbatim *> LDZ is INTEGER *> The leading dimension of the array Z. if WANTZ is .TRUE. *> then LDZ.GE.MAX(1,IHIZ). Otherwize, LDZ.GE.1. *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is COMPLEX*16 array, dimension LWORK *> On exit, if LWORK = -1, WORK(1) returns an estimate of *> the optimal value for LWORK. *> \endverbatim *> *> \param[in] LWORK *> \verbatim *> LWORK is INTEGER *> The dimension of the array WORK. LWORK .GE. max(1,N) *> is sufficient, but LWORK typically as large as 6*N may *> be required for optimal performance. A workspace query *> to determine the optimal workspace size is recommended. *> *> If LWORK = -1, then ZLAQR4 does a workspace query. *> In this case, ZLAQR4 checks the input parameters and *> estimates the optimal workspace size for the given *> values of N, ILO and IHI. The estimate is returned *> in WORK(1). No error message related to LWORK is *> issued by XERBLA. Neither H nor Z are accessed. *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> .GT. 0: if INFO = i, ZLAQR4 failed to compute all of *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) *> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. *> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit *> *> (*) (initial value of H)*U = U*(final value of H) *> *> where U is a unitary matrix. The final *> value of H is upper Hessenberg and triangular in *> rows and columns INFO+1 through IHI. *> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit *> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U *> *> where U is the unitary matrix in (*) (regard- *> less of the value of WANTT.) *> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16OTHERauxiliary * *> \par Contributors: * ================== *> *> Karen Braman and Ralph Byers, Department of Mathematics, *> University of Kansas, USA * *> \par References: * ================ *> *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 *> Performance, SIAM Journal of Matrix Analysis, volume 23, pages *> 929--947, 2002. *> \n *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part II: Aggressive Early Deflation, SIAM Journal *> of Matrix Analysis, volume 23, pages 948--973, 2002. *> * ===================================================================== SUBROUTINE ZLAQR4( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, $ IHIZ, Z, LDZ, WORK, LWORK, INFO ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N LOGICAL WANTT, WANTZ * .. * .. Array Arguments .. COMPLEX*16 H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * ) * .. * * ================================================================ * * .. Parameters .. * * ==== Matrices of order NTINY or smaller must be processed by * . ZLAHQR because of insufficient subdiagonal scratch space. * . (This is a hard limit.) ==== INTEGER NTINY PARAMETER ( NTINY = 11 ) * * ==== Exceptional deflation windows: try to cure rare * . slow convergence by varying the size of the * . deflation window after KEXNW iterations. ==== INTEGER KEXNW PARAMETER ( KEXNW = 5 ) * * ==== Exceptional shifts: try to cure rare slow convergence * . with ad-hoc exceptional shifts every KEXSH iterations. * . ==== INTEGER KEXSH PARAMETER ( KEXSH = 6 ) * * ==== The constant WILK1 is used to form the exceptional * . shifts. ==== DOUBLE PRECISION WILK1 PARAMETER ( WILK1 = 0.75d0 ) COMPLEX*16 ZERO, ONE PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ), $ ONE = ( 1.0d0, 0.0d0 ) ) DOUBLE PRECISION TWO PARAMETER ( TWO = 2.0d0 ) * .. * .. Local Scalars .. COMPLEX*16 AA, BB, CC, CDUM, DD, DET, RTDISC, SWAP, TR2 DOUBLE PRECISION S INTEGER I, INF, IT, ITMAX, K, KACC22, KBOT, KDU, KS, $ KT, KTOP, KU, KV, KWH, KWTOP, KWV, LD, LS, $ LWKOPT, NDEC, NDFL, NH, NHO, NIBBLE, NMIN, NS, $ NSMAX, NSR, NVE, NW, NWMAX, NWR, NWUPBD LOGICAL SORTED CHARACTER JBCMPZ*2 * .. * .. External Functions .. INTEGER ILAENV EXTERNAL ILAENV * .. * .. Local Arrays .. COMPLEX*16 ZDUM( 1, 1 ) * .. * .. External Subroutines .. EXTERNAL ZLACPY, ZLAHQR, ZLAQR2, ZLAQR5 * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, DCMPLX, DIMAG, INT, MAX, MIN, MOD, $ SQRT * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function definitions .. CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) * .. * .. Executable Statements .. INFO = 0 * * ==== Quick return for N = 0: nothing to do. ==== * IF( N.EQ.0 ) THEN WORK( 1 ) = ONE RETURN END IF * IF( N.LE.NTINY ) THEN * * ==== Tiny matrices must use ZLAHQR. ==== * LWKOPT = 1 IF( LWORK.NE.-1 ) $ CALL ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ, $ IHIZ, Z, LDZ, INFO ) ELSE * * ==== Use small bulge multi-shift QR with aggressive early * . deflation on larger-than-tiny matrices. ==== * * ==== Hope for the best. ==== * INFO = 0 * * ==== Set up job flags for ILAENV. ==== * IF( WANTT ) THEN JBCMPZ( 1: 1 ) = 'S' ELSE JBCMPZ( 1: 1 ) = 'E' END IF IF( WANTZ ) THEN JBCMPZ( 2: 2 ) = 'V' ELSE JBCMPZ( 2: 2 ) = 'N' END IF * * ==== NWR = recommended deflation window size. At this * . point, N .GT. NTINY = 11, so there is enough * . subdiagonal workspace for NWR.GE.2 as required. * . (In fact, there is enough subdiagonal space for * . NWR.GE.3.) ==== * NWR = ILAENV( 13, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK ) NWR = MAX( 2, NWR ) NWR = MIN( IHI-ILO+1, ( N-1 ) / 3, NWR ) * * ==== NSR = recommended number of simultaneous shifts. * . At this point N .GT. NTINY = 11, so there is at * . enough subdiagonal workspace for NSR to be even * . and greater than or equal to two as required. ==== * NSR = ILAENV( 15, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK ) NSR = MIN( NSR, ( N+6 ) / 9, IHI-ILO ) NSR = MAX( 2, NSR-MOD( NSR, 2 ) ) * * ==== Estimate optimal workspace ==== * * ==== Workspace query call to ZLAQR2 ==== * CALL ZLAQR2( WANTT, WANTZ, N, ILO, IHI, NWR+1, H, LDH, ILOZ, $ IHIZ, Z, LDZ, LS, LD, W, H, LDH, N, H, LDH, N, H, $ LDH, WORK, -1 ) * * ==== Optimal workspace = MAX(ZLAQR5, ZLAQR2) ==== * LWKOPT = MAX( 3*NSR / 2, INT( WORK( 1 ) ) ) * * ==== Quick return in case of workspace query. ==== * IF( LWORK.EQ.-1 ) THEN WORK( 1 ) = DCMPLX( LWKOPT, 0 ) RETURN END IF * * ==== ZLAHQR/ZLAQR0 crossover point ==== * NMIN = ILAENV( 12, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK ) NMIN = MAX( NTINY, NMIN ) * * ==== Nibble crossover point ==== * NIBBLE = ILAENV( 14, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK ) NIBBLE = MAX( 0, NIBBLE ) * * ==== Accumulate reflections during ttswp? Use block * . 2-by-2 structure during matrix-matrix multiply? ==== * KACC22 = ILAENV( 16, 'ZLAQR4', JBCMPZ, N, ILO, IHI, LWORK ) KACC22 = MAX( 0, KACC22 ) KACC22 = MIN( 2, KACC22 ) * * ==== NWMAX = the largest possible deflation window for * . which there is sufficient workspace. ==== * NWMAX = MIN( ( N-1 ) / 3, LWORK / 2 ) NW = NWMAX * * ==== NSMAX = the Largest number of simultaneous shifts * . for which there is sufficient workspace. ==== * NSMAX = MIN( ( N+6 ) / 9, 2*LWORK / 3 ) NSMAX = NSMAX - MOD( NSMAX, 2 ) * * ==== NDFL: an iteration count restarted at deflation. ==== * NDFL = 1 * * ==== ITMAX = iteration limit ==== * ITMAX = MAX( 30, 2*KEXSH )*MAX( 10, ( IHI-ILO+1 ) ) * * ==== Last row and column in the active block ==== * KBOT = IHI * * ==== Main Loop ==== * DO 70 IT = 1, ITMAX * * ==== Done when KBOT falls below ILO ==== * IF( KBOT.LT.ILO ) $ GO TO 80 * * ==== Locate active block ==== * DO 10 K = KBOT, ILO + 1, -1 IF( H( K, K-1 ).EQ.ZERO ) $ GO TO 20 10 CONTINUE K = ILO 20 CONTINUE KTOP = K * * ==== Select deflation window size: * . Typical Case: * . If possible and advisable, nibble the entire * . active block. If not, use size MIN(NWR,NWMAX) * . or MIN(NWR+1,NWMAX) depending upon which has * . the smaller corresponding subdiagonal entry * . (a heuristic). * . * . Exceptional Case: * . If there have been no deflations in KEXNW or * . more iterations, then vary the deflation window * . size. At first, because, larger windows are, * . in general, more powerful than smaller ones, * . rapidly increase the window to the maximum possible. * . Then, gradually reduce the window size. ==== * NH = KBOT - KTOP + 1 NWUPBD = MIN( NH, NWMAX ) IF( NDFL.LT.KEXNW ) THEN NW = MIN( NWUPBD, NWR ) ELSE NW = MIN( NWUPBD, 2*NW ) END IF IF( NW.LT.NWMAX ) THEN IF( NW.GE.NH-1 ) THEN NW = NH ELSE KWTOP = KBOT - NW + 1 IF( CABS1( H( KWTOP, KWTOP-1 ) ).GT. $ CABS1( H( KWTOP-1, KWTOP-2 ) ) )NW = NW + 1 END IF END IF IF( NDFL.LT.KEXNW ) THEN NDEC = -1 ELSE IF( NDEC.GE.0 .OR. NW.GE.NWUPBD ) THEN NDEC = NDEC + 1 IF( NW-NDEC.LT.2 ) $ NDEC = 0 NW = NW - NDEC END IF * * ==== Aggressive early deflation: * . split workspace under the subdiagonal into * . - an nw-by-nw work array V in the lower * . left-hand-corner, * . - an NW-by-at-least-NW-but-more-is-better * . (NW-by-NHO) horizontal work array along * . the bottom edge, * . - an at-least-NW-but-more-is-better (NHV-by-NW) * . vertical work array along the left-hand-edge. * . ==== * KV = N - NW + 1 KT = NW + 1 NHO = ( N-NW-1 ) - KT + 1 KWV = NW + 2 NVE = ( N-NW ) - KWV + 1 * * ==== Aggressive early deflation ==== * CALL ZLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, $ IHIZ, Z, LDZ, LS, LD, W, H( KV, 1 ), LDH, NHO, $ H( KV, KT ), LDH, NVE, H( KWV, 1 ), LDH, WORK, $ LWORK ) * * ==== Adjust KBOT accounting for new deflations. ==== * KBOT = KBOT - LD * * ==== KS points to the shifts. ==== * KS = KBOT - LS + 1 * * ==== Skip an expensive QR sweep if there is a (partly * . heuristic) reason to expect that many eigenvalues * . will deflate without it. Here, the QR sweep is * . skipped if many eigenvalues have just been deflated * . or if the remaining active block is small. * IF( ( LD.EQ.0 ) .OR. ( ( 100*LD.LE.NW*NIBBLE ) .AND. ( KBOT- $ KTOP+1.GT.MIN( NMIN, NWMAX ) ) ) ) THEN * * ==== NS = nominal number of simultaneous shifts. * . This may be lowered (slightly) if ZLAQR2 * . did not provide that many shifts. ==== * NS = MIN( NSMAX, NSR, MAX( 2, KBOT-KTOP ) ) NS = NS - MOD( NS, 2 ) * * ==== If there have been no deflations * . in a multiple of KEXSH iterations, * . then try exceptional shifts. * . Otherwise use shifts provided by * . ZLAQR2 above or from the eigenvalues * . of a trailing principal submatrix. ==== * IF( MOD( NDFL, KEXSH ).EQ.0 ) THEN KS = KBOT - NS + 1 DO 30 I = KBOT, KS + 1, -2 W( I ) = H( I, I ) + WILK1*CABS1( H( I, I-1 ) ) W( I-1 ) = W( I ) 30 CONTINUE ELSE * * ==== Got NS/2 or fewer shifts? Use ZLAHQR * . on a trailing principal submatrix to * . get more. (Since NS.LE.NSMAX.LE.(N+6)/9, * . there is enough space below the subdiagonal * . to fit an NS-by-NS scratch array.) ==== * IF( KBOT-KS+1.LE.NS / 2 ) THEN KS = KBOT - NS + 1 KT = N - NS + 1 CALL ZLACPY( 'A', NS, NS, H( KS, KS ), LDH, $ H( KT, 1 ), LDH ) CALL ZLAHQR( .false., .false., NS, 1, NS, $ H( KT, 1 ), LDH, W( KS ), 1, 1, ZDUM, $ 1, INF ) KS = KS + INF * * ==== In case of a rare QR failure use * . eigenvalues of the trailing 2-by-2 * . principal submatrix. Scale to avoid * . overflows, underflows and subnormals. * . (The scale factor S can not be zero, * . because H(KBOT,KBOT-1) is nonzero.) ==== * IF( KS.GE.KBOT ) THEN S = CABS1( H( KBOT-1, KBOT-1 ) ) + $ CABS1( H( KBOT, KBOT-1 ) ) + $ CABS1( H( KBOT-1, KBOT ) ) + $ CABS1( H( KBOT, KBOT ) ) AA = H( KBOT-1, KBOT-1 ) / S CC = H( KBOT, KBOT-1 ) / S BB = H( KBOT-1, KBOT ) / S DD = H( KBOT, KBOT ) / S TR2 = ( AA+DD ) / TWO DET = ( AA-TR2 )*( DD-TR2 ) - BB*CC RTDISC = SQRT( -DET ) W( KBOT-1 ) = ( TR2+RTDISC )*S W( KBOT ) = ( TR2-RTDISC )*S * KS = KBOT - 1 END IF END IF * IF( KBOT-KS+1.GT.NS ) THEN * * ==== Sort the shifts (Helps a little) ==== * SORTED = .false. DO 50 K = KBOT, KS + 1, -1 IF( SORTED ) $ GO TO 60 SORTED = .true. DO 40 I = KS, K - 1 IF( CABS1( W( I ) ).LT.CABS1( W( I+1 ) ) ) $ THEN SORTED = .false. SWAP = W( I ) W( I ) = W( I+1 ) W( I+1 ) = SWAP END IF 40 CONTINUE 50 CONTINUE 60 CONTINUE END IF END IF * * ==== If there are only two shifts, then use * . only one. ==== * IF( KBOT-KS+1.EQ.2 ) THEN IF( CABS1( W( KBOT )-H( KBOT, KBOT ) ).LT. $ CABS1( W( KBOT-1 )-H( KBOT, KBOT ) ) ) THEN W( KBOT-1 ) = W( KBOT ) ELSE W( KBOT ) = W( KBOT-1 ) END IF END IF * * ==== Use up to NS of the the smallest magnatiude * . shifts. If there aren't NS shifts available, * . then use them all, possibly dropping one to * . make the number of shifts even. ==== * NS = MIN( NS, KBOT-KS+1 ) NS = NS - MOD( NS, 2 ) KS = KBOT - NS + 1 * * ==== Small-bulge multi-shift QR sweep: * . split workspace under the subdiagonal into * . - a KDU-by-KDU work array U in the lower * . left-hand-corner, * . - a KDU-by-at-least-KDU-but-more-is-better * . (KDU-by-NHo) horizontal work array WH along * . the bottom edge, * . - and an at-least-KDU-but-more-is-better-by-KDU * . (NVE-by-KDU) vertical work WV arrow along * . the left-hand-edge. ==== * KDU = 3*NS - 3 KU = N - KDU + 1 KWH = KDU + 1 NHO = ( N-KDU+1-4 ) - ( KDU+1 ) + 1 KWV = KDU + 4 NVE = N - KDU - KWV + 1 * * ==== Small-bulge multi-shift QR sweep ==== * CALL ZLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NS, $ W( KS ), H, LDH, ILOZ, IHIZ, Z, LDZ, WORK, $ 3, H( KU, 1 ), LDH, NVE, H( KWV, 1 ), LDH, $ NHO, H( KU, KWH ), LDH ) END IF * * ==== Note progress (or the lack of it). ==== * IF( LD.GT.0 ) THEN NDFL = 1 ELSE NDFL = NDFL + 1 END IF * * ==== End of main loop ==== 70 CONTINUE * * ==== Iteration limit exceeded. Set INFO to show where * . the problem occurred and exit. ==== * INFO = KBOT 80 CONTINUE END IF * * ==== Return the optimal value of LWORK. ==== * WORK( 1 ) = DCMPLX( LWKOPT, 0 ) * * ==== End of ZLAQR4 ==== * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zpotrf.f0000644002504400250440000000005012337331322016623 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zpotrf.f0000644002504400250440000001634112337331322017374 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZPOTRF * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZPOTRF + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZPOTRF( UPLO, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZPOTRF computes the Cholesky factorization of a complex Hermitian *> positive definite matrix A. *> *> The factorization has the form *> A = U**H * U, if UPLO = 'U', or *> A = L * L**H, if UPLO = 'L', *> where U is an upper triangular matrix and L is lower triangular. *> *> This is the block version of the algorithm, calling Level 3 BLAS. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangle of A is stored; *> = 'L': Lower triangle of A is stored. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the Hermitian matrix A. If UPLO = 'U', the leading *> N-by-N upper triangular part of A contains the upper *> triangular part of the matrix A, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of A contains the lower *> triangular part of the matrix A, and the strictly upper *> triangular part of A is not referenced. *> *> On exit, if INFO = 0, the factor U or L from the Cholesky *> factorization A = U**H *U or A = L*L**H. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, the leading minor of order i is not *> positive definite, and the factorization could not be *> completed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16POcomputational * * ===================================================================== SUBROUTINE ZPOTRF( UPLO, N, A, LDA, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE COMPLEX*16 CONE PARAMETER ( ONE = 1.0D+0, CONE = ( 1.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL UPPER INTEGER J, JB, NB * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZGEMM, ZHERK, ZPOTF2, ZTRSM * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZPOTRF', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Determine the block size for this environment. * NB = ILAENV( 1, 'ZPOTRF', UPLO, N, -1, -1, -1 ) IF( NB.LE.1 .OR. NB.GE.N ) THEN * * Use unblocked code. * CALL ZPOTF2( UPLO, N, A, LDA, INFO ) ELSE * * Use blocked code. * IF( UPPER ) THEN * * Compute the Cholesky factorization A = U**H *U. * DO 10 J = 1, N, NB * * Update and factorize the current diagonal block and test * for non-positive-definiteness. * JB = MIN( NB, N-J+1 ) CALL ZHERK( 'Upper', 'Conjugate transpose', JB, J-1, $ -ONE, A( 1, J ), LDA, ONE, A( J, J ), LDA ) CALL ZPOTF2( 'Upper', JB, A( J, J ), LDA, INFO ) IF( INFO.NE.0 ) $ GO TO 30 IF( J+JB.LE.N ) THEN * * Compute the current block row. * CALL ZGEMM( 'Conjugate transpose', 'No transpose', JB, $ N-J-JB+1, J-1, -CONE, A( 1, J ), LDA, $ A( 1, J+JB ), LDA, CONE, A( J, J+JB ), $ LDA ) CALL ZTRSM( 'Left', 'Upper', 'Conjugate transpose', $ 'Non-unit', JB, N-J-JB+1, CONE, A( J, J ), $ LDA, A( J, J+JB ), LDA ) END IF 10 CONTINUE * ELSE * * Compute the Cholesky factorization A = L*L**H. * DO 20 J = 1, N, NB * * Update and factorize the current diagonal block and test * for non-positive-definiteness. * JB = MIN( NB, N-J+1 ) CALL ZHERK( 'Lower', 'No transpose', JB, J-1, -ONE, $ A( J, 1 ), LDA, ONE, A( J, J ), LDA ) CALL ZPOTF2( 'Lower', JB, A( J, J ), LDA, INFO ) IF( INFO.NE.0 ) $ GO TO 30 IF( J+JB.LE.N ) THEN * * Compute the current block column. * CALL ZGEMM( 'No transpose', 'Conjugate transpose', $ N-J-JB+1, JB, J-1, -CONE, A( J+JB, 1 ), $ LDA, A( J, 1 ), LDA, CONE, A( J+JB, J ), $ LDA ) CALL ZTRSM( 'Right', 'Lower', 'Conjugate transpose', $ 'Non-unit', N-J-JB+1, JB, CONE, A( J, J ), $ LDA, A( J+JB, J ), LDA ) END IF 20 CONTINUE END IF END IF GO TO 40 * 30 CONTINUE INFO = INFO + J - 1 * 40 CONTINUE RETURN * * End of ZPOTRF * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/zlanhe.f0000644002504400250440000000005012337331322016560 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/zlanhe.f0000644002504400250440000001771412337331322017336 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZLANHE returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a complex Hermitian matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZLANHE + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * DOUBLE PRECISION FUNCTION ZLANHE( NORM, UPLO, N, A, LDA, WORK ) * * .. Scalar Arguments .. * CHARACTER NORM, UPLO * INTEGER LDA, N * .. * .. Array Arguments .. * DOUBLE PRECISION WORK( * ) * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZLANHE returns the value of the one norm, or the Frobenius norm, or *> the infinity norm, or the element of largest absolute value of a *> complex hermitian matrix A. *> \endverbatim *> *> \return ZLANHE *> \verbatim *> *> ZLANHE = ( max(abs(A(i,j))), NORM = 'M' or 'm' *> ( *> ( norm1(A), NORM = '1', 'O' or 'o' *> ( *> ( normI(A), NORM = 'I' or 'i' *> ( *> ( normF(A), NORM = 'F', 'f', 'E' or 'e' *> *> where norm1 denotes the one norm of a matrix (maximum column sum), *> normI denotes the infinity norm of a matrix (maximum row sum) and *> normF denotes the Frobenius norm of a matrix (square root of sum of *> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm. *> \endverbatim * * Arguments: * ========== * *> \param[in] NORM *> \verbatim *> NORM is CHARACTER*1 *> Specifies the value to be returned in ZLANHE as described *> above. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> Specifies whether the upper or lower triangular part of the *> hermitian matrix A is to be referenced. *> = 'U': Upper triangular part of A is referenced *> = 'L': Lower triangular part of A is referenced *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. When N = 0, ZLANHE is *> set to zero. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> The hermitian matrix A. If UPLO = 'U', the leading n by n *> upper triangular part of A contains the upper triangular part *> of the matrix A, and the strictly lower triangular part of A *> is not referenced. If UPLO = 'L', the leading n by n lower *> triangular part of A contains the lower triangular part of *> the matrix A, and the strictly upper triangular part of A is *> not referenced. Note that the imaginary parts of the diagonal *> elements need not be set and are assumed to be zero. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(N,1). *> \endverbatim *> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)), *> where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise, *> WORK is not referenced. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup complex16HEauxiliary * * ===================================================================== DOUBLE PRECISION FUNCTION ZLANHE( NORM, UPLO, N, A, LDA, WORK ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. CHARACTER NORM, UPLO INTEGER LDA, N * .. * .. Array Arguments .. DOUBLE PRECISION WORK( * ) COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE, ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. INTEGER I, J DOUBLE PRECISION ABSA, SCALE, SUM, VALUE * .. * .. External Functions .. LOGICAL LSAME, DISNAN EXTERNAL LSAME, DISNAN * .. * .. External Subroutines .. EXTERNAL ZLASSQ * .. * .. Intrinsic Functions .. INTRINSIC ABS, DBLE, SQRT * .. * .. Executable Statements .. * IF( N.EQ.0 ) THEN VALUE = ZERO ELSE IF( LSAME( NORM, 'M' ) ) THEN * * Find max(abs(A(i,j))). * VALUE = ZERO IF( LSAME( UPLO, 'U' ) ) THEN DO 20 J = 1, N DO 10 I = 1, J - 1 SUM = ABS( A( I, J ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 10 CONTINUE SUM = ABS( DBLE( A( J, J ) ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 20 CONTINUE ELSE DO 40 J = 1, N SUM = ABS( DBLE( A( J, J ) ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM DO 30 I = J + 1, N SUM = ABS( A( I, J ) ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 30 CONTINUE 40 CONTINUE END IF ELSE IF( ( LSAME( NORM, 'I' ) ) .OR. ( LSAME( NORM, 'O' ) ) .OR. $ ( NORM.EQ.'1' ) ) THEN * * Find normI(A) ( = norm1(A), since A is hermitian). * VALUE = ZERO IF( LSAME( UPLO, 'U' ) ) THEN DO 60 J = 1, N SUM = ZERO DO 50 I = 1, J - 1 ABSA = ABS( A( I, J ) ) SUM = SUM + ABSA WORK( I ) = WORK( I ) + ABSA 50 CONTINUE WORK( J ) = SUM + ABS( DBLE( A( J, J ) ) ) 60 CONTINUE DO 70 I = 1, N SUM = WORK( I ) IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 70 CONTINUE ELSE DO 80 I = 1, N WORK( I ) = ZERO 80 CONTINUE DO 100 J = 1, N SUM = WORK( J ) + ABS( DBLE( A( J, J ) ) ) DO 90 I = J + 1, N ABSA = ABS( A( I, J ) ) SUM = SUM + ABSA WORK( I ) = WORK( I ) + ABSA 90 CONTINUE IF( VALUE .LT. SUM .OR. DISNAN( SUM ) ) VALUE = SUM 100 CONTINUE END IF ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN * * Find normF(A). * SCALE = ZERO SUM = ONE IF( LSAME( UPLO, 'U' ) ) THEN DO 110 J = 2, N CALL ZLASSQ( J-1, A( 1, J ), 1, SCALE, SUM ) 110 CONTINUE ELSE DO 120 J = 1, N - 1 CALL ZLASSQ( N-J, A( J+1, J ), 1, SCALE, SUM ) 120 CONTINUE END IF SUM = 2*SUM DO 130 I = 1, N IF( DBLE( A( I, I ) ).NE.ZERO ) THEN ABSA = ABS( DBLE( A( I, I ) ) ) IF( SCALE.LT.ABSA ) THEN SUM = ONE + SUM*( SCALE / ABSA )**2 SCALE = ABSA ELSE SUM = SUM + ( ABSA / SCALE )**2 END IF END IF 130 CONTINUE VALUE = SCALE*SQRT( SUM ) END IF * ZLANHE = VALUE RETURN * * End of ZLANHE * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlaisnan.f0000644002504400250440000000005012337331322017070 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlaisnan.f0000644002504400250440000000506312337331322017640 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLAISNAN tests input for NaN by comparing two arguments for inequality. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLAISNAN + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * LOGICAL FUNCTION DLAISNAN( DIN1, DIN2 ) * * .. Scalar Arguments .. * DOUBLE PRECISION DIN1, DIN2 * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> This routine is not for general use. It exists solely to avoid *> over-optimization in DISNAN. *> *> DLAISNAN checks for NaNs by comparing its two arguments for *> inequality. NaN is the only floating-point value where NaN != NaN *> returns .TRUE. To check for NaNs, pass the same variable as both *> arguments. *> *> A compiler must assume that the two arguments are *> not the same variable, and the test will not be optimized away. *> Interprocedural or whole-program optimization may delete this *> test. The ISNAN functions will be replaced by the correct *> Fortran 03 intrinsic once the intrinsic is widely available. *> \endverbatim * * Arguments: * ========== * *> \param[in] DIN1 *> \verbatim *> DIN1 is DOUBLE PRECISION *> \endverbatim *> *> \param[in] DIN2 *> \verbatim *> DIN2 is DOUBLE PRECISION *> Two numbers to compare for inequality. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup auxOTHERauxiliary * * ===================================================================== LOGICAL FUNCTION DLAISNAN( DIN1, DIN2 ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. DOUBLE PRECISION DIN1, DIN2 * .. * * ===================================================================== * * .. Executable Statements .. DLAISNAN = (DIN1.NE.DIN2) RETURN END elk-2.3.22/src/LAPACK/PaxHeaders.22528/ztrtri.f0000644002504400250440000000005012337331322016635 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/ztrtri.f0000644002504400250440000001547012337331322017410 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTRTRI * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download ZTRTRI + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE ZTRTRI( UPLO, DIAG, N, A, LDA, INFO ) * * .. Scalar Arguments .. * CHARACTER DIAG, UPLO * INTEGER INFO, LDA, N * .. * .. Array Arguments .. * COMPLEX*16 A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTRTRI computes the inverse of a complex upper or lower triangular *> matrix A. *> *> This is the Level 3 BLAS version of the algorithm. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': A is upper triangular; *> = 'L': A is lower triangular. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> = 'N': A is non-unit triangular; *> = 'U': A is unit triangular. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> The order of the matrix A. N >= 0. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the triangular matrix A. If UPLO = 'U', the *> leading N-by-N upper triangular part of the array A contains *> the upper triangular matrix, and the strictly lower *> triangular part of A is not referenced. If UPLO = 'L', the *> leading N-by-N lower triangular part of the array A contains *> the lower triangular matrix, and the strictly upper *> triangular part of A is not referenced. If DIAG = 'U', the *> diagonal elements of A are also not referenced and are *> assumed to be 1. *> On exit, the (triangular) inverse of the original matrix, in *> the same storage format. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> *> \param[out] INFO *> \verbatim *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, A(i,i) is exactly zero. The triangular *> matrix is singular and its inverse can not be computed. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16OTHERcomputational * * ===================================================================== SUBROUTINE ZTRTRI( UPLO, DIAG, N, A, LDA, INFO ) * * -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER DIAG, UPLO INTEGER INFO, LDA, N * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE, ZERO PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ), $ ZERO = ( 0.0D+0, 0.0D+0 ) ) * .. * .. Local Scalars .. LOGICAL NOUNIT, UPPER INTEGER J, JB, NB, NN * .. * .. External Functions .. LOGICAL LSAME INTEGER ILAENV EXTERNAL LSAME, ILAENV * .. * .. External Subroutines .. EXTERNAL XERBLA, ZTRMM, ZTRSM, ZTRTI2 * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN * .. * .. Executable Statements .. * * Test the input parameters. * INFO = 0 UPPER = LSAME( UPLO, 'U' ) NOUNIT = LSAME( DIAG, 'N' ) IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( .NOT.NOUNIT .AND. .NOT.LSAME( DIAG, 'U' ) ) THEN INFO = -2 ELSE IF( N.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'ZTRTRI', -INFO ) RETURN END IF * * Quick return if possible * IF( N.EQ.0 ) $ RETURN * * Check for singularity if non-unit. * IF( NOUNIT ) THEN DO 10 INFO = 1, N IF( A( INFO, INFO ).EQ.ZERO ) $ RETURN 10 CONTINUE INFO = 0 END IF * * Determine the block size for this environment. * NB = ILAENV( 1, 'ZTRTRI', UPLO // DIAG, N, -1, -1, -1 ) IF( NB.LE.1 .OR. NB.GE.N ) THEN * * Use unblocked code * CALL ZTRTI2( UPLO, DIAG, N, A, LDA, INFO ) ELSE * * Use blocked code * IF( UPPER ) THEN * * Compute inverse of upper triangular matrix * DO 20 J = 1, N, NB JB = MIN( NB, N-J+1 ) * * Compute rows 1:j-1 of current block column * CALL ZTRMM( 'Left', 'Upper', 'No transpose', DIAG, J-1, $ JB, ONE, A, LDA, A( 1, J ), LDA ) CALL ZTRSM( 'Right', 'Upper', 'No transpose', DIAG, J-1, $ JB, -ONE, A( J, J ), LDA, A( 1, J ), LDA ) * * Compute inverse of current diagonal block * CALL ZTRTI2( 'Upper', DIAG, JB, A( J, J ), LDA, INFO ) 20 CONTINUE ELSE * * Compute inverse of lower triangular matrix * NN = ( ( N-1 ) / NB )*NB + 1 DO 30 J = NN, 1, -NB JB = MIN( NB, N-J+1 ) IF( J+JB.LE.N ) THEN * * Compute rows j+jb:n of current block column * CALL ZTRMM( 'Left', 'Lower', 'No transpose', DIAG, $ N-J-JB+1, JB, ONE, A( J+JB, J+JB ), LDA, $ A( J+JB, J ), LDA ) CALL ZTRSM( 'Right', 'Lower', 'No transpose', DIAG, $ N-J-JB+1, JB, -ONE, A( J, J ), LDA, $ A( J+JB, J ), LDA ) END IF * * Compute inverse of current diagonal block * CALL ZTRTI2( 'Lower', DIAG, JB, A( J, J ), LDA, INFO ) 30 CONTINUE END IF END IF * RETURN * * End of ZTRTRI * END elk-2.3.22/src/LAPACK/PaxHeaders.22528/dlaswp.f0000644002504400250440000000005012337331322016571 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/LAPACK/dlaswp.f0000644002504400250440000001167712337331322017351 0ustar00dewhurstdewhurst00000000000000*> \brief \b DLASWP performs a series of row interchanges on a general rectangular matrix. * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly *> Download DLASWP + dependencies *> *> [TGZ] *> *> [ZIP] *> *> [TXT] *> \endhtmlonly * * Definition: * =========== * * SUBROUTINE DLASWP( N, A, LDA, K1, K2, IPIV, INCX ) * * .. Scalar Arguments .. * INTEGER INCX, K1, K2, LDA, N * .. * .. Array Arguments .. * INTEGER IPIV( * ) * DOUBLE PRECISION A( LDA, * ) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DLASWP performs a series of row interchanges on the matrix A. *> One row interchange is initiated for each of rows K1 through K2 of A. *> \endverbatim * * Arguments: * ========== * *> \param[in] N *> \verbatim *> N is INTEGER *> The number of columns of the matrix A. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the matrix of column dimension N to which the row *> interchanges will be applied. *> On exit, the permuted matrix. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> The leading dimension of the array A. *> \endverbatim *> *> \param[in] K1 *> \verbatim *> K1 is INTEGER *> The first element of IPIV for which a row interchange will *> be done. *> \endverbatim *> *> \param[in] K2 *> \verbatim *> K2 is INTEGER *> The last element of IPIV for which a row interchange will *> be done. *> \endverbatim *> *> \param[in] IPIV *> \verbatim *> IPIV is INTEGER array, dimension (K2*abs(INCX)) *> The vector of pivot indices. Only the elements in positions *> K1 through K2 of IPIV are accessed. *> IPIV(K) = L implies rows K and L are to be interchanged. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> The increment between successive values of IPIV. If IPIV *> is negative, the pivots are applied in reverse order. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date September 2012 * *> \ingroup doubleOTHERauxiliary * *> \par Further Details: * ===================== *> *> \verbatim *> *> Modified by *> R. C. Whaley, Computer Science Dept., Univ. of Tenn., Knoxville, USA *> \endverbatim *> * ===================================================================== SUBROUTINE DLASWP( N, A, LDA, K1, K2, IPIV, INCX ) * * -- LAPACK auxiliary routine (version 3.4.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012 * * .. Scalar Arguments .. INTEGER INCX, K1, K2, LDA, N * .. * .. Array Arguments .. INTEGER IPIV( * ) DOUBLE PRECISION A( LDA, * ) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I, I1, I2, INC, IP, IX, IX0, J, K, N32 DOUBLE PRECISION TEMP * .. * .. Executable Statements .. * * Interchange row I with row IPIV(I) for each of rows K1 through K2. * IF( INCX.GT.0 ) THEN IX0 = K1 I1 = K1 I2 = K2 INC = 1 ELSE IF( INCX.LT.0 ) THEN IX0 = 1 + ( 1-K2 )*INCX I1 = K2 I2 = K1 INC = -1 ELSE RETURN END IF * N32 = ( N / 32 )*32 IF( N32.NE.0 ) THEN DO 30 J = 1, N32, 32 IX = IX0 DO 20 I = I1, I2, INC IP = IPIV( IX ) IF( IP.NE.I ) THEN DO 10 K = J, J + 31 TEMP = A( I, K ) A( I, K ) = A( IP, K ) A( IP, K ) = TEMP 10 CONTINUE END IF IX = IX + INCX 20 CONTINUE 30 CONTINUE END IF IF( N32.NE.N ) THEN N32 = N32 + 1 IX = IX0 DO 50 I = I1, I2, INC IP = IPIV( IX ) IF( IP.NE.I ) THEN DO 40 K = N32, N TEMP = A( I, K ) A( I, K ) = A( IP, K ) A( IP, K ) = TEMP 40 CONTINUE END IF IX = IX + INCX 50 CONTINUE END IF * RETURN * * End of DLASWP * END elk-2.3.22/src/PaxHeaders.22528/main.f900000644002504400250440000000005012337331322015441 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/main.f900000644002504400250440000022731712337331322016221 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2011 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. ! main routine for the Elk code program main use modmain use modmpi use modvars implicit none ! local variables logical exist integer itask ! initialise MPI execution environment call mpi_init(ierror) ! duplicate mpi_comm_world call mpi_comm_dup(mpi_comm_world,mpi_comm_kpt,ierror) ! determine the number of MPI processes call mpi_comm_size(mpi_comm_kpt,np_mpi,ierror) ! determine the local MPI process number call mpi_comm_rank(mpi_comm_kpt,lp_mpi,ierror) ! determine if the local process is the master if (lp_mpi.eq.0) then mp_mpi=.true. write(*,*) write(*,'("Elk code version ",I1.1,".",I1.1,".",I2.2," started")') version if (np_mpi.gt.1) then write(*,*) write(*,'("Using MPI, number of processes : ",I8)') np_mpi end if else mp_mpi=.false. end if ! read input files call readinput ! delete the VARIABLES.OUT file call delvars ! write version number to VARIABLES.OUT call writevars('version',nv=3,iva=version) ! check if Elk is already running in this directory if (mp_mpi) then inquire(file='RUNNING',exist=exist) if (exist) then write(*,*) write(*,'("Info(main): several copies of Elk may be running in this path")') write(*,'("(this could be intentional, or result from a previous crash,")') write(*,'(" or arise from an incorrect MPI compilation)")') else open(50,file='RUNNING') close(50) end if end if ! perform the tasks do itask=1,ntasks task=tasks(itask) if (mp_mpi) then write(*,*) write(*,'("Info(main): current task : ",I6)') task end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! check if task can be run with MPI if (lp_mpi.gt.0) then select case(task) case(0,1,2,3,5,28,120,135,136,170,180,185,188,240,300,320,330,440) continue case default write(*,'("Info(main): MPI process ",I6," idle for task ",I6)') lp_mpi, & task cycle end select end if ! write task to VARIABLES.OUT call writevars('task',iv=task) select case(task) case(-1) write(*,'("Elk version ",I1.1,".",I1.1,".",I2.2)') version case(0,1) call gndstate case(2,3) call geomopt case(5) call hartfock case(10) call dos case(14) call writesf case(15,16) call writelsj case(20,21) call bandstr case(25) call effmass case(28,29) call mae case(31,32,33) call rhoplot case(41,42,43) call potplot case(51,52,53) call elfplot case(61,62,63,162) call wfplot case(65) call wfcrplot case(72,73,82,83,142,143,152,153) call vecplot case(91,92,93) call dbxcplot case(100,101) call fermisurf case(102) call fermisurfbxsf case(105) call nesting case(110) call mossbauer case(115) call writeefg case(120) call writepmat case(121) call dielectric case(122) call moke case(125) call nonlinopt case(130) call writeexpmat case(135) call writewfpw case(140) call elnes case(170) call writeemd case(175) call compton case(180) call epsinv_rpa case(185) call writehmlbse case(186) call writeevbse case(187) call dielectric_bse case(190) call geomplot case(195) call sfacrho case(196) call sfacmag case(200,201,202) call phononsc case(205) call phonon case(210) call phdos case(220) call phdisp case(230) call writephn case(240) call ephcouple case(245) call phlwidth case(250) call alpha2f case(260) call eliashberg case(270) call scdft case(300) call rdmft case(188,320) call tddftlr case(330) call tddftsplr case(350,351,352) call spiralsc case(400) call writetmdu case(440) call writestress case(450) call genafieldt case(460) call tddft case(500) call testcheck case default write(*,*) write(*,'("Error(main): task not defined : ",I8)') task write(*,*) stop end select end do if (mp_mpi) then open(50,file='RUNNING') close(50,status='DELETE') write(*,*) write(*,'("Elk code stopped")') end if ! terminate MPI execution environment call mpi_finalize(ierror) stop end program !BOI ! !TITLE: {\huge{\sc The Elk Code Manual}}\\ \Large{\sc Version 2.3.22}\\ \vskip 20pt \includegraphics[height=1cm]{elk_silhouette.pdf} ! !AUTHORS: {\sc J. K. Dewhurst, S. Sharma} \\ {\sc L. Nordstr\"{o}m, F. Cricchio, F. Bultmark, O. Gr\aa n\"{a}s} \\ {\sc E. K. U. Gross} ! !AFFILIATION: ! !INTRODUCTION: Introduction ! Welcome to the Elk Code! Elk is an all-electron full-potential linearised ! augmented-plane-wave (FP-LAPW) code for determining the properties of ! crystalline solids. It was developed originally at the ! Karl-Franzens-Universit\"{a}t Graz as part of the EXCITING EU Research and ! Training Network project\footnote{EXCITING code developed under the Research ! and Training Network EXCITING funded by the EU, contract No. ! HPRN-CT-2002-00317}. The guiding philosophy during the implementation of the ! code was to keep it as simple as possible for both users and developers ! without compromising on its capabilities. All the routines are released ! under either the GNU General Public License (GPL) or the GNU Lesser General ! Public License (LGPL) in the hope that they may inspire other scientists to ! implement new developments in the field of density functional theory and ! beyond. ! ! \section{Acknowledgments} ! Lots of people contributed to the Elk code with ideas, checking and testing, ! writing code or documentation and general encouragement. They include ! Claudia Ambrosch-Draxl, Clas Persson, Christian Brouder, Rickard Armiento, ! Andrew Chizmeshya, Per Anderson, Igor Nekrasov, Sushil Auluck, Frank Wagner, ! Fateh Kalarasse, J\"{u}rgen Spitaler, Stefano Pittalis, Nektarios ! Lathiotakis, Tobias Burnus, Stephan Sagmeister, Christian Meisenbichler, ! S\'{e}bastien Leb\`{e}gue, Yigang Zhang, Fritz K\"{o}rmann, Alexey Baranov, ! Anton Kozhevnikov, Shigeru Suehara, Frank Essenberger, Antonio Sanna, Tyrel ! McQueen, Tim Baldsiefen, Marty Blaber, Anton Filanovich, Torbj\"{o}rn ! Bj\"{o}rkman, Martin Stankovski, Jerzy Goraus, Markus Meinert, Daniel Rohr, ! Vladimir Nazarov, Kevin Krieger, Pink Floyd, Arkardy Davydov, Florian Eich, ! Aldo Romero Castro, Koichi Kitahara, James Glasbrenner, Konrad Bussmann, ! Igor Mazin and Matthieu Verstraete. Special mention of David Singh's very ! useful book on the LAPW method\footnote{D. J. Singh, {\it Planewaves, ! Pseudopotentials and the LAPW Method} (Kluwer Academic Publishers, Boston, ! 1994).} must also be made. Finally we would like to acknowledge the generous ! support of Karl-Franzens-Universit\"{a}t Graz, as well as the EU Marie-Curie ! Research Training Networks initiative. ! ! \vspace{24pt} ! Kay Dewhurst\newline ! Sangeeta Sharma\newline ! Lars Nordstr\"{o}m\newline ! Francesco Cricchio\newline ! Fredrik Bultmark\newline ! Oscar Gr\aa n\"{a}s\newline ! Hardy Gross ! ! \vspace{12pt} ! Halle and Uppsala, May 2014 ! \newpage ! ! \section{Units} ! Unless explicitly stated otherwise, Elk uses atomic units. In this system ! $\hbar=1$, the electron mass $m=1$, the Bohr radius $a_0=1$ and the electron ! charge $e=1$ (note that the electron charge is positive, so that the atomic ! numbers $Z$ are negative). Thus, the atomic unit of length is ! 0.52917721092(17) \AA, and the atomic unit of energy is the Hartree which ! equals 27.21138505(60) eV. The unit of the external magnetic fields is ! defined such that one unit of magnetic field in {\tt elk.in} equals ! 1715.2554659 Tesla. ! ! \section{Compiling and running Elk} ! \subsection{Compiling the code} ! Unpack the code from the archive file. Run the command ! \begin{verbatim} ! setup ! \end{verbatim} ! in the {\tt elk} directory and select the appropriate system and compiler. ! We highly recommend that you edit the file {\tt make.inc} and tune the ! compiler options for your computer system. In particular, use of ! machine-optimised BLAS/LAPACK libraries can result in significant increase ! in performance, but make sure they are of version $3.x$. Following this, run ! \begin{verbatim} ! make ! \end{verbatim} ! This will hopefully compile the entire code and all the libraries into one ! executable, {\tt elk}, located in the {\tt elk/src} directory. It will also ! compile two useful auxiliary programs, namely {\tt spacegroup} for producing ! crystal geometries from spacegroup data and {\tt eos} for fitting equations ! of state to energy-volume data. If you want to compile everything all over ! again, then run {\tt make clean} from the {\tt elk} directory, followed by ! {\tt make}. ! \subsubsection{Parallelism in Elk} ! Three forms of parallelism are implemented in Elk, and all can be used in ! combination with each other, with efficiency depending on the particular ! task, crystal structure and computer system. You may need to contact your ! system administrator for assistance with running Elk in parallel. ! \begin{enumerate} ! \item ! OpenMP works for symmetric multiprocessors, i.e. computers that have many ! cores with the same unified memory accessible to each. It is enabled by ! setting the appropriate command-line options (e.g. {\tt -openmp} for the ! Intel compiler) before compiling, and also at runtime by the environment ! variable ! \begin{verbatim} ! export OMP_NUM_THREADS=x ! \end{verbatim} ! where x is the number of cores available on a particular node. Elk also ! makes use of nested OpenMP parallelism, meaning that there are nested ! parallel loops in parts of the code, the iterative diagonaliser being one ! such example. These nested loops can be run in parallel by setting ! \begin{verbatim} ! export OMP_NESTED=true ! \end{verbatim} ! Be aware that using this option can actually degrade performance if too ! many threads are created. To avoid such oversubscription, you may need to ! adjust related OpenMP variables including {\tt OMP\_THREAD\_LIMIT}, ! {\tt OMP\_MAX\_ACTIVE\_LEVELS} and {\tt OMP\_DYNAMIC} (there may also be ! additional compiler-specific environment variables that can be set). ! Finally, some vendor-supplied BLAS/LAPACK libraries use OpenMP internally, ! for example MKL from Intel and ACML from AMD; refer to their documentation ! for usage. ! \item ! The message passing interface (MPI) is particularly suitable for running ! Elk across multiple nodes of a cluster, with scaling to hundreds of ! processors possible. To enable MPI, comment out the lines indicated in ! {\tt elk/make.inc}. Then run {\tt make clean} followed by {\tt make}. If ! $y$ is the number of nodes and $x$ is the number of cores per node, then at ! runtime envoke ! \begin{verbatim} ! mpirun -np z ./elk ! \end{verbatim} ! where $z=x y$ is the total number of cores available on the machine. ! Highest efficiency is obtained by using hybrid parallelism with OpenMP on ! each node and MPI across nodes. This can be done by compiling the code ! using the MPI Fortran compiler in combination with the OpenMP command-line ! option. At runtime set {\tt export OMP\_NUM\_THREADS=x} and start the MPI ! run with {\em one process per node} as follows ! \begin{verbatim} ! mpirun -pernode -np y ./elk ! \end{verbatim} ! The number of MPI processes is reported in the file {\tt INFO.OUT} which ! serves as a check that MPI is running correctly. Note that version 2 of the ! MPI libraries is required to run Elk. ! \item ! Phonon calculations use a simple form of parallelism by just examining the ! run directory for dynamical matrix files. These files are of the form ! \begin{verbatim} ! DYN_Qqqqq_qqqq_qqqq_Sss_Aaa_Pp.OUT ! \end{verbatim} ! and contain a single row of a particular dynamical matrix. Elk simply finds ! which {\tt DYN} files do not exist, chooses one and runs it. This way many ! independent runs of Elk can be started in the same directory on a networked ! file system (NFS), and will run until all the dynamical matrices files are ! completed. Should a particular run crash, then delete the associated empty ! {\tt DYN} file and rerun Elk. ! \end{enumerate} ! ! \subsection{Linking with the Libxc functional library} ! Libxc is the ETSF library of exchange-correlation functionals. Elk can use ! the complete set of LDA and GGA functionals available in Libxc as well as ! the potential-only metaGGA's. In order to enable this, first download and ! compile Libxc version 2.2.$x$. This should have produced the files ! {\tt libxc.a} and {\tt libxcf90.a}. Copy these files to the {\tt elk/src} ! directory and then uncomment the lines indicated for Libxc in the file ! {\tt elk/make.inc}. Once this is done, run {\tt make clean} followed by ! {\tt make}. To select a particular functional of Libxc, use the block ! \begin{verbatim} ! xctype ! 100 nx nc ! \end{verbatim} ! where {\tt nx} and {\tt nc} are, respectively, the numbers of the exchange ! and correlation functionals in the Libxc library. See the file ! {\tt elk/src/libxc\_funcs.f90} for a list of the functionals and their ! associated numbers. ! ! \subsection{Running the code} ! As a rule, all input files for the code are in lower case and end with the ! extension {\tt .in}. All output files are uppercase and have the extension ! {\tt .OUT}. For most cases, the user will only need to modify the file ! {\tt elk.in}. In this file input parameters are arranged in blocks. ! Each block consists of a block name on one line and the block variables on ! subsequent lines. Almost all blocks are optional: the code uses reasonable ! default values in cases where they are absent. Blocks can appear in any ! order, if a block is repeated then the second instance is used. Comment ! lines can be included in the input file and begin with the {\tt !} ! character. ! ! \subsubsection{Species files} ! The only other input files are those describing the atomic species which go ! into the crystal. These files are found in the {\tt species} directory and ! are named with the element symbol and the extension {\tt .in}, for example ! {\tt Sb.in}. They contain parameters like the atomic charge, mass, ! muffin-tin radius, occupied atomic states and the type of linearisation ! required. Here as an example is the copper species file {\tt Cu.in}: ! \begin{verbatim} ! 'Cu' : spsymb ! 'copper' : spname ! -29.0000 : spzn ! 115837.2716 : spmass ! 0.371391E-06 2.0000 34.8965 500 : sprmin, rmt, sprmax, nrmt ! 10 : spnst ! 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore ! 2 0 1 2.00000 T ! 2 1 1 2.00000 T ! 2 1 2 4.00000 T ! 3 0 1 2.00000 T ! 3 1 1 2.00000 F ! 3 1 2 4.00000 F ! 3 2 2 4.00000 F ! 3 2 3 6.00000 F ! 4 0 1 1.00000 F ! 1 : apword ! 0.1500 0 F : apwe0, apwdm, apwve ! 1 : nlx ! 2 2 : lx, apword ! 0.1500 0 T : apwe0, apwdm, apwve ! 0.1500 1 T ! 4 : nlorb ! 0 2 : lorbl, lorbord ! 0.1500 0 F : lorbe0, lorbdm, lorbve ! 0.1500 1 F ! 1 2 ! 0.1500 0 F ! 0.1500 1 F ! 2 2 ! 0.1500 0 F ! 0.1500 1 F ! 1 3 ! 0.1500 0 F ! 0.1500 1 F ! -2.8652 0 T ! \end{verbatim} ! The input parameters are defined as follows: ! \vskip 6pt ! {\tt spsymb} \\ ! The symbol of the element. ! \vskip 6pt ! {\tt spname} \\ ! The name of the element. ! \vskip 6pt ! {\tt spzn} \\ ! Nuclear charge: should be negative since the electron charge is taken to be ! postive in the code; it can also be fractional for purposes of doping. ! \vskip 6pt ! {\tt spmass} \\ ! Nuclear mass in atomic units. ! \vskip 6pt ! {\tt sprmin}, {\tt rmt}, {\tt sprmax}, {\tt nrmt} \\ ! Respectively, the minimum radius on logarithmic radial mesh; muffin-tin ! radius; effective infinity for atomic radial mesh; and number of radial mesh ! points to muffin-tin radius. ! \vskip 6pt ! {\tt spnst} \\ ! Number of atomic states. ! \vskip 6pt ! {\tt spn}, {\tt spl}, {\tt spk}, {\tt spocc}, {\tt spcore} \\ ! Respectively, the principal quantum number of the radial Dirac equation; ! quantum number $l$; quantum number $k$ ($l$ or $l+1$); occupancy of atomic ! state (can be fractional); {\tt .T.} if state is in the core and therefore ! treated with the Dirac equation in the spherical part of the muffin-tin ! Kohn-Sham potential. ! \vskip 6pt ! {\tt apword} \\ ! Default APW function order, i.e. the number of radial functions and ! therefore the order of the radial derivative matching at the muffin-tin ! surface. ! \vskip 6pt ! {\tt apwe0}, {\tt apwdm}, {\tt apwve} \\ ! Respectively, the default APW linearisation energy; the order of the energy ! derivative of the APW radial function $\partial^m u(r)/\partial E^m$; and ! {\tt .T.} if the linearisation energy is allowed to vary. ! \vskip 6pt ! {\tt nlx} \\ ! The number of exceptions to the default APW configuration. These should be ! listed on subsequent lines for particular angular momenta. In this example, ! the fixed energy APW with angular momentum $d$ ({\tt lx} $=2$) is replaced ! with a LAPW, which has variable linearisation energy. ! \vskip 6pt ! {\tt nlorb} \\ ! Number of local orbitals. ! \vskip 6pt ! {\tt lorbl}, {\tt lorbord} \\ ! Respectively, the angular momentum $l$ of the local-orbital; and the order ! of the radial derivative which goes to zero at the muffin-tin surface. ! \vskip 6pt ! {\tt lorbe0}, {\tt lorbdm}, {\tt lorbve} \\ ! Respectively, the default local-orbital linearisation energy; the order of ! the energy derivative of the local-orbital radial function; and {\tt .T.} if ! the linearisation energy is allowed to vary. ! ! \subsubsection{Examples} ! The best way to learn to use Elk is to run the examples included with the ! package. These can be found in the {\tt examples} directory and use many of ! the code's capabilities. The following section which describes all the input ! parameters will be of invaluable assistance. ! ! \section{Input blocks} ! This section lists all the input blocks available. It is arranged with the ! name of the block followed by a table which lists each parameter name, what ! the parameter does, its type and default value. A horizontal line in the ! table indicates a new line in {\tt elk.in}. Below the table is a brief ! overview of the block's function. ! ! \block{atoms}{ ! {\tt nspecies} & number of species & integer & 0 \\ ! \hline ! {\tt spfname(i)} & species filename for species $i$ & string & - \\ ! \hline ! {\tt natoms(i)} & number of atoms for species $i$ & integer & - \\ ! \hline ! {\tt atposl(j,i)} & atomic position in lattice coordinates for atom $j$ ! & real(3) & - \\ ! {\tt bfcmt(j,i)} & muffin-tin external magnetic field in Cartesian ! coordinates for atom $j$ & real(3) & -} ! Defines the atomic species as well as their positions in the unit cell and ! the external magnetic field applied throughout the muffin-tin. These fields ! are used to break spin symmetry and should be considered infinitesimal as ! they do not contribute directly to the total energy. Collinear calculations ! are more efficient if the field is applied in the $z$-direction. One could, ! for example, set up an anti-ferromagnetic crystal by pointing the field on ! one atom in the positive $z$-direction and in the opposite direction on ! another atom. If {\tt molecule} is {\tt .true.} then the atomic positions ! are assumed to be in Cartesian coordinates. See also {\tt sppath}, ! {\tt bfieldc} and {\tt molecule}. ! ! \block{autokpt}{ ! {\tt autokpt} & {\tt .true.} if the $k$-point set is to be determined ! automatically & logical & {\tt .false.}} ! See {\tt radkpt} for details. ! ! \block{autolinengy}{ ! {\tt autolinengy} & {\tt .true.} if the fixed linearisation energies are ! to be determined automatically & logical & {\tt .false.}} ! See {\tt dlefe} for details. ! ! \block{autoswidth}{ ! {\tt autoswidth} & {\tt .true.} if the smearing parameter {\tt swidth} ! should be determined automatically & logical & {\tt .false.}} ! Calculates the smearing width from the $k$-point density, $V_{\rm BZ}/n_k$; ! the valence band width, $W$; and an effective mass parameter, $m^{*}$; ! according to ! $$ \sigma=\frac{\sqrt{2W}}{m^{*}}\left(\frac{3}{4\pi} ! \frac{V_{\rm BZ}}{n_k}\right)^{1/3}. $$ ! The variable {\tt mstar} then replaces {\tt swidth} as the control parameter ! of the smearing width. A large value of $m^{*}$ gives a narrower smearing ! function. Since {\tt swidth} is adjusted according to the fineness of the ! ${\bf k}$-mesh, the smearing parameter can then be eliminated. It is not ! recommended that {\tt autoswidth} be used in conjunction with the ! Fermi-Dirac smearing function, since the electronic temperature will then be ! a function of the $k$-point mesh. See T. Bj\"orkman and O. Gr\aa n\"as, ! {\it Int. J. Quant. Chem.} DOI: 10.1002/qua.22476 (2010) for details. See ! also {\tt stype} and {\tt swidth}. ! ! \block{avec}{ ! {\tt avec(1)} & first lattice vector & real(3) & $(1.0,0.0,0.0)$ \\ ! \hline ! {\tt avec(2)} & second lattice vector & real(3) & $(0.0,1.0,0.0)$ \\ ! \hline ! {\tt avec(3)} & third lattice vector & real(3) & $(0.0,0.0,1.0)$} ! Lattice vectors of the crystal in atomic units (Bohr). ! ! \block{beta0}{ ! {\tt beta0} & adaptive mixing parameter & real & $0.05$} ! This determines how much of the potential from the previous self-consistent ! loop is mixed with the potential from the current loop. It should be made ! smaller if the calculation is unstable. See {\tt betamax} and also the ! routine {\tt mixadapt}. ! ! \block{betamax}{ ! {\tt betamax} & maximum adaptive mixing parameter & real & $0.5$} ! Maximum allowed mixing parameter used in routine {\tt mixadapt}. ! ! \block{bfieldc}{ ! {\tt bfieldc} & global external magnetic field in Cartesian coordinates & ! real(3) & $(0.0,0.0,0.0)$} ! This is a constant magnetic field applied throughout the entire unit cell ! and enters the second-variational Hamiltonian as ! $$ \frac{g_e}{4c}\,\vec{\sigma}\cdot{\bf B}_{\rm ext}, $$ ! where $g_e$ is the electron $g$-factor. This field is normally used to break ! spin symmetry for spin-polarised calculations and considered to be ! infinitesimal with no direct contribution to the total energy. In cases ! where the magnetic field is finite (for example when computing magnetic ! response) the external ${\bf B}$-field energy reported in {\tt INFO.OUT} ! should be added to the total by hand. This field is applied throughout the ! entire unit cell. To apply magnetic fields in particular muffin-tins use the ! {\tt bfcmt} vectors in the {\tt atoms} block. Collinear calculations are ! more efficient if the field is applied in the $z$-direction. ! ! \block{broydpm}{ ! {\tt broydpm} & Broyden mixing parameters $\alpha$ and $w_0$ & real & ! $(0.25,0.01)$} ! See {\tt mixtype} and {\tt mixsdb}. ! ! \block{c\_tb09}{ ! {\tt c\_tb09} & Tran-Blaha constant $c$ & real & -} ! Sets the constant $c$ in the Tran-Blaha '09 functional. Normally this is ! calculated from the density, but there may be situations where this needs to ! be adjusted by hand. See {\it Phys. Rev. Lett.} {\bf 102}, 226401 (2009). ! ! \block{chgexs}{ ! {\tt chgexs} & excess electronic charge & real & $0.0$} ! This controls the amount of charge in the unit cell beyond that required to ! maintain neutrality. It can be set positive or negative depending on whether ! electron or hole doping is required. ! ! \block{cmagz}{ ! {\tt cmagz} & .true. if $z$-axis collinear magnetism is to be enforced & ! logical & {\tt .false.}} ! This variable can be set to .true. in cases where the magnetism is ! predominantly collinear in the $z$-direction, for example a ferromagnet with ! spin-orbit coupling. This will make the calculation considerably faster at ! the slight expense of precision. ! ! \block{deltaem}{ ! {\tt deltaem} & the size of the ${\bf k}$-vector displacement used when ! calculating numerical derivatives for the effective mass tensor & real & ! $0.025$} ! See {\tt ndspem} and {\tt vklem}. ! ! \block{deltaph}{ ! {\tt deltaph} & size of the atomic displacement used for calculating ! dynamical matrices & real & $0.02$} ! Phonon calculations are performed by constructing a supercell corresponding ! to a particular ${\bf q}$-vector and making a small periodic displacement of ! the atoms. The magnitude of this displacement is given by {\tt deltaph}. ! This should not be made too large, as anharmonic terms could then become ! significant, neither should it be too small as this can introduce numerical ! error. ! ! \block{deltast}{ ! {\tt deltast} & size of the change in lattice vectors used for calculating ! the stress tensor & real & $0.01$} ! The stress tensor is computed by changing the lattice vector matrix $A$ by ! $$ A\rightarrow (1+\delta t\,e_i)A, $$ ! where $dt$ is an infinitesimal equal in practice to {\tt deltast} and $e_i$ ! is the $i^{\rm th}$ strain tensor. Numerical finite differences are used to ! compute the stress tensor as the derivative of the total energy $dE_i/dt$. ! ! \block{dft+u}{ ! {\tt dftu} & type of DFT+$U$ calculation & integer & 0 \\ ! {\tt inpdftu} & type of input for DFT+U calculation & integer & 1 \\ ! \hline ! {\tt is} & species number & integer & - \\ ! {\tt l} & angular momentum value & integer & -1 \\ ! {\tt u} & the desired $U$ value & real & $0.0$ \\ ! {\tt j} & the desired $J$ value & real & $0.0$} ! This block contains the parameters required for an DFT+$U$ calculation, with ! the list of parameters for each species terminated with a blank line. The ! type of double counting required is set with the parameter {\tt dftu}. ! Currently implemented are: ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! 0 & No DFT+$U$ calculation \\ ! 1 & Fully localised limit (FLL) \\ ! 2 & Around mean field (AFM) \\ ! 3 & An interpolation between FLL and AFM \\ ! \end{tabularx} ! \vskip 6pt ! The type of input parameters is set with the parameter {\tt inpdftu}. ! The current possibilities are: ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! 1 & U and J \\ ! 2 & Slater parameters \\ ! 3 & Racah parameters \\ ! 4 & Yukawa screening length \\ ! 5 & U and determination of corresponding Yukawa screening length ! \end{tabularx} ! \vskip 6pt ! See (amongst others) {\it Phys. Rev. B} {\bf 67}, 153106 (2003), ! {\it Phys. Rev. B} {\bf 52}, R5467 (1995), {\it Phys. Rev. B} {\bf 60}, ! 10763 (1999), and {\it Phys. Rev. B} {\bf 80}, 035121 (2009). ! ! \block{dlefe}{ ! {\tt dlefe} & difference between the fixed linearisation energy and the ! Fermi energy & real & $-0.1$} ! When {\tt autolinengy} is {\tt .true.} then the fixed linearisation energies ! are set to the Fermi energy plus {\tt dlefe}. ! ! \block{dosmsum}{ ! {\tt dosmsum} & {\tt .true.} if the partial DOS is to be summed over $m$ & ! logical & {\tt .false.}} ! By default, the partial density of states is resolved over $(l,m)$ quantum ! numbers. If {\tt dosmsum} is set to {\tt .true.} then the partial DOS is ! summed over $m$, and thus depends only on $l$. ! ! \block{dosssum}{ ! {\tt dosssum} & {\tt .true.} if the partial DOS is to be summed over spin & ! logical & {\tt .false.}} ! By default, the partial density of states for spin-polarised systems is spin ! resolved. ! ! \block{epsband}{ ! {\tt epsband} & convergence tolerance for determining band energies & real & ! $1\times 10^{-12}$} ! APW and local-orbital linearisation energies are determined from the band ! energies. This is done by first searching upwards in energy until the radial ! wavefunction at the muffin-tin radius is zero. This is the energy at the top ! of the band, denoted $E_{\rm t}$. A downward search is now performed from ! $E_{\rm t}$ until the slope of the radial wavefunction at the muffin-tin ! radius is zero. This energy, $E_{\rm b}$, is at the bottom of the band. The ! band energy is taken as $(E_{\rm t}+E_{\rm b})/2$. If either $E_{\rm t}$ or ! $E_{\rm b}$ is not found, then the band energy is set to the default value. ! ! \block{epschg}{ ! {\tt epschg} & maximum allowed error in the calculated total charge beyond ! which a warning message will be issued & real & $1\times 10^{-3}$} ! ! \block{epsengy}{ ! {\tt epsengy} & convergence criterion for the total energy & real & ! $1\times 10^{-4}$} ! See {\tt epspot}. ! ! \block{epsforce}{ ! {\tt epsforce} & convergence tolerance for the forces during a geometry ! optimisation run & real & $2\times 10^{-3}$} ! If the mean absolute value of the atomic forces is less than {\tt epsforce} ! then the geometry optimisation run is ended. See also {\tt tasks} and ! {\tt latvopt}. ! ! \block{epslat}{ ! {\tt epslat } & vectors with lengths less than this are considered zero & ! real & $10^{-6}$} ! Sets the tolerance for determining if a vector or its components are zero. ! This is to account for any numerical error in real or reciprocal space ! vectors. ! ! \block{epsocc}{ ! {\tt epsocc} & smallest occupancy for which a state will contribute to the ! density & real & $1\times 10^{-8}$} ! ! \block{epspot}{ ! {\tt epspot} & convergence criterion for the Kohn-Sham potential and field & ! real & $1\times 10^{-6}$} ! If the RMS change in the Kohn-Sham potential and magnetic field is smaller ! than {\tt epspot} and the absolute change in the total energy is less than ! {\tt epsengy}, then the self-consistent loop is considered converged ! and exited. For geometry optimisation runs this results in the forces being ! calculated, the atomic positions updated and the loop restarted. See also ! {\tt epsengy} and {\tt maxscl}. ! ! \block{epsstress}{ ! {\tt epsstress} & convergence tolerance for the stress tensor during a ! geometry optimisation run with lattice vector relaxation & real & ! $5\times 10^{-4}$} ! See also {\tt epsforce} and {\tt latvopt}. ! ! \block{emaxelnes}{ ! {\tt emaxelnes} & maximum allowed initial-state eigenvalue for ELNES ! calculations & real & $-1.2$} ! ! \block{emaxrf}{ ! {\tt emaxrf} & energy cut-off used when calculating Kohn-Sham response ! functions & real & $10^6$} ! A typical Kohn-Sham response function is of the form ! \begin{align*} ! \chi_s({\bf r},{\bf r}',\omega) ! \equiv\frac{\delta\rho({\bf r},\omega)}{\delta v_s({\bf r}',\omega)} ! =\frac{1}{N_k}\sum_{i{\bf k},j{\bf k}'}(f_{i{\bf k}}-f_{j{\bf k}'}) ! \frac{\langle i{\bf k}|\hat{\rho}({\bf r})|j{\bf k}'\rangle ! \langle j{\bf k}'|\hat{\rho}({\bf r}')|i{\bf k}\rangle} ! {w+(\varepsilon_{i{\bf k}}-\varepsilon_{j{\bf k}'})+i\eta}, ! \end{align*} ! where $\hat{\rho}$ is the density operator; $N_k$ is the number of ! $k$-points; $\varepsilon_{i{\bf k}}$ and $f_{i{\bf k}}$ are the eigenvalues ! and occupation numbers, respectively. The variable {\tt emaxrf} is an energy ! window which limits the summation over states in the formula above so that ! $|\varepsilon_{i{\bf k}}-\varepsilon_{\rm Fermi}|<{\tt emaxrf}$. Reducing ! this can result in a faster calculation at the expense of accuracy. ! ! \block{fracinr}{ ! {\tt fracinr} & fraction of the muffin-tin radius up to which {\tt lmaxinr} ! is used as the angular momentum cut-off & real & $0.1$} ! See {\tt lmaxinr}. ! ! \block{fsmtype}{ ! {\tt fsmtype} & 0 for no fixed spin moment (FSM), 1 for total FSM, 2 for ! local muffin-tin FSM, and 3 for both total and local FSM & integer & 0} ! Set to 1, 2 or 3 for fixed spin moment calculations. To fix only the ! direction and not the magnitude set to $-1$, $-2$ or $-3$. See also ! {\tt momfix}, {\tt mommtfix}, {\tt taufsm} and {\tt spinpol}. ! ! \block{ftmtype}{ ! {\tt ftmtype} & 1 to enable a fixed tensor moment (FTM) calculation, ! 0 otherwise & integer & 0} ! If {\tt ftmtype} is $-1$ then the symmetry corresponding to the tensor ! moment is broken but no FTM calculation is performed. See {\it Phys. Rev. ! Lett.} {\bf 103}, 107202 (2009) and also {\tt tmomfix}. ! ! \block{fxclrc}{ ! {\tt fxclrc} & parameters for the dynamical long-range contribution (LRC) to ! the TDDFT exchange-correlation kernel & real(2) & $(0.0,0.0)$} ! These are the parameters $\alpha$ and $\beta$ for the kernel proposed in ! {\it Phys. Rev. B} {\bf 72}, 125203 (2005), namely ! $$ f_{xc}({\bf G},{\bf G}',{\bf q},\omega)=-\frac{\alpha+\beta\omega^2}{q^2} ! \delta_{{\bf G},{\bf G}'}\delta_{{\bf G},{\bf 0}}. $$ ! ! \block{fxtype}{ ! {\tt fxctype} & integer defining the type of exchange-correlation kernel ! $f_{\rm xc}$ & integer & -1} ! The acceptable values are: ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! $-1$ & $f_{\rm xc}$ defined by {\tt xctype} \\ ! 0,1 & RPA ($f_{\rm xc}=0$) \\ ! 200 & Long-range contribution (LRC) kernel, S. Botti {\it et al.}, ! {\it Phys. Rev. B} {\bf 72}, 125203 (2005); see {\tt fxclrc} \\ ! 210 & `Bootstrap' kernel, S. Sharma, J. K. Dewhurst, A. Sanna and ! E. K. U. Gross, {\it Phys. Rev. Lett.} {\bf 107}, 186401 (2011) \\ ! \end{tabularx} ! ! \block{gmaxrf}{ ! {\tt gmaxrf} & maximum length of $|{\bf G}|$ for computing response ! functions & real & $3.0$} ! ! \block{gmaxvr}{ ! {\tt gmaxvr} & maximum length of $|{\bf G}|$ for expanding the interstitial ! density and potential & real & $12.0$} ! This variable has a lower bound which is enforced by the code as follows: ! $$ {\rm gmaxvr}\rightarrow\max\,({\rm gmaxvr},2\times{\rm gkmax} ! +{\rm epslat}) $$ ! See {\tt rgkmax} and {\tt trimvg}. ! ! \block{hdbse}{ ! {\tt hdbse} & {\tt .true.} if the direct term is to be included in the BSE ! Hamiltonian & logical & {\tt .true.}} ! ! \block{highq}{ ! {\tt highq} & {\tt .true.} if a high-quality parameter set should be used & ! logical & {\tt .false.}} ! Setting this to {\tt .true.} results in some default parameters being ! changed to ensure good convergence in most situations. See the subroutine ! {\tt readinput} for the list of changed parameters and their values. These ! changes can be overruled by subsequent blocks in the input file. ! ! \block{hmaxvr}{ ! {\tt hmaxvr} & maximum length of ${\bf H}$-vectors & real & $6.0$} ! The ${\bf H}$-vectors are used for calculating X-ray and magnetic structure ! factors. They are also used in linear response phonon calculations for ! expanding the density and potential in plane waves. See also {\tt gmaxvr}, ! {\tt vhmat}, {\tt reduceh}, {\tt wsfac} and {\tt hkmax}. ! ! \block{hxbse}{ ! {\tt hxbse} & {\tt .true.} if the exchange term is to be included in the BSE ! Hamiltonian & {\tt .true.}} ! ! \block{hybrid}{ ! {\tt hybrid} & {\tt .true} if a hybrid functional is to be used when running ! a Hartree-Fock calculation & logical & {\tt .false}} ! See also {\tt hybridc} and {\tt xctype}. ! ! \block{hybridc}{ ! {\tt hybridc} & hybrid functional mixing coefficient & real & $1.0$} ! ! \block{intraband}{ ! {\tt intraband} & {\tt .true.} if the intraband (Drude-like) contribution is ! to be added to the dieletric tensor & logical & {\tt .false.}} ! ! \block{isgkmax}{ ! {\tt isgkmax} & species for which the muffin-tin radius will be used for ! calculating {\tt gkmax} & integer & $-1$} ! By default ($-1$) the average muffin-tin radius is used for determining ! {\tt gkmax} from {\tt rgkmax}. This can be changed by setting {\tt isgkmax} ! either to the desired species number; or to $-2$ if ! ${\tt gkmax}={\tt rgkmax}/2$; or to $-3$ in which case the smallest ! radius is used. ! ! \block{kstlist}{ ! {\tt kstlist(i)} & $i$th $k$-point and state pair & integer(2) & $(1,1)$} ! This is a user-defined list of $k$-point and state index pairs which are ! those used for plotting wavefunctions and writing ${\bf L}$, ${\bf S}$ and ! ${\bf J}$ expectation values. Only the first pair is used by the ! aforementioned tasks. The list should be terminated by a blank line. ! ! \block{latvopt}{ ! {\tt latvopt} & type of lattice vector optimisation to be performed during ! structural relaxation & integer & 0} ! Unconstrained optimisation of the lattice vectors will be performed with ! ${\tt task}=2,3$ when ${\tt latvopt}=1$. When ${\tt latvopt}=2$ the lattice ! vectors will be optimised while keeping the unit cell volume fixed. In ! either case, the crystal symmetry is retained during optimisation. By ! default (${\tt latvopt}=0$) no lattice vector optimisation is performed ! during structural relaxation. See also {\tt tau0latv}. ! ! \block{lmaxapw}{ ! {\tt lmaxapw} & angular momentum cut-off for the APW functions & integer & ! $8$} ! ! \block{lmaxdos}{ ! {\tt lmaxdos} & angular momentum cut-off for the partial DOS plot & ! integer & $3$} ! ! \block{lmaxinr}{ ! {\tt lmaxinr} & angular momentum cut-off for the muffin-tin density and ! potential on the inner part of the muffin-tin & integer & 2} ! Close to the nucleus, the density and potential is almost spherical and ! therefore the spherical harmonic expansion can be truncated a low angular ! momentum. See also {\tt fracinr}. ! ! \block{lmaxmat}{ ! {\tt lmaxmat} & angular momentum cut-off for the outer-most loop in the ! hamiltonian and overlap matrix set up & integer & 6} ! ! \block{lmaxvr}{ ! {\tt lmaxvr} & angular momentum cut-off for the muffin-tin density and ! potential & integer & 7} ! ! \block{lmirep}{ ! {\tt lmirep} & {\tt .true.} if the $Y_{lm}$ basis is to be transformed ! into the basis of irreducible representations of the site symmetries for ! DOS plotting & logical & {\tt .true.}} ! When lmirep is set to .true., the spherical harmonic basis is transformed ! into one in which the site symmetries are block diagonal. Band characters ! determined from the density matrix expressed in this basis correspond to ! irreducible representations, and allow the partial DOS to be resolved into ! physically relevant contributions, for example $e_g$ and $t_{2g}$. ! ! \block{lorbcnd}{ ! {\tt lorbcnd} & {\tt .true.} if conduction state local-orbitals are to be ! automatically added to the basis & logical & {\tt .false.}} ! Adding these higher energy local-orbitals can improve calculations which ! rely on accurate unoccupied states, such as the response function. See also ! {\tt lorbordc}. ! ! \block{lorbordc}{ ! {\tt lorbordc} & the order of the conduction state local-orbitals & ! integer & 3} ! See {\tt lorbcnd}. ! ! \block{lradstp}{ ! {\tt lradstp} & radial step length for determining coarse radial mesh & ! integer & 4} ! Some muffin-tin functions (such as the density) are calculated on a coarse ! radial mesh and then interpolated onto a fine mesh. This is done for the ! sake of efficiency. {\tt lradstp} defines the step size in going from the ! fine to the coarse radial mesh. If it is too large, loss of precision may ! occur. ! ! \block{maxitoep}{ ! {\tt maxitoep} & maximum number of iterations when solving the exact ! exchange integral equations & integer & 200} ! See {\tt tau0oep}. ! ! \block{maxscl}{ ! {\tt maxscl } & maximum number of self-consistent loops allowed & integer & ! 200} ! This determines after how many loops the self-consistent cycle will ! terminate if the convergence criterion is not met. If {\tt maxscl} is $1$ ! then the density and potential file, {\tt STATE.OUT}, will {\bf not} be ! written to disk at the end of the loop. See {\tt epspot}. ! ! \block{mixtype}{ ! {\tt mixtype } & type of mixing required for the potential & integer & 1} ! Currently implemented are: ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! 1 & Adaptive linear mixing \\ ! 2 & Pulay mixing, {\it Chem. Phys. Lett.} {\bf 73}, 393 (1980) \\ ! 3 & Broyden mixing, {\it J. Phys. A: Math. Gen.} {\bf 17}, L317 (1984) ! \end{tabularx} ! ! \block{mixsdb}{ ! {\tt mixsdb} & subspace dimension for Broyden mixing & integer & 5} ! This is the number of mixing vectors which define the subspace in which the ! Hessian matrix is calculated. See {\tt mixtype} and {\tt broydpm}. ! ! \block{mixsdp}{ ! {\tt mixsdp} & subspace dimension for Pulay mixing & integer & 3} ! See {\tt mixsdb} and {\tt mixtype}. ! ! \block{molecule}{ ! {\tt molecule} & {\tt .true.} if the system is an isolated molecule & ! logical & {\tt .false.}} ! If {\tt molecule} is {\tt .true.}, then the atomic positions, ${\bf a}$, ! given in the {\tt atoms} block are assumed to be in Cartesian coordinates. ! ! \block{momfix}{ ! {\tt momfix} & the desired total moment for a FSM calculation & ! real(3) & $(0.0,0.0,0.0)$} ! Note that all three components must be specified (even for collinear ! calculations). See {\tt fsmtype}, {\tt taufsm} and {\tt spinpol}. ! ! \block{mommtfix}{ ! {\tt is} & species number & integer & 0 \\ ! {\tt ia} & atom number & integer & 0 \\ ! {\tt mommtfix} & the desired muffin-tin moment for a FSM calculation & ! real(3) & $(0.0,0.0,0.0)$} ! The local muffin-tin moments are specified for a subset of atoms, with the ! list terminated with a blank line. Note that all three components must be ! specified (even for collinear calculations). See {\tt fsmtype}, {\tt taufsm} ! and {\tt spinpol}. ! ! \block{mstar}{ ! {\tt mstar} & Value of the effective mass parameter used for adaptive ! determination of {\tt swidth} & real & $10.0$} ! See {\tt autoswidth}. ! ! \block{mustar}{ ! {\tt mustar} & Coulomb pseudopotential, $\mu^*$, used in the ! McMillan-Allen-Dynes equation & real & $0.15$} ! This is used when calculating the superconducting critical temperature with ! the formula {\it Phys. Rev. B 12, 905 (1975)} ! $$ T_c=\frac{\omega_{\rm log}}{1.2 k_B}\exp\left[\frac{-1.04(1+\lambda)} ! {\lambda-\mu^*(1+0.62\lambda)}\right], $$ ! where $\omega_{\rm log}$ is the logarithmic average frequency and $\lambda$ ! is the electron-phonon coupling constant. ! ! \block{ncbse}{ ! {\tt ncbse} & number of conduction states to be used for BSE calculations & ! integer & 3} ! See also {\tt nvbse}. ! ! \block{ncgga}{ ! {\tt ncgga} & set to {\tt .true.} for non-collinear GGA calculations which ! are difficult to converge & logical & {\tt .false.}} ! Setting this variable to {\tt .true.} results in the second-order ! gradients of the spin-density in the intersitial being averaged. This can ! improve convergence for non-collinear GGA calculations, but necessarily ! makes the exchange-correlation potential non-variational. ! ! \block{ndspem}{ ! {\tt ndspem} & the number of {\bf k}-vector displacements in each direction ! around {\tt vklem} when computing the numerical derivatives for the ! effective mass tensor & integer & 1} ! See {\tt deltaem} and {\tt vklem}. ! ! \block{nempty}{ ! {\tt nempty} & the number of empty states per atom and spin & real & $4.0$ } ! Defines the number of eigenstates beyond that required for charge ! neutrality. When running metals it is not known {\it a priori} how many ! states will be below the Fermi energy for each $k$-point. Setting ! {\tt nempty} greater than zero allows the additional states to act as a ! buffer in such cases. Furthermore, magnetic calculations use the ! first-variational eigenstates as a basis for setting up the ! second-variational Hamiltonian, and thus {\tt nempty} will determine the ! size of this basis set. Convergence with respect to this quantity should be ! checked. ! ! \block{ngridk}{ ! {\tt ngridk } & the $k$-point mesh sizes & integer(3) & $(1,1,1)$} ! The ${\bf k}$-vectors are generated using ! $$ {\bf k}=(\frac{i_1+v_1}{n_1},\frac{i_2+v_2}{n_2},\frac{i_3+v_3}{n_3}), $$ ! where $i_j$ runs from 0 to $n_j-1$ and $0\le v_j<1$ for $j=1,2,3$. The ! vector ${\bf v}$ is given by the variable {\tt vkloff}. See also ! {\tt reducek}. ! ! \block{ngridq}{ ! {\tt ngridq } & the phonon $q$-point mesh sizes & integer(3) & $(1,1,1)$} ! Same as {\tt ngridk}, except that this mesh is for the phonon $q$-points. ! See also {\tt reduceq}. ! ! \block{nosource}{ ! {\tt nosource} & when set to {\tt .true.}, source fields are projected out ! of the exchange-correlation magnetic field & logical & {\tt .false.}} ! Experimental feature. ! ! \block{notes}{ ! {\tt notes(i)} & the $i$th line of the notes & string & -} ! This block allows users to add their own notes to the file {\tt INFO.OUT}. ! The block should be terminated with a blank line, and no line should exceed ! 80 characters. ! ! \block{npmae}{ ! {\tt npmae } & number or distribution of directions for MAE calculations & ! integer & $-1$} ! Automatic determination of the magnetic anisotropy energy (MAE) requires ! that the total energy is determined for a set of directions of the total ! magnetic moment. This variable controls the number or distribution of these ! directions. The convention is: ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! $-4,-3,-2,-1$ & Cardinal directions given by the primitive translation ! vectors $n_1{\bf A}_1+n_2{\bf A}_2+n_3{\bf A}_3$, where ! $1\le n_i\le|{\tt npmae}|$ \\ ! 2 & Cartesian $x$ and $z$ directions \\ ! 3 & Cartesian $x$, $y$ and $z$ directions \\ ! $4,5,\ldots$ & Even distribution of {\tt npmae} directions ! \end{tabularx} ! ! \block{ntemp}{ ! {\tt ntemp} & number of temperature steps & integer & 20} ! This is the number of temperature steps to be used in the Eliashberg gap ! and thermodynamic properties calculations. ! ! \block{nvbse}{ ! {\tt nvbse} & number of valence states to be used for BSE calculations & ! integer & 2} ! See also {\tt ncbse}. ! ! \block{nwrite}{ ! {\tt nwrite} & number of self-consistent loops after which {\tt STATE.OUT} ! is to be written & integer & 0} ! Normally, the density and potentials are written to the file {\tt STATE.OUT} ! only after completion of the self-consistent loop. By setting {\tt nwrite} ! to a positive integer the file will instead be written every {\tt nwrite} ! loops. ! ! \block{optcomp}{ ! {\tt optcomp} & the components of the first- or second-order optical tensor ! to be calculated & integer(3) & $(1,1,1)$} ! This selects which components of the optical tensor you would like to plot. ! Only the first two are used for the first-order tensor. Several components ! can be listed one after the other with a blank line terminating the list. ! ! \block{phwrite}{ ! {\tt nphwrt} & number of $q$-points for which phonon modes are to be found & ! integer & 1 \\ ! \hline ! {\tt vqlwrt(i)} & the $i$th $q$-point in lattice coordinates & real(3) & ! $(0.0,0.0,0.0)$} ! This is used in conjunction with {\tt task}=230. The code will write the ! phonon frequencies and eigenvectors to the file {\tt PHONON.OUT} for all the ! $q$-points in the list. The $q$-points can be anywhere in the Brillouin zone ! and do not have to lie on the mesh defined by {\tt ngridq}. Obviously, all ! the dynamical matrices have to be computed first using {\tt task}=200. ! ! \block{plot1d}{ ! {\tt nvp1d} & number of vertices & integer & 2 \\ ! {\tt npp1d} & number of plotting points & integer & 200 \\ ! \hline ! {\tt vvlp1d(i)} & lattice coordinates for vertex $i$ & real(3) & ! $(0.0,0.0,0.0)\rightarrow(1.0,1.0,1.0)$} ! Defines the path in either real or reciprocal space along which the 1D plot ! is to be produced. The user should provide {\tt nvp1d} vertices in lattice ! coordinates. ! ! \block{plot2d}{ ! {\tt vclp2d(1)} & first corner (origin) & real(3) & $(0.0,0.0,0.0)$ \\ ! \hline ! {\tt vclp2d(2)} & second corner & real(3) & $(1.0,0.0,0.0)$ \\ ! \hline ! {\tt vclp2d(3)} & third corner & real(3) & $(0.0,1.0,0.0)$ \\ ! \hline ! {\tt np2d} & number of plotting points in both directions & integer(2) & ! $(40,40)$} ! Defines the corners of a parallelogram and the grid size used for producing ! 2D plots. ! ! \block{plot3d}{ ! {\tt vclp3d(1)} & first corner (origin) & real(3) & $(0.0,0.0,0.0)$ \\ ! \hline ! {\tt vclp3d(2)} & second corner & real(3) & $(1.0,0.0,0.0)$ \\ ! \hline ! {\tt vclp3d(3)} & third corner & real(3) & $(0.0,1.0,0.0)$ \\ ! \hline ! {\tt vclp3d(4)} & fourth corner & real(3) & $(0.0,0.0,1.0)$ \\ ! \hline ! {\tt np3d} & number of plotting points each direction & integer(3) & ! $(20,20,20)$} ! Defines the corners of a box and the grid size used for producing 3D plots. ! ! \block{primcell}{ ! {\tt primcell} & {\tt .true.} if the primitive unit cell should be found ! & logical & {\tt .false.}} ! Allows the primitive unit cell to be determined automatically from the ! conventional cell. This is done by searching for lattice vectors among all ! those which connect atomic sites, and using the three shortest which produce ! a unit cell with non-zero volume. ! ! \block{radkpt}{ ! {\tt radkpt } & radius of sphere used to determine $k$-point density & ! real & $40.0$} ! Used for the automatic determination of the $k$-point mesh. If {\tt autokpt} ! is set to {\tt .true.} then the mesh sizes will be determined by ! $n_i=R_k|{\bf B}_i|+1$, where ${\bf B}_i$ are the primitive reciprocal ! lattice vectors. ! ! \block{readadu}{ ! {\tt readadu} & set to {\tt .true.} if the interpolation constant for ! DFT+$U$ should be read from file rather than calculated & logical & ! {\tt .false.}} ! When {\tt dftu}=3, the DFT+$U$ energy and potential are interpolated ! between FLL and AFM. The interpolation constant, $\alpha$, is normally ! calculated from the density matrix, but can also be read in from the file ! {\tt ALPHADU.OUT}. This allows the user to fix $\alpha$, but is also ! necessary when calculating forces, since the contribution of the potential ! of the variation of $\alpha$ with respect to the density matrix is not ! computed. See {\tt dft+u}. ! ! \block{reducebf}{ ! {\tt reducebf} & reduction factor for the external magnetic fields & real & ! $1.0$} ! After each self-consistent loop, the external magnetic fields are multiplied ! with {\tt reducebf}. This allows for a large external magnetic field at the ! start of the self-consistent loop to break spin symmetry, while at the end ! of the loop the field will be effectively zero, i.e. infinitesimal. See ! {\tt bfieldc} and {\tt atoms}. ! ! \block{reduceh}{ ! {\tt reduceh} & set to {\tt .true.} if the reciprocal ${\bf H}$-vectors ! should be reduced by the symmorphic crystal symmetries & logical & .true.} ! See {\tt hmaxvr} and {\tt vmat}. ! ! \block{reducek}{ ! {\tt reducek} & type of reduction of the $k$-point set & integer & 1} ! Types of reduction are defined by the symmetry group used: ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! 0 & no reduction \\ ! 1 & reduce with full crystal symmetry group (including non-symmorphic ! symmetries) \\ ! 2 & reduce with symmorphic symmetries only ! \end{tabularx} ! \vskip 6pt ! See also {\tt ngridk} and {\tt vkloff}. ! ! \block{reduceq}{ ! {\tt reduceq} & type of reduction of the $q$-point set & integer & 1} ! See {\tt reducek} and {\tt ngridq}. ! ! \block{rgkmax}{ ! {\tt rgkmax} & $R^{\rm MT}_{\rm min}\times\max\{|{\bf G}+{\bf k}|\}$ & ! real & $7.0$} ! This sets the maximum length for the ${\bf G}+{\bf k}$ vectors, defined as ! {\tt rgkmax} divided by the average muffin-tin radius. See {\tt isgkmax}. ! ! \block{rotavec}{ ! {\tt axang} & axis-angle representation of lattice vector rotation & ! real(4) & $(0.0,0.0,0.0,0.0)$} ! This determines the rotation matrix which is applied to the lattice vectors ! prior to any calculation. The first three components specify the axis and ! the last component is the angle in degrees. The `right-hand rule' convention ! is followed. ! ! \block{scale}{ ! {\tt scale } & lattice vector scaling factor & real & $1.0$} ! Scaling factor for all three lattice vectors. Applied in conjunction with ! {\tt scale1}, {\tt scale2} and {\tt scale3}. ! ! \block{scale1/2/3}{ ! {\tt scale1/2/3 } & separate scaling factors for each lattice vector & ! real & $1.0$} ! ! \block{scissor}{ ! {\tt scissor} & the scissor correction & real & $0.0$} ! This is the scissor shift applied to states above the Fermi energy ! {\it Phys. Rev. B} {\bf 43}, 4187 (1991). Affects optics calculations only. ! ! \block{scrpath}{ ! {\tt scrpath} & scratch space path & string & null} ! This is the scratch space path where the eigenvector files {\tt EVALFV.OUT} ! and {\tt EVALSV.OUT} will be written. If the run directory is accessed via a ! network then {\tt scrpath} can be set to a directory on the local disk, for ! example {\tt /tmp/}. Note that the forward slash {\tt /} at the end of the ! path must be included. ! ! \block{socscf}{ ! {\tt socscf} & scaling factor for the spin-orbit coupling term in the ! Hamiltonian & real & $1.0$} ! This can be used to enhance the effect of spin-orbit coupling in order to ! accurately determine the magnetic anisotropy energy (MAE). ! ! \block{spincore}{ ! {\tt spincore} & set to {\tt .true.} if the core should be spin-polarised ! & logical & {\tt .false.}} ! ! \block{spinorb}{ ! {\tt spinorb} & set to {\tt .true.} if a spin-orbit coupling is required ! & logical & {\tt .false.}} ! If {\tt spinorb} is {\tt .true.}, then a $\boldsymbol\sigma\cdot{\bf L}$ ! term is added to the second-variational Hamiltonian. See {\tt spinpol}. ! ! \block{spinpol}{ ! {\tt spinpol} & set to {\tt .true.} if a spin-polarised calculation is ! required & logical & {\tt .false.}} ! If {\tt spinpol} is {\tt .true.}, then the spin-polarised Hamiltonian is ! solved as a second-variational step using two-component spinors in the ! Kohn-Sham magnetic field. The first variational scalar wavefunctions are ! used as a basis for setting this Hamiltonian. ! ! \block{spinsprl}{ ! {\tt spinsprl} & set to {\tt .true.} if a spin-spiral calculation is ! required & logical & {\tt .false.}} ! Experimental feature for the calculation of spin-spiral states. See ! {\tt vqlss} for details. ! ! \block{sppath}{ ! {\tt sppath} & path where the species files can be found & string & null} ! Note that the forward slash {\tt /} at the end of the path must be included. ! ! \block{ssdph}{ ! {\tt ssdph} & set to {\tt .true.} if a complex de-phasing factor is to be ! used in spin-spiral calculations & logical & {\tt .true.}} ! If this is {\tt .true.} then spin-spiral wavefunctions in each muffin-tin at ! position ${\bf r}_{\alpha}$ are de-phased by the matrix ! $$ \begin{pmatrix} e^{-i{\bf q}\cdot{\bf r}_{\alpha}/2} & 0 \\ ! 0 & e^{i{\bf q}\cdot{\bf r}_{\alpha}/2} \end{pmatrix}. $$ ! In simple situations, this has the advantage of producing magnon dynamical ! matrices which are already in diagonal form. This option should be used with ! care, and a full understanding of the spin-spiral configuration is required. ! See {\tt spinsprl}. ! ! \block{stype}{ ! {\tt stype} & integer defining the type of smearing to be used & integer & ! $3$} ! A smooth approximation to the Dirac delta function is needed to compute the ! occupancies of the Kohn-Sham states. The variable {\tt swidth} determines ! the width of the approximate delta function. Currently implemented are ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! 0 & Gaussian \\ ! 1 & Methfessel-Paxton order 1, Phys. Rev. B {\bf 40}, 3616 (1989) \\ ! 2 & Methfessel-Paxton order 2 \\ ! 3 & Fermi-Dirac ! \end{tabularx} ! \vskip 6pt ! See also {\tt autoswidth} and {\tt swidth}. ! ! \block{swidth}{ ! {\tt swidth} & width of the smooth approximation to the Dirac delta ! function & real & $0.001$} ! See {\tt stype} for details. ! ! \newpage ! \block{tasks}{ ! {\tt task(i) } & the $i$th task & integer & $-1$} ! A list of tasks for the code to perform sequentially. The list should be ! terminated with a blank line. Each task has an associated integer as ! follows: ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! -1 & Write out the version number of the code. \\ ! 0 & Ground state run starting from the atomic densities. \\ ! 1 & Resumption of ground-state run using density in {\tt STATE.OUT}. \\ ! 2 & Geometry optimisation run starting from the atomic densities, with ! atomic positions written to {\tt GEOMETRY.OUT}. \\ ! 3 & Resumption of geometry optimisation run using density in {\tt STATE.OUT} ! but with positions from {\tt elk.in}. \\ ! 5 & Ground state Hartree-Fock run. \\ ! 10 & Total, partial and interstitial density of states (DOS). \\ ! 14 & Plots the smooth Dirac delta and Heaviside step functions used by the ! code to calculate occupancies. \\ ! 15 & Output ${\bf L}$, ${\bf S}$ and ${\bf J}$ total expectation values. \\ ! 16 & Output ${\bf L}$, ${\bf S}$ and ${\bf J}$ expectation values for each ! $k$-point and state in {\tt kstlist}. \\ ! 20 & Band structure plot. \\ ! 21 & Band structure plot which includes angular momentum characters for ! every atom. \\ ! 25 & Compute the effective mass tensor at the $k$-point given by ! {\tt vklem}. \\ ! 31, 32, 33 & 1/2/3D charge density plot. \\ ! 41, 42, 43 & 1/2/3D exchange-correlation and Coulomb potential plots. \\ ! 51, 52, 53 & 1/2/3D electron localisation function (ELF) plot. \\ ! 61, 62, 63 & 1/2/3D wavefunction plot: ! $\left|\Psi_{i{\bf k}}({\bf r})\right|^2$. \\ ! 65 & Write the core wavefunctions to file for plotting. \\ ! 72, 73 & 2/3D plot of magnetisation vector field, ${\bf m}({\bf r})$. \\ ! 82, 83 & 2/3D plot of exchange-correlation magnetic vector field, ! ${\bf B}_{\rm xc}({\bf r})$. \\ ! 91, 92, 93 & 1/2/3D plot of $\nabla\cdot{\bf B}_{\rm xc}({\bf r})$. \\ ! 100 & 3D Fermi surface plot using the scalar product ! $p({\bf k})=\Pi_i(\epsilon_{i{\bf k}}-\epsilon_{\rm F})$. \\ ! 101 & 3D Fermi surface plot using separate bands (minus the Fermi ! energy). \\ ! 102 & 3D Fermi surface which can be plotted with XCrysDen. \\ ! 105 & 3D nesting function plot. \\ ! 110 & Calculation of M\"{o}ssbauer contact charge densities and magnetic ! fields at the nuclear sites. \\ ! 115 & Calculation of the electric field gradient (EFG) at the nuclear ! sites. \\ ! 120 & Output of the momentum matrix elements ! $\langle\Psi_{i{\bf k}}|-i\nabla|\Psi_{j{\bf k}}\rangle$. \\ ! 121 & Linear optical dielectric response tensor calculated within the random ! phase approximation (RPA) and in the $q\rightarrow 0$ limit, with no ! microscopic contributions. \\ ! 122 & Magneto optical Kerr effect (MOKE) angle. \\ ! 125 & Non-linear optical second harmonic generation. \\ ! 130 & Output matrix elements of the type ! $\langle\Psi_{i{\bf k+q}}|\exp[i({\bf G+q})\cdot{\bf r}]| ! \Psi_{j{\bf k}}\rangle$. \\ ! 135 & Output all wavefunctions expanded in the plane wave basis up to a ! cut-off defined by {\tt rgkmax}. ! \end{tabularx} ! ! \begin{tabularx}{\textwidth}[h]{lX} ! 140 & Energy loss near edge structure (ELNES). \\ ! 142, 143 & 2/3D plot of the electric field ! ${\bf E}({\bf r})\equiv\nabla V_{\rm C}({\bf r})$. \\ ! 152, 153 & 2/3D plot of ! ${\bf m}({\bf r})\times{\bf B}_{\rm xc}({\bf r})$. \\ ! 162 & Scanning-tunneling microscopy (STM) image. \\ ! 180 & Generate the RPA inverse dielectric function with local contributions ! and write it to file. \\ ! 185 & Write the Bethe-Salpeter equation (BSE) Hamiltonian to file. \\ ! 186 & Diagonalise the BSE Hamiltonian and write the eigenvectors and ! eigenvalues to file. \\ ! 187 & Output the BSE dielectric response function. \\ ! 190 & Write the atomic geometry to file for plotting with XCrySDen and ! V\_Sim. \\ ! 195 & Calculation of X-ray density structure factors. \\ ! 196 & Calculation of magnetic structure factors. \\ ! 200 & Calculation of phonon dynamical matrices on a $q$-point set defined by ! {\tt ngridq} using the supercell method. \\ ! 201 & Phonon dry run: just produce a set of empty DYN files. \\ ! 205 & Calculation of phonon dynamical matrices using density functional ! perturbation theory (DFPT). \\ ! 210 & Phonon density of states. \\ ! 220 & Phonon dispersion plot. \\ ! 230 & Phonon frequencies and eigenvectors for an arbitrary $q$-point. \\ ! 240 & Generate the ${\bf q}$-dependent phonon linewidths and electron-phonon ! coupling constants and write them to file. \\ ! 245 & Phonon linewidths plot. \\ ! 250 & Eliashberg function $\alpha^2F(\omega)$, electron-phonon coupling ! constant $\lambda$, and the McMillan-Allen-Dynes critical temperature ! $T_c$. \\ ! 300 & Reduced density matrix functional theory (RDMFT) calculation. \\ ! 320 & Time-dependent density functional theory (TDDFT) calculation of the ! dielectric response function including microscopic contributions. \\ ! 330 & TDDFT calculation of the spin-polarised response function for ! arbitrary ${\bf q}$-vectors. \\ ! 400 & Calculation of tensor moments and corresponding DFT+$U$ Hartree-Fock ! energy contributions. ! \end{tabularx} ! ! \block{tau0atp}{ ! {\tt tau0atp} & the step size to be used for atomic position optimisation & ! real & $0.25$} ! The position of atom $\alpha$ is updated on step $m$ of a geometry ! optimisation run using ! $$ {\bf r}_{\alpha}^{m+1}={\bf r}_{\alpha}^m+\tau_{\alpha}^m ! \left({\bf F}_{\alpha}^m+{\bf F}_{\alpha}^{m-1}\right), $$ ! where $\tau_{\alpha}$ is set to {\tt tau0atp} for $m=0$, and incremented by ! the same amount if the atom is moving in the same direction between steps. ! If the direction changes then $\tau_{\alpha}$ is reset to {\tt tau0atp}. ! ! \block{tau0latv}{ ! {\tt tau0latv} & the step size to be used for lattice vector optimisation & ! real & $0.5$} ! This parameter is used for lattice vector optimisation in a procedure ! identical to that for atomic position optimisation. See {\tt tau0atp} and ! {\tt latvopt}. ! ! \block{tauoep}{ ! {\tt tauoep} & step length initial value and scaling factors for the OEP ! iterative solver & real(3) & $(1.0, 0.2, 1.5)$} ! The optimised effective potential is determined using an interative method. ! [Phys. Rev. Lett. 98, 196405 (2007)]. At the first iteration the step length ! is set to {\tt tauoep(1)}. During subsequent iterations, the step length is ! scaled by {\tt tauoep(2)} or {\tt tauoep(3)}, when the residual is ! increasing or decreasing, respectively. See also {\tt maxitoep}. ! ! \block{taufsm}{ ! {\tt taufsm} & the step size to be used when finding the effective magnetic ! field in fixed spin moment calculations & real & $0.01$} ! An effective magnetic field, ${\bf B}_{\rm FSM}$, is required for fixing the ! spin moment to a given value, ${\bf M}_{\rm FSM}$. This is found by adding a ! vector to the field which is proportional to the difference between the ! moment calculated in the $i$th self-consistent loop and the required moment: ! $$ {\bf B}_{\rm FSM}^{i+1}={\bf B}_{\rm FSM}^i+\lambda\left({\bf M}^i ! -{\bf M}_{\rm FSM}\right), $$ ! where $\lambda$ is proportional to {\tt taufsm}. See also {\tt fsmtype}, ! {\tt momfix} and {\tt spinpol}. ! ! \block{tfibs}{ ! {\tt tfibs} & set to {\tt .true.} if the IBS correction to the force should ! be calculated & logical & {\tt .true.}} ! Because calculation of the incomplete basis set (IBS) correction to the ! force is fairly time-consuming, it can be switched off by setting ! {\tt tfibs} to {\tt .false.} This correction can then be included only when ! necessary, i.e. when the atoms are close to equilibrium in a geometry ! optimisation run. ! ! \block{tforce}{ ! {\tt tforce} & set to {\tt .true.} if the force should be calculated at the ! end of the self-consistent cycle & logical & {\tt .false.}} ! This variable is automatically set to {\tt .true.} when performing geometry ! optimisation. ! ! \block{tmwrite}{ ! {\tt tmwrite} & set to {\tt .true.} if the tensor moments and the ! corresponding decomposition of DFT+$U$ energy should be calculated ! at every loop of the self-consistent cycle & logical & {\tt .false.}} ! This variable is useful to check the convergence of the tensor moments in ! DFT+$U$ caculations. Alternatively, with {\tt task} equal to 400, one can ! calculate the tensor moments and corresponding DFT+$U$ energy contributions ! from a given density matrix and set of Slater parameters at the end of the ! self-consistent cycle. ! ! \block{trimvg}{ ! {\tt trimvg} & set to {\tt .true.} if the Fourier components of the ! Kohn-Sham potential for $|G|>{\tt gmaxvr}/2$ are to be set to zero & ! logical & {\tt .false.}} ! This fixes stability problems which can occur for large {\tt rgkmax}. Should ! be used only in conjunction with large {\tt gmaxvr}. ! ! \block{tefvit}{ ! {\tt tefvit} & set to {\tt .true.} if the first-variational eigenvalue ! equation should be solved iteratively & logical & {\tt .false.}} ! ! \block{tefvr}{ ! {\tt tefvr} & set to {\tt .true.} if a real symmetric eigenvalue solver ! should be used for crystals which have inversion symmetry & logical & ! {\tt .true.}} ! For crystals with inversion symmetry, the first-variational Hamiltonian and ! overlap matrices can be made real by using appropriate transformations. In ! this case, a real symmetric (instead of complex Hermitian) eigenvalue solver ! can be used. This makes the calculation about three times faster. ! ! \block{tmomfix}{ ! {\tt ntmfix} & number of tensor moments (TM) to be fixed & integer & 0 \\ ! \hline ! {\tt is(i)} & species number for entry $i$ & integer & - \\ ! {\tt ia(i)} & atom number & integer & - \\ ! {\tt (l, n)(i)} & $l$ and $n$ indices of TM & integer & - \\ ! \hline ! {\tt (k, p, x, y)(i)} or & & & \\ ! {\tt (k, p, r, t)(i)} & indices for the 2-index or 3-index TM, ! respectively & integer & - \\ ! \hline ! {\tt z(i)} & complex TM value & complex & - \\ ! \hline ! {\tt p(i)} & parity of spatial rotation & integer & - \\ ! {\tt aspl(i)} & Euler angles of spatial rotation & real(3) & - \\ ! {\tt aspn(i)} & Euler angles of spin rotation & real(3) & - } ! This block sets up the fixed tensor moment (FTM). There should be as many ! TM entries as {\tt ntmfix}. See {\it Phys. Rev. Lett.} {\bf 103}, 107202 ! (2009) for the tensor moment indexing convention. This is a highly ! complicated feature of the code, and should only be attempted with a full ! understanding of tensor moments. ! ! \block{tshift}{ ! {\tt tshift} & set to {\tt .true.} if the crystal can be shifted so that the ! atom closest to the origin is exactly at the origin & ! logical & {\tt .true.}} ! ! \block{vhmat}{ ! {\tt vhmat(1)} & matrix row 1 & real(3) & $(1.0,0.0,0.0)$ \\ ! \hline ! {\tt vhmat(2)} & matrix row 2 & real(3) & $(0.0,1.0,0.0)$ \\ ! \hline ! {\tt vhmat(3)} & matrix row 3 & real(3) & $(0.0,0.0,1.0)$} ! This is the transformation matrix $M$ applied to every vector $\bf H$ in the ! structure factor output files {\tt SFACRHO.OUT} and {\tt SFACMAG.OUT}. It is ! stored in the usual row-column setting and applied directly as ! ${\bf H}'=M{\bf H}$ to every vector but {\em only} when writing the output ! files. See also {\tt hmaxvr} and {\tt reduceh}. ! ! \block{vklem}{ ! {\tt vklem} & the $k$-point in lattice coordinates at which to compute the ! effective mass tensors & real(3) & $(0.0,0.0,0.0)$} ! See {\tt deltaem} and {\tt ndspem}. ! ! \block{vkloff}{ ! {\tt vkloff } & the $k$-point offset vector in lattice coordinates & ! real(3) & $(0.0,0.0,0.0)$} ! See {\tt ngridk}. ! ! \block{vqlss}{ ! {\tt vqlss} & the ${\bf q}$-vector of the spin-spiral state in lattice ! coordinates & real(3) & $(0.0,0.0,0.0)$} ! Spin-spirals arise from spinor states assumed to be of the form ! $$ \Psi^{\bf q}_{\bf k}({\bf r})= ! \left( \begin{array}{c} ! U^{{\bf q}\uparrow}_{\bf k}({\bf r})e^{i({\bf k+q/2})\cdot{\bf r}} \\ ! U^{{\bf q}\downarrow}_{\bf k}({\bf r})e^{i({\bf k-q/2})\cdot{\bf r}} \\ ! \end{array} \right). $$ ! These are determined using a second-variational approach, and give rise to a ! magnetisation density of the form ! $$ {\bf m}^{\bf q}({\bf r})=(m_x({\bf r})\cos({\bf q \cdot r}), ! m_y({\bf r})\sin({\bf q \cdot r}),m_z({\bf r})), $$ ! where $m_x$, $m_y$ and $m_z$ are lattice periodic. See also {\tt spinsprl}. ! ! \block{wplot}{ ! {\tt nwplot} & number of frequency/energy points in the DOS or optics plot & ! integer & $500$ \\ ! {\tt ngrkf} & fine $k$-point grid size used for integrating functions in the ! Brillouin zone & integer & $100$ \\ ! {\tt nswplot} & level of smoothing applied to DOS/optics output & integer & ! $1$ \\ ! \hline ! {\tt wplot} & frequency/energy window for the DOS or optics plot & real(2) & ! $(-0.5,0.5)$} ! DOS and optics plots require integrals of the kind ! $$ g(\omega_i)=\frac{\Omega}{(2\pi)^3}\int_{\rm BZ} f({\bf k}) ! \delta(\omega_i-e({\bf k}))d{\bf k}. $$ ! These are calculated by first interpolating the functions $e({\bf k})$ and ! $f({\bf k})$ with the trilinear method on a much finer mesh whose size is ! determined by {\tt ngrkf}. Then the $\omega$-dependent histogram of the ! integrand is accumulated over the fine mesh. If the output function is noisy ! then either {\tt ngrkf} should be increased or {\tt nwplot} decreased. ! Alternatively, the output function can be artificially smoothed up to a ! level given by {\tt nswplot}. This is the number of successive 3-point ! averages to be applied to the function $g$. ! ! \block{wsfac}{ ! {\tt wsfac} & energy window to be used when calculating density or magnetic ! structure factors & real(2) & $(-10^6,10^6)$} ! Only those states with eigenvalues within this window will contribute to the ! density or magnetisation. See also {\tt hmaxvr} and {\tt vhmat}. ! ! \block{xctype}{ ! {\tt xctype} & integers defining the type of exchange-correlation functional ! to be used & integer(3) & $(3,0,0)$} ! Normally only the first value is used to define the functional type. The ! other value may be used for external libraries. Currently implemented are: ! \vskip 6pt ! \begin{tabularx}{\textwidth}[h]{lX} ! $-n$ & Exact-exchange optimised effective potential (EXX-OEP) method with ! correlation energy and potential given by functional number $n$ \\ ! 1 & No exchange-correlation funtional ($E_{\rm xc}\equiv 0$) \\ ! 2 & LDA, Perdew-Zunger/Ceperley-Alder, {\it Phys. Rev. B} {\bf 23}, 5048 ! (1981) \\ ! 3 & LSDA, Perdew-Wang/Ceperley-Alder, {\it Phys. Rev. B} {\bf 45}, 13244 ! (1992) \\ ! 4 & LDA, X-alpha approximation, J. C. Slater, {\it Phys. Rev.} {\bf 81}, 385 ! (1951) \\ ! 5 & LSDA, von Barth-Hedin, {\it J. Phys. C} {\bf 5}, 1629 (1972) \\ ! 20 & GGA, Perdew-Burke-Ernzerhof, {\it Phys. Rev. Lett.} {\bf 77}, 3865 ! (1996) \\ ! 21 & GGA, Revised PBE, Zhang-Yang, {\it Phys. Rev. Lett.} {\bf 80}, 890 ! (1998) \\ ! 22 & GGA, PBEsol, Phys. Rev. Lett. 100, 136406 (2008) \\ ! 26 & GGA, Wu-Cohen exchange (WC06) with PBE correlation, {\it Phys. Rev. B} ! {\bf 73}, 235116 (2006) \\ ! 30 & GGA, Armiento-Mattsson (AM05) spin-unpolarised functional, ! {\it Phys. Rev. B} {\bf 72}, 085108 (2005) \\ ! 100 & Libxc functionals; the second and third values of {\tt xctype} define ! the exchange and correlation functionals in the Libxc library, ! respectively \\ ! \end{tabularx} ! ! \section{Contributing to Elk} ! Please bear in mind when writing code for the Elk project that it should be ! an exercise in physics and not software engineering. All code should ! therefore be kept as simple and concise as possible, and above all it should ! be easy for anyone to locate and follow the Fortran representation of the ! original mathematics. We would also appreciate the following conventions ! being adhered to: ! \begin{itemize} ! \item Strict Fortran 90/95 should be used. Features which are marked as ! obsolescent in F90/95 should be avoided. These include assigned format ! specifiers, labeled do-loops, computed goto statements and statement ! functions. ! \item Modules should be used in place of common blocks for declaring ! global variables. Use the existing modules to declare new global variables. ! \item Any code should be written in lower-case free form style, starting ! from column one. Try and keep the length of each line to fewer than 80 ! characters using the \& character for line continuation. ! \item Every function or subroutine, no matter how small, should be in its ! own file named {\tt routine.f90}, where {\tt routine} is the function or ! subroutine name. It is recommended that the routines are named so as to ! make their purpose apparent from the name alone. ! \item Use of {\tt implicit none} is mandatory. Remember also to define the ! {\tt intent} of any passed arguments. ! \item Local allocatable arrays must be deallocated on exit of the routine to ! prevent memory leakage. Use of automatic arrays should be limited to arrays ! of small size. ! \item Every function or subroutine must be documented with the Protex source ! code documentation system. This should include a short \LaTeX\ description ! of the algorithms and methods involved. Equations which need to be ! referenced should be labeled with {\tt routine\_1}, {\tt routine\_2}, etc. ! The authorship of each new piece of code or modification should be ! indicated in the {\tt REVISION HISTORY} part of the header. See the Protex ! documentation for details. ! \item Ensure as much as possible that a routine will terminate the program ! when given improper input instead of continuing with erroneous results. ! Specifically, functions should have a well-defined domain for which they ! return accurate results. Input outside that domain should result in an ! error message and termination. ! \item Report errors prior to termination with a short description, for ! example: ! \begin{verbatim} ! write(*,*) ! write(*,'("Error(readinput): natoms <= 0 : ",I8)') natoms(is) ! write(*,'(" for species ",I4)') is ! write(*,*) ! stop ! \end{verbatim} ! \item Wherever possible, real numbers outputted as ASCII data should be ! formatted with the {\tt G18.10} specifier. ! \item Avoid redundant or repeated code: check to see if the routine you need ! already exists, before writing a new one. ! \item All reading in of ASCII data should be done in the subroutine ! {\tt readinput}. For binary data, separate routines for reading and writing ! should be used (for example {\tt writestate} and {\tt readstate}). ! \item Input filenames should be in lowercase and have the extension ! {\tt .in} . All output filenames should be in uppercase with the extension ! {\tt .OUT} . ! \item All internal units should be atomic. Input and output units should be ! atomic by default and clearly stated otherwise. Rydbergs should not be used ! under any circumstances. ! \end{itemize} ! \subsection{Licensing} ! Routines which constitute the main part of the code are released under the ! GNU General Public License (GPL). Library routines are released under the ! less restrictive GNU Lesser General Public License (LGPL). Both licenses ! are contained in the file {\tt COPYING}. Any contribution to the code must ! be licensed at the authors' discretion under either the GPL or LGPL. ! Author(s) of the code retain the copyrights. Copyright and (L)GPL ! information must be included at the beginning of every file, and no code ! will be accepted without this. ! !EOI elk-2.3.22/src/PaxHeaders.22528/zbsht.f900000644002504400250440000000005012337331323015650 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zbsht.f900000644002504400250440000000142612337331323016417 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zbsht(nr,nri,zfmt1,zfmt2) use modmain implicit none ! arguments integer, intent(in) :: nr,nri complex(8), intent(in) :: zfmt1(lmmaxvr,nr) complex(8), intent(out) :: zfmt2(lmmaxvr,nr) ! local variables integer nr0,ir0 ! transform the inner part of the muffin-tin call zgemm('N','N',lmmaxinr,nri,lmmaxinr,zone,zbshtinr,lmmaxinr,zfmt1,lmmaxvr, & zzero,zfmt2,lmmaxvr) ! transform the outer part of the muffin-tin nr0=nr-nri if (nr0.eq.0) return ir0=nri+1 call zgemm('N','N',lmmaxvr,nr0,lmmaxvr,zone,zbshtvr,lmmaxvr,zfmt1(:,ir0), & lmmaxvr,zzero,zfmt2(:,ir0),lmmaxvr) return end subroutine elk-2.3.22/src/PaxHeaders.22528/moke.f900000644002504400250440000000005012337331324015452 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/moke.f900000644002504400250440000000423312337331324016220 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 S. Sharma, J. K. Dewhurst and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine moke use modmain implicit none ! local variables integer iw,iostat complex(8) z1,z2,z3 ! allocatable arrays real(8), allocatable :: w(:),sig1(:,:),sig2(:,:) complex(8), allocatable :: kerr(:) ! calculate dielectric function for the 11 and 12 components noptcomp=2 optcomp(1,1)=1 optcomp(2,1)=1 optcomp(1,2)=1 optcomp(2,2)=2 call dielectric ! allocate local arrays allocate(w(nwplot)) allocate(sig1(nwplot,2),sig2(nwplot,2)) allocate(kerr(nwplot)) ! read diagonal contribution to optical conductivity open(50,file='SIGMA_11.OUT',action='READ',status='OLD', & form='FORMATTED',iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(moke): error opening SIGMA_11.OUT")') write(*,*) stop end if do iw=1,nwplot read(50,'(2G18.10)') w(iw),sig1(iw,1) end do read(50,*) do iw=1,nwplot read(50,'(2G18.10)') w(iw),sig2(iw,1) end do close(50) ! read off-diagonal contribution to optical conductivity open(50,file='SIGMA_12.OUT',action='READ',status='OLD', & form='FORMATTED',iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(moke): error opening SIGMA_12.OUT")') write(*,*) stop end if do iw=1,nwplot read(50,'(2G18.10)') w(iw),sig1(iw,2) end do read(50,*) do iw=1,nwplot read(50,'(2G18.10)') w(iw),sig2(iw,2) end do close(50) ! calculate the complex Kerr angle do iw=1,nwplot if (w(iw).gt.0.d0) then z1=cmplx(sig1(iw,1),sig2(iw,1),8) z2=cmplx(sig1(iw,2),sig2(iw,2),8) z3=z1*sqrt(1.d0+fourpi*zi*z1/w(iw)) if (abs(z3).gt.1.d-8) then kerr(iw)=-z2/z3 else kerr(iw)=0.d0 end if else kerr(iw)=0.d0 end if end do open(50,file='KERR.OUT',action='WRITE',form='FORMATTED') do iw=1,nwplot write(50,'(2G18.10)') w(iw),dble(kerr(iw))*180.d0/pi end do write(50,'(" ")') do iw=1,nwplot write(50,'(2G18.10)') w(iw),aimag(kerr(iw))*180.d0/pi end do close(50) write(*,*) write(*,'("Info(moke):")') write(*,'(" complex Kerr angle in degrees written to KERR.OUT")') deallocate(w,sig1,sig2,kerr) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dyntask.f900000644002504400250440000000005012337331324016174 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dyntask.f900000644002504400250440000000173612337331324016747 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dyntask(fnum,fext) use modmain use modphonon implicit none ! arguments integer, intent(in) :: fnum character(256), intent(out) :: fext ! local variables logical exist do ipph=1,3 do isph=1,nspecies do iaph=1,natoms(isph) iasph=idxas(iaph,isph) do iqph=1,nqpt ! construct the phonon file extension call phfext(iqph,isph,iaph,ipph,fext) ! determine if the DYN file with this extension exists inquire(file='DYN'//trim(fext),exist=exist) if (.not.exist) then open(fnum,file='DYN'//trim(fext),action='WRITE',form='FORMATTED') return end if end do end do end do end do fext='.OUT' iqph=0; isph=0; iaph=0; iasph=0; ipph=0 write(*,*) write(*,'("Info(dyntask): nothing more to do")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/gensdmat.f900000644002504400250440000000005012337331323016320 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gensdmat.f900000644002504400250440000000212512337331323017064 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: gensdmat ! !INTERFACE: subroutine gensdmat(evecsv,sdmat) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! evecsv : second-variational eigenvectors (in,complex(nstsv,nstsv)) ! sdmat : spin density matrices (out,complex(nspinor,nspinor,nstsv)) ! !DESCRIPTION: ! Computes the spin density matrices for a set of second-variational states. ! ! !REVISION HISTORY: ! Created September 2008 (JKD) !EOP !BOC implicit none ! arguments complex(8), intent(in) :: evecsv(nstsv,nstsv) complex(8), intent(out) :: sdmat(nspinor,nspinor,nstsv) ! local variables integer ispn,jspn,ist,j complex(8) z1,z2 sdmat(:,:,:)=0.d0 do j=1,nstsv do ispn=1,nspinor do jspn=1,nspinor do ist=1,nstfv z1=evecsv(ist+nstfv*(ispn-1),j) z2=evecsv(ist+nstfv*(jspn-1),j) sdmat(ispn,jspn,j)=sdmat(ispn,jspn,j)+z1*conjg(z2) end do end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rdirac.f900000644002504400250440000000005012337331323015762 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rdirac.f900000644002504400250440000000702012337331323016525 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rdirac ! !INTERFACE: subroutine rdirac(sol,n,l,k,nr,r,vr,eval,g0,f0) ! !INPUT/OUTPUT PARAMETERS: ! sol : speed of light in atomic units (in,real) ! n : principal quantum number (in,integer) ! l : quantum number l (in,integer) ! k : quantum number k (l or l+1) (in,integer) ! nr : number of radial mesh points (in,integer) ! r : radial mesh (in,real(nr)) ! vr : potential on radial mesh (in,real(nr)) ! eval : eigenvalue without rest-mass energy (inout,real) ! g0 : major component of the radial wavefunction (out,real(nr)) ! f0 : minor component of the radial wavefunction (out,real(nr)) ! !DESCRIPTION: ! Finds the solution to the radial Dirac equation for a given potential $v(r)$ ! and quantum numbers $n$, $k$ and $l$. The method involves integrating the ! equation using the predictor-corrector method and adjusting $E$ until the ! number of nodes in the wavefunction equals $n-l-1$. The calling routine must ! provide an initial estimate for the eigenvalue. Note that the arrays ! {\tt g0} and {\tt f0} represent the radial functions multiplied by $r$. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: sol integer, intent(in) :: n,l,k integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(in) :: vr(nr) real(8), intent(inout) :: eval real(8), intent(out) :: g0(nr) real(8), intent(out) :: f0(nr) ! local variables integer, parameter :: maxit=2000 integer kpa,it,nn,ir,irm,nnd,nndp ! energy convergence tolerance real(8), parameter :: eps=1.d-12 real(8) t1,de ! automatic arrays real(8) g1(nr),f1(nr),fr(nr),gr(nr) if (k.le.0) then write(*,*) write(*,'("Error(rdirac): k <= 0 : ",I8)') k write(*,*) stop end if if (k.gt.n) then write(*,*) write(*,'("Error(rdirac): incompatible n and k : ",2I8)') n,k write(*,*) stop end if if ((k.eq.n).and.(l.ne.k-1)) then write(*,*) write(*,'("Error(rdirac): incompatible n, k and l : ",3I8)') n,k,l write(*,*) stop end if if (k.eq.l) then kpa=k else if (k.eq.l+1) then kpa=-k else write(*,*) write(*,'("Error(rdirac): incompatible l and k : ",2I8)') l,k write(*,*) stop end if de=1.d0 nndp=0 do it=1,maxit ! integrate the Dirac equation call rdiracdme(sol,0,kpa,eval,nr,r,vr,nn,g0,g1,f0,f1) ! check the number of nodes nnd=nn-(n-l-1) if (nnd.gt.0) then eval=eval-de else eval=eval+de end if if (it.gt.1) then if ((nnd.ne.0).or.(nndp.ne.0)) then if (nnd*nndp.le.0) then de=de*0.5d0 else de=de*1.1d0 end if end if end if nndp=nnd if (de.lt.eps*(abs(eval)+1.d0)) goto 20 end do write(*,*) write(*,'("Warning(rdirac): maximum iterations exceeded")') 20 continue ! find effective infinity and set wavefunction to zero after that point ! major component irm=nr do ir=2,nr if ((g0(ir-1)*g0(ir).lt.0.d0).or.(g1(ir-1)*g1(ir).lt.0.d0)) irm=ir end do g0(irm:nr)=0.d0 ! minor component irm=nr do ir=2,nr if ((f0(ir-1)*f0(ir).lt.0.d0).or.(f1(ir-1)*f1(ir).lt.0.d0)) irm=ir end do f0(irm:nr)=0.d0 ! normalise do ir=1,nr fr(ir)=g0(ir)**2+f0(ir)**2 end do call fderiv(-1,nr,r,fr,gr) t1=sqrt(abs(gr(nr))) if (t1.gt.0.d0) then t1=1.d0/t1 else write(*,*) write(*,'("Error(rdirac): zero wavefunction")') write(*,*) stop end if call dscal(nr,t1,g0,1) call dscal(nr,t1,f0,1) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/dbxcplot.f900000644002504400250440000000005012337331324016336 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dbxcplot.f900000644002504400250440000000434112337331324017104 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dbxcplot use modmain implicit none ! local variables integer idm,is,ias,ir ! allocatable arrays real(8), allocatable :: rvfmt(:,:,:,:),rvfir(:,:) real(8), allocatable :: rfmt(:,:,:),rfir(:) real(8), allocatable :: grfmt(:,:,:,:),grfir(:,:) if (.not.spinpol) then write(*,*) write(*,'("Error(dbxcplot): spin-unpolarised field is zero")') write(*,*) stop end if ! initialise universal variables call init0 ! read magnetisation from file call readstate allocate(rvfmt(lmmaxvr,nrmtmax,natmtot,3),rvfir(ngtot,3)) allocate(rfmt(lmmaxvr,nrmtmax,natmtot),rfir(ngtot)) allocate(grfmt(lmmaxvr,nrmtmax,natmtot,3),grfir(ngtot,3)) if (ncmag) then ! non-collinear rvfmt(:,:,:,:)=bxcmt(:,:,:,:) rvfir(:,:)=bxcir(:,:) else ! collinear rvfmt(:,:,:,1:2)=0.d0 rvfir(:,1:2)=0.d0 rvfmt(:,:,:,3)=bxcmt(:,:,:,1) rvfir(:,3)=bxcir(:,1) end if rfmt(:,:,:)=0.d0 rfir(:)=0.d0 do idm=1,3 call gradrf(rvfmt(:,:,:,idm),rvfir(:,idm),grfmt,grfir) do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) rfmt(:,ir,ias)=rfmt(:,ir,ias)+grfmt(:,ir,ias,idm) end do end do rfir(:)=rfir(:)+grfir(:,idm) end do select case(task) case(91) open(50,file='DBXC1D.OUT',action='WRITE',form='FORMATTED') open(51,file='DBXCLINES.OUT',action='WRITE',form='FORMATTED') call plot1d(50,51,1,rfmt,rfir) close(50) close(51) write(*,*) write(*,'("Info(dbxcplot):")') write(*,'(" 1D divergence of exchange-correlation field written to & &DBXC1D.OUT")') write(*,'(" vertex location lines written to DBXCLINES.OUT")') case(92) open(50,file='DBXC2D.OUT',action='WRITE',form='FORMATTED') call plot2d(50,1,rfmt,rfir) close(50) write(*,'("Info(dbxcplot):")') write(*,'(" 2D divergence of exchange-correlation field written to & &DBXC2D.OUT")') case(93) open(50,file='DBXC3D.OUT',action='WRITE',form='FORMATTED') call plot3d(50,1,rfmt,rfir) close(50) write(*,'("Info(dbxcplot):")') write(*,'(" 3D divergence of exchange-correlation field written to & &DBXC3D.OUT")') end select deallocate(rvfmt,rvfir,rfmt,rfir,grfmt,grfir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dhmlistl.f900000644002504400250440000000005012337331324016337 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dhmlistl.f900000644002504400250440000000152112337331324017102 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dhmlistl(ngp,ngpq,igpig,igpqig,vgpc,vgpqc,ld,dh) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ngp,ngpq integer, intent(in) :: igpig(ngkmax),igpqig(ngkmax) real(8), intent(in) :: vgpc(3,ngkmax),vgpqc(3,ngkmax) integer, intent(in) :: ld complex(8), intent(inout) :: dh(ld,*) ! local variables integer iv(3),jv(3),ig,i,j real(8) vj(3),t1 do j=1,ngp jv(:)=ivg(:,igpig(j)) vj(:)=vgpc(:,j) do i=1,ngpq iv(:)=ivg(:,igpqig(i))-jv(:) ig=ivgig(iv(1),iv(2),iv(3)) t1=0.5d0*(vgpqc(1,i)*vj(1)+vgpqc(2,i)*vj(2)+vgpqc(3,i)*vj(3)) dh(i,j)=dh(i,j)+dvsig(ig)+t1*dcfunig(ig) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmengyxc.f900000644002504400250440000000005012337331324016517 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmengyxc.f900000644002504400250440000000354012337331324017265 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rdmengyxc ! !INTERFACE: subroutine rdmengyxc ! !USES: use modmain use modrdm ! !DESCRIPTION: ! Calculates RDMFT exchange-correlation energy. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! local variables integer ik1,ik2,jk,iv(3) integer ist1,ist2 real(8) t1,t2,t3,t4 ! allocatable arays real(8), allocatable :: vclijji(:,:,:) ! calculate the prefactor if (rdmxctype.eq.0) then engyx=0.d0 return else if (rdmxctype.eq.1) then ! Hartree-Fock functional t1=0.5d0/occmax else if (rdmxctype.eq.2) then ! Power functional if (spinpol) then t1=0.5d0 else t1=(0.25d0)**rdmalpha end if else write(*,*) write(*,'("Error(rdmengyxc): rdmxctype not defined : ",I8)') rdmxctype write(*,*) stop end if ! exchange-correlation energy engyx=0.d0 allocate(vclijji(nstsv,nstsv,nkpt)) ! start loop over non-reduced k-points do ik1=1,nkptnr call getvclijji(ik1,vclijji) ! find the equivalent reduced k-point iv(:)=ivk(:,ik1) jk=ikmap(iv(1),iv(2),iv(3)) do ist1=1,nstsv ! start loop over reduced k-points do ik2=1,nkpt do ist2=1,nstsv ! Hartree-Fock functional if (rdmxctype.eq.1) then t2=t1*wkpt(ik2)*occsv(ist2,ik2)*occsv(ist1,jk) ! Power functional else if (rdmxctype.eq.2) then t3=occsv(ist2,ik2)*occsv(ist1,jk) t4=sum(abs(vkl(:,ik2)-vkl(:,ik1))) if ((ist2.eq.ist1).and.(t4.lt.epslat)) then t2=(0.5d0/occmax)*wkpt(ik2)*t3 else t2=t1*wkpt(ik2)*(t3**rdmalpha) end if end if engyx=engyx-t2*vclijji(ist2,ist1,ik2) end do end do end do end do deallocate(vclijji) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/projsbf.f900000644002504400250440000000005012337331324016164 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/projsbf.f900000644002504400250440000000560712337331324016740 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine projsbf use modmain implicit none ! local variables integer is,ias,ir,idm,lm real(8) t1 complex(8) zrho0 ! allocatable arrays real(8), allocatable :: rvfmt(:,:,:,:),rvfir(:,:) real(8), allocatable :: rfmt(:,:,:),rfir(:) real(8), allocatable :: grfmt(:,:,:,:),grfir(:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zvclmt(:,:,:),zvclir(:) allocate(rvfmt(lmmaxvr,nrmtmax,natmtot,3),rvfir(ngtot,3)) allocate(rfmt(lmmaxvr,nrmtmax,natmtot),rfir(ngtot)) allocate(grfmt(lmmaxvr,nrmtmax,natmtot,3),grfir(ngtot,3)) allocate(zrhomt(lmmaxvr,nrmtmax,natmtot),zrhoir(ngtot)) allocate(zvclmt(lmmaxvr,nrmtmax,natmtot),zvclir(ngtot)) if (.not.spinpol) then write(*,*) write(*,'("Error(projsbf): spin-unpolarised field is zero")') write(*,*) stop end if if (ncmag) then ! non-collinear rvfmt(:,:,:,:)=bxcmt(:,:,:,:) rvfir(:,:)=bxcir(:,:) else ! collinear rvfmt(:,:,:,1:2)=0.d0 rvfir(:,1:2)=0.d0 rvfmt(:,:,:,3)=bxcmt(:,:,:,1) rvfir(:,3)=bxcir(:,1) end if ! compute the divergence of B-field rfmt(:,:,:)=0.d0 rfir(:)=0.d0 do idm=1,3 call gradrf(rvfmt(:,:,:,idm),rvfir(:,idm),grfmt,grfir) do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) rfmt(:,ir,ias)=rfmt(:,ir,ias)+grfmt(:,ir,ias,idm) end do end do rfir(:)=rfir(:)+grfir(:,idm) end do ! divide by -4*pi t1=-1.d0/fourpi rfmt(:,:,:)=t1*rfmt(:,:,:) rfir(:)=t1*rfir(:) ! convert real muffin-tin divergence to complex spherical harmonic expansion do ias=1,natmtot is=idxis(ias) call rtozfmt(nrmt(is),nrmtinr(is),1,rfmt(:,:,ias),1,zrhomt(:,:,ias)) end do ! store real interstitial divergence in a complex array zrhoir(:)=rfir(:) ! solve the complex Poisson's equation call genzvclmt(nrmt,nrmtinr,spnrmax,spr,nrmtmax,zrhomt,zvclmt) call zpotcoul(nrmt,nrmtinr,spnrmax,spr,1,gc,jlgr,ylmg,sfacg,zrhoir,nrmtmax, & zvclmt,zvclir,zrho0) ! convert complex muffin-tin potential to real spherical harmonic expansion do ias=1,natmtot is=idxis(ias) call ztorfmt(nrmt(is),nrmtinr(is),1,zvclmt(:,:,ias),1,rfmt(:,:,ias)) end do ! store complex interstitial potential in real array rfir(:)=dble(zvclir(:)) ! compute the gradient call gradrf(rfmt,rfir,grfmt,grfir) ! subtract gradient from existing B-field if (ncmag) then ! non-collinear bxcmt(:,:,:,:)=bxcmt(:,:,:,:)-grfmt(:,:,:,:) bxcir(:,:)=bxcir(:,:)-grfir(:,:) else ! collinear bxcmt(:,:,:,1)=bxcmt(:,:,:,1)-grfmt(:,:,:,3) bxcir(:,1)=bxcir(:,1)-grfir(:,3) end if ! remove numerical noise from the muffin-tin B-field do idm=1,ndmag do ias=1,natmtot is=idxis(ias) do lm=1,lmmaxvr call fsmooth(10,nrmt(is),lmmaxvr,bxcmt(lm,1,ias,idm)) end do end do end do deallocate(rvfmt,rvfir,rfmt,rfir,grfmt,grfir) deallocate(zrhomt,zrhoir,zvclmt,zvclir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/fsmooth.f900000644002504400250440000000005012337331323016175 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/fsmooth.f900000644002504400250440000000202412337331323016737 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst and S. Sharma. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: fsmooth ! !INTERFACE: subroutine fsmooth(m,n,ld,f) ! !INPUT/OUTPUT PARAMETERS: ! m : number of 3-point running averages to perform (in,integer) ! n : number of point (in,integer) ! ld : leading dimension (in,integer) ! f : function array (inout,real(ld,n)) ! !DESCRIPTION: ! Removes numerical noise from a function by performing $m$ successive ! 3-point running averages on the data. The endpoints are kept fixed. ! ! !REVISION HISTORY: ! Created December 2005 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: m integer, intent(in) :: n integer, intent(in) :: ld real(8), intent(inout) :: f(ld,n) ! local variables integer i,j ! automatic arrays real(8) g(n) do i=1,m do j=2,n-1 g(j)=0.3333333333333333333d0*(f(1,j-1)+f(1,j)+f(1,j+1)) end do f(1,2:n-1)=g(2:n-1) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/eveqnit.f900000644002504400250440000000005012337331323016171 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/eveqnit.f900000644002504400250440000001246412337331323016744 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine eveqnit(nmatp,ngp,igpig,vpl,vgpl,vgpc,apwalm,evalfv,evecfv) use modmain implicit none ! arguments integer, intent(in) :: nmatp,ngp integer, intent(in) :: igpig(ngkmax) real(8), intent(in) :: vpl(3) real(8), intent(in) :: vgpl(3,ngkmax),vgpc(3,ngkmax) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) real(8), intent(out) :: evalfv(nstfv) complex(8), intent(out) :: evecfv(nmatmax,nstfv) ! local variables integer n2,ns,ist,ias integer it,i,lwork,info real(8) rmax,t1 real(8) ts1,ts0 ! allocatable arrays real(8), allocatable :: w(:),rwork(:) complex(8), allocatable :: h(:,:),o(:,:),hv(:,:),ov(:,:) complex(8), allocatable :: u(:,:),hu(:,:),ou(:,:) complex(8), allocatable :: hs(:,:),os(:,:),work(:) ! external functions complex(8) zdotc external zdotc n2=2*nmatp ns=2*nstfv if (iscl.ge.2) then ! read in the eigenvalues/vectors from file call getevalfv(vpl,evalfv) call getevecfv(vpl,vgpl,evecfv) else ! initialise the eigenvectors to canonical basis vectors evecfv(1:nmatp,:)=0.d0 do ist=1,nstfv evecfv(ist,ist)=1.d0 end do end if ! compute Hamiltonian and overlap matrices call timesec(ts0) allocate(h(nmatp,nmatp),o(nmatp,nmatp)) !$OMP PARALLEL SECTIONS DEFAULT(SHARED) PRIVATE(ias,i) !$OMP SECTION ! Hamiltonian do i=1,nmatp h(1:i,i)=0.d0 end do do ias=1,natmtot call hmlaa(ias,ngp,apwalm,nmatp,h) call hmlalo(ias,ngp,apwalm,nmatp,h) call hmllolo(ias,ngp,nmatp,h) end do call hmlistl(ngp,igpig,vgpc,nmatp,h) !$OMP SECTION ! overlap do i=1,nmatp o(1:i,i)=0.d0 end do do ias=1,natmtot call olpaa(ias,ngp,apwalm,nmatp,o) call olpalo(ias,ngp,apwalm,nmatp,o) call olplolo(ias,ngp,nmatp,o) end do call olpistl(ngp,igpig,nmatp,o) !$OMP END PARALLEL SECTIONS call timesec(ts1) !$OMP ATOMIC timemat=timemat+ts1-ts0 call timesec(ts0) allocate(w(ns),rwork(3*ns)) allocate(hv(nmatp,nstfv),ov(nmatp,nstfv)) allocate(u(nmatp,nstfv),hu(nmatp,nstfv),ou(nmatp,nstfv)) allocate(hs(ns,ns),os(ns,ns)) lwork=2*ns allocate(work(lwork)) ! start iteration loop do it=1,maxitefv rmax=0.d0 !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(t1) !$OMP DO do ist=1,nstfv ! operate with O on the current eigenvector call zhemv('U',nmatp,zone,o,nmatp,evecfv(:,ist),1,zzero,ov(:,ist),1) ! normalise the eigenvector t1=dble(zdotc(nmatp,evecfv(:,ist),1,ov(:,ist),1)) if (t1.gt.0.d0) then t1=1.d0/sqrt(t1) call dscal(n2,t1,evecfv(:,ist),1) call dscal(n2,t1,ov(:,ist),1) end if ! operate with H on the current eigenvector call zhemv('U',nmatp,zone,h,nmatp,evecfv(:,ist),1,zzero,hv(:,ist),1) ! estimate the eigenvalue t1=dble(zdotc(nmatp,evecfv(:,ist),1,hv(:,ist),1)) if ((iscl.le.1).and.(it.eq.1)) then evalfv(ist)=t1 else evalfv(ist)=(1.d0-befvit)*evalfv(ist)+befvit*t1 end if ! compute the residual |u> = (H - eO)|v> call zcopy(nmatp,hv(:,ist),1,u(:,ist),1) call daxpy(n2,-evalfv(ist),ov(:,ist),1,u(:,ist),1) ! apply the overlap matrix to the residual call zhemv('U',nmatp,zone,o,nmatp,u(:,ist),1,zzero,ou(:,ist),1) ! compute the overlap of the residual with itself t1=dble(zdotc(nmatp,u(:,ist),1,ou(:,ist),1)) !$OMP CRITICAL if (t1.gt.rmax) rmax=t1 !$OMP END CRITICAL ! normalise the residual if (t1.gt.0.d0) then t1=1.d0/sqrt(t1) call dscal(n2,t1,u(:,ist),1) call dscal(n2,t1,ou(:,ist),1) end if ! apply the Hamiltonian matrix to the residual call zhemv('U',nmatp,zone,h,nmatp,u(:,ist),1,zzero,hu(:,ist),1) end do !$OMP END DO !$OMP END PARALLEL ! compute the Hamiltonian and overlap matrices in the subspace formed by the ! eigenvectors and their residuals !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ist=1,nstfv call zgemv('C',nmatp,nstfv,zone,evecfv,nmatmax,hv(:,ist),1,zzero, & hs(1,ist),1) call zgemv('C',nmatp,nstfv,zone,evecfv,nmatmax,hu(:,ist),1,zzero, & hs(1,nstfv+ist),1) call zgemv('C',nmatp,nstfv,zone,u,nmatp,hu(:,ist),1,zzero, & hs(nstfv+1,nstfv+ist),1) end do !$OMP END DO !$OMP END PARALLEL !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ist=1,nstfv call zgemv('C',nmatp,nstfv,zone,evecfv,nmatmax,ov(:,ist),1,zzero, & os(1,ist),1) call zgemv('C',nmatp,nstfv,zone,evecfv,nmatmax,ou(:,ist),1,zzero, & os(1,nstfv+ist),1) call zgemv('C',nmatp,nstfv,zone,u,nmatp,ou(:,ist),1,zzero, & os(nstfv+1,nstfv+ist),1) end do !$OMP END DO !$OMP END PARALLEL ! solve the generalised eigenvalue problem in the subspace call zhegv(1,'V','U',ns,hs,ns,os,ns,w,work,lwork,rwork,info) if (info.ne.0) exit ! construct the new eigenvectors !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ist=1,nstfv call zgemv('N',nmatp,nstfv,zone,evecfv,nmatmax,hs(1,ist),1,zzero, & ov(:,ist),1) call zgemv('N',nmatp,nstfv,zone,u,nmatp,hs(nstfv+1,ist),1,zone,ov(:,ist),1) end do !$OMP END DO !$OMP END PARALLEL !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ist=1,nstfv call zcopy(nmatp,ov(:,ist),1,evecfv(:,ist),1) end do !$OMP END DO !$OMP END PARALLEL ! check for convergence rmax=sqrt(abs(rmax)/dble(nmatp)) if ((it.ge.minitefv).and.(rmax.lt.epsefvit)) exit ! end iteration loop end do deallocate(w,rwork,h,o,hv,ov) deallocate(u,hu,ou,hs,os,work) call timesec(ts1) !$OMP ATOMIC timefv=timefv+ts1-ts0 return end subroutine elk-2.3.22/src/PaxHeaders.22528/writeiad.f900000644002504400250440000000005012337331323016326 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writeiad.f900000644002504400250440000000252612337331323017077 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writeiad ! !INTERFACE: subroutine writeiad(fnum) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! fnum : file number for writing output (in,integer) ! !DESCRIPTION: ! Outputs the interatomic distances to file. ! ! !REVISION HISTORY: ! Created May 2005 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum ! local variables integer is,js,ia,ja integer i1,i2,i3 real(8) d,dmin,v(3) do is=1,nspecies do ia=1,natoms(is) write(fnum,*) write(fnum,'("Distance between is = ",I4," (",A,"), ia = ",I4," and")') & is,trim(spsymb(is)),ia do js=1,nspecies do ja=1,natoms(js) dmin=1.d8 do i1=-1,1 do i2=-1,1 do i3=-1,1 v(:)=dble(i1)*avec(:,1)+dble(i2)*avec(:,2)+dble(i3)*avec(:,3) & +atposc(:,ja,js) v(:)=v(:)-atposc(:,ia,is) d=sqrt(v(1)**2+v(2)**2+v(3)**2) dmin=min(d,dmin) end do end do end do write(fnum,'(" is = ",I4," (",A,"), ia = ",I4," : ",G18.10)') js, & trim(spsymb(js)),ja,dmin end do end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genveedu.f900000644002504400250440000000005012337331324016321 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genveedu.f900000644002504400250440000000320612337331324017066 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genveedu ! !INTERFACE: subroutine genveedu(i,u,j,vee) ! !USES: use modmain use moddftu ! !INPUT/OUTPUT PARAMETERS: ! i : DFT+U entry (in,integer) ! u : parameter U (out,real) ! j : parameter J (out,real) ! vee : Coulomb matrix elements (out,real(-lmaxdm:lmaxdm,-lmaxdm:lmaxdm, ! -lmaxdm:lmaxdm,-lmaxdm:lmaxdm)) ! !DESCRIPTION: ! Calculates the Coulomb matrix elements used in DFT+U calculations. See ! {\it Phys. Rev. B} {\bf 52}, 5467 (1995). ! ! !REVISION HISTORY: ! Created November 2007 (FC,JKD,FB,LN) ! Modified July 2009 (FC) !EOP !BOC implicit none ! arguments integer, intent(in) :: i real(8), intent(out) :: u,j real(8), intent(out) :: vee(-lmaxdm:lmaxdm,-lmaxdm:lmaxdm,-lmaxdm:lmaxdm, & -lmaxdm:lmaxdm) ! local variables integer l,m1,m2,m3,m4,k,q real(8) sum1,sum2,t1 ! automatic arrays real(8) :: f(0:2*lmaxdm) ! external functions real(8) gaunt external gaunt l=idftu(2,i) ! calculate Slater integrals call genfdu(i,u,j,f) do m1=-l,l do m2=-l,l do m3=-l,l do m4=-l,l sum1=0.d0 do k=0,2*l,2 sum2=0.d0 do q=-k,k t1=gaunt(l,k,l,m1,q,m2)*gaunt(l,k,l,m3,-q,m4) if (mod(q,2).eq.0) then sum2=sum2+t1 else sum2=sum2-t1 end if end do sum1=sum1+f(k)*sum2/dble(2*k+1) end do vee(m1,m3,m2,m4)=fourpi*sum1 end do end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gensocfr.f900000644002504400250440000000005012337331323016324 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gensocfr.f900000644002504400250440000000152712337331323017075 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine gensocfr use modmain implicit none ! local variables integer is,ias integer nr,ir,irc real(8) cso,rm ! allocatable arrays real(8), allocatable :: vr(:),dvr(:) if (.not.spinorb) return ! coefficient of spin-orbit coupling cso=socscf/(4.d0*solsc**2) allocate(vr(nrmtmax),dvr(nrmtmax)) do ias=1,natmtot is=idxis(ias) nr=nrmt(is) ! radial derivative of the spherical part of the Kohn-Sham potential vr(1:nr)=vsmt(1,1:nr,ias)*y00 call fderiv(1,nr,spr(:,is),vr,dvr) irc=0 do ir=1,nr,lradstp irc=irc+1 rm=1.d0-2.d0*cso*vr(ir) socfr(irc,ias)=cso*dvr(ir)/(spr(ir,is)*rm**2) end do end do deallocate(vr,dvr) return end subroutine elk-2.3.22/src/PaxHeaders.22528/findswidth.f900000644002504400250440000000005012337331323016661 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findswidth.f900000644002504400250440000000340112337331323017423 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 T. Bjorkman and O. Granas. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: findswidth ! !INTERFACE: subroutine findswidth ! !USES: use modmain ! !DESCRIPTION: ! Calculates the smearing width from the $k$-point density, ! $V_{\rm BZ}/n_k$; the valence band width, $W$; and an effective mass ! parameter, $m^{*}$; according to ! $$ \sigma=\frac{\sqrt{2W}}{m^{*}}\left(\frac{3}{4\pi} ! \frac{V_{\rm BZ}}{n_k}\right)^{1/3}. $$ ! The valence bandwidth is determined by stepping down in energy from the ! Fermi level until a gap larger than a given tolerance is found. This method ! was presented in T. Bj\"{o}rkman and O. Gr\aa n\"{a}s, {\it Int. J. Quant. ! Chem.} DOI: 10.1002/qua.22476. ! ! !REVISION HISTORY: ! Created April 2010 (Torbjorn Bjorkman and JKD) !EOP !BOC implicit none ! local variables integer i,j,m,n,ik,ist real(8), parameter :: eps=0.05d0 real(8) e,vbw ! allocatable arrays integer, allocatable :: idx(:) n=nstsv*nkpt allocate(idx(n)) ! find the index which sorts the eigenvalues in ascending order call sortidx(n,evalsv,idx) ! find the highest eigenvalue < efermi m=n e=efermi do i=n,1,-1 j=idx(i) ik=(j-1)/nstsv+1 ist=mod(j-1,nstsv)+1 if (evalsv(ist,ik).lt.efermi) then m=i e=evalsv(ist,ik) goto 10 end if end do 10 continue ! search downwards until a gap larger than eps is found do i=m,1,-1 j=idx(i) ik=(j-1)/nstsv+1 ist=mod(j-1,nstsv)+1 if ((e-evalsv(ist,ik)).gt.eps) goto 20 e=evalsv(ist,ik) end do 20 continue ! valence band width vbw=efermi-e vbw=max(vbw,1.d-2) ! determine swidth swidth=(sqrt(2.d0*vbw)/mstar)*(6.d0*pi**2/(omega*dble(nkptnr)))**(1.d0/3.d0) deallocate(idx) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gengqrf.f900000644002504400250440000000005012337331324016150 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gengqrf.f900000644002504400250440000000162312337331324016716 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gengqrf(vqpc,igq0,vgqc,gqc,ylmgq,sfacgq) use modmain implicit none ! arguments real(8), intent(in) :: vqpc(3) integer, intent(out) :: igq0 real(8), intent(out) :: vgqc(3,ngrf),gqc(ngrf) complex(8), intent(out) :: ylmgq(lmmaxvr,ngrf) complex(8), intent(out) :: sfacgq(ngrf,natmtot) ! local variables integer ig real(8) tp(2) do ig=1,ngrf ! determine the G+q-vectors vgqc(:,ig)=vgc(:,ig)+vqpc(:) ! G+q-vector length and (theta, phi) coordinates call sphcrd(vgqc(:,ig),gqc(ig),tp) ! spherical harmonics for G+q-vectors call genylm(lmaxvr,tp,ylmgq(:,ig)) end do ! structure factors for G+q call gensfacgp(ngrf,vgqc,ngrf,sfacgq) ! find the shortest G+q-vector call findigp0(ngrf,gqc,igq0) return end subroutine elk-2.3.22/src/PaxHeaders.22528/z2mctm.f900000644002504400250440000000005012337331323015732 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/z2mctm.f900000644002504400250440000000176012337331323016502 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: z2mctm ! !INTERFACE: subroutine z2mctm(a,b,c) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix 1 (in,complex(2,2)) ! b : input matrix 2 (in,complex(2,2)) ! c : output matrix (out,complex(2,2)) ! !DESCRIPTION: ! Multiplies the conjugate transpose of one complex $2\times 2$ matrix with ! another. Note that the output matrix cannot be one of the input matrices. ! ! !REVISION HISTORY: ! Created October 2007 (JKD) !EOP !BOC implicit none ! arguments complex(8), intent(in) :: a(2,2) complex(8), intent(in) :: b(2,2) complex(8), intent(out) :: c(2,2) c(1,1)=conjg(a(1,1))*b(1,1)+conjg(a(2,1))*b(2,1) c(1,2)=conjg(a(1,1))*b(1,2)+conjg(a(2,1))*b(2,2) c(2,1)=conjg(a(1,2))*b(1,1)+conjg(a(2,2))*b(2,1) c(2,2)=conjg(a(1,2))*b(1,2)+conjg(a(2,2))*b(2,2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/dos.f900000644002504400250440000000005012337331323015303 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/dos.f900000644002504400250440000002740112337331323016053 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: dos ! !INTERFACE: subroutine dos ! !USES: use modmain use modtest ! !DESCRIPTION: ! Produces a total and partial density of states (DOS) for plotting. The total ! DOS is written to the file {\tt TDOS.OUT} while the partial DOS is written ! to the file {\tt PDOS\_Sss\_Aaaaa.OUT} for atom {\tt aaaa} of species ! {\tt ss}. In the case of the partial DOS, each symmetrised ! $(l,m)$-projection is written consecutively and separated by blank lines. ! If the global variable {\tt lmirep} is {\tt .true.}, then the density matrix ! from which the $(l,m)$-projections are obtained is first rotated into a ! irreducible representation basis, i.e. one that block diagonalises all the ! site symmetry matrices in the $Y_{lm}$ basis. Eigenvalues of a quasi-random ! matrix in the $Y_{lm}$ basis which has been symmetrised with the site ! symmetries are written to {\tt ELMIREP.OUT}. This allows for identification ! of the irreducible representations of the site symmetries, for example $e_g$ ! or $t_{2g}$, by the degeneracies of the eigenvalues. In the plot, spin-up is ! made positive and spin-down negative. See the routines {\tt gendmat} and ! {\tt brzint}. ! ! !REVISION HISTORY: ! Created January 2004 (JKD) ! Parallelised and included sum over m, November 2009 (F. Cricchio) !EOP !BOC implicit none ! local variables logical tsqaz integer nsk(3),ik,jk,ist,iw integer nsd,ispn,jspn,is,ia,ias integer lmmax,l0,l1,l,m,lm,ld real(8) dw,th,sps(2),vl(3),vc(3) real(8) v1(3),v2(3),v3(3),t1 complex(8) su2(2,2),b(2,2),c(2,2) character(256) fname ! low precision for band/spin character array saves memory real(4), allocatable :: bc(:,:,:,:,:),sc(:,:,:) real(8), allocatable :: w(:),e(:,:,:),f(:,:) real(8), allocatable :: g(:),dt(:,:),dp(:,:,:) real(8), allocatable :: elm(:,:) complex(8), allocatable :: ulm(:,:,:),a(:,:) complex(8), allocatable :: dmat(:,:,:,:,:),sdmat(:,:,:) complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) ! always use the second-variational states (avoids confusion for RDMFT) tevecsv=.true. ! initialise universal variables call init0 call init1 lmmax=(lmaxdos+1)**2 ld=lmmax*nspinor if (dosssum) then nsd=1 else nsd=nspinor end if if (dosmsum) then l0=0; l1=lmaxdos else l0=1; l1=lmmax end if allocate(bc(lmmax,nspinor,natmtot,nstsv,nkptnr)) allocate(sc(nspinor,nstsv,nkptnr)) if (lmirep) then allocate(elm(lmmax,natmtot)) allocate(ulm(lmmax,lmmax,natmtot)) end if ! read density and potentials from file call readstate ! read Fermi energy from file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! get the eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) if (dosocc) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! generate unitary matrices which convert the (l,m) basis into the irreducible ! representation basis of the symmetry group at each atomic site if (lmirep) call genlmirep(lmaxdos,lmmax,elm,ulm) ! compute the SU(2) operator used for rotating the density matrix to the ! desired spin-quantisation axis v1(:)=sqados(:) t1=sqrt(v1(1)**2+v1(2)**2+v1(3)**2) if (t1.le.epslat) then write(*,*) write(*,'("Error(dos): spin-quantisation axis (sqados) has zero length")') write(*,*) stop end if v1(:)=v1(:)/t1 if (v1(3).ge.1.d0-epslat) then tsqaz=.true. else tsqaz=.false. v2(1:2)=0.d0 v2(3)=1.d0 call r3cross(v1,v2,v3) ! note that the spin-quantisation axis is rotated, so the density matrix should ! be rotated in the opposite direction th=-acos(v1(3)) call axangsu2(v3,th,su2) end if ! begin parallel loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(apwalm,evecfv,evecsv,dmat,sdmat,a) & !$OMP PRIVATE(jk,ispn,jspn,vl,vc) & !$OMP PRIVATE(is,ia,ias,ist,lm,b,c,t1) !$OMP DO do ik=1,nkptnr allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv),evecsv(nstsv,nstsv)) allocate(dmat(lmmax,nspinor,lmmax,nspinor,nstsv)) allocate(sdmat(nspinor,nspinor,nstsv),a(lmmax,lmmax)) ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! loop over first-variational spins do ispn=1,nspnfv vl(:)=vkl(:,ik) vc(:)=vkc(:,ik) ! spin-spiral case if (spinsprl) then if (ispn.eq.1) then vl(:)=vl(:)+0.5d0*vqlss(:) vc(:)=vc(:)+0.5d0*vqcss(:) else vl(:)=vl(:)-0.5d0*vqlss(:) vc(:)=vc(:)-0.5d0*vqcss(:) end if end if ! find the matching coefficients call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! get the eigenvectors from file for non-reduced k-point call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! generate the density matrix call gendmat(.false.,.false.,0,lmaxdos,ias,ngk(:,ik),apwalm,evecfv, & evecsv,lmmax,dmat) ! convert (l,m) part to an irreducible representation if required if (lmirep) then do ist=1,nstsv do ispn=1,nspinor do jspn=1,nspinor call zgemm('N','N',lmmax,lmmax,lmmax,zone,ulm(:,:,ias),lmmax, & dmat(:,ispn,1,jspn,ist),ld,zzero,a,lmmax) call zgemm('N','C',lmmax,lmmax,lmmax,zone,a,lmmax,ulm(:,:,ias), & lmmax,zzero,dmat(:,ispn,1,jspn,ist),ld) end do end do end do end if ! spin rotate the density matrices to desired spin-quantisation axis if (spinpol.and.(.not.tsqaz)) then do ist=1,nstsv do lm=1,lmmax b(:,:)=dmat(lm,:,lm,:,ist) call z2mm(su2,b,c) call z2mmct(c,su2,b) dmat(lm,:,lm,:,ist)=b(:,:) end do end do end if ! determine the band characters from the density matrix do ist=1,nstsv do ispn=1,nspinor do lm=1,lmmax t1=dble(dmat(lm,ispn,lm,ispn,ist)) bc(lm,ispn,ias,ist,ik)=real(t1) end do end do end do end do end do ! compute the spin density matrices of the second-variational states call gensdmat(evecsv,sdmat) ! spin rotate the density matrices to desired spin-quantisation axis if (spinpol.and.(.not.tsqaz)) then do ist=1,nstsv call z2mm(su2,sdmat(:,:,ist),b) call z2mmct(b,su2,sdmat(:,:,ist)) end do end if do ist=1,nstsv do ispn=1,nspinor t1=dble(sdmat(ispn,ispn,ist)) sc(ispn,ist,ik)=real(t1) end do end do deallocate(apwalm,evecfv,evecsv,dmat,sdmat,a) end do !$OMP END DO !$OMP END PARALLEL allocate(w(nwplot)) allocate(e(nstsv,nkptnr,nspinor)) allocate(dt(nwplot,nsd)) allocate(dp(nwplot,l0:l1,nsd)) ! generate energy grid dw=(wplot(2)-wplot(1))/dble(nwplot) do iw=1,nwplot w(iw)=dw*dble(iw-1)+wplot(1) end do ! number of subdivisions used for interpolation in the Brillouin zone nsk(:)=max(ngrkf/ngridk(:),1) ! sign for spin in DOS sps(1)=1.d0 sps(2)=-1.d0 !-------------------! ! total DOS ! !-------------------! allocate(f(nstsv,nkptnr),g(nwplot)) dt(:,:)=0.d0 do ispn=1,nspinor do ik=1,nkptnr jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) do ist=1,nstsv ! subtract the Fermi energy e(ist,ik,ispn)=evalsv(ist,jk)-efermi ! use diagonal of spin density matrix for weight f(ist,ik)=sc(ispn,ist,ik) if (dosocc) then f(ist,ik)=f(ist,ik)*occsv(ist,jk) else f(ist,ik)=f(ist,ik)*occmax end if end do end do ! integrate over the Brillouin zone call brzint(nswplot,ngridk,nsk,ikmapnr,nwplot,wplot,nstsv,nstsv,e(:,:,ispn), & f,g) if (dosssum) then dt(:,1)=dt(:,1)+g(:) else dt(:,ispn)=g(:) end if end do deallocate(f,g) ! output to file open(50,file='TDOS.OUT',action='WRITE',form='FORMATTED') do ispn=1,nsd do iw=1,nwplot write(50,'(2G18.10)') w(iw),dt(iw,ispn)*sps(ispn) end do write(50,'(" ")') end do close(50) !---------------------! ! partial DOS ! !---------------------! do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) dp(:,:,:)=0.d0 do ispn=1,nspinor !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(f,g,l,ik,jk,ist) !$OMP DO do lm=1,lmmax allocate(f(nstsv,nkptnr),g(nwplot)) l=idxil(lm) do ik=1,nkptnr jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) do ist=1,nstsv f(ist,ik)=bc(lm,ispn,ias,ist,ik) if (dosocc) then f(ist,ik)=f(ist,ik)*occsv(ist,jk) else f(ist,ik)=f(ist,ik)*occmax end if end do end do call brzint(nswplot,ngridk,nsk,ikmapnr,nwplot,wplot,nstsv,nstsv, & e(:,:,ispn),f,g) if (dosmsum) then if (dosssum) then dp(:,l,1)=dp(:,l,1)+g(:) else dp(:,l,ispn)=dp(:,l,ispn)+g(:) end if else if (dosssum) then dp(:,lm,1)=dp(:,lm,1)+g(:) else dp(:,lm,ispn)=g(:) end if end if ! subtract from interstitial DOS !$OMP CRITICAL if (dosssum) then dt(:,1)=dt(:,1)-g(:) else dt(:,ispn)=dt(:,ispn)-g(:) end if !$OMP END CRITICAL deallocate(f,g) end do !$OMP END DO !$OMP END PARALLEL end do ! output to file write(fname,'("PDOS_S",I2.2,"_A",I4.4,".OUT")') is,ia open(50,file=trim(fname),action='WRITE',form='FORMATTED') do ispn=1,nsd do l=l0,l1 do iw=1,nwplot write(50,'(2G18.10)') w(iw),dp(iw,l,ispn)*sps(ispn) end do write(50,'(" ")') end do end do close(50) end do end do !------------------------------------------! ! irreducible representations file ! !------------------------------------------! if (lmirep) then open(50,file='ELMIREP.OUT',action='WRITE',form='FORMATTED') do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is, & trim(spsymb(is)),ia do l=0,lmaxdos do m=-l,l lm=idxlm(l,m) write(50,'(" l = ",I2,", m = ",I2,", lm= ",I3," : ",G18.10)') l,m, & lm,elm(lm,ias) end do end do end do end do close(50) end if !--------------------------! ! interstitial DOS ! !--------------------------! open(50,file='IDOS.OUT',action='WRITE',form='FORMATTED') do ispn=1,nsd do iw=1,nwplot write(50,'(2G18.10)') w(iw),dt(iw,ispn)*sps(ispn) end do write(50,'(" ")') end do close(50) write(*,*) write(*,'("Info(dos):")') write(*,'(" Total density of states written to TDOS.OUT")') write(*,*) write(*,'(" Partial density of states written to PDOS_Sss_Aaaaa.OUT")') write(*,'(" for all species and atoms")') if (dosmsum) then write(*,'(" PDOS summed over m")') end if if (dosssum) then write(*,'(" PDOS summed over spin")') end if if (.not.tsqaz) then write(*,*) write(*,'(" Spin-quantisation axis : ",3G18.10)') sqados(:) end if if (lmirep) then write(*,*) write(*,'(" Eigenvalues of a random matrix in the (l,m) basis symmetrised")') write(*,'(" with the site symmetries written to ELMIREP.OUT for all")') write(*,'(" species and atoms. Degenerate eigenvalues correspond to")') write(*,'(" irreducible representations of each site symmetry group")') end if write(*,*) write(*,'(" Interstitial density of states written to IDOS.OUT")') write(*,*) write(*,'(" Fermi energy is at zero in plot")') write(*,*) write(*,'(" DOS units are states/Hartree/unit cell")') ! write the total DOS to test file call writetest(10,'total DOS',nv=nwplot*nsd,tol=2.d-2,rva=dt) deallocate(bc,sc,w,e,dt,dp) if (lmirep) deallocate(elm,ulm) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/zpotclmt.f900000644002504400250440000000005012337331323016372 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zpotclmt.f900000644002504400250440000000517612337331323017147 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: zpotclmt ! !INTERFACE: subroutine zpotclmt(nr,nri,r,zrhomt,zvclmt) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! nr : number of radial mesh points (in,integer) ! nri : number of points on inner part of muffin-tin (in,integer) ! r : radial mesh (in,real(nr)) ! zrhomt : muffin-tin charge density (in,complex(lmmaxvr,nr)) ! zvclmt : muffin-tin Coulomb potential (out,complex(lmmaxvr,nr)) ! !DESCRIPTION: ! Solves the Poisson equation for the charge density contained in an isolated ! muffin-tin using the Green's function approach. In other words, the ! spherical harmonic expansion of the Coulomb potential, $V_{lm}$, is obtained ! from the density expansion, $\rho_{lm}$, by ! $$ V_{lm}(r)=\frac{4\pi}{2l+1}\left(\frac{1}{r^{l+1}}\int_0^r\rho_{lm}(r') ! {r'}^{l+2}dr'+r^l\int_r^R\frac{\rho_{lm}(r')}{{r'}^{l-1}}dr'\right) $$ ! where $R$ is the muffin-tin radius. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: nr,nri real(8), intent(in) :: r(nr) complex(8), intent(in) :: zrhomt(lmmaxvr,nr) complex(8), intent(out) :: zvclmt(lmmaxvr,nr) ! local variables integer nr0,ir0,ir integer l,m,lm real(8) t1,t2,t3,t4 ! automatic arrays real(8) ri(nr),rl1(nr),rl2(nr),rl3(nr),rl4(nr) real(8) fr1(nr),fr2(nr),fr3(nr),fr4(nr),fr5(nr) ! initialise r^l, r^(-l-1), r^(l+2) and r^(-l+1) do ir=1,nr ri(ir)=1.d0/r(ir) rl1(ir)=1.d0 rl2(ir)=ri(ir) t1=fourpi*r(ir) rl3(ir)=t1*r(ir) rl4(ir)=t1 end do lm=0 do l=0,lmaxvr if (l.le.lmaxinr) then nr0=nr ir0=1 else nr0=nr-nri ir0=nri+1 end if do m=-l,l lm=lm+1 do ir=ir0,nr t1=dble(zrhomt(lm,ir)) t2=aimag(zrhomt(lm,ir)) fr1(ir)=t1*rl3(ir) fr2(ir)=t2*rl3(ir) fr3(ir)=t1*rl4(ir) fr4(ir)=t2*rl4(ir) end do call fderiv(-1,nr0,r(ir0),fr1(ir0),fr5(ir0)) call fderiv(-1,nr0,r(ir0),fr2(ir0),fr1(ir0)) call fderiv(-1,nr0,r(ir0),fr3(ir0),fr2(ir0)) call fderiv(-1,nr0,r(ir0),fr4(ir0),fr3(ir0)) t1=fr2(nr) t2=fr3(nr) do ir=ir0,nr t3=rl2(ir)*fr5(ir)+rl1(ir)*(t1-fr2(ir)) t4=rl2(ir)*fr1(ir)+rl1(ir)*(t2-fr3(ir)) zvclmt(lm,ir)=cmplx(t3,t4,8) end do end do if (l.lt.lmaxvr) then t1=fourpi/dble(2*(l+1)+1) do ir=ir0,nr rl1(ir)=rl1(ir)*r(ir) rl2(ir)=rl2(ir)*ri(ir) t2=t1*r(ir)**2 rl3(ir)=rl1(ir)*t2 rl4(ir)=rl2(ir)*t2 end do end if end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/potplot.f900000644002504400250440000000005012337331323016217 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/potplot.f900000644002504400250440000000410512337331323016763 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: potplot ! !INTERFACE: subroutine potplot ! !USES: use modmain ! !DESCRIPTION: ! Outputs the exchange, correlation and Coulomb potentials, read in from ! {\tt STATE.OUT}, for 1D, 2D or 3D plotting. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! initialise universal variables call init0 ! read the density and potentials from file call readstate ! write the potential plots to file select case(task) case(41) open(50,file='VCL1D.OUT',action='WRITE',form='FORMATTED') open(51,file='VLINES.OUT',action='WRITE',form='FORMATTED') call plot1d(50,51,1,vclmt,vclir) close(50) close(51) open(50,file='VXC1D.OUT',action='WRITE',form='FORMATTED') open(51,file='VLINES.OUT',action='WRITE',form='FORMATTED') call plot1d(50,51,1,vxcmt,vxcir) close(50) close(51) write(*,*) write(*,'("Info(potplot):")') write(*,'(" 1D Coulomb potential plot written to VCL1D.OUT")') write(*,'(" 1D exchange-correlation potential plot written to VXC1D.OUT")') write(*,'(" vertex location lines written to VLINES.OUT")') case(42) open(50,file='VCL2D.OUT',action='WRITE',form='FORMATTED') call plot2d(50,1,vclmt,vclir) close(50) open(50,file='VXC2D.OUT',action='WRITE',form='FORMATTED') call plot2d(50,1,vxcmt,vxcir) close(50) write(*,*) write(*,'("Info(potplot):")') write(*,'(" 2D Coulomb potential plot written to VCL2D.OUT")') write(*,'(" 2D exchange-correlation potential plot written to VXC2D.OUT")') case(43) open(50,file='VCL3D.OUT',action='WRITE',form='FORMATTED') call plot3d(50,1,vclmt,vclir) close(50) open(50,file='VXC3D.OUT',action='WRITE',form='FORMATTED') call plot3d(50,1,vxcmt,vxcir) close(50) write(*,*) write(*,'("Info(potplot):")') write(*,'(" 3D Coulomb potential plot written to VCL3D.OUT")') write(*,'(" 3D exchange-correlation potential plot written to VXC3D.OUT")') end select return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/mixadapt.f900000644002504400250440000000005012337331323016325 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mixadapt.f900000644002504400250440000000506012337331323017072 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: mixadapt ! !INTERFACE: subroutine mixadapt(iscl,beta0,betamax,n,nu,mu,beta,f,d) ! !INPUT/OUTPUT PARAMETERS: ! iscl : self-consistent loop number (in,integer) ! beta0 : mixing parameter (in,real) ! betamax : maximum mixing parameter (in,real) ! n : vector length (in,integer) ! nu : current output vector as well as the next input vector of the ! self-consistent loop (inout,real(n)) ! mu : used internally (inout,real(n)) ! beta : used internally (inout,real(n)) ! f : used internally (inout,real(n)) ! d : RMS difference between old and new output vectors (out,real) ! !DESCRIPTION: ! Given the input vector $\mu^i$ and output vector $\nu^i$ of the $i$th ! self-consistent loop, this routine generates the next input vector to the ! loop using an adaptive mixing scheme. The $j$th component of the output ! vector is mixed with a fraction of the same component of the input vector: ! $$ \mu^{i+1}_j=\beta^i_j\nu^i_j+(1-\beta^i_j)\mu^i_j, $$ ! where $\beta^{i+1}_j=\beta^i_j+\beta_0$ if $f^i_j\equiv\nu^i_j-\mu^i_j$ does ! not change sign between loops. If $f^i_j$ does change sign, then ! $\beta^{i+1}_j=(\beta^i_j+\beta_0)/2$. Note that the array {\tt nu} serves ! for both input and output, and the arrays {\tt mu}, {\tt beta} and {\tt f} ! are used internally and should not be changed between calls. The routine is ! thread-safe so long as each thread has its own independent work arrays. ! Complex arrays may be passed as real arrays with $n$ doubled. ! ! !REVISION HISTORY: ! Created March 2003 (JKD) ! Modified, September 2008 (JKD) ! Modified, August 2011 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: iscl real(8), intent(in) :: beta0,betamax integer, intent(in) :: n real(8), intent(inout) :: nu(n),mu(n) real(8), intent(inout) :: beta(n),f(n) real(8), intent(out) :: d ! local variables integer i real(8) t1 if (n.le.0) return ! initialise mixer if (iscl.le.0) then call dcopy(n,nu,1,mu,1) f(:)=0.d0 beta(:)=beta0 d=1.d0 return end if d=0.d0 do i=1,n t1=nu(i)-mu(i) if (t1*f(i).ge.0.d0) then beta(i)=beta(i)+beta0 if (beta(i).gt.betamax) beta(i)=betamax else beta(i)=(beta(i)+beta0)*0.5d0 end if f(i)=t1 nu(i)=beta(i)*nu(i)+(1.d0-beta(i))*mu(i) d=d+t1**2 mu(i)=nu(i) end do d=sqrt(d/dble(n)) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writewiq2.f900000644002504400250440000000005012337331323016453 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writewiq2.f900000644002504400250440000000251612337331323017223 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writewiq2 ! !INTERFACE: subroutine writewiq2 ! !USES: use modmain ! !DESCRIPTION: ! Outputs the integrals of $1/q^2$ in the small parallelepiped around each ! $q$-point to the file {\tt WIQ2.OUT}. Note that the integrals are calculated ! after the $q$-point has been mapped to the first Brillouin zone. See routine ! genwiq2. ! ! !REVISION HISTORY: ! Created June 2005 (JKD) !EOP !BOC implicit none ! local variables integer iq,i1,i2,i3 real(8) v0(3),v1(3),t1,t2 open(50,file='WIQ2'//trim(filext),action='WRITE',form='FORMATTED') write(50,'(I6," : nqpt; q-point, vql, wiq2 below")') nqpt do iq=1,nqpt ! map the q-vector into the first Brillouin zone t1=1.d5 v0(:)=0.d0 do i1=-1,1 do i2=-1,1 do i3=-1,1 v1(:)=vqc(:,iq)+dble(i1)*bvec(:,1)+dble(i2)*bvec(:,2) & +dble(i3)*bvec(:,3) t2=v1(1)**2+v1(2)**2+v1(3)**2 if (t2.lt.t1) then t1=t2 v0(1)=vql(1,iq)+dble(i1) v0(2)=vql(2,iq)+dble(i2) v0(3)=vql(3,iq)+dble(i3) end if end do end do end do write(50,'(I6,4G18.10)') iq,v0,wiq2(iq) end do close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/energynn.f900000644002504400250440000000005012337331323016343 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/energynn.f900000644002504400250440000000232612337331323017112 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine energynn use modmain implicit none ! local variables integer is,ia,ias,ir real(8) t1 complex(8) zrho0 ! automatic arrays real(8) vn(nrmtmax),vn0(nspecies) ! allocatable arrays complex(8), allocatable :: zrhoir(:),zvclmt(:,:,:),zvclir(:) allocate(zrhoir(ngtot)) allocate(zvclmt(lmmaxvr,nrmtmax,natmtot)) allocate(zvclir(ngtot)) ! set the density to zero zrhoir(:)=0.d0 ! generate the nuclear monopole potentials t1=1.d0/y00 do is=1,nspecies call potnucl(ptnucl,nrmt(is),spr(:,is),spzn(is),vn) vn0(is)=vn(1) do ia=1,natoms(is) ias=idxas(ia,is) do ir=1,nrmt(is) zvclmt(1,ir,ias)=t1*vn(ir) zvclmt(2:,ir,ias)=0.d0 end do end do end do ! solve the complex Poisson's equation call zpotcoul(nrmt,nrmtinr,spnrmax,spr,1,gc,jlgr,ylmg,sfacg,zrhoir,nrmtmax, & zvclmt,zvclir,zrho0) ! compute the nuclear-nuclear energy engynn=0.d0 do ias=1,natmtot is=idxis(ias) t1=dble(zvclmt(1,1,ias))*y00-vn0(is) engynn=engynn+spzn(is)*t1 end do engynn=0.5d0*engynn deallocate(zrhoir,zvclmt,zvclir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/c_pbe_gcor.f900000644002504400250440000000005012337331324016601 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/c_pbe_gcor.f900000644002504400250440000000117212337331324017346 0ustar00dewhurstdewhurst00000000000000 ! This routine is based on code written by K. Burke. subroutine c_pbe_gcor(a,a1,b1,b2,b3,b4,rtrs,gg,ggrs) implicit none ! arguments real(8), intent(in) :: a real(8), intent(in) :: a1 real(8), intent(in) :: b1 real(8), intent(in) :: b2 real(8), intent(in) :: b3 real(8), intent(in) :: b4 real(8), intent(in) :: rtrs real(8), intent(out) :: gg real(8), intent(out) :: ggrs ! local variables real(8) q0,q1,q2,q3 q0=-2.d0*a*(1.d0+a1*rtrs*rtrs) q1=2.d0*a*rtrs*(b1+rtrs*(b2+rtrs*(b3+b4*rtrs))) q2=log(1.d0+1.d0/q1) gg=q0*q2 q3=a*(b1/rtrs+2.d0*b2+rtrs*(3.d0*b3+4.d0*b4*rtrs)) ggrs=-2.d0*a*a1*q2-q0*q3/(q1*(1.d0+q1)) return end subroutine elk-2.3.22/src/PaxHeaders.22528/writepmat.f900000644002504400250440000000005012337331324016533 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writepmat.f900000644002504400250440000000607612337331324017310 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writepmat ! !INTERFACE: subroutine writepmat ! !USES: use modmain use modmpi ! !DESCRIPTION: ! Calculates the momentum matrix elements using routine {\tt genpmat} and ! writes them to direct access file {\tt PMAT.OUT}. ! ! !REVISION HISTORY: ! Created November 2003 (Sharma) !EOP !BOC implicit none ! local variables integer ik,ist,ispn,recl ! allocatable arrays integer, allocatable :: idx(:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) complex(8), allocatable :: pmat(:,:,:) ! initialise universal variables call init0 call init1 ! read in the density and potentials from file call readstate ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! index to all states allocate(idx(nstsv)) do ist=1,nstsv idx(ist)=ist end do ! delete existing PMAT.OUT if (mp_mpi) then open(85,file='PMAT.OUT') close(85,status='DELETE') end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! determine the record length for PMAT.OUT allocate(pmat(3,nstsv,nstsv)) inquire(iolength=recl) vkl(:,1),nstsv,pmat deallocate(pmat) open(85,file='PMAT.OUT',action='WRITE',form='UNFORMATTED',access='DIRECT', & recl=recl) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evecfv,evecsv,apwalm,wfmt,wfir,pmat,ispn) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir(ngkmax,nspinor,nstsv)) allocate(pmat(3,nstsv,nstsv)) !$OMP CRITICAL write(*,'("Info(writepmat): ",I6," of ",I6," k-points")') ik,nkpt !$OMP END CRITICAL ! get the eigenvectors from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! calculate the wavefunctions for all states call genwfsv(.true.,.true.,nstsv,idx,ngk(:,ik),igkig(:,:,ik),apwalm,evecfv, & evecsv,wfmt,ngkmax,wfir) ! calculate the momentum matrix elements call genpmat(ngk(:,ik),igkig(:,:,ik),vgkc(:,:,:,ik),wfmt,wfir,pmat) ! write the matrix elements to direct-access file !$OMP CRITICAL write(85,rec=ik) vkl(:,ik),nstsv,pmat !$OMP END CRITICAL deallocate(evecfv,evecsv,apwalm,wfmt,wfir,pmat) end do !$OMP END DO !$OMP END PARALLEL close(85) ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) if (mp_mpi) then write(*,*) write(*,'("Info(writepmat):")') write(*,'(" momentum matrix elements written to file PMAT.OUT")') end if deallocate(idx) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hmldbsek.f900000644002504400250440000000005012337331324016310 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hmldbsek.f900000644002504400250440000001334712337331324017064 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hmldbsek(ik2) use modmain implicit none ! arguments integer, intent(in) :: ik2 ! local variables integer ik1,iv(3),iq,igq0,ig,jg integer i1,i2,j1,j2,a1,a2,b1,b2 integer ist1,ist2,jst1,jst2 real(8) vl(3),vc(3),t0,t1,t2 complex(8) zsum character(256) fname ! automatic arrays integer idx(nstsv) real(8) vcl(ngrf) ! allocatable arrays real(8), allocatable :: vgqc(:,:),gqc(:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: wfmt1(:,:,:,:,:),wfmt2(:,:,:,:,:) complex(8), allocatable :: wfir1(:,:,:),wfir2(:,:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zvv(:,:,:),zcc(:,:,:) complex(8), allocatable :: zvc(:,:,:),zcv(:,:,:) complex(8), allocatable :: epsinv(:,:,:) allocate(vgqc(3,ngvec),gqc(ngvec)) allocate(ylmgq(lmmaxvr,ngvec),sfacgq(ngvec,natmtot)) allocate(wfmt1(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfmt2(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir1(ngtot,nspinor,nstsv),wfir2(ngtot,nspinor,nstsv)) allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot),zrhoir(ngtot)) allocate(zvv(ngrf,nvbse,nvbse),zcc(ngrf,ncbse,ncbse)) allocate(epsinv(ngrf,ngrf,nwrf)) if (bsefull) then allocate(zvc(ngrf,nvbse,ncbse)) allocate(zcv(ngrf,ncbse,nvbse)) end if ! index to all states do ist1=1,nstsv idx(ist1)=ist1 end do ! generate the wavefunctions for all states of k-point ik2 call genwfsvp(.false.,.false.,nstsv,idx,vkl(:,ik2),wfmt2,ngtot,wfir2) ! filename for inverse dielectric function fname='EPSINV_RPA.OUT' ! begin loop over ik1 do ik1=1,nkptnr ! generate the wavefunctions for all states of k-point ik1 call genwfsvp(.false.,.false.,nstsv,idx,vkl(:,ik1),wfmt1,ngtot,wfir1) ! determine equivalent q-vector in first Brillouin zone iv(:)=ivk(:,ik1)-ivk(:,ik2) iv(:)=modulo(iv(:),ngridk(:)) iq=iqmap(iv(1),iv(2),iv(3)) ! q-vector in lattice and Cartesian coordinates vl(:)=vkl(:,ik1)-vkl(:,ik2) vc(:)=vkc(:,ik1)-vkc(:,ik2) ! generate the G+q-vectors and related quantities call gengqrf(vc,igq0,vgqc,gqc,ylmgq,sfacgq) ! compute the regularised Coulomb interaction do ig=1,ngrf if (ig.eq.igq0) then ! volume of small parallelepiped around q-point (see genwiq2) t2=omegabz*wkptnr ! average symmetrised interaction over volume vcl(ig)=sqrt(fourpi*wiq2(iq)/t2) else ! G+q-vector is outside FBZ so use symmetrised 4 pi/(G+q)^2 interaction vcl(ig)=sqrt(fourpi)/gqc(ig) end if end do ! compute the matrix elements !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(ist1,ist2,i2) !$OMP DO do i1=1,nvbse ist1=istbse(i1,ik1) do i2=1,nvbse ist2=istbse(i2,ik2) call genzrho(.true.,.true.,wfmt2(:,:,:,:,ist2),wfir2(:,:,ist2), & wfmt1(:,:,:,:,ist1),wfir1(:,:,ist1),zrhomt,zrhoir) call zftzf(ngrf,gqc,ylmgq,ngrf,sfacgq,zrhomt,zrhoir,zvv(:,i1,i2)) end do end do !$OMP END DO !$OMP END PARALLEL ! compute the matrix elements !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(jst1,jst2,j2) !$OMP DO do j1=1,ncbse jst1=jstbse(j1,ik1) do j2=1,ncbse jst2=jstbse(j2,ik2) call genzrho(.true.,.true.,wfmt2(:,:,:,:,jst2),wfir2(:,:,jst2), & wfmt1(:,:,:,:,jst1),wfir1(:,:,jst1),zrhomt,zrhoir) call zftzf(ngrf,gqc,ylmgq,ngrf,sfacgq,zrhomt,zrhoir,zcc(:,j1,j2)) end do end do !$OMP END DO !$OMP END PARALLEL ! matrix elements for full BSE kernel if required if (bsefull) then ! compute the matrix elements !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(ist1,jst2,j2) !$OMP DO do i1=1,nvbse ist1=istbse(i1,ik1) do j2=1,ncbse jst2=jstbse(j2,ik2) call genzrho(.true.,.true.,wfmt2(:,:,:,:,jst2),wfir2(:,:,jst2), & wfmt1(:,:,:,:,ist1),wfir1(:,:,ist1),zrhomt,zrhoir) call zftzf(ngrf,gqc,ylmgq,ngrf,sfacgq,zrhomt,zrhoir,zvc(:,i1,j2)) end do end do !$OMP END DO !$OMP END PARALLEL ! compute the matrix elements !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(jst1,ist2,i2) !$OMP DO do j1=1,ncbse jst1=jstbse(j1,ik1) do i2=1,nvbse ist2=istbse(i2,ik2) call genzrho(.true.,.true.,wfmt2(:,:,:,:,ist2),wfir2(:,:,ist2), & wfmt1(:,:,:,:,jst1),wfir1(:,:,jst1),zrhomt,zrhoir) call zftzf(ngrf,gqc,ylmgq,ngrf,sfacgq,zrhomt,zrhoir,zcv(:,j1,i2)) end do end do !$OMP END DO !$OMP END PARALLEL end if ! get RPA inverse epsilon from file call getcf2pt(fname,vl,ngrf,nwrf,epsinv) t0=wkptnr*omega do i1=1,nvbse do j1=1,ncbse a1=ijkbse(i1,j1,ik1) do i2=1,nvbse do j2=1,ncbse a2=ijkbse(i2,j2,ik2) zsum=0.d0 do ig=1,ngrf t1=t0*vcl(ig) do jg=1,ngrf t2=t1*vcl(jg) zsum=zsum+t2*epsinv(ig,jg,1)*conjg(zcc(ig,j1,j2))*zvv(jg,i1,i2) end do end do hmlbse(a1,a2)=hmlbse(a1,a2)-zsum ! compute off-diagonal blocks if required if (bsefull) then b1=a1+nbbse b2=a2+nbbse hmlbse(b1,b2)=hmlbse(b1,b2)+conjg(zsum) zsum=0.d0 do ig=1,ngrf t1=t0*vcl(ig) do jg=1,ngrf t2=t1*vcl(jg) zsum=zsum+t2*epsinv(ig,jg,1)*conjg(zcv(ig,j1,i2))*zvc(jg,i1,j2) end do end do hmlbse(a1,b2)=hmlbse(a1,b2)-zsum hmlbse(b1,a2)=hmlbse(b1,a2)+conjg(zsum) end if ! end loop over i2 and j2 end do end do ! end loop over i1 and j1 end do end do ! end loop over ik1 end do deallocate(vgqc,gqc,ylmgq,sfacgq) deallocate(wfmt1,wfmt2,wfir1,wfir2) deallocate(zrhomt,zrhoir,zvv,zcc,epsinv) if (bsefull) deallocate(zvc,zcv) return end subroutine elk-2.3.22/src/PaxHeaders.22528/symdmat.f900000644002504400250440000000005012337331323016174 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/symdmat.f900000644002504400250440000000347412337331323016750 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine symdmat(lmax,ld,dmat) use modmain implicit none ! arguments integer, intent(in) :: lmax integer, intent(in) :: ld complex(8), intent(inout) :: dmat(ld,nspinor,ld,nspinor,natmtot) ! local variables integer isym,lspl,lspn,lmmax integer is,ia,ja,ias,jas real(8) t1 ! automatic arrays logical done(natmmax) ! allocatable arrays complex(8), allocatable :: dm(:,:,:,:,:) lmmax=(lmax+1)**2 ! allocate local arrays allocate(dm(ld,nspinor,ld,nspinor,natmmax)) t1=1.d0/dble(nsymcrys) do is=1,nspecies ! make copy of the density matrices do ia=1,natoms(is) ias=idxas(ia,is) dm(1:lmmax,:,1:lmmax,:,ia)=dmat(1:lmmax,:,1:lmmax,:,ias) end do done(:)=.false. do ia=1,natoms(is) if (done(ia)) cycle ias=idxas(ia,is) dmat(:,:,:,:,ias)=0.d0 do isym=1,nsymcrys lspl=lsplsymc(isym) lspn=lspnsymc(isym) ! equivalent atom index (symmetry rotates atom ja into atom ia) ja=ieqatom(ia,is,isym) call rotdmat(symlatc(:,:,lspl),symlatc(:,:,lspn),lmax,nspinor,ld, & dm(:,:,:,:,ja),dmat(:,:,:,:,ias)) ! end loop over crystal symmetries end do ! normalise dmat(:,:,:,:,ias)=t1*dmat(:,:,:,:,ias) done(ia)=.true. ! rotate into equivalent atoms do isym=1,nsymcrys ja=ieqatom(ia,is,isym) if (.not.done(ja)) then jas=idxas(ja,is) lspl=lsplsymc(isym) lspn=lspnsymc(isym) dmat(:,:,:,:,jas)=0.d0 call rotdmat(symlatc(:,:,lspl),symlatc(:,:,lspn),lmax,nspinor,ld, & dmat(:,:,:,:,ias),dmat(:,:,:,:,jas)) done(ja)=.true. end if end do ! end loop over atoms and species end do end do deallocate(dm) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dolpistl.f900000644002504400250440000000005012337331324016351 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dolpistl.f900000644002504400250440000000122112337331324017111 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dolpistl(ngp,ngpq,igpig,igpqig,ld,od) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ngp,ngpq integer, intent(in) :: igpig(ngkmax),igpqig(ngkmax) integer, intent(in) :: ld complex(8), intent(inout) :: od(ld,*) ! local variables integer iv(3),jv(3),i,j do j=1,ngp jv(:)=ivg(:,igpig(j)) do i=1,ngpq iv(:)=ivg(:,igpqig(i))-jv(:) od(i,j)=od(i,j)+dcfunig(ivgig(iv(1),iv(2),iv(3))) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/readfermi.f900000644002504400250440000000005012337331323016454 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/readfermi.f900000644002504400250440000000162012337331323017217 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: readfermi ! !INTERFACE: subroutine readfermi ! !USES: use modmain ! !DESCRIPTION: ! Reads the Fermi energy from the file {\tt EFERMI.OUT}. ! ! !REVISION HISTORY: ! Created March 2005 (JKD) !EOP !BOC implicit none ! local variables integer iostat open(50,file='EFERMI'//trim(filext),action='READ',form='FORMATTED', & status='OLD',iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(readfermi): error opening ",A)') 'EFERMI'//trim(filext) write(*,*) stop end if read(50,*,iostat=iostat) efermi if (iostat.ne.0) then write(*,*) write(*,'("Error(readfermi): error reading Fermi energy from EFERMI.OUT")') write(*,*) stop end if close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/nonlinopt.f900000644002504400250440000000005012337331323016536 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/nonlinopt.f900000644002504400250440000002067412337331323017313 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: nonlinopt ! !INTERFACE: subroutine nonlinopt ! !USES: use modmain ! !DESCRIPTION: ! Calculates susceptibility tensor for non-linear optical second-harmonic ! generation (SHG). The terms (ztm) are numbered according to Eqs. (49)-(51) ! of the article {\it Physica Scripta} {\bf T109}, 128 (2004). Other good ! references are {\it Phys. Rev. B} {\bf 48}, 11705 (1993) and ! {\it Phys. Rev. B} {\bf 53}, 10751 (1996). ! ! !REVISION HISTORY: ! Rewrote earlier version, June 2010 (Sharma) !EOP !BOC implicit none ! local variables integer ik,jk,ist,jst,kst integer iw,a,b,c,l ! smallest eigenvalue difference allowed in denominator real(8), parameter :: etol=1.d-4 real(8) eji,eki,ekj,t1 complex(8) pii(3),dji(3),vji(3),vik(3),vkj(3) complex(8) eta,ztm(3,3),z1 character(256) fname ! allocatable arrays real(8), allocatable :: w(:) complex(8), allocatable :: pmat(:,:,:) complex(8), allocatable :: chiw(:,:),chi2w(:,:) ! initialise universal variables call init0 call init1 ! read Fermi energy from file call readfermi ! get the eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! generate energy grid (starting from zero) allocate(w(nwplot)) t1=wplot(2)/dble(nwplot) do iw=1,nwplot w(iw)=t1*dble(iw-1) end do ! allocate response function arrays allocate(chiw(nwplot,3)) allocate(chi2w(nwplot,2)) ! i divided by the complex relaxation time eta=cmplx(0.d0,swidth,8) ! begin loop over components do l=1,noptcomp a=optcomp(1,l) b=optcomp(2,l) c=optcomp(3,l) chiw(:,:)=0.d0 chi2w(:,:)=0.d0 ! parallel loop over non-reduced k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(pmat,jk,ist,jst,kst) & !$OMP PRIVATE(eji,eki,ekj,t1,z1) & !$OMP PRIVATE(pii,dji,vji,vik,vkj,ztm) !$OMP DO do ik=1,nkptnr allocate(pmat(3,nstsv,nstsv)) write(*,'("Info(nonlinopt): ",I6," of ",I6," k-points")') ik,nkptnr ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! read momentum matrix elements from file call getpmat(vkl(:,ik),pmat) ! scissor correct the matrix elements do ist=1,nstsv if (evalsv(ist,jk).lt.efermi) then do jst=1,nstsv if (evalsv(jst,jk).gt.efermi) then eji=evalsv(jst,jk)-evalsv(ist,jk) t1=(eji+scissor)/eji pmat(:,ist,jst)=t1*pmat(:,ist,jst) end if end do end if end do z1=(wkptnr*occmax/omega)*zi ! loop over valence states do ist=1,nstsv if (evalsv(ist,jk).lt.efermi) then pii(:)=pmat(:,ist,ist) ! loop over conduction states do jst=1,nstsv if (evalsv(jst,jk).gt.efermi) then eji=evalsv(jst,jk)-evalsv(ist,jk)+scissor vji(:)=pmat(:,jst,ist) dji(:)=pmat(:,jst,jst)-pii(:) ! loop over intermediate states do kst=1,nstsv if ((kst.ne.ist).and.(kst.ne.jst)) then eki=evalsv(kst,jk)-evalsv(ist,jk) ekj=evalsv(kst,jk)-evalsv(jst,jk) if (evalsv(kst,jk).gt.efermi) then eki=eki+scissor else ekj=ekj-scissor end if ! rotate the matrix elements from the reduced to non-reduced k-point vkj(:)=pmat(:,kst,jst) vik(:)=pmat(:,ist,kst) ! interband terms t1=-eji*eki*(-ekj)*(eki+ekj) if (abs(t1).gt.etol) then t1=1.d0/t1 else t1=t1/etol**2 end if ztm(1,1)=z1*conjg(vji(a))*(conjg(vkj(b))*conjg(vik(c)) & +conjg(vik(b))*conjg(vkj(c)))*t1 t1=eji*(-eki)*ekj*(-eki-eji) if (abs(t1).gt.etol) then t1=1.d0/t1 else t1=t1/etol**2 end if ztm(1,2)=0.5d0*z1*vkj(c)*(vji(a)*vik(b)+vik(a)*vji(b))*t1 t1=eji*(-eki)*ekj*(ekj-eji) if (abs(t1).gt.etol) then t1=1.d0/t1 else t1=t1/etol**2 end if ztm(1,3)=0.5d0*z1*vik(b)*(vkj(c)*vji(a)+vji(c)*vkj(a))*t1 ! intraband terms t1=(-eki)*ekj*eji**3 if (abs(t1).gt.etol) then t1=1.d0/t1 else t1=t1/etol**2 end if ztm(2,1)=0.5d0*z1*(eki*vik(b)*(vkj(c)*vji(a)+vji(c)*vkj(a)) & +ekj*vkj(c)*(vji(a)*vik(b)+vik(a)*vji(b)))*t1 t1=(eki*(-ekj)*eji**3)/(ekj+eki) if (abs(t1).gt.etol) then t1=1.d0/t1 else t1=t1/etol**2 end if ztm(2,3)=z1*conjg(vji(a))*(conjg(vkj(b))*conjg(vik(c)) & +conjg(vik(b))*conjg(vkj(c)))*t1 ! modulation terms t1=ekj*(-eki)*eji**3 if (abs(t1).gt.etol) then t1=1.d0/t1 else t1=t1/etol**2 end if ztm(3,1)=-0.5d0*z1*eki*vkj(a)*(vji(b)*vik(c)+vik(b)*vji(c))*t1 t1=ekj*(-eki)*eji**3 if (abs(t1).gt.etol) then t1=1.d0/t1 else t1=t1/etol**2 end if ztm(3,2)=0.5d0*z1*ekj*vik(a)*(vkj(b)*vji(c)+vji(b)*vkj(c))*t1 !$OMP CRITICAL do iw=1,nwplot ! 2w interband chi2w(iw,1)=chi2w(iw,1)+ztm(1,1)/(eji-2.d0*w(iw)+eta) ! 2w intraband chi2w(iw,2)=chi2w(iw,2)+ztm(2,3)/(eji-2.d0*w(iw)+eta) ! w interband chiw(iw,1)=chiw(iw,1)-(ztm(1,2)-ztm(1,3))/(eji-w(iw)+eta) ! w intraband chiw(iw,2)=chiw(iw,2)+ztm(2,1)/(eji-w(iw)+eta) ! w modulation chiw(iw,3)=chiw(iw,3)+0.5d0*(ztm(3,1)-ztm(3,2)) & /(eji-w(iw)+eta) end do !$OMP END CRITICAL end if ! end loop over kst end do ztm(2,2)=4.d0*z1*conjg(vji(a))*(dji(b)*vji(c)+vji(b)*dji(c))/eji**4 ztm(3,3)=0.5d0*z1*vji(a)*(vji(b)*dji(c)+dji(b)*vji(c))/eji**4 !$OMP CRITICAL do iw=1,nwplot ! 2w intraband chi2w(iw,2)=chi2w(iw,2)+ztm(2,2)/(eji-2.d0*w(iw)+eta) ! w modulation chiw(iw,3)=chiw(iw,3)+0.5d0*ztm(3,3)/(eji-w(iw)+eta) end do !$OMP END CRITICAL ! end loop over jst end if end do ! end loop over ist end if end do deallocate(pmat) ! end loop over k-points end do !$OMP END DO !$OMP END PARALLEL ! write to files write(fname,'("CHI_INTER2w_",3I1,".OUT")') a,b,c open(51,file=trim(fname),action='WRITE',form='FORMATTED') write(fname,'("CHI_INTRA2w_",3I1,".OUT")') a,b,c open(52,file=trim(fname),action='WRITE',form='FORMATTED') write(fname,'("CHI_INTERw_",3I1,".OUT")') a,b,c open(53,file=trim(fname),action='WRITE',form='FORMATTED') write(fname,'("CHI_INTRAw_",3I1,".OUT")') a,b,c open(54,file=trim(fname),action='WRITE',form='FORMATTED') write(fname,'("CHI_",3I1,".OUT")') a,b,c open(55,file=trim(fname),action='WRITE',form='FORMATTED') do iw=1,nwplot write(51,'(2G18.10)') w(iw),dble(chi2w(iw,1)) write(52,'(2G18.10)') w(iw),dble(chi2w(iw,2)) write(53,'(2G18.10)') w(iw),dble(chiw(iw,1)) write(54,'(2G18.10)') w(iw),dble(chiw(iw,2)) t1=dble(chi2w(iw,1)+chi2w(iw,2)+chiw(iw,1)+chiw(iw,2)+chiw(iw,3)) write(55,'(2G18.10)') w(iw),t1 end do write(51,'(" ")') write(52,'(" ")') write(53,'(" ")') write(54,'(" ")') write(55,'(" ")') do iw=1,nwplot write(51,'(2G18.10)') w(iw),aimag(chi2w(iw,1)) write(52,'(2G18.10)') w(iw),aimag(chi2w(iw,2)) write(53,'(2G18.10)') w(iw),aimag(chiw(iw,1)) write(54,'(2G18.10)') w(iw),aimag(chiw(iw,2)) t1=aimag(chi2w(iw,1)+chi2w(iw,2)+chiw(iw,1)+chiw(iw,2)+chiw(iw,3)) write(55,'(2G18.10)') w(iw),t1 end do close(51); close(52); close(53); close(54); close(55) ! end loop over components end do write(*,*) write(*,'("Info(nonlinopt):")') write(*,'(" susceptibility tensor written to CHI_abc.OUT")') write(*,'(" interband contributions written to CHI_INTERx_abc.OUT")') write(*,'(" intraband contributions written to CHI_INTRAx_abc.OUT")') write(*,'(" for components")') do l=1,noptcomp write(*,'(" a = ",I1,", b = ",I1,", c = ",I1)') optcomp(1:3,l) end do deallocate(w,chiw,chi2w) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genvclijjk.f900000644002504400250440000000005012337331324016645 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvclijjk.f900000644002504400250440000001243712337331324017420 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genvclijjk ! !INTERFACE: subroutine genvclijjk(ikp,vclijjk) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ikp : k-point from non-reduced set (in,integer) ! vclijjk : Coulomb matrix elements (out,complex(nstsv,nstsv,nstsv,nkpt)) ! !DESCRIPTION: ! Calculates Coulomb matrix elements of the type $(i-jj-k)$. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! arguments integer, intent(in) :: ikp complex(8), intent(out) :: vclijjk(nstsv,nstsv,nstsv,nkpt) ! local variables integer ik,iv(3) integer ig,iq,igq0 integer ist1,ist2,ist3 real(8) cfq,v(3),t1 complex(8) zrho01,zrho02,z1,z2 complex(8) sfacgq0(natmtot) ! automatic arrays integer idx(nstsv) ! allocatable arrays real(8), allocatable :: vgqc(:,:),tpgqc(:,:),gqc(:) real(8), allocatable :: jlgqr(:,:,:),jlgq0r(:,:,:) complex(8), allocatable :: apwalm(:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: wfmt1(:,:,:,:,:),wfmt2(:,:,:,:,:) complex(8), allocatable :: wfir1(:,:,:),wfir2(:,:,:) complex(8), allocatable :: zrhomt(:,:,:,:),zrhoir(:,:) complex(8), allocatable :: zvclmt(:,:,:),zvclir(:) ! external functions complex(8) zfinp external zfinp ! allocate local arrays allocate(vgqc(3,ngvec),tpgqc(2,ngvec),gqc(ngvec)) allocate(jlgqr(0:lnpsd,ngvec,nspecies),jlgq0r(0:lmaxvr,nrcmtmax,nspecies)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(ylmgq(lmmaxvr,ngvec),sfacgq(ngvec,natmtot)) allocate(wfmt1(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfmt2(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir1(ngtot,nspinor,nstsv),wfir2(ngtot,nspinor,nstsv)) allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot,nstsv),zrhoir(ngtot,nstsv)) allocate(zvclmt(lmmaxvr,nrcmtmax,natmtot),zvclir(ngtot)) ! factor for long-range term cfq=0.5d0*(omega/pi)**2 ! get the eigenvectors from file for non-reduced k-point ikp call getevecfv(vkl(:,ikp),vgkl(:,:,1,ikp),evecfv) call getevecsv(vkl(:,ikp),evecsv) ! find the matching coefficients call match(ngk(1,ikp),gkc(:,1,ikp),tpgkc(:,:,1,ikp),sfacgk(:,:,1,ikp),apwalm) ! index to all states do ist1=1,nstsv idx(ist1)=ist1 end do ! calculate the wavefunctions for all states of passed non-reduced k-point ikp call genwfsv(.false.,.false.,nstsv,idx,ngk(1,ikp),igkig(:,1,ikp),apwalm, & evecfv,evecsv,wfmt2,ngtot,wfir2) ! start loop over reduced k-point set do ik=1,nkpt ! get the eigenvectors from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! find the matching coefficients call match(ngk(1,ik),gkc(:,1,ik),tpgkc(:,:,1,ik),sfacgk(:,:,1,ik),apwalm) ! calculate the wavefunctions for all states of the reduced k-point call genwfsv(.false.,.false.,nstsv,idx,ngk(1,ik),igkig(:,1,ik),apwalm, & evecfv,evecsv,wfmt1,ngtot,wfir1) ! determine q-vector iv(:)=ivk(:,ik)-ivk(:,ikp) iv(:)=modulo(iv(:),ngridk(:)) iq=iqmap(iv(1),iv(2),iv(3)) v(:)=vkc(:,ik)-vkc(:,ikp) do ig=1,ngvec ! determine G+q-vectors vgqc(:,ig)=vgc(:,ig)+v(:) ! G+q-vector length and (theta, phi) coordinates call sphcrd(vgqc(:,ig),gqc(ig),tpgqc(:,ig)) ! spherical harmonics for G+q-vectors call genylm(lmaxvr,tpgqc(:,ig),ylmgq(:,ig)) end do ! structure factors for G+q call gensfacgp(ngvec,vgqc,ngvec,sfacgq) ! find the shortest G+q-vector call findigp0(ngvec,gqc,igq0) sfacgq0(:)=sfacgq(igq0,:) ! compute the required spherical Bessel functions call genjlgpr(lnpsd,gqc,jlgqr) call genjlgq0r(gqc(igq0),jlgq0r) !----------------------------------------------! ! valence-valence-valence contribution ! !----------------------------------------------! do ist2=1,nstsv do ist1=1,nstsv ! calculate the complex overlap density for all states call genzrho(.true.,.true.,wfmt2(:,:,:,:,ist2),wfir2(:,:,ist2), & wfmt1(:,:,:,:,ist1),wfir1(:,:,ist1),zrhomt(:,:,:,ist1),zrhoir(:,ist1)) end do do ist1=1,nstsv ! compute the potential and G=0 coefficient of the density call genzvclmt(nrcmt,nrcmtinr,nrcmtmax,rcmt,nrcmtmax,zrhomt(:,:,:,ist1), & zvclmt) call zpotcoul(nrcmt,nrcmtinr,nrcmtmax,rcmt,igq0,gqc,jlgqr,ylmgq,sfacgq, & zrhoir(:,ist1),nrcmtmax,zvclmt,zvclir,zrho02) z1=zfinp(.true.,zrhomt(:,:,:,ist1),zrhoir(:,ist1),zvclmt,zvclir) t1=cfq*wiq2(iq)*(dble(zrho02)**2+aimag(zrho02)**2) vclijjk(ist1,ist1,ist2,ik)=wkptnr*dble(z1)+t1 do ist3=ist1+1,nstsv z1=zfinp(.true.,zrhomt(:,:,:,ist3),zrhoir(:,ist3),zvclmt,zvclir) ! compute the density coefficient of the smallest G+q-vector call zrhogp(jlgq0r,ylmgq(:,igq0),sfacgq0,zrhomt(:,:,:,ist3), & zrhoir(:,ist3),zrho01) z2=cfq*wiq2(iq)*conjg(zrho01)*zrho02 vclijjk(ist3,ist1,ist2,ik)=wkptnr*z1+z2 end do end do end do ! calculate the lower diagonal do ist1=1,nstsv do ist3=1,ist1-1 vclijjk(ist3,ist1,:,ik)=conjg(vclijjk(ist1,ist3,:,ik)) end do end do ! end loop over reduced k-point set end do deallocate(vgqc,tpgqc,gqc,jlgqr,jlgq0r) deallocate(apwalm,evecfv,evecsv,ylmgq,sfacgq) deallocate(wfmt1,wfmt2,wfir1,wfir2) deallocate(zrhomt,zrhoir,zvclmt,zvclir) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genafieldt.f900000644002504400250440000000005012337331324016621 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genafieldt.f900000644002504400250440000001151212337331324017365 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 K. Krieger, J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genafieldt ! !INTERFACE: subroutine genafieldt ! !USES: use modmain use modtddft ! !DESCRIPTION: ! Generates a time-dependent vector potential, ${\bf A}(t)$, representing a ! laser pulse and stores it in {\tt AFIELDT.OUT}. The vector potential is ! contructed from a sum of sinusoidal waves, each modulated with a Gaussian ! envelope function: ! $$ {\bf A}(t)={\bf A}_0 ! \frac{e^{-(t-t_0)^2/2\sigma^2}}{\sigma\sqrt{2\pi}} ! \sin(\omega(t-t_0)+\phi). $$ ! Seven real numbers have to be specified for each pulse, namely the vector ! amplitude ${\bf A}_0$, peak time $t_0$, full-width at half-maximum ! $d=2\sqrt{2\ln 2}\sigma$, frequency $\omega$ and phase $\phi$. ! ! !REVISION HISTORY: ! Created May 2012 (K. Krieger) ! Modified, January 2014 (S. Sharma) ! Modified, February 2014 (JKD) !EOP !BOC implicit none ! local variables integer its,ip,i real(8) a0(3),t0,d,w,phi real(8) s,t,gs,ppd,apd,ed ! conversion factor of power density to W/cm^2 real(8), parameter :: cpd=ha_si/(t_si*(100.d0*br_si)**2) ! allocatable arrays real(8), allocatable :: f(:),g(:),pd(:) ! number of time steps ntimes=int(tstime/dtimes)+1 ! find the next largest number compatible with the FFT routine call nfftifc(ntimes) ! generate the time-step array if (allocated(times)) deallocate(times) allocate(times(ntimes)) do its=1,ntimes times(its)=dble(its-1)*dtimes end do open(50,file='PULSE.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("(All units are atomic unless otherwise specified)")') write(50,*) write(50,'("1 atomic unit of time is ",G18.10," attoseconds")') t_si*1.d18 write(50,*) write(50,'("Total simulation time : ",G18.10)') tstime write(50,'(" in attoseconds : ",G18.10)') tstime*t_si*1.d18 write(50,*) write(50,'("Time step length : ",G18.10)') dtimes write(50,'(" in attoseconds : ",G18.10)') dtimes*t_si*1.d18 write(50,*) write(50,'("Number of time steps : ",I10)') ntimes write(50,*) write(50,'("Number of laser pulses : ",I6)') npulse ! allocate and zero time-dependent A-field array if (allocated(afieldt)) deallocate(afieldt) allocate(afieldt(3,ntimes)) afieldt(:,:)=0.d0 ! loop over laser pulses do ip=1,npulse ! vector amplitude a0(1:3)=pulse(1:3,ip) ! peak time t0=pulse(4,ip) ! full-width at half-maximum d=pulse(5,ip) ! sigma s=d/(2.d0*sqrt(2.d0*log(2.d0))) ! scale the polarisation vector so that the Gaussian is normalised a0(:)=a0(:)/(s*sqrt(twopi)) ! frequency w=pulse(6,ip) ! phase phi=pulse(7,ip) ! write information to PULSE.OUT write(50,*) write(50,'("Pulse : ",I6)') ip write(50,'(" vector amplitude : ",3G18.10)') a0(:) write(50,'(" peak time : ",G18.10)') t0 write(50,'(" full-width at half-maximum : ",G18.10)') d write(50,'(" Gaussian sigma = FWHM/2*sqrt(2*ln 2) : ",G18.10)') s write(50,'(" laser frequency : ",G18.10)') w write(50,'(" in eV : ",G18.10)') w*ha_ev write(50,'(" laser wavelength (Angstroms) : ",G18.10)') 1.d10/(w*ha_im) write(50,'(" phase (degrees) : ",G18.10)') phi apd=sqrt(a0(1)**2+a0(2)**2+a0(3)**2) apd=(1.d0/(8.d0*pi*solsc))*(apd*w)**2 write(50,'(" average laser power density : ",G18.10)') apd write(50,'(" in W/cm^2 : ",G18.10)') apd*cpd ! loop over time steps do its=1,ntimes t=times(its) gs=exp(-0.5d0*((t-t0)/s)**2)*sin(w*(t-t0)+phi*pi/180.d0) afieldt(:,its)=afieldt(:,its)+a0(:)*gs end do end do ! allocate local arrays allocate(f(ntimes),g(ntimes),pd(ntimes)) ! compute the power density at each time step pd(:)=0.d0 do i=1,3 f(:)=afieldt(i,:) call fderiv(1,ntimes,times,f,g) pd(:)=pd(:)+g(:)**2 end do pd(:)=pd(:)/(fourpi*solsc) ! peak power density ppd=maxval(pd(:)) write(50,*) write(50,'("Peak power density : ",G18.10)') ppd write(50,'(" in W/cm^2 : ",G18.10)') ppd*cpd ! integrate to find the total energy density call fderiv(-1,ntimes,times,pd,g) ed=g(ntimes) write(50,*) write(50,'("Total energy density : ",G18.10)') ed write(50,'(" in J/cm^2 : ",G18.10)') ed*cpd*t_si close(50) ! write the vector potential to AFIELDT.OUT open(50,file='AFIELDT.OUT',action='WRITE',form='FORMATTED') write(50,'(I10," : number of time steps")') ntimes do its=1,ntimes write(50,'(4G18.10)') times(its),afieldt(:,its) end do close(50) ! write the power density to PDAFT.OUT open(50,file='PDAFT.OUT',action='WRITE',form='FORMATTED') do its=1,ntimes write(50,'(2G18.10)') times(its),pd(its) end do close(50) write(*,*) write(*,'("Info(genafieldt):")') write(*,'(" Time-dependent A-field written to AFIELDT.OUT")') write(*,'(" Power density of A-field written to PDAFT.OUT")') write(*,*) write(*,'(" Laser pulse parameters written to PULSE.OUT")') deallocate(times,afieldt) deallocate(f,g,pd) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/findkpt.f900000644002504400250440000000005012337331323016155 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findkpt.f900000644002504400250440000000210612337331323016720 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine findkpt(vpl,isym,ik) use modmain implicit none ! arguments real(8), intent(in) :: vpl(3) integer, intent(out) :: isym integer, intent(out) :: ik ! local variables integer ivp(3),lspl real(8) v1(3),v2(3),t1 v1(:)=vpl(:)-vkloff(:)/dble(ngridk(:)) ivp(:)=nint(v1(:)*ngridk(:)) ivp(:)=modulo(ivp(:),ngridk(:)) ik=ikmap(ivp(1),ivp(2),ivp(3)) v1(:)=vkl(:,ik) call r3frac(epslat,v1) ! find the symmetry which maps vpl to k-point ik do isym=1,nsymcrys lspl=lsplsymc(isym) ! multiply vpl by the transpose of the symmetry matrix v2(:)=symlat(1,:,lspl)*vpl(1) & +symlat(2,:,lspl)*vpl(2) & +symlat(3,:,lspl)*vpl(3) call r3frac(epslat,v2) t1=abs(v1(1)-v2(1))+abs(v1(2)-v2(2))+abs(v1(3)-v2(3)) if (t1.lt.epslat) return end do write(*,*) write(*,'("Error(findkpt): equivalent k-point not in set")') write(*,'(" Requested k-point : ",3G18.10)') vpl write(*,*) stop end subroutine elk-2.3.22/src/PaxHeaders.22528/rfmtsm.f900000644002504400250440000000005012337331323016026 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rfmtsm.f900000644002504400250440000000066512337331323016601 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine rfmtsm(m,lmmax,nr,ld,rfmt) implicit none ! arguments integer, intent(in) :: m,lmmax,nr,ld real(8), intent(inout) :: rfmt(ld,*) ! local variables integer lm do lm=1,lmmax call fsmooth(m,nr,ld,rfmt(lm,1)) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rschrodint.f900000644002504400250440000000005012337331323016675 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rschrodint.f900000644002504400250440000001161312337331323017443 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rschrodint ! !INTERFACE: subroutine rschrodint(sol,m,l,e,nr,r,vr,nn,p0p,p0,p1,q0,q1) ! !INPUT/OUTPUT PARAMETERS: ! sol : speed of light in atomic units (in,real) ! m : order of energy derivative (in,integer) ! l : angular momentum quantum number (in,integer) ! e : energy (in,real) ! nr : number of radial mesh points (in,integer) ! r : radial mesh (in,real(nr)) ! vr : potential on radial mesh (in,real(nr)) ! nn : number of nodes (out,integer) ! p0p : m-1 th energy derivative of P (in,real(nr)) ! p0 : m th energy derivative of P (out,real(nr)) ! p1 : radial derivative of p0 (out,real(nr)) ! q0 : m th energy derivative of Q (out,real(nr)) ! q1 : radial derivative of q0 (out,real(nr)) ! !DESCRIPTION: ! Integrates the $m$th energy derivative of the scalar relativistic radial ! Schr\"{o}dinger equation from $r=0$ outwards. This involves using the ! predictor-corrector method to solve the coupled first-order equations (in ! atomic units) ! \begin{align*} ! \frac{d}{dr}P^{(m)}_l&=2MQ^{(m)}_l+\frac{1}{r}P^{(m)}_l\\ ! \frac{d}{dr}Q^{(m)}_l&=-\frac{1}{r}Q^{(m)}_l+\left[\frac{l(l+1)}{2Mr^2} ! +(V-E)\right]P^{(m)}_l-mP^{(m-1)}_l, ! \end{align*} ! where $V$ is the external potential, $E$ is the eigenenergy and ! $M=1-V/2c^2$. Following the convention of Koelling and Harmon, {\it J. Phys. ! C: Solid State Phys.} {\bf 10}, 3107 (1977), the functions $P_l$ and $Q_l$ ! are defined by ! \begin{align*} ! P_l&=rg_l\\ ! Q_l&=\frac{r}{2M}\frac{dg_l}{dr}, ! \end{align*} ! where $g_l$ is the major component of the Dirac equation (see the routine ! {\tt rdiracint}). Note that in order to make the equations linear in energy, ! the full definition $M=1+(E-V)/2c^2$ is not used. If $m=0$ then the array ! {\tt p0p} is not referenced. ! ! !REVISION HISTORY: ! Created October 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: sol integer, intent(in) :: m integer, intent(in) :: l real(8), intent(in) :: e integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(in) :: vr(nr) integer, intent(out) :: nn real(8), intent(in) :: p0p(nr) real(8), intent(out) :: p0(nr),p1(nr) real(8), intent(out) :: q0(nr),q1(nr) ! local variables integer ir,ir0 real(8) ri,t1,t2,t3,t4 t1=1.d0/sol**2 t2=dble(l*(l+1)) ! determine the r -> 0 boundary values of P and Q ri=1.d0/r(1) t3=2.d0-t1*vr(1) t4=t2/(t3*r(1)**2)+vr(1)-e q0(1)=1.d0 q1(1)=0.d0 p0(1)=(q1(1)+q0(1)*ri)/t4 p1(1)=t3*q0(1)+p0(1)*ri if (m.ne.0) then q1(1)=q1(1)-dble(m)*p0p(1) end if ! extrapolate to the first four points p1(2:4)=p1(1) q1(2:4)=q1(1) nn=0 do ir=2,nr ri=1.d0/r(ir) t3=2.d0-t1*vr(ir) t4=t2/(t3*r(ir)**2)+vr(ir)-e ir0=ir-3 if (ir0.lt.1) ir0=1 p1(ir)=poly3(r(ir0),p1(ir0),r(ir)) q1(ir)=poly3(r(ir0),q1(ir0),r(ir)) ! integrate to find wavefunction p0(ir)=poly4i(r(ir0),p1(ir0),r(ir))+p0(ir0) q0(ir)=poly4i(r(ir0),q1(ir0),r(ir))+q0(ir0) ! compute the derivatives p1(ir)=t3*q0(ir)+p0(ir)*ri q1(ir)=t4*p0(ir)-q0(ir)*ri if (m.ne.0) then q1(ir)=q1(ir)-dble(m)*p0p(ir) end if ! integrate for correction p0(ir)=poly4i(r(ir0),p1(ir0),r(ir))+p0(ir0) q0(ir)=poly4i(r(ir0),q1(ir0),r(ir))+q0(ir0) ! compute the derivatives again p1(ir)=t3*q0(ir)+p0(ir)*ri q1(ir)=t4*p0(ir)-q0(ir)*ri if (m.ne.0) then q1(ir)=q1(ir)-dble(m)*p0p(ir) end if ! check for overflow if ((abs(p0(ir)).gt.1.d100).or.(abs(p1(ir)).gt.1.d100).or. & (abs(q0(ir)).gt.1.d100).or.(abs(q1(ir)).gt.1.d100)) then p0(ir:nr)=p0(ir) p1(ir:nr)=p1(ir) q0(ir:nr)=q0(ir) q1(ir:nr)=q1(ir) return end if ! check for node if (p0(ir-1)*p0(ir).lt.0.d0) nn=nn+1 end do return contains real(8) function poly3(xa,ya,x) implicit none ! arguments real(8) xa(3),ya(3),x ! local variables real(8) x0,x1,x2,y0,y1,y2 real(8) c1,c2,t0,t1,t2 ! evaluate the polynomial coefficients x0=xa(1) x1=xa(2)-x0 x2=xa(3)-x0 y0=ya(1) y1=ya(2)-y0 y2=ya(3)-y0 t0=1.d0/(x1*x2*(x2-x1)) t1=x1*y2 t2=x2*y1 c1=x2*t2-x1*t1 c2=t1-t2 t1=x-x0 ! evaluate the polynomial poly3=y0+t0*t1*(c1+c2*t1) return end function real(8) function poly4i(xa,ya,x) implicit none ! arguments real(8), intent(in) :: xa(4),ya(4),x ! local variables real(8) x0,x1,x2,x3,y0,y1,y2,y3 real(8) c1,c2,c3,t0,t1,t2,t3,t4,t5,t6 ! evaluate the polynomial coefficients x0=xa(1) x1=xa(2)-x0 x2=xa(3)-x0 x3=xa(4)-x0 y0=ya(1) y1=ya(2)-y0 y2=ya(3)-y0 y3=ya(4)-y0 t0=1.d0/(x1*x2*x3*(x1-x2)*(x1-x3)*(x2-x3)) t1=x1*x2*y3 t2=x2*x3*y1 t3=x3*x1*y2 c3=t1*(x1-x2)+t2*(x2-x3)+t3*(x3-x1) t6=x3**2 t5=x2**2 t4=x1**2 c2=t1*(t5-t4)+t2*(t6-t5)+t3*(t4-t6) c1=t1*(x2*t4-x1*t5)+t2*(x3*t5-x2*t6)+t3*(x1*t6-x3*t4) t1=x-x0 ! integrate the polynomial poly4i=t1*(y0+t0*t1*(0.5d0*c1+t1*(0.3333333333333333333d0*c2+0.25d0*c3*t1))) return end function end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writeforces.f900000644002504400250440000000005012337331323017052 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writeforces.f900000644002504400250440000000162412337331323017621 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2004-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writeforces(fnum) use modmain implicit none ! arguments integer, intent(in) :: fnum ! local variables integer is,ia,ias real(8) t1 write(fnum,*) write(fnum,'("Forces :")') do is=1,nspecies write(fnum,'(" species : ",I4," (",A,")")') is,trim(spsymb(is)) do ia=1,natoms(is) ias=idxas(ia,is) write(fnum,'(" atom : ",I4)') ia write(fnum,'(" Hellmann-Feynman",T30,": ",3F14.8)') forcehf(:,ias) write(fnum,'(" IBS",T30,": ",3F14.8)') forceibs(:,ias) write(fnum,'(" total force",T30,": ",3F14.8)') forcetot(:,ias) t1=sqrt(forcetot(1,ias)**2+forcetot(2,ias)**2+forcetot(3,ias)**2) write(fnum,'(" total magnitude",T30,": ",F14.8)') t1 end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rfarray.f900000644002504400250440000000005012337331324016165 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rfarray.f900000644002504400250440000000665312337331324016743 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine rfarray(np,vpl,rfmt,rfir,fp) use modmain implicit none ! arguments integer, intent(in) :: np real(8), intent(in) :: vpl(3,np) real(8), intent(in) :: rfmt(lmmaxvr,nrmtmax,natmtot) real(8), intent(in) :: rfir(ngtot) real(8), intent(out) :: fp(np) ! local variables integer ia,is,ias integer nr,nri,ir0,ir integer lmax,l,m,lm integer ig,ifg,ip integer i1,i2,i3,i,j real(8) rmt2,r,tp(2),sum,ya(4),t1,t2 real(8) v1(3),v2(3),v3(3),v4(3),v5(3) ! automatic arrays real(8) rlm(lmmaxvr) ! allocatable arrays complex(8), allocatable :: zfft(:) allocate(zfft(ngtot)) ! Fourier transform rfir to G-space zfft(:)=rfir(:) call zfftifc(3,ngridg,-1,zfft) ! begin loop over all points do ip=1,np v2(:)=vpl(:,ip) call r3frac(epslat,v2) ! convert point to Cartesian coordinates call r3mv(avec,v2,v1) ! check if point is in a muffin-tin do is=1,nspecies nr=nrmt(is) nri=nrmtinr(is) rmt2=rmt(is)**2 do ia=1,natoms(is) ias=idxas(ia,is) v2(:)=v1(:)-atposc(:,ia,is) do i1=-1,1 v3(:)=v2(:)+dble(i1)*avec(:,1) do i2=-1,1 v4(:)=v3(:)+dble(i2)*avec(:,2) do i3=-1,1 v5(:)=v4(:)+dble(i3)*avec(:,3) t1=v5(1)**2+v5(2)**2+v5(3)**2 if (t1.lt.rmt2) then call sphcrd(v5,r,tp) call genrlm(lmaxvr,tp,rlm) do ir=1,nr if (spr(ir,is).ge.r) then if (ir.le.2) then ir0=1 else if (ir.gt.nrmt(is)-2) then ir0=nrmt(is)-3 else ir0=ir-2 end if r=max(r,spr(1,is)) if (ir0.le.nri) then lmax=lmaxinr else lmax=lmaxvr end if sum=0.d0 do l=0,lmax do m=-l,l lm=idxlm(l,m) do j=1,4 i=ir0+j-1 ya(j)=rfmt(lm,i,ias) end do t2=poly4(spr(ir0,is),ya,r) sum=sum+t2*rlm(lm) end do end do goto 10 end if end do end if end do end do end do end do end do ! otherwise use direct Fourier transform of interstitial function sum=0.d0 do ig=1,ngvec ifg=igfft(ig) t1=vgc(1,ig)*v1(1)+vgc(2,ig)*v1(2)+vgc(3,ig)*v1(3) sum=sum+dble(zfft(ifg)*cmplx(cos(t1),sin(t1),8)) end do 10 continue fp(ip)=sum end do deallocate(zfft) return contains real(8) function poly4(xa,ya,x) implicit none ! arguments real(8), intent(in) :: xa(4),ya(4),x ! local variables real(8) x0,x1,x2,x3,y0,y1,y2,y3 real(8) c1,c2,c3,t0,t1,t2,t3,t4,t5,t6 ! evaluate the polynomial coefficients x0=xa(1) x1=xa(2)-x0 x2=xa(3)-x0 x3=xa(4)-x0 y0=ya(1) y1=ya(2)-y0 y2=ya(3)-y0 y3=ya(4)-y0 t0=1.d0/(x1*x2*x3*(x1-x2)*(x1-x3)*(x2-x3)) t1=x1*x2*y3 t2=x2*x3*y1 t3=x3*x1*y2 c3=t1*(x1-x2)+t2*(x2-x3)+t3*(x3-x1) t6=x3**2 t5=x2**2 t4=x1**2 c2=t1*(t5-t4)+t2*(t6-t5)+t3*(t4-t6) c1=t1*(x2*t4-x1*t5)+t2*(x3*t5-x2*t6)+t3*(x1*t6-x3*t4) t1=x-x0 ! evaluate the polynomial poly4=y0+t0*t1*(c1+t1*(c2+c3*t1)) return end function end subroutine elk-2.3.22/src/PaxHeaders.22528/readalpha2f.f900000644002504400250440000000005012337331324016670 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/readalpha2f.f900000644002504400250440000000151112337331324017432 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 A. Sanna and E. K. U. Gross ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readalpha2f(w,a2f) use modmain implicit none ! arguments real(8), intent(out) :: w(nwplot) real(8), intent(out) :: a2f(nwplot) ! local variables integer iw,iostat open(50,file='ALPHA2F.OUT',action='READ',form='FORMATTED',status='OLD', & iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(readalpha2f): error opening ALPHA2F.OUT")') write(*,*) stop end if do iw=1,nwplot read(50,*,iostat=iostat) w(iw),a2f(iw) if (iostat.ne.0) then write(*,*) write(*,'("Error(readalpha2f): error reading from ALPHA2F.OUT")') write(*,'(" for frequency ",I6)') iw write(*,*) stop end if end do close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/radnucl.f900000644002504400250440000000005012337331323016146 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/radnucl.f900000644002504400250440000000311612337331323016713 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: radnucl ! !INTERFACE: real(8) function radnucl(z) ! !INPUT/OUTPUT PARAMETERS: ! z : atomic number (in,real) ! !DESCRIPTION: ! Computes an approximate nuclear charge radius from the atomic number $Z$. ! The nuclear mass number, $A$, is estimated using ! $$ A=4.467\times 10^{-3}Z^2+2.163 Z-1.168, $$ ! [D. Andrae in {\it Relativistic Electronic Structure Theory - Fundamentals} ! {\bf 11}, 203 (2002)], and the nuclear charge radius can be determined from ! $$ r=\left(r_0+\frac{r_1}{A^{2/3}}+\frac{r_2}{A^{4/3}}\right)A^{1/3}, $$ ! where $r_0=0.9071$, $r_1=1.105$ and $r_2=-0.548$ [I. Angeli, {\it Atomic ! Data and Nuclear Data Tables} {\bf 87}, 185 (2004)]. ! ! !REVISION HISTORY: ! Created October 2011 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: z ! local variables ! coefficients for computing mass number real(8), parameter :: c2=4.467d-3, c1=2.163d0, c0=-1.168d0 ! coefficients for computing charge radius (fm) real(8), parameter :: r0=0.9071d0, r1=1.105d0, r2=-0.548d0 ! Bohr radius in SI units (CODATA 2010) real(8), parameter :: br_si=0.52917721092d-10 real(8) za,a,a13,a23,a43 za=abs(z) ! approximate nuclear mass number if (za.le.1.d0) then a=1.d0 else a=c2*za**2+c1*za+c0 end if ! approximate nuclear charge radius a13=a**(1.d0/3.d0) a23=a13**2 a43=a13*a radnucl=(r0+r1/a23+r2/a43)*a13 radnucl=radnucl*1.d-15/br_si return end function !EOC elk-2.3.22/src/PaxHeaders.22528/writetmdu.f900000644002504400250440000000005012337331324016543 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writetmdu.f900000644002504400250440000000151512337331324017311 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writetmdu use modmain use moddftu implicit none if (dftu.eq.0) then write(*,*) write(*,'("Error(writetmdu): dftu = 0")') write(*,*) stop end if ! initialize universal variables call init0 ! read density matrix from file DMATMT.OUT call readdmatmt ! read Slater integrals from FDU.OUT call readfdu ! open TMDFTU.OUT open(50,file='TMDFTU.OUT',action='WRITE',form='FORMATTED') if (spinorb) then call writetm3du(50) else call writetm2du(50) end if close(50) write(*,*) write(*,'("Info(writetmdu): Tensor moment decomposition of density matrix")') write(*,'(" and DFT+U Hartree-Fock energy written to TMDFTU.OUT")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/factr.f900000644002504400250440000000005012337331323015615 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/factr.f900000644002504400250440000000221012337331323016354 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: factr ! !INTERFACE: real(8) function factr(n,d) ! !INPUT/OUTPUT PARAMETERS: ! n : numerator (in,integer) ! d : denominator (in,integer) ! !DESCRIPTION: ! Returns the ratio $n!/d!$ for $n,d\ge 0$. Performs no under- or overflow ! checking. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n,d ! local variables integer i ! external functions real(8) factnm external factnm if (n.lt.0) then write(*,*) write(*,'("Error(factr): n < 0 : ",I8)') n write(*,*) stop end if if (d.lt.0) then write(*,*) write(*,'("Error(factr): d < 0 : ",I8)') d write(*,*) stop end if if (d.eq.1) then factr=factnm(n,1) return end if if (n.lt.d) then factr=dble(n+1) do i=n+2,d factr=factr*dble(i) end do factr=1.d0/factr else if (n.eq.d) then factr=1.d0 else factr=dble(d+1) do i=d+2,n factr=factr*dble(i) end do end if return end function !EOC elk-2.3.22/src/PaxHeaders.22528/zftrf.f900000644002504400250440000000005012337331324015652 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/zftrf.f900000644002504400250440000001214312337331324016417 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 Alexey I. Baranov. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: zftrf ! !INTERFACE: subroutine zftrf(npv,ivp,vpc,rfmt,rfir,zfp) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! npv : number of P-vectors (in,integer) ! ivp : integer coordinates of the P-vectors (in,integer(3,npv)) ! vpc : P-vectors in Cartesian coordinates (in,real(3,npv)) ! rfmt : real muffin-tin function (in,real(lmmaxvr,nrmtmax,natmtot)) ! rfir : real interstitial function (in,real(ngtot)) ! zfp : Fourier expansion coefficients of the real-space function ! (out,complex(npv)) ! !DESCRIPTION: ! Given a real function periodic in the unit cell, $f({\bf r})$, this routine ! calculates its complex Fourier expansion coefficients: ! $$ f({\bf P})=\frac{1}{\Omega}\int d^3r\,f({\bf r})\tilde{\Theta}({\bf r}) ! e^{-i{\bf P}\cdot{\bf r}} ! +\frac{4\pi}{\Omega}\sum_{\alpha}e^{-i{\bf P}\cdot{\bf R}_{\alpha}} ! \sum_{lm}(-i)^l Y_{lm}(\hat{\bf P}) ! \int_{0}^{R_{\alpha}}dr\,r^2 j_{l}(|{\bf P}|r)f_{lm}^{\alpha}(r), $$ ! where $\tilde{\Theta}$ is the smooth characteristic function of the ! interstitial region, $\Omega$ is the unit cell volume and $R_{\alpha}$ is ! the muffin-tin radius of atom $\alpha$. ! ! !REVISION HISTORY: ! Created July 2010 (Alexey I. Baranov) ! Modified, November 2010 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: npv integer, intent(in) :: ivp(3,npv) real(8), intent(in) :: vpc(3,npv) real(8), intent(in) :: rfmt(lmmaxvr,nrmtmax,natmtot) real(8), intent(in) :: rfir(ngtot) complex(8), intent(out) :: zfp(npv) ! local variables integer is,ia,ias integer nrc,nrci,irc0,irc integer lmax,l,m,lm integer ip,ig,ifg real(8) p,tp(2),t0,t1,t2 complex(8) zsum1,zsum2 complex(8) z1,z2,z3 ! automatic arrays real(8) jl(0:lmaxvr,nrcmtmax) real(8) fr1(nrcmtmax),fr2(nrcmtmax),gr(nrcmtmax) complex(8) ylm(lmmaxvr) ! allocatable arrays complex(8), allocatable :: zfft(:),zfmt(:,:,:) allocate(zfft(ngtot)) allocate(zfmt(lmmaxvr,nrcmtmax,natmtot)) ! zero the coefficients zfp(:)=0.d0 !---------------------------! ! interstitial part ! !---------------------------! ! Fourier transform to G-space zfft(:)=rfir(:) call zfftifc(3,ngridg,-1,zfft) ! find coefficients for all required input vectors do ip=1,npv if ((ivp(1,ip).ge.intgv(1,1)).and.(ivp(1,ip).le.intgv(2,1)).and. & (ivp(2,ip).ge.intgv(1,2)).and.(ivp(2,ip).le.intgv(2,2)).and. & (ivp(3,ip).ge.intgv(1,3)).and.(ivp(3,ip).le.intgv(2,3))) then ig=ivgig(ivp(1,ip),ivp(2,ip),ivp(3,ip)) zfp(ip)=zfft(igfft(ig)) end if end do !-------------------------! ! muffin-tin part ! !-------------------------! ! convert function from real to complex spherical harmonic expansion do ias=1,natmtot is=idxis(ias) call rtozfmt(nrcmt(is),nrcmtinr(is),lradstp,rfmt(:,:,ias),1,zfmt(:,:,ias)) end do ! remove continuation of interstitial function into muffin-tin do ig=1,ngtot ifg=igfft(ig) ! spherical coordinates of G call sphcrd(vgc(:,ig),t1,tp) ! conjugate spherical harmonics Y_lm*(G) call genylm(lmaxvr,tp,ylm) ylm(:)=conjg(ylm(:)) do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) ! generate spherical Bessel functions do irc=1,nrc t1=gc(ig)*rcmt(irc,is) call sbessel(lmaxvr,t1,jl(:,irc)) end do do ia=1,natoms(is) ias=idxas(ia,is) ! structure factor t1=dot_product(vgc(:,ig),atposc(:,ia,is)) z1=fourpi*zfft(ifg)*cmplx(cos(t1),sin(t1),8) lm=0 do l=0,lmaxvr if (l.le.lmaxinr) then irc0=1 else irc0=nrci+1 end if z2=z1*zil(l) do m=-l,l lm=lm+1 z3=z2*ylm(lm) do irc=irc0,nrc zfmt(lm,irc,ias)=zfmt(lm,irc,ias)-z3*jl(l,irc) end do end do end do end do end do end do t0=fourpi/omega ! loop over input P-vectors do ip=1,npv ! spherical coordinates of P call sphcrd(vpc(:,ip),p,tp) ! spherical harmonics Y_lm(P) call genylm(lmaxvr,tp,ylm) do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) ! generate spherical Bessel functions do irc=1,nrc t1=p*rcmt(irc,is) call sbessel(lmaxvr,t1,jl(:,irc)) end do do ia=1,natoms(is) ias=idxas(ia,is) ! conjugate structure factor t1=-dot_product(vpc(:,ip),atposc(:,ia,is)) z1=t0*cmplx(cos(t1),sin(t1),8) do irc=1,nrc if (irc.le.nrci) then lmax=lmaxinr else lmax=lmaxvr end if zsum1=jl(0,irc)*zfmt(1,irc,ias)*ylm(1) lm=1 do l=1,lmax lm=lm+1 zsum2=zfmt(lm,irc,ias)*ylm(lm) do m=1-l,l lm=lm+1 zsum2=zsum2+zfmt(lm,irc,ias)*ylm(lm) end do zsum1=zsum1+jl(l,irc)*zilc(l)*zsum2 end do zsum1=zsum1*rcmt(irc,is)**2 fr1(irc)=dble(zsum1) fr2(irc)=aimag(zsum1) end do call fderiv(-1,nrc,rcmt(:,is),fr1,gr) t1=gr(nrc) call fderiv(-1,nrc,rcmt(:,is),fr2,gr) t2=gr(nrc) zfp(ip)=zfp(ip)+z1*cmplx(t1,t2,8) end do end do end do deallocate(zfft,zfmt) return end subroutine ! EOC elk-2.3.22/src/PaxHeaders.22528/writekpts.f900000644002504400250440000000005012337331323016552 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writekpts.f900000644002504400250440000000142112337331323017314 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writekpts ! !INTERFACE: subroutine writekpts ! !USES: use modmain ! !DESCRIPTION: ! Writes the $k$-points in lattice coordinates, weights and number of ! ${\bf G+k}$-vectors to the file {\tt KPOINTS.OUT}. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! local variables integer ik open(50,file='KPOINTS'//trim(filext),action='WRITE',form='FORMATTED') write(50,'(I6," : nkpt; k-point, vkl, wkpt, nmat below")') nkpt do ik=1,nkpt write(50,'(I6,4G18.10,2I8)') ik,vkl(:,ik),wkpt(ik),nmat(:,ik) end do close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/exxengy.f900000644002504400250440000000005012337331323016205 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/exxengy.f900000644002504400250440000000503212337331323016751 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine exxengy use modmain use modmpi implicit none ! local variables integer ik,ist,jst,is,ia integer nrc,nrci,m1,m2 complex(8) z1 ! allocatable arrays complex(8), allocatable :: wfcr1(:,:,:),wfcr2(:,:,:) complex(8), allocatable :: zrhomt(:,:),zvclmt(:,:),zfmt(:,:) ! external functions complex(8) zfmtinp external zfmtinp allocate(wfcr1(lmmaxvr,nrcmtmax,2),wfcr2(lmmaxvr,nrcmtmax,2)) allocate(zrhomt(lmmaxvr,nrcmtmax),zvclmt(lmmaxvr,nrcmtmax)) allocate(zfmt(lmmaxvr,nrcmtmax)) ! zero the exchange energy engyx=0.d0 !--------------------------------------------------! ! val-val-val and val-cr-val contributions ! !--------------------------------------------------! !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle !$OMP CRITICAL write(*,'("Info(exxengy): ",I6," of ",I6," k-points")') ik,nkpt !$OMP END CRITICAL call exxengyk(ik) end do !$OMP END DO !$OMP END PARALLEL ! add energies from each process and redistribute call mpi_allreduce(mpi_in_place,engyx,1,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) !-----------------------------------! ! core-core-core contribution ! !-----------------------------------! ! begin loops over atoms and species do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) do jst=1,spnst(is) if (spcore(jst,is)) then do m2=-spk(jst,is),spk(jst,is)-1 call wavefcr(.false.,lradstp,is,ia,jst,m2,nrcmtmax,wfcr2) do ist=1,spnst(is) if (spcore(ist,is)) then do m1=-spk(ist,is),spk(ist,is)-1 ! generate the core wavefunction call wavefcr(.false.,lradstp,is,ia,ist,m1,nrcmtmax,wfcr1) ! calculate the complex overlap density call zfmtmul2(nrc,nrci,wfcr1(:,:,1),wfcr1(:,:,2),wfcr2(:,:,1), & wfcr2(:,:,2),zfmt) call zfsht(nrc,nrci,zfmt,zrhomt) ! calculate the Coulomb potential call zpotclmt(nrc,nrci,rcmt(:,is),zrhomt,zvclmt) z1=zfmtinp(.true.,nrc,nrci,rcmt(:,is),zrhomt,zvclmt) engyx=engyx-0.5d0*dble(z1) end do ! end loop over ist end if end do end do ! end loop over jst end if end do ! end loops over atoms and species end do end do deallocate(wfcr1,wfcr2,zrhomt,zvclmt,zfmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdiracdme.f900000644002504400250440000000005012337331323016450 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rdiracdme.f900000644002504400250440000000401112337331323017210 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rdiracdme ! !INTERFACE: subroutine rdiracdme(sol,m,kpa,e,nr,r,vr,nn,g0,g1,f0,f1) ! !INPUT/OUTPUT PARAMETERS: ! sol : speed of light in atomic units (in,real) ! m : order of energy derivative (in,integer) ! kpa : quantum number kappa (in,integer) ! e : energy (in,real) ! nr : number of radial mesh points (in,integer) ! r : radial mesh (in,real(nr)) ! vr : potential on radial mesh (in,real(nr)) ! nn : number of nodes (out,integer) ! g0 : m th energy derivative of the major component multiplied by r ! (out,real(nr)) ! g1 : radial derivative of g0 (out,real(nr)) ! f0 : m th energy derivative of the minor component multiplied by r ! (out,real(nr)) ! f1 : radial derivative of f0 (out,real(nr)) ! !DESCRIPTION: ! Finds the solution to the $m$th energy derivative of the radial Dirac ! equation using the routine {\tt rdiracint}. ! ! !REVISION HISTORY: ! Created March 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: sol integer, intent(in) :: m integer, intent(in) :: kpa real(8), intent(in) :: e integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(in) :: vr(nr) integer, intent(out) :: nn real(8), intent(out) :: g0(nr),g1(nr) real(8), intent(out) :: f0(nr),f1(nr) ! local variables integer im ! automatic arrays real(8) g0p(nr),f0p(nr) if (nr.le.0) then write(*,*) write(*,'("Error(rdiracdme): invalid nr : ",I8)') nr write(*,*) stop end if if ((m.lt.0).or.(m.gt.6)) then write(*,*) write(*,'("Error(rdiracdme): m out of range : ",I8)') m write(*,*) stop end if if (m.eq.0) then call rdiracint(sol,m,kpa,e,nr,r,vr,.false.,nn,g0p,f0p,g0,g1,f0,f1) else do im=0,m call rdiracint(sol,im,kpa,e,nr,r,vr,.false.,nn,g0p,f0p,g0,g1,f0,f1) g0p(:)=g0(:) f0p(:)=f0(:) end do end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/roteuler.f900000644002504400250440000000005012337331323016357 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/roteuler.f900000644002504400250440000000542212337331323017126 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: roteuler ! !INTERFACE: subroutine roteuler(rot,ang) ! !INPUT/OUTPUT PARAMETERS: ! rot : rotation matrix (in,real(3,3)) ! ang : Euler angles (alpha, beta, gamma) (out,real(3)) ! !DESCRIPTION: ! Given a rotation matrix ! \begin{align*} ! &R(\alpha,\beta,\gamma)=\\ ! &\left(\begin{matrix} ! \cos\gamma\cos\beta\cos\alpha-\sin\gamma\sin\alpha & ! \cos\gamma\cos\beta\sin\alpha+\sin\gamma\cos\alpha & ! -\cos\gamma\sin\beta \\ ! -\sin\gamma\cos\beta\cos\alpha-\cos\gamma\sin\alpha & ! -\sin\gamma\cos\beta\sin\alpha+\cos\gamma\cos\alpha & ! \sin\gamma\sin\beta \\ ! \sin\beta\cos\alpha & ! \sin\beta\sin\alpha & ! \cos\beta ! \end{matrix}\right), ! \end{align*} ! this routine determines the Euler angles, $(\alpha,\beta,\gamma)$. This ! corresponds to the so-called `y-convention', which involves the following ! successive rotations of the coordinate system: ! \begin{itemize} ! \item[1.]{The $x_1$-, $x_2$-, $x_3$-axes are rotated anticlockwise through ! an angle $\alpha$ about the $x_3$ axis} ! \item[2.]{The $x_1'$-, $x_2'$-, $x_3'$-axes are rotated anticlockwise ! through an angle $\beta$ about the $x_2'$ axis} ! \item[3.]{The $x_1''$-, $x_2''$-, $x_3''$-axes are rotated anticlockwise ! through an angle $\gamma$ about the $x_3''$ axis} ! \end{itemize} ! Note that the Euler angles are not necessarily unique for a given rotation ! matrix. ! ! !REVISION HISTORY: ! Created May 2003 (JKD) ! Fixed problem thanks to Frank Wagner, June 2013 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: rot(3,3) real(8), intent(out) :: ang(3) ! local variables real(8), parameter :: eps=1.d-8 real(8), parameter :: pi=3.1415926535897932385d0 real(8) det ! find the determinant det=rot(1,2)*rot(2,3)*rot(3,1)-rot(1,3)*rot(2,2)*rot(3,1) & +rot(1,3)*rot(2,1)*rot(3,2)-rot(1,1)*rot(2,3)*rot(3,2) & +rot(1,1)*rot(2,2)*rot(3,3)-rot(1,2)*rot(2,1)*rot(3,3) if ((det.lt.1.d0-eps).or.(det.gt.1.d0+eps)) then write(*,*) write(*,'("Error(roteuler): matrix improper or not unitary")') write(*,'(" Determinant : ",G18.10)') det write(*,*) stop end if if ((abs(rot(3,1)).gt.eps).or.(abs(rot(3,2)).gt.eps)) then ang(1)=atan2(rot(3,2),rot(3,1)) if (abs(rot(3,1)).gt.abs(rot(3,2))) then ang(2)=atan2(rot(3,1)/cos(ang(1)),rot(3,3)) else ang(2)=atan2(rot(3,2)/sin(ang(1)),rot(3,3)) end if ang(3)=atan2(rot(2,3),-rot(1,3)) else ang(1)=atan2(rot(1,2),rot(1,1)) if (rot(3,3).gt.0.d0) then ang(2)=0.d0 ang(3)=0.d0 else ang(2)=pi ang(3)=pi end if end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/grad2rfmt.f900000644002504400250440000000005012337331323016406 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/grad2rfmt.f900000644002504400250440000000201212337331323017145 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine grad2rfmt(nr,nri,r,rfmt,g2rfmt) use modmain implicit none ! arguments integer, intent(in) :: nr,nri real(8), intent(in) :: r(nr) real(8), intent(in) :: rfmt(lmmaxvr,nr) real(8), intent(out) :: g2rfmt(lmmaxvr,nr) ! local variables integer nr0,ir0,ir,l,m,lm real(8) t1 ! automatic arrays real(8) ri(nr),ri2(nr),cf(3,nr) ! tabulate 1/r and 1/r^2 do ir=1,nr ri(ir)=1.d0/r(ir) ri2(ir)=ri(ir)**2 end do lm=0 do l=0,lmaxvr if (l.le.lmaxinr) then nr0=nr ir0=1 else nr0=nr-nri ir0=nri+1 end if t1=-dble(l*(l+1)) do m=-l,l lm=lm+1 ! use a cubic spline to compute radial derivatives call spline(nr0,r(ir0),lmmaxvr,rfmt(lm,ir0),cf(1,ir0)) ! apply Laplacian do ir=ir0,nr g2rfmt(lm,ir)=2.d0*(ri(ir)*cf(1,ir)+cf(2,ir))+ri2(ir)*t1*rfmt(lm,ir) end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/eveqnss.f900000644002504400250440000000005012337331323016202 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/eveqnss.f900000644002504400250440000001405112337331323016747 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine eveqnss(ngp,igpig,apwalm,evalfv,evecfv,evalsvp,evecsv) use modmain use moddftu implicit none ! arguments integer, intent(in) :: ngp(nspnfv) integer, intent(in) :: igpig(ngkmax,nspnfv) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv) real(8), intent(in) :: evalfv(nstfv,nspnfv) complex(8), intent(in) :: evecfv(nmatmax,nstfv,nspnfv) real(8), intent(out) :: evalsvp(nstsv) complex(8), intent(out) :: evecsv(nstsv,nstsv) ! local variables integer ld,ist,jst,ispn,jspn integer is,ia,ias,nrc,nrci,iro integer l,lm,lmi,nm,igp,ifg integer i,j,k,lwork,info real(8) t1 real(8) ts0,ts1 complex(8) zq ! allocatable arrays real(8), allocatable :: rwork(:) complex(8), allocatable :: wfmt1(:,:,:,:),wfmt2(:,:,:),wfmt3(:,:),wfmt4(:,:,:) complex(8), allocatable :: wfir1(:,:),wfir2(:),z(:,:),work(:) ! external functions complex(8) zdotc,zfmtinp external zdotc,zfmtinp if (.not.spinpol) then write(*,*) write(*,'("Error(eveqnss): spin-unpolarised calculation")') write(*,*) stop end if call timesec(ts0) ld=lmmaxdm*nspinor ! zero the second-variational Hamiltonian (stored in the eigenvector array) evecsv(:,:)=0.d0 !-------------------------! ! muffin-tin part ! !-------------------------! lmi=lmmaxinr allocate(wfmt1(lmmaxvr,nrcmtmax,nstfv,nspnfv)) allocate(wfmt2(lmmaxvr,nrcmtmax,nspnfv)) allocate(wfmt3(lmmaxvr,nrcmtmax),wfmt4(lmmaxvr,nrcmtmax,3)) do ias=1,natmtot is=idxis(ias) ia=idxia(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) iro=nrci+1 ! de-phasing factor (FC, FB & LN) t1=-0.5d0*dot_product(vqcss(:),atposc(:,ia,is)) zq=cmplx(cos(t1),sin(t1),8) ! compute the first-variational wavefunctions do ispn=1,nspnfv if (ispn.eq.2) zq=conjg(zq) do ist=1,nstfv call wavefmt(lradstp,lmaxvr,ias,ngp(ispn),apwalm(:,:,:,:,ispn), & evecfv(:,ist,ispn),lmmaxvr,wfmt1(:,:,ist,ispn)) ! de-phase if required if (ssdph) wfmt1(:,1:nrc,ist,ispn)=zq*wfmt1(:,1:nrc,ist,ispn) end do end do do jst=1,nstfv ! convert wavefunction to spherical coordinates do ispn=1,nspnfv call zbsht(nrc,nrci,wfmt1(:,:,jst,ispn),wfmt2(:,:,ispn)) end do ! apply effective magnetic field and convert to spherical harmonics wfmt3(1:lmi,1:nrci)=bsmt(1:lmi,1:nrci,ias,3)*wfmt2(1:lmi,1:nrci,1) wfmt3(:,iro:nrc)=bsmt(:,iro:nrc,ias,3)*wfmt2(:,iro:nrc,1) call zfsht(nrc,nrci,wfmt3,wfmt4(:,:,1)) wfmt3(1:lmi,1:nrci)=-bsmt(1:lmi,1:nrci,ias,3)*wfmt2(1:lmi,1:nrci,2) wfmt3(:,iro:nrc)=-bsmt(:,iro:nrc,ias,3)*wfmt2(:,iro:nrc,2) call zfsht(nrc,nrci,wfmt3,wfmt4(:,:,2)) wfmt3(1:lmi,1:nrci)=cmplx(bsmt(1:lmi,1:nrci,ias,1), & -bsmt(1:lmi,1:nrci,ias,2),8)*wfmt2(1:lmi,1:nrci,2) wfmt3(:,iro:nrc)=cmplx(bsmt(:,iro:nrc,ias,1), & -bsmt(:,iro:nrc,ias,2),8)*wfmt2(:,iro:nrc,2) call zfsht(nrc,nrci,wfmt3,wfmt4(:,:,3)) ! apply muffin-tin potential matrix if required if (tvmatmt) then do l=0,lmaxdm if (tvmmt(l,ias)) then nm=2*l+1 lm=idxlm(l,-l) do k=1,3 if (k.eq.1) then ispn=1 jspn=1 else if (k.eq.2) then ispn=2 jspn=2 else ispn=1 jspn=2 end if call zgemm('N','N',nm,nrc,nm,zone,vmatmt(lm,ispn,lm,jspn,ias),ld, & wfmt1(lm,1,jst,jspn),lmmaxvr,zone,wfmt4(lm,1,k),lmmaxvr) end do end if end do end if ! second-variational Hamiltonian matrix do ist=1,nstfv do k=1,3 if (k.eq.1) then ispn=1 i=ist j=jst else if (k.eq.2) then ispn=2 i=ist+nstfv j=jst+nstfv else ispn=1 i=ist j=jst+nstfv end if if (i.le.j) then evecsv(i,j)=evecsv(i,j)+zfmtinp(.true.,nrc,nrci,rcmt(:,is), & wfmt1(:,:,ist,ispn),wfmt4(:,:,k)) end if end do end do end do end do deallocate(wfmt1,wfmt2,wfmt3,wfmt4) !---------------------------! ! interstitial part ! !---------------------------! allocate(wfir1(ngtot,nspnfv),wfir2(ngtot),z(ngkmax,3)) do jst=1,nstfv do ispn=1,nspnfv wfir1(:,ispn)=0.d0 do igp=1,ngp(ispn) ifg=igfft(igpig(igp,ispn)) wfir1(ifg,ispn)=evecfv(igp,jst,ispn) end do ! Fourier transform wavefunction to real-space call zfftifc(3,ngridg,1,wfir1(:,ispn)) end do ! multiply with magnetic field and transform to G-space wfir2(:)=bsir(:,3)*wfir1(:,1) call zfftifc(3,ngridg,-1,wfir2) do igp=1,ngp(1) ifg=igfft(igpig(igp,1)) z(igp,1)=wfir2(ifg) end do wfir2(:)=-bsir(:,3)*wfir1(:,2) call zfftifc(3,ngridg,-1,wfir2) do igp=1,ngp(2) ifg=igfft(igpig(igp,2)) z(igp,2)=wfir2(ifg) end do wfir2(:)=cmplx(bsir(:,1),-bsir(:,2),8)*wfir1(:,2) call zfftifc(3,ngridg,-1,wfir2) do igp=1,ngp(1) ifg=igfft(igpig(igp,1)) z(igp,3)=wfir2(ifg) end do ! add to Hamiltonian matrix do ist=1,nstfv do k=1,3 if (k.eq.1) then ispn=1 i=ist j=jst else if (k.eq.2) then ispn=2 i=ist+nstfv j=jst+nstfv else ispn=1 i=ist j=jst+nstfv end if if (i.le.j) then evecsv(i,j)=evecsv(i,j)+zdotc(ngp(ispn),evecfv(:,ist,ispn),1,z(:,k),1) end if end do end do end do deallocate(wfir1,wfir2,z) ! add the diagonal first-variational part i=0 do ispn=1,nspinor do ist=1,nstfv i=i+1 evecsv(i,i)=evecsv(i,i)+evalfv(ist,ispn) end do end do ! diagonalise the second-variational Hamiltonian allocate(rwork(3*nstsv)) lwork=2*nstsv allocate(work(lwork)) call zheev('V','U',nstsv,evecsv,nstsv,evalsvp,work,lwork,rwork,info) if (info.ne.0) then write(*,*) write(*,'("Error(eveqnss): diagonalisation of the second-variational & &Hamiltonian failed")') write(*,'(" ZHEEV returned INFO = ",I8)') info write(*,*) stop end if deallocate(rwork,work) call timesec(ts1) !$OMP ATOMIC timesv=timesv+ts1-ts0 return end subroutine elk-2.3.22/src/PaxHeaders.22528/spiralsc.f900000644002504400250440000000005012337331323016336 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/spiralsc.f900000644002504400250440000000431212337331323017102 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine spiralsc use modmain use modstore implicit none ! local variables integer nq,iq,jq real(8) qc ! store original parameters natoms0(:)=natoms(:) avec0(:,:)=avec(:,:) atposl0(:,:,:)=atposl(:,:,:) bfcmt00(:,:,:)=bfcmt0(:,:,:) mommtfix0(:,:,:)=mommtfix(:,:,:) autokpt0=autokpt ngridk0(:)=ngridk ! initialise universal variables call init0 ! initialise q-point dependent variables call init2 ! store original parameters atposc0(:,:,:)=atposc(:,:,:) 10 continue call sstask(80,filext) ! if nothing more to do then restore input parameters and return if (iqss.eq.0) then filext='.OUT' natoms(:)=natoms0(:) avec(:,:)=avec0(:,:) atposl(:,:,:)=atposl0(:,:,:) bfcmt0(:,:,:)=bfcmt00(:,:,:) mommtfix(:,:,:)=mommtfix0(:,:,:) autokpt=autokpt0 ngridk(:)=ngridk0(:) return end if ! spiral dry run: just generate empty SS files if (task.eq.352) goto 10 write(*,'("Info(spiralsc): working on ",A)') 'SS'//trim(filext) ! determine k-point grid size from radkpt autokpt=.true. ! generate the spin-spiral supercell call genscss ! initialise or read the charge density and potentials from file if (task.eq.350) then trdstate=.false. else trdstate=.true. end if ! run the ground-state calculation call gndstate write(80,'(I6,T20," : number of unit cells in supercell")') nscss write(80,'(G18.10,T20," : total energy per unit cell")') engytot/dble(nscss) write(80,*) write(80,'("q-point in lattice and Cartesian coordinates :")') write(80,'(3G18.10)') vql(:,iqss) write(80,'(3G18.10)') vqc(:,iqss) qc=sqrt(vqc(1,iqss)**2+vqc(2,iqss)**2+vqc(3,iqss)**2) write(80,'(G18.10,T20," : length of q-vector")') qc write(80,*) nq=nint(dble(nqptnr)*wqpt(iqss)) write(80,'(I6,T20," : number of equivalent q-points")') nq write(80,'("Equivalent q-points in lattice and Cartesian coordinates :")') do iq=1,nqptnr jq=iqmap(ivq(1,iq),ivq(2,iq),ivq(3,iq)) if (jq.eq.iqss) then write(80,'(3G18.10)') vql(:,iq) write(80,'(3G18.10)') vqc(:,iq) write(80,*) end if end do close(80) ! delete the eigenvector files call delevec goto 10 return end subroutine elk-2.3.22/src/PaxHeaders.22528/olpalo.f900000644002504400250440000000005012337331323016004 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/olpalo.f900000644002504400250440000000146212337331323016553 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine olpalo(ias,ngp,apwalm,ld,o) use modmain implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) integer, intent(in) :: ld complex(8), intent(inout) :: o(*) ! local variables integer is,ilo,io integer l,m,lm,i,j,k is=idxis(ias) do ilo=1,nlorb(is) l=lorbl(ilo,is) do m=-l,l lm=idxlm(l,m) j=ngp+idxlo(lm,ilo,ias) k=(j-1)*ld do i=1,ngp k=k+1 do io=1,apword(l,is) o(k)=o(k)+conjg(apwalm(i,io,lm,ias))*oalo(io,ilo,ias) end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/reciplat.f900000644002504400250440000000005012337331323016321 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/reciplat.f900000644002504400250440000000257512337331323017076 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: reciplat ! !INTERFACE: subroutine reciplat ! !USES: use modmain ! !DESCRIPTION: ! Generates the reciprocal lattice vectors from the real-space lattice vectors ! \begin{align*} ! {\bf b}_1&=\frac{2\pi}{s}({\bf a}_2\times{\bf a}_3)\\ ! {\bf b}_2&=\frac{2\pi}{s}({\bf a}_3\times{\bf a}_1)\\ ! {\bf b}_3&=\frac{2\pi}{s}({\bf a}_1\times{\bf a}_2) ! \end{align*} ! and finds the unit cell volume $\Omega=|s|$, where ! $s={\bf a}_1\cdot({\bf a}_2\times{\bf a}_3)$, and the Brillouin zone volume ! $\Omega_{\rm BZ}=(2\pi)^3/\Omega$. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) !EOP !BOC implicit none ! local variables real(8) t1 call r3cross(avec(:,2),avec(:,3),bvec(:,1)) call r3cross(avec(:,3),avec(:,1),bvec(:,2)) call r3cross(avec(:,1),avec(:,2),bvec(:,3)) t1=avec(1,1)*bvec(1,1)+avec(2,1)*bvec(2,1)+avec(3,1)*bvec(3,1) ! compute unit cell volume omega=abs(t1) if (omega.lt.1.d-6) then write(*,*) write(*,'("Error(reciplat) omega too small : ",G18.10)') omega write(*,'(" Lattice vectors may be collinear")') write(*,*) stop end if bvec(:,:)=(twopi/t1)*bvec(:,:) ! Brillouin zone volume omegabz=(twopi**3)/omega return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/fsmfield.f900000644002504400250440000000005012337331323016307 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/fsmfield.f900000644002504400250440000000543412337331323017061 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: fsmfield ! !INTERFACE: subroutine fsmfield ! !USES: use modmain ! !DESCRIPTION: ! Updates the effective magnetic field, ${\bf B}_{\rm FSM}$, required for ! fixing the spin moment to a given value, ${\bf M}_{\rm FSM}$. This is done ! by adding a vector to the field which is proportional to the difference ! between the moment calculated in the $i$th self-consistent loop and the ! required moment: ! $$ {\bf B}_{\rm FSM}^{i+1}={\bf B}_{\rm FSM}^i+\lambda\left({\bf M}^i ! -{\bf M}_{\rm FSM}\right), $$ ! where $\lambda$ is a scaling factor. ! ! !REVISION HISTORY: ! Created March 2005 (JKD) !EOP !BOC implicit none ! local variables integer idm,is,ia,ias,ir,irc real(8) v1(3),v2(3),t1 if ((.not.spinpol).or.(fsmtype.eq.0)) return ! determine the global effective field if ((abs(fsmtype).eq.1).or.(abs(fsmtype).eq.3)) then if (ncmag) then v1(:)=momtot(:) else v1(:)=0.d0 v1(3)=momtot(1) end if if (fsmtype.gt.0) then ! fixed spin moment v2(:)=v1(:)-momfix(:) else ! fixed spin direction t1=sqrt(sum(momfix(:)**2)) if (t1.gt.1.d-8) t1=1.d0/t1 v2(:)=t1*momfix(:) v2(:)=v1(:)-momtotm*v2(:) end if if (ncmag) then bfsmc(:)=bfsmc(:)+taufsm*v2(:) else bfsmc(1)=bfsmc(1)+taufsm*v2(3) end if do idm=1,ndmag t1=bfsmc(idm) do ias=1,natmtot is=idxis(ias) do irc=1,nrcmt(is) bsmt(:,irc,ias,idm)=bsmt(:,irc,ias,idm)+t1 end do end do do ir=1,ngtot bsir(ir,idm)=bsir(ir,idm)+t1*cfunir(ir) end do end do end if if ((abs(fsmtype).eq.2).or.(abs(fsmtype).eq.3)) then ! determine the muffin-tin fields for fixed local moments do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! if any component is >= 1000 then do not fix the moment t1=sum(abs(mommtfix(:,ia,is))) if (t1.ge.1000.d0) cycle if (ncmag) then v1(:)=mommt(:,ias) else v1(:)=0.d0 v1(3)=mommt(1,ias) end if if (fsmtype.gt.0) then ! fixed spin moment v2(:)=v1(:)-mommtfix(:,ia,is) else ! fixed spin direction t1=sqrt(sum(mommtfix(:,ia,is)**2)) if (t1.gt.1.d-8) t1=1.d0/t1 v2(:)=t1*mommtfix(:,ia,is) t1=sqrt(v1(1)**2+v1(2)**2+v1(3)**2) v2(:)=v1(:)-t1*v2(:) end if if (ncmag) then bfsmcmt(:,ias)=bfsmcmt(:,ias)+taufsm*v2(:) else bfsmcmt(1,ias)=bfsmcmt(1,ias)+taufsm*v2(3) end if do idm=1,ndmag t1=bfsmcmt(idm,ias) do irc=1,nrcmt(is) bsmt(:,irc,ias,idm)=bsmt(:,irc,ias,idm)+t1 end do end do end do end do end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/symrf.f900000644002504400250440000000005012337331324015657 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/symrf.f900000644002504400250440000000622112337331324016424 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: symrf ! !INTERFACE: subroutine symrf(lrstp,rfmt,rfir) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! lrstp : radial step length (in,integer) ! rfmt : real muffin-tin function (inout,real(lmmaxvr,nrmtmax,natmtot)) ! rfir : real intersitial function (inout,real(ngtot)) ! !DESCRIPTION: ! Symmetrises a real scalar function defined over the entire unit cell using ! the full set of crystal symmetries. In the muffin-tin of a particular atom ! the spherical harmonic coefficients of every equivlent atom are rotated and ! averaged. The interstitial part of the function is first Fourier transformed ! to $G$-space, and then averaged over each symmetry by rotating the Fourier ! coefficients and multiplying them by a phase factor corresponding to the ! symmetry translation. ! ! !REVISION HISTORY: ! Created May 2007 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: lrstp real(8), intent(inout) :: rfmt(lmmaxvr,nrmtmax,natmtot) real(8), intent(inout) :: rfir(ngtot) ! local variables integer is,ia,ja,ias,jas integer nrc,ld,ir integer isym,lspl,ilspl real(8) t1 ! automatic arrays logical done(natmmax) ! allocatable arrays real(8), allocatable :: rfmt1(:,:,:),rfmt2(:,:) !-------------------------! ! muffin-tin part ! !-------------------------! allocate(rfmt1(lmmaxvr,nrmtmax,natmmax)) allocate(rfmt2(lmmaxvr,nrmtmax)) t1=1.d0/dble(nsymcrys) do is=1,nspecies ld=lmmaxvr*lrstp nrc=(nrmt(is)-1)/lrstp+1 ! make a copy of the input function do ia=1,natoms(is) ias=idxas(ia,is) do ir=1,nrmt(is),lrstp rfmt1(:,ir,ia)=rfmt(:,ir,ias) end do end do done(:)=.false. ! loop over atoms do ia=1,natoms(is) if (done(ia)) cycle ias=idxas(ia,is) do ir=1,nrmt(is),lrstp rfmt(:,ir,ias)=0.d0 end do ! loop over crystal symmetries do isym=1,nsymcrys ! index to spatial rotation lattice symmetry lspl=lsplsymc(isym) ! equivalent atom index (symmetry rotates atom ja into atom ia) ja=ieqatom(ia,is,isym) ! apply the rotation to the muffin-tin function call rotrflm(symlatc(:,:,lspl),lmaxvr,nrc,ld,rfmt1(:,:,ja),rfmt2) ! accumulate in original function array do ir=1,nrmt(is),lrstp rfmt(:,ir,ias)=rfmt(:,ir,ias)+rfmt2(:,ir) end do end do ! normalise do ir=1,nrmt(is),lrstp rfmt(:,ir,ias)=t1*rfmt(:,ir,ias) end do done(ia)=.true. ! rotate into equivalent atoms do isym=1,nsymcrys ja=ieqatom(ia,is,isym) if (.not.done(ja)) then jas=idxas(ja,is) lspl=lsplsymc(isym) ! inverse symmetry (which rotates atom ia into atom ja) ilspl=isymlat(lspl) ! rotate symmetrised function into equivalent muffin-tin call rotrflm(symlatc(:,:,ilspl),lmaxvr,nrc,ld,rfmt(:,:,ias), & rfmt(:,:,jas)) done(ja)=.true. end if end do end do end do deallocate(rfmt1,rfmt2) !---------------------------! ! interstitial part ! !---------------------------! call symrfir(ngvec,rfir) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hmlxbse.f900000644002504400250440000000005012337331324016161 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hmlxbse.f900000644002504400250440000000112112337331324016720 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hmlxbse use modmain use modmpi implicit none ! local variables integer ik2 !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik2=1,nkptnr ! distribute among MPI processes if (mod(ik2-1,np_mpi).ne.lp_mpi) cycle !$OMP CRITICAL write(*,'("Info(hmlxbse): ",I6," of ",I6," k-points")') ik2,nkptnr !$OMP END CRITICAL call hmlxbsek(ik2) end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/rfmtinp.f900000644002504400250440000000005012337331322016174 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/rfmtinp.f900000644002504400250440000000427412337331322016747 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2003-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rfmtinp ! !INTERFACE: real(8) function rfmtinp(lrstp,nr,nri,r,rfmt1,rfmt2) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! lrstp : radial step length (in,integer) ! nr : number of radial mesh points (in,integer) ! nri : number of radial mesh points on the inner part of the muffin-tin ! (in,integer) ! r : radial mesh (in,real(nr)) ! rfmt1 : first real function inside muffin-tin (in,real(lmmaxvr,nr)) ! rfmt2 : second real function inside muffin-tin (in,real(lmmaxvr,nr)) ! !DESCRIPTION: ! Calculates the inner product of two real fuctions in the muffin-tin. So ! given two real functions of the form ! $$ f({\bf r})=\sum_{l=0}^{l_{\rm max}}\sum_{m=-l}^{l}f_{lm}(r)R_{lm} ! (\hat{\bf r}) $$ ! where $R_{lm}$ are the real spherical harmonics, the function returns ! $$ I=\int\sum_{l=0}^{l_{\rm max}}\sum_{m=-l}^{l}f_{lm}^1(r)f_{lm}^2(r)r^2 ! dr\;. $$ ! The radial integral is performed using a high accuracy cubic spline method. ! See routines {\tt genrlm} and {\tt fderiv}. ! ! !REVISION HISTORY: ! Created November 2003 (Sharma) !EOP !BOC implicit none ! arguments integer, intent(in) :: lrstp integer, intent(in) :: nr,nri real(8), intent(in) :: r(nr) real(8), intent(in) :: rfmt1(lmmaxvr,nr) real(8), intent(in) :: rfmt2(lmmaxvr,nr) ! local variables integer ir,irc ! automatic arrays real(8) rc(nr),fr(nr),gr(nr) ! external functions real(8) ddot external ddot if (lrstp.le.0) then write(*,*) write(*,'("Error(rfmtinp): lrstp <= 0 : ",I8)') lrstp write(*,*) stop end if if (nr.le.0) then write(*,*) write(*,'("Error(rfmtinp): nr <= 0 : ",I8)') nr write(*,*) stop end if irc=0 ! inner part of muffin-tin do ir=1,nri,lrstp irc=irc+1 rc(irc)=r(ir) fr(irc)=ddot(lmmaxinr,rfmt1(:,ir),1,rfmt2(:,ir),1)*r(ir)**2 end do ! outer part of muffin-tin do ir=nri+lrstp,nr,lrstp irc=irc+1 rc(irc)=r(ir) fr(irc)=ddot(lmmaxvr,rfmt1(:,ir),1,rfmt2(:,ir),1)*r(ir)**2 end do call fderiv(-1,irc,rc,fr,gr) rfmtinp=gr(irc) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/flushifc.f900000644002504400250440000000005012337331323016321 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/flushifc.f900000644002504400250440000000330012337331323017061 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: flushifc ! !INTERFACE: subroutine flushifc(fnum) ! !INPUT/OUTPUT PARAMETERS: ! fnum : unit specifier for file (in,integer) ! !DESCRIPTION: ! Interface to the Fortran {\tt flush} statement. Some compilers do not ! support the {\tt flush} command, which is very useful for keeping small ! formatted files up-to-date on the disk. The routine implimented below is a ! machine-independent emulation of {\tt flush}, but may be replaced with the ! intrinsic command if preferred. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum ! local variables logical named_,opened_ character(32) action_,form_ character(1024) name_ inquire(fnum,action=action_,form=form_,name=name_,named=named_,opened=opened_) if ((adjustl(action_).ne.'WRITE').and.(adjustl(action_).ne.'READWRITE')) then write(*,*) write(*,'("Error(flushifc): unit ",I4," is read-only")') fnum write(*,*) stop end if if (adjustl(form_).ne.'FORMATTED') then write(*,*) write(*,'("Error(flushifc): unit ",I4," is not a formatted file")') fnum write(*,*) stop end if if (.not.named_) then write(*,*) write(*,'("Error(flushifc): unit ",I4," is not named")') fnum write(*,*) stop end if if (.not.opened_) then write(*,*) write(*,'("Error(flushifc): unit ",I4," is not connected")') fnum write(*,*) stop end if ! close and re-open file close(fnum) open(fnum,action=action_,form=form_,file=trim(name_),position='APPEND') return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gradrf.f900000644002504400250440000000005012337331324015764 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gradrf.f900000644002504400250440000000224112337331324016527 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gradrf(rfmt,rfir,grfmt,grfir) use modmain implicit none ! arguments real(8), intent(in) :: rfmt(lmmaxvr,nrmtmax,natmtot),rfir(ngtot) real(8), intent(out) :: grfmt(lmmaxvr,nrmtmax,natmtot,3),grfir(ngtot,3) ! local variables integer is,ias,ig,ifg,i ! allocatable arrays real(8), allocatable :: grfmt1(:,:,:) complex(8), allocatable :: zfft1(:),zfft2(:) ! muffin-tin gradient allocate(grfmt1(lmmaxvr,nrmtmax,3)) do ias=1,natmtot is=idxis(ias) call gradrfmt(nrmt(is),nrmtinr(is),spr(:,is),rfmt(:,:,ias),nrmtmax,grfmt1) do i=1,3 grfmt(:,1:nrmt(is),ias,i)=grfmt1(:,1:nrmt(is),i) end do end do deallocate(grfmt1) ! interstitial gradient allocate(zfft1(ngtot),zfft2(ngtot)) zfft1(:)=rfir(:) call zfftifc(3,ngridg,-1,zfft1) do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) grfir(:,i)=dble(zfft2(:)) end do deallocate(zfft1,zfft2) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dforcek.f900000644002504400250440000000005012337331324016134 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dforcek.f900000644002504400250440000002207012337331324016701 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dforcek(ik,dyn) use modmain use modphonon use modpw implicit none ! arguments integer, intent(in) :: ik complex(8), intent(inout) :: dyn(3,natmtot) ! local variables integer ispn0,ispn1,ispn,jspn integer n,nq,nm,nmq,nm2 integer is,ias,ist,jst,jk integer iv(3),ig,i,j,k,l real(8) t1 complex(8) zsum,z1,z2 complex(8) dt1,dz1,dz2 ! allocatable arrays integer, allocatable :: ijg(:,:),ijgq(:,:) real(8), allocatable :: dp(:,:),dpq(:,:),evalfv(:,:) complex(8), allocatable :: devalfv(:,:) complex(8), allocatable :: apwalm(:,:,:,:),apwalmq(:,:,:,:),dapwalm(:,:,:) complex(8), allocatable :: evecfv(:,:,:),devecfv(:,:,:) complex(8), allocatable :: evecsv(:,:),devecsv(:,:) complex(8), allocatable :: o(:),hq(:,:),oq(:,:),dh(:,:),od(:,:) complex(8), allocatable :: dlo(:),dlhq(:,:),dloq(:,:) complex(8), allocatable :: ddlh(:,:),ddlo(:,:) complex(8), allocatable :: vo(:),dvh(:),dvo(:) complex(8), allocatable :: ffv(:,:),dffv(:,:),y(:),dy(:) ! external functions complex(8) zdotc external zdotc nm2=nmatmax**2 ! allocate local arrays allocate(ijg(nmatmax,nmatmax),ijgq(nmatmax,nmatmax)) allocate(dp(nmatmax,nmatmax),dpq(nmatmax,nmatmax)) allocate(evalfv(nstfv,nspnfv),devalfv(nstfv,nspnfv)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(dapwalm(ngkmax,apwordmax,lmmaxapw)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(devecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv),devecsv(nstsv,nstsv)) allocate(o(nm2),hq(nmatmax,nmatmax),oq(nmatmax,nmatmax)) allocate(dh(nmatmax,nmatmax),od(nmatmax,nmatmax)) allocate(dlo(nm2),dlhq(nmatmax,nmatmax),dloq(nmatmax,nmatmax)) allocate(ddlh(nmatmax,nmatmax),ddlo(nmatmax,nmatmax)) allocate(vo(nmatmax),dvh(nmatmax),dvo(nmatmax)) allocate(ffv(nstfv,nstfv),dffv(nstfv,nstfv),y(nstfv),dy(nstfv)) ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! get the eigenvalues/vectors from file call getevalfv(vkl(:,ik),evalfv) call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! get the eigenvalue/vector derivatives from file call getdevalfv(ik,iqph,isph,iaph,ipph,devalfv) call getdevecfv(ik,iqph,isph,iaph,ipph,devecfv) call getdevecsv(ik,iqph,isph,iaph,ipph,devecsv) ! loop over first-variational spin components do jspn=1,nspnfv if (spinsprl) then ispn0=jspn; ispn1=jspn else ispn0=1; ispn1=nspinor end if n=ngk(jspn,ik) nq=ngkq(jspn,ik) nm=n+nlotot nmq=nq+nlotot do j=1,n do i=1,n iv(:)=ivg(:,igkig(i,jspn,ik))-ivg(:,igkig(j,jspn,ik)) iv(:)=modulo(iv(:)-intgv(1,:),ngridg(:))+intgv(1,:) ijg(i,j)=ivgig(iv(1),iv(2),iv(3)) dp(i,j)=0.5d0*dot_product(vgkc(:,i,jspn,ik),vgkc(:,j,jspn,ik)) end do end do do j=1,n do i=1,nq iv(:)=ivg(:,igkqig(i,jspn,ik))-ivg(:,igkig(j,jspn,ik)) iv(:)=modulo(iv(:)-intgv(1,:),ngridg(:))+intgv(1,:) ijgq(i,j)=ivgig(iv(1),iv(2),iv(3)) dpq(i,j)=0.5d0*dot_product(vgkqc(:,i,jspn,ik),vgkc(:,j,jspn,ik)) end do end do ! find the matching coefficients call match(n,gkc(:,jspn,ik),tpgkc(:,:,jspn,ik),sfacgk(:,:,jspn,ik),apwalm) call match(nq,gkqc(:,jspn,ik),tpgkqc(:,:,jspn,ik),sfacgkq(:,:,jspn,ik), & apwalmq) ! find the matching coefficient derivatives call dmatch(iasph,ipph,n,vgkc(:,:,jspn,ik),apwalm,dapwalm) ! loop over species and atoms do ias=1,natmtot is=idxis(ias) ! Hamiltonian and overlap matrices o(:)=0.d0 call olpaa(ias,n,apwalm,nm,o) call olpalo(ias,n,apwalm,nm,o) hq(:,:)=0.d0 call hmlaaq(ias,n,nq,apwalm,apwalmq,nmatmax,hq) call hmlaloq(ias,n,nq,apwalm,apwalmq,nmatmax,hq) oq(:,:)=0.d0 call olpaaq(ias,n,nq,apwalm,apwalmq,nmatmax,oq) call olpaloq(ias,n,nq,apwalm,apwalmq,nmatmax,oq) ! Hamiltonian and overlap derivatives dh(:,:)=0.d0 call dhmlaa(ias,n,n,apwalm,apwalm,dapwalm,dapwalm,nmatmax,dh) call dhmlalo(ias,n,n,apwalm,apwalm,dapwalm,dapwalm,nmatmax,dh) od(:,:)=0.d0 call dolpaa(ias,n,n,apwalm,apwalm,dapwalm,dapwalm,nmatmax,od) call dolpalo(ias,n,n,dapwalm,dapwalm,nmatmax,od) ! loop over Cartesian directions do l=1,3 ! APW-APW contribution do j=1,n k=(j-1)*nm do i=1,j k=k+1 ig=ijg(i,j) t1=vgc(l,ig) z1=-ffacg(ig,is)*conjg(sfacg(ig,ias)) z2=t1*(z1+o(k)) dlo(k)=cmplx(-aimag(z2),dble(z2),8) end do end do do j=n+1,nm k=(j-1)*nm ! APW-local-orbital contribution do i=1,n k=k+1 t1=vgkc(l,i,jspn,ik) z1=t1*o(k) dlo(k)=cmplx(-aimag(z1),dble(z1),8) end do ! zero the local-orbital-local-orbital contribution do i=n+1,j k=k+1 dlo(k)=0.d0 end do end do ! non-square H/O(G+k+q,G'+k) matrices ! APW-APW contribution do j=1,n do i=1,nq ig=ijgq(i,j) t1=vgqc(l,ig) z1=-ffacgq(ig,is)*conjg(sfacgq(ig,ias)) z2=t1*(dpq(i,j)*z1+hq(i,j)) dlhq(i,j)=cmplx(-aimag(z2),dble(z2),8) z2=t1*(z1+oq(i,j)) dloq(i,j)=cmplx(-aimag(z2),dble(z2),8) end do ! local-orbital-APW derivative t1=-vgkc(l,j,jspn,ik) do i=nq+1,nmq z1=t1*hq(i,j) dlhq(i,j)=cmplx(-aimag(z1),dble(z1),8) z1=t1*oq(i,j) dloq(i,j)=cmplx(-aimag(z1),dble(z1),8) end do end do do j=n+1,nm ! APW-local-orbital contribution do i=1,nq t1=vgkqc(l,i,jspn,ik) z1=t1*hq(i,j) dlhq(i,j)=cmplx(-aimag(z1),dble(z1),8) z1=t1*oq(i,j) dloq(i,j)=cmplx(-aimag(z1),dble(z1),8) end do ! zero the local-orbital-local-orbital contribution do i=nq+1,nmq dlhq(i,j)=0.d0 dloq(i,j)=0.d0 end do end do ! APW-APW derivative do j=1,n do i=1,n ig=ijg(i,j) t1=vgc(l,ig) if (ias.eq.iasph) then z1=-ffacg(ig,is)*conjg(sfacg(ig,ias)) dz1=vgc(ipph,ig)*cmplx(aimag(z1),-dble(z1),8) else dz1=0.d0 end if z2=t1*(dp(i,j)*dz1+dh(i,j)) ddlh(i,j)=cmplx(-aimag(z2),dble(z2),8) z2=t1*(dz1+od(i,j)) ddlo(i,j)=cmplx(-aimag(z2),dble(z2),8) end do ! local-orbital-APW derivative t1=-vgkc(l,j,jspn,ik) do i=n+1,nm z1=t1*dh(i,j) ddlh(i,j)=cmplx(-aimag(z1),dble(z1),8) z1=t1*od(i,j) ddlo(i,j)=cmplx(-aimag(z1),dble(z1),8) end do end do ! APW-local-orbital derivative do j=n+1,nm do i=1,n t1=vgkc(l,i,jspn,ik) z1=t1*dh(i,j) ddlh(i,j)=cmplx(-aimag(z1),dble(z1),8) z1=t1*od(i,j) ddlo(i,j)=cmplx(-aimag(z1),dble(z1),8) end do ! zero the local-orbital-local-orbital derivative do i=n+1,nm ddlh(i,j)=0.d0 ddlo(i,j)=0.d0 end do end do ! compute the force derivative matrix elements in the first-variational basis dffv(:,:)=0.d0 do jst=1,nstfv call zhemv('U',nm,zone,dlo,nm,evecfv(:,jst,jspn),1,zzero,vo,1) call zgemv('N',nm,nm,zone,ddlh,nmatmax,evecfv(:,jst,jspn),1,zzero,dvh,1) call zgemv('N',nm,nm,zone,ddlo,nmatmax,evecfv(:,jst,jspn),1,zzero,dvo,1) t1=evalfv(jst,jspn) dt1=devalfv(jst,jspn) do ist=1,nstfv z2=zdotc(nm,evecfv(:,ist,jspn),1,vo,1) dz1=zdotc(nm,evecfv(:,ist,jspn),1,dvh,1) dz2=zdotc(nm,evecfv(:,ist,jspn),1,dvo,1) dffv(ist,jst)=dffv(ist,jst)+dz1-dt1*z2-t1*dz2 end do call zgemv('C',nmq,nm,zone,dlhq,nmatmax,devecfv(:,jst,jspn),1,zzero, & dvh,1) call zgemv('C',nmq,nm,zone,dloq,nmatmax,devecfv(:,jst,jspn),1,zzero, & dvo,1) do ist=1,nstfv dz1=2.d0*zdotc(nm,evecfv(:,ist,jspn),1,dvh,1) dz2=2.d0*zdotc(nm,evecfv(:,ist,jspn),1,dvo,1) dffv(ist,jst)=dffv(ist,jst)+dz1-t1*dz2 end do end do zsum=0.d0 if (tevecsv) then ! spin-polarised case do j=1,nstsv do ispn=ispn0,ispn1 i=(ispn-1)*nstfv+1 call zgemv('N',nstfv,nstfv,zone,ffv,nstfv,evecsv(i,j),1,zzero,y,1) call zgemv('N',nstfv,nstfv,zone,dffv,nstfv,evecsv(i,j),1,zzero,dy,1) call zgemv('N',nstfv,nstfv,zone,ffv,nstfv,devecsv(i,j),1,zone,dy,1) dz1=zdotc(nstfv,evecsv(i,j),1,dy,1) dz1=dz1+zdotc(nstfv,devecsv(i,j),1,y,1) zsum=zsum+occsv(j,jk)*dz1 end do end do else ! spin-unpolarised case do j=1,nstsv zsum=zsum+occsv(j,jk)*dffv(j,j) end do end if !$OMP ATOMIC dyn(l,ias)=dyn(l,ias)-wkptnr*zsum ! end loop over Cartesian components end do ! end loop over atoms and species end do ! end loop over first-variational spins end do deallocate(ijg,ijgq,dp,dpq,evalfv,devalfv) deallocate(apwalm,apwalmq,dapwalm) deallocate(evecfv,devecfv,evecsv,devecsv) deallocate(o,hq,oq,dh,od) deallocate(dlo,dlhq,dloq,ddlh,ddlo) deallocate(vo,dvh,dvo,ffv,dffv,y,dy) return end subroutine elk-2.3.22/src/PaxHeaders.22528/axangsu2.f900000644002504400250440000000005012337331323016246 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/axangsu2.f900000644002504400250440000000245512337331323017020 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: axangsu2 subroutine axangsu2(v,th,su2) ! !INPUT/OUTPUT PARAMETERS: ! v : rotation axis vector (in,real(3)) ! th : rotation angle (in,real) ! su2 : SU(2) representation of rotation (out,complex(2,2)) ! !DESCRIPTION: ! Finds the complex ${\rm SU}(2)$ representation of a rotation defined by an ! axis vector $\hat{\bf v}$ and angle $\theta$. The spinor rotation matrix is ! given explicitly by ! $$ R^{1/2}(\hat{\bf v},\theta)=I\cos\frac{\theta}{2} ! -i(\hat{\bf v}\cdot\vec{\sigma})\sin\frac{\theta}{2}. $$ ! ! !REVISION HISTORY: ! Created August 2007 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: v(3),th complex(8), intent(out) :: su2(2,2) ! local variables real(8) vn(3),cs,sn,t1 t1=sqrt(v(1)**2+v(2)**2+v(3)**2) if (t1.lt.1.d-6) then write(*,*) write(*,'("Error(axangsu2): zero length axis vector")') write(*,*) stop end if ! normalise the vector vn(:)=v(:)/t1 cs=cos(th/2.d0) sn=sin(th/2.d0) su2(1,1)=cmplx(cs,-vn(3)*sn,8) su2(1,2)=cmplx(-vn(2)*sn,-vn(1)*sn,8) su2(2,1)=cmplx(vn(2)*sn,-vn(1)*sn,8) su2(2,2)=cmplx(cs,vn(3)*sn,8) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writegeom.f900000644002504400250440000000005012337331323016520 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writegeom.f900000644002504400250440000000347112337331323017271 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writegeom ! !INTERFACE: subroutine writegeom(fnum) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! fnum : file number for writing output (in,integer) ! !DESCRIPTION: ! Outputs the lattice vectors and atomic positions to file, in a format ! which may be then used directly in {\tt elk.in}. ! ! !REVISION HISTORY: ! Created January 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum ! local variables integer is,ia,i real(8) v1(3),v2(3) write(fnum,*) write(fnum,'("scale")') write(fnum,'(" 1.0")') write(fnum,*) write(fnum,'("scale1")') write(fnum,'(" 1.0")') write(fnum,*) write(fnum,'("scale2")') write(fnum,'(" 1.0")') write(fnum,*) write(fnum,'("scale3")') write(fnum,'(" 1.0")') write(fnum,*) write(fnum,'("avec")') write(fnum,'(3G18.10)') avec(:,1) write(fnum,'(3G18.10)') avec(:,2) write(fnum,'(3G18.10)') avec(:,3) if (molecule) then write(fnum,*) write(fnum,'("molecule")') write(fnum,'(" ",L1)') molecule end if write(fnum,*) write(fnum,'("atoms")') write(fnum,'(I4,T40," : nspecies")') nspecies do is=1,nspecies write(fnum,'("''",A,"''",T40," : spfname")') trim(spfname(is)) write(fnum,'(I4,T40," : natoms; atpos, bfcmt below")') natoms(is) do ia=1,natoms(is) if (molecule) then ! map lattice coordinates to [-0.5,0.5) and write as Cartesian coordinates v1(:)=atposl(:,ia,is) do i=1,3 if (v1(i).gt.0.5d0) v1(i)=v1(i)-1.d0 end do call r3mv(avec,v1,v2) else ! otherwise write lattice coordinates v2(:)=atposl(:,ia,is) end if write(fnum,'(3F14.8," ",3F12.8)') v2(:),bfcmt(:,ia,is) end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writelat.f900000644002504400250440000000005012337331323016351 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writelat.f900000644002504400250440000000326412337331323017122 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writelat use modmain implicit none open(50,file='LATTICE'//trim(filext),action='WRITE',form='FORMATTED') write(50,*) write(50,'("+----------------------------+")') write(50,'("| Real-space lattice vectors |")') write(50,'("+----------------------------+")') write(50,*) write(50,'("vector a1 : ",3G18.10)') avec(:,1) write(50,'("vector a2 : ",3G18.10)') avec(:,2) write(50,'("vector a3 : ",3G18.10)') avec(:,3) write(50,*) write(50,'("Stored column-wise as a matrix :")') write(50,'(3G18.10)') avec(1,:) write(50,'(3G18.10)') avec(2,:) write(50,'(3G18.10)') avec(3,:) write(50,*) write(50,'("Inverse of matrix :")') write(50,'(3G18.10)') ainv(1,:) write(50,'(3G18.10)') ainv(2,:) write(50,'(3G18.10)') ainv(3,:) write(50,*) write(50,'("Unit cell volume : ",G18.10)') omega write(50,*) write(50,*) write(50,'("+----------------------------------+")') write(50,'("| Reciprocal-space lattice vectors |")') write(50,'("+----------------------------------+")') write(50,*) write(50,'("vector b1 : ",3G18.10)') bvec(:,1) write(50,'("vector b2 : ",3G18.10)') bvec(:,2) write(50,'("vector b3 : ",3G18.10)') bvec(:,3) write(50,*) write(50,'("Stored column-wise as a matrix :")') write(50,'(3G18.10)') bvec(1,:) write(50,'(3G18.10)') bvec(2,:) write(50,'(3G18.10)') bvec(3,:) write(50,*) write(50,'("Inverse of matrix :")') write(50,'(3G18.10)') binv(1,:) write(50,'(3G18.10)') binv(2,:) write(50,'(3G18.10)') binv(3,:) write(50,*) write(50,'("Brillouin zone volume : ",G18.10)') omegabz close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/r3frac.f900000644002504400250440000000005012337331323015676 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/r3frac.f900000644002504400250440000000175712337331323016454 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3frac ! !INTERFACE: subroutine r3frac(eps,v) ! !INPUT/OUTPUT PARAMETERS: ! eps : zero component tolerance (in,real) ! v : input vector (inout,real(3)) ! !DESCRIPTION: ! Finds the fractional part of each component of a real 3-vector using the ! function ${\rm frac}\,(x)=x-\lfloor x\rfloor$. A component is taken to be ! zero if it lies within the intervals $[0,\epsilon)$ or $(1-\epsilon,1]$. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) ! Removed iv, September 2011 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: eps real(8), intent(inout) :: v(3) ! local variables integer i do i=1,3 v(i)=v(i)-int(v(i)) if (v(i).lt.0.d0) v(i)=v(i)+1.d0 if ((1.d0-v(i)).lt.eps) v(i)=0.d0 if (v(i).lt.eps) v(i)=0.d0 end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genwfsv.f900000644002504400250440000000005012337331323016175 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genwfsv.f900000644002504400250440000001500312337331323016740 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genwfsv ! !INTERFACE: subroutine genwfsv(tsh,tgp,nst,idx,ngp,igpig,apwalm,evecfv,evecsv,wfmt,ld,wfir) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! tsh : .true. if wfmt should be in spherical harmonic basis (in,logical) ! tgp : .true. if wfir should be in G+p-space, otherwise in real-space ! (in,logical) ! nst : number of states to be calculated (in,integer) ! idx : index to states which are to be calculated (in,integer(nst)) ! ngp : number of G+p-vectors (in,integer(nspnfv)) ! igpig : index from G+p-vectors to G-vectors (in,integer(ngkmax,nspnfv)) ! apwalm : APW matching coefficients ! (in,complex(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) ! evecfv : first-variational eigenvectors (in,complex(nmatmax,nstfv,nspnfv)) ! evecsv : second-variational eigenvectors (in,complex(nstsv,nstsv)) ! wfmt : muffin-tin part of the wavefunctions for every state in spherical ! coordinates (out,complex(lmmaxvr,nrcmtmax,natmtot,nspinor,nst)) ! ld : leading dimension, at least ngkmax if tgp is .true. and ngtot if ! tgp is .false. (in,integer) ! wfir : interstitial part of the wavefunctions for every state ! (out,complex(ld,nspinor,nst)) ! !DESCRIPTION: ! Calculates the second-variational spinor wavefunctions in both the ! muffin-tin and interstitial regions for every state of a particular ! $k$-point. The wavefunctions in both regions are stored on a real-space ! grid. A coarse radial mesh is assumed in the muffin-tins with with angular ! momentum cut-off of {\tt lmaxvr}. If {\tt tocc} is {\tt .true.}, then only ! those states with occupancy greater than {\tt epsocc} are calculated. ! ! !REVISION HISTORY: ! Created November 2004 (Sharma) ! Updated for spin-spirals, June 2010 (JKD) !EOP !BOC implicit none ! arguments logical, intent(in) :: tsh,tgp integer, intent(in) :: nst,idx(nst) integer, intent(in) :: ngp(nspnfv) integer, intent(in) :: igpig(ngkmax,nspnfv) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv) complex(8), intent(in) :: evecfv(nmatmax,nstfv,nspnfv) complex(8), intent(in) :: evecsv(nstsv,nstsv) complex(8), intent(out) :: wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nst) integer, intent(in) :: ld complex(8), intent(out) :: wfir(ld,nspinor,nst) ! local variables integer ist,ispn,jspn integer is,ia,ias,nrc,nrci integer igp,ifg,i,j,k real(8) t1 complex(8) zq(2),z1 ! automatic arrays logical done(nstfv,nspnfv) ! allocatable arrays complex(8), allocatable :: wfmt1(:,:,:,:),wfmt2(:,:) !--------------------------------! ! muffin-tin wavefunction ! !--------------------------------! if (tevecsv) allocate(wfmt1(lmmaxvr,nrcmtmax,nstfv,nspnfv)) if (.not.tsh) allocate(wfmt2(lmmaxvr,nrcmtmax)) do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) ! de-phasing factor for spin-spirals if (spinsprl.and.ssdph) then t1=-0.5d0*dot_product(vqcss(:),atposc(:,ia,is)) zq(1)=cmplx(cos(t1),sin(t1),8) zq(2)=conjg(zq(1)) end if done(:,:)=.false. ! loop only over required states do j=1,nst ! index to state in evecsv k=idx(j) if (tevecsv) then ! generate spinor wavefunction from second-variational eigenvectors i=0 do ispn=1,nspinor jspn=jspnfv(ispn) if (tsh) then wfmt(:,:,ias,ispn,j)=0.d0 else wfmt2(:,:)=0.d0 end if do ist=1,nstfv i=i+1 z1=evecsv(i,k) if (spinsprl.and.ssdph) z1=z1*zq(ispn) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (.not.done(ist,jspn)) then call wavefmt(lradstp,lmaxvr,ias,ngp(jspn), & apwalm(:,:,:,:,jspn),evecfv(:,ist,jspn),lmmaxvr, & wfmt1(:,:,ist,jspn)) done(ist,jspn)=.true. end if ! add to spinor wavefunction if (tsh) then call zfmtadd(nrc,nrci,z1,wfmt1(:,:,ist,jspn), & wfmt(:,:,ias,ispn,j)) else call zfmtadd(nrc,nrci,z1,wfmt1(:,:,ist,jspn),wfmt2) end if end if end do ! convert to spherical coordinates if required if (.not.tsh) then call zbsht(nrc,nrci,wfmt2,wfmt(:,:,ias,ispn,j)) end if end do else ! spin-unpolarised wavefunction if (tsh) then call wavefmt(lradstp,lmaxvr,ias,ngp,apwalm,evecfv(:,k,1),lmmaxvr, & wfmt(:,:,ias,1,j)) else call wavefmt(lradstp,lmaxvr,ias,ngp,apwalm,evecfv(:,k,1),lmmaxvr, & wfmt2) ! convert from to spherical coordinates call zbsht(nrc,nrci,wfmt2,wfmt(:,:,ias,1,j)) end if end if ! end loop over second-variational states end do ! end loops over atoms and species end do end do if (tevecsv) deallocate(wfmt1) if (.not.tsh) deallocate(wfmt2) !-----------------------------------! ! interstitial wavefunction ! !-----------------------------------! t1=1.d0/sqrt(omega) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(i,k,ispn,jspn,ist) & !$OMP PRIVATE(z1,igp,ifg) !$OMP DO do j=1,nst k=idx(j) wfir(:,:,j)=0.d0 if (tevecsv) then ! generate spinor wavefunction from second-variational eigenvectors i=0 do ispn=1,nspinor jspn=jspnfv(ispn) do ist=1,nstfv i=i+1 z1=evecsv(i,k) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (tgp) then ! wavefunction in G+p-space do igp=1,ngp(jspn) wfir(igp,ispn,j)=wfir(igp,ispn,j)+z1*evecfv(igp,ist,jspn) end do else ! wavefunction in real-space z1=t1*z1 do igp=1,ngp(jspn) ifg=igfft(igpig(igp,jspn)) wfir(ifg,ispn,j)=wfir(ifg,ispn,j)+z1*evecfv(igp,ist,jspn) end do end if end if end do end do else ! spin-unpolarised wavefunction if (tgp) then do igp=1,ngp(1) wfir(igp,1,j)=evecfv(igp,k,1) end do else do igp=1,ngp(1) ifg=igfft(igpig(igp,1)) wfir(ifg,1,j)=t1*evecfv(igp,k,1) end do end if end if ! Fourier transform wavefunction to real-space if required if (.not.tgp) then do ispn=1,nspinor call zfftifc(3,ngridg,1,wfir(:,ispn,j)) end do end if end do !$OMP END DO !$OMP END PARALLEL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/readgamma.f900000644002504400250440000000005012337331324016435 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/readgamma.f900000644002504400250440000000404512337331324017204 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readgamma(gq) use modmain use modphonon implicit none ! arguments real(8), intent(out) :: gq(nbph,nqpt) ! local variables integer iq,i integer natmtot_,nqpt_,iq_,i_ real(8) vql_(3),vqc_(3),t1 open(50,file='GAMMAQ.OUT',action='READ',form='FORMATTED',status='OLD') read(50,*) read(50,*) natmtot_ if (natmtot.ne.natmtot_) then write(*,*) write(*,'("Error(readgamma): differing natmtot")') write(*,'(" current : ",I4)') natmtot write(*,'(" GAMMAQ.OUT : ",I4)') natmtot_ write(*,*) stop end if read(50,*) nqpt_ if (nqpt.ne.nqpt_) then write(*,*) write(*,'("Error(readgamma): differing nqpt")') write(*,'(" current : ",I6)') nqpt write(*,'(" GAMMAQ.OUT : ",I6)') nqpt_ write(*,*) stop end if read(50,*) do iq=1,nqpt read(50,*) iq_ if (iq.ne.iq_) then write(*,*) write(*,'("Error(readgamma): incorrect q-point index in GAMMAQ.OUT for & &q-point ",I6)') iq write(*,*) stop end if read(50,*) vql_ t1=sum(abs(vql(:,iq)-vql_(:))) if (t1.gt.epslat) then write(*,*) write(*,'("Error(readgamma): differing q-vectors in lattice coordinates & &for q-point ",I6)') iq write(*,'(" current : ",3G18.10)') vql(:,iq) write(*,'(" GAMMAQ.OUT : ",3G18.10)') vql_ write(*,*) stop end if read(50,*) vqc_ t1=sum(abs(vqc(:,iq)-vqc_(:))) if (t1.gt.epslat) then write(*,*) write(*,'("Error(readgamma): differing q-vectors in Cartesian coordinates & &for q-point ",I6)') iq write(*,'(" current : ",3G18.10)') vqc(:,iq) write(*,'(" GAMMAQ.OUT : ",3G18.10)') vqc_ write(*,*) stop end if do i=1,nbph read(50,*) i_,gq(i,iq) if (i.ne.i_) then write(*,*) write(*,'("Error(readgamma): incorrect mode index in GAMMAQ.OUT for & &q-point ",I6)') iq write(*,*) stop end if end do read(50,*) end do close(50) return stop end subroutine elk-2.3.22/src/PaxHeaders.22528/sdelta_mp.f900000644002504400250440000000005012337331323016466 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sdelta_mp.f900000644002504400250440000000341112337331323017231 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: sdelta_mp ! !INTERFACE: real(8) function sdelta_mp(n,x) ! !INPUT/OUTPUT PARAMETERS: ! n : order (in,integer) ! x : real argument (in,real) ! !DESCRIPTION: ! Returns the smooth approximation to the Dirac delta function of order $N$ ! given by Methfessel and Paxton, {\it Phys. Rev. B} {\bf 40}, 3616 (1989), ! $$ \tilde\delta(x)=\sum_{i=0}^N \frac{(-1)^i}{i!4^n\sqrt\pi} H_{2i}(x) ! e^{-x^2},$$ ! where $H_j$ is the $j$th-order Hermite polynomial. This function has the ! property ! $$ \int_{-\infty}^{\infty}\tilde\delta(x)P(x)=P(0), $$ ! where $P(x)$ is any polynomial of degree $2N+1$ or less. The case $N=0$ ! corresponds to Gaussian smearing. This procedure is numerically stable ! and accurate to near machine precision for $N\le 10$. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: x ! local variables integer i real(8), parameter :: sqpi=1.7724538509055160273d0 real(8) sum,t1 ! external functions real(8) factnm,hermite external factnm,hermite if (n.eq.0) then sdelta_mp=exp(-x**2)/sqpi return end if if (n.lt.0) then write(*,*) write(*,'("Error(sdelta_mp): n < 0 : ",I8)') n write(*,*) stop end if if (n.gt.10) then write(*,*) write(*,'("Error(sdelta_mp): n out of range : ",I8)') n write(*,*) stop end if if (abs(x).gt.12.d0) then sdelta_mp=0.d0 return end if sum=0.d0 do i=0,n t1=1.d0/(factnm(i,1)*dble(4**i)*sqpi) if (mod(i,2).ne.0) t1=-t1 sum=sum+t1*hermite(2*i,x)*exp(-x**2) end do sdelta_mp=sum return end function !EOC elk-2.3.22/src/PaxHeaders.22528/putevalfv.f900000644002504400250440000000005012337331323016532 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/putevalfv.f900000644002504400250440000000122212337331323017273 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine putevalfv(ik,evalfv) use modmain implicit none ! arguments integer, intent(in) :: ik real(8), intent(in) :: evalfv(nstfv,nspnfv) ! local variables integer recl ! find the record length inquire(iolength=recl) vkl(:,ik),nstfv,nspnfv,evalfv !$OMP CRITICAL open(70,file='EVALFV'//trim(filext),action='WRITE',form='UNFORMATTED', & access='DIRECT',recl=recl) write(70,rec=ik) vkl(:,ik),nstfv,nspnfv,evalfv close(70) !$OMP END CRITICAL return end subroutine elk-2.3.22/src/PaxHeaders.22528/fxc_pwca.f900000644002504400250440000000005012337331324016311 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/fxc_pwca.f900000644002504400250440000001241112337331324017054 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine fxc_pwca(n,rhoup,rhodn,fxcuu,fxcud,fxcdd) implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: rhoup(n) real(8), intent(in) :: rhodn(n) real(8), intent(out) :: fxcuu(n) real(8), intent(out) :: fxcud(n) real(8), intent(out) :: fxcdd(n) ! local variables integer i real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: thrd=1.d0/3.d0, thrd4=4.d0/3.d0 real(8), parameter :: d2f0=1.709921d0 real(8) a(3),a1(3),b1(3),b2(3),b3(3),b4(3) data a / 0.0310907d0, 0.01554535d0, 0.0168869d0 / data a1 / 0.21370d0, 0.20548d0, 0.11125d0 / data b1 / 7.5957d0, 14.1189d0, 10.357d0 / data b2 / 3.5876d0, 6.1977d0, 3.6231d0 / data b3 / 1.6382d0, 3.3662d0, 0.88026d0 / data b4 / 0.49294d0, 0.62517d0, 0.49671d0 / real(8) p1,p2,p3,rup,rdn,r,ri,ri2,ri3 real(8) rs,rs2,rs12,rs32,rsi,rs12i,rs32i real(8) mz,z,z2,z3,z4,fz,dfz,d2fz real(8) drs,d2rs,dzu,d2zu,dzd,d2zd,d2zud real(8) ders,d2ers,dez,d2ez,d2ersz real(8) deu,d2eu,ded,d2ed,d2eud,ex real(8) ec0,dec0,d2ec0,ec1,dec1,d2ec1 real(8) ac,dac,d2ac,a2,dt1,d2t1,dt2,d2t2 real(8) t1,t2,t3,t4,t5,t6,t7,t8 if (n.le.0) then write(*,*) write(*,'("Error(xc_pwca): invalid n : ",I8)') n write(*,*) stop end if ! prefactors t1=3.d0/(4.d0*pi) p1=t1**thrd p2=t1*(9.d0*pi/4.d0)**thrd p3=1.d0/(2.d0**thrd4-2.d0) do i=1,n rup=rhoup(i); rdn=rhodn(i) ! total density r=rup+rdn if ((rup.lt.0.d0).or.(rdn.lt.0.d0).or.(r.lt.1.d-20)) then fxcuu(i)=0.d0 fxcud(i)=0.d0 fxcdd(i)=0.d0 cycle end if ri=1.d0/r ri2=ri**2 ri3=ri2*ri rs=p1*ri**thrd rs2=rs**2 rs12=sqrt(rs) rs32=rs12*rs rsi=1.d0/rs rs12i=1.d0/rs12 rs32i=1.d0/rs32 mz=rup-rdn z=mz/r z2=z**2 z3=z2*z z4=z3*z ! drs/drup = drs/drdn = drs/drho drs=-thrd*rs*ri ! d2rs/drup^2 = d^2rs/drn^2 = d^2rs/drho^2 d2rs=-thrd4*drs*ri ! dz/drup, dz/drdn t1=mz*ri2 dzu=ri-t1 dzd=-ri-t1 ! d^2z/drup^2, d^2z/drdn^2, d^2z/drup*drdn t1=2.d0*mz*ri3 t2=2.d0*ri2 d2zu=t1-t2 d2zd=t1+t2 d2zud=t1 !------------------! ! exchange ! !------------------! t1=-p2*rsi/2.d0 t2=1.d0+z t3=1.d0-z t4=t2**thrd4 t5=t3**thrd4 t6=t4+t5 ! exchange energy density ex=t1*t6 ! dex/drs ders=-ex*rsi ! d^2ex/drs^2 d2ers=-2.d0*ders*rsi ! f(z) fz=p3*(t6-2.d0) ! dex/dz t4=t4/t2 t5=t5/t3 t6=t4-t5 t7=thrd4*t6 dez=t1*t7 ! df/dz dfz=p3*t7 ! d^2ex/dz^2 t4=t4/t2 t5=t5/t3 t6=t4+t5 t7=thrd4*thrd*t6 d2ez=t1*t7 ! d^2f/dz^2 d2fz=p3*t7 ! d^2ex/drs*dz d2ersz=-dez*rsi ! dex/drup, dex/drdn t1=ders*drs deu=t1+dez*dzu ded=t1+dez*dzd ! d^2ex/drup^2 t1=d2ers*drs t2=d2ersz*drs t3=ders*d2rs t4=(t1+d2ersz*dzu)*drs+t3 t5=t2+d2ez*dzu d2eu=t4+t5*dzu+dez*d2zu ! d^2ex/drdn^2 d2ed=(t1+d2ersz*dzd)*drs+t3+(t2+d2ez*dzd)*dzd+dez*d2zd ! d^2ex/drup*drdn d2eud=t4+t5*dzd+dez*d2zud ! calculate fxc fxcuu(i)=2.d0*deu+r*d2eu fxcud(i)=deu+ded+r*d2eud fxcdd(i)=2.d0*ded+r*d2ed !---------------------! ! correlation ! !---------------------! ! ec(rs,0) a2=2.d0*a(1) t1=a2*(b1(1)*rs12+b2(1)*rs+b3(1)*rs32+b4(1)*rs2) dt1=a2*(0.5d0*b1(1)*rs12i+b2(1)+1.5d0*b3(1)*rs12+2.d0*b4(1)*rs) d2t1=a2*(-0.25d0*b1(1)*rs32i+0.75d0*b3(1)*rs12i+2.d0*b4(1)) t3=1.d0/t1 t4=t3**2 t2=1.d0+t3 dt2=-dt1*t4 d2t2=t4*(2.d0*t3*dt1**2-d2t1) t3=1.d0/t2 t4=1.d0+a1(1)*rs t5=log(t2) ec0=-a2*t4*t5 dec0=-a2*(a1(1)*t5+t4*t3*dt2) d2ec0=-a2*(2.d0*a1(1)*t3*dt2+t4*t3*(d2t2-t3*dt2**2)) ! ec(rs,1) a2=2.d0*a(2) t1=a2*(b1(2)*rs12+b2(2)*rs+b3(2)*rs32+b4(2)*rs2) dt1=a2*(0.5d0*b1(2)*rs12i+b2(2)+1.5d0*b3(2)*rs12+2.d0*b4(2)*rs) d2t1=a2*(-0.25d0*b1(2)*rs32i+0.75d0*b3(2)*rs12i+2.d0*b4(2)) t3=1.d0/t1 t4=t3**2 t2=1.d0+t3 dt2=-dt1*t4 d2t2=t4*(2.d0*t3*dt1**2-d2t1) t3=1.d0/t2 t4=1.d0+a1(2)*rs t5=log(t2) ec1=-a2*t4*t5 dec1=-a2*(a1(2)*t5+t4*t3*dt2) d2ec1=-a2*(2.d0*a1(2)*t3*dt2+t4*t3*(d2t2-t3*dt2**2)) ! ac(rs) a2=2.d0*a(3) t1=a2*(b1(3)*rs12+b2(3)*rs+b3(3)*rs32+b4(3)*rs2) dt1=a2*(0.5d0*b1(3)*rs12i+b2(3)+1.5d0*b3(3)*rs12+2.d0*b4(3)*rs) d2t1=a2*(-0.25d0*b1(3)*rs32i+0.75d0*b3(3)*rs12i+2.d0*b4(3)) t3=1.d0/t1 t4=t3**2 t2=1.d0+t3 dt2=-dt1*t4 d2t2=t4*(2.d0*t3*dt1**2-d2t1) t3=1.d0/t2 t4=1.d0+a1(3)*rs t5=log(t2) ac=a2*t4*t5 dac=a2*(a1(3)*t5+t4*t3*dt2) d2ac=a2*(2.d0*a1(3)*t3*dt2+t4*t3*(d2t2-t3*dt2**2)) ! correlation energy density derivatives t1=1.d0-z4 t2=(fz/d2f0)*t1 t3=ec1-ec0 t4=fz*z4 ! dec/drs t5=dec1-dec0 ders=dec0+dac*t2+t5*t4 ! d^2ec/drs^2 t6=d2ec1-d2ec0 d2ers=d2ec0+d2ac*t2+t6*t4 ! dec/dz t4=ac/d2f0 t6=4.d0*fz*z3 t7=dfz*t1-t6 t8=dfz*z4+t6 dez=t4*t7+t3*t8 ! d^2ec/drs*dz d2ersz=(dac/d2f0)*t7+t5*t8 ! d^2ec/dz^2 t7=8.d0*dfz*z3 t8=12.d0*fz*z2 d2ez=t4*(d2fz*t1-t7-t8)+t3*(d2fz*z4+t7+t8) ! dec/drup, dec/drdn t1=ders*drs deu=t1+dez*dzu ded=t1+dez*dzd ! d^2ec/drup^2 t1=d2ers*drs t2=d2ersz*drs t3=ders*d2rs t4=(t1+d2ersz*dzu)*drs+t3 t5=t2+d2ez*dzu d2eu=t4+t5*dzu+dez*d2zu ! d^2ec/drdn^2 d2ed=(t1+d2ersz*dzd)*drs+t3+(t2+d2ez*dzd)*dzd+dez*d2zd ! d^2ec/drup*drdn d2eud=t4+t5*dzd+dez*d2zud ! calculate fxc fxcuu(i)=fxcuu(i)+2.d0*deu+r*d2eu fxcud(i)=fxcud(i)+deu+ded+r*d2eud fxcdd(i)=fxcdd(i)+2.d0*ded+r*d2ed end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/genvfxcg.f900000644002504400250440000000005012337331324016326 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvfxcg.f900000644002504400250440000000223312337331324017072 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genvfxcg(gqc,vfxc) use modmain implicit none ! arguments real(8), intent(in) :: gqc(ngrf) complex(8), intent(out) :: vfxc(ngrf,ngrf,nwrf) ! local variables integer ig,jg,kg,iv(3) real(8) t0 complex(8) z1 ! allocatable arrays real(8), allocatable :: fxcmt(:,:,:),fxcir(:) complex(8), allocatable :: fxcg(:) allocate(fxcmt(lmmaxvr,nrmtmax,natmtot),fxcir(ngtot)) allocate(fxcg(ngtot)) ! generate the kernel f_xc in real-space call genfxcr(.true.,fxcmt,fxcir) ! Fourier transform the kernel to G-space call zftrf(ngtot,ivg,vgc,fxcmt,fxcir,fxcg) t0=1.d0/fourpi do ig=1,ngrf do jg=1,ngrf iv(:)=ivg(:,ig)-ivg(:,jg) if ((iv(1).ge.intgv(1,1)).and.(iv(1).le.intgv(2,1)).and. & (iv(2).ge.intgv(1,2)).and.(iv(2).le.intgv(2,2)).and. & (iv(3).ge.intgv(1,3)).and.(iv(3).le.intgv(2,3))) then kg=ivgig(iv(1),iv(2),iv(3)) z1=t0*fxcg(kg)*(gqc(ig)*gqc(jg)) vfxc(ig,jg,:)=z1 end if end do end do deallocate(fxcmt,fxcir,fxcg) return end subroutine elk-2.3.22/src/PaxHeaders.22528/phdos.f900000644002504400250440000000005012337331324015634 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phdos.f900000644002504400250440000001031012337331324016373 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phdos use modmain use modphonon use modtest implicit none ! local variables integer iq,i,iw integer i1,i2,i3 real(8) wmin,wmax,wd,dw real(8) tmax,temp(ntemp),s(ntemp) real(8) v(3),t1,t2 ! allocatable arrays real(8), allocatable :: wp(:),w(:),gw(:) real(8), allocatable :: f(:),g(:) complex(8), allocatable :: dynq(:,:,:),dynr(:,:,:) complex(8), allocatable :: dynp(:,:),ev(:,:) ! initialise universal variables call init0 call init2 allocate(wp(nbph)) allocate(w(nwplot)) allocate(gw(nwplot)) allocate(f(nwplot),g(nwplot)) allocate(dynq(nbph,nbph,nqpt)) allocate(dynr(nbph,nbph,nqptnr)) allocate(dynp(nbph,nbph)) allocate(ev(nbph,nbph)) ! read in the dynamical matrices call readdyn(dynq) ! apply the acoustic sum rule call sumrule(dynq) ! Fourier transform the dynamical matrices to real-space call dynqtor(dynq,dynr) ! find the minimum and maximum frequencies wmin=0.d0 wmax=0.d0 do iq=1,nqpt call dynev(dynq(:,:,iq),wp,ev) wmin=min(wmin,wp(1)) wmax=max(wmax,wp(nbph)) end do wmax=wmax+(wmax-wmin)*0.1d0 wmin=wmin-(wmax-wmin)*0.1d0 wd=wmax-wmin if (wd.lt.1.d-8) wd=1.d0 dw=wd/dble(nwplot) ! generate energy grid do iw=1,nwplot w(iw)=dw*dble(iw-1)+wmin end do gw(:)=0.d0 do i1=0,ngrkf-1 v(1)=dble(i1)/dble(ngrkf) do i2=0,ngrkf-1 v(2)=dble(i2)/dble(ngrkf) do i3=0,ngrkf-1 v(3)=dble(i3)/dble(ngrkf) ! compute the dynamical matrix at this particular q-point call dynrtoq(v,dynr,dynp) ! find the phonon frequencies call dynev(dynp,wp,ev) do i=1,nbph t1=(wp(i)-wmin)/dw+1.d0 iw=nint(t1) if ((iw.ge.1).and.(iw.le.nwplot)) then gw(iw)=gw(iw)+1.d0 end if end do end do end do end do t1=1.d0/(dw*dble(ngrkf)**3) gw(:)=t1*gw(:) ! smooth phonon DOS if required if (nswplot.gt.0) call fsmooth(nswplot,nwplot,1,gw) ! write phonon DOS to file open(50,file='PHDOS.OUT',action='WRITE',form='FORMATTED') do iw=1,nwplot write(50,'(2G18.10)') w(iw),gw(iw) end do close(50) write(*,*) write(*,'("Info(phdos):")') write(*,'(" phonon density of states written to PHDOS.OUT")') !-------------------------------------------! ! thermodynamic properties from DOS ! !-------------------------------------------! ! maximum temperature tmax=wmax/kboltz ! temperature grid do i=1,ntemp temp(i)=tmax*dble(i)/dble(ntemp) end do open(50,file='THERMO.OUT',action='WRITE',form='FORMATTED') ! zero point energy do iw=1,nwplot f(iw)=gw(iw)*w(iw) end do call fderiv(-1,nwplot,w,f,g) t1=0.5d0*dble(natmtot)*g(nwplot) write(50,*) write(50,'("Zero-point energy : ",G18.10)') t1 ! vibrational energy write(50,*) write(50,'("Vibrational energy vs. temperature :")') do i=1,ntemp do iw=1,nwplot t1=w(iw)/(2.d0*kboltz*temp(i)) if (t1.gt.0.d0) then f(iw)=gw(iw)*w(iw)*cosh(t1)/sinh(t1) else f(iw)=0.d0 end if end do call fderiv(-1,nwplot,w,f,g) t1=0.5d0*dble(natmtot)*g(nwplot) write(50,'(2G18.10)') temp(i),t1 s(i)=t1 end do ! free energy write(50,*) write(50,'("Free energy vs. temperature :")') do i=1,ntemp do iw=1,nwplot t1=2.d0*sinh(w(iw)/(2.d0*kboltz*temp(i))) if (t1.gt.0.d0) then f(iw)=gw(iw)*log(t1) else f(iw)=0.d0 end if end do call fderiv(-1,nwplot,w,f,g) t1=dble(natmtot)*kboltz*temp(i)*g(nwplot) write(50,'(2G18.10)') temp(i),t1 ! compute entropy from S = (F-E)/T s(i)=(s(i)-t1)/temp(i) end do ! entropy write(50,*) write(50,'("Entropy vs. temperature :")') do i=1,ntemp write(50,'(2G18.10)') temp(i),s(i) end do ! heat capacity write(50,*) write(50,'("Heat capacity vs. temperature :")') do i=1,ntemp do iw=1,nwplot t1=w(iw)/(kboltz*temp(i)) t2=exp(t1)-1.d0 if (t2.ne.0.d0) then f(iw)=gw(iw)*(t1**2)*(t2+1.d0)/t2**2 else f(iw)=0.d0 end if end do call fderiv(-1,nwplot,w,f,g) t1=dble(natmtot)*kboltz*g(nwplot) write(50,'(2G18.10)') temp(i),t1 end do close(50) write(*,'(" thermodynamic properties written to THERMO.OUT")') ! write phonon DOS to test file call writetest(210,'phonon DOS',nv=nwplot,tol=1.d-2,rva=gw) deallocate(wp,w,gw,f,g,dynq,dynr,dynp,ev) return end subroutine elk-2.3.22/src/PaxHeaders.22528/oepmain.f900000644002504400250440000000005012337331324016147 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/oepmain.f900000644002504400250440000001270712337331324016722 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine oepmain use modmain use modmpi implicit none ! local variables integer ik,idm,is,ias integer nr,nrc,nrci,n,it real(8) tau,resp,t1 ! allocatable arrays real(8), allocatable :: rfmt1(:,:,:),rfmt2(:,:),rfir(:) real(8), allocatable :: rvfmt(:,:,:,:),rvfir(:,:) real(8), allocatable :: dvxmt(:,:,:),dvxir(:) real(8), allocatable :: dbxmt(:,:,:,:),dbxir(:,:) complex(8), allocatable :: vclcv(:,:,:,:),vclvv(:,:,:) ! external functions real(8) rfinp external rfinp if (iscl.lt.1) return ! calculate Coulomb matrix elements allocate(vclcv(ncrmax,natmtot,nstsv,nkpt)) allocate(vclvv(nstsv,nstsv,nkpt)) call oepvcl(vclcv,vclvv) ! allocate local arrays allocate(rfmt1(lmmaxvr,nrmtmax,natmtot),rfir(ngtot)) allocate(dvxmt(lmmaxvr,nrcmtmax,natmtot),dvxir(ngtot)) if (spinpol) then allocate(rvfmt(lmmaxvr,nrmtmax,natmtot,ndmag)) allocate(rvfir(ngtot,ndmag)) allocate(dbxmt(lmmaxvr,nrcmtmax,natmtot,ndmag)) allocate(dbxir(ngtot,ndmag)) end if ! set the exchange potential to zero zvxmt(:,:,:)=0.d0 zvxir(:)=0.d0 if (spinpol) then zbxmt(:,:,:,:)=0.d0 zbxir(:,:)=0.d0 end if resp=0.d0 ! initial step size tau=tauoep(1) !------------------------------! ! start iteration loop ! !------------------------------! do it=1,maxitoep if ((mod(it,10).eq.0).and.mp_mpi) then write(*,'("Info(oepmain): done ",I4," iterations of ",I4)') it,maxitoep end if ! zero the residuals dvxmt(:,:,:)=0.d0 dvxir(:)=0.d0 if (spinpol) then dbxmt(:,:,:,:)=0.d0 dbxir(:,:)=0.d0 end if ! calculate the k-dependent residuals !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle call oepresk(ik,vclcv,vclvv,dvxmt,dvxir,dbxmt,dbxir) end do !$OMP END DO !$OMP END PARALLEL ! add residuals from each process and redistribute if (np_mpi.gt.1) then n=lmmaxvr*nrcmtmax*natmtot call mpi_allreduce(mpi_in_place,dvxmt,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) call mpi_allreduce(mpi_in_place,dvxir,ngtot,mpi_double_precision, & mpi_sum,mpi_comm_kpt,ierror) if (spinpol) then n=n*ndmag call mpi_allreduce(mpi_in_place,dbxmt,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) n=ngtot*ndmag call mpi_allreduce(mpi_in_place,dbxir,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) end if end if ! convert muffin-tin residuals to spherical harmonics !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is,idm) !$OMP DO do ias=1,natmtot is=idxis(ias) call rfsht(nrcmt(is),nrcmtinr(is),1,dvxmt(:,:,ias),lradstp,rfmt1(:,:,ias)) do idm=1,ndmag call rfsht(nrcmt(is),nrcmtinr(is),1,dbxmt(:,:,ias,idm),lradstp, & rvfmt(:,:,ias,idm)) end do end do !$OMP END DO !$OMP END PARALLEL ! symmetrise the residuals call symrf(lradstp,rfmt1,dvxir) if (spinpol) call symrvf(lradstp,rvfmt,dbxir) ! magnitude of residuals resoep=sqrt(abs(rfinp(lradstp,rfmt1,rfmt1,dvxir,dvxir))) do idm=1,ndmag t1=rfinp(lradstp,rvfmt(:,:,:,idm),rvfmt(:,:,:,idm),dbxir(:,idm), & dbxir(:,idm)) resoep=resoep+sqrt(abs(t1)) end do resoep=resoep/omega ! adjust step size if (it.gt.1) then if (resoep.gt.resp) then tau=tau*tauoep(2) else tau=tau*tauoep(3) end if end if resp=resoep ! update complex potential and field !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(rfmt2,is,nrc,nrci,idm) !$OMP DO do ias=1,natmtot allocate(rfmt2(lmmaxvr,nrcmtmax)) is=idxis(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) ! convert residual to spherical coordinates and subtract from complex potential call rbsht(nrc,nrci,lradstp,rfmt1(:,:,ias),1,rfmt2) zvxmt(:,1:nrc,ias)=zvxmt(:,1:nrc,ias)-tau*rfmt2(:,1:nrc) do idm=1,ndmag call rbsht(nrc,nrci,lradstp,rvfmt(:,:,ias,idm),1,rfmt2) zbxmt(:,1:nrc,ias,idm)=zbxmt(:,1:nrc,ias,idm)-tau*rfmt2(:,1:nrc) end do deallocate(rfmt2) end do !$OMP END DO !$OMP END PARALLEL zvxir(:)=zvxir(:)-tau*dvxir(:) do idm=1,ndmag zbxir(:,idm)=zbxir(:,idm)-tau*dbxir(:,idm) end do ! end iteration loop end do ! generate the real potential and field !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(rfmt2,is,nrc,nrci,idm) !$OMP DO do ias=1,natmtot allocate(rfmt2(lmmaxvr,nrcmtmax)) is=idxis(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) rfmt2(:,1:nrc)=dble(zvxmt(:,1:nrc,ias)) call rfsht(nrc,nrci,1,rfmt2,lradstp,rfmt1(:,:,ias)) do idm=1,ndmag rfmt2(:,1:nrc)=dble(zbxmt(:,1:nrc,ias,idm)) call rfsht(nrc,nrci,1,rfmt2,lradstp,rvfmt(:,:,ias,idm)) end do deallocate(rfmt2) end do !$OMP END DO !$OMP END PARALLEL ! convert potential and field from a coarse to a fine radial mesh call rfmtctof(rfmt1) do idm=1,ndmag call rfmtctof(rvfmt(:,:,:,idm)) end do ! add to existing (density derived) correlation potential and field do ias=1,natmtot is=idxis(ias) nr=nrmt(is) vxcmt(:,1:nr,ias)=vxcmt(:,1:nr,ias)+rfmt1(:,1:nr,ias) do idm=1,ndmag bxcmt(:,1:nr,ias,idm)=bxcmt(:,1:nr,ias,idm)+rvfmt(:,1:nr,ias,idm) end do end do vxcir(:)=vxcir(:)+dble(zvxir(:)) do idm=1,ndmag bxcir(:,idm)=bxcir(:,idm)+dble(zbxir(:,idm)) end do ! symmetrise the exchange potential and field call symrf(1,vxcmt,vxcir) if (spinpol) call symrvf(1,bxcmt,bxcir) deallocate(rfmt1,rfir,vclcv,vclvv) deallocate(dvxmt,dvxir) if (spinpol) then deallocate(rvfmt,rvfir) deallocate(dbxmt,dbxir) end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/dmatch.f900000644002504400250440000000005012337331324015757 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dmatch.f900000644002504400250440000000161112337331324016522 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dmatch(ias,ip,ngp,vgpc,apwalm,dapwalm) use modmain implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ip integer, intent(in) :: ngp real(8), intent(in) :: vgpc(3,ngkmax) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(out) :: dapwalm(ngkmax,apwordmax,lmmaxapw) ! local variables integer is,l,m,lm,io,igp complex(8) z1 ! take derivative with respect to atomic displacement is=idxis(ias) lm=0 do l=0,lmaxapw do m=-l,l lm=lm+1 do io=1,apword(l,is) do igp=1,ngp z1=apwalm(igp,io,lm,ias) dapwalm(igp,io,lm)=vgpc(ip,igp)*cmplx(-aimag(z1),dble(z1),8) end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/writelambda.f900000644002504400250440000000005012337331324017012 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writelambda.f900000644002504400250440000000161712337331324017563 0ustar00dewhurstdewhurst00000000000000 subroutine writelambda(wq,gq) use modmain use modphonon implicit none ! arguments real(8), intent(in) :: wq(nbph,nqpt),gq(nbph,nqpt) ! local variables integer iq,i real(8) t1,t2 open(50,file='LAMBDAQ.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'(I4," : total number of atoms")') natmtot write(50,'(I6," : number of q-points")') nqpt write(50,*) do iq=1,nqpt write(50,'(I6," : q-point")') iq write(50,'(3G18.10," : q-vector (lattice coordinates)")') vql(:,iq) write(50,'(3G18.10," : q-vector (Cartesian coordinates)")') vqc(:,iq) do i=1,nbph t1=pi*fermidos*wq(i,iq)**2 if (t1.gt.1.d-8) then t2=gq(i,iq)/t1 else t2=0.d0 end if write(50,'(I4,G18.10)') i,t2 end do write(50,*) end do close(50) write(*,*) write(*,'("Info(writelambda):")') write(*,'(" wrote electron-phonon coupling constants for all q-points to & &LAMBDAQ.OUT")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/getdevecfv.f900000644002504400250440000000005012337331324016641 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/getdevecfv.f900000644002504400250440000000356012337331324017411 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getdevecfv(ik,iq,is,ia,ip,devecfv) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ik,iq,is,ia,ip complex(8), intent(out) :: devecfv(nmatmax,nstfv,nspnfv) ! local variables integer recl,nmatmax_,nstfv_,nspnfv_ real(8) vkl_(3),t1 character(256) fext,fname ! construct the phonon file extension call phfext(iq,is,ia,ip,fext) ! construct filename fname='DEVECFV'//trim(fext) ! find the record length inquire(iolength=recl) vkl_,nmatmax_,nstfv_,nspnfv_,devecfv !$OMP CRITICAL open(70,file=trim(scrpath)//trim(fname),action='READ',form='UNFORMATTED', & access='DIRECT',recl=recl) read(70,rec=ik) vkl_,nmatmax_,nstfv_,nspnfv_,devecfv close(70) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getdevecfv): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" ",A," : ",3G18.10)') trim(fname),vkl_ write(*,*) stop end if if (nmatmax.ne.nmatmax_) then write(*,*) write(*,'("Error(getdevecfv): differing nmatmax for k-point ",I8)') ik write(*,'(" current : ",I8)') nmatmax write(*,'(" ",A," : ",I8)') trim(fname),nmatmax_ write(*,*) stop end if if (nstfv.ne.nstfv_) then write(*,*) write(*,'("Error(getdevecfv): differing nstfv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstfv write(*,'(" ",A," : ",I8)') trim(fname),nstfv_ write(*,*) stop end if if (nspnfv.ne.nspnfv_) then write(*,*) write(*,'("Error(getdevecfv): differing nspnfv for k-point ",I8)') ik write(*,'(" current : ",I8)') nspnfv write(*,'(" ",A," : ",I8)') trim(fname),nspnfv_ write(*,*) stop end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/olpaaq.f900000644002504400250440000000005012337331324015774 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/olpaaq.f900000644002504400250440000000142712337331324016544 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine olpaaq(ias,ngp,ngpq,apwalm,apwalmq,ld,oq) use modmain implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) integer, intent(in) :: ld complex(8), intent(inout) :: oq(*) ! local variables integer is,l,m,lm,io is=idxis(ias) lm=0 do l=0,lmaxmat do m=-l,l lm=lm+1 do io=1,apword(l,is) call zgerci(ngpq,ngp,zone,apwalmq(:,io,lm,ias),apwalm(:,io,lm,ias),ld,oq) end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/dynsymapp.f900000644002504400250440000000005012337331324016543 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dynsymapp.f900000644002504400250440000000361012337331324017307 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2005-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dynsymapp(isym,vpl,dyn,dyns) use modmain use modphonon implicit none ! arguments integer, intent(in) :: isym real(8), intent(in) :: vpl(3) complex(8), intent(in) :: dyn(nbph,nbph) complex(8), intent(inout) :: dyns(nbph,nbph) ! local variables integer is,ia,ja,ias,jas integer lspl,ilspl,i,j,k,l,m,n real(8) sl(3,3),sic(3,3),v(3),t1 real(8) a(3,3),b(3,3),c(3,3) complex(8) z1 ! automatic arrays integer map(natmtot) complex(8) zph(natmtot) ! index to spatial rotation in lattice point group lspl=lsplsymc(isym) ! the inverse of the spatial symmetry ilspl=isymlat(lspl) ! symmetry matrix in lattice coordinates sl(:,:)=dble(symlat(:,:,lspl)) ! inverse symmetry matrix in Cartesian coordinates sic(:,:)=symlatc(:,:,ilspl) ! operate with symmetry matrix on vpl call r3mtv(sl,vpl,v) do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! equivalent atom with this symmetry ja=ieqatom(ia,is,isym) jas=idxas(ja,is) map(ias)=jas ! phase factor t1=twopi*dot_product(vpl(:),atposl(:,ia,is)) z1=cmplx(cos(t1),sin(t1),8) zph(ias)=z1 t1=-twopi*dot_product(v(:),atposl(:,ja,is)) zph(ias)=z1*cmplx(cos(t1),sin(t1),8) end do end do ! rotate and phase-shift dynamical matrix with symmetry do ias=1,natmtot i=3*(ias-1) k=3*(map(ias)-1) do jas=1,natmtot j=3*(jas-1) l=3*(map(jas)-1) do m=1,3 do n=1,3 a(m,n)=dble(dyn(i+m,j+n)) b(m,n)=aimag(dyn(i+m,j+n)) end do end do call r3mm(sic,a,c) call r3mmt(c,sic,a) call r3mm(sic,b,c) call r3mmt(c,sic,b) z1=zph(ias)*conjg(zph(jas)) do m=1,3 do n=1,3 dyns(k+m,l+n)=dyns(k+m,l+n)+z1*cmplx(a(m,n),b(m,n),8) end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/zfmtmul1.f900000644002504400250440000000005012337331323016275 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zfmtmul1.f900000644002504400250440000000107612337331323017045 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zfmtmul1(nr,nri,x,y,z) use modmain implicit none ! arguments integer, intent(in) :: nr,nri complex(8), intent(in) :: x(lmmaxvr,nr),y(lmmaxvr,nr) complex(8), intent(out) :: z(lmmaxvr,nr) ! local variables integer ir do ir=1,nri z(1:lmmaxinr,ir)=conjg(x(1:lmmaxinr,ir))*y(1:lmmaxinr,ir) end do do ir=nri+1,nr z(:,ir)=conjg(x(:,ir))*y(:,ir) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/getcf2pt.f900000644002504400250440000000005012337331323016234 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/getcf2pt.f900000644002504400250440000000634212337331323017005 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getcf2pt(fname,vpl,ng,m,cf) use modmain implicit none ! arguments character(256), intent(in) :: fname real(8), intent(in) :: vpl(3) integer, intent(in) :: ng,m complex(8), intent(out) :: cf(ng,ng,m) ! local variables integer isym,iq,i integer igq,jgq,igp,jgp integer lspl,ilspl integer recl,ng_,m_ real(8) vql_(3),si(3,3) real(8) vgql(3),v(3),t1 complex(8) z1 ! allocatable arrays integer, allocatable :: map(:) real(8), allocatable :: vgpl(:,:) complex(8), allocatable :: cf_(:,:,:),x(:) ! find the equivalent reduced q-point call findqpt(vpl,isym,iq) ! find the record length inquire(iolength=recl) vql(:,1),ng,m,cf !$OMP CRITICAL open(100,file=trim(fname),action='READ',form='UNFORMATTED',access='DIRECT', & recl=recl) read(100,rec=iq) vql_,ng_,m_,cf close(100) !$OMP END CRITICAL t1=abs(vql(1,iq)-vql_(1))+abs(vql(2,iq)-vql_(2))+abs(vql(3,iq)-vql_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getcf2pt): differing vectors for q-point ",I8)') iq write(*,'(" current : ",3G18.10)') vql(:,iq) write(*,'(" file : ",3G18.10)') vql_ write(*,'(" in file ",A)') trim(fname) write(*,*) stop end if if (ng.ne.ng_) then write(*,*) write(*,'("Error(getcf2pt): differing ng for q-point ",I8)') iq write(*,'(" current : ",I8)') ng write(*,'(" file : ",I8)') ng_ write(*,'(" in file ",A)') trim(fname) write(*,*) stop end if if (m.ne.m_) then write(*,*) write(*,'("Error(getcf2pt): differing m for q-point ",I8)') iq write(*,'(" current : ",I8)') m write(*,'(" file : ",I8)') m_ write(*,'(" in file ",A)') trim(fname) write(*,*) stop end if ! if p = q then return t1=abs(vpl(1)-vql(1,iq))+abs(vpl(2)-vql(2,iq))+abs(vpl(3)-vql(3,iq)) if (t1.lt.epslat) return ! allocate local arrays allocate(map(ng)) allocate(vgpl(3,ng)) allocate(cf_(ng,ng,m)) allocate(x(ng)) ! perform translation operation and store in temporary array if (tvzsymc(isym)) then ! translation vector is zero cf_(:,:,:)=cf(:,:,:) else ! non-zero translation vector gives a phase factor do igq=1,ng t1=-twopi*dot_product(dble(ivg(:,igq)),vtlsymc(:,isym)) x(igq)=cmplx(cos(t1),sin(t1),8) end do do igq=1,ng z1=x(igq) do jgq=1,ng cf_(igq,jgq,:)=z1*conjg(x(jgq))*cf(igq,jgq,:) end do end do end if ! index to spatial rotation in lattice point group lspl=lsplsymc(isym) ! the inverse of the spatial symmetry rotates q into p ilspl=isymlat(lspl) si(:,:)=dble(symlat(:,:,ilspl)) ! find the map from {G+q} to {G+p} map(:)=0 do igp=1,ng vgpl(:,igp)=dble(ivg(:,igp))+vpl(:) end do i=1 do igq=1,ng vgql(:)=dble(ivg(:,igq))+vql(:,iq) call r3mtv(si,vgql,v) do igp=i,ng t1=abs(v(1)-vgpl(1,igp))+abs(v(2)-vgpl(2,igp))+abs(v(3)-vgpl(3,igp)) if (t1.lt.epslat) then map(igp)=igq if (igp.eq.i) i=i+1 exit end if end do end do ! rotate correlation function (passive transformation) do igp=1,ng igq=map(igp) do jgp=1,ng jgq=map(jgp) if ((igq.eq.0).or.(jgq.eq.0)) then cf(igp,jgp,:)=0.d0 else cf(igp,jgp,:)=cf_(igq,jgq,:) end if end do end do deallocate(map,vgpl,cf_,x) return end subroutine elk-2.3.22/src/PaxHeaders.22528/energyfdu.f900000644002504400250440000000005012337331324016507 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/energyfdu.f900000644002504400250440000000307412337331324017257 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: energyfdu ! !INTERFACE: subroutine energyfdu ! !USES: use modmain use moddftu use modmpi ! !DESCRIPTION: ! Calculates the energies of radial functions to be used to calculate the ! Slater integrals. By convention those energies are chosen to be the ones at ! the center of the band. ! ! !REVISION HISTORY: ! Created April 2008 (F. Cricchio) !EOP !BOC implicit none ! local variables integer is,ia,ja,ias,jas integer i,l,io,nnf logical fnd ! automatic arrays logical done(natmmax) real(8) vr(nrmtmax) nnf=0 ! loop over DFT+U entries do i=1,ndftu is=idftu(1,i) l=idftu(2,i) io=1 done(:)=.false. do ia=1,natoms(is) if (done(ia)) cycle ias=idxas(ia,is) vr(1:nrmt(is))=vsmt(1,1:nrmt(is),ias)*y00 ! find the center of the band starting from -0.5 Ha fdue(io,l,ias)=-0.5d0 call findband(solsc,l,0,nrmt(is),spr(1,is),vr,epsband,demaxbnd, & fdue(io,l,ias),fnd) if (.not.fnd) nnf=nnf+1 done(ia)=.true. ! copy to equivalent atoms do ja=1,natoms(is) if ((.not.done(ja)).and.(eqatoms(ia,ja,is))) then jas=idxas(ja,is) io=1 fdue(io,l,jas)=fdue(io,l,ias) done(ja)=.true. end if end do ! end loops over atoms and species end do end do if ((nnf.gt.0).and.mp_mpi) then write(*,*) write(*,'("Warning(energyfdu): could not find ",I3," energies")') nnf end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/geomplot.f900000644002504400250440000000005012337331323016344 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/geomplot.f900000644002504400250440000000447112337331323017116 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine geomplot use modmain implicit none ! local variables integer is,ia ! Bohr to Angstroms (CODATA 2002) real(8), parameter :: au_to_ang=0.5291772108d0 real(8) v1(3),v2(3),v3(3),v4(3),t1 real(8) dxx,dyx,dyy,dzx,dzy,dzz ! initialise universal variables call init0 !------------------------------------------------! ! write the XCrysden file to crystal.xsf ! !------------------------------------------------! open(50,file='crystal.xsf',action='WRITE',form='FORMATTED') write(50,*) write(50,'("CRYSTAL")') write(50,*) write(50,'("PRIMVEC")') write(50,'(3G18.10)') avec(:,1)*au_to_ang write(50,'(3G18.10)') avec(:,2)*au_to_ang write(50,'(3G18.10)') avec(:,3)*au_to_ang write(50,*) write(50,'("PRIMCOORD")') write(50,'(2I8)') natmtot,1 do is=1,nspecies do ia=1,natoms(is) write(50,'(A,3G18.10)') trim(spsymb(is)),atposc(:,ia,is)*au_to_ang end do end do close(50) write(*,*) write(*,'("Info(geomplot):")') write(*,'(" XCrysDen file written to crystal.xsf")') !-----------------------------------------------! ! write the V_Sim file to crystal.ascii ! !-----------------------------------------------! ! determine coordinate system vectors t1=sqrt(avec(1,1)**2+avec(2,1)**2+avec(3,1)**2) v1(:)=avec(:,1)/t1 t1=sqrt(avec(1,2)**2+avec(2,2)**2+avec(3,2)**2) v2(:)=avec(:,2)/t1 call r3cross(v1,v2,v3) t1=sqrt(v3(1)**2+v3(2)**2+v3(3)**2) v3(:)=v3(:)/t1 call r3cross(v3,v1,v2) t1=sqrt(v2(1)**2+v2(2)**2+v2(3)**2) v2(:)=v2(:)/t1 dxx=dot_product(avec(:,1),v1(:)) dyx=dot_product(avec(:,2),v1(:)) dyy=dot_product(avec(:,2),v2(:)) dzx=dot_product(avec(:,3),v1(:)) dzy=dot_product(avec(:,3),v2(:)) dzz=dot_product(avec(:,3),v3(:)) open(50,file='crystal.ascii',action='WRITE',form='FORMATTED') write(50,*) write(50,'(3G18.10)') dxx,dyx,dyy write(50,'(3G18.10)') dzx,dzy,dzz write(50,*) do is=1,nspecies do ia=1,natoms(is) v4(1)=dot_product(atposc(:,ia,is),v1(:)) v4(2)=dot_product(atposc(:,ia,is),v2(:)) v4(3)=dot_product(atposc(:,ia,is),v3(:)) write(50,'(3G18.10," ",A)') v4,trim(spsymb(is)) end do end do close(50) write(*,*) write(*,'("Info(geomplot):")') write(*,'(" V_Sim file written to crystal.ascii")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/potnucl.f900000644002504400250440000000005012337331323016202 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/potnucl.f900000644002504400250440000000153712337331323016754 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine potnucl(ptnucl,nr,r,zn,vn) implicit none ! arguments logical, intent(in) :: ptnucl integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(in) :: zn real(8), intent(out) :: vn(nr) ! local variables integer ir real(8) rn,t1,t2 ! external functions real(8) radnucl external radnucl if (zn.eq.0.d0) then vn(:)=0.d0 return end if if (ptnucl) then ! nucleus is taken to be a point particle vn(:)=zn/r(:) else ! approximate nuclear radius rn=radnucl(zn) t1=zn/(2.d0*rn**3) t2=3.d0*rn**2 do ir=1,nr if (r(ir).lt.rn) then vn(ir)=t1*(t2-r(ir)**2) else vn(ir)=zn/r(ir) end if end do end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/gndstate.f900000644002504400250440000000005012337331323016327 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gndstate.f900000644002504400250440000003037512337331323017103 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2013 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: gndstate ! !INTERFACE: subroutine gndstate ! !USES: use modmain use modmpi use moddftu ! !DESCRIPTION: ! Computes the self-consistent Kohn-Sham ground-state. General information is ! written to the file {\tt INFO.OUT}. First- and second-variational ! eigenvalues, eigenvectors and occupancies are written to the unformatted ! files {\tt EVALFV.OUT}, {\tt EVALSV.OUT}, {\tt EVECFV.OUT}, {\tt EVECSV.OUT} ! and {\tt OCCSV.OUT}. The density, magnetisation, Kohn-Sham potential and ! magnetic field are written to {\tt STATE.OUT}. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) ! Added MPI, August 2010 (JKD) !EOP !BOC implicit none ! local variables logical exist integer ik,nwork,n real(8) dv,etp,de,timetot ! allocatable arrays real(8), allocatable :: v(:),work(:) ! initialise global variables call init0 call init1 ! set the stop signal to .false. tstop=.false. ! initialise OEP variables if required if (xctype(1).lt.0) call init2 if (task.eq.0) trdstate=.false. if (task.eq.1) trdstate=.true. ! only the MPI master process should write files if (mp_mpi) then ! write the real and reciprocal lattice vectors to file call writelat ! write symmetry matrices to file call writesym ! output the k-point set to file call writekpts ! write lattice vectors and atomic positions to file open(50,file='GEOMETRY'//trim(filext),action='WRITE',form='FORMATTED') call writegeom(50) close(50) ! write interatomic distances to file open(50,file='IADIST'//trim(filext),action='WRITE',form='FORMATTED') call writeiad(50) close(50) ! open INFO.OUT file open(60,file='INFO'//trim(filext),action='WRITE',form='FORMATTED') ! open TOTENERGY.OUT open(61,file='TOTENERGY'//trim(filext),action='WRITE',form='FORMATTED') ! open FERMIDOS.OUT open(62,file='FERMIDOS'//trim(filext),action='WRITE',form='FORMATTED') ! open MOMENT.OUT if required if (spinpol) open(63,file='MOMENT'//trim(filext),action='WRITE', & form='FORMATTED') ! open GAP.OUT open(64,file='GAP'//trim(filext),action='WRITE',form='FORMATTED') ! open RMSDVS.OUT open(65,file='RMSDVS'//trim(filext),action='WRITE',form='FORMATTED') ! open DTOTENERGY.OUT open(66,file='DTOTENERGY'//trim(filext),action='WRITE',form='FORMATTED') ! open TMDFTU.OUT if (tmwrite) open(67,file='TMDFTU'//trim(filext),action='WRITE', & form='FORMATTED') ! open MOMENTM.OUT if (spinpol) open(68,file='MOMENTM'//trim(filext),action='WRITE', & form='FORMATTED') ! write out general information to INFO.OUT call writeinfo(60) write(60,*) end if ! initialise or read the charge density and potentials from file iscl=0 if (trdstate) then call readstate if (mp_mpi) then write(60,'("Potential read in from STATE.OUT")') end if if (autolinengy) call readfermi else call rhoinit call potks call genvsig if (mp_mpi) write(60,'("Density and potential initialised from atomic data")') end if if (mp_mpi) call flushifc(60) ! size of mixing vector n=lmmaxvr*nrmtmax*natmtot+ngtot if (spinpol) n=n+ndmag*(lmmaxvr*nrcmtmax*natmtot+ngtot) if (tvmatmt) n=n+2*((lmmaxdm*nspinor)**2)*natmtot ! allocate mixing array allocate(v(n)) ! determine the size of the mixer work array nwork=-1 call mixerifc(mixtype,n,v,dv,nwork,v) allocate(work(nwork)) ! initialise the mixer iscl=0 call mixpack(.true.,n,v) call mixerifc(mixtype,n,v,dv,nwork,work) ! set last self-consistent loop flag tlast=.false. etp=0.d0 ! begin the self-consistent loop if (mp_mpi) then write(60,*) write(60,'("+------------------------------+")') write(60,'("| Self-consistent loop started |")') write(60,'("+------------------------------+")') end if do iscl=1,maxscl if (mp_mpi) then write(60,*) write(60,'("+--------------------+")') write(60,'("| Loop number : ",I4," |")') iscl write(60,'("+--------------------+")') end if if (iscl.ge.maxscl) then if (mp_mpi) then write(60,*) write(60,'("Reached self-consistent loops maximum")') end if write(*,*) write(*,'("Warning(gndstate): failed to reach self-consistency after ",I4,& &" loops")') iscl tlast=.true. end if if (mp_mpi) call flushifc(60) ! generate the core wavefunctions and densities call gencore ! find the new linearisation energies call linengy ! write out the linearisation energies if (mp_mpi) call writelinen ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr ! generate the first- and second-variational eigenvectors and eigenvalues call genevfsv ! find the occupation numbers and Fermi energy call occupy if (autoswidth.and.mp_mpi) then write(60,*) write(60,'("New smearing width : ",G18.10)') swidth end if if (mp_mpi) then ! write the occupation numbers to file do ik=1,nkpt call putoccsv(ik,occsv(:,ik)) end do ! write eigenvalues to file call writeeval ! write the Fermi energy to file call writefermi end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! generate the density and magnetisation call rhomag ! DFT+U or fixed tensor moment calculation if ((dftu.ne.0).or.(ftmtype.ne.0)) then ! generate the muffin-tin density matrix used for computing the potential matrix call gendmatmt ! write the FTM tensor moments to file if (ftmtype.ne.0) call writeftm ! generate the DFT+U or FTM muffin-tin potential matrices call genvmatmt end if if (dftu.ne.0) then if (mp_mpi) then ! write the DFT+U matrices to file call writedftu ! calculate and write tensor moments to file if (tmwrite) then if (spinorb) then call writetm3du(67) else call writetm2du(67) end if end if end if end if ! compute the Kohn-Sham potentials and magnetic fields call potks if (mp_mpi) then if ((xcgrad.eq.3).and.(c_tb09.ne.0.d0)) then write(60,*) write(60,'("Tran-Blaha ''09 constant c : ",G18.10)') c_tb09 end if end if ! pack interstitial and muffin-tin potential and field into one array call mixpack(.true.,n,v) ! mix in the old potential and field with the new call mixerifc(mixtype,n,v,dv,nwork,work) ! make sure every MPI process has a numerically identical potential if (np_mpi.gt.1) then call mpi_bcast(v,n,mpi_double_precision,0,mpi_comm_kpt,ierror) end if ! unpack potential and field call mixpack(.false.,n,v) ! add the fixed spin moment effective field (after mixing) call fsmfield ! Fourier transform Kohn-Sham potential to G-space call genvsig ! reduce the external magnetic fields if required if (reducebf.lt.1.d0) then bfieldc(:)=bfieldc(:)*reducebf bfcmt(:,:,:)=bfcmt(:,:,:)*reducebf end if ! compute the energy components call energy if (mp_mpi) then ! output energy components call writeengy(60) write(60,*) write(60,'("Density of states at Fermi energy : ",G18.10)') fermidos write(60,'(" (states/Hartree/unit cell)")') write(60,*) write(60,'("Estimated indirect band gap : ",G18.10)') bandgap(1) write(60,'(" from k-point ",I6," to k-point ",I6)') ikgap(1),ikgap(2) write(60,'("Estimated direct band gap : ",G18.10)') bandgap(2) write(60,'(" at k-point ",I6)') ikgap(3) ! write total energy to TOTENERGY.OUT write(61,'(G22.12)') engytot call flushifc(61) ! write DOS at Fermi energy to FERMIDOS.OUT write(62,'(G18.10)') fermidos call flushifc(62) ! output charges and moments call writechg(60) if (spinpol) then ! write total moment to MOMENT.OUT write(63,'(3G18.10)') momtot(1:ndmag) call flushifc(63) ! write total moment magnitude to MOMENTM.OUT write(68,'(G18.10)') momtotm call flushifc(68) end if ! write estimated Kohn-Sham indirect band gap write(64,'(G22.12)') bandgap(1) call flushifc(64) ! output effective fields for fixed spin moment calculations if (fsmtype.ne.0) call writefsm(60) ! check for WRITE file inquire(file='WRITE',exist=exist) if (exist) then write(60,*) write(60,'("WRITE file exists - writing STATE.OUT")') call writestate open(50,file='WRITE') close(50,status='DELETE') end if ! write STATE.OUT file if required if (nwrite.ge.1) then if (mod(iscl,nwrite).eq.0) then call writestate write(60,*) write(60,'("Wrote STATE.OUT")') end if end if end if ! exit self-consistent loop if required if (tlast) goto 10 ! check for convergence if (iscl.ge.2) then if (mp_mpi) then write(60,*) write(60,'("RMS change in Kohn-Sham potential (target) : ",G18.10," (",& &G18.10,")")') dv,epspot write(65,'(G18.10)') dv call flushifc(65) end if de=abs(engytot-etp) if (mp_mpi) then write(60,'("Absolute change in total energy (target) : ",G18.10," (",& &G18.10,")")') de,epsengy write(66,'(G18.10)') de call flushifc(66) end if if ((dv.lt.epspot).and.(de.lt.epsengy)) then if (mp_mpi) then write(60,*) write(60,'("Convergence targets achieved")') end if tlast=.true. end if end if if ((xctype(1).lt.0).and.mp_mpi) then write(60,*) write(60,'("Magnitude of OEP residual : ",G18.10)') resoep end if ! average the current and previous total energies and store if (iscl.gt.1) then etp=0.75d0*engytot+0.25d0*etp else etp=engytot end if ! check for STOP file (only master process) if (mp_mpi) then inquire(file='STOP',exist=exist) if (exist) then write(60,*) write(60,'("STOP file exists - stopping self-consistent loop")') open(50,file='STOP') close(50,status='DELETE') tstop=.true. tlast=.true. end if end if ! broadcast tlast and tstop from master process to all other processes call mpi_bcast(tlast,1,mpi_logical,0,mpi_comm_kpt,ierror) call mpi_bcast(tstop,1,mpi_logical,0,mpi_comm_kpt,ierror) ! output the current total CPU time timetot=timeinit+timemat+timefv+timesv+timerho+timepot+timefor if (mp_mpi) then write(60,*) write(60,'("Time (CPU seconds) : ",F12.2)') timetot end if ! end the self-consistent loop end do 10 continue ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) if (mp_mpi) then write(60,*) write(60,'("+------------------------------+")') write(60,'("| Self-consistent loop stopped |")') write(60,'("+------------------------------+")') ! write density and potentials to file only if maxscl > 1 if (maxscl.gt.1) then call writestate write(60,*) write(60,'("Wrote STATE.OUT")') end if end if ! compute forces if required if (tforce) then call force ! output forces to INFO.OUT if (mp_mpi) call writeforces(60) end if ! total time used timetot=timeinit+timemat+timefv+timesv+timerho+timepot+timefor ! output timing information if (mp_mpi) then write(60,*) write(60,'("Timings (CPU seconds) :")') write(60,'(" initialisation",T40,": ",F12.2)') timeinit write(60,'(" Hamiltonian and overlap matrix set up",T40,": ",F12.2)') timemat write(60,'(" first-variational eigenvalue equation",T40,": ",F12.2)') timefv if (spinpol) then write(60,'(" second-variational calculation",T40,": ",F12.2)') timesv end if write(60,'(" charge density calculation",T40,": ",F12.2)') timerho write(60,'(" potential calculation",T40,": ",F12.2)') timepot if (tforce) then write(60,'(" force calculation",T40,": ",F12.2)') timefor end if write(60,'(" total",T40,": ",F12.2)') timetot write(60,*) write(60,'("+----------------------------+")') write(60,'("| Elk version ",I1.1,".",I1.1,".",I2.2," stopped |")') version write(60,'("+----------------------------+")') ! close the INFO.OUT file close(60) ! close the TOTENERGY.OUT file close(61) ! close the FERMIDOS.OUT file close(62) ! close the MOMENT.OUT and MOMENTM.OUT files if (spinpol) then close(63); close(68) end if ! close the GAP.OUT file close(64) ! close the RMSDVS.OUT file close(65) ! close the DTOTENERGY.OUT file close(66) ! close TMDFTU.OUT file if (tmwrite) close(67) end if deallocate(v,work) ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/putdevalfv.f900000644002504400250440000000005012337331324016677 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/putdevalfv.f900000644002504400250440000000140412337331324017442 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine putdevalfv(ik,devalfv) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ik complex(8), intent(in) :: devalfv(nstfv,nspnfv) ! local variables integer recl character(256) fext ! find the record length inquire(iolength=recl) vkl(:,ik),nstfv,nspnfv,devalfv ! construct the phonon file extension call phfext(iqph,isph,iaph,ipph,fext) !$OMP CRITICAL open(70,file='DEVALFV'//trim(fext),action='WRITE',form='UNFORMATTED', & access='DIRECT',recl=recl) write(70,rec=ik) vkl(:,ik),nstfv,nspnfv,devalfv close(70) !$OMP END CRITICAL return end subroutine elk-2.3.22/src/PaxHeaders.22528/putdevecsv.f900000644002504400250440000000005012337331324016707 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/putdevecsv.f900000644002504400250440000000140412337331324017452 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine putdevecsv(ik,devecsv) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ik complex(8), intent(in) :: devecsv(nstsv,nstsv) ! local variables integer recl character(256) fext ! find the record length inquire(iolength=recl) vkl(:,ik),nstsv,devecsv ! construct the phonon file extension call phfext(iqph,isph,iaph,ipph,fext) !$OMP CRITICAL open(70,file=trim(scrpath)//'DEVECSV'//trim(fext),action='WRITE', & form='UNFORMATTED',access='DIRECT',recl=recl) write(70,rec=ik) vkl(:,ik),nstsv,devecsv close(70) !$OMP END CRITICAL return end subroutine elk-2.3.22/src/PaxHeaders.22528/zfmtmul2.f900000644002504400250440000000005012337331324016277 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/zfmtmul2.f900000644002504400250440000000133512337331324017045 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zfmtmul2(nr,nri,x1,x2,y1,y2,z) use modmain implicit none ! arguments integer, intent(in) :: nr,nri complex(8), intent(in) :: x1(lmmaxvr,nr),x2(lmmaxvr,nr) complex(8), intent(in) :: y1(lmmaxvr,nr),y2(lmmaxvr,nr) complex(8), intent(out) :: z(lmmaxvr,nr) ! local variables integer ir do ir=1,nri z(1:lmmaxinr,ir)=conjg(x1(1:lmmaxinr,ir))*y1(1:lmmaxinr,ir) & +conjg(x2(1:lmmaxinr,ir))*y2(1:lmmaxinr,ir) end do do ir=nri+1,nr z(:,ir)=conjg(x1(:,ir))*y1(:,ir)+conjg(x2(:,ir))*y2(:,ir) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/modphonon.f900000644002504400250440000000005012337331322016516 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modphonon.f900000644002504400250440000001017712337331322017270 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modphonon use modmain !--------------------------! ! phonon variables ! !--------------------------! ! number of phonon branches (3*natmtot) integer nbph ! current phonon q-point, species, atom and polarisation index integer iqph,isph,iaph,iasph,ipph ! number of vectors for writing out frequencies and eigenvectors integer nphwrt ! vectors in lattice coordinates for writing out frequencies and eigenvectors real(8), allocatable :: vqlwrt(:,:) ! Coulomb pseudopotential real(8) mustar ! number of temperatures for the Eliashberg equations and thermal properties integer ntemp !-----------------------------! ! supercell variables ! !-----------------------------! ! number of primitive unit cells in phonon supercell integer nscph ! Cartesian offset vectors for each primitive cell in the supercell real(8), allocatable :: vscph(:,:) ! phonon displacement distance real(8) deltaph !---------------------! ! k+q-vectors ! !---------------------! ! k+q-vectors in lattice coordinates real(8), allocatable :: vkql(:,:) ! k+q-vectors in Cartesian coordinates real(8), allocatable :: vkqc(:,:) !------------------------------! ! G+q-vector variables ! !------------------------------! ! G+q-vectors in Cartesian coordinates real(8), allocatable :: vgqc(:,:) ! G+q-vector lengths real(8), allocatable :: gqc(:) ! spherical Bessel functions j_l(|G+q|R_mt) real(8), allocatable :: jlgqr(:,:,:) ! spherical harmonics for G+q-vectors complex(8), allocatable :: ylmgq(:,:) ! structure factors for G+q-vectors complex(8), allocatable :: sfacgq(:,:) ! smooth step function form factors for all species and G+q-vectors real(8), allocatable :: ffacgq(:,:) ! characteristic function derivative in G- and G+q-space complex(8), allocatable :: dcfunig(:) ! characteristic function derivative in real-space complex(8), allocatable :: dcfunir(:) !--------------------------------! ! G+k+q-vector variables ! !--------------------------------! ! number of G+k+q-vector for each k-point integer, allocatable :: ngkq(:,:) ! index from G+k+q-vectors to G-vectors integer, allocatable :: igkqig(:,:,:) ! G+k+q-vectors in lattice and Cartesian coordinates real(8), allocatable :: vgkql(:,:,:,:),vgkqc(:,:,:,:) ! G+k+q-vector lengths real(8), allocatable :: gkqc(:,:,:) ! (theta, phi) coordinates of G+k+q-vectors real(8), allocatable :: tpgkqc(:,:,:,:) ! structure factors for the G+k+q-vectors complex(8), allocatable :: sfacgkq(:,:,:,:) !----------------------------------------------------------! ! density functional perturbation theory variables ! !----------------------------------------------------------! ! density derivative complex(8), allocatable :: drhomt(:,:,:),drhoir(:) ! magnetisation derivative complex(8), allocatable :: dmagmt(:,:,:,:),dmagir(:,:) ! Coulomb potential derivative complex(8), allocatable :: dvclmt(:,:,:),dvclir(:) ! if tphdyn is .true. then the phonon dynamical matrix is being calculated logical tphdyn data tphdyn / .false. / ! nuclear potential without the self-term; used for the phonon dynamical matrix complex(8), allocatable :: zvnmt(:,:) ! Kohn-Sham potential derivative complex(8), allocatable :: dvsmt(:,:,:),dvsir(:) ! gradient of vsmt for the displaced muffin-tin complex(8), allocatable :: gvsmt(:,:) ! G+q-space interstitial Kohn-Sham potential derivative complex(8), allocatable :: dvsig(:) ! Kohn-Sham effective magnetic field derivative complex(8), allocatable :: dbsmt(:,:,:,:),dbsir(:,:) ! spin-orbit coupling radial function derivative complex(8), allocatable :: dsocfr(:,:) ! APW-APW Hamiltonian integral derivatives complex(8), allocatable :: dhaa(:,:,:,:,:,:) ! local-orbital-APW Hamiltonian integral derivatives complex(8), allocatable :: dhloa(:,:,:,:,:) ! local-orbital-local-orbital Hamiltonian integral derivatives complex(8), allocatable :: dhlolo(:,:,:,:) ! real Gaunt coefficient array real(8), allocatable :: gntyyy(:,:,:) ! smallest allowed perturbation theory denominator for eigenvector derivatives real(8) epsph end module elk-2.3.22/src/PaxHeaders.22528/pottm3.f900000644002504400250440000000005012337331324015745 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/pottm3.f900000644002504400250440000000336212337331324016515 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: pottm3 ! !INTERFACE: subroutine pottm3(i,k1,p,r,vh,vx) ! !USES: use moddftu ! !INPUT/OUTPUT PARAMETERS: ! i : DFT+U entry (in,integer) ! k1 : k-index of tensor moment (in,integer) ! p : p-index of tensor moment (in,integer) ! r : r-index of tensor moment (in,integer) ! vh : Hartree potential energy (out,real) ! vx : exchange potential energy (out,real) ! !DESCRIPTION: ! Calculates the DFT+$U$ Hartree and exchange potential energies for a 3-index ! tensor moment component. See Eq. (28) in {\it Phys. Rev. B} {\bf 80}, 035121 ! (2009); and Eqs. (3), (4) in {\it Phys. Rev. B} {\bf 78}, 100404 (2008). ! ! !REVISION HISTORY: ! Created April 2008 (F. Cricchio and L. Nordstrom) ! Modified and fixed bug, January 2014 (JKD) !EOP !BOC implicit none integer, intent(in) :: i integer, intent(in) :: k1,p,r real(8), intent(out) :: vh,vx ! local variables integer l,k,g real(8) nlk,t1,t2,t3 ! external functions real(8) wigner3j,wigner6j,factnm,factr external wigner3j,wigner6j,factnm,factr l=idftu(2,i) g=k1+p+r if (mod(g,2).eq.0) then t1=wigner3j(k1,p,r,0,0,0) else t1=sqrt(factr(g-2*k1,g+1)*factnm(g-2*p,1)*factnm(g-2*r,1)) t1=t1*factnm(g,2)/(factnm(g-2*k1,2)*factnm(g-2*p,2)*factnm(g-2*r,2)) end if t3=dble(2*r+1)*t1**2 nlk=factnm(2*l,1)/sqrt(factnm(2*l-k1,1)*factnm(2*l+k1+1,1)) vh=0.d0 vx=0.d0 do k=0,2*l,2 t1=0.5d0*(dble(2*l+1)*nlk*wigner3j(l,k,l,0,0,0))**2 t2=0.5d0*dble((2*k1+1)*(-1)**k1)*wigner6j(l,l,k1,l,l,k)*t3 if (k.eq.k1) then if (p.eq.0) vh=t1*fdu(k1,i) end if vx=vx-t1*t2*fdu(k,i) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/findsymcrys.f900000644002504400250440000000005012337331323017070 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findsymcrys.f900000644002504400250440000001437412337331323017645 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: findsymcrys ! !INTERFACE: subroutine findsymcrys ! !USES: use modmain use modmpi use modtest ! !DESCRIPTION: ! Finds the complete set of symmetries which leave the crystal structure ! (including the magnetic fields) invariant. A crystal symmetry is of the form ! $\{\alpha_S|\alpha_R|{\bf t}\}$, where ${\bf t}$ is a translation vector, ! $\alpha_R$ is a spatial rotation operation and $\alpha_S$ is a global spin ! rotation. Note that the order of operations is important and defined to be ! from right to left, i.e. translation followed by spatial rotation followed ! by spin rotation. In the case of spin-orbit coupling $\alpha_S=\alpha_R$. In ! order to determine the translation vectors, the entire atomic basis is ! shifted so that the first atom in the smallest set of atoms of the same ! species is at the origin. Then all displacement vectors between atoms in ! this set are checked as possible symmetry translations. If the global ! variable {\tt tshift} is set to {\tt .false.} then the shift is not ! performed. See L. M. Sandratskii and P. G. Guletskii, {\it J. Phys. F: Met. ! Phys.} {\bf 16}, L43 (1986) and the routine {\tt findsym}. ! ! !REVISION HISTORY: ! Created April 2007 (JKD) !EOP !BOC implicit none ! local variables integer ia,ja,is,js integer isym,nsym,i,n integer lspl(48),lspn(48),ilspl real(8) v0(3),v1(3),v2(3),t1 real(8) apl(3,maxatoms,maxspecies) ! allocatable arrays integer, allocatable :: iea(:,:,:) real(8), allocatable :: vtl(:,:) ! allocate local array allocate(iea(natmmax,nspecies,48)) ! allocate equivalent atom arrays if (allocated(ieqatom)) deallocate(ieqatom) allocate(ieqatom(natmmax,nspecies,maxsymcrys)) if (allocated(eqatoms)) deallocate(eqatoms) allocate(eqatoms(natmmax,natmmax,nspecies)) ! store position of first atom if (natmtot.gt.0) v0(:)=atposl(:,1,1) ! find the smallest set of atoms is=1 do js=1,nspecies if (natoms(js).lt.natoms(is)) is=js end do if ((tshift).and.(natmtot.gt.0)) then ! shift basis so that the first atom in the smallest atom set is at the origin v1(:)=atposl(:,1,is) do js=1,nspecies do ia=1,natoms(js) ! shift atom atposl(:,ia,js)=atposl(:,ia,js)-v1(:) ! map lattice coordinates back to [0,1) call r3frac(epslat,atposl(:,ia,js)) ! determine the new Cartesian coordinates call r3mv(avec,atposl(:,ia,js),atposc(:,ia,js)) end do end do end if ! determine possible translation vectors from smallest set of atoms n=max(natoms(is)*natoms(is),1) allocate(vtl(3,n)) n=1 vtl(:,1)=0.d0 do ia=1,natoms(is) do ja=2,natoms(is) ! compute difference between two atom vectors v1(:)=atposl(:,ia,is)-atposl(:,ja,is) ! map lattice coordinates to [0,1) call r3frac(epslat,v1) do i=1,n t1=abs(vtl(1,i)-v1(1))+abs(vtl(2,i)-v1(2))+abs(vtl(3,i)-v1(3)) if (t1.lt.epslat) goto 10 end do n=n+1 vtl(:,n)=v1(:) 10 continue end do end do ! no translations required when symtype=0,2 (F. Cricchio) if (symtype.ne.1) n=1 eqatoms(:,:,:)=.false. nsymcrys=0 ! loop over all possible translations do i=1,n ! construct new array with translated positions do is=1,nspecies do ia=1,natoms(is) apl(:,ia,is)=atposl(:,ia,is)+vtl(:,i) end do end do ! find the symmetries for current translation call findsym(atposl,apl,nsym,lspl,lspn,iea) do isym=1,nsym nsymcrys=nsymcrys+1 if (nsymcrys.gt.maxsymcrys) then write(*,*) write(*,'("Error(findsymcrys): too many crystal symmetries")') write(*,'(" Adjust maxsymcrys in modmain and recompile code")') write(*,*) stop end if vtlsymc(:,nsymcrys)=vtl(:,i) lsplsymc(nsymcrys)=lspl(isym) lspnsymc(nsymcrys)=lspn(isym) do is=1,nspecies do ia=1,natoms(is) ja=iea(ia,is,isym) ieqatom(ia,is,nsymcrys)=ja eqatoms(ia,ja,is)=.true. eqatoms(ja,ia,is)=.true. end do end do end do end do tsyminv=.false. do isym=1,nsymcrys ! check if inversion symmetry is present i=lsplsymc(isym) if (all(symlat(:,:,i).eq.-symlat(:,:,1))) then tsyminv=.true. ! make inversion the second symmetry element (the identity is the first) v1(:)=vtlsymc(:,isym); vtlsymc(:,isym)=vtlsymc(:,2); vtlsymc(:,2)=v1(:) i=lsplsymc(isym); lsplsymc(isym)=lsplsymc(2); lsplsymc(2)=i i=lspnsymc(isym); lspnsymc(isym)=lspnsymc(2); lspnsymc(2)=i do is=1,nspecies do ia=1,natoms(is) i=ieqatom(ia,is,isym) ieqatom(ia,is,isym)=ieqatom(ia,is,2) ieqatom(ia,is,2)=i end do end do goto 20 end if end do 20 continue ! if inversion exists then shift basis so that inversion center is at origin if (tsyminv.and.tshift) then v1(:)=v1(:)/2.d0 do is=1,nspecies do ia=1,natoms(is) ! shift atom atposl(:,ia,is)=atposl(:,ia,is)+v1(:) ! map lattice coordinates back to [0,1) call r3frac(epslat,atposl(:,ia,is)) ! map lattice coordinates to [-0.5,0.5) do i=1,3 if (atposl(i,ia,is).gt.0.5d0) atposl(i,ia,is)=atposl(i,ia,is)-1.d0 end do ! determine the new Cartesian coordinates call r3mv(avec,atposl(:,ia,is),atposc(:,ia,is)) end do end do ! recalculate crystal symmetry translation vectors do isym=1,nsymcrys ilspl=isymlat(lsplsymc(isym)) v2(:)=symlat(:,1,ilspl)*v1(1) & +symlat(:,2,ilspl)*v1(2) & +symlat(:,3,ilspl)*v1(3) vtlsymc(:,isym)=vtlsymc(:,isym)-v1(:)+v2(:) call r3frac(epslat,vtlsymc(:,isym)) end do end if ! set flag for zero translation vector do isym=1,nsymcrys t1=sum(abs(vtlsymc(:,isym))) if (t1.lt.epslat) then tvzsymc(isym)=.true. else tvzsymc(isym)=.false. end if end do ! check inversion does not include a translation if (tsyminv) then if (.not.tvzsymc(2)) tsyminv=.false. end if if (natmtot.gt.0) then v1(:)=atposl(:,1,1)-v0(:) t1=abs(v1(1))+abs(v1(2))+abs(v1(3)) if ((t1.gt.epslat).and.mp_mpi) then write(*,'("Info(findsymcrys): atomic basis shift (lattice) :")') write(*,'(3G18.10)') v1(:) write(*,'("See GEOMETRY.OUT for new atomic positions")') end if end if ! write number of crystal symmetries to test file call writetest(705,'number of crystal symmetries',iv=nsymcrys) deallocate(iea,vtl) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/zpotcoul.f900000644002504400250440000000005012337331323016375 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zpotcoul.f900000644002504400250440000002327412337331323017151 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: zpotcoul ! !INTERFACE: subroutine zpotcoul(nr,nri,ld1,r,igp0,gpc,jlgpr,ylmgp,sfacgp,zrhoir,ld2, & zvclmt,zvclir,zrho0) ! !USES: use modmain use modphonon ! !INPUT/OUTPUT PARAMETERS: ! nr : number of radial points for each species (in,integer(nspecies)) ! nri : number of points on inner part of muffin-tin (in,integer(nspecies)) ! ld1 : leading dimension (in,integer) ! r : radial mesh for each species (in,real(ld1,nspecies)) ! igp0 : index of the shortest G+p-vector (in,integer) ! gpc : G+p-vector lengths (in,real(ngvec)) ! jlgpr : spherical Bessel functions for evergy G+p-vector and muffin-tin ! radius (in,real(0:lnpsd,ngvec,nspecies)) ! ylmgp : spherical harmonics of the G+p-vectors (in,complex(lmmaxvr,ngvec)) ! sfacgp : structure factors of the G+p-vectors (in,complex(ngvec,natmtot)) ! zrhoir : interstitial charge density (in,complex(ngtot)) ! ld2 : leading dimension (in,integer) ! zvclmt : muffin-tin Coulomb potential, with the contribution from the ! isolated muffin-tin density precalculated and passed in ! (inout,complex(lmmaxvr,ld2,natmtot)) ! zvclir : interstitial Coulomb potential (out,complex(ngtot)) ! zrho0 : G+p=0 term of the pseudocharge density (out,complex) ! !DESCRIPTION: ! Calculates the Coulomb potential of a complex charge density by solving ! Poisson's equation using the method of M. Weinert, {\it J. Math. Phys.} ! {\bf 22}, 2433 (1981). First, the multipole moments of the muffin-tin charge ! are determined for the $j$th atom of the $i$th species by ! $$ q_{ij;lm}^{\rm MT}=\int_0^{R_i}r^{l+2}\rho_{ij;lm}(r)dr+z_{ij}Y_{00} ! \,\delta_{l,0}\;, $$ ! where $R_i$ is the muffin-tin radius and $z_{ij}$ is a point charge located ! at the atom center (usually the nuclear charge, which should be taken as ! {\bf negative}). Next, the multipole moments of the continuation of the ! interstitial density, $\rho^{\rm I}$, into the muffin-tin are found with ! $$ q_{ij;lm}^{\rm I}=4\pi i^l R_i^{l+3}\sum_{\bf G}\frac{j_{l+1}(GR_i)} ! {GR_i}\rho^{\rm I}({\bf G})\exp(i{\bf G}\cdot{\bf r}_{ij})Y_{lm}^* ! (\hat{\bf G}), $$ ! remembering that ! $$ \lim_{x\rightarrow 0}\frac{j_{l+n}(x)}{x^n}=\frac{1}{(2n+1)!!} ! \delta_{l,0} $$ ! should be used for the case ${\bf G}=0$. A pseudocharge is now constructed ! which is equal to the real density in the interstitial region and whose ! multipoles are the difference between the real and interstitial muffin-tin ! multipoles. This pseudocharge density is smooth in the sense that it can be ! expanded in terms of the finite set of ${\bf G}$-vectors. In each muffin-tin ! the pseudocharge has the form ! $$ \rho_{ij}^{\rm P}({\bf r})=\rho^{\rm I}({\bf r}-{\bf r}_{ij})+\sum_{lm} ! \rho_{ij;lm}^{\rm P}\frac{1}{R_i^{l+3}}\left(\frac{r}{R_i}\right)^l\left(1- ! \frac{r^2}{R_i^2}\right)^{N_i}Y_{lm}(\hat{\bf r}) $$ ! where ! $$ \rho_{ij;lm}^{\rm P}=\frac{(2l+2N_i+3)!!}{2^N_iN_i!(2l+1)!!}\left( ! q_{ij;lm}^{\rm MT}-q_{ij;lm}^{\rm I}\right) $$ ! and $N_i\approx\frac{1}{2}R_iG_{\rm max}$ is generally a good choice. ! The pseudocharge in reciprocal space is given by ! $$ \rho^{\rm P}({\bf G})=\rho^{\rm I}({\bf G})+\sum_{ij;lm}2^{N_i}N_i! ! \frac{4\pi(-i)^l}{\Omega R_i^l}\frac{j_{l+N_i+1}(GR_i)}{(GR_i)^{N_i+1}} ! \rho_{ij;lm}^{\rm P}\exp(-i{\bf G}\cdot{\bf r}_{ij})Y_{lm}(\hat{\bf G}) $$ ! which may be used for solving Poisson's equation directly ! $$ V^{\rm P}({\bf G})=\begin{cases} ! 4\pi\frac{\rho^{\rm P}({\bf G})}{G^2} & G>0 \\ ! 0 & G=0 \end{cases}\;. $$ ! The usual Green's function approach is then employed to determine the ! potential in the muffin-tin sphere due to charge in the sphere. In other ! words ! $$ V_{ij;lm}^{\rm MT}(r)=\frac{4\pi}{2l+1}\left(\frac{1}{r^{l+1}}\int_0^r ! \rho_{ij;lm}^{\rm MT}(r'){r'}^{l+2}dr'+r^l\int_r^{R_i}\frac{ ! \rho_{ij;lm}^{\rm MT}(r')}{{r'}^{l-1}}dr'\right)+\frac{1}{Y_{00}} ! \frac{z_{ij}}{r}\delta_{l,0} $$ ! where the last term is the monopole arising from the point charge. All that ! remains is to add the homogenous solution of Poisson's equation, ! $$ V_{ij}^{\rm H}({\bf r})=\sum_{lm}V_{ij;lm}^{\rm H}\left(\frac{r} ! {R_i}\right)^lY_{lm}(\hat{\bf r}), $$ ! to the muffin-tin potential so that it is continuous at the muffin-tin ! boundary. Therefore the coefficients, $\rho_{ij;lm}^{\rm H}$, are given by ! $$ V_{ij;lm}^{\rm H}=4\pi i^l\sum_{\bf G}j_{l}(Gr)V^{\rm P}({\bf G}) ! \exp(i{\bf G}\cdot{\bf r}_{ij})Y_{lm}^*(\hat{\bf G})-V_{ij;lm}^{\rm MT} ! (R_i). $$ ! Finally note that the ${\bf G}$-vectors passed to the routine can represent ! vectors with a non-zero offset, ${\bf G}+{\bf p}$ say, which is required for ! calculating Coulomb matrix elements. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: nr(nspecies),nri(nspecies) integer, intent(in) :: ld1 real(8), intent(in) :: r(ld1,nspecies) integer, intent(in) :: igp0 real(8), intent(in) :: gpc(ngvec) real(8), intent(in) :: jlgpr(0:lnpsd,ngvec,nspecies) complex(8), intent(in) :: ylmgp(lmmaxvr,ngvec) complex(8), intent(in) :: sfacgp(ngvec,natmtot) complex(8), intent(in) :: zrhoir(ngtot) integer, intent(in) :: ld2 complex(8), intent(inout) :: zvclmt(lmmaxvr,ld2,natmtot) complex(8), intent(out) :: zvclir(ngtot) complex(8), intent(out) :: zrho0 ! local variables integer is,ia,ias,ir0,ir integer l,m,lm,ig,ifg real(8) t0,t1,t2,t3 complex(8) zsum1,zsum2,z1,z2 ! automatic arrays real(8) rmtl(0:lmaxvr+3,nspecies) real(8) rl(ld1,0:lmaxvr) complex(8) qlm(lmmaxvr,natmtot) complex(8) zl(0:lmaxvr),zlm(lmmaxvr) ! external functions real(8) factnm external factnm ! compute (R_mt)^l do is=1,nspecies rmtl(0,is)=1.d0 do l=1,lmaxvr+3 rmtl(l,is)=rmtl(l-1,is)*rmt(is) end do end do ! compute the multipole moments from the muffin-tin potentials do ias=1,natmtot is=idxis(ias) lm=0 do l=0,lmaxvr t1=dble(2*l+1)*rmtl(l+1,is)/fourpi do m=-l,l lm=lm+1 qlm(lm,ias)=t1*zvclmt(lm,nr(is),ias) end do end do end do ! Fourier transform density to G-space and store in zvclir call zcopy(ngtot,zrhoir,1,zvclir,1) call zfftifc(3,ngridg,-1,zvclir) ! subtract the multipole moments of the interstitial charge density do is=1,nspecies do l=0,lmaxvr zl(l)=fourpi*zil(l)*rmtl(l+2,is) end do do ia=1,natoms(is) ias=idxas(ia,is) do ig=1,ngvec ifg=igfft(ig) if (gpc(ig).gt.epslat) then z1=zvclir(ifg)*sfacgp(ig,ias)/gpc(ig) lm=0 do l=0,lmaxvr z2=jlgpr(l+1,ig,is)*z1*zl(l) do m=-l,l lm=lm+1 qlm(lm,ias)=qlm(lm,ias)-z2*conjg(ylmgp(lm,ig)) end do end do else t1=(fourpi/3.d0)*rmtl(3,is)*y00 qlm(1,ias)=qlm(1,ias)-t1*zvclir(ifg) end if end do end do end do ! find the smooth pseudocharge within the muffin-tin whose multipoles are the ! difference between the real muffin-tin and interstitial multipoles t0=fourpi/omega t1=factnm(2*lnpsd+1,2) do ias=1,natmtot is=idxis(ias) lm=0 do l=0,lmaxvr t2=t1/(factnm(2*l+1,2)*rmtl(l,is)) z1=t2*zilc(l) do m=-l,l lm=lm+1 zlm(lm)=z1*qlm(lm,ias) end do end do ! add the pseudocharge and real interstitial densities in G-space do ig=1,ngvec ifg=igfft(ig) if (gpc(ig).gt.epslat) then t2=gpc(ig)*rmt(is) t3=1.d0/t2**lnpsd zsum1=t3*zlm(1)*ylmgp(1,ig) lm=1 do l=1,lmaxvr lm=lm+1 zsum2=zlm(lm)*ylmgp(lm,ig) do m=1-l,l lm=lm+1 zsum2=zsum2+zlm(lm)*ylmgp(lm,ig) end do t3=t3*t2 zsum1=zsum1+t3*zsum2 end do z1=t0*jlgpr(lnpsd,ig,is)*conjg(sfacgp(ig,ias)) zvclir(ifg)=zvclir(ifg)+z1*zsum1 else t2=t0*y00/factnm(2*lnpsd+1,2) zvclir(ifg)=zvclir(ifg)+t2*zlm(1) end if end do end do ! solve Poisson's equation in G+p-space for the pseudocharge do ig=1,igp0-1 ifg=igfft(ig) zvclir(ifg)=(fourpi/gpc(ig)**2)*zvclir(ifg) end do do ig=igp0+1,ngvec ifg=igfft(ig) zvclir(ifg)=(fourpi/gpc(ig)**2)*zvclir(ifg) end do ! set zrho0 (pseudocharge density coefficient of the smallest G+p-vector) if (igp0.gt.0) then ifg=igfft(igp0) zrho0=zvclir(ifg) zvclir(ifg)=0.d0 end if ! match potentials at muffin-tin boundary by adding homogeneous solution do is=1,nspecies ! compute (r/R_mt)^l t1=1.d0/rmt(is) do ir=1,nr(is) t2=t1*r(ir,is) rl(ir,0)=1.d0 do l=1,lmaxvr rl(ir,l)=rl(ir,l-1)*t2 end do end do do ia=1,natoms(is) ias=idxas(ia,is) ! find the spherical harmonic expansion of the interstitial potential at the ! muffin-tin radius zlm(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) z1=fourpi*zvclir(ifg)*sfacgp(ig,ias) lm=0 do l=0,lmaxvr z2=jlgpr(l,ig,is)*z1*zil(l) do m=-l,l lm=lm+1 zlm(lm)=zlm(lm)+z2*conjg(ylmgp(lm,ig)) end do end do end do ! add homogenous solution lm=0 do l=0,lmaxvr if (l.le.lmaxinr) then ir0=1 else ir0=nri(is)+1 end if do m=-l,l lm=lm+1 z1=zlm(lm)-zvclmt(lm,nr(is),ias) ! store the nuclear potential without the self-term for the phonon dynamical ! matrix calculation if (tphdyn) then if (ias.eq.iasph) then zvnmt(lm,ir0:nr(is))=z1*rl(ir0:nr(is),l) end if end if do ir=ir0,nr(is) zvclmt(lm,ir,ias)=zvclmt(lm,ir,ias)+z1*rl(ir,l) end do end do end do end do end do ! Fourier transform interstitial potential to real-space call zfftifc(3,ngridg,1,zvclir) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/checkfsm.f900000644002504400250440000000005012337331323016301 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/checkfsm.f900000644002504400250440000000300712337331323017045 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine checkfsm use modmain implicit none ! local variables integer isym,lspn integer is,ia,ja real(8) sc(3,3),v(3),t1 if (fsmtype.eq.0) return do isym=1,nsymcrys lspn=lspnsymc(isym) ! proper rotation matrix in Cartesian coordinates sc(:,:)=dble(symlatd(lspn))*symlatc(:,:,lspn) ! check invariance of global moment if ((abs(fsmtype).eq.1).or.(abs(fsmtype).eq.3)) then v(:)=sc(:,1)*momfix(1)+sc(:,2)*momfix(2)+sc(:,3)*momfix(3) t1=sum(abs(momfix(:)-v(:))) if (t1.gt.epslat) then write(*,*) write(*,'("Error(checkfsm): momfix not invariant under symmetry group")') write(*,*) stop end if end if ! check invariance of muffin-tin moments if ((abs(fsmtype).eq.2).or.(abs(fsmtype).eq.3)) then do is=1,nspecies do ia=1,natoms(is) ! equivalent atom ja=ieqatom(ia,is,isym) v(:)=sc(:,1)*mommtfix(1,ja,is)+sc(:,2)*mommtfix(2,ja,is) & +sc(:,3)*mommtfix(3,ja,is) t1=sum(abs(mommtfix(:,ia,is)-v(:))) if (t1.gt.epslat) then write(*,*) write(*,'("Error(checkfsm): mommtfix not invariant under symmetry & &group")') write(*,'(" for species ",I4)') is write(*,'(" and equivalent atoms ",2I4)') ia,ja write(*,*) stop end if end do end do end if end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rschroddme.f900000644002504400250440000000005012337331323016650 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rschroddme.f900000644002504400250440000000545212337331323017422 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rschroddme ! !INTERFACE: subroutine rschroddme(sol,m,l,k,e,nr,r,vr,nn,p0,p1,q0,q1) ! !INPUT/OUTPUT PARAMETERS: ! sol : speed of light in atomic units (in,real) ! m : order of energy derivative (in,integer) ! l : angular momentum quantum number (in,integer) ! k : quantum number k, zero if Dirac eqn. is not to be used (in,integer) ! e : energy (in,real) ! nr : number of radial mesh points (in,integer) ! r : radial mesh (in,real(nr)) ! vr : potential on radial mesh (in,real(nr)) ! nn : number of nodes (out,integer) ! p0 : m th energy derivative of P (out,real(nr)) ! p1 : radial derivative of p0 (out,real(nr)) ! q0 : m th energy derivative of Q (out,real(nr)) ! q1 : radial derivative of q0 (out,real(nr)) ! !DESCRIPTION: ! Finds the solution to the $m$th energy derivative of the scalar relativistic ! radial Schr\"{o}dinger equation using the routine {\tt rschrodint}. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none real(8), intent(in) :: sol integer, intent(in) :: m integer, intent(in) :: l integer, intent(in) :: k real(8), intent(in) :: e integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(in) :: vr(nr) integer, intent(out) :: nn real(8), intent(out) :: p0(nr),p1(nr) real(8), intent(out) :: q0(nr),q1(nr) ! local variables integer im,kpa,ir real(8) t1,t2 ! allocatable arrays real(8), allocatable :: p0p(:) real(8), allocatable :: g0(:),g1(:) real(8), allocatable :: f0(:),f1(:) if (nr.le.0) then write(*,*) write(*,'("Error(rschroddme): invalid nr : ",I8)') nr write(*,*) stop end if if ((m.lt.0).or.(m.gt.6)) then write(*,*) write(*,'("Error(rschroddme): m out of range : ",I8)') m write(*,*) stop end if if (k.eq.0) then ! use the scalar relativistic Schrodinger equation allocate(p0p(nr)) if (m.eq.0) then call rschrodint(sol,m,l,e,nr,r,vr,nn,p0p,p0,p1,q0,q1) else do im=0,m call rschrodint(sol,im,l,e,nr,r,vr,nn,p0p,p0,p1,q0,q1) p0p(:)=p0(:) end do end if deallocate(p0p) else ! use the Dirac equation allocate(g0(nr),g1(nr)) allocate(f0(nr),f1(nr)) if (k.eq.l) then kpa=k else if (k.eq.l+1) then kpa=-k else write(*,*) write(*,'("Error(rschroddme): incompatible l and k : ",2I8)') l,k write(*,*) stop end if call rdiracdme(sol,m,kpa,e,nr,r,vr,nn,g0,g1,f0,f1) ! determine equivalent scalar relativistic functions t1=1.d0/sol**2 do ir=1,nr t2=2.d0-t1*vr(ir) p0(ir)=g0(ir) p1(ir)=g1(ir) q0(ir)=(p1(ir)-p0(ir)/r(ir))/t2 end do call fderiv(1,nr,r,q0,q1) deallocate(g0,g1,f0,f1) end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gendmat.f900000644002504400250440000000005012337331323016135 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gendmat.f900000644002504400250440000000675212337331323016713 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gendmat(tspndg,tlmdg,lmin,lmax,ias,ngp,apwalm,evecfv,evecsv,ld,dmat) use modmain implicit none ! arguments logical, intent(in) :: tspndg,tlmdg integer, intent(in) :: lmin,lmax integer, intent(in) :: ias integer, intent(in) :: ngp(nspnfv) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv) complex(8), intent(in) :: evecfv(nmatmax,nstfv,nspnfv) complex(8), intent(in) :: evecsv(nstsv,nstsv) integer, intent(in) :: ld complex(8), intent(out) :: dmat(ld,nspinor,ld,nspinor,nstsv) ! local variables integer ist,ispn,jspn,is,ia integer nrc,nrci,nrc0,irc0,irc integer l,m1,m2,lm1,lm2,i,j real(8) t1 complex(8) zq(2),z1 ! automatic arrays logical done(nstfv,nspnfv) real(8) fr1(nrcmtmax),fr2(nrcmtmax),gr(nrcmtmax) ! allocatable arrays complex(8), allocatable :: wfmt1(:,:,:,:),wfmt2(:,:,:) if (lmin.lt.0) then write(*,*) write(*,'("Error(gendmat): lmin < 0 : ",I8)') lmin write(*,*) stop end if if (lmax.gt.lmaxvr) then write(*,*) write(*,'("Error(gendmat): lmax > lmaxvr : ",2I8)') lmax,lmaxvr write(*,*) stop end if ! allocate local arrays allocate(wfmt1(lmmaxvr,nrcmtmax,nstfv,nspnfv)) allocate(wfmt2(lmmaxvr,nrcmtmax,nspinor)) ! species and atom numbers is=idxis(ias) ia=idxia(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) ! de-phasing factor for spin-spirals if (spinsprl.and.ssdph) then t1=-0.5d0*dot_product(vqcss(:),atposc(:,ia,is)) zq(1)=cmplx(cos(t1),sin(t1),8) zq(2)=conjg(zq(1)) end if ! zero the density matrix dmat(:,:,:,:,:)=0.d0 done(:,:)=.false. ! begin loop over second-variational states do j=1,nstsv if (tevecsv) then ! generate spinor wavefunction from second-variational eigenvectors wfmt2(:,:,:)=0.d0 i=0 do ispn=1,nspinor jspn=jspnfv(ispn) do ist=1,nstfv i=i+1 z1=evecsv(i,j) if (spinsprl.and.ssdph) z1=z1*zq(ispn) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (.not.done(ist,jspn)) then call wavefmt(lradstp,lmaxvr,ias,ngp(jspn),apwalm(:,:,:,:,jspn), & evecfv(:,ist,jspn),lmmaxvr,wfmt1(:,:,ist,jspn)) done(ist,jspn)=.true. end if ! add to spinor wavefunction call zfmtadd(nrc,nrci,z1,wfmt1(:,:,ist,jspn),wfmt2(:,:,ispn)) end if end do end do else ! spin-unpolarised wavefunction call wavefmt(lradstp,lmaxvr,ias,ngp,apwalm,evecfv(:,j,1),lmmaxvr,wfmt2) end if do ispn=1,nspinor do jspn=1,nspinor if (tspndg.and.(ispn.ne.jspn)) cycle do l=lmin,lmax if (l.le.lmaxinr) then nrc0=nrc irc0=1 else nrc0=nrc-nrci irc0=nrci+1 end if do m1=-l,l lm1=idxlm(l,m1) do m2=-l,l lm2=idxlm(l,m2) if (tlmdg.and.(lm1.ne.lm2)) cycle do irc=irc0,nrc z1=wfmt2(lm1,irc,ispn)*conjg(wfmt2(lm2,irc,jspn)) t1=rcmt(irc,is)**2 fr1(irc)=dble(z1)*t1 fr2(irc)=aimag(z1)*t1 end do call fderiv(-2,nrc0,rcmt(irc0,is),fr1(irc0),gr(irc0)) t1=gr(nrc) call fderiv(-2,nrc0,rcmt(irc0,is),fr2(irc0),gr(irc0)) dmat(lm1,ispn,lm2,jspn,j)=cmplx(t1,gr(nrc),8) end do end do end do end do end do ! end loop over second-variational states end do deallocate(wfmt1,wfmt2) return end subroutine elk-2.3.22/src/PaxHeaders.22528/gaunt.f900000644002504400250440000000005012337331323015634 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gaunt.f900000644002504400250440000000416012337331323016401 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: gaunt ! !INTERFACE: real(8) function gaunt(l1,l2,l3,m1,m2,m3) ! !INPUT/OUTPUT PARAMETERS: ! l1, l2, l3 : angular momentum quantum numbers (in,integer) ! m1, m2, m3 : magnetic quantum numbers (in,integer) ! !DESCRIPTION: ! Returns the Gaunt coefficient given by ! $$ \langle Y^{l_1}_{m_1}|Y^{l_2}_{m_2}|Y^{l_3}_{m_3} \rangle ! = (-1)^{m_1}\left[\frac{(2l_1+1)(2l_2+1)(2l_3+1)}{4\pi} \right] ! ^{\frac{1}{2}} ! \begin{pmatrix} l_1 & l_2 & l_3 \\ 0 & 0 & 0 \end{pmatrix} ! \begin{pmatrix} l_1 & l_2 & l_3 \\ -m_1 & m_2 & m_3 \end{pmatrix}. $$ ! Suitable for $l_i$ less than 50. ! ! !REVISION HISTORY: ! Created November 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: l1,l2,l3 integer, intent(in) :: m1,m2,m3 ! local variables integer j,j1,j2,j3,jh real(8) t1 ! real constant 1/sqrt(4*pi) real(8), parameter :: c1=0.28209479177387814347d0 ! external functions real(8) wigner3j,factnm,factr external wigner3j,factnm,factr if ((l1.lt.0).or.(l2.lt.0).or.(l3.lt.0).or.(abs(m1).gt.l1).or.(abs(m2).gt.l2) & .or.(abs(m3).gt.l3)) then write(*,*) write(*,'("Error(gaunt): non-physical arguments :")') write(*,'("l1 = ",I8," l2 = ",I8," l3 = ",I8)') l1,l2,l3 write(*,'("m1 = ",I8," m2 = ",I8," m3 = ",I8)') m1,m2,m3 write(*,*) stop end if if ((l1.gt.50).or.(l2.gt.50).or.(l3.gt.50)) then write(*,*) write(*,'("Error(gaunt): angular momenta out of range : ",3I8)') l1,l2,l3 write(*,*) stop end if if (m1-m2-m3.ne.0) then gaunt=0.d0 return end if j1=l2-l1+l3 j2=l1-l2+l3 j3=l1+l2-l3 if ((j1.lt.0).or.(j2.lt.0).or.(j3.lt.0)) then gaunt=0.d0 return end if j=l1+l2+l3 if (mod(j,2).ne.0) then gaunt=0.d0 return end if jh=j/2 t1=sqrt(dble((2*l1+1)*(2*l2+1)*(2*l3+1))*factr(j1,j+1)*factnm(j2,1) & *factnm(j3,1)) t1=t1*factr(jh,jh-l1)/(factnm(jh-l2,1)*factnm(jh-l3,1)) gaunt=t1*c1*wigner3j(l1,l2,l3,-m1,m2,m3) if (mod(m1+jh,2).ne.0) gaunt=-gaunt return end function !EOC elk-2.3.22/src/PaxHeaders.22528/eveqnfvz.f900000644002504400250440000000005012337331323016362 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/eveqnfvz.f900000644002504400250440000000261612337331323017133 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine eveqnfvz(nmatp,h,o,evalfv,evecfv) use modmain implicit none ! arguments integer, intent(in) :: nmatp complex(8), intent(in) :: h(*),o(*) real(8), intent(out) :: evalfv(nstfv) complex(8), intent(out) :: evecfv(nmatmax,nstfv) ! local variables integer i,m,lwork,info real(8) vl,vu real(8) ts0,ts1 ! allocatable arrays integer, allocatable :: iwork(:),ifail(:) real(8), allocatable :: w(:),rwork(:) complex(8), allocatable :: work(:) call timesec(ts0) allocate(iwork(5*nmatp),ifail(nmatp)) allocate(w(nmatp),rwork(7*nmatp)) lwork=2*nmatp allocate(work(lwork)) call zhegvx(1,'V','I','U',nmatp,h,nmatp,o,nmatp,vl,vu,1,nstfv,evaltol,m,w, & evecfv,nmatmax,work,lwork,rwork,iwork,ifail,info) if (info.ne.0) then write(*,*) write(*,'("Error(eveqnfvz): diagonalisation failed")') write(*,'(" ZHEGVX returned INFO = ",I8)') info if (info.gt.nmatp) then i=info-nmatp write(*,'(" The leading minor of the overlap matrix of order ",I8)') i write(*,'(" is not positive definite")') write(*,'(" Order of overlap matrix : ",I8)') nmatp end if write(*,*) stop end if evalfv(1:nstfv)=w(1:nstfv) deallocate(iwork,ifail,w,rwork,work) call timesec(ts1) !$OMP ATOMIC timefv=timefv+ts1-ts0 return end subroutine elk-2.3.22/src/PaxHeaders.22528/zfmtctof.f900000644002504400250440000000005012337331323016352 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zfmtctof.f900000644002504400250440000000167312337331323017125 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine zfmtctof(zfmt) use modmain implicit none ! arguments real(8), intent(inout) :: zfmt(2,lmmaxvr,nrmtmax,natmtot) ! local variables integer ld1,ld2,is,ias,ir,lm ld2=2*lmmaxvr ld1=ld2*lradstp !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(is,ir,lm) !$OMP DO do ias=1,natmtot is=idxis(ias) do ir=1,nrmtinr(is),lradstp zfmt(:,lmmaxinr+1:lmmaxvr,ir,ias)=0.d0 end do ! interpolate with a clamped spline do lm=1,lmmaxvr ! real part call rfinterp(nrcmt(is),rcmt(:,is),ld1,zfmt(1,lm,1,ias),nrmt(is), & spr(:,is),ld2,zfmt(1,lm,1,ias)) ! imaginary part call rfinterp(nrcmt(is),rcmt(:,is),ld1,zfmt(2,lm,1,ias),nrmt(is), & spr(:,is),ld2,zfmt(2,lm,1,ias)) end do end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/wavefmt.f900000644002504400250440000000005012337331323016167 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/wavefmt.f900000644002504400250440000000712612337331323016741 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: wavefmt ! !INTERFACE: subroutine wavefmt(lrstp,lmax,ias,ngp,apwalm,evecfv,ld,wfmt) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! lrstp : radial step length (in,integer) ! lmax : maximum angular momentum required (in,integer) ! ias : joint atom and species number (in,integer) ! ngp : number of G+p-vectors (in,integer) ! apwalm : APW matching coefficients ! (in,complex(ngkmax,apwordmax,lmmaxapw,natmtot)) ! evecfv : first-variational eigenvector (in,complex(nmatmax)) ! ld : leading dimension (in,integer) ! wfmt : complex muffin-tin wavefunction passed in as real array ! (out,real(2,ld,*)) ! !DESCRIPTION: ! Calculates the first-variational wavefunction in the muffin-tin in terms of ! a spherical harmonic expansion. For atom $\alpha$ and a particular $k$-point ! ${\bf p}$, the $r$-dependent $(l,m)$-coefficients of the wavefunction for ! the $i$th state are given by ! $$ \Phi^{i{\bf p}}_{\alpha lm}(r)=\sum_{\bf G}b^{i{\bf p}}_{\bf G} ! \sum_{j=1}^{M^{\alpha}_l}A^{\alpha}_{jlm}({\bf G+p})u^{\alpha}_{jl}(r) ! +\sum_{j=1}^{N^{\alpha}}b^{i{\bf p}}_{(\alpha,j,m)}v^{\alpha}_j(r) ! \delta_{l,l_j}, $$ ! where $b^{i{\bf p}}$ is the $i$th eigenvector returned from routine ! {\tt eveqn}; $A^{\alpha}_{jlm}({\bf G+p})$ is the matching coefficient; ! $M^{\alpha}_l$ is the order of the APW; $u^{\alpha}_{jl}$ is the APW radial ! function; $N^{\alpha}$ is the number of local-orbitals; $v^{\alpha}_j$ is ! the $j$th local-orbital radial function; and $(\alpha,j,m)$ is a compound ! index for the location of the local-orbital in the eigenvector. See routines ! {\tt genapwfr}, {\tt genlofr}, {\tt match} and {\tt eveqn}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) ! Fixed description, October 2004 (C. Brouder) ! Removed argument ist, November 2006 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: lrstp integer, intent(in) :: lmax integer, intent(in) :: ias integer, intent(in) :: ngp complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: evecfv(nmatmax) integer, intent(in) :: ld real(8), intent(out) :: wfmt(2,ld,*) ! local variables integer is,nrc,ir,ld2 integer l,m,lm,io,ilo complex(8) z1 ! external functions complex(8) zdotu external zdotu if (lmax.gt.lmaxapw) then write(*,*) write(*,'("Error(wavefmt): lmax > lmaxapw : ",I8)') lmax write(*,*) stop end if ld2=ld*2 ! species number is=idxis(ias) ! zero the wavefunction nrc=0 do ir=1,nrmt(is),lrstp nrc=nrc+1 wfmt(:,:,nrc)=0.d0 end do ! APW functions lm=0 do l=0,lmax do m=-l,l lm=lm+1 do io=1,apword(l,is) z1=zdotu(ngp,evecfv,1,apwalm(:,io,lm,ias),1) if (abs(dble(z1)).gt.1.d-14) then call daxpy(nrc,dble(z1),apwfr(:,1,io,l,ias),lrstp,wfmt(1,lm,1),ld2) end if if (abs(aimag(z1)).gt.1.d-14) then call daxpy(nrc,aimag(z1),apwfr(:,1,io,l,ias),lrstp,wfmt(2,lm,1),ld2) end if end do end do end do ! local-orbital functions do ilo=1,nlorb(is) l=lorbl(ilo,is) if (l.le.lmax) then do m=-l,l lm=idxlm(l,m) z1=evecfv(ngp+idxlo(lm,ilo,ias)) if (abs(dble(z1)).gt.1.d-14) then call daxpy(nrc,dble(z1),lofr(:,1,ilo,ias),lrstp,wfmt(1,lm,1),ld2) end if if (abs(aimag(z1)).gt.1.d-14) then call daxpy(nrc,aimag(z1),lofr(:,1,ilo,ias),lrstp,wfmt(2,lm,1),ld2) end if end do end if end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/r3minv.f900000644002504400250440000000005012337331323015734 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/r3minv.f900000644002504400250440000000236112337331323016502 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3minv ! !INTERFACE: subroutine r3minv(a,b) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,real(3,3)) ! b : output matrix (in,real(3,3)) ! !DESCRIPTION: ! Computes the inverse of a real $3\times 3$ matrix. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3) real(8), intent(out) :: b(3,3) ! local variables real(8) t1 t1=a(1,2)*a(2,3)*a(3,1)-a(1,3)*a(2,2)*a(3,1)+a(1,3)*a(2,1)*a(3,2) & -a(1,1)*a(2,3)*a(3,2)+a(1,1)*a(2,2)*a(3,3)-a(1,2)*a(2,1)*a(3,3) if (abs(t1).lt.1.d-40) then write(*,*) write(*,'("Error(r3minv): singular matrix")') write(*,*) stop end if t1=1.d0/t1 b(1,1)=(a(2,2)*a(3,3)-a(2,3)*a(3,2))*t1 b(1,2)=(a(1,3)*a(3,2)-a(1,2)*a(3,3))*t1 b(1,3)=(a(1,2)*a(2,3)-a(1,3)*a(2,2))*t1 b(2,1)=(a(2,3)*a(3,1)-a(2,1)*a(3,3))*t1 b(2,2)=(a(1,1)*a(3,3)-a(1,3)*a(3,1))*t1 b(2,3)=(a(1,3)*a(2,1)-a(1,1)*a(2,3))*t1 b(3,1)=(a(2,1)*a(3,2)-a(2,2)*a(3,1))*t1 b(3,2)=(a(1,2)*a(3,1)-a(1,1)*a(3,2))*t1 b(3,3)=(a(1,1)*a(2,2)-a(1,2)*a(2,1))*t1 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gauntyry.f900000644002504400250440000000005012337331323016400 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gauntyry.f900000644002504400250440000000272412337331323017151 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: gauntyry ! !INTERFACE: complex(8) function gauntyry(l1,l2,l3,m1,m2,m3) ! !INPUT/OUTPUT PARAMETERS: ! l1, l2, l3 : angular momentum quantum numbers (in,integer) ! m1, m2, m3 : magnetic quantum numbers (in,integer) ! !DESCRIPTION: ! Returns the complex Gaunt-like coefficient given by ! $\langle Y^{l_1}_{m_1}|R^{l_2}_{m_2}|Y^{l_3}_{m_3}\rangle$, where $Y_{lm}$ ! and $R_{lm}$ are the complex and real spherical harmonics, respectively. ! Suitable for $l_i$ less than 50. See routine {\tt genrlm}. ! ! !REVISION HISTORY: ! Created November 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: l1,l2,l3 integer, intent(in) :: m1,m2,m3 ! local variables ! real constant sqrt(2)/2 real(8), parameter :: c1=0.7071067811865475244d0 real(8) t1,t2 ! external functions real(8) gaunt external gaunt if (m2.gt.0) then if (mod(m2,2).eq.0) then t1=1.d0 else t1=-1.d0 end if t2=c1*(gaunt(l1,l2,l3,m1,m2,m3)+t1*gaunt(l1,l2,l3,m1,-m2,m3)) gauntyry=cmplx(t2,0.d0,8) else if (m2.lt.0) then if (mod(m2,2).eq.0) then t1=1.d0 else t1=-1.d0 end if t2=c1*(gaunt(l1,l2,l3,m1,m2,m3)-t1*gaunt(l1,l2,l3,m1,-m2,m3)) gauntyry=cmplx(0.d0,-t2,8) else gauntyry=cmplx(gaunt(l1,l2,l3,m1,m2,m3),0.d0,8) end if return end function !EOC elk-2.3.22/src/PaxHeaders.22528/dwavefmt.f900000644002504400250440000000005012337331324016334 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dwavefmt.f900000644002504400250440000000366012337331324017105 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dwavefmt(lrstp,lmax,ias,ngp,ngpq,apwalmq,dapwalm,evecfv,devecfv,ld, & dwfmt) use modmain use modphonon implicit none ! arguments integer, intent(in) :: lrstp,lmax,ias,ngp,ngpq complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw) complex(8), intent(in) :: evecfv(nmatmax),devecfv(nmatmax) integer, intent(in) :: ld real(8), intent(out) :: dwfmt(2,ld,*) ! local variables integer is,nrc,ir,ld2 integer l,m,lm,io,ilo complex(8) z1 ! external functions complex(8) zdotu external zdotu if (lmax.gt.lmaxapw) then write(*,*) write(*,'("Error(dwavefmt): lmax > lmaxapw : ",I8)') lmax write(*,*) stop end if ld2=ld*2 is=idxis(ias) nrc=0 do ir=1,nrmt(is),lrstp nrc=nrc+1 dwfmt(:,:,nrc)=0.d0 end do ! APW functions lm=0 do l=0,lmax do m=-l,l lm=lm+1 do io=1,apword(l,is) z1=zdotu(ngpq,devecfv,1,apwalmq(:,io,lm,ias),1) if (ias.eq.iasph) then z1=z1+zdotu(ngp,evecfv,1,dapwalm(:,io,lm),1) end if if (abs(dble(z1)).gt.1.d-14) then call daxpy(nrc,dble(z1),apwfr(:,1,io,l,ias),lrstp,dwfmt(1,lm,1),ld2) end if if (abs(aimag(z1)).gt.1.d-14) then call daxpy(nrc,aimag(z1),apwfr(:,1,io,l,ias),lrstp,dwfmt(2,lm,1),ld2) end if end do end do end do ! local-orbital functions do ilo=1,nlorb(is) l=lorbl(ilo,is) if (l.le.lmax) then do m=-l,l lm=idxlm(l,m) z1=devecfv(ngpq+idxlo(lm,ilo,ias)) if (abs(dble(z1)).gt.1.d-14) then call daxpy(nrc,dble(z1),lofr(:,1,ilo,ias),lrstp,dwfmt(1,lm,1),ld2) end if if (abs(aimag(z1)).gt.1.d-14) then call daxpy(nrc,aimag(z1),lofr(:,1,ilo,ias),lrstp,dwfmt(2,lm,1),ld2) end if end do end if end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/zbesselb.f900000644002504400250440000000005012337331324016330 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/zbesselb.f900000644002504400250440000000346612337331324017105 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: zbesselb ! !INTERFACE: subroutine zbesselb(lmax,x,b) ! !INPUT/OUTPUT PARAMETERS: ! lmax : maximum order of Bessel function (in,integer) ! x : real argument (in,real) ! b : array of returned values (out,real(0:lmax)) ! !DESCRIPTION: ! Computes variations of the spherical Bessel function ! $b_l(x)=i^lh^{(1)}_l(ix)$, for real argument $x$ and ! $l=0,1,\ldots,l_{\rm max}$. The recursion relation ! $$ j_{l+1}(x)=\frac{2l+1}{x}j_l(x)+j_{l-1}(x) $$ ! is used upwards. For starting values there are ! $$ b_0(x)=-\frac{e^{-x}}{x};\qquad b_1(x)=b_0(x)\left\{1+\frac{1}{x} ! \right\}. $$ ! For $x\ll 1$ the asymtotic forms ! $$ b_l(x)\approx\frac{-(2l-1)!!}{(-x)^{l+1}} $$ ! are used. ! ! !REVISION HISTORY: ! Created April 2008 from sbessel routine (Lars Nordstrom) !EOP !BOC implicit none ! arguments integer, intent(in) :: lmax real(8), intent(in) :: x real(8), intent(out) :: b(0:lmax) ! local variables integer l real(8) xi,b0,b1,bt,t3,t4 if ((lmax.lt.0).or.(lmax.gt.50)) then write(*,*) write(*,'("Error(zbesselb): lmax out of range : ",I8)') lmax write(*,*) stop end if if ((x.lt.0.d0).or.(x.gt.1.d8)) then write(*,*) write(*,'("Error(zbesselb): x out of range : ",G18.10)') x write(*,*) stop end if xi=1.d0/x ! treat x << 1 if (x.lt.1.d-7) then b(0)=-xi t3=-1.d0 t4=xi do l=1,lmax t3=t3*dble(2*l-1) t4=t4*xi b(l)=t4*t3 end do return end if ! recurse up b(0)=-xi*exp(-x) if (lmax.eq.0) return b(1)=b(0)*(1.d0+xi) if (lmax.eq.1) return b0=b(0) b1=b(1) do l=2,lmax bt=dble(2*l-1)*b1*xi+b0 b0=b1 b1=bt b(l)=b1 end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genfxcr.f900000644002504400250440000000005012337331324016153 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genfxcr.f900000644002504400250440000000652512337331324016727 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genfxcr(tsh,fxcmt,fxcir) use modmain use modtddft use modfxcifc implicit none ! arguments logical, intent(in) :: tsh real(8), intent(out) :: fxcmt(lmmaxvr,nrmtmax,natmtot) real(8), intent(out) :: fxcir(ngtot) ! local variables integer idm,is,ia,ias integer nr,nri,ir,i,n real(8) t1 real(8), allocatable :: rho(:),rhoup(:),rhodn(:),mag(:,:) real(8), allocatable :: fxc(:),fxcuu(:),fxcud(:),fxcdd(:) ! number of independent spin components n=lmmaxvr*nrmtmax allocate(rho(n),fxc(n)) if (spinpol) then allocate(mag(n,3)) n=max(n,ngtot) allocate(rhoup(n),rhodn(n)) allocate(fxcuu(n),fxcud(n),fxcdd(n)) end if !---------------------------! ! muffin-tin kernel ! !---------------------------! do is=1,nspecies nr=nrmt(is) nri=nrmtinr(is) n=lmmaxvr*nr do ia=1,natoms(is) ias=idxas(ia,is) ! compute the density in spherical coordinates call rbsht(nr,nri,1,rhomt(:,:,ias),1,rho) if (spinpol) then !------------------------! ! spin-polarised ! !------------------------! ! magnetisation in spherical coordinates do idm=1,ndmag call rbsht(nr,nri,1,magmt(:,:,ias,idm),1,mag(:,idm)) end do if (ncmag) then ! non-collinear (use Kubler's trick) do i=1,n ! compute rhoup=(rho+|m|)/2 and rhodn=(rho-|m|)/2 t1=sqrt(mag(i,1)**2+mag(i,2)**2+mag(i,3)**2) rhoup(i)=0.5d0*(rho(i)+t1) rhodn(i)=0.5d0*(rho(i)-t1) end do else ! collinear do i=1,n ! compute rhoup=(rho+m_z)/2 and rhodn=(rho-m_z)/2 rhoup(i)=0.5d0*(rho(i)+mag(i,1)) rhodn(i)=0.5d0*(rho(i)-mag(i,1)) end do end if ! compute fxc call fxcifc(fxctype,n=n,rhoup=rhoup,rhodn=rhodn,fxcuu=fxcuu,fxcud=fxcud, & fxcdd=fxcdd) ! form the scalar quantity dv/drho do i=1,n fxc(i)=0.25d0*(fxcuu(i)+2.d0*fxcud(i)+fxcdd(i)) end do else !--------------------------! ! spin-unpolarised ! !--------------------------! call fxcifc(fxctype,n=n,rho=rho,fxc=fxc) end if if (tsh) then ! convert fxc to spherical harmonics if required call rfsht(nr,nri,1,fxc,1,fxcmt(:,:,ias)) else call dcopy(n,fxc,1,fxcmt(:,:,ias),1) end if end do end do !-----------------------------! ! interstitial kernel ! !-----------------------------! if (spinpol) then !------------------------! ! spin-polarised ! !------------------------! if (ncmag) then ! non-collinear do ir=1,ngtot t1=sqrt(magir(ir,1)**2+magir(ir,2)**2+magir(ir,3)**2) rhoup(ir)=0.5d0*(rhoir(ir)+t1) rhodn(ir)=0.5d0*(rhoir(ir)-t1) end do else ! collinear do ir=1,ngtot rhoup(ir)=0.5d0*(rhoir(ir)+magir(ir,1)) rhodn(ir)=0.5d0*(rhoir(ir)-magir(ir,1)) end do end if ! compute fxc call fxcifc(fxctype,n=ngtot,rhoup=rhoup,rhodn=rhodn,fxcuu=fxcuu,fxcud=fxcud, & fxcdd=fxcdd) do ir=1,ngtot fxcir(ir)=0.25d0*(fxcuu(ir)+2.d0*fxcud(ir)+fxcdd(ir)) end do else !--------------------------! ! spin-unpolarised ! !--------------------------! call fxcifc(fxctype,n=ngtot,rho=rhoir,fxc=fxcir) end if deallocate(rho,fxc) if (spinpol) then deallocate(mag,rhoup,rhodn) deallocate(fxcuu,fxcud,fxcdd) end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/eveqnhf.f900000644002504400250440000000005012337331324016153 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/eveqnhf.f900000644002504400250440000001554412337331324016730 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst and S. Sharma. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine eveqnhf(ikp,vmt,vir,bmt,bir,evecsvp) use modmain implicit none ! arguments integer, intent(in) :: ikp real(8), intent(in) :: vmt(lmmaxvr,nrcmtmax,natmtot) real(8), intent(in) :: vir(ngtot) real(8), intent(in) :: bmt(lmmaxvr,nrcmtmax,natmtot,ndmag) real(8), intent(in) :: bir(ngtot,ndmag) complex(8), intent(inout) :: evecsvp(nstsv,nstsv) ! local variables integer ik,jk,iv(3) integer ig,iq,igq0 integer ist1,ist2,ist3 integer lwork,info real(8) cfq,v(3),t1 complex(8) zrho01,zrho02,z1,z2 ! automatic arrays integer idx(nstsv) complex(8) sfacgq0(natmtot) ! allocatable arrays real(8), allocatable :: vgqc(:,:),gqc(:),tpgqc(:,:) real(8), allocatable :: jlgqr(:,:,:),jlgq0r(:,:,:) real(8), allocatable :: rwork(:) complex(8), allocatable :: apwalm(:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: h(:,:),c(:,:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: wfmt1(:,:,:,:,:),wfmt2(:,:,:,:,:) complex(8), allocatable :: wfir1(:,:,:),wfir2(:,:,:) complex(8), allocatable :: zrhomt(:,:,:,:),zrhoir(:,:) complex(8), allocatable :: zvclmt(:,:,:),zvclir(:) complex(8), allocatable :: work(:) ! external functions complex(8) zfinp,zfmtinp external zfinp,zfmtinp !$OMP CRITICAL write(*,'("Info(eveqnhf): ",I6," of ",I6," k-points")') ikp,nkpt !$OMP END CRITICAL ! allocate local arrays allocate(vgqc(3,ngvec),gqc(ngvec),tpgqc(2,ngvec)) allocate(jlgqr(0:lnpsd,ngvec,nspecies),jlgq0r(0:lmaxvr,nrcmtmax,nspecies)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(h(nstsv,nstsv),c(nstsv,nstsv)) allocate(ylmgq(lmmaxvr,ngvec),sfacgq(ngvec,natmtot)) allocate(wfmt1(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfmt2(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir1(ngtot,nspinor,nstsv),wfir2(ngtot,nspinor,nstsv)) allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot,nstsv),zrhoir(ngtot,nstsv)) ! coefficient of long-range term cfq=0.5d0*(omega/pi)**2 ! get the eigenvectors from file for input k-point call getevecfv(vkl(:,ikp),vgkl(:,:,:,ikp),evecfv) ! find the matching coefficients call match(ngk(1,ikp),gkc(:,1,ikp),tpgkc(:,:,1,ikp),sfacgk(:,:,1,ikp),apwalm) ! index to all states do ist1=1,nstsv idx(ist1)=ist1 end do ! calculate the wavefunctions for all states of the input k-point call genwfsv(.false.,.false.,nstsv,idx,ngk(1,ikp),igkig(:,1,ikp),apwalm, & evecfv,evecsvp,wfmt1,ngtot,wfir1) !-----------------------------------------! ! local potential matrix elements ! !-----------------------------------------! call genvmatk(vmt,vir,wfmt1,wfir1,h) ! magnetic field matrix elements in hybrid case if (hybrid.and.spinpol) then call genbmatk(bmt,bir,wfmt1,wfir1,c) h(:,:)=h(:,:)+c(:,:) end if !---------------------------------! ! kinetic matrix elements ! !---------------------------------! call zgemm('N','N',nstsv,nstsv,nstsv,zone,kmatc(:,:,ikp),nstsv,evecsvp,nstsv, & zzero,c,nstsv) call zgemm('C','N',nstsv,nstsv,nstsv,zone,evecsvp,nstsv,c,nstsv,zone,h,nstsv) !---------------------------------------------------------! ! Coulomb valence-valence-valence matrix elements ! !---------------------------------------------------------! c(:,:)=0.d0 ! start loop over non-reduced k-point set do ik=1,nkptnr ! find the equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! determine q-vector iv(:)=ivk(:,ikp)-ivk(:,ik) iv(:)=modulo(iv(:),ngridk(:)) iq=iqmap(iv(1),iv(2),iv(3)) v(:)=vkc(:,ikp)-vkc(:,ik) do ig=1,ngvec ! determine G+q-vectors vgqc(:,ig)=vgc(:,ig)+v(:) ! G+q-vector length and (theta, phi) coordinates call sphcrd(vgqc(:,ig),gqc(ig),tpgqc(:,ig)) ! spherical harmonics for G+q-vector call genylm(lmaxvr,tpgqc(:,ig),ylmgq(:,ig)) end do ! structure factors for G+q call gensfacgp(ngvec,vgqc,ngvec,sfacgq) ! find the shortest G+q-vector call findigp0(ngvec,gqc,igq0) sfacgq0(:)=sfacgq(igq0,:) ! compute the required spherical Bessel functions call genjlgpr(lnpsd,gqc,jlgqr) call genjlgq0r(gqc(igq0),jlgq0r) ! find the matching coefficients call match(ngk(1,ik),gkc(:,1,ik),tpgkc(:,:,1,ik),sfacgk(:,:,1,ik),apwalm) ! get the eigenvectors from file for non-reduced k-point call getevecfv(vkl(:,ik),vgkl(:,:,1,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! calculate the wavefunctions for all states call genwfsv(.false.,.false.,nstsv,idx,ngk(1,ik),igkig(:,1,ik),apwalm, & evecfv,evecsv,wfmt2,ngtot,wfir2) do ist3=1,nstsv if (abs(occsv(ist3,jk)).lt.epsocc) cycle ! calculate the complex overlap densities for all states (T. McQueen) !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ist1=1,nstsv call genzrho(.true.,.true.,wfmt2(:,:,:,:,ist3),wfir2(:,:,ist3), & wfmt1(:,:,:,:,ist1),wfir1(:,:,ist1),zrhomt(:,:,:,ist1),zrhoir(:,ist1)) end do !$OMP END DO !$OMP END PARALLEL !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(zvclmt,zvclir,zrho01,zrho02) & !$OMP PRIVATE(ist1,z1,z2,t1) !$OMP DO do ist2=1,nstsv allocate(zvclmt(lmmaxvr,nrcmtmax,natmtot),zvclir(ngtot)) ! calculate the Coulomb potential call genzvclmt(nrcmt,nrcmtinr,nrcmtmax,rcmt,nrcmtmax,zrhomt(:,:,:,ist2), & zvclmt) call zpotcoul(nrcmt,nrcmtinr,nrcmtmax,rcmt,igq0,gqc,jlgqr,ylmgq,sfacgq, & zrhoir(:,ist2),nrcmtmax,zvclmt,zvclir,zrho02) do ist1=1,ist2 z1=zfinp(.true.,zrhomt(:,:,:,ist1),zrhoir(:,ist1),zvclmt,zvclir) ! compute the density coefficient of the smallest G+q-vector call zrhogp(jlgq0r,ylmgq(:,igq0),sfacgq0,zrhomt(:,:,:,ist1), & zrhoir(:,ist1),zrho01) z2=cfq*wiq2(iq)*conjg(zrho01)*zrho02 t1=occsv(ist3,jk)/occmax !$OMP ATOMIC c(ist1,ist2)=c(ist1,ist2)-t1*(wkptnr*z1+z2) end do deallocate(zvclmt,zvclir) end do !$OMP END DO !$OMP END PARALLEL end do ! end loop over non-reduced k-point set end do ! scale the Coulomb matrix elements in the case of a hybrid functional if (hybrid) c(:,:)=hybridc*c(:,:) ! add the Coulomb matrix elements to Hamiltonian h(:,:)=h(:,:)+c(:,:) ! diagonalise the Hartree-Fock Hamiltonian (eigenvalues in global array) allocate(rwork(3*nstsv)) lwork=2*nstsv allocate(work(lwork)) call zheev('V','U',nstsv,h,nstsv,evalsv(:,ikp),work,lwork,rwork,info) deallocate(rwork,work) if (info.ne.0) then write(*,*) write(*,'("Error(eveqnhf): diagonalisation of the Hartree-Fock Hamiltonian & &failed")') write(*,'(" for k-point ",I8)') ikp write(*,'(" ZHEEV returned INFO = ",I8)') info write(*,*) stop end if ! apply unitary transformation to second-variational states evecsv(:,:)=evecsvp(:,:) call zgemm('N','N',nstsv,nstsv,nstsv,zone,evecsv,nstsv,h,nstsv,zzero,evecsvp, & nstsv) deallocate(vgqc,tpgqc,gqc,jlgqr,jlgq0r) deallocate(apwalm,evecfv,evecsv) deallocate(h,c,ylmgq,sfacgq) deallocate(wfmt1,wfmt2,wfir1,wfir2) deallocate(zrhomt,zrhoir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/hmlaloq.f900000644002504400250440000000005012337331324016154 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hmlaloq.f900000644002504400250440000000300712337331324016720 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hmlaloq(ias,ngp,ngpq,apwalm,apwalmq,ld,hq) use modmain implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) integer, intent(in) :: ld complex(8), intent(inout) :: hq(ld,*) ! local variables integer is,io,ilo integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3,i,j complex(8) zsum is=idxis(ias) do ilo=1,nlorb(is) l1=lorbl(ilo,is) do m1=-l1,l1 lm1=idxlm(l1,m1) lm3=0 do l3=0,lmaxmat do m3=-l3,l3 lm3=lm3+1 do io=1,apword(l3,is) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyry(lm1,lm2,lm3)*hloa(lm2,io,l3,ilo,ias) end do end if end do if (abs(dble(zsum))+abs(aimag(zsum)).gt.1.d-14) then j=ngp+idxlo(lm1,ilo,ias) do i=1,ngpq hq(i,j)=hq(i,j)+conjg(zsum*apwalmq(i,io,lm3,ias)) end do i=ngpq+idxlo(lm1,ilo,ias) do j=1,ngp hq(i,j)=hq(i,j)+zsum*apwalm(j,io,lm3,ias) end do end if end do end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/readstate.f900000644002504400250440000000005012337331323016472 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/readstate.f900000644002504400250440000002227412337331323017245 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: readstate ! !INTERFACE: subroutine readstate ! !USES: use modmain use moddftu ! !DESCRIPTION: ! Reads in the charge density and other relevant variables from the file ! {\tt STATE.OUT}. Checks for version and parameter compatibility. ! ! !REVISION HISTORY: ! Created May 2003 (JKD) !EOP !BOC implicit none ! local variables logical spinpol_ integer iostat integer is,ias,lmmax,lm,ir,jr integer idm0,idm1,idm,jdm,mapidm(3) integer i1,i2,i3,j1,j2,j3 integer version_(3) integer nspecies_,natoms_,lmmaxvr_ integer nrmt_(maxspecies),nrmtmax_ integer nrcmt_(maxspecies),nrcmtmax_ integer ngridg_(3),ngtot_,ngvec_ integer ndmag_,nspinor_,fsmtype_,ftmtype_ integer dftu_,lmmaxdm_ real(8) t1 ! allocatable arrays integer, allocatable :: mapir(:) real(8), allocatable :: spr_(:,:),rcmt_(:,:) real(8), allocatable :: rhomt_(:,:,:),rhoir_(:) real(8), allocatable :: vclmt_(:,:,:),vclir_(:) real(8), allocatable :: vxcmt_(:,:,:),vxcir_(:) real(8), allocatable :: vsmt_(:,:,:),vsir_(:) real(8), allocatable :: magmt_(:,:,:,:),magir_(:,:) real(8), allocatable :: bxcmt_(:,:,:,:),bxcir_(:,:) real(8), allocatable :: bsmt_(:,:,:,:),bsir_(:,:) real(8), allocatable :: bfsmcmt_(:,:) complex(8), allocatable :: vsig_(:) complex(8), allocatable :: vmatmt_(:,:,:,:,:),vmftm_(:,:,:,:,:) open(50,file='STATE'//trim(filext),action='READ',form='UNFORMATTED', & status='OLD',iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(readstate): error opening ",A)') 'STATE'//trim(filext) write(*,*) stop end if read(50) version_ if (version_(1).lt.2) then write(*,*) write(*,'("Error(readstate): unable to read STATE.OUT from versions earlier & &than 2.0.0")') write(*,*) stop end if if ((version(1).ne.version_(1)).or.(version(2).ne.version_(2)).or. & (version(3).ne.version_(3))) then write(*,*) write(*,'("Warning(readstate): different versions")') write(*,'(" current : ",I3.3,".",I3.3,".",I3.3)') version write(*,'(" STATE.OUT : ",I3.3,".",I3.3,".",I3.3)') version_ end if read(50) spinpol_ read(50) nspecies_ if (nspecies.ne.nspecies_) then write(*,*) write(*,'("Error(readstate): differing nspecies")') write(*,'(" current : ",I4)') nspecies write(*,'(" STATE.OUT : ",I4)') nspecies_ write(*,*) stop end if read(50) lmmaxvr_ read(50) nrmtmax_ read(50) nrcmtmax_ allocate(spr_(nrmtmax_,nspecies)) allocate(rcmt_(nrcmtmax_,nspecies)) do is=1,nspecies read(50) natoms_ if (natoms(is).ne.natoms_) then write(*,*) write(*,'("Error(readstate): differing natoms for species ",I4)') is write(*,'(" current : ",I4)') natoms(is) write(*,'(" STATE.OUT : ",I4)') natoms_ write(*,*) stop end if read(50) nrmt_(is) read(50) spr_(1:nrmt_(is),is) read(50) nrcmt_(is) read(50) rcmt_(1:nrcmt_(is),is) end do read(50) ngridg_ read(50) ngvec_ read(50) ndmag_ if ((spinpol_).and.(ndmag_.ne.1).and.(ndmag_.ne.3)) then write(*,*) write(*,'("Error(readstate): invalid ndmag in STATE.OUT : ",I8)') ndmag_ write(*,*) stop end if read(50) nspinor_ read(50) fsmtype_ if ((version_(1).gt.2).or.(version_(2).ge.3)) then read(50) ftmtype_ else ftmtype_=0 end if read(50) dftu_ read(50) lmmaxdm_ ngtot_=ngridg_(1)*ngridg_(2)*ngridg_(3) allocate(mapir(ngtot)) allocate(rhomt_(lmmaxvr_,nrmtmax_,natmtot)) allocate(rhoir_(ngtot_)) allocate(vclmt_(lmmaxvr_,nrmtmax_,natmtot)) allocate(vclir_(ngtot_)) allocate(vxcmt_(lmmaxvr_,nrmtmax_,natmtot)) allocate(vxcir_(ngtot_)) allocate(vsmt_(lmmaxvr_,nrmtmax_,natmtot)) allocate(vsir_(ngtot_)) ! read the muffin-tin density read(50) rhomt_,rhoir_ ! read the Coulomb potential (spin independent) read(50) vclmt_,vclir_ ! read the exchange-correlation potential read(50) vxcmt_,vxcir_ ! read the Kohn-Sham effective potential if ((version_(1).gt.2).or.(version_(2).ge.2)) then read(50) vsmt_,vsir_ else allocate(vsig_(ngvec_)) read(50) vsmt_,vsir_,vsig_ deallocate(vsig_) end if ! read the magnetisation, exchange-correlation and effective magnetic fields if (spinpol_) then allocate(magmt_(lmmaxvr_,nrmtmax_,natmtot,ndmag_)) allocate(magir_(ngtot_,ndmag_)) allocate(bxcmt_(lmmaxvr_,nrmtmax_,natmtot,ndmag_)) allocate(bxcir_(ngtot_,ndmag_)) allocate(bsmt_(lmmaxvr_,nrcmtmax_,natmtot,ndmag_)) allocate(bsir_(ngtot_,ndmag_)) read(50) magmt_,magir_ read(50) bxcmt_,bxcir_ read(50) bsmt_,bsir_ ! read fixed spin moment effective fields if (fsmtype_.ne.0) then allocate(bfsmcmt_(3,natmtot)) read(50) bfsmc read(50) bfsmcmt_ if (fsmtype.ne.0) bfsmcmt(:,:)=bfsmcmt_(:,:) deallocate(bfsmcmt_) end if end if ! read DFT+U potential matrix in each muffin-tin if (((dftu.ne.0).and.(dftu_.ne.0)).or. & ((ftmtype.ne.0).and.(ftmtype_.ne.0))) then allocate(vmatmt_(lmmaxdm_,nspinor_,lmmaxdm_,nspinor_,natmtot)) read(50) vmatmt_ lmmax=min(lmmaxdm,lmmaxdm_) vmatmt(:,:,:,:,:)=0.d0 if (nspinor.eq.nspinor_) then vmatmt(1:lmmax,:,1:lmmax,:,:)=vmatmt_(1:lmmax,:,1:lmmax,:,:) else if ((nspinor.eq.1).and.(nspinor_.eq.2)) then vmatmt(1:lmmax,1,1:lmmax,1,:)=0.5d0*(vmatmt_(1:lmmax,1,1:lmmax,1,:) & +vmatmt_(1:lmmax,2,1:lmmax,2,:)) else vmatmt(1:lmmax,1,1:lmmax,1,:)=vmatmt_(1:lmmax,1,1:lmmax,1,:) vmatmt(1:lmmax,2,1:lmmax,2,:)=vmatmt_(1:lmmax,1,1:lmmax,1,:) end if deallocate(vmatmt_) end if ! read fixed tensor moment potential matrix elements if ((ftmtype.ne.0).and.(ftmtype_.ne.0)) then allocate(vmftm_(lmmaxdm_,nspinor_,lmmaxdm_,nspinor_,natmtot)) read(50) vmftm_ lmmax=min(lmmaxdm,lmmaxdm_) vmftm_(:,:,:,:,:)=0.d0 if (nspinor.eq.nspinor_) then vmftm(1:lmmax,:,1:lmmax,:,:)=vmftm_(1:lmmax,:,1:lmmax,:,:) else if ((nspinor.eq.1).and.(nspinor_.eq.2)) then vmftm(1:lmmax,1,1:lmmax,1,:)=0.5d0*(vmftm_(1:lmmax,1,1:lmmax,1,:) & +vmftm_(1:lmmax,2,1:lmmax,2,:)) else vmftm(1:lmmax,1,1:lmmax,1,:)=vmftm_(1:lmmax,1,1:lmmax,1,:) vmftm(1:lmmax,2,1:lmmax,2,:)=vmftm_(1:lmmax,1,1:lmmax,1,:) end if deallocate(vmftm_) end if close(50) ! component map for spin-polarised case if (spinpol) then if (ndmag.eq.ndmag_) then idm0=1; idm1=ndmag do idm=1,ndmag mapidm(idm)=idm end do else idm0=ndmag; idm1=ndmag mapidm(ndmag)=ndmag_ end if end if !---------------------------! ! muffin-tin arrays ! !---------------------------! rhomt(:,:,:)=0.d0 vclmt(:,:,:)=0.d0 vxcmt(:,:,:)=0.d0 vsmt(:,:,:)=0.d0 if (spinpol) then magmt(:,:,:,:)=0.d0 bxcmt(:,:,:,:)=0.d0 bsmt(:,:,:,:)=0.d0 end if lmmax=min(lmmaxvr,lmmaxvr_) ! interpolate the old arrays on the new radial mesh !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is,lm,idm,jdm) !$OMP DO do ias=1,natmtot is=idxis(ias) do lm=1,lmmax call rfinterp(nrmt_(is),spr_(:,is),lmmaxvr_,rhomt_(lm,1,ias),nrmt(is), & spr(:,is),lmmaxvr,rhomt(lm,1,ias)) end do do lm=1,lmmax call rfinterp(nrmt_(is),spr_(:,is),lmmaxvr_,vclmt_(lm,1,ias),nrmt(is), & spr(:,is),lmmaxvr,vclmt(lm,1,ias)) end do do lm=1,lmmax call rfinterp(nrmt_(is),spr_(:,is),lmmaxvr_,vxcmt_(lm,1,ias),nrmt(is), & spr(:,is),lmmaxvr,vxcmt(lm,1,ias)) end do do lm=1,lmmax call rfinterp(nrmt_(is),spr_(:,is),lmmaxvr_,vsmt_(lm,1,ias),nrmt(is), & spr(:,is),lmmaxvr,vsmt(lm,1,ias)) end do if ((spinpol).and.(spinpol_)) then do idm=idm0,idm1 jdm=mapidm(idm) do lm=1,lmmax call rfinterp(nrmt_(is),spr_(:,is),lmmaxvr_,magmt_(lm,1,ias,jdm), & nrmt(is),spr(:,is),lmmaxvr,magmt(lm,1,ias,idm)) end do do lm=1,lmmax call rfinterp(nrmt_(is),spr_(:,is),lmmaxvr_,bxcmt_(lm,1,ias,jdm), & nrmt(is),spr(:,is),lmmaxvr,bxcmt(lm,1,ias,idm)) end do do lm=1,lmmax call rfinterp(nrcmt_(is),rcmt_(:,is),lmmaxvr_,bsmt_(lm,1,ias,jdm), & nrcmt(is),rcmt(:,is),lmmaxvr,bsmt(lm,1,ias,idm)) end do end do end if end do !$OMP END DO !$OMP END PARALLEL !-----------------------------! ! interstitial arrays ! !-----------------------------! rhoir(:)=0.d0 vclir(:)=0.d0 vxcir(:)=0.d0 vsir(:)=0.d0 if (spinpol) then magir(:,:)=0.d0 bxcir(:,:)=0.d0 bsir(:,:)=0.d0 end if ! map from new grid to old ir=0 do i3=0,ngridg(3)-1 t1=dble(i3*ngridg_(3))/dble(ngridg(3)) j3=modulo(nint(t1),ngridg_(3)) do i2=0,ngridg(2)-1 t1=dble(i2*ngridg_(2))/dble(ngridg(2)) j2=modulo(nint(t1),ngridg_(2)) do i1=0,ngridg(1)-1 t1=dble(i1*ngridg_(1))/dble(ngridg(1)) j1=modulo(nint(t1),ngridg_(1)) ir=ir+1 jr=j3*ngridg_(2)*ngridg_(1)+j2*ngridg_(1)+j1+1 mapir(ir)=jr end do end do end do do ir=1,ngtot jr=mapir(ir) rhoir(ir)=rhoir_(jr) vclir(ir)=vclir_(jr) vxcir(ir)=vxcir_(jr) vsir(ir)=vsir_(jr) end do if ((spinpol).and.(spinpol_)) then do idm=idm0,idm1 jdm=mapidm(idm) do ir=1,ngtot jr=mapir(ir) magir(ir,idm)=magir_(jr,jdm) end do do ir=1,ngtot jr=mapir(ir) bxcir(ir,idm)=bxcir_(jr,jdm) end do do ir=1,ngtot jr=mapir(ir) bsir(ir,idm)=bsir_(jr,jdm) end do end do end if deallocate(mapir,spr_,rcmt_,rhomt_,rhoir_,vclmt_,vclir_) deallocate(vxcmt_,vxcir_,vsmt_,vsir_) if (spinpol_) deallocate(magmt_,magir_,bxcmt_,bxcir_,bsmt_,bsir_) ! Fourier transform Kohn-Sham potential to G-space call genvsig return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writeefdu.f900000644002504400250440000000005012337331324016515 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writeefdu.f900000644002504400250440000000203212337331324017256 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writeefdu ! !INTERFACE: subroutine writeefdu ! !USES: use modmain use moddftu ! !DESCRIPTION: ! Writes to file the linearisation energies for all radial functions used to ! calculate the Slater integrals through a Yukawa potential. ! ! !REVISION HISTORY: ! Created July 2008 (Francesco Cricchio) !EOP !BOC implicit none ! local variables integer is,ia,ias,i,l,io open(50,file='ENGYFDU'//trim(filext),action='WRITE',form='FORMATTED') do i=1,ndftu is=idftu(1,i) l=idftu(2,i) io=1 do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is,trim(spsymb(is)),ia write(50,'(" Radial functions used for Slater parameters :")') write(50,'(" l = ",I2,", order = ",I2," : ",G18.10)') l,io,fdue(io,l,ias) end do end do close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/tddftlr.f900000644002504400250440000000005012337331324016162 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/tddftlr.f900000644002504400250440000001176412337331324016737 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine tddftlr use modmain use modtddft use modmpi implicit none ! local variables integer, parameter :: maxit=500 integer ik,iw,n integer igq0,ig,jg integer it,info real(8) v(3),t1 complex(8) vfxcp,z1 ! allocatable arrays integer, allocatable :: ipiv(:) real(8), allocatable :: vgqc(:,:),gqc(:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: vchi0(:,:,:),vfxc(:,:,:) complex(8), allocatable :: eps0(:,:,:),eps(:,:,:) complex(8), allocatable :: a(:,:),b(:,:),work(:) ! initialise global variables call init0 call init1 call init2 call init3 ! check q-vector is commensurate with k-point grid v(:)=dble(ngridk(:))*vecql(:) v(:)=abs(v(:)-nint(v(:))) if ((v(1).gt.epslat).or.(v(2).gt.epslat).or.(v(3).gt.epslat)) then write(*,*) write(*,'("Error(tddftlr): q-vector incommensurate with k-point grid")') write(*,'(" ngridk : ",3I6)') ngridk write(*,'(" vecql : ",3G18.10)') vecql write(*,*) stop end if ! read density and potentials from file call readstate ! read Fermi energy from a file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! get the eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! generate the G+q-vectors and related quantities allocate(vgqc(3,ngrf),gqc(ngrf)) allocate(ylmgq(lmmaxvr,ngrf),sfacgq(ngrf,natmtot)) call gengqrf(vecqc,igq0,vgqc,gqc,ylmgq,sfacgq) ! allocate local arrays allocate(vchi0(nwrf,ngrf,ngrf),vfxc(ngrf,ngrf,nwrf)) allocate(eps0(ngrf,ngrf,nwrf),eps(ngrf,ngrf,nwrf)) ! compute v^1/2 chi0 v^1/2 (the symmetric version of v chi0) vchi0(:,:,:)=0.d0 !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkptnr ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle !$OMP CRITICAL write(*,'("Info(tddftlr): ",I6," of ",I6," k-points")') ik,nkptnr !$OMP END CRITICAL ! compute v^1/2 chi0 v^1/2 call genvchi0(ik,optcomp(1,1),scissor,vecql,igq0,gqc,ylmgq,sfacgq,vchi0) end do !$OMP END DO !$OMP END PARALLEL ! add vchi0 from each process and redistribute if (np_mpi.gt.1) then n=nwrf*ngrf*ngrf call mpi_allreduce(mpi_in_place,vchi0,n,mpi_double_complex,mpi_sum, & mpi_comm_kpt,ierror) end if ! calculate symmetric epsilon = 1 - v^1/2 chi0 v^1/2 do ig=1,ngrf do jg=1,ngrf eps0(ig,jg,:)=-vchi0(:,ig,jg) eps(ig,jg,:)=vchi0(:,ig,jg) end do eps0(ig,ig,:)=eps0(ig,ig,:)+1.d0 eps(ig,ig,:)=eps(ig,ig,:)+1.d0 end do vfxcp=0.d0 it=0 10 continue ! compute vchi0 v^(-1/2) f_xc v^(-1/2) vchi0 call genvfxc(gqc,vchi0,eps0,eps,vfxc) allocate(ipiv(ngrf),a(ngrf,ngrf),b(ngrf,ngrf),work(ngrf)) ! begin loop over frequencies do iw=1,nwrf ! compute 1 - v^1/2 chi0 v^1/2 - v^(-1/2) f_xc v^(-1/2) vchi0 a(:,:)=eps0(:,:,iw)-vfxc(:,:,iw) ! invert this matrix call zgetrf(ngrf,ngrf,a,ngrf,ipiv,info) if (info.eq.0) call zgetri(ngrf,a,ngrf,ipiv,work,ngrf,info) if (info.ne.0) then write(*,*) write(*,'("Error(tddftlr): unable to invert epsilon")') write(*,'(" for frequency ",I6)') iw write(*,*) stop end if ! left multiply by v^1/2 chi0 v^1/2 b(:,:)=vchi0(iw,:,:) call zgemm('N','N',ngrf,ngrf,ngrf,zone,b,ngrf,a,ngrf,zzero,eps(:,:,iw),ngrf) ! compute epsilon^(-1) = 1 + v^1/2 chi v^1/2 do ig=1,ngrf eps(ig,ig,iw)=1.d0+eps(ig,ig,iw) end do end do deallocate(ipiv,a,b,work) ! bootstrap f_xc if (fxctype(1).eq.210) then it=it+1 if (it.gt.maxit) then write(*,*) write(*,'("Error(tddftlr): bootstrap kernel failed to converge")') write(*,*) stop end if if (mod(it,10).eq.0) then write(*,'("Info(tddftlr): done ",I4," bootstrap iterations")') it write(*,'(" head of matrix v.f_xc : ",2G18.10)') vfxc(1,1,1) end if ! check for convergence t1=abs(vfxcp)-abs(vfxc(1,1,1)) vfxcp=vfxc(1,1,1) if (abs(t1).gt.1.d-8) goto 10 end if ! write G = G' = 0 components to file if (mp_mpi) then open(50,file="EPSILON_TDDFT.OUT",action='WRITE',form='FORMATTED') open(51,file="EELS_TDDFT.OUT",action='WRITE',form='FORMATTED') do iw=1,nwrf z1=1.d0/eps(1,1,iw) write(50,'(2G18.10)') dble(wrf(iw)),dble(z1) write(51,'(2G18.10)') dble(wrf(iw)),-dble(eps(1,1,iw)) end do write(50,*) write(51,*) do iw=1,nwrf z1=1.d0/eps(1,1,iw) write(50,'(2G18.10)') dble(wrf(iw)),aimag(z1) write(51,'(2G18.10)') dble(wrf(iw)),-aimag(eps(1,1,iw)) end do close(50) close(51) write(*,*) write(*,'("Info(tddftlr):")') write(*,'(" Dielectric tensor written to EPSILON_TDDFT.OUT")') write(*,'(" Electron loss function written to EELS_TDDFT.OUT")') write(*,'(" for component i, j = ",I1)') optcomp(1,1) write(*,'(" q-vector (lattice coordinates) : ")') write(*,'(3G18.10)') vecql write(*,'(" q-vector length : ",G18.10)') gqc(1) end if deallocate(vgqc,gqc,ylmgq,sfacgq) deallocate(vchi0,vfxc,eps0,eps) return end subroutine elk-2.3.22/src/PaxHeaders.22528/gridsize.f900000644002504400250440000000005012337331323016336 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gridsize.f900000644002504400250440000000350212337331323017102 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: gridsize ! !INTERFACE: subroutine gridsize(avec,gmaxvr,ngridg,ngtot,intgv) ! !INPUT/OUTPUT PARAMETERS: ! avec : lattice vectors (in,real(3,3)) ! gmaxvr : G-vector cut-off (in,real) ! ngridg : G-vector grid sizes (out,integer(3)) ! ngtot : total number of G-vectors (out,integer) ! intgv : integer grid intervals for each direction (out,integer(2,3)) ! !DESCRIPTION: ! Finds the ${\bf G}$-vector grid which completely contains the vectors with ! $G0 \\ ! \sqrt{2}\,\Im\{Y_{lm}(\theta,\phi)\} & m<0 \\ ! \Re\{Y_{lm}(\theta,\phi)\} & m=0 ! \end{cases}, $$ ! where $Y_{lm}$ are the complex spherical harmonics. These functions are ! orthonormal and complete and may be used for expanding real-valued functions ! on the sphere. This routine is numerically stable and accurate to near ! machine precision for $l\le 50$. See routine {\tt genylm}. ! ! !REVISION HISTORY: ! Created March 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: lmax real(8), intent(in) :: tp(2) real(8), intent(out) :: rlm(*) ! local variables integer l,m,lm real(8), parameter :: sqtwo=1.4142135623730950488d0 ! automatic arrays complex(8) ylm((lmax+1)**2) if ((lmax.lt.0).or.(lmax.gt.50)) then write(*,*) write(*,'("Error(genrlm): lmax out of range : ",I8)') lmax write(*,*) stop end if ! generate complex spherical harmonics call genylm(lmax,tp,ylm) ! convert to real spherical harmonics lm=0 do l=0,lmax do m=-l,-1 lm=lm+1 rlm(lm)=sqtwo*aimag(ylm(lm)) end do lm=lm+1 rlm(lm)=dble(ylm(lm)) do m=1,l lm=lm+1 rlm(lm)=sqtwo*dble(ylm(lm)) end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/sfacinit.f900000644002504400250440000000005012337331324016317 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/sfacinit.f900000644002504400250440000000343612337331324017071 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 A. I. Baranov and F. Wagner. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine sfacinit use modmain use modpw implicit none ! local variables logical trhonorm0 integer ik,ist,is,ias ! allocatable arrays real(8), allocatable :: occcr0(:,:) ! initialise universal variables call init0 call init1 ! read density and potentials from file call readstate ! use existing density if wsfac is default if ((wsfac(1).le.-1.d6).or.(wsfac(2).ge.1.d6)) goto 10 ! make a copy of the core state occupancies allocate(occcr0(spnstmax,natmtot)) occcr0(:,:)=occcr(:,:) ! zero the core state occupancies for eigenvalues not in energy window do ias=1,natmtot is=idxis(ias) do ist=1,spnst(is) if (spcore(ist,is)) then if ((evalcr(ist,ias).lt.wsfac(1)).or.(evalcr(ist,ias).gt.wsfac(2))) then occcr(ist,ias)=0.d0 end if end if end do end do ! generate the core wavefunctions and densities call gencore ! restore the core state occupancies occcr(:,:)=occcr0(:,:) deallocate(occcr0) ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr do ik=1,nkpt ! get the eigenvalues and occupancies from file call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) ! zero occupancies for eigenvalues not in energy window do ist=1,nstsv if ((evalsv(ist,ik).lt.wsfac(1)).or.(evalsv(ist,ik).gt.wsfac(2))) then occsv(ist,ik)=0.d0 end if end do end do ! computed density should not be normalised trhonorm0=trhonorm trhonorm=.false. ! generate the density and magnetisation call rhomag trhonorm=trhonorm0 10 continue ! generate the H-vectors call genhvec return end subroutine elk-2.3.22/src/PaxHeaders.22528/rtozflm.f900000644002504400250440000000005012337331323016213 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rtozflm.f900000644002504400250440000000345012337331323016761 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rtozflm ! !INTERFACE: subroutine rtozflm(lmax,rflm,zflm) ! !INPUT/OUTPUT PARAMETERS: ! lmax : maximum angular momentum (in,integer) ! rflm : coefficients of real spherical harmonic expansion ! (in,real((lmax+1)**2))) ! zflm : coefficients of complex spherical harmonic expansion ! (out,complex((lmax+1)**2))) ! !DESCRIPTION: ! Converts a real function, $r_{lm}$, expanded in terms of real spherical ! harmonics into a complex spherical harmonic expansion, $z_{lm}$: ! $$ z_{lm}=\begin{cases} \frac{1}{\sqrt{2}}(r_{lm}+i(-1)^mr_{l-m}) & m>0 \\ ! \frac{1}{\sqrt{2}}((-1)^mr_{l-m}-ir_{lm}) & m<0 \\ ! r_{lm} & m=0 \end{cases}\;. $$ ! See routine {\tt genrlm}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: lmax real(8), intent(in) :: rflm(*) complex(8), intent(out) :: zflm(*) ! local variables integer l,m,lm1,lm2 ! real constant 1/sqrt(2) real(8), parameter :: c1=0.7071067811865475244d0 if (lmax.lt.0) then write(*,*) write(*,'("Error(rtozflm): lmax < 0 : ",I8)') lmax write(*,*) stop end if lm1=0 do l=0,lmax lm2=lm1+2*(l+1) do m=-l,-1 lm1=lm1+1 lm2=lm2-1 if (mod(m,2).ne.0) then zflm(lm1)=c1*cmplx(-rflm(lm2),-rflm(lm1),8) else zflm(lm1)=c1*cmplx(rflm(lm2),-rflm(lm1),8) end if end do lm1=lm1+1 lm2=lm2-1 zflm(lm1)=rflm(lm1) do m=1,l lm1=lm1+1 lm2=lm2-1 if (mod(m,2).ne.0) then zflm(lm1)=c1*cmplx(rflm(lm1),-rflm(lm2),8) else zflm(lm1)=c1*cmplx(rflm(lm1),rflm(lm2),8) end if end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/tm3pol.f900000644002504400250440000000005012337331324015735 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/tm3pol.f900000644002504400250440000000271412337331324016505 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine tm3pol(l,k,p,r,w2,tm3p) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! l : angular momentum (in,integer) ! k : k-index of tensor moment (in,integer) ! p : p-index of tensor moment (in,integer) ! r : r-index of tensor moment (in,integer) ! w2 : modulus square of k-p-r tensor moment (in,real) ! tm3p : polarisation (out,real) ! !DESCRIPTION: ! Calculate the polarisation of each 3-index tensor component of the density ! matrix, see {\it Phys. Rev. B} {\bf 80}, 035121 (2009). ! ! !REVISION HISTORY: ! Created April 2008 (F. Cricchio and L. Nordstrom) !EOP !BOC implicit none ! input variables integer, intent(in) :: l,k,p,r real(8), intent(in) :: w2 real(8), intent(out) :: tm3p ! local variables integer g real(8) nlk,t1 ! external functions real(8) wigner3j,factnm,factr external wigner3j,factnm,factr g=k+p+r if (g.eq.0) then t1=sqrt(w2) tm3p=t1*(dble(2*(2*l+1))-t1) else if (mod(g,2).eq.0) then t1=wigner3j(k,p,r,0,0,0) else t1=sqrt(factnm(g-2*p,1)*factnm(g-2*r,1)*factr(g-2*k,g+1)) t1=t1*factnm(g,2)/(factnm(g-2*k,2)*factnm(g-2*p,2)*factnm(g-2*r,2)) end if nlk=factnm(2*l,1)/sqrt(factnm(2*l-k,1)*factnm(2*l+k+1,1)) tm3p=dble((2*k+1)*(2*r+1)*(2*l+1))*((t1*nlk)**2)*w2 end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/zrhogp.f900000644002504400250440000000005012337331324016030 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/zrhogp.f900000644002504400250440000000363112337331324016577 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zrhogp(jlgpr,ylmgp,sfacgp,zrhomt,zrhoir,zrho0) use modmain implicit none ! arguments real(8), intent(in) :: jlgpr(0:lmaxvr,nrcmtmax,nspecies) complex(8), intent(in) :: ylmgp(lmmaxvr) complex(8), intent(in) :: sfacgp(natmtot) complex(8), intent(in) :: zrhomt(lmmaxvr,nrcmtmax,natmtot) complex(8), intent(in) :: zrhoir(ngtot) complex(8), intent(out) :: zrho0 ! local variables integer is,ia,ias integer nrc,nrci,ir,irc integer lmax,l,m,lm real(8) t1,t2 complex(8) zsum1,zsum2 ! automatic arrays real(8) fr1(nrcmtmax),fr2(nrcmtmax),gr(nrcmtmax) !-----------------------------------! ! interstitial contribution ! !-----------------------------------! ! (note that the phase exp(ip.r) is implicit) zrho0=0.d0 do ir=1,ngtot zrho0=zrho0+cfunir(ir)*zrhoir(ir) end do zrho0=zrho0/dble(ngtot) !---------------------------------! ! muffin-tin contribution ! !---------------------------------! ! (note that the phase exp(ip.r) is explicit) do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) do irc=1,nrc if (irc.le.nrci) then lmax=lmaxinr else lmax=lmaxvr end if zsum1=0.d0 lm=0 do l=0,lmax lm=lm+1 zsum2=zrhomt(lm,irc,ias)*ylmgp(lm) do m=-l+1,l lm=lm+1 zsum2=zsum2+zrhomt(lm,irc,ias)*ylmgp(lm) end do zsum1=zsum1+jlgpr(l,irc,is)*zilc(l)*zsum2 end do t1=rcmt(irc,is)**2 fr1(irc)=dble(zsum1)*t1 fr2(irc)=aimag(zsum1)*t1 end do call fderiv(-1,nrc,rcmt(:,is),fr1,gr) t1=gr(nrc) call fderiv(-1,nrc,rcmt(:,is),fr2,gr) t2=gr(nrc) zrho0=zrho0+(fourpi/omega)*conjg(sfacgp(ias))*cmplx(t1,t2,8) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/getevecfv.f900000644002504400250440000000005012337331323016474 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/getevecfv.f900000644002504400250440000001254012337331323017242 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: getevecfv ! !INTERFACE: subroutine getevecfv(vpl,vgpl,evecfv) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! vpl : p-point vector in lattice coordinates (in,real(3)) ! vgpl : G+p-vectors in lattice coordinates (out,real(3,ngkmax,nspnfv)) ! evecfv : first-variational eigenvectors (out,complex(nmatmax,nstfv,nspnfv)) ! !DESCRIPTION: ! Reads in a first-variational eigenvector from file. If the input $k$-point, ! ${\bf p}$, is not in the reduced set, then the eigenvector of the equivalent ! point is read in and the required rotation/translation operations applied. ! ! !REVISION HISTORY: ! Created Feburary 2007 (JKD) ! Fixed transformation error, October 2007 (JKD, Anton Kozhevnikov) ! Fixed l.o. rotation, June 2010 (A. Kozhevnikov) !EOP !BOC implicit none ! arguments real(8), intent(in) :: vpl(3),vgpl(3,ngkmax,nspnfv) complex(8), intent(out) :: evecfv(nmatmax,nstfv,nspnfv) ! local variables integer isym,lspl,ilspl integer jspn,ilo,l,lm,i,j integer ik,igp,igk,ig integer is,ia,ja,ias,jas integer recl,nmatmax_,nstfv_,nspnfv_ real(8) vkl_(3),v(3) real(8) si(3,3),t1 complex(8) z1 ! allocatable arrays complex(8), allocatable :: evecfv_(:,:) ! find the equivalent k-point number and crystal symmetry element call findkpt(vpl,isym,ik) ! find the record length inquire(iolength=recl) vkl_,nmatmax_,nstfv_,nspnfv_,evecfv !$OMP CRITICAL open(70,file=trim(scrpath)//'EVECFV'//trim(filext),action='READ', & form='UNFORMATTED',access='DIRECT',recl=recl) read(70,rec=ik) vkl_,nmatmax_,nstfv_,nspnfv_,evecfv close(70) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getevecfv): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" EVECFV.OUT : ",3G18.10)') vkl_ write(*,*) stop end if if (nmatmax.ne.nmatmax_) then write(*,*) write(*,'("Error(getevecfv): differing nmatmax for k-point ",I8)') ik write(*,'(" current : ",I8)') nmatmax write(*,'(" EVECFV.OUT : ",I8)') nmatmax_ write(*,*) stop end if if (nstfv.ne.nstfv_) then write(*,*) write(*,'("Error(getevecfv): differing nstfv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstfv write(*,'(" EVECFV.OUT : ",I8)') nstfv_ write(*,*) stop end if if (nspnfv.ne.nspnfv_) then write(*,*) write(*,'("Error(getevecfv): differing nspnfv for k-point ",I8)') ik write(*,'(" current : ",I8)') nspnfv write(*,'(" EVECFV.OUT : ",I8)') nspnfv_ write(*,*) stop end if ! if p = k then return t1=abs(vpl(1)-vkl(1,ik))+abs(vpl(2)-vkl(2,ik))+abs(vpl(3)-vkl(3,ik)) if (t1.lt.epslat) return ! allocate temporary eigenvector array allocate(evecfv_(nmatmax,nstfv)) ! index to spatial rotation in lattice point group lspl=lsplsymc(isym) ! the inverse of the spatial symmetry rotates k into p ilspl=isymlat(lspl) si(:,:)=dble(symlat(:,:,ilspl)) !-----------------------------------------------! ! translate and rotate APW coefficients ! !-----------------------------------------------! ! loop over the first-variational spins do jspn=1,nspnfv if (tvzsymc(isym)) then ! translation vector is zero do igk=1,ngk(jspn,ik) evecfv_(igk,:)=evecfv(igk,:,jspn) end do else ! non-zero translation vector gives a phase factor do igk=1,ngk(jspn,ik) ig=igkig(igk,jspn,ik) t1=-twopi*dot_product(dble(ivg(:,ig)),vtlsymc(:,isym)) z1=cmplx(cos(t1),sin(t1),8) evecfv_(igk,:)=z1*evecfv(igk,:,jspn) end do end if ! apply spatial rotation operation (passive transformation) i=1 do igk=1,ngk(jspn,ik) call r3mtv(si,vgkl(:,igk,jspn,ik),v) do igp=i,ngk(jspn,ik) t1=abs(v(1)-vgpl(1,igp,jspn)) & +abs(v(2)-vgpl(2,igp,jspn)) & +abs(v(3)-vgpl(3,igp,jspn)) if (t1.lt.epslat) then evecfv(igp,:,jspn)=evecfv_(igk,:) if (igp.eq.i) i=i+1 exit end if end do end do end do !---------------------------------------------------------! ! translate and rotate local-orbital coefficients ! !---------------------------------------------------------! if (nlotot.gt.0) then ! rotate k-point by inverse symmetry matrix call r3mtv(si,vkl(:,ik),v) ! loop over the first-variational spins do jspn=1,nspnfv ! make a copy of the local-orbital coefficients do i=ngk(jspn,ik)+1,nmat(jspn,ik) evecfv_(i,:)=evecfv(i,:,jspn) end do do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! equivalent atom for this symmetry ja=ieqatom(ia,is,isym) jas=idxas(ja,is) ! phase factor from translation t1=-twopi*dot_product(vkl(:,ik),atposl(:,ja,is)) z1=cmplx(cos(t1),sin(t1),8) t1=twopi*dot_product(v(:),atposl(:,ia,is)) z1=z1*cmplx(cos(t1),sin(t1),8) ! rotate local orbitals (active transformation) do ilo=1,nlorb(is) l=lorbl(ilo,is) lm=idxlm(l,-l) i=ngk(jspn,ik)+idxlo(lm,ilo,ias) j=ngk(jspn,ik)+idxlo(lm,ilo,jas) call rotzflm(symlatc(:,:,lspl),l,l,nstfv,nmatmax,evecfv_(j,1), & evecfv(i,1,jspn)) evecfv(i:i+2*l,:,jspn)=z1*evecfv(i:i+2*l,:,jspn) end do end do end do end do end if deallocate(evecfv_) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/atpstep.f900000644002504400250440000000005012337331323016176 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/atpstep.f900000644002504400250440000000355112337331323016746 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: atpstep ! !INTERFACE: subroutine atpstep ! !USES: use modmain use modmpi ! !DESCRIPTION: ! Makes a geometry optimisation step and updates the current atomic positions ! according to the force on each atom. If ${\bf r}_{ij}^m$ is the position and ! ${\bf F}_{ij}^m$ is the force acting on it for atom $j$ of species $i$ and ! after time step $m$, then the new position is calculated by ! $$ {\bf r}_{ij}^{m+1}={\bf r}_{ij}^m+\tau_{ij}^m\left({\bf F}_{ij}^m ! +{\bf F}_{ij}^{m-1}\right), $$ ! where $\tau_{ij}^m$ is a parameter governing the size of the displacement. ! If ${\bf F}_{ij}^m\cdot{\bf F}_{ij}^{m-1}>0$ then $\tau_{ij}^m$ is ! increased, otherwise it is decreased. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ias,n real(8) t1 do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! compute the dot-product between the current and previous total force t1=dot_product(forcetot(:,ias),forcetotp(:,ias)) ! if the force is in the same direction then increase step size parameter if (t1.gt.0.d0) then tauatp(ias)=tauatp(ias)+tau0atp else tauatp(ias)=tau0atp end if ! make atomic position step atposc(:,ia,is)=atposc(:,ia,is)+tauatp(ias)*(forcetot(:,ias) & +forcetotp(:,ias)) end do end do ! each MPI process should have identical atomic positions n=3*maxatoms*maxspecies call mpi_bcast(atposc,n,mpi_double_precision,0,mpi_comm_kpt,ierror) do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! compute the lattice coordinates of the atomic positions call r3mv(ainv,atposc(:,ia,is),atposl(:,ia,is)) end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/readdyn.f900000644002504400250440000000005012337331324016145 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/readdyn.f900000644002504400250440000000250712337331324016715 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readdyn(dynq) use modmain use modphonon implicit none ! arguments complex(8), intent(out) :: dynq(nbph,nbph,nqpt) ! local variables logical exist integer iq,is,js,ia,ja integer ip,jp,i,j real(8) a,b character(256) fext do iq=1,nqpt i=0 do is=1,nspecies do ia=1,natoms(is) do ip=1,3 i=i+1 call phfext(iq,is,ia,ip,fext) inquire(file='DYN'//trim(fext),exist=exist) if (.not.exist) then write(*,*) write(*,'("Error(readdyn): file not found :")') write(*,'(A)') ' DYN'//trim(fext) write(*,*) stop end if open(50,file='DYN'//trim(fext),action='READ',status='OLD', & form='FORMATTED') j=0 do js=1,nspecies do ja=1,natoms(js) do jp=1,3 j=j+1 read(50,*) a,b dynq(i,j,iq)=cmplx(a,b,8) end do end do end do close(50) end do ! end loops over atoms and species end do end do ! symmetrise the dynamical matrix call dynsym(vql(:,iq),dynq(:,:,iq)) ! end loop over q-vectors end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/ssfext.f900000644002504400250440000000005012337331323016032 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ssfext.f900000644002504400250440000000123512337331323016577 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine ssfext(iq,fext) use modmain implicit none ! arguments integer, intent(in) :: iq character(256), intent(out) :: fext ! local variables integer i,j,m(3),n(3) ! external functions integer gcd external gcd do i=1,3 if (ivq(i,iq).ne.0) then j=gcd(ivq(i,iq),ngridq(i)) m(i)=ivq(i,iq)/j n(i)=ngridq(i)/j else m(i)=0 n(i)=0 end if end do write(fext,'("_Q",2I2.2,"_",2I2.2,"_",2I2.2,".OUT")') m(1),n(1),m(2),n(2), & m(3),n(3) return end subroutine elk-2.3.22/src/PaxHeaders.22528/sphcrd.f900000644002504400250440000000005012337331323016001 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sphcrd.f900000644002504400250440000000226212337331323016547 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: sphcrd ! !INTERFACE: subroutine sphcrd(v,r,tp) ! !INPUT/OUTPUT PARAMETERS: ! v : input vector (in,real(3)) ! r : length of v (out,real) ! tp : (theta, phi) coordinates (out,real(2)) ! !DESCRIPTION: ! Returns the spherical coordinates $(r,\theta,\phi)$ of a vector ! $$ {\bf v}=(r\sin(\theta)\cos(\phi), r\sin(\theta)\sin(\phi), ! r\cos(\theta)). $$ ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: v(3) real(8), intent(out) :: r,tp(2) ! local variables real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: eps=1.d-14 real(8) t1 r=sqrt(v(1)**2+v(2)**2+v(3)**2) if (r.gt.eps) then t1=v(3)/r if (t1.ge.1.d0) then tp(1)=0.d0 else if (t1.le.-1.d0) then tp(1)=pi else tp(1)=acos(t1) end if if ((abs(v(1)).gt.eps).or.(abs(v(2)).gt.eps)) then tp(2)=atan2(v(2),v(1)) else tp(2)=0.d0 end if else tp(1)=0.d0 tp(2)=0.d0 end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/olpaa.f900000644002504400250440000000005012337331323015612 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/olpaa.f900000644002504400250440000000125112337331323016355 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine olpaa(ias,ngp,apwalm,ld,o) use modmain implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) integer, intent(in) :: ld complex(8), intent(inout) :: o(*) ! local variables integer is,l,m,lm,io is=idxis(ias) lm=0 do l=0,lmaxmat do m=-l,l lm=lm+1 do io=1,apword(l,is) call zheri(ngp,1.d0,apwalm(:,io,lm,ias),ld,o) end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/libxcifc.f900000644002504400250440000000005012337331324016302 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/libxcifc.f900000644002504400250440000003274212337331324017056 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module libxcifc use xc_f90_lib_m contains !BOP ! !ROUTINE: xcifc_libxc ! !INTERFACE: subroutine xcifc_libxc(xctype,n,c_tb09,rho,rhoup,rhodn,g2rho,g2up,g2dn,grho2, & gup2,gdn2,gupdn,tau,tauup,taudn,ex,ec,vx,vc,vxup,vxdn,vcup,vcdn,dxdg2,dxdgu2, & dxdgd2,dxdgud,dcdg2,dcdgu2,dcdgd2,dcdgud) ! !INPUT/OUTPUT PARAMETERS: ! xctype : type of exchange-correlation functional (in,integer(3)) ! n : number of density points (in,integer) ! c_tb09 : Tran-Blaha '09 constant c (in,real,optional) ! rho : spin-unpolarised charge density (in,real(n),optional) ! rhoup : spin-up charge density (in,real(n),optional) ! rhodn : spin-down charge density (in,real(n),optional) ! g2rho : grad^2 rho (in,real(n),optional) ! g2up : grad^2 rhoup (in,real(n),optional) ! g2dn : grad^2 rhodn (in,real(n),optional) ! grho2 : |grad rho|^2 (in,real(n),optional) ! gup2 : |grad rhoup|^2 (in,real(n),optional) ! gdn2 : |grad rhodn|^2 (in,real(n),optional) ! gupdn : (grad rhoup).(grad rhodn) (in,real(n),optional) ! tau : kinetic energy density (in,real(n),optional) ! tauup : spin-up kinetic energy density (in,real(n),optional) ! taudn : spin-down kinetic energy density (in,real(n),optional) ! ex : exchange energy density (out,real(n),optional) ! ec : correlation energy density (out,real(n),optional) ! vx : spin-unpolarised exchange potential (out,real(n),optional) ! vc : spin-unpolarised correlation potential (out,real(n),optional) ! vxup : spin-up exchange potential (out,real(n),optional) ! vxdn : spin-down exchange potential (out,real(n),optional) ! vcup : spin-up correlation potential (out,real(n),optional) ! vcdn : spin-down correlation potential (out,real(n),optional) ! dxdg2 : de_x/d(|grad rho|^2) (out,real(n),optional) ! dxdgu2 : de_x/d(|grad rhoup|^2) (out,real(n),optional) ! dxdgd2 : de_x/d(|grad rhodn|^2) (out,real(n),optional) ! dxdgud : de_x/d((grad rhoup).(grad rhodn)) (out,real(n),optional) ! dcdg2 : de_c/d(|grad rho|^2) (out,real(n),optional) ! dcdgu2 : de_c/d(|grad rhoup|^2) (out,real(n),optional) ! dcdgd2 : de_c/d(|grad rhodn|^2) (out,real(n),optional) ! dcdgud : de_c/d((grad rhoup).(grad rhodn)) (out,real(n),optional) ! !DESCRIPTION: ! Interface to the ETSF {\tt libxc} exchange-correlation functional library: ! \newline{\tt http://www.tddft.org/programs/octopus/wiki/index.php/Libxc}. ! The second and third integers in {\tt xctype} define the exchange and ! correlation functionals in {\tt libxc}, respectively. ! ! !REVISION HISTORY: ! Created April 2009 (Tyrel McQueen) ! Modified September 2009 (JKD and TMQ) ! Updated for the libxc 1.0 interface, July 2010 (JKD) !EOP !BOC implicit none ! mandatory arguments integer, intent(in) :: xctype(3),n ! optional arguments real(8), optional, intent(in) :: c_tb09 real(8), optional, intent(in) :: rho(n),rhoup(n),rhodn(n) real(8), optional, intent(in) :: g2rho(n),g2up(n),g2dn(n) real(8), optional, intent(in) :: grho2(n),gup2(n),gdn2(n),gupdn(n) real(8), optional, intent(in) :: tau(n),tauup(n),taudn(n) real(8), optional, intent(out) :: ex(n),ec(n),vx(n),vc(n) real(8), optional, intent(out) :: vxup(n),vxdn(n),vcup(n),vcdn(n) real(8), optional, intent(out) :: dxdg2(n),dxdgu2(n),dxdgd2(n),dxdgud(n) real(8), optional, intent(out) :: dcdg2(n),dcdgu2(n),dcdgd2(n),dcdgud(n) ! local variables integer nspin,xcf,id,k type(xc_f90_pointer_t) p,info ! allocatable arrays real(8), allocatable :: r(:,:),sigma(:,:),vrho(:,:),vsigma(:,:) real(8), allocatable :: lapl(:,:),t(:,:),vlapl(:,:),vtau(:,:) if (present(rho)) then nspin=XC_UNPOLARIZED else if (present(rhoup).and.present(rhodn)) then nspin=XC_POLARIZED else write(*,*) write(*,'("Error(xcifc_libxc): missing arguments")') write(*,*) stop end if if (xctype(2).ne.0) then if (xctype(2).eq.xctype(3)) then write(*,*) write(*,'("Error(xcifc_libxc): libxc exchange and correlation & &functionals")') write(*,'(" are the same : ",2I8)') xctype(2:3) write(*,*) stop end if end if ! loop over functional kinds (exchange or correlation) do k=2,3 id=xctype(k) if (id.gt.0) then xcf=xc_f90_family_from_id(id) ! initialise functional call xc_f90_func_init(p,info,id,nspin) select case(xcf) case(XC_FAMILY_LDA) !-------------------------! ! LDA functionals ! !-------------------------! if (k.eq.2) then ! exchange if (present(rho)) then call xc_f90_lda_exc_vxc(p,n,rho(1),ex(1),vx(1)) else allocate(r(2,n),vrho(2,n)) r(1,:)=rhoup(:); r(2,:)=rhodn(:) call xc_f90_lda_exc_vxc(p,n,r(1,1),ex(1),vrho(1,1)) vxup(:)=vrho(1,:); vxdn(:)=vrho(2,:) deallocate(r,vrho) end if else ! correlation if (present(rho)) then call xc_f90_lda_exc_vxc(p,n,rho(1),ec(1),vc(1)) else allocate(r(2,n),vrho(2,n)) r(1,:)=rhoup(:); r(2,:)=rhodn(:) call xc_f90_lda_exc_vxc(p,n,r(1,1),ec(1),vrho(1,1)) vcup(:)=vrho(1,:); vcdn=vrho(2,:) deallocate(r,vrho) end if end if case(XC_FAMILY_GGA,XC_FAMILY_HYB_GGA) !-------------------------! ! GGA functionals ! !-------------------------! if (k.eq.2) then ! exchange if (present(rho)) then call xc_f90_gga_exc_vxc(p,n,rho(1),grho2(1),ex(1),vx(1),dxdg2(1)) else allocate(r(2,n),sigma(3,n),vrho(2,n),vsigma(3,n)) r(1,:)=rhoup(:); r(2,:)=rhodn(:) sigma(1,:)=gup2(:); sigma(2,:)=gupdn(:); sigma(3,:)=gdn2(:) call xc_f90_gga_exc_vxc(p,n,r(1,1),sigma(1,1),ex(1),vrho(1,1), & vsigma(1,1)) vxup(:)=vrho(1,:); vxdn(:)=vrho(2,:) dxdgu2(:)=vsigma(1,:); dxdgud(:)=vsigma(2,:); dxdgd2(:)=vsigma(3,:) deallocate(r,sigma,vrho,vsigma) end if else ! correlation if (present(rho)) then call xc_f90_gga_exc_vxc(p,n,rho(1),grho2(1),ec(1),vc(1),dcdg2(1)) else allocate(r(2,n),sigma(3,n),vrho(2,n),vsigma(3,n)) r(1,:)=rhoup(:); r(2,:)=rhodn(:) sigma(1,:)=gup2(:); sigma(2,:)=gupdn(:); sigma(3,:)=gdn2(:) call xc_f90_gga_exc_vxc(p,n,r(1,1),sigma(1,1),ec(1),vrho(1,1), & vsigma(1,1)) vcup(:)=vrho(1,:); vcdn(:)=vrho(2,:) dcdgu2(:)=vsigma(1,:); dcdgud(:)=vsigma(2,:); dcdgd2(:)=vsigma(3,:) deallocate(r,sigma,vrho,vsigma) end if end if case(XC_FAMILY_MGGA) !------------------------------! ! meta-GGA functionals ! !------------------------------! ! set Tran-Blaha '09 constant if required if (id.eq.XC_MGGA_X_TB09) then if (present(c_tb09)) call xc_f90_mgga_x_tb09_set_par(p,c_tb09) end if if (k.eq.2) then ! exchange if (present(rho)) then allocate(vsigma(1,n),vlapl(1,n),vtau(1,n)) call xc_f90_mgga_vxc(p,n,rho(1),grho2(1),g2rho(1),tau(1),vx(1), & vsigma(1,1),vlapl(1,1),vtau(1,1)) deallocate(vsigma,vlapl,vtau) else allocate(r(2,n),sigma(3,n),lapl(2,n),t(2,n)) allocate(vrho(2,n),vsigma(3,n),vlapl(2,n),vtau(2,n)) r(1,:)=rhoup(:); r(2,:)=rhodn(:) sigma(1,:)=gup2(:); sigma(2,:)=gupdn(:); sigma(3,:)=gdn2(:) lapl(1,:)=g2up(:); lapl(2,:)=g2dn(:) t(1,:)=tauup(:); t(2,:)=taudn(:) call xc_f90_mgga_vxc(p,n,r(1,1),sigma(1,1),lapl(1,1),t(1,1), & vrho(1,1),vsigma(1,1),vlapl(1,1),vtau(1,1)) vxup(:)=vrho(1,:); vxdn(:)=vrho(2,:) deallocate(r,sigma,lapl,t) deallocate(vrho,vsigma,vlapl,vtau) end if else ! correlation if (present(rho)) then allocate(vsigma(1,n),vlapl(1,n),vtau(1,n)) call xc_f90_mgga_vxc(p,n,rho(1),grho2(1),g2rho(1),tau(1),vc(1), & vsigma(1,1),vlapl(1,1),vtau(1,1)) deallocate(vsigma,vlapl,vtau) else allocate(r(2,n),sigma(3,n),lapl(2,n),t(2,n)) allocate(vrho(2,n),vsigma(3,n),vlapl(2,n),vtau(2,n)) r(1,:)=rhoup(:); r(2,:)=rhodn(:) sigma(1,:)=gup2(:); sigma(2,:)=gupdn(:); sigma(3,:)=gdn2(:) lapl(1,:)=g2up(:); lapl(2,:)=g2dn(:) t(1,:)=tauup(:); t(2,:)=taudn(:) call xc_f90_mgga_vxc(p,n,r(1,1),sigma(1,1),lapl(1,1),t(1,1), & vrho(1,1),vsigma(1,1),vlapl(1,1),vtau(1,1)) vcup(:)=vrho(1,:); vcdn(:)=vrho(2,:) deallocate(r,sigma,lapl,t) deallocate(vrho,vsigma,vlapl,vtau) end if end if case default write(*,*) write(*,'("Error(xcifc_libxc): unsupported libxc functional family : ",& &I8)') xcf write(*,*) stop end select ! destroy functional call xc_f90_func_end(p) else ! case when id=0 if (k.eq.2) then if (present(ex)) ex(:)=0.d0 if (present(vx)) vx(:)=0.d0 if (present(vxup)) vxup(:)=0.d0 if (present(vxdn)) vxdn(:)=0.d0 if (present(dxdg2)) dxdg2(:)=0.d0 if (present(dxdgu2)) dxdgu2(:)=0.d0 if (present(dxdgd2)) dxdgd2(:)=0.d0 if (present(dxdgud)) dxdgud(:)=0.d0 else if (present(ec)) ec(:)=0.d0 if (present(vc)) vc(:)=0.d0 if (present(vcup)) vcup(:)=0.d0 if (present(vcdn)) vcdn(:)=0.d0 if (present(dcdg2)) dcdg2(:)=0.d0 if (present(dcdgu2)) dcdgu2(:)=0.d0 if (present(dcdgd2)) dcdgd2(:)=0.d0 if (present(dcdgud)) dcdgud(:)=0.d0 end if end if end do return end subroutine subroutine fxcifc_libxc(fxctype,n,rho,rhoup,rhodn,fxc,fxcuu,fxcud,fxcdd) implicit none ! mandatory arguments integer, intent(in) :: fxctype(3),n ! optional arguments real(8), optional, intent(in) :: rho(n),rhoup(n),rhodn(n) real(8), optional, intent(out) :: fxc(n),fxcuu(n),fxcud(n),fxcdd(n) ! local variables integer nspin,xcf,id,k type(xc_f90_pointer_t) p,info ! allocatable arrays real(8), allocatable :: r(:,:),f(:,:) if (present(rho)) then nspin=XC_UNPOLARIZED else if (present(rhoup).and.present(rhodn)) then nspin=XC_POLARIZED else write(*,*) write(*,'("Error(fxcifc_libxc): missing arguments")') write(*,*) stop end if ! zero the kernel if (present(fxc)) fxc(:)=0.d0 if (present(fxcuu)) fxcuu(:)=0.d0 if (present(fxcud)) fxcud(:)=0.d0 if (present(fxcdd)) fxcdd(:)=0.d0 ! loop over functional kinds (exchange or correlation) do k=2,3 id=fxctype(k) if (id.le.0) cycle xcf=xc_f90_family_from_id(id) ! initialise functional call xc_f90_func_init(p,info,id,nspin) select case(xcf) case(XC_FAMILY_LDA) !-------------------------! ! LDA functionals ! !-------------------------! if (present(rho)) then allocate(f(1,n)) call xc_f90_lda_fxc(p,n,rho(1),f(1,1)) fxc(:)=fxc(:)+f(1,:) deallocate(f) else allocate(r(2,n),f(3,n)) r(1,:)=rhoup(:); r(2,:)=rhodn(:) call xc_f90_lda_fxc(p,n,r(1,1),f(1,1)) fxcuu(:)=fxcuu(:)+f(1,:) fxcud(:)=fxcud(:)+f(2,:) fxcdd(:)=fxcdd(:)+f(3,:) deallocate(r,f) end if case default write(*,*) write(*,'("Error(fxcifc_libxc): unsupported libxc functional family : ",& &I8)') xcf write(*,*) stop end select end do return end subroutine subroutine xcdata_libxc(xctype,xcdescr,xcspin,xcgrad,hybrid,hybridc) implicit none ! arguments integer, intent(in) :: xctype(3) character(512), intent(out) :: xcdescr integer, intent(out) :: xcspin integer, intent(out) :: xcgrad logical, intent(inout) :: hybrid real(8), intent(inout) :: hybridc ! local variables integer j,k,id integer fmly,flg character(256) name type(xc_f90_pointer_t) p,info ! check version is compatible (2.x) call xc_f90_version(j,k) if (j.ne.2) then write(*,*) write(*,'("Error(xcdata_libxc): incompatible libxc version : ",I2.2,".",& &I3.3)') j,k write(*,*) stop end if ! unknown spin polarisation xcspin=-1 ! no gradients by default xcgrad=0 ! not hybrid by default hybrid=.false. do k=2,3 id=xctype(k) if (id.gt.0) then call xc_f90_func_init(p,info,id,XC_UNPOLARIZED) call xc_f90_info_name(info,name) fmly=xc_f90_family_from_id(id) if (fmly.eq.XC_FAMILY_HYB_GGA) then call xc_f90_hyb_exx_coef(p,hybridc) hybrid=.true. end if call xc_f90_func_end(p) ! hybrids should have only correlation part to avoid double-scaling with hybridc if ((fmly.eq.XC_FAMILY_HYB_GGA).and.(k.eq.2)) then write(*,*) write(*,'("Error(xcdata_libxc): set only correlation part of xctype for & &libxc hybrids")') write(*,*) stop end if ! functional family if ((fmly.ne.XC_FAMILY_LDA).and.(fmly.ne.XC_FAMILY_GGA).and. & (fmly.ne.XC_FAMILY_HYB_GGA).and.(fmly.ne.XC_FAMILY_MGGA)) then write(*,*) write(*,'("Error(xcdata_libxc): unsupported libxc family : ",I8)') fmly write(*,*) stop end if ! post-processed gradients required for GGA functionals if (fmly.eq.XC_FAMILY_GGA.or.fmly.eq.XC_FAMILY_HYB_GGA) xcgrad=2 ! kinetic energy density required for meta-GGA functionals if (fmly.eq.XC_FAMILY_MGGA) then ! potential-only functional flg=xc_f90_info_flags(info) if ((iand(flg,XC_FLAGS_HAVE_VXC).ne.0).and. & (iand(flg,XC_FLAGS_HAVE_EXC).eq.0)) then xcgrad=3 else write(*,*) write(*,'("Error(xcdata_libxc): unsupported libxc meta-GGA type")') write(*,*) stop end if end if else name='none' end if if (k.eq.2) then xcdescr='libxc; exchange: '//trim(name) else xcdescr=trim(xcdescr)//'; correlation: '//trim(name) end if end do xcdescr=trim(xcdescr)//' (see libxc for references)' return end subroutine !EOC end module elk-2.3.22/src/PaxHeaders.22528/genidxbse.f900000644002504400250440000000005012337331324016467 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genidxbse.f900000644002504400250440000000766112337331324017245 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genidxbse use modmain implicit none integer ik,jk,a,ntop integer ist,jst,i,j,k ! allocatable arrays integer, allocatable :: idx(:) ! check if the BSE extra valence or conduction states are in range do i=1,nvxbse ist=istxbse(i) if ((ist.lt.1).or.(ist.gt.nstsv)) then write(*,*) write(*,'("Error(genidxbse): extra valence state out of range : ",I8)') ist write(*,*) stop end if end do do j=1,ncxbse jst=jstxbse(j) if ((jst.lt.1).or.(jst.gt.nstsv)) then write(*,*) write(*,'("Error(genidxbse): extra conduction state out of range : ",I8)') & jst write(*,*) stop end if end do ! number of valence states for transitions nvbse=nvbse0+nvxbse ! number of conduction states for transitions ncbse=ncbse0+ncxbse if ((nvbse.le.0).or.(ncbse.le.0)) then write(*,*) write(*,'("Error(genidxbse): invalid number of valence or conduction & &transition states : ",2I8)') nvbse,ncbse write(*,*) stop end if ! total number of transitions nvcbse=nvbse*ncbse ! block size in BSE matrix nbbse=nvcbse*nkptnr ! BSE matrix size if (bsefull) then nmbse=2*nbbse else nmbse=nbbse end if allocate(idx(nstsv)) ! allocate global BSE index arrays if (allocated(istbse)) deallocate(istbse) allocate(istbse(nvbse,nkptnr)) if (allocated(jstbse)) deallocate(jstbse) allocate(jstbse(ncbse,nkptnr)) if (allocated(ijkbse)) deallocate(ijkbse) allocate(ijkbse(nvbse,ncbse,nkptnr)) a=0 ! loop over non-reduced k-points do ik=1,nkptnr ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! index for sorting the eigenvalues into ascending order call sortidx(nstsv,evalsv(:,jk),idx) ! find the topmost occupied band ntop=nstsv do ist=nstsv,1,-1 if (evalsv(idx(ist),jk).lt.efermi) then ntop=ist exit end if end do if ((ntop-nvbse0+1).lt.1) then write(*,*) write(*,'("Error(genidxbse): not enough valence states, reduce nvbse")') write(*,*) stop end if if ((ntop+ncbse0).gt.nstsv) then write(*,*) write(*,'("Error(genidxbse): not enough conduction states")') write(*,'(" reduce ncbse or increase nempty")') write(*,*) stop end if ! index from BSE valence states to second-variational state numbers do i=1,nvbse0 istbse(i,ik)=idx(ntop-nvbse0+i) end do ! index from BSE conduction states to second-variational state numbers do j=1,ncbse0 jstbse(j,ik)=idx(ntop+j) end do ! add extra states to the list do i=1,nvxbse ist=istxbse(i) if (evalsv(ist,jk).gt.efermi) then write(*,*) write(*,'("Error(genidxbse): extra valence state above Fermi energy : ",& &I6)') ist write(*,'(" for k-point ",I8)') jk write(*,*) stop end if do k=1,nvbse0+i-1 if (ist.eq.istbse(k,ik)) then write(*,*) write(*,'("Error(genidxbse): redundant extra valence state : ",I6)') ist write(*,'(" for k-point ",I8)') jk write(*,*) stop end if end do istbse(nvbse0+i,ik)=ist end do do j=1,ncxbse jst=jstxbse(j) if (evalsv(jst,jk).lt.efermi) then write(*,*) write(*,'("Error(genidxbse): extra conduction state below Fermi & &energy : ",I6)') jst write(*,'(" for k-point ",I8)') jk write(*,*) stop end if do k=1,ncbse0+j-1 if (jst.eq.jstbse(k,ik)) then write(*,*) write(*,'("Error(genidxbse): redundant extra conduction state : ",& &I6)') jst write(*,'(" for k-point ",I8)') jk write(*,*) stop end if end do jstbse(ncbse0+j,ik)=jst end do ! index from BSE valence-conduction pair and k-point to location in BSE matrix do i=1,nvbse do j=1,ncbse a=a+1 ijkbse(i,j,ik)=a end do end do ! end loop over non-reduced k-points end do deallocate(idx) return end subroutine elk-2.3.22/src/PaxHeaders.22528/protex0000644002504400250440000000005012337331324015443 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/protex0000755002504400250440000011070212337331324016213 0ustar00dewhurstdewhurst00000000000000#!/usr/bin/perl # # $Id: protex,v 1.15 2004/06/03 23:49:46 eschwab Exp $ # #BOP # # !ROUTINE: ProTeX v. 2.00 - Translates DAO Prologues to LaTeX # # !INTERFACE: # protex [-hbACFS] ] [+-nlsxf] [src_file(s)] # # !DESCRIPTION: # Perl filter to produce a \LaTeX compatible document # from a DAO Fortran source code with standard Pro\TeX # prologues. If source files are not specified it # reads from stdin; output is always to stdout. # # \noindent # {\bf Command Line Switches:} \vspace{0.2cm} # # \begin{center} # \begin{tabular}{|c|l|} \hline \hline # -h & Help mode: list command line options \\ \hline # -b & Bare mode, meaning no preamble, etc. \\ \hline # -i & internal mode: omit prologues marked !BOPI \\ \hline # +/-n & New Page for each subsection (wastes paper) \\ \hline # +/-l & Listing mode, default is prologues only \\ \hline # +/-s & Shut-up mode, i.e., ignore any code from BOC to EOC \\ \hline # +/-x & No LaTeX mode, i.e., put !DESCRIPTION: in verbatim mode \\ \hline # +/-f & No source file info \\ \hline # -A & Ada code \\ \hline # -C & C++ code \\ \hline # -F & F90 code (default) \\ \hline # -S & Shell script \\ \hline \hline # \end{tabular} # \end{center} # # The options can appear in any order. The options, -h and -b, affect # the input from all files listed on command-line input. Each of the # remaining options effects only the input from the files listed after # the option and prior to any overriding option. The plus sign # turns off the option. For example, the command-line input, # \bv # protex -bnS File1 -F File2.f +n File3.f # \ev # will cause the option, {\tt -n} to affect the input from the files, # {\tt File} and {\tt File2.f}, but not from {\tt File3.f}. The # {\tt -S} option is implemented for {\tt File1} but is overridden by # the {\tt -F} for files {\tt File2.f} and {\tt File3.f}. # # # !SEE ALSO: # For a more detailed description of ProTeX functionality, # DAO Prologue and other conventions, consult: # # Sawyer, W., and A. da Silva, 1997: ProTeX: A Sample # Fortran 90 Source Code Documentation System. # DAO Office Note 97-11 # # # !REVISION HISTORY: # # 20Dec1995 da Silva First experimental version # 10Nov1996 da Silva First internal release (v1.01) # 28Jun1997 da Silva Modified so that !DESCRIPTION can appear after # !INTERFACE, and !INPUT PARAMETERS etc. changed to italics. # 02Jul1997 Sawyer Added shut-up mode # 20Oct1997 Sawyer Added support for shell scripts # 11Mar1998 Sawyer Added: file name, date in header, C, script support # 05Aug1998 Sawyer Fixed LPChang-bug-support-for-files-with-underscores # 10Oct1998 da Silva Introduced -f option for removing source file info # from subsection, etc. Added help (WS). # 06Dec1999 C. Redder Added LaTeX command "\label{sec:prologues}" just # after the beginning of the proglogue section. # 13Dec1999 C. Redder Increased flexbility in command-line # interface. The options can appear in any # order which will allow the user to implement # options for select files. # 01Feb1999 C. Redder Added \usepackage commands to preamble of latex # document to include the packages amsmath, epsfig # and hangcaption. # 10May2000 C. Redder Revised LaTeX command "\label{sec:prologues}" # to "\label{app:ProLogues}" # 10/10/2002 da Silva Introduced ARGUMENTS keyword, touch ups. # # 15Jan2003 R. Staufer Modified table of contents to print only section headers - no descriptions # # 25Feb2003 R. Staufer Added BOPI/EOPI and -i (internal) switch to provide the option of omitting prologue information from output files. # #EOP #---------------------------------------------------------------------------- # Keep this if you don't know what it does... # ------------------------------------------- $[ = 1; # set array base to 1 $, = ' '; # set output field separator $\ = "\n"; # set output record separator # Set valid options lists # ----------------------- $GlobOptions = 'hb'; # Global options (i.e for all files) $LangOptions = 'ACFS'; # Options for setting programming languages $SwOptions = 'flinsx'; # Options that can change for each input # file $RegOptions = "$GlobOptions$LangOptions"; # Scan for global options until first first # file is processed. # Scan for global options # ----------------------- $NFiles = 0; Arg: foreach $arg (@ARGV) { $option = &CheckOpts ( $arg, $RegOptions, $SwOptions ) + 1; if ( $option ) { $rc = &GetOpts ( $arg, $GlobOptions ); next Arg; } else { $NFiles++; }# end if }# end foreach # If all input arguments are options, then assume the # filename, "-", for the standard input # -------------------------------------------------- if ( $NFiles == 0 ) { push (@ARGV, "-"); } # Implement help option # --------------------- if ( $opt_h ) { &print_help(); exit(); }#end if # Optional Prologue Keywords # -------------------------- @keys = ( "!INTERFACE:", "!USES:", "!PUBLIC TYPES:", "!PRIVATE TYPES:", "!PUBLIC MEMBER FUNCTIONS:", "!PRIVATE MEMBER FUNCTIONS:", "!PUBLIC DATA MEMBERS:", "!PARAMETERS:", "!ARGUMENTS:", "!DEFINED PARAMETERS:", "!INPUT PARAMETERS:", "!INPUT/OUTPUT PARAMETERS:", "!OUTPUT PARAMETERS:", "!RETURN VALUE:", "!REVISION HISTORY:", "!BUGS:", "!SEE ALSO:", "!SYSTEM ROUTINES:", "!FILES USED:", "!REMARKS:", "!TO DO:", "!CALLING SEQUENCE:", "!AUTHOR:", "!CALLED FROM:", "!LOCAL VARIABLES:" ); # Initialize these for clarity # ---------------------------- $intro = 0; # doing introduction? $prologue = 0; # doing prologue? $first = 1; # first prologue? $source = 0; # source code mode? $verb = 0; # verbatim mode? $tpage = 0; # title page? $begdoc = 0; # has \begin{document} been written? # Initial LaTeX stuff # ------------------- &print_notice(); &print_preamble(); # \documentclass, text dimensions, etc. &print_macros(); # short-hand LaTeX macros # Main loop -- for each command-line argument # ------------------------------------------- ARG: foreach $arg (@ARGV) { # Scan for non-global command-line options # ---------------------------------------- $option = &CheckOpts ( $arg, $RegOptions, $SwOptions, "quiet" ) + 1; if ( $option ) { &GetOpts ( $arg, $SwOptions ); &SetOpt ( $arg, $LangOptions ); next ARG; }# end if # Determine the type of code, set corresponding search strings # ------------------------------------------------------------ # if ( $opt_F ) { # FORTRAN $comment_string = '!'; # ------- $boi_string = '!BOI'; $eoi_string = '!EOI'; $bop_string = '!BOP'; $eop_string = '!EOP'; $bopi_string = '!BOPI'; $eopi_string = '!EOPI'; $boc_string = '!BOC'; $eoc_string = '!EOC'; $boe_string = '!BOE'; $eoe_string = '!EOE'; #}# end if if ( $opt_A ) { # ADA $comment_string = '--'; # --- $boi_string = '--BOI'; $eoi_string = '--EOI'; $bop_string = '--BOP'; $eop_string = '--EOP'; $bopi_string = '--BOPI'; $eopi_string = '--EOPI'; $boc_string = '--BOC'; $eoc_string = '--EOC'; $boe_string = '--BOE'; $eoe_string = '--EOE'; }# end if if ( $opt_C ) { $comment_string = '//'; # C $boi_string = '//BOI'; # - $eoi_string = '//EOI'; $bop_string = '//BOP'; $eop_string = '//EOP'; $bopi_string = '//BOPI'; $eopi_string = '//EOPI'; $boc_string = '//BOC'; $eoc_string = '//EOC'; $boe_string = '//BOE'; $eoe_string = '//EOE'; }# end if if ( $opt_S ) { # Script $comment_string = '#'; # ------ $boi_string = '#BOI'; $eoi_string = '#EOI'; $bop_string = '#BOP'; $eop_string = '#EOP'; $bopi_string = '#BOPI'; $eopi_string = '#EOPI'; $boc_string = '#BOC'; $eoc_string = '#EOC'; $boe_string = '#BOE'; $eoe_string = '#EOE'; }# end if # Set file name parameters # ------------------------ $InputFile = $arg; @all_path_components = split( /\//, $InputFile ); $FileBaseName = pop ( @all_path_components ); $FileBaseName =~ s/_/\\_/g; if ( $InputFile eq "-" ) {$FileBaseName = "Standard Input";} # Set date # -------- $Date = `date`; # Open current file # ----------------- open ( InputFile, "$InputFile" ) or print STDERR "Unable to open $InputFile: $!"; # Print page header # ----------------- printf "\n\\markboth{Left}{Source File: %s, Date: %s}\n\n", $FileBaseName, $Date; LINE: # Inner loop --- for processing each line of the input file # --------------------------------------------------------- while ( ) { chop; # strip record separator # !PARAMETERS: really mean !ARGUMENTS: # ------------------------------------ # s/!PARAMETERS:/!ARGUMENTS:/g; @Fld = split(' ', $_, 9999); # Straight quote # -------------- if ($Fld[1] eq '!QUOTE:') { for ($i = 2; $i <= $#Fld; $i++) { printf '%s ', $Fld[$i]; }# end for print " "; next LINE; }# end if # Handle optional Title Page and Introduction # ------------------------------------------- if ($Fld[1] eq $boi_string) { print ' '; $intro = 1; next LINE; }# end if if ($Fld[2] eq '!TITLE:') { if ( $intro ) { shift @Fld; shift @Fld; @title = @Fld; $tpage = 1; next LINE; }# end if }# end if if ($Fld[2] eq '!AUTHORS:') { if ( $intro ) { shift @Fld; shift @Fld; @author = @Fld; $tpage = 1; next LINE; }# end if }# end if if ($Fld[2] eq '!AFFILIATION:') { if ( $intro ) { shift @Fld; shift @Fld; @affiliation = @Fld; $tpage = 1; next LINE; }# end if }# end if if ($Fld[2] eq '!DATE:') { if ( $intro ) { shift @Fld; shift @Fld; @date = @Fld; $tpage = 1; next LINE; }# end if }# end if if ($Fld[2] eq '!INTRODUCTION:') { if ( $intro ) { &do_beg(); print ' '; print '%..............................................'; shift @Fld; shift @Fld; print "\\section{@Fld}"; next LINE; }# end if }# end if # End of introduction # ------------------- if ($Fld[1] eq $eoi_string) { print ' '; print '%/////////////////////////////////////////////////////////////'; print "\\newpage"; $intro = 0; next LINE; }# end if # Beginning of prologue # --------------------- if ($Fld[1] eq $bop_string) { if ( $source ) { &do_eoc(); } print ' '; print '%/////////////////////////////////////////////////////////////'; &do_beg(); if ($first == 0) { ### print "\\newpage"; print " "; print "\\mbox{}\\hrulefill\\ "; print " ";} else { unless($opt_b){print "\\section{Routine/Function Prologues} \\label{app:ProLogues}";} }# end if $first = 0; $prologue = 1; $verb = 0; $source = 0; &set_missing(); # no required keyword yet next LINE; }# end if # Beginning of internal prologue # ------------------------------ if ($Fld[1] eq $bopi_string) { if ($opt_i) {$prologue = 0;} else { if ($source) { &do_eoc(); } print ' '; print '%/////////////////////////////////////////////////////////////'; &do_beg(); if ($first ==0) { ### print "\\newpage"; print " "; print "\\mbox{}\\hrulefill\\"; print " ";} else { unless($opt_b){print "\\section{Routine/Function Prologues} \\label{app:ProLogues}";} }# endif $first = 0; $prologue = 1; $verb = 0; $source = 0; &set_missing(); # no required keyword yet next LINE; }# endelse }# endif # A new subroutine/function # ------------------------- if ($Fld[2] eq '!ROUTINE:' ) { if ($prologue) { shift @Fld; shift @Fld; $_ = join(' ', @Fld); $name_is = $_; s/_/\\_/g; # Replace "_" with "\_" if ( $opt_n && $not_first ) { printf "\\newpage\n"; } unless ($opt_f) {printf "\\subsection{%s (Source File: %s)}\n\n", $_, $FileBaseName;} else {printf "\\subsection{%s }\n\n", $_;} $have_name = 1; $not_first = 1; next LINE; }# end if }# end if # A new Module # ------------ if ($Fld[2] eq '!MODULE:' ) { if ($prologue) { shift @Fld; shift @Fld; $_ = join(' ', @Fld); $name_is = $_; s/_/\\_/g; # Replace "_" with "\_" if ( $opt_n && $not_first ) { printf "\\newpage\n"; } unless($opt_f) {printf "\\subsection{Fortran: Module Interface %s (Source File: %s)}\n\n", $_, $FileBaseName;} else {printf "\\subsection{Fortran: Module Interface %s }\n\n", $_;} $have_name = 1; $have_intf = 1; # fake it, it does not need one. $not_first = 1; next LINE; }# end if }# end if # A new include file # ------------------ if ($Fld[2] eq '!INCLUDE:' ) { if ($prologue) { shift @Fld; shift @Fld; $_ = join(' ', @Fld); $name_is = $_; s/_/\\_/g; # Replace "_" with "\_" if ( $opt_n && $not_first ) { printf "\\newpage\n"; } unless($opt_f) {printf "\\subsection{Include File %s (Source File: %s)}\n\n", $_, $FileBaseName;} else {printf "\\subsection{Include File %s }\n\n", $_;} $have_name = 1; $have_intf = 1; # fake it, it does not need one. $not_first = 1; next LINE; }# end if }# end if # A new INTERNAL subroutine/function # ---------------------------------- if ($Fld[2] eq '!IROUTINE:') { # Internal routine if ($prologue) { shift @Fld; shift @Fld; $_ = join(' ', @Fld); $name_is = $_; s/_/\\_/g; # Replace "_" with "\_" @words = split " ", $_; printf "\\subsection [$words[1]] {$_}\n\n"; $have_name = 1; next LINE; }# end if }# end if # A new CLASS # ------------ if ($Fld[2] eq '!CLASS:' ) { if ($prologue) { shift @Fld; shift @Fld; $_ = join(' ', @Fld); $name_is = $_; s/_/\\_/g; # Replace "_" with "\_" if ( $opt_n && $not_first ) { printf "\\newpage\n"; } unless($opt_f) {printf "\\subsection{C++: Class Interface %s (Source File: %s)}\n\n", $_, $FileBaseName;} else {printf "\\subsection{C++: Class Interface %s }\n\n", $_;} $have_name = 1; $have_intf = 1; # fake it, it does not need one. $not_first = 1; next LINE; }# end if }# end if # A new Method # ------------------------- if ($Fld[2] eq '!METHOD:' ) { if ($prologue) { shift @Fld; shift @Fld; $_ = join(' ', @Fld); $name_is = $_; s/_/\\_/g; # Replace "_" with "\_" if ( $opt_n && $not_first ) { printf "\\newpage\n"; } unless ($opt_f) {printf "\\subsection{%s (Source File: %s)}\n\n", $_, $FileBaseName;} else {printf "\\subsection{%s }\n\n", $_;} $have_name = 1; $not_first = 1; next LINE; }# end if }# end if # A new function # ------------------------- if ($Fld[2] eq '!FUNCTION:' ) { if ($prologue) { shift @Fld; shift @Fld; $_ = join(' ', @Fld); $name_is = $_; s/_/\\_/g; # Replace "_" with "\_" if ( $opt_n && $not_first ) { printf "\\newpage\n"; } unless ($opt_f) {printf "\\subsection{%s (Source File: %s)}\n\n", $_, $FileBaseName;} else {printf "\\subsection{%s }\n\n", $_;} $have_name = 1; $not_first = 1; next LINE; }# end if }# end if # Description: what follows will be regular LaTeX (no verbatim) # ------------------------------------------------------------- if (/!DESCRIPTION:/) { if ($prologue) { if ($verb) { printf "\\end{verbatim}"; printf "\n{\\sf DESCRIPTION:\\\\ }\n\n"; $verb = 0; } else { # probably never occurs }# end if if ($opt_x) { printf "\\begin{verbatim} "; $verb = 1; $first_verb = 1; } else { for ($i = 3; $i <= $#Fld; $i++) { printf '%s ', $Fld[$i]; }# end for }# end if ### print " "; $have_desc = 1; next LINE; }# end if }# end if # Handle optional keywords (these will appear as verbatim) # -------------------------------------------------------- if ($prologue) { KEY: foreach $key ( @keys ) { if ( /$key/ ) { if ($verb) { printf "\\end{verbatim}"; $verb = 0; } else { printf "\n\\bigskip"; }# end if $k = sprintf('%s', $key); $ln = length($k); ###printf "\\subsection*{%s}\n", substr($k, 2, $ln - 1); ###printf "{\\Large \\em %s}\n", ucfirst lc substr($k, 2, $ln - 1); $_ = $key; if( /USES/ || /INPUT/ || /OUTPUT/ || /PARAMETERS/ || /VALUE/ || /ARGUMENTS/ ) { printf "{\\em %s}\n", substr($k, 2, $ln - 1); } # italics else { printf "{\\sf %s}\n", substr($k, 2, $ln - 1); # san serif }# end if printf "\\begin{verbatim} "; $verb = 1; $first_verb = 1; if ( $key eq "!INTERFACE:" ) { $have_intf = 1; } if ( $key eq "!CALLING SEQUENCE:" ) { $have_intf = 1; } if ( $key eq "!REVISION HISTORY:" ) { $have_hist = 1; } next LINE; }# end if }# end foreach }# end if # End of prologue # --------------- if ($Fld[1] eq $eop_string) { if ($verb) { print "\\end{verbatim}"; $verb = 0; }# end if $prologue = 0; # &check_if_all_there(); # check if all required keywords are there. if ( $opt_l ) { $Fld[1] = $boc_string;} else { next LINE; } }# end if unless ( $opt_s ) { # End of Internal Prologue # ------------------------ if ($Fld[1] eq $eopi_string) { if ($verb) { print "\\end{verbatim}"; $verb = 0; }# endif $prologue = 0; # &check_if_all_there(); # check if all required keywords are there. if ($opt_l) { $Fld[1] = $boc_string;} else { next LINE; } }# endif # # Beginning of source code section # -------------------------------- if ($Fld[1] eq $boc_string) { print ' '; print '%/////////////////////////////////////////////////////////////'; $first = 0; $prologue = 0; $source = 1; ### printf "\\subsection*{CONTENTS:}\n\n", $Fld[3]; ###printf "{\\sf CONTENTS:}"; printf "\n \\begin{verbatim}\n"; $verb = 1; next LINE; }# end if # End of source code # ------------------ if ($Fld[1] eq $eoc_string) { &do_eoc(); $prologue = 0; next LINE; }# end if # Beginning of example prologue # ----------------------------- if ($Fld[1] eq $boe_string) { if ( $source ) { &do_eoc(); } print ' '; print '%/////////////////////////////////////////////////////////////'; $first = 0; $prologue = 1; $verb = 0; $source = 0; next LINE; }# end if # End of example prologue # ----------------------- if ($Fld[1] eq $eoe_string) { if ($verb) { print "\\end{verbatim}"; $verb = 0; }# end if $prologue = 0; if ( $opt_l ) { $Fld[1] = $boc_string;} else { next LINE; } }# end if }# end unless # Prologue or Introduction, print regular line (except for !) # ----------------------------------------------------------- if ($prologue||$intro) { if ( $verb && $#Fld == 1 && ( $Fld[1] eq $comment_string ) ) { next LINE; # to eliminate excessive blanks }# end if if ( $Fld[2] eq "\\ev" ) { # special handling $_ = $comment_string . " \\end{verbatim}"; }# end if s/^$comment_string/ /; # replace comment string with blank # $line = sprintf('%s', $_); # not necessary -- comment str is absent # $ln = length($line); # not necessary -- comment str is absent unless ( $first_verb ) { printf "\n "; } printf '%s', $_; # printf '%s', substr($line, 1, $ln - 1); # comment str is absent $first_verb = 0; next LINE; }# end if # Source code: print the full line # -------------------------------- if ($source) { print $_; next LINE; }# end if }# end inner loop for processing each line of the input file # --------------------------------------------------------- }# end main loop for each command-line argument # -------------------------------------------- print $_; if ( $source ) { &do_eoc(); } print '%...............................................................'; # see comment above where these are originally set. #print "\\setlength{\\parskip}{\\oldparskip}"; #print "\\setlength{\\parindent}{\\oldparindent}"; #print "\\setlength{\\baselineskip}{\\oldbaselineskip}"; unless ( $opt_b ) { print "\\end{document}"; }#end unless #---------------------------------------------------------------------- sub CheckOpts # Checks options against a given list. Outputs error message # for any invalid option. # # Usage: # $rc = &CheckOpts ( options, valid_reg_options, # valid_sw_options, # quiet_mode ) # # character: options - options to be checked. (e.g. -df+x) The # list must begin with a positive or # negative sign. If no sign appears at the # beginning or by itself, then the argument # is not recognized as a list of options. # character: valid_reg_options - list of valid regular options. # (i.e. options that are associated only # eith negative sign.) # character: valid_sw_options - list of valid switch options. # (i.e. options that can be associated with # either a positive or negative sign. # logical: quiet mode (optional) If true then print no error # messages. # integer: rc - return code # = -1 if the arguement, options, is # not recognized as a list of options # = 0 if all options are valid. # > 0 for the number of invalid options. # { local($options, $valid_reg_options, $valid_sw_options, $quiet_mode ) = @_; if ( $options eq "+" || $options eq "-" ) {return -1} local(@Options) = split( / */, $options ); if ( $Options[ $[ ] ne "-" && $Options[ $[ ] ne "+" ) {return -1;} local($option, $option_sign, $valid_list, $pos); local($errs) = 0; foreach $option ( @Options ) { if ( $option eq "-" || $option eq "+" ) {$option_sign = $option;} else { if ( $option_sign eq "-" ) { $valid_list = $valid_reg_options . $valid_sw_options; } else { $valid_list = $valid_sw_options; } $pos = index ($valid_list,$option); if ( $pos < $[ && $quiet_mode ) { $errs++; print STDERR "Invalid option: $option_sign$option \n"; }# end if }# end if }# end foreach return $errs; }#end sub GetOpts sub GetOpts # Gets options. If an option is valid, then opt_[option] is # set to 0 or 1 as a side effect if the option is preceeded by # a positive or negative sign. # # Usage: # $rc = &GetOpts ( options, valid_options ) # # character: options - options to be checked. (e.g. -df+x) The # list must begin with a positive or # negative sign. If no sign appears at the # beginning or by itself, then the argument # is not recognized as a list of options. # character: valid_options - list of valid options (e.g. dfhx) # integer: rc - return code # = -1 if the arguement, options, is # not recognized as a list of options. # = 0 otherwise # { local($options,$valid_options) = @_; if ( $options eq "+" || $options eq "-" ) {return -1} local(@Options) = split( / */, $options ); if ( $Options[ $[ ] ne "-" && $Options[ $[ ] ne "+" ) {return -1;} local($option, $option_sign); foreach $option ( @Options ) { if ( $option eq "-" || $option eq "+" ) { $option_sign = $option; } else { if ( index ($valid_options,$option) >= $[ ) { if ( $option_sign eq "-" ) {${"opt_$option"} = 1;} if ( $option_sign eq "+" ) {${"opt_$option"} = 0;}; }# end if }# end if }# end foreach return 0; }#end sub GetOpts sub SetOpt # Sets option flags. For the last input option that is in a # list, the flag opt_[option] is set to 1 as a side effect. # For all other options in the list, opt_[option] is set to 0. # # Usage: # $rc = &SetOpt ( options, valid_options ) # # character: options - options to be checked. (e.g. -df+x) The # list must begin with a positive or # negative sign. If no sign appears at the # beginning or by itself, then the argument # is not recognized as a list of options. # character: valid_options - list of valid options (e.g. def ) # integer: rc - return code # = -1 if the arguement, options, is # not recognized as a list of options. # = 0 otherwise # Note: For the examples provided for the input arguments, # $opt_d = 0, $opt_e = 0, and $opt_f = 1, since the # input option, -f, was the last in the argument, # option. # { local($options,$valid_options) = @_; if ( $options eq "+" || $options eq "-" ) {return -1} local(@Options) = split( / */, $options ); local(@ValidOptions) = split( / */, $valid_options ); if ( $Options[ $[ ] ne "-" && $Options[ $[ ] ne "+" ) {return -1;} local($option, $option_sign); foreach $option ( @Options ) { if ( $option ne "-" && $option ne "+" ) { if ( index ($valid_options,$option) >= $[ ) { foreach $valid_option (@ValidOptions ) { ${"opt_$valid_option"} = 0; }# end foreach ${"opt_$option"} = 1; }# end if }# end if }# end foreach return 0; }#end sub SetOpt sub print_help { print "Usage: protex [-hbACFS] [+-nlsxf] [src_file(s)]"; print " "; print " Options:"; print " -h Help mode: list command line options"; print " -b Bare mode, meaning no preamble, etc."; print " +-n New Page for each subsection (wastes paper)"; print " +-l Listing mode, default is prologues only"; print " +-s Shut-up mode, i.e., ignore any code from BOC to EOC"; print " +-x No LaTeX mode, i.e., put !DESCRIPTION: in verbatim mode"; print " +-f No source file info"; print " -A Ada code"; print " -C C++ code"; print " -F F90 code"; print " -S Shell script"; print " "; print " The options can appear in any order. The options, -h and -b,"; print " affect the input from all files listed on command-line input."; print " Each of the remaining options effects only the input from the"; print " files listed after the option and prior to any overriding"; print " option. The plus sign turns off the option."; }# end sub print_help sub print_notice { print "% **** IMPORTANT NOTICE *****" ; print "% This LaTeX file has been automatically produced by ProTeX v. 1.1"; print "% Any changes made to this file will likely be lost next time"; print "% this file is regenerated from its source. Send questions "; print "% to Arlindo da Silva, dasilva\@gsfc.nasa.gov"; print " "; }# sub print_notice sub print_preamble { unless ( $opt_b ) { print "%------------------------ PREAMBLE --------------------------"; print "\\documentclass[a4paper,11pt]{article}"; print "\\usepackage{amsmath}"; print "\\usepackage{amssymb}"; print "\\usepackage{epsfig}"; print "\\usepackage{tabularx}"; print "\\usepackage{color}"; print "\\usepackage[linkbordercolor={0 0 1}]{hyperref}"; print "\\textheight 9in"; print "\\topmargin 0pt"; print "\\headsep 1cm"; print "\\headheight 0pt"; print "\\textwidth 6in"; print "\\oddsidemargin 0in"; print "\\evensidemargin 0in"; print "\\marginparpush 0pt"; print "\\pagestyle{plain}"; print "\\markboth{}{}"; print "%-------------------------------------------------------------"; }# end unless # in your main document before you include any protex-generated files # for the first time, if you define these three variables as length # settings (like this:) # \newlength{\oldparskip} # \newlength{\oldparindent} # \newlength{\oldbaselineskip} # then 1) comment in all the lines below, and 2) find the 3 reset lines # further down and comment in them as well. # then protex will override the paragraph and skip settings during # the source sections, but will restore the original document settings # at the end. if someone can figure out how to check to see if a # latex variable exists, and do a conditional section, we could make # this fully self-contained. # nsc feb 2003 #print "\\setlength{\\oldparskip}{\\parskip}"; print "\\setlength{\\parskip}{0pt}"; #print "\\setlength{\\oldparindent}{\\parindent}"; print "\\setlength{\\parindent}{0pt}"; #print "\\setlength{\\oldbaselineskip}{\\baselineskip}"; print "\\setlength{\\baselineskip}{11pt}"; }# end sub print_preamble sub print_macros { print " "; print "%--------------------- SHORT-HAND MACROS ----------------------"; print "\\def\\bv{\\begin{verbatim}}"; print "\\def\\ev\{\\end\{verbatim}}"; print "\\def\\be{\\begin{equation}}"; print "\\def\\ee{\\end{equation}}"; print "\\def\\bea{\\begin{eqnarray}}"; print "\\def\\eea{\\end{eqnarray}}"; print "\\def\\bi{\\begin{itemize}}"; print "\\def\\ei{\\end{itemize}}"; print "\\def\\bn{\\begin{enumerate}}"; print "\\def\\en{\\end{enumerate}}"; print "\\def\\bd{\\begin{description}}"; print "\\def\\ed{\\end{description}}"; print "\\def\\({\\left (}"; print "\\def\\){\\right )}"; print "\\def\\[{\\left [}"; print "\\def\\]{\\right ]}"; print "\\def\\<{\\left \\langle}"; print "\\def\\>{\\right \\rangle}"; print "\\def\\cI{{\\cal I}}"; print "\\def\\diag{\\mathop{\\rm diag}}"; print "\\def\\tr{\\mathop{\\rm tr}}"; print "%-------------------------------------------------------------"; print " "; print "%------------------------ Elk commands -----------------------"; print "\\newcommand{\\block}[2]{"; print "\\color{blue}\\subsection{\\tt #1}\\color{black}"; print "\\begin{tabularx}{\\textwidth}[h]{|l|X|c|c|}"; print "\\hline"; print "#2 \\\\"; print "\\hline"; print "\\end{tabularx}\\vskip 0.25cm"; print "}"; print "%-------------------------------------------------------------"; }# end sub print_macros sub do_beg { unless ( $opt_b ) { if ( $begdoc == 0 ) { if ( $tpage ) { print "\\title{@title}"; print "\\author{@author\\\\ {\\em @affiliation}}"; print "\\date{@date}"; } print "\\begin{document}"; if ( $tpage ) { print "\\pagecolor[rgb]{1,0.95,0.85}"; print "\\fcolorbox{black}{white}{\\fbox{"; print "\\begin{minipage}[t]{\\linewidth}"; print "\\maketitle"; print "\\end{minipage}}}"; print "\\thispagestyle{empty}"; print "\\newpage"; print "\\pagecolor{white}"; } print "\\tableofcontents"; print "\\newpage"; $begdoc = 1; } } }# end sub do_beg sub do_eoc { print ' '; if ($verb) { print "\\end{verbatim}"; $verb = 0; } $source = 0; }# end sub do_eoc sub set_missing { $have_name = 0; # have routine name? $have_desc = 0; # have description? $have_intf = 0; # have interface? $have_hist = 0; # have revision history? $name_is = "UNKNOWN"; }# end sub set_missing sub check_if_all_there { $have_name || die "ProTeX: invalid prologue, missing !ROUTINE: or !IROUTINE: in <$name_is>"; $have_desc || die "ProTeX: invalid prologue, missing !DESCRIPTION: in <$name_is>"; $have_intf || die "ProTeX: invalid prologue, missing !INTERFACE: in <$name_is>"; $have_hist || die "ProTeX: invalid prologue, missing !REVISION HISTORY: in <$name_is>"; }# end sub check_if_all_there elk-2.3.22/src/PaxHeaders.22528/fftlib0000644002504400250440000000005012337331322015366 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/fftlib/0000755002504400250440000000000012337331322016207 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/src/fftlib/PaxHeaders.22528/Makefile0000644002504400250440000000005012337331322017103 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/fftlib/Makefile0000644002504400250440000000107512337331322017652 0ustar00dewhurstdewhurst00000000000000 AR = ar include ../../make.inc #------------------------------------------------------------------------------- # Suffix Rules #------------------------------------------------------------------------------- .SUFFIXES: .o .f90 .f90.o: $(F90) $(F90_OPTS) -c $< #------------------------------------------------------------------------------- # File dependencies #------------------------------------------------------------------------------- SRC = cfftnd.f90 OBJ = $(SRC:.f90=.o) fftlib: $(OBJ) $(AR) -rc fftlib.a $(OBJ) clean: rm -f *.o *.mod *~ *.a ifc* *.gcno elk-2.3.22/src/fftlib/PaxHeaders.22528/cfftnd.f900000644002504400250440000000005012337331322017227 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/fftlib/cfftnd.f900000644002504400250440000016417412337331322020010 0ustar00dewhurstdewhurst00000000000000module fftpack5 integer, parameter :: prec=kind(1.d0) end module subroutine cfftnd(nd,n,sgn,c) ! ! DESCRIPTION: ! In-place fast Fourier transform for complex arrays in $n_d$ dimensions. The ! forward transform is scaled by one over the size of the array. Uses a ! modified version of the FFTPACK5 library. ! ! INPUT/OUTPUT PARAMETERS: ! nd : number of dimensions (in,integer) ! n : mesh size (in,integer(nd)) ! sgn : FFT direction, -1: forward, 1: backward (in,integer) ! c : array to transform (inout,complex(n(1)*n(2)*...*n(nd))) ! ! Copyright (C) 2005 J. K. Dewhurst ! Distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. ! use fftpack5 implicit none ! arguments integer, intent(in) :: nd integer, intent(in) :: n(nd) integer, intent(in) :: sgn complex(prec), intent(inout) :: c(*) ! local variables integer i,j,k,l,p,q,iw,iw1,ni integer lensav,lenwrk ! allocatable arrays real(prec), allocatable :: wsave(:) real(prec), allocatable :: work(:) if (nd.le.0) then write(*,*) write(*,'("Error(cfftnd): invalid number of dimensions : ",I8)') nd write(*,*) stop end if p=1 lensav=1 do i=1,nd if (n(i).le.0) then write(*,*) write(*,'("Error(cfftnd): invalid n : ",I8)') n(i) write(*,'(" for dimension ",I4)') i write(*,*) stop end if p=p*n(i) lensav=max(lensav,2*n(i)+int(log(real(n(i),prec)))+4) end do lenwrk=2*p allocate(wsave(lensav)) allocate(work(lenwrk)) if (sgn.gt.0) then q=1 do i=1,nd ni=n(i) if (ni.gt.1) then iw=ni+ni+1 iw1=iw+1 p=p/ni call cfftmi(ni,wsave,lensav) j=1 k=q*ni do l=1,p call cmfm1b(q,1,ni,q,c(j),work,wsave,wsave(iw),wsave(iw1)) j=j+k end do q=k end if end do else q=1 do i=1,nd ni=n(i) if (ni.gt.1) then iw=ni+ni+1 iw1=iw+1 p=p/ni call cfftmi(ni,wsave,lensav) j=1 k=q*ni do l=1,p call cmfm1f(q,1,ni,q,c(j),work,wsave,wsave(iw),wsave(iw1)) j=j+k end do q=k end if end do end if deallocate(wsave,work) return end subroutine subroutine cfftmi ( n, wsave, lensav ) !******************************************************************************* ! !! CFFTMI: initialization for CFFTMB and CFFTMF. ! ! Discussion: ! ! CFFTMI initializes array WSAVE for use in its companion routines ! CFFTMB and CFFTMF. CFFTMI must be called before the first call ! to CFFTMB or CFFTMF, and after whenever the value of integer N changes. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Modified: ! ! 24 March 2005 ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! ! Input, integer N, the length of each sequence to be transformed. ! The transform is most efficient when N is a product of small primes. ! ! Input, integer LENSAV, the dimension of the WSAVE array. LENSAV must be ! at least 2*N + INT(LOG(REAL(N))) + 4. ! ! Output, real WSAVE(LENSAV), containing the prime factors of N and ! also containing certain trigonometric values which will be used in ! routines CFFTMB or CFFTMF. ! ! use fftpack5 implicit none integer lensav integer iw1 integer n real(prec) wsave(lensav) if ( n == 1 ) then return end if iw1 = n + n + 1 call mcfti1 ( n, wsave, wsave(iw1), wsave(iw1+1) ) return end subroutine mcfti1 ( n, wa, fnf, fac ) !******************************************************************************* ! !! MCFTI1 is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none real(prec) fac(*) real(prec) fnf integer ido integer ip integer iw integer k1 integer l1 integer l2 integer n integer nf real(prec) wa(*) ! ! Get the factorization of N. ! call factor ( n, nf, fac ) fnf = real ( nf, prec ) iw = 1 l1 = 1 ! ! Set up the trigonometric tables. ! do k1 = 1, nf ip = int ( fac(k1) ) l2 = l1 * ip ido = n / l2 call tables ( ido, ip, wa(iw) ) iw = iw + ( ip - 1 ) * ( ido + ido ) l1 = l2 end do return end subroutine factor ( n, nf, fac ) !******************************************************************************* ! !! FACTOR determines the factors of an integer. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Modified: ! ! 28 March 2005 ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! ! Input, integer N, the number for which factorization and other information ! is needed. ! ! Output, integer NF, the number of factors. ! ! Output, real FAC(*), a list of factors of N. ! use fftpack5 implicit none real(prec) fac(*) integer j integer n integer nf integer nl integer nq integer nr integer ntry nl = n nf = 0 j = 0 do while ( 1 < nl ) j = j + 1 if ( j == 1 ) then ntry = 4 else if ( j == 2 ) then ntry = 2 else if ( j == 3 ) then ntry = 3 else if ( j == 4 ) then ntry = 5 else ntry = ntry + 2 end if do nq = nl / ntry nr = nl - ntry * nq if ( nr /= 0 ) then exit end if nf = nf + 1 fac(nf) = ntry nl = nq end do end do return end subroutine tables ( ido, ip, wa ) !******************************************************************************* ! !! TABLES computes trigonometric tables needed by the FFT routines. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer ip real(prec) arg1 real(prec) arg2 real(prec) arg3 real(prec) arg4 real(prec) argz integer i integer j real(prec) tpi real(prec) wa(ido,ip-1,2) tpi = 8.0E+00_prec * atan ( 1.0E+00_prec ) argz = tpi / real ( ip, prec ) arg1 = tpi / real ( ido * ip, prec ) do j = 2, ip arg2 = real ( j - 1, prec ) * arg1 do i = 1, ido arg3 = real ( i - 1, prec ) * arg2 wa(i,j-1,1) = cos ( arg3 ) wa(i,j-1,2) = sin ( arg3 ) end do if ( 5 < ip ) then arg4 = real ( j - 1, prec ) * argz wa(1,j-1,1) = cos ( arg4 ) wa(1,j-1,2) = sin ( arg4 ) end if end do return end subroutine cmfm1b ( lot, jump, n, inc, c, ch, wa, fnf, fac ) !******************************************************************************* ! !! CMFM1B is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none complex(prec) c(*) real(prec) ch(*) real(prec) fac(*) real(prec) fnf integer ido integer inc integer ip integer iw integer jump integer k1 integer l1 integer l2 integer lid integer lot integer n integer na integer nbr integer nf real(prec) wa(*) nf = int ( fnf ) na = 0 l1 = 1 iw = 1 do k1 = 1, nf ip = int ( fac(k1) ) l2 = ip * l1 ido = n / l2 lid = l1 * ido nbr = 1 + na + 2 * min ( ip - 2, 4 ) if ( nbr == 1 ) then call cmf2kb ( lot, ido, l1, na, c, jump, inc, ch, 1, lot, wa(iw) ) else if ( nbr == 2 ) then call cmf2kb ( lot, ido, l1, na, ch, 1, lot, c, jump, inc, wa(iw) ) else if ( nbr == 3 ) then call cmf3kb ( lot, ido, l1, na, c, jump, inc, ch, 1, lot, wa(iw) ) else if ( nbr == 4 ) then call cmf3kb ( lot, ido, l1, na, ch, 1, lot, c, jump, inc, wa(iw) ) else if ( nbr == 5 ) then call cmf4kb ( lot, ido, l1, na, c, jump, inc, ch, 1, lot, wa(iw) ) else if ( nbr == 6 ) then call cmf4kb ( lot, ido, l1, na, ch, 1, lot, c, jump, inc, wa(iw) ) else if ( nbr == 7 ) then call cmf5kb ( lot, ido, l1, na, c, jump, inc, ch, 1, lot, wa(iw) ) else if ( nbr == 8 ) then call cmf5kb ( lot, ido, l1, na, ch, 1, lot, c, jump, inc, wa(iw) ) else if ( nbr == 9 ) then call cmfgkb ( lot, ido, ip, l1, lid, na, c, c, jump, inc, ch, ch, & 1, lot, wa(iw) ) else if ( nbr == 10 ) then call cmfgkb ( lot, ido, ip, l1, lid, na, ch, ch, 1, lot, c, c, & jump, inc, wa(iw) ) end if l1 = l2 iw = iw + ( ip - 1 ) * ( ido + ido ) if ( ip <= 5 ) then na = 1 - na end if end do return end subroutine cmfm1f ( lot, jump, n, inc, c, ch, wa, fnf, fac ) !******************************************************************************* ! !! CMFM1F is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none complex(prec) c(*) real(prec) ch(*) real(prec) fac(*) real(prec) fnf integer ido integer inc integer ip integer iw integer jump integer k1 integer l1 integer l2 integer lid integer lot integer n integer na integer nbr integer nf real(prec) wa(*) nf = int ( fnf ) na = 0 l1 = 1 iw = 1 do k1 = 1, nf ip = int ( fac(k1) ) l2 = ip * l1 ido = n / l2 lid = l1 * ido nbr = 1 + na + 2 * min ( ip - 2, 4 ) if ( nbr == 1 ) then call cmf2kf ( lot, ido, l1, na, c, jump, inc, ch, 1, lot, wa(iw) ) else if ( nbr == 2 ) then call cmf2kf ( lot, ido, l1, na, ch, 1, lot, c, jump, inc, wa(iw) ) else if ( nbr == 3 ) then call cmf3kf ( lot, ido, l1, na, c, jump, inc, ch, 1, lot, wa(iw) ) else if ( nbr == 4 ) then call cmf3kf ( lot, ido, l1, na, ch, 1, lot, c, jump, inc, wa(iw) ) else if ( nbr == 5 ) then call cmf4kf ( lot, ido, l1, na, c, jump, inc, ch, 1, lot, wa(iw) ) else if ( nbr == 6 ) then call cmf4kf ( lot, ido, l1, na, ch, 1, lot, c, jump, inc, wa(iw) ) else if ( nbr == 7 ) then call cmf5kf ( lot, ido, l1, na, c, jump, inc, ch, 1, lot, wa(iw) ) else if ( nbr == 8 ) then call cmf5kf ( lot, ido, l1, na, ch, 1, lot, c, jump, inc, wa(iw) ) else if ( nbr == 9 ) then call cmfgkf ( lot, ido, ip, l1, lid, na, c, c, jump, inc, ch, ch, & 1, lot, wa(iw) ) else if ( nbr == 10 ) then call cmfgkf ( lot, ido, ip, l1, lid, na, ch, ch, 1, lot, c, c, & jump, inc, wa(iw) ) end if l1 = l2 iw = iw + ( ip - 1 ) * ( ido + ido ) if ( ip <= 5 ) then na = 1 - na end if end do return end subroutine cmf2kb ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa ) !******************************************************************************* ! !! CMF2KB is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer l1 real(prec) cc(2,in1,l1,ido,2) real(prec) ch(2,in2,l1,2,ido) real(prec) chold1 real(prec) chold2 integer i integer im1 integer im2 integer k integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) ti2 real(prec) tr2 real(prec) wa(ido,1,2) m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 if ( 1 < ido .or. na == 1 ) then do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch(1,m2,k,1,1) = cc(1,m1,k,1,1) + cc(1,m1,k,1,2) ch(1,m2,k,2,1) = cc(1,m1,k,1,1) - cc(1,m1,k,1,2) ch(2,m2,k,1,1) = cc(2,m1,k,1,1) + cc(2,m1,k,1,2) ch(2,m2,k,2,1) = cc(2,m1,k,1,1) - cc(2,m1,k,1,2) end do end do do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch(1,m2,k,1,i) = cc(1,m1,k,i,1)+cc(1,m1,k,i,2) tr2 = cc(1,m1,k,i,1)-cc(1,m1,k,i,2) ch(2,m2,k,1,i) = cc(2,m1,k,i,1)+cc(2,m1,k,i,2) ti2 = cc(2,m1,k,i,1)-cc(2,m1,k,i,2) ch(2,m2,k,2,i) = wa(i,1,1)*ti2+wa(i,1,2)*tr2 ch(1,m2,k,2,i) = wa(i,1,1)*tr2-wa(i,1,2)*ti2 end do end do end do else do k = 1, l1 do m1 = 1, m1d, im1 chold1 = cc(1,m1,k,1,1) + cc(1,m1,k,1,2) cc(1,m1,k,1,2) = cc(1,m1,k,1,1) - cc(1,m1,k,1,2) cc(1,m1,k,1,1) = chold1 chold2 = cc(2,m1,k,1,1) + cc(2,m1,k,1,2) cc(2,m1,k,1,2) = cc(2,m1,k,1,1) - cc(2,m1,k,1,2) cc(2,m1,k,1,1) = chold2 end do end do end if return end subroutine cmf2kf ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa ) !******************************************************************************* ! !! CMF2KF is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer l1 real(prec) cc(2,in1,l1,ido,2) real(prec) ch(2,in2,l1,2,ido) real(prec) chold1 real(prec) chold2 integer i integer im1 integer im2 integer k integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) sn real(prec) ti2 real(prec) tr2 real(prec) wa(ido,1,2) m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 if ( 1 < ido ) then do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch(1,m2,k,1,1) = cc(1,m1,k,1,1)+cc(1,m1,k,1,2) ch(1,m2,k,2,1) = cc(1,m1,k,1,1)-cc(1,m1,k,1,2) ch(2,m2,k,1,1) = cc(2,m1,k,1,1)+cc(2,m1,k,1,2) ch(2,m2,k,2,1) = cc(2,m1,k,1,1)-cc(2,m1,k,1,2) end do end do do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch(1,m2,k,1,i) = cc(1,m1,k,i,1)+cc(1,m1,k,i,2) tr2 = cc(1,m1,k,i,1)-cc(1,m1,k,i,2) ch(2,m2,k,1,i) = cc(2,m1,k,i,1)+cc(2,m1,k,i,2) ti2 = cc(2,m1,k,i,1)-cc(2,m1,k,i,2) ch(2,m2,k,2,i) = wa(i,1,1)*ti2-wa(i,1,2)*tr2 ch(1,m2,k,2,i) = wa(i,1,1)*tr2+wa(i,1,2)*ti2 end do end do end do else if ( na == 1 ) then sn = 1.0E+00_prec / real ( 2 * l1, prec ) do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch(1,m2,k,1,1) = sn * ( cc(1,m1,k,1,1) + cc(1,m1,k,1,2) ) ch(1,m2,k,2,1) = sn * ( cc(1,m1,k,1,1) - cc(1,m1,k,1,2) ) ch(2,m2,k,1,1) = sn * ( cc(2,m1,k,1,1) + cc(2,m1,k,1,2) ) ch(2,m2,k,2,1) = sn * ( cc(2,m1,k,1,1) - cc(2,m1,k,1,2) ) end do end do else sn = 1.0E+00_prec / real ( 2 * l1, prec ) do k = 1, l1 do m1 = 1, m1d, im1 chold1 = sn * ( cc(1,m1,k,1,1) + cc(1,m1,k,1,2) ) cc(1,m1,k,1,2) = sn * ( cc(1,m1,k,1,1) - cc(1,m1,k,1,2) ) cc(1,m1,k,1,1) = chold1 chold2 = sn * ( cc(2,m1,k,1,1) + cc(2,m1,k,1,2) ) cc(2,m1,k,1,2) = sn * ( cc(2,m1,k,1,1) - cc(2,m1,k,1,2) ) cc(2,m1,k,1,1) = chold2 end do end do end if return end subroutine cmf3kb ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa ) !******************************************************************************* ! !! CMF3KB is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer l1 real(prec) cc(2,in1,l1,ido,3) real(prec) ch(2,in2,l1,3,ido) real(prec) ci2 real(prec) ci3 real(prec) cr2 real(prec) cr3 real(prec) di2 real(prec) di3 real(prec) dr2 real(prec) dr3 integer i integer im1 integer im2 integer k integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec), parameter :: taui = 0.866025403784439E+00_prec real(prec), parameter :: taur = -0.5E+00_prec real(prec) ti2 real(prec) tr2 real(prec) wa(ido,2,2) m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 if ( 1 < ido .or. na == 1 ) then do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,3) cr2 = cc(1,m1,k,1,1)+taur*tr2 ch(1,m2,k,1,1) = cc(1,m1,k,1,1)+tr2 ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,3) ci2 = cc(2,m1,k,1,1)+taur*ti2 ch(2,m2,k,1,1) = cc(2,m1,k,1,1)+ti2 cr3 = taui * (cc(1,m1,k,1,2)-cc(1,m1,k,1,3)) ci3 = taui * (cc(2,m1,k,1,2)-cc(2,m1,k,1,3)) ch(1,m2,k,2,1) = cr2-ci3 ch(1,m2,k,3,1) = cr2+ci3 ch(2,m2,k,2,1) = ci2+cr3 ch(2,m2,k,3,1) = ci2-cr3 end do end do do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 tr2 = cc(1,m1,k,i,2)+cc(1,m1,k,i,3) cr2 = cc(1,m1,k,i,1)+taur*tr2 ch(1,m2,k,1,i) = cc(1,m1,k,i,1)+tr2 ti2 = cc(2,m1,k,i,2)+cc(2,m1,k,i,3) ci2 = cc(2,m1,k,i,1)+taur*ti2 ch(2,m2,k,1,i) = cc(2,m1,k,i,1)+ti2 cr3 = taui*(cc(1,m1,k,i,2)-cc(1,m1,k,i,3)) ci3 = taui*(cc(2,m1,k,i,2)-cc(2,m1,k,i,3)) dr2 = cr2-ci3 dr3 = cr2+ci3 di2 = ci2+cr3 di3 = ci2-cr3 ch(2,m2,k,2,i) = wa(i,1,1)*di2+wa(i,1,2)*dr2 ch(1,m2,k,2,i) = wa(i,1,1)*dr2-wa(i,1,2)*di2 ch(2,m2,k,3,i) = wa(i,2,1)*di3+wa(i,2,2)*dr3 ch(1,m2,k,3,i) = wa(i,2,1)*dr3-wa(i,2,2)*di3 end do end do end do else do k = 1, l1 do m1 = 1, m1d, im1 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,3) cr2 = cc(1,m1,k,1,1)+taur*tr2 cc(1,m1,k,1,1) = cc(1,m1,k,1,1)+tr2 ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,3) ci2 = cc(2,m1,k,1,1)+taur*ti2 cc(2,m1,k,1,1) = cc(2,m1,k,1,1)+ti2 cr3 = taui*(cc(1,m1,k,1,2)-cc(1,m1,k,1,3)) ci3 = taui*(cc(2,m1,k,1,2)-cc(2,m1,k,1,3)) cc(1,m1,k,1,2) = cr2-ci3 cc(1,m1,k,1,3) = cr2+ci3 cc(2,m1,k,1,2) = ci2+cr3 cc(2,m1,k,1,3) = ci2-cr3 end do end do end if return end subroutine cmf3kf ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa ) !******************************************************************************* ! !! CMF3KF is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer l1 real(prec) cc(2,in1,l1,ido,3) real(prec) ch(2,in2,l1,3,ido) real(prec) ci2 real(prec) ci3 real(prec) cr2 real(prec) cr3 real(prec) di2 real(prec) di3 real(prec) dr2 real(prec) dr3 integer i integer im1 integer im2 integer k integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) sn real(prec), parameter :: taui = -0.866025403784439E+00_prec real(prec), parameter :: taur = -0.5E+00_prec real(prec) ti2 real(prec) tr2 real(prec) wa(ido,2,2) m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 if ( 1 < ido ) then do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,3) cr2 = cc(1,m1,k,1,1)+taur*tr2 ch(1,m2,k,1,1) = cc(1,m1,k,1,1)+tr2 ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,3) ci2 = cc(2,m1,k,1,1)+taur*ti2 ch(2,m2,k,1,1) = cc(2,m1,k,1,1)+ti2 cr3 = taui*(cc(1,m1,k,1,2)-cc(1,m1,k,1,3)) ci3 = taui*(cc(2,m1,k,1,2)-cc(2,m1,k,1,3)) ch(1,m2,k,2,1) = cr2-ci3 ch(1,m2,k,3,1) = cr2+ci3 ch(2,m2,k,2,1) = ci2+cr3 ch(2,m2,k,3,1) = ci2-cr3 end do end do do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 tr2 = cc(1,m1,k,i,2)+cc(1,m1,k,i,3) cr2 = cc(1,m1,k,i,1)+taur*tr2 ch(1,m2,k,1,i) = cc(1,m1,k,i,1)+tr2 ti2 = cc(2,m1,k,i,2)+cc(2,m1,k,i,3) ci2 = cc(2,m1,k,i,1)+taur*ti2 ch(2,m2,k,1,i) = cc(2,m1,k,i,1)+ti2 cr3 = taui*(cc(1,m1,k,i,2)-cc(1,m1,k,i,3)) ci3 = taui*(cc(2,m1,k,i,2)-cc(2,m1,k,i,3)) dr2 = cr2-ci3 dr3 = cr2+ci3 di2 = ci2+cr3 di3 = ci2-cr3 ch(2,m2,k,2,i) = wa(i,1,1)*di2-wa(i,1,2)*dr2 ch(1,m2,k,2,i) = wa(i,1,1)*dr2+wa(i,1,2)*di2 ch(2,m2,k,3,i) = wa(i,2,1)*di3-wa(i,2,2)*dr3 ch(1,m2,k,3,i) = wa(i,2,1)*dr3+wa(i,2,2)*di3 end do end do end do else if ( na == 1 ) then sn = 1.0E+00_prec / real ( 3 * l1, prec ) do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,3) cr2 = cc(1,m1,k,1,1)+taur*tr2 ch(1,m2,k,1,1) = sn*(cc(1,m1,k,1,1)+tr2) ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,3) ci2 = cc(2,m1,k,1,1)+taur*ti2 ch(2,m2,k,1,1) = sn*(cc(2,m1,k,1,1)+ti2) cr3 = taui*(cc(1,m1,k,1,2)-cc(1,m1,k,1,3)) ci3 = taui*(cc(2,m1,k,1,2)-cc(2,m1,k,1,3)) ch(1,m2,k,2,1) = sn*(cr2-ci3) ch(1,m2,k,3,1) = sn*(cr2+ci3) ch(2,m2,k,2,1) = sn*(ci2+cr3) ch(2,m2,k,3,1) = sn*(ci2-cr3) end do end do else sn = 1.0E+00_prec / real ( 3 * l1, prec ) do k = 1, l1 do m1 = 1, m1d, im1 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,3) cr2 = cc(1,m1,k,1,1)+taur*tr2 cc(1,m1,k,1,1) = sn*(cc(1,m1,k,1,1)+tr2) ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,3) ci2 = cc(2,m1,k,1,1)+taur*ti2 cc(2,m1,k,1,1) = sn*(cc(2,m1,k,1,1)+ti2) cr3 = taui*(cc(1,m1,k,1,2)-cc(1,m1,k,1,3)) ci3 = taui*(cc(2,m1,k,1,2)-cc(2,m1,k,1,3)) cc(1,m1,k,1,2) = sn*(cr2-ci3) cc(1,m1,k,1,3) = sn*(cr2+ci3) cc(2,m1,k,1,2) = sn*(ci2+cr3) cc(2,m1,k,1,3) = sn*(ci2-cr3) end do end do end if return end subroutine cmf4kb ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa ) !******************************************************************************* ! !! CMF4KB is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer l1 real(prec) cc(2,in1,l1,ido,4) real(prec) ch(2,in2,l1,4,ido) real(prec) ci2 real(prec) ci3 real(prec) ci4 real(prec) cr2 real(prec) cr3 real(prec) cr4 integer i integer im1 integer im2 integer k integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) ti1 real(prec) ti2 real(prec) ti3 real(prec) ti4 real(prec) tr1 real(prec) tr2 real(prec) tr3 real(prec) tr4 real(prec) wa(ido,3,2) m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 if ( 1 < ido .or. na == 1 ) then do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti1 = cc(2,m1,k,1,1)-cc(2,m1,k,1,3) ti2 = cc(2,m1,k,1,1)+cc(2,m1,k,1,3) tr4 = cc(2,m1,k,1,4)-cc(2,m1,k,1,2) ti3 = cc(2,m1,k,1,2)+cc(2,m1,k,1,4) tr1 = cc(1,m1,k,1,1)-cc(1,m1,k,1,3) tr2 = cc(1,m1,k,1,1)+cc(1,m1,k,1,3) ti4 = cc(1,m1,k,1,2)-cc(1,m1,k,1,4) tr3 = cc(1,m1,k,1,2)+cc(1,m1,k,1,4) ch(1,m2,k,1,1) = tr2+tr3 ch(1,m2,k,3,1) = tr2-tr3 ch(2,m2,k,1,1) = ti2+ti3 ch(2,m2,k,3,1) = ti2-ti3 ch(1,m2,k,2,1) = tr1+tr4 ch(1,m2,k,4,1) = tr1-tr4 ch(2,m2,k,2,1) = ti1+ti4 ch(2,m2,k,4,1) = ti1-ti4 end do end do do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti1 = cc(2,m1,k,i,1)-cc(2,m1,k,i,3) ti2 = cc(2,m1,k,i,1)+cc(2,m1,k,i,3) ti3 = cc(2,m1,k,i,2)+cc(2,m1,k,i,4) tr4 = cc(2,m1,k,i,4)-cc(2,m1,k,i,2) tr1 = cc(1,m1,k,i,1)-cc(1,m1,k,i,3) tr2 = cc(1,m1,k,i,1)+cc(1,m1,k,i,3) ti4 = cc(1,m1,k,i,2)-cc(1,m1,k,i,4) tr3 = cc(1,m1,k,i,2)+cc(1,m1,k,i,4) ch(1,m2,k,1,i) = tr2+tr3 cr3 = tr2-tr3 ch(2,m2,k,1,i) = ti2+ti3 ci3 = ti2-ti3 cr2 = tr1+tr4 cr4 = tr1-tr4 ci2 = ti1+ti4 ci4 = ti1-ti4 ch(1,m2,k,2,i) = wa(i,1,1)*cr2-wa(i,1,2)*ci2 ch(2,m2,k,2,i) = wa(i,1,1)*ci2+wa(i,1,2)*cr2 ch(1,m2,k,3,i) = wa(i,2,1)*cr3-wa(i,2,2)*ci3 ch(2,m2,k,3,i) = wa(i,2,1)*ci3+wa(i,2,2)*cr3 ch(1,m2,k,4,i) = wa(i,3,1)*cr4-wa(i,3,2)*ci4 ch(2,m2,k,4,i) = wa(i,3,1)*ci4+wa(i,3,2)*cr4 end do end do end do else do k = 1, l1 do m1 = 1, m1d, im1 ti1 = cc(2,m1,k,1,1)-cc(2,m1,k,1,3) ti2 = cc(2,m1,k,1,1)+cc(2,m1,k,1,3) tr4 = cc(2,m1,k,1,4)-cc(2,m1,k,1,2) ti3 = cc(2,m1,k,1,2)+cc(2,m1,k,1,4) tr1 = cc(1,m1,k,1,1)-cc(1,m1,k,1,3) tr2 = cc(1,m1,k,1,1)+cc(1,m1,k,1,3) ti4 = cc(1,m1,k,1,2)-cc(1,m1,k,1,4) tr3 = cc(1,m1,k,1,2)+cc(1,m1,k,1,4) cc(1,m1,k,1,1) = tr2+tr3 cc(1,m1,k,1,3) = tr2-tr3 cc(2,m1,k,1,1) = ti2+ti3 cc(2,m1,k,1,3) = ti2-ti3 cc(1,m1,k,1,2) = tr1+tr4 cc(1,m1,k,1,4) = tr1-tr4 cc(2,m1,k,1,2) = ti1+ti4 cc(2,m1,k,1,4) = ti1-ti4 end do end do end if return end subroutine cmf4kf ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa ) !******************************************************************************* ! !! CMF4KF is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer l1 real(prec) cc(2,in1,l1,ido,4) real(prec) ch(2,in2,l1,4,ido) real(prec) ci2 real(prec) ci3 real(prec) ci4 real(prec) cr2 real(prec) cr3 real(prec) cr4 integer i integer im1 integer im2 integer k integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) sn real(prec) ti1 real(prec) ti2 real(prec) ti3 real(prec) ti4 real(prec) tr1 real(prec) tr2 real(prec) tr3 real(prec) tr4 real(prec) wa(ido,3,2) m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 if ( 1 < ido ) then do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti1 = cc(2,m1,k,1,1)-cc(2,m1,k,1,3) ti2 = cc(2,m1,k,1,1)+cc(2,m1,k,1,3) tr4 = cc(2,m1,k,1,2)-cc(2,m1,k,1,4) ti3 = cc(2,m1,k,1,2)+cc(2,m1,k,1,4) tr1 = cc(1,m1,k,1,1)-cc(1,m1,k,1,3) tr2 = cc(1,m1,k,1,1)+cc(1,m1,k,1,3) ti4 = cc(1,m1,k,1,4)-cc(1,m1,k,1,2) tr3 = cc(1,m1,k,1,2)+cc(1,m1,k,1,4) ch(1,m2,k,1,1) = tr2+tr3 ch(1,m2,k,3,1) = tr2-tr3 ch(2,m2,k,1,1) = ti2+ti3 ch(2,m2,k,3,1) = ti2-ti3 ch(1,m2,k,2,1) = tr1+tr4 ch(1,m2,k,4,1) = tr1-tr4 ch(2,m2,k,2,1) = ti1+ti4 ch(2,m2,k,4,1) = ti1-ti4 end do end do do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti1 = cc(2,m1,k,i,1)-cc(2,m1,k,i,3) ti2 = cc(2,m1,k,i,1)+cc(2,m1,k,i,3) ti3 = cc(2,m1,k,i,2)+cc(2,m1,k,i,4) tr4 = cc(2,m1,k,i,2)-cc(2,m1,k,i,4) tr1 = cc(1,m1,k,i,1)-cc(1,m1,k,i,3) tr2 = cc(1,m1,k,i,1)+cc(1,m1,k,i,3) ti4 = cc(1,m1,k,i,4)-cc(1,m1,k,i,2) tr3 = cc(1,m1,k,i,2)+cc(1,m1,k,i,4) ch(1,m2,k,1,i) = tr2+tr3 cr3 = tr2-tr3 ch(2,m2,k,1,i) = ti2+ti3 ci3 = ti2-ti3 cr2 = tr1+tr4 cr4 = tr1-tr4 ci2 = ti1+ti4 ci4 = ti1-ti4 ch(1,m2,k,2,i) = wa(i,1,1)*cr2+wa(i,1,2)*ci2 ch(2,m2,k,2,i) = wa(i,1,1)*ci2-wa(i,1,2)*cr2 ch(1,m2,k,3,i) = wa(i,2,1)*cr3+wa(i,2,2)*ci3 ch(2,m2,k,3,i) = wa(i,2,1)*ci3-wa(i,2,2)*cr3 ch(1,m2,k,4,i) = wa(i,3,1)*cr4+wa(i,3,2)*ci4 ch(2,m2,k,4,i) = wa(i,3,1)*ci4-wa(i,3,2)*cr4 end do end do end do else if ( na == 1 ) then sn = 1.0E+00_prec / real ( 4 * l1, prec ) do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti1 = cc(2,m1,k,1,1)-cc(2,m1,k,1,3) ti2 = cc(2,m1,k,1,1)+cc(2,m1,k,1,3) tr4 = cc(2,m1,k,1,2)-cc(2,m1,k,1,4) ti3 = cc(2,m1,k,1,2)+cc(2,m1,k,1,4) tr1 = cc(1,m1,k,1,1)-cc(1,m1,k,1,3) tr2 = cc(1,m1,k,1,1)+cc(1,m1,k,1,3) ti4 = cc(1,m1,k,1,4)-cc(1,m1,k,1,2) tr3 = cc(1,m1,k,1,2)+cc(1,m1,k,1,4) ch(1,m2,k,1,1) = sn*(tr2+tr3) ch(1,m2,k,3,1) = sn*(tr2-tr3) ch(2,m2,k,1,1) = sn*(ti2+ti3) ch(2,m2,k,3,1) = sn*(ti2-ti3) ch(1,m2,k,2,1) = sn*(tr1+tr4) ch(1,m2,k,4,1) = sn*(tr1-tr4) ch(2,m2,k,2,1) = sn*(ti1+ti4) ch(2,m2,k,4,1) = sn*(ti1-ti4) end do end do else sn = 1.0E+00_prec / real ( 4 * l1, prec ) do k = 1, l1 do m1 = 1, m1d, im1 ti1 = cc(2,m1,k,1,1)-cc(2,m1,k,1,3) ti2 = cc(2,m1,k,1,1)+cc(2,m1,k,1,3) tr4 = cc(2,m1,k,1,2)-cc(2,m1,k,1,4) ti3 = cc(2,m1,k,1,2)+cc(2,m1,k,1,4) tr1 = cc(1,m1,k,1,1)-cc(1,m1,k,1,3) tr2 = cc(1,m1,k,1,1)+cc(1,m1,k,1,3) ti4 = cc(1,m1,k,1,4)-cc(1,m1,k,1,2) tr3 = cc(1,m1,k,1,2)+cc(1,m1,k,1,4) cc(1,m1,k,1,1) = sn*(tr2+tr3) cc(1,m1,k,1,3) = sn*(tr2-tr3) cc(2,m1,k,1,1) = sn*(ti2+ti3) cc(2,m1,k,1,3) = sn*(ti2-ti3) cc(1,m1,k,1,2) = sn*(tr1+tr4) cc(1,m1,k,1,4) = sn*(tr1-tr4) cc(2,m1,k,1,2) = sn*(ti1+ti4) cc(2,m1,k,1,4) = sn*(ti1-ti4) end do end do end if return end subroutine cmf5kb ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa ) !******************************************************************************* ! !! CMF5KB is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer l1 real(prec) cc(2,in1,l1,ido,5) real(prec) ch(2,in2,l1,5,ido) real(prec) chold1 real(prec) chold2 real(prec) ci2 real(prec) ci3 real(prec) ci4 real(prec) ci5 real(prec) cr2 real(prec) cr3 real(prec) cr4 real(prec) cr5 real(prec) di2 real(prec) di3 real(prec) di4 real(prec) di5 real(prec) dr2 real(prec) dr3 real(prec) dr4 real(prec) dr5 integer i integer im1 integer im2 integer k integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) ti2 real(prec) ti3 real(prec) ti4 real(prec) ti5 real(prec), parameter :: ti11 = 0.9510565162951536E+00_prec real(prec), parameter :: ti12 = 0.5877852522924731E+00_prec real(prec) tr2 real(prec) tr3 real(prec) tr4 real(prec) tr5 real(prec), parameter :: tr11 = 0.3090169943749474E+00_prec real(prec), parameter :: tr12 = -0.8090169943749474E+00_prec real(prec) wa(ido,4,2) m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 if ( 1 < ido .or. na == 1 ) then do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti5 = cc(2,m1,k,1,2)-cc(2,m1,k,1,5) ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,5) ti4 = cc(2,m1,k,1,3)-cc(2,m1,k,1,4) ti3 = cc(2,m1,k,1,3)+cc(2,m1,k,1,4) tr5 = cc(1,m1,k,1,2)-cc(1,m1,k,1,5) tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,5) tr4 = cc(1,m1,k,1,3)-cc(1,m1,k,1,4) tr3 = cc(1,m1,k,1,3)+cc(1,m1,k,1,4) ch(1,m2,k,1,1) = cc(1,m1,k,1,1)+tr2+tr3 ch(2,m2,k,1,1) = cc(2,m1,k,1,1)+ti2+ti3 cr2 = cc(1,m1,k,1,1)+tr11*tr2+tr12*tr3 ci2 = cc(2,m1,k,1,1)+tr11*ti2+tr12*ti3 cr3 = cc(1,m1,k,1,1)+tr12*tr2+tr11*tr3 ci3 = cc(2,m1,k,1,1)+tr12*ti2+tr11*ti3 cr5 = ti11*tr5+ti12*tr4 ci5 = ti11*ti5+ti12*ti4 cr4 = ti12*tr5-ti11*tr4 ci4 = ti12*ti5-ti11*ti4 ch(1,m2,k,2,1) = cr2-ci5 ch(1,m2,k,5,1) = cr2+ci5 ch(2,m2,k,2,1) = ci2+cr5 ch(2,m2,k,3,1) = ci3+cr4 ch(1,m2,k,3,1) = cr3-ci4 ch(1,m2,k,4,1) = cr3+ci4 ch(2,m2,k,4,1) = ci3-cr4 ch(2,m2,k,5,1) = ci2-cr5 end do end do do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti5 = cc(2,m1,k,i,2)-cc(2,m1,k,i,5) ti2 = cc(2,m1,k,i,2)+cc(2,m1,k,i,5) ti4 = cc(2,m1,k,i,3)-cc(2,m1,k,i,4) ti3 = cc(2,m1,k,i,3)+cc(2,m1,k,i,4) tr5 = cc(1,m1,k,i,2)-cc(1,m1,k,i,5) tr2 = cc(1,m1,k,i,2)+cc(1,m1,k,i,5) tr4 = cc(1,m1,k,i,3)-cc(1,m1,k,i,4) tr3 = cc(1,m1,k,i,3)+cc(1,m1,k,i,4) ch(1,m2,k,1,i) = cc(1,m1,k,i,1)+tr2+tr3 ch(2,m2,k,1,i) = cc(2,m1,k,i,1)+ti2+ti3 cr2 = cc(1,m1,k,i,1)+tr11*tr2+tr12*tr3 ci2 = cc(2,m1,k,i,1)+tr11*ti2+tr12*ti3 cr3 = cc(1,m1,k,i,1)+tr12*tr2+tr11*tr3 ci3 = cc(2,m1,k,i,1)+tr12*ti2+tr11*ti3 cr5 = ti11*tr5+ti12*tr4 ci5 = ti11*ti5+ti12*ti4 cr4 = ti12*tr5-ti11*tr4 ci4 = ti12*ti5-ti11*ti4 dr3 = cr3-ci4 dr4 = cr3+ci4 di3 = ci3+cr4 di4 = ci3-cr4 dr5 = cr2+ci5 dr2 = cr2-ci5 di5 = ci2-cr5 di2 = ci2+cr5 ch(1,m2,k,2,i) = wa(i,1,1) * dr2 - wa(i,1,2) * di2 ch(2,m2,k,2,i) = wa(i,1,1) * di2 + wa(i,1,2) * dr2 ch(1,m2,k,3,i) = wa(i,2,1) * dr3 - wa(i,2,2) * di3 ch(2,m2,k,3,i) = wa(i,2,1) * di3 + wa(i,2,2) * dr3 ch(1,m2,k,4,i) = wa(i,3,1) * dr4 - wa(i,3,2) * di4 ch(2,m2,k,4,i) = wa(i,3,1) * di4 + wa(i,3,2) * dr4 ch(1,m2,k,5,i) = wa(i,4,1) * dr5 - wa(i,4,2) * di5 ch(2,m2,k,5,i) = wa(i,4,1) * di5 + wa(i,4,2) * dr5 end do end do end do else do k = 1, l1 do m1 = 1, m1d, im1 ti5 = cc(2,m1,k,1,2)-cc(2,m1,k,1,5) ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,5) ti4 = cc(2,m1,k,1,3)-cc(2,m1,k,1,4) ti3 = cc(2,m1,k,1,3)+cc(2,m1,k,1,4) tr5 = cc(1,m1,k,1,2)-cc(1,m1,k,1,5) tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,5) tr4 = cc(1,m1,k,1,3)-cc(1,m1,k,1,4) tr3 = cc(1,m1,k,1,3)+cc(1,m1,k,1,4) chold1 = cc(1,m1,k,1,1) + tr2 + tr3 chold2 = cc(2,m1,k,1,1) + ti2 + ti3 cr2 = cc(1,m1,k,1,1) + tr11 * tr2 + tr12 * tr3 ci2 = cc(2,m1,k,1,1) + tr11 * ti2 + tr12 * ti3 cr3 = cc(1,m1,k,1,1) + tr12 * tr2 + tr11 * tr3 ci3 = cc(2,m1,k,1,1) + tr12 * ti2 + tr11 * ti3 cc(1,m1,k,1,1) = chold1 cc(2,m1,k,1,1) = chold2 cr5 = ti11*tr5 + ti12*tr4 ci5 = ti11*ti5 + ti12*ti4 cr4 = ti12*tr5 - ti11*tr4 ci4 = ti12*ti5 - ti11*ti4 cc(1,m1,k,1,2) = cr2-ci5 cc(1,m1,k,1,5) = cr2+ci5 cc(2,m1,k,1,2) = ci2+cr5 cc(2,m1,k,1,3) = ci3+cr4 cc(1,m1,k,1,3) = cr3-ci4 cc(1,m1,k,1,4) = cr3+ci4 cc(2,m1,k,1,4) = ci3-cr4 cc(2,m1,k,1,5) = ci2-cr5 end do end do end if return end subroutine cmf5kf ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa ) !******************************************************************************* ! !! CMF5KF is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer l1 real(prec) cc(2,in1,l1,ido,5) real(prec) ch(2,in2,l1,5,ido) real(prec) chold1 real(prec) chold2 real(prec) ci2 real(prec) ci3 real(prec) ci4 real(prec) ci5 real(prec) cr2 real(prec) cr3 real(prec) cr4 real(prec) cr5 real(prec) di2 real(prec) di3 real(prec) di4 real(prec) di5 real(prec) dr2 real(prec) dr3 real(prec) dr4 real(prec) dr5 integer i integer im1 integer im2 integer k integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) sn real(prec) ti2 real(prec) ti3 real(prec) ti4 real(prec) ti5 real(prec), parameter :: ti11 = -0.9510565162951536E+00_prec real(prec), parameter :: ti12 = -0.5877852522924731E+00_prec real(prec) tr2 real(prec) tr3 real(prec) tr4 real(prec) tr5 real(prec), parameter :: tr11 = 0.3090169943749474E+00_prec real(prec), parameter :: tr12 = -0.8090169943749474E+00_prec real(prec) wa(ido,4,2) m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 if ( 1 < ido ) then do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti5 = cc(2,m1,k,1,2)-cc(2,m1,k,1,5) ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,5) ti4 = cc(2,m1,k,1,3)-cc(2,m1,k,1,4) ti3 = cc(2,m1,k,1,3)+cc(2,m1,k,1,4) tr5 = cc(1,m1,k,1,2)-cc(1,m1,k,1,5) tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,5) tr4 = cc(1,m1,k,1,3)-cc(1,m1,k,1,4) tr3 = cc(1,m1,k,1,3)+cc(1,m1,k,1,4) ch(1,m2,k,1,1) = cc(1,m1,k,1,1)+tr2+tr3 ch(2,m2,k,1,1) = cc(2,m1,k,1,1)+ti2+ti3 cr2 = cc(1,m1,k,1,1)+tr11*tr2+tr12*tr3 ci2 = cc(2,m1,k,1,1)+tr11*ti2+tr12*ti3 cr3 = cc(1,m1,k,1,1)+tr12*tr2+tr11*tr3 ci3 = cc(2,m1,k,1,1)+tr12*ti2+tr11*ti3 cr5 = ti11*tr5+ti12*tr4 ci5 = ti11*ti5+ti12*ti4 cr4 = ti12*tr5-ti11*tr4 ci4 = ti12*ti5-ti11*ti4 ch(1,m2,k,2,1) = cr2-ci5 ch(1,m2,k,5,1) = cr2+ci5 ch(2,m2,k,2,1) = ci2+cr5 ch(2,m2,k,3,1) = ci3+cr4 ch(1,m2,k,3,1) = cr3-ci4 ch(1,m2,k,4,1) = cr3+ci4 ch(2,m2,k,4,1) = ci3-cr4 ch(2,m2,k,5,1) = ci2-cr5 end do end do do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti5 = cc(2,m1,k,i,2)-cc(2,m1,k,i,5) ti2 = cc(2,m1,k,i,2)+cc(2,m1,k,i,5) ti4 = cc(2,m1,k,i,3)-cc(2,m1,k,i,4) ti3 = cc(2,m1,k,i,3)+cc(2,m1,k,i,4) tr5 = cc(1,m1,k,i,2)-cc(1,m1,k,i,5) tr2 = cc(1,m1,k,i,2)+cc(1,m1,k,i,5) tr4 = cc(1,m1,k,i,3)-cc(1,m1,k,i,4) tr3 = cc(1,m1,k,i,3)+cc(1,m1,k,i,4) ch(1,m2,k,1,i) = cc(1,m1,k,i,1)+tr2+tr3 ch(2,m2,k,1,i) = cc(2,m1,k,i,1)+ti2+ti3 cr2 = cc(1,m1,k,i,1)+tr11*tr2+tr12*tr3 ci2 = cc(2,m1,k,i,1)+tr11*ti2+tr12*ti3 cr3 = cc(1,m1,k,i,1)+tr12*tr2+tr11*tr3 ci3 = cc(2,m1,k,i,1)+tr12*ti2+tr11*ti3 cr5 = ti11*tr5+ti12*tr4 ci5 = ti11*ti5+ti12*ti4 cr4 = ti12*tr5-ti11*tr4 ci4 = ti12*ti5-ti11*ti4 dr3 = cr3-ci4 dr4 = cr3+ci4 di3 = ci3+cr4 di4 = ci3-cr4 dr5 = cr2+ci5 dr2 = cr2-ci5 di5 = ci2-cr5 di2 = ci2+cr5 ch(1,m2,k,2,i) = wa(i,1,1)*dr2+wa(i,1,2)*di2 ch(2,m2,k,2,i) = wa(i,1,1)*di2-wa(i,1,2)*dr2 ch(1,m2,k,3,i) = wa(i,2,1)*dr3+wa(i,2,2)*di3 ch(2,m2,k,3,i) = wa(i,2,1)*di3-wa(i,2,2)*dr3 ch(1,m2,k,4,i) = wa(i,3,1)*dr4+wa(i,3,2)*di4 ch(2,m2,k,4,i) = wa(i,3,1)*di4-wa(i,3,2)*dr4 ch(1,m2,k,5,i) = wa(i,4,1)*dr5+wa(i,4,2)*di5 ch(2,m2,k,5,i) = wa(i,4,1)*di5-wa(i,4,2)*dr5 end do end do end do else if ( na == 1 ) then sn = 1.0E+00_prec / real ( 5 * l1, prec ) do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ti5 = cc(2,m1,k,1,2)-cc(2,m1,k,1,5) ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,5) ti4 = cc(2,m1,k,1,3)-cc(2,m1,k,1,4) ti3 = cc(2,m1,k,1,3)+cc(2,m1,k,1,4) tr5 = cc(1,m1,k,1,2)-cc(1,m1,k,1,5) tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,5) tr4 = cc(1,m1,k,1,3)-cc(1,m1,k,1,4) tr3 = cc(1,m1,k,1,3)+cc(1,m1,k,1,4) ch(1,m2,k,1,1) = sn*(cc(1,m1,k,1,1)+tr2+tr3) ch(2,m2,k,1,1) = sn*(cc(2,m1,k,1,1)+ti2+ti3) cr2 = cc(1,m1,k,1,1)+tr11*tr2+tr12*tr3 ci2 = cc(2,m1,k,1,1)+tr11*ti2+tr12*ti3 cr3 = cc(1,m1,k,1,1)+tr12*tr2+tr11*tr3 ci3 = cc(2,m1,k,1,1)+tr12*ti2+tr11*ti3 cr5 = ti11*tr5+ti12*tr4 ci5 = ti11*ti5+ti12*ti4 cr4 = ti12*tr5-ti11*tr4 ci4 = ti12*ti5-ti11*ti4 ch(1,m2,k,2,1) = sn*(cr2-ci5) ch(1,m2,k,5,1) = sn*(cr2+ci5) ch(2,m2,k,2,1) = sn*(ci2+cr5) ch(2,m2,k,3,1) = sn*(ci3+cr4) ch(1,m2,k,3,1) = sn*(cr3-ci4) ch(1,m2,k,4,1) = sn*(cr3+ci4) ch(2,m2,k,4,1) = sn*(ci3-cr4) ch(2,m2,k,5,1) = sn*(ci2-cr5) end do end do else sn = 1.0E+00_prec / real ( 5 * l1, prec ) do k = 1, l1 do m1 = 1, m1d, im1 ti5 = cc(2,m1,k,1,2) - cc(2,m1,k,1,5) ti2 = cc(2,m1,k,1,2) + cc(2,m1,k,1,5) ti4 = cc(2,m1,k,1,3) - cc(2,m1,k,1,4) ti3 = cc(2,m1,k,1,3) + cc(2,m1,k,1,4) tr5 = cc(1,m1,k,1,2) - cc(1,m1,k,1,5) tr2 = cc(1,m1,k,1,2) + cc(1,m1,k,1,5) tr4 = cc(1,m1,k,1,3) - cc(1,m1,k,1,4) tr3 = cc(1,m1,k,1,3) + cc(1,m1,k,1,4) chold1 = sn * ( cc(1,m1,k,1,1) + tr2 + tr3 ) chold2 = sn * ( cc(2,m1,k,1,1) + ti2 + ti3 ) cr2 = cc(1,m1,k,1,1) + tr11 * tr2 + tr12 * tr3 ci2 = cc(2,m1,k,1,1) + tr11 * ti2 + tr12 * ti3 cr3 = cc(1,m1,k,1,1) + tr12 * tr2 + tr11 * tr3 ci3 = cc(2,m1,k,1,1) + tr12 * ti2 + tr11 * ti3 cc(1,m1,k,1,1) = chold1 cc(2,m1,k,1,1) = chold2 cr5 = ti11 * tr5 + ti12 * tr4 ci5 = ti11 * ti5 + ti12 * ti4 cr4 = ti12 * tr5 - ti11 * tr4 ci4 = ti12 * ti5 - ti11 * ti4 cc(1,m1,k,1,2) = sn * ( cr2 - ci5 ) cc(1,m1,k,1,5) = sn * ( cr2 + ci5 ) cc(2,m1,k,1,2) = sn * ( ci2 + cr5 ) cc(2,m1,k,1,3) = sn * ( ci3 + cr4 ) cc(1,m1,k,1,3) = sn * ( cr3 - ci4 ) cc(1,m1,k,1,4) = sn * ( cr3 + ci4 ) cc(2,m1,k,1,4) = sn * ( ci3 - cr4 ) cc(2,m1,k,1,5) = sn * ( ci2 - cr5 ) end do end do end if return end subroutine cmfgkb ( lot, ido, ip, l1, lid, na, cc, cc1, im1, in1, & ch, ch1, im2, in2, wa ) !******************************************************************************* ! !! CMFGKB is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer ip integer l1 integer lid real(prec) cc(2,in1,l1,ip,ido) real(prec) cc1(2,in1,lid,ip) real(prec) ch(2,in2,l1,ido,ip) real(prec) ch1(2,in2,lid,ip) real(prec) chold1 real(prec) chold2 integer i integer idlj integer im1 integer im2 integer ipp2 integer ipph integer j integer jc integer k integer ki integer l integer lc integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) wa(ido,ip-1,2) real(prec) wai real(prec) war m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 ipp2 = ip + 2 ipph = ( ip + 1 ) / 2 do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,1) = cc1(1,m1,ki,1) ch1(2,m2,ki,1) = cc1(2,m1,ki,1) end do end do do j = 2, ipph jc = ipp2 - j do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,j) = cc1(1,m1,ki,j) + cc1(1,m1,ki,jc) ch1(1,m2,ki,jc) = cc1(1,m1,ki,j) - cc1(1,m1,ki,jc) ch1(2,m2,ki,j) = cc1(2,m1,ki,j) + cc1(2,m1,ki,jc) ch1(2,m2,ki,jc) = cc1(2,m1,ki,j) - cc1(2,m1,ki,jc) end do end do end do do j = 2, ipph do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc1(1,m1,ki,1) = cc1(1,m1,ki,1) + ch1(1,m2,ki,j) cc1(2,m1,ki,1) = cc1(2,m1,ki,1) + ch1(2,m2,ki,j) end do end do end do do l = 2, ipph lc = ipp2 - l do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc1(1,m1,ki,l) = ch1(1,m2,ki,1) + wa(1,l-1,1) * ch1(1,m2,ki,2) cc1(1,m1,ki,lc) = wa(1,l-1,2) * ch1(1,m2,ki,ip) cc1(2,m1,ki,l) = ch1(2,m2,ki,1) + wa(1,l-1,1) * ch1(2,m2,ki,2) cc1(2,m1,ki,lc) = wa(1,l-1,2) * ch1(2,m2,ki,ip) end do end do do j = 3, ipph jc = ipp2 - j idlj = mod ( ( l - 1 ) * ( j - 1 ), ip ) war = wa(1,idlj,1) wai = wa(1,idlj,2) do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc1(1,m1,ki,l) = cc1(1,m1,ki,l) + war * ch1(1,m2,ki,j) cc1(1,m1,ki,lc) = cc1(1,m1,ki,lc) + wai * ch1(1,m2,ki,jc) cc1(2,m1,ki,l) = cc1(2,m1,ki,l) + war * ch1(2,m2,ki,j) cc1(2,m1,ki,lc) = cc1(2,m1,ki,lc) + wai * ch1(2,m2,ki,jc) end do end do end do end do if( 1 < ido .or. na == 1 ) then do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,1) = cc1(1,m1,ki,1) ch1(2,m2,ki,1) = cc1(2,m1,ki,1) end do end do do j = 2, ipph jc = ipp2 - j do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,j) = cc1(1,m1,ki,j) - cc1(2,m1,ki,jc) ch1(1,m2,ki,jc) = cc1(1,m1,ki,j) + cc1(2,m1,ki,jc) ch1(2,m2,ki,jc) = cc1(2,m1,ki,j) - cc1(1,m1,ki,jc) ch1(2,m2,ki,j) = cc1(2,m1,ki,j) + cc1(1,m1,ki,jc) end do end do end do if ( ido == 1 ) then return end if do i = 1, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc(1,m1,k,1,i) = ch(1,m2,k,i,1) cc(2,m1,k,1,i) = ch(2,m2,k,i,1) end do end do end do do j = 2, ip do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc(1,m1,k,j,1) = ch(1,m2,k,1,j) cc(2,m1,k,j,1) = ch(2,m2,k,1,j) end do end do end do do j = 2, ip do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc(1,m1,k,j,i) = wa(i,j-1,1) * ch(1,m2,k,i,j) & - wa(i,j-1,2) * ch(2,m2,k,i,j) cc(2,m1,k,j,i) = wa(i,j-1,1) * ch(2,m2,k,i,j) & + wa(i,j-1,2) * ch(1,m2,k,i,j) end do end do end do end do else do j = 2, ipph jc = ipp2 - j do ki = 1, lid do m1 = 1, m1d, im1 chold1 = cc1(1,m1,ki,j) - cc1(2,m1,ki,jc) chold2 = cc1(1,m1,ki,j) + cc1(2,m1,ki,jc) cc1(1,m1,ki,j) = chold1 cc1(2,m1,ki,jc) = cc1(2,m1,ki,j) - cc1(1,m1,ki,jc) cc1(2,m1,ki,j) = cc1(2,m1,ki,j) + cc1(1,m1,ki,jc) cc1(1,m1,ki,jc) = chold2 end do end do end do end if return end subroutine cmfgkf ( lot, ido, ip, l1, lid, na, cc, cc1, im1, in1, & ch, ch1, im2, in2, wa ) !******************************************************************************* ! !! CMFGKF is an FFTPACK5 auxiliary routine. ! ! License: ! ! Licensed under the GNU General Public License (GPL). ! Copyright (C) 1995-2004, Scientific Computing Division, ! University Corporation for Atmospheric Research ! ! Author: ! ! Paul Swarztrauber ! Richard Valent ! ! Reference: ! ! Paul Swarztrauber, ! Vectorizing the Fast Fourier Transforms, ! in Parallel Computations, ! edited by G. Rodrigue, ! Academic Press, 1982. ! ! Paul Swarztrauber, ! Fast Fourier Transform Algorithms for Vector Computers, ! Parallel Computing, pages 45-63, 1984. ! ! Parameters: ! use fftpack5 implicit none integer ido integer in1 integer in2 integer ip integer l1 integer lid real(prec) cc(2,in1,l1,ip,ido) real(prec) cc1(2,in1,lid,ip) real(prec) ch(2,in2,l1,ido,ip) real(prec) ch1(2,in2,lid,ip) real(prec) chold1 real(prec) chold2 integer i integer idlj integer im1 integer im2 integer ipp2 integer ipph integer j integer jc integer k integer ki integer l integer lc integer lot integer m1 integer m1d integer m2 integer m2s integer na real(prec) sn real(prec) wa(ido,ip-1,2) real(prec) wai real(prec) war m1d = ( lot - 1 ) * im1 + 1 m2s = 1 - im2 ipp2 = ip + 2 ipph = ( ip + 1 ) / 2 do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,1) = cc1(1,m1,ki,1) ch1(2,m2,ki,1) = cc1(2,m1,ki,1) end do end do do j = 2, ipph jc = ipp2 - j do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,j) = cc1(1,m1,ki,j) + cc1(1,m1,ki,jc) ch1(1,m2,ki,jc) = cc1(1,m1,ki,j) - cc1(1,m1,ki,jc) ch1(2,m2,ki,j) = cc1(2,m1,ki,j) + cc1(2,m1,ki,jc) ch1(2,m2,ki,jc) = cc1(2,m1,ki,j) - cc1(2,m1,ki,jc) end do end do end do do j = 2, ipph do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc1(1,m1,ki,1) = cc1(1,m1,ki,1) + ch1(1,m2,ki,j) cc1(2,m1,ki,1) = cc1(2,m1,ki,1) + ch1(2,m2,ki,j) end do end do end do do l = 2, ipph lc = ipp2 - l do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc1(1,m1,ki,l) = ch1(1,m2,ki,1) + wa(1,l-1,1) * ch1(1,m2,ki,2) cc1(1,m1,ki,lc) = - wa(1,l-1,2) * ch1(1,m2,ki,ip) cc1(2,m1,ki,l) = ch1(2,m2,ki,1) + wa(1,l-1,1) * ch1(2,m2,ki,2) cc1(2,m1,ki,lc) = - wa(1,l-1,2) * ch1(2,m2,ki,ip) end do end do do j = 3, ipph jc = ipp2 - j idlj = mod ( ( l - 1 ) * ( j - 1 ), ip ) war = wa(1,idlj,1) wai = -wa(1,idlj,2) do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc1(1,m1,ki,l) = cc1(1,m1,ki,l) + war * ch1(1,m2,ki,j) cc1(1,m1,ki,lc) = cc1(1,m1,ki,lc) + wai * ch1(1,m2,ki,jc) cc1(2,m1,ki,l) = cc1(2,m1,ki,l) + war * ch1(2,m2,ki,j) cc1(2,m1,ki,lc) = cc1(2,m1,ki,lc) + wai * ch1(2,m2,ki,jc) end do end do end do end do if ( 1 < ido ) then do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,1) = cc1(1,m1,ki,1) ch1(2,m2,ki,1) = cc1(2,m1,ki,1) end do end do do j = 2, ipph jc = ipp2 - j do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,j) = cc1(1,m1,ki,j) - cc1(2,m1,ki,jc) ch1(2,m2,ki,j) = cc1(2,m1,ki,j) + cc1(1,m1,ki,jc) ch1(1,m2,ki,jc) = cc1(1,m1,ki,j) + cc1(2,m1,ki,jc) ch1(2,m2,ki,jc) = cc1(2,m1,ki,j) - cc1(1,m1,ki,jc) end do end do end do do i = 1, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc(1,m1,k,1,i) = ch(1,m2,k,i,1) cc(2,m1,k,1,i) = ch(2,m2,k,i,1) end do end do end do do j = 2, ip do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc(1,m1,k,j,1) = ch(1,m2,k,1,j) cc(2,m1,k,j,1) = ch(2,m2,k,1,j) end do end do end do do j = 2, ip do i = 2, ido do k = 1, l1 m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc(1,m1,k,j,i) = wa(i,j-1,1) * ch(1,m2,k,i,j) & + wa(i,j-1,2) * ch(2,m2,k,i,j) cc(2,m1,k,j,i) = wa(i,j-1,1) * ch(2,m2,k,i,j) & - wa(i,j-1,2) * ch(1,m2,k,i,j) end do end do end do end do else if ( na == 1 ) then sn = 1.0E+00_prec / real ( ip * l1, prec ) do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,1) = sn * cc1(1,m1,ki,1) ch1(2,m2,ki,1) = sn * cc1(2,m1,ki,1) end do end do do j = 2, ipph jc = ipp2 - j do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 ch1(1,m2,ki,j) = sn * ( cc1(1,m1,ki,j) - cc1(2,m1,ki,jc) ) ch1(2,m2,ki,j) = sn * ( cc1(2,m1,ki,j) + cc1(1,m1,ki,jc) ) ch1(1,m2,ki,jc) = sn * ( cc1(1,m1,ki,j) + cc1(2,m1,ki,jc) ) ch1(2,m2,ki,jc) = sn * ( cc1(2,m1,ki,j) - cc1(1,m1,ki,jc) ) end do end do end do else sn = 1.0E+00_prec / real ( ip * l1, prec ) do ki = 1, lid m2 = m2s do m1 = 1, m1d, im1 m2 = m2 + im2 cc1(1,m1,ki,1) = sn * cc1(1,m1,ki,1) cc1(2,m1,ki,1) = sn * cc1(2,m1,ki,1) end do end do do j = 2, ipph jc = ipp2 - j do ki = 1, lid do m1 = 1, m1d, im1 chold1 = sn * ( cc1(1,m1,ki,j) - cc1(2,m1,ki,jc) ) chold2 = sn * ( cc1(1,m1,ki,j) + cc1(2,m1,ki,jc) ) cc1(1,m1,ki,j) = chold1 cc1(2,m1,ki,jc) = sn * ( cc1(2,m1,ki,j) - cc1(1,m1,ki,jc) ) cc1(2,m1,ki,j) = sn * ( cc1(2,m1,ki,j) + cc1(1,m1,ki,jc) ) cc1(1,m1,ki,jc) = chold2 end do end do end do end if return end elk-2.3.22/src/PaxHeaders.22528/zfftifc.f900000644002504400250440000000005012337331324016152 xustar000000000000000020 atime=1400746706 20 ctime=1400746708 elk-2.3.22/src/zfftifc.f900000644002504400250440000000200312337331324016711 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: zfftifc ! !INTERFACE: subroutine zfftifc(nd,n,sgn,z) ! !INPUT/OUTPUT PARAMETERS: ! nd : number of dimensions (in,integer) ! n : grid sizes (in,integer(nd)) ! sgn : FFT direction, -1: forward; 1: backward (in,integer) ! z : array to transform (inout,complex(n(1)*n(2)*...*n(nd))) ! !DESCRIPTION: ! Interface to the double-precision complex fast Fourier transform routine. ! This is to allow machine-optimised routines to be used without affecting the ! rest of the code. See routine {\tt nfftifc}. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: nd integer, intent(in) :: n(nd) integer, intent(in) :: sgn complex(8), intent(inout) :: z(*) ! interface to modified FFTPACK5 call cfftnd(nd,n,sgn,z) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gendsocfr.f900000644002504400250440000000005012337331324016471 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gendsocfr.f900000644002504400250440000000171112337331324017235 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine gendsocfr use modmain use modphonon implicit none integer is,ias integer nr,ir,irc real(8) cso complex(8) z1 ! allocatable arrays real(8), allocatable :: vr1(:),vr2(:) real(8), allocatable :: dvr1(:),dvr2(:) if (.not.spinorb) return ! coefficient of spin-orbit coupling cso=1.d0/(4.d0*solsc**2) allocate(vr1(nrmtmax),vr2(nrmtmax)) allocate(dvr1(nrmtmax),dvr2(nrmtmax)) do ias=1,natmtot is=idxis(ias) nr=nrmt(is) vr1(1:nr)=dble(dvsmt(1,1:nr,ias))*y00 vr2(1:nr)=aimag(dvsmt(1,1:nr,ias))*y00 call fderiv(1,nr,spr(:,is),vr1,dvr1) call fderiv(1,nr,spr(:,is),vr2,dvr2) irc=0 do ir=1,nr,lradstp irc=irc+1 z1=cmplx(dvr1(ir),dvr2(ir),8) dsocfr(irc,ias)=(cso/spr(ir,is))*z1 end do end do deallocate(vr1,vr2,dvr1,dvr2) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmvaryc.f900000644002504400250440000000005012337331324016346 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmvaryc.f900000644002504400250440000000262612337331324017120 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmvaryc ! !INTERFACE: subroutine rdmvaryc ! !USES: use modmain use modrdm ! !DESCRIPTION: ! Calculates new {\tt evecsv} from old by using the derivatives of the total ! energy w.r.t. {\tt evecsv}. A single step of steepest-descent is made. ! ! !REVISION HISTORY: ! Created 2009 (Sharma) !EOP !BOC implicit none ! local variables integer ik,ist,jst real(8) t1 complex(8) z1 ! allocatable arrays complex(8), allocatable :: dedc(:,:,:),evecsv(:,:),x(:) ! external functions real(8) dznrm2 complex(8) zdotc external dznrm2,zdotc ! compute the derivative w.r.t. evecsv allocate(dedc(nstsv,nstsv,nkpt)) call rdmdedc(dedc) allocate(evecsv(nstsv,nstsv),x(nstsv)) do ik=1,nkpt ! get the eigenvectors from file call getevecsv(vkl(:,ik),evecsv) ! calculate new evecsv evecsv(:,:)=evecsv(:,:)-taurdmc*dedc(:,:,ik) ! othogonalise evecsv (Gram-Schmidt) do ist=1,nstsv x(:)=evecsv(:,ist) do jst=1,ist-1 z1=zdotc(nstsv,evecsv(:,jst),1,evecsv(:,ist),1) x(:)=x(:)-z1*evecsv(:,jst) end do t1=dznrm2(nstsv,x,1) t1=1.d0/t1 evecsv(:,ist)=t1*x(:) end do ! write new evecsv to file call putevecsv(ik,evecsv) ! end loop over k-points end do deallocate(dedc,evecsv,x) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/mcmillan.f900000644002504400250440000000005012337331324016313 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/mcmillan.f900000644002504400250440000000313112337331324017055 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, A. Sanna, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine mcmillan(w,a2f,lambda,wlog,wrms,tc) use modmain use modphonon implicit none ! arguments real(8), intent(in) :: w(nwplot) real(8), intent(in) :: a2f(nwplot) real(8), intent(out) :: lambda real(8), intent(out) :: wlog real(8), intent(out) :: wrms real(8), intent(out) :: tc ! local variables integer iw real(8) l1,l2,f1,f2,t1 ! allocatable arrays real(8), allocatable :: f(:),g(:) allocate(f(nwplot),g(nwplot)) ! compute the total lambda do iw=1,nwplot if (w(iw).gt.1.d-8) then f(iw)=a2f(iw)/w(iw) else f(iw)=0.d0 end if end do call fderiv(-3,nwplot,w,f,g) lambda=2.d0*g(nwplot) ! compute the logarithmic average frequency do iw=1,nwplot if (w(iw).gt.1.d-8) then f(iw)=a2f(iw)*log(w(iw))/w(iw) else f(iw)=0.d0 end if end do call fderiv(-3,nwplot,w,f,g) t1=(2.d0/lambda)*g(nwplot) wlog=exp(t1) ! compute < w^2 >^(1/2) do iw=1,nwplot if (w(iw).gt.1.d-8) then f(iw)=a2f(iw)*w(iw) else f(iw)=0.d0 end if end do call fderiv(-3,nwplot,w,f,g) t1=(2.d0/lambda)*g(nwplot) wrms=sqrt(abs(t1)) ! compute McMillan-Allen-Dynes superconducting critical temperature t1=(-1.04d0*(1.d0+lambda))/(lambda-mustar-0.62d0*lambda*mustar) tc=(wlog/(1.2d0*kboltz))*exp(t1) l1=2.46d0*(1.d0+3.8d0*mustar) l2=1.82d0*(1.d0+6.3d0*mustar)*(wrms/wlog) f1=(1.d0+(lambda/l1)**(3.d0/2.d0))**(1.d0/3.d0) f2=1.d0+(wrms/wlog-1.d0)*(lambda**2)/(lambda**2+l2**2) tc=tc*f1*f2 deallocate(f,g) return end subroutine elk-2.3.22/src/PaxHeaders.22528/sbesseldm.f900000644002504400250440000000005012337331323016477 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sbesseldm.f900000644002504400250440000000616212337331323017250 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: sbesseldm ! !INTERFACE: subroutine sbesseldm(m,lmax,x,djl) ! !INPUT/OUTPUT PARAMETERS: ! m : order of derivatve (in,integer) ! lmax : maximum order of Bessel function (in,integer) ! x : real argument (in,real) ! djl : array of returned values (out,real(0:lmax)) ! !DESCRIPTION: ! Computes the $m$th derivative of the spherical Bessel function of the first ! kind, $j_l(x)$, for argument $x$ and $l=0,1,\ldots,l_{\rm max}$. For ! $x\ge 1$ this is done by repeatedly using the relations ! \begin{align*} ! \frac{d}{dx}j_l(x)&=\frac{l}{x}j_l(x)-j_{l+1}(x) \\ ! j_{l+1}(x)&=\frac{2l+1}{x}j_l(x)-j_{l-1}(x). ! \end{align*} ! While for $x<1$ the series expansion of the Bessel function is used ! $$ \frac{d^m}{dx^m}j_l(x)=\sum_{i=0}^{\infty} ! \frac{(2i+l)!}{(-2)^ii!(2i+l-m)!(2i+2l+1)!!}x^{2i+l-m}. $$ ! This procedure is numerically stable and accurate to near machine precision ! for $l\le 30$ and $m\le 6$. ! ! !REVISION HISTORY: ! Created March 2003 (JKD) ! Modified to return an array of values, October 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: m integer, intent(in) :: lmax real(8), intent(in) :: x real(8), intent(out) :: djl(0:lmax) ! local variables integer, parameter :: maxm=6 integer, parameter :: maxns=20 integer i,j,l,i0 real(8) t1,sum,x2 integer a(0:maxm+1),a1(0:maxm+1) integer b(0:maxm+1),b1(0:maxm+1) ! automatic arrays real(8) jl(0:lmax+1) ! external functions real(8) factnm,factr external factnm,factr if ((m.lt.0).or.(m.gt.maxm)) then write(*,*) write(*,'("Error(sbesseldm): m out of range : ",I8)') m write(*,*) stop end if if ((lmax.lt.0).or.(lmax.gt.30)) then write(*,*) write(*,'("Error(sbesseldm): lmax out of range : ",I8)') lmax write(*,*) stop end if if ((x.lt.0.d0).or.(x.gt.1.d5)) then write(*,*) write(*,'("Error(sbesseldm): x out of range : ",G18.10)') x write(*,*) stop end if if (m.eq.0) then call sbessel(lmax,x,djl) return end if if (x.gt.1.d0) then call sbessel(lmax+1,x,jl) do l=0,lmax a(1:m+1)=0 a(0)=1 a1(0:m+1)=0 do i=1,m b(0)=0 b1(0)=0 do j=0,i b(j+1)=a(j)*(l-j) b1(j+1)=-a1(j)*(j+l+2) end do do j=0,i b1(j)=b1(j)-a(j) b(j)=b(j)+a1(j) end do a(0:i+1)=b(0:i+1) a1(0:i+1)=b1(0:i+1) end do t1=1.d0 sum=dble(a(0))*jl(l)+dble(a1(0))*jl(l+1) do i=1,m+1 t1=t1*x sum=sum+(dble(a(i))*jl(l)+dble(a1(i))*jl(l+1))/t1 end do djl(l)=sum end do else x2=x**2 do l=0,lmax i0=max((m-l+1)/2,0) j=2*i0+l-m if (j.eq.0) then t1=1.d0 else t1=x**j end if t1=factr(j+m,j)*t1/(factnm(i0,1)*factnm(j+l+m+1,2)*dble((-2)**i0)) sum=t1 do i=i0+1,maxns j=2*i+l t1=-t1*dble((j-1)*j)*x2/dble((j-l)*(j-m-1)*(j-m)*(j+l+1)) if (abs(t1).le.1.d-40) goto 10 sum=sum+t1 end do 10 continue djl(l)=sum end do end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genvclijji.f900000644002504400250440000000005012337331324016643 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvclijji.f900000644002504400250440000001076012337331324017413 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genvclijji ! !INTERFACE: subroutine genvclijji(ikp,vclijji) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ikp : k-point from non-reduced set (in,integer) ! vclijji : Coulomb matrix elements (out,real(nstsv,nstsv,nkpt)) ! !DESCRIPTION: ! Calculates the Coulomb matrix elements of the type $(i-jj-i)$. ! ! !REVISION HISTORY: ! Created June 2008 (Sharma) !EOP !BOC implicit none ! arguments integer, intent(in) :: ikp real(8), intent(out) :: vclijji(nstsv,nstsv,nkpt) ! local variables integer ik,iv(3) integer ig,iq,igq0 integer ist1,ist2 real(8) cfq,v(3),t1 complex(8) zrho0,z1 ! automatic arrays integer idx(nstsv) ! allocatable arrays real(8), allocatable :: vgqc(:,:),tpgqc(:,:),gqc(:),jlgqr(:,:,:) complex(8), allocatable :: apwalm(:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: wfmt1(:,:,:,:,:),wfmt2(:,:,:,:,:) complex(8), allocatable :: wfir1(:,:,:),wfir2(:,:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zvclmt(:,:,:),zvclir(:) ! external functions complex(8) zfinp external zfinp ! allocate local arrays allocate(vgqc(3,ngvec),tpgqc(2,ngvec),gqc(ngvec)) allocate(jlgqr(0:lnpsd,ngvec,nspecies)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(ylmgq(lmmaxvr,ngvec),sfacgq(ngvec,natmtot)) allocate(wfmt1(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfmt2(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir1(ngtot,nspinor,nstsv),wfir2(ngtot,nspinor,nstsv)) allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot),zrhoir(ngtot)) allocate(zvclmt(lmmaxvr,nrcmtmax,natmtot),zvclir(ngtot)) ! factor for long-range term cfq=0.5d0*(omega/pi)**2 ! get the eigenvectors from file for non-reduced k-point ikp call getevecfv(vkl(:,ikp),vgkl(:,:,1,ikp),evecfv) call getevecsv(vkl(:,ikp),evecsv) ! find the matching coefficients call match(ngk(1,ikp),gkc(:,1,ikp),tpgkc(:,:,1,ikp),sfacgk(:,:,1,ikp),apwalm) ! index to all states do ist1=1,nstsv idx(ist1)=ist1 end do ! calculate the wavefunctions for all states of passed non-reduced k-point ikp call genwfsv(.false.,.false.,nstsv,idx,ngk(1,ikp),igkig(:,1,ikp),apwalm, & evecfv,evecsv,wfmt2,ngtot,wfir2) ! start loop over reduced k-point set do ik=1,nkpt ! get the eigenvectors from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! find the matching coefficients call match(ngk(1,ik),gkc(:,1,ik),tpgkc(:,:,1,ik),sfacgk(:,:,1,ik),apwalm) ! calculate the wavefunctions for all states of the reduced k-point call genwfsv(.false.,.false.,nstsv,idx,ngk(1,ik),igkig(:,1,ik),apwalm, & evecfv,evecsv,wfmt1,ngtot,wfir1) ! determine q-vector iv(:)=ivk(:,ik)-ivk(:,ikp) iv(:)=modulo(iv(:),ngridk(:)) iq=iqmap(iv(1),iv(2),iv(3)) v(:)=vkc(:,ik)-vkc(:,ikp) do ig=1,ngvec ! determine G+q-vectors vgqc(:,ig)=vgc(:,ig)+v(:) ! G+q-vector length and (theta, phi) coordinates call sphcrd(vgqc(:,ig),gqc(ig),tpgqc(:,ig)) ! spherical harmonics for G+q-vectors call genylm(lmaxvr,tpgqc(:,ig),ylmgq(:,ig)) end do ! structure factors for G+q call gensfacgp(ngvec,vgqc,ngvec,sfacgq) ! find the shortest G+q-vector call findigp0(ngvec,gqc,igq0) ! compute the required spherical Bessel functions call genjlgpr(lnpsd,gqc,jlgqr) !----------------------------------------------! ! valence-valence-valence contribution ! !----------------------------------------------! do ist1=1,nstsv do ist2=1,nstsv ! calculate the complex overlap density call genzrho(.true.,.true.,wfmt2(:,:,:,:,ist2),wfir2(:,:,ist2), & wfmt1(:,:,:,:,ist1),wfir1(:,:,ist1),zrhomt,zrhoir) ! compute the potential and G=0 coefficient of the density call genzvclmt(nrcmt,nrcmtinr,nrcmtmax,rcmt,nrcmtmax,zrhomt,zvclmt) call zpotcoul(nrcmt,nrcmtinr,nrcmtmax,rcmt,igq0,gqc,jlgqr,ylmgq,sfacgq, & zrhoir,nrcmtmax,zvclmt,zvclir,zrho0) z1=zfinp(.true.,zrhomt,zrhoir,zvclmt,zvclir) t1=cfq*wiq2(iq)*(dble(zrho0)**2+aimag(zrho0)**2) vclijji(ist1,ist2,ik)=wkptnr*dble(z1)+t1 ! end loop over ist2 end do ! end loop over ist1 end do ! end loop over reduced k-point set end do deallocate(vgqc,tpgqc,gqc,jlgqr) deallocate(apwalm,evecfv,evecsv,ylmgq,sfacgq) deallocate(wfmt1,wfmt2,wfir1,wfir2) deallocate(zrhomt,zrhoir,zvclmt,zvclir) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/phonon.f900000644002504400250440000000005012337331324016020 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phonon.f900000644002504400250440000002237112337331324016571 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phonon use modmain use modphonon use modpw use modmpi implicit none ! local variables integer jspn,idm,iv(3) integer is,ia,ias,ip integer ik,jk,ig,igkq integer nwork,n ! use Broyden mixing only integer, parameter :: mtype=3 real(8) vl(3),vc(3) real(8) tp(2),ddv,a,b character(256) fext ! allocatable arrays real(8), allocatable :: evalfv(:,:) real(8), allocatable :: v(:),work(:) complex(8), allocatable :: dyn(:,:) complex(8), allocatable :: apwalm(:,:,:,:,:),apwalmq(:,:,:,:,:) complex(8), allocatable :: dapwalm(:,:,:,:),dapwalmq(:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),devalfv(:,:),devecfv(:,:,:) complex(8), allocatable :: evecsv(:,:),devecsv(:,:) ! initialise universal variables call init0 call init1 call init2 call init4 ! check k-point grid is commensurate with q-point grid iv(:)=mod(ngridk(:),ngridq(:)) if ((iv(1).ne.0).or.(iv(2).ne.0).or.(iv(3).ne.0)) then write(*,*) write(*,'("Error(phonon): k-point grid incommensurate with q-point grid")') write(*,'(" ngridk : ",3I6)') ngridk write(*,'(" ngridq : ",3I6)') ngridq write(*,*) stop end if if (spinpol) then write(*,*) write(*,'("Error(phonon): spin-polarised phonons not yet available")') write(*,*) stop end if ! check spin-spiral de-phasing is not used if (spinsprl.and.ssdph) then write(*,*) write(*,'("Error(phonon): ssdph should be .false. for DFPT phonons")') write(*,*) stop end if ! check for zero atoms if (natmtot.eq.0) return ! read in the density and potentials call readstate ! read Fermi energy from file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr ! generate the first- and second-variational eigenvectors and eigenvalues call genevfsv ! find the occupation numbers call occupy ! size of mixing vector (complex array) n=2*(lmmaxvr*nrmtmax*natmtot+ngtot) if (spinpol) n=n+2*ndmag*(lmmaxvr*nrcmtmax*natmtot+ngtot) ! allocate mixing arrays if (allocated(v)) deallocate(v) allocate(v(n)) ! determine the size of the mixer work array nwork=-1 call mixerifc(mtype,n,v,ddv,nwork,v) allocate(work(nwork)) allocate(dyn(3,natmtot)) ! begin new phonon task 10 continue call dyntask(80,fext) ! if nothing more to do then return if (iqph.eq.0) return if (mp_mpi) then write(*,'("Info(phonon): working on ",A)') 'DYN'//trim(fext) ! open RMSDDVS.OUT open(65,file='RMSDDVS'//trim(fext),action='WRITE',form='FORMATTED') end if ! zero the dynamical matrix row dyn(:,:)=0.d0 ! check to see if mass is considered infinite if (spmass(isph).le.0.d0) goto 20 ! loop over non-reduced k-point set do ik=1,nkptnr ! k+q-vectors in lattice and Cartesian coordinates vkql(:,ik)=vkl(:,ik)+vql(:,iqph) vkqc(:,ik)=vkc(:,ik)+vqc(:,iqph) do jspn=1,nspnfv vl(:)=vkql(:,ik) vc(:)=vkqc(:,ik) ! spin-spiral case if (spinsprl) then if (jspn.eq.1) then vl(:)=vl(:)+0.5d0*vqlss(:) vc(:)=vc(:)+0.5d0*vqcss(:) else vl(:)=vl(:)-0.5d0*vqlss(:) vc(:)=vc(:)-0.5d0*vqcss(:) end if end if ! generate the G+k+q-vectors call gengkvec(ngvec,ivg,vgc,vl,vc,gkmax,ngkmax,ngkq(jspn,ik), & igkqig(:,jspn,ik),vgkql(:,:,jspn,ik),vgkqc(:,:,jspn,ik)) ! generate the spherical coordinates of the G+k+q-vectors do igkq=1,ngkq(jspn,ik) call sphcrd(vgkqc(:,igkq,jspn,ik),gkqc(igkq,jspn,ik), & tpgkqc(:,igkq,jspn,ik)) end do ! generate structure factors for the G+k+q-vectors call gensfacgp(ngkq(jspn,ik),vgkqc(:,:,jspn,ik),ngkmax,sfacgkq(:,:,jspn,ik)) end do end do ! loop over G-vectors do ig=1,ngtot ! G+q-vector in Cartesian coordinates vgqc(:,ig)=vgc(:,ig)+vqc(:,iqph) ! G+q-vector length and (theta, phi) coordinates call sphcrd(vgqc(:,ig),gqc(ig),tp) ! spherical harmonics for G+q-vectors call genylm(lmaxvr,tp,ylmgq(:,ig)) end do ! compute the spherical Bessel functions j_l(|G+q|R_mt) call genjlgpr(lnpsd,gqc,jlgqr) ! structure factors for G+q call gensfacgp(ngvec,vgqc,ngvec,sfacgq) ! generate the smooth step function form factors for G+q do is=1,nspecies call genffacgp(is,gqc,ffacgq(:,is)) end do ! generate the characteristic function derivative call gendcfun ! generate the gradient of the Kohn-Sham potential call gengvsmt ! initialise the potential derivative drhomt(:,:,:)=0.d0 drhoir(:)=0.d0 if (spinpol) then dmagmt(:,:,:,:)=0.d0 dmagir(:,:)=0.d0 end if call dpotks call gendvsig ! initialise the mixer iscl=0 call phmixpack(.true.,n,v) call mixerifc(mtype,n,v,ddv,nwork,work) ! begin the self-consistent loop do iscl=1,maxscl ! compute the Hamiltonian radial integral derivatives call dhmlrad ! zero the density and magnetisation derivatives drhomt(:,:,:)=0.d0 drhoir(:)=0.d0 if (spinpol) then dmagmt(:,:,:,:)=0.d0 dmagir(:,:)=0.d0 end if ! parallel loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evalfv,apwalm,apwalmq,dapwalm,dapwalmq) & !$OMP PRIVATE(evecfv,devalfv,devecfv,evecsv,devecsv) & !$OMP PRIVATE(jk,jspn) !$OMP DO do ik=1,nkptnr allocate(evalfv(nstfv,nspnfv)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(dapwalm(ngkmax,apwordmax,lmmaxapw,nspnfv)) allocate(dapwalmq(ngkmax,apwordmax,lmmaxapw,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(devalfv(nstfv,nspnfv),devecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv),devecsv(nstsv,nstsv)) ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! compute the matching coefficients and derivatives do jspn=1,nspnfv call match(ngk(jspn,ik),gkc(:,jspn,ik),tpgkc(:,:,jspn,ik), & sfacgk(:,:,jspn,ik),apwalm(:,:,:,:,jspn)) call dmatch(iasph,ipph,ngk(jspn,ik),vgkc(:,:,jspn,ik), & apwalm(:,:,:,:,jspn),dapwalm(:,:,:,jspn)) call match(ngkq(jspn,ik),gkqc(:,jspn,ik),tpgkqc(:,:,jspn,ik), & sfacgkq(:,:,jspn,ik),apwalmq(:,:,:,:,jspn)) call dmatch(iasph,ipph,ngkq(jspn,ik),vgkqc(:,:,jspn,ik), & apwalmq(:,:,:,:,jspn),dapwalmq(:,:,:,jspn)) end do ! get the first- and second-variational eigenvalues and eigenvectors from file call getevalfv(vkl(:,ik),evalfv) call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! solve the first-variational eigenvalue equation derivative do jspn=1,nspnfv call deveqnfv(ngk(jspn,ik),ngkq(jspn,ik),igkig(:,jspn,ik), & igkqig(:,jspn,ik),vgkc(:,:,jspn,ik),vgkqc(:,:,jspn,ik),evalfv(:,jspn), & apwalm(:,:,:,:,jspn),apwalmq(:,:,:,:,jspn),dapwalm(:,:,:,jspn), & dapwalmq(:,:,:,jspn),evecfv(:,:,jspn),devalfv(:,jspn),devecfv(:,:,jspn)) end do if (spinsprl) then ! solve the spin-spiral second-variational eigenvalue equation derivative ! call deveqnss(ngk(:,ik),ngkq(:,ik),igkig(:,:,ik),igkqig(:,:,ik),apwalm, & ! dapwalm,devalfv,evecfv,evecfvq,devecfv,evalsv(:,jk),evecsv,devecsv) else ! solve the second-variational eigenvalue equation derivative ! call deveqnsv(ngk(1,ik),ngkq(1,ik),igkig(:,1,ik),igkqig(:,1,ik), & ! vgkqc(:,:,1,ik),apwalm,dapwalm,devalfv,evecfv,evecfvq,devecfv, & ! evalsv(:,jk),evecsv,devecsv) end if !******* devecsv=0.d0 !******* ! write the eigenvalue/vector derivatives to file call putdevalfv(ik,devalfv) call putdevecfv(ik,devecfv) call putdevecsv(ik,devecsv) ! add to the density and magnetisation derivatives call drhomagk(ngk(:,ik),ngkq(:,ik),igkig(:,:,ik),igkqig(:,:,ik), & occsv(:,jk),apwalm,apwalmq,dapwalm,evecfv,devecfv,evecsv,devecsv) deallocate(evalfv,apwalm,apwalmq,dapwalm,dapwalmq) deallocate(evecfv,devalfv,devecfv,evecsv,devecsv) end do !$OMP END DO !$OMP END PARALLEL ! convert from a coarse to a fine radial mesh call zfmtctof(drhomt) do idm=1,ndmag call zfmtctof(dmagmt(:,:,:,idm)) end do ! add gradient contribution to density derivative call gradrhomt ! compute the Kohn-Sham potential derivative call dpotks ! pack interstitial and muffin-tin potential and field into one array call phmixpack(.true.,n,v) ! mix in the old potential and field with the new call mixerifc(mtype,n,v,ddv,nwork,work) ! unpack potential and field call phmixpack(.false.,n,v) write(65,'(G18.10)') ddv call flushifc(65) ! check for convergence if (iscl.ge.2) then if (ddv.lt.epspot) goto 20 end if ! Fourier transform Kohn-Sham potential derivative to G+q-space call gendvsig ! end the self-consistent loop end do write(*,*) write(*,'("Warning(phonon): failed to reach self-consistency after ",I4,& &" loops")') maxscl 20 continue ! close the RMSDDV.OUT file close(65) ! generate the dynamical matrix row from force derivatives call dforce(dyn) ! write dynamical matrix row to file do ias=1,natmtot is=idxis(ias) ia=idxia(ias) do ip=1,3 a=dble(dyn(ip,ias)) b=aimag(dyn(ip,ias)) if (abs(a).lt.1.d-12) a=0.d0 if (abs(b).lt.1.d-12) b=0.d0 write(80,'(2G18.10," : is = ",I4,", ia = ",I4,", ip = ",I4)') a,b,is,ia,ip end do end do close(80) ! delete the non-essential files call phdelete goto 10 end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmminn.f900000644002504400250440000000005012337331324016163 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmminn.f900000644002504400250440000000321712337331324016732 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmminn ! !INTERFACE: subroutine rdmminn ! !USES: use modmain use modrdm use modmpi ! !DESCRIPTION: ! Minimizes the total energy w.r.t. occupation numbers. The steepest-descent ! algorithm is used. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! local variables integer it,n if (maxitn.lt.1) return ! write the Coulomb matrix elements to file call writevclijji ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! calculate derivative of kinetic energy w.r.t. evecsv call rdmdkdc ! begin iteration loop do it=1,maxitn if (mp_mpi) then if (mod(it,10).eq.0) then write(*,'("Info(rdmminn): iteration ",I4," of ",I4)') it,maxitn end if end if ! generate the density and magnetisation call rhomag ! calculate the Coulomb potential call potcoul ! calculate Coulomb potential matrix elements call genvmat(vclmt,vclir,vclmat) ! update occupation numbers and write to file (MPI master process only) if (mp_mpi) call rdmvaryn ! broadcast occupation numbers to all other processes n=nstsv*nkpt call mpi_bcast(occsv,n,mpi_double_precision,0,mpi_comm_kpt,ierror) ! calculate the energy call rdmenergy ! write energy to file if (mp_mpi) then write(61,'(I6,G18.10)') it,engytot call flushifc(61) end if ! end iteration loop end do if (mp_mpi) then write(60,*) write(60,'("Occupation number minimisation done")') write(61,*) if (spinpol) write(63,*) end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genstrain.f900000644002504400250440000000005012337331323016510 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genstrain.f900000644002504400250440000000212512337331323017254 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genstrain use modmain implicit none ! local variables integer i,j,k real(8) a(3,3),b(3,3),t1 ! external functions real(8) ddot,dnrm2 external ddot,dnrm2 nstrain=0 do i=1,3 do j=1,3 ! set strain tensor in lattice coordinates to delta_ij a(:,:)=0.d0 a(i,j)=1.d0 ! symmetrise strain tensor call symmat(a) ! convert to mixed Cartesian-lattice coordinates call r3mtm(ainv,a,b) ! orthogonalise strain tensor to previous tensors do k=1,nstrain t1=-ddot(9,strain(:,:,k),1,b,1) call daxpy(9,t1,strain(:,:,k),1,b,1) end do ! compute the norm t1=dnrm2(9,b,1) if (t1.lt.epslat) cycle ! normalise tensor and store in global array nstrain=nstrain+1 strain(:,:,nstrain)=b(:,:)/t1 end do end do ! zero small components do k=1,nstrain do i=1,3 do j=1,3 if (abs(strain(i,j,k)).lt.epslat) strain(i,j,k)=0.d0 end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/modvars.f900000644002504400250440000000005012337331322016170 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modvars.f900000644002504400250440000000453712337331322016745 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modvars use modmain use modmpi contains subroutine delvars implicit none if (.not.mp_mpi) return ! delete existing variables file open(90,file='VARIABLES.OUT') close(90,status='DELETE') return end subroutine subroutine writevars(vname,l,m,nv,iv,iva,rv,rva,zv,zva,sv,sva) implicit none ! arguments character(*), intent(in) :: vname integer, optional, intent(in) :: l,m integer, optional, intent(in) :: nv integer, optional, intent(in) :: iv integer, optional, intent(in) :: iva(*) real(8), optional, intent(in) :: rv real(8), optional, intent(in) :: rva(*) complex(8), optional, intent(in) :: zv complex(8), optional, intent(in) :: zva(*) character(*), optional, intent(in) :: sv character(*), optional, intent(in) :: sva(*) ! local variables integer i if (.not.wrtvars) return if (.not.mp_mpi) return if ((present(iva)).or.(present(rva)).or.(present(zva)).or.(present(sva))) then if (.not.present(nv)) then write(*,*) write(*,'("Error(writevars): missing argument nv")') write(*,*) stop else if (nv.lt.0) then write(*,*) write(*,'("Error(writevars): nv < 0 : ",I8)') nv write(*,*) stop end if end if end if open(90,file='VARIABLES.OUT',position='APPEND',form='FORMATTED') write(90,*) write(90,'(A)',advance='NO') trim(vname) if (present(l)) write(90,'(I8)',advance='NO') l if (present(m)) write(90,'(I8)',advance='NO') m write(90,*) if (present(iv)) then write(90,'(2I8)') 1,1 write(90,'(I8)') iv else if (present(rv)) then write(90,'(2I8)') 2,1 write(90,'(G22.12)') rv else if (present(zv)) then write(90,'(2I8)') 3,1 write(90,'(2G22.12)') dble(zv),aimag(zv) else if (present(sv)) then write(90,'(2I8)') 4,1 write(90,'(A)') trim(sv) else if (present(iva)) then write(90,'(2I8)') 1,nv do i=1,nv write(90,'(I8)') iva(i) end do else if (present(rva)) then write(90,'(2I8)') 2,nv do i=1,nv write(90,'(G22.12)') rva(i) end do else if (present(zva)) then write(90,'(2I8)') 3,nv do i=1,nv write(90,'(2G22.12)') dble(zva(i)),aimag(zva(i)) end do else if (present(sva)) then write(90,'(2I8)') 4,nv do i=1,nv write(90,'(A)') trim(sva(i)) end do end if close(90) return end subroutine end module elk-2.3.22/src/PaxHeaders.22528/mpi_stub.f900000644002504400250440000000005012337331322016337 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/mpi_stub.f900000644002504400250440000000357412337331322017114 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. ! Stub routines for MPI. module mpi integer mpi_comm_world integer mpi_in_place integer mpi_sum integer mpi_logical integer mpi_double_precision integer mpi_double_complex end module subroutine mpi_init(ierror) implicit none integer, intent(out) :: ierror ierror=0 return end subroutine subroutine mpi_finalize(ierror) implicit none integer, intent(out) :: ierror ierror=0 return end subroutine subroutine mpi_comm_dup(comm,newcomm,ierror) implicit none integer, intent(in) :: comm integer, intent(out) :: newcomm integer, intent(out) :: ierror newcomm=comm ierror=0 return end subroutine subroutine mpi_comm_size(comm,size,ierror) implicit none integer, intent(in) :: comm integer, intent(out) :: size integer, intent(out) :: ierror size=1 ierror=0 return end subroutine subroutine mpi_comm_rank(comm,rank,ierror) implicit none integer, intent(in) :: comm integer, intent(out) :: rank integer, intent(out) :: ierror rank=0 ierror=0 return end subroutine subroutine mpi_barrier(comm,ierror) implicit none integer, intent(in) :: comm integer, intent(out) :: ierror ierror=0 return end subroutine subroutine mpi_bcast(buffer,count,datatype,root,comm,ierror) implicit none real(8), intent(in) :: buffer(*) integer, intent(in) :: count integer, intent(in) :: datatype integer, intent(in) :: root integer, intent(in) :: comm integer, intent(out) :: ierror ierror=0 return end subroutine subroutine mpi_allreduce(sendbuf,recvbuf,count,datatype,op,comm,ierror) implicit none real(8), intent(in) :: sendbuf(*) real(8), intent(in) :: recvbuf(*) integer, intent(in) :: count integer, intent(in) :: datatype integer, intent(in) :: op integer, intent(in) :: comm integer, intent(out) :: ierror ierror=0 return end subroutine elk-2.3.22/src/PaxHeaders.22528/modtddft.f900000644002504400250440000000005012337331322016322 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modtddft.f900000644002504400250440000000272612337331322017075 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modtddft !-----------------------------------------! ! TDDFT linear response variables ! !-----------------------------------------! ! exchange-correlation kernel type integer fxctype(3) ! parameters for long-range correction (LRC) kernel real(8) fxclrc(2) ! number of independent spin components of the f_xc spin tensor integer nscfxc !---------------------------------------------! ! TDDFT real-time evolution variables ! !---------------------------------------------! ! number of laser pulses defining the time-dependent A-field integer npulse ! laser pulse parameters: vector amplitude, peak time, full-width at ! half-maximum, frequency and phase real(8), allocatable :: pulse(:,:) ! total simulation time real(8) tstime ! time step length real(8) dtimes ! number of time-steps integer ntimes ! current time-step integer itimes ! time steps real(8), allocatable :: times(:) ! time-dependent A-field real(8), allocatable :: afieldt(:,:) ! momentum matrix elements in the Cartesian basis complex(8), allocatable :: pmatc(:,:,:,:) ! number of time steps after which observables are written to file integer ntwrite ! the following variables are .true. if the corresponding quantities are to be ! written every ntwrite time steps logical tdrho1d !****** readinput end module elk-2.3.22/src/PaxHeaders.22528/xc_pzca.f900000644002504400250440000000005012337331324016146 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/xc_pzca.f900000644002504400250440000000410012337331324016705 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: xc_pzca ! !INTERFACE: subroutine xc_pzca(n,rho,ex,ec,vx,vc) ! !INPUT/OUTPUT PARAMETERS: ! n : number of density points (in,integer) ! rho : charge density (in,real(n)) ! ex : exchange energy density (out,real(n)) ! ec : correlation energy density (out,real(n)) ! vx : exchange potential (out,real(n)) ! vc : correlation potential (out,real(n)) ! !DESCRIPTION: ! Spin-unpolarised exchange-correlation potential and energy of the ! Perdew-Zunger parameterisation of Ceperley-Alder electron gas: {\it Phys. ! Rev. B} {\bf 23}, 5048 (1981) and {\it Phys. Rev. Lett.} {\bf 45}, 566 ! (1980). ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: rho(n) real(8), intent(out) :: ex(n) real(8), intent(out) :: ec(n) real(8), intent(out) :: vx(n) real(8), intent(out) :: vc(n) ! local variables integer i real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: thrd=1.d0/3.d0, thrd2=2.d0/3.d0, thrd4=4.d0/3.d0 real(8), parameter :: g=-0.1423d0,b1=1.0529d0,b2=0.3334d0 real(8), parameter :: a=0.0311d0,b=-0.048d0,c=0.0020d0,d=-0.0116d0 real(8) p1,p2,r,rs,t1 if (n.le.0) then write(*,*) write(*,'("Error(xc_pzca): invalid n : ",I8)') n write(*,*) stop end if ! prefactors t1=3.d0/(4.d0*pi) p1=t1**thrd p2=t1*(9.d0*pi/4.d0)**thrd do i=1,n r=rho(i) if (r.lt.1.d-12) then ex(i)=0.d0 ec(i)=0.d0 vx(i)=0.d0 vc(i)=0.d0 cycle end if rs=p1/r**thrd ! exchange energy and potential ex(i)=-p2/rs vx(i)=thrd4*ex(i) ! correlation energy and potential if (rs.ge.1.d0) then t1=sqrt(rs) ec(i)=g/(1.d0+b1*t1+b2*rs) vc(i)=ec(i)*(1.d0+(7.d0/6.d0)*b1*t1+thrd4*b2*rs)/(1.d0+b1*t1+b2*rs) else t1=dlog(rs) ec(i)=a*t1+b+c*rs*t1+d*rs vc(i)=a*t1+(b-thrd*a)+thrd2*c*rs*t1+thrd*(2.d0*d-c)*rs end if end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/fermisurf.f900000644002504400250440000000005012337331323016520 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/fermisurf.f900000644002504400250440000000772712337331323017301 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine fermisurf use modmain implicit none ! local variables integer ik,jk,nf,f integer nst,ist integer ist0,ist1 integer jst0,jst1 integer i1,i2,i3 real(8) e0,e1,prd ! allocatable arrays integer, allocatable :: idx(:) real(8), allocatable :: evalfv(:,:),e(:) complex(8), allocatable :: evecfv(:,:,:) complex(8), allocatable :: evecsv(:,:) ! initialise universal variables call init0 call init1 ! read density and potentials from file call readstate ! read Fermi energy from file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr ! begin parallel loop over reduced k-points set !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evalfv,evecfv,evecsv) !$OMP DO do ik=1,nkpt allocate(evalfv(nstfv,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) !$OMP CRITICAL write(*,'("Info(fermisurf): ",I6," of ",I6," k-points")') ik,nkpt !$OMP END CRITICAL ! solve the first- and second-variational eigenvalue equations call eveqn(ik,evalfv,evecfv,evecsv) deallocate(evalfv,evecfv,evecsv) ! end loop over reduced k-points set end do !$OMP END DO !$OMP END PARALLEL ! if iterative diagonalisation is used the eigenvalues must be reordered if (tefvit.and.(.not.spinpol)) then allocate(idx(nstsv),e(nstsv)) do ik=1,nkpt e(:)=evalsv(:,ik) call sortidx(nstsv,e,idx) do ist=1,nstsv evalsv(ist,ik)=e(idx(ist)) end do end do deallocate(idx,e) end if ! number of files to plot (2 for collinear magnetism, 1 otherwise) if (ndmag.eq.1) then nf=2 else nf=1 end if do f=1,nf if (nf.eq.2) then if (f.eq.1) then open(50,file='FERMISURF_UP.OUT',action='WRITE',form='FORMATTED') jst0=1; jst1=nstfv else open(50,file='FERMISURF_DN.OUT',action='WRITE',form='FORMATTED') jst0=nstfv+1; jst1=2*nstfv end if else open(50,file='FERMISURF.OUT',action='WRITE',form='FORMATTED') jst0=1; jst1=nstsv end if ! find the range of eigenvalues which contribute to the Fermi surface (Lars) ist0=jst1; ist1=jst0 do ist=jst0,jst1 e0=minval(evalsv(ist,:)); e1=maxval(evalsv(ist,:)) ! determine if the band crosses the Fermi energy if ((e0.lt.efermi).and.(e1.gt.efermi)) then ist0=min(ist0,ist); ist1=max(ist1,ist) end if end do nst=ist1-ist0+1 if (task.eq.100) then ! write product of eigenstates minus the Fermi energy write(50,'(3I6," : grid size")') np3d(:) do i3=0,ngridk(3)-1 do i2=0,ngridk(2)-1 do i1=0,ngridk(1)-1 ik=ikmapnr(i1,i2,i3) jk=ikmap(i1,i2,i3) prd=1.d0 do ist=ist0,ist1 prd=prd*(evalsv(ist,jk)-efermi) end do write(50,'(4G18.10)') vkc(:,ik),prd end do end do end do else ! write the eigenvalues minus the Fermi energy separately write(50,'(4I6," : grid size, number of states")') np3d(:),nst do i3=0,ngridk(3)-1 do i2=0,ngridk(2)-1 do i1=0,ngridk(1)-1 ik=ikmapnr(i1,i2,i3) jk=ikmap(i1,i2,i3) write(50,'(3G18.10,40F14.8)') vkc(:,ik),evalsv(ist0:ist1,jk)-efermi end do end do end do end if close(50) end do write(*,*) write(*,'("Info(fermisurf):")') if (ndmag.eq.1) then write(*,'(" 3D Fermi surface data written to FERMISURF_UP.OUT and & &FERMISURF_DN.OUT")') else write(*,'(" 3D Fermi surface data written to FERMISURF.OUT")') end if if (task.eq.100) then write(*,'(" in terms of the product of eigenvalues minus the Fermi energy")') else write(*,'(" in terms of separate eigenvalues minus the Fermi energy")') end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/i3minv.f900000644002504400250440000000005012337331323015723 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/i3minv.f900000644002504400250440000000244212337331323016471 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2003-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: i3minv ! !INTERFACE: subroutine i3minv(a,b) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,integer(3,3)) ! b : output matrix (in,integer(3,3)) ! !DESCRIPTION: ! Computes the inverse of a integer $3\times 3$ matrix: $B=A^{-1}$. ! ! !REVISION HISTORY: ! Created November 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: a(3,3) integer, intent(out) :: b(3,3) ! local variables integer m m=a(1,2)*a(2,3)*a(3,1)-a(1,3)*a(2,2)*a(3,1)+a(1,3)*a(2,1)*a(3,2) & -a(1,1)*a(2,3)*a(3,2)+a(1,1)*a(2,2)*a(3,3)-a(1,2)*a(2,1)*a(3,3) if ((m.ne.1).and.(m.ne.-1)) then write(*,*) write(*,'("Error(i3minv): cannot invert matrix")') write(*,'(" Determinant : ",I8)') m write(*,*) stop end if b(1,1)=(a(2,2)*a(3,3)-a(2,3)*a(3,2))*m b(1,2)=(a(1,3)*a(3,2)-a(1,2)*a(3,3))*m b(1,3)=(a(1,2)*a(2,3)-a(1,3)*a(2,2))*m b(2,1)=(a(2,3)*a(3,1)-a(2,1)*a(3,3))*m b(2,2)=(a(1,1)*a(3,3)-a(1,3)*a(3,1))*m b(2,3)=(a(1,3)*a(2,1)-a(1,1)*a(2,3))*m b(3,1)=(a(2,1)*a(3,2)-a(2,2)*a(3,1))*m b(3,2)=(a(1,2)*a(3,1)-a(1,1)*a(3,2))*m b(3,3)=(a(1,1)*a(2,2)-a(1,2)*a(2,1))*m return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/zfpack.f900000644002504400250440000000005012337331324015775 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/zfpack.f900000644002504400250440000000235512337331324016546 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zfpack(tpack,n,nr,nri,ld,zfmt,zfir,v) use modmain implicit none ! arguments logical, intent(in) :: tpack integer, intent(inout) :: n integer, intent(in) :: nr(nspecies),nri(nspecies) integer, intent(in) :: ld complex(8), intent(inout) :: zfmt(lmmaxvr,ld,natmtot) complex(8), intent(inout) :: zfir(ngtot) real(8), intent(out) :: v(*) ! local variables integer is,ias,ir,lmmax,lm if (tpack) then ! pack the function do ias=1,natmtot is=idxis(ias) lmmax=lmmaxinr do ir=1,nr(is) do lm=1,lmmax v(n+1)=dble(zfmt(lm,ir,ias)) v(n+2)=aimag(zfmt(lm,ir,ias)) n=n+2 end do if (ir.eq.nri(is)) lmmax=lmmaxvr end do end do call dcopy(2*ngtot,zfir,1,v(n+1),1) n=n+2*ngtot else ! unpack the function do ias=1,natmtot is=idxis(ias) lmmax=lmmaxinr do ir=1,nr(is) do lm=1,lmmax zfmt(lm,ir,ias)=cmplx(v(n+1),v(n+2),8) n=n+2 end do if (ir.eq.nri(is)) lmmax=lmmaxvr end do end do call dcopy(2*ngtot,v(n+1),1,zfir,1) n=n+2*ngtot end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/mixerifc.f900000644002504400250440000000005012337331323016324 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mixerifc.f900000644002504400250440000000344412337331323017075 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine mixerifc(mtype,n,v,dv,nwork,work) use modmain implicit none ! arguments integer, intent(in) :: mtype integer, intent(in) :: n real(8), intent(inout) :: v(n) real(8), intent(out) :: dv integer, intent(inout) :: nwork real(8), intent(inout) :: work(*) ! local variables select case(mtype) case(0) ! straight mixing if (nwork.le.0) then nwork=n return end if call mixlinear(iscl,beta0,n,v,work,dv) case(1) ! adaptive linear mixing if (nwork.le.0) then nwork=3*n return end if call mixadapt(iscl,beta0,betamax,n,v,work,work(n+1),work(2*n+1),dv) case(2) ! Pulay mixing if (nwork.le.0) then nwork=2*mixsdp*n return end if call mixpulay(iscl,n,mixsdp,v,work,work(n*mixsdp+1),dv) case(3) ! Broyden mixing if (nwork.le.0) then nwork=(4+2*mixsdb)*n+mixsdb**2 return end if call mixbroyden(iscl,n,mixsdb,broydpm(1),broydpm(2),v,work,work(2*n+1), & work(4*n+1),work((4+mixsdb)*n+1),work((4+2*mixsdb)*n+1),dv) case default write(*,*) write(*,'("Error(mixerifc): mtype not defined : ",I8)') mtype write(*,*) stop end select return end subroutine subroutine getmixdata(mtype,mixdescr) implicit none ! arguments integer, intent(in) :: mtype character(256), intent(out) :: mixdescr select case(mtype) case(0) mixdescr='Linear mixing' case(1) mixdescr='Adaptive linear mixing' case(2) mixdescr='Pulay mixing, Chem. Phys. Lett. 73, 393 (1980)' case(3) mixdescr='Broyden mixing, J. Phys. A: Math. Gen. 17, L317 (1984)' case default write(*,*) write(*,'("Error(getmixdata): mixtype not defined : ",I8)') mtype write(*,*) stop end select return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmvaryn.f900000644002504400250440000000005012337331324016361 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmvaryn.f900000644002504400250440000000741312337331324017132 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rdmvaryn ! !INTERFACE: subroutine rdmvaryn ! !USES: use modmain use modrdm use modmpi ! !DESCRIPTION: ! Calculates new occupation numbers from old by using the derivatives of the ! total energy: $n_i^{\rm new} = n_i^{\rm old}-\tau \gamma_i$, where $\tau$ is ! chosen such that $0 \le n_i \le n_{\rm max}$ with ! $$ \gamma_i=\begin{cases} ! g_i(n_{\rm max}-n_i) & g_i > 0 \\ ! g_i n_i & g_i\le 0 \end{cases} $$ ! where $g_i=\partial E/\partial n_i-\kappa$, and $\kappa$ is chosen such that ! $\sum_i\gamma_i=0$. ! ! !REVISION HISTORY: ! Created 2009 (JKD,Sharma) !EOP !BOC implicit none ! local variables integer, parameter :: maxit=10000 integer it,ik,ist real(8), parameter :: eps=1.d-12 real(8) tau,sum,gs,gsp,dgs real(8) kapa,dkapa,t1 ! allocatable arrays real(8), allocatable :: dedn(:,:) real(8), allocatable :: gamma(:,:) ! add constant to occupancies for charge conservation sum=0.d0 do ik=1,nkpt do ist=1,nstsv sum=sum+wkpt(ik)*occsv(ist,ik) end do end do t1=(chgval-sum)/dble(nstsv) occsv(:,:)=occsv(:,:)+t1 ! redistribute charge so that occupancies are in the interval [0,occmax] sum=0.d0 do ik=1,nkpt do ist=1,nstsv if (occsv(ist,ik).gt.occmax) then sum=sum+wkpt(ik)*(occsv(ist,ik)-occmax) occsv(ist,ik)=occmax end if if (occsv(ist,ik).lt.0.d0) then sum=sum+wkpt(ik)*occsv(ist,ik) occsv(ist,ik)=0.d0 end if end do end do do ist=1,nstsv do ik=1,nkpt if (sum.gt.0.d0) then t1=wkpt(ik)*(occmax-occsv(ist,ik)) t1=min(t1,sum) occsv(ist,ik)=occsv(ist,ik)+t1/wkpt(ik) sum=sum-t1 else t1=wkpt(ik)*occsv(ist,ik) t1=min(t1,-sum) occsv(ist,ik)=occsv(ist,ik)-t1/wkpt(ik) sum=sum+t1 end if end do end do allocate(dedn(nstsv,nkpt)) allocate(gamma(nstsv,nkpt)) ! get the derivatives call rdmdedn(dedn) ! find suitable value of kapa such that sum of gamma is 0 gsp=0.d0 kapa=0.d0 dkapa=0.1d0 do it=1,maxit gs=0.d0 sum=0.d0 do ik=1,nkpt do ist=1,nstsv t1=dedn(ist,ik)-kapa if (t1.gt.0.d0) then gamma(ist,ik)=t1*(occmax-occsv(ist,ik)) else gamma(ist,ik)=t1*occsv(ist,ik) end if gs=gs+wkpt(ik)*gamma(ist,ik) sum=sum+wkpt(ik)*gamma(ist,ik)**2 end do end do sum=sqrt(sum) sum=max(sum,1.d0) t1=abs(gs)/sum if (t1.lt.eps) goto 10 if (it.ge.2) then dgs=gs-gsp if (gs*dgs.gt.0.d0) dkapa=-dkapa if (gs*gsp.lt.0.d0) then dkapa=0.5d0*dkapa else dkapa=1.1d0*dkapa end if end if gsp=gs kapa=kapa+dkapa end do write(*,*) write(*,'("Error(rdmvaryn): could not find offset")') write(*,*) stop 10 continue ! write derivatives and occupancies to file call rdmwritededn(dedn) deallocate(dedn) ! normalize gamma if sum of squares is greater than 1 sum=0.d0 do ik=1,nkpt do ist=1,nstsv sum=sum+wkpt(ik)*gamma(ist,ik)**2 end do end do if (sum.gt.1.d0) then t1=1.d0/sqrt(sum) gamma(:,:)=t1*gamma(:,:) end if ! find step size which keeps occupancies in the interval [0,occmax] tau=taurdmn 20 continue if (abs(tau).lt.eps) goto 30 do ik=1,nkpt do ist=1,nstsv t1=occsv(ist,ik)+tau*gamma(ist,ik) if (gamma(ist,ik).gt.0.d0) then if (t1.gt.occmax+eps) then tau=0.75d0*tau goto 20 end if end if if (gamma(ist,ik).lt.0.d0) then if (t1.lt.-eps) then tau=0.75d0*tau goto 20 end if end if end do end do 30 continue ! update occupancies and write to file do ik=1,nkpt do ist=1,nstsv occsv(ist,ik)=occsv(ist,ik)+tau*gamma(ist,ik) end do call putoccsv(ik,occsv(:,ik)) end do deallocate(gamma) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/c_pbe.f900000644002504400250440000000005012337331324015567 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/c_pbe.f900000644002504400250440000000546512337331324016345 0ustar00dewhurstdewhurst00000000000000 ! This routine is based on code written by K. Burke. subroutine c_pbe(beta,rs,z,t,uu,vv,ww,ec,vcup,vcdn) implicit none ! arguments real(8), intent(in) :: beta real(8), intent(in) :: rs real(8), intent(in) :: z real(8), intent(in) :: t real(8), intent(in) :: uu real(8), intent(in) :: vv real(8), intent(in) :: ww real(8), intent(out) :: ec real(8), intent(out) :: vcup real(8), intent(out) :: vcdn ! local variables real(8), parameter :: thrd=1.d0/3.d0 real(8), parameter :: thrdm=-thrd real(8), parameter :: thrd2=2.d0*thrd real(8), parameter :: thrd4=4.d0*thrd real(8), parameter :: sixthm=thrdm/2.d0 real(8), parameter :: gam=0.5198420997897463295d0 real(8), parameter :: fzz=8.d0/(9.d0*gam) real(8), parameter :: gamma=0.0310906908696548950d0 real(8), parameter :: eta=1.d-12 real(8) rtrs,eu,eurs,ep,eprs,alfm,alfrsm,z4,f real(8) ecrs,fz,ecz,comm,g,g3,pon,b,b2,t2,t4 real(8) q4,q5,g4,t6,rsthrd,gz,fac,bg,bec,q8,q9 real(8) hb,hrs,fact0,fact1,hbt,hrst,hz,ht,hzt real(8) fact2,fact3,htt,pref,fact5,h,dvcup,dvcdn real(8) delt delt=beta/gamma rtrs=sqrt(rs) call c_pbe_gcor(0.0310907d0,0.21370d0,7.5957d0,3.5876d0,1.6382d0,0.49294d0, & rtrs,eu,eurs) call c_pbe_gcor(0.01554535d0,0.20548d0,14.1189d0,6.1977d0,3.3662d0,0.62517d0, & rtrs,ep,eprs) call c_pbe_gcor(0.0168869d0,0.11125d0,10.357d0,3.6231d0,0.88026d0,0.49671d0, & rtrs,alfm,alfrsm) z4=z**4 f=((1.d0+z)**thrd4+(1.d0-z)**thrd4-2.d0)/gam ! local contribution to correlation energy density ec=eu*(1.d0-f*z4)+ep*f*z4-alfm*f*(1.d0-z4)/fzz ecrs=eurs*(1.d0-f*z4)+eprs*f*z4-alfrsm*f*(1.d0-z4)/fzz fz=thrd4*((1.d0+z)**thrd-(1.d0-z)**thrd)/gam ecz=4.d0*(z**3)*f*(ep-eu+alfm/fzz)+fz*(z4*ep-z4*eu-(1.d0-z4)*alfm/fzz) comm=ec-rs*ecrs/3.d0-z*ecz ! local contribution to correlation potential vcup=comm+ecz vcdn=comm-ecz g=((1.d0+z)**thrd2+(1.d0-z)**thrd2)/2.d0 g3=g**3 pon=-ec/(g3*gamma) b=delt/(exp(pon)-1.d0) b2=b*b t2=t*t t4=t2*t2 q4=1.d0+b*t2 q5=1.d0+b*t2+b2*t4 ! gradient correction to energy density h=g3*(beta/delt)*log(1.d0+delt*q4*t2/q5) g4=g3*g t6=t4*t2 rsthrd=rs/3.d0 gz=(((1.d0+z)**2+eta)**sixthm-((1.d0-z)**2+eta)**sixthm)/3.d0 fac=delt/b+1.d0 bg=-3.d0*b2*ec*fac/(beta*g4) bec=b2*fac/(beta*g3) q8=q5*q5+delt*q4*q5*t2 q9=1.d0+2.d0*b*t2 hb=-beta*g3*b*t6*(2.d0+b*t2)/q8 hrs=-rsthrd*hb*bec*ecrs fact0=2.d0*delt-6.d0*b fact1=q5*q9+q4*q9*q9 hbt=2.d0*beta*g3*t4*((q4*q5*fact0-delt*fact1)/q8)/q8 hrst=rsthrd*t2*hbt*bec*ecrs hz=3.d0*gz*h/g+hb*(bg*gz+bec*ecz) ht=2.d0*beta*g3*q9/q8 hzt=3.d0*gz*ht/g+hbt*(bg*gz+bec*ecz) fact2=q4*q5+b*t2*(q4*q9+q5) fact3=2.d0*b*q5*q9+delt*fact2 htt=4.d0*beta*g3*t*(2.d0*b/q8-(q9*fact3/q8)/q8) comm=h+hrs+hrst+t2*ht/6.d0+7.d0*t2*t*htt/6.d0 pref=hz-gz*t2*ht/g fact5=gz*(2.d0*ht+t*htt)/g comm=comm-pref*z-uu*htt-vv*ht-ww*(hzt-fact5) ! gradient correction to potential dvcup=comm+pref dvcdn=comm-pref ! add gradient corrections ec=ec+h vcup=vcup+dvcup vcdn=vcdn+dvcdn return end subroutine elk-2.3.22/src/PaxHeaders.22528/init4.f900000644002504400250440000000005012337331323015545 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/init4.f900000644002504400250440000001377112337331323016322 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine init4 use modmain use modphonon use modpw use modvars implicit none ! local variables integer ik,ihk,jspn integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3 real(8) vl(3),vc(3) ! external functions real(8) gaunt external gaunt !---------------------------! ! H+k-vector arrays ! !---------------------------! if (task.eq.135) then hkmax=0.5d0*gmaxvr-epslat call findngkmax(nkpt,vkc,nspnfv,vqcss,ngvec,vgc,hkmax,nhkmax) ! allocate the H+k-vector arrays if (allocated(nhk)) deallocate(nhk) allocate(nhk(nspnfv,nkpt)) if (allocated(ihkig)) deallocate(ihkig) allocate(ihkig(nhkmax,nspnfv,nkpt)) if (allocated(vhkl)) deallocate(vhkl) allocate(vhkl(3,nhkmax,nspnfv,nkpt)) if (allocated(vhkc)) deallocate(vhkc) allocate(vhkc(3,nhkmax,nspnfv,nkpt)) if (allocated(hkc)) deallocate(hkc) allocate(hkc(nhkmax,nspnfv,nkpt)) if (allocated(tphkc)) deallocate(tphkc) allocate(tphkc(2,nhkmax,nspnfv,nkpt)) if (allocated(sfachk)) deallocate(sfachk) allocate(sfachk(nhkmax,natmtot,nspnfv,nkpt)) ! initialise H+k-vectors arrays do ik=1,nkpt do jspn=1,nspnfv vl(:)=vkl(:,ik) vc(:)=vkc(:,ik) ! spin-spiral case if (spinsprl) then if (jspn.eq.1) then vl(:)=vl(:)+0.5d0*vqlss(:) vc(:)=vc(:)+0.5d0*vqcss(:) else vl(:)=vl(:)-0.5d0*vqlss(:) vc(:)=vc(:)-0.5d0*vqcss(:) end if end if ! generate the H+k-vectors call gengkvec(ngvec,ivg,vgc,vl,vc,hkmax,nhkmax,nhk(jspn,ik), & ihkig(:,jspn,ik),vhkl(:,:,jspn,ik),vhkc(:,:,jspn,ik)) ! generate the spherical coordinates of the H+k-vectors do ihk=1,nhk(jspn,ik) call sphcrd(vhkc(:,ihk,jspn,ik),hkc(ihk,jspn,ik),tphkc(:,ihk,jspn,ik)) end do ! generate structure factors for H+k-vectors call gensfacgp(nhk(jspn,ik),vhkc(:,:,jspn,ik),nhkmax,sfachk(:,:,jspn,ik)) end do end do ! write to VARIABLES.OUT call writevars('hkmax',rv=hkmax) call writevars('nhk',nv=nspnfv*nkpt,iva=nhk) do ik=1,nkpt do jspn=1,nspnfv call writevars('ihkig',l=jspn,m=ik,nv=nhk(jspn,ik),iva=ihkig(:,jspn,ik)) end do end do end if !-----------------------------! ! G+k+q-vector arrays ! !-----------------------------! if (task.eq.205) then if (allocated(vkql)) deallocate(vkql) allocate(vkql(3,nkptnr)) if (allocated(vkqc)) deallocate(vkqc) allocate(vkqc(3,nkptnr)) if (allocated(ngkq)) deallocate(ngkq) allocate(ngkq(nspnfv,nkptnr)) if (allocated(igkqig)) deallocate(igkqig) allocate(igkqig(ngkmax,nspnfv,nkptnr)) if (allocated(vgkql)) deallocate(vgkql) allocate(vgkql(3,ngkmax,nspnfv,nkptnr)) if (allocated(vgkqc)) deallocate(vgkqc) allocate(vgkqc(3,ngkmax,nspnfv,nkptnr)) if (allocated(gkqc)) deallocate(gkqc) allocate(gkqc(ngkmax,nspnfv,nkptnr)) if (allocated(tpgkqc)) deallocate(tpgkqc) allocate(tpgkqc(2,ngkmax,nspnfv,nkptnr)) if (allocated(sfacgkq)) deallocate(sfacgkq) allocate(sfacgkq(ngkmax,natmtot,nspnfv,nkptnr)) end if !---------------------------! ! G+q-vector arrays ! !---------------------------! if (task.eq.205) then if (allocated(vgqc)) deallocate(vgqc) allocate(vgqc(3,ngtot)) if (allocated(gqc)) deallocate(gqc) allocate(gqc(ngtot)) if (allocated(jlgqr)) deallocate(jlgqr) allocate(jlgqr(0:lnpsd,ngvec,nspecies)) if (allocated(ylmgq)) deallocate(ylmgq) allocate(ylmgq(lmmaxvr,ngtot)) if (allocated(sfacgq)) deallocate(sfacgq) allocate(sfacgq(ngvec,natmtot)) if (allocated(ffacgq)) deallocate(ffacgq) allocate(ffacgq(ngtot,nspecies)) if (allocated(dcfunig)) deallocate(dcfunig) allocate(dcfunig(ngtot)) if (allocated(dcfunir)) deallocate(dcfunir) allocate(dcfunir(ngtot)) end if !-----------------------------------------------------------------! ! phonon density functional perturbation theory variables ! !-----------------------------------------------------------------! if (task.eq.205) then if (allocated(drhomt)) deallocate(drhomt) allocate(drhomt(lmmaxvr,nrmtmax,natmtot)) if (allocated(drhoir)) deallocate(drhoir) allocate(drhoir(ngtot)) if (allocated(dmagmt)) deallocate(dmagmt) if (allocated(dmagir)) deallocate(dmagir) if (spinpol) then allocate(dmagmt(lmmaxvr,nrmtmax,natmtot,ndmag)) allocate(dmagir(ngtot,ndmag)) end if if (allocated(dvclmt)) deallocate(dvclmt) allocate(dvclmt(lmmaxvr,nrmtmax,natmtot)) if (allocated(dvclir)) deallocate(dvclir) allocate(dvclir(ngtot)) if (allocated(zvnmt)) deallocate(zvnmt) allocate(zvnmt(lmmaxvr,nrmtmax)) if (allocated(dvsmt)) deallocate(dvsmt) allocate(dvsmt(lmmaxvr,nrmtmax,natmtot)) if (allocated(dvsir)) deallocate(dvsir) allocate(dvsir(ngtot)) if (allocated(gvsmt)) deallocate(gvsmt) allocate(gvsmt(lmmaxvr,nrmtmax)) if (allocated(dvsig)) deallocate(dvsig) allocate(dvsig(ngtot)) if (allocated(dbsmt)) deallocate(dbsmt) if (allocated(dbsir)) deallocate(dbsir) if (spinpol) then allocate(dbsmt(lmmaxvr,nrcmtmax,natmtot,ndmag)) allocate(dbsir(ngtot,ndmag)) end if if (allocated(dsocfr)) deallocate(dsocfr) if (spinorb) then allocate(dsocfr(nrcmtmax,natmtot)) end if if (allocated(dhaa)) deallocate(dhaa) allocate(dhaa(lmmaxvr,apwordmax,0:lmaxmat,apwordmax,0:lmaxmat,natmtot)) if (allocated(dhloa)) deallocate(dhloa) allocate(dhloa(lmmaxvr,apwordmax,0:lmaxmat,nlomax,natmtot)) if (allocated(dhlolo)) deallocate(dhlolo) allocate(dhlolo(lmmaxvr,nlomax,nlomax,natmtot)) ! allocate and generate real Gaunt coefficient array if (allocated(gntyyy)) deallocate(gntyyy) allocate(gntyyy(lmmaxmat,lmmaxvr,lmmaxmat)) do l1=0,lmaxmat do m1=-l1,l1 lm1=idxlm(l1,m1) do l2=0,lmaxvr do m2=-l2,l2 lm2=idxlm(l2,m2) do l3=0,lmaxmat do m3=-l3,l3 lm3=idxlm(l3,m3) gntyyy(lm1,lm2,lm3)=gaunt(l1,l2,l3,m1,m2,m3) end do end do end do end do end do end do end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/ggamt_1.f900000644002504400250440000000005012337331323016035 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggamt_1.f900000644002504400250440000000276212337331323016610 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggamt_1 ! !INTERFACE: subroutine ggamt_1(ias,grho,g2rho,g3rho) ! !USES: use modmain ! !DESCRIPTION: ! Spin-unpolarised version of {\tt ggamt\_sp\_1}. ! ! !REVISION HISTORY: ! Created November 2009 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ias real(8), intent(out) :: grho(lmmaxvr,nrmtmax) real(8), intent(out) :: g2rho(lmmaxvr,nrmtmax) real(8), intent(out) :: g3rho(lmmaxvr,nrmtmax) ! local variables integer is,nr,nri,i ! allocatable arrays real(8), allocatable :: grfmt(:,:,:),gvrho(:,:,:),rfmt(:,:) allocate(grfmt(lmmaxvr,nrmtmax,3),gvrho(lmmaxvr,nrmtmax,3)) allocate(rfmt(lmmaxvr,nrmtmax)) is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) ! |grad rho| call gradrfmt(nr,nri,spr(:,is),rhomt(:,:,ias),nrmtmax,grfmt) do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,gvrho(:,:,i)) end do grho(:,1:nr)=sqrt(gvrho(:,1:nr,1)**2+gvrho(:,1:nr,2)**2+gvrho(:,1:nr,3)**2) ! grad^2 rho in spherical coordinates call grad2rfmt(nr,nri,spr(:,is),rhomt(:,:,ias),rfmt) call rbsht(nr,nri,1,rfmt,1,g2rho) ! (grad rho).(grad |grad rho|) call rfsht(nr,nri,1,grho,1,rfmt) call gradrfmt(nr,nri,spr(:,is),rfmt,nrmtmax,grfmt) g3rho(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt) g3rho(:,1:nr)=g3rho(:,1:nr)+gvrho(:,1:nr,i)*rfmt(:,1:nr) end do deallocate(grfmt,gvrho,rfmt) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/ztorflm.f900000644002504400250440000000005012337331323016213 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ztorflm.f900000644002504400250440000000351612337331323016764 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: ztorflm ! !INTERFACE: subroutine ztorflm(lmax,zflm,rflm) ! !INPUT/OUTPUT PARAMETERS: ! lmax : maximum angular momentum (in,integer) ! zflm : coefficients of complex spherical harmonic expansion ! (in,complex((lmax+1)**2))) ! rflm : coefficients of real spherical harmonic expansion ! (out,real((lmax+1)**2))) ! !DESCRIPTION: ! Converts a real function, $z_{lm}$, expanded in terms of complex spherical ! harmonics into a real spherical harmonic expansion, $r_{lm}$: ! $$ r_{lm}=\begin{cases}\frac{1}{\sqrt{2}}\Re(z_{lm}+(-1)^m z_{l-m}) & m>0 \\ ! \frac{1}{\sqrt{2}}\Im(-z_{lm}+(-1)^m z_{l-m}) & m<0 \\ ! \Re(z_{lm}) & m=0 \end{cases}\;. $$ ! See routine {\tt genrlm}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: lmax complex(8), intent(in) :: zflm(*) real(8), intent(out) :: rflm(*) ! local variables integer l,m,lm1,lm2 ! real constant 1/sqrt(2) real(8), parameter :: c1=0.7071067811865475244d0 if (lmax.lt.0) then write(*,*) write(*,'("Error(ztorflm): lmax < 0 : ",I8)') lmax write(*,*) stop end if lm1=0 do l=0,lmax lm2=lm1+2*(l+1) do m=-l,-1 lm1=lm1+1 lm2=lm2-1 if (mod(m,2).ne.0) then rflm(lm1)=-c1*(aimag(zflm(lm1))+aimag(zflm(lm2))) else rflm(lm1)=c1*(aimag(zflm(lm2))-aimag(zflm(lm1))) end if end do lm1=lm1+1 lm2=lm2-1 rflm(lm1)=dble(zflm(lm1)) do m=1,l lm1=lm1+1 lm2=lm2-1 if (mod(m,2).ne.0) then rflm(lm1)=c1*(dble(zflm(lm1))-dble(zflm(lm2))) else rflm(lm1)=c1*(dble(zflm(lm1))+dble(zflm(lm2))) end if end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genpmatc.f900000644002504400250440000000005012337331324016315 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genpmatc.f900000644002504400250440000000540612337331324017066 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 K. Krieger, J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genpmatc ! !INTERFACE: subroutine genpmatc ! !USES: use modmain use modmpi use modtddft ! !DESCRIPTION: ! Generates the momentum matrix, $P_C$, in the `Cartesian' basis. The momentum ! matrix elements in the second-variational basis can then be obtained by ! $$ P_{ij}={\bf c}_i^{\dag}P_C {\bf c}_j, $$ ! where ${\bf c}_i$ is the $i$th second-variational eigenvector. See also ! {\tt genpmat}. ! ! !REVISION HISTORY: ! Created May 2012 (K. Krieger) !EOP !BOC implicit none ! local variables integer ik,ist,ispn integer lp,n,i ! automatic arrays integer idx(nstsv) ! allocatable arrays complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) complex(8), allocatable :: a(:,:),b(:,:) ! allocate global Cartesian momentum matrix elements array if (allocated(pmatc)) deallocate(pmatc) allocate(pmatc(3,nstsv,nstsv,nkpt)) ! index to all states do ist=1,nstsv idx(ist)=ist end do !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(apwalm,evecfv,evecsv) & !$OMP PRIVATE(wfmt,wfir,a,ispn,i) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv),evecsv(nstsv,nstsv)) allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir(ngkmax,nspinor,nstsv),a(nstsv,nstsv),b(nstsv,nstsv)) call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! generate the second-variational wavefunctions for all states call genwfsv(.true.,.true.,nstsv,idx,ngk(:,ik),igkig(:,:,ik),apwalm,evecfv, & evecsv,wfmt,ngkmax,wfir) ! generate moment matrix elements call genpmat(ngk(:,ik),igkig(:,:,ik),vgkc(:,:,:,ik),wfmt,wfir,pmatc(:,:,:,ik)) ! rotate matrix elements to Cartesian basis do i=1,3 a(:,:)=pmatc(i,:,:,ik) call zgemm('N','C',nstsv,nstsv,nstsv,zone,a,nstsv,evecsv,nstsv,zzero,b, & nstsv) call zgemm('N','N',nstsv,nstsv,nstsv,zone,evecsv,nstsv,b,nstsv,zzero,a, & nstsv) pmatc(i,:,:,ik)=a(:,:) end do deallocate(apwalm,evecfv,evecsv) deallocate(wfmt,wfir,a,b) end do !$OMP END DO !$OMP END PARALLEL ! broadcast matrix elements to every process if (np_mpi.gt.1) then n=3*nstsv*nstsv do ik=1,nkpt lp=mod(ik-1,np_mpi) call mpi_bcast(pmatc(:,:,:,ik),n,mpi_double_complex,lp,mpi_comm_world, & ierror) end do end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writelinen.f900000644002504400250440000000005012337331323016676 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writelinen.f900000644002504400250440000000236512337331323017450 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writelinen ! !INTERFACE: subroutine writelinen ! !USES: use modmain ! !DESCRIPTION: ! Writes the linearisation energies for all APW and local-orbital functions to ! the file {\tt LINENGY.OUT}. ! ! !REVISION HISTORY: ! Created February 2004 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ias,l,io,ilo open(50,file='LINENGY'//trim(filext),action='WRITE',form='FORMATTED') do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is,trim(spsymb(is)),ia write(50,'(" APW functions :")') do l=0,lmaxapw do io=1,apword(l,is) write(50,'(" l = ",I2,", order = ",I2," : ",G18.10)') l,io, & apwe(io,l,ias) end do end do write(50,'(" local-orbital functions :")') do ilo=1,nlorb(is) do io=1,lorbord(ilo,is) write(50,'(" l.o. = ",I2,", l = ",I2,", order = ",I2," : ",G18.10)') & ilo,lorbl(ilo,is),io,lorbe(io,ilo,ias) end do end do end do end do close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genspfxcr.f900000644002504400250440000000005012337331324016516 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genspfxcr.f900000644002504400250440000001237412337331324017271 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genspfxcr(tsh,fxcmt,fxcir) use modmain use modtddft use modfxcifc implicit none ! arguments logical, intent(in) :: tsh real(8), intent(out) :: fxcmt(lmmaxvr,nrmtmax,natmtot,4,4) real(8), intent(out) :: fxcir(ngtot,4,4) ! local variables integer idm,is,ia,ias integer nr,nri,ir,ld,i,j,n real(8) t1 ! allocatable arrays real(8), allocatable :: rho(:),rhoup(:),rhodn(:) real(8), allocatable :: mag(:,:),magu(:,:),magm(:) real(8), allocatable :: bxc(:,:),bxcp(:) real(8), allocatable :: fxcuu(:),fxcud(:),fxcdd(:) real(8), allocatable :: fxc(:,:,:) if (.not.spinpol) then write(*,*) write(*,'("Error(genspfxcr): spin-unpolarised calculation")') write(*,*) stop end if ! allocate local arrays n=lmmaxvr*nrmtmax allocate(rho(n),mag(n,ndmag)) allocate(bxc(n,ndmag),fxc(n,4,4)) n=max(n,ngtot) allocate(rhoup(n),rhodn(n)) allocate(magu(3,n),magm(n),bxcp(n)) allocate(fxcuu(n),fxcud(n),fxcdd(n)) !---------------------------! ! muffin-tin kernel ! !---------------------------! ld=lmmaxvr*nrmtmax do is=1,nspecies nr=nrmt(is) nri=nrmtinr(is) n=lmmaxvr*nr do ia=1,natoms(is) ias=idxas(ia,is) ! compute the density in spherical coordinates call rbsht(nr,nri,1,rhomt(:,:,ias),1,rho) do idm=1,ndmag ! magnetisation in spherical coordinates call rbsht(nr,nri,1,magmt(:,:,ias,idm),1,mag(:,idm)) ! B_xc in spherical coordinates call rbsht(nr,nri,1,bxcmt(:,:,ias,idm),1,bxc(:,idm)) end do if (ncmag) then ! non-collinear (use Kubler's trick) do i=1,n ! compute |m| magm(i)=sqrt(mag(i,1)**2+mag(i,2)**2+mag(i,3)**2) ! compute rhoup=(rho+|m|)/2 and rhodn=(rho-|m|)/2 rhoup(i)=0.5d0*(rho(i)+magm(i)) rhodn(i)=0.5d0*(rho(i)-magm(i)) ! unit vector m/|m| t1=1.d0/(magm(i)+1.d-8) magu(1,i)=t1*mag(i,1) magu(2,i)=t1*mag(i,2) magu(3,i)=t1*mag(i,3) ! compute B_xc.(m/|m|) bxcp(i)=bxc(i,1)*magu(1,i)+bxc(i,2)*magu(2,i)+bxc(i,3)*magu(3,i) end do else ! collinear do i=1,n ! compute |m| = |m_z| magm(i)=abs(mag(i,1)) ! compute rhoup=(rho+|m|)/2 and rhodn=(rho-|m|)/2 rhoup(i)=0.5d0*(rho(i)+magm(i)) rhodn(i)=0.5d0*(rho(i)-magm(i)) ! unit vector m/|m| magu(1,i)=0.d0 magu(2,i)=0.d0 if (mag(i,1).gt.0.d0) then magu(3,i)=1.d0 else magu(3,i)=-1.d0 end if ! compute B_xc.(m/|m|) bxcp(i)=bxc(i,1)*magu(3,i) end do end if ! compute f_xc in U(2) x U(2) basis call fxcifc(fxctype,n=n,rhoup=rhoup,rhodn=rhodn,fxcuu=fxcuu,fxcud=fxcud, & fxcdd=fxcdd) ! transform f_xc to O(1) x O(3) basis (upper triangular part) call tfm2213(n,fxcuu,fxcud,fxcdd,magu,magm,bxcp,ld,fxc) do i=1,4 do j=i,4 if (tsh) then ! convert to spherical harmonics if required call rfsht(nr,nri,1,fxc(:,i,j),1,fxcmt(:,:,ias,i,j)) else call dcopy(n,fxc(:,i,j),1,fxcmt(:,:,ias,i,j),1) end if end do end do end do end do !-----------------------------! ! interstitial kernel ! !-----------------------------! if (ncmag) then ! non-collinear do ir=1,ngtot magm(ir)=sqrt(magir(ir,1)**2+magir(ir,2)**2+magir(ir,3)**2) rhoup(ir)=0.5d0*(rhoir(ir)+magm(ir)) rhodn(ir)=0.5d0*(rhoir(ir)-magm(ir)) t1=1.d0/(magm(ir)+1.d-8) magu(1,ir)=t1*magir(ir,1) magu(2,ir)=t1*magir(ir,2) magu(3,ir)=t1*magir(ir,3) ! compute B_xc.(m/|m|) bxcp(ir)=bxcir(ir,1)*magu(1,ir) & +bxcir(ir,2)*magu(2,ir) & +bxcir(ir,3)*magu(3,ir) end do else ! collinear do ir=1,ngtot magm(ir)=abs(magir(ir,1)) rhoup(ir)=0.5d0*(rhoir(ir)+magm(ir)) rhodn(ir)=0.5d0*(rhoir(ir)-magm(ir)) magu(1,ir)=0.d0 magu(2,ir)=0.d0 if (magir(ir,1).gt.0.d0) then magu(3,ir)=1.d0 else magu(3,ir)=-1.d0 end if ! compute B_xc.(m/|m|) bxcp(ir)=bxcir(ir,1)*magu(3,ir) end do end if ! compute f_xc in U(2) x U(2) basis call fxcifc(fxctype,n=ngtot,rhoup=rhoup,rhodn=rhodn,fxcuu=fxcuu,fxcud=fxcud, & fxcdd=fxcdd) ! transform f_xc to O(1) x O(3) basis call tfm2213(ngtot,fxcuu,fxcud,fxcdd,magu,magm,bxcp,ngtot,fxcir) deallocate(rho,mag,bxc,fxc) deallocate(rhoup,rhodn) deallocate(magu,magm,bxcp) deallocate(fxcuu,fxcud,fxcdd) return contains subroutine tfm2213(n,fxcuu,fxcud,fxcdd,magu,magm,bxcp,ld,fxc) implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: fxcuu(n),fxcud(n),fxcdd(n) real(8), intent(in) :: magu(3,n),magm(n),bxcp(n) integer, intent(in) :: ld real(8), intent(out) :: fxc(ld,4,4) ! local variables integer i real(8) t1,t2 do i=1,n ! charge-charge fxc(i,1,1)=0.25d0*(fxcuu(i)+2.d0*fxcud(i)+fxcdd(i)) ! charge-spin t1=0.25d0*(fxcuu(i)-fxcdd(i)) fxc(i,1,2)=t1*magu(1,i) fxc(i,1,3)=t1*magu(2,i) fxc(i,1,4)=t1*magu(3,i) ! spin-spin if (magm(i).gt.1.d-14) then t1=bxcp(i)/magm(i) else t1=0.d0 end if t2=0.25d0*(fxcuu(i)-2.d0*fxcud(i)+fxcdd(i))-t1 fxc(i,2,2)=t2*magu(1,i)*magu(1,i)+t1 fxc(i,2,3)=t2*magu(1,i)*magu(2,i) fxc(i,2,4)=t2*magu(1,i)*magu(3,i) fxc(i,3,3)=t2*magu(2,i)*magu(2,i)+t1 fxc(i,3,4)=t2*magu(2,i)*magu(3,i) fxc(i,4,4)=t2*magu(3,i)*magu(3,i)+t1 end do return end subroutine end subroutine elk-2.3.22/src/PaxHeaders.22528/sdelta.f900000644002504400250440000000005012337331323015772 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sdelta.f900000644002504400250440000000517312337331323016544 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: sdelta ! !INTERFACE: real(8) function sdelta(stype,x) ! !INPUT/OUTPUT PARAMETERS: ! stype : smearing type (in,integer) ! x : real argument (in,real) ! !DESCRIPTION: ! Returns a normalised smooth approximation to the Dirac delta function. These ! functions are defined such that ! $$ \int\tilde{\delta}(x)dx=1. $$ ! The effective width, $w$, of the delta function may be varied by using the ! normalising transformation ! $$ \tilde{\delta}_w(x)\equiv\frac{\tilde{\delta}(x/w)}{w}. $$ ! Currently implimented are: ! \begin{list}{}{\itemsep -2pt} ! \item[0.] Gaussian ! \item[1.] Methfessel-Paxton order 1 ! \item[2.] Methfessel-Paxton order 2 ! \item[3.] Fermi-Dirac ! \item[4.] Square-wave impulse ! \item[5.] Lorentzian ! \end{list} ! See routines {\tt stheta}, {\tt sdelta\_mp}, {\tt sdelta\_fd} and ! {\tt sdelta\_sq}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: stype real(8), intent(in) :: x ! external functions real(8) sdelta_mp,sdelta_fd,sdelta_sq,sdelta_lr external sdelta_mp,sdelta_fd,sdelta_sq,sdelta_lr select case(stype) case(0) sdelta=sdelta_mp(0,x) return case(1) sdelta=sdelta_mp(1,x) return case(2) sdelta=sdelta_mp(2,x) return case(3) sdelta=sdelta_fd(x) return case(4) sdelta=sdelta_sq(x) case(5) sdelta=sdelta_lr(x) case default write(*,*) write(*,'("Error(sdelta): sytpe not defined : ",I8)') stype write(*,*) stop end select end function !EOC !BOP ! !ROUTINE: getsdata ! !INTERFACE: subroutine getsdata(stype,sdescr) ! !INPUT/OUTPUT PARAMETERS: ! stype : smearing type (in,integer) ! sdescr : smearing scheme description (out,character(256)) ! !DESCRIPTION: ! Returns a description of the smearing scheme as string {\tt sdescr} up to ! 256 characters long. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: stype character(256), intent(out) :: sdescr select case(stype) case(0) sdescr='Gaussian' return case(1) sdescr='Methfessel-Paxton order 1, Phys. Rev. B 40, 3616 (1989)' return case(2) sdescr='Methfessel-Paxton order 2, Phys. Rev. B 40, 3616 (1989)' return case(3) sdescr='Fermi-Dirac' return case(4) sdescr='Square-wave impulse' case(5) sdescr='Lorentzian' case default write(*,*) write(*,'("Error(getsdata): sytpe not defined : ",I8)') stype write(*,*) stop end select end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/xc_vbh.f900000644002504400250440000000005012337331324015770 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/xc_vbh.f900000644002504400250440000000635012337331324016540 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 F. Cricchio, J. K. Dewhurst and S. Sharma. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: xc_vbh ! !INTERFACE: subroutine xc_vbh(n,rhoup,rhodn,ex,ec,vxup,vxdn,vcup,vcdn) ! !INPUT/OUTPUT PARAMETERS: ! n : number of density points (in,integer) ! rhoup : spin-up charge density (in,real(n)) ! rhodn : spin-down charge density (in,real(n)) ! ex : exchange energy density (out,real(n)) ! ec : correlation energy density (out,real(n)) ! vxup : spin-up exchange potential (out,real(n)) ! vxdn : spin-down exchange potential (out,real(n)) ! vcup : spin-up correlation potential (out,real(n)) ! vcdn : spin-down correlation potential (out,real(n)) ! !DESCRIPTION: ! Spin-polarised exchange-correlation potential and energy functional of ! von Barth and Hedin: {\it J. Phys. C} {\bf 5}, 1629 (1972). Note that the ! implementation is in Rydbergs in order to follow the paper step by step, at ! the end the potential and energy are converted to Hartree. ! ! !REVISION HISTORY: ! Created September 2007 (F. Cricchio) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: rhoup(n) real(8), intent(in) :: rhodn(n) real(8), intent(out) :: ex(n) real(8), intent(out) :: ec(n) real(8), intent(out) :: vxup(n) real(8), intent(out) :: vxdn(n) real(8), intent(out) :: vcup(n) real(8), intent(out) :: vcdn(n) ! local variables integer i real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: cp=0.0504d0 real(8), parameter :: cf=0.0254d0 real(8), parameter :: rp=30.d0 real(8), parameter :: rf=75.d0 real(8) alpha0,eps0_x,a,gamma real(8) rup,rdn,r,rs,x,zf,zp real(8) fx,fp,ff,epsp_x,mup_x real(8) epsp_c,epsf_c,mup_c,muf_c,vc,tau_c alpha0=(4.d0/(9.d0*pi))**(1.d0/3.d0) eps0_x=(3.d0/2.d0)/(pi*alpha0) a=2.d0**(-1.d0/3.d0) gamma=(4.d0/3.d0)*a/(1.d0-a) do i=1,n rup=rhoup(i); rdn=rhodn(i) ! total density r=rup+rdn if ((rup.ge.0.d0).and.(rdn.ge.0.d0).and.(r.gt.1.d-12)) then ! Wigner-Seitz radius in atomic units (a0=1) rs=(3.d0/(4.d0*pi*r))**(1.d0/3.d0) x=rup/r fx=(1.d0/(1.d0-a))*(x**(4.d0/3.d0)+(1.d0-x)**(4.d0/3.d0)-a) epsp_x=-eps0_x/rs mup_x=(4.d0/3.d0)*epsp_x ! exchange energy ex(i)=epsp_x+(1.d0/gamma)*mup_x*fx zp=rs/rp fp=(1.d0+zp**3)*log(1.d0+1.d0/zp)+0.5d0*zp-zp**2-1.d0/3.d0 zf=rs/rf ff=(1.d0+zf**3)*log(1.d0+1.d0/zf)+0.5d0*zf-zf**2-1.d0/3.d0 epsp_c=-cp*fp epsf_c=-cf*ff vc=gamma*(epsf_c-epsp_c) ! correlation energy ec(i)=epsp_c+(1.d0/gamma)*vc*fx mup_c=-cp*log(1.d0+rp/rs) muf_c=-cf*log(1.d0+rf/rs) tau_c=muf_c-mup_c-(4.d0/3.d0)*(epsf_c-epsp_c) ! exchange potential vxup(i)=mup_x*(2.d0*x)**(1.d0/3.d0) vxdn(i)=mup_x*(2.d0*(1.d0-x))**(1.d0/3.d0) ! correlation potential vcup(i)=vc*(2.d0*x)**(1.d0/3.d0)+mup_c-vc+tau_c*fx vcdn(i)=vc*(2.d0*(1.d0-x))**(1.d0/3.d0)+mup_c-vc+tau_c*fx ! convert from Rybergs to Hartree ex(i)=0.5d0*ex(i) ec(i)=0.5d0*ec(i) vxup(i)=0.5d0*vxup(i) vxdn(i)=0.5d0*vxdn(i) vcup(i)=0.5d0*vcup(i) vcdn(i)=0.5d0*vcdn(i) else ex(i)=0.d0 ec(i)=0.d0 vxup(i)=0.d0 vxdn(i)=0.d0 vcup(i)=0.d0 vcdn(i)=0.d0 end if end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/xc_pbe.f900000644002504400250440000000005012337331324015757 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/xc_pbe.f900000644002504400250440000000752212337331324016531 0ustar00dewhurstdewhurst00000000000000 ! This routine is based on code written by K. Burke. !BOP ! !ROUTINE: xc_pbe ! !INTERFACE: subroutine xc_pbe(n,kappa,mu,beta,rhoup,rhodn,grho,gup,gdn,g2up,g2dn,g3rho, & g3up,g3dn,ex,ec,vxup,vxdn,vcup,vcdn) ! !INPUT/OUTPUT PARAMETERS: ! n : number of density points (in,integer) ! kappa : parameter for large-gradient limit (in,real) ! mu : gradient expansion coefficient (in,real) ! beta : gradient expansion coefficient (in,real) ! rhoup : spin-up charge density (in,real(n)) ! rhodn : spin-down charge density (in,real(n)) ! grho : |grad rho| (in,real(n)) ! gup : |grad rhoup| (in,real(n)) ! gdn : |grad rhodn| (in,real(n)) ! g2up : grad^2 rhoup (in,real(n)) ! g2dn : grad^2 rhodn (in,real(n)) ! g3rho : (grad rho).(grad |grad rho|) (in,real(n)) ! g3up : (grad rhoup).(grad |grad rhoup|) (in,real(n)) ! g3dn : (grad rhodn).(grad |grad rhodn|) (in,real(n)) ! ex : exchange energy density (out,real(n)) ! ec : correlation energy density (out,real(n)) ! vxup : spin-up exchange potential (out,real(n)) ! vxdn : spin-down exchange potential (out,real(n)) ! vcup : spin-up correlation potential (out,real(n)) ! vcdn : spin-down correlation potential (out,real(n)) ! !DESCRIPTION: ! Spin-polarised exchange-correlation potential and energy of the generalised ! gradient approximation functional of J. P. Perdew, K. Burke and M. Ernzerhof ! {\it Phys. Rev. Lett.} {\bf 77}, 3865 (1996) and {\bf 78}, 1396(E) (1997). ! The parameter $\kappa$, which controls the large-gradient limit, can be set ! to $0.804$ or $1.245$ corresponding to the value in the original article or ! the revised version of Y. Zhang and W. Yang, {\it Phys. Rev. Lett.} ! {\bf 80}, 890 (1998). ! ! !REVISION HISTORY: ! Modified routines written by K. Burke, October 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: kappa real(8), intent(in) :: mu real(8), intent(in) :: beta real(8), intent(in) :: rhoup(n) real(8), intent(in) :: rhodn(n) real(8), intent(in) :: grho(n) real(8), intent(in) :: gup(n) real(8), intent(in) :: gdn(n) real(8), intent(in) :: g2up(n) real(8), intent(in) :: g2dn(n) real(8), intent(in) :: g3rho(n) real(8), intent(in) :: g3up(n) real(8), intent(in) :: g3dn(n) real(8), intent(out) :: ex(n) real(8), intent(out) :: ec(n) real(8), intent(out) :: vxup(n) real(8), intent(out) :: vxdn(n) real(8), intent(out) :: vcup(n) real(8), intent(out) :: vcdn(n) ! local variables integer i real(8), parameter :: thrd=1.d0/3.d0 real(8), parameter :: thrd2=2.d0/3.d0 real(8), parameter :: pi=3.1415926535897932385d0 real(8) rup,rdn,r,r2,kf,s,u,v real(8) rs,z,g,ks,ksg real(8) t,uu,vv,ww real(8) g2rho,exup,exdn do i=1,n rup=rhoup(i); rdn=rhodn(i) ! total density r=rup+rdn if ((rup.ge.0.d0).and.(rdn.ge.0.d0).and.(r.gt.1.d-12)) then ! exchange energy density and potential ! spin-up r2=2.d0*rup kf=(r2*3.d0*pi**2)**thrd s=gup(i)/(2.d0*kf*rup) u=g3up(i)/((rup**2)*(2.d0*kf)**3) v=g2up(i)/(rup*(2.d0*kf)**2) call x_pbe(kappa,mu,r2,s,u,v,exup,vxup(i)) ! spin-down r2=2.d0*rdn kf=(r2*3.d0*pi**2)**thrd s=gdn(i)/(2.d0*kf*rdn) u=g3dn(i)/((rdn**2)*(2.d0*kf)**3) v=g2dn(i)/(rdn*(2.d0*kf)**2) call x_pbe(kappa,mu,r2,s,u,v,exdn,vxdn(i)) ! average exchange energy density ex(i)=(exup*rhoup(i)+exdn*rhodn(i))/r ! correlation rs=(3.d0/(4.d0*pi*r))**thrd z=(rhoup(i)-rhodn(i))/r g=((1.d0+z)**thrd2+(1.d0-z)**thrd2)/2.d0 kf=(r*3.d0*pi**2)**thrd ks=sqrt(4.d0*kf/pi) ksg=2.d0*ks*g t=grho(i)/(ksg*r) uu=g3rho(i)/((r**2)*ksg**3) g2rho=g2up(i)+g2dn(i) vv=g2rho/(r*ksg**2) ww=(gup(i)**2-gdn(i)**2-z*grho(i)**2)/(r*r*ksg**2) call c_pbe(beta,rs,z,t,uu,vv,ww,ec(i),vcup(i),vcdn(i)) else ex(i)=0.d0 ec(i)=0.d0 vxup(i)=0.d0 vxdn(i)=0.d0 vcup(i)=0.d0 vcdn(i)=0.d0 end if end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genvmatmt.f900000644002504400250440000000005012337331324016521 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvmatmt.f900000644002504400250440000002027212337331324017270 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genvmatmt !INTERFACE: subroutine genvmatmt ! !USES: use modmain use moddftu ! !DESCRIPTION: ! Calculate the DFT+U potential matrix to be used in the second-variational ! step. See {\it Phys. Rev. B} {\bf 52}, 5467 (1995) and {\it Phys. Rev. B} ! {\bf 80}, 035121 (2009). ! ! !REVISION HISTORY: ! Created November 2007 (FC,FB,LN,JKD) !EOP !BOC ! local variables integer is,ia,ias,i integer l,m1,m2,lm1,lm2 real(8) t1,t2 ! allocatable arrays real(8), allocatable :: enfll(:,:) complex(8), allocatable :: vmfll(:,:,:,:,:) select case(dftu) case(0) vmatmt(:,:,:,:,:)=0.d0 case(1,2) ! fully localised limit (FLL) or around mean field (AFM) call genvmatmt_12 case(3) ! interpolation between the two [PRB 67, 153106 (2003)] allocate(enfll(natmmax,ndftu)) allocate(vmfll(lmmaxdm,nspinor,lmmaxdm,nspinor,natmtot)) dftu=1 call genvmatmt_12 vmfll(:,:,:,:,:)=vmatmt(:,:,:,:,:) enfll(:,:)=engyadu(:,:) dftu=2 call genvmatmt_12 ! read in the interpolation constant (alpha) if required if (readadu) call readalphadu ! reset dftu value dftu=3 do i=1,ndftu is=idftu(1,i) l=idftu(2,i) do ia=1,natoms(is) ias=idxas(ia,is) t1=alphadu(ia,i) t2=1.d0-t1 lm1=l**2 do m1=-l,l lm1=lm1+1 lm2=0 do m2=-l,l lm2=lm2+1 vmatmt(lm1,:,lm2,:,ias)=t1*vmfll(lm1,:,lm2,:,ias) & +t2*vmatmt(lm1,:,lm2,:,ias) end do end do engyadu(ia,i)=t1*enfll(ia,i)+t2*engyadu(ia,i) end do end do deallocate(enfll,vmfll) case default write(*,*) write(*,'("Error(genvmatmt): invalid dftu : ",I8)') dftu write(*,*) stop end select ! add the fixed tensor moment field if required call ftmfield return end subroutine subroutine genvmatmt_12 use modmain use moddftu use modtest implicit none ! local variables integer ispn,jspn integer is,ia,ias,i integer l,m1,m2,m3,m4,nm integer lm1,lm2,lm3,lm4 real(8) u,j,n,n0 real(8) mg(3),mg0(3),mg2 real(8) edc,sum1,sum2 complex(8) z1,z2 ! automatic arrays real(8) vee(-lmaxdm:lmaxdm,-lmaxdm:lmaxdm,-lmaxdm:lmaxdm,-lmaxdm:lmaxdm) complex(8) dm(lmmaxdm,nspinor,lmmaxdm,nspinor) complex(8) dms(nspinor,nspinor) ! zero the DFT+U potential for each atom vmatmt(:,:,:,:,:)=0.d0 ! zero the DFT+U energy for each atom engyadu(:,:)=0.d0 ! zero the interpolation constants alphadu(:,:)=0.d0 ! loop over DFT+U entries do i=1,ndftu is=idftu(1,i) l=idftu(2,i) nm=2*l+1 ! calculate u, v and the Coulomb matrix elements call genveedu(i,u,j,vee) if ((abs(u).lt.1.d-10).and.(abs(j).lt.1.d-10)) cycle ! begin loop over atoms do ia=1,natoms(is) ias=idxas(ia,is) ! copy the density matrix for this atom dm(:,:,:,:)=dmatmt(:,:,:,:,ias) ! trace of density matrix for each spin dms(:,:)=0.d0 do ispn=1,nspinor do jspn=1,nspinor do m1=-l,l lm1=idxlm(l,m1) dms(ispn,jspn)=dms(ispn,jspn)+dm(lm1,ispn,lm1,jspn) end do end do end do ! trace over spin n=dble(dms(1,1)) if (spinpol) n=n+dble(dms(2,2)) n0=n/dble(nspinor*nm) ! magnetisation if (spinpol) then mg(:)=0.d0 mg(3)=dble(dms(1,1)-dms(2,2)) ! non-collinear terms if (ncmag) then mg(1)=dble(dms(1,2)+dms(2,1)) mg(2)=dble(zi*(dms(1,2)-dms(2,1))) end if mg0(:)=mg(:)/dble(nspinor*nm) end if ! around mean field (AFM) approach if (dftu.eq.2) then ! modify density matrices do m1=-l,l lm1=idxlm(l,m1) if (spinpol) then dm(lm1,1,lm1,1)=dm(lm1,1,lm1,1)-(n0+mg0(3)) dm(lm1,2,lm1,2)=dm(lm1,2,lm1,2)-(n0-mg0(3)) ! non-collinear terms if (ncmag) then dm(lm1,1,lm1,2)=dm(lm1,1,lm1,2)-(mg0(1)-zi*mg0(2)) dm(lm1,2,lm1,1)=dm(lm1,2,lm1,1)-(mg0(1)+zi*mg0(2)) end if else ! spin-unpolarised case dm(lm1,1,lm1,1)=dm(lm1,1,lm1,1)-n0 end if end do ! determine alpha [PRB 67,153106 (2003)] sum1=0.d0 do ispn=1,nspinor do m1=-l,l lm1=idxlm(l,m1) do jspn=1,nspinor do m2=-l,l lm2=idxlm(l,m2) sum1=sum1+dble(dm(lm1,ispn,lm2,jspn)*dm(lm2,jspn,lm1,ispn)) end do end do end do end do if (spinpol) then mg2=mg(3)**2 if (ncmag) mg2=mg2+mg(1)**2+mg(2)**2 else mg2=0.d0 end if sum2=n*(1.d0-0.5d0*n/dble(nm))-0.5d0*mg2/dble(nm) if (abs(sum2).gt.1.d-14) then alphadu(ia,i)=sum1/sum2 else alphadu(ia,i)=0.d0 end if end if ! calculation of DFT+U potential and energy ! begin loops over m1 and m2 do m1=-l,l lm1=idxlm(l,m1) do m2=-l,l lm2=idxlm(l,m2) ! begin loops over m3 and m4 do m3=-l,l lm3=idxlm(l,m3) do m4=-l,l lm4=idxlm(l,m4) do ispn=1,nspinor do jspn=1,nspinor z1=dm(lm2,ispn,lm1,ispn)*dm(lm4,jspn,lm3,jspn) z2=dm(lm4,jspn,lm1,ispn)*dm(lm2,ispn,lm3,jspn) engyadu(ia,i)=engyadu(ia,i)+dble(z1-z2)*vee(m1,m3,m2,m4) vmatmt(lm1,ispn,lm2,ispn,ias)=vmatmt(lm1,ispn,lm2,ispn,ias) & +dm(lm4,jspn,lm3,jspn)*vee(m1,m3,m2,m4) vmatmt(lm1,ispn,lm4,jspn,ias)=vmatmt(lm1,ispn,lm4,jspn,ias) & -dm(lm2,ispn,lm3,jspn)*vee(m1,m3,m2,m4) end do end do ! end loops over m3 and m4 end do end do ! end loops over m1 and m2 end do end do ! multiply energy by factor 1/2 engyadu(ia,i)=0.5d0*engyadu(ia,i) ! fully localised limit (FLL) approach: double counting corrections if (dftu.eq.1) then if (spinpol) then ! spin-polarised if (ncmag) then ! non-collinear case ! correction to the energy edc=0.5d0*u*n*(n-1.d0) edc=edc-0.5d0*j*dble(dms(1,1)*(dms(1,1)-1.d0)) edc=edc-0.5d0*j*dble(dms(2,2)*(dms(2,2)-1.d0)) edc=edc-0.5d0*j*dble(dms(1,2)*dms(2,1)) edc=edc-0.5d0*j*dble(dms(2,1)*dms(1,2)) ! correction to the potential do m1=-l,l lm1=idxlm(l,m1) vmatmt(lm1,1,lm1,1,ias)=vmatmt(lm1,1,lm1,1,ias) & -u*(n-0.5d0)+j*(dms(1,1)-0.5d0) vmatmt(lm1,2,lm1,2,ias)=vmatmt(lm1,2,lm1,2,ias) & -u*(n-0.5d0)+j*(dms(2,2)-0.5d0) vmatmt(lm1,1,lm1,2,ias)=vmatmt(lm1,1,lm1,2,ias)+j*dms(1,2) vmatmt(lm1,2,lm1,1,ias)=vmatmt(lm1,2,lm1,1,ias)+j*dms(2,1) end do else ! collinear case ! correction to the energy edc=0.5d0*u*n*(n-1.d0) edc=edc-0.5d0*j*dble(dms(1,1)*(dms(1,1)-1.d0)) edc=edc-0.5d0*j*dble(dms(2,2)*(dms(2,2)-1.d0)) ! correction to the potential do m1=-l,l lm1=idxlm(l,m1) vmatmt(lm1,1,lm1,1,ias)=vmatmt(lm1,1,lm1,1,ias) & -u*(n-0.5d0)+j*(dms(1,1)-0.5d0) vmatmt(lm1,2,lm1,2,ias)=vmatmt(lm1,2,lm1,2,ias) & -u*(n-0.5d0)+j*(dms(2,2)-0.5d0) end do end if else ! spin-unpolarised ! correction to the energy edc=0.5d0*u*n*(n-1.d0) edc=edc-0.5d0*j*n*(n-1.d0) ! correction to the potential do m1=-l,l lm1=idxlm(l,m1) vmatmt(lm1,1,lm1,1,ias)=vmatmt(lm1,1,lm1,1,ias)-u*(n-0.5d0) & +j*(n-0.5d0) end do end if engyadu(ia,i)=engyadu(ia,i)-edc end if ! trace of dmatmt times vmatmt sum1=0.d0 do ispn=1,nspinor do m1=-l,l lm1=idxlm(l,m1) do jspn=1,nspinor do m2=-l,l lm2=idxlm(l,m2) sum1=sum1+dble(dm(lm1,ispn,lm2,jspn)*vmatmt(lm2,jspn,lm1,ispn,ias)) end do end do end do end do ! subtract contribution to the energy of DFT+U potential engyadu(ia,i)=engyadu(ia,i)-sum1 ! end loop over atoms end do ! end loop over species end do ! symmetrise the potential call symdmat(lmaxdm,lmmaxdm,vmatmt) ! write potential matrix to test file call writetest(800,'DFT+U energy for each atom',nv=natmmax*ndftu,tol=1.d-4, & rva=engyadu) ! write U and J parameters to test file call writetest(810,'U and J parameters',nv=2*maxdftu,tol=1.d-4,rva=ujdu) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/getevalfv.f900000644002504400250440000000005012337331323016501 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/getevalfv.f900000644002504400250440000000273712337331323017256 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getevalfv(vpl,evalfv) use modmain implicit none ! arguments real(8), intent(in) :: vpl(3) real(8), intent(out) :: evalfv(nstfv,nspnfv) ! local variables integer isym,ik integer recl,nstfv_,nspnfv_ real(8) vkl_(3),t1 ! find the k-point number call findkpt(vpl,isym,ik) ! find the record length inquire(iolength=recl) vkl_,nstfv_,nspnfv_,evalfv !$OMP CRITICAL open(70,file='EVALFV'//trim(filext),action='READ',form='UNFORMATTED', & access='DIRECT',recl=recl) read(70,rec=ik) vkl_,nstfv_,nspnfv_,evalfv close(70) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getevalfv): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" EVALFV.OUT : ",3G18.10)') vkl_ write(*,*) stop end if if (nstfv.ne.nstfv_) then write(*,*) write(*,'("Error(getevalfv): differing nstfv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstfv write(*,'(" EVALFV.OUT : ",I8)') nstfv_ write(*,*) stop end if if (nspnfv.ne.nspnfv_) then write(*,*) write(*,'("Error(getevalfv): differing nspnfv for k-point ",I8)') ik write(*,'(" current : ",I8)') nspnfv write(*,'(" EVALFV.OUT : ",I8)') nspnfv_ write(*,*) stop end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/r3mv.f900000644002504400250440000000005012337331323015405 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/r3mv.f900000644002504400250440000000143712337331323016156 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3mv ! !INTERFACE: subroutine r3mv(a,x,y) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,real(3,3)) ! x : input vector (in,real(3)) ! y : output vector (out,real(3)) ! !DESCRIPTION: ! Multiplies a real $3\times 3$ matrix with a vector. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3) real(8), intent(in) :: x(3) real(8), intent(out) :: y(3) y(1)=a(1,1)*x(1)+a(1,2)*x(2)+a(1,3)*x(3) y(2)=a(2,1)*x(1)+a(2,2)*x(2)+a(2,3)*x(3) y(3)=a(3,1)*x(1)+a(3,2)*x(2)+a(3,3)*x(3) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genvmat.f900000644002504400250440000000005012337331324016160 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvmat.f900000644002504400250440000000472212337331324016731 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genvmat(vmt,vir,vmat) ! generates potential matrix elements for all states and k-points use modmain use modmpi implicit none ! arguments real(8), intent(in) :: vmt(lmmaxvr,nrmtmax,natmtot),vir(ngtot) complex(8), intent(out) :: vmat(nstsv,nstsv,nkpt) ! local variables integer ik,ist,ispn integer is,ias,n,lp ! automatic arrays integer idx(nstsv) ! allocatable arrays real(8), allocatable :: vmtc(:,:,:),virc(:) complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) ! allocate local arrays allocate(vmtc(lmmaxvr,nrcmtmax,natmtot),virc(ngtot)) ! convert muffin-tin potential to spherical coordinates !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is) !$OMP DO do ias=1,natmtot is=idxis(ias) call rbsht(nrcmt(is),nrcmtinr(is),lradstp,vmt(:,:,ias),1,vmtc(:,:,ias)) end do !$OMP END DO !$OMP END PARALLEL ! multiply potential by characteristic function virc(:)=vir(:)*cfunir(:) ! index to all states do ist=1,nstsv idx(ist)=ist end do ! loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(apwalm,evecfv,evecsv) & !$OMP PRIVATE(wfmt,wfir,ispn) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir(ngtot,nspinor,nstsv)) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! get the eigenvectors from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! calculate the wavefunctions for all states of the input k-point call genwfsv(.false.,.false.,nstsv,idx,ngk(:,ik),igkig(:,:,ik),apwalm, & evecfv,evecsv,wfmt,ngtot,wfir) call genvmatk(vmtc,virc,wfmt,wfir,vmat(:,:,ik)) deallocate(apwalm,evecfv,evecsv,wfmt,wfir) end do !$OMP END DO !$OMP END PARALLEL ! broadcast matrix elements to every process if (np_mpi.gt.1) then n=nstsv*nstsv do ik=1,nkpt lp=mod(ik-1,np_mpi) call mpi_bcast(vmat(:,:,ik),n,mpi_double_complex,lp,mpi_comm_kpt,ierror) end do end if deallocate(vmtc,virc) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dynrtoq.f900000644002504400250440000000005012337331324016217 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dynrtoq.f900000644002504400250440000000172412337331324016767 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dynrtoq(vpl,dynr,dynp) use modmain use modphonon implicit none ! arguments real(8), intent(in) :: vpl(3) complex(8), intent(in) :: dynr(nbph,nbph,nqptnr) complex(8), intent(out) :: dynp(nbph,nbph) ! local variables integer i1,i2,i3,ir,i,j real(8) t1 complex(8) z1 dynp(:,:)=0.d0 ! loop over R-vectors ir=0 do i3=ngridq(3)/2-ngridq(3)+1,ngridq(3)/2 do i2=ngridq(2)/2-ngridq(2)+1,ngridq(2)/2 do i1=ngridq(1)/2-ngridq(1)+1,ngridq(1)/2 ir=ir+1 t1=-twopi*(vpl(1)*dble(i1)+vpl(2)*dble(i2)+vpl(3)*dble(i3)) z1=cmplx(cos(t1),sin(t1),8) do i=1,nbph do j=1,nbph dynp(i,j)=dynp(i,j)+z1*dynr(i,j,ir) end do end do end do end do end do ! symmetrise the dynamical matrix call dynsym(vpl,dynp) return end subroutine elk-2.3.22/src/PaxHeaders.22528/bfieldks.f900000644002504400250440000000005012337331323016301 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/bfieldks.f900000644002504400250440000000262112337331323017046 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine bfieldks use modmain implicit none ! local variables integer idm,is,ia,ias,nrc real(8) cb,t1 if (.not.spinpol) return ! coupling constant of the external field (g_e/4c) cb=gfacte/(4.d0*solsc) !------------------------------------! ! muffin-tin Kohn-Sham field ! !------------------------------------! !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(is,ia,nrc,idm,t1) !$OMP DO do ias=1,natmtot is=idxis(ias) ia=idxia(ias) nrc=nrcmt(is) ! exchange-correlation magnetic field in spherical coordinates do idm=1,ndmag call rbsht(nrc,nrcmtinr(is),lradstp,bxcmt(:,:,ias,idm),1,bsmt(:,:,ias,idm)) end do ! add the external magnetic field t1=cb*(bfcmt(3,ia,is)+bfieldc(3)) bsmt(:,1:nrc,ias,ndmag)=bsmt(:,1:nrc,ias,ndmag)+t1 if (ncmag) then do idm=1,2 t1=cb*(bfcmt(idm,ia,is)+bfieldc(idm)) bsmt(:,1:nrc,ias,idm)=bsmt(:,1:nrc,ias,idm)+t1 end do end if end do !$OMP END DO !$OMP END PARALLEL !--------------------------------------! ! interstitial Kohn-Sham field ! !--------------------------------------! do idm=1,ndmag if (ncmag) then t1=cb*bfieldc(idm) else t1=cb*bfieldc(3) end if bsir(:,idm)=(bxcir(:,idm)+t1)*cfunir(:) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/genevfsv.f900000644002504400250440000000005012337331323016341 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genevfsv.f900000644002504400250440000000240712337331323017110 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genevfsv use modmain use modmpi implicit none ! local variables integer ik,lp ! allocatable arrays real(8), allocatable :: evalfv(:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) ! begin parallel loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evalfv,evecfv,evecsv) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(evalfv(nstfv,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) ! solve the first- and second-variational eigenvalue equations call eveqn(ik,evalfv,evecfv,evecsv) ! write the eigenvalues/vectors to file call putevalfv(ik,evalfv) call putevalsv(ik,evalsv(:,ik)) call putevecfv(ik,evecfv) call putevecsv(ik,evecsv) deallocate(evalfv,evecfv,evecsv) end do !$OMP END DO !$OMP END PARALLEL ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! broadcast eigenvalue array to every process do ik=1,nkpt lp=mod(ik-1,np_mpi) call mpi_bcast(evalsv(:,ik),nstsv,mpi_double_precision,lp,mpi_comm_kpt,ierror) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/gengvec.f900000644002504400250440000000005012337331323016134 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gengvec.f900000644002504400250440000000726312337331323016710 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2012 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: gengvec ! !INTERFACE: subroutine gengvec(ngridg,ngtot,intgv,bvec,gmaxvr,ngvec,ivg,ivgig,igfft,vgc,gc) ! !INPUT/OUTPUT PARAMETERS: ! ngridg : G-vector grid sizes (in,integer(3)) ! ngtot : total number of G-vectors (in,integer) ! intgv : integer grid intervals for each direction (in,intgv(2,3)) ! bvec : reciprocal lattice vectors (in,real(3,3)) ! gmaxvr : G-vector cut-off (in,gmaxvr) ! ngvec : number of G-vectors with G < gmaxvr (out,integer) ! ivg : G-vector integer coordinates (out,integer(3,ngtot)) ! ivgig : map from (i1,i2,i3) to G-vector index (out,integer(intgv(1,1): ! intgv(2,1),intgv(1,2):intgv(2,2),intgv(1,3):intgv(2,3))) ! igfft : map from G-vector array to FFT array (out,integer(ngtot)) ! vgc : G-vectors in Cartesian coordinates (out,real(3,ngtot)) ! gc : length of G-vectors (out,real(ngtot)) ! !DESCRIPTION: ! Generates a set of ${\bf G}$-vectors used for the Fourier transform of the ! charge density and potential and sorts them according to length. Integers ! corresponding to the vectors in lattice coordinates are stored, as well as ! the map from these integer coordinates to the ${\bf G}$-vector index. A map ! from the ${\bf G}$-vector set to the standard FFT array structure is also ! generated. Finally, the number of ${\bf G}$-vectors with magnitude less than ! {\tt gmaxvr} is determined. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) ! Removed modmain and added arguments, September 2012 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ngridg(3) integer, intent(in) :: ngtot integer, intent(in) :: intgv(2,3) real(8), intent(in) :: bvec(3,3) real(8), intent(in) :: gmaxvr integer, intent(out) :: ngvec integer, intent(out) :: ivg(3,ngtot) integer, intent(out) :: ivgig(*) integer, intent(out) :: igfft(ngtot) real(8), intent(out) :: vgc(3,ngtot) real(8), intent(out) :: gc(ngtot) ! local variables integer ig,jg integer i1,i2,i3,j1,j2,j3 real(8) v1(3),v2(3),v3(3) ! allocatable arrays integer, allocatable :: idx(:),ivg0(:,:) real(8), allocatable :: vgc0(:,:),gc0(:) ! allocate local arrays allocate(idx(ngtot),ivg0(3,ngtot)) allocate(vgc0(3,ngtot),gc0(ngtot)) ig=0 do i1=intgv(1,1),intgv(2,1) v1(:)=dble(i1)*bvec(:,1) do i2=intgv(1,2),intgv(2,2) v2(:)=v1(:)+dble(i2)*bvec(:,2) do i3=intgv(1,3),intgv(2,3) v3(:)=v2(:)+dble(i3)*bvec(:,3) ig=ig+1 ! map from G-vector to (i1,i2,i3) index ivg0(1,ig)=i1 ivg0(2,ig)=i2 ivg0(3,ig)=i3 ! G-vector in Cartesian coordinates vgc0(:,ig)=v3(:) ! length of each G-vector gc0(ig)=sqrt(v3(1)**2+v3(2)**2+v3(3)**2) end do end do end do ! sort by vector length call sortidx(ngtot,gc0,idx) ! re-order arrays do ig=1,ngtot jg=idx(ig) ivg(:,ig)=ivg0(:,jg) gc(ig)=gc0(jg) vgc(:,ig)=vgc0(:,jg) end do ! find the number of vectors with G < gmaxvr ngvec=1 do ig=ngtot,1,-1 if (gc(ig).lt.gmaxvr) then ngvec=ig exit end if end do ! generate index arrays do ig=1,ngtot i1=ivg(1,ig) i2=ivg(2,ig) i3=ivg(3,ig) ! map from (i1,i2,i3) to G-vector index j1=i1-intgv(1,1) j2=i2-intgv(1,2) j3=i3-intgv(1,3) jg=j3*ngridg(2)*ngridg(1)+j2*ngridg(1)+j1+1 ivgig(jg)=ig ! Fourier transform index if (i1.ge.0) then j1=i1 else j1=ngridg(1)+i1 end if if (i2.ge.0) then j2=i2 else j2=ngridg(2)+i2 end if if (i3.ge.0) then j3=i3 else j3=ngridg(3)+i3 end if igfft(ig)=j3*ngridg(2)*ngridg(1)+j2*ngridg(1)+j1+1 end do deallocate(idx,ivg0,gc0,vgc0) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/fermisurfbxsf.f900000644002504400250440000000005012337331323017403 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/fermisurfbxsf.f900000644002504400250440000001031512337331323020147 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 F. Cricchio, F. Bultmark and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine fermisurfbxsf use modmain implicit none ! local variables integer ik,nf,f integer nst,ist,i integer ist0,ist1 integer jst0,jst1 integer i1,i2,i3 integer j1,j2,j3 real(8) vc(3,4),e0,e1 ! allocatable arrays integer, allocatable :: idx(:) real(8), allocatable :: evalfv(:,:),e(:) complex(8), allocatable :: evecfv(:,:,:) complex(8), allocatable :: evecsv(:,:) ! initialise universal variables call init0 call init1 ! read density and potentials from file call readstate ! read Fermi energy from file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr ! begin parallel loop over reduced k-points set !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evalfv,evecfv,evecsv) !$OMP DO do ik=1,nkpt allocate(evalfv(nstfv,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) !$OMP CRITICAL write(*,'("Info(fermisurfbxsf): ",I6," of ",I6," k-points")') ik,nkpt !$OMP END CRITICAL ! solve the first- and second-variational eigenvalue equations call eveqn(ik,evalfv,evecfv,evecsv) deallocate(evalfv,evecfv,evecsv) ! end loop over reduced k-points set end do !$OMP END DO !$OMP END PARALLEL ! if iterative diagonalisation is used the eigenvalues must be reordered if (tefvit.and.(.not.spinpol)) then allocate(idx(nstsv),e(nstsv)) do ik=1,nkpt e(:)=evalsv(:,ik) call sortidx(nstsv,e,idx) do ist=1,nstsv evalsv(ist,ik)=e(idx(ist)) end do end do deallocate(idx,e) end if ! plotting box in Cartesian coordinates do i=1,4 vc(:,i)=bvec(:,1)*kptboxl(1,i)+bvec(:,2)*kptboxl(2,i)+bvec(:,3)*kptboxl(3,i) end do ! number of files to plot (2 for collinear magnetism, 1 otherwise) if (ndmag.eq.1) then nf=2 else nf=1 end if do f=1,nf if (nf.eq.2) then if (f.eq.1) then open(50,file='FERMISURF_UP.bxsf',action='WRITE',form='FORMATTED') jst0=1; jst1=nstfv else open(50,file='FERMISURF_DN.bxsf',action='WRITE',form='FORMATTED') jst0=nstfv+1; jst1=2*nstfv end if else open(50,file='FERMISURF.bxsf',action='WRITE',form='FORMATTED') jst0=1; jst1=nstsv end if ! find the range of eigenvalues which contribute to the Fermi surface (Lars) ist0=jst1; ist1=jst0 do ist=jst0,jst1 e0=minval(evalsv(ist,:)); e1=maxval(evalsv(ist,:)) ! determine if the band crosses the Fermi energy if ((e0.lt.efermi).and.(e1.gt.efermi)) then ist0=min(ist0,ist); ist1=max(ist1,ist) end if end do nst=ist1-ist0+1 write(50,'(" BEGIN_INFO")') write(50,'(" # Band-XCRYSDEN-Structure-File for Fermi surface plotting")') write(50,'(" # created by Elk version ",I1.1,".",I1.1,".",I2.2)') version write(50,'(" # Launch as: xcrysden --bxsf FERMISURF(_UP/_DN).bxsf")') write(50,'(" Fermi Energy: ",G18.10)') 0.d0 write(50,'(" END_INFO")') write(50,'(" BEGIN_BLOCK_BANDGRID_3D")') write(50, '(" band_energies")') write(50,'(" BANDGRID_3D_BANDS")') write(50,'(I4)') nst write(50,'(3I6)') ngridk(:)+1 do i=1,4 write(50,'(3G18.10)') vc(:,i) end do do ist=ist0,ist1 write(50,'(" BAND: ",I4)') ist do i1=0,ngridk(1) j1=mod(i1,ngridk(1)) do i2=0,ngridk(2) j2=mod(i2,ngridk(2)) do i3=0,ngridk(3) j3=mod(i3,ngridk(3)) ik=ikmap(j1,j2,j3) write(50,'(G18.10)') evalsv(ist,ik)-efermi end do end do end do end do write(50,'(" END_BANDGRID_3D")') write(50,'(" END_BLOCK_BANDGRID_3D")') close(50) end do write(*,*) write(*,'("Info(fermisurfbxsf):")') if (ndmag.eq.1) then write(*,'(" 3D Fermi surface data written to FERMISURF_UP.bxsf and & &FERMISURF_DN.bxsf")') else write(*,'(" 3D Fermi surface data written to FERMISURF.bxsf")') end if write(*,'(" for plotting with XCrysDen (Fermi energy set to zero)")') write(*,*) write(*,'(" Launch as: xcrysden --bxsf FERMISURF(_UP/_DN).bxsf")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/tm2pol.f900000644002504400250440000000005012337331324015734 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/tm2pol.f900000644002504400250440000000177512337331324016512 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine tm2pol(l,k,w2,tm2p) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! l : angular momentum (in,integer) ! k : k-index of tensor moment (in,integer) ! w2 : modulus square of k-p tensmom (in,real) ! tm2p : polarisation (out,real) ! !DESCRIPTION: ! Calculate the polarisation of each 2-index tensor component of the density ! matrix, see {\it Phys. Rev. B} {\bf 80}, 035121 (2009). ! ! !REVISION HISTORY: ! Created April 2008 (F. Cricchio and L. Nordstrom) !EOP !BOC implicit none ! input variables integer, intent(in) :: l,k real(8),intent(in) :: w2 real(8),intent(out) :: tm2p ! local variables real(8) nlk ! external functions real(8) factnm external factnm nlk=factnm(2*l,1)/sqrt(factnm(2*l-k,1)*factnm(2*l+k+1,1)) tm2p=dble((2*k+1)*(2*l+1))*(nlk**2)*w2 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genwfpw.f900000644002504400250440000000005012337331324016174 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genwfpw.f900000644002504400250440000001361012337331324016741 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genwfpw(vpl,ngp,igpig,vgpl,vgpc,gpc,tpgpc,sfacgp,nhp,vhpc,hpc, & tphpc,sfachp,wfpw) use modmain use modpw implicit none ! arguments real(8), intent(in) :: vpl(3) integer, intent(in) :: ngp(nspnfv) integer, intent(in) :: igpig(ngkmax,nspnfv) real(8), intent(in) :: vgpl(3,ngkmax,nspnfv) real(8), intent(in) :: vgpc(3,ngkmax,nspnfv) real(8), intent(in) :: gpc(ngkmax,nspnfv) real(8), intent(in) :: tpgpc(2,ngkmax,nspnfv) complex(8), intent(in) :: sfacgp(ngkmax,natmtot,nspnfv) integer, intent(in) :: nhp(nspnfv) real(8), intent(in) :: vhpc(3,nhkmax,nspnfv) real(8), intent(in) :: hpc(nhkmax,nspnfv) real(8), intent(in) :: tphpc(2,nhkmax,nspnfv) complex(8), intent(in) :: sfachp(nhkmax,natmtot,nspnfv) complex(8), intent(out) :: wfpw(nhkmax,nspinor,nstsv) ! local variables integer ispn0,ispn1,ispn,jspn integer ist,is,ia,ias,i integer nrc,nrci,irc0,irc integer lmax,l,m,lm,igp,ihp real(8) t0,t1,t2 complex(8) zsum1,zsum2 complex(8) z1,z2,z3,z4 ! automatic arrays integer idx(nstsv) real(8) fr1(nrcmtmax),fr2(nrcmtmax),gr(nrcmtmax) complex(8) ylm(lmmaxvr) ! allocatable arrays real(8), allocatable :: jl(:,:) complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv),evecsv(nstsv,nstsv)) allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir(ngkmax,nspinor,nstsv)) ! get the eigenvectors from file call getevecfv(vpl,vgpl,evecfv) call getevecsv(vpl,evecsv) ! find the matching coefficients do ispn=1,nspnfv call match(ngp(ispn),gpc(:,ispn),tpgpc(:,:,ispn),sfacgp(:,:,ispn), & apwalm(:,:,:,:,ispn)) end do ! index to all states do ist=1,nstsv idx(ist)=ist end do ! calculate the second-variational wavefunctions for all states call genwfsv(.true.,.true.,nstsv,idx,ngp,igpig,apwalm,evecfv,evecsv,wfmt, & ngkmax,wfir) deallocate(apwalm,evecfv,evecsv) ! zero the plane wave coefficients wfpw(:,:,:)=0.d0 !---------------------------! ! interstitial part ! !---------------------------! do jspn=1,nspnfv if (spinsprl) then ispn0=jspn; ispn1=jspn else ispn0=1; ispn1=nspinor end if i=1 do ihp=1,nhp(jspn) do igp=i,ngp(jspn) t1=abs(vhpc(1,ihp,jspn)-vgpc(1,igp,jspn)) & +abs(vhpc(2,ihp,jspn)-vgpc(2,igp,jspn)) & +abs(vhpc(3,ihp,jspn)-vgpc(3,igp,jspn)) if (t1.lt.epslat) then do ist=1,nstsv do ispn=ispn0,ispn1 wfpw(ihp,ispn,ist)=wfir(igp,ispn,ist) end do end do if (igp.eq.i) i=i+1 exit end if end do end do end do !-------------------------! ! muffin-tin part ! !-------------------------! allocate(jl(0:lmaxvr,nrcmtmax)) t0=fourpi/sqrt(omega) ! remove continuation of interstitial function into muffin-tin do jspn=1,nspnfv if (spinsprl) then ispn0=jspn; ispn1=jspn else ispn0=1; ispn1=nspinor end if ! loop over G+p-vectors do igp=1,ngp(jspn) ! generate the conjugate spherical harmonics Y_lm*(G+p) call genylm(lmaxvr,tpgpc(:,igp,jspn),ylm) ylm(:)=conjg(ylm(:)) ! loop over species do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) ! generate spherical Bessel functions do irc=1,nrc t1=gpc(igp,jspn)*rcmt(irc,is) call sbessel(lmaxvr,t1,jl(:,irc)) end do ! loop over atoms do ia=1,natoms(is) ias=idxas(ia,is) z1=t0*sfacgp(igp,ias,jspn) do ist=1,nstsv do ispn=ispn0,ispn1 z2=z1*wfir(igp,ispn,ist) lm=0 do l=0,lmaxvr if (l.le.lmaxinr) then irc0=1 else irc0=nrci+1 end if z3=z2*zil(l) do m=-l,l lm=lm+1 z4=z3*ylm(lm) wfmt(lm,irc0:nrc,ias,ispn,ist)=wfmt(lm,irc0:nrc,ias,ispn,ist) & -z4*jl(l,irc0:nrc) end do end do end do end do end do end do end do end do ! Fourier transform the muffin-tin wavefunctions do jspn=1,nspnfv if (spinsprl) then ispn0=jspn; ispn1=jspn else ispn0=1; ispn1=nspinor end if ! loop over H+p-vectors do ihp=1,nhp(jspn) ! generate the spherical harmonics Y_lm(H+p) call genylm(lmaxvr,tphpc(:,ihp,jspn),ylm) do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) ! generate spherical Bessel functions do irc=1,nrc t1=hpc(ihp,jspn)*rcmt(irc,is) call sbessel(lmaxvr,t1,jl(:,irc)) end do do ia=1,natoms(is) ias=idxas(ia,is) ! conjugate structure factor z1=t0*conjg(sfachp(ihp,ias,jspn)) ! loop over states do ist=1,nstsv do ispn=ispn0,ispn1 do irc=1,nrc if (irc.le.nrci) then lmax=lmaxinr else lmax=lmaxvr end if zsum1=jl(0,irc)*wfmt(1,irc,ias,ispn,ist)*ylm(1) lm=1 do l=1,lmax lm=lm+1 zsum2=wfmt(lm,irc,ias,ispn,ist)*ylm(lm) do m=1-l,l lm=lm+1 zsum2=zsum2+wfmt(lm,irc,ias,ispn,ist)*ylm(lm) end do zsum1=zsum1+jl(l,irc)*zilc(l)*zsum2 end do zsum1=zsum1*rcmt(irc,is)**2 fr1(irc)=dble(zsum1) fr2(irc)=aimag(zsum1) end do call fderiv(-1,nrc,rcmt(:,is),fr1,gr) t1=gr(nrc) call fderiv(-1,nrc,rcmt(:,is),fr2,gr) t2=gr(nrc) ! add to the H+p wavefunction wfpw(ihp,ispn,ist)=wfpw(ihp,ispn,ist)+z1*cmplx(t1,t2,8) end do end do end do end do end do end do deallocate(jl,wfmt,wfir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/sphcover.f900000644002504400250440000000005012337331323016347 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sphcover.f900000644002504400250440000000255412337331323017121 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: sphcover ! !INTERFACE: subroutine sphcover(n,tp) ! !INPUT/OUTPUT PARAMETERS: ! n : number of required points (in,integer) ! tp : (theta, phi) coordinates (out,real(2,n)) ! !DESCRIPTION: ! Produces a set of $N$ points which cover the unit sphere nearly optimally. ! The points in spherical $(\theta,\phi)$ coordinates are generated using the ! explicit `golden section' formula: ! \begin{align*} ! \theta_k&=\arccos\left[1-\left(k-\tfrac{1}{2}\right)\delta z\right] \\ ! \phi_k&=(k-1)\delta\phi, ! \end{align*} ! where $\delta z=2/n$ and $\delta\phi=\pi(1-\sqrt{5})$. ! ! !REVISION HISTORY: ! Created April 2008 (JKD) ! Improved covering, October 2009 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(out) :: tp(2,n) ! local variables integer k real(8), parameter :: pi=3.1415926535897932385d0 real(8) z,dz,p,dp if (n.le.0) then write(*,*) write(*,'("Error(sphcover): n <= 0 : ",I8)') n write(*,*) stop end if dz=2.d0/dble(n) z=1.d0-dz/2.d0 tp(1,1)=acos(z) dp=pi*(1.d0-sqrt(5.d0)) p=0.d0 tp(2,1)=p do k=2,n z=z-dz tp(1,k)=acos(z) p=p+dp tp(2,k)=mod(p,2.d0*pi) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/spline.f900000644002504400250440000000005012337331323016010 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/spline.f900000644002504400250440000000611112337331323016553 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: spline ! !INTERFACE: subroutine spline(n,x,ld,f,cf) ! !INPUT/OUTPUT PARAMETERS: ! n : number of points (in,integer) ! x : abscissa array (in,real(n)) ! ld : leading dimension (in,integer) ! f : input data array (in,real(ld,n)) ! cf : cubic spline coefficients (out,real(3,n)) ! !DESCRIPTION: ! Calculates the coefficients of a cubic spline fitted to input data. In other ! words, given a set of data points $f_i$ defined at $x_i$, where ! $i=1\ldots n$, the coefficients $c_j^i$ are determined such that ! $$ y_i(x)=f_i+c_1^i(x-x_i)+c_2^i(x-x_i)^2+c_3^i(x-x_i)^3, $$ ! is the interpolating function for $x\in[x_i,x_{i+1})$. The coefficients are ! determined piecewise by fitting a cubic polynomial to adjacent points. ! ! !REVISION HISTORY: ! Created November 2011 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: x(n) integer, intent(in) :: ld real(8), intent(in) :: f(ld,n) real(8), intent(out) :: cf(3,n) ! local variables integer i real(8) x0,x1,x2,x3,y0,y1,y2,y3 real(8) c1,c2,c3 real(8) t0,t1,t2,t3,t4,t5,t6 if (n.le.0) then write(*,*) write(*,'("Error(spline): n <= 0 : ",I8)') n write(*,*) stop end if if (n.eq.1) then cf(:,1)=0.d0 return end if if (n.eq.2) then cf(1,1)=(f(1,2)-f(1,1))/(x(2)-x(1)) cf(2:3,1)=0.d0 cf(1,2)=cf(1,1) cf(2:3,2)=0.d0 return end if if (n.eq.3) then x0=x(1) x1=x(2)-x0 x2=x(3)-x0 y0=f(1,1) y1=f(1,2)-y0 y2=f(1,3)-y0 t0=1.d0/(x1*x2*(x2-x1)) t1=x1*y2 t2=x2*y1 c1=t0*(x2*t2-x1*t1) c2=t0*(t1-t2) cf(1,1)=c1 cf(2,1)=c2 cf(3,1)=0.d0 t3=2.d0*c2 cf(1,2)=c1+t3*x1 cf(2,2)=c2 cf(3,2)=0.d0 cf(1,3)=c1+t3*x2 cf(2,3)=c2 cf(3,3)=0.d0 return end if x0=x(1) x1=x(2)-x0 x2=x(3)-x0 x3=x(4)-x0 y0=f(1,1) y1=f(1,2)-y0 y2=f(1,3)-y0 y3=f(1,4)-y0 t0=1.d0/(x1*x2*x3*(x1-x2)*(x1-x3)*(x2-x3)) t1=x1*x2*y3 t2=x2*x3*y1 t3=x3*x1*y2 t4=x1**2 t5=x2**2 t6=x3**2 y1=t3*t6-t1*t5 y3=t2*t5-t3*t4 y2=t1*t4-t2*t6 c1=t0*(x1*y1+x2*y2+x3*y3) c2=-t0*(y1+y2+y3) c3=t0*(t1*(x1-x2)+t2*(x2-x3)+t3*(x3-x1)) cf(1,1)=c1 cf(2,1)=c2 cf(3,1)=c3 cf(1,2)=c1+2.d0*c2*x1+3.d0*c3*t4 cf(2,2)=c2+3.d0*c3*x1 cf(3,2)=c3 if (n.eq.4) then cf(1,3)=c1+2.d0*c2*x2+3.d0*c3*t5 cf(2,3)=c2+3.d0*c3*x2 cf(3,3)=c3 cf(1,4)=c1+2.d0*c2*x3+3.d0*c3*t6 cf(2,4)=c2+3.d0*c3*x3 cf(3,4)=c3 return end if do i=3,n-2 x0=x(i) x1=x(i-1)-x0 x2=x(i+1)-x0 x3=x(i+2)-x0 y0=f(1,i) y1=f(1,i-1)-y0 y2=f(1,i+1)-y0 y3=f(1,i+2)-y0 t1=x1*x2*y3 t2=x2*x3*y1 t3=x3*x1*y2 t0=1.d0/(x1*x2*x3*(x1-x2)*(x1-x3)*(x2-x3)) c3=t0*(t1*(x1-x2)+t2*(x2-x3)+t3*(x3-x1)) t4=x1**2 t5=x2**2 t6=x3**2 y1=t3*t6-t1*t5 y2=t1*t4-t2*t6 y3=t2*t5-t3*t4 cf(1,i)=t0*(x1*y1+x2*y2+x3*y3) cf(2,i)=-t0*(y1+y2+y3) cf(3,i)=c3 end do c1=cf(1,n-2) c2=cf(2,n-2) c3=cf(3,n-2) cf(1,n-1)=c1+2.d0*c2*x2+3.d0*c3*t5 cf(2,n-1)=c2+3.d0*c3*x2 cf(3,n-1)=c3 cf(1,n)=c1+2.d0*c2*x3+3.d0*c3*t6 cf(2,n)=c2+3.d0*c3*x3 cf(3,n)=c3 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rhocore.f900000644002504400250440000000005012337331323016157 xustar000000000000000020 atime=1400746706 20 ctime=1400746707 elk-2.3.22/src/rhocore.f900000644002504400250440000000352012337331323016723 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rhocore ! !INTERFACE: subroutine rhocore ! !USES: use modmain ! !DESCRIPTION: ! Adds the core density and magnetisation to the muffin-tin functions. Also ! computes the amount of leakage of core charge from the muffin-tin spheres ! into the interstitial. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) ! Fixed core moment direction, October 2012 (M. Meinert) !EOP !BOC implicit none ! local variables integer idm,ispn integer is,ias,nr,ir real(8) v(ndmag),sum,t1 ! automatic arrays real(8) fr(nrmtmax),gr(nrmtmax) do ias=1,natmtot is=idxis(ias) nr=nrmt(is) sum=0.d0 ! loop over spin channels do ispn=1,nspncr do ir=1,nr ! add the core density to the muffin-tin density rhomt(1,ir,ias)=rhomt(1,ir,ias)+rhocr(ir,ias,ispn)/y00 fr(ir)=rhocr(ir,ias,ispn)*spr(ir,is)**2 end do ! compute the core charge inside the muffin-tins call fderiv(-1,nr,spr(:,is),fr,gr) sum=sum+fourpi*gr(nr) end do ! core leakage charge chgcrlk(ias)=chgcr(is)-sum ! add to the magnetisation in the case of a spin-polarised core if (spincore) then ! compute the total moment in the muffin-tin do idm=1,ndmag do ir=1,nr fr(ir)=magmt(1,ir,ias,idm)*spr(ir,is)**2 end do call fderiv(-1,nr,spr(:,is),fr,gr) v(idm)=fourpi*y00*gr(nr) end do ! normalise if (ncmag) then t1=sqrt(v(1)**2+v(2)**2+v(3)**2) else t1=abs(v(1)) end if if (t1.gt.1.d-10) v(:)=v(:)/t1 ! add the core magnetisation to the total do ir=1,nr t1=abs((rhocr(ir,ias,1)-rhocr(ir,ias,2))/y00) magmt(1,ir,ias,:)=magmt(1,ir,ias,:)+t1*v(:) end do end if end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rfinterp.f900000644002504400250440000000005012337331323016347 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rfinterp.f900000644002504400250440000000375412337331323017124 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rfinterp ! !INTERFACE: subroutine rfinterp(ni,xi,ldi,fi,no,xo,ldo,fo) ! !INPUT/OUTPUT PARAMETERS: ! ni : number of input points (in,integer) ! xi : input abscissa array (in,real(ni)) ! ldi : leading dimension (in,integer) ! fi : input data array (in,real(ldi,ni) ! no : number of output points (in,integer) ! xo : output abscissa array (in,real(ni)) ! ldo : leading dimension (in,integer) ! fo : output interpolated function (out,real(ldo,no)) ! !DESCRIPTION: ! Given a function defined on a set of input points, this routine uses a ! clamped cubic spline to interpolate the function on a different set of ! points. See routine {\tt spline}. ! ! !REVISION HISTORY: ! Created January 2005 (JKD) !EOP !BOC implicit none integer, intent(in) :: ni real(8), intent(in) :: xi(ni) integer, intent(in) :: ldi real(8), intent(in) :: fi(ldi,ni) integer, intent(in) :: no real(8), intent(in) :: xo(no) integer, intent(in) :: ldo real(8), intent(out) :: fo(ldo,no) ! local variables integer i,j,k,l real(8) x,dx ! automatic arrays real(8) cf(3,ni) if (ni.le.0) then write(*,*) write(*,'("Error(rfinterp): invalid number of input points : ",I8)') ni write(*,*) stop end if if (no.le.0) then write(*,*) write(*,'("Error(rfinterp): invalid number of output points : ",I8)') no write(*,*) stop end if if (ni.eq.1) then fo(1,:)=fi(1,1) return end if call spline(ni,xi,ldi,fi,cf) ! evaluate spline at output points i=1 do l=1,no x=xo(l) if (i.ge.ni) i=1 if (x.lt.xi(i)) goto 10 if (x.le.xi(i+1)) goto 30 ! binary search 10 continue i=1 j=ni+1 20 continue k=(i+j)/2 if (x.lt.xi(k)) then j=k else i=k end if if (j.gt.i+1) goto 20 30 continue dx=x-xi(i) fo(1,l)=fi(1,i)+dx*(cf(1,i)+dx*(cf(2,i)+dx*cf(3,i))) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/tm3todm.f900000644002504400250440000000005012337331324016106 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/tm3todm.f900000644002504400250440000000425612337331324016661 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine tm3todm(l,nspinor,k,p,r,ld,tm3,dmat) implicit none ! arguments integer, intent(in) :: l,nspinor integer, intent(in) :: k,p,r integer, intent(in) :: ld complex(8), intent(in) :: tm3(-ld:ld) complex(8), intent(out) :: dmat(ld,nspinor,ld,nspinor) ! parameters complex(8), parameter :: zi=(0.d0,1.d0) ! local variables integer x,y,g,t real(8) t1,t2 complex(8) z1 ! allocatable arrays complex(8), allocatable :: tm2(:,:) ! external functions real(8) wigner3j,factnm,factr external wigner3j,factnm,factr if (l.lt.0) then write(*,*) write(*,'("Error(tm3todm): l < 0 : ",I8)') l write(*,*) stop end if if ((nspinor.lt.1).or.(nspinor.gt.2)) then write(*,*) write(*,'("Error(tm3todm): nspinor should be 1 or 2 : ",I8)') nspinor write(*,*) stop end if if (k.lt.0) then write(*,*) write(*,'("Error(tm3todm): k < 0 : ",I8)') k write(*,*) stop end if if (k.gt.2*l) then write(*,*) write(*,'("Error(tm3todm): k > 2*l : ",2I8)') k,2*l write(*,*) stop end if if ((p.lt.0).or.(p.gt.1)) then write(*,*) write(*,'("Error(tm3todm): p should be 0 or 1 : ",I8)') p write(*,*) stop end if if (r.lt.abs(k-p)) then write(*,*) write(*,'("Error(tm3todm): r < |k-p| : ",2I8)') r,abs(k-p) write(*,*) stop end if if (r.gt.(k+p)) then write(*,*) write(*,'("Error(tm3todm): r > k+p : ",2I8)') r,k+p write(*,*) stop end if ! compute 2-index tensor moment from 3-index tensor moment allocate(tm2(-ld:ld,-1:1)) tm2(:,:)=0.d0 do x=-k,k do y=-p,p t1=dble((-1)**(x+y-k-p)) g=k+p+r if (mod(g,2).eq.0) then z1=t1*wigner3j(k,p,r,0,0,0) else t1=t1*sqrt(factr(g-2*k,g+1)*factnm(g-2*p,1)*factnm(g-2*r,1)) t1=t1*factnm(g,2)/(factnm(g-2*k,2)*factnm(g-2*p,2)*factnm(g-2*r,2)) z1=t1*zi**g end if do t=-r,r t2=wigner3j(k,r,p,-x,t,-y)*(2*r+1) tm2(x,y)=tm2(x,y)+t2*z1*tm3(t) end do end do end do ! compute the density matrix from the 2-index tensor moment call tm2todm(l,nspinor,k,p,ld,tm2,dmat) deallocate(tm2) return end subroutine elk-2.3.22/src/PaxHeaders.22528/genvmatk.f900000644002504400250440000000005012337331324016333 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvmatk.f900000644002504400250440000000400012337331324017071 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genvmatk(vmt,vir,wfmt,wfir,vmat) use modmain implicit none ! arguments real(8), intent(in) :: vmt(lmmaxvr,nrcmtmax,natmtot),vir(ngtot) complex(8), intent(in) :: wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv) complex(8), intent(in) :: wfir(ngtot,nspinor,nstsv) complex(8), intent(out) :: vmat(nstsv,nstsv) ! local variables integer ist,jst,ispn,is,ias integer nrc,nrci,irc real(8) t1 complex(8) z1 ! allocatable arrays complex(8), allocatable :: zfmt(:,:),zfir(:) ! external functions complex(8) zfmtinp,zdotc external zfmtinp,zdotc ! zero the matrix elements vmat(:,:)=0.d0 !-------------------------! ! muffin-tin part ! !-------------------------! allocate(zfmt(lmmaxvr,nrcmtmax)) do jst=1,nstsv do ias=1,natmtot is=idxis(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) do ispn=1,nspinor ! apply potential to wavefunction do irc=1,nrci zfmt(1:lmmaxinr,irc)=vmt(1:lmmaxinr,irc,ias) & *wfmt(1:lmmaxinr,irc,ias,ispn,jst) end do do irc=nrci+1,nrc zfmt(:,irc)=vmt(:,irc,ias)*wfmt(:,irc,ias,ispn,jst) end do do ist=1,jst ! compute inner product (functions are in spherical coordinates) z1=zfmtinp(.false.,nrc,nrci,rcmt(:,is),wfmt(:,:,ias,ispn,ist),zfmt) vmat(ist,jst)=vmat(ist,jst)+z1 end do end do end do end do deallocate(zfmt) !---------------------------! ! interstitial part ! !---------------------------! allocate(zfir(ngtot)) t1=omega/dble(ngtot) do jst=1,nstsv do ispn=1,nspinor ! apply potential to wavefunction zfir(:)=vir(:)*wfir(:,ispn,jst) do ist=1,jst z1=zdotc(ngtot,wfir(:,ispn,ist),1,zfir,1) vmat(ist,jst)=vmat(ist,jst)+t1*z1 end do end do end do deallocate(zfir) ! lower triangular part do ist=1,nstsv do jst=1,ist-1 vmat(ist,jst)=conjg(vmat(jst,ist)) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/BLAS0000644002504400250440000000005012337331322014641 xustar000000000000000020 atime=1400746705 20 ctime=1400746706 elk-2.3.22/src/BLAS/0000755002504400250440000000000012337331322015462 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/src/BLAS/PaxHeaders.22528/Makefile0000644002504400250440000000005012337331321016355 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/Makefile0000644002504400250440000000210412337331321017116 0ustar00dewhurstdewhurst00000000000000 AR = ar include ../../make.inc #------------------------------------------------------------------------------- # Suffix Rules #------------------------------------------------------------------------------- .SUFFIXES: .o .f .f.o: $(F77) $(F77_OPTS) -c $< #------------------------------------------------------------------------------- # File dependencies #------------------------------------------------------------------------------- SRC = \ dasum.f daxpy.f dcabs1.f dcopy.f ddot.f dgemm.f dgemv.f dger.f \ dnrm2.f dscal.f dswap.f dsymm.f dsymv.f dsyr2.f dsyr2k.f dsyr.f \ dsyrk.f dtrmm.f dtrmv.f dtrsm.f dtrsv.f dzasum.f dznrm2.f idamax.f \ izamax.f lsame.f xerbla.f zaxpy.f zcopy.f zdotc.f zdotu.f zdscal.f \ zgemm.f zgemv.f zgerc.f zgeru.f zhemm.f zhemv.f zher2.f zher2k.f \ zherk.f zhpmv.f zhpr2.f zhpr.f zscal.f zswap.f ztpmv.f ztpsv.f \ ztrmm.f ztrmv.f ztrsm.f ztrsv.f OBJ = $(SRC:.f=.o) blas: $(OBJ) $(AR) -rc blas.a $(OBJ) clean: rm -f *.o *.mod *~ *.a ifc* *.gcno gmon.out ls: ls -x --width=80 *.f elk-2.3.22/src/BLAS/PaxHeaders.22528/zhemm.f0000644002504400250440000000005012337331321016204 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/zhemm.f0000644002504400250440000002617412337331321016762 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHEMM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA,BETA * INTEGER LDA,LDB,LDC,M,N * CHARACTER SIDE,UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHEMM performs one of the matrix-matrix operations *> *> C := alpha*A*B + beta*C, *> *> or *> *> C := alpha*B*A + beta*C, *> *> where alpha and beta are scalars, A is an hermitian matrix and B and *> C are m by n matrices. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether the hermitian matrix A *> appears on the left or right in the operation as follows: *> *> SIDE = 'L' or 'l' C := alpha*A*B + beta*C, *> *> SIDE = 'R' or 'r' C := alpha*B*A + beta*C, *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the hermitian matrix A is to be *> referenced as follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of the *> hermitian matrix is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of the *> hermitian matrix is to be referenced. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix C. *> M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix C. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is *> m when SIDE = 'L' or 'l' and is n otherwise. *> Before entry with SIDE = 'L' or 'l', the m by m part of *> the array A must contain the hermitian matrix, such that *> when UPLO = 'U' or 'u', the leading m by m upper triangular *> part of the array A must contain the upper triangular part *> of the hermitian matrix and the strictly lower triangular *> part of A is not referenced, and when UPLO = 'L' or 'l', *> the leading m by m lower triangular part of the array A *> must contain the lower triangular part of the hermitian *> matrix and the strictly upper triangular part of A is not *> referenced. *> Before entry with SIDE = 'R' or 'r', the n by n part of *> the array A must contain the hermitian matrix, such that *> when UPLO = 'U' or 'u', the leading n by n upper triangular *> part of the array A must contain the upper triangular part *> of the hermitian matrix and the strictly lower triangular *> part of A is not referenced, and when UPLO = 'L' or 'l', *> the leading n by n lower triangular part of the array A *> must contain the lower triangular part of the hermitian *> matrix and the strictly upper triangular part of A is not *> referenced. *> Note that the imaginary parts of the diagonal elements need *> not be set, they are assumed to be zero. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When SIDE = 'L' or 'l' then *> LDA must be at least max( 1, m ), otherwise LDA must be at *> least max( 1, n ). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is COMPLEX*16 array of DIMENSION ( LDB, n ). *> Before entry, the leading m by n part of the array B must *> contain the matrix B. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. LDB must be at least *> max( 1, m ). *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is COMPLEX*16 *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then C need not be set on input. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array of DIMENSION ( LDC, n ). *> Before entry, the leading m by n part of the array C must *> contain the matrix C, except when beta is zero, in which *> case C need not be set on entry. *> On exit, the array C is overwritten by the m by n updated *> matrix. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> On entry, LDC specifies the first dimension of C as declared *> in the calling (sub) program. LDC must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE ZHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA,BETA INTEGER LDA,LDB,LDC,M,N CHARACTER SIDE,UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX * .. * .. Local Scalars .. COMPLEX*16 TEMP1,TEMP2 INTEGER I,INFO,J,K,NROWA LOGICAL UPPER * .. * .. Parameters .. COMPLEX*16 ONE PARAMETER (ONE= (1.0D+0,0.0D+0)) COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * * Set NROWA as the number of rows of A. * IF (LSAME(SIDE,'L')) THEN NROWA = M ELSE NROWA = N END IF UPPER = LSAME(UPLO,'U') * * Test the input parameters. * INFO = 0 IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN INFO = 1 ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 2 ELSE IF (M.LT.0) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 7 ELSE IF (LDB.LT.MAX(1,M)) THEN INFO = 9 ELSE IF (LDC.LT.MAX(1,M)) THEN INFO = 12 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZHEMM ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. + ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN IF (BETA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,M C(I,J) = ZERO 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1,N DO 30 I = 1,M C(I,J) = BETA*C(I,J) 30 CONTINUE 40 CONTINUE END IF RETURN END IF * * Start the operations. * IF (LSAME(SIDE,'L')) THEN * * Form C := alpha*A*B + beta*C. * IF (UPPER) THEN DO 70 J = 1,N DO 60 I = 1,M TEMP1 = ALPHA*B(I,J) TEMP2 = ZERO DO 50 K = 1,I - 1 C(K,J) = C(K,J) + TEMP1*A(K,I) TEMP2 = TEMP2 + B(K,J)*DCONJG(A(K,I)) 50 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = TEMP1*DBLE(A(I,I)) + ALPHA*TEMP2 ELSE C(I,J) = BETA*C(I,J) + TEMP1*DBLE(A(I,I)) + + ALPHA*TEMP2 END IF 60 CONTINUE 70 CONTINUE ELSE DO 100 J = 1,N DO 90 I = M,1,-1 TEMP1 = ALPHA*B(I,J) TEMP2 = ZERO DO 80 K = I + 1,M C(K,J) = C(K,J) + TEMP1*A(K,I) TEMP2 = TEMP2 + B(K,J)*DCONJG(A(K,I)) 80 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = TEMP1*DBLE(A(I,I)) + ALPHA*TEMP2 ELSE C(I,J) = BETA*C(I,J) + TEMP1*DBLE(A(I,I)) + + ALPHA*TEMP2 END IF 90 CONTINUE 100 CONTINUE END IF ELSE * * Form C := alpha*B*A + beta*C. * DO 170 J = 1,N TEMP1 = ALPHA*DBLE(A(J,J)) IF (BETA.EQ.ZERO) THEN DO 110 I = 1,M C(I,J) = TEMP1*B(I,J) 110 CONTINUE ELSE DO 120 I = 1,M C(I,J) = BETA*C(I,J) + TEMP1*B(I,J) 120 CONTINUE END IF DO 140 K = 1,J - 1 IF (UPPER) THEN TEMP1 = ALPHA*A(K,J) ELSE TEMP1 = ALPHA*DCONJG(A(J,K)) END IF DO 130 I = 1,M C(I,J) = C(I,J) + TEMP1*B(I,K) 130 CONTINUE 140 CONTINUE DO 160 K = J + 1,N IF (UPPER) THEN TEMP1 = ALPHA*DCONJG(A(J,K)) ELSE TEMP1 = ALPHA*A(K,J) END IF DO 150 I = 1,M C(I,J) = C(I,J) + TEMP1*B(I,K) 150 CONTINUE 160 CONTINUE 170 CONTINUE END IF * RETURN * * End of ZHEMM . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dzasum.f0000644002504400250440000000005012337331321016367 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/dzasum.f0000644002504400250440000000414512337331321017137 0ustar00dewhurstdewhurst00000000000000*> \brief \b DZASUM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX) * * .. Scalar Arguments .. * INTEGER INCX,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DZASUM takes the sum of the absolute values. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, 3/11/78. *> modified 3/93 to return if incx .le. 0. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*) * .. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION STEMP INTEGER I,NINCX * .. * .. External Functions .. DOUBLE PRECISION DCABS1 EXTERNAL DCABS1 * .. DZASUM = 0.0d0 STEMP = 0.0d0 IF (N.LE.0 .OR. INCX.LE.0) RETURN IF (INCX.EQ.1) THEN * * code for increment equal to 1 * DO I = 1,N STEMP = STEMP + DCABS1(ZX(I)) END DO ELSE * * code for increment not equal to 1 * NINCX = N*INCX DO I = 1,NINCX,INCX STEMP = STEMP + DCABS1(ZX(I)) END DO END IF DZASUM = STEMP RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/zscal.f0000644002504400250440000000005012337331321016200 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/zscal.f0000644002504400250440000000363612337331321016754 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZSCAL * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZSCAL(N,ZA,ZX,INCX) * * .. Scalar Arguments .. * COMPLEX*16 ZA * INTEGER INCX,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZSCAL scales a vector by a constant. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, 3/11/78. *> modified 3/93 to return if incx .le. 0. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE ZSCAL(N,ZA,ZX,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ZA INTEGER INCX,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I,NINCX * .. IF (N.LE.0 .OR. INCX.LE.0) RETURN IF (INCX.EQ.1) THEN * * code for increment equal to 1 * DO I = 1,N ZX(I) = ZA*ZX(I) END DO ELSE * * code for increment not equal to 1 * NINCX = N*INCX DO I = 1,NINCX,INCX ZX(I) = ZA*ZX(I) END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/ddot.f0000644002504400250440000000005012337331321016016 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/ddot.f0000644002504400250440000000527512337331321016573 0ustar00dewhurstdewhurst00000000000000*> \brief \b DDOT * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY) * * .. Scalar Arguments .. * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * DOUBLE PRECISION DX(*),DY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DDOT forms the dot product of two vectors. *> uses unrolled loops for increments equal to one. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, linpack, 3/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,INCY,N * .. * .. Array Arguments .. DOUBLE PRECISION DX(*),DY(*) * .. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DTEMP INTEGER I,IX,IY,M,MP1 * .. * .. Intrinsic Functions .. INTRINSIC MOD * .. DDOT = 0.0d0 DTEMP = 0.0d0 IF (N.LE.0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 * * * clean-up loop * M = MOD(N,5) IF (M.NE.0) THEN DO I = 1,M DTEMP = DTEMP + DX(I)*DY(I) END DO IF (N.LT.5) THEN DDOT=DTEMP RETURN END IF END IF MP1 = M + 1 DO I = MP1,N,5 DTEMP = DTEMP + DX(I)*DY(I) + DX(I+1)*DY(I+1) + $ DX(I+2)*DY(I+2) + DX(I+3)*DY(I+3) + DX(I+4)*DY(I+4) END DO ELSE * * code for unequal increments or equal increments * not equal to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N DTEMP = DTEMP + DX(IX)*DY(IY) IX = IX + INCX IY = IY + INCY END DO END IF DDOT = DTEMP RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/zherk.f0000644002504400250440000000005012337331321016207 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/zherk.f0000644002504400250440000002772012337331321016763 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHERK * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA,BETA * INTEGER K,LDA,LDC,N * CHARACTER TRANS,UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),C(LDC,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHERK performs one of the hermitian rank k operations *> *> C := alpha*A*A**H + beta*C, *> *> or *> *> C := alpha*A**H*A + beta*C, *> *> where alpha and beta are real scalars, C is an n by n hermitian *> matrix and A is an n by k matrix in the first case and a k by n *> matrix in the second case. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C. *> *> TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix C. N must be *> at least zero. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> On entry with TRANS = 'N' or 'n', K specifies the number *> of columns of the matrix A, and on entry with *> TRANS = 'C' or 'c', K specifies the number of rows of the *> matrix A. K must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION . *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is *> k when TRANS = 'N' or 'n', and is n otherwise. *> Before entry with TRANS = 'N' or 'n', the leading n by k *> part of the array A must contain the matrix A, otherwise *> the leading k by n part of the array A must contain the *> matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When TRANS = 'N' or 'n' *> then LDA must be at least max( 1, n ), otherwise LDA must *> be at least max( 1, k ). *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION. *> On entry, BETA specifies the scalar beta. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array of DIMENSION ( LDC, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array C must contain the upper *> triangular part of the hermitian matrix and the strictly *> lower triangular part of C is not referenced. On exit, the *> upper triangular part of the array C is overwritten by the *> upper triangular part of the updated matrix. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array C must contain the lower *> triangular part of the hermitian matrix and the strictly *> upper triangular part of C is not referenced. On exit, the *> lower triangular part of the array C is overwritten by the *> lower triangular part of the updated matrix. *> Note that the imaginary parts of the diagonal elements need *> not be set, they are assumed to be zero, and on exit they *> are set to zero. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> On entry, LDC specifies the first dimension of C as declared *> in the calling (sub) program. LDC must be at least *> max( 1, n ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> *> -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1. *> Ed Anderson, Cray Research Inc. *> \endverbatim *> * ===================================================================== SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA,BETA INTEGER K,LDA,LDC,N CHARACTER TRANS,UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),C(LDC,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCMPLX,DCONJG,MAX * .. * .. Local Scalars .. COMPLEX*16 TEMP DOUBLE PRECISION RTEMP INTEGER I,INFO,J,L,NROWA LOGICAL UPPER * .. * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * * Test the input parameters. * IF (LSAME(TRANS,'N')) THEN NROWA = N ELSE NROWA = K END IF UPPER = LSAME(UPLO,'U') * INFO = 0 IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 1 ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND. + (.NOT.LSAME(TRANS,'C'))) THEN INFO = 2 ELSE IF (N.LT.0) THEN INFO = 3 ELSE IF (K.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 7 ELSE IF (LDC.LT.MAX(1,N)) THEN INFO = 10 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZHERK ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR. + (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN IF (UPPER) THEN IF (BETA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,J C(I,J) = ZERO 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1,N DO 30 I = 1,J - 1 C(I,J) = BETA*C(I,J) 30 CONTINUE C(J,J) = BETA*DBLE(C(J,J)) 40 CONTINUE END IF ELSE IF (BETA.EQ.ZERO) THEN DO 60 J = 1,N DO 50 I = J,N C(I,J) = ZERO 50 CONTINUE 60 CONTINUE ELSE DO 80 J = 1,N C(J,J) = BETA*DBLE(C(J,J)) DO 70 I = J + 1,N C(I,J) = BETA*C(I,J) 70 CONTINUE 80 CONTINUE END IF END IF RETURN END IF * * Start the operations. * IF (LSAME(TRANS,'N')) THEN * * Form C := alpha*A*A**H + beta*C. * IF (UPPER) THEN DO 130 J = 1,N IF (BETA.EQ.ZERO) THEN DO 90 I = 1,J C(I,J) = ZERO 90 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 100 I = 1,J - 1 C(I,J) = BETA*C(I,J) 100 CONTINUE C(J,J) = BETA*DBLE(C(J,J)) ELSE C(J,J) = DBLE(C(J,J)) END IF DO 120 L = 1,K IF (A(J,L).NE.DCMPLX(ZERO)) THEN TEMP = ALPHA*DCONJG(A(J,L)) DO 110 I = 1,J - 1 C(I,J) = C(I,J) + TEMP*A(I,L) 110 CONTINUE C(J,J) = DBLE(C(J,J)) + DBLE(TEMP*A(I,L)) END IF 120 CONTINUE 130 CONTINUE ELSE DO 180 J = 1,N IF (BETA.EQ.ZERO) THEN DO 140 I = J,N C(I,J) = ZERO 140 CONTINUE ELSE IF (BETA.NE.ONE) THEN C(J,J) = BETA*DBLE(C(J,J)) DO 150 I = J + 1,N C(I,J) = BETA*C(I,J) 150 CONTINUE ELSE C(J,J) = DBLE(C(J,J)) END IF DO 170 L = 1,K IF (A(J,L).NE.DCMPLX(ZERO)) THEN TEMP = ALPHA*DCONJG(A(J,L)) C(J,J) = DBLE(C(J,J)) + DBLE(TEMP*A(J,L)) DO 160 I = J + 1,N C(I,J) = C(I,J) + TEMP*A(I,L) 160 CONTINUE END IF 170 CONTINUE 180 CONTINUE END IF ELSE * * Form C := alpha*A**H*A + beta*C. * IF (UPPER) THEN DO 220 J = 1,N DO 200 I = 1,J - 1 TEMP = ZERO DO 190 L = 1,K TEMP = TEMP + DCONJG(A(L,I))*A(L,J) 190 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 200 CONTINUE RTEMP = ZERO DO 210 L = 1,K RTEMP = RTEMP + DCONJG(A(L,J))*A(L,J) 210 CONTINUE IF (BETA.EQ.ZERO) THEN C(J,J) = ALPHA*RTEMP ELSE C(J,J) = ALPHA*RTEMP + BETA*DBLE(C(J,J)) END IF 220 CONTINUE ELSE DO 260 J = 1,N RTEMP = ZERO DO 230 L = 1,K RTEMP = RTEMP + DCONJG(A(L,J))*A(L,J) 230 CONTINUE IF (BETA.EQ.ZERO) THEN C(J,J) = ALPHA*RTEMP ELSE C(J,J) = ALPHA*RTEMP + BETA*DBLE(C(J,J)) END IF DO 250 I = J + 1,N TEMP = ZERO DO 240 L = 1,K TEMP = TEMP + DCONJG(A(L,I))*A(L,J) 240 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 250 CONTINUE 260 CONTINUE END IF END IF * RETURN * * End of ZHERK . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zgemm.f0000644002504400250440000000005012337331321016203 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/zgemm.f0000644002504400250440000003445212337331321016757 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGEMM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA,BETA * INTEGER K,LDA,LDB,LDC,M,N * CHARACTER TRANSA,TRANSB * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGEMM performs one of the matrix-matrix operations *> *> C := alpha*op( A )*op( B ) + beta*C, *> *> where op( X ) is one of *> *> op( X ) = X or op( X ) = X**T or op( X ) = X**H, *> *> alpha and beta are scalars, and A, B and C are matrices, with op( A ) *> an m by k matrix, op( B ) a k by n matrix and C an m by n matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] TRANSA *> \verbatim *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: *> *> TRANSA = 'N' or 'n', op( A ) = A. *> *> TRANSA = 'T' or 't', op( A ) = A**T. *> *> TRANSA = 'C' or 'c', op( A ) = A**H. *> \endverbatim *> *> \param[in] TRANSB *> \verbatim *> TRANSB is CHARACTER*1 *> On entry, TRANSB specifies the form of op( B ) to be used in *> the matrix multiplication as follows: *> *> TRANSB = 'N' or 'n', op( B ) = B. *> *> TRANSB = 'T' or 't', op( B ) = B**T. *> *> TRANSB = 'C' or 'c', op( B ) = B**H. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix *> op( A ) and of the matrix C. M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix *> op( B ) and the number of columns of the matrix C. N must be *> at least zero. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> On entry, K specifies the number of columns of the matrix *> op( A ) and the number of rows of the matrix op( B ). K must *> be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is *> k when TRANSA = 'N' or 'n', and is m otherwise. *> Before entry with TRANSA = 'N' or 'n', the leading m by k *> part of the array A must contain the matrix A, otherwise *> the leading k by m part of the array A must contain the *> matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When TRANSA = 'N' or 'n' then *> LDA must be at least max( 1, m ), otherwise LDA must be at *> least max( 1, k ). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb is *> n when TRANSB = 'N' or 'n', and is k otherwise. *> Before entry with TRANSB = 'N' or 'n', the leading k by n *> part of the array B must contain the matrix B, otherwise *> the leading n by k part of the array B must contain the *> matrix B. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. When TRANSB = 'N' or 'n' then *> LDB must be at least max( 1, k ), otherwise LDB must be at *> least max( 1, n ). *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is COMPLEX*16 *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then C need not be set on input. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array of DIMENSION ( LDC, n ). *> Before entry, the leading m by n part of the array C must *> contain the matrix C, except when beta is zero, in which *> case C need not be set on entry. *> On exit, the array C is overwritten by the m by n matrix *> ( alpha*op( A )*op( B ) + beta*C ). *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> On entry, LDC specifies the first dimension of C as declared *> in the calling (sub) program. LDC must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA,BETA INTEGER K,LDA,LDB,LDC,M,N CHARACTER TRANSA,TRANSB * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB LOGICAL CONJA,CONJB,NOTA,NOTB * .. * .. Parameters .. COMPLEX*16 ONE PARAMETER (ONE= (1.0D+0,0.0D+0)) COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * * Set NOTA and NOTB as true if A and B respectively are not * conjugated or transposed, set CONJA and CONJB as true if A and * B respectively are to be transposed but not conjugated and set * NROWA, NCOLA and NROWB as the number of rows and columns of A * and the number of rows of B respectively. * NOTA = LSAME(TRANSA,'N') NOTB = LSAME(TRANSB,'N') CONJA = LSAME(TRANSA,'C') CONJB = LSAME(TRANSB,'C') IF (NOTA) THEN NROWA = M NCOLA = K ELSE NROWA = K NCOLA = M END IF IF (NOTB) THEN NROWB = K ELSE NROWB = N END IF * * Test the input parameters. * INFO = 0 IF ((.NOT.NOTA) .AND. (.NOT.CONJA) .AND. + (.NOT.LSAME(TRANSA,'T'))) THEN INFO = 1 ELSE IF ((.NOT.NOTB) .AND. (.NOT.CONJB) .AND. + (.NOT.LSAME(TRANSB,'T'))) THEN INFO = 2 ELSE IF (M.LT.0) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (K.LT.0) THEN INFO = 5 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 8 ELSE IF (LDB.LT.MAX(1,NROWB)) THEN INFO = 10 ELSE IF (LDC.LT.MAX(1,M)) THEN INFO = 13 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZGEMM ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. + (((ALPHA.EQ.ZERO).OR. (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN IF (BETA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,M C(I,J) = ZERO 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1,N DO 30 I = 1,M C(I,J) = BETA*C(I,J) 30 CONTINUE 40 CONTINUE END IF RETURN END IF * * Start the operations. * IF (NOTB) THEN IF (NOTA) THEN * * Form C := alpha*A*B + beta*C. * DO 90 J = 1,N IF (BETA.EQ.ZERO) THEN DO 50 I = 1,M C(I,J) = ZERO 50 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 60 I = 1,M C(I,J) = BETA*C(I,J) 60 CONTINUE END IF DO 80 L = 1,K IF (B(L,J).NE.ZERO) THEN TEMP = ALPHA*B(L,J) DO 70 I = 1,M C(I,J) = C(I,J) + TEMP*A(I,L) 70 CONTINUE END IF 80 CONTINUE 90 CONTINUE ELSE IF (CONJA) THEN * * Form C := alpha*A**H*B + beta*C. * DO 120 J = 1,N DO 110 I = 1,M TEMP = ZERO DO 100 L = 1,K TEMP = TEMP + DCONJG(A(L,I))*B(L,J) 100 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 110 CONTINUE 120 CONTINUE ELSE * * Form C := alpha*A**T*B + beta*C * DO 150 J = 1,N DO 140 I = 1,M TEMP = ZERO DO 130 L = 1,K TEMP = TEMP + A(L,I)*B(L,J) 130 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 140 CONTINUE 150 CONTINUE END IF ELSE IF (NOTA) THEN IF (CONJB) THEN * * Form C := alpha*A*B**H + beta*C. * DO 200 J = 1,N IF (BETA.EQ.ZERO) THEN DO 160 I = 1,M C(I,J) = ZERO 160 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 170 I = 1,M C(I,J) = BETA*C(I,J) 170 CONTINUE END IF DO 190 L = 1,K IF (B(J,L).NE.ZERO) THEN TEMP = ALPHA*DCONJG(B(J,L)) DO 180 I = 1,M C(I,J) = C(I,J) + TEMP*A(I,L) 180 CONTINUE END IF 190 CONTINUE 200 CONTINUE ELSE * * Form C := alpha*A*B**T + beta*C * DO 250 J = 1,N IF (BETA.EQ.ZERO) THEN DO 210 I = 1,M C(I,J) = ZERO 210 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 220 I = 1,M C(I,J) = BETA*C(I,J) 220 CONTINUE END IF DO 240 L = 1,K IF (B(J,L).NE.ZERO) THEN TEMP = ALPHA*B(J,L) DO 230 I = 1,M C(I,J) = C(I,J) + TEMP*A(I,L) 230 CONTINUE END IF 240 CONTINUE 250 CONTINUE END IF ELSE IF (CONJA) THEN IF (CONJB) THEN * * Form C := alpha*A**H*B**H + beta*C. * DO 280 J = 1,N DO 270 I = 1,M TEMP = ZERO DO 260 L = 1,K TEMP = TEMP + DCONJG(A(L,I))*DCONJG(B(J,L)) 260 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 270 CONTINUE 280 CONTINUE ELSE * * Form C := alpha*A**H*B**T + beta*C * DO 310 J = 1,N DO 300 I = 1,M TEMP = ZERO DO 290 L = 1,K TEMP = TEMP + DCONJG(A(L,I))*B(J,L) 290 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 300 CONTINUE 310 CONTINUE END IF ELSE IF (CONJB) THEN * * Form C := alpha*A**T*B**H + beta*C * DO 340 J = 1,N DO 330 I = 1,M TEMP = ZERO DO 320 L = 1,K TEMP = TEMP + A(L,I)*DCONJG(B(J,L)) 320 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 330 CONTINUE 340 CONTINUE ELSE * * Form C := alpha*A**T*B**T + beta*C * DO 370 J = 1,N DO 360 I = 1,M TEMP = ZERO DO 350 L = 1,K TEMP = TEMP + A(L,I)*B(J,L) 350 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 360 CONTINUE 370 CONTINUE END IF END IF * RETURN * * End of ZGEMM . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zgerc.f0000644002504400250440000000005012337331321016176 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/zgerc.f0000644002504400250440000001306712337331321016751 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGERC * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA * INTEGER INCX,INCY,LDA,M,N * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGERC performs the rank 1 operation *> *> A := alpha*x*y**H + A, *> *> where alpha is a scalar, x is an m element vector, y is an n element *> vector and A is an m by n matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix A. *> M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( m - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the m *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, n ). *> Before entry, the leading m by n part of the array A must *> contain the matrix of coefficients. On exit, A is *> overwritten by the updated matrix. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA INTEGER INCX,INCY,LDA,M,N * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX * .. * * Test the input parameters. * INFO = 0 IF (M.LT.0) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 5 ELSE IF (INCY.EQ.0) THEN INFO = 7 ELSE IF (LDA.LT.MAX(1,M)) THEN INFO = 9 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZGERC ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF (INCY.GT.0) THEN JY = 1 ELSE JY = 1 - (N-1)*INCY END IF IF (INCX.EQ.1) THEN DO 20 J = 1,N IF (Y(JY).NE.ZERO) THEN TEMP = ALPHA*DCONJG(Y(JY)) DO 10 I = 1,M A(I,J) = A(I,J) + X(I)*TEMP 10 CONTINUE END IF JY = JY + INCY 20 CONTINUE ELSE IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (M-1)*INCX END IF DO 40 J = 1,N IF (Y(JY).NE.ZERO) THEN TEMP = ALPHA*DCONJG(Y(JY)) IX = KX DO 30 I = 1,M A(I,J) = A(I,J) + X(IX)*TEMP IX = IX + INCX 30 CONTINUE END IF JY = JY + INCY 40 CONTINUE END IF * RETURN * * End of ZGERC . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dznrm2.f0000644002504400250440000000005012337331321016300 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/dznrm2.f0000644002504400250440000000563312337331321017053 0ustar00dewhurstdewhurst00000000000000*> \brief \b DZNRM2 * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DZNRM2(N,X,INCX) * * .. Scalar Arguments .. * INTEGER INCX,N * .. * .. Array Arguments .. * COMPLEX*16 X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DZNRM2 returns the euclidean norm of a vector via the function *> name, so that *> *> DZNRM2 := sqrt( x**H*x ) *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> -- This version written on 25-October-1982. *> Modified on 14-October-1993 to inline the call to ZLASSQ. *> Sven Hammarling, Nag Ltd. *> \endverbatim *> * ===================================================================== DOUBLE PRECISION FUNCTION DZNRM2(N,X,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,N * .. * .. Array Arguments .. COMPLEX*16 X(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION NORM,SCALE,SSQ,TEMP INTEGER IX * .. * .. Intrinsic Functions .. INTRINSIC ABS,DBLE,DIMAG,SQRT * .. IF (N.LT.1 .OR. INCX.LT.1) THEN NORM = ZERO ELSE SCALE = ZERO SSQ = ONE * The following loop is equivalent to this call to the LAPACK * auxiliary routine: * CALL ZLASSQ( N, X, INCX, SCALE, SSQ ) * DO 10 IX = 1,1 + (N-1)*INCX,INCX IF (DBLE(X(IX)).NE.ZERO) THEN TEMP = ABS(DBLE(X(IX))) IF (SCALE.LT.TEMP) THEN SSQ = ONE + SSQ* (SCALE/TEMP)**2 SCALE = TEMP ELSE SSQ = SSQ + (TEMP/SCALE)**2 END IF END IF IF (DIMAG(X(IX)).NE.ZERO) THEN TEMP = ABS(DIMAG(X(IX))) IF (SCALE.LT.TEMP) THEN SSQ = ONE + SSQ* (SCALE/TEMP)**2 SCALE = TEMP ELSE SSQ = SSQ + (TEMP/SCALE)**2 END IF END IF 10 CONTINUE NORM = SCALE*SQRT(SSQ) END IF * DZNRM2 = NORM RETURN * * End of DZNRM2. * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zher2k.f0000644002504400250440000000005012337331321016271 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/zher2k.f0000644002504400250440000003455012337331321017044 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHER2K * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA * DOUBLE PRECISION BETA * INTEGER K,LDA,LDB,LDC,N * CHARACTER TRANS,UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHER2K performs one of the hermitian rank 2k operations *> *> C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C, *> *> or *> *> C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C, *> *> where alpha and beta are scalars with beta real, C is an n by n *> hermitian matrix and A and B are n by k matrices in the first case *> and k by n matrices in the second case. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' C := alpha*A*B**H + *> conjg( alpha )*B*A**H + *> beta*C. *> *> TRANS = 'C' or 'c' C := alpha*A**H*B + *> conjg( alpha )*B**H*A + *> beta*C. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix C. N must be *> at least zero. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> On entry with TRANS = 'N' or 'n', K specifies the number *> of columns of the matrices A and B, and on entry with *> TRANS = 'C' or 'c', K specifies the number of rows of the *> matrices A and B. K must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 . *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is *> k when TRANS = 'N' or 'n', and is n otherwise. *> Before entry with TRANS = 'N' or 'n', the leading n by k *> part of the array A must contain the matrix A, otherwise *> the leading k by n part of the array A must contain the *> matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When TRANS = 'N' or 'n' *> then LDA must be at least max( 1, n ), otherwise LDA must *> be at least max( 1, k ). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb is *> k when TRANS = 'N' or 'n', and is n otherwise. *> Before entry with TRANS = 'N' or 'n', the leading n by k *> part of the array B must contain the matrix B, otherwise *> the leading k by n part of the array B must contain the *> matrix B. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. When TRANS = 'N' or 'n' *> then LDB must be at least max( 1, n ), otherwise LDB must *> be at least max( 1, k ). *> Unchanged on exit. *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION . *> On entry, BETA specifies the scalar beta. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is COMPLEX*16 array of DIMENSION ( LDC, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array C must contain the upper *> triangular part of the hermitian matrix and the strictly *> lower triangular part of C is not referenced. On exit, the *> upper triangular part of the array C is overwritten by the *> upper triangular part of the updated matrix. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array C must contain the lower *> triangular part of the hermitian matrix and the strictly *> upper triangular part of C is not referenced. On exit, the *> lower triangular part of the array C is overwritten by the *> lower triangular part of the updated matrix. *> Note that the imaginary parts of the diagonal elements need *> not be set, they are assumed to be zero, and on exit they *> are set to zero. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> On entry, LDC specifies the first dimension of C as declared *> in the calling (sub) program. LDC must be at least *> max( 1, n ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> *> -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1. *> Ed Anderson, Cray Research Inc. *> \endverbatim *> * ===================================================================== SUBROUTINE ZHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA DOUBLE PRECISION BETA INTEGER K,LDA,LDB,LDC,N CHARACTER TRANS,UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX * .. * .. Local Scalars .. COMPLEX*16 TEMP1,TEMP2 INTEGER I,INFO,J,L,NROWA LOGICAL UPPER * .. * .. Parameters .. DOUBLE PRECISION ONE PARAMETER (ONE=1.0D+0) COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * * Test the input parameters. * IF (LSAME(TRANS,'N')) THEN NROWA = N ELSE NROWA = K END IF UPPER = LSAME(UPLO,'U') * INFO = 0 IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 1 ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND. + (.NOT.LSAME(TRANS,'C'))) THEN INFO = 2 ELSE IF (N.LT.0) THEN INFO = 3 ELSE IF (K.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 7 ELSE IF (LDB.LT.MAX(1,NROWA)) THEN INFO = 9 ELSE IF (LDC.LT.MAX(1,N)) THEN INFO = 12 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZHER2K',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR. + (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN IF (UPPER) THEN IF (BETA.EQ.DBLE(ZERO)) THEN DO 20 J = 1,N DO 10 I = 1,J C(I,J) = ZERO 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1,N DO 30 I = 1,J - 1 C(I,J) = BETA*C(I,J) 30 CONTINUE C(J,J) = BETA*DBLE(C(J,J)) 40 CONTINUE END IF ELSE IF (BETA.EQ.DBLE(ZERO)) THEN DO 60 J = 1,N DO 50 I = J,N C(I,J) = ZERO 50 CONTINUE 60 CONTINUE ELSE DO 80 J = 1,N C(J,J) = BETA*DBLE(C(J,J)) DO 70 I = J + 1,N C(I,J) = BETA*C(I,J) 70 CONTINUE 80 CONTINUE END IF END IF RETURN END IF * * Start the operations. * IF (LSAME(TRANS,'N')) THEN * * Form C := alpha*A*B**H + conjg( alpha )*B*A**H + * C. * IF (UPPER) THEN DO 130 J = 1,N IF (BETA.EQ.DBLE(ZERO)) THEN DO 90 I = 1,J C(I,J) = ZERO 90 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 100 I = 1,J - 1 C(I,J) = BETA*C(I,J) 100 CONTINUE C(J,J) = BETA*DBLE(C(J,J)) ELSE C(J,J) = DBLE(C(J,J)) END IF DO 120 L = 1,K IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(B(J,L)) TEMP2 = DCONJG(ALPHA*A(J,L)) DO 110 I = 1,J - 1 C(I,J) = C(I,J) + A(I,L)*TEMP1 + + B(I,L)*TEMP2 110 CONTINUE C(J,J) = DBLE(C(J,J)) + + DBLE(A(J,L)*TEMP1+B(J,L)*TEMP2) END IF 120 CONTINUE 130 CONTINUE ELSE DO 180 J = 1,N IF (BETA.EQ.DBLE(ZERO)) THEN DO 140 I = J,N C(I,J) = ZERO 140 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 150 I = J + 1,N C(I,J) = BETA*C(I,J) 150 CONTINUE C(J,J) = BETA*DBLE(C(J,J)) ELSE C(J,J) = DBLE(C(J,J)) END IF DO 170 L = 1,K IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(B(J,L)) TEMP2 = DCONJG(ALPHA*A(J,L)) DO 160 I = J + 1,N C(I,J) = C(I,J) + A(I,L)*TEMP1 + + B(I,L)*TEMP2 160 CONTINUE C(J,J) = DBLE(C(J,J)) + + DBLE(A(J,L)*TEMP1+B(J,L)*TEMP2) END IF 170 CONTINUE 180 CONTINUE END IF ELSE * * Form C := alpha*A**H*B + conjg( alpha )*B**H*A + * C. * IF (UPPER) THEN DO 210 J = 1,N DO 200 I = 1,J TEMP1 = ZERO TEMP2 = ZERO DO 190 L = 1,K TEMP1 = TEMP1 + DCONJG(A(L,I))*B(L,J) TEMP2 = TEMP2 + DCONJG(B(L,I))*A(L,J) 190 CONTINUE IF (I.EQ.J) THEN IF (BETA.EQ.DBLE(ZERO)) THEN C(J,J) = DBLE(ALPHA*TEMP1+ + DCONJG(ALPHA)*TEMP2) ELSE C(J,J) = BETA*DBLE(C(J,J)) + + DBLE(ALPHA*TEMP1+ + DCONJG(ALPHA)*TEMP2) END IF ELSE IF (BETA.EQ.DBLE(ZERO)) THEN C(I,J) = ALPHA*TEMP1 + DCONJG(ALPHA)*TEMP2 ELSE C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 + + DCONJG(ALPHA)*TEMP2 END IF END IF 200 CONTINUE 210 CONTINUE ELSE DO 240 J = 1,N DO 230 I = J,N TEMP1 = ZERO TEMP2 = ZERO DO 220 L = 1,K TEMP1 = TEMP1 + DCONJG(A(L,I))*B(L,J) TEMP2 = TEMP2 + DCONJG(B(L,I))*A(L,J) 220 CONTINUE IF (I.EQ.J) THEN IF (BETA.EQ.DBLE(ZERO)) THEN C(J,J) = DBLE(ALPHA*TEMP1+ + DCONJG(ALPHA)*TEMP2) ELSE C(J,J) = BETA*DBLE(C(J,J)) + + DBLE(ALPHA*TEMP1+ + DCONJG(ALPHA)*TEMP2) END IF ELSE IF (BETA.EQ.DBLE(ZERO)) THEN C(I,J) = ALPHA*TEMP1 + DCONJG(ALPHA)*TEMP2 ELSE C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 + + DCONJG(ALPHA)*TEMP2 END IF END IF 230 CONTINUE 240 CONTINUE END IF END IF * RETURN * * End of ZHER2K. * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zhpr.f0000644002504400250440000000005012337331321016047 xustar000000000000000020 atime=1400746705 20 ctime=1400746705 elk-2.3.22/src/BLAS/zhpr.f0000644002504400250440000001770712337331321016627 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHPR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZHPR(UPLO,N,ALPHA,X,INCX,AP) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA * INTEGER INCX,N * CHARACTER UPLO * .. * .. Array Arguments .. * COMPLEX*16 AP(*),X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHPR performs the hermitian rank 1 operation *> *> A := alpha*x*x**H + A, *> *> where alpha is a real scalar, x is an n element vector and A is an *> n by n hermitian matrix, supplied in packed form. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: *> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. *> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in,out] AP *> \verbatim *> AP is COMPLEX*16 array of DIMENSION at least *> ( ( n*( n + 1 ) )/2 ). *> Before entry with UPLO = 'U' or 'u', the array AP must *> contain the upper triangular part of the hermitian matrix *> packed sequentially, column by column, so that AP( 1 ) *> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) *> and a( 2, 2 ) respectively, and so on. On exit, the array *> AP is overwritten by the upper triangular part of the *> updated matrix. *> Before entry with UPLO = 'L' or 'l', the array AP must *> contain the lower triangular part of the hermitian matrix *> packed sequentially, column by column, so that AP( 1 ) *> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) *> and a( 3, 1 ) respectively, and so on. On exit, the array *> AP is overwritten by the lower triangular part of the *> updated matrix. *> Note that the imaginary parts of the diagonal elements need *> not be set, they are assumed to be zero, and on exit they *> are set to zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZHPR(UPLO,N,ALPHA,X,INCX,AP) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA INTEGER INCX,N CHARACTER UPLO * .. * .. Array Arguments .. COMPLEX*16 AP(*),X(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,IX,J,JX,K,KK,KX * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 5 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZHPR ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (ALPHA.EQ.DBLE(ZERO))) RETURN * * Set the start point in X if the increment is not unity. * IF (INCX.LE.0) THEN KX = 1 - (N-1)*INCX ELSE IF (INCX.NE.1) THEN KX = 1 END IF * * Start the operations. In this version the elements of the array AP * are accessed sequentially with one pass through AP. * KK = 1 IF (LSAME(UPLO,'U')) THEN * * Form A when upper triangle is stored in AP. * IF (INCX.EQ.1) THEN DO 20 J = 1,N IF (X(J).NE.ZERO) THEN TEMP = ALPHA*DCONJG(X(J)) K = KK DO 10 I = 1,J - 1 AP(K) = AP(K) + X(I)*TEMP K = K + 1 10 CONTINUE AP(KK+J-1) = DBLE(AP(KK+J-1)) + DBLE(X(J)*TEMP) ELSE AP(KK+J-1) = DBLE(AP(KK+J-1)) END IF KK = KK + J 20 CONTINUE ELSE JX = KX DO 40 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = ALPHA*DCONJG(X(JX)) IX = KX DO 30 K = KK,KK + J - 2 AP(K) = AP(K) + X(IX)*TEMP IX = IX + INCX 30 CONTINUE AP(KK+J-1) = DBLE(AP(KK+J-1)) + DBLE(X(JX)*TEMP) ELSE AP(KK+J-1) = DBLE(AP(KK+J-1)) END IF JX = JX + INCX KK = KK + J 40 CONTINUE END IF ELSE * * Form A when lower triangle is stored in AP. * IF (INCX.EQ.1) THEN DO 60 J = 1,N IF (X(J).NE.ZERO) THEN TEMP = ALPHA*DCONJG(X(J)) AP(KK) = DBLE(AP(KK)) + DBLE(TEMP*X(J)) K = KK + 1 DO 50 I = J + 1,N AP(K) = AP(K) + X(I)*TEMP K = K + 1 50 CONTINUE ELSE AP(KK) = DBLE(AP(KK)) END IF KK = KK + N - J + 1 60 CONTINUE ELSE JX = KX DO 80 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = ALPHA*DCONJG(X(JX)) AP(KK) = DBLE(AP(KK)) + DBLE(TEMP*X(JX)) IX = JX DO 70 K = KK + 1,KK + N - J IX = IX + INCX AP(K) = AP(K) + X(IX)*TEMP 70 CONTINUE ELSE AP(KK) = DBLE(AP(KK)) END IF JX = JX + INCX KK = KK + N - J + 1 80 CONTINUE END IF END IF * RETURN * * End of ZHPR . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/xerbla.f0000644002504400250440000000005012337331322016342 xustar000000000000000020 atime=1400746705 20 ctime=1400746706 elk-2.3.22/src/BLAS/xerbla.f0000644002504400250440000000416112337331322017110 0ustar00dewhurstdewhurst00000000000000*> \brief \b XERBLA * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE XERBLA( SRNAME, INFO ) * * .. Scalar Arguments .. * CHARACTER*(*) SRNAME * INTEGER INFO * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> XERBLA is an error handler for the LAPACK routines. *> It is called by an LAPACK routine if an input parameter has an *> invalid value. A message is printed and execution stops. *> *> Installers may consider modifying the STOP statement in order to *> call system-specific exception-handling facilities. *> \endverbatim * * Arguments: * ========== * *> \param[in] SRNAME *> \verbatim *> SRNAME is CHARACTER*(*) *> The name of the routine which called XERBLA. *> \endverbatim *> *> \param[in] INFO *> \verbatim *> INFO is INTEGER *> The position of the invalid parameter in the parameter list *> of the calling routine. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup aux_blas * * ===================================================================== SUBROUTINE XERBLA( SRNAME, INFO ) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER*(*) SRNAME INTEGER INFO * .. * * ===================================================================== * * .. Intrinsic Functions .. INTRINSIC LEN_TRIM * .. * .. Executable Statements .. * WRITE( *, FMT = 9999 )SRNAME( 1:LEN_TRIM( SRNAME ) ), INFO * STOP * 9999 FORMAT( ' ** On entry to ', A, ' parameter number ', I2, ' had ', $ 'an illegal value' ) * * End of XERBLA * END elk-2.3.22/src/BLAS/PaxHeaders.22528/daxpy.f0000644002504400250440000000005012337331322016212 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/daxpy.f0000644002504400250440000000520112337331322016754 0ustar00dewhurstdewhurst00000000000000*> \brief \b DAXPY * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY) * * .. Scalar Arguments .. * DOUBLE PRECISION DA * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * DOUBLE PRECISION DX(*),DY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DAXPY constant times a vector plus a vector. *> uses unrolled loops for increments equal to one. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, linpack, 3/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION DA INTEGER INCX,INCY,N * .. * .. Array Arguments .. DOUBLE PRECISION DX(*),DY(*) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY,M,MP1 * .. * .. Intrinsic Functions .. INTRINSIC MOD * .. IF (N.LE.0) RETURN IF (DA.EQ.0.0d0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 * * * clean-up loop * M = MOD(N,4) IF (M.NE.0) THEN DO I = 1,M DY(I) = DY(I) + DA*DX(I) END DO END IF IF (N.LT.4) RETURN MP1 = M + 1 DO I = MP1,N,4 DY(I) = DY(I) + DA*DX(I) DY(I+1) = DY(I+1) + DA*DX(I+1) DY(I+2) = DY(I+2) + DA*DX(I+2) DY(I+3) = DY(I+3) + DA*DX(I+3) END DO ELSE * * code for unequal increments or equal increments * not equal to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N DY(IY) = DY(IY) + DA*DX(IX) IX = IX + INCX IY = IY + INCY END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/ztpmv.f0000644002504400250440000000005012337331322016245 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/ztpmv.f0000644002504400250440000003000112337331322017003 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTPMV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX) * * .. Scalar Arguments .. * INTEGER INCX,N * CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. * COMPLEX*16 AP(*),X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTPMV performs one of the matrix-vector operations *> *> x := A*x, or x := A**T*x, or x := A**H*x, *> *> where x is an n element vector and A is an n by n unit, or non-unit, *> upper or lower triangular matrix, supplied in packed form. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' x := A*x. *> *> TRANS = 'T' or 't' x := A**T*x. *> *> TRANS = 'C' or 'c' x := A**H*x. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] AP *> \verbatim *> AP is COMPLEX*16 array of DIMENSION at least *> ( ( n*( n + 1 ) )/2 ). *> Before entry with UPLO = 'U' or 'u', the array AP must *> contain the upper triangular matrix packed sequentially, *> column by column, so that AP( 1 ) contains a( 1, 1 ), *> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) *> respectively, and so on. *> Before entry with UPLO = 'L' or 'l', the array AP must *> contain the lower triangular matrix packed sequentially, *> column by column, so that AP( 1 ) contains a( 1, 1 ), *> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) *> respectively, and so on. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced, but are assumed to be unity. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is (input/output) COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. On exit, X is overwritten with the *> tranformed vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> The vector and matrix arguments are not referenced when N = 0, or M = 0 *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,N CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. COMPLEX*16 AP(*),X(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,IX,J,JX,K,KK,KX LOGICAL NOCONJ,NOUNIT * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. + .NOT.LSAME(TRANS,'C')) THEN INFO = 2 ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (INCX.EQ.0) THEN INFO = 7 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZTPMV ',INFO) RETURN END IF * * Quick return if possible. * IF (N.EQ.0) RETURN * NOCONJ = LSAME(TRANS,'T') NOUNIT = LSAME(DIAG,'N') * * Set up the start point in X if the increment is not unity. This * will be ( N - 1 )*INCX too small for descending loops. * IF (INCX.LE.0) THEN KX = 1 - (N-1)*INCX ELSE IF (INCX.NE.1) THEN KX = 1 END IF * * Start the operations. In this version the elements of AP are * accessed sequentially with one pass through AP. * IF (LSAME(TRANS,'N')) THEN * * Form x:= A*x. * IF (LSAME(UPLO,'U')) THEN KK = 1 IF (INCX.EQ.1) THEN DO 20 J = 1,N IF (X(J).NE.ZERO) THEN TEMP = X(J) K = KK DO 10 I = 1,J - 1 X(I) = X(I) + TEMP*AP(K) K = K + 1 10 CONTINUE IF (NOUNIT) X(J) = X(J)*AP(KK+J-1) END IF KK = KK + J 20 CONTINUE ELSE JX = KX DO 40 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = X(JX) IX = KX DO 30 K = KK,KK + J - 2 X(IX) = X(IX) + TEMP*AP(K) IX = IX + INCX 30 CONTINUE IF (NOUNIT) X(JX) = X(JX)*AP(KK+J-1) END IF JX = JX + INCX KK = KK + J 40 CONTINUE END IF ELSE KK = (N* (N+1))/2 IF (INCX.EQ.1) THEN DO 60 J = N,1,-1 IF (X(J).NE.ZERO) THEN TEMP = X(J) K = KK DO 50 I = N,J + 1,-1 X(I) = X(I) + TEMP*AP(K) K = K - 1 50 CONTINUE IF (NOUNIT) X(J) = X(J)*AP(KK-N+J) END IF KK = KK - (N-J+1) 60 CONTINUE ELSE KX = KX + (N-1)*INCX JX = KX DO 80 J = N,1,-1 IF (X(JX).NE.ZERO) THEN TEMP = X(JX) IX = KX DO 70 K = KK,KK - (N- (J+1)),-1 X(IX) = X(IX) + TEMP*AP(K) IX = IX - INCX 70 CONTINUE IF (NOUNIT) X(JX) = X(JX)*AP(KK-N+J) END IF JX = JX - INCX KK = KK - (N-J+1) 80 CONTINUE END IF END IF ELSE * * Form x := A**T*x or x := A**H*x. * IF (LSAME(UPLO,'U')) THEN KK = (N* (N+1))/2 IF (INCX.EQ.1) THEN DO 110 J = N,1,-1 TEMP = X(J) K = KK - 1 IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*AP(KK) DO 90 I = J - 1,1,-1 TEMP = TEMP + AP(K)*X(I) K = K - 1 90 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(AP(KK)) DO 100 I = J - 1,1,-1 TEMP = TEMP + DCONJG(AP(K))*X(I) K = K - 1 100 CONTINUE END IF X(J) = TEMP KK = KK - J 110 CONTINUE ELSE JX = KX + (N-1)*INCX DO 140 J = N,1,-1 TEMP = X(JX) IX = JX IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*AP(KK) DO 120 K = KK - 1,KK - J + 1,-1 IX = IX - INCX TEMP = TEMP + AP(K)*X(IX) 120 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(AP(KK)) DO 130 K = KK - 1,KK - J + 1,-1 IX = IX - INCX TEMP = TEMP + DCONJG(AP(K))*X(IX) 130 CONTINUE END IF X(JX) = TEMP JX = JX - INCX KK = KK - J 140 CONTINUE END IF ELSE KK = 1 IF (INCX.EQ.1) THEN DO 170 J = 1,N TEMP = X(J) K = KK + 1 IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*AP(KK) DO 150 I = J + 1,N TEMP = TEMP + AP(K)*X(I) K = K + 1 150 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(AP(KK)) DO 160 I = J + 1,N TEMP = TEMP + DCONJG(AP(K))*X(I) K = K + 1 160 CONTINUE END IF X(J) = TEMP KK = KK + (N-J+1) 170 CONTINUE ELSE JX = KX DO 200 J = 1,N TEMP = X(JX) IX = JX IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*AP(KK) DO 180 K = KK + 1,KK + N - J IX = IX + INCX TEMP = TEMP + AP(K)*X(IX) 180 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(AP(KK)) DO 190 K = KK + 1,KK + N - J IX = IX + INCX TEMP = TEMP + DCONJG(AP(K))*X(IX) 190 CONTINUE END IF X(JX) = TEMP JX = JX + INCX KK = KK + (N-J+1) 200 CONTINUE END IF END IF END IF * RETURN * * End of ZTPMV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zhpmv.f0000644002504400250440000000005012337331322016231 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zhpmv.f0000644002504400250440000002277112337331322017006 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHPMV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA,BETA * INTEGER INCX,INCY,N * CHARACTER UPLO * .. * .. Array Arguments .. * COMPLEX*16 AP(*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHPMV performs the matrix-vector operation *> *> y := alpha*A*x + beta*y, *> *> where alpha and beta are scalars, x and y are n element vectors and *> A is an n by n hermitian matrix, supplied in packed form. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: *> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. *> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] AP *> \verbatim *> AP is COMPLEX*16 array of DIMENSION at least *> ( ( n*( n + 1 ) )/2 ). *> Before entry with UPLO = 'U' or 'u', the array AP must *> contain the upper triangular part of the hermitian matrix *> packed sequentially, column by column, so that AP( 1 ) *> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) *> and a( 2, 2 ) respectively, and so on. *> Before entry with UPLO = 'L' or 'l', the array AP must *> contain the lower triangular part of the hermitian matrix *> packed sequentially, column by column, so that AP( 1 ) *> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) *> and a( 3, 1 ) respectively, and so on. *> Note that the imaginary parts of the diagonal elements need *> not be set and are assumed to be zero. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is COMPLEX*16 *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then Y need not be set on input. *> \endverbatim *> *> \param[in,out] Y *> \verbatim *> Y is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. On exit, Y is overwritten by the updated *> vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> The vector and matrix arguments are not referenced when N = 0, or M = 0 *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA,BETA INTEGER INCX,INCY,N CHARACTER UPLO * .. * .. Array Arguments .. COMPLEX*16 AP(*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER (ONE= (1.0D+0,0.0D+0)) COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP1,TEMP2 INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 6 ELSE IF (INCY.EQ.0) THEN INFO = 9 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZHPMV ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN * * Set up the start points in X and Y. * IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (N-1)*INCX END IF IF (INCY.GT.0) THEN KY = 1 ELSE KY = 1 - (N-1)*INCY END IF * * Start the operations. In this version the elements of the array AP * are accessed sequentially with one pass through AP. * * First form y := beta*y. * IF (BETA.NE.ONE) THEN IF (INCY.EQ.1) THEN IF (BETA.EQ.ZERO) THEN DO 10 I = 1,N Y(I) = ZERO 10 CONTINUE ELSE DO 20 I = 1,N Y(I) = BETA*Y(I) 20 CONTINUE END IF ELSE IY = KY IF (BETA.EQ.ZERO) THEN DO 30 I = 1,N Y(IY) = ZERO IY = IY + INCY 30 CONTINUE ELSE DO 40 I = 1,N Y(IY) = BETA*Y(IY) IY = IY + INCY 40 CONTINUE END IF END IF END IF IF (ALPHA.EQ.ZERO) RETURN KK = 1 IF (LSAME(UPLO,'U')) THEN * * Form y when AP contains the upper triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 60 J = 1,N TEMP1 = ALPHA*X(J) TEMP2 = ZERO K = KK DO 50 I = 1,J - 1 Y(I) = Y(I) + TEMP1*AP(K) TEMP2 = TEMP2 + DCONJG(AP(K))*X(I) K = K + 1 50 CONTINUE Y(J) = Y(J) + TEMP1*DBLE(AP(KK+J-1)) + ALPHA*TEMP2 KK = KK + J 60 CONTINUE ELSE JX = KX JY = KY DO 80 J = 1,N TEMP1 = ALPHA*X(JX) TEMP2 = ZERO IX = KX IY = KY DO 70 K = KK,KK + J - 2 Y(IY) = Y(IY) + TEMP1*AP(K) TEMP2 = TEMP2 + DCONJG(AP(K))*X(IX) IX = IX + INCX IY = IY + INCY 70 CONTINUE Y(JY) = Y(JY) + TEMP1*DBLE(AP(KK+J-1)) + ALPHA*TEMP2 JX = JX + INCX JY = JY + INCY KK = KK + J 80 CONTINUE END IF ELSE * * Form y when AP contains the lower triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 100 J = 1,N TEMP1 = ALPHA*X(J) TEMP2 = ZERO Y(J) = Y(J) + TEMP1*DBLE(AP(KK)) K = KK + 1 DO 90 I = J + 1,N Y(I) = Y(I) + TEMP1*AP(K) TEMP2 = TEMP2 + DCONJG(AP(K))*X(I) K = K + 1 90 CONTINUE Y(J) = Y(J) + ALPHA*TEMP2 KK = KK + (N-J+1) 100 CONTINUE ELSE JX = KX JY = KY DO 120 J = 1,N TEMP1 = ALPHA*X(JX) TEMP2 = ZERO Y(JY) = Y(JY) + TEMP1*DBLE(AP(KK)) IX = JX IY = JY DO 110 K = KK + 1,KK + N - J IX = IX + INCX IY = IY + INCY Y(IY) = Y(IY) + TEMP1*AP(K) TEMP2 = TEMP2 + DCONJG(AP(K))*X(IX) 110 CONTINUE Y(JY) = Y(JY) + ALPHA*TEMP2 JX = JX + INCX JY = JY + INCY KK = KK + (N-J+1) 120 CONTINUE END IF END IF * RETURN * * End of ZHPMV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dsyr2.f0000644002504400250440000000005012337331322016130 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dsyr2.f0000644002504400250440000002064212337331322016700 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYR2 * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA * INTEGER INCX,INCY,LDA,N * CHARACTER UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYR2 performs the symmetric rank 2 operation *> *> A := alpha*x*y**T + alpha*y*x**T + A, *> *> where alpha is a scalar, x and y are n element vectors and A is an n *> by n symmetric matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is DOUBLE PRECISION array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is DOUBLE PRECISION array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular part of the symmetric matrix and the strictly *> lower triangular part of A is not referenced. On exit, the *> upper triangular part of the array A is overwritten by the *> upper triangular part of the updated matrix. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular part of the symmetric matrix and the strictly *> upper triangular part of A is not referenced. On exit, the *> lower triangular part of the array A is overwritten by the *> lower triangular part of the updated matrix. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE DSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA INTEGER INCX,INCY,LDA,N CHARACTER UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER (ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION TEMP1,TEMP2 INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 5 ELSE IF (INCY.EQ.0) THEN INFO = 7 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 9 END IF IF (INFO.NE.0) THEN CALL XERBLA('DSYR2 ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN * * Set up the start points in X and Y if the increments are not both * unity. * IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (N-1)*INCX END IF IF (INCY.GT.0) THEN KY = 1 ELSE KY = 1 - (N-1)*INCY END IF JX = KX JY = KY END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through the triangular part * of A. * IF (LSAME(UPLO,'U')) THEN * * Form A when A is stored in the upper triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 20 J = 1,N IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN TEMP1 = ALPHA*Y(J) TEMP2 = ALPHA*X(J) DO 10 I = 1,J A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2 10 CONTINUE END IF 20 CONTINUE ELSE DO 40 J = 1,N IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN TEMP1 = ALPHA*Y(JY) TEMP2 = ALPHA*X(JX) IX = KX IY = KY DO 30 I = 1,J A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2 IX = IX + INCX IY = IY + INCY 30 CONTINUE END IF JX = JX + INCX JY = JY + INCY 40 CONTINUE END IF ELSE * * Form A when A is stored in the lower triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 60 J = 1,N IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN TEMP1 = ALPHA*Y(J) TEMP2 = ALPHA*X(J) DO 50 I = J,N A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2 50 CONTINUE END IF 60 CONTINUE ELSE DO 80 J = 1,N IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN TEMP1 = ALPHA*Y(JY) TEMP2 = ALPHA*X(JX) IX = JX IY = JY DO 70 I = J,N A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2 IX = IX + INCX IY = IY + INCY 70 CONTINUE END IF JX = JX + INCX JY = JY + INCY 80 CONTINUE END IF END IF * RETURN * * End of DSYR2 . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dswap.f0000644002504400250440000000005012337331322016203 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dswap.f0000644002504400250440000000534012337331322016751 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSWAP * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DSWAP(N,DX,INCX,DY,INCY) * * .. Scalar Arguments .. * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * DOUBLE PRECISION DX(*),DY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> interchanges two vectors. *> uses unrolled loops for increments equal one. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, linpack, 3/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE DSWAP(N,DX,INCX,DY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,INCY,N * .. * .. Array Arguments .. DOUBLE PRECISION DX(*),DY(*) * .. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DTEMP INTEGER I,IX,IY,M,MP1 * .. * .. Intrinsic Functions .. INTRINSIC MOD * .. IF (N.LE.0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 * * * clean-up loop * M = MOD(N,3) IF (M.NE.0) THEN DO I = 1,M DTEMP = DX(I) DX(I) = DY(I) DY(I) = DTEMP END DO IF (N.LT.3) RETURN END IF MP1 = M + 1 DO I = MP1,N,3 DTEMP = DX(I) DX(I) = DY(I) DY(I) = DTEMP DTEMP = DX(I+1) DX(I+1) = DY(I+1) DY(I+1) = DTEMP DTEMP = DX(I+2) DX(I+2) = DY(I+2) DY(I+2) = DTEMP END DO ELSE * * code for unequal increments or equal increments not equal * to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N DTEMP = DX(IX) DX(IX) = DY(IY) DY(IY) = DTEMP IX = IX + INCX IY = IY + INCY END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/ztrmv.f0000644002504400250440000000005012337331322016247 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/ztrmv.f0000644002504400250440000002651612337331322017025 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTRMV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX) * * .. Scalar Arguments .. * INTEGER INCX,LDA,N * CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTRMV performs one of the matrix-vector operations *> *> x := A*x, or x := A**T*x, or x := A**H*x, *> *> where x is an n element vector and A is an n by n unit, or non-unit, *> upper or lower triangular matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' x := A*x. *> *> TRANS = 'T' or 't' x := A**T*x. *> *> TRANS = 'C' or 'c' x := A**H*x. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular matrix and the strictly lower triangular part of *> A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular matrix and the strictly upper triangular part of *> A is not referenced. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced either, but are assumed to be unity. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim *> *> \param[in] X *> \verbatim *> X is (input/output) COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. On exit, X is overwritten with the *> tranformed vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> The vector and matrix arguments are not referenced when N = 0, or M = 0 *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,LDA,N CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),X(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,IX,J,JX,KX LOGICAL NOCONJ,NOUNIT * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. + .NOT.LSAME(TRANS,'C')) THEN INFO = 2 ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 6 ELSE IF (INCX.EQ.0) THEN INFO = 8 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZTRMV ',INFO) RETURN END IF * * Quick return if possible. * IF (N.EQ.0) RETURN * NOCONJ = LSAME(TRANS,'T') NOUNIT = LSAME(DIAG,'N') * * Set up the start point in X if the increment is not unity. This * will be ( N - 1 )*INCX too small for descending loops. * IF (INCX.LE.0) THEN KX = 1 - (N-1)*INCX ELSE IF (INCX.NE.1) THEN KX = 1 END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF (LSAME(TRANS,'N')) THEN * * Form x := A*x. * IF (LSAME(UPLO,'U')) THEN IF (INCX.EQ.1) THEN DO 20 J = 1,N IF (X(J).NE.ZERO) THEN TEMP = X(J) DO 10 I = 1,J - 1 X(I) = X(I) + TEMP*A(I,J) 10 CONTINUE IF (NOUNIT) X(J) = X(J)*A(J,J) END IF 20 CONTINUE ELSE JX = KX DO 40 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = X(JX) IX = KX DO 30 I = 1,J - 1 X(IX) = X(IX) + TEMP*A(I,J) IX = IX + INCX 30 CONTINUE IF (NOUNIT) X(JX) = X(JX)*A(J,J) END IF JX = JX + INCX 40 CONTINUE END IF ELSE IF (INCX.EQ.1) THEN DO 60 J = N,1,-1 IF (X(J).NE.ZERO) THEN TEMP = X(J) DO 50 I = N,J + 1,-1 X(I) = X(I) + TEMP*A(I,J) 50 CONTINUE IF (NOUNIT) X(J) = X(J)*A(J,J) END IF 60 CONTINUE ELSE KX = KX + (N-1)*INCX JX = KX DO 80 J = N,1,-1 IF (X(JX).NE.ZERO) THEN TEMP = X(JX) IX = KX DO 70 I = N,J + 1,-1 X(IX) = X(IX) + TEMP*A(I,J) IX = IX - INCX 70 CONTINUE IF (NOUNIT) X(JX) = X(JX)*A(J,J) END IF JX = JX - INCX 80 CONTINUE END IF END IF ELSE * * Form x := A**T*x or x := A**H*x. * IF (LSAME(UPLO,'U')) THEN IF (INCX.EQ.1) THEN DO 110 J = N,1,-1 TEMP = X(J) IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*A(J,J) DO 90 I = J - 1,1,-1 TEMP = TEMP + A(I,J)*X(I) 90 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(A(J,J)) DO 100 I = J - 1,1,-1 TEMP = TEMP + DCONJG(A(I,J))*X(I) 100 CONTINUE END IF X(J) = TEMP 110 CONTINUE ELSE JX = KX + (N-1)*INCX DO 140 J = N,1,-1 TEMP = X(JX) IX = JX IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*A(J,J) DO 120 I = J - 1,1,-1 IX = IX - INCX TEMP = TEMP + A(I,J)*X(IX) 120 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(A(J,J)) DO 130 I = J - 1,1,-1 IX = IX - INCX TEMP = TEMP + DCONJG(A(I,J))*X(IX) 130 CONTINUE END IF X(JX) = TEMP JX = JX - INCX 140 CONTINUE END IF ELSE IF (INCX.EQ.1) THEN DO 170 J = 1,N TEMP = X(J) IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*A(J,J) DO 150 I = J + 1,N TEMP = TEMP + A(I,J)*X(I) 150 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(A(J,J)) DO 160 I = J + 1,N TEMP = TEMP + DCONJG(A(I,J))*X(I) 160 CONTINUE END IF X(J) = TEMP 170 CONTINUE ELSE JX = KX DO 200 J = 1,N TEMP = X(JX) IX = JX IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*A(J,J) DO 180 I = J + 1,N IX = IX + INCX TEMP = TEMP + A(I,J)*X(IX) 180 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(A(J,J)) DO 190 I = J + 1,N IX = IX + INCX TEMP = TEMP + DCONJG(A(I,J))*X(IX) 190 CONTINUE END IF X(JX) = TEMP JX = JX + INCX 200 CONTINUE END IF END IF END IF * RETURN * * End of ZTRMV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zhpr2.f0000644002504400250440000000005012337331322016132 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zhpr2.f0000644002504400250440000002265512337331322016710 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHPR2 * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA * INTEGER INCX,INCY,N * CHARACTER UPLO * .. * .. Array Arguments .. * COMPLEX*16 AP(*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHPR2 performs the hermitian rank 2 operation *> *> A := alpha*x*y**H + conjg( alpha )*y*x**H + A, *> *> where alpha is a scalar, x and y are n element vectors and A is an *> n by n hermitian matrix, supplied in packed form. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: *> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. *> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim *> *> \param[in,out] AP *> \verbatim *> AP is COMPLEX*16 array of DIMENSION at least *> ( ( n*( n + 1 ) )/2 ). *> Before entry with UPLO = 'U' or 'u', the array AP must *> contain the upper triangular part of the hermitian matrix *> packed sequentially, column by column, so that AP( 1 ) *> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) *> and a( 2, 2 ) respectively, and so on. On exit, the array *> AP is overwritten by the upper triangular part of the *> updated matrix. *> Before entry with UPLO = 'L' or 'l', the array AP must *> contain the lower triangular part of the hermitian matrix *> packed sequentially, column by column, so that AP( 1 ) *> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) *> and a( 3, 1 ) respectively, and so on. On exit, the array *> AP is overwritten by the lower triangular part of the *> updated matrix. *> Note that the imaginary parts of the diagonal elements need *> not be set, they are assumed to be zero, and on exit they *> are set to zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA INTEGER INCX,INCY,N CHARACTER UPLO * .. * .. Array Arguments .. COMPLEX*16 AP(*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP1,TEMP2 INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 5 ELSE IF (INCY.EQ.0) THEN INFO = 7 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZHPR2 ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN * * Set up the start points in X and Y if the increments are not both * unity. * IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (N-1)*INCX END IF IF (INCY.GT.0) THEN KY = 1 ELSE KY = 1 - (N-1)*INCY END IF JX = KX JY = KY END IF * * Start the operations. In this version the elements of the array AP * are accessed sequentially with one pass through AP. * KK = 1 IF (LSAME(UPLO,'U')) THEN * * Form A when upper triangle is stored in AP. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 20 J = 1,N IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(Y(J)) TEMP2 = DCONJG(ALPHA*X(J)) K = KK DO 10 I = 1,J - 1 AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2 K = K + 1 10 CONTINUE AP(KK+J-1) = DBLE(AP(KK+J-1)) + + DBLE(X(J)*TEMP1+Y(J)*TEMP2) ELSE AP(KK+J-1) = DBLE(AP(KK+J-1)) END IF KK = KK + J 20 CONTINUE ELSE DO 40 J = 1,N IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(Y(JY)) TEMP2 = DCONJG(ALPHA*X(JX)) IX = KX IY = KY DO 30 K = KK,KK + J - 2 AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2 IX = IX + INCX IY = IY + INCY 30 CONTINUE AP(KK+J-1) = DBLE(AP(KK+J-1)) + + DBLE(X(JX)*TEMP1+Y(JY)*TEMP2) ELSE AP(KK+J-1) = DBLE(AP(KK+J-1)) END IF JX = JX + INCX JY = JY + INCY KK = KK + J 40 CONTINUE END IF ELSE * * Form A when lower triangle is stored in AP. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 60 J = 1,N IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(Y(J)) TEMP2 = DCONJG(ALPHA*X(J)) AP(KK) = DBLE(AP(KK)) + + DBLE(X(J)*TEMP1+Y(J)*TEMP2) K = KK + 1 DO 50 I = J + 1,N AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2 K = K + 1 50 CONTINUE ELSE AP(KK) = DBLE(AP(KK)) END IF KK = KK + N - J + 1 60 CONTINUE ELSE DO 80 J = 1,N IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(Y(JY)) TEMP2 = DCONJG(ALPHA*X(JX)) AP(KK) = DBLE(AP(KK)) + + DBLE(X(JX)*TEMP1+Y(JY)*TEMP2) IX = JX IY = JY DO 70 K = KK + 1,KK + N - J IX = IX + INCX IY = IY + INCY AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2 70 CONTINUE ELSE AP(KK) = DBLE(AP(KK)) END IF JX = JX + INCX JY = JY + INCY KK = KK + N - J + 1 80 CONTINUE END IF END IF * RETURN * * End of ZHPR2 . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dcabs1.f0000644002504400250440000000005012337331322016222 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dcabs1.f0000644002504400250440000000242312337331322016767 0ustar00dewhurstdewhurst00000000000000*> \brief \b DCABS1 * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DCABS1(Z) * * .. Scalar Arguments .. * COMPLEX*16 Z * .. * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DCABS1 computes absolute value of a double complex number *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * * ===================================================================== DOUBLE PRECISION FUNCTION DCABS1(Z) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 Z * .. * .. * ===================================================================== * * .. Intrinsic Functions .. INTRINSIC ABS,DBLE,DIMAG * DCABS1 = ABS(DBLE(Z)) + ABS(DIMAG(Z)) RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/ztpsv.f0000644002504400250440000000005012337331322016253 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/ztpsv.f0000644002504400250440000003013412337331322017020 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTPSV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX) * * .. Scalar Arguments .. * INTEGER INCX,N * CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. * COMPLEX*16 AP(*),X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTPSV solves one of the systems of equations *> *> A*x = b, or A**T*x = b, or A**H*x = b, *> *> where b and x are n element vectors and A is an n by n unit, or *> non-unit, upper or lower triangular matrix, supplied in packed form. *> *> No test for singularity or near-singularity is included in this *> routine. Such tests must be performed before calling this routine. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: *> *> TRANS = 'N' or 'n' A*x = b. *> *> TRANS = 'T' or 't' A**T*x = b. *> *> TRANS = 'C' or 'c' A**H*x = b. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] AP *> \verbatim *> AP is COMPLEX*16 array of DIMENSION at least *> ( ( n*( n + 1 ) )/2 ). *> Before entry with UPLO = 'U' or 'u', the array AP must *> contain the upper triangular matrix packed sequentially, *> column by column, so that AP( 1 ) contains a( 1, 1 ), *> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) *> respectively, and so on. *> Before entry with UPLO = 'L' or 'l', the array AP must *> contain the lower triangular matrix packed sequentially, *> column by column, so that AP( 1 ) contains a( 1, 1 ), *> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) *> respectively, and so on. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced, but are assumed to be unity. *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element right-hand side vector b. On exit, X is overwritten *> with the solution vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,N CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. COMPLEX*16 AP(*),X(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,IX,J,JX,K,KK,KX LOGICAL NOCONJ,NOUNIT * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. + .NOT.LSAME(TRANS,'C')) THEN INFO = 2 ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (INCX.EQ.0) THEN INFO = 7 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZTPSV ',INFO) RETURN END IF * * Quick return if possible. * IF (N.EQ.0) RETURN * NOCONJ = LSAME(TRANS,'T') NOUNIT = LSAME(DIAG,'N') * * Set up the start point in X if the increment is not unity. This * will be ( N - 1 )*INCX too small for descending loops. * IF (INCX.LE.0) THEN KX = 1 - (N-1)*INCX ELSE IF (INCX.NE.1) THEN KX = 1 END IF * * Start the operations. In this version the elements of AP are * accessed sequentially with one pass through AP. * IF (LSAME(TRANS,'N')) THEN * * Form x := inv( A )*x. * IF (LSAME(UPLO,'U')) THEN KK = (N* (N+1))/2 IF (INCX.EQ.1) THEN DO 20 J = N,1,-1 IF (X(J).NE.ZERO) THEN IF (NOUNIT) X(J) = X(J)/AP(KK) TEMP = X(J) K = KK - 1 DO 10 I = J - 1,1,-1 X(I) = X(I) - TEMP*AP(K) K = K - 1 10 CONTINUE END IF KK = KK - J 20 CONTINUE ELSE JX = KX + (N-1)*INCX DO 40 J = N,1,-1 IF (X(JX).NE.ZERO) THEN IF (NOUNIT) X(JX) = X(JX)/AP(KK) TEMP = X(JX) IX = JX DO 30 K = KK - 1,KK - J + 1,-1 IX = IX - INCX X(IX) = X(IX) - TEMP*AP(K) 30 CONTINUE END IF JX = JX - INCX KK = KK - J 40 CONTINUE END IF ELSE KK = 1 IF (INCX.EQ.1) THEN DO 60 J = 1,N IF (X(J).NE.ZERO) THEN IF (NOUNIT) X(J) = X(J)/AP(KK) TEMP = X(J) K = KK + 1 DO 50 I = J + 1,N X(I) = X(I) - TEMP*AP(K) K = K + 1 50 CONTINUE END IF KK = KK + (N-J+1) 60 CONTINUE ELSE JX = KX DO 80 J = 1,N IF (X(JX).NE.ZERO) THEN IF (NOUNIT) X(JX) = X(JX)/AP(KK) TEMP = X(JX) IX = JX DO 70 K = KK + 1,KK + N - J IX = IX + INCX X(IX) = X(IX) - TEMP*AP(K) 70 CONTINUE END IF JX = JX + INCX KK = KK + (N-J+1) 80 CONTINUE END IF END IF ELSE * * Form x := inv( A**T )*x or x := inv( A**H )*x. * IF (LSAME(UPLO,'U')) THEN KK = 1 IF (INCX.EQ.1) THEN DO 110 J = 1,N TEMP = X(J) K = KK IF (NOCONJ) THEN DO 90 I = 1,J - 1 TEMP = TEMP - AP(K)*X(I) K = K + 1 90 CONTINUE IF (NOUNIT) TEMP = TEMP/AP(KK+J-1) ELSE DO 100 I = 1,J - 1 TEMP = TEMP - DCONJG(AP(K))*X(I) K = K + 1 100 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK+J-1)) END IF X(J) = TEMP KK = KK + J 110 CONTINUE ELSE JX = KX DO 140 J = 1,N TEMP = X(JX) IX = KX IF (NOCONJ) THEN DO 120 K = KK,KK + J - 2 TEMP = TEMP - AP(K)*X(IX) IX = IX + INCX 120 CONTINUE IF (NOUNIT) TEMP = TEMP/AP(KK+J-1) ELSE DO 130 K = KK,KK + J - 2 TEMP = TEMP - DCONJG(AP(K))*X(IX) IX = IX + INCX 130 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK+J-1)) END IF X(JX) = TEMP JX = JX + INCX KK = KK + J 140 CONTINUE END IF ELSE KK = (N* (N+1))/2 IF (INCX.EQ.1) THEN DO 170 J = N,1,-1 TEMP = X(J) K = KK IF (NOCONJ) THEN DO 150 I = N,J + 1,-1 TEMP = TEMP - AP(K)*X(I) K = K - 1 150 CONTINUE IF (NOUNIT) TEMP = TEMP/AP(KK-N+J) ELSE DO 160 I = N,J + 1,-1 TEMP = TEMP - DCONJG(AP(K))*X(I) K = K - 1 160 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK-N+J)) END IF X(J) = TEMP KK = KK - (N-J+1) 170 CONTINUE ELSE KX = KX + (N-1)*INCX JX = KX DO 200 J = N,1,-1 TEMP = X(JX) IX = KX IF (NOCONJ) THEN DO 180 K = KK,KK - (N- (J+1)),-1 TEMP = TEMP - AP(K)*X(IX) IX = IX - INCX 180 CONTINUE IF (NOUNIT) TEMP = TEMP/AP(KK-N+J) ELSE DO 190 K = KK,KK - (N- (J+1)),-1 TEMP = TEMP - DCONJG(AP(K))*X(IX) IX = IX - INCX 190 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK-N+J)) END IF X(JX) = TEMP JX = JX - INCX KK = KK - (N-J+1) 200 CONTINUE END IF END IF END IF * RETURN * * End of ZTPSV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dsyrk.f0000644002504400250440000000005012337331322016221 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dsyrk.f0000644002504400250440000002507412337331322016775 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYRK * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA,BETA * INTEGER K,LDA,LDC,N * CHARACTER TRANS,UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),C(LDC,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYRK performs one of the symmetric rank k operations *> *> C := alpha*A*A**T + beta*C, *> *> or *> *> C := alpha*A**T*A + beta*C, *> *> where alpha and beta are scalars, C is an n by n symmetric matrix *> and A is an n by k matrix in the first case and a k by n matrix *> in the second case. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C. *> *> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C. *> *> TRANS = 'C' or 'c' C := alpha*A**T*A + beta*C. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix C. N must be *> at least zero. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> On entry with TRANS = 'N' or 'n', K specifies the number *> of columns of the matrix A, and on entry with *> TRANS = 'T' or 't' or 'C' or 'c', K specifies the number *> of rows of the matrix A. K must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is *> k when TRANS = 'N' or 'n', and is n otherwise. *> Before entry with TRANS = 'N' or 'n', the leading n by k *> part of the array A must contain the matrix A, otherwise *> the leading k by n part of the array A must contain the *> matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When TRANS = 'N' or 'n' *> then LDA must be at least max( 1, n ), otherwise LDA must *> be at least max( 1, k ). *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION. *> On entry, BETA specifies the scalar beta. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array of DIMENSION ( LDC, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array C must contain the upper *> triangular part of the symmetric matrix and the strictly *> lower triangular part of C is not referenced. On exit, the *> upper triangular part of the array C is overwritten by the *> upper triangular part of the updated matrix. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array C must contain the lower *> triangular part of the symmetric matrix and the strictly *> upper triangular part of C is not referenced. On exit, the *> lower triangular part of the array C is overwritten by the *> lower triangular part of the updated matrix. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> On entry, LDC specifies the first dimension of C as declared *> in the calling (sub) program. LDC must be at least *> max( 1, n ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE DSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA,BETA INTEGER K,LDA,LDC,N CHARACTER TRANS,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),C(LDC,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,J,L,NROWA LOGICAL UPPER * .. * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * * Test the input parameters. * IF (LSAME(TRANS,'N')) THEN NROWA = N ELSE NROWA = K END IF UPPER = LSAME(UPLO,'U') * INFO = 0 IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 1 ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND. + (.NOT.LSAME(TRANS,'T')) .AND. + (.NOT.LSAME(TRANS,'C'))) THEN INFO = 2 ELSE IF (N.LT.0) THEN INFO = 3 ELSE IF (K.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 7 ELSE IF (LDC.LT.MAX(1,N)) THEN INFO = 10 END IF IF (INFO.NE.0) THEN CALL XERBLA('DSYRK ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR. + (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN IF (UPPER) THEN IF (BETA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,J C(I,J) = ZERO 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1,N DO 30 I = 1,J C(I,J) = BETA*C(I,J) 30 CONTINUE 40 CONTINUE END IF ELSE IF (BETA.EQ.ZERO) THEN DO 60 J = 1,N DO 50 I = J,N C(I,J) = ZERO 50 CONTINUE 60 CONTINUE ELSE DO 80 J = 1,N DO 70 I = J,N C(I,J) = BETA*C(I,J) 70 CONTINUE 80 CONTINUE END IF END IF RETURN END IF * * Start the operations. * IF (LSAME(TRANS,'N')) THEN * * Form C := alpha*A*A**T + beta*C. * IF (UPPER) THEN DO 130 J = 1,N IF (BETA.EQ.ZERO) THEN DO 90 I = 1,J C(I,J) = ZERO 90 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 100 I = 1,J C(I,J) = BETA*C(I,J) 100 CONTINUE END IF DO 120 L = 1,K IF (A(J,L).NE.ZERO) THEN TEMP = ALPHA*A(J,L) DO 110 I = 1,J C(I,J) = C(I,J) + TEMP*A(I,L) 110 CONTINUE END IF 120 CONTINUE 130 CONTINUE ELSE DO 180 J = 1,N IF (BETA.EQ.ZERO) THEN DO 140 I = J,N C(I,J) = ZERO 140 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 150 I = J,N C(I,J) = BETA*C(I,J) 150 CONTINUE END IF DO 170 L = 1,K IF (A(J,L).NE.ZERO) THEN TEMP = ALPHA*A(J,L) DO 160 I = J,N C(I,J) = C(I,J) + TEMP*A(I,L) 160 CONTINUE END IF 170 CONTINUE 180 CONTINUE END IF ELSE * * Form C := alpha*A**T*A + beta*C. * IF (UPPER) THEN DO 210 J = 1,N DO 200 I = 1,J TEMP = ZERO DO 190 L = 1,K TEMP = TEMP + A(L,I)*A(L,J) 190 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 200 CONTINUE 210 CONTINUE ELSE DO 240 J = 1,N DO 230 I = J,N TEMP = ZERO DO 220 L = 1,K TEMP = TEMP + A(L,I)*A(L,J) 220 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 230 CONTINUE 240 CONTINUE END IF END IF * RETURN * * End of DSYRK . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/ztrsv.f0000644002504400250440000000005012337331322016255 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/ztrsv.f0000644002504400250440000002663312337331322017033 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTRSV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX) * * .. Scalar Arguments .. * INTEGER INCX,LDA,N * CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTRSV solves one of the systems of equations *> *> A*x = b, or A**T*x = b, or A**H*x = b, *> *> where b and x are n element vectors and A is an n by n unit, or *> non-unit, upper or lower triangular matrix. *> *> No test for singularity or near-singularity is included in this *> routine. Such tests must be performed before calling this routine. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: *> *> TRANS = 'N' or 'n' A*x = b. *> *> TRANS = 'T' or 't' A**T*x = b. *> *> TRANS = 'C' or 'c' A**H*x = b. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular matrix and the strictly lower triangular part of *> A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular matrix and the strictly upper triangular part of *> A is not referenced. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced either, but are assumed to be unity. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element right-hand side vector b. On exit, X is overwritten *> with the solution vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,LDA,N CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),X(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,IX,J,JX,KX LOGICAL NOCONJ,NOUNIT * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. + .NOT.LSAME(TRANS,'C')) THEN INFO = 2 ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 6 ELSE IF (INCX.EQ.0) THEN INFO = 8 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZTRSV ',INFO) RETURN END IF * * Quick return if possible. * IF (N.EQ.0) RETURN * NOCONJ = LSAME(TRANS,'T') NOUNIT = LSAME(DIAG,'N') * * Set up the start point in X if the increment is not unity. This * will be ( N - 1 )*INCX too small for descending loops. * IF (INCX.LE.0) THEN KX = 1 - (N-1)*INCX ELSE IF (INCX.NE.1) THEN KX = 1 END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF (LSAME(TRANS,'N')) THEN * * Form x := inv( A )*x. * IF (LSAME(UPLO,'U')) THEN IF (INCX.EQ.1) THEN DO 20 J = N,1,-1 IF (X(J).NE.ZERO) THEN IF (NOUNIT) X(J) = X(J)/A(J,J) TEMP = X(J) DO 10 I = J - 1,1,-1 X(I) = X(I) - TEMP*A(I,J) 10 CONTINUE END IF 20 CONTINUE ELSE JX = KX + (N-1)*INCX DO 40 J = N,1,-1 IF (X(JX).NE.ZERO) THEN IF (NOUNIT) X(JX) = X(JX)/A(J,J) TEMP = X(JX) IX = JX DO 30 I = J - 1,1,-1 IX = IX - INCX X(IX) = X(IX) - TEMP*A(I,J) 30 CONTINUE END IF JX = JX - INCX 40 CONTINUE END IF ELSE IF (INCX.EQ.1) THEN DO 60 J = 1,N IF (X(J).NE.ZERO) THEN IF (NOUNIT) X(J) = X(J)/A(J,J) TEMP = X(J) DO 50 I = J + 1,N X(I) = X(I) - TEMP*A(I,J) 50 CONTINUE END IF 60 CONTINUE ELSE JX = KX DO 80 J = 1,N IF (X(JX).NE.ZERO) THEN IF (NOUNIT) X(JX) = X(JX)/A(J,J) TEMP = X(JX) IX = JX DO 70 I = J + 1,N IX = IX + INCX X(IX) = X(IX) - TEMP*A(I,J) 70 CONTINUE END IF JX = JX + INCX 80 CONTINUE END IF END IF ELSE * * Form x := inv( A**T )*x or x := inv( A**H )*x. * IF (LSAME(UPLO,'U')) THEN IF (INCX.EQ.1) THEN DO 110 J = 1,N TEMP = X(J) IF (NOCONJ) THEN DO 90 I = 1,J - 1 TEMP = TEMP - A(I,J)*X(I) 90 CONTINUE IF (NOUNIT) TEMP = TEMP/A(J,J) ELSE DO 100 I = 1,J - 1 TEMP = TEMP - DCONJG(A(I,J))*X(I) 100 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(A(J,J)) END IF X(J) = TEMP 110 CONTINUE ELSE JX = KX DO 140 J = 1,N IX = KX TEMP = X(JX) IF (NOCONJ) THEN DO 120 I = 1,J - 1 TEMP = TEMP - A(I,J)*X(IX) IX = IX + INCX 120 CONTINUE IF (NOUNIT) TEMP = TEMP/A(J,J) ELSE DO 130 I = 1,J - 1 TEMP = TEMP - DCONJG(A(I,J))*X(IX) IX = IX + INCX 130 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(A(J,J)) END IF X(JX) = TEMP JX = JX + INCX 140 CONTINUE END IF ELSE IF (INCX.EQ.1) THEN DO 170 J = N,1,-1 TEMP = X(J) IF (NOCONJ) THEN DO 150 I = N,J + 1,-1 TEMP = TEMP - A(I,J)*X(I) 150 CONTINUE IF (NOUNIT) TEMP = TEMP/A(J,J) ELSE DO 160 I = N,J + 1,-1 TEMP = TEMP - DCONJG(A(I,J))*X(I) 160 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(A(J,J)) END IF X(J) = TEMP 170 CONTINUE ELSE KX = KX + (N-1)*INCX JX = KX DO 200 J = N,1,-1 IX = KX TEMP = X(JX) IF (NOCONJ) THEN DO 180 I = N,J + 1,-1 TEMP = TEMP - A(I,J)*X(IX) IX = IX - INCX 180 CONTINUE IF (NOUNIT) TEMP = TEMP/A(J,J) ELSE DO 190 I = N,J + 1,-1 TEMP = TEMP - DCONJG(A(I,J))*X(IX) IX = IX - INCX 190 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(A(J,J)) END IF X(JX) = TEMP JX = JX - INCX 200 CONTINUE END IF END IF END IF * RETURN * * End of ZTRSV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/ztrmm.f0000644002504400250440000000005012337331322016236 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/ztrmm.f0000644002504400250440000003421612337331322017010 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTRMM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA * INTEGER LDA,LDB,M,N * CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),B(LDB,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTRMM performs one of the matrix-matrix operations *> *> B := alpha*op( A )*B, or B := alpha*B*op( A ) *> *> where alpha is a scalar, B is an m by n matrix, A is a unit, or *> non-unit, upper or lower triangular matrix and op( A ) is one of *> *> op( A ) = A or op( A ) = A**T or op( A ) = A**H. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) multiplies B from *> the left or right as follows: *> *> SIDE = 'L' or 'l' B := alpha*op( A )*B. *> *> SIDE = 'R' or 'r' B := alpha*B*op( A ). *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANSA *> \verbatim *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: *> *> TRANSA = 'N' or 'n' op( A ) = A. *> *> TRANSA = 'T' or 't' op( A ) = A**T. *> *> TRANSA = 'C' or 'c' op( A ) = A**H. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of B. M must be at *> least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of B. N must be *> at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. When alpha is *> zero then A is not referenced and B need not be set before *> entry. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, k ), where k is m *> when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'. *> Before entry with UPLO = 'U' or 'u', the leading k by k *> upper triangular part of the array A must contain the upper *> triangular matrix and the strictly lower triangular part of *> A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading k by k *> lower triangular part of the array A must contain the lower *> triangular matrix and the strictly upper triangular part of *> A is not referenced. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced either, but are assumed to be unity. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When SIDE = 'L' or 'l' then *> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r' *> then LDA must be at least max( 1, n ). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is (input/output) COMPLEX*16 array of DIMENSION ( LDB, n ). *> Before entry, the leading m by n part of the array B must *> contain the matrix B, and on exit is overwritten by the *> transformed matrix. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. LDB must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE ZTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA INTEGER LDA,LDB,M,N CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),B(LDB,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,J,K,NROWA LOGICAL LSIDE,NOCONJ,NOUNIT,UPPER * .. * .. Parameters .. COMPLEX*16 ONE PARAMETER (ONE= (1.0D+0,0.0D+0)) COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * * Test the input parameters. * LSIDE = LSAME(SIDE,'L') IF (LSIDE) THEN NROWA = M ELSE NROWA = N END IF NOCONJ = LSAME(TRANSA,'T') NOUNIT = LSAME(DIAG,'N') UPPER = LSAME(UPLO,'U') * INFO = 0 IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN INFO = 1 ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 2 ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND. + (.NOT.LSAME(TRANSA,'T')) .AND. + (.NOT.LSAME(TRANSA,'C'))) THEN INFO = 3 ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN INFO = 4 ELSE IF (M.LT.0) THEN INFO = 5 ELSE IF (N.LT.0) THEN INFO = 6 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 9 ELSE IF (LDB.LT.MAX(1,M)) THEN INFO = 11 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZTRMM ',INFO) RETURN END IF * * Quick return if possible. * IF (M.EQ.0 .OR. N.EQ.0) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,M B(I,J) = ZERO 10 CONTINUE 20 CONTINUE RETURN END IF * * Start the operations. * IF (LSIDE) THEN IF (LSAME(TRANSA,'N')) THEN * * Form B := alpha*A*B. * IF (UPPER) THEN DO 50 J = 1,N DO 40 K = 1,M IF (B(K,J).NE.ZERO) THEN TEMP = ALPHA*B(K,J) DO 30 I = 1,K - 1 B(I,J) = B(I,J) + TEMP*A(I,K) 30 CONTINUE IF (NOUNIT) TEMP = TEMP*A(K,K) B(K,J) = TEMP END IF 40 CONTINUE 50 CONTINUE ELSE DO 80 J = 1,N DO 70 K = M,1,-1 IF (B(K,J).NE.ZERO) THEN TEMP = ALPHA*B(K,J) B(K,J) = TEMP IF (NOUNIT) B(K,J) = B(K,J)*A(K,K) DO 60 I = K + 1,M B(I,J) = B(I,J) + TEMP*A(I,K) 60 CONTINUE END IF 70 CONTINUE 80 CONTINUE END IF ELSE * * Form B := alpha*A**T*B or B := alpha*A**H*B. * IF (UPPER) THEN DO 120 J = 1,N DO 110 I = M,1,-1 TEMP = B(I,J) IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*A(I,I) DO 90 K = 1,I - 1 TEMP = TEMP + A(K,I)*B(K,J) 90 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(A(I,I)) DO 100 K = 1,I - 1 TEMP = TEMP + DCONJG(A(K,I))*B(K,J) 100 CONTINUE END IF B(I,J) = ALPHA*TEMP 110 CONTINUE 120 CONTINUE ELSE DO 160 J = 1,N DO 150 I = 1,M TEMP = B(I,J) IF (NOCONJ) THEN IF (NOUNIT) TEMP = TEMP*A(I,I) DO 130 K = I + 1,M TEMP = TEMP + A(K,I)*B(K,J) 130 CONTINUE ELSE IF (NOUNIT) TEMP = TEMP*DCONJG(A(I,I)) DO 140 K = I + 1,M TEMP = TEMP + DCONJG(A(K,I))*B(K,J) 140 CONTINUE END IF B(I,J) = ALPHA*TEMP 150 CONTINUE 160 CONTINUE END IF END IF ELSE IF (LSAME(TRANSA,'N')) THEN * * Form B := alpha*B*A. * IF (UPPER) THEN DO 200 J = N,1,-1 TEMP = ALPHA IF (NOUNIT) TEMP = TEMP*A(J,J) DO 170 I = 1,M B(I,J) = TEMP*B(I,J) 170 CONTINUE DO 190 K = 1,J - 1 IF (A(K,J).NE.ZERO) THEN TEMP = ALPHA*A(K,J) DO 180 I = 1,M B(I,J) = B(I,J) + TEMP*B(I,K) 180 CONTINUE END IF 190 CONTINUE 200 CONTINUE ELSE DO 240 J = 1,N TEMP = ALPHA IF (NOUNIT) TEMP = TEMP*A(J,J) DO 210 I = 1,M B(I,J) = TEMP*B(I,J) 210 CONTINUE DO 230 K = J + 1,N IF (A(K,J).NE.ZERO) THEN TEMP = ALPHA*A(K,J) DO 220 I = 1,M B(I,J) = B(I,J) + TEMP*B(I,K) 220 CONTINUE END IF 230 CONTINUE 240 CONTINUE END IF ELSE * * Form B := alpha*B*A**T or B := alpha*B*A**H. * IF (UPPER) THEN DO 280 K = 1,N DO 260 J = 1,K - 1 IF (A(J,K).NE.ZERO) THEN IF (NOCONJ) THEN TEMP = ALPHA*A(J,K) ELSE TEMP = ALPHA*DCONJG(A(J,K)) END IF DO 250 I = 1,M B(I,J) = B(I,J) + TEMP*B(I,K) 250 CONTINUE END IF 260 CONTINUE TEMP = ALPHA IF (NOUNIT) THEN IF (NOCONJ) THEN TEMP = TEMP*A(K,K) ELSE TEMP = TEMP*DCONJG(A(K,K)) END IF END IF IF (TEMP.NE.ONE) THEN DO 270 I = 1,M B(I,K) = TEMP*B(I,K) 270 CONTINUE END IF 280 CONTINUE ELSE DO 320 K = N,1,-1 DO 300 J = K + 1,N IF (A(J,K).NE.ZERO) THEN IF (NOCONJ) THEN TEMP = ALPHA*A(J,K) ELSE TEMP = ALPHA*DCONJG(A(J,K)) END IF DO 290 I = 1,M B(I,J) = B(I,J) + TEMP*B(I,K) 290 CONTINUE END IF 300 CONTINUE TEMP = ALPHA IF (NOUNIT) THEN IF (NOCONJ) THEN TEMP = TEMP*A(K,K) ELSE TEMP = TEMP*DCONJG(A(K,K)) END IF END IF IF (TEMP.NE.ONE) THEN DO 310 I = 1,M B(I,K) = TEMP*B(I,K) 310 CONTINUE END IF 320 CONTINUE END IF END IF END IF * RETURN * * End of ZTRMM . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dtrsm.f0000644002504400250440000000005012337331322016216 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dtrsm.f0000644002504400250440000003275412337331322016775 0ustar00dewhurstdewhurst00000000000000*> \brief \b DTRSM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA * INTEGER LDA,LDB,M,N * CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),B(LDB,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DTRSM solves one of the matrix equations *> *> op( A )*X = alpha*B, or X*op( A ) = alpha*B, *> *> where alpha is a scalar, X and B are m by n matrices, A is a unit, or *> non-unit, upper or lower triangular matrix and op( A ) is one of *> *> op( A ) = A or op( A ) = A**T. *> *> The matrix X is overwritten on B. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) appears on the left *> or right of X as follows: *> *> SIDE = 'L' or 'l' op( A )*X = alpha*B. *> *> SIDE = 'R' or 'r' X*op( A ) = alpha*B. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANSA *> \verbatim *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: *> *> TRANSA = 'N' or 'n' op( A ) = A. *> *> TRANSA = 'T' or 't' op( A ) = A**T. *> *> TRANSA = 'C' or 'c' op( A ) = A**T. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of B. M must be at *> least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of B. N must be *> at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. When alpha is *> zero then A is not referenced and B need not be set before *> entry. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, k ), *> where k is m when SIDE = 'L' or 'l' *> and k is n when SIDE = 'R' or 'r'. *> Before entry with UPLO = 'U' or 'u', the leading k by k *> upper triangular part of the array A must contain the upper *> triangular matrix and the strictly lower triangular part of *> A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading k by k *> lower triangular part of the array A must contain the lower *> triangular matrix and the strictly upper triangular part of *> A is not referenced. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced either, but are assumed to be unity. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When SIDE = 'L' or 'l' then *> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r' *> then LDA must be at least max( 1, n ). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array of DIMENSION ( LDB, n ). *> Before entry, the leading m by n part of the array B must *> contain the right-hand side matrix B, and on exit is *> overwritten by the solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. LDB must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA INTEGER LDA,LDB,M,N CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),B(LDB,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,J,K,NROWA LOGICAL LSIDE,NOUNIT,UPPER * .. * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * * Test the input parameters. * LSIDE = LSAME(SIDE,'L') IF (LSIDE) THEN NROWA = M ELSE NROWA = N END IF NOUNIT = LSAME(DIAG,'N') UPPER = LSAME(UPLO,'U') * INFO = 0 IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN INFO = 1 ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 2 ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND. + (.NOT.LSAME(TRANSA,'T')) .AND. + (.NOT.LSAME(TRANSA,'C'))) THEN INFO = 3 ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN INFO = 4 ELSE IF (M.LT.0) THEN INFO = 5 ELSE IF (N.LT.0) THEN INFO = 6 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 9 ELSE IF (LDB.LT.MAX(1,M)) THEN INFO = 11 END IF IF (INFO.NE.0) THEN CALL XERBLA('DTRSM ',INFO) RETURN END IF * * Quick return if possible. * IF (M.EQ.0 .OR. N.EQ.0) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,M B(I,J) = ZERO 10 CONTINUE 20 CONTINUE RETURN END IF * * Start the operations. * IF (LSIDE) THEN IF (LSAME(TRANSA,'N')) THEN * * Form B := alpha*inv( A )*B. * IF (UPPER) THEN DO 60 J = 1,N IF (ALPHA.NE.ONE) THEN DO 30 I = 1,M B(I,J) = ALPHA*B(I,J) 30 CONTINUE END IF DO 50 K = M,1,-1 IF (B(K,J).NE.ZERO) THEN IF (NOUNIT) B(K,J) = B(K,J)/A(K,K) DO 40 I = 1,K - 1 B(I,J) = B(I,J) - B(K,J)*A(I,K) 40 CONTINUE END IF 50 CONTINUE 60 CONTINUE ELSE DO 100 J = 1,N IF (ALPHA.NE.ONE) THEN DO 70 I = 1,M B(I,J) = ALPHA*B(I,J) 70 CONTINUE END IF DO 90 K = 1,M IF (B(K,J).NE.ZERO) THEN IF (NOUNIT) B(K,J) = B(K,J)/A(K,K) DO 80 I = K + 1,M B(I,J) = B(I,J) - B(K,J)*A(I,K) 80 CONTINUE END IF 90 CONTINUE 100 CONTINUE END IF ELSE * * Form B := alpha*inv( A**T )*B. * IF (UPPER) THEN DO 130 J = 1,N DO 120 I = 1,M TEMP = ALPHA*B(I,J) DO 110 K = 1,I - 1 TEMP = TEMP - A(K,I)*B(K,J) 110 CONTINUE IF (NOUNIT) TEMP = TEMP/A(I,I) B(I,J) = TEMP 120 CONTINUE 130 CONTINUE ELSE DO 160 J = 1,N DO 150 I = M,1,-1 TEMP = ALPHA*B(I,J) DO 140 K = I + 1,M TEMP = TEMP - A(K,I)*B(K,J) 140 CONTINUE IF (NOUNIT) TEMP = TEMP/A(I,I) B(I,J) = TEMP 150 CONTINUE 160 CONTINUE END IF END IF ELSE IF (LSAME(TRANSA,'N')) THEN * * Form B := alpha*B*inv( A ). * IF (UPPER) THEN DO 210 J = 1,N IF (ALPHA.NE.ONE) THEN DO 170 I = 1,M B(I,J) = ALPHA*B(I,J) 170 CONTINUE END IF DO 190 K = 1,J - 1 IF (A(K,J).NE.ZERO) THEN DO 180 I = 1,M B(I,J) = B(I,J) - A(K,J)*B(I,K) 180 CONTINUE END IF 190 CONTINUE IF (NOUNIT) THEN TEMP = ONE/A(J,J) DO 200 I = 1,M B(I,J) = TEMP*B(I,J) 200 CONTINUE END IF 210 CONTINUE ELSE DO 260 J = N,1,-1 IF (ALPHA.NE.ONE) THEN DO 220 I = 1,M B(I,J) = ALPHA*B(I,J) 220 CONTINUE END IF DO 240 K = J + 1,N IF (A(K,J).NE.ZERO) THEN DO 230 I = 1,M B(I,J) = B(I,J) - A(K,J)*B(I,K) 230 CONTINUE END IF 240 CONTINUE IF (NOUNIT) THEN TEMP = ONE/A(J,J) DO 250 I = 1,M B(I,J) = TEMP*B(I,J) 250 CONTINUE END IF 260 CONTINUE END IF ELSE * * Form B := alpha*B*inv( A**T ). * IF (UPPER) THEN DO 310 K = N,1,-1 IF (NOUNIT) THEN TEMP = ONE/A(K,K) DO 270 I = 1,M B(I,K) = TEMP*B(I,K) 270 CONTINUE END IF DO 290 J = 1,K - 1 IF (A(J,K).NE.ZERO) THEN TEMP = A(J,K) DO 280 I = 1,M B(I,J) = B(I,J) - TEMP*B(I,K) 280 CONTINUE END IF 290 CONTINUE IF (ALPHA.NE.ONE) THEN DO 300 I = 1,M B(I,K) = ALPHA*B(I,K) 300 CONTINUE END IF 310 CONTINUE ELSE DO 360 K = 1,N IF (NOUNIT) THEN TEMP = ONE/A(K,K) DO 320 I = 1,M B(I,K) = TEMP*B(I,K) 320 CONTINUE END IF DO 340 J = K + 1,N IF (A(J,K).NE.ZERO) THEN TEMP = A(J,K) DO 330 I = 1,M B(I,J) = B(I,J) - TEMP*B(I,K) 330 CONTINUE END IF 340 CONTINUE IF (ALPHA.NE.ONE) THEN DO 350 I = 1,M B(I,K) = ALPHA*B(I,K) 350 CONTINUE END IF 360 CONTINUE END IF END IF END IF * RETURN * * End of DTRSM . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dscal.f0000644002504400250440000000005012337331322016153 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dscal.f0000644002504400250440000000462612337331322016727 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSCAL * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DSCAL(N,DA,DX,INCX) * * .. Scalar Arguments .. * DOUBLE PRECISION DA * INTEGER INCX,N * .. * .. Array Arguments .. * DOUBLE PRECISION DX(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSCAL scales a vector by a constant. *> uses unrolled loops for increment equal to one. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, linpack, 3/11/78. *> modified 3/93 to return if incx .le. 0. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE DSCAL(N,DA,DX,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION DA INTEGER INCX,N * .. * .. Array Arguments .. DOUBLE PRECISION DX(*) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I,M,MP1,NINCX * .. * .. Intrinsic Functions .. INTRINSIC MOD * .. IF (N.LE.0 .OR. INCX.LE.0) RETURN IF (INCX.EQ.1) THEN * * code for increment equal to 1 * * * clean-up loop * M = MOD(N,5) IF (M.NE.0) THEN DO I = 1,M DX(I) = DA*DX(I) END DO IF (N.LT.5) RETURN END IF MP1 = M + 1 DO I = MP1,N,5 DX(I) = DA*DX(I) DX(I+1) = DA*DX(I+1) DX(I+2) = DA*DX(I+2) DX(I+3) = DA*DX(I+3) DX(I+4) = DA*DX(I+4) END DO ELSE * * code for increment not equal to 1 * NINCX = N*INCX DO I = 1,NINCX,INCX DX(I) = DA*DX(I) END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/dgemm.f0000644002504400250440000000005012337331322016156 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dgemm.f0000644002504400250440000002606712337331322016735 0ustar00dewhurstdewhurst00000000000000*> \brief \b DGEMM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA,BETA * INTEGER K,LDA,LDB,LDC,M,N * CHARACTER TRANSA,TRANSB * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DGEMM performs one of the matrix-matrix operations *> *> C := alpha*op( A )*op( B ) + beta*C, *> *> where op( X ) is one of *> *> op( X ) = X or op( X ) = X**T, *> *> alpha and beta are scalars, and A, B and C are matrices, with op( A ) *> an m by k matrix, op( B ) a k by n matrix and C an m by n matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] TRANSA *> \verbatim *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: *> *> TRANSA = 'N' or 'n', op( A ) = A. *> *> TRANSA = 'T' or 't', op( A ) = A**T. *> *> TRANSA = 'C' or 'c', op( A ) = A**T. *> \endverbatim *> *> \param[in] TRANSB *> \verbatim *> TRANSB is CHARACTER*1 *> On entry, TRANSB specifies the form of op( B ) to be used in *> the matrix multiplication as follows: *> *> TRANSB = 'N' or 'n', op( B ) = B. *> *> TRANSB = 'T' or 't', op( B ) = B**T. *> *> TRANSB = 'C' or 'c', op( B ) = B**T. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix *> op( A ) and of the matrix C. M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix *> op( B ) and the number of columns of the matrix C. N must be *> at least zero. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> On entry, K specifies the number of columns of the matrix *> op( A ) and the number of rows of the matrix op( B ). K must *> be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is *> k when TRANSA = 'N' or 'n', and is m otherwise. *> Before entry with TRANSA = 'N' or 'n', the leading m by k *> part of the array A must contain the matrix A, otherwise *> the leading k by m part of the array A must contain the *> matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When TRANSA = 'N' or 'n' then *> LDA must be at least max( 1, m ), otherwise LDA must be at *> least max( 1, k ). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is *> n when TRANSB = 'N' or 'n', and is k otherwise. *> Before entry with TRANSB = 'N' or 'n', the leading k by n *> part of the array B must contain the matrix B, otherwise *> the leading n by k part of the array B must contain the *> matrix B. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. When TRANSB = 'N' or 'n' then *> LDB must be at least max( 1, k ), otherwise LDB must be at *> least max( 1, n ). *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION. *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then C need not be set on input. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array of DIMENSION ( LDC, n ). *> Before entry, the leading m by n part of the array C must *> contain the matrix C, except when beta is zero, in which *> case C need not be set on entry. *> On exit, the array C is overwritten by the m by n matrix *> ( alpha*op( A )*op( B ) + beta*C ). *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> On entry, LDC specifies the first dimension of C as declared *> in the calling (sub) program. LDC must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA,BETA INTEGER K,LDA,LDB,LDC,M,N CHARACTER TRANSA,TRANSB * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB LOGICAL NOTA,NOTB * .. * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * * Set NOTA and NOTB as true if A and B respectively are not * transposed and set NROWA, NCOLA and NROWB as the number of rows * and columns of A and the number of rows of B respectively. * NOTA = LSAME(TRANSA,'N') NOTB = LSAME(TRANSB,'N') IF (NOTA) THEN NROWA = M NCOLA = K ELSE NROWA = K NCOLA = M END IF IF (NOTB) THEN NROWB = K ELSE NROWB = N END IF * * Test the input parameters. * INFO = 0 IF ((.NOT.NOTA) .AND. (.NOT.LSAME(TRANSA,'C')) .AND. + (.NOT.LSAME(TRANSA,'T'))) THEN INFO = 1 ELSE IF ((.NOT.NOTB) .AND. (.NOT.LSAME(TRANSB,'C')) .AND. + (.NOT.LSAME(TRANSB,'T'))) THEN INFO = 2 ELSE IF (M.LT.0) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (K.LT.0) THEN INFO = 5 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 8 ELSE IF (LDB.LT.MAX(1,NROWB)) THEN INFO = 10 ELSE IF (LDC.LT.MAX(1,M)) THEN INFO = 13 END IF IF (INFO.NE.0) THEN CALL XERBLA('DGEMM ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. + (((ALPHA.EQ.ZERO).OR. (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN * * And if alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN IF (BETA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,M C(I,J) = ZERO 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1,N DO 30 I = 1,M C(I,J) = BETA*C(I,J) 30 CONTINUE 40 CONTINUE END IF RETURN END IF * * Start the operations. * IF (NOTB) THEN IF (NOTA) THEN * * Form C := alpha*A*B + beta*C. * DO 90 J = 1,N IF (BETA.EQ.ZERO) THEN DO 50 I = 1,M C(I,J) = ZERO 50 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 60 I = 1,M C(I,J) = BETA*C(I,J) 60 CONTINUE END IF DO 80 L = 1,K IF (B(L,J).NE.ZERO) THEN TEMP = ALPHA*B(L,J) DO 70 I = 1,M C(I,J) = C(I,J) + TEMP*A(I,L) 70 CONTINUE END IF 80 CONTINUE 90 CONTINUE ELSE * * Form C := alpha*A**T*B + beta*C * DO 120 J = 1,N DO 110 I = 1,M TEMP = ZERO DO 100 L = 1,K TEMP = TEMP + A(L,I)*B(L,J) 100 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 110 CONTINUE 120 CONTINUE END IF ELSE IF (NOTA) THEN * * Form C := alpha*A*B**T + beta*C * DO 170 J = 1,N IF (BETA.EQ.ZERO) THEN DO 130 I = 1,M C(I,J) = ZERO 130 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 140 I = 1,M C(I,J) = BETA*C(I,J) 140 CONTINUE END IF DO 160 L = 1,K IF (B(J,L).NE.ZERO) THEN TEMP = ALPHA*B(J,L) DO 150 I = 1,M C(I,J) = C(I,J) + TEMP*A(I,L) 150 CONTINUE END IF 160 CONTINUE 170 CONTINUE ELSE * * Form C := alpha*A**T*B**T + beta*C * DO 200 J = 1,N DO 190 I = 1,M TEMP = ZERO DO 180 L = 1,K TEMP = TEMP + A(L,I)*B(J,L) 180 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP ELSE C(I,J) = ALPHA*TEMP + BETA*C(I,J) END IF 190 CONTINUE 200 CONTINUE END IF END IF * RETURN * * End of DGEMM . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zher2.f0000644002504400250440000000005012337331322016117 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zher2.f0000644002504400250440000002247112337331322016671 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHER2 * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA * INTEGER INCX,INCY,LDA,N * CHARACTER UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHER2 performs the hermitian rank 2 operation *> *> A := alpha*x*y**H + conjg( alpha )*y*x**H + A, *> *> where alpha is a scalar, x and y are n element vectors and A is an n *> by n hermitian matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular part of the hermitian matrix and the strictly *> lower triangular part of A is not referenced. On exit, the *> upper triangular part of the array A is overwritten by the *> upper triangular part of the updated matrix. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular part of the hermitian matrix and the strictly *> upper triangular part of A is not referenced. On exit, the *> lower triangular part of the array A is overwritten by the *> lower triangular part of the updated matrix. *> Note that the imaginary parts of the diagonal elements need *> not be set, they are assumed to be zero, and on exit they *> are set to zero. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA INTEGER INCX,INCY,LDA,N CHARACTER UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP1,TEMP2 INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 5 ELSE IF (INCY.EQ.0) THEN INFO = 7 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 9 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZHER2 ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN * * Set up the start points in X and Y if the increments are not both * unity. * IF ((INCX.NE.1) .OR. (INCY.NE.1)) THEN IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (N-1)*INCX END IF IF (INCY.GT.0) THEN KY = 1 ELSE KY = 1 - (N-1)*INCY END IF JX = KX JY = KY END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through the triangular part * of A. * IF (LSAME(UPLO,'U')) THEN * * Form A when A is stored in the upper triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 20 J = 1,N IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(Y(J)) TEMP2 = DCONJG(ALPHA*X(J)) DO 10 I = 1,J - 1 A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2 10 CONTINUE A(J,J) = DBLE(A(J,J)) + + DBLE(X(J)*TEMP1+Y(J)*TEMP2) ELSE A(J,J) = DBLE(A(J,J)) END IF 20 CONTINUE ELSE DO 40 J = 1,N IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(Y(JY)) TEMP2 = DCONJG(ALPHA*X(JX)) IX = KX IY = KY DO 30 I = 1,J - 1 A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2 IX = IX + INCX IY = IY + INCY 30 CONTINUE A(J,J) = DBLE(A(J,J)) + + DBLE(X(JX)*TEMP1+Y(JY)*TEMP2) ELSE A(J,J) = DBLE(A(J,J)) END IF JX = JX + INCX JY = JY + INCY 40 CONTINUE END IF ELSE * * Form A when A is stored in the lower triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 60 J = 1,N IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(Y(J)) TEMP2 = DCONJG(ALPHA*X(J)) A(J,J) = DBLE(A(J,J)) + + DBLE(X(J)*TEMP1+Y(J)*TEMP2) DO 50 I = J + 1,N A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2 50 CONTINUE ELSE A(J,J) = DBLE(A(J,J)) END IF 60 CONTINUE ELSE DO 80 J = 1,N IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN TEMP1 = ALPHA*DCONJG(Y(JY)) TEMP2 = DCONJG(ALPHA*X(JX)) A(J,J) = DBLE(A(J,J)) + + DBLE(X(JX)*TEMP1+Y(JY)*TEMP2) IX = JX IY = JY DO 70 I = J + 1,N IX = IX + INCX IY = IY + INCY A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2 70 CONTINUE ELSE A(J,J) = DBLE(A(J,J)) END IF JX = JX + INCX JY = JY + INCY 80 CONTINUE END IF END IF * RETURN * * End of ZHER2 . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dsymv.f0000644002504400250440000000005012337331322016227 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dsymv.f0000644002504400250440000002230512337331322016775 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYMV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA,BETA * INTEGER INCX,INCY,LDA,N * CHARACTER UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYMV performs the matrix-vector operation *> *> y := alpha*A*x + beta*y, *> *> where alpha and beta are scalars, x and y are n element vectors and *> A is an n by n symmetric matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular part of the symmetric matrix and the strictly *> lower triangular part of A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular part of the symmetric matrix and the strictly *> upper triangular part of A is not referenced. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim *> *> \param[in] X *> \verbatim *> X is DOUBLE PRECISION array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION. *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then Y need not be set on input. *> \endverbatim *> *> \param[in,out] Y *> \verbatim *> Y is DOUBLE PRECISION array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. On exit, Y is overwritten by the updated *> vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> The vector and matrix arguments are not referenced when N = 0, or M = 0 *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE DSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA,BETA INTEGER INCX,INCY,LDA,N CHARACTER UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION TEMP1,TEMP2 INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 5 ELSE IF (INCX.EQ.0) THEN INFO = 7 ELSE IF (INCY.EQ.0) THEN INFO = 10 END IF IF (INFO.NE.0) THEN CALL XERBLA('DSYMV ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN * * Set up the start points in X and Y. * IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (N-1)*INCX END IF IF (INCY.GT.0) THEN KY = 1 ELSE KY = 1 - (N-1)*INCY END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through the triangular part * of A. * * First form y := beta*y. * IF (BETA.NE.ONE) THEN IF (INCY.EQ.1) THEN IF (BETA.EQ.ZERO) THEN DO 10 I = 1,N Y(I) = ZERO 10 CONTINUE ELSE DO 20 I = 1,N Y(I) = BETA*Y(I) 20 CONTINUE END IF ELSE IY = KY IF (BETA.EQ.ZERO) THEN DO 30 I = 1,N Y(IY) = ZERO IY = IY + INCY 30 CONTINUE ELSE DO 40 I = 1,N Y(IY) = BETA*Y(IY) IY = IY + INCY 40 CONTINUE END IF END IF END IF IF (ALPHA.EQ.ZERO) RETURN IF (LSAME(UPLO,'U')) THEN * * Form y when A is stored in upper triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 60 J = 1,N TEMP1 = ALPHA*X(J) TEMP2 = ZERO DO 50 I = 1,J - 1 Y(I) = Y(I) + TEMP1*A(I,J) TEMP2 = TEMP2 + A(I,J)*X(I) 50 CONTINUE Y(J) = Y(J) + TEMP1*A(J,J) + ALPHA*TEMP2 60 CONTINUE ELSE JX = KX JY = KY DO 80 J = 1,N TEMP1 = ALPHA*X(JX) TEMP2 = ZERO IX = KX IY = KY DO 70 I = 1,J - 1 Y(IY) = Y(IY) + TEMP1*A(I,J) TEMP2 = TEMP2 + A(I,J)*X(IX) IX = IX + INCX IY = IY + INCY 70 CONTINUE Y(JY) = Y(JY) + TEMP1*A(J,J) + ALPHA*TEMP2 JX = JX + INCX JY = JY + INCY 80 CONTINUE END IF ELSE * * Form y when A is stored in lower triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 100 J = 1,N TEMP1 = ALPHA*X(J) TEMP2 = ZERO Y(J) = Y(J) + TEMP1*A(J,J) DO 90 I = J + 1,N Y(I) = Y(I) + TEMP1*A(I,J) TEMP2 = TEMP2 + A(I,J)*X(I) 90 CONTINUE Y(J) = Y(J) + ALPHA*TEMP2 100 CONTINUE ELSE JX = KX JY = KY DO 120 J = 1,N TEMP1 = ALPHA*X(JX) TEMP2 = ZERO Y(JY) = Y(JY) + TEMP1*A(J,J) IX = JX IY = JY DO 110 I = J + 1,N IX = IX + INCX IY = IY + INCY Y(IY) = Y(IY) + TEMP1*A(I,J) TEMP2 = TEMP2 + A(I,J)*X(IX) 110 CONTINUE Y(JY) = Y(JY) + ALPHA*TEMP2 JX = JX + INCX JY = JY + INCY 120 CONTINUE END IF END IF * RETURN * * End of DSYMV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zhemv.f0000644002504400250440000000005012337331322016216 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zhemv.f0000644002504400250440000002257412337331322016774 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZHEMV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA,BETA * INTEGER INCX,INCY,LDA,N * CHARACTER UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZHEMV performs the matrix-vector operation *> *> y := alpha*A*x + beta*y, *> *> where alpha and beta are scalars, x and y are n element vectors and *> A is an n by n hermitian matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular part of the hermitian matrix and the strictly *> lower triangular part of A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular part of the hermitian matrix and the strictly *> upper triangular part of A is not referenced. *> Note that the imaginary parts of the diagonal elements need *> not be set and are assumed to be zero. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is COMPLEX*16 *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then Y need not be set on input. *> \endverbatim *> *> \param[in,out] Y *> \verbatim *> Y is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. On exit, Y is overwritten by the updated *> vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> The vector and matrix arguments are not referenced when N = 0, or M = 0 *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA,BETA INTEGER INCX,INCY,LDA,N CHARACTER UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER (ONE= (1.0D+0,0.0D+0)) COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP1,TEMP2 INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 5 ELSE IF (INCX.EQ.0) THEN INFO = 7 ELSE IF (INCY.EQ.0) THEN INFO = 10 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZHEMV ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN * * Set up the start points in X and Y. * IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (N-1)*INCX END IF IF (INCY.GT.0) THEN KY = 1 ELSE KY = 1 - (N-1)*INCY END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through the triangular part * of A. * * First form y := beta*y. * IF (BETA.NE.ONE) THEN IF (INCY.EQ.1) THEN IF (BETA.EQ.ZERO) THEN DO 10 I = 1,N Y(I) = ZERO 10 CONTINUE ELSE DO 20 I = 1,N Y(I) = BETA*Y(I) 20 CONTINUE END IF ELSE IY = KY IF (BETA.EQ.ZERO) THEN DO 30 I = 1,N Y(IY) = ZERO IY = IY + INCY 30 CONTINUE ELSE DO 40 I = 1,N Y(IY) = BETA*Y(IY) IY = IY + INCY 40 CONTINUE END IF END IF END IF IF (ALPHA.EQ.ZERO) RETURN IF (LSAME(UPLO,'U')) THEN * * Form y when A is stored in upper triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 60 J = 1,N TEMP1 = ALPHA*X(J) TEMP2 = ZERO DO 50 I = 1,J - 1 Y(I) = Y(I) + TEMP1*A(I,J) TEMP2 = TEMP2 + DCONJG(A(I,J))*X(I) 50 CONTINUE Y(J) = Y(J) + TEMP1*DBLE(A(J,J)) + ALPHA*TEMP2 60 CONTINUE ELSE JX = KX JY = KY DO 80 J = 1,N TEMP1 = ALPHA*X(JX) TEMP2 = ZERO IX = KX IY = KY DO 70 I = 1,J - 1 Y(IY) = Y(IY) + TEMP1*A(I,J) TEMP2 = TEMP2 + DCONJG(A(I,J))*X(IX) IX = IX + INCX IY = IY + INCY 70 CONTINUE Y(JY) = Y(JY) + TEMP1*DBLE(A(J,J)) + ALPHA*TEMP2 JX = JX + INCX JY = JY + INCY 80 CONTINUE END IF ELSE * * Form y when A is stored in lower triangle. * IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN DO 100 J = 1,N TEMP1 = ALPHA*X(J) TEMP2 = ZERO Y(J) = Y(J) + TEMP1*DBLE(A(J,J)) DO 90 I = J + 1,N Y(I) = Y(I) + TEMP1*A(I,J) TEMP2 = TEMP2 + DCONJG(A(I,J))*X(I) 90 CONTINUE Y(J) = Y(J) + ALPHA*TEMP2 100 CONTINUE ELSE JX = KX JY = KY DO 120 J = 1,N TEMP1 = ALPHA*X(JX) TEMP2 = ZERO Y(JY) = Y(JY) + TEMP1*DBLE(A(J,J)) IX = JX IY = JY DO 110 I = J + 1,N IX = IX + INCX IY = IY + INCY Y(IY) = Y(IY) + TEMP1*A(I,J) TEMP2 = TEMP2 + DCONJG(A(I,J))*X(IX) 110 CONTINUE Y(JY) = Y(JY) + ALPHA*TEMP2 JX = JX + INCX JY = JY + INCY 120 CONTINUE END IF END IF * RETURN * * End of ZHEMV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zaxpy.f0000644002504400250440000000005012337331322016240 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zaxpy.f0000644002504400250440000000436212337331322017011 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZAXPY * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY) * * .. Scalar Arguments .. * COMPLEX*16 ZA * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*),ZY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZAXPY constant times a vector plus a vector. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, 3/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ZA INTEGER INCX,INCY,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*),ZY(*) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY * .. * .. External Functions .. DOUBLE PRECISION DCABS1 EXTERNAL DCABS1 * .. IF (N.LE.0) RETURN IF (DCABS1(ZA).EQ.0.0d0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 * DO I = 1,N ZY(I) = ZY(I) + ZA*ZX(I) END DO ELSE * * code for unequal increments or equal increments * not equal to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N ZY(IY) = ZY(IY) + ZA*ZX(IX) IX = IX + INCX IY = IY + INCY END DO END IF * RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/dnrm2.f0000644002504400250440000000005012337331322016107 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dnrm2.f0000644002504400250440000000516112337331322016656 0ustar00dewhurstdewhurst00000000000000*> \brief \b DNRM2 * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX) * * .. Scalar Arguments .. * INTEGER INCX,N * .. * .. Array Arguments .. * DOUBLE PRECISION X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DNRM2 returns the euclidean norm of a vector via the function *> name, so that *> *> DNRM2 := sqrt( x'*x ) *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> -- This version written on 25-October-1982. *> Modified on 14-October-1993 to inline the call to DLASSQ. *> Sven Hammarling, Nag Ltd. *> \endverbatim *> * ===================================================================== DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,N * .. * .. Array Arguments .. DOUBLE PRECISION X(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION ABSXI,NORM,SCALE,SSQ INTEGER IX * .. * .. Intrinsic Functions .. INTRINSIC ABS,SQRT * .. IF (N.LT.1 .OR. INCX.LT.1) THEN NORM = ZERO ELSE IF (N.EQ.1) THEN NORM = ABS(X(1)) ELSE SCALE = ZERO SSQ = ONE * The following loop is equivalent to this call to the LAPACK * auxiliary routine: * CALL DLASSQ( N, X, INCX, SCALE, SSQ ) * DO 10 IX = 1,1 + (N-1)*INCX,INCX IF (X(IX).NE.ZERO) THEN ABSXI = ABS(X(IX)) IF (SCALE.LT.ABSXI) THEN SSQ = ONE + SSQ* (SCALE/ABSXI)**2 SCALE = ABSXI ELSE SSQ = SSQ + (ABSXI/SCALE)**2 END IF END IF 10 CONTINUE NORM = SCALE*SQRT(SSQ) END IF * DNRM2 = NORM RETURN * * End of DNRM2. * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zswap.f0000644002504400250440000000005012337331322016231 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zswap.f0000644002504400250440000000422612337331322017001 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZSWAP * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZSWAP(N,ZX,INCX,ZY,INCY) * * .. Scalar Arguments .. * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*),ZY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZSWAP interchanges two vectors. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, 3/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE ZSWAP(N,ZX,INCX,ZY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,INCY,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*),ZY(*) * .. * * ===================================================================== * * .. Local Scalars .. COMPLEX*16 ZTEMP INTEGER I,IX,IY * .. IF (N.LE.0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 DO I = 1,N ZTEMP = ZX(I) ZX(I) = ZY(I) ZY(I) = ZTEMP END DO ELSE * * code for unequal increments or equal increments not equal * to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N ZTEMP = ZX(IX) ZX(IX) = ZY(IY) ZY(IY) = ZTEMP IX = IX + INCX IY = IY + INCY END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/dtrsv.f0000644002504400250440000000005012337331322016227 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dtrsv.f0000644002504400250440000002363212337331322017001 0ustar00dewhurstdewhurst00000000000000*> \brief \b DTRSV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX) * * .. Scalar Arguments .. * INTEGER INCX,LDA,N * CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DTRSV solves one of the systems of equations *> *> A*x = b, or A**T*x = b, *> *> where b and x are n element vectors and A is an n by n unit, or *> non-unit, upper or lower triangular matrix. *> *> No test for singularity or near-singularity is included in this *> routine. Such tests must be performed before calling this routine. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: *> *> TRANS = 'N' or 'n' A*x = b. *> *> TRANS = 'T' or 't' A**T*x = b. *> *> TRANS = 'C' or 'c' A**T*x = b. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular matrix and the strictly lower triangular part of *> A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular matrix and the strictly upper triangular part of *> A is not referenced. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced either, but are assumed to be unity. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is DOUBLE PRECISION array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element right-hand side vector b. On exit, X is overwritten *> with the solution vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * * ===================================================================== SUBROUTINE DTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,LDA,N CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),X(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER (ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,IX,J,JX,KX LOGICAL NOUNIT * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. + .NOT.LSAME(TRANS,'C')) THEN INFO = 2 ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 6 ELSE IF (INCX.EQ.0) THEN INFO = 8 END IF IF (INFO.NE.0) THEN CALL XERBLA('DTRSV ',INFO) RETURN END IF * * Quick return if possible. * IF (N.EQ.0) RETURN * NOUNIT = LSAME(DIAG,'N') * * Set up the start point in X if the increment is not unity. This * will be ( N - 1 )*INCX too small for descending loops. * IF (INCX.LE.0) THEN KX = 1 - (N-1)*INCX ELSE IF (INCX.NE.1) THEN KX = 1 END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF (LSAME(TRANS,'N')) THEN * * Form x := inv( A )*x. * IF (LSAME(UPLO,'U')) THEN IF (INCX.EQ.1) THEN DO 20 J = N,1,-1 IF (X(J).NE.ZERO) THEN IF (NOUNIT) X(J) = X(J)/A(J,J) TEMP = X(J) DO 10 I = J - 1,1,-1 X(I) = X(I) - TEMP*A(I,J) 10 CONTINUE END IF 20 CONTINUE ELSE JX = KX + (N-1)*INCX DO 40 J = N,1,-1 IF (X(JX).NE.ZERO) THEN IF (NOUNIT) X(JX) = X(JX)/A(J,J) TEMP = X(JX) IX = JX DO 30 I = J - 1,1,-1 IX = IX - INCX X(IX) = X(IX) - TEMP*A(I,J) 30 CONTINUE END IF JX = JX - INCX 40 CONTINUE END IF ELSE IF (INCX.EQ.1) THEN DO 60 J = 1,N IF (X(J).NE.ZERO) THEN IF (NOUNIT) X(J) = X(J)/A(J,J) TEMP = X(J) DO 50 I = J + 1,N X(I) = X(I) - TEMP*A(I,J) 50 CONTINUE END IF 60 CONTINUE ELSE JX = KX DO 80 J = 1,N IF (X(JX).NE.ZERO) THEN IF (NOUNIT) X(JX) = X(JX)/A(J,J) TEMP = X(JX) IX = JX DO 70 I = J + 1,N IX = IX + INCX X(IX) = X(IX) - TEMP*A(I,J) 70 CONTINUE END IF JX = JX + INCX 80 CONTINUE END IF END IF ELSE * * Form x := inv( A**T )*x. * IF (LSAME(UPLO,'U')) THEN IF (INCX.EQ.1) THEN DO 100 J = 1,N TEMP = X(J) DO 90 I = 1,J - 1 TEMP = TEMP - A(I,J)*X(I) 90 CONTINUE IF (NOUNIT) TEMP = TEMP/A(J,J) X(J) = TEMP 100 CONTINUE ELSE JX = KX DO 120 J = 1,N TEMP = X(JX) IX = KX DO 110 I = 1,J - 1 TEMP = TEMP - A(I,J)*X(IX) IX = IX + INCX 110 CONTINUE IF (NOUNIT) TEMP = TEMP/A(J,J) X(JX) = TEMP JX = JX + INCX 120 CONTINUE END IF ELSE IF (INCX.EQ.1) THEN DO 140 J = N,1,-1 TEMP = X(J) DO 130 I = N,J + 1,-1 TEMP = TEMP - A(I,J)*X(I) 130 CONTINUE IF (NOUNIT) TEMP = TEMP/A(J,J) X(J) = TEMP 140 CONTINUE ELSE KX = KX + (N-1)*INCX JX = KX DO 160 J = N,1,-1 TEMP = X(JX) IX = KX DO 150 I = N,J + 1,-1 TEMP = TEMP - A(I,J)*X(IX) IX = IX - INCX 150 CONTINUE IF (NOUNIT) TEMP = TEMP/A(J,J) X(JX) = TEMP JX = JX - INCX 160 CONTINUE END IF END IF END IF * RETURN * * End of DTRSV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dger.f0000644002504400250440000000005012337331322016006 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dger.f0000644002504400250440000001311512337331322016553 0ustar00dewhurstdewhurst00000000000000*> \brief \b DGER * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA * INTEGER INCX,INCY,LDA,M,N * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DGER performs the rank 1 operation *> *> A := alpha*x*y**T + A, *> *> where alpha is a scalar, x is an m element vector, y is an n element *> vector and A is an m by n matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix A. *> M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is DOUBLE PRECISION array of dimension at least *> ( 1 + ( m - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the m *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is DOUBLE PRECISION array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ). *> Before entry, the leading m by n part of the array A must *> contain the matrix of coefficients. On exit, A is *> overwritten by the updated matrix. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE DGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA INTEGER INCX,INCY,LDA,M,N * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER (ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * * Test the input parameters. * INFO = 0 IF (M.LT.0) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 5 ELSE IF (INCY.EQ.0) THEN INFO = 7 ELSE IF (LDA.LT.MAX(1,M)) THEN INFO = 9 END IF IF (INFO.NE.0) THEN CALL XERBLA('DGER ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF (INCY.GT.0) THEN JY = 1 ELSE JY = 1 - (N-1)*INCY END IF IF (INCX.EQ.1) THEN DO 20 J = 1,N IF (Y(JY).NE.ZERO) THEN TEMP = ALPHA*Y(JY) DO 10 I = 1,M A(I,J) = A(I,J) + X(I)*TEMP 10 CONTINUE END IF JY = JY + INCY 20 CONTINUE ELSE IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (M-1)*INCX END IF DO 40 J = 1,N IF (Y(JY).NE.ZERO) THEN TEMP = ALPHA*Y(JY) IX = KX DO 30 I = 1,M A(I,J) = A(I,J) + X(IX)*TEMP IX = IX + INCX 30 CONTINUE END IF JY = JY + INCY 40 CONTINUE END IF * RETURN * * End of DGER . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dcopy.f0000644002504400250440000000005012337331322016203 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dcopy.f0000644002504400250440000000510712337331322016752 0ustar00dewhurstdewhurst00000000000000*> \brief \b DCOPY * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DCOPY(N,DX,INCX,DY,INCY) * * .. Scalar Arguments .. * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * DOUBLE PRECISION DX(*),DY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DCOPY copies a vector, x, to a vector, y. *> uses unrolled loops for increments equal to one. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, linpack, 3/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE DCOPY(N,DX,INCX,DY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,INCY,N * .. * .. Array Arguments .. DOUBLE PRECISION DX(*),DY(*) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY,M,MP1 * .. * .. Intrinsic Functions .. INTRINSIC MOD * .. IF (N.LE.0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 * * * clean-up loop * M = MOD(N,7) IF (M.NE.0) THEN DO I = 1,M DY(I) = DX(I) END DO IF (N.LT.7) RETURN END IF MP1 = M + 1 DO I = MP1,N,7 DY(I) = DX(I) DY(I+1) = DX(I+1) DY(I+2) = DX(I+2) DY(I+3) = DX(I+3) DY(I+4) = DX(I+4) DY(I+5) = DX(I+5) DY(I+6) = DX(I+6) END DO ELSE * * code for unequal increments or equal increments * not equal to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N DY(IY) = DX(IX) IX = IX + INCX IY = IY + INCY END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/idamax.f0000644002504400250440000000005012337331322016330 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/idamax.f0000644002504400250440000000450412337331322017077 0ustar00dewhurstdewhurst00000000000000*> \brief \b IDAMAX * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * INTEGER FUNCTION IDAMAX(N,DX,INCX) * * .. Scalar Arguments .. * INTEGER INCX,N * .. * .. Array Arguments .. * DOUBLE PRECISION DX(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> IDAMAX finds the index of element having max. absolute value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup aux_blas * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, linpack, 3/11/78. *> modified 3/93 to return if incx .le. 0. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== INTEGER FUNCTION IDAMAX(N,DX,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,N * .. * .. Array Arguments .. DOUBLE PRECISION DX(*) * .. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DMAX INTEGER I,IX * .. * .. Intrinsic Functions .. INTRINSIC DABS * .. IDAMAX = 0 IF (N.LT.1 .OR. INCX.LE.0) RETURN IDAMAX = 1 IF (N.EQ.1) RETURN IF (INCX.EQ.1) THEN * * code for increment equal to 1 * DMAX = DABS(DX(1)) DO I = 2,N IF (DABS(DX(I)).GT.DMAX) THEN IDAMAX = I DMAX = DABS(DX(I)) END IF END DO ELSE * * code for increment not equal to 1 * IX = 1 DMAX = DABS(DX(1)) IX = IX + INCX DO I = 2,N IF (DABS(DX(IX)).GT.DMAX) THEN IDAMAX = I DMAX = DABS(DX(IX)) END IF IX = IX + INCX END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/zgemv.f0000644002504400250440000000005012337331322016215 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zgemv.f0000644002504400250440000002253612337331322016771 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGEMV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA,BETA * INTEGER INCX,INCY,LDA,M,N * CHARACTER TRANS * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGEMV performs one of the matrix-vector operations *> *> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or *> *> y := alpha*A**H*x + beta*y, *> *> where alpha and beta are scalars, x and y are vectors and A is an *> m by n matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. *> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. *> *> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix A. *> M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, n ). *> Before entry, the leading m by n part of the array A must *> contain the matrix of coefficients. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, m ). *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array of DIMENSION at least *> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' *> and at least *> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. *> Before entry, the incremented array X must contain the *> vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is COMPLEX*16 *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then Y need not be set on input. *> \endverbatim *> *> \param[in,out] Y *> \verbatim *> Y is COMPLEX*16 array of DIMENSION at least *> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' *> and at least *> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. *> Before entry with BETA non-zero, the incremented array Y *> must contain the vector y. On exit, Y is overwritten by the *> updated vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> The vector and matrix arguments are not referenced when N = 0, or M = 0 *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA,BETA INTEGER INCX,INCY,LDA,M,N CHARACTER TRANS * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ONE PARAMETER (ONE= (1.0D+0,0.0D+0)) COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY,LENX,LENY LOGICAL NOCONJ * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. + .NOT.LSAME(TRANS,'C')) THEN INFO = 1 ELSE IF (M.LT.0) THEN INFO = 2 ELSE IF (N.LT.0) THEN INFO = 3 ELSE IF (LDA.LT.MAX(1,M)) THEN INFO = 6 ELSE IF (INCX.EQ.0) THEN INFO = 8 ELSE IF (INCY.EQ.0) THEN INFO = 11 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZGEMV ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. + ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN * NOCONJ = LSAME(TRANS,'T') * * Set LENX and LENY, the lengths of the vectors x and y, and set * up the start points in X and Y. * IF (LSAME(TRANS,'N')) THEN LENX = N LENY = M ELSE LENX = M LENY = N END IF IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (LENX-1)*INCX END IF IF (INCY.GT.0) THEN KY = 1 ELSE KY = 1 - (LENY-1)*INCY END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * * First form y := beta*y. * IF (BETA.NE.ONE) THEN IF (INCY.EQ.1) THEN IF (BETA.EQ.ZERO) THEN DO 10 I = 1,LENY Y(I) = ZERO 10 CONTINUE ELSE DO 20 I = 1,LENY Y(I) = BETA*Y(I) 20 CONTINUE END IF ELSE IY = KY IF (BETA.EQ.ZERO) THEN DO 30 I = 1,LENY Y(IY) = ZERO IY = IY + INCY 30 CONTINUE ELSE DO 40 I = 1,LENY Y(IY) = BETA*Y(IY) IY = IY + INCY 40 CONTINUE END IF END IF END IF IF (ALPHA.EQ.ZERO) RETURN IF (LSAME(TRANS,'N')) THEN * * Form y := alpha*A*x + y. * JX = KX IF (INCY.EQ.1) THEN DO 60 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = ALPHA*X(JX) DO 50 I = 1,M Y(I) = Y(I) + TEMP*A(I,J) 50 CONTINUE END IF JX = JX + INCX 60 CONTINUE ELSE DO 80 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = ALPHA*X(JX) IY = KY DO 70 I = 1,M Y(IY) = Y(IY) + TEMP*A(I,J) IY = IY + INCY 70 CONTINUE END IF JX = JX + INCX 80 CONTINUE END IF ELSE * * Form y := alpha*A**T*x + y or y := alpha*A**H*x + y. * JY = KY IF (INCX.EQ.1) THEN DO 110 J = 1,N TEMP = ZERO IF (NOCONJ) THEN DO 90 I = 1,M TEMP = TEMP + A(I,J)*X(I) 90 CONTINUE ELSE DO 100 I = 1,M TEMP = TEMP + DCONJG(A(I,J))*X(I) 100 CONTINUE END IF Y(JY) = Y(JY) + ALPHA*TEMP JY = JY + INCY 110 CONTINUE ELSE DO 140 J = 1,N TEMP = ZERO IX = KX IF (NOCONJ) THEN DO 120 I = 1,M TEMP = TEMP + A(I,J)*X(IX) IX = IX + INCX 120 CONTINUE ELSE DO 130 I = 1,M TEMP = TEMP + DCONJG(A(I,J))*X(IX) IX = IX + INCX 130 CONTINUE END IF Y(JY) = Y(JY) + ALPHA*TEMP JY = JY + INCY 140 CONTINUE END IF END IF * RETURN * * End of ZGEMV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zcopy.f0000644002504400250440000000005012337331322016231 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zcopy.f0000644002504400250440000000405312337331322016777 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZCOPY * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZCOPY(N,ZX,INCX,ZY,INCY) * * .. Scalar Arguments .. * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*),ZY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZCOPY copies a vector, x, to a vector, y. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, linpack, 4/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE ZCOPY(N,ZX,INCX,ZY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,INCY,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*),ZY(*) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY * .. IF (N.LE.0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 * DO I = 1,N ZY(I) = ZX(I) END DO ELSE * * code for unequal increments or equal increments * not equal to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N ZY(IY) = ZX(IX) IX = IX + INCX IY = IY + INCY END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/ztrsm.f0000644002504400250440000000005012337331322016244 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/ztrsm.f0000644002504400250440000003576712337331322017032 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZTRSM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA * INTEGER LDA,LDB,M,N * CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),B(LDB,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZTRSM solves one of the matrix equations *> *> op( A )*X = alpha*B, or X*op( A ) = alpha*B, *> *> where alpha is a scalar, X and B are m by n matrices, A is a unit, or *> non-unit, upper or lower triangular matrix and op( A ) is one of *> *> op( A ) = A or op( A ) = A**T or op( A ) = A**H. *> *> The matrix X is overwritten on B. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) appears on the left *> or right of X as follows: *> *> SIDE = 'L' or 'l' op( A )*X = alpha*B. *> *> SIDE = 'R' or 'r' X*op( A ) = alpha*B. *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANSA *> \verbatim *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: *> *> TRANSA = 'N' or 'n' op( A ) = A. *> *> TRANSA = 'T' or 't' op( A ) = A**T. *> *> TRANSA = 'C' or 'c' op( A ) = A**H. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of B. M must be at *> least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of B. N must be *> at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. When alpha is *> zero then A is not referenced and B need not be set before *> entry. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, k ), *> where k is m when SIDE = 'L' or 'l' *> and k is n when SIDE = 'R' or 'r'. *> Before entry with UPLO = 'U' or 'u', the leading k by k *> upper triangular part of the array A must contain the upper *> triangular matrix and the strictly lower triangular part of *> A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading k by k *> lower triangular part of the array A must contain the lower *> triangular matrix and the strictly upper triangular part of *> A is not referenced. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced either, but are assumed to be unity. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When SIDE = 'L' or 'l' then *> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r' *> then LDA must be at least max( 1, n ). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is COMPLEX*16 array of DIMENSION ( LDB, n ). *> Before entry, the leading m by n part of the array B must *> contain the right-hand side matrix B, and on exit is *> overwritten by the solution matrix X. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. LDB must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE ZTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA INTEGER LDA,LDB,M,N CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),B(LDB,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,J,K,NROWA LOGICAL LSIDE,NOCONJ,NOUNIT,UPPER * .. * .. Parameters .. COMPLEX*16 ONE PARAMETER (ONE= (1.0D+0,0.0D+0)) COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * * Test the input parameters. * LSIDE = LSAME(SIDE,'L') IF (LSIDE) THEN NROWA = M ELSE NROWA = N END IF NOCONJ = LSAME(TRANSA,'T') NOUNIT = LSAME(DIAG,'N') UPPER = LSAME(UPLO,'U') * INFO = 0 IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN INFO = 1 ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 2 ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND. + (.NOT.LSAME(TRANSA,'T')) .AND. + (.NOT.LSAME(TRANSA,'C'))) THEN INFO = 3 ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN INFO = 4 ELSE IF (M.LT.0) THEN INFO = 5 ELSE IF (N.LT.0) THEN INFO = 6 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 9 ELSE IF (LDB.LT.MAX(1,M)) THEN INFO = 11 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZTRSM ',INFO) RETURN END IF * * Quick return if possible. * IF (M.EQ.0 .OR. N.EQ.0) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,M B(I,J) = ZERO 10 CONTINUE 20 CONTINUE RETURN END IF * * Start the operations. * IF (LSIDE) THEN IF (LSAME(TRANSA,'N')) THEN * * Form B := alpha*inv( A )*B. * IF (UPPER) THEN DO 60 J = 1,N IF (ALPHA.NE.ONE) THEN DO 30 I = 1,M B(I,J) = ALPHA*B(I,J) 30 CONTINUE END IF DO 50 K = M,1,-1 IF (B(K,J).NE.ZERO) THEN IF (NOUNIT) B(K,J) = B(K,J)/A(K,K) DO 40 I = 1,K - 1 B(I,J) = B(I,J) - B(K,J)*A(I,K) 40 CONTINUE END IF 50 CONTINUE 60 CONTINUE ELSE DO 100 J = 1,N IF (ALPHA.NE.ONE) THEN DO 70 I = 1,M B(I,J) = ALPHA*B(I,J) 70 CONTINUE END IF DO 90 K = 1,M IF (B(K,J).NE.ZERO) THEN IF (NOUNIT) B(K,J) = B(K,J)/A(K,K) DO 80 I = K + 1,M B(I,J) = B(I,J) - B(K,J)*A(I,K) 80 CONTINUE END IF 90 CONTINUE 100 CONTINUE END IF ELSE * * Form B := alpha*inv( A**T )*B * or B := alpha*inv( A**H )*B. * IF (UPPER) THEN DO 140 J = 1,N DO 130 I = 1,M TEMP = ALPHA*B(I,J) IF (NOCONJ) THEN DO 110 K = 1,I - 1 TEMP = TEMP - A(K,I)*B(K,J) 110 CONTINUE IF (NOUNIT) TEMP = TEMP/A(I,I) ELSE DO 120 K = 1,I - 1 TEMP = TEMP - DCONJG(A(K,I))*B(K,J) 120 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(A(I,I)) END IF B(I,J) = TEMP 130 CONTINUE 140 CONTINUE ELSE DO 180 J = 1,N DO 170 I = M,1,-1 TEMP = ALPHA*B(I,J) IF (NOCONJ) THEN DO 150 K = I + 1,M TEMP = TEMP - A(K,I)*B(K,J) 150 CONTINUE IF (NOUNIT) TEMP = TEMP/A(I,I) ELSE DO 160 K = I + 1,M TEMP = TEMP - DCONJG(A(K,I))*B(K,J) 160 CONTINUE IF (NOUNIT) TEMP = TEMP/DCONJG(A(I,I)) END IF B(I,J) = TEMP 170 CONTINUE 180 CONTINUE END IF END IF ELSE IF (LSAME(TRANSA,'N')) THEN * * Form B := alpha*B*inv( A ). * IF (UPPER) THEN DO 230 J = 1,N IF (ALPHA.NE.ONE) THEN DO 190 I = 1,M B(I,J) = ALPHA*B(I,J) 190 CONTINUE END IF DO 210 K = 1,J - 1 IF (A(K,J).NE.ZERO) THEN DO 200 I = 1,M B(I,J) = B(I,J) - A(K,J)*B(I,K) 200 CONTINUE END IF 210 CONTINUE IF (NOUNIT) THEN TEMP = ONE/A(J,J) DO 220 I = 1,M B(I,J) = TEMP*B(I,J) 220 CONTINUE END IF 230 CONTINUE ELSE DO 280 J = N,1,-1 IF (ALPHA.NE.ONE) THEN DO 240 I = 1,M B(I,J) = ALPHA*B(I,J) 240 CONTINUE END IF DO 260 K = J + 1,N IF (A(K,J).NE.ZERO) THEN DO 250 I = 1,M B(I,J) = B(I,J) - A(K,J)*B(I,K) 250 CONTINUE END IF 260 CONTINUE IF (NOUNIT) THEN TEMP = ONE/A(J,J) DO 270 I = 1,M B(I,J) = TEMP*B(I,J) 270 CONTINUE END IF 280 CONTINUE END IF ELSE * * Form B := alpha*B*inv( A**T ) * or B := alpha*B*inv( A**H ). * IF (UPPER) THEN DO 330 K = N,1,-1 IF (NOUNIT) THEN IF (NOCONJ) THEN TEMP = ONE/A(K,K) ELSE TEMP = ONE/DCONJG(A(K,K)) END IF DO 290 I = 1,M B(I,K) = TEMP*B(I,K) 290 CONTINUE END IF DO 310 J = 1,K - 1 IF (A(J,K).NE.ZERO) THEN IF (NOCONJ) THEN TEMP = A(J,K) ELSE TEMP = DCONJG(A(J,K)) END IF DO 300 I = 1,M B(I,J) = B(I,J) - TEMP*B(I,K) 300 CONTINUE END IF 310 CONTINUE IF (ALPHA.NE.ONE) THEN DO 320 I = 1,M B(I,K) = ALPHA*B(I,K) 320 CONTINUE END IF 330 CONTINUE ELSE DO 380 K = 1,N IF (NOUNIT) THEN IF (NOCONJ) THEN TEMP = ONE/A(K,K) ELSE TEMP = ONE/DCONJG(A(K,K)) END IF DO 340 I = 1,M B(I,K) = TEMP*B(I,K) 340 CONTINUE END IF DO 360 J = K + 1,N IF (A(J,K).NE.ZERO) THEN IF (NOCONJ) THEN TEMP = A(J,K) ELSE TEMP = DCONJG(A(J,K)) END IF DO 350 I = 1,M B(I,J) = B(I,J) - TEMP*B(I,K) 350 CONTINUE END IF 360 CONTINUE IF (ALPHA.NE.ONE) THEN DO 370 I = 1,M B(I,K) = ALPHA*B(I,K) 370 CONTINUE END IF 380 CONTINUE END IF END IF END IF * RETURN * * End of ZTRSM . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dgemv.f0000644002504400250440000000005012337331322016167 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dgemv.f0000644002504400250440000002137112337331322016737 0ustar00dewhurstdewhurst00000000000000*> \brief \b DGEMV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA,BETA * INTEGER INCX,INCY,LDA,M,N * CHARACTER TRANS * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DGEMV performs one of the matrix-vector operations *> *> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, *> *> where alpha and beta are scalars, x and y are vectors and A is an *> m by n matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. *> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. *> *> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix A. *> M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ). *> Before entry, the leading m by n part of the array A must *> contain the matrix of coefficients. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, m ). *> \endverbatim *> *> \param[in] X *> \verbatim *> X is DOUBLE PRECISION array of DIMENSION at least *> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' *> and at least *> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. *> Before entry, the incremented array X must contain the *> vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION. *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then Y need not be set on input. *> \endverbatim *> *> \param[in,out] Y *> \verbatim *> Y is DOUBLE PRECISION array of DIMENSION at least *> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' *> and at least *> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. *> Before entry with BETA non-zero, the incremented array Y *> must contain the vector y. On exit, Y is overwritten by the *> updated vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> The vector and matrix arguments are not referenced when N = 0, or M = 0 *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA,BETA INTEGER INCX,INCY,LDA,M,N CHARACTER TRANS * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,IX,IY,J,JX,JY,KX,KY,LENX,LENY * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. + .NOT.LSAME(TRANS,'C')) THEN INFO = 1 ELSE IF (M.LT.0) THEN INFO = 2 ELSE IF (N.LT.0) THEN INFO = 3 ELSE IF (LDA.LT.MAX(1,M)) THEN INFO = 6 ELSE IF (INCX.EQ.0) THEN INFO = 8 ELSE IF (INCY.EQ.0) THEN INFO = 11 END IF IF (INFO.NE.0) THEN CALL XERBLA('DGEMV ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. + ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN * * Set LENX and LENY, the lengths of the vectors x and y, and set * up the start points in X and Y. * IF (LSAME(TRANS,'N')) THEN LENX = N LENY = M ELSE LENX = M LENY = N END IF IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (LENX-1)*INCX END IF IF (INCY.GT.0) THEN KY = 1 ELSE KY = 1 - (LENY-1)*INCY END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * * First form y := beta*y. * IF (BETA.NE.ONE) THEN IF (INCY.EQ.1) THEN IF (BETA.EQ.ZERO) THEN DO 10 I = 1,LENY Y(I) = ZERO 10 CONTINUE ELSE DO 20 I = 1,LENY Y(I) = BETA*Y(I) 20 CONTINUE END IF ELSE IY = KY IF (BETA.EQ.ZERO) THEN DO 30 I = 1,LENY Y(IY) = ZERO IY = IY + INCY 30 CONTINUE ELSE DO 40 I = 1,LENY Y(IY) = BETA*Y(IY) IY = IY + INCY 40 CONTINUE END IF END IF END IF IF (ALPHA.EQ.ZERO) RETURN IF (LSAME(TRANS,'N')) THEN * * Form y := alpha*A*x + y. * JX = KX IF (INCY.EQ.1) THEN DO 60 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = ALPHA*X(JX) DO 50 I = 1,M Y(I) = Y(I) + TEMP*A(I,J) 50 CONTINUE END IF JX = JX + INCX 60 CONTINUE ELSE DO 80 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = ALPHA*X(JX) IY = KY DO 70 I = 1,M Y(IY) = Y(IY) + TEMP*A(I,J) IY = IY + INCY 70 CONTINUE END IF JX = JX + INCX 80 CONTINUE END IF ELSE * * Form y := alpha*A**T*x + y. * JY = KY IF (INCX.EQ.1) THEN DO 100 J = 1,N TEMP = ZERO DO 90 I = 1,M TEMP = TEMP + A(I,J)*X(I) 90 CONTINUE Y(JY) = Y(JY) + ALPHA*TEMP JY = JY + INCY 100 CONTINUE ELSE DO 120 J = 1,N TEMP = ZERO IX = KX DO 110 I = 1,M TEMP = TEMP + A(I,J)*X(IX) IX = IX + INCX 110 CONTINUE Y(JY) = Y(JY) + ALPHA*TEMP JY = JY + INCY 120 CONTINUE END IF END IF * RETURN * * End of DGEMV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zgeru.f0000644002504400250440000000005012337331322016221 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zgeru.f0000644002504400250440000001304012337331322016763 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZGERU * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * .. Scalar Arguments .. * COMPLEX*16 ALPHA * INTEGER INCX,INCY,LDA,M,N * .. * .. Array Arguments .. * COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZGERU performs the rank 1 operation *> *> A := alpha*x*y**T + A, *> *> where alpha is a scalar, x is an m element vector, y is an n element *> vector and A is an m by n matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix A. *> M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is COMPLEX*16 array of dimension at least *> ( 1 + ( m - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the m *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in] Y *> \verbatim *> Y is COMPLEX*16 array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. *> \endverbatim *> *> \param[in] INCY *> \verbatim *> INCY is INTEGER *> On entry, INCY specifies the increment for the elements of *> Y. INCY must not be zero. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is COMPLEX*16 array of DIMENSION ( LDA, n ). *> Before entry, the leading m by n part of the array A must *> contain the matrix of coefficients. On exit, A is *> overwritten by the updated matrix. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE ZGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. COMPLEX*16 ALPHA INTEGER INCX,INCY,LDA,M,N * .. * .. Array Arguments .. COMPLEX*16 A(LDA,*),X(*),Y(*) * .. * * ===================================================================== * * .. Parameters .. COMPLEX*16 ZERO PARAMETER (ZERO= (0.0D+0,0.0D+0)) * .. * .. Local Scalars .. COMPLEX*16 TEMP INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * * Test the input parameters. * INFO = 0 IF (M.LT.0) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 5 ELSE IF (INCY.EQ.0) THEN INFO = 7 ELSE IF (LDA.LT.MAX(1,M)) THEN INFO = 9 END IF IF (INFO.NE.0) THEN CALL XERBLA('ZGERU ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF (INCY.GT.0) THEN JY = 1 ELSE JY = 1 - (N-1)*INCY END IF IF (INCX.EQ.1) THEN DO 20 J = 1,N IF (Y(JY).NE.ZERO) THEN TEMP = ALPHA*Y(JY) DO 10 I = 1,M A(I,J) = A(I,J) + X(I)*TEMP 10 CONTINUE END IF JY = JY + INCY 20 CONTINUE ELSE IF (INCX.GT.0) THEN KX = 1 ELSE KX = 1 - (M-1)*INCX END IF DO 40 J = 1,N IF (Y(JY).NE.ZERO) THEN TEMP = ALPHA*Y(JY) IX = KX DO 30 I = 1,M A(I,J) = A(I,J) + X(IX)*TEMP IX = IX + INCX 30 CONTINUE END IF JY = JY + INCY 40 CONTINUE END IF * RETURN * * End of ZGERU . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/lsame.f0000644002504400250440000000005012337331322016166 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/lsame.f0000644002504400250440000000611212337331322016732 0ustar00dewhurstdewhurst00000000000000*> \brief \b LSAME * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * LOGICAL FUNCTION LSAME(CA,CB) * * .. Scalar Arguments .. * CHARACTER CA,CB * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> LSAME returns .TRUE. if CA is the same letter as CB regardless of *> case. *> \endverbatim * * Arguments: * ========== * *> \param[in] CA *> \verbatim *> CA is CHARACTER*1 *> \endverbatim *> *> \param[in] CB *> \verbatim *> CB is CHARACTER*1 *> CA and CB specify the single characters to be compared. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup aux_blas * * ===================================================================== LOGICAL FUNCTION LSAME(CA,CB) * * -- Reference BLAS level1 routine (version 3.1) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. CHARACTER CA,CB * .. * * ===================================================================== * * .. Intrinsic Functions .. INTRINSIC ICHAR * .. * .. Local Scalars .. INTEGER INTA,INTB,ZCODE * .. * * Test if the characters are equal * LSAME = CA .EQ. CB IF (LSAME) RETURN * * Now test for equivalence if both characters are alphabetic. * ZCODE = ICHAR('Z') * * Use 'Z' rather than 'A' so that ASCII can be detected on Prime * machines, on which ICHAR returns a value with bit 8 set. * ICHAR('A') on Prime machines returns 193 which is the same as * ICHAR('A') on an EBCDIC machine. * INTA = ICHAR(CA) INTB = ICHAR(CB) * IF (ZCODE.EQ.90 .OR. ZCODE.EQ.122) THEN * * ASCII is assumed - ZCODE is the ASCII code of either lower or * upper case 'Z'. * IF (INTA.GE.97 .AND. INTA.LE.122) INTA = INTA - 32 IF (INTB.GE.97 .AND. INTB.LE.122) INTB = INTB - 32 * ELSE IF (ZCODE.EQ.233 .OR. ZCODE.EQ.169) THEN * * EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or * upper case 'Z'. * IF (INTA.GE.129 .AND. INTA.LE.137 .OR. + INTA.GE.145 .AND. INTA.LE.153 .OR. + INTA.GE.162 .AND. INTA.LE.169) INTA = INTA + 64 IF (INTB.GE.129 .AND. INTB.LE.137 .OR. + INTB.GE.145 .AND. INTB.LE.153 .OR. + INTB.GE.162 .AND. INTB.LE.169) INTB = INTB + 64 * ELSE IF (ZCODE.EQ.218 .OR. ZCODE.EQ.250) THEN * * ASCII is assumed, on Prime machines - ZCODE is the ASCII code * plus 128 of either lower or upper case 'Z'. * IF (INTA.GE.225 .AND. INTA.LE.250) INTA = INTA - 32 IF (INTB.GE.225 .AND. INTB.LE.250) INTB = INTB - 32 END IF LSAME = INTA .EQ. INTB * * RETURN * * End of LSAME * END elk-2.3.22/src/BLAS/PaxHeaders.22528/izamax.f0000644002504400250440000000005012337331322016356 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/izamax.f0000644002504400250440000000453112337331322017125 0ustar00dewhurstdewhurst00000000000000*> \brief \b IZAMAX * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * INTEGER FUNCTION IZAMAX(N,ZX,INCX) * * .. Scalar Arguments .. * INTEGER INCX,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> IZAMAX finds the index of element having max. absolute value. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup aux_blas * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, 1/15/85. *> modified 3/93 to return if incx .le. 0. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== INTEGER FUNCTION IZAMAX(N,ZX,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*) * .. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DMAX INTEGER I,IX * .. * .. External Functions .. DOUBLE PRECISION DCABS1 EXTERNAL DCABS1 * .. IZAMAX = 0 IF (N.LT.1 .OR. INCX.LE.0) RETURN IZAMAX = 1 IF (N.EQ.1) RETURN IF (INCX.EQ.1) THEN * * code for increment equal to 1 * DMAX = DCABS1(ZX(1)) DO I = 2,N IF (DCABS1(ZX(I)).GT.DMAX) THEN IZAMAX = I DMAX = DCABS1(ZX(I)) END IF END DO ELSE * * code for increment not equal to 1 * IX = 1 DMAX = DCABS1(ZX(1)) IX = IX + INCX DO I = 2,N IF (DCABS1(ZX(IX)).GT.DMAX) THEN IZAMAX = I DMAX = DCABS1(ZX(IX)) END IF IX = IX + INCX END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/dsyr.f0000644002504400250440000000005012337331322016046 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dsyr.f0000644002504400250440000001616312337331322016621 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYR * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DSYR(UPLO,N,ALPHA,X,INCX,A,LDA) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA * INTEGER INCX,LDA,N * CHARACTER UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYR performs the symmetric rank 1 operation *> *> A := alpha*x*x**T + A, *> *> where alpha is a real scalar, x is an n element vector and A is an *> n by n symmetric matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] X *> \verbatim *> X is DOUBLE PRECISION array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim *> *> \param[in,out] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular part of the symmetric matrix and the strictly *> lower triangular part of A is not referenced. On exit, the *> upper triangular part of the array A is overwritten by the *> upper triangular part of the updated matrix. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular part of the symmetric matrix and the strictly *> upper triangular part of A is not referenced. On exit, the *> lower triangular part of the array A is overwritten by the *> lower triangular part of the updated matrix. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE DSYR(UPLO,N,ALPHA,X,INCX,A,LDA) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA INTEGER INCX,LDA,N CHARACTER UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),X(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER (ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,IX,J,JX,KX * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (N.LT.0) THEN INFO = 2 ELSE IF (INCX.EQ.0) THEN INFO = 5 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 7 END IF IF (INFO.NE.0) THEN CALL XERBLA('DSYR ',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (ALPHA.EQ.ZERO)) RETURN * * Set the start point in X if the increment is not unity. * IF (INCX.LE.0) THEN KX = 1 - (N-1)*INCX ELSE IF (INCX.NE.1) THEN KX = 1 END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through the triangular part * of A. * IF (LSAME(UPLO,'U')) THEN * * Form A when A is stored in upper triangle. * IF (INCX.EQ.1) THEN DO 20 J = 1,N IF (X(J).NE.ZERO) THEN TEMP = ALPHA*X(J) DO 10 I = 1,J A(I,J) = A(I,J) + X(I)*TEMP 10 CONTINUE END IF 20 CONTINUE ELSE JX = KX DO 40 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = ALPHA*X(JX) IX = KX DO 30 I = 1,J A(I,J) = A(I,J) + X(IX)*TEMP IX = IX + INCX 30 CONTINUE END IF JX = JX + INCX 40 CONTINUE END IF ELSE * * Form A when A is stored in lower triangle. * IF (INCX.EQ.1) THEN DO 60 J = 1,N IF (X(J).NE.ZERO) THEN TEMP = ALPHA*X(J) DO 50 I = J,N A(I,J) = A(I,J) + X(I)*TEMP 50 CONTINUE END IF 60 CONTINUE ELSE JX = KX DO 80 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = ALPHA*X(JX) IX = JX DO 70 I = J,N A(I,J) = A(I,J) + X(IX)*TEMP IX = IX + INCX 70 CONTINUE END IF JX = JX + INCX 80 CONTINUE END IF END IF * RETURN * * End of DSYR . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dasum.f0000644002504400250440000000005012337331322016176 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dasum.f0000644002504400250440000000477612337331322016760 0ustar00dewhurstdewhurst00000000000000*> \brief \b DASUM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX) * * .. Scalar Arguments .. * INTEGER INCX,N * .. * .. Array Arguments .. * DOUBLE PRECISION DX(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DASUM takes the sum of the absolute values. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, linpack, 3/11/78. *> modified 3/93 to return if incx .le. 0. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,N * .. * .. Array Arguments .. DOUBLE PRECISION DX(*) * .. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DTEMP INTEGER I,M,MP1,NINCX * .. * .. Intrinsic Functions .. INTRINSIC DABS,MOD * .. DASUM = 0.0d0 DTEMP = 0.0d0 IF (N.LE.0 .OR. INCX.LE.0) RETURN IF (INCX.EQ.1) THEN * code for increment equal to 1 * * * clean-up loop * M = MOD(N,6) IF (M.NE.0) THEN DO I = 1,M DTEMP = DTEMP + DABS(DX(I)) END DO IF (N.LT.6) THEN DASUM = DTEMP RETURN END IF END IF MP1 = M + 1 DO I = MP1,N,6 DTEMP = DTEMP + DABS(DX(I)) + DABS(DX(I+1)) + $ DABS(DX(I+2)) + DABS(DX(I+3)) + $ DABS(DX(I+4)) + DABS(DX(I+5)) END DO ELSE * * code for increment not equal to 1 * NINCX = N*INCX DO I = 1,NINCX,INCX DTEMP = DTEMP + DABS(DX(I)) END DO END IF DASUM = DTEMP RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/dsymm.f0000644002504400250440000000005012337331322016216 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dsymm.f0000644002504400250440000002567612337331322017002 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYMM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA,BETA * INTEGER LDA,LDB,LDC,M,N * CHARACTER SIDE,UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYMM performs one of the matrix-matrix operations *> *> C := alpha*A*B + beta*C, *> *> or *> *> C := alpha*B*A + beta*C, *> *> where alpha and beta are scalars, A is a symmetric matrix and B and *> C are m by n matrices. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether the symmetric matrix A *> appears on the left or right in the operation as follows: *> *> SIDE = 'L' or 'l' C := alpha*A*B + beta*C, *> *> SIDE = 'R' or 'r' C := alpha*B*A + beta*C, *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the symmetric matrix A is to be *> referenced as follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of the *> symmetric matrix is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of the *> symmetric matrix is to be referenced. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of the matrix C. *> M must be at least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of the matrix C. *> N must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is *> m when SIDE = 'L' or 'l' and is n otherwise. *> Before entry with SIDE = 'L' or 'l', the m by m part of *> the array A must contain the symmetric matrix, such that *> when UPLO = 'U' or 'u', the leading m by m upper triangular *> part of the array A must contain the upper triangular part *> of the symmetric matrix and the strictly lower triangular *> part of A is not referenced, and when UPLO = 'L' or 'l', *> the leading m by m lower triangular part of the array A *> must contain the lower triangular part of the symmetric *> matrix and the strictly upper triangular part of A is not *> referenced. *> Before entry with SIDE = 'R' or 'r', the n by n part of *> the array A must contain the symmetric matrix, such that *> when UPLO = 'U' or 'u', the leading n by n upper triangular *> part of the array A must contain the upper triangular part *> of the symmetric matrix and the strictly lower triangular *> part of A is not referenced, and when UPLO = 'L' or 'l', *> the leading n by n lower triangular part of the array A *> must contain the lower triangular part of the symmetric *> matrix and the strictly upper triangular part of A is not *> referenced. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When SIDE = 'L' or 'l' then *> LDA must be at least max( 1, m ), otherwise LDA must be at *> least max( 1, n ). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION array of DIMENSION ( LDB, n ). *> Before entry, the leading m by n part of the array B must *> contain the matrix B. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. LDB must be at least *> max( 1, m ). *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION. *> On entry, BETA specifies the scalar beta. When BETA is *> supplied as zero then C need not be set on input. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array of DIMENSION ( LDC, n ). *> Before entry, the leading m by n part of the array C must *> contain the matrix C, except when beta is zero, in which *> case C need not be set on entry. *> On exit, the array C is overwritten by the m by n updated *> matrix. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> On entry, LDC specifies the first dimension of C as declared *> in the calling (sub) program. LDC must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE DSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA,BETA INTEGER LDA,LDB,LDC,M,N CHARACTER SIDE,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Local Scalars .. DOUBLE PRECISION TEMP1,TEMP2 INTEGER I,INFO,J,K,NROWA LOGICAL UPPER * .. * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * * Set NROWA as the number of rows of A. * IF (LSAME(SIDE,'L')) THEN NROWA = M ELSE NROWA = N END IF UPPER = LSAME(UPLO,'U') * * Test the input parameters. * INFO = 0 IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN INFO = 1 ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 2 ELSE IF (M.LT.0) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 7 ELSE IF (LDB.LT.MAX(1,M)) THEN INFO = 9 ELSE IF (LDC.LT.MAX(1,M)) THEN INFO = 12 END IF IF (INFO.NE.0) THEN CALL XERBLA('DSYMM ',INFO) RETURN END IF * * Quick return if possible. * IF ((M.EQ.0) .OR. (N.EQ.0) .OR. + ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN IF (BETA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,M C(I,J) = ZERO 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1,N DO 30 I = 1,M C(I,J) = BETA*C(I,J) 30 CONTINUE 40 CONTINUE END IF RETURN END IF * * Start the operations. * IF (LSAME(SIDE,'L')) THEN * * Form C := alpha*A*B + beta*C. * IF (UPPER) THEN DO 70 J = 1,N DO 60 I = 1,M TEMP1 = ALPHA*B(I,J) TEMP2 = ZERO DO 50 K = 1,I - 1 C(K,J) = C(K,J) + TEMP1*A(K,I) TEMP2 = TEMP2 + B(K,J)*A(K,I) 50 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2 ELSE C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) + + ALPHA*TEMP2 END IF 60 CONTINUE 70 CONTINUE ELSE DO 100 J = 1,N DO 90 I = M,1,-1 TEMP1 = ALPHA*B(I,J) TEMP2 = ZERO DO 80 K = I + 1,M C(K,J) = C(K,J) + TEMP1*A(K,I) TEMP2 = TEMP2 + B(K,J)*A(K,I) 80 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = TEMP1*A(I,I) + ALPHA*TEMP2 ELSE C(I,J) = BETA*C(I,J) + TEMP1*A(I,I) + + ALPHA*TEMP2 END IF 90 CONTINUE 100 CONTINUE END IF ELSE * * Form C := alpha*B*A + beta*C. * DO 170 J = 1,N TEMP1 = ALPHA*A(J,J) IF (BETA.EQ.ZERO) THEN DO 110 I = 1,M C(I,J) = TEMP1*B(I,J) 110 CONTINUE ELSE DO 120 I = 1,M C(I,J) = BETA*C(I,J) + TEMP1*B(I,J) 120 CONTINUE END IF DO 140 K = 1,J - 1 IF (UPPER) THEN TEMP1 = ALPHA*A(K,J) ELSE TEMP1 = ALPHA*A(J,K) END IF DO 130 I = 1,M C(I,J) = C(I,J) + TEMP1*B(I,K) 130 CONTINUE 140 CONTINUE DO 160 K = J + 1,N IF (UPPER) THEN TEMP1 = ALPHA*A(J,K) ELSE TEMP1 = ALPHA*A(K,J) END IF DO 150 I = 1,M C(I,J) = C(I,J) + TEMP1*B(I,K) 150 CONTINUE 160 CONTINUE 170 CONTINUE END IF * RETURN * * End of DSYMM . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dtrmv.f0000644002504400250440000000005012337331322016221 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dtrmv.f0000644002504400250440000002363512337331322016776 0ustar00dewhurstdewhurst00000000000000*> \brief \b DTRMV * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX) * * .. Scalar Arguments .. * INTEGER INCX,LDA,N * CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),X(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DTRMV performs one of the matrix-vector operations *> *> x := A*x, or x := A**T*x, *> *> where x is an n element vector and A is an n by n unit, or non-unit, *> upper or lower triangular matrix. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' x := A*x. *> *> TRANS = 'T' or 't' x := A**T*x. *> *> TRANS = 'C' or 'c' x := A**T*x. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix A. *> N must be at least zero. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array A must contain the upper *> triangular matrix and the strictly lower triangular part of *> A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array A must contain the lower *> triangular matrix and the strictly upper triangular part of *> A is not referenced. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced either, but are assumed to be unity. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. LDA must be at least *> max( 1, n ). *> \endverbatim *> *> \param[in,out] X *> \verbatim *> X is DOUBLE PRECISION array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. On exit, X is overwritten with the *> tranformed vector x. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level2 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 2 Blas routine. *> The vector and matrix arguments are not referenced when N = 0, or M = 0 *> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. *> Sven Hammarling, Nag Central Office. *> Richard Hanson, Sandia National Labs. *> \endverbatim *> * ===================================================================== SUBROUTINE DTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX) * * -- Reference BLAS level2 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,LDA,N CHARACTER DIAG,TRANS,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),X(*) * .. * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER (ZERO=0.0D+0) * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,IX,J,JX,KX LOGICAL NOUNIT * .. * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * * Test the input parameters. * INFO = 0 IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN INFO = 1 ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. + .NOT.LSAME(TRANS,'C')) THEN INFO = 2 ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN INFO = 3 ELSE IF (N.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,N)) THEN INFO = 6 ELSE IF (INCX.EQ.0) THEN INFO = 8 END IF IF (INFO.NE.0) THEN CALL XERBLA('DTRMV ',INFO) RETURN END IF * * Quick return if possible. * IF (N.EQ.0) RETURN * NOUNIT = LSAME(DIAG,'N') * * Set up the start point in X if the increment is not unity. This * will be ( N - 1 )*INCX too small for descending loops. * IF (INCX.LE.0) THEN KX = 1 - (N-1)*INCX ELSE IF (INCX.NE.1) THEN KX = 1 END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF (LSAME(TRANS,'N')) THEN * * Form x := A*x. * IF (LSAME(UPLO,'U')) THEN IF (INCX.EQ.1) THEN DO 20 J = 1,N IF (X(J).NE.ZERO) THEN TEMP = X(J) DO 10 I = 1,J - 1 X(I) = X(I) + TEMP*A(I,J) 10 CONTINUE IF (NOUNIT) X(J) = X(J)*A(J,J) END IF 20 CONTINUE ELSE JX = KX DO 40 J = 1,N IF (X(JX).NE.ZERO) THEN TEMP = X(JX) IX = KX DO 30 I = 1,J - 1 X(IX) = X(IX) + TEMP*A(I,J) IX = IX + INCX 30 CONTINUE IF (NOUNIT) X(JX) = X(JX)*A(J,J) END IF JX = JX + INCX 40 CONTINUE END IF ELSE IF (INCX.EQ.1) THEN DO 60 J = N,1,-1 IF (X(J).NE.ZERO) THEN TEMP = X(J) DO 50 I = N,J + 1,-1 X(I) = X(I) + TEMP*A(I,J) 50 CONTINUE IF (NOUNIT) X(J) = X(J)*A(J,J) END IF 60 CONTINUE ELSE KX = KX + (N-1)*INCX JX = KX DO 80 J = N,1,-1 IF (X(JX).NE.ZERO) THEN TEMP = X(JX) IX = KX DO 70 I = N,J + 1,-1 X(IX) = X(IX) + TEMP*A(I,J) IX = IX - INCX 70 CONTINUE IF (NOUNIT) X(JX) = X(JX)*A(J,J) END IF JX = JX - INCX 80 CONTINUE END IF END IF ELSE * * Form x := A**T*x. * IF (LSAME(UPLO,'U')) THEN IF (INCX.EQ.1) THEN DO 100 J = N,1,-1 TEMP = X(J) IF (NOUNIT) TEMP = TEMP*A(J,J) DO 90 I = J - 1,1,-1 TEMP = TEMP + A(I,J)*X(I) 90 CONTINUE X(J) = TEMP 100 CONTINUE ELSE JX = KX + (N-1)*INCX DO 120 J = N,1,-1 TEMP = X(JX) IX = JX IF (NOUNIT) TEMP = TEMP*A(J,J) DO 110 I = J - 1,1,-1 IX = IX - INCX TEMP = TEMP + A(I,J)*X(IX) 110 CONTINUE X(JX) = TEMP JX = JX - INCX 120 CONTINUE END IF ELSE IF (INCX.EQ.1) THEN DO 140 J = 1,N TEMP = X(J) IF (NOUNIT) TEMP = TEMP*A(J,J) DO 130 I = J + 1,N TEMP = TEMP + A(I,J)*X(I) 130 CONTINUE X(J) = TEMP 140 CONTINUE ELSE JX = KX DO 160 J = 1,N TEMP = X(JX) IX = JX IF (NOUNIT) TEMP = TEMP*A(J,J) DO 150 I = J + 1,N IX = IX + INCX TEMP = TEMP + A(I,J)*X(IX) 150 CONTINUE X(JX) = TEMP JX = JX + INCX 160 CONTINUE END IF END IF END IF * RETURN * * End of DTRMV . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/dtrmm.f0000644002504400250440000000005012337331322016210 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dtrmm.f0000644002504400250440000003102512337331322016755 0ustar00dewhurstdewhurst00000000000000*> \brief \b DTRMM * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA * INTEGER LDA,LDB,M,N * CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),B(LDB,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DTRMM performs one of the matrix-matrix operations *> *> B := alpha*op( A )*B, or B := alpha*B*op( A ), *> *> where alpha is a scalar, B is an m by n matrix, A is a unit, or *> non-unit, upper or lower triangular matrix and op( A ) is one of *> *> op( A ) = A or op( A ) = A**T. *> \endverbatim * * Arguments: * ========== * *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) multiplies B from *> the left or right as follows: *> *> SIDE = 'L' or 'l' B := alpha*op( A )*B. *> *> SIDE = 'R' or 'r' B := alpha*B*op( A ). *> \endverbatim *> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: *> *> UPLO = 'U' or 'u' A is an upper triangular matrix. *> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> *> \param[in] TRANSA *> \verbatim *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: *> *> TRANSA = 'N' or 'n' op( A ) = A. *> *> TRANSA = 'T' or 't' op( A ) = A**T. *> *> TRANSA = 'C' or 'c' op( A ) = A**T. *> \endverbatim *> *> \param[in] DIAG *> \verbatim *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: *> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. *> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER *> On entry, M specifies the number of rows of B. M must be at *> least zero. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the number of columns of B. N must be *> at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. When alpha is *> zero then A is not referenced and B need not be set before *> entry. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m *> when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'. *> Before entry with UPLO = 'U' or 'u', the leading k by k *> upper triangular part of the array A must contain the upper *> triangular matrix and the strictly lower triangular part of *> A is not referenced. *> Before entry with UPLO = 'L' or 'l', the leading k by k *> lower triangular part of the array A must contain the lower *> triangular matrix and the strictly upper triangular part of *> A is not referenced. *> Note that when DIAG = 'U' or 'u', the diagonal elements of *> A are not referenced either, but are assumed to be unity. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When SIDE = 'L' or 'l' then *> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r' *> then LDA must be at least max( 1, n ). *> \endverbatim *> *> \param[in,out] B *> \verbatim *> B is DOUBLE PRECISION array of DIMENSION ( LDB, n ). *> Before entry, the leading m by n part of the array B must *> contain the matrix B, and on exit is overwritten by the *> transformed matrix. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. LDB must be at least *> max( 1, m ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA INTEGER LDA,LDB,M,N CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),B(LDB,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I,INFO,J,K,NROWA LOGICAL LSIDE,NOUNIT,UPPER * .. * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * * Test the input parameters. * LSIDE = LSAME(SIDE,'L') IF (LSIDE) THEN NROWA = M ELSE NROWA = N END IF NOUNIT = LSAME(DIAG,'N') UPPER = LSAME(UPLO,'U') * INFO = 0 IF ((.NOT.LSIDE) .AND. (.NOT.LSAME(SIDE,'R'))) THEN INFO = 1 ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 2 ELSE IF ((.NOT.LSAME(TRANSA,'N')) .AND. + (.NOT.LSAME(TRANSA,'T')) .AND. + (.NOT.LSAME(TRANSA,'C'))) THEN INFO = 3 ELSE IF ((.NOT.LSAME(DIAG,'U')) .AND. (.NOT.LSAME(DIAG,'N'))) THEN INFO = 4 ELSE IF (M.LT.0) THEN INFO = 5 ELSE IF (N.LT.0) THEN INFO = 6 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 9 ELSE IF (LDB.LT.MAX(1,M)) THEN INFO = 11 END IF IF (INFO.NE.0) THEN CALL XERBLA('DTRMM ',INFO) RETURN END IF * * Quick return if possible. * IF (M.EQ.0 .OR. N.EQ.0) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,M B(I,J) = ZERO 10 CONTINUE 20 CONTINUE RETURN END IF * * Start the operations. * IF (LSIDE) THEN IF (LSAME(TRANSA,'N')) THEN * * Form B := alpha*A*B. * IF (UPPER) THEN DO 50 J = 1,N DO 40 K = 1,M IF (B(K,J).NE.ZERO) THEN TEMP = ALPHA*B(K,J) DO 30 I = 1,K - 1 B(I,J) = B(I,J) + TEMP*A(I,K) 30 CONTINUE IF (NOUNIT) TEMP = TEMP*A(K,K) B(K,J) = TEMP END IF 40 CONTINUE 50 CONTINUE ELSE DO 80 J = 1,N DO 70 K = M,1,-1 IF (B(K,J).NE.ZERO) THEN TEMP = ALPHA*B(K,J) B(K,J) = TEMP IF (NOUNIT) B(K,J) = B(K,J)*A(K,K) DO 60 I = K + 1,M B(I,J) = B(I,J) + TEMP*A(I,K) 60 CONTINUE END IF 70 CONTINUE 80 CONTINUE END IF ELSE * * Form B := alpha*A**T*B. * IF (UPPER) THEN DO 110 J = 1,N DO 100 I = M,1,-1 TEMP = B(I,J) IF (NOUNIT) TEMP = TEMP*A(I,I) DO 90 K = 1,I - 1 TEMP = TEMP + A(K,I)*B(K,J) 90 CONTINUE B(I,J) = ALPHA*TEMP 100 CONTINUE 110 CONTINUE ELSE DO 140 J = 1,N DO 130 I = 1,M TEMP = B(I,J) IF (NOUNIT) TEMP = TEMP*A(I,I) DO 120 K = I + 1,M TEMP = TEMP + A(K,I)*B(K,J) 120 CONTINUE B(I,J) = ALPHA*TEMP 130 CONTINUE 140 CONTINUE END IF END IF ELSE IF (LSAME(TRANSA,'N')) THEN * * Form B := alpha*B*A. * IF (UPPER) THEN DO 180 J = N,1,-1 TEMP = ALPHA IF (NOUNIT) TEMP = TEMP*A(J,J) DO 150 I = 1,M B(I,J) = TEMP*B(I,J) 150 CONTINUE DO 170 K = 1,J - 1 IF (A(K,J).NE.ZERO) THEN TEMP = ALPHA*A(K,J) DO 160 I = 1,M B(I,J) = B(I,J) + TEMP*B(I,K) 160 CONTINUE END IF 170 CONTINUE 180 CONTINUE ELSE DO 220 J = 1,N TEMP = ALPHA IF (NOUNIT) TEMP = TEMP*A(J,J) DO 190 I = 1,M B(I,J) = TEMP*B(I,J) 190 CONTINUE DO 210 K = J + 1,N IF (A(K,J).NE.ZERO) THEN TEMP = ALPHA*A(K,J) DO 200 I = 1,M B(I,J) = B(I,J) + TEMP*B(I,K) 200 CONTINUE END IF 210 CONTINUE 220 CONTINUE END IF ELSE * * Form B := alpha*B*A**T. * IF (UPPER) THEN DO 260 K = 1,N DO 240 J = 1,K - 1 IF (A(J,K).NE.ZERO) THEN TEMP = ALPHA*A(J,K) DO 230 I = 1,M B(I,J) = B(I,J) + TEMP*B(I,K) 230 CONTINUE END IF 240 CONTINUE TEMP = ALPHA IF (NOUNIT) TEMP = TEMP*A(K,K) IF (TEMP.NE.ONE) THEN DO 250 I = 1,M B(I,K) = TEMP*B(I,K) 250 CONTINUE END IF 260 CONTINUE ELSE DO 300 K = N,1,-1 DO 280 J = K + 1,N IF (A(J,K).NE.ZERO) THEN TEMP = ALPHA*A(J,K) DO 270 I = 1,M B(I,J) = B(I,J) + TEMP*B(I,K) 270 CONTINUE END IF 280 CONTINUE TEMP = ALPHA IF (NOUNIT) TEMP = TEMP*A(K,K) IF (TEMP.NE.ONE) THEN DO 290 I = 1,M B(I,K) = TEMP*B(I,K) 290 CONTINUE END IF 300 CONTINUE END IF END IF END IF * RETURN * * End of DTRMM . * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zdotu.f0000644002504400250440000000005012337331322016232 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zdotu.f0000644002504400250440000000426712337331322017007 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZDOTU * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * COMPLEX*16 FUNCTION ZDOTU(N,ZX,INCX,ZY,INCY) * * .. Scalar Arguments .. * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*),ZY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZDOTU forms the dot product of two vectors. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, 3/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== COMPLEX*16 FUNCTION ZDOTU(N,ZX,INCX,ZY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,INCY,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*),ZY(*) * .. * * ===================================================================== * * .. Local Scalars .. COMPLEX*16 ZTEMP INTEGER I,IX,IY * .. ZTEMP = (0.0d0,0.0d0) ZDOTU = (0.0d0,0.0d0) IF (N.LE.0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 * DO I = 1,N ZTEMP = ZTEMP + ZX(I)*ZY(I) END DO ELSE * * code for unequal increments or equal increments * not equal to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N ZTEMP = ZTEMP + ZX(IX)*ZY(IY) IX = IX + INCX IY = IY + INCY END DO END IF ZDOTU = ZTEMP RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/dsyr2k.f0000644002504400250440000000005012337331322016303 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/dsyr2k.f0000644002504400250440000003033612337331322017054 0ustar00dewhurstdewhurst00000000000000*> \brief \b DSYR2K * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE DSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * .. Scalar Arguments .. * DOUBLE PRECISION ALPHA,BETA * INTEGER K,LDA,LDB,LDC,N * CHARACTER TRANS,UPLO * .. * .. Array Arguments .. * DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> DSYR2K performs one of the symmetric rank 2k operations *> *> C := alpha*A*B**T + alpha*B*A**T + beta*C, *> *> or *> *> C := alpha*A**T*B + alpha*B**T*A + beta*C, *> *> where alpha and beta are scalars, C is an n by n symmetric matrix *> and A and B are n by k matrices in the first case and k by n *> matrices in the second case. *> \endverbatim * * Arguments: * ========== * *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: *> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. *> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim *> *> \param[in] TRANS *> \verbatim *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: *> *> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T + *> beta*C. *> *> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A + *> beta*C. *> *> TRANS = 'C' or 'c' C := alpha*A**T*B + alpha*B**T*A + *> beta*C. *> \endverbatim *> *> \param[in] N *> \verbatim *> N is INTEGER *> On entry, N specifies the order of the matrix C. N must be *> at least zero. *> \endverbatim *> *> \param[in] K *> \verbatim *> K is INTEGER *> On entry with TRANS = 'N' or 'n', K specifies the number *> of columns of the matrices A and B, and on entry with *> TRANS = 'T' or 't' or 'C' or 'c', K specifies the number *> of rows of the matrices A and B. K must be at least zero. *> \endverbatim *> *> \param[in] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION. *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim *> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is *> k when TRANS = 'N' or 'n', and is n otherwise. *> Before entry with TRANS = 'N' or 'n', the leading n by k *> part of the array A must contain the matrix A, otherwise *> the leading k by n part of the array A must contain the *> matrix A. *> \endverbatim *> *> \param[in] LDA *> \verbatim *> LDA is INTEGER *> On entry, LDA specifies the first dimension of A as declared *> in the calling (sub) program. When TRANS = 'N' or 'n' *> then LDA must be at least max( 1, n ), otherwise LDA must *> be at least max( 1, k ). *> \endverbatim *> *> \param[in] B *> \verbatim *> B is DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is *> k when TRANS = 'N' or 'n', and is n otherwise. *> Before entry with TRANS = 'N' or 'n', the leading n by k *> part of the array B must contain the matrix B, otherwise *> the leading k by n part of the array B must contain the *> matrix B. *> \endverbatim *> *> \param[in] LDB *> \verbatim *> LDB is INTEGER *> On entry, LDB specifies the first dimension of B as declared *> in the calling (sub) program. When TRANS = 'N' or 'n' *> then LDB must be at least max( 1, n ), otherwise LDB must *> be at least max( 1, k ). *> \endverbatim *> *> \param[in] BETA *> \verbatim *> BETA is DOUBLE PRECISION. *> On entry, BETA specifies the scalar beta. *> \endverbatim *> *> \param[in,out] C *> \verbatim *> C is DOUBLE PRECISION array of DIMENSION ( LDC, n ). *> Before entry with UPLO = 'U' or 'u', the leading n by n *> upper triangular part of the array C must contain the upper *> triangular part of the symmetric matrix and the strictly *> lower triangular part of C is not referenced. On exit, the *> upper triangular part of the array C is overwritten by the *> upper triangular part of the updated matrix. *> Before entry with UPLO = 'L' or 'l', the leading n by n *> lower triangular part of the array C must contain the lower *> triangular part of the symmetric matrix and the strictly *> upper triangular part of C is not referenced. On exit, the *> lower triangular part of the array C is overwritten by the *> lower triangular part of the updated matrix. *> \endverbatim *> *> \param[in] LDC *> \verbatim *> LDC is INTEGER *> On entry, LDC specifies the first dimension of C as declared *> in the calling (sub) program. LDC must be at least *> max( 1, n ). *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup double_blas_level3 * *> \par Further Details: * ===================== *> *> \verbatim *> *> Level 3 Blas routine. *> *> *> -- Written on 8-February-1989. *> Jack Dongarra, Argonne National Laboratory. *> Iain Duff, AERE Harwell. *> Jeremy Du Croz, Numerical Algorithms Group Ltd. *> Sven Hammarling, Numerical Algorithms Group Ltd. *> \endverbatim *> * ===================================================================== SUBROUTINE DSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) * * -- Reference BLAS level3 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION ALPHA,BETA INTEGER K,LDA,LDB,LDC,N CHARACTER TRANS,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*) * .. * * ===================================================================== * * .. External Functions .. LOGICAL LSAME EXTERNAL LSAME * .. * .. External Subroutines .. EXTERNAL XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX * .. * .. Local Scalars .. DOUBLE PRECISION TEMP1,TEMP2 INTEGER I,INFO,J,L,NROWA LOGICAL UPPER * .. * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) * .. * * Test the input parameters. * IF (LSAME(TRANS,'N')) THEN NROWA = N ELSE NROWA = K END IF UPPER = LSAME(UPLO,'U') * INFO = 0 IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN INFO = 1 ELSE IF ((.NOT.LSAME(TRANS,'N')) .AND. + (.NOT.LSAME(TRANS,'T')) .AND. + (.NOT.LSAME(TRANS,'C'))) THEN INFO = 2 ELSE IF (N.LT.0) THEN INFO = 3 ELSE IF (K.LT.0) THEN INFO = 4 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN INFO = 7 ELSE IF (LDB.LT.MAX(1,NROWA)) THEN INFO = 9 ELSE IF (LDC.LT.MAX(1,N)) THEN INFO = 12 END IF IF (INFO.NE.0) THEN CALL XERBLA('DSYR2K',INFO) RETURN END IF * * Quick return if possible. * IF ((N.EQ.0) .OR. (((ALPHA.EQ.ZERO).OR. + (K.EQ.0)).AND. (BETA.EQ.ONE))) RETURN * * And when alpha.eq.zero. * IF (ALPHA.EQ.ZERO) THEN IF (UPPER) THEN IF (BETA.EQ.ZERO) THEN DO 20 J = 1,N DO 10 I = 1,J C(I,J) = ZERO 10 CONTINUE 20 CONTINUE ELSE DO 40 J = 1,N DO 30 I = 1,J C(I,J) = BETA*C(I,J) 30 CONTINUE 40 CONTINUE END IF ELSE IF (BETA.EQ.ZERO) THEN DO 60 J = 1,N DO 50 I = J,N C(I,J) = ZERO 50 CONTINUE 60 CONTINUE ELSE DO 80 J = 1,N DO 70 I = J,N C(I,J) = BETA*C(I,J) 70 CONTINUE 80 CONTINUE END IF END IF RETURN END IF * * Start the operations. * IF (LSAME(TRANS,'N')) THEN * * Form C := alpha*A*B**T + alpha*B*A**T + C. * IF (UPPER) THEN DO 130 J = 1,N IF (BETA.EQ.ZERO) THEN DO 90 I = 1,J C(I,J) = ZERO 90 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 100 I = 1,J C(I,J) = BETA*C(I,J) 100 CONTINUE END IF DO 120 L = 1,K IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN TEMP1 = ALPHA*B(J,L) TEMP2 = ALPHA*A(J,L) DO 110 I = 1,J C(I,J) = C(I,J) + A(I,L)*TEMP1 + + B(I,L)*TEMP2 110 CONTINUE END IF 120 CONTINUE 130 CONTINUE ELSE DO 180 J = 1,N IF (BETA.EQ.ZERO) THEN DO 140 I = J,N C(I,J) = ZERO 140 CONTINUE ELSE IF (BETA.NE.ONE) THEN DO 150 I = J,N C(I,J) = BETA*C(I,J) 150 CONTINUE END IF DO 170 L = 1,K IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN TEMP1 = ALPHA*B(J,L) TEMP2 = ALPHA*A(J,L) DO 160 I = J,N C(I,J) = C(I,J) + A(I,L)*TEMP1 + + B(I,L)*TEMP2 160 CONTINUE END IF 170 CONTINUE 180 CONTINUE END IF ELSE * * Form C := alpha*A**T*B + alpha*B**T*A + C. * IF (UPPER) THEN DO 210 J = 1,N DO 200 I = 1,J TEMP1 = ZERO TEMP2 = ZERO DO 190 L = 1,K TEMP1 = TEMP1 + A(L,I)*B(L,J) TEMP2 = TEMP2 + B(L,I)*A(L,J) 190 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2 ELSE C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 + + ALPHA*TEMP2 END IF 200 CONTINUE 210 CONTINUE ELSE DO 240 J = 1,N DO 230 I = J,N TEMP1 = ZERO TEMP2 = ZERO DO 220 L = 1,K TEMP1 = TEMP1 + A(L,I)*B(L,J) TEMP2 = TEMP2 + B(L,I)*A(L,J) 220 CONTINUE IF (BETA.EQ.ZERO) THEN C(I,J) = ALPHA*TEMP1 + ALPHA*TEMP2 ELSE C(I,J) = BETA*C(I,J) + ALPHA*TEMP1 + + ALPHA*TEMP2 END IF 230 CONTINUE 240 CONTINUE END IF END IF * RETURN * * End of DSYR2K. * END elk-2.3.22/src/BLAS/PaxHeaders.22528/zdscal.f0000644002504400250440000000005012337331322016345 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zdscal.f0000644002504400250440000000401212337331322017106 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZDSCAL * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZDSCAL(N,DA,ZX,INCX) * * .. Scalar Arguments .. * DOUBLE PRECISION DA * INTEGER INCX,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZDSCAL scales a vector by a constant. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, 3/11/78. *> modified 3/93 to return if incx .le. 0. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== SUBROUTINE ZDSCAL(N,DA,ZX,INCX) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. DOUBLE PRECISION DA INTEGER INCX,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*) * .. * * ===================================================================== * * .. Local Scalars .. INTEGER I,NINCX * .. * .. Intrinsic Functions .. INTRINSIC DCMPLX * .. IF (N.LE.0 .OR. INCX.LE.0) RETURN IF (INCX.EQ.1) THEN * * code for increment equal to 1 * DO I = 1,N ZX(I) = DCMPLX(DA,0.0d0)*ZX(I) END DO ELSE * * code for increment not equal to 1 * NINCX = N*INCX DO I = 1,NINCX,INCX ZX(I) = DCMPLX(DA,0.0d0)*ZX(I) END DO END IF RETURN END elk-2.3.22/src/BLAS/PaxHeaders.22528/zdotc.f0000644002504400250440000000005012337331322016210 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/BLAS/zdotc.f0000644002504400250440000000440112337331322016753 0ustar00dewhurstdewhurst00000000000000*> \brief \b ZDOTC * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * COMPLEX*16 FUNCTION ZDOTC(N,ZX,INCX,ZY,INCY) * * .. Scalar Arguments .. * INTEGER INCX,INCY,N * .. * .. Array Arguments .. * COMPLEX*16 ZX(*),ZY(*) * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZDOTC forms the dot product of a vector. *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \date November 2011 * *> \ingroup complex16_blas_level1 * *> \par Further Details: * ===================== *> *> \verbatim *> *> jack dongarra, 3/11/78. *> modified 12/3/93, array(1) declarations changed to array(*) *> \endverbatim *> * ===================================================================== COMPLEX*16 FUNCTION ZDOTC(N,ZX,INCX,ZY,INCY) * * -- Reference BLAS level1 routine (version 3.4.0) -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * * .. Scalar Arguments .. INTEGER INCX,INCY,N * .. * .. Array Arguments .. COMPLEX*16 ZX(*),ZY(*) * .. * * ===================================================================== * * .. Local Scalars .. COMPLEX*16 ZTEMP INTEGER I,IX,IY * .. * .. Intrinsic Functions .. INTRINSIC DCONJG * .. ZTEMP = (0.0d0,0.0d0) ZDOTC = (0.0d0,0.0d0) IF (N.LE.0) RETURN IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN * * code for both increments equal to 1 * DO I = 1,N ZTEMP = ZTEMP + DCONJG(ZX(I))*ZY(I) END DO ELSE * * code for unequal increments or equal increments * not equal to 1 * IX = 1 IY = 1 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 DO I = 1,N ZTEMP = ZTEMP + DCONJG(ZX(IX))*ZY(IY) IX = IX + INCX IY = IY + INCY END DO END IF ZDOTC = ZTEMP RETURN END elk-2.3.22/src/PaxHeaders.22528/rfsht.f900000644002504400250440000000005012337331322015643 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/rfsht.f900000644002504400250440000000160612337331322016412 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine rfsht(nr,nri,lrstp1,rfmt1,lrstp2,rfmt2) use modmain implicit none ! arguments integer, intent(in) :: nr,nri integer, intent(in) :: lrstp1 real(8), intent(in) :: rfmt1(lmmaxvr,lrstp1,*) integer, intent(in) :: lrstp2 real(8), intent(out) :: rfmt2(lmmaxvr,lrstp2,*) ! local variables integer ld1,ld2,nr0,ir0 ld1=lmmaxvr*lrstp1 ld2=lmmaxvr*lrstp2 ! transform the inner part of the muffin-tin call dgemm('N','N',lmmaxinr,nri,lmmaxinr,1.d0,rfshtinr,lmmaxinr,rfmt1,ld1, & 0.d0,rfmt2,ld2) ! transform the outer part of the muffin-tin nr0=nr-nri if (nr0.eq.0) return ir0=nri+1 call dgemm('N','N',lmmaxvr,nr0,lmmaxvr,1.d0,rfshtvr,lmmaxvr,rfmt1(:,1,ir0), & ld1,0.d0,rfmt2(:,1,ir0),ld2) return end subroutine elk-2.3.22/src/PaxHeaders.22528/x_wc06.f900000644002504400250440000000005012337331324015625 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/x_wc06.f900000644002504400250440000000233212337331324016371 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 Zhigang Wu and R. E. Cohen. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine x_wc06(rho,s,u,v,ex,vx) implicit none ! arguments real(8), intent(in) :: rho real(8), intent(in) :: s real(8), intent(in) :: u real(8), intent(in) :: v real(8), intent(out) :: ex real(8), intent(out) :: vx ! local variables real(8), parameter :: ax=-0.7385587663820224059d0 real(8), parameter :: mu=0.2195149727645171d0 real(8), parameter :: kappa=0.804d0 real(8), parameter :: b=10.d0/81.d0 real(8), parameter :: c=0.00793746933516d0 real(8), parameter :: thrd=1.d0/3.d0 real(8), parameter :: thrd4=4.d0/3.d0 real(8) dmu,exu real(8) s2,s4,es2,x,p0,fxwc real(8) fs,fss,t0,t1,t2,t3 ! lda exchange energy density exu=ax*rho**thrd s2=s**2 s4=s2**2 es2=exp(-s2) t0=1.d0+c*s4 dmu=mu-b x=b*s2+dmu*s2*es2+log(t0) p0=1.d0+x/kappa ! WC enhancement factor fxwc=1.d0+kappa-kappa/p0 ! exchange energy density ex=exu*fxwc t1=b+dmu*(1.d0-s2)*es2+2.d0*c*s2/t0 t2=dmu*s*(s2-2.d0)*es2+2.d0*c/t0-4.d0*(c**2)*s4/(t0**2) t3=1.d0/(p0**2) fs=2.d0*t1*t3 fss=t3*(4.d0*t2-8.d0*s*(t1**2)/(kappa*p0)) ! exchange potential vx=exu*(thrd4*fxwc-(u-thrd4*s2*s)*fss-v*fs) return end elk-2.3.22/src/PaxHeaders.22528/gradwf2.f900000644002504400250440000000005012337331324016053 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gradwf2.f900000644002504400250440000001115012337331324016615 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gradwf2(ik,evecfv,evecsv,gwf2mt,gwf2ir) use modmain implicit none ! arguments integer, intent(in) :: ik complex(8), intent(in) :: evecfv(nmatmax,nstfv,nspnfv) complex(8), intent(in) :: evecsv(nstsv,nstsv) real(8), intent(inout) :: gwf2mt(lmmaxvr,nrmtmax,natmtot) real(8), intent(inout) :: gwf2ir(ngtot) ! local variables integer ist,ispn,jspn integer is,ia,ias integer nr,nri,ir integer igk,ifg,i,j real(8) t0,t1 complex(8) zq(2),z1 ! automatic arrays logical done(nstfv,nspnfv) ! allocatable arrays complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: wfmt1(:,:,:,:),wfmt2(:,:,:) complex(8), allocatable :: gwfmt(:,:,:),zfmt(:,:) complex(8), allocatable :: zfft1(:,:),zfft2(:) !-------------------------! ! muffin-tin part ! !-------------------------! allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(wfmt1(lmmaxvr,nrmtmax,nstfv,nspnfv)) allocate(wfmt2(lmmaxvr,nrmtmax,nspinor)) allocate(gwfmt(lmmaxvr,nrmtmax,3),zfmt(lmmaxvr,nrmtmax)) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do do is=1,nspecies nr=nrmt(is) nri=nrmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) ! de-phasing factor for spin-spirals if (spinsprl.and.ssdph) then t1=-0.5d0*dot_product(vqcss(:),atposc(:,ia,is)) zq(1)=cmplx(cos(t1),sin(t1),8) zq(2)=conjg(zq(1)) end if done(:,:)=.false. do j=1,nstsv if (abs(occsv(j,ik)).lt.epsocc) cycle t0=wkpt(ik)*occsv(j,ik) if (tevecsv) then ! generate spinor wavefunction from second-variational eigenvectors wfmt2(:,:,:)=0.d0 i=0 do ispn=1,nspinor jspn=jspnfv(ispn) do ist=1,nstfv i=i+1 z1=evecsv(i,j) if (spinsprl.and.ssdph) z1=z1*zq(ispn) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (.not.done(ist,jspn)) then call wavefmt(1,lmaxvr,ias,ngk(jspn,ik),apwalm(:,:,:,:,jspn), & evecfv(:,ist,jspn),lmmaxvr,wfmt1(:,:,ist,jspn)) done(ist,jspn)=.true. end if ! add to spinor wavefunction call zfmtadd(nr,nri,z1,wfmt1(:,:,ist,jspn),wfmt2(:,:,ispn)) end if end do end do else ! spin-unpolarised wavefunction call wavefmt(1,lmaxvr,ias,ngk(1,ik),apwalm,evecfv(:,j,1),lmmaxvr,wfmt2) end if ! compute the gradient of the wavefunction do ispn=1,nspinor call gradzfmt(nr,nri,spr(:,is),wfmt2(:,:,ispn),nrmtmax,gwfmt) ! convert gradient from spherical harmonics to spherical coordinates do i=1,3 call zbsht(nr,nri,gwfmt(:,:,i),zfmt) do ir=1,nri gwf2mt(1:lmmaxinr,ir,ias)=gwf2mt(1:lmmaxinr,ir,ias) & +t0*(dble(zfmt(1:lmmaxinr,ir))**2+aimag(zfmt(1:lmmaxinr,ir))**2) end do do ir=nri+1,nr gwf2mt(:,ir,ias)=gwf2mt(:,ir,ias) & +t0*(dble(zfmt(:,ir))**2+aimag(zfmt(:,ir))**2) end do end do end do end do end do end do deallocate(apwalm,wfmt1,wfmt2,gwfmt,zfmt) !---------------------------! ! interstitial part ! !---------------------------! allocate(zfft1(ngtot,nspinor),zfft2(ngtot)) do j=1,nstsv if (abs(occsv(j,ik)).lt.epsocc) cycle t0=wkpt(ik)*occsv(j,ik)/omega zfft1(:,:)=0.d0 if (tevecsv) then ! generate spinor wavefunction from second-variational eigenvectors i=0 do ispn=1,nspinor jspn=jspnfv(ispn) do ist=1,nstfv i=i+1 z1=evecsv(i,j) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then do igk=1,ngk(jspn,ik) ifg=igfft(igkig(igk,jspn,ik)) zfft1(ifg,ispn)=zfft1(ifg,ispn)+z1*evecfv(igk,ist,jspn) end do end if end do end do else ! spin-unpolarised wavefunction do igk=1,ngk(1,ik) ifg=igfft(igkig(igk,1,ik)) zfft1(ifg,1)=evecfv(igk,j,1) end do end if ! compute gradient of wavefunction do ispn=1,nspinor jspn=jspnfv(ispn) do i=1,3 zfft2(:)=0.d0 do igk=1,ngk(jspn,ik) ifg=igfft(igkig(igk,jspn,ik)) zfft2(ifg)=zi*vgkc(i,igk,jspn,ik)*zfft1(ifg,ispn) end do ! Fourier transform gradient to real-space call zfftifc(3,ngridg,1,zfft2) do ir=1,ngtot gwf2ir(ir)=gwf2ir(ir)+t0*(dble(zfft2(ir))**2+aimag(zfft2(ir))**2) end do end do end do end do deallocate(zfft1,zfft2) return end subroutine elk-2.3.22/src/PaxHeaders.22528/ggair_2b.f900000644002504400250440000000005012337331323016172 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggair_2b.f900000644002504400250440000000342412337331323016741 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggair_2b ! !INTERFACE: subroutine ggair_2b(g2rho,gvrho,vx,vc,dxdg2,dcdg2) ! !USES: use modmain ! !DESCRIPTION: ! Spin-unpolarised version of {\tt ggair\_sp\_2b}. ! ! !REVISION HISTORY: ! Created November 2009 (JKD and TMcQ) !EOP !BOC implicit none ! arguments real(8), intent(in) :: g2rho(ngtot) real(8), intent(in) :: gvrho(ngtot,3) real(8), intent(inout) :: vx(ngtot) real(8), intent(inout) :: vc(ngtot) real(8), intent(in) :: dxdg2(ngtot) real(8), intent(in) :: dcdg2(ngtot) ! local variables integer ig,ifg,i ! allocatable arrays real(8), allocatable :: rfir(:) complex(8), allocatable :: zfft1(:),zfft2(:) allocate(rfir(ngtot)) allocate(zfft1(ngtot),zfft2(ngtot)) !------------------! ! exchange ! !------------------! ! compute grad dxdg2 zfft1(:)=dxdg2(:) call zfftifc(3,ngridg,-1,zfft1) ! (grad dxdg2).(grad rho) rfir(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) rfir(:)=rfir(:)+dble(zfft2(:))*gvrho(:,i) end do vx(:)=vx(:)-2.d0*(rfir(:)+dxdg2(:)*g2rho(:)) !---------------------! ! correlation ! !---------------------! ! compute grad dcdg2 zfft1(:)=dcdg2(:) call zfftifc(3,ngridg,-1,zfft1) ! (grad dcdg2).(grad rho) rfir(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) rfir(:)=rfir(:)+dble(zfft2(:))*gvrho(:,i) end do vc(:)=vc(:)-2.d0*(rfir(:)+dcdg2(:)*g2rho(:)) deallocate(rfir,zfft1,zfft2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/dielectric_bse.f900000644002504400250440000000005012337331324017457 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dielectric_bse.f900000644002504400250440000000662412337331324020233 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dielectric_bse use modmain use modtest implicit none ! local variables integer a1,a2,ik1,jk1 integer i1,j1,ist1,jst1 integer iw,i,j,l integer iostat,nmbse_ real(8) e,eji,t1,t2 complex(8) eta,zv(3),z1 character(256) fname ! allocatable arrays real(8), allocatable :: w(:) complex(8), allocatable :: pmat(:,:,:) complex(8), allocatable :: sigma(:,:,:) ! initialise global variables call init0 call init1 ! read Fermi energy from a file call readfermi ! get the eigenvalues from file do ik1=1,nkpt call getevalsv(vkl(:,ik1),evalsv(:,ik1)) end do ! generate the BSE state index arrays call genidxbse ! allocate global BSE arrays if (allocated(evalbse)) deallocate(evalbse) allocate(evalbse(nmbse)) if (allocated(hmlbse)) deallocate(hmlbse) allocate(hmlbse(nmbse,nmbse)) ! read in the BSE eigenvectors and eigenvalues open(50,file='EVBSE.OUT',action='READ',form='UNFORMATTED',status='OLD', & iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(dielectric_bse): error opening EVBSE.OUT")') write(*,*) stop end if read(50) nmbse_ if (nmbse.ne.nmbse_) then write(*,*) write(*,'("Error(dielectric_bse): differing nmbse")') write(*,'(" current : ",I6)') nmbse write(*,'(" EVBSE.OUT : ",I6)') nmbse_ stop end if read(50) evalbse read(50) hmlbse close(50) ! allocate local arrays allocate(w(nwplot)) allocate(pmat(3,nstsv,nstsv)) allocate(sigma(3,3,nwplot)) ! generate energy grid (starting from zero) t1=wplot(2)/dble(nwplot) do iw=1,nwplot w(iw)=t1*dble(iw-1) end do ! i divided by the complex relaxation time eta=cmplx(0.d0,swidth,8) sigma(:,:,:)=0.d0 do a2=1,nmbse e=evalbse(a2) zv(:)=0.d0 ! loop over non-reduced k-points do ik1=1,nkptnr ! equivalent reduced k-point jk1=ikmap(ivk(1,ik1),ivk(2,ik1),ivk(3,ik1)) ! read the momentum matrix elements from file call getpmat(vkl(:,ik1),pmat) do i1=1,nvbse ist1=istbse(i1,ik1) do j1=1,ncbse jst1=jstbse(j1,ik1) a1=ijkbse(i1,j1,ik1) eji=evalsv(jst1,jk1)-evalsv(ist1,jk1) z1=(e/eji)*hmlbse(a1,a2) zv(:)=zv(:)+z1*pmat(:,ist1,jst1) end do end do end do if (abs(e).gt.1.d-8) then do i=1,3 do j=1,3 z1=zv(i)*conjg(zv(j))/e sigma(i,j,:)=sigma(i,j,:)+z1/(w(:)-e+eta)+conjg(z1)/(w(:)+e+eta) end do end do end if end do z1=zi*occmax*wkptnr/omega sigma(:,:,:)=z1*sigma(:,:,:) ! loop over tensor components do l=1,noptcomp i=optcomp(1,l) j=optcomp(2,l) t1=0.d0 if (i.eq.j) t1=1.d0 write(fname,'("EPSILON_BSE_",2I1,".OUT")') i,j open(60,file=trim(fname),action='WRITE',form='FORMATTED') do iw=1,nwplot t2=t1-fourpi*aimag(sigma(i,j,iw)/(w(iw)+eta)) write(60,'(2G18.10)') w(iw),t2 end do write(60,'(" ")') do iw=1,nwplot t2=fourpi*dble(sigma(i,j,iw)/(w(iw)+eta)) write(60,'(2G18.10)') w(iw),t2 end do close(60) end do write(*,*) write(*,'("Info(dielectric_bse):")') write(*,'(" dielectric tensor written to EPSILON_BSE_ij.OUT")') write(*,'(" for components")') do l=1,noptcomp write(*,'(" i = ",I1,", j = ",I1)') optcomp(1:2,l) end do ! write sigma to test file call writetest(187,'BSE optical conductivity',nv=nwplot,tol=2.d-2,zva=sigma) deallocate(w,pmat,sigma) ! deallocate global BSE arrays deallocate(evalbse,hmlbse) return end subroutine elk-2.3.22/src/PaxHeaders.22528/addlorbcnd.f900000644002504400250440000000005012337331323016612 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/addlorbcnd.f900000644002504400250440000000160312337331323017356 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine addlorbcnd use modmain implicit none ! local variables integer is,nlo,l,io if (.not.lorbcnd) return ! add conduction local-orbitals to each species do is=1,nspecies nlo=nlorb(is) do l=0,lmaxmat nlo=nlo+1 if (nlo.gt.maxlorb) then write(*,*) write(*,'("Error(addlorbcnd): nlorb too large : ",I8)') nlo write(*,'(" for species ",I4)') is write(*,'("Adjust maxlorb in modmain and recompile code")') write(*,*) stop end if lorbl(nlo,is)=l lorbord(nlo,is)=lorbordc do io=1,lorbordc lorbe0(io,nlo,is)=0.15d0 lorbdm(io,nlo,is)=io-1 lorbve(io,nlo,is)=.true. end do end do nlorb(is)=nlo end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/getvclijjk.f900000644002504400250440000000005012337331324016653 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/getvclijjk.f900000644002504400250440000000221512337331324017417 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: getvclijjk ! !INTERFACE: subroutine getvclijjk(ikp,vclijjk) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ikp : k-point from non-reduced set (in,integer) ! vclijjk : Coulomb matrix elements (out,complex(nstsv,nstsv,nstsv,nkpt)) ! !DESCRIPTION: ! Retrieves Coulomb matrix elements of the type $(i-jj-k)$ from the file ! {\tt VCLIJJK.OUT}. ! ! !REVISION HISTORY: ! Created 2009 (Sharma) !EOP !BOC implicit none ! arguments integer, intent(in) :: ikp complex(8), intent(out) :: vclijjk(nstsv,nstsv,nstsv,nkpt) ! local variables integer recl,iostat ! determine record length inquire(iolength=recl) vclijjk !$OMP CRITICAL open(95,file='VCLIJJK.OUT',action='READ',form='UNFORMATTED',access='DIRECT', & recl=recl,iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(getvclijjk): error opening file VCLIJJK.OUT")') write(*,*) stop end if read(95,rec=ikp) vclijjk close(95) !$OMP END CRITICAL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/putevecsv.f900000644002504400250440000000005012337331323016542 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/putevecsv.f900000644002504400250440000000122612337331323017307 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine putevecsv(ik,evecsv) use modmain implicit none ! arguments integer, intent(in) :: ik complex(8), intent(in) :: evecsv(nstsv,nstsv) ! local variables integer recl ! find the record length inquire(iolength=recl) vkl(:,ik),nstsv,evecsv !$OMP CRITICAL open(70,file=trim(scrpath)//'EVECSV'//trim(filext),action='WRITE', & form='UNFORMATTED',access='DIRECT',recl=recl) write(70,rec=ik) vkl(:,ik),nstsv,evecsv close(70) !$OMP END CRITICAL return end subroutine elk-2.3.22/src/PaxHeaders.22528/eveqnsv.f900000644002504400250440000000005012337331323016205 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/eveqnsv.f900000644002504400250440000002147512337331323016762 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2010 J. K. Dewhurst, S. Sharma, C. Ambrosch-Draxl, ! F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine eveqnsv(ngp,igpig,vgpc,apwalm,evalfv,evecfv,evalsvp,evecsv) use modmain use moddftu implicit none ! arguments integer, intent(in) :: ngp integer, intent(in) :: igpig(ngkmax) real(8), intent(in) :: vgpc(3,ngkmax) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) real(8), intent(in) :: evalfv(nstfv) complex(8), intent(in) :: evecfv(nmatmax,nstfv) real(8), intent(out) :: evalsvp(nstsv) complex(8), intent(out) :: evecsv(nstsv,nstsv) ! local variables integer nsc,nsd,ld,ist,jst integer ispn,jspn,is,ias integer nrc,nrci,iro,irc integer l,lm,lmi,nm,igp,ifg integer i,j,k,lwork,info real(8) ca,t1 real(8) ts0,ts1 complex(8) z1 ! automatic arrays complex(8) zlflm(lmmaxvr,3) ! allocatable arrays real(8), allocatable :: rwork(:) complex(8), allocatable :: wfmt1(:,:,:),wfmt2(:,:),wfmt3(:,:),wfmt4(:,:,:) complex(8), allocatable :: gwfmt(:,:,:),wfir1(:),wfir2(:),z(:,:),work(:) ! external functions complex(8) zdotc,zfmtinp external zdotc,zfmtinp ! no calculation of second-variational eigenvectors if (.not.tevecsv) then do i=1,nstsv evalsvp(i)=evalfv(i) end do evecsv(:,:)=0.d0 do i=1,nstsv evecsv(i,i)=1.d0 end do return end if call timesec(ts0) ! coupling constant of the external A-field (1/c) ca=1.d0/solsc ! number of spin combinations after application of Hamiltonian if (spinpol) then if (ncmag) then nsc=3 else nsc=2 end if nsd=2 else nsc=1 nsd=1 end if ld=lmmaxdm*nspinor ! zero the second-variational Hamiltonian (stored in the eigenvector array) evecsv(:,:)=0.d0 !-------------------------! ! muffin-tin part ! !-------------------------! lmi=lmmaxinr ! begin loop over atoms !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(wfmt1,wfmt2,wfmt3,wfmt4,gwfmt) & !$OMP PRIVATE(is,nrc,nrci,iro,ist,jst,irc,zlflm) & !$OMP PRIVATE(t1,l,nm,lm,i,j,k,ispn,jspn) !$OMP DO do ias=1,natmtot allocate(wfmt1(lmmaxvr,nrcmtmax,nstfv),wfmt2(lmmaxvr,nrcmtmax)) allocate(wfmt3(lmmaxvr,nrcmtmax),wfmt4(lmmaxvr,nrcmtmax,nsc)) if (afieldpol) allocate(gwfmt(lmmaxvr,nrcmtmax,3)) is=idxis(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) iro=nrci+1 ! compute the first-variational wavefunctions do ist=1,nstfv call wavefmt(lradstp,lmaxvr,ias,ngp,apwalm,evecfv(:,ist),lmmaxvr, & wfmt1(:,:,ist)) end do ! begin loop over states do jst=1,nstfv if (spinpol) then ! convert wavefunction to spherical coordinates call zbsht(nrc,nrci,wfmt1(:,:,jst),wfmt2) ! apply Kohn-Sham effective magnetic field wfmt3(1:lmi,1:nrci)=bsmt(1:lmi,1:nrci,ias,ndmag)*wfmt2(1:lmi,1:nrci) wfmt3(:,iro:nrc)=bsmt(:,iro:nrc,ias,ndmag)*wfmt2(:,iro:nrc) ! convert to spherical harmonics and store in wfmt4 call zfsht(nrc,nrci,wfmt3,wfmt4(:,:,1)) wfmt4(1:lmi,1:nrci,2)=-wfmt4(1:lmi,1:nrci,1) wfmt4(:,iro:nrc,2)=-wfmt4(:,iro:nrc,1) ! non-collinear magnetic field if (ncmag) then wfmt3(1:lmi,1:nrci)=cmplx(bsmt(1:lmi,1:nrci,ias,1), & -bsmt(1:lmi,1:nrci,ias,2),8)*wfmt2(1:lmi,1:nrci) wfmt3(:,iro:nrc)=cmplx(bsmt(:,iro:nrc,ias,1), & -bsmt(:,iro:nrc,ias,2),8)*wfmt2(:,iro:nrc) call zfsht(nrc,nrci,wfmt3,wfmt4(:,:,3)) end if ! apply spin-orbit coupling if required if (spinorb) then ! inner part of muffin-tin do irc=1,nrci call lopzflm(lmaxinr,wfmt1(:,irc,jst),lmmaxvr,zlflm) t1=socfr(irc,ias) wfmt4(1:lmi,irc,1)=wfmt4(1:lmi,irc,1)+t1*zlflm(1:lmi,3) wfmt4(1:lmi,irc,2)=wfmt4(1:lmi,irc,2)-t1*zlflm(1:lmi,3) if (ncmag) wfmt4(1:lmi,irc,3)=wfmt4(1:lmi,irc,3)+t1*(zlflm(1:lmi,1) & +cmplx(aimag(zlflm(1:lmi,2)),-dble(zlflm(1:lmi,2)),8)) end do ! outer part of muffin-tin do irc=iro,nrc call lopzflm(lmaxvr,wfmt1(:,irc,jst),lmmaxvr,zlflm) t1=socfr(irc,ias) wfmt4(:,irc,1)=wfmt4(:,irc,1)+t1*zlflm(:,3) wfmt4(:,irc,2)=wfmt4(:,irc,2)-t1*zlflm(:,3) if (ncmag) wfmt4(:,irc,3)=wfmt4(:,irc,3)+t1*(zlflm(:,1) & +cmplx(aimag(zlflm(:,2)),-dble(zlflm(:,2)),8)) end do end if else wfmt4(:,:,:)=0.d0 end if ! apply muffin-tin potential matrix if required if (tvmatmt) then do l=0,lmaxdm if (tvmmt(l,ias)) then nm=2*l+1 lm=idxlm(l,-l) do k=1,nsc if (k.eq.1) then ispn=1 jspn=1 else if (k.eq.2) then ispn=2 jspn=2 else ispn=1 jspn=2 end if call zgemm('N','N',nm,nrc,nm,zone,vmatmt(lm,ispn,lm,jspn,ias),ld, & wfmt1(lm,1,jst),lmmaxvr,zone,wfmt4(lm,1,k),lmmaxvr) end do end if end do end if ! apply vector potential if required if (afieldpol) then call gradzfmt(nrc,nrci,rcmt(:,is),wfmt1(:,:,jst),nrcmtmax,gwfmt) do irc=1,nrc wfmt3(:,irc)=afieldc(1)*gwfmt(:,irc,1) & +afieldc(2)*gwfmt(:,irc,2) & +afieldc(3)*gwfmt(:,irc,3) wfmt3(:,irc)=ca*cmplx(aimag(wfmt3(:,irc)),-dble(wfmt3(:,irc)),8) end do do k=1,nsd wfmt4(:,1:nrc,k)=wfmt4(:,1:nrc,k)+wfmt3(:,1:nrc) end do end if ! second-variational Hamiltonian matrix do ist=1,nstfv do k=1,nsc if (k.eq.1) then i=ist j=jst else if (k.eq.2) then i=ist+nstfv j=jst+nstfv else i=ist j=jst+nstfv end if if (i.le.j) then !$OMP ATOMIC evecsv(i,j)=evecsv(i,j)+zfmtinp(.true.,nrc,nrci,rcmt(:,is), & wfmt1(:,:,ist),wfmt4(:,:,k)) end if end do end do ! end loop over states end do deallocate(wfmt1,wfmt2,wfmt3,wfmt4) if (afieldpol) deallocate(gwfmt) ! end loop over atoms end do !$OMP END DO !$OMP END PARALLEL !---------------------------! ! interstitial part ! !---------------------------! if (spinpol) then ! begin loop over states !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(wfir1,wfir2,z) & !$OMP PRIVATE(igp,ifg,t1,z1,i,j,k,ist) !$OMP DO do jst=1,nstfv allocate(wfir1(ngtot),wfir2(ngtot),z(ngkmax,nsc)) wfir1(:)=0.d0 do igp=1,ngp ifg=igfft(igpig(igp)) wfir1(ifg)=evecfv(igp,jst) end do ! Fourier transform wavefunction to real-space call zfftifc(3,ngridg,1,wfir1) ! multiply with magnetic field and transform to G-space wfir2(:)=bsir(:,ndmag)*wfir1(:) call zfftifc(3,ngridg,-1,wfir2) do igp=1,ngp ifg=igfft(igpig(igp)) z(igp,1)=wfir2(ifg) z(igp,2)=-wfir2(ifg) end do if (ncmag) then wfir2(:)=cmplx(bsir(:,1),-bsir(:,2),8)*wfir1(:) call zfftifc(3,ngridg,-1,wfir2) do igp=1,ngp ifg=igfft(igpig(igp)) z(igp,3)=wfir2(ifg) end do end if ! apply vector potential if required if (afieldpol) then ! multiply wavefunction with characteristic function and transform to G-space wfir1(:)=wfir1(:)*cfunir(:) call zfftifc(3,ngridg,-1,wfir1) do igp=1,ngp ifg=igfft(igpig(igp)) t1=ca*dot_product(afieldc(:),vgpc(:,igp)) z1=t1*wfir1(ifg) do k=1,nsd z(igp,k)=z(igp,k)+z1 end do end do end if ! add to Hamiltonian matrix do ist=1,nstfv do k=1,nsc if (k.eq.1) then i=ist j=jst else if (k.eq.2) then i=ist+nstfv j=jst+nstfv else i=ist j=jst+nstfv end if if (i.le.j) then !$OMP ATOMIC evecsv(i,j)=evecsv(i,j)+zdotc(ngp,evecfv(:,ist),1,z(:,k),1) end if end do end do deallocate(wfir1,wfir2,z) ! end loop over states end do !$OMP END DO !$OMP END PARALLEL end if ! add the diagonal first-variational part i=0 do ispn=1,nspinor do ist=1,nstfv i=i+1 evecsv(i,i)=evecsv(i,i)+evalfv(ist) end do end do ! diagonalise second-variational Hamiltonian allocate(rwork(3*nstsv)) lwork=2*nstsv allocate(work(lwork)) if (ndmag.eq.1) then ! collinear: block diagonalise H call zheev('V','U',nstfv,evecsv,nstsv,evalsvp,work,lwork,rwork,info) if (info.ne.0) goto 20 i=nstfv+1 call zheev('V','U',nstfv,evecsv(i,i),nstsv,evalsvp(i),work,lwork,rwork,info) if (info.ne.0) goto 20 do i=1,nstfv do j=1,nstfv evecsv(i,j+nstfv)=0.d0 evecsv(i+nstfv,j)=0.d0 end do end do else ! non-collinear or spin-unpolarised: full diagonalisation call zheev('V','U',nstsv,evecsv,nstsv,evalsvp,work,lwork,rwork,info) if (info.ne.0) goto 20 end if deallocate(rwork,work) call timesec(ts1) !$OMP ATOMIC timesv=timesv+ts1-ts0 return 20 continue write(*,*) write(*,'("Error(eveqnsv): diagonalisation of the second-variational & &Hamiltonian failed")') write(*,'(" ZHEEV returned INFO = ",I8)') info write(*,*) stop end subroutine elk-2.3.22/src/PaxHeaders.22528/compton.f900000644002504400250440000000005012337331323016175 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/compton.f900000644002504400250440000000036612337331323016746 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 S. Dugdale and D. Ernsting. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine compton use modmain implicit none return end subroutine elk-2.3.22/src/PaxHeaders.22528/writefermi.f900000644002504400250440000000005012337331323016673 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writefermi.f900000644002504400250440000000107112337331323017436 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writefermi ! !INTERFACE: subroutine writefermi ! !USES: use modmain ! !DESCRIPTION: ! Writes the Fermi energy to the file {\tt EFERMI.OUT}. ! ! !REVISION HISTORY: ! Created March 2005 (JKD) !EOP !BOC implicit none open(50,file='EFERMI'//trim(filext),action='WRITE',form='FORMATTED') write(50,'(G18.10)') efermi close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/sumrule.f900000644002504400250440000000005012337331324016213 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/sumrule.f900000644002504400250440000000402612337331324016761 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: sumrule ! !INTERFACE: subroutine sumrule(dynq) ! !INPUT/OUTPUT PARAMETERS: ! dynq : dynamical matrices on q-point set (in,real(nbph,nbph,nqpt)) ! !DESCRIPTION: ! Applies the same correction to all the dynamical matrices such that the ! matrix for ${\bf q}=0$ satisfies the acoustic sum rule. In other words, the ! matrices are updated with ! $$ D_{ij}^{\bf q}\rightarrow D_{ij}^{\bf q}-\sum_{k=1}^3 \omega_k^0 ! v_{k;i}^0 v_{k;j}^0 $$ ! for all ${\bf q}$, where $\omega_k^0$ is the $k$th eigenvalue of the ! ${\bf q}=0$ dynamical matrix and $v_{k;i}^0$ the $i$th component of its ! eigenvector. The eigenvalues are assumed to be arranged in ascending order. ! This ensures that the ${\bf q}=0$ dynamical matrix has 3 zero eigenvalues, ! which the uncorrected matrix may not have due to the finite ! exchange-correlation grid. ! ! !REVISION HISTORY: ! Created May 2005 (JKD) !EOP !BOC use modmain use modphonon implicit none ! arguments complex(8), intent(inout) :: dynq(nbph,nbph,nqpt) ! local variables integer iq,i,j,k integer lwork,info ! allocatable arrays real(8), allocatable :: w(:) real(8), allocatable :: rwork(:) complex(8), allocatable :: work(:) complex(8), allocatable :: ev(:,:) allocate(w(nbph)) allocate(rwork(3*nbph)) lwork=2*nbph allocate(work(lwork)) allocate(ev(nbph,nbph)) ! compute the eigenvalues and vectors of the q = 0 dynamical matrix do i=1,nbph do j=i,nbph ev(i,j)=0.5d0*(dynq(i,j,iq0)+conjg(dynq(j,i,iq0))) end do end do call zheev('V','U',nbph,ev,nbph,w,work,lwork,rwork,info) ! subtract outer products of 3 lowest eigenvectors for q = 0 from all the ! dynamical matrices do iq=1,nqpt do i=1,nbph do j=1,nbph do k=1,3 dynq(i,j,iq)=dynq(i,j,iq)-w(k)*ev(i,k)*conjg(ev(j,k)) end do end do end do end do deallocate(w,rwork,work,ev) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/stheta_sq.f900000644002504400250440000000005012337331323016511 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/stheta_sq.f900000644002504400250440000000157612337331323017266 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: stheta_sq ! !INTERFACE: real(8) function stheta_sq(x) ! !INPUT/OUTPUT PARAMETERS: ! x : real argument (in,real) ! !DESCRIPTION: ! Returns the Heaviside step function corresponding to the square-wave pulse ! approximation to the Dirac delta function ! $$ \tilde\Theta(x)=\left\{\begin{array}{ll} ! 0 & \quad x \le -1/2 \\ ! x+1/2 & \quad -1/2 < x < 1/2 \\ ! 1 & \quad x\ge 1 \end{array}\right. $$ ! ! !REVISION HISTORY: ! Created July 2008 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: x if (x.le.-0.5d0) then stheta_sq=0.d0 return end if if (x.lt.0.5d0) then stheta_sq=x+0.5d0 else stheta_sq=1.d0 end if return end function !EOC elk-2.3.22/src/PaxHeaders.22528/dhmlrad.f900000644002504400250440000000005012337331324016132 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dhmlrad.f900000644002504400250440000000641712337331324016706 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dhmlrad use modmain use modphonon implicit none ! local variables integer is,ia,ias,nr,ir integer l1,l2,l3,m2,lm2 integer ilo,jlo,io,jo real(8) t1,t2 ! allocatable arrays real(8), allocatable :: fr1(:),fr2(:),gr(:) ! automatic arrays real(8) r2(nrmtmax) ! begin loops over atoms and species do is=1,nspecies nr=nrmt(is) r2(1:nr)=spr(1:nr,is)**2 !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(fr1,fr2,gr,ias) & !$OMP PRIVATE(l1,l2,l3,io,jo,ir) & !$OMP PRIVATE(lm2,m2,t1,t2,ilo,jlo) SHARED(is) !$OMP DO do ia=1,natoms(is) allocate(fr1(nrmtmax),fr2(nrmtmax),gr(nrmtmax)) ias=idxas(ia,is) !---------------------------! ! APW-APW integrals ! !---------------------------! do l1=0,lmaxmat do io=1,apword(l1,is) do l3=0,lmaxmat do jo=1,apword(l3,is) lm2=0 do l2=0,lmaxvr do m2=-l2,l2 lm2=lm2+1 do ir=1,nr t1=apwfr(ir,1,io,l1,ias)*apwfr(ir,1,jo,l3,ias)*r2(ir) fr1(ir)=t1*dble(dvsmt(lm2,ir,ias)) fr2(ir)=t1*aimag(dvsmt(lm2,ir,ias)) end do call fderiv(-1,nr,spr(:,is),fr1,gr) t1=gr(nr) call fderiv(-1,nr,spr(:,is),fr2,gr) t2=gr(nr) dhaa(lm2,jo,l3,io,l1,ias)=cmplx(t1,t2,8) end do end do end do end do end do end do !-------------------------------------! ! local-orbital-APW integrals ! !-------------------------------------! do ilo=1,nlorb(is) l1=lorbl(ilo,is) do l3=0,lmaxmat do io=1,apword(l3,is) lm2=0 do l2=0,lmaxvr do m2=-l2,l2 lm2=lm2+1 do ir=1,nr t1=lofr(ir,1,ilo,ias)*apwfr(ir,1,io,l3,ias)*r2(ir) fr1(ir)=t1*dble(dvsmt(lm2,ir,ias)) fr2(ir)=t1*aimag(dvsmt(lm2,ir,ias)) end do call fderiv(-1,nr,spr(:,is),fr1,gr) t1=gr(nr) call fderiv(-1,nr,spr(:,is),fr2,gr) t2=gr(nr) dhloa(lm2,io,l3,ilo,ias)=cmplx(t1,t2,8) end do end do end do end do end do !-----------------------------------------------! ! local-orbital-local-orbital integrals ! !-----------------------------------------------! do ilo=1,nlorb(is) l1=lorbl(ilo,is) do jlo=1,nlorb(is) l3=lorbl(jlo,is) lm2=0 do l2=0,lmaxvr do m2=-l2,l2 lm2=lm2+1 do ir=1,nr t1=lofr(ir,1,ilo,ias)*lofr(ir,1,jlo,ias)*r2(ir) fr1(ir)=t1*dble(dvsmt(lm2,ir,ias)) fr2(ir)=t1*aimag(dvsmt(lm2,ir,ias)) end do call fderiv(-1,nr,spr(:,is),fr1,gr) t1=gr(nr) call fderiv(-1,nr,spr(:,is),fr2,gr) t2=gr(nr) dhlolo(lm2,jlo,ilo,ias)=cmplx(t1,t2,8) end do end do end do end do deallocate(fr1,fr2,gr) ! end loops over atoms and species end do !$OMP END DO !$OMP END PARALLEL end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/genshtmat.f900000644002504400250440000000005012337331323016510 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genshtmat.f900000644002504400250440000000677412337331323017272 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genshtmat ! !INTERFACE: subroutine genshtmat ! !USES: use modmain ! !DESCRIPTION: ! Generates the forward and backward spherical harmonic transformation (SHT) ! matrices using the spherical covering set produced by the routine ! {\tt sphcover}. These matrices are used to transform a function between its ! $(l,m)$-expansion coefficients and its values at the $(\theta,\phi)$ points ! on the sphere. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! local variables integer itp,info ! automatic arrays integer ipiv(lmmaxvr) real(8) tp(2,lmmaxvr),rlm(lmmaxvr),work(lmmaxvr) complex(8) ylm(lmmaxvr),zwork(lmmaxvr) !---------------------------------! ! SHT matrices for lmaxvr ! !---------------------------------! ! allocate real SHT matrices if (allocated(rbshtvr)) deallocate(rbshtvr) allocate(rbshtvr(lmmaxvr,lmmaxvr)) if (allocated(rfshtvr)) deallocate(rfshtvr) allocate(rfshtvr(lmmaxvr,lmmaxvr)) ! allocate complex SHT matrices if (allocated(zbshtvr)) deallocate(zbshtvr) allocate(zbshtvr(lmmaxvr,lmmaxvr)) if (allocated(zfshtvr)) deallocate(zfshtvr) allocate(zfshtvr(lmmaxvr,lmmaxvr)) ! generate spherical covering set call sphcover(lmmaxvr,tp) ! generate real and complex spherical harmonics and set the backward SHT arrays do itp=1,lmmaxvr call genrlm(lmaxvr,tp(:,itp),rlm) rbshtvr(itp,1:lmmaxvr)=rlm(1:lmmaxvr) call genylm(lmaxvr,tp(:,itp),ylm) zbshtvr(itp,1:lmmaxvr)=ylm(1:lmmaxvr) end do ! find the forward SHT arrays ! real rfshtvr(:,:)=rbshtvr(:,:) call dgetrf(lmmaxvr,lmmaxvr,rfshtvr,lmmaxvr,ipiv,info) if (info.ne.0) goto 10 call dgetri(lmmaxvr,rfshtvr,lmmaxvr,ipiv,work,lmmaxvr,info) if (info.ne.0) goto 10 ! complex zfshtvr(:,:)=zbshtvr(:,:) call zgetrf(lmmaxvr,lmmaxvr,zfshtvr,lmmaxvr,ipiv,info) if (info.ne.0) goto 10 call zgetri(lmmaxvr,zfshtvr,lmmaxvr,ipiv,zwork,lmmaxvr,info) if (info.ne.0) goto 10 !----------------------------------! ! SHT matrices for lmaxinr ! !----------------------------------! ! allocate real SHT matrices if (allocated(rbshtinr)) deallocate(rbshtinr) allocate(rbshtinr(lmmaxinr,lmmaxinr)) if (allocated(rfshtinr)) deallocate(rfshtinr) allocate(rfshtinr(lmmaxinr,lmmaxinr)) ! allocate complex SHT matrices if (allocated(zbshtinr)) deallocate(zbshtinr) allocate(zbshtinr(lmmaxinr,lmmaxinr)) if (allocated(zfshtinr)) deallocate(zfshtinr) allocate(zfshtinr(lmmaxinr,lmmaxinr)) ! generate spherical covering set for lmaxinr call sphcover(lmmaxinr,tp) ! generate real and complex spherical harmonics and set the backward SHT arrays do itp=1,lmmaxinr call genrlm(lmaxinr,tp(:,itp),rlm) rbshtinr(itp,1:lmmaxinr)=rlm(1:lmmaxinr) call genylm(lmaxinr,tp(:,itp),ylm) zbshtinr(itp,1:lmmaxinr)=ylm(1:lmmaxinr) end do ! find the forward SHT arrays ! real rfshtinr(:,:)=rbshtinr(:,:) call dgetrf(lmmaxinr,lmmaxinr,rfshtinr,lmmaxinr,ipiv,info) if (info.ne.0) goto 10 call dgetri(lmmaxinr,rfshtinr,lmmaxinr,ipiv,work,lmmaxinr,info) if (info.ne.0) goto 10 ! complex zfshtinr(:,:)=zbshtinr(:,:) call zgetrf(lmmaxinr,lmmaxinr,zfshtinr,lmmaxinr,ipiv,info) if (info.ne.0) goto 10 call zgetri(lmmaxinr,zfshtinr,lmmaxinr,ipiv,zwork,lmmaxinr,info) if (info.ne.0) goto 10 return 10 continue write(*,*) write(*,'("Error(genshtmat): unable to find inverse spherical harmonic & &transform")') write(*,'(" => improper spherical covering")') write(*,*) stop end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/latvstep.f900000644002504400250440000000005012337331323016360 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/latvstep.f900000644002504400250440000000174412337331323017132 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine latvstep use modmain use modmpi use modstore implicit none integer i real(8) t1 do i=1,nstrain ! compute product of current and previous stress tensor components t1=stress(i)*stressp(i) ! if component is in the same direction then increase step size parameter if (t1.gt.0.d0) then taulatv(i)=taulatv(i)+tau0latv else taulatv(i)=tau0latv end if t1=taulatv(i)*(stress(i)+stressp(i)) avec(:,:)=avec(:,:)-t1*strain(:,:,i) end do ! compute the new unit cell volume call reciplat ! scale the vectors to conserve volume if required if (latvopt.eq.2) then t1=(omega0/omega)**(1.d0/3.d0) avec(:,:)=t1*avec(:,:) omega=omega0 end if ! each MPI process should have identical lattice vectors call mpi_bcast(avec,9,mpi_double_precision,0,mpi_comm_kpt,ierror) return end subroutine elk-2.3.22/src/PaxHeaders.22528/phscdelete.f900000644002504400250440000000005012337331324016637 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phscdelete.f900000644002504400250440000000105312337331324017402 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phscdelete use modmain implicit none ! delete the eigenvector files call delevec ! delete the eigenvalue files open(70,file='EVALFV'//trim(filext)) close(70,status='DELETE') open(70,file='EVALSV'//trim(filext)) close(70,status='DELETE') ! delete the occupancy file open(70,file='OCCSV'//trim(filext)) close(70,status='DELETE') return end subroutine elk-2.3.22/src/PaxHeaders.22528/dpotks.f900000644002504400250440000000005012337331324016023 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dpotks.f900000644002504400250440000000262512337331324016574 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dpotks use modmain use modphonon implicit none ! local variables integer is,ias,nr,ir ! allocatable arrays complex(8), allocatable :: zfmt(:,:) ! compute the exchange-correlation potential derivative ! (at this stage the density derivative is in spherical coordinates) call dpotxc ! convert density derivative to spherical harmonics !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(zfmt,is,nr) !$OMP DO do ias=1,natmtot allocate(zfmt(lmmaxvr,nrmtmax)) is=idxis(ias) nr=nrmt(is) call zcopy(lmmaxvr*nr,drhomt(:,:,ias),1,zfmt,1) call zfsht(nr,nrmtinr(is),zfmt,drhomt(:,:,ias)) deallocate(zfmt) end do !$OMP END DO !$OMP END PARALLEL ! generate the Coulomb potential derivative call dpotcoul ! add to the Kohn-Sham potential derivative do ias=1,natmtot is=idxis(ias) call zfmtadd(nrmt(is),nrmtinr(is),zone,dvclmt(:,:,ias),dvsmt(:,:,ias)) end do call zaxpy(ngtot,zone,dvclir,1,dvsir,1) ! remove the gradient part of the potential derivative for displaced muffin-tin call zfmtadd(nrmt(isph),nrmtinr(isph),zone,gvsmt,dvsmt(:,:,iasph)) ! zero high (l,m) components on inner part of muffin-tin do ias=1,natmtot is=idxis(ias) do ir=1,nrmtinr(is) dvsmt(lmmaxinr+1:lmmaxvr,ir,ias)=0.d0 end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/nuclei.f900000644002504400250440000000005012337331323015775 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/nuclei.f900000644002504400250440000000153512337331323016545 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine nuclei use modmain implicit none ! local variables integer is,ir,irc ! external functions real(8) radnucl external radnucl do is=1,nspecies ! approximate nuclear radius rnucl(is)=radnucl(spzn(is)) ! nuclear volume vnucl(is)=(4.d0/3.d0)*pi*rnucl(is)**3 ! number of radial mesh points to nuclear radius nrnucl(is)=nrmt(is) do ir=1,nrmt(is) if (spr(ir,is).gt.rnucl(is)) then nrnucl(is)=ir exit end if end do ! number of coarse radial mesh points to nuclear radius nrcnucl(is)=nrcmt(is) do irc=1,nrcmt(is) if (rcmt(irc,is).gt.rnucl(is)) then nrcnucl(is)=irc exit end if end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rotzflm.f900000644002504400250440000000005012337331323016213 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rotzflm.f900000644002504400250440000000562312337331323016765 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rotzflm ! !INTERFACE: subroutine rotzflm(rot,lmin,lmax,n,ld,zflm1,zflm2) ! !INPUT/OUTPUT PARAMETERS: ! rot : rotation matrix (in,real(3,3)) ! lmin : minimum angular momentum (in,integer) ! lmax : maximum angular momentum (in,integer) ! n : number of functions to rotate (in,integer) ! ld : leading dimension (in,integer) ! zflm1 : coefficients of the complex spherical harmonic expansion for each ! function (in,complex(ld,n)) ! zflm2 : coefficients of rotated functions (out,complex(ld,n)) ! !DESCRIPTION: ! Rotates a set of complex functions ! $$ f_i({\bf r})=\sum_{lm}f_{lm}^iY_{lm}(\hat{\bf r}) $$ ! for all $i$, given the coefficients $f_{lm}^i$ and a rotation matrix $R$. ! This is done by first the computing the Euler angles $(\alpha,\beta,\gamma)$ ! of $R^{-1}$ (see routine {\tt roteuler}) and then applying the spherical ! harmonic rotation matrix generated by the routine {\tt ylmrot}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) ! Modified, December 2008 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: rot(3,3) integer, intent(in) :: lmin,lmax integer, intent(in) :: n integer, intent(in) :: ld complex(8), intent(in) :: zflm1(ld,n) complex(8), intent(out) :: zflm2(ld,n) ! local variables integer lmmax,l,lm1,lm2,nm,p real(8) det,rotp(3,3) real(8) ang(3),angi(3) complex(8), parameter :: zzero=(0.d0,0.d0),zone=(1.d0,0.d0) ! allocatable arrays complex(8), allocatable :: d(:,:) if (lmin.lt.0) then write(*,*) write(*,'("Error(rotzflm): lmin < 0 : ",I8)') lmin write(*,*) stop end if if (lmin.gt.lmax) then write(*,*) write(*,'("Error(rotzflm): lmin > lmax : ",2I8)') lmin,lmax write(*,*) stop end if if (n.eq.0) return if (n.lt.0) then write(*,*) write(*,'("Error(rotzflm): n < 0 : ",I8)') n write(*,*) stop end if lmmax=(lmax+1)**2 allocate(d(lmmax,lmmax)) ! find the determinant det=rot(1,2)*rot(2,3)*rot(3,1)-rot(1,3)*rot(2,2)*rot(3,1) & +rot(1,3)*rot(2,1)*rot(3,2)-rot(1,1)*rot(2,3)*rot(3,2) & +rot(1,1)*rot(2,2)*rot(3,3)-rot(1,2)*rot(2,1)*rot(3,3) ! make the rotation proper p=1 if (det.lt.0.d0) p=-1 rotp(:,:)=dble(p)*rot(:,:) ! compute the Euler angles of the rotation matrix call roteuler(rotp,ang) ! inverse rotation: the function is to be rotated, not the spherical harmonics angi(1)=-ang(3) angi(2)=-ang(2) angi(3)=-ang(1) ! determine the rotation matrix for complex spherical harmonics call ylmrot(p,angi,lmax,lmmax,d) ! apply rotation matrix (d and zflm may have different starting indices) lm1=lmin**2+1 lm2=1 do l=lmin,lmax nm=2*l+1 call zgemm('N','N',nm,n,nm,zone,d(lm1,lm1),lmmax,zflm1(lm2,1),ld,zzero, & zflm2(lm2,1),ld) lm1=lm1+nm lm2=lm2+nm end do deallocate(d) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/dolpalo.f900000644002504400250440000000005012337331324016151 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dolpalo.f900000644002504400250440000000204312337331324016714 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dolpalo(ias,ngp,ngpq,dapwalm,dapwalmq,ld,od) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq complex(8), intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw) complex(8), intent(in) :: dapwalmq(ngkmax,apwordmax,lmmaxapw) integer, intent(in) :: ld complex(8), intent(inout) :: od(ld,*) ! local variables integer is,ilo,io integer l,m,lm,i,j if (ias.ne.iasph) return is=idxis(ias) do ilo=1,nlorb(is) l=lorbl(ilo,is) do m=-l,l lm=idxlm(l,m) j=ngp+idxlo(lm,ilo,ias) do i=1,ngpq do io=1,apword(l,is) od(i,j)=od(i,j)+conjg(dapwalmq(i,io,lm))*oalo(io,ilo,ias) end do end do i=ngpq+idxlo(lm,ilo,ias) do j=1,ngp do io=1,apword(l,is) od(i,j)=od(i,j)+oalo(io,ilo,ias)*dapwalm(j,io,lm) end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/xc_am05.f900000644002504400250440000000005012337331324015753 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/xc_am05.f900000644002504400250440000002430012337331324016516 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2004, 2005 Rickard Armiento ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: xc_am05 ! !INTERFACE: subroutine xc_am05(n,rho,grho,g2rho,g3rho,ex,ec,vx,vc) ! !INPUT/OUTPUT PARAMETERS: ! n : number of density points (in,integer) ! rho : charge density (in,real(n)) ! grho : |grad rho| (in,real(n)) ! g2rho : grad^2 rho (in,real(n)) ! g3rho : (grad rho).(grad |grad rho|) (in,real(n)) ! ex : exchange energy density (out,real(n)) ! ec : correlation energy density (out,real(n)) ! vx : spin-unpolarised exchange potential (out,real(n)) ! vc : spin-unpolarised correlation potential (out,real(n)) ! !DESCRIPTION: ! Spin-unpolarised exchange-correlation potential and energy functional of ! R. Armiento and A. E. Mattsson, {\it Phys. Rev. B} {\bf 72}, 085108 (2005). ! ! !REVISION HISTORY: ! Created April 2005 (RAR); based on xc_pbe !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: rho(n) real(8), intent(in) :: grho(n) real(8), intent(in) :: g2rho(n) real(8), intent(in) :: g3rho(n) real(8), intent(out) :: ex(n) real(8), intent(out) :: ec(n) real(8), intent(out) :: vx(n) real(8), intent(out) :: vc(n) ! local variables integer i real(8), parameter :: pi=3.1415926535897932385d0 ! maximum allowed |grad rho| real(8), parameter :: gmax=1.d6 ! maximum allowed grad^2 rho real(8), parameter :: g2max=1.d12 ! maximum allowed (grad rho).(grad |grad rho|) real(8), parameter :: g3max=1.d14 real(8) r,kf,s,v,u real(8) grho_,g2rho_,g3rho_ do i=1,n r=rho(i) if (r.gt.1.d-12) then grho_=grho(i) g2rho_=g2rho(i) g3rho_=g3rho(i) ! check gradients are within range if (grho_.gt.gmax) grho_=gmax if (abs(g2rho_).gt.g2max) g2rho_=sign(g2max,g2rho_) if (abs(g3rho_).gt.g3max) g3rho_=sign(g3max,g3rho_) ! exchange energy density and potential kf=(r*3.d0*pi**2)**(1.d0/3.d0) s=grho_/(2.d0*kf*r) v=g2rho_/(r*(2.d0*kf)**2) u=g3rho_/((r**2)*(2.d0*kf)**3) call xc_am05_point(r,s,u,v,ex(i),ec(i),vx(i),vc(i),1) else ex(i)=0.d0 ec(i)=0.d0 vx(i)=0.d0 vc(i)=0.d0 end if end do return end subroutine !EOC !BOP ! !ROUTINE: xc_am05_point ! !INTERFACE: subroutine xc_am05_point(rho,s,u,v,ex,ec,vx,vc,pot) ! !INPUT/OUTPUT PARAMETERS: ! rho : electron density (in,real) ! s : gradient of n / (2 kF n) ! u : grad n * grad | grad n | / (n**2 (2 kF)**3) ! v : laplacian of density / (n**2 (2.d0*kf)**3) ! ex : exchange energy density (out,real) ! ec : correlation energy density (out,real) ! vx : spin-unpolarised exchange potential (out,real) ! vc : spin-unpolarised correlation potential (out,real) ! !DESCRIPTION: ! Calculate the spin-unpolarised exchange-correlation potential and energy for ! the Armiento-Mattsson 05 functional for a single point. ! ! !REVISION HISTORY: ! Created April 2005 (RAR) !EOP !BOC implicit none ! arguments real(8), intent(in) :: rho, s, u, v integer, intent(in) :: pot real(8), intent(out) :: ex, ec, vx, vc ! constants real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: g = 0.8098d0 real(8), parameter :: a = 2.804d0 real(8), parameter :: c = 0.7168d0 ! local variables real(8) s2,exlda, vxlda, eclda, vclda, X, Xs, Xss real(8) F, Fs, Fss, Hx, Hxs, Hxss, Hc, Hcs, Hcss real(8) zb, zbs, zbss, w real(8) n0b, n0bs, n0bss real(8) ln0b, ln0bs, ln0bss real(8) zbb, zbbc, zbbs, zbbss real(8) fxb, fxbs, fxbss ! cutoff if((rho .le. 1.0d-16)) then ex = 0.0d0 ec = 0.0d0 vx = 0.0d0 vc = 0.0d0 return endif s2 = s**2 ! LDA correlation call xc_am05_ldapwc(rho,eclda,vclda) ! LDA exchange call xc_am05_ldax(rho,exlda,vxlda) !------------------! ! exchange ! !------------------! ! interpolation index X = 1.0d0 - a*s2/(1.0d0 + a*s2) ! Airy LAA refinement function call xc_am05_labertw(s**(3.0d0/2.0d0)/sqrt(24.0d0),w) zb = (3.0d0/2.0d0*w)**(2.0d0/3.0d0) n0b = w/(2.0d0*pi**2*s**3) ln0b = -3.0d0/(2.0d0*pi)*(3.0d0*pi**2*n0b)**(1.0d0/3.0d0) zbbc = ((4.0d0/3.0d0)**(1.0d0/3.0d0)*2.0d0*pi/3.0d0)**4 zbb = (zbbc*zb**2 + zb**4)**(1.0d0/4.0d0) Fxb = -1.0d0/(ln0b*2.0d0*zbb) F = (c*s2 + 1.0d0)/(c*s2/Fxb + 1.0d0) ! exchange refinement function Hx = X + (1.0d0 - X)*F ! exchange energy per particle, Ex = Integrate[n*ex] ex = exlda*Hx !---------------------! ! correlation ! !---------------------! ! correlation refinement function Hc = X + g*(1.0d0 - X) ! correlation energy per particle, Ec = Integrate[rho*ec] ec = eclda*Hc if (pot .eq. 0) return !----------------------------! ! exchange potential ! !----------------------------! ! interpolation index derivatives, dX/ds Xs = -2.0d0*a*s/(1.0d0 + a*s2)**2 Xss = 2.0d0*a*(3.0d0*a*s2-1.0d0)/(1.0d0+a*s2)**3 ! airy LAA refinement function derivatives, dF/ds zbs = zb/(s + s*w) zbss = - zb*w*(5.0d0+2.0d0*w)/(2.0d0*s2*(1.0d0+w)**3) n0bs = sqrt(zb)*(-2.0d0*zb+s*zbs)/(2.0d0*pi**2*s2**2) n0bss = (16.0d0*zb**2+s**2*zbs**2+2.0d0*s*zb*(-6.0d0* & zbs+s*zbss))/(4.0d0*pi**2*s**5*sqrt(zb)) ln0bs = -(3.0d0/pi)**(1.0d0/3.0d0)*n0bs/ & (2.0d0*n0b**(2.0d0/3.0d0)) ln0bss = (2.0d0*n0bs**2-3.0d0*n0b*n0bss)/(2.0d0* & 3.0d0**(2.0d0/3.0d0)*pi**(1.0d0/3.0d0)*n0b**(5.0d0/3.0d0)) zbbs = zb*(zbbc+2*zb**2)*zbs/ & (2.0d0*(zb**2*(zbbc+zb**2))**(3.0d0/4.0d0)) zbbss = zb**2*(-zbbc*(zbbc-2.0d0*zb**2)*zbs**2+ & 2.0d0*zb*(zbbc+zb**2)*(zbbc+2.0d0*zb**2)*zbss)/ & (4.0d0*(zb**2*(zbbc+zb**2))**(7.0d0/4.0d0)) Fxbs = (zbb*ln0bs+ln0b*zbbs)/(2.0d0*ln0b**2*zbb**2) Fxbss = (-2.0d0*ln0b**2*zbbs**2+zbb**2*(-2.0d0*ln0bs**2 + & ln0b*ln0bss)+ln0b*zbb*(-2.0d0*ln0bs*zbbs+ln0b*zbbss))/ & (2.0d0*ln0b**3*zbb**3) Fs = (c*s*(2.0d0*(Fxb-1.0d0)*Fxb + s*(1.0d0+c*s2)*Fxbs))/ & (c*s2 + Fxb)**2 Fss = (c*(-2.0d0*(3.0d0*c*s2-Fxb)*(Fxb-1.0d0)*Fxb+ & 4.0d0*s*(-c*s2+Fxb+2.0d0*c*s2*Fxb)*Fxbs - & 2.0d0*s2*(1.0d0+c*s2)*Fxbs**2+s2*(1.0d0+c*s2)* & (c*s2 + Fxb)*Fxbss))/(c*s2+Fxb)**3 ! GGA refinement function derivatives, dF/ds Hxs = - (X - 1.0d0)*Fs - (F - 1.0d0)*Xs Hxss = - 2.0d0*Fs*Xs - (X - 1.0d0)*Fss - (F - 1.0d0)*Xss ! vx formula for gradient dependent functional, ! generalized form of Eq. (24) in PRB 33, 8800 (1986) vx = vxlda*(Hx - s*Hxs) + & exlda*((4.0d0/3.0d0*s-v/s)*Hxs - & (u-4.0d0/3.0d0*s**3)*(Hxss/s-Hxs/s2)) !-------------------------------! ! correlation potential ! !-------------------------------! ! correlation refinement function derivatives, dF/ds Hcs = Xs - g*Xs Hcss = Xss - g*Xss ! vc formula for gradient dependent functional, ! generalized form of Eq. (24) in Phys. Rev. B 33, 8800 (1986) vc = vclda*(Hc - s*Hcs) + & eclda*((4.0d0/3.0d0*s - v/s)*Hcs - & (u - 4.0d0/3.0d0*s**3)*(Hcss/s - Hcs/s2)) return end subroutine !EOC !BOP ! !ROUTINE: xc_am05_ldax ! !INTERFACE: subroutine xc_am05_ldax(n,ex,vx) ! !INPUT/OUTPUT PARAMETERS: ! n : electron density (in,real) ! ex : exchange energy per electron (out,real) ! vx : exchange potential (out,real) ! !DESCRIPTION: ! Local density approximation exchange. ! ! !REVISION HISTORY: ! Created April 2005 (RAR) !EOP !BOC implicit none ! arguments real(8), intent(in) :: n real(8), intent(out) :: ex real(8), intent(out) :: vx ! constants real(8), parameter :: pi=3.1415926535897932385d0 vx=-(3.d0*n/pi)**(1.d0/3.d0) ex=(3.d0/4.d0)*vx return end subroutine !EOC !BOP ! !ROUTINE: xc_am05_ldapwc ! !INTERFACE: subroutine xc_am05_ldapwc(n,ec,vc) ! !INPUT/OUTPUT PARAMETERS: ! n : electron density (in,real) ! ec : correlation energy per electron (out,real) ! vc : correlation potential (out,real) ! !DESCRIPTION: ! Correlation energy and potential of the Perdew-Wang parameterisation of ! the Ceperley-Alder electron gas {\it Phys. Rev. B} {\bf 45}, 13244 (1992) ! and {\it Phys. Rev. Lett.} {\bf 45}, 566 (1980). This is a clean-room ! implementation from paper. ! ! !REVISION HISTORY: ! Created April 2005 (RAR) !EOP !BOC implicit none ! arguments real(8), intent(in) :: n real(8), intent(out) :: ec real(8), intent(out) :: vc ! constants real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: a01 = 0.21370d0 real(8), parameter :: b01 = 7.5957d0 real(8), parameter :: b02 = 3.5876d0 real(8), parameter :: b03 = 1.6382d0 real(8), parameter :: b04 = 0.49294d0 ! paper actually use this: ! real(8), parameter (A0 = 0.031091d0) ! but routines now "defacto standard" was distributed using: real(8), parameter :: A0 = 0.0310907d0 ! local variables real(8) rsq real(8) Q0, Q1, Q1p, ecrs rsq = (3.0d0/(4.0d0*pi*n))**(1.0d0/6.0d0) ec = -2.0d0*A0*(1.0d0 + a01*rsq**2)* & log(1.0d0 + 1.0d0/ & (2.0d0*A0*rsq*(b01 + rsq*(b02 + rsq*(b03 + b04*rsq))))) Q0 = -2.0d0*A0*(1.0d0 + a01*rsq**2) Q1 = 2.0d0*A0*rsq*(b01 + rsq*(b02 + rsq*(b03 + b04*rsq))) Q1p = A0*(b01/rsq+2.0d0*b02+3.0d0*b03*rsq+4.0d0*b04*rsq**2) ecrs = -2.0d0*A0*a01*log(1.0d0 + 1.0d0/Q1)-Q0*Q1p/(Q1**2+Q1) vc = ec - rsq**2/3.0d0*ecrs end subroutine !EOC !BOP ! !ROUTINE: xc_am05_labertw ! !INTERFACE: subroutine xc_am05_labertw(z,val) ! !INPUT/OUTPUT PARAMETERS: ! z : function argument (in,real) ! val : value of lambert W function of z (out,real) ! !DESCRIPTION: ! Lambert $W$-function using the method of Corless, Gonnet, Hare, Jeffrey and ! Knuth, {\it Adv. Comp. Math.} {\bf 5}, 329 (1996). The approach is based ! loosely on that in GNU Octave by N. N. Schraudolph, but this implementation ! is for real values and the principal branch only. ! ! !REVISION HISTORY: ! Created April 2005 (RAR) !EOP !BOC implicit none ! arguments real(8), intent(in) :: z real(8), intent(out) :: val ! local variables real(8) e,t,p integer i ! if z too low, go with the first term of the power expansion, z if (z.lt.1.d-20) then val=z return end if e=exp(1.d0) ! inital guess if (abs(z+1.d0/e).gt.1.45d0) then ! asymptotic expansion at 0 and Inf val=log(z) val=val-log(val) else ! series expansion about -1/e to first order val=1.d0*sqrt(2.d0*e*z+2.d0)-1.d0 end if ! find val through iteration do i=1,10 p=exp(val) t=val*p-z if (val.ne.-1.d0) then t=t/(p*(val+1.d0)-0.5d0*(val+2.d0)*t/(val+1.d0)) else t=0.d0 end if val=val-t if (abs(t).lt.(2.48d0*1.d-14)*(1.d0+abs(val))) return end do ! this should never happen! write(*,*) write(*,'("Error(xc_am05_labertw): iteration limit reached")') write(*,'(" Likely cause: improper numbers (INFs, NaNs) in density")') write(*,*) stop end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genstress.f900000644002504400250440000000005012337331323016533 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genstress.f900000644002504400250440000000251112337331323017276 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genstress use modmain use modmpi use modstore implicit none ! local variables integer i real(8) et0,t1 ! store original parameters avec0(:,:)=avec(:,:) tforce0=tforce tforce=.false. ! restore original symmetries call symmetry ! generate the strain tensors call genstrain ! zero the stress matrix stress(:)=0.d0 ! run the ground-state calculation call gndstate ! check for stop signal if (tstop) goto 10 ! store the total energy et0=engytot ! subsequent calculations will read STATE.OUT trdstate=.true. ! loop over strain tensors do i=1,nstrain if (mp_mpi) then write(*,'("Info(genstress): strain tensor ",I1," of ",I1)') i,nstrain end if ! displace lattice vectors avec(:,:)=avec0(:,:)+deltast*strain(:,:,i) ! run the ground-state calculation call gndstate ! check for stop signal if (tstop) goto 10 ! compute the stress tensor component stress(i)=(engytot-et0)/deltast end do 10 continue ! compute the maximum stress magnitude over all lattice vectors stressmax=0.d0 do i=1,nstrain t1=abs(stress(i)) if (t1.gt.stressmax) stressmax=t1 end do ! restore original parameters avec(:,:)=avec0(:,:) tforce=tforce0 return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmenergy.f900000644002504400250440000000005012337331324016513 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmenergy.f900000644002504400250440000000407112337331324017261 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2005-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmenergy ! !INTERFACE: subroutine rdmenergy ! !USES: use modmain use modrdm use modmpi use modtest ! !DESCRIPTION: ! Calculates RDMFT total energy (free energy for finite temperatures). ! ! !REVISION HISTORY: ! Created 2008 (Sharma) ! Updated for free energy 2009 (Baldsiefen) !EOP !BOC implicit none ! local variables integer is,ia,ias integer nr,ik,ist real(8) vn,t1 complex(8) z1 ! allocatable arrays real(8), allocatable :: rfmt(:,:) complex(8), allocatable :: evecsv(:,:) ! external functions real(8) rfmtinp complex(8) zdotc external rfmtinp,zdotc allocate(rfmt(lmmaxvr,nrmtmax)) ! Coulomb energy from core states engyvcl=0.d0 do ias=1,natmtot is=idxis(ias) nr=nrmt(is) rfmt(:,:)=0.d0 if (spincore) then rfmt(1,1:nr)=(rhocr(1:nr,ias,1)+rhocr(1:nr,ias,2))/y00 else rfmt(1,1:nr)=rhocr(1:nr,ias,1)/y00 end if engyvcl=engyvcl+rfmtinp(1,nr,nrmtinr(is),spr(:,is),rfmt,vclmt(:,:,ias)) end do deallocate(rfmt) engykn=engykncr allocate(evecsv(nstsv,nstsv)) do ik=1,nkpt call getevecsv(vkl(:,ik),evecsv) do ist=1,nstsv t1=wkpt(ik)*occsv(ist,ik) ! Coulomb energy from valence states engyvcl=engyvcl+t1*dble(vclmat(ist,ist,ik)) ! kinetic energy from valence states z1=zdotc(nstsv,evecsv(:,ist),1,dkdc(:,ist,ik),1) engykn=engykn+t1*dble(z1) end do end do deallocate(evecsv) ! Madelung term engymad=0.d0 do is=1,nspecies ! compute the bare nucleus potential at the origin call potnucl(ptnucl,1,spr(:,is),spzn(is),vn) do ia=1,natoms(is) ias=idxas(ia,is) engymad=engymad+0.5d0*spzn(is)*(vclmt(1,1,ias)*y00-vn) end do end do ! exchange-correlation energy call rdmengyxc ! total energy engytot=0.5d0*engyvcl+engymad+engykn+engyx if (rdmtemp.gt.0.d0) then call rdmentropy engytot=engytot-rdmtemp*rdmentrpy end if ! write total energy to test file call writetest(300,'RDMFT total energy',tol=1.d-6,rv=engytot) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/readdmatmt.f900000644002504400250440000000005012337331324016641 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/readdmatmt.f900000644002504400250440000000355312337331324017413 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readdmatmt use modmain use moddftu implicit none ! local variables integer is,ia,ias,ispn,jspn integer is_,ia_,ispn_,jspn_ integer i,l,m1,m2,lm1,lm2 integer l_,m1_,m2_ real(8) a,b ! read density matrix from DMATMT.OUT open(50,file='DMATMT'//trim(filext),action='READ',form='FORMATTED') do i=1,ndftu is=idftu(1,i) l=idftu(2,i) do ia=1,natoms(is) ias=idxas(ia,is) read(50,*) read(50,*) read(50,*) is_,ia_,l_ if ((is.ne.is_).or.(ia.ne.ia_).or.(l.ne.l_)) then write(*,*) write(*,'("Error(readdmatmt): differing is, ia or l")') write(*,'(" current : ",3I4)') is,ia,l write(*,'(" DMATMT.OUT : ",3I4)') is_,ia_,l_ write(*,*) stop end if do ispn=1,nspinor do jspn=1,nspinor read(50,*) read(50,*) ispn_,jspn_ if ((ispn.ne.ispn_).or.(jspn.ne.jspn_)) then write(*,*) write(*,'("Error(readdmatmt): differing ispn or jspn")') write(*,'(" current : ",2I4)') ispn,jspn write(*,'(" DMATMT.OUT : ",2I4)') ispn_,jspn_ write(*,*) stop end if do m1=-l,l lm1=idxlm(l,m1) do m2=-l,l lm2=idxlm(l,m2) read(50,*) m1_,m2_,a,b if ((m1.ne.m1_).or.(m2.ne.m2_)) then write(*,*) write(*,'("Error(readdmatmt): differing m1 or m2")') write(*,'(" current : ",2I6)') m1,m2 write(*,'(" DMATMT.OUT : ",2I6)') m1_,m2_ write(*,*) stop end if dmatmt(lm1,ispn,lm2,jspn,ias)=cmplx(a,b,8) end do end do end do end do end do end do close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/sstask.f900000644002504400250440000000005012337331323016026 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sstask.f900000644002504400250440000000134012337331323016570 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine sstask(fnum,fext) use modmain implicit none ! arguments integer, intent(in) :: fnum character(256), intent(out) :: fext ! local variables logical exist do iqss=1,nqpt ! construct the spin-spiral file extension call ssfext(iqss,fext) ! determine if the SS file exists inquire(file='SS'//trim(fext),exist=exist) if (.not.exist) then open(fnum,file='SS'//trim(fext),action='WRITE',form='FORMATTED') return end if end do fext='.OUT' iqss=0 write(*,*) write(*,'("Info(sstask): nothing more to do")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/gradrhomt.f900000644002504400250440000000005012337331324016506 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gradrhomt.f900000644002504400250440000000141512337331324017253 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gradrhomt use modmain use modphonon implicit none ! local variables integer nr,nri ! allocatable arrays real(8), allocatable :: rfmt(:,:),grfmt(:,:,:) ! add gradient contribution from rigid shift of muffin-tin allocate(rfmt(lmmaxvr,nrmtmax),grfmt(lmmaxvr,nrmtmax,3)) nr=nrmt(isph) nri=nrmtinr(isph) call gradrfmt(nr,nri,spr(:,isph),rhomt(:,:,iasph),nrmtmax,grfmt) ! convert to spherical coordinates call rbsht(nr,nri,1,grfmt(:,:,ipph),1,rfmt) ! subtract from density derivative drhomt(:,1:nr,iasph)=drhomt(:,1:nr,iasph)-rfmt(:,1:nr) deallocate(rfmt,grfmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/readfdu.f900000644002504400250440000000005012337331324016131 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/readfdu.f900000644002504400250440000000156512337331324016704 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readfdu use modmain use moddftu implicit none ! local variables integer is,i,k,l integer is_,l_ fdu(:,:)=0.d0 ! read Slater integrals from FDU.OUT open(50,file='FDU'//trim(filext),action='READ',form='FORMATTED') do i=1,ndftu is=idftu(1,i) l=idftu(2,i) read(50,*) read(50,*) is_,l_ if ((is.ne.is_).or.(l.ne.l_)) then write(*,*) write(*,'("Error(readfdu): differing is or l")') write(*,'(" current : ",2I8)') is,l write(*,'(" FDU.OUT : ",2I8)') is_,l_ write(*,*) stop end if do k=0,2*l,2 read(50,*) fdu(k,i) end do read(50,*) ujdu(1,i) read(50,*) ujdu(2,i) if (inpdftu.ge.4) read(50,*) lambdadu(i) end do close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/gentauk.f900000644002504400250440000000005012337331324016155 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gentauk.f900000644002504400250440000000662412337331324016731 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gentauk(ik,taumt,tauir) use modmain implicit none ! arguments integer, intent(in) :: ik real(8), intent(inout) :: taumt(lmmaxvr,nrmtmax,natmtot,nspinor) real(8), intent(inout) :: tauir(ngtot,nspinor) ! local variables integer ispn,jspn,nst,ist,jst integer is,ias,nr,nri,nrc,nrci integer ir,irc,igk,ifg,i real(8) t0 ! automatic arrays integer idx(nstsv) ! allocatable arrays complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) complex(8), allocatable :: gzfmt(:,:,:),zfmt(:,:),zfft(:) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! get the eigenvectors from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! count and index the occupied states nst=0 do ist=1,nstsv if (abs(occsv(ist,ik)).gt.epsocc) then nst=nst+1 idx(nst)=ist end if end do ! calculate the second-variational wavefunctions for all states allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nst)) allocate(wfir(ngkmax,nspinor,nst)) call genwfsv(.true.,.true.,nst,idx,ngk(:,ik),igkig(:,:,ik),apwalm,evecfv, & evecsv,wfmt,ngkmax,wfir) deallocate(apwalm,evecfv,evecsv) !-------------------------! ! muffin-tin part ! !-------------------------! allocate(gzfmt(lmmaxvr,nrcmtmax,3),zfmt(lmmaxvr,nrcmtmax)) do ist=1,nst jst=idx(ist) t0=0.5d0*wkpt(ik)*occsv(jst,ik) do ispn=1,nspinor do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) nrc=nrcmt(is) nrci=nrcmtinr(is) ! compute the gradient of the wavefunction call gradzfmt(nrc,nrci,rcmt(:,is),wfmt(:,:,ias,ispn,ist),nrcmtmax,gzfmt) do i=1,3 ! convert gradient to spherical coordinates call zbsht(nrc,nrci,gzfmt(:,:,i),zfmt) ! add to total taumt !$OMP CRITICAL irc=0 ! inner part of muffin-tin do ir=1,nri,lradstp irc=irc+1 taumt(1:lmmaxinr,ir,ias,ispn)=taumt(1:lmmaxinr,ir,ias,ispn) & +t0*(dble(zfmt(1:lmmaxinr,irc))**2+aimag(zfmt(1:lmmaxinr,irc))**2) end do ! outer part of muffin-tin do ir=nri+lradstp,nr,lradstp irc=irc+1 taumt(:,ir,ias,ispn)=taumt(:,ir,ias,ispn) & +t0*(dble(zfmt(:,irc))**2+aimag(zfmt(:,irc))**2) end do !$OMP END CRITICAL end do end do end do end do deallocate(wfmt,gzfmt,zfmt) !---------------------------! ! interstitial part ! !---------------------------! allocate(zfft(ngtot)) do ist=1,nst jst=idx(ist) t0=0.5d0*wkpt(ik)*occsv(jst,ik)/omega do ispn=1,nspinor jspn=jspnfv(ispn) do i=1,3 zfft(:)=0.d0 do igk=1,ngk(jspn,ik) ifg=igfft(igkig(igk,jspn,ik)) zfft(ifg)=vgkc(i,igk,jspn,ik) & *cmplx(-aimag(wfir(igk,ispn,ist)),dble(wfir(igk,ispn,ist)),8) end do call zfftifc(3,ngridg,1,zfft) !$OMP CRITICAL do ir=1,ngtot tauir(ir,ispn)=tauir(ir,ispn)+t0*(dble(zfft(ir))**2+aimag(zfft(ir))**2) end do !$OMP END CRITICAL end do end do end do deallocate(wfir,zfft) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rvfcross.f900000644002504400250440000000005012337331324016366 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rvfcross.f900000644002504400250440000000453712337331324017143 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rvfcross ! !INTERFACE: subroutine rvfcross(rvfmt1,rvfir1,rvfmt2,rvfir2,rvfmt3,rvfir3) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! rvfmt1 : first input muffin-tin field (in,real(lmmaxvr,nrmtmax,natmtot,3)) ! rvfir1 : first input interstitial field (in,real(ngtot,3)) ! rvfmt2 : second input muffin-tin field (in,real(lmmaxvr,nrmtmax,natmtot,3)) ! rvfir2 : second input interstitial field (in,real(ngtot,3)) ! rvfmt3 : output muffin-tin field (out,real(lmmaxvr,nrmtmax,natmtot,3)) ! rvfir3 : output interstitial field (out,real(ngtot,3)) ! !DESCRIPTION: ! Given two real vector fields, ${\bf f}_1$ and ${\bf f}_2$, defined over the ! entire unit cell, this routine computes the local cross product ! $$ {\bf f}_3({\bf r})\equiv{\bf f}_1({\bf r})\times{\bf f}_2({\bf r}). $$ ! ! !REVISION HISTORY: ! Created February 2007 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: rvfmt1(lmmaxvr,nrmtmax,natmtot,3),rvfir1(ngtot,3) real(8), intent(in) :: rvfmt2(lmmaxvr,nrmtmax,natmtot,3),rvfir2(ngtot,3) real(8), intent(out) :: rvfmt3(lmmaxvr,nrmtmax,natmtot,3),rvfir3(ngtot,3) ! local variables integer is,ias,nr,nri,ir integer lmmax,itp,i real(8) v1(3),v2(3),v3(3) ! allocatable arrays real(8), allocatable :: rvfmt4(:,:,:),rvfmt5(:,:,:) !---------------------------! ! muffin-tin region ! !---------------------------! allocate(rvfmt4(lmmaxvr,nrmtmax,3),rvfmt5(lmmaxvr,nrmtmax,3)) do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) do i=1,3 call rbsht(nr,nri,1,rvfmt1(:,:,ias,i),1,rvfmt4(:,:,i)) call rbsht(nr,nri,1,rvfmt2(:,:,ias,i),1,rvfmt5(:,:,i)) end do lmmax=lmmaxinr do ir=1,nr do itp=1,lmmax v1(:)=rvfmt4(itp,ir,:) v2(:)=rvfmt5(itp,ir,:) call r3cross(v1,v2,v3) rvfmt4(itp,ir,:)=v3(:) end do if (ir.eq.nri) lmmax=lmmaxvr end do do i=1,3 call rfsht(nr,nri,1,rvfmt4(:,:,i),1,rvfmt3(:,:,ias,i)) end do end do deallocate(rvfmt4,rvfmt5) !-----------------------------! ! interstitial region ! !-----------------------------! do ir=1,ngtot v1(:)=rvfir1(ir,:) v2(:)=rvfir2(ir,:) call r3cross(v1,v2,v3) rvfir3(ir,:)=v3(:) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writesym.f900000644002504400250440000000005012337331323016401 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writesym.f900000644002504400250440000000571212337331323017152 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writesym ! !INTERFACE: subroutine writesym ! !USES: use modmain ! !DESCRIPTION: ! Outputs the Bravais, crystal and site symmetry matrices to files ! {\tt SYMLAT.OUT}, {\tt SYMCRYS.OUT} and {\tt SYMSITE.OUT}, respectively. ! Also writes out equivalent atoms and related crystal symmetries to ! {\tt EQATOMS.OUT}. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ja,ias,i integer isym,lspl,lspn ! output the Bravais lattice symmetries open(50,file='SYMLAT'//trim(filext),action='WRITE',form='FORMATTED') write(50,'(I4," : nsymlat")') nsymlat do isym=1,nsymlat write(50,*) write(50,'(I4)') isym do i=1,3 write(50,'(3I4)') symlat(i,:,isym) end do end do close(50) ! output the crystal symmetries open(50,file='SYMCRYS'//trim(filext),action='WRITE',form='FORMATTED') write(50,*) write(50,'("(translation vectors and rotation matrices are in lattice & &coordinates)")') write(50,*) write(50,'(I4," : nsymcrys")') nsymcrys do isym=1,nsymcrys write(50,*) write(50,'("Crystal symmetry : ",I4)') isym write(50,'(" spatial translation :")') write(50,'(3G18.10)') vtlsymc(:,isym) write(50,'(" spatial rotation :")') lspl=lsplsymc(isym) do i=1,3 write(50,'(3I4)') symlat(i,:,lspl) end do write(50,'(" global spin rotation :")') lspn=lspnsymc(isym) do i=1,3 write(50,'(3I4)') symlat(i,:,lspn) end do end do close(50) ! output the site symmetries open(50,file='SYMSITE'//trim(filext),action='WRITE',form='FORMATTED') write(50,*) write(50,'("(rotation matrices are in lattice coordinates)")') do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,*) write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is,trim(spsymb(is)),ia write(50,'(I4," : nsymsite")') nsymsite(ias) do isym=1,nsymsite(ias) write(50,*) write(50,'(" Site symmetry : ",I4)') isym write(50,'(" spatial rotation :")') lspl=lsplsyms(isym,ias) do i=1,3 write(50,'(3I4)') symlat(i,:,lspl) end do write(50,'(" global spin rotation :")') lspn=lspnsyms(isym,ias) do i=1,3 write(50,'(3I4)') symlat(i,:,lspn) end do end do end do end do close(50) ! output the equivalent atoms and related symmetries open(50,file='EQATOMS'//trim(filext),action='WRITE',form='FORMATTED') do is=1,nspecies write(50,*) write(50,'("Species : ",I4," (",A,")")') is,trim(spsymb(is)) do ia=1,natoms(is) write(50,'(" atom ",I4," is equivalent to atom(s)")') ia i=0 do ja=1,natoms(is) if (eqatoms(ia,ja,is)) then if ((i.gt.0).and.(mod(i,20).eq.0)) write(50,*) write(50,'(I4)',advance='NO') ja i=i+1 end if end do write(50,*) end do end do close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rtozfmt.f900000644002504400250440000000005012337331324016224 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rtozfmt.f900000644002504400250440000000122412337331324016767 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine rtozfmt(nr,nri,lrstp1,rfmt,lrstp2,zfmt) use modmain implicit none ! arguments integer, intent(in) :: nr,nri integer, intent(in) :: lrstp1 real(8), intent(in) :: rfmt(lmmaxvr,lrstp1,nr) integer, intent(in) :: lrstp2 complex(8), intent(out) :: zfmt(lmmaxvr,lrstp2,nr) ! local variables integer ir do ir=1,nri call rtozflm(lmaxinr,rfmt(:,1,ir),zfmt(:,1,ir)) end do do ir=nri+1,nr call rtozflm(lmaxvr,rfmt(:,1,ir),zfmt(:,1,ir)) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/modrandom.f900000644002504400250440000000005012337331322016475 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modrandom.f900000644002504400250440000000225412337331322017244 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modrandom ! random number generator state integer rndstate(0:5) data rndstate / 1, 12, 234, 3456, 45678, 5678910 / contains !BOP ! !ROUTINE: randomu ! !INTERFACE: real(8) function randomu() ! !DESCRIPTION: ! Generates random numbers with a uniform distribution using the fifth-order ! multiple recursive generator of P. L'Ecuyer, F. Blouin, and R. Coutre, ! {\it ACM Trans. Modeling Comput. Simulation} {\bf 3}, 87 (1993). The ! sequence of numbers $r_i$ is produced from ! $$ x_i=(a_1 x_{i-1}+a_5 x_{i-5})\mod m $$ ! with $r_i=x_i/m$. The period is about $2^{155}$. ! ! !REVISION HISTORY: ! Created January 2012 (JKD) !EOP !BOC implicit none ! local variables ! parameters taken from the GNU Scientific Library (GSL) integer(8), parameter :: a1=107374182, a5=104480, m=2147483647 integer i,i1,i5 data i / 0 / i=modulo(i+1,6) i1=modulo(i-1,6) i5=modulo(i-5,6) rndstate(i)=int(mod(a1*rndstate(i1)+a5*rndstate(i5),m)) randomu=dble(rndstate(i))/dble(m) end function !EOC end module elk-2.3.22/src/PaxHeaders.22528/phfext.f900000644002504400250440000000005012337331324016015 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phfext.f900000644002504400250440000000133412337331324016562 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phfext(iq,is,ia,ip,fext) use modmain implicit none ! arguments integer, intent(in) :: iq,is,ia,ip character(256), intent(out) :: fext ! local variables integer i,j,m(3),n(3) ! external functions integer gcd external gcd do i=1,3 if (ivq(i,iq).ne.0) then j=gcd(ivq(i,iq),ngridq(i)) m(i)=ivq(i,iq)/j n(i)=ngridq(i)/j else m(i)=0 n(i)=0 end if end do write(fext,'("_Q",2I2.2,"_",2I2.2,"_",2I2.2,"_S",I2.2,"_A",I3.3,"_P",I1,& &".OUT")') m(1),n(1),m(2),n(2),m(3),n(3),is,ia,ip return end subroutine elk-2.3.22/src/PaxHeaders.22528/plot3d.f900000644002504400250440000000005012337331323015723 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/plot3d.f900000644002504400250440000000425012337331323016470 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: plot3d ! !INTERFACE: subroutine plot3d(fnum,nf,rfmt,rfir) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! fnum : plot file number (in,integer) ! nf : number of functions (in,integer) ! rfmt : real muffin-tin function (in,real(lmmaxvr,nrmtmax,natmtot,nf)) ! rfir : real intersitial function (in,real(ngtot,nf)) ! !DESCRIPTION: ! Produces a 3D plot of the real functions contained in arrays {\tt rfmt} and ! {\tt rfir} in the parallelepiped defined by the corner vertices in the ! global array {\tt vclp3d}. See routine {\tt rfarray}. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) ! Modified, October 2008 (F. Bultmark, F. Cricchio, L. Nordstrom) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum integer, intent(in) :: nf real(8), intent(in) :: rfmt(lmmaxvr,nrmtmax,natmtot,nf) real(8), intent(in) :: rfir(ngtot,nf) ! local variables integer np,ip,ip1,ip2,ip3,i real(8) v1(3),v2(3),v3(3) real(8) t1,t2,t3 ! allocatable arrays real(8), allocatable :: vpl(:,:) real(8), allocatable :: fp(:,:) if ((nf.lt.1).or.(nf.gt.4)) then write(*,*) write(*,'("Error(plot3d): invalid number of functions : ",I8)') nf write(*,*) stop end if ! allocate local arrays allocate(vpl(3,np3d(1)*np3d(2)*np3d(3))) allocate(fp(np3d(1)*np3d(2)*np3d(3),nf)) ! generate 3D grid from corner vectors v1(:)=vclp3d(:,2)-vclp3d(:,1) v2(:)=vclp3d(:,3)-vclp3d(:,1) v3(:)=vclp3d(:,4)-vclp3d(:,1) ip=0 do ip3=0,np3d(3)-1 t3=dble(ip3)/dble(np3d(3)) do ip2=0,np3d(2)-1 t2=dble(ip2)/dble(np3d(2)) do ip1=0,np3d(1)-1 t1=dble(ip1)/dble(np3d(1)) ip=ip+1 vpl(:,ip)=t1*v1(:)+t2*v2(:)+t3*v3(:)+vclp3d(:,1) end do end do end do np=ip ! evaluate the functions at the grid points do i=1,nf call rfarray(np,vpl,rfmt(:,:,:,i),rfir(:,i),fp(:,i)) end do ! write functions to file write(fnum,'(3I6," : grid size")') np3d(:) do ip=1,np call r3mv(avec,vpl(:,ip),v1) write(fnum,'(7G18.10)') v1(:),(fp(ip,i),i=1,nf) end do deallocate(vpl,fp) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/zfsht.f900000644002504400250440000000005012337331323015654 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zfsht.f900000644002504400250440000000142612337331323016423 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zfsht(nr,nri,zfmt1,zfmt2) use modmain implicit none ! arguments integer, intent(in) :: nr,nri complex(8), intent(in) :: zfmt1(lmmaxvr,nr) complex(8), intent(out) :: zfmt2(lmmaxvr,nr) ! local variables integer nr0,ir0 ! transform the inner part of the muffin-tin call zgemm('N','N',lmmaxinr,nri,lmmaxinr,zone,zfshtinr,lmmaxinr,zfmt1,lmmaxvr, & zzero,zfmt2,lmmaxvr) ! transform the outer part of the muffin-tin nr0=nr-nri if (nr0.eq.0) return ir0=nri+1 call zgemm('N','N',lmmaxvr,nr0,lmmaxvr,zone,zfshtvr,lmmaxvr,zfmt1(:,ir0), & lmmaxvr,zzero,zfmt2(:,ir0),lmmaxvr) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmdedc.f900000644002504400250440000000005012337331324016121 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmdedc.f900000644002504400250440000000250712337331324016671 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmdedc ! !INTERFACE: subroutine rdmdedc(dedc) ! !USES: use modmain use modrdm ! !INPUT/OUTPUT PARAMETERS: ! dedc : energy derivative (out,complex(nstsv,nstsv,nkpt)) ! !DESCRIPTION: ! Calculates the derivative of the total energy w.r.t. the second-variational ! coefficients {\tt evecsv}. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! arguments complex(8), intent(out) :: dedc(nstsv,nstsv,nkpt) ! local variables integer ik,ist ! allocatable arrays complex(8), allocatable :: evecsv(:,:) complex(8), allocatable :: c(:,:) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evecsv,c,ist) !$OMP DO do ik=1,nkpt allocate(evecsv(nstsv,nstsv)) allocate(c(nstsv,nstsv)) ! get the eigenvectors from file call getevecsv(vkl(:,ik),evecsv) ! kinetic and Coulomb potential contribution call zgemm('N','N',nstsv,nstsv,nstsv,zone,evecsv,nstsv,vclmat(:,:,ik),nstsv, & zzero,c,nstsv) do ist=1,nstsv dedc(:,ist,ik)=occsv(ist,ik)*(dkdc(:,ist,ik)+c(:,ist)) end do deallocate(evecsv,c) end do !$OMP END DO !$OMP END PARALLEL ! exchange-correlation contribution call rdmdexcdc(dedc) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/achiinit.f900000644002504400250440000000005012337331324016307 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/achiinit.f900000644002504400250440000000101312337331324017046 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine achiinit(achi) use modmain use modscdft use modrandom implicit none ! arguments complex(8), intent(out) :: achi(nbdg,nbdg) ! local variables integer i,j real(8) a,b do i=1,nbdg do j=1,nbdg a=rndachi*(randomu()-0.5d0) b=rndachi*(randomu()-0.5d0) achi(i,j)=cmplx(a,b,8) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/zher2i.f900000644002504400250440000000005012337331323015721 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zher2i.f900000644002504400250440000000237312337331323016472 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine zher2i(n,alpha,x,y,ld,a) implicit none ! arguments integer, intent(in) :: n complex(8), intent(in) :: alpha complex(8), intent(in) :: x(n),y(n) integer, intent(in) :: ld complex(8), intent(inout) :: a(*) ! local variables integer j,k ! numbers less than eps are considered to be zero real(8), parameter :: eps=1.d-10 real(8) a1,b1 complex(8) z1 !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,z1,a1,b1) !$OMP DO do j=1,n k=(j-1)*ld z1=alpha*y(j) if (abs(dble(z1)).gt.eps) then if (abs(aimag(z1)).gt.eps) then ! complex prefactor a(k+1:k+j-1)=a(k+1:k+j-1)+z1*conjg(x(1:j-1)) a(k+j)=dble(a(k+j))+dble(z1*conjg(x(j))) else ! real prefactor a1=dble(z1) a(k+1:k+j-1)=a(k+1:k+j-1)+a1*conjg(x(1:j-1)) a(k+j)=dble(a(k+j))+a1*dble(x(j)) end if else if (abs(aimag(z1)).gt.eps) then ! imaginary prefactor b1=aimag(z1) a(k+1:k+j-1)=a(k+1:k+j-1)+b1*cmplx(aimag(x(1:j-1)),dble(x(1:j-1)),8) a(k+j)=dble(a(k+j))+b1*aimag(x(j)) end if end if end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/dynsym.f900000644002504400250440000000005012337331324016042 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dynsym.f900000644002504400250440000000231512337331324016607 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dynsym(vpl,dynp) use modmain use modphonon implicit none ! arguments real(8), intent(in) :: vpl(3) complex(8), intent(inout) :: dynp(nbph,nbph) ! local variables integer isym,lspl,i,j,n real(8) v1(3),v2(3),s(3,3),t1 ! automatic arrays complex(8) dyns(nbph,nbph) ! map input vector to first Brillouin zone v1(:)=vpl(:) call vecfbz(epslat,bvec,v1) n=0 dyns(:,:)=0.d0 ! use the symmetries which leave vpl invariant do isym=1,nsymcrys if (.not.tvzsymc(isym)) cycle lspl=lsplsymc(isym) s(:,:)=dble(symlat(:,:,lspl)) call r3mtv(s,v1,v2) t1=abs(v1(1)-v2(1))+abs(v1(2)-v2(2))+abs(v1(3)-v2(3)) if (t1.lt.epslat) then call dynsymapp(isym,v1,dynp,dyns) n=n+1 end if end do if (n.eq.0) then write(*,*) write(*,'("Error(dynsym): no symmetries leave vpl invariant")') write(*,*) stop end if t1=1.d0/dble(n) dynp(:,:)=t1*dyns(:,:) ! make the matrix Hermitian do i=1,nbph do j=i,nbph dynp(i,j)=0.5d0*(dynp(i,j)+conjg(dynp(j,i))) dynp(j,i)=conjg(dynp(i,j)) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/gendmatmt.f900000644002504400250440000000005012337331324016477 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gendmatmt.f900000644002504400250440000000413612337331324017247 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gendmatmt use modmain use moddftu use modmpi implicit none ! local variables integer ik,ispn,ist,ias,n real(8) t1 ! allocatable arrays complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) complex(8), allocatable :: dmat(:,:,:,:,:) ! zero the density matrix dmatmt(:,:,:,:,:)=0.d0 ! begin parallel loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(apwalm,evecfv,evecsv,dmat) & !$OMP PRIVATE(ispn,ias,ist,t1) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv),evecsv(nstsv,nstsv)) allocate(dmat(lmmaxdm,nspinor,lmmaxdm,nspinor,nstsv)) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! get the eigenvectors and occupancies from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) call getoccsv(vkl(:,ik),occsv(:,ik)) ! begin loop over atoms and species do ias=1,natmtot call gendmat(.false.,.false.,0,lmaxdm,ias,ngk(:,ik),apwalm,evecfv,evecsv, & lmmaxdm,dmat) do ist=1,nstsv t1=wkpt(ik)*occsv(ist,ik) !$OMP CRITICAL dmatmt(:,:,:,:,ias)=dmatmt(:,:,:,:,ias)+t1*dmat(:,:,:,:,ist) !$OMP END CRITICAL end do end do deallocate(apwalm,evecfv,evecsv,dmat) end do !$OMP END DO !$OMP END PARALLEL ! add density matrices from each process and redistribute if (np_mpi.gt.1) then n=((lmmaxdm*nspinor)**2)*natmtot call mpi_allreduce(mpi_in_place,dmatmt,n,mpi_double_complex,mpi_sum, & mpi_comm_kpt,ierror) end if ! initialise with symmetry-breaking tensor moments if (ftmtype.lt.0) then dmftm=dmftm*reducebf dmatmt=dmatmt+dmftm endif ! symmetrise the density matrix call symdmat(lmaxdm,lmmaxdm,dmatmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dynqtor.f900000644002504400250440000000005012337331324016217 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dynqtor.f900000644002504400250440000000434012337331324016764 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dynqtor(dynq,dynr) use modmain use modphonon implicit none ! arguments complex(8), intent(in) :: dynq(nbph,nbph,nqpt) complex(8), intent(out) :: dynr(nbph,nbph,nqptnr) ! local variables integer ir,iq,i,j,n integer isym,lspl integer i1,i2,i3,j1,j2,j3 real(8) v1(3),v2(3),v3(3) real(8) s(3,3),t1 complex(8) z1 ! allocatable arrays complex(8), allocatable :: dyns(:,:) allocate(dyns(nbph,nbph)) dynr(:,:,:)=0.d0 ! loop over q-vectors do j1=0,ngridq(1)-1 v1(1)=dble(j1)/dble(ngridq(1)) do j2=0,ngridq(2)-1 v1(2)=dble(j2)/dble(ngridq(2)) do j3=0,ngridq(3)-1 v1(3)=dble(j3)/dble(ngridq(3)) iq=iqmap(j1,j2,j3) ! map v1 to the first Brillouin zone v2(:)=v1(:) call vecfbz(epslat,bvec,v2) ! rotate and add the dynamical matrix of the reduced q-point with all symmetries n=0 dyns(:,:)=0.d0 do isym=1,nsymcrys lspl=lsplsymc(isym) s(:,:)=dble(symlat(:,:,lspl)) call r3mtv(s,vql(:,iq),v3) call vecfbz(epslat,bvec,v3) t1=abs(v2(1)-v3(1))+abs(v2(2)-v3(2))+abs(v2(3)-v3(3)) if (t1.lt.epslat) then call dynsymapp(isym,vql(:,iq),dynq(:,:,iq),dyns) n=n+1 end if end do if (n.eq.0) then write(*,*) write(*,'("Error(dynqtor): vector ",3G18.10)') v1 write(*,'(" cannot be mapped to reduced q-point set")') write(*,*) stop end if t1=1.d0/dble(n) dyns(:,:)=t1*dyns(:,:) ! loop over R-vectors ir=0 do i3=ngridq(3)/2-ngridq(3)+1,ngridq(3)/2 do i2=ngridq(2)/2-ngridq(2)+1,ngridq(2)/2 do i1=ngridq(1)/2-ngridq(1)+1,ngridq(1)/2 ir=ir+1 t1=twopi*(v1(1)*dble(i1)+v1(2)*dble(i2)+v1(3)*dble(i3)) z1=cmplx(cos(t1),sin(t1),8) do i=1,nbph do j=1,nbph dynr(i,j,ir)=dynr(i,j,ir)+z1*dyns(i,j) end do end do end do end do end do end do end do end do t1=1.d0/dble(nqptnr) dynr(:,:,:)=t1*dynr(:,:,:) deallocate(dyns) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rfint.f900000644002504400250440000000005012337331323015640 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rfint.f900000644002504400250440000000145112337331323016405 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. real(8) function rfint(rfmt,rfir) use modmain implicit none ! arguments real(8), intent(in) :: rfmt(lmmaxvr,nrmtmax,natmtot) real(8), intent(in) :: rfir(ngtot) ! local variables integer is,ias,ir real(8) sum ! automatic arrays real(8) fr(nrmtmax),gr(nrmtmax) sum=0.d0 ! interstitial contribution do ir=1,ngtot sum=sum+rfir(ir)*cfunir(ir) end do sum=sum*omega/dble(ngtot) ! muffin-tin contribution do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) fr(ir)=rfmt(1,ir,ias)*spr(ir,is)**2 end do call fderiv(-1,nrmt(is),spr(:,is),fr,gr) sum=sum+fourpi*y00*gr(nrmt(is)) end do rfint=sum return end function elk-2.3.22/src/PaxHeaders.22528/readafieldt.f900000644002504400250440000000005012337331324016763 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/readafieldt.f900000644002504400250440000000156012337331324017531 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 K. Krieger, J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readafieldt use modmain use modtddft implicit none ! local variables integer its,iostat open(50,file='AFIELDT.OUT',action='READ',form='FORMATTED',status='OLD', & iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(readafieldt): error opening AFIELDT.OUT")') write(*,*) stop end if read(50,*) ntimes if (ntimes.le.0) then write(*,*) write(*,'("Error(readafieldt): ntimes <= 0 : ",I8)') ntimes write(*,*) stop end if if (allocated(times)) deallocate(times) allocate(times(ntimes)) if (allocated(afieldt)) deallocate(afieldt) allocate(afieldt(3,ntimes)) do its=1,ntimes read(50,*) times(its),afieldt(:,its) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/genapwfr.f900000644002504400250440000000005012337331323016327 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genapwfr.f900000644002504400250440000000774412337331323017107 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genapwfr ! !INTERFACE: subroutine genapwfr ! !USES: use modmain ! !DESCRIPTION: ! Generates the APW radial functions. This is done by integrating the scalar ! relativistic Schr\"{o}dinger equation (or its energy deriatives) at the ! current linearisation energies using the spherical part of the Kohn-Sham ! potential. The number of radial functions at each $l$-value is given by the ! variable {\tt apword} (at the muffin-tin boundary, the APW functions have ! continuous derivatives up to order ${\tt apword}-1$). Within each $l$, these ! functions are orthonormalised with the Gram-Schmidt method. The radial ! Hamiltonian is applied to the orthonormalised functions and the results are ! stored in the global array {\tt apwfr}. ! ! !REVISION HISTORY: ! Created March 2003 (JKD) ! Copied to equivalent atoms, February 2010 (A. Kozhevnikov and JKD) !EOP !BOC implicit none ! local variables integer is,ia,ja,ias,jas integer nr,ir,nn,l,io,jo real(8) t1 ! automatic arrays logical done(natmmax) real(8) vr(nrmtmax),fr(nrmtmax),gr(nrmtmax) real(8) p0(nrmtmax,apwordmax),p1(nrmtmax),p1s(apwordmax) real(8) q0(nrmtmax,apwordmax),q1(nrmtmax,apwordmax) real(8) hp0(nrmtmax) do is=1,nspecies nr=nrmt(is) done(:)=.false. do ia=1,natoms(is) if (done(ia)) cycle ias=idxas(ia,is) ! use spherical part of potential vr(1:nr)=vsmt(1,1:nr,ias)*y00 do l=0,lmaxapw do io=1,apword(l,is) ! integrate the radial Schrodinger equation call rschroddme(solsc,apwdm(io,l,is),l,0,apwe(io,l,ias),nr,spr(:,is), & vr,nn,p0(:,io),p1,q0(:,io),q1(:,io)) ! normalise radial functions fr(1:nr)=p0(1:nr,io)**2 call fderiv(-1,nr,spr(:,is),fr,gr) t1=1.d0/sqrt(abs(gr(nr))) call dscal(nr,t1,p0(:,io),1) p1s(io)=t1*p1(nr) call dscal(nr,t1,q0(:,io),1) call dscal(nr,t1,q1(:,io),1) ! subtract linear combination of previous vectors do jo=1,io-1 fr(1:nr)=p0(1:nr,io)*p0(1:nr,jo) call fderiv(-1,nr,spr(:,is),fr,gr) t1=-gr(nr) call daxpy(nr,t1,p0(:,jo),1,p0(:,io),1) p1s(io)=p1s(io)+t1*p1s(jo) call daxpy(nr,t1,q0(:,jo),1,q0(:,io),1) call daxpy(nr,t1,q1(:,jo),1,q1(:,io),1) end do ! normalise radial functions again fr(1:nr)=p0(1:nr,io)**2 call fderiv(-1,nr,spr(:,is),fr,gr) t1=abs(gr(nr)) if (t1.lt.1.d-14) then write(*,*) write(*,'("Error(genapwfr): degenerate APW radial functions")') write(*,'(" for species ",I4)') is write(*,'(" atom ",I4)') ia write(*,'(" angular momentum ",I4)') l write(*,'(" and order ",I4)') io write(*,*) stop end if t1=1.d0/sqrt(t1) call dscal(nr,t1,p0(:,io),1) p1s(io)=t1*p1s(io) call dscal(nr,t1,q0(:,io),1) call dscal(nr,t1,q1(:,io),1) ! apply the Hamiltonian call rschrodapp(solsc,l,nr,spr(:,is),vr,p0(:,io),q0(:,io),q1(:,io),hp0) ! divide by r and store in global array do ir=1,nr t1=1.d0/spr(ir,is) apwfr(ir,1,io,l,ias)=t1*p0(ir,io) apwfr(ir,2,io,l,ias)=t1*hp0(ir) end do ! derivative at the muffin-tin surface apwdfr(io,l,ias)=(p1s(io)-p0(nr,io)*t1)*t1 end do end do done(ia)=.true. ! copy to equivalent atoms do ja=1,natoms(is) if ((.not.done(ja)).and.(eqatoms(ia,ja,is))) then jas=idxas(ja,is) do l=0,lmaxapw do io=1,apword(l,is) call dcopy(nr,apwfr(:,1,io,l,ias),1,apwfr(:,1,io,l,jas),1) call dcopy(nr,apwfr(:,2,io,l,ias),1,apwfr(:,2,io,l,jas),1) apwdfr(io,l,jas)=apwdfr(io,l,ias) end do end do done(ja)=.true. end if end do ! end loop over atoms and species end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/sortidx.f900000644002504400250440000000005012337331323016212 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sortidx.f900000644002504400250440000000302612337331323016757 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: sortidx ! !INTERFACE: subroutine sortidx(n,a,idx) ! !INPUT/OUTPUT PARAMETERS: ! n : number of elements in array (in,integer) ! a : real array (in,real(n)) ! idx : permutation index (out,integer(n)) ! !DESCRIPTION: ! Finds the permutation index {\tt idx} which sorts the real array {\tt a} ! into ascending order. No sorting of the array {\tt a} itself is performed. ! Uses the heapsort algorthim. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) ! Included tolerance eps, April 2006 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: a(n) integer, intent(out) :: idx(n) ! local variables integer i,j,k,l,m ! tolerance for deciding if one number is smaller than another real(8), parameter :: eps=1.d-14 if (n.le.0) then write(*,*) write(*,'("Error(sortidx): n <= 0 : ",I8)') n write(*,*) stop end if do i=1,n idx(i)=i end do if (n.eq.1) return l=n/2+1 k=n 10 continue if (l.gt.1) then l=l-1 m=idx(l) else m=idx(k) idx(k)=idx(1) k=k-1 if (k.eq.1) then idx(1)=m return end if end if i=l j=l+l 20 continue if (j.le.k) then if (j.lt.k) then if (a(idx(j)).lt.a(idx(j+1))+eps) j=j+1 end if if (a(m).lt.a(idx(j))+eps) then idx(i)=idx(j) i=j j=j+j else j=k+1 end if goto 20 end if idx(i)=m goto 10 end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writeemd.f900000644002504400250440000000005012337331323016336 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writeemd.f900000644002504400250440000000510312337331323017101 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 S. Dugdale, D. Ernsting and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writeemd use modmain use modpw use modmpi implicit none ! local variables integer ik,ihk,recl integer ist,ispn real(8) sum,t1 complex(8) z1 ! allocatable arrays real(8), allocatable :: emd(:) complex(8), allocatable :: wfpw(:,:,:) if (spinsprl) then write(*,*) write(*,'("Error(writeemd): electron momentum density not available for & &spin-spirals")') write(*,*) stop end if ! initialise universal variables call init0 call init1 call init4 ! read density and potentials from file call readstate ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! get the occupancies from file do ik=1,nkpt call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! delete existing EMD.OUT if (mp_mpi) then open(85,file='EMD.OUT') close(85,status='DELETE') end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) allocate(emd(nhkmax)) inquire(iolength=recl) vkl(:,1),nhkmax,emd deallocate(emd) open(85,file='EMD.OUT',action='WRITE',form='UNFORMATTED',access='DIRECT', & recl=recl) ! loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(emd,wfpw,ihk,sum) & !$OMP PRIVATE(ist,ispn,z1,t1) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(emd(nhkmax)) allocate(wfpw(nhkmax,nspinor,nstsv)) !$OMP CRITICAL write(*,'("Info(writeemd): ",I6," of ",I6," k-points")') ik,nkpt !$OMP END CRITICAL ! Fourier transform the wavefunctions call genwfpw(vkl(:,ik),ngk(1,ik),igkig(:,1,ik),vgkl(:,:,1,ik), & vgkc(:,:,1,ik),gkc(:,1,ik),tpgkc(:,:,1,ik),sfacgk(:,:,1,ik),nhk(1,ik), & vhkc(:,:,1,ik),hkc(:,1,ik),tphkc(:,:,1,ik),sfachk(:,:,1,ik),wfpw) ! loop over all H+k-vectors do ihk=1,nhk(1,ik) ! sum over occupied states and spins sum=0.d0 do ist=1,nstsv do ispn=1,nspinor z1=wfpw(ihk,ispn,ist) t1=dble(z1)**2+aimag(z1)**2 sum=sum+occsv(ist,ik)*t1 end do end do emd(ihk)=sum end do !$OMP CRITICAL write(85,rec=ik) vkl(:,ik),nhk(1,ik),emd !$OMP END CRITICAL deallocate(emd,wfpw) end do !$OMP END DO !$OMP END PARALLEL close(85) ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) if (mp_mpi) then write(*,*) write(*,'("Info(writeemd): electron momentum density written to EMD.OUT")') write(*,'(" for all H+k-vectors up to |H+k| < hkmax")') end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/r3mtv.f900000644002504400250440000000005012337331323015571 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/r3mtv.f900000644002504400250440000000143212337331323016335 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3mtv ! !INTERFACE: subroutine r3mtv(a,x,y) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,real(3,3)) ! x : input vector (in,real(3)) ! y : output vector (out,real(3)) ! !DESCRIPTION: ! Multiplies the transpose of a real $3\times 3$ matrix with a vector. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3),x(3) real(8), intent(out) :: y(3) y(1)=a(1,1)*x(1)+a(2,1)*x(2)+a(3,1)*x(3) y(2)=a(1,2)*x(1)+a(2,2)*x(2)+a(3,2)*x(3) y(3)=a(1,3)*x(1)+a(2,3)*x(2)+a(3,3)*x(3) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genzmagmt.f900000644002504400250440000000005012337331324016510 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genzmagmt.f900000644002504400250440000000275212337331324017262 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genzmagmt(is,wfmt11,wfmt12,wfmt21,wfmt22,ld,zmagmt) use modmain implicit none ! arguments integer, intent(in) :: is complex(8), intent(in) :: wfmt11(lmmaxvr,nrcmtmax) complex(8), intent(in) :: wfmt12(lmmaxvr,nrcmtmax) complex(8), intent(in) :: wfmt21(lmmaxvr,nrcmtmax) complex(8), intent(in) :: wfmt22(lmmaxvr,nrcmtmax) integer, intent(in) :: ld complex(8), intent(out) :: zmagmt(lmmaxvr,nrcmtmax,ld,ndmag) ! local variables integer nrc,nrci,irc integer lmmax,itp complex(8) z1,z2 nrc=nrcmt(is) nrci=nrcmtinr(is) ! calculate the z-component of magnetisation: up-up - dn-dn lmmax=lmmaxinr do irc=1,nrc zmagmt(1:lmmax,irc,1,ndmag)=conjg(wfmt11(1:lmmax,irc))*wfmt21(1:lmmax,irc) & -conjg(wfmt12(1:lmmax,irc))*wfmt22(1:lmmax,irc) if (irc.eq.nrci) lmmax=lmmaxvr end do ! non-collinear case if (ncmag) then lmmax=lmmaxinr do irc=1,nrc do itp=1,lmmax ! up-dn spin density z1=conjg(wfmt11(itp,irc))*wfmt22(itp,irc) ! dn-up spin density z2=conjg(wfmt12(itp,irc))*wfmt21(itp,irc) ! calculate the x-component: up-dn + dn-up zmagmt(itp,irc,1,1)=z1+z2 ! calculate the y-component: i*(dn-up - up-dn) z1=z2-z1 zmagmt(itp,irc,1,2)=cmplx(-aimag(z1),dble(z1),8) end do if (irc.eq.nrci) lmmax=lmmaxvr end do end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/writedvs.f900000644002504400250440000000005012337331324016366 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writedvs.f900000644002504400250440000000106212337331324017131 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writedvs use modmain use modphonon use modstore implicit none ! local variables integer is open(50,file='DVS'//trim(filext),action='WRITE',form='UNFORMATTED') write(50) version write(50) nspecies write(50) lmmaxvr do is=1,nspecies write(50) natoms0(is) write(50) nrcmt(is) end do write(50) ngridg0 write(50) dvsmt,dvsir close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/z2mm.f900000644002504400250440000000005012337331323015403 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/z2mm.f900000644002504400250440000000161512337331323016152 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: z2mm ! !INTERFACE: subroutine z2mm(a,b,c) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix 1 (in,complex(2,2)) ! b : input matrix 2 (in,complex(2,2)) ! c : output matrix (out,complex(2,2)) ! !DESCRIPTION: ! Multiplies two complex $2\times 2$ matrices. Note that the output matrix ! cannot be one of the input matrices. ! ! !REVISION HISTORY: ! Created October 2007 (JKD) !EOP !BOC implicit none ! arguments complex(8), intent(in) :: a(2,2) complex(8), intent(in) :: b(2,2) complex(8), intent(out) :: c(2,2) c(1,1)=a(1,1)*b(1,1)+a(1,2)*b(2,1) c(1,2)=a(1,1)*b(1,2)+a(1,2)*b(2,2) c(2,1)=a(2,1)*b(1,1)+a(2,2)*b(2,1) c(2,2)=a(2,1)*b(1,2)+a(2,2)*b(2,2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/fderiv.f900000644002504400250440000000005012337331323015775 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/fderiv.f900000644002504400250440000000500012337331323016534 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: fderiv ! !INTERFACE: subroutine fderiv(m,n,x,f,g) ! !INPUT/OUTPUT PARAMETERS: ! m : order of derivative (in,integer) ! n : number of points (in,integer) ! x : abscissa array (in,real(n)) ! f : function array (in,real(n)) ! g : (anti-)derivative of f (out,real(n)) ! !DESCRIPTION: ! Given function $f$ defined on a set of points $x_i$ then if $m\ge 0$ this ! routine computes the $m$th derivative of $f$ at each point. If $m<0$ the ! anti-derivative of $f$ given by ! $$ g(x_i)=\int_{x_1}^{x_i} f(x)\,dx $$ ! is calculated. If $m=-1$ then an accurate integral is computed by fitting ! the function to a clamped cubic spline. When $m=-3$ the fast but low ! accuracy trapezoidal integration method is used. Simpson's integration, ! which is slower but more accurate than the trapezoidal method, is used if ! $m=-2$. ! ! !REVISION HISTORY: ! Created May 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: m,n real(8), intent(in) :: x(n),f(n) real(8), intent(out) :: g(n) ! local variables integer i real(8) x0,x1,x2,dx ! automatic arrays real(8) cf(3,n) if (n.le.0) then write(*,*) write(*,'("Error(fderiv): invalid number of points : ",I8)') n write(*,*) stop end if ! low accuracy trapezoidal integration if (m.eq.-3) then g(1)=0.d0 do i=1,n-1 g(i+1)=g(i)+0.5d0*(x(i+1)-x(i))*(f(i+1)+f(i)) end do return end if ! medium accuracy Simpson integration if (m.eq.-2) then g(1)=0.d0 do i=1,n-2 x0=x(i) x1=x(i+1) x2=x(i+2) g(i+1)=g(i)+(x0-x1)*(f(i+2)*(x0-x1)**2+f(i+1)*(x2-x0)*(x0+2.d0*x1-3.d0*x2) & +f(i)*(x2-x1)*(2.d0*x0+x1-3.d0*x2))/(6.d0*(x0-x2)*(x1-x2)) end do x0=x(n) x1=x(n-1) x2=x(n-2) g(n)=g(n-1)+(x1-x0)*(f(n-2)*(x1-x0)**2+f(n)*(x1-x2)*(3.d0*x2-x1-2.d0*x0) & +f(n-1)*(x0-x2)*(3.d0*x2-2.d0*x1-x0))/(6.d0*(x2-x1)*(x2-x0)) return end if if (m.eq.0) then g(:)=f(:) return end if if (m.ge.4) then g(:)=0.d0 return end if ! high accuracy integration/differentiation from spline interpolation call spline(n,x,1,f,cf) select case(m) case(:-1) g(1)=0.d0 do i=1,n-1 dx=x(i+1)-x(i) g(i+1)=g(i)+(((0.25d0*cf(3,i)*dx+0.3333333333333333333d0*cf(2,i))*dx & +0.5d0*cf(1,i))*dx+f(i))*dx end do case(1) g(:)=cf(1,:) case(2) g(:)=2.d0*cf(2,:) case(3) g(:)=6.d0*cf(3,:) end select return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/alpha2f.f900000644002504400250440000000005012337331324016034 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/alpha2f.f900000644002504400250440000001173612337331324016610 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine alpha2f use modmain use modphonon use modtest implicit none ! local variables integer ik,iq,i,j integer i1,i2,i3,iw real(8) wmin,wmax,wd,dw real(8) wlog,wrms,lambda,tc real(8) v(3),t1 ! allocatable arrays real(8), allocatable :: wq(:,:),gq(:,:) real(8), allocatable :: wp(:),a2fp(:),w(:),a2f(:) complex(8), allocatable :: dynq(:,:,:),dynr(:,:,:) complex(8), allocatable :: dynp(:,:),ev(:,:),b(:,:) complex(8), allocatable :: a2fmq(:,:,:),a2fmr(:,:,:),a2fmp(:,:) ! initialise universal variables call init0 call init1 call init2 allocate(wq(nbph,nqpt),gq(nbph,nqpt)) allocate(wp(nbph),a2fp(nbph)) allocate(w(nwplot),a2f(nwplot)) allocate(dynq(nbph,nbph,nqpt)) allocate(dynr(nbph,nbph,nqptnr)) allocate(dynp(nbph,nbph)) allocate(ev(nbph,nbph),b(nbph,nbph)) allocate(a2fmq(nbph,nbph,nqpt)) allocate(a2fmr(nbph,nbph,nqptnr)) allocate(a2fmp(nbph,nbph)) ! get the eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! compute the density of states at the Fermi energy call occupy ! read in the dynamical matrices call readdyn(dynq) ! apply the acoustic sum rule call sumrule(dynq) ! Fourier transform the dynamical matrices to real-space call dynqtor(dynq,dynr) ! read in the phonon linewidths for each q-point call readgamma(gq) ! loop over phonon q-points do iq=1,nqpt ! find the eigenvalues and eigenvectors of the dynamical matrix call dynev(dynq(:,:,iq),wq(:,iq),ev) ! construct a complex matrix from the phonon eigenvectors such that its ! eigenvalues squared are the phonon linewidths divided by the frequency do i=1,nbph if (wq(i,iq).gt.1.d-8) then t1=sqrt(abs(gq(i,iq)/wq(i,iq))) else t1=0.d0 end if do j=1,nbph b(i,j)=t1*conjg(ev(j,i)) end do end do call zgemm('N','N',nbph,nbph,nbph,zone,ev,nbph,b,nbph,zzero,a2fmq(:,:,iq), & nbph) end do ! Fourier transform the matrices to real-space call dynqtor(a2fmq,a2fmr) ! find the minimum and maximum frequencies wmin=0.d0 wmax=0.d0 do iq=1,nqpt wmin=min(wmin,wq(1,iq)) wmax=max(wmax,wq(nbph,iq)) end do wmax=wmax+(wmax-wmin)*0.1d0 wmin=wmin-(wmax-wmin)*0.1d0 wd=wmax-wmin if (wd.lt.1.d-8) wd=1.d0 dw=wd/dble(nwplot) ! generate energy grid do iw=1,nwplot w(iw)=dw*dble(iw-1)+wmin end do a2f(:)=0.d0 do i1=0,ngrkf-1 v(1)=dble(i1)/dble(ngrkf) do i2=0,ngrkf-1 v(2)=dble(i2)/dble(ngrkf) do i3=0,ngrkf-1 v(3)=dble(i3)/dble(ngrkf) ! compute the dynamical matrix at this particular q-point call dynrtoq(v,dynr,dynp) ! find the phonon eigenvalues and eigenvectors call dynev(dynp,wp,ev) ! compute the alpha^2F matrix at this particular q-point call dynrtoq(v,a2fmr,a2fmp) ! diagonalise the alpha^2F matrix simultaneously with the dynamical matrix ! (thanks to Matthieu Verstraete and Ryotaro Arita for correcting this) call dynevs(ev,a2fmp,a2fp) ! square the eigenvalues to recover the linewidths divided by the frequency a2fp(:)=a2fp(:)**2 do i=1,nbph t1=(wp(i)-wmin)/dw+1.d0 iw=nint(t1) if ((iw.ge.1).and.(iw.le.nwplot)) then a2f(iw)=a2f(iw)+a2fp(i) end if end do end do end do end do t1=twopi*(fermidos/2.d0)*dw*dble(ngrkf)**3 if (t1.gt.1.d-8) then t1=1.d0/t1 else t1=0.d0 end if a2f(:)=t1*a2f(:) ! smooth Eliashberg function if required if (nswplot.gt.0) call fsmooth(nswplot,nwplot,1,a2f) ! write Eliashberg function to file open(50,file='ALPHA2F.OUT',action='WRITE',form='FORMATTED') do iw=1,nwplot write(50,'(2G18.10)') w(iw),a2f(iw) end do close(50) write(*,*) write(*,'("Info(alpha2f):")') write(*,'(" Eliashberg function written to ALPHA2F.OUT")') ! compute lambda, logarithmic average frequency, RMS average frequency and ! McMillan-Allen-Dynes superconducting critical temperature call mcmillan(w,a2f,lambda,wlog,wrms,tc) open(50,file='MCMILLAN.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("Electron-phonon coupling constant, lambda : ",G18.10)') lambda write(50,*) write(50,'("Logarithmic average frequency : ",G18.10)') wlog write(50,*) write(50,'("RMS average frequency : ",G18.10)') wrms write(50,*) write(50,'("Coulomb pseudopotential, mu* : ",G18.10)') mustar write(50,*) write(50,'("McMillan-Allen-Dynes superconducting critical temperature")') write(50,'(" [Eq. 34, Phys. Rev. B 12, 905 (1975)] (kelvin) : ",G18.10)') tc write(50,*) close(50) write(*,*) write(*,'("Info(alpha2f):")') write(*,'(" Electron-phonon coupling constant, lambda;")') write(*,'(" logarithmic and RMS average frequencies;")') write(*,'(" and McMillan-Allen-Dynes superconducting critical temperature")') write(*,'(" written to MCMILLAN.OUT")') ! write lambda to test file call writetest(251,'Electron-phonon coupling constant, lambda',tol=5.d-2, & rv=lambda) deallocate(wq,wp,gq,a2fp,w,a2f) deallocate(dynq,dynr,dynp,ev,b) deallocate(a2fmq,a2fmr,a2fmp) return end subroutine elk-2.3.22/src/PaxHeaders.22528/writewfpw.f900000644002504400250440000000005012337331324016555 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writewfpw.f900000644002504400250440000000377112337331324017331 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writewfpw use modmain use modpw use modmpi implicit none ! local variables integer ik,recl ! allocatable arrays complex(8), allocatable :: wfpw(:,:,:) ! initialise global variables call init0 call init1 call init4 ! read density and potentials from file call readstate ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! delete existing WFPW.OUT if (mp_mpi) then open(50,file='WFPW.OUT') close(50,status='DELETE') end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! determine the record length and open WFPW.OUT allocate(wfpw(nhkmax,nspinor,nstsv)) inquire(iolength=recl) vkl(:,1),nhkmax,nspinor,nstsv,wfpw deallocate(wfpw) open(50,file='WFPW.OUT',action='WRITE',form='UNFORMATTED',access='DIRECT', & recl=recl) ! begin parallel loop over k-points !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(wfpw) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(wfpw(nhkmax,nspinor,nstsv)) !$OMP CRITICAL write(*,'("Info(writewfpw): ",I6," of ",I6," k-points")') ik,nkpt !$OMP END CRITICAL ! generate the plane wave wavefunctions call genwfpw(vkl(:,ik),ngk(:,ik),igkig(:,:,ik),vgkl(:,:,:,ik), & vgkc(:,:,:,ik),gkc(:,:,ik),tpgkc(:,:,:,ik),sfacgk(:,:,:,ik),nhk(:,ik), & vhkc(:,:,:,ik),hkc(:,:,ik),tphkc(:,:,:,ik),sfachk(:,:,:,ik),wfpw) !$OMP CRITICAL write(50,rec=ik) vkl(:,ik),nhkmax,nspinor,nstsv,wfpw !$OMP END CRITICAL deallocate(wfpw) end do !$OMP END DO !$OMP END PARALLEL close(50) ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) if (mp_mpi) then write(*,*) write(*,'("Info(writewfpw): plane wave wavefunctions written to WFPW.OUT")') write(*,'(" for all H+k-vectors up to |H+k| < hkmax")') end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/eveqn.f900000644002504400250440000000005012337331323015634 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/eveqn.f900000644002504400250440000000432212337331323016401 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: eveqn subroutine eveqn(ik,evalfv,evecfv,evecsv) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ik : k-point number (in,integer) ! evalfv : first-variational eigenvalues (out,real(nstfv)) ! evecfv : first-variational eigenvectors (out,complex(nmatmax,nstfv)) ! evecsv : second-variational eigenvectors (out,complex(nstsv,nstsv)) ! !DESCRIPTION: ! Solves the first- and second-variational eigenvalue equations. See routines ! {\tt match}, {\tt eveqnfv}, {\tt eveqnss} and {\tt eveqnsv}. ! ! !REVISION HISTORY: ! Created March 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ik real(8), intent(out) :: evalfv(nstfv,nspnfv) complex(8), intent(out) :: evecfv(nmatmax,nstfv,nspnfv) complex(8), intent(out) :: evecsv(nstsv,nstsv) ! local variables integer jspn ! allocatable arrays complex(8), allocatable :: apwalm(:,:,:,:,:) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) ! loop over first-variational spins (nspnfv=2 for spin-spirals only) !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do jspn=1,nspnfv ! find the matching coefficients call match(ngk(jspn,ik),gkc(:,jspn,ik),tpgkc(:,:,jspn,ik), & sfacgk(:,:,jspn,ik),apwalm(:,:,:,:,jspn)) ! solve the first-variational eigenvalue equation if (tefvit) then ! iteratively call eveqnit(nmat(jspn,ik),ngk(jspn,ik),igkig(:,jspn,ik),vkl(:,ik), & vgkl(:,:,jspn,ik),vgkc(:,:,jspn,ik),apwalm(:,:,:,:,jspn),evalfv(:,jspn), & evecfv(:,:,jspn)) else ! directly call eveqnfv(nmat(jspn,ik),ngk(jspn,ik),igkig(:,jspn,ik),vkc(:,ik), & vgkc(:,:,jspn,ik),apwalm(:,:,:,:,jspn),evalfv(:,jspn),evecfv(:,:,jspn)) end if end do !$OMP END DO !$OMP END PARALLEL if (spinsprl) then ! solve the spin-spiral second-variational eigenvalue equation call eveqnss(ngk(:,ik),igkig(:,:,ik),apwalm,evalfv,evecfv,evalsv(:,ik),evecsv) else ! solve the second-variational eigenvalue equation call eveqnsv(ngk(1,ik),igkig(:,1,ik),vgkc(:,:,1,ik),apwalm,evalfv,evecfv, & evalsv(:,ik),evecsv) end if deallocate(apwalm) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genvfxc.f900000644002504400250440000000005012337331324016157 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvfxc.f900000644002504400250440000000270112337331324016723 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genvfxc(gqc,vchi0,eps0,eps,vfxc) use modmain use modtddft implicit none ! arguments real(8), intent(in) :: gqc(ngrf) complex(8), intent(in) :: vchi0(nwrf,ngrf,ngrf) complex(8), intent(in) :: eps0(ngrf,ngrf,nwrf) complex(8), intent(in) :: eps(ngrf,ngrf,nwrf) complex(8), intent(out) :: vfxc(ngrf,ngrf,nwrf) ! local variables integer ig,jg,iw real(8) t1 ! allocatable arrays complex(8), allocatable :: a(:,:),b(:,:) ! compute v^(-1/2) f_xc v^(-1/2) select case(fxctype(1)) case(0,1) ! RPA vfxc(:,:,:)=0.d0 return case(3) ! ALDA call genvfxcg(gqc,vfxc) case(200) ! long-range contribution with dynamic correlations vfxc(:,:,:)=0.d0 do ig=1,ngrf vfxc(ig,ig,:)=-(fxclrc(1)+fxclrc(2)*dble(wrf(:))**2)/fourpi end do case(210) ! bootstrap vfxc(:,:,:)=0.d0 t1=-1.d0/(dble(eps0(1,1,1))-1.d0) do ig=1,ngrf do jg=1,ngrf vfxc(ig,jg,:)=t1*eps(ig,jg,1) end do end do case default write(*,*) write(*,'("Error(genvfxc): fxctype not defined : ",I8)') fxctype write(*,*) stop end select ! right multiply by v^1/2 chi0 v^1/2 allocate(a(ngrf,ngrf),b(ngrf,ngrf)) do iw=1,nwrf a(:,:)=vfxc(:,:,iw) b(:,:)=vchi0(iw,:,:) call zgemm('N','N',ngrf,ngrf,ngrf,zone,a,ngrf,b,ngrf,zzero,vfxc(:,:,iw),ngrf) end do deallocate(a,b) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rfmtctof.f900000644002504400250440000000005012337331323016342 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rfmtctof.f900000644002504400250440000000223112337331323017104 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rfmtctof ! !INTERFACE: subroutine rfmtctof(rfmt) ! !INPUT/OUTPUT PARAMETERS: ! rfmt : real muffin-tin function (in,real(lmmaxvr,nrmtmax,natmtot)) ! !DESCRIPTION: ! Converts a real muffin-tin function from a coarse to a fine radial mesh by ! using cubic spline interpolation. See {\tt rfinterp} and {\tt spline}. ! ! !REVISION HISTORY: ! Created October 2003 (JKD) !EOP !BOC use modmain implicit none ! arguments real(8), intent(inout) :: rfmt(lmmaxvr,nrmtmax,natmtot) ! local variables integer ld,is,ias,ir,lm ld=lmmaxvr*lradstp !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(is,ir,lm) !$OMP DO do ias=1,natmtot is=idxis(ias) do ir=1,nrmtinr(is),lradstp rfmt(lmmaxinr+1:lmmaxvr,ir,ias)=0.d0 end do ! interpolate with a clamped spline do lm=1,lmmaxvr call rfinterp(nrcmt(is),rcmt(:,is),ld,rfmt(lm,1,ias),nrmt(is),spr(:,is), & lmmaxvr,rfmt(lm,1,ias)) end do end do !$OMP END DO !$OMP END PARALLEL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/plot2d.f900000644002504400250440000000005012337331323015722 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/plot2d.f900000644002504400250440000000475212337331323016476 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: plot2d ! !INTERFACE: subroutine plot2d(fnum,nf,rfmt,rfir) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! fnum : plot file number (in,integer) ! nf : number of functions (in,integer) ! rfmt : real muffin-tin function (in,real(lmmaxvr,nrmtmax,natmtot,nf)) ! rfir : real intersitial function (in,real(ngtot,nf)) ! !DESCRIPTION: ! Produces a 2D plot of the real functions contained in arrays {\tt rfmt} and ! {\tt rfir} on the parallelogram defined by the corner vertices in the global ! array {\tt vclp2d}. See routine {\tt rfarray}. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum integer, intent(in) :: nf real(8), intent(in) :: rfmt(lmmaxvr,nrmtmax,natmtot,nf) real(8), intent(in) :: rfir(ngtot,nf) ! local variables integer i,ip,ip1,ip2 real(8) vl1(3),vl2(3),vc1(3),vc2(3) real(8) d1,d2,d12,t1,t2,t3,t4 ! allocatable arrays real(8), allocatable :: vpl(:,:),fp(:,:) if ((nf.lt.1).or.(nf.gt.4)) then write(*,*) write(*,'("Error(plot2d): invalid number of functions : ",I8)') nf write(*,*) stop end if ! allocate local arrays allocate(vpl(3,np2d(1)*np2d(2))) allocate(fp(np2d(1)*np2d(2),nf)) ! generate 2D grid vl1(:)=vclp2d(:,2)-vclp2d(:,1) vl2(:)=vclp2d(:,3)-vclp2d(:,1) vc1(:)=vl1(1)*avec(:,1)+vl1(2)*avec(:,2)+vl1(3)*avec(:,3) vc2(:)=vl2(1)*avec(:,1)+vl2(2)*avec(:,2)+vl2(3)*avec(:,3) d1=sqrt(vc1(1)**2+vc1(2)**2+vc1(3)**2) d2=sqrt(vc2(1)**2+vc2(2)**2+vc2(3)**2) if ((d1.lt.epslat).or.(d2.lt.epslat)) then write(*,*) write(*,'("Error(plot2d): zero length plotting vectors")') write(*,*) stop end if d12=(vc1(1)*vc2(1)+vc1(2)*vc2(2)+vc1(3)*vc2(3))/(d1*d2) ip=0 do ip2=0,np2d(2)-1 do ip1=0,np2d(1)-1 ip=ip+1 t1=dble(ip1)/dble(np2d(1)) t2=dble(ip2)/dble(np2d(2)) vpl(:,ip)=t1*vl1(:)+t2*vl2(:)+vclp2d(:,1) end do end do ! evaluate the functions at the grid points do i=1,nf call rfarray(ip,vpl,rfmt(:,:,:,i),rfir(:,i),fp(:,i)) end do ! write the functions to file write(fnum,'(2I6," : grid size")') np2d(:) ip=0 do ip2=0,np2d(2)-1 do ip1=0,np2d(1)-1 ip=ip+1 t1=dble(ip1)/dble(np2d(1)) t2=dble(ip2)/dble(np2d(2)) t3=t1*d1+t2*d2*d12 t4=t2*d2*sqrt(abs(1.d0-d12**2)) write(fnum,'(6G18.10)') t3,t4,(fp(ip,i),i=1,nf) end do end do deallocate(vpl,fp) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rhomagsh.f900000644002504400250440000000005012337331323016326 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rhomagsh.f900000644002504400250440000000256412337331323017101 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rhomagsh ! !INTERFACE: subroutine rhomagsh ! !USES: use modmain ! !DESCRIPTION: ! Converts the muffin-tin density and magnetisation from spherical coordinates ! to a spherical harmonic expansion. See {\tt rhomagk}. ! ! !REVISION HISTORY: ! Created January 2009 (JKD) !EOP !BOC implicit none ! local variables integer idm,is,ias integer nr,nrc,nrci,ir,irc ! allocatable arrays real(8), allocatable :: rfmt(:,:) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(rfmt,is,nr,nrc) & !$OMP PRIVATE(nrci,irc,ir,idm) !$OMP DO do ias=1,natmtot allocate(rfmt(lmmaxvr,nrcmtmax)) is=idxis(ias) nr=nrmt(is) nrc=nrcmt(is) nrci=nrcmtinr(is) ! convert the density to spherical harmonics irc=0 do ir=1,nr,lradstp irc=irc+1 rfmt(:,irc)=rhomt(:,ir,ias) end do call rfsht(nrc,nrci,1,rfmt,lradstp,rhomt(:,:,ias)) ! convert magnetisation to spherical harmonics if (spinpol) then do idm=1,ndmag irc=0 do ir=1,nr,lradstp irc=irc+1 rfmt(:,irc)=magmt(:,ir,ias,idm) end do call rfsht(nrc,nrci,1,rfmt,lradstp,magmt(:,:,ias,idm)) end do end if deallocate(rfmt) end do !$OMP END DO !$OMP END PARALLEL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/sbessel.f900000644002504400250440000000005012337331323016156 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sbessel.f900000644002504400250440000000540612337331323016727 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: sbessel ! !INTERFACE: subroutine sbessel(lmax,x,jl) ! !INPUT/OUTPUT PARAMETERS: ! lmax : maximum order of Bessel function (in,integer) ! x : real argument (in,real) ! jl : array of returned values (out,real(0:lmax)) ! !DESCRIPTION: ! Computes the spherical Bessel functions of the first kind, $j_l(x)$, for ! argument $x$ and $l=0,1,\ldots,l_{\rm max}$. The recursion relation ! $$ j_{l+1}(x)=\frac{2l+1}{x}j_l(x)-j_{l-1}(x) $$ ! is used either downwards for $x lmaxdm ",2I8)') l,lmaxdm write(*,'(" for species ",I4," and atom ",I4)') is,ia write(*,*) stop end if n=itmfix(4,i) k=itmfix(5,i) p=itmfix(6,i) if (n.eq.2) then ! generate the 2-index density matrix x=itmfix(7,i) y=itmfix(8,i) if ((abs(x).gt.lmmaxdm).or.(abs(y).gt.1)) then write(*,*) write(*,'("Error(gendmftm): invalid x or y : ",2I8)') x,y write(*,'(" for tensor moment entry ",I3)') i write(*,*) stop end if tm2(:,:)=0.d0 tm2(x,y)=tmfix(i) call tm2todm(l,nspinor,k,p,lmmaxdm,tm2,dmat) else ! generate the 3-index density matrix r=itmfix(7,i) t=itmfix(8,i) if (abs(t).gt.lmmaxdm) then write(*,*) write(*,'("Error(gendmftm): invalid t : ",I8)') t write(*,'(" for tensor moment entry ",I3)') i write(*,*) stop end if tm3(:)=0.d0 tm3(t)=tmfix(i) call tm3todm(l,nspinor,k,p,r,lmmaxdm,tm3,dmat) end if ! make density matrix Hermitian call hrmdmat(lmmaxdm*nspinor,dmat) ! apply rotation matrices and add to density matrix global array call rotdmat(rtmfix(:,:,1,i),rtmfix(:,:,2,i),lmaxdm,nspinor,lmmaxdm,dmat, & dmftm(:,:,:,:,ias)) end do deallocate(tm2,tm3,dmat) return end subroutine elk-2.3.22/src/PaxHeaders.22528/ztorfmt.f900000644002504400250440000000005012337331324016224 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/ztorfmt.f900000644002504400250440000000122412337331324016767 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine ztorfmt(nr,nri,lrstp1,zfmt,lrstp2,rfmt) use modmain implicit none ! arguments integer, intent(in) :: nr,nri integer, intent(in) :: lrstp1 complex(8), intent(in) :: zfmt(lmmaxvr,lrstp1,nr) integer, intent(in) :: lrstp2 real(8), intent(out) :: rfmt(lmmaxvr,lrstp2,nr) ! local variables integer ir do ir=1,nri call ztorflm(lmaxinr,zfmt(:,1,ir),rfmt(:,1,ir)) end do do ir=nri+1,nr call ztorflm(lmaxvr,zfmt(:,1,ir),rfmt(:,1,ir)) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/drhomagk.f900000644002504400250440000000005012337331324016313 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/drhomagk.f900000644002504400250440000001147612337331324017070 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine drhomagk(ngp,ngpq,igpig,igpqig,occsvp,apwalm,apwalmq,dapwalm, & evecfv,devecfv,evecsv,devecsv) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ngp(nspnfv),ngpq(nspnfv) integer, intent(in) :: igpig(ngkmax,nspnfv),igpqig(ngkmax,nspnfv) real(8), intent(in) :: occsvp(nstsv) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv) complex(8), intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw,nspnfv) complex(8), intent(in) :: evecfv(nmatmax,nstfv,nspnfv) complex(8), intent(in) :: devecfv(nmatmax,nstfv,nspnfv) complex(8), intent(in) :: evecsv(nstsv,nstsv),devecsv(nstsv,nstsv) ! local variables integer nst,ist,jst,is,ias integer nr,nrci,ir,irc integer lmmax,itp real(8) t0 complex(8) z1,z2,z3,z4,z5,z6 ! automatic arrays integer idx(nstsv) ! allocatable arrays complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) complex(8), allocatable :: dwfmt(:,:,:,:,:),dwfir(:,:,:) ! count and index the occupied states nst=0 do ist=1,nstsv if (abs(occsvp(ist)).gt.epsocc) then nst=nst+1 idx(nst)=ist end if end do ! generate the wavefunctions allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nst)) allocate(wfir(ngtot,nspinor,nst)) call genwfsv(.false.,.false.,nst,idx,ngp,igpig,apwalm,evecfv,evecsv,wfmt, & ngtot,wfir) ! generate the wavefunction derivatives allocate(dwfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nst)) allocate(dwfir(ngtot,nspinor,nst)) call gendwfsv(.false.,.false.,nst,idx,ngp,ngpq,igpqig,apwalmq,dapwalm,evecfv, & devecfv,evecsv,devecsv,dwfmt,ngtot,dwfir) ! loop over occupied states do ist=1,nst jst=idx(ist) t0=2.d0*wkptnr*occsvp(jst) !----------------------------------------------! ! muffin-tin density and magnetisation ! !----------------------------------------------! do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nrci=nrcmtinr(is) !$OMP CRITICAL if (spinpol) then ! spin-polarised if (ncmag) then ! non-collinear lmmax=lmmaxinr irc=0 do ir=1,nr,lradstp irc=irc+1 do itp=1,lmmax z1=conjg(wfmt(itp,irc,ias,1,jst)) z2=conjg(wfmt(itp,irc,ias,2,jst)) z3=dwfmt(itp,irc,ias,1,jst) z4=dwfmt(itp,irc,ias,2,jst) z5=z1*z3 z6=z2*z4 drhomt(itp,ir,ias)=drhomt(itp,ir,ias)+t0*(z5+z6) dmagmt(itp,ir,ias,3)=dmagmt(itp,ir,ias,3)+t0*(z5-z6) z5=z1*z4 z6=z2*z3 dmagmt(itp,ir,ias,1)=dmagmt(itp,ir,ias,1)+t0*(z5+z6) z5=z5-z6 dmagmt(itp,ir,ias,2)=dmagmt(itp,ir,ias,2) & +t0*cmplx(aimag(z5),-dble(z5),8) end do if (irc.eq.nrci) lmmax=lmmaxvr end do else ! collinear lmmax=lmmaxinr irc=0 do ir=1,nr,lradstp irc=irc+1 do itp=1,lmmax z1=conjg(wfmt(itp,irc,ias,1,jst))*dwfmt(itp,irc,ias,1,jst) z2=conjg(wfmt(itp,irc,ias,2,jst))*dwfmt(itp,irc,ias,2,jst) drhomt(itp,ir,ias)=drhomt(itp,ir,ias)+t0*(z1+z2) dmagmt(itp,ir,ias,1)=dmagmt(itp,ir,ias,1)+t0*(z1-z2) end do if (irc.eq.nrci) lmmax=lmmaxvr end do end if else ! spin-unpolarised lmmax=lmmaxinr irc=0 do ir=1,nr,lradstp irc=irc+1 drhomt(1:lmmax,ir,ias)=drhomt(1:lmmax,ir,ias) & +t0*conjg(wfmt(1:lmmax,irc,ias,1,jst))*dwfmt(1:lmmax,irc,ias,1,jst) if (irc.eq.nrci) lmmax=lmmaxvr end do end if !$OMP END CRITICAL end do !------------------------------------------------! ! interstitial density and magnetisation ! !------------------------------------------------! !$OMP CRITICAL if (spinpol) then ! spin-polarised if (ncmag) then ! non-collinear do ir=1,ngtot z1=conjg(wfir(ir,1,jst)) z2=conjg(wfir(ir,2,jst)) z3=dwfir(ir,1,jst) z4=dwfir(ir,2,jst) z5=z1*z3 z6=z2*z4 drhoir(ir)=drhoir(ir)+t0*(z5+z6) dmagir(ir,3)=dmagir(ir,3)+t0*(z5-z6) z5=z1*z4 z6=z2*z3 dmagir(ir,1)=dmagir(ir,1)+t0*(z5+z6) z5=z5-z6 dmagir(ir,2)=dmagir(ir,2)+t0*cmplx(aimag(z5),-dble(z5),8) end do else ! collinear do ir=1,ngtot z1=conjg(wfir(ir,1,jst))*dwfir(ir,1,jst) z2=conjg(wfir(ir,2,jst))*dwfir(ir,2,jst) drhoir(ir)=drhoir(ir)+t0*(z1+z2) dmagir(ir,1)=dmagir(ir,1)+t0*(z1-z2) end do end if else ! spin-unpolarised do ir=1,ngtot drhoir(ir)=drhoir(ir)+t0*conjg(wfir(ir,1,jst))*dwfir(ir,1,jst) end do end if !$OMP END CRITICAL ! end loop over states end do deallocate(wfmt,wfir,dwfmt,dwfir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/allatoms.f900000644002504400250440000000005012337331323016332 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/allatoms.f900000644002504400250440000000330312337331323017075 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: allatoms ! !INTERFACE: subroutine allatoms ! !USES: use modmain ! !DESCRIPTION: ! Solves the Kohn-Sham-Dirac equations for each atom type in the solid and ! finds the self-consistent radial wavefunctions, eigenvalues, charge ! densities and potentials. The atomic densities can then be used to ! initialise the crystal densities, and the atomic self-consistent potentials ! can be appended to the muffin-tin potentials to solve for the core states. ! Note that, irrespective of the value of {\tt xctype}, exchange-correlation ! functional type 3 is used. See also {\tt atoms}, {\tt rhoinit}, ! {\tt gencore} and {\tt modxcifc}. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) ! Modified for GGA, June 2007 (JKD) !EOP !BOC implicit none integer xctype_(3),xcgrad_ integer is ! allocatable arrays real(8), allocatable :: rwf(:,:,:) ! allocate global species charge density and potential arrays if (allocated(sprho)) deallocate(sprho) allocate(sprho(spnrmax,nspecies)) if (allocated(spvr)) deallocate(spvr) allocate(spvr(spnrmax,nspecies)) ! use LDA (xctype=3) to set up atomic densities xctype_(1)=3; xctype_(2:3)=0 xcgrad_=0 !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(rwf) !$OMP DO do is=1,nspecies allocate(rwf(spnrmax,2,spnstmax)) call atom(solsc,ptnucl,spzn(is),spnst(is),spn(:,is),spl(:,is),spk(:,is), & spocc(:,is),xctype_,xcgrad_,spnr(is),spr(:,is),speval(:,is),sprho(:,is), & spvr(:,is),rwf) deallocate(rwf) end do !$OMP END DO !$OMP END PARALLEL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/getoccsv.f900000644002504400250440000000005012337331323016333 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/getoccsv.f900000644002504400250440000000233412337331323017101 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getoccsv(vpl,occsvp) use modmain implicit none ! arguments real(8), intent(in) :: vpl(3) real(8), intent(out) :: occsvp(nstsv) ! local variables integer isym,ik integer recl,nstsv_ real(8) vkl_(3),t1 ! find the k-point number call findkpt(vpl,isym,ik) ! find the record length inquire(iolength=recl) vkl_,nstsv_,occsvp !$OMP CRITICAL open(70,file='OCCSV'//trim(filext),action='READ',form='UNFORMATTED', & access='DIRECT',recl=recl) read(70,rec=ik) vkl_,nstsv_,occsvp close(70) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getoccsv): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" OCCSV.OUT : ",3G18.10)') vkl_ write(*,*) stop end if if (nstsv.ne.nstsv_) then write(*,*) write(*,'("Error(getoccsv): differing nstsv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstsv write(*,'(" OCCSV.OUT : ",I8)') nstsv_ write(*,*) stop end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/dolpaa.f900000644002504400250440000000005012337331324015757 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dolpaa.f900000644002504400250440000000202712337331324016524 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dolpaa(ias,ngp,ngpq,apwalm,apwalmq,dapwalm,dapwalmq,ld,od) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw) complex(8), intent(in) :: dapwalmq(ngkmax,apwordmax,lmmaxapw) integer, intent(in) :: ld complex(8), intent(inout) :: od(ld,*) ! local variables integer is,l,m,lm,io if (ias.ne.iasph) return is=idxis(ias) lm=0 do l=0,lmaxmat do m=-l,l lm=lm+1 do io=1,apword(l,is) call zgerci(ngpq,ngp,zone,apwalmq(:,io,lm,ias),dapwalm(:,io,lm),ld,od) call zgerci(ngpq,ngp,zone,dapwalmq(:,io,lm),apwalm(:,io,lm,ias),ld,od) end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/wigner6j.f900000644002504400250440000000005012337331323016251 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/wigner6j.f900000644002504400250440000000615412337331323017023 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: wigner6j ! !INTERFACE: real(8) function wigner6j(j1,j2,j3,k1,k2,k3) ! !INPUT/OUTPUT PARAMETERS: ! j1, j2, j3 : angular momentum quantum numbers (in,integer) ! k1, k2, k3 : angular momentum quantum numbers (in,integer) ! !DESCRIPTION: ! Returns the Wigner $6j$-symbol for integer arguments. This is computed using ! the Racah formula: ! \begin{align*} ! &\left\{\begin{matrix} j_1 & j_2 & j_3 \\ k_1 & k_2 & k_3 \end{matrix} ! \right\}=\sqrt{\Delta(j_1\,j_2\,j_3)\Delta(j_1\,k_2\,k_3) ! \Delta(k_1\,j_2\,k_3)\Delta(k_1\,k_2\,j_3)}\, ! \sum_n\frac{(-1)^n(n+1)!}{f(n)}, ! \end{align*} ! where ! \begin{align*} ! f(n)=&(n-j_1-j_2-j_3)!\,(n-j_1-k_2-k_3)!\,(n-k_1-j_2-k_3)!\, ! (n-k_1-k_2-j_3)! \\ ! &\times(j_1+j_2+k_1+k_2-n)!\,(j_2+j_3+k_2+k_3-n)!\,(j_1+j_3+k_1+k_3-n)! ! \end{align*} ! and ! $$ \Delta(a,b,c)=\frac{(a+b-c)!\,(a-b+c)!\,(-a+b+c)!}{(a+b+c+1)!} $$ ! is the triangle coefficient, and where the sum is over all integers $n$ for ! which the factorials in $f(n)$ have non-negative arguments. The Wigner-$6j$ ! function is zero unless each triad, $(j_1\,j_2\,j_3)$, $(j_1\,k_2\,k_3)$, ! $(k_1\,j_2\,k_3)$ and $(k_1\,k_2\,j_3)$, satifies the triangle inequalities: ! $$ |x-y|\le z \le x+y, $$ ! for triad $(x,y,z)$. See, for example, A. Messiah, {\it Quantum Mechanics}, ! Vol. 2., 1061-1066 (1962). ! ! !REVISION HISTORY: ! Created August 2009 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: j1,j2,j3 integer, intent(in) :: k1,k2,k3 ! local variables integer n0,n1,n real(8) sum,t1,t2 ! external functions real(8) triangle,factnm,factr external triangle,factnm,factr wigner6j=0.d0 if ((abs(j1-j2).gt.j3).or.((j1+j2).lt.j3)) return if ((abs(j1-k2).gt.k3).or.((j1+k2).lt.k3)) return if ((abs(k1-j2).gt.k3).or.((k1+j2).lt.k3)) return if ((abs(k1-k2).gt.j3).or.((k1+k2).lt.j3)) return if ((abs(j1).gt.50).or.(abs(j2).gt.50).or.(abs(j3).gt.50).or. & (abs(k1).gt.50).or.(abs(k2).gt.50).or.(abs(k3).gt.50)) then write(*,*) write(*,'("Error(wigner6j): arguments out of range :")') write(*,'(" j1, j2, j3 = ",3I8)') j1,j2,j3 write(*,'(" k1, k2, k3 = ",3I8)') k1,k2,k3 write(*,*) stop end if ! range for summation n0=max(j1+j2+j3,j1+k2+k3,k1+j2+k3,k1+k2+j3) n1=min(j1+j2+k1+k2,j2+j3+k2+k3,j1+j3+k1+k3) ! Racah formula summation sum=0.d0 do n=n0,n1 t1=dble((-1)**n)*factr(n+1,n-(j1+j2+j3)) t2=factnm(n-(j1+k2+k3),1)*factnm(n-(k1+j2+k3),1)*factnm(n-(k1+k2+j3),1) t2=t2*factnm(j1+j2+k1+k2-n,1)*factnm(j2+j3+k2+k3-n,1)*factnm(j1+j3+k1+k3-n,1) sum=sum+t1/t2 end do ! multiply by prefactor wigner6j=sqrt(triangle(j1,j2,j3)*triangle(j1,k2,k3) & *triangle(k1,j2,k3)*triangle(k1,k2,j3))*sum return end function real(8) function triangle(a,b,c) implicit none ! arguments integer, intent(in) :: a,b,c ! external functions real(8) factnm,factr external factnm,factr triangle=factr(a+b-c,a+b+c+1)*factnm(a-b+c,1)*factnm(-a+b+c,1) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/pade.f900000644002504400250440000000005012337331323015427 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/pade.f900000644002504400250440000000460212337331323016175 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) A. Sanna and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: pade ! !INTERFACE: subroutine pade(nin,zin,uin,nout,zout,uout) ! !INPUT/OUTPUT PARAMETERS: ! nin : number of input points (in,integer) ! zin : input points (in,complex(nin)) ! uin : input function values (in,complex(nin)) ! nout : number of output points (in,integer) ! zout : output points (in,complex(nout)) ! uout : output function values (out,complex(nout)) ! !DESCRIPTION: ! Calculates a Pad\'{e} approximant of a function, given the function ! evaluated on a set of points in the complex plane. The function is returned ! for a set of complex output points. The algorithm from H. J. Vidberg and ! J. W. Serene {\it J. Low Temp. Phys.} {\bf } 29, 179 (1977) is used. ! ! !REVISION HISTORY: ! Created December 2010 (Antonio Sanna) !EOP !BOC implicit none ! arguments integer, intent(in) :: nin complex(8), intent(in) :: zin(nin) complex(8), intent(in) :: uin(nin) integer, intent(in) :: nout complex(8), intent(in) :: zout(nout) complex(8), intent(out) :: uout(nout) ! local variables integer i,j real(8) t1 complex(8) a0,a1,b0,b1,z1,z2 ! allocatable arrays complex(8), allocatable :: g(:,:) if ((nin.le.0).or.(nout.le.0)) then write(*,*) write(*,'("Error(pade): invalid number of input or output points : ",2I8)') & nin,nout write(*,*) stop end if allocate(g(nin,nin)) ! define the g functions using Eq. (A2) g(1,:)=uin(:) do i=2,nin do j=i,nin g(i,j)=(g(i-1,i-1)-g(i-1,j))/((zin(j)-zin(i-1))*g(i-1,j)) end do end do ! loop over output points do i=1,nout ! use recursive algorithm in Eq. (A3) to evaluate function a0=0.d0 a1=g(1,1) b0=1.d0 b1=1.d0 do j=2,nin z1=(zout(i)-zin(j-1))*g(j,j) z2=a1+z1*a0 a0=a1 a1=z2 z2=b1+z1*b0 b0=b1 b1=z2 ! check for overflow and rescale if ((abs(dble(a1)).gt.1.d100).or.(abs(aimag(a1)).gt.1.d100)) then t1=1.d0/abs(a1) a0=a0*t1 b0=b0*t1 a1=a1*t1 b1=b1*t1 end if if ((abs(dble(b1)).gt.1.d100).or.(abs(aimag(b1)).gt.1.d100)) then t1=1.d0/abs(b1) a0=a0*t1 b0=b0*t1 a1=a1*t1 b1=b1*t1 end if end do t1=abs(dble(b1))+abs(aimag(b1)) if (t1.ne.0.d0) then uout(i)=a1/b1 else uout(i)=0.d0 end if end do deallocate(g) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writetm2du.f900000644002504400250440000000005012337331324016625 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writetm2du.f900000644002504400250440000001025412337331324017373 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writetm2du ! !INTERFACE: subroutine writetm2du(fnum) ! !USES: use modmain use moddftu use modtest ! !DESCRIPTION: ! Decompose the density matrix and the DFT+$U$ Hartree-Fock energy in 2-index ! tensor moments components, see {\it Phys. Rev. B} {\bf 80}, 035121 (2009). ! ! !REVISION HISTORY: ! Created October 2009 (F. Cricchio and L. Nordstrom) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum ! local variables integer is,ia,ias,i integer l,p,k,x,y real(8) ehf,vh,vx,w2,t1 real(8) tm2ptot,tm2p,tm2p0 ! allocatable arrays real(8), allocatable :: ex(:,:,:),tm22(:,:,:) complex(8), allocatable :: tm2(:,:) if (.not.spinpol) then write(*,*) write(*,'("Error(writetm2du): spin-polarisation must be enabled")') write(*,*) stop end if if (iscl.le.1) then write(fnum,*) write(fnum,'("Tensor moment decomposition of density matrix and Hartree-Fock & &energy")') write(fnum,'(" (see Phys. Rev. B. 81, 140403(R) (2010))")') write(fnum,'(" W.W = modulus square of tensor moment")') write(fnum,'(" Eh = Hartree energy term")') write(fnum,'(" Ex = exchange energy term")') write(fnum,'(" Pol = polarisation of density matrix")') end if if (iscl.ge.1) then write(fnum,*) write(fnum,'("+--------------------+")') write(fnum,'("| Loop number : ",I4," |")') iscl write(fnum,'("+--------------------+")') end if ! allocate arrays allocate(ex(0:2*lmaxdm,0:1,natmtot)) allocate(tm22(0:2*lmaxdm,0:1,natmtot)) allocate(tm2(-lmmaxdm:lmmaxdm,-1:1)) tm22(:,:,:)=0.d0 ex(:,:,:)=0.d0 tm2p0=0.d0 ! loop over DFT+U entries do i=1,ndftu is=idftu(1,i) l=idftu(2,i) do ia=1,natoms(is) ias=idxas(ia,is) ! write info to TMDFTU.OUT write(fnum,*) write(fnum,'("Species : ",I4," (",A,"), atom : ",I4)') is, & trim(spsymb(is)),ia write(fnum,'(" l = ",I2)') l ! zero total Hartree-Fock energy ehf=0.d0 ! zero total polarisation tm2ptot=0.d0 if (mp_mpi) write(fnum,*) do k=0,2*l do p=0,1 ! decompose density matrix in 2-index tensor moment components call dmtotm2(l,nspinor,k,p,lmmaxdm,dmatmt(:,:,:,:,ias),tm2) ! calculate modulus square of tensor moment w2=0.d0 do x=-k,k do y=-p,p w2=w2+dble((-1)**(x+y))*dble(tm2(-x,-y)*tm2(x,y)) end do end do ! potential energy components call pottm2(i,k,p,vh,vx) ! save square of tensor modulus and exchange energy tm22(k,p,ias)=w2 ex(k,p,ias)=vx*w2 ! polarisation terms call tm2pol(l,k,w2,tm2p) ! write square of tensor modulus; Hartree and exchange energy; and polarisation write(fnum,'(" k = ",I2,", p = ",I2)') k,p if ((k+p).eq.0) then ! for k,p = 0 save reference polarisation tm2p0=tm2p ! for k,p = 0 do not write out the polarisation write(fnum,'(" W.W =",F14.8,", Eh =",F14.8,", Ex =",F14.8)') w2, & vh*w2,vx*w2 else ! relative polarisation t1=tm2p/tm2p0 write(fnum,'(" W.W =",F14.8,", Eh =",F14.8,", Ex =",F14.8,& &", Pol =",F14.8)') w2,vh*w2,vx*w2,t1 ! total relative polarisation (skipping 000 component) tm2ptot=tm2ptot+t1 end if ehf=ehf+(vh+vx)*w2 write(fnum,*) do x=-k,k do y=-p,p ! write out single components of tensor moments write(fnum,'(" x = ",I2," y = ",I2," : ",2F14.8)') x,y, & tm2(x,y) end do end do write(fnum,*) end do end do write(fnum,*) write(fnum,'(" Total Hartree-Fock energy (without DC correction) : ",& &F14.8)') ehf write(fnum,'(" Total polarisation of density matrix : ",F14.8)') tm2ptot write(fnum,*) ! end loop over atoms and species end do end do call flushifc(fnum) ! write test files if required if (test) then t1=sqrt(sum(tm22(:,:,:)**2)) call writetest(820,'Norm of tensor moments',tol=1.d-4,rv=t1) t1=sqrt(sum(ex(:,:,:)**2)) call writetest(830,'Norm of DFT+U Hartree-Fock exchange energies',tol=1.d-4, & rv=t1) end if deallocate(ex,tm22,tm2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/mtdmin.f900000644002504400250440000000005012337331323016006 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mtdmin.f900000644002504400250440000000325112337331323016553 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: mtdmin ! !INTERFACE: subroutine mtdmin(is,js,dmin) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! is, js : species numbers (out,integer) ! dmin : minimum distance between muffin-tin surfaces (out,real) ! !DESCRIPTION: ! Finds the atomic species pair for which the distance between the muffin-tin ! surfaces is a minimum. This distance may be negative if the muffin-tins ! overlap. ! ! !REVISION HISTORY: ! Created October 2011 (JKD) !EOP !BOC implicit none ! arguments integer, intent(out) :: is,js real(8), intent(out) :: dmin ! local variables integer i1,i2,i3,ks,ka,ls,la real(8) v1(3),v2(3),t1,t2,t3 is=1 js=1 dmin=1.d6 do i1=-1,1 do i2=-1,1 do i3=-1,1 v1(:)=dble(i1)*avec(:,1)+dble(i2)*avec(:,2)+dble(i3)*avec(:,3) do ks=1,nspecies do ka=1,natoms(ks) v2(:)=v1(:)+atposc(:,ka,ks) do ls=1,nspecies t1=rmt(ks)+rmt(ls) do la=1,natoms(ls) if ((i1.ne.0).or.(i2.ne.0).or.(i3.ne.0).or.(ks.ne.ls).or. & (ka.ne.la)) then t2=sqrt((v2(1)-atposc(1,la,ls))**2 & +(v2(2)-atposc(2,la,ls))**2 & +(v2(3)-atposc(3,la,ls))**2) t3=t2-t1 if (t3.lt.dmin-epslat) then is=ks js=ls dmin=t3 end if end if end do end do end do end do end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/init1.f900000644002504400250440000000005012337331323015542 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/init1.f900000644002504400250440000002463112337331323016314 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: init1 ! !INTERFACE: subroutine init1 ! !USES: use modmain use moddftu use modtest use modvars ! !DESCRIPTION: ! Generates the $k$-point set and then allocates and initialises global ! variables which depend on the $k$-point set. ! ! !REVISION HISTORY: ! Created January 2004 (JKD) !EOP !BOC implicit none ! local variables logical lsym(48) integer is,ia,ias,nppt integer io,ilo,i1,i2,i3 integer ik,igk,isym,jspn integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3 real(8) vl(3),vc(3),t1 real(8) ts0,ts1 ! external functions complex(8) gauntyry external gauntyry call timesec(ts0) !---------------------! ! k-point set ! !---------------------! ! check if the system is an isolated molecule if (molecule) then ngridk(:)=1 vkloff(:)=0.d0 autokpt=.false. end if ! store the point group symmetries for reducing the k-point set if (reducek.eq.0) then nsymkpt=1 symkpt(:,:,1)=symlat(:,:,1) else lsym(:)=.false. do isym=1,nsymcrys if (reducek.eq.2) then ! check symmetry is symmorphic t1=abs(vtlsymc(1,isym))+abs(vtlsymc(2,isym))+abs(vtlsymc(3,isym)) if (t1.gt.epslat) goto 10 ! check also that the spin rotation is the same as the spatial rotation if (spinpol) then if (lspnsymc(isym).ne.lsplsymc(isym)) goto 10 end if end if lsym(lsplsymc(isym))=.true. 10 continue end do nsymkpt=0 do isym=1,nsymlat if (lsym(isym)) then nsymkpt=nsymkpt+1 symkpt(:,:,nsymkpt)=symlat(:,:,isym) end if end do end if if ((task.eq.20).or.(task.eq.21)) then ! for band structure plots generate k-points along a line call connect(bvec,nvp1d,npp1d,vvlp1d,vplp1d,dvp1d,dpp1d) nkpt=npp1d if (allocated(vkl)) deallocate(vkl) allocate(vkl(3,nkpt)) if (allocated(vkc)) deallocate(vkc) allocate(vkc(3,nkpt)) do ik=1,nkpt vkl(:,ik)=vplp1d(:,ik) call r3mv(bvec,vkl(:,ik),vkc(:,ik)) end do nkptnr=nkpt else if (task.eq.25) then ! effective mass calculation nkpt=(2*ndspem+1)**3 if (allocated(ivk)) deallocate(ivk) allocate(ivk(3,nkpt)) if (allocated(vkl)) deallocate(vkl) allocate(vkl(3,nkpt)) if (allocated(vkc)) deallocate(vkc) allocate(vkc(3,nkpt)) ! map vector to [0,1) call r3frac(epslat,vklem) ik=0 do i3=-ndspem,ndspem do i2=-ndspem,ndspem do i1=-ndspem,ndspem ik=ik+1 ivk(1,ik)=i1; ivk(2,ik)=i2; ivk(3,ik)=i3 vc(1)=dble(i1); vc(2)=dble(i2); vc(3)=dble(i3) vc(:)=vc(:)*deltaem call r3mv(binv,vc,vl) vkl(:,ik)=vklem(:)+vl(:) call r3mv(bvec,vkl(:,ik),vkc(:,ik)) end do end do end do nkptnr=nkpt else ! determine the k-point grid automatically from radkpt if required if (autokpt) then t1=radkpt/twopi ngridk(:)=int(t1*sqrt(bvec(1,:)**2+bvec(2,:)**2+bvec(3,:)**2))+1 end if ! set up the default k-point box kptboxl(:,1)=vkloff(:)/dble(ngridk(:)) if (task.eq.102) kptboxl(:,1)=0.d0 kptboxl(:,2)=kptboxl(:,1) kptboxl(:,3)=kptboxl(:,1) kptboxl(:,4)=kptboxl(:,1) kptboxl(1,2)=kptboxl(1,2)+1.d0 kptboxl(2,3)=kptboxl(2,3)+1.d0 kptboxl(3,4)=kptboxl(3,4)+1.d0 ! k-point set and box for Fermi surface plots if ((task.eq.100).or.(task.eq.101).or.(task.eq.102)) then ngridk(:)=np3d(:) if (task.ne.102) kptboxl(:,:)=vclp3d(:,:) end if ! allocate the k-point set arrays if (allocated(ikmap)) deallocate(ikmap) allocate(ikmap(0:ngridk(1)-1,0:ngridk(2)-1,0:ngridk(3)-1)) if (allocated(ikmapnr)) deallocate(ikmapnr) allocate(ikmapnr(0:ngridk(1)-1,0:ngridk(2)-1,0:ngridk(3)-1)) nkptnr=ngridk(1)*ngridk(2)*ngridk(3) if (allocated(ivk)) deallocate(ivk) allocate(ivk(3,nkptnr)) if (allocated(vkl)) deallocate(vkl) allocate(vkl(3,nkptnr)) if (allocated(vkc)) deallocate(vkc) allocate(vkc(3,nkptnr)) if (allocated(wkpt)) deallocate(wkpt) allocate(wkpt(nkptnr)) ! generate the k-point set call genppts(.false.,nsymkpt,symkpt,ngridk,nkptnr,epslat,bvec,kptboxl,nkpt, & ikmap,ikmapnr,ivk,vkl,vkc,wkpt,wkptnr) ! write to VARIABLES.OUT call writevars('nsymkpt',iv=nsymkpt) call writevars('symkpt',nv=9*nsymkpt,iva=symkpt) call writevars('ngridk',nv=3,iva=ngridk) call writevars('vkloff',nv=3,rva=vkloff) call writevars('nkpt',iv=nkpt) call writevars('ikmap',nv=nkptnr,iva=ikmap) call writevars('ivk',nv=3*nkptnr,iva=ivk) call writevars('vkl',nv=3*nkptnr,rva=vkl) call writevars('wkpt',nv=nkpt,rva=wkpt) end if ! write the k-points to test file call writetest(910,'k-points (Cartesian)',nv=3*nkpt,tol=1.d-8,rva=vkc) !---------------------! ! G+k-vectors ! !---------------------! if ((xctype(1).lt.0).or.(task.eq.5).or.(task.eq.10).or.(task.eq.205).or. & (task.eq.300)) then nppt=nkptnr else nppt=nkpt end if ! find the maximum number of G+k-vectors call findngkmax(nkpt,vkc,nspnfv,vqcss,ngvec,vgc,gkmax,ngkmax) ! allocate the G+k-vector arrays if (allocated(ngk)) deallocate(ngk) allocate(ngk(nspnfv,nppt)) if (allocated(igkig)) deallocate(igkig) allocate(igkig(ngkmax,nspnfv,nppt)) if (allocated(vgkl)) deallocate(vgkl) allocate(vgkl(3,ngkmax,nspnfv,nppt)) if (allocated(vgkc)) deallocate(vgkc) allocate(vgkc(3,ngkmax,nspnfv,nppt)) if (allocated(gkc)) deallocate(gkc) allocate(gkc(ngkmax,nspnfv,nppt)) if (allocated(tpgkc)) deallocate(tpgkc) allocate(tpgkc(2,ngkmax,nspnfv,nppt)) if (allocated(sfacgk)) deallocate(sfacgk) allocate(sfacgk(ngkmax,natmtot,nspnfv,nppt)) do ik=1,nppt do jspn=1,nspnfv vl(:)=vkl(:,ik) vc(:)=vkc(:,ik) ! spin-spiral case if (spinsprl) then if (jspn.eq.1) then vl(:)=vl(:)+0.5d0*vqlss(:) vc(:)=vc(:)+0.5d0*vqcss(:) else vl(:)=vl(:)-0.5d0*vqlss(:) vc(:)=vc(:)-0.5d0*vqcss(:) end if end if ! generate the G+k-vectors call gengkvec(ngvec,ivg,vgc,vl,vc,gkmax,ngkmax,ngk(jspn,ik), & igkig(:,jspn,ik),vgkl(:,:,jspn,ik),vgkc(:,:,jspn,ik)) ! generate the spherical coordinates of the G+k-vectors do igk=1,ngk(jspn,ik) call sphcrd(vgkc(:,igk,jspn,ik),gkc(igk,jspn,ik),tpgkc(:,igk,jspn,ik)) end do ! generate structure factors for G+k-vectors call gensfacgp(ngk(jspn,ik),vgkc(:,:,jspn,ik),ngkmax,sfacgk(:,:,jspn,ik)) end do end do ! write to VARIABLES.OUT call writevars('nspnfv',iv=nspnfv) call writevars('ngk',nv=nspnfv*nkpt,iva=ngk) do ik=1,nkpt do jspn=1,nspnfv call writevars('igkig',l=jspn,m=ik,nv=ngk(jspn,ik),iva=igkig(:,jspn,ik)) end do end do !---------------------------------! ! APWs and local-orbitals ! !---------------------------------! ! allocate linearisation energy arrays if (allocated(apwe)) deallocate(apwe) allocate(apwe(maxapword,0:lmaxapw,natmtot)) if (allocated(lorbe)) deallocate(lorbe) allocate(lorbe(maxlorbord,maxlorb,natmtot)) nlomax=0 lolmax=0 apwordmax=0 do is=1,nspecies ! find the maximum APW order do l1=0,lmaxapw apwordmax=max(apwordmax,apword(l1,is)) end do ! set the APW linearisation energies to the default do ia=1,natoms(is) ias=idxas(ia,is) do l1=0,lmaxapw do io=1,apword(l1,is) apwe(io,l1,ias)=apwe0(io,l1,is) end do end do end do ! find the maximum number of local-orbitals nlomax=max(nlomax,nlorb(is)) ! set the local-orbital linearisation energies to the default do ia=1,natoms(is) ias=idxas(ia,is) do ilo=1,nlorb(is) lolmax=max(lolmax,lorbl(ilo,is)) do io=1,lorbord(ilo,is) lorbe(io,ilo,ias)=lorbe0(io,ilo,is) end do end do end do end do lolmmax=(lolmax+1)**2 ! generate the local-orbital index call genidxlo ! allocate radial function arrays if (allocated(apwfr)) deallocate(apwfr) allocate(apwfr(nrmtmax,2,apwordmax,0:lmaxapw,natmtot)) if (allocated(apwdfr)) deallocate(apwdfr) allocate(apwdfr(apwordmax,0:lmaxapw,natmtot)) if (allocated(lofr)) deallocate(lofr) allocate(lofr(nrmtmax,2,nlomax,natmtot)) !-------------------------! ! DFT+U variables ! !-------------------------! if (dftu.ne.0) then ! allocate energy arrays to calculate Slater integrals with Yukawa potential if (allocated(fdue)) deallocate(fdue) allocate(fdue(maxapword,0:lmaxdm,natmtot)) ! allocate radial functions to calculate Slater integrals with Yukawa potential if (allocated(fdufr)) deallocate(fdufr) allocate(fdufr(nrmtmax,2,apwordmax,0:lmaxdm,natmtot)) end if !---------------------------------------! ! eigenvalue equation variables ! !---------------------------------------! ! total number of empty states (M. Meinert) nempty=nint(nempty0*natmtot*nspinor) if (nempty.lt.1) nempty=1 ! number of first-variational states nstfv=int(chgval/2.d0)+nempty+1 ! overlap and Hamiltonian matrix sizes if (allocated(nmat)) deallocate(nmat) allocate(nmat(nspnfv,nkpt)) nmatmax=0 do ik=1,nkpt do jspn=1,nspnfv nmat(jspn,ik)=ngk(jspn,ik)+nlotot if (nstfv.gt.nmat(jspn,ik)) then write(*,*) write(*,'("Error(init1): number of first-variational states larger than & &matrix size")') write(*,'("Increase rgkmax or decrease nempty")') write(*,*) stop end if nmatmax=max(nmatmax,nmat(jspn,ik)) end do end do ! number of second-variational states nstsv=nstfv*nspinor ! allocate second-variational arrays if (allocated(evalsv)) deallocate(evalsv) allocate(evalsv(nstsv,nkpt)) if (allocated(occsv)) deallocate(occsv) allocate(occsv(nstsv,nkpt)) occsv(:,:)=0.d0 ! allocate overlap and Hamiltonian integral arrays if (allocated(oalo)) deallocate(oalo) allocate(oalo(apwordmax,nlomax,natmtot)) if (allocated(ololo)) deallocate(ololo) allocate(ololo(nlomax,nlomax,natmtot)) if (allocated(haa)) deallocate(haa) allocate(haa(lmmaxvr,apwordmax,0:lmaxmat,apwordmax,0:lmaxmat,natmtot)) if (allocated(hloa)) deallocate(hloa) allocate(hloa(lmmaxvr,apwordmax,0:lmaxmat,nlomax,natmtot)) if (allocated(hlolo)) deallocate(hlolo) allocate(hlolo(lmmaxvr,nlomax,nlomax,natmtot)) ! allocate and generate complex Gaunt coefficient array if (allocated(gntyry)) deallocate(gntyry) allocate(gntyry(lmmaxmat,lmmaxvr,lmmaxmat)) do l1=0,lmaxmat do m1=-l1,l1 lm1=idxlm(l1,m1) do l2=0,lmaxvr do m2=-l2,l2 lm2=idxlm(l2,m2) do l3=0,lmaxmat do m3=-l3,l3 lm3=idxlm(l3,m3) gntyry(lm1,lm2,lm3)=gauntyry(l1,l2,l3,m1,m2,m3) end do end do end do end do end do end do ! write to VARIABLES.OUT call writevars('nempty',iv=nempty) call writevars('nstfv',iv=nstfv) call writevars('nlotot',iv=nlotot) call writevars('nstsv',iv=nstsv) call timesec(ts1) timeinit=timeinit+ts1-ts0 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/mae.f900000644002504400250440000000005012337331323015260 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mae.f900000644002504400250440000000733312337331323016032 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine mae use modmain use modmpi use modstore implicit none ! local variables integer i,im(2) real(8) v(3),th,em(2),de real(8) a(3,3),b(3,3),c(3,3) ! initialise global variables call init0 ! store original parameters avec0(:,:)=avec(:,:) spinpol0=spinpol spinorb0=spinorb cmagz0=cmagz bfieldc00(:)=bfieldc0(:) reducebf0=reducebf fsmtype0=fsmtype ptnucl0=ptnucl vkloff0(:)=vkloff(:) ! enable spin-orbit coupling spinorb=.true. ! enforce collinear magnetism in the z-direction cmagz=.true. ! no fixed spin moment calculation: the crystal is rotated instead fsmtype=0 ! if task=28 then start from atomic densities; if task=29 read STATE.OUT if (task.eq.28) then trdstate=.false. else trdstate=.true. end if ! finite nuclear radius ptnucl=.false. ! zero k-point offset vkloff(:)=0.d0 ! start with large magnetic field bfieldc0(1:2)=0.d0 bfieldc0(3)=-2.d0 ! reduce the external magnetic field after each s.c. loop reducebf=0.75d0 ! generate the spin moment directions in (theta,phi) coordinates call gentpmae ! open MAE_INFO.OUT if (mp_mpi) then open(71,file='MAE_INFO.OUT',action='WRITE',form='FORMATTED') write(71,*) write(71,'("Scale factor of spin-orbit coupling term : ",G18.10)') socscf end if im(:)=1 em(1)=1.d8 em(2)=-1.d8 ! loop over points on sphere do i=1,npmae if (mp_mpi) then write(*,'("Info(mae): fixed spin moment direction ",I6," of ",I6)') i,npmae end if ! rotate lattice vectors instead of moment (thanks to J. Glasbrenner, ! K. Bussmann and I. Mazin) ! first by -theta around the y-axis v(:)=0.d0 v(2)=1.d0 th=-tpmae(1,i) call axangrot(v,th,a) ! then by -phi around the z-axis v(:)=0.d0 v(3)=1.d0 th=-tpmae(2,i) call axangrot(v,th,b) call r3mm(b,a,c) call r3mm(c,avec0,avec) ! run the ground-state calculation call gndstate ! subsequent calculations should read the previous density trdstate=.true. ! make external magnetic field small bfieldc0=0.01d0 if (mp_mpi) then write(71,*) write(71,'("Fixed spin moment direction point ",I6," of ",I6)') i,npmae write(71,'("Spherical coordinates of direction : ",2G18.10)') tpmae(:,i) write(71,'("Calculated total moment magnitude : ",G18.10)') momtotm write(71,'("Total energy : ",G22.12)') engytot call flushifc(71) end if ! check for minimum and maximum total energy if (engytot.lt.em(1)) then em(1)=engytot im(1)=i end if if (engytot.gt.em(2)) then em(2)=engytot im(2)=i end if ! delete the eigenvector files call delevec end do ! magnetic anisotropy energy de=em(2)-em(1) if (mp_mpi) then write(71,*) write(71,'("Minimum energy point : ",I6)') im(1) write(71,'("Maximum energy point : ",I6)') im(2) write(71,*) write(71,'("Estimated magnetic anisotropy energy (MAE) : ",G18.10)') de write(71,*) write(71,'("MAE per unit volume : ",G18.10)') de/omega close(71) open(50,file='MAE.OUT',action='WRITE',form='FORMATTED') write(50,'(G18.10)') de close(50) open(50,file='MAEPUV.OUT',action='WRITE',form='FORMATTED') write(50,'(G18.10)') de/omega close(50) write(*,*) write(*,'("Info(mae):")') write(*,'(" Estimated magnetic anisotropy energy written to MAE.OUT")') write(*,'(" MAE per unit volume written to MAEPUV.OUT")') write(*,*) write(*,'(" Number of fixed spin moment directions used : ",I6)') npmae write(*,*) write(*,'(" Additional information written to MAE_INFO.OUT")') end if ! restore original input parameters avec(:,:)=avec0(:,:) spinpol=spinpol0 spinorb=spinorb0 cmagz=cmagz0 fsmtype=fsmtype0 bfieldc0(:)=bfieldc00(:) reducebf=reducebf0 ptnucl=ptnucl0 vkloff(:)=vkloff0(:) return end subroutine elk-2.3.22/src/PaxHeaders.22528/findsymsite.f900000644002504400250440000000005012337331323017054 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findsymsite.f900000644002504400250440000000164512337331323017626 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine findsymsite use modmain implicit none ! local variables integer is,js,ia,ja,ias real(8) apl(3,maxatoms,maxspecies) ! automatic arrays real(8) iea(natmmax,nspecies,48) ! allocate the site symmetry arrays if (allocated(nsymsite)) deallocate(nsymsite) allocate(nsymsite(natmtot)) if (allocated(lsplsyms)) deallocate(lsplsyms) allocate(lsplsyms(48,natmtot)) if (allocated(lspnsyms)) deallocate(lspnsyms) allocate(lspnsyms(48,natmtot)) do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) do js=1,nspecies do ja=1,natoms(js) apl(:,ja,js)=atposl(:,ja,js)-atposl(:,ia,is) end do end do call findsym(apl,apl,nsymsite(ias),lsplsyms(:,ias),lspnsyms(:,ias),iea) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/libxcifc_stub.f900000644002504400250440000000005012337331322017335 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/libxcifc_stub.f900000644002504400250440000000346512337331322020111 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. ! Stub routines for libxc. See Elk manual for libxc installation instructions. module libxcifc contains subroutine xcifc_libxc(xctype,n,c_tb09,rho,rhoup,rhodn,g2rho,g2up,g2dn,grho2, & gup2,gdn2,gupdn,tau,tauup,taudn,ex,ec,vx,vc,vxup,vxdn,vcup,vcdn,dxdg2,dxdgu2, & dxdgd2,dxdgud,dcdg2,dcdgu2,dcdgd2,dcdgud) implicit none ! mandatory arguments integer, intent(in) :: xctype(3),n ! optional arguments real(8), optional :: c_tb09 real(8), optional :: rho(n),rhoup(n),rhodn(n) real(8), optional :: g2rho(n),g2up(n),g2dn(n) real(8), optional :: grho2(n),gup2(n),gdn2(n),gupdn(n) real(8), optional :: tau(n),tauup(n),taudn(n) real(8), optional :: ex(n),ec(n),vx(n),vc(n) real(8), optional :: vxup(n),vxdn(n),vcup(n),vcdn(n) real(8), optional :: dxdg2(n),dxdgu2(n),dxdgd2(n),dxdgud(n) real(8), optional :: dcdg2(n),dcdgu2(n),dcdgd2(n),dcdgud(n) write(*,*) write(*,'("Error(libxcifc): libxc not or improperly installed")') write(*,*) stop end subroutine subroutine fxcifc_libxc(fxctype,n,rho,rhoup,rhodn,fxc,fxcuu,fxcud,fxcdd) implicit none ! mandatory arguments integer, intent(in) :: fxctype(3),n ! optional arguments real(8), optional :: rho(n),rhoup(n),rhodn(n) real(8), optional :: fxc(n),fxcuu(n),fxcud(n),fxcdd(n) write(*,*) write(*,'("Error(libxcifc): libxc not or improperly installed")') write(*,*) stop end subroutine subroutine xcdata_libxc(xctype,xcdescr,xcspin,xcgrad,hybrid,hybridc) implicit none ! arguments integer :: xctype(3) character(512) :: xcdescr integer :: xcspin integer :: xcgrad logical :: hybrid real(8) :: hybridc write(*,*) write(*,'("Error(libxcifc): libxc not or improperly installed")') write(*,*) stop end subroutine !EOC end module elk-2.3.22/src/PaxHeaders.22528/eos0000644002504400250440000000005012337331322014706 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/0000755002504400250440000000000012337331322015527 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/src/eos/PaxHeaders.22528/getedata.f900000644002504400250440000000005012337331322017061 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/getedata.f900000644002504400250440000000325012337331322017625 0ustar00dewhurstdewhurst00000000000000subroutine getedata(etype,nparam,ename,pname) ! get eos name and number of parameters implicit none ! arguments integer, intent(in) :: etype integer, intent(out) :: nparam character(256), intent(out) :: ename(2) character(256), intent(out) :: pname(*) select case(etype) case(1) ename(1)="Universal EOS" ename(2)="Vinet P et al., J. Phys.: Condens. Matter 1, p1941 (1989)" nparam=4 pname(1)="V0" pname(2)="E0" pname(3)="B0" pname(4)="B0'" case(2) ename(1)="Murnaghan EOS" ename(2)="Murnaghan F D, Am. J. Math. 49, p235 (1937)" nparam=4 pname(1)="V0" pname(2)="E0" pname(3)="B0" pname(4)="B0'" case(3) ename(1)="Birch-Murnaghan 3rd-order EOS" ename(2)="Birch F, Phys. Rev. 71, p809 (1947)" nparam=4 pname(1)="V0" pname(2)="E0" pname(3)="B0" pname(4)="B0'" case(4) ename(1)="Birch-Murnaghan 4th-order EOS" ename(2)="Birch F, Phys. Rev. 71, p809 (1947)" nparam=5 pname(1)="V0" pname(2)="E0" pname(3)="B0" pname(4)="B0'" pname(5)="B0''" case(5) ename(1)="Natural strain 3rd-order EOS" ename(2)="Poirier J-P and Tarantola A, Phys. Earth Planet Int. 109, p1 (1998)" nparam=4 pname(1)="V0" pname(2)="E0" pname(3)="B0" pname(4)="B0'" case(6) ename(1)="Natural strain 4th-order EOS" ename(2)="Poirier J-P and Tarantola A, Phys. Earth Planet Int. 109, p1 (1998)" nparam=5 pname(1)="V0" pname(2)="E0" pname(3)="B0" pname(4)="B0'" pname(5)="B0''" case(7) ename(1)="Cubic polynomial in (V-V0)" ename(2)="" nparam=4 pname(1)="V0" pname(2)="E0" pname(3)="B0" pname(4)="B0'" case default write(*,*) write(*,'("Error(getedata): etype not defined : ",I4)') etype write(*,*) stop end select return end subroutine elk-2.3.22/src/eos/PaxHeaders.22528/Makefile0000644002504400250440000000005012337331322016423 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/Makefile0000644002504400250440000000131012337331322017162 0ustar00dewhurstdewhurst00000000000000 include ../../make.inc #------------------------------------------------------------------------------- # Suffix rules #------------------------------------------------------------------------------- .SUFFIXES: .o .f90 .f90.o: $(F90) $(F90_OPTS) -c $< #------------------------------------------------------------------------------- # Source files #------------------------------------------------------------------------------- SRC = modmain.f90 eos.f90 eveos.f90 pveos.f90 readinput.f90 getedata.f90 \ fitdata.f90 output.f90 minf_nm.f90 fmin_nm.f90 OBJ = $(SRC:.f90=.o) EXE = eos eos: $(OBJ) $(F90) $(F90_OPTS) -o $(EXE) $(OBJ) clean: rm -f *.o *.mod *~ fort.* ifc* *.gcno *.OUT gmon.out $(EXE) elk-2.3.22/src/eos/PaxHeaders.22528/minf_nm.f900000644002504400250440000000005012337331322016726 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/minf_nm.f900000644002504400250440000000376612337331322017506 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst and D. W. H. Rankin. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine minf_nm(n,x,maxit,iter,eps) implicit none ! arguments integer, intent(in) :: n real(8), intent(inout) :: x(n,n+1) integer, intent(in) :: maxit integer, intent(out) :: iter real(8), intent(in) :: eps ! local variables integer i,j,il,iu ! Nelder-Mead parmeters real(8), parameter :: alpha=1.d0 real(8), parameter :: gamma=2.d0 real(8), parameter :: beta=0.5d0 real(8), parameter :: sigma=0.5d0 real(8) fr,fe,fc,sum,t1 ! automatic arrays real(8) f(n+1),xm(n),xr(n),xe(n),xc(n) ! external functions real(8) fmin_nm external fmin_nm if (n.lt.0) then write(*,*) write(*,'("Error(minf_nm): n <= 0 : ",I8)') n write(*,*) stop end if ! evaluate the function at each vertex do i=1,n+1 f(i)=fmin_nm(x(1,i)) end do iter=0 10 continue iter=iter+1 if (iter.ge.maxit) return ! find the lowest and highest vertex il=1 iu=1 do i=2,n+1 if (f(i).lt.f(il)) il=i if (f(i).gt.f(iu)) iu=i end do ! check for convergence if ((f(iu)-f(il)).lt.eps) return ! compute the mean of the n lowest vertices t1=1.d0/dble(n) do i=1,n sum=0.d0 do j=1,iu-1 sum=sum+x(i,j) end do do j=iu+1,n+1 sum=sum+x(i,j) end do xm(i)=t1*sum end do xr(:)=xm(:)+alpha*(xm(:)-x(:,iu)) fr=fmin_nm(xr) if (f(il).gt.fr) goto 30 if ((f(il).le.fr).and.(fr.lt.f(iu))) then ! reflection x(:,iu)=xr(:) f(iu)=fr goto 10 else goto 40 end if 30 continue xe(:)=xm(:)+gamma*(xr(:)-xm(:)) fe=fmin_nm(xe) if (fr.gt.fe) then ! expansion x(:,iu)=xe(:) f(iu)=fe else ! reflection x(:,iu)=xr(:) f(iu)=fr end if goto 10 40 continue xc(:)=xm(:)+beta*(x(:,iu)-xm(:)) fc=fmin_nm(xc) if (fc.lt.f(iu)) then ! contraction x(:,iu)=xc(:) f(iu)=fc goto 10 end if ! shrinkage do j=1,il-1 x(:,j)=x(:,il)+sigma*(x(:,j)-x(:,il)) f(j)=fmin_nm(x(1,j)) end do do j=il+1,n+1 x(:,j)=x(:,il)+sigma*(x(:,j)-x(:,il)) f(j)=fmin_nm(x(1,j)) end do goto 10 return end subroutine elk-2.3.22/src/eos/PaxHeaders.22528/fmin_nm.f900000644002504400250440000000005012337331322016726 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/fmin_nm.f900000644002504400250440000000074612337331322017501 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. real(8) function fmin_nm(x) use modmain implicit none ! arguments real(8), intent(in) :: x ! local variables integer i real(8) sum ! external functions real(8) eveos external eveos sum=0.d0 do i=1,nevpt sum=sum+(eveos(etype,x,vpt(i))-ept(i))**2 end do fmin_nm=sum return end function elk-2.3.22/src/eos/PaxHeaders.22528/README0000644002504400250440000000005012337331322015643 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/README0000644002504400250440000000254412337331322016414 0ustar00dewhurstdewhurst00000000000000 +---------------------------+ | EOS Version 1.4.0 | +---------------------------+ Equation of state (EOS) program for fitting energy-volume data. The following variables are set in the file eos.in: cname : name of crystal up to 256 characters natoms : number of atoms in unit cell etype : equation of state type (see below) vplt1, vplt2, nvplt : volume interval over which to plot energy, pressure etc. as well as the number of points in the plot nevpt : number of energy-volume points to be inputted vpt(i) ept(i) : energy-volume points (atomic units) Note that the input units are atomic - Bohr and Hartree (NOT Rydbergs). The equations of state currently implemented are: 1. Universal EOS (Vinet P et al., J. Phys.: Condens. Matter 1, p1941 (1989)) 2. Murnaghan EOS (Murnaghan F D, Am. J. Math. 49, p235 (1937)) 3. Birch-Murnaghan 3rd-order EOS (Birch F, Phys. Rev. 71, p809 (1947)) 4. Birch-Murnaghan 4th-order EOS 5. Natural strain 3rd-order EOS (Poirier J-P and Tarantola A, Phys. Earth Planet Int. 109, p1 (1998)) 6. Natural strain 4th-order EOS 7. Cubic polynomial in (V-V0) -------------------------------------------------------------------------------- J. K. Dewhurst August 2005 elk-2.3.22/src/eos/PaxHeaders.22528/eos.f900000644002504400250440000000005012337331322016071 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/eos.f900000644002504400250440000000051712337331322016640 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. program eos use modmain implicit none call readinput call getedata(etype,nparam,ename,pname) call fitdata call output stop end program elk-2.3.22/src/eos/PaxHeaders.22528/fitdata.f900000644002504400250440000000005012337331322016717 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/fitdata.f900000644002504400250440000000173212337331322017466 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine fitdata use modmain implicit none ! local variables integer, parameter :: maxit=1000000 integer i,iter real(8), parameter :: eps=1.d-14 ! automatic arrays real(8) x(nparam,nparam+1) ! initial guess: it is assumed that param(1)=V0, param(2)=E0 and param(3)=B0 x(:,1)=0.d0 x(1,1)=vpt(1) x(2,1)=ept(1) x(3,1)=0.003d0 ! fit V0 and E0 do i=1,nparam x(:,i+1)=x(:,1) end do x(1,2)=x(1,2)+1.d0 x(2,3)=x(2,3)+0.1d0 call minf_nm(nparam,x,maxit,iter,eps) ! fit V0, E0 and B0 do i=1,nparam x(:,i+1)=x(:,1) end do x(1,2)=x(1,2)+1.d0 x(2,3)=x(2,3)+0.1d0 x(3,4)=x(3,4)+0.001d0 call minf_nm(nparam,x,maxit,iter,eps) ! fit everything do i=1,nparam x(:,i+1)=x(:,1) x(i,i+1)=x(i,i+1)+0.1d0 end do call minf_nm(nparam,x,maxit,iter,eps) popt(1:nparam)=x(1:nparam,1) return end subroutine elk-2.3.22/src/eos/PaxHeaders.22528/eos.in0000644002504400250440000000005012337331322016101 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/eos.in0000644002504400250440000000063512337331322016651 0ustar00dewhurstdewhurst00000000000000 "Silicon" : cname 2 : natoms 1 : etype 140.0 450.0 1000 : vplt1, vplt2, nvplt 8 : nevpt 165.8207473 -578.0660968 196.8383062 -578.1728409 231.5010189 -578.2305598 270.0113940 -578.2548962 312.5719400 -578.2566194 359.3851654 -578.2453281 410.6535788 -578.2253154 466.5796888 -578.2028836 elk-2.3.22/src/eos/PaxHeaders.22528/modmain.f900000644002504400250440000000005012337331322016727 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/modmain.f900000644002504400250440000000276112337331322017501 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modmain ! crystal name character(256) cname ! number of atoms integer natoms ! EOS type integer etype ! number of volume points to plot integer nvplt ! volume plot range real(8) vplt1,vplt2 ! number of energy data points to fit integer nevpt ! volume and energy data point sets real(8), allocatable :: vpt(:) real(8), allocatable :: ept(:) ! maximum number of parameters for an EOS integer, parameter :: maxparam=100 ! number of parameters integer nparam ! EOS name character(256) ename(2) ! optimized parameter set real(8) popt(maxparam) ! parameter names character(256) pname(maxparam) !-----------------------------! ! numerical constants ! !-----------------------------! real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: twopi=6.2831853071795864769d0 ! CODATA 2006 constants ! Bohr in SI units real(8), parameter :: bohr_si=0.52917720859d-10 ! electron mass in SI units real(8), parameter :: emass_si=9.10938215d-31 ! atomic unit of time in SI units real(8), parameter :: autime_si=2.418884326505d-17 ! atomic pressure unit in GPa real(8), parameter :: aupress_gpa=1.d-9*emass_si/(bohr_si*autime_si**2) !---------------------------------! ! miscellaneous variables ! !---------------------------------! ! code version integer version(3) data version /1,4,0/ end module elk-2.3.22/src/eos/PaxHeaders.22528/pveos.f900000644002504400250440000000005012337331322016437 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/pveos.f900000644002504400250440000000066012337331322017205 0ustar00dewhurstdewhurst00000000000000real(8) function pveos(etype,param,v) ! pressure-volume equation of state function implicit none ! arguments integer, intent(in) :: etype real(8), intent(in) :: param(*) real(8), intent(in) :: v ! local variables real(8) vm,vp,pm,pp,dv ! external functions real(8) eveos external eveos ! use central differences dv=1.d-3 vm=v-dv vp=v+dv pm=eveos(etype,param,vm) pp=eveos(etype,param,vp) pveos=-(pp-pm)/(2.d0*dv) return end function elk-2.3.22/src/eos/PaxHeaders.22528/eveos.f900000644002504400250440000000005012337331322016424 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/eveos.f900000644002504400250440000000455512337331322017201 0ustar00dewhurstdewhurst00000000000000real(8) function eveos(etype,param,v) implicit none ! arguments integer, intent(in) :: etype real(8), intent(in) :: param(*) real(8), intent(in) :: v ! local variables real(8) v0,e0,b0,b0p,b0pp real(8) t1,t2,t3,t4,t5,t6,t7 eveos=0.d0 select case(etype) case(1) ! Universal equation of state v0=param(1) e0=param(2) b0=param(3) b0p=param(4) if (v0.lt.1.d-5) v0=1.d-5 if (abs(b0p-1.d0).lt.1.d-5) b0p=b0p+1.d-5 t1=b0*v0 t2=b0p-1.d0 t3=(v/v0)**(1.d0/3.d0) t4=exp(-3.d0/2.d0*t2*(-1.d0+t3)) t5=t2**2 t6=1.d0/t5 eveos=-2.d0*t1*t4*(3.d0*t3*b0p-3.d0*t3+5.d0-3.d0*b0p)*t6+4.d0*t1*t6+e0 case(2) ! Murnaghan equation of state v0=param(1) e0=param(2) b0=param(3) b0p=param(4) if (v0.lt.1.d-5) v0=1.d-5 if (abs(b0p).lt.1.d-5) b0p=1.d-5 if (abs(b0p-1.d0).lt.1.d-5) b0p=b0p+1.d-5 t1=(v0/v)**b0p t2=1.d0/(b0p-1.d0) eveos=b0*(b0p-1.d0+t1)/b0p*t2*v-b0*v0*t2+e0 case(3) ! Birch-Murnaghan third-order equation of state v0=param(1) e0=param(2) b0=param(3) b0p=param(4) if (v0.lt.1.d-5) v0=1.d-5 t1=(v0/v)**(1.d0/3.d0) t2=t1**2 t3=t2-1.d0 eveos=9.d0/8.d0*b0*v0*t3**2*(b0p*t3/2.d0-2.d0*t2+3.d0)+e0 case(4) ! Birch-Murnaghan fourth-order equation of state v0=param(1) e0=param(2) b0=param(3) b0p=param(4) b0pp=param(5) if (v0.lt.1.d-5) v0=1.d-5 t1=(v0/v)**(1.d0/3.d0) t2=t1**2 t3=t2-1.d0 t4=t3**2/4.d0 t5=b0p**2 eveos=3.d0/8.d0*b0*v0*t4*(9.d0*t4*b0*b0pp+9.d0*t4*t5-63.d0*t4*b0p+143.d0*t4 & +6.d0*b0p*t3-24.d0*t2+36.d0)+e0 case(5) ! Natural strain third-order equation of state v0=param(1) e0=param(2) b0=param(3) b0p=param(4) if (v0.lt.1.d-5) v0=1.d-5 t1=b0*v0 t2=log(v0/v) t3=t2**2 t4=t3*t2 eveos=t1*t3/2.d0+t1*t4*b0p/6.d0-t1*t4/3.d0+e0 case(6) ! Natural strain fourth-order equation of state v0=param(1) e0=param(2) b0=param(3) b0p=param(4) b0pp=param(5) if (v0.lt.1.d-5) v0=1.d-5 t1=b0*v0 t2=log(v0/v) t3=t2**2 t4=t3**2 t5=b0**2 t6=b0p**2 t7=t3*t2 eveos=t1*t4/8.d0+t5*v0*t4*b0pp/24.d0-t1*t4*b0p/8.d0+t1*t4*t6/24.d0 & +t1*t7*b0p/6.d0-t1*t7/3.d0+t1*t3/2.d0+e0 case(7) ! cubic polynomial v0=param(1) e0=param(2) b0=param(3) b0p=param(4) if (v0.lt.1.d-5) v0=1.d-5 t1=v0**2 t2=v0-v t3=t2**2 eveos=(1.d0+b0p)*b0/t1*t3*t2/6.d0+b0/v0*t3/2.d0+e0 case default write(*,*) write(*,'("Error(eveos): etype not defined : ",I4)') etype write(*,*) stop end select return end function elk-2.3.22/src/eos/PaxHeaders.22528/output.f900000644002504400250440000000005012337331322016643 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/output.f900000644002504400250440000000505512337331322017414 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine output use modmain implicit none ! local variables integer ip,ipt,iplt real(8) v ! external functions real(8) eveos,pveos external eveos,pveos ! output parameters open(60,file='PARAM.OUT') write(60,*) write(60,'(A)') trim(cname) write(60,*) write(60,'(A)') trim(ename(1)) write(60,'(A)') trim(ename(2)) write(60,*) write(60,'("(Default units are atomic: Hartree, Bohr etc.) ")') write(60,*) do ip=1,nparam write(60,'(" ",A,T20,"=",T30,G18.10)') trim(pname(ip)),popt(ip) end do write(60,*) do ip=1,nparam if (trim(pname(ip)).eq."B0") then write(60,'(" B0 (GPa)",T20,"=",T30,G18.10)') popt(ip)*aupress_gpa end if if (trim(pname(ip)).eq."B0''") then write(60,'(A4," (/GPa)",T20,"=",T30,G18.10)') "B0''",popt(ip)/aupress_gpa end if end do write(60,*) close(60) ! output energy vs volume per atom at data points open(60,file='EVPAP.OUT') do ipt=1,nevpt write(60,*) vpt(ipt)/dble(natoms),ept(ipt)/dble(natoms) end do close(60) ! output energy vs volume per atom over volume interval open(60,file='EVPAI.OUT') do iplt=1,nvplt v=(vplt2-vplt1)*dble(iplt)/dble(nvplt)+vplt1 write(60,*) v/dble(natoms),eveos(etype,popt,v)/dble(natoms) end do close(60) ! output pressure vs volume per atom at data points open(60,file='PVPAP.OUT') do ipt=1,nevpt write(60,*) vpt(ipt)/dble(natoms),pveos(etype,popt,vpt(ipt))*aupress_gpa end do close(60) ! output pressure vs volume per atom over volume interval open(60,file='PVPAI.OUT') do iplt=1,nvplt v=(vplt2-vplt1)*dble(iplt)/dble(nvplt)+vplt1 write(60,*) v/dble(natoms),pveos(etype,popt,v)*aupress_gpa end do close(60) ! output enthalpy vs pressure per atom over volume interval open(60,file='HPPAI.OUT') do iplt=1,nvplt v=(vplt2-vplt1)*dble(iplt)/dble(nvplt)+vplt1 write(60,*) pveos(etype,popt,v)*aupress_gpa, & (eveos(etype,popt,v)+pveos(etype,popt,v)*v)/dble(natoms) end do close(60) write(*,*) write(*,'("All units are atomic unless otherwise stated")') write(*,'("EOS parameters written to PARAM.OUT")') write(*,'("Energy-volume per atom at data points written to EVPAP.OUT")') write(*,'("Energy-volume per atom over interval written to EVPAI.OUT")') write(*,'("Pressure(GPa)-volume per atom at data points written to PVPAP.OUT")') write(*,'("Pressure(GPa)-volume per atom over interval written to PVPAI.OUT")') write(*,'("Enthalpy-pressure(GPa) per atom over interval written to HPPAI.OUT")') write(*,*) return end subroutine elk-2.3.22/src/eos/PaxHeaders.22528/readinput.f900000644002504400250440000000005012337331322017276 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/eos/readinput.f900000644002504400250440000000144012337331322020041 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readinput use modmain implicit none ! local variables integer ipt open(50,file='eos.in',action='READ',status='OLD',form='FORMATTED') read(50,*) cname read(50,*) natoms if (natoms.le.0) then write(*,*) write(*,'("Error(readinput): natoms <= 0 : ",I8)') natoms write(*,*) stop end if read(50,*) etype read(50,*) vplt1,vplt2,nvplt read(50,*) nevpt if (nevpt.le.0) then write(*,*) write(*,'("Error(readinput): nevpt <= 0 : ",I8)') nevpt write(*,*) stop end if allocate(vpt(nevpt),ept(nevpt)) do ipt=1,nevpt read(50,*) vpt(ipt),ept(ipt) end do close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/genylmg.f900000644002504400250440000000005012337331323016160 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genylmg.f900000644002504400250440000000143212337331323016724 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genylmg ! !INTERFACE: subroutine genylmg ! !USES: use modmain ! !DESCRIPTION: ! Generates a set of spherical harmonics, $Y_{lm}(\hat{\bf G})$, with angular ! momenta up to {\tt lmaxvr} for the set of ${\bf G}$-vectors. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! local variables integer ig real(8) r,tp(2) ! allocate global G-vector spherical harmonic array if (allocated(ylmg)) deallocate(ylmg) allocate(ylmg(lmmaxvr,ngvec)) do ig=1,ngvec call sphcrd(vgc(:,ig),r,tp) call genylm(lmaxvr,tp,ylmg(:,ig)) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/getevecsv.f900000644002504400250440000000005012337331323016511 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/getevecsv.f900000644002504400250440000000360512337331323017261 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getevecsv(vpl,evecsv) use modmain implicit none ! arguments real(8), intent(in) :: vpl(3) complex(8), intent(out) :: evecsv(nstsv,nstsv) ! local variables integer isym,lspn,ik,ist,i integer recl,nstsv_ real(8) vkl_(3),det,v(3),th,t1 complex(8) su2(2,2),z1,z2 ! find the k-point number call findkpt(vpl,isym,ik) ! find the record length inquire(iolength=recl) vkl_,nstsv_,evecsv !$OMP CRITICAL open(70,file=trim(scrpath)//'EVECSV'//trim(filext),action='READ', & form='UNFORMATTED',access='DIRECT',recl=recl) read(70,rec=ik) vkl_,nstsv_,evecsv close(70) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getevecsv): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" EVECSV.OUT : ",3G18.10)') vkl_ write(*,*) stop end if if (nstsv.ne.nstsv_) then write(*,*) write(*,'("Error(getevecsv): differing nstsv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstsv write(*,'(" EVECSV.OUT : ",I8)') nstsv_ write(*,*) stop end if ! if eigenvectors are spin-unpolarised return if (.not.spinpol) return ! index to global spin rotation in lattice point group lspn=lspnsymc(isym) ! if symmetry element is the identity return if (lspn.eq.1) return ! find the SU(2) representation of the spin rotation matrix call rotaxang(epslat,symlatc(:,:,lspn),det,v,th) call axangsu2(v,th,su2) ! apply SU(2) matrix to second-variational states (active transformation) do i=1,nstsv do ist=1,nstfv z1=evecsv(ist,i) z2=evecsv(ist+nstfv,i) evecsv(ist,i)=su2(1,1)*z1+su2(1,2)*z2 evecsv(ist+nstfv,i)=su2(2,1)*z1+su2(2,2)*z2 end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmdtsdn.f900000644002504400250440000000005012337331324016336 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmdtsdn.f900000644002504400250440000000163212337331324017104 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 T. Baldsiefen, S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rdmdtsdn ! !INTERFACE: subroutine rdmdtsdn(dedn) ! !USES: use modmain use modrdm ! !INPUT/OUTPUT PARAMETERS: ! dedn : energy derivative (inout,real(nstsv,nkpt)) ! !DESCRIPTION: ! Calculates the derivative of the entropic contribution to the free energy ! w.r.t. occupation numbers and adds it to the total. ! ! !REVISION HISTORY: ! Created 2008 (Baldsiefen) !EOP !BOC implicit none ! arguments real(8), intent(inout) :: dedn(nstsv,nkpt) ! local variables integer ik,ist real(8) t1 do ik=1,nkpt do ist=1,nstsv t1=max(occsv(ist,ik),epsocc) t1=min(t1,occmax-epsocc) dedn(ist,ik)=dedn(ist,ik)-rdmtemp*kboltz*log(t1/(occmax-t1)) end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writeftm.f900000644002504400250440000000005012337331324016360 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writeftm.f900000644002504400250440000000311012337331324017117 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writeftm use modmain use moddftu implicit none ! local variables integer is,ia,ias,i integer l,n,k,p,r,t,x,y ! allocatable arrays complex(8), allocatable :: tm2(:,:),tm3(:) allocate(tm2(-lmmaxdm:lmmaxdm,-1:1),tm3(-lmmaxdm:lmmaxdm)) ! open FTM.OUT open(50,file='FTM.OUT',action='WRITE',form='FORMATTED') do i=1,ntmfix is=itmfix(1,i) ia=itmfix(2,i) ias=idxas(ia,is) l=itmfix(3,i) n=itmfix(4,i) k=itmfix(5,i) p=itmfix(6,i) write(50,*) write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is,trim(spsymb(is)),ia write(50,'(" l = ",I2,", n = ",I2)') l,n if (n.eq.2) then x=itmfix(7,i) y=itmfix(8,i) write(50,'(" k = ",I2,", p = ",I2,", x = ",I2,", y = ",I2)') k,p,x,y ! decompose density matrix in 2-index tensor moment components call dmtotm2(l,nspinor,k,p,lmmaxdm,dmatmt(:,:,:,:,ias),tm2) write(50,'(" tensor moment")') write(50,'(" current : ",2G18.10)') tm2(x,y) write(50,'(" target : ",2G18.10)') tmfix(i) else r=itmfix(7,i) t=itmfix(8,i) write(50,'(" k = ",I2,", p = ",I2,", r = ",I2,", t = ",I2)') k,p,r,t ! decompose density matrix in 3-index tensor moment components call dmtotm3(l,nspinor,k,p,r,lmmaxdm,dmatmt(:,:,:,:,ias),tm3) write(50,'(" tensor moment")') write(50,'(" current : ",2G18.10)') tm3(t) write(50,'(" target : ",2G18.10)') tmfix(i) end if end do close(50) deallocate(tm2,tm3) return end subroutine elk-2.3.22/src/PaxHeaders.22528/fyukawa0.f900000644002504400250440000000005012337331324016246 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/fyukawa0.f900000644002504400250440000000357312337331324017022 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: fyukawa0 ! !INTERFACE: real(8) function fyukawa0(is,l1,k) ! !USES: use modmain use moddftu ! !INPUT/OUTPUT PARAMETERS: ! is : species type (in,integer) ! l : an angular momentum (in,integer) ! k : order of Slater parameter (in,integer) ! !DESCRIPTION: ! Calculates the Slater parameters in the unscreened case. See {\it Phys. Rev. ! B} {\bf 52}, 1421 (1995) and {\it Phys. Rev. B} {\bf 80}, 035121 (2009). ! ! !REVISION HISTORY: ! Created April 2008 (LN) ! Modified and tested July 2008 (LN and FC) !EOP !BOC implicit none ! arguments integer, intent(in) :: is integer, intent(in) :: l1 integer, intent(in) :: k ! local variables integer, parameter :: nstart=1 integer ir,nr,ias,io integer ir1,ir2,nr1,nr2 real(8) r2,x ! automatic arrays real(8) clow(nrmtmax),chigh(nrmtmax) real(8) blow(nrmtmax),bhigh(nrmtmax),fint(nrmtmax) real(8) bint(nrmtmax),cint(nrmtmax) ! allocatable arrays real(8), allocatable :: a(:,:),b(:,:) ias=idxas(1,is) io=1 nr=nrmt(is) allocate(a(0:k,nr),b(0:k,nr)) a(:,:)=0.d0 b(:,:)=0.d0 ! calculate unscreened Slater parameters do ir=1,nr r2=spr(ir,is)**2 bint(ir)=fdufr(ir,1,io,l1,ias)*fdufr(ir,1,io,l1,ias)*r2 x=spr(ir,is)**k a(k,ir)=x b(k,ir)=1.d0/(x*spr(ir,is)) end do do ir=nstart,nr nr1=ir-nstart+1 nr2=nr-ir+1 do ir1=1,nr1 ir2=ir1+nstart-1 blow(ir1)=bint(ir2)*a(k,ir2) end do call fderiv(-1,nr1,spr(nstart,is),blow,clow) do ir1=1,nr2 ir2=ir1+ir-1 bhigh(ir1)=bint(ir2)*b(k,ir2) end do call fderiv(-1,nr2,spr(ir,is),bhigh,chigh) cint(ir-nstart+1)=bint(ir)*(b(k,ir)*clow(nr1)+a(k,ir)*chigh(nr2)) end do nr1=nr-nstart+1 call fderiv(-1,nr1,spr(nstart,is),cint,fint) fyukawa0=fint(nr1) deallocate(a,b) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/ggair_sp_2a.f900000644002504400250440000000005012337331323016673 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggair_sp_2a.f900000644002504400250440000000475112337331323017446 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggair_sp_2a ! !INTERFACE: subroutine ggair_sp_2a(rhoup,rhodn,g2up,g2dn,gvup,gvdn,gup2,gdn2,gupdn) ! !USES: use modmain ! !DESCRIPTION: ! Computes the interstitial gradients $\nabla^2\rho^{\uparrow}$, ! $\nabla^2\rho^{\downarrow}$, $\nabla\rho^{\uparrow}$, ! $\nabla\rho^{\downarrow}$, $(\nabla\rho^{\uparrow})^2$, ! $(\nabla\rho^{\downarrow})^2$ and ! $\nabla\rho^{\uparrow}\cdot\nabla\rho^{\downarrow}$. These are used for GGA ! functionals of type 2 and meta-GGA. See {\tt ggamt\_sp\_2a} for details. ! ! !REVISION HISTORY: ! Created November 2009 (JKD and TMcQ) !EOP !BOC implicit none ! arguments real(8), intent(in) :: rhoup(ngtot) real(8), intent(in) :: rhodn(ngtot) real(8), intent(out) :: g2up(ngtot) real(8), intent(out) :: g2dn(ngtot) real(8), intent(out) :: gvup(ngtot,3) real(8), intent(out) :: gvdn(ngtot,3) real(8), intent(out) :: gup2(ngtot) real(8), intent(out) :: gdn2(ngtot) real(8), intent(out) :: gupdn(ngtot) ! local variables integer ig,ifg,i ! allocatable arrays complex(8), allocatable :: zfft1(:),zfft2(:) allocate(zfft1(ngtot),zfft2(ngtot)) !----------------! ! rho up ! !----------------! zfft1(:)=rhoup(:) call zfftifc(3,ngridg,-1,zfft1) ! compute grad^2 rhoup zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=-(gc(ig)**2)*zfft1(ifg) end do call zfftifc(3,ngridg,1,zfft2) g2up(:)=dble(zfft2(:)) ! grad rhoup do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) gvup(:,i)=dble(zfft2(:)) end do ! (grad rhoup)^2 gup2(:)=gvup(:,1)**2+gvup(:,2)**2+gvup(:,3)**2 !------------------! ! rho down ! !------------------! zfft1(:)=rhodn(:) call zfftifc(3,ngridg,-1,zfft1) ! compute grad^2 rhodn zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=-(gc(ig)**2)*zfft1(ifg) end do call zfftifc(3,ngridg,1,zfft2) g2dn(:)=dble(zfft2(:)) ! grad rhodn do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) gvdn(:,i)=dble(zfft2(:)) end do ! (grad rhodn)^2 gdn2(:)=gvdn(:,1)**2+gvdn(:,2)**2+gvdn(:,3)**2 ! (grad rhoup).(grad rhodn) gupdn(:)=gvup(:,1)*gvdn(:,1)+gvup(:,2)*gvdn(:,2)+gvup(:,3)*gvdn(:,3) deallocate(zfft1,zfft2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/ylmroty.f900000644002504400250440000000005012337331323016235 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ylmroty.f900000644002504400250440000000417612337331323017011 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: ylmroty ! !INTERFACE: subroutine ylmroty(beta,lmax,ld,dy) ! !INPUT/OUTPUT PARAMETERS: ! beta : rotation angle about y-axis (in,real) ! lmax : maximum angular momentum (in,integer) ! ld : leading dimension (in,integer) ! dy : rotation matrix for complex spherical harmonics (out,real(ld,*)) ! !DESCRIPTION: ! Returns the rotation matrix in the basis of complex spherical harmonics for ! a rotation of angle $\beta$ about the $y$-axis. This matrix is real and is ! given by the formula ! \begin{align*} ! d^l_{m_1m_2}(\beta)=&[(l+m_1)!(l-m_1)!(l+m_2)!(l-m_2)!]^{1/2}\\ ! &\times\sum_k(-1)^k\frac{\left(\cos\frac{\beta}{2}\right)^{2(l-k)-m_2+m_1} ! \left(\sin\frac{\beta}{2}\right)^{2k+m_2-m_1}} ! {k!(l+m_1-k)!(l-m_2-k)!(m_2-m_1+k)!}, ! \end{align*} ! where $k$ runs through all integer values for which the factorials exist. ! ! !REVISION HISTORY: ! Created December 2008 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: beta integer, intent(in) :: lmax integer, intent(in) :: ld real(8), intent(out) :: dy(ld,*) ! local variables integer j,k,l,m1,m2,lm1,lm2 real(8) cb,sb,sum,t1,t2 ! external functions real(8) factnm external factnm cb=cos(beta/2.d0) sb=sin(beta/2.d0) lm1=0 do l=0,lmax ! generate rotation operator for m-components of current l do m1=-l,l lm1=lm1+1 lm2=l**2 do m2=-l,l lm2=lm2+1 sum=0.d0 do k=0,min(l+m1,l-m2) if (((l+m1-k).ge.0).and.((l-m2-k).ge.0).and.((m2-m1+k).ge.0)) then j=2*(l-k)+m1-m2 t1=1.d0 if (j.ne.0) t1=t1*cb**j j=2*k+m2-m1 if (j.ne.0) t1=t1*sb**j t2=t1/(factnm(k,1)*factnm(l+m1-k,1)*factnm(l-m2-k,1) & *factnm(m2-m1+k,1)) if (mod(k,2).ne.0) t2=-t2 sum=sum+t2 end if end do t1=sqrt(factnm(l+m1,1)*factnm(l-m1,1)*factnm(l+m2,1)*factnm(l-m2,1)) dy(lm1,lm2)=t1*sum end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gengvsmt.f900000644002504400250440000000005012337331324016351 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gengvsmt.f900000644002504400250440000000136012337331324017115 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gengvsmt use modmain use modphonon implicit none ! local variables integer nr,nri ! allocatable arrays complex(8), allocatable :: zfmt(:,:),gzfmt(:,:,:) allocate(zfmt(lmmaxvr,nrmtmax),gzfmt(lmmaxvr,nrmtmax,3)) nr=nrmt(isph) nri=nrmtinr(isph) ! convert potential to complex spherical harmonics call rtozfmt(nr,nri,1,vsmt(:,:,iasph),1,zfmt) ! calculate the gradient call gradzfmt(nr,nri,spr(:,isph),zfmt,nrmtmax,gzfmt) ! copy current polarisation component to global array gvsmt(:,1:nr)=gzfmt(:,1:nr,ipph) deallocate(zfmt,gzfmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/nfftifc.f900000644002504400250440000000005012337331323016135 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/nfftifc.f900000644002504400250440000000206112337331323016700 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: nfftifc ! !INTERFACE: subroutine nfftifc(n) ! !INPUT/OUTPUT PARAMETERS: ! n : required/avalable grid size (inout,integer) ! !DESCRIPTION: ! Interface to the grid requirements of the fast Fourier transform routine. ! Most routines restrict $n$ to specific prime factorisations. This routine ! returns the next largest grid size allowed by the FFT routine. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(inout) :: n ! local variables integer i,j ! currently we use primes 2, 3 and 5 integer, parameter :: np=3 integer p(np) data p / 2,3,5 / if (n.le.0) then write(*,*) write(*,'("Error(nfftifc): n <= 0 : ",I8)') n write(*,*) stop end if 10 continue i=n do j=1,np do while(mod(i,p(j)).eq.0) i=i/p(j) end do end do if (i.ne.1) then n=n+1 goto 10 end if end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rhoplot.f900000644002504400250440000000005012337331323016205 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rhoplot.f900000644002504400250440000000254512337331323016757 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rhoplot ! !INTERFACE: subroutine rhoplot ! !USES: use modmain ! !DESCRIPTION: ! Outputs the charge density, read in from {\tt STATE.OUT}, for 1D, 2D or 3D ! plotting. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! initialise universal variables call init0 ! read density from file call readstate ! write the density plot to file select case(task) case(31) open(50,file='RHO1D.OUT',action='WRITE',form='FORMATTED') open(51,file='RHOLINES.OUT',action='WRITE',form='FORMATTED') call plot1d(50,51,1,rhomt,rhoir) close(50) close(51) write(*,*) write(*,'("Info(rhoplot):")') write(*,'(" 1D density plot written to RHO1D.OUT")') write(*,'(" vertex location lines written to RHOLINES.OUT")') case(32) open(50,file='RHO2D.OUT',action='WRITE',form='FORMATTED') call plot2d(50,1,rhomt,rhoir) close(50) write(*,*) write(*,'("Info(rhoplot): 2D density plot written to RHO2D.OUT")') case(33) open(50,file='RHO3D.OUT',action='WRITE',form='FORMATTED') call plot3d(50,1,rhomt,rhoir) close(50) write(*,*) write(*,'("Info(rhoplot): 3D density plot written to RHO3D.OUT")') end select return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hmlistl.f900000644002504400250440000000005012337331323016172 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/hmlistl.f900000644002504400250440000000331112337331323016734 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: hmlistl ! !INTERFACE: subroutine hmlistl(ngp,igpig,vgpc,ld,h) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ngp : number of G+p-vectors (in,integer) ! igpig : index from G+p-vectors to G-vectors (in,integer(ngkmax)) ! vgpc : G+p-vectors in Cartesian coordinates (in,real(3,ngkmax)) ! ld : leading dimension of h (in,integer) ! h : Hamiltonian matrix (inout,complex(*)) ! !DESCRIPTION: ! Computes the interstitial contribution to the Hamiltonian matrix for the APW ! basis functions. The Hamiltonian is given by ! $$ H^{\rm I}({\bf G+k,G'+k})=\frac{1}{2}({\bf G+k})\cdot({\bf G'+k}) ! \tilde{\Theta}({\bf G-G'})+V_s({\bf G-G'}), $$ ! where $V_s$ is the interstitial Kohn-Sham potential and $\tilde{\Theta}$ is ! the characteristic function. See routine {\tt gencfun}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ngp integer, intent(in) :: igpig(ngkmax) real(8), intent(in) :: vgpc(3,ngkmax) integer, intent(in) :: ld complex(8), intent(inout) :: h(*) ! local variables integer iv(3),jv(3),ig,i,j,k real(8) vj(3),t1 !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(k,jv,vj,i,iv,ig,t1) !$OMP DO do j=1,ngp k=(j-1)*ld jv(:)=ivg(:,igpig(j)) vj(:)=vgpc(:,j) do i=1,j k=k+1 iv(:)=ivg(:,igpig(i))-jv(:) ig=ivgig(iv(1),iv(2),iv(3)) t1=0.5d0*(vgpc(1,i)*vj(1)+vgpc(2,i)*vj(2)+vgpc(3,i)*vj(3)) h(k)=h(k)+vsig(ig)+t1*cfunig(ig) end do end do !$OMP END DO !$OMP END PARALLEL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/erf.f900000644002504400250440000000005012337331323015272 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/erf.f900000644002504400250440000000443512337331323016044 0ustar00dewhurstdewhurst00000000000000 ! This code is based on a routine from the NSWC Library of Mathematics ! Subroutines and is in the public domain. !BOP ! !ROUTINE: erf ! !INTERFACE: real(8) function erf(x) ! !INPUT/OUTPUT PARAMETERS: ! x : real argument (in,real) ! !DESCRIPTION: ! Returns the error function ${\rm erf}(x)$ using a rational function ! approximation. This procedure is numerically stable and accurate to near ! machine precision. ! ! !REVISION HISTORY: ! Modified version of a NSWC routine, April 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: x ! local variables real(8) ax,x2,t,bot,top real(8), parameter :: c=0.564189583547756d0 real(8), parameter :: & a(5)=(/ 0.771058495001320d-04,-0.133733772997339d-02, & 0.323076579225834d-01, 0.479137145607681d-01, & 0.128379167095513d+00 /), & b(3)=(/ 0.301048631703895d-02, 0.538971687740286d-01, & 0.375795757275549d+00 /), & p(8)=(/-1.36864857382717d-07, 5.64195517478974d-01, & 7.21175825088309d+00, 4.31622272220567d+01, & 1.52989285046940d+02, 3.39320816734344d+02, & 4.51918953711873d+02, 3.00459261020162d+02 /), & q(8)=(/ 1.00000000000000d+00, 1.27827273196294d+01, & 7.70001529352295d+01, 2.77585444743988d+02, & 6.38980264465631d+02, 9.31354094850610d+02, & 7.90950925327898d+02, 3.00459260956983d+02 /), & r(5)=(/ 2.10144126479064d+00, 2.62370141675169d+01, & 2.13688200555087d+01, 4.65807828718470d+00, & 2.82094791773523d-01 /), & s(4)=(/ 9.41537750555460d+01, 1.87114811799590d+02, & 9.90191814623914d+01, 1.80124575948747d+01 /) ax=abs(x) if (ax.lt.0.5d0) then t=x**2 top=((((a(1)*t+a(2))*t+a(3))*t+a(4))*t+a(5))+1.d0 bot=((b(1)*t+b(2))*t+b(3))*t+1.d0 erf=x*(top/bot) return end if if (ax.lt.4.d0) then top=((((((p(1)*ax+p(2))*ax+p(3))*ax+p(4))*ax+p(5))*ax+p(6))*ax+p(7))*ax+p(8) bot=((((((q(1)*ax+q(2))*ax+q(3))*ax+q(4))*ax+q(5))*ax+q(6))*ax+q(7))*ax+q(8) erf=0.5d0+(0.5d0-exp(-x**2)*top/bot) if (x.lt.0.d0) erf=-erf return end if if (ax.lt.5.8d0) then x2=x**2 t=1.d0/x2 top=(((r(1)*t+r(2))*t+r(3))*t+r(4))*t+r(5) bot=(((s(1)*t+s(2))*t+s(3))*t+s(4))*t+1.d0 erf=(c-top/(x2*bot))/ax erf=0.5d0+(0.5d0-exp(-x2)*erf) if (x.lt.0.d0) erf=-erf return end if erf=sign(1.d0,x) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/writesf.f900000644002504400250440000000005012337331323016201 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writesf.f900000644002504400250440000000164512337331323016753 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine writesf use modmain implicit none ! local variables integer iw ! width of plotting interval in units of swidth real(8), parameter :: swf=10.d0 real(8) dw,w,x ! external functions real(8) sdelta,stheta external sdelta,stheta open(50,file='SDELTA.OUT',action='WRITE',form='FORMATTED') open(51,file='STHETA.OUT',action='WRITE',form='FORMATTED') dw=(2.d0*swf*swidth)/dble(nwplot-1) do iw=1,nwplot w=-swf*swidth+dw*dble(iw-1) x=w/swidth write(50,'(2G18.10)') w,sdelta(stype,x)/swidth write(51,'(2G18.10)') w,stheta(stype,x) end do close(50) close(51) write(*,*) write(*,'("Info(writesf): smooth Dirac delta and Heaviside functions written")') write(*,'(" SDELTA.OUT and STHETA.OUT, respectively")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/ylmrot.f900000644002504400250440000000005012337331323016044 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ylmrot.f900000644002504400250440000000415712337331323016617 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: ylmrot ! !INTERFACE: subroutine ylmrot(p,ang,lmax,ld,d) ! !INPUT/OUTPUT PARAMETERS: ! p : if p=-1 then the rotation matrix is improper (in,integer) ! ang : Euler angles; alpha, beta, gamma (in,real(3)) ! lmax : maximum angular momentum (in,integer) ! ld : leading dimension (in,integer) ! d : complex spherical harmonic rotation matrix (out,complex(ld,*)) ! !DESCRIPTION: ! Returns the rotation matrix in the basis of complex spherical harmonics ! given the three Euler angles, $(\alpha,\beta,\gamma)$, and the parity, $p$, ! of the rotation. The matrix is given by the formula ! $$ D^l_{m_1m_2}(\alpha,\beta,\gamma)=d^l_{m_1m_2}(\beta) ! e^{-i(m_1\alpha+m_2\gamma)}, $$ ! where $d$ is the rotation matrix about the $y$-axis. For improper rotations, ! i.e. those which are a combination of a rotation and inversion, $D$ is ! modified with $D^l_{m_1m_2}\rightarrow(-1)^l D^l_{m_1m_2}$. See the routines ! {\tt roteuler} and {\tt ylmroty}. ! ! !REVISION HISTORY: ! Created December 2008 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: p real(8), intent(in) :: ang(3) integer, intent(in) :: lmax integer, intent(in) :: ld complex(8), intent(out) :: d(ld,*) ! local variables integer lmmax,l,m1,m2,lm1,lm2 real(8) t1 ! allocatable arrays real(8), allocatable :: dy(:,:) if (lmax.lt.0) then write(*,*) write(*,'("Error(ylmrot): lmax < 0 : ",I8)') lmax write(*,*) stop end if lmmax=(lmax+1)**2 allocate(dy(lmmax,lmmax)) ! generate the rotation matrix about the y-axis call ylmroty(ang(2),lmax,lmmax,dy) ! rotation by alpha and gamma, as well as inversion if required lm1=0 do l=0,lmax do m1=-l,l lm1=lm1+1 lm2=l**2 do m2=-l,l lm2=lm2+1 t1=-dble(m1)*ang(1)-dble(m2)*ang(3) d(lm1,lm2)=dy(lm1,lm2)*cmplx(cos(t1),sin(t1),8) if ((p.eq.-1).and.(mod(l,2).ne.0)) d(lm1,lm2)=-d(lm1,lm2) end do end do end do deallocate(dy) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/vecfbz.f900000644002504400250440000000005012337331323015775 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/vecfbz.f900000644002504400250440000000274112337331323016545 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: vecfbz ! !INTERFACE: subroutine vecfbz(eps,bvec,vpl) ! !INPUT/OUTPUT PARAMETERS: ! eps : zero component tolerance (in,real) ! bvec : reciprocal lattice vectors (in,real(3,3)) ! vpl : input vector in lattice coordinates (inout,real(3)) ! !DESCRIPTION: ! Maps a vector in lattice coordinates to the first Brillouin zone. This is ! done by first removing its integer components and then adding primitive ! reciprocal lattice vectors until the shortest vector is found. ! ! !REVISION HISTORY: ! Created September 2008 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: eps real(8), intent(in) :: bvec(3,3) real(8), intent(inout) :: vpl(3) ! local variables integer i1,i2,i3,j1,j2,j3 real(8) v0(3),v1(3),v2(3),v3(3),t1,t2 ! map vector to [0,1) interval call r3frac(eps,vpl) v0(:)=bvec(:,1)*vpl(1)+bvec(:,2)*vpl(2)+bvec(:,3)*vpl(3) t1=v0(1)**2+v0(2)**2+v0(3)**2 j1=0;j2=0;j3=0 do i1=-1,0 v1(:)=v0(:)+dble(i1)*bvec(:,1) do i2=-1,0 v2(:)=v1(:)+dble(i2)*bvec(:,2) do i3=-1,0 v3(:)=v2(:)+dble(i3)*bvec(:,3) t2=v3(1)**2+v3(2)**2+v3(3)**2 if (t2.lt.t1+eps) then j1=i1;j2=i2;j3=i3 t1=t2 end if end do end do end do vpl(1)=vpl(1)+dble(j1) vpl(2)=vpl(2)+dble(j2) vpl(3)=vpl(3)+dble(j3) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genspecies.f900000644002504400250440000000005012337331323016643 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genspecies.f900000644002504400250440000000467512337331323017423 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genspecies(fnum) use modmain use modmpi implicit none ! arguments integer, intent(in) :: fnum ! local variables integer nz,nmax,nst,ist integer ne,nrm,nr,ir,it,i integer n(maxspst),l(maxspst),k(maxspst) real(8) mass,zn,t1,t2,t3 real(8) rm,rmin,rmax real(8) occ(maxspst),eval(maxspst) character(256) symb,name ! allocatable arrays real(8), allocatable :: r(:),rho(:),vr(:),rwf(:,:,:) read(fnum,*,err=20) nz if (nz.le.0) then write(*,*) write(*,'("Error(genspecies): atomic number negative : ",I8)') nz write(*,*) stop end if read(fnum,*,err=20) symb,name read(fnum,*,err=20) mass ! convert from 'atomic mass units' to atomic units mass=mass*amu read(fnum,*,err=20) rm read(fnum,*,err=20) nst if ((nst.le.0).or.(nst.gt.maxspst)) then write(*,*) write(*,'("Error(genspecies): nst out of range : ",I8)') nst write(*,'(" for species ",A)') trim(name) write(*,*) stop end if ne=0 nmax=1 do ist=1,nst read(fnum,*,err=20) n(ist),l(ist),k(ist),i ne=ne+i occ(ist)=i nmax=max(nmax,n(ist)) end do if (mp_mpi) then write(*,'("Info(genspecies): running Z = ",I4,", (",A,")")') nz,trim(name) if (ne.ne.nz) then write(*,*) write(*,'("Warning(genspecies): atom not neutral, electron number : ",& &I4)') ne end if end if ! nuclear charge in units of e zn=-dble(nz) ! minimum radial mesh point proportional to 1/sqrt(Z) rmin=2.d-6/sqrt(dble(nz)) ! default effective infinity rmax=100.d0 ! set the number of radial mesh points proportional to number of nodes nrm=100*(nmax+1) do it=1,2 ! number of points to effective infinity t1=log(rm/rmin) t2=log(rmax/rmin) t3=dble(nrm)*t2/t1 nr=int(t3) allocate(r(nr),rho(nr),vr(nr),rwf(nr,2,nst)) ! generate logarithmic radial mesh t2=t1/dble(nrm-1) do ir=1,nr r(ir)=rmin*exp(dble(ir-1)*t2) end do ! solve the Kohn-Sham-Dirac equation for the atom call atom(sol,.true.,zn,nst,n,l,k,occ,3,0,nr,r,eval,rho,vr,rwf) ! recompute the effective infinity do ir=nr,1,-1 if (rho(ir).gt.1.d-20) then rmax=1.75d0*r(ir) exit end if end do deallocate(r,rho,vr,rwf) end do ! write the species file call writespecies(symb,name,zn,mass,rmin,rm,rmax,nrm,nst,n,l,k,occ,eval) return 20 continue write(*,*) write(*,'("Error(genspecies): error reading species data")') write(*,*) stop end subroutine elk-2.3.22/src/PaxHeaders.22528/forcek.f900000644002504400250440000000005012337331324015770 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/forcek.f900000644002504400250440000001106512337331324016537 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: forcek ! !INTERFACE: subroutine forcek(ik) ! !USES: use modmain ! !DESCRIPTION: ! Computes the {\bf k}-dependent contribution to the incomplete basis set ! (IBS) force. See the calling routine {\tt force} for a full description. ! ! !REVISION HISTORY: ! Created June 2006 (JKD) ! Updated for spin-spiral case, May 2007 (Francesco Cricchio and JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ik ! local variables integer ispn0,ispn1,ispn,jspn integer n,nm,nm2,is,ias,ist,jst integer iv(3),ig,i,j,k,l real(8) sum,t1 complex(8) z1,z2 ! allocatable arrays integer, allocatable :: ijg(:) real(8), allocatable :: dp(:),evalfv(:,:) complex(8), allocatable :: apwalm(:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) complex(8), allocatable :: h(:),o(:) complex(8), allocatable :: dlh(:),dlo(:) complex(8), allocatable :: vh(:),vo(:) complex(8), allocatable :: ffv(:,:),y(:) ! external functions complex(8) zdotc external zdotc nm2=nmatmax**2 ! allocate local arrays allocate(ijg(nm2),dp(nm2)) allocate(evalfv(nstfv,nspnfv)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) allocate(h(nm2),o(nm2),dlh(nm2),dlo(nm2)) allocate(vh(nmatmax),vo(nmatmax)) allocate(ffv(nstfv,nstfv),y(nstfv)) ! get the eigenvalues/vectors from file call getevalfv(vkl(:,ik),evalfv) call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! loop over first-variational spin components do jspn=1,nspnfv if (spinsprl) then ispn0=jspn; ispn1=jspn else ispn0=1; ispn1=nspinor end if n=ngk(jspn,ik) nm=nmat(jspn,ik) do j=1,n k=(j-1)*nm do i=1,j k=k+1 iv(:)=ivg(:,igkig(i,jspn,ik))-ivg(:,igkig(j,jspn,ik)) iv(:)=modulo(iv(:)-intgv(1,:),ngridg(:))+intgv(1,:) ijg(k)=ivgig(iv(1),iv(2),iv(3)) dp(k)=0.5d0*dot_product(vgkc(:,i,jspn,ik),vgkc(:,j,jspn,ik)) end do end do ! find the matching coefficients call match(n,gkc(:,jspn,ik),tpgkc(:,:,jspn,ik),sfacgk(:,:,jspn,ik),apwalm) ! loop over species and atoms do ias=1,natmtot is=idxis(ias) ! Hamiltonian and overlap matrices h(:)=0.d0 call hmlaa(ias,n,apwalm,nm,h) call hmlalo(ias,n,apwalm,nm,h) o(:)=0.d0 call olpaa(ias,n,apwalm,nm,o) call olpalo(ias,n,apwalm,nm,o) ! loop over Cartesian directions do l=1,3 ! APW-APW contribution do j=1,n k=(j-1)*nm do i=1,j k=k+1 ig=ijg(k) t1=vgc(l,ig) z1=-ffacg(ig,is)*conjg(sfacg(ig,ias)) z2=t1*(dp(k)*z1+h(k)) dlh(k)=cmplx(-aimag(z2),dble(z2),8) z2=t1*(z1+o(k)) dlo(k)=cmplx(-aimag(z2),dble(z2),8) end do end do do j=n+1,nm k=(j-1)*nm ! APW-local-orbital contribution do i=1,n k=k+1 t1=vgkc(l,i,jspn,ik) z1=t1*h(k) dlh(k)=cmplx(-aimag(z1),dble(z1),8) z1=t1*o(k) dlo(k)=cmplx(-aimag(z1),dble(z1),8) end do ! zero the local-orbital-local-orbital contribution do i=n+1,j k=k+1 dlh(k)=0.d0 dlo(k)=0.d0 end do end do ! compute the force matrix elements in the first-variational basis do jst=1,nstfv call zhemv('U',nm,zone,dlh,nm,evecfv(:,jst,jspn),1,zzero,vh,1) call zhemv('U',nm,zone,dlo,nm,evecfv(:,jst,jspn),1,zzero,vo,1) t1=evalfv(jst,jspn) do ist=1,nstfv z1=zdotc(nm,evecfv(:,ist,jspn),1,vh,1) z2=zdotc(nm,evecfv(:,ist,jspn),1,vo,1) ffv(ist,jst)=z1-t1*z2 end do end do ! compute the force using the second-variational coefficients if required sum=0.d0 if (tevecsv) then ! spin-polarised case do j=1,nstsv do ispn=ispn0,ispn1 i=(ispn-1)*nstfv+1 call zgemv('N',nstfv,nstfv,zone,ffv,nstfv,evecsv(i,j),1,zzero,y,1) z1=zdotc(nstfv,evecsv(i,j),1,y,1) sum=sum+occsv(j,ik)*dble(z1) end do end do else ! spin-unpolarised case do j=1,nstsv sum=sum+occsv(j,ik)*dble(ffv(j,j)) end do end if !$OMP ATOMIC forceibs(l,ias)=forceibs(l,ias)+wkpt(ik)*sum ! end loop over Cartesian components end do ! end loop over atoms and species end do ! end loop over first-variational spins end do deallocate(ijg,dp,evalfv,apwalm,evecfv,evecsv) deallocate(h,o,dlh,dlo,vh,vo,ffv,y) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genpmat.f900000644002504400250440000000005012337331324016152 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genpmat.f900000644002504400250440000001425312337331324016723 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genpmat ! !INTERFACE: subroutine genpmat(ngp,igpig,vgpc,wfmt,wfir,pmat) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ngp : number of G+p-vectors (in,integer(nspnfv)) ! igpig : index from G+p-vectors to G-vectors (in,integer(ngkmax,nspnfv)) ! vgpc : G+p-vectors in Cartesian coordinates (in,real(3,ngkmax,nspnfv)) ! wfmt : muffin-tin wavefunction in spherical harmonics ! (in,complex(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) ! wfir : interstitial wavefunction in plane wave basis ! (in,complex(ngkmax,nspinor,nstsv)) ! pmat : momentum matrix elements (out,complex(3,nstsv,nstsv)) ! !DESCRIPTION: ! Calculates the momentum matrix elements ! $$ P_{ij}=\int d^3r\,\Psi_{i{\bf k}}^*({\bf r})\left(-i\nabla ! +\frac{1}{4c^2}\left[\vec{\sigma}\times\nabla V_s({\bf r})\right]\right) ! \Psi_{j{\bf k}}({\bf r}), $$ ! where $V_s$ is the Kohn-Sham effective potential. The second term in the ! brackets is only calculated if spin-orbit coupling is enabled. See Rathgen ! and Katsnelson, {\it Physica Scripta} {\bf T109}, 170 (2004). ! ! !REVISION HISTORY: ! Created November 2003 (Sharma) ! Fixed bug found by Juergen Spitaler, September 2006 (JKD) ! Added spin-orbit correction, July 2010 (JKD) ! Fixed bug found by Koichi Kitahara, January 2014 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ngp(nspnfv) integer, intent(in) :: igpig(ngkmax,nspnfv) real(8), intent(in) :: vgpc(3,ngkmax,nspnfv) complex(8), intent(in) :: wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv) complex(8), intent(in) :: wfir(ngkmax,nspinor,nstsv) complex(8), intent(out) :: pmat(3,nstsv,nstsv) ! local variables integer ispn,jspn,ist,jst integer is,ia,ias,i integer nrc,nrci,irc integer lmmax,itp,igp,ifg real(8) cso complex(8) z1,z2,z11,z12,z21,z22,z31,z32 ! allocatable arrays complex(8), allocatable :: gwfmt(:,:,:,:),gwfir(:,:),x(:) complex(8), allocatable :: gvmt(:,:,:),zfmt1(:,:,:),zfmt2(:,:,:,:) ! external functions complex(8) zfmtinp,zdotc external zfmtinp,zdotc ! coefficient of spin-orbit coupling cso=1.d0/(4.d0*solsc**2) ! zero the momentum matrix elements array pmat(:,:,:)=0.d0 !---------------------------------! ! muffin-tin contribution ! !---------------------------------! allocate(gwfmt(lmmaxvr,nrcmtmax,3,nspinor)) if (spinorb) then allocate(gvmt(lmmaxvr,nrcmtmax,3)) allocate(zfmt1(lmmaxvr,nrcmtmax,nspinor)) allocate(zfmt2(lmmaxvr,nrcmtmax,3,nspinor)) end if do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) ! compute gradient of potential for spin-orbit correction if required if (spinorb) then call rtozfmt(nrc,nrci,lradstp,vsmt(:,:,ias),1,zfmt1) call gradzfmt(nrc,nrci,rcmt(:,is),zfmt1,nrcmtmax,gvmt) ! convert to spherical coordinates do i=1,3 zfmt1(:,1:nrc,1)=gvmt(:,1:nrc,i) call zbsht(nrc,nrci,zfmt1,gvmt(:,:,i)) end do end if do jst=1,nstsv do ispn=1,nspinor ! compute the gradient of the wavefunction call gradzfmt(nrc,nrci,rcmt(:,is),wfmt(:,:,ias,ispn,jst),nrcmtmax, & gwfmt(:,:,:,ispn)) end do ! add spin-orbit correction if required if (spinorb) then do ispn=1,nspinor ! convert wavefunction to spherical coordinates call zbsht(nrc,nrci,wfmt(:,:,ias,ispn,jst),zfmt1(:,:,ispn)) end do ! compute i sigma x (grad V(r)) psi(r) lmmax=lmmaxinr do irc=1,nrc do itp=1,lmmax z1=zfmt1(itp,irc,1) z1=cmplx(-aimag(z1),dble(z1),8) z2=zfmt1(itp,irc,2) z2=cmplx(-aimag(z2),dble(z2),8) z11=gvmt(itp,irc,1)*z1 z12=gvmt(itp,irc,1)*z2 z21=gvmt(itp,irc,2)*z1 z22=gvmt(itp,irc,2)*z2 z31=gvmt(itp,irc,3)*z1 z32=gvmt(itp,irc,3)*z2 zfmt2(itp,irc,1,1)=-z21-cmplx(-aimag(z32),dble(z32),8) zfmt2(itp,irc,1,2)=z22+cmplx(-aimag(z31),dble(z31),8) zfmt2(itp,irc,2,1)=z11-z32 zfmt2(itp,irc,2,2)=-z12-z31 zfmt2(itp,irc,3,1)=cmplx(-aimag(z12),dble(z12),8)+z22 zfmt2(itp,irc,3,2)=-cmplx(-aimag(z11),dble(z11),8)+z21 end do if (irc.eq.nrci) lmmax=lmmaxvr end do ! convert to spherical harmonics and add to wavefunction gradient do ispn=1,nspinor do i=1,3 call zfsht(nrc,nrci,zfmt2(:,:,i,ispn),zfmt1) gwfmt(:,1:nrc,i,ispn)=gwfmt(:,1:nrc,i,ispn)+cso*zfmt1(:,1:nrc,1) end do end do end if ! find the overlaps do ispn=1,nspinor do ist=1,jst do i=1,3 pmat(i,ist,jst)=pmat(i,ist,jst)+zfmtinp(.true.,nrc,nrci, & rcmt(:,is),wfmt(:,:,ias,ispn,ist),gwfmt(:,:,i,ispn)) end do end do end do end do end do end do deallocate(gwfmt) if (spinorb) deallocate(gvmt,zfmt1,zfmt2) !-----------------------------------! ! interstitial contribution ! !-----------------------------------! allocate(gwfir(ngtot,3),x(ngkmax)) do jst=1,nstsv do ispn=1,nspinor jspn=jspnfv(ispn) ! compute the gradient gwfir(:,:)=0.d0 do igp=1,ngp(jspn) ifg=igfft(igpig(igp,jspn)) z1=wfir(igp,ispn,jst) gwfir(ifg,:)=vgpc(:,igp,jspn)*cmplx(-aimag(z1),dble(z1),8) end do do i=1,3 ! Fourier transform to real-space call zfftifc(3,ngridg,1,gwfir(:,i)) ! multiply by characteristic function gwfir(:,i)=gwfir(:,i)*cfunir(:) ! Fourier transform back to G-space call zfftifc(3,ngridg,-1,gwfir(:,i)) end do ! find the overlaps do i=1,3 do igp=1,ngp(jspn) ifg=igfft(igpig(igp,jspn)) x(igp)=gwfir(ifg,i) end do do ist=1,jst pmat(i,ist,jst)=pmat(i,ist,jst)+zdotc(ngp(jspn),wfir(:,ispn,ist),1,x,1) end do end do end do end do deallocate(gwfir,x) ! multiply by -i and set lower triangular part do ist=1,nstsv do jst=ist,nstsv do i=1,3 z1=pmat(i,ist,jst) z1=cmplx(aimag(z1),-dble(z1),8) pmat(i,ist,jst)=z1 pmat(i,jst,ist)=conjg(z1) end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/clebgor.f900000644002504400250440000000005012337331323016133 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/clebgor.f900000644002504400250440000000332612337331323016703 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: clebgor ! !INTERFACE: real(8) function clebgor(j1,j2,j3,m1,m2,m3) ! !INPUT/OUTPUT PARAMETERS: ! j1, j2, j3 : angular momentum quantum numbers (in,integer) ! m1, m2, m3 : magnetic quantum numbers (in,integer) ! !DESCRIPTION: ! Returns the Clebsch-Gordon coefficients using the Wigner $3j$-symbols ! $$ C(J_1 J_2 J_3 | m_1 m_2 m_3)=(-1)^{J_1-J_2+m_3}\sqrt{2J_3+1} ! \begin{pmatrix} J_1 & J_2 & J_3 \\ m_1 & m_2 & -m_3 \end{pmatrix}. $$ ! Suitable for $J_i\le 50$. See {\tt wigner3j}. ! ! !REVISION HISTORY: ! Created September 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: j1,j2,j3 integer, intent(in) :: m1,m2,m3 ! external functions real(8) wigner3j external wigner3j if ((j1.lt.0).or.(j2.lt.0).or.(j3.lt.0).or.(abs(m1).gt.j1).or.(abs(m2).gt.j2) & .or.(abs(m2).gt.j2).or.(abs(m3).gt.j3)) then write(*,*) write(*,'("Error(clebgor): non-physical arguments :")') write(*,'("j1 = ",I8," j2 = ",I8," j3 = ",I8)') j1,j2,j3 write(*,'("m1 = ",I8," m2 = ",I8," m3 = ",I8)') m1,m2,m3 write(*,*) stop end if if ((j1.eq.0).and.(j2.eq.0).and.(j3.eq.0)) then clebgor=1.d0 return end if if ((j1.gt.50).or.(j2.gt.50).or.(j3.gt.50)) then write(*,*) write(*,'("Error(clebgor): angular momenta out of range : ",3I8)') j1,j2,j3 write(*,*) stop end if if ((m1+m2-m3.ne.0).or.(j2+j3.lt.j1).or.(j1+j3.lt.j2).or.(j1+j2.lt.j3)) then clebgor=0.d0 return end if clebgor=sqrt(dble(2*j3+1))*wigner3j(j1,j2,j3,m1,m2,-m3) if (mod(j1-j2+m3,2).ne.0) clebgor=-clebgor return end function !EOC elk-2.3.22/src/PaxHeaders.22528/polynom.f900000644002504400250440000000005012337331323016213 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/polynom.f900000644002504400250440000000721112337331323016760 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: polynom ! !INTERFACE: real(8) function polynom(m,np,xa,ya,c,x) ! !INPUT/OUTPUT PARAMETERS: ! m : order of derivative (in,integer) ! np : number of points to fit (in,integer) ! xa : abscissa array (in,real(np)) ! ya : ordinate array (in,real(np)) ! c : work array (out,real(np)) ! x : evaluation abscissa (in,real) ! !DESCRIPTION: ! Fits a polynomial of order $n_p-1$ to a set of $n_p$ points. If $m\ge 0$ the ! function returns the $m$th derviative of the polynomial at $x$, while for ! $m<0$ the integral of the polynomial from the first point in the array to ! $x$ is returned. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! argmuments integer, intent(in) :: m integer, intent(in) :: np real(8), intent(in) :: xa(np),ya(np) real(8), intent(out) :: c(np) real(8), intent(in) :: x ! local variables integer i,j,k real(8) x0,x1,x2,x3,y0,y1,y2,y3 real(8) t0,t1,t2,t3,t4,t5,t6 real(8) c1,c2,c3,sum ! fast evaluations for small np select case(np) case(1) select case(m) case(:-1) polynom=ya(1)*(x-xa(1)) case(0) polynom=ya(1) case default polynom=0.d0 end select return case(2) c1=(ya(2)-ya(1))/(xa(2)-xa(1)) t1=x-xa(1) select case(m) case(:-1) polynom=t1*(ya(1)+0.5d0*c1*t1) case(0) polynom=c1*t1+ya(1) case(1) polynom=c1 case default polynom=0.d0 end select return case(3) x0=xa(1) x1=xa(2)-x0 x2=xa(3)-x0 y0=ya(1) y1=ya(2)-y0 y2=ya(3)-y0 t0=1.d0/(x1*x2*(x2-x1)) t1=x1*y2 t2=x2*y1 c1=x2*t2-x1*t1 c2=t1-t2 t1=x-x0 select case(m) case(:-1) polynom=t1*(y0+t0*t1*(0.5d0*c1+0.3333333333333333333d0*c2*t1)) case(0) polynom=y0+t0*t1*(c1+c2*t1) case(1) polynom=t0*(2.d0*c2*t1+c1) case(2) polynom=t0*2.d0*c2 case default polynom=0.d0 end select return case(4) x0=xa(1) x1=xa(2)-x0 x2=xa(3)-x0 x3=xa(4)-x0 y0=ya(1) y1=ya(2)-y0 y2=ya(3)-y0 y3=ya(4)-y0 t0=1.d0/(x1*x2*x3*(x1-x2)*(x1-x3)*(x2-x3)) t1=x1*x2*y3 t2=x2*x3*y1 t3=x3*x1*y2 c3=t1*(x1-x2)+t2*(x2-x3)+t3*(x3-x1) t6=x3**2 t5=x2**2 t4=x1**2 c2=t1*(t5-t4)+t2*(t6-t5)+t3*(t4-t6) c1=t1*(x2*t4-x1*t5)+t2*(x3*t5-x2*t6)+t3*(x1*t6-x3*t4) t1=x-x0 select case(m) case(:-1) polynom=t1*(y0+t0*t1*(0.5d0*c1+t1*(0.3333333333333333333d0*c2 & +0.25d0*c3*t1))) case(0) polynom=y0+t0*t1*(c1+t1*(c2+c3*t1)) case(1) polynom=t0*(c1+t1*(2.d0*c2+3.d0*c3*t1)) case(2) polynom=t0*(6.d0*c3*t1+2.d0*c2) case(3) polynom=t0*6.d0*c3 case default polynom=0.d0 end select return end select if (np.le.0) then write(*,*) write(*,'("Error(polynom): np <= 0 : ",I8)') np write(*,*) stop end if if (m.ge.np) then polynom=0.d0 return end if ! find the polynomial coefficients in divided differences form c(:)=ya(:) do i=2,np do j=np,i,-1 c(j)=(c(j)-c(j-1))/(xa(j)-xa(j+1-i)) end do end do ! special case m=0 if (m.eq.0) then sum=c(1) t1=1.d0 do i=2,np t1=t1*(x-xa(i-1)) sum=sum+c(i)*t1 end do polynom=sum return end if x0=xa(1) ! convert to standard form do j=1,np-1 do i=1,np-j k=np-i c(k)=c(k)+(x0-xa(k-j+1))*c(k+1) end do end do if (m.gt.0) then ! take the m'th derivative do j=1,m do i=m+1,np c(i)=c(i)*dble(i-j) end do end do t1=c(np) t2=x-x0 do i=np-1,m+1,-1 t1=t1*t2+c(i) end do polynom=t1 else ! find the integral t1=c(np)/dble(np) t2=x-x0 do i=np-1,1,-1 t1=t1*t2+c(i)/dble(i) end do polynom=t1*t2 end if return end function !EOC elk-2.3.22/src/PaxHeaders.22528/zheri.f900000644002504400250440000000005012337331323015637 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zheri.f900000644002504400250440000000235012337331323016403 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine zheri(n,alpha,x,ld,a) implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: alpha complex(8), intent(in) :: x(n) integer, intent(in) :: ld complex(8), intent(inout) :: a(*) ! local variables integer j,k ! numbers less than eps are considered to be zero real(8), parameter :: eps=1.d-10 real(8) a1,b1 complex(8) z1 !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,z1,a1,b1) !$OMP DO do j=1,n k=(j-1)*ld z1=alpha*x(j) if (abs(dble(z1)).gt.eps) then if (abs(aimag(z1)).gt.eps) then ! complex prefactor a(k+1:k+j-1)=a(k+1:k+j-1)+z1*conjg(x(1:j-1)) a(k+j)=dble(a(k+j))+dble(z1*conjg(x(j))) else ! real prefactor a1=dble(z1) a(k+1:k+j-1)=a(k+1:k+j-1)+a1*conjg(x(1:j-1)) a(k+j)=dble(a(k+j))+a1*dble(x(j)) end if else if (abs(aimag(z1)).gt.eps) then ! imaginary prefactor b1=aimag(z1) a(k+1:k+j-1)=a(k+1:k+j-1)+b1*cmplx(aimag(x(1:j-1)),dble(x(1:j-1)),8) a(k+j)=dble(a(k+j))+b1*aimag(x(j)) end if end if end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/getpmat.f900000644002504400250440000000005012337331324016160 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/getpmat.f900000644002504400250440000000324012337331324016723 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getpmat(vpl,pmat) use modmain implicit none ! arguments real(8), intent(in) :: vpl(3) complex(8), intent(out) :: pmat(3,nstsv,nstsv) ! local variables integer isym,ik,ist,jst integer recl,nstsv_ real(8) vkl_(3),sc(3,3),t1 real(8) v1(3),v2(3),v3(3) ! find the k-point number call findkpt(vpl,isym,ik) ! find the record length inquire(iolength=recl) vkl_,nstsv_,pmat !$OMP CRITICAL open(85,file='PMAT.OUT',action='READ',form='UNFORMATTED',access='DIRECT', & recl=recl) read(85,rec=ik) vkl_,nstsv_,pmat close(85) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getpmat): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" EVECSV.OUT : ",3G18.10)') vkl_ write(*,*) stop end if if (nstsv.ne.nstsv_) then write(*,*) write(*,'("Error(getpmat): differing nstsv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstsv write(*,'(" EVECSV.OUT : ",I8)') nstsv_ write(*,*) stop end if ! if p = k then return t1=abs(vpl(1)-vkl(1,ik))+abs(vpl(2)-vkl(2,ik))+abs(vpl(3)-vkl(3,ik)) if (t1.lt.epslat) return ! rotate the matrix elements from the reduced to non-reduced k-point sc(:,:)=symlatc(:,:,lsplsymc(isym)) do ist=1,nstsv do jst=1,nstsv v1(:)=dble(pmat(:,ist,jst)) call r3mv(sc,v1,v2) v1(:)=aimag(pmat(:,ist,jst)) call r3mv(sc,v1,v3) pmat(:,ist,jst)=cmplx(v2(:),v3(:),8) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/writechg.f900000644002504400250440000000005012337331323016332 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writechg.f900000644002504400250440000000315212337331323017077 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine writechg(fnum) use modmain implicit none ! arguments integer, intent(in) :: fnum ! local variables integer is,ia,ias ! output charges write(fnum,*) write(fnum,'("Charges :")') write(fnum,'(" core",T30,": ",G18.10)') chgcrtot write(fnum,'(" valence",T30,": ",G18.10)') chgval write(fnum,'(" interstitial",T30,": ",G18.10)') chgir write(fnum,'(" muffin-tins (core leakage)")') do is=1,nspecies write(fnum,'(" species : ",I4," (",A,")")') is,trim(spsymb(is)) do ia=1,natoms(is) ias=idxas(ia,is) write(fnum,'(" atom ",I4,T30,": ",G18.10," (",G18.10,")")') ia, & chgmt(ias),chgcrlk(ias) end do end do write(fnum,'(" total in muffin-tins",T30,": ",G18.10)') chgmttot if (chgexs.ne.0.d0) then write(fnum,'(" excess",T30,": ",G18.10)') chgexs end if write(fnum,'(" total charge",T30,": ",G18.10)') chgcalc ! output moments if (spinpol) then write(fnum,*) write(fnum,'("Moments :")') write(fnum,'(" interstitial",T30,": ",3G18.10)') momir(1:ndmag) write(fnum,'(" muffin-tins")') do is=1,nspecies write(fnum,'(" species : ",I4," (",A,")")') is,trim(spsymb(is)) do ia=1,natoms(is) ias=idxas(ia,is) write(fnum,'(" atom ",I4,T30,": ",3G18.10)') ia,mommt(1:ndmag,ias) end do end do write(fnum,'(" total in muffin-tins",T30,": ",3G18.10)') mommttot(1:ndmag) write(fnum,'(" total moment",T30,": ",3G18.10)') momtot(1:ndmag) end if call flushifc(fnum) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmdkdc.f900000644002504400250440000000005012337331324016127 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmdkdc.f900000644002504400250440000000160212337331324016672 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmdkdc ! !INTERFACE: subroutine rdmdkdc ! !USES: use modmain use modrdm ! !DESCRIPTION: ! Calculates the derivative of kinetic energy w.r.t. the second-variational ! coefficients {\tt evecsv}. ! ! !REVISION HISTORY: ! Created October 2008 (Sharma) !EOP !BOC implicit none ! allocatable arrays complex(8), allocatable :: evecsv(:,:) integer ik !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evecsv) !$OMP DO do ik=1,nkpt allocate(evecsv(nstsv,nstsv)) call getevecsv(vkl(:,ik),evecsv) call zgemm('N','N',nstsv,nstsv,nstsv,zone,kmatc(:,:,ik),nstsv,evecsv,nstsv, & zzero,dkdc(:,:,ik),nstsv) deallocate(evecsv) end do !$OMP END DO !$OMP END PARALLEL return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/mixbroyden.f900000644002504400250440000000005012337331323016676 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mixbroyden.f900000644002504400250440000000420112337331323017437 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine mixbroyden(iscl,n,msd,alpha,w0,nu,mu,f,df,u,a,d) implicit none ! arguments integer, intent(in) :: iscl,n,msd real(8), intent(in) :: alpha,w0 real(8), intent(inout) :: nu(n),mu(n,2) real(8), intent(inout) :: f(n,2),df(n,msd) real(8), intent(inout) :: u(n,msd) real(8), intent(inout) :: a(msd,msd) real(8), intent(out) :: d ! local variables integer jc,kp,kc integer k,l,m,info real(8) t1 ! automatic arrays integer ipiv(msd) real(8) c(msd),beta(msd,msd),gamma(msd) real(8) work(msd) ! external functions real(8) ddot,dnrm2 external ddot,dnrm2 if (n.lt.1) then write(*,*) write(*,'("Error(mixbroyden): n < 1 : ",I8)') n write(*,*) stop end if if (msd.lt.2) then write(*,*) write(*,'("Error(mixbroyden): msd < 2 : ",I8)') msd write(*,*) stop end if ! initialise mixer if (iscl.le.0) then call dcopy(n,nu,1,mu(:,1),1) call dcopy(n,nu,1,mu(:,2),1) f(:,1)=0.d0 df(:,1)=0.d0 u(:,1)=0.d0 a(:,:)=0.d0 d=1.d0 return end if ! current subspace dimension m=min(iscl+1,msd) ! current index modulo m jc=mod(iscl,m)+1 ! previous index modulo 2 kp=mod(iscl-1,2)+1 ! current index modulo 2 kc=mod(iscl,2)+1 f(:,kc)=nu(:)-mu(:,kp) d=sum(f(:,kc)**2) d=sqrt(d/dble(n)) df(:,jc)=f(:,kc)-f(:,kp) t1=dnrm2(n,df(:,jc),1) if (t1.gt.1.d-8) t1=1.d0/t1 call dscal(n,t1,df(:,jc),1) u(:,jc)=alpha*df(:,jc)+t1*(mu(:,kp)-mu(:,kc)) do k=1,m c(k)=ddot(n,df(:,k),1,f(:,kc),1) end do do k=1,m a(k,jc)=ddot(n,df(:,jc),1,df(:,k),1) a(jc,k)=a(k,jc) end do beta(:,:)=a(:,:) do k=1,m beta(k,k)=beta(k,k)+w0**2 end do ! invert beta call dgetrf(m,m,beta,msd,ipiv,info) if (info.eq.0) call dgetri(m,beta,msd,ipiv,work,m,info) if (info.ne.0) then write(*,*) write(*,'("Error(mixbroyden): could not invert matrix")') write(*,*) stop end if do l=1,m gamma(l)=0.d0 do k=1,m gamma(l)=gamma(l)+c(k)*beta(k,l) end do end do nu(:)=mu(:,kp)+alpha*f(:,kc) do l=1,m call daxpy(n,-gamma(l),u(:,l),1,nu,1) end do call dcopy(n,nu,1,mu(:,kc),1) return end subroutine elk-2.3.22/src/PaxHeaders.22528/potks.f900000644002504400250440000000005012337331323015656 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/potks.f900000644002504400250440000000274412337331323016431 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: potks ! !INTERFACE: subroutine potks ! !USES: use modmain ! !DESCRIPTION: ! Computes the Kohn-Sham effective potential by adding together the Coulomb ! and exchange-correlation potentials. Also computes the effective magnetic ! field. See routines {\tt potcoul} and {\tt potxc}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! local variables integer is,ias,ir real(8) ts0,ts1 call timesec(ts0) ! compute the Coulomb potential call potcoul ! compute the exchange-correlation potential and fields call potxc ! effective potential from sum of Coulomb and exchange-correlation potentials !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(is,ir) !$OMP DO do ias=1,natmtot is=idxis(ias) ! inner part of muffin-tin: l <= lmaxinr do ir=1,nrmtinr(is) vsmt(1:lmmaxinr,ir,ias)=vclmt(1:lmmaxinr,ir,ias)+vxcmt(1:lmmaxinr,ir,ias) vsmt(lmmaxinr+1:lmmaxvr,ir,ias)=0.d0 end do ! outer part of muffin-tin: l <= lmaxvr do ir=nrmtinr(is)+1,nrmt(is) vsmt(:,ir,ias)=vclmt(:,ir,ias)+vxcmt(:,ir,ias) end do end do !$OMP END DO !$OMP END PARALLEL !$OMP PARALLEL WORKSHARE vsir(:)=vclir(:)+vxcir(:) !$OMP END PARALLEL WORKSHARE ! generate the Kohn-Sham effective magnetic fields call bfieldks call timesec(ts1) timepot=timepot+ts1-ts0 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/x_pbe.f900000644002504400250440000000005012337331324015614 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/x_pbe.f900000644002504400250440000000144012337331324016357 0ustar00dewhurstdewhurst00000000000000 ! This routine is based on code written by K. Burke. subroutine x_pbe(kappa,mu,rho,s,u,v,ex,vx) implicit none ! arguments real(8), intent(in) :: kappa real(8), intent(in) :: mu real(8), intent(in) :: rho real(8), intent(in) :: s real(8), intent(in) :: u real(8), intent(in) :: v real(8), intent(out) :: ex real(8), intent(out) :: vx ! local variables real(8), parameter :: ax=-0.7385587663820224058d0 real(8), parameter :: thrd=1.d0/3.d0 real(8), parameter :: thrd4=4.d0/3.d0 real(8) ul,exu,s2,p0 real(8) fxpbe,fs,fss ul=mu/kappa ! LDA exchange energy density exu=ax*rho**thrd ! PBE enhancement factor s2=s**2 p0=1.d0+ul*s2 fxpbe=1.d0+kappa-kappa/p0 ex=exu*fxpbe fs=2.d0*kappa*ul/(p0*p0) fss=-4.d0*ul*s*fs/p0 ! exchange potential vx=exu*(thrd4*fxpbe-(u-thrd4*s2*s)*fss-v*fs) return end subroutine elk-2.3.22/src/PaxHeaders.22528/ephcouple.f900000644002504400250440000000005012337331324016503 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/ephcouple.f900000644002504400250440000001525512337331324017257 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine ephcouple use modmain use modphonon use modmpi use modstore implicit none ! local variables integer iq,ik,jk,ikq integer ist,jst,ip integer is,ia,ias,js,ja,jas integer nrc,nrci,irc integer isym,iv(3),i,j,n real(8) vl(3),x real(8) t1,t2,t3,t4,t5 complex(8) z1 ! allocatable arrays real(8), allocatable :: wq(:,:),gq(:,:) real(8), allocatable :: evalfv(:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) complex(8), allocatable :: dynq(:,:,:),ev(:,:) complex(8), allocatable :: dvphmt(:,:,:,:),dvphir(:,:) complex(8), allocatable :: zfmt(:,:),gzfmt(:,:,:,:) complex(8), allocatable :: ephmat(:,:,:) ! external functions real(8) sdelta,stheta external sdelta,stheta ! set the inner part of the muffin-tin to zero fracinr0=fracinr fracinr=0.d0 ! initialise universal variables call init0 call init1 call init2 ! check k-point grid is commensurate with q-point grid iv(:)=mod(ngridk(:),ngridq(:)) if ((iv(1).ne.0).or.(iv(2).ne.0).or.(iv(3).ne.0)) then write(*,*) write(*,'("Error(ephcouple): k-point grid incommensurate with q-point grid")') write(*,'(" ngridk : ",3I6)') ngridk write(*,'(" ngridq : ",3I6)') ngridq write(*,*) stop end if ! allocate global arrays if (allocated(dvsmt)) deallocate(dvsmt) allocate(dvsmt(lmmaxvr,nrcmtmax,natmtot)) if (allocated(dvsir)) deallocate(dvsir) allocate(dvsir(ngtot)) !****** remove ! allocate local arrays allocate(wq(nbph,nqpt),gq(nbph,nqpt)) allocate(dynq(nbph,nbph,nqpt),ev(nbph,nbph)) allocate(dvphmt(lmmaxvr,nrcmtmax,natmtot,nbph)) allocate(dvphir(ngtot,nbph)) allocate(zfmt(lmmaxvr,nrcmtmax)) allocate(gzfmt(lmmaxvr,nrcmtmax,3,natmtot)) ! read in the density and potentials from file call readstate ! read in the Fermi energy call readfermi ! find the linearisation energies call linengy ! set the speed of light >> 1 (non-relativistic approximation) solsc=sol*100.d0 ! new file extension for eigenvector files with c >> 1 filext='_EPH.OUT' ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr ! begin parallel loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evalfv,evecfv,evecsv) !$OMP DO do ik=1,nkpt ! every thread should allocate its own arrays allocate(evalfv(nstfv,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) ! solve the first- and second-variational eigenvalue equations call eveqn(ik,evalfv,evecfv,evecsv) ! write the eigenvectors to file call putevecfv(ik,evecfv) call putevecsv(ik,evecsv) deallocate(evalfv,evecfv,evecsv) end do !$OMP END DO !$OMP END PARALLEL ! restore the speed of light solsc=sol ! compute the occupancies and density of states at the Fermi energy call occupy ! read in the dynamical matrices call readdyn(dynq) ! apply the acoustic sum rule call sumrule(dynq) ! loop over all atoms do ias=1,natmtot is=idxis(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) ! convert potential to complex spherical harmonic expansion call rtozfmt(nrc,nrci,lradstp,vsmt(:,:,ias),1,zfmt) ! compute the gradients of the Kohn-Sham potential for the rigid-ion term call gradzfmt(nrc,nrci,rcmt(:,is),zfmt,nrcmtmax,gzfmt(:,:,:,ias)) end do ! loop over phonon q-points do iq=1,nqpt if (mp_mpi) write(*,'("Info(ephcouple): ",I6," of ",I6," q-points")') iq,nqpt ! diagonalise the dynamical matrix call dynev(dynq(:,:,iq),wq(:,iq),ev) ! loop over phonon branches do j=1,nbph ! zero any negative frequencies if (wq(j,iq).lt.0.d0) wq(j,iq)=0.d0 ! find change in Kohn-Sham potential for mode j dvphmt(:,:,:,j)=0.d0 dvphir(:,j)=0.d0 i=0 do is=1,nspecies ! prefactor t1=2.d0*spmass(is)*wq(j,iq) if (t1.gt.1.d-8) then t1=1.d0/sqrt(t1) else t1=0.d0 end if do ia=1,natoms(is) ias=idxas(ia,is) do ip=1,3 i=i+1 ! read in the Cartesian change in Kohn-Sham potential call readdvs(iq,is,ia,ip) ! add the rigid-ion term do irc=1,nrcmt(is) dvsmt(:,irc,ias)=dvsmt(:,irc,ias)-gzfmt(:,irc,ip,ias) end do ! multiply with eigenvector component and add to total phonon potential z1=t1*ev(i,j) do js=1,nspecies do ja=1,natoms(js) jas=idxas(ja,js) do irc=1,nrcmt(js) dvphmt(:,irc,jas,j)=dvphmt(:,irc,jas,j)+z1*dvsmt(:,irc,jas) end do end do end do dvphir(:,j)=dvphir(:,j)+z1*dvsir(:) !***** remove end do end do end do end do ! zero the phonon linewidths array gq(:,iq)=0.d0 ! begin parallel loop over non-reduced k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(ephmat,jk,vl,isym) & !$OMP PRIVATE(ikq,ist,jst,i) & !$OMP PRIVATE(x,t1,t2,t3,t4,t5) !$OMP DO do ik=1,nkptnr ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(ephmat(nstsv,nstsv,nbph)) ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! compute the electron-phonon coupling matrix elements call genephmat(iq,ik,dvphmt,dvphir,ephmat) ! k+q-vector in lattice coordinates vl(:)=vkl(:,ik)+vql(:,iq) ! index to k+q-vector call findkpt(vl,isym,ikq) t1=twopi*wkptnr*(occmax/2.d0) ! loop over second-variational states do ist=1,nstsv x=(evalsv(ist,ikq)-efermi)/swidth t2=1.d0-stheta(stype,x) ! loop over phonon branches do i=1,nbph x=(evalsv(ist,ikq)-efermi+wq(i,iq))/swidth t3=1.d0-stheta(stype,x) do jst=1,nstsv if (wq(i,iq).gt.1.d-8) then t4=(t2-t3)/wq(i,iq) else t4=0.d0 end if x=(evalsv(jst,jk)-evalsv(ist,ikq)-wq(i,iq))/swidth t4=t4*sdelta(stype,x)/swidth t5=dble(ephmat(ist,jst,i))**2+aimag(ephmat(ist,jst,i))**2 !$OMP ATOMIC gq(i,iq)=gq(i,iq)+wq(i,iq)*t1*t4*t5 end do end do end do deallocate(ephmat) ! end loop over k-points end do !$OMP END DO !$OMP END PARALLEL ! end loop over phonon q-points end do ! add gq from each process and redistribute if (np_mpi.gt.1) then n=nbph*nqpt call mpi_allreduce(mpi_in_place,gq,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) end if filext='.OUT' if (mp_mpi) then ! write the phonon linewidths to file call writegamma(gq) ! write electron-phonon coupling constants to file call writelambda(wq,gq) end if deallocate(wq,gq,dynq,ev) deallocate(dvphmt,dvphir) deallocate(zfmt,gzfmt) ! restore fracinr fracinr=fracinr0 return end subroutine elk-2.3.22/src/PaxHeaders.22528/phononsc.f900000644002504400250440000000005012337331324016346 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phononsc.f900000644002504400250440000001056512337331324017121 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phononsc use modmain use modphonon use modstore implicit none ! local variables integer is,ia,ja,ias,jas integer ip,nph,i,p real(8) a,b,t1 real(8) ft1(3,maxatoms*maxspecies) complex(8) z1,z2 ! allocatable arrays real(8), allocatable :: vsmt1(:,:,:),vsir1(:) complex(8), allocatable :: dyn(:,:) ! store original parameters natoms0(:)=natoms(:) avec0(:,:)=avec(:,:) atposl0(:,:,:)=atposl(:,:,:) bfcmt00(:,:,:)=bfcmt0(:,:,:) mommtfix0(:,:,:)=mommtfix(:,:,:) tshift0=tshift tforce0=tforce autokpt0=autokpt primcell0=primcell ngridk0(:)=ngridk(:) ! no shifting of atomic basis allowed tshift=.false. ! require forces tforce=.true. ! determine k-point grid size from radkpt autokpt=.true. ! no reduction to primitive cell primcell=.false. ! initialise universal variables call init0 ! initialise q-point dependent variables call init2 ! store original parameters natmtot0=natmtot binv0(:,:)=binv(:,:) atposc0(:,:,:)=atposc(:,:,:) ngridg0(:)=ngridg(:) ngtot0=ngtot ! allocate the Kohn-Sham potential derivative arrays if (allocated(dvsmt)) deallocate(dvsmt) allocate(dvsmt(lmmaxvr,nrcmtmax,natmtot)) if (allocated(dvsir)) deallocate(dvsir) allocate(dvsir(ngtot)) !***** remove ! allocate supercell offset vector array if (allocated(vscph)) deallocate(vscph) allocate(vscph(3,nqptnr)) allocate(dyn(3,natmtot)) ! begin new phonon task 10 continue natoms(:)=natoms0(:) ! find a dynamical matrix to calculate call dyntask(80,filext) ! if nothing more to do then restore original input parameters and return if (iqph.eq.0) then filext='.OUT' natoms(:)=natoms0(:) avec(:,:)=avec0(:,:) atposl(:,:,:)=atposl0(:,:,:) bfcmt0(:,:,:)=bfcmt00(:,:,:) mommtfix(:,:,:)=mommtfix0(:,:,:) tshift=tshift0 tforce=tforce0 autokpt=autokpt0 primcell=primcell0 ngridk(:)=ngridk0(:) return end if write(*,'("Info(phononsc): working on ",A)') 'DYN'//trim(filext) ! phonon dry run: just generate empty DYN files if (task.eq.202) goto 10 ! zero the dynamical matrix row dyn(:,:)=0.d0 dvsmt(:,:,:)=0.d0 dvsir(:)=0.d0 !***** remove ! check to see if mass is considered infinite if (spmass(isph).le.0.d0) goto 20 ! loop over phases: 0 = cos and 1 = sin displacements if ((ivq(1,iqph).eq.0).and.(ivq(2,iqph).eq.0).and.(ivq(3,iqph).eq.0)) then nph=0 else nph=1 end if ! initialise or read the charge density and potentials from file if (task.eq.200) then trdstate=.false. else trdstate=.true. end if ! loop over cos and sin displacements do p=0,nph ! generate the supercell with negative displacement call genscph(p,-deltaph) ! run the ground-state calculation call gndstate ! subsequent calculations will read in this supercell potential trdstate=.true. ! store the total force for the first displacement do ias=1,natmtot ft1(:,ias)=forcetot(:,ias) end do ! store the Kohn-Sham potential for the first displacement allocate(vsmt1(lmmaxvr,nrmtmax,natmtot),vsir1(ngtot)) vsmt1(:,:,:)=vsmt(:,:,:) vsir1(:)=vsir(:) ! generate the supercell again with positive displacement call genscph(p,deltaph) ! run the ground-state calculation again call gndstate ! compute the complex Kohn-Sham potential derivative with implicit q-phase call phdvs(p,vsmt1,vsir1) deallocate(vsmt1,vsir1) ! Fourier transform the force differences to obtain the dynamical matrix z1=1.d0/(dble(nscph)*2.d0*deltaph) ! multiply by i for sin-like displacement if (p.eq.1) z1=z1*zi ias=0 jas=0 do is=1,nspecies ja=0 do ia=1,natoms0(is) ias=ias+1 do i=1,nscph ja=ja+1 jas=jas+1 t1=-dot_product(vqc(:,iqph),vscph(:,i)) z2=z1*cmplx(cos(t1),sin(t1),8) do ip=1,3 t1=-(forcetot(ip,jas)-ft1(ip,jas)) dyn(ip,ias)=dyn(ip,ias)+z2*t1 end do end do end do end do end do 20 continue ! write dynamical matrix row to file ias=0 do is=1,nspecies do ia=1,natoms0(is) ias=ias+1 do ip=1,3 a=dble(dyn(ip,ias)) b=aimag(dyn(ip,ias)) if (abs(a).lt.1.d-12) a=0.d0 if (abs(b).lt.1.d-12) b=0.d0 write(80,'(2G18.10," : is = ",I4,", ia = ",I4,", ip = ",I4)') a,b,is,ia,ip end do end do end do close(80) ! write the complex Kohn-Sham potential derivative to file call writedvs ! delete the non-essential files call phscdelete goto 10 end subroutine elk-2.3.22/src/PaxHeaders.22528/scdft.f900000644002504400250440000000005012337331324015622 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/scdft.f900000644002504400250440000000154112337331324016367 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine scdft use modmain use modscdft implicit none ! local variables integer ik ! allocatable arrays complex(8), allocatable :: achi(:,:) ! initialise global variables call init0 call init1 call init2 ! read Fermi energy from file call readfermi ! get the eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! generate the index to the BdG states call genidxbdg ! initialise the anomalous density allocate(achi(nbdg,nbdg)) call achiinit(achi) ! begin self-consistent loop do iscl=1,maxscl ! invert the BdG equations call bdginv(achi) end do deallocate(achi) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dpotcoul.f900000644002504400250440000000005012337331324016350 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dpotcoul.f900000644002504400250440000000242512337331324017117 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dpotcoul use modmain use modphonon implicit none ! local variables integer nr,ir,igq0 complex(8) zrho0 ! automatic arrays real(8) vn(nrmtmax) ! allocatable arrays complex(8), allocatable :: zfmt(:,:),gzfmt(:,:,:) nr=nrmt(isph) ! solve the complex Poisson's equation in the muffin-tins call genzvclmt(nrmt,nrmtinr,spnrmax,spr,nrmtmax,drhomt,dvclmt) ! compute the monopole potential for effective nuclear charge call potnucl(ptnucl,nr,spr(:,isph),spzn(isph),vn) ! calculate the gradient of the monopole potential allocate(zfmt(lmmaxvr,nrmtmax),gzfmt(lmmaxvr,nrmtmax,3)) do ir=1,nr zfmt(:,ir)=0.d0 zfmt(1,ir)=vn(ir)/y00 end do call gradzfmt(nr,nrmtinr(isph),spr(:,isph),zfmt,nrmtmax,gzfmt) ! subtract gradient component corresponding to the phonon polarisation do ir=1,nr dvclmt(2:4,ir,iasph)=dvclmt(2:4,ir,iasph)-gzfmt(2:4,ir,ipph) end do deallocate(zfmt,gzfmt) ! solve Poisson's equation in the entire unit cell if (iqph.eq.iq0) then igq0=1 else igq0=0 end if call zpotcoul(nrmt,nrmtinr,spnrmax,spr,igq0,gqc,jlgqr,ylmgq,sfacgq,drhoir, & nrmtmax,dvclmt,dvclir,zrho0) return end subroutine elk-2.3.22/src/PaxHeaders.22528/hmlbdg.f900000644002504400250440000000005012337331324015754 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hmlbdg.f900000644002504400250440000000231012337331324016514 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: hmlbdg ! !INTERFACE: subroutine hmlbdg(adelta,h) ! !USES: use modmain use modscdft ! !INPUT/OUTPUT PARAMETERS: ! adelta : anomalous potential (in,complex(nbdg,nbdg)) ! h : BdG Hamiltonian array (out,complex(nmbdg,nmbdg)) ! !DESCRIPTION: ! Sets up the Bogoliubov-de Gennes Hamiltonian matrix: ! $$ H=\begin{pmatrix} h & \Delta \\ ! \Delta^{\dag} & -h^* \end{pmatrix} $$ ! where $h$ and $\Delta$ are the normal and anomalous parts, respectively. ! ! !REVISION HISTORY: ! Created January 2012 (JKD) !EOP !BOC implicit none ! arguments complex(8), intent(in) :: adelta(nbdg,nbdg) complex(8), intent(out) :: h(nmbdg,nmbdg) ! local variables integer i,j,ik,ist ! zero the matrix h(:,:)=0.d0 ! diagonal part of matrix do i=1,nbdg ik=idxbdg(1,i) ist=idxbdg(2,i) h(i,i)=evalsv(ist,ik) h(nbdg+i,nbdg+i)=-conjg(h(i,i)) end do ! off-diagonal anomalous part of matrix do i=1,nbdg do j=1,nbdg h(i,nbdg+j)=adelta(i,j) h(nbdg+i,j)=conjg(adelta(j,i)) end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/dmtotm2.f900000644002504400250440000000005012337331324016105 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dmtotm2.f900000644002504400250440000000514712337331324016660 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. ! !ROUTINE: dmtotm2 ! !INTERFACE: subroutine dmtotm2(l,nspinor,k,p,ld,dmat,tm2) ! !INPUT/OUTPUT PARAMETERS: ! l : angular momentum (in,integer) ! nspinor : number of spinors (in,integer) ! k : k-index of tensor moment (in,integer) ! p : p-index of tensor moment (in,integer) ! ld : leading dimension (in,integer) ! dmat : density matrix (in,complex(ld,nspinor,ls,nspinor)) ! tm2 : 2-index tensor moment (out,complex(-ld:ld,-1:1)) ! !DESCRIPTION: ! Transform the density matrix to a 2-index tensor moment representation, see ! {\it Phys. Rev. B} {\bf 80}, 035121 (2009). ! ! !REVISION HISTORY: ! Created April 2008 (F. Cricchio and L. Nordstrom) ! Modified, January 2014 (JKD) !EOP !BOC implicit none integer, intent(in) :: l,nspinor integer, intent(in) :: k,p integer, intent(in) :: ld complex(8),intent(in) :: dmat(ld,nspinor,ld,nspinor) complex(8),intent(out) :: tm2(-ld:ld,-1:1) ! local variables integer ispn,jspn,x,y integer m1,m2,lm1,lm2 real(8) nlk,nsp,t1,t2,t3 ! external functions real(8) wigner3j,wigner3jf,factnm,factr external wigner3j,wigner3jf,factnm,factr if (l.lt.0) then write(*,*) write(*,'("Error(dmtotm2): l < 0 : ",I8)') l write(*,*) stop end if if ((nspinor.lt.1).or.(nspinor.gt.2)) then write(*,*) write(*,'("Error(dmtotm2): nspinor should be 1 or 2 : ",I8)') nspinor write(*,*) stop end if if (k.lt.0) then write(*,*) write(*,'("Error(dmtotm2): k < 0 : ",I8)') k write(*,*) stop end if if (k.gt.2*l) then write(*,*) write(*,'("Error(dmtotm2): k > 2*l : ",2I8)') k,2*l write(*,*) stop end if if ((p.lt.0).or.(p.gt.1)) then write(*,*) write(*,'("Error(dmtotm2): p should be 0 or 1 : ",I8)') p write(*,*) stop end if ! calculate the 2-index tensor moment; see Eq. (23) in article nlk=factnm(2*l,1)/sqrt(factnm(2*l-k,1)*factnm(2*l+k+1,1)) nsp=1.d0/sqrt(factnm(2+p,1)) t1=dble((-1)**(l))/(nlk*nsp) tm2(:,:)=0.d0 do x=-k,k do y=-p,p do ispn=1,nspinor do jspn=1,nspinor t2=t1*wigner3jf(1,2*p,1,2*jspn-3,2*y,3-2*ispn) if (abs(t2).gt.1.d-10) then lm1=l**2 do m1=-l,l lm1=lm1+1 lm2=l**2 do m2=-l,l lm2=lm2+1 t3=t2*dble((-1)**(1+jspn-m2))*wigner3j(l,k,l,-m2,x,m1) tm2(x,y)=tm2(x,y)+t3*dmat(lm1,ispn,lm2,jspn) end do end do end if end do end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genkmatc.f900000644002504400250440000000005012337331324016310 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genkmatc.f900000644002504400250440000000662012337331324017060 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genkmatc(tvclcr) use modmain use modmpi implicit none ! arguments logical, intent(in) :: tvclcr ! local variables integer ik,ist,ispn integer is,ias,n,lp ! automatic arrays integer idx(nstsv) ! allocatable arrays real(8), allocatable :: vmt(:,:,:),vir(:) complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) complex(8), allocatable :: a(:,:) ! allocate global kinetic matrix elements array if (allocated(kmatc)) deallocate(kmatc) allocate(kmatc(nstsv,nstsv,nkpt)) allocate(vmt(lmmaxvr,nrcmtmax,natmtot),vir(ngtot)) ! convert muffin-tin Kohn-Sham potential to spherical coordinates !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is) !$OMP DO do ias=1,natmtot is=idxis(ias) call rbsht(nrcmt(is),nrcmtinr(is),lradstp,vsmt(:,:,ias),1,vmt(:,:,ias)) end do !$OMP END DO !$OMP END PARALLEL ! mulitply Kohn-Sham potential by characteristic function vir(:)=vsir(:)*cfunir(:) ! generate the spin-orbit coupling radial functions call gensocfr ! index to all states do ist=1,nstsv idx(ist)=ist end do ! loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(apwalm,evecfv,evecsv) & !$OMP PRIVATE(wfmt,wfir,a,ispn,ist) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir(ngtot,nspinor,nstsv)) allocate(a(nstsv,nstsv)) ! get the eigenvalues/vectors from file for input k-point call getevalsv(vkl(:,ik),evalsv(:,ik)) call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! calculate the wavefunctions for all states of the input k-point call genwfsv(.false.,.false.,nstsv,idx,ngk(:,ik),igkig(:,:,ik),apwalm, & evecfv,evecsv,wfmt,ngtot,wfir) ! compute Kohn-Sham potential matrix elements call genvmatk(vmt,vir,wfmt,wfir,kmatc(:,:,ik)) kmatc(:,:,ik)=-kmatc(:,:,ik) ! add second-variational eigenvalues along the diagonal do ist=1,nstsv kmatc(ist,ist,ik)=kmatc(ist,ist,ik)+evalsv(ist,ik) end do ! compute the exchange-correlation magnetic field matrix elements if (spinpol) then call genbmatk(bsmt,bsir,wfmt,wfir,a) kmatc(:,:,ik)=kmatc(:,:,ik)-a(:,:) end if ! add the Coulomb core matrix elements if required if (tvclcr) then call vclcore(wfmt,a) kmatc(:,:,ik)=kmatc(:,:,ik)+a(:,:) end if ! rotate kinetic matrix elements to Cartesian basis call zgemm('N','C',nstsv,nstsv,nstsv,zone,kmatc(:,:,ik),nstsv,evecsv,nstsv, & zzero,a,nstsv) call zgemm('N','N',nstsv,nstsv,nstsv,zone,evecsv,nstsv,a,nstsv,zzero, & kmatc(:,:,ik),nstsv) deallocate(apwalm,evecfv,evecsv) deallocate(wfmt,wfir,a) end do !$OMP END DO !$OMP END PARALLEL ! broadcast matrix elements to every process if (np_mpi.gt.1) then n=nstsv*nstsv do ik=1,nkpt lp=mod(ik-1,np_mpi) call mpi_bcast(kmatc(:,:,ik),n,mpi_double_complex,lp,mpi_comm_kpt,ierror) end do end if deallocate(vmt,vir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/brzint.f900000644002504400250440000000005012337331323016026 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/brzint.f900000644002504400250440000001134212337331323016573 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: brzint ! !INTERFACE: subroutine brzint(nsm,ngridk,nsk,ikmap,nw,wint,n,ld,e,f,g) ! !INPUT/OUTPUT PARAMETERS: ! nsm : level of smoothing for output function (in,integer) ! ngridk : k-point grid size (in,integer(3)) ! nsk : k-point subdivision grid size (in,integer(3)) ! ikmap : map from grid to k-point set ! (in,integer(0:ngridk(1)-1,0:ngridk(2)-1,0:ngridk(3)-1)) ! nw : number of energy divisions (in,integer) ! wint : energy interval (in,real(2)) ! n : number of functions to integrate (in,integer) ! ld : leading dimension (in,integer) ! e : array of energies as a function of k-points (in,real(ld,*)) ! f : array of weights as a function of k-points (in,real(ld,*)) ! g : output function (out,real(nw)) ! !DESCRIPTION: ! Given energy and weight functions, $e$ and $f$, on the Brillouin zone and a ! set of equidistant energies $\omega_i$, this routine computes the integrals ! $$ g(\omega_i)=\frac{\Omega}{(2\pi)^3}\int_{\rm BZ} f({\bf k}) ! \delta(\omega_i-e({\bf k}))d{\bf k}, $$ ! where $\Omega$ is the unit cell volume. This is done by first interpolating ! $e$ and $f$ on a finer $k$-point grid using the trilinear method. Then for ! each $e({\bf k})$ on the finer grid the nearest $\omega_i$ is found and ! $f({\bf k})$ is accumulated in $g(\omega_i)$. If the output function is ! noisy then either {\tt nsk} should be increased or {\tt nw} decreased. ! Alternatively, the output function can be artificially smoothed up to a ! level given by {\tt nsm}. See routine {\tt fsmooth}. ! ! !REVISION HISTORY: ! Created October 2003 (JKD) ! Improved efficiency May 2007 (Sebastian Lebegue) !EOP !BOC implicit none ! arguments integer, intent(in) :: nsm integer, intent(in) :: ngridk(3) integer, intent(in) :: nsk(3) integer, intent(in) :: ikmap(0:ngridk(1)-1,0:ngridk(2)-1,0:ngridk(3)-1) integer, intent(in) :: nw real(8), intent(in) :: wint(2) integer, intent(in) :: n integer, intent(in) :: ld real(8), intent(in) :: e(ld,*) real(8), intent(in) :: f(ld,*) real(8), intent(out) :: g(nw) ! local variables integer i1,i2,i3,j1,j2,j3,k1,k2,k3,i,iw integer i000,i001,i010,i011,i100,i101,i110,i111 real(8) p1,p2,p3,q1,q2,q3 real(8) es,fs,wd,dw,dwi,w1,t1 ! allocatable arrays real(8), allocatable :: f0(:),f1(:) real(8), allocatable :: e0(:),e1(:) real(8), allocatable :: f00(:),f01(:),f10(:),f11(:) real(8), allocatable :: e00(:),e01(:),e10(:),e11(:) if ((ngridk(1).lt.1).or.(ngridk(2).lt.1).or.(ngridk(3).lt.1)) then write(*,*) write(*,'("Error(brzint): ngridk < 1 : ",3I8)') ngridk write(*,*) stop end if if ((nsk(1).lt.1).or.(nsk(2).lt.1).or.(nsk(3).lt.1)) then write(*,*) write(*,'("Error(brzint): nsk < 1 : ",3I8)') nsk write(*,*) stop end if allocate(f0(n),f1(n),e0(n),e1(n)) allocate(f00(n),f01(n),f10(n),f11(n)) allocate(e00(n),e01(n),e10(n),e11(n)) ! length of interval wd=wint(2)-wint(1) ! energy step size dw=wd/dble(nw) dwi=1.d0/dw w1=wint(1) g(:)=0.d0 do j1=0,ngridk(1)-1 k1=mod(j1+1,ngridk(1)) do j2=0,ngridk(2)-1 k2=mod(j2+1,ngridk(2)) do j3=0,ngridk(3)-1 k3=mod(j3+1,ngridk(3)) i000=ikmap(j1,j2,j3); i001=ikmap(j1,j2,k3) i010=ikmap(j1,k2,j3); i011=ikmap(j1,k2,k3) i100=ikmap(k1,j2,j3); i101=ikmap(k1,j2,k3) i110=ikmap(k1,k2,j3); i111=ikmap(k1,k2,k3) do i1=0,nsk(1)-1 p1=dble(i1)/dble(nsk(1)) q1=1.d0-p1 f00(:)=f(:,i000)*q1+f(:,i100)*p1 f01(:)=f(:,i001)*q1+f(:,i101)*p1 f10(:)=f(:,i010)*q1+f(:,i110)*p1 f11(:)=f(:,i011)*q1+f(:,i111)*p1 e00(:)=e(:,i000)*q1+e(:,i100)*p1 e01(:)=e(:,i001)*q1+e(:,i101)*p1 e10(:)=e(:,i010)*q1+e(:,i110)*p1 e11(:)=e(:,i011)*q1+e(:,i111)*p1 do i2=0,nsk(2)-1 p2=dble(i2)/dble(nsk(2)) q2=1.d0-p2 f0(:)=f00(:)*q2+f10(:)*p2 f1(:)=f01(:)*q2+f11(:)*p2 e0(:)=e00(:)*q2+e10(:)*p2 e1(:)=e01(:)*q2+e11(:)*p2 do i3=0,nsk(3)-1 p3=dble(i3)/dble(nsk(3)) q3=1.d0-p3 do i=1,n fs=f0(i)*q3+f1(i)*p3 es=e0(i)*q3+e1(i)*p3 iw=nint((es-w1)*dwi)+1 if ((iw.ge.1).and.(iw.le.nw)) g(iw)=g(iw)+fs end do end do end do end do end do end do end do ! normalise function t1=dw*dble(ngridk(1)*ngridk(2)*ngridk(3))*dble(nsk(1)*nsk(2)*nsk(3)) t1=1.d0/t1 g(:)=t1*g(:) ! smooth output function if required if (nsm.gt.0) call fsmooth(nsm,nw,1,g) deallocate(f0,f1,e0,e1) deallocate(f00,f01,f10,f11) deallocate(e00,e01,e10,e11) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/force.f900000644002504400250440000000005012337331324015615 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/force.f900000644002504400250440000001451312337331324016365 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: force ! !INTERFACE: subroutine force ! !USES: use modmain use modtest use modmpi ! !DESCRIPTION: ! Computes the various contributions to the atomic forces. In principle, the ! force acting on a nucleus is simply the gradient at that site of the ! classical electrostatic potential from the other nuclei and the electronic ! density. This is a result of the Hellmann-Feynman theorem. However because ! the basis set is dependent on the nuclear coordinates and is not complete, ! the Hellman-Feynman force is inacurate and corrections to it are required. ! The first is the core correction which arises because the core wavefunctions ! were determined by neglecting the non-spherical parts of the Kohn-Sham ! potential $v_s$. Explicitly this is given by ! $$ {\bf F}_{\rm core}^{\alpha}=\int_{\rm MT_{\alpha}} v_s({\bf r}) ! \nabla\rho_{\rm core}^{\alpha}({\bf r})\,d{\bf r} $$ ! for atom $\alpha$. The second, which is the incomplete basis set (IBS) ! correction, is due to the position dependence of the APW functions, and is ! derived by considering the change in total energy if the eigenvector ! coefficients were fixed and the APW functions themselves were changed. This ! would result in changes to the first-variational Hamiltonian and overlap ! matrices given by ! \begin{align*} ! \delta H_{\bf G,G'}^{\alpha}&=i({\bf G-G'}) ! \left(H^{\alpha}_{\bf G+k,G'+k}-\frac{1}{2}({\bf G+k})\cdot({\bf G'+k}) ! \tilde{\Theta}_{\alpha}({\bf G-G'})e^{-i({\bf G-G'})\cdot{\bf r}_{\alpha}} ! \right)\\ ! \delta O_{\bf G,G'}^{\alpha}&=i({\bf G-G'})\left(O^{\alpha}_{\bf G+k,G'+k} ! -\tilde{\Theta}_{\alpha}({\bf G-G'})e^{-i({\bf G-G'})\cdot{\bf r}_{\alpha}} ! \right) ! \end{align*} ! where both ${\bf G}$ and ${\bf G'}$ run over the APW indices; ! $\tilde{\Theta}_{\alpha}$ is the form factor of the smooth step function for ! muffin-tin $\alpha$; and $H^{\alpha}$ and $O^{\alpha}$ are the muffin-tin ! Hamiltonian and overlap matrices, respectively. The APW-local-orbital part ! is given by ! \begin{align*} ! \delta H_{\bf G,G'}^{\alpha}&=i({\bf G+k})H^{\alpha}_{\bf G+k,G'+k}\\ ! \delta O_{\bf G,G'}^{\alpha}&=i({\bf G+k})O^{\alpha}_{\bf G+k,G'+k} ! \end{align*} ! where ${\bf G}$ runs over the APW indices and ${\bf G'}$ runs over the ! local-orbital indices. There is no contribution from the ! local-orbital-local-orbital part of the matrices. We can now write the IBS ! correction in terms of the basis of first-variational states as ! \begin{align*} ! {\bf F}_{ij}^{\alpha{\bf k}}=\sum_{\bf G,G'} ! b^{i{\bf k}*}_{\bf G}b^{j{\bf k}}_{\bf G'}\left( ! \delta H_{\bf G,G'}^{\alpha}-\epsilon_j\delta O_{\bf G,G'}^{\alpha}\right), ! \end{align*} ! where $b^{i{\bf k}}$ is the first-variational eigenvector. ! Finally, the ${\bf F}_{ij}^{\alpha{\bf k}}$ matrix elements can be ! multiplied by the second-variational coefficients, and contracted over all ! indices to obtain the IBS force: ! \begin{align*} ! {\bf F}_{\rm IBS}^{\alpha}=\sum_{\bf k}w_{\bf k}\sum_{l\sigma}n_{l{\bf k}} ! \sum_{ij}c_{\sigma i}^{l{\bf k}*}c_{\sigma j}^{l{\bf k}} ! {\bf F}_{ij}^{\alpha{\bf k}} ! +\int_{\rm MT_{\alpha}}v_s({\bf r})\nabla\left[\rho({\bf r}) ! -\rho^{\alpha}_{\rm core}({\bf r})\right]\,d{\bf r}, ! \end{align*} ! where $c^{l{\bf k}}$ are the second-variational coefficients, $w_{\bf k}$ ! are the $k$-point weights, $n_{l{\bf k}}$ are the occupancies. See routines ! {\tt hmlaa}, {\tt olpaa}, {\tt hmlalo}, {\tt olpalo}, {\tt energy}, ! {\tt eveqn} and {\tt gencfun}. ! ! !REVISION HISTORY: ! Created January 2004 (JKD) ! Fixed problem with second-variational forces, May 2008 (JKD) !EOP !BOC implicit none ! local variables integer ik,is,ias integer nr,nri,i real(8) sum,t1 real(8) ts0,ts1 ! allocatable arrays real(8), allocatable :: grfmt(:,:,:) ! external functions real(8) rfmtinp external rfmtinp call timesec(ts0) allocate(grfmt(lmmaxvr,nrmtmax,3)) !--------------------------------! ! Hellmann-Feynman force ! !--------------------------------! ! compute the gradient of the Coulomb potential at the nucleus do ias=1,natmtot is=idxis(ias) call gradrfmt(nrmt(is),nrmtinr(is),spr(:,is),vclmt(:,:,ias),nrmtmax,grfmt) forcehf(:,ias)=-spzn(is)*grfmt(1,irfhf(is),:)*y00 end do ! symmetrise Hellmann-Feynman force call symvect(.false.,forcehf) !---------------------------------! ! IBS correction to force ! !---------------------------------! ! set the IBS forces to zero forceibs(:,:)=0.d0 if (tfibs) then ! compute k-point dependent contribution to the IBS force !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle call forcek(ik) end do !$OMP END DO !$OMP END PARALLEL ! add IBS forces from each process and redistribute if (np_mpi.gt.1) then call mpi_allreduce(mpi_in_place,forceibs,3*natmtot,mpi_double_precision, & mpi_sum,mpi_comm_kpt,ierror) end if ! integral of Kohn-Sham potential with gradient of density do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) call gradrfmt(nr,nri,spr(:,is),rhomt(:,:,ias),nrmtmax,grfmt) do i=1,3 t1=rfmtinp(1,nr,nri,spr(:,is),vsmt(:,:,ias),grfmt(:,:,i)) forceibs(i,ias)=forceibs(i,ias)+t1 end do end do ! symmetrise IBS force call symvect(.false.,forceibs) end if ! total force do ias=1,natmtot forcetot(:,ias)=forcehf(:,ias)+forceibs(:,ias) end do ! symmetrise total force call symvect(.false.,forcetot) ! remove net total force (center of mass should not move) do i=1,3 sum=0.d0 do ias=1,natmtot sum=sum+forcetot(i,ias) end do sum=sum/dble(natmtot) forcetot(i,:)=forcetot(i,:)-sum end do ! zero force on atoms with negative mass do ias=1,natmtot is=idxis(ias) if (spmass(is).le.0.d0) forcetot(:,ias)=0.d0 end do ! compute maximum force magnitude over all atoms forcemax=0.d0 do ias=1,natmtot t1=sqrt(forcetot(1,ias)**2+forcetot(2,ias)**2+forcetot(3,ias)**2) if (t1.gt.forcemax) forcemax=t1 end do deallocate(grfmt) call timesec(ts1) timefor=timefor+ts1-ts0 ! write total forces to test file call writetest(750,'total forces',nv=3*natmtot,tol=1.d-3,rva=forcetot) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hmlxbsek.f900000644002504400250440000000005012337331324016334 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hmlxbsek.f900000644002504400250440000000672312337331324017110 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hmlxbsek(ik2) use modmain implicit none ! arguments integer, intent(in) :: ik2 ! local variables integer i1,i2,j1,j2 integer a1,a2,b1,b2 integer ik1,is,ias,l,irc integer ist1,ist2,jst1,jst2 real(8) t0 complex(8) zrho0,z1 ! automatic arrays integer idx(nstsv) complex(8) zflm(lmmaxvr) ! allocatable arrays complex(8), allocatable :: wfmt1(:,:,:,:,:),wfmt2(:,:,:,:,:) complex(8), allocatable :: wfir1(:,:,:),wfir2(:,:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zvclmt(:,:,:,:),zvclir(:,:) complex(8), allocatable :: zfmt(:,:) ! external functions complex(8) zfinp external zfinp ! allocate local arrays allocate(wfmt1(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfmt2(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir1(ngtot,nspinor,nstsv),wfir2(ngtot,nspinor,nstsv)) allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot),zrhoir(ngtot)) allocate(zvclmt(lmmaxvr,nrcmtmax,natmtot,nvcbse),zvclir(ngtot,nvcbse)) allocate(zfmt(lmmaxvr,nrcmtmax)) ! index to all states do ist1=1,nstsv idx(ist1)=ist1 end do ! calculate the wavefunctions for all states of k-point ik2 call genwfsvp(.false.,.false.,nstsv,idx,vkl(:,ik2),wfmt2,ngtot,wfir2) l=0 do i2=1,nvbse ist2=istbse(i2,ik2) do j2=1,ncbse jst2=jstbse(j2,ik2) a2=ijkbse(i2,j2,ik2) l=l+1 ! calculate the complex overlap density call genzrho(.true.,.true.,wfmt2(:,:,:,:,ist2),wfir2(:,:,ist2), & wfmt2(:,:,:,:,jst2),wfir2(:,:,jst2),zrhomt,zrhoir) ! compute the Coulomb potential call genzvclmt(nrcmt,nrcmtinr,nrcmtmax,rcmt,nrcmtmax,zrhomt,zvclmt(:,:,:,l)) call zpotcoul(nrcmt,nrcmtinr,nrcmtmax,rcmt,1,gc,jlgr,ylmg,sfacg,zrhoir, & nrcmtmax,zvclmt(:,:,:,l),zvclir(:,l),zrho0) end do end do t0=occmax*wkptnr ! start loop over ik1 do ik1=1,nkptnr if (ik1.eq.ik2) then wfmt1(:,:,:,:,:)=wfmt2(:,:,:,:,:) wfir1(:,:,:)=wfir2(:,:,:) else call genwfsvp(.false.,.false.,nstsv,idx,vkl(:,ik1),wfmt1,ngtot,wfir1) end if do i1=1,nvbse ist1=istbse(i1,ik1) do j1=1,ncbse jst1=jstbse(j1,ik1) a1=ijkbse(i1,j1,ik1) ! calculate the complex overlap density call genzrho(.true.,.true.,wfmt1(:,:,:,:,ist1),wfir1(:,:,ist1), & wfmt1(:,:,:,:,jst1),wfir1(:,:,jst1),zrhomt,zrhoir) l=0 do i2=1,nvbse ist2=istbse(i2,ik2) do j2=1,ncbse jst2=jstbse(j2,ik2) a2=ijkbse(i2,j2,ik2) l=l+1 ! compute the matrix element z1=t0*zfinp(.true.,zrhomt,zrhoir,zvclmt(:,:,:,l),zvclir(:,l)) hmlbse(a1,a2)=hmlbse(a1,a2)+z1 ! compute off-diagonal blocks if required if (bsefull) then b1=a1+nbbse b2=a2+nbbse hmlbse(b1,b2)=hmlbse(b1,b2)-conjg(z1) ! conjugate the potential do ias=1,natmtot is=idxis(ias) do irc=1,nrcmt(is) zflm(:)=zvclmt(:,irc,ias,l) call zflmconj(lmaxvr,zflm,zvclmt(:,irc,ias,l)) end do end do zvclir(:,l)=conjg(zvclir(:,l)) z1=t0*zfinp(.true.,zrhomt,zrhoir,zvclmt(:,:,:,l),zvclir(:,l)) hmlbse(a1,b2)=hmlbse(a1,b2)+z1 hmlbse(b1,a2)=hmlbse(b1,a2)-conjg(z1) end if end do end do end do end do end do deallocate(wfmt1,wfmt2,wfir1,wfir2) deallocate(zrhomt,zrhoir,zvclmt,zvclir,zfmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/modtest.f900000644002504400250440000000005012337331322016174 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modtest.f900000644002504400250440000000461612337331322016747 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modtest use modmpi ! if test is .true. then the test variables are written to file logical test contains subroutine writetest(id,descr,nv,iv,iva,tol,rv,rva,zv,zva) implicit none ! arguments integer, intent(in) :: id character(*), intent(in) :: descr integer, optional, intent(in) :: nv integer, optional, intent(in) :: iv integer, optional, intent(in) :: iva(*) real(8), optional, intent(in) :: tol real(8), optional, intent(in) :: rv real(8), optional, intent(in) :: rva(*) complex(8), optional, intent(in) :: zv complex(8), optional, intent(in) :: zva(*) ! local variables integer i character(256) fname if (.not.test) return if (.not.mp_mpi) return if ((id.lt.0).or.(id.gt.999)) then write(*,*) write(*,'("Error(writetest): id out of range : ",I8)') id write(*,*) stop end if if ((present(iva)).or.(present(rva)).or.(present(zva))) then if (.not.present(nv)) then write(*,*) write(*,'("Error(writetest): missing argument nv")') write(*,*) stop else if (nv.le.0) then write(*,*) write(*,'("Error(writetest): nv <= 0 : ",I8)') nv write(*,*) stop end if end if end if if ((present(rv)).or.(present(rva)).or.(present(zv)).or.(present(zva))) then if (.not.present(tol)) then write(*,*) write(*,'("Error(writetest): missing argument tol")') write(*,*) stop end if end if write(fname,'("TEST",I3.3,".OUT")') id open(90,file=trim(fname),action='WRITE',form='FORMATTED') write(90,'("''",A,"''")') trim(descr) if (present(iv)) then write(90,'(2I8)') 1,1 write(90,'(2I8)') 1,iv else if (present(rv)) then write(90,'(2I8)') 2,1 write(90,'(G22.12)') tol write(90,'(I8,G22.12)') 1,rv else if (present(zv)) then write(90,'(2I8)') 3,1 write(90,'(G22.12)') tol write(90,'(I8,2G22.12)') 1,dble(zv),aimag(zv) else if (present(iva)) then write(90,'(2I8)') 1,nv do i=1,nv write(90,'(2I8)') i,iva(i) end do else if (present(rva)) then write(90,'(2I8)') 2,nv write(90,'(G22.12)') tol do i=1,nv write(90,'(I8,G22.12)') i,rva(i) end do else if (present(zva)) then write(90,'(2I8)') 3,nv write(90,'(G22.12)') tol do i=1,nv write(90,'(I8,2G22.12)') i,dble(zva(i)),aimag(zva(i)) end do end if close(90) return end subroutine end module elk-2.3.22/src/PaxHeaders.22528/eveqnfvr.f900000644002504400250440000000005012337331323016352 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/eveqnfvr.f900000644002504400250440000001700212337331323017116 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: eveqnfvr ! !INTERFACE: subroutine eveqnfvr(nmatp,ngp,vpc,h,o,evalfv,evecfv) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! nmatp : order of overlap and Hamiltonian matrices (in,integer) ! ngp : number of G+k-vectors for augmented plane waves (in,integer) ! vpc : k-vector in Cartesian coordinates (in,real(3)) ! h,o : Hamiltonian and overlap matrices in packed or upper triangular ! form (in,complex(*)) ! evalfv : first-variational eigenvalues (out,real(nstfv)) ! evecfv : first-variational eigenvectors (out,complex(nmatmax,nstfv)) ! !DESCRIPTION: ! This routine solves the first-variational eigenvalue equation for the ! special case when inversion symmetry is present. In this case the ! Hamiltonian and overlap matrices can be made real by using appropriate ! linear combinations of the local-orbitals for atoms related by inversion ! symmetry. These are derived from the effect of parity and complex ! conjugation on the spherical harmonics: $P Y_{lm}=(-1)^l Y_{lm}$ and ! $(Y_{lm})^*=(-1)^mY_{l-m}$. ! ! !REVISION HISTORY: ! Created May 2011 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: nmatp,ngp real(8), intent(in) :: vpc(3) complex(8), intent(in) :: h(*),o(*) real(8), intent(out) :: evalfv(nstfv) complex(8), intent(out) :: evecfv(nmatmax,nstfv) ! local variables integer is,ia,ja,jas integer ilo,i,j,k,l,m integer i1,i2,j1,j2 integer k1,k2,k3,k4 integer l1,l2,m1,m2 integer lwork,info real(8) v(3),vl,vu real(8) t1,t2,t3,t4 real(8) ts0,ts1 complex(8) h1,h2,o1,o2,z1 ! allocatable arrays logical, allocatable :: tr(:),tp(:) integer, allocatable :: idx(:),s(:),map(:,:) integer, allocatable :: iwork(:),ifail(:) real(8), allocatable :: rh(:),ro(:),w(:) real(8), allocatable :: rv(:,:),work(:) complex(8), allocatable :: zp(:) call timesec(ts0) allocate(tr(nlotot),tp(nlotot)) allocate(idx(nlotot),s(nlotot)) allocate(map(nlotot,nlotot)) allocate(zp(nlotot)) tp(:)=.false. i=0 do is=1,nspecies do ia=1,natoms(is) ! symmetry equivalent atom, mapped with inversion ja=ieqatom(ia,is,2) jas=idxas(ja,is) ! residual phase factor v(:)=atposc(:,ia,is)+atposc(:,ja,is) t1=0.5d0*dot_product(vpc(:),v(:)) z1=cmplx(cos(t1),sin(t1),8) do ilo=1,nlorb(is) l=lorbl(ilo,is) do m=-l,l i=i+1 ! index to conjugate local-orbital in symmetry equivalent atom idx(i)=idxlo(idxlm(l,-m),ilo,jas) if (ia.ne.ja) then ! sign of parity and conjugation operators if (mod(l+m,2).eq.0) then s(i)=1 else s(i)=-1 end if if (ia.lt.ja) then ! if ia < ja use the real part of the sum of matrix elements tr(i)=.true. else if (ia.gt.ja) then ! if ia > ja use the imaginary part of the difference of matrix elements s(i)=-s(i) tr(i)=.false. end if else ! if ia = ja then use real function when l even and imaginary when l is odd if (mod(m,2).eq.0) then s(i)=1 else s(i)=-1 end if ! new function should be real if symmetric or imaginary if antisymmetric if (mod(l,2).eq.0) then ! l even if (m.ge.0) then tr(i)=.true. else s(i)=-s(i) tr(i)=.false. end if else ! l odd if (m.ge.0) then tr(i)=.false. else s(i)=-s(i) tr(i)=.true. end if end if end if ! phase factors if required if (abs(t1).gt.1.d-8) then zp(i)=z1 tp(i)=.true. end if end do end do end do end do ! map from local-orbital indices to position in matrix do m=1,nlotot j=ngp+m do l=1,m i=ngp+l map(l,m)=i+(j-1)*nmatp map(m,l)=map(l,m) end do end do !---------------------------------! ! real Hamiltonian matrix ! !---------------------------------! allocate(rh(nmatp**2)) ! do j=1,ngp k=(j-1)*nmatp+1 call dcopy(j,h(k),2,rh(k),1) end do ! do m1=1,nlotot j1=ngp+m1 j2=ngp+idx(m1) do i=1,ngp k1=i+(j1-1)*nmatp k2=i+(j2-1)*nmatp h1=h(k1); h2=h(k2) if (tp(m1)) then h1=h1*zp(m1); h2=h2*zp(m1) end if if (tr(m1)) then rh(k1)=dble(h1)+s(m1)*dble(h2) else rh(k1)=aimag(h1)+s(m1)*aimag(h2) end if end do end do ! do m1=1,nlotot m2=idx(m1) do l1=1,m1 l2=idx(l1) k1=map(l1,m1); k2=map(l1,m2); k3=map(l2,m1); k4=map(l2,m2) if ((tr(l1).and.tr(m1)).or.((.not.tr(l1)).and.(.not.tr(m1)))) then rh(k1)=dble(h(k1))+s(m1)*dble(h(k2))+s(l1)*(dble(h(k3))+s(m1)*dble(h(k4))) else t2=aimag(h(k2)) if (l1.gt.m2) t2=-t2 t3=aimag(h(k3)) if (l2.gt.m1) t3=-t3 t4=aimag(h(k4)) if (l2.gt.m2) t4=-t4 rh(k1)=aimag(h(k1))+s(m1)*t2+s(l1)*(t3+s(m1)*t4) if (.not.tr(l1)) rh(k1)=-rh(k1) end if end do end do !-----------------------------! ! real overlap matrix ! !-----------------------------! allocate(ro(nmatp**2)) ! do j=1,ngp k=(j-1)*nmatp+1 call dcopy(j,o(k),2,ro(k),1) end do ! do m1=1,nlotot j1=ngp+m1 j2=ngp+idx(m1) do i=1,ngp k1=i+(j1-1)*nmatp k2=i+(j2-1)*nmatp o1=o(k1); o2=o(k2) if (tp(m1)) then o1=o1*zp(m1); o2=o2*zp(m1) end if if (tr(m1)) then ro(k1)=dble(o1)+s(m1)*dble(o2) else ro(k1)=aimag(o1)+s(m1)*aimag(o2) end if end do end do ! do m1=1,nlotot m2=idx(m1) do l1=1,m1 l2=idx(l1) k1=map(l1,m1); k2=map(l1,m2); k3=map(l2,m1); k4=map(l2,m2) if ((tr(l1).and.tr(m1)).or.((.not.tr(l1)).and.(.not.tr(m1)))) then ro(k1)=dble(o(k1))+s(m1)*dble(o(k2))+s(l1)*(dble(o(k3))+s(m1)*dble(o(k4))) else t2=aimag(o(k2)) if (l1.gt.m2) t2=-t2 t3=aimag(o(k3)) if (l2.gt.m1) t3=-t3 t4=aimag(o(k4)) if (l2.gt.m2) t4=-t4 ro(k1)=aimag(o(k1))+s(m1)*t2+s(l1)*(t3+s(m1)*t4) if (.not.tr(l1)) ro(k1)=-ro(k1) end if end do end do ! solve the generalised eigenvalue problem for real symmetric matrices allocate(iwork(5*nmatp)) allocate(ifail(nmatp)) allocate(w(nmatp)) allocate(rv(nmatp,nstfv)) lwork=8*nmatp allocate(work(lwork)) call dsygvx(1,'V','I','U',nmatp,rh,nmatp,ro,nmatp,vl,vu,1,nstfv,evaltol,m,w, & rv,nmatp,work,lwork,iwork,ifail,info) if (info.ne.0) then write(*,*) write(*,'("Error(eveqnfvr): diagonalisation failed")') write(*,'(" DSYGVX returned INFO = ",I8)') info if (info.gt.nmatp) then i=info-nmatp write(*,'(" The leading minor of the overlap matrix of order ",I8)') i write(*,'(" is not positive definite")') write(*,'(" Order of overlap matrix : ",I8)') nmatp end if write(*,*) stop end if evalfv(1:nstfv)=w(1:nstfv) ! reconstruct the complex eigenvectors do j=1,nstfv evecfv(1:ngp,j)=rv(1:ngp,j) evecfv(ngp+1:nmatp,j)=0.d0 do l1=1,nlotot i1=ngp+l1 i2=ngp+idx(l1) t1=rv(i1,j) if (tr(l1)) then evecfv(i1,j)=evecfv(i1,j)+t1 evecfv(i2,j)=evecfv(i2,j)+s(l1)*t1 else evecfv(i1,j)=evecfv(i1,j)-cmplx(0.d0,t1,8) evecfv(i2,j)=evecfv(i2,j)-cmplx(0.d0,s(l1)*t1,8) end if end do do l1=1,nlotot if (tp(l1)) then i1=ngp+l1 evecfv(i1,j)=evecfv(i1,j)*zp(l1) end if end do end do deallocate(iwork,ifail,w,rv,work) deallocate(tr,tp,idx,s,map,rh,ro,zp) call timesec(ts1) !$OMP ATOMIC timefv=timefv+ts1-ts0 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rfpack.f900000644002504400250440000000005012337331323015764 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rfpack.f900000644002504400250440000000224212337331323016530 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine rfpack(tpack,n,nr,nri,ld,rfmt,rfir,v) use modmain implicit none ! arguments logical, intent(in) :: tpack integer, intent(inout) :: n integer, intent(in) :: nr(nspecies),nri(nspecies) integer, intent(in) :: ld real(8), intent(inout) :: rfmt(lmmaxvr,ld,natmtot) real(8), intent(inout) :: rfir(ngtot) real(8), intent(out) :: v(*) ! local variables integer is,ias,ir,lmmax,lm if (tpack) then ! pack the function do ias=1,natmtot is=idxis(ias) lmmax=lmmaxinr do ir=1,nr(is) do lm=1,lmmax n=n+1 v(n)=rfmt(lm,ir,ias) end do if (ir.eq.nri(is)) lmmax=lmmaxvr end do end do call dcopy(ngtot,rfir,1,v(n+1),1) n=n+ngtot else ! unpack the function do ias=1,natmtot is=idxis(ias) lmmax=lmmaxinr do ir=1,nr(is) do lm=1,lmmax n=n+1 rfmt(lm,ir,ias)=v(n) end do if (ir.eq.nri(is)) lmmax=lmmaxvr end do end do call dcopy(ngtot,v(n+1),1,rfir,1) n=n+ngtot end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/genwiq2.f900000644002504400250440000000005012337331323016072 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genwiq2.f900000644002504400250440000000606012337331323016640 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genwiq2 ! !INTERFACE: subroutine genwiq2 ! !USES: use modmain use modtest ! !DESCRIPTION: ! The Fock matrix elements ! $$ V^{\rm NL}_{ij{\bf k}}\equiv\sum_{l{\bf k'}}\int ! \frac{\Psi^{\dag}_{i{\bf k}}({\bf r})\cdot\Psi_{l{\bf k}'}({\bf r}) ! \Psi^{\dag}_{l{\bf k}'}({\bf r}')\cdot\Psi_{j{\bf k}}({\bf r}')} ! {|{\bf r}-{\bf r'}|}\,d{\bf r}\,d{\bf r'} $$ ! contain a divergent term in the sum over ${\bf k}'$ which behaves as ! $1/q^2$, where ${\bf q}\equiv{\bf k}-{\bf k}'$ is in the first Brillouin ! zone. The resulting convergence with respect to the number of discrete ! $q$-points is very slow. This routine computes the weights ! \begin{align}\label{genwiq2_1} ! w_{{\bf q}_i}\equiv\int_{V_i}\frac{1}{q^2}\,d{\bf q}\;, ! \end{align} ! where the integral is over the small parallelepiped centered on ${\bf q}_i$, ! so that integrals over the first Brillouin zone of the form ! $$ I=\int_{\rm BZ}\frac{f({\bf q})}{q^2}\,d{\bf q}\;, $$ ! can be approximated by the sum ! $$ I\approx\sum_i w_{{\bf q}_i}f({\bf q}_i) $$ ! which converges rapidly with respect to the number of $q$-points for smooth ! functions $f$. The integral in (\ref{genwiq2_1}) is determined by evaluating ! it numerically on increasingly finer grids and extrapolating to the ! continuum. Agreement with Mathematica to at least 10 significant figures. ! ! !REVISION HISTORY: ! Created August 2004 (JKD,SS) !EOP !BOC implicit none ! local variables integer, parameter :: np=5 integer, parameter :: ns0=10,nss=20 integer ns,iq,i1,i2,i3,i,ip real(8) d(3),dv,sum,t1,t2 real(8) v1(3),v2(3),v3(3) real(8) xa(np),ya(np),c(np) ! external functions real(8) polynom external polynom ! allocate global wiq2 array if (allocated(wiq2)) deallocate(wiq2) allocate(wiq2(nqpt)) ! begin loop over q-points, note that the vectors vqc are assumed to be in the ! first Brillouin zone do iq=1,nqpt ! loop over different subdivisions ns=ns0 do ip=1,np ! subdivision vectors in lattice coordinates do i=1,3 d(i)=1.d0/(dble(ngridk(i)*2*ns)) end do ! smallest volume element dv=omegabz*d(1)*d(2)*d(3) ! compute the integral of 1/q^2 sum=0.d0 do i1=-ns,ns-1 t1=dble(i1)*d(1) v1(:)=vqc(:,iq)+t1*bvec(:,1) do i2=-ns,ns-1 t1=dble(i2)*d(2) v2(:)=v1(:)+t1*bvec(:,2) do i3=-ns,ns-1 t1=dble(i3)*d(3) v3(:)=v2(:)+t1*bvec(:,3) t2=v3(1)**2+v3(2)**2+v3(3)**2 if (t2.gt.1.d-14) then sum=sum+1.d0/t2 end if end do end do end do sum=sum*dv xa(ip)=dv**(1.d0/3.d0) ya(ip)=sum ! increment number of subdivisions ns=ns+nss end do ! extrapolate the volume element to zero with a polynomial wiq2(iq)=polynom(0,np,xa,ya,c,0.d0) end do ! write wiq2 to test file call writetest(800,'1/q^2 weights (wiq2)',nv=nqpt,tol=1.d-8,rva=wiq2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/olprad.f900000644002504400250440000000005012337331323015777 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/olprad.f900000644002504400250440000000426312337331323016550 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: olprad ! !INTERFACE: subroutine olprad ! !USES: use modmain ! !DESCRIPTION: ! Calculates the radial overlap integrals of the APW and local-orbital basis ! functions. In other words, for atom $\alpha$, it computes integrals of the ! form ! $$ o^{\alpha}_{qp}=\int_0^{R_i}u^{\alpha}_{q;l_p}(r)v^{\alpha}_p(r)r^2dr $$ ! and ! $$ o^{\alpha}_{pp'}=\int_0^{R_i}v^{\alpha}_p(r)v^{\alpha}_{p'}(r)r^2dr, ! \quad l_p=l_{p'} $$ ! where $u^{\alpha}_{q;l}$ is the $q$th APW radial function for angular ! momentum $l$; and $v^{\alpha}_p$ is the $p$th local-orbital radial function ! and has angular momentum $l_p$. ! ! !REVISION HISTORY: ! Created November 2003 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ias,nr integer ilo,jlo,l,io ! allocatable arrays real(8), allocatable :: fr(:),gr(:) ! automatic arrays real(8) r2(nrmtmax) do is=1,nspecies nr=nrmt(is) r2(1:nr)=spr(1:nr,is)**2 !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(fr,gr,ias) & !$OMP PRIVATE(ilo,jlo,l,io) SHARED(is) !$OMP DO do ia=1,natoms(is) allocate(fr(nrmtmax),gr(nrmtmax)) ias=idxas(ia,is) !--------------------------------------! ! APW-local-orbital integtrals ! !--------------------------------------! do ilo=1,nlorb(is) l=lorbl(ilo,is) do io=1,apword(l,is) fr(1:nr)=apwfr(1:nr,1,io,l,ias)*lofr(1:nr,1,ilo,ias)*r2(1:nr) call fderiv(-1,nr,spr(:,is),fr,gr) oalo(io,ilo,ias)=gr(nr) end do end do !-----------------------------------------------! ! local-orbital-local-orbital integrals ! !-----------------------------------------------! do ilo=1,nlorb(is) l=lorbl(ilo,is) do jlo=1,nlorb(is) if (lorbl(jlo,is).eq.l) then fr(1:nr)=lofr(1:nr,1,ilo,ias)*lofr(1:nr,1,jlo,ias)*r2(1:nr) call fderiv(-1,nr,spr(:,is),fr,gr) ololo(ilo,jlo,ias)=gr(nr) end if end do end do deallocate(fr,gr) end do !$OMP END DO !$OMP END PARALLEL end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/potcoul.f900000644002504400250440000000005012337331324016204 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/potcoul.f900000644002504400250440000000451012337331324016750 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: potcoul ! !INTERFACE: subroutine potcoul ! !USES: use modmain ! !DESCRIPTION: ! Calculates the Coulomb potential of the real charge density stored in the ! global variables {\tt rhomt} and {\tt rhoir} by solving Poisson's equation. ! These variables are coverted to complex representations and passed to the ! routine {\tt zpotcoul}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ias,nr real(8) t1 complex(8) zrho0 ! automatic arrays real(8) vn(nrmtmax) ! allocatable arrays complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zvclmt(:,:,:),zvclir(:) allocate(zrhomt(lmmaxvr,nrmtmax,natmtot)) ! convert real muffin-tin charge density to complex spherical harmonic expansion !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is) !$OMP DO do ias=1,natmtot is=idxis(ias) call rtozfmt(nrmt(is),nrmtinr(is),1,rhomt(:,:,ias),1,zrhomt(:,:,ias)) end do !$OMP END DO !$OMP END PARALLEL ! solve the complex Poisson's equation in the muffin-tins allocate(zvclmt(lmmaxvr,nrmtmax,natmtot)) call genzvclmt(nrmt,nrmtinr,spnrmax,spr,nrmtmax,zrhomt,zvclmt) deallocate(zrhomt) ! add the nuclear monopole potentials t1=1.d0/y00 do is=1,nspecies nr=nrmt(is) call potnucl(ptnucl,nr,spr(:,is),spzn(is),vn) do ia=1,natoms(is) ias=idxas(ia,is) zvclmt(1,1:nr,ias)=zvclmt(1,1:nr,ias)+t1*vn(1:nr) end do end do ! store real interstitial charge density in complex array allocate(zrhoir(ngtot)) zrhoir(:)=rhoir(:) ! solve Poisson's equation in the entire unit cell allocate(zvclir(ngtot)) call zpotcoul(nrmt,nrmtinr,spnrmax,spr,1,gc,jlgr,ylmg,sfacg,zrhoir,nrmtmax, & zvclmt,zvclir,zrho0) ! convert complex muffin-tin potential to real spherical harmonic expansion !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is) !$OMP DO do ias=1,natmtot is=idxis(ias) call ztorfmt(nrmt(is),nrmtinr(is),1,zvclmt(:,:,ias),1,vclmt(:,:,ias)) end do !$OMP END DO !$OMP END PARALLEL ! store complex interstitial potential in real array call dcopy(ngtot,zvclir,2,vclir,1) deallocate(zrhoir,zvclmt,zvclir) ! apply constant electric field if required if (efieldpol) call potefield return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hflocal.f900000644002504400250440000000005012337331324016127 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hflocal.f900000644002504400250440000000304412337331324016674 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hflocal(vmt,vir,bmt,bir) use modmain implicit none ! arguments real(8), intent(out) :: vmt(lmmaxvr,nrcmtmax,natmtot) real(8), intent(out) :: vir(ngtot) real(8), intent(out) :: bmt(lmmaxvr,nrcmtmax,natmtot,ndmag) real(8), intent(out) :: bir(ngtot,ndmag) ! local variables integer idm,is,ias,ir,irc ! allocatable arrays real(8), allocatable :: rfmt(:,:) ! compute the Coulomb potential call potcoul ! generate the exchange-correlation potentials for hybrids if (hybrid) call potxc ! convert to spherical coordinates and store in output arrays if (hybrid) then ! hybrid functional case allocate(rfmt(lmmaxvr,nrcmtmax)) do ias=1,natmtot is=idxis(ias) irc=0 do ir=1,nrmt(is),lradstp irc=irc+1 rfmt(:,irc)=vclmt(:,ir,ias)+vxcmt(:,ir,ias) end do call rbsht(nrcmt(is),nrcmtinr(is),1,rfmt,1,vmt(:,:,ias)) end do deallocate(rfmt) vir(:)=(vclir(:)+vxcir(:))*cfunir(:) if (spinpol) then do idm=1,ndmag do ias=1,natmtot is=idxis(ias) call rbsht(nrcmt(is),nrcmtinr(is),lradstp,bxcmt(:,:,ias,idm),1, & bmt(:,:,ias,idm)) end do bir(:,idm)=bxcir(:,idm)*cfunir(:) end do end if else ! normal Hartree-Fock case do ias=1,natmtot is=idxis(ias) call rbsht(nrcmt(is),nrcmtinr(is),lradstp,vclmt(:,:,ias),1,vmt(:,:,ias)) end do vir(:)=vclir(:)*cfunir(:) end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/modstore.f900000644002504400250440000000005012337331322016351 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modstore.f900000644002504400250440000000172012337331322017115 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !---------------------------------------------------------! ! variables for storing original input parameters ! !---------------------------------------------------------! module modstore use modmain real(8) avec0(3,3) real(8) binv0(3,3) real(8) omega0 logical tshift0 logical primcell0 integer natoms0(maxspecies) integer natmtot0 real(8) atposl0(3,maxatoms,maxspecies) real(8) atposc0(3,maxatoms,maxspecies) real(8) rmtdelta0 integer ngridg0(3),ngtot0 logical spinpol0,spinorb0,cmagz0 real(8) bfieldc00(3) real(8) bfcmt00(3,maxatoms,maxspecies) real(8) reducebf0 integer fsmtype0 real(8) momfix0(3) real(8) mommtfix0(3,maxatoms,maxspecies) logical tforce0 logical autokpt0 integer ngridk0(3) real(8) vkloff0(3) logical ptnucl0 logical ffdamp0 real(8) fracinr0 end module elk-2.3.22/src/PaxHeaders.22528/hartfock.f900000644002504400250440000000005012337331324016320 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hartfock.f900000644002504400250440000001575712337331324017103 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hartfock use modmain use modmpi implicit none ! local variables logical exist integer ik,lp real(8) etp,de ! allocatable arrays real(8), allocatable :: vmt(:,:,:),vir(:) real(8), allocatable :: bmt(:,:,:,:),bir(:,:) complex(8), allocatable :: evecsv(:,:) ! initialise universal variables call init0 call init1 call init2 ! allocate local arrays allocate(vmt(lmmaxvr,nrcmtmax,natmtot),vir(ngtot)) if (hybrid.and.spinpol) then allocate(bmt(lmmaxvr,nrcmtmax,natmtot,ndmag),bir(ngtot,ndmag)) end if ! only the MPI master process should write files if (mp_mpi) then ! open INFO.OUT file open(60,file='INFO'//trim(filext),action='WRITE',form='FORMATTED') ! open TOTENERGY.OUT open(61,file='TOTENERGY'//trim(filext),action='WRITE',form='FORMATTED') ! open FERMIDOS.OUT open(62,file='FERMIDOS'//trim(filext),action='WRITE',form='FORMATTED') ! open MOMENT.OUT if required if (spinpol) open(63,file='MOMENT'//trim(filext),action='WRITE', & form='FORMATTED') ! open GAP.OUT open(64,file='GAP'//trim(filext),action='WRITE',form='FORMATTED') ! open DTOTENERGY.OUT open(66,file='DTOTENERGY'//trim(filext),action='WRITE',form='FORMATTED') ! write out general information to INFO.OUT call writeinfo(60) end if ! read the charge density from file call readstate ! generate the core wavefunctions and densities call gencore ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr ! generate the first- and second-variational eigenvectors and eigenvalues call genevfsv ! find the occupation numbers and Fermi energy call occupy ! generate the kinetic matrix elements in the Cartesian basis call genkmatc(.true.) ! set last self-consistent loop flag tlast=.false. etp=0.d0 ! begin the self-consistent loop if (mp_mpi) then write(60,*) write(60,'("+------------------------------+")') write(60,'("| Self-consistent loop started |")') write(60,'("+------------------------------+")') end if do iscl=1,maxscl if (mp_mpi) then write(60,*) write(60,'("+--------------------+")') write(60,'("| Loop number : ",I4," |")') iscl write(60,'("+--------------------+")') call flushifc(60) write(*,*) write(*,'("Info(hartfock): self-consistent loop number : ",I4)') iscl end if if (iscl.ge.maxscl) then if (mp_mpi) then write(60,*) write(60,'("Reached self-consistent loops maximum")') end if tlast=.true. end if ! compute the Hartree-Fock local potentials call hflocal(vmt,vir,bmt,bir) ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(evecsv) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(evecsv(nstsv,nstsv)) call getevecsv(vkl(:,ik),evecsv) ! solve the Hartree-Fock eigenvalue equation call eveqnhf(ik,vmt,vir,bmt,bir,evecsv) ! write the eigenvalues/vectors to file call putevalsv(ik,evalsv(:,ik)) call putevecsv(ik,evecsv) deallocate(evecsv) end do !$OMP END DO !$OMP END PARALLEL ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! broadcast eigenvalue array to every process do ik=1,nkpt lp=mod(ik-1,np_mpi) call mpi_bcast(evalsv(:,ik),nstsv,mpi_double_precision,lp,mpi_comm_kpt, & ierror) end do ! find the occupation numbers and Fermi energy call occupy if (mp_mpi) then ! write the occupation numbers to file do ik=1,nkpt call putoccsv(ik,occsv(:,ik)) end do ! write out the eigenvalues and occupation numbers call writeeval ! write the Fermi energy to file call writefermi end if ! generate the density and magnetisation call rhomag ! compute the energy components call energy if (mp_mpi) then ! output energy components call writeengy(60) write(60,*) write(60,'("Density of states at Fermi energy : ",G18.10)') fermidos write(60,'(" (states/Hartree/unit cell)")') write(60,*) write(60,'("Estimated indirect band gap : ",G18.10)') bandgap(1) write(60,'(" from k-point ",I6," to k-point ",I6)') ikgap(1),ikgap(2) write(60,'("Estimated direct band gap : ",G18.10)') bandgap(2) write(60,'(" at k-point ",I6)') ikgap(3) ! write total energy to TOTENERGY.OUT and flush write(61,'(G22.12)') engytot call flushifc(61) ! write DOS at Fermi energy to FERMIDOS.OUT and flush write(62,'(G18.10)') fermidos call flushifc(62) ! output charges and moments call writechg(60) ! write total moment to MOMENT.OUT and flush if (spinpol) then write(63,'(3G18.10)') momtot(1:ndmag) call flushifc(63) end if end if ! write estimated Hartree-Fock indirect band gap write(64,'(G22.12)') bandgap(1) call flushifc(64) if (tlast) goto 10 ! compute the change in total energy and check for convergence if (iscl.ge.2) then de=abs(engytot-etp) if (mp_mpi) then write(60,*) write(60,'("Absolute change in total energy (target) : ",G18.10," (",& &G18.10,")")') de,epsengy end if if (de.lt.epsengy) then if (mp_mpi) then write(60,*) write(60,'("Energy convergence target achieved")') end if tlast=.true. end if if (mp_mpi) then write(66,'(G18.10)') de call flushifc(66) end if end if etp=engytot ! check for STOP file (only master process) if (mp_mpi) then inquire(file='STOP',exist=exist) if (exist) then write(60,*) write(60,'("STOP file exists - stopping self-consistent loop")') tlast=.true. open(50,file='STOP') close(50,status='DELETE') end if end if ! broadcast tlast from master process to all other processes call mpi_bcast(tlast,1,mpi_logical,0,mpi_comm_kpt,ierror) end do 10 continue if (mp_mpi) then write(60,*) write(60,'("+------------------------------+")') write(60,'("| Self-consistent loop stopped |")') write(60,'("+------------------------------+")') if (maxscl.gt.1) then call writestate write(60,*) write(60,'("Wrote STATE.OUT")') end if end if !-----------------------! ! compute forces ! !-----------------------! if (tforce) then call force ! output forces to INFO.OUT if (mp_mpi) call writeforces(60) end if if (mp_mpi) then write(60,*) write(60,'("+----------------------------+")') write(60,'("| Elk version ",I1.1,".",I1.1,".",I2.2," stopped |")') version write(60,'("+----------------------------+")') ! close the INFO.OUT file close(60) ! close the TOTENERGY.OUT file close(61) ! close the FERMIDOS.OUT file close(62) ! close the MOMENT.OUT file if (spinpol) close(63) ! close the DTOTENERGY.OUT file close(66) end if deallocate(vmt,vir) if (hybrid.and.spinpol) deallocate(bmt,bir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmeval.f900000644002504400250440000000005012337331324016151 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmeval.f900000644002504400250440000000165012337331324016717 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmeval ! !INTERFACE: subroutine rdmeval ! !USES: use modmain use modrdm ! !DESCRIPTION: ! RDMFT eigenvalues are determined by calculating the derivative of the ! total energy with respect to the occupation number at half the maximum ! occupancy ($n_{\rm max}/2$). ! ! !REVISION HISTORY: ! Created 2009 (Sharma) !EOP !BOC implicit none ! local variables integer ik,ist real(8) t1 ! allocatable arrays real(8), allocatable :: dedn(:,:) allocate(dedn(nstsv,nkpt)) do ik=1,nkpt do ist=1,nstsv t1=occsv(ist,ik) occsv(ist,ik)=occmax/2.d0 call rdmdedn(dedn) evalsv(ist,ik)=-dedn(ist,ik) occsv(ist,ik)=t1 end do call putevalsv(ik,evalsv(:,ik)) end do deallocate(dedn) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rotaxang.f900000644002504400250440000000005012337331323016341 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rotaxang.f900000644002504400250440000000627212337331323017114 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rotaxang ! !INTERFACE: subroutine rotaxang(eps,rot,det,v,th) ! !INPUT/OUTPUT PARAMETERS: ! eps : zero vector tolerance (in,real) ! rot : rotation matrix (in,real(3,3)) ! det : matrix determinant (out,real) ! v : normalised axis vector (out,real(3)) ! th : rotation angle (out,real) ! !DESCRIPTION: ! Given a rotation matrix ! $$ R(\hat{\bf v},\theta)= ! \left(\begin{matrix} ! \cos\theta+x^2(1-\cos\theta) & ! xy(1-\cos\theta)+z\sin\theta & ! xz(1-\cos\theta)-y\sin\theta \\ ! xy(1-\cos\theta)-z\sin\theta & ! \cos\theta+y^2(1-\cos\theta) & ! yz(1-\cos\theta)+x\sin\theta \\ ! xz(1-\cos\theta)+y\sin\theta & ! yz(1-\cos\theta)-x\sin\theta & ! \cos\theta+z^2(1-\cos\theta) ! \end{matrix}\right), $$ ! this routine determines the axis of rotation $\hat{\bf v}$ and the angle of ! rotation $\theta$. If $R$ corresponds to an improper rotation then only the ! proper part is used and {\tt det} is set to $-1$. The rotation convention ! follows the `right-hand rule'. ! ! !REVISION HISTORY: ! Created December 2006 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: eps real(8), intent(in) :: rot(3,3) real(8), intent(out) :: det real(8), intent(out) :: v(3),th ! local variables real(8), parameter :: pi=3.1415926535897932385d0 real(8) rotp(3,3),t1,t2 ! find the determinant det=rot(1,2)*rot(2,3)*rot(3,1)-rot(1,3)*rot(2,2)*rot(3,1) & +rot(1,3)*rot(2,1)*rot(3,2)-rot(1,1)*rot(2,3)*rot(3,2) & +rot(1,1)*rot(2,2)*rot(3,3)-rot(1,2)*rot(2,1)*rot(3,3) if (abs(det-1.d0).lt.eps) then det=1.d0 else if (abs(det+1.d0).lt.eps) then det=-1.d0 else goto 10 end if ! proper rotation matrix rotp(:,:)=det*rot(:,:) v(1)=(rotp(2,3)-rotp(3,2))/2.d0 v(2)=(rotp(3,1)-rotp(1,3))/2.d0 v(3)=(rotp(1,2)-rotp(2,1))/2.d0 t1=sqrt(v(1)**2+v(2)**2+v(3)**2) t2=(rotp(1,1)+rotp(2,2)+rotp(3,3)-1.d0)/2.d0 if (abs(abs(t2)-1.d0).gt.eps) then ! theta not equal to 0 or pi th=-atan2(t1,t2) v(:)=v(:)/t1 else ! special case of sin(th)=0 if (t2.gt.0.d0) then ! zero angle: axis arbitrary th=0.d0 v(:)=1.d0/sqrt(3.d0) else ! rotation by pi th=pi if ((rotp(1,1).ge.rotp(2,2)).and.(rotp(1,1).ge.rotp(3,3))) then if (rotp(1,1).lt.(-1.d0+eps)) goto 10 v(1)=sqrt(abs(rotp(1,1)+1.d0)/2.d0) v(2)=(rotp(2,1)+rotp(1,2))/(4.d0*v(1)) v(3)=(rotp(3,1)+rotp(1,3))/(4.d0*v(1)) else if ((rotp(2,2).ge.rotp(1,1)).and.(rotp(2,2).ge.rotp(3,3))) then if (rotp(2,2).lt.(-1.d0+eps)) goto 10 v(2)=sqrt(abs(rotp(2,2)+1.d0)/2.d0) v(3)=(rotp(3,2)+rotp(2,3))/(4.d0*v(2)) v(1)=(rotp(1,2)+rotp(2,1))/(4.d0*v(2)) else if (rotp(3,3).lt.(-1.d0+eps)) goto 10 v(3)=sqrt(abs(rotp(3,3)+1.d0)/2.d0) v(1)=(rotp(1,3)+rotp(3,1))/(4.d0*v(3)) v(2)=(rotp(2,3)+rotp(3,2))/(4.d0*v(3)) end if end if end if return 10 continue write(*,*) write(*,'("Error(rotaxang): invalid rotation matrix:")') write(*,'(3G18.10)') rot(1,:) write(*,'(3G18.10)') rot(2,:) write(*,'(3G18.10)') rot(3,:) write(*,*) stop end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/nesting.f900000644002504400250440000000005012337331323016165 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/nesting.f900000644002504400250440000000432212337331323016732 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine nesting use modmain implicit none ! local variables integer iq,ik,jk,jkq,ivkq(3) integer ist,i1,i2,i3 real(8) sum0,sum1,sum2,sum3 real(8) vl(3),vc(3),x,t1 ! allocatable arrays real(8), allocatable :: nq(:) ! external functions real(8) sdelta external sdelta ! initialise universal variables call init0 call init1 call init2 ! read Fermi energy from file call readfermi ! get the eigenvalues from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) end do allocate(nq(nqpt)) t1=1.d0/swidth sum0=0.d0 !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(sum1,sum2,sum3,ik,jk) & !$OMP PRIVATE(ivkq,jkq,ist,x) !$OMP DO do iq=1,nqpt !$OMP CRITICAL write(*,'("Info(nesting): ",I6," of ",I6," q-points")') iq,nqpt !$OMP END CRITICAL sum1=0.d0 do ik=1,nkptnr jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ivkq(:)=ivk(:,ik)+ivq(:,iq) ivkq(:)=mod(ivkq(:),ngridk(:)) jkq=ikmap(ivkq(1),ivkq(2),ivkq(3)) sum2=0.d0 do ist=1,nstsv x=(efermi-evalsv(ist,jk))*t1 sum2=sum2+sdelta(stype,x)*t1 end do sum3=0.d0 do ist=1,nstsv x=(efermi-evalsv(ist,jkq))*t1 sum3=sum3+sdelta(stype,x)*t1 end do sum1=sum1+sum2*sum3 end do nq(iq)=occmax*omegabz*wkptnr*sum1 sum0=sum0+omegabz*wqpt(iq)*nq(iq) end do !$OMP END DO !$OMP END PARALLEL open(50,file='NEST3D.OUT',action='WRITE',form='FORMATTED') write(50,'(3I6," : grid size")') ngridq(:) do i3=0,ngridq(3)-1 vl(3)=dble(i3)/dble(ngridq(3)) do i2=0,ngridq(2)-1 vl(2)=dble(i2)/dble(ngridq(2)) do i1=0,ngridq(1)-1 vl(1)=dble(i1)/dble(ngridq(1)) vc(:)=bvec(:,1)*vl(1)+bvec(:,2)*vl(2)+bvec(:,3)*vl(3) iq=iqmap(i1,i2,i3) write(50,'(4G18.10)') vc(:),nq(iq) end do end do end do close(50) open(50,file='NESTING.OUT',action='WRITE',form='FORMATTED') write(50,'(G18.10)') sum0 close(50) write(*,*) write(*,'("Info(nesting):")') write(*,'(" Nesting function N(q) written to NEST3D.OUT for plotting")') write(*,*) write(*,'(" Total integrated nesting per unit volume written to NESTING.OUT")') deallocate(nq) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rhoinit.f900000644002504400250440000000005012337331323016172 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rhoinit.f900000644002504400250440000000631112337331323016737 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rhoinit ! !INTERFACE: subroutine rhoinit ! !USES: use modmain ! !DESCRIPTION: ! Initialises the crystal charge density. Inside the muffin-tins it is set to ! the spherical atomic density. In the interstitial region it is taken to be ! constant such that the total charge is correct. Requires that the atomic ! densities have already been calculated. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) !EOP !BOC implicit none ! local variables integer, parameter :: lmax=1 integer is,ia,ias integer nr,nrc,ir,irc integer l,m,lm,ig,ifg,n real(8) x,t1,t2 complex(8) z1,z2,z3 ! allocatable arrays real(8), allocatable :: jl(:,:),ffg(:) real(8), allocatable :: fr(:),gr(:) complex(8), allocatable :: zfmt(:,:),zfft(:) allocate(zfft(ngtot)) ! zero the charge density and magnetisation arrays rhomt(:,:,:)=0.d0 rhoir(:)=0.d0 if (spinpol) then magmt(:,:,:,:)=0.d0 magir(:,:)=0.d0 end if ! compute the superposition of all the atomic density tails zfft(:)=0.d0 !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(ffg,fr,gr,nr,n,ig) & !$OMP PRIVATE(ir,x,t1,ia,ias,ifg) !$OMP DO do is=1,nspecies allocate(ffg(ngvec),fr(spnrmax),gr(spnrmax)) nr=nrmt(is) n=spnr(is)-nrmt(is)+1 do ig=1,ngvec do ir=nr,spnr(is) ! spherical bessel function j_0(x) x=gc(ig)*spr(ir,is) if (x.gt.1.d-8) then t1=sin(x)/x else t1=1.d0 end if fr(ir)=t1*sprho(ir,is)*spr(ir,is)**2 end do call fderiv(-1,n,spr(nr,is),fr(nr),gr(nr)) ffg(ig)=(fourpi/omega)*gr(spnr(is)) end do do ia=1,natoms(is) ias=idxas(ia,is) do ig=1,ngvec ifg=igfft(ig) !$OMP ATOMIC zfft(ifg)=zfft(ifg)+ffg(ig)*conjg(sfacg(ig,ias)) end do end do deallocate(fr,gr,ffg) end do !$OMP END DO !$OMP END PARALLEL ! compute the tails in each muffin-tin !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(jl,zfmt,is,nrc,ig,ifg) & !$OMP PRIVATE(irc,x,z1,z2,z3,lm,l,m) !$OMP DO do ias=1,natmtot allocate(jl(0:lmax,nrcmtmax)) allocate(zfmt(lmmaxvr,nrcmtmax)) is=idxis(ias) nrc=nrcmt(is) zfmt(:,:)=0.d0 do ig=1,ngvec ifg=igfft(ig) do irc=1,nrc x=gc(ig)*rcmt(irc,is) call sbessel(lmax,x,jl(:,irc)) end do z1=fourpi*zfft(ifg)*sfacg(ig,ias) lm=0 do l=0,lmax z2=z1*zil(l) do m=-l,l lm=lm+1 z3=z2*conjg(ylmg(lm,ig)) do irc=1,nrc zfmt(lm,irc)=zfmt(lm,irc)+jl(l,irc)*z3 end do end do end do end do call ztorfmt(nrc,nrcmtinr(is),1,zfmt,lradstp,rhomt(:,:,ias)) deallocate(jl,zfmt) end do !$OMP END DO !$OMP END PARALLEL ! convert the density from a coarse to a fine radial mesh call rfmtctof(rhomt) ! add the atomic charge density and the excess charge in each muffin-tin t1=chgexs/omega do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) t2=(t1+sprho(ir,is))/y00 rhomt(1,ir,ias)=rhomt(1,ir,ias)+t2 end do end do ! interstitial density determined from the atomic tails and excess charge call zfftifc(3,ngridg,1,zfft) do ir=1,ngtot rhoir(ir)=dble(zfft(ir))+t1 end do deallocate(zfft) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gentau.f900000644002504400250440000000005012337331324016002 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gentau.f900000644002504400250440000000675012337331324016556 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gentau(taumt,tauir) use modmain use modmpi implicit none ! arguments real(8), intent(out) :: taumt(lmmaxvr,nrmtmax,natmtot,nspinor) real(8), intent(out) :: tauir(ngtot,nspinor) ! local variables integer ik,ispn,is,ias integer ir,itp,n ! allocatable arrays real(8), allocatable :: rfmt(:,:,:),rfir(:) real(8), allocatable :: rvfmt(:,:,:,:),rvfir(:,:) ! set the kinetic energy density to zero taumt(:,:,:,:)=0.d0 tauir(:,:)=0.d0 ! if wavefunctions do not exist tau cannot be computed if (iscl.le.1) return !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle call gentauk(ik,taumt,tauir) end do !$OMP END DO !$OMP END PARALLEL allocate(rfmt(lmmaxvr,nrmtmax,natmtot)) ! convert taumt to spherical harmonics !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is,ispn,ir) !$OMP DO do ias=1,natmtot is=idxis(ias) do ispn=1,nspinor do ir=1,nrmt(is),lradstp rfmt(:,ir,ias)=taumt(:,ir,ias,ispn) end do call rfsht(nrcmt(is),nrcmtinr(is),lradstp,rfmt(:,:,ias),lradstp, & taumt(:,:,ias,ispn)) end do end do !$OMP END DO !$OMP END PARALLEL ! symmetrise tau if (spinpol) then ! spin-polarised case: convert to scalar-vector form allocate(rfir(ngtot)) allocate(rvfmt(lmmaxvr,nrmtmax,natmtot,ndmag)) allocate(rvfir(ngtot,ndmag)) rvfmt(:,:,:,1:ndmag-1)=0.d0 do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is),lradstp rfmt(:,ir,ias)=taumt(:,ir,ias,1)+taumt(:,ir,ias,2) rvfmt(:,ir,ias,ndmag)=taumt(:,ir,ias,1)-taumt(:,ir,ias,2) end do end do rfir(:)=tauir(:,1)+tauir(:,2) rvfir(:,1:ndmag-1)=0.d0 rvfir(:,ndmag)=tauir(:,1)-tauir(:,2) call symrf(lradstp,rfmt,rfir) call symrvf(lradstp,rvfmt,rvfir) do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is),lradstp taumt(:,ir,ias,1)=0.5d0*(rfmt(:,ir,ias)+rvfmt(:,ir,ias,ndmag)) taumt(:,ir,ias,2)=0.5d0*(rfmt(:,ir,ias)-rvfmt(:,ir,ias,ndmag)) end do end do tauir(:,1)=0.5d0*(rfir(:)+rvfir(:,ndmag)) tauir(:,2)=0.5d0*(rfir(:)-rvfir(:,ndmag)) deallocate(rfir,rvfmt,rvfir) else ! spin-unpolarised case call symrf(lradstp,taumt,tauir) end if ! convert taumt to spherical coordinates !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is,ispn,ir) !$OMP DO do ias=1,natmtot is=idxis(ias) do ispn=1,nspinor do ir=1,nrmt(is),lradstp rfmt(:,ir,ias)=taumt(:,ir,ias,ispn) end do call rbsht(nrcmt(is),nrcmtinr(is),lradstp,rfmt(:,:,ias),lradstp, & taumt(:,:,ias,ispn)) end do end do !$OMP END DO !$OMP END PARALLEL ! convert taumt from a coarse to a fine radial mesh do ispn=1,nspinor call rfmtctof(taumt(:,:,:,ispn)) end do ! add tau from each process and redistribute if (np_mpi.gt.1) then n=lmmaxvr*nrmtmax*natmtot*nspinor call mpi_allreduce(mpi_in_place,taumt,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) n=ngtot*nspinor call mpi_allreduce(mpi_in_place,tauir,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) end if ! add the core contribution call gentaucr(taumt) ! make sure tau is positive everywhere do ispn=1,nspinor do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) do itp=1,lmmaxvr if (taumt(itp,ir,ias,ispn).lt.0.d0) taumt(itp,ir,ias,ispn)=0.d0 end do end do end do do ir=1,ngtot if (tauir(ir,ispn).lt.0.d0) tauir(ir,ispn)=0.d0 end do end do deallocate(rfmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/i3mdet.f900000644002504400250440000000005012337331323015703 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/i3mdet.f900000644002504400250440000000127512337331323016454 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: i3mdet ! !INTERFACE: integer function i3mdet(a) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,integer(3,3)) ! !DESCRIPTION: ! Returns the determinant of an integer $3\times 3$ matrix $A$. ! ! !REVISION HISTORY: ! Created October 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: a(3,3) i3mdet=a(1,1)*(a(2,2)*a(3,3)-a(3,2)*a(2,3)) & +a(2,1)*(a(3,2)*a(1,3)-a(1,2)*a(3,3)) & +a(3,1)*(a(1,2)*a(2,3)-a(2,2)*a(1,3)) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/genvsig.f900000644002504400250440000000005012337331323016160 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genvsig.f900000644002504400250440000000302012337331323016717 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genvsig ! !INTERFACE: subroutine genvsig ! !USES: use modmain ! !DESCRIPTION: ! Generates the Fourier transform of the Kohn-Sham effective potential in the ! intersitial region. The potential is first multiplied by the characteristic ! function which zeros it in the muffin-tins. See routine {\tt gencfun}. ! ! !REVISION HISTORY: ! Created January 2004 (JKD) !EOP !BOC implicit none ! local variables integer ig,ifg real(8) gm2 ! allocatable arrays complex(8), allocatable :: zfft(:) allocate(zfft(ngtot)) if (trimvg) then ! trim the Fourier components of vsir for |G| > gmaxvr/2 zfft(:)=vsir(:) call zfftifc(3,ngridg,-1,zfft) gm2=gmaxvr/2.d0 do ig=1,ngtot if (gc(ig).gt.gm2) then ifg=igfft(ig) zfft(ifg)=0.d0 end if end do ! Fourier transform back to real-space call zfftifc(3,ngridg,1,zfft) ! multiply trimmed potential by characteristic function in real-space !$OMP PARALLEL WORKSHARE zfft(:)=dble(zfft(:))*cfunir(:) !$OMP END PARALLEL WORKSHARE else ! multiply potential by characteristic function in real-space !$OMP PARALLEL WORKSHARE zfft(:)=vsir(:)*cfunir(:) !$OMP END PARALLEL WORKSHARE end if ! Fourier transform to G-space call zfftifc(3,ngridg,-1,zfft) ! store in global array do ig=1,ngvec ifg=igfft(ig) vsig(ig)=zfft(ifg) end do deallocate(zfft) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/spacegroup0000644002504400250440000000005012337331322016270 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/0000755002504400250440000000000012337331322017111 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/src/spacegroup/PaxHeaders.22528/r3cross.f900000644002504400250440000000005012337331322020263 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/r3cross.f900000644002504400250440000000137212337331322021032 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3cross ! !INTERFACE: subroutine r3cross(x,y,z) ! !INPUT/OUTPUT PARAMETERS: ! x : input vector 1 (in,real(3)) ! y : input vector 2 (in,real(3)) ! z : output cross-product (out,real(3)) ! !DESCRIPTION: ! Returns the cross product of two real 3-vectors. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: x(3) real(8), intent(in) :: y(3) real(8), intent(out) :: z(3) z(1)=x(2)*y(3)-x(3)*y(2) z(2)=x(3)*y(1)-x(1)*y(3) z(3)=x(1)*y(2)-x(2)*y(1) return end subroutine !EOC elk-2.3.22/src/spacegroup/PaxHeaders.22528/spacegroup.out0000644002504400250440000000005012337331322021246 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/spacegroup.out0000644002504400250440000000162012337331322022011 0ustar00dewhurstdewhurst00000000000000\BOOKMARK [1][-]{section.1}{Introduction}{}% 1 \BOOKMARK [1][-]{section.2}{Usage}{}% 2 \BOOKMARK [1][-]{section.3}{Table of space group symbols}{}% 3 \BOOKMARK [1][-]{section.4}{Routine/Function Prologues}{}% 4 \BOOKMARK [2][-]{subsection.4.1}{Fortran: Module Interface modmain \(Source File: modmain.f90\)}{section.4}% 5 \BOOKMARK [2][-]{subsection.4.2}{sgsymb \(Source File: sgsymb.f90\)}{section.4}% 6 \BOOKMARK [2][-]{subsection.4.3}{findprimcell \(Source File: findprimcell.f90\)}{section.4}% 7 \BOOKMARK [2][-]{subsection.4.4}{r3frac \(Source File: r3frac.f90\)}{section.4}% 8 \BOOKMARK [2][-]{subsection.4.5}{r3mv \(Source File: r3mv.f90\)}{section.4}% 9 \BOOKMARK [2][-]{subsection.4.6}{r3cross \(Source File: r3cross.f90\)}{section.4}% 10 \BOOKMARK [2][-]{subsection.4.7}{r3minv \(Source File: r3minv.f90\)}{section.4}% 11 \BOOKMARK [2][-]{subsection.4.8}{r3mm \(Source File: r3mm.f90\)}{section.4}% 12 elk-2.3.22/src/spacegroup/PaxHeaders.22528/Makefile0000644002504400250440000000005012337331322020005 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/Makefile0000644002504400250440000000212412337331322020550 0ustar00dewhurstdewhurst00000000000000 include ../../make.inc #------------------------------------------------------------------------------- # Suffix rules #------------------------------------------------------------------------------- .SUFFIXES: .o .f90 .f90.o: $(F90) $(F90_OPTS) -c $< #------------------------------------------------------------------------------- # Source files #------------------------------------------------------------------------------- SRC_modules = modmain.f90 SRC_main = main.f90 SRC_routines = readinput.f90 gencrystal.f90 sgsymb.f90 seitzgen.f90 \ gengroup.f90 seitzeq.f90 seitzmul.f90 writegeom.f90 geomplot.f90 \ findprimcell.f90 r3frac.f90 r3mv.f90 r3cross.f90 r3minv.f90 r3mm.f90 SRC = $(SRC_modules) $(SRC_main) $(SRC_routines) OBJ = $(SRC:.f90=.o) EXE = spacegroup spacegroup: $(OBJ) $(F90) $(F90_OPTS) -o $(EXE) $(OBJ) clean: rm -f *.o *.mod *~ fort.* ifc* *.gcno *.OUT *.xsf *.ascii gmon.out \ *.aux *.dvi *.log *.pdf *.tex *.toc $(EXE) doc: ../protex -s $(SRC_main) $(SRC_modules) $(SRC_routines) > spacegroup.tex pdflatex spacegroup;pdflatex spacegroup;pdflatex spacegroup elk-2.3.22/src/spacegroup/PaxHeaders.22528/main.f900000644002504400250440000000005012337331322017611 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/main.f900000644002504400250440000013267612337331322020374 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. program main implicit none ! read the input parameters from spacegroup.in call readinput ! generate the lattice and atomic basis call gencrystal ! write the structural data to GEOMETRY.OUT call writegeom ! write the XCrySDen and V_Sim files for plotting call geomplot stop end program !BOI ! !TITLE: {\huge{\sc The Spacegroup Manual}}\\ \Large{\sc Version 1.2.1} ! !AUTHORS: {\sc J. K. Dewhurst, S. Sharma and L. Nordstr\"{o}m} ! !AFFILIATION: ! !INTRODUCTION: Introduction ! Spacegroup is a utility which produces crystal geometry for use with the Elk ! code, from the space group defined by its Hermann-Mauguin symbol and lattice ! vector lengths and angles. Spacegroup recognises all 230 space groups in ! various coordinate settings giving a total of 530 possible symbols, which are ! tabulated below. The code also provides output compatible with the XCrysDen or ! V\_Sim packages for visualisation of the crystal structure. ! \section{Usage} ! Only one input file, {\tt spacegroup.in}, is required. The structure of this ! file is illustrated by the following example for the high $T_c$ superconductor ! La$_2$CuO$_4$: ! \begin{verbatim} ! 'Bmab' : hrmg ! 10.0605232 10.0605232 24.972729 : a, b, c ! 90.0 90.0 90.0 : bc, ac, ab ! 1 1 1 : ncell ! .true. : primcell ! 3 : nspecies ! 'La' : spsymb ! 1 : nwpos ! 0.0000 0.0000 0.3608 : wpos ! 'Cu' ! 1 ! 0.0000 0.0000 0.0000 ! 'O' ! 2 ! 0.2500 0.2500 0.0000 ! 0.0000 0.0000 0.1820 ! \end{verbatim} ! The input parameters are defined as follows: ! \vskip 6pt ! {\tt hrmg}\\ ! The Hermann-Mauguin symbol of a space group listed in the table below. ! (case-sensitive) ! \vskip 6pt ! {\tt a}, {\tt b}, {\tt c}\\ ! Lattice vector lengths in Bohr (i.e. atomic units, {\bf NOT} \AA ngstroms). ! \vskip 6pt ! {\tt bc}, {\tt ac}, {\tt ab}\\ ! Angles in degrees between lattice vectors ${\bf b}$ and ${\bf c}$ ($\alpha$); ! ${\bf a}$ and ${\bf c}$ ($\beta$); and ${\bf a}$ and ${\bf b}$ ($\gamma$). ! \vskip 6pt ! {\tt ncell}\\ ! The number of unit cells required in each direction. ! \vskip 6pt ! {\tt primcell}\\ ! Set to {\tt .true.} if the primitive unit cell should be found. ! \vskip 6pt ! {\tt nspecies}\\ ! Number of atomic species. ! \vskip 6pt ! {\tt spsymb}\\ ! The atomic species symbol. ! \vskip 6pt ! {\tt nwpos}\\ ! The number of Wyckoff positional coordinates. ! \vskip 6pt ! {\tt wpos}\\ ! Wyckoff positional coordinates in fractions of the lattice vectors. ! \vskip 6pt ! Note that {\tt nwpos} and {\tt wpos} are repeated as many times as there are ! species. After creating the input file, the {\tt spacegroup} command is run ! and the files {\tt GEOMETRY.OUT} and {\tt crystal.xsf} should be produced. ! The {\tt GEOMETRY.OUT} file can simply be appended to an {\tt elk.in} file. If ! XCrysDen is available, then use the command ! \vskip 6pt ! \hskip 24pt {\tt xcrysden --xsf crystal.xsf} ! \vskip 6pt ! to render the unit cell. ! \section{Table of space group symbols} ! We acknowledge Ralf W. Grosse-Kunstleve ({\tt http://cci.lbl.gov/sginfo/}) ! for the following table which associates space group numbers, Sch\"{o}nflies ! symbols, Hermann-Mauguin symbols, and Hall symbols. ! \newpage ! \begin{center} ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 1 & C$_{1}^{1}$ & P1 & P 1 \\ ! 2 & C$_{i}^{1}$ & P-1 & -P 1 \\ ! 3:b & C$_{2}^{1}$ & P2:b = P121 & P 2y \\ ! 3:c & C$_{2}^{1}$ & P2:c = P112 & P 2 \\ ! 3:a & C$_{2}^{1}$ & P2:a = P211 & P 2x \\ ! 4:b & C$_{2}^{2}$ & P21:b = P1211 & P 2yb \\ ! 4:c & C$_{2}^{2}$ & P21:c = P1121 & P 2c \\ ! 4:a & C$_{2}^{2}$ & P21:a = P2111 & P 2xa \\ ! 5:b1 & C$_{2}^{3}$ & C2:b1 = C121 & C 2y \\ ! 5:b2 & C$_{2}^{3}$ & C2:b2 = A121 & A 2y \\ ! 5:b3 & C$_{2}^{3}$ & C2:b3 = I121 & I 2y \\ ! 5:c1 & C$_{2}^{3}$ & C2:c1 = A112 & A 2 \\ ! 5:c2 & C$_{2}^{3}$ & C2:c2 = B112 = B2 & B 2 \\ ! 5:c3 & C$_{2}^{3}$ & C2:c3 = I112 & I 2 \\ ! 5:a1 & C$_{2}^{3}$ & C2:a1 = B211 & B 2x \\ ! 5:a2 & C$_{2}^{3}$ & C2:a2 = C211 & C 2x \\ ! 5:a3 & C$_{2}^{3}$ & C2:a3 = I211 & I 2x \\ ! 6:b & C$_{s}^{1}$ & Pm:b = P1m1 & P -2y \\ ! 6:c & C$_{s}^{1}$ & Pm:c = P11m & P -2 \\ ! 6:a & C$_{s}^{1}$ & Pm:a = Pm11 & P -2x \\ ! 7:b1 & C$_{s}^{2}$ & Pc:b1 = P1c1 & P -2yc \\ ! 7:b2 & C$_{s}^{2}$ & Pc:b2 = P1n1 & P -2yac \\ ! 7:b3 & C$_{s}^{2}$ & Pc:b3 = P1a1 & P -2ya \\ ! 7:c1 & C$_{s}^{2}$ & Pc:c1 = P11a & P -2a \\ ! 7:c2 & C$_{s}^{2}$ & Pc:c2 = P11n & P -2ab \\ ! 7:c3 & C$_{s}^{2}$ & Pc:c3 = P11b = Pb & P -2b \\ ! 7:a1 & C$_{s}^{2}$ & Pc:a1 = Pb11 & P -2xb \\ ! 7:a2 & C$_{s}^{2}$ & Pc:a2 = Pn11 & P -2xbc \\ ! 7:a3 & C$_{s}^{2}$ & Pc:a3 = Pc11 & P -2xc \\ ! 8:b1 & C$_{s}^{3}$ & Cm:b1 = C1m1 & C -2y \\ ! 8:b2 & C$_{s}^{3}$ & Cm:b2 = A1m1 & A -2y \\ ! 8:b3 & C$_{s}^{3}$ & Cm:b3 = I1m1 & I -2y \\ ! 8:c1 & C$_{s}^{3}$ & Cm:c1 = A11m & A -2 \\ ! 8:c2 & C$_{s}^{3}$ & Cm:c2 = B11m = Bm & B -2 \\ ! 8:c3 & C$_{s}^{3}$ & Cm:c3 = I11m & I -2 \\ ! 8:a1 & C$_{s}^{3}$ & Cm:a1 = Bm11 & B -2x \\ ! 8:a2 & C$_{s}^{3}$ & Cm:a2 = Cm11 & C -2x \\ ! 8:a3 & C$_{s}^{3}$ & Cm:a3 = Im11 & I -2x \\ ! 9:b1 & C$_{s}^{4}$ & Cc:b1 = C1c1 & C -2yc \\ ! 9:b2 & C$_{s}^{4}$ & Cc:b2 = A1n1 & A -2yac \\ ! 9:b3 & C$_{s}^{4}$ & Cc:b3 = I1a1 & I -2ya \\ ! 9:-b1 & C$_{s}^{4}$ & Cc:-b1 = A1a1 & A -2ya \\ ! 9:-b2 & C$_{s}^{4}$ & Cc:-b2 = C1n1 & C -2ybc \\ ! 9:-b3 & C$_{s}^{4}$ & Cc:-b3 = I1c1 & I -2yc \\ ! 9:c1 & C$_{s}^{4}$ & Cc:c1 = A11a & A -2a \\ ! 9:c2 & C$_{s}^{4}$ & Cc:c2 = B11n & B -2bc \\ ! 9:c3 & C$_{s}^{4}$ & Cc:c3 = I11b & I -2b \\ ! 9:-c1 & C$_{s}^{4}$ & Cc:-c1 = B11b = Bb & B -2b \\ ! 9:-c2 & C$_{s}^{4}$ & Cc:-c2 = A11n & A -2ac \\ ! 9:-c3 & C$_{s}^{4}$ & Cc:-c3 = I11a & I -2a \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 9:a1 & C$_{s}^{4}$ & Cc:a1 = Bb11 & B -2xb \\ ! 9:a2 & C$_{s}^{4}$ & Cc:a2 = Cn11 & C -2xbc \\ ! 9:a3 & C$_{s}^{4}$ & Cc:a3 = Ic11 & I -2xc \\ ! 9:-a1 & C$_{s}^{4}$ & Cc:-a1 = Cc11 & C -2xc \\ ! 9:-a2 & C$_{s}^{4}$ & Cc:-a2 = Bn11 & B -2xbc \\ ! 9:-a3 & C$_{s}^{4}$ & Cc:-a3 = Ib11 & I -2xb \\ ! 10:b & C$_{2h}^{1}$ & P2/m:b = P12/m1 & -P 2y \\ ! 10:c & C$_{2h}^{1}$ & P2/m:c = P112/m & -P 2 \\ ! 10:a & C$_{2h}^{1}$ & P2/m:a = P2/m11 & -P 2x \\ ! 11:b & C$_{2h}^{2}$ & P21/m:b = P121/m1 & -P 2yb \\ ! 11:c & C$_{2h}^{2}$ & P21/m:c = P1121/m & -P 2c \\ ! 11:a & C$_{2h}^{2}$ & P21/m:a = P21/m11 & -P 2xa \\ ! 12:b1 & C$_{2h}^{3}$ & C2/m:b1 = C12/m1 & -C 2y \\ ! 12:b2 & C$_{2h}^{3}$ & C2/m:b2 = A12/m1 & -A 2y \\ ! 12:b3 & C$_{2h}^{3}$ & C2/m:b3 = I12/m1 & -I 2y \\ ! 12:c1 & C$_{2h}^{3}$ & C2/m:c1 = A112/m & -A 2 \\ ! 12:c2 & C$_{2h}^{3}$ & C2/m:c2 = B112/m = B2/m & -B 2 \\ ! 12:c3 & C$_{2h}^{3}$ & C2/m:c3 = I112/m & -I 2 \\ ! 12:a1 & C$_{2h}^{3}$ & C2/m:a1 = B2/m11 & -B 2x \\ ! 12:a2 & C$_{2h}^{3}$ & C2/m:a2 = C2/m11 & -C 2x \\ ! 12:a3 & C$_{2h}^{3}$ & C2/m:a3 = I2/m11 & -I 2x \\ ! 13:b1 & C$_{2h}^{4}$ & P2/c:b1 = P12/c1 & -P 2yc \\ ! 13:b2 & C$_{2h}^{4}$ & P2/c:b2 = P12/n1 & -P 2yac \\ ! 13:b3 & C$_{2h}^{4}$ & P2/c:b3 = P12/a1 & -P 2ya \\ ! 13:c1 & C$_{2h}^{4}$ & P2/c:c1 = P112/a & -P 2a \\ ! 13:c2 & C$_{2h}^{4}$ & P2/c:c2 = P112/n & -P 2ab \\ ! 13:c3 & C$_{2h}^{4}$ & P2/c:c3 = P112/b = P2/b & -P 2b \\ ! 13:a1 & C$_{2h}^{4}$ & P2/c:a1 = P2/b11 & -P 2xb \\ ! 13:a2 & C$_{2h}^{4}$ & P2/c:a2 = P2/n11 & -P 2xbc \\ ! 13:a3 & C$_{2h}^{4}$ & P2/c:a3 = P2/c11 & -P 2xc \\ ! 14:b1 & C$_{2h}^{5}$ & P21/c:b1 = P121/c1 & -P 2ybc \\ ! 14:b2 & C$_{2h}^{5}$ & P21/c:b2 = P121/n1 & -P 2yn \\ ! 14:b3 & C$_{2h}^{5}$ & P21/c:b3 = P121/a1 & -P 2yab \\ ! 14:c1 & C$_{2h}^{5}$ & P21/c:c1 = P1121/a & -P 2ac \\ ! 14:c2 & C$_{2h}^{5}$ & P21/c:c2 = P1121/n & -P 2n \\ ! 14:c3 & C$_{2h}^{5}$ & P21/c:c3 = P1121/b = P21/b & -P 2bc \\ ! 14:a1 & C$_{2h}^{5}$ & P21/c:a1 = P21/b11 & -P 2xab \\ ! 14:a2 & C$_{2h}^{5}$ & P21/c:a2 = P21/n11 & -P 2xn \\ ! 14:a3 & C$_{2h}^{5}$ & P21/c:a3 = P21/c11 & -P 2xac \\ ! 15:b1 & C$_{2h}^{6}$ & C2/c:b1 = C12/c1 & -C 2yc \\ ! 15:b2 & C$_{2h}^{6}$ & C2/c:b2 = A12/n1 & -A 2yac \\ ! 15:b3 & C$_{2h}^{6}$ & C2/c:b3 = I12/a1 & -I 2ya \\ ! 15:-b1 & C$_{2h}^{6}$ & C2/c:-b1 = A12/a1 & -A 2ya \\ ! 15:-b2 & C$_{2h}^{6}$ & C2/c:-b2 = C12/n1 & -C 2ybc \\ ! 15:-b3 & C$_{2h}^{6}$ & C2/c:-b3 = I12/c1 & -I 2yc \\ ! 15:c1 & C$_{2h}^{6}$ & C2/c:c1 = A112/a & -A 2a \\ ! 15:c2 & C$_{2h}^{6}$ & C2/c:c2 = B112/n & -B 2bc \\ ! 15:c3 & C$_{2h}^{6}$ & C2/c:c3 = I112/b & -I 2b \\ ! 15:-c1 & C$_{2h}^{6}$ & C2/c:-c1 = B112/b = B2/b & -B 2b \\ ! 15:-c2 & C$_{2h}^{6}$ & C2/c:-c2 = A112/n & -A 2ac \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 15:-c3 & C$_{2h}^{6}$ & C2/c:-c3 = I112/a & -I 2a \\ ! 15:a1 & C$_{2h}^{6}$ & C2/c:a1 = B2/b11 & -B 2xb \\ ! 15:a2 & C$_{2h}^{6}$ & C2/c:a2 = C2/n11 & -C 2xbc \\ ! 15:a3 & C$_{2h}^{6}$ & C2/c:a3 = I2/c11 & -I 2xc \\ ! 15:-a1 & C$_{2h}^{6}$ & C2/c:-a1 = C2/c11 & -C 2xc \\ ! 15:-a2 & C$_{2h}^{6}$ & C2/c:-a2 = B2/n11 & -B 2xbc \\ ! 15:-a3 & C$_{2h}^{6}$ & C2/c:-a3 = I2/b11 & -I 2xb \\ ! 16 & D$_{2}^{1}$ & P222 & P 2 2 \\ ! 17 & D$_{2}^{2}$ & P2221 & P 2c 2 \\ ! 17:cab & D$_{2}^{2}$ & P2122 & P 2a 2a \\ ! 17:bca & D$_{2}^{2}$ & P2212 & P 2 2b \\ ! 18 & D$_{2}^{3}$ & P21212 & P 2 2ab \\ ! 18:cab & D$_{2}^{3}$ & P22121 & P 2bc 2 \\ ! 18:bca & D$_{2}^{3}$ & P21221 & P 2ac 2ac \\ ! 19 & D$_{2}^{4}$ & P212121 & P 2ac 2ab \\ ! 20 & D$_{2}^{5}$ & C2221 & C 2c 2 \\ ! 20:cab & D$_{2}^{5}$ & A2122 & A 2a 2a \\ ! 20:bca & D$_{2}^{5}$ & B2212 & B 2 2b \\ ! 21 & D$_{2}^{6}$ & C222 & C 2 2 \\ ! 21:cab & D$_{2}^{6}$ & A222 & A 2 2 \\ ! 21:bca & D$_{2}^{6}$ & B222 & B 2 2 \\ ! 22 & D$_{2}^{7}$ & F222 & F 2 2 \\ ! 23 & D$_{2}^{8}$ & I222 & I 2 2 \\ ! 24 & D$_{2}^{9}$ & I212121 & I 2b 2c \\ ! 25 & C$_{2v}^{1}$ & Pmm2 & P 2 -2 \\ ! 25:cab & C$_{2v}^{1}$ & P2mm & P -2 2 \\ ! 25:bca & C$_{2v}^{1}$ & Pm2m & P -2 -2 \\ ! 26 & C$_{2v}^{2}$ & Pmc21 & P 2c -2 \\ ! 26:ba-c & C$_{2v}^{2}$ & Pcm21 & P 2c -2c \\ ! 26:cab & C$_{2v}^{2}$ & P21ma & P -2a 2a \\ ! 26:-cba & C$_{2v}^{2}$ & P21am & P -2 2a \\ ! 26:bca & C$_{2v}^{2}$ & Pb21m & P -2 -2b \\ ! 26:a-cb & C$_{2v}^{2}$ & Pm21b & P -2b -2 \\ ! 27 & C$_{2v}^{3}$ & Pcc2 & P 2 -2c \\ ! 27:cab & C$_{2v}^{3}$ & P2aa & P -2a 2 \\ ! 27:bca & C$_{2v}^{3}$ & Pb2b & P -2b -2b \\ ! 28 & C$_{2v}^{4}$ & Pma2 & P 2 -2a \\ ! 28:ba-c & C$_{2v}^{4}$ & Pbm2 & P 2 -2b \\ ! 28:cab & C$_{2v}^{4}$ & P2mb & P -2b 2 \\ ! 28:-cba & C$_{2v}^{4}$ & P2cm & P -2c 2 \\ ! 28:bca & C$_{2v}^{4}$ & Pc2m & P -2c -2c \\ ! 28:a-cb & C$_{2v}^{4}$ & Pm2a & P -2a -2a \\ ! 29 & C$_{2v}^{5}$ & Pca21 & P 2c -2ac \\ ! 29:ba-c & C$_{2v}^{5}$ & Pbc21 & P 2c -2b \\ ! 29:cab & C$_{2v}^{5}$ & P21ab & P -2b 2a \\ ! 29:-cba & C$_{2v}^{5}$ & P21ca & P -2ac 2a \\ ! 29:bca & C$_{2v}^{5}$ & Pc21b & P -2bc -2c \\ ! 29:a-cb & C$_{2v}^{5}$ & Pb21a & P -2a -2ab \\ ! 30 & C$_{2v}^{6}$ & Pnc2 & P 2 -2bc \\ ! 30:ba-c & C$_{2v}^{6}$ & Pcn2 & P 2 -2ac \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 30:cab & C$_{2v}^{6}$ & P2na & P -2ac 2 \\ ! 30:-cba & C$_{2v}^{6}$ & P2an & P -2ab 2 \\ ! 30:bca & C$_{2v}^{6}$ & Pb2n & P -2ab -2ab \\ ! 30:a-cb & C$_{2v}^{6}$ & Pn2b & P -2bc -2bc \\ ! 31 & C$_{2v}^{7}$ & Pmn21 & P 2ac -2 \\ ! 31:ba-c & C$_{2v}^{7}$ & Pnm21 & P 2bc -2bc \\ ! 31:cab & C$_{2v}^{7}$ & P21mn & P -2ab 2ab \\ ! 31:-cba & C$_{2v}^{7}$ & P21nm & P -2 2ac \\ ! 31:bca & C$_{2v}^{7}$ & Pn21m & P -2 -2bc \\ ! 31:a-cb & C$_{2v}^{7}$ & Pm21n & P -2ab -2 \\ ! 32 & C$_{2v}^{8}$ & Pba2 & P 2 -2ab \\ ! 32:cab & C$_{2v}^{8}$ & P2cb & P -2bc 2 \\ ! 32:bca & C$_{2v}^{8}$ & Pc2a & P -2ac -2ac \\ ! 33 & C$_{2v}^{9}$ & Pna21 & P 2c -2n \\ ! 33:ba-c & C$_{2v}^{9}$ & Pbn21 & P 2c -2ab \\ ! 33:cab & C$_{2v}^{9}$ & P21nb & P -2bc 2a \\ ! 33:-cba & C$_{2v}^{9}$ & P21cn & P -2n 2a \\ ! 33:bca & C$_{2v}^{9}$ & Pc21n & P -2n -2ac \\ ! 33:a-cb & C$_{2v}^{9}$ & Pn21a & P -2ac -2n \\ ! 34 & C$_{2v}^{10}$ & Pnn2 & P 2 -2n \\ ! 34:cab & C$_{2v}^{10}$ & P2nn & P -2n 2 \\ ! 34:bca & C$_{2v}^{10}$ & Pn2n & P -2n -2n \\ ! 35 & C$_{2v}^{11}$ & Cmm2 & C 2 -2 \\ ! 35:cab & C$_{2v}^{11}$ & A2mm & A -2 2 \\ ! 35:bca & C$_{2v}^{11}$ & Bm2m & B -2 -2 \\ ! 36 & C$_{2v}^{12}$ & Cmc21 & C 2c -2 \\ ! 36:ba-c & C$_{2v}^{12}$ & Ccm21 & C 2c -2c \\ ! 36:cab & C$_{2v}^{12}$ & A21ma & A -2a 2a \\ ! 36:-cba & C$_{2v}^{12}$ & A21am & A -2 2a \\ ! 36:bca & C$_{2v}^{12}$ & Bb21m & B -2 -2b \\ ! 36:a-cb & C$_{2v}^{12}$ & Bm21b & B -2b -2 \\ ! 37 & C$_{2v}^{13}$ & Ccc2 & C 2 -2c \\ ! 37:cab & C$_{2v}^{13}$ & A2aa & A -2a 2 \\ ! 37:bca & C$_{2v}^{13}$ & Bb2b & B -2b -2b \\ ! 38 & C$_{2v}^{14}$ & Amm2 & A 2 -2 \\ ! 38:ba-c & C$_{2v}^{14}$ & Bmm2 & B 2 -2 \\ ! 38:cab & C$_{2v}^{14}$ & B2mm & B -2 2 \\ ! 38:-cba & C$_{2v}^{14}$ & C2mm & C -2 2 \\ ! 38:bca & C$_{2v}^{14}$ & Cm2m & C -2 -2 \\ ! 38:a-cb & C$_{2v}^{14}$ & Am2m & A -2 -2 \\ ! 39 & C$_{2v}^{15}$ & Abm2 & A 2 -2c \\ ! 39:ba-c & C$_{2v}^{15}$ & Bma2 & B 2 -2c \\ ! 39:cab & C$_{2v}^{15}$ & B2cm & B -2c 2 \\ ! 39:-cba & C$_{2v}^{15}$ & C2mb & C -2b 2 \\ ! 39:bca & C$_{2v}^{15}$ & Cm2a & C -2b -2b \\ ! 39:a-cb & C$_{2v}^{15}$ & Ac2m & A -2c -2c \\ ! 40 & C$_{2v}^{16}$ & Ama2 & A 2 -2a \\ ! 40:ba-c & C$_{2v}^{16}$ & Bbm2 & B 2 -2b \\ ! 40:cab & C$_{2v}^{16}$ & B2mb & B -2b 2 \\ ! 40:-cba & C$_{2v}^{16}$ & C2cm & C -2c 2 \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 40:bca & C$_{2v}^{16}$ & Cc2m & C -2c -2c \\ ! 40:a-cb & C$_{2v}^{16}$ & Am2a & A -2a -2a \\ ! 41 & C$_{2v}^{17}$ & Aba2 & A 2 -2ac \\ ! 41:ba-c & C$_{2v}^{17}$ & Bba2 & B 2 -2bc \\ ! 41:cab & C$_{2v}^{17}$ & B2cb & B -2bc 2 \\ ! 41:-cba & C$_{2v}^{17}$ & C2cb & C -2bc 2 \\ ! 41:bca & C$_{2v}^{17}$ & Cc2a & C -2bc -2bc \\ ! 41:a-cb & C$_{2v}^{17}$ & Ac2a & A -2ac -2ac \\ ! 42 & C$_{2v}^{18}$ & Fmm2 & F 2 -2 \\ ! 42:cab & C$_{2v}^{18}$ & F2mm & F -2 2 \\ ! 42:bca & C$_{2v}^{18}$ & Fm2m & F -2 -2 \\ ! 43 & C$_{2v}^{19}$ & Fdd2 & F 2 -2d \\ ! 43:cab & C$_{2v}^{19}$ & F2dd & F -2d 2 \\ ! 43:bca & C$_{2v}^{19}$ & Fd2d & F -2d -2d \\ ! 44 & C$_{2v}^{20}$ & Imm2 & I 2 -2 \\ ! 44:cab & C$_{2v}^{20}$ & I2mm & I -2 2 \\ ! 44:bca & C$_{2v}^{20}$ & Im2m & I -2 -2 \\ ! 45 & C$_{2v}^{21}$ & Iba2 & I 2 -2c \\ ! 45:cab & C$_{2v}^{21}$ & I2cb & I -2a 2 \\ ! 45:bca & C$_{2v}^{21}$ & Ic2a & I -2b -2b \\ ! 46 & C$_{2v}^{22}$ & Ima2 & I 2 -2a \\ ! 46:ba-c & C$_{2v}^{22}$ & Ibm2 & I 2 -2b \\ ! 46:cab & C$_{2v}^{22}$ & I2mb & I -2b 2 \\ ! 46:-cba & C$_{2v}^{22}$ & I2cm & I -2c 2 \\ ! 46:bca & C$_{2v}^{22}$ & Ic2m & I -2c -2c \\ ! 46:a-cb & C$_{2v}^{22}$ & Im2a & I -2a -2a \\ ! 47 & D$_{2h}^{1}$ & Pmmm & -P 2 2 \\ ! 48:1 & D$_{2h}^{2}$ & Pnnn:1 & P 2 2 -1n \\ ! 48:2 & D$_{2h}^{2}$ & Pnnn:2 & -P 2ab 2bc \\ ! 49 & D$_{2h}^{3}$ & Pccm & -P 2 2c \\ ! 49:cab & D$_{2h}^{3}$ & Pmaa & -P 2a 2 \\ ! 49:bca & D$_{2h}^{3}$ & Pbmb & -P 2b 2b \\ ! 50:1 & D$_{2h}^{4}$ & Pban:1 & P 2 2 -1ab \\ ! 50:2 & D$_{2h}^{4}$ & Pban:2 & -P 2ab 2b \\ ! 50:1cab & D$_{2h}^{4}$ & Pncb:1 & P 2 2 -1bc \\ ! 50:2cab & D$_{2h}^{4}$ & Pncb:2 & -P 2b 2bc \\ ! 50:1bca & D$_{2h}^{4}$ & Pcna:1 & P 2 2 -1ac \\ ! 50:2bca & D$_{2h}^{4}$ & Pcna:2 & -P 2a 2c \\ ! 51 & D$_{2h}^{5}$ & Pmma & -P 2a 2a \\ ! 51:ba-c & D$_{2h}^{5}$ & Pmmb & -P 2b 2 \\ ! 51:cab & D$_{2h}^{5}$ & Pbmm & -P 2 2b \\ ! 51:-cba & D$_{2h}^{5}$ & Pcmm & -P 2c 2c \\ ! 51:bca & D$_{2h}^{5}$ & Pmcm & -P 2c 2 \\ ! 51:a-cb & D$_{2h}^{5}$ & Pmam & -P 2 2a \\ ! 52 & D$_{2h}^{6}$ & Pnna & -P 2a 2bc \\ ! 52:ba-c & D$_{2h}^{6}$ & Pnnb & -P 2b 2n \\ ! 52:cab & D$_{2h}^{6}$ & Pbnn & -P 2n 2b \\ ! 52:-cba & D$_{2h}^{6}$ & Pcnn & -P 2ab 2c \\ ! 52:bca & D$_{2h}^{6}$ & Pncn & -P 2ab 2n \\ ! 52:a-cb & D$_{2h}^{6}$ & Pnan & -P 2n 2bc \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 53 & D$_{2h}^{7}$ & Pmna & -P 2ac 2 \\ ! 53:ba-c & D$_{2h}^{7}$ & Pnmb & -P 2bc 2bc \\ ! 53:cab & D$_{2h}^{7}$ & Pbmn & -P 2ab 2ab \\ ! 53:-cba & D$_{2h}^{7}$ & Pcnm & -P 2 2ac \\ ! 53:bca & D$_{2h}^{7}$ & Pncm & -P 2 2bc \\ ! 53:a-cb & D$_{2h}^{7}$ & Pman & -P 2ab 2 \\ ! 54 & D$_{2h}^{8}$ & Pcca & -P 2a 2ac \\ ! 54:ba-c & D$_{2h}^{8}$ & Pccb & -P 2b 2c \\ ! 54:cab & D$_{2h}^{8}$ & Pbaa & -P 2a 2b \\ ! 54:-cba & D$_{2h}^{8}$ & Pcaa & -P 2ac 2c \\ ! 54:bca & D$_{2h}^{8}$ & Pbcb & -P 2bc 2b \\ ! 54:a-cb & D$_{2h}^{8}$ & Pbab & -P 2b 2ab \\ ! 55 & D$_{2h}^{9}$ & Pbam & -P 2 2ab \\ ! 55:cab & D$_{2h}^{9}$ & Pmcb & -P 2bc 2 \\ ! 55:bca & D$_{2h}^{9}$ & Pcma & -P 2ac 2ac \\ ! 56 & D$_{2h}^{10}$ & Pccn & -P 2ab 2ac \\ ! 56:cab & D$_{2h}^{10}$ & Pnaa & -P 2ac 2bc \\ ! 56:bca & D$_{2h}^{10}$ & Pbnb & -P 2bc 2ab \\ ! 57 & D$_{2h}^{11}$ & Pbcm & -P 2c 2b \\ ! 57:ba-c & D$_{2h}^{11}$ & Pcam & -P 2c 2ac \\ ! 57:cab & D$_{2h}^{11}$ & Pmca & -P 2ac 2a \\ ! 57:-cba & D$_{2h}^{11}$ & Pmab & -P 2b 2a \\ ! 57:bca & D$_{2h}^{11}$ & Pbma & -P 2a 2ab \\ ! 57:a-cb & D$_{2h}^{11}$ & Pcmb & -P 2bc 2c \\ ! 58 & D$_{2h}^{12}$ & Pnnm & -P 2 2n \\ ! 58:cab & D$_{2h}^{12}$ & Pmnn & -P 2n 2 \\ ! 58:bca & D$_{2h}^{12}$ & Pnmn & -P 2n 2n \\ ! 59:1 & D$_{2h}^{13}$ & Pmmn:1 & P 2 2ab -1ab \\ ! 59:2 & D$_{2h}^{13}$ & Pmmn:2 & -P 2ab 2a \\ ! 59:1cab & D$_{2h}^{13}$ & Pnmm:1 & P 2bc 2 -1bc \\ ! 59:2cab & D$_{2h}^{13}$ & Pnmm:2 & -P 2c 2bc \\ ! 59:1bca & D$_{2h}^{13}$ & Pmnm:1 & P 2ac 2ac -1ac \\ ! 59:2bca & D$_{2h}^{13}$ & Pmnm:2 & -P 2c 2a \\ ! 60 & D$_{2h}^{14}$ & Pbcn & -P 2n 2ab \\ ! 60:ba-c & D$_{2h}^{14}$ & Pcan & -P 2n 2c \\ ! 60:cab & D$_{2h}^{14}$ & Pnca & -P 2a 2n \\ ! 60:-cba & D$_{2h}^{14}$ & Pnab & -P 2bc 2n \\ ! 60:bca & D$_{2h}^{14}$ & Pbna & -P 2ac 2b \\ ! 60:a-cb & D$_{2h}^{14}$ & Pcnb & -P 2b 2ac \\ ! 61 & D$_{2h}^{15}$ & Pbca & -P 2ac 2ab \\ ! 61:ba-c & D$_{2h}^{15}$ & Pcab & -P 2bc 2ac \\ ! 62 & D$_{2h}^{16}$ & Pnma & -P 2ac 2n \\ ! 62:ba-c & D$_{2h}^{16}$ & Pmnb & -P 2bc 2a \\ ! 62:cab & D$_{2h}^{16}$ & Pbnm & -P 2c 2ab \\ ! 62:-cba & D$_{2h}^{16}$ & Pcmn & -P 2n 2ac \\ ! 62:bca & D$_{2h}^{16}$ & Pmcn & -P 2n 2a \\ ! 62:a-cb & D$_{2h}^{16}$ & Pnam & -P 2c 2n \\ ! 63 & D$_{2h}^{17}$ & Cmcm & -C 2c 2 \\ ! 63:ba-c & D$_{2h}^{17}$ & Ccmm & -C 2c 2c \\ ! 63:cab & D$_{2h}^{17}$ & Amma & -A 2a 2a \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 63:-cba & D$_{2h}^{17}$ & Amam & -A 2 2a \\ ! 63:bca & D$_{2h}^{17}$ & Bbmm & -B 2 2b \\ ! 63:a-cb & D$_{2h}^{17}$ & Bmmb & -B 2b 2 \\ ! 64 & D$_{2h}^{18}$ & Cmca & -C 2bc 2 \\ ! 64:ba-c & D$_{2h}^{18}$ & Ccmb & -C 2bc 2bc \\ ! 64:cab & D$_{2h}^{18}$ & Abma & -A 2ac 2ac \\ ! 64:-cba & D$_{2h}^{18}$ & Acam & -A 2 2ac \\ ! 64:bca & D$_{2h}^{18}$ & Bbcm & -B 2 2bc \\ ! 64:a-cb & D$_{2h}^{18}$ & Bmab & -B 2bc 2 \\ ! 65 & D$_{2h}^{19}$ & Cmmm & -C 2 2 \\ ! 65:cab & D$_{2h}^{19}$ & Ammm & -A 2 2 \\ ! 65:bca & D$_{2h}^{19}$ & Bmmm & -B 2 2 \\ ! 66 & D$_{2h}^{20}$ & Cccm & -C 2 2c \\ ! 66:cab & D$_{2h}^{20}$ & Amaa & -A 2a 2 \\ ! 66:bca & D$_{2h}^{20}$ & Bbmb & -B 2b 2b \\ ! 67 & D$_{2h}^{21}$ & Cmma & -C 2b 2 \\ ! 67:ba-c & D$_{2h}^{21}$ & Cmmb & -C 2b 2b \\ ! 67:cab & D$_{2h}^{21}$ & Abmm & -A 2c 2c \\ ! 67:-cba & D$_{2h}^{21}$ & Acmm & -A 2 2c \\ ! 67:bca & D$_{2h}^{21}$ & Bmcm & -B 2 2c \\ ! 67:a-cb & D$_{2h}^{21}$ & Bmam & -B 2c 2 \\ ! 68:1 & D$_{2h}^{22}$ & Ccca:1 & C 2 2 -1bc \\ ! 68:2 & D$_{2h}^{22}$ & Ccca:2 & -C 2b 2bc \\ ! 68:1ba-c & D$_{2h}^{22}$ & Cccb:1 & C 2 2 -1bc \\ ! 68:2ba-c & D$_{2h}^{22}$ & Cccb:2 & -C 2b 2c \\ ! 68:1cab & D$_{2h}^{22}$ & Abaa:1 & A 2 2 -1ac \\ ! 68:2cab & D$_{2h}^{22}$ & Abaa:2 & -A 2a 2c \\ ! 68:1-cba & D$_{2h}^{22}$ & Acaa:1 & A 2 2 -1ac \\ ! 68:2-cba & D$_{2h}^{22}$ & Acaa:2 & -A 2ac 2c \\ ! 68:1bca & D$_{2h}^{22}$ & Bbcb:1 & B 2 2 -1bc \\ ! 68:2bca & D$_{2h}^{22}$ & Bbcb:2 & -B 2bc 2b \\ ! 68:1a-cb & D$_{2h}^{22}$ & Bbab:1 & B 2 2 -1bc \\ ! 68:2a-cb & D$_{2h}^{22}$ & Bbab:2 & -B 2b 2bc \\ ! 69 & D$_{2h}^{23}$ & Fmmm & -F 2 2 \\ ! 70:1 & D$_{2h}^{24}$ & Fddd:1 & F 2 2 -1d \\ ! 70:2 & D$_{2h}^{24}$ & Fddd:2 & -F 2uv 2vw \\ ! 71 & D$_{2h}^{25}$ & Immm & -I 2 2 \\ ! 72 & D$_{2h}^{26}$ & Ibam & -I 2 2c \\ ! 72:cab & D$_{2h}^{26}$ & Imcb & -I 2a 2 \\ ! 72:bca & D$_{2h}^{26}$ & Icma & -I 2b 2b \\ ! 73 & D$_{2h}^{27}$ & Ibca & -I 2b 2c \\ ! 73:ba-c & D$_{2h}^{27}$ & Icab & -I 2a 2b \\ ! 74 & D$_{2h}^{28}$ & Imma & -I 2b 2 \\ ! 74:ba-c & D$_{2h}^{28}$ & Immb & -I 2a 2a \\ ! 74:cab & D$_{2h}^{28}$ & Ibmm & -I 2c 2c \\ ! 74:-cba & D$_{2h}^{28}$ & Icmm & -I 2 2b \\ ! 74:bca & D$_{2h}^{28}$ & Imcm & -I 2 2a \\ ! 74:a-cb & D$_{2h}^{28}$ & Imam & -I 2c 2 \\ ! 75 & C$_{4}^{1}$ & P4 & P 4 \\ ! 76 & C$_{4}^{2}$ & P41 & P 4w \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 77 & C$_{4}^{3}$ & P42 & P 4c \\ ! 78 & C$_{4}^{4}$ & P43 & P 4cw \\ ! 79 & C$_{4}^{5}$ & I4 & I 4 \\ ! 80 & C$_{4}^{6}$ & I41 & I 4bw \\ ! 81 & S$_{4}^{1}$ & P-4 & P -4 \\ ! 82 & S$_{4}^{2}$ & I-4 & I -4 \\ ! 83 & C$_{4h}^{1}$ & P4/m & -P 4 \\ ! 84 & C$_{4h}^{2}$ & P42/m & -P 4c \\ ! 85:1 & C$_{4h}^{3}$ & P4/n:1 & P 4ab -1ab \\ ! 85:2 & C$_{4h}^{3}$ & P4/n:2 & -P 4a \\ ! 86:1 & C$_{4h}^{4}$ & P42/n:1 & P 4n -1n \\ ! 86:2 & C$_{4h}^{4}$ & P42/n:2 & -P 4bc \\ ! 87 & C$_{4h}^{5}$ & I4/m & -I 4 \\ ! 88:1 & C$_{4h}^{6}$ & I41/a:1 & I 4bw -1bw \\ ! 88:2 & C$_{4h}^{6}$ & I41/a:2 & -I 4ad \\ ! 89 & D$_{4}^{1}$ & P422 & P 4 2 \\ ! 90 & D$_{4}^{2}$ & P4212 & P 4ab 2ab \\ ! 91 & D$_{4}^{3}$ & P4122 & P 4w 2c \\ ! 92 & D$_{4}^{4}$ & P41212 & P 4abw 2nw \\ ! 93 & D$_{4}^{5}$ & P4222 & P 4c 2 \\ ! 94 & D$_{4}^{6}$ & P42212 & P 4n 2n \\ ! 95 & D$_{4}^{7}$ & P4322 & P 4cw 2c \\ ! 96 & D$_{4}^{8}$ & P43212 & P 4nw 2abw \\ ! 97 & D$_{4}^{9}$ & I422 & I 4 2 \\ ! 98 & D$_{4}^{10}$ & I4122 & I 4bw 2bw \\ ! 99 & C$_{4v}^{1}$ & P4mm & P 4 -2 \\ ! 100 & C$_{4v}^{2}$ & P4bm & P 4 -2ab \\ ! 101 & C$_{4v}^{3}$ & P42cm & P 4c -2c \\ ! 102 & C$_{4v}^{4}$ & P42nm & P 4n -2n \\ ! 103 & C$_{4v}^{5}$ & P4cc & P 4 -2c \\ ! 104 & C$_{4v}^{6}$ & P4nc & P 4 -2n \\ ! 105 & C$_{4v}^{7}$ & P42mc & P 4c -2 \\ ! 106 & C$_{4v}^{8}$ & P42bc & P 4c -2ab \\ ! 107 & C$_{4v}^{9}$ & I4mm & I 4 -2 \\ ! 108 & C$_{4v}^{10}$ & I4cm & I 4 -2c \\ ! 109 & C$_{4v}^{11}$ & I41md & I 4bw -2 \\ ! 110 & C$_{4v}^{12}$ & I41cd & I 4bw -2c \\ ! 111 & D$_{2d}^{1}$ & P-42m & P -4 2 \\ ! 112 & D$_{2d}^{2}$ & P-42c & P -4 2c \\ ! 113 & D$_{2d}^{3}$ & P-421m & P -4 2ab \\ ! 114 & D$_{2d}^{4}$ & P-421c & P -4 2n \\ ! 115 & D$_{2d}^{5}$ & P-4m2 & P -4 -2 \\ ! 116 & D$_{2d}^{6}$ & P-4c2 & P -4 -2c \\ ! 117 & D$_{2d}^{7}$ & P-4b2 & P -4 -2ab \\ ! 118 & D$_{2d}^{8}$ & P-4n2 & P -4 -2n \\ ! 119 & D$_{2d}^{9}$ & I-4m2 & I -4 -2 \\ ! 120 & D$_{2d}^{10}$ & I-4c2 & I -4 -2c \\ ! 121 & D$_{2d}^{11}$ & I-42m & I -4 2 \\ ! 122 & D$_{2d}^{12}$ & I-42d & I -4 2bw \\ ! 123 & D$_{4h}^{1}$ & P4/mmm & -P 4 2 \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 124 & D$_{4h}^{2}$ & P4/mcc & -P 4 2c \\ ! 125:1 & D$_{4h}^{3}$ & P4/nbm:1 & P 4 2 -1ab \\ ! 125:2 & D$_{4h}^{3}$ & P4/nbm:2 & -P 4a 2b \\ ! 126:1 & D$_{4h}^{4}$ & P4/nnc:1 & P 4 2 -1n \\ ! 126:2 & D$_{4h}^{4}$ & P4/nnc:2 & -P 4a 2bc \\ ! 127 & D$_{4h}^{5}$ & P4/mbm & -P 4 2ab \\ ! 128 & D$_{4h}^{6}$ & P4/mnc & -P 4 2n \\ ! 129:1 & D$_{4h}^{7}$ & P4/nmm:1 & P 4ab 2ab -1ab \\ ! 129:2 & D$_{4h}^{7}$ & P4/nmm:2 & -P 4a 2a \\ ! 130:1 & D$_{4h}^{8}$ & P4/ncc:1 & P 4ab 2n -1ab \\ ! 130:2 & D$_{4h}^{8}$ & P4/ncc:2 & -P 4a 2ac \\ ! 131 & D$_{4h}^{9}$ & P42/mmc & -P 4c 2 \\ ! 132 & D$_{4h}^{10}$ & P42/mcm & -P 4c 2c \\ ! 133:1 & D$_{4h}^{11}$ & P42/nbc:1 & P 4n 2c -1n \\ ! 133:2 & D$_{4h}^{11}$ & P42/nbc:2 & -P 4ac 2b \\ ! 134:1 & D$_{4h}^{12}$ & P42/nnm:1 & P 4n 2 -1n \\ ! 134:2 & D$_{4h}^{12}$ & P42/nnm:2 & -P 4ac 2bc \\ ! 135 & D$_{4h}^{13}$ & P42/mbc & -P 4c 2ab \\ ! 136 & D$_{4h}^{14}$ & P42/mnm & -P 4n 2n \\ ! 137:1 & D$_{4h}^{15}$ & P42/nmc:1 & P 4n 2n -1n \\ ! 137:2 & D$_{4h}^{15}$ & P42/nmc:2 & -P 4ac 2a \\ ! 138:1 & D$_{4h}^{16}$ & P42/ncm:1 & P 4n 2ab -1n \\ ! 138:2 & D$_{4h}^{16}$ & P42/ncm:2 & -P 4ac 2ac \\ ! 139 & D$_{4h}^{17}$ & I4/mmm & -I 4 2 \\ ! 140 & D$_{4h}^{18}$ & I4/mcm & -I 4 2c \\ ! 141:1 & D$_{4h}^{19}$ & I41/amd:1 & I 4bw 2bw -1bw \\ ! 141:2 & D$_{4h}^{19}$ & I41/amd:2 & -I 4bd 2 \\ ! 142:1 & D$_{4h}^{20}$ & I41/acd:1 & I 4bw 2aw -1bw \\ ! 142:2 & D$_{4h}^{20}$ & I41/acd:2 & -I 4bd 2c \\ ! 143 & C$_{3}^{1}$ & P3 & P 3 \\ ! 144 & C$_{3}^{2}$ & P31 & P 31 \\ ! 145 & C$_{3}^{3}$ & P32 & P 32 \\ ! 146:H & C$_{3}^{4}$ & R3:H & R 3 \\ ! 146:R & C$_{3}^{4}$ & R3:R & P 3* \\ ! 147 & C$_{3i}^{1}$ & P-3 & -P 3 \\ ! 148:H & C$_{3i}^{2}$ & R-3:H & -R 3 \\ ! 148:R & C$_{3i}^{2}$ & R-3:R & -P 3* \\ ! 149 & D$_{3}^{1}$ & P312 & P 3 2 \\ ! 150 & D$_{3}^{2}$ & P321 & P 3 2$''$ \\ ! 151 & D$_{3}^{3}$ & P3112 & P 31 2c (0 0 1) \\ ! 152 & D$_{3}^{4}$ & P3121 & P 31 2$''$ \\ ! 153 & D$_{3}^{5}$ & P3212 & P 32 2c (0 0 -1) \\ ! 154 & D$_{3}^{6}$ & P3221 & P 32 2$''$ \\ ! 155:H & D$_{3}^{7}$ & R32:H & R 3 2$''$ \\ ! 155:R & D$_{3}^{7}$ & R32:R & P 3* 2 \\ ! 156 & C$_{3v}^{1}$ & P3m1 & P 3 -2$''$ \\ ! 157 & C$_{3v}^{2}$ & P31m & P 3 -2 \\ ! 158 & C$_{3v}^{3}$ & P3c1 & P 3 -2$''$c \\ ! 159 & C$_{3v}^{4}$ & P31c & P 3 -2c \\ ! 160:H & C$_{3v}^{5}$ & R3m:H & R 3 -2$''$ \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 160:R & C$_{3v}^{5}$ & R3m:R & P 3* -2 \\ ! 161:H & C$_{3v}^{6}$ & R3c:H & R 3 -2$''$c \\ ! 161:R & C$_{3v}^{6}$ & R3c:R & P 3* -2n \\ ! 162 & D$_{3d}^{1}$ & P-31m & -P 3 2 \\ ! 163 & D$_{3d}^{2}$ & P-31c & -P 3 2c \\ ! 164 & D$_{3d}^{3}$ & P-3m1 & -P 3 2$''$ \\ ! 165 & D$_{3d}^{4}$ & P-3c1 & -P 3 2$''$c \\ ! 166:H & D$_{3d}^{5}$ & R-3m:H & -R 3 2$''$ \\ ! 166:R & D$_{3d}^{5}$ & R-3m:R & -P 3* 2 \\ ! 167:H & D$_{3d}^{6}$ & R-3c:H & -R 3 2$''$c \\ ! 167:R & D$_{3d}^{6}$ & R-3c:R & -P 3* 2n \\ ! 168 & C$_{6}^{1}$ & P6 & P 6 \\ ! 169 & C$_{6}^{2}$ & P61 & P 61 \\ ! 170 & C$_{6}^{3}$ & P65 & P 65 \\ ! 171 & C$_{6}^{4}$ & P62 & P 62 \\ ! 172 & C$_{6}^{5}$ & P64 & P 64 \\ ! 173 & C$_{6}^{6}$ & P63 & P 6c \\ ! 174 & C$_{3h}^{1}$ & P-6 & P -6 \\ ! 175 & C$_{6h}^{1}$ & P6/m & -P 6 \\ ! 176 & C$_{6h}^{2}$ & P63/m & -P 6c \\ ! 177 & D$_{6}^{1}$ & P622 & P 6 2 \\ ! 178 & D$_{6}^{2}$ & P6122 & P 61 2 (0 0 -1) \\ ! 179 & D$_{6}^{3}$ & P6522 & P 65 2 (0 0 1) \\ ! 180 & D$_{6}^{4}$ & P6222 & P 62 2c (0 0 1) \\ ! 181 & D$_{6}^{5}$ & P6422 & P 64 2c (0 0 -1) \\ ! 182 & D$_{6}^{6}$ & P6322 & P 6c 2c \\ ! 183 & C$_{6v}^{1}$ & P6mm & P 6 -2 \\ ! 184 & C$_{6v}^{2}$ & P6cc & P 6 -2c \\ ! 185 & C$_{6v}^{3}$ & P63cm & P 6c -2 \\ ! 186 & C$_{6v}^{4}$ & P63mc & P 6c -2c \\ ! 187 & D$_{3h}^{1}$ & P-6m2 & P -6 2 \\ ! 188 & D$_{3h}^{2}$ & P-6c2 & P -6c 2 \\ ! 189 & D$_{3h}^{3}$ & P-62m & P -6 -2 \\ ! 190 & D$_{3h}^{4}$ & P-62c & P -6c -2c \\ ! 191 & D$_{6h}^{1}$ & P6/mmm & -P 6 2 \\ ! 192 & D$_{6h}^{2}$ & P6/mcc & -P 6 2c \\ ! 193 & D$_{6h}^{3}$ & P63/mcm & -P 6c 2 \\ ! 194 & D$_{6h}^{4}$ & P63/mmc & -P 6c 2c \\ ! 195 & T$_{}^{1}$ & P23 & P 2 2 3 \\ ! 196 & T$_{}^{2}$ & F23 & F 2 2 3 \\ ! 197 & T$_{}^{3}$ & I23 & I 2 2 3 \\ ! 198 & T$_{}^{4}$ & P213 & P 2ac 2ab 3 \\ ! 199 & T$_{}^{5}$ & I213 & I 2b 2c 3 \\ ! 200 & T$_{h}^{1}$ & Pm-3 & -P 2 2 3 \\ ! 201:1 & T$_{h}^{2}$ & Pn-3:1 & P 2 2 3 -1n \\ ! 201:2 & T$_{h}^{2}$ & Pn-3:2 & -P 2ab 2bc 3 \\ ! 202 & T$_{h}^{3}$ & Fm-3 & -F 2 2 3 \\ ! 203:1 & T$_{h}^{4}$ & Fd-3:1 & F 2 2 3 -1d \\ ! 203:2 & T$_{h}^{4}$ & Fd-3:2 & -F 2uv 2vw 3 \\ ! 204 & T$_{h}^{5}$ & Im-3 & -I 2 2 3 \\ ! \hline ! \end{tabular} ! \newpage ! \begin{tabular}{|l|l|l|l|} ! \hline ! Number & Schoenflies & Hermann-Mauguin & Hall \\ ! \hline ! 205 & T$_{h}^{6}$ & Pa-3 & -P 2ac 2ab 3 \\ ! 206 & T$_{h}^{7}$ & Ia-3 & -I 2b 2c 3 \\ ! 207 & O$^{1}$ & P432 & P 4 2 3 \\ ! 208 & O$^{2}$ & P4232 & P 4n 2 3 \\ ! 209 & O$^{3}$ & F432 & F 4 2 3 \\ ! 210 & O$^{4}$ & F4132 & F 4d 2 3 \\ ! 211 & O$^{5}$ & I432 & I 4 2 3 \\ ! 212 & O$^{6}$ & P4332 & P 4acd 2ab 3 \\ ! 213 & O$^{7}$ & P4132 & P 4bd 2ab 3 \\ ! 214 & O$^{8}$ & I4132 & I 4bd 2c 3 \\ ! 215 & T$_{d}^{1}$ & P-43m & P -4 2 3 \\ ! 216 & T$_{d}^{2}$ & F-43m & F -4 2 3 \\ ! 217 & T$_{d}^{3}$ & I-43m & I -4 2 3 \\ ! 218 & T$_{d}^{4}$ & P-43n & P -4n 2 3 \\ ! 219 & T$_{d}^{5}$ & F-43c & F -4c 2 3 \\ ! 220 & T$_{d}^{6}$ & I-43d & I -4bd 2c 3 \\ ! 221 & O$_{h}^{1}$ & Pm-3m & -P 4 2 3 \\ ! 222:1 & O$_{h}^{2}$ & Pn-3n:1 & P 4 2 3 -1n \\ ! 222:2 & O$_{h}^{2}$ & Pn-3n:2 & -P 4a 2bc 3 \\ ! 223 & O$_{h}^{3}$ & Pm-3n & -P 4n 2 3 \\ ! 224:1 & O$_{h}^{4}$ & Pn-3m:1 & P 4n 2 3 -1n \\ ! 224:2 & O$_{h}^{4}$ & Pn-3m:2 & -P 4bc 2bc 3 \\ ! 225 & O$_{h}^{5}$ & Fm-3m & -F 4 2 3 \\ ! 226 & O$_{h}^{6}$ & Fm-3c & -F 4c 2 3 \\ ! 227:1 & O$_{h}^{7}$ & Fd-3m:1 & F 4d 2 3 -1d \\ ! 227:2 & O$_{h}^{7}$ & Fd-3m:2 & -F 4vw 2vw 3 \\ ! 228:1 & O$_{h}^{8}$ & Fd-3c:1 & F 4d 2 3 -1cd \\ ! 228:2 & O$_{h}^{8}$ & Fd-3c:2 & -F 4cvw 2vw 3 \\ ! 229 & O$_{h}^{9}$ & Im-3m & -I 4 2 3 \\ ! 230 & O$_{h}^{10}$ & Ia-3d & -I 4bd 2c 3 \\ ! \hline ! \end{tabular} ! \end{center} ! !EOI elk-2.3.22/src/spacegroup/PaxHeaders.22528/gencrystal.f900000644002504400250440000000005012337331322021040 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/gencrystal.f900000644002504400250440000000577312337331322021620 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gencrystal use modmain implicit none ! local variables integer is,ia,ip,i,j integer i1,i2,i3 integer ngen,ngrp real(8) abr,acr,bcr real(8) sab,cab,cac,cbc real(8) v1(3),v2(3),t1 ! space group generator Seitz matrices real(8) srgen(3,3,12),stgen(3,12) ! space group Seitz matrices real(8) srgrp(3,3,192),stgrp(3,192) ! convert angles from degrees to radians abr=ab*(pi/180.d0) acr=ac*(pi/180.d0) bcr=bc*(pi/180.d0) ! setup lattice vectors sab=sin(abr) if (abs(sab).lt.epslat) then write(*,*) write(*,'("Error(gencrystal): degenerate lattice vectors")') write(*,*) stop end if cab=cos(abr) cac=cos(acr) cbc=cos(bcr) avec(1,1)=a avec(2,1)=0.d0 avec(3,1)=0.d0 avec(1,2)=b*cab avec(2,2)=b*sab avec(3,2)=0.d0 avec(1,3)=c*cac avec(2,3)=c*(cbc-cab*cac)/sab avec(3,3)=c*sqrt(sab**2-cac**2+2.d0*cab*cac*cbc-cbc**2)/sab do i=1,3 do j=1,3 if (abs(avec(i,j)).lt.epslat) avec(i,j)=0.d0 end do end do ! scale lattice vectors by the number of unit cells do i=1,3 avec(:,i)=avec(:,i)*dble(ncell(i)) end do ! determine the Hall symbol from the Hermann-Mauguin symbol call sgsymb(hrmg,num,schn,hall) ! determine the space group generators call seitzgen(hall,ngen,srgen,stgen) ! compute the space group operations call gengroup(ngen,srgen,stgen,ngrp,srgrp,stgrp) ! compute the equivalent atomic positions do is=1,nspecies natoms(is)=0 do ip=1,nwpos(is) do j=1,ngrp ! apply the space group operation call r3mv(srgrp(:,1,j),wpos(:,ip,is),v1) v1(:)=v1(:)+stgrp(:,j) do i1=0,ncell(1)-1 do i2=0,ncell(2)-1 do i3=0,ncell(3)-1 v2(1)=(v1(1)+dble(i1))/dble(ncell(1)) v2(2)=(v1(2)+dble(i2))/dble(ncell(2)) v2(3)=(v1(3)+dble(i3))/dble(ncell(3)) call r3frac(epslat,v2) ! check if new position already exists do ia=1,natoms(is) t1=sum(abs(v2(:)-atposl(:,ia,is))) if (t1.lt.epslat) goto 30 end do ! add new position to list natoms(is)=natoms(is)+1 if (natoms(is).gt.maxatoms) then write(*,*) write(*,'("Error(gencrystal): natoms too large")') write(*,'(" for species ",I4)') is write(*,'("Adjust maxatoms and recompile code")') write(*,*) stop end if atposl(:,natoms(is),is)=v2(:) end do end do end do 30 continue end do end do natmtot=natmtot+natoms(is) end do ! set magnetic fields to zero bfcmt0(:,:,:)=0.d0 ! reduce conventional cell to primitive cell if required if (primcell) call findprimcell ! find the total number of atoms natmtot=0 do is=1,nspecies natmtot=natmtot+natoms(is) end do ! determine the Cartesian atomic coordinates do is=1,nspecies do ia=1,natoms(is) call r3mv(avec,atposl(:,ia,is),atposc(:,ia,is)) end do end do return end subroutine elk-2.3.22/src/spacegroup/PaxHeaders.22528/gengroup.f900000644002504400250440000000005012337331322020513 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/gengroup.f900000644002504400250440000000331712337331322021263 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gengroup(ngen,srgen,stgen,ngrp,srgrp,stgrp) implicit none ! arguments integer, intent(in) :: ngen real(8), intent(in) :: srgen(3,3,ngen) real(8), intent(in) :: stgen(3,ngen) integer, intent(out) :: ngrp real(8), intent(out) :: srgrp(3,3,192) real(8), intent(out) :: stgrp(3,192) ! local variables integer i,j,k real(8), parameter :: eps=1.d-6 real(8) sr(3,3),st(3) ! external functions logical seitzeq external seitzeq ! store the identity ngrp=1 srgrp(1,1,1)=1.d0; srgrp(1,2,1)=0.d0; srgrp(1,3,1)=0.d0 srgrp(2,1,1)=0.d0; srgrp(2,2,1)=1.d0; srgrp(2,3,1)=0.d0 srgrp(3,1,1)=0.d0; srgrp(3,2,1)=0.d0; srgrp(3,3,1)=1.d0 stgrp(:,1)=0.d0 10 continue ! right multiply by the generators do i=1,ngen do j=1,ngrp call seitzmul(eps,srgrp(:,:,j),stgrp(:,j),srgen(:,:,i),stgen(:,i),sr,st) ! check if the new element already exists do k=1,ngrp if (seitzeq(eps,srgrp(:,:,k),stgrp(:,k),sr,st)) goto 20 end do goto 40 20 continue end do end do ! left multiply by the generators do i=1,ngen do j=1,ngrp call seitzmul(eps,srgen(:,:,i),stgen(:,i),srgrp(:,:,j),stgrp(:,j),sr,st) ! check if the new element already exists do k=1,ngrp if (seitzeq(eps,srgrp(:,:,k),stgrp(:,k),sr,st)) goto 30 end do goto 40 30 continue end do end do ! all elements accounted for return 40 continue ! add new element ngrp=ngrp+1 if (ngrp.gt.192) then write(*,*) write(*,'("Error(gengroup): more than 192 group elements")') write(*,*) stop end if srgrp(:,:,ngrp)=sr(:,:) stgrp(:,ngrp)=st(:) goto 10 return end subroutine elk-2.3.22/src/spacegroup/PaxHeaders.22528/seitzeq.f900000644002504400250440000000005012337331322020351 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/seitzeq.f900000644002504400250440000000127112337331322021116 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. logical function seitzeq(eps,sr1,st1,sr2,st2) implicit none ! arguments real(8), intent(in) :: eps real(8), intent(in) :: sr1(3,3) real(8), intent(in) :: st1(3) real(8), intent(in) :: sr2(3,3) real(8), intent(in) :: st2(3) ! local variables integer j real(8) v1(3),v2(3) seitzeq=.false. do j=1,3 v1(:)=sr1(:,j)+st1(:) v2(:)=sr2(:,j)+st2(:) if ((abs(v1(1)-v2(1)).gt.eps).or. & (abs(v1(2)-v2(2)).gt.eps).or. & (abs(v1(3)-v2(3)).gt.eps)) return end do seitzeq=.true. return end function elk-2.3.22/src/spacegroup/PaxHeaders.22528/spacegroup.in0000644002504400250440000000005012337331322021045 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/spacegroup.in0000644002504400250440000000103012337331322021603 0ustar00dewhurstdewhurst00000000000000 'Bmab' : hrmg 10.0605232 10.0605232 24.972729 : a, b, c 90.0 90.0 90.0 : bc, ac, ab 1 1 1 : ncell .true. : primcell 3 : nspecies 'La' : spsymb, spfname 1 : nwpos 0.0000 0.0000 0.3608 : wpos 'Cu' 1 0.0000 0.0000 0.0000 'O' 2 0.2500 0.2500 0.0000 0.0000 0.0000 0.1820 elk-2.3.22/src/spacegroup/PaxHeaders.22528/writegeom.f900000644002504400250440000000005012337331322020667 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/writegeom.f900000644002504400250440000000334612337331322021441 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writegeom use modmain implicit none ! local variables integer is,ia,ip open(50,file='GEOMETRY.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("! Atomic positions generated by spacegroup version ",& &I1.1,".",I1.1,".",I2.2)') version write(50,'("! Hermann-Mauguin symbol : ",A)') trim(hrmg) write(50,'("! Hall symbol : ",A)') trim(hall) write(50,'("! Schoenflies symbol : ",A)') trim(schn) write(50,'("! space group number : ",A)') trim(num) write(50,'("! lattice constants (a,b,c) : ",3G18.10)') a,b,c write(50,'("! angles in degrees (bc,ac,ab) : ",3G18.10)') bc,ac,ab write(50,'("! number of conventional unit cells : ",3I4)') ncell write(50,'("! reduction to primitive cell : ",L1)') primcell write(50,'("! Wyckoff positions :")') do is=1,nspecies write(50,'("! species : ",I4,", ",A)') is,trim(spsymb(is)) do ip=1,nwpos(is) write(50,'("! ",3G18.10)') wpos(:,ip,is) end do end do write(50,*) write(50,'("avec")') write(50,'(3G18.10)') avec(:,1) write(50,'(3G18.10)') avec(:,2) write(50,'(3G18.10)') avec(:,3) write(50,*) write(50,'("atoms")') write(50,'(I4,T40," : nspecies")') nspecies do is=1,nspecies write(50,'("''",A,"''",T40," : spfname")') trim(spsymb(is))//'.in' write(50,'(I4,T40," : natoms; atposl, bfcmt below")') natoms(is) do ia=1,natoms(is) write(50,'(3F14.8," ",3F12.8)') atposl(:,ia,is),bfcmt0(:,ia,is) end do end do close(50) write(*,*) write(*,'("Info(writegeom):")') write(*,'(" Elk lattice vectors and atomic positions written to GEOMETRY.OUT")') return end subroutine elk-2.3.22/src/spacegroup/PaxHeaders.22528/r3frac.f900000644002504400250440000000005012337331322020045 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/r3frac.f900000644002504400250440000000175712337331322020623 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3frac ! !INTERFACE: subroutine r3frac(eps,v) ! !INPUT/OUTPUT PARAMETERS: ! eps : zero component tolerance (in,real) ! v : input vector (inout,real(3)) ! !DESCRIPTION: ! Finds the fractional part of each component of a real 3-vector using the ! function ${\rm frac}\,(x)=x-\lfloor x\rfloor$. A component is taken to be ! zero if it lies within the intervals $[0,\epsilon)$ or $(1-\epsilon,1]$. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) ! Removed iv, September 2011 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: eps real(8), intent(inout) :: v(3) ! local variables integer i do i=1,3 v(i)=v(i)-int(v(i)) if (v(i).lt.0.d0) v(i)=v(i)+1.d0 if ((1.d0-v(i)).lt.eps) v(i)=0.d0 if (v(i).lt.eps) v(i)=0.d0 end do return end subroutine !EOC elk-2.3.22/src/spacegroup/PaxHeaders.22528/geomplot.f900000644002504400250440000000005012337331322020513 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/geomplot.f900000644002504400250440000000445312337331322021265 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine geomplot use modmain implicit none ! local variables integer is,ia ! Bohr to Angstroms (CODATA 2002) real(8), parameter :: au_to_ang=0.5291772108d0 real(8) v1(3),v2(3),v3(3),v4(3),t1 real(8) dxx,dyx,dyy,dzx,dzy,dzz !------------------------------------------------! ! write the XCrysden file to crystal.xsf ! !------------------------------------------------! open(50,file='crystal.xsf',action='WRITE',form='FORMATTED') write(50,*) write(50,'("CRYSTAL")') write(50,*) write(50,'("PRIMVEC")') write(50,'(3G18.10)') avec(:,1)*au_to_ang write(50,'(3G18.10)') avec(:,2)*au_to_ang write(50,'(3G18.10)') avec(:,3)*au_to_ang write(50,*) write(50,'("PRIMCOORD")') write(50,'(2I8)') natmtot,1 do is=1,nspecies do ia=1,natoms(is) call r3mv(avec,atposl(:,ia,is),v1) write(50,'(A,3G18.10)') trim(spsymb(is)),v1(:)*au_to_ang end do end do close(50) write(*,*) write(*,'("Info(writexsf):")') write(*,'(" XCrysDen file written to crystal.xsf")') !-----------------------------------------------! ! write the V_Sim file to crystal.ascii ! !-----------------------------------------------! ! determine coordinate system vectors t1=sqrt(avec(1,1)**2+avec(2,1)**2+avec(3,1)**2) v1(:)=avec(:,1)/t1 t1=sqrt(avec(1,2)**2+avec(2,2)**2+avec(3,2)**2) v2(:)=avec(:,2)/t1 call r3cross(v1,v2,v3) t1=sqrt(v3(1)**2+v3(2)**2+v3(3)**2) v3(:)=v3(:)/t1 call r3cross(v3,v1,v2) t1=sqrt(v2(1)**2+v2(2)**2+v2(3)**2) v2(:)=v2(:)/t1 dxx=dot_product(avec(:,1),v1(:)) dyx=dot_product(avec(:,2),v1(:)) dyy=dot_product(avec(:,2),v2(:)) dzx=dot_product(avec(:,3),v1(:)) dzy=dot_product(avec(:,3),v2(:)) dzz=dot_product(avec(:,3),v3(:)) open(50,file='crystal.ascii',action='WRITE',form='FORMATTED') write(50,*) write(50,'(3G18.10)') dxx,dyx,dyy write(50,'(3G18.10)') dzx,dzy,dzz write(50,*) do is=1,nspecies do ia=1,natoms(is) v4(1)=dot_product(atposc(:,ia,is),v1(:)) v4(2)=dot_product(atposc(:,ia,is),v2(:)) v4(3)=dot_product(atposc(:,ia,is),v3(:)) write(50,'(3G18.10," ",A)') v4,trim(spsymb(is)) end do end do close(50) write(*,*) write(*,'("Info(writevsim):")') write(*,'(" V_Sim file written to crystal.ascii")') return end subroutine elk-2.3.22/src/spacegroup/PaxHeaders.22528/sgsymb.f900000644002504400250440000000005012337331322020171 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/sgsymb.f900000644002504400250440000010040012337331322020730 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: sgsymb ! !INTERFACE: subroutine sgsymb(hrmg,num,schn,hall) ! !INPUT/OUTPUT PARAMETERS: ! hrmg : Hermann-Mauguin symbol (in,character(20)) ! num : space group number (out,character(20)) ! schn : Schoenflies symbol (out,character(20)) ! hall : Hall symbol (out,character(20)) ! !DESCRIPTION: ! Returns the space group number, Schoenflies and Hall symbols given the ! Hermann-Mauguin symbol. The routine is case-sensitive. With acknowledgements ! to Ralf W. Grosse-Kunstleve and the tables available at ! {\tt http://cci.lbl.gov/sginfo/}. ! ! !REVISION HISTORY: ! Created October 2006 (JKD) !EOP !BOC implicit none ! arguments character(20), intent(in) :: hrmg character(20), intent(out) :: num character(20), intent(out) :: schn character(20), intent(out) :: hall select case(trim(adjustl(hrmg))) case('P1') num='1' schn='C1^1' hall='P 1' case('P-1') num='2' schn='Ci^1' hall='-P 1' case('P2:b') num='3:b' schn='C2^1' hall='P 2y' case('P2:c') num='3:c' schn='C2^1' hall='P 2' case('P2:a') num='3:a' schn='C2^1' hall='P 2x' case('P21:b') num='4:b' schn='C2^2' hall='P 2yb' case('P21:c') num='4:c' schn='C2^2' hall='P 2c' case('P21:a') num='4:a' schn='C2^2' hall='P 2xa' case('C2:b1') num='5:b1' schn='C2^3' hall='C 2y' case('C2:b2') num='5:b2' schn='C2^3' hall='A 2y' case('C2:b3') num='5:b3' schn='C2^3' hall='I 2y' case('C2:c1') num='5:c1' schn='C2^3' hall='A 2' case('C2:c2') num='5:c2' schn='C2^3' hall='B 2' case('C2:c3') num='5:c3' schn='C2^3' hall='I 2' case('C2:a1') num='5:a1' schn='C2^3' hall='B 2x' case('C2:a2') num='5:a2' schn='C2^3' hall='C 2x' case('C2:a3') num='5:a3' schn='C2^3' hall='I 2x' case('Pm:b') num='6:b' schn='Cs^1' hall='P -2y' case('Pm:c') num='6:c' schn='Cs^1' hall='P -2' case('Pm:a') num='6:a' schn='Cs^1' hall='P -2x' case('Pc:b1') num='7:b1' schn='Cs^2' hall='P -2yc' case('Pc:b2') num='7:b2' schn='Cs^2' hall='P -2yac' case('Pc:b3') num='7:b3' schn='Cs^2' hall='P -2ya' case('Pc:c1') num='7:c1' schn='Cs^2' hall='P -2a' case('Pc:c2') num='7:c2' schn='Cs^2' hall='P -2ab' case('Pc:c3') num='7:c3' schn='Cs^2' hall='P -2b' case('Pc:a1') num='7:a1' schn='Cs^2' hall='P -2xb' case('Pc:a2') num='7:a2' schn='Cs^2' hall='P -2xbc' case('Pc:a3') num='7:a3' schn='Cs^2' hall='P -2xc' case('Cm:b1') num='8:b1' schn='Cs^3' hall='C -2y' case('Cm:b2') num='8:b2' schn='Cs^3' hall='A -2y' case('Cm:b3') num='8:b3' schn='Cs^3' hall='I -2y' case('Cm:c1') num='8:c1' schn='Cs^3' hall='A -2' case('Cm:c2') num='8:c2' schn='Cs^3' hall='B -2' case('Cm:c3') num='8:c3' schn='Cs^3' hall='I -2' case('Cm:a1') num='8:a1' schn='Cs^3' hall='B -2x' case('Cm:a2') num='8:a2' schn='Cs^3' hall='C -2x' case('Cm:a3') num='8:a3' schn='Cs^3' hall='I -2x' case('Cc:b1') num='9:b1' schn='Cs^4' hall='C -2yc' case('Cc:b2') num='9:b2' schn='Cs^4' hall='A -2yac' case('Cc:b3') num='9:b3' schn='Cs^4' hall='I -2ya' case('Cc:-b1') num='9:-b1' schn='Cs^4' hall='A -2ya' case('Cc:-b2') num='9:-b2' schn='Cs^4' hall='C -2ybc' case('Cc:-b3') num='9:-b3' schn='Cs^4' hall='I -2yc' case('Cc:c1') num='9:c1' schn='Cs^4' hall='A -2a' case('Cc:c2') num='9:c2' schn='Cs^4' hall='B -2bc' case('Cc:c3') num='9:c3' schn='Cs^4' hall='I -2b' case('Cc:-c1') num='9:-c1' schn='Cs^4' hall='B -2b' case('Cc:-c2') num='9:-c2' schn='Cs^4' hall='A -2ac' case('Cc:-c3') num='9:-c3' schn='Cs^4' hall='I -2a' case('Cc:a1') num='9:a1' schn='Cs^4' hall='B -2xb' case('Cc:a2') num='9:a2' schn='Cs^4' hall='C -2xbc' case('Cc:a3') num='9:a3' schn='Cs^4' hall='I -2xc' case('Cc:-a1') num='9:-a1' schn='Cs^4' hall='C -2xc' case('Cc:-a2') num='9:-a2' schn='Cs^4' hall='B -2xbc' case('Cc:-a3') num='9:-a3' schn='Cs^4' hall='I -2xb' case('P2/m:b') num='10:b' schn='C2h^1' hall='-P 2y' case('P2/m:c') num='10:c' schn='C2h^1' hall='-P 2' case('P2/m:a') num='10:a' schn='C2h^1' hall='-P 2x' case('P21/m:b') num='11:b' schn='C2h^2' hall='-P 2yb' case('P21/m:c') num='11:c' schn='C2h^2' hall='-P 2c' case('P21/m:a') num='11:a' schn='C2h^2' hall='-P 2xa' case('C2/m:b1') num='12:b1' schn='C2h^3' hall='-C 2y' case('C2/m:b2') num='12:b2' schn='C2h^3' hall='-A 2y' case('C2/m:b3') num='12:b3' schn='C2h^3' hall='-I 2y' case('C2/m:c1') num='12:c1' schn='C2h^3' hall='-A 2' case('C2/m:c2') num='12:c2' schn='C2h^3' hall='-B 2' case('C2/m:c3') num='12:c3' schn='C2h^3' hall='-I 2' case('C2/m:a1') num='12:a1' schn='C2h^3' hall='-B 2x' case('C2/m:a2') num='12:a2' schn='C2h^3' hall='-C 2x' case('C2/m:a3') num='12:a3' schn='C2h^3' hall='-I 2x' case('P2/c:b1') num='13:b1' schn='C2h^4' hall='-P 2yc' case('P2/c:b2') num='13:b2' schn='C2h^4' hall='-P 2yac' case('P2/c:b3') num='13:b3' schn='C2h^4' hall='-P 2ya' case('P2/c:c1') num='13:c1' schn='C2h^4' hall='-P 2a' case('P2/c:c2') num='13:c2' schn='C2h^4' hall='-P 2ab' case('P2/c:c3') num='13:c3' schn='C2h^4' hall='-P 2b' case('P2/c:a1') num='13:a1' schn='C2h^4' hall='-P 2xb' case('P2/c:a2') num='13:a2' schn='C2h^4' hall='-P 2xbc' case('P2/c:a3') num='13:a3' schn='C2h^4' hall='-P 2xc' case('P21/c:b1') num='14:b1' schn='C2h^5' hall='-P 2ybc' case('P21/c:b2') num='14:b2' schn='C2h^5' hall='-P 2yn' case('P21/c:b3') num='14:b3' schn='C2h^5' hall='-P 2yab' case('P21/c:c1') num='14:c1' schn='C2h^5' hall='-P 2ac' case('P21/c:c2') num='14:c2' schn='C2h^5' hall='-P 2n' case('P21/c:c3') num='14:c3' schn='C2h^5' hall='-P 2bc' case('P21/c:a1') num='14:a1' schn='C2h^5' hall='-P 2xab' case('P21/c:a2') num='14:a2' schn='C2h^5' hall='-P 2xn' case('P21/c:a3') num='14:a3' schn='C2h^5' hall='-P 2xac' case('C2/c:b1') num='15:b1' schn='C2h^6' hall='-C 2yc' case('C2/c:b2') num='15:b2' schn='C2h^6' hall='-A 2yac' case('C2/c:b3') num='15:b3' schn='C2h^6' hall='-I 2ya' case('C2/c:-b1') num='15:-b1' schn='C2h^6' hall='-A 2ya' case('C2/c:-b2') num='15:-b2' schn='C2h^6' hall='-C 2ybc' case('C2/c:-b3') num='15:-b3' schn='C2h^6' hall='-I 2yc' case('C2/c:c1') num='15:c1' schn='C2h^6' hall='-A 2a' case('C2/c:c2') num='15:c2' schn='C2h^6' hall='-B 2bc' case('C2/c:c3') num='15:c3' schn='C2h^6' hall='-I 2b' case('C2/c:-c1') num='15:-c1' schn='C2h^6' hall='-B 2b' case('C2/c:-c2') num='15:-c2' schn='C2h^6' hall='-A 2ac' case('C2/c:-c3') num='15:-c3' schn='C2h^6' hall='-I 2a' case('C2/c:a1') num='15:a1' schn='C2h^6' hall='-B 2xb' case('C2/c:a2') num='15:a2' schn='C2h^6' hall='-C 2xbc' case('C2/c:a3') num='15:a3' schn='C2h^6' hall='-I 2xc' case('C2/c:-a1') num='15:-a1' schn='C2h^6' hall='-C 2xc' case('C2/c:-a2') num='15:-a2' schn='C2h^6' hall='-B 2xbc' case('C2/c:-a3') num='15:-a3' schn='C2h^6' hall='-I 2xb' case('P222') num='16' schn='D2^1' hall='P 2 2' case('P2221') num='17' schn='D2^2' hall='P 2c 2' case('P2122') num='17:cab' schn='D2^2' hall='P 2a 2a' case('P2212') num='17:bca' schn='D2^2' hall='P 2 2b' case('P21212') num='18' schn='D2^3' hall='P 2 2ab' case('P22121') num='18:cab' schn='D2^3' hall='P 2bc 2' case('P21221') num='18:bca' schn='D2^3' hall='P 2ac 2ac' case('P212121') num='19' schn='D2^4' hall='P 2ac 2ab' case('C2221') num='20' schn='D2^5' hall='C 2c 2' case('A2122') num='20:cab' schn='D2^5' hall='A 2a 2a' case('B2212') num='20:bca' schn='D2^5' hall='B 2 2b' case('C222') num='21' schn='D2^6' hall='C 2 2' case('A222') num='21:cab' schn='D2^6' hall='A 2 2' case('B222') num='21:bca' schn='D2^6' hall='B 2 2' case('F222') num='22' schn='D2^7' hall='F 2 2' case('I222') num='23' schn='D2^8' hall='I 2 2' case('I212121') num='24' schn='D2^9' hall='I 2b 2c' case('Pmm2') num='25' schn='C2v^1' hall='P 2 -2' case('P2mm') num='25:cab' schn='C2v^1' hall='P -2 2' case('Pm2m') num='25:bca' schn='C2v^1' hall='P -2 -2' case('Pmc21') num='26' schn='C2v^2' hall='P 2c -2' case('Pcm21') num='26:ba-c' schn='C2v^2' hall='P 2c -2c' case('P21ma') num='26:cab' schn='C2v^2' hall='P -2a 2a' case('P21am') num='26:-cba' schn='C2v^2' hall='P -2 2a' case('Pb21m') num='26:bca' schn='C2v^2' hall='P -2 -2b' case('Pm21b') num='26:a-cb' schn='C2v^2' hall='P -2b -2' case('Pcc2') num='27' schn='C2v^3' hall='P 2 -2c' case('P2aa') num='27:cab' schn='C2v^3' hall='P -2a 2' case('Pb2b') num='27:bca' schn='C2v^3' hall='P -2b -2b' case('Pma2') num='28' schn='C2v^4' hall='P 2 -2a' case('Pbm2') num='28:ba-c' schn='C2v^4' hall='P 2 -2b' case('P2mb') num='28:cab' schn='C2v^4' hall='P -2b 2' case('P2cm') num='28:-cba' schn='C2v^4' hall='P -2c 2' case('Pc2m') num='28:bca' schn='C2v^4' hall='P -2c -2c' case('Pm2a') num='28:a-cb' schn='C2v^4' hall='P -2a -2a' case('Pca21') num='29' schn='C2v^5' hall='P 2c -2ac' case('Pbc21') num='29:ba-c' schn='C2v^5' hall='P 2c -2b' case('P21ab') num='29:cab' schn='C2v^5' hall='P -2b 2a' case('P21ca') num='29:-cba' schn='C2v^5' hall='P -2ac 2a' case('Pc21b') num='29:bca' schn='C2v^5' hall='P -2bc -2c' case('Pb21a') num='29:a-cb' schn='C2v^5' hall='P -2a -2ab' case('Pnc2') num='30' schn='C2v^6' hall='P 2 -2bc' case('Pcn2') num='30:ba-c' schn='C2v^6' hall='P 2 -2ac' case('P2na') num='30:cab' schn='C2v^6' hall='P -2ac 2' case('P2an') num='30:-cba' schn='C2v^6' hall='P -2ab 2' case('Pb2n') num='30:bca' schn='C2v^6' hall='P -2ab -2ab' case('Pn2b') num='30:a-cb' schn='C2v^6' hall='P -2bc -2bc' case('Pmn21') num='31' schn='C2v^7' hall='P 2ac -2' case('Pnm21') num='31:ba-c' schn='C2v^7' hall='P 2bc -2bc' case('P21mn') num='31:cab' schn='C2v^7' hall='P -2ab 2ab' case('P21nm') num='31:-cba' schn='C2v^7' hall='P -2 2ac' case('Pn21m') num='31:bca' schn='C2v^7' hall='P -2 -2bc' case('Pm21n') num='31:a-cb' schn='C2v^7' hall='P -2ab -2' case('Pba2') num='32' schn='C2v^8' hall='P 2 -2ab' case('P2cb') num='32:cab' schn='C2v^8' hall='P -2bc 2' case('Pc2a') num='32:bca' schn='C2v^8' hall='P -2ac -2ac' case('Pna21') num='33' schn='C2v^9' hall='P 2c -2n' case('Pbn21') num='33:ba-c' schn='C2v^9' hall='P 2c -2ab' case('P21nb') num='33:cab' schn='C2v^9' hall='P -2bc 2a' case('P21cn') num='33:-cba' schn='C2v^9' hall='P -2n 2a' case('Pc21n') num='33:bca' schn='C2v^9' hall='P -2n -2ac' case('Pn21a') num='33:a-cb' schn='C2v^9' hall='P -2ac -2n' case('Pnn2') num='34' schn='C2v^10' hall='P 2 -2n' case('P2nn') num='34:cab' schn='C2v^10' hall='P -2n 2' case('Pn2n') num='34:bca' schn='C2v^10' hall='P -2n -2n' case('Cmm2') num='35' schn='C2v^11' hall='C 2 -2' case('A2mm') num='35:cab' schn='C2v^11' hall='A -2 2' case('Bm2m') num='35:bca' schn='C2v^11' hall='B -2 -2' case('Cmc21') num='36' schn='C2v^12' hall='C 2c -2' case('Ccm21') num='36:ba-c' schn='C2v^12' hall='C 2c -2c' case('A21ma') num='36:cab' schn='C2v^12' hall='A -2a 2a' case('A21am') num='36:-cba' schn='C2v^12' hall='A -2 2a' case('Bb21m') num='36:bca' schn='C2v^12' hall='B -2 -2b' case('Bm21b') num='36:a-cb' schn='C2v^12' hall='B -2b -2' case('Ccc2') num='37' schn='C2v^13' hall='C 2 -2c' case('A2aa') num='37:cab' schn='C2v^13' hall='A -2a 2' case('Bb2b') num='37:bca' schn='C2v^13' hall='B -2b -2b' case('Amm2') num='38' schn='C2v^14' hall='A 2 -2' case('Bmm2') num='38:ba-c' schn='C2v^14' hall='B 2 -2' case('B2mm') num='38:cab' schn='C2v^14' hall='B -2 2' case('C2mm') num='38:-cba' schn='C2v^14' hall='C -2 2' case('Cm2m') num='38:bca' schn='C2v^14' hall='C -2 -2' case('Am2m') num='38:a-cb' schn='C2v^14' hall='A -2 -2' case('Abm2') num='39' schn='C2v^15' hall='A 2 -2c' case('Bma2') num='39:ba-c' schn='C2v^15' hall='B 2 -2c' case('B2cm') num='39:cab' schn='C2v^15' hall='B -2c 2' case('C2mb') num='39:-cba' schn='C2v^15' hall='C -2b 2' case('Cm2a') num='39:bca' schn='C2v^15' hall='C -2b -2b' case('Ac2m') num='39:a-cb' schn='C2v^15' hall='A -2c -2c' case('Ama2') num='40' schn='C2v^16' hall='A 2 -2a' case('Bbm2') num='40:ba-c' schn='C2v^16' hall='B 2 -2b' case('B2mb') num='40:cab' schn='C2v^16' hall='B -2b 2' case('C2cm') num='40:-cba' schn='C2v^16' hall='C -2c 2' case('Cc2m') num='40:bca' schn='C2v^16' hall='C -2c -2c' case('Am2a') num='40:a-cb' schn='C2v^16' hall='A -2a -2a' case('Aba2') num='41' schn='C2v^17' hall='A 2 -2ac' case('Bba2') num='41:ba-c' schn='C2v^17' hall='B 2 -2bc' case('B2cb') num='41:cab' schn='C2v^17' hall='B -2bc 2' case('C2cb') num='41:-cba' schn='C2v^17' hall='C -2bc 2' case('Cc2a') num='41:bca' schn='C2v^17' hall='C -2bc -2bc' case('Ac2a') num='41:a-cb' schn='C2v^17' hall='A -2ac -2ac' case('Fmm2') num='42' schn='C2v^18' hall='F 2 -2' case('F2mm') num='42:cab' schn='C2v^18' hall='F -2 2' case('Fm2m') num='42:bca' schn='C2v^18' hall='F -2 -2' case('Fdd2') num='43' schn='C2v^19' hall='F 2 -2d' case('F2dd') num='43:cab' schn='C2v^19' hall='F -2d 2' case('Fd2d') num='43:bca' schn='C2v^19' hall='F -2d -2d' case('Imm2') num='44' schn='C2v^20' hall='I 2 -2' case('I2mm') num='44:cab' schn='C2v^20' hall='I -2 2' case('Im2m') num='44:bca' schn='C2v^20' hall='I -2 -2' case('Iba2') num='45' schn='C2v^21' hall='I 2 -2c' case('I2cb') num='45:cab' schn='C2v^21' hall='I -2a 2' case('Ic2a') num='45:bca' schn='C2v^21' hall='I -2b -2b' case('Ima2') num='46' schn='C2v^22' hall='I 2 -2a' case('Ibm2') num='46:ba-c' schn='C2v^22' hall='I 2 -2b' case('I2mb') num='46:cab' schn='C2v^22' hall='I -2b 2' case('I2cm') num='46:-cba' schn='C2v^22' hall='I -2c 2' case('Ic2m') num='46:bca' schn='C2v^22' hall='I -2c -2c' case('Im2a') num='46:a-cb' schn='C2v^22' hall='I -2a -2a' case('Pmmm') num='47' schn='D2h^1' hall='-P 2 2' case('Pnnn:1') num='48:1' schn='D2h^2' hall='P 2 2 -1n' case('Pnnn:2') num='48:2' schn='D2h^2' hall='-P 2ab 2bc' case('Pccm') num='49' schn='D2h^3' hall='-P 2 2c' case('Pmaa') num='49:cab' schn='D2h^3' hall='-P 2a 2' case('Pbmb') num='49:bca' schn='D2h^3' hall='-P 2b 2b' case('Pban:1') num='50:1' schn='D2h^4' hall='P 2 2 -1ab' case('Pban:2') num='50:2' schn='D2h^4' hall='-P 2ab 2b' case('Pncb:1') num='50:1cab' schn='D2h^4' hall='P 2 2 -1bc' case('Pncb:2') num='50:2cab' schn='D2h^4' hall='-P 2b 2bc' case('Pcna:1') num='50:1bca' schn='D2h^4' hall='P 2 2 -1ac' case('Pcna:2') num='50:2bca' schn='D2h^4' hall='-P 2a 2c' case('Pmma') num='51' schn='D2h^5' hall='-P 2a 2a' case('Pmmb') num='51:ba-c' schn='D2h^5' hall='-P 2b 2' case('Pbmm') num='51:cab' schn='D2h^5' hall='-P 2 2b' case('Pcmm') num='51:-cba' schn='D2h^5' hall='-P 2c 2c' case('Pmcm') num='51:bca' schn='D2h^5' hall='-P 2c 2' case('Pmam') num='51:a-cb' schn='D2h^5' hall='-P 2 2a' case('Pnna') num='52' schn='D2h^6' hall='-P 2a 2bc' case('Pnnb') num='52:ba-c' schn='D2h^6' hall='-P 2b 2n' case('Pbnn') num='52:cab' schn='D2h^6' hall='-P 2n 2b' case('Pcnn') num='52:-cba' schn='D2h^6' hall='-P 2ab 2c' case('Pncn') num='52:bca' schn='D2h^6' hall='-P 2ab 2n' case('Pnan') num='52:a-cb' schn='D2h^6' hall='-P 2n 2bc' case('Pmna') num='53' schn='D2h^7' hall='-P 2ac 2' case('Pnmb') num='53:ba-c' schn='D2h^7' hall='-P 2bc 2bc' case('Pbmn') num='53:cab' schn='D2h^7' hall='-P 2ab 2ab' case('Pcnm') num='53:-cba' schn='D2h^7' hall='-P 2 2ac' case('Pncm') num='53:bca' schn='D2h^7' hall='-P 2 2bc' case('Pman') num='53:a-cb' schn='D2h^7' hall='-P 2ab 2' case('Pcca') num='54' schn='D2h^8' hall='-P 2a 2ac' case('Pccb') num='54:ba-c' schn='D2h^8' hall='-P 2b 2c' case('Pbaa') num='54:cab' schn='D2h^8' hall='-P 2a 2b' case('Pcaa') num='54:-cba' schn='D2h^8' hall='-P 2ac 2c' case('Pbcb') num='54:bca' schn='D2h^8' hall='-P 2bc 2b' case('Pbab') num='54:a-cb' schn='D2h^8' hall='-P 2b 2ab' case('Pbam') num='55' schn='D2h^9' hall='-P 2 2ab' case('Pmcb') num='55:cab' schn='D2h^9' hall='-P 2bc 2' case('Pcma') num='55:bca' schn='D2h^9' hall='-P 2ac 2ac' case('Pccn') num='56' schn='D2h^10' hall='-P 2ab 2ac' case('Pnaa') num='56:cab' schn='D2h^10' hall='-P 2ac 2bc' case('Pbnb') num='56:bca' schn='D2h^10' hall='-P 2bc 2ab' case('Pbcm') num='57' schn='D2h^11' hall='-P 2c 2b' case('Pcam') num='57:ba-c' schn='D2h^11' hall='-P 2c 2ac' case('Pmca') num='57:cab' schn='D2h^11' hall='-P 2ac 2a' case('Pmab') num='57:-cba' schn='D2h^11' hall='-P 2b 2a' case('Pbma') num='57:bca' schn='D2h^11' hall='-P 2a 2ab' case('Pcmb') num='57:a-cb' schn='D2h^11' hall='-P 2bc 2c' case('Pnnm') num='58' schn='D2h^12' hall='-P 2 2n' case('Pmnn') num='58:cab' schn='D2h^12' hall='-P 2n 2' case('Pnmn') num='58:bca' schn='D2h^12' hall='-P 2n 2n' case('Pmmn:1') num='59:1' schn='D2h^13' hall='P 2 2ab -1ab' case('Pmmn:2') num='59:2' schn='D2h^13' hall='-P 2ab 2a' case('Pnmm:1') num='59:1cab' schn='D2h^13' hall='P 2bc 2 -1bc' case('Pnmm:2') num='59:2cab' schn='D2h^13' hall='-P 2c 2bc' case('Pmnm:1') num='59:1bca' schn='D2h^13' hall='P 2ac 2ac -1ac' case('Pmnm:2') num='59:2bca' schn='D2h^13' hall='-P 2c 2a' case('Pbcn') num='60' schn='D2h^14' hall='-P 2n 2ab' case('Pcan') num='60:ba-c' schn='D2h^14' hall='-P 2n 2c' case('Pnca') num='60:cab' schn='D2h^14' hall='-P 2a 2n' case('Pnab') num='60:-cba' schn='D2h^14' hall='-P 2bc 2n' case('Pbna') num='60:bca' schn='D2h^14' hall='-P 2ac 2b' case('Pcnb') num='60:a-cb' schn='D2h^14' hall='-P 2b 2ac' case('Pbca') num='61' schn='D2h^15' hall='-P 2ac 2ab' case('Pcab') num='61:ba-c' schn='D2h^15' hall='-P 2bc 2ac' case('Pnma') num='62' schn='D2h^16' hall='-P 2ac 2n' case('Pmnb') num='62:ba-c' schn='D2h^16' hall='-P 2bc 2a' case('Pbnm') num='62:cab' schn='D2h^16' hall='-P 2c 2ab' case('Pcmn') num='62:-cba' schn='D2h^16' hall='-P 2n 2ac' case('Pmcn') num='62:bca' schn='D2h^16' hall='-P 2n 2a' case('Pnam') num='62:a-cb' schn='D2h^16' hall='-P 2c 2n' case('Cmcm') num='63' schn='D2h^17' hall='-C 2c 2' case('Ccmm') num='63:ba-c' schn='D2h^17' hall='-C 2c 2c' case('Amma') num='63:cab' schn='D2h^17' hall='-A 2a 2a' case('Amam') num='63:-cba' schn='D2h^17' hall='-A 2 2a' case('Bbmm') num='63:bca' schn='D2h^17' hall='-B 2 2b' case('Bmmb') num='63:a-cb' schn='D2h^17' hall='-B 2b 2' case('Cmca') num='64' schn='D2h^18' hall='-C 2bc 2' case('Ccmb') num='64:ba-c' schn='D2h^18' hall='-C 2bc 2bc' case('Abma') num='64:cab' schn='D2h^18' hall='-A 2ac 2ac' case('Acam') num='64:-cba' schn='D2h^18' hall='-A 2 2ac' case('Bbcm') num='64:bca' schn='D2h^18' hall='-B 2 2bc' case('Bmab') num='64:a-cb' schn='D2h^18' hall='-B 2bc 2' case('Cmmm') num='65' schn='D2h^19' hall='-C 2 2' case('Ammm') num='65:cab' schn='D2h^19' hall='-A 2 2' case('Bmmm') num='65:bca' schn='D2h^19' hall='-B 2 2' case('Cccm') num='66' schn='D2h^20' hall='-C 2 2c' case('Amaa') num='66:cab' schn='D2h^20' hall='-A 2a 2' case('Bbmb') num='66:bca' schn='D2h^20' hall='-B 2b 2b' case('Cmma') num='67' schn='D2h^21' hall='-C 2b 2' case('Cmmb') num='67:ba-c' schn='D2h^21' hall='-C 2b 2b' case('Abmm') num='67:cab' schn='D2h^21' hall='-A 2c 2c' case('Acmm') num='67:-cba' schn='D2h^21' hall='-A 2 2c' case('Bmcm') num='67:bca' schn='D2h^21' hall='-B 2 2c' case('Bmam') num='67:a-cb' schn='D2h^21' hall='-B 2c 2' case('Ccca:1') num='68:1' schn='D2h^22' hall='C 2 2 -1bc' case('Ccca:2') num='68:2' schn='D2h^22' hall='-C 2b 2bc' case('Cccb:1') num='68:1ba-c' schn='D2h^22' hall='C 2 2 -1bc' case('Cccb:2') num='68:2ba-c' schn='D2h^22' hall='-C 2b 2c' case('Abaa:1') num='68:1cab' schn='D2h^22' hall='A 2 2 -1ac' case('Abaa:2') num='68:2cab' schn='D2h^22' hall='-A 2a 2c' case('Acaa:1') num='68:1-cba' schn='D2h^22' hall='A 2 2 -1ac' case('Acaa:2') num='68:2-cba' schn='D2h^22' hall='-A 2ac 2c' case('Bbcb:1') num='68:1bca' schn='D2h^22' hall='B 2 2 -1bc' case('Bbcb:2') num='68:2bca' schn='D2h^22' hall='-B 2bc 2b' case('Bbab:1') num='68:1a-cb' schn='D2h^22' hall='B 2 2 -1bc' case('Bbab:2') num='68:2a-cb' schn='D2h^22' hall='-B 2b 2bc' case('Fmmm') num='69' schn='D2h^23' hall='-F 2 2' case('Fddd:1') num='70:1' schn='D2h^24' hall='F 2 2 -1d' case('Fddd:2') num='70:2' schn='D2h^24' hall='-F 2uv 2vw' case('Immm') num='71' schn='D2h^25' hall='-I 2 2' case('Ibam') num='72' schn='D2h^26' hall='-I 2 2c' case('Imcb') num='72:cab' schn='D2h^26' hall='-I 2a 2' case('Icma') num='72:bca' schn='D2h^26' hall='-I 2b 2b' case('Ibca') num='73' schn='D2h^27' hall='-I 2b 2c' case('Icab') num='73:ba-c' schn='D2h^27' hall='-I 2a 2b' case('Imma') num='74' schn='D2h^28' hall='-I 2b 2' case('Immb') num='74:ba-c' schn='D2h^28' hall='-I 2a 2a' case('Ibmm') num='74:cab' schn='D2h^28' hall='-I 2c 2c' case('Icmm') num='74:-cba' schn='D2h^28' hall='-I 2 2b' case('Imcm') num='74:bca' schn='D2h^28' hall='-I 2 2a' case('Imam') num='74:a-cb' schn='D2h^28' hall='-I 2c 2' case('P4') num='75' schn='C4^1' hall='P 4' case('P41') num='76' schn='C4^2' hall='P 4w' case('P42') num='77' schn='C4^3' hall='P 4c' case('P43') num='78' schn='C4^4' hall='P 4cw' case('I4') num='79' schn='C4^5' hall='I 4' case('I41') num='80' schn='C4^6' hall='I 4bw' case('P-4') num='81' schn='S4^1' hall='P -4' case('I-4') num='82' schn='S4^2' hall='I -4' case('P4/m') num='83' schn='C4h^1' hall='-P 4' case('P42/m') num='84' schn='C4h^2' hall='-P 4c' case('P4/n:1') num='85:1' schn='C4h^3' hall='P 4ab -1ab' case('P4/n:2') num='85:2' schn='C4h^3' hall='-P 4a' case('P42/n:1') num='86:1' schn='C4h^4' hall='P 4n -1n' case('P42/n:2') num='86:2' schn='C4h^4' hall='-P 4bc' case('I4/m') num='87' schn='C4h^5' hall='-I 4' case('I41/a:1') num='88:1' schn='C4h^6' hall='I 4bw -1bw' case('I41/a:2') num='88:2' schn='C4h^6' hall='-I 4ad' case('P422') num='89' schn='D4^1' hall='P 4 2' case('P4212') num='90' schn='D4^2' hall='P 4ab 2ab' case('P4122') num='91' schn='D4^3' hall='P 4w 2c' case('P41212') num='92' schn='D4^4' hall='P 4abw 2nw' case('P4222') num='93' schn='D4^5' hall='P 4c 2' case('P42212') num='94' schn='D4^6' hall='P 4n 2n' case('P4322') num='95' schn='D4^7' hall='P 4cw 2c' case('P43212') num='96' schn='D4^8' hall='P 4nw 2abw' case('I422') num='97' schn='D4^9' hall='I 4 2' case('I4122') num='98' schn='D4^10' hall='I 4bw 2bw' case('P4mm') num='99' schn='C4v^1' hall='P 4 -2' case('P4bm') num='100' schn='C4v^2' hall='P 4 -2ab' case('P42cm') num='101' schn='C4v^3' hall='P 4c -2c' case('P42nm') num='102' schn='C4v^4' hall='P 4n -2n' case('P4cc') num='103' schn='C4v^5' hall='P 4 -2c' case('P4nc') num='104' schn='C4v^6' hall='P 4 -2n' case('P42mc') num='105' schn='C4v^7' hall='P 4c -2' case('P42bc') num='106' schn='C4v^8' hall='P 4c -2ab' case('I4mm') num='107' schn='C4v^9' hall='I 4 -2' case('I4cm') num='108' schn='C4v^10' hall='I 4 -2c' case('I41md') num='109' schn='C4v^11' hall='I 4bw -2' case('I41cd') num='110' schn='C4v^12' hall='I 4bw -2c' case('P-42m') num='111' schn='D2d^1' hall='P -4 2' case('P-42c') num='112' schn='D2d^2' hall='P -4 2c' case('P-421m') num='113' schn='D2d^3' hall='P -4 2ab' case('P-421c') num='114' schn='D2d^4' hall='P -4 2n' case('P-4m2') num='115' schn='D2d^5' hall='P -4 -2' case('P-4c2') num='116' schn='D2d^6' hall='P -4 -2c' case('P-4b2') num='117' schn='D2d^7' hall='P -4 -2ab' case('P-4n2') num='118' schn='D2d^8' hall='P -4 -2n' case('I-4m2') num='119' schn='D2d^9' hall='I -4 -2' case('I-4c2') num='120' schn='D2d^10' hall='I -4 -2c' case('I-42m') num='121' schn='D2d^11' hall='I -4 2' case('I-42d') num='122' schn='D2d^12' hall='I -4 2bw' case('P4/mmm') num='123' schn='D4h^1' hall='-P 4 2' case('P4/mcc') num='124' schn='D4h^2' hall='-P 4 2c' case('P4/nbm:1') num='125:1' schn='D4h^3' hall='P 4 2 -1ab' case('P4/nbm:2') num='125:2' schn='D4h^3' hall='-P 4a 2b' case('P4/nnc:1') num='126:1' schn='D4h^4' hall='P 4 2 -1n' case('P4/nnc:2') num='126:2' schn='D4h^4' hall='-P 4a 2bc' case('P4/mbm') num='127' schn='D4h^5' hall='-P 4 2ab' case('P4/mnc') num='128' schn='D4h^6' hall='-P 4 2n' case('P4/nmm:1') num='129:1' schn='D4h^7' hall='P 4ab 2ab -1ab' case('P4/nmm:2') num='129:2' schn='D4h^7' hall='-P 4a 2a' case('P4/ncc:1') num='130:1' schn='D4h^8' hall='P 4ab 2n -1ab' case('P4/ncc:2') num='130:2' schn='D4h^8' hall='-P 4a 2ac' case('P42/mmc') num='131' schn='D4h^9' hall='-P 4c 2' case('P42/mcm') num='132' schn='D4h^10' hall='-P 4c 2c' case('P42/nbc:1') num='133:1' schn='D4h^11' hall='P 4n 2c -1n' case('P42/nbc:2') num='133:2' schn='D4h^11' hall='-P 4ac 2b' case('P42/nnm:1') num='134:1' schn='D4h^12' hall='P 4n 2 -1n' case('P42/nnm:2') num='134:2' schn='D4h^12' hall='-P 4ac 2bc' case('P42/mbc') num='135' schn='D4h^13' hall='-P 4c 2ab' case('P42/mnm') num='136' schn='D4h^14' hall='-P 4n 2n' case('P42/nmc:1') num='137:1' schn='D4h^15' hall='P 4n 2n -1n' case('P42/nmc:2') num='137:2' schn='D4h^15' hall='-P 4ac 2a' case('P42/ncm:1') num='138:1' schn='D4h^16' hall='P 4n 2ab -1n' case('P42/ncm:2') num='138:2' schn='D4h^16' hall='-P 4ac 2ac' case('I4/mmm') num='139' schn='D4h^17' hall='-I 4 2' case('I4/mcm') num='140' schn='D4h^18' hall='-I 4 2c' case('I41/amd:1') num='141:1' schn='D4h^19' hall='I 4bw 2bw -1bw' case('I41/amd:2') num='141:2' schn='D4h^19' hall='-I 4bd 2' case('I41/acd:1') num='142:1' schn='D4h^20' hall='I 4bw 2aw -1bw' case('I41/acd:2') num='142:2' schn='D4h^20' hall='-I 4bd 2c' case('P3') num='143' schn='C3^1' hall='P 3' case('P31') num='144' schn='C3^2' hall='P 31' case('P32') num='145' schn='C3^3' hall='P 32' case('R3:H') num='146:H' schn='C3^4' hall='R 3' case('R3:R') num='146:R' schn='C3^4' hall='P 3*' case('P-3') num='147' schn='C3i^1' hall='-P 3' case('R-3:H') num='148:H' schn='C3i^2' hall='-R 3' case('R-3:R') num='148:R' schn='C3i^2' hall='-P 3*' case('P312') num='149' schn='D3^1' hall='P 3 2' case('P321') num='150' schn='D3^2' hall='P 3 2"' case('P3112') num='151' schn='D3^3' hall='P 31 2c (0 0 1)' case('P3121') num='152' schn='D3^4' hall='P 31 2"' case('P3212') num='153' schn='D3^5' hall='P 32 2c (0 0 -1)' case('P3221') num='154' schn='D3^6' hall='P 32 2"' case('R32:H') num='155:H' schn='D3^7' hall='R 3 2"' case('R32:R') num='155:R' schn='D3^7' hall='P 3* 2' case('P3m1') num='156' schn='C3v^1' hall='P 3 -2"' case('P31m') num='157' schn='C3v^2' hall='P 3 -2' case('P3c1') num='158' schn='C3v^3' hall='P 3 -2"c' case('P31c') num='159' schn='C3v^4' hall='P 3 -2c' case('R3m:H') num='160:H' schn='C3v^5' hall='R 3 -2"' case('R3m:R') num='160:R' schn='C3v^5' hall='P 3* -2' case('R3c:H') num='161:H' schn='C3v^6' hall='R 3 -2"c' case('R3c:R') num='161:R' schn='C3v^6' hall='P 3* -2n' case('P-31m') num='162' schn='D3d^1' hall='-P 3 2' case('P-31c') num='163' schn='D3d^2' hall='-P 3 2c' case('P-3m1') num='164' schn='D3d^3' hall='-P 3 2"' case('P-3c1') num='165' schn='D3d^4' hall='-P 3 2"c' case('R-3m:H') num='166:H' schn='D3d^5' hall='-R 3 2"' case('R-3m:R') num='166:R' schn='D3d^5' hall='-P 3* 2' case('R-3c:H') num='167:H' schn='D3d^6' hall='-R 3 2"c' case('R-3c:R') num='167:R' schn='D3d^6' hall='-P 3* 2n' case('P6') num='168' schn='C6^1' hall='P 6' case('P61') num='169' schn='C6^2' hall='P 61' case('P65') num='170' schn='C6^3' hall='P 65' case('P62') num='171' schn='C6^4' hall='P 62' case('P64') num='172' schn='C6^5' hall='P 64' case('P63') num='173' schn='C6^6' hall='P 6c' case('P-6') num='174' schn='C3h^1' hall='P -6' case('P6/m') num='175' schn='C6h^1' hall='-P 6' case('P63/m') num='176' schn='C6h^2' hall='-P 6c' case('P622') num='177' schn='D6^1' hall='P 6 2' case('P6122') num='178' schn='D6^2' hall='P 61 2 (0 0 -1)' case('P6522') num='179' schn='D6^3' hall='P 65 2 (0 0 1)' case('P6222') num='180' schn='D6^4' hall='P 62 2c (0 0 1)' case('P6422') num='181' schn='D6^5' hall='P 64 2c (0 0 -1)' case('P6322') num='182' schn='D6^6' hall='P 6c 2c' case('P6mm') num='183' schn='C6v^1' hall='P 6 -2' case('P6cc') num='184' schn='C6v^2' hall='P 6 -2c' case('P63cm') num='185' schn='C6v^3' hall='P 6c -2' case('P63mc') num='186' schn='C6v^4' hall='P 6c -2c' case('P-6m2') num='187' schn='D3h^1' hall='P -6 2' case('P-6c2') num='188' schn='D3h^2' hall='P -6c 2' case('P-62m') num='189' schn='D3h^3' hall='P -6 -2' case('P-62c') num='190' schn='D3h^4' hall='P -6c -2c' case('P6/mmm') num='191' schn='D6h^1' hall='-P 6 2' case('P6/mcc') num='192' schn='D6h^2' hall='-P 6 2c' case('P63/mcm') num='193' schn='D6h^3' hall='-P 6c 2' case('P63/mmc') num='194' schn='D6h^4' hall='-P 6c 2c' case('P23') num='195' schn='T^1' hall='P 2 2 3' case('F23') num='196' schn='T^2' hall='F 2 2 3' case('I23') num='197' schn='T^3' hall='I 2 2 3' case('P213') num='198' schn='T^4' hall='P 2ac 2ab 3' case('I213') num='199' schn='T^5' hall='I 2b 2c 3' case('Pm-3') num='200' schn='Th^1' hall='-P 2 2 3' case('Pn-3:1') num='201:1' schn='Th^2' hall='P 2 2 3 -1n' case('Pn-3:2') num='201:2' schn='Th^2' hall='-P 2ab 2bc 3' case('Fm-3') num='202' schn='Th^3' hall='-F 2 2 3' case('Fd-3:1') num='203:1' schn='Th^4' hall='F 2 2 3 -1d' case('Fd-3:2') num='203:2' schn='Th^4' hall='-F 2uv 2vw 3' case('Im-3') num='204' schn='Th^5' hall='-I 2 2 3' case('Pa-3') num='205' schn='Th^6' hall='-P 2ac 2ab 3' case('Ia-3') num='206' schn='Th^7' hall='-I 2b 2c 3' case('P432') num='207' schn='O^1' hall='P 4 2 3' case('P4232') num='208' schn='O^2' hall='P 4n 2 3' case('F432') num='209' schn='O^3' hall='F 4 2 3' case('F4132') num='210' schn='O^4' hall='F 4d 2 3' case('I432') num='211' schn='O^5' hall='I 4 2 3' case('P4332') num='212' schn='O^6' hall='P 4acd 2ab 3' case('P4132') num='213' schn='O^7' hall='P 4bd 2ab 3' case('I4132') num='214' schn='O^8' hall='I 4bd 2c 3' case('P-43m') num='215' schn='Td^1' hall='P -4 2 3' case('F-43m') num='216' schn='Td^2' hall='F -4 2 3' case('I-43m') num='217' schn='Td^3' hall='I -4 2 3' case('P-43n') num='218' schn='Td^4' hall='P -4n 2 3' case('F-43c') num='219' schn='Td^5' hall='F -4c 2 3' case('I-43d') num='220' schn='Td^6' hall='I -4bd 2c 3' case('Pm-3m') num='221' schn='Oh^1' hall='-P 4 2 3' case('Pn-3n:1') num='222:1' schn='Oh^2' hall='P 4 2 3 -1n' case('Pn-3n:2') num='222:2' schn='Oh^2' hall='-P 4a 2bc 3' case('Pm-3n') num='223' schn='Oh^3' hall='-P 4n 2 3' case('Pn-3m:1') num='224:1' schn='Oh^4' hall='P 4n 2 3 -1n' case('Pn-3m:2') num='224:2' schn='Oh^4' hall='-P 4bc 2bc 3' case('Fm-3m') num='225' schn='Oh^5' hall='-F 4 2 3' case('Fm-3c') num='226' schn='Oh^6' hall='-F 4c 2 3' case('Fd-3m:1') num='227:1' schn='Oh^7' hall='F 4d 2 3 -1d' case('Fd-3m:2') num='227:2' schn='Oh^7' hall='-F 4vw 2vw 3' case('Fd-3c:1') num='228:1' schn='Oh^8' hall='F 4d 2 3 -1cd' case('Fd-3c:2') num='228:2' schn='Oh^8' hall='-F 4cvw 2vw 3' case('Im-3m') num='229' schn='Oh^9' hall='-I 4 2 3' case('Ia-3d') num='230' schn='Oh^10' hall='-I 4bd 2c 3' case default write(*,*) write(*,'("Error(sgsymb): Hermann-Mauguin symbol ''",A,"'' not found")') & trim(adjustl(hrmg)) write(*,*) stop end select return end subroutine !EOC elk-2.3.22/src/spacegroup/PaxHeaders.22528/r3minv.f900000644002504400250440000000005012337331322020103 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/r3minv.f900000644002504400250440000000236112337331322020651 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3minv ! !INTERFACE: subroutine r3minv(a,b) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,real(3,3)) ! b : output matrix (in,real(3,3)) ! !DESCRIPTION: ! Computes the inverse of a real $3\times 3$ matrix. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3) real(8), intent(out) :: b(3,3) ! local variables real(8) t1 t1=a(1,2)*a(2,3)*a(3,1)-a(1,3)*a(2,2)*a(3,1)+a(1,3)*a(2,1)*a(3,2) & -a(1,1)*a(2,3)*a(3,2)+a(1,1)*a(2,2)*a(3,3)-a(1,2)*a(2,1)*a(3,3) if (abs(t1).lt.1.d-40) then write(*,*) write(*,'("Error(r3minv): singular matrix")') write(*,*) stop end if t1=1.d0/t1 b(1,1)=(a(2,2)*a(3,3)-a(2,3)*a(3,2))*t1 b(1,2)=(a(1,3)*a(3,2)-a(1,2)*a(3,3))*t1 b(1,3)=(a(1,2)*a(2,3)-a(1,3)*a(2,2))*t1 b(2,1)=(a(2,3)*a(3,1)-a(2,1)*a(3,3))*t1 b(2,2)=(a(1,1)*a(3,3)-a(1,3)*a(3,1))*t1 b(2,3)=(a(1,3)*a(2,1)-a(1,1)*a(2,3))*t1 b(3,1)=(a(2,1)*a(3,2)-a(2,2)*a(3,1))*t1 b(3,2)=(a(1,2)*a(3,1)-a(1,1)*a(3,2))*t1 b(3,3)=(a(1,1)*a(2,2)-a(1,2)*a(2,1))*t1 return end subroutine !EOC elk-2.3.22/src/spacegroup/PaxHeaders.22528/r3mm.f900000644002504400250440000000005012337331322017543 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/r3mm.f900000644002504400250440000000213412337331322020307 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3mm ! !INTERFACE: subroutine r3mm(a,b,c) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix 1 (in,real(3,3)) ! b : input matrix 2 (in,real(3,3)) ! c : output matrix (out,real(3,3)) ! !DESCRIPTION: ! Multiplies two real $3\times 3$ matrices. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3) real(8), intent(in) :: b(3,3) real(8), intent(out) :: c(3,3) c(1,1)=a(1,1)*b(1,1)+a(1,2)*b(2,1)+a(1,3)*b(3,1) c(2,1)=a(2,1)*b(1,1)+a(2,2)*b(2,1)+a(2,3)*b(3,1) c(3,1)=a(3,1)*b(1,1)+a(3,2)*b(2,1)+a(3,3)*b(3,1) c(1,2)=a(1,1)*b(1,2)+a(1,2)*b(2,2)+a(1,3)*b(3,2) c(2,2)=a(2,1)*b(1,2)+a(2,2)*b(2,2)+a(2,3)*b(3,2) c(3,2)=a(3,1)*b(1,2)+a(3,2)*b(2,2)+a(3,3)*b(3,2) c(1,3)=a(1,1)*b(1,3)+a(1,2)*b(2,3)+a(1,3)*b(3,3) c(2,3)=a(2,1)*b(1,3)+a(2,2)*b(2,3)+a(2,3)*b(3,3) c(3,3)=a(3,1)*b(1,3)+a(3,2)*b(2,3)+a(3,3)*b(3,3) return end subroutine !EOC elk-2.3.22/src/spacegroup/PaxHeaders.22528/r3mv.f900000644002504400250440000000005012337331322017554 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/r3mv.f900000644002504400250440000000143712337331322020325 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: r3mv ! !INTERFACE: subroutine r3mv(a,x,y) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,real(3,3)) ! x : input vector (in,real(3)) ! y : output vector (out,real(3)) ! !DESCRIPTION: ! Multiplies a real $3\times 3$ matrix with a vector. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: a(3,3) real(8), intent(in) :: x(3) real(8), intent(out) :: y(3) y(1)=a(1,1)*x(1)+a(1,2)*x(2)+a(1,3)*x(3) y(2)=a(2,1)*x(1)+a(2,2)*x(2)+a(2,3)*x(3) y(3)=a(3,1)*x(1)+a(3,2)*x(2)+a(3,3)*x(3) return end subroutine !EOC elk-2.3.22/src/spacegroup/PaxHeaders.22528/seitzgen.f900000644002504400250440000000005012337331322020515 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/seitzgen.f900000644002504400250440000002566712337331322021301 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine seitzgen(hall,ngen,srgen,stgen) implicit none character(20), intent(in) :: hall integer, intent(out) :: ngen real(8), intent(out) :: srgen(3,3,12) real(8), intent(out) :: stgen(3,12) ! local variables logical pr integer i,m,n,no,nop,axis ! zero vector tolerance real(8), parameter :: eps=1.d-6 real(8) av(3),r(3,3),t1 real(8) v1(3),v2(3),v3(3) character(20) str1,str2,str3 str1=trim(adjustl(hall))//' ' no=0 nop=0 axis=0 n=0 10 continue ! check for origin shift vector if (scan(str1,'(').eq.1) then if (index(str1,'(0 0 1)').ne.0) then v1(1)=0.d0; v1(2)=0.d0; v1(3)=1.d0 else if (index(str1,'(0 0 -1)').ne.0) then v1(1)=0.d0; v1(2)=0.d0; v1(3)=-1.d0 else write(*,*) write(*,'("Error(seitzgen): origin-shift not available : ",A)') trim(str1) write(*,*) stop end if v1(:)=v1(:)/12.d0 ! apply vector shift to all Seitz matrices do i=1,ngen v3(:)=-v1(:) call r3mv(srgen(:,:,i),v3,v2) v2(:)=v2(:)+stgen(:,i) stgen(:,i)=v2(:)+v1(:) end do goto 20 end if m=scan(str1,' ') if (m.le.1) goto 20 str2=str1(1:m-1) n=n+1 !------------------------------! ! lattice translations ! !------------------------------! if (n.eq.1) then stgen(:,1)=0.d0 if (scan(str2,'P').ne.0) then ngen=1 else if (scan(str2,'A').ne.0) then stgen(1,2)=0.d0 stgen(2,2)=0.5d0 stgen(3,2)=0.5d0 ngen=2 else if (scan(str2,'B').ne.0) then stgen(1,2)=0.5d0 stgen(2,2)=0.d0 stgen(3,2)=0.5d0 ngen=2 else if (scan(str2,'C').ne.0) then stgen(1,2)=0.5d0 stgen(2,2)=0.5d0 stgen(3,2)=0.d0 ngen=2 else if (scan(str2,'I').ne.0) then stgen(:,2)=0.5d0 ngen=2 else if (scan(str2,'R').ne.0) then stgen(1,2)=0.6666666666666666667d0 stgen(2,2)=0.3333333333333333333d0 stgen(3,2)=0.3333333333333333333d0 stgen(1,3)=0.3333333333333333333d0 stgen(2,3)=0.6666666666666666667d0 stgen(3,3)=0.6666666666666666667d0 ngen=3 else if (scan(str2,'S').ne.0) then stgen(1,2)=0.3333333333333333333d0 stgen(2,2)=0.3333333333333333333d0 stgen(3,2)=0.6666666666666666667d0 stgen(1,3)=0.6666666666666666667d0 stgen(2,3)=0.6666666666666666667d0 stgen(3,3)=0.3333333333333333333d0 ngen=3 else if (scan(str2,'T').ne.0) then stgen(1,2)=0.3333333333333333333d0 stgen(2,2)=0.6666666666666666667d0 stgen(3,2)=0.3333333333333333333d0 stgen(1,3)=0.6666666666666666667d0 stgen(2,3)=0.3333333333333333333d0 stgen(3,3)=0.6666666666666666667d0 ngen=3 else if (scan(str2,'F').ne.0) then stgen(1,2)=0.d0 stgen(2,2)=0.5d0 stgen(3,2)=0.5d0 stgen(1,3)=0.5d0 stgen(2,3)=0.d0 stgen(3,3)=0.5d0 stgen(1,4)=0.5d0 stgen(2,4)=0.5d0 stgen(3,4)=0.d0 ngen=4 else write(*,*) write(*,'("Error(seitzgen): Lattice symbol ''",A,"'' not found")') & trim(str2) write(*,*) stop end if ! set the rotations to the identity do i=1,ngen srgen(1,1,i)=1.d0; srgen(1,2,i)=0.d0; srgen(1,3,i)=0.d0 srgen(2,1,i)=0.d0; srgen(2,2,i)=1.d0; srgen(2,3,i)=0.d0 srgen(3,1,i)=0.d0; srgen(3,2,i)=0.d0; srgen(3,3,i)=1.d0 end do ! check if lattice is centrosymmetric if (scan(str2,'-').ne.0) then do i=ngen+1,2*ngen srgen(:,:,i)=-srgen(:,:,i-ngen) stgen(:,i)=stgen(:,i-ngen) end do ngen=2*ngen end if end if !-------------------------------! ! rotation-translations ! !-------------------------------! if (n.ge.2) then ! determine if rotation is proper or improper if (scan(str2,'-').eq.1) then pr=.false. ! remove the minus sign str3=str2(2:) str2=str3 else pr=.true. end if ! determine the order of rotation if (scan(str2,'1').eq.1) then no=1 else if (scan(str2,'2').eq.1) then no=2 else if (scan(str2,'3').eq.1) then no=3 else if (scan(str2,'4').eq.1) then no=4 else if (scan(str2,'6').eq.1) then no=6 else write(*,*) write(*,'("Error(seitzgen): invalid rotation order for Hall symbol ''",A,& &"''")') trim(hall) write(*,*) stop end if ! determine the axis of rotation if (scan(str2,'x').ne.0) then ! a axis axis=1 else if (scan(str2,'y').ne.0) then ! b axis axis=2 else if (scan(str2,'z').ne.0) then ! c axis axis=3 else if (scan(str2,'"').ne.0) then ! a+b axis=5 else if (scan(str2,'*').ne.0) then ! a+b+c axis axis=6 else if (n.eq.2) then ! default first rotation is along c axis=3 else if ((n.eq.3).and.(no.eq.2)) then ! default second rotation if ((nop.eq.2).or.(nop.eq.4)) then ! a axis axis=1 else if ((nop.eq.3).or.(nop.eq.6)) then ! a-b axis axis=4 else write(*,*) write(*,'("Error(seitzgen): malformed Hall symbol ''",A,"''")') trim(hall) write(*,'(" for default second rotation")') write(*,*) stop end if else if ((n.eq.4).and.(no.eq.3)) then ! third rotation around a+b+c axis axis=6 else if (no.eq.1) then ! arbitrary axis for identity axis=1 else write(*,*) write(*,'("Error(seitzgen): malformed Hall symbol ''",A,"''")') trim(hall) write(*,*) stop end if ! determine axis vector av(:)=0.d0 if (axis.eq.1) then ! a axis av(1)=1.d0 else if (axis.eq.2) then ! b axis av(2)=1.d0 else if (axis.eq.3) then ! c axis av(3)=1.d0 else if (axis.eq.4) then ! a-b axis av(1)=1.d0 av(2)=-1.d0 else if (axis.eq.5) then ! a+b axis av(1)=1.d0 av(2)=1.d0 else if (axis.eq.6) then ! a+b+c axis av(:)=1.d0 end if ! compute the rotation part of the Seitz matrix if (axis.eq.1) then ! a axis if (no.eq.1) then r(1,1)= 1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)= 1.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)= 1.d0 else if (no.eq.2) then r(1,1)= 1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)=-1.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)=-1.d0 else if (no.eq.3) then r(1,1)= 1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)= 0.d0; r(2,3)=-1.d0 r(3,1)= 0.d0; r(3,2)= 1.d0; r(3,3)=-1.d0 else if (no.eq.4) then r(1,1)= 1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)= 0.d0; r(2,3)=-1.d0 r(3,1)= 0.d0; r(3,2)= 1.d0; r(3,3)= 0.d0 else if (no.eq.6) then r(1,1)= 1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)= 1.d0; r(2,3)=-1.d0 r(3,1)= 0.d0; r(3,2)= 1.d0; r(3,3)= 0.d0 end if else if (axis.eq.2) then ! b axis if (no.eq.1) then r(1,1)= 1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)= 1.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)= 1.d0 else if (no.eq.2) then r(1,1)=-1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)= 1.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)=-1.d0 else if (no.eq.3) then r(1,1)=-1.d0; r(1,2)= 0.d0; r(1,3)= 1.d0 r(2,1)= 0.d0; r(2,2)= 1.d0; r(2,3)= 0.d0 r(3,1)=-1.d0; r(3,2)= 0.d0; r(3,3)= 0.d0 else if (no.eq.4) then r(1,1)= 0.d0; r(1,2)= 0.d0; r(1,3)= 1.d0 r(2,1)= 0.d0; r(2,2)= 1.d0; r(2,3)= 0.d0 r(3,1)=-1.d0; r(3,2)= 0.d0; r(3,3)= 0.d0 else if (no.eq.6) then r(1,1)= 0.d0; r(1,2)= 0.d0; r(1,3)= 1.d0 r(2,1)= 0.d0; r(2,2)= 1.d0; r(2,3)= 0.d0 r(3,1)=-1.d0; r(3,2)= 0.d0; r(3,3)= 1.d0 end if else if (axis.eq.3) then ! c axis if (no.eq.1) then r(1,1)= 1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)= 1.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)= 1.d0 else if (no.eq.2) then r(1,1)=-1.d0; r(1,2)= 0.d0; r(1,3)= 0.d0 r(2,1)= 0.d0; r(2,2)=-1.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)= 1.d0 else if (no.eq.3) then r(1,1)= 0.d0; r(1,2)=-1.d0; r(1,3)= 0.d0 r(2,1)= 1.d0; r(2,2)=-1.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)= 1.d0 else if (no.eq.4) then r(1,1)= 0.d0; r(1,2)=-1.d0; r(1,3)= 0.d0 r(2,1)= 1.d0; r(2,2)= 0.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)= 1.d0 else if (no.eq.6) then r(1,1)= 1.d0; r(1,2)=-1.d0; r(1,3)= 0.d0 r(2,1)= 1.d0; r(2,2)= 0.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)= 1.d0 end if else if (axis.eq.4) then ! a-b axis r(1,1)= 0.d0; r(1,2)=-1.d0; r(1,3)= 0.d0 r(2,1)=-1.d0; r(2,2)= 0.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)=-1.d0 else if (axis.eq.5) then ! a+b axis r(1,1)= 0.d0; r(1,2)= 1.d0; r(1,3)= 0.d0 r(2,1)= 1.d0; r(2,2)= 0.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 0.d0; r(3,3)=-1.d0 else if (axis.eq.6) then ! a+b+c axis r(1,1)= 0.d0; r(1,2)= 0.d0; r(1,3)= 1.d0 r(2,1)= 1.d0; r(2,2)= 0.d0; r(2,3)= 0.d0 r(3,1)= 0.d0; r(3,2)= 1.d0; r(3,3)= 0.d0 end if ! check if axis is invariant with respect to rotation call r3mv(r,av,v1) t1=sum(abs(av(:)-v1(:))) if (t1.gt.eps) then write(*,*) write(*,'("Error(seitzgen): axis not invariant with respect to rotation")') write(*,'(" for Hall symbol ''",A,"''")') trim(hall) write(*,*) stop end if ! apply inverse for improper rotation if (.not.pr) r(:,:)=-r(:,:) ! increment Seitz matrix count ngen=ngen+1 ! store rotation in main array srgen(:,:,ngen)=r(:,:) ! remove rotation symbol str3=str2(2:) str2=str3 ! determine translations stgen(:,ngen)=0.d0 if (scan(str2,'a').ne.0) then stgen(1,ngen)=stgen(1,ngen)+0.5d0 end if if (scan(str2,'b').ne.0) then stgen(2,ngen)=stgen(2,ngen)+0.5d0 end if if (scan(str2,'c').ne.0) then stgen(3,ngen)=stgen(3,ngen)+0.5d0 end if if (scan(str2,'n').ne.0) then stgen(:,ngen)=stgen(:,ngen)+0.5d0 end if if (scan(str2,'u').ne.0) then stgen(1,ngen)=stgen(1,ngen)+0.25d0 end if if (scan(str2,'v').ne.0) then stgen(2,ngen)=stgen(2,ngen)+0.25d0 end if if (scan(str2,'w').ne.0) then stgen(3,ngen)=stgen(3,ngen)+0.25d0 end if if (scan(str2,'d').ne.0) then stgen(:,ngen)=stgen(:,ngen)+0.25d0 end if if (scan(str2,'1').ne.0) then if (no.eq.3) then stgen(:,ngen)=stgen(:,ngen)+0.3333333333333333333d0*av(:) else if (no.eq.4) then stgen(:,ngen)=stgen(:,ngen)+0.25d0*av(:) else if (no.eq.6) then stgen(:,ngen)=stgen(:,ngen)+0.1666666666666666667d0*av(:) end if else if (scan(str2,'2').ne.0) then if (no.eq.3) then stgen(:,ngen)=stgen(:,ngen)+0.6666666666666666667d0*av(:) else if (no.eq.6) then stgen(:,ngen)=stgen(:,ngen)+0.3333333333333333333d0*av(:) end if else if (scan(str2,'3').ne.0) then if (no.eq.4) then stgen(:,ngen)=stgen(:,ngen)+0.75d0*av(:) end if else if (scan(str2,'4').ne.0) then if (no.eq.6) then stgen(:,ngen)=stgen(:,ngen)+0.6666666666666666667d0*av(:) end if else if (scan(str2,'5').ne.0) then if (no.eq.6) then stgen(:,ngen)=stgen(:,ngen)+0.8333333333333333333d0*av(:) end if end if end if str3=adjustl(str1(m:)) str1=str3 nop=no goto 10 20 continue ! map translations to [0,1) do i=1,ngen call r3frac(eps,stgen(:,i)) end do return end subroutine elk-2.3.22/src/spacegroup/PaxHeaders.22528/modmain.f900000644002504400250440000000005012337331322020311 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/modmain.f900000644002504400250440000000454212337331322021062 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !MODULE: modmain ! !DESCRIPTION: ! Contains all the global variables required by the spacegroup code. ! ! !REVISION HISTORY: ! Created October 2006 (JKD) !EOP !BOC module modmain !-------------------------------! ! space group variables ! !-------------------------------! ! Hermann-Mauguin symbol character(20) hrmg ! space-group number character(20) num ! Schoenflies symbol character(20) schn ! Hall symbol character(20) hall !----------------------------! ! lattice parameters ! !----------------------------! ! number of unit cells integer ncell(3) ! lattice vector lengths real(8) a,b,c ! lattice vector angles real(8) ab,ac,bc ! lattice vectors stored column-wise real(8) avec(3,3) ! inverse of lattice vector matrix real(8) ainv(3,3) ! any vector with length less than epslat is considered zero real(8), parameter :: epslat=1.d-6 !--------------------------! ! atomic variables ! !--------------------------! ! maximum allowed species integer, parameter :: maxspecies=8 ! maximum allowed atoms per species integer, parameter :: maxatoms=1000 ! number of species integer nspecies ! number of atoms for each species integer natoms(maxspecies) ! total number of atoms integer natmtot ! primcell is .true. if primitive unit cell is to be found automatically logical primcell ! maximum allowed Wyckoff positions integer, parameter :: maxwpos=100 ! number of Wyckoff positions integer nwpos(maxspecies) ! Wyckoff positions real(8) wpos(3,maxwpos,maxspecies) ! atomic positions in lattice coordinates real(8) atposl(3,maxatoms,maxspecies) ! atomic positions in Cartesian coordinates real(8) atposc(3,maxatoms,maxspecies) ! magnetic fields real(8) bfcmt0(3,maxatoms,maxspecies) !----------------------------------! ! atomic species variables ! !----------------------------------! ! species symbol character(256) spsymb(maxspecies) !-----------------------------! ! numerical constants ! !-----------------------------! real(8), parameter :: pi=3.1415926535897932385d0 !---------------------------------! ! miscellaneous variables ! !---------------------------------! ! code version integer version(3) data version / 1,2,1 / end module !EOC elk-2.3.22/src/spacegroup/PaxHeaders.22528/seitzmul.f900000644002504400250440000000005012337331322020541 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/seitzmul.f900000644002504400250440000000112312337331322021302 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine seitzmul(eps,sr1,st1,sr2,st2,sr3,st3) implicit none ! arguments real(8), intent(in) :: eps real(8), intent(in) :: sr1(3,3) real(8), intent(in) :: st1(3) real(8), intent(in) :: sr2(3,3) real(8), intent(in) :: st2(3) real(8), intent(out) :: sr3(3,3) real(8), intent(out) :: st3(3) call r3mv(sr1,st2,st3) st3(:)=st3(:)+st1(:) call r3frac(eps,st3) call r3mm(sr1,sr2,sr3) return end subroutine elk-2.3.22/src/spacegroup/PaxHeaders.22528/findprimcell.f900000644002504400250440000000005012337331322021335 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/findprimcell.f900000644002504400250440000000735612337331322022114 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: findprimcell ! !INTERFACE: subroutine findprimcell ! !USES: use modmain ! !DESCRIPTION: ! This routine finds the smallest primitive cell which produces the same ! crystal structure as the conventional cell. This is done by searching ! through all the vectors which connect atomic positions and finding those ! which leave the crystal structure invariant. Of these, the three shortest ! which produce a non-zero unit cell volume are chosen. ! ! !REVISION HISTORY: ! Created April 2007 (JKD) !EOP !BOC implicit none ! local variables integer is,js,ia,ja,ka,na integer i1,i2,i3,i,j,n real(8) v1(3),v2(3),v3(3) real(8) t1,t2 ! allocatable arrays real(8), allocatable :: dp(:) real(8), allocatable :: vp(:,:) do is=1,nspecies do ia=1,natoms(is) ! make sure all atomic coordinates are in [0,1) call r3frac(epslat,atposl(:,ia,is)) ! determine atomic Cartesian coordinates call r3mv(avec,atposl(:,ia,is),atposc(:,ia,is)) end do end do ! find the smallest set of atoms is=1 do js=1,nspecies ! if a species has only one atom the cell must be primitive if (natoms(js).eq.1) return if (natoms(js).lt.natoms(is)) is=js end do n=27*natoms(is) allocate(dp(n),vp(3,n)) ! generate set of possible lattice vectors n=0 do ia=1,natoms(is) v1(:)=atposl(:,ia,is)-atposl(:,1,is) do i1=-1,1 v2(1)=v1(1)+dble(i1) do i2=-1,1 v2(2)=v1(2)+dble(i2) do i3=-1,1 v2(3)=v1(3)+dble(i3) t1=abs(v2(1))+abs(v2(2))+abs(v2(3)) if (t1.lt.epslat) goto 20 ! check if vector v2 leaves conventional cell invariant do js=1,nspecies do ja=1,natoms(js) v3(:)=atposl(:,ja,js)+v2(:) call r3frac(epslat,v3) do ka=1,natoms(js) ! check both positions and magnetic fields are the same t1=sum(abs(atposl(:,ka,js)-v3(:))) t2=sum(abs(bfcmt0(:,ja,js)-bfcmt0(:,ka,js))) if ((t1.lt.epslat).and.(t2.lt.epslat)) goto 10 end do ! atom ja has no equivalent under translation by v2 goto 20 10 continue end do end do ! cell invariant under translation by v2, so add to list n=n+1 call r3mv(avec,v2,vp(:,n)) dp(n)=sqrt(vp(1,n)**2+vp(2,n)**2+vp(3,n)**2) 20 continue end do end do end do end do if (n.eq.0) then write(*,*) write(*,'("Error(findprimcell): cannot find any lattice vectors")') write(*,*) stop end if ! find the shortest lattice vector j=1 t1=1.d8 do i=1,n if (dp(i).lt.t1+epslat) then j=i t1=dp(i) end if end do avec(:,1)=vp(:,j) ! find the next shortest lattice vector not parallel to the first j=1 t1=1.d8 do i=1,n call r3cross(avec(:,1),vp(:,i),v1) t2=sqrt(v1(1)**2+v1(2)**2+v1(3)**2) if (t2.gt.epslat) then if (dp(i).lt.t1+epslat) then j=i t1=dp(i) end if end if end do avec(:,2)=vp(:,j) ! find the next shortest lattice vector which gives non-zero unit cell volume call r3cross(avec(:,1),avec(:,2),v1) j=1 t1=1.d8 do i=1,n t2=dot_product(vp(:,i),v1(:)) if (abs(t2).gt.epslat) then if (dp(i).lt.t1+epslat) then j=i t1=dp(i) end if end if end do avec(:,3)=vp(:,j) call r3minv(avec,ainv) ! remove redundant atoms do is=1,nspecies na=0 do ia=1,natoms(is) call r3mv(ainv,atposc(:,ia,is),v1) call r3frac(epslat,v1) do ja=1,na t1=sum(abs(atposl(:,ja,is)-v1(:))) if (t1.lt.epslat) goto 30 end do na=na+1 atposl(:,na,is)=v1(:) call r3mv(avec,atposl(:,na,is),atposc(:,na,is)) bfcmt0(:,na,is)=bfcmt0(:,ia,is) 30 continue end do natoms(is)=na end do deallocate(dp,vp) return end subroutine !EOC elk-2.3.22/src/spacegroup/PaxHeaders.22528/readinput.f900000644002504400250440000000005012337331322020660 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/spacegroup/readinput.f900000644002504400250440000000300312337331322021420 0ustar00dewhurstdewhurst00000000000000subroutine readinput use modmain implicit none ! local variables integer is,ip open(50,file='spacegroup.in',action='READ',status='OLD',form='FORMATTED') ! read the Hermann-Mauguin symbol read(50,*) hrmg hrmg=adjustl(hrmg) ! read lattice vector lengths read(50,*) a,b,c ! read angles between lattice vectors: alpha, beta, gamma ! (convention fixed by F. Cricchio) read(50,*) bc,ac,ab ! read number of unit cells read(50,*) ncell if ((ncell(1).lt.1).or.(ncell(2).lt.1).or.(ncell(3).lt.1)) then write(*,*) write(*,'("Error(readinput): invalid ncell : ",3I8)') ncell write(*,*) stop end if read(50,*) primcell read(50,*) nspecies if (nspecies.le.0) then write(*,*) write(*,'("Error(readinput): nspecies <= 0 : ",I8)') nspecies write(*,*) stop end if if (nspecies.gt.maxspecies) then write(*,*) write(*,'("Error(readinput): nspecies too large : ",I8)') nspecies write(*,'("Adjust maxspecies and recompile code")') write(*,*) stop end if do is=1,nspecies read(50,*) spsymb(is) read(50,*) nwpos(is) if (nwpos(is).le.0) then write(*,*) write(*,'("Error(readinput): nwpos <= 0 : ",I8)') nwpos(is) write(*,'(" for species ",I4)') is write(*,*) stop end if if (nwpos(is).gt.maxwpos) then write(*,*) write(*,'("Error(readinput): nwpos too large : ",I8)') nwpos(is) write(*,'(" for species ",I4)') is write(*,'("Adjust maxwpos and reompile code")') write(*,*) stop end if do ip=1,nwpos(is) read(50,*) wpos(:,ip,is) end do end do close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/oepresk.f900000644002504400250440000000005012337331324016167 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/oepresk.f900000644002504400250440000001361212337331324016736 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine oepresk(ik,vclcv,vclvv,dvxmt,dvxir,dbxmt,dbxir) use modmain implicit none ! arguments integer, intent(in) :: ik complex(8), intent(in) :: vclcv(ncrmax,natmtot,nstsv,nkpt) complex(8), intent(in) :: vclvv(nstsv,nstsv,nkpt) real(8), intent(inout) :: dvxmt(lmmaxvr,nrcmtmax,natmtot) real(8), intent(inout) :: dvxir(ngtot) real(8), intent(inout) :: dbxmt(lmmaxvr,nrcmtmax,natmtot,ndmag) real(8), intent(inout) :: dbxir(ngtot,ndmag) ! local variables integer ist,jst,is,ia,ias integer nrc,nrci,ic,m,idm real(8) de complex(8) z1 ! automatic arrays integer idx(nstsv) ! allocatable arrays complex(8), allocatable :: apwalm(:,:,:,:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:),wfcr(:,:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zmagmt(:,:,:,:),zmagir(:,:) complex(8), allocatable :: zvfmt(:,:,:) ! external functions complex(8) zfinp,zfmtinp external zfinp,zfmtinp allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir(ngtot,nspinor,nstsv)) allocate(wfcr(lmmaxvr,nrcmtmax,2)) allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot)) allocate(zrhoir(ngtot)) if (spinpol) then allocate(zmagmt(lmmaxvr,nrcmtmax,natmtot,ndmag)) allocate(zmagir(ngtot,ndmag)) allocate(zvfmt(lmmaxvr,nrcmtmax,ndmag)) end if ! get the eigenvalues/vectors from file for input k-point call getevalsv(vkl(:,ik),evalsv(:,ik)) call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! find the matching coefficients call match(ngk(1,ik),gkc(:,1,ik),tpgkc(:,:,1,ik),sfacgk(:,:,1,ik),apwalm) ! index to all states do ist=1,nstsv idx(ist)=ist end do ! calculate the wavefunctions for all states call genwfsv(.false.,.false.,nstsv,idx,ngk(1,ik),igkig(:,1,ik),apwalm,evecfv, & evecsv,wfmt,ngtot,wfir) !-----------------------------------------------------------! ! core-conduction overlap density and magnetisation ! !-----------------------------------------------------------! do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) ic=0 do ist=1,spnst(is) if (spcore(ist,is)) then do m=-spk(ist,is),spk(ist,is)-1 ic=ic+1 ! pass in m-1/2 to wavefcr call wavefcr(.false.,lradstp,is,ia,ist,m,nrcmtmax,wfcr) do jst=1,nstsv if (evalsv(jst,ik).gt.efermi) then ! calculate the complex overlap density in the muffin-tin zrhomt(:,1:nrc,ias)=conjg(wfcr(:,1:nrc,1))*wfmt(:,1:nrc,ias,1,jst) if (spinpol) then zrhomt(:,1:nrc,ias)=zrhomt(:,1:nrc,ias) & +conjg(wfcr(:,1:nrc,2))*wfmt(:,1:nrc,ias,2,jst) end if z1=conjg(vclcv(ic,ias,jst,ik)) z1=z1-zfmtinp(.false.,nrc,nrci,rcmt(:,is),zrhomt(:,:,ias), & zvxmt(:,:,ias)) ! spin-polarised case if (spinpol) then call genzmagmt(is,wfcr(:,:,1),wfcr(:,:,2),wfmt(:,:,ias,1,jst), & wfmt(:,:,ias,2,jst),1,zvfmt) ! integral of magnetisation dot exchange field do idm=1,ndmag z1=z1-zfmtinp(.false.,nrc,nrci,rcmt(:,is),zvfmt(:,:,idm), & zbxmt(:,:,ias,idm)) end do ! end spin-polarised case end if de=evalcr(ist,ias)-evalsv(jst,ik) z1=z1*occmax*wkpt(ik)/(de+zi*swidth) ! residuals for exchange potential and field !$OMP CRITICAL dvxmt(:,1:nrc,ias)=dvxmt(:,1:nrc,ias)+dble(z1*zrhomt(:,1:nrc,ias)) do idm=1,ndmag dbxmt(:,1:nrc,ias,idm)=dbxmt(:,1:nrc,ias,idm) & +dble(z1*zvfmt(:,1:nrc,idm)) end do !$OMP END CRITICAL ! end loop over jst end if end do end do ! end loop over ist end if end do ! end loops over atoms and species end do end do !--------------------------------------------------------------! ! valence-conduction overlap density and magnetisation ! !--------------------------------------------------------------! do ist=1,nstsv if (evalsv(ist,ik).lt.efermi) then do jst=1,nstsv if (evalsv(jst,ik).gt.efermi) then ! calculate the overlap density call genzrho(.false.,.true.,wfmt(:,:,:,:,ist),wfir(:,:,ist), & wfmt(:,:,:,:,jst),wfir(:,:,jst),zrhomt,zrhoir) z1=conjg(vclvv(ist,jst,ik)) z1=z1-zfinp(.false.,zrhomt,zrhoir,zvxmt,zvxir) ! spin-polarised case if (spinpol) then call genzmag(wfmt(:,:,:,:,ist),wfmt(:,:,:,:,jst),wfir(:,:,ist), & wfir(:,:,jst),zmagmt,zmagir) ! integral of magnetisation dot exchange field do idm=1,ndmag z1=z1-zfinp(.false.,zmagmt(:,:,:,idm),zmagir(:,idm), & zbxmt(:,:,:,idm),zbxir(:,idm)) end do end if de=evalsv(ist,ik)-evalsv(jst,ik) z1=z1*occmax*wkpt(ik)/(de+zi*swidth) ! residuals for exchange potential and field !$OMP CRITICAL do is=1,nspecies nrc=nrcmt(is) do ia=1,natoms(is) ias=idxas(ia,is) dvxmt(:,1:nrc,ias)=dvxmt(:,1:nrc,ias)+dble(z1*zrhomt(:,1:nrc,ias)) do idm=1,ndmag dbxmt(:,1:nrc,ias,idm)=dbxmt(:,1:nrc,ias,idm) & +dble(z1*zmagmt(:,1:nrc,ias,idm)) end do end do end do dvxir(:)=dvxir(:)+dble(z1*zrhoir(:)) do idm=1,ndmag dbxir(:,idm)=dbxir(:,idm)+dble(z1*zmagir(:,idm)) end do !$OMP END CRITICAL ! end loop over jst end if end do ! end loop over ist end if end do deallocate(apwalm,evecfv,evecsv) deallocate(wfmt,wfir,wfcr,zrhomt,zrhoir) if (spinpol) then deallocate(zmagmt,zmagir,zvfmt) end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmwritededn.f900000644002504400250440000000005012337331324017207 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmwritededn.f900000644002504400250440000000206512337331324017756 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rdmwritededn ! !INTERFACE: subroutine rdmwritededn(dedn) ! !USES: use modmain use modrdm ! !INPUT/OUTPUT PARAMETERS: ! dedn : derivative of energy (in,real(nstsv,nkpt)) ! !DESCRIPTION: ! Writes the derivative of total energy with respect to occupation numbers to ! file {\tt RDM\_DEDN.OUT}. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! arguments real(8), intent(in) :: dedn(nstsv,nkpt) ! local variables integer ik,ist open(50,file='RDM_DEDN.OUT',action='WRITE',form='FORMATTED') write(50,'(I6," : nkpt")') nkpt write(50,'(I6," : nstsv")') nstsv do ik=1,nkpt write(50,*) write(50,'(I6,3G18.10," : k-point, vkl")') ik,vkl(:,ik) write(50,'(" (state, occupancy and derivative below)")') do ist=1,nstsv write(50,'(I6,4G18.10)') ist,occsv(ist,ik),-dedn(ist,ik) end do end do close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/ggamt_sp_2b.f900000644002504400250440000000005012337331323016702 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggamt_sp_2b.f900000644002504400250440000001024712337331323017452 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggamt_sp_2b ! !INTERFACE: subroutine ggamt_sp_2b(is,g2up,g2dn,gvup,gvdn,vxup,vxdn,vcup,vcdn,dxdgu2, & dxdgd2,dxdgud,dcdgu2,dcdgd2,dcdgud) ! !USES: use modmain ! !DESCRIPTION: ! Post processing step of muffin-tin gradients for GGA type 2. See routine ! {\tt ggamt\_sp\_2a} for full details. ! ! !REVISION HISTORY: ! Created November 2009 (JKD and TMcQ) !EOP !BOC implicit none ! arguments integer, intent(in) :: is real(8), intent(in) :: g2up(lmmaxvr,nrmtmax) real(8), intent(in) :: g2dn(lmmaxvr,nrmtmax) real(8), intent(in) :: gvup(lmmaxvr,nrmtmax,3) real(8), intent(in) :: gvdn(lmmaxvr,nrmtmax,3) real(8), intent(inout) :: vxup(lmmaxvr,nrmtmax) real(8), intent(inout) :: vxdn(lmmaxvr,nrmtmax) real(8), intent(inout) :: vcup(lmmaxvr,nrmtmax) real(8), intent(inout) :: vcdn(lmmaxvr,nrmtmax) real(8), intent(in) :: dxdgu2(lmmaxvr,nrmtmax) real(8), intent(in) :: dxdgd2(lmmaxvr,nrmtmax) real(8), intent(in) :: dxdgud(lmmaxvr,nrmtmax) real(8), intent(in) :: dcdgu2(lmmaxvr,nrmtmax) real(8), intent(in) :: dcdgd2(lmmaxvr,nrmtmax) real(8), intent(in) :: dcdgud(lmmaxvr,nrmtmax) ! local variables integer nr,nri,i ! allocatable arrays real(8), allocatable :: rfmt1(:,:),rfmt2(:,:),grfmt(:,:,:) allocate(rfmt1(lmmaxvr,nrmtmax),rfmt2(lmmaxvr,nrmtmax)) allocate(grfmt(lmmaxvr,nrmtmax,3)) nr=nrmt(is) nri=nrmtinr(is) !------------------! ! exchange ! !------------------! ! convert dxdgu2 to spherical harmonics call rfsht(nr,nri,1,dxdgu2,1,rfmt1) ! compute grad dxdgu2 call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) ! (grad dxdgu2).(grad rhoup) in spherical coordinates rfmt1(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt2) rfmt1(:,1:nr)=rfmt1(:,1:nr)+rfmt2(:,1:nr)*gvup(:,1:nr,i) end do vxup(:,1:nr)=vxup(:,1:nr)-2.d0*(rfmt1(:,1:nr)+dxdgu2(:,1:nr)*g2up(:,1:nr)) & -dxdgud(:,1:nr)*g2dn(:,1:nr) ! convert dxdgd2 to spherical harmonics call rfsht(nr,nri,1,dxdgd2,1,rfmt1) ! compute grad dxdgd2 call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) ! (grad dxdgd2).(grad rhodn) in spherical coordinates rfmt1(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt2) rfmt1(:,1:nr)=rfmt1(:,1:nr)+rfmt2(:,1:nr)*gvdn(:,1:nr,i) end do vxdn(:,1:nr)=vxdn(:,1:nr)-2.d0*(rfmt1(:,1:nr)+dxdgd2(:,1:nr)*g2dn(:,1:nr)) & -dxdgud(:,1:nr)*g2up(:,1:nr) ! convert dxdgud to spherical harmonics call rfsht(nr,nri,1,dxdgud,1,rfmt1) ! compute grad dxdgud call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) ! (grad dxdgud).(grad rhodn) and (grad dxdgud).(grad rhoup) do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt1) vxup(:,1:nr)=vxup(:,1:nr)-rfmt1(:,1:nr)*gvdn(:,1:nr,i) vxdn(:,1:nr)=vxdn(:,1:nr)-rfmt1(:,1:nr)*gvup(:,1:nr,i) end do !---------------------! ! correlation ! !---------------------! ! convert dcdgu2 to spherical harmonics call rfsht(nr,nri,1,dcdgu2,1,rfmt1) ! compute grad dcdgu2 call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) ! (grad dcdgu2).(grad rhoup) in spherical coordinates rfmt1(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt2) rfmt1(:,1:nr)=rfmt1(:,1:nr)+rfmt2(:,1:nr)*gvup(:,1:nr,i) end do vcup(:,1:nr)=vcup(:,1:nr)-2.d0*(rfmt1(:,1:nr)+dcdgu2(:,1:nr)*g2up(:,1:nr)) & -dcdgud(:,1:nr)*g2dn(:,1:nr) ! convert dcdgd2 to spherical harmonics call rfsht(nr,nri,1,dcdgd2,1,rfmt1) ! compute grad dcdgd2 call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) ! (grad dcdgd2).(grad rhodn) in spherical coordinates rfmt1(:,1:nr)=0.d0 do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt2) rfmt1(:,1:nr)=rfmt1(:,1:nr)+rfmt2(:,1:nr)*gvdn(:,1:nr,i) end do vcdn(:,1:nr)=vcdn(:,1:nr)-2.d0*(rfmt1(:,1:nr)+dcdgd2(:,1:nr)*g2dn(:,1:nr)) & -dcdgud(:,1:nr)*g2up(:,1:nr) ! convert dcdgud to spherical harmonics call rfsht(nr,nri,1,dcdgud,1,rfmt1) ! compute grad dcdgud call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) ! (grad dcdgud).(grad rhodn) and (grad dcdgud).(grad rhoup) do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,rfmt1) vcup(:,1:nr)=vcup(:,1:nr)-rfmt1(:,1:nr)*gvdn(:,1:nr,i) vcdn(:,1:nr)=vcdn(:,1:nr)-rfmt1(:,1:nr)*gvup(:,1:nr,i) end do deallocate(rfmt1,rfmt2,grfmt) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/factnm.f900000644002504400250440000000005012337331323015766 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/factnm.f900000644002504400250440000000660412337331323016540 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: factnm ! !INTERFACE: real(8) function factnm(n,m) ! !INPUT/OUTPUT PARAMETERS: ! n : input (in,integer) ! m : order of multifactorial (in,integer) ! !DESCRIPTION: ! Returns the multifactorial ! $$ n\underbrace{!!\,\cdots\,!}_{m\,{\rm times}}= ! \prod_{\substack{i\ge 0\\ n-im>0}}(n-im) $$ ! for $n,\,m \ge 0$. $n$ should be less than 150. ! ! !REVISION HISTORY: ! Created January 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n,m ! local variables integer i,j real(8) f1(24),f2(38) data f1 / & 1.d0, 2.d0, & 6.d0, 24.d0, & 120.d0, 720.d0, & 5040.d0, 40320.d0, & 362880.d0, 3628800.d0, & 39916800.d0, 479001600.d0, & 6227020800.d0, 87178291200.d0, & 1307674368000.d0, 20922789888000.d0, & 355687428096000.d0, 6402373705728000.d0, & 121645100408832000.d0, 2432902008176640000.d0, & 51090942171709440000.d0, 1124000727777607680000.d0, & 25852016738884976640000.d0, 620448401733239439360000.d0 / data f2 / & 1.d0, 2.d0, & 3.d0, 8.d0, & 15.d0, 48.d0, & 105.d0, 384.d0, & 945.d0, 3840.d0, & 10395.d0, 46080.d0, & 135135.d0, 645120.d0, & 2027025.d0, 10321920.d0, & 34459425.d0, 185794560.d0, & 654729075.d0, 3715891200.d0, & 13749310575.d0, 81749606400.d0, & 316234143225.d0, 1961990553600.d0, & 7905853580625.d0, 51011754393600.d0, & 213458046676875.d0, 1428329123020800.d0, & 6190283353629375.d0, 42849873690624000.d0, & 191898783962510625.d0, 1371195958099968000.d0, & 6332659870762850625.d0, 46620662575398912000.d0, & 221643095476699771875.d0, 1678343852714360832000.d0, & 8200794532637891559375.d0, 63777066403145711616000.d0 / ! fast return if possible if (n.eq.0) then factnm=1.d0 return end if if (m.eq.1) then if ((n.ge.1).and.(n.le.24)) then factnm=f1(n) return end if end if if (m.eq.2) then if ((n.ge.1).and.(n.le.38)) then factnm=f2(n) return end if end if if (n.lt.0) then write(*,*) write(*,'("Error(factnm): n < 0 : ",I8)') n write(*,*) stop end if if (m.le.0) then write(*,*) write(*,'("Error(factnm): m <= 0 : ",I8)') m write(*,*) stop end if if (n.gt.150) then write(*,*) write(*,'("Error(factnm): n out of range : ",I8)') n write(*,*) stop end if if (m.eq.1) then factnm=f1(24) do i=25,n factnm=factnm*dble(i) end do else j=n/m if (mod(n,m).eq.0) j=j-1 factnm=dble(n) do i=1,j factnm=factnm*dble(n-i*m) end do end if return end function !EOC elk-2.3.22/src/PaxHeaders.22528/elfplot.f900000644002504400250440000000005012337331324016164 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/elfplot.f900000644002504400250440000001302212337331324016726 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: elfplot ! !INTERFACE: subroutine elfplot ! !USES: use modmain ! !DESCRIPTION: ! Outputs the electron localisation function (ELF) for 1D, 2D or 3D plotting. ! The spin-averaged ELF is given by ! $$ f_{\rm ELF}({\bf r})=\frac{1}{1+[D({\bf r})/D^0({\bf r})]^2}, $$ ! where ! $$ D({\bf r})=\frac{1}{2}\left(\tau({\bf r})-\frac{1}{4} ! \frac{[\nabla n({\bf r})]^2}{n({\bf r})}\right) $$ ! and ! $$ \tau({\bf r})=\sum_{i=1}^N \left|\nabla\Psi_i({\bf r}) ! \right|^2 $$ ! is the spin-averaged kinetic energy density from the spinor wavefunctions. ! The function $D^0$ is the kinetic energy density for the homogeneous ! electron gas evaluated for $n({\bf r})$: ! $$ D^0({\bf r})=\frac{3}{5}(6\pi^2)^{2/3}\left(\frac{n({\bf r})}{2} ! \right)^{5/3}. $$ ! The ELF is useful for the topological classification of bonding. See for ! example T. Burnus, M. A. L. Marques and E. K. U. Gross [Phys. Rev. A 71, ! 10501 (2005)]. ! ! !REVISION HISTORY: ! Created September 2003 (JKD) ! Fixed bug found by F. Wagner (JKD) !EOP !BOC implicit none ! local variables integer ik,is,ias integer nr,nri,ir integer lmmax,itp integer ig,ifg,i real(8) r,t1,t2,t3 ! allocatable arrays real(8), allocatable :: gwf2mt(:,:,:),gwf2ir(:) real(8), allocatable :: rfmt1(:,:),rfmt2(:,:),grfir(:) real(8), allocatable :: grfmt1(:,:,:),grfmt2(:,:,:) real(8), allocatable :: elfmt(:,:,:),elfir(:) complex(8), allocatable :: evecfv(:,:),evecsv(:,:) complex(8), allocatable :: zfft1(:),zfft2(:) ! initialise universal variables call init0 call init1 ! allocate local arrays allocate(gwf2mt(lmmaxvr,nrmtmax,natmtot),gwf2ir(ngtot)) allocate(rfmt1(lmmaxvr,nrmtmax),rfmt2(lmmaxvr,nrmtmax),grfir(ngtot)) allocate(grfmt1(lmmaxvr,nrmtmax,3),grfmt2(lmmaxvr,nrmtmax,3)) allocate(elfmt(lmmaxvr,nrmtmax,natmtot),elfir(ngtot)) allocate(evecfv(nmatmax,nstfv),evecsv(nstsv,nstsv)) allocate(zfft1(ngtot),zfft2(ngtot)) ! read density and potentials from file call readstate ! read Fermi energy from file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! generate the core wavefunctions and densities call gencore ! set the gradient squared to zero gwf2mt(:,:,:)=0.d0 gwf2ir(:)=0.d0 do ik=1,nkpt ! get the eigenvectors and occupancies from file call getoccsv(vkl(:,ik),occsv(:,ik)) call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! add the valence wavefunction gradient squared call gradwf2(ik,evecfv,evecsv,gwf2mt,gwf2ir) end do ! add core wavefunction gradient squared call gradwfcr2(gwf2mt) !------------------------! ! muffin-tin ELF ! !------------------------! do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) ! convert rho from spherical harmonics to spherical coordinates call rbsht(nr,nri,1,rhomt(:,:,ias),1,rfmt1) ! compute the gradient of the density call gradrfmt(nr,nri,spr(:,is),rhomt(:,:,ias),nrmtmax,grfmt1) ! convert gradient to spherical coordinates do i=1,3 call rbsht(nr,nri,1,grfmt1(:,:,i),1,grfmt2(:,:,i)) end do lmmax=lmmaxinr do ir=1,nr do itp=1,lmmax r=abs(rfmt1(itp,ir)) ! square of gradient of rho t1=grfmt2(itp,ir,1)**2+grfmt2(itp,ir,2)**2+grfmt2(itp,ir,3)**2 ! D for inhomogeneous density t2=(1.d0/2.d0)*(gwf2mt(itp,ir,ias)-(1.d0/4.d0)*t1/r) ! D0 for uniform electron gas t3=(3.d0/5.d0)*((6.d0*pi**2)**(2.d0/3.d0))*(r/2.d0)**(5.d0/3.d0) ! ELF function rfmt2(itp,ir)=1.d0/(1.d0+(t2/t3)**2) end do if (ir.eq.nri) lmmax=lmmaxvr end do ! convert ELF from spherical coordinates to spherical harmonics call rfsht(nr,nri,1,rfmt2,1,elfmt(:,:,ias)) end do !--------------------------! ! interstitial ELF ! !--------------------------! ! Fourier transform density to G-space zfft1(:)=rhoir(:) call zfftifc(3,ngridg,-1,zfft1) grfir(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) ! take the gradient zfft2(ifg)=zi*vgc(i,ig)*zfft1(ifg) end do ! Fourier transform gradient to real-space call zfftifc(3,ngridg,1,zfft2) do ir=1,ngtot grfir(ir)=grfir(ir)+dble(zfft2(ir))**2 end do end do do ir=1,ngtot r=abs(rhoir(ir)) ! D for inhomogeneous density t1=(1.d0/2.d0)*(gwf2ir(ir)-(1.d0/4.d0)*grfir(ir)/r) ! D0 for homogeneous electron gas t2=(3.d0/5.d0)*((6.d0*pi**2)**(2.d0/3.d0))*(r/2.d0)**(5.d0/3.d0) ! ELF function elfir(ir)=1.d0/(1.d0+(t1/t2)**2) end do ! symmetrise the ELF call symrf(1,elfmt,elfir) ! plot the ELF to file select case(task) case(51) open(50,file='ELF1D.OUT',action='WRITE',form='FORMATTED') open(51,file='ELFLINES.OUT',action='WRITE',form='FORMATTED') call plot1d(50,51,1,elfmt,elfir) close(50) close(51) write(*,*) write(*,'("Info(elfplot):")') write(*,'(" 1D ELF plot written to ELF1D.OUT")') write(*,'(" vertex location lines written to ELFLINES.OUT")') case(52) open(50,file='ELF2D.OUT',action='WRITE',form='FORMATTED') call plot2d(50,1,elfmt,elfir) close(50) write(*,*) write(*,'("Info(elfplot): 2D ELF plot written to ELF2D.OUT")') case(53) open(50,file='ELF3D.OUT',action='WRITE',form='FORMATTED') call plot3d(50,1,elfmt,elfir) close(50) write(*,*) write(*,'("Info(elfplot): 3D ELF plot written to ELF3D.OUT")') end select deallocate(gwf2mt,gwf2ir,rfmt1,rfmt2,grfir) deallocate(grfmt1,grfmt2,elfmt,elfir) deallocate(evecfv,evecsv,zfft1,zfft2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/massnucl.f900000644002504400250440000000005012337331324016344 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/massnucl.f900000644002504400250440000000372412337331324017116 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: massnucl ! !INTERFACE: real(8) function massnucl(z) ! !INPUT/OUTPUT PARAMETERS: ! z : atomic number (in,real) ! !DESCRIPTION: ! Computes an approximate nuclear mass from the atomic number $Z$. The nuclear ! mass number, $A$, is first estimated using ! $$ A=4.467\times 10^{-3}Z^2+2.163 Z-1.168, $$ ! [D. Andrae in {\it Relativistic Electronic Structure Theory - Fundamentals} ! {\bf 11}, 203 (2002)]. Then the nuclear mass can be determined from: ! $$ M=Z m_p+N m_n-\frac{B}{c^2}, $$ ! where $m_p$ is the proton mass, $m_n$ is the neutron mass and $B$ is the ! nuclear binding energy. The binding energy is approximated by the ! Weizs\"{a}cker formula: ! $$ B=a_V A-a_S A^{2/3}-a_C Z^2 A^{-1/3}-a_{\rm sym}(Z-N)^2A^{-1} ! +B_p+B_{\rm shell}. $$ ! See F. Yang and J. H. Hamilton in {\it Modern Atomic and Nuclear Physics}, ! Revised Edition 2010, for details on the quantities in this formula. In this ! implementation, $B_p$ and $B_{\rm shell}$ are set to zero. ! ! !REVISION HISTORY: ! Created February 2014 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: z ! local variables ! coefficients for computing mass number real(8), parameter :: c2=4.467d-3, c1=2.163d0, c0=-1.168d0 ! Weizsacker coefficients in MeV real(8), parameter :: av=15.8d0, as=18.3d0, ac=0.72d0, asym=23.2d0 ! proton and neutron masses in MeV/c^2 (CODATA 2010) real(8), parameter :: mp=938.272046d0 real(8), parameter :: mn=939.565379d0 ! atomic mass unit in MeV/c^2 (CODATA 2010) real(8), parameter :: mu=931.494061d0 real(8) za,n,a,b za=abs(z) ! approximate nuclear mass number if (za.le.1.d0) then a=1.d0 else a=abs(c2*za**2+c1*za+c0) end if n=a-za b=av*a-as*a**(2.d0/3.d0)-ac*(za**2)/a**(1.d0/3.d0)-asym*(za-n)**2/a massnucl=(za*mp+n*mn-b)/mu return end function !EOC elk-2.3.22/src/PaxHeaders.22528/genexpmat.f900000644002504400250440000000005012337331324016507 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genexpmat.f900000644002504400250440000001325112337331324017255 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genexpmat(vpl,expmt,emat) use modmain implicit none ! arguments real(8), intent(in) :: vpl(3) complex(8), intent(in) :: expmt(lmmaxvr,nrcmtmax,natmtot) complex(8), intent(out) :: emat(nstsv,nstsv) ! local variables integer ist,jst,ispn,i,j,k,l integer is,ia,ias,nrc,nrci integer ngp,ngpq,igp,ifg real(8) vpc(3),vpql(3),vpqc(3),t1 complex(8) zsum ! allocatable arrays integer, allocatable :: igpig(:),igpqig(:) real(8), allocatable :: vgpl(:,:),vgpc(:,:),gpc(:),tpgpc(:,:) real(8), allocatable :: vgpql(:,:),vgpqc(:,:),gpqc(:),tpgpqc(:,:) complex(8), allocatable :: sfacgp(:,:),sfacgpq(:,:) complex(8), allocatable :: apwalm1(:,:,:,:),apwalm2(:,:,:,:) complex(8), allocatable :: evecfv1(:,:),evecfv2(:,:) complex(8), allocatable :: evecsv1(:,:),evecsv2(:,:) complex(8), allocatable :: wfmt1(:,:),wfmt2(:,:,:) complex(8), allocatable :: zfir(:),x(:),em(:,:) ! external functions complex(8) zfmtinp,zdotc external zfmtinp,zdotc ! check if q-vector is zero t1=abs(vecql(1))+abs(vecql(2))+abs(vecql(3)) if (t1.lt.epslat) then emat(:,:)=0.d0 do i=1,nstsv emat(i,i)=1.d0 end do return end if ! allocate local arrays allocate(igpig(ngkmax),igpqig(ngkmax)) allocate(vgpl(3,ngkmax),vgpc(3,ngkmax),gpc(ngkmax),tpgpc(2,ngkmax)) allocate(vgpql(3,ngkmax),vgpqc(3,ngkmax),gpqc(ngkmax),tpgpqc(2,ngkmax)) allocate(sfacgp(ngkmax,natmtot),sfacgpq(ngkmax,natmtot)) allocate(apwalm1(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(apwalm2(ngkmax,apwordmax,lmmaxapw,natmtot)) allocate(evecfv1(nmatmax,nstfv),evecfv2(nmatmax,nstfv)) if (tevecsv) then allocate(evecsv1(nstsv,nstsv),evecsv2(nstsv,nstsv)) end if allocate(wfmt1(lmmaxvr,nrcmtmax),wfmt2(lmmaxvr,nrcmtmax,nstfv)) allocate(zfir(ngtot),x(ngkmax),em(nstfv,nstfv)) ! p-vector in Cartesian coordinates call r3mv(bvec,vpl,vpc) ! generate the G+p-vectors call gengkvec(ngvec,ivg,vgc,vpl,vpc,gkmax,ngkmax,ngp,igpig,vgpl,vgpc) ! generate the spherical coordinates of the G+p-vectors do igp=1,ngp call sphcrd(vgpc(:,igp),gpc(igp),tpgpc(:,igp)) end do ! generate the structure factors call gensfacgp(ngp,vgpc,ngkmax,sfacgp) ! find the matching coefficients for k-point p call match(ngp,gpc,tpgpc,sfacgp,apwalm1) ! get the eigenvectors for k-point p call getevecfv(vpl,vgpl,evecfv1) ! p+q-vector in lattice coordinates vpql(:)=vpl(:)+vecql(:) ! p+q-vector in Cartesian coordinates call r3mv(bvec,vpql,vpqc) ! generate the G+p+q-vectors call gengkvec(ngvec,ivg,vgc,vpql,vpqc,gkmax,ngkmax,ngpq,igpqig,vgpql,vgpqc) ! generate the spherical coordinates of the G+p+q-vectors do igp=1,ngpq call sphcrd(vgpqc(:,igp),gpqc(igp),tpgpqc(:,igp)) end do ! generate the structure factors call gensfacgp(ngpq,vgpqc,ngkmax,sfacgpq) ! find the matching coefficients for k-point p+q call match(ngpq,gpqc,tpgpqc,sfacgpq,apwalm2) ! get the eigenvectors for k-point p+q call getevecfv(vpql,vgpql,evecfv2) ! set the first-variational matrix element array to zero em(:,:)=0.d0 !------------------------------------! ! muffin-tin matrix elements ! !------------------------------------! do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) do ist=1,nstfv ! calculate the wavefunction for k-point p+q call wavefmt(lradstp,lmaxvr,ias,ngpq,apwalm2,evecfv2(:,ist),lmmaxvr,wfmt1) ! convert from spherical harmonics to spherical coordinates call zbsht(nrc,nrci,wfmt1,wfmt2(:,:,ist)) ! multiply by exp(-iq.r) (conjugate because zfmtinp conjugates first function) call zfmtmul1(nrc,nrci,expmt(:,:,ias),wfmt2(:,:,ist),wfmt1) ! convert from spherical coordinates to spherical harmonics call zfsht(nrc,nrci,wfmt1,wfmt2(:,:,ist)) end do do jst=1,nstfv ! calculate the wavefunction for k-point p call wavefmt(lradstp,lmaxvr,ias,ngp,apwalm1,evecfv1(:,jst),lmmaxvr,wfmt1) do ist=1,nstfv em(ist,jst)=em(ist,jst)+zfmtinp(.true.,nrc,nrci,rcmt(:,is), & wfmt2(:,:,ist),wfmt1) end do end do ! end loops over atoms and species end do end do !--------------------------------------! ! interstitial matrix elements ! !--------------------------------------! ! compute interstitial wavefunctions for k-point p do jst=1,nstfv zfir(:)=0.d0 do igp=1,ngp ifg=igfft(igpig(igp)) zfir(ifg)=evecfv1(igp,jst) end do ! Fourier transform wavefunction to real-space call zfftifc(3,ngridg,1,zfir) ! multiply with the characteristic function zfir(:)=zfir(:)*cfunir(:) ! Fourier transform back to G-space call zfftifc(3,ngridg,-1,zfir) ! store as wavefunction with G+p+q index do igp=1,ngpq ifg=igfft(igpqig(igp)) x(igp)=zfir(ifg) end do ! add to the first-variational matrix elements do ist=1,nstfv em(ist,jst)=em(ist,jst)+zdotc(ngpq,evecfv2(:,ist),1,x,1) end do end do !-------------------------------------------! ! second-variational matrix elements ! !-------------------------------------------! if (tevecsv) then ! get the second-variational eigenvectors call getevecsv(vpl,evecsv1) call getevecsv(vpql,evecsv2) do i=1,nstsv do j=1,nstsv zsum=0.d0 k=0 do ispn=1,nspinor do ist=1,nstfv k=k+1 l=(ispn-1)*nstfv do jst=1,nstfv l=l+1 zsum=zsum+em(ist,jst)*conjg(evecsv2(k,i))*evecsv1(l,j) end do end do end do emat(i,j)=zsum end do end do else emat(:,:)=em(:,:) end if deallocate(igpig,igpqig,vgpl,vgpc,gpc,tpgpc) deallocate(vgpql,vgpqc,gpqc,tpgpqc,sfacgp,sfacgpq) deallocate(apwalm1,apwalm2,evecfv1,evecfv2) if (tevecsv) deallocate(evecsv1,evecsv2) deallocate(wfmt1,wfmt2,zfir,x,em) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rhomag.f900000644002504400250440000000005012337331323015773 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rhomag.f900000644002504400250440000000454312337331323016545 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine rhomag use modmain use modmpi implicit none ! local variables integer ik,idm,n ! allocatable arrays complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) ! set the charge density and magnetisation to zero rhomt(:,:,:)=0.d0 rhoir(:)=0.d0 if (spinpol) then magmt(:,:,:,:)=0.d0 magir(:,:)=0.d0 end if !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evecfv,evecsv) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) ! get the eigenvectors from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) ! add to the density and magnetisation call rhomagk(ik,evecfv,evecsv) deallocate(evecfv,evecsv) end do !$OMP END DO !$OMP END PARALLEL ! convert muffin-tin density/magnetisation to spherical harmonics call rhomagsh ! symmetrise the density call symrf(lradstp,rhomt,rhoir) ! symmetrise the magnetisation if (spinpol) call symrvf(lradstp,magmt,magir) ! convert the density from a coarse to a fine radial mesh call rfmtctof(rhomt) ! convert the magnetisation from a coarse to a fine radial mesh !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do idm=1,ndmag call rfmtctof(magmt(:,:,:,idm)) end do !$OMP END DO !$OMP END PARALLEL ! add densities from each process and redistribute if (np_mpi.gt.1) then n=lmmaxvr*nrmtmax*natmtot call mpi_allreduce(mpi_in_place,rhomt,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) call mpi_allreduce(mpi_in_place,rhoir,ngtot,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) if (spinpol) then n=n*ndmag call mpi_allreduce(mpi_in_place,magmt,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) n=ngtot*ndmag call mpi_allreduce(mpi_in_place,magir,n,mpi_double_precision,mpi_sum, & mpi_comm_kpt,ierror) end if end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! add the core density to the total density call rhocore ! calculate the charges call charge ! calculate the moments if (spinpol) call moment ! apply smoothing operation to the density and magnetisation if required call rhomagsm ! normalise the density call rhonorm return end subroutine elk-2.3.22/src/PaxHeaders.22528/rfinp.f900000644002504400250440000000005012337331322015633 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/rfinp.f900000644002504400250440000000370112337331322016400 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rfinp ! !INTERFACE: real(8) function rfinp(lrstp,rfmt1,rfmt2,rfir1,rfir2) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! lrstp : radial step length (in,integer) ! rfmt1 : first function in real spherical harmonics for all muffin-tins ! (in,real(lmmaxvr,nrmtmax,natmtot)) ! rfmt2 : second function in real spherical harmonics for all muffin-tins ! (in,real(lmmaxvr,nrmtmax,natmtot)) ! rfir1 : first real interstitial function in real-space (in,real(ngtot)) ! rfir2 : second real interstitial function in real-space (in,real(ngtot)) ! !DESCRIPTION: ! Calculates the inner product of two real fuctions over the entire unit cell. ! The input muffin-tin functions should have angular momentum cut-off ! {\tt lmaxvr}. In the intersitial region, the integrand is multiplied with ! the characteristic function, $\tilde{\Theta}({\bf r})$, to remove the ! contribution from the muffin-tin. See routines {\tt rfmtinp} and ! {\tt gencfun}. ! ! !REVISION HISTORY: ! Created July 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: lrstp real(8), intent(in) :: rfmt1(lmmaxvr,nrmtmax,natmtot) real(8), intent(in) :: rfmt2(lmmaxvr,nrmtmax,natmtot) real(8), intent(in) :: rfir1(ngtot),rfir2(ngtot) ! local variables integer is,ias,ir real(8) sum ! external functions real(8) rfmtinp external rfmtinp sum=0.d0 ! interstitial contribution do ir=1,ngtot sum=sum+rfir1(ir)*rfir2(ir)*cfunir(ir) end do sum=sum*omega/dble(ngtot) ! muffin-tin contribution !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is) REDUCTION(+:sum) !$OMP DO do ias=1,natmtot is=idxis(ias) sum=sum+rfmtinp(lrstp,nrmt(is),nrmtinr(is),spr(:,is),rfmt1(:,:,ias), & rfmt2(:,:,ias)) end do !$OMP END DO !$OMP END PARALLEL rfinp=sum return end function !EOC elk-2.3.22/src/PaxHeaders.22528/readdvs.f900000644002504400250440000000005012337331324016147 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/readdvs.f900000644002504400250440000000516212337331324016717 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine readdvs(iq,is,ia,ip) use modmain use modphonon implicit none ! arguments integer, intent(in) :: iq integer, intent(in) :: is integer, intent(in) :: ia integer, intent(in) :: ip ! local variables integer js,iostat integer version_(3),nspecies_,lmmaxvr_ integer natoms_,nrcmt_,ngridg_(3) character(256) fext,fname call phfext(iq,is,ia,ip,fext) fname='DVS'//trim(fext) open(50,file=trim(fname),action='READ',form='UNFORMATTED',status='OLD', & iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(readdvs): error opening ",A)') trim(fname) write(*,*) stop end if read(50) version_ if ((version(1).ne.version_(1)).or.(version(2).ne.version_(2)) & .or.(version(3).ne.version_(3))) then write(*,*) write(*,'("Warning(readdvs): different versions")') write(*,'(" current : ",I3.3,".",I3.3,".",I3.3)') version write(*,'(" file : ",I3.3,".",I3.3,".",I3.3)') version_ write(*,'(" in file ",A)') trim(fname) end if read(50) nspecies_ if (nspecies.ne.nspecies_) then write(*,*) write(*,'("Error(readdvs): differing nspecies")') write(*,'(" current : ",I4)') nspecies write(*,'(" file : ",I4)') nspecies_ write(*,'(" in file ",A)') trim(fname) write(*,*) stop end if read(50) lmmaxvr_ if (lmmaxvr.ne.lmmaxvr_) then write(*,*) write(*,'("Error(readdvs): differing lmmaxvr")') write(*,'(" current : ",I4)') lmmaxvr write(*,'(" file : ",I4)') lmmaxvr_ write(*,'(" in file ",A)') trim(fname) write(*,*) stop end if do js=1,nspecies read(50) natoms_ if (natoms(js).ne.natoms_) then write(*,*) write(*,'("Error(readdvs): differing natoms for species ",I4)') js write(*,'(" current : ",I4)') natoms(js) write(*,'(" file : ",I4)') natoms_ write(*,'(" in file ",A)') trim(fname) write(*,*) stop end if read(50) nrcmt_ if (nrcmt(js).ne.nrcmt_) then write(*,*) write(*,'("Error(readdvs): differing nrcmt for species ",I4)') js write(*,'(" current : ",I6)') nrcmt(js) write(*,'(" file : ",I6)') nrcmt_ write(*,'(" in file ",A)') trim(fname) write(*,*) stop end if end do read(50) ngridg_ if ((ngridg(1).ne.ngridg_(1)).or.(ngridg(2).ne.ngridg_(2)).or. & (ngridg(3).ne.ngridg_(3))) then write(*,*) write(*,'("Error(readdvs): differing ngridg")') write(*,'(" current : ",3I6)') ngridg write(*,'(" file : ",3I6)') ngridg_ write(*,'(" in file ",A)') trim(fname) write(*,*) stop end if read(50) dvsmt,dvsir close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/phmixpack.f900000644002504400250440000000005012337331324016503 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phmixpack.f900000644002504400250440000000107712337331324017254 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phmixpack(tpack,n,v) use modmain use modphonon implicit none ! arguments logical, intent(in) :: tpack integer, intent(out) :: n real(8), intent(inout) :: v(*) ! local variables integer idm n=0 call zfpack(tpack,n,nrmt,nrmtinr,nrmtmax,dvsmt,dvsir,v) do idm=1,ndmag call zfpack(tpack,n,nrcmt,nrcmtinr,nrcmtmax,dbsmt(:,:,:,idm),dbsir(:,idm),v) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdiracint.f900000644002504400250440000000005012337331323016475 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rdiracint.f900000644002504400250440000001372212337331323017246 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rdiracint ! !INTERFACE: subroutine rdiracint(sol,m,kpa,e,nr,r,vr,trsc,nn,g0p,f0p,g0,g1,f0,f1) ! !INPUT/OUTPUT PARAMETERS: ! sol : speed of light in atomic units (in,real) ! m : order of energy derivative (in,integer) ! kpa : quantum number kappa (in,integer) ! e : energy (in,real) ! nr : number of radial mesh points (in,integer) ! r : radial mesh (in,real(nr)) ! vr : potential on radial mesh (in,real(nr)) ! trsc : .true. if the radial functions should be rescaled if any one of them ! exceeds an overflow value (in,logical) ! nn : number of nodes (out,integer) ! g0p : m-1 th energy derivative of the major component multiplied by r ! (in,real(nr)) ! f0p : m-1 th energy derivative of the minor component multiplied by r ! (in,real(nr)) ! g0 : m th energy derivative of the major component multiplied by r ! (out,real(nr)) ! g1 : radial derivative of g0 (out,real(nr)) ! f0 : m th energy derivative of the minor component multiplied by r ! (out,real(nr)) ! f1 : radial derivative of f0 (out,real(nr)) ! !DESCRIPTION: ! Integrates the $m$th energy derivative of the radial Dirac equation from ! $r=0$ outwards. This involves using the predictor-corrector method to solve ! the coupled first-order equations (in atomic units) ! \begin{align*} ! \left(\frac{d}{dr}+\frac{\kappa}{r}\right)G^{(m)}_\kappa&=\frac{1}{c} ! \{2E_0+E-V\}F^{(m)}_\kappa+\frac{m}{c}F^{(m-1)}_\kappa\\ ! \left(\frac{d}{dr}-\frac{\kappa}{r}\right)F^{(m)}_\kappa&= ! -\frac{1}{c}\{E-V\}G^{(m)}_\kappa-\frac{m}{c}G^{(m-1)}_\kappa, ! \end{align*} ! where $G^{(m)}_\kappa=rg^{(m)}_\kappa$ and $F^{(m)}_\kappa=rf^{(m)}_\kappa$ ! are the $m$th energy derivatives of the major and minor components ! multiplied by $r$, respectively; $V$ is the external potential; $E_0$ is the ! electron rest energy; $E$ is the eigen energy (excluding $E_0$); and ! $\kappa=l$ for $j=l-\frac{1}{2}$ or $\kappa=-(l+1)$ for $j=l+\frac{1}{2}$. ! If $m=0$ then the arrays {\tt g0p} and {\tt f0p} are not referenced. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) ! Polynomial order fixed to 3, September 2013 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: sol integer, intent(in) :: m integer, intent(in) :: kpa real(8), intent(in) :: e integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(in) :: vr(nr) logical, intent(in) :: trsc integer, intent(out) :: nn real(8), intent(in) :: g0p(nr) real(8), intent(in) :: f0p(nr) real(8), intent(out) :: g0(nr),g1(nr) real(8), intent(out) :: f0(nr),f1(nr) ! local variables integer ir,ir0 ! rescaling limit real(8), parameter :: rsc=1.d100, rsci=1.d0/rsc real(8) ci,e0,t1,t2,t3,t4 if (nr.lt.4) then write(*,*) write(*,'("Error(rdiracint): nr < 4 : ",I8)') nr write(*,*) stop end if if ((m.lt.0).or.(m.gt.6)) then write(*,*) write(*,'("Error(rdiracint): m out of range : ",I8)') m write(*,*) stop end if ! inverse speed of light ci=1.d0/sol ! electron rest energy e0=sol**2 t1=2.d0*e0+e ! determine the r -> 0 boundary values of F and G t2=dble(kpa)/r(1) t3=ci*(t1-vr(1)) t4=ci*(vr(1)-e) f0(1)=1.d0 f1(1)=0.d0 g0(1)=(f1(1)-t2*f0(1))/t4 g1(1)=t3*f0(1)-t2*g0(1) if (m.ne.0) then g1(1)=g1(1)+ci*dble(m)*f0p(1) f1(1)=f1(1)-ci*dble(m)*g0p(1) end if ! extrapolate to the first four points g1(2:4)=g1(1) f1(2:4)=f1(1) nn=0 do ir=2,nr t2=dble(kpa)/r(ir) t3=ci*(t1-vr(ir)) t4=ci*(vr(ir)-e) ir0=ir-3 if (ir0.lt.1) ir0=1 g1(ir)=poly3(r(ir0),g1(ir0),r(ir)) f1(ir)=poly3(r(ir0),f1(ir0),r(ir)) ! integrate to find wavefunction g0(ir)=poly4i(r(ir0),g1(ir0),r(ir))+g0(ir0) f0(ir)=poly4i(r(ir0),f1(ir0),r(ir))+f0(ir0) ! compute the derivatives g1(ir)=t3*f0(ir)-t2*g0(ir) f1(ir)=t4*g0(ir)+t2*f0(ir) if (m.ne.0) then g1(ir)=g1(ir)+ci*dble(m)*f0p(ir) f1(ir)=f1(ir)-ci*dble(m)*g0p(ir) end if ! integrate for correction g0(ir)=poly4i(r(ir0),g1(ir0),r(ir))+g0(ir0) f0(ir)=poly4i(r(ir0),f1(ir0),r(ir))+f0(ir0) ! compute the derivatives again g1(ir)=t3*f0(ir)-t2*g0(ir) f1(ir)=t4*g0(ir)+t2*f0(ir) if (m.ne.0) then g1(ir)=g1(ir)+ci*dble(m)*f0p(ir) f1(ir)=f1(ir)-ci*dble(m)*g0p(ir) end if ! check for overflow if ((abs(g0(ir)).gt.rsc).or.(abs(g1(ir)).gt.rsc).or. & (abs(f0(ir)).gt.rsc).or.(abs(f1(ir)).gt.rsc)) then if (trsc) then ! rescale values already calculated and continue g0(1:ir)=g0(1:ir)*rsci g1(1:ir)=g1(1:ir)*rsci f0(1:ir)=f0(1:ir)*rsci f1(1:ir)=f1(1:ir)*rsci else ! set the remaining points and return g0(ir:nr)=g0(ir) g1(ir:nr)=g1(ir) f0(ir:nr)=f0(ir) f1(ir:nr)=f1(ir) return end if end if ! check for node if (g0(ir-1)*g0(ir).lt.0.d0) nn=nn+1 end do return contains real(8) function poly3(xa,ya,x) implicit none ! arguments real(8) xa(3),ya(3),x ! local variables real(8) x0,x1,x2,y0,y1,y2 real(8) c1,c2,t0,t1,t2 ! evaluate the polynomial coefficients x0=xa(1) x1=xa(2)-x0 x2=xa(3)-x0 y0=ya(1) y1=ya(2)-y0 y2=ya(3)-y0 t0=1.d0/(x1*x2*(x2-x1)) t1=x1*y2 t2=x2*y1 c1=x2*t2-x1*t1 c2=t1-t2 t1=x-x0 ! evaluate the polynomial poly3=y0+t0*t1*(c1+c2*t1) return end function real(8) function poly4i(xa,ya,x) implicit none ! arguments real(8), intent(in) :: xa(4),ya(4),x ! local variables real(8) x0,x1,x2,x3,y0,y1,y2,y3 real(8) c1,c2,c3,t0,t1,t2,t3,t4,t5,t6 ! evaluate the polynomial coefficients x0=xa(1) x1=xa(2)-x0 x2=xa(3)-x0 x3=xa(4)-x0 y0=ya(1) y1=ya(2)-y0 y2=ya(3)-y0 y3=ya(4)-y0 t0=1.d0/(x1*x2*x3*(x1-x2)*(x1-x3)*(x2-x3)) t1=x1*x2*y3 t2=x2*x3*y1 t3=x3*x1*y2 c3=t1*(x1-x2)+t2*(x2-x3)+t3*(x3-x1) t6=x3**2 t5=x2**2 t4=x1**2 c2=t1*(t5-t4)+t2*(t6-t5)+t3*(t4-t6) c1=t1*(x2*t4-x1*t5)+t2*(x3*t5-x2*t6)+t3*(x1*t6-x3*t4) t1=x-x0 ! integrate the polynomial poly4i=t1*(y0+t0*t1*(0.5d0*c1+t1*(0.3333333333333333333d0*c2+0.25d0*c3*t1))) return end function end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/init0.f900000644002504400250440000000005012337331323015541 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/init0.f900000644002504400250440000004376212337331323016321 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: init0 ! !INTERFACE: subroutine init0 ! !USES: use modmain use modxcifc use moddftu use modtddft use modphonon use modtest use modvars ! !DESCRIPTION: ! Performs basic consistency checks as well as allocating and initialising ! global variables not dependent on the $k$-point set. ! ! !REVISION HISTORY: ! Created January 2004 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ias,ist integer l,m,lm,i real(8) rsum,t1 real(8) ts0,ts1 !-------------------------------! ! zero timing variables ! !-------------------------------! timeinit=0.d0 timemat=0.d0 timefv=0.d0 timesv=0.d0 timerho=0.d0 timepot=0.d0 timefor=0.d0 call timesec(ts0) !------------------------------------! ! angular momentum variables ! !------------------------------------! lmmaxvr=(lmaxvr+1)**2 lmmaxapw=(lmaxapw+1)**2 lmmaxmat=(lmaxmat+1)**2 lmmaxinr=(lmaxinr+1)**2 if (lmaxvr.gt.lmaxapw) then write(*,*) write(*,'("Error(init0): lmaxvr > lmaxapw : ",2I8)') lmaxvr,lmaxapw write(*,*) stop end if if (lmaxmat.gt.lmaxapw) then write(*,*) write(*,'("Error(init0): lmaxmat > lmaxapw : ",2I8)') lmaxmat,lmaxapw write(*,*) stop end if ! check DOS lmax is within range lmaxdos=min(lmaxdos,lmaxvr) ! index to (l,m) pairs if (allocated(idxlm)) deallocate(idxlm) allocate(idxlm(0:lmaxapw,-lmaxapw:lmaxapw)) if (allocated(idxil)) deallocate(idxil) allocate(idxil(lmmaxapw)) if (allocated(idxim)) deallocate(idxim) allocate(idxim(lmmaxapw)) lm=0 do l=0,lmaxapw do m=-l,l lm=lm+1 idxlm(l,m)=lm idxil(lm)=l idxim(lm)=m end do end do ! array of i^l and (-i)^l values if (allocated(zil)) deallocate(zil) if (allocated(zilc)) deallocate(zilc) allocate(zil(0:lmaxapw),zilc(0:lmaxapw)) do l=0,lmaxapw zil(l)=zi**l zilc(l)=conjg(zil(l)) end do ! write to VARIABLES.OUT call writevars('lmaxvr',iv=lmaxvr) call writevars('lmaxapw',iv=lmaxapw) call writevars('lmaxinr',iv=lmaxinr) !------------------------------------! ! index to atoms and species ! !------------------------------------! natmmax=0 ias=0 do is=1,nspecies do ia=1,natoms(is) ias=ias+1 idxas(ia,is)=ias idxis(ias)=is idxia(ias)=ia end do ! maximum number of atoms over all species natmmax=max(natmmax,natoms(is)) end do ! total number of atoms natmtot=ias ! number of phonon branches nbph=3*natmtot ! write to VARIABLES.OUT call writevars('nspecies',iv=nspecies) call writevars('natoms',nv=nspecies,iva=natoms) call writevars('spsymb',nv=nspecies,sva=spsymb) call writevars('spname',nv=nspecies,sva=spname) call writevars('spzn',nv=nspecies,rva=spzn) !------------------------! ! spin variables ! !------------------------! if (spinsprl) then spinpol=.true. spinorb=.false. select case(task) case(51,52,53,61,62,63) write(*,*) write(*,'("Error(init0): spin-spirals do not work with task ",I4)') task write(*,*) stop end select if (xctype(1).lt.0) then write(*,*) write(*,'("Error(init0): spin-spirals do not work with the OEP method")') write(*,*) stop end if end if ! spin-orbit coupling or fixed spin moment implies spin-polarised calculation if ((spinorb).or.(fsmtype.ne.0).or.(spinsprl)) spinpol=.true. ! number of spinor components and maximum allowed occupancy if (spinpol) then nspinor=2 occmax=1.d0 else nspinor=1 occmax=2.d0 end if ! number of spin-dependent first-variational functions per state and map from ! second- to first-variational spin index if (spinsprl) then nspnfv=2 jspnfv(1)=1 jspnfv(2)=2 else nspnfv=1 jspnfv(1)=1 jspnfv(2)=1 end if ! spin-polarised calculations require second-variational eigenvectors if (spinpol) tevecsv=.true. ! Hartree-Fock/RDMFT requires second-variational eigenvectors if ((task.eq.5).or.(task.eq.300)) tevecsv=.true. ! get exchange-correlation functional data call getxcdata(xctype,xcdescr,xcspin,xcgrad,hybrid,hybridc) if ((spinpol).and.(xcspin.eq.0)) then write(*,*) write(*,'("Error(init0): requested spin-polarised run with & &spin-unpolarised")') write(*,'(" exchange-correlation functional")') write(*,*) stop end if ! check for collinearity in the z-direction and set the dimension of the ! magnetisation and exchange-correlation vector fields if (spinpol) then ndmag=1 if ((abs(bfieldc0(1)).gt.epslat).or.(abs(bfieldc0(2)).gt.epslat)) ndmag=3 do is=1,nspecies do ia=1,natoms(is) if ((abs(bfcmt0(1,ia,is)).gt.epslat).or. & (abs(bfcmt0(2,ia,is)).gt.epslat)) ndmag=3 end do end do ! spin-orbit coupling is non-collinear in general if (spinorb) ndmag=3 ! force collinear magnetism along the z-axis if required if (cmagz) ndmag=1 ! source-free fields and spin-spirals must be non-collinear if ((nosource).or.(spinsprl)) ndmag=3 else ndmag=0 end if ! set the non-collinear flag if (ndmag.eq.3) then ncmag=.true. else ncmag=.false. end if ! check for meta-GGA with non-collinearity if ((xcgrad.eq.3).and.ncmag) then write(*,*) write(*,'("Error(init0): meta-GGA is not valid for non-collinear magnetism")') write(*,*) stop end if ! spin-polarised cores if (.not.spinpol) spincore=.false. if (fsmtype.ne.0) then ! set fixed spin moment effective field to zero bfsmc(:)=0.d0 ! set muffin-tin FSM fields to zero if (allocated(bfsmcmt)) deallocate(bfsmcmt) allocate(bfsmcmt(3,natmtot)) bfsmcmt(:,:)=0.d0 end if ! number of independent spin components of the f_xc spin tensor if (spinpol) then if (ncmag) then nscfxc=10 else nscfxc=3 end if else nscfxc=1 end if ! set the magnetic fields to the initial values bfieldc(:)=bfieldc0(:) bfcmt(:,:,:)=bfcmt0(:,:,:) ! if reducebf < 1 then reduce the external magnetic fields immediately for ! non-self-consistent calculations or resumptions if (reducebf.lt.1.d0-epslat) then if ((task.ge.10).and.(task.ne.28).and.(task.ne.200).and.(task.ne.201).and. & (task.ne.350).and.(task.ne.351)) then bfieldc(:)=0.d0 bfcmt(:,:,:)=0.d0 end if end if ! set the fixed tensor moment spatial and spin rotation matrices equal for the ! case of spin-orbit coupling; parity for spin is ignored by rotdmat if (spinorb) then do i=1,ntmfix rtmfix(:,:,2,i)=rtmfix(:,:,1,i) end do end if ! generate the fixed tensor moment density matrices if required call gendmftm ! write to VARIABLES.OUT call writevars('nspinor',iv=nspinor) call writevars('ndmag',iv=ndmag) !----------------------------------! ! crystal structure set up ! !----------------------------------! ! generate the reciprocal lattice vectors and unit cell volume call reciplat ! inverse of the lattice vector matrix call r3minv(avec,ainv) ! inverse of the reciprocal vector matrix call r3minv(bvec,binv) ! Cartesian coordinates of the spin-spiral vector call r3mv(bvec,vqlss,vqcss) do is=1,nspecies do ia=1,natoms(is) ! map atomic lattice coordinates to [0,1) call r3frac(epslat,atposl(:,ia,is)) ! determine atomic Cartesian coordinates call r3mv(avec,atposl(:,ia,is),atposc(:,ia,is)) end do end do ! check muffin-tins are not too close together call checkmt ! compute the total muffin-tin volume (M. Meinert) omegamt=0.d0 do is=1,nspecies omegamt=omegamt+dble(natoms(is))*(fourpi/3.d0)*rmt(is)**3 end do ! write to VARIABLES.OUT call writevars('avec',nv=9,rva=avec) call writevars('bvec',nv=9,rva=bvec) call writevars('omega',rv=omega) do is=1,nspecies call writevars('atposl',l=is,nv=3*natoms(is),rva=atposl(:,:,is)) end do !-------------------------------! ! vector fields E and A ! !-------------------------------! efieldpol=.false. if (sum(abs(efieldc(:))).gt.epslat) then efieldpol=.true. tshift=.false. ! electric field vector in lattice coordinates call r3mv(ainv,efieldc,efieldl) end if afieldpol=.false. if (sum(abs(afieldc(:))).gt.epslat) then afieldpol=.true. ! vector potential added in second-variational step tevecsv=.true. end if !---------------------------------! ! crystal symmetry set up ! !---------------------------------! call symmetry !-----------------------! ! radial meshes ! !-----------------------! nrmtmax=1 nrcmtmax=1 do is=1,nspecies ! make the muffin-tin mesh commensurate with lradstp nrmt(is)=nrmt(is)-mod(nrmt(is)-1,lradstp) nrmtmax=max(nrmtmax,nrmt(is)) ! number of coarse radial mesh points nrcmt(is)=(nrmt(is)-1)/lradstp+1 nrcmtmax=max(nrcmtmax,nrcmt(is)) end do ! set up atomic and muffin-tin radial meshes call genrmesh !--------------------------------------! ! charges and number of states ! !--------------------------------------! chgzn=0.d0 chgcrtot=0.d0 chgval=0.d0 spnstmax=0 nstcr=0 do is=1,nspecies ! nuclear charge chgzn=chgzn+spzn(is)*natoms(is) ! find the maximum number of atomic states spnstmax=max(spnstmax,spnst(is)) ! compute the electronic charge for each species, as well as the total core and ! valence charge spze(is)=0.d0 chgcr(is)=0.d0 do ist=1,spnst(is) spze(is)=spze(is)+spocc(ist,is) if (spcore(ist,is)) then chgcr(is)=chgcr(is)+spocc(ist,is) nstcr=nstcr+2*spk(ist,is)*natoms(is) else chgval=chgval+spocc(ist,is)*natoms(is) end if end do chgcrtot=chgcrtot+chgcr(is)*natoms(is) end do ! add excess charge chgval=chgval+chgexs ! total charge chgtot=chgcrtot+chgval if (chgtot.lt.1.d-8) then write(*,*) write(*,'("Error(init0): zero total charge")') write(*,*) stop end if ! effective Wigner radius rwigner=(3.d0/(fourpi*(chgtot/omega)))**(1.d0/3.d0) ! write to VARIABLES.OUT call writevars('spze',nv=nspecies,rva=spze) call writevars('chgcr',nv=nspecies,rva=chgcr) call writevars('chgexs',rv=chgexs) call writevars('chgval',rv=chgtot) !-------------------------! ! G-vector arrays ! !-------------------------! if (nspecies.eq.0) isgkmax=-2 ! determine gkmax from rgkmax and the muffin-tin radius if (isgkmax.eq.-2) then gkmax=rgkmax/2.d0 else if ((isgkmax.ge.1).and.(isgkmax.le.nspecies)) then ! use user-specified muffin-tin radius gkmax=rgkmax/rmt(isgkmax) else if (isgkmax.eq.-1) then ! use average muffin-tin radius rsum=0.d0 do is=1,nspecies rsum=rsum+dble(natoms(is))*rmt(is) end do rsum=rsum/dble(natmtot) gkmax=rgkmax/rsum else ! use minimum muffin-tin radius (isgkmax=-3) gkmax=rgkmax/minval(rmt(1:nspecies)) end if end if ! ensure |G| cut-off is at least twice |G+k| cut-off gmaxvr=max(gmaxvr,2.d0*gkmax+epslat) ! find the G-vector grid sizes call gridsize(avec,gmaxvr,ngridg,ngtot,intgv) ! allocate global G-vector arrays if (allocated(ivg)) deallocate(ivg) allocate(ivg(3,ngtot)) if (allocated(ivgig)) deallocate(ivgig) allocate(ivgig(intgv(1,1):intgv(2,1),intgv(1,2):intgv(2,2), & intgv(1,3):intgv(2,3))) if (allocated(igfft)) deallocate(igfft) allocate(igfft(ngtot)) if (allocated(vgc)) deallocate(vgc) allocate(vgc(3,ngtot)) if (allocated(gc)) deallocate(gc) allocate(gc(ngtot)) ! generate the G-vectors call gengvec(ngridg,ngtot,intgv,bvec,gmaxvr,ngvec,ivg,ivgig,igfft,vgc,gc) ! write number of G-vectors to test file call writetest(900,'number of G-vectors',iv=ngvec) ! Poisson solver pseudocharge density constant if (nspecies.gt.0) then t1=0.25d0*gmaxvr*maxval(rmt(1:nspecies)) else t1=0.25d0*gmaxvr*2.d0 end if npsd=max(nint(t1),1) lnpsd=lmaxvr+npsd+1 ! compute the spherical Bessel functions j_l(|G|R_mt) if (allocated(jlgr)) deallocate(jlgr) allocate(jlgr(0:lnpsd,ngvec,nspecies)) call genjlgpr(lnpsd,gc,jlgr) ! generate the spherical harmonics of the G-vectors call genylmg ! allocate structure factor array for G-vectors if (allocated(sfacg)) deallocate(sfacg) allocate(sfacg(ngvec,natmtot)) ! generate structure factors for G-vectors call gensfacgp(ngvec,vgc,ngvec,sfacg) ! generate the smooth step function form factors if (allocated(ffacg)) deallocate(ffacg) allocate(ffacg(ngtot,nspecies)) do is=1,nspecies call genffacgp(is,gc,ffacg(:,is)) end do ! generate the characteristic function call gencfun ! write to VARIABLES.OUT call writevars('gmaxvr',rv=gmaxvr) call writevars('ngridg',nv=3,iva=ngridg) call writevars('intgv',nv=6,iva=intgv) call writevars('ngvec',iv=ngvec) call writevars('ivg',nv=3*ngtot,iva=ivg) call writevars('igfft',nv=ngtot,iva=igfft) !-------------------------! ! atoms and cores ! !-------------------------! ! solve the Kohn-Sham-Dirac equations for all atoms call allatoms ! allocate core state occupancy and eigenvalue arrays and set to default if (allocated(occcr)) deallocate(occcr) allocate(occcr(spnstmax,natmtot)) if (allocated(evalcr)) deallocate(evalcr) allocate(evalcr(spnstmax,natmtot)) do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) do ist=1,spnst(is) occcr(ist,ias)=spocc(ist,is) evalcr(ist,ias)=speval(ist,is) end do end do end do ! allocate core state radial wavefunction array if (allocated(rwfcr)) deallocate(rwfcr) allocate(rwfcr(spnrmax,2,spnstmax,natmtot)) ! number of core spin channels if (spincore) then nspncr=2 else nspncr=1 end if ! allocate core state charge density array if (allocated(rhocr)) deallocate(rhocr) allocate(rhocr(spnrmax,natmtot,nspncr)) !---------------------------------------! ! charge density and potentials ! !---------------------------------------! ! allocate charge density arrays if (allocated(rhomt)) deallocate(rhomt) allocate(rhomt(lmmaxvr,nrmtmax,natmtot)) if (allocated(rhoir)) deallocate(rhoir) allocate(rhoir(ngtot)) ! allocate magnetisation arrays if (allocated(magmt)) deallocate(magmt) if (allocated(magir)) deallocate(magir) if (spinpol) then allocate(magmt(lmmaxvr,nrmtmax,natmtot,ndmag)) allocate(magir(ngtot,ndmag)) end if ! Coulomb potential if (allocated(vclmt)) deallocate(vclmt) allocate(vclmt(lmmaxvr,nrmtmax,natmtot)) if (allocated(vclir)) deallocate(vclir) allocate(vclir(ngtot)) ! exchange energy density if (allocated(exmt)) deallocate(exmt) allocate(exmt(lmmaxvr,nrmtmax,natmtot)) if (allocated(exir)) deallocate(exir) allocate(exir(ngtot)) ! correlation energy density if (allocated(ecmt)) deallocate(ecmt) allocate(ecmt(lmmaxvr,nrmtmax,natmtot)) if (allocated(ecir)) deallocate(ecir) allocate(ecir(ngtot)) ! exchange-correlation potential if (allocated(vxcmt)) deallocate(vxcmt) allocate(vxcmt(lmmaxvr,nrmtmax,natmtot)) if (allocated(vxcir)) deallocate(vxcir) allocate(vxcir(ngtot)) ! effective Kohn-Sham potential if (allocated(vsmt)) deallocate(vsmt) allocate(vsmt(lmmaxvr,nrmtmax,natmtot)) if (allocated(vsir)) deallocate(vsir) allocate(vsir(ngtot)) if (allocated(vsig)) deallocate(vsig) allocate(vsig(ngvec)) ! exchange-correlation magnetic and Kohn-Sham effective fields if (allocated(bxcmt)) deallocate(bxcmt) if (allocated(bxcir)) deallocate(bxcir) if (allocated(bsmt)) deallocate(bsmt) if (allocated(bsir)) deallocate(bsir) if (spinpol) then allocate(bxcmt(lmmaxvr,nrmtmax,natmtot,ndmag)) allocate(bxcir(ngtot,ndmag)) allocate(bsmt(lmmaxvr,nrcmtmax,natmtot,ndmag)) allocate(bsir(ngtot,ndmag)) end if ! spin-orbit coupling radial function if (allocated(socfr)) deallocate(socfr) if (spinorb) then allocate(socfr(nrcmtmax,natmtot)) end if ! allocate muffin-tin charge and moment arrays if (allocated(chgcrlk)) deallocate(chgcrlk) allocate(chgcrlk(natmtot)) if (allocated(chgmt)) deallocate(chgmt) allocate(chgmt(natmtot)) if (allocated(mommt)) deallocate(mommt) allocate(mommt(3,natmtot)) !-------------------------! ! force variables ! !-------------------------! if (allocated(forcehf)) deallocate(forcehf) allocate(forcehf(3,natmtot)) if (allocated(forceibs)) deallocate(forceibs) allocate(forceibs(3,natmtot)) if (allocated(forcetot)) deallocate(forcetot) allocate(forcetot(3,natmtot)) !-------------------------------------------------! ! DFT+U and fixed tensor moment variables ! !-------------------------------------------------! if ((dftu.ne.0).or.(ftmtype.ne.0)) then ! density matrix elements in each muffin-tin if (allocated(dmatmt)) deallocate(dmatmt) allocate(dmatmt(lmmaxdm,nspinor,lmmaxdm,nspinor,natmtot)) ! potential matrix elements in each muffin-tin if (allocated(vmatmt)) deallocate(vmatmt) allocate(vmatmt(lmmaxdm,nspinor,lmmaxdm,nspinor,natmtot)) ! zero the potential matrix vmatmt(:,:,:,:,:)=0.d0 ! require the potential matrix elements be calculated tvmatmt=.true. ! flags for non-zero muffin-tin potential matrices if (allocated(tvmmt)) deallocate(tvmmt) allocate(tvmmt(0:lmaxdm,natmtot)) tvmmt(:,:)=.false. ! require second-variational eigenvectors tevecsv=.true. end if if (dftu.ne.0) then ! DFT+U energy for each atom if (allocated(engyadu)) deallocate(engyadu) allocate(engyadu(natmmax,ndftu)) ! interpolation constants (alpha) if (allocated(alphadu)) deallocate(alphadu) allocate(alphadu(natmmax,ndftu)) ! flag the muffin-tin potential matrices which are non-zero do i=1,ndftu is=idftu(1,i) if (is.gt.nspecies) then write(*,*) write(*,'("Error(init0): invalid species number : ",I8)') is write(*,*) stop end if l=idftu(2,i) do ia=1,natoms(is) ias=idxas(ia,is) tvmmt(l,ias)=.true. end do end do end if if (ftmtype.ne.0) then ! allocate and zero the fixed tensor moment potential array if (allocated(vmftm)) deallocate(vmftm) allocate(vmftm(lmmaxdm,nspinor,lmmaxdm,nspinor,natmtot)) vmftm(:,:,:,:,:)=0.d0 ! flag the muffin-tin potential matrices which are non-zero do i=1,ntmfix is=itmfix(1,i) ia=itmfix(2,i) ias=idxas(ia,is) l=itmfix(3,i) tvmmt(l,ias)=.true. end do end if !-----------------------! ! miscellaneous ! !-----------------------! ! determine nuclear radii and volumes call nuclei ! determine the nuclear-nuclear energy call energynn ! get smearing function description call getsdata(stype,sdescr) ! get mixing type description call getmixdata(mixtype,mixdescr) ! generate the spherical harmonic transform (SHT) matrices call genshtmat ! allocate 1D plotting arrays if (allocated(dvp1d)) deallocate(dvp1d) allocate(dvp1d(nvp1d)) if (allocated(vplp1d)) deallocate(vplp1d) allocate(vplp1d(3,npp1d)) if (allocated(dpp1d)) deallocate(dpp1d) allocate(dpp1d(npp1d)) ! zero self-consistent loop number iscl=0 tlast=.false. ! set the Fermi energy to zero efermi=0.d0 ! input q-vector in Cartesian coordinates call r3mv(bvec,vecql,vecqc) call timesec(ts1) timeinit=timeinit+ts1-ts0 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/eveqnfv.f900000644002504400250440000000005012337331323016170 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/eveqnfv.f900000644002504400250440000000535612337331323016745 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: eveqnfv ! !INTERFACE: subroutine eveqnfv(nmatp,ngp,igpig,vpc,vgpc,apwalm,evalfv,evecfv) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! nmatp : order of overlap and Hamiltonian matrices (in,integer) ! ngp : number of G+k-vectors for augmented plane waves (in,integer) ! igpig : index from G+k-vectors to G-vectors (in,integer(ngkmax)) ! vpc : k-vector in Cartesian coordinates (in,real(3)) ! vgpc : G+k-vectors in Cartesian coordinates (in,real(3,ngkmax)) ! apwalm : APW matching coefficients ! (in,complex(ngkmax,apwordmax,lmmaxapw,natmtot)) ! evalfv : first-variational eigenvalues (out,real(nstfv)) ! evecfv : first-variational eigenvectors (out,complex(nmatmax,nstfv)) ! !DESCRIPTION: ! Solves the eigenvalue equation, ! $$ (H-\epsilon O)b=0, $$ ! for the all the first-variational states of the input $k$-point. ! ! !REVISION HISTORY: ! Created March 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: nmatp,ngp integer, intent(in) :: igpig(ngkmax) real(8), intent(in) :: vpc(3) real(8), intent(in) :: vgpc(3,ngkmax) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) real(8), intent(out) :: evalfv(nstfv) complex(8), intent(out) :: evecfv(nmatmax,nstfv) ! local variables integer ias,i real(8) ts0,ts1 ! allocatable arrays complex(8), allocatable :: h(:,:),o(:,:) !-----------------------------------------------! ! Hamiltonian and overlap matrix set up ! !-----------------------------------------------! call timesec(ts0) allocate(h(nmatp,nmatp),o(nmatp,nmatp)) !$OMP PARALLEL SECTIONS DEFAULT(SHARED) PRIVATE(ias,i) !$OMP SECTION ! Hamiltonian do i=1,nmatp h(1:i,i)=0.d0 end do do ias=1,natmtot call hmlaa(ias,ngp,apwalm,nmatp,h) call hmlalo(ias,ngp,apwalm,nmatp,h) call hmllolo(ias,ngp,nmatp,h) end do call hmlistl(ngp,igpig,vgpc,nmatp,h) !$OMP SECTION ! overlap do i=1,nmatp o(1:i,i)=0.d0 end do do ias=1,natmtot call olpaa(ias,ngp,apwalm,nmatp,o) call olpalo(ias,ngp,apwalm,nmatp,o) call olplolo(ias,ngp,nmatp,o) end do call olpistl(ngp,igpig,nmatp,o) !$OMP END PARALLEL SECTIONS call timesec(ts1) !$OMP ATOMIC timemat=timemat+ts1-ts0 !---------------------------------------! ! solve the eigenvalue equation ! !---------------------------------------! if (tefvr) then ! system has inversion symmetry: use real symmetric matrix eigen solver call eveqnfvr(nmatp,ngp,vpc,h,o,evalfv,evecfv) else ! no inversion symmetry: use complex Hermitian matrix eigen solver call eveqnfvz(nmatp,h,o,evalfv,evecfv) end if deallocate(h,o) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/ggair_sp_1.f900000644002504400250440000000005012337331323016531 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggair_sp_1.f900000644002504400250440000001044012337331323017274 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggair_sp_1 ! !INTERFACE: subroutine ggair_sp_1(rhoup,rhodn,grho,gup,gdn,g2up,g2dn,g3rho,g3up,g3dn) ! !INPUT/OUTPUT PARAMETERS: ! rhoup : spin-up density (in,real(ngtot)) ! rhodn : spin-down density (in,real(ngtot)) ! grho : |grad rho| (out,real(ngtot)) ! gup : |grad rhoup| (out,real(ngtot)) ! gdn : |grad rhodn| (out,real(ngtot)) ! g2up : grad^2 rhoup (out,real(ngtot)) ! g2dn : grad^2 rhodn (out,real(ngtot)) ! g3rho : (grad rho).(grad |grad rho|) (out,real(ngtot)) ! g3up : (grad rhoup).(grad |grad rhoup|) (out,real(ngtot)) ! g3dn : (grad rhodn).(grad |grad rhodn|) (out,real(ngtot)) ! !DESCRIPTION: ! Computes $|\nabla\rho|$, $|\nabla\rho^{\uparrow}|$, ! $|\nabla\rho^{\downarrow}|$, $\nabla^2\rho^{\uparrow}$, ! $\nabla^2\rho^{\downarrow}$, $\nabla\rho\cdot(\nabla|\nabla\rho|)$, ! $\nabla\rho^{\uparrow}\cdot(\nabla|\nabla\rho^{\uparrow}|)$ and ! $\nabla\rho^{\downarrow}\cdot(\nabla|\nabla\rho^{\downarrow}|)$ for the ! interstitial charge density, as required by the generalised gradient ! approximation functionals of type 1 for spin-polarised densities. See ! routines {\tt potxc} and {\tt modxcifc}. ! ! !REVISION HISTORY: ! Created October 2004 (JKD) ! Simplified and improved, October 2009 (JKD) !EOP !BOC use modmain implicit none ! arguments real(8), intent(in) :: rhoup(ngtot) real(8), intent(in) :: rhodn(ngtot) real(8), intent(out) :: grho(ngtot) real(8), intent(out) :: gup(ngtot) real(8), intent(out) :: gdn(ngtot) real(8), intent(out) :: g2up(ngtot) real(8), intent(out) :: g2dn(ngtot) real(8), intent(out) :: g3rho(ngtot) real(8), intent(out) :: g3up(ngtot) real(8), intent(out) :: g3dn(ngtot) ! local variables integer ig,ifg,i ! allocatable arrays real(8), allocatable :: gvup(:,:),gvdn(:,:) complex(8), allocatable :: zfft1(:),zfft2(:) allocate(gvup(ngtot,3),gvdn(ngtot,3)) allocate(zfft1(ngtot),zfft2(ngtot)) !----------------! ! rho up ! !----------------! zfft1(:)=rhoup(:) call zfftifc(3,ngridg,-1,zfft1) ! |grad rhoup| do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) gvup(:,i)=dble(zfft2(:)) end do gup(:)=sqrt(gvup(:,1)**2+gvup(:,2)**2+gvup(:,3)**2) ! grad^2 rhoup zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=-(gc(ig)**2)*zfft1(ifg) end do call zfftifc(3,ngridg,1,zfft2) g2up(:)=dble(zfft2(:)) ! (grad rhoup).(grad |grad rhoup|) zfft1(:)=gup(:) call zfftifc(3,ngridg,-1,zfft1) g3up(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) g3up(:)=g3up(:)+gvup(:,i)*dble(zfft2(:)) end do !------------------! ! rho down ! !------------------! zfft1(:)=rhodn(:) call zfftifc(3,ngridg,-1,zfft1) ! |grad rhodn| do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) gvdn(:,i)=dble(zfft2(:)) end do gdn(:)=sqrt(gvdn(:,1)**2+gvdn(:,2)**2+gvdn(:,3)**2) ! grad^2 rhodn zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=-(gc(ig)**2)*zfft1(ifg) end do call zfftifc(3,ngridg,1,zfft2) g2dn(:)=dble(zfft2(:)) ! (grad rhodn).(grad |grad rhodn|) zfft1(:)=gdn(:) call zfftifc(3,ngridg,-1,zfft1) g3dn(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) g3dn(:)=g3dn(:)+gvdn(:,i)*dble(zfft2(:)) end do !-------------! ! rho ! !-------------! ! |grad rho| grho(:)=sqrt((gvup(:,1)+gvdn(:,1))**2 & +(gvup(:,2)+gvdn(:,2))**2 & +(gvup(:,3)+gvdn(:,3))**2) ! (grad rho).(grad |grad rho|) zfft1(:)=grho(:) call zfftifc(3,ngridg,-1,zfft1) g3rho(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) g3rho(:)=g3rho(:)+(gvup(:,i)+gvdn(:,i))*dble(zfft2(:)) end do deallocate(gvup,gvdn,zfft1,zfft2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/symvect.f900000644002504400250440000000005012337331323016210 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/symvect.f900000644002504400250440000000267112337331323016762 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: symvect ! !INTERFACE: subroutine symvect(tspin,vc) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! tspin : .true. if the global spin rotations should be used instead of the ! spatial rotations (in,logical) ! vc : vectors in Cartesian coordinates for all atoms (in,real(3,natmtot)) ! !DESCRIPTION: ! Symmetrises a 3-vector at each atomic site by rotating and averaging over ! equivalent atoms. Depending on {\tt tspin}, either the spatial or spin part ! of the crystal symmetries are used. ! ! !REVISION HISTORY: ! Created June 2004 (JKD) ! Modified for spin rotations, May 2008 (JKD) !EOP !BOC implicit none ! arguments logical, intent(in) :: tspin real(8), intent(inout) :: vc(3,natmtot) ! local variables integer is,ia,ja,ias,jas integer isym,lsp real(8) v(3),t1 ! automatic arrays real(8) vs(3,natmtot) ! make symmetric average vs(:,:)=0.d0 do isym=1,nsymcrys lsp=lsplsymc(isym) if (tspin) lsp=lspnsymc(isym) do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ja=ieqatom(ia,is,isym) jas=idxas(ja,is) call r3mv(symlatc(:,:,lsp),vc(:,jas),v) vs(:,ias)=vs(:,ias)+v(:) end do end do end do ! normalise t1=1.d0/dble(nsymcrys) vc(:,:)=t1*vs(:,:) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/energy.f900000644002504400250440000000005012337331322016006 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/energy.f900000644002504400250440000002076512337331322016564 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: energy ! !INTERFACE: subroutine energy ! !USES: use modmain use moddftu use modtest ! !DESCRIPTION: ! Computes the total energy and its individual contributions. The kinetic ! energy is given by ! $$ T_s=\sum_i n_i\epsilon_i-\int\rho({\bf r})[v_{\rm C}({\bf r}) ! +v_{\rm xc}({\bf r})]d{\bf r}-\int {\bf m}({\bf r})\cdot ! ({\bf B}_{\rm xc}({\bf r})+{\bf B}_{\rm ext}({\bf r}))d{\bf r}, $$ ! where $n_i$ are the occupancies and $\epsilon_i$ are the eigenvalues of both ! the core and valence states; $\rho$ is the density; ${\bf m}$ is the ! magnetisation density; $v_{\rm C}$ is the Coulomb potential; $v_{\rm xc}$ ! and ${\bf B}_{\rm xc}$ are the exchange-correlation potential and magnetic ! field, respectively; and ${\bf B}_{\rm ext}$ is the external magnetic field. ! The Hartree, electron-nuclear and nuclear-nuclear electrostatic energies are ! combined into the Coulomb energy: ! \begin{align*} ! E_{\rm C}&=E_{\rm H}+E_{\rm en}+E_{\rm nn} \\ ! &=\frac{1}{2}V_{\rm C}+E_{\rm Mad}, ! \end{align*} ! where ! $$ V_{\rm C}=\int\rho({\bf r})v_{\rm C}({\bf r})d{\bf r} $$ ! is the Coulomb potential energy. The Madelung energy is given by ! $$ E_{\rm Mad}=\frac{1}{2}\sum_{\alpha}z_{\alpha}R_{\alpha}, $$ ! where ! $$ R_{\alpha}=\lim_{r\rightarrow 0}\left(v^{\rm C}_{\alpha;00}(r)Y_{00} ! +\frac{z_{\alpha}}{r}\right) $$ ! for atom $\alpha$, with $v^{\rm C}_{\alpha;00}$ being the $l=0$ component of ! the spherical harmonic expansion of $v_{\rm C}$ in the muffin-tin, and ! $z_{\alpha}$ is the nuclear charge. Using the nuclear-nuclear energy ! determined at the start of the calculation, the electron-nuclear and Hartree ! energies can be isolated with ! $$ E_{\rm en}=2\left(E_{\rm Mad}-E_{\rm nn}\right) $$ ! and ! $$ E_{\rm H}=\frac{1}{2}(E_{\rm C}-E_{\rm en}). $$ ! Finally, the total energy is ! $$ E=T_s+E_{\rm C}+E_{\rm xc}, $$ ! where $E_{\rm xc}$ is obtained either by integrating the ! exchange-correlation energy density, or in the case of exact exchange, the ! explicit calculation of the Fock exchange integral. The energy from the ! external magnetic fields in the muffin-tins, {\tt bfcmt}, is always removed ! from the total since these fields are non-physical: their field lines do not ! close. The energy of the physical external field, {\tt bfieldc}, is also not ! included in the total because this field, like those in the muffin-tins, is ! used for breaking spin symmetry and taken to be infintesimal. If this field ! is intended to be finite, then the associated energy, {\tt engybext}, should ! be added to the total by hand. See {\tt potxc}, {\tt exxengy} and related ! subroutines. ! ! !REVISION HISTORY: ! Created May 2003 (JKD) !EOP !BOC implicit none ! local variables integer ik,ist,idm,jdm,n2,i integer is,ia,ias,nrc,nrci real(8) cb,vn,sum,f complex(8) z1 ! allocatable arrays real(8), allocatable :: rfmt(:,:,:) complex(8), allocatable :: evecsv(:,:),c(:,:) ! external functions real(8) rfinp complex(8) zdotc external rfinp,zdotc ! coupling constant of the external field (g_e/4c) cb=gfacte/(4.d0*solsc) !-----------------------------------------------! ! exchange-correlation potential energy ! !-----------------------------------------------! engyvxc=rfinp(1,rhomt,vxcmt,rhoir,vxcir) !-----------------------------------------------------! ! exchange-correlation effective field energy ! !-----------------------------------------------------! engybxc=0.d0 do idm=1,ndmag engybxc=engybxc+rfinp(1,magmt(:,:,:,idm),bxcmt(:,:,:,idm),magir(:,idm), & bxcir(:,idm)) end do !------------------------------------------! ! external magnetic field energies ! !------------------------------------------! engybext=0.d0 do idm=1,ndmag if (ncmag) then jdm=idm else jdm=3 end if ! energy of physical global field engybext=engybext+cb*momtot(idm)*bfieldc(jdm) end do !----------------------------------! ! Coulomb potential energy ! !----------------------------------! engyvcl=rfinp(1,rhomt,vclmt,rhoir,vclir) !-----------------------! ! Madelung term ! !-----------------------! engymad=0.d0 do is=1,nspecies ! compute the bare nucleus potential at the origin call potnucl(ptnucl,1,spr(:,is),spzn(is),vn) do ia=1,natoms(is) ias=idxas(ia,is) engymad=engymad+0.5d0*spzn(is)*(vclmt(1,1,ias)*y00-vn) end do end do !---------------------------------------------! ! electron-nuclear interaction energy ! !---------------------------------------------! engyen=2.d0*(engymad-engynn) !------------------------! ! Hartree energy ! !------------------------! engyhar=0.5d0*(engyvcl-engyen) !------------------------! ! Coulomb energy ! !------------------------! engycl=engynn+engyen+engyhar !-------------------------! ! exchange energy ! !-------------------------! if ((xctype(1).lt.0).or.(task.eq.5)) then ! exact exchange for OEP-EXX or Hartree-Fock on last self-consistent loop if (tlast) then call exxengy ! mix exact and DFT exchange energies for hybrid functionals if (hybrid) then engyx=engyx*hybridc engyx=engyx+rfinp(1,rhomt,exmt,rhoir,exir) end if else engyx=0.d0 end if else ! exchange energy from the density engyx=rfinp(1,rhomt,exmt,rhoir,exir) end if !----------------------------! ! correlation energy ! !----------------------------! if (task.eq.5) then if (hybrid) then ! fraction of DFT correlation energy for hybrid functionals engyc=rfinp(1,rhomt,ecmt,rhoir,ecir) else ! zero correlation energy for pure Hartree-Fock engyc=0.d0 end if else ! correlation energy from the density engyc=rfinp(1,rhomt,ecmt,rhoir,ecir) end if !----------------------! ! DFT+U energy ! !----------------------! engydu=0.d0 if (dftu.ne.0) then do i=1,ndftu is=idftu(1,i) do ia=1,natoms(is) engydu=engydu+engyadu(ia,i) end do end do end if !----------------------------! ! sum of eigenvalues ! !----------------------------! ! core eigenvalues evalsum=0.d0 do ias=1,natmtot is=idxis(ias) do ist=1,spnst(is) if (spcore(ist,is)) evalsum=evalsum+occcr(ist,ias)*evalcr(ist,ias) end do end do ! valence eigenvalues do ik=1,nkpt do ist=1,nstsv evalsum=evalsum+wkpt(ik)*occsv(ist,ik)*evalsv(ist,ik) end do end do !------------------------! ! kinetic energy ! !------------------------! ! core electron kinetic energy call energykncr ! total electron kinetic energy if (task.eq.5) then ! Hartree-Fock case engykn=engykncr ! kinetic energy from valence states allocate(evecsv(nstsv,nstsv)) allocate(c(nstsv,nstsv)) do ik=1,nkpt call getevecsv(vkl(:,ik),evecsv) call zgemm('N','N',nstsv,nstsv,nstsv,zone,kmatc(:,:,ik),nstsv,evecsv, & nstsv,zzero,c,nstsv) do ist=1,nstsv z1=zdotc(nstsv,evecsv(:,ist),1,c(:,ist),1) engykn=engykn+wkpt(ik)*occsv(ist,ik)*dble(z1) end do end do deallocate(evecsv,c) else ! Kohn-Sham case allocate(rfmt(lmmaxvr,nrmtmax,natmtot)) sum=0.d0 do idm=1,ndmag do ias=1,natmtot is=idxis(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) call rfsht(nrc,nrci,1,bsmt(:,:,ias,idm),lradstp,rfmt(:,:,ias)) end do call rfmtctof(rfmt) sum=sum+rfinp(1,magmt(:,:,:,idm),rfmt,magir(:,idm),bsir(:,idm)) end do ! remove fixed tensor moment potential matrix contribution if (ftmtype.ne.0) then n2=(lmmaxdm*nspinor)**2 do ias=1,natmtot z1=zdotc(n2,dmatmt(:,:,:,:,ias),1,vmftm(:,:,:,:,ias),1) sum=sum+dble(z1) end do end if engykn=evalsum-engyvcl-engyvxc-sum deallocate(rfmt) end if !-------------------------------! ! entropic contribution ! !-------------------------------! entrpy=0.d0 engyts=0.d0 ! non-zero only for the Fermi-Dirac smearing function if (stype.eq.3) then sum=0.d0 do ik=1,nkpt do ist=1,nstsv f=occsv(ist,ik)/occmax if ((f.gt.0.d0).and.(f.lt.1.d0)) then sum=sum+wkpt(ik)*(f*log(f)+(1.d0-f)*log(1.d0-f)) end if end do end do ! entropy entrpy=-occmax*kboltz*sum ! contribution to free energy engyts=-swidth*entrpy/kboltz end if !----------------------! ! total energy ! !----------------------! engytot=engykn+0.5d0*engyvcl+engymad+engyx+engyc+engyts ! add the DFT+U correction if required if (dftu.ne.0) engytot=engytot+engydu ! write total energy to test file call writetest(0,'total energy',tol=1.d-4,rv=engytot) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writetm3du.f900000644002504400250440000000005012337331324016626 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writetm3du.f900000644002504400250440000001027612337331324017400 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writetm3du ! !INTERFACE: subroutine writetm3du(fnum) ! !USES: use modmain use moddftu use modtest ! !DESCRIPTION: ! Decompose the density matrix and the DFT+$U$ Hartree-Fock energy in 3-index ! tensor moments components, see {\it Phys. Rev. B} {\bf 80}, 035121 (2009). ! ! !REVISION HISTORY: ! Created April 2008 (F. Cricchio and L. Nordstrom) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum ! local variables integer is,ia,ias,lm,i integer l,p,k,r,rmin,t real(8) ehf,vh,vx,w2,t1 real(8) tm3ptot,tm3p,tm3p0 ! allocatable arrays real(8), allocatable :: ex(:,:,:,:),tm32(:,:,:,:) complex(8), allocatable :: tm3(:) if (.not.spinpol) then write(*,*) write(*,'("Error(writetm3du): spin-polarisation must be enabled")') write(*,*) stop end if if (iscl.le.1) then write(fnum,*) write(fnum,'("Tensor moment decomposition of density matrix and Hartree-Fock & &energy")') write(fnum,'(" (see Phys. Rev. B. 80, 035121 (2009))")') write(fnum,'(" W.W = modulus square of tensor moment")') write(fnum,'(" Eh = Hartree energy term")') write(fnum,'(" Ex = exchange energy term")') write(fnum,'(" Pol = polarisation of density matrix")') end if if (iscl.ge.1) then write(fnum,*) write(fnum,'("+--------------------+")') write(fnum,'("| Loop number : ",I4," |")') iscl write(fnum,'("+--------------------+")') end if ! allocate arrays lm=2*lmaxdm+1 allocate(ex(0:2*lmaxdm,0:1,0:lm,natmtot)) allocate(tm32(0:2*lmaxdm,0:1,0:lm,natmtot)) allocate(tm3(-lmmaxdm:lmmaxdm)) tm32(:,:,:,:)=0.d0 ex(:,:,:,:)=0.d0 tm3p0=0.d0 ! loop over DFT+U entries do i=1,ndftu is=idftu(1,i) l=idftu(2,i) do ia=1,natoms(is) ias=idxas(ia,is) ! write info to TMDFTU.OUT write(fnum,*) write(fnum,'("Species : ",I4," (",A,"), atom : ",I4)') is, & trim(spsymb(is)),ia write(fnum,'(" l = ",I2)') l ! zero total Hartree-Fock energy ehf=0.d0 ! zero total polarisation tm3ptot=0.d0 write(fnum,*) do k=0,2*l do p=0,1 rmin=abs(k-p) do r=rmin,k+p ! decompose density matrix in 3-index tensor moment components call dmtotm3(l,nspinor,k,p,r,lmmaxdm,dmatmt(:,:,:,:,ias),tm3) w2=0.d0 ! calculate modulus square of tensor moment do t=-r,r w2=w2+dble((-1)**t)*dble(tm3(-t)*tm3(t)) end do ! potential energy components call pottm3(i,k,p,r,vh,vx) ! save square of tensor modulus and exchange energy tm32(k,p,r,ias)=w2 ex(k,p,r,ias)=vx*w2 ! polarisation terms call tm3pol(l,k,p,r,w2,tm3p) ! write square of tensor modulus; Hartree and exchange energy; and polarisation write(fnum,'(" k = ",I2,", p = ",I2,", r = ",I2)') k,p,r if ((k+p+r).eq.0) then ! for k,p,r = 0 save reference polarisation tm3p0=tm3p ! for k,p,r = 0 do not write out the polarisation write(fnum,'(" W.W =",F14.8,", Eh =",F14.8,", Ex =",F14.8)') w2, & vh*w2,vx*w2 else ! relative polarisation t1=tm3p/tm3p0 write(fnum,'(" W.W =",F14.8,", Eh =",F14.8,", Ex =",F14.8,& &", Pol =",F14.8)') w2,vh*w2,vx*w2,t1 ! total relative polarisation (skipping 000 component) tm3ptot=tm3ptot+t1 end if ehf=ehf+(vh+vx)*w2 do t=-r,r ! write out single components of tensor moments write(fnum,'(" t = ",I2," : ",2F14.8)') t,tm3(t) end do write(fnum,*) end do end do end do write(fnum,*) write(fnum,'(" Total Hartree-Fock energy (without DC correction) : ",& &F14.8)') ehf write(fnum,'(" Total polarisation of density matrix : ",F14.8)') tm3ptot write(fnum,*) ! end loop over atoms and species end do end do call flushifc(fnum) ! write test files if required if (test) then t1=sqrt(sum(tm32(:,:,:,:)**2)) call writetest(820,'Norm of tensor moments',tol=1.d-4,rv=t1) t1=sqrt(sum(ex(:,:,:,:)**2)) call writetest(830,'Norm of DFT+U Hartree-Fock exchange energies',tol=1.d-4, & rv=t1) end if deallocate(ex,tm32,tm3) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writeeval.f900000644002504400250440000000005012337331323016520 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writeeval.f900000644002504400250440000000270512337331323017270 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: writeeval ! !INTERFACE: subroutine writeeval ! !USES: use modmain ! !DESCRIPTION: ! Outputs the second-variational eigenvalues and occupation numbers to the ! file {\tt EIGVAL.OUT}. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! local variables integer ik,ist,is,ia,ias ! write out the valence eigenvalues open(50,file='EIGVAL'//trim(filext),action='WRITE',form='FORMATTED') write(50,'(I6," : nkpt")') nkpt write(50,'(I6," : nstsv")') nstsv do ik=1,nkpt write(50,*) write(50,'(I6,3G18.10," : k-point, vkl")') ik,vkl(:,ik) write(50,'(" (state, eigenvalue and occupancy below)")') do ist=1,nstsv write(50,'(I6,2G18.10)') ist,evalsv(ist,ik),occsv(ist,ik) end do write(50,*) end do close(50) ! write out the core eigenvalues open(50,file='EVALCORE'//trim(filext),action='WRITE',form='FORMATTED') do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is,trim(spsymb(is)),ia do ist=1,spnst(is) if (spcore(ist,is)) then write(50,'(" n = ",I2,", l = ",I2,", k = ",I2," : ",G18.10)') & spn(ist,is),spl(ist,is),spk(ist,is),evalcr(ist,ias) end if end do end do end do close(50) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/xc_c_tb09.f900000644002504400250440000000005012337331324016271 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/xc_c_tb09.f900000644002504400250440000000372212337331324017041 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine xc_c_tb09 use modmain implicit none ! local variables integer is,ias,nr,nri,ir integer lmmax,itp,i real(8), parameter :: alpha=-0.012d0, beta=1.023d0 real(8) t1 ! allocatable arrays real(8), allocatable :: grfmt(:,:,:,:),grfir(:,:) real(8), allocatable :: rfmt(:,:,:),rfir(:) real(8), allocatable :: rfmt1(:,:),rfmt2(:,:,:) ! external functions real(8) rfint external rfint ! if Tran-Blaha constant has been read in return if (tc_tb09) return ! compute the gradient of the density allocate(grfmt(lmmaxvr,nrmtmax,natmtot,3)) allocate(grfir(ngtot,3)) call gradrf(rhomt,rhoir,grfmt,grfir) allocate(rfmt(lmmaxvr,nrmtmax,natmtot),rfir(ngtot)) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(rfmt1,rfmt2) & !$OMP PRIVATE(is,nr,nri,i,ir) & !$OMP PRIVATE(lmmax,itp,t1) !$OMP DO do ias=1,natmtot allocate(rfmt1(lmmaxvr,nrmtmax),rfmt2(lmmaxvr,nrmtmax,3)) is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) ! convert muffin-tin density to spherical coordinates call rbsht(nr,nri,1,rhomt(:,:,ias),1,rfmt1) ! convert muffin-tin gradient to spherical coordinates do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,ias,i),1,rfmt2(:,:,i)) end do ! integrand in muffin-tin lmmax=lmmaxinr do ir=1,nr do itp=1,lmmax t1=sqrt(rfmt2(itp,ir,1)**2+rfmt2(itp,ir,2)**2+rfmt2(itp,ir,3)**2) rfmt1(itp,ir)=t1/rfmt1(itp,ir) end do if (ir.eq.nri) lmmax=lmmaxvr end do ! convert to spherical harmonics call rfsht(nr,nri,1,rfmt1,1,rfmt(:,:,ias)) deallocate(rfmt1,rfmt2) end do !$OMP END DO !$OMP END PARALLEL ! integrand in interstitial do ir=1,ngtot t1=sqrt(grfir(ir,1)**2+grfir(ir,2)**2+grfir(ir,3)**2) rfir(ir)=t1/rhoir(ir) end do ! integrate over the unit cell t1=rfint(rfmt,rfir) ! set the constant c_tb09=alpha+beta*sqrt(abs(t1)/omega) deallocate(grfmt,grfir,rfmt,rfir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/oepvcl.f900000644002504400250440000000005012337331324016007 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/oepvcl.f900000644002504400250440000000204212337331324016551 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine oepvcl(vclcv,vclvv) use modmain use modmpi implicit none ! arguments complex(8), intent(out) :: vclcv(ncrmax,natmtot,nstsv,nkpt) complex(8), intent(out) :: vclvv(nstsv,nstsv,nkpt) ! local variables integer ik,ncv,nvv,lp !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkpt ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle !$OMP CRITICAL write(*,'("Info(oepvcl): ",I6," of ",I6," k-points")') ik,nkpt !$OMP END CRITICAL call oepvclk(ik,vclcv(:,:,:,ik),vclvv(:,:,ik)) end do !$OMP END DO !$OMP END PARALLEL ! broadcast matrix elements to all other processes ncv=ncrmax*natmtot*nstsv nvv=nstsv*nstsv do ik=1,nkpt lp=mod(ik-1,np_mpi) call mpi_bcast(vclcv(:,:,:,ik),ncv,mpi_double_complex,lp,mpi_comm_kpt,ierror) call mpi_bcast(vclvv(:,:,ik),nvv,mpi_double_complex,lp,mpi_comm_kpt,ierror) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/vecplot.f900000644002504400250440000000005012337331323016172 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/vecplot.f900000644002504400250440000001026112337331323016736 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: vecplot ! !INTERFACE: subroutine vecplot ! !DESCRIPTION: ! Outputs a 2D or 3D vector field for plotting. The vector field can be the ! magnetisation vector field, ${\bf m}$; the exchange-correlation magnetic ! field, ${\bf B}_{\rm xc}$; or the electric field ! ${\bf E}\equiv-\nabla V_{\rm C}$. The magnetisation is obtained from the ! spin density matrix, $\rho_{\alpha\beta}$, by solving ! $$ \rho_{\alpha\beta}({\bf r})=\frac{1}{2}\left(n({\bf r}) ! \delta_{\alpha\beta}+\sigma\cdot {\bf m}({\bf r})\right), $$ ! where $n\equiv\tr\rho_{\alpha\beta}$ is the total density. In the case of 2D ! plots, the magnetisation vectors are still 3D, but are in the coordinate ! system of the plane. ! ! !REVISION HISTORY: ! Created August 2004 (JKD) ! Included electric field plots, August 2006 (JKD) !EOP !BOC use modmain implicit none ! allocatable arrays real(8), allocatable :: rvfmt(:,:,:,:) real(8), allocatable :: rvfir(:,:) ! initialise universal variables call init0 if ((task.eq.72).or.(task.eq.73).or.(task.eq.82).or.(task.eq.83)) then if (.not.spinpol) then write(*,*) write(*,'("Error(vecplot): spin-unpolarised magnetisation/field is zero")') write(*,*) stop end if end if ! read magnetisation from file call readstate allocate(rvfmt(lmmaxvr,nrmtmax,natmtot,3),rvfir(ngtot,3)) select case(task) case(72,73) ! magnetisation if (ncmag) then ! non-collinear rvfmt(:,:,:,:)=magmt(:,:,:,:) rvfir(:,:)=magir(:,:) else ! collinear rvfmt(:,:,:,1:2)=0.d0 rvfir(:,1:2)=0.d0 rvfmt(:,:,:,3)=magmt(:,:,:,1) rvfir(:,3)=magir(:,1) end if case(82,83) ! exchange-correlation magnetic field if (ncmag) then ! non-collinear rvfmt(:,:,:,:)=bxcmt(:,:,:,:) rvfir(:,:)=bxcir(:,:) else ! collinear rvfmt(:,:,:,1:2)=0.d0 rvfir(:,1:2)=0.d0 rvfmt(:,:,:,3)=bxcmt(:,:,:,1) rvfir(:,3)=bxcir(:,1) end if case(142,143) ! electric field call gradrf(vclmt,vclir,rvfmt,rvfir) ! use the negative of the gradient rvfmt(:,:,:,:)=-rvfmt(:,:,:,:) rvfir(:,:)=-rvfir(:,:) case(152,153) if (ndmag.lt.3) then write(*,*) write(*,'("Error(vecplot): collinear m(r)xB(r) is zero")') write(*,*) stop end if call rvfcross(magmt,magir,bxcmt,bxcir,rvfmt,rvfir) end select select case(task) case(72,82,142,152) ! determine the projection of the magnetisation/field onto the plotting plane call proj2d(rvfmt,rvfir) if (task.eq.72) then open(50,file='MAG2D.OUT',action='WRITE',form='FORMATTED') else if (task.eq.82) then open(50,file='BXC2D.OUT',action='WRITE',form='FORMATTED') else if (task.eq.142) then open(50,file='EF2D.OUT',action='WRITE',form='FORMATTED') else open(50,file='MCBXC2D.OUT',action='WRITE',form='FORMATTED') end if call plot2d(50,3,rvfmt,rvfir) close(50) write(*,*) write(*,'("Info(vecplot):")') if (task.eq.72) then write(*,'(" 2D magnetisation density written to MAG2D.OUT")') else if (task.eq.82) then write(*,'(" 2D exchange-correlation field written to BXC2D.OUT")') else if (task.eq.142) then write(*,'(" 2D electric field written to EF2D.OUT")') else write(*,'(" 2D m(r) x B_xc(r) written to MCBXC2D.OUT")') end if case(73,83,143,153) if (task.eq.73) then open(50,file='MAG3D.OUT',action='WRITE',form='FORMATTED') else if (task.eq.83) then open(50,file='BXC3D.OUT',action='WRITE',form='FORMATTED') else if (task.eq.143) then open(50,file='EF3D.OUT',action='WRITE',form='FORMATTED') else open(50,file='MCBXC3D.OUT',action='WRITE',form='FORMATTED') end if call plot3d(50,3,rvfmt,rvfir) close(50) write(*,*) write(*,'("Info(vecplot):")') if (task.eq.73) then write(*,'(" 3D magnetisation density written to MAG3D.OUT")') else if (task.eq.83) then write(*,'(" 3D exchange-correlation field written to BXC3D.OUT")') else if (task.eq.143) then write(*,'(" 3D electric field written to EF3D.OUT")') else write(*,'(" 3D m(r) x B_xc(r) written to MCBXC3D.OUT")') end if end select deallocate(rvfmt,rvfir) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gendvsig.f900000644002504400250440000000005012337331324016325 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gendvsig.f900000644002504400250440000000112312337331324017066 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gendvsig use modmain use modphonon implicit none ! local variables integer ig,ifg ! allocatable arrays complex(8), allocatable :: zfft(:) allocate(zfft(ngtot)) zfft(:)=dvsir(:)*cfunir(:)+vsir(:)*dcfunir(:) ! Fourier transform to G+q-space call zfftifc(3,ngridg,-1,zfft) ! store in global array do ig=1,ngvec ifg=igfft(ig) dvsig(ig)=zfft(ifg) end do deallocate(zfft) return end subroutine elk-2.3.22/src/PaxHeaders.22528/modpw.f900000644002504400250440000000005012337331322015643 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modpw.f900000644002504400250440000000332312337331322016410 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modpw !----------------------------! ! H-vector variables ! !----------------------------! ! reduceh is .true. if the H-vectors are reduced with the crystal symmetries logical reduceh ! H-vector cut-off for interstitial potential and density real(8) hmaxvr ! H-vector grid sizes integer ngridh(3) ! total number of H-vectors integer nhtot ! integer grid intervals for each direction integer inthv(2,3) ! number of H-vectors with |H| < hmaxvr integer nhvec ! H-vector integer coordinates (i1,i2,i3) integer, allocatable :: ivh(:,:) ! H-vector multiplicity after symmetry reduction integer, allocatable :: mulh(:) ! H-vectors in Cartesian coordinates real(8), allocatable :: vhc(:,:) ! length of H-vectors real(8), allocatable :: hc(:) ! H-vector transformation matrix real(8) vhmat(3,3) !------------------------------! ! H+k-vector variables ! !------------------------------! ! maximum |H+k| cut-off for plane wave real(8) hkmax ! number of H+k-vectors for plane waves integer, allocatable :: nhk(:,:) ! maximum number of H+k-vectors over all k-points integer nhkmax ! index from H+k-vectors to G-vectors integer, allocatable :: ihkig(:,:,:) ! H+k-vectors in lattice coordinates real(8), allocatable :: vhkl(:,:,:,:) ! H+k-vectors in Cartesian coordinates real(8), allocatable :: vhkc(:,:,:,:) ! length of H+k-vectors real(8), allocatable :: hkc(:,:,:) ! (theta, phi) coordinates of H+k-vectors real(8), allocatable :: tphkc(:,:,:,:) ! structure factors for the H+k-vectors complex(8), allocatable :: sfachk(:,:,:,:) end module elk-2.3.22/src/PaxHeaders.22528/eulerrot.f900000644002504400250440000000005012337331323016357 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/eulerrot.f900000644002504400250440000000216212337331323017124 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: eulerrot ! !INTERFACE: subroutine eulerrot(ang,rot) ! !INPUT/OUTPUT PARAMETERS: ! ang : Euler angles (alpha, beta, gamma) (in,real(3)) ! rot : rotation matrix (out,real(3,3)) ! !DESCRIPTION: ! Given a set of Euler angles, $(\alpha,\beta,\gamma)$, this routine ! determines the corresponding $3\times 3$ rotation matrix. The so-called ! `y-convention' is taken for the Euler angles. See the routine {\tt roteuler} ! for details. ! ! !REVISION HISTORY: ! Created January 2014 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: ang(3) real(8), intent(out) :: rot(3,3) ! local variables real(8) sa,sb,sg,ca,cb,cg sa=sin(ang(1)); sb=sin(ang(2)); sg=sin(ang(3)) ca=cos(ang(1)); cb=cos(ang(2)); cg=cos(ang(3)) rot(1,1)=cg*cb*ca-sg*sa rot(1,2)=cg*cb*sa+sg*ca rot(1,3)=-cg*sb rot(2,1)=-sg*cb*ca-cg*sa rot(2,2)=-sg*cb*sa+cg*ca rot(2,3)=sg*sb rot(3,1)=sb*ca rot(3,2)=sb*sa rot(3,3)=cb return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/findscq.f900000644002504400250440000000005012337331323016145 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findscq.f900000644002504400250440000000704112337331323016713 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine findscq(iq,avec0,nsc,vsc) use modmain implicit none ! arguments integer, intent(in) :: iq real(8), intent(in) :: avec0(3,3) integer, intent(out) :: nsc real(8), intent(out) :: vsc(3,nqptnr) ! local variables integer i1,i2,i3 integer scl(3,3),i,n real(8) dmin,t1 real(8) v1(3),v2(3) ! check for Gamma-point phonon if (iq.eq.iq0) then scl(:,:)=0 scl(1,1)=1 scl(2,2)=1 scl(3,3)=1 nsc=1 goto 10 end if ! find the first lattice vector dmin=1.d8 do i1=-ngridq(1),ngridq(1) do i2=-ngridq(2),ngridq(2) do i3=-ngridq(3),ngridq(3) t1=dble(i1)*vql(1,iq)+dble(i2)*vql(2,iq)+dble(i3)*vql(3,iq) if (abs(t1-nint(t1)).lt.epslat) then v1(:)=dble(i1)*avec0(:,1)+dble(i2)*avec0(:,2)+dble(i3)*avec0(:,3) t1=sqrt(v1(1)**2+v1(2)**2+v1(3)**2) if ((t1.lt.dmin).and.(t1.gt.epslat)) then scl(1,1)=i1 scl(2,1)=i2 scl(3,1)=i3 dmin=t1 end if end if end do end do end do ! find the second lattice vector dmin=1.d8 do i1=-ngridq(1),ngridq(1) do i2=-ngridq(2),ngridq(2) do i3=-ngridq(3),ngridq(3) t1=dble(i1)*vql(1,iq)+dble(i2)*vql(2,iq)+dble(i3)*vql(3,iq) if (abs(t1-nint(t1)).lt.epslat) then ! area defined by first two lattice vectors n=(i2*scl(3,1)-i3*scl(2,1))**2 & +(i3*scl(1,1)-i1*scl(3,1))**2 & +(i1*scl(2,1)-i2*scl(1,1))**2 if (n.ne.0) then v1(:)=dble(i1)*avec0(:,1)+dble(i2)*avec0(:,2)+dble(i3)*avec0(:,3) t1=v1(1)**2+v1(2)**2+v1(3)**2 if (t1.lt.dmin) then scl(1,2)=i1 scl(2,2)=i2 scl(3,2)=i3 dmin=t1 end if end if end if end do end do end do ! find the third lattice vector nsc=0 dmin=1.d8 do i1=-ngridq(1),ngridq(1) do i2=-ngridq(2),ngridq(2) do i3=-ngridq(3),ngridq(3) t1=dble(i1)*vql(1,iq)+dble(i2)*vql(2,iq)+dble(i3)*vql(3,iq) if (abs(t1-nint(t1)).lt.epslat) then ! number of primitive unit cells in supercell n=scl(1,2)*(i2*scl(3,1)-i3*scl(2,1)) & +scl(2,2)*(i3*scl(1,1)-i1*scl(3,1)) & +scl(3,2)*(i1*scl(2,1)-i2*scl(1,1)) if (n.ne.0) then v1(:)=dble(i1)*avec0(:,1)+dble(i2)*avec0(:,2)+dble(i3)*avec0(:,3) t1=v1(1)**2+v1(2)**2+v1(3)**2 if (t1.lt.dmin) then nsc=abs(n) scl(1,3)=i1 scl(2,3)=i2 scl(3,3)=i3 dmin=t1 end if end if end if end do end do end do if (nsc.eq.0) goto 30 10 continue ! new lattice vectors do i=1,3 avec(:,i)=dble(scl(1,i))*avec0(:,1) & +dble(scl(2,i))*avec0(:,2) & +dble(scl(3,i))*avec0(:,3) end do ! inverse of lattice vector matrix call r3minv(avec,ainv) ! generate offset vectors for each primitive cell in the supercell n=1 vsc(:,1)=0.d0 do i1=-ngridq(1),ngridq(1) do i2=-ngridq(2),ngridq(2) do i3=-ngridq(3),ngridq(3) if (n.eq.nsc) return v1(:)=dble(i1)*avec0(:,1)+dble(i2)*avec0(:,2)+dble(i3)*avec0(:,3) call r3mv(ainv,v1,v2) call r3frac(epslat,v2) call r3mv(avec,v2,v1) do i=1,n t1=abs(v1(1)-vsc(1,i))+abs(v1(2)-vsc(2,i))+abs(v1(3)-vsc(3,i)) if (t1.lt.epslat) goto 20 end do n=n+1 vsc(:,n)=v1(:) 20 continue end do end do end do 30 continue write(*,*) write(*,'("Error(findscq): unable to generate supercell")') write(*,*) stop end subroutine elk-2.3.22/src/PaxHeaders.22528/i3mtv.f900000644002504400250440000000005012337331323015560 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/i3mtv.f900000644002504400250440000000147012337331323016326 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: i3mtv ! !INTERFACE: subroutine i3mtv(a,x,y) ! !INPUT/OUTPUT PARAMETERS: ! a : input matrix (in,integer(3,3)) ! x : input vector (in,integer(3)) ! y : output vector (out,integer(3)) ! !DESCRIPTION: ! Multiplies the transpose of an integer $3\times 3$ matrix with a vector. ! ! !REVISION HISTORY: ! Created April 2007 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: a(3,3) integer, intent(in) :: x(3) integer, intent(out) :: y(3) y(1)=a(1,1)*x(1)+a(2,1)*x(2)+a(3,1)*x(3) y(2)=a(1,2)*x(1)+a(2,2)*x(2)+a(3,2)*x(3) y(3)=a(1,3)*x(1)+a(2,3)*x(2)+a(3,3)*x(3) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hmlalo.f900000644002504400250440000000005012337331323015772 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/hmlalo.f900000644002504400250440000000262612337331323016544 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hmlalo(ias,ngp,apwalm,ld,h) use modmain implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) integer, intent(in) :: ld complex(8), intent(inout) :: h(*) ! local variables integer is,io,ilo integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3,i,j,k complex(8) zsum is=idxis(ias) do ilo=1,nlorb(is) l1=lorbl(ilo,is) do m1=-l1,l1 lm1=idxlm(l1,m1) j=ngp+idxlo(lm1,ilo,ias) lm3=0 do l3=0,lmaxmat do m3=-l3,l3 lm3=lm3+1 do io=1,apword(l3,is) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyry(lm1,lm2,lm3)*hloa(lm2,io,l3,ilo,ias) end do end if end do ! note that what is actually computed is the Hermitian conjugate of if (abs(dble(zsum))+abs(aimag(zsum)).gt.1.d-14) then k=(j-1)*ld do i=1,ngp k=k+1 h(k)=h(k)+conjg(zsum*apwalm(i,io,lm3,ias)) end do end if end do end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/writeexpmat.f900000644002504400250440000000005012337331324017070 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writeexpmat.f900000644002504400250440000000445012337331324017637 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writeexpmat use modmain implicit none ! local variables integer nk,ik,jk,i,j real(8) a,b ! allocatable arrays complex(8), allocatable :: expmt(:,:,:) complex(8), allocatable :: emat(:,:) ! initialise universal variables call init0 call init1 allocate(expmt(lmmaxvr,nrcmtmax,natmtot)) ! allocate the matrix elements array for < i,k+G+q | exp(iq.r) | j,k > allocate(emat(nstsv,nstsv)) ! read in the density and potentials from file call readstate ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! generate the phase factor function exp(iq.r) in the muffin-tins call genexpmt(vecqc,expmt) ! number of k-points to write out if (kstlist(1,1).le.0) then nk=nkpt else nk=nkstlist end if open(50,file='EXPIQR.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("q-vector (lattice coordinates) :")') write(50,'(3G18.10)') vecql write(50,'("q-vector (Cartesian coordinates) :")') write(50,'(3G18.10)') vecqc write(50,*) write(50,'(I8," : number of k-points")') nk write(50,'(I6," : number of states per k-point")') nstsv do jk=1,nk if (kstlist(1,1).le.0) then ik=jk else ik=kstlist(1,jk) end if if ((ik.le.0).or.(ik.gt.nkpt)) then write(*,*) write(*,'("Error(writeexpiqr): k-point out of range : ",I8)') ik write(*,*) stop end if write(50,*) write(50,'(" k-point (lattice coordinates) :")') write(50,'(3G18.10)') vkl(:,ik) write(50,*) write(50,'(" k-point (Cartesian coordinates) :")') write(50,'(3G18.10)') vkc(:,ik) call genexpmat(vkl(:,ik),expmt,emat) do i=1,nstsv write(50,*) write(50,'(I6," : state i; state j, <...>, |<...>|^2 below")') i do j=1,nstsv a=dble(emat(i,j)) b=aimag(emat(i,j)) write(50,'(I6,3G18.10)') j,a,b,a**2+b**2 end do end do ! end loop over k-points end do close(50) write(*,*) write(*,'("Info(writeexpmat)")') write(*,'(" < i,k+q | exp(iq.r) | j,k > matrix elements written to & &EXPIQR.OUT")') write(*,'(" for the q-vector in vecql and all k-points in kstlist")') deallocate(expmt,emat) return end subroutine elk-2.3.22/src/PaxHeaders.22528/gradzf.f900000644002504400250440000000005012337331324015774 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gradzf.f900000644002504400250440000000215612337331324016544 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gradzf(zfmt,zfir,gzfmt,gzfir) use modmain implicit none ! arguments complex(8), intent(in) :: zfmt(lmmaxvr,nrmtmax,natmtot),zfir(ngtot) complex(8), intent(out) :: gzfmt(lmmaxvr,nrmtmax,natmtot,3),gzfir(ngtot,3) ! local variables integer is,ias,nr integer ig,ifg,i complex(8) z1 ! allocatable arrays complex(8), allocatable :: gzfmt1(:,:,:),zfft(:) ! muffin-tin gradient allocate(gzfmt1(lmmaxvr,nrmtmax,3)) do ias=1,natmtot is=idxis(ias) nr=nrmt(is) call gradzfmt(nr,nrmtinr(is),spr(:,is),zfmt(:,:,ias),nrmtmax,gzfmt1) do i=1,3 gzfmt(:,1:nr,ias,i)=gzfmt1(:,1:nr,i) end do end do deallocate(gzfmt1) ! interstitial gradient allocate(zfft(ngtot)) zfft(:)=zfir(:) call zfftifc(3,ngridg,-1,zfft) do i=1,3 gzfir(:,i)=0.d0 do ig=1,ngvec ifg=igfft(ig) z1=zfft(ifg) gzfir(ifg,i)=vgc(i,ig)*cmplx(-aimag(z1),dble(z1),8) end do call zfftifc(3,ngridg,1,gzfir(:,i)) end do deallocate(zfft) return end subroutine elk-2.3.22/src/PaxHeaders.22528/modfxcifc.f900000644002504400250440000000005012337331322016457 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modfxcifc.f900000644002504400250440000000412712337331322017227 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modfxcifc use libxcifc contains subroutine fxcifc(fxctype,n,rho,rhoup,rhodn,fxc,fxcuu,fxcud,fxcdd) implicit none ! mandatory arguments integer, intent(in) :: fxctype(3),n ! optional arguments real(8), optional, intent(in) :: rho(n),rhoup(n),rhodn(n) real(8), optional, intent(out) :: fxc(n),fxcuu(n),fxcud(n),fxcdd(n) ! allocatable arrays real(8), allocatable :: ra(:,:) if (n.le.0) then write(*,*) write(*,'("Error(fxcifc): n <= 0 : ",I8)') n write(*,*) stop end if select case(abs(fxctype(1))) case(0,1) ! f_xc = 0 if (present(fxcuu).and.present(fxcud).and.present(fxcdd)) then fxcuu(:)=0.d0 fxcud(:)=0.d0 fxcdd(:)=0.d0 else if (present(fxc)) then fxc(:)=0.d0 else goto 10 end if case(3) ! Perdew-Wang-Ceperley-Alder if (present(rhoup).and.present(rhodn).and.present(fxcuu).and.present(fxcud) & .and.present(fxcdd)) then ! spin-polarised density call fxc_pwca(n,rhoup,rhodn,fxcuu,fxcud,fxcdd) else if (present(rho).and.present(fxc)) then ! divide spin-unpolarised density into up and down allocate(ra(n,4)) ra(:,1)=0.5d0*rho(:) call fxc_pwca(n,ra(:,1),ra(:,1),ra(:,2),ra(:,3),ra(:,4)) fxc(:)=0.5d0*(ra(:,2)+ra(:,3)) deallocate(ra) else goto 10 end if case(100) ! libxc library functionals if (present(rhoup).and.present(rhodn).and.present(fxcuu).and.present(fxcud) & .and.present(fxcdd)) then ! LSDA call fxcifc_libxc(fxctype,n,rhoup=rhoup,rhodn=rhodn,fxcuu=fxcuu, & fxcud=fxcud,fxcdd=fxcdd) else if (present(rho).and.present(fxc)) then ! LDA call fxcifc_libxc(fxctype,n,rho=rho,fxc=fxc) else goto 10 end if case default write(*,*) write(*,'("Error(fxcifc): response function unavailable for fxctype ",3I8)') & fxctype write(*,*) stop end select return 10 continue write(*,*) write(*,'("Error(fxcifc): missing arguments for exchange-correlation type ",& &3I6)') fxctype(:) write(*,*) stop end subroutine end module elk-2.3.22/src/PaxHeaders.22528/init2.f900000644002504400250440000000005012337331323015543 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/init2.f900000644002504400250440000001005412337331323016307 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine init2 use modmain use modrdm use modvars implicit none ! local variables logical lsym(48) integer isym,is,ia integer ist,ic,m real(8) ts0,ts1 real(8) boxl(3,4),t1 call timesec(ts0) !---------------------! ! q-point set ! !---------------------! ! check if the system is an isolated molecule if (molecule) ngridq(:)=1 ! store the point group symmetries for reducing the q-point set if (reduceq.eq.0) then nsymqpt=1 symqpt(:,:,1)=symlat(:,:,1) else lsym(:)=.false. do isym=1,nsymcrys lsym(lsplsymc(isym))=.true. end do nsymqpt=0 do isym=1,nsymlat if (lsym(isym)) then nsymqpt=nsymqpt+1 symqpt(:,:,nsymqpt)=symlat(:,:,isym) end if end do end if ! OEP, Hartree-Fock, RPA epsilon, TDDFT, BSE or RDMFT if ((xctype(1).lt.0).or.(task.eq.5).or.(task.eq.105).or.(task.eq.180).or. & (task.eq.185).or.(task.eq.188).or.(task.eq.300).or.(task.eq.320).or. & (task.eq.330)) then ngridq(:)=ngridk(:) end if ! allocate the q-point arrays if (allocated(iqmap)) deallocate(iqmap) allocate(iqmap(0:ngridq(1)-1,0:ngridq(2)-1,0:ngridq(3)-1)) if (allocated(iqmapnr)) deallocate(iqmapnr) allocate(iqmapnr(0:ngridq(1)-1,0:ngridq(2)-1,0:ngridq(3)-1)) nqptnr=ngridq(1)*ngridq(2)*ngridq(3) if (allocated(ivq)) deallocate(ivq) allocate(ivq(3,nqptnr)) if (allocated(vql)) deallocate(vql) allocate(vql(3,nqptnr)) if (allocated(vqc)) deallocate(vqc) allocate(vqc(3,nqptnr)) if (allocated(wqpt)) deallocate(wqpt) allocate(wqpt(nqptnr)) ! set up the q-point box (offset should always be zero) boxl(:,:)=0.d0 boxl(1,2)=1.d0; boxl(2,3)=1.d0; boxl(3,4)=1.d0; ! generate the q-point set ! (note that the vectors vql and vqc are in the first Brillouin zone) call genppts(.true.,nsymqpt,symqpt,ngridq,nqptnr,epslat,bvec,boxl,nqpt,iqmap, & iqmapnr,ivq,vql,vqc,wqpt,wqptnr) ! write the q-points to QPOINTS.OUT call writeqpts ! find the index for q = 0 do iq0=1,nqpt t1=sum(abs(vql(:,iq0))) if (t1.lt.epslat) goto 10 end do write(*,*) write(*,'("Error(init2): q = 0 not in q-point set")') write(*,*) stop 10 continue ! write to VARIABLES.OUT call writevars('nsymqpt',iv=nsymqpt) call writevars('symqpt',nv=9*nsymqpt,iva=symqpt) call writevars('ngridq',nv=3,iva=ngridq) call writevars('nqpt',iv=nqpt) call writevars('iqmap',nv=nqptnr,iva=iqmap) call writevars('ivq',nv=3*nqptnr,iva=ivq) call writevars('vql',nv=3*nqptnr,rva=vql) call writevars('wqpt',nv=nqpt,rva=wqpt) !----------------------------------------------------! ! OEP, Hartree-Fock, RDMFT and BSE variables ! !----------------------------------------------------! if ((xctype(1).lt.0).or.(task.eq.5).or.(task.eq.185).or.(task.eq.300).or. & (task.eq.330)) then ! determine the 1/q^2 integral weights if required call genwiq2 ! output the 1/q^2 integrals to WIQ2.OUT call writewiq2 end if if (xctype(1).lt.0) then ! initialise OEP residual magnitude resoep=1.d0 ! find maximum core states over all species ncrmax=0 do is=1,nspecies do ia=1,natoms(is) ic=0 do ist=1,spnst(is) if (spcore(ist,is)) then do m=-spk(ist,is),spk(ist,is)-1 ic=ic+1 end do end if end do ncrmax=max(ncrmax,ic) end do end do ! allocate and zero the complex exchange potential and field if (allocated(zvxmt)) deallocate(zvxmt) allocate(zvxmt(lmmaxvr,nrcmtmax,natmtot)) zvxmt(:,:,:)=0.d0 if (allocated(zvxir)) deallocate(zvxir) allocate(zvxir(ngtot)) zvxir(:)=0.d0 if (spinpol) then if (allocated(zbxmt)) deallocate(zbxmt) allocate(zbxmt(lmmaxvr,nrcmtmax,natmtot,ndmag)) zbxmt(:,:,:,:)=0.d0 if (allocated(zbxir)) deallocate(zbxir) allocate(zbxir(ngtot,ndmag)) zbxir(:,:)=0.d0 end if end if if (task.eq.300) then if (allocated(vclmat)) deallocate(vclmat) allocate(vclmat(nstsv,nstsv,nkpt)) if (allocated(dkdc)) deallocate(dkdc) allocate(dkdc(nstsv,nstsv,nkpt)) end if call timesec(ts1) timeinit=timeinit+ts1-ts0 return end subroutine elk-2.3.22/src/PaxHeaders.22528/writeevbse.f900000644002504400250440000000005012337331324016676 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writeevbse.f900000644002504400250440000000577712337331324017462 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writeevbse use modmain implicit none ! local variables integer ik,a integer iostat,nmbse_ integer lwork,info ! allocatable arrays real(8), allocatable :: rwork(:) complex(8), allocatable :: w(:),vl(:,:),vr(:,:) complex(8), allocatable :: work(:) ! initialise global variables call init0 call init1 ! read Fermi energy from a file call readfermi ! get the eigenvalues from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) end do ! generate the BSE state index arrays call genidxbse ! allocate global BSE arrays if (allocated(evalbse)) deallocate(evalbse) allocate(evalbse(nmbse)) if (allocated(hmlbse)) deallocate(hmlbse) allocate(hmlbse(nmbse,nmbse)) ! read in BSE Hamiltonian matrix open(50,file='HMLBSE.OUT',action='READ',form='UNFORMATTED',status='OLD', & iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(writeevbse): error opening HMLBSE.OUT")') write(*,*) stop end if read(50) nmbse_ if (nmbse.ne.nmbse_) then write(*,*) write(*,'("Error(writeevbse): differing nmbse")') write(*,'(" current : ",I6)') nmbse write(*,'(" HMLBSE.OUT : ",I6)') nmbse_ write(*,*) stop end if read(50) hmlbse close(50) write(*,*) write(*,'("Info(writeevbse): diagonalising the BSE Hamiltonian matrix")') if (bsefull) then ! full non-Hermitian matrix allocate(w(nmbse)) allocate(vl(1,1),vr(nmbse,nmbse)) lwork=2*nmbse allocate(rwork(lwork),work(lwork)) call zgeev('N','V',nmbse,hmlbse,nmbse,w,vl,1,vr,nmbse,work,lwork,rwork,info) if (info.ne.0) then write(*,*) write(*,'("Error(writeevbse): diagonalisation failed")') write(*,'(" ZGEEV returned INFO = ",I8)') info write(*,*) stop end if evalbse(:)=dble(w(:)) hmlbse(:,:)=vr(:,:) deallocate(vl,vr,rwork,work) else ! Hermitian block only allocate(rwork(3*nmbse)) lwork=2*nmbse allocate(work(lwork)) call zheev('V','U',nmbse,hmlbse,nmbse,evalbse,work,lwork,rwork,info) if (info.ne.0) then write(*,*) write(*,'("Error(writeevbse): diagonalisation failed")') write(*,'(" ZHEEV returned INFO = ",I8)') info write(*,*) stop end if deallocate(rwork,work) end if ! write the BSE eigenvectors and eigenvalues to file open(50,file='EVBSE.OUT',action='WRITE',form='UNFORMATTED') write(50) nmbse write(50) evalbse write(50) hmlbse close(50) ! write the BSE eigenvalues to file open(50,file='EIGVAL_BSE.OUT',action='WRITE',form='FORMATTED') write(50,'(I6," : nmbse")') nmbse if (bsefull) then do a=1,nmbse write(50,'(I6,2G18.10)') a,dble(w(a)),aimag(w(a)) end do deallocate(w) else do a=1,nmbse write(50,'(I6,G18.10)') a,evalbse(a) end do end if close(50) write(*,*) write(*,'("Info(writeevbse):")') write(*,'(" BSE eigenvectors and eigenvalues written to EVBSE.OUT")') write(*,'(" BSE eigenvalues written to EIGVAL_BSE.OUT")') ! deallocate global BSE arrays deallocate(evalbse,hmlbse) return end subroutine elk-2.3.22/src/PaxHeaders.22528/gradzfmt.f900000644002504400250440000000005012337331324016335 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gradzfmt.f900000644002504400250440000000762012337331324017106 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2009 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: gradzfmt ! !INTERFACE: subroutine gradzfmt(nr,nri,r,zfmt,ld,gzfmt) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! nr : number of radial mesh points (in,integer) ! nri : number of points on inner part of muffin-tin (in,integer) ! r : radial mesh (in,real(nr)) ! zfmt : complex muffin-tin function (in,complex(lmmaxvr,nr)) ! ld : leading dimension (in,integer) ! gzfmt : gradient of zfmt (out,complex(lmmaxvr,ld,3)) ! !DESCRIPTION: ! Calculates the gradient of a complex muffin-tin function. In other words, ! given the spherical harmonic expansion coefficients, $f_{lm}(r)$, of a ! function $f({\bf r})$, the routine returns ${\bf F}_{lm}$ where ! $$ \sum_{lm}{\bf F}_{lm}(r)Y_{lm}(\hat{\bf r})=\nabla f({\bf r}). $$ ! This is done using the formula (see, for example, V. Devanathan, ! {\em Angular Momentum Techniques In Quantum Mechanics}) ! \begin{align*} ! \nabla_{\mu}^s f_{lm}(r)Y_{lm}(\hat{\bf r})&=\sqrt{\frac{l+1}{2l+3}} ! C(l,1,l+1|m,\mu,m+\mu)Y_{l+1m+\mu}(\hat{\bf r})\left(\frac{d}{dr} ! -\frac{l}{r}\right)f_{lm}(r)\\ ! &-\sqrt{\frac{l}{2l-1}}C(l,1,l-1|m,\mu,m+\mu)Y_{l-1,m+\mu}(\hat{\bf r}) ! \left(\frac{d}{dr}+\frac{l+1}{r}\right)f_{lm}(r), ! \end{align*} ! where $C$ are Clebsch-Gordan coefficients and the gradient $\nabla_{\mu}^s$ ! is in terms of the spherical unit vectors $\hat{\bf e}_{\mu}$: ! $$ \hat{\bf e}_{+1}=-\frac{\hat{\bf x}+i\hat{\bf y}}{\sqrt{2}}, ! \qquad\hat{\bf e}_0=\hat{\bf z},\qquad ! \hat{\bf e}_{-1}=\frac{\hat{\bf x}-i\hat{\bf y}}{\sqrt{2}}. $$ ! Note that the gradient returned is in terms of the global ! $(\hat{\bf x},\hat{\bf y},\hat{\bf z})$ coordinate system. ! ! !REVISION HISTORY: ! Rewritten May 2009 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: nr,nri real(8), intent(in) :: r(nr) complex(8), intent(in) :: zfmt(lmmaxvr,nr) integer, intent(in) :: ld complex(8), intent(out) :: gzfmt(lmmaxvr,ld,3) ! local variables integer nr0,ir0,ir,i,j integer lmmax,l,m,lm,lm1 ! real constant 1/sqrt(2) real(8), parameter :: c1=0.7071067811865475244d0 real(8) t1,t2,t3 complex(8) z1 ! automatic arrays real(8) ri(nr),f(nr),g1(nr),g2(nr) ! external functions real(8) clebgor external clebgor do ir=1,nr ri(ir)=1.d0/r(ir) gzfmt(:,ir,:)=0.d0 end do lm=0 do l=0,lmaxvr if (l.le.lmaxinr) then nr0=nr ir0=1 else nr0=nr-nri ir0=nri+1 end if t1=sqrt(dble(l+1)/dble(2*l+3)) if (l.gt.0) then t2=sqrt(dble(l)/dble(2*l-1)) else t2=0.d0 end if do m=-l,l lm=lm+1 ! compute the radial derivatives f(ir0:nr)=dble(zfmt(lm,ir0:nr)) call fderiv(1,nr0,r(ir0),f(ir0),g1(ir0)) f(ir0:nr)=aimag(zfmt(lm,ir0:nr)) call fderiv(1,nr0,r(ir0),f(ir0),g2(ir0)) j=1 do i=-1,1 if (i.eq.0) j=3 if (i.eq.1) j=2 if ((l+1.le.lmaxvr).and.(abs(m+i).le.l+1)) then ! index to (l,m) is l*(l+1)+m+1, therefore index to (l+1,m+i) is lm1=(l+1)*(l+2)+(m+i)+1 t3=t1*clebgor(l,1,l+1,m,i,m+i) do ir=ir0,nr gzfmt(lm1,ir,j)=gzfmt(lm1,ir,j) & +t3*(cmplx(g1(ir),g2(ir),8)-dble(l)*ri(ir)*zfmt(lm,ir)) end do end if if (abs(m+i).le.l-1) then ! index to (l-1,m+i) lm1=(l-1)*l+(m+i)+1 t3=t2*clebgor(l,1,l-1,m,i,m+i) do ir=ir0,nr gzfmt(lm1,ir,j)=gzfmt(lm1,ir,j) & -t3*(cmplx(g1(ir),g2(ir),8)+dble(l+1)*ri(ir)*zfmt(lm,ir)) end do end if end do end do end do ! convert from spherical components to Cartesian lmmax=lmmaxinr do ir=1,nr do lm=1,lmmax z1=gzfmt(lm,ir,1) gzfmt(lm,ir,1)=c1*(z1-gzfmt(lm,ir,2)) z1=c1*(z1+gzfmt(lm,ir,2)) gzfmt(lm,ir,2)=cmplx(-aimag(z1),dble(z1),8) end do if (ir.eq.nri) lmmax=lmmaxvr end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/potxc.f900000644002504400250440000000005012337331324015654 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/potxc.f900000644002504400250440000003105612337331324016425 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: potxc ! !INTERFACE: subroutine potxc ! !USES: use modmain use modxcifc ! !DESCRIPTION: ! Computes the exchange-correlation potential and energy density. In the ! muffin-tin, the density is transformed from spherical harmonic coefficients ! $\rho_{lm}$ to spherical coordinates $(\theta,\phi)$ with a backward ! spherical harmonic transformation (SHT). Once calculated, the ! exchange-correlation potential and energy density are transformed with a ! forward SHT. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! local variables integer idm,is,ia,ias integer nr,nri,ir,i,n real(8) t1,t2,t3,t4 ! allocatable arrays real(8), allocatable :: rho(:),rhoup(:),rhodn(:) real(8), allocatable :: gvrho(:),gvup(:),gvdn(:) real(8), allocatable :: grho(:),gup(:),gdn(:) real(8), allocatable :: g2rho(:),g2up(:),g2dn(:) real(8), allocatable :: g3rho(:),g3up(:),g3dn(:) real(8), allocatable :: grho2(:),gup2(:),gdn2(:),gupdn(:) real(8), allocatable :: taumt(:,:,:,:),tauir(:,:) real(8), allocatable :: ex(:),ec(:),vxc(:) real(8), allocatable :: vx(:),vxup(:),vxdn(:) real(8), allocatable :: vc(:),vcup(:),vcdn(:) real(8), allocatable :: dxdg2(:),dxdgu2(:),dxdgd2(:),dxdgud(:) real(8), allocatable :: dcdg2(:),dcdgu2(:),dcdgd2(:),dcdgud(:) real(8), allocatable :: mag(:,:),bxc(:,:) ! meta-GGA variables if required if (xcgrad.eq.3) then ! generate the kinetic energy density if required allocate(taumt(lmmaxvr,nrmtmax,natmtot,nspinor)) allocate(tauir(ngtot,nspinor)) call gentau(taumt,tauir) ! compute the Tran-Blaha '09 constant c call xc_c_tb09 end if ! allocate local arrays n=lmmaxvr*nrmtmax allocate(rho(n),ex(n),ec(n),vxc(n)) if (spinpol) then allocate(mag(n,3),bxc(n,3)) end if n=max(n,ngtot) if (spinpol) then allocate(rhoup(n),rhodn(n)) allocate(vxup(n),vxdn(n),vcup(n),vcdn(n)) if (xcgrad.eq.1) then allocate(grho(n),gup(n),gdn(n)) allocate(g2up(n),g2dn(n)) allocate(g3rho(n),g3up(n),g3dn(n)) else if (xcgrad.eq.2) then allocate(g2up(n),g2dn(n)) allocate(gvup(3*n),gvdn(3*n)) allocate(gup2(n),gdn2(n),gupdn(n)) allocate(dxdgu2(n),dxdgd2(n),dxdgud(n)) allocate(dcdgu2(n),dcdgd2(n),dcdgud(n)) else if (xcgrad.eq.3) then allocate(g2up(n),g2dn(n)) allocate(gvup(3*n),gvdn(3*n)) allocate(gup2(n),gdn2(n),gupdn(n)) end if else allocate(vx(n),vc(n)) if (xcgrad.eq.1) then allocate(grho(n),g2rho(n),g3rho(n)) else if (xcgrad.eq.2) then allocate(g2rho(n),gvrho(3*n),grho2(n)) allocate(dxdg2(n),dcdg2(n)) else if (xcgrad.eq.3) then allocate(g2rho(n),gvrho(3*n),grho2(n)) end if end if !---------------------------------------! ! muffin-tin potential and field ! !---------------------------------------! do is=1,nspecies nr=nrmt(is) nri=nrmtinr(is) n=lmmaxvr*nr do ia=1,natoms(is) ias=idxas(ia,is) ! compute the density in spherical coordinates call rbsht(nr,nri,1,rhomt(:,:,ias),1,rho) if (spinpol) then !------------------------! ! spin-polarised ! !------------------------! ! magnetisation in spherical coordinates do idm=1,ndmag call rbsht(nr,nri,1,magmt(:,:,ias,idm),1,mag(:,idm)) end do if (ncmag) then ! non-collinear (use Kubler's trick) do i=1,n ! compute rhoup=(rho+|m|)/2 and rhodn=(rho-|m|)/2 t1=sqrt(mag(i,1)**2+mag(i,2)**2+mag(i,3)**2) rhoup(i)=0.5d0*(rho(i)+t1) rhodn(i)=0.5d0*(rho(i)-t1) end do else ! collinear do i=1,n ! compute rhoup=(rho+m_z)/2 and rhodn=(rho-m_z)/2 rhoup(i)=0.5d0*(rho(i)+mag(i,1)) rhodn(i)=0.5d0*(rho(i)-mag(i,1)) end do end if ! call the exchange-correlation interface routine if (xcgrad.le.0) then call xcifc(xctype,n=n,rhoup=rhoup,rhodn=rhodn,ex=ex,ec=ec,vxup=vxup, & vxdn=vxdn,vcup=vcup,vcdn=vcdn) else if (xcgrad.eq.1) then call ggamt_sp_1(is,rhoup,rhodn,grho,gup,gdn,g2up,g2dn,g3rho,g3up,g3dn) call xcifc(xctype,n=n,rhoup=rhoup,rhodn=rhodn,grho=grho,gup=gup, & gdn=gdn,g2up=g2up,g2dn=g2dn,g3rho=g3rho,g3up=g3up,g3dn=g3dn,ex=ex, & ec=ec,vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn) else if (xcgrad.eq.2) then call ggamt_sp_2a(is,rhoup,rhodn,g2up,g2dn,gvup,gvdn,gup2,gdn2,gupdn) call xcifc(xctype,n=n,rhoup=rhoup,rhodn=rhodn,gup2=gup2,gdn2=gdn2, & gupdn=gupdn,ex=ex,ec=ec,vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn, & dxdgu2=dxdgu2,dxdgd2=dxdgd2,dxdgud=dxdgud,dcdgu2=dcdgu2, & dcdgd2=dcdgd2,dcdgud=dcdgud) call ggamt_sp_2b(is,g2up,g2dn,gvup,gvdn,vxup,vxdn,vcup,vcdn,dxdgu2, & dxdgd2,dxdgud,dcdgu2,dcdgd2,dcdgud) else if (xcgrad.eq.3) then call ggamt_sp_2a(is,rhoup,rhodn,g2up,g2dn,gvup,gvdn,gup2,gdn2,gupdn) call xcifc(xctype,n=n,c_tb09=c_tb09,rhoup=rhoup,rhodn=rhodn,g2up=g2up, & g2dn=g2dn,gup2=gup2,gdn2=gdn2,gupdn=gupdn,tauup=taumt(:,:,ias,1), & taudn=taumt(:,:,ias,2),vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn) ex(1:n)=0.d0; ec(1:n)=0.d0 end if ! hybrid functionals if (hybrid) then t1=1.d0-hybridc ! scale exchange part of energy ex(1:n)=t1*ex(1:n) ! scale exchange part of potential vxup(1:n)=t1*vxup(1:n) vxdn(1:n)=t1*vxdn(1:n) end if if (ncmag) then ! non-collinear: locally spin rotate the exchange-correlation potential do i=1,n t1=vxup(i)+vcup(i) t2=vxdn(i)+vcdn(i) vxc(i)=0.5d0*(t1+t2) ! determine the exchange-correlation magnetic field t3=0.5d0*(t1-t2) ! |m| = rhoup - rhodn t4=rhoup(i)-rhodn(i) if (abs(t4).gt.1.d-8) t4=t3/t4 bxc(i,1:3)=mag(i,1:3)*t4 end do else ! collinear do i=1,n t1=vxup(i)+vcup(i) t2=vxdn(i)+vcdn(i) vxc(i)=0.5d0*(t1+t2) bxc(i,1)=0.5d0*(t1-t2) end do end if ! convert field to spherical harmonics do idm=1,ndmag call rfsht(nr,nri,1,bxc(:,idm),1,bxcmt(:,:,ias,idm)) end do else !--------------------------! ! spin-unpolarised ! !--------------------------! if (xcgrad.le.0) then call xcifc(xctype,n=n,rho=rho,ex=ex,ec=ec,vx=vx,vc=vc) else if (xcgrad.eq.1) then call ggamt_1(ias,grho,g2rho,g3rho) call xcifc(xctype,n=n,rho=rho,grho=grho,g2rho=g2rho,g3rho=g3rho,ex=ex, & ec=ec,vx=vx,vc=vc) else if (xcgrad.eq.2) then call ggamt_2a(ias,g2rho,gvrho,grho2) call xcifc(xctype,n=n,rho=rho,grho2=grho2,ex=ex,ec=ec,vx=vx,vc=vc, & dxdg2=dxdg2,dcdg2=dcdg2) call ggamt_2b(is,g2rho,gvrho,vx,vc,dxdg2,dcdg2) else if (xcgrad.eq.3) then call ggamt_2a(ias,g2rho,gvrho,grho2) call xcifc(xctype,n=n,c_tb09=c_tb09,rho=rho,g2rho=g2rho,grho2=grho2, & tau=taumt(:,:,ias,1),vx=vx,vc=vc) ex(1:n)=0.d0; ec(1:n)=0.d0 end if ! hybrid functionals if (hybrid) then t1=1.d0-hybridc ! scale exchange part of energy ex(1:n)=t1*ex(1:n) ! scale exchange part of potential vxc(1:n)=t1*vx(1:n)+vc(1:n) else vxc(1:n)=vx(1:n)+vc(1:n) end if end if ! convert exchange and correlation energy densities to spherical harmonics call rfsht(nr,nri,1,ex,1,exmt(:,:,ias)) call rfsht(nr,nri,1,ec,1,ecmt(:,:,ias)) ! convert exchange-correlation potential to spherical harmonics call rfsht(nr,nri,1,vxc,1,vxcmt(:,:,ias)) end do end do !------------------------------------------! ! interstitial potential and field ! !------------------------------------------! if (spinpol) then !------------------------! ! spin-polarised ! !------------------------! if (ncmag) then ! non-collinear do ir=1,ngtot t1=sqrt(magir(ir,1)**2+magir(ir,2)**2+magir(ir,3)**2) rhoup(ir)=0.5d0*(rhoir(ir)+t1) rhodn(ir)=0.5d0*(rhoir(ir)-t1) end do else ! collinear do ir=1,ngtot rhoup(ir)=0.5d0*(rhoir(ir)+magir(ir,1)) rhodn(ir)=0.5d0*(rhoir(ir)-magir(ir,1)) end do end if if (xcgrad.le.0) then call xcifc(xctype,n=ngtot,rhoup=rhoup,rhodn=rhodn,ex=exir,ec=ecir, & vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn) else if (xcgrad.eq.1) then call ggair_sp_1(rhoup,rhodn,grho,gup,gdn,g2up,g2dn,g3rho,g3up,g3dn) ! average the second-order gradients for cases which are difficult to converge if (ncgga) then g2up(1:ngtot)=0.5d0*(g2up(1:ngtot)+g2dn(1:ngtot)) g2dn(1:ngtot)=g2up(1:ngtot) end if call xcifc(xctype,n=ngtot,rhoup=rhoup,rhodn=rhodn,grho=grho,gup=gup, & gdn=gdn,g2up=g2up,g2dn=g2dn,g3rho=g3rho,g3up=g3up,g3dn=g3dn,ex=exir, & ec=ecir,vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn) else if (xcgrad.eq.2) then call ggair_sp_2a(rhoup,rhodn,g2up,g2dn,gvup,gvdn,gup2,gdn2,gupdn) if (ncgga) then g2up(1:ngtot)=0.5d0*(g2up(1:ngtot)+g2dn(1:ngtot)) g2dn(1:ngtot)=g2up(1:ngtot) end if call xcifc(xctype,n=ngtot,rhoup=rhoup,rhodn=rhodn,gup2=gup2,gdn2=gdn2, & gupdn=gupdn,ex=exir,ec=ecir,vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn, & dxdgu2=dxdgu2,dxdgd2=dxdgd2,dxdgud=dxdgud,dcdgu2=dcdgu2,dcdgd2=dcdgd2, & dcdgud=dcdgud) call ggair_sp_2b(g2up,g2dn,gvup,gvdn,vxup,vxdn,vcup,vcdn,dxdgu2,dxdgd2, & dxdgud,dcdgu2,dcdgd2,dcdgud) else if (xcgrad.eq.3) then call ggair_sp_2a(rhoup,rhodn,g2up,g2dn,gvup,gvdn,gup2,gdn2,gupdn) call xcifc(xctype,n=ngtot,c_tb09=c_tb09,rhoup=rhoup,rhodn=rhodn,g2up=g2up, & g2dn=g2dn,gup2=gup2,gdn2=gdn2,gupdn=gupdn,tauup=tauir(:,1), & taudn=tauir(:,2),vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn) exir(1:ngtot)=0.d0; ecir(1:ngtot)=0.d0 end if ! hybrid functionals if (hybrid) then t1=1.d0-hybridc ! scale exchange part of energy exir(1:ngtot)=t1*exir(1:ngtot) ! scale exchange part of potential vxup(1:ngtot)=t1*vxup(1:ngtot) vxdn(1:ngtot)=t1*vxdn(1:ngtot) end if if (ncmag) then ! non-collinear: spin rotate the local exchange potential do ir=1,ngtot t1=vxup(ir)+vcup(ir) t2=vxdn(ir)+vcdn(ir) vxcir(ir)=0.5d0*(t1+t2) ! determine the exchange-correlation magnetic field t3=0.5d0*(t1-t2) t4=rhoup(ir)-rhodn(ir) if (abs(t4).gt.1.d-8) t4=t3/t4 bxcir(ir,:)=magir(ir,:)*t4 end do else ! collinear do ir=1,ngtot t1=vxup(ir)+vcup(ir) t2=vxdn(ir)+vcdn(ir) vxcir(ir)=0.5d0*(t1+t2) bxcir(ir,1)=0.5d0*(t1-t2) end do end if else !--------------------------! ! spin-unpolarised ! !--------------------------! if (xcgrad.le.0) then call xcifc(xctype,n=ngtot,rho=rhoir,ex=exir,ec=ecir,vx=vx,vc=vc) else if (xcgrad.eq.1) then call ggair_1(grho,g2rho,g3rho) call xcifc(xctype,n=ngtot,rho=rhoir,grho=grho,g2rho=g2rho,g3rho=g3rho, & ex=exir,ec=ecir,vx=vx,vc=vc) else if (xcgrad.eq.2) then call ggair_2a(g2rho,gvrho,grho2) call xcifc(xctype,n=ngtot,rho=rhoir,grho2=grho2,ex=exir,ec=ecir,vx=vx, & vc=vc,dxdg2=dxdg2,dcdg2=dcdg2) call ggair_2b(g2rho,gvrho,vx,vc,dxdg2,dcdg2) else if (xcgrad.eq.3) then call ggair_2a(g2rho,gvrho,grho2) call xcifc(xctype,n=ngtot,c_tb09=c_tb09,rho=rhoir,g2rho=g2rho,grho2=grho2, & tau=tauir(:,1),vx=vx,vc=vc) exir(1:ngtot)=0.d0; ecir(1:ngtot)=0.d0 end if ! hybrid functionals if (hybrid) then t1=1.d0-hybridc ! scale exchange part of energy exir(1:ngtot)=t1*exir(1:ngtot) ! scale exchange part of potential vxcir(1:ngtot)=t1*vx(1:ngtot)+vc(1:ngtot) else vxcir(1:ngtot)=vx(1:ngtot)+vc(1:ngtot) end if end if ! optimised effective potential if (xctype(1).lt.0) call oepmain ! symmetrise the exchange-correlation potential call symrf(1,vxcmt,vxcir) if (spinpol) then ! remove the source contribution if required if (nosource) call projsbf ! symmetrise the exchange-correlation effective field call symrvf(1,bxcmt,bxcir) end if if (xcgrad.eq.3) deallocate(taumt,tauir) deallocate(rho,ex,ec,vxc) if (spinpol) then deallocate(mag,bxc) deallocate(rhoup,rhodn,vxup,vxdn,vcup,vcdn) if (xcgrad.eq.1) then deallocate(grho,gup,gdn,g2up,g2dn,g3rho,g3up,g3dn) else if (xcgrad.eq.2) then deallocate(g2up,g2dn) deallocate(gvup,gvdn) deallocate(gup2,gdn2,gupdn) deallocate(dxdgu2,dxdgd2,dxdgud) deallocate(dcdgu2,dcdgd2,dcdgud) else if (xcgrad.eq.3) then deallocate(g2up,g2dn) deallocate(gvup,gvdn) deallocate(gup2,gdn2,gupdn) end if else deallocate(vx,vc) if (xcgrad.eq.1) then deallocate(grho,g2rho,g3rho) else if (xcgrad.eq.2) then deallocate(g2rho,gvrho,grho2) deallocate(dxdg2,dcdg2) else if (xcgrad.eq.3) then deallocate(g2rho,gvrho,grho2) end if end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/xc_wc06.f900000644002504400250440000000005012337331324015770 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/xc_wc06.f900000644002504400250440000000345412337331324016542 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2006 Zhigang Wu and R. E. Cohen. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine xc_wc06(n,rho,grho,g2rho,g3rho,ex,ec,vx,vc) implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: rho(n) real(8), intent(in) :: grho(n) real(8), intent(in) :: g2rho(n) real(8), intent(in) :: g3rho(n) real(8), intent(out) :: ex(n) real(8), intent(out) :: ec(n) real(8), intent(out) :: vx(n) real(8), intent(out) :: vc(n) ! local variables integer i real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: thrd=1.d0/3.d0 ! default PBE beta real(8), parameter :: beta=0.06672455060314922d0 ! maximum allowed |grad rho| real(8), parameter :: gmax=1.d6 ! maximum allowed grad^2 rho real(8), parameter :: g2max=1.d12 ! maximum allowed (grad rho).(grad |grad rho|) real(8), parameter :: g3max=1.d14 real(8) r,grho_,g2rho_,g3rho_ real(8) kf,s,u,v,rs,z,g real(8) ks,ksg,t,uu,vv,ww do i=1,n r=rho(i) if (r.gt.1.d-12) then grho_=grho(i) g2rho_=g2rho(i) g3rho_=g3rho(i) ! check gradients are within range if (grho_.gt.gmax) grho_=gmax if (abs(g2rho_).gt.g2max) g2rho_=sign(g2max,g2rho_) if (abs(g3rho_).gt.g3max) g3rho_=sign(g3max,g3rho_) kf=(r*3.d0*pi**2)**thrd s=grho_/(2.d0*kf*r) u=g3rho_/((r**2)*(2.d0*kf)**3) v=g2rho_/(r*(2.d0*kf)**2) ! Wu-Cohen exchange call x_wc06(r,s,u,v,ex(i),vx(i)) ! Perdew-Burke-Ernzerhof correlation rs=(3.d0/(4.d0*pi*r))**thrd z=0.d0 g=1.d0 ks=sqrt(4.d0*kf/pi) ksg=2.d0*ks*g t=grho_/(ksg*r) uu=g3rho_/((r**2)*ksg**3) vv=g2rho_/(r*ksg**2) ww=0.d0 call c_pbe(beta,rs,z,t,uu,vv,ww,ec(i),vc(i),vc(i)) else ex(i)=0.d0 ec(i)=0.d0 vx(i)=0.d0 vc(i)=0.d0 end if end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/atom.f900000644002504400250440000000005012337331323015456 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/atom.f900000644002504400250440000001316612337331323016231 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: atom ! !INTERFACE: subroutine atom(sol,ptnucl,zn,nst,n,l,k,occ,xctype,xcgrad,nr,r,eval,rho,vr,rwf) ! !USES: use modxcifc ! !INPUT/OUTPUT PARAMETERS: ! sol : speed of light in atomic units (in,real) ! ptnucl : .true. if the nucleus is a point particle (in,logical) ! zn : nuclear charge (in,real) ! nst : number of states to solve for (in,integer) ! n : priciple quantum number of each state (in,integer(nst)) ! l : quantum number l of each state (in,integer(nst)) ! k : quantum number k (l or l+1) of each state (in,integer(nst)) ! occ : occupancy of each state (inout,real(nst)) ! xctype : exchange-correlation type (in,integer(3)) ! xcgrad : 1 for GGA functional, 0 otherwise (in,integer) ! nr : number of radial mesh points (in,integer) ! r : radial mesh (in,real(nr)) ! eval : eigenvalue without rest-mass energy for each state (out,real(nst)) ! rho : charge density (out,real(nr)) ! vr : self-constistent potential (out,real(nr)) ! rwf : major and minor components of radial wavefunctions for each state ! (out,real(nr,2,nst)) ! !DESCRIPTION: ! Solves the Dirac-Kohn-Sham equations for an atom using the ! exchange-correlation functional {\tt xctype} and returns the self-consistent ! radial wavefunctions, eigenvalues, charge densities and potentials. Requires ! the exchange-correlation interface routine {\tt xcifc}. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) ! Fixed s.c. convergence problem, October 2003 (JKD) ! Added support for GGA functionals, June 2006 (JKD) ! !EOP !BOC implicit none ! arguments real(8), intent(in) :: sol logical, intent(in) :: ptnucl real(8), intent(in) :: zn integer, intent(in) :: nst integer, intent(in) :: n(nst) integer, intent(in) :: l(nst) integer, intent(in) :: k(nst) real(8), intent(inout) :: occ(nst) integer, intent(in) :: xctype(3) integer, intent(in) :: xcgrad integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(out) :: eval(nst) real(8), intent(out) :: rho(nr) real(8), intent(out) :: vr(nr) real(8), intent(out) :: rwf(nr,2,nst) ! local variables integer, parameter :: maxscl=200 integer ir,ist,iscl real(8), parameter :: fourpi=12.566370614359172954d0 ! potential convergence tolerance real(8), parameter :: eps=1.d-6 real(8) sum,dv,dvp,ze,beta,t1 ! allocatable arrays real(8), allocatable :: vn(:),vh(:),ex(:),ec(:),vx(:),vc(:),vrp(:) real(8), allocatable :: ri(:),fr1(:),fr2(:),gr1(:),gr2(:) real(8), allocatable :: grho(:),g2rho(:),g3rho(:) if (nst.le.0) then write(*,*) write(*,'("Error(atom): invalid nst : ",I8)') nst write(*,*) stop end if ! allocate local arrays allocate(vn(nr),vh(nr),ex(nr),ec(nr),vx(nr),vc(nr),vrp(nr)) allocate(ri(nr),fr1(nr),fr2(nr),gr1(nr),gr2(nr)) if (xcgrad.eq.1) then allocate(grho(nr),g2rho(nr),g3rho(nr)) end if ! find total electronic charge ze=0.d0 do ist=1,nst ze=ze+occ(ist) end do ! set up nuclear potential call potnucl(ptnucl,nr,r,zn,vn) do ir=1,nr ri(ir)=1.d0/r(ir) ! initialise the Kohn-Sham potential to the nuclear potential vr(ir)=vn(ir) end do dvp=0.d0 vrp(:)=0.d0 ! initialise mixing parameter beta=0.5d0 ! initialise eigenvalues to relativistic values (minus the rest mass energy) do ist=1,nst t1=sqrt(dble(k(ist)**2)-(zn/sol)**2) t1=(dble(n(ist)-abs(k(ist)))+t1)**2 t1=1.d0+((zn/sol)**2)/t1 eval(ist)=sol**2/sqrt(t1)-sol**2 end do ! start of self-consistent loop do iscl=1,maxscl ! solve the Dirac equation for each state !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ist=1,nst call rdirac(sol,n(ist),l(ist),k(ist),nr,r,vr,eval(ist),rwf(:,1,ist), & rwf(:,2,ist)) end do !$OMP END DO !$OMP END PARALLEL ! compute the charge density do ir=1,nr sum=0.d0 do ist=1,nst sum=sum+occ(ist)*(rwf(ir,1,ist)**2+rwf(ir,2,ist)**2) end do fr1(ir)=sum fr2(ir)=sum*ri(ir) rho(ir)=(1.d0/fourpi)*sum*ri(ir)**2 end do call fderiv(-1,nr,r,fr1,gr1) call fderiv(-1,nr,r,fr2,gr2) ! find the Hartree potential t1=gr2(nr) do ir=1,nr vh(ir)=gr1(ir)*ri(ir)+t1-gr2(ir) end do ! normalise charge density and potential t1=ze/gr1(nr) rho(:)=t1*rho(:) vh(:)=t1*vh(:) ! compute the exchange-correlation energy and potential if (xcgrad.eq.1) then ! GGA functional ! |grad rho| call fderiv(1,nr,r,rho,grho) ! grad^2 rho call fderiv(2,nr,r,rho,g2rho) do ir=1,nr g2rho(ir)=g2rho(ir)+2.d0*ri(ir)*grho(ir) end do ! approximate (grad rho).(grad |grad rho|) do ir=1,nr g3rho(ir)=grho(ir)*g2rho(ir) end do call xcifc(xctype,n=nr,rho=rho,grho=grho,g2rho=g2rho,g3rho=g3rho,ex=ex, & ec=ec,vx=vx,vc=vc) else ! LDA functional call xcifc(xctype,n=nr,rho=rho,ex=ex,ec=ec,vx=vx,vc=vc) end if ! self-consistent potential vr(:)=vh(:)+vx(:)+vc(:) ! determine change in potential sum=0.d0 do ir=1,nr sum=sum+(vr(ir)-vrp(ir))**2 end do dv=sqrt(sum)/dble(nr) if (iscl.gt.2) then ! reduce beta if change in potential is diverging if (dv.gt.dvp) beta=beta*0.8d0 beta=max(beta,0.01d0) end if dvp=dv do ir=1,nr ! mix old and new potentials vr(ir)=(1.d0-beta)*vrp(ir)+beta*vr(ir) vrp(ir)=vr(ir) ! add nuclear potential vr(ir)=vr(ir)+vn(ir) end do ! check for convergence if ((iscl.gt.2).and.(dv.lt.eps)) goto 10 ! end self-consistent loop end do write(*,*) write(*,'("Warning(atom): maximum iterations exceeded")') 10 continue deallocate(vn,vh,ex,ec,vx,vc,vrp) deallocate(ri,fr1,fr2,gr1,gr2) if (xcgrad.eq.1) deallocate(grho,g2rho,g3rho) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rdmdexcdn.f900000644002504400250440000000005012337331324016467 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmdexcdn.f900000644002504400250440000000421412337331324017234 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmdexcdn ! !INTERFACE: subroutine rdmdexcdn(dedn) ! !USES: use modmain use modrdm ! !INPUT/OUTPUT PARAMETERS: ! dedn : energy derivative (inout,real(nstsv,nkpt)) ! !DESCRIPTION: ! Calculates the derivative of the exchange-correlation energy w.r.t. ! occupation numbers and adds the result to the total. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! arguments real(8), intent(inout) :: dedn(nstsv,nkpt) ! local variables integer ik1,ik2,jk,iv(3) integer ist1,ist2 ! parameter for calculating the functional derivatives real(8), parameter :: eps=1.d-12 real(8) t1,t2,t3,t4 ! allocatable arays real(8), allocatable :: vclijji(:,:,:) if (rdmxctype.eq.0) return ! calculate the pre-factor if (rdmxctype.eq.1) then t1=1.d0/occmax ! power functional else if (rdmxctype.eq.2) then if (spinpol) then t1=rdmalpha else t1=2.d0*rdmalpha*(0.25d0)**rdmalpha end if else write(*,*) write(*,'("Error(rdmdexcdn): rdmxctype not defined : ",I8)') rdmxctype write(*,*) stop end if allocate(vclijji(nstsv,nstsv,nkpt)) ! start loop over non-reduced k-points do ik1=1,nkptnr ! get the Coulomb matrix elements call getvclijji(ik1,vclijji) ! find the equivalent reduced k-point iv(:)=ivk(:,ik1) jk=ikmap(iv(1),iv(2),iv(3)) ! loop over reduced k-points do ik2=1,nkpt do ist1=1,nstsv do ist2=1,nstsv ! Hartree-Fock functional if (rdmxctype.eq.1) then t2=t1*occsv(ist1,jk) ! power functional else if (rdmxctype.eq.2) then t3=sum(abs(vkl(:,ik2)-vkl(:,ik1))) if ((ist2.eq.ist1).and.(t3.lt.epslat)) then t2=(1.d0/occmax)*occsv(ist1,jk) else t3=max(occsv(ist2,ik2),eps) t4=max(occsv(ist1,jk),eps) t2=t1*(t4**rdmalpha)/(t3**(1.d0-rdmalpha)) end if end if dedn(ist2,ik2)=dedn(ist2,ik2)+t2*vclijji(ist2,ist1,ik2) end do end do end do end do deallocate(vclijji) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genzvclmt.f900000644002504400250440000000005012337331324016530 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genzvclmt.f900000644002504400250440000000142212337331324017273 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genzvclmt(nr,nri,ld1,r,ld2,zrhomt,zvclmt) use modmain implicit none ! arguments integer, intent(in) :: nr(nspecies),nri(nspecies) integer, intent(in) :: ld1 real(8), intent(in) :: r(ld1,nspecies) integer, intent(in) :: ld2 complex(8), intent(in) :: zrhomt(lmmaxvr,ld2,natmtot) complex(8), intent(out) :: zvclmt(lmmaxvr,ld2,natmtot) ! local variables integer is,ias !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(is) !$OMP DO do ias=1,natmtot is=idxis(ias) call zpotclmt(nr(is),nri(is),r(:,is),zrhomt(:,:,ias),zvclmt(:,:,ias)) end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/epsinv_rpa.f900000644002504400250440000000005012337331324016665 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/epsinv_rpa.f900000644002504400250440000000642612337331324017441 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine epsinv_rpa use modmain use modmpi implicit none ! local variables integer iq,ik,iw,n integer igq0,ig,jg integer info,recl ! allocatable arrays integer, allocatable :: ipiv(:) real(8), allocatable :: vgqc(:,:),gqc(:) complex(8), allocatable :: ylmgq(:,:),sfacgq(:,:) complex(8), allocatable :: vchi0(:,:,:),epsi(:,:,:),work(:) ! initialise global variables call init0 call init1 call init2 call init3 ! read density and potentials from file call readstate ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! get the eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! allocate local arrays allocate(vgqc(3,ngrf),gqc(ngrf)) allocate(ylmgq(lmmaxvr,ngrf),sfacgq(ngrf,natmtot)) allocate(vchi0(nwrf,ngrf,ngrf),epsi(ngrf,ngrf,nwrf)) if (mp_mpi) then ! determine the record length for EPSINV_RPA.OUT inquire(iolength=recl) vql(:,1),ngrf,nwrf,epsi ! open EPSINV_RPA.OUT open(50,file='EPSINV_RPA.OUT',action='WRITE',form='UNFORMATTED', & access='DIRECT',status='REPLACE',recl=recl) end if ! loop over q-points do iq=1,nqpt if (mp_mpi) write(*,'("Info(epsinv_rpa): ",I6," of ",I6," q-points")') iq,nqpt ! generate the G+q-vectors and related quantities call gengqrf(vqc(:,iq),igq0,vgqc,gqc,ylmgq,sfacgq) ! zero the response function array vchi0(:,:,:)=0.d0 !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ik=1,nkptnr ! distribute among MPI processes if (mod(ik-1,np_mpi).ne.lp_mpi) cycle ! compute v^1/2 chi0 v^1/2 call genvchi0(ik,0,0.d0,vql(:,iq),igq0,gqc,ylmgq,sfacgq,vchi0) end do !$OMP END DO !$OMP END PARALLEL ! add vchi0 from each process and redistribute if (np_mpi.gt.1) then n=nwrf*ngrf*ngrf call mpi_allreduce(mpi_in_place,vchi0,n,mpi_double_complex,mpi_sum, & mpi_comm_kpt,ierror) end if ! negate and add delta(G,G') do ig=1,ngrf do jg=1,ngrf epsi(ig,jg,:)=-vchi0(:,ig,jg) end do epsi(ig,ig,:)=epsi(ig,ig,:)+1.d0 end do !-------------------------------------! ! invert epsilon over G-space ! !-------------------------------------! !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(ipiv,work,info) !$OMP DO do iw=1,nwrf allocate(ipiv(ngrf),work(ngrf)) call zgetrf(ngrf,ngrf,epsi(:,:,iw),ngrf,ipiv,info) if (info.eq.0) call zgetri(ngrf,epsi(:,:,iw),ngrf,ipiv,work,ngrf,info) if (info.ne.0) then write(*,*) write(*,'("Error(epsinv_rpa): unable to invert epsilon")') write(*,'(" for q-point ",I6)') iq write(*,'(" and frequency ",I6)') iw write(*,*) stop end if deallocate(ipiv,work) end do !$OMP END DO !$OMP END PARALLEL ! write inverse RPA epsilon to EPSINV_RPA.OUT if (mp_mpi) write(50,rec=iq) vql(:,iq),ngrf,nwrf,epsi ! end loop over q-points end do if (mp_mpi) close(50) deallocate(vgqc,gqc,ylmgq,sfacgq,vchi0,epsi) if (mp_mpi) then write(*,*) write(*,'("Info(epsinv_rpa):")') write(*,'(" inverse RPA dielectric function, eps^(-1)(G,G'',q,w), written to & &EPSINV_RPA.OUT")') end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/deveqnfv.f900000644002504400250440000000005012337331324016335 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/deveqnfv.f900000644002504400250440000000705212337331324017105 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine deveqnfv(n,nq,igpig,igpqig,vgpc,vgpqc,evalfv,apwalm, & apwalmq,dapwalm,dapwalmq,evecfv,devalfv,devecfv) use modmain use modphonon implicit none ! arguments integer, intent(in) :: n,nq integer, intent(in) :: igpig(ngkmax),igpqig(ngkmax) real(8), intent(in) :: vgpc(3,ngkmax),vgpqc(3,ngkmax) real(8), intent(in) :: evalfv(nstfv) complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw) complex(8), intent(in) :: dapwalmq(ngkmax,apwordmax,lmmaxapw) complex(8), intent(in) :: evecfv(nmatmax,nstfv) complex(8), intent(out) :: devalfv(nstfv) complex(8), intent(out) :: devecfv(nmatmax,nstfv) ! local variables integer nm,nmq,ias,ist,i integer lwork,info real(8) t1 complex(8) z1 ! allocatable arrays real(8), allocatable :: w(:),rwork(:) complex(8), allocatable :: h(:,:),o(:,:),dh(:,:),od(:,:) complex(8), allocatable :: x(:),y(:),work(:) ! external functions complex(8) zdotc external zdotc ! matrix sizes for k and k+q nm=n+nlotot nmq=nq+nlotot allocate(h(nmq,nmq),o(nmq,nmq)) ! compute the Hamiltonian and overlap matrices at p+q !$OMP PARALLEL SECTIONS DEFAULT(SHARED) PRIVATE(ias) !$OMP SECTION ! Hamiltonian h(:,:)=0.d0 do ias=1,natmtot call hmlaa(ias,nq,apwalmq,nmq,h) call hmlalo(ias,nq,apwalmq,nmq,h) call hmllolo(ias,nq,nmq,h) end do call hmlistl(nq,igpqig,vgpqc,nmq,h) !$OMP SECTION ! overlap o(:,:)=0.d0 do ias=1,natmtot call olpaa(ias,nq,apwalmq,nmq,o) call olpalo(ias,nq,apwalmq,nmq,o) call olplolo(ias,nq,nmq,o) end do call olpistl(nq,igpqig,nmq,o) !$OMP END PARALLEL SECTIONS ! solve the generalised eigenvalue problem (H - e_i)|v_i> = 0 ! (note: these are also the eigenvalues/vectors of O^(-1)H ) lwork=2*nmq allocate(w(nmq),rwork(3*nmq),work(lwork)) call zhegv(1,'V','U',nmq,h,nmq,o,nmq,w,work,lwork,rwork,info) if (info.ne.0) then write(*,*) write(*,'("Error(deveqnfv): diagonalisation failed")') write(*,'(" ZHEGV returned INFO = ",I8)') info write(*,*) stop end if deallocate(rwork,o,work) ! compute the Hamiltonian and overlap matrix derivatives allocate(dh(nmq,nm),od(nmq,nm)) !$OMP PARALLEL SECTIONS DEFAULT(SHARED) PRIVATE(ias) !$OMP SECTION dh(:,:)=0.d0 do ias=1,natmtot call dhmlaa(ias,n,nq,apwalm,apwalmq,dapwalm,dapwalmq,nmq,dh) call dhmlalo(ias,n,nq,apwalm,apwalmq,dapwalm,dapwalmq,nmq,dh) call dhmllolo(ias,n,nq,nmq,dh) end do call dhmlistl(n,nq,igpig,igpqig,vgpc,vgpqc,nmq,dh) !$OMP SECTION od(:,:)=0.d0 do ias=1,natmtot call dolpaa(ias,n,nq,apwalm,apwalmq,dapwalm,dapwalmq,nmq,od) call dolpalo(ias,n,nq,dapwalm,dapwalmq,nmq,od) end do call dolpistl(n,nq,igpig,igpqig,nmq,od) !$OMP END PARALLEL SECTIONS allocate(x(nmq),y(nmq)) ! loop over states do ist=1,nstfv ! compute |dv_i> = V(e_i - D)^(-1)V^(*t)(dH - e_i dO)|v_i> z1=-evalfv(ist) call zgemv('N',nmq,nm,z1,od,nmq,evecfv(:,ist),1,zzero,x,1) call zgemv('N',nmq,nm,zone,dh,nmq,evecfv(:,ist),1,zone,x,1) ! compute the first-order change in eigenvalue if (iqph.eq.iq0) then devalfv(ist)=zdotc(nmq,evecfv(:,ist),1,x,1) else devalfv(ist)=0.d0 end if call zgemv('C',nmq,nmq,zone,h,nmq,x,1,zzero,y,1) do i=1,nmq t1=evalfv(ist)-w(i) if (abs(t1).gt.epsph) then y(i)=y(i)/t1 else y(i)=0.d0 end if end do call zgemv('N',nmq,nmq,zone,h,nmq,y,1,zzero,devecfv(:,ist),1) end do deallocate(w,h,dh,od,x,y) return end subroutine elk-2.3.22/src/PaxHeaders.22528/genephmat.f900000644002504400250440000000005012337331324016467 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genephmat.f900000644002504400250440000000343212337331324017235 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genephmat(iq,ikp,dvphmt,dvphir,ephmat) use modmain use modphonon implicit none ! arguments integer, intent(in) :: iq,ikp complex(8), intent(in) :: dvphmt(lmmaxvr,nrcmtmax,natmtot,nbph) complex(8), intent(in) :: dvphir(ngtot,nbph) complex(8), intent(out) :: ephmat(nstsv,nstsv,nbph) ! local variables integer ist,jst,i real(8) vpql(3) ! automatic arrays integer idx(nstsv) ! allocatable arrays complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) complex(8), allocatable :: wfmtq(:,:,:,:,:),wfirq(:,:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) ! external functions complex(8) zfinp external zfinp ! k+q-vector in lattice coordinates vpql(:)=vkl(:,ikp)+vql(:,iq) ! index to all states do ist=1,nstsv idx(ist)=ist end do ! generate the wavefunctions for all states at k and k+q allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfir(ngtot,nspinor,nstsv)) call genwfsvp(.false.,.false.,nstsv,idx,vkl(:,ikp),wfmt,ngtot,wfir) allocate(wfmtq(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv)) allocate(wfirq(ngtot,nspinor,nstsv)) call genwfsvp(.false.,.false.,nstsv,idx,vpql,wfmtq,ngtot,wfirq) allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot),zrhoir(ngtot)) do ist=1,nstsv do jst=1,nstsv ! note that the complex conjugate of the density is found because zfinp ! conjugates the first function call genzrho(.true.,.true.,wfmt(:,:,:,:,jst),wfir(:,:,jst), & wfmtq(:,:,:,:,ist),wfirq(:,:,ist),zrhomt,zrhoir) do i=1,nbph ephmat(ist,jst,i)=zfinp(.true.,zrhomt,zrhoir,dvphmt(:,:,:,i),dvphir(:,i)) end do end do end do deallocate(wfmt,wfmtq,wfir,wfirq,zrhomt,zrhoir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/wavefcr.f900000644002504400250440000000005012337331323016153 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/wavefcr.f900000644002504400250440000000400512337331323016716 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2011 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine wavefcr(tsh,lrstp,is,ia,ist,m,ld,wfcr) use modmain implicit none ! arguments logical, intent(in) :: tsh integer, intent(in) :: lrstp integer, intent(in) :: is,ia integer, intent(in) :: ist ! pass in m-1/2 integer, intent(in) :: m integer, intent(in) :: ld complex(8), intent(out) :: wfcr(lmmaxvr,ld,2) ! local variables integer ias,nri,ir,irc integer k,l,lm,lm1 real(8) c1,c2,t1,t2,t3 l=spl(ist,is) k=spk(ist,is) if (((k.ne.l+1).and.(k.ne.l)).or.(m.lt.-k).or.(m.gt.k-1)) then write(*,*) write(*,'("Error(wavefcr): mismatched l, k or m : ",3I4)') l,k,m write(*,'(" for species ",I4)') is write(*,'(" atom ",I4)') ia write(*,'(" and state ",I6)') ist write(*,*) stop end if if (l.gt.lmaxinr) then write(*,*) write(*,'("Error(wavefcr): l > lmaxinr : ",2I8)') l,lmaxinr write(*,*) stop end if ias=idxas(ia,is) ! calculate the Clebsch-Gordon coefficients t1=sqrt(dble(l+m+1)/dble(2*l+1)) t2=sqrt(dble(l-m)/dble(2*l+1)) if (k.eq.l+1) then c1=t1 c2=t2 else c1=t2 c2=-t1 end if if (abs(m).le.l) then lm=idxlm(l,m) else lm=0 end if if (abs(m+1).le.l) then lm1=idxlm(l,m+1) else lm1=0 end if if ((tsh).or.(lm.eq.0)) wfcr(:,:,1)=0.d0 if ((tsh).or.(lm1.eq.0)) wfcr(:,:,2)=0.d0 nri=nrmtinr(is) irc=0 do ir=1,nrmt(is),lrstp irc=irc+1 ! major component of radial wavefunction t1=rwfcr(ir,1,ist,ias)/spr(ir,is) if (tsh) then if (lm.gt.0) wfcr(lm,irc,1)=t1*c1 if (lm1.gt.0) wfcr(lm1,irc,2)=t1*c2 else t2=t1*c1 t3=t1*c2 if (ir.le.nri) then ! inner part of muffin-tin if (lm.gt.0) wfcr(1:lmmaxinr,irc,1)=t2*zbshtinr(1:lmmaxinr,lm) if (lm1.gt.0) wfcr(1:lmmaxinr,irc,2)=t3*zbshtinr(1:lmmaxinr,lm1) else ! outer part of muffin-tin if (lm.gt.0) wfcr(:,irc,1)=t2*zbshtvr(:,lm) if (lm1.gt.0) wfcr(:,irc,2)=t3*zbshtvr(:,lm1) end if end if end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/findband.f900000644002504400250440000000005012337331323016263 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findband.f900000644002504400250440000000656712337331323017045 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: findband ! !INTERFACE: subroutine findband(sol,l,k,nr,r,vr,eps,demax,e,fnd) ! !INPUT/OUTPUT PARAMETERS: ! sol : speed of light in atomic units (in,real) ! l : angular momentum quantum number (in,integer) ! k : quantum number k, zero if Dirac eqn. is not to be used (in,integer) ! nr : number of radial mesh points (in,integer) ! r : radial mesh (in,real(nr)) ! vr : potential on radial mesh (in,real(nr)) ! eps : energy search tolerance (in,real) ! demax : maximum allowed change from the input energy; enforced only if e < 0 ! (in,real) ! e : input energy and returned band energy (inout,real) ! fnd : set to .true. if the band energy is found (out,logical) ! !DESCRIPTION: ! Finds the band energies for a given radial potential and angular momentum. ! This is done by first searching upwards in energy, starting from the input ! energy plus the offset energy, until the radial wavefunction at the ! muffin-tin radius is zero. This is the energy at the top of the band, ! denoted $E_{\rm t}$. A downward search is now performed from $E_{\rm t}$ ! until the slope of the radial wavefunction at the muffin-tin radius is zero. ! This energy, $E_{\rm b}$, is at the bottom of the band. The band energy is ! taken as $(E_{\rm t}+E_{\rm b})/2$. If either $E_{\rm t}$ or $E_{\rm b}$ ! cannot be found then the band energy is set to the input value. ! ! !REVISION HISTORY: ! Created September 2004 (JKD) ! Added two-pass loop, October 2013 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: sol integer, intent(in) :: l,k integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(in) :: vr(nr) real(8), intent(in) :: eps real(8), intent(in) :: demax real(8), intent(inout) :: e logical, intent(out) :: fnd ! local variables logical ft,fb ! maximum number of steps integer, parameter :: maxstp=250 integer ip,ie,nn ! initial step size real(8), parameter :: de0=0.001d0 real(8) de,et,eb,t,tp ! automatic arrays real(8) p0(nr),p1(nr),q0(nr),q1(nr) ft=.false. fb=.false. fnd=.false. et=e eb=e ! two-pass loop do ip=1,2 ! find the top of the band tp=0.d0 de=de0 do ie=1,maxstp et=et+de if (e.lt.0.d0) then if (et.gt.e+demax) exit end if call rschroddme(sol,0,l,k,et,nr,r,vr,nn,p0,p1,q0,q1) t=p0(nr) if (ie.gt.1) then if (t*tp.le.0.d0) then if (abs(de).lt.eps) then if (fb) goto 10 ft=.true. eb=et+5.d0*abs(de0) exit end if de=-0.5d0*de else de=1.5d0*de end if end if tp=t end do if (fb) return ! find the bottom of the band tp=0.d0 de=-de0 do ie=1,maxstp eb=eb+de if (eb.lt.e-demax) return call rschroddme(sol,0,l,k,eb,nr,r,vr,nn,p0,p1,q0,q1) t=p1(nr) if (ie.gt.1) then if (t*tp.le.0.d0) then if (abs(de).lt.eps) then if (ft) goto 10 fb=.true. et=eb-5.d0*abs(de0) exit end if de=-0.5d0*de else de=1.5d0*de end if end if tp=t end do end do return 10 continue ! set the band energy halfway between top and bottom e=(et+eb)/2.d0 fnd=.true. return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/ggamt_2a.f900000644002504400250440000000005012337331323016177 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggamt_2a.f900000644002504400250440000000236212337331323016746 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggamt_2a ! !INTERFACE: subroutine ggamt_2a(ias,g2rho,gvrho,grho2) ! !USES: use modmain ! !DESCRIPTION: ! Spin-unpolarised version of {\tt ggamt\_sp\_2a}. ! ! !REVISION HISTORY: ! Created November 2009 (JKD and TMcQ) !EOP !BOC implicit none ! arguments integer, intent(in) :: ias real(8), intent(out) :: g2rho(lmmaxvr,nrmtmax) real(8), intent(out) :: gvrho(lmmaxvr,nrmtmax,3) real(8), intent(out) :: grho2(lmmaxvr,nrmtmax) ! local variables integer is,nr,nri,i ! allocatable arrays real(8), allocatable :: rfmt(:,:),grfmt(:,:,:) allocate(rfmt(lmmaxvr,nrmtmax),grfmt(lmmaxvr,nrmtmax,3)) is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) ! compute grad^2 rho in spherical coordinates call grad2rfmt(nr,nri,spr(:,is),rhomt(:,:,ias),rfmt) call rbsht(nr,nri,1,rfmt,1,g2rho) ! compute grad rho in spherical coordinates call gradrfmt(nr,nri,spr(:,is),rhomt(:,:,ias),nrmtmax,grfmt) do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,gvrho(:,:,i)) end do ! (grad rho)^2 grho2(:,1:nr)=gvrho(:,1:nr,1)**2+gvrho(:,1:nr,2)**2+gvrho(:,1:nr,3)**2 deallocate(rfmt,grfmt) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gencore.f900000644002504400250440000000005012337331323016140 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gencore.f900000644002504400250440000001027512337331323016711 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: gencore ! !INTERFACE: subroutine gencore ! !USES: use modmain ! !DESCRIPTION: ! Computes the core radial wavefunctions, eigenvalues and densities. The ! radial Dirac equation is solved in the spherical part of the Kohn-Sham ! potential to which the atomic potential has been appended for ! $r>R_{\rm MT}$. In the case of spin-polarised calculations, and when ! {\tt spincore} is set to {\tt .true.}, the Dirac equation is solved in the ! spin-up and -down potentials created from the Kohn-Sham scalar potential and ! magnetic field magnitude, with the occupancy divided equally between up and ! down. The up and down densities determined in this way are added to both the ! scalar density and the magnetisation in the routine {\tt rhocore}. Note ! that this procedure is a simple, but inexact, approach to solving the radial ! Dirac equation in a magnetic field. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) ! Added polarised cores, November 2009 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ja,ias,jas integer ispn,ist,nr,ir real(8) t1 ! automatic arrays logical done(natmmax) real(8) vr(spnrmax),eval(spnstmax) ! allocatable arrays real(8), allocatable :: br(:) if (spincore) allocate(br(nrmtmax)) ! loop over species and atoms do is=1,nspecies nr=nrmt(is) done(:)=.false. do ia=1,natoms(is) if (done(ia)) cycle ias=idxas(ia,is) ! Kohn-Sham magnetic field for spin-polarised core if (spincore) then if (ncmag) then do ir=1,nr br(ir)=sqrt(bxcmt(1,ir,ias,1)**2 & +bxcmt(1,ir,ias,2)**2 & +bxcmt(1,ir,ias,3)**2)*y00 end do else do ir=1,nr br(ir)=abs(bxcmt(1,ir,ias,1))*y00 end do end if end if ! loop over spin channels do ispn=1,nspncr ! use the spherical part of the crystal Kohn-Sham potential vr(1:nr)=vsmt(1,1:nr,ias)*y00 ! spin-up and -down potentials for polarised core if (spincore) then if (ispn.eq.1) then vr(1:nr)=vr(1:nr)+br(1:nr) else vr(1:nr)=vr(1:nr)-br(1:nr) end if end if ! append the Kohn-Sham potential from the atomic calculation for r > R_MT t1=vr(nr)-spvr(nr,is) do ir=nr+1,spnr(is) vr(ir)=spvr(ir,is)+t1 end do rhocr(:,ias,ispn)=0.d0 !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(t1,ir) SHARED(is) !$OMP DO do ist=1,spnst(is) if (spcore(ist,is)) then ! solve the Dirac equation eval(ist)=evalcr(ist,ias) call rdirac(solsc,spn(ist,is),spl(ist,is),spk(ist,is),spnr(is), & spr(:,is),vr,eval(ist),rwfcr(:,1,ist,ias),rwfcr(:,2,ist,ias)) if (spincore) then ! use the spin-averaged eigenvalue for the polarised core if (ispn.eq.1) then evalcr(ist,ias)=eval(ist) else evalcr(ist,ias)=0.5d0*(evalcr(ist,ias)+eval(ist)) end if t1=0.5d0*occcr(ist,ias) else evalcr(ist,ias)=eval(ist) t1=occcr(ist,ias) end if ! add to the core density !$OMP CRITICAL do ir=1,spnr(is) rhocr(ir,ias,ispn)=rhocr(ir,ias,ispn) & +t1*(rwfcr(ir,1,ist,ias)**2+rwfcr(ir,2,ist,ias)**2) end do !$OMP END CRITICAL end if end do !$OMP END DO !$OMP END PARALLEL do ir=1,spnr(is) rhocr(ir,ias,ispn)=rhocr(ir,ias,ispn)/(fourpi*spr(ir,is)**2) end do ! end loop over spin channels end do done(ia)=.true. ! copy to equivalent atoms do ja=1,natoms(is) if ((.not.done(ja)).and.(eqatoms(ia,ja,is))) then jas=idxas(ja,is) do ist=1,spnst(is) if (spcore(ist,is)) then evalcr(ist,jas)=evalcr(ist,ias) rwfcr(1:spnr(is),:,ist,jas)=rwfcr(1:spnr(is),:,ist,ias) end if end do rhocr(1:spnr(is),jas,:)=rhocr(1:spnr(is),ias,:) done(ja)=.true. end if end do ! end loop over species and atoms end do end do if (spincore) deallocate(br) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rdmft.f900000644002504400250440000000005012337331324015633 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmft.f900000644002504400250440000000701412337331324016401 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmft ! !INTERFACE: subroutine rdmft ! !USES: use modmain use modrdm use modmpi ! !DESCRIPTION: ! Main routine for one-body reduced density matrix functional theory (RDMFT). ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! initialise global variables call init0 call init1 ! generate q-point set and wiq2 array call init2 ! read density and potentials from file call readstate ! generate the core wavefunctions and densities call gencore ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr ! compute the kinetic energy of the core call energykncr ! delete any existing Coulomb matrix elements files if (mp_mpi) then open(95,file='VNLIJJI.OUT'); close(95,status='DELETE') open(95,file='VNLIJJK.OUT'); close(95,status='DELETE') end if ! generate the first- and second-variational eigenvectors and eigenvalues call genevfsv ! find the occupation numbers call occupy ! generate the kinetic matrix elements in the Cartesian basis call genkmatc(.true.) ! open information files (MPI master process only) if (mp_mpi) then open(60,file='RDM_INFO.OUT',action='WRITE',form='FORMATTED') open(61,file='RDMN_ENERGY.OUT',action='WRITE',form='FORMATTED') open(62,file='RDMC_ENERGY.OUT',action='WRITE',form='FORMATTED') if (spinpol) then open(63,file='RDMN_MOMENT.OUT',action='WRITE',form='FORMATTED') open(64,file='RDMC_MOMENT.OUT',action='WRITE',form='FORMATTED') end if open(65,file='RDM_ENERGY.OUT',action='WRITE',form='FORMATTED') ! write out general information to RDM_INFO.OUT call writeinfo(60) write(60,*) write(60,'("+------------------------------+")') write(60,'("| Self-consistent loop started |")') write(60,'("+------------------------------+")') end if ! begin main RDMFT self-consistent loop do iscl=1,rdmmaxscl if (mp_mpi) then write(60,*) write(60,'("+--------------------+")') write(60,'("| Loop number : ",I4," |")') iscl write(60,'("+--------------------+")') call flushifc(60) write(*,*) write(*,'("Info(rdmft): self-consistent loop number : ",I4)') iscl end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) ! minimisation over natural orbitals call rdmminc ! minimisation over occupation number call rdmminn ! compute the RDMFT 'eigenvalues' call rdmeval if (mp_mpi) then call rdmwriteengy(60) call writechg(60) call writeeval ! write out the total energy write(65,'(G18.10)') engytot call flushifc(65) end if end do if (mp_mpi) then write(60,*) write(60,'("+------------------------------+")') write(60,'("| Self-consistent loop stopped |")') write(60,'("+------------------------------+")') ! write density to STATE.OUT call writestate write(60,*) write(60,'("Wrote STATE.OUT")') write(60,*) write(60,'("+----------------------------+")') write(60,'("| Elk version ",I1.1,".",I1.1,".",I2.2," stopped |")') version write(60,'("+----------------------------+")') ! close information files close(60) close(61) close(62) if (spinpol) then close(63) close(64) end if close(65) end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/axangrot.f900000644002504400250440000000005012337331323016341 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/axangrot.f900000644002504400250440000000251512337331323017110 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: axangrot ! !INTERFACE: subroutine axangrot(v,th,rot) ! !INPUT/OUTPUT PARAMETERS: ! v : axis vector (in,real) ! th : rotation angle (in,real) ! rot : rotation matrix (out,real(3,3)) ! !DESCRIPTION: ! Determines the $3\times 3$ rotation matrix of a rotation specified by an ! axis-angle pair following the `right-hand rule'. The axis vector need not be ! normalised. See {\tt rotaxang} for details. ! ! !REVISION HISTORY: ! Created February 2014 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: v(3),th real(8), intent(out) :: rot(3,3) ! local variables real(8) x,y,z,x2,y2,z2 real(8) xy,xz,yz,cs,sn,t1 x=v(1) y=v(2) z=v(3) t1=sqrt(x**2+y**2+z**2) ! if the axis has zero length then assume the identity if (t1.lt.1.d-14) then rot(:,:)=0.d0 rot(1,1)=1.d0 rot(2,2)=1.d0 rot(3,3)=1.d0 return end if t1=1.d0/t1 x=x*t1 y=y*t1 z=z*t1 x2=x**2 y2=y**2 z2=z**2 xy=x*y xz=x*z yz=y*z cs=cos(th) sn=sin(th) t1=1.d0-cs rot(1,1)=cs+x2*t1 rot(2,1)=xy*t1+z*sn rot(3,1)=xz*t1-y*sn rot(1,2)=xy*t1-z*sn rot(2,2)=cs+y2*t1 rot(3,2)=yz*t1+x*sn rot(1,3)=xz*t1+y*sn rot(2,3)=yz*t1-x*sn rot(3,3)=cs+z2*t1 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/symrvf.f900000644002504400250440000000005012337331324016045 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/symrvf.f900000644002504400250440000001154212337331324016614 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: symrvf ! !INTERFACE: subroutine symrvf(lrstp,rvfmt,rvfir) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! lrstp : radial step length (in,integer) ! rvfmt : real muffin-tin vector field ! (in,real(lmmaxvr,nrmtmax,natmtot,ndmag)) ! rvfir : real interstitial vector field (in,real(ngtot,ndmag)) ! !DESCRIPTION: ! Symmetrises a vector field defined over the entire unit cell using the full ! set of crystal symmetries. If a particular symmetry involves rotating atom ! 1 into atom 2, then the spatial and spin rotations of that symmetry are ! applied to the vector field in atom 2 (expressed in spherical harmonic ! coefficients), which is then added to the field in atom 1. This is repeated ! for all symmetry operations. The fully symmetrised field in atom 1 is then ! rotated and copied to atom 2. Symmetrisation of the interstitial part of the ! field is performed by {\tt symrvfir}. See also {\tt symrfmt} and ! {\tt findsym}. ! ! !REVISION HISTORY: ! Created May 2007 (JKD) ! Fixed problem with improper rotations, February 2008 (L. Nordstrom, ! F. Bultmark and F. Cricchio) !EOP !BOC implicit none ! arguments integer, intent(in) :: lrstp real(8), intent(inout) :: rvfmt(lmmaxvr,nrmtmax,natmtot,ndmag) real(8), intent(inout) :: rvfir(ngtot,ndmag) ! local variables integer is,ia,ja,ias,jas integer nrc,ld,ir,lm integer isym,lspl,ilspl integer lspn,ilspn,md,i real(8) sc(3,3),v(3),t1 ! automatic arrays logical done(natmmax) ! allocatable arrays real(8), allocatable :: rvfmt1(:,:,:,:),rvfmt2(:,:,:) !-------------------------! ! muffin-tin part ! !-------------------------! allocate(rvfmt1(lmmaxvr,nrmtmax,natmmax,ndmag)) allocate(rvfmt2(lmmaxvr,nrmtmax,ndmag)) t1=1.d0/dble(nsymcrys) do is=1,nspecies ld=lmmaxvr*lrstp nrc=(nrmt(is)-1)/lrstp+1 ! make copy of vector field for all atoms of current species do i=1,ndmag do ia=1,natoms(is) ias=idxas(ia,is) do ir=1,nrmt(is),lrstp rvfmt1(:,ir,ia,i)=rvfmt(:,ir,ias,i) end do end do end do done(:)=.false. do ia=1,natoms(is) if (done(ia)) cycle ias=idxas(ia,is) do ir=1,nrmt(is),lrstp rvfmt(:,ir,ias,:)=0.d0 end do ! begin loop over crystal symmetries do isym=1,nsymcrys ! equivalent atom ja=ieqatom(ia,is,isym) ! parallel transport of vector field lspl=lsplsymc(isym) do i=1,ndmag call rotrflm(symlatc(:,:,lspl),lmaxvr,nrc,ld,rvfmt1(:,:,ja,i), & rvfmt2(:,:,i)) end do ! global spin proper rotation matrix in Cartesian coordinates lspn=lspnsymc(isym) md=symlatd(lspn) sc(:,:)=dble(md)*symlatc(:,:,lspn) ! global spin rotation of vector field if (ncmag) then ! non-collinear case do ir=1,nrmt(is),lrstp do lm=1,lmmaxvr v(:)=sc(:,1)*rvfmt2(lm,ir,1) & +sc(:,2)*rvfmt2(lm,ir,2) & +sc(:,3)*rvfmt2(lm,ir,3) rvfmt(lm,ir,ias,:)=rvfmt(lm,ir,ias,:)+v(:) end do end do else ! collinear case do ir=1,nrmt(is),lrstp do lm=1,lmmaxvr rvfmt(lm,ir,ias,1)=rvfmt(lm,ir,ias,1)+sc(3,3)*rvfmt2(lm,ir,1) end do end do end if ! end loop over crystal symmetries end do ! normalise do ir=1,nrmt(is),lrstp rvfmt(:,ir,ias,:)=t1*rvfmt(:,ir,ias,:) end do ! mark atom as done done(ia)=.true. ! rotate into equivalent atoms do isym=1,nsymcrys ja=ieqatom(ia,is,isym) if (.not.done(ja)) then jas=idxas(ja,is) ! parallel transport of vector field (using operation inverse) lspl=lsplsymc(isym) ilspl=isymlat(lspl) do i=1,ndmag call rotrflm(symlatc(:,:,ilspl),lmaxvr,nrc,ld,rvfmt(:,:,ias,i), & rvfmt(:,:,jas,i)) end do ! inverse of global proper rotation matrix in Cartesian coordinates lspn=lspnsymc(isym) ilspn=isymlat(lspn) md=symlatd(ilspn) sc(:,:)=dble(md)*symlatc(:,:,ilspn) ! global spin rotation of vector field if (ncmag) then ! non-collinear case do ir=1,nrmt(is),lrstp do lm=1,lmmaxvr v(:)=rvfmt(lm,ir,jas,:) rvfmt(lm,ir,jas,:)=sc(:,1)*v(1)+sc(:,2)*v(2)+sc(:,3)*v(3) end do end do else ! collinear case do ir=1,nrmt(is),lrstp do lm=1,lmmaxvr rvfmt(lm,ir,jas,1)=sc(3,3)*rvfmt(lm,ir,jas,1) end do end do end if ! mark atom as done done(ja)=.true. end if end do ! end loop over atoms and species end do end do deallocate(rvfmt1,rvfmt2) !---------------------------! ! interstitial part ! !---------------------------! call symrvfir(ngvec,rvfir) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genppts.f900000644002504400250440000000005012337331322016175 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/genppts.f900000644002504400250440000001347612337331322016754 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: genppts ! !INTERFACE: subroutine genppts(tfbz,nsym,sym,ngridp,npptnr,epslat,bvec,boxl,nppt,ipmap, & ipmapnr,ivp,vpl,vpc,wppt,wpptnr) ! !INPUT/OUTPUT PARAMETERS: ! tfbz : .true. if vpl and vpc should be mapped to the first Brillouin zone ! (in,logical) ! nsym : number of point group symmetries used for reduction, set to 1 for ! no reduction (in,integer) ! sym : symmetry matrices in lattice coordinates (in,integer(3,3,*)) ! ngridp : p-point grid sizes (in,integer(3)) ! npptnr : number of non-reduced p-points: ngridp(1)*ngridp(2)*ngridp(3) ! (in,integer) ! epslat : tolerance for determining identical vectors (in,real) ! bvec : reciprocal lattice vectors (in,real(3,3)) ! boxl : corners of box containing p-points in lattice coordinates, the ! first vector is the origin (in,real(3,4)) ! nppt : total number of p-points (out,integer) ! ipmap : map from integer grid to reduced p-point index ! (out,integer(0:ngridp(1)-1,0:ngridp(2)-1,0:ngridp(3)-1)) ! ipmapnr : map from integer grid to non-reduced p-point index ! (out,integer(0:ngridp(1)-1,0:ngridp(2)-1,0:ngridp(3)-1)) ! ivp : integer coordinates of the p-points ! (out,integer(3,ngridp(1)*ngridp(2)*ngridp(3))) ! vpl : lattice coordinates of each p-point ! (out,real(3,ngridp(1)*ngridp(2)*ngridp(3))) ! vpc : Cartesian coordinates of each p-point ! (out,real(3,ngridp(1)*ngridp(2)*ngridp(3))) ! wppt : weights of each reduced p-point ! (out,real(ngridp(1)*ngridp(2)*ngridp(3))) ! wpptnr : weight of each non-reduced p-point (out,real) ! !DESCRIPTION: ! This routine is used for generating $k$-point or $q$-point sets. Since these ! are stored in global arrays, the points passed to this and other routines ! are referred to as $p$-points. In lattice coordinates, the ${\bf p}$ vectors ! are given by ! $$ {\bf p}=\left(\begin{matrix} & & \\ ! {\bf B}_2-{\bf B}_1 & {\bf B}_3-{\bf B}_1 & {\bf B}_4-{\bf B}_1 \\ ! & & \end{matrix}\right) ! \left(\begin{matrix}i_1/n_1 \\ i_2/n_2 \\ i_3/n_3 \end{matrix}\right) ! +{\bf B}_1 $$ ! where $i_j$ runs from 0 to $n_j-1$, and the ${\bf B}$ vectors define the ! corners of a box with ${\bf B}_1$ as the origin. If {\tt tfbz} is ! {\tt .true.} then each {\tt vpl} vector is mapped to the first Brillouin ! zone. If {\tt tfbz} is {\tt .false.} and {\tt nsym} $>0$, then the ! coordinates of each {\tt vpl} are mapped to the $[0,1)$ interval. The ! $p$-point weights are stored in {\tt wppt} and the array {\tt ipmap} ! contains the map from the integer coordinates to the reduced index. ! ! !REVISION HISTORY: ! Created August 2002 (JKD) ! Updated April 2007 (JKD) ! Added mapping to the first Brillouin zone, September 2008 (JKD) ! Made independent of modmain, February 2010 (JKD) !EOP !BOC implicit none ! arguments logical, intent(in) :: tfbz integer, intent(in) :: nsym integer, intent(in) :: sym(3,3,*) integer, intent(in) :: ngridp(3) integer, intent(in) :: npptnr real(8), intent(in) :: epslat real(8), intent(in) :: bvec(3,3) real(8), intent(in) :: boxl(3,4) integer, intent(out) :: nppt integer, intent(out) :: ipmap(0:ngridp(1)-1,0:ngridp(2)-1,0:ngridp(3)-1) integer, intent(out) :: ipmapnr(0:ngridp(1)-1,0:ngridp(2)-1,0:ngridp(3)-1) integer, intent(out) :: ivp(3,npptnr) real(8), intent(out) :: vpl(3,npptnr) real(8), intent(out) :: vpc(3,npptnr) real(8), intent(out) :: wppt(npptnr) real(8), intent(out) :: wpptnr ! local variables integer i1,i2,i3,i integer isym,ip,jp real(8) v1(3),v2(3),v3(3),v4(3) real(8) b(3,3),t1 if ((ngridp(1).le.0).or.(ngridp(2).le.0).or.(ngridp(3).le.0)) then write(*,*) write(*,'("Error(genppts): invalid ngridp : ",3I8)') ngridp write(*,*) stop end if if (npptnr.ne.ngridp(1)*ngridp(2)*ngridp(3)) then write(*,*) write(*,'("Error(genppts): mismatched npptnr and ngridp : ",4I8)') npptnr, & ngridp write(*,*) stop end if ! box vector matrix b(:,1)=boxl(:,2)-boxl(:,1) b(:,2)=boxl(:,3)-boxl(:,1) b(:,3)=boxl(:,4)-boxl(:,1) ! weight of each non-reduced p-point wpptnr=1.d0/dble(ngridp(1)*ngridp(2)*ngridp(3)) ip=0 jp=npptnr+1 do i3=0,ngridp(3)-1 v1(3)=dble(i3)/dble(ngridp(3)) do i2=0,ngridp(2)-1 v1(2)=dble(i2)/dble(ngridp(2)) do i1=0,ngridp(1)-1 v1(1)=dble(i1)/dble(ngridp(1)) call r3mv(b,v1,v2) v2(:)=v2(:)+boxl(:,1) if (nsym.gt.1) then ! determine if this point is equivalent to one already in the set do isym=1,nsym v3(:)=sym(1,:,isym)*v2(1)+sym(2,:,isym)*v2(2)+sym(3,:,isym)*v2(3) call r3frac(epslat,v3) do i=1,ip v4(:)=vpl(:,i) call r3frac(epslat,v4) t1=abs(v4(1)-v3(1))+abs(v4(2)-v3(2))+abs(v4(3)-v3(3)) if (t1.lt.epslat) then ! equivalent p-point found so add to existing weight ipmap(i1,i2,i3)=i wppt(i)=wppt(i)+wpptnr ! add new point to back of set jp=jp-1 ipmapnr(i1,i2,i3)=jp ivp(1,jp)=i1; ivp(2,jp)=i2; ivp(3,jp)=i3 vpl(:,jp)=v2(:) wppt(jp)=0.d0 goto 10 end if end do end do end if ! add new point to set ip=ip+1 ipmap(i1,i2,i3)=ip ipmapnr(i1,i2,i3)=ip ivp(1,ip)=i1; ivp(2,ip)=i2; ivp(3,ip)=i3 vpl(:,ip)=v2(:) wppt(ip)=wpptnr 10 continue end do end do end do nppt=ip do ip=1,npptnr ! map vpl to the first Brillouin zone if required if (tfbz) call vecfbz(epslat,bvec,vpl(:,ip)) ! determine the Cartesian coordinates of the p-points call r3mv(bvec,vpl(:,ip),vpc(:,ip)) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/modmain.f900000644002504400250440000000005012337331322016141 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modmain.f900000644002504400250440000011133012337331322016704 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2009 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modmain !----------------------------! ! lattice parameters ! !----------------------------! ! lattice vectors stored column-wise real(8) avec(3,3) ! magnitude of random displacements added to lattice vectors real(8) rndavec ! inverse of lattice vector matrix real(8) ainv(3,3) ! reciprocal lattice vectors real(8) bvec(3,3) ! inverse of reciprocal lattice vector matrix real(8) binv(3,3) ! unit cell volume real(8) omega ! Brillouin zone volume real(8) omegabz ! any vector with length less than epslat is considered zero real(8) epslat !--------------------------! ! atomic variables ! !--------------------------! ! maximum allowed species integer, parameter :: maxspecies=8 ! maximum allowed atoms per species integer, parameter :: maxatoms=200 ! number of species integer nspecies ! number of atoms for each species integer natoms(maxspecies) ! maximum number of atoms over all the species integer natmmax ! total number of atoms integer natmtot ! index to atoms and species integer idxas(maxatoms,maxspecies) ! inverse atoms and species indices integer idxis(maxatoms*maxspecies) integer idxia(maxatoms*maxspecies) ! molecule is .true. is the system is an isolated molecule logical molecule ! primcell is .true. if primitive unit cell is to be found automatically logical primcell ! atomic positions in lattice coordinates real(8) atposl(3,maxatoms,maxspecies) ! atomic positions in Cartesian coordinates real(8) atposc(3,maxatoms,maxspecies) ! magnitude of random displacements added to the atomic positions real(8) rndatposc !----------------------------------! ! atomic species variables ! !----------------------------------! ! species files path character(256) sppath ! species filenames character(256) spfname(maxspecies) ! species name character(256) spname(maxspecies) ! species symbol character(256) spsymb(maxspecies) ! species nuclear charge real(8) spzn(maxspecies) ! ptnucl is .true. if the nuclei are to be treated as point charges, if .false. ! the nuclei have a finite spherical distribution logical ptnucl ! nuclear radius real(8) rnucl(maxspecies) ! nuclear volume real(8) vnucl(maxspecies) ! number of radial mesh points to nuclear radius integer nrnucl(maxspecies) ! number of coarse radial mesh points to nuclear radius integer nrcnucl(maxspecies) ! species electronic charge real(8) spze(maxspecies) ! species mass real(8) spmass(maxspecies) ! smallest radial point for each species real(8) sprmin(maxspecies) ! effective infinity for species real(8) sprmax(maxspecies) ! number of radial points to effective infinity for each species integer spnr(maxspecies) ! maximum spnr over all the species integer spnrmax ! maximum allowed states for each species integer, parameter :: maxspst=40 ! number of states for each species integer spnst(maxspecies) ! maximum spnst over all the species integer spnstmax ! core-valence cut-off energy for species file generation real(8) ecvcut ! semi-core-valence cut-off energy for species file generation real(8) esccut ! state principle quantum number for each species integer spn(maxspst,maxspecies) ! state l value for each species integer spl(maxspst,maxspecies) ! state k value for each species integer spk(maxspst,maxspecies) ! spcore is .true. if species state is core logical spcore(maxspst,maxspecies) ! total number of core states integer nstcr ! state eigenvalue for each species real(8) speval(maxspst,maxspecies) ! state occupancy for each species real(8) spocc(maxspst,maxspecies) ! species radial mesh real(8), allocatable :: spr(:,:) ! species charge density real(8), allocatable :: sprho(:,:) ! species self-consistent potential real(8), allocatable :: spvr(:,:) !---------------------------------------------------------------! ! muffin-tin radial mesh and angular momentum variables ! !---------------------------------------------------------------! ! scale factor for number of muffin-tin points integer nrmtscf ! number of muffin-tin radial points for each species integer nrmt(maxspecies) ! maximum nrmt over all the species integer nrmtmax ! minimum allowed distance between muffin-tin surfaces real(8) rmtdelta ! muffin-tin radii real(8) rmt(maxspecies) ! total muffin-tin volume real(8) omegamt ! radial step length for coarse mesh integer lradstp ! number of coarse radial mesh points integer nrcmt(maxspecies) ! maximum nrcmt over all the species integer nrcmtmax ! coarse muffin-tin radial mesh real(8), allocatable :: rcmt(:,:) ! maximum allowable angular momentum for augmented plane waves integer, parameter :: maxlapw=50 ! maximum angular momentum for augmented plane waves integer lmaxapw ! (lmaxapw+1)^2 integer lmmaxapw ! maximum angular momentum for potentials and densities integer lmaxvr ! (lmaxvr+1)^2 integer lmmaxvr ! maximum angular momentum used when evaluating the Hamiltonian matrix elements integer lmaxmat ! (lmaxmat+1)^2 integer lmmaxmat ! maximum angular momentum in the inner part of the muffin-int integer lmaxinr ! (lmaxinr+1)^2 integer lmmaxinr ! fraction of muffin-tin radius which constitutes the inner part real(8) fracinr ! number of fine/coarse radial points on the inner part of the muffin-tin integer nrmtinr(maxspecies),nrcmtinr(maxspecies) ! index to (l,m) pairs integer, allocatable :: idxlm(:,:) ! inverse index to (l,m) pairs integer, allocatable :: idxil(:),idxim(:) !--------------------------------! ! spin related variables ! !--------------------------------! ! spinpol is .true. for spin-polarised calculations logical spinpol ! spinorb is .true. for spin-orbit coupling logical spinorb ! scale factor of spin-orbit coupling term in Hamiltonian real(8) socscf ! dimension of magnetisation and magnetic vector fields (1 or 3) integer ndmag ! ncmag is .true. if the magnetisation is non-collinear, i.e. when ndmag = 3 logical ncmag ! if cmagz is .true. then collinear magnetism along the z-axis is enforced logical cmagz ! fixed spin moment type ! 0 : none ! 1 (-1) : total moment (direction) ! 2 (-2) : individual muffin-tin moments (direction) ! 3 (-3) : total and muffin-tin moments (direction) integer fsmtype ! fixed total spin magnetic moment real(8) momfix(3) ! fixed spin moment global effective field in Cartesian coordinates real(8) bfsmc(3) ! muffin-tin fixed spin moments real(8) mommtfix(3,maxatoms,maxspecies) ! muffin-tin fixed spin moment effective fields in Cartesian coordinates real(8), allocatable :: bfsmcmt(:,:) ! fixed spin moment field step size real(8) taufsm ! second-variational spinor dimension (1 or 2) integer nspinor ! global external magnetic field in Cartesian coordinates real(8) bfieldc(3) ! initial field real(8) bfieldc0(3) ! external magnetic field in each muffin-tin in Cartesian coordinates real(8) bfcmt(3,maxatoms,maxspecies) ! initial field as read in from input file real(8) bfcmt0(3,maxatoms,maxspecies) ! magnitude of random vectors added to muffin-tin fields real(8) rndbfcmt ! external magnetic fields are multiplied by reducebf after each s.c. loop real(8) reducebf ! spinsprl is .true. if a spin-spiral is to be calculated logical spinsprl ! ssdph is .true. if the muffin-tin spin-spiral magnetisation is de-phased logical ssdph ! number of spin-dependent first-variational functions per state integer nspnfv ! map from second- to first-variational spin index integer jspnfv(2) ! spin-spiral q-vector in lattice coordinates real(8) vqlss(3) ! spin-spiral q-vector in Cartesian coordinates real(8) vqcss(3) ! current q-point in spin-spiral supercell calculation integer iqss ! number of primitive unit cells in spin-spiral supercell integer nscss ! number of fixed spin direction points on the sphere for finding the magnetic ! anisotropy energy (MAE) integer npmae0,npmae ! (theta,phi) coordinates for each MAE direction real(8), allocatable :: tpmae(:,:) !---------------------------------------------! ! electric field and vector potential ! !---------------------------------------------! ! efieldpol is .true. if a polarising constant electric field is applied logical efieldpol ! electric field vector in Cartesian coordinates real(8) efieldc(3) ! electric field vector in lattice coordinates real(8) efieldl(3) ! afieldpol is .true. if a polarising constant vector potential is applied logical afieldpol ! vector potential which couples to paramagnetic current real(8) afieldc(3) !----------------------------! ! symmetry variables ! !----------------------------! ! type of symmetry allowed for the crystal ! 0 : only the identity element is used ! 1 : full symmetry group is used ! 2 : only symmorphic symmetries are allowed integer symtype ! number of Bravais lattice point group symmetries integer nsymlat ! Bravais lattice point group symmetries integer symlat(3,3,48) ! determinants of lattice symmetry matrices (1 or -1) integer symlatd(48) ! index to inverses of the lattice symmetries integer isymlat(48) ! lattice point group symmetries in Cartesian coordinates real(8) symlatc(3,3,48) ! tshift is .true. if atomic basis is allowed to be shifted logical tshift ! tsyminv is .true. if the crystal has inversion symmetry logical tsyminv ! maximum of symmetries allowed integer, parameter :: maxsymcrys=192 ! number of crystal symmetries integer nsymcrys ! crystal symmetry translation vector in lattice coordinates real(8) vtlsymc(3,maxsymcrys) ! tvzsymc is .true. if the translation vector is zero logical tvzsymc(maxsymcrys) ! spatial rotation element in lattice point group for each crystal symmetry integer lsplsymc(maxsymcrys) ! global spin rotation element in lattice point group for each crystal symmetry integer lspnsymc(maxsymcrys) ! equivalent atom index for each crystal symmetry integer, allocatable :: ieqatom(:,:,:) ! eqatoms(ia,ja,is) is .true. if atoms ia and ja are equivalent logical, allocatable :: eqatoms(:,:,:) ! number of site symmetries integer, allocatable :: nsymsite(:) ! site symmetry spatial rotation element in lattice point group integer, allocatable :: lsplsyms(:,:) ! site symmetry global spin rotation element in lattice point group integer, allocatable :: lspnsyms(:,:) !----------------------------! ! G-vector variables ! !----------------------------! ! G-vector cut-off for interstitial potential and density real(8) gmaxvr ! G-vector grid sizes integer ngridg(3) ! total number of G-vectors integer ngtot ! integer grid intervals for each direction integer intgv(2,3) ! number of G-vectors with G < gmaxvr integer ngvec ! G-vector integer coordinates (i1,i2,i3) integer, allocatable :: ivg(:,:) ! map from (i1,i2,i3) to G-vector index integer, allocatable :: ivgig(:,:,:) ! map from G-vector array to FFT array integer, allocatable :: igfft(:) ! G-vectors in Cartesian coordinates real(8), allocatable :: vgc(:,:) ! length of G-vectors real(8), allocatable :: gc(:) ! spherical Bessel functions j_l(|G|R_mt) real(8), allocatable :: jlgr(:,:,:) ! spherical harmonics of the G-vectors complex(8), allocatable :: ylmg(:,:) ! structure factors for the G-vectors complex(8), allocatable :: sfacg(:,:) ! smooth step function form factors for all species and G-vectors real(8), allocatable :: ffacg(:,:) ! ffdamp is .true. if the form factors should be damped to zero at gmaxvr logical ffdamp ! characteristic function in G-space: 0 inside the muffin-tins and 1 outside complex(8), allocatable :: cfunig(:) ! characteristic function in real-space: 0 inside the muffin-tins and 1 outside real(8), allocatable :: cfunir(:) !---------------------------! ! k-point variables ! !---------------------------! ! autokpt is .true. if the k-point set is determined automatically logical autokpt ! radius of sphere used to determine k-point density when autokpt is .true. real(8) radkpt ! k-point grid sizes integer ngridk(3) ! k-point offset real(8) vkloff(3) ! corners of box in lattice coordinates containing the k-points real(8) kptboxl(3,4) ! type of reduction to perform on k-point set ! 0 : no reduction ! 1 : reduce with full crystal symmetry group ! 2 : reduce with symmorphic symmetries only integer reducek ! number of point group symmetries used for k-point reduction integer nsymkpt ! point group symmetry matrices used for k-point reduction integer symkpt(3,3,48) ! total number of reduced k-points integer nkpt ! total number of non-reduced k-points integer nkptnr ! map from non-reduced grid to reduced index integer, allocatable :: ikmap(:,:,:) ! map from non-reduced grid to non-reduced index integer, allocatable :: ikmapnr(:,:,:) ! locations of k-points on integer grid integer, allocatable :: ivk(:,:) ! k-points in lattice coordinates real(8), allocatable :: vkl(:,:) ! k-points in Cartesian coordinates real(8), allocatable :: vkc(:,:) ! reduced k-point weights real(8), allocatable :: wkpt(:) ! weight of each non-reduced k-point real(8) wkptnr ! k-point at which to determine effective mass tensor real(8) vklem(3) ! displacement size for computing the effective mass tensor real(8) deltaem ! number of displacements in each direction integer ndspem !------------------------------! ! G+k-vector variables ! !------------------------------! ! species for which the muffin-tin radius will be used for calculating gkmax integer isgkmax ! smallest muffin-tin radius times gkmax real(8) rgkmax ! maximum |G+k| cut-off for APW functions real(8) gkmax ! number of G+k-vectors for augmented plane waves integer, allocatable :: ngk(:,:) ! maximum number of G+k-vectors over all k-points integer ngkmax ! index from G+k-vectors to G-vectors integer, allocatable :: igkig(:,:,:) ! G+k-vectors in lattice coordinates real(8), allocatable :: vgkl(:,:,:,:) ! G+k-vectors in Cartesian coordinates real(8), allocatable :: vgkc(:,:,:,:) ! length of G+k-vectors real(8), allocatable :: gkc(:,:,:) ! (theta, phi) coordinates of G+k-vectors real(8), allocatable :: tpgkc(:,:,:,:) ! structure factors for the G+k-vectors complex(8), allocatable :: sfacgk(:,:,:,:) !---------------------------! ! q-point variables ! !---------------------------! ! q-point grid sizes integer ngridq(3) ! type of reduction to perform on q-point set (see reducek) integer reduceq ! number of point group symmetries used for q-point reduction integer nsymqpt ! point group symmetry matrices used for q-point reduction integer symqpt(3,3,48) ! total number of reduced q-points integer nqpt ! total number of non-reduced q-points integer nqptnr ! map from non-reduced grid to reduced index integer, allocatable :: iqmap(:,:,:) ! map from non-reduced grid to non-reduced index integer, allocatable :: iqmapnr(:,:,:) ! locations of q-points on integer grid integer, allocatable :: ivq(:,:) ! q-points in lattice coordinates real(8), allocatable :: vql(:,:) ! q-points in Cartesian coordinates real(8), allocatable :: vqc(:,:) ! q-point weights real(8), allocatable :: wqpt(:) ! weight for each non-reduced q-opint real(8) wqptnr ! index to q = 0 point integer iq0 ! weights associated with the integral of 1/q^2 real(8), allocatable :: wiq2(:) !-----------------------------------------------------! ! spherical harmonic transform (SHT) matrices ! !-----------------------------------------------------! ! real backward SHT matrix for lmaxvr real(8), allocatable :: rbshtvr(:,:) ! real forward SHT matrix for lmaxvr real(8), allocatable :: rfshtvr(:,:) ! real backward SHT matrix for lmaxinr real(8), allocatable :: rbshtinr(:,:) ! real forward SHT matrix for lmaxinr real(8), allocatable :: rfshtinr(:,:) ! complex backward SHT matrix for lmaxvr complex(8), allocatable :: zbshtvr(:,:) ! complex forward SHT matrix for lmaxvr complex(8), allocatable :: zfshtvr(:,:) ! complex backward SHT matrix for lmaxinr complex(8), allocatable :: zbshtinr(:,:) ! complex forward SHT matrix for lmaxinr complex(8), allocatable :: zfshtinr(:,:) !-----------------------------------------! ! potential and density variables ! !-----------------------------------------! ! exchange-correlation functional type integer xctype(3) ! exchange-correlation functional description character(512) xcdescr ! exchange-correlation functional spin requirement integer xcspin ! exchange-correlation functional density gradient requirement integer xcgrad ! setting ncgga to .true. improves convergence of non-collinear GGA calculations logical ncgga ! Tran-Blaha '09 constant c [Phys. Rev. Lett. 102, 226401 (2009)] real(8) c_tb09 ! tc_tb09 is .true. if the Tran-Blaha constant has been read in logical tc_tb09 ! muffin-tin charge density real(8), allocatable :: rhomt(:,:,:) ! interstitial real-space charge density real(8), allocatable :: rhoir(:) ! trhonorm is .true. if the density is to be normalised after every iteration logical trhonorm ! muffin-tin magnetisation vector field real(8), allocatable :: magmt(:,:,:,:) ! interstitial magnetisation vector field real(8), allocatable :: magir(:,:) ! amount of smoothing to be applied to the density; this is the number of ! 3-point running averages performed on the radial functions in the muffin-tins integer msmooth ! muffin-tin Coulomb potential real(8), allocatable :: vclmt(:,:,:) ! interstitial real-space Coulomb potential real(8), allocatable :: vclir(:) ! Poisson solver pseudocharge density constant integer npsd ! lmaxvr+npsd+1 integer lnpsd ! muffin-tin exchange energy density real(8), allocatable :: exmt(:,:,:) ! interstitial real-space exchange energy density real(8), allocatable :: exir(:) ! muffin-tin correlation energy density real(8), allocatable :: ecmt(:,:,:) ! interstitial real-space correlation energy density real(8), allocatable :: ecir(:) ! muffin-tin exchange-correlation potential real(8), allocatable :: vxcmt(:,:,:) ! interstitial real-space exchange-correlation potential real(8), allocatable :: vxcir(:) ! muffin-tin Kohn-Sham effective potential real(8), allocatable :: vsmt(:,:,:) ! interstitial Kohn-Sham effective potential real(8), allocatable :: vsir(:) ! G-space interstitial Kohn-Sham effective potential complex(8), allocatable :: vsig(:) ! trimvg is .true. if vsir should be trimmed for |G| > gmaxvr/2 logical trimvg ! muffin-tin exchange-correlation magnetic field real(8), allocatable :: bxcmt(:,:,:,:) ! interstitial exchange-correlation magnetic field real(8), allocatable :: bxcir(:,:) ! muffin-tin Kohn-Sham effective magnetic field in spherical coordinates real(8), allocatable :: bsmt(:,:,:,:) ! interstitial Kohn-Sham effective magnetic field real(8), allocatable :: bsir(:,:) ! spin-orbit coupling radial function real(8), allocatable :: socfr(:,:) ! nosource is .true. if the field is to be made source-free logical nosource ! muffin-tin paramagnetic current real(8), allocatable :: jcmt(:,:,:,:) ! interstitial paramagnetic current real(8), allocatable :: jcir(:,:) ! if trdstate is .true. the density and potential can be read from STATE.OUT logical trdstate !--------------------------! ! mixing variables ! !--------------------------! ! type of mixing to use for the potential integer mixtype ! mixing type description character(256) mixdescr ! adaptive mixing parameter real(8) beta0 real(8) betamax ! subspace dimension for Pulay mixing integer mixsdp ! subspace dimension for Broyden mixing integer mixsdb ! Broyden mixing parameters alpha and w0 real(8) broydpm(2) !-------------------------------------! ! charge and moment variables ! !-------------------------------------! ! tolerance for error in total charge real(8) epschg ! total nuclear charge real(8) chgzn ! core charges real(8) chgcr(maxspecies) ! total core charge real(8) chgcrtot ! core leakage charge real(8), allocatable :: chgcrlk(:) ! total valence charge real(8) chgval ! excess charge real(8) chgexs ! total charge real(8) chgtot ! calculated total charge real(8) chgcalc ! interstitial region charge real(8) chgir ! muffin-tin charges real(8), allocatable :: chgmt(:) ! total muffin-tin charge real(8) chgmttot ! effective Wigner radius real(8) rwigner ! total moment real(8) momtot(3) ! total moment magnitude real(8) momtotm ! interstitial region moment real(8) momir(3) ! muffin-tin moments real(8), allocatable :: mommt(:,:) ! total muffin-tin moment real(8) mommttot(3) !-----------------------------------------! ! APW and local-orbital variables ! !-----------------------------------------! ! maximum allowable APW order integer, parameter :: maxapword=4 ! APW order integer apword(0:maxlapw,maxspecies) ! maximum of apword over all angular momenta and species integer apwordmax ! APW initial linearisation energies real(8) apwe0(maxapword,0:maxlapw,maxspecies) ! APW linearisation energies real(8), allocatable :: apwe(:,:,:) ! APW derivative order integer apwdm(maxapword,0:maxlapw,maxspecies) ! apwve is .true. if the linearisation energies are allowed to vary logical apwve(maxapword,0:maxlapw,maxspecies) ! APW radial functions real(8), allocatable :: apwfr(:,:,:,:,:) ! derivate of radial functions at the muffin-tin surface real(8), allocatable :: apwdfr(:,:,:) ! maximum number of local-orbitals integer, parameter :: maxlorb=200 ! maximum allowable local-orbital order integer, parameter :: maxlorbord=4 ! number of local-orbitals integer nlorb(maxspecies) ! maximum nlorb over all species integer nlomax ! total number of local-orbitals integer nlotot ! local-orbital order integer lorbord(maxlorb,maxspecies) ! local-orbital angular momentum integer lorbl(maxlorb,maxspecies) ! maximum lorbl over all species integer lolmax ! (lolmax+1)^2 integer lolmmax ! local-orbital initial energies real(8) lorbe0(maxlorbord,maxlorb,maxspecies) ! local-orbital energies real(8), allocatable :: lorbe(:,:,:) ! local-orbital derivative order integer lorbdm(maxlorbord,maxlorb,maxspecies) ! lorbve is .true. if the linearisation energies are allowed to vary logical lorbve(maxlorbord,maxlorb,maxspecies) ! local-orbital radial functions real(8), allocatable :: lofr(:,:,:,:) ! band energy search tolerance real(8) epsband ! maximum allowed change in energy during band energy search; enforced only if ! default energy is less than zero real(8) demaxbnd ! minimum default linearisation energy over all APWs and local-orbitals real(8) e0min ! if autolinengy is .true. then the fixed linearisation energies are set to the ! Fermi energy minus dlefe logical autolinengy ! difference between linearisation and Fermi energies when autolinengy is .true. real(8) dlefe ! lorbcnd is .true. if conduction state local-orbitals should be added logical lorbcnd ! conduction state local-orbital order integer lorbordc !-------------------------------------------! ! overlap and Hamiltonian variables ! !-------------------------------------------! ! overlap and Hamiltonian matrices sizes at each k-point integer, allocatable :: nmat(:,:) ! maximum nmat over all k-points integer nmatmax ! index to the position of the local-orbitals in the H and O matrices integer, allocatable :: idxlo(:,:,:) ! APW-local-orbital overlap integrals real(8), allocatable :: oalo(:,:,:) ! local-orbital-local-orbital overlap integrals real(8), allocatable :: ololo(:,:,:) ! APW-APW Hamiltonian integrals real(8), allocatable :: haa(:,:,:,:,:,:) ! local-orbital-APW Hamiltonian integrals real(8), allocatable :: hloa(:,:,:,:,:) ! local-orbital-local-orbital Hamiltonian integrals real(8), allocatable :: hlolo(:,:,:,:) ! complex Gaunt coefficient array complex(8), allocatable :: gntyry(:,:,:) ! tefvr is .true. if the first-variational eigenvalue equation is to be solved ! as a real symmetric problem logical tefvr ! tefvit is .true. if the first-variational eigenvalue equation is to be solved ! iteratively logical tefvit ! minimum and maximum allowed number of eigenvalue equation iterations integer minitefv,maxitefv ! eigenvalue mixing parameter for iterative solver real(8) befvit ! iterative solver convergence tolerance real(8) epsefvit !--------------------------------------------! ! eigenvalue and occupancy variables ! !--------------------------------------------! ! number of empty states per atom and spin real(8) nempty0 ! number of empty states integer nempty ! number of first-variational states integer nstfv ! number of second-variational states integer nstsv ! smearing type integer stype ! smearing function description character(256) sdescr ! smearing width real(8) swidth ! autoswidth is .true. if the smearing width is to be determined automatically logical autoswidth ! effective mass used in smearing width formula real(8) mstar ! maximum allowed occupancy (1 or 2) real(8) occmax ! convergence tolerance for occupancies real(8) epsocc ! second-variational occupation number array real(8), allocatable :: occsv(:,:) ! Fermi energy for second-variational states real(8) efermi ! scissor correction applied when computing response functions real(8) scissor ! density of states at the Fermi energy real(8) fermidos ! estimated indirect and direct band gaps real(8) bandgap(2) ! k-points of indirect and direct gaps integer ikgap(3) ! error tolerance for the first-variational eigenvalues real(8) evaltol ! second-variational eigenvalues real(8), allocatable :: evalsv(:,:) ! tevecsv is .true. if second-variational eigenvectors are calculated logical tevecsv ! maximum number of k-point and states indices in user-defined list integer, parameter :: maxkst=20 ! number of k-point and states indices in user-defined list integer nkstlist ! user-defined list of k-point and state indices integer kstlist(2,maxkst) !------------------------------! ! core state variables ! !------------------------------! ! occupancies for core states real(8), allocatable :: occcr(:,:) ! eigenvalues for core states real(8), allocatable :: evalcr(:,:) ! radial wavefunctions for core states real(8), allocatable :: rwfcr(:,:,:,:) ! radial charge density for core states real(8), allocatable :: rhocr(:,:,:) ! spincore is .true. if the core is to be treated as spin-polarised logical spincore ! number of core spin-channels integer nspncr !--------------------------! ! energy variables ! !--------------------------! ! eigenvalue sum real(8) evalsum ! electron kinetic energy real(8) engykn ! core electron kinetic energy real(8) engykncr ! nuclear-nuclear energy real(8) engynn ! electron-nuclear energy real(8) engyen ! Hartree energy real(8) engyhar ! Coulomb energy (E_nn + E_en + E_H) real(8) engycl ! electronic Coulomb potential energy real(8) engyvcl ! Madelung term real(8) engymad ! exchange-correlation potential energy real(8) engyvxc ! exchange-correlation effective field energy real(8) engybxc ! energy of external global magnetic field real(8) engybext ! exchange energy real(8) engyx ! correlation energy real(8) engyc ! electronic entropy real(8) entrpy ! entropic contribution to free energy real(8) engyts ! total energy real(8) engytot !------------------------------------! ! force and stress variables ! !------------------------------------! ! tforce is .true. if force should be calculated logical tforce ! tfibs is .true. if the IBS contribution to the force is to be calculated logical tfibs ! radial distance at which Hellmann-Feynman force is to be evaluated real(8) radfhf ! nearest radial mesh point to radfhf integer irfhf(maxspecies) ! Hellmann-Feynman force on each atom real(8), allocatable :: forcehf(:,:) ! incomplete basis set (IBS) force on each atom real(8), allocatable :: forceibs(:,:) ! total force on each atom real(8), allocatable :: forcetot(:,:) ! previous total force on each atom real(8), allocatable :: forcetotp(:,:) ! maximum force magnitude over all atoms real(8) forcemax ! maximum number of atomic position optimisation steps integer maxatpstp ! default step size parameter for atomic position optimisation real(8) tau0atp ! step size parameters for each atom real(8), allocatable :: tauatp(:) ! number of strain tensors integer nstrain ! strain tensors real(8) strain(3,3,9) ! infinitesimal displacement parameter multiplied by the strain tensor for ! computing the stress tensor real(8) deltast ! symmetry reduced stress tensor components real(8) stress(9) ! previous stress tensor real(8) stressp(9) ! stress tensor component magnitude maximum real(8) stressmax ! lattice vector optimisation type ! 0 : no optimisation ! 1 : unconstrained optimisation ! 2 : iso-volumetric optimisation integer latvopt ! maximum number of lattice vector optimisation steps integer maxlatvstp ! default step size parameter for lattice vector optimisation real(8) tau0latv ! step size for each stress tensor component acting on the lattice vectors real(8) taulatv(9) !-------------------------------! ! convergence variables ! !-------------------------------! ! maximum number of self-consistent loops integer maxscl ! current self-consistent loop number integer iscl ! Kohn-Sham potential convergence tolerance real(8) epspot ! energy convergence tolerance real(8) epsengy ! force convergence tolerance real(8) epsforce ! stress tensor convergence tolerance real(8) epsstress !----------------------------------------------------------! ! density of states, optics and response variables ! !----------------------------------------------------------! ! number of energy intervals in the DOS/optics function plot integer nwplot ! fine k-point grid size for integration of functions in the Brillouin zone integer ngrkf ! smoothing level for DOS/optics function plot integer nswplot ! energy interval for DOS/optics function plot real(8) wplot(2) ! maximum angular momentum for the partial DOS plot integer lmaxdos ! dosocc is .true. if the DOS is to be weighted by the occupancy logical dosocc ! dosmsum is .true. if the partial DOS is to be summed over m logical dosmsum ! dosssum is .true. if the partial DOS is to be summed over spin logical dosssum ! number of optical matrix components required integer noptcomp ! required optical matrix components integer optcomp(3,27) ! intraband is .true. if the intraband term is to be added to the optical matrix logical intraband ! lmirep is .true. if the (l,m) band characters should correspond to the ! irreducible representations of the site symmetries logical lmirep ! spin-quantisation axis in Cartesian coordinates used when plotting the ! spin-resolved DOS (z-axis by default) real(8) sqados(3) ! q-vector in lattice and Cartesian coordinates for calculating the matrix ! elements < i,k+q | exp(iq.r) | j,k > real(8) vecql(3),vecqc(3) ! maximum initial-state energy allowed in ELNES transitions real(8) emaxelnes ! structure factor energy window real(8) wsfac(2) !-------------------------------------! ! 1D/2D/3D plotting variables ! !-------------------------------------! ! number of vertices in 1D plot integer nvp1d ! total number of points in 1D plot integer npp1d ! vertices in lattice coordinates for 1D plot real(8), allocatable :: vvlp1d(:,:) ! distance to vertices in 1D plot real(8), allocatable :: dvp1d(:) ! plot vectors in lattice coordinates for 1D plot real(8), allocatable :: vplp1d(:,:) ! distance to points in 1D plot real(8), allocatable :: dpp1d(:) ! corner vectors of 2D plot in lattice coordinates real(8) vclp2d(3,3) ! grid sizes of 2D plot integer np2d(2) ! corner vectors of 3D plot in lattice coordinates real(8) vclp3d(3,4) ! grid sizes of 3D plot integer np3d(3) !----------------------------------------! ! OEP and Hartree-Fock variables ! !----------------------------------------! ! maximum number of core states over all species integer ncrmax ! maximum number of OEP iterations integer maxitoep ! initial value and scaling factors for OEP step size real(8) tauoep(3) ! magnitude of the OEP residual real(8) resoep ! kinetic matrix elements in the Cartesian basis complex(8), allocatable :: kmatc(:,:,:) ! complex versions of the exchange potential and field complex(8), allocatable :: zvxmt(:,:,:),zvxir(:) complex(8), allocatable :: zbxmt(:,:,:,:),zbxir(:,:) ! hybrid is .true. if a hybrid functional is to be used logical hybrid ! hybrid functional mixing coefficient real(8) hybridc !-------------------------------------------------------------! ! response function and perturbation theory variables ! !-------------------------------------------------------------! ! |G| cut-off for response functions real(8) gmaxrf ! energy cut-off for response functions real(8) emaxrf ! number of G-vectors for response functions integer ngrf ! number of response function frequencies integer nwrf ! complex response function frequencies complex(8), allocatable :: wrf(:) !-------------------------------------------------! ! Bethe-Salpeter equation (BSE) variables ! !-------------------------------------------------! ! number of valence and conduction states for transitions integer nvbse,ncbse ! default number of valence and conduction states integer nvbse0,ncbse0 ! maximum number of extra valence and conduction states integer, parameter :: maxxbse=20 ! number of extra valence and conduction states integer nvxbse,ncxbse ! extra valence and conduction states integer istxbse(maxxbse),jstxbse(maxxbse) ! total number of transitions integer nvcbse ! size of blocks in BSE Hamiltonian matrix integer nbbse ! size of BSE matrix (= 2*nbbse) integer nmbse ! index from BSE valence states to second-variational states integer, allocatable :: istbse(:,:) ! index from BSE conduction states to second-variational states integer, allocatable :: jstbse(:,:) ! index from BSE valence-conduction pair and k-point to location in BSE matrix integer, allocatable :: ijkbse(:,:,:) ! BSE Hamiltonian complex(8), allocatable :: hmlbse(:,:) ! BSE Hamiltonian eigenvalues real(8), allocatable :: evalbse(:) ! if bsefull is .true. then the full BSE Hamiltonian is calculated, otherwise ! only the Hermitian block logical bsefull ! if hxbse/hdbse is .true. then the exchange/direct term is included in the BSE ! Hamiltonian logical hxbse,hdbse !--------------------------! ! timing variables ! !--------------------------! ! initialisation real(8) timeinit ! Hamiltonian and overlap matrix set up real(8) timemat ! first-variational calculation real(8) timefv ! second-variational calculation real(8) timesv ! charge density calculation real(8) timerho ! potential calculation real(8) timepot ! force calculation real(8) timefor !-----------------------------! ! numerical constants ! !-----------------------------! real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: twopi=6.2831853071795864769d0 real(8), parameter :: fourpi=12.566370614359172954d0 ! spherical harmonic for l=m=0 real(8), parameter :: y00=0.28209479177387814347d0 ! complex constants complex(8), parameter :: zzero=(0.d0,0.d0) complex(8), parameter :: zone=(1.d0,0.d0) complex(8), parameter :: ztwo=(2.d0,0.d0) complex(8), parameter :: zi=(0.d0,1.d0) ! array of i^l and (-i)^l values complex(8), allocatable :: zil(:),zilc(:) ! Pauli spin matrices: ! sigma_x = ( 0 1 ) sigma_y = ( 0 -i ) sigma_z = ( 1 0 ) ! ( 1 0 ) ( i 0 ) ( 0 -1 ) complex(8) sigmat(2,2,3) data sigmat / (0.d0,0.d0), (1.d0,0.d0), (1.d0,0.d0), (0.d0,0.d0), & (0.d0,0.d0), (0.d0,1.d0),(0.d0,-1.d0), (0.d0,0.d0), & (1.d0,0.d0), (0.d0,0.d0), (0.d0,0.d0),(-1.d0,0.d0) / ! Hartree in eV (CODATA 2010) real(8), parameter :: ha_ev=27.21138505d0 ! Boltzmann constant in eV/kelvin (CODATA 2010) real(8), parameter :: kb_ev=8.6173324d-5 ! Boltzmann constant in Hartree/kelvin real(8), parameter :: kboltz=kb_ev/ha_ev ! speed of light in atomic units (=1/alpha) (CODATA 2010) real(8), parameter :: sol=137.035999074d0 ! scaled speed of light real(8) solsc ! electron g-factor (CODATA 2010) real(8), parameter :: gfacte=2.00231930436153d0 ! Hartree in SI units (CODATA 2010) real(8), parameter :: ha_si=4.35974434d-18 ! Hartree in inverse meters (CODATA 2010) real(8), parameter :: ha_im=2.194746313708d7 ! Bohr radius in SI units (CODATA 2010) real(8), parameter :: br_si=0.52917721092d-10 ! Planck constant in SI units (CODATA 2010) real(8), parameter :: hbar_si=1.054571726d-34 ! electron charge in SI units (CODATA 2010) real(8), parameter :: e_si=1.602176565d-19 ! atomic unit of magnetic flux density in SI real(8), parameter :: b_si=hbar_si/(e_si*br_si**2) ! atomic unit of time in SI real(8), parameter :: t_si=hbar_si/ha_si ! electron mass in SI (CODATA 2010) real(8), parameter :: em_si=9.10938291d-31 ! atomic mass unit in SI (CODATA 2010) real(8), parameter :: amu_si=1.660538921d-27 ! atomic mass unit in electron masses real(8), parameter :: amu=amu_si/em_si !---------------------------------! ! miscellaneous variables ! !---------------------------------! ! code version integer version(3) data version / 2,3,22 / ! maximum number of tasks integer, parameter :: maxtasks=40 ! number of tasks integer ntasks ! task array integer tasks(maxtasks) ! current task integer task ! tlast is .true. if the calculation is on the last self-consistent loop logical tlast ! tstop is .true. if the STOP file exists logical tstop ! number of self-consistent loops after which STATE.OUT is written integer nwrite ! if wrtvars is .true. then variables are written to VARIABLES.OUT logical wrtvars ! filename extension for files generated by gndstate character(256) filext ! default file extension data filext / '.OUT' / ! scratch space path character(256) scrpath ! maximum number of note lines integer, parameter :: maxnlns=30 ! number of note lines integer notelns ! notes to include in INFO.OUT character(80) notes(maxnlns) end module elk-2.3.22/src/PaxHeaders.22528/bandstr.f900000644002504400250440000000005012337331323016153 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/bandstr.f900000644002504400250440000001240012337331323016714 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: bandstr ! !INTERFACE: subroutine bandstr ! !USES: use modmain ! !DESCRIPTION: ! Produces a band structure along the path in reciprocal space which connects ! the vertices in the array {\tt vvlp1d}. The band structure is obtained from ! the second-variational eigenvalues and is written to the file {\tt BAND.OUT} ! with the Fermi energy set to zero. If required, band structures are plotted ! to files {\tt BAND\_Sss\_Aaaaa.OUT} for atom {\tt aaaa} of species {\tt ss}, ! which include the band characters for each $l$ component of that atom in ! columns 4 onwards. Column 3 contains the sum over $l$ of the characters. ! Vertex location lines are written to {\tt BANDLINES.OUT}. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! local variables integer ik,ist,ispn,is,ia,ias integer lmax,lmmax,l,m,lm,iv real(8) emin,emax,sum character(256) fname ! allocatable arrays real(8), allocatable :: evalfv(:,:),e(:,:) ! low precision for band character array saves memory real(4), allocatable :: bc(:,:,:,:) complex(8), allocatable :: dmat(:,:,:,:,:),apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) ! initialise universal variables call init0 call init1 ! allocate array for storing the eigenvalues allocate(e(nstsv,nkpt)) ! maximum angular momentum for band character lmax=min(3,lmaxvr) lmmax=(lmax+1)**2 if (task.eq.21) then allocate(bc(0:lmax,natmtot,nstsv,nkpt)) end if ! read density and potentials from file call readstate ! read Fermi energy from file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! compute the overlap radial integrals call olprad ! compute the Hamiltonian radial integrals call hmlrad ! generate the spin-orbit coupling radial functions call gensocfr emin=1.d5 emax=-1.d5 ! begin parallel loop over k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(evalfv,evecfv,evecsv) & !$OMP PRIVATE(ist,dmat,apwalm,ispn) & !$OMP PRIVATE(ias,l,m,lm,sum) !$OMP DO do ik=1,nkpt allocate(evalfv(nstfv,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv)) allocate(evecsv(nstsv,nstsv)) !$OMP CRITICAL write(*,'("Info(bandstr): ",I6," of ",I6," k-points")') ik,nkpt !$OMP END CRITICAL ! solve the first- and second-variational eigenvalue equations call eveqn(ik,evalfv,evecfv,evecsv) do ist=1,nstsv ! subtract the Fermi energy e(ist,ik)=evalsv(ist,ik)-efermi !$OMP CRITICAL emin=min(emin,e(ist,ik)) emax=max(emax,e(ist,ik)) !$OMP END CRITICAL end do ! compute the band characters if required if (task.eq.21) then allocate(dmat(lmmax,nspinor,lmmax,nspinor,nstsv)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! average band character over spin and m for all atoms do ias=1,natmtot ! generate the diagonal of the density matrix call gendmat(.true.,.true.,0,lmax,ias,ngk(:,ik),apwalm,evecfv,evecsv, & lmmax,dmat) do ist=1,nstsv do l=0,lmax sum=0.d0 do m=-l,l lm=idxlm(l,m) do ispn=1,nspinor sum=sum+dble(dmat(lm,ispn,lm,ispn,ist)) end do end do bc(l,ias,ist,ik)=real(sum) end do end do end do deallocate(dmat,apwalm) end if deallocate(evalfv,evecfv,evecsv) ! end loop over k-points end do !$OMP END DO !$OMP END PARALLEL emax=emax+(emax-emin)*0.5d0 emin=emin-(emax-emin)*0.5d0 ! output the band structure if (task.eq.20) then open(50,file='BAND.OUT',action='WRITE',form='FORMATTED') do ist=1,nstsv do ik=1,nkpt write(50,'(2G18.10)') dpp1d(ik),e(ist,ik) end do write(50,'(" ")') end do close(50) write(*,*) write(*,'("Info(bandstr):")') write(*,'(" band structure plot written to BAND.OUT")') else do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) write(fname,'("BAND_S",I2.2,"_A",I4.4,".OUT")') is,ia open(50,file=trim(fname),action='WRITE',form='FORMATTED') do ist=1,nstsv do ik=1,nkpt ! sum band character over l sum=0.d0 do l=0,lmax sum=sum+bc(l,ias,ist,ik) end do write(50,'(2G18.10,8F12.6)') dpp1d(ik),e(ist,ik),sum, & (bc(l,ias,ist,ik),l=0,lmax) end do write(50,'(" ")') end do close(50) end do end do write(*,*) write(*,'("Info(bandstr):")') write(*,'(" band structure plot written to BAND_Sss_Aaaaa.OUT")') write(*,'(" for all species and atoms")') end if write(*,*) write(*,'(" Fermi energy is at zero in plot")') ! output the vertex location lines open(50,file='BANDLINES.OUT',action='WRITE',form='FORMATTED') do iv=1,nvp1d write(50,'(2G18.10)') dvp1d(iv),emin write(50,'(2G18.10)') dvp1d(iv),emax write(50,'(" ")') end do close(50) write(*,*) write(*,'(" vertex location lines written to BANDLINES.OUT")') deallocate(e) if (task.eq.21) deallocate(bc) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rdmdexcdc.f900000644002504400250440000000005012337331324016454 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmdexcdc.f900000644002504400250440000000466612337331324017234 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmdexcdc ! !INTERFACE: subroutine rdmdexcdc(dedc) ! !USES: use modmain use modrdm ! !INPUT/OUTPUT PARAMETERS: ! dedc : energy derivative (inout,complex(nstsv,nstsv,nkpt)) ! !DESCRIPTION: ! Calculates the derivative of the exchange-correlation energy w.r.t. ! {\tt evecsv} and adds the result to the total. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! arguments complex(8), intent(inout) :: dedc(nstsv,nstsv,nkpt) ! local variables integer ik1,ik2,jk,iv(3) integer ist1,ist2,ist3,ist4 real(8) t1,t2,t3 ! allocatable arrays complex(8), allocatable :: vclijjk(:,:,:,:) complex(8), allocatable :: evecsv(:,:) if (rdmxctype.eq.0) return ! calculate the prefactor if (rdmxctype.eq.1) then ! Hartree-Fock functional t1=1.d0/occmax else if (rdmxctype.eq.2) then ! power functional if (spinpol) then t1=1.d0 else t1=2.d0*(0.25d0)**rdmalpha end if else write(*,*) write(*,'("Error(rdmdexcdc): rdmxctype not defined : ",I8)') rdmxctype write(*,*) stop end if allocate(vclijjk(nstsv,nstsv,nstsv,nkpt)) allocate(evecsv(nstsv,nstsv)) ! start loop over non-reduced k-points do ik1=1,nkptnr ! get the Coulomb matrix elements call getvclijjk(ik1,vclijjk) ! find the equivalent reduced k-point iv(:)=ivk(:,ik1) jk=ikmap(iv(1),iv(2),iv(3)) ! start loop over reduced k-points do ik2=1,nkpt ! get the eigenvectors from file call getevecsv(vkl(:,ik2),evecsv) do ist4=1,nstsv do ist3=1,nstsv do ist2=1,nstsv do ist1=1,nstsv if (rdmxctype.eq.1) then ! Hartree-Fock functional t2=t1*occsv(ist3,ik2)*occsv(ist4,jk) else if (rdmxctype.eq.2) then ! power functional t3=sum(abs(vkl(:,ik2)-vkl(:,ik1))) if ((ist3.eq.ist4).and.(t3.lt.epslat)) then t2=(1.d0/occmax)*occsv(ist4,jk)**2 else t2=t1*(occsv(ist3,ik2)*occsv(ist4,jk))**rdmalpha end if end if dedc(ist2,ist3,ik2)=dedc(ist2,ist3,ik2)-t2*evecsv(ist2,ist1)* & vclijjk(ist1,ist3,ist4,ik2) end do end do end do end do ! end loop over reduced k-points end do ! end loop over non-reduced k-points end do deallocate(vclijjk,evecsv) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genidxlo.f900000644002504400250440000000005012337331323016327 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genidxlo.f900000644002504400250440000000164612337331323017102 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genidxlo ! !INTERFACE: subroutine genidxlo ! !USES: use modmain ! !DESCRIPTION: ! Generates an index array which maps the local-orbitals in each atom to their ! locations in the overlap or Hamiltonian matrices. Also finds the total ! number of local-orbitals. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! local variables integer is,ias,i,ilo,l,m,lm ! allocate global local-orbital index if (allocated(idxlo)) deallocate(idxlo) allocate(idxlo(lolmmax,nlomax,natmtot)) i=0 do ias=1,natmtot is=idxis(ias) do ilo=1,nlorb(is) l=lorbl(ilo,is) do m=-l,l i=i+1 lm=idxlm(l,m) idxlo(lm,ilo,ias)=i end do end do end do nlotot=i return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genvbmatk.f900000644002504400250440000000005012337331324016475 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genvbmatk.f900000644002504400250440000000562712337331324017253 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 K. Krieger, J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genvbmatk(vmt,vir,bmt,bir,wfmt,wfir,vbmat) !***** remember to multiply by cfunir!!! use modmain implicit none ! arguments real(8), intent(in) :: vmt(lmmaxvr,nrcmtmax,natmtot),vir(ngtot) real(8), intent(in) :: bmt(lmmaxvr,nrcmtmax,natmtot,ndmag),bir(ngtot,ndmag) complex(8), intent(in) :: wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv) complex(8), intent(in) :: wfir(ngtot,nspinor,nstsv) complex(8), intent(out) :: vbmat(nstsv,nstsv) ! local variables integer ist,jst,ispn,is,ias integer nrc,nrci,ir,irc integer lmmax,itp real(8) t0,t1,t2 complex(8) z1 ! allocatable arrays complex(8), allocatable :: zfmt(:,:,:),zfir(:,:) ! external functions complex(8) zfmtinp,zdotc external zfmtinp,zdotc ! zero the matrix elements vbmat(:,:)=0.d0 !-------------------------! ! muffin-tin part ! !-------------------------! allocate(zfmt(lmmaxvr,nrcmtmax,nspinor)) do jst=1,nstsv do ias=1,natmtot is=idxis(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) ! apply local potential plus magnetic field to spinor wavefunction lmmax=lmmaxinr do irc=1,nrc do itp=1,lmmax t1=vmt(itp,irc,ias) t2=bmt(itp,irc,ias,ndmag) zfmt(itp,irc,1)=(t1+t2)*wfmt(itp,irc,ias,1,jst) zfmt(itp,irc,2)=(t1-t2)*wfmt(itp,irc,ias,2,jst) end do if (ncmag) then do itp=1,lmmax z1=cmplx(bmt(itp,irc,ias,1),bmt(itp,irc,ias,2),8) zfmt(itp,irc,1)=zfmt(itp,irc,1)+conjg(z1)*wfmt(itp,irc,ias,2,jst) zfmt(itp,irc,2)=zfmt(itp,irc,2)+z1*wfmt(itp,irc,ias,1,jst) end do end if if (irc.eq.nrci) lmmax=lmmaxvr end do do ist=1,jst ! compute inner product (functions are in spherical coordinates) do ispn=1,nspinor z1=zfmtinp(.false.,nrc,nrci,rcmt(:,is),wfmt(:,:,ias,ispn,ist), & zfmt(:,:,ispn)) vbmat(ist,jst)=vbmat(ist,jst)+z1 end do end do end do end do deallocate(zfmt) !---------------------------! ! interstitial part ! !---------------------------! allocate(zfir(ngtot,nspinor)) t0=omega/dble(ngtot) do jst=1,nstsv ! apply local potential and magnetic field to spinor wavefuntion do ir=1,ngtot t1=vir(ir) t2=bir(ir,ndmag) zfir(ir,1)=(t1+t2)*wfir(ir,1,jst) zfir(ir,2)=(t1-t2)*wfir(ir,2,jst) end do if (ncmag) then do ir=1,ngtot z1=cmplx(bir(ir,1),bir(ir,2),8) zfir(ir,1)=zfir(ir,1)+conjg(z1)*wfir(ir,2,jst) zfir(ir,2)=zfir(ir,2)+z1*wfir(ir,1,jst) end do end if do ist=1,jst do ispn=1,nspinor z1=zdotc(ngtot,wfir(:,ispn,ist),1,zfir(:,ispn),1) vbmat(ist,jst)=vbmat(ist,jst)+t0*z1 end do end do end do deallocate(zfir) ! lower triangular part do ist=1,nstsv do jst=1,ist-1 vbmat(ist,jst)=conjg(vbmat(jst,ist)) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/genrmesh.f900000644002504400250440000000005012337331323016326 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genrmesh.f900000644002504400250440000000422712337331323017077 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genrmesh ! !INTERFACE: subroutine genrmesh ! !USES: use modmain use modvars ! !DESCRIPTION: ! Generates the coarse and fine radial meshes for each atomic species in the ! crystal. Also determines which points are in the inner part of the ! muffin-tin using the value of {\tt fracinr}. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) !EOP !BOC implicit none ! local variables integer is,ir,irc real(8) t1,t2 ! estimate the number of radial mesh points to infinity spnrmax=1 do is=1,nspecies ! logarithmic mesh t1=log(sprmax(is)/sprmin(is))/log(rmt(is)/sprmin(is)) t2=dble(nrmt(is)-1)*t1 spnr(is)=nint(t2)+1 spnrmax=max(spnrmax,spnr(is)) end do ! allocate the global radial mesh arrays if (allocated(spr)) deallocate(spr) allocate(spr(spnrmax,nspecies)) if (allocated(rcmt)) deallocate(rcmt) allocate(rcmt(nrcmtmax,nspecies)) ! generate the radial meshes do is=1,nspecies t1=1.d0/dble(nrmt(is)-1) ! logarithmic mesh t2=log(rmt(is)/sprmin(is)) do ir=1,spnr(is) spr(ir,is)=sprmin(is)*exp(dble(ir-1)*t1*t2) end do end do ! set up the coarse radial meshes and find the inner part of the muffin-tin ! where rho is calculated with lmaxinr do is=1,nspecies t1=fracinr*rmt(is) nrmtinr(is)=0 nrcmtinr(is)=0 irc=0 do ir=1,nrmt(is),lradstp irc=irc+1 rcmt(irc,is)=spr(ir,is) if (spr(ir,is).lt.t1) then nrmtinr(is)=ir nrcmtinr(is)=irc end if end do end do ! determine at which radius the Hellmann-Feynman force is to be evaluated do is=1,nspecies do ir=1,nrmt(is) if (spr(ir,is).lt.radfhf) irfhf(is)=ir end do end do ! write to VARIABLES.OUT call writevars('spnr',nv=nspecies,iva=spnr) call writevars('nrmt',nv=nspecies,iva=nrmt) call writevars('nrmtinr',nv=nspecies,iva=nrmtinr) call writevars('lradstp',iv=lradstp) call writevars('nrcmt',nv=nspecies,iva=nrcmt) call writevars('nrcmtinr',nv=nspecies,iva=nrcmtinr) do is=1,nspecies call writevars('spr',nv=nrmt(is),rva=spr(:,is)) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/bdginv.f900000644002504400250440000000005012337331324015770 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/bdginv.f900000644002504400250440000000241612337331324016537 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine bdginv(achi0,adelta) use modmain use modscdft implicit none ! arguments complex(8), intent(in) :: achi0(nbdg,nbdg) complex(8), intent(out) :: adelta(nbdg,nbdg) ! local variables integer, parameter :: maxit=1000 integer it real(8) d,dp ! allocatable arrays complex(8), allocatable :: achi(:,:) complex(8), allocatable :: evecbdg(:,:) ! external functions real(8) dznrm2 allocate(achi(nbdg,nbdg)) allocate(evecbdg(nmbdg,nmbdg)) ! zero the anomalous potential adelta(:,:)=0.d0 dp=0.d0 do it=1,maxit ! set up the BdG Hamiltonian call hmlbdg(adelta,evecbdg) ! solve the BdG eigenvalue equations call eveqnbdg(evecbdg) ! generate the anomalous density Chi call genachi(evecbdg,achi) ! add the residual to the potential adelta(:,:)=adelta(:,:)+taubdg*(achi(:,:)-achi0(:,:)) ! compute the sum of diagonal elements squared d=dznrm2(nbdg,adelta,nbdg) if (it.ge.2) then d=sqrt(abs(d)/dble(nbdg)) if (abs(d-dp).lt.epspot) return end if dp=d end do write(*,*) write(*,'("Warning(bdginv): BdG equation inverter failed to converge")') deallocate(achi,evecbdg) return end subroutine elk-2.3.22/src/PaxHeaders.22528/potefield.f900000644002504400250440000000005012337331324016472 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/potefield.f900000644002504400250440000000301612337331324017236 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine potefield use modmain implicit none ! local variables integer is,ia,ias integer i1,i2,i3,ir real(8) e,tp(2),r,t1 real(8) v0,e00,elm(-1:1) real(8) v1(3),v2(3) ! constant added to potential so that it is zero at the unit cell center v1(:)=0.5d0*(avec(:,1)+avec(:,2)+avec(:,3)) v0=dot_product(efieldc(:),v1(:)) ! determine the electric field vector in spherical coordinates call sphcrd(efieldc,e,tp) ! coefficients for real spherical harmonics R_1-1, R_10 and R_11 t1=e*sqrt(fourpi/3.d0) elm(-1)=t1*sin(tp(1))*sin(tp(2)) elm(0)=-t1*cos(tp(1)) elm(1)=t1*sin(tp(1))*cos(tp(2)) ! muffin-tin potential do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! coefficient for R_00 e00=-dot_product(efieldc(:),atposc(:,ia,is))+v0 e00=e00/y00 do ir=1,nrmt(is) r=spr(ir,is) vclmt(1,ir,ias)=vclmt(1,ir,ias)+e00 vclmt(2,ir,ias)=vclmt(2,ir,ias)+elm(-1)*r vclmt(3,ir,ias)=vclmt(3,ir,ias)+elm(0)*r vclmt(4,ir,ias)=vclmt(4,ir,ias)+elm(1)*r end do end do end do ! interstitial potential ir=0 do i3=0,ngridg(3)-1 v1(3)=dble(i3)/dble(ngridg(3)) do i2=0,ngridg(2)-1 v1(2)=dble(i2)/dble(ngridg(2)) do i1=0,ngridg(1)-1 v1(1)=dble(i1)/dble(ngridg(1)) ir=ir+1 call r3mv(avec,v1,v2) vclir(ir)=vclir(ir)-dot_product(efieldc(:),v2(:))+v0 end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rdmwriteengy.f900000644002504400250440000000005012337331324017237 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/rdmwriteengy.f900000644002504400250440000000210512337331324020001 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rdmwriteengy ! !INTERFACE: subroutine rdmwriteengy(fnum) ! !USES: use modmain use modrdm ! !INPUT/OUTPUT PARAMETERS: ! fnum : file number for writing output (in,integer) ! !DESCRIPTION: ! Writes all contributions to the total energy to file. ! ! !REVISION HISTORY: ! Created 2008 (Sharma) !EOP !BOC implicit none ! arguments integer, intent(in) :: fnum write(fnum,*) write(fnum,'("Energies :")') write(fnum,'(" electronic kinetic",T30,": ",G18.10)') engykn write(fnum,'(" core electron kinetic",T30,": ",G18.10)') engykncr write(fnum,'(" Coulomb",T30,": ",G18.10)') engyvcl write(fnum,'(" Madelung",T30,": ",G18.10)') engymad write(fnum,'(" exchange-correlation",T30,": ",G18.10)') engyx if (rdmtemp.gt.0.d0) then write(fnum,'(" entropy",T30,": ",G18.10)') rdmentrpy end if write(fnum,'(" total energy",T30,": ",G18.10)') engytot call flushifc(fnum) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/getdevecsv.f900000644002504400250440000000005012337331324016656 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/getdevecsv.f900000644002504400250440000000254512337331324017430 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getdevecsv(ik,iq,is,ia,ip,devecsv) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ik,iq,is,ia,ip complex(8), intent(out) :: devecsv(nstsv,nstsv) ! local variables integer recl,nstsv_ real(8) vkl_(3),t1 character(256) fext,fname ! construct the phonon file extension call phfext(iq,is,ia,ip,fext) ! construct filename fname='DEVECSV'//trim(fext) ! find the record length inquire(iolength=recl) vkl_,nstsv_,devecsv !$OMP CRITICAL open(70,file=trim(scrpath)//trim(fname),action='READ',form='UNFORMATTED', & access='DIRECT',recl=recl) read(70,rec=ik) vkl_,nstsv_,devecsv close(70) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getdevecsv): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" ",A," : ",3G18.10)') trim(fname),vkl_ write(*,*) stop end if if (nstsv.ne.nstsv_) then write(*,*) write(*,'("Error(getdevecsv): differing nstsv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstsv write(*,'(" ",A," : ",I8)') trim(fname),nstsv_ write(*,*) stop end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/connect.f900000644002504400250440000000005012337331323016147 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/connect.f900000644002504400250440000000534512337331323016722 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: connect ! !INTERFACE: subroutine connect(cvec,nv,np,vvl,vpl,dv,dp) ! !INPUT/OUTPUT PARAMETERS: ! cvec : matrix of (reciprocal) lattice vectors stored column-wise ! (in,real(3,3)) ! nv : number of vertices (in,integer) ! np : number of connecting points (in,integer) ! vvl : vertex vectors in lattice coordinates (in,real(3,nv)) ! vpl : connecting point vectors in lattice coordinates (out,real(3,np)) ! dv : cummulative distance to each vertex (out,real(nv)) ! dp : cummulative distance to each connecting point (out,real(np)) ! !DESCRIPTION: ! Generates a set of points which interpolate between a given set of vertices. ! Vertex points are supplied in lattice coordinates in the array {\tt vvl} and ! converted to Cartesian coordinates with the matrix {\tt cvec}. Interpolating ! points are stored in the array {\tt vpl}. The cummulative distances to the ! vertices and points along the path are stored in arrays {\tt dv} and ! {\tt dp}, respectively. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) ! Improved September 2007 (JKD) ! Improved again, July 2010 (T. McQueen and JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: cvec(3,3) integer, intent(in) :: nv integer, intent(in) :: np real(8), intent(in) :: vvl(3,nv) real(8), intent(out) :: vpl(3,np) real(8), intent(out) :: dv(nv) real(8), intent(out) :: dp(np) ! local variables integer i,j,k,m,n real(8) vl(3),vc(3) real(8) dt,f,t1 ! alloctable arrays real(8), allocatable :: seg(:) if (nv.lt.1) then write(*,*) write(*,'("Error(connect): nv < 1 : ",I8)') nv write(*,*) stop end if if (np.lt.nv) then write(*,*) write(*,'("Error(connect): np < nv : ",2I8)') np,nv write(*,*) stop end if ! special case of 1 vertex if (nv.eq.1) then dv(1)=0.d0 dp(:)=0.d0 do i=1,np vpl(:,i)=vvl(:,1) end do return end if allocate(seg(nv)) ! find the length of each segment and total distance dt=0.d0 do i=1,nv-1 dv(i)=dt vl(:)=vvl(:,i+1)-vvl(:,i) call r3mv(cvec,vl,vc) seg(i)=sqrt(vc(1)**2+vc(2)**2+vc(3)**2) dt=dt+seg(i) end do dv(nv)=dt ! add small amount to total distance to avoid 0/0 condition dt=dt+1.d-8 ! number of points to use between vertices n=np-nv ! construct the interpolating path k=0 do i=1,nv-1 t1=dble(n)*seg(i)/dt m=nint(t1) if ((m.gt.n).or.(i.eq.(nv-1))) m=n do j=1,m+1 k=k+1 f=dble(j-1)/dble(m+1) dp(k)=dv(i)+f*seg(i) vpl(:,k)=vvl(:,i)*(1.d0-f)+vvl(:,i+1)*f end do dt=dt-seg(i) n=n-m end do dp(np)=dv(nv) vpl(:,np)=vvl(:,nv) deallocate(seg) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writegamma.f900000644002504400250440000000005012337331324016654 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writegamma.f900000644002504400250440000000165612337331324017430 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writegamma(gq) use modmain use modphonon implicit none ! arguments real(8), intent(in) :: gq(nbph,nqpt) ! local variables integer iq,i open(50,file='GAMMAQ.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'(I4," : total number of atoms")') natmtot write(50,'(I6," : number of q-points")') nqpt write(50,*) do iq=1,nqpt write(50,'(I6," : q-point")') iq write(50,'(3G18.10," : q-vector (lattice coordinates)")') vql(:,iq) write(50,'(3G18.10," : q-vector (Cartesian coordinates)")') vqc(:,iq) do i=1,nbph write(50,'(I4,G18.10)') i,gq(i,iq) end do write(50,*) end do close(50) write(*,*) write(*,'("Info(writegamma):")') write(*,'(" wrote phonon linewidths for all q-points to GAMMAQ.OUT")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/genscph.f900000644002504400250440000000005012337331324016146 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genscph.f900000644002504400250440000000330312337331324016711 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genscph(p,dph) use modmain use modphonon use modstore implicit none ! arguments integer, intent(in) :: p real(8), intent(in) :: dph ! local variables integer is,ia,na,i real(8) vc(3),t1 if ((p.ne.0).and.(p.ne.1)) then write(*,*) write(*,'("Error(genscph): phase (p) should be 0 or 1 : ",I8)') p write(*,*) stop end if ! find the smallest supercell which contains the q-vector call findscq(iqph,avec0,nscph,vscph) ! construct supercell atomic positions and magnetic fields do is=1,nspecies na=0 do ia=1,natoms0(is) do i=1,nscph na=na+1 if (na.gt.maxatoms) then write(*,*) write(*,'("Error(genscph): too many atoms in supercell : ",I8)') na write(*,'(" for species ",I4)') is write(*,'("Adjust maxatoms in modmain and recompile code")') write(*,*) stop end if vc(:)=vscph(:,i)+atposc0(:,ia,is) ! add small periodic displacement if ((isph.eq.is).and.(iaph.eq.ia)) then t1=dot_product(vqc(:,iqph),vscph(:,i)) if (p.eq.0) then vc(ipph)=vc(ipph)+dph*cos(t1) else vc(ipph)=vc(ipph)+dph*sin(t1) end if end if ! convert to new lattice coordinates call r3mv(ainv,vc,atposl(:,na,is)) call r3frac(epslat,atposl(:,na,is)) ! set muffin-tin fields and fixed spin moments if required if (spinpol) then bfcmt0(:,na,is)=bfcmt00(:,ia,is) mommtfix(:,na,is)=mommtfix0(:,ia,is) end if end do end do natoms(is)=na end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/modrdm.f900000644002504400250440000000005012337331322015777 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modrdm.f900000644002504400250440000000221412337331322016542 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modrdm use modmain !--------------------------------------------------------------------! ! reduced density matrix functional theory (RDMFT) variables ! !--------------------------------------------------------------------! ! Coulomb potential matrix elements complex(8), allocatable :: vclmat(:,:,:) ! derivative of kinetic energy w.r.t. natural orbital coefficients complex(8), allocatable :: dkdc(:,:,:) ! step size for occupation numbers real(8) taurdmn ! step size for natural orbital coefficients real(8) taurdmc ! xc functional integer rdmxctype ! maximum number of self-consistent loops integer rdmmaxscl ! maximum number of iterations for occupation number optimisation integer maxitn ! maximum number of iteration for natural orbital optimisation integer maxitc ! exponent for the power and hybrid functional real(8) rdmalpha ! mixing for the hybrid functional real(8) rdmbeta ! temperature real(8) rdmtemp ! entropy real(8) rdmentrpy end module elk-2.3.22/src/PaxHeaders.22528/hermite.f900000644002504400250440000000005012337331323016153 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/hermite.f900000644002504400250440000000255512337331323016726 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: hermite ! !INTERFACE: real(8) function hermite(n,x) ! !INPUT/OUTPUT PARAMETERS: ! n : order of Hermite polynomial (in,integer) ! x : real argument (in,real) ! !DESCRIPTION: ! Returns the $n$th Hermite polynomial. The recurrence relation ! $$ H_i(x)=2xH_{i-1}(x)-2nH_{i-2}(x), $$ ! with $H_0=1$ and $H_1=2x$, is used. This procedure is numerically stable ! and accurate to near machine precision for $n\le 20$. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: x ! local variables integer i real(8) h1,h2,ht if (n.lt.0) then write(*,*) write(*,'("Error(hermite): n < 0 : ",I8)') n write(*,*) stop end if if (n.gt.20) then write(*,*) write(*,'("Error(hermite): n out of range : ",I8)') n write(*,*) stop end if if (abs(x).gt.1.d15) then write(*,*) write(*,'("Error(hermite): x out of range : ",G18.10)') x write(*,*) stop end if if (n.eq.0) then hermite=1.d0 return end if if (n.eq.1) then hermite=2.d0*x return end if h1=2.d0*x h2=1.d0 do i=2,n ht=2.d0*x*h1-2.d0*dble(i-1)*h2 h2=h1 h1=ht end do hermite=h1 return end function !EOC elk-2.3.22/src/PaxHeaders.22528/mossbauer.f900000644002504400250440000000005012337331323016516 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mossbauer.f900000644002504400250440000000653012337331323017266 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: mossbauer ! !INTERFACE: subroutine mossbauer ! !USES: use modmain ! !DESCRIPTION: ! Computes the contact charge density and contact magnetic hyperfine field for ! each atom and outputs the data to the file {\tt MOSSBAUER.OUT}. The Thomson ! radius, $R_{\rm T}=Z/c^2$, is used for determining the contact moment $m_c$, ! the relation of which to field strength is via Fermi's formula ! $$ B_c=\frac{8\pi}{3}\mu_B m_c, $$ ! where the orbital and dipolar contributions are neglected. See ! S. Bl\"{u}gel, H. Akai, R. Zeller, and P. H. Dederichs, {\it Phys. Rev. B} ! {\bf 35}, 3271 (1987). See also {\tt radnucl}. ! ! !REVISION HISTORY: ! Created May 2004 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ias,ir,nrt real(8) rt,vt,rho0,mc,bc,t1 ! allocatable arrays real(8), allocatable :: fr(:),gr(:) ! initialise universal variables call init0 ! read density and potentials from file call readstate ! allocate local arrays allocate(fr(nrmtmax),gr(nrmtmax)) open(50,file='MOSSBAUER.OUT',action='WRITE',form='FORMATTED') ! loop over species do is=1,nspecies ! Thomson radius and volume rt=abs(spzn(is))/solsc**2 do ir=1,nrmt(is)-1 if (spr(ir,is).gt.rt) exit end do nrt=ir rt=spr(nrt,is) vt=(4.d0/3.d0)*pi*rt**3 ! loop over atoms do ia=1,natoms(is) ias=idxas(ia,is) !--------------------------------! ! contact charge density ! !--------------------------------! do ir=1,nrnucl(is) fr(ir)=rhomt(1,ir,ias)*spr(ir,is)**2 end do call fderiv(-1,nrnucl(is),spr(:,is),fr,gr) rho0=fourpi*y00*gr(nrnucl(is))/vnucl(is) write(50,*) write(50,*) write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is,trim(spsymb(is)),ia write(50,*) write(50,'(" approximate nuclear radius : ",G18.10)') rnucl(is) write(50,'(" number of mesh points to nuclear radius : ",I6)') nrnucl(is) write(50,'(" density at nuclear center : ",G18.10)') rhomt(1,1,ias)*y00 write(50,'(" density at nuclear surface : ",G18.10)') & rhomt(1,nrnucl(is),ias)*y00 write(50,'(" average contact charge density : ",G18.10)') rho0 !------------------------------------------! ! contact magnetic hyperfine field ! !------------------------------------------! if (spinpol) then do ir=1,nrt if (ncmag) then ! non-collinear t1=sqrt(magmt(1,ir,ias,1)**2 & +magmt(1,ir,ias,2)**2 & +magmt(1,ir,ias,3)**2) else ! collinear t1=magmt(1,ir,ias,1) end if fr(ir)=t1*spr(ir,is)**2 end do call fderiv(-1,nrt,spr(:,is),fr,gr) mc=fourpi*y00*gr(nrt)/vt write(50,*) write(50,'(" Thomson radius : ",G18.10)') rt write(50,'(" number of mesh points to Thomson radius : ",I6)') nrt write(50,'(" contact magnetic moment (mu_B) : ",G18.10)') mc bc=(8.d0*pi/3.d0)*mc/(2.d0*solsc) write(50,'(" contact hyperfine field : ",G18.10)') bc write(50,'(" tesla : ",G18.10)') bc*b_si/solsc end if end do end do close(50) write(*,*) write(*,'("Info(mossbauer):")') write(*,'(" Mossbauer parameters written to MOSSBAUER.OUT")') deallocate(fr,gr) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writespecies.f900000644002504400250440000000005012337331324017225 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writespecies.f900000644002504400250440000000540412337331324017774 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writespecies(symb,name,zn,mass,rmin,rm,rmax,nrm,nst,n,l,k,occ,eval) use modmain use modmpi implicit none ! arguments character(256), intent(in) :: symb,name real(8), intent(in) :: zn,mass real(8), intent(in) :: rmin,rm,rmax integer, intent(in) :: nrm,nst integer, intent(in) :: n(nst),l(nst),k(nst) real(8), intent(in) :: occ(nst) real(8), intent(in) :: eval(nst) ! local variables integer lmax,nlo integer ist,jst,i logical core(maxspst),lorb(maxspst) ! default APW band energy real(8), parameter :: e0=0.15d0 ! find which states belong to core do ist=1,nst if (eval(ist).lt.ecvcut) then core(ist)=.true. else core(ist)=.false. end if end do ! check that the state for same n and l but different k is also core do ist=1,nst if (core(ist)) then do jst=1,nst if ((n(ist).eq.n(jst)).and.(l(ist).eq.l(jst))) core(jst)=.true. end do end if end do lmax=1 do ist=1,nst if (.not.core(ist)) lmax=max(lmax,l(ist)) end do ! determine the local orbitals nlo=lmax+1 lorb(:)=.false. do ist=1,nst if (.not.core(ist)) then if ((l(ist).eq.0).or.(l(ist).lt.k(ist))) then if ((eval(ist).lt.esccut).or.(l(ist).ge.2)) then lorb(ist)=.true. nlo=nlo+1 end if end if end if end do if (mp_mpi) then open(55,file=trim(symb)//'.in',action='WRITE',form='FORMATTED') write(55,'(" ''",A,"''",T45,": spsymb")') trim(symb) write(55,'(" ''",A,"''",T45,": spname")') trim(name) write(55,'(G14.6,T45,": spzn")') zn write(55,'(G18.10,T45,": spmass")') mass write(55,'(G14.6,2F10.4,I6,T45,": sprmin, rmt, sprmax, nrmt")') rmin,rm, & rmax,nrm write(55,'(I4,T45,": spnst")') nst write(55,'(3I4,G14.6,L1,T45,": spn, spl, spk, spocc, spcore")') n(1),l(1), & k(1),occ(1),core(1) do ist=2,nst write(55,'(3I4,G14.6,L1)') n(ist),l(ist),k(ist),occ(ist),core(ist) end do write(55,'(I4,T45,": apword")') 1 write(55,'(F10.4,I4," ",L1,T45,": apwe0, apwdm, apwve")') e0,0,.false. write(55,'(I4,T45,": nlx")') 0 write(55,'(I4,T45,": nlorb")') nlo do i=0,lmax write(55,'(2I4,T45,": lorbl, lorbord")') i,2 write(55,'(F10.4,I4," ",L1,T45,": lorbe0, lorbdm, lorbve")') e0,0,.false. write(55,'(F10.4,I4," ",L1)') e0,1,.false. end do do ist=1,nst if (lorb(ist)) then write(55,'(2I4,T45,": lorbl, lorbord")') l(ist),3 write(55,'(F10.4,I4," ",L1,T45,": lorbe0, lorbdm, lorbve")') e0,0,.false. write(55,'(F10.4,I4," ",L1)') e0,1,.false. write(55,'(F10.4,I4," ",L1)') eval(ist),0,.true. end if end do close(55) end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dielectric.f900000644002504400250440000000005012337331323016625 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/dielectric.f900000644002504400250440000001153512337331323017376 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2009 S. Sharma, J. K. Dewhurst and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: dielectric ! !INTERFACE: subroutine dielectric ! !USES: use modmain use modtest ! !DESCRIPTION: ! Computes the dielectric tensor, optical conductivity and plasma frequency. ! The formulae are taken from {\it Physica Scripta} {\bf T109}, 170 (2004). ! ! !REVISION HISTORY: ! Created November 2005 (SS and JKD) ! Added plasma frequency and intraband contribution (S. Lebegue) ! Complete rewrite, 2008 (JKD) ! Fixed problem with plasma frequency, 2009 (Marty Blaber and JKD) ! Parallelised, 2009 (M. Blaber) !EOP !BOC implicit none ! local variables integer ik,jk,ist,jst integer iw,i,j,l real(8) w1,w2,wplas real(8) eji,x,t1,t2 complex(8) eta,z1 character(256) fname ! allocatable arrays real(8), allocatable :: w(:) complex(8), allocatable :: pmat(:,:,:) complex(8), allocatable :: sigma(:) ! external functions real(8) sdelta external sdelta ! initialise universal variables call init0 call init1 ! read Fermi energy from file call readfermi ! get the eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! allocate local arrays allocate(w(nwplot)) allocate(sigma(nwplot)) ! generate energy grid (always non-negative) w1=max(wplot(1),0.d0) w2=max(wplot(2),w1) t1=(w2-w1)/dble(nwplot) do iw=1,nwplot w(iw)=w1+t1*dble(iw-1) end do ! i divided by the complex relaxation time eta=cmplx(0.d0,swidth,8) ! loop over dielectric tensor components do l=1,noptcomp i=optcomp(1,l) j=optcomp(2,l) wplas=0.d0 sigma(:)=0.d0 ! parallel loop over non-reduced k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(pmat,jk,ist,jst) & !$OMP PRIVATE(z1,eji,t1,x) !$OMP DO do ik=1,nkptnr allocate(pmat(3,nstsv,nstsv)) ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! read in the momentum matrix elements call getpmat(vkl(:,ik),pmat) ! valance states do ist=1,nstsv ! conduction states do jst=1,nstsv z1=pmat(i,ist,jst)*conjg(pmat(j,ist,jst)) eji=evalsv(jst,jk)-evalsv(ist,jk) if ((evalsv(ist,jk).le.efermi).and.(evalsv(jst,jk).gt.efermi)) then ! scissor correction if (scissor.ne.0.d0) then t1=(eji+scissor)/eji z1=z1*t1**2 eji=eji+scissor end if end if if (abs(eji).gt.1.d-8) then t1=occsv(ist,jk)*(1.d0-occsv(jst,jk)/occmax)/eji !$OMP CRITICAL sigma(:)=sigma(:)+t1*(z1/(w(:)-eji+eta)+conjg(z1)/(w(:)+eji+eta)) !$OMP END CRITICAL end if ! add to the plasma frequency if (intraband) then if (i.eq.j) then if (ist.eq.jst) then x=(evalsv(ist,jk)-efermi)/swidth !$OMP ATOMIC wplas=wplas+wkptnr*dble(z1)*sdelta(stype,x)/swidth end if end if end if end do end do deallocate(pmat) end do !$OMP END DO !$OMP END PARALLEL z1=zi*wkptnr/omega sigma(:)=z1*sigma(:) ! intraband contribution if (intraband) then if (i.eq.j) then wplas=sqrt(occmax*abs(wplas)*fourpi/omega) ! write the plasma frequency to file write(fname,'("PLASMA_",2I1,".OUT")') i,j open(60,file=trim(fname),action='WRITE',form='FORMATTED') write(60,'(G18.10," : plasma frequency")') wplas close(60) ! add the intraband contribution to sigma t1=wplas**2/fourpi do iw=1,nwplot sigma(iw)=sigma(iw)+t1/(swidth-zi*w(iw)) end do end if end if ! write the optical conductivity to file write(fname,'("SIGMA_",2I1,".OUT")') i,j open(60,file=trim(fname),action='WRITE',form='FORMATTED') do iw=1,nwplot write(60,'(2G18.10)') w(iw),dble(sigma(iw)) end do write(60,'(" ")') do iw=1,nwplot write(60,'(2G18.10)') w(iw),aimag(sigma(iw)) end do close(60) ! write the dielectric function to file write(fname,'("EPSILON_",2I1,".OUT")') i,j open(60,file=trim(fname),action='WRITE',form='FORMATTED') t1=0.d0 if (i.eq.j) t1=1.d0 do iw=1,nwplot t2=t1-fourpi*aimag(sigma(iw)/(w(iw)+eta)) write(60,'(2G18.10)') w(iw),t2 end do write(60,'(" ")') do iw=1,nwplot t2=fourpi*dble(sigma(iw)/(w(iw)+eta)) write(60,'(2G18.10)') w(iw),t2 end do close(60) ! write sigma to test file call writetest(121,'optical conductivity',nv=nwplot,tol=1.d-2,zva=sigma) ! end loop over tensor components end do close(50) write(*,*) write(*,'("Info(dielectric):")') write(*,'(" dielectric tensor written to EPSILON_ij.OUT")') write(*,'(" optical conductivity written to SIGMA_ij.OUT")') if (intraband) then write(*,'(" plasma frequency written to PLASMA_ij.OUT")') end if write(*,'(" for components")') do l=1,noptcomp write(*,'(" i = ",I1,", j = ",I1)') optcomp(1:2,l) end do deallocate(w,sigma) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gendwfsv.f900000644002504400250440000000005012337331324016342 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gendwfsv.f900000644002504400250440000001306212337331324017110 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gendwfsv(tsh,tgp,nst,idx,ngp,ngpq,igpqig,apwalmq,dapwalm,evecfv, & devecfv,evecsv,devecsv,dwfmt,ld,dwfir) use modmain implicit none ! arguments logical, intent(in) :: tsh,tgp integer, intent(in) :: nst,idx(nst) integer, intent(in) :: ngp(nspnfv),ngpq(nspnfv) integer, intent(in) :: igpqig(ngkmax,nspnfv) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv) complex(8), intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw,nspnfv) complex(8), intent(in) :: evecfv(nmatmax,nstfv,nspnfv) complex(8), intent(in) :: devecfv(nmatmax,nstfv,nspnfv) complex(8), intent(in) :: evecsv(nstsv,nstsv) complex(8), intent(in) :: devecsv(nstsv,nstsv) complex(8), intent(out) :: dwfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nst) integer, intent(in) :: ld complex(8), intent(out) :: dwfir(ld,nspinor,nst) ! local variables integer ist,ispn,jspn integer is,ia,ias,nrc,nrci integer igp,ifg,i,j,k real(8) t1 complex(8) z1 ! automatic arrays logical done(nstfv),ddone(nstfv) ! allocatable arrays complex(8), allocatable :: wfmt1(:,:,:),wfmt2(:,:),dwfmt1(:,:,:) !---------------------------------------------! ! muffin-tin wavefunction derivatives ! !---------------------------------------------! if (tevecsv) then allocate(wfmt1(lmmaxvr,nrcmtmax,nstfv)) allocate(dwfmt1(lmmaxvr,nrcmtmax,nstfv)) end if if (.not.tsh) allocate(wfmt2(lmmaxvr,nrcmtmax)) do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) do ia=1,natoms(is) ias=idxas(ia,is) done(:)=.false. do j=1,nst k=idx(j) if (tevecsv) then dwfmt(:,:,ias,:,j)=0.d0 i=0 do ispn=1,nspinor jspn=jspnfv(ispn) do ist=1,nstfv i=i+1 z1=devecsv(i,k) !***** check if tq0 is needed here if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (.not.done(ist)) then if (tsh) then call wavefmt(lradstp,lmaxvr,ias,ngp(jspn), & apwalmq(:,:,:,:,jspn),evecfv(:,ist,jspn),lmmaxvr, & wfmt1(:,:,ist)) else call wavefmt(lradstp,lmaxvr,ias,ngp(jspn), & apwalmq(:,:,:,:,jspn),evecfv(:,ist,jspn),lmmaxvr,wfmt2) call zbsht(nrc,nrci,wfmt2,wfmt1(:,:,ist)) !****** fix end if done(ist)=.true. end if call zfmtadd(nrc,nrci,z1,wfmt1(:,:,ist),dwfmt(:,:,ias,ispn,j)) end if z1=evecsv(i,k) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (.not.ddone(ist)) then if (tsh) then call dwavefmt(lradstp,lmaxvr,ias,ngp(jspn),ngpq(jspn), & apwalmq(:,:,:,:,jspn),dapwalm(:,:,:,jspn), & evecfv(:,ist,jspn),devecfv(:,ist,jspn),lmmaxvr, & dwfmt1(:,:,ist)) else call dwavefmt(lradstp,lmaxvr,ias,ngp(jspn),ngpq(jspn), & apwalmq(:,:,:,:,jspn),dapwalm(:,:,:,jspn), & evecfv(:,ist,jspn),devecfv(:,ist,jspn),lmmaxvr,wfmt2) call zbsht(nrc,nrci,wfmt2,dwfmt1(:,:,ist)) end if ddone(ist)=.true. end if call zfmtadd(nrc,nrci,z1,dwfmt1(:,:,ist),dwfmt(:,:,ias,ispn,j)) end if end do end do else if (tsh) then call dwavefmt(lradstp,lmaxvr,ias,ngp,ngpq,apwalmq,dapwalm, & evecfv(:,k,1),devecfv(:,k,1),lmmaxvr,dwfmt(:,:,ias,1,j)) else call dwavefmt(lradstp,lmaxvr,ias,ngp,ngpq,apwalmq,dapwalm, & evecfv(:,k,1),devecfv(:,k,1),lmmaxvr,wfmt2) call zbsht(nrc,nrci,wfmt2,dwfmt(:,:,ias,1,j)) end if end if end do end do end do if (tevecsv) deallocate(wfmt1,dwfmt1) if (.not.tsh) deallocate(wfmt2) !-----------------------------------------------! ! interstitial wavefunction derivatives ! !-----------------------------------------------! t1=1.d0/sqrt(omega) do j=1,nst k=idx(j) dwfir(:,:,j)=0.d0 if (tevecsv) then i=0 do ispn=1,nspinor jspn=jspnfv(ispn) do ist=1,nstfv i=i+1 z1=devecsv(i,k) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (tgp) then do igp=1,ngp(jspn) dwfir(igp,ispn,j)=dwfir(igp,ispn,j)+z1*evecfv(igp,ist,jspn) end do else z1=t1*z1 do igp=1,ngp(jspn) ifg=igfft(igpqig(igp,jspn)) dwfir(ifg,ispn,j)=dwfir(ifg,ispn,j)+z1*evecfv(igp,ist,jspn) end do end if end if z1=evecsv(i,k) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (tgp) then do igp=1,ngpq(jspn) dwfir(igp,ispn,j)=dwfir(igp,ispn,j)+z1*devecfv(igp,ist,jspn) end do else z1=t1*z1 do igp=1,ngpq(jspn) ifg=igfft(igpqig(igp,jspn)) dwfir(ifg,ispn,j)=dwfir(ifg,ispn,j)+z1*devecfv(igp,ist,jspn) end do end if end if end do end do else if (tgp) then do igp=1,ngpq(1) dwfir(igp,1,j)=devecfv(igp,k,1) end do else do igp=1,ngpq(1) ifg=igfft(igpqig(igp,1)) dwfir(ifg,1,j)=t1*devecfv(igp,k,1) end do end if end if if (.not.tgp) then do ispn=1,nspinor call zfftifc(3,ngridg,1,dwfir(:,ispn,j)) end do end if end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/xc_pwca.f900000644002504400250440000000005012337331324016143 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/xc_pwca.f900000644002504400250440000001105312337331324016707 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2011 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: xc_pwca ! !INTERFACE: subroutine xc_pwca(n,rhoup,rhodn,ex,ec,vxup,vxdn,vcup,vcdn) ! !INPUT/OUTPUT PARAMETERS: ! n : number of density points (in,integer) ! rhoup : spin-up charge density (in,real(n)) ! rhodn : spin-down charge density (in,real(n)) ! ex : exchange energy density (out,real(n)) ! ec : correlation energy density (out,real(n)) ! vxup : spin-up exchange potential (out,real(n)) ! vxdn : spin-down exchange potential (out,real(n)) ! vcup : spin-up correlation potential (out,real(n)) ! vcdn : spin-down correlation potential (out,real(n)) ! !DESCRIPTION: ! Spin-polarised exchange-correlation potential and energy of the Perdew-Wang ! parameterisation of the Ceperley-Alder electron gas: {\it Phys. Rev. B} ! {\bf 45}, 13244 (1992) and {\it Phys. Rev. Lett.} {\bf 45}, 566 (1980). ! ! !REVISION HISTORY: ! Created January 2004 (JKD) ! Rewrote, October 2011 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: rhoup(n) real(8), intent(in) :: rhodn(n) real(8), intent(out) :: ex(n) real(8), intent(out) :: ec(n) real(8), intent(out) :: vxup(n) real(8), intent(out) :: vxdn(n) real(8), intent(out) :: vcup(n) real(8), intent(out) :: vcdn(n) ! local variables integer i real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: thrd=1.d0/3.d0, thrd4=4.d0/3.d0 real(8), parameter :: d2f0=1.709921d0 real(8) a(3),a1(3),b1(3),b2(3),b3(3),b4(3) data a / 0.0310907d0, 0.01554535d0, 0.0168869d0 / data a1 / 0.21370d0, 0.20548d0, 0.11125d0 / data b1 / 7.5957d0, 14.1189d0, 10.357d0 / data b2 / 3.5876d0, 6.1977d0, 3.6231d0 / data b3 / 1.6382d0, 3.3662d0, 0.88026d0 / data b4 / 0.49294d0, 0.62517d0, 0.49671d0 / real(8) p1,p2,p3,rup,rdn,r,ri,ri2 real(8) rs,rs2,rs12,rs32,rsi,rs12i real(8) mz,z,z3,z4,drs,dzu,dzd real(8) fz,dfz,ders,dez,deu,ded real(8) a2,ec0,dec0,ec1,dec1,ac,dac real(8) t1,t2,t3,t4,t5,t6,t7,dt1,dt2 if (n.le.0) then write(*,*) write(*,'("Error(xc_pwca): invalid n : ",I8)') n write(*,*) stop end if ! prefactors t1=3.d0/(4.d0*pi) p1=t1**thrd p2=t1*(9.d0*pi/4.d0)**thrd p3=1.d0/(2.d0**thrd4-2.d0) do i=1,n rup=rhoup(i); rdn=rhodn(i) ! total density r=rup+rdn if ((rup.lt.0.d0).or.(rdn.lt.0.d0).or.(r.lt.1.d-20)) then ex(i)=0.d0 ec(i)=0.d0 vxup(i)=0.d0 vxdn(i)=0.d0 vcup(i)=0.d0 vcdn(i)=0.d0 cycle end if ri=1.d0/r ri2=ri**2 rs=p1*ri**thrd rs2=rs**2 rs12=sqrt(rs) rs32=rs12*rs rsi=1.d0/rs rs12i=1.d0/rs12 mz=rup-rdn z=mz/r z3=z**3 z4=z3*z ! drs/drup = drs/drdn = drs/drho drs=-thrd*rs*ri ! dz/drup, dz/drdn t1=mz*ri2 dzu=ri-t1 dzd=-ri-t1 !------------------! ! exchange ! !------------------! t1=-p2*rsi/2.d0 t2=1.d0+z t3=1.d0-z t4=t2**thrd4 t5=t3**thrd4 t6=t4+t5 ! exchange energy density ex(i)=t1*t6 ! dex/drs ders=-ex(i)*rsi ! f(z) fz=p3*(t6-2.d0) ! dex/dz t4=t4/t2 t5=t5/t3 t6=t4-t5 t7=thrd4*t6 dez=t1*t7 ! df/dz dfz=p3*t7 ! dex/drup, dex/drdn t1=ders*drs deu=t1+dez*dzu ded=t1+dez*dzd ! exchange potential vxup(i)=ex(i)+r*deu vxdn(i)=ex(i)+r*ded !---------------------! ! correlation ! !---------------------! ! ec(rs,0) a2=2.d0*a(1) t1=a2*(b1(1)*rs12+b2(1)*rs+b3(1)*rs32+b4(1)*rs2) dt1=a2*(0.5d0*b1(1)*rs12i+b2(1)+1.5d0*b3(1)*rs12+2.d0*b4(1)*rs) t3=1.d0/t1 t2=1.d0+t3 dt2=-dt1*t3**2 t3=1.d0/t2 t4=1.d0+a1(1)*rs t5=log(t2) ec0=-a2*t4*t5 dec0=-a2*(a1(1)*t5+t4*t3*dt2) ! ec(rs,1) a2=2.d0*a(2) t1=a2*(b1(2)*rs12+b2(2)*rs+b3(2)*rs32+b4(2)*rs2) dt1=a2*(0.5d0*b1(2)*rs12i+b2(2)+1.5d0*b3(2)*rs12+2.d0*b4(2)*rs) t3=1.d0/t1 t2=1.d0+t3 dt2=-dt1*t3**2 t3=1.d0/t2 t4=1.d0+a1(2)*rs t5=log(t2) ec1=-a2*t4*t5 dec1=-a2*(a1(2)*t5+t4*t3*dt2) ! ac(rs) a2=2.d0*a(3) t1=a2*(b1(3)*rs12+b2(3)*rs+b3(3)*rs32+b4(3)*rs2) dt1=a2*(0.5d0*b1(3)*rs12i+b2(3)+1.5d0*b3(3)*rs12+2.d0*b4(3)*rs) t3=1.d0/t1 t2=1.d0+t3 dt2=-dt1*t3**2 t3=1.d0/t2 t4=1.d0+a1(3)*rs t5=log(t2) ac=a2*t4*t5 dac=a2*(a1(3)*t5+t4*t3*dt2) ! correlation energy density t1=1.d0-z4 t2=(fz/d2f0)*t1 t3=ec1-ec0 t4=fz*z4 ec(i)=ec0+ac*t2+t3*t4 ! dec/drs t5=dec1-dec0 ders=dec0+dac*t2+t5*t4 ! dec/dz t6=4.d0*fz*z3 dez=(ac/d2f0)*(dfz*t1-t6)+t3*(dfz*z4+t6) ! dec/drup, dec/drdn t1=ders*drs deu=t1+dez*dzu ded=t1+dez*dzd ! correlation potential vcup(i)=ec(i)+r*deu vcdn(i)=ec(i)+r*ded end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gradwfcr2.f900000644002504400250440000000005012337331324016400 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gradwfcr2.f900000644002504400250440000000303412337331324017144 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gradwfcr2(gwf2mt) use modmain implicit none ! arguments real(8), intent(inout) :: gwf2mt(lmmaxvr,nrmtmax,natmtot) ! local variables integer ist,is,ias integer nr,nri,ir integer l,m,lm,i ! allocatable arrays complex(8), allocatable :: wfmt(:,:),gwfmt(:,:,:),zfmt(:,:) allocate(wfmt(lmmaxvr,nrmtmax)) allocate(gwfmt(lmmaxvr,nrmtmax,3)) allocate(zfmt(lmmaxvr,nrmtmax)) do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) do ist=1,spnst(is) if (spcore(ist,is).and.(spk(ist,is).eq.spl(ist,is)+1)) then l=spl(ist,is) do m=-l,l lm=idxlm(l,m) wfmt(:,1:nr)=0.d0 do ir=1,nr wfmt(lm,ir)=rwfcr(ir,1,ist,ias)/spr(ir,is) end do call gradzfmt(nr,nri,spr(:,is),wfmt,nrmtmax,gwfmt) do i=1,3 call zbsht(nr,nri,gwfmt(:,:,i),zfmt) ! inner part of muffin-tin do ir=1,nri ! factor of 2 from spin gwf2mt(1:lmmaxinr,ir,ias)=gwf2mt(1:lmmaxinr,ir,ias) & +2.d0*(dble(zfmt(1:lmmaxinr,ir))**2+aimag(zfmt(1:lmmaxinr,ir))**2) end do ! outer part of muffin tin do ir=nri+1,nr gwf2mt(:,ir,ias)=gwf2mt(:,ir,ias) & +2.d0*(dble(zfmt(:,ir))**2+aimag(zfmt(:,ir))**2) end do end do end do end if end do ! end loops over atoms end do deallocate(wfmt,gwfmt,zfmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/genlofr.f900000644002504400250440000000005012337331323016152 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genlofr.f900000644002504400250440000001202212337331323016713 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genlofr ! !INTERFACE: subroutine genlofr ! !USES: use modmain ! !DESCRIPTION: ! Generates the local-orbital radial functions. This is done by integrating ! the scalar relativistic Schr\"{o}dinger equation (or its energy deriatives) ! at the current linearisation energies using the spherical part of the ! Kohn-Sham potential. For each local-orbital, a linear combination of ! {\tt lorbord} radial functions is constructed such that its radial ! derivatives up to order ${\tt lorbord}-1$ are zero at the muffin-tin radius. ! This function is normalised and the radial Hamiltonian applied to it. The ! results are stored in the global array {\tt lofr}. ! ! !REVISION HISTORY: ! Created March 2003 (JKD) ! Copied to equivalent atoms, February 2010 (A. Kozhevnikov and JKD) !EOP !BOC implicit none ! local variables integer is,ia,ja,ias,jas integer nr,ir,ilo,jlo,io,jo integer np,nn,j,l,info real(8) t1 ! automatic arrays logical done(natmmax) real(8) vr(nrmtmax),fr(nrmtmax),gr(nrmtmax) real(8) p0(nrmtmax,maxlorbord),p1(nrmtmax) real(8) q0(nrmtmax,maxlorbord),q1(nrmtmax,maxlorbord) real(8) p0s(nrmtmax,nlomax),q0s(nrmtmax,nlomax),q1s(nrmtmax,nlomax) real(8) hp0(nrmtmax) ! allocatable arrays integer, allocatable :: ipiv(:) real(8), allocatable :: xa(:),ya(:) real(8), allocatable :: a(:,:),b(:),c(:) ! external functions real(8) polynom external polynom ! polynomial order np=max(maxlorbord+1,4) allocate(ipiv(np)) allocate(xa(np),ya(np),c(np)) allocate(a(np,np),b(np)) do is=1,nspecies nr=nrmt(is) done(:)=.false. do ia=1,natoms(is) if (done(ia)) cycle ias=idxas(ia,is) ! use spherical part of potential vr(1:nr)=vsmt(1,1:nr,ias)*y00 do ilo=1,nlorb(is) l=lorbl(ilo,is) do jo=1,lorbord(ilo,is) ! integrate the radial Schrodinger equation call rschroddme(solsc,lorbdm(jo,ilo,is),l,0,lorbe(jo,ilo,ias),nr, & spr(:,is),vr,nn,p0(:,jo),p1,q0(:,jo),q1(:,jo)) ! normalise radial functions fr(1:nr)=p0(1:nr,jo)**2 call fderiv(-1,nr,spr(:,is),fr,gr) t1=1.d0/sqrt(abs(gr(nr))) call dscal(nr,t1,p0(:,jo),1) call dscal(nr,t1,q0(:,jo),1) call dscal(nr,t1,q1(:,jo),1) ! set up the matrix of radial derivatives do j=1,np ir=nr-np+j xa(j)=spr(ir,is) ya(j)=p0(ir,jo)/spr(ir,is) end do do io=1,lorbord(ilo,is) a(io,jo)=polynom(io-1,np,xa,ya,c,rmt(is)) end do end do ! set up the target vector b(:)=0.d0 b(lorbord(ilo,is))=1.d0 call dgesv(lorbord(ilo,is),1,a,np,ipiv,b,np,info) if (info.ne.0) goto 10 ! generate linear superposition of radial functions p0s(:,ilo)=0.d0 q0s(:,ilo)=0.d0 q1s(:,ilo)=0.d0 do io=1,lorbord(ilo,is) t1=b(io) call daxpy(nr,t1,p0(:,io),1,p0s(:,ilo),1) call daxpy(nr,t1,q0(:,io),1,q0s(:,ilo),1) call daxpy(nr,t1,q1(:,io),1,q1s(:,ilo),1) end do ! normalise radial functions fr(1:nr)=p0s(1:nr,ilo)**2 call fderiv(-1,nr,spr(:,is),fr,gr) t1=1.d0/sqrt(abs(gr(nr))) call dscal(nr,t1,p0s(:,ilo),1) call dscal(nr,t1,q0s(:,ilo),1) call dscal(nr,t1,q1s(:,ilo),1) ! subtract linear combination of previous local-orbitals with same l do jlo=1,ilo-1 if (lorbl(jlo,is).eq.l) then fr(1:nr)=p0s(1:nr,ilo)*p0s(1:nr,jlo) call fderiv(-1,nr,spr(:,is),fr,gr) t1=-gr(nr) call daxpy(nr,t1,p0s(:,jlo),1,p0s(:,ilo),1) call daxpy(nr,t1,q0s(:,jlo),1,q0s(:,ilo),1) call daxpy(nr,t1,q1s(:,jlo),1,q1s(:,ilo),1) end if end do ! normalise radial functions again fr(1:nr)=p0s(1:nr,ilo)**2 call fderiv(-1,nr,spr(:,is),fr,gr) t1=abs(gr(nr)) if (t1.lt.1.d-14) goto 10 t1=1.d0/sqrt(t1) call dscal(nr,t1,p0s(:,ilo),1) call dscal(nr,t1,q0s(:,ilo),1) call dscal(nr,t1,q1s(:,ilo),1) ! apply the scalar relativistic Hamiltonian call rschrodapp(solsc,l,nr,spr(:,is),vr,p0s(:,ilo),q0s(:,ilo), & q1s(:,ilo),hp0) ! divide by r and store in global array do ir=1,nr t1=1.d0/spr(ir,is) lofr(ir,1,ilo,ias)=t1*p0s(ir,ilo) lofr(ir,2,ilo,ias)=t1*hp0(ir) end do end do done(ia)=.true. ! copy to equivalent atoms do ja=1,natoms(is) if ((.not.done(ja)).and.(eqatoms(ia,ja,is))) then jas=idxas(ja,is) do ilo=1,nlorb(is) call dcopy(nr,lofr(:,1,ilo,ias),1,lofr(:,1,ilo,jas),1) call dcopy(nr,lofr(:,2,ilo,ias),1,lofr(:,2,ilo,jas),1) end do done(ja)=.true. end if end do ! end loop over atoms and species end do end do deallocate(ipiv,xa,ya,a,b,c) return 10 continue write(*,*) write(*,'("Error(genlofr): degenerate local-orbital radial functions")') write(*,'(" for species ",I4)') is write(*,'(" atom ",I4)') ia write(*,'(" and local-orbital ",I4)') ilo write(*,*) stop end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hrmdmat.f900000644002504400250440000000005012337331324016153 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hrmdmat.f900000644002504400250440000000100412337331324016712 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hrmdmat(n,dmat) implicit none ! arguments integer, intent(in) :: n complex(8), intent(inout) :: dmat(n,n) ! local variables integer i,j complex(8) z1 do i=1,n do j=1,i-1 z1=dmat(i,j)+conjg(dmat(j,i)) dmat(i,j)=z1 dmat(j,i)=conjg(z1) end do dmat(i,i)=dble(dmat(i,i)) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/ggair_2a.f900000644002504400250440000000005012337331323016171 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggair_2a.f900000644002504400250440000000237312337331323016742 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggair_2a ! !INTERFACE: subroutine ggair_2a(g2rho,gvrho,grho2) ! !USES: use modmain ! !DESCRIPTION: ! Spin-unpolarised version of {\tt ggair\_sp\_2a}. ! ! !REVISION HISTORY: ! Created November 2009 (JKD and TMcQ) !EOP !BOC implicit none ! arguments real(8), intent(out) :: g2rho(ngtot) real(8), intent(out) :: gvrho(ngtot,3) real(8), intent(out) :: grho2(ngtot) ! local variables integer i,ig,ifg ! allocatable arrays complex(8), allocatable :: zfft1(:),zfft2(:) allocate(zfft1(ngtot),zfft2(ngtot)) ! Fourier transform density to G-space zfft1(:)=rhoir(:) call zfftifc(3,ngridg,-1,zfft1) ! grad^2 rho zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=-(gc(ig)**2)*zfft1(ifg) end do call zfftifc(3,ngridg,1,zfft2) g2rho(:)=dble(zfft2(:)) ! grad rho do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) gvrho(:,i)=dble(zfft2(:)) end do ! (grad rho)^2 grho2(:)=gvrho(:,1)**2+gvrho(:,2)**2+gvrho(:,3)**2 deallocate(zfft1,zfft2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genscss.f900000644002504400250440000000005012337331323016163 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genscss.f900000644002504400250440000000276712337331323016743 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genscss use modmain use modstore implicit none ! local variables integer is,ia,na,i real(8) vc(3),cs,sn,t1 ! automatic arrays real(8) vsc(3,nqptnr) ! find the smallest supercell which contains q-vector call findscq(iqss,avec0,nscss,vsc) ! construct supercell atomic positions and magnetic fields do is=1,nspecies na=0 do ia=1,natoms0(is) do i=1,nscss na=na+1 if (na.gt.maxatoms) then write(*,*) write(*,'("Error(genscss): too many atoms in supercell : ",I8)') na write(*,'(" for species ",I4)') is write(*,'("Adjust maxatoms in modmain and recompile code")') write(*,*) stop end if vc(:)=vsc(:,i)+atposc0(:,ia,is) ! new atomic position in lattice coordinates call r3mv(ainv,vc,atposl(:,na,is)) ! rotate external B-field and fixed spin moment vector by angle q.r t1=dot_product(vqc(:,iqss),vc(:)) cs=cos(t1); sn=sin(t1) bfcmt0(1,na,is)=cs*bfcmt00(1,ia,is)-sn*bfcmt00(2,ia,is) bfcmt0(2,na,is)=sn*bfcmt00(1,ia,is)+cs*bfcmt00(2,ia,is) bfcmt0(3,na,is)=bfcmt00(3,ia,is) mommtfix(1,na,is)=cs*mommtfix0(1,ia,is)-sn*mommtfix0(2,ia,is) mommtfix(2,na,is)=sn*mommtfix0(1,ia,is)+cs*mommtfix0(2,ia,is) mommtfix(3,na,is)=mommtfix0(3,ia,is) end do end do natoms(is)=na end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/genspfxcg.f900000644002504400250440000000005012337331324016503 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genspfxcg.f900000644002504400250440000000236112337331324017251 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genspfxcg(fxc) use modmain implicit none ! arguments complex(8), intent(out) :: fxc(ngrf,4,ngrf,4) ! local variables integer ig,jg,kg integer iv(3),i,j complex(8) z1 ! allocatable arrays real(8), allocatable :: fxcmt(:,:,:,:,:),fxcir(:,:,:) complex(8), allocatable :: fxcg(:) allocate(fxcmt(lmmaxvr,nrmtmax,natmtot,4,4),fxcir(ngtot,4,4)) allocate(fxcg(ngtot)) ! generate the kernel f_xc in real-space call genspfxcr(.true.,fxcmt,fxcir) ! Fourier transform the kernel to G-space do i=1,4 do j=i,4 call zftrf(ngtot,ivg,vgc,fxcmt(:,:,:,i,j),fxcir(:,i,j),fxcg) do ig=1,ngrf do jg=1,ngrf iv(:)=ivg(:,ig)-ivg(:,jg) if ((iv(1).ge.intgv(1,1)).and.(iv(1).le.intgv(2,1)).and. & (iv(2).ge.intgv(1,2)).and.(iv(2).le.intgv(2,2)).and. & (iv(3).ge.intgv(1,3)).and.(iv(3).le.intgv(2,3))) then kg=ivgig(iv(1),iv(2),iv(3)) z1=fxcg(kg) fxc(ig,i,jg,j)=z1 fxc(jg,j,ig,i)=conjg(z1) end if end do end do end do end do deallocate(fxcmt,fxcir,fxcg) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dmtotm3.f900000644002504400250440000000005012337331324016106 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dmtotm3.f900000644002504400250440000000647512337331324016666 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. ! !ROUTINE: dmtotm3 ! !INTERFACE: subroutine dmtotm3(l,nspinor,k,p,r,ld,dmat,tm3) ! !INPUT/OUTPUT PARAMETERS: ! l : angular momentum (in,integer) ! nspinor : number of spinor components (in,integer) ! k : k-index of tensor moment (in,integer) ! p : p-index of tensor moment (in,integer) ! r : r-index of tensor moment (in,integer) ! ld : leading dimension (in,integer) ! dmat : density matrix (in,complex(ld,nspinor,ld,nspinor)) ! tm3 : 3-index spherical tensor moment (out,complex(-ld:ld)) ! !DESCRIPTION: ! Transform the density matrix to a 3-index spherical tensor moment ! representation, see {\it Phys. Rev. B} {\bf 80}, 035121 (2009). ! ! !REVISION HISTORY: ! Created April 2008 (F. Cricchio and L. Nordstrom) ! Modified, January 2014 (JKD) !EOP !BOC implicit none integer, intent(in) :: l,nspinor integer, intent(in) :: k,p,r integer, intent(in) :: ld complex(8), intent(in) :: dmat(ld,nspinor,ld,nspinor) complex(8), intent(out) :: tm3(-ld:ld) ! local variables integer ispn,jspn,g,t,x,y integer m1,m2,lm1,lm2 real(8) nlk,nsp,t1,t2,t3 complex(8), parameter :: zi=(0.d0,1.d0) complex(8) z1 ! external functions real(8) wigner3j,wigner3jf,factnm,factr external wigner3j,wigner3jf,factnm,factr if (l.lt.0) then write(*,*) write(*,'("Error(dmtotm3): l < 0 : ",I8)') l write(*,*) stop end if if ((nspinor.lt.1).or.(nspinor.gt.2)) then write(*,*) write(*,'("Error(dmtotm3): nspinor should be 1 or 2 : ",I8)') nspinor write(*,*) stop end if if (k.lt.0) then write(*,*) write(*,'("Error(dmtotm3): k < 0 : ",I8)') k write(*,*) stop end if if (k.gt.2*l) then write(*,*) write(*,'("Error(dmtotm3): k > 2*l : ",2I8)') k,2*l write(*,*) stop end if if ((p.lt.0).or.(p.gt.1)) then write(*,*) write(*,'("Error(dmtotm3): p should be 0 or 1 : ",I8)') p write(*,*) stop end if if (r.lt.abs(k-p)) then write(*,*) write(*,'("Error(dmtotm3): r < |k-p| : ",2I8)') r,abs(k-p) write(*,*) stop end if if (r.gt.(k+p)) then write(*,*) write(*,'("Error(dmtotm3): r > k+p : ",2I8)') r,k+p write(*,*) stop end if ! calculate the 3-index tensor moment; see Eqs. (23), (26), (27) in article g=k+p+r if (mod(g,2).eq.0) then z1=1.d0/wigner3j(k,p,r,0,0,0) else t1=sqrt(factr(g+1,g-2*k)/(factnm(g-2*p,1)*factnm(g-2*r,1))) t1=t1*factnm(g-2*k,2)*factnm(g-2*p,2)*factnm(g-2*r,2)/factnm(g,2) z1=t1*zi**(-g) end if nlk=factnm(2*l,1)/sqrt(factnm(2*l-k,1)*factnm(2*l+k+1,1)) nsp=1.d0/sqrt(factnm(2+p,1)) z1=z1*dble((-1)**(k+p+l))/(nlk*nsp) tm3(:)=0.d0 do t=-r,r do x=-k,k do y=-p,p t1=dble((-1)**(x+y))*wigner3j(k,r,p,-x,t,-y) do ispn=1,nspinor do jspn=1,nspinor t2=t1*wigner3jf(1,2*p,1,2*jspn-3,2*y,3-2*ispn) if (abs(t2).gt.1.d-10) then lm1=l**2 do m1=-l,l lm1=lm1+1 lm2=l**2 do m2=-l,l lm2=lm2+1 t3=t2*dble((-1)**(1+jspn-m2))*wigner3j(l,k,l,-m2,x,m1) tm3(t)=tm3(t)+t3*z1*dmat(lm1,ispn,lm2,jspn) end do end do end if end do end do end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genwfsvp.f900000644002504400250440000000005012337331323016355 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genwfsvp.f900000644002504400250440000000435712337331323017132 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genwfsvp(tsh,tgp,nst,idx,vpl,wfmt,ld,wfir) use modmain implicit none ! arguments logical, intent(in) :: tsh,tgp integer, intent(in) :: nst,idx(nst) real(8), intent(in) :: vpl(3) complex(8), intent(out) :: wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nst) integer, intent(in) :: ld complex(8), intent(out) :: wfir(ld,nspinor,nst) ! local variables integer ispn,igp real(8) vl(3),vc(3) ! automatic arrays integer ngp(nspnfv) ! allocatable arrays integer, allocatable :: igpig(:,:) real(8), allocatable :: vgpl(:,:,:),vgpc(:,:),gpc(:),tpgpc(:,:) complex(8), allocatable :: sfacgp(:,:),apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) allocate(igpig(ngkmax,nspnfv)) allocate(vgpl(3,ngkmax,nspnfv),vgpc(3,ngkmax)) allocate(gpc(ngkmax),tpgpc(2,ngkmax)) allocate(sfacgp(ngkmax,natmtot)) allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) ! loop over first-variational spins do ispn=1,nspnfv vl(:)=vpl(:) vc(:)=bvec(:,1)*vpl(1)+bvec(:,2)*vpl(2)+bvec(:,3)*vpl(3) ! spin-spiral case if (spinsprl) then if (ispn.eq.1) then vl(:)=vl(:)+0.5d0*vqlss(:) vc(:)=vc(:)+0.5d0*vqcss(:) else vl(:)=vl(:)-0.5d0*vqlss(:) vc(:)=vc(:)-0.5d0*vqcss(:) end if end if ! generate the G+p-vectors call gengkvec(ngvec,ivg,vgc,vl,vc,gkmax,ngkmax,ngp(ispn),igpig(:,ispn), & vgpl(:,:,ispn),vgpc) ! generate the spherical coordinates of the G+p-vectors do igp=1,ngp(ispn) call sphcrd(vgpc(:,igp),gpc(igp),tpgpc(:,igp)) end do ! generate structure factors for G+p-vectors call gensfacgp(ngp(ispn),vgpc,ngkmax,sfacgp) ! find the matching coefficients call match(ngp(ispn),gpc,tpgpc,sfacgp,apwalm(:,:,:,:,ispn)) end do deallocate(vgpc,gpc,sfacgp) ! get the first- and second-variational eigenvectors from file allocate(evecfv(nmatmax,nstfv,nspnfv)) call getevecfv(vpl,vgpl,evecfv) deallocate(vgpl) allocate(evecsv(nstsv,nstsv)) call getevecsv(vpl,evecsv) ! calculate the second-variational wavefunctions call genwfsv(tsh,tgp,nst,idx,ngp,igpig,apwalm,evecfv,evecsv,wfmt,ld,wfir) deallocate(igpig,apwalm,evecfv,evecsv) return end subroutine elk-2.3.22/src/PaxHeaders.22528/moddftu.f900000644002504400250440000000005012337331322016157 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/moddftu.f900000644002504400250440000000630512337331322016727 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module moddftu use modmain !-----------------------------------------------------------! ! muffin-tin density and potential matrix variables ! !-----------------------------------------------------------! ! maximum angular momentum for muffin-tin density matrix integer, parameter :: lmaxdm=3 integer, parameter :: lmmaxdm=(lmaxdm+1)**2 ! density matrix in each muffin-tin complex(8), allocatable :: dmatmt(:,:,:,:,:) ! potential matrix in each muffin-tin complex(8), allocatable :: vmatmt(:,:,:,:,:) ! tvmatmt is .true. if the potential matrices are calculated logical tvmatmt ! tvmmt is .true. if the potential matrix for that l and atom is non-zero logical, allocatable :: tvmmt(:,:) !-------------------------! ! DFT+U variables ! !-------------------------! ! type of DFT+U to use (0 = none) integer dftu ! input type for DFT+U calculation (1:5) integer inpdftu ! maximum number of DFT+U entries integer, parameter :: maxdftu=40 ! number of DFT+U entries integer ndftu ! species and angular momentum for each entry integer idftu(2,maxdftu) ! U and J values for each entry real(8) ujdu(2,maxdftu) ! interpolation constant alpha for each atom and entry [PRB 67, 153106 (2003)] real(8), allocatable :: alphadu(:,:) ! readadu is .true. if alphadu is to be read from file logical readadu ! DFT+U energy for each atom and entry real(8), allocatable :: engyadu(:,:) ! energy from the DFT+U correction real(8) engydu ! Slater parameters real(8) fdu(0:2*lmaxdm,maxdftu) ! Racah parameters real(8) edu(0:lmaxdm,maxdftu) ! screening length of Yukawa potential to calculate Slater integrals real(8) lambdadu(maxdftu) ! energies to calculate radial functions for Slater integrals real(8), allocatable :: fdue(:,:,:) ! radial functions to calculate Slater integrals real(8), allocatable :: fdufr(:,:,:,:,:) ! fixed value of U for which screening length has to be determined real(8) udufix(maxdftu) ! initial values of screening length if U is fixed real(8) lambdadu0(maxdftu) !---------------------------------! ! tensor moment variables ! !---------------------------------! ! tmwrite is .true. if tensor moments are written out at every s.c. loop logical tmwrite ! fixed tensor moment type ! 0 : none ! 2 (-2) : fixed 2-index tensor moment (or just lowering the symmetry) ! 3 (-3) : fixed 3-index tensor moment (or just lowering the symmetry) integer ftmtype ! number of fixed tensor moment entries integer ntmfix ! tensor moment indices for each entry: is, ia, l, n and k, p, x, y for the ! 2-index tensor or k, p, r, t for the 3-index tensor integer, allocatable :: itmfix(:,:) ! tensor component complex(8), allocatable :: tmfix(:) ! spatial and spin rotation matrices of tensor real(8), allocatable :: rtmfix(:,:,:,:) ! density matrices corresponding to the fixed tensor moments complex(8), allocatable :: dmftm(:,:,:,:,:) ! fixed tensor moment potential matrix complex(8), allocatable :: vmftm(:,:,:,:,:) ! fixed tensor moment step size real(8) tauftm ! number of self-consistent loops after which FTM field is updated integer ftmstep end module elk-2.3.22/src/PaxHeaders.22528/tddft.f900000644002504400250440000000005012337331324015624 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/tddft.f900000644002504400250440000000061112337331324016366 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 K. Krieger, J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine tddft use modmain use modtddft implicit none ! initialise global variables call init0 call init1 ! read time-dependent A-field from file call readafieldt return end subroutine elk-2.3.22/src/PaxHeaders.22528/genspchi0.f900000644002504400250440000000005012337331324016377 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genspchi0.f900000644002504400250440000001430212337331324017143 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genspchi0 ! !INTERFACE: subroutine genspchi0(ikp,scsr,vqpl,gqc,ylmgq,sfacgq,chi0) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ikp : k-point from non-reduced set (in,integer) ! scsr : scissor correction (in,real) ! vqpl : input q-point in lattice coordinates (in,real(3)) ! gqc : length of G+q-vectors (in,real(ngrf)) ! ylmgq : spherical harmonics of the G+q-vectors (in,complex(lmmaxvr,ngrf)) ! sfacgq : structure factors of G+q-vectors (in,complex(ngrf,natmtot)) ! chi0 : spin-dependent Kohn-Sham response function in G-space ! (out,complex(ngrf,4,ngrf,4,nwrf)) ! !DESCRIPTION: ! Computes the spin-dependent Kohn-Sham response function: ! \begin{align*} ! \chi_{\alpha\beta,\alpha'\beta'}({\bf r},{\bf r}',\omega) ! & \equiv\frac{\delta\rho_{\alpha\beta}({\bf r},\omega)} ! {\delta v_{\alpha'\beta'}({\bf r}',\omega)} \\ ! & =\frac{1}{N_k}\sum_{i{\bf k},j{\bf k}'}(f_{i{\bf k}}-f_{j{\bf k}'}) ! \frac{\langle i{\bf k}|\hat{\rho}_{\beta\alpha}({\bf r})|j{\bf k}'\rangle ! \langle j{\bf k}'|\hat{\rho}_{\alpha'\beta'}({\bf r}')|i{\bf k}\rangle} ! {w+(\varepsilon_{i{\bf k}}-\varepsilon_{j{\bf k}'})+i\eta}, ! \end{align*} ! where $\alpha$ and $\beta$ are spin-coordinates, $N_k$ is the number of ! $k$-points, $f_{i{\bf k}}$ are the occupancies, $v$ is the Kohn-Sham ! potential and $\hat{\rho}$ is the spin-density operator. With translational ! symmetry in mind, we adopt the following convention for its Fourier ! transform: ! $$ \chi_{\alpha\beta,\alpha'\beta'}({\bf G},{\bf G}',{\bf q},\omega)= ! \frac{1}{\Omega}\int d^3r\,d^3r'\,e^{-i({\bf G}+{\bf q})\cdot{\bf r}} ! e^{i({\bf G}'+{\bf q})\cdot{\bf r}'} ! \chi_{\alpha\beta,\alpha'\beta'}({\bf r},{\bf r}',\omega). $$ ! Let ! $$ Z_{i{\bf k},j{\bf k}+{\bf q}}^{\alpha\beta}({\bf G})\equiv ! \int d^3r\,e^{i({\bf G}+{\bf q})\cdot{\bf r}} ! \varphi_{j{\bf k}+{\bf q},\alpha}^*({\bf r}) ! \varphi_{i{\bf k},\beta}({\bf r}) $$ ! then the response function in $G$-space can be written ! $$ \chi_{\alpha\beta,\alpha'\beta'}({\bf G},{\bf G}',{\bf q},\omega)= ! \frac{1}{N_k\Omega}\sum_{i{\bf k},j{\bf k}+{\bf q}} ! (f_{i{\bf k}}-f_{j{\bf k}}) ! \frac{\left[Z_{i{\bf k},j{\bf k}+{\bf q}}^{\alpha\beta}({\bf G})\right]^* ! Z_{i{\bf k},j{\bf k}+{\bf q}}^{\alpha'\beta'}({\bf G}')} ! {w+(\varepsilon_{i{\bf k}}-\varepsilon_{j{\bf k}+{\bf q}})+i\eta}. $$ ! ! !REVISION HISTORY: ! Created March 2012 (SS and JKD) !EOP !BOC implicit none ! local variables integer, intent(in) :: ikp real(8), intent(in) :: scsr real(8), intent(in) :: vqpl(3) real(8), intent(in) :: gqc(ngrf) complex(8), intent(in) :: ylmgq(lmmaxvr,ngrf) complex(8), intent(in) :: sfacgq(ngrf,natmtot) complex(8), intent(inout) :: chi0(nwrf,ngrf,4,ngrf,4) ! local variables logical tz(4) integer isym,jkp,jkpq integer iw,nst,nstq integer ist,jst,kst,lst integer ig,jg,a,b,i,j real(8) vkql(3),eij,t1 complex(8) z1,z2 ! automatic arrays integer idx(nstsv),idxq(nstsv) ! allocatable arrays complex(8), allocatable :: wfmt(:,:,:,:,:),wfir(:,:,:) complex(8), allocatable :: wfmtq(:,:,:,:,:),wfirq(:,:,:) complex(8), allocatable :: zrhomt(:,:,:),zrhoir(:) complex(8), allocatable :: zw(:),zg(:,:) if (.not.spinpol) then write(*,*) write(*,'("Error(genspchi0): spin-unpolarised calculation")') write(*,*) stop end if ! k+q-vector in lattice coordinates vkql(:)=vkl(:,ikp)+vqpl(:) ! equivalent reduced k-points for k and k+q call findkpt(vkl(:,ikp),isym,jkp) call findkpt(vkql,isym,jkpq) ! count and index states at k and k+q in energy window nst=0 do ist=1,nstsv if (abs(evalsv(ist,jkp)-efermi).lt.emaxrf) then nst=nst+1 idx(nst)=ist end if end do nstq=0 do jst=1,nstsv if (abs(evalsv(jst,jkpq)-efermi).lt.emaxrf) then nstq=nstq+1 idxq(nstq)=jst end if end do ! generate the wavefunctions for all states at k and k+q in energy window allocate(wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nst)) allocate(wfir(ngtot,nspinor,nst)) call genwfsvp(.false.,.false.,nst,idx,vkl(:,ikp),wfmt,ngtot,wfir) allocate(wfmtq(lmmaxvr,nrcmtmax,natmtot,nspinor,nstq)) allocate(wfirq(ngtot,nspinor,nstq)) call genwfsvp(.false.,.false.,nstq,idxq,vkql,wfmtq,ngtot,wfirq) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(zrhomt,zrhoir,zw,zg) & !$OMP PRIVATE(jst,kst,lst,t1,eij,iw) & !$OMP PRIVATE(i,j,a,b,tz,ig,jg,z1,z2) !$OMP DO do ist=1,nst allocate(zrhomt(lmmaxvr,nrcmtmax,natmtot),zrhoir(ngtot)) allocate(zw(nwrf),zg(ngrf,4)) kst=idx(ist) do jst=1,nstq lst=idxq(jst) t1=wkptnr*omega*(occsv(kst,jkp)-occsv(lst,jkpq)) if (abs(t1).lt.1.d-8) cycle eij=evalsv(kst,jkp)-evalsv(lst,jkpq) ! scissor operator if (abs(scsr).gt.1.d-8) then if (eij.gt.0.d0) then eij=eij+scsr else eij=eij-scsr end if end if ! frequency-dependent part in response function formula for all frequencies do iw=1,nwrf zw(iw)=t1/(eij+wrf(iw)) end do ! compute the complex density in G+q-space i=0 do a=1,2 do b=1,2 i=i+1 ! find which contributions are zero for collinear case tz(i)=.false. if (.not.ncmag) then if (((a.eq.1).and.(kst.gt.nstfv)).or. & ((a.eq.2).and.(kst.le.nstfv)).or. & ((b.eq.1).and.(lst.gt.nstfv)).or. & ((b.eq.2).and.(lst.le.nstfv))) then tz(i)=.true. cycle end if end if call genzrho(.true.,.false.,wfmt(:,:,:,a,ist),wfir(:,a,ist), & wfmtq(:,:,:,b,jst),wfirq(:,b,jst),zrhomt,zrhoir) call zftzf(ngrf,gqc,ylmgq,ngrf,sfacgq,zrhomt,zrhoir,zg(:,i)) end do end do !$OMP CRITICAL do j=1,4 if (tz(j)) cycle do jg=1,ngrf z1=conjg(zg(jg,j)) do i=1,4 if (tz(i)) cycle do ig=1,ngrf z2=zg(ig,i)*z1 call zaxpy(nwrf,z2,zw,1,chi0(:,ig,i,jg,j),1) end do end do end do end do !$OMP END CRITICAL ! end loop over jst end do deallocate(zrhomt,zrhoir,zw,zg) ! end loop over ist end do !$OMP END DO !$OMP END PARALLEL deallocate(wfmt,wfmtq,wfir,wfirq) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gengkvec.f900000644002504400250440000000005012337331323016307 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gengkvec.f900000644002504400250440000000427012337331323017056 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2012 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: gengkvec ! !INTERFACE: subroutine gengkvec(ngvec,ivg,vgc,vkl,vkc,gkmax,ngkmax,ngk,igkig,vgkl,vgkc) ! !INPUT/OUTPUT PARAMETERS: ! ngvec : number of G-vectors (in,integer) ! ivg : G-vector integer coordinates (in,integer(3,ngvec)) ! vgc : G-vectors in Cartesian coordinates (in,real(3,ngvec)) ! vkl : k-point vector in lattice coordinates (in,real(3)) ! vkc : k-point vector in Cartesian coordinates (in,real(3)) ! gkmax : G+k-vector cut-off (in,real) ! ngkmax : maximum number of G+k-vectors (in,integer) ! ngk : number of G+k-vectors returned (out,integer) ! igkig : index from G+k-vectors to G-vectors (out,integer(ngkmax)) ! vgkl : G+k-vectors in lattice coordinates (out,real(3,ngkmax)) ! vgkc : G+k-vectors in Cartesian coordinates (out,real(3,ngkmax)) ! !DESCRIPTION: ! Generates a set of ${\bf G+k}$-vectors for the input $k$-point with length ! less than {\tt gkmax}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) ! Removed spherical coordinate generation, May 2010 (JKD) ! Removed modmain and added arguments, September 2012 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ngvec integer, intent(in) :: ivg(3,ngvec) real(8), intent(in) :: vgc(3,ngvec) real(8), intent(in) :: vkl(3),vkc(3) real(8), intent(in) :: gkmax integer, intent(in) :: ngkmax integer, intent(out) :: ngk integer, intent(out) :: igkig(ngkmax) real(8), intent(out) :: vgkl(3,ngkmax) real(8), intent(out) :: vgkc(3,ngkmax) ! local variables integer ig real(8) v(3),t0,t1 t0=gkmax**2 ngk=0 do ig=1,ngvec v(:)=vgc(:,ig)+vkc(:) t1=v(1)**2+v(2)**2+v(3)**2 if (t1.lt.t0) then ngk=ngk+1 if (ngk.gt.ngkmax) then write(*,*) write(*,'("Error(gengkvec): number of G+k-vectors exceeds ngkmax")') write(*,*) stop end if ! index to G-vector igkig(ngk)=ig ! G+k-vector in lattice coordinates vgkl(:,ngk)=dble(ivg(:,ig))+vkl(:) ! G+k-vector in Cartesian coordinates vgkc(:,ngk)=v(:) end if end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/init3.f900000644002504400250440000000005012337331323015544 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/init3.f900000644002504400250440000000224512337331323016313 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 S. Sharma, J. K. Dewhurst and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine init3 use modmain use modvars implicit none ! local variables integer ig,iw real(8) w1,w2,t1,t2 !-------------------------------------------------------------! ! response function and perturbation theory variables ! !-------------------------------------------------------------! ! G-vectors for response functions ngrf=1 do ig=ngvec,1,-1 if (gc(ig).lt.gmaxrf) then ngrf=ig exit end if end do ! frequencies for reponse functions nwrf=1 if (allocated(wrf)) deallocate(wrf) if ((task.eq.188).or.(task.eq.320).or.(task.eq.330)) then nwrf=nwplot allocate(wrf(nwrf)) w1=wplot(1) w2=max(wplot(2),w1) t1=(w2-w1)/dble(nwplot) do iw=1,nwplot t2=w1+t1*dble(iw-1) wrf(iw)=cmplx(t2,swidth,8) end do else nwrf=1 allocate(wrf(nwrf)) wrf(1)=cmplx(0.d0,swidth,8) end if ! write to VARIABLES.OUT call writevars('gmaxrf',rv=gmaxrf) call writevars('ngrf',iv=ngrf) call writevars('nwrf',iv=nwrf) call writevars('wrf',nv=nwrf,zva=wrf) return end subroutine elk-2.3.22/src/PaxHeaders.22528/mixpack.f900000644002504400250440000000005012337331323016152 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mixpack.f900000644002504400250440000000326212337331323016721 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: mixpack ! !INTERFACE: subroutine mixpack(tpack,n,v) ! !USES: use modmain use moddftu ! !INPUT/OUTPUT PARAMETERS: ! tpack : .true. for packing, .false. for unpacking (in,logical) ! n : total number of real values stored (out,integer) ! v : packed potential (inout,real(*)) ! !DESCRIPTION: ! Packs/unpacks the muffin-tin and interstitial parts of the Kohn-Sham ! potential and magnetic field into/from the single array {\tt v}. This array ! can then be passed directly to the mixing routine. See routine {\tt rfpack}. ! ! !REVISION HISTORY: ! Created June 2003 (JKD) !EOP !BOC implicit none ! arguments logical, intent(in) :: tpack integer, intent(out) :: n real(8), intent(inout) :: v(*) ! local variables integer idm,ias,lm1,lm2 integer ispn,jspn n=0 call rfpack(tpack,n,nrmt,nrmtinr,nrmtmax,vsmt,vsir,v) do idm=1,ndmag call rfpack(tpack,n,nrcmt,nrcmtinr,nrcmtmax,bsmt(:,:,:,idm),bsir(:,idm),v) end do ! pack the DFT+U potential if required if (tvmatmt) then do ias=1,natmtot do ispn=1,nspinor do jspn=1,nspinor do lm1=1,lmmaxdm do lm2=1,lmmaxdm n=n+1 if (tpack) then v(n)=dble(vmatmt(lm1,ispn,lm2,jspn,ias)) n=n+1 v(n)=aimag(vmatmt(lm1,ispn,lm2,jspn,ias)) else vmatmt(lm1,ispn,lm2,jspn,ias)=cmplx(v(n),v(n+1),8) n=n+1 end if end do end do end do end do end do end if return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rhomagk.f900000644002504400250440000000005012337331323016146 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rhomagk.f900000644002504400250440000001713612337331323016722 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2010 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rhomagk ! !INTERFACE: subroutine rhomagk(ik,evecfv,evecsv) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ik : k-point number (in,integer) ! evecfv : first-variational eigenvectors (in,complex(nmatmax,nstfv,nspnfv)) ! evecsv : second-variational eigenvectors (in,complex(nstsv,nstsv)) ! !DESCRIPTION: ! Generates the partial valence charge density from the eigenvectors at ! $k$-point {\tt ik}. In the muffin-tin region, the wavefunction is obtained ! in terms of its $(l,m)$-components from both the APW and local-orbital ! functions. Using a backward spherical harmonic transform (SHT), the ! wavefunction is converted to real-space and the density obtained from its ! modulus squared. This density is then accumulated in the global variable ! {\tt rhomt}. A similar proccess is used for the intersitial density in which ! the wavefunction in real-space is obtained from a Fourier transform of the ! sum of APW functions. The interstitial density is added to the global array ! {\tt rhoir}. See routines {\tt wavefmt}, {\tt genshtmat} and {\tt eveqn}. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) ! Removed conversion to spherical harmonics, January 2009 (JKD) ! Partially de-phased the muffin-tin magnetisation for spin-spirals, ! February 2009 (FC, FB & LN) ! Optimisations, July 2010 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ik complex(8), intent(in) :: evecfv(nmatmax,nstfv,nspnfv) complex(8), intent(in) :: evecsv(nstsv,nstsv) ! local variables integer ispn,jspn,ist,is,ia,ias integer nr,nrc,nrci,ir,irc integer lmmax,itp,igk,ifg,i,j real(8) t0,t1,t2,t3,t4 real(8) ts0,ts1 complex(8) zq(2),z1,z2 ! automatic arrays logical done(nstfv,nspnfv) ! allocatable arrays complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: wfmt1(:,:,:,:),wfmt2(:,:) complex(8), allocatable :: wfmt3(:,:,:),wfir(:,:) call timesec(ts0) !----------------------------------------------! ! muffin-tin density and magnetisation ! !----------------------------------------------! allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) if (tevecsv) allocate(wfmt1(lmmaxvr,nrcmtmax,nstfv,nspnfv)) allocate(wfmt2(lmmaxvr,nrcmtmax)) allocate(wfmt3(lmmaxvr,nrcmtmax,nspinor)) ! find the matching coefficients !$OMP PARALLEL DEFAULT(SHARED) !$OMP DO do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do !$OMP END DO !$OMP END PARALLEL ! loop over atoms do ias=1,natmtot is=idxis(ias) ia=idxia(ias) nr=nrmt(is) nrc=nrcmt(is) nrci=nrcmtinr(is) ! de-phasing factor for spin-spirals if (spinsprl.and.ssdph) then t1=-0.5d0*dot_product(vqcss(:),atposc(:,ia,is)) zq(1)=cmplx(cos(t1),sin(t1),8) zq(2)=conjg(zq(1)) end if done(:,:)=.false. do j=1,nstsv if (abs(occsv(j,ik)).lt.epsocc) cycle t0=wkpt(ik)*occsv(j,ik) t4=2.d0*t0 if (tevecsv) then ! generate spinor wavefunction from second-variational eigenvectors i=0 do ispn=1,nspinor jspn=jspnfv(ispn) wfmt2(:,:)=0.d0 do ist=1,nstfv i=i+1 z1=evecsv(i,j) if (spinsprl.and.ssdph) z1=z1*zq(ispn) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then if (.not.done(ist,jspn)) then call wavefmt(lradstp,lmaxvr,ias,ngk(jspn,ik), & apwalm(:,:,:,:,jspn),evecfv(:,ist,jspn),lmmaxvr, & wfmt1(:,:,ist,jspn)) done(ist,jspn)=.true. end if ! add to spinor wavefunction call zfmtadd(nrc,nrci,z1,wfmt1(:,:,ist,jspn),wfmt2) end if end do ! convert to spherical coordinates call zbsht(nrc,nrci,wfmt2,wfmt3(:,:,ispn)) end do else ! spin-unpolarised wavefunction call wavefmt(lradstp,lmaxvr,ias,ngk(1,ik),apwalm,evecfv(:,j,1),lmmaxvr, & wfmt2) ! convert to spherical coordinates call zbsht(nrc,nrci,wfmt2,wfmt3) end if ! add to density and magnetisation !$OMP CRITICAL if (spinpol) then ! spin-polarised if (ncmag) then ! non-collinear lmmax=lmmaxinr irc=0 do ir=1,nr,lradstp irc=irc+1 do itp=1,lmmax z1=wfmt3(itp,irc,1) z2=wfmt3(itp,irc,2) t1=dble(z1)**2+aimag(z1)**2 t2=dble(z2)**2+aimag(z2)**2 z1=conjg(z1)*z2 rhomt(itp,ir,ias)=rhomt(itp,ir,ias)+t0*(t1+t2) magmt(itp,ir,ias,1)=magmt(itp,ir,ias,1)+t4*dble(z1) magmt(itp,ir,ias,2)=magmt(itp,ir,ias,2)+t4*aimag(z1) magmt(itp,ir,ias,3)=magmt(itp,ir,ias,3)+t0*(t1-t2) end do if (irc.eq.nrci) lmmax=lmmaxvr end do else ! collinear lmmax=lmmaxinr irc=0 do ir=1,nr,lradstp irc=irc+1 do itp=1,lmmax t1=dble(wfmt3(itp,irc,1))**2+aimag(wfmt3(itp,irc,1))**2 t2=dble(wfmt3(itp,irc,2))**2+aimag(wfmt3(itp,irc,2))**2 rhomt(itp,ir,ias)=rhomt(itp,ir,ias)+t0*(t1+t2) magmt(itp,ir,ias,1)=magmt(itp,ir,ias,1)+t0*(t1-t2) end do if (irc.eq.nrci) lmmax=lmmaxvr end do end if else ! spin-unpolarised lmmax=lmmaxinr irc=0 do ir=1,nr,lradstp irc=irc+1 rhomt(1:lmmax,ir,ias)=rhomt(1:lmmax,ir,ias) & +t0*(dble(wfmt3(1:lmmax,irc,1))**2+aimag(wfmt3(1:lmmax,irc,1))**2) if (irc.eq.nrci) lmmax=lmmaxvr end do end if !$OMP END CRITICAL end do ! end loop over atoms end do if (tevecsv) deallocate(wfmt1) deallocate(apwalm,wfmt2,wfmt3) !------------------------------------------------! ! interstitial density and magnetisation ! !------------------------------------------------! allocate(wfir(ngtot,nspinor)) do j=1,nstsv if (abs(occsv(j,ik)).lt.epsocc) cycle t0=wkpt(ik)*occsv(j,ik) t3=t0/omega t4=2.d0*t3 wfir(:,:)=0.d0 if (tevecsv) then ! generate spinor wavefunction from second-variational eigenvectors i=0 do ispn=1,nspinor jspn=jspnfv(ispn) do ist=1,nstfv i=i+1 z1=evecsv(i,j) if (abs(dble(z1))+abs(aimag(z1)).gt.epsocc) then do igk=1,ngk(jspn,ik) ifg=igfft(igkig(igk,jspn,ik)) wfir(ifg,ispn)=wfir(ifg,ispn)+z1*evecfv(igk,ist,jspn) end do end if end do end do else ! spin-unpolarised wavefunction do igk=1,ngk(1,ik) ifg=igfft(igkig(igk,1,ik)) wfir(ifg,1)=evecfv(igk,j,1) end do end if ! Fourier transform wavefunction to real-space do ispn=1,nspinor call zfftifc(3,ngridg,1,wfir(:,ispn)) end do ! add to density and magnetisation !$OMP CRITICAL if (spinpol) then ! spin-polarised if (ncmag) then ! non-collinear do ir=1,ngtot z1=wfir(ir,1) z2=wfir(ir,2) t1=dble(z1)**2+aimag(z1)**2 t2=dble(z2)**2+aimag(z2)**2 z1=conjg(z1)*z2 rhoir(ir)=rhoir(ir)+t3*(t1+t2) magir(ir,1)=magir(ir,1)+t4*dble(z1) magir(ir,2)=magir(ir,2)+t4*aimag(z1) magir(ir,3)=magir(ir,3)+t3*(t1-t2) end do else ! collinear do ir=1,ngtot t1=dble(wfir(ir,1))**2+aimag(wfir(ir,1))**2 t2=dble(wfir(ir,2))**2+aimag(wfir(ir,2))**2 rhoir(ir)=rhoir(ir)+t3*(t1+t2) magir(ir,1)=magir(ir,1)+t3*(t1-t2) end do end if else ! spin-unpolarised rhoir(:)=rhoir(:)+t3*(dble(wfir(:,1))**2+aimag(wfir(:,1))**2) end if !$OMP END CRITICAL end do deallocate(wfir) call timesec(ts1) !$OMP ATOMIC timerho=timerho+ts1-ts0 return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/timesec.f900000644002504400250440000000005012337331323016147 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/timesec.f900000644002504400250440000000065412337331323016720 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine timesec(ts) implicit none ! arguments real(8), intent(out) :: ts ! local variables integer count,count_rate call system_clock(count=count,count_rate=count_rate) ts=dble(count)/dble(count_rate) return end subroutine elk-2.3.22/src/PaxHeaders.22528/gentaucr.f900000644002504400250440000000005012337331324016327 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gentaucr.f900000644002504400250440000000366112337331324017101 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gentaucr(taumt) use modmain implicit none ! arguments real(8), intent(inout) :: taumt(lmmaxvr,nrmtmax,natmtot,nspinor) ! local variables integer ist,ispn,jspn integer is,ia,ias integer nr,nri,ir,i,m ! allocatable arrays complex(8), allocatable :: wfcr(:,:,:) complex(8), allocatable :: gzfmt(:,:,:),zfmt(:,:) !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(wfcr,gzfmt,zfmt) & !$OMP PRIVATE(is,ia,nr,nri,ist,m) & !$OMP PRIVATE(ispn,jspn,i,ir) !$OMP DO do ias=1,natmtot allocate(wfcr(lmmaxvr,nrmtmax,2)) allocate(gzfmt(lmmaxvr,nrmtmax,3),zfmt(lmmaxvr,nrmtmax)) is=idxis(ias) ia=idxia(ias) nr=nrmt(is) nri=nrmtinr(is) do ist=1,spnst(is) if (spcore(ist,is)) then do m=-spk(ist,is),spk(ist,is)-1 ! generate the core wavefunction in spherical harmonics call wavefcr(.true.,1,is,ia,ist,m,nrmtmax,wfcr) do ispn=1,2 if (spinpol) then jspn=ispn else jspn=1 end if ! compute the gradient call gradzfmt(nr,nri,spr(:,is),wfcr(:,:,ispn),nrmtmax,gzfmt) do i=1,3 ! convert gradient to spherical coordinates call zbsht(nr,nri,gzfmt(:,:,i),zfmt) ! add on inner part of muffin-tin do ir=1,nri taumt(1:lmmaxinr,ir,ias,jspn)=taumt(1:lmmaxinr,ir,ias,jspn) & +0.5d0*(dble(zfmt(1:lmmaxinr,ir))**2 & +aimag(zfmt(1:lmmaxinr,ir))**2) end do ! add on outer part of muffin-tin do ir=nri+1,nr taumt(:,ir,ias,jspn)=taumt(:,ir,ias,jspn) & +0.5d0*(dble(zfmt(:,ir))**2+aimag(zfmt(:,ir))**2) end do end do end do end do end if end do deallocate(wfcr,gzfmt,zfmt) end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/dhmllolo.f900000644002504400250440000000005012337331324016331 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dhmllolo.f900000644002504400250440000000211312337331324017072 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dhmllolo(ias,ngp,ngpq,ld,dh) use modmain use modphonon implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq integer, intent(in) :: ld complex(8), intent(inout) :: dh(ld,*) ! local variables integer is,ilo,jlo integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3,i,j complex(8) zsum is=idxis(ias) do ilo=1,nlorb(is) l1=lorbl(ilo,is) do m1=-l1,l1 lm1=idxlm(l1,m1) i=ngpq+idxlo(lm1,ilo,ias) do jlo=1,nlorb(is) l3=lorbl(jlo,is) do m3=-l3,l3 lm3=idxlm(l3,m3) j=ngp+idxlo(lm3,jlo,ias) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyyy(lm1,lm2,lm3)*dhlolo(lm2,jlo,ilo,ias) end do end if end do dh(i,j)=dh(i,j)+zsum end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/genjlgq0r.f900000644002504400250440000000005012337331323016407 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genjlgq0r.f900000644002504400250440000000116512337331323017156 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genjlgq0r(gq0,jlgq0r) use modmain implicit none ! arguments real(8), intent(in) :: gq0 real(8), intent(out) :: jlgq0r(0:lmaxvr,nrcmtmax,nspecies) ! local variables integer is,irc real(8) t1 !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(irc,t1) !$OMP DO do is=1,nspecies do irc=1,nrcmt(is) t1=gq0*rcmt(irc,is) call sbessel(lmaxvr,t1,jlgq0r(:,irc,is)) end do end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/genidxbdg.f900000644002504400250440000000005012337331324016452 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genidxbdg.f900000644002504400250440000000170612337331324017222 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genidxbdg use modmain use modscdft implicit none ! local variables integer ik,jk,ist,i i=0 ! loop over non-reduced k-points do ik=1,nkptnr ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) do ist=1,nstsv if (abs(evalsv(ist,jk)-efermi).lt.ewbdg) i=i+1 end do end do nbdg=i if (nbdg.eq.0) then write(*,*) write(*,'("Error(genidxbdg): no states found in BdG energy window")') write(*,*) stop end if ! allocate global index array if (allocated(idxbdg)) deallocate(idxbdg) allocate(idxbdg(2,nbdg)) i=0 do ik=1,nkptnr jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) do ist=1,nstsv if (abs(evalsv(ist,jk)-efermi).lt.ewbdg) then i=i+1 idxbdg(1,i)=ik idxbdg(2,i)=ist end if end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/rbsht.f900000644002504400250440000000005012337331322015637 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/rbsht.f900000644002504400250440000000161012337331322016401 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine rbsht(nr,nri,lrstp1,rfmt1,lrstp2,rfmt2) use modmain implicit none ! arguments integer, intent(in) :: nr,nri integer, intent(in) :: lrstp1 real(8), intent(in) :: rfmt1(lmmaxvr,lrstp1,nr) integer, intent(in) :: lrstp2 real(8), intent(out) :: rfmt2(lmmaxvr,lrstp2,nr) ! local variables integer ld1,ld2,nr0,ir0 ld1=lmmaxvr*lrstp1 ld2=lmmaxvr*lrstp2 ! transform the inner part of the muffin-tin call dgemm('N','N',lmmaxinr,nri,lmmaxinr,1.d0,rbshtinr,lmmaxinr,rfmt1,ld1, & 0.d0,rfmt2,ld2) ! transform the outer part of the muffin-tin nr0=nr-nri if (nr0.eq.0) return ir0=nri+1 call dgemm('N','N',lmmaxvr,nr0,lmmaxvr,1.d0,rbshtvr,lmmaxvr,rfmt1(:,1,ir0), & ld1,0.d0,rfmt2(:,1,ir0),ld2) return end subroutine elk-2.3.22/src/PaxHeaders.22528/ggamt_sp_2a.f900000644002504400250440000000005012337331323016701 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggamt_sp_2a.f900000644002504400250440000001073612337331323017454 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggamt_sp_2a ! !INTERFACE: subroutine ggamt_sp_2a(is,rhoup,rhodn,g2up,g2dn,gvup,gvdn,gup2,gdn2,gupdn) ! !USES: use modmain ! !DESCRIPTION: ! Computes the muffin-tin gradients $\nabla^2\rho^{\uparrow}$, ! $\nabla^2\rho^{\downarrow}$, $\nabla\rho^{\uparrow}$, ! $\nabla\rho^{\downarrow}$, $(\nabla\rho^{\uparrow})^2$, ! $(\nabla\rho^{\downarrow})^2$ and ! $\nabla\rho^{\uparrow}\cdot\nabla\rho^{\downarrow}$, which are passed in to ! GGA functional subroutines of type 2. The exchange-correlation energy in ! these routines has the functional form ! $$ E_{xc}[\rho^{\uparrow},\rho^{\downarrow}]=\int d^3r\,\hat{\epsilon}_{xc} ! \bigl(\rho^{\uparrow}({\bf r}),\rho^{\downarrow}({\bf r}), ! (\nabla\rho^{\uparrow}({\bf r}))^2,(\nabla\rho^{\downarrow}({\bf r}))^2, ! \nabla\rho^{\uparrow}({\bf r}) ! \cdot\nabla\rho^{\downarrow}({\bf r})\bigr), $$ ! where $\hat{\epsilon}_{xc}({\bf r})=\epsilon_{xc}({\bf r})\rho({\bf r})$ is ! the xc energy per unit volume, with $\epsilon_{xc}$ being the xc energy per ! electron, and $\rho=\rho^{\uparrow}+\rho^{\downarrow}$. From the gradients ! above, type 2 GGA routines return $\epsilon_{xc}$, but not directly the xc ! potentials. Instead they generate the derivatives ! $\partial\hat{\epsilon}_{xc}/\partial\rho^{\uparrow}({\bf r})$, ! $\partial\hat{\epsilon}_{xc}/\partial(\nabla\rho^{\uparrow}({\bf r}))^2$, ! and the same for down spin, as well as ! $\partial\hat{\epsilon}_{xc}/\partial(\nabla\rho^{\uparrow}({\bf r}) ! \cdot\nabla\rho^{\downarrow}({\bf r}))$. In a post-processing step invoked ! by {\tt ggamt\_sp\_2b}, integration by parts is used to obtain the xc ! potential explicitly with ! \begin{align*} ! V_{xc}^{\uparrow}({\bf r})=&\frac{\partial\hat{\epsilon}_{xc}}{\partial ! \rho^{\uparrow}({\bf r})}-2\left(\nabla\frac{\partial\hat{\epsilon}_{xc}} ! {\partial(\nabla\rho^{\uparrow})^2}\right)\cdot\nabla\rho^{\uparrow} ! -2\frac{\hat{\epsilon}_{xc}}{\partial(\nabla\rho^{\uparrow})^2}\nabla^2 ! \rho^{\uparrow}\\ ! &-\left(\nabla\frac{\hat{\epsilon}_{xc}}{\partial(\nabla\rho^{\uparrow} ! \cdot\nabla\rho^{\downarrow})}\right)\cdot\nabla\rho^{\downarrow} ! -\frac{\partial\hat{\epsilon}_{xc}}{\partial(\nabla\rho^{\uparrow}\cdot ! \nabla\rho^{\downarrow})}\nabla^2\rho^{\downarrow}, ! \end{align*} ! and similarly for $V_{xc}^{\downarrow}$. ! ! !REVISION HISTORY: ! Created November 2009 (JKD and TMcQ) !EOP !BOC implicit none ! arguments integer, intent(in) :: is real(8), intent(in) :: rhoup(lmmaxvr,nrmtmax) real(8), intent(in) :: rhodn(lmmaxvr,nrmtmax) real(8), intent(in) :: g2up(lmmaxvr,nrmtmax) real(8), intent(in) :: g2dn(lmmaxvr,nrmtmax) real(8), intent(out) :: gvup(lmmaxvr,nrmtmax,3) real(8), intent(out) :: gvdn(lmmaxvr,nrmtmax,3) real(8), intent(out) :: gup2(lmmaxvr,nrmtmax) real(8), intent(out) :: gdn2(lmmaxvr,nrmtmax) real(8), intent(out) :: gupdn(lmmaxvr,nrmtmax) ! local variables integer nr,nri,i ! allocatable arrays real(8), allocatable :: rfmt1(:,:),rfmt2(:,:),grfmt(:,:,:) allocate(rfmt1(lmmaxvr,nrmtmax),rfmt2(lmmaxvr,nrmtmax)) allocate(grfmt(lmmaxvr,nrmtmax,3)) nr=nrmt(is) nri=nrmtinr(is) !----------------! ! rho up ! !----------------! ! convert rhoup to spherical harmonics call rfsht(nr,nri,1,rhoup,1,rfmt1) ! compute grad^2 rhoup in spherical coordinates call grad2rfmt(nr,nri,spr(:,is),rfmt1,rfmt2) call rbsht(nr,nri,1,rfmt2,1,g2up) ! grad rhoup in spherical coordinates call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,gvup(:,:,i)) end do ! (grad rhoup)^2 gup2(:,1:nr)=gvup(:,1:nr,1)**2+gvup(:,1:nr,2)**2+gvup(:,1:nr,3)**2 !------------------! ! rho down ! !------------------! ! convert rhodn to spherical harmonics call rfsht(nr,nri,1,rhodn,1,rfmt1) ! compute grad^2 rhodn in spherical coordinates call grad2rfmt(nr,nri,spr(:,is),rfmt1,rfmt2) call rbsht(nr,nri,1,rfmt2,1,g2dn) ! grad rhodn in spherical coordinates call gradrfmt(nr,nri,spr(:,is),rfmt1,nrmtmax,grfmt) do i=1,3 call rbsht(nr,nri,1,grfmt(:,:,i),1,gvdn(:,:,i)) end do ! (grad rhodn)^2 gdn2(:,1:nr)=gvdn(:,1:nr,1)**2+gvdn(:,1:nr,2)**2+gvdn(:,1:nr,3)**2 ! (grad rhoup).(grad rhodn) gupdn(:,1:nr)=gvup(:,1:nr,1)*gvdn(:,1:nr,1) & +gvup(:,1:nr,2)*gvdn(:,1:nr,2) & +gvup(:,1:nr,3)*gvdn(:,1:nr,3) deallocate(rfmt1,rfmt2,grfmt) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/gentpmae.f900000644002504400250440000000005012337331323016316 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/gentpmae.f900000644002504400250440000000356212337331323017070 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gentpmae use modmain implicit none ! local variables integer na,n,i1,i2,i3,i integer isym,lspl real(8) v1(3),v2(3),t1 ! allocatable arrays real(8), allocatable :: vp(:,:) if (allocated(tpmae)) deallocate(tpmae) select case(npmae0) case(4:) ! distribute points evenly on a sphere npmae=npmae0 allocate(tpmae(2,npmae)) call sphcover(npmae,tpmae) case(-4:-1) ! use symmetry reduced cardinal directions na=abs(npmae0) n=(2*na+1)**3 allocate(vp(3,n)) npmae=0 do i1=-na,na v1(1)=dble(i1) do i2=-na,na v1(2)=dble(i2) do i3=-na,na v1(3)=dble(i3) if ((i1.eq.0).and.(i2.eq.0).and.(i3.eq.0)) cycle do isym=1,nsymcrys lspl=lsplsymc(isym) v2(:)=symlat(:,1,lspl)*v1(1) & +symlat(:,2,lspl)*v1(2) & +symlat(:,3,lspl)*v1(3) do i=1,npmae t1=abs(vp(1,i)-v2(1))+abs(vp(2,i)-v2(2))+abs(vp(3,i)-v2(3)) if (t1.lt.epslat) goto 10 end do end do npmae=npmae+1 vp(:,npmae)=v1(:) 10 continue end do end do end do ! convert vectors to spherical coordinates allocate(tpmae(2,npmae)) do i=1,npmae call sphcrd(vp(:,i),t1,tpmae(:,i)) end do deallocate(vp) case(2) ! use x- and z-directions npmae=2 allocate(tpmae(2,npmae)) tpmae(1,1)=pi/2.d0 tpmae(2,1)=0.d0 tpmae(1,2)=0.d0 tpmae(2,2)=0.d0 case(3) ! use x-, y- and z-directions npmae=3 allocate(tpmae(2,npmae)) tpmae(1,1)=pi/2.d0 tpmae(2,1)=0.d0 tpmae(1,2)=pi/2.d0 tpmae(2,2)=pi/2.d0 tpmae(1,3)=0.d0 tpmae(2,3)=0.d0 case default write(*,*) write(*,'("Error(gentpmae): invalid npmae : ",I8)') npmae0 write(*,*) stop end select return end subroutine elk-2.3.22/src/PaxHeaders.22528/putevalsv.f900000644002504400250440000000005012337331323016547 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/putevalsv.f900000644002504400250440000000120112337331323017305 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine putevalsv(ik,evalsvp) use modmain implicit none ! arguments integer, intent(in) :: ik real(8), intent(in) :: evalsvp(nstsv) ! local variables integer recl ! find the record length inquire(iolength=recl) vkl(:,ik),nstsv,evalsvp !$OMP CRITICAL open(70,file='EVALSV'//trim(filext),action='WRITE',form='UNFORMATTED', & access='DIRECT',recl=recl) write(70,rec=ik) vkl(:,ik),nstsv,evalsvp close(70) !$OMP END CRITICAL return end subroutine elk-2.3.22/src/PaxHeaders.22528/wfcrplot.f900000644002504400250440000000005012337331323016356 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/wfcrplot.f900000644002504400250440000000203112337331323017116 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine wfcrplot use modmain implicit none ! local variables integer ist,is,ia,ias,ir character(256) fname ! initialise universal variables call init0 ! read density and potentials from file call readstate ! generate the core wavefunctions call gencore do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) write(fname,'("WFCORE_S",I2.2,"_A",I4.4,".OUT")') is,ia open(50,file=trim(fname),action='WRITE',form='FORMATTED') do ist=1,spnst(is) if (spcore(ist,is)) then do ir=1,spnr(is) write(50,'(2G18.10)') spr(ir,is),rwfcr(ir,1,ist,ias) end do write(50,'(" ")') end if end do close(50) end do end do write(*,*) write(*,'("Info(wfcrplot):")') write(*,'(" Core state wavefunctions written to WFCORE_Sss_Aaaaa.OUT")') write(*,'(" for all species and atoms")') return end subroutine elk-2.3.22/src/PaxHeaders.22528/xc_xalpha.f900000644002504400250440000000005012337331324016466 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/xc_xalpha.f900000644002504400250440000000247112337331324017236 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 1998-2006 ABINIT group (DCA, XG, GMR). ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: xc_xalpha ! !INTERFACE: subroutine xc_xalpha(n,rho,exc,vxc) ! !INPUT/OUTPUT PARAMETERS: ! n : number of density points (in,integer) ! rho : charge density (in,real(n)) ! exc : exchange-correlation energy density (out,real(n)) ! vxc : exchange-correlation potential (out,real(n)) ! !DESCRIPTION: ! $X_{\alpha}$ approximation to the exchange-correlation potential and energy ! density. See J. C. Slater, {\it Phys. Rev.} {\bf 81}, 385 (1951). ! ! !REVISION HISTORY: ! Modified an ABINIT routine, September 2006 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: n real(8), intent(in) :: rho(n) real(8), intent(out) :: exc(n) real(8), intent(out) :: vxc(n) ! local variables integer i real(8), parameter :: pi=3.1415926535897932385d0 real(8), parameter :: alpha=1.d0 real(8) r,efac,rs,rsm1,vfac vfac=(1.5d0/pi)**(2.d0/3.d0) efac=0.75d0*vfac ! loop over density points do i=1,n r=rho(i) if (r.gt.1.d-12) then rs=(3.d0/(4.d0*pi*r))**(1.d0/3.d0) rsm1=1.0d0/rs ! compute energy density exc(i)=-alpha*efac*rsm1 ! compute potential vxc(i)=-alpha*vfac*rsm1 end if end do end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/phdisp.f900000644002504400250440000000005012337331324016006 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phdisp.f900000644002504400250440000000371112337331324016554 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phdisp use modmain use modphonon implicit none ! local variables integer iq,i,iv real(8) wmin,wmax ! allocatable arrays real(8), allocatable :: wp(:,:) complex(8), allocatable :: dynq(:,:,:),dynr(:,:,:) complex(8), allocatable :: dynp(:,:),ev(:,:) ! initialise universal variables call init0 call init2 allocate(wp(nbph,npp1d)) allocate(dynq(nbph,nbph,nqpt)) allocate(dynr(nbph,nbph,nqptnr)) allocate(dynp(nbph,nbph)) allocate(ev(nbph,nbph)) ! read in the dynamical matrices call readdyn(dynq) ! apply the acoustic sum rule call sumrule(dynq) ! Fourier transform the dynamical matrices to real-space call dynqtor(dynq,dynr) ! generate a set of q-point vectors along a path in the Brillouin zone call connect(bvec,nvp1d,npp1d,vvlp1d,vplp1d,dvp1d,dpp1d) wmin=0.d0 wmax=0.d0 ! compute the phonon frequencies along the path do iq=1,npp1d ! compute the dynamical matrix at this particular q-point call dynrtoq(vplp1d(:,iq),dynr,dynp) ! find the phonon frequencies and eigenvectors call dynev(dynp,wp(:,iq),ev) wmin=min(wmin,wp(1,iq)) wmax=max(wmax,wp(nbph,iq)) end do wmax=wmax+(wmax-wmin)*0.5d0 wmin=wmin-(wmax-wmin)*0.5d0 ! output the vertex location lines open(50,file='PHDLINES.OUT',action='WRITE',form='FORMATTED') do iv=1,nvp1d write(50,'(2G18.10)') dvp1d(iv),wmin write(50,'(2G18.10)') dvp1d(iv),wmax write(50,'(" ")') end do close(50) ! output the phonon dispersion open(50,file='PHDISP.OUT',action='WRITE',form='FORMATTED') do i=1,nbph do iq=1,npp1d write(50,'(2G18.10)') dpp1d(iq),wp(i,iq) end do write(50,'(" ")') end do close(50) write(*,*) write(*,'("Info(phdisp):")') write(*,'(" phonon dispersion written to PHDISP.OUT")') write(*,'(" vertex location lines written to PHDLINES.OUT")') deallocate(wp,dynq,dynr,dynp,ev) return end subroutine elk-2.3.22/src/PaxHeaders.22528/ggair_sp_2b.f900000644002504400250440000000005012337331323016674 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/ggair_sp_2b.f900000644002504400250440000000745212337331323017450 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 T. McQueen and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: ggair_sp_2b ! !INTERFACE: subroutine ggair_sp_2b(g2up,g2dn,gvup,gvdn,vxup,vxdn,vcup,vcdn,dxdgu2,dxdgd2, & dxdgud,dcdgu2,dcdgd2,dcdgud) ! !USES: use modmain ! !DESCRIPTION: ! Post processing step of interstitial gradients for GGA type 2. See routine ! {\tt ggamt\_sp\_2a} for full details. ! ! !REVISION HISTORY: ! Created November 2009 (JKD and TMcQ) !EOP !BOC implicit none real(8), intent(in) :: g2up(ngtot) real(8), intent(in) :: g2dn(ngtot) real(8), intent(in) :: gvup(ngtot,3) real(8), intent(in) :: gvdn(ngtot,3) real(8), intent(inout) :: vxup(ngtot) real(8), intent(inout) :: vxdn(ngtot) real(8), intent(inout) :: vcup(ngtot) real(8), intent(inout) :: vcdn(ngtot) real(8), intent(in) :: dxdgu2(ngtot) real(8), intent(in) :: dxdgd2(ngtot) real(8), intent(in) :: dxdgud(ngtot) real(8), intent(in) :: dcdgu2(ngtot) real(8), intent(in) :: dcdgd2(ngtot) real(8), intent(in) :: dcdgud(ngtot) ! local variables integer ig,ifg,i ! allocatable arrays real(8), allocatable :: rfir(:) complex(8), allocatable :: zfft1(:),zfft2(:) allocate(rfir(ngtot)) allocate(zfft1(ngtot),zfft2(ngtot)) !------------------! ! exchange ! !------------------! ! compute grad dxdgu2 zfft1(:)=dxdgu2(:) call zfftifc(3,ngridg,-1,zfft1) ! (grad dxdgu2).(grad rhoup) rfir(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) rfir(:)=rfir(:)+dble(zfft2(:))*gvup(:,i) end do vxup(:)=vxup(:)-2.d0*(rfir(:)+dxdgu2(:)*g2up(:))-dxdgud(:)*g2dn(:) ! compute grad dxdgd2 zfft1(:)=dxdgd2(:) call zfftifc(3,ngridg,-1,zfft1) ! (grad dxdgd2).(grad rhodn) rfir(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) rfir(:)=rfir(:)+dble(zfft2(:))*gvdn(:,i) end do vxdn(:)=vxdn(:)-2.d0*(rfir(:)+dxdgd2(:)*g2dn(:))-dxdgud(:)*g2up(:) ! compute grad dxdgud zfft1(:)=dxdgud(:) call zfftifc(3,ngridg,-1,zfft1) ! (grad dxdgud).(grad rhodn) and (grad dxdgud).(grad rhoup) do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) vxup(:)=vxup(:)-dble(zfft2(:))*gvdn(:,i) vxdn(:)=vxdn(:)-dble(zfft2(:))*gvup(:,i) end do !---------------------! ! correlation ! !---------------------! ! compute grad dcdgu2 zfft1(:)=dcdgu2(:) call zfftifc(3,ngridg,-1,zfft1) ! (grad dcdgu2).(grad rhoup) rfir(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) rfir(:)=rfir(:)+dble(zfft2(:))*gvup(:,i) end do vcup(:)=vcup(:)-2.d0*(rfir(:)+dcdgu2(:)*g2up(:))-dcdgud(:)*g2dn(:) ! compute grad dcdgd2 zfft1(:)=dcdgd2(:) call zfftifc(3,ngridg,-1,zfft1) ! (grad dcdgd2).(grad rhodn) rfir(:)=0.d0 do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) rfir(:)=rfir(:)+dble(zfft2(:))*gvdn(:,i) end do vcdn(:)=vcdn(:)-2.d0*(rfir(:)+dcdgd2(:)*g2dn(:))-dcdgud(:)*g2up(:) ! compute grad dcdgud zfft1(:)=dcdgud(:) call zfftifc(3,ngridg,-1,zfft1) ! (grad dcdgud).(grad rhodn) and (grad dcdgud).(grad rhoup) do i=1,3 zfft2(:)=0.d0 do ig=1,ngvec ifg=igfft(ig) zfft2(ifg)=vgc(i,ig)*cmplx(-aimag(zfft1(ifg)),dble(zfft1(ifg)),8) end do call zfftifc(3,ngridg,1,zfft2) vcup(:)=vcup(:)-dble(zfft2(:))*gvdn(:,i) vcdn(:)=vcdn(:)-dble(zfft2(:))*gvup(:,i) end do deallocate(rfir,zfft1,zfft2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/hmlaaq.f900000644002504400250440000000005012337331324015762 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/hmlaaq.f900000644002504400250440000000345512337331324016535 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine hmlaaq(ias,ngp,ngpq,apwalm,apwalmq,ld,hq) use modmain implicit none integer, intent(in) :: ias integer, intent(in) :: ngp,ngpq complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) complex(8), intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot) integer, intent(in) :: ld complex(8), intent(inout) :: hq(*) ! local variables integer is,io,jo integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3 real(8) t1 complex(8) z1,zsum ! automatic arrays complex(8) x(ngp) is=idxis(ias) lm1=0 do l1=0,lmaxmat do m1=-l1,l1 lm1=lm1+1 do io=1,apword(l1,is) x(:)=0.d0 lm3=0 do l3=0,lmaxmat do m3=-l3,l3 lm3=lm3+1 do jo=1,apword(l3,is) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyry(lm1,lm2,lm3)*haa(lm2,jo,l3,io,l1,ias) end do end if end do if (abs(dble(zsum))+abs(aimag(zsum)).gt.1.d-14) then call zaxpy(ngp,zsum,apwalm(:,jo,lm3,ias),1,x,1) end if end do end do end do call zgerci(ngpq,ngp,zone,apwalmq(:,io,lm1,ias),x,ld,hq) end do end do end do ! kinetic surface contribution t1=0.5d0*rmt(is)**2 lm1=0 do l1=0,lmaxmat do m1=-l1,l1 lm1=lm1+1 do io=1,apword(l1,is) do jo=1,apword(l1,is) z1=t1*apwfr(nrmt(is),1,io,l1,ias)*apwdfr(jo,l1,ias) call zgerci(ngpq,ngp,z1,apwalmq(:,io,lm1,ias),apwalm(:,jo,lm1,ias),ld, & hq) end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/symrfir.f900000644002504400250440000000005012337331324016212 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/symrfir.f900000644002504400250440000000510512337331324016757 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: symrfir ! !INTERFACE: subroutine symrfir(ngv,rfir) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ngv : number of G-vectors to be used for the Fourier space rotation ! (in,integer) ! rfir : real intersitial function (inout,real(ngtot)) ! !DESCRIPTION: ! Symmetrises a real scalar interstitial function. The function is first ! Fourier transformed to $G$-space, and then averaged over each symmetry by ! rotating the Fourier coefficients and multiplying them by a phase factor ! corresponding to the symmetry translation. ! ! !REVISION HISTORY: ! Created July 2007 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ngv real(8), intent(inout) :: rfir(ngtot) ! local variables logical tvz integer isym,lspl,ilspl,sym(3,3) integer iv(3),ig,ifg,jfg real(8) vtc(3),t1 complex(8) z1 ! allocatable arrays complex(8), allocatable :: zfft1(:),zfft2(:) allocate(zfft1(ngtot),zfft2(ngtot)) ! Fourier transform function to G-space zfft1(:)=rfir(:) call zfftifc(3,ngridg,-1,zfft1) zfft2(:)=0.d0 ! loop over crystal symmetries do isym=1,nsymcrys ! translation in Cartesian coordinates call r3mv(avec,vtlsymc(:,isym),vtc) ! index to lattice symmetry of spatial rotation lspl=lsplsymc(isym) ! inverse rotation required for rotation of G-vectors ilspl=isymlat(lspl) sym(:,:)=symlat(:,:,ilspl) ! zero translation vector flag tvz=tvzsymc(isym) do ig=1,ngv ! multiply the transpose of the inverse symmetry matrix with the G-vector iv(1)=sym(1,1)*ivg(1,ig)+sym(2,1)*ivg(2,ig)+sym(3,1)*ivg(3,ig) iv(2)=sym(1,2)*ivg(1,ig)+sym(2,2)*ivg(2,ig)+sym(3,2)*ivg(3,ig) iv(3)=sym(1,3)*ivg(1,ig)+sym(2,3)*ivg(2,ig)+sym(3,3)*ivg(3,ig) if ((iv(1).ge.intgv(1,1)).and.(iv(1).le.intgv(2,1)).and. & (iv(2).ge.intgv(1,2)).and.(iv(2).le.intgv(2,2)).and. & (iv(3).ge.intgv(1,3)).and.(iv(3).le.intgv(2,3))) then ifg=igfft(ig) jfg=igfft(ivgig(iv(1),iv(2),iv(3))) if (tvz) then ! zero translation vector zfft2(jfg)=zfft2(jfg)+zfft1(ifg) else ! complex phase factor for translation t1=-(vgc(1,ig)*vtc(1)+vgc(2,ig)*vtc(2)+vgc(3,ig)*vtc(3)) z1=cmplx(cos(t1),sin(t1),8) zfft2(jfg)=zfft2(jfg)+z1*zfft1(ifg) end if end if end do end do ! Fourier transform to real-space and normalise call zfftifc(3,ngridg,1,zfft2) t1=1.d0/dble(nsymcrys) rfir(:)=t1*dble(zfft2(:)) deallocate(zfft1,zfft2) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genfdufr.f900000644002504400250440000000005012337331324016317 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genfdufr.f900000644002504400250440000000430512337331324017065 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genfdufr ! !INTERFACE: subroutine genfdufr ! !USES: use modmain use moddftu ! !DESCRIPTION: ! Generates the radial functions used to calculate the Slater integrals ! through a Yukawa potential. ! ! !REVISION HISTORY: ! Created April 2008 from genapwfr (Francesco Cricchio) !EOP !BOC implicit none ! local variables integer is,ia,ias,i integer l,nn,io,nr,ir real(8) t1 ! automatic arrays real(8) vr(nrmtmax),fr(nrmtmax),gr(nrmtmax) real(8) p0(nrmtmax,apwordmax),p1(nrmtmax),p1s(apwordmax) real(8) q0(nrmtmax,apwordmax),q1(nrmtmax,apwordmax) real(8) hp0(nrmtmax) do i=1,ndftu is=idftu(1,i) l=idftu(2,i) io=1 nr=nrmt(is) do ia=1,natoms(is) ias=idxas(ia,is) vr(1:nr)=vsmt(1,1:nr,ias)*y00 ! integrate the radial Schrodinger equation call rschroddme(solsc,0,l,0,fdue(io,l,ias),nr,spr(1,is),vr,nn,p0(1,io),p1, & q0(1,io),q1(1,io)) ! normalise radial functions do ir=1,nr fr(ir)=p0(ir,io)**2 end do call fderiv(-1,nr,spr(1,is),fr,gr) t1=1.d0/sqrt(abs(gr(nr))) p0(1:nr,io)=t1*p0(1:nr,io) p1s(io)=t1*p1(nr) q0(1:nr,io)=t1*q0(1:nr,io) q1(1:nr,io)=t1*q1(1:nr,io) ! normalise radial functions do ir=1,nr fr(ir)=p0(ir,io)**2 end do call fderiv(-1,nr,spr(1,is),fr,gr) t1=abs(gr(nr)) if (t1.lt.1.d-20) then write(*,*) write(*,'("Error(genfdufr): degenerate APW radial functions")') write(*,'(" for species ",I4)') is write(*,'(" atom ",I4)') ia write(*,'(" angular momentum ",I4)') l write(*,'(" and order ",I4)') io write(*,*) stop end if t1=1.d0/sqrt(t1) p0(1:nr,io)=t1*p0(1:nr,io) p1s(io)=t1*p1s(io) q0(1:nr,io)=t1*q0(1:nr,io) q1(1:nr,io)=t1*q1(1:nr,io) ! apply the Hamiltonian call rschrodapp(solsc,l,nr,spr(1,is),vr,p0(1,io),q0(1,io),q1(1,io),hp0) ! divide by r and store in global array do ir=1,nr t1=1.d0/spr(ir,is) fdufr(ir,1,io,l,ias)=t1*p0(ir,io) fdufr(ir,2,io,l,ias)=t1*hp0(ir) end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writedftu.f900000644002504400250440000000005012337331324016534 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writedftu.f900000644002504400250440000000477012337331324017310 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine writedftu use modmain use moddftu implicit none ! local variables integer ispn,jspn,is,ia,ias integer i,k,l,m1,m2,lm1,lm2 if (dftu.eq.0) return ! machine readable density matrix file open(50,file='DMATMT'//trim(filext),action='WRITE',form='FORMATTED') do i=1,ndftu is=idftu(1,i) l=idftu(2,i) do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,*) write(50,'(3I4," : species, atom, l")') is,ia,l do ispn=1,nspinor do jspn=1,nspinor write(50,*) write(50,'(2I4," : ispn, jspn; m1, m2, dmatmt below")') ispn,jspn do m1=-l,l lm1=idxlm(l,m1) do m2=-l,l lm2=idxlm(l,m2) write(50,'(2I6," ",2G18.10)') m1,m2,dmatmt(lm1,ispn,lm2,jspn,ias) end do end do end do end do end do end do close(50) ! machine readable potential matrix file open(50,file='VMATMT'//trim(filext),action='WRITE',form='FORMATTED') do i=1,ndftu is=idftu(1,i) l=idftu(2,i) do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,*) write(50,'(3I4," : species, atom, l")') is,ia,l do ispn=1,nspinor do jspn=1,nspinor write(50,*) write(50,'(2I4," : ispn, jspn; m1, m2, vmatmt below")') ispn,jspn do m1=-l,l lm1=idxlm(l,m1) do m2=-l,l lm2=idxlm(l,m2) write(50,'(2I6," ",2G18.10)') m1,m2,vmatmt(lm1,ispn,lm2,jspn,ias) end do end do end do end do end do end do close(50) ! machine readable alpha parameters if ((dftu.eq.3).and.(.not.readadu)) then open(50,file='ALPHADU'//trim(filext),action='WRITE',form='FORMATTED') do i=1,ndftu is=idftu(1,i) l=idftu(2,i) do ia=1,natoms(is) ias=idxas(ia,is) write(50,*) write(50,'(3I4," : species, atom, l")') is,ia,l write(50,'(G18.10," : alpha")') alphadu(ia,i) end do end do close(50) end if ! Slater parameters open(50,file='FDU'//trim(filext),action='WRITE',form='FORMATTED') do i=1,ndftu is=idftu(1,i) l=idftu(2,i) write(50,*) write(50,'(3I4," : species, l")') is,l do k=0,2*l,2 write(50,'(G18.10," : F^(",I1,")")') fdu(k,i),k end do write(50,'(G18.10," : U")') ujdu(1,i) write(50,'(G18.10," : J")') ujdu(2,i) if (inpdftu.ge.4) write(50,'(G18.10," : lambdadu")') lambdadu(i) end do close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/testcheck.f900000644002504400250440000000005012337331323016473 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/testcheck.f900000644002504400250440000001123512337331323017241 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine testcheck implicit none ! local variables logical exist integer i,j,k,n integer nv_,nv,vt_,vt,iv_,iv real(8) rv_,rv,a,b real(8) tol,t1,t2 complex(8) zv_,zv character(256) fname_,fname,descr n=0 do i=0,999 write(fname_,'("TEST",I3.3,".OUT_")') i inquire(file=trim(fname_),exist=exist) if (exist) then write(fname,'("TEST",I3.3,".OUT")') i inquire(file=trim(fname),exist=exist) if (.not.exist) then write(*,*) write(*,'("Error(testcheck): file ",A," does not exist")') trim(fname) write(*,*) stop end if open(90,file=trim(fname_),action='READ',form='FORMATTED') open(91,file=trim(fname),action='READ',form='FORMATTED') read(90,*,err=10) descr read(91,*,err=20) descr read(90,*,err=10) vt_,nv_ read(91,*,err=20) vt,nv if (vt_.ne.vt) then write(*,*) write(*,'("Error(testcheck): differing variable type")') write(*,'(" for quantity ''",A,"''")') trim(descr) write(*,'(" ",A," : ",I8)') trim(fname_),vt_ write(*,'(" ",A," : ",I8)') trim(fname),vt write(*,*) stop end if if (nv_.ne.nv) then write(*,*) write(*,'("Error(testcheck): differing number of variables")') write(*,'(" for quantity ''",A,"''")') trim(descr) write(*,'(" ",A," : ",I8)') trim(fname_),nv_ write(*,'(" ",A," : ",I8)') trim(fname),nv write(*,*) stop end if if (nv.le.0) then write(*,*) write(*,'("Error(testcheck): nv <= 0 : ",I8)') nv write(*,*) stop end if if (vt.eq.1) then ! integer variables do j=1,nv read(90,*,err=10) k,iv_ if (j.ne.k) goto 10 read(91,*,err=20) k,iv if (j.ne.k) goto 20 if (iv.ne.iv_) then write(*,*) write(*,'("Error(testcheck): variable ",I8," is different")') j write(*,'(" for quantity ''",A,"''")') trim(descr) write(*,'(" ",A," : ",I8)') trim(fname_),iv_ write(*,'(" ",A," : ",I8)') trim(fname),iv write(*,*) stop end if end do else if (vt.eq.2) then ! real variables read(90,*,err=10) tol read(91,*,err=20) tol do j=1,nv read(90,*,err=10) k,rv_ if (j.ne.k) goto 10 read(91,*,err=20) k,rv if (j.ne.k) goto 20 t1=abs(rv_-rv) t2=abs(rv_)*tol if ((t1.gt.t2).and.(abs(rv_).gt.1.d-4)) then write(*,*) write(*,'("Error(testcheck): variable ",I8," outside tolerance")') j write(*,'(" for quantity ''",A,"''")') trim(descr) write(*,'(" ",A," (correct value)",T40," : ",G22.12)') trim(fname_), & rv_ write(*,'(" ",A,T40," : ",G22.12)') trim(fname),rv write(*,'(" absolute difference",T40," : ",G22.12)') t1 write(*,'(" required relative tolerance",T40," : ",G22.12)') tol write(*,'(" required absolute tolerance",T40," : ",G22.12)') t2 write(*,*) stop end if end do else if (vt.eq.3) then ! complex variables read(90,*,err=10) tol read(91,*,err=20) tol do j=1,nv read(90,*,err=10) k,a,b zv_=cmplx(a,b,8) if (j.ne.k) goto 10 read(91,*,err=20) k,a,b zv=cmplx(a,b,8) if (j.ne.k) goto 20 t1=abs(zv_-zv) t2=abs(zv_)*tol if ((t1.gt.t2).and.(abs(rv_).gt.1.d-4)) then write(*,*) write(*,'("Error(testcheck): variable ",I8," outside tolerance")') j write(*,'(" for quantity ''",A,"''")') trim(descr) write(*,'(" ",A," (correct value)",T40," : ",2G22.12)') & trim(fname_),zv_ write(*,'(" ",A,T40," : ",2G22.12)') trim(fname),zv write(*,'(" difference",T40," : ",G22.12)') t1 write(*,'(" required relative tolerance",T40," : ",G22.12)') tol write(*,'(" required absolute tolerance",T40," : ",G22.12)') t2 write(*,*) stop end if end do else write(*,*) write(*,'("Error(testcheck): variable type not defined : ",I8)') vt write(*,*) stop end if close(90) close(91) n=n+1 end if end do if (n.eq.0) then write(*,*) write(*,'("Warning(testcheck): no tests found")') else write(*,*) write(*,'("Info(testcheck): passed all tests")') end if return 10 continue write(*,*) write(*,'("Error(testcheck): error reading from ",A)') trim(fname_) write(*,*) stop 20 continue write(*,*) write(*,'("Error(testcheck): error reading from ",A)') trim(fname) write(*,*) stop end subroutine elk-2.3.22/src/PaxHeaders.22528/genfdu.f900000644002504400250440000000005012337331324015767 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genfdu.f900000644002504400250440000001200712337331324016533 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio, L. Nordstrom and J. K. Dewhurst. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: genfdu ! !INTERFACE: subroutine genfdu(i,u,j,f) ! !USES: use moddftu ! !INPUT/OUTPUT PARAMETERS: ! i : DFT+U entry (in,integer) ! u : parameter U (inout,real) ! j : parameter J (inout,real) ! f : Slater parameters (inout,real) ! !DESCRIPTION: ! Calculate the Slater parameters for DFT+$U$ calculation with different ! approaches, see {\it Phys. Rev. B} {\bf 80}, 035121 (2009). The relations ! among Slater and Racah parameters are from E.U. Condon and G.H. Shortley, ! {\it The Theory of Atomic Spectra}, The University Press, Cambridge (1935). ! ! !REVISION HISTORY: ! Created July 2008 (Francesco Cricchio) !EOP !BOC implicit none ! arguments integer, intent(in) :: i real(8), intent(inout) :: u,j real(8), intent(inout) :: f(0:2*lmaxdm) ! local variables integer is,l,k,q real(8) r1,r2 real(8) lambda,ufix ! automatic arrays real(8) :: e(0:lmaxdm) real(8) :: a(3,3),v1(3),v2(3) ! external functions real(8) fyukawa,fyukawa0 external fyukawa,fyukawa0 is=idftu(1,i) l=idftu(2,i) ! load input parameters to calculate Slater integrals u=ujdu(1,i) j=ujdu(2,i) f(:)=fdu(:,i) e(:)=edu(:,i) lambda=lambdadu(i) if (inpdftu.lt.4) then ! F(0) = U for any l-shell if (inpdftu.eq.1) f(0)=u select case(l) case(0) ! s electrons only f(0)=u if (inpdftu.eq.3) then f(0)=e(0) u=f(0) end if case(1) ! p electrons if (inpdftu.eq.1) then ! F(2) = 5.0 * J f(2)=5.d0*j else if (inpdftu.eq.3) then ! F(0) = E(0) + J= E(0) + 5/3 * E(1) f(0)=e(0)+(5.d0/3.d0)*e(1) ! F(2) = 5 * J = 25/3 * E1, Eq. 101 f(2)=(25.d0/3.d0)*e(1) end if case(2) ! d electrons if (inpdftu.eq.1) then ! r1 = F(4)/F(2), see PRB 52, R5467 (1995) r1=0.625d0 f(2)=(14.d0*j)/(1.d0+r1) f(4)=f(2)*r1 else if (inpdftu.eq.3) then ! copy Racah parameters v1(1:3)=e(0:2) ! transformation matrix from Racah to Slater parameters ! obtained from inversion of Eq. 110-112, LN Notes 29-12-08 a(1,1)=1.d0 a(1,2)=1.4d0 a(1,3)=0.d0 a(2,1)=0.d0 a(2,2)=0.1428571428571428d0 a(2,3)=1.285714285714286d0 a(3,1)=0.d0 a(3,2)=2.8571428571428571d-2 a(3,3)=-0.1428571428571428d0 ! multiply transformation matrix by Racah parameters call r3mv(a,v1,v2) ! Slater parameters, Eq. 104-105, LN Notes 29-12-08 f(0)=v2(1) f(2)=49.d0*v2(2) f(4)=441.d0*v2(3) end if case(3) ! f electrons if (inpdftu.eq.1) then ! r2 = F(6)/F(2), r1 = F(4)/F(2), see PRB 50, 16861 (1994) r1=451.d0/675.d0 r2=1001.d0/2025.d0 f(2)=6435.d0*j/(286.d0+195.d0*r1+250.d0*r2) f(4)=f(2)*r1 f(6)=f(2)*r2 else if (inpdftu.eq.3) then ! F(0) = E(0) + 9/7 * E(1) , Eq. 119, LN Notes 29-12-08 f(0)=e(0)+(9.d0/7.d0)*e(1) ! copy Racah parameters v1(1:3)=e(1:3) ! transformation matrix from Racah to Slater parameters ! obtained from inversion of Eq. 120-122, LN Notes 29-12-08 a(1,1)=2.3809523809523808d-2 a(1,2)=3.404761904761904d0 a(1,3)=0.2619047619047619d0 a(2,1)=1.2987012987012984d-2 a(2,2)=-1.688311688311688d0 a(2,3)=5.1948051948051951d-2 a(3,1)=2.1645021645021645d-3 a(3,2)=7.5757575757575760d-2 a(3,3)=-1.5151515151515152d-2 ! multiply transformation matrix by Racah parameters call r3mv(a,v1,v2) ! Slater parameters, Eq. 115-117, LN Notes 29-12-08 f(2)=225.d0*v2(1) f(4)=1089.d0*v2(2) f(6)=(184041.d0/25.d0)*v2(3) end if case default write(*,*) write(*,'("Error(genfdu): invalid l : ",I8)') l write(*,*) stop end select else if (inpdftu.ge.4) then ! define energies for Slater parameters call energyfdu ! write energies for Slater parameters to a file call writeefdu ! calculate radial functions for Slater parameters call genfdufr if (inpdftu.eq.5) then ufix=udufix(i) ! calculate the lambda corresponding to udufix ! lambdadu0 is in/out and is initialized to 0 in readinput call findlambdadu(is,l,ufix,lambdadu0(i),lambda) end if do q=0,l k=2*q if (lambda.lt.1.d-2) then ! unscreened Slater parameters f(k)=fyukawa0(is,l,k) else ! screened Slater parameters f(k)=fyukawa(is,l,k,lambda) end if end do end if ! calculate U and J from Slater integrals if (inpdftu.ne.1) then u=f(0) select case(l) case(0) j=0.d0 case(1) ! J = 1/5 * F(2) j=(1.d0/5.d0)*f(2) case(2) ! J = 1/14 * ( F(2) + F(4) ), Eq. 106, LN Notes 29-12-08 j=(1.d0/14.d0)*(f(2)+f(4)) case(3) ! J= 2/45 * F(2) + 1/33 * F(4) + 50/1287 * F(6), Eq. 118, LN Notes 29-12-08 j=(2.d0/45.d0)*f(2)+(1.d0/33.d0)*f(4)+(50.d0/1287.d0)*f(6) case default write(*,*) write(*,'("Error(genfdu): invalid l : ",I8)') l write(*,*) stop end select end if ! save calculated parameters ! (except Racah parameters that are provided only as input) ujdu(1,i)=u ujdu(2,i)=j fdu(:,i)=f(:) lambdadu(i)=lambda return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/eveqnbdg.f900000644002504400250440000000005012337331324016312 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/eveqnbdg.f900000644002504400250440000000226212337331324017060 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: eveqnbdg ! !INTERFACE: subroutine eveqnbdg(evecbdg) ! !USES: use modmain use modscdft ! !INPUT/OUTPUT PARAMETERS: ! evecbdg : the BdG Hamiltonian matrix on input, the eigenvectors on output ! (inout,complex(nmbdg,nmbdg)) ! !DESCRIPTION: ! Finds the eigenvalues and eigenvectors of the Bogoliubov-de Gennes ! Hamiltonian. See {\tt hmlbdg}. ! ! !REVISION HISTORY: ! Created January 2012 (JKD) !EOP !BOC implicit none ! arguments complex(8), intent(inout) :: evecbdg(nmbdg,nmbdg) ! local variables integer lwork,info ! allocatable arrays real(8), allocatable :: rwork(:) complex(8), allocatable :: work(:) allocate(rwork(3*nmbdg)) lwork=2*nmbdg allocate(work(lwork)) call zheev('V','U',nmbdg,evecbdg,nmbdg,evalbdg,work,lwork,rwork,info) if (info.ne.0) then write(*,*) write(*,'("Error(eveqnbdg): diagonalisation of the BdG Hamiltonian failed")') write(*,'(" ZHEEV returned INFO = ",I8)') info write(*,*) stop end if deallocate(rwork,work) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rhonorm.f900000644002504400250440000000005012337331322016201 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/rhonorm.f900000644002504400250440000000321712337331322016750 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: rhonorm ! !INTERFACE: subroutine rhonorm ! !USES: use modmain ! !DESCRIPTION: ! Loss of precision of the calculated total charge can result because the ! muffin-tin density is computed on a set of $(\theta,\phi)$ points and then ! transformed to a spherical harmonic representation. This routine adds a ! constant to the density so that the total charge is correct. If the error in ! total charge exceeds a certain tolerance then a warning is issued. ! ! !REVISION HISTORY: ! Created April 2003 (JKD) ! Changed from rescaling to adding, September 2006 (JKD) !EOP !BOC implicit none ! local variables integer is,ia,ias,ir real(8) t1,t2 if (.not.trhonorm) return ! check error in total charge t1=chgcalc/chgtot-1.d0 if (abs(t1).gt.epschg) then write(*,*) write(*,'("Warning(rhonorm): total charge density incorrect for s.c. & &loop ",I5)') iscl write(*,'(" Calculated : ",G18.10)') chgcalc write(*,'(" Required : ",G18.10)') chgtot end if ! error in average density t1=(chgtot-chgcalc)/omega ! add the constant difference to the density t2=t1/y00 do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) rhomt(1,ir,ias)=rhomt(1,ir,ias)+t2 end do end do rhoir(:)=rhoir(:)+t1 ! add the difference to the charges do is=1,nspecies t2=t1*(4.d0*pi/3.d0)*rmt(is)**3 do ia=1,natoms(is) ias=idxas(ia,is) chgmt(ias)=chgmt(ias)+t2 chgmttot=chgmttot+t2 end do end do chgir=chgtot-chgmttot chgcalc=chgtot return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genbmatk.f900000644002504400250440000000005012337331324016307 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/genbmatk.f900000644002504400250440000000533112337331324017055 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genbmatk(bmt,bir,wfmt,wfir,bmat) ! calculates the magnetic field matrix elements use modmain implicit none ! arguments real(8), intent(in) :: bmt(lmmaxvr,nrcmtmax,natmtot,ndmag),bir(ngtot,ndmag) complex(8), intent(in) :: wfmt(lmmaxvr,nrcmtmax,natmtot,nspinor,nstsv) complex(8), intent(in) :: wfir(ngtot,nspinor,nstsv) complex(8), intent(out) :: bmat(nstsv,nstsv) ! local variables integer ist,jst,ispn,is,ias integer nrc,nrci,ir,irc integer lmmax,itp real(8) t0,t1 complex(8) z1 ! allocatable arrays complex(8), allocatable :: zfmt(:,:,:),zfir(:,:) ! external functions complex(8) zfmtinp,zdotc external zfmtinp,zdotc ! zero the matrix elements bmat(:,:)=0.d0 !-------------------------! ! muffin-tin part ! !-------------------------! allocate(zfmt(lmmaxvr,nrcmtmax,nspinor)) do jst=1,nstsv do ias=1,natmtot is=idxis(ias) nrc=nrcmt(is) nrci=nrcmtinr(is) ! apply magnetic field to spinor wavefunction lmmax=lmmaxinr do irc=1,nrc do itp=1,lmmax t1=bmt(itp,irc,ias,ndmag) zfmt(itp,irc,1)=t1*wfmt(itp,irc,ias,1,jst) zfmt(itp,irc,2)=-t1*wfmt(itp,irc,ias,2,jst) end do if (ncmag) then do itp=1,lmmax z1=cmplx(bmt(itp,irc,ias,1),bmt(itp,irc,ias,2),8) zfmt(itp,irc,1)=zfmt(itp,irc,1)+conjg(z1)*wfmt(itp,irc,ias,2,jst) zfmt(itp,irc,2)=zfmt(itp,irc,2)+z1*wfmt(itp,irc,ias,1,jst) end do end if if (irc.eq.nrci) lmmax=lmmaxvr end do do ist=1,jst ! compute inner product (functions are in spherical coordinates) do ispn=1,nspinor z1=zfmtinp(.false.,nrc,nrci,rcmt(:,is),wfmt(:,:,ias,ispn,ist), & zfmt(:,:,ispn)) bmat(ist,jst)=bmat(ist,jst)+z1 end do end do end do end do deallocate(zfmt) !---------------------------! ! interstitial part ! !---------------------------! allocate(zfir(ngtot,nspinor)) t0=omega/dble(ngtot) do jst=1,nstsv ! apply magnetic field to spinor wavefunction do ir=1,ngtot t1=bir(ir,ndmag) zfir(ir,1)=t1*wfir(ir,1,jst) zfir(ir,2)=-t1*wfir(ir,2,jst) end do if (ncmag) then do ir=1,ngtot z1=cmplx(bir(ir,1),bir(ir,2),8) zfir(ir,1)=zfir(ir,1)+conjg(z1)*wfir(ir,2,jst) zfir(ir,2)=zfir(ir,2)+z1*wfir(ir,1,jst) end do end if do ist=1,jst do ispn=1,nspinor z1=zdotc(ngtot,wfir(:,ispn,ist),1,zfir(:,ispn),1) bmat(ist,jst)=bmat(ist,jst)+t0*z1 end do end do end do deallocate(zfir) ! lower triangular part do ist=1,nstsv do jst=1,ist-1 bmat(ist,jst)=conjg(bmat(jst,ist)) end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/libxc_funcs.f900000644002504400250440000000005012337331324017016 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/libxc_funcs.f900000644002504400250440000007212012337331324017564 0ustar00dewhurstdewhurst00000000000000module libxc_funcs_m implicit none public integer, parameter :: XC_LDA_X = 1 ! Exchange integer, parameter :: XC_LDA_C_WIGNER = 2 ! Wigner parametrization integer, parameter :: XC_LDA_C_RPA = 3 ! Random Phase Approximation integer, parameter :: XC_LDA_C_HL = 4 ! Hedin & Lundqvist integer, parameter :: XC_LDA_C_GL = 5 ! Gunnarson & Lundqvist integer, parameter :: XC_LDA_C_XALPHA = 6 ! Slater Xalpha integer, parameter :: XC_LDA_C_VWN = 7 ! Vosko, Wilk, & Nussair (5) integer, parameter :: XC_LDA_C_VWN_RPA = 8 ! Vosko, Wilk, & Nussair (RPA) integer, parameter :: XC_LDA_C_PZ = 9 ! Perdew & Zunger integer, parameter :: XC_LDA_C_PZ_MOD = 10 ! Perdew & Zunger (Modified) integer, parameter :: XC_LDA_C_OB_PZ = 11 ! Ortiz & Ballone (PZ) integer, parameter :: XC_LDA_C_PW = 12 ! Perdew & Wang integer, parameter :: XC_LDA_C_PW_MOD = 13 ! Perdew & Wang (Modified) integer, parameter :: XC_LDA_C_OB_PW = 14 ! Ortiz & Ballone (PW) integer, parameter :: XC_LDA_C_2D_AMGB = 15 ! Attaccalite et al integer, parameter :: XC_LDA_C_2D_PRM = 16 ! Pittalis, Rasanen & Marques correlation in 2D integer, parameter :: XC_LDA_C_vBH = 17 ! von Barth & Hedin integer, parameter :: XC_LDA_C_1D_CSC = 18 ! Casula, Sorella, and Senatore 1D correlation integer, parameter :: XC_LDA_X_2D = 19 ! Exchange in 2D integer, parameter :: XC_LDA_XC_TETER93 = 20 ! Teter 93 parametrization integer, parameter :: XC_LDA_X_1D = 21 ! Exchange in 1D integer, parameter :: XC_LDA_C_ML1 = 22 ! Modified LSD (version 1) of Proynov and Salahub integer, parameter :: XC_LDA_C_ML2 = 23 ! Modified LSD (version 2) of Proynov and Salahub integer, parameter :: XC_LDA_C_GOMBAS = 24 ! Gombas parametrization integer, parameter :: XC_LDA_C_PW_RPA = 25 ! Perdew & Wang fit of the RPA integer, parameter :: XC_LDA_C_1D_LOOS = 26 ! P-F Loos correlation LDA integer, parameter :: XC_LDA_C_RC04 = 27 ! Ragot-Cortona integer, parameter :: XC_LDA_C_VWN_1 = 28 ! Vosko, Wilk, & Nussair (1) integer, parameter :: XC_LDA_C_VWN_2 = 29 ! Vosko, Wilk, & Nussair (2) integer, parameter :: XC_LDA_C_VWN_3 = 30 ! Vosko, Wilk, & Nussair (3) integer, parameter :: XC_LDA_C_VWN_4 = 31 ! Vosko, Wilk, & Nussair (4) integer, parameter :: XC_LDA_K_TF = 50 ! Thomas-Fermi kinetic energy functional integer, parameter :: XC_LDA_K_LP = 51 ! Lee and Parr Gaussian ansatz integer, parameter :: XC_GGA_C_Q2D = 47 ! Chiodo et al integer, parameter :: XC_GGA_X_Q2D = 48 ! Chiodo et al integer, parameter :: XC_GGA_X_PBE_MOL = 49 ! Del Campo, Gazquez, Trickey and Vela (PBE-like) integer, parameter :: XC_GGA_K_TFVW = 52 ! Thomas-Fermi plus von Weiszaecker correction integer, parameter :: XC_GGA_K_REVAPBEINT = 53 ! interpolated version of REVAPBE integer, parameter :: XC_GGA_K_APBEINT = 54 ! interpolated version of APBE integer, parameter :: XC_GGA_K_REVAPBE = 55 ! revised APBE integer, parameter :: XC_GGA_X_AK13 = 56 ! Armiento & Kuemmel 2013 integer, parameter :: XC_GGA_K_MEYER = 57 ! Meyer, Wang, and Young integer, parameter :: XC_GGA_X_LV_RPW86 = 58 ! Berland and Hyldgaard integer, parameter :: XC_GGA_X_PBE_TCA = 59 ! PBE revised by Tognetti et al integer, parameter :: XC_GGA_X_PBEINT = 60 ! PBE for hybrid interfaces integer, parameter :: XC_GGA_C_ZPBEINT = 61 ! spin-dependent gradient correction to PBEint integer, parameter :: XC_GGA_C_PBEINT = 62 ! PBE for hybrid interfaces integer, parameter :: XC_GGA_C_ZPBESOL = 63 ! spin-dependent gradient correction to PBEsol integer, parameter :: XC_GGA_XC_OPBE_D = 65 ! oPBE_D functional of Goerigk and Grimme integer, parameter :: XC_GGA_XC_OPWLYP_D = 66 ! oPWLYP-D functional of Goerigk and Grimme integer, parameter :: XC_GGA_XC_OBLYP_D = 67 ! oBLYP-D functional of Goerigk and Grimme integer, parameter :: XC_GGA_X_VMT84_GE = 68 ! VMT{8,4} with constraint satisfaction with mu = mu_GE integer, parameter :: XC_GGA_X_VMT84_PBE = 69 ! VMT{8,4} with constraint satisfaction with mu = mu_PBE integer, parameter :: XC_GGA_X_VMT_GE = 70 ! Vela, Medel, and Trickey with mu = mu_GE integer, parameter :: XC_GGA_X_VMT_PBE = 71 ! Vela, Medel, and Trickey with mu = mu_PBE integer, parameter :: XC_GGA_C_N12_SX = 79 ! N12-SX functional from Minnesota integer, parameter :: XC_GGA_C_N12 = 80 ! N12 functional from Minnesota integer, parameter :: XC_GGA_X_N12 = 82 ! N12 functional from Minnesota integer, parameter :: XC_GGA_C_VPBE = 83 ! variant PBE integer, parameter :: XC_GGA_C_OP_XALPHA = 84 ! one-parameter progressive functional (XALPHA version) integer, parameter :: XC_GGA_C_OP_G96 = 85 ! one-parameter progressive functional (G96 version) integer, parameter :: XC_GGA_C_OP_PBE = 86 ! one-parameter progressive functional (PBE version) integer, parameter :: XC_GGA_C_OP_B88 = 87 ! one-parameter progressive functional (B88 version) integer, parameter :: XC_GGA_C_FT97 = 88 ! Filatov & Thiel correlation integer, parameter :: XC_GGA_C_SPBE = 89 ! PBE correlation to be used with the SSB exchange integer, parameter :: XC_GGA_X_SSB_SW = 90 ! Swarta, Sola and Bickelhaupt correction to PBE integer, parameter :: XC_GGA_X_SSB = 91 ! Swarta, Sola and Bickelhaupt integer, parameter :: XC_GGA_X_SSB_D = 92 ! Swarta, Sola and Bickelhaupt dispersion integer, parameter :: XC_GGA_XC_HCTH_407P = 93 ! HCTH/407+ integer, parameter :: XC_GGA_XC_HCTH_P76 = 94 ! HCTH p=7/6 integer, parameter :: XC_GGA_XC_HCTH_P14 = 95 ! HCTH p=1/4 integer, parameter :: XC_GGA_XC_B97_GGA1 = 96 ! Becke 97 GGA-1 integer, parameter :: XC_GGA_XC_HCTH_A = 97 ! HCTH-A integer, parameter :: XC_GGA_X_BPCCAC = 98 ! BPCCAC (GRAC for the energy) integer, parameter :: XC_GGA_C_REVTCA = 99 ! Tognetti, Cortona, Adamo (revised) integer, parameter :: XC_GGA_C_TCA = 100 ! Tognetti, Cortona, Adamo integer, parameter :: XC_GGA_X_PBE = 101 ! Perdew, Burke & Ernzerhof exchange integer, parameter :: XC_GGA_X_PBE_R = 102 ! Perdew, Burke & Ernzerhof exchange (revised) integer, parameter :: XC_GGA_X_B86 = 103 ! Becke 86 Xalfa,beta,gamma integer, parameter :: XC_GGA_X_HERMAN = 104 ! Herman et al original GGA integer, parameter :: XC_GGA_X_B86_MGC = 105 ! Becke 86 Xalfa,beta,gamma (with mod. grad. correction) integer, parameter :: XC_GGA_X_B88 = 106 ! Becke 88 integer, parameter :: XC_GGA_X_G96 = 107 ! Gill 96 integer, parameter :: XC_GGA_X_PW86 = 108 ! Perdew & Wang 86 integer, parameter :: XC_GGA_X_PW91 = 109 ! Perdew & Wang 91 integer, parameter :: XC_GGA_X_OPTX = 110 ! Handy & Cohen OPTX 01 integer, parameter :: XC_GGA_X_DK87_R1 = 111 ! dePristo & Kress 87 (version R1) integer, parameter :: XC_GGA_X_DK87_R2 = 112 ! dePristo & Kress 87 (version R2) integer, parameter :: XC_GGA_X_LG93 = 113 ! Lacks & Gordon 93 integer, parameter :: XC_GGA_X_FT97_A = 114 ! Filatov & Thiel 97 (version A) integer, parameter :: XC_GGA_X_FT97_B = 115 ! Filatov & Thiel 97 (version B) integer, parameter :: XC_GGA_X_PBE_SOL = 116 ! Perdew, Burke & Ernzerhof exchange (solids) integer, parameter :: XC_GGA_X_RPBE = 117 ! Hammer, Hansen & Norskov (PBE-like) integer, parameter :: XC_GGA_X_WC = 118 ! Wu & Cohen integer, parameter :: XC_GGA_X_MPW91 = 119 ! Modified form of PW91 by Adamo & Barone integer, parameter :: XC_GGA_X_AM05 = 120 ! Armiento & Mattsson 05 exchange integer, parameter :: XC_GGA_X_PBEA = 121 ! Madsen (PBE-like) integer, parameter :: XC_GGA_X_MPBE = 122 ! Adamo & Barone modification to PBE integer, parameter :: XC_GGA_X_XPBE = 123 ! xPBE reparametrization by Xu & Goddard integer, parameter :: XC_GGA_X_2D_B86_MGC = 124 ! Becke 86 MGC for 2D systems integer, parameter :: XC_GGA_X_BAYESIAN = 125 ! Bayesian best fit for the enhancement factor integer, parameter :: XC_GGA_X_PBE_JSJR = 126 ! JSJR reparametrization by Pedroza, Silva & Capelle integer, parameter :: XC_GGA_X_2D_B88 = 127 ! Becke 88 in 2D integer, parameter :: XC_GGA_X_2D_B86 = 128 ! Becke 86 Xalfa,beta,gamma integer, parameter :: XC_GGA_X_2D_PBE = 129 ! Perdew, Burke & Ernzerhof exchange in 2D integer, parameter :: XC_GGA_C_PBE = 130 ! Perdew, Burke & Ernzerhof correlation integer, parameter :: XC_GGA_C_LYP = 131 ! Lee, Yang & Parr integer, parameter :: XC_GGA_C_P86 = 132 ! Perdew 86 integer, parameter :: XC_GGA_C_PBE_SOL = 133 ! Perdew, Burke & Ernzerhof correlation SOL integer, parameter :: XC_GGA_C_PW91 = 134 ! Perdew & Wang 91 integer, parameter :: XC_GGA_C_AM05 = 135 ! Armiento & Mattsson 05 correlation integer, parameter :: XC_GGA_C_XPBE = 136 ! xPBE reparametrization by Xu & Goddard integer, parameter :: XC_GGA_C_LM = 137 ! Langreth and Mehl correlation integer, parameter :: XC_GGA_C_PBE_JRGX = 138 ! JRGX reparametrization by Pedroza, Silva & Capelle integer, parameter :: XC_GGA_X_OPTB88_VDW = 139 ! Becke 88 reoptimized to be used with vdW functional of Dion et al integer, parameter :: XC_GGA_X_PBEK1_VDW = 140 ! PBE reparametrization for vdW integer, parameter :: XC_GGA_X_OPTPBE_VDW = 141 ! PBE reparametrization for vdW integer, parameter :: XC_GGA_X_RGE2 = 142 ! Regularized PBE integer, parameter :: XC_GGA_C_RGE2 = 143 ! Regularized PBE integer, parameter :: XC_GGA_X_RPW86 = 144 ! refitted Perdew & Wang 86 integer, parameter :: XC_GGA_X_KT1 = 145 ! Keal and Tozer version 1 integer, parameter :: XC_GGA_XC_KT2 = 146 ! Keal and Tozer version 2 integer, parameter :: XC_GGA_C_WL = 147 ! Wilson & Levy integer, parameter :: XC_GGA_C_WI = 148 ! Wilson & Ivanov integer, parameter :: XC_GGA_X_MB88 = 149 ! Modified Becke 88 for proton transfer integer, parameter :: XC_GGA_X_SOGGA = 150 ! Second-order generalized gradient approximation integer, parameter :: XC_GGA_X_SOGGA11 = 151 ! Second-order generalized gradient approximation 2011 integer, parameter :: XC_GGA_C_SOGGA11 = 152 ! Second-order generalized gradient approximation 2011 integer, parameter :: XC_GGA_C_WI0 = 153 ! Wilson & Ivanov initial version integer, parameter :: XC_GGA_XC_TH1 = 154 ! Tozer and Handy v. 1 integer, parameter :: XC_GGA_XC_TH2 = 155 ! Tozer and Handy v. 2 integer, parameter :: XC_GGA_XC_TH3 = 156 ! Tozer and Handy v. 3 integer, parameter :: XC_GGA_XC_TH4 = 157 ! Tozer and Handy v. 4 integer, parameter :: XC_GGA_X_C09X = 158 ! C09x to be used with the VdW of Rutgers-Chalmers integer, parameter :: XC_GGA_C_SOGGA11_X = 159 ! To be used with hyb_gga_x_SOGGA11-X integer, parameter :: XC_GGA_X_LB = 160 ! van Leeuwen & Baerends integer, parameter :: XC_GGA_XC_HCTH_93 = 161 ! HCTH functional fitted to 93 molecules integer, parameter :: XC_GGA_XC_HCTH_120 = 162 ! HCTH functional fitted to 120 molecules integer, parameter :: XC_GGA_XC_HCTH_147 = 163 ! HCTH functional fitted to 147 molecules integer, parameter :: XC_GGA_XC_HCTH_407 = 164 ! HCTH functional fitted to 407 molecules integer, parameter :: XC_GGA_XC_EDF1 = 165 ! Empirical functionals from Adamson, Gill, and Pople integer, parameter :: XC_GGA_XC_XLYP = 166 ! XLYP functional integer, parameter :: XC_GGA_XC_B97 = 167 ! Becke 97 integer, parameter :: XC_GGA_XC_B97_1 = 168 ! Becke 97-1 integer, parameter :: XC_GGA_XC_B97_2 = 169 ! Becke 97-2 integer, parameter :: XC_GGA_XC_B97_D = 170 ! Grimme functional to be used with C6 vdW term integer, parameter :: XC_GGA_XC_B97_K = 171 ! Boese-Martin for Kinetics integer, parameter :: XC_GGA_XC_B97_3 = 172 ! Becke 97-3 integer, parameter :: XC_GGA_XC_PBE1W = 173 ! Functionals fitted for water integer, parameter :: XC_GGA_XC_MPWLYP1W = 174 ! Functionals fitted for water integer, parameter :: XC_GGA_XC_PBELYP1W = 175 ! Functionals fitted for water integer, parameter :: XC_GGA_XC_SB98_1a = 176 ! Schmider-Becke 98 parameterization 1a integer, parameter :: XC_GGA_XC_SB98_1b = 177 ! Schmider-Becke 98 parameterization 1b integer, parameter :: XC_GGA_XC_SB98_1c = 178 ! Schmider-Becke 98 parameterization 1c integer, parameter :: XC_GGA_XC_SB98_2a = 179 ! Schmider-Becke 98 parameterization 2a integer, parameter :: XC_GGA_XC_SB98_2b = 180 ! Schmider-Becke 98 parameterization 2b integer, parameter :: XC_GGA_XC_SB98_2c = 181 ! Schmider-Becke 98 parameterization 2c integer, parameter :: XC_GGA_X_LBM = 182 ! van Leeuwen & Baerends modified integer, parameter :: XC_GGA_X_OL2 = 183 ! Exchange form based on Ou-Yang and Levy v.2 integer, parameter :: XC_GGA_X_APBE = 184 ! mu fixed from the semiclassical neutral atom integer, parameter :: XC_GGA_K_APBE = 185 ! mu fixed from the semiclassical neutral atom integer, parameter :: XC_GGA_C_APBE = 186 ! mu fixed from the semiclassical neutral atom integer, parameter :: XC_GGA_K_TW1 = 187 ! Tran and Wesolowski set 1 (Table II) integer, parameter :: XC_GGA_K_TW2 = 188 ! Tran and Wesolowski set 2 (Table II) integer, parameter :: XC_GGA_K_TW3 = 189 ! Tran and Wesolowski set 3 (Table II) integer, parameter :: XC_GGA_K_TW4 = 190 ! Tran and Wesolowski set 4 (Table II) integer, parameter :: XC_GGA_X_HTBS = 191 ! Haas, Tran, Blaha, and Schwarz integer, parameter :: XC_GGA_X_AIRY = 192 ! Constantin et al based on the Airy gas integer, parameter :: XC_GGA_X_LAG = 193 ! Local Airy Gas integer, parameter :: XC_GGA_XC_MOHLYP = 194 ! Functional for organometallic chemistry integer, parameter :: XC_GGA_XC_MOHLYP2 = 195 ! Functional for barrier heights integer, parameter :: XC_GGA_XC_TH_FL = 196 ! Tozer and Handy v. FL integer, parameter :: XC_GGA_XC_TH_FC = 197 ! Tozer and Handy v. FC integer, parameter :: XC_GGA_XC_TH_FCFO = 198 ! Tozer and Handy v. FCFO integer, parameter :: XC_GGA_XC_TH_FCO = 199 ! Tozer and Handy v. FCO integer, parameter :: XC_GGA_C_OPTC = 200 ! Optimized correlation functional of Cohen and Handy integer, parameter :: XC_GGA_K_VW = 500 ! von Weiszaecker functional integer, parameter :: XC_GGA_K_GE2 = 501 ! Second-order gradient expansion (l = 1/9) integer, parameter :: XC_GGA_K_GOLDEN = 502 ! TF-lambda-vW form by Golden (l = 13/45) integer, parameter :: XC_GGA_K_YT65 = 503 ! TF-lambda-vW form by Yonei and Tomishima (l = 1/5) integer, parameter :: XC_GGA_K_BALTIN = 504 ! TF-lambda-vW form by Baltin (l = 5/9) integer, parameter :: XC_GGA_K_LIEB = 505 ! TF-lambda-vW form by Lieb (l = 0.185909191) integer, parameter :: XC_GGA_K_ABSP1 = 506 ! gamma-TFvW form by Acharya et al [g = 1 - 1.412/N^(1/3)] integer, parameter :: XC_GGA_K_ABSP2 = 507 ! gamma-TFvW form by Acharya et al [g = 1 - 1.332/N^(1/3)] integer, parameter :: XC_GGA_K_GR = 508 ! gamma-TFvW form by Gázquez and Robles integer, parameter :: XC_GGA_K_LUDENA = 509 ! gamma-TFvW form by Ludeña integer, parameter :: XC_GGA_K_GP85 = 510 ! gamma-TFvW form by Ghosh and Parr integer, parameter :: XC_GGA_K_PEARSON = 511 ! Pearson integer, parameter :: XC_GGA_K_OL1 = 512 ! Ou-Yang and Levy v.1 integer, parameter :: XC_GGA_K_OL2 = 513 ! Ou-Yang and Levy v.2 integer, parameter :: XC_GGA_K_FR_B88 = 514 ! Fuentealba & Reyes (B88 version) integer, parameter :: XC_GGA_K_FR_PW86 = 515 ! Fuentealba & Reyes (PW86 version) integer, parameter :: XC_GGA_K_DK = 516 ! DePristo and Kress integer, parameter :: XC_GGA_K_PERDEW = 517 ! Perdew integer, parameter :: XC_GGA_K_VSK = 518 ! Vitos, Skriver, and Kollar integer, parameter :: XC_GGA_K_VJKS = 519 ! Vitos, Johansson, Kollar, and Skriver integer, parameter :: XC_GGA_K_ERNZERHOF = 520 ! Ernzerhof integer, parameter :: XC_GGA_K_LC94 = 521 ! Lembarki & Chermette integer, parameter :: XC_GGA_K_LLP = 522 ! Lee, Lee & Parr integer, parameter :: XC_GGA_K_THAKKAR = 523 ! Thakkar 1992 integer, parameter :: XC_GGA_X_WPBEH = 524 ! short-range version of the PBE integer, parameter :: XC_GGA_X_HJS_PBE = 525 ! HJS screened exchange PBE version integer, parameter :: XC_GGA_X_HJS_PBE_SOL = 526 ! HJS screened exchange PBE_SOL version integer, parameter :: XC_GGA_X_HJS_B88 = 527 ! HJS screened exchange B88 version integer, parameter :: XC_GGA_X_HJS_B97X = 528 ! HJS screened exchange B97x version integer, parameter :: XC_GGA_X_ITYH = 529 ! short-range recipe for exchange GGA functionals integer, parameter :: XC_GGA_X_SFAT = 530 ! short-range recipe for exchange GGA functionals integer, parameter :: XC_HYB_GGA_X_N12_SX = 81 ! N12-SX functional from Minnesota integer, parameter :: XC_HYB_GGA_XC_B3PW91 = 401 ! The original (ACM) hybrid of Becke integer, parameter :: XC_HYB_GGA_XC_B3LYP = 402 ! The (in)famous B3LYP integer, parameter :: XC_HYB_GGA_XC_B3P86 = 403 ! Perdew 86 hybrid similar to B3PW91 integer, parameter :: XC_HYB_GGA_XC_O3LYP = 404 ! hybrid using the optx functional integer, parameter :: XC_HYB_GGA_XC_mPW1K = 405 ! mixture of mPW91 and PW91 optimized for kinetics integer, parameter :: XC_HYB_GGA_XC_PBEH = 406 ! aka PBE0 or PBE1PBE integer, parameter :: XC_HYB_GGA_XC_B97 = 407 ! Becke 97 integer, parameter :: XC_HYB_GGA_XC_B97_1 = 408 ! Becke 97-1 integer, parameter :: XC_HYB_GGA_XC_B97_2 = 410 ! Becke 97-2 integer, parameter :: XC_HYB_GGA_XC_X3LYP = 411 ! maybe the best hybrid integer, parameter :: XC_HYB_GGA_XC_B1WC = 412 ! Becke 1-parameter mixture of WC and PBE integer, parameter :: XC_HYB_GGA_XC_B97_K = 413 ! Boese-Martin for Kinetics integer, parameter :: XC_HYB_GGA_XC_B97_3 = 414 ! Becke 97-3 integer, parameter :: XC_HYB_GGA_XC_MPW3PW = 415 ! mixture with the mPW functional integer, parameter :: XC_HYB_GGA_XC_B1LYP = 416 ! Becke 1-parameter mixture of B88 and LYP integer, parameter :: XC_HYB_GGA_XC_B1PW91 = 417 ! Becke 1-parameter mixture of B88 and PW91 integer, parameter :: XC_HYB_GGA_XC_mPW1PW = 418 ! Becke 1-parameter mixture of mPW91 and PW91 integer, parameter :: XC_HYB_GGA_XC_MPW3LYP = 419 ! mixture of mPW and LYP integer, parameter :: XC_HYB_GGA_XC_SB98_1a = 420 ! Schmider-Becke 98 parameterization 1a integer, parameter :: XC_HYB_GGA_XC_SB98_1b = 421 ! Schmider-Becke 98 parameterization 1b integer, parameter :: XC_HYB_GGA_XC_SB98_1c = 422 ! Schmider-Becke 98 parameterization 1c integer, parameter :: XC_HYB_GGA_XC_SB98_2a = 423 ! Schmider-Becke 98 parameterization 2a integer, parameter :: XC_HYB_GGA_XC_SB98_2b = 424 ! Schmider-Becke 98 parameterization 2b integer, parameter :: XC_HYB_GGA_XC_SB98_2c = 425 ! Schmider-Becke 98 parameterization 2c integer, parameter :: XC_HYB_GGA_X_SOGGA11_X = 426 ! Hybrid based on SOGGA11 form integer, parameter :: XC_HYB_GGA_XC_HSE03 = 427 ! the 2003 version of the screened hybrid HSE integer, parameter :: XC_HYB_GGA_XC_HSE06 = 428 ! the 2006 version of the screened hybrid HSE integer, parameter :: XC_HYB_GGA_XC_HJS_PBE = 429 ! HJS hybrid screened exchange PBE version integer, parameter :: XC_HYB_GGA_XC_HJS_PBE_SOL = 430 ! HJS hybrid screened exchange PBE_SOL version integer, parameter :: XC_HYB_GGA_XC_HJS_B88 = 431 ! HJS hybrid screened exchange B88 version integer, parameter :: XC_HYB_GGA_XC_HJS_B97X = 432 ! HJS hybrid screened exchange B97x version integer, parameter :: XC_HYB_GGA_XC_CAM_B3LYP = 433 ! CAM version of B3LYP integer, parameter :: XC_HYB_GGA_XC_TUNED_CAM_B3LYP = 434 ! CAM version of B3LYP tunes for excitations integer, parameter :: XC_HYB_GGA_XC_BHANDH = 435 ! Becke half-and-half integer, parameter :: XC_HYB_GGA_XC_BHANDHLYP = 436 ! Becke half-and-half with B88 exchange integer, parameter :: XC_HYB_GGA_XC_MB3LYP_RC04 = 437 ! B3LYP with RC04 LDA integer, parameter :: XC_HYB_GGA_XC_MPWLYP1M = 453 ! MPW with 1 par. for metals/LYP integer, parameter :: XC_HYB_GGA_XC_REVB3LYP = 454 ! Revised B3LYP integer, parameter :: XC_HYB_GGA_XC_CAMY_BLYP = 455 ! BLYP with yukawa screening integer, parameter :: XC_HYB_GGA_XC_PBE0_13 = 456 ! PBE0-1/3 integer, parameter :: XC_MGGA_XC_OTPSS_D = 64 ! oTPSS_D functional of Goerigk and Grimme integer, parameter :: XC_MGGA_C_CS = 72 ! Colle and Salvetti integer, parameter :: XC_MGGA_C_MN12_SX = 73 ! MN12-SX functional of Minnesota integer, parameter :: XC_MGGA_C_MN12_L = 74 ! MN12-L functional of Minnesota integer, parameter :: XC_MGGA_C_M11_L = 75 ! M11-L functional of Minnesota integer, parameter :: XC_MGGA_C_M11 = 76 ! M11 functional of Minnesota integer, parameter :: XC_MGGA_C_M08_SO = 77 ! M08-SO functional of Minnesota integer, parameter :: XC_MGGA_C_M08_HX = 78 ! M08-HX functional of Minnesota integer, parameter :: XC_MGGA_X_LTA = 201 ! Local tau approximation of Ernzerhof & Scuseria integer, parameter :: XC_MGGA_X_TPSS = 202 ! Perdew, Tao, Staroverov & Scuseria exchange integer, parameter :: XC_MGGA_X_M06_L = 203 ! M06-Local functional of Minnesota integer, parameter :: XC_MGGA_X_GVT4 = 204 ! GVT4 from Van Voorhis and Scuseria integer, parameter :: XC_MGGA_X_TAU_HCTH = 205 ! tau-HCTH from Boese and Handy integer, parameter :: XC_MGGA_X_BR89 = 206 ! Becke-Roussel 89 integer, parameter :: XC_MGGA_X_BJ06 = 207 ! Becke & Johnson correction to Becke-Roussel 89 integer, parameter :: XC_MGGA_X_TB09 = 208 ! Tran & Blaha correction to Becke & Johnson integer, parameter :: XC_MGGA_X_RPP09 = 209 ! Rasanen, Pittalis, and Proetto correction to Becke & Johnson integer, parameter :: XC_MGGA_X_2D_PRHG07 = 210 ! Pittalis, Rasanen, Helbig, Gross Exchange Functional integer, parameter :: XC_MGGA_X_2D_PRHG07_PRP10 = 211 ! PRGH07 with PRP10 correction integer, parameter :: XC_MGGA_X_REVTPSS = 212 ! revised Perdew, Tao, Staroverov & Scuseria exchange integer, parameter :: XC_MGGA_X_PKZB = 213 ! Perdew, Kurth, Zupan, and Blaha integer, parameter :: XC_MGGA_X_M05 = 214 ! M05 functional of Minnesota integer, parameter :: XC_MGGA_X_M05_2X = 215 ! M05-2X functional of Minnesota integer, parameter :: XC_MGGA_X_M06_HF = 216 ! M06-HF functional of Minnesota integer, parameter :: XC_MGGA_X_M06 = 217 ! M06 functional of Minnesota integer, parameter :: XC_MGGA_X_M06_2X = 218 ! M06-2X functional of Minnesota integer, parameter :: XC_MGGA_X_M08_HX = 219 ! M08-HX functional of Minnesota integer, parameter :: XC_MGGA_X_M08_SO = 220 ! M08-SO functional of Minnesota integer, parameter :: XC_MGGA_X_MS0 = 221 ! MS exchange of Sun, Xiao, and Ruzsinszky integer, parameter :: XC_MGGA_X_MS1 = 222 ! MS1 exchange of Sun, et al integer, parameter :: XC_MGGA_X_MS2 = 223 ! MS2 exchange of Sun, et al integer, parameter :: XC_MGGA_X_MS2H = 224 ! MS2 hybrid exchange of Sun, et al integer, parameter :: XC_MGGA_X_M11_L = 226 ! M11-L functional of Minnesota integer, parameter :: XC_MGGA_X_MN12_L = 227 ! MN12-L functional from Minnesota integer, parameter :: XC_MGGA_X_MN12_SX = 228 ! MN12-SX functional from Minnesota integer, parameter :: XC_MGGA_C_CC06 = 229 ! Cancio and Chou 2006 integer, parameter :: XC_MGGA_X_MK00 = 230 ! Exchange for accurate virtual orbital energies integer, parameter :: XC_MGGA_C_TPSS = 231 ! Perdew, Tao, Staroverov & Scuseria correlation integer, parameter :: XC_MGGA_C_VSXC = 232 ! VSxc from Van Voorhis and Scuseria (correlation part) integer, parameter :: XC_MGGA_C_M06_L = 233 ! M06-Local functional of Minnesota integer, parameter :: XC_MGGA_C_M06_HF = 234 ! M06-HF functional of Minnesota integer, parameter :: XC_MGGA_C_M06 = 235 ! M06 functional of Minnesota integer, parameter :: XC_MGGA_C_M06_2X = 236 ! M06-2X functional of Minnesota integer, parameter :: XC_MGGA_C_M05 = 237 ! M05 functional of Minnesota integer, parameter :: XC_MGGA_C_M05_2X = 238 ! M05-2X functional of Minnesota integer, parameter :: XC_MGGA_C_PKZB = 239 ! Perdew, Kurth, Zupan, and Blaha integer, parameter :: XC_MGGA_C_BC95 = 240 ! Becke correlation 95 integer, parameter :: XC_MGGA_C_REVTPSS = 241 ! revised TPSS correlation integer, parameter :: XC_MGGA_XC_TPSSLYP1W = 242 ! Functionals fitted for water integer, parameter :: XC_MGGA_X_MK00B = 243 ! Exchange for accurate virtual orbital energies (v. B) integer, parameter :: XC_MGGA_X_BLOC = 244 ! functional with balanced localization integer, parameter :: XC_MGGA_X_MODTPSS = 245 ! Modified Perdew, Tao, Staroverov & Scuseria exchange integer, parameter :: XC_HYB_MGGA_X_M11 = 225 ! M11 functional of Minnesota integer, parameter :: XC_HYB_MGGA_XC_M05 = 438 ! M05 functional of Minnesota integer, parameter :: XC_HYB_MGGA_XC_M05_2X = 439 ! M05-2X functional of Minnesota integer, parameter :: XC_HYB_MGGA_XC_B88B95 = 440 ! Mixture of B88 with BC95 (B1B95) integer, parameter :: XC_HYB_MGGA_XC_B86B95 = 441 ! Mixture of B86 with BC95 integer, parameter :: XC_HYB_MGGA_XC_PW86B95 = 442 ! Mixture of PW86 with BC95 integer, parameter :: XC_HYB_MGGA_XC_BB1K = 443 ! Mixture of B88 with BC95 from Zhao and Truhlar integer, parameter :: XC_HYB_MGGA_XC_M06_HF = 444 ! M06-HF functional of Minnesota integer, parameter :: XC_HYB_MGGA_XC_MPW1B95 = 445 ! Mixture of mPW91 with BC95 from Zhao and Truhlar integer, parameter :: XC_HYB_MGGA_XC_MPWB1K = 446 ! Mixture of mPW91 with BC95 for kinetics integer, parameter :: XC_HYB_MGGA_XC_X1B95 = 447 ! Mixture of X with BC95 integer, parameter :: XC_HYB_MGGA_XC_XB1K = 448 ! Mixture of X with BC95 for kinetics integer, parameter :: XC_HYB_MGGA_XC_M06 = 449 ! M06 functional of Minnesota integer, parameter :: XC_HYB_MGGA_XC_M06_2X = 450 ! M06-2X functional of Minnesota integer, parameter :: XC_HYB_MGGA_XC_PW6B95 = 451 ! Mixture of PW91 with BC95 from Zhao and Truhlar integer, parameter :: XC_HYB_MGGA_XC_PWB6K = 452 ! Mixture of PW91 with BC95 from Zhao and Truhlar for kinetics integer, parameter :: XC_HYB_MGGA_XC_TPSSH = 457 ! TPSS hybrid integer, parameter :: XC_HYB_MGGA_XC_REVTPSSH = 458 ! revTPSS hybrid end module libxc_funcs_m elk-2.3.22/src/PaxHeaders.22528/zflmconj.f900000644002504400250440000000005012337331323016340 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zflmconj.f900000644002504400250440000000277212337331323017114 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: zflmconj ! !INTERFACE: subroutine zflmconj(lmax,zflm1,zflm2) ! !INPUT/OUTPUT PARAMETERS: ! lmax : maximum angular momentum (in,integer) ! zflm1 : coefficients of input complex spherical harmonic expansion ! (in,complex((lmax+1)**2))) ! zflm2 : coefficients of output complex spherical harmonic expansion ! (out,complex((lmax+1)**2))) ! !DESCRIPTION: ! Returns the complex conjugate of a function expanded in spherical harmonics. ! In other words, given the input function coefficients $z_{lm}$, the routine ! returns $z'_{lm}=(-1)^m z^*_{l-m}$ so that ! $$ \sum_{lm}z'_{lm}Y_{lm}(\theta,\phi)=\left(\sum_{lm}z_{lm}Y_{lm} ! (\theta,\phi)\right)^* $$ ! for all $(\theta,\phi)$. ! ! !REVISION HISTORY: ! Created April 2004 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: lmax complex(8), intent(in) :: zflm1(*) complex(8), intent(out) :: zflm2(*) ! local variables integer l,m,lm1,lm2 complex(8) z1 do l=0,lmax lm1=l**2 lm2=(l+1)**2+1 do m=-l,-1 lm1=lm1+1 lm2=lm2-1 z1=zflm1(lm1) zflm2(lm1)=conjg(zflm1(lm2)) zflm2(lm2)=conjg(z1) if (mod(m,2).ne.0) then zflm2(lm1)=-zflm2(lm1) zflm2(lm2)=-zflm2(lm2) end if end do ! m=0 case lm1=lm1+1 zflm2(lm1)=conjg(zflm1(lm1)) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/zgerci.f900000644002504400250440000000005012337331323016001 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zgerci.f900000644002504400250440000000211112337331323016540 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine zgerci(m,n,alpha,x,y,ld,a) implicit none ! arguments integer, intent(in) :: m,n complex(8), intent(in) :: alpha complex(8), intent(in) :: x(m),y(n) integer, intent(in) :: ld complex(8), intent(inout) :: a(ld,*) ! local variables integer j ! numbers less than eps are considered to be zero real(8), parameter :: eps=1.d-10 real(8) a1,b1 complex(8) z1 !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(z1,a1,b1) !$OMP DO do j=1,n z1=alpha*y(j) if (abs(dble(z1)).gt.eps) then if (abs(aimag(z1)).gt.eps) then ! complex prefactor a(1:m,j)=a(1:m,j)+z1*conjg(x(1:m)) else ! real prefactor a1=dble(z1) a(1:m,j)=a(1:m,j)+a1*conjg(x(1:m)) end if else if (abs(aimag(z1)).gt.eps) then ! imaginary prefactor b1=aimag(z1) a(1:m,j)=a(1:m,j)+b1*cmplx(aimag(x(1:m)),dble(x(1:m)),8) end if end if end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/ftmfield.f900000644002504400250440000000005012337331324016311 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/ftmfield.f900000644002504400250440000000355612337331324017066 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 L. Nordstrom, J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine ftmfield use modmain use moddftu implicit none ! local variables integer is,ia,ias,n2,i integer l,n,k,p,r,t,x,y complex(8) z1 ! allocatable arrays complex(8), allocatable :: tm2(:,:),tm3(:) complex(8), allocatable :: dmat(:,:,:,:) if (ftmtype.le.0) return if (mod(iscl,ftmstep).ne.1) return allocate(tm2(-lmmaxdm:lmmaxdm,-1:1),tm3(-lmmaxdm:lmmaxdm)) allocate(dmat(lmmaxdm,nspinor,lmmaxdm,nspinor)) n2=(lmmaxdm*nspinor)**2 ! loop over FTM entries do i=1,ntmfix is=itmfix(1,i) ia=itmfix(2,i) ias=idxas(ia,is) l=itmfix(3,i) n=itmfix(4,i) k=itmfix(5,i) p=itmfix(6,i) if (n.eq.2) then x=itmfix(7,i) y=itmfix(8,i) ! decompose density matrix in 2-index tensor moment components call dmtotm2(l,nspinor,k,p,lmmaxdm,dmatmt(:,:,:,:,ias),tm2) ! take difference between current and target moment z1=tm2(x,y)-tmfix(i) tm2(:,:)=0.d0 tm2(x,y)=tauftm*z1 ! compute new density matrix call tm2todm(l,nspinor,k,p,lmmaxdm,tm2,dmat) else r=itmfix(7,i) t=itmfix(8,i) ! decompose density matrix in 3-index tensor moment components call dmtotm3(l,nspinor,k,p,r,lmmaxdm,dmatmt(:,:,:,:,ias),tm3) ! take difference between current and target moment z1=tm3(t)-tmfix(i) tm3(:)=0.d0 tm3(t)=tauftm*z1 ! compute new density matrix call tm3todm(l,nspinor,k,p,r,lmmaxdm,tm3,dmat) end if ! make density matrix Hermitian call hrmdmat(lmmaxdm*nspinor,dmat) ! apply rotation matrices and add to potential matrix global arrays call rotdmat(rtmfix(:,:,1,i),rtmfix(:,:,2,i),lmaxdm,nspinor,lmmaxdm,dmat, & vmftm(:,:,:,:,ias)) call zaxpy(n2,zone,vmftm(:,:,:,:,ias),1,vmatmt(:,:,:,:,ias),1) end do deallocate(tm2,tm3,dmat) return end subroutine elk-2.3.22/src/PaxHeaders.22528/dpotxc.f900000644002504400250440000000005012337331324016020 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/dpotxc.f900000644002504400250440000001125312337331324016566 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2012 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine dpotxc use modmain use modphonon implicit none ! local variables integer idm,is,ias,ir integer nr,nri,nrc,nrci ! allocatable arrays real(8), allocatable :: fxcmt(:,:,:,:,:),fxcir(:,:,:) complex(8), allocatable :: dvmt(:,:),dbmt(:,:,:) ! compute the exchange-correlation kernel if (spinpol) then allocate(fxcmt(lmmaxvr,nrmtmax,natmtot,4,4)) allocate(fxcir(ngtot,4,4)) call genspfxcr(.false.,fxcmt,fxcir) else allocate(fxcmt(lmmaxvr,nrmtmax,natmtot,1,1)) allocate(fxcir(ngtot,1,1)) call genfxcr(.false.,fxcmt,fxcir) end if allocate(dvmt(lmmaxvr,nrmtmax)) if (spinpol) allocate(dbmt(lmmaxvr,nrmtmax,3)) !---------------------------------------! ! muffin-tin potential and field ! !---------------------------------------! ! note: muffin-tin functions are in spherical coordinates do ias=1,natmtot is=idxis(ias) nr=nrmt(is) nri=nrmtinr(is) nrc=nrcmt(is) nrci=nrcmtinr(is) ! charge-charge contribution to potential derivative do ir=1,nr dvmt(:,ir)=fxcmt(:,ir,ias,1,1)*drhomt(:,ir,ias) end do ! spin-polarised case if (spinpol) then if (ncmag) then ! non-collinear do ir=1,nr ! add charge-spin contribution to potential derivative dvmt(:,ir)=dvmt(:,ir) & +fxcmt(:,ir,ias,1,2)*dmagmt(:,ir,ias,1) & +fxcmt(:,ir,ias,1,3)*dmagmt(:,ir,ias,2) & +fxcmt(:,ir,ias,1,4)*dmagmt(:,ir,ias,3) ! spin-charge contribution to B-field derivative dbmt(:,ir,1)=fxcmt(:,ir,ias,1,2)*drhomt(:,ir,ias) dbmt(:,ir,2)=fxcmt(:,ir,ias,1,3)*drhomt(:,ir,ias) dbmt(:,ir,3)=fxcmt(:,ir,ias,1,4)*drhomt(:,ir,ias) ! add spin-spin contribution to B-field derivative ! (note: fxc is stored as an upper triangular matrix) dbmt(:,ir,1)=dbmt(:,ir,1) & +fxcmt(:,ir,ias,2,2)*dmagmt(:,ir,ias,1) & +fxcmt(:,ir,ias,2,3)*dmagmt(:,ir,ias,2) & +fxcmt(:,ir,ias,2,4)*dmagmt(:,ir,ias,3) dbmt(:,ir,2)=dbmt(:,ir,2) & +fxcmt(:,ir,ias,2,3)*dmagmt(:,ir,ias,1) & +fxcmt(:,ir,ias,3,3)*dmagmt(:,ir,ias,2) & +fxcmt(:,ir,ias,3,4)*dmagmt(:,ir,ias,3) dbmt(:,ir,3)=dbmt(:,ir,3) & +fxcmt(:,ir,ias,2,4)*dmagmt(:,ir,ias,1) & +fxcmt(:,ir,ias,3,4)*dmagmt(:,ir,ias,2) & +fxcmt(:,ir,ias,4,4)*dmagmt(:,ir,ias,3) end do else ! collinear do ir=1,nr ! add charge-spin contribution to potential derivative dvmt(:,ir)=dvmt(:,ir)+fxcmt(:,ir,ias,1,4)*dmagmt(:,ir,ias,1) ! spin-charge contribution to B-field derivative dbmt(:,ir,1)=fxcmt(:,ir,ias,1,4)*drhomt(:,ir,ias) ! add spin-spin contribution to B-field derivative dbmt(:,ir,1)=dbmt(:,ir,1)+fxcmt(:,ir,ias,4,4)*dmagmt(:,ir,ias,1) end do end if end if ! convert potential derivative to spherical harmonics call zfsht(nr,nri,dvmt,dvsmt(:,:,ias)) ! convert magnetic field derivative to spherical harmonics do idm=1,ndmag call zfsht(nrc,nrci,dbmt(:,:,idm),dbsmt(:,:,ias,idm)) end do end do !------------------------------------------! ! interstitial potential and field ! !------------------------------------------! ! charge-charge contribution to potential derivative do ir=1,ngtot dvsir(ir)=fxcir(ir,1,1)*drhoir(ir) end do ! spin-polarised case if (spinpol) then if (ncmag) then ! non-collinear do ir=1,ngtot ! add charge-spin contribution to potential derivative dvsir(ir)=dvsir(ir) & +fxcir(ir,1,2)*dmagir(ir,1) & +fxcir(ir,1,3)*dmagir(ir,2) & +fxcir(ir,1,4)*dmagir(ir,3) ! spin-charge contribution to B-field derivative dbsir(ir,1)=fxcir(ir,1,2)*drhoir(ir) dbsir(ir,2)=fxcir(ir,1,3)*drhoir(ir) dbsir(ir,3)=fxcir(ir,1,4)*drhoir(ir) ! add spin-spin contribution to B-field derivative dbsir(ir,1)=dbsir(ir,1) & +fxcir(ir,2,2)*dmagir(ir,1) & +fxcir(ir,2,3)*dmagir(ir,2) & +fxcir(ir,2,4)*dmagir(ir,3) dbsir(ir,2)=dbsir(ir,2) & +fxcir(ir,2,3)*dmagir(ir,1) & +fxcir(ir,3,3)*dmagir(ir,2) & +fxcir(ir,3,4)*dmagir(ir,3) dbsir(ir,3)=dbsir(ir,3) & +fxcir(ir,2,4)*dmagir(ir,1) & +fxcir(ir,3,4)*dmagir(ir,2) & +fxcir(ir,4,4)*dmagir(ir,3) end do else ! collinear do ir=1,ngtot ! add charge-spin contribution to potential derivative dvsir(ir)=dvsir(ir)+fxcir(ir,1,4)*dmagir(ir,1) ! spin-charge contribution to B-field derivative dbsir(ir,1)=fxcir(ir,1,4)*drhoir(ir) ! add spin-spin contribution to B-field derivative dbsir(ir,1)=dbsir(ir,1)+fxcir(ir,4,4)*dmagir(ir,1) end do end if end if deallocate(fxcmt,fxcir,dvmt) if (spinpol) deallocate(dbmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/elnes.f900000644002504400250440000000005012337331324015625 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/elnes.f900000644002504400250440000000657312337331324016404 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine elnes use modmain use modtest implicit none ! local variables integer ik,jk,ikq,ist,jst integer isym,n,nsk(3),iw real(8) vkql(3),v(3) real(8) qc,wd,dw,w,t1 ! allocatable arrays real(8), allocatable :: e(:,:,:) real(8), allocatable :: f(:,:,:) real(8), allocatable :: ddcs(:) complex(8), allocatable :: expmt(:,:,:) complex(8), allocatable :: emat(:,:) ! initialise universal variables call init0 call init1 ! check q-vector is commensurate with k-point grid v(:)=dble(ngridk(:))*vecql(:) v(:)=abs(v(:)-nint(v(:))) if ((v(1).gt.epslat).or.(v(2).gt.epslat).or.(v(3).gt.epslat)) then write(*,*) write(*,'("Error(elnes): q-vector incommensurate with k-point grid")') write(*,'(" ngridk : ",3I6)') ngridk write(*,'(" vecql : ",3G18.10)') vecql write(*,*) stop end if ! allocate local arrays allocate(e(nstsv,nstsv,nkptnr)) allocate(f(nstsv,nstsv,nkptnr)) allocate(ddcs(nwplot)) allocate(expmt(lmmaxvr,nrcmtmax,natmtot)) ! read in the density and potentials from file call readstate ! read Fermi energy from file call readfermi ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr ! get the second-variational eigenvalues and occupancies from file do ik=1,nkpt call getevalsv(vkl(:,ik),evalsv(:,ik)) call getoccsv(vkl(:,ik),occsv(:,ik)) end do ! generate the phase factor function exp(iq.r) in the muffin-tins call genexpmt(vecqc,expmt) e(:,:,:)=0.d0 f(:,:,:)=0.d0 ! begin parallel loop over non-reduced k-points !$OMP PARALLEL DEFAULT(SHARED) & !$OMP PRIVATE(emat,jk,vkql,isym) & !$OMP PRIVATE(ikq,ist,jst,t1) !$OMP DO do ik=1,nkptnr allocate(emat(nstsv,nstsv)) !$OMP CRITICAL write(*,'("Info(elnes): ",I6," of ",I6," k-points")') ik,nkptnr !$OMP END CRITICAL ! equivalent reduced k-point jk=ikmap(ivk(1,ik),ivk(2,ik),ivk(3,ik)) ! k+q-vector in lattice coordinates vkql(:)=vkl(:,ik)+vecql(:) ! index to k+q-vector call findkpt(vkql,isym,ikq) ! compute < i,k+q | exp(iq.r) | j,k > matrix elements call genexpmat(vkl(:,ik),expmt,emat) ! add to the double differential scattering cross-section do jst=1,nstsv if (evalsv(jst,jk).lt.emaxelnes) then do ist=1,nstsv e(ist,jst,ik)=evalsv(ist,ikq)-evalsv(jst,jk) t1=dble(emat(ist,jst))**2+aimag(emat(ist,jst))**2 f(ist,jst,ik)=t1*occsv(jst,jk)*(occmax-occsv(ist,ikq)) end do end if end do deallocate(emat) end do !$OMP END DO !$OMP END PARALLEL ! number of subdivisions used for interpolation nsk(:)=max(ngrkf/ngridk(:),1) n=nstsv*nstsv ! integrate over the Brillouin zone call brzint(nswplot,ngridk,nsk,ikmapnr,nwplot,wplot,n,n,e,f,ddcs) qc=sqrt(vecqc(1)**2+vecqc(2)**2+vecqc(3)**2) t1=2.d0/(omega*occmax) if (qc.gt.epslat) t1=t1/qc**4 ddcs(:)=t1*ddcs(:) open(50,file='ELNES.OUT',action='WRITE',form='FORMATTED') wd=wplot(2)-wplot(1) dw=wd/dble(nwplot) do iw=1,nwplot w=dw*dble(iw-1)+wplot(1) write(50,'(2G18.10)') w,ddcs(iw) end do close(50) write(*,*) write(*,'("Info(elnes):")') write(*,'(" ELNES double differential cross-section written to ELNES.OUT")') ! write ELNES distribution to test file call writetest(140,'ELNES cross-section',nv=nwplot,tol=1.d-2,rva=ddcs) deallocate(e,f,ddcs,expmt) return end subroutine elk-2.3.22/src/PaxHeaders.22528/writefsm.f900000644002504400250440000000005012337331323016356 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writefsm.f900000644002504400250440000000155112337331323017124 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writefsm(fnum) use modmain implicit none ! arguments integer, intent(in) :: fnum ! local variables integer is,ia,ias if (fsmtype.eq.0) return write(fnum,*) if ((abs(fsmtype).eq.1).or.(abs(fsmtype).eq.3)) then write(fnum,'("FSM global effective field",T30,": ",3G18.10)') bfsmc(1:ndmag) end if if ((abs(fsmtype).eq.2).or.(abs(fsmtype).eq.3)) then write(fnum,'("FSM local muffin-tin effective fields :")') do is=1,nspecies write(fnum,'(" species : ",I4," (",A,")")') is,trim(spsymb(is)) do ia=1,natoms(is) ias=idxas(ia,is) write(fnum,'(" atom ",I4,T30,": ",3G18.10)') ia,bfsmcmt(1:ndmag,ias) end do end do end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/wigner3jf.f900000644002504400250440000000005012337331323016414 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/wigner3jf.f900000644002504400250440000000525512337331323017167 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: wigner3jf ! !INTERFACE: real(8) function wigner3jf(j12,j22,j32,m12,m22,m32) ! !INPUT/OUTPUT PARAMETERS: ! j12, j22, j32 : angular momentum quantum numbers times 2 (in,integer) ! m12, m22, m32 : magnetic quantum numbers times 2 (in,integer) ! !DESCRIPTION: ! Returns the Wigner $3j$-symbol for the case where the arguments may be ! fractional, i.e. multiples of $\frac{1}{2}$. The input parameters to this ! function are taken to be twice their actual values, which allows them to ! remain integers. The formula used is identical to that in {\tt wigner3j}. ! ! !REVISION HISTORY: ! Created January 2014 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: j12,j22,j32 integer, intent(in) :: m12,m22,m32 ! local variables integer jm1,jm2,jm3,n1,n2 integer l12,l22,l32,l42 integer k,k1,k2,l1,l2,l3 real(8) sgn,sum,t1 ! external functions real(8) factnm,factr external factnm,factr ! check input variables if ((j12.lt.0).or.(j22.lt.0).or.(j32.lt.0).or.(abs(m12).gt.j12).or. & (abs(m22).gt.j22).or.(abs(m32).gt.j32)) then write(*,*) write(*,'("Error(wigner3jf): invalid arguments :")') write(*,'("j12 = ",I8," j22 = ",I8," j32 = ",I8)') j12,j22,j32 write(*,'("m12 = ",I8," m22 = ",I8," m32 = ",I8)') m12,m22,m32 write(*,*) stop end if if ((j12.eq.0).and.(j22.eq.0).and.(j32.eq.0)) then wigner3jf=1.d0 return end if if ((j12.gt.100).or.(j22.gt.100).or.(j32.gt.100)) then write(*,*) write(*,'("Error(wigner3jf): angular momenta out of range : ",3I8)') j12, & j22,j32 write(*,*) stop end if jm1=j12+m12 jm2=j22+m22 jm3=j32+m32 if ((mod(jm1,2).ne.0).or.(mod(jm2,2).ne.0).or.(mod(jm3,2).ne.0)) then wigner3jf=0.d0 return end if l12=j22-j12+j32 l22=j12-j22+j32 l32=j12+j22-j32 l42=j12+j22+j32 if ((mod(l12,2).ne.0).or.(mod(l22,2).ne.0).or.(mod(l32,2).ne.0).or. & (mod(l42,2).ne.0)) then wigner3jf=0.d0 return end if l1=l12/2 l2=l22/2 l3=l32/2 if ((m12+m22+m32.ne.0).or.(l1.lt.0).or.(l2.lt.0).or.(l3.lt.0)) then wigner3jf=0.d0 return end if n1=(j12-m12)/2 n2=(j22+m22)/2 k1=max(0,n1-l2,n2-l1) k2=min(l3,n1,n2) k=k1+(j22-j12+m32)/2 if (mod(k,2).ne.0) then sgn=-1.d0 else sgn=1.d0 end if sum=0.d0 do k=k1,k2 t1=sgn*factr(l1,l1-n2+k)*factr(l2,l2-n1+k)*factr(l3,l3-k) sum=sum+t1/(factnm(k,1)*factnm(n1-k,1)*factnm(n2-k,1)) sgn=-sgn end do jm1=jm1/2 jm2=jm2/2 jm3=jm3/2 t1=factr(jm1,l1)*factr(jm2,l2)*factr(jm3,l3) jm1=(j12-m12)/2 jm2=(j22-m22)/2 jm3=(j32-m32)/2 t1=t1*factr(jm3,1+l42/2)*factnm(jm1,1)*factnm(jm2,1) wigner3jf=sum*sqrt(t1) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/zfftifc_fftw.f900000644002504400250440000000005012337331324017200 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/zfftifc_fftw.f900000644002504400250440000000144612337331324017751 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zfftifc(nd,n,sgn,z) implicit none ! arguments integer, intent(in) :: nd integer, intent(in) :: n(nd) integer, intent(in) :: sgn complex(8), intent(inout) :: z(*) ! local variables integer, parameter :: FFTW_ESTIMATE=64 integer i,p integer(8) plan real(8) t1 ! interface to FFTW version 3 !$OMP CRITICAL call dfftw_plan_dft(plan,nd,n,z,z,sgn,FFTW_ESTIMATE) !$OMP END CRITICAL call dfftw_execute(plan) !$OMP CRITICAL call dfftw_destroy_plan(plan) !$OMP END CRITICAL if (sgn.eq.-1) then p=1 do i=1,nd p=p*n(i) end do t1=1.d0/dble(p) call zdscal(p,t1,z,1) end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/readalphadu.f900000644002504400250440000000005012337331324016771 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/readalphadu.f900000644002504400250440000000153712337331324017543 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2009 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. subroutine readalphadu use modmain use moddftu implicit none ! local variables integer is,ia,i,l integer is_,ia_,l_ if (.not.readadu) return open(50,file='ALPHADU'//trim(filext),action='READ',form='FORMATTED') do i=1,ndftu is=idftu(1,i) l=idftu(2,i) do ia=1,natoms(is) read(50,*) read(50,*) is_,ia_,l_ if ((is.ne.is_).or.(ia.ne.ia_).or.(l.ne.l_)) then write(*,*) write(*,'("Error(readalphadu): differing is, ia or l")') write(*,'(" current : ",3I8)') is,ia,l write(*,'(" ALPHADU.OUT : ",3I8)') is_,ia_,l_ write(*,*) stop end if read(50,*) alphadu(ia,i) end do end do close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/eliashberg.f900000644002504400250440000000005012337331324016624 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/eliashberg.f900000644002504400250440000001442212337331324017373 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2011 A. Sanna and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: eliashberg ! !INTERFACE: subroutine eliashberg ! !USES: use modmain use modphonon ! !DESCRIPTION: ! Calculates the superconducting gap within Eliashberg theory. This ! implementation is isotropic and assumes a flat density of states. The ! Eliashberg function $\alpha^2F$ is required as input for this calculation. ! ! !REVISION HISTORY: ! Created December 2010 (Antonio Sanna) ! Modified, June 2011 (JKD) !EOP !BOC implicit none ! local variables ! maximum allowed number of Matsubara frequencies integer, parameter :: maxwf=40000 ! maximum number of iterations integer, parameter :: maxit=1000 integer nwf,nwfcl,nin,nout integer itemp,it,i,m,n ! convergence tolerance real(8), parameter :: eps=1.d-12 ! mixing paramter real(8), parameter :: beta=0.5d0 real(8) lambda,wlog,wrms,tc real(8) wfmax,tmin,tmax,dtemp,temp real(8) dw,dmu,sum,a,b,t0,t1 ! allocatable arrays real(8), allocatable :: w(:),a2f(:),wf(:),l(:) real(8), allocatable :: d0(:),d(:),z0(:),z(:),r(:) complex(8), allocatable :: zin(:),uin(:),zout(:),uout(:) ! initialise universal variables call init0 call init1 allocate(w(nwplot),a2f(nwplot)) ! read in the Eliashberg function call readalpha2f(w,a2f) dw=(w(nwplot)-w(1))/dble(nwplot) ! compute the McMillan parameters call mcmillan(w,a2f,lambda,wlog,wrms,tc) ! Matsubara frequency cut-off wfmax=20.d0*wrms ! minumum temperature tmin=tc/6.d0 ! maximum temperature tmax=3.d0*tc ! temperature step size dtemp=(tmax-tmin)/dble(ntemp) ! maximum number of fermionic Matsubara frequencies nwf=nint(wfmax/(twopi*kboltz*dtemp)) if (nwf.gt.maxwf) nwf=maxwf allocate(wf(-nwf:nwf)) allocate(l(-2*nwf:2*nwf)) allocate(d0(0:nwf),d(0:nwf)) allocate(z0(0:nwf),z(0:nwf)) allocate(r(0:nwf)) allocate(zin(0:nwf),uin(0:nwf)) ! generate output points for continuation on the real axis nout=4*nwplot allocate(zout(nout),uout(nout)) do i=1,nout zout(i)=cmplx(2.d0*dble(i-1)*dw,0.d0,8) end do ! open files for writing open(62,file='ELIASHBERG.OUT',action='WRITE',form='FORMATTED') open(63,file='ELIASHBERG_IA.OUT',action='WRITE',form='FORMATTED') open(64,file='ELIASHBERG_GAP_T.OUT',action='WRITE',form='FORMATTED') open(65,file='ELIASHBERG_GAP_RA.OUT',action='WRITE',form='FORMATTED') open(66,file='ELIASHBERG_Z_RA.OUT',action='WRITE',form='FORMATTED') write(62,'("+------------------------------+")') write(62,'("| Eliashberg equations |")') write(62,'("+------------------------------+")') write(62,*) write(62,'("Temperature range : ",2G18.10)') tmin,tmax write(62,'("Number of temperature steps : ",I6)') ntemp write(62,'("Number of output frequencies : ",I8)') nout write(62,'("Fermionic Matsubara frequency cut-off")') write(62,'(" phonons : ",G18.10)') wfmax write(62,'(" Coulomb : ",G18.10)') wrms d0(:)=1.d-4 z0(:)=1.d0 ! main loop over temperature do itemp=1,ntemp write(*,'("Info(eliashberg): temperature step ",I6," of ",I6)') itemp,ntemp temp=dble(itemp)*dtemp+tmin write(62,*) write(62,'("Temperature (kelvin) : ",G18.10)') temp t0=pi*kboltz*temp ! number of Matsubara frequencies nwf=nint(wfmax/(2.d0*t0)) if (nwf.gt.maxwf) nwf=maxwf nwfcl=nint(wrms/(2.d0*t0)) if (nwfcl.gt.nwf) nwfcl=nwf if (nwfcl.lt.1) nwfcl=1 write(62,'("Number of Matsubara frequencies")') write(62,'(" phonons : ",I8)') nwf write(62,'(" Coulomb : ",I8)') nwfcl ! make Pade approximant input points same as Matsubara frequencies nin=nwf ! generate fermionic Matsubara frequencies do m=-nwf,nwf wf(m)=t0*dble(2*m+1) end do ! compute lambda !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(t1,sum,i) !$OMP DO do m=-2*nwf,2*nwf t1=(t0*dble(2*m))**2 sum=0.d0 do i=1,nwplot sum=sum+w(i)*a2f(i)/(w(i)**2+t1) end do l(m)=2.d0*sum*dw end do !$OMP END DO !$OMP END PARALLEL ! begin iteration loop do it=1,maxit do m=0,nwf r(m)=sqrt((wf(m)**2+d0(m)**2)*z0(m)**2) end do do n=0,nwf sum=0.d0 do m=0,nwf-1 sum=sum+(l(n-m)-l(n+m+1))*z0(m)*wf(m)/r(m) end do z(n)=t0*sum/wf(n) end do z(0:nwf)=z(0:nwf)+1.d0 z0(0:nwf)=z(0:nwf) ! Coulomb part of summation dmu=0.d0 do n=0,nwfcl dmu=dmu+mustar*d0(n)*z(n)/r(n) end do dmu=dmu*2.d0 ! Gap do n=0,nwf sum=0.d0 do m=0,nwf-1 sum=sum+(l(n-m)+l(n+m+1))*d0(m)*z(m)/r(m) end do d(n)=t0*(sum-dmu)/z(n) end do ! mix old and new gap functions d(0:nwf)=beta*d(0:nwf)+(1.d0-beta)*d0(0:nwf) sum=0.d0 do m=0,nwf sum=sum+abs(d0(m)-d(m)) end do sum=sum/dble(2*nwf) d0(0:nwf)=d(0:nwf) if (sum.le.eps) then write(62,'("Eliashberg equations converged in ",I6," iterations")') it goto 10 end if ! end iteration loop end do write(*,*) write(*,'("Warning(eliashberg): failed to converge: possibly close to T_c")') write(62,'("Failed to converge: possibly close to T_c")') 10 continue call flushifc(62) do n=-nwf,nwf if (n.ge.0) then m=n else m=-n-1 end if write(63,'(3G18.10)') wf(n),d(m),z(m) end do write(63,*) call flushifc(63) write(64,'(3G18.10)') temp,d(0),z(0) call flushifc(64) ! analytic continuation to real axis do m=0,nin zin(m)=cmplx(0.d0,wf(m),8) uin(m)=cmplx(d(m),0.d0,8) end do call pade(nin,zin,uin,nout,zout,uout) do i=1,nout a=dble(uout(i)) b=aimag(uout(i)) write(65,'(3G18.10)') dble(zout(i)),a,b end do write(65,*) call flushifc(65) do m=0,nin uin(m)=cmplx(z(m),0.d0,8) end do call pade(nin,zin,uin,nout,zout,uout) do i=1,nout a=dble(uout(i)) b=aimag(uout(i)) write(66,'(3G18.10)') dble(zout(i)),a,b end do write(66,*) call flushifc(66) ! end loop over temperatures end do close(62); close(63); close(64); close(65); close(66) write(*,*) write(*,'("Info(eliashberg):")') write(*,'(" calculation information written to ELIASHBERG.OUT")') write(*,'(" gap and Z functions on the imaginary axis written to & &ELIASHBERG_IA.OUT")') write(*,'(" gap vs. temperature written to ELIASHBERG_GAP_T.OUT")') write(*,'(" gap function on the real axis written to ELIASHBERG_GAP_RA.OUT")') write(*,'(" Z function on the real axis written to ELIASHBERG_Z_RA.OUT")') deallocate(w,a2f,wf,l) deallocate(d0,d,z0,z,r) deallocate(zin,uin,zout,uout) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/pottm2.f900000644002504400250440000000005012337331324015744 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/pottm2.f900000644002504400250440000000251512337331324016513 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: pottm2 ! !INTERFACE: subroutine pottm2(i,k1,p,vh,vx) ! !USES: use moddftu ! !INPUT/OUTPUT PARAMETERS: ! i : DFT+U entry (in,integer) ! k1 : k-index of tensor moment (in,integer) ! p : p-index of tensor moment (in,integer) ! vh : Hartree potential energy (out,real) ! vx : exchange potential energy (out,real) ! !DESCRIPTION: ! Calculates the DFT+$U$ Hartree and exchange potential energies for a 2-index ! tensor moment component. See {\tt pottm3}. ! ! !REVISION HISTORY: ! Created April 2008 (F. Cricchio and L. Nordstrom) ! Modified, January 2014 (JKD) !EOP !BOC implicit none integer, intent(in) :: i integer, intent(in) :: k1,p real(8), intent(out) :: vh,vx ! local variables integer l,k real(8) nlk,t1,t2 ! external functions real(8) wigner3j,wigner6j,factnm external wigner3j,wigner6j,factnm l=idftu(2,i) nlk=factnm(2*l,1)/sqrt(factnm(2*l-k1,1)*factnm(2*l+k1+1,1)) vh=0.d0 vx=0.d0 do k=0,2*l,2 t1=0.5d0*(dble(2*l+1)*nlk*wigner3j(l,k,l,0,0,0))**2 t2=0.5d0*dble((2*k1+1)*(-1)**k1)*wigner6j(l,l,k1,l,l,k) if (k.eq.k1) then if (p.eq.0) vh=t1*fdu(k1,i) end if vx=vx-t1*t2*fdu(k,i) end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writetddft.f900000644002504400250440000000005012337331324016677 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writetddft.f900000644002504400250440000000251512337331324017446 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 K. Krieger, J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writetddft use modmain use modtddft use modmpi implicit none ! local variables character(256) fext if (.not.mp_mpi) goto 10 ! delete all files at first time-step if (itimes.le.1) then open(50,file='MOMENT_TD.OUT') close(50,status='DELETE') open(50,file='MOMENTM_TD.OUT') close(50,status='DELETE') end if ! write non-optional quantities open(50,file='MOMENT_TD.OUT',action='WRITE',form='FORMATTED',position='APPEND') write(50,'(4G18.10)') times(itimes),momtot(1:ndmag) close(50) open(50,file='MOMENTM_TD.OUT',action='WRITE',form='FORMATTED',position='APPEND') write(50,'(2G18.10)') times(itimes),momtotm close(50) !********** ! write optional quantities if (ntwrite.le.0) goto 10 if (mod(itimes-1,ntwrite).ne.0) goto 10 ! file extension write(fext,'("_TS",I8.8,".OUT")') itimes ! charge density in 1D if (tdrho1d) then open(50,file='RHO1D'//trim(fext),action='WRITE',form='FORMATTED') open(51,file='RHOLINES'//trim(fext),action='WRITE',form='FORMATTED') call plot1d(50,51,1,rhomt,rhoir) close(50) close(51) end if !******* 10 continue ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) return end subroutine elk-2.3.22/src/PaxHeaders.22528/modxcifc.f900000644002504400250440000000005012337331322016311 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/modxcifc.f900000644002504400250440000003405712337331322017066 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. module modxcifc use libxcifc contains !BOP ! !ROUTINE: xcifc ! !INTERFACE: subroutine xcifc(xctype,n,c_tb09,rho,rhoup,rhodn,grho,gup,gdn,g2rho,g2up,g2dn, & g3rho,g3up,g3dn,grho2,gup2,gdn2,gupdn,tau,tauup,taudn,ex,ec,vx,vc,vxup,vxdn, & vcup,vcdn,dxdg2,dxdgu2,dxdgd2,dxdgud,dcdg2,dcdgu2,dcdgd2,dcdgud) ! !INPUT/OUTPUT PARAMETERS: ! xctype : type of exchange-correlation functional (in,integer(3)) ! n : number of density points (in,integer) ! c_tb09 : Tran-Blaha '09 constant c (in,real,optional) ! rho : spin-unpolarised charge density (in,real(n),optional) ! rhoup : spin-up charge density (in,real(n),optional) ! rhodn : spin-down charge density (in,real(n),optional) ! grho : |grad rho| (in,real(n),optional) ! gup : |grad rhoup| (in,real(n),optional) ! gdn : |grad rhodn| (in,real(n),optional) ! g2rho : grad^2 rho (in,real(n),optional) ! g2up : grad^2 rhoup (in,real(n),optional) ! g2dn : grad^2 rhodn (in,real(n),optional) ! g3rho : (grad rho).(grad |grad rho|) (in,real(n),optional) ! g3up : (grad rhoup).(grad |grad rhoup|) (in,real(n),optional) ! g3dn : (grad rhodn).(grad |grad rhodn|) (in,real(n),optional) ! grho2 : |grad rho|^2 (in,real(n),optional) ! gup2 : |grad rhoup|^2 (in,real(n),optional) ! gdn2 : |grad rhodn|^2 (in,real(n),optional) ! gupdn : (grad rhoup).(grad rhodn) (in,real(n),optional) ! tau : kinetic energy density (in,real(n),optional) ! tauup : spin-up kinetic energy density (in,real(n),optional) ! taudn : spin-down kinetic energy density (in,real(n),optional) ! ex : exchange energy density (out,real(n),optional) ! ec : correlation energy density (out,real(n),optional) ! vx : spin-unpolarised exchange potential (out,real(n),optional) ! vc : spin-unpolarised correlation potential (out,real(n),optional) ! vxup : spin-up exchange potential (out,real(n),optional) ! vxdn : spin-down exchange potential (out,real(n),optional) ! vcup : spin-up correlation potential (out,real(n),optional) ! vcdn : spin-down correlation potential (out,real(n),optional) ! dxdg2 : de_x/d(|grad rho|^2) (out,real(n),optional) ! dxdgu2 : de_x/d(|grad rhoup|^2) (out,real(n),optional) ! dxdgd2 : de_x/d(|grad rhodn|^2) (out,real(n),optional) ! dxdgud : de_x/d((grad rhoup).(grad rhodn)) (out,real(n),optional) ! dcdg2 : de_c/d(|grad rho|^2) (out,real(n),optional) ! dcdgu2 : de_c/d(|grad rhoup|^2) (out,real(n),optional) ! dcdgd2 : de_c/d(|grad rhodn|^2) (out,real(n),optional) ! dcdgud : de_c/d((grad rhoup).(grad rhodn)) (out,real(n),optional) ! !DESCRIPTION: ! Interface to the exchange-correlation routines. In the most general case ! (meta-GGA), the exchange-correlation energy is given by ! $$ E_{xc}[\rho^{\uparrow},\rho^{\downarrow}]=\int d^3r\, ! \rho({\bf r})\,\varepsilon_{xc}(\rho^{\uparrow},\rho^{\downarrow}, ! |\nabla\rho|,|\nabla\rho^{\uparrow}|,|\nabla\rho^{\downarrow}|, ! \nabla^2\rho^{\uparrow},\nabla^2\rho^{\downarrow},\tau), $$ ! where $\rho({\bf r})=\rho^{\uparrow}({\bf r})+\rho^{\downarrow}({\bf r})$ is ! the density; ! $$ \tau({\bf r})\equiv\sum_{i\;{\rm occ}}\nabla\psi({\bf r})\cdot ! \nabla\psi({\bf r}) $$ ! is twice the spin-contracted kinetic energy density; and $\varepsilon_{xc}$ ! is the exchange-correlation energy per electron. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! mandatory arguments integer, intent(in) :: xctype(3) integer, intent(in) :: n ! optional arguments real(8), optional, intent(in) :: c_tb09 real(8), optional, intent(in) :: rho(n),rhoup(n),rhodn(n) real(8), optional, intent(in) :: grho(n),gup(n),gdn(n) real(8), optional, intent(in) :: g2rho(n),g2up(n),g2dn(n) real(8), optional, intent(in) :: g3rho(n),g3up(n),g3dn(n) real(8), optional, intent(in) :: grho2(n),gup2(n),gdn2(n),gupdn(n) real(8), optional, intent(in) :: tau(n),tauup(n),taudn(n) real(8), optional, intent(out) :: ex(n),ec(n),vx(n),vc(n) real(8), optional, intent(out) :: vxup(n),vxdn(n),vcup(n),vcdn(n) real(8), optional, intent(out) :: dxdg2(n),dxdgu2(n),dxdgd2(n),dxdgud(n) real(8), optional, intent(out) :: dcdg2(n),dcdgu2(n),dcdgd2(n),dcdgud(n) ! local variables real(8) kappa,mu,beta ! allocatable arrays real(8), allocatable :: ra(:,:) if (n.le.0) then write(*,*) write(*,'("Error(xcifc): n <= 0 : ",I8)') n write(*,*) stop end if select case(abs(xctype(1))) case(1) ! No density-derived exchange-correlation energy or potential if (present(ex)) ex(:)=0.d0 if (present(ec)) ec(:)=0.d0 if (present(vx)) vx(:)=0.d0 if (present(vc)) vc(:)=0.d0 if (present(vxup)) vxup(:)=0.d0 if (present(vxdn)) vxdn(:)=0.d0 if (present(vcup)) vcup(:)=0.d0 if (present(vcdn)) vcdn(:)=0.d0 case(2) ! Perdew-Zunger parameterisation of Ceperley-Alder electron gas ! J. Perdew and A. Zunger, Phys. Rev. B 23, 5048 (1981) ! D. M. Ceperly and B. J. Alder, Phys. Rev. Lett. 45, 566 (1980) if (present(rho).and.present(ex).and.present(ec).and.present(vx) & .and.present(vc)) then call xc_pzca(n,rho,ex,ec,vx,vc) else goto 10 end if case(3) ! Perdew-Wang parameterisation of the spin-polarised Ceperley-Alder electron gas ! J. Perdew and Y. Wang, Phys. Rev. B 45, 13244 (1992) ! D. M. Ceperly and B. J. Alder, Phys. Rev. Lett. 45, 566 (1980) if (present(rhoup).and.present(rhodn).and.present(ex).and.present(ec) & .and.present(vxup).and.present(vxdn).and.present(vcup) & .and.present(vcdn)) then ! spin-polarised density call xc_pwca(n,rhoup,rhodn,ex,ec,vxup,vxdn,vcup,vcdn) else if (present(rho).and.present(ex).and.present(ec).and.present(vx) & .and.present(vc)) then ! divide spin-unpolarised density into up and down allocate(ra(n,1)) ra(:,1)=0.5d0*rho(:) call xc_pwca(n,ra(:,1),ra(:,1),ex,ec,vx,vx,vc,vc) deallocate(ra) else goto 10 end if case(4) ! X-alpha approximation ! J. C. Slater, Phys. Rev. 81, 385 (1951) if (present(rho).and.present(ex).and.present(ec).and.present(vx) & .and.present(vc)) then call xc_xalpha(n,rho,ex,vx) ! set correlation energy and potential to zero ec(:)=0.d0 vc(:)=0.d0 else goto 10 end if case(5) ! U. von Barth and L. Hedin parameterisation of LSDA ! J. Phys. C, 5, 1629 (1972) if (present(rhoup).and.present(rhodn).and.present(ex).and.present(ec) & .and.present(vxup).and.present(vxdn).and.present(vcup) & .and.present(vcdn)) then ! spin-polarised density call xc_vbh(n,rhoup,rhodn,ex,ec,vxup,vxdn,vcup,vcdn) else if (present(rho).and.present(ex).and.present(ec).and.present(vx) & .and.present(vc)) then ! divide spin-unpolarised density into up and down allocate(ra(n,1)) ra(:,1)=0.5d0*rho(:) call xc_vbh(n,ra(:,1),ra(:,1),ex,ec,vx,vx,vc,vc) deallocate(ra) else goto 10 end if case(20,21,22) ! original PBE kappa kappa=0.804d0 if (xctype(1).eq.21) then ! Zhang-Yang kappa kappa=1.245d0 end if ! original PBE mu and beta mu=0.2195149727645171d0 beta=0.06672455060314922d0 if (xctype(1).eq.22) then ! PBEsol parameters mu=10.d0/81.d0 beta=0.046d0 end if ! Perdew-Burke-Ernzerhof generalised gradient approximation ! Phys. Rev. Lett. 77, 3865 (1996); 78, 1396(E) (1997) ! Revised PBE, Zhang-Yang, Phys. Rev. Lett. 80, 890 (1998) if (present(rhoup).and.present(rhodn).and.present(grho).and.present(gup) & .and.present(gdn).and.present(g2up).and.present(g2dn).and.present(g3rho) & .and.present(g3up).and.present(g3dn).and.present(ex).and.present(ec) & .and.present(vxup).and.present(vxdn).and.present(vcup) & .and.present(vcdn)) then call xc_pbe(n,kappa,mu,beta,rhoup,rhodn,grho,gup,gdn,g2up,g2dn,g3rho,g3up, & g3dn,ex,ec,vxup,vxdn,vcup,vcdn) else if (present(rho).and.present(grho).and.present(g2rho) & .and.present(g3rho).and.present(ex).and.present(ec).and.present(vx) & .and.present(vc)) then allocate(ra(n,6)) ra(:,1)=0.5d0*rho(:) ra(:,2)=0.5d0*grho(:) ra(:,3)=0.5d0*g2rho(:) ra(:,4)=0.25d0*g3rho(:) call xc_pbe(n,kappa,mu,beta,ra(:,1),ra(:,1),grho,ra(:,2),ra(:,2),ra(:,3), & ra(:,3),g3rho,ra(:,4),ra(:,4),ex,ec,vx,ra(:,5),vc,ra(:,6)) deallocate(ra) else goto 10 end if case(26) ! Wu-Cohen exchange with PBE correlation generalised gradient functional ! Zhigang Wu and R. E. Cohen, Phys. Rev. B 73, 235116 (2006) if (present(rho).and.present(grho).and.present(g2rho).and.present(g3rho) & .and.present(ex).and.present(ec).and.present(vx).and.present(vc)) then call xc_wc06(n,rho,grho,g2rho,g3rho,ex,ec,vx,vc) else goto 10 end if case(30) ! Armiento-Mattsson generalised gradient functional ! R. Armiento and A. E. Mattsson, Phys. Rev. B 72, 085108 (2005) if (present(rho).and.present(grho).and.present(g2rho).and.present(g3rho) & .and.present(ex).and.present(ec).and.present(vx).and.present(vc)) then call xc_am05(n,rho,grho,g2rho,g3rho,ex,ec,vx,vc) else goto 10 end if case(100) ! libxc library functionals if (present(rhoup).and.present(rhodn).and.present(g2up).and.present(g2dn) & .and.present(gup2).and.present(gdn2).and.present(gupdn).and.present(tauup) & .and.present(taudn).and.present(vxup).and.present(vxdn).and.present(vcup) & .and.present(vcdn)) then ! spin-polarised potential-only meta-GGA call xcifc_libxc(xctype,n,c_tb09=c_tb09,rhoup=rhoup,rhodn=rhodn,g2up=g2up, & g2dn=g2dn,gup2=gup2,gdn2=gdn2,gupdn=gupdn,tauup=tauup,taudn=taudn, & vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn) else if (present(rhoup).and.present(rhodn).and.present(gup2) & .and.present(gdn2).and.present(gupdn).and.present(ex).and.present(ec) & .and.present(vxup).and.present(vxdn).and.present(vcup).and.present(vcdn) & .and.present(dxdgu2).and.present(dxdgd2).and.present(dxdgud) & .and.present(dcdgu2).and.present(dcdgd2).and.present(dcdgd2) & .and.present(dcdgud)) then ! spin-polarised GGA call xcifc_libxc(xctype,n,rhoup=rhoup,rhodn=rhodn,gup2=gup2,gdn2=gdn2, & gupdn=gupdn,ex=ex,ec=ec,vxup=vxup,vxdn=vxdn,vcup=vcup,vcdn=vcdn, & dxdgu2=dxdgu2,dxdgd2=dxdgd2,dxdgud=dxdgud,dcdgu2=dcdgu2,dcdgd2=dcdgd2, & dcdgud=dcdgud) else if (present(rhoup).and.present(rhodn).and.present(ex).and.present(ec) & .and.present(vxup).and.present(vxdn).and.present(vcup) & .and.present(vcdn)) then ! LSDA call xcifc_libxc(xctype,n,rhoup=rhoup,rhodn=rhodn,ex=ex,ec=ec,vxup=vxup, & vxdn=vxdn,vcup=vcup,vcdn=vcdn) else if (present(rho).and.present(g2rho).and.present(grho2).and.present(tau) & .and.present(vx).and.present(vc)) then ! spin-unpolarised potential-only meta-GGA call xcifc_libxc(xctype,n,c_tb09=c_tb09,rho=rho,g2rho=g2rho,grho2=grho2, & tau=tau,vx=vx,vc=vc) else if (present(rho).and.present(grho2).and.present(ex).and.present(ec) & .and.present(vx).and.present(vc).and.present(dxdg2).and.present(dcdg2)) then ! spin-unpolarised GGA call xcifc_libxc(xctype,n,rho=rho,grho2=grho2,ex=ex,ec=ec,vx=vx,vc=vc, & dxdg2=dxdg2,dcdg2=dcdg2) else if (present(rho).and.present(ex).and.present(ec).and.present(vx) & .and.present(vc)) then ! LDA call xcifc_libxc(xctype,n,rho=rho,ex=ex,ec=ec,vx=vx,vc=vc) else goto 10 end if case default write(*,*) write(*,'("Error(xcifc): xctype not defined : ",I8)') xctype(1) write(*,*) stop end select ! set exchange potential to zero for EXX if (xctype(1).le.-2) then if (present(vx)) vx(:)=0.d0 if (present(vxup)) vxup(:)=0.d0 if (present(vxdn)) vxdn(:)=0.d0 end if return 10 continue write(*,*) write(*,'("Error(xcifc): missing arguments for exchange-correlation type ",& &3I6)') xctype(:) write(*,*) stop end subroutine !EOC !BOP ! !ROUTINE: getxcdata ! !INTERFACE: subroutine getxcdata(xctype,xcdescr,xcspin,xcgrad,hybrid,hybridc) ! !INPUT/OUTPUT PARAMETERS: ! xctype : type of exchange-correlation functional (in,integer(3)) ! xcdescr : description of functional (out,character(256)) ! xcspin : spin treatment (out,integer) ! xcgrad : gradient treatment (out,integer) ! hybrid : .true. if functional a hybrid (out,logical) ! hybridc : hybrid exact exchange mixing coefficient (out,real(8)) ! !DESCRIPTION: ! Returns data on the exchange-correlation functional labeled by {\tt xctype}. ! The character array {\tt xcdescr} contains a short description of the ! functional including journal references. The variable {\tt xcspin} is set to ! 1 or 0 for spin-polarised or -unpolarised functionals, respectively. For ! functionals which require the gradients of the density {\tt xcgrad} is set ! to 1, otherwise it is set to 0. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: xctype(3) character(512), intent(out) :: xcdescr integer, intent(out) :: xcspin integer, intent(out) :: xcgrad logical, intent(out) :: hybrid real(8), intent(out) :: hybridc select case(abs(xctype(1))) case(1) xcdescr='No density-derived exchange-correlation energy or potential' ! spin-polarisation or gradient status not required xcspin=-1 xcgrad=-1 return case(2) xcdescr='Perdew-Zunger/Ceperley-Alder, Phys. Rev. B 23, 5048 (1981)' xcspin=0 xcgrad=0 return case(3) xcdescr='Perdew-Wang/Ceperley-Alder, Phys. Rev. B 45, 13244 (1992)' xcspin=1 xcgrad=0 case(4) xcdescr='X-alpha approximation, J. C. Slater, Phys. Rev. 81, 385 (1951)' xcspin=0 xcgrad=0 case(5) xcdescr='von Barth-Hedin, J. Phys. C 5, 1629 (1972)' xcspin=1 xcgrad=0 case(20) xcdescr='Perdew-Burke-Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)' xcspin=1 xcgrad=1 case(21) xcdescr='Revised PBE, Zhang-Yang, Phys. Rev. Lett. 80, 890 (1998)' xcspin=1 xcgrad=1 case(22) xcdescr='PBEsol, Phys. Rev. Lett. 100, 136406 (2008)' xcspin=1 xcgrad=1 case(26) xcdescr='Wu-Cohen exchange + PBE correlation, Phys. Rev. B 73, 235116 (2006)' xcspin=0 xcgrad=1 case(30) xcdescr='Armiento-Mattsson functional, Phys. Rev. B 72, 85108 (2005)' xcspin=0 xcgrad=1 case(100) ! libxc library functionals call xcdata_libxc(xctype,xcdescr,xcspin,xcgrad,hybrid,hybridc) case default write(*,*) write(*,'("Error(getxcdata): xctype not defined : ",I8)') xctype(1) write(*,*) stop end select return end subroutine !EOC end module elk-2.3.22/src/PaxHeaders.22528/phdvs.f900000644002504400250440000000005012337331324015643 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/phdvs.f900000644002504400250440000000461312337331324016413 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine phdvs(p,vsmt1,vsir1) use modmain use modphonon use modstore implicit none ! arguments integer, intent(in) :: p real(8), intent(in) :: vsmt1(lmmaxvr,nrmtmax,natmtot) real(8), intent(in) :: vsir1(ngtot) ! local variables integer is,ia,ja,ias,jas integer nrc,nrci,ir,irc integer i1,i2,i3,i real(8) v1(3),v2(3),v3(3),t1,t2 complex(8) z1,z2 ! allocatable arrays real(8), allocatable :: rfmt(:,:) complex(8), allocatable :: zfmt(:,:) ! external functions real(8) rfirvec external rfirvec ! prefactor z1=1.d0/(dble(nscph)*deltaph) ! multiply by i for sin-like displacement if (p.eq.1) z1=z1*zi !------------------------------! ! muffin-tin potential ! !------------------------------! allocate(rfmt(lmmaxvr,nrcmtmax),zfmt(lmmaxvr,nrcmtmax)) ias=0 jas=0 do is=1,nspecies nrc=nrcmt(is) nrci=nrcmtinr(is) ja=0 do ia=1,natoms0(is) ias=ias+1 do i=1,nscph ja=ja+1 jas=jas+1 ! compute the difference between the perturbed and unperturbed potentials irc=0 do ir=1,nrmt(is),lradstp irc=irc+1 rfmt(:,irc)=vsmt(:,ir,jas)-vsmt1(:,ir,jas) end do ! convert real potential difference to a complex spherical harmonic expansion call rtozfmt(nrc,nrci,1,rfmt,1,zfmt) ! important: the muffin-tin potential should have an *explicit* phase exp(iq.r) t1=-dot_product(vqc(:,iqph),atposc(:,ja,is)) z2=z1*cmplx(cos(t1),sin(t1),8) ! add to total call zfmtadd(nrc,nrci,z2,zfmt,dvsmt(:,:,ias)) end do ! end loop over atoms and species end do end do deallocate(rfmt,zfmt) !--------------------------------! ! interstitial potential ! !--------------------------------! ir=0 do i3=0,ngridg0(3)-1 v1(3)=dble(i3)/dble(ngridg0(3)) do i2=0,ngridg0(2)-1 v1(2)=dble(i2)/dble(ngridg0(2)) do i1=0,ngridg0(1)-1 v1(1)=dble(i1)/dble(ngridg0(1)) ir=ir+1 call r3mv(avec0,v1,v2) do i=1,nscph v3(:)=v2(:)+vscph(:,i) !***** remove vscph t1=-dot_product(vqc(:,iqph),v3(:)) z2=z1*cmplx(cos(t1),sin(t1),8) t1=rfirvec(ngridg,ainv,v3,vsir) t2=rfirvec(ngridg,ainv,v3,vsir1) dvsir(ir)=dvsir(ir)+z2*(t1-t2) end do end do end do end do !*********** fix me! !***** FFT first return end subroutine elk-2.3.22/src/PaxHeaders.22528/mixlinear.f900000644002504400250440000000005012337331323016506 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/mixlinear.f900000644002504400250440000000126312337331323017254 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine mixlinear(iscl,beta,n,nu,mu,d) implicit none ! arguments integer, intent(in) :: iscl real(8), intent(in) :: beta integer, intent(in) :: n real(8), intent(inout) :: nu(n),mu(n) real(8), intent(out) :: d ! local variables integer i real(8) t0,t1 if (n.le.0) return ! initialise mixer if (iscl.le.0) then mu(:)=nu(:) d=1.d0 return end if t0=1.d0-beta d=0.d0 do i=1,n t1=nu(i)-mu(i) nu(i)=beta*nu(i)+t0*mu(i) d=d+t1**2 mu(i)=nu(i) end do d=sqrt(d/dble(n)) return end subroutine elk-2.3.22/src/PaxHeaders.22528/findprimcell.f900000644002504400250440000000005012337331322017165 xustar000000000000000020 atime=1400746706 20 ctime=1400746706 elk-2.3.22/src/findprimcell.f900000644002504400250440000000750712337331322017742 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: findprimcell ! !INTERFACE: subroutine findprimcell ! !USES: use modmain ! !DESCRIPTION: ! This routine finds the smallest primitive cell which produces the same ! crystal structure as the conventional cell. This is done by searching ! through all the vectors which connect atomic positions and finding those ! which leave the crystal structure invariant. Of these, the three shortest ! which produce a non-zero unit cell volume are chosen. ! ! !REVISION HISTORY: ! Created April 2007 (JKD) !EOP !BOC implicit none ! local variables integer is,js,ia,ja,ka,na integer i1,i2,i3,i,j,n real(8) v1(3),v2(3),v3(3) real(8) t1,t2 ! allocatable arrays real(8), allocatable :: dp(:),vp(:,:) do is=1,nspecies do ia=1,natoms(is) ! make sure all atomic coordinates are in [0,1) call r3frac(epslat,atposl(:,ia,is)) ! determine atomic Cartesian coordinates call r3mv(avec,atposl(:,ia,is),atposc(:,ia,is)) end do end do ! find the smallest set of atoms is=1 do js=1,nspecies ! if a species has only one atom the cell must be primitive if (natoms(js).eq.1) return if (natoms(js).lt.natoms(is)) is=js end do n=27*natoms(is) allocate(dp(n),vp(3,n)) ! generate set of possible lattice vectors n=0 do ia=1,natoms(is) v1(:)=atposl(:,ia,is)-atposl(:,1,is) do i1=-1,1 v2(1)=v1(1)+dble(i1) do i2=-1,1 v2(2)=v1(2)+dble(i2) do i3=-1,1 v2(3)=v1(3)+dble(i3) t1=abs(v2(1))+abs(v2(2))+abs(v2(3)) if (t1.lt.epslat) goto 20 ! check if vector v2 leaves conventional cell invariant do js=1,nspecies do ja=1,natoms(js) v3(:)=atposl(:,ja,js)+v2(:) call r3frac(epslat,v3) do ka=1,natoms(js) ! check both positions and magnetic fields are the same t1=sum(abs(atposl(:,ka,js)-v3(:))) t2=sum(abs(bfcmt0(:,ja,js)-bfcmt0(:,ka,js))) if ((t1.lt.epslat).and.(t2.lt.epslat)) goto 10 end do ! atom ja has no equivalent under translation by v2 goto 20 10 continue end do end do ! cell invariant under translation by v2, so add to list n=n+1 call r3mv(avec,v2,vp(:,n)) dp(n)=sqrt(vp(1,n)**2+vp(2,n)**2+vp(3,n)**2) 20 continue end do end do end do end do if (n.eq.0) then write(*,*) write(*,'("Error(findprimcell): cannot find any lattice vectors")') write(*,*) stop end if ! find the shortest lattice vector j=1 t1=1.d8 do i=1,n if (dp(i).lt.t1+epslat) then j=i t1=dp(i) end if end do avec(:,1)=vp(:,j) ! find the next shortest lattice vector not parallel to the first j=1 t1=1.d8 do i=1,n call r3cross(avec(:,1),vp(:,i),v1) t2=sqrt(v1(1)**2+v1(2)**2+v1(3)**2) if (t2.gt.epslat) then if (dp(i).lt.t1+epslat) then j=i t1=dp(i) end if end if end do avec(:,2)=vp(:,j) ! find the next shortest lattice vector which gives non-zero unit cell volume call r3cross(avec(:,1),avec(:,2),v1) j=1 t1=1.d8 do i=1,n t2=dot_product(vp(:,i),v1(:)) if (abs(t2).gt.epslat) then if (dp(i).lt.t1+epslat) then j=i t1=dp(i) end if end if end do avec(:,3)=vp(:,j) call r3minv(avec,ainv) ! remove redundant atoms do is=1,nspecies na=0 do ia=1,natoms(is) call r3mv(ainv,atposc(:,ia,is),v1) call r3frac(epslat,v1) do ja=1,na t1=sum(abs(atposl(:,ja,is)-v1(:))) if (t1.lt.epslat) goto 30 end do na=na+1 atposl(:,na,is)=v1(:) call r3mv(avec,atposl(:,na,is),atposc(:,na,is)) ! re-index external magnetic fields bfcmt0(:,na,is)=bfcmt0(:,ia,is) ! re-index fixed spin moment vectors mommtfix(:,na,is)=mommtfix(:,ia,is) 30 continue end do natoms(is)=na end do deallocate(dp,vp) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/writephn.f900000644002504400250440000000005012337331324016357 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/writephn.f900000644002504400250440000000330012337331324017117 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writephn use modmain use modphonon implicit none ! local variables integer iq,i,j,is,ia,ip ! allocatable arrays real(8), allocatable :: w(:) complex(8), allocatable :: dynq(:,:,:),dynr(:,:,:) complex(8), allocatable :: dynp(:,:),ev(:,:) ! initialise universal variables call init0 call init2 allocate(w(nbph)) allocate(dynq(nbph,nbph,nqpt)) allocate(dynr(nbph,nbph,nqptnr)) allocate(dynp(nbph,nbph)) allocate(ev(nbph,nbph)) ! read in the dynamical matrices call readdyn(dynq) ! apply the acoustic sum rule call sumrule(dynq) ! Fourier transform the dynamical matrices to real-space call dynqtor(dynq,dynr) open(50,file='PHONON.OUT',action='WRITE',form='FORMATTED') do iq=1,nphwrt call dynrtoq(vqlwrt(:,iq),dynr,dynp) call dynev(dynp,w,ev) write(50,*) write(50,'(I6,3G18.10," : q-point, vqlwrt")') iq,vqlwrt(:,iq) do j=1,nbph write(50,*) write(50,'(I6,G18.10," : mode, frequency")') j,w(j) i=0 do is=1,nspecies do ia=1,natoms(is) do ip=1,3 i=i+1 if (i.eq.1) then write(50,'(3I4,2G18.10," : species, atom, polarisation, & &eigenvector")') is,ia,ip,ev(i,j) else write(50,'(3I4,2G18.10)') is,ia,ip,ev(i,j) end if end do end do end do end do write(50,*) end do close(50) write(*,*) write(*,'("Info(writephn): phonon frequencies and eigenvectors written to & &PHONON.OUT")') write(*,'(" for all q-vectors in the phwrite list")') deallocate(w,dynq,dynr,dynp,ev) return end subroutine elk-2.3.22/src/PaxHeaders.22528/proj2d.f900000644002504400250440000000005012337331323015716 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/proj2d.f900000644002504400250440000000305712337331323016467 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2014 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine proj2d(rvfmt,rvfir) use modmain implicit none ! arguments real(8), intent(inout) :: rvfmt(lmmaxvr,nrmtmax,natmtot,3) real(8), intent(inout) :: rvfir(ngtot,3) ! local variables integer is,ias,ir,lm real(8) vl1(3),vl2(3),t1,t2,t3 real(8) vc1(3),vc2(3),vc3(3),vc4(3) ! determine the projection onto the plotting plane vl1(:)=vclp2d(:,2)-vclp2d(:,1) vl2(:)=vclp2d(:,3)-vclp2d(:,1) call r3mv(avec,vl1,vc1) call r3mv(avec,vl2,vc2) call r3cross(vc1,vc2,vc3) t1=sqrt(vc1(1)**2+vc1(2)**2+vc1(3)**2) t2=sqrt(vc2(1)**2+vc2(2)**2+vc2(3)**2) t3=sqrt(vc3(1)**2+vc3(2)**2+vc3(3)**2) if ((t1.lt.epslat).or.(t2.lt.epslat).or.(t3.lt.epslat)) then write(*,*) write(*,'("Error(proj2d): degenerate 2D plotting directions")') write(*,*) stop end if vc1(:)=vc1(:)/t1 vc2(:)=vc2(:)/t2 vc3(:)=vc3(:)/t3 call r3cross(vc3,vc1,vc2) t1=sqrt(vc2(1)**2+vc2(2)**2+vc2(3)**2) vc2(:)=vc2(:)/t1 ! muffin-tin part do ias=1,natmtot is=idxis(ias) do ir=1,nrmt(is) do lm=1,lmmaxvr vc4(:)=rvfmt(lm,ir,ias,:) rvfmt(lm,ir,ias,1)=dot_product(vc4(:),vc1(:)) rvfmt(lm,ir,ias,2)=dot_product(vc4(:),vc2(:)) rvfmt(lm,ir,ias,3)=dot_product(vc4(:),vc3(:)) end do end do end do ! interstitial part do ir=1,ngtot vc4(:)=rvfir(ir,:) rvfir(ir,1)=dot_product(vc4(:),vc1(:)) rvfir(ir,2)=dot_product(vc4(:),vc2(:)) rvfir(ir,3)=dot_product(vc4(:),vc3(:)) end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/sdelta_fd.f900000644002504400250440000000005012337331323016443 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/sdelta_fd.f900000644002504400250440000000134712337331323017214 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: sdelta_fd ! !INTERFACE: real(8) function sdelta_fd(x) ! !INPUT/OUTPUT PARAMETERS: ! x : real argument (in,real) ! !DESCRIPTION: ! Returns the Fermi-Dirac approximation to the Dirac delta function ! $$ \tilde\delta(x)=\frac{e^{-x}}{(1+e^{-x})^2}. $$ ! ! !REVISION HISTORY: ! Created April 2003 (JKD) !EOP !BOC implicit none ! arguments real(8), intent(in) :: x ! local variables real(8) t1 if (abs(x).gt.50.d0) then sdelta_fd=0.d0 return end if t1=exp(-x) sdelta_fd=t1/((1.d0+t1)**2) return end function !EOC elk-2.3.22/src/PaxHeaders.22528/elk_silhouette.pdf0000644002504400250440000000005012337331324017712 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/elk_silhouette.pdf0000644002504400250440000001426212337331324020463 0ustar00dewhurstdewhurst00000000000000%PDF-1.4 %µí®û 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xœmš[Îì8r„ßµŠZ,ÞÉex ƒ<~¨y°½ÀñERªêÓƒFã?Ì’(2/‘‘IþÏq½øïÿùú\¯þßQ®yÖ1^i̳¥üú׫¤ël%½RgkIãz¦Y_©õ³­ªñ:ó¥7ªÆu¼Þ¯£äu^Y¢<ÎÒÇ«Ô|®V^IS­ò*ý:¯1_kž©V½PzÖT¯t]gZëõÑ #ŸõêÍsŽö*3EËIiž¹è£såjúB,Ss¬qêÁT´šš™£^éLCsÔzÖ•_õ*çJS ÏÔ«C²‘TXxÕ×¼î^ÎZSè3K³Ž‹ÉΖ­œ<oX9ZúÊgïÓãkæ—¢'<ƒô)måœÎ¹ª?¢É{z$Ej¨eþŒõ{Š7j }îÝæ,ýMm¾i1l¹X9þ¨,QfA#C¿ä4ÎKo¥§sIŸ9iÏz£e½ñ ß¶ÐÐÎïßK‘áx¿Ký²y®Rûëà ©YÝ2ÄÕûw )Ÿ)/ó9¯õ*W?»žÌ¹Ÿ×e#Kªû•Dí\½ù3lù;ÖjzþŽíË“„äHÒZ—J˜•ŸÒ”#4¾ûWÿ}ÿMòyý÷QG÷êkþí_/$Xx ô¿òËWszÆ2J•QnµEMî6åìUq´²–Š¿W«þÊïW“Wæ«áÌG+z4é•2Ï¢HPø(0ªÆ2põ+òM¯£H½SkoÄŽ|·¤3króÖæ9"ÙŒíµÖ¬_9³X"}NVÉ=M•ú‹«²÷ô<üSÑYõSY‰‡K8wm„ï°Dž&­ZEîþX.šZŠë²ÃžHNG”ÔQΫy"¢¤jꩨ¶ÀQ¡mÉ“géëm}2ïÑdçÌb I¯H ›.÷©Šs©¦]±%þfy,A§v¡Bìó+iyüå‰ÑêÏXÁœâ[’âïÁ7³´ÃްS»ªíÒÍVüÊW²’‡EÞØ,û@à noÄÎnIh§¤þ|¶)rójVg=Ùk³.fG’Úªµu ™›à–hÎÈ¿²¬¤h²›pay™ò4m:iޱlwLÙN›d½Ÿw–æèë[Ï{Šª˜Éþ>~¦yáÕ±’…5R Þó™&àè‚»|“‹·Ày/ì¿íu`Óó„œ6c¿g º&¿?¢WP¤¢Ÿ…(耟€7ï—°ìõÞ~Må„ ‡÷b[rj#[DÔ”<§l­üê4TÜ¡yÜj?Á9“Á´ué¶Kh}Ç1áû‘Ï7~!¨Ç«6¿Rœµð£ê !Û÷_mÙ±ÉIMÙ¿ÁÏÀŒ÷_$uuÏ/*xædØK̆äìù½†a³aoý¬<¥ïßÍ~_‘Szæl"$[Æä~|nTƒcÆI½MÙ^QS×r†@Ò:VÝðÞ„e›!vw4=>婸¿RÜ«LxD>¦ÌÙ c­K]!Ö¦Rüºfæ$] P€@«uH¬a=|¥n‰‚àݱ>Ñ”Y›Ÿ9‘#èèõî±þ0$l÷ðý§€ vøxCƒñ ¬Ä¦Ãø²£õ4Œü¸È’‡øAÙâ\Êê¯Nž&õ,ù®¾‹¼ñËíšRgİû½\æè `ÖÊ@ †yùàI˜3ILÕãU—'ßÌ1múçŠ}¾Nv‡ù|Ió+ÌqÒ;`»H Ž~° Ø ˆú8WÔd3îIœ`ª‡p¯;îñA²î+í7âØaÿc´ô1ÁÛ^V¿HZÒ!Làóˆšè)Ä­ Ž œ 5ð+87ѼÇL<€Ï#Ã¤Ž± ¤ñÀIö”zE<–üJ6h(OèWvÂ{+†–ZÌ@¡žœíâ0]ÜÁ©±›82¸ÂKÈí7Â÷êÜd»¸{<™·‹‡ÒWÄ’b6·ºyÀeŽØ»!\“ˆ64dÉ’yyõßÈîr#¢Þi8™[öw.œ$<è‰8Á´³”4ç ÛG±ÙõMÇ‚\ÙÎKh¹pKÌVý¸nE‡iŽ!ªçìò˜o€£>’Aˆ“õÉ%EÇ"ƒ˜ãOÑçç¡°ßwœ¼ža(‰Ì8ž¤€õÛ[‡,Yk{}ØºÕ x¬4›æ3µ°Ž¹:Ò®Ö¬²åÜ”ƒ1…c¸ìï8hÍñ§èždRP0j„»©x+ÁB7Äz; ñàc½âí7,…’(4Â8²ö€]¶ö…v4¤ALªÝCNõŒ¨÷µ= GÒ%nDD2Œ"·#{Üt¼vVÔ3"ÀZ´ñâ¯0wˆ©_ùŒs ’œ‰ †Ylkã?ãrnVŵHb+>OÔð¶='ãr%¬z[BÑNúÖñ+P•ðF~ÿ}ã2JÿŽÊãùÈVOld…–Ó•­‰¢¹ç®Z å6·Ó°‚—˜ÕÄ: Z¬³w›ŠÜœò_$I5û§àÏñû/>c0€:n´=Å‚HŒé]½í.¥ßT1†;dXõÏxÅ @Ð;L{å‡Dà ÝJÆ‹ì?”nÎ(ô³¤»+q3<¼ bÙ«1vN;¹Øø†j›ÙÇ4{"(Q3n(?Ì'Âa3ë'µ!aÏ·dËã×WG˜çðJ2~{7eòøùÆØÜ<–…R$ vŽ6¬µÛÏžáµ+“ñj¿} ¸ÄþŸéh½\0ZC¥š† ¤«fʵyÉhÝ }`7‚FogqAJ4ˆ_ûrÎ4?(aƒ¡áØãtìÑAz<» · pc^T h6Šó„5(•ñ¶ä™ª> :2´õU[°-½zTí»Ú(xºy@.pà¾\Ÿ?ùbR¸T-–ÚóFúZ– Ò3U-è=j2ƒ×ñwÑ€•Ži ^4”‰í7Ü—òµ*”kàüh{g6i_~)š_éû`îäQÌ0îIwhj†±Ûo·XÅeV2D’Ü®â])m8Šp‚ßÔtP¦BÕ„}4ù¦hf‘S¢7F=j.P—Óì=Öò$9(“Ü çÌß±wöó 4uY‚nøÒ Õˆ}ûý½ˆIŒ‚„¾žN5ZTËÉìÖdï„䎧–!xÜ®]º”cv51àþ5¨‰ç™âf,|þàÛß}À4BÙµN“Tµ¸Yt¢^ÚŒÀ€!”¥5{]LÂÖ&¤¾.—ëE õô´“$QÜ?mÆG5n“B!{·oEOT6~«ôQàæ´’`Þ¤¦" × ë½2¾L?¢|é¬BîB£¸ë‚«ÚKŠ{´~ÅÉS‚âLÕÑôE/VsCtwU+šã›‚Z¹™GiŠÒ®k+›ò÷«•,¢ô9é³FÛ¶Ñ\fY´£°l=”AåH»AÎî&­ô•!mmº°‡˜åY¬`÷&ýlEN2¨Ó_ }·Õh'0YîÅgô'¨°s£Â­4¸Ù+×8! ;ƒ·ä-ƒ&Ë5ôm í†\v¿VS¹Ÿ”sðT‹>|#q}{¯4â½Ñ6¬›»)NãfD·Úû¶%Ѱv íNZ¤IüsÐÏN»2Bä$åEËQQ &éŽþC\ä'‰¢ÙoT<œ–H53š¹‹j²¼Rk6®[ Õ¤EQ±H m/çÄ„“ Iè+rš!Š^2jR íV… t2 í§œ]q“Ø o´QjtZ UáN‚µr£:Áu…”EªýÆ0rTô;pl,Í'W2K×ÂOƒ<õˆÍÌ¥R–ìÒÎEcÚ{+ðú š’$¥3²(вhÙaâ‘6ØP˜+*Má[ ðê<;nÚºç{>希HZÏry§1ÕëLØÛ^@á_šŠBŒ^ô;îßAû‚¦»¤ï)$§ôåôF´Íã0VS›¹s^.»ËP.“F„,/L’RHê%’M/4Î@Þ$·wÿiOäùM²H]½T—Vtƒ8.ÑÜXЖ¨þZÂC Cu*éá~á ɯî@‚Øò%o®:S©“”šc²RqNé:腱ܚàÑ= R¬4Ÿ0åÕn‹&Vi†íZm(q#ýÝ=aÂÄu勜ú>ؤõ|QæqÚYoî€)(“²¶Ý”ªBÛHÊô÷‘NvšNôÕ xˆ^å8*;SЖ°Ç%ºdÃ;IÅˉÉÕLwv!rþwŸ$ú#ûtäÈÆàýFgŸ2ºßås³´)/µ0‡PYÆöNß¹DˆUƒ[õ$S½Ò8ªÈ'ú;Ÿ ·ú.àt¹Anz L%9~tŸá¸{%ú°Ä¤¶ïrÈEN³—¤8wc½€>q-î"H˜(é뮾8…R9 ÎÕC””8¯º@eŽÓyŽ›iòâós†•§Ùáòeo3dP*ÉÃ1G™Åé´û%z G2ÐûŽ•å2)±n £ŸèTkQ)ÊÌDëÀåv½"âE&sdKR ,É‚j[ALÝí‘{8Åj*+ÅíójU û¼^q¨¶£è$ZP3’® .}UL&K£&ÊÍÑš•ñ¸Ã&ï± ù:1ö`1%~Ùf´u©ÜÆ‹F‹î?—o&âÑr ª/Z¯ôá.ÇÞC|!Ê—?$?Ô]ˆo+A±@tÁçüàÃÏâýõ9{‰ž‘B˜4ÇÖ:ì8;ä1`qOÈhÐm1L¿‘ñ@s&¶1濚¿nAMQ)>ÃìßÇ©]`¹ÉAYT}eóÜ펲ì3Ünˆ³wa/¬(uºA²³×håÒ*bžI:ÒÄ×)P±ìÎ$’HÕϵš bƒös]¦{” zh¹µS® óÂ*"ž¶ÜpŽó%»¡sRtÙhÛÎbÇ.šï8nžaÙÙg«ïýXÅî3ßt—¡œÅY*9¢p|¹·—ɺo©–ÓâÊÇÚm ˆf‰¤OªÏô(9#±=WâÝ¥»Oæÿ‡<ÏeÔ(WÙÕ…Çvó·Ù³î—IÈÇ|›s@Åôïø˜´Ë(±‘U³üiÚK¸óÀ¸Ønð®æâ'í|ÀØÜŸË:\Õ?2-w¨‡ïnÙle{1Pý¦‰£ŒU–uËàBç¹ÄN¸ŠQÛck24Çɵfõ˜.Ö»ÜÌK6Nà¡eˆÒáHt¥†´•.fÇž)m%ŽälIÎ÷õ¶W©  æÉ©g“ô·yœ‰[U°h ŽÚ³½V´TòÖxgZ™c5s8Ö­ ¥FnmL—Æšj”6Öi³`œöW:ûÁj’‚“¾S‚I‡ï—t7›65©ÁYh§©Zæ®ظ‡ï[ðןïÑ´u¾Ï63ˆ=>(¨œÿЋ½G%ùv"–ÖVLQâ•DÐ÷~öpyž–¡—3l g$³ÐÁhœkú„¤Æ>â€,~ÐùÂv®e¸xU@²//,—4°Jº ÀÖ¨¾Hiƒ+»A¶ßÀ¼ ;PE¥´Â¿÷ýG׬-î7Ošà^7ð4™‘|Ëa¸aåÚTeƵɛÛã·-"ƼbgnRt?Ov¥í‘M>x“Ó°Ò[À£¾qزëˆGp Ao?ü1Œ+&`zÅ8ìÁ—"á¸ÑeÈ}š¹¿qp7€†'éŠË“Ywk#ng•Dö‡}†"e¸ô¡$QŽoyV{Ö=~;paF·ä¸ãüûʰ»ßSþ€ E9æKa€{Ça®ÕÈtë–3%Tâc‡rÛiïåã(öîdÎêV‹ˆ¡3oöýÂeD/ŽÀìtïyd7§FÛC8¸J¦Càd1Í8òˆ+”;¾“ÇE“)&cMÿ~7ºB5ûƪ´O çâç3nçõýùW[E-žoÀYh‘€35Æ6÷V#o!™—2=&·f€ ~LJ©eÙo Çy2…ºç¼»ŽŒá¹œ*µx¡¹ ‚=LÔ?ÏW‘ÀœS0šÑ×¢ IÆÌ¶?”ƒ»°3#7wšXEÃn yL̨ó+áúÃ=>Š£í÷•¼«y_^@Òˆ:6ôË[³e r·~ßÕü½·»½í¹ç8Áƒþ8 7ZQ£OB¦0Á4Ç ¾™Q|œÊCŽM†»yô-}náó×jIwñußæ0·§¹j»Æ¾»’)µ(Bè?t“-C0Ð]©*Ü×Qà?ÃÍ]¿ÒHd)Iô«6åc\ÝÇËt=•0}äkÇ#:bŒÝ/Dçwüþ›„1×½Ž_tãç)¶z]û ¹cù>PL9åóõ’ºY5í+ÚÉMò+?#®iz¾í‰œ÷lÁQÜ%Hû2h‰,Æ®KØ1GÝ¥|×ãaO>nײkôÜ<U"}/¸´Gq>%ŽRÓ§pWÛ}„ÁA§s4Èàt“Ū¯zË´$ÝKˆ ´€kØ·¦èFPÎBߨw*§ K[6qõ|¸Z}>÷ò}§¢å%Qs ;Äó¹šbíûÚ~…,¦h¥$÷Šéf•Õ•å[Ž2šµ»aùueÃÒ¬Øt|‹wqèuQØWʵ¯.Ôw69è´Br\¥¥Ï æ½ë}‡úíQ¾n„p•–^øUÝÇ>ªqc°Þwbè±ù’y‹žHïÑ)¡±òúÛô÷ëOÉçßHþÝÝõÿ:þóøâΜ endstream endobj 4 0 obj 5438 endobj 2 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> >> >> endobj 5 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 818.336792 550.414001 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 2 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 6 0 obj << /Creator (cairo 1.8.8 (http://cairographics.org)) /Producer (cairo 1.8.8 (http://cairographics.org)) >> endobj 7 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 8 0000000000 65535 f 0000005838 00000 n 0000005552 00000 n 0000000015 00000 n 0000005529 00000 n 0000005624 00000 n 0000005903 00000 n 0000006028 00000 n trailer << /Size 8 /Root 7 0 R /Info 6 0 R >> startxref 6080 %%EOF elk-2.3.22/src/PaxHeaders.22528/hmlaa.f900000644002504400250440000000005012337331323015600 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/hmlaa.f900000644002504400250440000000433712337331323016353 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: hmlaa ! !INTERFACE: subroutine hmlaa(ias,ngp,apwalm,ld,h) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! ias : joint atom and species number (in,integer) ! ngp : number of G+p-vectors (in,integer) ! apwalm : APW matching coefficients ! (in,complex(ngkmax,apwordmax,lmmaxapw,natmtot)) ! ld : leading dimension of h (in,integer) ! h : Hamiltonian matrix (inout,complex(*)) ! !DESCRIPTION: ! Calculates the APW-APW contribution to the Hamiltonian matrix. ! ! !REVISION HISTORY: ! Created October 2002 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: ias integer, intent(in) :: ngp complex(8), intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot) integer, intent(in) :: ld complex(8), intent(inout) :: h(*) ! local variables integer is,io,jo integer l1,l2,l3,m1,m2,m3 integer lm1,lm2,lm3 real(8) t1 complex(8) z1,zsum ! automatic arrays complex(8) x(ngp) is=idxis(ias) lm1=0 do l1=0,lmaxmat do m1=-l1,l1 lm1=lm1+1 do io=1,apword(l1,is) x(:)=0.d0 lm3=0 do l3=0,lmaxmat do m3=-l3,l3 lm3=lm3+1 do jo=1,apword(l3,is) zsum=0.d0 do l2=0,lmaxvr if (mod(l1+l2+l3,2).eq.0) then do m2=-l2,l2 lm2=idxlm(l2,m2) zsum=zsum+gntyry(lm1,lm2,lm3)*haa(lm2,jo,l3,io,l1,ias) end do end if end do if (abs(dble(zsum))+abs(aimag(zsum)).gt.1.d-14) then call zaxpy(ngp,zsum,apwalm(:,jo,lm3,ias),1,x,1) end if end do end do end do call zher2i(ngp,zone,apwalm(:,io,lm1,ias),x,ld,h) end do end do end do ! kinetic surface contribution t1=0.5d0*rmt(is)**2 lm1=0 do l1=0,lmaxmat do m1=-l1,l1 lm1=lm1+1 do io=1,apword(l1,is) do jo=1,apword(l1,is) z1=t1*apwfr(nrmt(is),1,io,l1,ias)*apwdfr(jo,l1,ias) call zher2i(ngp,z1,apwalm(:,io,lm1,ias),apwalm(:,jo,lm1,ias),ld,h) end do end do end do end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/rlmrot.f900000644002504400250440000000005012337331323016035 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rlmrot.f900000644002504400250440000000757412337331323016616 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2008 J. K. Dewhurst, S. Sharma and E. K. U. Gross ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rlmrot ! !INTERFACE: subroutine rlmrot(p,ang,lmax,ld,d) ! !INPUT/OUTPUT PARAMETERS: ! p : if p=-1 then the rotation matrix is improper (in,integer) ! ang : Euler angles; alpha, beta, gamma (in,real(3)) ! lmax : maximum angular momentum (in,integer) ! ld : leading dimension (in,integer) ! d : real spherical harmonic rotation matrix (out,real(ld,*)) ! !DESCRIPTION: ! Returns the rotation matrix in the basis of real spherical harmonics given ! the three Euler angles, $(\alpha,\beta,\gamma)$, and the parity, $p$, of the ! rotation. The matrix is determined using the formula of V. V. Nechaev, ! [{\it J. Struct. Chem.} {\bf 35}, 115 (1994)], suitably modified for our ! definition of the real spherical harmonics ($m_1>0$, $m_2>0$): ! \begin{align*} ! &\Delta^l_{00}=d^l_{00}, \\ ! &\Delta^l_{m_10}=\sqrt{2}\,(-1)^{m_1}d^l_{0m_1}\cos(m_1\alpha), \\ ! &\Delta^l_{0m_2}=\sqrt{2}\,(-1)^{m_2}d^l_{m_20}\cos(m_2\gamma), \\ ! &\Delta^l_{-m_10}=-\sqrt{2}\,d^l_{0m_1}\sin(m_1\alpha), \\ ! &\Delta^l_{0-m_2}=\sqrt{2}\,d^l_{m_20}\sin(m_2\gamma), \\ ! &\Delta^l_{m_1m_2}=(-1)^{m_1}(-1)^{m_2}\{\cos(m_1\alpha)\cos(m_2\gamma) ! [d_A+d_B]-\sin(m_1\alpha)\sin(m_2\gamma)[d_A-d_B]\}, \\ ! &\Delta^l_{m_1-m_2}=(-1)^{m_1}\{\sin(m_1\alpha)\cos(m_2\gamma) ! [d_A-d_B]+\cos(m_1\alpha)\sin(m_2\gamma)[d_A+d_B]\}, \\ ! &\Delta^l_{-m_1m_2}=-(-1)^{m_2}\{\sin(m_1\alpha)\cos(m_2\gamma) ! [d_A+d_B]+\cos(m_1\alpha)\sin(m_2\gamma)[d_A-d_B]\}, \\ ! &\Delta^l_{-m_1-m_2}=\cos(m_1\alpha)\cos(m_2\gamma) ! [d_A-d_B]-\sin(m_1\alpha)\sin(m_2\gamma)[d_A+d_B], ! \end{align*} ! where $d_A\equiv d^l_{-m_1-m_2}$, $d_B\equiv(-1)^{m_1}d^l_{m_1-m_2}$ and ! $d$ is the rotation matrix about the $y$-axis for complex spherical ! harmonics. See the routines {\tt genrlm}, {\tt roteuler} and {\tt ylmroty}. ! ! !REVISION HISTORY: ! Created December 2008 (JKD) !EOP !BOC implicit none ! arguments integer, intent(in) :: p real(8), intent(in) :: ang(3) integer, intent(in) :: lmax integer, intent(in) :: ld real(8), intent(out) :: d(ld,*) ! local variables integer lmmax,l,m1,m2,lm,lm0 real(8), parameter :: sqtwo=1.4142135623730950488d0 real(8) s1,s2,t1,t2,t3,t4,t5,t6,t7,t8 ! automatic arrays integer lmi(-lmax:lmax) real(8) ca(lmax),sa(lmax),cg(lmax),sg(lmax) ! allocatable arrays real(8), allocatable :: dy(:,:) if (lmax.lt.0) then write(*,*) write(*,'("Error(rlmrot): lmax < 0 : ",I8)') lmax write(*,*) stop end if lmmax=(lmax+1)**2 allocate(dy(lmmax,lmmax)) ! generate the complex spherical harmonic rotation matrix about the y-axis call ylmroty(ang(2),lmax,lmmax,dy) do m1=1,lmax ca(m1)=cos(dble(m1)*ang(1)) sa(m1)=sin(dble(m1)*ang(1)) cg(m1)=cos(dble(m1)*ang(3)) sg(m1)=sin(dble(m1)*ang(3)) end do lm=0 do l=0,lmax do m1=-l,l lm=lm+1 lmi(m1)=lm end do lm0=lmi(0) d(lm0,lm0)=dy(lm0,lm0) do m1=1,l s1=1.d0 if (mod(m1,2).ne.0) s1=-1.d0 t1=sqtwo*dy(lm0,lmi(m1)) t2=sqtwo*dy(lmi(m1),lm0) d(lmi(m1),lm0)=s1*t1*ca(m1) d(lm0,lmi(m1))=s1*t2*cg(m1) d(lmi(-m1),lm0)=-t1*sa(m1) d(lm0,lmi(-m1))=t2*sg(m1) do m2=1,l s2=1.d0 if (mod(m2,2).ne.0) s2=-1.d0 t1=ca(m1)*cg(m2) t2=sa(m1)*sg(m2) t3=sa(m1)*cg(m2) t4=ca(m1)*sg(m2) t5=dy(lmi(-m1),lmi(-m2)) t6=s1*dy(lmi(m1),lmi(-m2)) t7=t5+t6 t8=t5-t6 d(lmi(m1),lmi(m2))=s1*s2*(t1*t7-t2*t8) d(lmi(m1),lmi(-m2))=s1*(t3*t8+t4*t7) d(lmi(-m1),lmi(m2))=-s2*(t3*t7+t4*t8) d(lmi(-m1),lmi(-m2))=t1*t8-t2*t7 end do end do if ((p.eq.-1).and.(mod(l,2).ne.0)) then do m1=-l,l do m2=-l,l d(lmi(m1),lmi(m2))=-d(lmi(m1),lmi(m2)) end do end do end if end do deallocate(dy) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/sfacrho.f900000644002504400250440000000005012337331324016144 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/sfacrho.f900000644002504400250440000000472212337331324016715 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 A. I. Baranov and F. Wagner. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: sfacrho ! !INTERFACE: subroutine sfacrho ! !USES: use modmain use modpw ! !DESCRIPTION: ! Outputs X-ray structure factors, i.e. the Fourier transform coefficients of ! the total electron density ! $$ F({\bf H})=\int_{\Omega}d^3r\,\rho({\bf r})e^{i{\bf H}\cdot{\bf r}}, $$ ! to the file {\tt SFACRHO.OUT}. The lattice coordinates $(h,k,l)$ of the ! $\bf H$-vectors in this file are transformed by the matrix {\tt vhmat}. If ! and energy window is set using the variable {\tt wsfac}, then only those ! states within the window are used to compute the density. See also routines ! {\tt zftrf} and {\tt genhvec}. ! ! !REVISION HISTORY: ! Created July 2010 (Alexey I. Baranov) ! Added multiplicity of the H-vectors, Oct. 2010 (Alexey I. Baranov) !EOP !BOC implicit none ! local variables integer ih,iv(3) real(8) v(3),a,b,r ! allocatable arrays complex(8), allocatable :: zrhoh(:) ! initialise the structure factor specific variables call sfacinit ! calculate the density structure factors allocate(zrhoh(nhvec)) call zftrf(nhvec,ivh,vhc,rhomt,rhoir,zrhoh) open(50,file='SFACRHO.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("h k l indices transformed by vhmat matrix:")') write(50,'(3G18.10)') vhmat(:,1) write(50,'(3G18.10)') vhmat(:,2) write(50,'(3G18.10)') vhmat(:,3) write(50,*) write(50,'(" h k l multipl. |H| Re(F)& & Im(F) |F|")') write(50,*) do ih=1,nhvec ! apply transformation matrix v(:)=vhmat(:,1)*dble(ivh(1,ih)) & +vhmat(:,2)*dble(ivh(2,ih)) & +vhmat(:,3)*dble(ivh(3,ih)) ! in crystallography the forward Fourier transform of real-space density is ! usually done with positive phase and without 1/omega prefactor a=dble(zrhoh(ih))*omega b=-aimag(zrhoh(ih))*omega r=abs(zrhoh(ih))*omega iv(:)=nint(v(:)) if ((abs(v(1)-iv(1)).le.epslat).and. & (abs(v(2)-iv(2)).le.epslat).and. & (abs(v(3)-iv(3)).le.epslat)) then ! integer hkl write(50,'(4I7,4G16.8)') iv(:),mulh(ih),hc(ih),a,b,r else ! non-integer hkl write(50,'(3F7.2,I7,4G16.8)') v(:),mulh(ih),hc(ih),a,b,r end if end do deallocate(zrhoh) close(50) write(*,*) write(*,'("Info(sfacrho): density structure factors written to SFACRHO.OUT")') write(*,*) write(*,'(" Energy window : ",2G18.10)') wsfac(:) return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/genjlgpr.f900000644002504400250440000000005012337331323016326 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genjlgpr.f900000644002504400250440000000121612337331323017072 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2006 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine genjlgpr(lmax,gpc,jlgpr) use modmain implicit none ! arguments integer, intent(in) :: lmax real(8), intent(in) :: gpc(ngvec) real(8), intent(out) :: jlgpr(0:lmax,ngvec,nspecies) ! local variables integer is,ig real(8) t1 !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(ig,t1) !$OMP DO do is=1,nspecies do ig=1,ngvec t1=gpc(ig)*rmt(is) call sbessel(lmax,t1,jlgpr(:,ig,is)) end do end do !$OMP END DO !$OMP END PARALLEL return end subroutine elk-2.3.22/src/PaxHeaders.22528/zfmtinp.f900000644002504400250440000000005012337331323016205 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/zfmtinp.f900000644002504400250440000000566012337331323016760 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: zfmtinp ! !INTERFACE: complex(8) function zfmtinp(tsh,nr,nri,r,zfmt1,zfmt2) ! !USES: use modmain ! !INPUT/OUTPUT PARAMETERS: ! tsh : .true. if the functions are in spherical harmonics (in,logical) ! nr : number of radial mesh points (in,integer) ! nri : number of points on the inner part of the muffin-tin (in,integer) ! r : radial mesh (in,real(nr)) ! zfmt1 : first complex muffin-tin function in spherical harmonics or ! coordinates (in,complex(lmmaxvr,nr)) ! zfmt2 : second complex muffin-tin function in spherical harmonics or ! coordinates (in,complex(lmmaxvr,nr)) ! !DESCRIPTION: ! Calculates the inner product of two complex fuctions in the muffin-tin. In ! other words, given two complex functions of the form ! $$ f({\bf r})=\sum_{l=0}^{l_{\rm max}}\sum_{m=-l}^{l}f_{lm}(r)Y_{lm} ! (\hat{\bf r}), $$ ! the function returns ! $$ I=\sum_{l=0}^{l_{\rm max}}\sum_{m=-l}^{l}\int f_{lm}^{1*}(r) ! f_{lm}^2(r)r^2\,dr\;. $$ ! Note that if {\tt tsh} is {\tt .false.} the functions are in spherical ! coordinates rather than spherical harmonics. In this case $I$ is multiplied ! by $4\pi/(l_{\rm max}+1)^2$. ! ! !REVISION HISTORY: ! Created November 2003 (Sharma) ! Modified, September 2013 (JKD) !EOP !BOC implicit none ! arguments logical, intent(in) :: tsh integer, intent(in) :: nr,nri real(8), intent(in) :: r(nr) complex(8), intent(in) :: zfmt1(lmmaxvr,nr),zfmt2(lmmaxvr,nr) ! local variables integer nr0,ir0,ir real(8) t1 complex(8) z1 ! automatic arrays real(8) fr1(nr),fr2(nr),gr(nr) ! external functions complex(8) zdotc external zdotc if (tsh) then ! functions are in spherical harmonics do ir=1,nri z1=zdotc(lmmaxinr,zfmt1(:,ir),1,zfmt2(:,ir),1)*(r(ir)**2) fr1(ir)=dble(z1) fr2(ir)=aimag(z1) end do do ir=nri+1,nr z1=zdotc(lmmaxvr,zfmt1(:,ir),1,zfmt2(:,ir),1)*(r(ir)**2) fr1(ir)=dble(z1) fr2(ir)=aimag(z1) end do call fderiv(-1,nr,r,fr1,gr) t1=gr(nr) call fderiv(-1,nr,r,fr2,gr) zfmtinp=cmplx(t1,gr(nr),8) else ! functions are in spherical coordinates if (nri.gt.0) then do ir=1,nri z1=zdotc(lmmaxinr,zfmt1(:,ir),1,zfmt2(:,ir),1)*(r(ir)**2) fr1(ir)=dble(z1) fr2(ir)=aimag(z1) end do call fderiv(-1,nri,r,fr1,gr) t1=gr(nri) call fderiv(-1,nri,r,fr2,gr) zfmtinp=(fourpi/dble(lmmaxinr))*cmplx(t1,gr(nri),8) else zfmtinp=0.d0 end if nr0=nr-nri if (nr0.eq.0) return ir0=nri+1 do ir=ir0,nr z1=zdotc(lmmaxvr,zfmt1(:,ir),1,zfmt2(:,ir),1)*(r(ir)**2) fr1(ir)=dble(z1) fr2(ir)=aimag(z1) end do call fderiv(-1,nr0,r(ir0),fr1(ir0),gr(ir0)) t1=gr(nr) call fderiv(-1,nr0,r(ir0),fr2(ir0),gr(ir0)) zfmtinp=zfmtinp+(fourpi/dble(lmmaxvr))*cmplx(t1,gr(nr),8) end if return end function !EOC elk-2.3.22/src/PaxHeaders.22528/findsym.f900000644002504400250440000000005012337331323016167 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findsym.f900000644002504400250440000001316312337331323016737 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: findsym ! !INTERFACE: subroutine findsym(apl1,apl2,nsym,lspl,lspn,iea) ! !USES: use modmain use moddftu ! !INPUT/OUTPUT PARAMETERS: ! apl1 : first set of atomic positions in lattice coordinates ! (in,real(3,maxatoms,maxspecies)) ! apl2 : second set of atomic positions in lattice coordinates ! (in,real(3,maxatoms,maxspecies)) ! nsym : number of symmetries (out,integer) ! lspl : spatial rotation element in lattice point group for each symmetry ! (out,integer(48)) ! lspn : spin rotation element in lattice point group for each symmetry ! (out,integer(48)) ! iea : equivalent atom index for each symmetry ! (out,integer(iea(natmmax,nspecies,48)) ! !DESCRIPTION: ! Finds the symmetries which rotate one set of atomic positions into another. ! Both sets of positions differ only by a translation vector and have the same ! muffin-tin magnetic fields (stored in the global array {\tt bfcmt}). Any ! symmetry element consists of a spatial rotation of the atomic position ! vectors followed by a global magnetic rotation: $\{\alpha_S|\alpha_R\}$. In ! the case of spin-orbit coupling $\alpha_S=\alpha_R$. The symmetries are ! returned as indices of elements in the Bravais lattice point group. An ! index to equivalent atoms is stored in the array {\tt iea}. ! ! !REVISION HISTORY: ! Created April 2007 (JKD) ! Fixed use of proper rotations for spin, February 2008 (L. Nordstrom) !EOP !BOC implicit none ! arguments real(8), intent(in) :: apl1(3,maxatoms,maxspecies) real(8), intent(in) :: apl2(3,maxatoms,maxspecies) integer, intent(out) :: nsym integer, intent(out) :: lspl(48) integer, intent(out) :: lspn(48) integer, intent(out) :: iea(natmmax,nspecies,48) ! local variables integer isym,jsym,jsym0,jsym1 integer is,ia,ias,ja,jas,md,n real(8) sl(3,3),sc(3,3),v(3),t1 ! automatic arrays integer jea(natmmax,nspecies) real(8) apl3(3,natmmax) ! allocatable arrays complex(8), allocatable :: dmat(:,:,:,:) ! external functions real(8) dnrm2 external dnrm2 nsym=0 ! loop over lattice symmetries (spatial rotations) do isym=1,nsymlat ! make real copy of lattice rotation symmetry sl(:,:)=dble(symlat(:,:,isym)) ! loop over species do is=1,nspecies ! map apl1 coordinates to [0,1) and store in apl3 do ia=1,natoms(is) apl3(:,ia)=apl1(:,ia,is) call r3frac(epslat,apl3(:,ia)) end do do ja=1,natoms(is) ! apply lattice symmetry to atomic positions v(:)=sl(:,1)*apl2(1,ja,is)+sl(:,2)*apl2(2,ja,is)+sl(:,3)*apl2(3,ja,is) ! map coordinates to [0,1) call r3frac(epslat,v) ! check if atomic positions are invariant do ia=1,natoms(is) t1=abs(apl3(1,ia)-v(1))+abs(apl3(2,ia)-v(2))+abs(apl3(3,ia)-v(3)) if (t1.lt.epslat) then ! equivalent atom index jea(ia,is)=ja goto 10 end if end do ! not invariant so try new spatial rotation goto 40 10 continue end do end do ! all atomic positions invariant at this point jsym=1 ! spin polarised case if (spinpol) then ! check invariance of magnetic fields under global spin rotation if (spinorb) then ! with spin-orbit coupling spin rotation equals spatial rotation jsym0=isym jsym1=isym else ! without spin-orbit coupling spin rotation independent of spatial rotation jsym0=1 jsym1=nsymlat end if do jsym=jsym0,jsym1 ! determinant of the symmetry matrix md=symlatd(jsym) sc(:,:)=dble(md)*symlatc(:,:,jsym) ! rotate global field and check invariance using proper part of symmetry matrix v(:)=sc(:,1)*bfieldc0(1)+sc(:,2)*bfieldc0(2)+sc(:,3)*bfieldc0(3) t1=abs(bfieldc0(1)-v(1))+abs(bfieldc0(2)-v(2))+abs(bfieldc0(3)-v(3)) ! if not invariant try a different global spin rotation if (t1.gt.epslat) goto 20 ! rotate muffin-tin magnetic fields and check invariance do is=1,nspecies do ia=1,natoms(is) ! equivalent atom ja=jea(ia,is) v(:)=sc(:,1)*bfcmt0(1,ja,is) & +sc(:,2)*bfcmt0(2,ja,is) & +sc(:,3)*bfcmt0(3,ja,is) t1=abs(bfcmt0(1,ia,is)-v(1)) & +abs(bfcmt0(2,ia,is)-v(2)) & +abs(bfcmt0(3,ia,is)-v(3)) ! if not invariant try a different global spin rotation if (t1.gt.epslat) goto 20 end do end do ! all fields invariant goto 30 20 continue ! end loop over global spin rotations end do ! magnetic fields not invariant so try different spatial rotation goto 40 end if 30 continue ! check invariance of density matrices for fixed tensor moment calculations if (ftmtype.ne.0) then allocate(dmat(lmmaxdm,nspinor,lmmaxdm,nspinor)) n=2*(lmmaxdm*nspinor)**2 do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! equivalent atom ja=jea(ia,is) jas=idxas(ja,is) ! rotate the fixed tensor moment density matrix dmat(:,:,:,:)=0.d0 call rotdmat(symlatc(:,:,isym),symlatc(:,:,jsym),lmaxdm,nspinor, & lmmaxdm,dmftm(:,:,:,:,jas),dmat) ! check invariance call daxpy(n,-1.d0,dmftm(:,:,:,:,ias),1,dmat,1) t1=dnrm2(n,dmat,1)/dble(n) if (t1.gt.epslat) then deallocate(dmat) goto 40 end if end do end do deallocate(dmat) end if ! everything invariant so add symmetry to set nsym=nsym+1 lspl(nsym)=isym lspn(nsym)=jsym do is=1,nspecies do ia=1,natoms(is) iea(ia,is,nsym)=jea(ia,is) end do end do 40 continue ! end loop over spatial rotations end do return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/zfftifc_mkl.f900000644002504400250440000000005012337331324017015 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/zfftifc_mkl.f900000644002504400250440000000167512337331324017572 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine zfftifc(nd,n,sgn,z) use mkl_dfti implicit none ! arguments integer, intent(in) :: nd integer, intent(in) :: n(nd) integer, intent(in) :: sgn complex(8), intent(inout) :: z(*) ! local variables integer status,i,p real(8) t1 type(DFTI_DESCRIPTOR), pointer :: handle ! interface to the Intel MKL advanced Discreet Fourier Transform (DFT) routines ! (with thanks to Torbjorn Bjorkman) p=1 do i=1,nd p=p*n(i) end do t1=1.d0/dble(p) status=DftiCreateDescriptor(handle,DFTI_DOUBLE,DFTI_COMPLEX,nd,n) status=DftiSetValue(handle,DFTI_FORWARD_SCALE,t1) status=DftiCommitDescriptor(handle) if (sgn.eq.-1) then status=DftiComputeForward(handle,z) else status=DftiComputeBackward(handle,z) end if status=DftiFreeDescriptor(handle) return end subroutine elk-2.3.22/src/PaxHeaders.22528/writelsj.f900000644002504400250440000000005012337331323016361 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writelsj.f900000644002504400250440000001330412337331323017126 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2007 J. K. Dewhurst, S. Sharma, C. Ambrosch-Draxl and ! F. Cricchio. This file is distributed under the terms of the GNU General ! Public License. See the file COPYING for license details. subroutine writelsj use modmain implicit none ! local variables integer kst,ik,ist,lm integer ispn,is,ia,ias real(8) xl(3),xs(3),t1 ! allocatable arrays complex(8), allocatable :: apwalm(:,:,:,:,:) complex(8), allocatable :: evecfv(:,:,:),evecsv(:,:) complex(8), allocatable :: dmat1(:,:,:,:,:),dmat2(:,:,:,:,:) complex(8), allocatable :: zlflm(:,:) ! initialise universal variables call init0 call init1 allocate(apwalm(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)) allocate(evecfv(nmatmax,nstfv,nspnfv),evecsv(nstsv,nstsv)) allocate(dmat1(lmmaxvr,nspinor,lmmaxvr,nspinor,natmtot)) allocate(dmat2(lmmaxvr,nspinor,lmmaxvr,nspinor,nstsv)) allocate(zlflm(lmmaxvr,3)) ! read density and potentials from file call readstate ! find the new linearisation energies call linengy ! generate the APW radial functions call genapwfr ! generate the local-orbital radial functions call genlofr if (task.eq.15) then ! compute total L, S and J dmat1(:,:,:,:,:)=0.d0 do ik=1,nkpt ! get the eigenvectors and occupancies from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) call getoccsv(vkl(:,ik),occsv(:,ik)) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! loop over species and atoms do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! generate the density matrix call gendmat(.false.,.false.,0,lmaxvr,ias,ngk(:,ik),apwalm,evecfv, & evecsv,lmmaxvr,dmat2) do ist=1,nstsv t1=wkpt(ik)*occsv(ist,ik) dmat1(:,:,:,:,ias)=dmat1(:,:,:,:,ias)+t1*dmat2(:,:,:,:,ist) end do end do end do ! end loop over k-points end do ! symmetrise the density matrix call symdmat(lmaxvr,lmmaxvr,dmat1) open(50,file='LSJ.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("Expectation values are computed only over the muffin-tin")') ! loop over species and atoms do is=1,nspecies write(50,*) write(50,'("Species : ",I4," (",A,")")') is,trim(spsymb(is)) do ia=1,natoms(is) ias=idxas(ia,is) ! compute tr(LD) xl(:)=0.d0 do ispn=1,nspinor do lm=1,lmmaxvr call lopzflm(lmaxvr,dmat1(:,ispn,lm,ispn,ias),lmmaxvr,zlflm) xl(:)=xl(:)+dble(zlflm(lm,:)) end do end do ! compute tr(sigma D) xs(:)=0.d0 if (spinpol) then do lm=1,lmmaxvr xs(1)=xs(1)+dble(dmat1(lm,2,lm,1,ias)+dmat1(lm,1,lm,2,ias)) xs(2)=xs(2)+dble(-zi*dmat1(lm,2,lm,1,ias)+zi*dmat1(lm,1,lm,2,ias)) xs(3)=xs(3)+dble(dmat1(lm,1,lm,1,ias)-dmat1(lm,2,lm,2,ias)) end do end if ! S = 1/2 sigma xs(:)=0.5d0*xs(:) write(50,'(" atom : ",I4)') ia write(50,'(" L : ",3G18.10)') xl(:) write(50,'(" S : ",3G18.10)') xs(:) write(50,'(" J : ",3G18.10)') xl(:)+xs(:) ! end loop over atoms and species end do end do close(50) write(*,*) write(*,'("Info(writelsj):")') write(*,'(" total L, S and J expectation values written to LSJ.OUT")') else ! compute L, S and J for all states in kstlist open(50,file='LSJ_KST.OUT',action='WRITE',form='FORMATTED') write(50,*) write(50,'("Expectation values are computed only over the muffin-tin")') do kst=1,nkstlist ik=kstlist(1,kst) ist=kstlist(2,kst) if ((ik.le.0).or.(ik.gt.nkpt)) then write(*,*) write(*,'("Error(writelsj): k-point out of range : ",I8)') ik write(*,*) stop end if if ((ist.le.0).or.(ist.gt.nstsv)) then write(*,*) write(*,'("Error(writelsj): state out of range : ",I8)') ist write(*,*) stop end if ! get the eigenvectors and occupancies from file call getevecfv(vkl(:,ik),vgkl(:,:,:,ik),evecfv) call getevecsv(vkl(:,ik),evecsv) call getoccsv(vkl(:,ik),occsv(:,ik)) ! find the matching coefficients do ispn=1,nspnfv call match(ngk(ispn,ik),gkc(:,ispn,ik),tpgkc(:,:,ispn,ik), & sfacgk(:,:,ispn,ik),apwalm(:,:,:,:,ispn)) end do ! loop over species and atoms do is=1,nspecies do ia=1,natoms(is) ias=idxas(ia,is) ! generate the density matrix call gendmat(.false.,.false.,0,lmaxvr,ias,ngk(:,ik),apwalm,evecfv, & evecsv,lmmaxvr,dmat2) ! compute tr(LD) xl(:)=0.d0 do ispn=1,nspinor do lm=1,lmmaxvr call lopzflm(lmaxvr,dmat2(:,ispn,lm,ispn,ist),lmmaxvr,zlflm) xl(:)=xl(:)+dble(zlflm(lm,:)) end do end do ! compute tr(sigma D) xs(:)=0.d0 if (spinpol) then do lm=1,lmmaxvr xs(1)=xs(1)+dble(dmat2(lm,2,lm,1,ist)+dmat2(lm,1,lm,2,ist)) xs(2)=xs(2)+dble(-zi*dmat2(lm,2,lm,1,ist)+zi*dmat2(lm,1,lm,2,ist)) xs(3)=xs(3)+dble(dmat2(lm,1,lm,1,ist)-dmat2(lm,2,lm,2,ist)) end do else xs(3)=1.d0 end if ! S = 1/2 sigma xs(:)=0.5d0*xs(:) write(50,*) write(50,'("k-point : ",I6,3G18.10)') ik,vkl(:,ik) write(50,'("state : ",I6)') ist write(50,'("species : ",I4," (",A,"), atom : ",I4)') is, & trim(spsymb(is)),ia write(50,'(" L : ",3G18.10)') xl(:) write(50,'(" S : ",3G18.10)') xs(:) write(50,'(" J : ",3G18.10)') xl(:)+xs(:) end do end do end do close(50) write(*,*) write(*,'("Info(writelsj):")') write(*,'(" L, S and J expectation values for each k-point and state")') write(*,'(" in kstlist written to LSJ_KST.OUT")') end if deallocate(apwalm,evecfv,evecsv,dmat1,dmat2,zlflm) return end subroutine elk-2.3.22/src/PaxHeaders.22528/findqpt.f900000644002504400250440000000005012337331323016163 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/findqpt.f900000644002504400250440000000203512337331323016727 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine findqpt(vpl,isym,iq) use modmain implicit none ! arguments real(8), intent(in) :: vpl(3) integer, intent(out) :: isym integer, intent(out) :: iq ! local variables integer ivp(3),lspl real(8) v1(3),v2(3),t1 ivp(:)=nint(vpl(:)*ngridq(:)) ivp(:)=modulo(ivp(:),ngridq(:)) iq=iqmap(ivp(1),ivp(2),ivp(3)) v1(:)=vql(:,iq) call r3frac(epslat,v1) ! find the symmetry which maps vpl to q-point iq do isym=1,nsymcrys lspl=lsplsymc(isym) ! multiply vpl by the transpose of the symmetry matrix v2(:)=symlat(1,:,lspl)*vpl(1) & +symlat(2,:,lspl)*vpl(2) & +symlat(3,:,lspl)*vpl(3) call r3frac(epslat,v2) t1=abs(v1(1)-v2(1))+abs(v1(2)-v2(2))+abs(v1(3)-v2(3)) if (t1.lt.epslat) return end do write(*,*) write(*,'("Error(findqpt): equivalent q-point not in set")') write(*,'(" Requested q-point : ",3G18.10)') vpl write(*,*) stop end subroutine elk-2.3.22/src/PaxHeaders.22528/gendcfun.f900000644002504400250440000000005012337331324016310 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/gendcfun.f900000644002504400250440000000110512337331324017051 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine gendcfun use modmain use modphonon implicit none ! local variables integer ig real(8) t1,t2 complex(8) z1,z2 do ig=1,ngtot t1=-dot_product(vgqc(:,ig),atposc(:,iaph,isph)) t2=ffacgq(ig,isph)*vgqc(ipph,ig) z1=t2*cmplx(cos(t1),sin(t1),8) z2=cmplx(-aimag(z1),dble(z1),8) dcfunig(ig)=z2 dcfunir(igfft(ig))=z2 end do call zfftifc(3,ngridg,1,dcfunir) return end subroutine elk-2.3.22/src/PaxHeaders.22528/genylm.f900000644002504400250440000000005012337331323016011 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/genylm.f900000644002504400250440000000434712337331323016565 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: genylm ! !INTERFACE: subroutine genylm(lmax,tp,ylm) ! !INPUT/OUTPUT PARAMETERS: ! lmax : maximum angular momentum (in,integer) ! tp : (theta, phi) coordinates (in,real(2)) ! ylm : array of spherical harmonics (out,complex((lmax+1)**2)) ! !DESCRIPTION: ! Generates a sequence of spherical harmonics, including the Condon-Shortley ! phase, evaluated at angles $(\theta,\phi)$ for $0 2*l : ",2I8)') k,2*l write(*,*) stop end if if ((p.lt.0).or.(p.gt.1)) then write(*,*) write(*,'("Error(tm2todm): p should be 0 or 1 : ",I8)') p write(*,*) stop end if ! factors n_lk and n_sp; Eq. (21) in article nlk=factnm(2*l,1)/sqrt(factnm(2*l-k,1)*factnm(2*l+k+1,1)) nsp=1.d0/sqrt(factnm(2+p,1)) t1=dble((2*k+1)*(2*p+1))*nlk*nsp ! compute density matrix from 2-index tensor moment dmat(:,:,:,:)=0.d0 do x=-k,k do y=-p,p do ispn=1,nspinor do jspn=1,nspinor t2=t1*wigner3jf(1,2*p,1,2*jspn-3,2*y,3-2*ispn) lm1=l**2 do m1=-l,l lm1=lm1+1 lm2=l**2 do m2=-l,l lm2=lm2+1 t3=t2*dble((-1)**(m2-l+jspn-1))*wigner3j(l,k,l,-m2,x,m1) dmat(lm1,ispn,lm2,jspn)=dmat(lm1,ispn,lm2,jspn)+t3*tm2(x,y) end do end do end do end do end do end do return end subroutine elk-2.3.22/src/PaxHeaders.22528/readinput.f900000644002504400250440000000005012337331323016511 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/readinput.f900000644002504400250440000011121412337331323017255 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2008 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: readinput ! !INTERFACE: subroutine readinput ! !USES: use modmain use moddftu use modrdm use modphonon use modtest use modrandom use modscdft use modpw use modtddft use modvars ! !DESCRIPTION: ! Reads in the input parameters from the file {\tt elk.in}. Also sets default ! values for the input parameters. ! ! !REVISION HISTORY: ! Created September 2002 (JKD) !EOP !BOC implicit none ! local variables logical nosym,highq integer is,ia,ias,iostat integer i,j,k,l,n,p real(8) sc,sc1,sc2,sc3 real(8) solscf,zn,a,b real(8) axang(4),rot(3,3) real(8) v1(3),v2(3),t1 character(256) block,symb,str !------------------------! ! default values ! !------------------------! ntasks=1 tasks(1)=-1 avec(:,:)=0.d0 avec(1,1)=1.d0 avec(2,2)=1.d0 avec(3,3)=1.d0 sc=1.d0 sc1=1.d0 sc2=1.d0 sc3=1.d0 epslat=1.d-6 primcell=.false. tshift=.true. ngridk(:)=1 vkloff(:)=0.d0 autokpt=.false. radkpt=30.d0 reducek=1 ngridq(:)=1 reduceq=1 rgkmax=7.d0 gmaxvr=12.d0 lmaxapw=8 lmaxvr=7 lmaxmat=6 lmaxinr=3 fracinr=0.1d0 trhonorm=.true. xctype(1)=3 xctype(2)=0 xctype(3)=0 stype=3 swidth=0.001d0 autoswidth=.false. mstar=10.d0 epsocc=1.d-8 epschg=1.d-3 nempty0=4.d0 maxscl=200 mixtype=1 beta0=0.05d0 betamax=1.d0 mixsdp=3 ! Broyden parameters recommended by M. Meinert mixsdb=5 broydpm(1)=0.4d0 broydpm(2)=0.15d0 epspot=1.d-6 epsengy=1.d-4 epsforce=5.d-3 epsstress=1.d-3 molecule=.false. nspecies=0 natoms(:)=0 atposl(:,:,:)=0.d0 atposc(:,:,:)=0.d0 bfcmt0(:,:,:)=0.d0 sppath='' scrpath='' nvp1d=2 if (allocated(vvlp1d)) deallocate(vvlp1d) allocate(vvlp1d(3,nvp1d)) vvlp1d(:,1)=0.d0 vvlp1d(:,2)=1.d0 npp1d=200 vclp2d(:,:)=0.d0 vclp2d(1,2)=1.d0 vclp2d(2,3)=1.d0 np2d(:)=40 vclp3d(:,:)=0.d0 vclp3d(1,2)=1.d0 vclp3d(2,3)=1.d0 vclp3d(3,4)=1.d0 np3d(:)=20 nwplot=500 ngrkf=100 nswplot=1 wplot(1)=-0.5d0 wplot(2)=0.5d0 dosocc=.false. dosmsum=.false. dosssum=.false. lmirep=.true. spinpol=.false. spinorb=.false. socscf=1.d0 maxatpstp=200 tau0atp=0.25d0 deltast=0.005d0 latvopt=0 maxlatvstp=30 tau0latv=0.1d0 lradstp=4 chgexs=0.d0 scissor=0.d0 noptcomp=1 optcomp(:,1)=1 intraband=.false. evaltol=-1.d0 epsband=1.d-12 demaxbnd=2.5d0 autolinengy=.false. dlefe=-0.1d0 bfieldc0(:)=0.d0 efieldc(:)=0.d0 afieldc(:)=0.d0 fsmtype=0 momfix(:)=0.d0 mommtfix(:,:,:)=0.d0 taufsm=0.01d0 rmtdelta=0.05d0 isgkmax=-1 symtype=1 deltaph=0.02d0 nphwrt=1 if (allocated(vqlwrt)) deallocate(vqlwrt) allocate(vqlwrt(3,nphwrt)) vqlwrt(:,:)=0.d0 notelns=0 tforce=.false. tfibs=.true. radfhf=0.001d0 maxitoep=200 tauoep(1)=1.d0 tauoep(2)=0.75d0 tauoep(3)=1.25d0 nkstlist=1 kstlist(:,1)=1 vklem(:)=0.d0 deltaem=0.025d0 ndspem=1 nosource=.false. spinsprl=.false. ssdph=.true. vqlss(:)=0.d0 nwrite=0 tevecsv=.false. dftu=0 inpdftu=1 ndftu=0 ujdu(:,:)=0.d0 fdu(:,:)=0.d0 edu(:,:)=0.d0 lambdadu(:)=0.d0 udufix(:)=0.d0 lambdadu0(:)=0.d0 tmwrite=.false. readadu=.false. rdmxctype=2 rdmmaxscl=2 maxitn=200 maxitc=0 taurdmn=0.5d0 taurdmc=0.25d0 rdmalpha=0.565d0 rdmbeta=0.25d0 rdmtemp=0.d0 reducebf=1.d0 ptnucl=.true. tefvr=.true. tefvit=.false. minitefv=6 maxitefv=20 befvit=0.25d0 epsefvit=1.d-5 vecql(:)=0.d0 mustar=0.15d0 sqados(1:2)=0.d0 sqados(3)=1.d0 test=.false. spincore=.false. solscf=1.d0 emaxelnes=-1.2d0 wsfac(1)=-1.d6; wsfac(2)=1.d6 vhmat(:,:)=0.d0 vhmat(1,1)=1.d0 vhmat(2,2)=1.d0 vhmat(3,3)=1.d0 reduceh=.true. hybrid=.false. hybridc=1.d0 ecvcut=-3.5d0 esccut=-0.4d0 gmaxrf=3.d0 emaxrf=1.d6 ntemp=20 trimvg=.false. taubdg=0.1d0 nvbse0=2 ncbse0=3 nvxbse=0 ncxbse=0 bsefull=.false. hxbse=.true. hdbse=.true. fxctype=-1 fxclrc(1)=0.d0 fxclrc(2)=0.d0 rndatposc=0.d0 rndbfcmt=0.d0 rndavec=0.d0 ewbdg=0.5d0 c_tb09=0.d0 tc_tb09=.false. rndachi=0.1d0 hmaxvr=20.d0 hkmax=12.d0 lorbcnd=.false. lorbordc=3 nrmtscf=1 lmaxdos=3 epsph=0.005d0 msmooth=0 npmae0=-1 wrtvars=.false. ftmtype=0 ntmfix=0 tauftm=0.5d0 ftmstep=1 cmagz=.false. axang(:)=0.d0 ncgga=.false. tstime=5.d0 dtimes=0.01d0 npulse=0 ntwrite=10 ffdamp=.false. !--------------------------! ! read from elk.in ! !--------------------------! open(50,file='elk.in',action='READ',status='OLD',form='FORMATTED',iostat=iostat) if (iostat.ne.0) then write(*,*) write(*,'("Error(readinput): error opening elk.in")') write(*,*) stop end if 10 continue read(50,*,end=30) block ! check for a comment if ((scan(trim(block),'!').eq.1).or.(scan(trim(block),'#').eq.1)) goto 10 select case(trim(block)) case('tasks') do i=1,maxtasks read(50,'(A256)',err=20) str if (trim(str).eq.'') then if (i.eq.1) then write(*,*) write(*,'("Error(readinput): no tasks to perform")') write(*,*) stop end if ntasks=i-1 goto 10 end if read(str,*,iostat=iostat) tasks(i) if (iostat.ne.0) then write(*,*) write(*,'("Error(readinput): error reading tasks")') write(*,'("(blank line required after tasks block)")') write(*,*) stop end if end do write(*,*) write(*,'("Error(readinput): too many tasks")') write(*,'("Adjust maxtasks in modmain and recompile code")') write(*,*) stop case('species') ! generate a species file call genspecies(50) case('fspecies') ! generate fractional species files do is=1,maxspecies read(50,'(A256)',err=20) str if (trim(str).eq.'') goto 10 read(str,*,iostat=iostat) zn,symb if (zn.gt.-1.d0+epsocc) then write(*,*) write(*,'("Error(readinput): fractional nuclear Z > -1 : ",G18.10)') zn write(*,*) stop end if call genfspecies(zn,symb) end do write(*,*) write(*,'("Error(readinput): too many fractional nucleus species")') write(*,*) stop case('avec') read(50,*,err=20) avec(:,1) read(50,*,err=20) avec(:,2) read(50,*,err=20) avec(:,3) case('scale') read(50,*,err=20) sc case('scale1') read(50,*,err=20) sc1 case('scale2') read(50,*,err=20) sc2 case('scale3') read(50,*,err=20) sc3 case('epslat') read(50,*,err=20) epslat if (epslat.le.0.d0) then write(*,*) write(*,'("Error(readinput): epslat <= 0 : ",G18.10)') epslat write(*,*) stop end if case('primcell') read(50,*,err=20) primcell case('tshift') read(50,*,err=20) tshift case('autokpt') read(50,*,err=20) autokpt case('radkpt') read(50,*,err=20) radkpt if (radkpt.le.0.d0) then write(*,*) write(*,'("Error(readinput): radkpt <= 0 : ",G18.10)') radkpt write(*,*) stop end if case('ngridk') read(50,*,err=20) ngridk(:) if ((ngridk(1).le.0).or.(ngridk(2).le.0).or.(ngridk(3).le.0)) then write(*,*) write(*,'("Error(readinput): invalid ngridk : ",3I8)') ngridk write(*,*) stop end if case('vkloff') read(50,*,err=20) vkloff(:) case('reducek') read(50,*,err=20) reducek case('ngridq') read(50,*,err=20) ngridq(:) if ((ngridq(1).le.0).or.(ngridq(2).le.0).or.(ngridq(3).le.0)) then write(*,*) write(*,'("Error(readinput): invalid ngridq : ",3I8)') ngridq write(*,*) stop end if case('reduceq') read(50,*,err=20) reduceq case('rgkmax') read(50,*,err=20) rgkmax if (rgkmax.le.0.d0) then write(*,*) write(*,'("Error(readinput): rgkmax <= 0 : ",G18.10)') rgkmax write(*,*) stop end if case('gmaxvr') read(50,*,err=20) gmaxvr case('lmaxapw') read(50,*,err=20) lmaxapw if (lmaxapw.lt.0) then write(*,*) write(*,'("Error(readinput): lmaxapw < 0 : ",I8)') lmaxapw write(*,*) stop end if if (lmaxapw.ge.maxlapw) then write(*,*) write(*,'("Error(readinput): lmaxapw too large : ",I8)') lmaxapw write(*,'("Adjust maxlapw in modmain and recompile code")') write(*,*) stop end if case('lmaxvr') read(50,*,err=20) lmaxvr if (lmaxvr.lt.3) then write(*,*) write(*,'("Error(readinput): lmaxvr < 3 : ",I8)') lmaxvr write(*,*) stop end if case('lmaxmat') read(50,*,err=20) lmaxmat if (lmaxmat.lt.0) then write(*,*) write(*,'("Error(readinput): lmaxmat < 0 : ",I8)') lmaxmat write(*,*) stop end if case('lmaxinr') read(50,*,err=20) lmaxinr if (lmaxinr.lt.0) then write(*,*) write(*,'("Error(readinput): lmaxinr < 0 : ",I8)') lmaxinr write(*,*) stop end if case('fracinr') read(50,*,err=20) fracinr case('trhonorm') read(50,*,err=20) trhonorm case('spinpol') read(50,*,err=20) spinpol case('spinorb') read(50,*,err=20) spinorb case('socscf') read(50,*,err=20) socscf if (socscf.lt.0.d0) then write(*,*) write(*,'("Error(readinput): socscf < 0 : ",G18.10)') socscf write(*,*) stop end if case('xctype') read(50,'(A256)',err=20) str str=trim(str)//' 0 0' read(str,*,err=20) xctype case('stype') read(50,*,err=20) stype case('swidth') read(50,*,err=20) swidth if (swidth.lt.1.d-9) then write(*,*) write(*,'("Error(readinput): swidth too small or negative : ",G18.10)') & swidth write(*,*) stop end if case('autoswidth') read(50,*,err=20) autoswidth case('mstar') read(50,*,err=20) mstar if (mstar.le.0.d0) then write(*,*) write(*,'("Error(readinput): mstar <= 0 : ",G18.10)') mstar write(*,*) stop end if case('epsocc') read(50,*,err=20) epsocc if (epsocc.le.0.d0) then write(*,*) write(*,'("Error(readinput): epsocc <= 0 : ",G18.10)') epsocc write(*,*) stop end if case('epschg') read(50,*,err=20) epschg if (epschg.le.0.d0) then write(*,*) write(*,'("Error(readinput): epschg <= 0 : ",G18.10)') epschg write(*,*) stop end if case('nempty') read(50,*,err=20) nempty0 if (nempty0.le.0.d0) then write(*,*) write(*,'("Error(readinput): nempty <= 0 : ",G18.10)') nempty0 write(*,*) stop end if case('mixtype') read(50,*,err=20) mixtype case('beta0') read(50,*,err=20) beta0 if (beta0.lt.0.d0) then write(*,*) write(*,'("Error(readinput): beta0 < 0 : ",G18.10)') beta0 write(*,*) stop end if case('betamax') read(50,*,err=20) betamax if ((betamax.lt.0.d0).or.(betamax.gt.1.d0)) then write(*,*) write(*,'("Error(readinput): betmax not in [0,1] : ",G18.10)') betamax write(*,*) stop end if case('mixsdp') read(50,*,err=20) mixsdp if (mixsdp.lt.2) then write(*,*) write(*,'("Error(readinput): mixsdp < 2 : ",I8)') mixsdp write(*,*) stop end if case('mixsdb') read(50,*,err=20) mixsdb if (mixsdb.lt.2) then write(*,*) write(*,'("Error(readinput): mixsdb < 2 : ",I8)') mixsdb write(*,*) stop end if case('broydpm') read(50,*,err=20) broydpm(:) if ((broydpm(1).lt.0.d0).or.(broydpm(1).gt.1.d0).or. & (broydpm(2).lt.0.d0).or.(broydpm(2).gt.1.d0)) then write(*,*) write(*,'("Error(readinput): invalid Broyden mixing parameters : ",& &2G18.10)') broydpm write(*,*) stop end if case('maxscl') read(50,*,err=20) maxscl if (maxscl.lt.0) then write(*,*) write(*,'("Error(readinput): maxscl < 0 : ",I8)') maxscl write(*,*) stop end if case('epspot') read(50,*,err=20) epspot case('epsengy') read(50,*,err=20) epsengy case('epsforce') read(50,*,err=20) epsforce case('epsstress') read(50,*,err=20) epsstress case('sppath') read(50,*,err=20) sppath sppath=adjustl(sppath) case('scrpath') read(50,*,err=20) scrpath case('molecule') read(50,*,err=20) molecule case('atoms') read(50,*,err=20) nspecies if (nspecies.le.0) then write(*,*) write(*,'("Error(readinput): nspecies <= 0 : ",I8)') nspecies write(*,*) stop end if if (nspecies.gt.maxspecies) then write(*,*) write(*,'("Error(readinput): nspecies too large : ",I8)') nspecies write(*,'("Adjust maxspecies in modmain and recompile code")') write(*,*) stop end if do is=1,nspecies read(50,*,err=20) spfname(is) spfname(is)=adjustl(spfname(is)) read(50,*,err=20) natoms(is) if (natoms(is).le.0) then write(*,*) write(*,'("Error(readinput): natoms <= 0 : ",I8)') natoms(is) write(*,'(" for species ",I4)') is write(*,*) stop end if if (natoms(is).gt.maxatoms) then write(*,*) write(*,'("Error(readinput): natoms too large : ",I8)') natoms(is) write(*,'(" for species ",I4)') is write(*,'("Adjust maxatoms in modmain and recompile code")') write(*,*) stop end if do ia=1,natoms(is) read(50,'(A256)',err=20) str str=trim(str)//' 0.0 0.0 0.0' read(str,*,err=20) atposl(:,ia,is),bfcmt0(:,ia,is) end do end do case('plot1d') read(50,*,err=20) nvp1d,npp1d if (nvp1d.lt.1) then write(*,*) write(*,'("Error(readinput): nvp1d < 1 : ",I8)') nvp1d write(*,*) stop end if if (npp1d.lt.nvp1d) then write(*,*) write(*,'("Error(readinput): npp1d < nvp1d : ",2I8)') npp1d,nvp1d write(*,*) stop end if if (allocated(vvlp1d)) deallocate(vvlp1d) allocate(vvlp1d(3,nvp1d)) do i=1,nvp1d read(50,*,err=20) vvlp1d(:,i) end do case('plot2d') read(50,*,err=20) vclp2d(:,1) read(50,*,err=20) vclp2d(:,2) read(50,*,err=20) vclp2d(:,3) read(50,*,err=20) np2d(:) if ((np2d(1).lt.1).or.(np2d(2).lt.1)) then write(*,*) write(*,'("Error(readinput): np2d < 1 : ",2I8)') np2d write(*,*) stop end if case('plot3d') read(50,*,err=20) vclp3d(:,1) read(50,*,err=20) vclp3d(:,2) read(50,*,err=20) vclp3d(:,3) read(50,*,err=20) vclp3d(:,4) read(50,*,err=20) np3d(:) if ((np3d(1).lt.1).or.(np3d(2).lt.1).or.(np3d(3).lt.1)) then write(*,*) write(*,'("Error(readinput): np3d < 1 : ",3I8)') np3d write(*,*) stop end if case('wplot','dos') read(50,*,err=20) nwplot,ngrkf,nswplot if (nwplot.lt.2) then write(*,*) write(*,'("Error(readinput): nwplot < 2 : ",I8)') nwplot write(*,*) stop end if if (ngrkf.lt.1) then write(*,*) write(*,'("Error(readinput): ngrkf < 1 : ",I8)') ngrkf write(*,*) stop end if if (nswplot.lt.0) then write(*,*) write(*,'("Error(readinput): nswplot < 0 : ",I8)') nswplot write(*,*) stop end if read(50,*,err=20) wplot(:) if (wplot(1).gt.wplot(2)) then write(*,*) write(*,'("Error(readinput): wplot(1) > wplot(2) : ",2G18.10)') wplot write(*,*) stop end if case('dosocc') read(50,*,err=20) dosocc case('dosmsum') read(50,*,err=20) dosmsum case('dosssum') read(50,*,err=20) dosssum case('lmirep') read(50,*,err=20) lmirep case('maxatpstp','maxatmstp') read(50,*,err=20) maxatpstp if (maxatpstp.le.0) then write(*,*) write(*,'("Error(readinput): maxatpstp <= 0 : ",I8)') maxatpstp write(*,*) stop end if case('tau0atp','tau0atm') read(50,*,err=20) tau0atp case('deltast') read(50,*,err=20) deltast if (deltast.le.0.d0) then write(*,*) write(*,'("Error(readinput): deltast <= 0 : ",G18.10)') deltast write(*,*) stop end if case('latvopt') read(50,*,err=20) latvopt case('maxlatvstp') read(50,*,err=20) maxlatvstp if (maxlatvstp.le.0) then write(*,*) write(*,'("Error(readinput): maxlatvstp <= 0 : ",I8)') maxlatvstp write(*,*) stop end if case('tau0latv') read(50,*,err=20) tau0latv case('nstfsp') read(50,*,err=20) write(*,*) write(*,'("Info(readinput): variable ''nstfsp'' is no longer used")') case('lradstp') read(50,*,err=20) lradstp if (lradstp.le.0) then write(*,*) write(*,'("Error(readinput): lradstp <= 0 : ",I8)') lradstp write(*,*) stop end if case('chgexs') read(50,*,err=20) chgexs case('nprad') read(50,*,err=20) write(*,*) write(*,'("Info(readinput): variable ''nprad'' is no longer used")') case('scissor') read(50,*,err=20) scissor case('optcomp') do i=1,27 read(50,'(A256)',err=20) str if (trim(str).eq.'') then if (i.eq.1) then write(*,*) write(*,'("Error(readinput): empty optical component list")') write(*,*) stop end if noptcomp=i-1 goto 10 end if str=trim(str)//' 1 1' read(str,*,iostat=iostat) optcomp(:,i) if (iostat.ne.0) then write(*,*) write(*,'("Error(readinput): error reading optical component list")') write(*,'("(blank line required after optcomp block)")') write(*,*) stop end if if ((optcomp(1,i).lt.1).or.(optcomp(1,i).gt.3).or. & (optcomp(2,i).lt.1).or.(optcomp(2,i).gt.3).or. & (optcomp(3,i).lt.1).or.(optcomp(3,i).gt.3)) then write(*,*) write(*,'("Error(readinput): invalid optcomp : ",3I8)') optcomp write(*,*) stop end if end do write(*,*) write(*,'("Error(readinput): optical component list too long")') write(*,*) stop case('intraband') read(50,*,err=20) intraband case('evaltol') read(50,*,err=20) evaltol case('deband') read(50,*,err=20) write(*,*) write(*,'("Info(readinput): variable ''deband'' is no longer used")') case('epsband') read(50,*,err=20) epsband if (epsband.le.0.d0) then write(*,*) write(*,'("Error(readinput): epsband <= 0 : ",G18.10)') epsband write(*,*) stop end if case('demaxbnd') read(50,*,err=20) demaxbnd if (demaxbnd.le.0.d0) then write(*,*) write(*,'("Error(readinput): demaxbnd <= 0 : ",G18.10)') demaxbnd write(*,*) stop end if case('autolinengy') read(50,*,err=20) autolinengy case('dlefe') read(50,*,err=20) dlefe case('bfieldc') read(50,*,err=20) bfieldc0 case('efieldc') read(50,*,err=20) efieldc case('afieldc') read(50,*,err=20) afieldc case('fsmtype','fixspin') read(50,*,err=20) fsmtype case('momfix') read(50,*,err=20) momfix case('mommtfix') do ias=1,maxspecies*maxatoms read(50,'(A256)',err=20) str if (trim(str).eq.'') goto 10 read(str,*,iostat=iostat) is,ia,mommtfix(:,ia,is) if (iostat.ne.0) then write(*,*) write(*,'("Error(readinput): error reading muffin-tin fixed spin & &moments")') write(*,'("(blank line required after mommtfix block")') write(*,*) stop end if end do case('taufsm') read(50,*,err=20) taufsm if (taufsm.lt.0.d0) then write(*,*) write(*,'("Error(readinput): taufsm < 0 : ",G18.10)') taufsm write(*,*) stop end if case('autormt') read(50,*,err=20) write(*,*) write(*,'("Info(readinput): variable ''autormt'' is no longer used")') case('rmtdelta') read(50,*,err=20) rmtdelta if (rmtdelta.lt.0.d0) then write(*,*) write(*,'("Error(readinput): rmtdelta < 0 : ",G18.10)') rmtdelta write(*,*) stop end if case('isgkmax') read(50,*,err=20) isgkmax case('nosym') read(50,*,err=20) nosym if (nosym) symtype=0 case('symtype') read(50,*,err=20) symtype if ((symtype.lt.0).or.(symtype.gt.2)) then write(*,*) write(*,'("Error(readinput): symtype not defined : ",I8)') symtype write(*,*) stop end if case('deltaph') read(50,*,err=20) deltaph if (deltaph.le.0.d0) then write(*,*) write(*,'("Error(readinput): deltaph <= 0 : ",G18.10)') deltaph write(*,*) stop end if case('phwrite') read(50,*,err=20) nphwrt if (nphwrt.le.0) then write(*,*) write(*,'("Error(readinput): nphwrt <= 0 : ",I8)') nphwrt write(*,*) stop end if if (allocated(vqlwrt)) deallocate(vqlwrt) allocate(vqlwrt(3,nphwrt)) do i=1,nphwrt read(50,*,err=20) vqlwrt(:,i) end do case('notes') do i=1,maxnlns read(50,'(A80)') notes(i) if (trim(notes(i)).eq.'') then notelns=i-1 goto 10 end if end do write(*,*) write(*,'("Error(readinput): too many note lines")') write(*,*) stop case('tforce') read(50,*,err=20) tforce case('tfibs') read(50,*,err=20) tfibs case('radfhf') read(50,*,err=20) radfhf if (radfhf.lt.0.d0) then write(*,*) write(*,'("Error(readinput): radfhf < 0 : ",G18.10)') radfhf write(*,*) stop end if case('maxitoep') read(50,*,err=20) maxitoep if (maxitoep.lt.1) then write(*,*) write(*,'("Error(readinput): maxitoep < 1 : ",I8)') maxitoep write(*,*) stop end if case('tauoep') read(50,*,err=20) tauoep(:) if ((tauoep(1).lt.0.d0).or.(tauoep(2).lt.0.d0).or.(tauoep(3).lt.0.d0)) then write(*,*) write(*,'("Error(readinput): tauoep < 0 : ",3G18.10)') tauoep write(*,*) stop end if case('kstlist') do i=1,maxkst read(50,'(A256)',err=20) str if (trim(str).eq.'') then if (i.eq.1) then write(*,*) write(*,'("Error(readinput): empty k-point and state list")') write(*,*) stop end if nkstlist=i-1 goto 10 end if read(str,*,iostat=iostat) kstlist(:,i) if (iostat.ne.0) then write(*,*) write(*,'("Error(readinput): error reading k-point and state list")') write(*,'("(blank line required after kstlist block)")') write(*,*) stop end if end do write(*,*) write(*,'("Error(readinput): k-point and state list too long")') write(*,*) stop case('vklem') read(50,*,err=20) vklem case('deltaem') read(50,*,err=20) deltaem case('ndspem') read(50,*,err=20) ndspem if ((ndspem.lt.1).or.(ndspem.gt.3)) then write(*,*) write(*,'("Error(readinput): ndspem out of range : ",I8)') ndspem write(*,*) stop end if case('nosource') read(50,*,err=20) nosource case('spinsprl') read(50,*,err=20) spinsprl case('ssdph') read(50,*,err=20) ssdph case('vqlss') read(50,*,err=20) vqlss case('nwrite') read(50,*,err=20) nwrite case('tevecsv') read(50,*,err=20) tevecsv case('DFT+U','dft+u','lda+u') read(50,*,err=20) dftu,inpdftu do i=1,maxdftu read(50,'(A256)',err=20) str if (trim(str).eq.'') then ndftu=i-1 goto 10 end if select case(inpdftu) case(1) read(str,*,iostat=iostat) is,l,ujdu(1:2,i) case(2) read(str,*,iostat=iostat) is,l,(fdu(k,i),k=0,2*l,2) case(3) read(str,*,iostat=iostat) is,l,(edu(k,i),k=0,l) case(4) read(str,*,iostat=iostat) is,l,lambdadu(i) case(5) read(str,*,iostat=iostat) is,l,udufix(i) case default write(*,*) write(*,'("Error(readinput): invalid inpdftu : ",I8)') inpdftu write(*,*) stop end select if (iostat.ne.0) then write(*,*) write(*,'("Error(readinput): error reading DFT+U parameters")') write(*,'("(blank line required after dft+u block)")') write(*,*) stop end if if ((is.le.0).or.(is.ge.maxspecies)) then write(*,*) write(*,'("Error(readinput): invalid species number in dft+u block : ", & &I8)') is write(*,*) stop end if if (l.lt.0) then write(*,*) write(*,'("Error(readinput): l < 0 in dft+u block : ",I8)') l write(*,*) stop end if if (l.gt.lmaxdm) then write(*,*) write(*,'("Error(readinput): l > lmaxdm in dft+u block : ",2I8)') l,lmaxdm write(*,*) stop end if ! check for repeated entries do j=1,i-1 if ((is.eq.idftu(1,j)).and.(l.eq.idftu(2,j))) then write(*,*) write(*,'("Error(readinput): repeated entry in DFT+U block")') write(*,*) stop end if end do idftu(1,i)=is idftu(2,i)=l end do write(*,*) write(*,'("Error(readinput): too many DFT+U entries")') write(*,'("Adjust maxdftu in modmain and recompile code")') write(*,*) stop case('tmwrite','tmomlu') read(50,*,err=20) tmwrite case('readadu','readalu') read(50,*,err=20) readadu case('rdmxctype') read(50,*,err=20) rdmxctype case('rdmmaxscl') read(50,*,err=20) rdmmaxscl if (rdmmaxscl.lt.0) then write(*,*) write(*,'("Error(readinput): rdmmaxscl < 0 : ",I8)') rdmmaxscl write(*,*) end if case('maxitn') read(50,*,err=20) maxitn if (maxitn.lt.1) then write(*,*) write(*,'("Error(readinput): maxitn < 1 : ",I8)') maxitn write(*,*) stop end if case('maxitc') read(50,*,err=20) maxitc case('taurdmn') read(50,*,err=20) taurdmn if (taurdmn.lt.0.d0) then write(*,*) write(*,'("Error(readinput): taurdmn < 0 : ",G18.10)') taurdmn write(*,*) stop end if case('taurdmc') read(50,*,err=20) taurdmc if (taurdmc.lt.0.d0) then write(*,*) write(*,'("Error(readinput): taurdmc < 0 : ",G18.10)') taurdmc write(*,*) stop end if case('rdmalpha') read(50,*,err=20) rdmalpha if ((rdmalpha.le.0.d0).or.(rdmalpha.ge.1.d0)) then write(*,*) write(*,'("Error(readinput): rdmalpha not in (0,1) : ",G18.10)') rdmalpha write(*,*) stop end if case('rdmbeta') read(50,*,err=20) rdmbeta if ((rdmbeta.le.0.d0).or.(rdmbeta.ge.1.d0)) then write(*,*) write(*,'("Error(readinput): rdmbeta not in (0,1) : ",G18.10)') rdmbeta write(*,*) stop end if case('rdmtemp') read(50,*,err=20) rdmtemp if (rdmtemp.lt.0.d0) then write(*,*) write(*,'("Error(readinput): rdmtemp < 0 : ",G18.10)') rdmtemp write(*,*) stop end if case('reducebf') read(50,*,err=20) reducebf if ((reducebf.lt.0.49d0).or.(reducebf.gt.1.d0)) then write(*,*) write(*,'("Error(readinput): reducebf not in [0.5,1] : ",G18.10)') reducebf write(*,*) stop end if case('ptnucl') read(50,*,err=20) ptnucl case('tefvr','tseqr') read(50,*,err=20) tefvr case('tefvit','tseqit') read(50,*,err=20) tefvit case('minitefv','minseqit') read(50,*,err=20) minitefv if (minitefv.lt.1) then write(*,*) write(*,'("Error(readinput): minitefv < 1 : ",I8)') minitefv write(*,*) stop end if case('maxitefv','maxseqit') read(50,*,err=20) maxitefv if (maxitefv.lt.1) then write(*,*) write(*,'("Error(readinput): maxitefv < 1 : ",I8)') maxitefv write(*,*) stop end if case('befvit','bseqit') read(50,*,err=20) befvit if (befvit.le.0.d0) then write(*,*) write(*,'("Error(readinput): befvit <= 0 : ",G18.10)') befvit write(*,*) stop end if case('epsefvit','epsseqit') read(50,*,err=20) epsefvit if (epsefvit.lt.0.d0) then write(*,*) write(*,'("Error(readinput): epsefvit < 0 : ",G18.10)') epsefvit write(*,*) stop end if case('nseqit') read(50,*,err=20) write(*,*) write(*,'("Info(readinput): variable ''nseqit'' is no longer used")') case('tauseq') read(50,*,err=20) write(*,*) write(*,'("Info(readinput): variable ''tauseq'' is no longer used")') case('vecql') read(50,*,err=20) vecql(:) case('mustar') read(50,*,err=20) mustar case('sqados') read(50,*,err=20) sqados(:) case('test') read(50,*,err=20) test case('frozencr') write(*,*) write(*,'("Info(readinput): variable ''frozencr'' is no longer used")') case('spincore') read(50,*,err=20) spincore case('solscf') read(50,*,err=20) solscf if (solscf.lt.0.d0) then write(*,*) write(*,'("Error(readinput): solscf < 0 : ",G18.10)') solscf write(*,*) stop end if case('emaxelnes') read(50,*,err=20) emaxelnes case('wsfac') read(50,*,err=20) wsfac(:) case('vhmat') read(50,*,err=20) vhmat(1,:) read(50,*,err=20) vhmat(2,:) read(50,*,err=20) vhmat(3,:) case('reduceh') read(50,*,err=20) reduceh case('hybrid') read(50,*,err=20) hybrid case('hybridc','hybmix') read(50,*,err=20) hybridc if ((hybridc.lt.0.d0).or.(hybridc.gt.1.d0)) then write(*,*) write(*,'("Error(readinput): invalid hybridc : ",G18.10)') hybridc write(*,*) stop end if case('ecvcut') read(50,*,err=20) ecvcut case('esccut') read(50,*,err=20) esccut case('nvbse') read(50,*,err=20) nvbse0 if (nvbse0.lt.0) then write(*,*) write(*,'("Error(readinput): nvbse < 0 : ",I8)') nvbse0 write(*,*) stop end if case('ncbse') read(50,*,err=20) ncbse0 if (ncbse0.lt.0) then write(*,*) write(*,'("Error(readinput): ncbse < 0 : ",I8)') ncbse0 write(*,*) stop end if case('istxbse') do i=1,maxxbse read(50,'(A256)',err=20) str if (trim(str).eq.'') then if (i.eq.1) then write(*,*) write(*,'("Error(readinput): empty BSE extra valence state list")') write(*,*) stop end if nvxbse=i-1 goto 10 end if read(str,*,iostat=iostat) istxbse(i) if (iostat.ne.0) then write(*,*) write(*,'("Error(readinput): error reading BSE valence state list")') write(*,'("(blank line required after istxbse block)")') write(*,*) stop end if end do write(*,*) write(*,'("Error(readinput): BSE extra valence state list too long")') write(*,*) stop case('jstxbse') do i=1,maxxbse read(50,'(A256)',err=20) str if (trim(str).eq.'') then if (i.eq.1) then write(*,*) write(*,'("Error(readinput): empty BSE extra conduction state list")') write(*,*) stop end if ncxbse=i-1 goto 10 end if read(str,*,iostat=iostat) jstxbse(i) if (iostat.ne.0) then write(*,*) write(*,'("Error(readinput): error reading BSE conduction state list")') write(*,'("(blank line required after jstxbse block)")') write(*,*) stop end if end do write(*,*) write(*,'("Error(readinput): BSE extra conduction state list too long")') write(*,*) stop case('bsefull') read(50,*,err=20) bsefull case('hxbse') read(50,*,err=20) hxbse case('hdbse') read(50,*,err=20) hdbse case('gmaxrf','gmaxrpa') read(50,*,err=20) gmaxrf if (gmaxrf.lt.0.d0) then write(*,*) write(*,'("Error(readinput): gmaxrf < 0 : ",G18.10)') gmaxrf write(*,*) stop end if case('emaxrf') read(50,*,err=20) emaxrf if (emaxrf.lt.0.d0) then write(*,*) write(*,'("Error(readinput): emaxrf < 0 : ",G18.10)') emaxrf write(*,*) stop end if case('fxctype') read(50,'(A256)',err=20) str str=trim(str)//' 0 0' read(str,*,err=20) fxctype case('fxclrc') read(50,'(A256)',err=20) str str=trim(str)//' 0.0' read(str,*,err=20) fxclrc(:) case('ntemp') read(50,*,err=20) ntemp if (ntemp.lt.1) then write(*,*) write(*,'("Error(readinput): ntemp < 1 : ",I8)') ntemp write(*,*) stop end if case('trimvg') read(50,*,err=20) trimvg case('rndseed') read(50,*,err=20) i ! set random number generator state with seed rndstate(0)=abs(i) case('taubdg') read(50,*,err=20) taubdg case('rndatposc') read(50,*,err=20) rndatposc case('rndbfcmt') read(50,*,err=20) rndbfcmt case('rndavec') read(50,*,err=20) rndavec case('ewbdg') read(50,*,err=20) ewbdg if (ewbdg.le.0.d0) then write(*,*) write(*,'("Error(readinput): ewbdg <= 0 : ",G18.10)') ewbdg write(*,*) stop end if case('c_tb09') read(50,*,err=20) c_tb09 ! set flag to indicate Tran-Blaha constant has been read in tc_tb09=.true. case('rndachi') read(50,*,err=20) rndachi case('highq') read(50,*,err=20) highq ! parameter set for high-quality calculation if (highq) then rgkmax=7.5d0 gmaxvr=16.d0 lmaxapw=10 lmaxvr=8 lmaxmat=8 lradstp=2 fracinr=0.05d0 radkpt=50.d0 autokpt=.true. vkloff(:)=0.d0 nempty0=10.d0 epspot=1.d-7 epsengy=1.d-5 epsforce=1.d-4 lorbcnd=.true. end if case('hmaxvr') read(50,*,err=20) hmaxvr if (hmaxvr.lt.0.d0) then write(*,*) write(*,'("Error(readinput): hmaxvr < 0 : ",G18.10)') hmaxvr write(*,*) stop end if case('hkmax') read(50,*,err=20) hkmax if (hkmax.le.0.d0) then write(*,*) write(*,'("Error(readinput): hkmax <= 0 : ",G18.10)') hkmax write(*,*) stop end if case('lorbcnd') read(50,*,err=20) lorbcnd case('lorbordc') read(50,*,err=20) lorbordc if (lorbordc.lt.2) then write(*,*) write(*,'("Error(readinput): lorbordc < 2 : ",I8)') lorbordc write(*,*) stop end if if (lorbordc.gt.maxlorbord) then write(*,*) write(*,'("Error(readinput): lorbordc too large : ",I8)') lorbordc write(*,'("Adjust maxlorbord in modmain and recompile code")') write(*,*) stop end if case('nrmtscf') read(50,*,err=20) nrmtscf if (nrmtscf.lt.1) then write(*,*) write(*,'("Error(readinput): nrmtscf < 1 : ",I8)') nrmtscf write(*,*) stop end if case('lmaxdos') read(50,*,err=20) lmaxdos if (lmaxdos.lt.0) then write(*,*) write(*,'("Error(readinput): lmaxdos < 0 : ",I8)') lmaxdos write(*,*) stop end if case('epsph') read(50,*,err=20) epsph if (epsph.le.0.d0) then write(*,*) write(*,'("Error(readinput): epsph <= 0 : ",G18.10)') epsph write(*,*) stop end if case('msmooth') read(50,*,err=20) msmooth if (msmooth.lt.0) then write(*,*) write(*,'("Error(readinput): msmooth < 0 : ",I8)') msmooth write(*,*) stop end if case('npmae') read(50,*,err=20) npmae0 case('wrtvars') read(50,*,err=20) wrtvars case('ftmtype') read(50,*,err=20) ftmtype case('tmomfix') read(50,*,err=20) ntmfix if (ntmfix.le.0) then write(*,*) write(*,'("Error(readinput): ntmfix <= 0 : ",I8)') ntmfix write(*,*) stop end if if (allocated(itmfix)) deallocate(itmfix) allocate(itmfix(8,ntmfix)) if (allocated(tmfix)) deallocate(tmfix) allocate(tmfix(ntmfix)) if (allocated(rtmfix)) deallocate(rtmfix) allocate(rtmfix(3,3,2,ntmfix)) do i=1,ntmfix read(50,*,err=20) is,ia,l,n if ((is.le.0).or.(ia.le.0).or.(l.lt.0).or.((n.ne.2).and.(n.ne.3))) then write(*,*) write(*,'("Error(readinput): invalid is, ia, l or n in tmomfix block : ",& &4I8)') is,ia,l,n write(*,*) stop end if itmfix(1,i)=is itmfix(2,i)=ia itmfix(3,i)=l itmfix(4,i)=n ! read k, p, x, y for the 2-index tensor or k, p, r, t for the 3-index tensor read(50,*,err=20) itmfix(5:8,i) ! read tensor component read(50,*,err=20) a,b tmfix(i)=cmplx(a,b,8) ! read parity and Euler angles of spatial and spin rotation matrices read(50,'(A256)',err=20) str str=trim(str)//' 0.0 0.0 0.0' read(str,*,err=20) p,v1(:),v2(:) if (abs(p).ne.1) then write(*,*) write(*,'("Error(readinput): parity should be -1 or 1 in tmomfix & &block : ",I8)') p write(*,*) stop end if ! convert Euler angles from degrees to radians v1(:)=v1(:)*pi/180.d0 v2(:)=v2(:)*pi/180.d0 ! compute the spatial and spin 3x3 rotation matrices from the Euler angles call eulerrot(v1,rtmfix(:,:,1,i)) call eulerrot(v2,rtmfix(:,:,2,i)) ! multiply the spatial rotation matrix by the parity rtmfix(:,:,1,i)=dble(p)*rtmfix(:,:,1,i) end do case('tauftm') read(50,*,err=20) tauftm if (tauftm.lt.0.d0) then write(*,*) write(*,'("Error(readinput): tauftm < 0 : ",G18.10)') tauftm write(*,*) stop end if case('ftmstep') read(50,*,err=20) ftmstep if (ftmstep.lt.1) then write(*,*) write(*,'("Error(readinput): ftmstep < 1 : ",I8)') ftmstep write(*,*) stop end if case('cmagz','forcecmag') read(50,*,err=20) cmagz case('rotavec') read(50,*,err=20) axang(:) case('tstime') read(50,*,err=20) tstime if (tstime.lt.0.d0) then write(*,*) write(*,'("Error(readinput): tstime <= 0 : ",G18.10)') tstime write(*,*) stop end if case('dtimes') read(50,*,err=20) dtimes if (dtimes.le.0.d0) then write(*,*) write(*,'("Error(readinput): dtimes <= 0 : ",G18.10)') dtimes write(*,*) stop end if case('pulse') read(50,*,err=20) npulse if (npulse.lt.1) then write(*,*) write(*,'("Error(readinput): npulse < 1 : ",I8)') npulse write(*,*) stop end if if (allocated(pulse)) deallocate(pulse) allocate(pulse(7,npulse)) do i=1,npulse read(50,*,err=20) pulse(:,i) end do case('ncgga') read(50,*,err=20) ncgga case('ntwrite') read(50,*,err=20) ntwrite case('ffdamp') read(50,*,err=20) ffdamp case('') goto 10 case default write(*,*) write(*,'("Error(readinput): invalid block name : ",A)') trim(block) write(*,*) stop end select goto 10 20 continue write(*,*) write(*,'("Error(readinput): error reading from elk.in")') write(*,'("Problem occurred in ''",A,"'' block")') trim(block) write(*,'("Check input convention in manual")') write(*,*) stop 30 continue close(50) ! scale the speed of light solsc=sol*solscf ! scale and rotate the lattice vectors (not referenced again in code) avec(:,1)=sc1*avec(:,1) avec(:,2)=sc2*avec(:,2) avec(:,3)=sc3*avec(:,3) avec(:,:)=sc*avec(:,:) t1=axang(4) if (t1.ne.0.d0) then t1=t1*pi/180.d0 call axangrot(axang(:),t1,rot) do i=1,3 v1(:)=avec(:,i) call r3mv(rot,v1,avec(:,i)) end do end if ! randomise lattice vectors if required if (rndavec.gt.0.d0) then do i=1,3 do j=1,3 t1=rndavec*(randomu()-0.5d0) avec(i,j)=avec(i,j)+t1 end do end do end if ! case of isolated molecule if (molecule) then ! convert atomic positions from Cartesian to lattice coordinates call r3minv(avec,ainv) do is=1,nspecies do ia=1,natoms(is) call r3mv(ainv,atposl(:,ia,is),v1) atposl(:,ia,is)=v1(:) end do end do end if ! randomise atomic positions if required if (rndatposc.gt.0.d0) then call r3minv(avec,ainv) do is=1,nspecies do ia=1,natoms(is) call r3mv(avec,atposl(:,ia,is),v1) do i=1,3 t1=rndatposc*(randomu()-0.5d0) v1(i)=v1(i)+t1 end do call r3mv(ainv,v1,atposl(:,ia,is)) end do end do end if ! randomise the muffin-tin magnetic fields if required if (rndbfcmt.gt.0.d0) then do is=1,nspecies do ia=1,natoms(is) do i=1,3 t1=rndbfcmt*(randomu()-0.5d0) bfcmt0(i,ia,is)=bfcmt0(i,ia,is)+t1 end do end do end do end if ! set fxctype to fxctype if required if (fxctype(1).eq.-1) then fxctype(:)=xctype(:) end if ! find primitive cell if required if (primcell) call findprimcell ! read in atomic species data call readspecies return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/getdevalfv.f900000644002504400250440000000005012337331324016646 xustar000000000000000020 atime=1400746708 20 ctime=1400746708 elk-2.3.22/src/getdevalfv.f900000644002504400250440000000310612337331324017412 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine getdevalfv(ik,iq,is,ia,ip,devalfv) use modmain implicit none ! arguments integer, intent(in) :: ik,iq,is,ia,ip complex(8), intent(out) :: devalfv(nstfv,nspnfv) ! local variables integer recl,nstfv_,nspnfv_ real(8) vkl_(3),t1 character(256) fext,fname ! construct the phonon file extension call phfext(iq,is,ia,ip,fext) ! construct filename fname='DEVALFV'//trim(fext) ! find the record length inquire(iolength=recl) vkl_,nstfv_,nspnfv_,devalfv !$OMP CRITICAL open(70,file=trim(fname),action='READ',form='UNFORMATTED',access='DIRECT', & recl=recl) read(70,rec=ik) vkl_,nstfv_,nspnfv_,devalfv close(70) !$OMP END CRITICAL t1=abs(vkl(1,ik)-vkl_(1))+abs(vkl(2,ik)-vkl_(2))+abs(vkl(3,ik)-vkl_(3)) if (t1.gt.epslat) then write(*,*) write(*,'("Error(getdevalfv): differing vectors for k-point ",I8)') ik write(*,'(" current : ",3G18.10)') vkl(:,ik) write(*,'(" ",A," : ",3G18.10)') trim(fname),vkl_ write(*,*) stop end if if (nstfv.ne.nstfv_) then write(*,*) write(*,'("Error(getdevalfv): differing nstfv for k-point ",I8)') ik write(*,'(" current : ",I8)') nstfv write(*,'(" ",A," : ",I8)') trim(fname),nstfv_ write(*,*) stop end if if (nspnfv.ne.nspnfv_) then write(*,*) write(*,'("Error(getdevalfv): differing nspnfv for k-point ",I8)') ik write(*,'(" current : ",I8)') nspnfv write(*,'(" ",A," : ",I8)') trim(fname),nspnfv_ write(*,*) stop end if return end subroutine elk-2.3.22/src/PaxHeaders.22528/writeqpts.f900000644002504400250440000000005012337331323016560 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/writeqpts.f900000644002504400250440000000074712337331323017334 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2010 J. K. Dewhurst, S. Sharma and E. K. U. Gross. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine writeqpts use modmain implicit none ! local variables integer iq open(50,file='QPOINTS.OUT',action='WRITE',form='FORMATTED') write(50,'(I6," : nqpt; q-point, vql, wqpt below")') nqpt do iq=1,nqpt write(50,'(I6,4G18.10)') iq,vql(:,iq),wqpt(iq) end do close(50) return end subroutine elk-2.3.22/src/PaxHeaders.22528/occupy.f900000644002504400250440000000005012337331323016020 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/occupy.f900000644002504400250440000000604312337331323016567 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. !BOP ! !ROUTINE: occupy ! !INTERFACE: subroutine occupy ! !USES: use modmain use modtest ! !DESCRIPTION: ! Finds the Fermi energy and sets the occupation numbers for the ! second-variational states using the routine {\tt fermi}. ! ! !REVISION HISTORY: ! Created February 2004 (JKD) ! Added gap estimation, November 2009 (F. Cricchio) ! Added adaptive smearing width, April 2010 (T. Bjorkman) !EOP !BOC implicit none ! local variables integer, parameter :: maxit=1000 integer ik,ist,it real(8) e0,e1,e real(8) chg,x,t1 ! external functions real(8) sdelta,stheta external sdelta,stheta ! determine the smearing width automatically if required if ((autoswidth).and.(iscl.gt.1)) call findswidth ! find minimum and maximum eigenvalues e0=evalsv(1,1) e1=e0 do ik=1,nkpt do ist=1,nstsv e=evalsv(ist,ik) if (e.lt.e0) e0=e if (e.gt.e1) e1=e end do end do if (e0.lt.e0min-1.d0) then write(*,*) write(*,'("Warning(occupy): minimum eigenvalue less than minimum & &linearisation energy : ",2G18.10)') e0,e0min write(*,'(" for s.c. loop ",I5)') iscl end if t1=1.d0/swidth ! determine the Fermi energy using the bisection method do it=1,maxit efermi=0.5d0*(e0+e1) chg=0.d0 do ik=1,nkpt do ist=1,nstsv x=(efermi-evalsv(ist,ik))*t1 occsv(ist,ik)=occmax*stheta(stype,x) chg=chg+wkpt(ik)*occsv(ist,ik) end do end do if (chg.lt.chgval) then e0=efermi else e1=efermi end if if ((e1-e0).lt.1.d-12) goto 10 end do write(*,*) write(*,'("Warning(occupy): could not find Fermi energy")') 10 continue ! find the density of states at the Fermi surface in units of ! states/Hartree/unit cell fermidos=0.d0 do ik=1,nkpt do ist=1,nstsv x=(evalsv(ist,ik)-efermi)*t1 fermidos=fermidos+wkpt(ik)*sdelta(stype,x)*t1 end do if (abs(occsv(nstsv,ik)).gt.epsocc) then write(*,*) write(*,'("Warning(occupy): not enough empty states for k-point ",I6)') ik write(*,'(" and s.c. loop ",I5)') iscl end if end do fermidos=fermidos*occmax ! write Fermi density of states to test file call writetest(500,'DOS at Fermi energy',tol=5.d-3,rv=fermidos) ! estimate the indirect band gap (FC) e0=-1.d8 e1=1.d8 ikgap(1)=1 ikgap(2)=1 do ik=1,nkpt do ist=1,nstsv e=evalsv(ist,ik) if (e.lt.efermi) then if (e.gt.e0) then e0=e ikgap(1)=ik end if else if (e.lt.e1) then e1=e ikgap(2)=ik end if end if end do end do bandgap(1)=e1-e0 ! write band gap to test file call writetest(510,'estimated indirect band gap',tol=2.d-2,rv=bandgap(1)) ! estimate the direct band gap e=1.d8 ikgap(3)=1 do ik=1,nkpt e0=-1.d8 e1=1.d8 do ist=1,nstsv t1=evalsv(ist,ik) if (t1.le.efermi) then if (t1.gt.e0) e0=t1 else if (t1.lt.e1) e1=t1 end if end do t1=e1-e0 if (t1.lt.e) then e=t1 ikgap(3)=ik end if end do bandgap(2)=e return end subroutine !EOC elk-2.3.22/src/PaxHeaders.22528/delevec.f900000644002504400250440000000005012337331323016125 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/delevec.f900000644002504400250440000000124112337331323016667 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2007 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU General Public License. ! See the file COPYING for license details. subroutine delevec use modmain use modmpi implicit none ! only the master process should delete the file if (mp_mpi) then ! delete the first-variational eigenvector file open(70,file=trim(scrpath)//'EVECFV'//trim(filext)) close(70,status='DELETE') ! delete the second-variational eigenvector file open(70,file=trim(scrpath)//'EVECSV'//trim(filext)) close(70,status='DELETE') end if ! synchronise MPI processes call mpi_barrier(mpi_comm_kpt,ierror) return end subroutine elk-2.3.22/src/PaxHeaders.22528/rschrodapp.f900000644002504400250440000000005012337331323016663 xustar000000000000000020 atime=1400746707 20 ctime=1400746707 elk-2.3.22/src/rschrodapp.f900000644002504400250440000000337012337331323017432 0ustar00dewhurstdewhurst00000000000000 ! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl. ! This file is distributed under the terms of the GNU Lesser General Public ! License. See the file COPYING for license details. !BOP ! !ROUTINE: rschrodapp ! !INTERFACE: subroutine rschrodapp(sol,l,nr,r,vr,p0,q0,q1,hp0) ! !INPUT/OUTPUT PARAMETERS: ! sol : speed of light in atomic units (in,real) ! l : angular momentum quantum number (in,integer) ! nr : number of radial mesh points (in,integer) ! r : radial mesh (in,real(nr)) ! vr : potential on radial mesh (in,real(nr)) ! p0 : m th energy derivative of P (in,real(nr)) ! q0 : m th energy derivative of Q (in,real(nr)) ! q1 : radial derivative of q0 (in,real(nr)) ! hp0 : H applied to P (out,real(nr)) ! !DESCRIPTION: ! Applies the scalar relativistic radial Hamiltonian, $H$, to a radial ! wavefunction, $P_l$. This is an approximation since we assume $P_l$ is a ! scalar wavefunction, normalisable to unity. A Hamiltonian which satisfies ! $H P_l=E P_l$ is given implicitly by ! $$ H P_l=\left[\frac{l(l+1)}{2Mr^2}+V\right]P_l-\frac{1}{r}Q_l ! -\frac{d}{dr}Q_l, $$ ! where $V$ is the external potential, $M=1-V/2c^2$ and $Q_l$ is obtained from ! integrating the coupled scalar relativistic equations. ! ! !REVISION HISTORY: ! Created October 2003 (JKD) !EOP !BOC implicit none real(8), intent(in) :: sol integer, intent(in) :: l integer, intent(in) :: nr real(8), intent(in) :: r(nr) real(8), intent(in) :: vr(nr) real(8), intent(in) :: p0(nr),q0(nr),q1(nr) real(8), intent(out) :: hp0(nr) ! local variables integer ir real(8) t1,t2,t3 t1=1.d0/sol**2 t2=dble(l*(l+1)) do ir=1,nr t3=2.d0-t1*vr(ir) t3=t2/(t3*r(ir)**2) hp0(ir)=(t3+vr(ir))*p0(ir)-q0(ir)/r(ir)-q1(ir) end do return end subroutine !EOC elk-2.3.22/PaxHeaders.22528/README0000644002504400250440000000005012337331332014267 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/README0000644002504400250440000000400512337331332015032 0ustar00dewhurstdewhurst00000000000000 +------------------------------+ | The Elk FP-LAPW Code | +------------------------------+ This code is distributed under the terms of the GNU General Public License. See the file COPYING for license details. Elk is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Elk is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Elk. If not, see http://www.gnu.org/licenses/. Elk can be compiled by first running "./setup" in this directory followed by "make all". This will compile the main code as well as several auxiliary programs. For optimal performance we strongly recommend that you tune the Fortran compiler options in the file "make.inc" and use machine-optimised BLAS/LAPACK libraries. Setting the OpenMP and MPI options of your compiler will enable Elk to run in parallel mode on multiprocessor systems and clusters. A test suite is available: entering "make test" will check the output of your executable against a standard set. This may take some time to complete. Auxiliary programs include "spacegroup" for producing crystal geometries from spacegroup data, and "eos" for fitting equations of state to energy-volume data. Elk is updated regularly with new features and bug fixes. Features not listed as "experimental" may be used for production but, as with any code, please check the consistency of your results carefully. -------------------------------------------------------------------------------- J. K. Dewhurst, S. Sharma L. Nordstrom, F. Cricchio, F. Bultmark, O. Granas E. K. U. Gross elk-2.3.22/PaxHeaders.22528/docs0000644002504400250440000000005012337331340014261 xustar000000000000000020 atime=1400746720 20 ctime=1400746720 elk-2.3.22/docs/0000755002504400250440000000000012337331340015102 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/docs/PaxHeaders.22528/elk.pdf0000644002504400250440000000005012337331340015604 xustar000000000000000020 atime=1400746720 20 ctime=1400746720 elk-2.3.22/docs/elk.pdf0000644002504400250440000243344412337331340016366 0ustar00dewhurstdewhurst00000000000000%PDF-1.5 %ÐÔÅØ 2 0 obj << /Type /ObjStm /N 100 /First 800 /Length 948 /Filter /FlateDecode >> stream xÚ”[«ÛF…ßõ+öcB¡Gs×@„4”BJÓ¾õE–F¶°n•äŸþú®-íN2 m[ß^û²Æ”“!•“%mÈ“3$ròŠ>—F$H8·OR”:“’$’$>. KÒ“Ò‚~TŠ´D¨I+¯.ü_Cû#J_¨c?µ];ì©jšOÃÀñ§îøJæiwK¾NpO_ª±¯çý/õšü{9—]ºvé©(7ñ¹Ž\ò¹][ÝÏíî\Qs6°ì¨kws9¿$äâ¢þˆC?>ºNðe UjÚ.,äÅ >Ë~z=%ÂæzB¦ÓJ»n¬ŽË§1×–ÊuìShì¢<­ãqZ°ºÃ0: û—D‚¾',Ïm½|µüªi/ä.¬ež@ÝíËs."Ü´¡«SMøÏãK=õ)Sò ]ýwæºË}Š.V‡}8'>V}¹ÿ7ÅFëЭeH¶­¿¡§”Â|C/©ó$¢‹u³þtJ±Ñƺ MH±ÑÅz\ú唜Ðßè%MËhc˜–Þ“)ZÜhø˜‚å ~à¿%ÕnƹJíDêÞ•)c¤¹Ác•úH{ƒ§1©ìnð²ÎaI¾Ÿ¢•ÝÐ !Éû;?7©÷Yô²™Ëªæ½l–~}™RûVÑÌf}ˆŽf6窛S Wú ?¢­Ü?´{‡¿&÷­<Ôø1ÅFíþðOŠbÿ„86 endstream endobj 203 0 obj << /Type /ObjStm /N 100 /First 850 /Length 888 /Filter /FlateDecode >> stream xÚ•ËrÛ8E÷úŠ^&›Ƴ*•ÕTÍÌüE)¶ÊâcHʱÿ~nÛ¥]{áH5÷€´wžy—H†L!gG7™©T ØGŒ‘Xt,Ä™1Vâ"ä½×ùÎ{ƒ÷(”ÀùL>cG‚R^˜ÄëH"ÖPK’Ž…‚Ão¥R`ŒÁ£ Ô B!¢^H*ê„LÑaŒŽb@È1÷1P,xfŒ•‹…’èz¥¤\ò”rÞù$”JÁu¢ì±K<;£Ÿeüyì)ð9PáÞ‹î%*¨ás¥’1OÕ•ÇÞ«rxvè»dªÊUGµâ9•‰Ã*t¡;vh×c™8_‘!; Ì’w‚$˜ ”0]ʘT ÑA:Ò4ù=Æw5Y—¢N &¨¬·Eí”ô@[ÝéKƒb\ ˆ‘9&¨  :4.°Ä»@kîO˜†(Ž%î¦8VÔ*N^—P9I†hTNK°ÅI·ƒýãøè*gÝNÔ…äÐ%&ˆXpÁ œ!ôi\ðS=1\p[°m.ÈOà ñ€8®8¿s¬J‰p-Ê@ƒs ò¼“´=¹*Eôè8m þ¼ƒ4Q1H=娷T})P^êûù×Iу‚UO<ò 09i÷ó'=üCOÿNôð}[/ûõØo§iü÷~ýÚ}{zÅÍïË}Û/§ƒû{¸·hù Oã¶tûn4«‡Æ¯ÏC÷jÑñƒ~^·óiÝ,:}Ðçn{™f“ÎFÝüÇ¢Ë>L«E×}ƒŽîFÕwäýb–öWø´g n.ÏÓ²ïM“1Üèi1Jl*ÏKwX7³•¦RóÛ&»óü‰¯ýÙ‚›Êáôº½ÍÖ»ë'½öœÜl5šÈa:ûËÙj$ù+>ü>Y/N’Oxؾ€7—úuÖ‘JMäpù Ü<޽ý•JùÊ>>vÛއu>ÜŽÇaÞÞ 87…ã#¾~ÏÌwðÜŽÓ:]–ÞŠ#ËߎÖ÷&7ãO[_±Â7Ø›°¿ÁbÂÍß¼œ†þx¶¾J¥)ÄçñÙüßUšÃåØºÃÅ¢Ó•>\úãþ·…ç{üÉ¢Ë=m½0¥ÞÓxcþçu« endstream endobj 404 0 obj << /Type /ObjStm /N 100 /First 851 /Length 1021 /Filter /FlateDecode >> stream xÚ•OsÛ6Åïú8Ú `ñ§“É%izé¡Óô˜ ES2G¡’”ìöÓ÷A­ŒÕg)­MÀÏ`oQ3Ðü/øÒ N]²ÌÐ0 N}²Å /¦08k/ZXO+c°~Ö —òàn—ò ‹sè?Χ•‘>èݧ<.3ÆKáS¯1½2ÈôÞ‰€;÷"$z!™… !MÀ%Ã*`„2eBŸ$Š%†ˆ6£WŒ“D)˜ùp M”ÄàBJlà¬LÚ$6`Å ŽB:Nt4âq£‘Á‡´S+ ÒHÁø˜ % œÂí`DiP H”&Â8IéfÆ()Ù3834El8sð+F+dÑ/ƒY6p¶˜ ƒÙ€V‰\J ^ätÚÀÙYtyL‚íåIÁ­†½b@£ áƒÉRH‘0ºT’Ð!À)™î9%Ó]À¤Ò[e°S¸U0bã‘BãÓk5fÅÀ§.£?¥S@T:A¥ñƒ Jï™AP]悊¥º¼4ÅÚ ‹¾;‡ œ-ƇbýU¬‹E±þ,îÆÓflê©ý?y/>~\Ý »ý¡z¹/ˆ)‹ãT›º¤V¯ê±®º¦¤Õßii­ÖºtÀÌÚqŒCIͳz8VÓSIm³:Öc½-‰]Û¾ŽC1¨¿Êã°)©ÃU}Œ]AoùU>‡²žfý‚©œyŽÇ²x:ýslŠâæsû¸  sªÆýXÛY|’Õt,ÊÝUÞUÓ¹¨÷oúØ”ÝÛz;JjÊ4§m»)æ$šÅq¨‹§Œr:<íT–g˜ÓÐλ¢:Óœší¹Šj¾ª‡¢x¦yˆ‡mûR”Ï4ǧv[î$³¯ÕE>aöiêýaº5º”9Íßë®ÙìâÍry™U~áuì{o¬^Ëˬòl›Å¡­ß»]?™ ÿ‰&›k endstream endobj 605 0 obj << /Type /ObjStm /N 100 /First 868 /Length 1105 /Filter /FlateDecode >> stream xÚÖÍrâ8ð;O¡crI¤Ö÷ÖÔœ¶v`ö86P1˜µ!Þ~ÿ “±¨íCÊNKúIênW´SZ” xd¢ †”ÑO«Œ#<ƒ21áâ¤yL%£(c9e-Íye£ÇÿI9cðÌÊñzKÊñzk•7X‡­¼Ç<•ÏØÝáà8¬ ˆ;§¢6³à¼Š¼Þ%y½Ë*Œ{RÉc®·*%¬óAeÂ<Uæs­rƼ`ø˜^"NÝâm^0?„¬ i,ޏ4YìqkJЏ¶åûƈ¬I#!ÈXH!Av)ÎB‚ìù ²ä ádÈÁÁÉyEÈœPd1dÈ©ˆr̆ï­LB#¶1)¸YÔ³æ9³ã93ÎQ(Ò¨ND¥Hã:ÿÆ>‘k…Ó+Þ†°+^P-BY#Ê…2æYD½ˆØÁ~dÙAÅÈ:8X‰d`2jFŽÏƒ<’C"#ªFžÏ㸠ø<ø#Ï Gè–YDå(ð½P: |/ÔŽxŸˆâQdÕÃæ˜ƒòQb ”pf²ÁäÀÆ÷ÂÊÙÎ"*hµÅr\ÉêˆMQAk’ˆ ZÃ=ƒ Zä/AYBgDTÐâd*â”–õˆ Z‹;ÅÄ͋ވ¨ uì ‚Ö±ƒ ZÇ*h=;ȬõiA­Ï˜ Ë4iBm@—&TÐr²*ˆÏ!ξ}S¯?Ôëßí?­zýS=õÇ·¾Z6íî%¾û¬¾Ÿ=-Û^ý|úÑ»E¥þÚ4Õ ¡—:ëŸÏÏÿC¸ Q5õ¾i¿3CXFù+µ™÷ë·ª[Mµëˆ ¸ÃŠÓ;GeP¼‡êå±la@Æ¥ëê ÔÕ2"ı©º®÷!.ÂHØGõïn"qPƘ;¦þ(Bõ‡Œ¢/T÷ÀêdØÐåõ|qØm§.QäF¨+9Âó }^/«n3IÓ%*ƒ†þ®7»åÛ|·œPC\†ÅkæÛ·å|Úæ÷c24ènõ¾ÿ*‘—˜Gpßm¶‹ªiJäuL„Z=¢ýçfyX—Èˈ 4wài»èN}Q¼ ÉHúB>àd”ýB5óà #2ðú]4Ç~½©nˆË°ë×Ñ2ð»ÄAî˜÷¢ó.ƒ®ßE¿­7U3ýȆ¸ K7¬m mv ˨ë—p:¾Ï?çzb qæôì%£†Þ_Í»Icƒ2†î˜Sw*JˆË°¡ãW‹Iù’C¯ªÝü\ïéÝn#2Ðàþ³îJÇeX¸a‹ú¸+X–Qq¤Ú®*Q˨t£ ¿™.Q”ï¡b®Îqæõ [½T‹vŽË03b,1E7j³üÕ´ë—aö†5m1a–Qcçï·óCéŽç¸ ó_°–Œ{~¿?ô% a5ö|×l ¢2hìøn[õëÅq6v}¿,'ëaaìú?UWû’vqcß÷ëÃÃdÜØûý~±Þèw¸rÿÓ{t endstream endobj 806 0 obj << /Type /ObjStm /N 100 /First 873 /Length 1113 /Filter /FlateDecode >> stream xÚ¥—Ïr"7Æï<…ŽöÅ–Z;µµ§Tò›£/ xÖ 8ÌàØ~ú|b‡!a„Ý[[e,Ñ­ù©õ}-’öJ«¤YÙ ’ÁÔàÇ*c"F§L ŒQN“"Ë*‘Q=FR±D^Yïf‰‚²lñž•Ã+Y­\@ÞZåµÃè”wÈÛ¨|Ìù¤‚Á¶Î¨à±#û;¯"ÅYrAÅóX«‘÷ú˜KŒ\§wбgòQq®Ó'e´FáÁ`’wBÔè„‚Ç‘5‚‡³ááÀÊP^5&@¥ˆccˆs[—S8¸MàDÊËÛ‡w)ìq”@öÑÎR9d9È!Á2Qc/ˆbb^Ì Ç”S 'Â^ÐÕä}ë CyÆI GÂÄ+Ò:ÍXLB^ÊŒÆE(HåÈ$‰SD0†aQV$»EÀs¶ËÚ¬a㆑3f–Õ#Yv‘à ž‘ϘF>sð$yÎ)ƒEaðôc—e2¤¡ˆ_ {(FÔ ï(™œ9y± e‘öQ®…¡qÞ/bhÃpÐjÔÂpÐjx•}µ&o­q4cDÑu¢‹Ã+†ƒ%bb1É¥ÂAk-Ö@YkC^²ƒ~Œ'­Cu ­ƒ{œrûÈ(ÎúyS¾²ÀApJ†ƒ6€‘«´MËpZb1$¶‘}n= “Í-í±Ã4J·0pö勺ÿ¦îÿÜýµS÷¿«›î0ïêEßì¶wñ.Ø[õõëìf]o_›æû÷F=Ü|Ûö‹ZýÑlêßÔ9s·býp{û Ð]Ÿ®Ÿd@ÖõòPÂå¸ ΰ¶êÛ¾D;&d¸xÆuͺCX†J#êŸU÷R@å° ÅgTó7•P‹PQ¨·M[ !*™ÿ‚Öe’L©H#ê}ÿ¸+ rX†»¿¯_êŪ ûáÆÞï¯^¦þg.SôÀ§«@ÙeЧþ_WÍþÁàïÉ8fdÀx¤ê*‘*2]"çבs’/ÝóLJò"xÒEøBœÈ𦌟†—I“hÄ·ý5Q†Œ h/€E!N)Ò]"çבÂcû äõŽø_^EøBü\GÄ2~þ^(Íéþm—]_õõ„:Äe°ÓÍÛWËýªðÿvˆ‹`¬Ï°÷+°w1ìt¯öͲkÞ§Çâ2Øp‹ë}ÛL%Â2ÔpÛM5i˜cP†q#¦éúM”Ã2”Q¸@BTîEcÛe=qïGTŠ#¨Ù¾@ˆÊ@iõ%N/Ä ]Þl›^O09(Âà3û™cJ#ä ½½i¶õvývIÂBÖÐÚ›Ýóûjúp YCo·U×m‹IWžâBš;ÑúÅã… 3ôwÛ¼VËêyÒ˜§¸FÚsµx*ÀrXÈŠgÖaS½•`9.¤ ;¯¶Ë];ù"Õî–?2BÚÐó¯‹fµ(°ŽqÊŒß2ú×Ųê«_Ä ÝßîÚz;uó’èDêºyu¨÷SØ8ñþë:, endstream endobj 1007 0 obj << /Type /ObjStm /N 100 /First 969 /Length 1083 /Filter /FlateDecode >> stream xÚ–Mrã8 …÷9—É&þˆ]]½šš9@ϲ7ÙîRÅ–\¶œ‰o?”-9SƒŒ<ÒPŽ­ª`*c+[ŽòiMtò‰bÞXŸwÔÆÖyK2Ä¢ ¢®ä[ ;û€ ®e6:+{Øçe;ã’ÙOY©YIÆ'¤©™€elB$ ‚‰UÙE P`*Ö,55ÉàkŸ$ð¦Î_›”9S?A6Vb(ðˆE$š—ÓX’}²ÙzÙáÌ&ñ)…!£LÊ_‹HÕ "2³|ËŸ•øs6ãñp^rH ]’òð$9¤>HI*É‘#pÖ#ĬÑ1‹ #Buáņ•…ÚúD€ÖÒ5„ˆ$eîf¢¬š|Ö#%á¡»T±ð¤½UMúk­hh0å)À©Õ9`œòàüˆréPHò]'ÎþPb)‰EŸÉ9œ´Â¢`ääX›É»¬!‡h¶E³)ÈàIr è+"äÙ3úM1{ÆÅì§:{FË©ö¢!ÕI4ôœ Í£¥V0Î㸣ç,Ó„È"’–¡Æ†åøˆ<¢ìÅf›=£ÉL™‡2ÉXXôœYzn`–žË½a–ÖZôeÉ#…Nîˆ {¹$è "™+‹žsÖJ"2§„žs‘B§p[)kÈ?|ÿn^~š—¿ú¿{óò‡y<ÿ9mš¡í»çøŒ‚?™?÷Ãzßvæ×ãÏþ|l6æÏv·ùfFõy›ª_OOÿGr#©Ûn‡vÛ|F]e%Ë_Y}·k»þ0,h·%/Œ¼¾i·Ëgب*IñJÚÚÓ°[ FYɪ'Öqµ.  *Ii$VëÍgŽh: UWÊ®ìÂϨ*Iv&Q‘DZÍ$.’XKºNú¡ß]º~¿@²’ån¬¡éÏ»%+ËJ–ŸX¯§éõ¤ä„‰#e)DV²âÄöT@AU’ê;I¬$¥‰ôÞ@ïÊw _§üÈͱ?-*~••,{cm«f‰UI¢i¿Þ K’¨JO¤¶{+ *In"í å]a?SJÛkÏ&ÎP²3hýÄ™S*Ï ­N=qJ-å:ÕxÕwçfñ&¹Ê:–»MöºÅÜ­÷‹Ÿ‚iAɳ÷¼2LI¢{RÛ e”¼ÛŒ¯q/ÖkYV²Ü=«+³”ÿ9Çzo¾p& J^øÈë¾âiýÅ™÷Zv÷ªöVϬáT¶&º’–&Ú¦Û_ ¸qAÇóÕï÷å½)òdAɳw¼áØÊóŠ’H3ñmµ+á +Yó}ØîD%g¾ ø™(ÕLd%Ëß³º2K9~¾o«ã¥d,ëJZü@ë¾ i½Í÷àßc;l¾x‰LkJjúH•YýŠ*k:j¸ÝŠÍj½Ý÷íy[PòìÌk»Ãy(ñò‚’G3ï4¬†M‰—n¼ÿîÌ# endstream endobj 1208 0 obj << /Type /ObjStm /N 100 /First 969 /Length 1131 /Filter /FlateDecode >> stream xÚ¥—Asâ8…ïù:&—ÄRK²¼55§­Ý0{Ì…€ ìfl‡™Í¯ß÷ŒíljºjIijúëV?5ë²ÜdÆ:käüëLžø7Ëg£±¡ÛQ›¸ÅeÆ9îqb\äçd‘‹Üˆ—;Ëç’±Æ3Ò‰3>0J‚ñ£$š ž‹Â„Übá3-sy1Ñ3—÷&&FáUîÈ>™<2*X“2Fg’gT&åŒ Ñ¶ÛS˜"pOÌLQ°ž(ÆfŽ’匋ˆÁðˆTÖó$¬Ç&áŠaŽ¿òpFb…-’1CŽ—â™"%‰± óŽ± [<¡Ž ÀãÏØa!1–¥Å.;»PyÖix™ eÈ‘ÓÉ€O4¨+#¡X!GJÅVØRÐ#¯¶ Ig]Æ®Â\ƶÌu–PGÎòíµ<‡Ð_šŒ•Ç*2v(9€w"̰9“ïrÀeç»°ÙyPp˜Õ5 9BdÏ;ÄÃZOX ¼†'ðC`6œ (ôŸ<½æ>ø^³f޾’‡Ö¡›äÁrWÐ<çèóF^TÏšá9º?ö 7äÁsô†<„¡#äáXèyð§ïöFºf <éxðÍ`à¹xÇš§!Zä€çâ îƒç„ûÐ 9÷Ás‰4JR"§Mà9*C£¢žÄräôÒÃsäî4äH>Ü}ùbž¾™§?«¿*óô»¹oÞ^šrÙn«Ãcþh£<˜¯_ïîër¹=î­y¾ÿV½ÕËÒü±Ý•¿™A\ÙóÃïh¾§­·‡ãEQÉ œ¶¬gQÔ•´8Ðöí²­ÖSÚYWÒòÚì);YÉJ=kS-«ºœ°Î²’UŒ¬íaÛΰ(ëXy6²ö‹×fX”•,{Éj6ó°f£¤¹‘v¨êý Œ²’%#븫æ:FYÉnþn_Ï :UIî~Õ.~.¯V¯+iq¤•o»²ž¡uº’–´z½ÛÏÀ(+Yid½Ï³Þõ¬áî7ËM]­ÇéXŽOtÄ”}"®öå "ž(‰öo`7ˆx¢$³ÐV³<ËJÖ0 §õ²®šfëu%­Ÿ†æ¥lšr·šÔ6>PòÂ'Þ š’ÕOD³*wíb‚êT%©Ÿ†×²mV‹ÿÉJ—U=ã«Äz5Ï;?SR‹kêþx›ºWÎF‘]S›ï·©Íw%µŸf½Xâa<ËJ–û`ám|ŽYÉê'£©êv»ú9ae%k˜‹ãfY¦ïƃ®¤…Z½šcÕÊ{R 3qÜmå”DUIêg¢i7åÌDtª’”.I7&ââ™’Z\Sg&â♊ê²ìš:3Ï”Ôa"Þö5>£'À³¬d ñ゙|îD%G.8Ûz–´­•,ÿÁ:ÍuÒV.IóeôuÅ‘v‚:£¬dõó€ˆõËû5ê¬*Ii$Í}[íe%«Ÿ‚‹S‰ÿW®Y½¬cÙþîÿؾÊZþžÀz]I³Ÿië[8åͰî’oTÇêþÛ¦Cº endstream endobj 1577 0 obj << /Length 566 /Filter /FlateDecode >> stream xÚTMoA ½ï¯ðq‘²Îz¾çš„ Ò/Qh/iH@V, û×ëÙ$„*3;¶ŸýÞØ³‚½æ?§¡~<úüÑ%”üÓÞ¢.­³à”ÆR§ žÀô²Ù¡óf]eÔ„XVZ$£Evw_˜»œAzÏÓ”òHÎð~ý¬wŽä=h¡Ð[w£A„ÞÉ„Aètöëf<À çJ9”ÎïQØÌ4û[f'Ñ2˳ô*¢Sô4jÆÐ‚sýz¥FQº„ñZñ«AvyK޽СaðdƒªŒ3蔃ÁîòÁtÒ*¤uy{þ7×U‹òq« ¼±Øüëp¹Î[÷ƒnƒH ¥2" šÐ ²è¥ˆ€¿&õzV-#+‹B„Ь=سÖ¢” y4ªQ|•a©I7/»Æ°‹J—Ÿ7SîíMű8€Ü)îOë¦^A•æöqžÝM,¸‹±ÖÏi½™<³Ó À¶^o.¢ýdíO‡õbAÁIUL_¢W6¢}I~ߪz¼ÞÔ£qhY%Ÿrþ‰%*ž®âÀP-.büm¹®g£ÑtV¥2vÇWÛy˘|³ÖOÉô=™:1©­2‡Y—Â66j†è0ïp <Ïž¬Tò•E¬£…<¡ñI„ÔTíW’þÄX"—&D^­×»Žx¹]Í=¤›Éþpë¿Á€AÆ|dßkÍäù-ú'çèÕ ñö|üëgï½×ô/ÂL4Á endstream endobj 1575 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./elk_silhouette.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 1583 0 R /BBox [0 0 818.336792 550.414001] /Group 1581 0 R /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >>>> /Length 5438 /Filter /FlateDecode >> stream xœmš[Îì8r„ßµŠZ,ÞÉex ƒ<~¨y°½ÀñERªêÓƒFã?Ì’(2/‘‘IþÏq½øïÿùú\¯þßQ®yÖ1^i̳¥üú׫¤ël%½RgkIãz¦Y_©õ³­ªñ:ó¥7ªÆu¼Þ¯£äu^Y¢<ÎÒÇ«Ô|®V^IS­ò*ý:¯1_kž©V½PzÖT¯t]gZëõÑ #ŸõêÍsŽö*3EËIiž¹è£såjúB,Ss¬qêÁT´šš™£^éLCsÔzÖ•_õ*çJS ÏÔ«C²‘TXxÕ×¼î^ÎZSè3K³Ž‹ÉΖ­œ<oX9ZúÊgïÓãkæ—¢'<ƒô)måœÎ¹ª?¢É{z$Ej¨eþŒõ{Š7j }îÝæ,ýMm¾i1l¹X9þ¨,QfA#C¿ä4ÎKo¥§sIŸ9iÏz£e½ñ ß¶ÐÐÎïßK‘áx¿Ký²y®Rûëà ©YÝ2ÄÕûw )Ÿ)/ó9¯õ*W?»žÌ¹Ÿ×e#Kªû•Dí\½ù3lù;ÖjzþŽíË“„äHÒZ—J˜•ŸÒ”#4¾ûWÿ}ÿMòyý÷QG÷êkþí_/$Xx ô¿òËWszÆ2J•QnµEMî6åìUq´²–Š¿W«þÊïW“Wæ«áÌG+z4é•2Ï¢HPø(0ªÆ2põ+òM¯£H½SkoÄŽ|·¤3króÖæ9"ÙŒíµÖ¬_9³X"}NVÉ=M•ú‹«²÷ô<üSÑYõSY‰‡K8wm„ï°Dž&­ZEîþX.šZŠë²ÃžHNG”ÔQΫy"¢¤jꩨ¶ÀQ¡mÉ“géëm}2ïÑdçÌb I¯H ›.÷©Šs©¦]±%þfy,A§v¡Bìó+iyüå‰ÑêÏXÁœâ[’âïÁ7³´ÃްS»ªíÒÍVüÊW²’‡EÞØ,û@à noÄÎnIh§¤þ|¶)rójVg=Ùk³.fG’Úªµu ™›à–hÎÈ¿²¬¤h²›pay™ò4m:iޱlwLÙN›d½Ÿw–æèë[Ï{Šª˜Éþ>~¦yáÕ±’…5R Þó™&àè‚»|“‹·Ày/ì¿íu`Óó„œ6c¿g º&¿?¢WP¤¢Ÿ…(耟€7ï—°ìõÞ~Må„ ‡÷b[rj#[DÔ”<§l­üê4TÜ¡yÜj?Á9“Á´ué¶Kh}Ç1áû‘Ï7~!¨Ç«6¿Rœµð£ê !Û÷_mÙ±ÉIMÙ¿ÁÏÀŒ÷_$uuÏ/*xædØK̆äìù½†a³aoý¬<¥ïßÍ~_‘Szæl"$[Æä~|nTƒcÆI½MÙ^QS×r†@Ò:VÝðÞ„e›!vw4=>婸¿RÜ«LxD>¦ÌÙ c­K]!Ö¦Rüºfæ$] P€@«uH¬a=|¥n‰‚àݱ>Ñ”Y›Ÿ9‘#èèõî±þ0$l÷ðý§€ vøxCƒñ ¬Ä¦Ãø²£õ4Œü¸È’‡øAÙâ\Êê¯Nž&õ,ù®¾‹¼ñËíšRgİû½\æè `ÖÊ@ †yùàI˜3ILÕãU—'ßÌ1múçŠ}¾Nv‡ù|Ió+ÌqÒ;`»H Ž~° Ø ˆú8WÔd3îIœ`ª‡p¯;îñA²î+í7âØaÿc´ô1ÁÛ^V¿HZÒ!Làóˆšè)Ä­ Ž œ 5ð+87ѼÇL<€Ï#Ã¤Ž± ¤ñÀIö”zE<–üJ6h(OèWvÂ{+†–ZÌ@¡žœíâ0]ÜÁ©±›82¸ÂKÈí7Â÷êÜd»¸{<™·‹‡ÒWÄ’b6·ºyÀeŽØ»!\“ˆ64dÉ’yyõßÈîr#¢Þi8™[öw.œ$<è‰8Á´³”4ç ÛG±ÙõMÇ‚\ÙÎKh¹pKÌVý¸nE‡iŽ!ªçìò˜o€£>’Aˆ“õÉ%EÇ"ƒ˜ãOÑçç¡°ßwœ¼ža(‰Ì8ž¤€õÛ[‡,Yk{}ØºÕ x¬4›æ3µ°Ž¹:Ò®Ö¬²åÜ”ƒ1…c¸ìï8hÍñ§èždRP0j„»©x+ÁB7Äz; ñàc½âí7,…’(4Â8²ö€]¶ö…v4¤ALªÝCNõŒ¨÷µ= GÒ%nDD2Œ"·#{Üt¼vVÔ3"ÀZ´ñâ¯0wˆ©_ùŒs ’œ‰ †Ylkã?ãrnVŵHb+>OÔð¶='ãr%¬z[BÑNúÖñ+P•ðF~ÿ}ã2JÿŽÊãùÈVOld…–Ó•­‰¢¹ç®Z å6·Ó°‚—˜ÕÄ: Z¬³w›ŠÜœò_$I5û§àÏñû/>c0€:n´=Å‚HŒé]½í.¥ßT1†;dXõÏxÅ @Ð;L{å‡Dà ÝJÆ‹ì?”nÎ(ô³¤»+q3<¼ bÙ«1vN;¹Øø†j›ÙÇ4{"(Q3n(?Ì'Âa3ë'µ!aÏ·dËã×WG˜çðJ2~{7eòøùÆØÜ<–…R$ vŽ6¬µÛÏžáµ+“ñj¿} ¸ÄþŸéh½\0ZC¥š† ¤«fʵyÉhÝ }`7‚FogqAJ4ˆ_ûrÎ4?(aƒ¡áØãtìÑAz<» · pc^T h6Šó„5(•ñ¶ä™ª> :2´õU[°-½zTí»Ú(xºy@.pà¾\Ÿ?ùbR¸T-–ÚóFúZ– Ò3U-è=j2ƒ×ñwÑ€•Ži ^4”‰í7Ü—òµ*”kàüh{g6i_~)š_éû`îäQÌ0îIwhj†±Ûo·XÅeV2D’Ü®â])m8Šp‚ßÔtP¦BÕ„}4ù¦hf‘S¢7F=j.P—Óì=Öò$9(“Ü çÌß±wöó 4uY‚nøÒ Õˆ}ûý½ˆIŒ‚„¾žN5ZTËÉìÖdï„䎧–!xÜ®]º”cv51àþ5¨‰ç™âf,|þàÛß}À4BÙµN“Tµ¸Yt¢^ÚŒÀ€!”¥5{]LÂÖ&¤¾.—ëE õô´“$QÜ?mÆG5n“B!{·oEOT6~«ôQàæ´’`Þ¤¦" × ë½2¾L?¢|é¬BîB£¸ë‚«ÚKŠ{´~ÅÉS‚âLÕÑôE/VsCtwU+šã›‚Z¹™GiŠÒ®k+›ò÷«•,¢ô9é³FÛ¶Ñ\fY´£°l=”AåH»AÎî&­ô•!mmº°‡˜åY¬`÷&ýlEN2¨Ó_ }·Õh'0YîÅgô'¨°s£Â­4¸Ù+×8! ;ƒ·ä-ƒ&Ë5ôm í†\v¿VS¹Ÿ”sðT‹>|#q}{¯4â½Ñ6¬›»)NãfD·Úû¶%Ѱv íNZ¤IüsÐÏN»2Bä$åEËQQ &éŽþC\ä'‰¢ÙoT<œ–H53š¹‹j²¼Rk6®[ Õ¤EQ±H m/çÄ„“ Iè+rš!Š^2jR íV… t2 í§œ]q“Ø o´QjtZ UáN‚µr£:Áu…”EªýÆ0rTô;pl,Í'W2K×ÂOƒ<õˆÍÌ¥R–ìÒÎEcÚ{+ðú š’$¥3²(вhÙaâ‘6ØP˜+*Má[ ðê<;nÚºç{>希HZÏry§1ÕëLØÛ^@á_šŠBŒ^ô;îßAû‚¦»¤ï)$§ôåôF´Íã0VS›¹s^.»ËP.“F„,/L’RHê%’M/4Î@Þ$·wÿiOäùM²H]½T—Vtƒ8.ÑÜXЖ¨þZÂC Cu*éá~á ɯî@‚Øò%o®:S©“”šc²RqNé:腱ܚàÑ= R¬4Ÿ0åÕn‹&Vi†íZm(q#ýÝ=aÂÄu勜ú>ؤõ|QæqÚYoî€)(“²¶Ý”ªBÛHÊô÷‘NvšNôÕ xˆ^å8*;SЖ°Ç%ºdÃ;IÅˉÉÕLwv!rþwŸ$ú#ûtäÈÆàýFgŸ2ºßås³´)/µ0‡PYÆöNß¹DˆUƒ[õ$S½Ò8ªÈ'ú;Ÿ ·ú.àt¹Anz L%9~tŸá¸{%ú°Ä¤¶ïrÈEN³—¤8wc½€>q-î"H˜(é뮾8…R9 ÎÕC””8¯º@eŽÓyŽ›iòâós†•§Ùáòeo3dP*ÉÃ1G™Åé´û%z G2ÐûŽ•å2)±n £ŸèTkQ)ÊÌDëÀåv½"âE&sdKR ,É‚j[ALÝí‘{8Åj*+ÅíójU û¼^q¨¶£è$ZP3’® .}UL&K£&ÊÍÑš•ñ¸Ã&ï± ù:1ö`1%~Ùf´u©ÜÆ‹F‹î?—o&âÑr ª/Z¯ôá.ÇÞC|!Ê—?$?Ô]ˆo+A±@tÁçüàÃÏâýõ9{‰ž‘B˜4ÇÖ:ì8;ä1`qOÈhÐm1L¿‘ñ@s&¶1濚¿nAMQ)>ÃìßÇ©]`¹ÉAYT}eóÜ펲ì3Ünˆ³wa/¬(uºA²³×håÒ*bžI:ÒÄ×)P±ìÎ$’HÕϵš bƒös]¦{” zh¹µS® óÂ*"ž¶ÜpŽó%»¡sRtÙhÛÎbÇ.šï8nžaÙÙg«ïýXÅî3ßt—¡œÅY*9¢p|¹·—ɺo©–ÓâÊÇÚm ˆf‰¤OªÏô(9#±=WâÝ¥»Oæÿ‡<ÏeÔ(WÙÕ…Çvó·Ù³î—IÈÇ|›s@Åôïø˜´Ë(±‘U³üiÚK¸óÀ¸Ønð®æâ'í|ÀØÜŸË:\Õ?2-w¨‡ïnÙle{1Pý¦‰£ŒU–uËàBç¹ÄN¸ŠQÛck24Çɵfõ˜.Ö»ÜÌK6Nà¡eˆÒáHt¥†´•.fÇž)m%ŽälIÎ÷õ¶W©  æÉ©g“ô·yœ‰[U°h ŽÚ³½V´TòÖxgZ™c5s8Ö­ ¥FnmL—Æšj”6Öi³`œöW:ûÁj’‚“¾S‚I‡ï—t7›65©ÁYh§©Zæ®ظ‡ï[ðןïÑ´u¾Ï63ˆ=>(¨œÿЋ½G%ùv"–ÖVLQâ•DÐ÷~öpyž–¡—3l g$³ÐÁhœkú„¤Æ>â€,~ÐùÂv®e¸xU@²//,—4°Jº ÀÖ¨¾Hiƒ+»A¶ßÀ¼ ;PE¥´Â¿÷ýG׬-î7Ošà^7ð4™‘|Ëa¸aåÚTeƵɛÛã·-"ƼbgnRt?Ov¥í‘M>x“Ó°Ò[À£¾qزëˆGp Ao?ü1Œ+&`zÅ8ìÁ—"á¸ÑeÈ}š¹¿qp7€†'éŠË“Ywk#ng•Dö‡}†"e¸ô¡$QŽoyV{Ö=~;paF·ä¸ãüûʰ»ßSþ€ E9æKa€{Ça®ÕÈtë–3%Tâc‡rÛiïåã(öîdÎêV‹ˆ¡3oöýÂeD/ŽÀìtïyd7§FÛC8¸J¦Càd1Í8òˆ+”;¾“ÇE“)&cMÿ~7ºB5ûƪ´O çâç3nçõýùW[E-žoÀYh‘€35Æ6÷V#o!™—2=&·f€ ~LJ©eÙo Çy2…ºç¼»ŽŒá¹œ*µx¡¹ ‚=LÔ?ÏW‘ÀœS0šÑ×¢ IÆÌ¶?”ƒ»°3#7wšXEÃn yL̨ó+áúÃ=>Š£í÷•¼«y_^@Òˆ:6ôË[³e r·~ßÕü½·»½í¹ç8Áƒþ8 7ZQ£OB¦0Á4Ç ¾™Q|œÊCŽM†»yô-}náó×jIwñußæ0·§¹j»Æ¾»’)µ(Bè?t“-C0Ð]©*Ü×Qà?ÃÍ]¿ÒHd)Iô«6åc\ÝÇËt=•0}äkÇ#:bŒÝ/Dçwüþ›„1×½Ž_tãç)¶z]û ¹cù>PL9åóõ’ºY5í+ÚÉMò+?#®iz¾í‰œ÷lÁQÜ%Hû2h‰,Æ®KØ1GÝ¥|×ãaO>nײkôÜ<U"}/¸´Gq>%ŽRÓ§pWÛ}„ÁA§s4Èàt“Ū¯zË´$ÝKˆ ´€kØ·¦èFPÎBߨw*§ K[6qõ|¸Z}>÷ò}§¢å%Qs ;Äó¹šbíûÚ~…,¦h¥$÷Šéf•Õ•å[Ž2šµ»aùueÃÒ¬Øt|‹wqèuQØWʵ¯.Ôw69è´Br\¥¥Ï æ½ë}‡úíQ¾n„p•–^øUÝÇ>ªqc°Þwbè±ù’y‹žHïÑ)¡±òúÛô÷ëOÉçßHþÝÝõÿ:þóøâΜ endstream endobj 1629 0 obj << /Length 1135 /Filter /FlateDecode >> stream xÚí›ËrÛ6†÷z ,©éÁIJÍ8™fºheåfA‘Ì1/ IÕvŸ¾ AËÖÅ5Æ-ÇÁxdP Òÿ‡ƒsH,Íç#(2?\IÈ‘Œ$ˆ‡ˆ‰ˆZƒø`~_,  „˜BΆ»cÐ(ƒ![× 4h/twÀ‚ÄhE¢ í¾ ÀiÈ:EÁ”÷ F²Í,ç!æXJÞU3{š»ö*bÆ‚?§DqçSäF2ó;3‡MwTXe³Ò–=/¥È‹üm'–-<¬æÞYy¹™yWY{a§Þ0©9?Ÿš9xد‹uÙ®Q¹o—gó:®Ì7Ýx¯Uº]¬üV :hñׯ¦÷¬PZ+äôôèOcŒÌÅéÆ¿¬ú¥K'™n¬Œ#Ì:Óì-ÓÔqÓꇓæ¸"¢}ýÈ ßÙu\¬òN;‰èÛš^îr‰­êÝ0øí}¯ÍoƒÕºµ¾yžÛˆÃMq2 þ~zX8ÄCÝo9ÀIÄmU4‡¤ º 8Þ>Ç£¡ P±m& 붺\µ‡01ñDC!wPH Æ»(¨ Üêrys‡—Kö³òp’^ (ß•ž¹Iß\e©‰ê(/(D‘:…ò?€(‚8ÚÕŸ;èÿN)OÄü'þÙP¸IbØÞ‚$§2×mŒ^—³~â¾³ÞOÒG_{_=²¯ŽP,2§‰Gñd‘ 倢®nÒUáQŒŒ£ÇYô19›M¾Op¿©ŽÆ FBª0”ˆƒ¤˜œC 5'?©ŠÀUß´2*ÌQ¾L>›ì[ÄBjÆèÆâHØk¶s¤ÆÊÈg”O‡3Jìã'K}í“üq‘Ümº8$ùI/ÿõ@^ÊFrýTçm¬½ÓÝi1G« ÏâÉ,” îÈ¢ñÛ‘£³pHÿÓEûËÚ§ÿG'rØ;äÿi®Úy.‚ÜܸÃ6@Z5E³önüx,X®”‹Æ³ŸqØЫfÞ½æYŒÌ;±0¹w£º'ĉÈCy½uÓ:¨‹EU'Ã*Π@ì„öñÊÿîcPP¨½çï„9aÈãÖ/RÏF‚Ý^ âNHª$ñH^ ‰pB²ª¼•Œ‹äΕK'"M[ë¦ñþãð‰¸.âk—Ús‘ƒrãP/ü õBNƒ:äâ‹:N²²öÙÆ“Y·7|rñES´7+íY‰Åæ46: QBÞþ[äý¶g³ÉXÒ endstream endobj 1409 0 obj << /Type /ObjStm /N 100 /First 970 /Length 1660 /Filter /FlateDecode >> stream xÚµ™KsÛ6Çïú8:ŠX¼3žÌä1N3ÓN;Ii$™¶eK¢JÑñãÓ÷¿àPå µ{¡—»À ì.(ÀR—^”BjIB9þ«„ïVHx †)HE䢯ÅfM^(ã‚Ð%k ÁJ í¸—²ÂHd] ÉZ ÉZ ÉÚÉÚ É:ÀAÖ>’ \öÄ‚Aœ–Ûà·±RÈRs#«!9ne1€Ä aLi%è’ÜÕ¡1iîë¤`YÂCa"`Püª×«Å:/yhvß34ÎÈãa4æ=¯£Å¯V±.` )§À9vH³ãžý3<_ÏS0%¡Œ:<‚Ž:Œ¼eÉ *I HL1,&ÄnÀIÂè,YHÑ5D—H1«Lä˜ã[r;°ÒÜFÌc;ŒÀˆ1Åù™â| ‡øÆ0¼œA"[²¦8sÇÉòÒÍI“ !˜'É3ˆKG^q;„›¼åvˆ7…èN!ú‡ˆSˆþ!äª$žL•†×1W%/±AÌ•ŒóÅâ(éxpR‘dÿsE-ƒ˜+Š!s諈­:­™‚H+c˜‚ŒV6Æ)¥¬Ž’…Ä«k¹œ+1\ÓÄ g`Ð*¬“A wynÞ m91 †ÔnmEÎoP%'¸ RŠsCæ`…¹/¦eƒÃC1ü$†ïëϵ¾«ëñªš´ÓzQ¸‚¤z!^½Ü4Ó¶ªÎN¯Å׃Oõu3©ÄÑtV½†â,”__¼øOoñÎ÷àÎ3i¦Kû6šõã`ÈäÙï¬jæÓ^`´d]‡x^Õó^ 2y¾Ã›ŽN{qÐgÒB—¶8«ûq0äñ¨ìð®–íª—Ç†LžìðfÓEµèFK&‘:Äå|ÔöÙÉëÖǪµU/0Z2‰Ý YÝõ' ô™´n…´sÚSÀÑ’I´[Dµ—¨²‰Ýù6™M//ûëncˤúêÕ#Ô«Lj·bn¦S/’ y<µ©˜ÛÉWü.ÍñÁýøÝ’I”?ùﲞ.Ú'£©=;Ý>™¬ö—7“'³u/{4®šöæÉpÓ…/ÇU?†LžÝâÝLF{€°dÝñ~/ñ>›è»Äoã‹~ ™¼ÐåÝŽfË‹=>®myT½©¬»Ù¼©wR­Í$É.é®u—ÉÚ”Ð=Í'íÎÞ¾Öf’Ô zHÐf’ôwR'“²©„ûqµZU³&}&ÍnÑÆ{hãLÚ¦îϦ‹åŠ•™Ÿ8³ù¤^\î¢ÖúLZH´yÛëWTç±L™Xms¶K‚2“³ÉõûeÝNfóݼÚè3iÔ¡Õ׳^ô™´”ñmÝ`¡w`kõÖq<‘•â£MÛ†Ÿï–•þ1:¯÷õ¢­øÑЦޛ†«Ubµ>žEÝoÕétô¦¾Ç¥ˆÁäµ,|8€ÕÂ1Z·ßÔ×Ëõáß7¿mª“Ñ´©:3ºhÛåËá0*Ï›Ñòb:YusÎ3þÑԧדê_uÚšgteÀËò¹-VKvurg yW}›Nªïß  ÷ØZ²/þ%pÆÇ™“‹ëÙì$‘wÛ‘pX ƒïVÃ#,¯à¨ÉxN-c‡_~_"ÌÑøaÎÇTgŒ˜ôäSÕŠc„éÝ<¯n[q2x4~–ÂNü,¹ÿ¿×‹E 豈§qv+Æ7‚M‚K‚OBØ¡L‚L%A%!‘C"‡D‰9lȶ,“ “@IPIÐI0I°IpIðIHd™È2‘e"ËD–‰,Y&²Ld™È2‘)‘)‘)‘)‘)‘iMþ!Ü1"Hãëqß.®Ã7usZ51¨òdøËðÃðíæ…óéuìdQb9~ÜÉxS²Èk]ØàÑêµØÙ€6»ÏzW|N'¬ÃèFHï ‡ÝÆ†„G} ç÷ÁX¾áR†‚ŠÖšÂyù¨êù½ PXÅ7†¡à<‹JT¤õB?Ÿ€²€´E‰ú¦Ò|#‹íÙ‘ïŸ%ýœ©!%|1Šš-,ßL*üE!£Òø$¿×—-wžÓ¡ÍÚ`O+ø¢XIlÿØš±ïÖÙŸ¯ =¿+Îñÿ!|'}·”áŠzþ0‹O†ç«sƒÄ%ø¦ ürÈ “ú?òÕS(¾&Ç7M)øW%ùLbõByÙ£ endstream endobj 1687 0 obj << /Length 810 /Filter /FlateDecode >> stream xÚíÛOO£@ð»ŸbŽzè8󮛬&{Û¤7³ ‰ à0­õÛ/®YÔH×w[˜­›7Æ`kÒ_žyyF¸'œýç5© ë?d¬©d:Ò$’2¡"AlNÖäûëOdäz8~Yž]^qI8£1‹9Y®IÑP ¢CFeÿ‹ËŒÜœK?–ß.¯DôúÜ ùþ+ö|ÖÚ÷ØæÏ'¾}Q¡(~ŸG/’1?Ç^ÿøÐ¿Iƒ¹YpÉõy¼ýöBspN<¤RăE°Ø¥•MÇ(BMU(Ñâ@P¨w$B²/H2‰ü˜¤0ÉήO‹ä¿X¸ö(ÉÖ"ÉÑ$áHä ¢?¹ÍV]Ž ³‚¼ÊH)‹Û{ñ%DpÕòI"€d‡Ë–Gy\Ù2C?£]P‘ûdã]{Y;›¬’z4 RPÅÄ? È áÀbªbùÎPÓË®¸ë§9fâ` Ë Ÿßu®*;‡s[Šy•¸mÓ¢Åì€J^õ TÒ> Å,/—PŒ"k:¤˜;1Ì¢¬-ZÌl!ÌÂ$8.f·à0 Üš€D‚öBd!)mÞ"ɬ$à —€þ]5v•Ž·o\°¢Ø³` ˜EcÇ7¦~m…à?Ëÿ‚ái+äý"¨ß•M²Îµ'‰On1 @ý~º´uÍøÈÀHL bèÒ ç¶§¹ (à¦ÜÜ]‡Ÿ+ ¶HÅ ‹.[a:&'/ŠI°hx#ÔqÓTyº©råS,V££\³.w˜ŒY“1Œr‚DŒÛc‚Á˜&€öm:—àn¡·‰(âfƒ$“h  ×)Þ^èQDCDŠ"A‘YE^Æ9 ™×Y׿E|ePÐëÜ´îI<‘h@A¯ [fwHâ‹„Ið›ãI"  ¬×M×llŠ{&S0ŒWCB\Þa0f Æp¥]½nM‚5ÄÛJèêµë¯±PÄ—¤ªo±ª{Tõ[:$9ž$†‘ÊzÓº´1x¯Ït£h@Ioo÷Æ) ~̃§]’ˆ,BF9WÏïâÛ'¿.Ï~»ö›Ã endstream endobj 1738 0 obj << /Length 889 /Filter /FlateDecode >> stream xÚíÜMoÚ@à{~Åáàe¿½{m•Dªz©Ä­êÁøƒXØØ± ¤ÿ¾&´¨“€]¢Ž¢ÈQb@ÚG3³¯qx$œLÛï{2'¬ýÒΧšùÖ'ViÊ”±ŠT1IÈ·ÖžÈÈýöøi|3ºãšpFsœŒb-•F_2ªÛŽ#ò} ©eÃã/£;ewÏíÓ·?±ÍYeV4<Úœ·ÿœÒ§Fê?çÑ¡§ëç œëõõÞzhk‹A¾{\s Üþ¯=#¨/ ñ¸¤Z¹- ‡‘$éDÀH$’ôF"$Uš‡q–CÑŠ¦þÊõcìƒï¨qú€Aý¡ ¢YÙ\We\{€Hv+CoE4@$¢ Z#Q†r½êÍÕÁ©àü : Ä"Z„ñ$Á&Õ]“ò¡ X]—„…ZÌÐâÝfá hщÅvj;@¯¦³0Ì¢,2´èØ‚3èË*Ãþtáþ¤_8„áÔ 'w“›3HIú#ïæg‰—BÎ'‘@H_¥v®M‘¼ êY$g“(È} œˆÈ‚M‰{Þw[hàž×‡adA³¼’=ïÕrÀŽfrÎ,È¡ˆKìSg›àèp “¤ÎѤ/ÈèM’NpœwKò2Î9‡ˆUˆA¤¿*Äõ&_Uiãëb'¶XÔ›*Í—S,³M|`’z'ËoWïÏDÃL*$é”dg´C’z^äIú„cäb§Æ$©×i‚-«¿–Híˇ<@’þH¡}9ËbÌìç“X‰` ’"Á[±ú3¤öåcVãu”nI^6[ÙWë.G‘ÞŠÜWu„Hr6‰’‚ûSˆ·=t`Ò.ºØ]Ìõ[YÌO(ª´Ý,©zNèÁçb>”b}Uk²hÒùtèI+M±>ªÁm6zÂ8c¿Äk&nž?¢f·A¶Qrèq&ÄàkÆóúùIäý“/:`Sû÷ÇoÿÌY¯0ñd[ZÚlÖuÿ-ûÛñÍ/­ i endstream endobj 1636 0 obj << /Type /ObjStm /N 100 /First 1019 /Length 2379 /Filter /FlateDecode >> stream xÚÍZQ‹]¹ ~Ÿ_áÇöÅ×’,K†°°»!m¡…°ÉCÛ‡ÝìPB—™’L`ûï+ù^͹C»ŒËÚ°0ÜÑ9sõù;>²$ûà^SIÀºÑ ¸!©Âø“&®âFOM[‚VJR¬n@êÜ0W°+³ìk¹1˾AÒýž3 ËÝyX†(}Xš Ó°zÂ2›ÛÇû»Ì¿O_}uc?¿žƒJ& ÌÕ‚*å¢v«ðÿfñå‡G"–S©½ÙÐ6Õ\3ûj.6/Øž§‚ë©(f›#V3‰Æl­%ÃĤÈz& ytÁ[¶û<]O¥€ ]*àïi‚J_N…zÉìI½Z´ZGD½gë&&Ò[YÏEl:ÈÃV³ZÿEjO¬4Áe}®¥Vlly\B$V¨NpYŸl©ö¬Þª\Â…,ѨΔ õùÖz]ûXET-«Ó —õ —³xÓ\,׈NÔCXŸr©t[?õˆ°b@uÖç\ì–ɽá.¥fk!'¸¬ÏºÖ~ÚòlïÈvR–¥Ö§]ëŠ3·£Ùþ.³ÎpYŸw‘1s?b×¶;¹L¤\Ÿv‘º ]Ó.rɵOT#\Ÿv­3óýGL µl;² .ëÓ®•C{œJd´-Ún„úD9ÂõiºÚØGiDK7Zgâe}Ú­6¶ízÛ¾ .–n¤N”#\Ÿv}›*cSlm‹¿«Ö-sÌlÏÖ§]¨ÖÜžÏRÎ\ØJB(G¸>킵 ÅIâUÌ¥O”#\Ÿv¬½Å£ZI¨\h}Þ…B™ùh몽«‰rDOòîËôªð]:ýõoO~Ê–µ§»/?ýôþ—¿ç'töø O¿øêþîax5δÏ.¯ÆÁÑå üÈŽjümXò¸2˜ÓëO÷ÞÜÚ³¦Óë—¯ÒéííÏéýÓé{ýý?noNßÚh·wŸýäJÜßgéóý—On?Ÿ»Æ½¿ÜþøñûoîNc.¹ûªiI«íþ}Æ^ÿÉ@l*Ïßïæ³?NJÖ8(½F¿µ„a`F ƒÃäÈ5k s s s s s s s s s s ·@nܹr äÈ-[ ·@n,,,,,,,,,,¬¬¬¬gä÷Kט X‡}ì´…47˜èmh}?!ÐrñƒÛKëuJ›èmh}?!¥ØØG?!Öë0Lô6´¾ŸhÚlìƒKë’{›á²¾Ÿ°@·±Þ¦Y¯Sa¢·¡õý„­k볎“çæI½Mô6´¾Ÿ°œgc÷ƒ‹õ:½ ­ï'¬êXŸuìW,Cgi3§Ïëû‰†¶íÇV»‘í`æøy}?ÑŠoƒà˜Ë7–Ü'¸¬ßDZmó‡rvÉ»Ízë½&¸¬Ï»¬%™ùÒ Û–ÿe¤'TÖ§]¶]>ËQŽX¬$àD9ªëÓ.3앚Ô0W™á²Ad#qQíàb!Üq¢4Öõi×EÇ~µEpÕ‘d¢UÙ">ª‹ÌÁÅÒâD9ªD‹ÞmWê£Z>QŽjß ?r–rœž¹iíÔ„ÖV6(˜ÁZùH»U­$ÈDiä 1· ÇiˆKmF å ±u …%]íw™’Ci‹Éå8És’gôPÞ ƒ?">‘!»Ìpá-:dÿIs™°’0‘é¸mÑ!•ÐuRg$Q–-:¤êºdšÑDY7èÞÜÓbÉFf$QÞ WqyíàÂVh‚KÛ “÷¶ð¹.CÚ^m‚Ë©½·Åc^È ÂŒ$Úp‹ ÉíXÑ.CòŒ$Úhƒ iÍíµ$jû“2#‰¶ºE†¬í8ƒv²ê Þ"Cv8öŒ.Cvš¨Œ­m‘!ûÕƒË4#‰6Ù¢CR§':äÔ’Ö-2¤^K¢¶?ÁI´mPŠm€ýŠ‹¥™‘D¥l‘!¥^-#(ú Ø Czsû˜é\…l3Í‹àÒ{[x\E ö{F• J1««k—faF• JqõêŠ ˜ .¼E…¬xT#W!káÒ¶¨*Ç’vRûD5Ù¢Bö«#?äŸùÍõi×öt-ˆÚöDfQéÿ%ˆj{V=tÎõZ¦œ%Æ'Z¦PûÕZ¦†ê¦¡¨õPÔz(j=µZ]¯Z]­®‡V×C«ëdÿþ‹a`F ƒÃhaHF C C C C C C C C C C c c c c c c ‡B,ÈÈÈÈÈÈÈ—Ú$a†T7+ajÙ aRnÀÿ¿„©ðÛ‘0÷I˜—fdZÂTúíH˜Z÷I˜!ÍJ˜ºAÚµùÀ~l§%Lmû$̘—Y SeŸ„\f%LÕ}fp™•0µï“0cÍJ˜½ì“0C{™”0ûe·5ëáž~ZÂìi÷?Ø…ð_ endstream endobj 1791 0 obj << /Length 1316 /Filter /FlateDecode >> stream xÚÝ›Ër£8†÷y –°0ABèåTMºªW=3ÙuÏ‚`áPÁÆ´çéG22È‰í£¤í6¤R)»œ_Tørt.?Ê9 ùýÙ)@~јû4àw"Bý€°ˆ8µp2篫@ çsÿúÇíÕõ Á ü8ˆ‘s›9;< |*ÝÎo.÷f1¦îßUÛ䥸¾ñbæ¶eÚäUé͈¸_모­Xy3ŒC.ÁÞ¿·_®o5¯‹˜2âÌPèSëkûÈ›¡c7)Ф©–òaHÜï þñ[µu*ºnòB|òf„^ëgq •ò˜R×÷f4Æù"qôÈo3D×”†ƒ—hð¼W+,R7 ‰äÊq"!qlÏ)‚9…=§ÇU#—°CuˆÓF7  uô ¢€C¶p~&墮˜Žxý•?éïBö¡[Ôä±j±)4¡߲ÎÉc¦Ü%å|ÕÔ ­pĈMoÛ@Tø–Jý_^z8r#K02 §R⊎—ɧ_aäbާ`Ž£°HKÕ­ß'õBìK_“’RÞIRD~4ñrÅRñ)±¡ð°ìcìèæÛY#cp©ÞF¢hz¡ÅŽglÈÕŠW!îU=„•¼ÿC˜:éÀ…Æd²;ñ„æS•¥H›NQK.ÃîãÁ˜y. y·užÚ°Ôæ¶ 'Ä%‚¸„šKe5mI™QÉNÙûŒ¨K™‘Ž™(²Ç¢‹Ö:#2õÂCŒè–Qž¬îU¥º““yäŠzaÁëÕcû]¦}: Ÿ¡Ž1§”7·¶)cZ©’ÏÀâ’×Iöš¼c ޏ *›·pôl•¯øoŒù›,"Í¢Î` uö¦¡ý¢Yøcò„P¬¹µ…¨ml­ð¼¥îÜu ä‚u3-žT®?JpJSJ®”†²c-N9áã)£´²'{^Ù“ŸÉÜÞ·ØQ<¹’O!wãW€ê·R>Š1…L©Í¦…„u›%iS.ÁÔÉ|º¦4Œ† hj+2µiEc)M§¡YkX÷ÕÙ\ÔùŒk#3ž1ôAŠ>²µn°¿ˆ”såSdåmœ[äjdà cÿ¡)Åd:bn²)’å0jÍ“ƒ¶Ä´+zh©hì ÓûpD&Žrñ°L~‚ËËrÝ˲Çpl2x¬óe*ŠÂ’ÂVn4…ïÒÏÞCÂÀä°zÎçͽ%…N Œ #J Ññ¢ëeZ¯W¶(:µt¤#dõ…ø{Fõ˜à |aø‚L‘4öp¤x”|ö¡`G’mW÷y–Ú€ÐRÃ¥‘+üÆÙF´m[«žÆñ ¡yÌ‚¨>Ÿ! û2ƒ×ƒ?Ü)ÍòçÎ<ë¥ûØlµT‰Esxê¥)6½3+ 2c¨gSmÚóÊ¢‘1ņ{>Ás0ÝðfëöÁ£ÌM” õ¬¦™$€9íYtÈùÍ {†A½‡Óy‚ž»_„ié®y‘´ûNŠí1@{å›h"»0i~IKÆÉZùÀkKn\­‰äšµÃ=f<šPTA¦ѽö"ÛôNRfZWòƒ\¢›ò…(]òáùÄŸáå‰ÐÈ£Ú5Ïü|F‹eúVϯꉃbïCXÏ&ÍÚÒ&P”Î<Õ˧—ž9žù¥ªwÏðª`8ÀEJOöÀá¢Cí®9ÔÿÅLý“3 !ÖÑÚMáÞ^ý¥ÚD endstream endobj 1843 0 obj << /Length 1782 /Filter /FlateDecode >> stream xÚݛ˒Ú8†÷ýZÂî—,§j’ªìRé]O ·vú¤3ÉÓÏ‘1¶lLK€hðT*Õ }l>ÿ:ç—l¿ Šfð÷zDþH«±$Úhd„ÄD(#Ðr‚¦èË @‚>•?ÿ¼½ùã#•ˆl‰¥èvŠŒÁ\ ¤9Á¼£»žÆÂô’±Þlò8ÿè8罿‰$_Ÿ~,G÷Ñû˜Í'ú!D†§–@í¬1= g äª|»ý\¢Aw*©î)Sÿ˜ åX [¢±>šé2ÎtYáášEæ)¬½.6ÀE’’ËìáµÏLo2Ú°¨³áu6ýí=öi/?FÃ1& ɾYJ’Çñ¡Ÿñlã+4†uOAš„±’P6þwþ3³ò@ofEs¹åhÚÊE–Xx‰eþWo\œ'ÍÎuµ/ÄÆÓŒ(á#1µµqˆ'•nt¢S™W÷ó5Þhž}ÿžµÑñô"½CLqHEG]t"T^LO›·ûŽ{=ÎèÁkDÚ…ö[”Ü¥3™´oJíeã¨Èˆ$dÞK=¡¥ê€ º.ò2Mhs”qÍh.gXÞ’K†®ÓXe³˜Î䀹XO$Z_M¯>P2&´Ó¢L ÒÏéê5’‹=¯¡9wÅÙC§*Ƕ'{aÑp ÖÛ¿¼ää9NhÃE“_›%d œ_þ2òÚÙ¼…(´ï iÑìF3ÿ>î^í Ò©üòïå}Ô&¯‹ëÎD«fB»2ºôÉëÉÆ±¸ÿÑô5¢‰o€è+ÓΉxÊ’¬K‡¼ö–“j]™iX§g©Íñ{á!õÈ>óy¸‹œœÏÖ"φÙ2ýëöæå†æ÷Ï)¢B´B\R,ˆB£ÅÍÝ7‚ÆðËψ`n ú™‡.ÇLsø×}½ùÒv? Š ŒìÎňÞd@ÃU®=3Æ-ÖV$ÉŒ މÒÌJæ¾=Arn¡™ûö¦íƸ§| -.iEćêò¯2´ªÚ6UmE«cWñª¦š¾H£j8—¦2BÕ)ݪÚôÄV fÊ&JϹqÖL¯U×FæÛI…œ”¦ÉÄ¿ÏpÁ'££ÍZ+v­ãM˜™FÑp.pŽŠN1èVÑþ ':çx’$çôl4qz6pL’AaõF•hñžEæº|‡%-zÞuÛ!ãÕz¸ž„/qè¯ÀYwL±×ìÌö~Àr8^N 1×î ÷ioä¶]Zn¤{Ǥ~„û²x*½XRñùÝÊgÔ&Ö ¬žÿ’ÝysÕ†ži²ÛÝÉe6^e¿'Q¯‡±•^(a¦soõÚГM¶ØæºŸ,Ù: Mêšÿ#˜bÛç~1†-cõžo¬žû1\xÏŠO¶ZÏc¹¸wy÷ìBl<íÈTØ6æ?}+ºúl»­?çQþšZå,p·]<ÝT¿] ñ?8]i endstream endobj 1740 0 obj << /Type /ObjStm /N 100 /First 1020 /Length 2498 /Filter /FlateDecode >> stream xÚµ[]‹\Ç}ß_ÑÉKOWUW€0ØJ YI„dy "f7h%pþ}NÕLÍJ„x;I_0RÍjîés««ë£Ïšz¡Tõ‰dš!‰»5UrC“ª-µéFOãü呿ùËøƒüÛ4nå%ª€‡p­l–$jíšh°˜¥‰f«fµÄTÜꉹªY#±ŒfÖL¬ÜaqIÜÚÀL‰‡-Þ™Ïê–$)Ó^ŠkcÀšDº[-‰¡(ij x$éÓÖå™dŠYRR-]±*“1NUÔˆ¤Zç0 njbxðHíÝÖ•–ê0GtШÑ^¬ÕV«vCK/5ð:ÔÞ·Ö¤sú÷45rä dz³¯=µêÈu¤¦Õà¥á ÃÓ’à\CQÂV5·8aO*ÖÀ«Â#ÆEkê2ÜÒ„o¸ÕRo¾ xÁ>|t$¸Å¸`ÿGfµ’û¾5B4·8 -‚5ðq4ßi@î; c²±o-ÍÒÜêi²ÇFCIuk¦ ·Á‚gó'ðÒ³ûÓœ…°FÇ’¥ø#, ŸÁËñìØ«R=dÍÍE}£:þ(xm3ñOeØð¢\@˜IÃê&xO‹0{iªþ˜yŒôüV󨄉ÕhœÃj4}µ &±¨ÓL#5Ì3ˆkÿ)¾…ƒf[d»ÍS,Ö,T¤tÿ)þ&7ñ€ˆ‡ÇÄR=¢løßM,!îQŠd;g£øT7±0N3›‰ÏU„ož=»9½þç?nÓéÛ»»ûO7§>ÿøÉ?ÿñÃÝßoNßÝüéöã›bùáíé÷§?œ¾¿|¸9½º}ÿ)½= vR•³ú©Ívø´I.Ôñ­oÓ³géôC:ýîþõ}:=O¿yøüãýp—5Oùmúæ›ü·ŠÌ<ÌZA ­Ž<™¸Ôý\X°v{ä"š¥ËÝÏ…8ŸãaäÔ«Lyp]àÒ¶s©³amo+™q赌Ì]¸ôý\†`íqÝ#œ,Äð —±ŸK›Ù ЕˠŒ´±Àeîç¢-ÓãÕÖ3*ÐÓT˜÷s©œ›<Æn…J+dh?ž¹Xy¨HrÃÈ•¬ÓÝçŸ~ß{q÷Éa_X´k1â…]‘6ÑøÄöIü<½üxÿþ‡[PN§—Ï_¤ÓëÛ_>¥·_{á廿ÝÞœ¾þíݧ»m³+óWö²÷Ÿ?¾¿}8_òùÏþtûÓ‡wßÝÿ’Ü%:53Úía%ÈÊßËwb.áó÷ÝÅXßoˆ–__ C¨a\¿ÜÂèaŒ0æÅÐF k k k k k k k k ·@nܹr äÈ-[ ·@nܹräÈ={ ÷@îܹòäÈ#G @<yœ‘ßn=°“û€Sc¢ï21¦ñ¯Øý AÇÈ.;x ©6¬˜ž<±=ï/4mšÍšäÊ8òÄÏêÓTö—™6Ü è¨­©ufhSŸf²¿Æ´îNÀþØ <ÁL1™µ§©ìïð›º0ó0ÆŒæÔ.ý{Þßß·ê^ð‰g˜h†zSÛ•ý¯‰{óy¨ÔŠ™l<ÍdÿQnäN04sA¨ˆ1šOSÙßÙ·â^@Ôr6åµVá§™ìoëuº)œj†1ãN ùm[¯­ìAÛçt–Üy…Êþ\«ÍÝà÷–öõ…:àJEÕý€Á¸eEÅ71±ñJ :BLt?øí…å8ãVúB ¢cÄDø{4Ïñbþá…*DGˆ‰îÏ-v •Qú —cÄDø~}½–‰va¡"ÒZ¢»!1O¯CÍÿè uˆŽÑá¤Ì^óÌMx¡ÑZ¢û­Üð¬[ÛȽ/”">FK„<íZª3nÌ+\ŽÝÞm·b¿PD¹-l#$ pK9‡ ¨‘,T#>BG47`:÷¸•jÖ•v‡»‘k·\ìÔŠ,#>FE´['+Œ‚Ÿ×±ÂåÑýDÔ3tA\ÎŽá‡$ÔrU·’e,#>BCt?€ ZzûåÊ©^ª!!º’˜,o~7 ÕHŽPÝî—Ùìo ÷²ÂåÑý`¿äêY׸ÑXH»r€~ØÝgS»ÓMª‘¡º|6ÿà\V˜!º\§³È妦Û-p9@;sƒÏ󏬸{®P9B:Ô³|‰–N¦MH˜ðëBa”#”C÷ŠùísÍc.#ÙŸtMã€üð »‘7© ÅHŽÐ Ýî—<& Á\(FõÝ~¸¶ÝÆë —#dC÷ƒ7/Ó)ºä6W..P Ý.½Û$mܨ.£zŒh? vÏãˆ)™:ŠQÝŸv‰Ü×[ ãVêB ¨ûÓ.÷ƒç:û55²æn®p9@Åt7€Êù²ƒ ¦ü•SÔÿMÅœå¿P1¿T*¿Ö4ÿWÝrœUįtËQéÿÖ-G(l3Ô³êÙ õl†z6C—›×§.ºœýŸ ƒÂà0$Œ††ÑÂèaŒ0™™™™™™™™™™™™™™™™™™™™YYYYY9¤ck²/F K ËÜ©[†bºe;O¥¿ª[~u<Æê¥dp—ÕË:“/‘=¬Y[–/µ¨_žeSé@³Ú”±,`*§`¶óuíº‚)ÇI˜—>`YÂÔzœ†éŸ×5LÕãDÌË-ö²ˆ©í8³Ÿ§ÒUSûq2æ¬>ñ,˘:“1§ú€¼,cê5çþ †` ± endstream endobj 1896 0 obj << /Length 1243 /Filter /FlateDecode >> stream xÚå›Moã6†ïù:Ê«üÉ tè­hn»=¨’bI®-N})Q¦©ÄÎÐl"z¬—üd8|g8ù7ÂуþýÕÒ?\‰„#!E$OK%‹6‹hýy‡´EŸíëo÷w¿|Â<Â(QHáè~I™Ð”E‚¢„ë…÷Eô%‰JgsNH\ÒªX´³9¥,þŠ8úk†ãf·Éæ­OåjñëlΔÉR!­Ã³¹Ô«ý!}ü SêÒ³¿ïÿ°t¢/s̱Œ¿¢9¦ gÊÒ–NYψŒ÷!‹‡>ÃÓIE¼O4BKIiÕT(½òò’’ˆuˆ”¤¥Ô1j½ uˆÚý)ŒHš~xŒ¼.5àªË4cTãíÖ©N˜˜T?ö+M-¸0ÒŒZØ‹¾aZâ,-~‚…{X«²^ÔO ®£Nêäd¡¥zg†šÐMÄjÖÿ}E˜W0¢£ˆª÷J9o ¢= *Ûnûo—¯Àt®)âØYpBÅas6Àióî«~ƒÉôJs¶硟p äÄ §òÙº7ÙQè¸J!&ž‘&ÑN@BN$ÖY3pÌ Z?žxP‚ƒ:­  аxv«¬ãó4æ£=tÞe—ó˜ìšÑÆ !ÉÒ&«‹¦wØ;oF^)ãÂ,uvNCg¢z&‡¼\æ>Uë‘D¿àBM5Tƹü%$w'5 ëü°hy‘µÙ[@IÄfb 㫦Zôv¥õs7Vîxý,¤£ÛâÀ…ÉÀg»ý'Û-6#<:jÎÇÌ >ÁŠM;P8(ƒîÿêE×Ô¥ëitÒd©IY©0NÀº/\ë∶C~ÕäYe2宨§ÉÂ0(c†ë¦ÖåvãᆭүÉ:ÊD Xcã‡Í!“绵õ|¯"y®ù=É‚lè¼FÌÉÇÆ!7«u¹mW0(£sñ2Ì[u9–GH›¬ða¤en?‡\‘û"2†y P'rJO!o¦‰j`ý bŒózÕ´Ž'#{ѼqDØ""~ˆÈm!ÂPë‡Kˆú¢?!7ˆŒÇ^÷§{³zª›³ yÇeó‘Ø5H8$2`cŒ0—L›7»Kg¿®4^Àéõá4߈ŠP=n/îµYß#ÃñqËÙζ›\ßù{  öÐH:×e ßÝ׋G,ÌcJåbDª­Èµ1¦—$ßÏjBfÜ#¬ä3XôzXôF`-Z¢F°ùµ¬¹ëÔo&y}\j,ú†æ›f»õéRR§4–*Ø‚Ï-7Üœ32§3gо í'²:%¡ñ裟‹Æ£|:Mîëé€ pJx|g7vöQ3t[Pi¸ÆÄŽ˜*ŸûµNçl3"CïÎa°Nù‰×›Q ÷²MIzË„Ò#¡PåC¨Tý4„ĈÐÞ›Ðþ=§~ü±]PéròÆ´ÿ€Ù‚åF•&kг³Ž½‘d|`Ÿc•vÿ Í)êf:#íï÷wÿâøAÒ endstream endobj 1949 0 obj << /Length 1418 /Filter /FlateDecode >> stream xÚÝ›KoÛ8Çïþ<ÚkùÉ=.°-Ð[QßÒ´z8FlÙ‘”6é§_ROúÒTKE(‰þT¨g†3Ãä °VŸA  ú`’{ rÁ ÌƒÔd1HÀçTB>¶×V³¿> ô$”¬ „G| 8SWx˜sQºXb<Ï¢]GébI™… ~Ù¿da¬¿§ó›mü÷bI)mt^"¡R¡Å’I:÷ÔÂ{\¨”×î}[}jq€‡%‚HÌFÇ?‡`‰ˆÇ¨ìx°ŽÇk…nD´²cB±¸iª^Î)p' þ…Ô™‚aR~}l}}Þ¾þ“£ <™à³÷Lú·›ƒ‡hy¹£5h¡Aä>aâæø@.¢` ÙˆÓ8[¿¹ ¨•ÚZó;†M› 6›`°#±~{ ÝHheGp<^sШ•ê(,TØ/²ýA_ߪ×?ÆA:lž-Ð\Z,Ñüd¤ †¡øˆ÷ýª=Yˆ nÙ|_06¶—läJ¥õ•ö¦h: jÇCÞˉY".kÔÝ&uŠ2Z7–µ'¦Ù0ƒGêÈ#(æe|+6UÕѳ 4Ù[èjê~9ÀH\¹øCÐðKhÒ[ÑÆÃÕ#¦àEv4ÂDó#ÛqSÿv»¶Ú¡C½?Ÿ¢í8}WËêá(áóû·RgtŠfÉ]ê×çÆ€£”…9á–Ýů³Ø8ˆ’8Ûmìñ´QškíOÂ)„Í|ÔÂØ¤‡— F©4"d“(ôì0p #/‚"6œB9üu¥ØpM¥?¦mDZ±ÔYknÛÀÅD*aGGdøxbçS§«_!¢éÁާÒõž¨"Ђ™A¬¬„ãìp´)»Î®aGh4ñøÖ¸t…–i`u¾›”{vûľ_'å~]нDál‹#"'ÈÈÚ¾öù£MêfOü·D«1€ªÓàǽºŠy¸Ïb{È2ĦÓM·A¬ p_6œ6é¦pA¤uFI9žvïítl=q8»`ýäG댔±O< ÖÎ8GüÑHþx÷Ó’›QX{œ7(Ò}¶s!¡u¦ßL©YåÀƒ4<Û½SÑ:ãdy¸3Õ1Щsçí.sSÊ 6UÛî>©oOˆlÍp^çÊû"x ÒµQ-t;L¹+ºË@¬<î7Dâ—mœ¹)…Fûf€raxg²ƒá ]'± ™Ji6s&\wZ»Ÿ\4„~¶„ªA×!ý<4Ú&HÖ6¯3ß<ÔµÑcVåþQppèmœé¨!ø‹[ûð®%,AXÀ‹HÊÃü‘¨1†!`»LÄÚõè"’MÕ9/¾¯œªèá\ × Ö£'uæ4Jojíãˆ:5.ö7DŸFügDjíOˆ:_þž„Ù>ÏzðµÖ("¦˜-;°©²åü¿ÒSâ<·‘}—?–vÔK4<k«F°3,7A1ìft‡Ý7p²5mD•7çQ¼-¿ª”•æw ÒÖVލ’èu\äQðkœ˜S8йlEÖ’]ÓŒ´øßÕìy†ÊX@@ù«•\ÿž$w³‡oDêæ'="øQJw€x˜õÕ|™}¾ô ˆ2`T>‹âjId÷í+Sà «ßØÏÔ0cÊ·ðÉÔÌ“ŒsrZõ%òË•>_|é¶øy÷³öz‚£j»Ã;_xð>¦†}ä(O§f2‰¿™¢ìtÕ9ö$e§‡„n‹¹ÇÔŠõ²êêYúZN!~—ËKê÷27Ì|#q:7³‡Æ÷W_ù¼`ôÌçeUéåIkeWË :”N0©:nºµ÷‘ôµ]UœzñŠÕqAÙáÿã5¡¹ endstream endobj 1845 0 obj << /Type /ObjStm /N 100 /First 1020 /Length 2319 /Filter /FlateDecode >> stream xÚ½[]‹\¹}Ÿ_¡Çä嶪JŸ`v×8 $`Ö~Hbüàõ6Ád™ 3cØüûœªÛå`òZ"LOuûÞ£s¤*I§›F.)'¹&*´Äž [0RmÌÔ³”Ó°‹‰Ò´‹‰‘]M’ˆ[¾CTÉúÀ«tZ¢Ö-ò·ƒpɬÍÄyj(f±ˆK·ˆW»ƒ%q« mpIÜÏ;jâyÞÑ’äóŽž„µñÁ#‰T‹f’2AmHNÒÄ"JÒ»Eœd’E’J®mà’Bç59ïh©”óÈÔÎ;F*½Z4SvG)©f€""D]£YS%V] a…h£´TOIJOuV‹FjyZ4ScÓ¯æÔ¤ë½•R« §Ö¬ƒª¤62iTR›E[ÃC÷<m@âÎlŸõÔ¥Y4RAй­(g@õ>T«F©OV%q1F†2h’Ð;Ê •m”A«Sû¼µ„+”.Ýž·4&Y4ÓÌU[ë9Mšašââ 5’4›õ$žÝÆþcŽ©Zi׿,JAGR¦®T(­2èûŒNA¨ƒ37“dà%wÓdà%Ûëà@™•É ¢¦TôéIrEk­Q)Ja 5ªú:Z£n8К=z­q&å0цž6<Ñó´®Ç½\L\ðôZ€áÊúl*ÉmðN bô⎩“ÃWç‰> DŸQšÎé=ˆa¡`Ùf[hsZûybVf³hÄ"¥Ü½xqwyûÏ\ÓåÛûû‡ç»Ë›Ï?>Ûû?~ºÿûÝ廇ǟ®ï²æ‡÷—ß_þpùþöæîòÃõãsz7ú!èçÚÊÁxží¨èÅÚûqpÙ·éÅ‹ty“.¿{xû./Óož>ÿø„{?=Üýhù·é›oîðo—šŽ§—,Ç(˜iMÌZÏEL袇qà páõ\Øt@nŸ'A_q p‘õ\Èt€.ðn|`–¸”å\Ê4À…0Á%Ï£p p©ë¹ Ó! ñ:nõ@Š pië¹4ÓÕµ„¥Ü„G€K_Ï¥šZé­JGï3Àe¬çRLÌ#:Ę!µ˜ÌõLØT€*|è «Œà@õõI·ÉQÉ·5 pYŸtKV Ê8t9X¨ujQ_Ÿse˜ È-·ù jYµ¨¯Ï¹ÒMtQ³ù,ø¼Œ—õ9Wšéð%çJôU .öõ9WŠé€ñrr’–ZÔ×ç\ÓÁr‹.Þ¥´;—õ9+iÕÁ¦4a7¡ÜxjQ_Ÿs%›/Èÿ¤õqbŠD¸¬ÏºØcªà±n(Æ {€ÿÎe¬O»Z¡¸þ6Ë3MÕh¬O»ÜLŒÆ|:¹å•õi[)•ÁºJ¦R«G-j4Ö§]•á\éêߊ™=#TÖg]f“ÁFKÆv•eX͸¬ÏºL¦ƒžÎ`Å‹QÃåÀÞ7Àe}Ö¥i:€ 28)7l\Ög]¦ƒUiÖ#…©I,PÆú¬KÝt—å«f\"\Ög]ª¦ƒí^uWO=ƒS 2ÎõY—Šé€ ×l÷ªÜ¨ªÑ\ŸuILpé¶ð¦"Gj4×§]"ÓéóHÏtÁ-—@ ˜ëÓ.eÓº JÛÙt;ÊŒpYŸw§ÉpnÓôt3c“˜Eó«¬û2½Ãücàÿ.þË_S§Ôñpc¦ûÏ?ÿüÞ¯{õpÿl¸¯ôøTO·õüçåõãÃÇ7WÐJ—×/_¥ËÛë/Ïéý×OúúÃß®w—ïq½~Ò3Ȧ÷ë==|~üx}:.í³?]úôệ_’=vØö–v¡C…~ýá zý8¯7ŸÐ¾{+-;ö¾݃áÁ¼Õ/®ä{ ªŽ\¹:ruäæÈÍ‘›#7GnŽÜ¹9rsäæÈÍ‘»#wGîŽÜ¹;rwäîÈÝ‘»#wGŽ<y8òpäáÈч#GŽ<y:òtäy"¿_::c1Áuj šêX!õX†Ìõ¥¿VˆH(µv(ªÜ˜˹¾ô·©: ô׉4t!¬b[`2×—þ6L‡Äeؾr#Š$­õ¥¿uÓáß\–±-Pú)¯¯ý­š–̵®(¹L=Bf}ñoÅ”°#ÚÌJ Ù"³¾ú71%°Óɶ*jX%M2ëË#S–"º,j‚¥l›2ëë˦”A…Ķ´‘îz#\Öï»ê4!°Ž.‡vR6ã.Âe}òU—P$AIíÉ:͸‹pYŸ|ÝÁ¢E)ì`RÛ,L­JZ Â&å¹ÑÃ<“LØÃ$ÊMÌÛ˜‰š˜D´ÍÅÔ1ó«\L"ÞgcöÛ˜‰Ú˜D²ÍÇä–íä ìc•}F¦’À¶=ld¢Îot21vF;™ØÀî³2‘_´0…ÍLìô÷¹™­žoÐÍ$ûìÌ‚%ùøv&ÑÜægÚ!6ÇýLâ¼ÏÐt2QC“˜ö9š72aG“˜÷Yšö>îhËFKóÌxaK“¸ìó4ëù¨°§I\÷™šý,ÙaS“¸ís5LÔÕ$îÛlÍ/d¢¶&ñØæk26´ê‚„}Mâ¹ÏØDÉÖo÷FM’¼ÏÙÄŒÖ/”„M$ímÖæí\;lm’ð6oS¿ÅÑô-êm’È6sS{ÉFLÔÜ$)ÛÜMÆJS'vØÝ$©ûìÍ™°½IÒöù›(ݳµ¸¿IÒ÷œUlÿ68IÆF‡³Ú6;ìp’Ìm§äl_s [œTòFóF&êqR¡}&çh§³59©ð6—SáúムˉÞü›sÖÿ³Í9O¯ñ+›sžŽäÿdsN7äæÍcÓrÜò€=ŠÕƒæA÷`xàÈäÈäÈäÈäÈäÈäÈäÈäÈäÈäÈìÈìÈìÈìÈìÈìÈìÈìÈìÈìÈâÈâÈâÈâÈâÈâÈâÈâÈâÈâÈn0ÏâÈÅ‘‹#G.u§ÍyûÆJØæDòÝæsJ>ënØç¤R·ö=4ý%ZÔè¤Òö9è&3g¢N'ªÀ>«Ë"#¶:ËØfuJ®z¢w:ËÜætJ¾õRØé¬y›Ó)TmüÆÎJûœÎqî5âNgå}Ng={v:ë—EÀ¿q%& endstream endobj 2002 0 obj << /Length 1748 /Filter /FlateDecode >> stream xÚÕ›KoÛ8Çïù:ÚsÉá{ l ôV4·¶×Ä©;Š“tûéwô°E‡rÈ8L-!ÜÆ#rôãŸÃሺËXv…¿³ÛŒâ´šHªÎŒ„ eD–ϲyöù‚¢!Í>î?ÿ¹¼øë“£ÄR˲Ëyf áJdšS"ñÂËiöu  ³0 îçãI~½Ž8çƒoTÒ/ë‡|2+þ/ËÙßÑbgGæ–¢Ž·2IJ#?„}åI>¾_~ÚÃɾŽezÀ„:ü;ÍFŒ)lC‡WtÖùv1ý¦SÙ5t´¤ý¥£ƒtDEgs=YÁ ‡ ³¼ o0Ƀ ^Ðð2Š¥»·”,O%$÷„òiX>¥YCƒQäùçÕŽ ÂQ5œåâv§0kà€”}`s:)Ù€Ò¨íõl;®À” †lp„Uié„¡w¿½÷Ÿk6('ãR*Œÿ½¼¸»`åÚÉ2&8Å2%,Æf“ÕÅ×ï4›â—Ÿ2J¸5ÙSiºÊÐPsü×2ûrñ¹m-Å•ƒHÎ˶ÀÔ.Ì#&øß@ ¢)OâHM¬VÏ}kÄ -ëæb5î#¦,Q üá·qÃÏ%±<Ñðc[ºN¥V›ÓG_Q"¹ŠÍÅ3ךÁçŒw,´Žº¤ÏG]KÂõóAJ〤slŠ*<¸¿{Ô/o(g QÂó¬s¡ìùRËCOõÇžUcÿ°Ê–ùCeçì\¬è_®€Ž¿˜+­÷sÿ­òy˜Ia凔Ù÷Y³…#˜\õð=§o”‰<ŠUiéî}yg4óRŸAB$$ö„ã¤ô8§ÜŸVO˜lØÄËçñ™~xÇ·0ípxŽÚÁiŠ“m¸*°·7…½“°ÛC ñP ®6uõíÎüv6vm€ÄŽ$š:!èÝ%ôþ¤DPPÆEµY®·±¬ [wçc{[$ˆ Tm€ž Jãâö+^órVmƒêÈuN´Òº‡Ød«¶O‹«ÛYÎoœjÃŒ5¼O ˜; 2F⦒ú‚T 8LT¬JTU¢Ë«òç§|±ÍæÓ‡0‘åÙ‘$báªC¸0®bJ´;[w)ïãâm‚l¤ÃæqˆùÊxÌ÷Ö ­<ü°±CÐ"ب†Í|–¯q³¨4u¦‘6Ýæ`ƒtÃáj¶^¤w8…òÉpÄ~–·¿À¦ÛƆ«iX,ÆÓ8E ¡Sï3¼‡õˆ°H¬æv¾Ž$ƒ–¯Š±š8І˜m˜üÜlï㘖nø€>$k`ÏŠoãh”¦gŸ=¯Æ¬p486«ñ6ŽFaˆ¦]š!¡r88iêýv¼½ji)¯p¤qž™òj(Áò%8ùjQvó˜Ú:4˜îS, CqÕí b·4¥©[c½U…rðx¼‚…kpÒв6Y.nn‡ÅFœ/…Œ²ðX\‡v7 ÷ŽêöüÕ«Á´Áùy:œŸ]©¼D%Xu'+}ZÜAÜœ),Sïüß}ë†Á«tôפå(¢™Ì€Ib™xÛY ÐÄS¶U´Yv?^åðÛ<ΉÂSx\+”ï™snQÙ³G€7ýˆ C¤_,¬ „+™FØSÊQ€ß­„Z¦[©‹C;½nð†Í`½¸=ú˜å ²Õª@D Ä.‚Båødœ¥HÀÙÃM»Ê¤wôyKã« ‚*cÆÃT•m)¦cT–¤ÛJe½.§ã£¯àbZœbƒ—‚\q*”ò$þb„iåcqÿÖí¥LyJäÏ“ÎÃBÓ’€Òi„†mQ'´ÝÖBs{E¡mŠHV>žŸ³·jM£`’¸ˆ_åsq‚™Õ][+=mäÀ•ÅDX\8Õ4K$.lK2%®ÝÖâr{]Ž”«å,ßV;)_CIðú~Þê$hE”b>g?ËtÇG·Ì°þéh.ÃÃ<Ž)“F`?UÝý¦éÓ"DX–Ä;ܸ­D»wÎÔö÷"¥½ìœáËA…åÀ.é6°-»$y¿¤ŒO[S8#F¦qçA'9XdRc‚IU³?§ÐCQO '÷e¡Ã²Fh¢U(1º~Kaó»’Ãë×°Dp–Â1ÜL”ï^yŽÛ²w¡„÷&¹õ2]VÕDK#l‹CMûñÇõ›ö6 ª¬%…°¸öÜsεÚéòÍ‹ZðÞ¥8}hKfjƒb°œXF Ø”Öuþ5^n®ÅC oÀuâð%pf™Ô¶8çÖmu†]>9߃o11qJØn¨„û?ÏÖ endstream endobj 2019 0 obj << /Length 529 /Filter /FlateDecode >> stream xÚÝ×;oÛ0àÝ¿‚#5ˆ½ãC$3ht+ª-éP«V‘@²RE’__J´õˆcÓ.ZÔ2 C°x„Áw§Ó/‚ä§ûÞ5÷QV3Úhb¤b #I½"9ù²䦿~L®QfÁ"Isb ‰$ZSncúƒÜR͸„(朾e]5Q,„ w àkõ\g«ö·¤×÷Åê*Š¥”›0–[pAÅÖÊ¢Xüÿ‹´vßÚ·ôsOCnc45Lï‰Q0%í`ƒcnè‹™‰] ˆkk$¤Œ[<©ãˆ´# ïˆ^y™5ePg†î‘ö6ñ"mÄÖÆú›2kiš °áAÙÛLeÜÙ;…÷FõävŸ³ËŸ+©Iy¤¥»ºzzZ߃-z=x%B̰E‡ó(Ù!ZžD´ˆÔ?H©'þKI$‚DÚÝÊõcÇÇ ,Öûäe;5÷>­?ÞÚXícq4Y!f˜A*йl€š:W\5z²á¥Õ[Ê'åí×Ç®/WMVøÄe•Kš=zo7±3™N*»–I™ø¦ê¹Ø›]Q7C!Ýar›Æ/pfN™&ÚÌÜMUwíø¨Æ½ VηÜìä~¿ŽV24H\bÓ2œ¾J¿þŸ`ˆ endstream endobj 1951 0 obj << /Type /ObjStm /N 100 /First 1020 /Length 2260 /Filter /FlateDecode >> stream xÚ½[Aœ· ½ï¯Ð±½h$R"%ÀÄp[ ŒØ‡¶†޳(Œ»Åz ¤ÿ¾œ•$‡²ˆTÀðrvæ#ŸÞG‘Ô÷fë,#•Tg™©¶ £–DÚ‘”º°œ´43Z­›ÑÓnHª•Ä,M0ôÖ€K¸‡ç½á¿Iˆ%Ób vË‚¨…$NT«[-u{ƒz"žÅ'Mу†¡µ¸4ÍŽàN¹L‹Ë51.6‹ó°h̉;¹Õ‹X4î oº%‰g³¸¬ à1x®‹­·•Ôz±¸ ­I³¸¸¬é°¸S3@°ZêE-øêTÍê%aþ®Âó† ‚÷æ”6I}N‹†åKõõvNBjïö–¤ùz{OÒ}½]’ˆ¯/eøzûHø•G›I+U¬CJR[­­¸EI{3vq‡›Õ’_/–ªÓ×+’FõõŠ&¼iqe¤Á¾^™itšˆ¥ñõ↎á÷R)é÷R9!Ñ,†¶„»íRˆÕ¢©¤Ù«[šÖâêHÌši⃈aË*E-°%j!K¯9 °Xh[Eé~?ÜñjyŠ«ü·pXæõ2¬ŸðˆåpqozcÍ’µ6ó>'®­B†zâuU1°¶ìCk·J3¸¯©š÷ið‰ÉðNÛM,°Ý0l;D„Ò6,Š™@BŶæ!p8ÃðšÉÒ¾XHfqÁݶ.ˆ)½š ¬€ Ó½¸¹|wûþ1½šùÐgÍŽcÌluAJˤö±¯Ó³géò*]þpÿú>]ž§ß}üôýG\ûáþ.kFQø}úê«üÛF5ãnѤLÀÔgÉJ!,}?q"¦eäc«J0²Lw&FrW¯éÉ£ûÁ°3¢¬Y±3 r2fìCÎÀô\ºCÔ#`æ~0Õ™°f†×ÀF52€EÊv,m:Àÿ¨G½ÌÜH"`ê~0ÙðÍ(Å  ÕÚFœ‰D †0 8”øÞ¦;‰Úµþ6YuFÀ쯿­9`¦g QÌþÜÈ™°ñ ¦Õ,¡»´¿þ¶êD|I`«éL²¿þ¶bD|¹Iµå>"Iö—_ÌFFú™mZ7l…#Iö—_Œ¢Æ2fäBNs0º¿þ²8^VÎ8¶DÀ쯿ܜ 0#>YaÖÎ<"I÷×_fg ܲ ÆÜ$Žt&Ý_™œ $pÏ"ìàhD:“\œ Æ=gêÌÊ!0ûë/Mg·id;ü¸:"X÷`Rg?+áæƒ„p¤3éþLâL ¡wwWBXö`êNR¥à'{÷éLº¿#gA°tT4…ŽÎ=#XÆþúKäD m+~¢)ðȘo"`ö×_ªÎÄ—Œ¡–ÇŒt¦±¿þÖéLøÆ¶6ià¸E:ÓØ_ëp&°¡¯%¯¢]êŒt¦±¿þ¢õØD(y¨ÃŽZÌþú‹£»10%Ú;|FÚäØ_ks&<€«-Ò™Æþú[Ù™@›ÄTcQç>#iì/Àµ:H`䌒ƒ+-Ò Æþ\‹3á°ÚsPÉmF°Ìýx:€ò”¾™ÙJógå÷yzSg3ã»tùëßþž´&ÅN3Ý}úñÇ·ës/îïÝñ ‹%/í ¼yyùpÿþÕ-p¥ËËç/ÒåõíOéíÏ—úòÝ?no.ßÂÇíÝãG{æJv½­èãý§‡÷·þ»rýÝ_nøðî›ûŸ’¯»O UÒÀñtÕ/ß=À jÇ×Ï;߃åúÀ“ÁËhËèËøüa]ÆXÆ|2¤,£.cy–åY–gYžey–åY–gYžuyÖåY—g]žuyÖåY—g]žuyÖåy,ÏcyËóXžÇò<–ç±<åy,ÏcyžËó\žçò<—ç¹<Ïåy.Ïsy¾Þ¹_&ÉoÜJîå: Ñ)f%•È<2÷Z9s%§1•:6ª‘ydîd×éõ­i%2Ìý#€ gÂG{ìoàj Õ­ý#€¨3Azf) p˜i%2Ìý#€tg̰Oj®ÔÈ0÷Òœ‰«l…:"3­„Àì„ ?jð4p-Ï™Gæþ@ª3y¤"‘;À¹À÷ßÁ ÁíSœ 칓Tø"XöŸÁ>+–*½Æ•N*tLéÄ2,a¥“ ŸS:eúå°ÒI¥S:_ÁD•N*ý˜ÒiD¨°ÒIEŽ)VíXX餢ç”N{ Q{\ê¤2ÎI㉙¨ÔIež“:Ñ«­g‡¥NªåœÔùôаÔIµž“:3Q©“*“:§‰#.ub8<(u¢øá •:©¶sR'Z’µ¦°Ô‰aã”ÔÉ…üávXê¤*ǤN.ìg¦°ÔIUJä_ KTÇ9©sÉVQ©“ê<'ubcSù¤N¢rNêÄ)ÒDˆ°ÔITI+ÃR'“:ÁŒë®Q©“ˆÏI8"¨3”:‰Ú1©ÓT4Ž Dý˜Ðù%(sÉ9™³\g‡°ÌI¤çdÎê_9 ËœDã˜Ìi_3qa<*s¢ÇŸ“9‡û).s—c2'Wœ›L­ÊœÄõ˜ÌÉ8šTÿJ{Pæ$¦c2'Sõ‡ha™“˜ÉœŒ\Ò¸ÌIÜÎÉœ8šô6â2'q?(sÖìA•9‰åœÌ©‚¥ÆeNb='sŠ)q™Åñ˜Ì‰ m **s¢‡üBæô?$ú?ËœuþZæ¬ú›eÎyäü/^žŒ¾ Y†.c,c]UË2ê2h¼Œå¹.ÏUNŠv(v «vÔÊAÕî LTµ£VªvÅ¿ÅVí¨Ñ9Õî LXµ£ÆçT;‹'ò=¬ÚQkçT;0câjXµC<¨ÚÑU\ªvÔä˜jG½ø÷[êµÏí??à endstream endobj 2026 0 obj << /Length 2523 /Filter /FlateDecode >> stream xÚ…X[wã¶~÷¯`ŸJc1¼_mïÚÙõ%ÎÚ›´Mò‰°„ˆ"€\G~é_ï7P–]¦=>À™Á`0˜+þð"o…ÿ+¯õBüeUdaQ^™fA˜æeêié=y?ž„ ½«ÃxþxòÝeyQ$i{O^{E=ÖÞ/~4›GQœùŸÚYù½îfsŒõ°ìU×Î~{üüÝe”yQTaƒÐ›Ç`—żþçY™ø²Yv[‰•iè÷Ä!©ü~í› O.€‰ ¿–›ÍÓ<}E(ãhy©hš¹läÒ´ŒyÚayéw½lg{%F6³ÈW­Zl á—aµu¤²žïÑÊ9ˆN%A–V|‚g"ôómñÀ"Îbÿ×0 /ïç7g÷?c0ñ—¡v4Ofx-{©·ªUíŠöðD²Ó‹-u¯¤al÷ÄÈ¥Þ›‡…ðŒ0]£j@=Qéê™ê™¤†?jÉB6–-&õÔ‘:­Vªç=ˆ’Ì=,&×B7óKº:-ÚÙšù×V}›Y9êÿ=ËÂð°êJ‹šå, ;¡Îå˜óÇ|Ÿ?Ý]9ÈW¿Hƒ;ZÒ&k'V;)ý#ËåÔ™@w²§eö¦:½aàŽl5Ëýßa(l¨1l;¨ŠÐÚiÃf‹ÔK‚*+G[Ÿ°ç4(’Ø›‘‘þa?Ö€£Ê_ ªV-ŒlÅß»µj:ÓíÖ$Ξ…©}–-µÝ5r´AaÊ2 ¥½!|µ+RÇþaÎZÉŽ­”ô_ÖÇhÜØ“;þR±çéHh¬ǰÜwndŒZŒ(6dàÎÅÖ  Ì1tWf-°-Ð #žU¿î†žÉp?[eØ%€æhòþ®UO¾õÄN,T£ÈKèÒÈ?kƱžâÔ×Ý@g„¿-™D#^#kþÚZjžJH5Î|®î¾2äJ¶R ·Íý°hÔ’ç7j ¯S"Sd¸º¿£Bês} sì r#‘ÚÇ­1nEˆq+‹ æ7o¸Ãòìè¸gþztýqWë§L±gØV8Ódf§ôäQ:ÖM\¤¾Y*2TØ–2t'³f†ñÕŽ k`µò™'Gi´t·Ú ^Œ‚t¶(•MÍP8ìú‡Xìð4´6÷XUñòN;Ü_ ¶Zžl·­vó·yK|.mÅ.í-)ímÚŽ†çFÖ6g$1â$¿„¹Ütö°• éÝÕtÎë(e°R´Z ½¬Èþ;¦ Ll*Œ«øM†œ|Šgª†}ŸÂ8ÃÈç*í°q–Œ ®ÒÀEVŽøY+ö™Õ(Л`¼­™h9¼‹^ió>4Yb›y)H.iÒ S±²Ð‘Ü:ÏBŠ«{f Úe3 ôqш¡¦L.øûlKF±ÐáãÎ?hñgsJ¹±"b3%÷½Ka¦k‰2AѱFY€Z„"ÿ!±Á!¿Àc £H#B×Lr†Lî$îÝY[k2xB_¬ÕËVü)([¢hÜÛ1¡ô*ŧմžïäF ÓÙâƒHËÌ ò æð㳡ø–rLÙÆ£ø‚S¬Z>P™€^®-þFºåŸí­"»ãwи?&{Ø)”!Ž >{ù$àw¯úɪ ”µÇ‚Òó¦GõÕQPÎKÿFôkÕõbs °½[(a)*ÿ|ÐVÁ´ånmË?`œ—f¢åGwHø[ ù‚ŠmÃÊ~$¤Ë™„ü5Œ“YZľ\0¡3'°û¹ «6yb5X-…•ÿOµ6—ƒì_jeá¥S¾ê_uÍUR§·¢mÉY#ÿ$ëNªÔ?‡êÛ׫%¬³ª– ®»—µüÖ*›ÅG U?¬ÕJêÅx< r Æà˜¡´÷Íö@ÈfTŒKÍ+«C¢<ì­:ÇRl­1#‡2êvùã e;"Õ–Á碩’O„™ó–ŠBN;äç¥8uÖüz|"¸Tͨvõ£ckÑ ÚÞÿ}Ô²[u~l w·‚¶VŽà¡'u4j6Êåþg©_œlWd{Ó§Ø 0Ó7|;sq"hkgÖzRL’øD«He)âö—n­ø§FÔj«4#îÄ‹Ð+ üµüfeòZ+鮈{eýðËÆ®Ø×s¦ÇµŸ’ùw/ûú°O\•ÄD[Ÿ‰ËÊÿ¨lhvZ¦zì¬á _Aö­Ôn~Ñ#¹îÜÅ(B–þ5„3>Úà³ØÚŽË®Z¶‰xm«E=á”çƒ1Îc(¥ÛȈ:n-^¸Ö©\*³°±DôUú?Ù^SCB†‹ªÄ8Dðb+[*.®ªC¾±‹ÜoU£ž”cþ€œ¸þ»á×üìù …ïdÔCJõ!ʨi¹\Þ0Ìú5FWf¢üCóÈ ­DmÌywªUI« ,+ÛªTc}2Q}”A\æÜª8²-GÑžwéŽÅ“nsQ[e¥0¬±+$¸m)äѼšš?Ji[zœGp¶d§µÅÒØ°deÙ» AjHÓ’ë„Î:¾Ì°ã"©£’ t=4ŽMiú®)-Þ7¥iZئ”»àƆÖóy¨i /†¯bPJ#<\Éù¶Éšøm›š$)Å£ô¨ä]?JY ^ $©ÞõÑÁÈ<)‚4gÞ×c]NL>Èg[D 0èɰÌ#e/˜ùeýÝÐN€»N×p ·SÄc±”fÙñª ­–|\¤†¿\"k­6¼à|hú-Âä„sÿ`–B3ÕBeLE\Ìr2žÖ]àdáö½mn!zÓ‘p¦#MCU5ÑØAJü cŠ|C¡µÎ)co_Õœø1ºâvxûøxòÇIdŸÒ"z‹’Üzßr{òËo¡WŽ­ƒ¤*½gKµõ¢"ŠªÀ¼ñN~äwµ8ñ2¸p‘[×Lƒ4)À+ bŒÇÏ 8bTyžòkC”EäÂeèNN&ÕáÁ$)ÞTèô96Ü8'÷Ü•oûÜâµÏEuÃA°ƒýVÖ~‹QY˜Àó#CÄrE†\¹‡ÿ[¢'ÚÈ1YrÏs·i ß:u‘ ²²Ä¾)ÛUhÄ’UJ†Jñ(+üïï¿ÜÍ/ç1†ñ< “¨pòX½QlÕ;/ ¾7òÿ(÷ö‰ÓÈÿìFòOyiV/-ƒ<ÃýrAo…Ïâ›4§Ü$Ý9ÔÐ=½Ýõ²¥§GÃ=­ –§æ¹ktS÷ivkã>½NˆÃŠ8w¥ÖÿºÜ}p+A2Ÿ-¿·öµ_öåÀ m·²å±ÞÄgÔ'îâ‚vˆß^ATU)=)o> stream xÚ•YÛ’ÛÆ}×Wð[µ„0 .©òƒäH¶+Vl*©ÄJ¹fÉYµ¸Ðлû’oÏé餠()•Ĺ¡»§/§»G¿­Äj¿ß­ºU‚?ª*b•e±*3'Y^f+kV÷«¿¾Hp0Y}7ý¾Þ¼xù6+‘Å2ËÓÕæ~U¤«B&±ÂG›Ýê—HÞ¬…HUô±«Çáæ_›?½|+ÔJ$q•T‚>HV럫”Ïì3 7k™$‘y:67"ª· ÕÍ3ï £ÍîfVUÔcëÁÜÒ^½ixã4OH}KTÜ* ߬3)£wï‡zàÝáyMËrfÅ\N™É¸ò:9ÿ½t—2®Ò,œø‹2N¬< ³0q-nÔwDgµÆýã\ªÕZÈXeShõàU–É9›4ø´K’ˆ4.e1œ(YÅ¢À`Ñëþ`ydõŽ|Zä'§I¨i>“ÂÒqU$‹¼€ô¸DΧ’%±ð³SA2–Bw;¨³„¤¬Ñö϶7i´Ý›E1e'rÓ,[HÊêZ-LüS¢’®=ãñuè1L®Åa£%i,pÿ £AÆÒ˸–%ü–|°L£#¹CÔõXÿN×pîZÉhèùÜxpÜÜÈÜ–>ïˆì©¥ï@©ŒŒ]ö´ŒÕäÿü‚oÈr:¢­çÖ™½v²6t!#ª,£Í¤= ^Üá„‹)õ÷¬š4¿knL·‡^×2ÏY-y*ÒJE*’*%ˆ‚˜;*BÂÑ\î^2‰OIZ¸½„œmZ~uËTÙ@–Ť• &½˜X…˜nÅtÆîŸçccó{mGk<ÇCÍÞÇSóÛI7ß5ˆéîªX ´ˆS! æDÑ¥òÄ] >ž‹y°a¯šäÂÈÉ•ñéðÓhl§žµzß™Ñ]³O‰ÈL³xVûß¡õÎìx:œØ!]8usæA£3c9Q€‘3ž2 bÍÅédÅåå]UP‚CR°@ŠS£í­O ƒáM‡&ømµwÜάIžu›‹G½þáÕÏ/xõᦔÑ+:ôíŸù›¦¾³ÚRyb¨nøøV{¾Ö §fäÅÚ¯ õ¾«I×t ¤ÚµFf3Zœ§…‚.[—¦±|w>L1—^­™âì™GœQ± ”ƒÔuïcR.fËlÄ?<-™¾ŠÓ|ÂVêYô–4Ö7MOl“ÀÝU0õàåÚýO‘¿NU'¨b/‚Ÿ¼ñ«±ïÏn\ò gÖ %®ñÔ{µÞŸWÃcÍ;'õ.‹ÄÚ‘?޵õó9–!ÁÓ ž¾ônb<óš ßó)NwDÿÉlO£¾k`Ø…(ÌþEY~šD‹r¯[Ž •Wu K¿õÝJ‘yd̾„Œy¥‹û—ƒ]Æ'gÎèWpx–Eï**oâ‰ÛóhÒ½…4þ耋µ°“ÿæô„<§w¶ß[Ý’W¥PkG1ߺ°„Yîƒl‰Œ—ÉKµ H|foûå„’£J&'w@••±fW ¬šZBòvÚÝZÕI4Ù›¾5#ûÍ9ƒÒhÆÙÍwzÔ<ò©ñúhbYË™~±‰MÓX‰ÏE&GŠHîÊÌ»Ð>—…Jü®Et Œ¦ÎñËëÚ!JßœZ·-Ý5\O[DïÖÈj þftèr¤Ü‹C¨œ¿p8H}Q¾­M·õX¶3G]M’îù\?ChƼ©ªñzxðÔ'Ô¡õa´§íè ‡œÝî ¶® Z<”WëÆü‡Kä²P^K ÙÓ°£?wþ‡-»åF¶€¦˜|Ì[ž…¢—Æz×Ö] Ñûíû0ÐÀªuxÎ*#F¡EZܽ²]ÖM"xc|Qi qð² Wg~A]D?ƒ¼ÿ¢*÷YÉ> ¾ÿuóýOo^ýñçožþkÍ^ ¼²?ð ?>ñ;Ëô’ªÎˆE@^Ëü検‹‡þ StÁºÑÞGyÛý̱Ñq å:ù.ÚG† :ϺÇ(4Pž·ˆ,ÇÎtfù-+¿‚,Ì2”ÚnQ>pdSxó®õO¸: æ”!žùª½?<¯»éÔè—–…õž,Ï]Ë-÷¥ÓF ð™^Yi i¨Öû¾Ó¸„³H.ƒ›ó=0çæ%ÏæyX6Ošò0A›Tôš8x&ÓÍ0¾¸ Hl¹¼º‚Ïñ—Юé¿*‚‚Î;@çòKé^xPÄeYxÌO/½Ù¼ø˜&Õ‘ endstream endobj 2043 0 obj << /Length 2754 /Filter /FlateDecode >> stream xÚ­YYsÛF~ׯÀÛ‚U"Œ9pÕ–hKr´‘dyŤ6å¤\0±‡%å×§HÊpÖå•U&æhôôÌô|ýõà³#œ;øÿΩþ‚$ò?Š#'Öçë0ÖNcœ•óáÈAßy÷Íç›åÑ«3;Â÷?Îrå•x*TN¤|/MËÜùèšÇmÝt³y ÷ýåõ§«Ó›åéÉë®éÍìå¿^‰`_Ç\ûžŸÐ#í¤â™Íe¤Ýt&c÷ÒÆ6uë™pÓŽ+}[TwXTÐ^´ÜXo»¢®¸5K+«)ëú´,Ÿ¸97wMš[[|¸¦YÕÍ&­2ÛZ¬¬Þž±[s+ 5OØIóg+4 fð ØÞÄw3éLîÍæZ w9‹5éJOî þÔEÎÂmŸÍÀ–5×j+€Æµý-Ìf(@c±…2Nò0dêžßÚ¤ƒ…0FeŒUMó€gšÿ·o;îmL‰¶qÇû-MÔT—×Sú2 B˜U‘Þ–Z*·¨²²ÏÁÜÚÙCïHpc("ïYïÑéòèó‘ gŽô#O*å„¡ò„ŠœlsôñßÉ¡,ðT;$ºq”§U¥Ò¹9ú0åŒÊa˜€.é%ÊzÒò§Ÿ.N&ïäËŒ«Oáá¸ç—çË)w—±’>;žZ·ÀÓAð·Ë¦|á Ðûæ+_{A Í¿\ügbT)=-ÅËŒ*/¢ÃQo—翞N â‹ÑË jOiýl·N=½¸™Ú.zQ\Á~¬à¬AHŒ­7ðº†Â^Så5Ýo·ePˆo.7¯.×øÖ…ÞþÌeqÛ€¥€Xí[«i;©¡€©ðMc Ðl€p!ÎìÛ Q3ÝlqöZi÷òç .¬šzÃ¥s <)¹ŠžH¶ïò+ùÅåÉ?¹Ô˜•i¸ˆA€žkSئœã[ÖÓ¦À)GOÒvhé°¢}›Þü|à$hâø›’|&óqø¾»\ãî%±»1-*ÂJänÓ–c9öv®Í*Íl?zîåõ9n·•i‡›®Èú2m0¸cKÛF)–Ã9PsÓWÕ8Â)ºÚ=—Ó¬©[âvÇMéˮزFíV¼b¹i¹^¯ø™â#p!&¶`:l¶ö÷¡ÂBÝm––v|Þ|®ÑGú ¬É“·¬aP¸mˆu¸Ÿ‰¶nìˆìm`tÓïAh`Øoªù„‡Ù5ÑÒ……<æœÚaß¹¡îm¡[[a0Ì¥ÆpŸ€þ)L”‹Ãx@SÞ¿Ú¤÷ÆÒ0…Sa áxÄYdK¹JÅcÀæMFÊÆêgÚ™•&­&ɦÒE׃=^ÕeYT“æ%C€ÂÁ©a#OøñÁ°S‘z'…S‚‰œ¯¬BuÀ£D£èÓ”¶Ä“Ɉãäü`"oh {òU‹èõÒú ì;-Ôw‘ìÐ¥`5Œó8mI'?nIV7ƒÛ=kb&st’€ìôvªcPŠR…èÖ³ûˆêØÁî̼úžÈó ϯ+g!2¤PÍ»-P;yÔ¼ÚráO~x¯À£¿7yBîóåV’Ò&»–N郢#|=½ižÔѸg“î#B/ ö7MË„7MãêÕÆql›Ü?”ÁýC»X´ &EÉð‚Í>PëÚ6lÒ %×E…hÉ¢ûSq·6˜†`·¢2bÍ#éEÉ3F’¦Êܵ…}xÖ·] êr®Ý”ʘ`Ýqö ™ESXaˆ‘MY´n° ¥ƒ8PASÁcgÀµñ0q•b1W'sA0s%{çYK !å­ØÅ ;Ž•¼®ÌÐl'‰²Ä¶8œDv#¹}gTm~| ‚FRáŒ"FÓ5ø t’A¯ ÖÓ3ÃpP³—•¥ Øa×J< yQ£aQw/C.ÏKbJV’3wJ•c&6wrPÌo ˜U§%”½‰`®k»ö#â$[Ð]KGƒ^ÿ[P€uÉØŽzõËåĨ#h8Ä/2ª†Ð«ÃQ9¾y= éAà‰Xìg9¥m—6fy7¡Ý X -'¥¡K¡ç«Q+ûq篙°ÿø“Íé:ØMäi1¨åf…§Ç”¶l‡â‘ûÐ~âÏexRJ úñèo½×¹yž~ ë…È:¯2‘„¯(@ Œ Lÿ€šÃÑ• töÙ>TàÞ|£èhâkÝ0¦_¥™äf:ôT4“ó«³÷Þû_&¯+tâùþ¸ÔëbÀA¡5 çPÖª´eR®²¨¡+­{Óaɸæþ)´Yž”Ö· EbV!÷8;4Bài aGWhPNG¬J¸WugXh§Œ-kZ†&hü`"Æ2Ž*mv‡9êÈv÷m1Ÿû¢ar(‘ÀO åx&NËûïHÔd‚t½®+º¿L0ï-1·AXlù®rNìJ¹Þœ6JÎu6ÜÊÎô,ÖaÇíx9»ÃE`BÉgÁ+Ö…ž¶ä0ólþ­©«›§á 6Œx?ðTÖŒ.^vMñÈbìš-í^gcL0ÌA¿eza ´sJí°ˆæûƒäîä·«O>ÿO»Ÿ›¶ý´HÓO×Ûo‡©£Mp‰—ÃYm3èb¸tækb Â¥½VnlžÁ7Õ«¹]*ËÍùnùî×Ljt0n¥ýâ2.[•ó=1Öù¸â}òT¬Œ#˜ÃÈ a=¦&+v°á»ý‰bºAPQˆÝqƒy,ÚÌ8vy|föu;ž«(²ñ èSDºUYtÈŽ i`GÃW€‘Å{WñôÍ›ôt#ß%¶ °SNnºO½ŸeÉÌŸÐ9"Š„tö¡B$H” {Ó-åHg2#³§B3!ÆÞ”« S”¢4÷cÎ ³I¬}j;³Úÿêì¯?޹—W ºвä’M’¿º®±Ü ¥ð‰ÇƒùвçgŠ> €Ÿe´» µÛj|·±¯ ÿ, ×…roÖu_æVˆøbÏ¡±‰á‘>ФíúxÊØ]‚—àûHÛÖÅÂ^@`Æ·ÙvßÌÕE„JêÿáæÀÓbï®Ií.àˆL†ðí+t‡±/z ÞŸ£ðcBwÀLO ÅÚ´‘G` Euo ùÈ”£)GØ;SÂ}̸ºê«l¼b…:ǧÉôÎDZ½ ±ŸàP,*Âx̬A ¸.éúkysÆ•A-‰pàRöÈÑ;­îÌœ"oiY>Jí,# ‡„Žñ^ä/n cÕHHÄè4Ül)ü³ãG‡3PîÅ ¿ÀŠ|]¹ïÞ-¸°g7 ©h°KE±™Ž*ªÛ-I·¬˜ï{øü ­C|‚½gë,i9¯+ºf„Î rÓ¥`Ó?Úg?Eh*ð+É3ê@Øÿ_[ËgÀ endstream endobj 2051 0 obj << /Length 2265 /Filter /FlateDecode >> stream xÚ•XKo¤H¾ûW°§Æ’‹&É’¾Í´ºgw´Òh¶kO³sÀe#SPãmï¯ß/22)ÀØí•e‘¯ÈŒçõ—'¼;üÿâ5^ˆ¿8Kƒ8Luêi¡J´òºÒ;z¿_…8z¿Lߟ÷W¿ŠØa…™ðöG/¼T†A ¢ýÁûÃÿGs½“©ðÛîPv<Zþ–M~[—ví¾êo0ÔÂÿO(T×¼~h¯#í?6u›x%oì hO×;៯…_ñ5‘ÿÏê–Î?|ä;MÊ®¯ZËEDÁõŸû_?~Urε”*H3 ¡ ÓO|f)YD2v'‚ë]k¶ùæþ¾kËÙ}Nïòãt“·“Ja¤½A¬2¾ãÜA8s‹”Q–A $H%ÔeoyÕs>tˆtb¤®nŸŠ ßbXÉ@&Â$½mÜ…VÉâ¶cn_§Aû^T ¤ô?·gô™ù†ýJ^o§ý-.„HO¼–õÃǾ+~,Ô¡êÊbh;ûº•úN4Ž%K}ãmr0;6pžfQê¼ÄšÇ ®Ãt”ùUß:TE>}håØv|jîh|ry ¿©ð4 Âp!ê)(ƒªÙ”‚¤Q2×¹’þoMQºbTY¦mSÞX-H"N—ZèÆfÓYMLCpð(ö‹ºÌ›M¾Â Õ™#8¶uÍ‘jœÞhKú·ì¯Á“B)Ïm¼E4\È.üýµV~Ëôe óÓ8òs^:çÝ@ˆP6ŒÕyÇ;GX}ä5´GþN¦$üÈ£q`lXcBŽš5õ ò—âô®Ü V{»H[ +Åð|fDˆ_F„!ë¼y²ßM‡Ø”µÐ„)ÎR¦}¼/»Mo“xþ²Í&° ÓëáLN¶ØfmuQW ¿+û³Q ŒU}'%–õ3™Ñî³¢EꛀOdŽ[& +v=ïƒákÃÏ~8zŸ7wv…“Îmוu>0òcábýžƒC#¨• (Œ£ÌZ>ÊÄ<ÌiðØå-ýBÿ[Y®H^|ËàâÎã>È5>õeõו09Xx€3ä8KLf*NWüzlþê…Ì´÷hŽž<(IQ{ß®~眼r‚PI¢Í]qf3)¤€õ›H¯æ¨cP„ÌYĺ¢ôL d–‘f51×4S9TŽ4Pï¯Q¹¢E*Éûž3bQYÈÅâÊ'L>w9\ qYGÄsHteîU„óÄѿƦ©š;Êͱu ÂÀû&òÐ]ˆß,æ»~‚$ läôÑ€PÂòn£ ©kÞ­šó8ðpÊ}tܨVÍÛ4(lâ·SDŠ»)æXji‹¼/yÓø8-•nðXAÿó(4†²1uφ#*h-ÕS "õlF3ê =ËöÆ„ŠT¼ŠšŸHR#@ÇÁh@j=ËþÚ H«#UkgkF‰–9lqpªœLèÓ Û ƒ7%Šˆ)Ÿ¿ý{ÿ®|B÷~¥h6i“SÛâ <#©*U¡¸ðaÒ@‰g„Ÿœ›r¡š¶©Ÿ¹&lÊò°,OÖ ªã³«m1ü„ £G‘žaÈ+ÆCr‰ZU«®¦ªÕ¾dÆÖ}iˆ$šŸÊ¡ìì1¶Ÿt¶GÁ_ÎÚ7hüÐ[Wi„Š– ù’3dÓyµ"äµ¢…•û¡ç™|ó× °j7îk¨–³ôäa4`œ~åªï×q +êKúåýxÛ—T3jòw½•6\‡3ÿw9fÑ"1Ò¼®øW3³rËÉñÌ6Úî\W.´B¡°ÔØ ¥ï ;šQø?JšÝÀ Iêwù¡Ý ŠÅx®øw£tz0Ê´7Lö¢u“ö2íÚú¹=ŸÖÐñ©8$¿ÞvM´Õ!åÁ³ &"Üÿn»Ìuä½Ã2Æ,gƽþ_Œžíù<ëîxwŸÜü­½Q:Y÷óø.ë~zgãóÄ*Yvî>Àl–ú>qwÞŸ·[Úø@–¤zN`*ãí?ô„!ý 4õ'Õ›õ/GÄ8 MˆDI4'"‡Úâ c*d&¾ìBEA¹g‘"|ó£BÛYLëæÐtqwªšžt§á沜?ÙIƒõ­§…½k®~û¤}Þ1åæÌ©ci½ËÔB½7õ4z˜FmQLã¢Ýöã迬‘¢Å;(×N$ö«~L*ÿ~פo3üõ=¤Û ÝÐ’\Q¼ƒrý¨#qóäǤê-‰“ Ú$Ÿ±N–ŸQ¯n–ˆ§(¢oÓ˜G ò2¼™Æ‡Óeü½ÜÐ×úù¦~Z€ØËt™˜ž°DkûÛ P š/û«ÿ´çbd endstream endobj 2055 0 obj << /Length 1357 /Filter /FlateDecode >> stream xÚµXKoã6¾çWèH£1—”DJÚžZl³@ }è¡Ûƒ"Ó¶°2åÕ#»é¯ï ‡’Q»›Eˆ"‡ßÌp¾Žò)Á~ß6𣲄+‘¤IÆŠ‹X§qИ`ü~#@PïÇç‹›7wqHÁ3‘É`±‚¡æ‘Ž‚$\ÁÎÅ2ø›…³¹T‰rÏ,{;›+xT_niï>×ÍröÏâgÀˈ«8£­‚K%„ßO¡[à{¸ÇíFì¡–ÛýøÁ¼ˆ*GÔ Éx6¥Ú«²UÝÜOB>ç#ÈW·ûñ‰ŸêŒ›w'nâöÑO|Å—+<½›’”£—†áîÿ)T§¤øÆúNŒ¾™Â¹âI˜y9yªUø„À þæNªÃÔ™‡)בæ‘æBûÔYlÌlE+í®ïp³ÝL²¼É·°"Ygš–$òÆ‹.Í!ck–$žûõU]Uõ,LÙçö-é?N]ô3ã pšÛ]û¸½Ÿ2ôä@FA~&ìR&auEÚë-vƒ”©ÌÖXìøEfXôô 3œü+éþ×^ ù×¾¨LÞ€ ­X衵 &¯HY»©ûjI2xB)3ôbÍ:ïʇÙ0£Y[ÚÂ/’å0Ë‹®©í¡Ò€ïeëÅóÇPWOèÛ¹—º=Ô Ã4ÝL¤kQ»}Kó½çcGÏ"·žfU[ÓÔ^²®É‹®¬m^ ,l<‹ûfGLiM{¯e½+íúl„ô¡mÞ¶WÅðݧѹ¹ÓÕÛ² qoË®½ŒͶœ$H»KPÜí–æZ'ƒD³í¦`dÂe¾£ 4(ÿòÙg,Âò/éñáþaZbpÔ³ªzœ¥(šÇBz§ ƒã*·¸Þoq"eM¾,û–¹áYÕë¼)» Ä 9ú ‚i7ÀÀXÆÌ›J¶ó®ô› ÐK`ŒLáÊ$ÐMK&É]ZW1Ó`Ûã Q¹1š‚,"Sœˆ]úÚヿ> <åˆÚñùœ,ÝöÎ×k—½‘ó3=öÓÒ·—¥ˆm»3¢†9cõá´]Þ™K5¿««¯€Iö0Ÿ…‘×ÀÔE1äoï+€Šº1Ï$™æiœÅç\Ž…YF9f‚í¸>Ê’,Ì$ûÔçÄ*L9œ˜¤(nÄ`£Àˆ4p'ß•PÇih+:dÒ_¨ËtÐyDgjôd˜#G†i„ ¯WºÆQ#vۣơÿ˜Ö˜AõJâoš¢4Š|€vm (æa<ÖÓIÃS.åÈ«zÒ‰U9;‹¢¹ÒjøÏ2fŒ’î,$£[¹(ú]n‹G: dê1kq®Š $/­¢gîòÆfô²¿²IÑ“C-x,ÇÀðŸL ÉÓp<¥rEM2˜C}îaì]U6%)53ø´ô¤Û#ɘË7Eõ–Ö³ç»ÆŒ_û wÈB:°‡#‹§tA»¶ä²p¥TSËÝÑK½šú.›Ì§÷LþRoìüÏM¾=*ø¡¼4»¤áØ&¿Ðí¼3«¼¯Ð\©Ø¿ý…ˆko ï2L’inqœ±’±|Áe—^OîIìB´ñ&ƒ¹¹¥% TGá‘zîtÓÜ ‡¹¿/c¶t­)ð¸)aô0Sð…ÐźƮ£ÖÚÇ¡±;úxæ6mûf•æÂñõßý£â+€ôÐÃô=’@)êŠ^M½Z¦¡ÓGͰj¸w¢ ªÒB']¶CúdðubM³~Ä’„5y@¢œyÒdƃ¦,QÚGÓÕ!¿ ¼ÿÛåD€àO¤¸ÈRÿU¯Ž„~ZÜübX£S endstream endobj 2059 0 obj << /Length 2881 /Filter /FlateDecode >> stream xÚ­ZYÛ8~ï_¡·Q1G”D˜c3A‹Ý9˜‡™ymº›Yrt$éüú­ƒÔá–ÝNÃÒ¢¨b±ªøU±XôOz÷ðÿ­WyüSy*Tf©—ÅJq’Å^£½÷ëM„÷vxþxwóíÏRy2yKïn祡—FP0ènëýéwúvËÌÿá—?¸Ñ[S”ÜÞõÕ¦3uuû÷Ý¿¿ý9ަœd˜ˆD†01úžiBå¥"O"ID”g^$r•3Ñ~‰Ðg¹·šõL6—<a¬Ül*XâÑ R³ÄF‰0œ²‘ϲùîûÛ•Jü7 †`É(^ÐðÈèO4| öM¤_T[;}6¥‡’yìæwb‰i(EDfÇ+6¬gi*]4¦-hý¨KWº¹Ävî›–ûв¬oÃÌÿ„ô–?v·Ò¯qNoÆRÄ2öV2*¶Ò¼{ÍãmùbIès¡Â”é«òó’ÁœëŠ&_¡,ýþ6Lý5ô¤¾nðÈ´cýy£¨WËï]mŸŽÃVìxÔ¿€:p{SW2¾ï¡«!ÓP9 pr`&}Ë }¨ûrËm”!sJÓvÚ~@»q¿^‘µŽjõ‡^“2 I$%­I‹ÍÀßÕ 7EÓ™M_ ÓÕ½{ ü}½· ”3Jýw“u iùE.ö‡R¿Â7ÅVÀѨég–hìâãòuìüd€Ï‚䣰Уý¢ÿB<’ùàRÛ¥•,$ñ‚ïfÇN9¢eÄH%¢Ïw¨Câ‡äÄ$)Ùž>”ņ4‡7R’Z>Rÿ? ÿ+ûíÁlP5KðPX€p7źÔÜ3÷'ò Œ€ĉ™é¬/öŒºY_àÿEwÈqa¢ˆÜ!Šb¿¬ÉK6µñXš®(ÛKÀùËÅð’‰$Jœ­_-±‚øŸ¤Ã‚£ºY\}°Ÿˆ‚h®Ñoº=°6°Ã|¤èS’Ù`e”Cqœf#ã4‹2ƒÍ1Ë¡–ÄÅ a)ІÈx˜ŽŒ™¡1WÖŽ«•âX=%ÍÁÎ[Ýð¨#69í¢à¡Ei¡’Ãö•æsÀhá”,bŒÁu‚^ïY"аºì°û‹nl«èì—Ë€°Òƒû'Õª3wRx£¸·ßÀ—Kñ¡ƒ%3F±ˆ’èë²Ý_‹ÓG½ˆ´,Ar9ÐÂ$µ›,ð¸iÀËSØþù¶Š]ìñ¯Ñ³‘›5wü¾‘õ«[Ûh ‘9T!DÏI§á(䤞j5¢×Ö®ü4Œbc¿KêØ%u¯-z–s™`Jù\ˆLfÓ$d.Ž´£A“@a‚Q1Ͱ1Á@ à(e%阕ך,eá !¼dèmÄ2i3]™az©ÿ o˜í‰È‹i]®&YIå.ö¶¿’hþyä/÷KÀG5ïê[ËãMùž¬¨¥ˆZîÞr3â¶Žö:ÀÇ’Ü(Mµ)Ñ‹·lHР´ËMÇŠ ñ=Ùë^c‘„”éè¥MS`ž˜M|ÙÕ=¾ §æ'N°„˜ †cc%E Þš|³n™}áæ#³aƒ¬PTÖØØCñÖŠB ûëVÓÚŽâP¬Mi:£a#\e™¢¥äh¬DÙ\ý]íRaSÝÛIÈåÐRdÞêvÓ˜õ,<tgN ®}ÇMHöнîtc‰?G=Ø|ÜØq$®ã½ìm.‚îѶ†ÕF;üKO¾ay-‚1¤ÂQSúPAêÈr¤Ê_cœˆ@µ[øóþ¤:7 ÈB =7J")%¶ßXy+=Nyh®]LE ¾o™<ˆ54%jk¥ÂÜgG×4æéRºéD–[d½é§ùÄKÐ×Þœ0ÃÃÛ>ÈÃi°g‚üb­€_t1~HÇ5g:”wž“Oܹ‘†wø:#Ný-‡sÝÚÆMÑ‘h‡ádCm?Ú!ÆM-lV[ö "8p÷Cݘ/5a÷¹< }[’¼{XFèp6È1"lͦèûø¥àÞJâwÇ„BÇÒ9W&B']¾Žn!AÏÃ,üÚ-Kõ`§bñÈÏ#üøð:ì1ì‚ëÆhën5c‘2ì• lzwäÏs8}c]y(•ؼêk5Òkî=nüöö†ýTŠ\)ç§a.BY?¶‘̨¢ñÁHEWï[ËŸ‹ÜH; øàÌ¿zÒ§P aú$:Ï"LaÓÌž‡j” •Ú’èz·Ùw—!õe"œ@êT†§Þ$öõg88VTæK"_ÜWº#8Ã7Ì+t¹åOnÀOEˆ5EÅÝO üô8ù,®ã„L.Áõ5l3àzj›Kq}®§œÃõWO:ß0<=?|¾—ïÿC¬ÓvAÿ¥t-F®  ±=ÏRé«}r¹‹>Ó^`bn΢¨ýL…é\}e:nmF^X £d¤Ñoºª9#Öcå‡Ci¨nã IS÷÷5•¤bwU #|‰Ã¥R"°<[Ë´Ñ̰oµ‡+¹Ê_üÞs³=£aëq¿×8qÐQ¥f¸.¶wα”“¬¤KëÖlu£íGCwØ`4ðÝ=ÿTC’ñcºÖÜÂâ>«ºøPK–Òï;bútQÕØª^iwõÀÎutnª£+Îc=~ªK¾%mƒï"ðzÛ¯ŸÙzÞæ¹¢0|±€ÜG· «gCc\W`BeèׇTã…à…Rär¨;Yþ}ˆRÃ]ÔŠKÓög€ÆÿUön}ƒkõÊ–™Àaãô¸¢H·çjz7?Ðw÷~RìU1U·As³Ú馩Ýîâ„C8lšÇ–/t`œ«MbÛ:™MZ¹z­¸•𨠏P2ue¿R$§–©ÆOCÿÄ•Çû¨'á?*”/10ºFÆnÅ$°Ãz(L|8P-°]GcGx»û âòe™ÿn·T† ó@dã‚öu©±‹ŒpêMäxÈnïA`ƒ ‰®éµX¾ÏS‘DGÀ¹+÷S†ýLdžclO‚®ÑÜ/yGÛ¶ýžcEjý8›6.vNöì>ÞÿÁhIžú¿kǸlëÅ2n‹$6ýöp(øg%ç븋½«8ÌD~d“õÎ~7‹ ‚ÉÑ`ìw™àö“åÙõUÓûÌS…\Wzõò\¤YB'"lV+“£ !ø?¢Î endstream endobj 2065 0 obj << /Length 2859 /Filter /FlateDecode >> stream xÚå[KãÆ¾Ï¯àQ¬v¿6|ÈÚñÂFÃñ bûÀ•83´)jLR»ÞSþzªºIŠÍé‘4pÃ@|TwUwU}õhÍhƲæ~ðâoo~‡Ÿ{ø{›Õþ¡r†(j¬É¬T„JmeÖÙ]öý ÍpÜÛúd’7·7Ÿ~-YÆqJñìö.3<3‚Ão7ÙO Eøò—Ûo?ýZGd@¢…‚y߆É7EÝ–>ø¸´bñIŠÀ„gùg €4ÞghÏF€ñ¯ælo«oþ•Ðdº/ê~:5™ŽqŸÄÂ|Ƙ#«Sj\6¡ú«uØÜ÷K¥yUÔëþÁ»¼ÞLv:¹Ú•€&ì¬|ø1%j˜8òyï–ž…p¦ˆbÝ•ï—>Éð/·yÛ†×\Àµ“Ò0mS£–·ývÙÉv9¢ŒÍÄ^ÖŸa÷’°j„mP"¯×»f¬dƒ¬(¹/ÊPc‚Gê•H²‚[0÷E?Œ!“õ Kµ^}Oš+V -èÂȹGJcðHf X‹cN9Nf¤·Ï”§Ö žuÿÇ”XXgÁLÚ©Í1±xpŽH¬Yݬ´Ï $ˆ×§ö0S´ŒírlØ Èr )çIæ L–­Büô¤"±^k‰¦òœõ¢óÎ×;SÃ0Ùt½ò95ŒALùèèüÖcHÒâ,L²SLŠ&(&‹î¬…Á vL‘‚jÂ%‹–8 ¸bSø&gN$É|÷gT8‰µ¢d4€¶û¥²SI¸3—ŒfA‚ÑèEJ 7FP¼kŸ¥l U=B5¬—ýÖ£²ò¨¬!£*ówU29×P#Þµ]Þ<“šL¿s7Åc•¯!ʦæÕÞÎÉÑø!;ÌÛ0s7ˆ¿Þ…øÙìªð`ðp»»› ˜„xåÏKX2dz,9›¿ ©[TysØ3Œdûbä‘P¥„su*T8*ìñP p½šPÞ÷á« ²åá§ö¥v³[BîúÁ¿o‹xÑwûzÅ8Y®§‹JŒÈ q 1ݸót4i Bm~Ý·Ïiˆj}KP@¹ááü>«~Š'™îÛzh,hßX¨‹ºh}ÃÀxAlƒ¨ñ(r<Óœ©Ø¶h!ûXIaL[†w«B Öy=ŠÐ_ M ST%”`n`µ‹oºð¢lÃ0!Àüc;«w˜ t›õn»-êM¨-Ðxó.Yè€ó‹tyúdÁÔç=í(,ξo>¾g.Á¯~íÍ$<øPú\X ®_/­\`´úªlòux8î[X'`úx¡ƒý}ò¶ !æ:ajÈÒ*HÑš]]®Ã}Wl±à{ eY“wû¦ò¡¬ªž&à\M–'¼oÝÝd5"ÀB“ò]!qL½&›‡ÉѬ@ÿRª¡ó–å˜3Íß"Õ‹7¿þ{©(]ìšß¶Þ¨ ,¾üŽ„oÁǹÂàc–š#A”·}ʪi\ŒcN7ÈùMÝ¡E‚w~‹ÓÁðï÷ùøìˇbKÒ©5Ô{F³|õÝ7Ÿ¡€†Aªòéï{¬Ëð¤ÑáÍÏTQ€S ¿,<ÁŽM@Y ÁÑê'õthãÀ~I¿_!m¯Ú]Êô]ÙÁƒÛîããó=£ƒ‹À^¦pŽAyÏÏ€9 YÌ8ÙÙ ',œvóŽ“:£ãô¾Xí5 †‰’¼¸×$á SÇ+ó^K§zMX¨{ €yí?{†v!û™m†3´){ MÛ{!Ôù]9Lˆšë.˜â,û´Æg‚W‘J8쬫H¬¦È+Ü‘Þ ¥œ”æ:ü%Ö‡\ζ4’‚;¨ÝxT˜L"æ´==Y£}ž®w­´çÏñ?#FZ™CïëåÊŒ†+¦/vpî ¬Ñæ*Î"v8<œ÷ð ù'=<âßBŽTo.ôð«H5xx$Ö™.~@æôÏáãìÿÅÇ_®ÍÈÇq¸Òör7Ýã*.n±VÅ..N¸øEìÓ>eß=”ÍÅ~™Fÿž u®_ÿèÞSþ"÷þ“„pößwï—*3önc|¯áU§W\3ÂT_:üíà ½ÁohŸV¶Þ_ÖÍǶËû¹ìëß¼ÛmCm-ûºì zkÃZØ›ÝCƒ{rn‰Cçµ>]Û¼ƒz-n8Öeâ¹5D?7<ajhôDæböb¾óŠÛA±9cœoòÇéÁ•XlË?ƃ¢Cê).IN¨×MJl÷Å’!.&Ø‚&ðãë°Up³¥'Ï)žuþ±w@Õ×±à±ÃðWŸ\3±Ñ ¢ß]•üðý¿g‹‡¾ëëo¶x-™5^<„‡`d@¸Ý´]WÔHÕ•$€°?ì>²ÅcS¼/wûžw[Tw+ȿ۲õƒCÇ ^T»Ð{ £YÁJ ßyA¤˜6}BSQRÚsrnÑ7Ò†y½PHÐ ¡E Öû¦Ùパ=ö³dßu…çã—0úЧ…Û|Ó_µÛ¼ª|»hü§mS¡Öþ;6ühÛ\ý‡l@зsg«Ú׸ïªbÒËJ€<…ÃmþG2Üab¦=¬áØ‹»¦ÍnßE¤¸97ýÔâ±$ÉNMÑÏîrá¹)vÇf‘Àœ ú¥? ‡¼> stream xÚÕZI“ã¶¾÷¯à-R•c%Áä6®ŒcWÊŽíÎÉ㛂ÔÌp‘Ij¦{ùíyWQên.9t“Äö€·|oh@Ô{xà˯ßßý =ü}”¶QÅQ4ÒQ ¥"T†Zµ vÁ/w4ÀyßßÑ“EÞÝß}û^²€1+Ńû]ñ ”(˜~¿ ~_)¢×Üÿøíûp2 †„BÁ:vÐÃ.3ù6Å=µ¿ßßýyÇ<-\•s"¤Òâî÷?h°…öJD¬ƒÏvTHÁᙿÝý2™KXalui> xD(4¸%ÜétÀ(‰iÌìé4QDŒ“0<ÝûdÏŒK†¯$ÌÔ˜0†i>!¼Ï«‡$_oe+óÔšºt_|U$ûÒ´Yêú>P&a‡®++]ãwIÝš&KJלVë VU½Í6xØÑ† ¢dìh• Œ>=¢Ð 4À¡›QÄ‚D\MÎX›$ÿ@ðÒ—‚)£ÛЗ""!—úH›:ýIŽÇ$Œ£N}ÿêFÌŽC¨è,.¡ˆT½ümi I40÷ÕküßlcY˜ e¢)»B˜œcÜoôZœXP\ =Ö^ùï³f½=[¹§^%î3­Ê¦âzÕºŽÁò°¿·<;çpÈ3³u=íc]÷Õ±í¾eÜjYm\DZÌüÒ©És×–”~ sMÝ «,oc`£ÛͧµR«¤^³U–´YeÑB¹úGRdy[• „«¤Y’1‹ÈP›°È#‡6KâˆzUà é x÷6dNEÍCN¢ج"™žËJÂÔNV°ˆ{A\ýbRIýÖä95•ZĆKÍìášÿ»–JN¿‚œš½ôø¥Ìâg­áçñt pf£§v‘çœP9¸h .b8:°|¤òùühj³´¨õöü‚ £‘ çd5`  F£Ðº·ÒÏÙ@¤­'Y9̨³‡#ÒíW_€'™FW­µÿQÄÔûçµ+à­ù¡tiÒ˜Æ wÊd[û%¬Ã¯A ¡ÃÉ®±ÌqZÓ5(ŠŒµæ))¹_(”®9­Š¤Ü/` Ê•„ð ñB(c½Šm¶[Ä—>,Z°R¦8‘Q8³Ó¹†£¡v ØÑ.í¸æ·áw1•ïÎ:Ÿ„Œ6°žæ?½ÿ™üüïûE§«!†î#Œ\EGyÐøH¶[`/|°•íN­<¬þ ®8LÁÉŸG¨°Ü³{m-\y ÃÆáÜðÑ5öî ?ÆîÌ}÷2vgøíܾ¡;ë(¡îUò~/#Q›h–”°–«µš*¬Y ñ#Ì Ë (TãF¸Ï¡!)òu8ä&iÑ.†4`œwÃ>!-ƒåÉt›:C%¢„óÜ’¶*š—‰<ä•~ŠÄ>¢¹‚¥WåyVšîв À!"â€\cK¬9ƒ³/*÷ŒJ3ÓÅ3Ø›í\Ÿ3zhÌ{׋Bð¢SCÛ烉áøôçLã{w°/gà_õÎvã NE|š8OFç™(8C 0Îx—ƯÈGëêy{(.æ£,Ãl}u>*Q*ìr”ë•ü¥tTÆšðHžî}1½Žðb::!ü®®,’l-ƒZÙb?¹ýëLÀ¿b´ºêˆÐ ±K:¯á\¡o]T.+o?èóBˆúÆ]H.)D{ax~I~ey?b&·K9-å7"+,‘½QNËÕ¢éØ¬Ï¦“ñ‹é¤|}:É.ç“ofäÄÌq6e_—MBFABØ‚ÝîofÙë€ÔãþÐ`:íóa1ê–X%‰N-@Ÿ·X­Ù>,òQ‚Š÷œ|5²2†±è‘UtÈÊè"´F@c’uÍp‰…àž@WaMzOeS^OI1àb {ŵ$¬åB_Dr,ü(àËÕHÎA$ax(çM‚e––$‚ ’k´€‹¼’b–6O j€У ÁžU3AÊWžsà°ˆÔñ”®ë¤Ü¼Ë“ÇÄ“âÊ"Ò0)}A±¤ŠÝfß2àzºï3®Ñ½ÜŠn,H¬gt7ÐîÍD§¶Ó1Ùý:¼ƒÐK ïZ õA¤ŒÑFË¢Õ!dIÓBÍif¦P±±æ˜À‰>Aç_@µmçîX¦®þ…ùG,W? Åèn]eftÏ.¢¶E\ ®Š  ±ÁIÄjš”@Ô@²cs+ØÍ7XU€ä S$¡9Nµ·fè 'ž]ûƒ-Ä÷ »Z~wi¸ŸùÆÒ˜­µåù"Éö?ÇÆmÞv¹lß}¶§b:x¥N´B¼Ìû¨ì_Ï q'îz&gþu­ ý„| éêŸö«mÉb‘ŒÃ´>c”/F{ ©7ño0pJÊ\L‰± §4ÆàÕÞ+bÖéÍ{Ùy=îÍSsÑ—ˆÞâèú[*ˆül^x _" HçñÉÖgØy ¯¥;ÇvEh,&„ÍSjŸ'vå@[3BˆG]|LêýB‰XJwµt“Iå®–Æ;ƒÝ^ƒÞЬ†ˆEË Ù[]ã,£ÿÛ·=Õ^˜Nyøuè/ oêó*_§ H±8Е*«Ü·:ÈV€REuì+ÐQí\ûHGl»ÃzÞMd¾¤d‡Úló%²çµ- n»‰_»63[‡µ[¨\‘dn‰£™«9.Þ†¶u’ !”ÓÕvuðnöEé¡P‡­ñÝwÓ Ðž}Z{”VX;tÝ¥Ù'¶§Ÿ¹õÕESb©/³é44W¥{‚O@_âVé înˆ_ó±Ê=•muèÈkio^‹¦ôGùË8Z$û/a”KNPÓ®…Qñq¨ÅM`” N"©ç[ŸÁ¨ L_Mw£Ì&„I[ :V)±*·"èñ†ŠZòä xk%D,ܸÊkSŒË|®²ŒÝƒ^C£)wUšíRýD“è6hè(šr$¯öYºˆá ÝF 0‰PÀÖ©0vIÞr‡ßNzªþ0]‚ãø*æx{« Kº_?X\Ìcô‘#´:Ì‚V+yxöJúú¶ên‰ » OeŠÓ‰.ISÃóSYé<|Sï$°˜ìõq„Pjì˳…eY!¿ª®Œá¥T+w=%åèz ¨%î±35ÿöH®Á]Í᛽¬ê‡Ì÷¤Õñ‡Ø#»"Ù §X7oEò±Ãùá@Á°’k>…åQUHñ6døìÌr\Kd`Û] ÕþB¿jñöŎʱ8»tY˜³å§ÎÓ4~ õÂðq¥™…“^_ƒ?õâEï°5y›˜ËÅwf£ÃëÃlÆ!"“ê&?cË ñéæ«ïWR^,¿O(;áR Iãûæc(JG¦2IÁBÌÛ}\2•„ÃíÓf¸ãrën³æ'©)¬²õÑôøwJ»{]:¤Ñ.[ðÖ&RDËÙ%eaj‹ðVA×3‡]]xäÝ’3Øñ%Þd 4ê>Œ²N­éü跻ܟWÞá¸"¾ˆ$D0šÍ´ãLΆDÅ·¢ EjJ÷I‡«÷/»»·ï|jÍ0ý…_|½ìî•‚é7ÙËmsp¦zrpý¦úú§ùò: Àv4;ƒ™Âþ¾h¡Æ®4¢ÏLIü'A= endstream endobj 2076 0 obj << /Length 2658 /Filter /FlateDecode >> stream xÚµZÝsÛ6÷_Á{“§Šo€½¹‡ô®ÎL¦í´‰óÐiû@K°Í E:$•\î¯ï.R¤DɲŽ÷`ìb÷·Xˆ&4aIýl¼{sõ ð÷&)}§J QÔX“X©•ÚʤvÉ}òëMpÞ›+z°È÷·WßÞH–0FR¥xr{ŸžA‰‚é·ëä÷…"L^ÿyûöÛ=' ÖñƒÖ®h³§G×SûáöêÓ‹´pU– ì­6W¿ÿI“5ô¿M(©M¾øQ›D Ï"yõëh.aišè”aÓSói ¡Ð–»³ £$¥)ó»³D ¼PB©8d~Ä4ã’h).¥ÌÔ2¡Z>¦Üäÿu×KÉ袺Ïö1vdmµÉWØf‹uÞ<ÙÊm\yÍí¢ #¶[‡Ö}U‡Æ*+VÛ"kóò!t¬¿–,“¸9`rÉQ2 Ô7Y[ç+×n\J›™iãRZÂÍxãµ ,í‘MS5YP5c²4T:¨ˆT²òwaÄx)A¨`ÝÊWTKÙŒ,§³ô\™Ø3®a40ÊóúËcUVåõ’+½ÃFU6¡'«]h<ÁÃ.\ 8Ú ¦°ï‘ö5N…)m½]\ù©áÑl»©+WÝàºvMè¯Êu?¥­FSŸ²ºÍ‘¡:ê„7²‡ÔOSZÑDó^+ËÏȯ[µh ±EV®Cc“}ô<ˆÔ mìj6r‹MäÓÿyå^£Éaÿ¡Éa/Z)®ã­ÔS+mÈõR »¸ (>”y»]»á$Xãñš-romÉ20?Úä!InÕ"‡IMh>äa“¨P+; éœc†hc&œó‘€q¤½a#’ãFò&h«m±í²ŠÝ‘…—M¶vá{$X…7Ðëƒ{íT.²¸ZV>fõ¦*QÆ8·uõ&Šƒ)CŒ¶A *p³Š´µ@y㦵ôÄQÏÕÆ…OMÂþƒ2¹Ê‚ب±‹Òå0«Žƒº}À yúâJ‘ÀŽyñ<ïÐÕ™@Ò zuåå±Þ®\è÷ÝÛ `êˆßuu]Õ$ÆÊýˆ¼Ža.O g¢Æê¼hÜ´'£1ÄwˆÆüâh¬@cr„9¢±2’¤0î€ùÉh|!åÉh<¢¢1ש7Y®m°sìX¡N³òÁ…yúÁŸ‚‹;Ô„¯!Bã'¡ýBÃ="Ö5Í^ZW6U}Üáݺ=Lñå3í"%¼û4ð?S2‰Nû8òzJêàƒ,³ÝQL­µdN%F€;“pN±£%¥Ü[’3Þ-ù·Iª‚¤"í†üAè{É9_|3E› ÁBÃÎ}„e#™ŸÂUbHjhX_{í/Ñ"*)ŸÆœ°à™v£€6Å‚$::Aþ}j- ¤nR%ô‚˜›VÎ0ÿY·“b’ vCDÌÆ/|æ%†MÈT\“CÀ îÓ¶kæqÜ ªÎV@ØÁr*éHA œOÄ CWfØÄDmJgœpÛãjJG§34d½‹ŽŠb@ã˜+Ãf/³H—è bT ÿSUÔ>(GÁ¼³NªÁ¼IH„†ô ?L~îSˆ%ÄÈE§«ð¶Æ”G2J<¿A— Ù<~ Q[˜Õà3ºØéLè vvÎÚY³7p €& ØÏ×JAÞsÑ0Ô§¸qÊT«Z¿ p6®tõäƒÐthÒ리D/xй)hO‡½UÆQÿ8bè‘ø.û=/#[¦‚@.r—éçó²ûö›íɬL‚Ç5—K³2 ²:Ù¢fžKÊ$Ó1ªç|{<#»ŒêdB6¢ÚúhòÔ%êˆ4mÿº¹tõÚ³s&µžÅô©ÄàX<‘ê “½X¬{^OXb÷åÏîÁMåwÆø80 u fùƈ:=ž#½˜æ!)%RÏ„E ‘w&_>=ÇË(OãqHù©-xÇ6¼Ýw¹ÂôCÌÐÎÚ¬÷HKí¤ÍB¾ƒÚü‰tüåDÇ.¦s}ùAVXM¸ñ9p*RJ”±}¢q¢„èˆh,¼¹UîóÀ],G`Ò+7õqüÍÂW‡¿±4ÎÁß<ä-{ä—Çñ÷r¢‡‚gªå<YP3§â„.£9 ¡!M8Dú²l8V¾iÀ³1D‘woBšXlÝ ÍÁ]¤!{çiò FÓ1ùå Oörª‡HR)‘L̓$-ˆŒø?./$9 ¤ɾú°†fí&OyJ+Ó¤kç@oŽýH<‹¶s¬7 Q+^ÛÉ-†©g‹a}-ìb_Ìö!b%èPëy+S8®ÿ}±—‘œFì€äËûv±Ž©ê%ˆc?±ƒí<ƒØYˆvˆý?#öÅl²Eœ®OO¾x+àäo»]¸-“œ-îŠp‹ä/ >†¾UÂU–—qT¸á‡ÆSVg׺:~¨Ý§­G wúÐðå:x;ñr QÏøPEöÃï+XZŠÅ—¼}Üc®È›6´à„ãkT‚g0”Ñ´)„r ,é^óƒ’Êó¿ö›XE´†_H U¯äªiò»¼ÈÛÜÅ ~A(Jåßc¸““†(‘ŽQôaO¶oOAâ=hÌÕb;¡úwÙ*{> stream xÚÕZK“㶾ϯàQS±`¼Iå`W¼®ø’8»U>x}àŽ¨–%RKR»ÿút DPÐ<´JÕæ0#l F÷×´`Ew?ØøÏ7áçþ~,ß©œ!Šk +¡R[YtU±.~¾¡Žûñ†žLòý»›oßHV0FœR¼x·. /Œ DÁðw«â×…"ÌÜþöî§oßè„N"4Ìã‰V›j]!Õ×ïn>Þ°È çäœ)Š»íͯ¿Ñbý?”g‹Ïžj[HÁáwS¼½ù9K˜s…v~SO§7„BG˜"ìÍŒGó{³D]ƉÖó•'+fLf/fËÔ”-cd5ã[¿§LT]ÕÜU·KiåâÃí’ÛE5ÜÂÿÏ·Ü,ªª o†O¢0DþQ­Bï¦nª²«ûr¨ÛHX5UwÿhËf•Œ–‹7·V,ªn[ãvaÙKØ£’.¬'=„ŽP-®# šÉe"‡®*7®¸ò‹¹J™p5À5aúžRt:]Ÿ% §Q§#èì„B©ÔHñ×Ü‚P1°Ó)*ˆ¥ì‚%æ¤$Vš—šSæ,p°g£üòêvœØŒàä(“r?´¨wMP•ùœÚ­ìH\÷¹ùBiÈÐí+’›KrÂé†o `A¡q4x˜šjt]õá©ìâ°,,LÔÎ&LícÉ”$F»¬™,…‹ÝfŸÝ¡2Ä™dœï[¢J"xÎzŽÎK«‰¦ºXrG8ˆ¶ÏCtÛoûýöIÖ\ØÙå Ì•UO+uçs ­™e:]{ Ó\ zÆ Üžå ãóê)Pþ5®×A%¼. !»²ê[¶póÏÿø×Û@F(ÛðQt5<À·¨ÑHТøäý@—C"æ4Áf\AF8’Zb.ÍÌÀ1‰l6í}}—oňPæ:‡"Áš”马ËMŽå ¸¾šsj0\Xýeડ‹ç{€ ®ÄbU­Ëýføž´ ÚÂUÔT•@Óôµâ v~û¡`[ôṎ¿]Õ·›O8uçuÇ¢îxš÷Teý×(±ƒÃÂ%ÐÅ߀‰ÖA¥NbCìÝ`Z|Ü— 2ÀLýü<ÀÿÙt= evñÏuÞ1P0© \Í—°0Ž¥À<Ú•‡w´%0° É<ÀÑ×™wð>§¬[œZ72žÔܘí9c¶œ˜£çÌnÛeß„y}çwûàÅÙ¯ª]y³Š=m³y[Ùˆw?êA6²‘æÕþJRX7(ØÜa¹—8¬þ9‡¥ð<ã¥KA„¥ ¹†ÃR‚B™ÓÅg=ÖU8G•pþZ\V°ƒ]ÝœsLJ ï˜<ë™®"üÑ3¥ÒÎ5½žuªð0\8ñ…® LŽRytM3F×ñ„-rP—x'|ÛF=òÞ)jʺí¢vÀù/w^_Ú ÆçUÄ«þ±ªm?CM„Ì0®›@5õl/E:‡NŸ…šj×@(} j¤[1_ 5¨. õP#5ƒÊÓÅg¡æBÎ3¿ &á|×6¿vïc“Žïλ¾46UWú"ÇD3PB,éVãOü>‚Kti☿š1Ó„ sIÎ  Hº³3U ©á(¯ÅWq8Ë_}sR¿€ˆë˜¿§”gã2ß<¢Îs[`2J§$lÀÍë œO5ÏÛ`ü<˜½^©I) kù2,“’¦í×úݿݑ.ÆEŠ‚+ðxƒeÛ}¨c@0« é±^àgÀzv£¢¢’zä‚ë®Ý†7ÁsBtTx•Nƒ±®‹w¡ 2ÖÛÔ1\• µ V¯0{±´ÑõCxèa¡wèT¼‘`×~‹„Ö¹êÃè»›Ð<Ô‘6„åõ&<†jÐtåʃ:v†™ŽÞ{½oîb!Þ–C2”Ax D{X¤n–¹ZâPû ó<ö}hûs¾ø³êZ¡6ÈÆwÖ‘(ÖbØqðÒóŸ¾Ú]xƒ¾'yƒèLJï¨Ú¡Zå‚]!-dÔð2&` U´2_£ ›Ê‡Äª¸³ïÂúV>"úÜLO+—„†dyŒz‡íDïìTïð-žûd¨Iôn%–é ªT’£â ëBtáè¨xšE£ô/£žYU6-2D¾L~ÆÄðCN~†ÀÌG*ÔR*½ÑÆõávqIV #¤Íí0xÀ7>Ôr#ð@ªûaK“¾@v¨UN„0”¿{I„G‰v:^é!ð|Í€b¤~¡R™'•Š[WL¨þ’eM+þg૎’pyÈ“þžŸjr À겆—[UÃeÓ|¥ˆü ’ÃÌÃL%×æË ˜²_C}-qÒMEWGŒÅ†„Ànï¡WH=–Kä˜\B#j¥<ÞQao˜EÆ¢Œ)æqœ³’¨­B!>ÍO·JCÎsÞ‹ö’áîáþÉü@0G˜RçÜ1b•¹Ê§ ž¬}vÅ §Êô¥Œgá'W@ RÎÛòzË€àÑ7›öà ½ó2èÊ:L °‰q7ñJ; n»ÛoÊ!Ðâàü+ï(KŸvàs,2>bwÒ¡y\òù¡Ý+¦eÈ3¢cnb "ÛªïËû˜ü~®71ó Æ”µßW™œKr ûçתä8› õLj@.ÁC_‡¯ÂK¦߯'59!ÅùÌäõrHŒ‡ãMæ ù¥Vpˆú$5àá/žñ²õ,òpéˆb—ßÚqnI_çÖŽ íNŸ­L\È9[™H8¿¤2q×ÕÙ…ôoZ™8D#ØjO˜û562š{²“gÌý*|£¹'|¿Bs—O˜û«åZ Wú +Ó£·U•½ãr0©œ÷®Íç•0@¼ú²EA>  7oÄK`ôÿîéO¸˜ÁOôÅ8ÃÚ^%Âa$ Vºúhx° YÏÔQš”w‚4¾  0“¬ŸLJ¡ŒGÀF ð›èCçjß…€ 0¡ë¾j·ÕÐ=†§vw¦ö²=Vµ¹º}s¶®"–¶±< [×áa+áËÿ¯¢”×Ë!5H®´û2Øb,y>…uv¬A8ˆ…Ë&´Ê}»ÙƒJñÕ!ñ í|h9´[ˆ·}{ ã¼….c¹ÃÆŠ„[l ÚG–Ù/и㠭,Väå”0­g×öÓEl(Tá$‡3›%”í.gC“‹*ÌaWx!µ”¡"Ò‡tbÓg?9`†vü°a(ûßû,æãoÌ7:'²`Ó;\ÈŒ>Ár³ŸÏQrÔæsdDzð’W¿?"޶DÏ ]þ/F_ endstream endobj 2085 0 obj << /Length 3000 /Filter /FlateDecode >> stream xÚÍ[_sã¶÷§`û$O"  ×>´3¹L“63¹»‡Î$é ¢m^$Ñ!©ó¹Ÿ¾»H$Ë>%íƒG$¸À.»?ì.`šÑŒeí-üàÛo®~…Ÿ[øû&ÛºFe5QT©•¹‘Y[e7ÙW4Ã~ß\уAþöîê«×’eŒ«ÏÞÝdšgZP¢ û»UöãB.¯~÷íW¯óˆNh"rÇU÷ݺè‘ldöõ»«_¯X`…ƒ2Kr˲rsõãÏ4[Aû·%šìÁQm2)8ü®³·W?D} ³6ÓT+ù©þ@-ˆ’6 á'g2F‰¥À'gˆÐ9ÈB ¥ú@öHfÆ%É¥x)c¦¦Œ¨Ôð˜ñÇknUÙ7mw½B.êþŸÄb]moû»nxéAWl}[W‡¯E[ùe³íêUÕV+ÿá?UÛÎJ K¸²—™•K“b¦Ï¶*Ö ¾9ðe—â«ô˜ñeÔ›)7™&VS¯w×)`¶Ö“ýDé@È'„9X¼Ì9?”_QA >_þØ  »£:Ó s‡Arc‰PÁ?ßV=X·l¢Â³è›uÕÛ²òí7MëVU_µ›z[oo}C}ã;þuoþ}ø­=&¶¹‡'³h¶Õ‰ÖÎñŽ\/%Øß;g¢®ÿ5[ 26¡CY6;?ê&¼ Js“r";ëv4ÞÂÝónSµu &æ¾WmëI墮áìÏ= ƒ´UYß·“<ô”‹î¾(+ÿ}âˆ$`Ø(ç( òr4h1‚¤:$›²< ’¹P’òÅ ™S8«O['ׄBÃS ™óœPÆdA’bYþRÆ3ä°qYsî6Ű£â|‹¨e¹»û~ômÎX$g‹‡»º¼†Ïwþµð?`ylѳEå;<ÔëµÿVâ·ÆÛa[¿ßõ•oG3EJt©„y®*€ÚÞ[æ!ÒqJ$®å%T"A9,O¤’#«€¯`â«€/ñeÞÄ¥Œ¬…mpåžh¶²†éÅ‘ÚGêçë!vEèÎàÓ™®xnl¥tûG>ÂF~lÜ7§c+•Ã*)þbضDPy‘ØJåˆÜÈž„2NÃFĹô^í¡½½­¶å&µ5ì‚uv‹q§q»'|×Üm—oïŠo^6¼zØ\Šmˆ³~¢LVëÕq ¸È$ ˆ&y.Ã7AÄ÷÷s‘íùzˆ º3ª>/dS°±khu²þÂ.!é`rvñæŸo}K‰6Aþmåß}LB;l˜'¼Þ»íЧÓã‚Mq»­zØÝÛ`ªŽÆ%Ðè7Øv ".¿¸‘s’\èCLšÏu9PF¦—Ç SÖ áû®Y»ý›£y›0ï)yßônnÐVmÁŸ]çCŠ„„G&Àµ€°“ @Šõ˜š„œÂ²ðKÖ2$ ºj}³tIW7€ƒ‹–fnX¬€µ>›{Œ¥“[ ålá=B­ÐìÔ‡Õ'¯ØZšÅëkãc\ür[5›ªoýøÍ}_oê®èÎá÷v· <}êˆTmÕíÖ}h®·©HÇÏVIÄɲêüó{7—Ê¥ø1u¹[[¬Pi ×· MÑ7g†ð B(/Œ¹ó«¢wù+öp6£Ä^†‰ñÄï‹ÖëCÑ2¡×ºkR60›Û)cᣵ£$)“bðhS|êÊuj0!9Å@wn†±´äQ~gès†®oÑ#NÅ R2"©yqÌ ™$Œ±‹¤°[¾UJü8l¹ï…¼g[‘ä M3O† \ó(§Ö!çpí.éÖCšß:@<Âf€†n ]íZŸzÃsá?£Û"ùrê|ƒ"œ;»D6rg RZ`´Û”а~ŸÕê!›÷Yðºøä‡8ª\D±C¨)öt¨r¾!T‰øªÿ¿PEUž¯‡Ø§Áz,cŸª5$b¨.k:†©€"°µN ÇmILµD*ù,L{þ¶t—~6¦2ˆå(·TùªæiP|¯ÖÛê4¨Šœ’üÅ zv HàY˜a%„OBê y§!5b¼ë¯Ü)Q€¾5läðþàjå±F¸­1‚]®îâBh­ê[Ú~¼V9tÜ…vŸµÁÃ×ÿøþë·þ1D!Ëdãd1œÂÖ|‘Éc1œËxîÇkᔿ˜mŒeX ç1×=Å"Íè€C'¦ \T J3„ŽÞÎÙó§ûtgT\ºø"(#F±ÑííYnßÞœôynÉ_~®ÅsH¬™¸ˆÓsøÏõèÉÚË §k/1ç¡Áî¾(wý²¼SÀ«´‹]çrøðà2*lCÇÅhˆïB$¤˜äºHÖV.Ä )ï¶«<ÕÍn[¦¢§c.^jä…f/Ýv2›ýŸ75ôR| ˜«á1_– <°›('ê$Ï-öèÎØgmqÀ1®Žý5Tæpx¼ë¨ ¸Y¡ìc8œêBЂ¶Ñ¥¾:œ¢67QÅÏÕ7)4”’P“»`ÁH9`«D˜ÓÏp d$Aø.µˆð² ÕOT…e“<&ärÄÙ6 Õ,aêUz #ílŒ(|õCH¢hðšbĉ¶*[NÈ^Á*äzñ‡dÔ !Ø>¶VGj…í‰xr3b`O­ƒk–cíáxÈ>÷¸nù“ºÕ{Ý>1Ûùdgp ¾ªà<‡-í ‰§ç{ï RÆþ1SÈ0°µÜΔò1a–Ðc ßÖ.6SUüi›š=ߦ0œÉ‘µ4!Yù‹k³±à‹{³I, ‡´ÅÂ\Ÿ^¬åujUƱ¦«ò}b1 ѹµÐ:@ö/A7ñlDN6Ãë2<€Î¿£¡ò4‚“€ñ‚ëÏLwò+öKb X15¼ú"'|_ú†°ÐÑj ØMøp@ ?9ÉA“0=ô깕‰£z“”YH©òÜ©Ç8™.Ì`2Ì>tž¹^T 8)’a5RªDk’O©R<©JX{Øþ—hªú4Òâ3q†»cúU§üŒ "ˆSªÌÁ\Gý*ÆUýwJÐâwåÉå9?Ç©ù(Œ?¦½È?¤DžæCR’và<&ò.TÜäÜ›¦$s$«“K‰9žúßttÑÅï¸èü©ÍI'f6Ç©ùÌ>Ï<Ø%=«>ÜÌ„ÀÛpâœÍŒCtmOîfBÂöig1ÆÃ‘`KñQò/ ôæü(¢3ĵqLâ'5æB®žéÇDÒ¿'¤‹CHwZý")¿&J®^Q4˜q\ô*}Pk¤SæÌgÈ!)w×I¥Nûª $·â)_ â£FÜ%@¥ÂA < —§4^ëÆƧmU[àY“™x¶7p;.׳â«Y– Orj ºŠ#V#6øðÞÜ¡N¾II¨aÚ{“¬sW-Ë­Öá&erÚÂÀågé³ýæ`ÑDä7û }îÒIyì²±ÙSµÕl¡ËÃ]8‚—x’º„ ¥.⊖;¬+ çäð-Ü1,|Û} Ÿ4ݪ²¯ý !±~¼6rgò/½V~/Q[ï×Uò CÙ)ðï‹u¸` ³‘7áðEw,µI¼Ö¸]…ºûæ¯CòaÃÀŽÆg÷ê»Ý+ZÃIxîv›Í ´øÉ¡h À"½ëèoÞÊa]¤¿,à+þëÂ)ü•É0a”ÆwèïŠ>æx•ÂîêÉì·ÝX¬:/W{°×ñ”Ïæ&¬Ãëkcx9;jÁ€@8!ÿýx>îNÃ;0çØÞXÑéZ¶”40s©7ÕjWú{ “JÀ!ãel¼bêoἺU·¢ë«p6=Ü kuE?üÇC¨ÑUŸ‚ïÅ=_Æ“x•|×eðÂôAàP»UbEv ¿a{ôûf¢DYÿt!Ï© endstream endobj 2091 0 obj << /Length 2673 /Filter /FlateDecode >> stream xÚ­ZÛrÛF}×W`Ÿ–ª's¿Ø•‡x»âõV%¶ö)IÕÒ$qC ÅÒßï̈áE4$ÜÝ==Ýçô4H3š±¬ºÃÁŸ|zñ'wø{ŸÍMå QÔX“Y©•ÚʬʳÛì— šù÷Þ_Б7×ß½“,cŒ8¥xv}›žA‰Âë×7Ù¯E½üýúÃwïô`œ0DhÈiÝV³ù¢¨ü¸NÛ×^°¨ËKåœ)²ùêâ×ßivƒû2J„³Ù×fÔ*“‚ã¸Ì>_ü2x—0ç2íšií{ŸfÜŠAD˜Í%Ž:ÖÌÎatf'ZmØÌ¸$Ÿ¨˜©¾bŸZ>R\/Êâr*¬˜”·þÈ'õ}n¬.¹<þF™.¦õ"Žª.Ùdv³x\‡ËLJp¬Ëðò×ûÅÜ¿vVl8wÎQFµk¶\Ížâ¼·•’p-Û‹VÙ:¿ jfkÿV6åZ+\6e‚(éÂð0!&³âîq9«ü…œ¬ÊU^xÓêÇUx<¬§%¦'Æž—± ãÏây©1\ \_å³eB­ñ)t.µVŸƒ}µ1‘S½ŠHÕ-Ê«ÔrBE;€ÍV«@Ù fòS;I¬4ÇægbÊ^ˆq„±`êçÆDôüºXç» î,~h nàˆ£î<ê#Á Ôï!¸—+=^—û_?LpÒY¢c:þt›¬»}lÉD6ަ‹ä½Ý_ ð!̾  }Àq âBøF²Ä 9OÖÏ«U^WÏáö¼¬ª|ýÐÔVeq³(îâð²•_ëÂáŽgÍÖGŸ2UùÇ%j¹<ªýòÇeØÌ¿—ÕC:EªÀ§úinxÉþ Ì+ «üÆs`›¦§iK̆R~¾^7¤e'Ÿ.œòW¼úØ\Õ5‰žçŸ Â審T¤Ï,øÆmøf šÇXÃ)f{à”ºþNSbp·›7„RÕÅE½›9fa/¦É-qfÄ,â0³<Í—Õ|/±xDÑÜœL,’c°8 ¯HØî¤™>¤8Û¡¶>MïV0p…b¨øaVÍmy…8ÖÆ†"ן4yåOnž ßlZùTõ¥îÜŸøMŽ6›žânZÍŠ»8x^†´«È+Ÿ$‰ÚÔÇÜÇO~Ø?#ÿˆÈkBlºF×oß¾»Ïò§ÐÌòj¦ ´èþqÙ$^‘§:9TÃmçqŸDq«Ø–û|©É¡f&cýŠ.Ôyô+M`ÃP¿×ì&9¢9º›t¸!õ:™àÄJ{¼ŒÃf¤½Øò닽8L}¼ÍûFz¥’pAéú>G 4•LOfUsYÌßé%VÂ/ §¥Þ'Kã7¶¼¨ÝTúbk“Ĩ퉒;DqÓQA“æ{{iì¯Ê‡ÐôhÚ½þÖ¢H²™`d›Ë´5=.ÓVOÞ¤8ÌH0I†'íFÖmuå‰UOe<0^؉H«Ç^SmO 8Q`9°¿N.¶™¨ó¦>B\”k'ß0ÑÍBB ,=ÍÓåŽC˜ö†ykRóG,ÉÎuïÓil7…Âë´ +Ý– n{F’(*÷$*'Æ)pïfØam¦aÿºé¼Wh3ùÛŽ…í÷šú ò}²ÌDÁdí¸ÌažŸ8¶Æ{“Ê)»ú÷É€hN5U¢ç=ï"èÜÿʵ €ql$jnl´"w‚Ñ G`ö…†Æ pšE| è”|°Óá(–aŠõ,-¼×o±°Bðn¾:&z_\{D¿W>ˆ¶~Š ¼Òn+`bà‰ ¢µ°ÇÂEQ‚Å0®ÝžxÅ´¬È¦ÁyG™mÚïßnöªƒ{j^ÝJÁ‚*h™úzYê®à•G¼;)Âì³úä‚WP…7ûI7"WP‡[¼«x÷wRNÔœì¤ 4÷M}y“û÷UnØ]úr´-Ck?ö9îîb«òöåeé(ë´îï‰o“é+( Ûè>ÛlU˜"|"=‹·¤ ŸHwº+Ñoñ‰¡Ï¤ÞZ¢<²õÕO÷„/×:Ì ¼®Å76\¸Å6µ-;®»oÞóyþPϾ,cú¯K…"qù˜¯cSºÊ_¥ˆÎàG+8Âî©ÈÁ×à‹ù…<%ÄT-´ÍzãbÊäñÛ×—&K’]v¼Ûˆlr~[ÅÔâ•Vqô EêK;ùô³ÿdòCÐÖ+§†ŒÂ‹ŸgÂÀqÀoÜ÷¡:év(ÙÔhB1³Á(9a0uzò±·1NŒ7ÆÍÝñVØ5Èarøj—ÚÉg¼)ëz‘*Á¹Fk;/û=’!—$59à«ÝTÝW)âøvMÏU¿¦ÇUº¦÷µô‹kzÌrPÓ+l|˜Ù]Ó¿n¿kå‡?ílz+£ zùˆé·µ9k—ð¿oÂݲ^×Õìáï>xׯüSÕ¬Žðù~V­fñæ‡xó_ÍQLÞæ_ÏÕºŽC~hß›Å,œ†Þ†ÿ¸õúâõûª\¯“+†ø Nëáš_jÿÉÓ}Ùk4jº¿Ñ¨übõfg£ÑöXfµ¤±¿±n‡DaÄ<>+¿/³~«ÐÖEê`]t·š=U·{ë"†êÙ¹ÓÅÁ|gG±³ÔE ñ*˜Ùžìž¨8Ý hö¿À ?‘X…5[æÅ]øÅCSô$èÊ ¾Vþ/>ýþÎû¤ ìOå–ˆ¡µ^‰t.šß•«@i[±ÅfRëHº·Eóí|½û—egñfû˲7÷ÿ´ì> stream xÚµZKsã8¾çWhovíšÃ÷c÷6µÓÝ5·ÙÎa«¦ç È´­mYJd)Iÿû²MG¶æÐ1E‘ø¨q†3’µkøqƒÿ|¾{‚Ÿ5üûœÕ~R…VZeš „¹ÔˆÉù÷¿þôI&똂@Ç/Zoó×çÖ-Û3ûåþîéŽDVŽ(1H‚tÅöî÷?p¶„ù_3Œ˜ÑÙ‹_µÍ8£ð[e_ï~Kö"bL& EL›KûqFÂ0H„ÃéŒ`d°!þp1%AŒ0fodOd&D#Cä­Œ‰8fL(܉a)g`\nçTÏúí|ÁˆšU¶^w7–³f´Îù1#È5¨ýq =^ÂÐ >Ò@Zò©´q½_±jÚ ‘}}ÌëeY¯ƒ°ÝƆù²žSx´í®+»2¯ÂìÒÖ»²s§ûÖÃ^Ç+["7 n—Çù–6­ÝOæÍpN½'¹Î5¢*½Ö޲ Äb*¶`‚ôÄ×Ä“ñÃáþ9vOÇWß .0C“O<×m'潎;rfGCIÄ`•õ~SîÀ&›=Ï…˜åm™?T6Ìlòø*w?|V5Î^ÜÛ†7ÁTz°'ÿü²) g›ð8ж5Xna—ÎÃ`‰ð&X. ŠÆ“ZÚ°f`½jªÈvçÕgK#4[PŒ´8 §þÅ4ÒýÛØÅ国ƒ¡ù‚H5û†NÈ&ö á6ýkŒ,Gšï-†ŽÉ¦V{ѾaLG¥ƒážÑú»—R:û{ø±»*ï@Xü™r‰”ÐQ;$lûjmäŸ`v8yˆYö^È6N Qâo$.êÚrû¼%ĦöN‚"Dâà)BŒ¢ÈHgÒH‚0ª«P¸Y>ììE$tH­`ç­H(F\ˆIPh°4§¢Ÿ!CDOÄ—8 'ŒQ×öÛ2(*W`ŠvƒeÙÚ¢‹“¶Ý†‘‹TáYׄç0â–².ª~éÂBxJ(âÙÏ_ 3_òmY-‚…G)ÀꚺÌë´ q–µuâÐàRóT[U³.‹Q @äœä¢¸dˆ‚Ÿ¹¨q¤ù8çÔ3`;½¼ýØ3Þ›Ï fPfïÄúº—ëÍÓe'vA‹ÛÌÄ0uYSÑÞ®:1øÆäTôq'ž‚ïÞ‰_pbs«ü¦œ“Ùz³xêóÊå‹j@éǼͷ¶Pg»°a·iújyœ D4ïwv9â€ÝêÖcŸx#ÑJ¥Ç¾à1¡¦Ñ¸smÁ؉ÆWyµ»èŽfÚ8lWLý¹Ì0R®‡¬ ëBa Ä\Ÿª¹Q3ñ  ›íÓ™óæÅAÏjŸRØ]_u‘®‹îîɬÙÚð´´«Ö„‡½•Å-Ñ¢öBÆÌ’@²v ÁqÀ÷*œ¾D×!•Œ å¡ÐQÂ'¸Q4¾ÂyíÚÖ…£ ¢°J϶ͮ #¨Ÿú¼+›z‡æ `>©òoBë–ômÓƒNG³-* KrÐMåÛcßiQ$UZó3ªÊAªf~ƒf¢ZÜÄc>À%†*•‘ôÜ5s&|Vî”m˜ƒb@Îòª·î¸Š¨,ä#~ÙÙ.Nöú]ûàf›¨ZªmûÊF&CòïÖƒÆvö©uf¤Q…{+ÜÜ÷È¡Œ œ ܱpzž Hx¾aÂ+ûÞÜ¿I*Íu<ºÞ_áD#"Í̀ıË[È$€äb. ¥Í•þÊŒÇû+ ç´¿âŠÉ¡¿—¶ï¯Ð“þŠ<¸Á—1G1ÇÕÝ"øqÑ5`Ù# ˆÚ ¡IŽÈCŠŠôˆç:®8_Ík&&|åX…*|î7AÃâãr§®Ûéåí×q‹i¨• ;f-P„š›­eA å?¨!!yñS>öº)È*Š*mEnâ¿‹6 ’{ô1Ô ¶ùº¶]Y„ý;Ê¢ë«ܳC.˜wawX"T»&Æm‚\pæ¢\R‡RI*@‚Úæm˜´»ÚEj7õ¸iê&.ÝŸ^‡·áp0ðÍĹ«àüéd„7H:‡n"è4 DÞU^kß?ÊààÕÁyT×ú‰JxФ·yü¶çs©Íð1RIdy†¨8 Ãäû µvÙv3šatè^§ô²S=ETÑõc6çú:éñÞÝŽ¡š iÄ)rr|9_¯µc˜ßÞŽaXAÜã“'ƒc@Š*úh%7 ß¡’K_nÇš¶cØÐƒòyZ|›2,6eXlʰ㦠Kš2,6eŽèƦ M™³—Øþ˜D1CûãŒbÆqëãœSK„íAûƒ*(C lœ†\wšm¹¼è5TºZøöt“C¡É$MLÐÐodM7'a<¤› gog¨áiÿÃßÿ0jK‡è^fÿ¼êë¦ÿŽËB,bÑÉZ0ÐÙ^6¶ Ú¾®cùê˜d$˜ø%o»ÖÚŧ¹f¾nU¡Êú¿°û|“óFeŽ79e^mrNrƒ—§÷èÛ*ç½üãœSÏq®¦éŸËN!½E‚ò÷–ÐR;“Åp@8ÅRï…zîJ õ!¨-ºvÊO/·õëé;ÃVq1nÈ$ xî­q‹H(Ÿí Ðdؼ> \”#é ­Û8Ÿ~xÄl/åìSíÜçÏã¹ñ¶|u=ZR\ç%ôJì7LdQ}”³µï$bµo"÷åÚw¾±öMø’¿´öý¸Ü©}ÃvÌ'Ï!“HÈCÁ®:cYwmþCÈyw'gTÞ Lõ$i„Ë$§câ§ ºpô&áM¸«®DÊüâ§|ø6ïS ×ö]Z”Á£ä~Êý§‚·\/ªòû<8® áïE+÷õü¼÷X踤“ؘ‡ü!°Mò‡äÛK¾\Ú>|¢:»abYÚÊ"¾‡ò¾iÏ}¨¹Q©ãj¥^ýP3É}jÒû¼ö¡æã¬S/Â.ª›Û~pÏ]RMáÎE™’1C¢ì ˜Ãáþ”ÛIZ endstream endobj 2021 0 obj << /Type /ObjStm /N 100 /First 915 /Length 1584 /Filter /FlateDecode >> stream xÚµYÛnÜ6}߯àcûB‘œ IÀ Üh#ÉCÚÀ¹l‹ Ána¯ôï{†¶K«D´w YJ: çÎ •btÁ¥“‹ÜäRivœ¢ ĉ¶º)¸Âdw²+ÅI\¥jØ ™W‘‹)Ú¼”]$.7¨‡+N†¥€Q¶wf Þ,c¤íž¸¨Em„¹Fc±P\KÆ”Š?󆫘XA¬•m_›À=xsáÞõÚ—”Ú(cd«Ã/‡¿ÜV'ˆØL …WdÀ€_ÜÌp h,$çbX/Õl œ®µÍ#G×^–c…}3“°L„‹’"ÈÀPOˆØÖ+6*fIR©#E˜$âk‡[”±v•,¼RXÉx§bn!\ÉfÍžÔh6pc³– Ü Ör…°.™°¼œ©Ê AG(ÔÁ0sn3ƒc¹¶†{ZG<àØá‚ ‚Ì”"¦Ç5Ùú3ZÕF @@;"Q°Œ„ÐF+©ÚR# Vs"¸6Âá·0"Áp5-,g¸/Ò(.ì$' 3”#O#â,ÅL±EËL!ÒRÍ‚)µB]ˆ¦*T ²- ¡ÐØ$N•L;.*s]EÄT¹@~·Šé±UÁ?¦4UÛM°¢xf’Å š 0CsóÕ*&›j›J –AZ ÕÉÉjxóß¿k7<Ýl¶»Õðúêî]ÿöyóÏjx¶½ø´¾x°mãùðrøux~s±^­?îÜ»’=™c±xÆo*ìS¥ˆÛ¨§îäÄ ¯ÝðËöÍÖ /ÜO—W.1õóvã³O\~vOž¬ðw<_û‹í¯½˜}I=¾Ô£ûX l—{cß|K9v8#áøÎd 8*^l[×àsêò%ßm€3âiÓ|‹¹‡%IÇwFZ$ ˜äK¶D^õ8CwyáÞ¡N¼â•Þþñ§eÆœƒÇ^Ü\}ùr~‹;ÝnvÍð©¥lø6‡³‹íÇ×kx憳§nx³þºsçãÅž½ÿ{½žÃÆz³»´:¦6ßÖt¹½ºø¸¾¼®míÞïëOŸß?Û~umåHEˆº¢¢F8…õ½¿€$„Z®ñ-’—x+¯æV«®68?NÌQF}EWM-eÄZ¼•zÍâ5ëlÐ_þµÝîðºµ?¢S2fP±ŠzKÑ)!_€=ÁG•GÒñ¨=KÄïãPÁ… ^,%WW€¶¹ÑøD‚´‘æûÀQ@ÅwEŠ.%Z?Ц$;œ¦Ö£•Û«ÖŸÕ›+nW¼¹jˆè0©ÓŒÔéaR¿ꤎz©›R‹Ø’‹À뜼ŒCãâk‹h*=ú•‡Pkíª5*7WF-ÕYÚÑocžÜ^%»:h¦}¢9Þ‡hà÷‰æÔGôþBòØQË@ôÝ>J ÏèÀ¿ÇË(¢^FL´ó ëí³;|>8ögb_޽„¾Øp–öÊ2ˆ[¥=evÀ‰xGâ(RÙ§Ðááä{ô½zzø"ëÌ"óá‹,š)c9ÔêqÚê&4#1/)‰‡ÇX;“j\Ì•Sñµï zà^ÖñéáâSîãe„ûQÁœU Ž*eh熚;,¡{걘˜<øYÄEVŸjge½Ëå}²û¤½))YC¥ùvžõõ[EnÈ:«²»ãÁºÊi_W9¬«ût5ÂýHW PÀ!£,Yª¯”–„cL˜m´'À¤‚Ö ÃbT;‡<²®Æ9i¬‘ZÆ <ŽvfšøÌ÷ÓNžÑNgŸ{›ø Pƒúy¢eÒ‹ddšÇåoR7FüM²Äñù+3ýa®óW:ûÃ:ù›•‹·ÆkhߦÂtιRûb°´Oº‹ ¤ÕÛWìe`ˆžËñ+Ï8 ŒóŨÖÜÕÔÃU4Ó™:\EIéíLÊ~gÂóœO:“"^9/Y ½N‡T‚'å` 8ô=}_ â›qê5*j6Ë·7´ÿ9Pfu&Y•ÓUíLVµ7YM€j¢`YZ²â Ë@F[z|´NyVà\,„C=r¡éjò±cܨü 9žÁGPÙL2«‡'³Ú™ÌêB2ûgÛ)© endstream endobj 2100 0 obj << /Length 2511 /Filter /FlateDecode >> stream xÚ­ZKsã6¾ûWð(WE$X©9$ÙÍÔNmU6;ÞÊ!“G¢,–ùPøÛÿ~»ñ ’eE‡ ÐÝèþúšF4bQ÷?8øïÇ»¿àçþ}Œ=)³”Hšª4RB*%¢®ˆ6Ñow4Â}ïèŒÈOwßÿ"XÄɤäÑÃ&Jy”Æ”HØþ°ŽþXH"ÄýŸŸ¾ÿ%ñÖÅ)‰ £•ýãS¿àº‰Û?îþºc–ReI@¼U}÷ÇŸ4ZÃü§ˆ’8Sѳ^UG"æð[EŸï~óö–eQ’q«ìÜ~ñ”P˜0$ÌéTÄ(ÉhÆôé‰Ód¡„Òx.¼'4ã‚$"¾–3“‡œ(UqŸs¿»_rµ(VeÑß/ãT,6mgÏÛruÏÓÅÖ<Û ê{Ø0~¡,i–CÙ˜É._—£¥ð\VŽäâ+O…yûb}Äb•W«q‰Çñ—,&RdF®*ÒÆê¾þb=tf?¡70#I®·˜¯7+¢f&kP CñXtö)z‚º0Âc¯b‚®ä±ÿB)5ÚñeUD(é”Ãæ’IEÙ’yž„ÛYv©#tŠ4RIRžQzDˆl±¾gˆ¶ØÀ «ÁL¡Ò××gJ˜;ïeJZÌP¶†Žs4ç7ü¯èòG;9‡:LNP ×ÌYlÃŒÁ6ž¤Š®.ØÆA$ó$éçP>° tË6][©IŒ±[Õ¦&€©pëˆv¾¥àŠd©ï‚[}ºD‚›6fðÕ ;k‚˜©yÔ§OXï_Íû¾Nù0“‚d1 Äî™ï BÓIÚ¢„(ÔòCk·VžuÑ—DǵtŠk0£ýuÔµÇè~€7Š-Ú=ÅÄ8U$¥ê]ã†`¹ ~)XΣ|mŸ¶#I2¥¹Au2"™ ™RÇIÓqƒ\+§ÇFA±8¡ ŒŽì}ú‰ ]íQ±Ë4Jg˜^å}ajÛÂT_çUUôƒyš<–hŒÂz ±Ùÿ¸Æ8.0–˜ cÊ£%ÏgñTfÈ7ËŒ§~¨Jã\™‘b$gW—2$Mãó±Ùbç­2Cf`‡Âc0-uœ×‚A‰ ¯Áƒ ÷e(ƒ'©œQ9€]`–MÀ| IåÜ­Xšº¦µiÚ`$oÖ4ýY»¼ %p0¡éµz8Ša ЏXéa_? =xØ"I §òFr¤1ä|æËÌYHáP*CF°êü!›‰™ŸVOÖï?€çR¸]Bø[‡Ÿ`®©°Ùñ…ûÍÍ’n¹. é‹Fg˜Ó.¯Gí& NÌgêMxƧá‰4–ƒ' ׬‹3D¤ZQ&nììêaÛöÅt KÍT$H j§Œ 1P€lé¼,ôŒT])és36«¡läK©•Ï]yÛ¹§ ¨ÓlÒÅ¿Cº€êXLÉ໕¢×Dãsˆ ¹˜â2J áã‘Sñ)D'#龂,^\?&€s›Ó~»—É"¯F,%”LKãצz5¯M–‚b¦ÓH¡Ì=]ZíY“Àè+*÷`·1ˆâ€ñÌ7HÖ+êÂÀÒ€ûkYž üš„PmÚE,ƺm;Vv×¾~Cº<¤M/mí›r;UåÍ“#Ø—æW:K¬É›‰¾oíî|b•h6Hj×&VÝI¬nÑ¿CÔ$<ãsáƒýû•œƒý»ÇyÐFÛ9»òŒbˆÒ¿ ÔP®ì¤élVƽh7”uÙ[s•ézß|=¤e w€Âq‚sØ¢z¿~ì‡n\{øaìòÊVlE•¿fó5†å›èHˆTw„ž’Î÷ê §ìF&ØCKç±§§Óâû™zÛEú7ûp¬1(Wµ¬ÿkVí‡./m¨I ¢g6æ×–çj5œÝC­7ö>Fñ'aË,ª?ÿÒGR¦â‚_0ÅrȱlßÞy­X(_ƒFÅ›µòÚn[4Á†ô ŒÕìËÅ„PS»¯w?`³( B¸Ì²Åï'¸È R™„Ë‹¨cGª\³ jÙ[ fM®wƒ k1X··L[$hcáªmYÙ7OÚæÅNGÇÈ–ét³ HcS;äbU ž š¶ë¼ÁTú‚äZ¾øWcV¹þ_ï….ñ;L¡ÜœJÏu¯P;Uæ¡­ëbè^ÍVLÂ8ÛƒÅ6ή§@&=œ“P<Ã;*!Ùb]lÌÍ>ÜLyæJ(Ih|‰¹$á‰<0—HÅ‚šK*dдøË÷ÃÉÃpŽÏ¾ârRTÁ‰ó+–z÷Qµð«%9«4Ò·+β{>[iÄØ*1uu¥ƒ·Ê$»I '±ngÂ++9+ sÞ<ŽUÞ™|^·º&…€Å@m°°‡e ŽkowLß…æÖ‚åÇÿün_MmÅÉjà&çpÕ€w‹ªÛ°·Õ€Ç^®ÞÏÔ-l/þºu駸ÊÔ9˜ºÈÁÖmÞÁXB×;åP8ÉÛ8…`%沇ýë:Æaÿ:`|÷ÚåÝPºŠû¿~¶\ÐõŸq³[gr³ƒó\æe7áî¼ì€{|ÆÉÞÍÓ.l—÷ —zO)øÃ>eyYÙtg½Œ' Úµ^Æc¨ƒ•¼IÃÌ%(.ËæÂÝìJÎA7ó8ïýŒ¦ÎϧÚÉ`æÐÉàÑ8u­n™}„ÉuÑôåàîO`Â^”¹&§ŠÆk‘m%¼w×¶9úâQ6Mѹ+êÎ^`›Æë`Õ±4'ýü&út~î)ô"G¿ {ëè{~ÚÓßÏÔwØžœßþvsÍ™Úìùs¥¯g¹ æ¶E0ÛºÀ„ù<¹ªŠ±‡®†Ë̽bûoâ»í›°†;5Öp°Çš¹-Ôì/Í6æUÝâÅ .ïwÐK•+·j"ƒ-V׎Óãñú@o´Í»ºmÊ•eñ²ËÁ#¨Í÷ãÙýcUàþú17k«…vl‚Iq¬ý6$>Ù†ÄR&ùþÛy¾²ag.JöUrqg‚p1ûèZÂ7ÂwŸ¿ïdIª¿Æ]¾ñŠ_òô&á›IE˜`sáƒáûJÎÁðíq>ßôñÚÜ»{œºÎö·ôí8ÝÒø>W­ñ›½­oŽÖoóº¬Âœ€xmûmb4 dÿ¤Êw»ùЕ/ö[6zpa#ú¸;³o¢D³=-^³oÃÞÆl}r:f¿Ÿ©ï1°=æêúê̹bà(¿Ïa3ç8'"îÿx•m endstream endobj 2104 0 obj << /Length 2565 /Filter /FlateDecode >> stream xÚµZKã6¾÷¯ÐQ Œ>Eé˜`“Áæd§ƒÅ"ÉA-˶0zx$yzzýV‘”lÚ´Ûíñ–È"«HÖ÷U±Ô4¢‹ú5üàÿ>>|Ÿ5ü}ŒZÓ¨2MÕ©ŽR©•I*£¾ŒVÑï4ÂqèÉ$?==üð‹dc$SŠGO«HóH J ZFÆŠ(öø÷Ó¯?ü’xrB‘ÀœÁ¸=(±w7v ›.8åá˜/—»rF­%|ĺá¢ÓøJS¢oÜÊ£Í$!…ôéèÏÆuF„Òw9DÌ${þ)®`‹/ÅõwköQ£ùõ—îpX—)äUÂúÇ哯…PžÚ`<€Æ›j ‘Ú>—mÙ¯_­ˆïS³CA¤É[+Q5ÛÞ„ˆ¯“Cao]ÀÕØ%’زÔfPú«í°ŽLã¼(v=úr ’ìZgF±ÛVSÜ0ž?‘þ°sAÙzè๥Œ]PÔ mpM«][ }Ý!*];¸‘»wwŽÈ=/à)œ'DçêëúeÄ1dSLO’×Ó0O‡c;æayOÆœ%b \„÷[‰X2ðVžÝ¥Ž#!,ÒL¬÷©LšÝªúø–€€öuÏü”.}À«Çm† G½ès†‰óÑlpH-g‹2wYÍT”ñVsUQæ>ê]QÆS/γáû•ú¾Ë’ŠïdC$dg)‚>€q–Áœ2Ý"5ÜïÞ p• d‡o>ã[½ï>_ãåb&qàŠ7Ã[H€GšÜÞBÁ}UÚ̳nT| n“h*½æ¢bC†¹Ç"RËv=n¼ ƒ˜on6@Äçý/çiÊasØwYÉìÃ¥\…ëûhw¸>Ô.ÏÃúý:}Ÿ…áâòð·q-NYæêjŸºÆU Njì²€)ö»bÆ_TQ“@Øô~LÁõTÈHoì ÍœTï¨ßr¾Éxlá"µi Ì»îÉ“ iö$4=ÉNf)&PÄ0áf.ù•½Ëd&e‚ÇÝÁš•Ðk–¦^M¶P7lL²#â§)¸[uD¥-­@‹C›â‡üó”Ú îÂ"¬÷´¨Ê¶x}LELBD*TBcþ:q8A4s¥eiìDddRi º#˜Ôr ÈœÉñ¡´xæ(¶î ¬ñÑVdäÛ±iÚ,é.5^çtxò€ðvTKÿse›ÀGìïàæ°Ag[ë¼_—±J“YNÆUjë¤}YTÜl4¹©‹¸,eʆûkƒ=I'“7ÃM“«Æî\´"»9ÞpS÷dw¹ØƒFUÀú`:y£êp:y¢Ûñ3èîL“»x÷¶ÃÔ×á·\Ïuwx1°Ç',—9ÏU“K*¬mãô¸ù¥³¼]»ø5~Šbå—SyL`‹¸V÷Ù" [$Á¿¼-ºË´"½û¨OáGÎÁ)=ÍÞ¯ÕG„)Åóï‹fœ&„Òäiê˜ï¨s÷ÿCšºç } o E}‘5XwãìvÖ` ~»K–Ê Hq–œØÌRoTÌRï)ñÚº2„ 6™-ëÕî¤C5ŒîQ¶ÓÝD»­«„ìëø¶ò~ñwYà„xo…W!þ>ê-â=íÿ~­¾7+DÂw"ž Êî:è4šî¿&™wÈ'W£qèÚL_fð¥É[÷= ß¼ã§SKSßif‡Žâµ¨ÌKU×n˜Qm ÌÐaJÑðëfÓöŒv•¿>†Ö ¢t iTQÎf4ðZÙ:>¶Ýhšr„„Je &T!Ê“Š0`šÀgþ}‘®rj0mOÅ”RCƒ]HzôAÌ0ü›À„±†\.ÈËÌÊ™p?=ýøô3ùí§à9JΆ~p5xž¸ÉxûhÅ*ã^=?sÏ‚ЂIÍ_¼ïq/p(cé’L{ƒ€í¨†ÏŽ7Æ£JjÙ.}š{ÜÔnk.ê\Ôâhq6§úåv؆bŠx+lM&Z¤ Iñ‹”€i·k\4ð?„A4 endstream endobj 2109 0 obj << /Length 2289 /Filter /FlateDecode >> stream xÚíZKã6¾÷¯ÐѦ¾³§d°3»ƒ$Hv{IrPÛìn!–í‘ätúßoñ!Y’i·íØCC4›¬EV}UE g8#Yõ×øÏ§›¯ðx„¿OÙÚw £ÀJ«Ls0—šg•ͲŸopææ}ºÁB¾»»ùæ#'!ÈA³»‡LÑL1ŒL¿[f¿Ì4ç¿Ý}þ棌c 1 rü ²ø³yÙZ7®CûçÝÍ×±œTb4$[”7¿ü†³%ôÎ0bFgÏ~T™qFá¹Ê¾Üü<˜‹ˆ1™ÂNOÍ‡Ñ n¢ˆ ÎF²ÓN#¦$¬#ŒÕáâ‹&°L‘k‘‰è#&a€B7sªg/Ûù-<ìü–16Û<¸'w«*Ö¡¯²_wEe—á׿ æÉ†±N€šm»žÃ³)òÕ¡2œDàP'Q†swúd¨L±vÚ4öÑV x °†MoÀ$¤“CPÒøšZ.LWœk¹‰ƒ© b":Õ‡]UÙ°]«—p˜E¹]Ù2ž`{Ôyeß;µ2X¿ÒÙ-ÑH(Óê{K°‘³o—ù¶)þ˜ïMhU¬m^ ÌÈÉÀ0ta:ÓÚ­ro…anÿ.z<î+¡`$i]þÓ-Ñü–K<ûé饎Íïç‚ÌlÓ  ö¼'À:U­Å˜‘›P8ÑŽyÅ ÚüŠ&Fcxúã@¨d,¨ÆãÖ°¨ÛwÕÆ«¶„m}M;‚Á–HÇhŸA!&t_·oß».5û!ožb×'»NjJ(F„uju¶ªß3Üו·º&è{ÌÝ·”i$‡†F˜unÎ!ðzy’¿%æH z5 CÀYù$ü- „8©Ö>¤oðCäµÀãÃDà¯r½»¯·ù"ºÝ²÷­‹Í:œ_GÓG¬ð8EO²à–¢ >‹¢§=€Ç)úrÐq ƒA E Å'‘څU9kŸÍœÌ\Äum¿»Ò‘õ½¾°¡þ.|»g¾©³?Ü0»h6U”ôü¢Š…ë~ C–öWLø:JoZ˜½ù…¬Ãàç§ÁÜnô¿l]ù:. oªâÏ>ñ·ìèôqf¸ÈW 6ŽÍ¸˜}±6’ÙÀç´D„’Dªwpæ ©=¿çëeJ%ˆÚº¯6/Ëm™”|l:Xt.0$"P  Ž%>·'9P¯ý\MXAŒ!ÓP ¨á9^zš¯>B}äó(0™dœ À)–Û`¹çà$ð-öáÙ ¼th™X"MèÛ‹r}æ@Ç ?ÌÆâ˜¾ˆNÑŠ#‚ËyL_yÀäuج,ãéj– Ø\r=pWB\œ‚ 8ìËWŸ,g'nËÙ6jªEIk0ýÃ.FlýR7¶Œ…P Oy$‘¢Þø ©ã¨zk¤®Undq„#­FÊ­6Å"YY •šf_¹€* ‡ûú¯ê°±iò¸zhÌ0W½<€LLôþý¤ÈÑM¹Ù!yx—I€E¤¥™½I0=º±~™E³âõ/šMð´ûþ­TñC^56$™>… @›jY¬ÁGësÙGZ¦-Ó3h¹| íQRf°]Œò«I™ (ÉOçwg“2I~°ôdzv%n:=ëG‚…Ä -^ r8áx,Òiï¡F[¿ü0,\nw sWC° “èÁŒ+#Ä@Êæ+wºË!3n¢¦Áç`uŒ¨ï°cÁÙàJ rŒŽÞ']Ó]ÄÄIqѹî?’lˆ4×çËøÛ,#}˜mL»ü0‡\ÓÙùµZ:¦1ŽÌ?në®ý\Þ’7®ÅgùjÕvU6þw±)cüXGߪÃ?üuÁ®n¯Ž_Ý:¾XîÀ9ªëufg»páð¼U{ÍëîݳvÛ ½w>’Ã.êò¬Üû]2B!);hò› ¨·Åz»YMXpÆÂ”윸S6¯Eª!êë#U >›&òP%êåNéBàJÐô{­êÞœmÌæSf‰8ÖÄÌ4 cP€k2ÞŽ“õ #“Àƒ·"mFû‚ÓÝå ‡Fµƒ¶šÄˆ$AJ´»–Ÿ0¢ë@QÕe»ñ(o<ºeÍSÆ3Å‚:ãlÃYÆ3|g<}øSÆs1è¡ñø—þ¯”TùŠæUãáQLü™6¡ë ˜PÛ翜¨}þë~xCÚA •ëÛÆU6œHŸ Ïoɬ͆]_ˆ¶0#Ÿ »¸pëïæd¶ÊoS·ìÇ2åh¤S¨ì2e:ÒøÌLyü6S,àÿ©ò_Ÿ*_~šÃäÅù¡~ãõ% FÚ—g6¼+oo"|½)®ç;»"´á²‡i±ë Eª¾Hu£v÷µmBÛ>ãD¸«wåÉñsÑ<…Þ¦[WQÇ ­Jy±Lyq˜Ê™ñÀ þ¬òõï¡Çåßg+‰ÛÒ€™¶4p|iເ%*O.6IW04lO%ì+˜S»ùáCŸ~•ÃFUôނƾJHè–¨8?Z3@‰¡¸5È×J2IÍ 1fÒºáò÷‰”1ðvP8ð× ‡º ´j Ü £ÌÕU¡Â>™$fØjÄxé£û*†ˆ¾w°Ý›$9þï\3ðœ{£mtx›nâ%­k¸×äÌ.ü÷Nj;˼®Ck›Wyiÿ2Þ8Or>âZÞ#¨¯ô_KCö,md㑼ý6/alÀöõs±O¼Û¤þzn’½ã.âªáֹȟ€SÁb*X°ʆ°$ÞBó²0›Žm—/|èb0ë7¾%X"ÅÅïEó]³Ù[ÂX$dëTÑר¨e Hma+€&€ÒÝÕGø|O™›ø?*ÿF endstream endobj 2113 0 obj << /Length 2780 /Filter /FlateDecode >> stream xÚ­ZKsã6¾ûWpoTm„àI€›ÚÃL’ñVªRµÉ¸j™h –XC‘’òÄùõÛx(Ø’5:¸HB 4ÐøºûkÀ8Á Iº5<ÌËï·7_ె¿Û¤±"—H`©d¢¸@˜gŠ'N’ßnpbúÝÞà£AÞßÝ|ÿ“„” A“»‡DÒD2Œt¿[%¤ebñçÝ/ßÈ9&Ë`+´Ý÷CѱIÙÏw7_nˆWe¥1Î’r{óÇŸ8YAû/ F,WÉW+µM8£ð¬“7¿}Éó$Ëíª^ë*†7„[œJF9Ή]œBLf‰$eÙÑÔƒ)¢PN²Kõq¨—P$gâÛ}ÝnT¥÷‹%ã*Ýõz¿jw‹%•i;èfÏ¡*êI¿s;æ UHäã|Â4sRT%å[¡ ÉÛ–r˜9¹pŠI0ÿò@ò;˜– é¾×+3A™V›è°Ñ®á×òת®‹fù®®u³üé©Ñ½;Y–#• ó‚÷ê/ûb¨ÚæØØœSkŸ«›s…¨ lÝi0ã±V€×Ò Ø¢áãØ® Ä7í_±`32Jqÿ»yêtÌpúû¯ý×{ã *%Ôº„Ls,\Ë',0É¥€'‰»¨D4SàVQCZ+y7›2i¼eL:©2 ¡0K¤þÕ*-, (¯ò^% TÊÜh”ÒU·ëc¬Qˆ\Æ@ p}„59` ÍÀååkx™³pὄ¼ä%⤗ŒôäŸ#6‡Ìæ,ø}S¯4§IŽÀÝű¿v^a(¨WÐ"St ÊÜ‹ò™(%mÂxÅ8¦Þ ŠOØê s‹ZðJÓÆdØab±A²r0 ux‡9²<ᬦÁÁó<¹ÐÀ I¥ž'‡£¡Ø½ž™@‰ §(3 ô@òÀÎö5[ü† ÌèY‹yqÓØ|Óæ@@1ΊT&ŽÌÌÂx$€N-!ÿCL-Ä?4õ%u¼ÀŠBJ€Ø tœæKÁ‹Ä¢×‘÷BP/?´©)Ï}’€èY@zÙl«Ò5&e<.\~Y{©‡è‹nÊ'/Ó¬¢{‰aއŽoðh…'ö|4#]ërèÚf¹Û´M۸ƲÝïj“-Á¢r4ÁAƒ¬ d¶13gãsÊ?çûØî %l¢ûÙIºß”÷½~•í AùÅl_˜ˆÁ_g6~å§È¾àzb>óÙ·U—ªïm¦šëµ,ddûYÀ KÛóäéHxÌn›vØÇÈ´}Z'sïÈ‘ûð´~’ã^ÞüÙ62,ÀCŒlX,¿Êb97¸ áb+‡@½Ö‘º ²Êê_E{hÉòP;{™0¿Ygˆiè ¶û6¾,(šÃÇÊZ»+ê¾õá$€0¬‹Ê)š4¼G¼J#œ¼ó\Ï_f¹Msÿ—gøÿz]¼êÿ’u~¾­ŽüŸ ;ůRís Vj>õh¸Po<Š{=À^ãÌxsd§a¤œvpèöE‰ÐP2Ây>Œ IbY¶5¤]ø¦ÛÛwî%¶åë2D’û,\<(¤s)Å;Óªú„Iý‡0A¸:H’ëHHå8ØuìÉ ª`ÀžµmAx¬Ø¤!¯!.€â­ T£ðW·?ñ8óvÕ¡ó@wþz÷Ó†3SÿÉ1Ð ¾–6gJ®J‡·Ç…°ýUq_kÿ[œ*JJ΀'§ˆª žî8^—93°Ðø¿ýÞÛÖþCBYôÚÖ•¢JšÝá龃IuÛ¶Óþ?¶ÅºÑƒ9í7#ÌÎG eßûÿoðÿè`îy ïúa^ÿ¸¿3Ý ?N+äî‹Þ ŸÊÜ»¼ôcyn>ܸ¿ p¿Ú"ùH·ùí?Ŷª‡¶©ŠGslÙüdvÂf¢>†sïì 4HÄŸQãÄè]éÁ€¾ÑÏsuä—gˆ«šûêožv»#[Ä:sØ#om`̹HŒϦŸ»â7Âî}ª,gGS A\€/{R='\дi÷õ*r¨î°¤íã³åô«‹k\‰OS­uW­>¿Jµˆ|CK¨© ®Â´ ïáãÝÝÁÔC¦E9ðtv¡ÞÑb)êõH;ºý .|ß>ýy‰î7žab#7'0}›…®±8È_Pµpu5š¹å†â·àŠççÿ»ÂcÄm0²·7Û ô.S„±³¯)F'ýk‹¢ D$†·ŽÌ‡Ê¹kÿ½´ð endstream endobj 2117 0 obj << /Length 2693 /Filter /FlateDecode >> stream xÚ½ZY“ÛÆ~ß_Gn%Ï}8Ƀœ’TqUâr´y²ü€%±$$ P‡}z€ìpÉåR.ÕŠ8fº{zº¿>Ÿ2’­àïmVeþ £ÀJ«Ls0—šgM‘=d¿Þ`ˆ³·ÃïOw7?¼!"#lHv÷)š)†‘€IwËì·Ùݺ¸ýýîçÞp:F)â”7è£S’HRÒ˜¾¥zV,ººioçŒñYÞö‚ÍVEU4yW,ýí¾-«UŠ%!q²9ÕH ògãÞÎÿ¸S¥gï±À*‹¨JdËbÚ/ý( z@Fa7ˆ!%L6'H2éG‘_…ˆÙhÔ_’Ýe/Þç;¨ÖÙݼ¾»ùtCÜ&“Œrа„i˜#)³Åöæ·ßq¶„w?gq˜ùÅÜfŒ Íí^m²w7¿úME¢‚"C¤ ϲJ&‘à:¥‡G:…7ˆãGýÍŽ‚ÙxœÖtÌÓ´ú.š¦ Mk‚—×Ñ´!à8úMÓï®iö½5­³‹5Í(F”]EÑÌ‚¡(:©«hXàHÓ(IãçˆÂ<ÚŽ)-0ádóHæG~YM‘¢Ç¬hšõ;)Ò;©ü¨)¶̳Ѩf_Y,ædöÐÔ[…ýOW§DQiØDkS¤µ‹›…-ÙX”÷ã¤Úá,÷`ã„Ë«e/l‚6ƒ=ƒ¾ÞcÊ“ ÌAiƒiƒ,%Ö BŒ—ò÷ä:"vau“¢HD¤aì‘­¤fß 9Äà½`gO#G˜%1F€ÿˆói0t;‡œÃ%n™‡ÈŸŠêR#Ãéd# ƒÙ•ÁfW¥'\Ù[:»·7ß‚õúœ%›3IÑv‘ašž‡}”ùý¦w8­.ÙË>nꇇ”XŒ#&‡È®šóÙ»¢éͦ­“ÔÁ<ÉIS,÷‹"™Ä€öj oÁÒ£d³ pùß·öˆµ.#uØB$‡¥ À¡ùÙ©`2Í D ÞU­šrù)ðñùaÎJ©USdfFÈÌ`y<c2‰ÒÊ<5Fû½#{¤A¥Sh°þHöHfB!’€9_Èxb‡R4wëÅîÖuUWIÿˆPƒ–?¥ö°FRåx´žÕeeMºóä·E»ö†Õ–m"tÀwÁ¯³R˜AЉ–ä)VEc“iÖÀX. ¡ÆôJrH† ’‰å°Ì“h¶iÔI 2>vü4ÒJí ÉJˆÝ ¦K}®·¥‹9¡ NÚwù6XkÞ&± Š:-"<øxù†篞dñuQì:o£Ý:vÛ­^GÜ?±ñ/  y܉,zœò zăÚs±òüò{lþtElæ`„h¦4ÓÓÐ\·õ¾YO‚³³ËÁYV vÂX©‚•ë“à,À”ˆ` écxDeŠ\Êz Ï6ûT1oH«!Aà7‹Î^°Cn .a;Dó®Ùè,ÛçÂÌÂúù÷˜ðb³l=W×å°»¦¾ 1û™muØgõ¾ >_1q£âteˆ0à`·TÍÖyµ*拺iŠMÞ•uÜ+_UEW.ü]"ÏX#u}sP¨&úÞÔ«r‘oRq &Ôu¬ŒÛ˜ÊXÌ=€_ûMK£ñóYÇþÓÁB^†Æ ~®ƒë¿þêqªhÊmá¡ 4硱Ȼ}Sœ‹,øQºÇÎÀ”.äDzxçÌ— DÒSÙâÙÙP*:ݦe:üö°r¡iX‰$èÖÉZ€si=©Õ'øáZ‰¸'ã·{SV!4ŒC"mSìN\ƒ²ë,Ñ¡“¶]ú°ÆZ!M®¤[nÔg:æÄÄ9™=uý¯w79[«r2{.”Ò3~JwÛüéÜŒiˆš] ¥LÁ~2q(eŠ#5<ÆOÀ1Cä¥\'øI…Cª1[»;û­ý?ØO(|AÀgËÒÂÏýþÞô¸¸,H àq\CðÙ¿_½[Ÿo{Ÿ¥p“Q@s¥Y(бFGEr‚¹²'súâÝŒúœ\3döFÌuQõ¸¬{¢\}¾\±‘+ߤ¼2ÀhÌC+þÕ¾«·¹Ïj ˜EÑ£‰· ì‚ð€‰$ʃáq^•mÝ5õ®ïÂ3{ܸúæGÛ$,Ç¥îeS|Úƒ‰µ=UWÇ’>ÛGuçÓ[‹ã<½'Ë1v®ýívðdŒ·Vû"÷?¾& » 7adÞýs;ѱ·<{wyX©»«û \BµëC“}5mxN%_Ô~bSoÚ¾~¿P |®³Â”Þ_£<¦-¦®ëêñ>ÈX—õ|¶åMXÄàøeûcªË/Qö ŽÐ§­(ìø¹;Üg¹û³Ñ?‹xÁFÎþ™7KðA[©h2ÜÛòÚò:±½ØAÁSv¥ßïð®É«v¨gáÁø{䩘vŸu²§âŽ¡”F£^%h™×<¢5=,ñ¹Vò°ò$ƒçIÏ;>²yÖ N¬?÷†c¢›Ô±êUDgéÆì„VH%ýɪC%’ô9î?q`(ˆ8óìSFàôì““HLÇÑ}£ò!•Êž3M5§díQò!#ý>w–þh+Bz;W˜cëÖPi”yºýÊâˆ~Mt£Õеé{êh“¸Ì: ú#M†èÁ²Fàâ ¢Röà|¼v¥HD™84öDÀP‡ÑßÒÒ3¥¾· –°_!DJàW8ÌgЀˆ«f?Úéì]J™à ‡Sø×‡˜à8»ïûŸSË7 MÆ–?é¨PDKk뜮<%`ºÜê>qºîëŠíîɺ;Þ\\÷QÈÌ%½JÙG±‚zAL%Ÿ~ÌYÞel§Ÿ<ÀöÉ)ߣÉäCÈ<­\þ…í€Òж+vÉzÎ6;¯"0ç°ÍXÅ?]ÏiŒÓ×á®%@›ˆ¹S|¼X{6ÓØ0a6§äeµÑ <†F­0iüùžÂ‡*®ÓƒÝÆÃïdã ÿvÝ6ov@¨'Zû7}ãÉÝì[WaYÞU ·Œ_oʼ]ù®üˆU¾ó¾Õäç4[ßîZ~›§*¥*ßö',;[Tz‚]Y´{—÷îåiàù|ß>Ýp"Œ½¨wOÜ—ú*ÈC(XªaSÑ“Ès!ß4ôÄŒOA/“7Eµ 'ïúíBò`vîSå"t)‡£ìŸÞ׆¬8~årnmƒÄË=\P?ÃÈë°7`2ã"öô8p=ŸilÙ0SóBäY†&~ø.€ÿf‹Œ3Œj,xJ7NÁùï±Øc7êd(eÃÇ-T™ªü?ò endstream endobj 2121 0 obj << /Length 2709 /Filter /FlateDecode >> stream xÚí[K“ÛÆ¾ï¯@nܪp<ï’Ê!*ÙJù ÅÑædû‘Ø%",@à®×¿>Ý3C‚/,â’Ë9h9˜W÷ôô×/@4¢‹êøÁÆ¿ÞÝ|Ÿø÷.*m§J QÔÄ&Š¥"TêXFuÝG?ÜÐ×½»¡›¼¹»ùæ;É"ÆH¢îî#Ã##(Q°üný8SĘ۟ï¾ÿæ;̆ ûØIås7Nëˆ}{wóå†yR¸)çDH-o~ü™FKèÿ>¢D$qôlg=FRpø-¢7?k K’H'öT§ÖÓˆB¡ÃmáGŒ’„&Ì.&ÂèÈ0N´>`=`™±˜$L¥ËTŸ.ã°I"B·<žmñï§Û9üÍêÛ¹TjVÝ»ßMVÜÏU¹É7Mfg7n ¨ìüj½qÏé}Ó®}^å œ¹rWžž3E¸0í¥}¼ûûÝ·äÿïÜÜc¥Q›Ú©¹§ÔTî×3Œ £97Œ)£9DÉÄ­@©"×r•’Ê5‰\¥D-d\s'ªìdrH=V$‹˜†zª©“€:=¤©¨ 1e#hÒ‰$±4—h€_ÜÄþŽÞWõcZ/·±˜ýo”ΚU Ï–è]ƒ’|qi¹Ä†™­òµ*™§ÅÆÏ¨37£½{Û‹*ƒÝÎ?Q&‹lP?!Œ‹ËôS©»©UY¼82 HhQ=®‹¬É«Òé© ÌšõÁ& ön(´m:à‘Û¹RÉìÍ ö3XÐ4yù0t& ‡Ä åþDL$ë‡RCŠ©#àe7’?ÝZäÙѾªÛyVÈ8â…lÛÏyQ¸á¼„¥K×6†¹ ‰ö²Q!„Apb–]˜]¿ RƒÒŠKŽØÎÙY0âÆ¾gÚwKsF™ó„pÆ;ߟõMÕºAM8éœ4,6ñhßΒȘOâ›4å0Oòz'.‰o:’òžw{”\•¶(r—Uz, Ü•±ÈÁ ÝLÔ¹zÓÌýpíz7 i9¯êeæ{àPù"-ü꬜[¤!.7¸Ï"AÈN]í,_l‹´É–‡¢³¦ä4¢‘T°¡lz°û‰‚u‡?lÀÕ€ M(Ÿˆ-w!Hœy<Šþì„è¤3%‚"º’Î( !^¾Ç°Zßw½|âr‹×ù>¥ÁÄroÜîVÓMÑÚg‹Æ?ìâ'û8¨ü8`Ýxgp±£Uj|¥vú í\Vmýöî¡XºÇ"ÿÜZs\U¹=×EÕ ƒáröÁú5;Øò(ÂŒu׎0ðÈΩa{»ÉÐ'|vo¡™pÜ„wÈmAŠcöÀ†tö1k½›Õ¹0ÃËÆxÙgp -]£ƒ,Ò/€98)Ç›y~`½k´¾»ÏZ­zè°Ïy³r"õ¢HËÏ®§ÈËÌ[¬~ÌËÔzg×±ò&¤ç~©ó¡ÞíˆÎí$gÝÎzu>'øÂ®z´ß‘¼6K&ñ;2èHø–È}3àv„¶›$¼çv$'ܨ=ÊCYcDÜ•‚db~Œ ׬1÷pÎw® övˆ€Fþø¸^UeUºö£ Y–™_ã¢Ýظ6„s/ù^ÔæIVõî«m9ä¯bM´H¦‘©€”$f{·y:#‚¨Ò¨iÈK N\O@þ„[¸žh€\nN/?•İÓäý}žÅ ¾€ôÏù°_ì€4Žƒ#@ê³€†n0,†@·‹ÃóÁ0ÕÍhVƒ»Àµ‰ä,ìøØ9<ä>µ€8|gÙùÌ ^¢Ù°ÇË¢‰Ñ…’«³´8×µ€™‚¾Ÿ¡Áj qz6®ûËðÝí1z,¬Sgúøò=~7lœP¯¿ÍÐÁrcøëT)ÑÊ~€*™˜µ¿.‚³=¥û…Ìê?ÛraK¶ÃECUª]u!Ý|’çØlgýC^x;×±f²–¢÷‚-=,-Ø– vl³i'·îÛ÷uöe›•‹ÜAÜ$FÌ^5Æ™$¥³,p÷.ð\4U½q£¶ I}PŒã5%&€Œê´àŸÿøðþÃûcE%ÍÀ²tœ p÷ÔÒÓRD𹜶†þPöRû‡rê\Keå?d†™!‰L^þ ! Ø]… |™„4ëH £5\- >CPn{Œ³âZ· Š™½©A)ªmÛÿ« ïqÀ^.v-+×QVëX¥ý«Æ¡ÆO)r_–Ó˜gø1èj‰=f›•k-3T‚²—[àΟ\s@1D"‰¦»7u¾ Õw™0q’’<s”Ë>XZOyµÝt%U›žØê[?õX¾”é£Ï¡ÿ1mjð÷„²0;YtÑ&¥Í¾¶Xÿ°CmRh¶›#µH!bÂb~­ ôâ"á.{Uº˜žO— ée˓ْЂ05>[2!’šI¢=¡‘ư|Z³åño$Ýá/$<”,¡ Øòh‰S£º±êuIQ(t2 ƒ‚Á=Ë=ÉœÌ<Ö𙆼ä~Æäùq=ÑC}׫x}~ð.û>­Oãèѧ€ð9}B”îj)ûÎ丂MÁq§`}Ž/S°)ÈKmeBòœžxßw=ÙÐÜÁr­Æ'·‚ƒ©eÓ$·‚+pwÞÑ== Ÿ$·#98¢¨}z)£8L}µ¥m`öË`%Ácé >¢ÃSF0MªFÿ0gòÍN‹'a@SP*2ðÊ|“ÍÒ®xp~ß] ÛÈðcbxGéOCû„õ•ËÞóü&ra_G=€ýÏë×£-4Þ°Üœ^~¾ (:ïjÞºüÆ–Ÿµl?§'œâ{ìÊK÷›åö‰EÛâzm‰~ël‘¯kg2Ý[X˜¶Y§‹Ì§E…þ›ýjxŸ${ë:0ð¤[®*7£KUì4K 2´í"[’¡w9w«¬M]2oµ7+ÿš ã ØÀ¦VËáŸÙ\Œîã—~¤K~‚ÈØR(Gú–Ë?WPŒpÉ÷_Åì¢LˆŸÎ„¸B/G‡?6‘j’ÐIóB]kn#v:2ÉÀpdÐç H„U]¶ú„LUuþ€õ„òˆ£éèñÒÙÿÖ<}ÀÚ…eåI¨·eåP4ÿ¯*ÿÖUåë/3Ä9,çr|Ńs“i2TÎc¢´Ø:?ôqzŸ÷]Qô㈞‚ è>—Bz ò¤û |E‘áÓWßfˆiXΓñi=®ÕD®›I¢™Ú‡´8éQ AtŸƒf•×—z<žû\Šç ¨wpîÓÿŠ\4ûÃÀùÚË Ñ «…b£ÑÌM4åÓÀ™Rû’××ù‰òH²G@Ð}] 9ø0ä“ÿŸþ;¿e¹+¾ëÞ7 “ _ƒÆûÝûè—Ÿ6“ð!%®:à‰ËAX0E˜â—cKžAÆõg Ë%}å7»,tJuP Þ§:o±éëY÷Uè:­Ó¢ÈŠê¡NýH66mÙßýú²Cþë®áûî!el‹É½Z†×a9ão½.ƒfoFRó‹*"¬ ´¿Ø4‚°XEóÜŒñªÃ“ýªÂEšÀæ endstream endobj 2125 0 obj << /Length 3001 /Filter /FlateDecode >> stream xÚíZK“㶾ϯàQS»ƒ@€Iù°®Í®ãZWb{¶r°}àHЈ^Š”Ijþõé@Ф Çh˜TRqmíˆÄ«þúþÐàþ Š „"‘D„RÉ@qAB+T:Xß_…00 >v¿¿]Q3…2 $§„qÌ×W?ý hÿ6 KTðhF­Î"øÍƒ¯¾Ì%4Iàè&ñ±ù0šÁ·Ä×·WúÀU@C’„ n—T„É8Œ’8nÁO³‡y¾a‹ŸCRøC¯¹ýö꯷=ú”Å$*2@EŸÊ#I1ààçòªn®oc³yYºÂg>C¦Ê*»Ï®é¬ð3Ç@:ñåÒ2ÇTLØ€µJ§9rÁüÔ9 å\NC3IâˆD#ÂéÂA²þàv-aQ3êÏvÄh3$díï‚p!Úñ-Á‰õ9{ÿ6ü‡ §LTH/8Ì!Îa:;>ý8Îaéö; Ω$°ÞèÑ  _ÆÁ ÷Y¨õ¼, Fô\8D÷y8ÒSï ÝgÀ˜Ú?0ýŸÅô‹OsˆièâÐu)¦AŸ‰œѰ!‹1¢ÙqD_Dÿžû 4«¬:ΰàÀÜgàL0O@¼ƒrŸü‘{¦ÿ/P~éY€Œ“Áú^d%ˆl(Ç*!ŠÊ1”ù (_ÆÌ–å¶jVg¢y .,ž<œ‹ç)È·ˆ0ðGÀýï0,'ýâÓb¦‹ãÓcZR`CLƒi)ˆrªT àø2ªpÜ'{©Ùvï®oà¯Í¦Ù¬\Ú¬z“—M“÷¶ucÆ”™™ÖÔ¶Q§s|]Ù ‹¬Òó&+‹#ö`ŠÝ0¢ Ññ¥ïuuŽ]˜‚ B¥q2`ÃdM^4QA¨ˆÎ‡ÓUÌãÉU’Ý*' õbA !ÓãðìÖ#D\D¬aã†á÷«<…v Ö¬´Õ-ëh꾆²YjûP}嬼†?O®£M»ù÷Õ5e ûRg¿kÛ¿­µk[BéêI›ª4K.¶s§ÿ|ÆÞ;*jb$jÅPÝ;yüðÑÈ¥$pÔ°»0¸‰µè ³G†ƒaq{d›*[Ïuž;¶B88<”¨SÌ£ËmYçžLŸ„v¢<Ü ¬/é4¤Ñ: rŸ6iª­&^'ƒ‡Ð/[Ž”™Î¬> µºQdm­7d5gUns§[ÎjÚŠ ç¡"òÒ-pMÙr´å¼¼Ïæ©GÚ\P„œFÚ\H"I{™æµ÷ÛòbÒC‡éqÂ_g[ø|º,ì]ž—è%ÑŒ$‰;ÿDµçÿpíΚÜáÃ(wøÐÖ”¶ÅÚm_ºÑÕ:+ŒAé¶)×iƒ§’?Û¦eU®Gç¥ñW-Ej½1úÎÔC²F¸hDPJn·« Øç!›Ùßh¶( m[îp‘gÛZ›eÓÊ:hcưy‰6Çæ)8÷¹¶­VíçMY¹5Óuig€-Åíc[³*kGèq•µŽ_a7ÌvSaÿÐk:ê¬ÑõÛþ.à¬Í6: ½­; Iéö¹ÒZ€¹ –ilG´1ÇÆT+4Õºçvèåzí¬Í[в¸ù]ã\aŽ¡Ì·k}¹aç' {•.¾lš£f]PE.O:!'ÌÓIŒºÃÅi¼ÇùФG¼»”ð(Fÿ ¢=ÂÙ¶†¥õf¥«‘ûf›ƒ¶pôFO±êç#_|®¢î¨KHn†Q¯%µÐ赅ھ݅ 0L& ç Âö‘H´×܃ „b*² ’åg„£ç¥™~gñrƇÀé^¿ÊYp%‰Œ¤?ÕŠbnMf‹Î>ásgæí˜VíR“þ˜&ÔWüE›ï]Ïl'š t_ëzEÀÖFÑìoKGfgÏÛ5k‡ä½CH"»è[pýZ7nï¥ouˆ«BÙqx$þR$‰i;$bRÄà†Ã©ÔÐ5'%ÒlŸ” ØkÛø˜¡5ǧ.þ—¾Æw>÷tVƆVئÁfL$ ÜG¦HÌÚôÒ<‚ÊÞ¨¯¼ô(´³9?xÈÚCrRÊ6p>¬¥jÝ _Ý èܾöÒJ"îÛÚ#LÑþÖ~õ§šqÜ%¬o Þጾ+ ðÓh¥= `QÑ‹x‹«r½Qiå”ÁivØ.¶“­®Tzžµqƒ žàøÉP» í~/Hºˆ‚ë&m­3NsÁv8{ÿáö×6`IywôŸ}ùÍŒÅP3&¢x®¢aÓhÃ’JÞö§°™ªpÇ6LNóùö£¦±“œ]›Æïd;‰Â¶iì€ôÉ4öå¤PÅé’¾2eôD¸PìŸÎ}zTœ«Î¯-–ÍÖ§NQÔÙ¾bÆ\·™)¤l‡TU†`néQME‹Æ;ŒéBW÷ÏvQ›í…]¹Ñ.ß5Ù.0}È}3!~Ø–ùæð÷Ñ$κ°³?|ú4¢óîÃw6y¾ÁJQó!znín“!9µÃ3öõñüÖ‹^Kî.{eÌ'P Ú ÅM¹‰¯FQVkW(@Š;¨°Eðîx’Aòa ­²'·ìݶq+™äßm¼tÂàpŠÒ„±3жæCSg~*ÚåçðìLŠG )•„²N Þ}úÇ7ïÞ&ÿ|ëuâ ŽI'bIÚ>¥¦d#mÉÞ­à2¿Ê5•;ŽžüÇ„yŒxñ1%ÌÉ…ÑñS£dKûVè¹®ë´zv!D$ˆˆGÑìãÊh©’ÝéÚz‡RèæX1ޣΠh(Ùn²«Á#V/¡Û$Âýa*T²•oàõˆjY:XÌ#2†×ßœ>ÚÞTWöÃúî ŒÚbÌŠú){¿ì3TodÕÛvfu[¼é¾]o¶€Ì€¸˜ý¨½ ñ¸oòÀ0¾ñ[F¡d¼SÅóB<=œ:HÁFzQéÅgDzXµº[ õ¢WÞZFÞZâVUœx¸÷Vú£I®.]¥Ÿ¶Sb,¾§•»¨§¬Õ}6ÓO`ßm]Õ(Ô}¡MÞn¿¦\ç‹ÚWÈ‘& œd’ áçhþJ~6>]Å~w> ;Õ@þp)zÝbdnÅëÂ¥H€¢ —Þ-ã*Àô™ëjiJÇðVë|yƒN>«ÛxÄvä65,7èâÈiÎGÛÿÖª1Ox¥hõJȾ^ÁÈN¯Ì›np¹sÏ›l“gÆÉCgk6÷Â98»ÞqnûêEUËFì'£¸Ç\0᫽ á,v© vØŸ<­îµ}ÜáßvûÄ7·O»FÚØF›-Á„O•kC_4ì3Ò7δ9·šµ»ó0¼´çá–(} w§/èÔ¬Þ`ìžÕÏëµnÀ?+†.Ëï0Âq†_îü#6h ñÁpÛïé³Ðoßퟷ¥)lîB*lÆmffÞÞ1aÀ‡]xaø’³ŒhâÛWV˜ q¼HÉ T4®Žruè+v‘ÎÝ2Þæ^A{ÔE®©½ºÜsœ´kŠ÷:õ„~“BN^y\ ‘gºÍÕQ¯IÁŠR*.öš”Ûo½¦(ÐXÎè>óÞÉ…”½’eS aœ*„ŸQÉMßUrÍM:oÃrN}¥µqýÏ{g¬¾ñIúæìÆBÆ]N"‘®öÏ»äÅPGá.\®#Àþ…rœë´¡%Ä`mÚ/ÐP”Õfeãˆ,«g0^ù®¬H¦}aBÄÌó$ÇÆ ||n‡k#±€Ì6šˆ4*>K†¤wjà÷õ/§<)L©z¯Ç$\:WÀ*ÒÖìjz«uúôPùo)^d 79]a9d[Ë3Œ¬ndHhû¥ Ì‚cø¦Xðó endstream endobj 2129 0 obj << /Length 2231 /Filter /FlateDecode >> stream xÚíZKÛ8¾÷¯Ðmmì˜áS$gO3À&À ìdú6`[¶•–%G’;ñ¿Ÿ¢HÙ¦D»Ýj嶇†^dU‘¬ú¾ªrãG$ª6p17?<|…Ëþ>DEûRh‰–JFŠ „y¬xT¥Ñ:úýGfÞ‡<òëãû÷œD„ -ב¤‘d ˜þ¸Šþœ ¤Ôü¯ÇßÞ½½qL"ƒœvP•®ËôÉŒ;iû÷ãÃ×ât©D£X“h¹{øó/­àýoFL«è[;jqFášG<üîÍEDëHb4§·æÃh†×N„]ŠFƒf³:…˜ŒÁŒ0–Cã=£ å(æl¬f".5ØTE}ÍÍœªÙq?_À%/c³rm®ÜÕdeqùšÍšmj̺NbØ[ÙÇ“ã#LY7ba•–YaLh¬ð:m†›À9Aœa’MàÜx ñwÁÙnÒ* ^Z=Ñp ®k_=*˜!…É¥¾ÇÃt u§Ç !±Òˆ Œ—Sßô˜¤rµJ?a‹te?Ï©œÏÞdOþ¸Û¥Mu´’6UyØÛ‡:]ýl6(‚*Z…„ÔÖ<_¬ãYQÚÁg Ì ƒakD·Ëv¬ 6;þ[ÖlíÝúçV÷²:ÖM’Íbg³øì8+–ùa•ÍÉ¬ØØ·EY,Ì”²Úo³¥'"Kk˜C. ãnô¦e°Édæd‚*+–_ˆu‡PäÇVøâ¼O1q§öGêÄ&y]ºðõP BŒÊSl›*[C0WºqI± £ Œœ„=?ååzÆ!OãÃî>Côé¶Ž#T·z:’Ðw’Ä×›$´c&& !aõÙS„Ž…’ÄHÍA’ð4ÿ(’ør ÐÓñ$1É&t$áíÂ]$1zGžú$ñz¥¾ÇÃtŒÕÛHBpB¢ÏpÀH¿˜æŒm° I*ïAêAÖ×)QÆà§Žû(£ñË(³yÚ%ßoƒ áH:d0F2æÓ€ 8¥z`»1°šÄ£û0@¡<0Ár©ù£ÝW I ðn‚±Œl³²ƒþóh)’'ˆõ…1öÃ.+œpOŒ€ƒaˆ0FŸ0¦!/±·Ýº=è‹£°R|ràõ7†^ŽQˆ«ÓAUQ¥º!ÿ ñ­y ÙHJI7âË&„ˆPŽÁ‰<²^D ’¢ç,)¤IC½Ò”SéU ™:ÒÓ+CÜ"ÖvûñsÀºøš¾Ún?´aºˆÅÛÐ\é×Çm9‡¤˜Ïݵy³¹OÍv&¡>ìì‹<-6&u4÷ë²:¹™#ê%oÕ±¾í­ Mn–~0„ªÓgäé²)«ú'0PËÁØ›Ô!Ä×€äJ avpÐ Í3¬²çlÕ þܦ2Þ¦D  zàÛØOÊ3ÒZ%›Ô¦;;ó|SãbÑd.é©’Uv¨åâ*õñÒ““MY}ÕxŽÑ9òïg+·©BŸ­ÈËlU6Ésº¼IWÜ´cƳ‡´OJ2 [qÀ`ÖÛ3úž›Yà«Ñzûž YKFLÙw‚ópAŠöžÊZþ¾˜™–¿M¤e’/ykP‘"Öc$‹xf¨µªûÐl«Ô½_–;W_©-nkû¡vµþ2[»Ys2sÓ ø¹»bÕ}vßò¤Ó3nßws;öí-ãT-¿r8 ˜l –ÛU™Ïÿ«²Í¶ÜŶ5¤ÅÒCžþÃÞ.ËâLᦇf­8asægë2ÏKóé[‹Ë«{9È–¾H¶5œRz“j£mûn,×2 +Ê&¡ZF¢Zô-Ö…ãÔö3M[zzo2§1*³½W8ǤýpµšÂÄ® òL¼]M¢ÖUAžZòC« W›í{1ÌÆŒ¼ œ†ìbζ”º£¦ŽÀ(Yš˜nàÎxCû¶»IL+ŸjÚaywò#óþŒ -ÜdaxöK‡Õf¼3PäË¡p-Nó¡mÌ2|Æ Ã׋tòr?ꧬ1B©’&à!wxx"9™iÒ¥)¡ºä"*®é$«éÔ[Ím$F¯ƒROï…Ò×Ûí{>LÇìîŒàÞ± €®Z‰S¤ò;"5«kç×”h >¾U@Lˆñiò¢(âX þz6Rsð×3Oóù'nc‚ ¯.—eU¥ËpéßÛ$fuÁæÙu;ئÑë‚ÍÓ‹h°½Þnßa:áüm‰ ‰ ’ÂëÞ2%fÝÕ:Üt>i¶Ùº±·P4BZ¹ˆqSØ(ÞV€í0(@S'(ùl ¬Ë2ÇSð~®ñ¡’µi‘V›£‹sìm.¤ñìü›Ä·G“ŘÎ>Î~Ïîé×PûW¤ä©eÉÙ•.²àâœô,`Ggœ(i;°ÀJV?G1½!ÀbÚ®øûJY–Ú̯û¿‡=0˜»¿¨kK‚e‘ÃVÍ>Œ¯ëÄÐXí›^‡F¬õhh4Ýo1MU+ÄI<4=Œãôq±§7i–Æk·îZöI—‰„ â B,™Â nÚìTù5Uj's Âb5^©‘„@¸ÔÛö%Ì¿]µWköf“û»÷ûŒ§ÊFq ¨ÞÁ#}§ÿG, endstream endobj 2134 0 obj << /Length 2545 /Filter /FlateDecode >> stream xÚÍZ[“Û¶~ß_ÁGíLã°3yHgl7iÚNêm^â<еâ„"µ$åµÿ}.¤ Zie%ÓñxÅ €sp.ß¹€O Iáÿû¤N0ü©B+­ÍÂ\jž´E²N~¾Ã0'ïÇß¿=ܽyGDB0JqJ’‡u¢h¢F&=¬’_›²»_2¬î7]ô›Â=èò6ëó{ª÷¦Ûe¹·Ëú»zÞm1›Y”Em&~¾§jQä}Óº1áUÑÝÿöðã›w\O£Š"MmËÖÛ_¾ÿéÝ/èßÿ}pcÃMHŒ$ÃØ¬^E„K>]ïÃ…ë=—UeF%KN@À,Y†OÝÛO÷KØl”¾xnË{²è{¸%‹.ÑýRj¹øaíÞ[‰˜‹voØëUÙZ‘|u·Fîæ7Ëó¢ëŠ•»û\fæ‚-2w_½è³ùÓ´¿Ë×±­3`˜Ž²=ZuE6Î9’xRžy'{d‹(;jgÔ ‡  ã¡t&{c/X‘Á2àAÕØ¥ó¬r÷«²ûý/æ’.ÖÖHàYñ%Ûîª"¶1’bÄĨ©7ýv÷&¶/ªA¡rJá/þÕôž‹~“õ3Æ€º•m֮܃®ÊºM”N‘¢£Ð¢ôSDÉÁ>ûjስ§Ñ¬½(LÙ™ÍØàjŒ/¶†Á}׻磒ÌMYçÕ~U¬YðÎÀIÚÇÄ]üç=À' !(‚q²¤†Iæˆ ”J· c ÄØ5y—¯=0oîžîˆ'Ð"yŠ4#I¾½ûõ7œ¬àù ¨,ÕɳµM83†Y%î~æ"’¦ ( a@æÃh'%·„…¸PAJ#¦$ð‚áêˆ÷€gB4J‰¼–p¨uB.@!e°õ²~tjZg A›ÎÞáá¨énWÖ˦ýTz çÍ~7Ì÷+Úí ì`"_ü=Û–UßÔŒ²úx—œCÈ!Ýd—\0°î²-²*BW™Pu+ºš!ëºÄ{(›Žˆ0â¯1ÿdÖý|Ì·À iL®à;ô&ÖìRoˆGkIRÄÓ ZS¦V›‹ÌÍÞÆseÀÚüõ&3)7Ê<¯m䂰̶Ý%ûk¬Æ i‰ŽiîJÏAÓ®Š6¤ ±lÉCQ}u÷«ÂXoY[P7àc„&f@·Í!Ê•¹³é¬.»¦o›½¯nDQí£¿þˆþç÷oᇼôèzê<èò¦-^„=!AÑL_ {@€ã&¨'„DDðó!îAȹ’ò öÀK8dHºð &ËP€ˆc(êÛ}¢ŽêôåÇ•ëðÙÍ9ìÜ4ûj‰ŒTwöISemi<䨰Fê&€ i5FÕ<–y Áx!º‰pÈÇc!e´ÎªÎ‰6q¯¦>ð¯ÓKíþØCÝ6ï3«’ÔºÓà¥ú"/œzÙIAÇ)çW;)OüÊ›x)OÁ®å1ï¡RÈÎ!²]Ixî¤Ø”Wá?ÒE3ç CJÄe5<Èj˜«:á·-žöP;œôÍ›apΩÎúæMô>8ç”òYß|=åÀà!k@éËÓϧ,VbŸmý°ŽD°æ¡rŸ˜ó‘ø™u¤ÁRº‹qN/°:Ö9æpPBÒT¸z^¸ CÎ,•ŒS>bÆ<|Vº’Ç& v‚FÇø)Æ\J1q™»aËfo†½ÕÊ&jpiS&-\L3]‘7õjùù^H¨Fˬ/›Ú”ËæÝ˜ègµ)j!¦}(¢…ò’H@fÈÒƒšÒèf×TQÝ`Æ‚ù²„jéfÍKÉô"¼öŒœÄkð— z=^qŠÙmðšp[}Ì|°¯£ì€òŸ…Ø&_R‡|ÉávVåûÊšã+¡ûâ¡{*óØ} ±{JúTWVçãX áa-¦ÛíÚ—C £ ñë»’¦.åmº’`éHMSÿ‘ùh}~%éxÒþ³b üim»ßt4¯!7‘ÃC9œ!7ÑþCÒgcÈëI‡f¯¸¤ßChªV>¹{ûÅÁ\Ñ–[tƒj×EÖïYj}w¤üf}ÂLº>ë‹ÎÛðS.3gs’ –÷ù©êº¨RDÕh #n­Š>+«îâL—qÈ_A³\— õÁË5œ¿D(*$J¥º¢(„gJôM ŠÂV©fG¼GN®$?8 (ç^l> stream xÚ­WËnÛ8Ýû+¸”š%ŇÈî¦3“`f0@Ûx×vÁH´-@–\=šæïç^QR,G)šL$¢¨KÞÏ=‡ùF8ÙÃï5) ƒeªXbb¤¢Lj#IíÉŽ|\10däzz¾ß®Þ^qE8£–YN¶;’Ä$Œ*X´ÍÈçè¯r½‰5ùñTøa¼Þð(o×<ê\›WeóæˆÚCÞ‹ƒë¦†5.û¾V:rå:N"\êö>˜T»`qª+Ü&ʺ4/÷aîèöe5Dݗ®?µužúÁÏÝ!‡=SÜü°þºýÒÛpA•´! W£7n‹Ú»ì_â(/Ãd–»}Uö;ÃÛ®ªt½‘<‰¶!#0­N˜i0hUWda|ÛÇ æwy{s)¸ÆúhÉ‹\0Úa‹"¼teæë¦Ì~!¬“"”T5§¼ÜÀŸÇ/iU~a\î»Ú…`qÀgí¿uyí3ÌLªèÆ{tòöJšóãcO¢Áwï]4§º¦s¤¸ 7£%E“â“zOÂàÓ5àKrÂ9µJŸ NKPa% ,¹«åL'zf.%eFMá´÷'?8 þs»ú¶âƒ;À®Ö°»!éqõù+#LCÁŸ!w½Ñ‘Hó 7«³¥”[K´´T þ³õ`%lѷ솉¡J¨• ÚêËÈgsØ‹›ûç– }á ølýÞ×5€Îc#T`\ö͆_`ÂpÉýiD6NðæŽÞÕà 0¬ÂóöÜ´o‚G™JÉ!Sù:™J™@¦üéL»7ŠZ+^ɽ´h;w/;ULPÃø œÎ1 ˵¿êeR×B€ íöœWp˜q+ä*ÁeäNHÂ0ó#?Žvý1ã³Øýœ“†¹Ì­ Ã]W¦‹›0,½ÏÏ÷J«ã©ký¸q%ŽCHiÚ\™æÀïOQ¡±C@–EÿT‡rsspÇ04Úú˜Ns>ªsw[,r·’&àb$›»W5îê 5Öw`ðß»º{9@¿¸(¥úè‡~ÈB碢èƒÄ€ ÔYóá.…šÛo튦ZB p$È㘛ëÚêijNµÂ«Å’œÃ†Hý ¢%O>[˹Jh¢’ÇZ.A˧`žsi íäÅj.Ici^EÍ%>ÇÏb¿sC-×/u| t¸½ƒdÍ<œr&Éyöò|Î舴FŸ„ûLòGF‡áÄ8§¿UôÈçU¹ ¬Bƒ¸Ù×ÉYÊ.•Õ† {±àWkªìkùÄ$‰šûèDóÌRQ©& ¿[ì%ʦfŒ?}-x~äóî€å >ý¯k„Öúže±¿¯_^Á¥wMTÿChj]^4tÖè„+C Ȉ"$ÁFJ—tð͉5 endstream endobj 2144 0 obj << /Length 2857 /Filter /FlateDecode >> stream xÚÕZIsܸ¾ëW07v&6œª¼HšòØñŒ­Ô$eû@±¡-6ÙæbI§üõQf*­E6#/(Rv>#ÿ9Š"ŸŒb£™zôË#ŠDôýÎÍ^O@4oPa“X¤ˆrëy/@I–EÛ©ë 3c|M/êÆó‚܈ VøÌ·I¬-Þ9oÆÑ°D ׳ Áˆà—7öÁI¥²5#1yc¸šÉÔH” <&Š*'#Du±ï 8FiœþŸˆ '1`^–QU– ÑðD‚jÝÙì¬o.²\.¥7iô YK ¡'³¾¸olW ò3oN"ØÔ÷þƒL’Ï»äAïImb‚g@ Ž&¿«K¢TË=…ÍNw ÏNÅ!½Ñƒz_L‰‹®C=6§þ¥^|Õܶ¯‡ÞâŒ#×Vs3TÉÖ5~Ù"Û;˜ñbìÜþ•ív˜Ú45±F]ßýgÅ£(¬Ûö<ëUóZMæµÉa¡(²*Û¤[ÝeskJÍ”Nb“º³±È-²{ÙòÅ[N]æ¥tÓº>L÷c#&^–ûëmÆ›”ÚÅP˧k{g›BNK"LŸ¨‰Ó1¡Î–Ÿ¬NBÆu óNœZl7dÁ¤i;éX¿¨W]y¨zkMq3ÔnUëà sD“b/ý©å_Ÿ<ûžóóCöýu¿~øŠÙâ;è|Kõth×4Þú“i[ëÁGüê9"…#²Ÿ;bq¯Ð‡ï*•_‚(q ú¶¨ŒEB·ås]eFi6;Ú4ÜŠæ%d,æ·W»ìæq‡_«gX¬ºk°žPÛ’fË_´ý­>–ç endstream endobj 2097 0 obj << /Type /ObjStm /N 100 /First 909 /Length 1349 /Filter /FlateDecode >> stream xÚµXMo7 ½ï¯Ð/ÐJü(ÀÈ¡ |+¤9´5r0ÒEQ °ÛÒßÇqÝzfÇ+ew}°—=‘ù†¢&·RÈMƒdü´`(IÈÄøµ‹ÊþLñ[ ~SäZ‚SÊyC”‚Öˆ$_FŠÍJØK¨Œ±¤P+T‹Ë“J ¦“&­M‚† ½¸‘á)ApÌäøNŸÌð› ÀìNV€Ù&E„ªK˜Tƒ&(ÆÖ¬l¨BUõ-žÔ”A•I´I dzµàÆ9pò˜ÁTbEòæéŸNü ­›É!jx¨c¶Àâê‚Ç2·Àˆ öÁišœó½Ê¤ ¨ú¨ÓR¨"”#¤Ô\'b #P… r‚>FT9ø)n)Më’°'v!0Áꂺ€?qåîºr–Õ.þ/Ûæ¢ÍuÂfE(  (›ˆ€<…¨º*0+!F`%)mç#°‚lù2†TcØŸ0¹zÆBÁ,#ì"ÕWã‰b'PÎB Dj‚¶ ´@¨Îˤb³B×2ms6…Ä>ÝuÖ  –6ÕÃ$˜ƒ(ç Á•ƒ|J®ÄRrå øîÆöhA•)ŒÉ¾_X‘ AæEðC|£ˆ®Zñ˜!-Úm..6Ûwá /ƒà¥ü¶¿þö{@¸K®Q±¯›o_¾|Ú¼yó"PÅ¢»×Фh6dáXòä„i&‰K—¥ÄT–/ooÂÅEØ^z¹*ù´äÒ³›ÊÓÈ FA^GH)Fò4'Ž´§ù?¼æ!o>‚Áíû»ÛÏ¿ìÂUؾw¶wß¾|üûë×î6Û·ðkwópï!ùúÍöÃîþöÛÝçÝýcq›žý¼ûã¯ëŸn¿‡+ió•`’£µO°w}%À×Gü,:íYt2Š'¸š–6‹b…nžºÀÂ)z̺@e޵ãf1뀇(_ÑòÄŽ<ÌVzeæ<ãÊœGÇ3Gö˜ãµûG˜“SY2ÇÔæÌq˜³㘗á^*Þè:`55¢8÷Œšã‡FH5ÇVö’Í¢Íç¦ÎŒ,^ýýtþwä%‘ì¬Dj+Dª§É‰d£Dš Id)} ´!ïµÄù½Ýì¹å˜‹qzUØu.-¢bœ™HÞh$)¯wzeÞ§NÎ'S'Óuf¸CÔYµ–H#¸¤±ZíÑÃF/¾] áœÃ ÔfõSÉ^¹´˜¯««l9Xv¦¹Ö푎çU]ᕞΫ2È«2¯4‚´ q—%å>PP@R+ÀT£Ÿ:] ®Ê/œY ®*û¦ÿ'Ö‚./–Œ%%ætYPbFÈ—©{4](¯Ð¥LJct™á•¡qŽš¤Äm2¶œw8f}UÁ5Mû@$j¿-?wzN–ã) û >2HÅœÑêÕoÖ8Ü,sò;=÷¹µÈËÊò,µãé;@‚ƒUá­ô®ôƒ½+çý´ö®4Ú».€eÝ¿ŒuêeL‹Rl\û@V¥Yšñ Š 3§ˆp¿rO3ïT|¿yÞïM@^¹…3L@¼…óârŒjîÕjlJ@B™àÓ" t²¦˜¹ó8þ¸L-ÒË—§Y{‘%­¦/¯\hµ¨y³VyÑp»ïö4š¾‡s]¡ñÑä”´BN;œmœ‹o†èNêꇚPQPŒíì =ÿýWVÞ~9úíÿ¥dò endstream endobj 2149 0 obj << /Length 2687 /Filter /FlateDecode >> stream xÚ­Z[sÛÆ~ׯ@ߨq¹Þ+v‘NbËrÚ©SÇbÛt’<@àŠB ‚4.QÔ_ß³ rIÉ®&ãx¹8Øs?ç; NH²?ï“:ÁðŸÈ$X*™(.æ©âI£“»äÇ „8y?þýfuñúšˆ„`”áŒ$«»DJ”I•HFY²Z'?/Ç—KF±\¼«u³y„Œ-ª]Ûš_Ô:oÜž^o´[µ]Ó]ßhGò øÝ_xwI7°&èò×Õ_@†%aHð‘ý£{›pv¹$8Kô5»r{ûj×¹Ãvwn§»÷Ìt¥‹®)‹áºZ¯¯9 µ#G"%ÀØ2|çhæPˆÂKžÂÈ;ˆˆšØ1‘4 Ž!þ>³6¢’MD”\.©TÃÀ! ¥¥x<ñŽ„ÒÄ8 [б”ƒIQª¼E߯$KQJ@Š‰êœ’ôI%e¨¤óë’¦q£¹{Åè^ñ„{c®#à:6ºn–\ðçøî ÕŠùÌa•Ú.ª7§)”Qç4&ÕïE<,%h½`hz¯™!̸óšðNK©Ïý›"¯ë²Þ,»¾®u+ç¸mY4»¶Øí/©Z1ª¥póYê#:¦·3U@5LÂ’ ªø<îØ>iÓ—ÖóJ:b!Û~ŸƒQ§Þq ÿtõçzešÇ4SGŠf+ñªÜêh} JÍk¼Ù¥¡JŽÒ˜gFšÕÕÕõʉa¶Š°1š Ó#Ìßnʃ?Ó»žÔ5ʺ¨úõØ@ ¾FÔጣ±ïLac£±JA„š¹1TÈl…8õ ™v_ÖCé¯ò&«µ{àå—^~³5Éo™~d‡}h>æCèšK¾§Šÿ„}J¥ÂÞì…)´Ä3†à'À.$¬mù&q!Nl7…õ&ž©ìKâ˾-!M`„µÃˆ°Ö}m¹f1ÞXü=zõCQ*Gœú}ÞtÖËk3ší,£ÂäÕ#(>;•BXѹžÓ§ n3£Ì"å YÍÆO[ŸÞÃÐÄ td¨ß‚Z@,$b04„¡fÛ£"8uâ§3jÎAŽQü.ïqÞí='wW;›î$M¨ÈìUæ™ÁŽ3:ŽuỈ@I…Ö‰¡çÞjg–`2œRAuLᬠ))…Ÿ M(‡vɾ–ó¿Fà¸9çûñòÙÔ1;m”ÿÕó™Û÷w÷¸o‡Ú;À`j÷! ¥o,.»}WnË60ÁÁÔÍ)ÂÙ ©È¹‚É|®b£¡â³•æ¶þ¥Ø‚S)›³Â ^¶~KJf#`ëXpRÐg¿\ðy.Àë)aÏÍ…Øg8„fˆRî‘ÀJ¾‚O!0\ p)Q„aÆì]V§bLùÒc˜Þ1\ö÷‘9Dž ê» ª?-Î%#§a<Ëc7S³ðfj/Yëaþa'ZÊ Ö¦Òq$°š]<Ï ”»V7D|&í\æã}ù+9ei)àÿ“ó¦)•¥™ãoãc“yž/¸ÁRÏÂ|”€Ø ¤xšðKÁ/˜ñ(Š‘ €N)'¤áâ@YlÔ¿]D?$À ˜ÎÆ‘™80 C±{q»œù‚rJ  +uVÁà4h|ðýL¨eDC@›†šø,CƒíÈ¡IÌó)ª™­ÿ½a3`Eš|až=ÜëøhàÍSñD<ÁÔ™f³Og¼E Ã”¶brw÷h*56rƒÈ¡ Lß8ppÜî jŽæ7ý8–%æ‹©|ªÚ‰ ~ ²¥éÈ øÕcP†„F[€ øNûÍÛáK ß1`³Í·ÚmåÛ]?^§š3îH‡Ž”M?€Z‹ ƒŒí=”ýÜ~Ô²ûîXx–Ü|Újô0ÚÀ^ì$ö`A»öOLwlºä[üùîà¼ð8´0oÞçõF·#aô‚°rè“ÿ;ˆ`bä(†@lpñ(órÀ{éü›Ð™`Âh*φìî­¥FFÄ.Ÿ‡Øa úí,d' ;Æì«!{rî/Ø /F²ˆðsÈ(F·¯ä|˜—P_¹<`ý4dç6êåȲweáŸO³lÑD»¡Ô‹(ÈC’й‚§»´%üEØ*†Ì¿ñ™±= ØÅ“€} 8׿XìYÀÛøüÛaœù·JTQà!’”Y$ínkÄa þ[›‹ endstream endobj 2153 0 obj << /Length 2988 /Filter /FlateDecode >> stream xÚ­ZK“Û¸¾Ï¯àQS±°xÜTvíz+©¸²»žœl85b-EŽIÊãɯO7’iV¹<ÁÆ«Ñýõ׿&,¹ƒÿ¿%uBáŸÊR¢hjÒÄHE¨ÔF&m‘l’?®(Òä·ñ÷ÝÍÕOï™J%ÍXr³IRž¤‚nÖɧÅͶ쮗"M÷y›ïоhÝ£«6‹}W¬]ͦñ¯ª¼ïËUá¾]s³(Výð²¹ïË]Ùå}ÙÔ®‡²vor?NÛ\/¡ÍªXï[ßI¹.jìºÍ+WÕ7þw›÷Óø_nþ+[2A”ÌÜ ò¾Ù•+bqo{nºÒU‡ó!×K)ÕâcQ`G?½—æP5LKB5ƒþm¿}¾§yï$C%JARž‚y½ŽuÇáŒB ³o0•ho”Ðl#(q…ûÌ’ö.q…?ƒ}”,aŒdJql´ä:ÃfKžÁ0Â5V„Qã†Ð´„•u°²¦¸÷9KùõæêëóÃèT“Œ«dµ»úô…&k¨Å‘™äÁJí@ ¸¸*ùxõGЖ°,K´ÌˆiOžÂ ŒïÂÚj¨ÁÔ‘êDë”pXý|îÁœ3$cúµ‡;Â88V&‘»Æ]*&UQßõ[, 0n°5´Y|ñíZéE^í ÷ˆ†a…:°ê²¾sµ›¥so¬Oam¿-bÆýŸ_wf\‚c‚ ;oÃ*¹èšÊ=¶Çê@´yuˆ í]…êh‹¼úLð‡O@ F¤L/3)RèD†ÀÁ™wžœ¿À4ØOCÅw¶™Ê^±›!ª@sÉÍsQ%¾´à$Ócøgt„yŒUøX|¦L@T+}tè‡Xƒn‹õêðwÑoWÖC'ûÎ:-óÚ‹º¦/b=έ kk2Z‰Å§ß·øþ±³ÏrñgñÄ<üßEßÛ¸D™yžÍå‚Áú¨Â2³fÎ)Mqc¾XA¶xk'áÞ#pxA&ÛÎ×z¸°AðPV Odø4™mÑy‰b踉E5!` © C‰uÅÁræ[¦,VMñÍ.õ—}‹ºE},EÂJ„jéö·]ñuï· 5-ª=)Îݲ¤‘›QfXÖÚ}…:„_»§Pwk7%¯•$š²ã•ñ“+ÓÄŒžãÈɧ€@2‘€©Oñl‹Ú-eHˆHfŒSš ¹+×{K „³j e½¬v¦l Që~×ÅPÿÆ Bsôtáý Õã5èì€6Ù–yÕEmƒ§ŠLȻ˿—½ÕG°¥ˆaæÅœÌ’¤¸hKzøDz²g‘žM·;KzX€ÑâÕ¤Gò)­.BzÀK³£¹GIÏ+Ž“žpd Àjœ‡ •.ºò¾ÎRt¨¹uVã|¾¯Õb ¡©^; THé¯Ù ~ÔX¹Ëïꢷ¤Þ·.ªu Í{µe˜‡«&Ð@%B{+õÃui£®'z>mÇ ôèè›?˜Œ€'r,ƒ±’×#—8eYɥ˓,rp¦ÆÞ¡ëþñ¾8y.ɦT$Ò—&"÷@ø›Ý¦ü¨yÑY)F·û¦zzNÏOÐ"ðÿyâÀè3‡MyÛÍD¶,_6ˆ” >s‰´AX¨Òó™Ï²pñêqg¦Î2ËÞ‚í‚'Ï8‘Ùt"зû‚D7ä&ä(7¾O›ôCáŸï>ºÂªi[¤yxÚáG %N­|±Û6{$Xö‘Ú…’T¸2 åqù˜¶3I$0ü‹hQB0Ð0z Åª¹³×!ÇC+èÎÈËŽÔ‚pÍ¡§=‰Sþ—: 4—RüåJ@hE±Ê!óD–ËÓ<¬`‹fã^xþÌñL¤ÙÝWE_8Û¼sDœûó/ÉíÁ˜˜=¨±B–÷åDdËÓŽuŒgÇòoò²­½|¹+–±„ÉÙ~çÏdžãÁ/U°$‰êÑfmm÷PöŽÚZæ¯äªîåÈ¡¡Õûó¶cèŃzy„vGø¨'FulX åÓUÖBÐ Ï–6,Óà—i=ÙéôÜøEûÕÛã¯=¤ ‡ø‘†‡a°ÅÕ~mõ¢A/µU½N‡S ¨«‹UÑuyûxm„MÇRµ( Lx© ŽNrnS¡)Þ4v®.o}ݪj¬ÙiUH•«ò¶-÷;÷ÂÒyí.@áñ®ÞÜ·±ýŸÝžEh÷õsÃ=º dì9ñÍÚ깇{&M_á¸4@î/ฆ¤"“GSž‹½nÜø±X0° ÅO8JÒ‰p"’*œíÓ¹M uCØÂò ¤Žð2ïƒN8¤þkàðÖfm›Yš7O§“³ÇUQ´¤†¤Q3†S4±@Íg" #B¥1,Œ¦JÌ6ø»âðÅ#‡­$2?9ð(ÅE€¡Âžñ(À§2¿­ŠÃ›Hë÷`¹ýÆÂ¢¡Ýðþ\&‚ý³†|Àß=tŽßc-Xòn¼€ñÏÎ ü>ã¹?07ÃñŽ?ïvmÙŸ<I!ÕÙ«)I8‚IäPO#3 u<ùò }Õ˜«¾n俀vƒ‘¥°ô4äу¯XÎY S"€<ìÓ¶A¡¨;wª—/u®ÂKMâÆòw—ÌÞ]^5õÚ1«¥†¡4Ÿ_€rIñöËÒ¹o5|2Ä=]D™_ÞßÄd€ ñ ßÿ=@‘Ñ#Šºhï]ïå0gDs|ÑG ˜ºD7óžœîŽÎ9ÒÑÞ…°ý"ö4€{`PO‚ûEœh@÷`è'ÑýåC‡ðÍ)ÿÁü† ö«xÏÌޡƽÉðæm³¯\å¢ð»BÙ6IøË¿²ò` Xí¿!º+ê•aMg’4“WÂËÐ+3ÿy¼8å-"“°Žô¼·p’™‘­òÕÞû°¤©=­ Àßà!Q×rñ¶ê‹¶¿Ç¨F:?m㉊$i6%=y÷WôˆVÛ spâ¯în=õð+)õ#5uáª\®‚ÄhàGëó¹M8Óá*{T›Š™jS1œ–¹‹™4ó\±õWöQÏßÉÓ°Eñ¢Q?µ"›£vê¥oËÛ½»?µÕ›¶Ù¹RìÂIÌÞôC&j¯ß ‹ï¾‰Ås9°(¸D].>¢¦Z¿v> stream xÚå[K“㶾ϯÐQªòÀx’@RÉ!UÞuœlUì›íWÑè¥Ä1IÍÎø×»_É¡8LÕ¦rØAèðõ ÝCWtÅVù~ðá§÷7¿ÃÏþ½_íKeB¢h¨Ã•–ŠPh¹ÊãÕÃêǺÂqïoèÅ$ÿ¸»ùöd+ƈQНîV!_…‚ÃïîW?¯aLl~½ûáÛwA§£”„j3Ùnežžvد&÷ÝÝÍï7ÌÃi™!ð·=Üüü+]ÝÃûV”£W_l¯ÃJ ¿éêãͱ„³ 'B›±ñtÅCBá…›Â-O¯%†f—§‰à…JÅïžÓİ`.a¦Ú„‡S1¢K¹ˆËÍ-ĺÌÜw™åšh¡«-&e~Љë×[Ÿ*¬ú%~Î}Œrýn£å:;åIœ»ÛìðOz7l ½Øú¸fY¸‘Ùù ÿÊöÇÛûè€ÔW·AHB£V·L%£ê',c7S¥›[!Äú!ËýÒd›å€“PÕKûÍwUØ&ßá}ßš¨0" 4`U¿÷m1Z±Å»Côü”÷2#‰jvþÖw ŠHUÏÄÝê£<Ɖl_|²Û»†=~ûŽ!sÄyv EI5 —¢d’hØ·Ól—láÈ. +F„ —>©@G‰3 QZ8\wI+*ˆ¦léŽÚÁáÌLÕ:=†s„ÐË2|·O@N¤Pë_(“ϱm뢌>%iR"ü_Ü÷Ç<û”ÆßáË>Ùâǽû¸Žî}f!±Ýžr÷%Æ>¤Q¾‹{õhDÍj`ç»Ï€Û^ÅÐA-Ù܆Э?î³SzïHÔpÄÆ©ˆï=K¨Ò×HŽNê eWì·Ùñ·Óq[&0ÄbúKRîÝÓ û žô ]û²aßY—s#vnÁn™ÝÄ áL46LN°añÜߘ @‹ nfÛ0e4h5¶ˆ ˜",õœ÷^6“p¿ ëP¶JL¢Îïµa‚ â÷ª “œp#Û6LòÐY œE-/ÊÛ§ @«&"m ~Œ“3;îkzòƒâßO¶ŸÃo(IˆèÀ·ð²p©š³ôi ÄþcRÆ9Ìõ„TbŒ ½È6Wº³Í¯jèE UièéW5ôõ¤;B…®«©™(TSÝXàÆ²F¨i* ÕJôÉù @0pÎù" @IMœs~&ÿ‚0=›î™üƒ/‚3ÂΉ¡ƒ>¬!!å|XCXÓåçŒÜO[wžŠ—Ã!‡}ëšmÉW^òm7+¾ ª¹oWrN9w®,¸Øô̦9;X9¯Ö+Ûæ/`ßÓÂ۸ƒcs¡¦pô¼¶ð<¡É‹Ú6zæû´ˆ<è»eŽIr°¯°¨Î1蘢½E)A8X‡tsèêãjÊ]‰„pUƒ·þ&OÁíLa°îRsôØú‚ÁRÞz9\ñæ¨u}Ôøº>j½¾Á Jûh ¾¡-ƒòçB×ÿ.,’û>:$i™“ÈÏ¡gvïž³å4zt/J8¥ozæ¬Y—S…VBëöAãÝû''føø„Ð}qϧ"9î\‡è\ÚGä1vßÊ<: %Ëu¦frýOQºÎ[†ÁÛ¨ˆa+¤Q¬Ûô–X÷°ý U49e¡X*mãSüÅ86Ÿ]ãû8?$w¡;s¯úü|ßÑ8î >4.4P À‚ÓÞåÇ—‡è³é›öLÝéö”6Þ†_‚Tä&ÎN¥Så>½ª(“ƒ ”ÌCķº¹Ôû¸¼1pÁwÈÉ󨉧Ÿh=߯I6G¨qyöüš¥Hü eÍy×ÄiP#\Í%{fâ †¦¼CütÀÿ=>rwt†½ÇÇ"óï`{ãú.?"xï>xL ÑàÉûå îs(–YšDÛîS½4§¼Êx÷¸RKï-CÜ00 mÚtØ \O±‹_Ήør6~)ø"ã•Óñ ý¸ª¶»°ªÌ‚aÆó¨À¸M¾pwtñ6‰½#SC»6 Þßy¨ðìÁì|–óK1ƵÓ6Œß%ÖTã·³¥“¼y¼G L—ü툯&zDa z ƒŽ¸¿I¢ @œI½ˆòQ™†8¢Eø©@ÔÝŽ) Z†¼Q‡üˆ®'z "ÍÁ0Ë€H„)Ù¸e)8tŠ«µuº¦`j&3¢SmnÒ¾ 2„˜²¾gŒŽ÷}J t:Q´2ö=ÓÀ#ÓÍÝÔñÞ:ØàîÃ0nç­y·í5OÃí"ä+ܶÉáöj¢ .4#zþ-«€¨žI¶ äaNNƒòŸ=äýï³ÿ}¹óMÔ(Öžx–ˆÉÕ ¸DÝ[¦¨ ó†9j$¼aŽê8•$ÊðeŽSáÅD8|œ¹ÿ-§j´yÌ XÉ6wµžáwX•“åk~ 0øÅ·î+_‹öË»߸·y\»~£WØ9K¬¨ÖWÝMÑW‹¯ôU›ü˜¾ºšhW_ÁpaÄ|…%©½n_áð‡Ô_ü1Áóˆ ¸M½¹ŸK ÒZÊæ.f€K0$±(‚†ý ƒoÒøÚ¤ÇÀw5Ñ.ø`¸>>À,î AIøàèq øæ_‡z”×Éø¶§VÕøZ„ _mÆðu5Ñ |qˆŸ•Y(¨¶‚@Ôø:NÀ×Lúøj3ð*¾’ãDp-Âc ®6Áµ °IB±.#ພhǘâpaÞX.Æ5^@«v¹˜Í.¥¾Ô ÿgŸŠŠm¢@™õiðˆë¬R•p¹¦*Í€i¨:ÍPuTôK3÷ænÛÚC˜®N~û W¸ö¢:©u¬ %Žüà³gþê7éO&FEom—$A“mjR6¯W¦³þûz±€ž—‰ºÐó?ûÌ3†:\ÿ´Q|?ùÖ¿7Š­ã²ôå’·ç0ÀW}ƒÃ¨è½æÑD³º&Õ¦*ô 9嘥äv—9¥Æesð«ÕS>,Ã7Õ)ásû”°“Í0™jKðd¤¸¨§k²ºG¼E'X‰Ç=”¸ ×Õoä~öÉnåzø¼Åä+ú¹€§Ä6¢²ªò½w]â¨qo›l*4ìX­‰Ìu-÷Qy6•MC¸* Púâ\Ó¬ˆ‹²µ­Æ":ódWYâÄÛèø9Ú–©7¢:Õï+ÀýˆÁÒŸEÎ¥*ýiŸË«•?‹ ±ªüiS~­ðçz ÄáB„K× 2XUPë ýº¾xÚ¢quÁDHô¢tÆ  ñx×à°³ëhÙØ€Ë ‚+B6—3½!èv9°%KÏ•W‹6ï‹kôp#4@µ7‚7ßáæ5çV0"í `ÜpÙeÀžE_¦ÊبÜ#î/½º³õ'3´oŠÎߨüµ·Pª§Ïñ?ÃFÿiÖšèêÓì 7‡iÌü?mÿˆX꺄=©ÝZ¸ù+Â=áns0(Ü|D¸—à¦î67S…{ ján3€Äé×!ÜìÿF¸¯>Í®pSqÚül´ §Ë$£¥àdg²-Æe{ýÑn30(ÚbX´—`¦–ì63%{ úµ`·éE‚ý•Xmö_쫳#×0o_'GίïÁ^÷aaD@AUñ-ÂóhàOÝ>® endstream endobj 2162 0 obj << /Length 3335 /Filter /FlateDecode >> stream xÚí[Y“ä4~ï_av_ªc)uËKð»ËÓ¼Àð`ªÜ]Ž®²klMóë7S’ÏR]=5ìÄÄ´’•RfêËKzÑèþ¿ŽŠ(†2ÑDÆÚèÈIb¡Œˆª,º¾»‰¡a½î®Ÿßݼú‚ʈÆ$‰ÝÝGšEšÇDÂGwËè§ÙÝ*¯oçB±Y{mVÞÐYS¥E}_V›´ÉËÂý÷UþÛíÏw_¿úBðaÇTS"º¶ßo\›1qªˆ¡m‹t»]çÙÒ-Ý5ûõ–™YV=»G÷´hÊÊ“d£î¨!*Ñm‡_I b¤j›äÅhŽlV7ÕnÑìª[:óoîÓ–\4çŒcT4§œH‘¸>Ê]³Ý5Ð8Nfoc*ÖYíg†„eB˜éØñæ‹Ïþñý—ß’o¸ Ri"¤é8S,C=2Fb®†=~óÙëƒ=2’$IÛ˜¸á~å‡mE›\@Ì0÷²Êðvé^[.A3Ç%¸ÙÕ»tín«Eò4_”ëÝÆ·«³¦É‹Ç3F)ÑzÂ3œÑœ«¤:×ñl™W Ûõ³ÿ©ËX8Q3i’èØ6I@©LÄI"=µ8È"@ççƒfŸÕ˜ªÅD‹§C‚ òãZlj÷Q¹q¾åÆ Ã“öÊmŸ­²}©xØW#ïº* `W€ ‚¬ãÒÓ*+ɧ*ñZéØg+R¼)wøÞ*2>zE&^†ÆIÇ"|“á—œÏÒu]†ÔSPÂz¶¬6éo¿V¡¡r=ÔÌCºQÖ6ª²ån‘­B½‰˜à]§çÐäQ’FÕCän¾ (((Ê-‘’áWs ßI-qªDí¾–„ÒÄ‹`Ô\€ÙùõqmW±z?@—à73ª/ôâ¡Ê—W„`ð­µÔûLÏ@àwëº>À1ê8{1 ü×â*ž»H(xåf:ô çþBºaÏ}D¸‡àQÌ îÒ]Üõ. ÁŠu-æC€¼á{wuI¸©·y1‡?•M5à‹&müo6#×ÎÅÇ ÃÚÂðÜûê@2acgýB_…q-Bw&D_e-Dð'Fÿñ}¹4GðƒŸs-ߣ…Õî0º_U>*M«¼Îœssi¹q¸þZïÇ.½Ú½‡pv·±);îCd¸þb= ïáRÆ–]\ŒIc»")7$1Ü‚5kãð»Z¬fƒ4À9 µ$<ÖP¹Î .»z’(s¸Í>wŠÂ,A˜èsJᮨêV†•4 Œé2…2à„b@ »0WU ðH@ z FùAþdâf“t'ŒQvêø—@/sE8ÌÙÆ’#|ƒÑÄ kÈ8v}ÆØ0êÆ[@ÍáÔâQ"7÷m†³cÄôiõ~À#pP6> FŒxø·@ŠH£&Öm2ÔAŸz€ÉòVX` €L}1¤gÙHÖÜ®š®MZ7Œp9Θïs-­4]5`ßÏÐ?s¦þýõ¸þñ?Õïñ A¬ñÿ¡ʱÇ!©À–¡Ô5û(ˆ“±µÅó!¦-2Ø“ ‹–»U†–% Œœ¿YfMVmò >ïj[ ±mÜ¥Îe±ÿTâg¹-v¢ j›l·U™ºñÇ`ÛbîJYøÛCî\Z÷äŒ*Þ¡‰t¿IЬÉkWDõmè .³¢ÎìêÙ™QgNù¾9®‹D‘œ¾9¸íŠ{vmòñlDÆâˆ¿îìè|ÐìR¸èa¿|RÅê=­M@çA´ Ã|½…ü-L)xÑ·:6~r"j<˜Äõ¡>™ÀÛÉÊb¼b¡öÕ¸ôKÅ•Qï7úk© ‚éoŸÃ5Äg²öbÁÁÁ=ÈZ>Œ\²VžÃZùeíïaÖj> oÍÁyÝÇ"(€ fõu„3O«¬ æf!¬•½-âÄqCµˆ}«Cä âï×çyÔ‚jmlnlЪ¯/ðÃõ…¥Ž¶pH°òpß×1ÁlmŽ#«r—s^æ ÜË!äéz¼½z Âð®ÞVë âI»…âÒLKPÍÌ~*ŽNÅ=m×es4N(ÑJ¾8Ç %FwTKWŒwS‹~ìÁbÈ ‹!cÂè$ì6ø×ÇßvçHì<¸ÞWÙ»]V,ž_eEV=<»·ãâGí^º¢9¦ß\mïÿùíß_Ûïv>ôXÚZ~¾ð©„08ú%€OW჈9îÊ3ÂO%{Ȫ@bMPqÅu¨+ð†À½Q÷Yµpèr²ûŠ+11ž\Gq5µ ˜6ÿx¤ˆ÷Bºa½ÒÅÍEEvMÅûòL2û«óß3w·«3ÿîÞ*3ÜtJS¥~?þº+è˜×]—HÖ;é»>>¯òõºÜµÂßK7·‹àLíÁ«g-‚«PoÁ:=º.&»¿„Õ£k²™À@׃WQŸBï/‚!áµßý·yõÆ“›•SJ´èÝ&ÉAÆÀùU¹m±W´ÛP+ÞæÑéÝp"géÝ5ˆëÜN3&~$õ~1Í‘·_c¹êÅÞS§ ‡ç+,¨OÒÆ§ÔõetÃú:¤ð%@ Ÿòbévû B[1èÐÑ9¨ þ—^iO: ט ê¬Ô|<™¶ÇÔâ¼Ö^…¾€P¢½ýA 'r}"p/Rèýæ+”°äG%M¯¤].ŒñzÆZ0¨Á{UÒ<ê¡Ç+¶ÏZ ßÚ½Õ-"£r{=ǵ“·ñ¦vŽG[ƒ›¤øÄì1Çm¢ËðŽtÄ?aáKïƒ>„#f™ÈýÜô~Ò¢“ÁGøU‘I¼œ‡%ÉÍ(|TËÀ&Ê`¿¼+GS¶/nÆAÌ€=Ô$D${ø+ ûV^LfŽŠ¬ëLãዞìdümÌé= }=H‘OòìÐ3XÊV8<”×D e7<ûýè œ]e­…Ï“þã‚¢0 O>$žæ}xô’†âpôñäF޳’a ku(§ÃÎÑPö c«Qc o‡p·“ÂÐtܱ9‡ì2>ž•”[†3˜JO7@î%Æzbá" 1%c·¸ =®¡ˆXº„Þ,Òõb·N{X žñÅ ¼ÇØ®ª÷ꆕÓÖ>ÒÂßüa"9¹B¡–`=é)aèäChµ›u8ïÖ\õéø?vµÙq=åÍjÂÉѼÈÒö´G<˜D­›¬YùÔ¡?øcOQ,Oá£Í&íh¡VýQ Âf–ìϸíµö?=­J»u>÷¡6¼ÄÃdøfXiÃ÷^KB{´"LëÁÁÇ CÑ„ôÞÈí\J… Zôg™B^ˆ&´_…:†¦[ªóeæÔ5+–™Ï+8~¢Ñ“³«¼nJ°äÀÁ”ÛÅW'`â Ë€nþfOÛÁ5],\ò®[K¸{ _øsa£®T›6±Í6 `€f|öÕý¤]w îÛÅÕQ‹2¯Ÿ±8iÏAî.õʪ´ ¬‘'…Å)„ÞÖ«r·^º®»½B,Á| pÆíyW’µçbBé냡~iΓÉÞ1]f¶ÿl‰irNgŸ­A+‹´ñÅÚõó­á3[Êõ‡áp„–ƒè˵ÛÁñ f”ôìË-"ú›~”Ì&G¡-òtmO5Â;;Óß©qqÄj¶ÛºŸmtŸºË0I÷%æŽØá…Ç»¥2Hrœ:/L’þ0’pW¯\ø"œs†ÊûöŒ,£>Az·XduÝUÈÑÅåÁ]øé@ÿÓ‡îÖ¡­fƒÔˆèZô…òVHAˆßiúP¤­WDs…>îAÜm7]rsà3ðzÿ t`++ endstream endobj 2166 0 obj << /Length 2918 /Filter /FlateDecode >> stream xÚ­ÙrÜÆñ_§Ôn•͉Ã~’J)—ËSvlåÜî"ÂkË#_Ÿîé€MËz wfИ¾Oˆ@2hvðƒ‹÷oÏ~‡Ÿü½ *h³$²"I“ 56&NMиà:øéLøÞÛ3ñè’×—g/ßHeÖªàò:HThYxýrü¶²‘TzýŸËï^¾‰'€ÆD"µp“»m¯ó ‚ Ø..Ï~?“Œ oU*ÒF›ÃÙoÿÁο D¤³4¸õP‡Àh¿eðáì§É»‘̲ Î<[O½/•Dè â. ¤ˆ2‘IÏ]é$©¢8žS>¡XJÉô‹ÑJ;F+eéxŠ×U®ÙݯCcå궨¶õZ¥«[Ü‹UWÓùÕ:„CG‡§Öm|ï*Zmòrs*ó®¨v´uU[tx_]7ÈÐCÖd„üï*×›u¨µ^µ]sÚt§ÆáÖ¬@]Ý´e¢3“|™!¢X™‰L——… þÉÇøõÞ¯ƒ Ø*=Á¸ÉÖ™ÀFʨÞÔ? Á@Ó ÓÈ<øƒd†e‰ 3ðÀb=ÄŒMO±%ZáìÛ%|&JÁ¸¿ßü¢oŒoYüVè(…›ÿ¼ø' Îòä¹`Aux xr–2¹?V%[{·¯[GËvÂ>ï\ÛûX·§•+và?à"7kkWyyƒUSÑŸâEÅZ®¼&ä£\–섵¿­kŠ«S籫Áƒ»=“3sLõ´c¶àÒu¤1«Ž3/Ûš &†¥IÖÛÂþßÝ4KšÖƒ½äÕvé&%#%K¿›º¥{TÅ:îÁ"Žûóì2O-¡JT‹ Ðè‡cþ8ÁÜmºû£{2ÃÄÊFZe_œal–FB˯’abPIlì#Úg9ŒXÆ_Šx–c€{‘é)æ‚,ÓíÄóPgØáG!MåîÉ@äo›GÈ8ÉŠêk‚qw|¸Ï« 7uÓ¸ÒÛ'=½>U›pÉ–$/)Å ?  _õ÷ãÆg´…,“FÒš¯##L¤á’ÏI#¾þL¶±1\£¾±Ž :›Òá‘/e€,г¤·üÏÿÁáÅÒ62 ÄçßñtÌÿóB˜¸&V§)øÞ_Šù6…àp]úϺ9ä%Æ}-ãU]Ñ*!{Æ#4ó¦íè"}ì#=m1´# •TþµšNØ=\„}^£™ æ‚{x~¤" ƒµÎV—{†¯’†@gØ9§Üô±à?LxÏuÝǸ»Î5ƒS•ÅU“7…k9QœŸÀ5ɶ½8à…âp,ÝûëòÆ}³TæXo 4¤‘M²y±3µ.,v몖¬ JÞT wPT†ã@|Cð¨]q(<£¸Eékr¾YS዇$àºc. dÏÑ}.~ù%üñâ7^8LW5€¯¤¼«qäZw_{ U[’ÅCÂ0nØ1…m¯ÈHYcC½§útÀÿ\Ï7KU:†ä˜>)ÓPÅTzyÂ9Š ã"‹Á#ß4ZcñÖ#W£ 5þ‰…ù@ç¨øÕSE&‘Œ‡pt±PhBl°P±J_pÊ[20ÈîI¬‚ÜG¡ä¢õÈÈJû(8 ö0'ªS,‚ïÿŽL½zA ½C¥¸fënÃ_O Œæå¹ãüÖ”î>|Un]ó‚K1-ƒŒ3£·¿÷.‹Õû57¼{ÍLªñËq:®¡úæyž¬ø=¦× “’vP2Kåˆm,š…ž²­{¶?,òM± *Õðçu Õcµc¤Ï€ü+ý»Æ~VñLR+cÆÈÔTI2“€YTü/a^÷9ÍÇcã{ë»âà€¾‹è÷<"¸àŸ“º&Ô«OHcA ýy`1•σNíXvdZ@Œ†¢x"»l7h5¨×yÓíømQ-²(-¬Õ`‘^86³z¾È£7‚ü¢¦ãH%z®èXec“±žA&ГOBœ`ÇX|ûvdä);÷k4ò†¸OÞò˦úŸköõõ2«©r?ùCÛþÞïºnQ¹©†2npò$ùÊ'ÚÍâë)”DsíB|œóþÞÝ\˜Õ»×|ü+†üðßëóˆc·Ì>ø‘JÓ¯É~*žãÒLL¸OÇ."“̹W5ÿú¢­ËÌ=ð¹÷É·/‚ÞÆ®¾÷ÔûC)Äcb#â”4Ì*O¨!|$=…ç5àfÍàµ?ãÙ¹ åúSž?À ÀE:.HUárš©*ƒªT¥HU¸[ŒÂIéy°òäYiˆbL Ý}ÏD¡­”ñC¡b›n¤e:KN3Ÿµfõª9\ÄÕáy×µ­O–TñêaI^xÒ‹*Â6Ûë|ÉÀ 6Ÿ¼ºŒ5g’ZßÓM½UЉ߂?yF!whÿæŽDm[\•ÓA"ÉÝ<µv5•ù£Á‘mI^Êæt\?|Þ Å=½Cz4>‹ûA^\1˜,PY{r6y×cêI¹®Ërø˜„oì5ö}¤nºÕ«2Žr_áFŒ,£ö´â¯7,Ð;o‰Ô‹ë”Ö{‡õõÆçað‘Ÿñ~÷z&¾q›£óùù|M¨±Fw›Âó2ÁóÀ :Û<{ï›qߣ×UÛwå^¾ä§ØÕoÑV¶ýDò›É4ùQ¯ Q*6ØpB‰;t«2™½4Ë ôÅ…cãˆÞß”™Š2ñ2³´lB™‘M(‚8H]þ}—ãWº–Þî Š±´õnd Fò†ìžo̾¾‚²Éµ‹£7Lê¦'×q^ix|]l=¨ö˽k ¨6åiÛCƒßì*Ç]ãô®#·Ü“o Ì$®i1p ˆÐìS®ìßÚÖaI >¶/–Íáp< s®]Ý[üÔÁÚÙŒgòpš}ÚèI YßÅH~àÐv*Q±^ ûWÂnN<'Ó>Üâï±Ì7nê£ ‚ƒw-vë+™·•O„˜µŸ ù¶nƒÕ: nwe}Õ{5} kŠ"^ï×ÿZNCNvwEË©d{ 0ÅÜùäÍc*BË/Uî–žöةźeÀþ|EØ/RÄ«ªËÆÉ$áÄ)©„YœŽ’ l0+w~ïüÛG`?‰ 7>áãùuãú¸_NŸ^|RÑIŒöذýõ¡§©<*z§®úéN´¿.1X@,(²s\PT  PcḄ¼ëG¤°öF¿.ß é|ZÃv5ý^;f÷>‰À ZA;WM¾éü§'|vjÉÈü ŽàþFû ø’yñ\3-h*ýgWúšsâ/¦c}C«¯ýôÄ ýjÊI6ÿŠøWò—B endstream endobj 2170 0 obj << /Length 2375 /Filter /FlateDecode >> stream xÚ½YYsä¶~ׯ`ùÅ”KCó¯­äa“Òn”remiì$åøKB”y̤µÊ¯O ‡œåöÆ.•Š@£4úü€yãEÞü¿ô:/„¿´Ìƒ4Ì‹Ü+D„"+„g”wï}wcè½|çû—ýÅ×/„ð¢0(Ã2òö÷^QI&¼< ƒØ×ÞþÂ(¿üiÿ÷yÞ×/¢t9‰›0Dì׿\Æ…¯ÌÓå.ÉCÿ~ìªA÷ô²Òï SíøÚ\F~?ºSWH+ý®gžVƒºÜE¾áþ¡ÇÝÄV6 M(|{èǦfúëËîÊ3tÇD=X·-­à¨pÑ8ÎN¶ªÆÃ"Šå™Bo%A*J>”aIƒû2dîµ²8(ËY(^ùeÔÖÚI”Q4q»¥·– A:/«ñ0QáÅ…j¡Gª…/ªÖ-I}ÿ= ›ûýý¦ÁÓ KÅlÇöØèJÃaÒ$ï·mŸ—A/MË·²«åÐCl£æiæßªVµ¨†YeúÏÎ3¿Vèù“U·!j‡ÁiÛnPݰ%]RQ<NÍ{’•žØ—’\q˜¬íq”Ö¢o$Inó0¶hXÆþþ6ú¦'ýT²ož‚š‰2ÈטˆjŒ¤CXî“fG;poÎ2Ø©Õr <R1ñ«Þj7 µƒ_rVlÌáIÔž¿G£8qNžç`oÕ¢±7»QA`}ù@Á-RöAÔ+î—@TÉqè!—êjR÷édØŸ³'°â¹(±ÓèV“‘P¼Óì|žÍ›$œyžÕÿýU¡–~vy¥)ç”…«0â, B¿EéÉØ;• èÔΈì |:< <êáÀ«rÎÒ·¦Ô[·E?šJ1CÅkÔgKî¶l7ï#ØiîÛ';¨L™FÂß(Cƒyg#A[wU3ÒÀ/çq30åŽSHP^ò£JMå^„aÁ›?ß,4Aæ`–۞ς0Cr2‰~=“#oAþKS+[qáŽ|}<Žœ%u@Ò7½å¶–sEœBÝ)«Éù¤:`¡V¨á@Aâ×–)šÔGŽÐ7¿P!©.%×oFÒªã|<€ûÛ»"Ó†‚ý('G¢!Ø.¥¦cPëZ5•5dœÍâVàØN#Ý‚rÃäCŸ 0(®÷o."Bu‘‰0S/ "ñªöâÇŸB¯†1ð« ) ï‘8[/ ËC«ñî.¾sànµexB@ĵ2áÐ]´åiÇù ÎlˆŸN,7 Ì™ð%òEÿéË2ÈË3éã÷I_,ÁXéx¨ÈC.̼e‰ù¢Çô‘ûä¥aè+9¹ R;õÈ£Vì'nü.ŸÈ†¿­#k¬¹:C¬0 â4^[ò'!’“?aGwµvÅ…»ü}OñŽ(¹Ñl¸Ûënîn^ýƒÆßnîö¯nÿ½¥0°’ÈÒiÀ­·¡ºî¶£ÆaŠY/ƒ‘H.ü»‰FÜñišKšêpµÈŠ³ó¿“§Ìöº§ŒZ R7R¸îìhL’ò¢ò19Ærd‚«Vˆ`lň™Ò4~æJ„GS$XhL«;9, /iú#[Ç~P·ô„6Š  JÓO0ŠÁ[Ž#Ê¡ã@y‘5Óɬ@¬zV6§ÓQwL粇œÊ€§ýhyÀ(;6ˆÕv`AÿÎíV9o‚¥WfÓåÄn ;û{ûÂ|2¦ ÒJƒHM³›€kÍôP °’s`ƒ}NÆ)Éõž˜Û¨a4Ž[VÕhXÝåò4eû7 ,ðßaK\°žÕµƒWl\<“ k45-Ìm©uþÜ*k¾Mãàr>ªûý=ýV9ï5ÃB<ñŽF³¨bF á˜àDóZˆ À«U( Ç.AêÙJÔÅAWY 3£;6Éýàœ" ¿ºú >Ñ–Ñ<_âç‹k<¶ DÅN}æ®ap­4Bí?ý™¿!ÇW7Nø’6\LÂ%µýd1x*©ö¤ì¼‡8ÛCÛ¬ú^ØòÁ=( I¥;Ðp*ŠßäAÿÄGÉúfë|xÅè4Þð(§šÕ}Õò˜ÄaïŒÒ+~Ÿßýõ†*â ÷áþ+¹5‡œÈ–x>CÝÒ’›ؤŸtzÖØ®¡E3zx ÝhóÉqNO>v• •ùHèfËËì³îAÏþj¼vP†U=vµœ/@"(BCG†’ŸÕhFx.Ï0¹Cñ¥ô©¨ÄýÌ3én _«7ô=Ïå«,®=_e¡óDÜa¨-Ù`À=q®Åv°W[þêlÖs™œŠÒ"¿£ èñ®óœî¶%¾”aÊxàåtø`„¯sÑ‚\úÎEËÅ e¹¼r"Kß©õb|7*W×­§$hGùü–4§²MrgX‡U;)ýX£)£Lzçk²(È£³‡¿Nâ-[d9B9 Ñr ÍòåC`V¸jŒäI]ء҆ٞÈ;C˜Uƒ‘ˆ°…ùÍ-YL%ã®R”í€2n=ÕbsŽo”më,/•üÞõÖJÆ\ü1·"HÁ‚Ÿã—7Ù¹{ÍÆ÷OË„Y±ÅR±Ð!Ì߯½§Sò­¤uÃl&h¤»]çÓL¦ÐPoÕYw—y×5!«‰lö7Ýmé N-Ê¥S–p;£8à zÂ`ΟÁ-¡2E"ZÛwuâ¾dMàlp:¸³Øœõý~óxÙ:æ>è qQ÷g§(! ÷(­“DHêè<]0—Nˆ`4^sÐþäVbòQ¸²ükœæçà³­Õ½dŒ¦ÓKOæW’¦yb*Eœ{DéÁFæQ[þ!#óoŸðþ9ˆËÓ—¯2]?¼óÀ“ºÜ‚¼P, °Ðö,&‹  ÜBwÛxJv•:»^H‚8‡ûl‰ ‹˜U„+¦ëýÅÿ!'½ endstream endobj 2174 0 obj << /Length 672 /Filter /FlateDecode >> stream xÚmTßo›0~ï_á·4\p€Ç¶Z£MU×NÙô퀓X¢¦3Ъÿýî|&¡UE¾ßþ¾»Ãÿ˜d{ø¯™e~ª*¸EY°2W\ä«2gN³{¼(Øúx^o..osɤä•R)ÛìX‘²"\AÒ¦e¿£—q"eª¢;Óh;»ÿn¾]ÞJÅ¤à•¨$¦ –¤U…¬ý4«‡8ÉT½L§et µ‚Qoc (fq5zU44…=ÕÆ’ô\»‘¤~Gç1¨éã*·A­]œîtíËë–,“mµû½¾ÿmµ«;d†TdÆU^•‡iÛü$ËKl/iM†?B‰õÃ’£¥‚­«Ý¹Ý© à"phöà4–jÉ2ƒƒ(¶N!Ñéat¦Í vQ“‘°#(¨Ü¾"ô31ˆLTÒ0MM Ò¸[òѵNæ@1% ¤.) À"¨†å; &?68,/óNÓÚäårmà&^¤€öho¾?üúz¿>·`¹à¢šã8Õ½òW¿$¾IVJ^Êìý¡[FØVY4öáD‚šäå.ú„ŧa$më}ÁzÑ’V‡⻂æLã¡wÃ'2·fhœ>]=ÏDm ǽËÎ"˜•éݹ}Ä9ÿ\Ñ•¿‡7àäȈŸž¾ Z¨ÿa}ˆyö­tfˆSp pŪRÑ : 豌Ž>J©mK‚_¼ßG‹±»Þ=Õžò‹ÆfbÑXPŒmº©õ­!ÔšSìÞXk> stream xÚÍWÛnÛ8}÷WèQÆJ,)‰ºä-›:Ù´hšÆÎ‹¶ªLÛDdÊÑ%—~ýΈ”,'Jèb$¼h8çÌp83¹µ˜µ†ß3KY~xN£8²â€„q`•ÂZYŸ&©uÖ.&oNf±€øAèY‹•yVäSÂáÐbi}¶£©Ë˜Çí«¢©¥oN§I`7*«e¡¦®qû²,òb݈júuñN«c$á¼UG-× HÄ2ÂŒº4ÏÓºØVZÅÊé¼hÊLèõ©ÌÅÑÔå”ö‚d•PcX2Jš0â{„ó‹ÅìêtûöñÔ‹í“Ùžyf;0‡J8‰¼Ø‚"jMUó­Ôf—!é–CH‡ÇÝáyÃäz>›ÿ2xSÔm±Ü¦R>úv6?¹:¿\œ¼8ÒgàË¡³¼ˆÐ$Ñâó"¿C7‰ö*|»Þ=y_l”;ߤ[÷­,ÓLoŠÛ&­å”Ù…2ò«¢4Ÿ@ôlô ýdâîãnê"ˆÞ’ªÃMf¯*r¹4g•™|¡,PËjDXä+Ck˜Ox`¬É€—¬j¡´žº ì2]Ê4ǹoßã~ŠÀèÈ«FV0ŽÙm@3»Â¹Òµ…\£¦„y·1Þ~ÁhjZ®…ÆX À­%:aZ p¢Í.:BÀ£"S7äÜ^l„‘OÉl̘R?Hì,UzWdfßz¯Âfi =J%RV¢?hT•U>ÁE¶ù¼sÿPÜPlç­ënŽÀÍ#ÜG Ç«‹ŒQ<à»éΈZ¶FÀVkD„·Èl“±½Ee „E¨ÜZEx2z †–¾m½4u¡CÔ”æx¥xE sh›y`õ&­dÙ²,Ee˜CFÔ é„v±Â‘kÜèc¨ÿ®ÓåA`Ü#±ïb õÕ;1öŠ}ÈØaÐÉ:âÁÄ¥Z ¸# ùªÍÓˆ¸2Yï½e†>yÔÞ3¤|=HýpŠAE0æ¹=Ú.‹!'áᅃ׋1‹‡|1êûö_çóÅÇ«^WXŒ_*ËI) Ê—ººÌÅ®Ûo¢ÔKROϰ&¿{ÿ¶«¹Oø‡b)W²ÓÒ¾)œœ;zö®éÊ&èŒFuNf‹É턵] ÃÎR) Ïʶ“Ï_©µ„}&~[÷­Ôî}[óɧ}û²ï7@ 4„Æ]Ãáu ‡)H?n6@èÑh¤ ™ËÙÕªÉrç»rTU;ÊɧÈ2GçÖPàU:¥#îÒÜ—áÜÁê~µ·â?lUÑÿsÔó‹ËëÅ›× °øÄöåïñÕñ‡øvþë1žƒÆàN4µj'º`ÅÔŒc.×›ZO±–tŽÇJ‡óòKµ[©x7ùKïA_“7¤.A €ÁlËNPZ4F¿4cª‡ä6Cl—–µÉÐnËìe*ß1á‡{-Tjhfº–Wš1wèGÕì“EçH]5…Ùƒ¢+ž$ƒƉµ(ŸBš˜ÀªÎx·+e&w ýTu³}™ t¡›©p)˜…ð/Yrx5ÿà7¯¿Ùëïxt´þÐÊ9È<‡ñÍ.UÙã«Ñ Ñu!÷34Óÿ ô8#ýMy½ès«ü1Þ`=aÏ«šÙé{(Så¨1Þuy/+ñš@ïßVùô>ç6»Šj3HÕ°Éò° a1Ã92Jâ®Á¼ƒ3P–ÿ¥3þ endstream endobj 2183 0 obj << /Length 1708 /Filter /FlateDecode >> stream xÚÍXmoÛ6þž_¡2±|%ªÃtm’¥ÅÚ5ö m?(2mk³$W/q³_¿ã‹dË¡†!HLS'ò¹»çž#óÅ#Þ~¯¼ÒÃðÓq‹Ø!G8ŒDèÕÒ[xÎ0bïjøüqvöü2Á(Á ñf b±È‹Fޜͽ~= áØ1 8å~ÎótmÆ…lVfô sœ—çµL×jXÖð—¨ßÉçÙØ. ñ01+Ê;µá1ï•ùR–0ÛIó}›·«ªk펲iƒ"mk[ÊzyoÆ‹ª¶“if‘4mÚÊ(Xe‡ªiƒU¯ªI@!=ªl•ÖK»Ö\–MÞÞYøQwï#èàl#׋ «MÞ´²´^n*5Bûm[ÔÛÅz‘þч&-çv./û¹¬*6U ûÙ˜V‹‡ÉݦwrÑ•Y›Ô'­ qx¸ÁÅ ¬‡NœÓóƒ,<¿Œé>Ä (EœØ…^_L_Ý\ÿ2»~ÿî…y žì½á 1‰ Ç´ZßM¨ð%à)óÛ•Tê¿Îë4 ÞV«2˜®ÒÂ<•_ºT99!¾µ×~*û´4i[f¦kòry°ªüšMhì¯Òr)!±u-×fAýTÅ0p%M™@°µ;ã:„ò‹{m÷5kï7Òå6‹QŒYo§ÍpÓvµÊ™ú¢QªÁ@;Í:¸µæ6éj¼UaKÕÀçJ¨)Tó˜µÖ Ö‡Èiâgê¡­†cÞ¨ðš0‘@ (ã`@qå*]Œ1ë ý :ö«. l5 ýHZ^÷/á áÊ„2Ë5òVÖ‹4³/Ô@ϼ”Î$„ JÂ]òEæÊZ2­rRšÅñ8’rPg««7¿]OÐÛO×ÓÙû›ß5»Hõ!4»§)‘È,÷ Ь•¶Ô§rÓÊâVÚr¥Ó¬¼yûú˜Ž\æ_û%”¡^,Ê;\YfV 7uu»–Źùö>k«ýØI;½œÏ‡ºÍ¦ªÛ‰¹ºzig,!ùvÇ7])‡í"çvg³³/gD÷DâA:B1ƒèeÅÙÇÏØ›Ã<`B,ÞV[^ÈTÉ­½éÙÛ‰GJ8§*èjž [bž¢¶Ý@IYYl€L«®Ö ƒï—ùZ*Qm¶vh‘àcêQbt¥ëw³‹›Ë‰`þKEÝW§ñƒ£˜Æcz4ÝmÏuÓ,f!Â#º:^ÿuz1ýö½­zwÝ´¨æE UèàÃÈf“;ËÈëÔÆ ŒùÏéŸ}_`„F}„þRV…lë{3Ymڼț^7`Æ&÷ʯtFšæPr™±:Ëü¬Ù1Jc_‚æ‘gf¬^~¥Ô®*{Y¦ˆOü¹î.z½ÊÙ3ô.¦N2;Ô0MSÖmÈ|S»j±$þõÂêÛ(œ2Ò+Wml(÷b”ÄØæ’D±Ç lüŠÄ”XËÿp ‡3ïbnS•7ØàÂ(4Ä×5¡p$=ÒKÒ‰„ý¤Ñ£H÷‚‚é ü¼Ìv±·~°ÑV\ 8qÂ™Š†®S-LÇ„ã¢p"Ø?\5&~2S}Ó±‹ hÃ!"wí–ðññAµßE«ä\7Ö¼°r'ã]’%,é×(\»$ÐûŸÏ‡Ž]š…mïf~)·fpÈ Õ¹cœ¥ë¬[›>§æoU™Ý»($(„£¼QDéã¼®;b伳Ϯ0 åq,øá£l£,€l´'Û÷ÎÚ$Z=Ÿ,MÀùÂSeòá1 ó(ôC‹á™“¬zØcø„Yè€! ç™0‚(T¿ KxX|XµÙ õ;QìŠI¤U?  ä)!ø—ãBÇå†ÐÅ)qŒSŸ0ÆÞËb8Z:iÃqìäÝA ‚KáˆE»8WÞápÎØ(Îß¹¢ÐëÃ+Úr»’µtŠAL°“ȤDÝlÖp‹(l§×é´4&ûR|œ2\w÷/Èô˜XŒ¼6Ð ö?ä-?ð޹õÒRì‡c=|§—xÈcéä"ƒÛ5?‹ìø¨®þP࢒•$Ü㣾‰fp]käüÜôµ °ÖÛ¼±­P(öÚÞ\ZstäÎð_Ý+G7/vÚÍ‹ÐE@Ùo^£O^µ©þS ì¹²‘g°ùß=- endstream endobj 2188 0 obj << /Length 1308 /Filter /FlateDecode >> stream xÚµWßoÛ6~÷_¡·I@Äð§HeØC–Ú[,ImgÀÐt˜lËŽ[Ne9M^ö·ïN¤l)QPwkQ¤¢¨ãÇ»ïŽÏŸ=æ-áï­—{þ©XEµÑž‘ŠPé©·ð>ô(Rïíþùë¤w:ÌcŒÄJqo²ð4÷´ DÁ¢ÉÜûèk"ƒ1®üä1ɗŦ B¡•KovÅ,µïƒl•ž¡¢toH13|š¼;0£$¦1Ãm¨ N”Œí.ÃËI4ŒðÏnü‹þ.zá/8kš(Šh®½‹,Òv7-6»2ËÁ/Õðý}8)ïNìØ9Ñ&\Ø7¼¼¾™œ^ÝLà‘*ã_Zûç£óßûàóø8G¹!‘ˆ²²ÈÀ«æÎjG³­=¤³rSØ1ºå'Eš¬j¯‘;&Ü•wf5˜”Ù&w°ùr•U¥m;±ÖIYd0à¹F£âD èkù[ 8nßôÇ£áõdxuyf7í"ášÐØ8ó´L‹5dx,†À±ö˜ñ…],es±Á°¢ZzK)ïÚa¥›ÚJXÜCÐ^_6 ;—tnïˆÒOgÙ-e2[›)Öó“'ÎSºÄàü}’öËb³Zm®ý/Y¾¬Æ’0nlšTq\(„ÿw‘-ïpƒ2¼KrÜQH¿Ø­ÒŸHJ)ýImi« ??•“U…á—V8'üx¥Uߦ´.€A–ÏN×" uå<°³­ˆpÂEúy%H.ü†‘á3±@‡qrž¢ZæxòðuŠâ÷äì‰Ó.XÚÐ.¤]èˆÄ ä›0<>èù_NšÚ”PiüoöðÊe@#^Wr¥§Ö ̽…mM2¬û[Ê;oE$ßK^[%\Y^«`ãR·ýíVVÁ…¿Ì,Î$}¼_e³¬\=Y3wãt8ÌxD¤áë˜Pá¨YK}‰5µw'‘ñäAl]¥qÕ0’„‹}D¿t ´ :I‘Dƒac#,«*·2+ªÌ²ã2ËZ™m Zç<ùŠ4Ò¯& †\‹CãPU¸6u„Ï5Dú‡a4ÐQ\[Ì6ÛN G¹¦]Eí†Ç.T( 1pÕ>»g$œúúžQ•|¶nš¶[{,e墙¤v#µ¢%†aľ™¢QTÃ:Ô¬‹ A´ŠÜ~s®Yg²ŸùËy£ïc]®*²7ù'«Aˆ.‡#btÜ.,žm–wÁ‚äJ#¿šGDü=ò¸ÇêÊã³C©fϺoøõH#âFâ(þñ½Öùn¹Û–u§Eõq3¤×ü¿V ®ð3ª[­ÈµZSþmY|µÓrvGüÌU?úWnírîʼn§’  {*fœKR¶ÖÍÿeí endstream endobj 2192 0 obj << /Length 2165 /Filter /FlateDecode >> stream xÚµXYsÛ8~÷¯à¾Q[B$Ho탓ØYgvœŒ¥LÕÎñ@‹Í2E:<¬M~ýt Eʰ§2q¥>¾>ÐÍÏõ®áÿ;¯ôø IÂ@ÆÒ‹EHÅ«•·ñ~9 €0ðÞ Ï׫£WgQàÑ€$AB½ÕƓ̓< !ZeÞïþ§åéòxöçêýƒÃ¯ÎD<>ɤ·`Œˆˆ™Ã]£f‹…þ¶Ê¶i^"ŸWg btlá8÷ötùæòüãêüÃű9CÃñ™È% ’Ĭ«Ù‚Å~Ö­U«$ðS|Pÿ*-3³jÚº[·]­ì~Q•×f§½Qfq7£~ÚÞ˜ ¬~ÖjßiþÒ_Ï@QÍ]º¶w7ùzòíÑuU–jÝ6={`k ï‘JÕmnõÔbÀ>4ˆr kV‰‡‘ŸÖu:É_ SÀ…$1—pVŸ¹¿/îhæB‹ Â#ÞÓðþªa ÂÕ"J?oÌëêª×)K´©«­Ù”lXœ-îga çi›W%¢„{*¿V%Zmv‹ Gƒ1#lj´ÖC±,éïê¼má´~ÙVö‰RqñG@E¡\¸P&H²7øõÉÅ[òáÓÊM…=å.GïO¤œÍbÛææ§*U}ýŬÕŽU“þWUW€nÅþùÆlÕês—×*›ÃOf±ÖæSÆâ)ƒ Rt.îŠ @x0 *óÒÐ8»"à:B@§ðéêèóÕU‚zLD„‰Ð‹hL(åÞz{ôûŸ—Á&$áIìí4éÖãDðV…·<úÅT©@&Å xI’P[:–MãAu é‘*a un"õ$…ú;"qB{\6Umn!¨Ý–$ŒÈØÅ”Å„…CVó¹Ó5 ʇÛG!#Á£MãbL)¡èiæXJ[l$H< `i)4”y¹.º cGö¡,›èøÊ«´N×­ª³k°€M•îÙƒÎ|¢P¬F…Ké˜DbëjkP¨JSZ#CcBÛ›Ô¾ÑÐï°ðj%«¢Û–V;aÏi&;Ô/­¡¬f ±é(ÁA:½Ñ %Òçøˆ°4k5  5fÃT1X4ÝÖÐTÈÞVj'ÜTòi$‘I4Žˆ‘¨È7k R}§ °rpáÿ:‹9^êÿ†¶0WÛZWUç€jܘ]]!ðÝP+µ ÊpPs ÚI1 kÃÏ/N—¥Œã $Î+ÜÒ,X¸¿Ã/O=_Â*qîÿç|¹úpù¿oë$ ¡"ÈüIKð¦V©.ØN¼ïJÛX° àfõGïz ú°ê€¾Ð‘@&OÁÙA¹¡˜ƒI2Û )I$¥Q œ Σ ûªþ aË)Æ7—F—eÕÕØ àï³¼PÇ fô¤ÌoÉ& zm…~€3èâb#éübuzy†‘q‚qùæô»;²¦»ª«®Í{ü´:-ê[6Ûyy]çÙí¼lnçùí6½›—»ùöçå¼Èæj¾™_ï5žö®6îüâã§Õ+ˆ+x`;ûgRú'—'?Ÿ‚AËïˆn8ƒ²ð<6vê^f‰é†Ïf[UíMŽmþÔNïwí]×Ú—]¹6‰Õ‡P^ÎÁ`u­êÞÒÃæÌ€dNXé·‹» N™¸m5È¿ªG8Ù?*¢¹š7>Ìòû¼ôþµ»!š®—©_htË7„MÈCÅ #BÞ!ÆáäJz¨Npl€ÄµVkAçãwÌñŽ›wCci€;À/Ú;¨ì¶WªžÆGßËáºÇ³yI ì´á4”ƒ˜1K<\ß§Å„#±b0îQïC®Ð½\º÷qÛL½¡®¡N¾ÄŒ"›bU¨4²&Ë·ªl^˜!jj1_Øccdú§+)û#6Ò'žPþé‚ÔFßæY…v0¨Ü´»>=B×S…ž.I°;0.wc¶.b×ÍùÂaú]nzŸÒ\Ü}HãÚLаØi @Ìötønɹ³i’0ïECӤܣ¤lh¶ËÌŇQÂ‚ÍÆÅ&"! GM3*WYkL ‹×u^U—Û÷_«Rؘâƒù ögª5?t'‡ ÀT—åM›–ØÉ™¢·½ˆ„–~š } ;l”ðýðCÂBhXS aYPíSS¦ó=á0z¨æ½±z„‡¦R_ùÐm#…îË»V7‘{P¶ÞèO,!…Sc #:Ìâˆö¡ìš³H˜ >À¸uÚãç2ŸŽÍ×Ù1ûÿÖžÁ¤ˆ‘/{Ê“)‡áä ‰Íg[XteÞšÕZ…YÝc]†ñjÞVp‚à˜¿ºé÷ÏLW~\]añû2ˆucÙöeáÌn?i0’—×.s9e`ðÓ^Ä/Kü¹ËªNœ> stream xÚÍWYsÛ6~ׯ`ߨ™ÁÉ#o©c§J›¤±ÔÎt’<Ð$(£æá`<ú÷]pAYJ˜ÄÓvÒŽÇæø°÷.Öìà÷yÐ~TEã$©•Q"ƒNeðfAHƒç‡ïÛÅã ¦FIJSlË æA,(Qpi[oì)–ï·/_Hq ã@‚Š !§œ"¢`Ã#ÞQE=~ ’„cº™gqvĆ-W‚‰ÐôîËÃ,Ï—+KÖK‡C•Y]à™iæTO%¡†»9‘ЍTÎh.¾¨ùˆà*ˆIS¯xœ+F"!ÈÌÉD$,8B9Ér%E®K´Ã^k4ºìí`‘.Áâ¡É­i›cˆ°iM¿GÒ^H;ÿ4ÈIàÕys’“€2A$O'ƒš~6ö#×ô×íP(êj¹ïkw)X‰$"’Æ`½ J¦Þü&ïtÖÁ‰¢°U#bDÊCÖ4wsJ0Eî!…ö\ÁgJŠðieu×dÖ|\ò$ÔÕ~™ˆðˆŒUhÁ£+£øÞ• JyïGXå™'œII¨q‘uÖ¼£Læ&«ª=îõu;BZpj–ÇIRujøp pÑhÝW†.+íUÄåÎi lpyåÎös.bJ"Šï#UÏ:)&,9¤¹K()ÃÖ¨Bæ›FÏF@’$>äA 6‚ys$%Ž:H!ñIu¯8OH a"AèåùïëÍúõ+4ô§õfûúò'îþg ê³,MÆBY±”(åÙAüÇ’W\…¯sÛ^A† N©@Êñ‹ŸŸíÃʼnžFh]ßvílj‡.K“Ýä{\¿Ìö~ñ=¿¾Êzk\¶¸­_ô•Þ z±8ß.>,ØØ‘™ëªI’ð ¯oßÓ €}Ѓˆ4 îFTHÁá[›ÅlÍ:#©RÜ·f•¦„ro8ðƒÒf ;_ Èì¬ÛiLôQ½vèr¿¾0•~jRê ¡¤Lé¤í§ÿÀ#À¦G`ýj{~yá*é©K˳ó‡EK‘˜Ç§Áꇫ)÷F¯å¨õ¨BDOrçøvŒ·Ûœoþ¶è¡÷2붨3|>M„cŒÕ½MêÞÏÎ7g—ë_·ÕOæjÄ@øiêÅœµ54Ýû¾pí«²vΠËDÍ \ôAS؆®ÉéVù&ÒSW±™o!¹Žíä›È ›]ͱÙ!À‹ÐF›ÞX„C˜É’â{•ñÓÛÎTß(âÏ*L$ðø2öÏ*L(¨°)߀ßI…é±zn܃Z;Ê>¤Üü=ÞÔî¯ýŸÔÎojûÍÂKþƒÂ«oÍ· ³®ÿ·ksÊC-pöÍXC0À „ú´:ýñݵÁ²CPÖiÜw=<ç-®òªí5"l»ÓnsO²b8㹋{ý÷¸è‡{žÑ¬à#Ie;`/P®œg½;–¹ŒyØe…1H¶%~áÌtHf} 9c)Ž›¶­ÁÄ‘îoq$‚×±÷§çœýá’ãƒÌ3{ƒDmƒÕ¸Q˜ÞfM®W¨·ŸÀƾt7K8ÉIk×yú¡+³|j¦¦Ÿ™`på’OÃJWÛBW6›kÔ8±|u¬aQDhôýÚáñò°‰æe[˜ÒèâÑìXÄØÃ:j*H ÿä<°¡~å¿JžpÐM‘ Ñ\8dÿï,š endstream endobj 2200 0 obj << /Length 1842 /Filter /FlateDecode >> stream xÚ½Y[s›8~ϯàOª+‚ÌìC7›t“Þb·;;mV2\Œößï’lpçÒíN§äÃ9Ÿ¾st.ô[@‚+øû:¨ D*‘À2‘AÂÂ3_0Æþ@ã‰pBd{¢©@S HæC§28©”±S}桲ÈÏ4é©âˆ¨L[¡-°ÉjU¼ÛûÍQÉw̽¸Ç–Ü ¡¾-‰L¸n´¸pÝñT b7¸=Ù‹®XO¾®†“€0F!œ]äåÁç¯8˜Áo´ßv’eÀ ÈS·ó`rðÁÔô¡ëœ®˜£4‘{ÂQ .ÄÓò„7¡i²Š/ )Ýœ§0II€zXB«©_Šd*‚r^º£xøƒU ¬ý7¹ŒRÄãøÊ„7— SŒQ Ç1ÒMa?®Döì|Å÷+۞ʡÙAºxRV㞬Jº2ÁÁüÁ‘p½…^yûhW¡¿•lP['«¢Í.æ¶ê_B—ë;)"ÛRæM;..|,ƈ2$‘rTA6, ŒFç<œ(eÕšI¦Ò¦Ìßv ó6$0$dÓ5 okFbÝdA×K ’±=oçÇŸN'Иšþ–pë¢*¯ç«²Šn‹ewfÆ‹Ùpê±ÃŠ›Ù¸›73Rä{§ZC€@uvÈÍô3D¾VFø¤ ¬Z<¬×ú·›Vôó¢¥O²±f@Ô™ÑPÕw—Eåa;¯a¤**8»C«[«õ€Â]ó‹óÞý8}8 ›ûg;®ÌWe v[¬­Y±l³Ê™kksUY~}—¼]Ûû‰˜-~Òôâî p°Ÿ6ŠÛݼVPqŒXœ†™N’8\ªÖ<ëðÕ =„t3|ÃâíuaÆu#«”a«+ œ(#xÑ-€Nø÷V¿¡T5°wU¬»e»jÌÃzg̯ædBA‚…ŸF ­B˜Í‹ Ž¥ÏyY£!Qùw±˜:ã0hruŒêÕMŒêûÝ¡¨zÕˆRû¹²¦É4¼¾úý*b›n@aK(tÛ%«fÎ~··we—u@éëQÖt ì9³°ú õ²vìÖ$Eª?.29¤ä¶hÁœa³%}cSºg?P¶iºéWºZàÛÕ·Û^%’L„§&vLx$]xtG@tÎÛ„—^ì|ÅÙÔ½¨é`}€~è¯ÈfÔÔ9ÌײÉ~fáN}¾µàŒG¶¶@WÇÓtHckCX¿´ÍÝVxç3½lQsíTnJ^éÜ®e> stream xÚÍX[“›6~ß_Á#žY«Ò§dãm7m“íÚíL§Í횃òn¶¿¾çHƒÍ&i§É4; qt®ß¹ ÷óîàÿw^åQø IB*céÅ"$TD±ðåÝz?ŸQ ¤Þwýï‹ÕÙ7—‚yŒ‘$ ouëÉÀ“œ’­rïw_ÌæŒ¡ŸªT™nŠl6ç2ôÿ !]Öû&Söù²(Õ³Ù<¤t@Jn „lövõê›KàÎ(IhÂPõæALBi%]½^-n.g1÷ŸÏ‚Ø¿X<Ã3':ƒÂñIHd ½9£Áéݯ›z¯‹  ÇŠ-":d0ŸàðËr±ü×â÷­“»­ómZTÈmeœ„á)‰V­žòΔ^/Ë‹›«ëÕÕ›×Ïì{TšÄ–ü¢ÞîöÀãûz£ìbHékUµusqâ×;]dii)³ºÊ÷™.î 1y´»i•ÛÅnÆü2öÌߦ–×m£ÞïU•=b  d++^ÖÍvH_¦jè‘X}Ó 9÷uúéTeo›z;:ÉI”HàbN_o[0)d>êÆþ2kŠNíI1r®§ýɣɔ;t}ØQ[e˜¤¸ÿ¥áM&#ÈdLd”@Pˆs±¿Yüzµ„Znß_-Won~û<°A¶D<Câ¢Q©V¹…Óëú^mת±O \hW&U—vm¢‡‹W?¼ì2ó8Ïó¼c¹ƒcpq}î˜SQé&]÷€×2°®ò‰]ÿ¨Öên¯ŽE‡È–J»ôhÔCShuÞÛø}DýËâC¯~S¯Kµµ…Þ|Īƒ˜ä æ§´ÑÎÞeÚûös¼x6iYª²hU>Í› wlΫ³÷gÌs†YDÓ€„l{öû[êå°²‡40T[Oð~KoyöóU]p,µ‡ªÎ»ª^·Ÿ.çuû¿¨ã ê-àÁ§ xÛ¯TÁ¯›zÎõ¡ c’‹[@Ñ®5Vi³ƒXÄŰZt»9Tõ¾lãF}k[êŽý囥‰¬a %Úñ*k ®¿ˆ ¨S¦†ã~/WúpÐîŽ&+4“‰´Ö5v—®A›ùƒ2Q*WšÇZIƒ¾4ƒòæ—Õ”¯BJhØ—ç‡ öHJïÜ5êâ.ª‹ºfsRCìo“J`[õZ^#ï“Ôp@°ÊvHb×Gò—…}œÁ#ÆÌÈ+ꀺlÛ ©œìØ#•‡„Ab¤>Oáß“1Ìǽ_M†¹`1IxrÔîu×Öœ+I yÇ¥M6çÐptTÜ0k´;“/*+T;Å[Hð@™¶â …S„¢£Á"ÿª² >f2{ÒÖ=uòÝëa.J½sK§Ò '›}j·[½¹0?·›˜“Nu>2Æù$d^ÈšúßÂÁ(ò·“vHÆ#ÌñùëIù²ÌÌ4i#(úxt#Ì!¹"ÐôºjU•ùË‹*-©C¸hXo§$_»"„¯ÖeZ½³Û%ö¼ÃöÕ­Ý3îCº»²^£÷pó~BÃmŠt]µ'ÂÊ 4é1Sn‹Fí¦|ÂÓioÝ3ˆ· Q$Çž ºÙ+2ÉSñÁ˜2–TÖ”Þ¦®"ËÎÛbÿÁ®ÍŒk]½)<¶9:þ$.XDD,þ!.¢ÏÀ…‹½ËqQ¯5´Cå¢ÜA ec; 4¯F^Ðo亦Ö <‚cgÊmdº¤_4‚W¬M ‡}_£ZeiS;Iâþ:m‹'qùQ8@ P¬rÇô&Ֆ㺴Ӹò}›é]]¥8µN|Yv•=R Ìeªi¥‘ \fÕÚ¢²¿Èg"F ÅûÜýÍÒÀ'$‰¤†$"ð=2‰”²$ ž!t!¼±qŒiÖ¿(î¬çlæ”{å´´#@ÔÍï÷phÞ@Þ"özÃ>Ø·`¡rÃÆ´U5ÈÿRV¹Bcx‘5ÌàºÁQ\¬m0)ȘFK7`Ta¾X Œáý(ÀC6Ó`a0`W®@+Çצ, '­ W'0=Uš%í[ÎâÇŸ®n×OõÏ( I’ {[mN€¹ƒŠ£>ZÖÁÜŒ²ˆÜ 'à»,w T`Žf.Ä(l»‚Qâ›ÓlŸ8j½…[Ư½Ç°ãEü úâ·Ýކk5$¨ï{È"»)÷ágHâ ¨ìr’Ž0ùº…Þƒ` Ž»qåÀ)˜PJ€÷‘TH˜‰¡BX» bu=‘wžäàÉ\AÞª&5Ëy…΀OSAS3 ŒHq‚wÒÚ]QÍ÷;»oÆ_¹žw”8xøµ Ÿ56vé»·ØÖø;‚žaœ[ô¹ËšJÝ¥TM©º{£¾û®›l¿L&*KïVUÁW˜žt.‡I·odNÏÓQÀ´Þ­›¿ŠJº‹O_èÀ,gn„¾Ú…Ϋ´Ú§Ícy >zÿžÞ;œÜÔd徿Ûi÷îb¤¾ïî5¶çOÜ$ ®-.ݵÅôÀlSÔO^\$ÜÌŸyo1º•>šõãÀø=â$ê¬ñÈÅ ûo¸H½] endstream endobj 2208 0 obj << /Length 1733 /Filter /FlateDecode >> stream xÚÅX[WÛ8~çWøÑ9[«ºÚ{úЖХhIº—Ãö!'d7±©“ôòï÷“%;(@·ôôpˆey4}3šù¤‹¦øÅŸ2Q4ÓY¤¥"T¦ZFUM¢w{‚4zqý|6Ü{|(YÄ1Jñh8‰2e‚…AËè,Γ½„1®â|>¹š—«^"2ÿM”ëjœ»÷ÃÙ<ßï%ŠÒFŽL …ë}¾||½ŒC ³³Ð(œ(iÜ$GÇÃþéaO‹øiëøyߺa.lÕm-Šd<‹M,uš–ëóª\¯fÌR-›kRÚ†¿ôß>·rƒ×K?颼XŒfEhá¡Iúƒç§Go‡G'Çûn 4vÁâ¡F;ñ“õêj½Zö)M¼ºÄœRYÐóñª* ×=/{ €æ³åh5kº'ëbìß0ĺ°ÿú°ö‘û\V®Á9~à:êxþÝb §¤—dFÄÃÚ ô/¯fEb×`fbãá‘õë'û“W£i~ 2Æì¶!âÙÒ=§3Èdq^¸×s;à«ÃDŠ6& ¡ÍSÂìÜ#3q’!LLF½ŸÐè,‘">×¢‹H# $Zóh°÷Îmè®1׺$'‚ÉfND q³œa~¡u"„j­s'\âN¸Ò\s:jž<Í$Éà;A˜bNŒ†fƒ”H?±tô‡€]áÈ­ùxh}Š„±¢ÜIýš›Z­$Špå#èóe^åá]ÂI'Ú]"3~‡+åørgä3CŒwD¾DJ)jHfÔm‘¯ˆTêÖÈ÷º¤1›zրߑÔU2BNÖ©jlçA7iB< YEóFRÈ)¡Tþ¸Í!»s¥mØi0ð'ŒªÛáT";é¿ÑÕ¿† 6hë ¼…ë? -KX°»àt½aˆmx‰"ì%õð®.`´Q¦k[[ª©{,)¡Ztî._ G¶àß÷¶Àfª7Çöf;²CãQ‚µ‚GxªP\sYŠÆPʱh–=ÐÞûÿu¾W-ßÛåjiARáiÝqœD"dëòÛ|üg@#´f‰H`MÕ˜"ÎNº)ŠÁÔ`-‚ð Ú£öOµ+=p¾Y-c»(µªÙT³ÊYH—@°¨%õð!'wªù'”Í$ º,ªí2°Ê ºxVÕøÇrSn¤£Úl·&¹ ¡Í® ­ýô/«ÙØ È‹¼š~u.òb9[9:[œTå¢ÑÛcqîÚVµåÚ¶ýÙJ·xsCÞ— ÝR0GºkU «Ñ&T~#Äë`ãX\+m«G"q—tŒ›ê 6–¨×ØXF €ím°í€,öõa£5Vė墜bL¹^:e›3M}65ÝŸz*GóõhåNY`õ"Uõ1‹þ„Ô¸2;5 EVÁå]^‘€ZÞAfmú܈ý SË î&BÜ æÃ3‰únîæue¶šø:¢ÜФ6%I-6+NÃì 5­ €ÊXe~Ë‘¡‹rH›ù¦ºN…Іj? kÙˆPAÌ¢, Cgúv¾jÇa3m¥ü'ñƒm„ ˆâp á”ð[ &˜€T¢#A~oçäb'é`ïø½;5mbîA<(nz0AÑMS+û;(D1;2=ÑÆ_§~,ß_ à_'bt¬—¨s×ç2,:]†EϪ¼²›:.çåt6y¹ñ|´\ÎPñåØßÙAåÄ}=w#Š wÝ#%‹¹ŸÞÏÀãüËhq5÷½CâžÏz Bq« ›÷×ËG¡›¡7Ä¥ð§Äe÷×þýͨú¸Î}}±œ°nô½Ô+/õÞ?_TåÒ—‡³·—u­ë¤”ñiþ©n©ø©“ÍØ#×Àqˆ27ÈÆ<§TÕܞ츲ęûzgŸö?;M¿ †'§ÝïêëšuîŸW¹«föþp_­òÅy^¹WØ%\ËZùòÕA³³¶¡<œ}iTœ¯§®1)×EÓ÷Õ=‰{þ1šÍ[š»{@p…µ ³½]…Ñ›óŠØÚ­7.–‘ŠÀ1³ë‹eu}±<-/{à46ü‚5Üã’ùƘ{\8«ßlÍ:·+¸ëÊY}Ï•sºûÊy;*Ú2W—eáˆbk–­Ê‹c»½øK¤&šûy¤éŒAtü£a¾ endstream endobj 2213 0 obj << /Length 2214 /Filter /FlateDecode >> stream xÚµYÝsÛ6÷_Á{£æ*ß“ÉCëØsÓ/[×¹^’š¢mÎI¤C‘I{}wP"%È’ât2Cäbw±¿Ý?F,º‡ÿ?DUDáŸJ¢hb’ÈHE¨ÔFFMÝE¿žQ ¤Ñë¿ßÏξ½LxÄ(IiÊ¢Ù]¿A‰‚M³yô.~}qs~}õËìêçŸ^L>ÌÞ~{ÉÔžFSžšG~ž-òn‘µÅj2U\ÅíCá«îq”qÑäu5ïò¶¬îÝ›ûìÑ->—íCYáZÆ‹2[=L¸‰oa›m÷k†uóçÄȘL¦Œ²4ž=”^X¹|\Ë¢ÂmmÖ–u埯PsT• ¢dêT-WuÛÔe>™JÉ㬚ãBÄÙjÕ-Qûý|O™ÊZ÷h^T«²Eº—õ{±jñÜ V’pЪpOá$LAÛx} ÄßßuUnUµÆ•bh\¡Q‰Í­Æ …pd¼DÒ„:—0C$HªüÉxˆ—$‰àÑt@vò'XH¨µÄÒ›¡)>veç(ðskΩ0”h³‘Uñ Bˆ¸¬»—2¾«÷¬µžÂUîÃÎMœã(Ĩ’D'‰cz}ñÛÕ D Ûüæêföóõï6wBŽm†œ¸!Zh`Lj4ÌiS€§æ.8^y±¼-÷‹SFÝê=Uô»ª­«²vn²ªÊà) Óõ¼¼+‹ù7ŽömWk†lÃðí¿^÷Î.fgϘMY†i§REd”/ÏÞ} Ñž‚" ±>[še$Á4ZD7g¿ºÌ•,b ü©¸Ï\¥5aF8•Â4x‹è¢‚pƒh‰Sã¦îš¼p¿/ËEñ4¤´'K!·îRÚ+ð`$´b®~š]\_NŒˆ¿Ãè>¿8Î/ 8$c·¬ºÛ¦î¼é¼:VM‡›§Ýÿ¾¹¸ùbÑÝÊË\ÖóeVV!iæwmwˆ°  Ù/¤ü©([/!»£cí¢n³.åÆãðØ".ÊÖï(«yù©œwŽÒ±v˜Ù”·æ$‚˜”ÌüœÒ"Râ‹Uˆ N’´p÷å'äHlÞ:° Ø@*{8ÝÇíÌCœ@œ&ª`jÈe «™Ëm@õÊ C#ÊíÚËüOP¦è&A¤òn*CgvLNj¼ª ;Œ’á‚Ü~!(TúI€$’› ;9ŽuCÕ˜¥A£ØeÄ$1ÒŸâ¿ÁÓrˆ^< |O¹C-7µKõrù¸,qÉ{¢&Ì…édÀ†½ 镞ˆžêS J*Âm­‚@óÉz’¦‰fÖ`=ÕWT ?çñ?ƒf…ž "ü€þc‡ÿ‘‡¤[çGÿjø°Ïòk>ó$ˆƒMÓ„ÂNŸ²¤“C” Ñe°×¡ÚGE¨8h'=rtàˆXCcRætªBßBÅ”Ë#C…*§š`ë|'Öõi(þhƒä„rõ7EûÀ“bl6iÔé/öÚëeHh¯ÁNhÁ qŽôóCÑÁº½84öôéäD*Æ62ž*S®¸ë3pQÛ‘,ϻǬÊKlCð)¶Áòˆ¥J f˜åì™Êå½›?M”гE×ë‡cþueÝ>lmÌëž—m˜p,4°(ªÜ¾éG¼—¡sreƒY-\§’C3£·GQÔ‰z]’t8c¾ ˜6Äèu8/÷ rŠªá 7’°Ìî±¥[ù1ß„Ž=)p–J+ROÙ°pTdwÔ;¯»E½\Ïÿ4~ô^óÓ}™-Â:B»F7]ÇÓ@Dat„¾.1|lU0Û9¤?ˆgêX‘;ñm‡m ¨)-(âÆ™Ë$ù„'ñCVÝSä¦X¬›lçž»8‡…†LQY,p”婆ÑåöyëÛúÄÇTP±Ï B‚E¤9áõÓH ¸6†•SÚÞà΢©àPîVBK[ÖF†ÚPpÖÐ9´rXü&kÚ¦(¾ñSÎÜÔÕÔ­ËEÖ8:?OQ@Y°yóOŽƒlSËß¶8'Õö¯¦Ü&äf'µÒÍrlíï­¹2÷¹cØÜ]ª”Ηu³R¸EŸ7 æ >pƒà‹`®hA _ìˆÃµ¯ŸAgQ%\V›§³ÚM_=Õ«=ãN_ôqoÂ⸉ 7Ö®i¢JP‘«Äsíô÷‰?fó=C³^†;3®€ÄÞ ( å:3¦±1ù0‹C~<ß*}–¥GÜqà”ç?+¥_gœÿ²aIìeóŒF§yùwMó{ô>< §O šb'i¨´¸l8ÛT½ÒËq‡„oBU~Sð‚Ö<Ïܧ{‡œ ŠE‡Ÿcäîå(†÷yâ©û<Œu¡Ü…ïƒýĜ܂J`æäñh±ÁûRÁØóг’0ÊÆø·5Rã¨@bd²ÿjc lÄ-rm}ÚÙÉO ´ðGõæü!MÆ%eCER@®áu€ì’_ÆnbjjïÕðËAÊõ!Ä”P²X:nöé¹ïØÛW©éù BYAÓV.|=zNA %G© Cêph¥j ÿF9Fƒ'Þii`Ñ ¥®¿Š~O9 WV…A‘Àú  #â‹´³ßGç›â‡% á”?ùm2c3ñ½ìïåv#ð':ݽ„§VÎåIÕá÷p)ã¸Ø¯ù1-Ú\Àf_ †sfŒJ¦h Hã!sž%P޲­~ã+É5ÆÎŸ£Ë¦­–A0A¦Òµ·9}+ÛÉXlZ ö@Á ªMçÔõ8Ö_Ï«•° endstream endobj 2217 0 obj << /Length 2028 /Filter /FlateDecode >> stream xÚ­XÛnä6}÷WèQƦR¼*AÇÎx‚ÜÆN€E’YͶ…QKŽ¤ÎØûõ[Å‹ZêáÌÙaˆM–ªŠUÅS‡ú+cÙ=ü—u…?Yj"©6:3B*”Ù`³]öËAš}7?¿¹=ûüŠÉŒQRÒ’e·»L™æ”Hxév›ýžïúá|SWS¿?ÿóöõçW‚/_œHÅAÿƒ2î¥NÔÊÊ(ôh,Uþ®™RÁ¼¢³Æ¿½H~‘RS'!‰ÒeÆI)K/t„äBhC …EŒa§Þ¨|vîKJS`‚a²‚”ðª¼Ã¸ä¶éî}€¦›Œ&LÍÚÛ”nEd\ÿ ti“S¯²î÷8‘÷íÎá9ùù~‡OåLº‰ññÁM]µþçC5ìû®©ý/ûôXucÓwóË 7 E =ú™ŽzaL¶aDÁcöõn6¢„’ŒBß u¥ƒËÊäûsˆÞ2¢ºÍÔtX†åU·MyÇ('ŠëèÝé†R×ÜyÇÕÇkÑ#U¶lFï”#˃{s¯nm5ø‰' °÷–œÃyþëèS¿ÜÔâ­Í{lg‡ûgÿÆÖNvØ7uÛÅPÁ¡U38N"Tu…é–"¨—<§js®`*¬‰’_Új‚ÊOd.úýT§4¢9[nïËtÞ¡ñKYÀ„щ¾:‘d3Xü3÷N2]ã€tÕ†¹†Öv7U®3Â/  jnð+wØ¿žý|ãšÙdïèy؈QÀ—'¾õúuwo7u? Ö·F/6W,Hn-p£É+6ÂÕ¹‘y,6ÇY Þªb]ÀÎÀtÈ1Œ°+ãÓ>Uõ‡GO@¹ˆ´Í¯=¶MÝLQÍÜÁ×Úfù+ô°wmØ)}»0¡½ ?³N tÅÐ2¿õôR·ÚÄñð²|7ŇÇØÐð”Οt–ï«ûÎNÈ+Qø•°ívôkHðð^¥Hðô‚àŸ…z2+ø6€ðl†¦»]½ŸRÕRW'Ç „3LWí;Ünå’æ»ïñ÷ßè…«%pÉmÐ哟§¢L%”²n‚9¼:Î>X—g˜=nª!HtÀ±¢à ðÉUûÅùFØfðÂA‡WØBÁmÛ>*›üZÝö#’N%ŒË¢›ŒyCIÏècfåb3œ™<:䯜•ˤÂzð#™qG ?§§Éäq€%[&¨ ƒU;öÞ˜Û ¬íaëã~ùgpºœÛ ÌÚYW‡ÑF)¯xá;˜Ã ¾=w ÕSjh:¥|ïÌöN‹¦Þ¦Žµ®S Óe€%šƒù­í<:0p ­zð‡Á=,jŸ÷{; Ïþ—ãÙÎXå]Œ¶û¨oy³c¸-ß³c³Ç#œ8¹×;ܵˆÑ€Ñ\Q¼yœŒPÐù`ã ½—8…Îd3YJQ]Toý Ç='þ8ÊЄDýp W@9oÛÝ?ßAõ% HB?0«RùøÐÚ`j¾~8g¶ÛxuâpÃVÀD×yîW|E,ùÊÜE` ˜¹Åûœùµé#°"Oý”îg§•PŒTÍöé Ñ J;_v}퀯®‡y(ùx¸ úúÄÈA¼]¬[;Üš ­]Âå |ÐysùÛõÍõO?z¯®onzóoG ßû<ô>X»-:ŠÈBÓ¾€úwNI(¢ªg?((å~„¬ûõ÷ßFbº¾€o.¾Z›Ó;/Í|¼XßsAd-þ‹7†p<Ò„iÀ\Æ}uî¶ßêÑ—›þ0Ô$\5­E\¦ô(Iv%=²èu@áòbØëo/ß\aéuqù² J—ÛU 1—>‘>fG·Š®²ºT\ùõæòæ[w°Šf÷ýv_Âs‚5K™ín:ü/™ýc“¬È„ùo/o.Þ\ÿ| %™¼˜€•BCo‰W¯@’°[r醢‹8Ô g‡jÛ¸ss»CW#¹ý’ƒÅ¸¢fGŽŸ ýÛõŸ‡fY~ƒ¾ ^tɺàHB0tþÍs*Vußrâz"½'§²|‹Š7+¿'8òŽfà´'” ÕEl‹Àw²¼©õݬ`:YƒÀòàõÄw'Èyç 2}°ÈO ,2,_?M;C‹9BËñã‹¡©ë‡¦ÿ ΰÂw‰âÌG¾¼øÅ¨ˆÁh| Œÿ°œÄ= endstream endobj 2221 0 obj << /Length 1129 /Filter /FlateDecode >> stream xÚÍV]oÛ6}÷¯àÛ$ÀRø!ŠRö”¥NçMR[Ù0t¦È´#T%eɿߥHY6â¶Á¶bƒa//ï=÷ˆ  üߢ aøñXø‹H (à>Â(@J¢5ú0Á`ˆÑÛ]ûS29¹"Ä9§(Y#A‘`Øç°(Y¡ŽðIäz„PîHµv=&¸ó;æxYw*“f|‘òÔõ8ÆÚÆ_Ç,ˆû)¹<¹û1މöŽ‘Ç¨ÏƒØ8Ÿ_%³Å…1çÌ¥‘s>;Õ‹^ÀŒÑ¾î *GÁ '%ÓBÊú=p×]•µy]™ÓóO#²ïûôŽ8_ÝÜ&'×· 4pR97®ÎÙâìý €/_‡–F~ÈBë™ÏOÔ©i4xÓKÕ¦+eÕš‘œWS{¶£õ¼[ÜofËóÅü&™__šE°ïa¨ðqó…l;U5pB9í½4©T­LwŒ¤™ˆ¨Gg¼lß; „ÀÃI}Êø`a2¦=wM^mL75Jõ¾::/q¤Û­ª5mžò²7ó]/౓Üçö,zädrÕ)© pæ @ã6òÐ,`NåRát.qJ <4ÏÒ¢x6sM›ÞÒôÓje;Y¦-õ€ÚÏN[[o2U¦W¦™ö|ŸWÖÁVÉ,ozÌÇ«„r¨aK–Åì—ùri–þ<_&׋ßþ>÷Þ׫|Ë•áØ£TÍ®Hêµ¥¡i®–¿ž[†Ö] à§ft¶U¹%,Řd½|÷f êd–L&¤W$¢U%ˆC?Ž"”•“Ÿ0ZÁ÷K„},ü³·*QÀ(´ZN>|Aš‚´M„;iŠiê Í×öÛúd ÿ‘jº;H«IŒÆ›V›©éþä)Õe¸'P3 ÔR£Ú²SžÛûÔòâN¶Cw“–e:jñ¡’a¦g†£êxïcŸÆ}u¬ÛtÔq(u•?^!ž£Ûéãï¡•oóGM h¨‘)Êb§‘­ëÒ­ XoÒ ÂBùW4“1?àÁ(‰ª*p~z‡¡pbfÆBù1¬4i ÷uµßV€¨k…ÓH(Õ@A=^ÉVª†AÛË¿îdµR²ÙöúYW«^˜õwfáCþÇ1=†/ò£Qö™ñ·Ën¯Î,ž³à&åZÝ)u×!MíiuÖ:F!F<{x´C‚@pµãÌ|hÛô³žéõ¾ãúïƒß!uðͤÎn¼”ÖÀZ†ƒ(Ú€‹Bx7Ñá¬pȾÖÅlû3Û\×öæ€ü¤yÑ|õšþÝkÂÆ9TU;Ü—iÕ¥êyÐüžŽ¯Ð|ŠC?‚£ý#Í'Þb|ŠÉtÜÑÕ·5°<ý—uÏÞ˜¿”jNiXõPõJöy cbX¬§v*Ûë6_ÒqsAw¯£Ûåì•2푘úàK° Gר›¤¬WešWßçæx!3Ðç<¡˜~ÇYöqz°˜ð×t endstream endobj 2225 0 obj << /Length 1198 /Filter /FlateDecode >> stream xÚÝW[S£H~ϯàj¡í Íe¶öÁu¢“ÙuLÜ­­qt"%—$úó÷ô…$LÐQkž¶RçûúÜy°ˆµ„ÿ™UZ~<ÇaZ‘ÏöƒÈ·ja-¬¯# ‚Ø:{öüçlttêGÁ(Æ1±f Xb°À F4ÍæÖ7;»w<Pnp<§{oUee«/Êuq+j½¾Ág¥ ÏÄRÔpEœï³Ï€å†¸kub“ä‹~Ãh\duÓz›¤Î’6«Ê$×·E¶%H¯E³¨Ö­[‹$—ë²i‰ó<–Hß‚%Ò¶ªK«b•‹'…W$m‘<¹¯Âmú¸H«rþ^à¦m6®:îÆtß}”ûSÛ“úôSð¥¹ÿ°Vr r<ßÇöT˜uµ”6+€bÛPÆ âX+¶àônhWÆFÌR€¿ÂN<öPB¨ ¨ò1’«—Ty>àÅáA<”M3¨’¡n±¥!”R‚(¡=‚Íó;94Cq 1¸šC¹àZôjü÷d a†gÌþ4™Î.®þU1rP+¸íšQwiÙŠ¹â/I ŽQKб¿‹ìÏ}ìÂw4žFDÕ1bcÎä³ÐJ‹Ñ·ïØšÃ}H-Ä 6•T–“É­éè«)`Ä"ÅœSÉK*‘ÑL §Lèx„ÈDÛ8ŒØÚË 5›iµ®S¡¯O³\ÈdÅx_-bü\¾Aê0ºsøä|6¾:u"fˈ?¿Î–\ÅB/g›õ-äLS$ttv5hå–Ë•›-WÙÒݬRw³„C²zLòÂÕåÕÕ•oG<À½xÀ¼žŽ§o'lì¼n Ó¢šIV¾tr~y=;º¸žÁ ¼À#ûÒ CûøêøËŒ9}4*;92ðqW‚«zÞµªjaÎQçÉJ_¨‚&Ÿ’"Ë۪̒Òì*ië,ÝoC?ïsà"è›ÐQ;øýVÙáŸývïõŠÿ¢2ÉzYˆr›O«<é‚á1Ù¼Ž‰±„Š“¾%²r.ž `]Ïpi+óÀ;èO=P\.ï¡-¾Ô!JûÆè :>ú|’Ô­h¶fO+pYVBUéCwýŸ½¹”˜„‡Û|°Á÷º?ß°ÎÆÞp|ùÏ6šÒ»¬\vhb±ÈÒ œ­z…Å ¨á}u†ÁþH (Ȭ²r•p„KˆmÕöØyûJùÿw{y"âo›ˆâ‰ˆùf"‚޹?Ûp9ÛÀà"´L7Þ¨iÁ"aŒBh\.5mŸõº9¢þ¶ë2~oJ§ˆ…Û†ƒñ ½ÜI‘ðbh³@ sºëìø©Û!=! ë$þ€d#{˜W€â`Ëë÷!]õcDY ¼ëåª4J»ø`ò¼w‡©!U…•òˆ -p‹Gá¦ÕY-ee ÖþÜù-+Wëvˆ5eðåoÊû!ÚpÝÉ“Õ?²áKIFH;<–Qy™±ÌÿµcYð«Æ2Bb#Ø+§²ÞçåC9UU(€¾«BœõvØÿcGÖµ endstream endobj 2146 0 obj << /Type /ObjStm /N 100 /First 938 /Length 1462 /Filter /FlateDecode >> stream xÚÅYMo7 ½ï¯Ð/ÐJ)‰€‘CøV Hshk䤋¢@`‰¤ÿ¾c;XÍ·¼³N/»œÑ“D½GJœŠ,.8Îâ88ŠL®Fû¯Žr‚!Á¥\Pð_’cVCÇÕ !—«˜Á®hØq)®&Œ‰j‰ø§‘´ ºkrªl¢‹! ]³‹‹YÕÅD@k‘ÉIŠCÚI̸£00ªÄä0}†°ä¡?@ŽRÌèW0,À*Z…pKƒ@)Ö(„¡´êN’QñŠ‘RˆÔü³¡9'É 0% €­PÀ Ó`M2²¨$ÂÆ©)ïp>Õ’í ZŒ€".…¢D]ŠÑØ,Ë\ˆ 1a.³Ðš°—R5m o‹L\"ÆÇÐI¢ùQ1D&ëXÙ¥‚% V’ŠyárªÑƯ0Ð`AÛJÄD¶U‹©LÄ &.¿fXÕˆUhÊÅ:BI,B0*çhLéL¶L‘Ì!HÉ —š±ªð)¤a0Ó³(&PÜ#“ 8ô€:Œ›QŒqó_qÅÆÔ‚Ãe°Ìc¸‘­cfd›,[ÙlX4µû&)â'GôÌà!“ýD†p$[t&…×.3Û‚ÉZÍ—«Ëyp1FXe°Ð¡Ö„ ¬UÑ!#J ¡§À2Þ1°+dÑCÖšg[Äʲ0aü„ b #¬Ó x q/³ì®®vû×îÎ$$ì[·ÿí÷?«”àAçí×OŸÞï^½šÁaNŽ^p¯^ßÝÞ»«+·¿F<#Oè¡Ë5 L<]!QÐ&WÑ2 ž>¶ y£OWlýêÓòÑkÚâÓ  8 ÛìŠúÁµý›Ïw=Ü»·óúÚí߾ݻï^¿û÷Ÿ>üuØíÆ ·÷_lG¼Øíß¾Ü}ýüñðåa—îýrøóï?Ý}s77DŦ‚“ªï1߇Ïø4ø×òX;ù® ßTÔÛn´ ŒI<˜šÑeÄvÃèˆíF‰cFÇ ¶J,*? ¿YíªlSIÒ©J7«$Ô§RƒCî©úÄy(…}¦²äX| ¼ÄÉâ•¥Åã(ìŒFéEmÛÌmsµ‰žQ¼41qƒçÇD™ˆ y^LˆžÆD¼¾SN±-û ¼Äé gä*E}(´ıà5tŒˆªÌ—š/¾í/l=CÅy"°ÎŸÚÉas€<ÅôZ€48è9õÉ*P”¼–ؤäIÓ:0¥€Ã‚;÷‚… G;û‰€ !Òžâ£Ó¢Ù5FçÑ%vœ'‚‚·…t…tî# ŠJ¤˜(ûøeSw¤ËK'r šÕíšéªfGÄ5,Ÿ)K Ÿ.¹Ðæ%—ÎÇ€²á1`ž›óÙ¨läíl”N6JgÒŽ¹¨²Äã¹ã:qŽß¡¸«a2öÚä;VâlîëDé]ŸYzW9á¾v–ÞuT(œy L5l´Lâ²Ýg7­“BvéiöÁçB‡Wȃš·kÑ™µ7F@F9É”×8}~É$ξ¶8Ÿý‰âOy;ûÅŸŽjºh…~^&lz!\ ~me ‚Îoç’Oa¢ŠÓº|í$_;7¯sõIã ïIK§J[z·ùcýhæÄ9ʦóE;­CííøFÑì5|h-nA´1…¼}_yYÑ–ŽŽÙmî|)ê„Ï;üí³Å‰¥SŠÒ+E $>þó§•iöEäeNxЧõ²}øÙ*Sì«—[œ}Æ >Î>¸õâK_–JéÞ·À''վطáS)d»¹SŠÑkÚ@>ÍkÑÏþˆÓ–Å{¦Sœ`X73L¡á·´'€\$^¢`öëܼ.QèÉ©.”ÎÕå?¿P endstream endobj 2230 0 obj << /Length 1750 /Filter /FlateDecode >> stream xÚÅXYsÛ6~÷¯`ߨÖDp˜N;“¦NâtrÙJg2I`™’ÙòPx(IÿÞÅAŠ”‘ÖN¯ñxöÛoìê]@‚ ü? ªÃOâXHȘ#'2š,X/Ž0,ÄÁÃñùÝòè΃˜„ ”s,× `qØ´¼ ^‡Qºˆ¡<Ìv FÂì]µÞ5‹ˆ ¾ÁŸ×}³ÊìüA^dwÇx¶­S KÉâíòñ `”â”hy8ˆhаVÜéÓåÉÙƒ…dὕáý“»zÓ5à€ZNOáHPDD""ð¶¿hê¾Ë+ÀÆ z Fc®JÕm«Íöx·]_×ÇÙNë<²Õz·Çšà©”È#æåùÉùí1r»¹o¸²¾,U^ÝTèéÓç/—wž½\˜ç2|¾"¼wvïÉ ðwC@T¢„%sD†°7ÞµØêæ2kÜpíž»¬)ÔÖNTuiT™]]åªrZ©®ÉWYkgšø¼:Ϋ.ÛdÍÀ±vÂS`ÇR‚GñU_^ÊøÕÏXª«wöºv+T¿)3à m 5Øÿ½ÚÝ ¸ÆÉ ÓÎr§ä}ÕtY;꼪¯¼Rݰ&S…2-îP¤#q.ñ£#×3 Ìy€mÕêç‡t¿Ý\ÂUmúB5 ' 9Ÿ3¬–3%Vu¹-²zöåLÈ·ÝÆ”=À)´Î›¶‹v dwy]©ÂÅf¾É*XÝOIƒàY«ÚΆ姌e÷沦Î3›h§Ã TޝÉ=L_‘/ˆ¾?9¿vú|yúìé]»‰ðÜ'N¥]¾¼ÊILD8&¬˜$a[;3÷±»Êìà &±QmÁ“pªžþhÔÓÛìW Ô½×›uvfâE muذUnOJ•jÝ·÷W™Û—W‘7T Φµç³4l?–eÖ5õL†F=xn›¬Õà@´ˆOÃÓÊ~é,°ÓI5ïÜ`z ¿P½9z,óž¨v@1!ûKýñß8:Y½;"¦A"ºÉa‚ è]•G¯ßâàÞCB .å÷fUÄL3VçG/>Ñ)±˜Á5žŒsÒZ­ºªüËÉ.ûo»#GßPXI#ÙÖK}µ²U0µÐqy›†è_ìMfå]^mûî6õ|9Ûîéjʾèr­wÝäCµè?úÏ«ÀøvU ƒw–u}cŠ…é•g*‰9.ß]Ç)’"=è¤|BÁ™äx)~ñ…/ÏÙä´Oà$ã(±#ÿ-¡{€ápw6Ÿeós¡üýíz|R&A X‚^4ÑAª?0$‰N? §æ1.g2à|Ð`Ükdüú‹GÆqú™B8ä]pý™”ß=I5¢"¤./0":qL’+däýB gºËK(û=CF•Lhªc>ÜZž)A›7,‰?}w$ÐUCäÄ¥éÜ{yHÉöA¹¾¾<’aïv‰ˆMd‘0ywê¢3a&osSåå·<$Aé!ž9•à‚,(B“±¤ðÖ2ÚgGý+_Ì€ñ„çz=ˆR3ÜÃþDyÉØ$ú†þšŠØF8TµtìνR’iüV_Û„RúPC&©Ç° µ'cXcä/¶v|@ѵ ŽìSO{U÷…+!‡–ÌLЬmmêë®”kÇþBCh|˜«3è?[gÄž:㱪zÕŒµ–7ª5R†ðuÃRcöãìAôC¶Ñ)6&dèøx<Ó dÿL f endstream endobj 2234 0 obj << /Length 1529 /Filter /FlateDecode >> stream xÚÍX[“Ó6~ϯpŸêÌÄBwÙÛî…]X:°°Úi¯­$ž&öb;\úë{dɉjoÌô2 ØRŽ¿sÿŽÄÇ€Køû,( D¢À*VAÌÂ\Æ<¨u°ÞL0âàÙîùÓ|ò蔓€”Aƒù"P4P #Íóà]¨åÓˆ*ÂEšµõ4bJ„ï±À—նδ]Ÿk}4ÆV - 2dúaþâÑ)`Œœ£}XXg¯æ'§Ó˜…§4Ÿœ™þf*ØQRT%HáÄ"Õ:]ÃâNs$ŒÉÛ2k‹ªt+cš‘(gùÞ:‰‡¸Ñ˜ô¾~;tþvpWÄáë©Ráã‹Ç/OÀöËûLc$™[ìì:²r»ÑuÚVµ]C‹rV”­^꺷ׄ0$¸ƒÈG¹.«MQÞr˜’hhœóúéÉå“‹³×ó³óWGö"ÒHÂIlÅ/t»­ËâÃXØ®L]0‚;Ee¿æløu,ˆ‹ƒG'ã^â;C˜‘^â8÷@eF÷(y ˆŽŽ2Ä$ßÙô”½T¡ƒå|$Šv¢ï17(d'…Ñ4âœCñPêŒØ¸p••}nË\ב}7 4¬LS|2ÿ˜ôÑ­?Ûß2ó¾ÒÝã¢\"on‰¤ÓÒÅQ,]¶N~9»„ÌZ]ÏÏ.çç¿}{?Ökµ+Åó¬­®´«?Š1ÝW⋟Ÿö%89™O>NHÇXİŽÀ ƒl3y÷9ìC±#ö¹“Ú¼Ëä:¸œ¼¹º¸b({ê=uA`‹OwsW'öŸW³½ª«m[”ÚqUgбu3+g_f‹ÙòAYˆ(ÕNUç}ª«EÏA`8ôý'ý+ǸÀ…W‡À×`4÷uÙù2ÆL¯š¬hšÔ­ê:ý:ëçGiàn²s1ƘoÄ\Ž1|Z¶Edä£Ùc±—…²ñëùhþYa¹f„îÝ÷Ði׊;ö[øÀ”ì¸9×@o¼4,b+§!µF·naŸ×Sð&„Š0æ@Ux ”"©zü/V„Š@¡Da7b(‹.*TáŸD ˆs óÍ™W,¼ƒ‰#ï\ßø&ÛpüÀ bu¶«¢±o;Æ0‹¬Ú\o[ÝôBÚ0ðCÓ³"ÔβvÕUlÄ¡fd¢« šíÆš^Þ¨Àâw¼±éikátšð•]3ï†ê™Wc< PUqø£O1ÌFBù0ÐÃcLjuÑÃqèüÃèy ÇËA{ì•Y|õAChwú1=mŠØ‰Gƒ@"áûB؇Çá˜Ïîj~w«À*¦ÃV±gq÷c§wì~ ½CŽ&}QýîÑn¿€Ù Ác#%8˜(%­JšE”ˆ‘‘#°(A’„ÓEOƒ=󡬬ñf``üš$¹%ÓrX‹·åäáƤ¢ëk5„宨r/NDÄIšs!4¼¤.^é'fé:ۮ͡LAönh0'z+›@j宲޽TŒÂÔÞ%Œ}81â{J%ÖJ 'bZ˜ãƒ¡´ff3ÛÂýÃJiÇzY§k·ÓXqG¹Ýu]×ýbfR »ìj»?|P"¦”>Zs¨ãn€ÅI˜­Óa.àÈÜíl¯ŠÌÊ4×k qˆ´ÄIø«.¾:“UuG°Ùpªß0xFuxh3k¥¥C°|‘6­ÝºÚº—õî^¿§™‰|öÕ}V§–²õŸU‘›Ð›ÝA2"D¸* SŽÃcVœˆp£ÛUÕÁäv£Ë‘á¶éjT&8¼,6×MU~ß8‰½ ƒ3ƒ]&ÃÏ«ÂÞ›ìçÔ‡Cjz'ºË–ÝëìôWµ¶oÖ»V[®»²ëÚw¾óD¦ËÀ£™Ý)Ü}\2å›»]ÿlá1Ìn¯sÆHn¯òàj 7\30,¡ÿÚ5óeÒ¾ÿ3¶‚(Þó†9úO²ƒÓB MƒLB»õý.ÄÈ/ÐýòF±Þ endstream endobj 2239 0 obj << /Length 1649 /Filter /FlateDecode >> stream xÚÍXIsÛ6¾ëWð(M) ¸€n{p;u2[éL'Í’ ‰c AÒNòëû°Q¤L;JëCÇcËÃ[¿÷°ÜzØ[Ãÿk{þâ, b”ÒÔ£Q (¡‘'™·ò>Œ"ïuûým6zqaã ‹ãЛ­¼4ôR‚‚Í–Þ§q„ÉdŠqÿF8âËyΗ“)IU?F×¢‘ fúçEÉN&Ó¡i°ÊâÉçÙ›çÀ£ CV²7%aG™uñnvvu>¡d|: éøåÙ‰Zô@iИv¹ÄA¦Þ4N81œªf.ES4‹AóUa”QW¢ôKÿÆçÒ—þôÙ®ò—l›ñ™¿Ò$V×u¥LÄ\¼{ÿqöâòã >à‚˜ŽßOÒt|zuúǘr}œþ! ’Xα5@”àôœzb,¨vŒ-MS¬Ì·,Ö›Ú4 n¾y-¶Å´^Ô•i*³ îK–—Î<å{Lö¾qa¶âr¾nÊ\šÎVl¯›­éÝ6ù¾Ã›íœÉž”‚×lÍäc‚nú‚åvã›ï7&…5ÒÚýª¹µ‘ÝòÀNZS¹°.©íª¹…@S9ÿ=­§ 5B H>y¨š €Ì—E^Z±jcZ;œ«q‰ì»d˜m?†ˆknq¼;Ð~'jˆ`ËUðg“ÙÓ*ãL®¿Zв\.6.%“9_°£!©“ÒP[ÞÐ/¶,yYŠ{ÓÅë’] KRo˜Ë]SwõûÙuVÊ—K,^~íCÍ.ÿÅ|Öj*Å´–!c¦]ºÖ[ýH?PË%ŸUH²º‘Ü©7oÇ»ÄF6»'}¹RK{õ„äIPˆ}ó[ÿ ‹v9· ïä–Ò¥ëb±Wç°ðO{5ÏVÓWg×/¯.ÞÏ..ߘEP û»E˜(£†üj:(@¢ÌèI"jõTCZÏ‚Yˆ²iä†n]ÜMˆL×墨AˆèXå‹ÚƒêvÜr¦ûÒ¨FuiÔ„Íœex<ÛVªû.ìCA™«…àKBR½aʪVÄäšÜ|mæ›êß«Ÿ\j»N•}5iƒ§oª:—µ]›Ø„Pãõf‚UÛ‚O¸ ªá]ÙXîÆ«0$@9¢Ó!ÖÂŒj¬ß”ÛîHÄ{7d-QA¸S-¶jø¢.7³yíV33°UD è‘ðimÌ6üŒ²Èø¾ßæcØ2T0"â‚ÑtXîÆVr“@%v›‚*ü$N-Yœh¼)—'ªl=ª¸é#P”3ÍåÌЄpÐ ²i ˜€,šªJ¤ÐèP©„Åœ—´^K¡AÂ-TR£¨ET:Þ˜¾ö¬àf…éè3¹‚ ¹eÊ•v½†Ð€i!¦Mé÷L‹¾oZ$4ìšÖR×çU)¬¢f‚¢ë-‰UÓ>meÈ:)NŸÂžÊïºWT²ì)~à#¿Nª³ÐËP§dÌ¡ !AÒ£à‘¦©«>Œƒ)¶T ›qØjw`ÔK[ìj]pb”@H߉ö$tÙjØë‹ÀJ=F\é…Ù}bYÉji~Ó\èævXmƒ°B1\aè3dLଫŸ†34 4y¦nö;`_b„Qèþ:Ì*‚ºc)Bëî  V@0äã80äÛ÷\D°3w¨Ä < @ì\…’ CµÈ¹>ÍkĵsÞ°IQD$=7 ´ˆZt’:‰E'WzÓ¨íq°Rí^AÉ€”—ê¬4|£ tí†quöçÅ5œg Çß/®g—Wýû[áK8âÕî8xÍv5Û_JB„¢ýìÍÛWO—KÇ¢¾Ó]^Ùc\)ÄÎ^º.µèpÆdóèl6ºaýè€ÕÃAH¡CÐÛѧÏÈ[Â8ˆÙî5ÕÖ‹ˆÂJé]><òúBOiÖ¾>¤½×‡2ßN`<Àï2_6G>Eak(}ݱ¹óª­8Iyo8꺮œÖ¿ò€ƒùÇRÌx¾wïܧUïNe¿»ùX•«…dŒ·$%ãk8ùN1ˆ<ò†fäÚ%'OrÕ^!%«v‚/Ûiw“¶üP~'ôý:Œ)Vm²Sk'½5øÿ¦-‡ endstream endobj 2243 0 obj << /Length 1676 /Filter /FlateDecode >> stream xÚÍWKoÛ8¾çWè(£KJ¤zÈ&qš.Ú´‰³À¢íA‘i[ˆ%¹z8-пC%KŽ’Ív÷°(QôhøÍûã7‹Y+øaå…" ˆ AX!„r?äV)­¥õ鈂 µ.ºçoó£×³Àµ%˜5_Zðx”øh¾°>Ûgç7§×—ç—WŽ'_çï^ϘèËSËqB£Ågi¾˜8Üsíz-Õ‚ÙURJ™§ù ÷72_Õk\'EYÊj;qÜÐ.àCfwbuÏ_(ãßå5î&BØñ¦1Kƽ>07Äçj`·cà™G<¶"w€ñÏkª=’5à’¸^Ç›¥“æJ°–¥Á¡4[ŽGCE®å€RÁ#T™Éz]hóºE`(¢½£6”aeUãîR>ࢪå¶BX;?Éq ] [YQ5ð`J—Ÿ¤áá~%õKÜßë"Ççž=›„ž]”cnôBF8l=ëF—„7Fä œ†6ÝŠþ‰8ñໃCY!<;nê"‹ë4‰7›¸U)ø²®ð ݦ¶÷Iå Þ%•–)𹉳‰@T!AíEœÅßaŸ1¹¶ `¼ Üž¯S£½—Wê·¹-ó¢Yí•+k(š!Њ•¬Ç\ÇBHÀ.»f(âB}‘( Z"$³< ãŽ/TP#&zbq£.÷#z8ñÝÎÿ „8|PÙD@•:ƒã<úD<ݨÓÇZHaïD”b§tš­ÄoUyc§…$ôÄ×A[À(¾qþ¡›CÈ«ý·c¦ƒAœ‹½ƒ^b6Å3UHêu\ãb’åR&µÎPØËÒ,M*\Çø¸‹u]Âêl6ǤtÒl ·‹\ˆ`Q°ˆîùâx[¨b}PtYïôª=^[°è—ŽÇ1Ya»ªã»i¶æ›etE„º"BS#Îr!o©÷·ÎbD°Îë.¥-¼8¿¯ð8<ê(Û–Ú$4$S *ÐÍ~ìšw8ÐÎ}ˆ U_m7i.Ç`x|¿kòE†Íáðâû *ƒÑ̵ëó?.o`¨!Š·—7ó«ë?õ„{4%Á¹P×*f®«] Õ–2®Õ|®°ß5*7Ô üáJåѬŒóDV*rjë´L“dmÁϾ1=Ä™Ä"€‘"ÉŽ>¥Öö¡õÊøAKe %xn¬›£O8Í9S¡‰„pÍ4‡´‚Ôb3 n)Å4 ÆóE¾ºÇÆ Ä›¢)‰ï³t#U¤a²Œè¾Ç } }Ñs»¾xùa~~­gˉŠüéùËü+HàƽFSÕÜ•ES«$Ю[¦-:¿ßÖÓÝ}2Í«m¾ÜMwß’ªšæ«L¦»U2Õ‚ÓNÞ ÷é Kú§ú-þ·ó×W·sx¨öÚ'A`Ÿ\Ÿ¼?Ën~=]bˆƒ/£Ey“Ý©Wk¨ ý¼w¶Eš«Ù×fPšOaC®dÙÚÑŽ¢¶y€ ¼Äìx _À#uQ…Š‹è<ŒËZVil^“¢(¡çB:† ߨ¥7UèÕùOaÀ0àÇϘ·Lø8»¸Lu["¥·«mÚ!ɶE.ÁF 3ÊŠ2k¥“¸’SSlF- š¬à|CévàOÙÿüY÷:cjt‚Aüà“ÖÀGš¿9èìi‹Ù„ ”KYJè¦Y¤Æè´7ì%Á6U¡3|cÌÏÎ ì/Ì£ÕAhùõäQ ŸËÓ‘úVÁFš5¾7,Zïý¼xuÿsì¤ñÄ4º{‰9P=ê½W÷CË‹]+Hž*ThV‡~4—ÆÃ?¼nI¸†dÐõe¡»V0õåJV5îjòßôذ&Qïæ4Æ|Ÿ„@îÌP½xŠ+…·}5ª)â¶µøÀ[Y+á =0žVðRÍéÁ‚Žßëue~Wdcœ=×õ;ö€A#po‰:ZØ£(Æ=:¾­[G˜'LIˆE “ì K©Ûq*ÇP[s‘¬à"Âywæà’Ð;*×þÒT*óÕŽjsz¡êAëK jª¬6Ë2VñþQs"ăŒHü·ŒHŒ0¢+ˆjWY@Šø¾RÞý~öT¹¾/é2• ÓBOšUSÕ­æ>«£5JfP¯EV,²¸m\ú^­‹E+EÓdjÞ˜oä¶–Yø‡>bn,^ÿo™ƒÑC{Ì-0·m™f‰ÔúîÖŠÿ_Ø[¿¯ó°j\ÊIÈB Ës'D0ø\ÿì•Ëk endstream endobj 2247 0 obj << /Length 1617 /Filter /FlateDecode >> stream xÚÍWÝOÜFç¯ð£OÊ-ûé]å!HI¤ÐÀ5Q›äÁÜΉ?.¶¯ˆ¾ô_ïŒg}ØÄ¥4•Ú ¡[ïÎÎ×Îüfæk ‚kø”‡?[f¸u6pÚ0®#§ƒ: ®‚·{yðr÷{¸ØÛ?‰x 8‹y,‚ÅU`e`g.-VÁ‡ð§‹ã‹ƒÙ§Å«o.ïŸh7¼i˜•6˜KÉD¬èò¶Igs#MXT«"ÉJä³"׿Ã{^è‹ã‹£óÓ§goèŽ0Ã;È-ãqLä‹uÖÌæZ›°®¶mV¦ø…¹ÐåÊŸ´ë”M‘äyÚ´D³©³"k³_gÒ…ž`™æ9Þ¬³%¬é`SW³9|®¶ËtÌ5 ›¤è¯×·M›xM[o—í¶ž à† æB1£½æ ðQN…- +\/«…’J°´a›U%rTNvÚ1pj,½Ù¸™y6«ªLiçoßÒn“&5Ù‘•×yà¬ë5}'¹gßöZøe[Õ^9Æk¯GU–p¤B–»~0ÁÔFcTÆ De_ùðxi-”&Ń•'óm<ž5mºÙP§ '« nJ:ËJÚMË´¾¾¥5USõï3ì«úK‘”“³ U2ž1* /AF×`J;‹`Ñ@\P Ñ·÷¦h¨`G>°NËGˆ‡¯«qáÛm²Û;Z§›Ä)îºêå¹¼8;= Ý€FtíÝ&LBÇMsá àEüÍ‚ßÍ‹ª¾ü\Õ%í~öþï¾:ãâ¡áAÄXþáð ,w©Ýð ÆÃÃm3äc§¢þÿŒ^ûïž¾©X°6šðÌõåĸÑx¥?@²or endstream endobj 2251 0 obj << /Length 1779 /Filter /FlateDecode >> stream xÚÕX[sÓ8~ï¯ð£;“I¶|afºÐ²a¡”&ìÌ˃+‰_‚åý÷{Ž$'vj eö…aˆŽä££Oç®~ò˜·ÿ/¼Ê£ðO¤14Nb/ ¡a”„^#½µ÷öŒ#õ^|sü}qöä*L 9÷/ì¦$äwW»³Ÿ”¶#^¿,¸°®›Òê6 ûºåQBDmíx‚> ¡8pâÀ2qáÅ$©á‰€Jáš$JÜ-çcÇE`FX8rý;v`¾ñç%ƒónÇÏKy4vÿÖy혘$p;DZóQÔ‘è8& ó8/“à)cçE$INOʃ(㎣³jæŒÚd•.²VÕ6R§AÄHBÓ¡—Yo^µu3ÕqD=Úª·c`#” ÔŒˆƒX bôК ‚IS·»™Õ;¸mzkY•AfQÚ·Ãc=ñ3%,`Þõ²ƒ¬wª‚‡ˆQê_×&çÄiYÛQÒš…‡ŒàîÆ,ÂR7¹làÆ"¶1Šã@Ú.“‹ÄW%~¦¦ÍLfhíwT‘!r‰9¤’nÚÖv\Z™VÈ’SS—vÒ¨ÍÖ$•á†B®[ã·¯ˆÄ„ÃÒ§®u]5îþb¼+KoKüt‡º`}ÃÓáé@TŒ¢Ìêp³ª†;QëgnÙfZ V™–vÉø°‚{§u³T­]_Õû]jPÕf4ÌLp­ä×JI µªÇõÛ¨7sÂÒÏrÉñwÌrŽ‹X y†Ö1º ’ΑDÀ1‡Ú”ª’nyÛ}/À…cjÑà2AH¼Ò,Õ¸yÖÖ%;¤—™61d7ê­Z·Æö8©»ƒM(9#†ßhäI¹9ÁRÆ[ÒÀ]fE!;FÛa|øp§î/ñÞÖ¬”–KÛ”p pp!‰„Û§tâd a¦Ð_#ÎüÅV:h€Ç~Ï•í vE¶’¥Ó"œÆ}mÛÛí1Q<~q7BR¹¥vkRIÙû.4¶’føØE!²fNˆÍLµÖjY¸=½~¥÷\Ã(…9ߣƒ¬7CõŠ®5â\>ô:x† ”d˜©A?×ÖøÌX DïMoÍŽ‡×cÒ!GÙm"ë¬Ð’ŒI‡Þ[°# kÒþ,.CvgWµY ~—â± “9fWPÞ\º¯ˆ_»¸å<%,dCϘCʇ¡?*Ü ³%‰›ó$ô‰¥_tãÚaäuÅ?¢•Š”ððÐÓ½D@”û7Û;)6eþÕS»ôZ¶nÅ~éfg€ò w–[.S?kdf ¾›.v*,É)-…ºyùçs£<årqö錙—!ópBWܪ<{ÿz9¬CøAã‘x_ Wé…Z§ðægoÝ“aÏ– ÁM¯ B8<÷ŒáE‘ÌÌáÐ[šÖ±Ìë}³rMÏ•*$8Š ôÈIÖ)íÀžj²Be/r—Ÿ]/.o¯Î“^6Ï.L#OH½_Zÿp/PgxÄ›í 6>©`eRè]?ÕDÉìˆsc¯ÔwóËùãñ%?÷ÂÎ×íþGÍ®oÞ-ž¼y·€óH !Žý‹Û‹×— ßùO8§“Œª³žvj5eI“V‘ÀÒ‰cWé‘ÞÕZ¹f§X‹p„B/_wËU -ˆªÀûµÑFlÃBì ÄHd0)³¯¦Æ!¡wr/z´agÇcÈö¥ ñ×ÐrUWù/sWD+†½kTûr‰=\}ÿ/]ö€À˜¨ª•Ù8ñ=ŒŠ¡ŠºÆ'ÇÆg²À¥}@%»Zuß7–;ç<µÃ*³Õv€öîAÅ áÓ0ù¾Å1¾O®Óýeîâ¬Y r1ðvW‘ŸöêsVPÛþ×âÏå×ÿŸM‘œ»G…j]u2Ä}¯nFÉý xúG¾^"f´(# a·[¤ƒ=PÿQäbV endstream endobj 2255 0 obj << /Length 1704 /Filter /FlateDecode >> stream xÚÍX[oÔ8~ï¯ÈcFê;¶§Ò>hÙ²P 3¬´ÒO›U.%ÉPúï÷ØÇ¹µ +­VUÇ>ö9>—ï|™Ï ®àÿEPþdšI•JHBE¬DÐè`¼;  HƒÃóéúàÉ)“£$¥) Ö» ‰‚„S"aÓz|OójÛ.–<‰ÃîZã ½+KÝ5¹¶ Ix{o‘ ¯q¹©»¬s¢u¥Q¦Õ›Ùá3ëê¶ÙñÍb Ûë6ïòºrÚòÊÙÕ¸=«ênÁÂkÝÅR&"|ZwNœÜGZ¿„›-'R¤xƒ‡«$Üæ)ãºÁ·º*îÌH…—FçÎf8Õ5YÕ™ÙŒó_ŒŒÞtuƒYµÅ…ë̬à²Ûk=KmVº©Ò,ïA{\-»ÜYfW•î¬7@….ÀëžË|¤’¶ Z< í ðDM0¸*êˬÀqÖ4^Nzr*Ô4Ð,J K(°_î6e‡r󄈉yÜ‹~B„ÇUï,PåR½éB—‹% 5Æ'7àý¼µ±‚7›ÆF·ÿ<ÜÛmý’ÆK&¢ØÜ.%ù$›ø<àf*2AI0f-Êì ™ê¢¨Íü­Ø† 0‡âcp)d¯Ñ‚íÚ »FNooö‘s·˜º‘[w÷nÜ9>‘DH1:šqŠd4¡V&†Q > ±r.Xù´Å„¦01JýíSÈ å?­ï¯/…m©+_*™ Ê^¡©ã˜‡g:oˆä&k5œ'”PÏ#Žy#!aòjY7—ÆÿNmêýM‘WW¾«2*‰J£_õîüISK£Ôo^•ŒHžþªçø×Ö  ×XörÉðž5n¡Ñݾ©.D˜¹eõ|ÓË¢K…­ZW±ƒ>Mp°EBDaH$šò´q¸'AmnwòðLã‹+È|D^5-ˆ½ˆ4`bEÁ0ý‡úYŸ÷9£ÐÓLÉ;m½Ö…³½O,| ¹„©!?rùÂÀ’©A蘑¥ ŒðXËš/àõäϳÕÙ›s´ä÷³ÕúÍÅ_'ôäû–9ü]FŒ¤P ö¸g† •¸î¦É F”&82}âåÏ \ûÚÈiþµß¾‡r³“æyÓÔ7¦3šqi-¾îj7oªï‡§ú²Ùgùj´àÁñyÝlÛ®©ËÞžƒ“õÁçfù 3œC*JÁ¦<øð‰[˜£ OUpk¥Ê@pãù"X¼Câ"˜©±TÊÈ ½‰E^1!œB3k ÀbîJÈJ2hܪÞ76Cáý4/ôØJéL˜ìRÚ›|?ÐàQºÕ¯O.NЇÇ&Éž<.º’$pÂ,¸íþj¸‹Ë.l·fÄt–oÓœ-ïW'«_V?äCYoË ªÈ—ä¥ÏOVÏ.ÎÞ®!Ë|µþŠhKjÎ+ãžWÆñCœ€9Ä ;œa\<§°\è9ÿ ¤Œ8a*v0eö 0¨š2DÄGŠkV¸ø@ýC—ŸÐcùÃpwާ¹àz®(8acJy  GßææKÈœ9kà>–¦àsPNl¥þ` 5±C“¯QHÑaÿ&†Þ¡®Þ¯_³äê×,·ÆÛw&õÌ?löG1ðùˆÞábN)r·ºÕÁrŸSNÒ‘yý=‚¥ÓO›NøB­ˆôü)ïáyöKnÀ/F_nGp`ž²+O¥«•­ñƒJ‘X)Céè|#¡$Iÿ‰ ƳŽüµ}‘+>ÇuT¦¿6­ãpSˆ»GØ„ûÉf¦¶'{¶ð#Ì’½­Ëû¼ÃŠ…>L¾Ñµÿ+^ö2«f¼ˆ?Š™]è²þÒ‘5W{¨èÎÑ/ûKƒ¥_y _:»\oÏp.–*Þþçbq ‹œKŒœKîÛë|·y ãr¢ÿ¾U 1Æâ]µ/Gƒ~̼ÎÎß¾_?yó~ ¸§TáÛE’„ÇǯOÀÞ{¬ìÁO-0–ÐKh^J9¢ÓÙâ?¾báÖ endstream endobj 2259 0 obj << /Length 2563 /Filter /FlateDecode >> stream xÚåYKsÜÆ¾óWà¸, cÌ 3p*[¦$ÚeË™¤ËpK¢„Ç ÀJæ%¿=ÝÓƒ]`9«¥bÆ•JJEaéžžîïëÁ¾xt /£&JàŸÎ Ó‰±&²J³D¥VE]­£ŸÏL¢—GŸß\Ÿ}ùBÙˆ',K2]¯¡™°T¦‘‘ Ó°Òõ*úe±n¶õy¬…^|EmSÔê7Ų\—EGÝu;6ʪ ÖÛD'eó¬l†â¶è ÇϽþîËFLõÆÂ:½±LsMz¿½¸zþæò§ëË×?~E/ÁÌä¥Ä K²ŒÄ/›saCÑ­ó%(—Š/†Ö?ïÜ@²xqnå¢í†.ohŃísİ2m¼Úöw!ÍR0©Õ(ÖùPÔ©gç±JÍ⪭½ ˶ހ7ºžº«s¾ðV5í@~»Ùœƒ Ð2² Ø'p¿ò3Íb”Šb•X–™(æ’iå½VçÍêØÌùâã]¹Ä=Ü ™^”hq–.>àXÑÝÓè¶/ÖÛŠfÜqãà;'RlÊæ–fú:¯*š¡:†bEÝ· WUá—Þnâ¡Wà>šlzÒyÀªìßGS™,®É%xêSû»v;” Š[±(ëMUº“0 Òƒ7εEÕ¢‘qLÒÞ`.§nÓÆa¡¸lVF-:T.j\w[åCé …¡v:&)$ãæô9ù ÷bÏhï7[¯®ÎQÝýlÔé  Rsf“lî‘Mñ{—rñ±ð4¥ò.…¡’¶Ô•MÇí† B0 H°\Óà¦+ÖE×+JXÌ= ÀãSõÍÅ_/¯ OéÕW—WׯßüÝ%íÔyÓÌÞ¹;?D«béu3bŒH±‡–ï¾ÿvÄ”³‹ë³÷gÜ¡"À\f,`\Ög¿üšD+‡ða2³ÑG'UGÊ%{]ýìá°Lk¶á" Ðx» äÕyÌ9ACCv\µÛ]ÿ¤;"e’[gÉ1à?B¶j¿þå×oF}‡ôüâq.ÔÌã=˜zLÚÞì2CïÌu¤É y§/{3þruqõok€ •u»ªó² %íTf(úá” h5êKÖG óvpx¤­Omó´^ä]Ùn®ýä²3R`|§¥Wü»v‘mí2 Û{@0Í-”Ü@î-ËMU`Ƨ˜š Ä¿<†®³Oá•6èFD/¡άí²*¶= ”þÙ#ÞS›ÌƒÆm—¯Ê=®ÁHq7vúrð/´ëƒ–UÞväu‹ªX]‹,è¶ CžÍ¯¦E×][ï›ìÈ^ ÃH)\î7URŸð d£ÞÆ)… k0_»Ç B"–hÃyƒ{Ìç„ùÐíŠ~[ Ôv[ܯ VT@bC2ÂïèìDÚ®¨Yè<^yŠ!¤æ#s‚323"ø2w#N›Èìâ&ïÑ8ë‹ÆÆá<2Ðd³p¤‡áºDÕ…‡ ¦éeë+ŒUÙä.àqÔy¤ÎRMBò;Å1ب'“tôSì0kç&˜Xc™C¡ =çz|6ùrÛÝC×sN Ê€h–cRÁ€K*|að’¥+ÞoKGJ±ÒÂnËŠ®æê†pÉÚ\$g½Ø·³ ¦z 04?>œõù`'ë¹£Ïñ¿xP)5»]í"c^w»z5jðtí¦¸ÅèÆü?î~H’¶‰û äŒÏF ïMÞ ³¤Ï])÷o|ßÞ5ñÕ]^{iØ•ñ‰j(Q©ž‘3ŠÖ 3ÖŽ…Ê’:2PN&žÄ¸Üx ¡¯bŠ«h"…ç¨Ôââ7(Ü–åàÐÊU+t†>káy[R65$pCyNÆÎIÁñ*uwŠLxdy°Ù0›)0I'þ¢A$½œ˜È÷aElï¢'°5n™Î"ÁÒÌoíÏÞº¹w4˳ÊSÐ?*S–¤v ˜Q^ï×^.ggƤn9É À‰aý,=ÜÃü K…°6{úcÄ(t NbWw¡¥4ãé®ÞWIJZf¾½Œac·ŒÁÍ¥OxÜPý¦Óãþ” ÄI˜€ f¤ˆðB«"Øž±ŸT!1HÈX"|ÀÐ%ÎHW·„4+ÍÔ~{§Í׆šŠg£L# ¬gEý±"D>·®?šæ¿4åQË‹€B yœÍQp´}æÕ"”A\±V> Á¬H&²OFà D÷–ÇÑO¡ åò0¸“Ú»pfÒÌæ}þ=æÃ Ûì⪀‘Ô±‹ëALÚ$E¶·fw "xÅ…2.epË…ŠÀÜTH¯CÜŸ!7Ôþ—Œãœ'‘Cÿ¸ )Íþ¯K$ý¸l×§K$"Ül;Iøz¿ ÄSÑ×A(M…ú}árX"ÙS%’ùƒJ¤ƒ€;R#R¿·Hâ'‹$ž.<°ž},ë¥e½ô(äQ˰žÇõQÒKŸ‚ôÔ)Ò³ =s*®­#=ñé¸ÖDzâIHOœ"=M¤gN“žF´Ivy"øìÙßö2Ã8Þá5þèíS#¿WŒb¬ò endstream endobj 2264 0 obj << /Length 2627 /Filter /FlateDecode >> stream xÚíZ[wÛ6~÷¯à£t¡¸lÎ>4©:{Ú´±»ínšZ¦m&©PTܼìoß”H ºØÉÙíÞœX$5 fß|ðcÂ’[øÿ2) ÿTjˆ¢ÆšÄJE¨ÔV&užÜ$¿œP¤ÉËõçóË“oΘJ%)MYry“žA‰‚]^'oG÷wy'RªÑÕxÂͨjîÆï._}s&y÷w*%F€R÷£—^¢¯™Ib˜lE²ò:¦†s"¹èá61$5ÔI¤Äj‘’ªÔ ÑØ`†h©’IG¬^•8 9ªÆ0‹OcnGyí'3b£0Éï~þÍ‹åu1Í—ÏP{ÂDJ´‘ 'FY¯ïßî‹ # Fžt¾øƒRìV»-‘V¡¼ºd"ê(J0zÉbÙš{ãnªzîÝdÓ¦ªÃÌnbËy1³mÌÀLÈ¥)˜!ˆ’Á3Ë&_Œ'änVå´)ª2Ü¡^¼˜£³V`®.'MQ†¸‰žÍ‚›®£»kj†P–¶BÏ@» Lèiä¼ ZÙ"M!¸²› »FM!F¦— »Æd„©õ˜¯£QÔü±câ:Bwºð¿šÑ r];ž°Q ×¼hŠ1ÞT:ú!›³¦*ñQž¡ýNE…¡ É<Ë!Ê\©U?Êó¬©1¡Ÿ¢×ŨΗ —9DÜ+Àg0Èç±#âSéÒÙ ò°.&3ŸMÓl6©ê«¢Éfþ»EV7þ U9ºEc?áôòÒs…C|ަŽDX f bäfm€G„ž)™N$ÀœFAóŽà„‹š Bõ!¥«ÀBÛMVnëáD¨!¸ñ4Q `ôF'\ï% fƒ¢@¹“ú[ÔRÂhEL8J¥›µ¦h J%áð`/"ƒÁv=ñ'1%þ²ùŸ•æ¬c ‹Mªg̮Ŭ¾,¤|WHŸDôh(qf0¯žA  @J þ˜¤à}-Úºú±–Úe­XÛw0¬uK,GhWdûË(†e€èÊ£|.¨ð>×ÿ•edþ¿Š®¢]åI}YDÿ²«È³ˆÌÃÖP?PÜ@…£sðõp$ª@y˜:Èy];((ÖG›öʶâI\8Š€ú›t™)pφTïâËž±Ø½|™ŠÔÓûc£Œ`c;Í8’ˆ:üB (@rñ%àxYyB8Š4©.®VÂÓ›ºšû+?:\l¾ƒ¢Ð5E¡Ž$÷´´ÄˆxÎüÛØÊ‘ûŠš0xé|pïoîë¢q nïQ¬¦%KçÏ/<šVu·”ùQølòz¨’·Gl~|•-‹Áw°Še½l&ŸÆJ,2Ôè§$¿É—& ˜-£Y ‘.­; ë,ŠàÈá>Ô^øPDŠtß²Ÿx ÀNJïw-Žë75}0ïKA¥â …«ò÷ª˜Pë§iøþB•~1(¥‘Ò>„k³‡JÛG/v±Fxñ®Ó‹¨EÖŠ¡Çí. …-hõ-¬rÇx n/£µv³s =h·r.wBï#C"Å=»dðƒìã°‹û¸ßO wÃä:[i4Ê &Ìöêhªÿ[ ){S$ë̆íòEŸŠÀäL4´’«Û«xÏoÐïhE7Õ_Œn]; ‰ –^JDº&Õ4ÊÎ4±ÌöRíY”eä¦ »Sš˜vÓe=­Bé[3ÃÝ ±Sº­¶S "]àúNm½Ç Wˆ`k¿tMŠíz„2yq›—Ê€í)(­)c£³„fŸ±À>OTh…ĺ€"uYB•ªŽ­_^ªh Š;J•†U~¦JwZ*†YÏò¹ŸvœæÈ^ø¾iÀF³ïñíµYS,fEŽ}KÛvÉD˜5Û¢£eÔè:Â,’&? .Á)F§h­Á†OÊBËÔ­éU6mÚᆎ P^¼CC4UþauÕd¾x˜ÝTõ4ÿ6º·ò>ŸpM(¤ø´dkWÓÛPO8‚&4 Fâyrøý££b7åPªq0½g{Ž›D#“üЍƒ™bn}±}e².±@%k½ö{(U}Ó ¤@Çÿ BÄ{¸DÖ³±Œè…}”´=#gQ¼Ñœ;š…L}oP*Ö_ž[ÖqƒYÓ¨:ÛìN*kû1d«+¤zé¨ßôVŠ(j»‰¹kÇØ/öbž—ˆÚö>¶RÓ¡i\¦ß=°½ Ëd×®'ѵì9ì5¬ ¹ñ¯| !2spq›‘?^9Ý¡ Hd ²”4Ý:Éé‡Ô¸Ó†T1Àã§h„£>äQaËØd¥ÛÃu¤ŽjYÕ1U¿ÚDšMòajú\òm”½ÀŽc3àqk´dêÃ=~R(Ÿî¬Ü£8²àѨ¡Õ-JÓªeyW* i7“÷9B<ÌïO2Ú]‚);j°³‚¡ô€ƒÙ®e®µløÛ\‡y7€wŽÕŽð­Ôåð“­ó9ÉC'¨^‡o©>˅料ÑäùV±a~ ¨mÌÛ¶›¦ÃþÚoÞëÙs©%©<Ô|¦Mü¹`Uø9yÝ÷Ž·w-§Œ¡&,]§æê`¾Bôö8"›âöŽ÷ÙièNW‹¬„¨µ=¿‹<÷\µ®VMQæmÍöë³'{Á°»ù,ËbÆqë6ÄAìiL¢Ðz…V³Å×Q„ͪèI‡t,öA&}My™×·Ÿ¿@Ózþù§ücUä©õÖ{%vp²ÏÙ:©`ƒ:½YEµIJ6¨H¼„é¡âD"S3Â1…5xsúó‹ó×?ùÍÏç—¯ßüÓíz¶ÞºÙ²ÍÇy6ZêÄ‹:ÏÜîLq5z••«¬þìo8¥Ò_a…xõ÷ïÛR7܉¶ uuûSs_4wþªÅ·.¶ás·c[>õ7?f›mtà“ÓË“'̽|Äð"¡•ÛBLç'oßÑ䞃uD¤6¹wRóD Æ,¹8ùÅ¿…µ”¹BÁÃ[HBx>ææb W[YkÜ܆zC.ª<ð÷gÅ všEi#7)ÝP~Á]:T††ÙùO—§oÎðÕ‡ïã^œ<õÈ„Øò¶º 0Òñæ4µø°±EÓ^NuÕ„9ÿzqzñXVË0ø¼ºžgí+;ƒ<ŽŒùýéÅ‹7ç?_B"[_!‚†yQÍ+wø )ÛÕÌÁWޤ>xø¹©?×yx3¥¼Î×5ôoŸ ¹Q+üä¡j✂Y³¼ ÷á<e–yP…Ñ8~áÂḠáq•L}5èLœ…½ªí/¯i6›åmx›&<‚<O דsãìD±®X8Ð =”¾˜|®óå´.è‚8@1Š \Ê|]€ŠáÓªÍuÀ}8ýº¸ÞüÞÍÖÒ¢('ð§n‘hš-ó™Íg5TrpH彨‹éô®w®çå,܃V)Š V{^ÄÓc;O-ˆn{{š÷< cÿ``¿t endstream endobj 2268 0 obj << /Length 1376 /Filter /FlateDecode >> stream xÚ­WYoÛ8~÷¯Ð£ŒXž"Å>ôpºÉ"=bwEÛE¢ca-É•äfûïw†”l+QÚ¤(‚€‡†ÃoN~þ°àþ_e@áOÍ4QT©•±‘AmƒUð~BA¯÷ã‹åäÙ™dcd¦–«@ó@ JZfÁÇP¡§c\…«¦øD™´›l ­ÂOTÑEµ«Së×gùÆžN#Eé‘(YÍ(²éçåų3ÐÎ(™Ñûh N”œù«Îß,çWgS#ÂçSn—óSàú//oîXÔlÁÞŒª°%šÕv"•?Ü Í&´Îëà0*áfHÅ!ϾNU&›µ2RBítÆ_ŽÕBg?g=™FRc¹Î!hÌðcf&+î\£ßü<É2ç 7÷ƒ·/mÑc¸F¸qÊÂu§b_¦¸¸]CÐáÌúøBnëÊg(ba›We²¹£Ô9/Æœ­‡NÌr—dµ-]ùCÑ^ƒ6ȶƒsë@ÚÒña4w‚ë4Ù¤» dpæ] ïo†ÐˆcwraH,e›|Ìå‚hez‰víõ6v³ŠÒªlò¦EÆá¦r Ñ¸LÊìÀíìÓÔ§“„ä Ü{¢+÷Î&Py:ZLBXÈ¡óú’R÷JJBç5ó©0¢·î7Ö¡r›‘!d¿—ŽœA·aà")ºîþÇ(dæš}V*Æ ý úο §1ØÏtgÕXäý´‡ô‰rÕI ”Â Ú 1B÷‚”ŽY¨Ð[{©Ë »¿o"¤ß ý@‰=tåЂ§¶9ÚVà™æñþZ6渘fÖþ>†ˆÏ"ÆŽ iÔ¥öíê{L«€ ‘ñýpÜé~t_©oó®I˰ºïz<´þ{}%¥¿'âêàà«ùßç x#ýé?ÏË·Wÿ<î±æÐ>œG¯îËÚúþƒ/öeR§k?å”*?Cšsñ׫žÄLæËÉ— sT‹!]’"&Ô¥Åäãgd°P"ࡾuRˆp7ÁbòþÎ%i 0œË8>p,¬\/û!ëBaŽÂà]ê—Ñ.õ íª ".NÊ «¤³°ó7ï>,Ÿ½ý°„ÌR&|7Õ:|~õür?ô¼  ÂS³Ü×¶öójåGm«¼lý¢Þ•¥KX\$_mÜ éÂ>–8nm $¦8¤L^žÀy{cëÞfôûñ+PþņÇéÜt™ÜéÜØ$ÛÏrx©x蟢p5¹Ú•i»W‘ÔuòíXDÿ jƒ+w‰ZÊÂh,2O$ÁW2’Ö]ì218wv$! ëÈMŠ3d7îk•#Aq®êªð³Ä;X‡›=ù§J.Æ ó'DÍàÚ1ž¢%aûgºíàâxÏSš]šÚ¦é¸«¿ÐÓ³|OX`wŸ‰7q¦G 0Q3Œ^Ÿ©Ø*YÐ};R-ð§C|TJ |Ôú¶Ì¶ž垨õ»îýë<½mýÊÑu›‘ºŒëÛê×öm5Ò·_ÙÔŠçñ­›AŒݹ¿šïЃ¿cUÙëûj,ÆÁÝÿ³ØÆK endstream endobj 2272 0 obj << /Length 983 /Filter /FlateDecode >> stream xÚÕ—]oÛ6†ïý+x)6ÃQ"s—zvçbMR[t½àlÚ"Ë®,5ȿߡ(9–+c^Ðe‚„¢DžóžòA¾"ŠVðûeˆÀP$’’À$e€rƒ–èSÀB‚ÞïÇwqïbPD)VB0/QÄPÄ °)^ Ï^„¹ò”2á-ŸËG?džö9óž|N=Mü„÷d¶)ó¹qóq’šK éÜ„—ŠÀê‰?\ŒÁ#%XE­‚L{éÜO®ãÑtìKî]ùLzÃÑ¥Ýô] …<´"pÄ"4 KZ’Z²ò<6 2›É&«g T?i«Œ$»~Jû/"Crh~Ðaÿn6š½Z\¹3NÄz³Xë$³vl*(Ç"P߯Y,‹òo…‰&…·wñÅÍ] ”GHïÖ"ïjzõqÉ=S4“8äa[u²s‚.ݰۚybêwÅó¶–[å3ë'YaV&oRz] M [:kÆU™ê¼ |m²¢\ÿ»m»›|ajk›¥g©.šw[ëµÙO»]·ì +7¿ŒfÃéä6žÜ\_ºMP£>0QuŸu:/­HS¾c½:ûr¯®^}Ò^\f>õà#õæ¹1™Y¸ïs½3ØpgÆtõ S3ªJÍíÃóÎn¤7õõÌ·zöÎmZñ‡pßÀ%Rï¬+\Ê`hÖô¡ ÷hÀ¨ShM•û*Â5B0gܳîd-:ÅSÌ(;Ö’Cí0ëÖ.÷JržvÎ=µê9*õŒeÕãΡnØPAÍ­-î,MG¿OfÐÎ௓Y|3½ýi WØ’ÛÎ½ÚæIêA™|içß®O”›E²L6×î ›ÝÞê‡2}î6z´iqôÞˆ¬Šã2r&X[ÿ¶ËĤ«SÈqØÄ­t‚ï¿Ð~P endstream endobj 2276 0 obj << /Length 1533 /Filter /FlateDecode >> stream xÚíYKsÛ6¾ûWàHMMÀâé™ÒÄNNíDR:“‰sPdÚV+R M%õ¿ï‚ %Q†YV§9t<Ôr_ø°»Ÿô…prÿ¯HAþ)g¨bÆb¥¢Lj+I™‘+òö€¡ #¯×_†ÏN$'œS§” Ã+b1À¨Â—†—äCb¨ä½”s¡’ëѼèOª^ F%L±Ál^޳°>™L³£^ªk$ERÑ+ÇPŽ÷>_?;AÝœQÇ÷–IAP%]0tz6<îŸô,$Ï{Â&/ŽüK÷\FíªE0$¨‰ë ©ÌFS-§ ]¿šãj2+ÂÊ»Wy‰)?œŠÃ)æü0‡9,}ÕlÕJ1szöæÝðÙù»!^0Ê&ozÆ$ÏûÏ?ÆPÛù/,Õ Í*hF·‚£è\sáz.£âz>•a‘Ïò¬¨æyX}™–‹bžÊÊÛ°ðOŠÃIQe×YÙFê·ÃròÖvÞÚλ¶óÑu‘U“ñnæÖAvâo2ûòxð¢úfxz~v^ÂÌt‘# eÎñ~VÍËÍ@RÝx8‚L^y "ªð|<ë¡­$»`\'Ùò#™\O¾ú>«%?ùÅ]°+åª]MA"hZŃé›F VÅ$ø€‰÷AB(b¨3¬°Ô(ƒbеÞÂÙ£k`P%,î åÌ)Q•J<¹‚¤ÓÑ(Ë#Ê𻘮n|’jE0:Öœý?cÑeÿFpâiÁñ˜²{ÑaöžÝ&<Óñ6…Ç¿w°Ut“ØÉ1T˜Ex?ã‰0¶>¨1\Õ¡6ÂŒ±˜FK%¶ŠFˆ/y'RGµë`b»mlAªº‡PjSw¬¶E]0!c®iL/ÔRÆD+©˜ˆízpuwT¬DT(åóÅjÕ¹õürÿŠÔO˜c!Bb6ZÇ~ KÔmg^ü·æa“y½É|Ý ‡_x=¦p"˜¦Ü*¢@S[4Î>|dä?ĶD%jùV‹æ„c{àÒãlJoÃàÒ5.4§Q‡½‡:×Ôg‹WQ‰Ñ,p q˜ ŠãA»V«ÎT·f82É`t#ŒPK”´”Ãz  Ü"PÀ Ý0;Æ–š°PqÑ-w뛎+ŒbyL¢Ûo}ÅÃS¢ÜðïªâX…°”­ˆ= ÌûQ…&N¨ÔZ_G±pàԒ̶R5W°X¥ Zpn‘Iœ‰¸6sŠv_YõÊ4ßSVGÜØ³Úm©*¥ífuÙ)Öq&íâØå£Ž*cwÙ&enKÉÇ+ƒ(T¨APcÔ R¢ýÆÖM]Q°Í!ŽNº©DÜi’¯ÑªIð`>©FŸ¦YW¯fe´È9Ê_/êêÁ=Þ02¬ã%»]ÌÚ£"ŒÐŠÑèt¯LoŠVí`Ò?þãt€£}Ðñëé`xÞ¿YjÜyt¯Ê.é8›}Í< +IF^ÿö2Þ‡Ðg‰LÔ :×+3RŒ¶2£H·.ßãÍ’ Þ,îñf¤Äwø0)ï¶¡Ð=ž´ïñäßq2Ù‚P«½ñéFÓx–žfŸR£ÿ³ê«V?©V#ÕnTK.©–\µPOÃ6I•N'Õ :<ß@µýû+TÛ/7Sm¡üZ‹§ðlÀ3êöų±ŽI» ‡Ù@Ö`K*Ú†Únžù>ÓÆ.Ãw Oì'¼ÍLûÑ»OÛ½Ç0mx mvÀ‰‡^‚J¾ÝdeE2C$J†¦Ø,½oƘ6)m]Û8Vp”^—ÑaPà7c¬žc·³‹Ó Ç&LÙÆ4ƒÍ¨ôݹæ«9¼YT¿ð®Õ7þkÛpwû5·Ë›Q™ÏŠÉøÓX_Êìös¨0Ø€B=™ÞùFG}šõê|„oo˜çz‰®>}@ÒˆSˆ HuÄõ€„w~@ Îe5°U+tÀ™î·¯ål^MŠ#–†F3Ýú{å4º ±,,Ë Î-Úýøc÷ä 'ï-DzÎÏkßXÿSƒ"Úì¦#jÕ‰ÿ ÓÝ endstream endobj 2280 0 obj << /Length 1609 /Filter /FlateDecode >> stream xÚÅXÛrÛ6}÷W°O¥¦‚+Az&®-»Î=–Ò™N’Z„,NyQx‰ã¿ï‚%R†'éx,Ràòà`±{v¡/ñnáÿÒ+< "’H`J/äa„Ü«”·òÞa0ÄÞåöúçâèÙ'!(‚z‹•'©'F^Z$ÞG_"Î&SB¨ðo—Édʤð?açe[-•ù~‘fêd2k´Š0XÉçÅ‹g€G0ŠpD4:ö¦Œ"Á#~õf1»¾˜„Ì?ÐÐ?›è—ÐŽáE I¥7¥€Dƒ”ºU¢«¶X6iY˜o@Iþv|¿cà!ÞÔxõæÝ‡Å³·pUŠÐ7‘Ò?½>}=Òó§1¥! X`‘…AþfhX®iU7æv´M9-ŽíXÏ\;°ïGXµZ–Eòd°ýÍ™ŽØZ?œÏæg×WïWoßœ˜—`ã¥á(4æge¾iUƒË󛵎ÆýÛJÅ0Ú˜áe™çzwô“dBüôkZ—•ù®©^žw;ãre±&Túw:LJ3úK·¢Ú¼ÛÖiqkÎÚe–&¿[qv[Vi³ÎÑ ¤RÆîÏõìï«9,×¼ú×Õ|ñöúŸŸßî³névWæjÓ¨ü¦ßŠ1ßíЋ—çýÖÍG_ŽH—ÏDç$…¡·Ì>~Æ^ã ˆßï:«ÜãŒÂ5óæGï$6@d°MlÞ'¶*âO˜p•%Í÷3|`ü¿¤zÝÞTeÛ¤…²ù „ViÇý‰¹ýa>›ÿøôv?ÛÚΛ—IC:ÒrhÓ$ɪq¦›ƒÙfÛ¥*TÛtã~l.Mš«i¢6Hh_‰2‰b~Õ÷jÙôùf¬ÊÆ¥qvl&æ#²”D(  tŸºÈEˆ‡¢·ÐdØÐˆ#ÊioÔ¸`ŠX4€!dži¥6•ª{ž&Ñ·kÎâZõ+j³ÚÊN¬ÕPßÔ°ÞÞKi7+8’IDÃh¼sf?÷Ã,·‹¿¸š½:_ (.þÁÖK& ¥¿èT0 ƾ‡}oìÒÚ<5ïTí²S=¶ªÊÜXÅf nssÓ %Œ×FÛºLƒhu3Ö†$¾_k¿F‘¯â¥–ÖµñŠ º¥vN±Ÿ—Ϥ͌iY¼5µÚj¼z·uÆ…4+2se¥Dc¸Á·õùÄi„ ¢¬Sþ’pãÃh®2ôŸ;©…H·Uã Ð0¡Hâ§)éÊ@gåd%PDC0Æ}Þ+‹° w“‘¦'¢žÆŽ9hÖäC?P1°aˆFlÏ £ÉÂ"Ü`Èh¢„éÅH]TzX=Ár´ú_Žˆ€Ê´3ÚU=4Í™¢0cGœ Øt`õÜ9%eÛMvà >aÆ|"4xÀg\©)‡Ö>% ±_¬9ÄD_¬Tâ½j=Š*sÊ(ÓdŸç#Áe:š¨íÙ7b’@8  ôàjò.àcrã”Ù‚ ÙQw s1ô+qe å5܃Þ)²v(¡‰ìrËBþæÂ“ˆ„ôg„aß­,àSbNw»Ÿt”Yºœ9$aLš# ¢7°²ZD©ÿÇ?9?8k#m;àˆ­48›Ž)ƒ`L·*Ðôýã\y/LÕ.·«5Â7Õ'ן7Fø»þž¬c]hú ¤GšÒ¼­ ¥oËd½1ß–ºJ¥P.ºv31W¦x S¶Bm†»¢ß´Ð/â\e÷vwí~œo²´iåzN`;ûžÒs³­òIÛj­ŽM™åpT€hõ¶LÆÿÚ´qΜzJÈ=‘Sëæ]µY6½K“m·ã:ÎVÓ<þ–ævƒ]QÉ)ât›5‰k^(¢;úÏM¹¥®„F "ð4íuÁ!lЬ )94¨f6ʬt¶-†sÓNæ§$~VèkàÖ¹-ôžPïg£j<öv¥¾´ªXÞ;·:@úî1±ƒÛlÝi^æoÖÐ;!Éê†óÈ yU‚þºƒóëø¾?2º;2¿Dæþe•º~&±H¯Ë$…brlŒ_ÄEW;¼Á|nñæë¸ÊãC¿ºìá]¨›êàcgz‚¡ðÉ'ŸéG?ÚíUÐPŸ´=PÐ/:Fž‡Éÿ'¿. endstream endobj 2284 0 obj << /Length 2283 /Filter /FlateDecode >> stream xÚÍXYsã6~÷¯à#U!¸ANŽªÙ‰í8S›ÃÒnv+É-ѳ©áagöa÷¯o7R¤c«RSB`£ÑÝèþúßE,ÚÀßuTFþ©ÔEMb¢D*B¥NdTçÑ}ôÝA]Ï¿,/>¾’,bŒ¤JñhyA‰‚EËuôClˆT³9c\Å›¼Ì3ÁâÇûz6FÅ?REUW¯r÷ûªØå¯fsEi/ÌA–Ç5¹O)ˆ³ÙO˯>¾‚]%)MîI£9O‰4Úmyóõòòöj–ˆøõŒ'ñ›ËW¸èÌx°<kQÄpÍYB´NSÓÝÕU×%اzÐzk„¦ãåóÀú¿-.¿yó®ñ»î«õ>+Êç“M}Ä¿¸\¼¹½ùvyóÍׯܦN£eM'~—yµy3›K©âv›»Áëo¿ÇŒël]d;7yß•«¶¨Ê†ÌæÆ$ñr[øuýs]•^Áÿ½ÓÖs·ùv*Ê›¶jVÙ.«Ý¸Îw òP4m±BëÑ\&ˆ’©3w±BµÛú¿3Ì’j Úr\JEœ¿ë24I›[•S´_7ïÝx×n…úÐ{Ûü²ï²Ö=‰0Xuu—(Ú:õ;HЬ.šaG¯¼ÈýV]ƒŽŽÛM¾†. ñ¶º<žޝël?_8Ë÷ÅRƒ§i¼Ï¬\eó`MœEKœ-ï+ Ç_fûb×Ve‘•nóŸÙá°+Ð T‡çŒÈC@wn:ì:rf¥÷PŠ3uÞt»¶]çîuÓVu¯OIÑ/‘ñfWÝYËíŠ:s°H&t@k3J¦¾NC3Ó`ßFA´"N¤`Nôöòï7 h[Ζ/oËonÿù²þé÷œ4Ð7u}míšè_³zµuCN©p#¯Þ~ÑóŠÓ#xSŠ~=ž>¡ÉÙ./[÷;k«}ó‘_åwu‡ á·aô¸ÍkâÆo«o󇲸Wõà”~‡‘!—Ë‹wÌÒ1†” Ú%IR­ö?üD£5̃µD@´RûH Ï]´¸øî ^&™&œš—é#/[Ab½„’¡ÜŸ…‰Y›ÿ¯DLþF"&~7£=£:nö•oø[÷Æõå¬ÎV-4K”ì|ÉšöÜ 4S•GI÷ëq[xÀ¶?{iêßöÈŠ<^ž“𓯉øÃ©‡'–ÆÌ=,ôpß9ý¶¾¼nŠÖ¡'¼­ó5 œî& [6mÝ­l]ãÄ}]íýºa¶ióƒ›=ºj¥OC•~±¬j›¶?z—Æ‚“=®]áþÔ=®Ý·èBÔá%#˜˜\”²_‚]ÊR¥ÑH8‚¼ì!ÚšíÀØÐß7žxh¿ œaN0 i=¶bALDŒÒrÚS¦5Qáâ˜À\†Ô1îSŒ!Öw'óÁîeˆV@Õ\g9û€£Näç/i§&LõÂÍq*Ãô=ì“ ©‚¦D 0U$È«}ÜæuT ¹œ7ÍÛ`çã‰x¾óià|“Îçî{|t¿äçßp9Kg…™ý6ã­e2‰ }ó‰lÔà»ä²¸qß‹ò•ý4…;8VE™C ;Ux#5ƒ‰®,Z7µ²WàÝÎý²D£ÚuûÜ^„-I©s (yÿуÎå”^ ×SÇ3§Ôu|¯®¨Á0o_NæÍ![ù ÿM·Ò©åéL‹3>¤2G>4"1ÂÏ„“ôC‹§YŒ°˜A˜é`ïJ°Õ@¢%>°×ŸK;UÃw.€©£‘žãŸre‡øÚ³— “)RIh$ÊDñs°Ÿ B‘$âÃ9ÿå0ŠñëÜîg¥Î¡S”Åô¬„¥¸Ó£šî§ÉÇá§,¤š©vªqPTzŠÁ0µ>¡Êî „²Ù7âä²þ|Í™Iš?ÇùŸo¨I‰à DR&çàÍOÀ[Égüà0ìŸÁ÷ø"¨‰+¼¥:Œ’­½L¨ž)ÛÜ df‚Öx§kí}öù Ô`϶ƒätƒq;›ã‚Š\úW~›;£>0Æà'¡¤/wm&k€Éýbׯ endstream endobj 2289 0 obj << /Length 1383 /Filter /FlateDecode >> stream xÚ­WYoÛ8~÷¯Ð£ŒXJÔ™‡²ÓuЦm¬,°hûÀHtÌÂ’\qûïw†‡m¹N´‹ àp8œããÌhüÅñøåÔ…¿(KHD“4qÒ0"4ŒÓÐi…³tÞO(RçÕ“ë_ùäÅU˜:>%Í|'_IIÌb'a”D )/îËVð^”S/ "÷š×o¿éM@)ÓÔGÑë×—°øÓOùõd–O¾L|å¡ï$“ДqêÕäÃ'ê”À¿v(aYêl•Tå„,€uí,&ïk¾ãû$‹¢]%q’’4еW “©çû`üAÔEÓŠ©ÇíÉ¢ÚÂì¯äZœƒ“”Z9²Ì¨uôÅè=€: Hió›|v{5M™{1 R÷åì\w ä1ŠI‚ÄñPäMÝpß6C/k¡ñ².+bzxÛ;¼n‚½[Ì¿l{èŒÑª)+.ëSqŸ2z9[¼¼¿ËçooÎõÐ8Æ*H…'ÔiÒT›¡ÀΨۯ„&ÌË™ÛòRòµænO> ÷)±ꢗMÝés!!Û=3F¥+;½vÍZûU¾9ïÁ† e6+ÑÊBÙ톷½¦š¥¶’¯›U =HWwxeîL=0Òô:Ô^Z]}£×íJx²:RÈû¦’Å^G¢tŒB 3›RÞiâ^Ý¢Ö[¾ÑnˆºTákÙ´úÁC6êP”E`B©nA8ŒÝ?añ3÷Vß ÖI–Pu!HIFà‰S“%oòS©ä‡„Aw8ƒWüÔ'uè@¼3”‚Ön#ÓÚ3`®y+;¼N1¬ù.³âÐ$œmW”¸‚ÈõÊësk´}Ÿ«Ê7Ï h0†«°ßŒ ÝeÛTH1cXXÞ£à•ætðV¼Õô>§ÑÂx]û¨E%€ìÔÅúàHöC©ò1F}w+3%°ÃèFUÃÉÚÙðºø†®@·‘R•næõÚœ˜jêV f,,=ön¤ošGQÝ‹v§<{ÞôÉXLRèп5}2 #gî¦Ït?}.Ëá9Ã'ˆ=cö´üÃgüäð ® ¯òl8û|¶Ü{ôƒQ4úQ4þ~-—ýðÜùw~óî.ñö.‡E½ßM“Ľ¸½x3”¿¹&©ý9×ËåUþÇ&EÝÛŸ9 ©úLÖ½xíS)<Œ4Á8È+ìÔz{w¨ Þâ f}¬É¸ôùGŠ®Ÿ£Èº´iZÀ dÕì´v?Òw€äѼ–úHÃ[¥„¦&âttŠð?ݯy endstream endobj 2293 0 obj << /Length 1278 /Filter /FlateDecode >> stream xÚ½V[sÚ8~çWøÑLA‘,Ë—¼¥)P:³I fg:m[6°M…Mš¿G– 8qèÎîd2:’Îwnß¿ b¤ð?1 Ãó]İ빆g3„mdz ÁÄøÚàˆÉaýô.Æ®eŒ|ì#H ع#—‚Øøn~ͯgÓ»`z{sÙÿ|¹v¬¡å"ì{Jý:\Gõ:¬xhÙžY-µ0—gBÉ›P„9‡íVí“Rø4>( ›cßGÄq«ÁXtùA¢pK«DÚ¬,”釬Z*)Î~`B¹àEßÕa¸Ùˆ2ŒäÉ’opè0s ¾“+4·=bÈ&Öînù¸ERÏÚ˜!ß"ÆPÄl_}ŸõÚ¡þЦ¾ùQÇØÊ;u¤íy¸3D ,² t}SF,"v̘a cV"±,Ë šÀ7Áu:ˆ¹U'a^©Õ‘ÇE¬ÂŸ…Q¸Tg­ŠI¡­&`N”¹ÚŒÐbŸ9¾ÓÎÁuYÄM5¨§1 ô)i¾S¥¨Öü±ïQˆ®+ë–¼§,©Ø\ÒÌ‚Ûj_&j½ê[ŽY•y©ý|ÓÔAêF•rØ™g#‡ÒãD3× d3H'¹rxQd;Ù/”¬’£:¿|Ûtó€ ¹ür/²8å*5–‹‘m{*7L!ȺŸ2U·Æ£6)%ÉhCÕN£¿§s dH)5?OçÁíì[ÃÎ ‡6óŽ-YP*+ã#æS]Á¡üPf1óK½~Tt’§$éßX„EÄ·Q©Ž®EEˬ”.7À£ ÷«GšDäq0$ÑcF”÷¾ÿÄF ç_ Œ( ЇF+7l* ´6潯jÙDÒØgÌÒ“ˆ¹y–žD.²}¨ô”I\'бÔUîÍËZD\íÇÙš_‚›Qâ㽫É…g›˜éM0še^ÉÚ]NK,C®åê¼j‡·õ½(ë*+¸ÊÙÁëŽÖß×uYÌGóóÁõåz«Qó2Îìhº·)y¬'UÝ•aG`g¾ ^pÃÆ‰Õ¼ ¶‡MÆY¸V‡I]Dr÷â¨ó:ÿT$_‡la±úa+æ¡H?ós>qÈ'þØôß]ý±\AîÑŠ_—«õíÝŸ†Ètnš…œ3æq¢ºK%€ÙlΟ^ì”Üâ”âãì/ÂÉo¿¿‚jÍ/ê{ƒqë¬&ï°ŒêPê-8g¶Œyt÷­#p$P Ű䇙|K!«Z³ªö*ø|-·â%JÈ©¬·YÖàsê@Ô|vŒÚòÍúêîzûÓ MöË«ï# ÷"õùRïïUµodyLi~©¶¸Ì•Ìr·Ì›ªqeÙä÷¶Ü*à \#çÊC®%üÍ7›Æ=ä ÝI¯,X¾yû~ýâöý§ogQ4½¸»x}^®~ 8jFЯ—8ÜÌæ<²Î¾%ºü[Ÿ¨-ud©¹PúÉ×îŒØ„r-,´Sîì„£¹gÃ^ƺbÂßG±/œ{¢—Õ!ÙZí›ÖW‘¤8ˤ|(Úsüü çÌ}Ò_M0„G]LA›Ü©ª;%¶IÓÈÔòiÈU8¢¶&®O#!ÏžH_ºoæÕfÓÓ/' ­? ãwd?"f‡ŸmÐO ÔðPGcil €R¯%dØ£^N§m=†!4ü #ïeÞw¹Hv–ª*N¢G]É\irÒyØÈL|µ¨ãuI¦|N!ü,GÆI÷äUf^=‘`çþ¹DÇ¥.óAT}L=¾Ç‰R퇭 ÉõõúÑÞ@4F³Óšçå0!ê6Ø8^& x “ònkëYhƒ‹k GKô'ΪS”GZž¡åÇ;Þ 6¯LÇÄl¤ã]„ žîx^úýªØ×ºëÐ3s†j(Óµêóé…º ]eRÖ ZàŠŽ ÙißI5Àt0ö9e-½ø µë†ÇЖêæúÃ^¶lwÛlo¥>mƒˆ`›¤'u¥mzD5fawÓÔ%ÇGÍ^=bª½Ù<æ|ºD¦9ÚÖ(ï)Q[ÔTè¶Ùª·ZÐ5˜ôc²8‰ºïBÀ¨GÍG"¨ìv ºDæÚÀÔ¸øÅÀl·øÔ®¢01e¬µ`Û½ÚîÚk¯c0ôÍj ÕY ò*à•îðíé ‘èqpÉn®GÆp½4O9ñ¢0|–Öãðö¢G[$¼B6@¥De¸lÎ7½¬Ï7KRó~£öi³Wö%Yã2ô•%oD¼`qF^{Q™vœh€Ëd»ý¦«rÌ8E3˜¯¯g¶/ôß{“ /½1\ç”/<îû?‘ãç]ÏŠ$/e³Ï¬)x9Ô³ÑË! Q§Û6&ø¡ǕҪÍôjôÞÙÈ}1„~™ÿÝ…ñÂrr›"ìÿ|‡£>$–ðï½Ãõþ%s~wg¦Q}/lO«ˆôB àÿp¤¦ endstream endobj 2301 0 obj << /Length 1169 /Filter /FlateDecode >> stream xÚÝW[oÛ6~÷¯Ð£ Ô*EÝó–¥v–kר04} %Ú&&‹E¹M_ö×wÈCù’¨[ìa‚€‡Ôwn<7úÑ ½5ü_{Gà/)² !Yžyyœ$NóØSÜ[yG€Ä»>¬?,Fogqè…aP$ õ+/£^‘ ¦Eå}òAOÂ&þš7¢úZËñ$Êÿ$d.;UrÜÏDÍ/Æ“„0X`áøóâöí $‡$(H=Ä›D4HâÕܼ_Lïgã<ò/Ç4÷¯¦†é…Á`m~*% 2šy ’Â%µÝRÉN‹ìJN­¶F¤ä”}2ÀÿË|:ÿçÊdîZ§u+«-ÍçCJßMçW÷7?/n>¼¿@x~[4 H‘#üš7\1Í[¸ú4òYƒ«h*þձϔbæ"ŸðË—(ÍvƒÛ-Û9V½áÈ`ÂJ3¿dõDª¥Ð¬nñƒpÂ9;•À´Ü: q I(<êeAÞPŒC_6Giàžñ'ŒŽÑG+¢È—càÛ=\Õlç®?²­¨µl„õ7ŠÁ ­DÉÛ`<‰ãØ¿¬[‰ÈÆMÕ"ê \Kð ÉÆ¨è¶FÛÒÚÊ‚å Ö…üì:‚ï¤1M Ü\üï§¿ÞÌ!ˆÎà›ùâÃýo¯Ë&ši”ž§Ó•âå Sê¶ëSš!eŠðöî]_d£ébô8 mM)ÇEyî•ÛѧÏÄ«à.?ˆ ‘¾XÔÖ‹# kíÍG¿Óâš@–úAtìµ\©×´ƒû¯tkóÿ³PêÒ‚Ö—)ŒÅ*ÑÓ«®)µ€ê4%Dr±-r '®’ Gjiªå ia Hó5(Íú™æt2å´ñ {Ñjè@¥?Ç®¢þ›T‘H3µH“Øç3ÆáÎ$˜t_„n\_?!]q%°Û쥼µÉf?1+ZDÙ)@n:º‚ç5$ S¢=èP…àNa×¢»NØ€Cín†”¶Ó$Ôß1¥ bkìGpp'7Íd¾a[‡´á’š£A#”¢ðm!Ø&¨“6 "^Æøùú ÑèÒ%tlÀ.Eã¼sFÙ ;Ofç’ËãDKU ¥bLƒÐvÈ«ˆó ·Â­%œhÕ•¶§™ƒ¶ë½1;½±2 Úqœ 5ÞsPvF8P·süW0–«!¿¢˜)¸E‹ã3ÇH@ž=B†¼ŸÄ4²å~–sQXÀ6a¦ÄÿÆ•tGOôsÏÐ6& ¬´™h;kh¼îp¬W“渿UäìO©¶¬­¹S«¥©z5ü(Îæ#ЧCt {ÙnW +)r£=2åöZk°ÆMSÅÛ®ÖnÆ¢³pÚj©zvÑ<ÀëZ.û ||  ĉ¦Ù1F}·>¿{h˜@ö¨ÁÙ •QXŽèøßÑéÀˆþ‰©ró73úù_ÉèùÍ…›:ŸØ³š7÷æµÕ¾AzÆ—ªcê©W’£šËé;ùmÃ÷ø]DüÅc!LÓ€FÉk g?"ž'7Ã<ñÒÈ–>³;åz‚9æ endstream endobj 2305 0 obj << /Length 1565 /Filter /FlateDecode >> stream xÚÅXÛnÛF}÷Wð­"nöÊ]:èCêÊ®äf)Ú$@iŠ’™ˆ¤BR²óÒoï,w)‘ÒÚV‚EqIÎΜ™Ë¡¿zÄ[Àÿ /÷0ü¡DK%=ÅÂ!T I¾Ê¢:úLŠÁG,ð¤X—qbîÏÓer:ôÆ[A41ˆ‘á§éŸOÏA3Á(Ä!Ñv°ç3‚¸ ™ËWÓñÕùP±Áó!Uƒ³ñ©ÞtЪ®$•žO "­¦j}]ë:Í—è¢n@¸»ÝïîWfÿ»ÉxòýÆíæue­fÅ,‹Ò\ëÑ®a 2«ô1‘z6›×®úçOή.ßL/_¿:5{ˆØ‹:•‡îE’'eT'ÕÐçœê›D/˜Í`E¹>‹zÙ§Q]¦w#£—³®^"1’ýÞ7F† O¢PâFÌbn¢@Y°g.„ô:R#0.ÉbÙÇøÏYT6Èá]”Éà#pUi…†¾”Á`zÏó\ûÔõ‡[šøûDq¤ÀÞ1$ˤÝvã Æ˜A¡UùÌß …DeÕi‘GKó®Ab–q”°Ñª¸ú Øª)®kÈ–dÖ¾‚7ßœqV ˆ"¥ðˆl&TúÙmXÒ0ð:r¿Z³½Tƒþ `£=][JTu $d¿ [=ߨ ûí,©ËAŽh@=†¨?J}Ô©;tàÝH}vãbŠvãôÌNŸBÇ…ÎiÎÇúy{“”‰ ô?Á¢z¸ ´ƒš!ÊëJU»4u8CC$ŶX*H„­D}óx²'é”ÊFÿ$q]”H—™L›äѲ*,œ^¥X4Э5Û°]¨8Fze‘³+2Êš³‚³@œÙ3¸¿¿œ@S4@þ¸œL__ýu\—§ª×kóge]sfzôËè›YPL¨YéÙø™õ‹2MIÙÎÁ“ñôäë i&5ÑÓ0" &ãìäÃ'ìÍà9ÌÄ Gß6RˆP¸.½ÉÉÛ{F6‡b¥¶#[ôGö±ûˆ­~Ú¼VÎk 6_¬Féb•.F›Å*Ýγ~ÒrdÈÿ6Ó4º¥4oÞMŸ¾~7… \(èeRž_=9†àM~<ý .p¾ŽðÔ Ë×ÙuRšu17׋'+ÓÔaµKÊ4¥ymóçÕ*Ÿot Û`î‘&úf»5•æ³äÎ,çe‘Ýc«.ì‹G!,¾dÑÝèq$:ÀiØÒ"90ª‡³¾b IAsE9KsCs:( †—zÉFGƒÐØ‘­çó4÷ëÖöm´Iæë<Ö­±ªZÁHcÝ/õíMTfEžÆUcG há1alY”q‘­–ɾ[f€rSŽò2ÎêpTguQkài^À‹ª®úøý®âiÙ÷BHYÕi¶ðî÷cµŒÚRÕBfe¨Î¾'­ÁCWvÿকõ¯I]Cèš;CèšµánuçÈ¡Ét!0cõÐöÁDq•à±D»å'Ñ2^/M vøã>+Õ¯Z'ôÛu r%pid"z˜0ñcé pÑAq@5ençÁßN¶JMWì Î,<Ú£9Ä•ÃW«×ÌMÁ$ÌA¿#VÞC†`n3[U0ÇD×àG ”nÂ*U=žt‘S¤ÔÖØðMƒÏ‘]1¸Ø f[U¥[ ‚gm¶öÏ&@8v d%)µ’¼—<¨!Ñ=IŒiÖ„«Oûº4]T‚ïBè{4‰Ca¶4 Ò,Īϔú Ze!<â¶Ïr—ÇqqÀÌ»ÉH ¸Màp!êÎEÉýíÀl„?8éx“ÖØ¿C$á#fÌç꽓Üø&¥´øžZÜ ¾w¤v€XÐo •“q#Nx·!<”¾ôÑô•ÝôýäÊ_¨7Éöó—¹ô…MSÙKàm¹‹ƒr_eÛ¾?;j™A-ó#j¹£æ'ãžá]KxÖ£‹_žÈ9!!tHMiÿ4 ioÖÌ£ê® endstream endobj 2309 0 obj << /Length 1405 /Filter /FlateDecode >> stream xÚÕXßsÚ8~ç¯ðÓéØŽüCò–ö’^šiÚÚ™›¶ÆМ‘\YNJÿú[Y $íÜÍÍM†±-V»ûí~ûÉä›{ ø¼ö˜‡àò£|˜{à G( 3Ooî}è!0DÞëÍõå¤wvc/FÑbo2÷òÄËSaØ4™yŸý‡%¤ÿuòæì*Kw Ó$Êp n:³OÚ$Á^rÔY ¢tya Ò¶j´•qðÐÛ±¢M?ÌâÜ—K¢nþ _²p¼,Vz|AqJJIïûÉÐ76u?„. S‹’Uԣ̟h/¹ß’³™qMÄJï£l/ØT¥rñW?P²1f&'Ϊµá…Yå9xi„³‘μ,ª²­ I L:€]suÅ~SSr1¥R¯—¼­+ÊƪÑV„ÓŠÌ oœ%þ˜ýõ]!— €ÕÙ̸¾)dÃHÕpè¢Ó éAM{Þ/× -û8ö Ø>Ìýq)h- ÓØdwkh÷:Ð&1ê^d˰€÷4õã©›Ìÿ‚0JÊàGz{î3ûÃi çî.?]¯ßÝjg\'ïîþFÏrÿLd7œ–KjîT«°A Öb7;·w9é}ëÅJÅJiðÚ„¯\õ>EÞ Ö!¹( ½‡Îjåei×Ê÷>h¹Êb/ŽA2pbä Ò$@&¨hClèA]«ñMsÓ]ÞŠ’èç+Z‘sÈ!kÍGÈæ¹OR(¨Æ:Æõíäòîª?Lý ¥¯.ŸÇLåInˆi<5íTðVRFt¹L**Y9ŸþX³^êÂÎê@}ËD@ê4&˜Þ“2˜òïU·ÐzUÔ¦¿u]6w;Ý z_÷uŸ2xP»:×Û¸j±Ïܱº¾}ÿqröîã.PU<ôß÷óÜ¿¸»x{ ÿúÀ*ð ç1tç\ФhI¤ï•¨ª+ä¯o KT@c†dÉÛʲ×€×–å’›ëÒ|9§¢1õRЪâ-5üƒ3¢«™G ÐÂ)§êeAŤ3^á![ÕLk·RÀ ¨šSfY7jƒg½Z)(iôsÛX$sn2kwe !ÒÅo7ƒÃøž¯íJHŒ,ˆ8RƒÀ®s'õµm (- [c`³¤%±‚ÆÅŒ2PìæHx”iðBå±/hf®ô¸€€­Í£ÒR+§ôlj8‡blŠÕMŒäPGgaWPÛ2“Ic÷tɪp]¨Ûçdï9ݤr‚‹Ïê’V7wÉáœ*˜mÆX3¢^–(ë^Wº®Í“Šïfèàôá­!¸Õ±º)ÙrçÎ/Z ¾ñèÐá„{Ń,PÒ肳’ëËöÌì·L;8mŸžÇÕ`«(Ç:´#2•ñÜì‰tAÙÄ™ƒø°Ò3]à’K[܃¢ã UqàTzÄ$tà( á|3ëÝBGÁW¶l“ý±“»J³7vãŒ|?Iv7G„Î÷&)ŒƒÝµäÀZª×ž.©97uj¿Œö˜œBŒÿ#À÷µ«ã´Gm™´áð†R?ÑÁ4øI-|F÷ް ãôQca¢\ºz Æv@ÿ1 ØB(]¯  Ó‚ý@Ø4éÐÅRÍùàœ<À¿’þþa¯Ëÿô¬ï%;¯Êû?±ãa¬î»9 lé¤Îøeõ7Qyʱ endstream endobj 2314 0 obj << /Length 2640 /Filter /FlateDecode >> stream xÚíZësÛ6ÿî¿‚¥&Bð$À­üÚ¶.+w~ÐHáÖ–«ò2]!wÐ%WD2M˜ J&ŽoZU)r¼Ù>„/Ž”a`èh(ÐÖ/¦[§cr•n­vvQZÌÝ *•‚­ÐPÍŽÊS¯²EV9q‘DéH¦Û.…¤DƺQÕ&¬Li’ÊDý)£Fg…ã¶Jë:MZ­°T¢â¡Vf¥#PÍó"­3«!¬nœ|C¿Nˆ6æ¨x0ŒiëiŸQ¬lö²Ž+ŠÑ2wï 7½s=º ñœpÂ`4ŒÄZåÜp}æé _3¢àÎHÂý=£V1pùXBb¡Ýâ?CB$ 1…¢p-ܶn‡›NMí.¤%PëˆqOL´H˜ÒQo×GJiˆ«6§ºG$$Iœ¨>ËûÿÛâË¿MüçI¢8Þºþ¶}Ç{nÁME ÷^uSqÛM×±Û–ÄD«Ä‰Å·ÅîízVˆ1N(wS›pm j . ÷’nïNßSºcÔ†Òñ¯‘N|SéÄaˆâ»èVT„i¹pŽÛüigÚyÈ¢yBh Á>Ò~,™3†cÕðm4®ö4n|ÿâkˆøÔÛUí Ì9±-ªríFÔ= DÑäf(E@”®WP”ý °·© 0·LÃ:† S¯ÖZ ”á¬JîYj0'‰HÂ9ϳ”I )=$ªÀ¦Eb ¶n¹\¸}©{\^УÓõµ[ù’×WA—J„²ø.ŸRwû”!Zê¾FzŠ&’ƒ_פqâˆWóe^ ¤”lt¶ð2šè…ÌÒAÓzqù{ˆ?‰Tí®|¢C£[äFêj—‘-¸Ì´FY 'l–ÎÐNW!Ú2!œ¶°ëóf’ÝݤÎ莼®ð\§- åÒR®:­¡oTÛÚM^TùjUîr/äïe‘Õç„£SSµg‘ÃzÕòµâi÷EºÚ†õŠeo7â% Pð'ik¤b{³‚Xÿ8psM»ƒâÅUqcK(_œ.a°®Ýª½QðÃ^–Œ±—Å£Ùúäï4šÃ:c×»kIùq]œüìb’Yè© oº†ì ”{¨ª‰E3Ì—YQ­Ÿi'ÈE¹«lóæ/óUöd¤Ôo#‹„6b†œó6:{3==96p1xö÷§÷s8YTým»»ô½§.' ʺZ§×ëÍC7õRÅtÏÞ¼{?}ôöýÍèÝßóóç¯OAè‹?p5|É‚9!7îy¯wk7I‹ån•Vk¬Á]šWx𓼨3ˆ ‡<®†PÕsK¿_¯Sï`›«Ü~j'³²Mz<àö®pÈqë!NÖ%HІFÔ›¡s#!7Ún ¾ÈgÍô*­Öe‘Ïz|Á~-ãÆr,÷ï¾²ïU“š¿²ŸûʵfQÜ$ˆ¤¹1£möi—Ù>'.â¡pÕ Wz‡Â½CáÛ rj 9u癥[»`æUà Ϭ» »tHè#åÜÆÿ' ô8†¹ˆƒ¸‘æÝWhjäb›ÐÈ:Ì .~—žb¶2#? Ö¾Sd'—®oç&þW0r¿ò€Av½mçX-LZ Ûlî¤ÅiY¸§ïðz4}\ÿ[¤ek\{ô@A–Û¾“ÙæÑnít¸ºq‹Û:½\Ù~”hša ‹Ùl‡U›akÄ~ŸaŠ׈¤õèÊÖÕ¸°©²Y¾ÍQ^ܹÿÞDPûXsxQb¢z7Pèàâ¯ü.Emk[1^–¦àz ÷P·¼ÌŠ›0¤²û‚}²¶@ù«ºe¯ÓjvÕ¶™äýÚ?‰€k-îÛýü,j/ƇÖcȧM+MËÁÉ€÷?däÉ endstream endobj 2227 0 obj << /Type /ObjStm /N 100 /First 947 /Length 1452 /Filter /FlateDecode >> stream xÚÅYMoÜ6½ï¯à/Ð’œ/0rhß imƒ‚tQâÂv€ôß÷ÖIM­V¦W›ÍÅIÃáè½™áh6ç¬!¥8†œ3…’üÅ(‚Šr¤þ_¡h®\\ƒp—]`\7*1X©A…C!7J9•¢újl–’e(áVN4Cr-ƒTÝ"6ML£Ä! Á8|Hb°n° ÙÍs‚¤nÎ¥"£}˜­0©†Õ1º_#»}HÅ­Š//þGr€w²Ñ³¸ `l‡‡ÐÕÑ Á¥v/.¸«Kr´Ü÷¢£±(fÇ—” ¼%£ MnL)Ð~•@„´b¥&u¼Ý« ¼¨ÆqAö±Ãûpdœ w!Ã'JØv˜²ƒ`о¥Á\àÀ’ÀÇâ/–Më‚Y`+`1Û,c£2º¹Fsû5HŠn‘"@j è–\ À-4²_(`£Q’ ô XŠúFñÕx–!©Û/¸W«c€ÓXQþ¹€LæïV,hNŽqÅC’QbO ^….°‡¡¿% "ÖöaPmdh«G¨‰ æ.V NEÜ2J˜7uÁý"æa }àï -†{‘7Ô=ÀsÓNÀ3qšÈR­®"pƒÀŽUDŠÁN‰qT3HìjɲŽjâé7WW›íËðÈÈÜ×aûÛïÀ/ßnôŸ>üønóâÅ=ÀÌq¨FñúæÓ}¸º ÛkÏà¹_r } ®àBòDØ_y‡ðÚ_yäG֯ωòpåI¨e¼Â†ÛW·7~Ý݇·aûêåuؾÙ}¹ß|yóï?;ÝßyY½Øl_ïîn>ß~ØÝí‹Ðxï—ÝŸ¿ÿéæKxëJReȦ¡p"ï°ßû[ñж·Ñ S;Q¬ ŠÛÂô´"{ˆ|îÄî–Šà  ÜÜñ|<ó2ˆ’òðlÔü¶»Ç¼–&>¤iÿ~ý4‘Є"ÚES£·DÓD‘‹ ™~Aš&Ä´¤µÄ B&úJZv+Qv:Mu†&[OS餩ôÒÔ*fåÁàç%³éYÁt7§ÕpsÑà4pbÜuªø?Ü‹§ÃQŸU ÒO÷ö!©O§Éfh’õ4i'MÚÒD4hÊO+¦ÂC‚á#4M€:ñ€ï'tBaCïãÂv2M’fhª«i’ØGS£‡£ƒÙ”ÏÐPµH-é‚ý€ßG¬Ž°",´áΖU&-«Êíi½Thz4&h·¥¥ûÉ©²P’ÎrrÈÌA-Ï<¨÷¾·ÈuÔÒž¿ø’$çK~<,E~[…–š¦–_õuå[CUýjî:™5é‚5¯fM;»`¥É7H">8ûò¢E¸©å.ž1]àirü·¬-ÄÓñ:µ2Ú®gÍ:Y³Î¦x¢Èå{»,%ÞRÂ%ûdš,Òdq5M–úhjô–hš(r*¨õr4°ÎÌë–N€¥`™låôîn§—QK™™ˆYYOSçDÌz'bE.PÌ|Érµøí²pÂM(¶4Ahs«!mÒPœ£<–™–¼Øz ;[òÒ¶äZóP"?­ˆÒ8pììÝ—½ðì¬ÎÌÎjZ wíœÕÉì¬È`ÓYËœ"QªÉúÙÙñ9×i§Ã=3«²îÎXÌÀj¤ØI(.½sÅSQ¤83¢ªu-Šþ«dŠ­ÞB™Ÿ*^æl>Ã9JñpBå¿®®˜;æ^€yÒ£Ö!’þÀŸ>ï÷¨ÓÏûóPXg(|Þ9J)RX:)œŒ¶ÌÀLïdá¥z½Äè9ª7¥Ãö’R^iZn/ÿnþÍ endstream endobj 2319 0 obj << /Length 882 /Filter /FlateDecode >> stream xÚÅVQOÛ0~ï¯ðc"cÇvâðÆXaÝ4`M˜4=d‰K#5Iç¸lüûãÚQ¤nBšø|=ßwþîüш¢;ø½@ "ð#’ ËI.0á‘äH+´@Ÿ& ºx\ßd“ãsN¥8"DÙÅ!ŠÁe%úêA.锆»S®U·ô ï–’¶](·?¯VêÄ!x‘£þ·ìýñ9d¦'$¡‡ €…XðÄÁÌ.³éüÜ—Ì;õCéMOì¡gCµr;‹Àq£ „L4r™ºÍwÝnLÕ@]b»ê¾ˆˆlöœ¿I§é߃ wxÓ ¨u[ÖyÕØ<öª”=]u;æ>×Ý>vöövšžÍg×ÙìêòÄÔ]FÓDºð Õ(Õù§Ü3Ke æ-`*ç̛ҷ„òfÐyYå+ç·Ä>õZíl•¶MË!iëªpv·ö¡ OÁ–zQÖè\j äbôCgòöƒHFÞéªk÷1V*£t …4 ˆû¹¬Fx»uˆ-$Ÿbr­œa1Y8`:ã|ë\çln5KW²µk›oÔDM`\Ý«š»ç±÷¾ÌÕF¹Ä®ïÐîÀ0)±Œ¸^­…΋ªÑûzÉ ¶Öˆ÷Ž%NìŒxîÃüͧŸg) TÁ˜÷n–fWó/‡M3d‹X´;ÎgZÁ•n\Sµ6ªþn¹³ÛÐYV Þx;¾ôÉ4›ü˜Ð^‹¨Õ.æ,AE=ùú üÐbÌ`RöQ5â,„u…ÒɧD‰ Ž <‰Q”’'Qêà©™CD©<@”Ä«i’xQ“úZl¹ê^ÝýѸ§ÿM§]^ßdÇW7,À°ÞµÇÞéüôãÈJÿ}Ô ®¨·tªh›2¬rSµ%ëWðá¦ñ|œÀª9*Úz½R¿ì®é Úÿµ¤ŽÄŽÊ2öÅM… kûÒ­UB“*ó0ð”]j ú¹ [}ô´þýìýîcáP„ñ ð7½ÄÛçîŽñáÖåî`§÷Á9j«ÆpP®ª¥Ù~°°Òn|È¡ŒÛ÷ÊëØ^è¶:Òfì?ü“ꊿ®@E ”> stream xÚÍWKSÛH¾ûWè(o¬až‰­=°Ä“Z XlÕVÈAÈc[µÖ#²lÈ¿ßdKŽ Ù£µº¿¯»§»ùjk¿—Vjaø¾DKOZs×ãV¡¬¹õi€A[—»õÏ`prÁ‰Eò… V0·$µ$ÃHÀGÁÌúlKäâ¡CöB¥ëy-ò¡Ã¤°°ÀÓlSDÊì/â•::ã½$šûäÈðKpurº F>ö‰¶„-‡QD©k M®ƒñÝÅÐcöÙzöùøTôdÀëµµ$©´J!ÄhZo‹lSÆ)mÜqºÈGÛEV³Ñî´Æçâ¶f§Gõýt<}3®Íº”d³$ŒÓcN®o›ûpµðìÛ¡”öÙÝÙ_cðÙ‘€¨‡\æv5§:–”@ÄN ²t“<ªÂ„®¿ç5"ïúÔ˜ÇF$ïÓ⢽g«k‡ñyíÎ:ž$ j¢ËÀ7aJÍgS#J…%A®Õº>ˆƒß¥zÀ„õÙÈ‘Ž À}\8¢pðsReägÿ¡iCh‰ýœIfÇEÌæ;qŸ†¤ðZ&~-ºF ïʸnK“>[qÁ¡¢'%" å­9AúœÝqÒï}ªêc@ïÕËŒèÓRÁ-í!ÁÔ-q$ ÷u>’[-Áø°xèö!íl—UI­Ë)PWúCýªâ×mCå"»¸£Þ¢H\Ž|˜^ ”¼º*ÞÿžL¡$&ÓàæîŸ·wÈsh:¥š™ú}¦›°øf6c¶/ëWß7!ŒƒÁשf1¢ç)æA}ÏŠ’Áç/ØšÁ9´Äàè©’J,Ît¬¬éàÓ C1—î†2ÒÊ–CFì2 Ë£³ô/3œ-+ìÿßvW=ßÛk½ïz-‡+Q]nzè“ö_XÌô°aä!výüFúÝ¿m n¯s¸éq®ÌvI–ê~]).Bm³ÜWÝ?}VEÿC` ¿>€— °´&Ѹ£Œ8§5Fxh„m”i8ÐV¡u;éªù뇼Ȫ0ÛDú–è£G-ûí@ksS®EÜß^°e[Uô¹þŸñˆ·¯ ޔĖj][ÙQ­v¡©:“=Äíu ˜iY½B,‡š“Ð,óMծ⧠ƒào+¥ê7q©ë#¹µR T1i€‹)†ª•̵“Þ)‘ç»íîæ¨ç<¬'Xfâãh PGÝ($°10~:3xâæd;t+ ºQPY³_ÖÞ¢#êË®·^bÔé_0PUh*JöÌíeå")YwDÑÕ:¯>Îâ= ÝOÒNÏa&AUK Ú†øyá,/âÕöÆ'ðâ‘í ó¿z×úæèfï2ä6WZºf`û?ÚÉé! endstream endobj 2327 0 obj << /Length 2740 /Filter /FlateDecode >> stream xÚíksÛÆñ»~Ú/!ÇâùÞw§\GV•4²cÉ}%é l @PŠÿ}÷pˆ$dÉvZw<p±»·ïÝ;Þ$¸‚ÿ'A`ø'B…VZš „¹Ô<Èã`üx€'ÍçŸ/ž¾ä$ …BÐàb((†‘€—..ƒŸF I:žBÅè*NWËñ„‘Q4†?× †%F?cϳuÅöþe2Ʊç4 1¼@Æ¿\|÷ô%P#…8$†6&Œ"F-åÓ³‹ã7/Çšž©½8>2ïl­ ÛHRTJ¥¡Å´Zÿšgë"IAQ/$f çÉûåá*Z凷7ËùáÕMtøa¾¸º9\ͦ|T`¿·IM<´ÞžŸß›Qfß]¯*Ùåbš¤Cižž½~{ñôÕÛ øa =z=VjôüÍóŽA†ù¡I&]Ì œñ„Ðä‘åìýd™%iaofy¶°Wi–NòørÅ—öÁ*®`J§‡ðN|çµ$ª C‚×€• °žŠÐ*JV«,·7Q–çqT$Yê Íã鼣Ѧ‹1I—늩›ö*’ é|ZI׳ü2I§E¼ò‘ÄÌÐí£ FäJm§Wŵ½ÎföóäÉÍä•å~ éU>ó–Fi¤°@€lD¶¼Žó$šÎííõ4_di­\ºÅu¼›([,çñoæn¾XL»ÍûxiÔWúŠÅR3Säë¨Xç1ØÚ'‚†ò!¨aQdÅ.¢29´LÒÉe¼ŒÓ˸Võ÷Ùu:9¿žVV›Ç«e–ÖN7[§-«­âd²ZNÁ* MA€ p &!¶lñÌë;WvÝ 7ÑM\¿ûöøüÅ›Ó×§¯ÎŽìKDt"%U‡ø ¾.M•1f5ÌoDƨF¥ÆpQX¨–,Ì­‘À鑈yT ¤â€³6\¡P‡ÀFˆx(kY0ea©à{…KP‰4…¸B®CûϘ€"&£gæ®z-„¨*%ÍkD#´@*²Z&ö §HjPI ªD¼N "}Ø\Á2Ð &q¦6 ®àè# °Ê}"2U ñÌCC vqPÝZEÁ!Ÿ ‡i—E*´Àž/H5úƒo‰„"Ìj¢«ä¼ ¤U- J|t‰D’H€z£X Æ£)P¶Ê—©±¥TÇ|¬°qHRmèGÒÆ=åsp|qps@Ê ¬À¹Q H€(D‹ƒŸ~ÁÁ%| ‘ lGw%è"üà›ç?V—«½c•ª#È[¿…Ør(¯Ísñ þ{ñ õBA÷[ ìÞÚ &’ìMfeÐ)¿ýSù¨8¤ÆÈ™¶wØÓ1ÌwÙä k€=@) Ö_•†gÅi¤¤p|é}%Ÿ®1(ñC(䫚þdF~J–Pª’cR Ô±­ù½÷ ¥‰àÙ; ¯ì¢è Øgh6òÃê · õÚÌË3ƒ.¨-É¡Kw£¦FX 7\a/GörKûDiŒ‰?\”^ŸõæQŒ‹Êðz¯ÀŸïƒ•‰p§,!·PRC¼óqÍÁ“*ÿöñâØn¼Ý›“’¼›‘le²‰ªž´~lZrq9i©Oêšw¾•²VT{çãèÕµíx¥‘7„AáZŠËIl°Äkñ2Ê}†zm…=ž­|%‰·+únîŠ~—ý²ÁöÛ0ôð€‘l'i†SPÀ$ Ý–»’4ƒ¾‡î&é;o°€b6†þz,J{3eSÿÑkX«/—ªúXÒŸ3UÑíTUJõ‰—hOTSn$u/0(ÝÍ*¸fN‡æ’ƒn`uL”U‹ÕóuœÇ^+ÆP’µ¢¹?}„H«hš^z‹Z³@ÞÂÄý˜$n€¦fÖB%µm”Ùn¾žbúuk®C¹W‘érb^pµde™)‡æ"5CÜõÂüýµd-ÎíÙÌÇšÂa·JtiJ„iÃû¤š^$%¿^¦Ký$• Ë›†^Ü©í4± Š¢õršFI†B(µ6Þwë5QN%b”¸s©RþŒWäàÂÌ{Æd4ÞhtåäÇ|Q ®ˆ­ä3?4ÏeNþtIÎÈv¾ìÊ4Üo±TͧÒURÒìÓ¬šWåÓ"ËÑx ýN̵|?Ÿ¦«ùÔŒ¦j^W‹¸È?ØfŽˆŒ§+ÔNµIzyhçcw†j5ìš^fË¢3?›eóyf`î’ôÊ~e¥”nÇåDÍ ,«0Ï̸Ú\$ÅÊ"x9Ö°žužÄ¹}Pä°à@þ±šéCÍ< H“½cµj Àî;V£_®6‘÷¨MN¼.©™«xê‹ÂÌËø°±JíÆ‡ÈT&ôãFOà ºDPètC±gAák,rÛ9˜‚ G…n‰Ó)ïj\š#Òê¨wÈ€‘†2ˆRÄê"à_Þ°Aíö1R«,¦J€”º…6ä“ÖD“ùûLÔÚƒO³‹r/Ê’4„“upú*dJùÞÁ,GjÄ6®Ø‹ ƒ&Z@›R¬ãðB«N‘L{ÓÒÆÁ:e Y×7Úpd¸)W}ã¡eÇÞ;ºkM€6-³f‡ X/ñfY¶Á“ûå+:ºŠýõ©+߇Ȏwe׆FvÚ "Ì ­ÔZ¨>)«Ï%å­f°½(Ó: Ï¢º \á!dýewƒ§-úqÍFoÚb{÷äÞ´îkËå§Ø "žTÿ@﨧Q?ötáU’ÿk\øÛHeÜl X2wÒE§ù€$djrìÙ,2z115ýçŸW÷ºâPg0Ã.AÙý룭öRòÝßëÎ9…Ám+œI]Iê|XRçNR÷Åv M@d-àÿ'F71VbùÆCK!Âd[v@y„ŒM\§úž³{È–›njè¾Ñ  3v-ƒü§™Ë÷‡Åo<\ WÓ:ýh1ªo¤çA‹Ö#¯ÞœÎ³;þ (ª ÝrÚ雫³$ª9KÂ[‡kÊ9õ†nóí®àmñfvVͱ¹™kL+üÕ€ÉÞÜåIa†Þ™?„, Å!d¯v³¯paÿ ÇXèà~›íí·ÙðÂ¥¯ßfÙo‡{ûmòð~L¢ÜëÜÙoƒˆ!Ò­ÊÓ;úmhßU™—û7þkdJÁ§xðLL…ºþžÞœ*”fP®¹ÚqB@!…¹=!@Ôÿ@ÅePVæÒßÏñùÈÇ\Có¶¯.uwº½µ¢=¶Áëª×=]0|AÙ†ÃÝ…¿Þ]ø“ÏTù«Û¡|¼ÊŸí­ü}'ûÄ6š¶«iô!yÓÎcæ¶Â@†›sSƒ;¹ç[±s‚²'YîÄfÚ\në$ùWÞJzÆä  ³ÿn*¨g@®$ йó”ãЙGídùµoÀß;Øš`ÖM÷ßœ‡þ"T²½;ä=;1™Sè\³ªÒ}sü·ÓóÓWg¶úÿËéùÅ«7ÿ¼ÿO`*º/òxZÔ¿jùašGÕÏ8¨)¦š-œŸÛërÏÔ\|÷ý·~/€„P@:öÏBÝØ?/7©­í;¿Õêxž¦å$±W. ”³R ýy¾aï endstream endobj 2331 0 obj << /Length 779 /Filter /FlateDecode >> stream xÚí–IOÛ@Çïùs´%<ÌêçFÓ@ƒT–ÄTª€CH0Þ¨c§ôÛ÷ c“‚ ´H=TQÛó–ÿ[ôS~ Š®á{€rDà#…%QZ!-$&Âוš¡ÓC‚?…Ý}A¥8’¡p†CŠ,Á)œ¢sGaŸ»¥L:×Qîrê,Ìe’Æ··±ëq% "ɨ¨ËIdŸ÷ã4꺞$ĺ°U< 8P÷2<Ü݇l”à€Ôä&Èã KØÔƒ£°?Üw5wö\¦^¿kœžèÕ(+¦Ç õm¤y}Uuç PÚJVŽÑ'w;ËÇF™OVcz‚žú£íIë\Ï)Y1ÍÆqþÖ¤ƒ£“³p÷ø,„è¶ÔΉ«”³7ÜûÚ‡n½QÓ0U]tÁõ˜’ºVYâÝq^Ù‡YYdö./r¯Œ¦õ$šÚó¨±yèe¾>ÑuT¶­4S¥|9ÕE»:r™ªWÔi‘]5We|oï£4Ê¢¼š/ÀwÊhœšû|^Í;Í5¹«LÊ—vË[«¹éæçþ¨7œ„ƒã£®u‚n¬/$S˜Úš÷Æé¤NÇUz8çNuc6ž‹F¿YÒ+{ÒÖ`m æ°jüŠÙÿÊœþ2ý×NdÏL}V’àk£“NAšZc#Vm|L5k-.ÙÈÞ¶V·Ða× Ñ(þÔÛ…‹7u“c%ƒeIñÆAq°€}õ˜Ž5Û9ìŒ`L¶9_£ðxøýýËÞƒªÚ>¬[.0BôrÕF7ã2· Õé‡ú€Xj0)¤¡¦B“¬s~IÐÞòcÛòóÁ*C‚›1¤hÔ9}µÂ¨ò‘µâ%Ö&Û³6ykå_C­|µÉ:j“ÿ¨ý0ÔÊUÒ&BÚI‘Ý¥Ñý3ؾ¹r;䛑ےV='-$­ RgnÙú¶ÜÀVYØ*§áï‹°åfðê߆m²©>&Œ¿[¦%˜h`+>¶[!– ŽªßŠØµ¿µëí`ÚrÖçÐß·z­$Hþð5¿| endstream endobj 2335 0 obj << /Length 964 /Filter /FlateDecode >> stream xÚÅV]“Ú6}çWèÑžÚZ}X–ÍÛ. )ۆ݀éL'̓ÁfãŒ?6ƦÙß+ËL`‡´™é0 Y¾÷èÜ««sùŠ(z†ï;”#áK,ˆô$ò‰ãz*c´A z·ï‚ÁÍÄ¡ˆRì ÁP°A’!É àDè£!±+L›R&Œç8795vê'Ž£Ú´¹Æ_DEQ—ëX?O’4š¶ D;°ƒÞøÌ©ù)x¸™ÀN”`ŸøTíKÍޝ·Î‚ñ|bzܸ5™gŒÆCåô]ÀÞ;FX2‰lHÔÕHÛzUu•äÀOè(vŠŒâXµõÅ‚Ç+—ãÙg—‹ñâÇÙí\o[Yea’+;凨m¢MU_Kl:{Z7Ë8 áO¦”Æíüöý²y%iæa—»}Ö T€€³j^÷“à—¥žÆyU¾êi“ÐÜJò*~ŽË.£]p]ü}¤—° ³¸ŠKý¸< Á‘Ye¦§8]’¾¼ ôp=œ¾6n‘FEÙª=°*“om¨iœA¸Û³ÐÄN³ð[” õ`<6;«÷vÓMQ¾t_l×û¾îÇ‹Ñ|úLgCí'Ø¿dL O›Ât]§aCLÜ%FõYÝaá·90™4Vz¡Ëƒ²ÒyP·²jý `#mݬ´¢¦ëv“¤È·XåŽ Hù™šæ®À ;D“{úüÚØsnÌMÁŒx×>Ýi_§ŸŽÖ¹—\ÁÎ%*™Ý6°Pá¸RÍœæ`©ï •x|6ó-€Íèl[×óñÓ¤]£ý:]ó?ÿý…AYU*©ªÔfÅ.ÎV]i3Bä¡'#ëá·{krgý>»Táï‹(Ù$ÚC¾î‘üc¤Î0_´i&T5. v]†ÖÙàã'‚"X‡M0‡:ú»±ÊÃŒ)Z >\è*Ü¡˜‰}SqOš TX¦&Õ…®bR㸱€·¡›ËÞñŠî"~Zs—›‹"TýïÍD¼ÕKN ú ôµJâŸ(‰ ˾&½NÔÚ žQT­t$aª×;iQæU¡×Vm‹¡ÕE-+uéÁo›:Xyåa«ùή–I£7z 0SoªøÄaî%ùqˆÀ>£}ýQµ»7½[¢Dµ(9 rgE‰KLé^iþ³éw!{†½'1“üD<³+xB+a”u¾¹š'á‚2z`ªå²n2 ÷ÞouÓù¹ºéþ¸n6š©Ôó¢îù¦ ðWÊ^ïOu?yÌÓÙs9ü›î4ÐïE {ÿŸ¤Ø endstream endobj 2340 0 obj << /Length 1250 /Filter /FlateDecode >> stream xÚÍW[oÛ6~÷¯Ð£ŒIЍ»ó–¥N–mÒØÙ0´}`$Ê&&‘.IÛé~ýEɶ¹ ‚‚„ÃóÛGæ»…¬ü^[Ìòá'ž¤^ì§YjeQìùQ’E– Vi}ù è[×»ñ×ùèì*BBÞ$Žk^Zi`¥¡ïÅ 4/¬/vê%éØE(ˆíaãÙIc7Lcû«û3¾91ë+Z‘ó±ûþ¡¬WN|Dãoó÷gWp>ò½‰?AÚšo¹aàEIlŒÝ|šOï¯ÆYh_ŒƒÌ¾œžk¥g°svxJì¥Aj¹œ„ÌArý(øZQÈb½Ý@HüCe÷P»U˜Mgo5½–­Íš5¦lÈm÷¹Ú»éìòþæn~sûéܨ ø(RAêù“‰¿&Œ¬ˆ»QÙjI̤ ¤„Ñ~˜‘ rÈ.aÂEm>ðòHõ_2w¶ÄíwòÕG!ÉÝèT´2«± ® »0*Š+³nö£F€I)ðH»€B/ŽZYPÎ<{®Ãp؂ާR!ÔŠ„Tf³Ö2ëJÑUEIaöõÞ3WÝ©¹Þ\bs€D¥¢¹Ù/× <ä̬¶KjÍòo"¸l­·)3(ôÁ.<1a.Ÿlœ‹í!F­«É&¿ýBB(ñ´ oN‚‚ÍÜP%D>”A'ç –Š/ˆ(™Øƒ¡‘¼Ÿþ~3ƒê2H~»™Íoïÿ|]‘™—„I¯\/ê+L¥¿Çlų|?23Mï?¼ëz4¾PÃQHó Ô  ´òzôå›o° õÂIfm¡ÚŠBÊš>Ÿàª(޼,Jw\•õ¹j[ÊÍk¹JËþO¸JCÑ€•\:j±r˜T-žsºXÑ…ƒW[\ÕÙ¼Ü4ƒÜ8Û²VNUÀHÅÞ‹ÿ‚î~b³‹ÞÝÃüìöa$$Îì»qšÚ÷§×Ù ³=b‚ ¯ç˜§ÄšxfNK3êH™™\òuÕÖñcëŠîòæÛj l‘k ÒKàš3M0–š“ºB§Ì©øB w‘?&Häk€Qñ2°ë_V®\áœ8fÍÄ–Ê#1èÑÊÈ5xb`â>¨ÐÝ!Y¦i÷ж®I —·Hen%=W¼,äëjÏ­qÊYq*nPø}³”ä©oáЪfñ¥™bAÞˆÄg5 S Øq2‡b¡Ó©¸§Í¬X¹²ÔÒLÓî@j ;à)x}ÂVçòõ‹Õ¸å$’ÎgÃ9æ˜ÊÅÝm÷c•/)[´áå¤,iN Sò¥ÒËy½ªÈÓ°ÃE¡gU aé0¬jÅÕÈÁR5¼Øƒ %•»Á‚b}ãwMM¨~DèxgB¤€l_”¡ãžuIrΊ7š—Jj³Jþ¬P ¥¡8Ý٬ׄæ!bÖ+,T¿@›÷QÓ3xCº·P‹£äm5ƒ7ÝÝÞ´Ù)Ž<•çœC6)Û7¨ö .¼C›Do„ÃD^›PïNÎq;f]Óeìƒ^\ìj² 5aük9«l§¦þú„ܰv³!Ÿ³6fE§ `wЧ"ñü¬W²;ìzj®‰Ãdk5(póÚþWÓ}ìM¼oßã,§òupƒ÷³þ× “®ð‰—eí;.ó{:ðnüê÷ endstream endobj 2345 0 obj << /Length 2524 /Filter /FlateDecode >> stream xÚÅY[sÛ6~÷¯à£<±ÄìNš4éºÝM·±ÛÙMÓF¢%¶’(“T÷×ïw&eø’dv<Ä!p.ß¹W KVøÿ>Ù%þTnR•k+UšImeÒ”ÉeòóIÂ,ù~ø}~qòÕ+Ö¥y–³äâ2Á“YªðÑÅ2ùmöÝËóoÎþuqöÓë¯O¿øá«WLé³dÎMšåÖ“¿(6‹Ã¦èÊötÎ…™uëÒÚrQï–ó§JÏŠ¦*ºªÞ›0·¯vuãÇ×§ÜΊSnfhT^v ¢ ëU;úÕ³÷ø±³º[m³¥ï2¦wóΛY±[_cº+›¶«º ÛC ’€‰TÉÜKД«°U³KÇåb©lnücÛAD?¬/ýoA?z¶/š®"4^[RŒµÅ lÃöt{ýÓ¨N3.zŠùÞ 8OOç¿N\ìÖkËF´žœ¬×– Ú£ñ”ÍZÿ\4e/VÝ”K§•9³PŠSåૹ€ú ÿÓ”ÅfÞî‹EéŸWMµ$•˜}ëß,ê¢iÃlS,Içn¼-Û5`“6,Ù¶‡-6wUØÇÙÕÑOí¾¹®ºõñ¨Ø­zí÷¦Užùm½-½[0Éälq:g³ÑÍiTc}ág`Uo>;1_¦áº7Îf[|üÐÄl(d*´ìé mÍì,º&ç©`¦'íêÅ"¶ |Lò :‹qÇR«ø°i×ÊôqæžA`!IÓ;]Í267þ¡[×d>R‰Ã|ëÇ^ÝNQŸ‹Åa_ì7:pÐ[M³Vàxd#U‹]LÍSiUÏY¹oïц°=ƒ.-¹èÏ2È< ks–ení9ômuno^þzvŽÈæ—øûÙùÅOoþãÂÜPyÇl6ÕBcÝ<å,ì…“V\Í^×Êí{’˜žx–I?z—©ì|]4Û#‹@¿ì—·Ë¸D ’ðµª)6í3ÿê‡Ã®ì—gÙíò?üø]¿öÉË‹“«æ£à®ŒLµTÉb{òÛïY²Ä{0 ðkGµM¤ m’ó“Ÿ}†Œ°•+€Ëg…Äb•öìšTçð†ÍWÀ`@LJJM¶>4.@àùUµ)¿£Y6¦M/ó¬gøØp”_rB“ÛëìõÅË7¯N-ÅÀîÅ˧K¥Î3±U{xßÔ„’ A°ãØv,èl‚È翜¿<ÿŸ÷>´aÓm½ÜÕ.‚1 Ü®‹‚:²ö'æë‹uð§Ôà̤Ú?ýëmÑ5ÕGËY¹)ûÚÆ’[ÎÓœs¬¯S­ƒ¿zB¼6in2GgScm"Q¤7|ý@¥FTsÄŽôcRx­þÖ/¦S£ÍQ>•r´S‹ËScbße<`Mª£ª¼¶„žôßÎ8(§(‡yÈÎ@Æùg<rÇ!ƒ)2Þ++‹1e@ÅŽÏlÐÃÛ˜]eÔ…Ù‹É‚˜ÐàXýU*2ãén"2&6µA UT:kŃuŒJµb ÍEÏê%œÀX¦\ŠjâK±[#ßFŠ© u#¢ŒÅW’JÞ Rw4G6âs˜×L¬{”ÉRÔYɹI˜Ï®¥{À¸ OB€U_à10p“º&‚yÀÔCûAúæ‘=„(ýD©§"ʘ ñX(P·|‚K–ù¿©jZWpÁïÅ…ÌÍqq!Q(õÅ“yj=*0&jç9úOС!†*l*¦H3ÁŽÄœ®…v+g#Fµå‡©KR›†jU×@öG,OB,ã¢ìì2ÆŒmì±pÓ…è=yF¹8Šj¬` *üfyà ½+ ß­YßÚÙ²òÍhC%úÎοFõ¿õ£ž>twÅX˜©o[YjÈš¨µònpœó'RÁq9{ÝÚ`Œîëu功µçÆ2”ëQƒíÏͪ§`Ñ:(çÆo®"%¨ ÓcyŒCµø˜Ãg~ÿëu‰Æ'æ6|€òU ¥9¥‰¡âG¥ÎøƒuUžfö)ž%Åç1•œ(¢j,¹žSR÷‹ iRD{€iKqY6mçž7u¸›úà€ˆ7Õ;´Ês%ÃÑ ½kÊö°A°¢GãÁÞJ².œ<€_øÓšrvêêðÛ/êæà3¸?A§H´Æ²jMÙ•1\MO3®â ‚kvÏÙQë+z¯8ÙKrãß¶çz×tz#´Pò¡IrM¶;%ÙCW†…º¾…p‡QeµZ;§oãç_ÚfX‰Ë4ï»ðëH.4¨Ù)aR=—ë;õ¨†î§º'c€‚µÊÕÿ2µ=‚ÞF²9B vɦ]Θ9H¾{—¹©Å¬sFBÈt±üš£ÍA1J™ÑÞmÞÇù½r.²«˜f×°–%SLÁ4‰Q„%>Îyíãyé·2Pšéá xÕ¸³HL9¨cf”|š£Úm± ÔûnÐ ï«àíK?±(ûÓeÿFÓIZDòVQæXÊDNªÏúÔñ2©˜Fúk”Iïuý‡ø"Að6%pÅ Bã´wJ|¨¹ïa†²®õ¯IJb_-Ý5ÝJúûwå5.òè y²¿ƒ¤C‘gÂÅEX¢.•¦žhPÖæöÁààsñ½uíê. h—v[ß^Žº™áR0åàÛù¿piÈ·•‹™æW;K&Žr,]U;?s›µ=aë—%u‡¨3—ž¼wRš+ýñæPøjÜ-×ù¹ ê²©HÊáƒz×sRºhñ‘Ÿ‘.‰Á²;g<Ó}e¹)ôÆ(ÇË]SuoÂþôžlî~ÝE¬pÔyɇ­»©³oWM9œš{R%ý³À÷M`ž^ØaÙ"nÀ~Òýý¶ÕjW‘óÜ¢‘Ëš_Õô¾+•O»»s.„±’Êy–í¥-›|ƒÌõ_䊿ì endstream endobj 2350 0 obj << /Length 1446 /Filter /FlateDecode >> stream xÚÍWYsÛ6~ׯà#™HNtÛ×–]¹“Ë’;“IÒš‚%¶<Nôï» H™TàÖIg:ŒC, ìñíâÛÕ'‡8ø»trÃ?Hà@ŽäaîKî”ʹsÞN0lÄÎå£ÏŸW“\:£‡ÄYÝÁ#ŸùNÀ0 iµvÞ»g¥Šjµöf‚ ÷´Ù4UmÖcnV°ÀW¿žO—KXïãêj2_M>MHë#qêX"êK'Î&ï?bg ﯌X(Ïí®ÌáŒÂ3u–“·sÄ!…BPí(ñ‰¤ð_ °7#ìoTî1âîÓÌ›±Àø³,š2VF¾HRu®b<ØŠîBÜ»ûâ´€ÀÎŒQ$„±´xµš__x’¹§•îÙü¤ ñÐc4 hàÌ(("¦ª¹-‹¦Nre€oÀínšE_¦õnjÄÎ)õ͆ ýÞµ77«¯oVð€X…tßxAàž^Ÿ¾œƒÓ˧yJe›ö‘«Ú!ãä‰y€œdMf„(ß4iTv_ŠLåuÿIG“äÓ$¯ÕF•}0RÂÖ;HÊõ¡z«êhjäÝ6iO¶B\å:É¡ «‘ (ÌT/©Þzlˆ‡ÆR[võ¦¢²ŒöfYÜ™gµÛª2‰£ÔˆÛ¨ÌŠ<‰Ö iÓ¸Èv©ú¢Å>cÏ[³Ïž<8.¦™ ÞóùòìzñfµxýêÄ‚/ã ¤ÂaÅ¥ÊUià˜º‘yTêS£r]åZÒÑ´o¢Ñâ!€–“ÐMò8mÎù ¨›ÅY‘¯‹|¶Üeª½y¹ÛF•êª{Oøn”Îl07†#8 ݨÖO©k$m†w0&gÃ0%Cd ¬UòSê\î2ß™ù6pˆ‚`pJжrW”Æ´ÕóðdwèGØÈ|Wc$‚©=F®P`sJ/C¶Ía{Vß »WT„Î`#òf@¥îª…üëlzT¢RKU7eÞ˜ä€FÜE±¦?õŒ¡ˆµ¼ï_gʼUß‹»SŽ$‘ã<&ùZ}ÑVãîç¤ÞÚô"ÁÊ?lÚ%"ÀöÝŽŸlJ€ÚÕmImJâÁ ËÖ¬rD9ý[-V‡byõE™k.k»|n­†Bÿ€ ?B&äX/¤œsiR®!ŒÒMQŒº31Ã8úõ˨ªUY™—QÞá}´™†»®fçpEUiv$•ÙÐTj=µöÂ9€EÆÉ¼Tž n±Ûî+íWÈÝ+¤;"vyº¸éñ} q&¬‘˶nºMÀŒ‡.Ã^øm¢HJ°¶*) ÑÝO ‰GÜî}îÑÀm2Ã[é^¿Z®£Û´Ûk0Ò‹8n4©.ºó š‘¦% zŠ|BGÝ&37hk,Ž»LÚ¸qR%E®ß²–>l…Š9PÀQ‰q>ºH 8Œ[A#-ùw»FÖVA G„Rù ˜ëº ìzþÛb ÂxùËb¹z}ýî;:»oè^Fe¼}dž{¬¥.²]YÜ÷t–’4©÷]ë>W±ÊnUyP*¬J¿š™¯ïœøw"$²Î"ùjBÜ|ȸùÿ̈›§N„7ËùòÛmw‡_ú‘nEЇl5jñùû§&…îsúQµ²6BK”r4šiq0ÌØnj%ôÐ Þuí\ Ú¹ Dt7 unÝ#?‡€â›û.z8ô& Ó‹4_~·ÑéŒ"Šõm~Øwi3"ùÐmtÁiR ¥iÀ£~àÖB;pë2«[è|·Ù™@‡–y€˜<´*=¸Þ—Ö~+‘ðÕÑ¡$ Y8&Út8i« ©BÊ,p9lÐÿýì¾sâº(+;G ˜-°ÿßQäUÓ_E 3ö42Ó¿¤C<•ÌF¿ÉÇàP ~qá;ú=ÙH:Š ŒÿBÓáê endstream endobj 2354 0 obj << /Length 1252 /Filter /FlateDecode >> stream xÚÝWÛnã6}÷WèQ,†WIÎ[š:[h’Åî>(²l ÐÅKQΦ_ß¡HÙr,o¼i Eó¢Ãá™CÎüêgÿœÂÁð'Æ8'äaî‡Ü‘‰³t>0±óaWþ4\Üpâ‚ÆBPg¾tê #ƒæ ç“ €=B¨pWIñ§\—CÂýŒž•µŒÓ¾I³ärè Œ[ZŽ1 ÈðËü׋°K0ã1ѳ`Çc1l'™ÞÎ'7ùWCº×“K=èˆ.p »Vp RDqh,Uõ“,k•@Kì9k¶ªZTµ‰GÏË\øM%iê´©Ó‘æª)R¹gîãîœ^wÒ±™ôq6™½›q]Yªy¹È£´8wÒéíýãüâîq,Ýûa¸WW¿M@Í3 ÑùÌ?dB =J`%/ 3¤d SO—¦Të–v½\¦…’›ö")ªT½XteÑ¥)Ÿì \mÖ‰Lã(3Íu$ó²HãJswA‚ Ç# Jëµ^È´eåJj ê`EëÆ&†+`sžãÇïj]ÖÙâs\JF±Jl¹MdëEëÏ zøÐ‰f5·Ô^«¸‰¤²ÓX¢ÏÑ6YÖE¬ÒÒbÈwµŒËR.Ò"RÉ›jÆe¾É’oº•åyôm+G…ŒsÕÈU©F…v²l¢_õ½sW‡Î¥…Jd¥R•¶äN:s̨XÁôÓö¨Iÿ¾šôÝjŠWLúãbÒw‹ir ~BÌ¢tÕ4oõŹ[ø92¾-ŸIåÞËwÒŸ*Gú½>ؼƒ„jiü<™]?LïçÓ»ÛK3ˆˆW§! Ûü{eq5*yŒ1“¢ã®%bzK}Rn‡4p™EÓëNën4èÅt,e™[«ú¬?•¦#-6µ2Õgý-Òß¶º¶Û]•¥ÏY—>ñ}ˆœàˆðvísU Ÿƒ¿»¥¶ö4äˆÂ$û­Àœ3v)8ï‚D¶QÒg n>zv(bQ4„ñã7 ñPÀ¤ ÷bA´‚E#Ñ;G£C„òBà-|äwe¤ß}Ð#<ÒlíHOû×A}Ï?ú.ÿØI3½‘åQâ³7™ÇÛRA|p¢C+Rm­éân®w| Bø6çé¯m@´1$®¾^¸*…„†Iky#M€¦ }_Ð=­­NzÔÍ€ûÌØôFÅâ/™xÝ„Ý^rjYè £»`M°Óæö¥Ë$+Òö¦„,˜ÛÏúLÔe‡˜n®Á/›ºM‡ešhmâ4)´ªµÑ˜'¯m9×w~¯{é=ºšê]‡÷—Òž¦…$lAiÕgHWw{ÉÞ{L±q³S,®”½¦bû†–QVõãòy‹™¬*“jc„djkö¢=¨÷$!‚¢1ÓiU *¬X“ß§38GŒÅ_¦³ùÝÃï¿ê_Ë$Ú]hoáF›?µ—ZŠ1ߟƒ3}ŠGm &óÁ×iž›D?)çƒñ8|ú‚ôÃ:#GÚsƒÊÎt¨fÎlðñÄ»“ŽüìÞl÷îTÉv›+‰—Û3^Ÿôä Œ4Íz»ÉFÛüìºþOÏÌ£ð„zs+£c†–JÈÆÀ^ú ™¨NÚ endstream endobj 2358 0 obj << /Length 1196 /Filter /FlateDecode >> stream xÚÅV]sâ6}çWøÑL±"Y–eï[š…”ì6ÉÙ™ÎfÄÁ_‚fûë{eÉ€Yh“¶;L¬ï{Ͻº:‡g‡8 ø¿t Ë9b˜G܉†pF#…3w>u0lÄÎåÉöçIçlDÁ(Æ1q&sèbÒÐá#–&3ç‹»©²®çÃ’û®ë1Ÿ¹•W•i¡Ì`#¦ª”¦Ÿ¦Í¥Ò©0ƒiYÊYZ$J¬ÌÄ=f8-zR$™îRøýßý:¹`¡ˆ±õ½ÐÎ ã¬q~ùS埫·:-×jçµW,–yòÒ+VU1ßüîæcÆ‚˜§r¥¼M"ÓD¥e‘dfZ¤ Q´À5n§e^eâE‹öÚõÂ\–ùÎZ&P׋hèçfR= Ý¡àºZ+ƒ6 ûh)!ˆ@hØ ]‹(Dاͯ‚ŠŒ\¨B Eõ¬ÑVÞhˆbJšÕq›1o6ôcº©MSQªv¾tº8<xgí‘b¶žŠY¹»È£<Ôg 3Wç@wly+‰z¡œî|^§pÌM2“veæÛ¡›9Z·PÝ5ˆ¨†­g’bv`Wjò+K•xûUÏLDúâÏ”LŠUVì¦Ô-s!빕™Lª*KÅ +^]‡ ¾¥’Qÿóp 5kþ2OnF¿Õü;RÓ±Wpñ*‰~jñ°–‰üfF>Æ|÷¯>¼?õºéKc¡w^ÊÜF\?i)KÙ3ý¸­!O8°›Î ÕœýPþñ(6Eº,7‡ÞÙwÎ3T"ÓÓW¢XƒWëB4. Þ¹ÖãAš Í "ííhãS̹¢pÛœ—ÃëI4èFÔ=×¥Ñ]á0Ä}nëÆ‚_­$°rÚ$VC2pjmZV½ÝÐ" q‹“÷Úb¼÷ÇoGd¯WJ^Îòï+¯oï&g7wh Ó,ro»œ»ç£ó_û­ñ?[xëáNó–ûªo(_÷вð¶ô§'€þZ:gÄBÈ“ ߔ͞¼^”ë¬ÌlF%Óû3‘‹BÐtPÔ•VÔú»¬ÔWU@& ‘×\XäzæÁp\ƒ^÷½×ÜÒ¹¥Ïšø¡5 6”^ýf™Ö¬éèŽ §Oéž„¥vKÐÖ8ùÍŽ{ŒÚÑÝ­T>Av9|#> Yôk8>@ÕÎ$E|ßÜQ§)«: ÛÐõO ë¦Uµ#¼ýEðùâãðêjˆà)UúíÆ£2å@uáV­ØW+xWÅãÇTç$}û¾Î{ðïè›Äù!ÙÒ7;FßË·Ñ÷ò5ôýŸ±wø7ì½l³÷òeï½óíRôq€"Ðb49Š,•DAë ÀŸ]ž~S endstream endobj 2362 0 obj << /Length 1012 /Filter /FlateDecode >> stream xÚÍ—[sÚ8€ßùz„™XÑÕ’ò–Rè’ns§3¶³ã€!N°Mm Ý¿G–!¸54›eºÙGç¦s>›/ˆ¢|ß øH£°$J+¤…ÄDøZ <× zÃÑYçspñƒâӾлZ™Æ>÷‘Ç(ö™ršãÇEÇc>“í³Ž'áòè-²8]ºÉ4Ïw—f©—G“Õ8š¸…"ªd>IâôöD³(‡µÎ€åXJgf=žÇnGe©›­æYrç&I¸Ìãoî>šGI”.‹'ýÙjy2Î’Å<úf§i±,Ö'µñq±´¦7æOûÂн¦Ø_÷FÝáà:\]ž¹MTîn‚˜ÂÄ'>ŒÀÅhÝaºoœ‹*»rgø6 {at<Ú†P¬À²p«ÙÔ]—÷‘Ó±´¿þmOôºßlŒÎ!ÁkÈ96 ürGW‰ˆ]SÍ6ŸiÔcoéFèÒ¬`lPFö¥~Ž6b6RM™ô1a;^Á•qºò*“p¿ È›3S«^E0á[¯ßwÿ\\¼ÅÐ6fën, õék ‡,°2U§ {ï#(ç̓Qp5üð‚öÒN]7Âå¦e!橦G÷až„›‚mõ‚Ö—-ÙAmÿK¥±†xÇIëãg‚&°M…¹Ñèk)• ÁmNçhÔºqQŠ”¬‚ˆ â;_V>$û³Yç?š¥Ü`̱۔–mÃaÈCÖ©àXPSwÁž»ªÂÏVù8ró~<,Ùçó%hSGñŒù ù]r(ž²—hn·xœÂ¡˜ ”½ýŽæísÛÂÝÞóÊDbªUI±ºËqq¹ò(“ð—…™å÷ÙÉŒ•#‡ñÉÅúÃkP{;ê^ìÓª¨œI²IÆic^v÷½ ª£Eœz«Ôá/›‡y‡¶ãÂrÓvíAܼˆ³tKÐ> stream xÚ½Xmo›Hþî_._°do÷•]ò­—:½ôԦݓNm¯"SN6¸€ÓTê¿Ù]lƒƒÛåª(fYfŸyvf˜æ«Cœþ_:©ƒáOø ,•tsOq'œ™ó®‡A;/7×ß'½g—œ8„ _êLfޤŽd X4 ®DRõ‡„PáÆqäýO“W½Ñ¤÷µGŒ6XÌ|Ä@\/“p.z>a'„‡¯Œ˜¯œoFtáp„™€ÑÜ÷Þµi'œ!Nü&zÛ2)ÜXàq¶Ê§‘½¿LæÑy(0ÞGJŠ”ò;¡F¥‡|Êw©¡™ÑÊŸ]‚õF>ö‰^2¤˜›5CF‘à¾]sõf2º¹ì+æ>ïSå^ŒÎ ñ]߀~UHR €D<‹T¬nólU&)D¬ô™ÞjCÅ4ÿ’ â;ý{w?¸›Âû0¦ƒp ¿[ÂnnQò~<ÏPØÅ«¢¢¶ÈÂE¤­VjQúb4¾¸¹z;¹º~sn×bm q‰0øÏˆ—I:\¥Ëþ šÍƒ¼Oܤ€°u£b…1÷N›:Ê‹$KíD6³¸Í-pŒßàî +ÆeÔŠ ,Ùcaá̼°jh¤L"Ïó #%«°*–-J¹!Ý( Q.›Já5k±4¼\ðµAP«‰O‘Ä|" óTp7£¿®Æà?kî?®Æ“뛿 $ªhDÄE¥ö¦Ž¦7Ù]´¸r{G1öíHþ«?_Ø› ­¤'¯§ïÖß´)ìC€^ÁÔ£©\ýHb>!ÔÛdLÿ°Œ©—1*:ɘ mñC¼0˜u£Ôƒ£5”’“³´b€æuÂŒ*Ø¥$O›ƒaŒ?ÛÉÆ±Ãì[Úº¶2$]£ÿˆó JNðìÇÜv®Þ;¼Ö¢vµ<¸òa¬m±7LO&L ãš!4ð?´FùddÃy?òÚ½Ç#3ã½Zh˜êªn½5gwlÀOÕ¿k³úWË'@,œÀal׸(Ø$ñ(›#(<̘õ” Ž«+S^d‹åªŒŠªðã4JLAT•9ÿæ• k”BÒ;YË|ÄŒ¶"!oS.ýÛÆJvkA‚‡8æ§Q¡Ê‘È׵ؚ ƒSªÚÿomÊ8’PÞ kb{I“'Y³ŽX“:í³Ÿ¤}¸­+Ò”Öèø?u6´mcš k°9Î%MÒ÷v:urwz ÷³Ž¹7iYòO¼k`¼­&{(ù5!Ûã‰rº!Ô¾ra¾ÿ:ݵ†÷N±Ðñ)œÕn3ö›RvfJÚUþbÇ%{ 1ÌÌ'b &œ5œ±ÎöóÆ?(ŽÙÿaü³®M‘1äp8K¡šõÎ,ƒ¯zxâ–_";HRý=TFyQ&eÌõ¬r§zòKÇ•”­Ðõäwý 5€Y¨W‚ÂJçÑוî 広 'n­dSS¥QÌ“ÂJISD&‘Õo×K€YæYžÞ'‹ Ô ¥–²m¶J§úY0/6ý&s-õÊïºS%]ý…̸ùp†'fçz`¾=¶½,KG?°{L¢.ÜqÙÕç^ÑÖÒ¢>X\[™™•÷ÓV'QDå&*¶o†Ú:‹,¼Ÿ&³V8."êñ¾jðZþ²¶Ñõ´Ìê]#Þèí«ÀÇÉb9OfÉeÓW‚ù<»‹ÂA;ºßŠþ åC²Qþ¡ý§Fç¾iqªt“Y83 Ã]y ËîÿŠ&½µ endstream endobj 2371 0 obj << /Length 1289 /Filter /FlateDecode >> stream xÚÍXQoÛ6~÷¯V`›%¤Hæ­K“,)–6±7`h‹B±dG€m¹’œeÿ~GQq$GqÒFI† Ò‰âÝw<žøÝù»Ç¼þyKâŸ4ŠHª´ò´„Š@ /‹½©wÖ£8‘zG›ûoãÞÛCÁ<ƈ‘¼ñÔSà)N‰D¥qä}öÑ´?d ¤?›…IÖÿ:>éŒ{ß{¬DCenÇéVMá}²è}þJ½_žx”p£½Ê© OÊ%JsoÔ;kCg‚ÁLÓ…|Õ*¡”w0œ¢› ö‡\Iÿ •t”®³Iìž“y¼×JJï‹hC¤ê&`8 è#âÁ©"ÌtŽ2Àx©¡ fÁßbž0J 5̪ “Àê 9æJãÓñÁùa_sÿ]´¿°W:¾…ˆ¯ëÆ$Q Ð$`ZU–òõE–®‹d‰» oRñ[¾ú¡Ý ì2]¯x–ƒ 8+]YéÊJë fѬ-oWÐÆ*êÈøÏÑÁèǽvºë¼òv‘F‹0Y¶®e±ïFûçÇŸÆÇO÷œ“uŠÓ1ûM³Ÿ.Vë"Î1?¹ö‹K›¨Üøˆ‡1/â,/’" çîõ, £$ÆWÊ/rg\ˆºq¦0ƒ ¥ñÌÍ<ˆQ´œbˆË1_L••!^7$ˆâ€ùp;í åÕL›\s’¢ní—¶5ßµ6hó>Àiê}Ó±ïM·œóôU£y×£G8Ä~*FC.hyþ¶æ)ŠÊ¼V¸nOFv èÂÝìú®õÍ ¬U¢a.\Fmkäœ@?×~6±,UŠ­5RÖÇC8hGf‰º /o@;Í ÐhÉ2N¤¨^/cK!œj?Ì*I%rÒ4Íœptô®Y/ûÌŸ`¹æIjåpž»WéÔÝ K ÿ®p­Ú¯,B…°¬ì.â"¢MâGq\…¤AwœÙ­Ý$%ò¢¸[–`-G”äž 4aŠï*K°ðãÁVYÒ@À Óm٘洞—„sÖ (×H‡ª еaËÖb’hÆo²ÙÙÌsÒÊþÈù˜YÈçè± œæùÁ_Ç#ä~KØÜÿýx4þxþ÷ãjÌ¡×Ó¨&ö³8,lÎØJä4½Šq枀Rã${òœ|xïÊL°ÂøÉÙÍ×ß 1.CM( vVšvÕ™ÖH`=Þtìq†ÕÒ˜{]tuv5`VF.~ºÏ0XžS݉g`ð„üÁh`B†õj˜œalEcw—!h©âº è¬Ëx¨É¸°»ÓÖX\]£tum¥‰•&(E×Ñl å-‚3õkyÈWõ#¾œ ¢‰Ó™”:åSto—‚1R4¿òíS~¬M©VúÉnNš¶Ô üU†ì”–44‰óÀp«d<8 0ó4² 0½EiŠ2³ƒàЬL…;Ëtô‚“Øâ³:Á¹Ê+ÃM3¯§ëùÜØ.þ£ÏÃ|ÏK|€’ÁÓˆ,f Ø0Ü2ߢϱ~ka"ávÛªrOc"I àÒpƒ=†‰îó–çZwâhëßòn73 ºUy1fXߘTæƒYv™"3”WŽ×gÿ}‰Ýp×ô›_/P[ŸÚZÓ­+x­:¸£ÿ:8h endstream endobj 2375 0 obj << /Length 757 /Filter /FlateDecode >> stream xÚíWÛnÚ@}ç+öÑ–ðfwöž·6”TMìVªÒ¨2`(RÀ‰ 4Ÿßñ%i( ÆUóP!l/žsvæì±¹%œLð{Bæ„áG9C3Ö+eR[I²„ŒÉE‹a #'ç·Që k€pFsœDc‚##U8)‘Kï¸õ{£ÞùÙ¡t¹zÏH†2gËððf:–ó?ë¥×qæsoºðî%#?Bx+ï$ÙbšÎËÒq™WÚ§y¹€üóy'“xv—ǵ:Që¶Å‹•rBRH™ ª­"ÃYëòŠ‘Þ<%Œ ¤õ£A¥ÐxuMÂÖE¹ò:"CµvE.iu‰»¸Ù*µœ7ªiê |S¡5`ÊAˈzën5uFbG* j`¿ó¹b÷Êb¿ë…ÑyÿKÑÊ59¬‘³T#ý€*^q;Ê’ø.ï¥奫d6H²rŒ¹òê+Sìôý1žøzù´‚ò­…“ØÔzÙ8áœ:¥ R©ÆŠQÉÎP+Pd±s¥ø‚{ÔÂ¥¦À]1Õ ³Ÿ2¡¶1àŠQP²Nb¬²)צËl˜”ãîô:9ÄÒ0¶XE5èFèu(fþœ;öЕ5ù7Åœ·žRå”ÞYÔéw}+¼7ù¾=êì§œR¬5á,–ƒ,]ÞMçI©‘bGƒ8¯Õ4^´'}OÛ“UqÄüâ©YçÓäÍOa'ücfËEEi–Žfñt¾±8@÷µF÷O­Q*<ƒiÄó\ sí´ÆF@+k¬âÛPi>Fí0GÔ0þj̱Äó*:ú0¼ø­_ ‹O„}‘aм'Æ=¦Üß0ó©ÒØF ³F/3LM•n„8|çqê9»~i‹9 û¥Úê—ƒÂ/ëv¹ºo¯†íÑýhíÑ{Y§þo;¬˜¤FÛF¬3Ï¥´Ým€VÖYŽö­Sý]ëäU/÷´ÎÚ?£z¥À"]©ðå•ê‡ínmmÁþ‡Õ… endstream endobj 2379 0 obj << /Length 1449 /Filter /FlateDecode >> stream xÚ½Xmo›Hþî_._°d6ûÊB¾åR§—ž®icç¤SÛ«¨Á'ó i*õÇß, 68Øqî9ì²óòÌì0;;÷1ð{kĆ?áJ$°t¤áp0·nd17>0bãíúùëtpzɉAr… ÆtnHjH†‘¦©o|2%rÄÐ"„ s±ð¢!#f>ü2}7O÷RjÜF”¸%«ÖY4øô>,¾30b®c|/I#ƒ#ÌŒ–Ædð± QÁÛ0Vi‡R›!‡9ý(µÁPÉÚJÉÐbR˜Ÿ±À“¤Èfž_†Ëàlh Œ÷¹„º6’Xö‚ŽaÁéó.a„#Fí~”1›l¹Í] !J÷é%D ÁÈÅ.Q…0P,£HpW³\½ŸŽo.‡3χÔ1/Æg%îíXõNS˜@’J ’ˆ]Y\|Ë’"cØQdþu•~%j‹ÂÕ(»KŠTý÷ãÑ£LjBÕ€ª+ß35g~¼1ÅÆ-S:ÔßNÆ“—cš¹XU £Ä¼0>TéÕû·ÓÓëÛ)< ü„c~Jižßœÿ1¿ˆ:ÈfvQ¸Z”@Ÿi`«4˜…ÁJOâ"údz\:7…q,‚¬öè±Ûlsé{ͰÆVýÎâU˜ÿÐ0¿¢¸ ²pæ-õt–$™Æ^^£¨4g·TÃeyÙ(΢F É6±ãÇOÁøÉ÷¸ÎËÕÔF« ƒìLµžŸ‹ÌóõÖ~n@à¥A9)ºi*”«v«ðãTÐÒŒ†Ÿ”Š¿iÃŽ£uˆZEiÆnu@¼Æ Vîw#¬”€–·+j¿Ý ‰Røë‘l;ô ’"} DOOh¶}ÿNµ{Ñ@ …æé1ÔÌvU}3ž\Ü\}˜^]¿?ÓLL`•ÃY’_$QZ¨cF;%!›¯åt¡bpH×£. 6★Bå„\‰7HœýÕŽþÒ¥Œ#É(ɳ¨YO¨IöÉ+aîë 4¥ 8.ÄO í2L¡a-4/Û’6è§¶„ƒý¤gìmXü3ßš1ö†“Ü‘ÀÝñD¡¯u‡/…AX¯ß¿Jw‚¡Ííc<ôò›)²»]){s%í+±—%} 1ÌL/ö»dÂYÃëÝù'¯wþAqÌþ çŸôux¬ë ‹Ãá,…Ó.;æIVízp3R÷Ëâ3&vlåꎡÖfC*Í;/[z®+EùCÝIGê­kz+-" î‹0 |MûM“•+ù]%`ÄAæ-Õ¦âe9$fëÄŒK^ÁJÓ,QóÇ0òò0‰5ý¼êxfuURŠÊ[*0œšÉ\?5Z¨÷à¡@pR¶&`E{åõFS$K/«ÀÁ‚6îuhhq‰Íé]%!Œ¡ÀÙ¢ÑSéZ‘¯i€öü0ˆ•?óšT½ :ªñÒûŒ™yEŠ–qm ¼j\úÔt–hÔõÍOáäÜœf«nüu%Ö¾ÖRŽìMVO“üqÖTQ¹õÍ—ììu¸¦?ÎÂy§8.CœšuÖ Œ25ªR «îÉÍøÏ« T Úòß®&Óë›¿Ž¸ÁW5íÇyPÐçiV÷hŠ1ßTÑï~³«nŸ„Qº ça-£Üùò‚Aä>þHO¯gy²n€t·Sz»þ R;j_ŠÑ}=(%„ÛåÉ]w#íû‘ŠÕÆ¢—nd ƾnd/J«ndK)õ^ÓŽ„|é^ôa‰¨ó¼KŰ_¼ð©;®»í’ýíHAKž²)þ·n$õºÚ‘›äƒ=¨Q‘RÕž¤jt`/R¼¦iïëEn9¯Céöº¡³ )Œ›ecDX•l·Å‘ò/w7üÓ endstream endobj 2383 0 obj << /Length 2613 /Filter /FlateDecode >> stream xÚí[{oÛÈÿߟ‚h€‚Bͽ}?Rpל“:Es—Ø= Í¥Z¢eá$QGJvòí;»KQ$µ’hGö%@$Z’ÃÝ™Ùß<—ù="Ñþ¾Šæ†?Â($°Ò*Ò\ Ì¥æQ‘E×ÑÛ „8zUÿþíòä›—DD#ƒ ‰.¯#E#Å0ðÒå(z¿Èg‹Õ2+ "^Þdv ãÙ€êxõ &rž,'sÿt\¤£I6P/ËÁ‡Ë×ß¼ä¼99‘Ãam7wái(,‰ŒÂŽÄ KËÆÑj"Öœˆ#Åh”4È~Á¬¢¤º1@’·¦û“'j ½=Ýiˆ}‰ŒÔOÌ|s¶gGæ½Í–gß‹£Údý8RGçèY_Ž& L*p¨QòtÚê¢A¸8¢ÀÂ6¸Ãáµç6ì•U#IZ³¥óQHBJì±v³½–BŒ¨Žˆ˜ ÊTxeJÁò±@dQÂ)x]`Š0$xõèîf2´.üfpbâ´Èì@Ç‹´,³‘¿iݺ½·Ìýï«Wßû׫ùp9ÉçéÔ?(WWE¾‚0`Ľ‘_{Â¥]âÓÄ×qµEƒDa_Þdž&ûèIçã,æE‘MS;¹ã·¹ÎæY1þxfÌqÇ·!©Ìü­ öê&-k §É·»Î‹YhOÀð(±z£Â/}Vm‹hl‹Fp•$™ôT K¨v¦Aö>¸*¬8DwÞ† à Aö×AB¤Ú5)¼ÊµnN»^ ²°¯JÇßVL´¨ ä JXtk®=ù‚ð§H7I“pð ¹jñÈöDÖYE!Âj“ûoh¢ƒChìQíçˆ;Ö··Ÿ‡¶Ô ÉÕÚ'àв"J4ÒëÙî‚`h5ü?mSÚ°‚÷¨K "jí±»ªoLóH€Û'=(‚ê#݈dIƒ+Â[ÜðCÜ<0Ú<õ.·T´#6kؼg´¯Ú¡PÝG¡ìè }öù ¥GS¨è¥PRhWW „~]à ¹˜NÁ › ui¥;Ó*^øHxl7$¶§iÅLG‹ }%LÈ’$Y'™Ë÷0 G?F¡$Pý£Ÿê—ü¨ã«äÃuÂ:I?¦òkáP$Ú€·;“ä×ù¹ntjD<)ý¯ÏaŠq¿u nx\%ö…²šO–~tkú|ºše§6ÇÇñÝdyÜ$Œ]šxœ]‚JrÒܦ+Ïàd>nIûҸ2‰1 Å›iW9'q6͆Ë"Ÿ[±¤nÔ›-©4xtFm å†*ˆa`„+Õ·6Ô{|5óªV®Èþ\tgø=<Ô•ªÈlÝ:{9жP›y…º ±ƒºu¨mëÐÝJýîåöÞ­í)f•Ú»U%ÐRÿã+T4ÊQn#±„°Ü FÅ<˜ñ®ÑÒo¿x`â î³­­â«•5%ãy^ F“5ý䯟—Ë,Õï}ò/Ž-°ÓeÖš–ÉŠÉí@È*l¯Ò2èÿ Uãà»lmòŒÝ%}x źš¤MM~ûÈ/wV ¸ck½+ƒ9 *…SX”vš1_ˆ‚YGÁ!§Eô + û÷šŸ*aP#–K颸%\9?fâÒú¦tV]]ç…>r®ïnî¯ÊÅd¾ž¡ô·îìól:õWi±6ù…Ùòÿ¡Î;½dÎ;åŽa;Ê©‹î!%yÀyÒ‘-Ê%6rU°­²/Cà5ʾòr™,ŠÜvã¡5•¬,}JÇh áoQ5„!¶»³GŸ~þæŒcäŸ]¹”¡B·5¸Uµ}ŒÇéliéNÎ.O~?!îD•DT¤Œ‰p ʆ³“÷p4‚‡¯#Œ˜ÑÑ#~¹k.N£‹“·þ„µ½"…èJD Õóë–‹À¢Š æÇYTq¤ o/J¯v5ðNën»Í<2ÈÓ\sÞé¾Òª#X¤Å²ô·'U~UzõSw‚`ó«eêûölÝ•§•—€ jv*uÌÇ¿}\L'ÉO™àzW…¡ÀYƒ÷³å¯6UV÷sÀ64RUKR´\@ËÃ%\…(¦‡? Ž÷1jÞfÓ½íë¡n×ÜžAéÞž<^÷»ab("N !ª‹a‹ÚÃpIiÄm/·žŒA~ŠÙZÆ}‰ ËÑ`DÐ>‰`Möè®]K›Rp-»'[U" ×ÓÑP¿Ш˜‹ºfžÒЪڞ0%MÊp0írÕFO…"*­-õCÄ{¥÷¡¨ž¬¢ ˆÌ¨'ìN?¦û>¨é‚ÀȰۊÔ(¤,øv!!iƒìpVömÀнGêDH߀÷6+žÄ´æÇÆ*1ˆGÁj=Y/¬ê§Ë–ÉqÁJC`åÛ`åˆ1~èû«R¥ˆ‚Â'ØGRÕþnñna”|ž·në™YCcOp0y0)È…]œ0û.a*½ß¯'Ãà†Ö«~9'‡ýRƒìXgR­µŸ0.²ÿ4IÀ†h›j©ÿ`'ß>eÛV¦êœ²…¿‘` aiŽ“Ðãx|3ü8QOö¥D/{Pb½Ìí2¾mÄ{¹ß‰ü=  ßù~÷@WØïˆ¬° ­$›]\Nf“iZøª˜Ç×çAÝkÚ´Ü]±ÞV-¶ƒ±DŠö: áĬƒ•jUW‰ÂðšP±Ñû³ŸÏ/Î|ã%üûùÅåïþýÜ™a÷{ö­®‡v– Dbã¾(²ti‚ŠøM~›Í®ìñž½¢?²æôú?ø §];¸üçðíXmbpÂ@ b_—†³nyKl·Å›ù¸O ‡TyèB B`eÛ–0ZS„KDA«öUAöv‰8dbÀE!´Øµ¦ˆdHÛÂú‹J+(k/J¯ì‰•߈‹|U 3ýr2ÍžÃn`¼O' sDÔqt°ýöÐ £)s00Û¦ëè]¼ñlÛ¡‚¹wFëÌó7—gïÜ‘ë÷¶ö⬟ÝFÕ4›Í7¾Þ\£ô×rñ+½²{4)OÇtµ€FóÓñ­ÝÂèö#Œn?ÚÑÐŽ†0}WôÔOógW¤‰í31K5¢žxt:ºwìÏÈÿ¬FEHÜ>Éõ LÏ~¥ˆ]œ]¯ÍÝ 5usÙo°w%Wªp~œE•°†ÕZ“¦ÁF„M¡ëüóÚ‡àÈ~ÿa°ó…ÉõjZõ´GÙ2Ø“ý¼ðW ƒ¤ꎞ1qÏK£.aĹvn·†Åÿ¡Ìt˜ endstream endobj 2387 0 obj << /Length 1470 /Filter /FlateDecode >> stream xÚÍX[oÛ6~÷¯Ð£X¬HŠ"•a^jw^×&ÝbCתE;,ÊÕ¥éþýEɶl&KŠ‚Äyxøï\/v6ðûÊQN?,æˆ\pG„ a$B§”ÎÚy7 @0p^í?YŽ^ÌBì`Œbƈ³\;œ8œˆÁ¡eê|t9Âó1&Ìݨ´ª“Zz>åÌý+`Á¢hÊU÷>˶òÂóYìÑ:@ {Ÿ–¿½˜f 8ˆ±¾'p|ŠQ„¹¹fþv9½™y‚º÷rz¡´âX CœpÇ'QfUÍç²hêL,v ºÅǧýóãïÓÅ÷^ÝTÝy‘æI¦´m'¦ˆÙDvÙ±DŸ‹¤ëº±‘gþrº¸¼™_/çWo/ÌÌNø&±0â—E¾kjYißEn}Û9±’Ûµ¿*T•UµTánm6^·Ê_Ü&¹9°ŽUê/\ŽÝWRÉ2ÙšýL­‹2Oê¬Pæ|ÖÝtWfµÖÜ.Ö……¢ ‡Ãá¶óÛzÊ%p¬‹œÙºz¿´ ñ/°è%‘Ñ;ËʪöÍs¢Ró IÇ.XžzØõ¿zŒ¹I™µ›¸+³¦D¸fwÛÈj ;BïÀ¹ª‹²ènáýîjÕìµÊ€wm¸/(ÂT ýŸ”%¤ä@UH©¦ª]lÙÑ MÇp-S³cèªl|a£(Úó0ý0ù}öá>ÎG„ïÙÛôqÄöÅ3j›^ΞUÛýØÀ1!äÑ)ÿà2‹^Hµˆ‡½â«Ëô2 ÚØ ê"wÙ§X*!»jZÿx"tÛŠÜ<Ù(YgUqíosNGã!ívEKµ‰¶:ëÓ­ 3Ö«Y™er›v2¥4AÇ)"8}HKkZ«¢ÞªÅr²œ>H@x ÀVÁp@¡AQ ƒ­Vòfúa¾€f`ü:_,¯nþ|\5&E4TÄËR&mvèbzIùY–æ…1Oº‰ýöúeߤNJÑ$Mûóo®çcó4i6MU÷Šp`U4š.G_F¸íÇX÷ÔPÛɰ³ÊG?N ëp¢PïZ©Ü Ûš¶u£w÷4f3°NìsÜ7æ2IËuîQܗ뇚s/ Å­uÕû4iƒ©Ö°U9Ve6.Çza¼MÇ›nÿÐŽïïá¸sþöúýò¤|ãL¸×”ÿÉÍäÍ8[|w+Y‚Ám–jò}kó 䵕 …-«[ó´+2UW‡èÌÔäF–§ÑÞ ÂA¸¾¥Kž GÜÖ|m´¦±ÀÜԿ˺)Ue» ªA¯ifqˆî°á£¢¡óc‡ÜATõ__†s' c´sˆ ;ñ?,„€—Y?2ÎîSC{¡ |ˆ O‚oC÷q î;ÿß6JaYÿHìqA©ë‚pîT†HéÿÍ ‰rÑãçI&ú´dúOÇþ4dξQEÐôTO} Æxp&ã´8™t endstream endobj 2392 0 obj << /Length 2648 /Filter /FlateDecode >> stream xÚåZioÛ8þž_¡2«<$’j±ºmÚM½w°ƒé, ÆJ¢…-§²Ýc~ý>¯HÙ’L9¦ ì¢(DÑoÞû$õ%àÁþ¿ Ê€á_’ê(aÚèÀÄIÄbeâ ÊƒËàà ^­ž=~É“€³(e)F—–,JðG£qð{˜•ãÁ£×_Ʋ &°”Hj 3 "’@G©f5„‰„‘ÁGZk 5 ¹§¶K•Ë(U:hóÁP2fôÐa•g»1¿¹Î«â¢y½Îªé¬,.,Øå²¼X³2 c©ÂÑuƒÆ>u8ž•¹Ýù<&üaן«ù‚\ÌJúéë@è0¯Eye÷×î/"$H:7‚Ê(‰SËübú:%æéq1›ÞLòïx1Œøð¨xXX]Њ¤!ȵ4ô–¿ÉÊ9Q²Ø`ŠzNÜÖr^³ç6í¢š-Átî¬fÚj–‰††ec¶«*ÿy9]ø,×1Ü4Ч1"<Ïs'4ƒ´ìH½‹°ŽS+ºyYM¼~ ãH*¹¦ZƒÀ%[ CÍá+i0"RÊyéÙɯ§ç§ïÞÂ@R†ÿ8=½;ûí ýù†Ï÷Y&RRA´Ýs¸Û"‡¶‘„Ï–WKò Z Ƥ]}b {ýË ¡¿‚’FÍx>¿¶«›YQ.æk-ÊcläWyÕ¨“LÜŽYh.‘Àevk£¥dDÏ¢,°›¬Ztÿ`º¼¼,Ê!ì}^Hl%VœøEt¨¨Xç!l}ŒN‘unr€58W™ØÇå*¯· ¹¿ ·Étš}ÿJÞê£ÙH1w­7É!%izÓÜeôÃõreåHÖª¡ð)ò²§õ5áE¸ù˜G|É6ûéÕç‘/NΟŸ¾!Ã>ñ¥mÊéθô™M.–dPøŒH\i¢…ã›’É‚ŒÍjÞé—Ì>Vö¡—)Á-Q›•3m¶+¼`á©ÛžFe—ßèÏfÕx~Œw‡W…-åe™u#áÑy«­@Aib)cpI˜ÃœX»¨åAwrž>‰'ª]G/=RɘÛFÉìo”X¤8ZÀd\å8ñªA«|¸’H€¶Bí´d3³¯ív§OD'ODOº.%¼M¥aVÜ–YŽq“YÛ•[[_lkU¿ç‹eUÎ}ÔL/=Ñ‘IムB¬ë¶A¾Á­š&(é†Vl"¦5‡R¤ÿ§‡ÞYÈHsåa¡'NéDR-ùPbý•~¶ÍoöU«ÞŸ}¢<Åà·Üþò/ŸNñ{ j-°Ã¼’ƒ ÿæPÆžLDCYWS]%¤-öE“ú ¢i¯I¼y‚!f##ºÙÒ]±Q¡}6Cí4óŠqãí]Î*›é'™ý…Äšçù±«Ê³ÊÂåß3*nû×Èî¾È¿’³Q¶¸Î(ü} \ój# ºY4:WK@O2ž¦á›*ób9µóƒï”„µwù ÁÈv]_–Tݨí£DÏˬF€¾q€jÈÜë¡ SzšzlÐqôfáƒT—EÓØTžø°¾côozéH0ÞÊg꼤•ªƒ •¾MꟖ@ä¾"ïÏ~+ˆÃˆ¸{I6¦5Vª6GOnTÄ aôqº?Æhíšù1Ë™ì Ý¥:odÓàúå0ëøz!„¹;8£4@È#¬wq‡†RóހܳQƒLaO;•¿{ÇÉʶò÷ø—Þ†a›¤p«Ø¸ZûÜ‡Ï -jOžÞî²pFô³OýÈ亅äÛ\±ÿn­´_N,uì5ÔF¹Rí£˜û¨ÊˆÉU¹š:²”bê¥òG–D’ð5>×˵öšœµQ ×GYÑVèŽÑiÈ”X¡yÄ=x@Óˆµ2<8à2iOì'‰Ñû„¶‰z[ZJ2-)n{` !²`ÄŠkoü¡ß5Ô!Ú_æ@Ç›ÉA¦Ê–¡ýɡƽ3u­µ“øòz:Šfm©UHb̰\D©!HiZ¾Ò•"F×.xzˆM]Û*Ä W[ˆÊo ØY`nhFv˜Bú[Lj+ÖVûɵ^î­õñÞ®H2n§) d¾aµ>{Xì+›1\”íVœ¨{–ÍÔ ÌtY#•lw•ºV ”W‰æ mÛ=«¡C†FQ§É-«aW¿j¸Vë†Õ[YÚ›}ĸR),•é]Ke/-tJåí´o¥øXHͶBºÖi§PR!T=vH¹6¡¯ÖR–“?¥Ø>Ð!¡Ø"£`d? ÷Rl²vîW[ÎËzÅöÑ–JK§t½J{H×Î}%™®ÑÒƒò¬À”mvÖd”£“®¬ÞšÌé AÿOWåíh¼Ùy“„0ÿPÐto˜vÝJ ¢­2œ·xp:³h ²ª¾þÔáóIþy~A‡J×ÃW³jœ•v¿>¸7íƒ{ÒÅýV߮Ӟ(cѹ­ðäuÌžXóžâ<‡2t‚“öe¨4ªÝé‡nb“úP¦ýM+œ8‹¼šº­ú̾Í|÷v “ˆbfº'Z˲XØSô¯$d^аðpVY>Ñv"föæ9Êpä¾-¸Üë½8/]/”wW€õá#¹C\cH#Þ¤…íüèΔ“{ŠÄ?Í`·‘±$4Ö‚óïòîEÇÖvA¨L$Rì–€¾ÀiKðÝï",V·h 律öhÕÕéÍL+¸ŽšKnX-áî6:aýLÛ/$ †Ê5ÚiéªÅ‡¨Œ#.,œ„l뻵‹^áRp2fvtÑp  Í:<½)OÐý_|ˆvïä²^'C1VbÃakÅy+Ôj´YùsË™±V;Óýýe7»ÓÇÁíã¦~¤G?¶ÓûÄf×};±¹õDá°ðL O¾/>¥Jê ‚‰O©1+›ýñ‰–®b$>W¸‹OÞŽOÿ–D–,­o[•r•ñíl‘7÷ËÙÂ^(»›fÙûŠvì]3}0F€u™Æn]¦ …+ÓøÉ^­Ë®Éìsý)#~\MŠ:ä0o‡'öÇðõÐõtKÅåw÷±MzÔï¢Ó‰ÌÝÑóº;?ÕªuÍÚ¿¢ÌsÎÌùÔÿa¡d ž¸/ åÃ~Y耳ü[U,¹ûèMöcõaaz؇…©¬%ü®pÇ—¾‚B ‹¢C*Ç^*:’ößo:¡ endstream endobj 2396 0 obj << /Length 1552 /Filter /FlateDecode >> stream xÚÍX[oÛ6~÷¯Ð£ŒÙ,爐í!kã$-Ö‹íÚ>(¶lk°%W–“t¿~‡"%K.¤] A J<<—ï\éÏ –ðd†?)$°Ò*Ð\ Ì¥æA‘‹à]!.›çoÓÞ³'!(‚ÓE h FMçÁ‡P¡ˆô‡„P.‹t¾KÿNúC¦Dø <É÷Å̽ÒurÖ ŒB´ˆ0‘þ§éËg#àL0ŠpDŒ AŒŒ´sýzz1õ5 ÏûT‡Ï/ÎÌ¡¯mu›‹@Šª`H1¢˜XN»ýM‘ïË4½DKk£o|›ÌËM|[ 2³±„G™—ƒ4+—·U%n z¤\¿~û~úìÍû)<À~¡Ã·}¥Âóñùï`ÉäiêS$“]ÎFG\¤gÖ‚u\–éÌ™»e^ì싱)ÍE¯Í’ ˜±¡¶Ã`L<²œ­áö¤c}9´üìÛl_óÅÂÇ»ÃPX~Áø™}»2hé þ1'ˤ¨ô~HëÊAÐÕRàC¼¶Ël¿¹Iœ¸|ÑUâ¤@¯œ*ºr܉ccÌçâ6^;þ‹ÚÜ$ž­ìjž Ašg'M¦]WgÇÐ/.&ÏÇ×o§×o^ŸÙCD¥U×)5J³9¨È5ËUbðŽAyç*úKÏiÉkŠá­ÉMç`®‰ÃÄH¸[¥3³¹²³|³]'e²þb·gì–qší,…Q©Ú:ðt;wi¹rÚ²n²DÙA[€–…¿Ø‡ÓBñB‘Â=, ݆Tö$€ÏHJ¢ EgήtWÅÊc‚´è„¿±1.Ó›µ)€ŒY½aÅ­mæÓh4µ W‘0å"œÖûù¶L7&”Í‹Ëà .Á2µðdöûyùâ‡(°ÁÔ( sñ’9PD  ï0‘.î}ˆHÄ ZT¿z…R¤0gštB¨ã„R~/pÞá&/üå Z†p±×B ¾lËK}ÒX¥õ±°ÞÅ´÷¹Gª>J*#Dx- ̃٦÷áæ°ÕqÀ殢Ü#¦$,×Á¤÷ÎõÕ£èÅ |¹†”Š˜•ù3â H…a`׎ò§þR¯$b‡$ýÙÇpH ðàBÎ¥w«¤ð–F HÄwaÜ• HtãtgÃúPºEH U ö²d@¡k ›oìÐ MŽê òVV¥1I’¡;¾øãzeÕ²»ºžLߌÿüþþšf™¸nñroŠ YQŒÙ¡!¼|õâT+'›ü¶>¿Éç(›ö¥ªKÕb>¯ âb¹ß$Y¹Ø÷I²-“CW­¨Wj7Ö%Á ÃÄqœ3h(Mœ3zäÇÃ#“\5Ã#uÃ#Û&-ŸÝ2:Ös”®$Ûæ¾ÏZÜ)gh²Áýÿc^Ì:X^ÌÇ¡«yó²Í×_²|“Öó“›ò™î;2 LÝÐ;91><×ÐïškÆI¹/²‡+‰öœÖu"ó·8cÞQ%i°2•d 5W… `ÇÍF¼}Q$Ù¬y‡:dBÅ£‚4bì aÎqWžÂ!,ŸÐžMóê´g½O.oÃp¦ÖÛ¸§JC¿¯Ô[¦»\}v´i!T·È(Òš„cì™ÀOºé ÞnÉÓ'£ÁEƒwÐðŒI©¾ÖºËÉ.k*/ŽqÑ@Ÿ€Qùãa¤ÿÆo ªÇ¼qbj‰`êæÂå] äH£Ö•‚Vr¹yÄë9XäãÄ^Õ«L öYå’Dß&žœ/<â©ìGê !ÝøF¦¥Ã” ÷»deM( e­þ¸-rH~Î’ù¾º‡¨Ãê%¿HgñÚÌ5æã®ŒoÖ}:ÚjF©3(qé>—¹½Ih¸ êÖ/ I\Ø"º‰á©Â <–¡©ÃPiÓ]Õ„ ‰¹o{/#Q; 2_æFpч¸¤Ü›¹0þ’1hTÞFF„)éÒÍ‘ôÇΑÔ3Gžo‹týÈ ùÕH±*>ž8Ñu~<º‘hZ] ¤±Öy-bË@ö? ªîÅ endstream endobj 2400 0 obj << /Length 1253 /Filter /FlateDecode >> stream xÚåXÛnÛF}×Wð‘jÄõ^¹¤ƒ>¸Žì(AmÇ’SihŠ’¶áE!)Ç}é·w–KJ¤LC¶‘ Ã/³3gÎÌœ]û«E¬%üž[©…áGø ,=iy\ Ì][yd-¬ †Ø:ß~ÿ2qb‚|!¨5[X’Z’a$`Ñln}²%òÙÐ!„ {•ÄA0t˜öXài¶ÉÃÈÜŸ©8::cc…>2ü<{wt> F>ö‰Ž€-‡$5&³ñõÙÐcöÉzöéøX/zpzm/I*-‡Äýj±¹Í³M©R%¼© ŠQº\‚õ· NFñ|´ÚsqÛ­Óã÷f:ž¾Ô¦¨Ñ$Ù< TúÔ “‹«›ÙÑåÍ ¾€cáÙWC)í“ë“_Ç@ØQ¹Ìíz6†ðJulý™©´4—A™%õU:7Å: UT˜›t“ÜF¹¹®˜MG°6ZFyC¨./aHpßDÞ»ÑÚ.²…ù>µvÌòâ9¾M=ÍŠÚûÉÕo5ÝA®Tº4wa- òHË¢ò$¸Æ0Þê˜a–¬ãè^ߥË/Ip¯Û&Ëçú*NànGiP&eVj`[pNÛg1©»ÃGÁ|‹j®’(-T–vÙX=‡0fDlÙ}$*.³Té–‡\Ý·=ˆ´“ü©Äþ¬:} ôf<=½ž\Í&—Çf{N%¾gÌOƒ8ÜÄA©{ˆ1f—+-ŒëZ9U½ôÓX€ñ°·0š’Ê63¦õÖÍO?0ù¡G„†rä‚V8®Ç'SÀ\;šLg—׿¿|ŒNórª‡äzwÛÕcº#üÝû7 »ƒñlðu@*•&Zi9©v=+LŸ>ckÏ¡Àˆuß*«Äâ “ØŠ­éàÃ#rͤ‡XÓ ×|'ת(ã§¶¶{Šd³A²53|ë‘Z®Õrt·\‡ÿwÑ®d”)~€ŒV,wTT¥ó¨ÖŒEÞì¼ëá¬^ZëhG,÷ èC~x'd¢©ZÐNƒ¤d«oaÚ¬R#/­ð0U±Ñáè•H·¶¨ï&Òb«Ñí=࿨Ñkcšú ¶CbGæZYŽò¢T¥ bó´G­õmV¯êÅ]µ†7M¦úå"Ë÷ÌÍfOnƒBær±IC§¯h:l†çÜž5[ʃíAÕ›ÎRÝiÀ`FìúÕ­~ð—!‡³Ž"p¢Z1D]b½5†ŽÇÈ—¸²óA†¹Åá´ÝÌÕ38k™é’Öq;•äˆlŒÎû|Š(ìgµÉ«>'ú’4_úÒs‘K·¯ûx¹ „zÌ=·“9îC+%~'óGcr×Sr5PÏþ¹j u€?W$bu7÷l¶ö/æ¹–ï!*ùþ†Ëa|š W sÛÙr»XWž‡°[çE+ €R î±Ãu¦‡ëì¬ó³Y3~øž‘+wF˜ôW’C§ãç·ïƒ®aOéúƒš¦:ù#)¤Eá³î–¿Íéï°Üi½2èc¹B$Ý‘.±ÝYgøp/Ÿ5Àã‹}•ÑcBé–ÀŽ 8zJ· ü±,Z]Ä \@ŒÞ]Ìq­/2Gœ@â;«çôGeÞ÷¡Œ½”²®:È_wqûNâr„¹¬NÌž_ÿ“åíE Mÿè–P  endstream endobj 2316 0 obj << /Type /ObjStm /N 100 /First 946 /Length 1522 /Filter /FlateDecode >> stream xÚÝYMoÜ6½ëWðØ^$~Ìp†€ p[ ‚ć¶Fn²(‚»­cé¿ï­]XZy—–ÖNуmJz$‡ïÍ3´htÞÅ¢£`¿?Ñ»Dщf—€‘âÅdq”ÉѱdkË!'14RÔIŽö!8õ}#»"6MT¼pÿ:„ÀöŠÑb'yR±¡¾R)€‰ œÐ õ ðÅ…ÍÖD.Hî[ÙÍ0 V¼5€*d I -µeaœ‚oK€¨­(²5 êmü¤7€D€ÛšADd)Ö‚¡0ABz³m)ÖŸ€Uê;—|±åqpàÒ££A¾Q˜ú Ô%£¨ä{3Ëaœ”É‚F1ö8º$6qb¼+Áf‚ñ䡚b"ò¬bòÅŒ…yÈz‚%Š=µ99JF­u$£ÖÞö(ẖo¡gÎ}KI†bº«çFc©ñðšTmå—=Ûz^ÐS¡2÷ oA¨jBCm¹¯RïMBŽ©Ø’àJÌ%76 g(ªxÍYúáÑS¶®©Ž5™a°˜ HUÐÌÅ| «Ê>˜aè”=[OL—¡°µà¥p±¦ø„Fï!S°ÉáåyëTð”,æ¯p½,à¡ÍñÑ"3¦‰ïÍ(ÉI€®'A­fLŠ}Kœ0¤+ð:ÁZ\Áòá¼Æ†ÅMîý +…æð‹'&ÀбQ’Sâæä¤é^¹sbBä¾qÝÏ¿üŠù !·FÃúúÓ§wͳg=ðt³¾r''®;"pÖw9µ8ɈŸí“¹¬‡+ÜCRwqØ16ƒÇƒ@ʲO¦!QCц”Þ%q(èlJcÚ¥4†Å”ÆXGé·ÒûP‹èxDFw‚b0#Ç¿ó• %x¹¹R‰|X‰£3¼‡SœùÑ«NjÝH™Ü’†›—å$^eb+›­S :•Å:%_§Ó·/bF@J¹¥ò¤‚%,ïÒÒÃèN²K7UÒMµtHêZä O·CÍ&˜üÁºœàRIp©%¸ŒUm‘.ý'UšðYšç³ÝóõzƒAÏ·%‰™5š½4ÝÛëß®úç?®ÿhº›Ë«Ë~Žð®û¾û¡{yó`f½Ç‚Ç©8ʯVÔÉ·A­öŠ-2^Àž÷L¾uÝw›³ƒ߬þº¾¸ú¸Y·Ò†ož»úPeDÑ0PP´Hr©øÖΆä©Í¨q–g¼•¹ê8ÿRÃãeßA4<ÎFØðpCí¶êÏ÷@žjZÔTÔ4ŒÕ\"4¦Ã@ØØ²¿?¯Û#ÚPúdÃòf˜óÝ[ì̆v…á¸XNuÂpªÜmGÀµÍ±Dþí*ªåD‡)ú¶ÜËýˆ§¹J •;JÌg{¢Ò̼œíÊJ3çÊ=h$ãå±+˜!ÝÃ£âø»ŽL“¹,–B*‹I©-&G@ÒØ²Èa mO^è)5è÷*8_³‰ì^ÒrÍ*ógæÏ9òu> L(˜b”Y©óc_ìÊÄÅ®ÈrJ+/v¥öbwŒ¨™,Sú?íH:q!¬a±Zy!¬£{Þ§Í÷ÇØv.suÛ(Úsˆ?BXèÄA­<¨µìjQyPkíA=’/mòùëÝïûwÖQòÕ2‘¯¿X˜R™¯–ašQœÅ"•A²·Yî]Ï÷ÎeÊ1Žã’'´ åZp¥\$#`Rߊ—¯ø/¬=÷Z÷WÛse"?q#Ut¹L•7R¥öšyD¨#¶îìeÿZÐ⸠endstream endobj 2405 0 obj << /Length 1742 /Filter /FlateDecode >> stream xÚíYßoÛ6~Ï_¡G¨Xþ&•¢²ÔYÓbM»†¶Š-Ç,)‘etOÛ¿¾£HÙ’M'nÚ¥/C‹’NwÇßy×»€7ð÷[Pþ‰X!•Væa.5ª4˜ï0âà·õõ×ñÑó3"‚QŒcŒg¢b øh< >…_çi•¾Œßö­´Ù)qR™gõ" S‹Í…Šâ[ÀŒÞÀdx7·•Ÿq0W±qT·„ÛõƒC|©–È?àAá‡QÒGu{.¼d­¦Ê§ XHù&ØÛä5¯$"&D"ï…µÇ%_ZT€êøS÷£Ç¶ÐóGKßÒÂvD°ú‹C ¦[jzs·Z:ØR¿¬:bS“ï5œïZ(tW)l•VG|_¸ÚWû6-¥×Ô“Žˆ4qKÍš úäÁÍãâ›üÝ»j|U‘MÕ>4 9ˆv·Ø}ÇÚŸÚžÈÃû“€BNÿ¬ð}£:'”{Rã9›–·lý§ÙñÛ(ú£³#Áp>õeG Z5õeǾÚÝìø‹o¦î4„ïÉNÄ€¶æ¸Ä{kØW1ÎäîXŒã‡Ú+>Œœú'¤;ÙtL¾£›n lMyà™Ôô|C™»=¤’k£õܪkJ/3h‹83n *suTZ¦@2㤸°²by™».ÍÊ[¨P*Ñã=YËx ©¾XÚ9fù(DQ¼™z§Æå¶"…Y4E©yµV“©ƒRŠJ[0ŠSÑ "Ìô&ªÂyõÏÀ´ÊifÔݤ¦­¬Dz·J f/Ì­lÛU;;­iåhþ ?hcyêÂÇÄR'ó5í6J7Xæ†&+˜‰,¢:+,dÝÎÈìvþÐ âÀÏ`“Êa€a¤_â{ªi‡5q¥wÛ¸˜n•û@þÈÛi0­€¦_7ª+°÷› ° Dë*»^ùMOÂÓ…zª^Þ«t’æ×¦óñmí<2ˆ‰ïjçјeÙº'];/cù4­lçY±ŸÒÎË  S‹Ú&еóÆídãÖÃ-¾ów—ÆÏ/>ŒábzÍ:¼(ž\ü>¯G_ïÄúuìÜ+nWµë&@Å¿6ëÏܼÌ{ÆŒÿû z¦×2¼JëUU,{-zi•gEbÃÖµçfmÜY¡uL§.X]Çó^>¥ŒmŽJ˜z·Œ6=vfõ9p|'"Ž„ZŸINöÔ~šÞß´§â ;ö“ºì9?,È=s?0Æïùï&8B:d›®V,zsÛÿŒ¥K‰ endstream endobj 2409 0 obj << /Length 766 /Filter /FlateDecode >> stream xÚÝ•]oÚ0†ïù¾L$pýÛH» ::•¶NšÚ^@ÚHhhûïwŒ¾ k·išäëõë×>'ˆ¢{ø£øH£°$J+¤…ÄDZ 4BtQ" $èxq< KMA¥ØHÉP8@Š!Å –0(¼CWžÂFùJ™ôb>ŠŸSoæW¸’Þ5‘¤;ž¦·‘»nÆÃ¨êW$!+R<0„Ô¿ OšàN 6ÄP;AΰÆMÕj‡NÓ×Ü«ùL{õFÕzëU‰S¨ÂÀ‰ÎéiÚOÇÓ,N ™,’ÏlÞ^¹¿LUŸÊ£Vûü2<8» á‹”Ú;÷•òjÚiÂv÷KÈ4x;KçÜsɪyÀd2ÍÜ騗¥ñ‹;·‰ã¤'Yt¥öŠ—¹Í_¬Án!åË-쯹¼Ïv³P•µä{sÔèÖ;­ó°uÖ®ºA°¶õê2…‰ÑN^ LôÛȹ—=ئáVnk=³?Qú”ßœªçN3ëžs7Ÿ«óQÈLÜ\ׄ°m‘Üi¡âÎÝíL¾ÁWõBcMu¡?ÜjI±–¼|Úæ[ö\Rs¦‘}µÈ\¡1Õ qx Íb$×±]ïePÑmqVœÁkµ´ÂÛ ª–F‰Xä=Ùi|mu¡œn_>·ºáYçÛû[¼žF½,ºs=×Ï¢QßÐ^1Bø²O¾Wj„¥ÇƒŒZ `£5º•®nºƒûÐõ˜C[=ÏU#$¸-üuK;ˆ&@¢ DÓK¢YHe{Í)ÿže9Î^ʯÿ3Ð^v¹Î¢Ûlœîtý‘çëNHnšÂ³®‚‘§ÓaO†ñJf©O½^ò4ñaoü†“É/ÒÀÿ»>Kgþgkœv·[¸:„b!ÿ"tj“4.ˆ£ö#c N?Fj(&Ô,ˆc â$qF~N«Úƒ4ò·FîÍ<îžl¹ì66ø±ÙRŒÚ΃+ÍÝ0¬r|ž‘J endstream endobj 2413 0 obj << /Length 765 /Filter /FlateDecode >> stream xÚ½UËrÚ0ÝóZÚ +zX’•]›@J:“¸é¤Yà‰±Û$Íß÷Ú2ä5†ÑëèÞ˹:‡;DÑ ¾'(G>B+,ˆŠŠBI(£•MÑe‡ “ǯqç Fˆ¬‰¦(ž"¥°b )N°€@ñ]yËÊø`Â[“E’æþu| ÷ʱõsÌŸq:ïM¦õr¦nPû@·ó"/¶j;"™jo û¤¬ÌAO±MJÑR0†u±»Ã£Aÿ"Ú;p²qÒ0…‰vi.|y¦œå¢òÎ#o”TéØNÇE^¥Umòñ£ÛhÐsƒòn>qãC)˶w“,+üNÆIæ3·™Oš‰òÒ<­Ó$K«õÑ,+F‰‹qï á%eêS/eÆEÌ‹|MÌm›Çä“7¥Ô œ{ÐC¯žCc ù&#‘ÄR*ˆ×ƹÙEšÄ„±"°‰Št3Mej¼³Ešai ]€ܳtö‡Ð {õ[Ÿ~µÝz&„§*`–\º–Kî¨4Im&ö¹œ&ù2)í‚ÚÙo"Èé÷ch›§wî:´•)EP2¼¬4/:W×M`Æ\Gè¡-PÈ24ì\:yRD)ÖB°Vž …À$W‘-JaJˆP É›6Sø±ÊÖ1,–娨u/ÍÌ!”HˆEá©&«"Ÿr çl-¢þYÜôüˆ{_š>u_Gà¦dÕrTKxžNq¶Ü¶Iöéíǰ;|wæ·ú׫¬é³ E¾ÍP\ßOLnJxŽZ¥ÙíÔœWâ#šƒØ 9;±~b³ån ŒˆzkëY•³F®gu²6˜ƒñÈÆxV®[óÔšŸ]n¸MËu $†¿»mÆ­õð—8àk®÷rÀßç;\c-™óñ¹¾#>Ïwe˜òðcÆC#ï–ý3êŒ'Mç³Ç½Ö³ÂéÐû¯$vЪœ}$_² §ïˆÁ\„!ÅàÒöšV[w 3{ûb endstream endobj 2418 0 obj << /Length 1462 /Filter /FlateDecode >> stream xÚÕX[SÛ8~çWøÑ)DèjÉììKC—î(Iw§Sº3Æqˆf}IdJùõ{dɉÌ tv‡a,ÇGçò£ïHúâïþßx¹‡áO„ ,•ôó@q¯L¼‰÷~ƒ öÞÜûüe´³Ì•G0 qH¼ÑÄ“I*=É0 h4ö>ùËyÒë *ü¬g‘Î{ŸGoa~Ÿ0$xØ!3ÓFdÿXҦ꾨T÷)E‚;íõ`xtqr>:9;=°sàKcX¡áÐY9ŠÒx™F‹dÞë3…ýŬ2úyòÕþ’ê<‰J=ºÈí7!~Þ#vPÂàZWùý>)J;÷ªÆüb1m*‡ÁáùŸV2ÊÇÎJQ‰ÆFK”ö‹ò ´êE”ÚÏe4Öõx²„OyÜïÍø8G½>çÜ&ÆãÎ,c~Y,…¥%‚$…}•ž‰ÎÇWƹ¡&‘µ$êL )k¥ä²~1øãdy±Îüz2]|¬’t§Ž6Ý£ ,p™\êÊò6¶Eò.úfcfG—Xà·¿½†©l F;_vHUáÄ…à@iœí|úŒ½1üx"*ïk%•yœQx¦Þpç½+mâ‚B!hUÚ DpD¨ P"‚)d€õ´˜Ý^b"2“hḛ̈X–qbßuš€Ÿ¯%Ñ$ĵ·›ˆBžÄîŠüät4¸8î)æö¨òC±¹\ˆóåU]hÆ™IšwÓ,ºÙ3/{éxï6µ¿:ç¼mžœžíŸ}ÁBÊ?ïIé^¾€óÃïÏ»ñ @ýÇÑΖ™}‰òkXÐeÍY’/êO&*ïé|‘\'eÍæ2!·õÇE2™èXƒª¹ý¥˜Ø§ÎgË…ÎgÓ¤Ô±Y¥æu•Y‘ëØ¾%7³(Ÿ1«¤ÚVoq‘ÍÒ䯼Õ9Ø%ÆÓW¯¨y¬œîw)Ia5P‚Wާ ðF~m_ư¨|x i…†™° ¨£§¢!Ö`€¶&Pƒ¬ ÀÊ‘qÁŸÔ g³T›NÀihYÓ VŶeÖ\UTæs1Ì•Ÿ”ÑhßD1G!¢H*e5ÿå8wƒ%¡¹Ž\ËýÞå%¡ˆÒ5/ ç–uhÍ`™Ç¶9™*pdž”Î]4I™¹ÀLºŒ ×V%à°QN$Æ®“hŒðGS=·_²èoƒIÕD¡áT­ÛünL™§ë@Ü×c‡ž^ i†%8t µÎ¿CŒµZ¢œÖ@8¬¨ð$ %¶› ÄŒXÕÔM¢¡×Úí2f‡µ5ÝezQ´eï[gË„M{ë"¾«-~ì0 €ÓØ“Rº%TEý¬³n0 4¬µðƒp½Ä”V%ý¨xgA§zØ1H¶ž!ÁjRþÏÎB[XUE"å ˜ÝíÉTBx°ëdX„73ôêÆ¬­¹í\­‹† ‹<"úÔIðvãT!_GŠñözéÌH›"ÕDì>—âJl¸ÔVÕri÷;ýfíÒZ 'õÉ}ÕI¡žpð„ò¤´¹v0"dm›túG#á¬`K†B@ÑÀ¶£ªZú|œ$[œÔ®±'ÉÇ”ÙVZ’¡%¹–è¶¼s›wõZRÿZáV^¢*„‰Áóð’›T=ž˜^€žÄJ/C”/HL] ‰¸˜ÖA´Ø+@B­,’îÅ%Áä¬òÕ°­ƒ3)ìªAœuÕ¿“”h1Æm·¯ÆjCêÿάƒ êÂìŠØÚ“œ|b´6•g' g0*`÷Ïăg¾®×5e<]]Øð‡]ØEPôò¤ ›êfªîéæÂ†¹ ›,šÏóƒÓTœn½³i ?àÚ¦>P=ß½ €™ÿ”-ißdu u8àº]Aº¶°Ñ–àÈZƒºC'T­9Ž? 4¢ endstream endobj 2422 0 obj << /Length 2038 /Filter /FlateDecode >> stream xÚ½YßsÛ6~÷_ÁGrb!øI€¾éƒíÈ©sǵ”vš44YœŠ¤BRMœ—û×oAIÖݹëtb’Ðbw±ØýöúÕ#Þü{ëå†ÿD$‘ÀRIOq0÷Jí-½_Ž0bïíîy6?z}b`áˆxó¥'©'F&ÍÞgÿòêúãüõ‡sx&”HéŸÞœ¾ŸÎ§7³“àËüÝů/¸êk¥ …,ô&”"A„Õü#˜*üûˆë"Kûžo³[]Ú÷?°Ài~\êx ¯ÄX{}Nö”OÚC«ýÍtv~sy=¿üpub'ÝÞ$ âáHYñó"Ûlk].°çæIüx³)â•þ÷4‹kmϪüm²Öqi²`ÒU;}Y™}«WíŒnyF«™¿·8ïÃZ9ë{Èhˆ0ÀÓÆÃO®U(D©ê$P0‘‘ðçÖ&qxi<-Þ„1Ž¨Þ„0$xdç;ü:v9Æ)’bgõÔíQ¤“8†¼aÌO+óä°£„—UmuU7q]ØÏm•æw.›’!Š)ì‡ÜVOX&QB;Ó?Á:¤ò¹K% Q$;AgŽ0„Y'ÀCÙ*á% Iµ‹ÅS§SÍk'E°•“àåñ²NöC¨ÍÛ̹?H2UOÕ'‡“:²oÏé¹DĤIOì„”ÒNúAHYÈÆt—$d‡Õ|rÆ£PÐ^Üñ3âî²%âÙY@BuØá¹´LæHÁ–Røó(Zzš/ÊØÔ-`kš[#`æã]än(p½Žëô¯JÈ K„ýéZ›ñ¤.Í£Èí8ñgu¹Mêm3ª­¨A #SÞ[‘‰¾dèoóEœé¼Ž×U»ÚÞBE!%w9Hˆ3ô€Å<ìA€ ܧ˜ÙåT§P,Ò¿ “BØ Ê-&µ=¼Ì-24Hjàc€jæ—ÕšŸ’¸náË~,t­Ë,Í;Œ1è|âÜE5{=à•ªÅ÷ÎÅÁVî“â'§2Òtº]O$….aËPôë^‚*‹†&­ðæ‘BT0°—zå´:Hø+èJ8r›`l`6wÕ™B8$}³ûRY¦°y`€µ™}Öð‚éüèëih ñ£ˆå g©¼$;úü{ øñ‡‡þ­ͼªÒÄwíÍŽ~±4eÔ;]ÜxØú–8`À‚i€1:€¹1 DPšÚ§j˜JŒ$Xk¨iñÛJ—ÚÙÀ âx‡Q®]€MÑ὇p Þß„¦•Ò–^˜—MYÔEnß¡ ©œ½;‚¾OØ!Ÿ”+1†>EÔ<åR®·u9öÉ~ÅùÂ]2…r×L϶/«‡F SÛ ܦùÂPŠæC纼»÷[È¡dÆÓ‚Ènªá)Æý< öÅBPÔ€Ž¥5¬áŠ…Á¦ï{BÉ`ä~aÌÿ-P 1ýQý'‘¡?ëºÅ´eQ6¥øðƒb‚AÇÒ4P˜5ì?NצGGÔo–u¾nãæÅ#„Í m/õÁ¢† ¨CY+ËÚQ:r8EÊ'#Þòæ¸l9N¥kË€êÂüÐe\×wæ&N@B·üëfúëåìòÕõóålþáæ÷¿Ëx^jËÆÌeâ…¾-·±9òš/H¾¿d|÷ï70-à- lU8>±°HíN,œÑÑy…f sîh®UÎL[˜Á`œ°t1 ñW)ñÆ™Y±-m¿/Òµ6—¤·’Ô_¡e„»…x2º/ŠË«ùôæÂ€Â©IÈóéób ýŽÊá•jµ½-‹m 'i5ãÍÊx›ßmŽï6Éq½1«eœÀ@¼ù¯³½“Ch™8ôœMg/w®ÝçmÕyU,²Øg.£ÿ¿ûmˆJ0¡¶íäáµv±´Ï·¯6“¿tRe5¸ïNóZßé² ŸÙÔ>ÒAœ‡º×:¿«WÏÓÝޥöý™Å߉±™vÍ~š;±³cæzÖñ±ýÞ¬Òfró‘E G¦¸¹G‰'ôøq_º%Û´ü?ƒª½Öjwö™NŠl³Öß÷q8¿³º¨ŸòÁæôÀ‡ÓëßzÕМm(ôr™&©Îk{å.à”ÅÅP1åð A(ÍÛ:ƒ¿ðér¯—Ž£¦ÊœBèŽ!äcÔfz æÆý¹J9- endstream endobj 2426 0 obj << /Length 2601 /Filter /FlateDecode >> stream xÚÕZ[sÓH~ϯУS õ½Å,6Lq™$³»Ô0[¥Ø2hÊ–,‘ðï÷ënIV‹¶“!™)¶(bY>:}îç;Çþ‘è#þ¿ŒÊ(Á?‘ªX$J«Hs'\jUy´ˆ~>J@˜D/û×\=z¡hD’8MR]."¼S,‰ºœG¿NžŸ^<;?{wyööÍããß._=zAÄ>‰¦TÅIªù³õjÓÔùöxJ™ÔŸrwñ!‰{šN‹uÂÁÄ>ü2t¡1Õº#ù[ˆ‹»ìH6!.2NUGaÈtžo šžäå_ŽJ÷öÊHõ5$ Kc®¡ã±`º‰IGKäHUÒúCD JøXpIT.S¼ð C K™Ž‚Ãcƒ´<"NÁ’Æ*Iûø+)ômYUaVDzaf"GOž @tlRî–²ÕoÙ’1#’RÒÑXPMqD*Û ÈnZá¼£§4&B˜–´üþ:T T,VDùÇ­Fc‰÷­"O’#j¼G"ŠÄÒ©Çh$ ¡‹)JË^¹ð¹’Ülô7ßN°–@ïó÷‡$IÂÁ§{7Y©ç(œ’¶Ö{Ý>(ÞÐPÖ„Š&Ô[ã!´ °‡Ì¡c-Õ­nB¦ÎM\Gö{À,Öº¯žOH('`D ó’èÖ®Oê˜@³@F¶9¨;!¦BC³)!{FÕšÃAÂd“’·gýk*ÿ®BØœ XÉKí&2”‹»Û'\ƒñlØ0ì–JùRé}P%Ts4HÔW‚)¡{üŠ>CH4 îÄÇA¦û'(,mRü7ä)|ιI“žìŽtj}èü=ÄŠ јíE¬ë§×Ÿò*6.sÙsÜŸ,N…¾[~ЃùÁbFé“£–Ũœ̨hQnø¸Èܱ¸H;\Ôc¢“p B]}Ù~êK&²XÐÀˆP€—‘—ûTíê4mžWîÞz1úÌa ÜÉÊyPŽŠœêÛ+Ä#$¬‚@sÞ£ƒ5OÐŒ©&¶}¦ÊæE†cˆ¹Â„É Â4·;¬‡Ï 祼ÚÖEÝ?UåñŒÁ…@¥Yén:“ x¶¶ŽeæÞn–YÙò¾6 13ü¿˜?¹å''¹ÁÌ7ÀÈ›}iÔU$EkÜ"dÀ¡az;@ÛŸ2êÁSƱá> M'$tÖ”q€—‡ú¨.> I%€'D”Æ”É~G§—GŸˆI”"Ä@$€Œ³Õѯ¿%ÑŸ!”cŽ'¯-å Á¯•±Ô2º8úÙ “¾Ô-+‘š´ }ZЃ‹I[1 {×\¹Êcî´£”˜4eQ»fùréîÙ[/›Ung©trZn›ªÙJ“‹sî ž·#‹eÒlZþkï¹·3Ô&JÅ­Õ˵‡4P½t¨|ùŽQ>šÔ'cè:2é0®ˆ‰„ú“SÕ ƒ.²ºpè`€•ú1–ͪõv;Çãf;í™"¿nÊyV}í¨òź«üsSTùÖ1©?eµÇ—µ­Cu­w‚­£g ñ·‹¯!+ x[’t·p8 ÓÙ˜.¦Ë‡ƒéÒƒéÏBqf\Ë.‹ßCìmôïÈc~îXäÿôïŸÃG–wƒxK|°²=ÄHÆcá€*ŒL©âx# Dg· S‚ä%ÌÌõÉ#Cù‘ñ È © å7Šq<¦(þiLhóÀ¡"–JË^˜È‘‡š&rºo"ßÓÛ”ÑopÖa–ÞkLó ñ}Æ41îÙ~¯¥RÅ ¸•§ÐO’CÍ–ËX³Q·õ%Bˆ£±cJ5xª«Gó*TIÍCm“ŽìAçœDÑFq@¤»rÌ;§€—áÛâ>Ô#™MK„@¹ç2OŒ²B·Kbßvé<Ðz0T+_·o';¥ÇA&TOÚµåðô!(.MrÀu¸N¿„kcW§†À^… ñØ& Š‚N7X=03.Ê>zF1ƤW–߯?ᨾ0ç*æêPø£L§6߆áÏý.”Æ2EC3ßz¨½ð–Sð™%3æ>ø¶çÅ’s·¢!ˆ‡Ë)®mób¿»°?¥CŽç“]‡ü=˜0c°ïúÓ+ûଆÂDþ*1.Ë#±iÊF“ä=eÞM[þÆ-’l D®ØÍ%6ှwõ¯o)|oKùÁ‚c4 ä8BKª™WŠö•A”Nx„®aÚä7{Wt(á°0 ßµ‚Ù\'üðÂÀ+¿U‘™=Á÷þ¶­Âû@Jikjo7ž°PÆP@î·-œÃ3…ò g6sàÝ`ÂxpÛ‚iNH+FGúWŽ ß¹ÈVm‚rܸۛP`èˆÍõãã|’Æem@ØÏóY½^37îoìwãë­Yòõ1þØE!>Ù·IˆÁÇw,ß-ãÊ,Æ» ³)mì·ïœO.òvíQ­È ¢nÓ>|evgÖÊ{}É«:$ G߂ؑø?®€75& î¼™¶Ax~ú¯³‹³·oœÿ<»¸|{þÞþØâ›lŒ¥£ÚáZô*Úîò¬Ê³:ŸcÄ1‹íMU,Ý%5Yi¯L&½úéy•A—C/Š›îñùzÖ¬ò²Îj· 6÷^5fãÛr”AŽ>â2›1–ÚÅøl1$n?ß0:BwÄìÕRa¾/²¿KaP\u¿KQ1I„YIàôUq“ͳÙ;)'Ëź©f¹{ÿ¢Xæ!f’ô„ñ"Mv9éûÆ`ÆpÇœ½¹<=q¬Ùä©YR=;½›_€Sì÷·Æ-í.Û\!Òl˜Y“u²q‹ílyr•×Ybÿ®²›“ò¤lNV}²8™ïÄ•‰RãX'ô»_.½ýå/°FÝwÇJMžž?}} u.¾?¶Œ Èx[>vjlóåb:[—Ûb[#PÜÍåz½qWe³º2ߺtAR”'EYçój_ôY3À±®{ܛʮÍõ&«²U^x"ä—‡šMXúŽcvS¬šÕC°7µEîdý’Ïêuûô2/?šíìíÊ· ¶lÌw&¢7ªÞ¨žMS{J¶u¯×v;>¼c«¡õB~Ó>X”Aæ ±î ûse®á)z‹§‚²³VR-{M§!ž«‘ÂͶ«<ÆPU™-—_ïÆ>àt?PŒõÂwø½ùöû5íùë‹¶‹EŽ(˜µ¾„f×¹ù-–õÛ²=ÛtÛÖÕ×ûÂe»k ñŠÁ7XH¥vK<¥)§¶75õ¡Úÿ]}uí endstream endobj 2430 0 obj << /Length 2029 /Filter /FlateDecode >> stream xÚ½YYsÛ8~÷¯à#½c!8 2[óÍ8Yg*ÇXÊVmÍÎ-A7©á‘dþýt EÚ°¢x·¦R)6©Fãë»ÿ±hÿ_GeDáŸÊ4QT§:J¥"T&©Œj­£_.(0ÒèõðüÇââÙ+Í#FIF3-Ö¼iA‰‚E‹UôküÓõüåí͇ÅÍûwÏ/[¼yöŠ©1?f\š¥Žýuñù’§±)/gB¦q»5Hè¸(]ëH`бY¶UíäI1–Ç'©” ×Êûå‰cã*Ò$ÓÔr%Di ’©Ìñ!lš0Pg6bËË•Qu­”Æñc€2JX6‚£ƒph*ž§Z;4h¦ÀÖ‚ÅY¿wP¦ Z¥=G»uâ0:‹w—,^Ï–HV%Ð REÓ‚o@_ïŒ]u9ƒ·êp¢q¿Ô`¢¢´¸Àʼn"‚ÉhÆQңߘÒÔyk`”ÒùZJ—ækë>y¯#92²ej«É*yDâ^»¦(7ŽÌK·$_å‡ÖÇ—ûe_|¸š%ÆÕÖì ¹œi­ãEب’Að &ûoȨŠ0¦GFµ&œ‘$ÓS,«ýÁÁ.³J¡­cñé´ÇxCzb xG‹ã´1+G~)ЗHåî±®óe[Tå#â›|ï©s¡>Ô)¢|lùôb„îy0?•" M¦f8‘¥"’`îtœ˜ Ý!w¼±`13Ç2ÓPÔ ·1M¸à\iÇöc¸Â ‡Œf2]KЩAfPu‚P8ò Ü 2"RªaÀ|»p„¶I2ÚfªqBRpÅh›ÀõœÃnŠzKB)-à‚PqTÒ €dgØ'ùûLì£XØ\Š3šAÀˆô nú{,48ADþàœ0áCðËÖÔUm!Òsí÷?¦† šÉ9©‘Òôÿ—Ƀfç\¯ eêdÌŠ VS•ô!A™É>°“Dxhh¿”°„E#®blóDg¼ßpŽ2üPm(dHíiæÁL–&c½!˜Ù9>øŽcT7NƒA°)˜GKÌÎË¿`è·c¢’Mp¬Ü€#ŒqYµŽp½=/7ƽ7ŦtÔ[Ðb×úb[—=™r4¾CC°õ¥ñ @A糃Z=ÕýêM³TžÐt‰Ð‚V¬Ð0„h oh·~ * cÏìÔT ZžaíI]í‘ߪ=ÚÖž¤¯=à˜Ôv©ðˆ1jŸ^…äÉOsmý¡N”¡Œ¤‚]…’UH-D4â:Õð†:ôcºTC¨rŒmwUk0 04ò¶§ü§¼®sŒ¯?ü†é4ÅSèW½¼² º‚E †hLí†ÄƉ_ã ‹„ËÅ GW|õC%O…;wá77û(Ưîx¡ C[˜ •>=ÂoBø”(=Ðöaü l6´“«˜F…ãδyHW$K†“‡_‡"|4è:Ü“t:¸0¯½ž]c¬•à”æ&wS—ùn÷‡·‚3!›mÕícì™ÈÛϽòÆ: ¹òÆ}evŽº/ÇžäBE.ô;æ]0l)aÇ8YUÝÝάˆãœÞÚÌ8d±b)¦ÌÁ¾¦Ý^ÿëf~óþCöÏ›ùâýí¿í©îÁMЃ Nm©Â‰Wõí%h٢披øm^/·Žä” GaEóóO}m»oã·ÕªXfuå¸çæÐšý©1éI1*(åE·éš¶ÁXPÄÅõââ÷ fïÇÞqIé%ãÑrñëo4ZÁwØšg}±\ûH ¬Ã»h~ñ‹»(“ I¦÷e²ï{š0š@h1ØNñuÁbHhãʼêê¥q﯊y()ó’uF=aê]Ð_ðAÿ›w‹ëÛW—ê/0Ð^^ŸçQ×ñ&mº»!«Õýn‘¸*¯>1%tqcy¾§}œ_ÏŸ ¦kzÕjŸeÀóc–Õºí¾‰k°Ø‡‹gï?.à×\iüáRëøÅí‹·×`ËùRÂklÍä0=wÒÖÞ@!m#ÈU”±dïš<]鹎\”W»jS@~,£°D&ÇÍÛªÅ:„dÙ3 ï~ðéªRŸó]‡í馭ê>«qWˆˆ«¢lÍÆÔmûyº-ï%`)Û¢ßÈ©"qs|û },Òg!#çôÌ ×l>5ϬY±Y|‚œàTÀ8z?t0Ø%å Ò?úYºpÓN#üzÈëÖ‹²×·‰´ø¹Ú–³ù6ß{Vwiûn½—2l²Ï7³ gM[,ÑÌÊžÆv|xñ ªgëºÚ»OnP¯Lwž>=óiw@{w>:!{ÛJ9L¶ñOÄÛ×e^X<5ôL|é{&Ò«¢6ËvçWâ=ðD §ëÚsSh!îÚwnŒk´£ûêûêB«Må0"Ök›´¡Ët˜BqÔ9 L€é qüeöM×—çGûìƒîÆK“s»ÛäÏA÷&^ g ˜+A’¾ 3w·8,ƒÝÿ>Ê] endstream endobj 2434 0 obj << /Length 1489 /Filter /FlateDecode >> stream xÚÍXYoÛ8~ϯÐÛÊX›å!JT€}hS§ëns4vX´}Pl: ÃÕÑ$ÿ~gDʶRIŠb±0l‘ÔpøÍõ “oónàûÎ+< GDÒHEž $¡A¨¯ÒÞÚûxDAzïvÏ7‹£W§ó#±”Ü[¬½ˆ{‘ D¦ÅÊûìG„Ñh4aŒK?Oï¶m–ŒóïGIÿ •t^¶ÕR›ùišéãÑDR:ŽŸ¬c âlôuñþÕ)Ã(‰iÌðPêM'2ˆÍ™³óÅôêt¤„ÿzÄ•2=ÆM? èêP‹$¼ M,4šêöº*Û&-ŸÜ[p¸Óz™‹q^¯ÆE;ÎÛñz¼Ú é¡ê‰C÷ìüòÓâÕŧ<Àz©üËQù¯¯^ŸMÿüy ¹"¡­fi4#2ƒ÷Øü6]¶÷†ÆhPäŸÚWo²²…^m;®ÆÕ+ûöè¸ÒcõpÅg¢§HŠÐ?9äTú ¼2UÈ;IÑÑPÀ¡Žp¾Ò™q @y}€˜ŽÙ«ÔÞ.YÒyÓÁ]2 ±ØpRWHx$0—Љ+=Ë¿@žF™ZkMcCIt)®îÒ"êÒ"êÒÂÂT‚jǘ•‘áÒ‹HÑN s¼tLf®‡.ü® Êé@ª6P¶UÙ%æª]"ëáÒº‚ôu Šˆ,ÿÀ¿6ûï À[B> *$㇠þ@g¨Î¡Nw@­Ê]IìÁüà`£ÁÁÌ¥( ‘ü"#¸:âD©]b|¡”:P…ð÷Ò6s‡‡ÉðÐïNû»áËì—ÿûÃ^FºìG@âat¸,š>ƒ ê2DÄ$Œwªs—jØ C1ÌÚŽ~ AFñ/(8Gn»"ʺnF" A„bƒãœÎ€ ¢{¦’Uàom‹J¡¿ôNï^ôd‘˜&Vâ¥çÜl†W ÈR˾L:ƒÍaÏä@ò‘{_‘@†ÿݽï}R´IußßÍÞÝ îQ„JñÜ»Ùàß,C×ð(& ;$ìû5£|`œþ/7Yø endstream endobj 2438 0 obj << /Length 957 /Filter /FlateDecode >> stream xÚµXQ›8~ß_ÁÓ‘€µM`ß¶ÕnÕJ×öZút×V¬í°¨©¡RVêïC$Ù¤!QÎØæûfæ›Ø&? lÄp½2¤àCÏ¡Èó=ßRMgþÔÈ…17þ½B0¯Öí‹ðêú~Š Œ€Rb„sÃ#†ç"‡ÂC!7þ3=£`bcL¨Y±dÎ&¶ëQóDÑÇ´Ì™Ðö}²7›"d~O¡ ›¼žíÌsñäsøæúÀ1r`E… Û%šéõÛðîÃýÄwÍÛ ñÍ—w7ê¡-ŸÁa¿‹Bx†M Ï4Ò²|ÈÓ²H$8G[¿•Ç+ž2aI‹}-P`婺ÊLݹ´bÕƒ+ƒÔQ&[cý¥œjI±»q?vë鮚î6XD…VƒÞ"*Փඨ,Á¬Ue­ÔºWÕ€ õiVLMb0‰W<&õ½Ô o,nqV1=Äô²øF‹êfv¦tÚÏãë·ï?…×ï>…Ѐ¦Ô7ßO<ϼýpûÏhõñ8ˆïÌÜYƒL5²B‡y£›MG:×­¨Øc$ca³4ÏÅ"*’Tê‘y)™²¢…¶•¶‰´YˆXäÊrU m°mr©ê“¢–X–ßDÞ§æB.“âIY ÀË=Lx—Hº¼zá…y$í‹è1Òößí8K岈dÑX=š\D +Ít¨ûÈ Î&6ÁhÐ2K¤]Ê,]Dy²¼A~ŒòXì¯Ã¥¾JÅs i™Á²€è€6»—;ØxúSž“¯)¸N)¦ÞZ½_q5y„±_#B‰U†ºjõ¡Ël¸ÊÒ~p.G–Ž ý Yã¯Ë©“òv[X'éIêêÙÎå×Ý­¼¨‡{™WÏ:ýÞAIÕècœæoˇ2;èTßh?†©ÞòƒËƒ~@¡ŽõCí¾}Q oå?© `Wn€<žßù?‹ù‡¯Î"Jvg¹¬åAŸþ"õ jEÒì|BŠ<~:ׯQµžÙ¦.@M×̶¬ †-*ÈðlsøhORGpÁ¹ùOÉXŸlë´vf¾Õ ¸ÝÇ~ÈYZY$Ýóâ Äìâ­ðÏÃ] ×÷^Ÿ1ZÚòAù^$ÁÏy¡Ì²^†¶~{ë¯\|­®ÕÚÚªúKîil%é½ìc«÷®Sù膎GWoeg ïáûÃm´/l—°ìR²]²³ ÛåãÇñR–vÂã{è.,lç L»h`/p°O Ûõ)vµ§¹½‡î«ßô¿uÇ endstream endobj 2443 0 obj << /Length 1833 /Filter /FlateDecode >> stream xÚÅYYsÛ6~÷¯àÄ/ÔÔBp`2}pÛu:[é´Mò@SÄT&mŠŠíß@J„ ùHœv2Zî…o»ðED¢)ü?ˆÊÃ?‘J$°T2R\ ÌÅ£ZG“èýB¬Æ_F[Ï÷%F)NI4šD°’ #ÆÑÇøõÞÉ«ãÃw£Ã£·/ŸGožïѧÇÑJ„SåÈËUq£ëI–ëÁ%IÜTfq3Ón¢¯ò•ñ,+§z˜Wu­çYST¥ûµ®–MQê dž¡ãÒ}}V-·5Õ¥®³¹ÛγE+ïøL7Ùðà`ædg-ô7 †OÂVT†ñØH˜^›9‹‹…§ÅWó…nINÍâÚ¹†³¾k„@‚ ðB)NÜž#„¥D©Ä–N!,h…–8*Ð)àj`Ã@ÀšìcH*C˜‘–àf´¨zJxÄ$í? ñáH‚´aìå`H¹‰)|Ê•ê³Ýq›íç HÅ?·JxÔ ,a‡#Å[„ýR–P$A›aŸpÜ*I}Ë¥§#Ûd:õt¬Áô”÷L÷ñ‰êy]à–-õÙRØÀÇÀÁ=6$¤]‚pB:¢gÿ  C އ*BH âèŠ`ÅDÙ*ˆ ’§iœC¸ÇyHA(¬•±‹Ù ¤o­ï`—¶V†pr‰DŒž}Áö ¿Hïïþ¾v|6V1b†cåãÎ"·cfÕÄw óËdYæfe^K:ÅEÙ詮͊CW æÆ#Ië(÷m+Þîçk!Yp; ›Í6VÉÝm²òìu;Ör)gºl|kk<ž¢ciN×givŠŸÇ±íTu8ñù¢¦^jäæÅ·dnè>ïKœWÓ"ÏæwK̽Óè³ÑWàfnuV\åÔÍóJO&E^Ü2œ`$cÕ?Ÿ›a; ô‘O…ǺYÖ%$uÊ!Sجw¹¹˜ìŽMóf²ù¹ÐüÚw«YϳS—×ç&•šSóu÷@çGZ Ù®jŒ6Èš3n‹©––:Û[ÈÛ‘ÕuÖT~­ Oi8ÆB52ï?/åíÕÆyœ%3,fUݸ©œfçÝåI­ßÄ•r– ¸ÌÝ/E™Ï—c ³ü¾ì~«õº­2·Ï³Kë{ݶ:z&}ˆ\Qd§sr'Ëtí~á!÷+¨ÃWt¶œçI¼Ð›ØfM¹Ïe\Õn‰Ý0éÖ†ûÐ]úÕ<3×¼áø»ß;ºá²4TÒR ÷³Œ'ðÁ k ó¨ ñ^ë…£Õ¶&nÚ§áùõ@ñ9ÏÈQ¢¼\do8+à‚nãrV8H¹e­/–E­ÝÂõ00iS—E‚ýαGÓ«Û‚ð—qÞó¿M!ÿK$×oѪéüoäUN¾}i‡À¨@ú²X´Zû¾s…8‚¤Â‡Šce”e;³ãO[%OW.0~`æý%Æ÷:à(NÂPÒ‡`îYÒÿ¤D¼ endstream endobj 2447 0 obj << /Length 1299 /Filter /FlateDecode >> stream xÚÍWKoÛ8¾ûWð¶2³|Šb=äá´IÑ&µ¶MŠÅØÂÊR+É rÚ¿¾C‘²­.ƒÍö  Hç=ߌ¿!ŠVðÿ•ˆÀŸÔ K¢…!1q"PmÐú8"@HЛÝzº½ºQе” -bHq‚%ú“æ vrÈEbÅš0àDcÇ©ÙÞ×Õ¶ÍKÐNöÚ·N…˜>ž^ßΧó¿/ZºÇÛf'3Û¤yiùXC)ßzHÓš¦ ù&¤Øùt~6»¼Y\^8vo@êПLa¢G~Vm¾n?Dˆó¨]ÛPqm¬s·w„Æå\tä®AS8nMÝ´y›§…£MËÌ¿®ZwÆ}|-qãˆîíæiÈÆ~Ui”‚ˆ•£ó‡tUš6oà®*ñ3™Á$¤²wêlúËå¬vÏß^Î׳__"–à˜ÇÃÕ&mMæbp•–Û´~rFˆt_6Á¯Þ÷©;š.FßF´«2j+Eèë$AËÍèó‚28‡8cÎì¨6Hpkæ£Ï”›ˆ¡^U¼/7¶+·¦¹O·¦~AµyJüð¿(´^ïÿªÖþÙ:Ò±Ïb-£eår=]¶îfi·ë´^·ÏLÙäm_pàª)ôÔWÄÒíÖÝ›¯ã ,¦†J¥—i¿M‘9²‡ªv§&Ñ žu»´­6!ÔqÒöXs¬k(Rã¾³´MI[õ·ÆXÁ…qÎÆ…J©´•ÑIy=ŸŸžÜNgøúvr®XHÑ“cÇ~±ö*,ÖÕ¦ït§ušåÛæÈKå©”A]ï¤Î ƒ†µ"I‚YÂÁ8N¼‚úh 8ØS½ËëÒ΋ûeG¯—©Ta¥âPæž IX:LÈ,3å³r;ë¢1嘑dÌ.ö,æd€Ù›¼ìPÖt!³K‹Á‡‰f÷à´R1øæ½™oŸ<°O`%W¹rT˰}4ŽÑ˜Ç”ÚkW›¢ƒ»QõàN×¹«"oKåÖ]Ú[Ú¦­M¹j=‰õ—]¿ç©ûèpÍºä§Æù&1„X9ÿÉû\,Ò°4Ö ÿ„J,ˆGÓ€7 Ç”üko´ë7ºCÊB7ÁÜ#MRFÖËá~Ä‚)”%¸K®lJ`ß”@&‰Å°/ •…ª‰1(lÈH'—‡4Ó¶—úêÌkÇ‗bÈ™a%ž†Ø)pfrX‰ÏåŸy|ÈËæŸ<ôøÏ¡¸L˜Ð˜@Âwíà¤#}\›Úf©ö# P­ì,sŸwCÝw`j)²Üâ4€j‘Öîª÷:¿ßÚ oaÚó,ͪ0K˜?û`DˆæÆ_̱[O‹ùK›¡+SXh ,zëïO~KÐ ÷Ç3üÉ…©ž‡~nlq`?Fùõ¼Ö2×hd Í]?é¡wØÆ)a˜QÖgäÍú©±–ÄPX“ï~×ÇxÐŽãäð-—¡¨P;ªì°Öϧ€‰Ô‘v¢:Qvر¢„p.´TiÑTÁ&eñ-ÏK¹]Aà"Ðø÷Ý)4Q€WòßQß§ûñT¼l<¥RÂ,*_:ž~þ€… MPÌqÜÃ'%r`HÿÛxH endstream endobj 2451 0 obj << /Length 980 /Filter /FlateDecode >> stream xÚÍVÛnÛ8}÷WðQb†”D]ò–¦vëMR[Y hû Ë”ÃÂ’Jj¶ûõ;Ôеš[`aÄG3Ã33‡Çy œ¬á暑H"*XG$eADKR÷#ŽŒ¼Ú¯/ÒÑù4à„sšá‘´ ‘G"ŸQAéŠ|t"ʹïŽ9÷„Sº>wÚU©*wìGÂùÄ[ÔÎ%î§j#/ܱ`̸zèJ ˆvÎÜýœ¾9ŸÂœÑ„%ÜÈÈØ÷¨%TÙ•¸Y©¦ÍªÜ¶c)ÛG)+ë×…ªÆ­²û¦ÓE–ËïŽ×2ÛUÕ Ž ØåνÄ笭K•ãs³u!Ä‘†Ùج€qg›)ï‹Z£éñB€Æ÷6ß.Ù¡ Æk ÙbG¶ÆóÑ|õ”ÆÜ}b<´ý1q‡þe×ìx(vØýú%¯@8é½ñ÷}ÿ‹Ù•™ •}Æ›J®³V}uw–ÀQ¾éQöÁC” ºÕÆŠqz“mé*à -«:óÉ_³Ì Ó¾ž-Ò›ù‡ßàºeÀp¦•+äÑMÞÖ@jÜxŒó½Þ¼}¹cÖh’ŽF¼WTnT1ðc°˜äåèãgFV`‡.ShóØ{•àâÁº!‹Ñû'¤Ð$ ÒXi%â~«Šü§Êº÷¤ÅOEUügš*NkjUŠûKZúçd­ˆ™–Òruž}Í6Ùrca¯µ²dhÔ?ò0Uз?¡1³Ê ¢•ýý… ÂïjmVf¯<¤1Ù*J‰Q ¾¯‹ïЬiÑÔÏè£ Í{U ¨R‰žv† ±:ïê]œµ7'D˦Õ*o±¸À?.n†é?ÛMàDýp óv.}­,FYÈ:ÈѸժìU/Šà®jÕ€îÔUpÃ0±Êe<÷T4¾Z¶®ì«›1ˆÖß->m2½6R Fƒí¯aH`J T ϲͦ>(ó 5mi6ßò8ÓiŠ–}ÿWJǼç)9®Ò þ™NÝ‹ó˜„> wDâ,T§ÿ ø¾¬É endstream endobj 2455 0 obj << /Length 1088 /Filter /FlateDecode >> stream xÚÅV[oÛ6~÷¯Ð£T,¯’˜·ÄµÓd@ÒÚÞ€¡ëƒ,ѱ6Kr()÷ëwHJ±ªh l‚D¼û9ß—Gxð{íU†!c$pœÄ^ÂÂO0<ÄÞõË÷j5y?çÄ#I!¨·Úx1õb†‘¡Uî}ñcDˆBB¨ð«ºÚU½oƒÅÂÿ ¼¬;)·Ÿ;u„ããK´‘Þ‘àëêöý”Œ$–ĘÂ^È(\:K7w«Ùb$Ì¿ hâOgFèŸÁáäT‹@1½‚&9MM·Öu×8&Îü¶^DøT>Qðër¶üyë wMo¶¬ó2-ª±ÐÇŒ~˜-§‹›O«›û» 'ÏÓEc„eâžOÓ]ÖíÒV5}) èÆ‚øû€øm±.vEÐØ?¸ëVUM­Ýz3, 1!dF¥vùµ“ÍŒšt×ëUY]åá6Õe]™+sø *¥Ó¶¨+··­ðñÚTß³„k»ÚšI@¹Ò¥q8ÁVæï¶´ÝaïR­ÜMeüîÀ•Ò,ÖÄíÛдÊÝ‹4ËjÕC¯µvdzÇAî“È*çÒèÍR£™zã·ƒO©†wj¬9˜ˆQÄ"džñi{h d‚câ/3]ìÛÔ‰òó²ç‰ XŽ*+¸ì¼í„ø„&ÇôRŒ¹Ëo1ìß·[HËJ_“Ú&ÊüMüÜiµQZU™k’Ȧx$L"«ä4Lk†ø‹@P_=õ»«±@cŠ"²< бðHŒÅ1@"%ë«'i•y*’;jú ª!¤Äe»ŸÄ…©”užGxÜyfñmÐ'Ø›œgŒùÇÖUÆ磗îÿfÚ¹D4çq«‹Ùo7Ku§íãÍru¿øým˜C×W§à±PϺn{àyÞJ»Í“Ò Ìé;·»íP¤˜`·²Ãkæ;z2[M'ÄÒ 1”À#‰éeåäËWìåp #Ž`ѳ}TzœQøî¼åäówh…sŒxœi%êiÅ /ñ³¬Ûð=ü\^¿—Ü͈eÄ8ËÔÆ£ÃÿF1äŽ<ŽhÈBâçX¨Ç³yQå["ÖãiD}›]Àùªx8¸+3Õö°Qí¹ó|Yî1¥Œíùî*S«î”t/î¸ìÔ|cAÑèŸ`¢ «Ìršyb^´–;GȪk±°A)̸­4è«zü> stream xÚÝYKsÛ6¾ûWð(5&‚Îäà:¶«tj;–ÒN›ä@K´Ì)EÊ夗þö.P$eP–ÓI¦ÓÉ$¢ÀÅb÷Û×åÞ#Þþž{™‡áWq,Cé…G8aà±wë½;À ˆ½óÍ瓃—gñAŠsêMn=I=É0â°i2ó> $"D}B(äé2Y•éÐg’>bŽÇùº˜ÆæûY’ÆGCŸc\Ë¡[…AŠ ?MÞ¾<Å#…ÑÇ`ϧ! CsÈèbrz}6 ÙàxHÃÁÉé‘ÞóÈ\°5l+áHRéùD"E­¦Õú¦È×e’U¼1Y›Í—‡É|™ÌÓÙaÞ&p[§ïPú~|:~¾EÊl^¯¬)‹|¶ˆ’lßCGWï'//ßOàæáàj(åàøúø—S@kOƒdÁDW3å³#cY¶^ÜÄ…ìÖ|ž¿Xúñ´Ì‹•YÐ&Ùa’•ñ<.jøt C<°ÞV› Vy’Íâ/æñ¶È=ÚËܾxâPˆâŸ‹è‹>~Ûn,HgCŸÈB{~G³$³6Í’Eœ­’<ë:›?ÇE¦¢ñ/ˆ‹4ZÚGe‘|ikƒd<œæ‹ek£ñmË·‹ÂwEëÍéøäzt5]^™M„oW’DXYñ8k]Æ€ Ä ¼ÓÕHˆ‚.¬2.VeR&Qj^Os³\$7P3•jSnöØÍ<¡ýuU¿­]Õ·yÑ9O ޝ~3b7C2ˆÀ2H¬M·ëlª[!Gô&•Æô™²{&,V*àsž<è×qf¾Þh±¿ 8kƒC˜@!#Ý^I )‰+Až^Óö½‘ k­$ôü–˜Ž©=¸ÊQ°¡s—.B…þgE^¸”˜ÇZäO—ƒì&µÄ+·%anY¹Õ¸®P(:®c—¹Q¢:®ïorWSÇäª ÃÁë*(F 3"ÉmBÿ]­ûqPã·^|ĘöÁàê†Úõ:úñeøi¾>°GñíÌ!®ˆêÌ¡[íêò©¢ˆ°°êT2#úù..â +ƤCñÃvi¶‚aaª‹ê.*¢)t ˜¡ÉÔÔå u†~ðÁ8¶[êÉk¼êÎ!€[µ[ó8›‚—sF Þ¨§KŒR'â¶p^Ÿþ:C4–ü4O.¯ÿúyRÄQÏL'?^Ij)Ƭiïo~S‡ñàtrp@*F4‹ (XI…7]|ø„½¬C³C õçJjáL:õÆïz¨SM5T,l¨XÍöab ö]‰˜ê%bÚàoʸÂ]Œk+‰&?wÒFétFÕ¬ ˜}úü¬&¬~~4:õb=ŒçE”ÚÍš‰t”TT?DÙL?‘ÑÄ#L£ÔÏ‹›¤¬¸‰V‰ÕÒ­¾ät0Êœ)L|Öc4/fPÌÕŒ>4ËfžÃCTcsÍU,$xÓ= s!h‘M1[ÝIiúÈ´!*zµ ‰ÐèW›ŽV9aò—Bp ¦„Ö$ÍtjÞêÔ¼jølÌÖA'ÕRzùŽƒ¥shCÇÞI‘PÒ¿¶m‹éiEôìµ ÿá0ÈŸ!RóŸk+&<]øR˜É¤nö0­Tâ`0Ð¥º½C“‘¤3‹¶‚'`p)‹ÖÚaœ€9Äw Ö`=6%€ù#·FXG7EŒof\êp™Bë—Áf%Œ”3€/4n†¤¤èë¥cE¿ñ3fóƒ3Åtkh¾ný¤“gK7;b´“`ßÓ¥ÂL£¥åu«‘0ÌÚüfV¸¹‹ÄU¸|Ê"6‰ts%*L&¦Sš„Àwä>•Í]¹ÊXDrèøM®…k§Bí pPàF\ÐÿQáïÎa¾#‡é9¬öÍaú]˲ߥ&I9'ödŽ@8aµrä¿S»|¿Úå›Ú…iüJsM!7 ºÓÁÜÓ”ÎMÁvuh ÷ ^Ôkgbš²Ùíó¢P)¾&üô߆Ég£@éD«k÷þôˆ^ÀÍo¨Nÿ¨„~Æ•{T’ݳR<5+Ù4] 9}<£šŠò°bNn‡¹qè¾'ýÄæŽ^Þu†’rÙ\XÜ\Í7MõC”ÍשþéÇ~_ä‹8Ód³\;9…{ŸjŽLÝå´X0|Ü78tÄÆÃžŽ:#V5H ߕزŒ²v“{êK7êA¨Z¨WöpËÕgt(¼ë.PÝÀmd*º¼‰LÅäõ5BÓê»hU¯@ˆ"Kôm|ÂÞøH¸—ʽ*TÔ“º‡²IsKªçŽ/R¡°w|þíïøùCÜü ¾ÿ5_û¨ö¼åwþãeë"ð8B$džu˜à°ãþˆ endstream endobj 2463 0 obj << /Length 1266 /Filter /FlateDecode >> stream xÚÍWKs›H¾ëWpª¤ñ<€ß¼¶œØ»‰KÎÖV’–F2U0(Û¿~»°ÆòcsØRÁ¼zº¿îééýt¸3‡çƒc??RÔg*TNèù”yAè9…vfΗAæ|xlÿ÷N=îpN#ßÎxæ(á(ɨ›ÆSçQ”óÈp.|²ˆ§ÚHå“ïÌg£¼*&Íø4Iõ¡;ð«…è,b ÂÝãóƒSPÉXÄÑs Ÿ)iõŸ}¯NÝP’#W„äxxˆ›ž ˜á¦Ÿ*¡œ¨Ç#«iYÝyU&0ù ZÄiÓ€§‚Ç€@ÿ_¼Ö¶©|°¡]´0/¯Ç×chÀe?$—®RäèêèÓ½µi ƒmØ 8É¡ÅmªìF¶ŸÏl›˜EU6nå‰)—¶îW0¡çºhÝÁsI}ßxØ5°_Ù$Ï©¾k"‡:wõz òjâYe&e’;ZÅi¥ßkÏÌnÝ yG„Z»&^P· ¾É£gƒ´Oõþ(ašî±´{±›ÙÕ¤íÉpt|uv9>»ø|h÷pç2 EYZñã8Ti\" ¡‰msé Eâ)ÞÏïLH×S’h\’$^,Šî’,6Ø)í<˜ ­§}†>™'+”ÕÆ®–·z[ÌŽôÊõQDSk¯]jÔ.õ޹ê'pb5”eÇuÀ¤õ˜´6±Ó„Øil4uï‘q+±F…£diÛB—UaX-“¶Û¦F†DöÄL›µÉmÈÆ;Ò)Nçy‘”·¡($³"oz©mÏ›ök2½Á]ÌíLl¦Û"7íHÚè®B(d@d³Æq£ÇùËõ9ÉÙÁØUÑÙqK(‹·÷àBGªqîQ¤ÔèQ÷{„«ÈÂÀç‘Ru~×3‰=?(·Œ†~´s±–zJŸ!!)MN_ ¿ž ÿA¥”äãÙh|qõÏûËõq¡m6â-=ѽ®E‚q¶¾½G¦ÌM’Û‰QlLÜ^ÜÞpÜûÙã5Ys$\Oø4Bœd½o?˜3…y8x !p~ÕR™ãI<…Ôõ¾<ÃÚ2 (þ#k Ö²vš—|ú2o×bÿ殡 ÖÔzÞÇ·è›Y¿˜e%¼’â Ì}=ŽÞŒL<æ˜E”åÓ,†ú‚ÉÖ¡ßÿµÐªã±E'«†Là,Ÿäë°Žð–Þ•.J¬VØOóI¼¦©ÿbÇ`™ælï·N[mßÄà˜Û#pOÓæðªÙ,1ƒ21]¬ÛèGqì¦Y߭о)²z}—Y™—}],ï·Ö“â9ë¼X&eÒNì5oæOí%ú6å^Ëôø%°6Òδš ÙKÁ‘¸¤„ŸØ¡M,œÁƒÁ™š1qÂ:‡Sg… “Ü’\,‘(AÇ¥¸(b\»_Zt»©Qð„mf‡"ƒV ù¬KšñÖªàd^V•æf¾ãd >´üHÊY°qà«Ñà|½Q6ßRzÄ~Ùeb# Ku `¥¼u9i¤æi~SGÖcÓéó[˜«UºàÓ.w¤Gd+‡4íyÀë­¶¸vh<ªÀ#”û. Tþˆ¯-tå¥ô†” ÿªßÊ¿¢ƒ~Ï«–1cr}ŸÎÿ> stream xÚíWKoÛ8¾ûWð(ç(å–&v×Ùm’ÚÊEÛƒbI®°z¸´”nÿýMɯ*뤗æP izøÍÌ7Ãù¯ˆ¢%ü¾E%"ð#…%Q¾B¾˜ÏH'(Eï z»]ß„ƒ³‰ ˆRHÉP˜"ÅâK¸Æè££0etèRʤ³Ê«šÅC—+é|"’Ì«F/ûy’åÉùЕ„´f8 Ñáçðúl°”à€Ô8!ÈŠxÖÇô&Ï&CŸ;Cæ;—ãssé‡h!TEbÅrÁŒ2‹´ntÕÔY QÉmÄ&Ö´lŠQ™ŽtZÔð'Ó»Ø<²êöÀÞÏÇó—ÇDíåfÝSTqeåsNoîîóÛûàXúÎÝP)çbvñn |=3 æc{‡È† ÒùŽ&»K¡Œv6‰¶{C`V޲²N–É–9SFʱ…-Sè©¶¨ûUÚâ7å¢Îªrý`S³ƒxuå-§Mšf¥ ?Ä?€7æf›Eôº¨a7*£º¨«ÚÂx~Ú{¦ŸðnâÖë¬Îºƒÿu_.tvü2ܾz]ç—³é]8½½9·—¨7Æ Ñuf©ç-IðÍÖ|™WŽùs½ÙúûÐ…m&‹|Å⾌¹Àbg‡‡®™'‰uÜ Äžª‚¡&œï}öÚ9èk\K} ­È±çµ³o6þ{:‡¶µÙþ1‡·³??¸.¡;kS 󺮛nÊ3BøîÅ]ÿyÕ½®Á8|Ð,R#m‚s,`Ð.ŠÁÇÏÅpïsx:ß6V˜0Xs4¼BXtÓÁè#ÛÓGþ<}ä¯Gù¯ÒGö“úHëãkÐGùË呾Lƒ~y„ž‰ì¯ìÚÊ£ò­<‰Þ°iåvûò–yôwò›ÉoÐOÈ£„!¬Nê#dÀäi}ôzR ÔVF»(·)¤DªÛ 2Ye« ‰Vt’ïé¤èÓIntRõéäVVÅKt’a¸°¯“ü5ë$Pêy¯J'Ê»*ÎÒ,‰GÖúvQWÛI þd‚íþM“ÃÈÐÿ´7ºãK-_²ª=þ«=¾©t¼®uU<)ÔÇJðçêôÁÿ³ÇÍ`Ÿúȶ»‘E)9 œÿ2üÓ½ endstream endobj 2472 0 obj << /Length 1275 /Filter /FlateDecode >> stream xÚ­Wmsâ6þίð·šPôj‰L¿¤9rå:Mrt¦s¹xjl"Búë»’lÀ9·å27™Œeyõì‹vŸ]ž,áÿcþÄ@"¥’âa),‚Ï ‚8øxxþ2é\Üp‚BÐ`²$ $ÃHÀ¡É<øJD(ëö ¡"ÜtûŒ„yúšåkXJ>aÇùÖÌ´¿IR}Ùí Œ0­„Ñb€A”t¿N>]Ü€ ‚шUˆC‚¼¾ÑídøpÓU,¼êR^/í¡o,³Õ)Š@’Ê O‰DÉè8µö)§¹/ÀÅ6›•Ižù·7Îʬ{Ù¦·{¯qoÖÛMð©’~‹–ÑíýãäâîqðX¨ð¾+exõpõû<Ÿg>U(bQ…,<2„˜€i᥷67smªåÂ?a#ÙÅe²ÓþÝz’d½$+õR›Ú aÂŽÎ6^ºÂͶëé[àM…_—y»¤ü-û¸¡%ž³¤(ªÍؘøµV_V¶±€oA«ˆ¼61!"I—ú}˜µ¡³f˜_róW+`¾-ÏDÜ7õ.N·ñ1íš¡hÚÚZ!ýFvTy÷a8¾~ÝOFw·—þäM³¬¨Dx ¼øMbï“E$Œý’ÊËW@§~ÓÞ¿{º\s¨œ¢  Öá*•¼ D‰HPg²“ÚTHüI" u"õ„1ns¸‰Rk$Þ@›”'κ<8ÐbuD>{ÑM[j˜\Å0É,S•²7ªÂQ« |€ˆ8¸±n ä!¬yÂT´Æƒ"|¸\…c¥ýâHpöÍèrk²â(ÓbWŸa¸ Æ›)¼nÓ<@BªZs¹²Í@ZÚ%–ƒl ¬Dù4‚oÞ,X|›l°—­qÄAØ·Ù!ÊD-ѳm‡/+è<^û"oM]AâxP*ü¹ Ÿrèyü4ħ¾ØÛ†W½4µ#ç¹»0¹‹*Ô¥°}„6#î3÷N¸)l>3î¤Ï0À÷I柇–¨ì÷×j?o+‡ìRô?;@JR4)<œO"=G­ÔDCX0ë O? ÿ˜<À¯£ñäîáÏ÷7Âk ÇRÏ=_ÞÍÊüЯ(ÆôH£Ÿ~ûPShg8鯈4. ì ò”@yX—C[Ä0AôØþnK3jðcKYK¶Ó%å¥QÅ–üDzeÔ–W“¤®dçq%a0«ì™\Ùø1ù¦“Jh)DCQ}]0Ì5|íÿ„ž› endstream endobj 2476 0 obj << /Length 842 /Filter /FlateDecode >> stream xÚÍV]OÛ0}ï¯ðc*5ÆŸMÂk +Ht0iJã¶ù(iÂØ¿ßuì A€6´©jc»ç^ûÞsÚ;DÑÞG(G^2ð°$žï!_HLDߨThŽÎ:€mŸ_¢ÎÞ¡ ˆRHÉP4GC'XBP£KÇÔɮKáÓYu]N¢º]ÃÀ“Α$,êr¦Ìü0IÕ~ו„4PÖ@ñ< ¤ÝëèxïÒS‚P½A€Â4{O£Ñùa×çÎA—ùÎ`´¯ƒ^°ÊþÓ,{ÌC.c˜û6Óº¾)‹ºJr`&5ó†tàOžÆºOƒMìE8 ?¾±‰­×v숳i’·Úmá;…ƒóñ·h<9Ý71T>»(æaØmE¶ª+e`Œ9ÕR™ÁI±ÌÝp9Íô”;êŠP®fUr¯oÓb 00)*•ëÅ*™¦fýFO™Ài'ùÂ&/ 6(Ÿm5(ê´ÈtÌÉcóz˜éåå4_(WŸE“§Kò³¢,U:­’"‡É[(­q×ÔwÒu¡1‚¶'†C–_¾Í¦‹\UÉÌ@!TÛŒ¡² Û¶)vëÊ=Še?â ahž·­.‚a_Ê PßAK:ØX`ÁÄî5@V¸©–œÌÇ}ÞßäÄ­-d1p̃¾Až¾Ch PçÎ×qMμ¯‘·éž´ä TÓJŦVe’š!#„›‘–ÿñÉp#îÎ(êÜuhãATûˆðáØ}ͲÎå5A1¬C3aýlPœÁ3Eaçì3fL¶©'u2]k­F¥‚‘KèÁ’ »& ÁèÁ޳èhmžµÏ© lÚ!lhÒØÀ›h^Bt›¨e€½­¦Ãè áÉEÔv( ò[U÷lÞ¢lÜ &s.wÕL‡=£;6ÔOẙó¡yê:Cáø•~û %·ù¸ÞôÞûu ®Ž%e¦cp-ÞG{Ït\eìÝ2ìÿ¥b ¤i'½[Ú[õî—½û‡GVŸôƒ¾v<¯ê> stream xÚíW[oÛ6~÷¯à£„Y ¯¢”=¥ŽÝ:[“Ô’ ]TK¶…ØR"Ë™ûïwHJ±ÕÚ˜×vA ^ÏåûÏ¡ŸE ø DàO† K¢…!1~ P•¡9z×# HÐë—﫸w1ò ¢‡$¤(ž#ÅâK8§è½3¾½ŸÆwÓ>®ÇeàÜ»J9W“«·Ãx8‰.ÝñÍŠ/F"8ÔÊìsyŒaI¥Õœ»%’8—®'™t®GñOS;ÌŠºúd‡€D^ôó¢ÎY3ªí r,EhU=P+ݨzðò"ÍvvRÎí·ÎŠMYÙñº\ƒs,4¾>v}}<×€9t^ ÏËN o’ª®²¬±W‚ò:OV->Yµ8¨ÜÖý*KV'Uï:ª³Ýl™‹¯Ó}1‚ 9`ÖëPë[ƒ×Ãh0ßÇã»ÛK{H?8þ1…IXñA²šmWIm\PH.3=&'ìyÁÏSB1a ÆŸ3AA®@#ò‚¦VŸ©U@¸,p0ôðÌ”ˆuN¡7-2FZ#“·>Î5Õz9±sÖ¦„^kSµ©`4j> stream xÚÍVÛnÛF}×Wð‘Ìõ^¹¤ûä:r¢‰‰.PÄy ©•ET"•%åK¾¾3\ê–ЭܢhagfÏ\öŒ¾zÌ»‡ÿ·^éQøS‰&ŠêX{±T„Ê(–ž5ÞÌû4 `H½·ÛçÏéàôR21’(ŽtæiîiA‰§tê}ö5a< BƸòWA(˜_5O9Zù·TÑIµ¶¹qï—Åœ¡¢´5å­)™% Yð%}z á% MF=°"J&î¬ÑÇt8¾ báŸ<ö/†gèôj€ïGQDsí…"±ÈEª×w¶Z7E È"oA·"ºïö8ßL†“ן¬œóºîŽ\VÓeV”ódb—ç¾ÍS^Ìò¾Úô!{3œ\ŒG×éèêã™ócëÉ5¡IìÌ/ªåjݘ:¥~37(Hß@) ¼ó¬¼7a^YkYST¥3ƒÎÁǪ1%5E¶pú¬œ:¢0¿ ˜,÷Ï.ðÔ”uÑ Û36‘aL¥?*Îþ2àÚ_ßR•!´è´±ûÜS«ý˜¡Œ¿¨Ý³±YYÏ*»4S§˜Ùjé¤z57¶È[äð:Ïì²*‹Ü½åˆº‚$µoC^`¦ÚojWQ)ö+ÊI¤ŠU‹æ– î̸ò4I4íæ ’›hÝUNfíéþÂ팛ªv^¹NØiQfØE¬\@Eb¹"© *EûÀKÂ%ßAç¼ ø`‹4¦õâ‹™ØyÁÍ eÂüÇ¢™£ÄýÌ)î²ëöû#6'³S§ÝOl»ÚÃäN±mÛfäÀ§å‘w)žEœÕU‰œ‚ß R¾†ù4S˜ô³™“3BúÁ´¼<ÚBÈv´õw£úv´…€Ñ.ÅaFy3xÚï™5N8˜îª‚ ÈŽ¼@€\[wd;þ:šÀåvNïF“ôjüÛqTÄc‰è..¬ÁÂ9®9_ÙbáDN©pVþý/o6ü<¦ƒ¯Ö®†«@ªˆXùrðù õ¦ ‡J0Ìckµô¤À[x“Á§ö‰äIx²Ý'‚vûÄŠÜVuý—ˤ³;b“¨{‘tPìÓÉóÉ·ž?Ù+[T×7ééÕM ÈQÅþu µ>>ÿ0¼“¿ßè'îÌ=ŠX߉&o*ëd¶k9.ŒÆEl²øž|Ÿ‰Ë_÷ÛA\¨ï6p[Ýpe«é:ovÁ¤?ò[³¯<¯\›cÓ¬mYw—}nÜÕÞŒ*è^ˤ#jªYg|Ñ^ýÊ)´“Dø€ÛÂÕÿ5L̪1Ë;c·„À#¦¢á·á?"¦Àž[B`[B˜Ù,?‚ÐìÿAˆ¡šU}ò°-Û.äá¤qÊ Š°ÆI¤˜ ʘ> stream xÚÝW[oÛ6~÷¯à£D ÉCŠRŠ=x©Ý%C›Ôv Yd›n„Ù’+Kn·_¿CQ²­TAºí†Á0xñáÇsýýpò¿¯HF~T¬©b:Ò$’Š2F’†¬ÈÛCAF^ÆgƒóqÈg4f1'³Ñ‚h`Tá¡Ù’ÜyWonßÍÎoÞÍpðP‘wëkí 'Ã×£Ùh2½ðïgןŸetŠ*"BHãÙlw~ „ò.Üð§)r7[ä›mž™¬tË2_›"ÉÆ-cŠ¥ÙYa’5N¹½ï 8P%c½÷®ô9ͶUƒµ7‹2/Nòªl±XÀô|Œ¾8±!è3âåhz9¹º]ݼ¹p‡¸:=„Š MY9ñqš-ÑjàhÕƒ±é­ŠdQ¦y–¬ÝÛ¤(Ý,_9 “,|¡½·²ÞñQϺÈDZ#­¼Ä‰Y›Ü{+ÖXnwª]š½ï¨¡¼Uås/«5i6P/ôc¨kG9ã$œ'qÎX„FÖÆ}ês@HÈV¢v-:$ò~èà $Gq)ºÁl`¥<ÅP¨øË áÍû`¹¢Z=Ö² ×ÑrÑg‡¤‘<\Hý@Jé ÑQðD@¼tçÆ2ù݆ÏdÍ2wã¼>cÜÂ%¿EKWÍéešûåcZ>¤-ÈCs0u7šbï+Œýº¹ó®7`Àe!oÍxц—ë>“c*tØ …®“Õ±YÁûœ @!”àôE¥ž¥¸~ñ¬üžöV¦MDˆ°4P7y3ýr5źtZÿt5ÝL~ýçtu‰Uš¥£Žë$«’â·ŒÁ‘Q®~ù-MÌ&ß·éþÌM¦f[šÍÜ-ç½hƒÑlðaÀkŽç–§UÈ)0M›ÁÝ=#KÜÇ+) Ù|¬¥6D‚ÀqM¦ƒ·Žì%'œÓX)ѽA%4 jÊA`Rp¼½€ÍÒØÔN“i^–‚ízœ®åVÆ1ºŠÙS¼‰NÀ†"ä¡¡`Ûû`ù`æ^޾,$XÃBw#Ò²värÓºlUµ ¦&X‘ä¨\·Ý=¸ß®å%†wÒ–6IY¤Ÿúúƒ³oÞ•&¦¬Šl×aé¡ëL±I³ä”Óò†'Ó4Ü€>&à“KœRèS§Kà—ôµIÕ‘†}ˆå‘8²u¯ß ¤vþÝ8ãuò_|Váèb _WßÀÖ7?Ö7ë{pûXz¾Æ­¨¨ßUÞ¿Rë»j^àK-ÍÌ¡´Ól_—öÙüSÜƼ‰öÿGã_> stream xÚÍYËn7¼ïWð fùè|H ÝŽI  g0¤@’çïS=’qv´Kͬ]¤æ°ÈnV‘lª•‹ÕC¦H!™¸!¡Ä¬p(ä¿-”š¼£ÊÙ„šbP„JPóßjÉ÷ªÅ‘,‘#sH±ú`4SªøÎRÎn ©Þ—B*q´4$*ãHô2b0)0Ô6&è“ì1'%neŒ¬:Z€™r0EÌ1±Â÷ÈpF3³‡ǹ0¼š‹©rw¥n`YÈÇ&&©ÞŸ*™Ã_5wU ˜b×¹JÐ*>åè†Â qŠ «zßHœSÖ ¬IPíÂNa€ŠÀøâ«2Ãü–Ü')Î/, `´*„Ì•(›]«B¾*bXÕƒäˆGÀ †‡¡ÝB¤ä‘`•¤Õ#a dÑa]º˜Üb‚ÐÊÑ3À`Â#à°}€Ã®šá“²%á²±ŠI%Š{ ’Ô£§$§Ñ"X£Ä€H6 ˆPôH±+…A$pØÄÌ>8ñ^Ì"ÅÇbWˆV÷¡ðVÍgbÅ-¬ML=RÄ úFnña«hãñÁÒ|`{kI£·Æø@±’ã™3„IUÊh ,€qlpÊ49W8@ªã~ÇöR‹£e¡ÆÈ›³³Íöüòâ&œ…í9¶Iò•Äð-Ìš¦¹maåèã»–O±—n[8/è£{$±Wo[~ö]»¾ìÈrßQ#„¹ë#oÝ#ýÐEÈç­7o6ÛwW—_~ÞÝ„aûîíyØ~Ø}¿ Ÿ6èò5|øû¯:>ÿ±ÛlÄzv7×~“Œñn¶ïw×—ß®¾ì®o/¤ñÛO»ßÿüüÃå÷ðÑ—ˆ]2d°W) Õ>Áßç+L‚S^Ç•Ü;z>Ž·Þä/¿þÑÀnĘpñíë×Oã°_J ÚQ.³¡`ÞøŸJÙ~ÀÚT³‰žÖ­ž~“ÅZç=üë6=ªçrmFA]¯`íT°6Ê(æf0~ˆC<0®°£@°>xnzDëÈædMvL£ÙC­k–ʾf)=I3J¼§YÊ}š58䄇’ù8™á€ÎÒ¡ùø9[ÎoáWÖó«üj˯Ô!No«9 ²ÛÀåü¸¹Úürðnlî±Iîin¼‡'d±f9ïk–ãjÍrêÓ¬Á!ÃpüÕðˆN—îü–ÓGWA«Óµ—³/3ìÓzö¹“}nÙÏ4hy”ýƒ wïoNÇ:ÏwöqÙæ3z«S“ß'yDÝ{Ý%Ïpë•8£a]¯¡ujhm‚g k^¢áÕ&ç¢åûÙ¦}†K^Íðýv=Æpƒ;ôÖš‹–!•ôÌO¨îƒ÷ É£Ì$üòÄ„Oq_˜Î„_ô¸0§å{1S4óô¤´š)ê|zRû¢$àLËÉ/‰öϬöú>X_ø:!Ñ‚×k!ZHçu2Îþéö’5’Éûç„‹¥à4#…­–‚cŸ î ^ÍH²/(År‚g M\ÖÜYhbê%˜&¯üqüb©s9Á3u ÖõwÖ¸·4R´Ážà“\”ù” *3™Zž˜©eÿ±)™Zr§  ¥8¨½ÎÇÌ<EÖSÚùLí¥T'”ÖÁÿ—ö)Õ™²ÆÕ”jgÙFS'¥ Å8äl/zí´×Ç)jÿ:SµQZO~gÕF¹—üHbƒ_ÀG9ê•^寝3Õ­ë¹ï¬¶è¤Úbi(lÏ\¯lø>É«¥ÎTTj^Íbí¬¨Ôފʈ—ÒPU“ÐPÒÿvÏ,×e&SÖ'fJÛMÖÙò0+ßE endstream endobj 2494 0 obj << /Length 667 /Filter /FlateDecode >> stream xÚí–]oÚ0†ïó+|™HÄø3v¸c::µPH'Mm/ k$4µû÷;ŽC$ʪjB>˜ã7çËò„(ú ßs”!*,‰Ò i!1(OÐ]; :]¿DN½#(¢‡R2MbHq‚%ŠЭ«0åÂó)eÒÍùlæù\I÷ŽH2œ¯òqbwÒiÒð|IHé„'!êÝGõHR‚CRó‚|ΰ¡Õï^EíAÇÓÜmzL»­vÃú#RSo«H¬˜B>%X¥åj”ÏWEšAL²ŠÖÄ×Fµñ&š€lëø{„ºWý›¨Þ»‰`ô¤vûžRnsмlC°Ãã"d<¨”¥UŽmd »¤ÙbUXsyúbmjzšÕò$ž“׸Éa‡)#å›2ŽŽQf§(w”¡À{¥üwHôíø;Õ©ê~Ö¶Ý~Ôí]5ì!¨Ûîä0…I¨­ûåjZ¤‹iš,¡Iœ»…™Ÿg)wn7L,ÖâVNˆm9J(H–Rw„°}O´æÚ‹[±2íq²Ä{£æ.ÁŸI¸…UßíïÝ!¤e¾v‡Qoðãô1jAfEò`+ß\äé´ê/!|ÓŽ‹ogëò;íÈyrh‰j®¸Ð ¢ñ̹½'èö¡ñ˜CmŸK¯œÁ:ECçú'„˜Àåyå„Üæ§Ð‘c`áqæGC~0äa`ÿ‰q21ä§C¾á~`Äf[˜XÇgìç´x¬¸ò˜XÇ"³åÂó a–ÕÞ|RiesðËñù-a >Á\ÄÙ*νŒXköw8 Ja±Eƒ`CƒG½:”0˜ý#4(>ãýáíÐ2¢°¦² 0ãÕÌPì‚þ×Ô_ endstream endobj 2498 0 obj << /Length 725 /Filter /FlateDecode >> stream xÚíVMOã0½çWø˜H­±c;¶¹±Ð²eµ|´a¥p%]"µ ¤i¿ã8„MVákÅaUE3IÇoÆoÆO¾Eý‚g¥ˆÀOh‰‘J"Å&µæœ’¤½<ŽæÆe=†šÇ» mŸ2,¸¶È—]ý× OkÈÙªh„6@ð_èÖPúOÙéûªd§O5ö¸2ÓÞ`²;‡££Ãm»ˆŠ§‹ 0_b¢«ðï«y‘ÜÌ“xéõcnq‡»EîQ7J—7¤q³eõ9›Ù¸,­cjµ1›ŽóZt޶LwNˆßT•u7QÌBo¨1àwIqm¿FiE渑ª)æBÀ}¬*îǃ£ Ða—M£ñÏ’›?Fðùü5¼ ;.â+Û±ƒ(]EùC5„°ÇF|ÛÛ4΄έCËB”,´ÀZp4]8g]ÁwÌ +weÔq惣‰sR Š(…UÂ7•@b*ªªÀeÒëS Ùs¶ðu‹5ìXÚb&Ù*ŸÆö}˜Ìc3ˆ„ØH¿Œ¤.žiÒ6jfj4ÖÀE™mtÆCO1wǃéØt£S`éË:›ËÕe#Ÿ˜q¶öbm*Žz÷½‡ÇrRëóS$¹©éø4Ü:: ÁÀF…r=)ÝñÎ÷T;y}Ç; ÎËôྠrO‹,o†üàC«ÀÜïÜ endstream endobj 2502 0 obj << /Length 1745 /Filter /FlateDecode >> stream xÚÅXÛrÛ6}÷Wð‘šH®èNÜØNNíÄV:Ó8y %Jf+‚ E:M¾¾ ‚¤I²”ÚNÆ/Ë݃ÅîÙ]|ñˆ·„¿7žö0ü¡DK%=ÅÂLáV-”ÿn$¥tyôÛ €¿Ú1U(`A_ów ìÐþDE–&3{­Ëô&Îíµœèq½>§S']íV÷ñÉÕë˳wÓ³‹óCû ƒ} á0´â¯³t]ñP?ÒõïzˆŸ¨ôÿNÒ¨ˆísmö |G¹}03n£|Y €¯á»¤¬õ-ò,µWÅm-Ѭö^]jþ¿ÁZ|Xz™³.d&¤‰Z€^AþèZ–Bö¯–@à@†ýé­6| ‘ˆ(êMC‚×®H£Í˜‘—\c° „¯ƒÆê‘Q¤‘[õIe†ûñ¦¨|;·ËM¢—.3<@œpØ7 ûöˆ-HnJhcì —Êç.$@aë-g˜0„Y#ÀY+á=% I¥¡OS'¨ê²‘"ØÊPåÁžJÜá ¼UÖÒŽ`lÕÂfNW!É`[;ª>:ôØ`é9‘! ÙÓõ\Ji#ýÀ¥,`;}ÚÆ Øn5~Ç(´ãw¼‡ß]¶â÷Yµ3 H ¶æÐO.-@ü)ö"øú²”Aý8ÒsÃ5QloíâçòH¶¾» âÇ«¨HîÈ!Ã&°'«x$€’ŠÜ¼ÎtóüªÈËYQVOcûÈ0ƒ‘É¿™ûÀŸØÇ§†ßK=ÒXÑjS¯·G¹4€8 Û¤'Äé| Ä ºiŸbf—hˆBºVÿ\¿Œô¼¦&iEjjª9Ý’gKLà-XñW£jAà»Ü¾î±1Ü[*²™UÜkF³7ó¸ˆó4Ñ U„íÚeÎ š åˆ6Ùoááû˜zU«²” qibá¸Ãɯ F»¢¹#9 )±ªVRx{>w¤^8W zƒ„™zÜ"íY¬Âààdzðå€TÍ©"à5hÓdèÍÒƒëÏØ›Ã»·F¾üZI¦%`Í$ÚÊ»:x_7klu•.« ªWÔfê C$=j£¢Ÿ²á& ÖGípŸpЭ”ÏáÌþöчÎ4é³8³Õµ3i×™|‹3ù.gŠaÕ}"¡“*´á¤lp;ëeÄvà¦r‰ÿÿ8p¾o¹ª8´0¦@y«D¿ÞÆyìì÷0`[ºžñ aÒŽÔ+C¶ÜÇ[b• µw9 ±$ΦZr‰é.ôöp¡'ôä èïÛ,@›Âó`g¥ïõí· ºç*\= A ó]=B\µ™„ŸÞÒ®¬®Ï½8ÒËx•Œ]-ˆ$ˆKzßìCÛPd¦ú¦fâ1½†dþqTDæŠV~­›ÁÃ4&U•ndªZODzÈ1djšèf;ÛÆÚîCÉ­ÝG0:ˆ¶¨»^uÈ9UÂÀM BRa­—'¿Ÿ]ÁPiµýrv5½¸üãÇGàzê„¡¶š{Ìœ{1+²v襘ûñ÷í¯ÇÍèÛ/˜… º–ª¶pFu`xÓ!”Öž€pÜœ€Ì“<šÍÓx÷ùG#¹Ïé‡zîÓMy“ge\}ØÑ 1ˆ7ÙjœŽÿZGãx¬óq>¾ËÇZ—x¼$ã/È>ç!ÿõi ì‡lÖqÙÂþ®’åma/ýðÔ¤ÔI±Ùzhbœß›óa‹…lÍeù¼ ¾Æ\¬ã|ùÍ^ÃËäÎLqÏ@¢‹xçÛl€Ï{kúRFº(Ó‡‡<EëFôqÍõ6Ä}ð]¤{,]ƒU`~Ü|ÞEÒ,Þ Q½#i¼¹µWë pm~Äy©[m3Ö•¶mïè×YsZ«µsÞ÷TKZïö“ÎæqÇ!„;¶n‰ûJëh(nw]c³«o£?³Ï,K×™GÔoÊU‘¬WI“B7µJ{òÅxu¼Ð[lƒ~‹k&®o–¤¿–®Ï·7ëïzk¿­X<§×ý¿x­€Å¿pÚb/§uøvÐ ÈÐtÒ† ÕœY¨ÞGPYÿøPÊà endstream endobj 2506 0 obj << /Length 1459 /Filter /FlateDecode >> stream xÚÍWÛrÛ6}÷Wð‘šR.AúÍåÔéÄI,¥34´ÉŒy HÙ“¿ï (R¦['m3Ì%¸Ø=Ø=v¿xÄÛÁï•Wzþx"Ç"^r„Ã(=%½­÷þƒ"ö^õÏŸW'/.õF Nˆ·Úzð&F&­6ÞGÿ|±|y}ùnuùöêtöiõúÅáC}ìÍ©@8‰­úEVnšÙ<Ôoo¥š*ß·YUvÕ~2óÙØ ÙС J¢ì{Å”Ïq;öÖÚ•¥T»¯VÞH•ÝÏ8÷Óž4ö;$ÕöšJ7Yš[@ç™J×­/ûô€xßdåî0ysÂD(´ÏÄBQ¬³tËŠ‡™@ŽfµÑ¾²²Z'`‘;UdUÆIšÇ "œ@è9"Ô*^/~»\B–fsƘÿËårõöúw“²Gi?Gc±¬Q„Y—÷—J¦­ÜÌæœrÿMªÖ·V¤3+ý9~ýë9<ˆñ²X|9!†‚DÓ(¢à­‹“Ÿ°·ñ×F ¨ò`´ /dž¹·{³€U,¿?û€â PýS ¾©¥#ƒÞDú™g»ÛÖŠYiŸi[ÙÚÊû2k›S²2Fåny:ìí(Á½»Zeå:«õÖÔ¯°Ëv_Ø—r_ÜH5² ;Iî¤zÊx>6þ¤µü9F»Øß=ÓæÝÁfg¾rÞ~"Æö7,¤„©„ÃO;riqGš– ÙtÛ¶®Àtó-¾ÔxÓfǙť±ö”Åû#ôuÕʲí­Vå¿æIo';­s%³,apßíҬ½…½Ù9”M;/Ò¦ »H^Aó/É»Ãã…ég—äuUÔU Ë'É\@Ç‹}Hïåv_®íÍãÜœ?±êŽ‘Ûcü xt7M'ßYE„qwUƒ0¨"ÂÄVÃÏýM²»ÉAÜä0k;#fûi9µ »®@(ík ¬}ML=jÈ9Q¤°¢˜wGßO^ã(}£Ã6e(D\U0m†R>0C,δÜXA<ê¾°• ã%P ©a4@þߘJÕLÂr‚ç­œÂíûÚ+˜2#LC§q7eDq¨pôR&Ì}hÒ0Ÿ²ÃP(uÒ\„Ì_>@THØáf­;™ ˜dW¹Íy3ü‡¡ª˜J±ŽX o®jÔJn²u[©¹Í@!ŠÙøˆXWJI­S>B6ŸZØ|Þ7ÆTqÌ!¸a”Ådp”†}¥¹ïxœ[ë30,Ža?˜Y+8xDÏÄoì°¾éG†´‰´ ­ðG‡þªƒ—ORmN0ñã2Àª†cBQ>ØIxr'H~D—± wüØÌ#j’¤A6ÆU æ¹!€~é«;פ %dÎ~ªUeB’mº‰°IZU‘9§ô Ü;YU¶}ÛjrhÖy3·– -|}{<¡U¹IímÚvûžÁ‘4ަ5øS¥Lо6S½ 4úÀÆýe6è$òxËŽ+IÈ(¡Niû CJÂæiºÃVc  Ý‰®eǪƾ†½y›;ë<Ó•©žzcÖ8y˜€²ÿ÷'ítÛÅH‚°`?¬ïZʺ•‡z/ú¼Þ‹$‰¹MÿQïE¢ 1è½è¨÷‚£€“µç´`ZúçÿQ'õ¯kÆŠà®NÙ·c­jÖAYBGVCKVëÎlG@ ¶ä¿ëÏŽùH±0œÓÅqW’Œ&Aâÿ³\„… endstream endobj 2510 0 obj << /Length 2314 /Filter /FlateDecode >> stream xÚÍZ[sÛ6~÷¯à£4P\ °™>ì&vÖÝ™¤=é´} %JfK‘ E9ñ¿ß€ ÙZ›ÝÉdÊà¹~87èS@‚ üä†"’H`©d ¸@˜‡Še¬ƒŸ®0lÄÁ»ÁÏÞ_}{ÃU@0ŠpD‚û5,1 YH†‘J÷«à×Ù¾Èæ ‚ž}7_*fû]’¬ì²XÛÏ,ÝÊy>•¼X%L‡j¼sÆvA-Ç_Ñ·ü6þ£¨EZÛ˜.¯ãÄöUé.K3?Ô$ËAKžˆ×Dë k“æÿKm6ØuøöÿÈ1YSti`F\Uº'tHv­~ÈÓ"Åú’F»°ÿ§í¨Ëß°Úz’Õ¾½‘´[ ,¨2•À‚RÄI] ¼½¾{óñöÇûÛ￳/Ñ} ,O%H]K{›Ï©šA°)ãJ!rcJó&gÝ7C…hH@]xˆGHHÕìÐÞ£!;zO“6˜‹p¦ 9'ö{m½×xQQÎɬ6œ~|›–ñ²&U€Î öi][Ÿ°Tp¨´X#Ké“ô¨×;¾zRͰ% NÐÒ}žS9‹ËÕ’§dvÿ˜î­ç¸ž0åº>5Æ4zÙ“~W›”éâjŸæ»4*êÅ®LVé²*ÊŲ(ËD¯ôBH·Õc¡Å™­ìUaߨªÆhJ!àü°{eðHì;J„—ûjQWfú«Ærûf‡n¾ãØ”…Œ1[¶ä®RTÂËE‘lÎ ¥>‚‹‚…BS»u¥÷]]ß_}º"¦R&‘p¤  MAżÜ^ýú;VðGq€ûg³ukikgÁÝÕOu©ì²lˆ 8(²–oåÅh ( $âŠÙ}ßx• ˆ`ÛÀõ¶Ü£E¢PMQ"DT‰³:@ó@ qu(}ÎQ$*GÙ˜O‰)ð4)ТöÄ;»RP-’¸>ø]0o£a½Otö1D#Ö !0jDš -”"P ÝÌ´Õßtm{â+‰B ª¢°ÁÜ÷Åà –jCN=C5¨™à¸8ë*@uézfYœ»ž¡ÊÁÖÚ§VÃÏìð!½ƒ7;®½.Óp_“Ì.ìã$$¨ ³Ëu³ì±sƒ3MpغãqB?û)pþ1qlFu¿ñÕ‘KÁu­¨DÓÐ ‚­Ã‘EtÀ»=/ƒxÆå$ð6™x¼Lêƒ@<èK2.ºp½¸¹Õ ¹9¼B$@Ûzô‰6Šð‰*¡bÒ†VÆ‘X©Ke.0'(Ó—§- D5pÜœÕ;}'9kðNO[RG´Q%¦¥-¡-.žµ†pùõ’Ö_"ô$gyª'Ç¡_f‡j,Ï…Ä|Ü•ãiHIØÒuå_Js§\|½¬"G³ÊQ˜—AüÅYå\ Ô³‘ìbiò¹÷%¢±)‘k<§p8¤á)PN3ÊÅMýßÉ(`8I†üÑ«‹Â®O^ûN.4^ÛÁŠÐ[¡ˆÖ!ïócRz[nFtjãøp@¿jNähÑ âÔv}x*ÂÛ}½íÆ#¼¢HôÕ´„ð#Å$-#“‹Z-ã|åö˜Œ¯—QpzÒÓ°Êé$'2׉kŸ!‹ði*¾<‚Á¡ø˜¦"Ê£ãB8‰ ŽÅÐ ¢¤jt u§`š\3ãø8ílo7é1˜å='³ZŽ­¾Ø gf¬ŸkŒA Ë Föîåìô“+j¦ŸfФG z¥/ž¸" 4°ìÌBõæýݳ׿¡¹³<;Iˆ¶aêÈK"}AcÙ'K=–ªRPÉÎIJç×>F’ACÚËç'CÌÈtoE7c0­Wò¥JÊ\ õ×;ƒD}¹e&œiœ½öÃWAMìªå™®:B$¿Î®®€õ¸˜#¨¦zwOY²¬J=Ïäœk«UzÕŒMý20T=™{¶Ôµçµ­4õt“Ô,È„µ>”É—evXéy¥µ€ 5Bðqsq$íšKæ× F ÅQ&aø=•¡ò¥¤ëú´pŒ“ù‡Ã-§uQz©HÓA×›þðÊáE°qYHO–~a­«Šó Ñí¼.Ÿh$»®àAóI¥4$Ï{@ˆq·Øsøµ¤TGÊ™ZØ@÷”H†u å·æ‚CH%ëßÀø ™—„}»þVJAMÚÙ$¼e4Ø‚ŸG‹@ªÍZß@ä¡´.+¡ÐãÉ€Ö–,:‹!…Wç!ä¨:E@/~t« ñâ‡Dz mlÈP/ÀÏ‘”(ŠsøøÔÙPuëí.‰3Iô¦gÐ4ÄêôÞGßv@|Ì+뻸,c“÷5?ç×8‘47€¸½˜÷Š9¶ÁMõŠDJŽ([O¢T&Vؼ¨¬°e²†V"_&+ä½1dBÔD èW8­›±×?ßÞÝ~xoiýëöîþÃÇ_ÌåáÉï‘N„öÜ@¾)“¸jîXï’]•´?y Óöªó‡¿ºþ±ÈžóbÛþ,¥ýÑ:ýÒP×cú“½àF˜—›‹jm#ˆºÅèšEª4£½Þ—¦Îëêˆpˆ&´>=Pzr`Nˆ¾^mWÉJ_¨I+Ê]q(—‰}¾I³D_cÜìCëÝùbÝB"6×·ïï¯?ÞÌ›ýCcôÍõ4· 3æs¼¶?<”Å¡J›ßÍÔ²hiëOâ>E&µwá4Bª™¨Š—Àìÿ°×7 endstream endobj 2514 0 obj << /Length 761 /Filter /FlateDecode >> stream xÚÍ•mOÛ0Çß÷Søe"ãÇ8áëZÖI£Ð†Ið"$.TkHÒ¾ýÎuZ’SaBUjǹsîÎ÷ÿåQt ×ÊŸ –D Bb"ü@ R£:í0$èh;~ˆzûCŸ JpHBŠ¢R )N°§(EçÎÙt0=p/£ÏOœ÷‡"h{J¬˜B£XÔ:/+íz’I'+Ò,žçfðõ(ÇR„OmÊ43&¿Æäµ·fÖmt|ríÏ"\ËÀ9q•r'‡_Ñ`²cÌ,À>÷»;§:MlDvй.¯ØyªËù*®ç«&è "I±¬÷’"»]ès›WuµÚkþ¿ßÖ°FÍe3ƒú¶3ëÐTíã`ÚŸŒN¢ÑøøÀ:QÙv‚2…Iذ/’å"®uåzŒ1§¾Ñv²ŽÕ•Ò1ñº,pšõbÖ1äN]Ôñ®mr5ó{\⻞ êѶÒI‘§ìë;q9‡­‹|ãœ0Âk.õ“¹ÎÍ;ëʦЭ;¡3%…TÖ)è•NªÕs¹r¹Ï7vøÙ bATEà*k:|M¡‚М;ŸFÓh<ùöö¦è—*œÚCg„Ç?½‰Ë,Þœpoõîzt­DjÔ$!ÉB”d½óK‚RX `è~m•!ÁŒ 4íZI Š(Å¡”¬‘¤$3)m, S!\RýšC–ª‰¦X–‰¶÷ÃùB›&dc‡g!y©¡­8¼Ôß d4tîšsì^Of§jyU‚Fæy£™&m3Ò]UÿÏh$ß#ú`”w`4+µÞKе‹“^E#ö:Oid”·çÂÉõu‹Cæ‘áyÒ˜ð °|§c(Ã-§ÌÔ–Á<Ü”Á¬n‰%ÀiÍ¢$YÞ®e IÊYffï+˪²Â/ˆá]Ò„qŽ}%þŒ&Œ,Y"Û,yHÌ×ošË]xÂÿOèoxb¢iˆ’¼s¢´ÞЕ# ›©´ hEí8AGü¯oR endstream endobj 2519 0 obj << /Length 900 /Filter /FlateDecode >> stream xÚÍVMoÛ8½ûWð(ÃQ$sËfí® l“ÚJEÛƒ"1‰[J%ÙíþûŠt,·ZÔp6À°I ‡£Ç™yÏüŠ(º‡ï[T!¡%D*‰T,0‰£Æ ;ôaBÀ‘ ·Ïãoéäl–D ÖDS”Þ!Éä Ø”èS0}“ž]ݤ0„*¸¥ .NÓéby~Ißýøl«aT¦pÂQ‰•T.raŠ<ŒÁ¹Lešû¿Ý¼0M¹ÍºrkÜóg"HYÕ›îM^¯ŸVæ»5Tm×nßøßǧlÔ~-¤³œd€ ƒðûty¹˜_§ó«÷çnÃM¶IL´vî—Ù*߬²Î´a³8èŒp‡6"°ˆC¦ãê;·îãÀ|ÏíòCVÝ›NOƒº iЈZÖ•wòy°óo¸ÁvØSÊ™Æ4ေÇf¶&o·c‡à k•ìü²ªp‘³¢h÷è`Šx¢05äˆcûC7¦Ý¬:(=ÏÚŽþàÎÐe+<–o›:Š¥öm´˜~œ/!ÍnÛóezµøë„ÞÙU¢1P†Âõ#Dí»dù5ëlדi:ù:¡=1¨mn¡¬˜Bùzòé AØß!‚¹Vè[ïµF1g0®ÐròÁ1$¦ˆR¬…`ž!Å,:‹EBÎ(%M±. ÆT’K§Þ4¹qϳrel³²÷Äwšü[Ó’¾m÷TÂÍBŃ ÛD—Óãò'°dò°ïÛÍm\*+Ï®g00ð²Ú:T‡hÌ×âf9]žŒdÓzëºXgeÕ7"9ìÀ¡ ý%.õjÊ¥Ÿ•«:A¹ gWÙzMÁR? ô+ðÄÆ¸¹×¬Äk–tvÒk–{Ž[ÇCͪ›½Xõ«þèv‹«(æL*ÈóÍÓ³3 *ûž `XÛÉ-ûׂ‚Íc´5ÒN®zÍqâ(Ó`ñ×Ê$þ[eR/U&΄ã/S&¦”_ì•I”éÑþá¡Kà÷Q% ùH¾Ÿ¦Cú…:ôiGp½à’Á´ÚñP^2¬ÝV¸®ÌíƒÐR hÉvÑtК¼®ŠÈ)@Sö$ÍVnCîÈk>šä¥©ì˺vô¢cœäˆKHŒyïüFy w¸©È×¹7Œ±ó*ïê[Óœ@UͱŒfêÁmû0-Lj¬¨B lj𬥌œ^þ·Jï endstream endobj 2523 0 obj << /Length 765 /Filter /FlateDecode >> stream xÚÍVÉnÛ0½û+x¤€˜!EQ‹oYìԚŒ iŠE'B-É‘¨ýûEÆK7N[ …a“¢ÞÌ<ÎòàÄÐ|ÏP‰(|DAƒ0@¡'õüÐCµDstÕ£¤èlµ'½Ã‘Çc$ÂEÉ. 8%Œ’ ]ã€0/túŒ¹×Y‘©&+>þJ«¶žIó<Êràô¥+ ™G`̹I>ŽÀ5£$¢Ó(ês—/2qÆçÉp2rBŽ7Ä'Ã6ú‰1Ð 7½¸ê»à‰ùÆSÓÞÖU«òx‰ Öšo&»Õò馫þ+¾¦ñ0~?aŒÛÆ2(ª¬HóRûÑ×f|}íM Ý—×øürš^LX û"Ä—Nà£Éѧ!äqOÎnH|îo“Ö2Œf‘¥¬ï¾›}&ëü1Uù£%­Sš—ìƒZ¦ ýT6ªy<(¿-•Nó®Ú÷·"Û;ã“Éø2_œŒpÚn7 4 ü$]ÌÚEªd ðV÷º}Ït„Àš¨î%iÕܼ·@}3ýVÕÕ2Ÿ™“Yeò[h ª´ž†«­ Ïk¹òbò£]?‘š(¹á‘¶p<›µË´sµQ|›ê.V[èß[ÑZß…{8-!df÷YÖrœ+³ªÊ¼1dº•.ÈŽ!s¨æÉðó8†ü³ã8¹˜|ù^±;ª+™™^p) ×]qœ.²&—s¹·Þ0é=ôX'QLËŒÇCâÑÍŠÞõ EœC†‡?u¨ .¬ ÷®vh8 Q䯵*ZkÕª2oŠ•EFÞC±Ä_,±S°,¡­Rb§HýJÇŠeþ¦V½* ¯ÜîOtº|rúi”ØÑsbNW½{Ývž´ùf^ÕÏ敹²-°e¸XvC.ëTµµltãü_cß§u‘>7ôËŠL—ÙÚ°»k·éRñRúÁoô®ñfÜ#àûŽ÷Ö_’í»ADB"Ÿÿ¹%™Ë·òÑc—9Õ endstream endobj 2527 0 obj << /Length 881 /Filter /FlateDecode >> stream xÚÝVÛnÛ8}÷WðQB+–3$E2@¶©Ýõ½ÄÖ(Ú>¨¶â°¤V‰“úïw(ɉ˽lÛ¢ÉòÌ™3—ÃÑ'lEŸg¬`‚þ´3\ c ³Js¡b«X•±sv6d(سÛë“dôh¢€p§5²äœdF ®É)Y²·á E ªež«ÝçEI£ƒwB‹y¹­Yó}²Þd'a¤…¸³äçN„ï“¿MwÂ%X$[‹M¤é‹d<›„V„hƒÓñ‰w:àL„mEsƒ†E<¶Ð ]n?Tåöj]1Ýã]³ˆE×?ø{>žÿëèÛË6l^.ót]xŸ+H®•;´!vCÕâõt>”AÁ=%Üyy9ü:²ð´v_Õþº°‡º@{]ø[ê¹î]ÛÂ(Ù©9 Ö`ó¡€t+)§Öäq £z&À59µ&ï„­ÕÌrØ÷àUc†šîŒèbÑœr%Ú$×CÜ5G&9b;ÞÅVLݰEÂ4=¤~†š3«M¹"¡¨Zƒe³¤M¹Ï÷»"÷HãT‹ŽÕã=vK‚\ì¡åéçÁ^Åu/•Z™‘³ÁúoŽgäꑺ—~1£[÷†Áp‰²ÏA uµXÄ÷ÏW“†Øô;  ¦W80½ÿÙŸÑò‡tÐ1{s‘UÙ‹H:IgOÜYú›Ú™‡ãÖiÖ1\·«úê"k5y®smóæ—t³)ý÷›MàפXzêÁb±ý˜‹]óÌ·ÚŸ« }šƒ+=˜+J·Yìñÿ½ØŸ¤›åå:;ÏŠ£Ë%\FþØrGAËìÝrÇÎr¿c¤òö_nIÍb{ëñËlókbÿ³_qõÑMމЗ R.ÝFHz°mwUωæá…e endstream endobj 2531 0 obj << /Length 914 /Filter /FlateDecode >> stream xÚÅVÛnÛ8}÷WðQzË‹HJö¡MíÖz‹Õm‰vXRªKÒôë;$åDÎj±n‹Í"pHI‡ÃÃ᜙ùŠ(ÚÁï%ª?‘*,ˆJJbI,“µmч A/ïÆçÙâÉJ1D NIJQ¶Eð¤8Áe%ú¼XnÎÎ×ï³õ»·OÃ/Ùë'+*¦x‚"¦0I?ñf•…"Ðf§ë©à:2È÷ƒîü‡¼Õv"ƒR÷º­L­Kÿá"dIpëçE¾/†}Þ›zçÁý¥ö_JÝo²‡ìï›­ï€}Óç{¿X׺ݖoLiOb©SŽEœzê­î®Âè¢$ç`ÀŽ1X ©ÛæƒÅpÛ7µÖ–øPÙÿÞDë?ä½_u™ï·£MÇ&UþÍT㺇–ëâÖƒ>A¼×c>õ:g«$#8êµÇ0¸;œ*â N–À ±äÊ£`Ç9[Tb&R4þ1wÑÇB6d@Œb;ŽëbLDÇŠ¢bùçzäõj½ÉÞÿåÂéo! ì’©=–/ æf©ðæÎZ÷6h#$õ3ë¬ÍeÞV¹eç¬/³Å×u² 6´%8¡ *ªÅ§/•ðâs߇ªPÌŒ{´Y|ðúˆ)¢§B°Q"•8a#…©àaD)hËjk/\\š¡-´^™½~ 4 ñ(¼MÉåCB\‚•¸~›-ÏWaƒg6\Ζ§9N€ûձߺá¢m”öó|IŽ.qfñÇÍróË;ݸeÕ”Unê9ýM1Àl ™³refÃofóŸLao,?¨wβÛ¦uZëȪ\Š-oýûV—䉂!p •ºîLHkNõ}k¾ùÛ¡.\¡ËS.Óè¦hߥÓÔyT•%'«ŒKH>pi¿¥2ΡŒIz¯²ø^eP3ŠStfq§(?‚Òçÿ[kâ_¥6§ÆÿPk¦6•ùî:~¨ñü¾tóI醹+Ýð°X˱XOltºhê2‚VÁ¶Æ•koº /]ý™PYíêwßÕñÈÁ\œ¤üPøôµ.ºë¹“ñsy‡Ãa d¾s°þb" ÐÊc7w½ÖãAº>*uWŒd|>È÷»¦5®ÿ»ÓyyÃý”™äï&…HAãqbN8êPÍTêj¸äXòÂÑ‘`ó¾_³u endstream endobj 2535 0 obj << /Length 749 /Filter /FlateDecode >> stream xÚÍVÛnÚ@}ç+öÑ~ðf/^ï:o)…”JMp+Ui{!–|!¾¥_ß±×H@%ŠÚF<ž=3;;³çˆ{DѾç(G>—X©$R®ÀÄõ”‹Jæèj@HÐùæù!œŒ]Š(ž s$’œ`AAŒ®-‰©¶C)VgY’ç¶Ã¥°~AfESFÚ¼“TŸÚŽ dÃsŸŠÚ7Áç“1$¦ûħí69œaÆ=³Ëä"MǶâ͔֙5¶A/ê…bÕv%“Èa SÆM¦ª¹-‹¦Nr(KlÕÜÕà‘íhg;¼?î·Ùhöú½ûà¦ê7ÍŠ8 “nÓö¤”cáú/1PÛŸ Ù2Ù×¾}¥͆ÓÉ×`ryqjb¨xÖr&1ñ•Iò$K~骟´ê;ÝE¦ÆÔ¹.Æ~À%®1Ô£.l†EÍ2¬“"7€¼\“µ¿·Ýº.«¬sW5ÔÒK@úªvb]E« ¯ ,LE™Ôw™yMª]Šñ«Å¦íK‹›Ž¾OfÐÈŹõi2 .§?Ž1S؃ºÓåa©ÃZÇf@Œe¬Ž wa™…ë?ƒûí(I[Z¹’aåù(Ê×7Åà‡CayèPr9ƒgŠfƒ«Üt]h§OÜôž¸isj­l[aùCÒ>€uÿ–­îA¶®ºêÿDWþÿèú¸8 Ó¨Iá^µddÄÊõƒ‰Ú=ƒt±Ï!¶‹Ñ+U«}ɹÄJøkܼ,2“µHãÖ ÀO˜Ú£q6U’/ŒÛHøb]&+[xÐ{ewLí3Ì×H(ÛÛ½^ÀòF/ÀÝëÅžS0E±¢òˆs¸˜{î×åBŽ ¤ôåîÎ ·Û“¤mUÜm•fi¼]Ííj­;ÝQÝi5GvšËIežYëw +þѲB}Ú$Þ&+TLàodEî—•üµ²’¿'Yyÿ€çw“ Uæc¥zSæíÁ¨~g Tt endstream endobj 2539 0 obj << /Length 1318 /Filter /FlateDecode >> stream xÚ½WmS7þî_¡çNèý…™tJÁ¤¤ ¶i§“䃱Ïà©}&gšßÕI‡}¶ð éd8ݱҮž}ôh÷¢è~ߣø‘VcI´Ñȉ‰PF "CCô©AÀ ÷¯>ë6Ž/„A”`K,EÝ!Òk¦‘æKX¨;@Ÿ“Å,k¦’Éd2Lz£¼ùµûæ§”c)ì¦M1˜ì2™<ŽœÉñ…f«ÞSYzOÃTK?í¼Õ9k_Þt/¯¯Nü*W瀦1±Æ›ŸõÆýŸ7ÏfÍ”+“äÙ³ØdÚL™IúýÅco>šæá¿Mø¶˜¸¿wåÿ³"ÌÓI˜8øOwÎì»ÿ¸˜ò{ÿyþùÁ +FOM)pðäl«¦C?éÅr>÷Æ~˜åYqÿ=ìLðµ9ü¹7a il5)- kÇVŒÝn½™\1ƒ…!Ò9Š¡H fV"•»w±ˆ(Å’*Xoÿˆz{F$DÍ—ÀŒÖBúB‰FU«¨¾.š)¥FTF|Ã&”d€-V\m„cn(Z±:‚Œqžq]^ÝÜv¯o»ð€LHGMëä´}ú±XvÞÎIŸkщ”­k{B ®ãqOßÝ,;Ê€Îc7ÌgóÙÓQþÏãÜaý Ò˜û[¿i\‚A¸c¾ sƒÐ°©Ð°é$|wÑ—†¾MsÃj#n %ù ®0‡°v6{t:áæÓ¤?¯f‡ÕÖO÷1Þx.§•Ý‹ãêî«%…+]ÉqûüãæÉRa£,bÊbºíðÃýÄÕÚñ¯y &ÀåÄ” „V 8¿Â@¬ø.3ú]\7w·ºÉ~Šnš% wh&Ü(pû˜ÓLª ÄB—ši#š™åŽShf9ÁòdÝ4?K7]P.þa¾˜ü˜n®s‰(O )ƒæÏ„ Q¦k“ }ÿ½¸t endstream endobj 2544 0 obj << /Length 730 /Filter /FlateDecode >> stream xÚÍU]o›0}çWø¤ÅõÆÐ·®%]:õ 覩í hXµ¿L–’¤MÖjÒE6pî½Ç×çØOˆ¢ üOQ‰ü„'± ҕȵ&¶ãÚH¥(C× A§¯ŽŸ#ã`h»ˆì¢(CRbÉ$’œ`‰¢ÝšÍ<µ‚ ³¨’"ÎKë>:ƒøåXØÞ&F%År0tÈËÔѦ0‚)á:ltqu\ÞD0X.\óÊ’Ò< ŽÎýÈÂÃE¢ Þ뤙‹ît™;ÒYٚѡ²|ÖQ„/©êÞVÝäYåu^NôCÕÔM­çwD¼ü”—u:I> stream xÚÍWËnÛ8Ýû+¸”bùųȤNÆL3ÕЦ Ù¦¡ò£’Ü¢?—9R«I&HA ‰ºä½÷ðœ#ú3¢è#üŸ£-"ð'µÂ’¨L¡LHLDš T´Fo& :?^Ï'/ÎC”`M4EùÁ“âK˜”¯ÐûèÕt~z5û;Ÿ]¾~È/^œQÙ'(a ùð+S¬š8áBFåÖ_ÛÓ ì­¿ÝuL£b'42­©Ã”µÝm¾›wM¨¨ŒO.²~rFTšA.¹©>aÈ:R%˜§¢‹Ãq"”ŽNªfç34¦ ¬Ìº8T¡Ê/±L£¢:˜®¼]=Ú$Dеd(¡K¡}&è³Ø¸±/k¶OàT©ÞôŸÙ€†µ9þ˜ÍóË«wõvî$2œò–£XdÌ/wZ›¢5«8‘LFs³oÍfajÿÈaþîšHrñç+¸P—išO>O¨cµlHÃB§h¹™¼ÿ@Ð Æ/Ávü«‹Ú Á\+4Ÿ¼ñ”Q hžRRsÌTEašBrJ!{mùÒB™Ð³òÅÌw‡zžÏÊʼ„: ¹ÄkMºjGå+˜½Î§WgqÆ£“˜eÑéôn`JXA ±l‹zwhË­ñ¨ÝÖíªHI~Ò_€úÞΧóg?4!íf·Úžâ¶×>Õú1«u{ƒ'YûW™¸RA 0°´ ßõGã_¬Ì¶)Û˜©è›(¶+¹ƒ9µ«Me@h^Úé­õ#uY,*§>Z×Î`vH¨~á œk¬)ë?ÏOò)¾|›u() ({æ`sœÞ×ΧÆË›kÀLª!æÞ@«_l¨±nf¬±7¥µ2‹¡oˆ;ú\î6û¢-eeaÊ& ês;Å_Å·£Gð»y—kÍÿ›GphP©ôÖ#øÑ#–å¾*Ú;X„üŸ8D¨ú¹ â—â§÷àû¹Ùš˜ÒxÞy¿]¯5|LÂeQù·Ð{[º]: di…Ñî‚FìÌ êÛŸµÖ*qÚÛ3‚›c~º¤}»„%›àƒ–©âöÞ5ßgßÄÂGÖŠ¸@øt§F4\ƒCa•rÔ‹úÍ™œB!`L’…bøpÛ„<A® ‘ƒz9‚J‰%¬øž¤íô9‰;Ñô%5ÈÇTŠ3Øp §@8:Ö”Æ*“P¼ÈxW›$ch Àðè¨Å(Šö3ÑG±B Q¤`¤½¨k{Û>w{¿Œ|¬E0·;wfL|6ðEâLe÷á {V¾0 9Ø#ñ…j,:|rÆð'g }<Æèû0†?Œ1ô‘(C8Vü(”ÑöLô\CŸœ1ì^Œ9~ÇQ?aSà©ÂF‚vQ°[ÿ!¯¢ endstream endobj 2552 0 obj << /Length 1440 /Filter /FlateDecode >> stream xÚÕWYoÛF~ׯà#›=¹¤<äS»Èe)Ú$ µ’YðPxÄiúÛ;{m‰{ (‚ÈKîìÎ7ß|;;üìoÿ_x•‡áŸH$XÆÒ‹¹@˜G1÷åí¼· †Ø{1þ}ºY<:'Â#%8!ÞfçIêI†‘€E›­÷ÞO«í2ä„ù0áÕ¶µݵ²ƒ¾Ê;;ÊTQØÑ—%•~]ô¥WR="þãåÇÍå£sÎO=¡HdþêlØ© C˜ íÜ&Âom1 ìt‹à0æß\«F͹ã‘#¢vn»‰D C\tEI &©5¡@/J$6ÂIâ…E,²Vd.6‰$ÌŸX}À˜Ìa‚ý؈éxG”³o¡Š'¨è}¨ä-Tt–‚xò0‡l.:éÔ¡ .“£JGa>mò¢¨û¼²¿×•É´2ØøcH0³H6$Ë·’½‹ÎÂ@Ýʧ¿Ìa%E‰ag°{¼ ©ŒMVèœä(A”ÐcòØ=ŽÈI‚ÉF“_†‘Lȼ¥pCfxböxΟwt’¶Vr’á`Š8æ^H”W9®V?]¬/^¿ÒŒ2ÿ‡‹õæõÕÏgzý:èâ ±ÉrH)ÄeûY£ÒNAšþZ:U~R}¤Zzf¤ù½üñùÀÍbµY|^S‰®m áÐeåâýGìmáý¥‡Þ«ÒãL§¡ðÖ‹·¶@r¢5œA]ŒˆDê«Á%‰ø2$¼7¦H bi¡¬ë¾É”}>Ï u(1ìÐ.ÁÇ,N9ň^X'¯6««óeÌü'Z©ÏVßÇ£@’JG£Û X,4²Ø86œíú*ëòº²OÍ.¯Ú¢hÚî4»²#æ—ÂoÞóK°#<‘©K—¹wëÕúáxÝâ¾UWYoˎ󷜎Œ½y·yôúÝþÿ"öß,¥ôŸ\=y¹.×]ˆ†‹éÌQ–nó´°ã¶Sn²PÕ¾»>Ê2¯‚¼êÔ^5y:ɧUÈp=Ù¨n»¹,åC¶Ôèø·Yž ×iSÖUžµnuíŽJZ8ƒ²ßA¦Ã.¯Ìý¦k[Lâ) {ÐLQ–é×/MP5e£ J»²«;ÎR8·‘Ï$°VeuµýÿF6œ&}"îËØ1wxw£Lî9li¦&²P‚žnaº# 8š÷òüïã¹s1LÎãìùjýìêâÍ®†³¹;b¢ÒtF¶î§EÖPú!ß4Æö†§1•®ÿúÝ¡©õÀßöYgßÔ;kÔérycnwûÂ’ Mv½‰Øm[ë¦Õ´æ£#Ué×]Þ(;a{^=£{^ üÍÖ¡w J½®‡ZUá\º:Í3dd¿ÕÔo¯ë¾ØÚ©ëTobÙÙ´Ú.ëRÓ~×—öMÖwa >‡kZÏ4[ñØfFõ³Ý2G,ÛDc’ø®aFCÉ-3 %'%=Û¨=„è‡È˜šÃCŒøí¶kX¿oLÇ Os Ü]~(råænr]Oõ¬EƒLÇ!ÍE’ÎìûÑÀx§’#B¹G‘îÚþÃÂ"F—áÉ„ncïë¡ÿÑc¥™ï˜H$O[4Ý¡báwµÖ¨²v•¾šD¹«-!Mþ©7§q¤NÀÇË„º]S—¶³²«¡i=•HK'sh•ÜtSƒ.µ>U;' áIpP²Aʳ8;5Ô™›SÚ¤ŸÝ«*ƒ”ÌJ›-#‘0 ²ý¥øgûK1Ó_^öÅockÉ¿¯µ¤ðÙLáƒïoµ–àÅ‚[K1i-—Œèãö½æ’Qcþ_4šmÿI+ävì+5sqäÁ×<(¶y°Ëƒª¾ÖðP»ú!måÃ:¼Û²£XÚÛ\$ðM»Ïo†'‹ ŘÐNß endstream endobj 2556 0 obj << /Length 1044 /Filter /FlateDecode >> stream xÚ½VÛrÛ6}×Wà‘œ‘`\^òæ:²kw;™N’J„Έ ’¹ü}(Qª”(®Ûql,ÀÅîÙÛA>#Šžà÷)DàG$$Š#“ Œ¤%Z¡·#ŠÝœ\KG×AŒ(Á I(JW òEœ`–Ò½÷TáO(Ä{åOžjË…ÔV®Vv-Ô¦m¬¸© ÕÔVþ× 5†ù$5ì¨ÿ1½ïʱëàÛƒ±lQ/‹ºÎÜNëìûže-³µUaŒŸr°Î {Ë9XË,/Ô“ÝäE)U]TêW ¯NCγæ§pÐØB>f\U?OxÕ6Ïȸp ?p04öR¯^:ã?Àl®êMµÎ™Û“U«–͞Ф¿«jˆÿâ:bÃA˜°¸„ c˜rn!¼žÎ¯f·éíý›WöÃK€˜E˜$ñMñÅg±'B/3Ë™Ùåò¡2°Í¶Ú×­ec÷¦êæÀµ™7>`ô òÆGSÍiâ5Ÿ|êµ½¥!æBI«ßÖ²Þ3¾\g¥5Ò{_¶‹biuêÍ,SO+E¥àœ{Î78 žeÉ”Á(€FZÍAаë×ÌjåÐI”K-­9û͆_»Ðáà ^ìO‚ ðæÒ¹²±öˆy3‚cC ]]tòX y€yôzøhkp!0־سé»Û94†ûûí<½ŸýÕuÉ?x÷ܱV»‚VÝ6ó]¦ÚL»1d„ˆ]WßýñºoáÑ4}ÑîU 0 Âq˜p´,Gï?”Ã9”ó$F_;­œÁºFóÑ[÷PD)N„` "Ȉp¨"LêMÁ»^•>§^³lº EϼjõRÚýu±–fX ÙSÆ«„œ;h4Î0 ÜËsû&ήý˜{—¦êWÓó*pÄ"—Og©nÛi}Æ`6òPHöŠ=´Å{TéÅýc D*bïÁ"ïrvùçðΟQu‡Ò Ù£MCXV*ÛÕªPÓã'nø¼”eöí‹+]6 UÖ”MÕüg„»¦­ºá´¬§Í‹Ä’ŽnXÒ‡b¤Òg‘×Â̇.s¸‹§Û骴Rf,«L×Òú|²êœÀ+³u#ëOVZ‡ß­ÜÖÝ3dDGwFÜÂÁKÙSœÞq€Ï²‰c, O¤¯©}Žå/Hp ¶l“©ü˜9F1£ìe¨‹&†Æ…£®øe©+8B]÷0dÛÿ»uñó¨‹@]!ýwÔÅ(d„ÑuEÔ¯éÙ̺ÿ/q¹ìG:î<}î{]7zøWŒõØ|¡Ý_v½9ìóéüÙpÛÚlYåeÓs¦Ó_ãÔÃÖg$êžw˜eÇ®­)§{— ÇþdS² endstream endobj 2560 0 obj << /Length 1529 /Filter /FlateDecode >> stream xÚíX[oÛ6~÷¯Ð£ Ä,/’HèC–&]6´]coØÖv€*Q¶0]\JJÛ¿C‘²¥„Y½+P`Qäá¹óã9zïo ¿g^íaø cŽBÌ÷D"D"ð”ôrïÕ!öž=øün³xt`ã˜x›†E,ò8Ã(N›Ì{í—ªíöËUHCÿ±y¨$+’ÒŒÛNÚÅRÖÛngÆopˆ‹ú¬¨;¹• ÞÈòíæ»" …Al8×j¹¢ sä[÷Õ;©Ì¸Éï˪dkùï`Ýþ3YÅrEB~™°¦6Ïn'Í ¨ë‘Ë>Qݜߪêó¼¨W]QºA¨s0cå¢Õ~‹Üñ8ªm*™”zX<ïº'´ óª#³ç„ݲ—#ó¼¯Ó®}PÔm‘Ý7Ð%¼¬ªäã­:s+q0 ´ 3-Z™6uö«ñèŠÓé)XQ1œ‚¥($ÖCO/×7×?m®_¾xl6ÁÊd˜B9±5å")Ó¾L: yÄ KâëdÐc›2Aø{Õ@(…Ÿõigftê˜ 0ýAÿkÌ„1_“äý`}kÞ´©ÃÃ>ð«%å~ÿ“¨¡+Èz¿+`T£å*~kËp[Üjö²6ÛFÜ Œ@G”Fïƒ|ÆØ 0cÁÁB=ÎU'l†/:™)$3%ˆ ëÙÜåÎhð<> Ën¨QàÇ3á`"E6ã” ÿ‰¡¥¡ÇQ̱ÑM . Š"f‘Ï’1àsi2H mˆˆ#C)e• çY„/x0lùýê T¨â„ÏÅÒ E¼[Cž`#ÀE@<¡1K§ZàÙ `ˆò¿Q ÖyÌõªzqßQ/K & NL"€]ªk>Ò”®Ä Pèа͒fÆ&D, «ˆóƒ'W„ŽzÏ3†!Þ„x’eìn–ÑÏd¥á,Ë>ÇæÆ¡¾€#Á¾\}¤QC^Q³ò‡ëìÀ:¸t5!;ñ —Å4†4ÁˆQËàÃN*é2@ðs¶'Û®]ɧ¶'J0êF2h©§Ú=¨U¤ãë.QUSi{fakg·/ý¦d×+€8‡5\¯!€ˆEî]zÂ-"è³1?Œ„ 0‰]waEœrí"¢ÿ¡é&:gqÖn°E5qç`‡Ãp*@fðèëã×I6ÒoÛFå°Ñp¹oã]6œ’OÈ2¨÷Öe­C5@S@Q½ E` )›˜>T÷z ÅTiÐ!¨ÃLkžû¡Ž”J—^23s}[Ô[3LÌcWlwv"M{•¤ŸÌ[Ú¿+R3l÷eQ[Ñ•ìvº@å~Åc(B-G­šªl9"¤¸S O Æ­¬Ué 0£³¨òœtHŽY—’ß:i,>”‚ÈYÕÇ רB\¬“o.¹^CIo@ÿûëõæåÍoCîµË÷Ts4 pítÒö+/š[yl1)ÆìØ“¬õ5”Œi¸¸Ü,Þ/ÈÐÐÔfp½€qiµxý{ÌCŽX,¼UåL»¥ôÖ‹W¶“'ú:‰C}ç“"`4ãp 8iD7R:¦Œøi3\›ÜªÔô*µïWE)u­ù”å1~¨i‚˜3zŒùõ‹ÍåÍÕR0ÿ\gìÅåiN ÍE7øÔù¶gsͶ»fP|Ð!³O·Ûü¼¾\ÿkÙ};ö•MV%¦y¿—WŽ}§6‹ϳL7s˜Ø&S=•Ièo‡æì“YÒGeX©’m-»¢MLÙ2ìo åCt3(l3hºb½zèààPGðÏ˶ÅVûÞ4­VG˜TMophÞ–2ùsF~²µE˜Y`c¢é‘î/!÷¡W‰rÕT³âM;X£ô¡Ž“¶éÔ8ÈkgGxTmWtšèLýZp¾WEé:ÿ?üøô¡ WÅÇq»ñ›É¿JÖösLV(9„ï̼¿L»f3„Å> stream xÚÍXYoÜ6~÷¯ÐS¡,E¤Jî“ãØ‰ÓÖv¼ëE’®–»+XÇš”ìøßw†¤´G”Æ  0l^ù8óÍÈqVðûÖ©~âŒùqÀRæ¤QìQ’FŽÎÒùpaà¼Æ×³£Wqñ³8¦Îlé0ê°0ðc¸4[8]æ“$›x„ÐØ•릨‹vâ…,v?q0m:™ ³¾(Jq2ñâ èéüe™|ž½uŒIàgAFPLàx4õSš)—W³óÛ‹Iº§šºgç'xé+}AÙt—Kì3Ê0?Mˆá¤º¹lº¶¨A­xGg­CìÞöF®ßMϧ?,»SVhÕ,*^Ôc†ï ¥æÞ›óéÙíåÍìòúêÄÜ!ñ¡³˜d©uØSð²PBëÁ]íZ˜I.ŸUËK»˜P殹\ÙÃ…¨8fÏèhâEfªXˆ>^í>$©=p¥£_G»VÂn´ÍÁ} îfBܵEnÊ\Þ6U‘£h ý8ÊŒE_«–$¨¨$†-NÀ£(EHÍ¿þÚæPŠUÑØ¨©•åÀïÑ"Ñ3lÌ8Ÿx¸kySƒïj¤³·U—£¼u¯oôi›¶—n(³­ä;óFJ‘·Úõ‘{+ÐŒ‡íú-ÃÈŠ ÃÐz&ÖoúØxª0Ô!HD¹c†&.¥à‹g³@SW Ý¸„—È»’·bá+'‰ÏRÍ·ç^N!$ÍÝw—ÓÙõíß/Ë Hí$Löƒü ôÉ&AÞóºãòÙ,h„f†˜òþ·7=hÏŽŽˆF5‚ÈÀ B¼:úø9p°>öCÈŒ'MU9QHa,éчoÀ[”>eéo,ØÂ[ÅW÷/7¤û¿Àê‚Ú÷ÇâQäËG=¨Ç­nÿ{ô§ÁÞ÷±öòêænöêún89NÝ› cîéíéçà¯éÄšå\À#Ò4:1ŠÝ{¨­YÔ]5rpE} gb%dï±Ã´5n57,Çe!Uë=rYð`a·E±5P· bÔŽ„¼©6¥ø‚«ºâmÅ¿ÜÀ[ÕjS/õ[J·ÂÕ¾p%¬?(]µ ¥¶jOèWejÌ­ÿ±N½µó„Ù67\ö°Í»â@KÔ¹0ûHÊöjƒÞXʦÚbf ·Hxg€'ÜVþ(ÜU4ŒçÂÖŠÞ“ø¥=…·ÑHÚØ dyîÅaHýŒ’þB1Ê€(Š£žF—¹È–9ã|~/̨OÂx?+¼-É/CÍ;†¡¶^Àî’î†eWC‰É‡šÙèÛÌÔq oæ-d-BshЬ¡ÌV=ÁÒµvi̯4ЭðÄ4pÁIŒ9¢+Kzz FcÕ8»6oÚ 5ïÚº çíÚú‹$>‹â½¬1¡‘Q÷ôæ/œ@aD',̼l4¨‡^#ç…©â@ žÊ1¡< <¦{§Šze¯Š9×ñyo|,-?µ$‚è­šK6®ZÉkµld5-ºÌ¼›¡åú³¾‰ öŸ1uu³°¬Ž†H¿!Ü@Ø>¸ÔuV3k ÔÞÒS®«ìózq m/Íp£™ƒ¬!0`Ãú.™8€­Êøq”Þ˜u]Ùa‚Nêê=ö”w¶ÖÙASª ûP¬6;<Ï;ý¥i 𸰇æacU6síÚc €ã¼£©1?܆)ÖÐv,:-nÓu?µUQri#Å~–dìFÚ(Ë…ÒFQkÅŠ©í€m¤Ù²†Ð&·onaóÀMÔÚOݧu14©»\ƒg9DÍîíݰØêGàíGŸsˆöÑÀtfàíMäBÃT`mÅmÜë¥Ö·µ0QÝÁ‰NÕí§aœ„.öJaÚsðMkƒä½s˜]$ƒxT#¥”/Z}l®›¾Ý¶}s?º‡–’_¡Îw‚§/ lù§B¹¶‰Sc’Ì'éPzžø£XŽÇgø8³„Ç£¼ü$”€"©ÖÐ{Œ2‹ã]©#ìàû€’Z“‡ú%¶5!‹ü˜Dö›ãçrœndQ~çƒã0àoEÕ<ö b1+1‰p!¤»±-øã²u<þ©“½Hòé‘J{o!¼Íš«^µºãî–ËÂ6zÍWµh ÅÛAM0FO „?’—JÇÊÐËïȽsù-u/άI¯Íø‹~¿¬ðFX^oZÀJ£Òà”®DàeYU>|é·ßÞ¿¸¢“eð™:Iè'=40Ü 3þ³ìóÈ endstream endobj 2569 0 obj << /Length 1016 /Filter /FlateDecode >> stream xÚÝUmoÛ6þî_Á0±|E)ûÔ¥Nçlhר04ý H´-Ì]RZÛ¿#)ù%u€lÆa’§»ãû{î>"Š6ð{:DàO "s‰òT`’fyŠŒBkônF@‘ ×‡õ»ÕìÅMJ¥¸‚¡ÕI†$'X€ÑªFï#‰©¤qB)‘Ùê¶ÜØmœp)¢{"ÈR¦Rá|ÓìÔUœBŠx]P£ñ‡Õí‹pM .HAÝE%œaƳpÏâÍj~wçv¼µÕu[6Ý¥—'@¿š/¯ï?­oß\*E‹ILŠ"¨_ëÎEéw÷O™ÞÆ ƒÈõ[6­“÷„f]pBÕª³M3} ‚²«GõrÓ©¾±eßèQymt>ÚýV™¦*wáC¥ÝiS7]Ù«éæ˜F:lËÇfðŸr,Òþ¶4­îš ‡óH}Þ—Mw8NÒTDK¥BΣM!^Œ2ðå}„´þv)X)Án7*â‹9 Üp«ÀÔÉœêÝü—ÅRp}¿X®ÞÞýú¼Z`9Π–Ï’zm„¨q[vCi¾„#¤;Ç¢Û^M,™ÍW³3ê‰LÓ¢ÀE–£ª½ÿ@P r'æEŽ>y­¥Üe‡–³wO0:•g¬82šÝiÓ>‡ÐNï¿ÂgùDçµ"ñ”EzÖ½QUc=OÅžánΆ]¨.ÿA÷Ž¡þ“£80lsPe‡]öÀR…ïþ•gî¿j N85Ü5'hì%rWºÝ‘O][pG«úQ¾rWt#ÛùÛIŽ9å‰ï c¾ñ| ³ Î<»Xša)ÙÑ jÕ_·÷ïÕðX\¿ô˜º$¼{„ÙhEk(¯ ¯Ïñ»¡;ž6² i³ªK|X &¹8Nï›,t:!óhµm)£C…s—umÇ]X*ÝÙ¾ô-¿ ìBÆ@pžX=jnËÉ&èÊC±8ÏÎb*87vºÑ@ö#ÎÅúR¢ƒ?×ÀÑ&„À× ˆ¦+`{v¨¨Ï•Rþœ‡°¦QC¬<Ú½“SÁ'ç°4]Óm‚ óÙX;¨?Ñþ‰FŸ^hô/÷¦ÙÚ<¿Øæ‡òz[v›ÉA˜½¾Õ) ¥æßéŽ.én…úÙ7á°Tû^µÊ®Ìž7Y(Lž‰¿7Y(LÝï0Yøq²ìwºÎdqzÿîdIŸœ,ó_ž,»#ç4³çyÌ(OÏŒ /Dì« endstream endobj 2491 0 obj << /Type /ObjStm /N 100 /First 981 /Length 1382 /Filter /FlateDecode >> stream xÚÍYMo7½ëWð¬Èù" 9´o‚4‡¶FA"‚¸ˆ ý÷}CÛ©wµÒÒZ9Íe5\>~½7äÌR) 1¤XJHŠ…Bø­ˆš¡)Q)°5ÂÄRŠ1ˆTÇPÝÈÁ’m`Ô)9FB¶f”Pbë#0ZiL¡šºÁè5c)‘?šexhòZ/bX’DÚÀÂ<Ú#jUš%°° ÔÂ2jCÔ²¹•0‡’Åq˜zMâµn©Ï aµ‰³[(’Ð&%ÆT|Bl˜ØkñŽÍÛ& $Š_¢À²¶jÄÌçœÐiŽÞÖÙ,Þ½b¦T)b A/Õ| vcôõ¢ŽâmÉcqnˆ ÕqxGÕ-4co‹ 1—Öb‰¤ŒZ‹®°αµ@/YÜÊþÎSÐÄ…½-£—š›åg¹“¢@ë¤Î3FRuž™ƒWÞÃM-qŸÐÖ¢¸wØx¢]~|»yñâ Sàcàåõ§Ûpq¶—.[Í­É%|8ë} ­Éå®wG< A]÷÷%бÈûRr$µܾú|ýþ×Ým¸ ÛW//ÃöÍîëmø6—7ÿü½CÅ»?w›íϘ×îÓí-m¤ÍöõîæúËç÷»›»³©½ûe÷á¯w?] W>9­:¼»HJ}‹ñÞ}F'Žos±ƒ³ð?v @Žh3ÃâG!£o÷óE X\éE έApòÐå1‡S%Æ*œ¨ôH—Ó•(3JØz%r§Ç/iHQ—Œcó¹ýn~бÇÄŸJ®FÚ#×£äJr=÷;Æqó)³ ?¯÷9cEQÊ%Œé›Lä½ðCIùÐ µRZ)šÍˆ&ëEÓNÑt¤…EéÐ"0T‰ö„ã~$áá]qžHSœ¡»¬§»vÒ]Ç,! ÊΖ1§c79ôc§=¾Îz5í‡^Ï–ŸÂ·&Ûã;õ…Þ1>ð´ ÑK9{¦sJë ¥y=¥¥“Ò2‰¡4 Ù_rÄ1??¥Äû”RZM)Q¥#ܱÈ9â“n¨"Ï9O§4ÏPªë)µNJ­—Ò1PJ"É2߉C5ûÿ²–Ã¹ÈøÈ?YAN3 ÖÕ rìSp„Cf’âñ»d…Ô±®ÏL&‰`gžr:ݺO7ózº¥“néÜ0 h$wôècÍ?æaÅ3!•ŸR%ísßR¹ìA…x˜Š éÈwÿ‰écÂ8>ƒžaSÈLú(´ZéLe’>âh‰¬Ë@¦8ø}p—0c~ö\GÊ ¥¶žÒÜIiž|pæ(/™ËÉœýŸ˜£¯ýI8‹O–Bg.l4®–B;/lt|cœÉë2’ þŸÍ)ŽÞzI> stream xÚí[ÛnÛH}÷Wð‘Úµ:}¿x0 8±3k/6ÉXšId‹²ˆ’†¢fœ¿ßj6)‘tS7Óv2 ƒMª/ÕU§êTSª?ÜÂÿ/Á4Àð'ŒB+­ÍÂ\j$Q0 ~=Âп4^_÷^½å: lHÐJ!EU F&êƒáruº‚Š0ž ãÁxÚùÜ¿|õVÑò¸®ÈÆu‰AZP7îì¼÷æêâCÿâý»7†ˆòt©BØh×ýý2/ÓE§Ë Ó»È6xxÓ¡:¼$·‘û`MãÔ>üÒÑ,`!;sæ“YšŽ§·È«0*0¢œBƒ!¦rU_ÿ~Ñ}¹‰þ}Ñë¿¿ú_¦¼Æ«oŒÂ¾˜¬Zà è%†Îz—ËinGŠ1s­OXàËÿœÁ…d‹œ÷þ8"®HKŠ‘"¸‰>~ÆÁž_1°Ù_Y¯8àŒÂuôŽ~ÍEBVˆ‘D‚›N$…ˆâ.!°z2‰“Y {UN’Þl™ÜDîþíx€çÝÐÈàBκ2IXNŒ[ãâ]ÿüꭅǩʛóÝ4X†0s3-–×Él FÌ5çD±²ÎÓÛãI<¸?ž ‡kÉ$Þæï>üÖ˜ƒ lVèðCG©ðôêô¿ç xïp{Ï;]J@c'NÚñÈ]ç?w‰k[MW­|K³tŽgùãx&ãû|ø"¿Æód6’5dÆÓãñ4n£¤Ø·5aà.¹ @9`dèZÈr¾œ3Àg“hñS~3™ß Ž]û:J‹æí Ž•ÊÛdvÉú²9¸¬9Ü “b;÷ãx¯Ö]NIËâhší¶© xj5û¢ÎØnÔÞ Ç± M…"w›qX5˜Ý£k-æwQ2¾)n!Ƴéøf›É쪀ו²šÿ(ëëaò h׸ïá*J—ÉÔÆmaò¸ ^Ëh2Úv¡¡GÞՄ׃Å8>¹kÒ!!|JB«Û¹¤ûy¡|ØíøOëèÑ´&Dz—Dù"~¤v\8ýå¬ÁÊ[æ1½b‚O˜@üä!@˜Hio!¢ æî•½>½Qƒ‘ëIÉWLœa'¸m̉%9eIŽóxDÒˆ¸ð|!®M‰¾ìZVÕ¥ C¡NW1öÝsâLf¸w·ÖB¶û0J£$†€8tÏ—‹ÌŠ)­‚­R`ºªgàÍØ \ºí$!*ü¹{wUá»(çüèO+33áG_d%L"&W ¸´£™{i²¼IáF¾¹‹âœ}y÷#ñb,óš‹Ðû[Q˜6“Ò"…í?ç.–ãtp=¥}q[ŠgàßBƒ…H¦1™%™–]Ê-˪Zhˆì é8w"›_Œj¹‘ öQÙ=à¶ìЯ ÕSÀP±Ã<]¢4PÈ(ìô„„²v„ ¡\/â›’F Ö½þåU(¤Sd¥PìE5(P²ŸH´5‘¬1Or›HŠ(ãÐ×'´ðYœïŸŠŠHv:ixžÆM ääÙA¡Uz¦á™ŸâSÕ’D Î.Ĺ™-š"'à\s³c˜Ú¬)ç§R¯,·ðB覜;øg£ðoòT" ¢Ô8WU¦õ¸Öލ_.¨ÙkÅŽ^k;ƒ™ÚðZ )f_»×n¢Ì’ת}½¶ƒ½¤8 €K{ä+Åï–]•îêªÂ/¼W´媺ÑU׸«ÌªÕj›·¶ÈÃl7uwÉüÃù¹lös.áÌToXv`}”£siðÊ7æžT±¶Ó³CënħËqŽtÞ¤2ü?þÈ`½©’Ÿ?šøèob Ê÷ËQ÷6n2OkÞÖDº-fÔ@ʯ€È#=¦˜Kòì¸ÝºÇìÈ:-’)G«¶üdë°VYg›ŸPH•ó¬aƒrâo5³´é ]ªts†&²2;dhâ‰24o¤~˜¡5m bè—Ÿú¥ªË?jxo¹†òsÂØ®§0]q²,Ñß #åÈÍ>?>"àZ±Špê[ b…A©×?½†Êšû-÷Ú¯ ‰p©×gÌ*øiU¦m¡\½ìY?CÙ)+©Ý$£ù†`Vµè˜­­ú„HÓ[‘§ ¶òî[Ÿ@,6¼<Å é,|¾ãêMŒ»!m•OóJg;/ëçå5ŸÒ¦5±kÀ‘û9ó“œ-´†Í‹æ·‡¶päKœ.¥5»l°ˆúàåÑõ=äAäYÉi+7‰ÍÜÄ”‘s|ÞwÛþîazÚt€c_ÃW/Ïtmà^éþæ'8óò4÷ `ù®hîk8‡™ç¡:­!¬™o†ê=·=É× Ù©m“óbÄ$ûq¦ùîÏ4 ¯ëD»¯ëäšøñV¸‚JÑÀ¶à\2ÄHþñ_wQyç#ÈP±£øzƒ_BÓòH©Û'LIÓ¯c׿ùn^’!#ÌFb’H ù÷#&8Ÿˆ21ûQN8ÙÏn¯ìfl±“Ïn~J^²Û£|;¾Û,¡`¯w›¾…ÑuyHsò_‡] hß ˆ4’UÙú _‡haêÄ\„rýû¬ÈE…/²R#w«h®³ÂÙ2]ñÅaÐú«©/þ£¸Z Ð܃ ÙÏÛ96H“‡%®~àfÏ'ѽ«hª-°œ‡½(¯FÈËX˜WÌ-|å—”W^‘ÜFÓdûäf¼œ0ûæhÉÕæA—QQâó *˜ò—0kkêš5KÇË/Y¡ŸW£gÉÞÑ_ÜÉ C ?cqçYtÅ×E…ÅXïVà r*ÀÔŽõ•ÂáZq“r€’ÚåxÄÖ¬†Áâÿ_Š×Ž endstream endobj 2578 0 obj << /Length 1817 /Filter /FlateDecode >> stream xÚÝZmoÛ6þž_¡o•Q‹å«He°¬M:wXÒ&ëPÕVb¶•JJšô×ï(R–äЉ¸mZÞŽÇ»çŽGÞòˆwÿ/½¹‡áOD ,•ôóPq/O¼SïÍAì½\\î<;àÄ#EBPoxêIêI†‘€Añ÷ΗˆHÑ ¡Âϳ2¾Šçg½€Iáÿ‹>É.òQbžÒi²Û Æ Ata#½÷ÃWÏ@5Á(ÂÑa/€y” Í<ƒÃáþñAO1¯G•ÿ|Wºa1˜«ÚZ’Tzň3i4óì¢Lç`—hY­íM΋><÷ÇIٿ엓Ƹ·Õ½ƒÃ×o‡ÏŽÞá å¿îIéïïýµ¶Ÿ¬g0U(d¡Õl}«Œ©»æò%É3sw™ŒÊ,7÷e6Mòx>²niwÒy?Oâií…Æ”0$xdô‚§½‰2Íææi—yzåR†YŸiËz…Q àuÔ¶Á·$Ÿ¥óx^6š!·Úy ù%äBß<Ëgñ4-’±yޝÒâ&KбÓâz†rS€ HŽi²ÚÜåÌ :1´Ùñbÿäùñàõppt¸k±”îT")#þ2½Ôiž€Œq?ÖÖ2K?Y\+eœµ•‘ë‡"A¨QxìšT!J˜º’ЮUØpæaD„ûŸ£ë%F06h‰]ºL ‘ŒD=Å/€r(a&J]æÀ-•¬eé(ÊÿÕ*î +¤k…ÒD-hxÚ`ÿÍ9C„Fº®QiÙ(+V@É©hlr[.‘‚el…ž:õT·µˆ…bŠ"‰-R” A¥µI霉#É(„¶Óq³yÈygJ N’ÆtŒW€Þ2ìA(âð¹TIˆÛ««k§MT)Ú‰ùX (¥+»lãÃwÖ0¨V¢HçN5QB;†'þ•S#­¶ão¿ofðn©ÛÕ¨6ê¶utí†Uµ9¬ºv@É$HÒÝU’~7¬W¦0¹Ö7ˆ@Jm]£ ªñµ£Ã?æb¼Vˆ;‹±BN* ºã¬wʈýÉ~GE—¶àål«¥cš­=ðg@s›…¸ÚßnÉE ÅKý‡ƒu7\§î’¯”§Ž²ËÙZÙ½ûL–ö“¥ª+À¯Ÿ±ì.…@0­ ®ÖeÏi¦C·™Ôm•Àƒï2˜®š­)'ºUfDw¸–a$ôÇ=âÃ-ñMs^?YÑr’˜ÓhëÙi­Å6¤ÚzŠ¡ï‡îÝ9ÞìÙÊx>îXÖ]¹~ç2çnPž¥ 7ZŨp¦üÁ銽SÐ…¾ãu^aÙäUž'Å9ÔTågóqa· G !—øˆ ¤B>ê+÷ÓÙyž™‘In>5\€~T¬h6Ÿ^/Þ™Wv¬´cáEœ—FFT¿¹¨Ø3åØzÛå¥"Re+n8WiÆP˜˜åLçd”\s¬S!Ìå]ëT!®Á!::”øÃÚÍN2Lh•a×| kn iè”Ól:Íô‡Ï…ya2qÿCžžMô—2˜˜<Ô\ÌÅ4y‚V0—”A-´«óxÿïÁÉàèÐ ûcp2<:þçd - Ïó$.kêëE2JfKyQŒÃ†¦zõ狺þììw>íŠþ%šÂeºpÀ{4Ûy÷{cxÕ±HyŸ+©™Ç™Þ;¦ÞÉΛ<0ã I6‚(eß ¸ý'}Ó|ž¤#ýebÓJ ’ͦfÈ2Ðiõû&øV\ŒFIQØĈխ‡^ñRm5£Ì8™kÆ-C#oÞ×E™Ìº-"à/!IaU„JÙ v¤ ³ÿ^çÞk endstream endobj 2582 0 obj << /Length 1705 /Filter /FlateDecode >> stream xÚÍXYoÛF~÷¯à#ˆ›=¸]ô!MìÔ)rÉJ$)@K”L„"RjäßÙƒi¯b)0‚ pöÐîì7÷ ¿$XÂß‹  0üã‰DK%s„c¡â Î‚EðîÃA¼¸7þ6=yrNx@0JpB‚é"P1ÆÉ0â@`:>„>M_v·‚Ç8œ^gzûÉyÌú˜@Œ'pÐ\ÝÚ#”%›Qƃˆ Á„{Àž"‰‘d4èŠÆ¾÷`J“#ߣ?ø=vØ{é6kFˆ?LëÌNêj®³¹Û-GT…ë|VT£f3½üü5oÜáõu]m–×Ýa)ŒË«(‰0å-'1ñ„©è¥Wæáj³n_ô’Žô("Rˆ ÖQºÍ›¡-F1ƈPD”"×­‚µXß…«îÁe(Ã6‡°‡'D)E4iŠÊ01†Ù#¢? v {Nã±Ï)ØN!HÏ)â=NÁ;Ò+8þ*Õ>£úôø KÀA‰r>Ózà±>ƒ“ãøùN§…$‡Ù(厈þtˆØaˆœÛ€YZ·¡IÏmôî·ÜïÜÆvã^·‰‘ªç6Ü3A "¹Ïk4–½¹D%ä‡HQÌç:eC1‡Yæuµî2oºnÃÛ:ÛYÝ‹6ý½Ëìeå¢E™Í²¦I뼸µG6刄ù— `‹ª%c‡eþ߈Ê0+{B^¹Õ*]×ùYî$ís *D~röçÅåÅ›×öÞï—Ó7“N! A%j me2ò@Ïȩ̂<|•ÞÚ Å˜ÙÙGÌñË?žÃ`œ\£‘òØ©ì<ß¶—oêêªÈVv‚-?7n^Ùñ¼†=;ý+]–Y=¶‹—›2kŸ%þgOΦ'_Nˆ©—Iòá2A„Ó`¶:ùð sØlˆ%*øjN­‚Šàòä-˜cÖ×@šبtµ²DDÊQD<ª©µ+/LZ,—Õ¦žev}žÙéÈDÙî$Z$¸ëQ ‰;_¼žžMÎGŠ…Oµë>;;LwI*‡ªk6Wàë뼕ž³(V.LÇÅ*ÝŽËq1ë]bþ§;Œ÷ÉG}ú¢EúöýôÉ›÷S€s®Â·#)ç“§¯Î€‡Ëï7ºZûá ËÓºs½²Î°3„¼ƒ•zÊÆL³p×]Í2†s-aØÈWg”àÏ›"­Ý/Õ*+×íO\gˬÞgí€ Ú¡.7««Ì‘«v\lÊ™æäŽíÛ~Ì[¸%¸ã¤ÈÒy^.íbžø¦ØaØ Žæ¬Ê‹|–ƒ š!&à x;kn®³:ŸµËë´^Ue>³«l{“ö™ØgöÓÙµÁ­­Ò•KP++¯¦Án˪# cÔòÔåQžô‹àKãYµº)²­À]·Ž–í|æùÙå³ÉÅÛ)èS_ªÒÁ\BÒW.˜HM/OÄa“¹£q›LaT`RJÚW¶ˆ²„Nuzt,\F彌ʃPhš8iOå>¨ JeôNi¡¸‡é°ö§qWS×þ2‡±+2@ž þê¨ Kt…¤2D÷æÆß&(Rí#Ê$‰Ðpå• ô'v€'ï—Œ0!ÊŠq'-*y"’ˆª‡Ÿ‚¾›À'¥³‰‰ç%¤˜&,¥äýV^k¢;Ûj bݰC*$ö—} ‚ßc€ß;¶WKr %Ã< êa¸-– NÖÆÁcI´(¼}FŒ”èŒb}IÞUžºÀÂÖHÊÔH±¤6 éWf¶ØÍ × íÚ¦ö{Z‰wlìײ®;ÕZ¾£È—\aÔU¦i9w±Øw)Moº”æÌØ}©™ìë ;–Ð(R<j\CÛŽ4œW¥ו.4oí\·Âu³¶ W«ƒR  dOût9±ÔÁFµ±ÚUĪW'ýp0dˆ%èàûT‡¿€0…°yÄ™]˽-…Ҍ܉Aµðö1Å»¶vâi6l{Ýk6>bo»Æ¡ºg‰_1܈¤8n2'­¶$³(‡5\‚ø®%ÉŒd}ŸSlª»Ç½12§œÒmÝÜ·¥3ˆ£º@dË^ ׉e—»¯3w×¹dP¬ï¾Ü´ÖÕ~2qíÌ^¶iBûßfêb¥ë?_DˆMÌïìÜ—t ÿØõDñãöDÂÓ=‡6oWæAc¤ëPˆ€x~}`‡òOûzm ‡Eë«„É{ðúÿd×` endstream endobj 2586 0 obj << /Length 1535 /Filter /FlateDecode >> stream xÚµWYsÛ6~÷¯à#5#!8t§n"'n'‰#+f’t†‘(‰3{û~ ˆ/µ{=QʽX\¼žƒ7OÏ5ñ…?DAßzÞ«8ÏÌ) «"¾7{”d)¢0Á­˜ ” ‘Ì(80„Qn  Êð N©9„Ùö„…}“§QV5¯,Ÿ8«¢mTœ¦ÞÑï }Ï}Þª%;¤_"K.ߘusÈV¨ªÒ«¼§Áè_ɲfŒ¶’$Q¸Ž³­9¬c_¶yœ¢õîÚËÌ}Kr•G›M¼ŠAåPŠj5WÒ}Yc—û]TÄ«01Ç]X¤y¯Ì)ºß‡=H›Ü*& W» ¤ÍôPÈF[1,Oeåo›DÖþÄ­FÂlm5b°wUÚ*: X¿‹ŽÅ7 ±ÐŠD&3-w¹‹KCÛ¬Ü]ç™U×— WîƒÙƒÊ¼¢¬Ìjl M› þ d`"Ä.f‹ÉFåãf~H°îájjb’WÐOCD w~Ä0weú~ l-ÌYáYމÌ죜òÍON‰Gƒ#‚;££ umô !I-|°àÀ9tË–ÃÃÌ3 %iYm5 A9l"aGÛ¾+ª5;ÂÃÖ½¯¤¯Ì'³öûäa`´ÚÀò(Fû töJ:–“®¤cêß5mî·Q¦Žâ±ñ.Ü['‰ÍN¨ßÊý¤ØrŽeŒ$:?«À‚û ¯®rÖoó߯n ü ¯®n–o¾£6ÔžCwÛ¶ û"¶ý§Tt�8Ñx½Î×ñ&ŽÖSsùE´Šº¾ˆèQ"góåÙí«*†CQ-§œUzöñ3uÖð8Ùþ¯úVêxƒ,qnÎÞ˜¬0ʹߛ¬‚f²*WÁÜ]yÖ58Ñ·g¬¯¿yÊ´åÿ°iëİU®¢©Ã0O¦É4+¦Åô®˜îéô~Ùt·§OšµØÿ6lYðy2è\Ë}Ô¸ZÓ²&ñvW™ml;å°ÊÓ¦ñ>dqUŽMcãcÅp²{d$º=„Ý¡?ꙑõˆÝž¢ê•õv¨Œq^Íh~=þÆé÷Bú¨íSa玀hmÛD&ôà#HåÿʬÉb endstream endobj 2590 0 obj << /Length 1789 /Filter /FlateDecode >> stream xÚ­X[s›8~ϯàÏ‚ª+ÝéC¶MÚd§ÍÍíÌNÓb“˜)›KÒìËþõ=B€ÁQ7ídb$çò‹>´vˆsÿïÌÁð'B‰–J:Š „y ¸SÄεs¶‡a!vÞ÷׿¦{¯%uF!‰3½v`&F^šÎ¯î»ƒ‹·çG§Ó£“O¯'ߦǯ‰®ÇŽO%¡2Ë÷W«4‰Ë‰Ïw«E¬Â-gQæf§Q•Ü&e•ÌÌÓbBÜhžD©™~ˆ–IZåYežÑÈÙP#å)ÐÛèû`³)D¡àÝ ¤Ø­r£>j­(¼›P÷áçVÿÄ×u6«’Ü®8XÑNú©YC…#Q(±aÌŸ )¥Y•Ú¬dˆò›Ehâ ¬Üé"iáƒ+¼æø,„—Èà¡YeŸÀmµ*rmõdi£Íí2Éf±‚wÒmÇQYÖËØê–¤(`â7¸%Q€ÅÐ/íN£¼5­Í…Þ6+ò>gØÍòb¥I]¥­:ŠœP·†”É’J¿~?Q\cHåîÀˆ’ˆr>FlV/cîÝ´.ô”»%ÀW^bÂãÒwñ"›¼ó±ÂDȾÐञÀ)@ÄÀÔ.zcÕJ }T C”]©@ vQ*E0ÔÚä€q“Ü6yÒb“,¡ŒgI•Þ›ù•êÞf¡/1ȤÐB¤B±:êù,êÑ‘ctÄtí<ƒŠlÖ]bÊmfjµÌñä0}²&yvp_bm²8$ëYÅ€¢o@L|J©K@Ñ‹÷¦{ë=ÒôjâPÈ+ à!¢Ô™-÷¾~ÃΞ;q8wÍÊ¥ )Ñ'u.öÎLï«¥ :? œ€…HíµS›ñMƒü8ñ ¡ ›hÑ­hAg‡N%ÆâÈvT Æhç³-™aØÐ[@ÒÛÖV<…M8*u¾–þTÏ‚î0ÂCè›U—c«§¬°¶~,e”! Yô|DuÄ8 c/µ(;ñ0 Mœ ŸÓvpÅÌí3‹÷ tGï…Ýû­r$‰x?·x/„»äs#˜=é~'kàþÜøÀaørØS;ñŸ¶Ðû «tŸÄIKîqaÝPaQÀ¶’ýA. Ü7›¦sÒr&Ä?ª¸È޳4åæ4h¸VÀ]ìì„ÄD¸)m›^ŽBÞWÿ“ÇÛ‰AB$6ûhVhv"6®ú6ê7VÍ aÖË{¾3Í,- RvaÖì±w$b Ý–EÙÜJ& ¢¡ìþTmoXŠ“mÚ£#—_UQ’Ås3».ò¥%&’ñMÄ#»ÙD¿¡0T†dá˜ÂÌòz•6’`Kî95{À©ái¼®:X"cì˜äkÒUÛíúüàËÑ|óꇣ‹éÉù? ÛðÅø©~Ô4ìp QiĽ-â¨Òf *Ü“Y•_Å…™PŒ™é½õøïwö=ŒP?$dÛýƒÁnÔõζ6C?ˆ12C> stream xÚÕZ[sÛ6~÷¯à#5•\I0AÇ“4ÜM*“A mBôëóëW.®¦ï.Ÿ»E±ÃL$cÆÛDôœ Z¦AWÙ&ÊÜJ­ú+c ¥&€zˆ'ÌÄI;ƒ,­ìÖÒDº6ÀÈD!8gn¢e]¿XÏÒ:VҸ̖4}±®(ÖÓ´Ö¦ôõzFtîÊÿŒ(7Sê»Íš…âjµ@  mšX”\ Üï¦,V>Ua!¥[=JŸ¦ZÝã¶O˜»¨ݰƒ#‡ŸI®´œ¯ÙhbcNïkšQú§ZÿbéÌÐ|Ù¬!¾£R›‚ÞÝ—Ù|1«Šr2+Ê2£‘û°Êª;” `5w/ªÂý®[ªÍ늕ÌAY@rˆØY±¹_R¶UJ‚B—ëjÒdD¥tcF)òµ{ãB[Ðæ`×9x ×ü&¹­Ñ*M¿y]0œOÏÎD]í¡xÓš™$ T¤™Œu0[ýö;æø_c€ÿ\O]9â Ãep}ö¾)ÿ<;bF355à¼ÞÑ@ÈÚ b¦­r®œØyÌ’˜×,\+¡Ê« ©ÞL3½iŠÉDíøÆ€Ø$¢°5Ñ€È"É$ & 4WmáC_„O#U@ÛPúì."0h9ÿLÁ)Ad{,¡äLaâKUÎbåÇU…ô0IO×ïÚÝC”EÕ@I<†’Ô n“S d˜FP8€$¢¥¹"É)bF™¿ކJ¡2ŒvVV­ô{|ÑB)l†µ_ï’DKF,ŽãÇ™ô-ùÞkÉHêÚ’âÿ §1‹€ÇO:‹ëÁ4Q§êŽ)çþ<Ù#Ðæ€¡Ð§lÉqhƒ–;[²Ú¥ y4 ønÇ0€(Û‰.µÏS`e£PC0ÎŦŠé(éiÀ}´Œtg/8eÒÕß!¶Kveà°ø(ðr„![ibͼ9…0¥wrJéÙÑ:z[˜EÐqLÜÎ^ f£†QJ ”ÞgBl™0T~ÝãiNÝOÛ!ä ÐÌ:÷ x[ù•C(ÑžJ‡$Ù!ÉxË ÔȨÙûSç ñ¿MC£’Xºv,yܰÛ•OCÐâM½ñí~[ÜÉlwÅ^;Xf­9ž8á ‰ýó½:E…”?Q‚éö¬ëó]Vz;,L2rÕ;ž"Yçw‹ºMÓ„Aöï*+óº1ÂÓ=\ F•¹ ÓØ»Q’Æö  ÔðPûù.nÑäµm^¤ù܉á 7|¬4³\õ+ªk…‹ š4s‚ƒÛ¨gS”<¢MÍ;œÛ2>õfiKBEb’ѳrIo:D­uøfd5:ÂeAö¹î•’ÔHÃÆMÿq”Ÿj·Û6”´ÛqXw½M ñûý©¨á-—®ÃÄ+Ú¥zðcZ®Š|ì;Ô5ËÎÊoIR‘„Ww_¨­´ _=w¯®‹åbÞ «´Êú-å0‚£€WaÁ÷àÎèÎkÇD2•౓›â…H☼¹ùXu®¦v3êf“ÏÈ4koZŽ{ûå‰øÎ©VÞæFoòFî4qЛµÇä A½÷0t…Õ–™ëÇçµó¹ëíuø‘òÅ'‹¥¬$Л£]æö˜€ž·“^x=SÔÇÿÝ) ÁóÖÃK4½‡éN3ƒ(tÀÃÊä°YÍ·R‚§ìÕꥧD³’!ÕK…e‘<Ø=Å<>X¢5´´»´yJ…V·W¨QÝQ„Ú^oÁ­ 4ÔJq¤"h}ŠZèU¸<Ô‚(®êòu WÛ*é¸ß„øs­„ÇGˆ(t¾Éã©6Úöa>+PøP§ Äœ½YuvԼɎ¬ÒÑĘðŸtlGϳbÕ¤æ¼IÍî}}Z/¬Ã}=~½(Ó™v‡™õS}»—e;¬è*‹é6Ðél‡F†˜º; *çD|‘WÞÎÙO®xF€tx‰‚¢‰° Š • #lu—V”³u}G‡"ª½Z£WUá^­ÒQ’ÊÜS-=}n5\»Ç¥Ó$-ûôt{œŒL9&+FÛõ7X°Y.ÝCúíùï#(Àר§Ô"èv5(‚ïoP€¯D‹¢jX¿$ ®•/ ‹xt°"D²ÖÓžìo9_ø[Î^¼ØQÌ×W? ÿ”ôx›l\M©Â¼¨\®Ú¬³yS]Ü칎ÐR¼Ž@ùm›»fÿ¸cÔäÝȱLË2ígÈó$²ogº·ó0Dô²ÂëäžNevƒp”ÏH3ß}Ž€GEäQÒÀ2M·ðáü׋ë‹w—ŽÖ×Ówþþô‹öWe†â¬¹Z7«ŠîSr®¶×Pozí?p¨eFCÿè¬A¡Ño#¾VÛp?øß;öŠ“Ú`B|{'#4(æÓX i endstream endobj 2599 0 obj << /Length 1379 /Filter /FlateDecode >> stream xÚåXÝOÛHÏ_áǤ—ýô®Q{GC›ž( 'Jr‰C-Å6uñ×߬w7¶ƒ†ãÔ‡ ûáñÌofçcÇ?<â]ÃzþD(‘ÀRIOq0÷òÈ[z_z±÷q;þ:íœpâ‚B!¨7]z’z’a$à¥éÂûÚ—ˆ(:ð ¡¢ŸÙý&"øLŠþx’mòydÖ'ñ*:øãŠ-C tdðmúùà˜ŒB- {>£HðÐHŸNG'ÅúGªúÇ£CýÒÌXÕ¹$©ô| œH`8­7åÙ¦ˆS&,îå*ÑxWÉìn˜Ãbhw,²×yú-Lǧç—Óƒ³Ë)  ¯Pýó”ý£‹£ßG|Ò -U(`å, gÉ=4¬ãd“˜Å,½Þ¬f¹}’%QZ¸GZ¡8Æi]G¹SFÛ•°Ê®ZÛûy-—ñ<Nk³“-­¡¢ÙÊÌÖ7ߣ<ž»å÷Yždi<7«èîf–®ã,-ÅqŒ´r ™™æ§§Îòo‰ùæ Õƒû•Lü:k—ûîÀçYr³Šî^ ;xÏÐòì„×µý@Õ<Èêóa49¾ŸOÇg§‡æ%xÒŒ*Åq !nõ¿(×ÓÜAÜž”ÞXnÒy¡õ!ý¡áÊY+¡1wã †† O¢Pâ’„£R0’RZ—„ˆ§ý¤ %LÈí¢ScØE´0¨b€“šiåÉÚ ÖÇ¥·z^?+½tge•K ™y83›î¬K·!L %TókLc5`Œ×`ŸÁ8ä'Ó³‹?_ÞoÃõ³ÐUÝÝä±m(Ƭj¬>ÿöÁ¹P3 `8qò7 ª*1ÚÌ?Úl—}Áª.›¹.ûv9ϳõúé&Ûvè±ÅÞb[,.Ì“‚ aˆórH jVÔ¬˜Y±Ní·…~9M^Œv³Ž\ÿ¼Hfqúó{~c£Fw Yf§7;M6Ðò¦>XÚQE«E£ýwMö*õ6¦yRè¯é¬HЬ²F£½ûq <¤8ôGØ‹ØõÕû‘¤×{åÖÕ§ ±ëhž¥‹Ÿ¢' ¯d€š`„†`ˆ§®jëïÿ^ïýâŸT¶ EÛZ,ì”,êŠmalKáÍ— Ýþm× ¨ endstream endobj 2603 0 obj << /Length 2065 /Filter /FlateDecode >> stream xÚÕYYwÓ8~ï¯0oÎi#´Zv ´L™…6Ìr€7qZÏ$NñRÚ?W’7¥rš9ÃáÛòÍÝ—OòWxð÷ÚË< ÿD$‘À2”^ÈÂ<¹—'ÞÜû°ƒ{¯ÛëËÉÎÓ#I=‚Q„#âMæ€Wª¢TøGÉy^Åù­y¢Ks§ñæ—W!;‡“¯;D7o¢°ˆ"$dàM—;Ÿ¾`oëo<èG ó7Mµô8Sù°ðÎv>˜.ΉÊËHZwq!1x­îâ‘CÑ^œƒ­ÄOŠÚíî¥ÑèlUåÓÄ<¥‹d”ÅØÓ†Í#ÜÀv/ŒhÓB‘Çï&‡§G£ù/Tÿ:8ÜΩI*mŸÕyÛÑ„6 VFi½Ü[,㛽›½ÙŸ‹N±[qï3mÕ{ÿqòôäã.` ý÷#)ý§/Þ‚âgÿ<À¥”€ãö¶«|¦Zº¾›+,¤×qytéf{iV&IÞ¡ÜÙï¢ÊLC_3†çtY-¥¼Ô^2÷ó*›–é*{ˆÀÛ3¹Õ]œ_TË$+-fêõ' äÐ5¼â }§Ø´£ö™{ˆ†¼¥pŽ=¸à1àUf00ÍE6—gfqá˜èÔ â>˜UÝÆ¡¨L……ŸD†s_wúUîtpbÍï62‰ zñ¦Â)ÛÂ]ÄLl¾5B5W(®UVÃÙs• ·æmž\iüªÇóâÖTEš]4|êåÉ"VuU¸L€ˆ¤$A F­now‡8%4ò‹`&“õIÎÁyÍ$WS[§S˜¯%\ÍŒFHœ7Bµac„Õ®&d[°Üª€å£°)ƒçÅÞIÄúÝeÍ¡ N²?ÉÃî¬Yõ½iœ ^dä}¹­+Ù]9í{»û퇌c.ãìv騆— Ô*ƒ:ù—rÉU™„ª¢@>â”ÿð6võâHzHÉ®@èÐ Ç’@a‡VvA¥>®55Z6o¨5èì’ÐÅ&¹Æ 3p–ìW aý­ë{êl ¬ÖR1JÅN–•®€8: ·ñ°á¿*H×vÜfãÐ1“x“ºd»„½§Ås7ž×Ã7¦R~rI€–Ðob z“3$7WqVh4­šV$-(h€·ZœÄn±wxTEâŒ0¾9W»s V9²A ´e0à¢Þ†Â®M"0d÷¨ÿõ&`]o,ΖçaX¬©¦A UU&ˆµÙ±F°“yÆèÿz€ö±ˆ]j*U%ìÎ)2·S¸:HÒç…šîw—ÛÖç Zsí·Ô9k°5á9v[ ¨@%4z¡î(QÛ R·GH'p÷~¨0 n8>qL(l¨ïm’UHØé;[׊¹fÖOÖ^RðÁÖµL›a“§Í Úõ1+„Æ™½ÄO›hÍD¥Ã:ٺˤhúd0€Ð0ÔyÕ}¤ í% lÏ8"+†M³¶¼Û$§F)C¼XÀŽx´†Ovªa@ûäÆ9kU?\ƒ¹ÇÖºí¾Ý[ô»j¤kÖÝÁÌ ™8{6І°¡í™ãÖLÀöŠ F’¸žP³û&¢ý>4Mf•úRÅHà7ïô‘Lµ4'Yzï /‹2>׃ÔI‹^Œ§Ó*‡ºY.Wf5Kâܬ,ãéˆJÿF°>Vo¯òdšÖ³H@ )Â"ÜX½c›Ï˜òûÏ ®ÕÎ@!çìsŒ–Ì>]º¤«]>ަ@€Ü矆'‡«€¨ŠÇýÐ!:ÞÆùô²ýÊÁœ_9Ö…ß®fé> stream xÚÍX[sÛ¶~÷¯`ߨ©…àJîÉCê8­Ói“ÚjgÎiû@K´ÍV——Ø~éoï.Š"9J'íéx<"H`w±×o÷÷„%7ðÿU²N(ü)«‰¢ÚèÄHE¨ÌŒLª"¹N¾?¢°‘&_m¿œ={%Y±JñdvhžhA‰‚C³EòSª 3j2eŒ«´¾šLK‹º.–ð¤Uú3UôrÓVó¯_•Ëâd2U”úÍÜo&×–ÂV6ùeöúÙ+`Á(±Ô2dH“)·Djæù7;»x51"}1á&==;ÁCïIb›]*Šh®“)3$Ë´§T·WÕ¦mÊ5ȦœôNy¹ÊŽŽ]öBet—Üt—žé${ûÃìÙ›fðWS&};Ñ:}qñâÛ3ùò0A9PÙPRÇËxâ`]®Ú•_lªEQ…Çkÿûe0>_·ëySnÖ~…·+×Çåº)nŠª»*™ ¢”çÌ8nU‘ZyuÓ®Šu3 …ŸÇ„¤õ”~…ƒLé­àyUåCY«¢i«u±ð«wù²-êž>¨c@é *Yíó•iL{/Ï.O/ÎßÎÎß|wâ15v0M¨ "ŸnVwmƒ2H¦Òæ¶À‡,­ïn‹ªœ£&ð½Ó0Ü- ëNËá^O…ãx&«ºñ‹ßÊõâØ‹"ÅÐøŠp.@$¯=¿‡«D«©Û"‰´.H´î¼#v)Ah¦ß„ú‹q”„Ë-¿‡¥Œp!»¨øc¸„ÈÒëMåoœ£±‰±Ð–¡žä̶äëET9œ0jºMÑ[ƒš,ïvJ2!£¹ ŒÞëˆym¸êËëÇ•«›¦œo5µòÁÀÎú‚Cn`bX¨œÕcš•jŽ®¯‰ÑÈ?Ô‡¢_®ùŽJ£¥P?˸ËÚ~ƒûyvÚ»s½Q:†Ê¦­J$V8ÈßOäcÉ¡ ša>C ¦9Ù«+ZRÀw¬þø’‚zû쳨RÀÜN)p&Ši§\’”>•ØÎ™f·.™¸«6ÀʤóbÑV…ç¿ÉÔå@tí.ýǺɯ–S >s/ó9€‹¼ ç›MwZ@„Æyå?¬ò9’¼u–ç^ÌË”È}IC¨|v\ÇedÇ׸܃2þ…]Š’hã )'j êKò¦.Î~<¿„¶ÁKýõùåìÍÅÿBü÷™¦kt^çë6¯B/Ä)}Ïóú›—ûú©o7‹òºìh Æû*tXë½–ï­ŽýâͼÙ\u}#ð—ñ?_ç¼ëø£S”˲y 4_´7mÝlIfQ’ÃØ3M‰ …¥°¦K1ÆH㙄€ÈeÝŒgY7“XË&ÿð4Âmû¿Ì!ºöÖxØú~ÏîeÃ-uóxW?ü;¦N˜ÁX¢^yU®o‚wn?÷ï:ï„ÇkÈ›Áîˆ[¸Å.®.ÂÇí|!•y—ÂÎÜ0kÝúÄòómÞõçÃi0td2…W6d¾ÿE3©€b‹î‘´úG,q!åR) Û%g–Å«Ïv°Õ~ÐÁÿèØ]{Pœí÷<÷=d”tÞ¶Ç™{j°ÌTÀšÂ„èj0ÚŠe)šJ`Ôwh#÷R§÷墹ކ¬v'0¼1„v°ÙÇ8]¥.÷‹n…ÃÁcŸepµÊQŽG¿¸rè y7Q…àž¥«ë‹nO¿¿­]Ø8uáÒ©òu=õ`—Ñ ZØEL¼OÄ…ê½Ö”)cþ‡c{üm„† ðÚ¬ÜÇÝI›ÁTåon†ïô§œí‹>—æxuÿ±àë¯ø<ª/fÁÏùø–#n)Ày e;s‰'@¸—ö©¡ˆ´f Êú5|Ç”8%„ëSôÐ($NÛª “Ìø–«»e鯛:mŠøVŰn&œ0gÆacBíeR vBþ«¨ endstream endobj 2611 0 obj << /Length 1248 /Filter /FlateDecode >> stream xÚÍX[OãF~ϯ˜GGÅÃÜgŒÔ B» K²•*vU¹É,%N°.íC{Ïx&N & nz;Ιs¾sûÎ1ˆ¢;ø=G9"ð#%ÑF##$&B ‹¦èC€ AçÏ®ßz‡gT"JpBŠFSd$æœ#Í – `4A·ÁýÏ£Ëæº%!Ñyº*Ë,ÍÛßS‰ GiçÑw¶ºŸÚ²´³øºÏL”>V‹¼s.¢E1éÓÈöcî h·é °¯7ÀvàÎú†G¶˜gñiV¤ãD§†áÃ*-lü¥†çþüÖgÚár²ùr5+íNµ²Sí‹ÂæN]õGÈ œâuNcj0yÚ`©X¬ª,·¥“<<f»ÅœpÐ^)«{[¥^®]3\`®¹ƒNUX)ÝhšØ™×ÔŒz=Z×/EŒ$˜ŽWXÐç½ÛÏMàËKD0O úR‹ÎÇ‚+¸›¡aã¶AF6¬VŘ7;_v§ )ö^Iœ€ü^À« fZè§“NôÐé ]cKóI~F1„ã5¸ X›ý8À…“mʇ×ýˆfÛ"13+x3†© |3øébxqõÞ—ñ÷ÃÑÕÍÏG­–X_ŸÅÃ`úzu'…M+;éÇ’ÉèxYd3Ëáþî‘äò‡S¸ÐçÁtRÿj±+n‚³'Q£.‰”ÌárJ„Á‰H<&©Ñ@T¬ßÙªœ¤·˜ke¸Xcë?Ÿe3{Ô¯ À§O²Fú4žÀ#, V.Þ75Ÿ;Þ8¼-ˆk¦Û1,W¿:ñ[cvhËê÷¥=p叨S¤•èmkp×G‡WGpW¥‰®ûZGÇ7Çï{ø7¾f3À±hÑ‘‡[ÎmZdùÿä¿_'>˲¼²w¶_Ó1ÇR6]žùúÊñ½µl¶¬27”Ö& rãû¦IU[!L*gì¥4Æ^†'7×#è‹£®ns©×À&ô­VE^úJý|lasÏSú÷¿ÜãrìªÆûæ¾Mƒº²ªeºè˜R¹ÅG.r]sŬeVË€aá@hüo<-Xž-ò»n"iV[öD"÷K$ûâ. Cò«x„$¡64b¼DþT¬§õ1%wr¿À„Ë]Ö©„RÈ^oã­Ž¹j4d?ÐXBëÉÕ†¶‹+cF“úÈ?D™P-3S¨ëcºÊÇfðaùe:qRÿ-sÌ-–sø»´¸[Ím^µX38ø¯0XÃP±½{bZ.‹…K×c6O7ôæ)eëps„G¾$ëÛ&+Žú©f˜(Sóa¿ù3po¹¯Qä°Ñ¡v>ªºƒÍ^5‹œ ^—:تD³h?v©}‹Ë-5PTL›èÛ.m6V£†¥ÛË[/›§Æ‰&èz¨q€lLnÉ)x_Ô-hOúXCAm)@˜è§mìZ¬icXž®—m'׺¤¦Ô›9g‹¾ér–q¼y—yÁQ~RÉ^õSíLË$̘–ªuÀ2¼Qå³¹%Ǻ€C’'¼bñÐGݽ$'aˇj…šTÿÏÙ–p¬Á»7޶ÿ¦p`ê  aS!Zžñ¿ñš endstream endobj 2615 0 obj << /Length 1819 /Filter /FlateDecode >> stream xÚÕYkoÜ6ýî_¡ý¦ÁZ ßY MœÄ)š¸ö´ØÝ¦X¨3²­`^–fçËþö=93Ò”vœÂ]ì"HDÈËÃû:÷27Ë®ð÷u¶È(þ(gˆ¢ÆšÌJE¨ÔVfM•]f?QL¤ÙëÝóÛñÑ“W’eŒ§ÏÆ—™á™”(,O³ŸsC˜u£‚1®òvZÍÖåè—ñÛ£“ñÑÍëöÃrň`Ý:ƒu“ùÑÏ¿ÐlŠoo3J„³Ù§næ<“„ …Ñ,»8ú!µ=SŠ©†æ«Q!ŒÊ?PE/–›fR…÷Wõ¬z:*¥wBãNéÜ£`ãÎ%ä!6ré(1¿ù“WУÄQÇü’‚sÝ­)°†;Öœ¾Ÿœ¿Y‘?q›¿8yÚ?´ö·}aŠn²‚9¢ ’šªœy­Ø@¡`¤ËÍb²®—‹ðôò¯ùÊÏZßîj:Ú®·0Ï~?yÿã(\ÙüldLþüüù÷'8ÀÅÃPsK´ÐCØÜÓðX6Óª C²^׋uuU5[°[0A”taùí`¹×A•ÍÕf^-ÖYQEw˜'îåÉÅ‹óÓ³ñéûwOÃ"¦ú‹†B]s^­7Í¢…‚¤Ê××U´óåÒóåú:üP®V#–7Ë7ùm=/ƒ‰º5Kÿ”ûµ/릜„aðên¸·«[^Æg§»¥}”øH4õþÜ¡|—: tj˜ÙN¹ªóÞXÅ~õ/ŸÃøûj}]t–€8"8ä²jÛ FBäåbêÎåíz¹8NyœC@±ÝüìúsKF…Ô4?)–W¿Å·oãávÓ–pƶk%MŽŸÞÎ9à„f: óÞÁœuÞ5ŽÃѪ2¼S(Çú§t[ þæk¢>PÈM€P„k¾Åà·L‰“„Ëݤ۔M¸P=1unlþ,ÌåH—Ä ¨,ó¦õŽÝ·½ˆ,î ÑY¡›÷÷„8F¨O \Ã£Ž³xSì¹3å³´9,1H œ©Íïô!õ!ö§¥Iy–H»S Ûø½j“ dp×ÀÚ.E¦Ì®Ý!CHhqË.ob`É,¸`| °!|D^'ª›ñ™À(Èu›4ºB ½Jq &ÒøÂÁQÜsBM4»÷€[Qý~ "¤iC,` úˆõ&á*ŽPm‘=:ÜÝ,ž8<\¤IïU ðn¾s_t‰¯Œ®/i!Ûd”Z³•‡Ž;8Ê«àp(Œ"Љ~áh$ßÂÀ ñüߤކ\æå…úC🮫¦J’CÎÜ©âM2¢(b¤3_t¸éè¤Ìf½Yu°'¹ÄÆÜõãác:•²=WŽbÕà…¾©šy½®Bb_ùܘ/gŸËy]Î<€ÁÆ×[=ÅÛuÙ†eài°NÑ,W{WÍ:°`"G^ü³\ÄBп„°@p!XB|…ß}9êŸÓꪩª0Næ-¦/œß_–Â}õó_±¥6šB8‡z7Ÿ¡âDhkÔÍèMX£×š”mR£ŒZð“½kI˜Û)ãö´.§Qî²iª6¦—Å4ªÕ{¨‹…ÏzX¿.7m[CƒÈA=AU6õâ ¸ÑÇ”ä? ßtzTÓMS…ßÂ7ÖÇvèjšzRÎfŸÃíºüu'võv7˜L6M¹Ž?û®¢[=Ã/s4Øäº^T©¦jÕT“ºÝ%ÆËe²­Ð¼„ïR% ÌçlÏ¡¸Ljií 8J’ý™Õ¨yWr$ËÐpützæ,æþÓ‹ñûóü^4æÜh×Õ4ôŒÏWM›IN©Ø7’o¿{¹ýaqÀh*ˆ†Oßw· ø}7 ^Þu{éâèÃ.]ü:iqé2ÀÐÞüñK‹þ EÍc`ã‡ÒàÛ.]h·æ±/]ô×]º´7~Öî\ÔŸ}åò?zgK®ìjo6eSŸº{ÿO¸ˆ5ÙfÖVñ†aå&>õîQ¼œå¶’‹ó¶÷(nïQð¦WL–*~ÏÚcñ—<Ž8ö¸«ûvã˘H±öaë’¿x(Ãþ{c¨Ž¶Í¢5Õ‚è]?&ÕàdØü?ßÑÚ„ endstream endobj 2620 0 obj << /Length 1590 /Filter /FlateDecode >> stream xÚÕ˜ÝsÓ8ÀßûWøÑ™ÁBß’aî¡ôZZf Gnîx0‰Ò˜Kìb;-ð×ßÊ’S;Õ¥ëÍÀt:–íõj¿´ûk?E$º„ßçQaø©B+­"ÍÂ\jU&šG¯0âèùæúlrðø„“ˆ” A£Éµw<®›j=mÖ•q/!:MYÕlIœ#ƒÀ:&âfaœ|›Hsn*÷ESeE=/«•{?-G°ulÞa"§¹)FpÓí\Όɦ6« ÷ !q¹ºj¿+“P «GÇs•³¾«”ƒœ€/ZÉ¡hh¤ï$Z#Ø& _³&/ ¯xwÍÈuŸ­BŠaÉÅfo{BŠ8¢ðÀ U!=©zjÈ£§„#-4d®š9á'HE¤Pªp+‰õ A’ÉQáˆi°óVj/ûOCªR¤IÚ·ßæRÇ¿xmØA6 Ygºôþå ='$Â’´¾*N:Å„†â¢gÔÚúÓ1 èH* ®,œ ©‚Ý åIO ªœ¤¼Kÿ ÎD"IÉÿèý %ì固5Ãa ¨´‹Ü·Ã~Àh[dìS=(3IÈ­-˜•0±íѶ±b+âOCŽC=Ùý$,„ÓWD͆K⺗ؖ_šÚo4ìÏ‘MèÆ'‡G/Ÿ·ýxrð逴£&Ÿ‚/¸ŠÓ1¦«ƒ·ïq4ƒ—ЕKutÓŠ®"e'aµŒÆ¯ýèìH”Í <òÝðÈïƒÇ‡dG¾›)©…RÚcGÚ±#¥l„Б"¡dŸ/NÏÿã$Eišö v›Ür rÝÁq0P{<ö9ŽºÆ`mj#Ò¥z«¦`,©ïF:PÝ"Ý ]ëG:ÚG:àFØ.¤K{Hk×ÌÒÝHD*Ø·#¤,>›;õ–»Ú…)Lué7¿É‹Yi¹q÷Ö7{­Mãkhm{1øOâË-“¯GB€ïyö!\n”ÙÁ³IØ ÷þÈ…’ÃÓTmErÁþ—…E.»j¥„vY7®øl7½ÉÛjÈ wëKÿºõÚ~f³×.`¢Î¼ÒÒ]§å ÆŸévò úEsw4¤ƒçV_ Ïvµ ž‡à·›žé>ô̆žS0 ÙÏÏ]yü8ô ATÐôö„çÁ­·Ž†rI2$»Z!\B›ÿ+ó‰ø endstream endobj 2624 0 obj << /Length 1487 /Filter /FlateDecode >> stream xÚ½XÛnÛ8}÷WèmeÀfyÉ}ȶI7-6IwE[`U™‰…Ú’*ɽ}ýEI–ºëè"HDÊÙùq>$¸‡ßçA`øZ"¥’âa)”&¸ ^M0âàyÿü}1ytÎI@ÒBÐ`qHH†‘€C‹eð&”ˆh6BEXåe.¿LçLŠð-ø6ß–‰qûótmN¦sq'‡î4)2}·xñèŒ4ÖÄšÁÁœQ$¸vV..g7çSÅÂÓ)UáÓ³{è^«†Z’Ts šHä4UÛ÷e¾­Ó `‰f‹6›Å3·l!Ex¨lîÑvqyýzñèêõpM¡Âë©”áéÍéŸg€øö8˜T¡ˆE­fá4gàSn;q0³íæ½)Ý:¿sO³6“Õ•Û¥™{ÆeuK{©4›¥YmîMÙÝËú–°oã±¥ÒÄëCšìg§¬®Cúš °‡Z……)7Û:®Ó<ë.Í—^ˆÆâX÷~ZÌG®jƒðììöéÍÅõââêòÄ'Žs‰J„µrâç`|Æ©ë•q‹b "!Âc[OIØâµ:¼âq܈­°…w÷˜§©¨“ù¼J›Á+§Úfß>B6ÐW¯qFŪSûLÃ’ãÞ6d(­sg&®“-ÓìÞmóriJ4KFÂ˼‰ëœa…¸Ò.¼m^6õb1ÆšLdŒ;ìö…C¬üˆu„(¡ß¬‹x·®ÌúÎ)N+g© Ô]^nÌðr.Âו©œX „‡+j k}ëUºAÞ¤"X !mVÁ·íæì¯‹[H)§á‹ÛÅÕÍß?QÏm’>…°ÖféÒþ*©ó¾œ)ÆtW /^>;TXY²Þ.;u¾6eœ%m3E5s«Ó¢L×½êÈ«zr¶˜|œ†ˆíé\DˆA§O6“7ïp°„÷`1(šÏÔ&àÌÆnÜN^ N#¤©ÞX%ù2ë“ýc/þ_ áÐîÀT!~9SXLŸÚ&5«‹£xBü2žˆv<€¾Ç¥ù¸MË.oŠ<í9ã8‚¨‹Q?·‡ Îê¸Í·b•6'›M’C#I3HõjÜá;ê ³hðâÇ|‹÷º„±_n‹‚a9ŽV¦v{pkPl¨GAûÙ5¨KoGåˆK݉¼m¬­­a‹'Ö#vóÉþ±±¯\«‡Å6KëY±2eû63q¹þÚ-êt¯a  í.R*\tǽæa×4o‚’zÊÆLšX‚±]ÍÄ箑T=µ¼Å”6–C®EìYäõM„¤d»S6'¬•Ä…cŽ*ÚV}o2hdMo´ï·UO/}77_Šuš¤m7ÿç>_/Mæ6•I,Sÿ总‹¯ãoÒ–Ó(‡^¯7ld©$Ò·MPë@¸–t‚|÷VÈîwBO,GYöN’¼j!Œp—Û )u0õ©ŒŠa ÙV çC1‰Ô.)AöYuË=«Þð‹‘Å>‹0pùÐ"¥÷а)GT‹ø1÷0¨\ ^¦PøŒé}•' DSÐÈÞNL\­Eêó„@ö¾ÝÇŸ#"¤ˆ9ã-&À¨L…߸X¾çbæÓ<'T#àÆfæ`’wÒ]eò0Bâ§³ðP‰`)Ñ—øÄ˜ø²ª•ôõ±9"=ÐÕ:ÑÞ÷±Oë&[àçMd7<ÛéÑ£°àâúo^À ©lë%êuL3=æ'™W™”ýíãléÓé8˜{G—?@1¶o÷}ÈH3ôñ)ŠP„]A`oï°UJé~˜»¸j„)ïÈîAñR#=p ÑFÅï/ÔœãâÝûšÔé‚ ßGMaóéÀÐñFþÚÇsµ:ndß%ÌŒËn8‚ñØmæÿ ÕµFGNê£åìy\ꦿE EÝøL¸y Œÿ  [Ø endstream endobj 2628 0 obj << /Length 1588 /Filter /FlateDecode >> stream xÚíXKoÛ8¾ûWè(£6Ë7)=tÓ¤›.¶iwE·E–ŽìÊrÿ~‡"%K.;E[ìa¥áÌ7Í|â×€Wðÿ&È "RH`¥U ¹@˜K̓" æÁ‡A¼i~›žŸp‚"!h0ŠŠa$`Ót| "‘Ž ¡"\¯®“b63%°ÀËM‘¤v}’-ÒÉp,0vbha"ÃÏÓ·ÏO@-Á(Â1Fp0f J¬ÓwÓãó“¡fá«!ÕáÑñÄlú-@Õm-)ª‚1%ˆÒÈjZo.‹å¦Ìr@%Äëí¨•«- ‰ÛªÆ-]¬õþãôùÙÇ)ü€‹B‡ï‡J…¯Î_ýy p/ÃH5’LvAÞB8Q8±³|µ)íåmš”ËÂ^ÐY>*Òxa.™^Ã7$ a]…‹4¿*¯íõrî4o•B|j­eÜÁ+WVv²ÝR^§e<²ëÕuVí¬ÉrY̲<.ӵצmØ»e0öEçõñÅÑùéûééÙ»‰ÝDÄNíP…päÄÏÓrSä`1NsÁMÞÓ"Kâ…½Ÿ,‡`+la5w >k³¶"5Xq‘…m/ ¼R8¥•šj-aͤ •ˆòZ •±f2a Åvyk4Ût[ÝÈhŠ8à*E‘uÝx¬EHSY[{ ø”îw ª\´|ó¨ƒÈÂ'±Îò^UªÊ\ã%„Æ£M ¾ Éd¹îÓK¹¹Ünñ‡X"ÑÑêQÄ! #.ƒ^¡÷i¸:Ðeõ.?¢—2$#õƒ\¦»ÜH>’ ¢‘æúÉ.÷ÔˆëÆ‹‰·#0ˆ2Q.X•ûŽÿuzýÀ¾9¿Ÿ^LÏÎÿ~zÿuýzS™Îl¿:ƒ7ð2u-—bL·mìí¯kGÇÓÁשÆ+1#’KŒ4£Ar3øô3¸}±Hw•ÔMÀ™‰ð"¸|虳f ”l;ge3gÕÛ;gØ/³¬oÌ$j>º-f£ù(™2kë¦ÿ㇭CšwGc¾¹i²]ÆÕ2ËËugèÂô*-ú&ä}Wi|¹N²õ:v«¢ˆ¼#<÷ðZçbÖ™º‹4†Yue³ì&Í×Ù2?¤ó^’1‹Ë½P!…¢Mæ´Éæ2KÚ¥P³ƒt>Ï’,íÄ·MX×ÌÏ Gñ"Ù,ìÔç˜[ŽÀqC  l‰4Í+Q:!SF&¶K矹SûgnÃN^V­Ä<)—ö® µ¹eB†c)Dxš;Í`¿°Oï†TN2$!˜%!,NIx•Yn×<ñ_§`mYüÚ¤š«•¥:Yí¯KèØÍÈ›[*`øG »WžA»“*ú•TæJÐÏ[B3Lž›ˆ(qé³.àëB5óâÞcû­3Ä4m›‡2àD8õYf`¢q»Ç!¥£6Ez&£Òz;˪a;±ÄЭr/9$P™ /q€-m…€õ”¤/…æEc?ñ‘C—%£HD-‡M!ÁËA\—øâç€Z˜X¸¸Æ…Ã7KË´¸Éš¯7‰x]i†á,lçkâÚ_LÒ}è)ÄÈ–‚ÚS $hIõ1š-¼÷—€)¾3Uð²· Ô/ÒcøÒX¶ñ?óšÃmrÜŸtßÿ¼cÒ–PU;R@|x@ÐZÓ'Ç“ó.é“¢Eè1ÞïÙžžðÔB0¤´'¤ š‘ÜÒ§E”öE”QúŸè·1°•Ð õ÷]eÜûu•ÎþÏK+ »Þ™¾—>£æ Qa:r¿uèÍ ®_* TM®´pdèWEfÐ|“'eÅe«Usþ±sRA¢ÈGà dÓ¨½Å—`£ù䥳ï¢"»jêdÈÎç·O%|bÍ|:;y£Hë†%=#=ßñ0…ÛfM á䌇Ó:}<ׄßNvêLvx°ÊÒ$½ËÖîñ¥Ùô`Ç<ÅЍèÎnK…m’³‡\ork¨³YÕÅðÃÍ塼Y}BgÈsµqö%NÆí.eù¬ܨç;—rÄ•øéçï–·éMëÀ€Ã "†”Ìçóù©"¤!é’A·qþ®;Îñ ªw endstream endobj 2632 0 obj << /Length 1050 /Filter /FlateDecode >> stream xÚÍWÛnÛF}×Wì#‰†ë½_ ôÁ±åD j;S ‰ƒBVÝBÑ­û’oÏì.E‰“:‹†!^fΜ™Ù™#}BÝÁÿ ´Dþ¤ÕXm42Bb"”¨th†Þôô¢ù|ž÷N.E”b+%Cù i†4'X‚S>Eï©ÕiF)“ɦúèªqšq-“["Éhu_N\¼¿,æî4Í$!µžYF4ý¿:¹XJ°%–ú eœa)lŒ1¸ÊûÃËÔðä,e&9ïŸz§#¶@Õì£H¬™F$ª"RéÆsÏ̄șÒ³ûå¤*VËx¹y“MõÏÚ={ØQTd<ë@\ݼÍO®ßæðYK“ܤZ'góßúÁèq´™ÁŠ«YFä@&2<­‰.ܸ,–wñn÷ÚS/–ÏŠeåî\¹eï+Jù®¢iÆÔÌ—%^Ë»û…[V-°ºj­ÊZtëB\ôGçÃÁM>¸¾:NH»¿LcbM4ºê¾\nÒLH›@âÅK7öÝþ«ØÓúѦrëx]Ki2ƒ—TpúçŸOVeé6`ž«å4( ®Zèê·ŠFÕÇøf¼^—+ð¡XŒ«pß±£E9œódêæáðsÑbç‘hÊ€¨&Ø€«‡àªž ÏáUFCù2†µ¬ËrKóˆ|¿‚ì˜6u;;Ь0ãrkÏ;Ó&ùµ†kÙRƒýB "РHc«I4 0œ˜JÙ \vf™‡1 ädT“ ¡™hÌ5EË¢é´êJÇï ͰÑv¯p‡pì&OqÏî–PÕ…(1St¯@…˜ ¶5ê$ÆW«Ìÿ†Ò9“¶$Ø,:ZŽœ‹g«YR»µ/Ô5ylâ1ìâٗ٪ÜÙj\Ì7¸s°)!Ø’¤n÷°ÿû`cý_Fùõðßkç°Z*7Ûæl]õb„ðÝ zõúb[Ø^?ï}êÑ dÔ‹‘pÈ ÐdÑ{ÿ )<‡!ÅvËßÁj÷¥Ÿ£QïÍWMÀ8Q.wŠfÚŠv˜J8_DGŽßŠŽIïƧRaÃm›ÄlúH=æÆ¬'ð$Ô˜XÀ8 ö-é†ö²àóÿ*øŸ³©·zœ|ËÿL¾U#·òçS[?ÁA½dAsDâÊE‘5’&º418­œ¤Ú¿‹R}$†p·ì}ƒ‰ŽëŽÙ#)”ß'…ú‡¥q‰)”d¨Ö±h˜ï̈q…•:) ÙŽ€ijÛ3ÕæRC1…ÅVC=Æ’_:³óÊÜlnס¶ðÞ ¯Èl§´Ú­‚·«ÔŒ@l ÚªÃ#»OøþpÐlmžVÔSé3öh]hýâ9h˜†<©AŠcÕtLØVný T‹%è endstream endobj 2636 0 obj << /Length 1852 /Filter /FlateDecode >> stream xÚµY[SÛF~çW¨oòmö~¡ÉI @'„€Ói'Ét[`u|C¶xéoïÙ]É–ÄÚ˜ÆL&£•µ—ï\÷;‡ÛˆD7ðÿ·haø'ŒB+­"ÍÂ\jYt}ÜÃ0G¿-Ÿoº{/9‰AFu¯#E#Å0°¨Û>Ç c: !Tijù ›§¯Ý³½£îÞíqçÁrA‘ÆÜ-T°°7ÚûüG}øxaÄŒŽ~¸©£ˆ#ÌŒ†ÑÕÞÇÐùDH¤™i‚M; S"þ‚¾š,Š^æßóavÐIÆk±QÐ×z'Ø&HPÖÆ†® dÄþòH02Ø»$¡Ô¸5 <¹Q~Íéy÷èò¸£Y|Ø¡:~{tà€·Íçëúf)ª¢„h¤0ñ;Y:´ZÑ@"ÀJ׋qožOÆþÍëåïÑÔÎïß­€JÜZÛ¼yñ©ûòç.<@ÝBÇ¥âÃËÃ÷Gÿj;ÌT#Édt íÀ?&E?+üÐbÌÇûùxžÝdEöMC‚¿ü®±ÜjÀÒâf1ÊÆóÆ^¥‚Ö§ÎïýîèêíåéE÷ôÃù_BD} @¡ aSB¹Ìæ‹b<ë$e1hÚf£IöŽ'óÿ!N‹‰µô]>J½mÜ‚IkáI–ÚYßóYÞ¯öšgS?ZÙÕ¾M®Ë§ÓžCÊY)Äâ ; ç!a¤Y͸ɿ۳³rÿoöåÞ©?aü5ð>›®³Ù,å3ÆâtÜ·N Ó»ùd¼ò3‡rÊ«S/÷3dOÄñeG8û^¾½)ejLjD ­ÖrŠHQÍÙ÷è˜$ÒónAŒ6Ö'ö½x” ©8ˆ¹Ä­ûׂx‡ÝŠ”ÐþÃŒ©Ý#¤r8ZQ]}B'eKá}ÌR¥ã×þQz)ç’HJµZƒÃg»a5ëÊO¡"Rȸ¸³GKm¬Hö±Þ)4ø„‰j³ÖIËåôQaECX¯oÁ‘’ VbaþëAVdA¹G ³a'Ù(^)~D:Õfm’Žý?S†¤€£uÛ:4ò‘›tnP£QmÖ.w_Të$‚è—L5tË;&pˆ#†¨*Íúg`7‚°½h(C¼²gPP ½4Àk uÐ*ä#Š—ê>øZ}¬b¨í\/UBV·F¾C©ˆ)05ð-Ò¡5JG@ÃÇ¢M:8X¯" rªn‘Ö¼@ý^@᪡°&|Yj™~áìV@óˆ ÕMЕpvWÃ¥“MJÈ Û»@`(Л ‚g“MV[5ü‚™Ï ˜¥A”upズ<4 <¯Çkåqºåqü¡´ÂTèå•I~:DÙÓóçÆHÏbÁ%Þ%x ™X'Y  +`‚’¥`e $BJnÑ`ËD!FJSþZ^¥`^l/St•6gBµU&TÏ™È#{GW€<ºfôV¸3[€’‡Ú…l  ?¢Uc4Á,÷’ IJjš¶Š±ãš­$2à!„’Dz]“1dJz-·äòiz¬]ùÉÀWŒS‡›b)cà$jýc¹ÏI0·ãýŸ6#õHÌ-Qžo‡3`ÓËP n)!K*6$eíb7=ÉŠQ>ÏüËÔóÿáýx2ÊÓ!pZMLÜTl9`gô²þ¢(×T߯–@C!Sä½t8¼·?(ÒoÃrb©72(_ t¼<íõEjqXÞk+ ËzÇYZø_FiÏî?ÈÇ™ÿ4-²Ô¶®°ß¯'E˜ÀÈz¯q;SO ”ÝÎsê*…b®ÌàEA^sSåþË£?N¯ 2óHON¯º.ÿzzê7{ •á<ëûbñpZäeI1f« òì÷w•7cð2%xˆ-F75ì&\!UU Áé[6[ìB£ÈNš- ³ÛŸh¶W í5À,€´°=Òlano¶è]5[žÖj™ÝÚY[5Zª†Èî[-ÏÙ)©PoÛ+Ñ­^ ÃÜ·<ì Õò°?ù–‡­ôkßz“¢èà8 ‰g6êx2îçã›rËIkëÙí"-²ä‡kH¸C\ƒÃœ.†³rø°;h:ùLÊÊÝ!o¾Ë H¥î·~6„hðé³Bì¸NÂ%1Y×YP[vÔ“ë¹Z9*å(äV&Ë6¦®„6@ðJ™_-aV—hÐÔP¤K¨Q “¢ÉÚšrØ|ƒyKŽæ-b•¢q‰89Ö±Š[l¼u ÜËó^‡¯tÏÈÖSÚÄHÈfºÝ„ rU½ðu‘Nóáâm\íÆ£êiEíséÈW–¸òg²;ÿx¬U)¢FîØbMkÕ4Ù‘/Š-M8} ÷ïb™ŠÕ?9[XÞX²½›1 Û–Ì4þ‚ÔŠHeSˆŽ$ƒh(kNâÓÚrþíú" endstream endobj 2640 0 obj << /Length 1906 /Filter /FlateDecode >> stream xÚÍXë“Û4ÿ~…ùæÌ\T=,Ë.ÇR®å`hË%e`(ÜD¹üÈÉvÛã¯gW’;õõŽ L§çÕk_Zíþ67 ®áÿó  (ü“©"’ªDI$ â$ ŒvÁg6Òàùðýz}öèYÄÆH*%Ö»@ñ@ J$Zoƒ_CE8e‹%c\†MWš®Ð‹¥P2|C%]ÕÙøñ³¼ÐKIi¿ìR »Øâ·õwžcFIJS†bh°ä ‰cæ¤\¾X_\=[$"|²àIøôâ1úH_P6s‘Dq,™"±Œ§¦{kê®Í+PKuFm··ÕÍQŸ˜Ž9-gX]¾xõzýèåë5|ÀF™„¯J…O®žüpꮦ#š)â)gÔÄ©÷Ø}`"+óMV¸a™µ&ßèÆêÊ}o–‡:¯Zo—öZ–WçFg’ÕÛÃþÜý¹9´hî]W°œh&fß\¬ž^]¾Z_¾|ñØbòôÞ¡iê¶?9Šõq¶{ …X…MVj7µ©Ñ›6Gì–Ú}³¢p[ý™dì=`v›Wá¾?“µ‰~û·¼«Ó<š˜ш0ž‚Vó›9ë€ä*î·|ü„ )î –‹HD%¸Kyû›¬Í›7”EVS!¼F" ³MÝ5m¾qÓ…nÚ,XˆOc±Œ"^Vn¹†cÆ‘ïÑÐÚl›ó C1ö²7~º;,à"ÃmÖê­ç·{ï11N xpÂÞ;£‰¿oÿàÕ“TQ»1%`6¼-AÕÄW\Ž6-)¬³„ÈØ§Šüw/6:õi*A¸ô쾘ÕN4ê=ÿïk•’8IÇJ½¡”z†c©,&±b¨>»Sx~ò4€ºKà¯ÌîûyF?J˜LàQÌ þcFjDbΆ0d³þâD¥ RLü:á¤K8ð“Ô»ƒÞáµ”‡\ŸL”šŠ”ð~¢ä*ï‰w3%ø+}@6#ð#/ðÞ _ΰá`û°!ŸS¼“°ÿ­Ê¿Ïå ȯ«11I¯7&µeD™Íœ3ÙM€¥<þdr‹ÇAÙ%bIøòŽžu\J%ûÝwGªš|FdMUKI”âkÜ¿¼qÖbö›ÓŽ.íþ˜·–rÑhÙéüZW0Þ-¤WvÚÍ×»Sq|šÂ ‡÷”Ž$ãÒ‘2p‰e;ªm8ì‹•½Îj;Ÿ Á±lȇwGíCüÿ ¨e÷E­8yhSóQnF7xÇͱ”HÀYŸb¹Q&£›sÕ—3§ÊU_U6uéŠ_]¹[TaõܹoÞ6Ž];üjS{?ö&˜(‚“÷ÐÍ) ÞÒîJ™ŒI!CîjÝ̶󄅛ppQÕª¼õ#ýÁé†÷´´r‹ÌcUX½6ù–ÜÕ»@4öüêâ§ËàewêÛËÕúåÕ/ŸÑø¨~ HÞZàþ‡ìÖœRyÄûß}ÿMêÏ.Ög7gÌv~ »·HH¨dq°)Ï~ý[˜‡@ƒ4ïí®¶` *‚ÕÙw´€ÏŽ ï;ÀÛÒìîïÿp×Cº?þ¯w¨ jZ˜¦=œ›]ÙŸÜ<¨ ôòzu±úl…ºÆkRÖÛ2ƒ,ðßõžÞë‰Iói²mÞwžM«ýb¡«k¬›£šO}­çõéË3FçB˜ÀÖ±Ún·Ë«e›ûVvïܽ´#{¸·¡‹-Ê2ûðΜW¦l:¯²¶lëI;{š<ñZ&o3ףyŽÿ^óìKñê¶,5d·“; ¸Ó©òpf}TG[mSæ ÖÇêæ·Û”‡„/¹ñãòŸ£6ºðrº+ÒôÜ®ëWíO VÊÎ4·M›s·Ðx›tu,†n[\È&Ž/%ªÓö±‡ˆ&€)ô~™Ö¹³¶ãrÖÖå ›æÐµÇT äpÓfp ±ñÆùMíj2ÊÛäÞcBg,ÐÞXf°´Ýtù»bÀ‚3¯ .º.¦LÝúg«­ß8º•  €íú™¸Ö#€€Ðl}lâ,ï(ôŠð¥ÞNcÀoÜ2F°˜3Æ&UHÒ9†E$àz”4ÐL”˜Ž%r¦1h´ÕШ<Ÿ‹fè±Õ€ä–Í!Ûh,úªžù^WŽ:u…›†-ÎèlƒÃ½ùhºu£·¾ú#mnƒÖZµï1ÇŸÒI^šø@Ðh&&” \swG¥Ó¢ÍÅ­•ƒ“ §tT¯ Ò™ûiGî2Ä˜Ž¶¸¢A  ç ŸãU<1;söÚ8ù$$‰ÿYHßIÔà I âëˆdòãô4丂¶Àm,ŽõŒy¡ý1þI¹" endstream endobj 2645 0 obj << /Length 1489 /Filter /FlateDecode >> stream xÚÍWKoÛ8¾ûWè(¶JR’)åÖm¬³Ø>bwEÛƒ"S¶=\‰vëß%+Rd ìb$"‡3Ãyq¾É‡;;ø½q*‡ÁOK/d2’N„ Qà4ÊÉœ÷ŒÌ¹é¿¿m&/®îpîÅa(œMæHáHŸy!m¶ÎGWz‚ùÓ9ç"tÛsÙ|bÝ´z³YÞ]O#ß}9‘ûjy…Blƒ£¡–ГB:s{IS{¼oê£Î+0,´vgyƒöV»ÓÌ®­M 6Ô6¨¤íÃz¹þeSŽ­µ¡¬·e’WϼsõæÝ‡Í‹·6ðà†‘ûn*¥ûòîåŸKˆÒ3í‘·ðƒÿL„{EvUÇò^5´®3úÞÌO*ÕuÓÒV×ô½·®€O[Zeµ•Ô{{v õwúÚC’ZzSëDçµñß ë`áœû^Ø@aròj–WZíTŸg>Æ‹ $µÖ‰F%­P¾isw„ìX¥æb³£[ 6f(B¡k×=U¥ó‘(¾^®_Ý­ÞmVoß\‘ ¨l!ÁîˆØ×ç²TºÉ[õ}ßMèCfãªM“"ihO¹[M…tÑm]ñ}Ñ»âMçAºŒùnÅíæùµš6ð¬·K t“T-¤¯ÄTBMŽþŽ 3ælä…R§á˜›œÏÀB_ºIʾÀò¨p$|Ú'ü£šd§ìyîZ*QT’âvOR-ðLg÷xr¦ª« B¶#‚©Dä2¤s )”1ÞY¤9ÝÒZjÊœyàt‰ŒÇBç‡âœW;®½*qôÖôy ܘ³OZE»,Á·D iÝ4ª=Cêj{QW÷jIèâqŸ­"¡äwRá{LØz»[þµZCm’ðï«õæíÝß¿Ü2^A™êîÅß‹3­còò¨nÿxÝ= Ér3ù2á‹8âIpùÜIËÉÇÏÌÙýÖažÏã«á*Àð-œõäý pHt¥`J§ìYˆtÊþS8O£Ñ)CS xŸ‡lJŸ‡J²ü,‰ÿ*uΘHïç àÇY µØù(Évkʉ5‘¨ˆ€p©^­ˆH!…C‘È8†¹¬S ߑޤþ-¨ 3Fã"Á*Ñþ‘\[‰†²fŠ1¢ùψCq[ζŒ[Rdß–yg…½M7·QeÁŠ3Ú[[`°2•2žª«…„ ¨(`mŠbѧ(¬ aZíÛDbGU83…·èJã£ï‚^Ú2—2C­å·ë'\8³ƒM¹ÑO¦\hhÉ#ÍÏöo;íšI> stream xÚÍWYoã6~÷¯Ð£ Ø )Š:ò–Mì4islì(v÷A–i‡¨‡¢¼ëß¡HÅ–£´F‹EàðÎñÍ7Ô«Cœ5ü®ÂÁðÇâ1F¡ù a?ˆ|Grgå|`؈ëÛOóÁÙÔ‚QŒcâÌWÐÅ( RŒHš//î¥ä‰âËá˜y̽Kv¦ãašÞWÌðíÏWÐá·ù-ÈŠ˜›ãSñ£=¼‘å"ã¹|êÅôD .ÍH–*Q¢,ª‘OùBÖ‰Ü_í¯ý™þ})—•’e>j4`(ôÂ#-ìÎOu¦òDþnFIa5k—/¥HÓQ¶Æ &óÁë€4®&Nè9AD‘‡™“æƒ/ß°³„y°Ñ8r¾7»rǧ´™3|¶>&!(fÌÓ>ÖB˜HÍB-o8&®¯v¹Ü~ÅÄ_ÐÐØ8+k™r3žŠŒŸƒ¦lE«·úžM ; (ăPÆ6”U½e­D¡åQz DßT¬·£ýÐÊ p ~€(õAn#ïy6™7~:×1²ÆÄhaˆ @+ÂÖöºâÆïy¹ÌQô]9¶Ñ;@dsìæþñy~öð<‡ a‘û8 C÷âéân2Ÿ<¨’5X? €H0ðô¹Ñ«¨óE ÌreÚëñ–§ª”•ªÒ´ k ØdAµ*íIõbצKÑÊ«6IÊ»˜oÐ y‘¨ _QŒD¡øš¿EÇ÷í•Û•°WX+ 3›j @VJ(ÑÎ[¬Âu‘6j¼%˜(.#}ÞD•jT@¨ÖZ…=HÓ‡ëñìÕdvùtó8¿y¸?ÿ¨!±Ý>Ûå9WRT¼ì±ÀMtÓZ¢',^äZ£g·zÒZ¤Ç­EÞ>‰ÜçfÞfAeT9ÆA!c-Æ›YõéLCD˜×îÓ\Ò' È!ð…éèôHó=Eí¾UkÀrH\Й¸*ÐÍ*ÝG½^§‘úp$EQAO“_ofàt“ï?ÝÌæO¿ýíü蔂Û:û«ZðŽ>}σrEÿ}Ò˜"?d{ú öô9¤@ÿ§pèzoû»DÚõ.nˆ+öHË@À3ÓaDÝ ¸ËÉi.}Oe‡ŒÌŒ :#µÒªÚ@ÊoÓ¸¸‡Oçã÷gÿo\ܘߡ1¤dÍm¡«#j]gå¢å´ýÉ·Ç„]x)ëlù_‹¢Rü†ÆêÒq‡¨õ‚2+> stream xÚÅXÛnÛ8}ÏWèQÆÚ,¯¢”Å>¤¹tÝ¢M»md™NÈ’+ÉéåëwF¤,É« F±ØEð6œ9Μ¡üÅcÞ=ü¿ðrŸŠ4QT‡Ú ¥"T¡ôJãm¼wg©÷âÐ>_ž=»‘ÌcŒDJqo¹ñ4÷´ DÁ¦åÚûèk©žÌãÊœæ›d³ú1™ ­üOTÑE±/cÇ7ifÎ'3EiO”l" ‚lòyùòÙ ¨g”D4bhŒz3Á‰’‘µ5³¼¾»™„¿˜ðп¼>ÇMÿ@ þE4×ÞŒƒ&XMÕ~Uû:Í™Bä ÄkvÕtÃéã.ë`´¯p6¢qþæíûå³Û÷Khà´*ôßN´ö/î.^_êÅiPyH8ÍÊjDà_€æŸ[°?LYØ^RlwEnòÚë"3eœ'îPxœ4Ÿ–&>œ=ÊDçQ<©vºK“¤»²HâÌŽ³¸®Ó¤óR]”Õ˜v*¦»÷e²¬j;û¼L³¬Ø7ú`í\0™Ì$“þò!­œ1§i]äÎÒ 3â»í£º óK³-pù1Íïû—ã,­Q›âxªA#óïMi'1Æ úhͺ“ŽóµíÀ1«~¼^£‰fvW¦Û´Nq‹±S.¸mM„ádç/P`¥]”áêÞšL3»n=óÕCQ‚?ëÑX;(D²q–Âßû|Mžà®€§Ý]˜/ .ì¶?ç‹åíÝ_¿À.Ò.!Hk³¶¡»0»ÚlWÆÅ;§4ìbúå««6†Ï®—g_ÎXÃØ YWª€àâd{öñ3õÖ0''ôk#µõ¤àÐfÞâìÝÔ-y@"uÔ©{—õ©Ü²'·ú¸»=–øýíê—òþv_QAIbêcïl‹†­hÆÑ ðpóÐdk;Ø´³ÐßCRAImìüpw4ÜÄ¹í¬šìq[êvï6¾ÏMVqùHŠ÷usˆi§{j NSšH)AA³s;æ#èJPíD~Aв™ðÍ·Í=Äù½™%EYšÌâ‚UÞBM~„EŠ0©[3Ï­ ‡‰4mDBˆf 'm’®‘Û#€C¢äB'æ0·þpعo2ðRy„n \$ÁôÛµ‘üŒp-Z‘O”3,”–nƒGD°ç6|9/P@ šó†.>/ÇŽ':©†õ¼™zŠô-›øCžÆÐ€9‹UC¾­–ÅÖ®×PfŒíW»4·ëk“Wiíê.mcpé·éø‘9‘\uNÜ[õŽ­HÐֺܲ•c¢©rcÁÉšìíIO-®URUdm5<†4cš¦Á ÜGñ‘…'"‹¼´¢cÑ% —¼uJ9¦ R#ÐÛ”‹­?š‹f‰B0…³3RR8ÔÆ=„„…ÁqY‘(mYQ.Ù{…eˆ¥U¥Ð/.ÁgAÞÁçà€æøÀâøÀ‡TÉÇcZAi ÿ¾ßž@Ã;!ŒÜ¼$!¤ÐÉW™Ü“þm̰íö²AŒ Єì Q6Jã}Š~šÅå).?uiÐwéSn…® ²+#º ç`2[„™{}}0¥Ó(€bUt7ÇÎR:ðxfâÁIÕåSè…8™©N •vÀ áRmëQÓ)j|(c·O«ðŒÂoøóühGW®Wll‹ÏlñáQ!2щ³>L á8[ç{³T5xYTð6Ï,¿Š«©%×~Ùá nl:mi°fA$±_͇Ô¸n«È÷ žÇ®êlÚ*ã´ì²¿…þßüÅþ~_Շ׻}½’Ìó$Û¯[Ý#G›´yåa·½¡;Ái_ LB9ù#að;ϧ누,ôA‚ö®™’‚ñ¿ZOv endstream endobj 2657 0 obj << /Length 2239 /Filter /FlateDecode >> stream xÚ½YYsÛF~ׯÀ#¸!Æs`X•E‘¼JÊ’"Ñ›ÝÊæ"A Ò (iÿývc @ ul¹¶\öt÷t}Lã[À‚üÿ”…2ÑDRmt`bIh¬LTY0~;¢@HƒOÝõ§Éч󘌑DJLææ”HX4™„špšŒ"Ƹ G‚…éHððï²y—z -ÃSIoWÛjšÙçó|™}E’ÒnÃu¼[Gæ …Ulôçä—ç ˜Q’Є¡4ˆ'2N¬—“³›ó‘áɈ›ðôì#.z¶ØŒés‘DsD81e9m¶wÕj[ç%¨)qOéèS£öËjS¯ÇË"}çéf\.Öãtý˜.‹qöMçãålühiΊö¥Eq_nÏn߯«´‹·§d±ši^¾UèÅåõ—ɇ«/¸€3¤ ¯GZ‡'7'ŸÏÀŽoTˆ¢„jÔ˜ÐÖ ?Zݪt–§K{¿©³µ½[få¢þjïѶy9ÎË:[dUk=t1;£Ý³è8Îð"/¶…}HËÅv™V­=Ь¬ÛŸªìÛ6¯²Ù[¤¹}€Gg´ÛÅý 8Iõª“éxnÖÙ4Ï6ö¡ÜwYõž­’†Òú,Vs{ýôÃ:˜Õ«jóÞ¡v…ã~rý{kÀzú5/öiºÊæóöQÖ›†“dÀFÙ9¡ÓU±^fOøT.þˆ9«j†wËþÂã¸Lë¢^5áÐiù˜Úðè8ÏIÑCZåi¯Ê@Y¾ÈJk…úúÀ®@Ô¡s—à5®v²–@´µÂ,èl@ä{ŒŒQ?ĦSÈÙy †-#H*½œ²-§u'fn6-@[ªtÓ·Ý}ZUé^t d®1Òã=Ç|ô·¾ö“hd(a† “ÃÏg·§7ד‹«Ëv÷0órMhb,ùiºœBàÕˆ~ahXÅün¨ÃâÆ‡#©Â¾‘êqÄ5d|HÕø§g ü5/÷xH´ŽÊYq@•UÅÆÒa¬à«Ô^à- ×#~ͪ|jeÃCZE>'«2Ÿ24T®§uÚ€€Œ¢˜Ç!T–8DÈáMü7†‰Eß0 çØ:w0á³_B­[¢&ƒ4LíeVu>m™G‚ÆŒÛ.ýËÇ\Ê;гР!s¡ùjÇq€ÁHw*¯ý,“NÝ12ŒÁ/`Ó̧! •Ÿ#ÉNÅYf•ÌÊYæÔl ö `>Þéå4<7+>iL“¨O$‹¦++á„Ù®‘j34&üy`5¨ÂÁQĈ^s½@6G  ÒÀI,;ä>µÑÒ´X'‘ñ¦†0³¬Ó*³ï¹U¡´ïïðÁ¦ˆHSˆR{PHÑÒ™| Á³Ô‹€gÕ¥ïqbŒØƒÊ€Kd)"CÌNœ1~À9 LÍÅ.‡ùl°Šß«&áŽLø£ã6”k¶¿ðF('øŸž Ç @ ¢\åøä÷'‘‚á…g¾;ub¢ ¿{VÕ*¨1`-:4r¸5Ä{CöÙ‘) 9G!™! h,™¦© ¢Ä€3 _”Fµáå1ºWaC ;o ¸jŒKfÉîYÃ6·þ‘°/À…WtN< ”2V–4ÞÛäy8¥˜V‰úÝ—@“8‘`¢Æb{ äû ìrç'//¨¦‹ã|Lìí›3ð®”?N—­Ç< äÛÍãQŠ>=d—ú¼9X9o 4ÄuB O£÷ñ°Ñ,¸ôàŽ´ÚëgèEvA‰§ùÿ¼ß19ìéӦЄpý,¡äA®JD¿S9¾‡’~\x˜riм†?(Xp#H¢œYEÜÔƒü2ÜŽ‚~ £8TªXßÎû¹˜½¯V  þz­¯×*ýÝkUãëå:hf'è³fú`;o8ÒRƇ··U÷Ú\BF“]¨~ö7HZ[t›ýôÃÀ!I¿ .ý¸Ö‚õÛâ"±Û›U5ñ ¦94 ~;¹þÝ«9ƒ.Ø@ð¾Z»}š¿µv'DÑäEÕ›¡*ÞÎëðe{°9>tŽ¡I1—Åûß×πϹM怂ó·Í$à΢bgi‡ 0$çÃQœý£Uu—×érãYå óÁÚ¥oÌ6Å‹¡#(‹_(^ $Nh7dĨàê…¬¨hé{cL²"°{¾gû¾u,Þï ÆŽ!ðý¡zÊ´"J©Ál#ŠÛ“7Û{íÏSÎt¯áCq­p^i‡fxl WÛV¡¼œeOο&{góæ°s7+›nûöDޝ0ý4=áû¼Ü#tÆô* ÁÉZ†·™#q5eã+*B@›Á:¯tý8÷ö#±„,`vƒ7Ýû¯åê+<ø³Yæ3õp†ã`¯û 4hÞŸYyXrljÄ;ë'ñ%9aÇ’r×+ÞœýãâöâêÒŽ=þ~q;¹ºù×ÿð¡Âµ§§U–ÖíÄõd]ånÄÊ)»Éï/¿þ|hä{ž?µËgÙfZåkÄÛØ¾¹ t|`ïXž{ÿàfvx¢|“«‡V@Z-¶øAÃ͇7µs $E_Žòª~t69úvÄš ?à1è9UÁ´8úãOÌà=(YÌ UÄý½ n~;ðÓ¿Nv_m¿æ‹2«ÄýëŸýá¾óÉ7}æ{†5ª› ÂþXgY&å`ç¿Rê endstream endobj 2575 0 obj << /Type /ObjStm /N 100 /First 985 /Length 1402 /Filter /FlateDecode >> stream xÚÕ™ÛnÛF†ïõûÔÎaO€‘‹6ð] ÍE[#A*‚¸° }ûþ³r -E1kR¶ÓaHΞþof9\qHì¼ãÔ‘Ž8ˆ# v‡åhFrRªQ\ðd>É5#’ ™íQt‘F&—}ØÀWÈ›Op%ØÙ»RÈ ŒC9™•àPؼŠ#³& ©ö…9)©YxÉ:A”(là‡¶)ØLs†UgXТ¤l.=æ@Œ1Õ¹üP´þ \KæèÑ©ba𳮨ZVôXDIæBöƒU¦ý%šo3µþŠò½KÁh°¢*ÕÊNpÓü  ,ŸFÃÓàDcز$¦‰$&óÃÓ«Uœd_Ç0K­gH¢žlVh¦„X¡Z V©ÝÃ2mŒâT£µ@÷¢ù™eÓ…`im‘aAN6˜šKµ¨{ƒÂÆ_Í•M?fƒâ­óS,~(Á,„KЪ G‚˜%¸–f‰Å‘7?Œ–cµÐK©Ú‹‡¥Œ1$¸H=c-$AÀbŽÕ²{>Š:ôY­â"X bŒæ!bòÕBI«_†•M+EÛRõÃDFZ‰”÷™¨’†‰¹ZÙ%›.BÝ»¤AÍ/Á²pÄ_ b«„Ä ™‚1 IÚë 甊iŠøKYª…Ñr΀¶¥*´Ù×Y…ì •ÍÍ2×YáAæ:+‘…usq±Ù¾û÷ŸÛ¾ùð×n³ýùúóÝîóÝ­åª ãßn¶ow·×_n>în÷É^ïý²ûóï?]uWÞ™êa`¤vVry¿A_7èIJ#VÿW¯ê@¯Ýï7’·nûÛï@"¬Ê£ûüåÓ§÷§ýØ! q¼ÄlÝÅ…Û^B[2ìµÉ%ü™²¿¿2ü†zeR”ûÎ/ ¹×øí¤ñ…û+6O¹¿BCÎüí bûHß®¬?´S{öà™í*Õ+L{ûææú㯻;wÉ__ºí»Ý×;÷°¢S,ò‹¸žEêd‘ }•ï;Jä‰sZƒ¢…Öm1€Î@ÓŠ©L"<Ä´Læc0û5¬“©Lã‡-6Ê`ûÅ ½çt…÷AÐΓ™K§6IN“Y®~œP_׫:Õi1r¢µÆs¦E/Š1úðXŒ©ø Lùq˜ c*˜J›$„7 —SêϾ;æ4íÜjúh¹ÞáXï"«õ.Ú§wãw"-ž8ÚgÞÕ#3±˜%ËY” i=‹ÜÉ"wnQ#Gâƒâmþr[ÔL:0á=ýq±k_k+1Ùç`¦Ö[TÖðå¶d‹š)ZG¡ßÖM ßê#gx«GŸ&X„õ,b'‹Ø—2cG ÐÊË¥Ìì'ÀD4©¬ÆD¾Sãg¥/Ã/}ßQ„õ½5òÌgeÿ‡ä¨¤: m9Šã¾ê<E¤tŒB;QhgÆŒEãËË}.-àF<>þd?A0¯'X: –^‚­£²RæÿÂhW9ñT&²Cc^ ¥Zã7m䨊œÚn”[çØ9O€‰ëÁ¤N0©L C¤%™ÎZv?û–‹øÕ\¤ï´¬õ›ã2rTŽƒýIôœ`ÚìdɽEœ@¡ëQ„N¡Åèè,Ò^ð}3Ú¬æfîTí%ƒN” òÈ’Aëoé,¤·dã’¡„üÄ[h ÐQ!0s8tèrh•ºÊjhÚY©ko¥>r´ ?[Ú-×·Lè›Öë›;õmOÑbÌqø¾£ú4(wþ»ÙÊÝŠØ |ˆb±¤aâh,ÐjICçÑXàÎ9>O•»ð´íp×Yfâœ,„õ`:ÏÉBï9ÙÈ‘ðÕŸô‡ùfl_£·vÄèòøÿÂþW”@ó endstream endobj 2661 0 obj << /Length 1950 /Filter /FlateDecode >> stream xÚÝÙrÛFò]_}#Ëäx¦ç„·òàu¤¬¼µ¶#1»I%y@(P„B€6Zå¿ßž$A$3´´å²0}Óœþ±èÿÿÅ2ÖDRmtd„$T(#¢2&Ñ'iôÃÎë?F'/Ï„‰%1Y4šDZ :Òœ‰ˆFWѯ½2Mf¿QI þaý¡Ù›,‹q•Í w›]iÉo,Ð ÜÀà†r6Èas÷Ñ/Ïݤ4”ŽÒ€H&=¥ów~½|ÿÓ/ý!—¦÷¡¯uïõÅ럎N/._YDwÄØ– Q\ÌÊcF¶<¯È\Xp}å/Iq½œ%¥¿ÉçyZTËÜß}Z&ë›b™ÿ‘– cΊAVTéuZÖ’"SCƉ±§×´óšvÞ¤'¨¿*?ŽÜË3 Å6äšýþôòÍÅù‡Ñùûw¯üGøfã#d4¡q`ù"­–ed5½jšúÅýš{,‚obaT%%bóJo£$ cº†.¾ä}0½?úÈuo>#ý¡R¦7š¦e ™Ô‹<),ä—~ZfŸûí6KÝóÊ?ŸÌK‡m™®žl‰ÑÊ:hJ„g}1p¶r£ ç¼éŽ6>Enf³¹ýì6+®í#ÑûXºŸ³«tá¦ÙõÔ¯ô Ö/Ë> ë/5ž²Õ± vÙ”ÅÚ€1„‰•¿Qm¢2æ|'@Iɦ£QC¸b(ª ±f+ŒÐîDjT‹!2npiüœ:(ADluç<ØA±v9‰Æ˜_CuÃ;q±.È ¬Õ†Rbâ´€ŒÄŒ‡Ђ/FmÄDÅr“¹]ÈLI‰Œ·Y_Í!N´–+Ëó¾D—HÂQ5ö;,?W˜ª8¾¢ªF³r7Ñ$Ö~Ki-C„Y¹-[§H U¬Ÿ¤b·Á91f•Ø‹4HÖÀv¬íÆ;qÔmÖÐèw+{ Êe”»peòttò鄹=z·Äðãq$'Ëî8?ùõw]áK¬WD ©ohqÊ0 ¬gÑåÉ~—°eQ‰ \FÒbUpÇn|§Ýî‰SÝ…&QM˜TÑÔ‹i—û4ºyûȵ®¡¬3ý S°Ò;EÅ”oSÿƒd…ãÊ ßRV~\Yùµ™ÃîȺÎcÏ\\vtqŸBÔQ܇nKú KyOú‡8&<ûÓ?¶œØ*H,Ûªn˜þ©Ü#œ¯ÈƒÏ1R\âžv%ëñCåQÚeØ$´‹Íw®ì9hù):pKCÀ·2öbDè©~ni=°QE¨¡íàê_Éþlmß(a±‹É¿Y‡ÖÊÙSC@bäŒ0&Pˆ µ‹¾]z³‰þºè‚¶îzZƒâ‹C‘Ûéi¼)àRe«¬GÔ.ü_k—wó$u Yy·PQ‡3&ï¦]¸«Ý;b­ˆV¸ƒu?Ó™}ûaÁb¼gûöÃ52ûà 5÷g¡®qr_'©Wã¡ÛQ®»1Ý*¬~`…m-ŠPØ(LÝâM§á¬Ø`¤±+ ÝÍß[[ ’ðØžªÇD‹pÖyëÏ©3Âk {toÙÂ^¡çOwí{vnß$³YñG×ö4Ñ*¤”h%³WJCäúØÚv[Ì·ÓllqO·¸›$ãj^fÉl±âÀ1YMû¬—ú5J'ÅU൰˜Ã"½NªÌËBZg˜„b›5DuI:²‹Óÿœ_ž¿ç®ÿy~9zñË#f9º7ešT镟‰x7ÿœÚ ”ÂzVâí¿¾¯ûË­ÝD‚ÆØ2òíGm¯v~š»>4»Ý/J ÎU!âgÐèd1Y{f.çËrœúû³l–ÚÙJ×dÓ]#;\TÀjJftzqÖ7¼÷ÚZâÍi7U¶ÌÛtžì™øÑÜ€îAŽëì|tðQÙ€¬|Vƒ=°ñ¯Ÿñ©²< KxØÔÏjÚÖs?ð¨ÁŸ®<ìR2Û£@‚†\¬Fx¼kH»³ûæiÔ®yOÇOïlR'‹° Ùײ°z›”×Ëi)u `iÂN/ÞìÅ·Nd¸pP@%Q°·%À·ŽcäjL,ÆŒÆ÷”r¬%<²áÀÞ[ÉØ[ya²âã«@åï>&e’§•óA{_ÍÃuš…'ëT!¨¨µ ùÓˆ¢ùÝZó\Y“Üfãú“iš•͸Z&3o….ÄãfX}îK…t™.¬Íb*¶•N`>Iêù*ˤtž‘‡ÕÜC”ižØ²gŸm`T‡†êð•оޘ&ó– [wÜ— -» Þ–“Ù&!K:©PBÄlÚ¦du®mýYC¢7®öí¥7ÀøÊ+[yUKå}›ˤüR^&º^†:éZx³ªM¥V_+±ânèÐGšT éúÿ8Ú° endstream endobj 2666 0 obj << /Length 2058 /Filter /FlateDecode >> stream xÚíZ[sÛ¶~÷¯`ߨ‰ˆàÐ>ø¤NÛi.–ÒÓNÓZ¦%Æ•Hb“æ×ŸR¢ J”#;§3‡»ß^°»öC@‚1üýä†"VH`¥U ¹@˜K̓EܯO0 ÄÁõõ_Ó§Ï9 A±4ÞŠŠa$à£áuð{¨%´BEø1çéB¾ëEL‰ð-x0/£Ô>?Ϧéi/×ÑMŒaéý1üñés M0ŠqL #DŒ"¬ˆåsñbx~ù¼§YxÖ£:|v~j>ºƒàêM*)ª‚ˆ‚D[J‹4™lºä ~Sä£U6ÏíS…Î zGúïhÿëß’þ-íß²5\‰7E›œT…ùÕ›áÓ—o†p¾ê)ž]žý|Ò º‰@5’L6eX+€s7Ì^Oí%ÉÇÅ4Y؇Ù|–æ«bfŸ>Éú!/fWébiŒÀYÞÏòU:N•¤Æ„!ÁcËû¶â}[ñ¾}0ÞÛN5”áÔüýùàÙåÅ«áÅ˧ö#"¶<‰*„c‡ÿ2]‹Ø2­ÂÕ$µ7ÿ)n便ÂÙ&‚Š¥jÖ>NåFDË¿fÆU¯z€:œO-훹c’åæÇRZû"YŒ ÐUùv‰z‘Ä"N2´ºŽæ³÷Å*½¶OÅ2ËÇ[’\&£dRf%AX³¦ýA‰ läÔÅBP†áð E„QûÍ[̨O))%‚H#7ÔB!J XárG<6JË•£ˆWÁi Ö^k#FÄè1‰1±â¤fF%Æë˜›zIw”#‹Mp-ÄtA -~0-æ³’0PÀ§1ÒŽñû2æO>œ2AvÑQ°ƒ`1P F³“ßÿÀÁ5ü±q€ü±9 (¦HJ3æÁàäµÍO[È*b4Þt_LL€ñ*Ül‹ñ¯U%‚É}ïIËk+kÕQ&¸îÔÔJ>„FºÍzDZ¡‘/˜ùê#ÿ ÓGŽ=k|N! Øà“®$þÕq 2„šÏì¨ÜWâDˆQLë\[€7R×ûèiĵ¨‘µ l1d0(ñwA¶ðÚÖæ d¹V uñê#J-ºoîfn4Ä|ÁÒÀzGzÒ3mf‡-h̬x4d°l]ù ‚/¹Vo»¤t§¤@Øá;.Ô Õ)1.ʵ«-¾õ‘Š8†!Š—ë"î¼ãã$]¤^š)l eÈæûä]ädÊ 5·¿k£Hñ¹¦s7díÜÛy9›î•§xs ¡šsýxé£slgl;ž} w©Â¥{,C±n†’‡«í êúÑvO;_ÅLd8¦•ºùÅÿÍdnÉý*¯¿ådêæ‡˜Éƒ-bfOʘ®Ro™ÖØ)k”žˆØ™,ž97}9»ƒÜð±Ø3óv+zŠl¢/¨ÜDÅŽý==‚u›EòHÁºy„ü'Ĉ¯áåÖ<‹%,æXc–ä×åcD)·¹h½ÚÞ³‡Y»Qò­uº«ò*ÑåHKéY±Y1Ša1ªÐ:vÈq‰­OÖåJ»]µXËÃê×QKA@ɽçgâ¯Ù6äëíªÅÇ×">y8ùx»|mè»HÇ4òãhàΖeq¬Nt¹*Þ±¥DEDñ]'TÃ'0[9ÖHPzŒùò?¡I Âeë&.!Ql޼‰Bœ¸HYS æN#ÍÍ"Kòñ´GB÷b4/ÏCÓ·˜ÈQæÎ;ûöxÜÀrÝÖÚ¤DC LÂÍ쫹¡ðgª°-0¸×\ì àfg7®õ`oK„ÙÈŸlÉ{“ŒVóE0“éÒ…zJÀê¤y ›å-ñFÒÚ?wc2âD„“Ä(òO#Yjßäó<ÊÓq²Ê¬ŽíÛ;‡Õ1 ‡“òGéÎÒ#ï1:¥T0ßyŒ—{³•êÞ Ã×ݰøœ.æöM‘OÓ¥{›&•MÌ“q½ë¾sV©Êᆠ:ioO•¤öœmƒº‘¢Ç#µgQ¬ÖÖ7±ö<( $" ’Ý» ‡hdO½§:íÞW#Äø"¡Ý4BR%V#6H3ÞªÖ(*º GèkN %ÄIÈl<]ZÙ¼Àê<èž²<ýP$Ól•¥ËSÿ~¤ªÜò€40oiáZןüªñaê_>:©°].ÞbÊ÷Ÿö£z£ðl¡C6O§>ùË¥ éžt-b²å€ ð,š‡f¶_KÛlbo[ó†FšÕbr˰Šc¹ûì]‹©r¹·‘ŒËö¯8¤)øÇ´‚‡é§dö~Z½>CÑϳdÒ÷u&I’µ®_W-xP¯Âw=AÂÑ$ɳÑÒ›Šõf˜s\1m˜ó©I‘{ 5'‰à?éÊ&`fñ»)—Ä’Z!ýmŸT L]=yyþËÅàâå ;mþ}1¾¼üíþ}“ÏiR6Ï™–ób\,Wöžb¯üéûꬶ¹rP¦= ʨÀ¶ ,Öõ¢³íCèíZŠùºѴвª…v‘­ÒôæºØßC[ìÒDKÖDë0/‹«Å¼XAs=³5î}½±Îoçƒ{s/–iÕ]z=Kl)]µ©Š»C®oVEƒÕ ˆAI±iЈ¡Jt‰PÀþ ÄE~ endstream endobj 2671 0 obj << /Length 1505 /Filter /FlateDecode >> stream xÚÍX[oÛ6~ϯУ T,ï”: X—ÚYÒ­Yc7CÑöA‘iG›,¥²”´ÿ~‡7ÛrÔ"ͺa‘Ô!Ï…ç|çS>F$ZÁïITE~DªÀ*QQÂÂ\&½$&ˆré¬Tˆ>Ž íw&oôrPμYÝ5¹vóiQêg`&Æ[A´Lq0u(¸)þ^O_Í'SseÏÍ•OWU>¬ÞàMwÉÐBæºm¶6H¼¿=Øÿf6™=Z9¤¸Óº®ë ’uÀñžRñmEì£u\¯o:[Â4•®lÌ@—:o!CÜÌT´.n²2uiÒ]ÚðZàÉÔûÄ^‘;JWSÒf¼ åFìÚͲ¶^?q6r¶o#ƒ1Ulµ6‚z6ä ¸AÒ ôRCÉVÞÌ;Lf\xC XôÜôPåLèÝHÌäk*ú˜1™ž ó7ó!c8³wá­ÉʺZ¹ê¾+Z'E»qKºX9¼¸ ²ÀXDF4Ž9磹…/4aU£7)üö…6vWazeD>Å‘æð”ÂK¨=ïÃ¥“¤â—*l¤’$âÐKx?ä°q!FÔçŸ^ïé"€ 4¢H¦*œAÉ U †´óÄKþäM¢{&I 5 êšÅ‘Š÷Ä‚{É=÷ö„ð€Bë)7žðÃÇÐEK$ ‡Ã(cÁOáÏã´oå4$D3t”@Dª]–1•)2WÃ(¢‚¢1‡NИ)¤DzȽ`QÅÛ9¤æ¬û¾é&øêÀô^Â8Ëcb{‘ËŠÁBF,ž°“ú¢¶äÛ´…ì…3<€ˆq”²m BÇñ½_îÚïá²|4@þ~¾0ׇbš¬â3|ûqàP”Ü µ—S¸=!7w…ð°m…$… ÑòeüÃPÖPHƒaé¿»ÖcÀÁ-—ò"_)/bØaêËW¡…=8Áгº²^ü¼ro Sž„)Kœ ‡^¿wŠ$G ¬òΕÃõ~xg$ÈVd=è "Nw§€µ ÉÚ˜Cv²òÒYÜèuíZü±P‹Eå6íú¨Yµ¡è +d{ÐæNc¯y‘é·¤)n-¯m §È3á¬ñ (wüÀ·ýé¦,ò¢5 Óˆu›"´¹6´¬@™š*MÛ| “h–ëv°  4[PäÔ1ã܆ÞQkþ}©µ Ö¿e;fÍwÌúìå‹Þ‡ÓâSؼX×ÝÆMnšúªÔÀ~ììU}«×Wð™—ƒ‡ß£èæ°âŸqtš$ÙqtÑãè·cøº²5DÔ¸ru¿áÿCØo³òßeì⑌]>бŸw-T¤a¶Š{& ƒÎëj»bn û™mnͼ»G7-/VÌ“e¨-åywã¿ÏÍ¢ÝÒœ5àЭõö/óh¦ kïºûäôäòù¯_âÐÒOѯ=‡*ùÏjþ¬ ÙuÉV—)| pöвìý‡¦ªR ƒȆðiFDÒó ”ÿ îOj endstream endobj 2675 0 obj << /Length 781 /Filter /FlateDecode >> stream xÚÍVßOÛ0~ï_áÇT¢Æ?âØéƒ”• MØ4¡qÛhMi:Ôÿ~ç8ЖVš¦ªò99ß}÷ùîkïEø£ø_bA¤’H¹×S.*5£‹G‚ŽŸÖOQk¿çRD)ö…`(#Éä 8%èÊ‘˜Q¯Ý¡” ç¡L+=Öe–¶;\ çš‹r¤í¾—Ît·Ý„¬¹â±OÀ‘¶o¢“ý„§ûħ&Aΰp}›«Ã^[qç Í”stÍ¡ßPdµE`É$ê0ˆD=i¾¸-‹E•æ€Ll"¯axd=@gK„Ë0ßž^ØÃ‹y“7+’,NómµoKz„‡ÃþyÔœu툸ɓ˜øÊº3T™ÊæÀ?çN5ÕÖ¨9lî ¶:×ådilשŠg¾×„º3m³mF=“ØlA/žöñà2ÚM@£@/ÞZ1cæC@‡6 6 ¾öC(Ø¢ùÜ£ÁðûnÌ3…=îmRxXê¸Ò‰¥ÿ4.GSk2B„µLמ|9zìÉVµî[´jÚ_@Áe­«‚x~‚æÀúCí•!—›Jg(l]¼0C®¢˜2o5Cr}†&ºÈv!ã¹Ã‰2@Œ<ÎÙ Ð+³$Þ3KÞk³ôç¤ý³óËhºàV(ç¼-¥s0<8 €¥ðï[Ì”o!uí2†K³¼¹Õeó´(WÜ¥ùÄn€Ô»EµêÄ4ßKsCmùÒw¶ax£R ê¬ Lºvô1‹«*Õáü4£GUQ6nqž4FUdéÈzÝ™Å)æPQ‘Ïí3#)ÆÏ*Él”çÀEÙÃv2²¸²þSˆɦöU›ÍÒ¾»­ã7hš 1ešº(_ýb$i gK+Íñ¬§va@eÒ³øÑo“2îÖâôª‚)+ª+`b‹€Äù".—Oæî&aŒ@;ÿ> £’cÿ"ž$L­KX'»)8þ7X>F¿ž÷#Ò6§X jQáo‚[ú$ŠT÷ endstream endobj 2679 0 obj << /Length 789 /Filter /FlateDecode >> stream xÚÍU[oÚ0~çWø1hõ8NúÖqé`jiI˜4µ}Äi­ABsÚ¿Ÿ›(ô¶Mšòq||üùœï|~ÜËÿ9H’?ê3Hóð ‘ãzÈ9HÀu IGÎŽ_ÂÖÉÀñFÐG>aƒŒ0Àl© Æàƪ ÞîPB­e/#‘¶ïÂÑÉÀEÛû:´Þ×!RLõ¾áåÕ4<OC9´;6õ¬«6cÖÙäì¢ö'Á© ô Ô>"âA×vMdWGNÒj©!ê! ƒQ®Ìxn¾fÆXç¢齞dU¹ªJmß"ŠDúY¤%¿ç¹œa}9Fv.·ƒÁܮ׺“áU8_žêMrek’î "ß×îãúÔBæÁ¶­ò+ñd2‰g•<Êl)æz5E¥s¾qδï-Â΂ÃCÕYT²ÀlÒÿ> $.½ÿë0Ç“Ïv7çQÉc±‹è—6B´Iâè[o“½V?l=¶pMN $PêRè"Ì—­›;bù}´}¬k¯%pl"ÇZ׆•` }JIÍJÄv!V" öÛŒMm¹H•%¦ÁY•Ϲž$3Ijúü• ÌŸ#‚9ïm‹ÊQÀívfh1z×)‹"J±‚µÊbH(”#…£P]‚ßÚªÏÒÂØ¢TŽÌ¢lª¶.á}šfæ%ð$dŠ×šôtï§”Å)–´‹4¹šZyØí?<.‘’Þ6˪lê´Oàó–†$G›‚tÞ/&‹ŸÿÔH?ìDŒ1§ ;°+«t×iY¸)S˜j“:$÷ÖÐ7ÊÊã,s“ËnÐ6‹Ök4IœùeµLë¸C®›"±®û¸å½øÇµÉC†‰ìuöv6ŸÌÏ>ýŠ({˜ˆ'R¥PåÔ,«&®þÛ)3xœ2¹¤˜†ò×”ÉA.Z‹;i²}iÞäqý8eZäŸ#Ì–÷ïÒ¥]«='=€¹I(]ùS—ˆÓ8KšÌÜLÊN:RAÔܸÒn&®«ô_3™é?oÝ×f›÷±Oì€ì˜ÔX‡¼—ÒÆw9?äXÍí®-®€ïÛ¾Í@Hàšw¬K7³J+8«ÛlBÝ€‡ð0§q’˜m{®7@ûähÒÝUâòï“èXoÙï!‡{ƒ–mkÐO`ÏËï&_Ú ÕÃC{qWy|´;hŽÜÙ.ƇyaÊ¥Pr,û»•ô`ülÖÊR endstream endobj 2687 0 obj << /Length 982 /Filter /FlateDecode >> stream xÚÍ–ßs›8ÇßýWèfŠªŸHäÍMž{—øbèu2mˆfÀ4 ’ñßÂÄvœ6íÍun2 Bújµ»Úý;DÑ ü¾CkDàGF K¢´BZHLD¨ª3´B—#B‚Þ Ï7Éèõ™ ˆRIÉP²BŠ!Å –°)Y¢OžÂŒq? ”Iï¡ÎMÖ˜Ôd~À•ô>I⪭ýûY^d'~ Ù‘âUD@Hý/Éû×g`ž‘ˆÚà 8ÃŒ‡î¬éE2™Ÿùš{cŸiïtrb7=ñ\Ö»V$VL¡€1Lw–šöº®Z“¯Á3¹ïyçFHv »ú¸?Ä“øçï7·MnY-Ë4_[;6XʱÑSÍreÚcù Ž„övŸÎ§'ÓÙʼnÛCåAN™Â$êùhÓÙEžñ©w›¹ñÂgÊ»Më›î]zËlÝäÆNn|-¼W02﫽Êdk»bò´hœ<]/ÊÜfµÖY‘Ýû2„ÅNí”0ò:O¯‹ÁÊ-™­3Ÿ E=û æJaÁ$DÖE'ãd‚g’cÑK ¤¸K| ˜Æ‘ÚOÿEeºƒEï ‡èïmÕeEe#†AÝ@1‡BÚßk“SpÒØ¨lœ§7`„p7²|yÿçÛ-=F“dt7¢ä¨•P ë0B‹rôé AK˜‡6Ã<Òè¡S•HpÏÅ£Ëgh'dÓGÚ‰=ÚmʲnSþ^҉þçøĹï2Lüô“ÏZóµ5íí:ËÞÔ]ùË ‹”·¨7Pö…“t„²ÀZ¿ RSf¦Þ¸·25u¾È¶¦+÷t(j޲ˆH,e8°èêü¯qò,Œ œÛj_³bªøŽµÓùUüœ¹€‡&„î7ºñˆaF1WzÇr<}žš!Ã|0G.4ÒB{üg “ß[¢gE÷mÀ€¢ˆx㢩¬:êëÎí„zt“Ù]›»¯Aa¿ÚëçSS•½¶»";_;;Ü¢]+ ȵ€ @no3ïN¶@®ŽåP’áÎ&—ãdv¿,ÇÙH©‹¿޳…©®í7¶${ iaÊHª&ÐÁ å. MÉ–íËÙIÿ?ìܱ>¯ÖmùèÒ¯ükxXCŒ(¬©†mÖº§ ÙÞ&¸¬o.Ýh endstream endobj 2691 0 obj << /Length 943 /Filter /FlateDecode >> stream xÚíWMsÓH½ûWÌQ*Ð0ß3âÆNQ Ø U[„ƒc‰‚eY Ë¿ßäXAÔzÙ ‡-Êek>zº_¿é~%A}‚ï Ú"k,‰6!1ÊTZ´FïF :ùáóe2z6Q‚cS”¬‘ÖX34'X‚£$E‚zgÃH2äEš/³mø19…óåXŠø{›t]ÕgSÙ]ålžM5;ŒÉ&~D56ݹW“Åx>{›ÌÎÏžû3Tž0LcwævUä·aÄLP¸ˆÂ° ºny?[@x‡¯g‹ä|þGS0ßþêg+®úU7.í²²©¯ØóUU\ÙÒO6?rH§ØÇe¶Z]g…Ÿ5¥äoÚí³¢LwUYä.«Ô$}Ѧ‡)‚¥Þ£1Zå£ JaZóØ ¯UŽw÷²A‹Ñ»¶y)¢ÇîË5/8‘1¦Fù4fLAñPˆÿµÌ*[å<­í¡/Šº\Y?Ÿfû r`Š×1éð>¼×uÚÆš%“ySÜ/\ù'Ç1ÐîÒ;ÚÕWeQWÙ¶‹{4òz[ç÷ˆú•;¤‹Éâ#¬Ÿ>ùktÏüÏtÿÖ½£t=¾î½¸-³Í^õÌ#¨`ýRÿNõ8‘X0q¯zúPõîBNƒÕ&»¹ÉŽÓ¾ƒÇ( þ¯°»‚A ¼k3xLá“?§{ùmöHïr'N ]SkŒ‹zSäŽÝ+¿Ð©˜ÛM#‡:«ÅÚ?%lzl—\= J©û¶n“¢×ùXè½Ø]2誕ÙYÝq~¼FÄRåN=€Õç‘c-ͽI}¦Mƒ6´ÔÕmÝqÜäí¨xÀÖ%¡bÓêe¿l€?…ë•Åûñ›Ùéé Ÿ_$C°äïé¹Öæ—½Ûõ…mq½,óåå*b!ç#Õª÷G«ÏÓ1H‡AŠcÕ½(PÅ{)Að¿ ÐX endstream endobj 2696 0 obj << /Length 1169 /Filter /FlateDecode >> stream xÚÅVÛrÛ6}×W𑜑`Üz¦Ž#»rRß$§ÓI2Z¢-:¤(S¤­æë³H]búÖºíhD‚Àb÷`8·ñ®áèÍ< ?*$°ÒÊÓ\ Ì¥æ^{WÞYƒ!öWïw£ÎÎ'!(‚z£+OQO1ŒLM¼Ï¾B”ê Gþ}‘”ñ]Àˆ?N“››oA)áÁóªÇîû IãÝ '0~0]…ÌIðut´s¡F!‰ Œ½£HðÐÅúçfþ^@µ¿ßß5“¬àëM/)ª¼OD:O‹ê²È«2™>±ZE½ DâM½Ãþðõ„›\-êÈY>É¢dfü˜å¶^î–Ís_ÌÕÖ& 7n÷¬lÙußV–2$±z¦²DÓgKa›/«¬úuî’¶2¤D¸YÙn„¼­D”#ÊW«pµ¼´6m癨äP{„]“ÅyÿÓ`ÇÙ!ùu0œÿñ2ê¡I&·¹g ^ÆÇ-cíZ–³§Q‘E wú£Îm‡X!F¸fˆ³ÐgÏ_±7~`-Ä€Kî­UæqfÒ‘zÃÎÙ#R‡ӣÖRnJÉ}rK_¦!Æòâ!ÞL;ÄÚaaÿ_Âñ/¨ÂIU³‡P–)L­—ñu¥õ˜! ó&­ç \j¼:¿Ü:# ÷ *ÜœI l‘šâh¾1Xdoà Àl¢“þ"‹ÒÔõÍ#@˜‚\Í“•â#(߬nÇÑØl‡i+z¸4ɵ\ܶÁpZIcÑ3±´Ÿ'N"kx¹CWN8k¤Op>R¦·Iÿ÷Á}ŒUà>§‰Þb|êçeìZå4*›VÝUÃkªhº¢¢Gé¸J=Ø«2.Öó[U¸~M™#KÆù4ª‘\ÚÁnö3‹æÎ¼dõÓ¢±é4×&æH±:g¢¡n‹Eé(ó]‘¤i^%3÷ùÝl†|æêALÎ8çþ0nô°9ÝFâ®Ý}Ç’Í#,c©š¿-U˪>ªÊÒkÒ>úðþQƦX" :û›(…øš°® {9~“Ð…RÛ9R>-3ñThÂÀoÇ2³ôgô¡ ¨*bŒ¼ 0*5bR>ö”õH(í¤ÿF•–ã? "“¤Y·˜æÝkû öÉÌ3^vãq÷nÙ½¯1?¯^ƒãӋѼ ñBû§RþÞùÞo}XÌOÊö3P¬,]ÁÕ6R}hˆä[“ n?Ø1‚| endstream endobj 2700 0 obj << /Length 1141 /Filter /FlateDecode >> stream xÚµW[oÛ6}÷¯Ð£dÈ /¢DuOnætÐ$µÝC׊L;BÊ•ä,òã÷Q”bË–ÒÔ˼ˆß9ß…—ão±ÖðÿÎR†?ˆã@–ð8ž/<+—ÖÊú0À°[ïzÛ·‹ÁÙ…',‚QˆCb-VÐÅÈg¾0Œ8 -–Ö'[9#êSn¿qFµ½»‘¹ég+Ó.¥*’ò»l²D•…éÿ…9N” r-sçóâw †¸†ü6sF„Oñm”¯ev—Ë(Õ]¥ûP×–5°ë›^/¦W—oŒáûFà6 …Y>¯Ýç…­}uˆ îÂ!±Áeæa"‡ö-|ЙéO: WËt4Ð×1Ø5Då@k"Óó‘jð´‘j¬5Œ.¶^²ÚªXg¦1ÑW‰¶˜!3çwI ›í@;j1֌ٓªõì÷QYE¦\“ï'$‘ïQ™^ß~/ÀÊóÖáàä}=zkl½V|(!m@»N 8žß¬qgXp‚…ñN×™bÌ«3ÝYgâcäQ*Çáf¯ÏêlòÇtU6€¿Mç‹«ÙŸUÉ®õÃ;½µoj¸sØre³MÇ›<©w¤öl·7gã™vó3s=mìf??Ä_67²òb²|êI"Dä  â»Á§ÏØZÂøP¿EÄ"…œÓªTÂCDƒºÎ¢ .9B*âcRBCú¢2òÀè9f„Ž›0X‚ˆî 9Ç´¾KùëОð6+1§#Q4% Sœy¶ÍciÆI*õMRWfh"_'3 3$yÙ~æ( Aû,¶79\¤‰’OûR»ô¥R":YðFº…»uï]ùàÊØ½pïc®ãÇí{bÔÁ2½¼þ¸8»ú¸€òÎ…}í=žßO ’ùéÇñPÈTÆeÞœ²gPçãT´µ”V p“–mÅVcŸíPkóõ¢^У¶Çè-ÄááücÏÂÇ#ÔpH;üÑŽ ‡¬÷-n;”F›4Š“H=£Pû9Ñ¿®~À¨…Ó¾¬> stream xÚÝW]oâF}çWøÑ–`2ŸöLÞXJ¶¬¶ ÞVÕvµrÌ$±dŒ×8@ö×÷ŽÇ¼q!MýTE‘=fî=ÇçÞ9¾;Ňÿ÷Næ`ø*@2p$s_r§ÐÎó©‡a#vÞ?_ß…½‹+NB‚:áP'`  Î7@”Qo@î.ö¾†zã°÷½G*,¥ )_VAÅËÞ—¯ØYÀ‡Œ˜’ζںt8ÂLÀ]êÌ{ŸÚ° ƒ-ø'Ñ‹X߇­¢؃LMÔtí¼ „ûx¾z,bm×WIª/½À¸Uª£J",Zô@w /bà/® d#…1AJý*jÀ(\Ù¨Éu8ž]y’¹CJw4¾¬¨ÿÜÀ@'( I‰ñm¦õãm±z,“ ôUS|3”¾ÅŒVY_ïú›ÝžôZRN®§ŸÃ‹›Ï!\@d!Ý©îp6üm ´ç¯ãJ%ò™_g6s œÜKËU§:.‹UfW ­“òÉ. õ$ë:J÷Ôe@ØAC½³[÷ÉvñC”Ý×2èL÷u®\mx”;‰±9…‘¯J•I”þs¾—Ýp¬J­÷/ãùh6™†“›ëKz' ­Zmÿ¸ò \ÆX­›i£'ó€»Qž+³Þ%˨LÌûš}@Þ<¬^µ‘38¼ª.Ölüûdœlô¯“yx3ûóíµ.¥^X­†y‘Ô²Qðƒ€³ál¯]ó U.âL<ÃŒž:Á&‰€sÿì¦ìnj‚(uᦠ§Ý´Xë¦ Tð†ÜcÄÝzŒºñ›|•a… ×:¡ÈàÄ1_½Tæ´¯rREU¾*:³UqÖVóm\kÜßÄÿGc¦¯ŠB§µ‘tà­5åÍ”ÿì®âß¹kýò£cÜtÿ¶æ>Ê憹yeÁ†¡é3ËÒlXÝÙkù íÍÔ|®‹…Þþ0} æk?È£"ZêRÉúÌÆ³CüH[(]¤úiÐV­aº05`:ªYÝGë¶ÆTù„C–*zúð´F °ôÝ™'ˆ«7õêå ‚àîc¹hÓ“˜¯9þ~O¸(ìF9·´L!‰R´*bõĨÚF”#ÉÉY¢=A]]–¨° ”oà+|ÿ˜­¬l¨B¿G•’4«>$k;(ízÅ.ãTGÙ °3{µ¬÷,óT/ëæyÑܽ+ö;òh_÷“£šw;ªý®F5 ÔÙ¯ÛgG5×çQÍ_1ªMH'£ºAàô¨îÖŽêjÝBQ¡Ý‹ÒNì7 kèT®h'$Ÿ³0Ø^hsfX‹*ªãa}î7Pt ºmZ?ú›ÃÜ8ÊÝôŠ)2· 8ò±Ù¡Ä öoU±¾/ endstream endobj 2708 0 obj << /Length 1494 /Filter /FlateDecode >> stream xÚµXëSÛ8ÿÎ_áO7ÎL,ô°üè7ÊAK¯š¤×¹i{7Ž£$ž&¶ëØièô¿]I&1(´¬ÇjÚ§vùâ0g¿/œÜ¡ð#ãHF¡ù’P?ˆ|§RÎÔy{@:/®¿ÏG‡§u%1™3š:!wBA‰„C£‰óÁ=;¿|7:¼x7‚OÏ2r/{aè ŽÞœŒNÃg½O£W·žúÑ.W‘@ŽÇ‘œÎßz“¡tŸõ<É¥;mò´ÎŠÜÌ’jÖ,U^›ÙG*i–÷+•,`È`<&ˆ”†Ù:YRË æ2Ãbj¾‹d9V•åø~hKùm‹Z4uöð´#˜·O²?O†Çƒ³ËÑÙÅù3sˆÉÝCpudžüu²ìñÈ÷€™‹7ÔG|±{Ä÷Iì©9ñ~WÆHÄ¢–ÄÛŠ&$s›U–Ḭ̈ž+pw©êy¡A'fåÇïqQ-ÔjÕÇYà¾(ò\Õvò2©”¾R)•º2‡’Ürù+ïñÐmêyßܲë_Bú„†í-zp`²&Ú¢žt’ÆÆ°¾ÕÎq±,IÏó#é¾Iê9±ÚéX!ˆ‰¼æ)÷)' <- àKWð\šÅq€FF¨»#­$_¸IYVE’¢æ†:[™q²R³´0j,Vjqe6µÞa§ž'µYÉìÊ‹ówfá"­d»Æ?mŒã+CxnµJ3t”{žÂ¦¨ëy¹UÒLŠE9GÙ„ïŽX«Í¸žë+y¶,  QêÄzP´ûÓ¢2ty³µî©1˜,‰1³æªÌJYeyš•æˆP%ùµºjt —ì ŒŸ„ÔŠ58ùûlQcN¾<Ž.ÿ‚{ÚÁ)•Û Úè>8|9`:2L…RrÂ}æ¤ËƒŸ¨3uÈù1¿‘$äa×mV͸‚¼ŸåöÙ¤ÿ•c…šÊûŸ!$ýeÓ«:éWó¢)ñï$ïÏàÓŸÁt†ŽŽ#ë†Ñ: -ân8Ï’ W›¾Jûë Ìט¯S¥“|«Œn>O"¾ô»ü†GÛr†„Áƒí3›7ø¦v_ωÊWY}e&e‘åõªóŠÃ‚š©êæCÞêBk¸ó–—I•À[Õâè$eôj¦¼Y•L²ëJa‘-³‡‹†kÙ€8 |Ý"uy©M™€(muj:ÍÒìGª’½‚„öÁ޾Ve–{íZ:G-í±L—5ÕvGq¥ü6Ĥøšÿë ¨°ÙÕÕwT–ÂÞ÷'°D-ì™]ŽMùž¨Š»yNò§ðäú¢7Üä_¾sÓ§0Õ7½›ikÓGx‚ÎfOÀè"ª»zÃŽš÷ãÅ7ut º)“?þ¦6oÁ›$}/> stream xÚ½WÛr›H}÷WðUbêóŒ!ÌÚ>æÆZ^˜‘ôYe¢|¶QÊ…1åE¡ÊyíFžÅI6íº`b%¤½tà'L¯I¶õ>¿ü`¬ýq>ž\Ž®ëÓÞiÀÙï8î#É$˜^Dsïó8¹MtÐv‘/ª$S¥¹[IUAYÔ77÷f|‡Ìx²(þUs}Uù r}C±NW}¥=¼x÷¦nšßprðý€ÔŽèf%C±èîàË7lÅ0}aaÄßZÕ‹î,ÎtˆSk|ðÑ4‘.OÚgp¤ê‚„±½¾vW*)Â~ð*\u7#ñ½\)pE·šE€Û£ÚIEðÚ‚Ë w„1pþa2éJ;Öótø¼,È£^7 ËÅM“y&qÖÑ?óUêØeƒb–/æú7Îj=PÑ`¹†‰åî—‘¾Šâì‘x·ÖÝM´ÞWŸ&‡—Ÿ&0è¶äÛWŽçÙÇ£ã÷CðhüëÅ¥Ç&ì#ãF¶¸{¨ ݽô«¬Lª¦–æy’Uåc±$Ù&ÔT­?Ým‘:fCRΓÌm碙~Ÿõ 5Ö ¦uTµý=q¶‹ç«ìQ$>%P †ZGº¡7fU¦Šéý*û1šƒVQ¢~Ó¥aU¿R^ŽÒz¢ÓÊ–õžI×±yµJô[ò€ô¹ì=Ì+BE{}Ú‰ä˰~âÖ‹ÐvZY_ᾎOGçWx¯ö '`L=„Mëk~bÙˆî먥§>·C[?Õ;<[s¯iÍŸq¯‘/z{“úº–;0yÅu“Ò:³ˆÕÊýÜÈ›Æl+¤·/¼åc4x4zªŒªHÕ½{œÆº_é*UQU´û¦ayô¤”ÚRÓ !¥ïNú”ÔrµÝ Zô)ýÔ‘÷‚‡åÜplm¾7€çÃWM—fÀgûhÖš”y’RtZÈ^ H%òùíña[ )75 ÷h@&ò[%à)ÔMÕ*À‹0[„ÅýO¤ÜvŽÔª€¼î—ƒ„> stream xÚ½WmsÚ8þίðG3ƒ½X–Ýo %mr×$z3m¯sãØ"xÆØÔÿþV’ 8˜4¹’›L¢•´ï»Z?ùië~?X™…á‡q,|aù.GØõ|×*¤5±>w00bëÃÑõbÜ9»t}‹`à€Xã y̳ȃ¦ql}·³®C¸àö»®Ã)·³åì^†Î'fe¶HÊÙÌó$+†þsœd=8²€éþ_ƒy‡0ÄÝÀX(¦¹a¯LDÓ°x-ª+u… SEfJá1¥r ~S­T®AmV«•™,6GLäËò…6¢¦(/ ™†e’g§4³z6”y^ʬLÂôšy¥øWþ¿F÷Ù¥ ûÍäP_7“C)⤲ø~0ê¯îÆW·7ïŒÜì T T‘æIæ,³y”Ùy]b' œØq×aT¨\táNçÃiø¯n+AB1™@Ôy˜ÕâU­ºY­åTâN É"–η%è/*¥aΤÓV©RÉ¢¶ï{F%¬}i<‘E*7Îyk]p!S•EÍþ.ª¬xx?+»ˆaÖ´•»éfºŽ‡={ØåÄ–+½ãö…vu¯e)kK;¹[žx6Ç®oüRµ&oJ­OT[õMÐê&Õnªœ9Løˆ3ÖLÝŸ:’²Dm1P‰.?ƒ·c6÷9t M|tÀ_h!˜ Û‘zu3 /»>³ÏÕôè^Ö-PS*šÍ²XÞ0l“¬šóëèpHÝ|1—sõ7ÎzrÝ“Qoµ†ƒÕö«HQQœíün>RgߨÖí»/ã³Û/cX ù܇á'„}><ÿ4€€Fÿ½ça´Q¾1|XÎb¡?ó¢ êCqþ˜³PaoYömœ³ÔÈb­Ò¿-5ù}³ÃFª.†v…9¡©èÙ˜~ <ÚúEXoÕ¼×A5ªí€ 4øÎQøòGh”qÐD…ÐD…Д”FhZ¼jGÅÈ»×y‰ Ý/’(š&ùQÄGà¿qŸ½ò5þ¿o¶$ò‰oy yu}‰4‚ëÿ’Ý)¯ endstream endobj 2721 0 obj << /Length 1813 /Filter /FlateDecode >> stream xÚÍYmsÛ6þî_ÁûFÝI^ 0~Hc§unš¤–Ú¹›¦sCK°Å‘T)ɱÿýí€D*°­Þù^&“H.vûöì¿',¹…ÿß'uBáŸÊ5QT©•™‘Ik“›ä§3 „4ù~ÿûÝììÕ;ÉÆH®Of7‰æ‰”(Ø4[$¿¦šp‘&Œq•ÞÏG¿ÍÞŸ]ÌÎ~?c,ØÊs’g¦Û¤aÓ¼:ûõ7š,àãû„‘›äKGZ%’P¡`µJ¦g?Åd3$ôHûbµ^£‰Ð*ýL6»vnÝó»re_&ŠÒ¨n\o“¿ˆn\g„rÓÜä4c¨À«w`@FINs†Û&œÊnßD0ÂÀNݾ˳‹«w##Ò7#nÒ·¯;åÝ:˜>3E4×ÈNã9mv×m³Û–5XDu.ú‡S MUÛe3¶÷óñÝýü aFö¹æA¿O?Ï^}üy?`ieÒO#­Ó7Wo~¼Í§§©Ë ÉD6Ô·†PRà¹×NÝzW]ÛÖ­›÷»°õ¦Ü>¸‡uSÖÛ[ã‘Êz /ì­mÃy@ô„ ¢”'vÔ^Â|Y´·6ÂÙskm±êl…üŽyJo0á€)3È/Ü„ÅzÝ6˜÷eåO)J·ÿ]Z\dC€*b$[àh)Z‰œuð}Q/Ü"x Y9/!áÃÈÈ”Œ&9”“©õ’Þ·å-酶♺k Âm;ŽeT4¥3°ZGøiù°A~M¯FŠ¥öŽx£².%ý&â¦ã _š1d©©0 ²‹–;ד¨ïÄ@¾N¸$ œÐ±¹ºøår žwÜ~¸œÎ>^ýý_Hvo—›EySÚ…‹Í‡ì›ï.?\ÎÜÚ×®±{šÚõÖ §4;„õû¿ž‡@Vy8˜Ìr"³ìÉ/øSå™HØaö¨'©G½‡UÕ6ÛgÈ‘=…ôÅA ƒ€Su]!CÆ«ª¸¯ãÅÿ`z2°˜/n¥¯ûëo'Ì­ Íëý*ʶWõ 6´å½ßîÑ¡¬ t¬Cì<!qÁ8àd º\ìV|[ÙÍ7þ!ÕGéµÝ†åmQUENÄSåý1¨ïð\V»j/x·*¼USA}ŸNBÀÕbˆ±+[,J]KOÀ{Ϧ§²Š1„ç{š—‹ûÃH1Ðê‡Èƒ´¿vHˆ¯ËnÚ¼C€±-¶XQ ä\Á÷ÙyíD7cöü«®ÏÀª ]Ö»p|)·Ë(ÜÂt­Ž%EKt¬ŒdÁNÿ#À’rp èhDWJý¼ú§¨õ$dG¤* yaZ¨CVº‘ýŒÝkLŒ˜ARñë$gŽØ#{Ì!òßrÈÛTßþŽDB§ŽujpG‚*x«àê‹aößxk ÆFC ®¼å!ál×ýÆT€É_íK&c„‡L`{o»ñ8ZŽä@î#7'9ýÏÝœø±æ-Ì‘ÛpqrnçÃ[sÚ­HÀAxâ¥ÈàoG½›Î‰a&ÉÄ!þ˜¦ƒÓðõ¹è« endstream endobj 2725 0 obj << /Length 1727 /Filter /FlateDecode >> stream xÚÍY[sÓ8~ï¯0oöÒ]-¹;<°ÐBÙ¡…6ììðà$nãÅ—â8”î¯ß#KvìTiÓÝR†‰e}ç~ttúÅ#Þ9üé†"’H`©¤§¸@˜‡Š{Uâyïv0bïe÷ûÛxçÉ'!(‚zã3ORO2Œlϼ¾D”“`DþU–We0â_#&…ÿ |Z.«ibÖi–ì#ñ€6â>:‹0P“àÓøõ“`B0ŠpD4KìA! ÇãñþÉA ˜ÿ, Ê¾¿§7]“W}$•ÞˆÄxdËIU.ë´ñD'ÿ•–z’Ôñn–Çßv³Ùîìj%Zˆû #êáÑÛ÷ã'ÇïÇðj å¿ ¤ôŸ<{³’Ÿn'.U(dáY e$Ý3? m\§eaVqqžYMâ èe•ÅßÒ…yÖš¥Ån•ÄY«‘¶.aH´<´Î°NóeÞ±Xfqe¿”yRÔí'‹uržTág+BvèYÏÒâÜ,f).:}¶Cœ] ‡6ÉãºJ­Bg¥|ZæYbß..æI•NãÌ,çq•—E:íY LÙš C4ü¢%Ù«#—ß^ìŸ>?9|;><>Ú3›ˆX p*Ž”!?IêeU,tÊ(¿ž'æ¡ ˆß©¦_´ªéç´PK/R‹Pž™ßNk½èi­É{Z믥ôCly÷K Øóƒ0B›àk”ãl-¹@Ý}Ä„»LLÑ–*ž`H¿‰aÆX£–Z`„1i7]¹p!?YÔR4™€‚ç܇Ô$þlÚ˜‰ñ•9ŸyÇ|íuó5.fÃOçé×€J?)Ìr¢KÑÕJÚf˜1×ï!e\â8FaHÁù l?3”TxE[%B©<UÛ;kÕW“èw¹ÝÈ€<’2lŠ5‚@—†ˆ8Ð9"PÚ{D[!Q—µ9 Œ!…Yën]ªs85Øm1"ÉÃ$¤‰òŸ~Ø„ vÄjæñ–â± Ã<¶$­)hÏ^à °…Îó¾U×m! ¯¨´6‰'¬ bMvÎ7Êþcü³‹ÿ¦§›d§w“=ü1¦¿ƒøŸ€ºjBÄ÷*ƒ;Á)ë|óÔ£ :õ¨Ë#¢(Ò¥ŠEˆ†ª3DK,†ÐÂ…¶üé¬jtñ“mk÷yÃÑ@À1ÄÄõ²Âo(+­Ÿ†xƒó¨w„‹PÉÆ°| Úš¦ Q°$üD¢eJ±»–éü ÔvÓrá`L¤¶3G„À :îìw¾ì¦…'•!ÂÀš+PGFÞ4ßùð {3øâ:— iv&¡Þ–y§;ïLK?ð¾†â*(èòU4Œ‚k) !?²ŽG@Ym)x¶Å[¹l .\E¨ZË=xÑ“ÌA¯»tìT—ÀŸ>é<ÞgÄØŒäz†osL®ICé¸ï…q¹ \ I'2 ·PÛP, ©tÄ' bu{€ÂuOß ï#@5”„<ü¾z[áÜWdíL»§€Q7̽…'qT(ñ‘ÇI‰´78Žb°4WC×­·d- QDÙ e^׳.ÿ6ÖÐðJú }FdêµäâCaˆ½Õv­Áíêÿ|­¢¼¡9Ðf?Ø /þv½õ5Žÿ‡µçÚ#à0Ò¹¯lþýêÂÒ:€ƒªÈ(¨aû™ËyR9ïÞ ÌÏÅÒAÕÊÕ²X´·ãª\žÏÍ"Îìýθ(7ƒóåk |^&v›IÀÃå­ó[ç´†l›ñ¬üÞãY#Š–5ÞìN·šÉªï=“‡ÓÇ´¸h¯ýÑ#L4í$N¯è.íׇ›“­ÐéÑmnO‡à`j'z;ÝŒ{óTÝmj5³Ìêô"K›üˆÍóõ©ø{yÉeßWq±¸0ãÂ…}×L<´,ì‹ÕèÎC€Š®r²wf:¯æZlEE `79–—i=7o㢙+Œ 5ü£²x×3F4„ÛàCwõ¬uG7› ˆÿÍ,§qàíàQ«Þî)ìä±±ÀjÉÚÈÑ Ø4Y  ÉüPUñêu¿(ÊíŠbÄälÛš8øKÖЗTFHå… …mJIÊóhdT endstream endobj 2729 0 obj << /Length 822 /Filter /FlateDecode >> stream xÚåVßoÚ0~ç¯ðc"×?ã„·®…ŽNƒÒISÛ‡†6$4í¯ß9Nl°±nš´M|¶ï>¾»|äQôß ”"é+,‰òò„ÄD¸ž@yŒ¦èºEÀ‘ ‹f|´Nz‚"J±/%CÁ)†'XBPð€n-…™à¶C)“Ög6ŸG…íp%­;"É8[åQlæ½dwlGR¹á©OÀ‰Ú÷ÁåI`)Á>ñ©>„ ‡3,…oÎè‚î¨g{Ü:µ™gu;:è¶@ÕÛF‘X1…HÔ5HËÕ$ÏVE’+Ù0Ö\Ãö¤mø¸dÉÙÕ\Ý'Û¸¢ô¬+[)ëttú¾ tÇÇqdv¹[!KƒB:%¤¬c8&ébUsy²665ƒæž¤í(›/fñZÏX›é{ÔwÑɤ|“ÌÉQèì•èÑ.:äz/¼F‚½ïÝÎN¦ªœwÇg£þUÐ:&r¸ÛGLaâ{ÆýýjV$‹Y/¡`Ó‰Ö3¡Bl‡º>v]eä!lßð`0WÔ^ÌàÕÕöKR<«xŠ¡Sde©M­O«Ç°(W¹Uä¡^ZêÍ… ´­lYdS㦀Q+Ö>9†LúÄd ‚Þ ‹zR› èR9g®)XÕk Wέ(Lám Ý%@!6“,GÉ„×è°£»N­‚J°(^âÏ4“ <•nŒºúc¨›|ÛÃÑÇW<3U'œå1¤òÁt×0*²IœWLˆÚ4Ýå»óºÃZÝ õÜ¢¥&R­kjîù(š·nï z€ehoÌ¡{^J§9\wÄ [×´Q‚…ò6Ú(¶´ñ(eVð‚öKJF%DÀØ(™¬• ’Ìá_h¹Œgá%M{³ÊûjÛ¡W¾‰á¢9Ïæáº½n‡M&7¸»ÍËÃÚ„‹cWRƒLÛ ‚2|M_ÇÉ endstream endobj 2733 0 obj << /Length 1779 /Filter /FlateDecode >> stream xÚíY[SÛF~çW(oò/{¿É¡Òis§34¸ƒm"Ù¹ýú~«‹-Éká$$¤ ZIGgÏýœýx±è¿O£IDñ£œ!Šk"+¡R[¥It½Ü¢ ¤ÑÓÅõÉ`kçPÓˆQâ¨cÑà"2<2‚…çÑëøèÙ‹Wƒç¯¸ôúBÙøEϘxïxïƒÁÁñÉnïÍà·Æ;‡ÒÖ¹rK´ÐQŸ3B…+8_‡z}ÅU¼[\p?ÏÇÅÍ4=OÒryQ\Ÿ$Y–\ë‹ùäl6šNŠ»¿©¢£Éöh2K.“wÌKIúL%Ë ±g”Vۥɰd6L/çãd2k0ó¯×q69 Ótø±)kšÌæé$9/îÞ ¯çI¶d?Ï*þ”îzCøªÝvᄚñúuë•nùåàdÿøèÅàèù³Ýâ¦êß@`nu¶ ߟŽoæ3/‚Ð4~×S^èÑÐ[°|æ÷×ÙUR,²›«$yùÛÊø~]»ØYІ«•#”2HPš*§á*2Äš“(b4ÔaÄSÆBHAì°$òÖ í( ÇZ99ÀI.TE‘›¹/8‡¸1éìFñ1Êâ¯S®!}“O.}¿FõO€•$Ò‰od‰QÐŽ8'ê¦Øö>5ñÅ4-œ[¤…_•iÑã6ž…vs–8Öi÷¾äÞת•=“ó`à0¡&í°ƒ& />F ÍÀ4 \> 1’Ä¢@•,ÄC©Ô’GŸÁF»þ¢‹‹©.Ї¥¼œ×¼‹ ”îÕ¢ôœ¯yy 1ò&ª’^_Jòtn9›§Y^ñ„¸½Î³7:ØÚ®YwðñPð5• š/¼ò¥gD0ww©*›©êýœ§ªÏM‡Ædˆ(ë_ç:ÙGŠX· xˆP rͶ[o·XÞGYĵÈ¡rŠëèl¼õú Îñ-HÔä÷9騻ÚäÁ{l½,k+¼$(:‘²šP¦k&ˆ˜%L;¨%­¸ŸZ±±+`¨‡Á”ÃÌatEüyÑf[ÑV+O”"UÀêVò¶ÓÛˆoÖ:¼ÇÐ’1Zi‹…ÊY7+’sžùÆï³v~ã«ç{ÿg˜žgeRö¬ˆóz âl6Lg£ÉeñZ³ŽËiÁ¿E;NË 0Ä"dyªï:Ow«u³ëòP×]ÔÚe»Õ¶ÝV.‹Z.g£ÉÕº½¸ zYÒ7wT+Ÿ±§ÄW ’1Ó•ÏBfdg> ÑÁLp<3’¡±Ézr? j¨‰Öº=5µý×l&ì;øo]-ŒMÍÒü£†`ÁF6‰j¦_V“Ë—ÕÙ4[¬ò¶¹hÕ°+±ŠVXe›ÄªA¿¶+V…ÂŽšo«(l2'í£¢ݘEª²RÙÔÇ¥!#;°­yBÈ ‘½*nYÛ«XVÀìã8ŸF§³ÑYñcë8 Æ#÷SƒB™l7:ŒØ[Ú*‹jT]1É¿>&1»^3W0×9%-n™t5¡äÚDYFxSr‹¥¾DòVŸ÷úûsOÝœ­BŒî餉¤ÅÉÖuV’c2nwË3S(°0Dp8tõF²ùpè•}ð ìý)%|¶ê¸E›.š? ãý‘Ü€å þøàϣߋ¯~=:> stream xÚ½WYsÛ6~ׯ@ߨ©ã$H¿¹®œ:Óæ°”Ît’<Ð%q†‡’¹~}%Ra7ÅñaoÀò¢hÿÏP…üÉXaIT¤P$$&"ŒÒÚ¢×3@‚žŸ¿­g—·T"JpLbŠÖ[¤Rœ` ‹Öô6¸G<¨õüýúùå­àC(±T!(²ÀÏ"†³Pöˆw„ ›¤Ç<îQt¾àœí>3‚’æK9gQÐÖmžº¹m­ËfÒ#aÊЂF8T±Ó÷à€L"…cE,Nà020¬”r¨bÊ1n” @ïˆ$Sff‚ñ0ÖbÆYh‰$ÁÊ’X ÕìõTe²D`AãoR"¾›’Sc2F”ýŸ¼“1µ"éˆVÆ †CvÌí¯tÊÖ‚ ¨µ(^²Ða¹¢ïšlƒÝ:Ø£ƒuHØñÒ-¸_þ}·º{ù­úãnµ~yÿÏ•ÍÍùö>¢1Ã¥Ô1,©Ww£³¤Í6ó…d2¸>è¼p"#$rÒV×¥“š‡¬i2Ðu׿Uæ&M&ºq£µÞ4-,ëW „Òs £cÁ~V-‚"Jq,%ó瘌B¨el.¡æ JÁþ×w„Šê )çÚªîtš¹ñm^dWà'!=ocrÊý7äs`Kør¼{±^ÞÛ#óÚœY7ËÇ/±bÊóîóžÖå¡È>ï"kÜqÝUi›×•}ÝæÕÁ Úfñu[¶~sM­Ì¬ÌNއdTmC›ž£7«å꧆út^•õ¦Lòê‡FÞ²WoÖ—/߬áQðj®Tp}ý×È\ý|é+p 9½ržáVwvr¾uO{ÏX·»-й€šSíkÖîC»ÐÏ7‡}¦ó4ñå¾OtYWyjï%oDa'ÃÕv¬ “¨¼º(êYÕç-†Xï¹Í¥Óë]‡T6­}eLÄ|»LkØzy;Ú‡W©¯(¾ëù‰šæ´!”Ae™|þ¨/*–-ˆ`£„+Û„9j¯ÜVì£bÍ«6ƒ™¼ÍûÀ¦£‡«X4‡vôr1 Ú=Ò[ØY#o›,­«ÍS§F>QfëÓ¦æü^(è¤ïþß—«›û»Wk¸ ¯¦®[sm*Lboö&)Ò®pìsûþpU¦Ýè ëùNöM—¶îM½5OèOçLŸÌ©_»‰#AfvÛõ‡‰]c`ÍO¯÷h.«l³›k?u* ù¥AVp€ Á‚u¿ÂvÇ\Uaµ°¬’1¡öDcžhИÍ¾î ´bã†6®ÌA›¶ÖÙÆÉuåÖEó"­á&÷²N66å°Ó¹_’T^Ø'>RÕkNªЬݠ¬KoW:i×.jˆ…û~-:KÙ0°Âödã.0í–!ŒÊàÎÄ!”C„&³Æ4®¯[óRg; è¡øºÓ.4óªqêýE›Š<ósŸòvï$¯AAö»=IÁ`ÞØoè“ráö¡÷|œÀÚõr:+kä+œÑgwÕQ;7uþй½g¿–l6—F/([Q"Xe~Ú·nÍTXÌ 3;rkÎChB¦’ ¸½ì=Ðð6¥ŽbFú.«R dRÁF:¦têàðå þ?]?ü¼+¾Ûaq:WæXO¾ÛÝR ßÅ@Í#»ÛÿøZg*¶'hÈqØß T‰Qt`ý_Ÿ Æ endstream endobj 2741 0 obj << /Length 1373 /Filter /FlateDecode >> stream xÚÕW[s›F~ׯ o(ë½²‹;}p9U:µIî4çHÈ&#@Axúë{–]Ȩ–Ý&3[‚EgÏ~çÊù>;Ĺ…Ïk'u0ü‰@"¥’Žâaî+î䑳rÞ0bçõîúË|prΉC „ Î|åHêH†‘€Mó¥óÞ•ˆr5ô¡Âýë‘,²ôÓÐcR¸7XàYVæ‹È¬Ïãut:ôÆ-Q´ 0’á‡ù›“sPO0 p@ôaØñE‚æ¬ÉÅ|<=*æž ©r_ŽOõ¦¨²jkHRéx4ßhÚ–ó¬,â |µ®ÀhÄë$¼é¤ú¦ 8·Õz=z'W×ó“Ëë9\Àf¡Ü«¡”îÙôì÷1`Ÿ˜*ä3ßjF³Fn|î©Á â¤LÌ"LoËu˜Û_²$J‹ú'mSœŽâ´ˆn£¼¶Fû–°Æ·•ÁfƒÕ¿È¢Õ*^Ä jkžd+sÓMYÔBÉfÝ›Åvsåñ"\›å]˜'Y/Ì*ºß„é6ÎÒêtÈ¥Mì(òá(k™~ÏRÔuì6³= œrÚ-ƒâ.,¬ù{Z@Ø×Ɉ­ìÏ@) bRˆô%í^ªq$Áa€€Áå·r øsÓm?Å«b¡P,öú®×¹Œý‹úk¥nçpngM\)­ZÆO Ú÷aÍü^õ>(ne¤2´\eÒ-…¤Rúâׯ§Ì+0Ž}Ë+DòÂø„~Ö¢–ð¡ñ'…è{F¨'4Fu;2?ô$|=Š÷4’î©ÃàV¨ û3[« †2H^7\¯õ ?h*ƒ]p÷[YÛVÔ;KÈ#_Ï¢©ÝéøÉ  ð×Él~9}÷ŒÕîË<‚ñaiF¤³MÛÙ‰‚SšQôÍo¯êˆ ÆóÁç©X ÑÌ‚IU¡[$ƒ÷°³„ç0 (çk%•8œéÀ®ÙàízÂxޤ = jz²J† ¦ _ç'ìEügüÄjjÊtí¾fÀ1œ%Ñð´L±½¥9üÇ£|¤Ÿ“êûIÔåz6ž=›O•Û¨¦Ë$ŒÓGߌ/YDà»;€Š¼Œ%0vú¯²¶g-;ó¨f:ÿȶ†µÎnµÈ!†•B# ïø[Z&£¼KGòpׇ$‘6Aßm²xG\Žcs ]ëûk«­“jç‘8MkùM˜Ý;©¤^•zEí§ãÐiGø ;ë7Úª‚ž¢=ŠÓ¼Ãûðピï0¾UœoûhÝ>ànIî,?Hû—8…6Ø W«ž× pÀ/ºXÙ†”CwìÚF‹,]þ kíÞ‹‹ÁŒ¢ßHp÷m ‰Mð‚ørç¡k endstream endobj 2746 0 obj << /Length 2392 /Filter /FlateDecode >> stream xÚÕZësÛÆÿ®¿© yƽpwòÁudWéÄV$¹Ó¼:CS _AÙ͇þíýíÝ ƒÄØN'…n±»·ï]ðׄ'ïðÿe²JRüÓ¹a:5Ö$Vi–ªÌª¤*’yòýI À4y¹¿þõúäÉ #ž²<Íyr=OpgdÊ4^º¾I~}svõüòüâúüõ«§§¿\ûä×mø4™ÃÒÜzðçÓÅl·˜ÖÅöt¢D>ªo ¿(W«¢òËMµ>ÅK£›Ý¬öOÖó}*ìèýYû³õr³(>ú›9àËõjÛ ìQXÒ{»ŸSž­&u¹b§#ùè<€­è{ÕÍvL¢pÉ´Êý Þ•w´_à=)U—%)å%ÚïV O´Gç «ãÉíŸrPZzÁ)Ù‡r„µÉÒ6øæ1gLãAê!~NuÐuô¦˜þTÅÐhƳ¬…†“ìèk+tbXnRÏ›e¬A,Y&ý ‹&'7�Á´À@"Ï<Ôrú10×!=ŒkM™|ÿŒ‘””d†›.YÑ,Ã}8È×i‘P𞈌å6ï êñÑf¤&`÷ƒ|aßdªËØ2˜a0¢†¯°o[û ¯Ük ±ÞYÄ G1¥H5RËŽÑtÐh&‡a3cö’œpѰݵ ,3ΓpËÊdßÊÄ#V&„îXÙch~ˆJnôùìƒPšC%°« ÞÅ|ûé¤v¤ m¡™ ¿²fÅ™ÁóCÈûâH…‚ >ªwXU4±P"a˜9ùZížÇh[G¸g¢ä.Øãùæ {¾ýž¬ãË?ãg}Ç×}ÇÇÑ,i0Ó£Ö ˜!åpÅl“Ôæ¦}Z!y…TÏ#œÃœ¥jq.cRÒL¥¦ñë¬àÑdÿûXs”D쌰P£þÌgì'ÿÎ ‹Šœ±‹’ÐH-°”L2Õ£§Œ;þ±`º d¯Ö5–È-BÚ´ö«2È]ÙÎÑ, ”7l×ÛÛ‘2%÷"*·1DœêÕýùÙ|ºØ,†LÁ%oŸ­"Žn§UxN&]·›Û& S8.g´š.hÓ ÄÕ•“åÊ—½ôJ5õåfÃQQ•³©ónª:¢læËϵo§Õr½*g[”¯J)W¾º2ô¶ 5ælº-¢nWzo*Ñ🻊ó K‡u³í5m³(‹Oñ-Õ¼ÿö *FYLæ­Ø QPʬ‰=,ÍT¤†ö†XüG¸¦dÂY&ûi§Gp¿‚ „ñƒ u3 \6Í@ ×yÇCzÄ Õ%-°`gÝ& …5ŠzáƒË³œ_¡ò"ýÛùÕõëËœcÝëËúÿ¢ƒLxŽ>%ä«çU{ƒ²´Ðpº»bù–,ŽîÅi·"I_‘MM›s÷ÛïÖ7åJû®ŠMÝÁÄ[˜¾ýû7 š“³ë“_O¸k895ÊZ–g&™-O~ú%Mnð´`!6ùà –‰÷ãEruò½ï<áü¨7rMU—ë»|qjåèûó³ã´¡C~m)c»{[­wè: /-Ç qºÚÜË»Íøn3Wóe?e5þm¾9°˜¥Óic|¾¹:»údÖvÛÀÓr}³œ"¦=FT6¹xsýäõ›k\ imG§ÆŒž]>ûî b»útË…L VgôÔs¶Ú,ŽZhº^LîŠY½®¶ó+WãrUïŠjȘ!é.æïofëV”nÓr™à¢©ƒy¢Þç Ø,ÔÜe ‡‘R ]ŸO+pQNWœÊpñŃd›ƒ“iù7]z3¨}7Ÿ—n"âïýE„Ðb‰€zWWÕ²Æj ––õº~˜tY &ÁUÛº¬ËæÉƒÄWï!·éJ÷â@Ù¨·ø¸™®¶{ä³uƒÏÊbU©›O¶›é¬èqçZÇ”‘ w .áæã0 Þfù^&Èì}×:v¦¨¾;xjëySÈÇŒ b0vÀÈ:Ù =+‚Ü1eÍœ ªina‡Iîrã~ÞF *6ÃCÈ•~tˆw?é½Z‡Í®J£†óˆ¶ë÷1­J–öÃ@EGïã¶šÊ?hÜ iˆÐçµì‡Àúÿbÿò¤¨­ úJ"™`ên‹Êe€„>#qëŠ3T¤˜C‘‚b¦êƈyóͶË0Eéîvf4`¼Òìtêf§è K´…3¿Ýúà…·Ý'ô6ºÒ—ß­F’žVÅ;¼B=Bj}êl1C_íù¨AàûZQŸã„ó‹Tv»×d­»eøvæœ7Åg¯\ðŸÇ{ù¨mC"ý ÒôCE$«TšîXvÿ‚Þïün5½)w_€ázÿ¥–È(-û‰sÓàû¤20Ö”†qeÃ\Ó=×¼?ÔG5à b_ä¹É:/¡üú/õ’4ñ endstream endobj 2663 0 obj << /Type /ObjStm /N 100 /First 985 /Length 1400 /Filter /FlateDecode >> stream xÚÕYM7 ½ûWèŒ%‘E`‘Cì­@æÐ6È¡H¢@-’ þû>jëvçÃc­ÇIÛË,Çz¢¤÷HQ£Í¥ÄC.%‡%$Ž Á/b!ÕâM¨T74°’c$Hr#Å ÂÞÄAÌ{i ªºƒ‘C­Ù1,7£+ä`xŽÑ»)‡”9»UB"VÀKµYÅŠx pVRôÐP²÷­hÕì=þ´4 ­5ú¬¯•½¯OÇJr ƒÇâî}ð›…µ&Ì­€¤Z1†¯Ÿ²{©x0ùšt=Ðà+,ZE|ý1§Í€Ó6õñUÜ’fR} LÍÈû‚@ŠþZL%sÏà“25‹a©K„•¥6~#ñ9›’”|ȹ’¯ë¥"cz¸S´R šÉ-Œf]¬’¬¸…9sŒæÃ’¶„ ËšgèŸSób©‰ ÏL%ïð[ ÌÑ=cà¦Y¸0<‹{qa§Ù¼£©úI[j–‰xu‘a9§ Š%Ö¡¿e×\ñrÍ]¡Ò¬„qMË5׌VeX%ˆ"N“xß›…ߪG»‚©µQC‰® "êJö|fq³–’  5&1BðŒ9nÂ;Î3" "¬×W)ÁRÁTB©êœºóàÄ´kã ,WUÙ”³÷…%O(JÚ,ÊMs2X⣅hws³Û¿úã÷CØ¿øù×ÃnÿíÝûûÃûûž~ ÿr·yøx÷éÃÛÃLJdo¿}wøå·Ÿ¿¹û^û¶€ “«œ†jovðõN€ÇtÿìYèyx6’—aÿÃ?, ¢OxÿéÝ»7§qˆP£œ·˜m¸¹ û[g¯u¹EßAÔÛzîÖ¿ÜÝzÐÐþðæáÉŽo-ßëñMüíØæáó±-·¶tD&÷ÙÖ0µý‹wo¿?܇נõùmØ¿:|¾ÏúßeÎwá§ñý0÷1ÒÉ·ŒøFÄ žœg v¨˜ç)aQ3•bM´U™ú…y$èÅÂèB"Û,Œv&‚Ž¡$’Ñy`6J:™1«Y1f,áX¦±0§ÉŸÉT½MÈì#Т¼^ c="³W_Ò‚Ê\P¥í‚r§ Ü™i c2Q;€©ê鋦äåÜÛ÷ºûÚÉ}1…*9$ê:¥éêå煣ҜҚ6SZs¥#œ™Êq‚; $–Á¸“Ò'Ôðñ^rrﺜn] [¶Ó]:é.»ÇÈ¢k‡ÇTi0ýoî¶PŠëK±ÑŒ{ë,Å6®°¢„݃Ïñ‘6þ^9Ô'¥x%ð¯r²…ªñvò;¨Ö{@¹`ëFÉ? L–¿}øš'Ù“G¤KUÒTªÛU²N•lL>R$ãÃwsä÷Æúå¼ñŒ7¿ÓØÈ›_¤ôð6Æ­D÷x2º§ÀTx ÓŸWŠîGº\®D]P¢lWB;•Ðñ&Oe°Óß·“¸¼ú¡åbSž³˜âfSêcq„ó¯Vü”t˜Q*ÓøݧÃm½8®ôuè. t?­8jªsº¥“îq)“Êò?ØvsZàÍ6ó–ûNtcÜÚ¶;²`7]©kî¦k×)k¡ï÷Ë1ÛâåÊøâå'AÍó ¿ß,wŠÆ½¢$6HÒ¯yÀK8‘é¤0³+ÎG‚^.š-ˆ¦ÛE«¢Õ^Ñê,Óü_|g_ç€sô¡ù…ÿÓg«Ôwa3Æ!+´ ˆÐ/z¾™¤ÁÚUð8 Æ_±’âròu|ÙN~é$|ÙRP¨ëéK°'|;®0Ü{ø¹Î2{á'–tžŸ<¹³¤soIŸ©Ðù_,kypÈç…#*ó¥ºü ìø¨/ endstream endobj 2751 0 obj << /Length 1590 /Filter /FlateDecode >> stream xÚÍX[oÛ6~ϯÐÓ&£6Ë‹(Rö¦IçMÓØ-°5}PlÙÑ KŽl§M~ý>Š’m9Ì¥í†Á‹Ïõ;ä!¯<æMñãåÅOFŠHª´òt BxeâM¼{„Ô{soûj¸÷ò8У$¢ó†t) Eè)A‰§áØûì–I¼LÆžäÒ»ÊnlSFmïœJz%ß’úKŸØöU\ÆyqϬóeøB{LD–ï»bœNÒdܵÔ'Åu2»HJ÷·½n¸ì ÷®öXe<ó÷ÂH)¤7ší}þB½1æ!ŠˆH{_+ª™Ž6ó{j«™Ç‰¤äÆjÃ$ WÊ*¦‡¬c~;ïôó‹å(›uÐYb¨¬RƒbUŽ;>N³dúRzw™D´Ñþå1„m9.Œè(´’û'ã³ãŽþA‡kÿðh¿2y7r»a“Dqåõ8#aT;w±º(‹Õ2ÍëÅÛy¥ÐÒ(ž—ݼL»e÷¶¼,fËîíuý¥V1¤ÛÌ{îGƒVmµ¨ušãYœæOÚ?9ý8|ùþã \,µÚQÊ?8;xw·=Q!®+„·8ç¥ ™¤þ¾U,_m€XLl[Æã4ÎjœťíÍ‹4_.6@Mó.&’iRÞ‡zx¾Óã!è¶Í¶Èm›æyC6Ëe{Ál5™¤yñþ]ŒÙ¡Zkâ6±f…M ³à1Üv9JËÐ ©C7ÎÜUmt—Óã$_¤Ë›– Q1›c31£l6‹¿]´ºd6VXø>,ô°XeÅì¢ñî2É—kS$¤Êã‚w“·çÂÒë£ÁáYÿtزo1¹“ñ\ŠÝ©"ÙµIõÑTùËËÄvNÍl‘bšù ƒ3™\­âeÚŒ&l3eköGf]íbóÁºØLÞØ‰–c´Dæ™MÝL¥5ønÓE‘Ù-ߌf®üdSurô­kÍçÕ"ͧ®¸T*LúoÊ$É_ØÁd•¬ fÏçe[qj„õûõ§ëKÛýZù¢/pT"Üp^ÌA“ŽL$ÍfÏŠ<ÙQòmÃöF”IÓšÅw‘kbä$B>vq˜mRy héÚpb;œ8|ð –Ë'KÂ¥§H¤hE È"ª9_ -ãp«è† ‡Ó†¸kÔ¾‚Q«¸X³“:W=Œœ¤‰R…ž´cŽ-scI×~qÄ"³3h,:§‚;Œ’$ ~Ú¦ ‹J‡=.5áŒãt¤„‹ðÙ¼k’Ý¥@@8&h³M:xIÂù–—LÁÀ•öÿ¨°… ×TCMQ§yàb ³íhG}Ã4Šw"„?Pí9H†u‘™ŠíÔ9;æ7Ìà\ªêêŽ?ªYæ6_o@ò¶sî×›dС´Ç9Ñ¡lLåÜžPͼ´£Ü’:\Âa(‡_ŸàÈfa¸Súµ ]3«\ÂZñÞ<ÇX&YË+œoqr¾vŠÛô+Íšúú‡8»ð‡@ÙÖj[`/ Û­9€¤®³Ä‰gT»ˆ!jüû¡tâ;éÄõ÷¸Ê-+Ú9Q‘4F¯É6Góÿ$°å +®Sâ©Aç÷x_°¨*jO]JUKÄ£n€î†ÛÙ §T‹!ú¨·ød.È$U -ù0bY °gÕVè‚héT7 JCRý¸6Fct‹Ì}s*Â&=eà)ÜÆ„†—A"dñúqÖÛØwÁ^ßûsJ©#5B„\54ì¾Ì¨ („ü‘ľDŽVz}ÔW”p}”„áˆîˆ{TCã+ªÉÄ¥&îè2XWygN qœZëÑ–k[eYUZ®L]ßJÌWsáZ-ˆónØJºÇMdë`}êp±°«ÿì†ïÏþþñkoëaç`^¦YóöBÅÓÞ^8À+q¢üÔÛ (D°y{áwÞ^PœÇ» ¨7(³õæ’Y·ì¦Ó9íNç£î¿Ùt^vo²ÙtÞ]Lâs…NKòú]ì·j­Åݽ÷V¯7©}Ë¡÷¾áÀ㦢{ÞGœ+Õ6Éü²È‹gzé¹³STß ©ÍQîèz#`JµÉÿ„ endstream endobj 2755 0 obj << /Length 3211 /Filter /FlateDecode >> stream xÚÕ[[ãD~ï_‘yÚ´¦cêê²A<,,´ifhi/ÀJ™ÄÝ1›8Ûééæ×ïwªÊŽË©¤{±BR¶ërîç;§š÷>¹Ã¿×“jÂðÎM¢™ÉÌ$S:a*ÍÔ¤.&·“o/&²ÉõÉß/n.>ùZeÎ’œå|rs‹!KR™NŒd‰ÆN7ËÉÓª¾œ‰Tèé§—3Ÿj¿yWÔn¼½u¿õ|YÎ×n¼Û–UÛ¸ñíÖO,æ‹•5»bQþûL³²ºÂ‚⮨é©òß1æôïåO7߀Ü—‰VyGQ ’@ì9’†dl+÷[VU7m7¯ÛpÁf{[V³¶¬~ më%i[Muç–妨šr{êˆè– XrÝo8”õ¦hV%麘¯i2¯žÃNy·c—3®M¯þ²Z¡äÚUáO\më¶h¼`¯_îf÷Å¢í(;Ï­vÞí¡üÆ»¬‹ê®]Źªî0ó;?¯ïv؇³ƒ8›Ýª¨ËE'Ñ/Ц)üøv_-Z(ëȘï‹úî1NÞ¼Z™¢9¨Ð#ÅB“û8'ìÓuµk–W–£¸¦f±-×›»ÝYWóz³­ÊEsB‡†BÊÛÍn], 2{Èté>جÚà%‡BF&‚‹N ?Ç¥ÎM7ƒbœ=±¥@6f!r`’wËËØ21:Ð8yzE½#¦cgÌ„L‰ˆ$9¸IÝFïÝL!&&É ó¬@-Pïá÷ë?KfÍX"±ñÌ$"ódÿÙ,MLÚËå³È>4õ¢…»rõÆ,Q&©â˜nŒ§ýsÏe8Û0ÃU’)O׿#§ºE»@ùŸ–B¹=„¨—&ƒuB`:ÐMÀã ‡ A121ÜMd1pˆRÍ“,—²>& Àó@ëÈ¡"IE/·—"zO$“ƒ~dRDOL±iÌoÖ¥|Ž.QãñÉà8Š#1T‚XÓmXÇýNbØ! oÓËjYŸ0/)zæ^FÅélÆOù%*Ffƒ2ž å8rwxX:LûWTÚðð`3ÆNe2=ÜÍFÅcêœK µìTôYäp…Q/VçÁ¤b¨ÃÏbbE°a‰`†çf~@5 ƒ¶æO»c¿‹ð!Úx¡¤g‚eš0O†³(?«:¨Ôg$’”ôµ«†hĘ´Ežè<{¦¤¡„DæIN{9wø\Yº\è>`sÖ ^#÷9pk7hGܺDd7ð©•šô…w°“²7 ßUˆ0= Aƒ`.ÆÁ\&¹ö4¾ŠÃ MÁ`0íÊÑá©Û:Z‡+ôúê!¨}åÁ”­ðbðƒK“pÈmJevˆaú{u ~ˆß~È_ ?`6ÙTÈóy:Ô'ÛêÁÉHL=Îö£Ð˜€3y<:Jp‹IYö\à c²—,%Ùf*„=#¬¥1AZÑ7퟾D S £:X`–ßì:*2•$`8|ššh’˜"µSÞ1Ïå‘GêÀÑ`£s ¤ßì:&w¨;³‘aøãN'3fjX.¾º¹xÁm?F¦±H] ž Û-6?üÄ&K|CM™(¤‹væf¢àR”/דï/¾õíô0b¤ ~‚pv;%f!ÆÁHK²xŠÔÅÅÓ1èØ…£1(€§½ ÄIxO¦Y*8ã)’ÍÃî”Z|ÔŒJ®ðÔ äêŒVÊc‘e‡c탬¤ÕÅŽhâÆIÂ:f?gqs.³ Rm&äÙ‰P „†Ù§`}#;Ù#+eèK™þNCгñ§›wRÙê£@ÿ p €ÀWJ›W‚ŠMÑ÷”PjÛµqÀЏápÐÌÆ²$5]·µÜÄÈQa"éÁغBó!¢5ÌS/"•%êPNr#ŒJ©ÏÇOù‘ñ3²M:êU¼0#+ýØðúGóBÕx£©Ètð›æv»31S"!is6hj™M¡sD;j-”F=~FHi¤{RŒt.Þ‘IêŠñ•c÷\?‡/€_)GÉ`DH·Ù/RK´{”vˆQÆ2b`%3!ÄÔ¶_¼ˆ·Ñà¶Ä¯Êä“…j>²Ñs…ªùÅÈË…1°Q™×T_—Ù9:=(ÛVl¨œ*üW×4€Ç”ż)bá‹KèC`º>…#Eš!%Š2FeJª¦uû»Î»/ì🮇 ¨D¤)ÔðÜÒ·î=Êw­å¨VA6XGýéµggë >…lž™X]cò)ݺѰ@±/l`²ÃÜCaÓ·b}}c7ºs%Æöò…VÛÆ/>n7~²-2†ç,KŽ,ê¢Zø7^ƒ–º¶¬,ªÈ]ˆÛAóŽ+Œ)šÇª2¼=.{ú—©ÔvÏÍôfe9;â‹[kZºÐŽÆŒàžÁRà—6§û­íòjßÐÆow6¾âÄF´'Ë\†ÂÈ@òîÍb^¹#Ç[À"0nm…æV~uQo÷Ê­¬“9£N?WUÙúõMÑöóbe»Q6Ð<°Íî­Òì5«½ÁH§¯GjTò[4rRjýf º—ê|Û]ÅÚî!·Êz K<0+£ûÑu' ‘‡jï—fd7F¢ŒŠ àL î8Šd&D9FhàâËëxRèa“UDTEׯâYŽ3ùYEu[AQZÈPQâȼ]ãâ@×qï”e¶¨gü\/ÅwA}ºˆzJ¤MÖµ˜ÞDïR±»ÔUjáS g:l`èØíبF8טˆ£Ô¤ÛD*q¦1ïPàl0í™yÖ™3ʵŒ~⌠ž0C9]ëìÏøOÜÑSh3ÿÁ¥žWt®ã2Îr5*:ʼn¼<co¢fkRýôe"Ndð§ÊC©;Êlð7#8& |Ÿq|C¹8[´£¨”p¯º>ãÓÔcÔCÇÓ• /—£Ø‰_´ùÍ¢’6f½8©i² ññªû zt{làËÔÉVçC¼Í²™üü ̨ÝL&¤ÃëÉ? @ágqøêÿÃ`4P ®©ÞÿOGý> stream xÚÕZësEÿî¿bùt2¶–y? ¸ª—8†"@b(r„«Z¤µ½”¤+‰„üõ×=3»ÚYäµyW)g_­žžžî_?f~ÉhvÙ*#ðOZK¢ÎŒ9ʈ¬)³ë웄$»è®ÿº:ùè•%¹%–fW×™f™æ$—ð£«yöäXÍO¼úü£g‚÷ÉË™¶ÀĽð$Lf:·š8 “k%³)ÍWžª ŒDŸ‘É©±Yê á4°c=vTä˜LäÌBGuòôêä—ê&N3Êd®…ðœS–Í–'?üH²9|ü<#¹€1Þ:Ò%2âîÙ«“o¼"âñZVLå†q?$K©Bæ‚ÙŒÃt©§z™Ô¦´ñ± íkã"¡ “K­#^Ëâ§‹×’Á­b}vÕæt*8Ü”«²)‹ßücÞÖ§Sf&þÿ¹7;…ûÛºš•ùéTs3¹º-ý—õ¦ÜÍ=­'*š›ð©ZùkSΪuhŠ…¹Y³–nƒbÃTɹDýð\ ëe½©~E¶%ðâ\L~‡ߒ¶hs+i6³¥ÔvVĪ“¹°ô’ëþ:¥6•3 ú푽!’„‘YŸŒD!ÑRżlnTGl(èB›É§©yPp0qò \¦FE-šÑ3`÷Î@ fÀØä,p‹h©·ssâ* ü}ÂÀt5 3pªƒeþœ˜¬§ÒíØŸ$810›N|°/Ê&ËÔ$(Í-Çÿ’±/GìÀ•¥ìk·6Ÿ¬Ö*¸s`0Æ1WV lüÞ>$‡ë9€…œßÀâd>ú·â<ÁœÈ\‡&¯hoI ©#SyCIf¥»ÑÌEKÙÓ]µx¿âàÖ¶]Ú;XÏÉ!Æ)cÁ#ø1¨ç°v”ÇX?JasZRÚØw.C“x¯aØ.ò¥±žƒÕⲉR][Ã%n„‚<Yµ©ÊEB "XA¦ì‘2¸Íœ»Ú–—[÷&KSˆ¬3ïÕS p‹€„Æh{_îà „¡Ú X‰".?õ’$™$²Cþžöã;pl‘΂»eùR˜Xpö«náö¢)KçÎøp½[ͼ;ãS±†Z¸háßTn{[`H'Ëõ1ã”i€„”y «ýu^nËfY­Êî×þfíË÷-0ƒë¶jeªV{BT4ñ…v0ý%ï ÛU«é¶ гA9Ö ÅmÙ”›æ»m(^g(`¨úñ¹ý­“Ç¡ÝÃàBL.Ã×>4|ë°™oÙ“«  Xó‡àÛ—W©’#¹øc2‡Q§^½ÌaT¢Û¤xI(óä<…´Õ©ÇƒÞ™ø ™X”Å ìXúÛ²â`dÇg{¡é™›=bžùÆ=Ôx¯dŽ­Þ‘ #€.*ÄÖ¢J›gf„>`l †éc˜þ^ aõ±Œ W3s:¶¤K«ãs’µ}Üÿ¤ê Ÿ±Nq@KÕ²ƒí$F¡VTGpU EÄËîMóé½>Kþ_Üd®aonI+„‘ ‰ä[ôp Mžµ,v`‰±€ŸÊ}V>O å~ÂïUÈŽÜzdgÉQ£Òê°çôø,R~!r ©¶'…|[¼LVÈ\›dc$îu¢S`³FÕ4šÁ`’ð#tYBÍý52öˆÌŸï;|¬ï`ó±4:[rojÇ\§G–N•¹Ä™.(d®ò€s%]|‘Œ°¶?xl€?ÈÍ!_Ü7KØëÝ¥/Ao¼ÈÇx«Hh‚K7½äÞÛUXÓÉžW£…ÖÏU«&¸t[A#â.[´ŽÓ> yTbèItí r(¸q08Hd {ŸÄ!¢·hcc0I EèvÄ$1ûµG§)!¡!¬?M·Ä†©@4aº$UÉv ‹îwš2Ÿ$”ªeTµÝ©”¹ ÌmÇɶŒ{Ê%Bu7‹b³Å;9ÁjƿÂ("ZÖ«:”5‹ðªhªï¡ÀÃuS/£ŸHWéI Õ\¶þã~ƒªÉõäÉbÑþ¬4M¹,ªÕ¦/ˆÄZçnÅTÌçƒJç¶^Ö7åªÞmBùT/vû>N}Ý5|tÔðá]Ãç<½~9å4‚? z~¼"ôX¿Ïº~ÕØ<Zζu³ñc¬‹Û¿w£Ôí¸¥ÑÔPÛ­‚4³bÞ–ë¦Ü”mÕ‰¯î°}[moý§Â¿XÕ«éû²©Ã1X@blœØÔÈðM¹=OíF»8p†¥‡Hgi…õm~}ȼH—’n±ÃÛÔcp.¢ åmõmÕ”¡\¾nAÌŠÅl·(0㣓ÿî³z·¨]>ø“§^Û¦zÎE,Êe›Êå^>…‚$Í`]Q¹mÚ>ýîòÕåW/<»ç—¯®¾zùÚÙ߃ð àrí Üòè֔ŧ"™œ¥5ãåÿYü.áå^v0 sä7JòÞz“[ë¹3ˆm‚Aµ~^ü?x~Ç] endstream endobj 2763 0 obj << /Length 926 /Filter /FlateDecode >> stream xÚ½WÛŽÓH}ÏWô££ÅEWõ1H»0°ÃJË2‰VZQÆÃDÊ '\Ä×oµÛvì๡MâtŽërªN¹òI øÈÿ¯ÄZHþ3Á‘Î;ᵩ­×¢,Ä¥x;’ ”âUûþÇtôø¥#‚ (¦—‚?9%ÁðMÓ ñ.{q:y~~öÏôìÍßOƦ¯¿DÓÅK‘“|‚?߬Çä³/ñ¥(÷»qNAg³ø¦²²˜-ÓÁåçõ³ù8ÇlÏ‹ÍúQ2®U×8’òŠTÆ¿' á 8YA8C§EŽàœK(v”­†‚åK‹(:àGã\IÌŠoÛÙú¢¸HÑ-Ö)Þ}Q®vérs™¾šoVÛeñ-î¶WE¹˜7I]q&³rµY/æ»Öó°ß$ø,V,pp´2¬`tHuŒ*¥²«Úbü¤Sœ;¦‹] 3¦ ¡†±r€1 ðç{2ä67:f¢ ‚·7;§;;W`uÏùIí¼C0|#ùx’p¾"˜{3€Çº5Ÿ5g È©3JgO›3 `•»ßÍ5;œã!gÔ ™qÅX« #lt:}a%ZD©³Ö‚ãÄæ«Ñ»R\ð—ì´²âk]Å„)Äû–b2z›TL¾ãñ`ˀƚ“í€OÅ–¸’gB8ö©Lh}j ¥\v“lMž³­\R].Ý-‡¤ø%‚|—Þw¡éâ÷ÒÈ¡®ã˜4=ÜpP •évÛo,X¢®û^"hXjxRÊ!³´7 ÙÊœPL]¬ÕP¾Œ÷!¶[ ».iu”tBõZ,ѱ÷,Y~ س.SŒ¨ãê_?tR•–Z[üÐðI@Ç&cëR;ò倞r4ü€ÒÕØTšnW”\(ý0Šâùê<Ý®(Æ‹¢(ìZßCQ'÷Q”¾VQ‡®èײ×Ñ·t ¿ìüÝeG,;‹ì|’¿Ó¬ñ¿NvþfÙõ¹ªe÷ôβëϺã&³1IÇjö¿d|«ŸßT®%EòÜP73Œ\(éÈI"N^3Ù$2OÐö—€¾Å\1k.Ž-Þ‘¼­õ<)Š´ç•›Ïûź¨=øž¼Û¹ù±X—ËÁx•eÛòA‚ô7û<`…ɉöÒ$äùé¿gÞíSžM¦oÎÿ«âÿáÇÂqX¼oYf‘µZ­_iýçåv×hC&û}[.–é’¤Té*6Ãë¿^4µéX?*€ã¡Íƒ6×x‡i¦¼—½»xöþå]ëe endstream endobj 2787 0 obj << /Length1 2180 /Length2 17536 /Length3 0 /Length 18828 /Filter /FlateDecode >> stream xÚŒùp^kÛ ‡mßacÛ¶ÝXwlƶm7¶m£aã¤q¿ìý ûyÿæû&3É:®“ljk­™+ªÐ ™ØÅílé˜è¹"ršLŒFFzFFfXrrU gkàÎaÉÕŽNv¶ÜÿÐq:œ‰:(ÊÙÙ¤]¬L,&vn&nFF3##×í¹¢†®&9z€´-Ð –\ÄÎÞÃÑÂÌÜù#ΔÆT&..Ú¿ÍB6@G cC[€œ¡³9Ðæ#¢±¡5@ÅÎØèìñ?.(yÍí¹ÜÜÜè mœèíÍø©hnÎæe ÐÑhø‹2@ÞÐøojô°äUs § TìLÝ €k c ­Ó‡‰‹­ Ðð "% P°ÚþKYö_ ´€ÀDÏô_wÿ¶þË‘…í߯†ÆÆv6ö†¶¶fS k @A\–ÞÙÝ™`hkò—¢¡µ“݇½¡«¡…µ¡Ñ‡Âߩą”† ÿÍÏÉØÑÂÞÙ‰ÞÉÂú/Ž ¹ù(³˜­‰ˆ ÐÖÙ ö¯üD-Æu÷`øws­líÜl½þƒL-lMLÿ¢aâbÏ fkáà”ý·ÎÇìŸ33 3€‘‘‘ƒtÝÍþ  êaü[Èô×ñ/{;{€é  …)ð㬗“¡+àìèôñú§à,ÀÄÂØ`4³°…ýãýãhú/üÑG w€6ãÇø1ÿúùï“îÇ„™ØÙZ{üQÿ»Å BBZZ²B4ÿ¦ü_¡°°;À‹Ž@ÇÌÆ`bbgp|<øü¯ŸÿVà?ìÿ>U4´øwvÿð(ekjàú‰êý‡ˆë¿'ƒòßkCøßòvó PþF6Fã_LÿŸ—ào“ÿ³ÿ——ÿ×ñÿ¿‰»X[ÿ-§ü—ÂÿÜÐÆÂÚãßóìâü±rvbûU5€ÿZha;k“ÿ+“r6üØ![3ëÿ–ÑÂIÜÂh¢hállþ¯!úO>œ[[Øíœ,þºptLŒŒÿGö±sÆV—ŠÓG¯þ?VêCŠÙÛ™üµ{Ì}7tt4ô€ýhýbx1},© ÐýïÙ0ÐÛÚ9˜>ÈùLíaÿê(;ÛÇ8ýuô/Ä`þƒ8 "€A쿈ƒÀ þ1$þ fƒäÄ`úƒX ÒÐG<Ù?è#žÜçGÅ?èçòôáSåúð©ú}0Rû/âúðiøqŒþ FÆÿEUŸÁäðƒð¿ð£¸ ÿjü…”LÿÀ¿Å}–¿ ë?ü%·sqü‡ý‡ŠÙ?àGÞÿ€‰[ý~dnýø‘ºÍøq 0Øþ õajû1=ÿp±û/dý0¶ûñGnöÄTí?6ÓîÅøxÿ18ü~TüL˜>Rwúþ/tþ#¡u§[î¿>t²6t2ÿ‡‹ jûqO08›;ÿQ¾†Învÿ0øðáòøQ×ÀŠnÿè͇µû?à‡{Àúž’ûðä tüW¨ÿÙ5cGÇ÷Ðß·áÇ"þÿýÒÝÆ°«KvÆ%ö!oì‹QÞ ®½yµ5B…¶'(u¼x¿êSž=ì€]™Áš.<j$€Á§Süáýæà­`ÞÚ-Mžëà‰¨˜öè6 áÞ0X¾>²t¨ô£†]îµ|Ž.Z-J' d<Ï(k›ä“345ê•;ÒÂýÃçÑ,E^Z;Ì1O‹ž›•ªÌN=8d8ZØà÷¨³^ÂÇÉÒXË^¥ÅQÛ|ËÙá±#kAñ‹2ê8$¾ŠØŽAet|þ²Ýhd=9nÆŽÖêÆÓòŠÏD Ð^Á䥦 Õ¤£¥úYø~Oo¤*ñš &4ß{ {Î/Ôº©½ãc±¹™¢¦løÐöº²|Ù_Ÿ>1TÎJÈB&™‚l‘®É+`ÎMªäùˆ):E7ziþΣ/þEg nê]ìl£³Å=çΉ¥8õb¤Øxœpùó­¨;Î|T»©ý#pY¿‹+lÆ™ù%¡™ã:ˆVŠKñgEçˆtê6ã"º¾˜ÆŒÒ³‰æ91þì âü[V×Ïru¥ ÔsÖŸ@åHÉh8Ýùú4{?ý™I|Ì€΋ln»î5\—BÑ-m›4=†æù~K¬)ÐMÖw¬#ñ‹˜‡Î²¼¾DéÁ•n²†\f¨ŠÐ½æ»JþéS¹˜=–®Õ³TÁ—ºNuÊ$o35ÃÁ¤¯qÀ‹‚–¤§7H-?EÉ«oŽâ¼¿Ä¤óë_Òyðvféå}ÏÊüÕçk e¥iôg¡-ç÷`ß¿¸Ê¬æ}ê¸@§É^)9ÄðªÇK -ãž>qvBéo}¦8má’ Uï(ztµŠun¥Ã÷ö¬èÖÊ·ÈàÉ–¯ƒW!bà|Æ!¹‚žE.“ZãèZà'©È.ÈÂr>Ou㡞= ³fƒë†GÖ8xf V!$~+d¦n:Çû´0i€ÅÉ­×pc­V Õ$•' íV†»7a C¡udP‚3[–ÓµU ïd" /NùŒÙJíôãan&@Õ„kAØp§0ùkðšvÌ„á7²d³z¦ŽWS$(ã$(ÆŽŸ„†ÊÓz(”鯲X–(¤ãÄ6n[̤¶ãŽ»dÞ‘¿gUQÊB%&èÎxUh–ü~f¤—HrCk®5Ûht»5²ê¯Í†ƒ ¯,1µä‰1 ³&¡a?¯ è3ûëõtBý´uñ3gVE鑹¸#ÿ¥’âs©mŽŽA½®RdP ÷1âÞf[»5Ž-£WˆnçÕ5íÃZi‘Î2v\mš5±Ò¡Ö(¹<…sJ„ézzÑ×]Ùš½rl{ê]ÁGO–Ï%Å3IìÅAWÌ)Ÿ"ºÉ!i(“îÒ­ü ê±E·ßêGÀ’¬(QGãcb­R‘ík ôN„ûŸC±÷ët$|O¿ é?”Ç7¾c@¿ “÷ ùR¢¯ÁJ».;!"ù¤s9,¹ý˜ÙñÚÏeA­žršJ@‘ Jƒy¤P¢ë·ÿzô9œ""MŽ¢ž£¥ %ÙYkûBÇ‘ÀÏ›-I®¤•¤á+uW R7ÁùÚ)omÔT’hLTm‡ì­©%Mâ·ó±®ïÝã g9£Y$îŒ}¿ÌIÁ+¶]´×|vWI–aGM¤¾‰QÃÐ,»èþt¥ïuvoƒÆ(ƒ¹Œ·ëýb_SìcJO”†;j¾‰K‚ò+æ#*“ÙÇlE°´­‘"ñ@× Åƒßmö~¤èÌ ë¿·â?¶Èêì[=GAGs¯:3jséÀ+™­‹Ц]ª·9eyö$½ #øu HÎÃçñ[— ]N7zªˆH¶˜€×ÉF—²Cd%O8öé€mèÎhæŽX›-€}·Š×ýBµá¸zÉùù²{‡C2'·Ãt ªÓïó@3Š#lû^ó\LCŽÄèR XQ>¸–o†ÈQ l¤=‚X¤HÇ.K¤Ï’9Ð6y dO í[%ñS€È«¶ûĤ{µmŸˆi©ªE;=òÅ£Æ2õÅ!u €ŒÁÚhvÞòêÞoŸ3ž©îoõH• ‚…ߣø—$kü+{Ï^ž.ËÖml¹&˜ÒžéBæ¾`”i#ǃVþDè‡?r¶ä€ƒf”ÛôØó,úA»+ uÕ"øãY]QØ‚ÿö`æ¬èò|Ý5L]|QGÈܪÎ.µ¹r9“‚èXÄå%õ§î!‚py)\%×.V0ÏŽßá¬Ë¿l¶œT¢Y§ÛFºÃ«ÙP¿y/'Õ(ÍïWž¶( ˜S"ÛÞ ±×=X ÷áÆïé°UÕk½:k`õ%/ã"õBµ»€hÖÂÃ{{)1¯¬Qò×Á€ƒžç0Ì6~þn>`N ‹R ]úgFÙíŸeØ91¤÷ÒÐFèíÍ0<—`Tç+¶ê –èD>¢˜þ©Nœ•v¬R¤¾%omåôÝ:~¶©h´ ò,Ç–{xwdójsâ}+õq•‘jŽP)¸GUóCÕ„{ôM»³Ñ€_A1”Õð&NjR|—ºÏóiÈrÞóéßL¤u¾”+#VHxø#µ°šP"oËÇîã·z‘`Z?éDt­Fª9ÕaÓA/¯„.ùø¦ïêz~Ô‡6î÷”À_•ø7|:CcµÄOï¹ýÂÍÙFœþ3m³šKireµß£ªPWJöP-`ícvR#©†/Ëàs}6™nÓáú–cÓ¡xyüLhkôæÙ‹M³h{ì§J½¯ª­:•9Û9šîù-àÂ>…5×zÝA ™Yòsùø‚µæ¨ÇY5ÚÂâ¡][´²ä 6jø™ÇhÂ@ÿNj²Z"[;÷]ò}ß­:Y—v¾voÔ[pª©ë{dt}6ŽÒ'Ë¶Ûøç †oŸÌ:B‰ÌR¶í¶6ˆÉ ÔpÑ{:ÍËÊ:6(²Ì÷ÇmË9 Ýuù%´€ÝÆ´ï ØÚ3añSú:1Îã¼#Á ¹Ò”}ª‘9èHš¢)%Xç‹EOÆòˆ¤w™[Ê¡øÚ­Všä³ª#uˆæH”5ö<†%m†ŸÕ³Ëýc]T·l E™qƒ‹ÒKŸ|NÀ­© oÀ°þü½Ô ŠË šs)6ro`MU”Böë„·þâ;ýhen¼«áéŽÊa ‡ù„ø¾,¼°°Á…³U¡ŒXß!R“¿N˜¤2ÂÐ$‰xÚéOMäÚPï éKßC%ó «nWVu¨ùÂ\PŒTö©,ÎëÒD¿>´Ð”Å/¯z+ßè~ʯRú¤øÀ-&Ðß~Ó°¨À0,œ Âãu ,À¯ÀõÈÔg­\\4]Ê#Oò»ól!ŽÂ–ø†e3äJOWÐÆL Ûœ4ÓqÌÀcf«¤3_¾…P_Š%Û9òt‡-vL3ü@‰ig?Õ.…—E^º@¶kíÅkQ…¿Ù€.ËO¬ççëD¾^á¼jŽ ‹ËÎ19Œ¤ e$šµ{LtvÑnœWšœxS&ÆÇ×!ÚŠsBsû}ûXY³zÎÞ^¡± ‚¦Ä ƒð³žÜÝš"¯vé® ùÂWØ|oG¼1›„Y§M—öÀo¾NÐHYŠh-~D=ñ…ãu5zmÅ ®Î^E€¼ÕÂ{<òÉÙDú¦ï‡ßSæ–ÓèŒmî×äæÙr7fÖ-äå࣠Q_mªš'(3Ö’<–ã·M {ùÀ>r¤$‚UžªNç„ )Ü QØöǧð§èO}>nré( ^0EÓ•þŒôFe)û–ÄZû1‚¼‘…?¾>¼{z,Y/Pý~#©¬_ÝËä¡MïölªÙØÍ¥]@¯2‚ƒ¥øPùgíy&ìpãð¢Ôýº¼_"‚ɵë» D.Ë>8–EòS]ã¸á[¿Ü{ïq×ði̲ù‚sËwܧ7!†ÿÁÈÿ»˜g­;¶¥…ìàZo ,—ŸöK&=øËFb!hz9h¢D?V;ºe-ȦŔJe9#Òi^TEªJÕ¤Y—Î~kßKDÚÙæ,9'}(:ñhI£À·ß¬>4ƒ£wy©—&"Ky<g„]µþ…CƒZ¤BñØye —sÈ@±6~$°neÙr˜¯ïþ2+‚dÞ«¢Ui‘ów Šò Ÿôf’X¨eîNÞ6†Z¨|æÁ«¥OäÌHæÈØž9¯õ»Ì*Dœ˜Eš8he²r³ §:¦¦©r$…±nÁ?#n0‘‚öÙµW$·µ`aHig)þZñ oaœ@Þ|=Ð+d}Ãe'˜O¤²$P(^3Ä "èÙy¼EëåVÌQp¡m§„ßC Wçwóòºí•òY $N¯¿[ V*zã[=`ú±ˆ¿Ÿ‡8ùPk¾õ¯È[–¤ÝÛëúù¦qòöîÇõ¦²4X¶2g…~%Oå⟺"óôÓëëã·‘í—•ßçúå~ÖЋr 0\¦ú4M¤öJ%J/0¹²ÄÕ™UcʪüÀ\~3«ÙÖ6íFJˆ¤¯ì‰­5áBå°»ãxF{@¼‡f1ßW9ßÎ8RÄØAŒwÿDÅ =>@¾”Òw§¤Ë»`70a:é»dšÁçù½]z ¢R”Xk½kQFotθ÷×)å!o¾&öp6}Ö1ÑŒäI‹$fØ0Hp™tì}¸"Çc|é8a¬2M«±Únªê.(e6Q󫘌žÉ:ycÉÍ»J$½Ì`y…7‡C¨Û¢ÄÎJÆs6ÙŽzø¬|^×Ê»µÍ»³ŽTˆßNJTûÈd÷y!I˜ ! Õl.¨<DZ4GÄÂ.GÙá’L£'µööÓØ$6й!Ú¨²9&–G/VX¹¦FŠœúj­HÙäÑäx–Y÷q™)íˆÎÊÒåí¯ÃÀ¹ÿz£f>F•{¼ÝôEÿ®„þû–îë’ÍUÁC]ǹ¼51åüjVò¥òË‚èbg¶.](è¯Å[SªÏ箯¬Ó½bÒê~SÚ\Ý6E<`açŽqˆŽ`ÄÑÀóÉsžFw½¹‹À ùÀÔ‰´“Êo–ŧ¤ sñŸæ¡—ÇF‡Û…Õ%(ýv,°´¤J4„x[÷3øjÙjÐNÌ@P¢ÈTÇ$ÊÎPóådÙîWA¦N¾ÉݺDÐÅ€²/™é»>ƒÁÊþ°+«iÊ÷•¢j”!fѼžrûŽ "«ôëÕëWoªó0‘ïÁxH‡ºD(G(µ÷3‹Ò(š÷fýþ&°°Ìþ®Î MS†)õŃڌ!ñr t£òTÏk®m9’h<ð¦á*Sƒ3²^宩9D &eÌ Ó󰲸 W*m¼Ç=J£BØØñ‰rloX² Ar>â¤K‘R³¾§›iuû³O¥QöÒã|KÿÝòqò†‡7䢿~{oHhõó >§ ‡‡’Ê™ËÊeâ´¦ç{¶ÍÉ*‹ûò]¸… qt•“KäL¼IdÃ*Ÿ#¶H¦À­ug`Ò„ºŸ†‰Çæ:›4R\Ãì±ÕÆãÙì#œJ{‡¹Ê¦LÛA4U+¤?¡ÿòs9nxR“u«Ñ®Ó^í»è·”W£@Åþ}q¾4?õ[õ—-³p~®²_3“ä ÇISâ@î‚e ·[D¢5¤¶$À‰ Ð³ Lº€YL„ü7‡ÓVzNdªXÕ¢I˜AcÔÍÒTe•¶i™±Iî3+Ö‚[ô èdŸUÞäõÓ±&ÞÓ€ŠšØTd¬ýrãoS6A¡H˜ü×Fè§ ºø]KÔê ±„rUÎkK´*WfúÐúºM¹ŒÁÕ§tcš‹ž Ç4ÞñÐy¦úñŽºbßÖ· Ö3cÌâJl`u›äl ~§@»RÖŠÖ34Þ­ÉU øD.›ì]®*Wñ¬KdJ÷««"í¾{è¯Wýn1+°ñÝI7¨×bŽ:Þ óŽ„œñ:’6NQR~,„w°5¡ÜBZÏôH»iy°4P-—‰…ظ• õT6ܸž'P|­+XND^> sÊìxJ³ŸâÕŽfœ(}ó€i©žÞÅÒ—)kç[=š N—DÿFÇœÅJ4„ î&)w@Ô«3ZºªíÚ^¡ÞõÃy?wüu¾zí]ÍÍÝ‚¬)'¬Ð«æ‰8º!ite(Q#*‰X󓌌ÕY¶³ ¹FÚ´ ¶SêB^ [d)Ó¡É^& …v¨ žß_$ÞÖ: šãs¶iE£ÝÓànwð‹÷¹à2”C‚z›ÞM ü´?hN˜ @XøåãÂG‹2o O¥”ß4üÚ üÎÆíÅ|¥²~§[7ÁG–ÚÁnWzùç0 ínõr‡õ`S]DX8 LöèÅ}’ÉI¿¬‡R‡yl_ë K‹~~VBà׿^À)7+ªÑ¥¹™ó‰eÇ>ù•EÔ6a¨‹âqI›Eþn×éÓ€óÚtyo«*<ÏÑEüK3’F¢®¨h ã&Tüb¡Ò«6Ÿ§ÿûX‘bµŒˆšC¼U.Hbà>é4ºÀ‘U[-•ÌõÏ |eÂÚa )"å/W%ïs ó§KCµgá—iûŒ4‚S ‹ª›òªÃwXQ…ë†Òî¾mœ8#.öMùÞíl—µ8¿É´©œÞäMx³HcjfvNÔ*ä(9gӌĺ•Î$Q?!;Ó÷™²áž/åõ«¡O¬ÀçPæ¹ïûMç(X,Ç´82èÛM‡«pOBˆüâ”y:dÎAm)>È>¯B4“%´QXM­(Ï5Bä‚VŒËíÂ…j}!²ëNš…M] šQ@·X’*àÌVVS)õÀd>ݧ±&NH ¯¾Ûº‰ÔŽÍ ØEÑäu˜'ò‰}{sUn<ŽLëŽ6Xä(z-¤K 7•/¦w¢•™/$>¾ævpáüaGט<:±¹>eƒµŒ°º•Ñ‚}­pì †+u9ËHâ¦úŒ×‡ØM7QojŸìgÍKí„<1$Ýøçgg~f—)î"µ±¢‚ÞJ°o3ª.M‹¡Œ¢9'­«‰(I5vZÎ;G*Jø`Mâ0ILÕCލh4_îÐÏ*ëÜyJù… ûƒ™j¶Êlj>¹jyÖÌå$²p‘Fâ®6ºà㿈˜¾4Õ­écF¿&Íâ&Ýä3]–¹„@2¢{ AÛß¡<•@³&ö¤¥¾`Õñ…:Í‚0ººb‡ño†Q{Z~ê:bAN(ùª–Díc”é¼B?î±ÅG§W%sb5Åh*}¹3˜½‘'ñ¢Dâ©UÛw™ ˹½Ëß²_ãéHc]Ôð ,tHƒ¿bêÝÚÙ!Ÿa<ùÇ=¼ùZûD=`C F$vªGP 8øk‰ª†Î  ÔçN&÷h-yŒìM¤pž¡”ÛRb!¸‚·›7æÇN†dÙõòaê´[¥2'æS¿¯¡óàˆ¯<æÒ9e>b¹?éîåüøÚù…¢¹¤A®œš«S’ZX„‡ö'zd~ó™W5Ði76òÎlæ<Á£K.è9§{go¶çšBˆÎÖ0ÿV÷%EøÕ¼ü9°`–™ýûE"FB¹rb G‡ú­K¨':I_¥1ø¤P¼ô`TŒ³½U:¹oµSµq¥)£ÞC_÷$SÛ-â&ó9¨(.¤ YÄûbŒF»r½ÎÀ?ÑÁ‹¢ã„rGCx ÉÓ,.í¥ð·zä÷§„Ñì_½°«M’¸^Ó)[gøíâÓ‰ý·d ㎃{¿ÒAT¡Q~ºÓ™S=|VÎQUŸ­H9¤.…’¼zÖgë,&#À¯ˆ€xÕeK‡]!ÿø\ÈÎ#¾;Ä2‚:uG€f FÿÓ ÷øF«Ñ=VÒÿ¥’ Fx¥ÃIŽBcÛÿði‹'2ù˲¶ a:4yæH°1®î//*Q‰®ß3F_êÕ'q¡(o1¸ô¼.¿z®‡TCeÜWÎÆ”'Äü˜Y?¯é¾ŒÁ†Æ)Ñ ŽÆ\oÄ7ŸŠö‹¸Ô+ ò=ä:H—²¼U}Gîƒßp<$¾™ïq›"ˆƒ^X õðþü±9z¸þ;uöü›ë÷\Y!²NßÅ%Dýây Ì^%mœHÎÍ]ŒÌaÏAð· ÔÒã¸s#‹ާþÀ ¥úD‘OXvžuNË4> RQ ©¬ßJ;G9äàWúJ1ãÇ£²A4µ ?%È€’Âôñpp…nãÌe¶Fùb¨épÓ…w^$ÊŸ“º³\ŽYPׄƒpÒÂcÍ&±ԔɩGP‘Û=CävîK¸×ÀTû„–G íèÇ—P2ǦfPýêàJ¿‡ÐÂiÙFiÇsŠÅWÙÿn’dyRìONwÁ¹½÷W{È{6C—ª7HÔ¤Çx§x‹ŸTîxîùÉxkž¾ÿùsqêKYÓû£2¯4Jb«7(/mð%˜1L¦Ð¨œ–nò B"C„µåƒî@› 7 Õ‘ÛàÏà•fEZ:¡È}R/V³º|³o@ž EgM¬1ÊãõÏÄrSƒ#æ¯= i†ó½\­Gžººû·|’ƒ¬9+þ$hR®"M}Ê7HˆùDÓûZ…ÜÏB{éIäb,¦ý¥ã…\h‚w_V"moõua¨©Îâ5hÊ‚ÿÖZ›OŠp¿f/þ‘¸çG01;›A8÷Ê7&YCÇŸS=h²ºÆ%A'ü~ÝC"Òrèg»:Ëò3ÂÊר‚it¦;›vÛ†xFSFà¹S`>tŒà¶Ç€ör–¥—2éµ^šv×Ûngó,}óÑž×µºïºßF1Ø\¿tè*‰[±-ç­SxYÙ/+‰Z© ‹•Šo€"ÑHþ. ÅðÇ #Ìe†Œnu8V3eT§—°x¯e¨ØQ»aÎKÏP( ä´=ÈA(!e´\¨¨± ;Ÿ„…^3{0ÔìŠìµ¾BöÇP釶>9`RŒxòS.îß–Å«>Yü¸içÎ2‡Íc3}Áîº\DW3%¬åöælÑúJ¨#4ÞçÃ@j[ËGº²Zêé´Îúàß Am À • éä'©81*;¡$ +%Cm¿êœ8Ä4­®)Lj ›|mÛÙ±Éâõ 8†1Ú´ˆÜUb{l8'’@Mnü$жm ‰X2m·G'9ʾú›&«½õ“}ú!æé°2¼uXE²#ý°ìêGúÞýsòÆT!o“qy< ’º,ùŽ¢-+²=JÕ¤³ry?Ãê½TgüÈ~QÜcA:³ÝhJן[à†õi¢rËædêÐ&\–œ†T+€çØÅÌ_á]‹«B`aKÐzî:ÍHÖCÜH£]˜‰¾”ñé=JmHÛÒnФA,éh pÅmÝxò˜!î8ý¢oRbe}oH5]%ÂÀ›“Ýä˜B©b[(3L¥/ [TÅÜm›½}g á”âЦ‘K07ú´©Ö%Î ‡cõ|dîjÏ27Ë×ÕX¼“ d¡fVk[çäï³Ke~KeRYâT‘ä¨î ñjÍä×¶|#»±Û=L¨±üg^Š#,w°êÛp–å?¿¼hiø0ueâc¿{ioæô,±D]Ð3Åî–zj죈”Æ+ÁòÅQÕV³1 ¹ä5¤wæ-&R^¯ÆËWîÚÍäøºtõ}òÅô>qô¬ókâ+²30 D€éMUgì•ìvtg³‰øy-Ÿƒ†)lQ¬d´cj¡ð-N½cš Ô‹çµsL’ ŽòëÊ4Ñ;Ñ4»ä–BAœüà5X¥ê-u±Î¢É  Ç6|ÒT w~—oN×Äž:œ1šxBŽ%ä·% ¥H¾Š+VžÜbާTèžú– ÝÑbŒâ¨Ï”«<ãðóÞ4ëí• Q\‹:mdäŽ!J+8…Ô‚qãÜ\õ§îk¡±™D±ÌÍEÆ¢'²‹Þî§ÔÁpDù¾\í­²Tò_𛡹>ßöðÛ¨2ýI¦‡Ô,šMþ<Œ?X¹îÖ+Ä•µ_*ðªnñµ«$‰¶(o<6J‰Lä‚ôBÁ¶'%›Bbøí«±~ÉÆ}~Ñ8Âmi\ÀÞÚ_C˜%ôºBÊò,ªVýú1°ûÀ‘‡ŽÐ]=ÎÃgÎ`óì1L®ü­U–µÒ{É{Ð~Õ8ù äY¨Ï/Òo0“ÿºã@¤ž ËA¦<¨h«Xæª(¿}g÷kQ‰Yˆo¸ð,[^V\òX=wnˆ:j;‰².¾Ó‘×䓞Ô÷ðÜôï7â¼ 6RçÚ¤80E”lôú¡^+î¾›­¢ '†ÉÏŸ8«ËÖ鬳ñ†CŒ ñ6Hu/;ÉD‹5æ‡Ì·Zb1MK½=Ðô, ö9Ik¿>¹É4áºõff¬‹RëEa'\;›lfW”à3hvùàçK0Ö=‹ª;\ª‚H]£îù•T5dßd®î~M(D’_±€¹{„y0}äs–aö3È;á+Xۼ̵êàqæ‚’vÌk|V(æy¹.yhÊDZͯHå§­¬šd—ù._¡åJCr6³AgÌÑ6Ž"Œa½žœCæ&ºìÿ "Ü$‰BÅ¢þÒ¯)§Zá‹kK‰:Ìž*LJ;»éyÇÒ"\‚¤]=× -ˆ¦kµ$P}$µfÿv->!2ÎÌžŸmöÚl¢{o°®”†Áyêjô÷ˆåöªµR0æ ^Ø­üŒÜÂLj yT¢CÍãïlf&8M`©‚îÔWjd~¿·©›~K¬aJÇ9K·¾½óz¢’ƒ‚²ËT‘°&üZÑÐC¬KQÇÝöbœi×쨲ž å´àE§Ö\)EU<θkŸLoҜ6ÜÛh½¯~å."AJ[ ìÿT†88ƒ©´Þs„©ƒ²v"ƒ«’,È!i>:ÿ)jÐòm#)æiÄ5[Æ$åµLg“_H®âeùÒÌÅt1'ÍЈL#êç4&Z)±€Š¬òª~B­ÌØaç\úç×ÇóÞ5av¥ çûñ/@j+MuËx¨Í~Ñf¿ŒµúóéÌv „8¶p¿+‚©ýq‰ýÉÖôú¢«ŠïÜ=Ñ<«Èt3AŒ‚3<¥ÌE‚…ÚÚP¼VÚtý¢º¯Õ‡T‡8‹;vÄ7¸{áD,MâÀŸ`™Ä¼²x¼È%9 õRî[=-«û¸ ¬gµ¾ ^[}þ_š9¢Æ‰BoôÉ­¥r…–#õ$Ò}ªRl©e¨5äî‡œŠŠyÀIˆÄ-.‹wÀOÌèýMŒ#«×àÓ-+–”3±™É*Ú¤@fÿ¢>˜òÅoшԄ‰ŸÚKöÔÚ0£”\b '!‹ã“Wÿ[»©UN§³@ίK(?/¡boÚ³™Ïl¿Ó‘ÌìeÇoÚq`nžJ ÑÌÞÂãúDû­ž\Ïüã;v×|jÐÕVK¡ˆ¥Ví0 ¥£íS{ÀAPš\zõvÖϪv¤–[ùUeaN^«Ü„òG}vc3¿Œmapuš: ƒa1ô!®Z•6иÐí” LV([o ~6[-eæ»þ4§¡ê6D°D>”öÈSAc¶°uàN"T©Ë¤ ÃuC]mWë‹y²>ºBDô6±‰%ýf(êG1—“$DÍÄ',ä[Í ¨Ã‡’Ï´[ø…\4ÄcÊdž„–-Ò[¾¨9.•£ùb$˜yY†%n,~†€®Eb(:l»÷rn™UØvì[2xˆ^¢2ˆïóÃÌFå¤ÁÔãSRKÓÍãv®{ÖÂôæ>lÄjæº#wÛ½(ýŸœTéyÌXlÐ+½Òñ+Š¡2Î ªQ*f¥Ùب¦‹ÊøîÚþMѰBš5ŠíëÐ! Ž[ϱ#¡Æ¢ºÕF!Ãl#±ZQ”‹¯Z>¹ŠÄpàØ§µŠn• SÈœýû¤tÚXr(8Š|,‚`Ê]ÖMX–ÂGc®Ò®-\z Ò½E#Y½§`9m…w—(£Ï¨ ÷Τàp5X¶Œ²’ž5@¿ÈŽœQC·õ¼=WHÙß>^ûÍÖåÎðXð à {‚÷Ť‡´Žv½8k] \ZD*s´ÀwyÕ™žéDþ²Û©BD8$¯] ¿ÒV5“ ü£yô³§ ù*Eû¯„+‹“9—Grõlܲ›£ üb_¼(~Çjó·3«¡­^ú°Ä§²áiÔ#Sœ³±Ðš•%NmŽíÖ‹KDÑâ«¿LµA@rHÐï{,œŽ¦Ç¦=E‘çEåüJsVY`–5p™ÕÀf¢…é¼Ç|\%¬!Xí"Ðl°•"wÇbÊÇ:"o†œBº\Üej›´!w&À+(­wˆ$xíµêÕY%뢶D.ÝÇžb…ö¯Ak Et¡^%ü®›ï…а7kçs¦ò`*•ép¢ Úû&æðLPQK¨µétMÄh÷¸°ç;"žú¤KvhxHÏÀz~7>ΤKTkó($ ¢*¼~R1˜ï”ß ·ôUD¾£1Uc¬d/iÅ€¹·ÕËÏ3¸ÝTp––üQ&ÁˆÍÊÅì!ù<{<ùkàÉ—D×ýÈmÝœåñª;ˆy wãìгÒíxöê§þÀbxXg_\øáõ]´ _BÔ¼õ€%”šG*Ž¡`öHîÓöW/¨å’ö¤´sîó]Y‰Cꂈô‹Þl‹h×l×C¹’¨ÌŒZÁ†´©§ª¾ÉtŠôþÏï]ÃI Vßc½’JÚ-&។h=¬?]ýö~Û|}ŸD§JR„ ô 0 ësÿ6‰ÍR$FØQsy³t—Ö!íBþZ¼óSÃ:šÏs>/·¢EÉÑu(¡FOØŒÄ΋Ä$|“î'…(ÿóîäê;éqǽÞtÎH­Ó-OÂw47 ±ÊnY‚uU,G^2ߣx_ì¨ß#b!ë©„”S»Zúö;Ÿq¨2(0Ú¸–PQ; ûÈoµ^InŒœÔ4d r|»Ft¯B5®ZÍjûʼ~Ú‰.L°çU+Ћsšã¨Ð6ʲW˜[u! <^¸I;ž”°Q ûTè‚lq“"AŠ^²üÕÒ°²”Žñú´xÝO½ø(2ë¢!åÒ³…ª Z;­uå#e„[³Ûƒ­£ßÇE%ëåGêáäJÅ^cÆŒÔ/‘{1*KÉCV YìçOÌ7ÖÂß¿¯î¸ç~÷®s™:…¡.Qš?n ‰ïØ;„ç»Ëï+ÁäÀÊŽ±@Ói©O¹BþIã3š1·gúžn›¹à|ï°9‹¨õ9âæ®õØ‘[†mÐÇž½’ëŠEÅ×&QóÚ„à_K3'»Û°Ðžh±‘4’9Œø3g»ËÅÅÇéôuY(qiùD,ùiÖiì¼Ìß”Á¾Ýƒ:ƒaG}1'™“UͤMXŸp¢²xåë»U7Îgëe(i¼êP÷´>±fΖ^)çWàzʇËíôy>Â_ÑC­öé%®{,šmDBš œšál-ëÀPöH-q “ÅžKkHt&4|Y™ei¿ÙwÔĶs["ØsUù®Ís‘}Ñ9c1»"ú–b¾·®·ˆVjhPcd÷…­O-ºŽ¼ñ2Iß*˜bùm:±OB¼ÿ-oûÒ.ICȾ&í±$Ø$'ÛnC‰ççóNŒãx3¸ÊÞãù]DY»MÂÌÌ9¬”øWNDxyŠý€êA!T†Zgü ¾VO"õçå 1Ê/kC|É´U¨;ô't®“|ï,䲿âR(ÚUˆû‘ÄX$RȆ0»sð3À=Ç î£ÂÅsãHúòûP˪#æÀÏñ@ £”§ù—ŽÈ78ܪÈÁ–>mÚ¹uÁ²±s“ŸÏø¸ëCÏM¼Úþ˜oV=“mÈc‚-Z§,,!å4öbi|AüÈÌ?oýqV0J[Ï,c²Úc G:@‚NA®Úƒ½ÖIØ¥™Ü$)°Œ4,sˆ||¬N³Í} «ª8™'õ{Nv~9:÷-гÀÎþA×—Rò G `eƒ†6еy¹=^¯¡–Áû2½×?v¹ÏNÑÍÓ3›¦Ô…ùÍV7,º;9p§ändûdkœ3T#¤óþ×瀣p\“÷læâž¤ìg½VZ äÈZ§!i‡¢5%“Uúoé –Ãæ›‰í3AÆöêìaÒùJŸÝöz•i†mýÄ®Ë8`‰«lš‚Á‘ûʱ¿É™¥Kðøá(íL!ê÷’°$g®ß¦?=]²Õ¤ð‘u]¯ ;m¬ëüé¥:eËCF~ÞݼTØ_!Òê VåAz6»|íOØ=)’håUTéˆnrý¦2o…&oÜ!ÿ–Ñßé%毫Sê;4U-…dhÛ¹TDg‹­+dm(ïN[RÅ‹ÀÚrÕ¥#=ã?³s* é^¼YåóúNG·e™qÆ`Ó-0²2‘®Ô*#š‰V~L¹ é’2Ÿ&“g¥p/¤>Ñe©kz°£Aí„ñ”tê“>2Ê>o%€Ü²9ù`B­Ñ½ÿjer«wÞ|F¦iíåߣNö¤[Â9Ĉ{ÒÖó8öB Ô®fü%˜nŸàÆq3<"œ~ÇD¥ü¨rŸ~!BšRîö½‹¾ò¤tè"k= ¦ÂTì® ™`sÍž%†åNtof{»¶.qŽÎœ&¾I9˜K»mI¹l°@ä{’“¶l">™ô~¾ý¶ÂqˆÅH@éU`Z¾‚²^lÊðR^âË‘²Ð“²“³!¥óh‰)ZÄ#&Jœmg¾7>EtüëÜ9(f˜­WT/> ºŠ ï C t‡¶­´¢ñ!ÏIm{1&N§7ÁǵÚôî•þíSµ<íVRW3xÜYê[â[¸ ¢­Ò±YºQE9üé/Ç; ª"¨ðNÉ×w‡7­, ÍÑÒ‡awc©YCmûÉ«BʦâÞ¾ßÐÑufVœ®ÁŒpd’`l=´[ÚOñÍF}HÝ­÷ NªÃ͈ü%ËÃÊhÒ)P'¤z•w¡ˆm’¾÷p›O6¾‚”kÈñÏ5:‚ýî%ÝHÀ&é.æTe÷7¶ ø‰üž Tä>R~³Ö)`ì§Ñ5‹{ÈÂOµÜ¦ßz›Jö¿•Z!hÎÛŠÃÛâ@^ïÌ”ßødÕ‹xTуú ‹¿z“:áúß9 ™>MŠU—NžïªS/™(ºÈ¹qul'nZ©ê{vç¿úœ Á1ã¿9m³Ì(5®å5iãgÌ–†ÝIðäýXácÄK^ïëÒkIÜ¡·Xp#óƒe,ŒÀÑ\lšV (!»‰õžC=Õ»Ô2¿j+šýΡÖ8ïMZºõç¬@ëžþ1(+–/då¢cŽ€u*yËLŽã%{ú¦ 0úÜË—‚ùjöªèÀœÛùxþòµ2ìøq/÷[DSK\b ð@*VÇEOd¨Éó›t'D³Øƒâ²©Tìg?]îR+´›(–ÛG¡§z’íÙÃF9°­ˆiÒ Þ·7Ö/£Õù'_½÷äÀrjò&_W«[̺–϶æj[¿‘"F«™öÅYå†û– 'õ=fk k®YU¹ 0;Ñ[Ö]ÛƒLöBxòñëZP-G‹`Ú^+×ãàŒR¶ÌœüŒXßÀDVKÀûáøì÷I"°1Sá¯JÄ}÷M÷Èy³R…Ó.½‡ÅÙ)©^ØÎKN”&0'§!F/0ÆIŽ Ay2°ä8úB,—ý³?nQã½^\_›®,Ìò'ûù­ÊèägÜ|«Üom¥ç¬GœJ¡X]7j—€ 6óÙjËŸ•FL!©HŒ¿ Ìoyòc¢}ü–d­}ͰKF…Ø_Îíd˜¯7y¦Dœ°Ðd\D¬î·‚BXç“$áÔ#ÉU•ÐÓD¦ßŠ‚+¡¼ýªUšÝú¤èCo,{1¯ÝÇ#’"xÈÍ >Þyõ«ß#…&ú•FÉFØS#W±Üsð_#cׄ;é¼Ãvôõ'o­ßJ–ä~˜j!RÑ_^7!ð ·I•°Üƒ»vèr%ë7=çÇò‘é»2É|¶ò£sŸßTê&6ÎQkúŠÍª9\¤Œ6$\ÍÏ¢>„ŽLoñ2´l”ñÙÛ|­;ô§œ7´},Âä¬ÒÅ<’ òaÖr.uá=‡½#\þ N1¸,,mPñ/dûl¬0¢9Ûú^ÃiÉ>»Ù¢¥…+Íu‰«» bö);S¾jÍyâ*ŸÈކÃG´©vxCÀÇJ\!2¾‚²~a„WEÿ,;Òþ6}ÈòsS\SŒüξt—¥Ü“ßÒ5Gœ†^ÑZAvëyxûÇø–½n5¨ä±ÌçüÁ(…æÿ'ÿøñäþF×ç/¨#–W¬®Ðw{(4¦SŸ}MôM—É8™ÈcÉ ‚†2öˆ|®æ't AWDz‹DÊêïísǾÿ&ýxötÁÿÞÂm°;UU—®®ç¦Äž¢ôN¿ ž.Ãꆷ'ÏVnê}Sm–gº–Çh7‰<‘x¢ Æ>‡gÀ€Žà{Å&ð†FumöÔ'QF[*3UÊkmÝÿ>–_,=¦ˆ ²}ײ›ŽBdø/s]šþUvH¾a5é.بQ1<þHšÀÞ R[R{ #âj4àqX/AÙ)_ŽmC®í”¼/…èƒë:D_çwð*5hŒÂc‡ÃíEë2FÒ8‰/Œ8t®ûdÌÈ=ŒnðûËÌë› š(ïž3Ÿ ï²\žäRÑdbGzæ´(¯¨“%¬XX‚ƒ+s©OEO‘ï»IÑ'‘û1gʨÉÛÐûŽçª›þé%uòúýþ<ä ÛÝ»®üÄbä·6S‹;Þ¤B„yò[媕s w„¿¨7oÔòèX‰¶±Û‡ËjÆ»Ã6ÆlÇH\}~i¿×t8}ðÛ¯†“!.À4ɇjWĦ‘Íž/ÛÀA'c¤-, HíñDyÐÅnET¬;‡ÃÊ B7_g]èà·O°û‚D:&òrV`xûõË*tT¸sà-€…#YìY{:cdS9-¶ëõßàö~ Žùhü¥Þ¢Å^õ~§{¼Õ´#ðºû ›k†LÈ_CÁi=¼ÌƱƮ‰¼÷ÆÌYšÞ&¨V¡lcB©8ÃeF¬†jˆ«H›6å(U%3Wô‡ÍF¡;}D¢&‰¸dtÐ&;!z>Oƒ#˜yî ýñ/Å{o(Ä_BÕ¹]ÎÖG³Ë öª-áìgVöâ͸â%¸óâ®Ëº@ÖæBÓ•’8H‡#V¡¶(à½ulªÀZ<ßÊÈ~áaóýÁž7xí i0ÄÄ]aSýŒäÑÿ£¹BÞ·;~Zðù iEiö3wXZ—çža(LùvMC0zqÈDùéçÏ<•%–מ€, íóhö§>îÇ öú5²¯ûº ›«Ka&ˆGF?ò–áV +Ùö†9–‰Â;¶Ž»ØÂ% †’§é©mZo>"H6Ì…‡‚ïêñ“b@lú/ŒMm_ªÉ±øùHg8¢C¦úÂu»’+ËÑVƒoè8VGa §`üE]l‘s¡U¦ŽŒ¨’IX<y`fÝËœiÙ,²îÆp¾çF€3M‚Ëi^B3Á¯‘—n8N Œ?Êb¢!%^çBÿEJ‘¢üw¸&!” È£úðéK3 ®D]´?âGÅ"ª‚]WöPßd} ·¶­•xMFÒÕ½'Q êsJ¤ÁíC=“ƒ˜9‹cO/Ÿ_ZæNEj¾©© 5f_>d_t·#‘‰´†ÿ ˜tlç_‰Ýy7»ÏÿªDc>ÚqNé,GÐÎÊ'f Z‰´I^³&øpŸl ¢—dð:{'Ž›G2b°u<­ÍÑ7æ6ü£î“Ò[¸JúMÕ”o9¢ñpÒgÅÔEt |¯É ÂLð3ÖU³§íxC¿’ÄL…ºè"˜`YHŒ=²´d*Ú•âýù¡Ò…YÆÞX‰jL¦Î:;±¦fä¹`å4%òjŽo£%¿Ó?á¿â_1mìH ×Q‚õo ÅÕW‰¼$Ý2î[X=lBoñƒCX¨p·þøöPï?¹c'‘“Wà[¨´Ø)u™:K¿òy‘ÉuW‡Pe%ëiøOj6)£ycHj:½âÀq9’Ò>­–¤;¹1ðT. øõK˜¬œPŒLö _!W€o%htO§‹ïÙ»„ƒx(0ûê@ŸQNèE°i~’½.g­âÕ™SÛßz´ANaŠ ¿¢v°M[4Å4qð$ü¨…˜ >äE¸»*6_mA]pWg…/¦Z¸#Ï02 Â]ù K²–2ôl£mæÏÁŒ{p>‹\Âv´W³þ+Wo6í\È«•Q%¾P½¾&fÀš»æ2úrÚ jL§8,¡wìðƒ¸-¾1øƒZ-:›*./²kïéÌxt¯õ·7¼\ô¾]päÌO?Ž1#®ÖýÉjn¨mZ©þøÚ¨oá£Ñ&¨ºx‡+ gIŒÄä2Í;jSsÜ—èzOœ<¥g¡£Õlg­-L´þñBŸ¡˜ã4މB/9z1oóéÇQr €uÅþ^܇š»ÅÒÈ©4”džôK4=F?tU….°RQoÔÞ¬\d0׉ýá½Ñ/oÛ~gÅÔøß)áSØÍö2ü»#Sã‘Ü&|œýt:çášÈÂj;o†ñʦ“SÉýIjô&OÝ‹ç…Üç%ó#þ™ÚU]o‘ìŒ.üoX§Éhòæˆæ»( ,Ò˜ùh/Ö»zóTfÛæ¶÷Z$¡ÇÏ1Š4·™†{;Ùe|’d% 4ÕÒäð²FI„ßLŸk)ø±-¸7“Á<Ôf™ x+Ó~½`k»Ÿ‰XSE%Ýñ!7.ý§šv\ú×%`è‘»º³»kj ¯H M$‡­?è–ÜMôÚRÕ[Ѽœ¹ik½^z¼È[Hì’‘©ÙFeÛúHñ (ø„Y4}~Äwu"Ë»›*gårÑA “W§ åË ã’ìç#yìñŽ&*!œQª¬ endstream endobj 2789 0 obj << /Length1 2219 /Length2 15275 /Length3 0 /Length 16585 /Filter /FlateDecode >> stream xÚõPÜÒŠBpw‡0¸»Kp îÜwww‡ww îîîAw·Ë'ç$ç¯êÞ¢j˜Õ¶{­Ý½‡ŒH^‰NÐÈÆ(fcíHÇDÏÈ –Rgb02²Ð322Ã’‘)›9Zÿc‡%SÚ;˜ÙXsÿ!lÔw|·‰è;¾ÊØX$,L,&vn&nFF3##×mì¹"úÎfFz€¤5ЖLØÆÖÍÞÌÄÔñýœÿ|PR˜¸¸8hÿNZíÍ õ­2úަ@«÷ õ-J6†f@G·ÿ)AÉkêèhËÍÀàââB¯oå@ocoÂGE p1s4(€öÎ@#À_”²úVÀ©ÑÃ’”MÍþq(Ù;ºèÛïK3C µÃ{Š“µÐð~:@IB g ´þ'XúŸZÀ¿â˜è™þ[îßì¿ ™Yÿ¬ohhce«oíffm06³äĤé]iúÖFê[:ؼçë;ë›Yê¼üݺ>@LP ÿÎð_~†öf¶Žôf–qdø«Ì»Ì¢ÖFÂ6VV@kGØ¿ú1³¾ëîÆðïåZXÛ¸X{ü›YÿEÃÈÉ–AÅÚÌÎ (!òoÌ» ö·Íè`cddä`çí@WCS†¿Pv³þídúËüÎÁËÃÖÆ`üNèef |ÿëá ï 8Ú;½<þtü/‚eb™: €&fÖ°¿«¿›Æÿà÷û·7sh2¾€ñ¯¿ÿ~Ó~Ÿ0#kK·ßá_1ƒˆš†¢ªÍ¿”ÿë²qxб±è˜Ù˜LL,\6F€×ÿÖù¯ÿaÿ·U^ßìßîW”°6¶pýCâ]½ÿqþw2(ÿ]*Àÿž kó>Ï@åïñ×bdc4|ÿ`úÿ¼§üÿ›ý¿ªü¿ŽÿÿíHÌÉÒòo?å?ÿ?~}+3K·#ÞçÙÉñ}7dlÞ7Äúÿ†ªÿYh!K£ÿë“pÔßAkËÿÊhæ fæ 4’7s44ýgˆþs ïÅ-ͬò6f=8:&FÆÿã{ß9C‹÷GÅáý®þvßWêµ6´1úk÷˜ÙØúööún°ŒïÆÌÆð`z_R# ëß³ ` ·¶q|O¼“óÛØÃþu£ìlÁ¿Lÿ ƒðoÄ`ý/â`0ˆýF,‰ßˆÀ ý_Äù)ÿ1£÷<¥ßèýt•ÿ"®÷Óõ#NƒÁoôÞ‹áÛ»ÏÐÆò]´ÿXþÒŽÁèÈ`þŽïïŸkûðÞ–ñoønüüËiö;å/èü»Ó_Ëßþ¿Âmœìÿ¨þ`òd0˜þßi›ýß»3ÿ¾Ë`ñ|çjù|Âê¾ßiÿVí=Õú}nþð¿³ù/d}O¶ù÷{ç¶¿ÝïÅlß'¬-Æ¿¥beú×jÿ? ²¾wmû¾À6¨þ—.vÀwÚˆÂôNÛáw¯! 3ðîßÃÞÃÿžðÎÆÁRßáå˜ÞýÝÂûsÂàhjüã¢ß8ºØü‘ð^Ãéø.¦óð]—?ný=Ûõø^Þíø®•ûïæÞ+¹íÿ9êVÒÐÉþ],Ç¿Í÷}ýþû·tÂ./Øòš×¶ÝW â¹ÐíN|š%ÛUK¦¢óX¶owzD„J ªJ÷ÿa+˜0܃¼¶#Jy#°BøâqÔ\ÒòU¡õÉóY7Nqz·vi s`2ÿH°¶ŸŸNY`ÏóÅÎSÕϬ´S’,ÛΉQ>íÞ¥Oܵ¶¿tu,xaWa¯Š] î¹t†.J%R˯hŽ,Ç c›Ò‘ŽšõÜiîæv5kòP2ŽÖë8Š¥ÀCc“9úaÞ}½\™Ù¡ ‡G›ìulšÜCèW¢$Ö¢GqaŒdpD¡1ÎB#_;’¾ëw¢ÎeÞÒÑÉ­Qì]?áR¤éàC…m2¡áK¥¬lÔìZŽ¢™&Ýö_Ê¿†s/V¡æ‚b !”äpH¨Îû½@,ìf«½5§)j#Ô§sõAhh¤XybÙ†|õö—в – ö¶Nùv¸{›Ã¨…ób, Ÿf¾´žÐæ'×÷æ ½²>~VÑ… ÆH9B±²Gè—Ômü=ᙡÀP-)@$yð§˜4`äQq€R ©8°e-¼oy¦3õ™Ôöí+Ñ1ÁÚWm¤"à‡Æ¥WIúZ¬6Í‘;0[J3eÒªž®ƒúÇN×&k!:éò7U ºªÄîÊ”9µ©DÛú*øÓܦ†oe§»‚ó¹£Z&Œ¸r¢?|oý4rÖü€}ˆÈƒµ™Î~(ÚO-4£¥ªbX†{,ý,Õ£8ƒœýp¦Çº'–­û‚Öб?ôSwëýoe»æ:¹ÏsŠ4SHdzŒ¸§Ì 1RÌ_„Ÿd˜ê±ÙWJÇ\qçaÿ¬Ízܬè÷Þ|5ÌF]”у)Þ C#2æÒå“?¬ò‚Ë/¹­àƒXÚKFKhH†Ú…fýÚFÀéü M#‰}ñ€c‚ÏËGûÙ»R§lT…¯ÊuÛ œ +Q<‹]7fr.2‰ù¾-Ö*Õlïa"ƒ Äþ{BÉñu?ŸFÙéØÿdô8ç¶¼¨Õ¯XH+ ˆüõtjq({ ^Ü·®BçO¦¢]ºê”n±Á²÷ÉP”\¸EûXFl ¼¹ꬥ­lhD1çðêÂiÕ¢%o£Ë:‘µ–æ´Õsб[?ÖU¦=/[R7ÍáqÁ¯§ã÷æ¸Mh’nyª\ÒÈö®´¼y¸)Gm5JaÊçfð{˜Ñ¢¶¯yEå *LМCq±¨z:¢,ŽÄ+ë¶8@ˆx?€ºÙÑlí•] ÌHÖ%øA@Âì9ß™3ØOͯ¤hÈ#S±V/ÐÈÙªë†:zØ5c5HyM³…7\’Û /žXåѾ¹˜tú|~`1õ ô¯×D*°:v¿KPĸ'%˜}ÓÍfõ@ ê³uWdP{8@¤ƒiõ+Öו€Ø«ÿjeúµh|IÑÖ仯i—ÖXMŸ± Ì脯’{GpÜN^º»J+8 ãBGLÃZKºQÀ7ÓœŸü‰¤( E­ö¡M4¬Ê\w˜N²ýÛ œÁD^HÞ•†QÌy‰iHblMDLŸ«ìIIî†íNŒXaF³¸´ï²\)ßUÖ¬MÔõìQvqnÈŠ$Ϲ$–ì!¾$Î;öHZô‚•1¤,<@Od¦[³ýðË”ÝÅCÉ÷ÓF¥³WÚ’<ˆpÁèêpOÁŤcc©šë &"¿Š¨¢¯JÖùý;Þ$Q>º(ÔÁÚ™õZfçD’ãfé#v£ÉV’©Z€q{v¨µÒ(¢×m˜™¸*»‹~#(Ö©UM°3/²»†žŽôü>£ì¡¢]ê-Ñ*5ǰ“´\ÛÄ'ŸqïÓgÝuI˜a ~^¶‹8exw‡¢º/'i½D™%ßÒbŽL©ŽY8°Ó»ýÖËŸÁëœnr€ËËØ|Ïlg=ª=ô"Áøø,9Ë{ R¤ 8èy¿`RÚ´,>5©‰3ë½"X­›³Šoa_ z”|Ç ¿C•1Çù=»‰hÉÔ¡(q}^:Wˆj›Ï°7¾/ÒyÖbc I ÙYvÆÐ ú2YG…±)õS©@¿ÎÛº9¥BWý‰–“úÃݱ0K#ØpæÎëÍ KzIÊXŽi½Òo{@);W§[EW|k·÷ÉŠ¼t‚W,kv‹T¶°Ääk¡Ø¬ù|2 ¿Á5íO÷ê¡óÉé;l— ºeÑÍOÖúƒ&÷Ci‡¯˜÷Ê’šÜåθÏA{‘üja²÷2Ô-Õ²fg§ÒÆWÆbs Eüpy cßl'Ætõlj²×¶…µoÜýµÚ±Ò Ê7¾)2¤Ø³æý:”y,NÄœI[sñ:²QDk_úÔitÉ´^\l(´¯â’ÕFšþJA†×;iˆR±vÇ"îU  гO‘º’cÝE2¤Ã÷!f&{"›.­ ÜwÃwMì¾ÃEFN9¶JÄA2yT¯¥î±;À æÉ¯]y££ñš¹R'®RÖáÇLôÓ%’O™PÀŠiäå*)þ"íÖ_Ö^î•ÍTÒ ñçŒÉ*Ä9¤l@Só„r±Ê8…äwʆ³V‚Á´éË C&y‰õØ­;zËl…9Póa12ó¬bù:X¦ÓVwæáÊïj¾24VR̓ƴÄk ,Þy}U»Ù±µÀyHúØIB „žú„:oAGpa¼a˜“™5 W‰Zâ_/ï‚'ZÏUt3I*۸›ûRüJl®Ѫîö"c»t(ZUwœ1/ýLü‹è˜Ú›&TE0,nrä<-? j׎+Gâ; ^ç›>ÑUø§Ð’!´§¸á„a§¬ƒÜ&†¯?Ä;k×HŸåï´J´ô ¶væIoí?uPóÇ2âÞqEó¦Ù  © -sTÒg³•ì` 5ì(JRj ¸ô‰±U‰ÐvÈ \Q˜LöŠŽÊí’->%GÒ4˜Ú‚£ªÚÖ?kžU¦þÓkQr˜É3;hpÙŸq#y1J}ûÐ3zŒLæ0òÃ;M øv?«M}¶˽{©ÏÜ’Ï?¶¶æ”½»#žµ -PÃ=cYþØï ¿Çùk¹C¼eF5ܸõZ¥-g­ã¨`L”W¯ù4šŽÿôF›‡îêRÜK‰ô£¾'üÝ– übƒ…Å™KòKU’›ˆØarà†moóGôæ¯}^ÔuXB“|nü©rºÃ m¬I¨ÏÜÛ ß D÷³Uµ™fTÏ hˆC¤lÄ bõq[ŽqÞÆ²6ŒYÅuÆÊ-â)=ö{ǹ×`¡Sê_7´é€’K¸ £†~óüß³žÇL‡ïhP'r}ÂtëÒ2”j°2~Ðê;»™~¿˜³m&«»cÁy6A.È*؈ Ï•ñZZ-bɱ2Õ‹Òʲw2âûqÁsgÖ,ˆ§Ûq†k#¦;bhq#›6qOh­—û輈1OÅœš°šÿ“”äýaÚãõ ú¹l»²AKÌùFåX®Ó×ò–ÌBÓ¤nù$ȜݻUnc8>^ÇÂR¸æÌ ©e ÿ•jŠÌºAm^,]Ž]9Å­Âg}nßûJîý¤d…ÐL"7È´0KxT9Ú5 ´_û©t?‘êšÐ, Ô‘U#-QdNÛj7ÌOu$nEî髟oåM• ˆÙk3ì%ÝI•lMãjeuŽ9zÜ ÃÌ?hðPÚ;SŽ3N™\ÖÉC|÷_\Ü;cµ[æ¯VöÎ7iò×Ñ$|ñÙо®—­;ºw­…£Ò½M}YpneÁ¥_ª¯'Ù¦<Œ„/¼ÊŒFº ‡o½—vìkˆªÀX[_²¦coZ#åólO|;efit(h“OÙuVÕ±;¿¤ÔæÊŽT²Ýƒ/Aos#Fd3‚soi%SÀS3˜ý–| Ïû[†;yÁ]4 –BÙÓÞè`îAwt{Ùp²éjhj†­ö1ShAaX‘ü>=ª´F¾ Z¤<…åŽøÊŠ]dè2œÝ"Ç>MSÒY_<ÂDêHXáîD<ôK´ÌyI­ F²(ÆÇ¥Dá)l¿îÂëÏ~¼]ÓFÁeZ0BD|yÖE\c%î,äÕ<.÷‚àðå [jIÙ÷µ``–h°£¨(r3àJ@½õäù²WÙiÙ%æ±TJ‹q›¾WÀ‹FAË`y„Ÿ§ag'P­‡†.Q}J‹È޳ây©‚ó«F“y°Äã¾ilwÏãZ·?ü}¸-3Ú4»(o’×DËw‚bÓÉ뤈è¨Ê b‘Ïoæç®8 £-§­Se\vÕyÓá<‡:ïsšÎ7\°™IZG¸=G§ÚØ7rY??TÌYØ_xK‚ˆFX]Ï]¤:W„UÐöh¦º–úûm ! hLÞ´Ç—Æjì¢x$dåÖ+äŽñV§ÑÝKîP$ÿ)¨Úç¨.²a„ÐQG³Àè»MíçôbÕýÚà'Vµr5ÞQ™ý—é“ÂÙðꬲ«ihË!\urÓñPöØ%¹Žý«ÇÍ9µ æï:+Ø÷± ˆîâU'Ï3Ù왉²—7ãv]¥7âe¾'z½[\!vñ}Ø—¡#¡„ÏCFê§±õè7ÑÍê¢^ ßÓO‚‚ö€j¨­º¿²,-JÐØ_ ÍlŠýâÅxkcqYæRž5À^×·eÉ07 u\&°×"z=ÒÈE+"¹s->Âð.Rñ…Š¿7Jx$Àfyϯ¤UK•˜Y¸bNÝ»­ê›p³,˵ÞV'°Šyt>;ö­Ÿ¿9$®„­Ë<=&2r+±5„`¢äÕ2*dÂ!½7hŒˆÔ<èèš¿FáOž‹ëUÛfÑs`ƒUBÏHç^’èf“ã&º0–³6,K„Ìü9ûÝÒäifQ’Ħ´rS!–ÿ#³›?)4Té\}-x¨¶A¥³=Oû[Øõ÷í÷˜X¼–¹ŸéõÍVÈmSG,Yv”4rÌpÅב)‹×TGiÚèOa‰lÉà HTÒ–~©2:š–M¾ãñA½ú?1;À !óú¼öVÕ± †],wˆ…Â*½ à(¿5(9;î%\öë¨ Z•þÒß%«<Ó®j¦£Ó– B_8kˆEPã²5éÕ¶’Î&)¯;)˜ö=ÔËÓÉâP¡È³ ÷ó¾{0õaa:Ýš='WôD$ãé~Ûóœ&¼(r"ì³C„Ò¨ ”õ+šqDZÁˆ="»^~ÓPý ½QàŸCHªžM–(a¬ÅŠ_A]«í„ïdÜâ‡)mîøåä,ÆK9“(Ÿ©JjQža˜OÝêh:ÙÞ¼ ûbûûÝCw Ùù±“.N0²mÍ<¸&2l}[ž·ËŸíý£ ó'#å‰ÁÃò%íÍNhIÍ¡×êuÍ_¾ƒä$bœf;0:\i ¼_#A]¦¡€49tE–íB9FéiÎhg|?…J b™m·>jca^a›Ïm­Â‰m+ÅÛ‡Œëg̼„så<35ίe¥éIä sñ~”»•tu”ŸÍ$¹CŽG²uóÖ¦ÏédwÅ]Ê:-,dõ¬ëšÞ¾ÏrA!„çkë©q ÍoòwtÂݼnßIÝ苹wº²¹Áº`úÜÎOúE昧ÆfËìè)K?ëÓêW`YFÑäC¾&³`{zïÑǘCרŸB8ì× bU…€hš7Ðu£¥ü y!¾»MMd”›I ôm&"¹ó#ZG$çäb'khˆÅ‹‘(Þ”,OߪçÎVÿ5÷«¡T_C U;I#+6vMøvgt¹W¼i)¨[Š0¬qO,'»\?ðìÅùt«¼Å5x$Có¼ZPcà£ß2&rÆXLÔ,g>Z–}·C·ƒ!NQ‰ƒ<œÑz¶¥õ«bÀ’*³ô-“—Gy½/jèu•W¿-N!+fßÙ„ÙUÜ€ë¦7›±@?&!BAž¡'emÃûcáP~:ÏâTÌo;¾=µÏ„ës³Õ?óVÓ›0·"‡ÊIÀCþŒÖØò,xÔ¤]Ø·à~híȩ̈ÓKWâÜtux<볌úÖ%{yÐÉÁ'g3 ]gå‰ó*Qæ \’]aM§«Ÿ¨ÑÂ4H’t—ž€ ¸æU¼Ë«õT=ò—­7©À?HÐPÿ 9èã¿÷½`K ¬`¯íf~f¿ædE®ñfoUoX0Ð(®²°A¿ÄöèÐE+4E „9Ê•+Ø·œŸÔ÷*{ ëÙúH#ðKÉ@Dz˜õ vy#Å :^m”ý8D)mQ˜ßv·Æô›Ïœ=J&aÄŽiWùMäK\Pr‡§¹F¾¦´«7‚ }¯ÍòJš1ÈÍLRË’‰¬ÍöYðñògΡdÉg0hé‘vî9Á/\7=qKC€xñÌ‹•óÎÈx‡´»Ãœó™ „xõÙsݾÎÕîo/=™D-t4Å,ò(?kKïü*ôäGy¾ ´~‡4~ž …µp*Ñ;6ßJʼnÚ›JÓx(ý„µ…!U»"AÊ´~¬2ÇËOµ»Zó©Lß\zâ‹&î^NÙ -¼©5ýD¢«eåº9AÚ½åH‡!´E(YF£_ÝL¬¿YÒX!Èþ¥e,ƒ/OÞ<ûx6GÝŒâ-æŸö<¬¡´ZÍ¿n¥wÙзñ@½ŠÔÙy­]^r.¼=ñLD%òƲˆ^CmÒÀ‰£ŒO‰„¦ïÜGìfá\‚xè¼€6?IÓRv‰âÿPVHKK…Ú>\xëe¸è Ȉˆ¹b7_=QƒŽåªˆÀ ؃¹Ì2ë´ÙÊH`E¼™5˜Úga?Jü¼Ý †Ô(ä:%TÞ ¶Ž:\pf@EÜ›[ĺ.”†‡öŠøtÕ@LV¦\‘Â!a÷+º2ÀKÏèÖâ]Òw|¯O¹Nšh6ä! aûÏ?) yç)‰†f…F XÑÊÙµSô}ÑMwN_@¹†ˆN×ÖÍ×]­ÏÍ:i´1ýxlŠ:²lL‡ø½Ô£èrXPëã`ÕÄbyl)}ú߯áYGG`è," 8jMdä(õl ƒ)3ÔÏÛ ©@C:Oñ¬zÙ8oV¦ÈíÚ;ìYô©3àog)¢Á‘õµ@[o¾Íx<ß’(§œÙ‹ú¸} Æ×\5OªÅTu,®vÑIb)8RÞšý…›Ü Ž’¸±¢ŽäüZ~‹<øqÊ_òÌî‰D€o¬dÌ)R‹Á[—<çƒñÚÈmç~ˆuTÐÒe ôð]¶sˆ“ÁéÞ =‹ZÓ/†»||<þó¶#cŠ‚%Å$æ Œ| œd6‘•°Äê!h¸Ò˹FÁ™¸HpYŒâƒ¨¼Z‘AÕ` {±!€(sEθÇÚ <mÃM"¶¯5;Ô;„xXÓJ»±\Šà5š¬,«fD„Ìûè¨ Äk¼`wâ«e†(Sš6܇0ß7޹+Aò¹b×Çã¹EoCĨ[»l ÇpIȨu2ÃC™t>2êQÀµwÑOßÍõÙ‰ýŒæŽñ ÙG»ˆ}JX25‚+À_~¢;YME¹õGa7·Ÿ°Fq1ÍT¦DkÎ\9t'4î6.§§ï¦{0BšMœ’¬ÎžÏëc ³Å©Sm^øltP8=fd¦-û‚´j 3“5ºëý¤;š}º…íœæ;^—í6NuJ“ë¨ÊÔÅ›C’îKâóu¼ÒÅ€7h÷ ¼ÐŽ¢D—ïhƒ…LIAÒ¤ç|Fª/·¡¦½[±ão ÃÍ·p฻·oãòȑه§o’õ5¹ŠCœsžÌm”=)?x°[M1ÛÕeìiWa`ò0Æ·f4mÌú^ÊgͰcˆääÐo{ý„׸­ÇKG?>n²42”GéĦÍ'šh8¸è.(‰W¼MüŠÝ 7°]3b>˜ö@­Ùô·Î‹0xü‚…IA2¡íÛ ÝS@Îâ¤M0rQ%ª`ŒðÂ/v4;Û¯tE}Xq_d8OBdòT†6ýì™ðu²ÀC¨ÆJDâ>Å’öA ÎYyÒðH%¢‹êÐ5‹sI5¥Ô;…v3ÑJ{áå[–zŶæ*4úíª¸™¬Ž'þ~L„ÜÕ€ulC¤ù~Cú¥„"¥¥O¥w¬ ±å’äÞ현swWå\„¦¨@ð­½ÇL"ÿ8ØÑeŽÍ›Q‡äD(Â[¦(Ì•·j1º>lABèçR×wµÆIõ˜ñ*.cäú#ðļ;®2íá} îÊÑu\“2ûÊ@3Ø^ÆæÙ SËÌ×#€ÍŒ™4œ-¾®ÃXäOxäç†~e2Ôê›:NMýY» ¬Äµ˜ž? òã§,‘wŸ& Õòs\¤X‹Â‡ïê²ÌI[4ý˜‹È!AX¶@]gFx¢c–`ØvìÏø«¹_ K[^Ã6h¼ÅV¤·}TzV?[˜#–´A²…ïˆ÷hˆ@l7TQæZDX²lÂÇÏi3ˆ4^N÷ËÝì<·£@ò.쿆V? xMOêé@@ŠŒpƒ=”bVíqf¶<Á±«rXÌÎO£¶=ˆŒj$7·pÐ|ú^½¬dj{xHÏ]Ðögfgý“ºc°{žA O²©ºuƒåÁ;BPÄc·ÌlÒd+ƒtMìL&œØ¬Àxß/ÇlS“Jo¨Ú¬ÉEië_$*ZúHJŒÀçr›]à:6#+6Œ®9ÌC\.ºç «×Ÿ•íaÛ¨´[ï}°v®’¦$'òøæOŽ`2³å/»ã4o• 5œbk\¤ŠÊÈóˆæi+rI¥çéyñ5_*lÙ¯ß}þóŒ>aÉ< (^ òhßS¡j µôq…‡W«ãáj’¥Vû P! ,ï¨ês«bKHèkešƒ‹QÍFR„¹³ÑàøF/ɨú¯1µô=?E(ô8¬´L${¿œxTÔ»)šm´"u‰”–AŸ­ËŠò.Føëµ—¼ zB®µ ™1#8yü9•¸î(Ìi^÷GØTûßÂÏJ(0ê«gjDG(-Æ ÇÉSêìyiñ¤J·N^ËŤ<©Df•±<¤Mn>"ñ å@·€Fo’^Ê„LçŽmYhçƒm&¯x¾N 0Uºé‹ç¾DPžÔ:ÁRü2f¥¼é§Û·¦òNO\÷M¶Ç;2"øa!ë[óÌ+;c'ˆÆn‹tC§ñ¼I©–ñ9¹]ƒ‡î¡ªŸ1ɦ¦‹ªIÒ²¤S&5jÝ¢Qþ c*Õ1ÆrNy^ЍFî¢ oTм+uæN©dËA Œ“±ãØ>þQJ%£ÍêªÝ‡(ÁÛ ê-ÇÁ ƒbG¤@ 'IÛ*ªªPÀÏÿ ”‰:Ï U²zF°”„¨*Mø³Pâ(͈Ñ/CšØ Á_ú(ÇÙd°¯Ûœ<_@F6ÔÅnñPC…øvc/|źvñ´r>Ô²qâÜN ûYúXRá‡X‘v%E}©@yUÐÞêµÑ w¯òšå¸$×2„.6ˆlñ4¬'EeaD™TÍ£=Kâ3î"*Éòg…w€FÁK0Â,#:£&7誔Òâ/m3{”G@»7_äMR¥†V—±îâ>Y D¤Aêc<ˆ±œ½Z4¡±™§ˆ5r;§,™êÇõ77“bWe‘ÉSÛ L(ŠÇºS~Nz¾cÃ+1:¦ÄFPÿiLÜjÚ@kfÓ:ÉeÖ°Æ»bÄåšf•q¸ºd¹±­Ÿ¦¼OÙŒØÒpßZn\0ßx 1â¦Ó•-!dnuæk@?( /áŽ=WD³l°aˆV™€l”ì”êƒm\/Ï1¹ÖZrŒ dÙÒvÛ6—ò õã~àåäLJqÁäC^QSDèÊ{*ßÑÞœÄPÕµt×ò6Ö Ò‹f¶ªøõ ªxP‚]•¤‚'W[Òøý»ª$m*ÆGiôk$„°ü{A;3‚´E§KDh ¥’ÕZ=ÜëqlŒº² k^7µ•/˜sZPØ_>ªR¶‚_›Q[?¹olp¥×“’hkR&̓¦£N¨Ñ“Óº/£Í=°D´e´Å¥àjæüèÔ ;Ñ…„³¥‹³%—–“(àd¾ó…m šóο²˜øºft[ƒÎ@Æùxô´Z$—Œï :b´ìÊŒâç†Üp¥©QÂU|Krá aÌ\±›Š=øÐ ÖÚ7ÌÛ§8Ê86ˆÕE¯Ån a-À¥OJKQe=öز#`"E°L«r«] E¡öÆ@Â7n‘v%ÕÚqŒ<¤>)57˜²ßLÞW‘ï”xÝÎ~u TÈ„þXîù‚BÏÈÈ %W‹™š-¨¥9E`wHÙéÕ%'hV‰zì>+Ñ+!:UöK^û'|æûÞv—“Ñ7_WN¡Ä•*He~Tå¹ 5ƒN®4e¥¹dÿ–}ÙLt6xàœt=5Ÿ*ãìê:Íåyy¦ZGÓf¦èÀ}~©¦Z[>fbbc}ä£ãZéžA<ŸJu:fÚòˆL¦ Hø.Bp'wÖšèTÏD!8D‰ŒðJ21\ E]?'½©Ë‰Û¸/OF È£Àv5Õ¼ÉU¬”g¬ Ââ-ëËÈ<ä§|€ÑRÉ?Ê ø3ô„¤v/´80\š˜¼á›Žc…qè¦k\hÕ‡š,°é­ VƒE™|¸ô"rd+ÉC¿Òט†9Nó+Y/H$¢Aj¥ÆM{ƒdH5ƒŽa8óéSMº›Ë|åìɻѠ@\J–\ã}1Æ`7 (¿>'}ì>˜Š‡ã9`>¡b˜¶¯§Y_^²¬Em>a -¤GOk÷©è®‡vJë8H' v"=àŒö’«YåÛ¶G濌’,ü¤lϰ—§ Ë„ «$Øâª›»ì_­ îï_µDDí«­Iúeh*¡…tœ”r\óÚ°³\ØíËnç1mZ0î$Ïzwº»éÂÁ5!öÙbèzËò€ðØÏxÅëáÿéÛ)ÑŠ—\‘Žaa¶Bûü±dÝÃ,/ÿU¿ü¶÷ÁëÚtgÐN{‘`dôä Ô‘Ô®Ô+”©p¹OŸf[XO£2¨Avœz¤r9¦0µàiÓÞWÑxÅ©Î=ÐqŠŽüŸ'¤îýmæ”ÿÚGãkkpê-X4«*FÕ5‚J¬ 3!:u»;È"âÖ€l |AÉ—(é8hõ~Î\Ž4Ñl!e#/;ºiúZ« W à Áß'cñ[‘)jG5lQ(¿…E¯ËØä0߯!Ò´^‹õföÆ…ëÌ¢À%y]v ’?Žj•ìÊ#Ϭí™>±3é |V†/.ܶ‹CC'3«˜>ç¿­«’ Ù æå™Ú:^­ ÉÞÃ&äE¬g¶“¯¡Û¹_?&¢jζééÿ¬WãÓå"_pi–OO8)^èÝõ„ml¾%cõ!¾µ_íàË¢ÁX©‹U!%„‰ÛPìÙÞņ’SRŒ‹~ÀÀ’SšH©Ä¬:Xpe„8q•€úoFßÕ–ˆbÆdšÓvâvòZH9Ë‚®CFî÷)[» ä9˜p¥bš§"ØH4Œ>çÖ·-oj‰"•°†Š‡©I³'¬uüéMݰ5:%ïÁõ³®^™ç6;ÿmƒÔÑ÷<¾x/¤¼‚‚tÒë4„äè ©Ò‘™–« w¦@EJ„S!’0w÷L‘ÅÝ·;G ÍbKÌM#.rE]õ"AÚš:¦C¢‚©†êíCê`á£é=&Ûè]ök*7ŽRƒ§£ÓK>n<ÄÓ²ó/³„Èü/5‰0ž¯G ¢_S¥ï¨°Q4á6u°WÚÚU¥ ûÚ` ÝÂ[½ž£O[O[Ò¤Ìf¢âz££¿¹BäF~ ÿDélšãFЯ#j/I£µ17ö„Îî"öuÛ7¹¸Þ«¹‘ã¬ÞWŒÏ‚·…iÔLHñÂz‹êøgæG±EÈ»SkeMá«pñ –G˜B²É¸IáS7Jzæ’tJÁÎ×§Ÿ¡Í>êº2Çž ½ ‘Ž5|–(GÕ5§JܹòTfG0ü9§Å‚»'2ÝÖæIÉýeZMN÷]&hª{:Y>.–Tè¾0j5 a9ŠJanÍjË\)RG¬ŒT)6-ÁÂGòybˆ°RZo¢ŠU¦ ŒXa J7f#p#)²¨qœÉhÈsÁx~ÕË$åtÅeC‚âí[U›W3…Jä“JªÙåÏ.²µÀ;otVb@ÉšÖJŸ~~XüITìÄíÆ,¼•dP‚„KúšßAäYÊÐb5Rˆ<ÿ¦€<”8Y·>‚2ÔË)•õ<„>ý 3/võ0j~ø±E·”1D«jñµ\š+ŽEºJGÇV¨÷Ã7•]%Âà†&Ø¥³zv‡¤HÕ…²g«ïM!% VO*²KEë›÷#EVk:Â&Uòç¼ÅÖS¤ú𱩼±ïe×ZÅG|B‘ý­ñBuK$ƒ}[\`çs]%¼ð(çJKв —ËÜÀSlÊðwoµKÖN½tdOLt·E|{h^“@!)Vü@îüU#Vêö³œÚvܺ‹Ž3 ×+`ZF±ž¨ÅÐJ{È>ÙOžÃ1\ ÂnLüè!)Y¹‹‰Ë´mÑ¢ñ×¢Y·%q–Ñfi×ßO?‹ÎºQÿÙ;ŽièÂÂò»¢Ù§²©®°,¦ù¢ ÕÔs?›{èk‚ÛⳑNÄ» pŠEÜÓìwdc‰ÒþÄɃÊÍK: Œþ ›õ‚2žÛ쎘yçÈm±ç-êtÂú «!•å¬à‚ä–K3¦úA‡n‰"ÏHG¢ñ‹SD'åwß¶I°tÓÊ¢Ž6é_õ/asÀ»°ïy8‚tèŒr=¯ÓWåú˜£Æä$H´Ôãî¡-ñ¸Ü—dØØíaÅ9!øÙ0TÊLSCã."Í«ƒZÜàßÚYÖ¯6®Ó?|ðí_ð‡Ÿ‘ÀE!Ç2Ôz4ÄS.9<Rù?ÕþbAG¿ÏÔKN¯õ¸½äÃØ§^Þ©ßäs“•#ðØå<.xÄ<úýÃJM•OÎ3aB»ˆ Iv͵?tÄ£MH9 \²­ën¯g± õÁt­W¿®Oì)QäG0†?™F•ìÆˆô@RäÄk«Ø§aVÔ;H·”üm›ø}ö}xëò˜" *3…¦×²< 8бOØ´í4ig [ùOÓÝÚÃ+á5 }ôôÅöOwUa10n…«hŸ5â ºu¢ä‡4ŒûâùݸB“á+rŸ_Éžš=¤ûbd!{£id+>•°š_B£¢³žLGV-G~Nmf^ØÖöSEYÃfEsÛ¦¡k1›„kÄ»w݆Ž7‘à¹Á=o‘Å»#]¹£êÞ×ë.<¥ ˜L«-¬cýHØ™š¼Ù¹™ƒ›Øƒ^'[<×ì]bÔ6W.b’­¥MfdydÆ iHŽâ½r3/5¶d •Î*9–‚_ÆXÄDq½XòØ×sÈ»^LÂXT7Yÿi´.±€Wk¼¸)·L4Ï/B¯—Ý cW«Hö »¤: â`¥…&ÊÔÆ‚½‹;óÿ.k§d!!–Æû™õ㣮óùt÷I~OYq^¥5?…Ú±†E%ƹqÖsiš¬ŽÐ§–~K„/w·0¦Âf§¡j®G J3õý(­ÌÖ†A3ÖìÏ\¡Qc#?(«ø†äûÏì섹f>ñâqL¹ñDQ̉X|0ÄΜäÚî]5%tóÙ"U!&À¤¦lš»+N‡¹(qß3x(4ËM%¡?מ0Ø-'D¯r´S7ßqç¾ÐœH,'[^[D”¾l{X¡Ç+˜†?Ž;ƒ+ÚŒêüô„ˆL7Üi[‘:¸Vß©•ÔÁ™´pdš+]»mU fò¹Ä=æAõÁyÆ•«ʵ+A¹ÙàÌ4Ù[Bî¤æ¯—ÅÝ[|j¿^®OjÒŸ²dbÓ³˜bеýt¸!ƒ¯j÷ǬËÛ×+|JØ‹¬.(Ïź¥2|h¾zÅþüp¼÷ý€©§&áv ñƒš‡-ÀfÈ`t/=ËŸ¸øÂ¾i5ùÙw{îæ%¦Ö[ü¾š ižÞ‰ãf¤HÂÎ]«IFu%f·r›bc>âæç ]áà*áˆ×ÿfaTU endstream endobj 2791 0 obj << /Length1 1518 /Length2 7939 /Length3 0 /Length 8946 /Filter /FlateDecode >> stream xÚ·P\6Œt§t-ݰ4HK(Ý ) ,°Ä.,]ÒÝ ÒÝÝ Ò RÒ¡"H|¨O¼ïûÿ3ß7;³{®;ÏuÇ™Y&: m.K˜9Xuáâå>Ȫ>}!ù¹@>L&&ˆ‹=ø/1&“î AŸü‡, ryÉ\ìTaP€’«=€—À+ô„Wø àEÿ6„ÁŸä@nK€*7@ ;c2ÉÂ=ák—‡4¬l^QQaÎßî0b‚TA.6`‡‡Œ {€6Ìvñü¯¬â6..ŽOxxÜÝݹAÎÜ0¸µ$'ÀâbÐ;ƒán`KÀ/Â5ø3nL&€Ž Äù\få₃{ˆêüàá µÃÉÚŠ*uG0ô±ÊNÀ_µðróþî/ï_ ÐßÎ ˜ƒ#ê Z¬ ö`€º‚ ·‹‡ 'µüe²w†=øƒÜ@{ùƒÁ 2šÐÁ¿è9[À!Ž.ÎÜÎû_y~…y¨²<ÔRæà†º8cþºŸ¶x(»'ÏŸÎÚAaîPï¿€jiõ‹„¥«#.âä V”ûËäA„ù¯ÌìÂBB°ìaaÃó+¼Ž§#ø·’÷—ø¯·#Ì`õ@ì ±?ü`z;ƒÜÀ¸+Ø×û?ÿ0yy– €9ØÅü7úƒlõ?4ñfüõùçdò0^–0¨½ç¿æ¿ûË£ £#¯§Èñ‡ñ?º§Oao.AQŸ ÀËÇ/~8øþw˜ ð7ùßR ä¯Ëÿ¨µ‚Dÿpx(Þß<Üþ Ö¿V† ðßÔ`³ °þ;úÆ@A ÅÃïÿóüvùÿ›û_Qþo£ÿ¿Rpµ·ÿ­fý­ÿÿ¨A{Ï¿ FÙÕåa-TaËý_S}ðŸU~ ³·ü_¢ èa9d Ööÿâ¬ñ[j@\,lþLÐß=xn‚5`Î_O €‹üÝúYØ=<'Îú­?lÓ§”‡ZÀ,­Ÿ ‡ƒ<1ÿ€Þ¼ûi öø=Øn(ÌåÁð@Î`ƒcþê§0/€çÙ/ÑÄàyþx4þE:­/PÀc÷/ä}Ð:þäð8ýðÀÿ\x\Üaÿ`þGð_ì,\áð‡¥ÿ=}ÔÿÆ¿_0Øl¹4³ ²­꼬•¡tçÚ—˜aÚÑOcãò^‚w¹^ã¢%³Õd½^‡_È$¿Ã_Ù’g=—^¦½õ>jkD mOÔìøésó2^kj§sq’dp¢ðH¦a€ƒŠKGz×çÖÉG/À©íQS®“«®F>Ñ¥{ÿ3†ò£!ó;š»5BÊX7åÓ\ѺQÆ%³LyæÙsdô¨.\Ôèì„ß<ðfÏ/fs&îi•â90}?GóynðÅ\Íy­Vêð9¿%g$7$£F:'bö~ºŸ¢Dºà]ZÞ˜7;WòÜó¸cûtçýde;¹$¥Cné85î<ÃçË´÷Œwâ T?Ï â®‚™v€”Æ ÝËßBìUR;OIbÖ&Œ›±q_ucЗ©W½ï ÝθyãŠÃ¼1½€á*żë@+ˆþçêУy?\Ô'‚bG£Æ:’©¬€óxáÙõX´®sjRmQUƒVj«ü‡¯¹Ÿ·ðæ’2!VŠÆ–ªlÜp^•›ô]¹²–c°Ø@z¯™ Vµ¹ß¹ô»‘Ï ºêM¨†`ÄŸ7tbkî´òíäjÈ ÑFIÙÍXŠÓM}I0B #OÙûÀ¦•ùm]ìë¶e`¾Xâ³d¶I4g¡ò:–ǬØ5Ÿ··?!\Šß ¾d‡´6p¯Î-7L/\ñ¡‰…•¡½åÀ¼g¯³»e‚6ànÑ{/Yì))È-Ç{ŒÂ(Ûd=Ïê]ÄŸ2Ó‰dmÌJ¹G £‘¹;Ž µ^"»Mà¦q¶"S™6[.yîfw§{¢ÞÙ8º=fha+[PöìðrBÑqºäÑ©`¿´xÕ·vÿ‹ Ça vÁ€a€]Õ\üyŸX¡X¦ÈÕ¬Jñ&ÛI–ÆY]LH jϾpœÄG–A‡YÅ¥Õp jLÆiÒü’9Wr>ž9Ušîµ–ÚœU¢òÐÇ郔¾÷U ”ƒ¸Ì'WýäaSé È-€¸b6»e`”S F.O?ç§ \¼Ä "|¼>•“ÉSFÑÛO¾–`è&âTÿü~…ú$Œ}›Ì_â|"а£—š9Åd"tUv“2‚ Vqª»¤ {†MÎL‹…Pƒ‘k“›ÎÁþd¦±Ëä;;|lúbüÓ;†Þ>ÙWâ?~¬<9 ¯ ˆë·ßùtw fMÊèʧñ¡’Ïæb2¸Ý°œA7?¾? !9‹”rÜÀ'5vñNðUÌÊ ÆYw‚·Slu-îu?®«9ac îgFS(¿§È@bf>p;¶K]¾ÃHÂááÜþ½TÇÇ·&ë_^È#ŽïéûĘY?¯ÓˆãMÆ{jD!N÷ŒsÍ’ïØøG~$tj·ò tÈL4Uît+Hìcp¸„lØ·: ùr2I$½ù‰ó¸%w4^ Ùdúpö 0Á®Ÿ¼hY¥Úÿ’7F×]_sÞwÇæ€.÷ö”ýÃó–˲“ÅŒ‚Ž_}T1êL0’z^†JåçHÒ«cª7YܹKDSa=%á2¨JU—±$™#çÇñ «¹ì5ü$9.#à5!W¸„=¾dŸ“Dƒ•€R³{¸°5r%h: ºnZ.H´{ŠÇß2H$Ujêj)^œï0 ÉÌ™nMË;@¨œÚðu#ê88ÊÙÖQ<00ñäuÁ‘HB_\$™£ªÙ\îä#”Èäv×è CXÛSCŽl%`ç[7D sÁ1ÓNT–Ré[n·“S û­G"ýÝlwë?«k³'H»F,YEúVó>pÎXTª´ÌökéìLÓ>%Ô©¡°„©ÝIÂÌœRÃ9Õ ®Kç o—+¤?ä·˜mB5£>ñj!ÉÒ#e|“)2ÂKÅÐ@Éìk[Èm+š%[W¸s}¾$ëð½’/¿Q—ô¶ÎáìBŸÐ¡æöÃÎÚ'·¹„"̘ÇnvÀ°­šÕþ¸™è˜“í@Á–ªê½œ»¡ÉÓÜ·ñór ¦ ¯“_^?Q1«;gR|VÞF–€Ÿó¾w XÄ<´{)5Ñb| /<Õ°¾T‘Œa÷Œî&sËü,Óçin-"µù—|§‘¸µÖêž`¦‚?qLï–U)‡êH$W{Y=äMà íŽ; öRÌ3õ^ë„Åo4ÜkCFÕ”9~U®%à‘¿Ñˆ ¯Ë²¤@‰°ÑbBdsWJ´—x£©êobPZÒS_³|7âx€¡ªOÿ |G¿ø•ÓçÅÛ€“Œ¶(‘’ ÊØ¶1cD{ÉÑóˆqg›s¼‹ú[ù´£q‡È¡F†–k9#©cä_)†*V–¾Îª°:¼Ö”f8wNòGs× ÇBè¯NZÇ'[åñx¬‰ËÇè4}êCHÖGécx5?“ ÝÜlÛKqÇüNÓJ¼fŸôNÆf]`7u8wÑQ„öÈÜre<,j§óó;gñ`×g‚÷Ùá>›“˜X8?•8Þ¤%Ý(Äô†ÅµFˇ¥·QÎÄ©àšSD³Uàû+hMØ0vÑyD߬~Òúz{*dµÌI«gÿŒ™òà%÷qUU*Ú¤OsBÍ*êç/9k ª+úzl²[5WåÒ^‘3ºŸj…âG3ÕpÆ` ."n|YÚ8ÌK‹¢æ4ØÏy3UÌ܃åä耠>º'ŃA'í-`¶‘'LÆxN¯â„T~ á‘Ï]*ãŸ$9o5•|W+`SÏ™&Â$}>çÙÌoëI޲¿tJ,ìSà[X]õi^þLEïøÑwÎð¦³*ðRÞ3Í¢kESi£È;ª§±5šlÉ}¦ÙJlpÌêK ëF3ç÷Pmäî¥z?90æÁcÕ'À}ÀBf°¿û© v¼b¡‹¨u¡þ—‘l®Øm p/ëDTââÛd…ùbÆâ­‰”$Š> šõO¡Ï„¯ç_¢J‹5?·.Mmð-N‘ùZÂ3Ãy¹pÄA7¿Kµëú6ŽbáZb ªeÜsLÕ$|¡¢]ù1¦ðóèJœ0;÷zåRŸ¯LØ„c°‘L0ýû©(…ÂòäZÅ⬆–·P¼œÏµ’¨[§©YòžR\¸~!Ž…•?Þ¹zÈ·V[øAÌÖà€áµàí÷v¤‚ý”ᬠô‘jƇ'yüâ(Åô ÖãIÚg0£ ­úA.y‚Øó¦£ÛpùEºœ… ^bôP½˜Aª¦k*©ššb߈ v·’…Q/¾tÊÐçéÑž6ª­£uÖ8Ó;c ¹Iæ‚N'Xku\]Ñä]}¿ž¤‰íF;µ.ñì¿…]òÇ{ÃÅy`¨ù?è?_,Ü´ž¿! ïhPøqî*~©&䦀Èb¦ÎP¢‘7øõZ £5×0áÈiÅaeaùvu©_·È“– \¬ ܰÌ×>,|%yø3顊çSx‚žãÌÚl ÛG%4UÜT½¹»8[³}õ¨N9Ydˆ|˧ú¡ Ó ñ;HKœ]}*Ê+œeȨ×§“Ǿ–¸ƒ„ÜÏ;Cˆí½íŽ™‹'2Ô`,?ž×*@þýeFvîç#MåhÁò!$…î›”³XGx>Ñõ}êiPeßF[(½m°Ó£k¤õùä®î"õ‚ K‰Ž¤æèée°h!•¦ŸžQ3¦RNŽEøö\º°I\;.—‰Ãë¼ý:Ž·ÖW†Ob=Ÿ ‘I´ˆ*îl½¸Šu[©¾Èš•>wtÅ*²¿cúÚ¿jŠCAWD~€v(*+ÊìºSÿå%›hUyÃéÆª|@ñ9\0æÏ@˜èCe]Rìò¥l`÷¨Júb».¬.Ñ9'ÏN·÷[!WJa’™"JRâöÌ®FýÏb<B=‰çÊ­¹0.Ö~çù³W3}h ­*a'ÏoÇqò××+«.ÝêeQËl‰ qw.jy69F ¯Ô…M¯Ý!NˆBwJ®ŒÖÊ :150EÜÞ•òEw$ñS¾ ÎÒƒñ¸ØsB¯½¬ûòú×_¾›‡«V­ßü´i±3¶¢ûH³c^[Ô)b{ù…Q4p?¶P=ºAM5‘ +'ÔÜÄÇÎîŽè­®üÎIzaØ0–Ü?éæQk7†ÑÕ›ã¸ç''½±œã[Ö$PÅ-.+Ígõè;9ó3ixc¯yG–°9­LG£Ÿ’gˆË K ´ÈڶۼΦDds,|6i†· žêiäÌHi¦Âq † ¯² ,Õ™$ûmôuØéâ·.; z&¸Ã2 Žƒüí=ÖwíS½+Ä’^·†”ÄI€<|t°4BZµµuâñh& ]è4*¢ÖË–õìù8pé–ó|NŒI…®s5¥TLÄ#|ÑÒ‡æ ²ÍZMbVÉÖüQÑ¢ù\7*ªKë-äêu›šÄ=OitßvÒ‘«ISÊNpÕ Š|i¶72‘­n`]ZHòs„vyìÆ«Ñþ,ì¿¥–Z(?\@ªC׳¯g¶|?Ôu}¥¾º™E×”ªëS(Íöâ©Taù§õ)ó¤ÎÏGBbñc$?ìP ¶Ô ¡…y!G¦h­o7Øñ¿.×ë×ë5¸v–å£oæw`–Ãê$¥ã‚Ç©æ/b!ù¼kÅ ]™]ÕMI^ËÁ5¹j4Òk98zÕH™RS(=r_~Çs  ò!”¶N†–Öᬬª§Æ‹5à¼9ýR6;ö5½ØÇ2®»ðCQmZa݂زÏ,E½|~#iÐPélöf$žQ Äö·Ð}ß¼+šåã»àiNÐKÛp: Ìú` ×§J¹ïBj&ªü}£Â½5Wézô¤V J´Ç4œ¡“4ÖšÒŠèjë#ÉçSçù#*K–$Ø> VSÞ¿±œ¤äšÆeă.U8èòõT¸1™^HȘº´_âJ_›­ÞßRЉi n–ë9ö"è{2RØrÆeŠå½IWÞò¥àIЦDoþ ið¼I=óg[¡(’÷˦&~EìϳÒiÿ!Ts߀*ˆ±Qˆ±|\pg¢â–yñQ}ž­ï]δpêb&¿v$ÂŽÑ bÃ>ö°E誚‘O¾ÌÐÍ3 »ÂQ,ÖõµëïÁDòÓ³¬²‡Ä6èMý)§'Aö™Üøpaž¹¤Vý—ËR‘¦Ôáô&£—äŠVZà,œ=ma[Rx‰TuaC0Î{Aéz_ùö9G@EõëN‚ W¦HççÖØäüpGì~ÝQ*>¡ëÛ†sÅzšû<›2VœÁ&à-öÛ0â]w§í‹Ñ}GŽWø /¤bJ°È g8Çž4n+³e]äz¦ò)•¿' ”ôrÄúÔ¤ówÃGV‘ù!1üsá¾AfýŠâZ%*Z¢›ü.`çÛ³t’¡Îù‡±¤*qUÞ“#·?aÕ%¶øÁþýe`zêÍÝt9egæ|ŸÑ˜öóÌà–˜WåÈ‚å9!Äþ¶ºjžÖúF¶ØMJ$t$àH5̤„ÏvƒãÓ.Ux6ÔíV‰¹^“Í´ÔI—º’¹×üø?· {8$º£?ÑràSÓ‘Lg›”ëÌ•ÔH”švvHŒ¸O!ÐAì”ä?$qu!ü|Ͷ¹Eú¸7dë‰Õ*r¬ÄzÝA¶z.×j»XHóyµ› GYì|{wtt…±Çب+ÖÁIŠNÍ¢|J»ˆ(?æD‡^Z‡=pmì45ª™°Wçä`eÓVú•û·L¬ˆÿ[@ {ÚB›@—ŠÉ¼ãŽXVÀÍšù]øa¼¦Nñy‘÷tn·qÅgNÌ Š2ÝBz[¯¼í#¢>'qãG|ã¢}†&k¦Àa°äUpþÌakŽ*Ú öêµ»=¥´cÕBPäU4,Éóª7È,9X 1lU'º^%¨Tª­Ÿ|ôþPD¸)·Aƒƒ’—Í@Ç(‹kâø¤=·½‹ ¡[BŸÁIÖ³Sé¦b¾åçè5y±‰£r)ùp Î,Çávyg,%†]u[7BȲl¬Ü¬Ý±žákV‘èÄ®°Üy‘ô@!çn!׉-ÿ¯.tÍ3ï)ê$Xî¹±QÞ?â™d†ˆŠ,°tÄÕªò’Ëhz<®ŽÒ–D…°mn»²×†µ^³ë¿*`Y ,Yw6ð¢Jxùh²ÞûmÜbu²†YË­_÷w[â_c«µßOÞ’ÖÇd¨þTt0=_¹Ñeé’ߣjGïv„õw˜<±F'YýYªWêÈõøis|–î)XúZ~%‹ìbœ«ñÝç‹ £)?¥¦‡˜v8?"Þ;¯Ž&†¬ž¹ƒèS¨ÜÓŠ—¥?‚UM§L¹UüÌ NõMWU÷øE‡ßq¯©Ð2ÔÙ&IW#Sã·›‘K PZºO¢OlGÂØôR%5[_÷ £„báÕœK‘£âÚÉ®7-|n±áÂkÁx5`2ïS!µámW^·¿"(^2ú)zÎnT=,ŸÂÐ8`úó ®È=­˜ñ';½D9KÕæÉFÂákwé…f n·—ÀžxC³oYzµpSM]‰&‰aqï r²™c“}ìȪr!2"¸²Íõ+ø™ˆ¥¨ÌlK4ì=ÁUœMïÎgjÁ±Žö1-OI¸ï'W 毩·©édF(æÔi„­œÎf/Û¯9$Ž=p¸¤ÍÓÞuÁ¢4ÙÏ|¦D7 +æÞ+ êî p¥$ƒs Õ i]BÛ©²(C6“5Îɤ®ë?Y¤8@‹ÜÇòÀž¡çT͸°u¬žÒXu(oÕ³zr½»§­Xl^µË²çrÂΧ|~ß°ÈÅë4Ô‘zoc†¦÷ÍòUÇL¥e1¶òYMoaÚ6f(VM"vt8Î…õPw͈æv¸É ßâh)Þ†¥ûŒß&±[£—$[³˜·¿›XâmÙŸJ󻵦VEç9ÌÉN¤ãï}mƒÆ7oÏ!ÑW_šw.ÃÛ0eRÛ%zˆæø¤’Õ8MFa0ö ¯Ù7!I"y\„Cm«äWWj_õ…ÍÄUØÔÅ--™ÇU¯ùGÚ…b]÷o'ìBÅ÷>è_à”š6nÃÆ OJòðe'OÞô-YO¹ÿ@%̩ܙæß#LwßÌc>—­â1aøøu¢z¢Ä7úœõX¹K½*Ê+£þ.sB³'’AC ˆÎ×Ídç°^.w= Ôª¤ËUôé—b…½ƒr¿I—êÙ¯C«žI›¶Ó™R¼ßÅ’ì91¨;HˆÍ¥Å5|ÒÎŽ5ÓVêćªƒLÇ*%ª‡Ç´Sº~ŸŽmóç4;2¦Q[S¤‚üŒ"v‹Š?”(XÈj+â­qúX@lJ;ññѽG-C’œÇ10Dÿ(½~Óȯ†ÔÊŸ§'¸;º™?Þ«4 6Ü䘻ŢsÊ>´ÁÝÑÁÙ3ªyžQ“U‘>Á²Í¬õë.Õ¨‚úûƧèÖÍ>]cñëaÒ&YG0(Z’º.¶ùR—ƒ¬©;WÈéHfHÙý‚ÝÞjZ©DU-hÖͨ¸ñ·x\ÚBÛ%À¶SNUj/öÊ ¿=u‹>ŽýXßT¯ PÓíÅQ{‹ ­¢ìÌu˜K®JÒèm| ‹²ÍVŠâëƒ[Rââ_ºjæNºãÑé:nÃ=K ‡gÉâaŽÇ¤ã´i ×ÓÅß«»ûÊKõe$ó¸—{ëÛ}ù»_õOn/$+p‡(-ëÿ”U ,zôºkÎÚåèÕê®Os^ÍiIÕâ³QÛB e½³>æèŽl‹˜=ºÁ"ë•¶ËI†üÅÝ]¸Öóª(mˆá4w;U(´ uÄ*Qn¨:Eó12MXˆ µ]e‘Rb9•? }•`ñ[ÉYu)›ÈÓ D“óz<¯û´>6Q£—\ß`ƒ ñÕ\âdMiHyH1EÎt“¯…Êù-)øóú¹Éè6-îWrl?5ÞUnÓPÀíþ¾(ÖL©€~3{ƒUÐZU›mwõÉ_ÊÛ÷š÷Ök¾E­V-.)=˜él@êµû£Í ìVŒæ¹O^*â“ðcï°±+ ÚࡌØÜ–q•¢Vã¢,ºžcü„à° žÒbC Æo=,í’,Ì“°ŒŽ/E¾_[§õ€.ÏãÞ]éx¿5óæê~š„sJXµsfë`º$&úÁÛsKÈbtÛ¦’Þú9Ø›äȆ(å#eI0ïðÍ{Ç¢Õ—#ZÖú'À¯OÜüœúuàæoiðˆ¾e`1Vż)´’r›½/•Á4ÚåÊ¿"Ù¨f“i`aÔz+Ìèä瞟´Ö™­Í1Š]%ýN×W¤—-Œsç-ÃдÒ"ßÁxøgôŠ~ÛˆÀq; ÌÓ ™dÒ7c–r{âsq±Q” ‡—ÄRœ[ÇÜæ6¡Â&¡³Ô\8XJ„xú9>ÙÊÄŽÅ~Ç`ûÂRáƒß§ -Nçg¿ä±F̺ù€2«¹n~¼¤¾´AôD„Zѳ OµãèLƒóÛÇÀZw^õÞµ&4­ÃÔJzHu~Ú`³‹d^’Ÿ²¸IÙ>d;1O"0Ÿž ™6lçf<êø“++ÕÌW3wÂÒ뢔‘áyô:é²ÛƒÇ4ŽŒ·‰¡2ÏTñ/ÂÔ\3㉂,èNªãÓí¿¥– aPÂÚ¾:<‰}ô“7#´7i¼jW2»ý޹ 7;W¶6±–œÞ‚¿³úè oO»¤½ÛklgšG5ÿÊUµ endstream endobj 2793 0 obj << /Length1 1975 /Length2 12918 /Length3 0 /Length 14128 /Filter /FlateDecode >> stream xÚµP\[¨ $¸;ÁÒ¸Ó¸»C€à hKãîîîAÁ ÁÝÝ=8‚»ä‘;37wæÿ«Þ«®:}¾½|ïµö¡"SRe5±5IÙÚ@˜X™Yøâ âªâ¬,vf6$**50Ä ô·‰Jäà¶µáû‡Š¸Èò²&ayÑT°µÈ9YXÙ¬\|¬Ü|,,6Þÿ(Ú:ð$ Á&f€œ­ ȉJÜÖÎÍlfy ôŸW­1€•——›ñ/s€¨5ÈllhP0„˜ƒ¬_"ZTmÁ ˆÛ¹ 0‡@ìø€@fCkGf[3!:F€ bP9‚œA&€ßE ­Aÿ©‰  fvü—DÕÖâbè¼,XA6Ž/6N6& ÀKx€ª¬<à½Èæ_ÊòÿR`ü{w¬Ì¬»û·õoG`›¿Œ m­í mÜÀ6fS°ð^Jžâ aÚ˜üV4´r´}±7t6[½(ü•»!@JT`øRâ¿ t4vÛA™ÁV¿‹þvó²Ï’6&â¶ÖÖ ˆ#Òïü$À ã—wþç|-ml]l<þFS°‰éïBLœì€ê6`{'¬Ä¿•^–þ¬™ Nn6Èr56þ¡æfúKÈú{ù¥ /;[;€éK! /°)èåÉÃÑЀ88¼<þ)øoBbe˜€!#Øé÷—eé¿ø¥À®–—d°üþýý¦÷Òd&¶6VnÔÿ:e ”Ѝª–6Ãjþ[*&fë ð`å0±q²XY¸¹Ü//^ÿíçïøOõ­*‚ÿÝ?ÊÚ˜Ú~Gø]ÅËöý§ç7í¿G‡ðß!m_z ý3º,œ,Æ/ÖÿçAøËäÿ¯ÿ{ù¿Àÿ¦$ådeõ—í¿5þ? †Ö`+·«¼4µäe@l_ÆÄæU5Aÿk ØÉú¥²×Aµ1³ú{/ÁŽR`W‰blþ¯NúÏQ¼¸·Û€”lÁ¿/+ ËÿÈ^FÏØòårq|9°‰ _æò×ÙþfÐˤýw ’6ƶ&¿G’“ `èà`è†ôÒ/ÄùÒ/³krý«á@f[È‹ à¥\/€©­ÒïSæâÅ~/ý‹¸@ñ?ÄJü!^PòoâfyéÍ?Ä Jÿ!Pîq€ïþÐK<ù?ôOá½ÄSüC/ñÞÿM<ì êz‰ ö‡^"¨ÿ¡—ïKÃ?ôâÓøoâxñòr§Yÿ‘ÿ> Éd{±6ƒ@Ž/×Û¥—jAÿÀ7æÿÀ—lÀÿÀ–ÿÀ—­þ/ YÿÁ—ùÚü_ÙþI÷¥0»—)²ýG‚/Ðáod{Ù$‡ß½ðGþ’Ì?2g}qù_&1wý©å¥Ë€Û¼dïô|I×å/ü¯&4vrpxéÒ¿®Ž—ýÿõ‘\AÆH‹s¶ÆüÕ-·U¢D.L;c°'©·ZlLc ½’SúßãU³2—Þ•H-ö°J}´hW³¿Í^›¿ðØ®y[ëÆqÍôVjßì­Qìܯkè™bò9ôF¨\Íd1R¾"‡^(%’ŒDa³^U*tOšêî…jœ/RÜrA-ŠmU_2åñˆy5Ž6U MFj;œ—49›Ö1[‘ºa)ŠéäïÚîâ]*16ú‡V0{H:#üäœýwN)ƒ!˜’üÄð•+yh9E·éXFÒØ"‡&½%ŒØ;ž Z½ÆºÆÀŸn0]dÚqÁ%h=u¨öuœá3T°;nék#寸5zªd,ÉWr§C{æAR|÷öÜÒ±¯rË"L\x¾ì¸ðIËn äâºóiqÐBá5,¾Ž°©=É{£øŠ_†Å\´ÚÖï ­ÌlHDwÓÍóCÁp€d}ƒ¸G„éózáÅÅ7]'‚»¡óSâDMÁÂe ©¶ï R.×xz|¿ä%õ1wùûswG‹c벌hqs4ÜW8[…‡îÓ"”M[V_Gfw}ïÀx 4Æ©<ú€}"W6#éQ;Ø}q.@þÁ$Ðãý,ðúl>ÜÚß9‚¿ÈD45ÕSR?æÉË/¦Ìª’šÊ4?=€0ŠYÂÇ2ãÀêÆªª6š/aJJ AiTþÛ’f;çkºœç«±Î~oò8ºâfj^2ÆÉýOizY„ƒR©îÕÊ¥’>Ÿw4ÎrGÐõ…“Ø=n†Ì—OÉ8ñž0Ó˜/EúÙ‰äR‰çû~vml­¯¯Ë¤Žb$¹„»;Ú~êc£Œ3Þª–~‹ðÇ3/Ža_Ùðݩ䠮E=™n¦5娼áIÏv³bç¦x˜•xéäT•ìˆ1l£­;°mê}—D°¥yµ£l¦J.m!}ÒWJ{º‚qúÓó½¹Ý“¼׈—ñêŠmhê÷œ` 6¸ÝbP#˜C4Œ‚;X;îÒb§†„çî*BšçÌû9Cú¬ñ[W3‡Å.kS}9Ǧ*ÐX™±Âš“i’wcÄÈ‚hqÅÑQ4s²”4¹»¼&î6ÈBµ •¯©XÍ¬òì&þ^2ÐHÁY?ÂXÇ$Í’W~‚BŒÀŸÙŽÓ‚\ʃ>„!2Q:? (yÚ qÇ W«Õ³ƒhé3ìt[n¿‹÷‹Kißg(sÌYŽ_ÕìO_•­T8‹ÅÕÔjRiÚ/jɦçWAúÃ~>Ð4à0Ú¸ß^'˜|ÔžiÇQúv 4¨ð<ÚǾ$½©pNy„úÅшâP'Ö %5ÏåQ¡ñœëÝ…PJF¢ ˜ÚdɈŽì¤¿qMöÆÊµsQx3Ï[»\9úÃ,9.ÖŸâÄŽCö–oo7¶')uõg ~ 'â½z[ð¡â !Φ \ŠR2Û™Y1GÀÞ›UÇEÿÝG÷è ð4'7“yÞ •3qÎ’<“J}{jòjEr‚ÐnÄ2:µíÍ £Fòá7~ˆëÂ!o“1Ô©BzßPå?ÄEðo±Hõ¬³žâïVÓÙ‡âЧQ#¤õ®‹õ¢êõ·ŽIcku®œQ‘ch®~•ƒÝ6QÕ=IÑbdbc—Xb6ø1SÜŒžÈºÉç âã¿¢úçsF0h_¡<²TÃÏOOˆâ¹|§å-ȇƒso&ºƒ¿¥æk]"‰'l:Ãøq¥Úh'ÀnºAŸÈÊxLÐÞò +¬æ[1,°™•Ofü’·1iŒ $_—·å‘ ü(Ä:•ærð2Òk¤¾WßÌëu ׫˜‹Â‚-PXº6!ÒïN@€™ú¬õýø˜;®C¥´Ý (7Á‘k·2 ,eì)'ú½ ëçÕ¢0^¬º|@ßlQbÔÞœä^³É ¦‰]Þc@J–£h[%6z)žKÛêL¿,‚úK¼©å1úŽeAEXePFzÍèøÄà7aÏé„ ßF‰§­ùsÙ<\j­¸ë+oSçÚøàÓ˜­ù\9.[”ñ}kUm›qG®Úå!~^Ë7×Ð-ãd× ì9þÓÃKzúÇÈLÃûƒ ·éóØ*Šè¥¾gvG!Åô\ÎË,Z‹gŽÎ¯ÇG¦»>|³q&Ë‘þ7üéñhÉ{†rƒ&ÞÇ,dtp­… l=ãøU¾àÛZhˆáh6e…gf0ŒeÈ TçCëzÍ¡ÿõZRü(äWG¿gÁII³…ØlòÜ7“w:킦¨Ÿi´ŠÖ4'¯ ¸äá‘0ó•øhJª,^C+t`ë=U ›a»oL[$£åL}»ûüê%Œœîc ¢rÿ&É!ROˆºº–¡¬“$¥ÏSùµ_ÃzÔƒ°&™ µåûr»«sZÅE3»oŽŽÀdÓC0 ‡hÝä\ [¨¦j2ÊjhCíìéùð›l0‚ÒtÿMÄcM1›}tÓÀK_Ïme I,Q§J8<ýô 3–Ë÷*œå.´_1Ð A¬ºÔÍ´Ü™ù‰áçÖ"ùC>ž'@˜Yk”<׊æÇ0Qö¬·Þ6Ô ƒßÌmp–žÐ!Õ`¢öaÅË`XŽÜë*馎~.…˜¤hW&šƒ ùEÃèûF6åªË]Kr!üÄ\€ þ,Ò•xm}²¾ºy©ºÀ%Á÷.üºBpvÿž,‹ÈÆ'ëpzž²€öa}ÓGàY»ÎÎ$ý[ùŠRc®ÔžÖ /›ÙjJU’$ÿHÉ8õÓëw#(úK¶8“ÁäS[›¯»ôg_Ca½†úEJ6“1¡%z—bÜ_’|•™µæ‡Çkÿ–gÔß28ãRòú>RlŒMnߨJ%·lU=°$ɸÙQüsi¹d , XTùL¾Í.ŒR?‡Xœ‰@:Íz«WìávÜPìH¾L#²i„µÉŒý Y¨‘”ÆŸ—é)öûXÄÓ÷üXvÁ÷DŸ0ýA‘3ÐÇݱ5›y“ìÀµw¡á[_SöŸ‰˜õCÚ•@•ªÍ1í³ ìWM§}õ¶U¼ë–XÙÄß3¼áoÝÛë(;]Z0MJÓÁ3 ôR0BÀ™£)z Q :bT¾Ü¯ºBrÑšég·ú^¬J§‡#4‰KZRZ'ümÊ’8´Ê¾X딨3ƒÌ¿–Š(ý ¾ %—3À±æ0ÌÐõx c‰¸å1tjMµ†R®ÿCüÉgÌÅæfÝ'˜üã3÷WkbWi6eÛ„U$>²ðJUÓ+9ÓJmçÿ­´Ï†´¡äAº]' Á5²Œáìóª óê1]Ýžj;cí>yC–ûªÚ‡F~ØÙÒBP탆{ìЧñßÀÕ óâ¢<Ûã›…µS7~(•(ÜþˆùŠìFäM}ÿ¶ç‹4üʦŒý –sëF~´ï;rêG½î‚3ÇéÑh³¸ަn…W’¹cO¶;sß»¶yÖEµô$¾>o³½ò).¾?¸mÙz¤l)“×é|w üfüéS%C)fê¤ ’{Öìøô|T/LÑ+²<Òì’bØðÛ{½lŒ1rl¨‘×dt‹©h Uelå’Ž¶ !ҵǸ£w¹ã\ëB”ú¯FkÙ^¶V÷³^E!À;qy/ÙÏÊ,ô5Ë,º‘­êS—ò̦LµPŠŒŒì(‹L6±d€€Þ¦¯H’)Ïz…ñ^( DÉ@×ݫߢ™ãŽ=™ðMã‘qÌÃdtиÿmªº"»Ê‡¼XUWŽô1heŠ–GÖ›å7IU׌ QB0]&Óï ߣ¸d…´s>{€Pjv»É¦m9Ðö¼ví[ü«Íåô³±yÑY´O«+^Û9O˜B@¼LØæ†,ÇnË(S‹¼eØyL¾Iù'ºŒÓ!"2çÌKÁ1ŠÔŒfF5|ÝŠ¯#D/ b±Å”]È^@r2›£ó„ÚÉK>L£`_Ð?DNeP 8}…G8Ú=ÀK!i°Ks iQ³d®èày® T”(žÈã5˰…WOš/7 ²6ìõ³íÄ„« "ÁA~·!ŒÞÚ«4ÃÕõ ’•Y>MY…tÉ@Š˜wÛj¤!­èr AÕ\”âWІŸEìÉw¤WftSÍJà¶’ïWkïnBú€`‘X _HüzñÑ–QmhõÈŠpßSh‘ú$œÖ”Íak #’È Zö–B¼ŠKk2&1šclÈ|¾±ªÑR¨ƒ\ö.cYf›9-/÷ûöGÙ[†™¯fªãþ³^½?ׂ\ËÑ´"¶^Ãâ2”ê8Kö¸MŒ-JÐQYµ¢àÝlǼ ÿ(.»Ê°[õ«ñÌÛ¤è1Õ¶¶¦Ž¦§|Ȫ<®”I+þiï š~Oy„ó‹MïEÏô|mɤ¼u•A>µáîB¡â`Fˆî^ÑNÆ“WÁc}í>:ÌøØ5ÀñºIŽßH­¼:Eñv7Žs19&ä’a¨Ø#AHÁÊþ˜ðJê쬘A¬Üs¯3&“DµžÊgÉäíŽmÇ2çÑ[zòø\Çyç¦2ëcE0'±=’µmüòÚx–…srmÔÿÚ/rO¸ùc8²äO¯>%ïmpc•~`ƒéÙ «ïVQ‹9Ð8V'‰á§º¶À'ºšÞA:€Å5IÜ©ý¾!|c¼×°m/‹½+¦8,ék•%)ÌmÓ`Ã2xŒ9ˆ¬&ƒÙÙÛóEŠÑË·lGMÔ~¢gqøIô|¶r­Fy†3LšËXO {á&6ͽ°[¬>Ûˆ·ê-çY’ÃMnu®ð¡Y¾dTé!¡úN쉪~JµtTýÙ<Ë3öà#íÔ†‰\ïÕ2‰Èx¬ùNqF‡KÈßÁöjk~–mXC†ãÐl!|Õ¸KˆÖiQ…”ƒ•R²Í—ÞæûpUÎ@ëWOèì…ù@¼¶óo·Äž,p¨? kňøÔ42°Kn)_Öí8²©sB2K*›ŽS¿,\é: {¬-ào*/ƒ WÅ3ãcM˜«ÇA*ñì2„IœÙݲh—°þb{Ï;z’Ìò%E†ÇyH¥ßèKkÛ'‚_}Oãûf z°Úô<œà>SóbëÌ_· _úsé,ÎòpÊ"Ðaƒà¯ÙÑuÏ6KGqMV}¹u×C„•‡vÍ).<ª½gQ}Ô‚‹b6$me{ÿû¢¹Šº¥ñ‘Zh1ÊŒ ƒ¯¢ž*zÉԯؿ´/œM‘7oJ…ê€Ð[pæJtžÕV¢T-†éÜÞ˜nšlüÒ~Ë×:“eyƒË4¶‡ø¾Ä%?ÅO«êÐÃìØ97¹ð)J¬ç¤4ŸL1â×Q–bmn­ê\Ú4rµ¶7“= q½äºcQëlŸŒóÒO¡o EÐå"Æ¡ôKó© ë©zIÝ~Ešs…ûJúƒK¤(ØíÇ«¾\BºBÔ òÆ2úGto†yÇ7-¥éj=Ô¤Úû ¬=ꢌ*9ÁwOx?hÔ´Œý>à8g"îV4»aŠzÕb‡Õý<øÎèÞƒÉCa˜^«p÷~RU8`¯è¼ÆÈ¬·eÁ¬;*¬}¿û1H8qZ9¶‰5‘¦ð2>oQ¿ ëµÜ´e‰vEŠkÞ<'’G”!E*î”[ô{ùÛt!.n;õ˜N6 ~~ݰ‚›q0uš@£Bßêf¯R_äsæUL‰de¼,Î7wÚŽéX0ªeq×­6—¾²CïŽÌ#ßÄivÝŸmÇ"ª3$ü <öj|U;š[·é!`¨EÌ+°Wx>³rÔiMvlìßtÎrø‡íN=Ì"_¸‘ C;{âÜ´0ÈZEgæÝ@ñ‘ÛÒüžÊ¥Õ¢÷ªÃAbòhÓ!“†E¸p®[‚fA|ïl°qz…Bûë‚ïB³Yb:îx_Å;(‡ /Y,a\/Æ<ÐFH58W3H‹ÞZy Y{¡ôkN±ŒƒÒmù»Á9rüö¬LI®y’í@o‚ŒôG¸·Wh&;"ÏKÒ%švº}yÉ•[œÌ‹À/c;›Þºrƒ W2G”„@R¥úóKrǦXŤióçé­-Ÿ~·4¨ë¾{+¢ç7à]aê,ÕØË—Ïn«ùêǽÕ2’M\Ü"RF@¤L«6AÎ>žhÓÛé¥":/ïpŒåxâSj=eMëÄ%¡ñ¤<  j¦"§ŒÐÏLjÉ`ÝWÓã]MEmJâh´êLFÏ­­Q*€ƒ—rª"›yžR¬eËÕv˜aA‘K;AOè:ù1€SŠx›´‘fAL”lÒÍúUQ,û«ê`{“˜Ø¸ƒ1!¤D€ £Çº·öí‡Á¬“‡M?®H/ÅRêóL[¦â\ÒbFaƒCN‘¹JŸŸagI]m@dâZUYhZI§Å¢„ãz`  `žhã¦dÄ3©öœŽ÷Öz “Výðtðòënö‹‹ëùð \1á×Í—°ÇŸçh¼Y ‹ƒîÈ;\–j¾wð.=ßbgœ±¦ÕÙzPј)Œ4Þ™ ?¨×KK-[ƒ2uqrÓ½ŽW²·ž|î˰Þ'äþêl0q©Èn ×DWNW§¾ ©»3°K¬ ? ÂwGÕà™w©XTòd†iì+æœt\ÆÕ£+š±Iò½5¶¼ðË*‘³Œ^Ó\¯=ñ²ùSªV¬ûªlF3)ŽŽm«l|'@X†f§½·ãÉ­'O>ì¶[ øÁ[š ýDÿ8=X4g½oBnw©Ø€p$Hê€ú Ã<‰€~è½VœJ˜âœ'D0´M;‹Ô Š-âÕ~ðë/Eô©#¿Dw¢èR¡¶ÂŸX6r2 Ž§s|Ê7›~ :†vrºg|ï«§m.V¥tï>qʇÐ}ðf¢Ù>ëŠdÊt`ƒs | „\q¾Þ„âí«äü4µù}e¸ü͹žÃÖ©ü8í´ƒ~zE Al˜²$\„NkyÕ„WíC¤(ÞRJ8T¯ƒë8Fq2J±zV¦9—3w{£ÅÂêŠ$¾õë\SxàÞÑlerÄ¢Ù·üÔÊÃ÷}ÒM½dWÓC@Ô mTgD_ö¶ä_¦2ºå¯Â¬AIRëï̯Õ[`'¸ÙHÀ0TeÇ>[r˜TvhhžÞZÄ¢½“ÉÉñq‚š œøæ²ý°}³S‚V'Ìå7Ô|™©ìÔOÙbiÆÎœÝ¿˜ #Èà«oú ŸŽZcº}]|z)K¸ÕóÔ.K©{Í®#´—¾¹€µϪžýÍý«3&·#rè²HÓÒRN~uºöT÷8ßw›©pÖZù¡!A¦ôRÚ2{_®ÝD'ÑÕy#º>L5P±‘«^ë¡?ro¶„¿0¨ŽßOÊ̇;—] >eÒO¾'D‹ ÄmiŠ!¸ 9dêˆx h}Ü~Î[æDþ<àÞBæ•_ƒŒIuîD9™V{ˆ`!ÂôcVüNÂÏQ(î#u šë“»×Œ&½äxØúGdš+ï¬E9.W¶Nƒ°6—oCj\µÊœ w5¬˜#f:ÈZƒGu‚É«u!¬| ú0Ñbßeùž¢c6‘GÖ;FÀ S‘±n­Ü·~p:}™놢Œ\F jLÚ2´6è ˆ7 'õ~Aü÷n²/QâyU¾yïîìLJ‡OƦÁ±ò}…Œ’ÌN—…ohZâLK »EQŸ|#ú©Ýè}Û6é„I‹²ý·ýs&ýðj–QGÚÚÓEm¨æ‘I4²0ßÁÄémÒ¥4g~Ú~i¦Qsò—º˜î=A_ÁdÞ­ç‰.$M%àñOÓI¨·£k>çî´´º×úõUœ{³¤ß2–é+®™ÙŸØçߨE;L°O{;¥—Dní„çÚl ‰}á'*RˆyÂBäÓM5ÜZüÜÝ+݃†-N·(sÃÛhOx4ƒ¸|x:64eyüþ†—=úÎEÛù~΂¢ŸÞ®ŽTWÙ:Cix“ä}B÷±bX3úœ„#0›Æx5ü ©>'£øq¸ £Oêg´Ínú°¾ûIÇÕ* Í–‡€ èt4ïâÍIHǹÂT]tã—T@ͼޱÇÌúb$zx“®_,ž¿åÌü:ÊA‚ à L£Ê#q÷4¤Fm½ÉÚvg”üåƒm'! ÂSR^»ŠîÑdE°s‡Ä݆?SÈröˆ³ÎóZÉÙÏÖfz¸³zõ4hƒ@¢ b,©ÎÝt®#"w,¦»smŒÚ“,XŒë%ƒëvXžQW‚àÂ_ØVøµãq²J½InFtHVÝyOf,/¶ð,ÂÖx‹S±·›a|Dâ²ZG(\*fpZ¡R­ÑØl#É Åû™‚¯7â° '»jþ[Q·Ø§m ½Ût‹zúí ×+W–V;€âwYÜÅ£Wµ{KAw%­Ò»Gl_PÉåÑ{[RÈX½ÉžcÚv _¡åGŒ2,÷âN•? {î½Õ'”Uâ“lZÂújŸJ‡„?‘‘¼^>†b&ÇV¤Öµ¹¬˜S–†ê’â`B²É¤ÇWŸÖD¬ö‰ËEÜóF˜’”Z õ@B—rßC‘‹GxÔÙpTa:º¡¸³µÚȵ†ò–Ú4r»6ÉE2®Á1…ò¡*zÒ\²øk›mýÁt÷f28G¬—Œó(؉ò±úXÒ'SLÕ%4šÐò`…Qás|äu^··•Üò‘,+m²©ÆÏÖÒ  «gÚh³ð6zˆ5’Q_y0zGûQÓ‰¢äñ5¥?¨—FX“ù8בM)Óy4¿D*Sd–±dðTêp¶æDëê‹f‰¢íÿ„#ÿ‰Ãë¾!ˆËã@#ê!;^ÍÉ­­cŽà°¤‰ 6»3þéÔˆ å‹JZMñŒ¡cú#¬?$¶lºû2æáÈ¢êV4œ¾§GŒùiV[ÓC%â-Ö¬Íéû³6äl´aXµöø“Œ y­}&v}tÎ-O½wŠbvì¬j œèZfêBº¸PÉ0Ë×0»jÌ@vN¨Iƒ8åž%×7åæÙ+¤J§»Ö&,è (rmjP˜ùæâÃå3¸¨ ñ5â—Æ·{ž‡ã&?Τ¤ö¾¸²¼™ö=ž…4YL驈`“¥b$Û£I•ßµˆ'ƒ5Ÿ^R&àæ¼Ÿ ó1õ‹ FÍ£p0îØ ¯ÐÖCSÒª—»wÇ€}c %FÓÒ=U¤Í±õÈl1+1aK­¼Þ\$DˆÌâ¡ÃX,bÚíØ~R)è¿¢UDZ„+ûñï$¡£E'{–GûóÒ›¹Lÿ>ޏ[•iÐÅ·]½W%»áka¨ï¿ÅÛ|uêó‡4¼û<¤I ÓyB"ƒ« ”Fˆáj!LY³ØÇt¦­ÍŸ§ß%hD­„K,›Ó8 j`PúðŽNEøÕ'@¤âŸ¡œXX2rh®ÒLðiÕ.š&'O"œ¤ºKA’ m©²rO°{Ý^ ª_2D^¯68Œ/F|¥T /¾oÑ4NFYã.Ð6gÂfÞk¨ÇÍÖaTÖ4ä i¨š\‚Y=Ǭj{"vÔçß¾‡±'_‹•ÃH¨òÄ #ÀƒiâgÒ¯Õ~-É$¿YMãÇtÞFñöJ·ˆÐj^cijÓÖ}÷½᳓ØÃ$þ,úxÊ<¸œ(]½<>ó28÷Û·ãJ¼râÀ¡ó0˜®¸„FŠÎX¿c“Wa·ãŠçHI1éúO‰ ®z§Œ‡W³?8¼@³ðŠZŽa'ª›ÛCVábÄsªDv®:% ¢If?g‡"y2w#Ûq5aÓmÃ}t•½*aPÖ:[«›d DØð( X·èœö¢¿‡lÆ¥ŠŸcÝF°±æÞWô%Ê%x0ÍÚTuádž<‹÷AÒ´éR÷%#œK!ìÈS­åmyäj»9”l.ƒ^FÍšƒôÞXV ËÒ Ùº;Ü58ˆ˜îŠPQk/;êÓÓ±þº è1£‡ú(ïÉ oï&”‰ |`¿Ð©VÖ­–RÅu÷Á¹”¹‹äšÃyxg|'ù”Öš> ¬¾>$)²Bm¼ïeÕ0#DŠhÄZ·S¼HÕÆJ?%_¯ÓyÅì æ¤l¹ŠU1¡ê®'ÿã;—MBùŒUµJÈ»±óé+ÓçG ©öà“+ž é†VåMDr·l[Ô¡7O¾ð¾«ëHùàó¢øl)¾æ{Ñç …ÌgЍl@xàã:áç¤aÍ<· Ž F­Û²ÌvyªÑj‚È 2ã>Û†4‚d’FèTLc _~  —óóRÉW.ÑÍ#€â§P~±qdW&Z^uÔ²ªh¼K[&ƒ!€2ÑžX•G¦Mµ©“F0é²òã¹Tœ•/õð€b"UnxÑÈb‘HÝÏG5ûþŸ¹‹!(b¯`ç{¿Io)Urþ¬ÙfõÜv·½PŽÄ5Bf‡þ˜)¥nìÑUÖKÆÍÏÃçª[ý ¿En‘Õùó¸ìªá@Š#çÃô𡇴ÍXýà`Ê/ÁåtŽ]ýç0wˆ²äR¾øzöžð >m-Ãõ˜[K%håÌ`A¢«V"ñͪÁ øÞ3SÙ𔿢ïɯÈf@u ·S™w¿þG¦ÛŠH^EšÀ‹´“»_)aƒº)%Î:øZÆV¼y½e<¢¬+þ èÆ:_'3Í_ÞaÓ^§›8VO.v¹÷YbkA.)´ºˆ 9t¥ÍÚ1ê’&zVõv0eºé!¼ X>"yʇïÄËöJ=Ȫg¦^ŽÌZ‚¡ÅA ŒAå_ÛMQï7uF%'Wb?×ü±Îìt³¸:Üž V)*Ù:lˆàKiÕIÛª—ùÇ2Ž7XÂĵCýpÞpI»«“ÌÆX¬º¶”Š[m© =/.í¶òù»!¿©€½û$ÕM^³{¬­d¼½†óÅÞ›ŸDÝÕÆ :C8J\ë%ùÔ5KÂ?u$AHÔÇPlHÞ>³¨ÆoÅ=t<;a¥ ¦Ûò‘Òƒ|Ç(8Ò—>HcqŽ}óŸ“ýÖƒ*׎oÚ¼EÓØ6%g¬ñƒW 9½0G¼¨Y<ªå”¤ð5BýݾÈÕØuñ¾®0n½÷›¡(Vazo¨üâeªMö%j‰_$6ýŽ˜Œkᆌ Œq°§ó8zV"ÓSåÜ…ÜT´3_]˱¯Uü\~x'åø9€ãÊwØêëZÆý¥äE˜rdn®ÇZz!ÌÚ©ÛÚIÖJuc«ìbeR'ýP×2ëƒeÄéÖh;ÛbŠÕº1 \‘×®à‹¶ý!‰îÕÂ… ~2æföüÜkÊø¯&R7ò CãQ¤¯‰¶j/bëÌhvü6 ; vùB4ÈÜ>R3W¥öa "°rŸV“áw3êøš¯èdÉ6gšQK°Ú1¹šp»]SQ‚íaŒë¿ÎæFÇÅÑšCãÁÈ.OÇÁœµ‚ª‘ðº¾ÍhFÎô¾^[œ’k*-Ó  ©ÔD¹XÚו£¿KT'á¡âjPćrÝXR!Ë¿ÿváåÞÚbHï{¤&<øåæ'Tá;öÞ’ÏšL´³¼qС^•=íû%ýî5fíÎR'L4LqÛð4¡†.§^¥Âž–Í4gr›cL ‹áTª¯0Jpú:ÄÂõ”dž’Ýi|Ú7ÊV?ËÖ¯ÂßQã ê6æiÁ¥`©ß ×8g¤Ù]3=“0L·z_`u™йÏ>Í7%ù޾óЫ–4m&7àpÁ$8™&õˬèS ޱŽàgóñ·âo¥…ª­Åéºe§¤°M¥Ì›æ†PåÊI©+CJŠZf#Ê;#ñiM"â=\ãÒ컼Bì4ýS¶‘¸RÒåD,-Oë˜*>Ò<’;‡ƒ*¯­†Ç‚½Ñ[Œs¾yÑèÀ+,A(Ì8}¬CN;Ú˜9QÔf |ÈpâÔ­ vFͯfF3Õášï†&©%Í-N(ƒð(>„o‘Ì1‚ _[Ä­ž!¦QéOkÑúø’~É=Ë À$y~µr}Š6ñ¥ú‘ H}æ²o À&=(a“n5¯®û¤Ñ|²È?ÚP¨TfêÆƒ*Ÿ™Ù=—×*жeYæ[*æýÕÃY‹É~F±"̓Ya¼L^2qÑ(ÃZØž’¸L|³ÇÛ»ÍÈ÷0×ÑÍö q¾·p×F%\žO¿õÓ…ÁN¶ùŽÂ­+ŠÑÇ Á1]ªåï³ã5Šò9O¼$TujÐã™ZØO´÷™g”rÇß é=^m ìòá·Æcxuš™ªêt—VW0ÙEÝùî½Ýýy$…‹v#§%D“)·)9c-Lƒ¦Sp%ÐT,–SA²“¤x‘–¦,¢È_EËÞzv´=ê˜bDw✴œgþºøé¸š%‹ tž¦ö™Å»šÔÍ¥ "~¨bažQ‘_ÐsúÐ\daÌX‘@ªþ‰Þ2 ëá'7½š…Úì¹Q“m¾ta_žH5†Õú+V¯ÔúMÎûª¼Ë™h·Ö*?ÂGF°ÇÝùxî>°òO&^ñ Ü«,—ñS¬2ÁàÝ¡ ü »¨#P§9–e¾¦94‘xœ·à¯wP~'T*¹ˆsH¹sv¦øÝn+E^m˜ã$ÊæÖ†«–=ƒîº©ÌÊyÑEÌNö¹9ôõ\æ,fEÃøµ‡ðwÎòr³˜çaÕú*¿qäÏdþ«¸L#±„» iŽ5_{àÜöÛùðÜÃ(©Žö€ÌC$ôÙÌ@‚ÿÞ¦xŸ"œ½Ü¼t™=’÷Gk¤ÒýǦ*¥:Xs°=QÙÖaµ®Ä úÏò$vJ¥ÄðõûÑ<ûxÀ楤LÑbyŸkB[x}*=" §B:þyÓ’.ú› $BÐyTÍŒ½ÌIg@©•íÓOß8áÞßãUÀ)âÀô«!ù¹Õ÷#õ’'=U¥ÉÅ„0J(?ˆyâúrX÷¿¾oúÂ>мczÌàÊ×ïZQ2S§§·®4oøÊ¡"eÁiÚ ­ߤֻúãUÉ3'!‰ ßlËâ:å78ÍÓ²9Üœ®Ì\“º¼ýGX)â„•|âb).æÊÌìp¯‹q'CËÇœEÕQü3iŸ¡HÎJÊ#B˜(¤&]);KR÷ãYŸ•àŒ‰{çÆ¥{Iªéøxš”0ôFc¾·þ¬|Og¯†gÏØ/ö'uÎt¸tìó  P¨ÈÅ<ε¿vÐ9m÷N÷ªr_=y“¢ÈZ²ü¨Â›±À£³O1N»±*Ñ÷ÖJ¬_WíŒÐê+ǪßǪ pâÔû!—jzâ§‘± ÿóÛ­› endstream endobj 2795 0 obj << /Length1 2380 /Length2 10924 /Length3 0 /Length 12192 /Filter /FlateDecode >> stream xÚ–PÔmèé.EéX:”îînX`‰—î钤¥¥»»»”¾ø¦¾ß¹wvfwÿçwò9ç<»TäŠ*ŒB¦¶Æ q[ˆ#‰… "'¦ d°°°1±°°¢QQ©‚¬AËѨÔAP{°-„÷ (ÈÈáQ&jäð¨(g H;Z€l '/‹—…ÀÊÂÂó·¢-” jä6È1¤m! {4*[;W(ØÜÂá1Îß_4&´ Ãæ!lbÈ9X€l#šYTlMÀ ×ß\м¶pp°ãefvvvf2²±g²…šóÓ2œÁe=ê2ü, odú«4&4*€ªØþO bkæàlÖ`ÄþÑÄb ‚£T¤d v ȟʲ*0þ: ø»¿¬:Cþ0621±µ±3‚¸‚!æ3°5  .ËäàâÀ0‚˜þT4²¶·}´7r2[?*ü‘º@\H `ôXá_õÙ›@ÁvöLö`ëŸ52ÿtóxÌbS[ÄÁíg~¢`(ÈäñÜ]™ÿj®ÄÖâþ÷“bjö³ SG;f5ø­#HJô/GÚ¿2s€ƒ…‡•‹“z ¹˜X0ÿ  êjúŠkðt·³µ˜=–ò›?ÐÜíœ@¨#ÈÓýWðû0›8ŒAæ`Ú¿ÞÅ ³?Ÿû»tXÇ`ùùúç›Þã„™ÚB¬]ÿUÿ£ÅÌÚâZBBô•ü¶u¸3²²Yy8Y@vv+ÀówGÿÁßåÿ!U4ÿ•Þ/.¥ f¶ž?«x<¾¿+qúk4hþÚZÀïäm ùwþuY8XL߀ÿß[ð‡ÉÿmøzùÎÿ3w´¶þƒÓü©ð?ÜÈlíú—Æã@;:<.‡œíãŠ@þ«ªús£å@¦`G›ÿR)£Ç%‚˜[ÿs`{q° ÈTì`bñçý݇G÷Ö`HÑÖüóÎ0YXþÃ×ÎÄêñ^±ìÖô¸U¿‡ƒ˜Øšþ\?VN€jäŠöØüÇ'€;ðqOMA.Œ7€™ bëðhx,Ï`f EûÙSNV³1ÔÈô¨öþYÿZ8€íL·Çdæð fûþ³Ëÿrö_¸£ÝŒ9~ƒ¿›²³üÚƒÍÍÿ!¬œ¿ã_ ÷¯ä__œ¿ú²y¼¤ÿ1øÕ•ƒÝ¿!¸þ’ÿ‘Óo1€,•drø+µÍ~#Æ¿–ÿ¢_=rüÿˆ÷«K¶ßÑo>ÿÃþ…<÷d5²6ÛÛY¹þøYÿe —_:òxv¿ÿÆÆú;ø—°ü~MÈý;ø—p²ÿJ~iø¯¿ôÈõ—üφí?ä—ð¿’ßòâùù%1ŽßÐ/™ýfóKjÜ?ÔÖÔÑÄá¿g >zƒ™þ¼É~Ï Èúø-1 û¯ò÷ã¹Ø;ÚØüñoäZÉò ü½—aœׄ=ø[è'ùíÂ0q„>åðÇ¥þ¨ö÷ó?Þ—ÈmvÊÖ„/À²* éG…Ð3gÆÍ¡7ãT›É´Œî³ÐfÇkLäÚi~ËÐ ¡„Þv¬…u1šsÁ9²;÷ýúäà†8¥Æ[ƒXåÑÍF´™‚îáÜ}¡ê.RÔ猪‚[wo=Ô}­àëa[¥©²Þ:rc*æàþpî”p©î*žšÚTÚúÈ)óä¶xŒ1R-B×·`‚*Û8}’ˆÉ‘…çÄåéÄùÅ8Næð™t,=šçA$[ž»ö kÔÕ¤Ûb©*«ýâ—ÄÚD¤ðç8£¯Ü…w¥ §Ý ó–>LG™Ù=Hè\¨ú:X9¦Qs( +€ßu˜Ê…{…„mYâ1ÔmQN$ø|?|sÎÜv^*"g*ƒü>è•®–ª;¥S)†M/  IŒƒ«AÂk9ÞM§+/0…+‚­+€÷•£|¶žðª4ûIîнÓM; ÎZ—4Œ¦¸3¢•6­\¾•oœ[É{:®?Þ  G®¸)¶lQ÷‘Y ñcêŠ#MõK¹]JU¸¾LÊy ED¯y6ËÄ\éb9ÈÍ–Š…|>´ÊïïÆO²Õü”çR~4͉qî›Ó‡Ú[UÕ¢t¤R²ž™µoŸW¬Î»Ló_^:bz6Ç”¿ÚåÚc­7ùâàý¨-o]]Mð^®X\xx¾àP'ZH?qøî#¤G'‰ù馘ò ß×SåÝH¾xLŠnNš®¢j™g"äƒü|æ´-“èFõǨ<¥"²Å/¯ý ·N‚ÒipÉ^ÏÁ†D¦>ó ¢õœTìîÆc}UTiú"ñ­Éí2度EUíNǦøHê†1D¥4c=€ ²±=àážgBbæêÉÎR~Ó¾¯ç¤,pº®3Ú'O)uTN «Ë³àÜ{Ó¨Xoýý±Áp¯\v€@³ÁÚ/H ëf–—óíc„PS_¬Ž@¬÷U߃g’÷8—ü Äja“Y4ß®;žìÌÄøŸ]\ÉׯL'üÀ)Í'»|[œQaêŸÊ¡nbùêýzõ²@¯vÀ)£|ÊYûò(/«=õ#ÙÍ›f u ­§¯”ïÝËÈY½çšv¨÷塜¤½•ÑÆ‘YV¹þDsE£ë(»÷™„_ŠHW÷©¿†»ñWÙ>¹cžÈÉ,Æø\ÜÌvJ-ª¶ ÁÃö… ²h »oäfc˜Nm6#±J_$–oð߸”ÇQB‡dJ¹"V’§£cPFgÛT±ø¾Vì”Ñë°Ç§ƒyžÐŠò–Ý‹+«úñ?6| †œÊeã«i¶„ÂÑ¥SÙÍë’‹}j÷ˆ[EZõ¯la†T ‹¶©êMä¤+ˆïà8×äú#'šqæùä‹1l߬O×~ô}T¿` c 5pÑÐ> º tÁ—á|û¶½Céî×z‘—°5¿×ðíá„ë18ó»Â‡®]¼59òVŽ û="³×}b,(’ÎKÚûüæ5ƒ’HyJ@2ùpòM>î'‚sËïy}†K_í1FÓˆú³°Ôž˜Y‰"ãéøf–'.¸G,R¿q jÓð–üVôì…fY†ƒWê|ù¡Z!·ÙG}¯<$œ:!$»B4~Mõ.Ø}Òu1N†ø–‚­|¨³pßqœþT2eÊXÕcÝdJü–œfâðÊ Q¤ëeÆzº”žèLrwI1uNt@ìÐñ…¨D° R§ÒË1;ØgÅ“­Èœ¯¶Tx!ŸPˆî¶šOfñVl'˜é¹¿—û®ò/h¥7ûÁ‘h¦Ñ—ìU”]Œ¶„¶´ñš–hb˵-`fûÑàx9 y¹DtÒJšÄn8áQ¤ÑÀ“o™¯GÁ“ZcñQYí ÕcPúE¤8P ú}¦š—+jGzÇ9$ïîø•ª!A/’Hô¦Êo‹_j¿©zëC÷¦y-yZ¶ˆ xg¦#ÙÖl¤Çœ0̚ȑז-Ë5‘Tíd1gúD×(‘ ñ€:n%Ô¬Dp5õ½ÓÌZiؽöÝGË'òÂUzþyx'L®ŸÁçl7¨î!__RÀàò=ÛÖºÕ+‰2Ì"OÝo«*µ* O=¾Ã”¨«08}ä\èZcê1²yé±N…7Ë?:¶vH«ê-Òº8aEñ!– oݶJNYmš!jŠ3dãõ3JövvÃÑî“NX[^±)‡ùîrœ”¼ÁIAå)zÎÛKç©"BÅ Ô–zÙonndØCÏHÄ„:ÞäVñöË)LuÑ«köê¬ç3,’ÚÍÒÕ‡½ääIÒ«ÐëËml ñ÷øhø¢oX ÜÁéT|'ÇyfÊJÛ=BJúbŠyƒq^Á©’¾ »MÐÕ»(Ü ×@9ò;=úõê;¬‹W;Ì19jÿ·Þ×Ú0ç¶QLÆ=Âf $'Jµ+^}í9Tc¥Ê!ºèÂ`:yª¯}RÌwƒ±WƳfÐ×Ï7 p~/Ÿ™)ÇÄõt^WÍ¡…!eg´òОP’E}®?ƒŽXkìû45h°#ÞñùTÜdT HFÊÖ¹¯ônÁ[<Ëì–JZ ´×ï¸VÇ΢¼|€â.¿®q N kÂudã!±f¾¾«N|ê™Oñó –ÚÅ(Z™ÆˆØÔC"#ªhc€ÿ~É[!™=ónÊZ CüO×¼¦­Ÿ+ÉAõr~Ó‡û>:É"¨>É'ÆIhÕÅÞð‰!ve†Ù]ø¾§þvÊVÃMÛd͋Ó|ç½*AC}µü'T±wÅQ“OÔíÞÇìÙ|?cÜ@]íÏJŽ|¶A(\3QÆ3IP©Ä²õÇ“9‡"¾RcaÄÚ¸ =7ÇL™˜;½›X=B_UN—OÍ mS6É»ëà‰¥žíl 9iN'éhxŒ.×ãGk“%jŠy<º/_&˜žÆÕl÷ÈB[æÄÔ·>±å„âp«ÝñCº)C¬½â\¡­ù‘`°œ„‚ŒÛyšÏÆÖ—zT•ý“øó±w dÊ“f1µ÷bíº©åÙ`Ø §"µ¤~>ÞÍc¥SåñMž™çV0¦-AWÎ_úô¶ÁθSÄk\ÏŠÍw•”¦Éò¦sŸú¿”rù}¨öHºÝK<žèõsnrtüÊï®Ú%ªÇÕð°ß{bºzàwU†2F¼®á€ÿÍ_Î7( <çKƒ›}I¯Ë@ˆa§­Ç]×Ú‘S_ælbm Fr0sûåó峫é‰ñʶöZœ½²”7zZ\8tiQSP¥{¹†ÒÂx´ë¼øÂvÅTŽçÅ—q ]£b ¦åy\ÚJ˜ñ2[@É®pƒ ÂSú… PÙBÁñG Jà•îeò °«‰3f²A:fwŸ% ôéÓø¸ä´@L×.N j‚ZŠžÝßó§;ùøL¥VÞ=Rqå+&ìæ¯§v 7æ…÷®´÷u[á„ñ_”rXø¥Ckƒž‹}È À7ÕÇír.nƒ›ª³äð!Ÿ³¢Qtí¡éTiˆ¹_Àêî9'§Ñú>÷ç¡âÉÂ&üžj Âé=A¬)àA¿ž!Û«U(=¬ï*¼êÛÁ$ìÓX¸«U‘ÜŽ€ªˆmJÄ™M7’IÃ&H)$¹HÚ-ÑÓÔ=ý.YѶ¬Ñj¬iĵ¸%°¯—+Ù+˜º0@*˜(0Uz…¯+«Þá ºôæ ‘Á2©„`ôšñGØ~¹ýÐ͙ļ¸ÝßÑ…« YZÍ Fè9¢Äâµ<ÚD«áz’÷…óÓÓçZ_Fô•H¡5»ˆ5„ò?¦ÔǤFgÝ€Ÿò]ôÓ…v‡&–½J·~dȤ“!::¼Syˆ5Ôö_‘P6|¡š`Îv ÙÆ¾š>M= ’QÆ0,^ðµJ§¯+Y"^]¶ôX­çZ°]i””WDz‹ƒ-m>‚Ä>æ}¸»òÁýŠ"bNåyQúxn†i÷ô;"üÙÊ™„­Î…+®Se,“TºJ}L¾åZ¬)}ȧ83Çø¦þ¼N/¥ìJ³ö§rCÆ#´{ÊZ¬«ü宬¦¡o>û7ª=M8EÈîÏÜ~«‡á¤{M'ðic‹ü<:†éÀ5SOÑ"ŠP~j¤dˆ;ðÖ§ãx ª…k~TU!U£Ü³Æމ³×†vf Ù;3´Ñزu¤Z¶sáÒ÷“j!ó¿ h|Ó”hâ4=¹lÑÆz‡ÑzJP‚ ÂHÛÄ ~@ñ‹??½NS­ÿ‘Ó{xlØn©θ5J­É…¸â+hàUظŸP‹Š/ö.ˆias㇭c!xÆ0`¤2®ŒˆfRÛV‘?WØP¢ï«”ºLF/ša"Wsùæõ¤lùFíÍPžèÛ­J™üåw¯2yvoߦ‰¾æ]|ú޽*kÜÌÄÖtúà`²qH5ç¢W2ʇP^ÖÖ ~BؼitX›¬ì”‰1¯=Ç;ÙaÕr¡ï{™vÃÂ$ïg†ÞªEäÃMæ±ÓvY(Ô½“C–3íĪßzç}?…¾d?¯aÖ¼ ­³7ª b¡8B*Ù/ýÔs‚¾_­}g/,ÿ4, šÉ>ºX¡µíuå ·ïØ3±˜ÍH$¿ 3AÃÓBØŽTˆÀjž¿6ÉÅ9_ð|û´…13)Q·ö:‘¦Áu’œ ú._mvžF¶ ö ƒmÖÒ)ØíÌ"lìùä.Ïn]|yØVÒ3®)\ís­ $ØÍÈjŸú…¶•b^òºwwjx"/éæ,t$|Û©`Ù#w‚ÎZ(és]ã9)Fø••±y){5e©Zµ2ðsbzECMKÊt–nKË˃ÅsT÷²r}CÌû5MüF*[›ys‰myz‚tÝÊNš,¨œxΩÕ^ãåÕä)u%¼ò¿°ëšÈ›Ÿ`àÖßÜOª½Ø¯ÏôMŽû¨”+¦Ñ4"*Vå6ÊaŸAɤŠ$ ÄRf X +­ä½y¹èIï¥Û-Óˆ÷ÎH½@ôY*W3nMÓÕ+t²Göèµ²­ÊR(ϸ÷ˆG††¹$ Òp‡ºW¯ðMý;®¹‘Q™ÒINŒ}(Ò*¨dPôÁ¬™œ8HcÍÁ¥ÒÐé`Æs@ÓÄÓ|Â8pËÊ”ùðq*r§ »˜M›<œ”ÿ,J¶ |YcÚS¼€¯ÜÏ9‡eiäµz‡T(±"~Áï`pAÛÄ·Q̈o½ý5tFEó=BÚ”ƒau \h'vrO®îAm{1îV*É\V}ø'ï!ÆoÔ»¢âXæÆo¬‰¿Þ(<ßBuîsã‹~-s˜¯©6â…¹ö*ZKòйçù‹òû°ûnGñáƒâõvØïO«¼uÈ»hŸHE G3 ½2Žr¶ÿ´‹¸°¤ÜÑî.™¾äÊê…Õ4yTP6ܶÀ4ueÓRû{1Ì×ÙžÌJ 6`ŠœŠ´tˆ‹…;õx}ê6òŽ8ªãìUÇÚ»@%Ø©áòÔp(Ù¼/ˆä²9»˜õP [zï›?æö²/9;ú”Êm¤·nèUÇkõò$=¸Ñ5¦‰Þ!X×ÀHÞ2A…Ê—!âÁ3¹%©++â´-µetäÏäÒrf«GôS’)2eãA-K½-Kû6œf¾y{éÌ;c„C©q†è“¥{±«ó>¥à¨×b&¶-NÐ Hèp%ë;QýûàšðÌ9£Këþ'0š&ŒGm&ÄV8˜«Šœï›¼¹ ɆÙAJ0T_?_eoÎŒ4öt© 0©(œžÔ’ãÂnÅWˆ›¤¼6Ú“ž\+S'‚þˆÓ³¸œ[]vX¶Wd»´5,¸{Êùa‰-–q³¸ãG5KóL_ð{“ì½ÜqÒ 1ŽŸÎWTâ‡$–æØ«nûϱDÎ_éN$e¿kïßà{¶·aOSI©(<Û°°Up  “Žnì@í r…¹À\bâ½==K ™÷÷ÇxxZß´aÿQ,·{“Íh îý½â^ªS<]ž• ÇŒè çV¤@©ËÛŠû ~¾Õ¦øIXCÆvš¶®oni©À‘«Ë©*5ˆ…-3ZaubùXJižX\ ÂèÉw1'ì%ÜU»^ú,òÕÚÌ6Uò|ÿ8Hh‡wñMºá¢)xᢓ³Oz—2ÂýÂRïþt±È쬆¡«âp“†Q”“­Á-œ{tM‡i°„ÕéÃÌ>Tå³-‘@EFýè¤èÿ4o?ýIÜÃ1Þy€àÍAçš6z馸HkY`°“ïpVöøò´¤°ðP=ýjÃÍ;¿)ÞwÑ×õÂAJy²½å¾Wäá&à–pº Héá!lp©ý†Hù£¬ ‡¬8x›]æÞ:ÏÐ[öe°ÉÀŒÇ˜x äo/ {êk¹EñæÖTjÕ7E~°œzY_ôšùøòº³OuÔ®;‘ç®*„!œ|J9NÛõÚÄSMPän ¡  ‹RÕVVXÏ:¾ñrµce¾ôé½ ®6ÖsC¦Âí‰~[8¶~Pêé êCBy†¾‰Ïæ¹/¾øð#ƒOÛÞ/ÚéˆQXh;V~[W€Ü±\2g…ÃU£¯p•)¨9=•«î–· Fð_ª ²˜ÉãÇR_Ëbeø6•šÆ<1 +ò¥ëºõÃÕôȹ¹{bÕwÏB ÷ÇMe¸R+&Úȱçt½æx#ÜãxýE/¥´¾¾Hù¶íÒöÃ.w;µkîûë|‰}½µ|OîëÞûÀn¹òô i˜em¢6CûmV6kûË=|¦ñŠ „ï¦Græ.D̬òP æä…Á«`KßG+ î¡@_ÍCxEûÓå6ðຒÛsuƒ5­:Û`jyˆ/L»dé¶GVG;{è´Î¨¤ð“ÓSǯ‘æSb+ߘ¯û™4õß´5ß°GÕ ­ SÐ Á*Ù²dWJŸ ºUYźŽWüB7•œBUž¬FÚ{)"×pw;mÕ @¨‚Ñw„Š’F’­`‡¾é¤åϨ\æ¶nXÜÆb’èî:{™çà ß|~Uo‘ÎÛ or4£ÐE Õ»3©âú6'-Þž€îÕpZ€‰h ÜL¡gïõAÖœRJë,½4;¡^—Øfà¾zI.”m‰…¾ô¤Vü¨ëît»Vb“@à­³?d[Â5ŽGæ–äó½ÉµåT…Ä…Æ ûΤ¢O²¸±U¤qê¥)ŽvKƒËA–] ÜûÍÝ MYB<¿óÉz)ô„5kg¨z°^¾%²í»™mQÚóªÖ}«âø|ðΪ™¸UÃ!´Ï0öú,!ÚUë(ŽÎúKìP E6ßPÕ »ÕvëáÜ̵C G—GOlÝ¥œveÃñõÑõkšÞ”Üs0B†4v"+·êä¶ÜA{ʦš"î“gUKÁŒäŒƒ)òÂÅîCùbÈG`W‡’eÊ2Á.—òë¹íäÏÊ$>5ÔØ%Ï<ŒÂ’\=. ±ŸŽÙ‰ë¢‘‰¾F¤ÿÌ(ÊÝ{4p¬Ûð÷Õüô…÷sUKítO­§|šPoÇÜ»Ù\©¤ÀÙD̘ÀF‘µüÄæi½·/Q­2utä\dfá¼=ï‡ûvÜp÷«M”ÖoyC—Qçi߃¦³‚$ú2]ÄaÒë?¾Ÿn. #š¯>37©óê\¬T›‰Ö¡Ë·ªøËGô5ŽÈ=ïháB&©Å¶6 ïÁc®¤Í—‚ |œ"8ÞÁL*Dt}(¥}:¸¼ðée³4•ûë2¯òÕ#­°'ì¨öNчÉ‘8ó «Là!J-Js@áöIYþ¦xu¼ ¯WFª‡,×öVÜ]NZ›Û×xMÑ9Q‘m"ŠÂ1Æì¬7oÇSÏßùžÏ¼Ç€Â²¥ã.¬= Ü#$h½¡#Σx=$üÌÿqó‹IßDÅ<Òéƒea*—t˜õ:ÚE7?"O™,À»5ÂÛ­»]Ýn+»ï$™‚¥Å: …ÝîÛ·´’ŒKNJ$ö8bÛå8“ÿÍ5¬›X|xÿ® »Sʦv+ÂyÅ1©Ío ³^ŒðK*Z·™®^¶q¡Ó“œMÞnD¹øoÔwcî ÍQ-¸|èÙå1ßîbã‚ls!à_@ô÷W¸â³©|ÜdÎ}% 'ƒ žè 6¹S׸}Þh:{¸‡y_—»ßƒ_òBoz¨W$œ*¤éŠm[œLëí-ª³‘·FLU¸ž½iÏ ^jwC´°Û3úhS_YlÎæŽ’ºåÅ¥õ,p€ |ÏºÃøÚ‘»b¡ª8ZhÎŽa’#ʘ~wj¦„Š›þ­­m:×kï×rV’e(‹3P€o×¶¯YÀeÑhMà2ðΜ瀼 VÑ8A¼^l†› žœàƒãµ8"Ѓþ´'{Ëzû;¼aòkš`~ƒÖ7ùOðö ñ»§ë|[–ùP*L‰ð &ÀK¯©1´5’”B£ƒN P¯D,ø+”¤7íðW~õˆÍžæ¾ÌÊ_jÜ^ã=‰œÚPŒÑ [ïïñÕÃjsÂÚÛ*:ÓG4ÁQt£ø9í_ÀG•0Œ3{.ž…;î\ŸUpàE(4Aº'Ö‘ ®Ü lv´B„´aÔÐÑ™$; TZ»ev]®ï-eƒA¦¹X ©ï\ ·2JÖ™ýø]LrîšÇ»,"e+[ÝUc+eÏ2™«JÅ9HÒÔË`n¾Ej6€öTW3@EZ¨nqûà|åÙ|ûQ [+xì´,_Hú\¢²Æåž¦}D˜{ýJ†/vê#Ÿ7šß:¯®a‘.Þ:=Îè0oVUp!rçiŠŸGK‚û?~”gúÌþwÀ+M3 ‘°•ôgq•[ý;ºå2^)<ØT%ßÊy=Ô³Ãs[65. DOËÏ$$9åáòý±X’{GF}—ŠˆÔáŽ{Ó|Y7 MS[¶³×VfN²‰Å×VIY²µòØnNßi1á´{Ò‹oõ%E7H ápÊpf¦ªåJÉò‰ùŸû£Uߤ¯Sü>ÇÆ¾h*°æÆ»Oây=oÕ«Ðõm¡›MçÉŠù~Y´½¸ÊÆåº'¯ú›dhÖ2CÑ‘«ÁÍj¯”O÷[¥™1Ã~.Ä|É»XA#ÂW!«ò‡¸ÈY´?øÕû ï)2áÓ†±¯Ýkx‘°ŒÄ}§1é„ðë2ÝèòÞ–Œ¼/P Å›½”„U+«f ¸Á 5ä—ˆ)EÊ?ÄbÑ/B“V“=Íu[í $+ïÿ—Aztgcç±FPƒhÞ›ÂI Ò6Í:&SÚýr,¡¾þÔ¶¾ƒ«X÷sbe“9LÉ9Œaÿ„kõ8jèt1EØ‘¡dè1V\à*Œ1·„ÛûIïïjü_¥Y‡·Ùð6&d§êE1?²jã]O³¯Ô¨*[Ðúô;s-Qqm{¦ª½¤3à 󘟙€® Ü9W™t}­Ex÷”7úµóçèF;ÔŠ®FBp^~#l_MËá˜XÝŠÀLd>ïa£>6J›TŒí.0‘mkÉ=»fT3fˆ}–üdælÜØGé0wø¬麙FbîÆm®€Êçý—ª‚Ï©-ã‹rºT?t4ä‰`hûHÒ9 Ë…CîPTvO³|B+°˜q~'¾õšÞŠíkþ‘g¯`¥ ,·e¢cô„@m»ð‰z®• üã0N†¢y™Áy*û}3~ö·¤kø´™þ &šÉ‰‡kŒÖ,Væ*±a¡XÃË€O Àë™ù¼ž3«}¦ñlsÑ Ïn|Âkü…s¯:6y ͺdŽ,c¾p a„°£F×T«Ù œXþïC%]"–ÆTZâ·y-í!N¹IVWq AÚdõ,¼(ã¸{#ZGbï5ž/U—Æ@{™µ³KW5<ºÚË‘î ,¿á³÷[oZÏÛ¼È+)WÂ3R¿MíäÒС…#ÄÙ ²$'¾¨µ|øjú»««‰r…ÂÐÌÖÕ#ø–ž‚±GºïhR«z’Ý RJê°  l³I!zÕ Ð˜÷‚”R£$mþÞŸkþèuëä<£x<€åýnGµíÖa]†¯PÑçÝ1lYÕÊÍçÂìi—aí$è“­oyðçà4ÏçVb9Ï×IÁ¯Ï¹ín-¡U ÌUoÆŒ´._}æ08~PYïëß5Ü„mâ¶õ!8z…¦ò„°z›5 ÀÎÛétNŽ»}†€–7lë?r™1šèåˆÄ¤fÐà˜ÅØÝq–_¥ÁKýòÄ/k®ú;JyÇŸoú9ò¬3æÓ.úêb‰^»oã`¹'v¶‰}eŠ}Mp¡2¦®ïÙz5’f‘ó°‡Ò¾ÿ¼ßùžrw  †¼s+Ì}FK|0­¡(_Ü^Ú"ÍØÂÅiÊE Ö¦ãGÿ0³Øã–s`É™‹={v®.ãfaÂNyNóôY7r¦Š˜T²Ú Ù÷vO»¼…iñIë`D¾ÙÂÅIur;ÁÞ±Jg"ZÓbg˜dáîW‚[¬,ÔõlœîŠž5å–µåhÒ!•÷‰€¾ªèjx¾8ëN5LJ¶Êާä>”%«Ê½ÈŒõò¾ÔÃóßÃZIž•h#âéþ¸Ò*$üQ{¤šU.£Äùÿ T›bºU~zºi}‰Ñ(aÚc£»j’0ÿ²=cІÙ̱ål=Až?S,H¥¶pâ!±¹„·Æ¤Ú´+Š, Óp5öìTêSJ³Ã0³!ÛËê¹¶Ó7Å)ñ6¦ôÍñÛóä›áNá.{TSÀ…õ¯©¥’Ñz¨Æ Ò+s œ’`R­eâNv¬>j*p¾ ½P ‹1“eýjMYçû¨²2&9-†Þ«ÐMu¿¹‹æÏ3OÇã?èiCÅYɽKް î¾Ë¢L)ˆÖi iû ,ò€òÓ¼OÕØDo¢˜*(|gbjø’IôJ(ùcqGŽ"¸íǨäÏÕ}ôE›¯Š í—eJ¢§ì˜ÓKá¦âÇeeEøŽC­¦Jðû?ÞE§TíøCqžQ–Ô BûfÝ-¸d£ŠÿFÛgÚ endstream endobj 2797 0 obj << /Length1 2635 /Length2 21999 /Length3 0 /Length 23490 /Filter /FlateDecode >> stream xÚŒ÷P|û ÓÝ Ò¬tw#%Ý "¹ÀÒÝÒÝÒÝݤtwƒ¤tžõyCßÿ÷Íœ3ÌÈ^w]wþ)ß)©2ŠÛ‚$lmœY™Xø¢òòÒ¬,v&6$JJ5s'+ÐäH” Gs[¾¿,D@@'°L è6”·µÈ8[XÙ¬\|¬Ü|,,6ÞÿÚ:ðÄ€.æÆy&€Œ­ ȉRÔÖÎÝÁÜÔÌ ÌóŸ#Z+//7Ã?îkƒ¹Ð t2Yƒ€VU[#s“ûÿ„ yoæädÇÇÌìêêÊ´vd²u0¤e¸š;™T@Ž 1àwÉ 5èߥ1!QÔÌÌÿ¥Pµ5qr:€`•¹ÈÆìâlc r€ÙªÒrE;Í¿ŒåþeÀøws¬L¬ÿ ÷oïßÌmþqÙZÛmÜÍmL&æV €¢„““›hcüÛhåh öºÍ­€†`ƒR$D”@p…ÿ®ÏÑÈÁÜÎÉ‘ÉÑÜêw̿ÀÛ,nc,jkm ²qrDúŸ˜¹ÈÜwwæ×ÒÆÖÕÆó?ÈÄÜÆØäwÆÎvÌê6æöÎ i±Û€EHd¦ '' 7;'d¹™1ÿ&Ps·ý£dý-×àíigk0—ò67!y:]@'g·çߊÿEH¬¬cs#'€!ÈÔÜéOt°dò/ ž¿ƒ¹@›¼~¬–ß?ÿý¤ Þ0c[+÷?æÿŒ˜YL\QAI‘þß%ÿWùჭÀ“‘ ÀÈÆÉ`eáàpƒ?xÿoœÿvà?Õÿ#Ušÿ;»¿"JÛ˜Ø~Sü®ܾÿTâòïÕ ù÷ÝÐþ—BÁ¼Ð ÍŸý×aád1ÿÃúÿù þqùÿ·ü¿£ü¿îÿÿÍHÂÙÊê=Í¿ þô@ks+÷[€ÚÙ |ò¶à±ù¿¦š ]´<ÈØÜÙúÿj¥€à#±1/:#+ Ç¿äæŽæn c%s'#³-Ó¦æ°2·)Ù:šÿ~xÀ^,,ÿG¾=#KðãâžÙ¿T@Gð!:ý3Þß>µÿÍCÜÆÈÖø÷M²qr€@w$ðJ€'À“|¼Æ ·vÀÌdcëv€kö˜Ø: ý4'€Yä·è_ˆ Àüáâ0‹þA<à…üƒxÌâÿEÜ,f‰?ˆÀ,ù±˜¥þ v³ôÄ`–ùƒÀìr˜]þ³+üA`vÅÿ"0»ÒfWþƒÀì*˜]õ³«ýAàN¨ÿAà\4þ p.š8—8­ÿ"^p.Ÿþ °ð¿üL0­ìÌþHxÁ‘ ÿèÁ¹‚œþRƒCý±ƒÝÌÌÿ‹9kÁOæ_à…b6þÁõƒ¬œþ6Çý‰6Ùbð6þׄó¿2Ö?Bp ÿ‰NÕä/î«éøÿNŒ lnúû{|lœÀìfA0±ù_<‹¿ 8ËÿB6p–@;»¿3·Òê¸N+ µ¡ñ_9€}¬~ŸÖp­ÿ¸€s´vþkX`û?ma×dó·L`û§‘`­­5ÈôïYƒÃÙý!×jtp2Z››üé'8k;ðãhûgjì`^»¿ÆÌÎûþ3 6p£ìþÒÿ&rü«s¿ÛoÿSÿé:¸­f¶©ÁÑþô„ ÜfGsÓ¿G.ÔÑ èø×¤XÁ1œþ¸€KpþÕšßØì¶å÷úüÝ;°…Ë_[çòÏwý_&à¢]ÿ2÷Äí/ÎÉý/î€Ç?ðžF#gðÛùÏwøÝüþçoÈ d„´8gkÄÿÙ¢æsÛ]•¡+ãîø{س”»lŒãyzNýâSú›qª_3–dK$ûX%ô,:>Øße®ÍÿòÜ©%­sç¸a$•80%5Œ™{½œ‰÷¼%"›Co‚ÈÑLú@ÂWèСDŽÑ…(dlÚ¯J‰îE]Ó»ïJ…S$Á-Ô¦ÐÑUU”!‡KÄ«ñsKÅ©ÙpHm—ó :kË::p;BçK²B™ìûŽ{¤8×JŒÁá¡Ì>âîp—€ÝsŠ`'Lqþ!"1øJ•ohOY….ÇiXž†’ØÂÇÆý¥ë´Iw5 —f;—Ǻïhº¸Í L"XzÜcÚ­à|HqÈÎÝ 3^Î !…nŒ¿uÔèM5—êY+ß"¶” ’u_šéÜxr–M–ÖžøLà 'ðR¶óÓ»ž²=ÒÅ$ª…º* sGœ7ƒöÈÛ$ðÛ…Õוš M6mž³65Á‚ÞÏ-~1ÙÙQ]ÌS*Ôјë÷áóµn<=8^¾ýêèø@µd_n‰á±Q»â•–—ópÆÊü½Î(µ:BÔÃÕzóÆ«ÒmSWnÐÚ6߻ܣ͚ódc3*–@šY|Ôö9©å Yùòv_è5ITŒ1D‘BvéÕ?îØ€m;’K‘ÄñÇó1T@ɮζDé ¿ÆT§)×à·~d(ÁE†× Á–dE?k–Ñgö†¹f:œ!Ïúo¸-;X¼˜›AæÎ»ò ;ŠÂèfÞŒØË4Q¨8ÊC‡qÑm"WÍYá´ÓÕ„3'(mEþL¼ÅûÇW즄¿2ÐHµ;ôI_ _mõßœ ÒÈ[o¸Ô$#=Á‡ÚiøšÞ³¼<´ý$á¨Kû9!ò̘í²Ù5B¡µ|ZJðZÌûúaùkl¿V"ZÛI]5«Å§Š@Ó"4¸NVÃŽæ ™ —A‡Yd¡¡/m·«Và™‘6‹EÂyÍGn÷;S$ì3|ÕÆ oT°¾ÞXv/ŒSG&szàãœ>R?¡‡‡Æá¯•_Äú‘ áÊZ:(¯¤ØDMs¦FÞQÚ¨ÁÔôÁªQëŽìÑÑ–Ù z†qiç#Í@ä‘ ýpÛGذX+ã¬gô“K˜Óè?5ëk؆íl3Ä3J¿@w¸ ›ÌKÕ>h“ꪉßt[¤© …ù0Ó?"ïìàÒR0V­xv<>®ÄÙÕ\e¥•z§q»âoÜð®Áߘã[®Z>ú"'Ãöƒ ¹‘l4ÝÊ?½ÇÄø•X¨–€·yÊÓë®ý‚@ûC®]ÖH釿qY ª !ÐÙÛXÐ#“æ†÷ç²OQÓ–MV7k”úWÖº©¼ÛŒ}Ù»o-r#¾+÷)jJ¬ž?ü± pl²¿DÍfJ,yªµ¶™Àod—{~‘›:¦ íêBþø•w{¸`ãáö´~]PÈ{i§N-{aÈöTÅ5mz“)„$Ô|†Ä|‰ø¥å€˜¨×ýñ¤ ÍûsvˆÓÞÒÇo-dÜ~—öNŸ7L¼»°ö&h«‚y`TU¦?&º¿ÅzŸáXÇf‘¨¨×¶Ø‚AÙ…­þµ%hÃSp&’9»¬²XÔÚv}—eœ²Ì;Çnù­ñ¾§.‡`V¼ž«XÁ¹0HùÊ­úhn¬5©·!ÜY/„`‡bÎÎOTãÿ¡¿Y„ôøH2xu=IV.kt¸§„t%øôýIÍvR Ž»éûȃ{žß"¹6Eªú8°À¯Æï+§2Û'v>¼¯„Cïµ$'=Yï^4¤ñ« ¹hôäÉî¾8ûù®–(³é™7o8~½ œ9¤¶º¸/WšéÑuKÉ.V{é\-h}qÅ®'?Îeg «ï sáôf*Éç-x[•EÆl«ÃDi¦yÇ@s³y˲œêkTᎷFÀ/2ruùŒ|a¹´ü:ðbu*è·öñèý–”VdÕŒ› V;¶·ßŽ#E:Yº!Î;šzK1eC'þÚA´C‹¼¦¾¯–È; ø7åÓp÷©Wëµ+¯"té¦S!Ê%Õ5ˆ4ûü#þUʨꤟEí Æ„ùïzE!xA‡TÚ4áHßž‚îcî „Æñ" ÂNRÚZô¯*‚à1§L4×~@me9ß³¬ÞÆFZ2ÇUPUr^£|Ÿ*º¯Ÿ]@ô¯f\—ÓÒøTbø“ãc¦ö(‹ó¨® øŒe_Í»ý]r1 w9ƒ±êÉU7éÛù«5)¢!›©÷ô>úÀÀë“cÌJF˜m;鸗.) R7ugУÙU¡‚*‘ ArVU¸>˜‰™ŠpRòhBÂ#¢ ÃO}Y ÚjÞ„ËÍ~#›Ñ©ÆÕ»:@Jй–ŽòaÙ0Ñ2¾òI«ÚÝÖíGƒEÅi²[nj{ ´Ž{=­Í[¡–Lƒ™|’{8zÒ!BK`P¶6®ÇʨIJµVò¼‰4ݪ¶ ¾”<.û4-eÛEqF¼}IEƒ" l§ã§wø$™Ç2½HR´DÊ71õÄÊœ7¹¾jx†rÞ̂㜖X?ñn”]¿)¾pãr>…’ò%Î3|S×Ç•SŠ­~« Z±§*3k~6‹º$˜ˆ†90qº‹²{ÁN7oA®ÙûUìˆç œârÚë2ó]£DØúðhXÓ Áá’\<¿¾/’±r’Œ4ECKR¯ÖÍ®µŠýöm®Œ6^œÉ4/CR)WíÖ[}Ö‡ÜiWrëq1‘*¬k´P ò¯9‘™þuw+š€m9Èæ §ÖlRè3õ¬ÓŸˆ]ø¥ÖÂSt¸1j8¼1ËâÍPùšŠ¦ŒKIsÝèUR‡v{xh@)82¼ç æ©i’Ïâ°ž_Y¿üb T«NÔ{žât×”õòð›úµ|îµÔàŸgñÁø0HC Âc‘}©KmNƧmO»¦£þe–ÝàÙ%ûÅÎÆ!PE^C³$ý†i[‹Ñé 5å°ª¼†ÍãëìEìç|ˆ¤÷ª\N¬õV}«­†i{aY-ÒǸ“Äú´_?¥þšÑaˆ£©:¡æ«qþݰíçÄt“ëI kð}îW( þ¡‚ ?É0pÛc£I µÉ®YšËX6_‰,™˜,ŽpDí]l‹ Üz`rXC¨‚&ù%®]Ì]öÜøóí °Èߣ=i7Ú¡ýhcŠ"ÿC ²sXÌ>_ÓÜkÀÜÚ<•Ÿ$aæÔ8«3‹®£?RÜU¢WZKr“Âû'e=¨#’}z¥f G´–•éÍæˆ<†Ó±wÂŽzoïÜ$_™bƒÐñoƒÓ>…ŸZTnKਭ´ý@e ž¨,W=8š$Ôåæ-èXûY²ÚVÓïù"„Œî­Ãøu‹…ž…3ˆVØÿê¥ ~þˆ},›>0“ãЮ³ÜÐðýuëQdkà·Ùâ`üÖNèçÄLEe†É¬èø¸êâ¹fMØ»à™_–pßLJD²I1huåwðç1Ñ1pnVbôüË'g«­V'~¸ ]éypŠGøã{P¼Œ¬±ŒXª†ÙE·‹œC™:8"µ‡ÀʌſX†·5JŠ›ÍP½ äboT$~Ýæ —b«#,TKÖUqBþ‰îÑYIM@×}«ÎÌ(>I°oÛªf¸µÚɹSÙØùÔΖÐ!XúSÖÍž½7㻾S!qyúa̯IÍyÊP–ÜQ=ñXáÊ–¦36½ ‡Ú|¾,b)Á2ÐÁ’Òèjí åíÂà|ÎgokÍŒCÆ‹zùM‘qGGCï˜ÌˆÅç^Ç&aýxÇ6f¨äÌm‰ÐÎÏèŠqâ=¥ÉV§ákf:’†7@ž¼´F šµË!=uvìJû´º™ë³í_¢°d¥¯.áM×/˜‘B)Y+#"ÄÓ{œLEŽ|ºƒ„üRlAí5BVu5F8X;/Jù·Wï@¹ËGŒN¬Q Ì̃±†ïƒãWž-™w=×á'lÓdz±?G @oÿÌ瑤Äüb7Þöýx Qþ‚o:ñÁ湇ÂHÕï˜ó]I\f KbØÖ’pл¤Ÿ1Äir~ߜ˺×_Ž0ÄYzGU¦¢çßbëüW…îŽç=àù#õuãÛ|@&©øÊ/ÌNOȽ¿¸D‹¹%M£šSî¿ò¡ßॸ†¿<Æ£H§k䊽~2s@¿~ˆH *ã?Aó›Òìg*2ö¹•|aOÙG„È[fÝiÈt3¯ Ó(±G‰mª,M(ǘ³Û7ÍS€tu×]ŸÓÉXqd³·>}ÊdZÈ—mx¸á÷¼¾VkæÀîÊê‰.Tøv6ƒ±×ay¼Ñg¼áÖ-m&.0Xš¯§ëP‹ëòFm9•x\‰ûy±Á›¤õ@öpAVC-¼”‡`3"3ÑNœ¯Ãuøkæ$®¸r|VoY¯€ôõá—B™Aƒóï iUÜÎÖâc ûÜ9'™–ÌŠÈZĤð²Y† Œê}º›qeòQ¶ƒ›Îüóùìap†ÌÜeWë^$øßk½fýzòéõº,m\GœÁľRcvè|. ­<é3:bÎ7§ÙF “,[ÛÖù4§ãº_ìh¢VÖaÀå°tt)Oŧ©Ö×– Ø6-É«—3Œø% ŸŽ*üÈ>«sªªÀÇ““‹Km sX°Ž .´F»3£bH9ù¸dÑè—r Æ…ºÝ7èC›‚¨‡TZ<øÑ•sŒ™ldÓË2µˆ„OÁŒ·&SÚ!‰Ü´O2xÝIÄ"mKnf7©vHÙw¹ ɨ’M#˜O7þ€8Uôsˆ3Ô¬íà¬ÅKš‰Ó¹Û@Y)÷v.€Öà¢8YYy°áæ þ–#ž/±V¯0písŽüz¥m(1§$Ð˜Š„|êF¯ßËì¨évÔ‘]—ÉÒ:” ô Dç+ºqY^sì‰lß1–¶’{“=b݇®Š^ajüÐa®ÃwšÇHã1âo¤›Ï¸î¥Õº)B"_ÆÝÓCNã!¥’ìÌ›÷^5ŒÌ2uñ¬¨–×s$zWùš{0ó)ȇÂÞ‰ñA„cBQÒBÁãñ¶ÓåÝ⟇Éôå’„ˆzŒ±èøBæXÎØt¹Ýh~¶pØ!W(ñ´Ñ1Á¸pg:޾¿ŽªÕ•Sf9£»k=Iœ§o11.Ù–LG¼ˆâWà£Ã$å øY cœ Lêøà«Ð¿¡péµMËO]2 ^Gxq÷¿?Ê>b/{ÙdÅÓ ²&åT‘çÂëß{™¹„‹qÖ½Qr"§¾ ÞíhþÂ)ùMüAUfBs$q´„@UæÓÖ¤CÐýÖö»ï¶'M¸?óȲ?>KLõ2Þ]ÒfÃPèi¡mV{™GTŠD`8_0MÆDm€<tel ®¼xÝ™’ »_FT‰Ò26íÌßd=ÞL¾Ž"Ö±ÏQ?yj «P™Ú¢5JKRø—Ÿw&{¾ïoÙHwèo§¥v#£Œy¡P¸™ø#ín¯ŸêÈ©|X4&¾’<ž»ævC¶P¿á©DQîÊIôEüÈÛù´ÚAŽÐÞ¨ Þ²Þéy¯†®¹*M¤èyFÝÞ<„èG?Žf\•T)ŠPË'lAÝ.Ò’+eÖíŽq©È²W¿I^@\ LÙn™bŠ06B:!•nòî¼G”R¡â §§bo滸}Äh‰wÐSŽ_ ì­úïêy6lª.;y£ yùR¦W›¹T¥Î|?êãWêîp eʘ esr ›B–6uÛP.g¡Þ8÷×KÙ›B¥dìÓæ]–çŽìV± i|£ËÖ!ãT¦œ ­Ì„¦Ä©®¨°©S[ÌkX¿’u"WUiQkÝRsž×1爤vù‡8S]]¾ >æþ¨Üê×,¶~0Ãxtº£ÒÂeE-êk×/KòÒ4t\Éü…ÀæSEy^µ¢£°÷úUPêö'Å‚åî·3 ÀÞ²†Áp‡ "—šPJBÍÚ.V8óq}¾BwÌÖ¦|{Gg›Þñ®+›žçåD÷K‰’@Í[ýjVÌŠÔ[r®ó×€/i5Ø$s[ÍýYÛ´Õ¨ðÞQOÙ©~•Ú¸ ›¤;hðÖwÈ£"0Ý„hñX_³s›Eû!ÄÝo&1¨9ì-*[Pfñxà Tw¹Öý>§½ ½Êæ,Û\wÙq{O|¹MºF–£=*äÿhÈb‹8²'Ýø&ìíñi;$ øÃ[-º?Ö5T§lÑv ¢zšº·—Ȧ—bÅ).WiCÊWNCÜ97§ì¼ù6óÚÀ§‰I>§@—Ó_ÆúPGÎÈ»RÓµkZ²¸~!i=A‰´À8(ä×6ŽŠQºù-[zžõv¡œgÜò³˜÷.¼RÒéì<$¿Urk)ºp£~*°}ÞŠï€×Ó1´Ÿ°ŒLØnÇ|Ù1!–k¸ýY½3ˆ¦JÒÊ¥ÑGABÛKÿî8P’4qµõMkd½üÁ¤æ+Ò‹/~ >ÜegËþìÊŸX¡TÐ5Q,Œ9†¡=%„".ëBµ%²ÏÕ ka£p‡ïWÎäƒ !N›²-ÈY(w2ž·`š+¶P{(]N¿ë²û¨#Ýìjé0k‘ °Û4Z‘àMÇ -z4«ÙÅ-Þàq²>öè9Ú™Åce ôøŸþ,}¦#á…¢™ Ѽ㩚Sà‰qŠÁp¾;DëãÁòUh³ói+ö£ãÛÿ†ÖÎÈ’2C ¬Nmáô mí¦¯Š…:9ôô¡¶Á'`–EÇ{#‹ÆäCÊ3OŸ.ߎr3ËÄ“'´ ¼x~Ô6+fhD}É÷ô'çZHb®mSTAØÿrv@ïÊ‚öà~ -€†@ÝJ¬gØÒŦf8U€ã>Öi¦¯Xß§¹ÝÑšñ\œ¦o3§¢lýÖäW,½  ÿD–n~ËxT㈦:ônà¶ÝìÛ 2Wç…ŽžÃìV—päßâÛ ìùF°l®ÚmѺ§%q$‹Øþï@æ'àÖPG:£?ðó‰zÎзŸgsi0V›(Ê;¡*_8–ØlŸ?ôb 2 Ó{|žÀP­aàœ…ß}ì3¼$?¢À¡O!/Ãxr,²0£„h@‚ö0‰,µðóYh¡!Åö›ZÚÝ}/ ¢^à˜G™óø-zæ}Žm÷y/ÁD(š$F+{`EXF¼È¾Ó.ˆSk±Ù¾û¥Ã7ä‡:™ÚWyê8¶¾+—ªù®Y25-I;É&&O^Î9>u^Ôô#ͱØßO_´Ðæ-êgM5¸dIâG%j¡ÝŒDÐê— @”³óAL°Æ;œÒ}ÁžèoZØey·–nmã|ËÒ“å|Mæ4¿vÿàÀ û€gü™²7L#SA¸¸;/ïÀ}¬§”ïüœþúþÕ¯üÅQrˆéh¯´µrކ˜&³ˆ¢M.4Ô&êÇõ²_8Êö†ÏTë)'¼èƒmmrùýHzÂÔF¡ØÚûÓå±ÌÁÿ›žjsnÄà%>a¾KÔráòþ§fñ’‰ú·qп\¶õ Q»(ü¦‹6¤tÞRGÑÉ×Râg~¹ÐakölqK¹ªû˜ Ý>ßçÀŒà@× D Waò›B°H+ž×ãëET¤ÉŒ~¶¡ìÀG$þþ†çˆÊ–°¯èþ&w4ô3ŠòEÙCÛ2;7uÆ »ÑIõ½%Q7E4B1±ö,­þ´‹¢þ †ô—cÂ;Rþ ·m ÿ–À„&ÉEX”$O8›eÓÎ’%µ 6ËY'8òL‡rÁ\QrÔR™øE‘¥þBHd›N€ßØDÿñò¡D5›6 a=£G¨ÓÚW3Xעƽìã”0Ã_«èòØ»zºxvÝwy.ž Þ±EK½Q†Z9ÄX ÔZ™h Þì÷?fsu£¾èíBw¹C§Gª¯RHñrË%£oÜUþ”éÏ>~74š~B—7IgUŠpá¿©Ê«Kú¡,dÒ8˜Çÿ‡9&hy÷d^ˆÙb`°*z†‰¹b£¸€X÷ÊÉ/°ÊŒNy.ha˜ ížqfÁDæ‰qjÍ×ëž–ëQ§©dîr@3³Týq/6@”wt¦ eœL¸ö~íD5L¡£~ÔÏ‘û¶§œ’®- Ð„³?Y/æ 5|Z«ü¦ 9VÛØ\0-!úä{Õ¼· òõßB!”4šÑ$p¯šÙ.-Ë?o¿·®3—lD®ë¡Ëpa„ÞA£ï¼17*»ì›uïðÓA䦶—½YäY Î6ƒÓ¢•Gk>‰<Ó”›Äù¢Â∭](ô¾rúØjÀÖ…ë.Ÿ¯‘ŒLN¤E¬z‹E¶YãiÍË=h šjŸ¯®:ÑJPc§ŒxÏZ{sÅá=æ`eêì~¬ú{—aÚ2I”QÓN;p׉8X\¹IÖ¥ž1öÙúÔ­vÊ[ØðÎÉrº}ì"ȆZ-šo••wÈóÔ™¿üfT¹;ÇšëSK‘ÕYã «AÀ½òœ›úgj¸Ã’.Lõ’nÉ …ô†ÃžË/ØÇLàºNQ ÷ ‹fdÁµ)é2y†4 œ˜’N§ô¾ÀÇ<Õ`6*òe1âxÍ*’-W=çó›R/}%v´@«;Õí¤áTÔ ˜R­^˜góÓ²bÁ€@Ý»ÇJšöv3~Þ¦£NF;þíâÓo_J‹&àêCú*!î:¿'([B¼ç¬oqŸïŸÒx|-š!÷ìã4 ·^LÁºvó?XÁ‰ÚÓíÌyù¬\|†&Ï·æ=÷ ¶nñN&¹üϾ­Œû„:dpyÒ=’ºLêÌq€(ð¬§ôˆ§,»a÷ÄO±ÞøÂ¢Øø^½%zWÞU*Ì?ÚÄfOj’"›÷ffíÆ=†ù:“ÿ=õ÷sJw1ª9_E –cmà ÝœoÖiUíå{ì'riλ‡w;ûÈë‘J#,¢Ma˜Ï'\¦µ]Æ(?siB;ë=»T숮–¯Bâ‹6S:Baïn{¹íéB« ¸”mbýë¬üAh\G¿ÐD+ :”Ò¨[»ø ã°ÊHåö7Rj­>ŽmïN`¶{ Jžd²&nJî¿»“£ÞŽ•ÍëÍ4™â¡óû~µ«^A_{ܹمNºÞò´ð2ëÿT³4OùÕ/›Bø»Q ÏçÊSbˆr#ß…ˆ0êŽI"%q’{~¿[¯£$‚_K"æ3D-ðšâG[Àt¤†·ÿðfÒO‚@ÿÇV›Ý}&L¸>=¨ƒäµˆêûönüÎe†M…ÞÝÿㆥJRkçlø °öúî!óð.X7êp¯+ eX?Ý€—UjÄzß>üí“ÿmcöäàg¯µBX-,~æ‚)ØcãôÈtŒr¹¹YwÈtŠ7^3A¯'Éí«©ÙD“A»Œú||,?dÊöôóýÏ{™hð 5f” ÛÏ(µVc6žžË_¤ydJU8+ žúHs>\ŽkoÕ×Êg ’šô >KX0~§ªó«OßMØwUzb5쉡գL2sŒb·J¡? À‡…„õÿ¹Y#`¾hV€>–³¬VêÃùê¶ií¬H\î=šJÒwõØ”gn¨úh£(‹†£ñ»tGãh&¡'CÍ6ÈÏ{Ƕ$M2G*b;9 ÓÁé톯-稚aMA/KŸ,\3º4p<—…Ÿ˜øïšÉͼô˜²ñpíå­º2“ü"PYùå,~dF>+‰“Õk$<Ìñ“åw7ØG`üÂÎÊ~Lz~UÐ%J¾SÞ¶mJ߯'æÞ­áŒŒ:2[te}­hNR]1»#új•ßwÐõÍPÍÒOϴؽu Õœó{½ú¡S†Ê§Yw¬P&æ4uSŒ]Öa«*6oç°µJâ×¹F¤D³óbX*JOÅçþ£›Ý:ÔŒÎn‹‹¢k½Ä·J…'ùU}ÛOõÈ¢3tœ‡þwî ÂFxl³=e¶"ÛhI(ZM£ãÍdÃo‚ðñ¨—ûåG雌éƒ7¦ñF¬R,¹¾âça)ú…ûõMÉ­ hÙQ!¾wâXcÛöH_·(eŸR1|‚È&ÿ‚=_æ*ÍxÙ¼0¹‹‚ lŠécôµÁ]öÃ(ùùà6ÁµÃJøòT›`“Ë/œ&™–n$à-'Õ5ý<ôÕOoJÏ£pž,!’V ¤ ÿAõ¨¿ƒ\ð3¯*_†È{0&–[š]¢œþ™LÍcêc™ëX4 öìÏ8‰Ì$D\¼BH,Æ}œPÙÝlJNeÂ)˶7 z žÑ'Y,µi˜I²nØñjÃîÔ0,í®±?ëüãéÇ $.HAòA¿3Tª€:h"±4·•fñu²q qŽûäTL&„{Þ<• ¼æÏ[ÚšS‘”E/¦ªŸQPÍ»1ñhË Ó+5>âµÜ/5>Eˆœ¹µ|D~¤$Ý{òî,¶}À”>ƒ£âÇ ^Ky©” iß„ V»_ ö'7¿ ‡öw§s}8™ ¥›#kO©ÅëBïAPæß{ˆZY -žٽg4êáш¢‡`-“×iúÌ¡´x8T0úš‡ÖH7±¾ õ†ŠP¡%dDx=èšLœŒ fO(ÁãZŠ ë¾ÿ=[7ØWÑÑ¢N?[„³‹2bÃ÷]9fª+Eõš~+ÔT~zÓözðvpú6ýzÛu/.Ø´‰¶´ ŸÝå"33A”Ëêð“]gA+ïe=¾aÇÆ˜©<ÜÔèØ¯è˜ˆ?¹ÓŠÊôÒžô1ÙQtË¿ ôp†cýT H¿sÔ>á´²ü|¾qMI廸DmU®å êšø¼Ò„‰ó¾69ó$ô ®vm|·PT:rjìh„%Aj¹v$§Œ0OwBA(ü½ Š`3ÏLL-ó’]®ßÒÖ¤ä•C–š…S¤RP$Pƒ]6NÄÊ»ö#ÒÖÍþ_Q™MÜ  U33þ±Vk’ÁbsÀ¿ ñ›ÛbÊvØW…ï›<ÝgÌõ™ÜöÏÆÞºÒï¼Ý$Å¢K¢*iv ¡qu´¬Y“;Åt°¤X”üš1ç¡A]ÂÉ÷ñöìÎr¨¬Pk5å«åáÚ> QŸé®¸ÏAàИ=%OSY0Ôø3ðWZ6ŒXu#(Tó–¾6oíß[´¼áÓXë_”%j#ãS?÷–QPx‹øºè5¿ú«ù%]Ûãã{ÐQ,çRQ6¦è‘^  0Y`ÇÁrë­§”“ȆØhú–çd‘¾½ KŒúªÓV2â4ß'쾤}y!¥I3Ú´æBض¢yd»fÙ]›É£ õ±D‹½ÝAš®[osŸÓ°ˆ[¬Ã,?¥ä­Äc67³ é*k^ý¢ã2Q>J"–aWbEU¨Ý2ÙÎÒBã¹_è‘wùÈ{‚@oë7q<­Ñ¹ªÀ Z½L †kÒi5t«âÉ›“W£j¹ „wb”’ô´RaR@¸VȻڥN"BÞ’á×€§³ÎĖ“=˜ËÜ\vüB ¯Â>îçÙw3…–÷ß½)r…øRÛ"ikg­ ° ôBP+WRñ޳G½sˆò&?‘-éì%Ë¡Ìä< liÇ>ñÁÜÑ Ù_Hõxì;A›|ÕÏ/jÇW½¢oήˉå´Pœ(n«[*þ¾e‡W-@ UŒnQèÅçðFFËí%ªlÒä‡O—úÇL‡Öyqà™LO;-+îËGMË)M-¦e¯-º–OJUÙ±¼´!$ÀæÈ;G[Ðûj³2x·!be]ÀÁ9%eÊ“ñaž;®?¯2•o3Œ}ï'‚VÞÕù‹4·—ý£PAµé%„q¹[³¯÷…‘!9G-‚'pù Të½_꾩ûz&º™hÕ‡OÈ=bG7Õ$gžÚý:=dQY©ž?£*^Œ’´¼‘)VÒGÑq¥Wcý¤;’‰}<Ô€šœ6\€ÏÃÏü½5—˜$Ã`¯7ЋSS E¶w0Þƒ%j™: ¹½.ÛÎóÛzØÛ=|Ïzæ—±XÃO’œ«9Æ*Õ?±QVˆ³åDk–h§'>ãÏ…žÈØ£K?Ä §šW PN¥©}á¾Náä—.Þ·ù¶D]Cm|+·QO±N›é">ТT7ñQÜþ¥ËDk䨱V‹bBºÍ!5Á’»›6Ncsrçĺ•AíG`S¨.¾têõ”5Ô…$C«Å>jý¶X!@0üˆÉ¶V^ó‡.ÆÇf6üœ/wã☩ >è‹ýw!×)-޼5Î~Pˆä¦êµ7™Ÿa¿º7,7œò®¦ÉáéC~:´!¶fBו~‚h¿ûî[*f.„Y2" 9Źƒû)¶V¶ij‰S°/-Y—»bë•gª³é]"Ì–ó Ñ5cÎÎ)dFôÚç¯ݤîŸn!÷шíHí,±ÂófÌwÂò“„T’„¤y¦‡1Q*¥‹YýùT3µyZ¹@WVwŒÕɾRIÍ_³Ì›VóÇ[è;˜áü F-=WÑ%!ÉPšcK;–‹ÂŒ ñVpÞ¿CçXå—§êñO̹êó=rJí©‹èði¶ÖäÌÚ¬³ìÔ7TÛˆoÄÎò±‚“=…šæƒ”Ý/IœÁµañ‘½÷‘ȳ•%ù^–@ÙX?Okâ|¹VÖ}ˆVKòok”nQ<Ç8"!Õºbe(n5òþøCíô'_¸wM <ú‘º jæZˆU(»{æ¶Æ®ïY6¨»^ìË[¿!9ž ÌÏ,®á»{W_bÄc”€ È8Ö.î:{åViµ±þHHA36víùÆ{Ûs¦oFÎ>FçE+c "n²Åw…> ûZY6¤s?}‘PñÜÖß õÒ Ï²ÂÒÄà@ »Èœ}5‘W¢îX*IMýPÚFVýÚÿºGp²ì“Z¼×Œ"±¯d”îèð³šßºmØ ÅÿœÌ@v Ô>¤,S/jݳ}âSJÓM,UÌÉ|Q•P†¨èÖ}ã7 –Ì­Ê ¥áŠˆÁÝR‹íQ.1ì÷ê(yß~0µð…±tË¥˜qü:jCOß¼!ÊØÍÑÚ^„ç \ÒÁL•#Ú$ð;Æjù|tRÐÛcñ$IƒÖ xóŠ«uùOöÚµOȘžEtäjYçCcèòÄ@Q½f£LS÷ª0×´?1ó.0‡¤Æ8 ‹Dã"TÀOåYÓ0 }æ.±ÝWåÆf&éÉL«ŸE'ƒ‡ÏQ¨1™¿{\!S<¹[iØ|¾¡y©ÉI7R íO¹ü‰\/°Å Ä¡ÅH—Æ*0N{ µvâRç€ÂÓC»‹`GlJ ü›@ó³ãÁŠoÌqw}ûšŸ¡Ø¾LÁâŸÜ&Z…jbŠÜLa¼FQð㤠öÅ直»ÐP àçñÃ]‹¸î¼ffê×=K˜/¼ŒsÊ0Àß²àkÁÑÖ?´¿÷Ûkœk&Uv‡óá)`†p8îÓ_üìwÙ¿„c*öÁ9·‚žåhÞ÷Ç€­búÚDFð ŽÔÊwf÷3ë×l~—ôŸ˜ØØIÅ›ž&RÄ%ç·Üñ¼/EE+ÂøíV9Á¥Ñã^£û ´u1øf_? \Äí:)´ŠZäñâf%VmY@}“‚ Žrã5A-ø¼Ñ¢‘Z†xlk _t’¬2q~©ˆy$²yˆÖÛIR½tl‘ t¯äGíÒJiN–½Ùšvð†–EÄP¯&3ünÑ‚W/ Q$ïœâR0w¤Sä í¨jßBGÙ:YÌ<†GkcZPW»›Á΢´0•­½ÊrÊ@m‡QHNj(*L!߸öYÏ{ãŽí±†º™¦Ð¤…‘WO„àð$Ÿ„!À?5Òê%“…Íæ£-é zªî¶ÑÏR~ÿÔ4IÞâ6±…3…1ðëè#ŒÜj•mŽáÛoSÜûþ™º¼çs†¶›Ó~bdCÛ†h£• /eÿPòÆ—21y'ˆÑCçúõÆ™…óâˆÖV LÏg nàòvº·FKVÛ>IÞø”LDzgd2[‚bœi¡³˜Ø³v«Ê4;ØôCv{ꇣulmnIx¢œ*úà * º—Z4fÀ­ÁÖ32ÃY¿qñ¨˜RЛADKí \ÿ´žŽœ“í¹d«m_ÚD.­Y5yá²Knè(´šæï1™o‡ ß: Le×B–2~Z“ð¾"ëÊHiìB B½é&;ðmãÃ-pÂS˜šPä’>ø˜BÌãFtE¦¼Cã')Ϙn·U·Õ6uDt´»Âª½ ŠÈ“ É2ÿT†Íå»Òú@)àƒ ¡½mEUš%úÅÔ ðøA†Q(6¶ÿí†Ô­:LwóЇ=rä>#‡ÐaŸjÖ©ÆÞ>EL=1ºJ”µ½ÆÚxù1T[—bíxJqÕDâòm-ô[vÃ{Ÿà1º[ÒfM­ã‡_E–ðž³^ãÅÇ4ß4øÌˆ¡oÆmÙæw–ißnoà@j Lå”w|C޳aNõ“ÔÀ•nmÊÆ,í^ÏTP®Æ Þ¨;b—ëæ^õRÆÂ‡ô $N ‹*ºVM3ÑA“\£‘±‰ _‚1ž èкȵ¬+±d…ô¯“»¹Ðù&iwhÜ©LÚº‹P䧆Ö×]î_XÙˆe·ÝÚüz…ß‘wÂR[WÍSÁô˜o%â²W½ÀÆè¡K²bï)™C{·÷öÔ"ÕÔïã¤ÇÄ7à§2á°ªÖq`)®@’Œƒ×:uƽšúj¸NõºÉ¹eLh¬C—°î‰–—öÅœ·w'~>ÎAA“òZNºá¶Ü#=yïËð¥älö|‘ÒÒbÂISç”F%¨vAÁ™ÏŒ;ÖS %Úc宿” ‰÷騡 á½Ôž˜„Ó­VMØ’¨¶~ªŽ'MŠ ¡ÿªmιœ°& C?ÆÑîŠÉk~^FA¤âdÎc?Žð%Qr?Ê+{X‘(ú}zŽá0Ð'´˜¢u må$– I7¸R Ž—×Ù±2¿p!éA-#{È‚”xS%ÞJ@—œO‚ãS"sú#ãÔïRKd¾xæ†ÁV%›°ïy¾b¶êüµ~±4<°Æ}¼¡wùúÛ0*æÎg^ÄìÇ… ü’ãO;Ä\X€±œ«CCùa&jDKk@ÎZO`O²´|ð ?®§ïxWcŠ~gŸOR ö¶¯Û4H ↙=$Ò^ä,p©]eÛžw¡£MÉXõj‹„ÿ¦Úu|îGYšV\ºÞ#Ý{P[¡µF~ŽËÁ”ã9ÒUÑÝíDÕ>šôéK˜‰…åµ"¤¿‚oÇÏw_^Ekƒfs3&føœZ¸Õèï“TA¤NlÝÒݨfYƒ„Ó]Òû˜×í<õ9S•Ü•°ž¾”Ë'tþšÞÓçу·Ý{g÷lŽs‚Yâ®PÇã/túÕ½"#AÝQgpñúÀíÛÌròØÍÁ(„¢ešõk¢ÍGoÇçåxÄqn§çð«+šïº¨œ~3V¤¯áKÔÖ`Ýïxwæ¥ü¡’Ý6v±HÕÄKžÎ2Z0Ôì/›ëùãeµoXô"…¾‹MycJ»5>àe¨9@h<ôëˆAžå¾røkDi“)í&z:3BlT÷xE´ëksx‚WêuK+ …oP¶×šK ‘¾‹ m-ê‘È¢!éàjS&È»X•H² \wta–Çœ•x- Õš62Žç ýR÷”ƒx¡¸w—%ÍköCßðÜtÉyOô|¦2¡ü00Ÿ-Ž£_¦öTˆšfÅeèŽ;(^~ê“Ì¿>ML€ i™c×+Ùø{Sæ™@â j´Mýئ"sˆDT¼ÈÝwwywwÍ H8-òÌÁƒâú_"†ì€ d˜ÄN?Ö))*©„Â\Ð9áÚ™£ŸJºÐ*“"ºx”µ»a5w«¶z3ør7̬ⴷoöÈ73O`?󶃪žøQ?6å¯ñ“‚ï ±ÍGê4‚}¨ãêËe°ç7’<Ç‚¹ý8]"‡D¨¡ÁÝ$®ÍƸy9ïÙß1u pû¹má’gâ´Ô€Åî?;šÍ©xµŽìLž+Å´çdZ”ôŸAA`Æ:éù-æ}>1 hP4üK¦ê¦˜„*¹8œïPÅTñ¶öͤÌ> *È/ìoÛ|À«…?‚̵yÊ]4wú\<ßA¬¼› gèïã3R!âÔ/ð{¨š~p4í]N×Ä£_N¸Â¾Kóî0OÙ(‘D÷^Ÿ ÐPðML¡Sf/â*dRf#6(L¯4&oc{–¿Rkà㬘³ÌÆŽlvc´;©å¯†Â‡Éu帞ö2Å]ãÖ©ÉVõb_œd€³°ÖÓlpè›§rãK<ò[Îq¼»Ë  6ÚówwZ÷ßÞUè^Œî†2g2VÓsÀ¡ÂÑ·õI´¶§†pw´d¤ šF­üŸÐœ‹81ÿDS`ëêÊÓ¾ÿÝŸ|ØxJßj«ÅM±æPi{-qxß÷&·8ÞçÚ?eœé3Ð/VdÄ0æR…¬r@Š8kß^Sפ°‹©ÂÑùê}ÇùF0£ô‡*eΤ›b‹Íú‘7’%8úp¤cñª„Q„QcÈ®©1ºÎ#OÉúµdØ,‹SÃ3¡Ìâ—DZÒjÎî‚"yO“†ˆ@„@ c(ãvpd³Ë~V¬‰fô–ǯçóçÎlN}Dìäeéq.k﵌‡@â ÂtA² Žþm8X€7î¹kƒnÃ7jÚ€À'ÀF+&Ý6ŸŸIåcè“@ ó¦(‹t¤‘±å ¶icõ"€¦}r í½ò<ÔeÒýWRkžÇ³tó¡cõ¤k\è·F2é¤ÖvSeùŠKL.+L²e\,m"Páš²¿å"àì+j™r=Žez'ù •ú—¢ý‹mx"eµ²qG¼¥ˆ®ïucE7(®<ý% Uî®Q—€„ mƒùe6|R}{(gœ´OàF2Y\%!„©ÙmîŠG6úy”?òðýÏg4+ZC=\¡^S‹‹™Ø,Èu±ªóçÑ§Ž³›ôÀ?èpy]º—µ÷i¢£¦P™u>ÚT©¬Q9Î# &‘Kª_|ÆOóöC~íò8õ›®+å /%\}—ˆ¾=¹£#Á8ÊÒ%ßì&Òló¬iMÂödüXØæBRÿ–©רªÐÈ©³OÌ«|•“B.Reä‚1 £šÓ&âWç‰îÁ£Å^Γ–²ÑŠ;û%²SËjì Òç„ö«¼dsú)pCdU¦c+ù*YyäÛú •e¶Ú©Þ{ÒïÓE—&6®ÆØ —€ð‚Ûç?ŸOÆædÌ!á]}Ih€†tã9·±­óHߥ¶áƒêòiÃï }}Lk±¹¡Ž±ÍÔ…4ƒïê0=³BàÛh¤Ò ;¼í(Ø|±ƒZ.h£zr„3‚BÖ™G} W~NDæ ÷À#“›AÆFLœµ‘jˆÀ¤p-b ûà?Ä¿vóÞÏ}©xµRh:SÏ1nJývõ6ÁÊZ”ÞRœbØ ¥«ÁúÞŒ ~½-4™K’šB~ì‡Z÷ÆIÍÙÒÜÎéɤ¾Æø£ó l‚(ã)q“X®ÀF!L Dk'IXí6§í_YÝA¼ÿ꜄é7.wê3G°ïl§ •$ób¡ˆhømÒ¶/Ðÿ³_» ¢Tm¼[”IÁv®½ðÝYw`Þd³gL33f¯pY yì#ÉmSU÷ÿY ò«¡nußdjý0~æ'/ú®»AÄ­:ùL €Rø7P8J£'ëŒâP“¤Ù¸)â3Äx[¸ë€É«§“¿Ô€26Q¦úÒz\ 7z%ú6pZ_‘C³ž)g°[G‹ª’ªõõȃ~rVUÖGlÆ mhDP†ð2«›²t‚nŸ…ŒSÐú&{¹’v‹{h%UK=Ѱ‚wU.ΉIŒìSè3ÊýÏîð*ã‘xÔ‹æ¦SŠœj ÜûÅ2 Q"sžX Ù\ëVð’)Åq¬N„\äpˆ! ÷XR`2ù)‹Ç~ØCCÎAŽqº½:šé_dIò\hÃf™¸í²@“.¿`r¦•ʯÆ…êŸtpNau¾£¿AÍÝÿÀ˜åíÂÅʼQ¢·÷ô ÊÓ¤mØ”c•Ê™p'$øéãø?*9!1û–ÁLh9¸dbt ?è+[ç¥ÑT½Œ/žÔˆÒ!¡F(yyV 1G¸š$¦Çƒ`ÔqAŒ)¼'FIC¯çÃeÐæE#‘£â˜2Jª[%ýy±‰î®.$÷ÅuºÝçƒ?F~3·Ëê\WÜc‡‘j¶ †1 È=ôiœìÞCÁb3ã©+)ãèùG+@˜¡‰VLããó¼R—+¸‹}y¦iz‹ÅËÎåÖ´vÒ²tàUƒÒCV~þI[u(”̽ÐNaôqùÀásæjꛀX '(â üâ‡üÎl¶–¬+Y4TàxC× gîÿÛ{HgÑ Ñ%ÜÍ#5.#Ю,š”sr\ ’÷SΔÀB=$B˜þIÄ»/Oè Êb¯ƒã ÎQ‚Å8Ûî7ê²óè™ñ†*×³Ä •Â`Yx†‰uGتªeáðò›©pàû¯ža=))™ïŸÃŸmÖqq^}\vÐ%¤Äd ý?ÆÅnšÞ<Ë+w…À=©ísïzO?_¡î@¨%éH_­7d,—é¾+hET—d׿¤å—u:°¯€ÑíÅÑoò'È25@˜Wþ42±~NeHÌÆ æ6Gv¶Ù KCfNðˆÎSËbŒÂ(‚Cç_ðÈ®^x¸*Ã!°<¯ÚÁ6/pÐ.2ew v‰u"0š+Ðþ¼¾AhDy”½ÝÃઌ&üGí40g0yÍ®¤Š1/†&„öRàÐ_X %K'Yi@q ÿvD©ù Ò2,‹<ßÊü“Þ#¦$–¬¤p”%0(ó¡ |*{l4ÊlbN¹ÏwÖQD—ÇM¸s£Vœ´)Ÿš«—I.íí=c02܆ø\·[ê‘ÔMÀ™@TnFŸbYI»ŠB]æ½øÁl”\–2gâÆn‡ÕuûÄœ/Ì´©ÃçÀ#Šh5© ¸3åtàkUÃ9»`cpg}¬‘Cœ‡²®)kÃåi!*)/¯üm–D¶:Jì-ôò@ðµs÷è[{@#¡º³ÎÖ sÄ„bóT›)•£8æ2â]#¯}ÉG+E €”YGÀ³¯êˆ€Ñ“M:Þ;¶•.г½Ì~Sœ‘óýûŽª©?—‚Hf»ŸÆ—çëò*çøœ¯±2V9çÈzC¨¢ e^OQ?uÎp N¯¾$Ü6­½)zgªÐ׆u \C"âHÈ9Ot–i>æº_¬Jccƒƒ×D·¿ÃZ"+-irÇ$oT=¼ì~(*§Yþ[ ì]0×ëÝù£ÄêÌé‡öï(h<›H³¤v:Ó×Sî8˜…Êð"´0|˜6Ù§^Æ´“lîæT¾ÒM¿ âf¡n…ùt«ÅÞGisŸHóŠYíyXñVéêÆì$ÿ{j €yëÁŒ‚¶f*§z?^³ÓŒ}áa@ƒ×ñƒ þ\"L„¢Á„«1¦YŸ‘”ö—mÞû´ÐßµÓü¼½¯d†Jƒ#7>“ç0ÉÖØ}TI!¿FOÐ1­yµ‹rí³‰Wñ *×ÿAÖ@á#Š^3½Ýˆ9Ð:VFŪT:zE"æ·˜üZÍ‚Œ÷às–«^¦Ĩ3O™]XÜù£å¤öÒ“—EùÕîì< r®Êmù›¾þG6YT;Êx!*.ŠX ÅbÞÉ$åA»ãÛµÒ©_ÝEVTJåDâàA•¼|ã¯?7k”ËùCoÙ\ušN¿×‰Š[*9CÚEÀ4‘RgSÔè1½åõÂÜe5¸a^œÀO¸uØÁ„m·Ýˆ9ŠËá¿ô¨ èP5Ví(O€ŠçÔHþ3`f4­ƒ17þ‰GÑ#‚±ÜB€·œ·gúšZßÕ‘”TðÝÚ7I¾`¹“ú©­u‹ÞYõ2Uˆwí²ú'ÿ€ÊËñ>žŸÊ^/¡ßûµìP/—Š|Â1/fÜÇrHeÇë”c.'î(Ô Åîs?€X³W}J”ÈVËÑ–¤Éæ&° ì@q€WØ<ü?!Ã;x‰™s‘©ŽÒ¤çÆ‘œ+ûJÔWÈŸYž'…“«È=˜!¼%ÿÒ÷£/7ÖÒ1Úò[Ë!ÕÌö!>š7-F1“åÖž™&‰9žG¦(©¨…Y>Ea~ß­rXT3˜ùÒ\Fü¹½Õ<ý­—”n¼wHoŒ ˆ&™Õ|)$~ZUÿû$ð˜u nšÊ`ôÝ‹ºTöÉhÿhôøš© ãóK×›™¸4[©†˜&½9Ô ‡5!4h£úùr©¾©†Ò—(žƒ§BìLZ(Š)m 1¯ñA|Bß'”Ô©£0ÃâFïeN­cß}zŽŽÒA&ŹF°d§ã·0u0sà­±QÛ‚Ú¦Gˆ“ÖF-&-:£0É~–ëZ’,/<ša_7Ãß_xÃmÍæý†2wB„FÁõ±<¿BÐU—Ô Sîb¥–*¹Æ-[ûk?óö¼ѯèÕÛ'hß1Öì5¼÷UÝ`.„äÂÔjt³.7³tÙf>3>\™ËÖŽCôÿµ®!_ÖŠË…h°*}”v8þ¼>xù!Ï­2„׳9 08EI'†¹BrhÝ5BÊqoþ¢04ñ^²ÉV¡ =\¢Ðÿ½0ì_·>³ÝºSÒ”ÅÔH”$>áE÷¶pÀRŠE¡,ÐÞÙ³ºj³ŽYOÂÁ]5%ænÛ×ÏU䦮d¾’2À þ;'ªN8› v-+™,uð› dPë_Øè!vªëµ$œ8¢¡å Ðέ±Ñ´¤ÆüïÇb©=ùÛÏ: c²ë[×ìSù)¼µÿ×&u¢Í¾ñªõ¸Ž/k§3 †¸Ô(‡§Ç{;›dŸð…ñDWßt°«å„΀ÊÇþßÎ:½E ͹QÉy!Œ‚š98n³ÂˆÿPO†(d°8|P.|sñ­at²ð4ÁÓ-~¦=tÇ2AË„š·ý4¬™Ra8÷›‰¥{wúÁ®³ÚëÞˆ†“îÅˆÅæ—[ ¡ã ÒûD.'f&úpí6 .àëš„½g¥èÙóA8TýœA.¿N²¯PiÕ¼@$ˆ,!ÏD[Ë£2Œœâ§!g–«?#”]ÃAb0äðÊ[²€ÌΑéKDj!¼p¦Õ}“¸U£Ï;u¡Õce5U½;¥‘ Âȯw¹¿6¾¾²`hø¼Sÿ̱ß`Ò²Bjfœ›SÛ§7n$mdgÙ¯/fb²èÛNß…'DKY Ñó÷¨ëÞ¯¸ÿ2Ô?6W•™,Œý7‚tZ Þr†®Ž Œ’¡™[™Ê¹™ë ~¤Á „ÓkŠç¹0Aª Š¢g>Ѱè¤ÕÙÝÙnmøðÎ’½§MWöž ¹: ‹“äãþÁ™Ñ”Ø5§Yòh²æáÖ£<=i’¾Î–:¢Vù5÷sz¦w8¡Aà-¶†Œ½kõÕÅ(§ endstream endobj 2799 0 obj << /Length1 1470 /Length2 6925 /Length3 0 /Length 7914 /Filter /FlateDecode >> stream xÚ´4œk6¬FDïFD½F7¢F'H3ƒQf£‡¨‰Þ{A Ñ Ñ¢—è-Ñ¢…Dˆä›$ç¼ç=ïÿ¯õ}kÖzæÞ}_÷¾öÍÍ¡o$¨ EÚÂ@HZPD( PÕÕÕ”bB@ ()7·1í ûKMÊm C¹Ã‘ÙÿrPEÁÀh¬N ŒÆúé"-g€ˆ@DRVDJˆ2;"Q²5°' Ðh!0wRnU¤« nï€Æ–ùûà…ðDdd¤~‡”]`(8Œè‚Ñ0lEØ`„„ÀahŸ¥à•w@£]e……½¼¼„À.îBH”½ŸÀ ŽvÂÜa(Oð 0@ìûƒLˆ”`ìwÿ£7BÚ¡½À(«p†C`wl„ C°ÅFš:€û®0Äg?€¿î "$òŸtEÿJGüC HW0ÂްØÁa€û !´7ZF@9‚Ý‘Øx°'î ¶Å:üî )ÀX€Ás‡ à®hw!w¸ó/ˆÂ¿Ò`oYUEº¸ÀhwÒ_ý©ÁQ0öÚ}„ÿLÖ ôBøý%ØÁP»_  ®Â&¸›LSí/¬Šô= JK‰I‹`n˜7ÄAøWzcWØoão5¿Ÿ+Ò`‡ó‡ÛÁ°¤~î`Oò€ùûý·áß©ˆ ‡ ¶0{8‚ôŸìX5ÌîŒ> î °b¹'þúýçôK/(áìóûïù =0´PñÿAü›Š Òà‡­)(*ˆˆŠ‹¤°ÿgùþ¿±ÿÖêƒáõü'¡& þÁ€½¼¿qxþE Þ¿V†ðïzH,—aÞ¨o”B°‘ÿçøòÿÇû_YþoÔÿ߆@Îοͼ¿íÿ3Øîìó—–ÊhìZè"±Ëø_W3ØŸUÖ…Aá.ÿkÕDƒ±ë¡Œ°ÇR\PD\(þGwÁ½aP}8âð‡HÏ[ÃŽ€é#Ýá¿^lø?6ìÖAœ°¯Š;vbL`wì ¢÷— Ã.Ù¿ûPG@Ð_Û(*! £P`R,!°’–ص…¼ó ,„@¢±!,f€EúkÌX ƒ]À¿Ô4@ €0ü¿DI€°ã‰ÒaçDQ€°ëoñ_mAYBí´ªñ…”ÆÞÁÛ68mþ@¼À¥¾Ïðµh±èeLàëàI»Ä+%RLÖ‡t„9ÄöcV磲 â$¤Áf&Qz]Ï ¥ˆ–Êú[sñl7B”ẜ;Ô¼RNäO=·§ßx*«³5‰ô1ΪúÝN]úV>ÿ®?Ôj>ê¶0©ò½W*vÄï‹`J•L“ çV‘"hÙa¦ŠVµš³O1{Ü”aë8!þï­ Ùìv*i¡¤|g÷? ‰°¤”nÿ‘GÄYË¿*z³XHþŠ ®žúS,ŸºÄÐpÊÛ1íþ°Ë­Ã·x±¿þþ2qâ£.”ya÷n¡lŒWØ#¾·¼”i¾á|´üo’ñãˆ5GêÈ93 Í ”DR˜5p•˜æqçÅl¼:µ&wú^_æäß·Vøâ/Ýl‰‰iwÌO}ó#L0Ñ“/&€½Õ¬v=ŒHÖ‡dª^¿¾“1FÄzõŒò³¾Ø­îž7ˆö8ů ÖóKÁvÙ-¨•iôH¥xõW™´{jœ,ìÓQбñD$15I1Ϧ‡˜*´X:rÄtG¿N칫ÝOM|e;æ±¾›Šm´1ÖB.Œno€KZÔßGN†¾{×µ›0&KÊ+êyŸ/˘åu~ªN.Ì»¸wU›‚ÛmY´åôai…þ”PA÷>éÏò†…êË4 lFVjúçNÜ%õ’ë7d!ó%¸4´é21ŸE}äÝÞÕ­‡Ý­;F<:ÖëEºëv/Eq-L$'4Þ’–-޶>õl§É” âx~?ýu\ÔdµŠöµ°ò6©ÃÏpo}/ç¾[ÑO;®º¹ÒGî¾XÁSz,8K]¹Kà&jZszH;qô þZŒ«oa®(±MpësÄe‹Q¯ðe»wâ¦Ê 똠$¾ÌÜ÷w;—öùø eÀŸê,M“¹‰ó°†_Ò^`TøÞ»üLŽv­€UÍú‹ü‘øD«3‘}î{‰dÆ8ȼˆ ë"ÝÙ™*È×MŸd­8pó×f•lwB{UnçÈXŽD)蕟g':ï±ù8_#œp´¢*¿w²¢SyÉÜémÆß›ŽÇ[Ã*Ž!£ÏÓC¹sè¢Â0%„ì:A—L_š˜=žÔAD7<¨fM®vŸ;iLkK¼ÃS‡(Øš—2h|G0ä@°×Óèi -$nC Íh—õÙᦢ™ ³ê]‹ ‡Ü5JÉ:¢ÙO oì%r™Žô<.¹À>jF ›‹´=‘»MÖû97e?Ëëuz#ó­æGÂOE—¨R¿—ÓOœ0h£Ú>Už.¬Âò#xp ð5pq·x"ü642}ïö9µyîɴϤõK±¬·{FæO úÇ/‡t$¸™ÏÔCéÅ{—9›Mî^ò@ší™3kÃrk ¾²;pš.¿±ÊsY²tÓ[¼./ äø™óN´L!ÀŽÝ2o_Ðr6«Ý`7ÚËiÙ5Í]æõóiUÑQX÷›õ·~£®bÊÎø Tñu{‚›~œÙlvù¶§JÌ£Õ4S¸ËemX]–;QºÂ³šËŽ#}ø×‘oc{[¢’K}Îu\Æ5Çê â…Í·ï mжN¶,ß¾ä¨üVÏÈ×}i + 0¨}³]Â¥ø~… ÙÁIkúEÕþ܈1î~ºÆ¡ƒÁcF¦ †ÕÏ¥Cñ-†ß©?ÕZ)b)±‡N&ÒÄ2›nVîô{ˆÊÐ<<ùTjV{k­rÚ¶GÖŽ¾Ìü¦nG/í¡ºÂEÒœžuŒpZD/-N%MÚýåW|·2t¿’"êµÒRÇ¿Ë1HËX¬äRD–Ï·PÒR(ǫſˆVCóhf¶u)@4/¦ÊO&úC–¿2µ'¯Ó¾È\}êLsÿ K@ ~‹û©êeR‡2§ f‚ cÂß8(®bÕ÷œ•Ϥ)¹KpÚ çÑú̾áºÂP¹åL¦Ù»„ÍkyZ"à ¬®ô¦Aì>êž\bÕ£Hß³Íúy&¦É©/E¯Ù…s¡G‚â Ѿ¹5ý\›:C{„òñ{ü&/_NÏr§K¹îúËw>£½O† ¼x–|ÆžË×MÁÓÚfV]·üVSìFw9›¥:óîêÔ;ª”Ôžb´cÜÓ áÔÝ…¤”6?('ÛV™è u{0XN’ì”§èäõ95ÕÝM4Mó£¿Â±ø–$ý²6%NíX½ps2-`st3Á{ö%r§ˆ/Ïx¤Q§â^L.i¼µN¹'¦dc—LÜñY8‘ ±¥_Qn½ëܱ:˜§I®XJß@q”*åù%6~³aÞIK×þ¼6õPx¾KjbNÆ!ÂÔBüÛ¸^†­½y§†'@­; ü<£à·~ªºg”ûëÞ+_Þò½õã|q:iÕïŸà6yVÞÞ¶ã™îÛȱ‘É™;2ÜFÏuëì*¿Kykœº8Ëlˆÿd/ãäž7'¬Wœê¢bSËgüù1ì©Lâ/1ü¶m{l“YA¦_B‘ 3wÁ‰‰ë“RÕ,rÛK ß`ù ab>Ôœ²dƒ6‘Þv'°5\ö,Ø»AÅÈNÝ$Ñÿ¬ä)1ªnKÖsfCT7ïQ]†±írÞ° œÌ?ÏäÉÐÂ3?‹âŽ™–Ú|¼†Aë»vG^,$+9; zÌv q´O´ã°}(Í h°ÎÑ1†ˆžgí=ÄÕ¶¨Ç“toµË 4c_¦mŒ¬MÂF³lÿó9ÕÇWg€J Ð.sÓ²ßÏÍsÖÌé—’+iš i$E8Ý6ƒÕ…“3ÜèÚ:vVËøû» ØTeeV.¡h >œàyá2¼º}±~üM*¸Et´É¨ó}\UPÈ©¨8NDch3zS(DsFý`РüÔ^ˆÑÕ¬ªdÏQúäû çðO-u÷Τš(¶F.ÚuhûÁÍß Q¼8Ë~ÆŒ»Ÿ[1…4»ÞF¥[«,ª²¦èiË5¶ú5v£6¸ÿ/ý‘øBêPL™í SÙÓžH¢õñÒY!ë>‚ºji/d»Œ«âáùb´!Ô‰)b²&Fé\KBOÐêÎÉÔïYëp²…”ø9QkSä¸ôº®ÕWÅßþ‘™Øú Ÿ¢k9Ìr??ü¥ðª"±-è\¤÷Ž.jôN0ŸDHYÈÔ½*C28Â+È«.¤ZW‰¤Ù©›K²áÖÒ†œŸlŽæzWqFëÕ`X¸Ðï^¥$Q]ø¨KËÏ.E‡IML aNõöŒßJÄ¢+ V‹œ„3}§Þx•’¹o3v.Ú¡n“š¹¶„Ã…{ÚbÖ´©Ëí·I¬y—ñbäý÷á#zÜÜûoKÈ«+èH\AçneS±k+--’¯o%N¡¶µIGv³.)SíL² „鬢®õ“ö yvå6( §è1›ÜÅßôäÊñ>†_áÐ>q˜ÞQgˆ¬ë°,`RëH¤(ºÙÇZÒÛr}ðâh±È¿9ì™vånº¶‰ž`,™›&[ž¥lV?¸Ê”§S·IÙÑfdQMPÕ%ølÓEž†rž1nOèÞE¦ÿ»kÕ&¤sxu |öýÇ}Z1ëÐP£‰‚BõðШ¡ƒCVtÅë7BwòuÎ^ÿ³kþH.ô›_ïEXÂ$±I¶{LíN.ï—ñD3xdƒÐ¸7æ¬÷ó˜ºB€Ì"’®¼ÒÍÉy 1B;Jüršl¸28=W9å[6Y"ìJ2d¯¿—v×#ø•¯omÛ3o‚¤Òá‚;5 óªîõµî鱄-½iZáÜŠ(Tð•Á§ÅÏ»8{< ¬éOªeØ„¶<9è†G¤VªÃgîœPùÜöÛzÿÚì¦Læw&Ÿ”Ó|ÝŒ!yéãŸÜC®?¢ŠÖ,ÆÚÒdñÏ|ÇØœr®’¦LFI7Ö{äF!8=‹žÄÑÊç¤pî ¡Þ<-rvt°ž7^é‘e_|z‘ÌÚ¤¢ÕpB]æ×&A±%ƒ8«]ª“£oæáÌßþa?,0Ñ¡r‘¥Íq!º£ô‰ŸÌ'à^AæŒmë qfžtz}®pz[\©ÛC¥”ßñhkÄÖ0.ÓàöWEæA‹[ã!ù·²˜²¼½Áý}DOÞQøÊã©2åÜúBÏÝAî¨÷˜ ß}ñŠ“ÃMºö¶F}núå –ž¾æ¢MÙàÕ §(@ëS–5£lí¯³=IbyÁggˆ× .P¬ÍëŽBsëÝÃ>–G±-‹Ê…/—æïÏgM7ö9€Hƒ5¾ZY7w”ö`¤¯u,‘è>¬—Znõ mJl•Éä?.Uù@òô¶‡ ]W¿àÄi¯aÂÍGc{†‚âu]‡Æ¾0(yøi™Á´aÎ8§aÁ…fŽÀéȼ'¯$G6p@Ú)ùy?É.¶fÕÞÙG®!®k9ZS±?‚N7Â==/9¤â—+‘ÀIÑôu-œå[Ha {'EdëÐ6dIþž•ÔËßtLÅsRÙòàaRB+•Á‘IyŸdD¼ýBCÇaÇ)nVj7¡­!þëçWþiC02«LeF ‘±i[‘|ø; ¶Õ¡dÏ må«ü’*¿{;6ÊãÆî˜³bËR„£?¤m|±êrLÒPñ¸eœÕÂÉ„¸y%"cxÆú29ÏÏò`v°üô(fÇê9Ó¬‚®©çbgzÜ‹”º¹a$åA.]ééÓv~æâ|˜ãQÛ| j$Xg ož¡¤ncZÏÁÿìþãú"v<Û‰•0S¬ž~ûï³è¡¡ƒ<î61‚dáÛÊ:j„í©wÅ-%+‹¾øÓdö<ÑÜ,íÀça“õ£˜œ.¹n£â»²‘c`J^çðíÐúí½‹TOáÎ:׳š•WÜTýDoæÛ'ïÇR§Z‚¬H<b5%¸=»²Vn0òï‡@râ/ Ó%~&𕠵ŤýÍÍ7ˤÞeoWÎdÇT·ËÎ>˜Pè–:ÑxغzZ&ä²u)ªl7ã[ÙÐ褼±bòé1{åÕÒ¦œ¼†{àöl{Ê ¾ñ‘cÇnG r4ìûÒ›­½‰ùÃV•ÎÖHÒâÎR𠼩‰˜^˜l—é!”ˆêÄ› @š÷±`B17þË´…aÏ<2`qeZA)æzŒ—M¬c©Ù0¢ªázA|Ø…`NÈö#vÍSÿ•8Yѵº¢è<ãïB1$èY9®ŸÆm«^;]¯ö®™aÔ- ^Gn¾Ì |)§Ëitï­Ôi®Ü Éñ â†Èç72»¿ižQ9,µ.ÊžÉlTku3D2Ü1¬´´CM]ªe<æy4šÙz4©ùIè1­E§~»%°µ­¹UsÁüœ}X ×•Û úTÉî’ïõ.‰#·ÑÔÕøBk,˜)W܃TËÔ·|žldIË>| ƒ˜¹›qúd#5AEø .¾1_É­¼¢ágÅl¦ÄrÒ‚–5C:=3â#ý¯¹oÌe§¸ÅáÔn]|ͨ 9Rç àèRïH?s©RW;á–zÕ¨,®:JYHóin1³ 1çÚ÷ã°Ñzdðs^Iñô'pœY¬¢Ø¶F;'ñy³ÙòiZe¤®·Û(¼ìä5yϺwO0´™£˜ªþž SˆÔúSQÖ¡Lç±Hé0¨sÂ*M}ùŒf_ÒñTWÛbçV§v~ÜÀ]ueÊï*÷ƒ0b¨û½»xmC Ï|ñ…•‘wv^Ýòæa­æp”Ð3Á”ÊP{fÔNÑãeEæ×.&æ•Æ°¼ÛþÖœ1kj›Ó *öó/ s·•UóõôÄ[üEÞÈ;hÈ 6ŒÔ)»Q½À/òmž¶ˆ"¬¾`ãÇ žO˜H½J·™ãÐ,ìÊz7´{1Hÿ£t_¨øÝûR5c6PŽCª*‹µäïrâ]ˆy¥½È›}Ê¢¼ñ]SA ýÄ߈80:Sä…´ÕóV÷íƒ\ÞÆTö‹pÓ(¨z›K|qÓÅaP^lJ3š‹ ïàT”Í‚W­Ì”â'H_‘ dáû‰}zªÐ˜ŸôñŒÙ^í @ͲÑË×1;&/8ñà{+캦Ð}’H<1‚& ‚cë¹Ÿàæ¡Íe +w³¤G›,]S³ÆMœHÖú=8}K{ ¸1Àu·ÜŸz»¢Í«Æ8CtýñJ÷qGHÔåÕ›œsxò»Þ-´Šä+õ––øÞÓo dTœò%tU!?VÞñXí9žwlZ©Ï0þVþ`pWÄxÙKº`-Çq@%I")o†y½çÙ,ÔCÛK·i¸óÃÇJfE›ošeŸèIµ¾}ë!Îô´­•[±Õ©K .¶E—Ãó¥häB;—™4•þmˆàuººó¨õÜ/ÀÚ*ã´ÚÜIÊÂR·4HC¹Ù8ˆ@Î×íN(&ª¼;%Æõ’k+7HPÏ?h1q-)µÓ¥sjh‚„_%\:ò3¯¬*ßL$eZS,¸Aq:qˆͼùâ-OÕ€ª¯½9)þ#.6Ÿ ë‘džÚ+™ýQNò¹„fé·îNhfå@±Gý6¡BTEfnsù­éškÜÜ4ý=ÅBŠxmÌÃT,RÅ‘JLÒ#ž^,’ÄwÚµÄËmŒP‰k¯F¬% ¯„jbDHwlú+>îK¦&b¨ã Mµ 8‹a¦$þP1æP¿¾úÑó/¥ž• ¦çsŠˆPöµO›N³WI´½gלlÏ[×d»ÑA*ÆE·mÄiE‘ñ{H‚V6š¤Ýù.×Étêp˜Û^Åp´ ­ƒú^JŠÒ©$KžGcŽ®¶¹©iËà %q,«!vÞõ?G¹îÙI¥#ÈXØçBzHÆôAµ#KdxÖzJ«˜¥Š”¸“7o–eW݃j¨O5¡‹……ëK¥¿ªqö?lÈ1K„@ ÜRßļ3wáHÍ(½Îü<n?ëk^\ÃËË%æÚ‘— Uæ|Wò·O*çKJ½> stream xÚ÷P\ÛÖ #Áƒ·ÆÝÝÝÝÒ@ãîî.àîNpwww—` n#÷žs¿ÿ¯z¯ºª{écÍ9×®&'VR¥6±3IØÙ:Ó330ñDå她LL¬ LL,ðääjÎÖ ¿Åðä G' ;[žˆ:‚€Îï21 ó»¼-@ÆÅÀÌ `æàaæäab°01qÿÇÐΑ tµ0È3dìlANðä¢vöŽfæÎïiþó 2¦0sssÒýé¶9Zmò@gsÍ{Fc 5@ÕÎØäìñ?!¨øÌíyÝÜÜ€6N vŽfÔt7 gs€ È äè 2üA ´ýÅŒž fnáô—\ÕÎÔÙ è¼ ¬-ŒA¶Nï.¶& GÀ{r€ª´@Ñdû—±Ü_t€¿ÏÀÌÀüßp{ÿÈÂöOg ±±=ÐÖÃÂÖ `ja (JÈ18»;Ó€¶&­ìÞý®@ k Ñ»ÁŸ•ÂÊà;Á¿é9;ZØ;;18YXÿA‘ñ0ï§,nk"jgc²uv‚ÿ£>1 Gñû±{0þÕY+[;7[¯¿©…­‰é$L\ìÕm-\@Òb›¼‹àÿ‘™œìL\œ¬\¬änlÎøGx5{ПJæ?Äï |¼ìíì¦ï$@>¦ ÷x/' +àìèòñú·â<33ÀÄÂØ`2³°…ÿ'ú»dú~o¾£…;@—é}ö˜L|þû¤ÿ>^&v¶Öÿ˜ÿÙ_FE QÚ¿ÿW'"bçð¢gaг°3˜™™™œï>ÿæ¿ðòJ•€ÇôODi[S;À{”?I¼ŸÞˆ¸þ=Tï 5àS(ؽ3@õÏìë1±3¿1ÿÞ€?]þÿ þQþßfÿÿ$ábmý§šêOýÿhcaíñ·Áû,»8¿ï…¼ÝûvØþ_SMÐ_»,2±p±ù¿Zigàû~Ûš½Ï8=3Û_r ' w‰’…³±ù_“ôŸ^¼ç°¶°)Ù9Yüqå¼{11ýÝûÚ[½_+NïûKtzßAç?›û½oÙÿÖ!nklgòÇ:²°s€ŽŽ@ø÷xGì/æ÷½5¹ÿ9ðF[;çwÀ;g€©#ümæ`0 ÿ!ú qEþAœFÑÿ"Nf£ä?ˆ À(óz·”ÿqþ‹¸XŒ*ÿ V£ê?è=ŸÆÑû1­íÍÿHÞ}@Îÿ¸¹ŒÆÿEì ÷ûâ_ïûÄú|OgöüÿmÏñžÀì«ý} þqz?‹Á÷"-ÿß¹Zý²0½# ½ý¿Kx§oý/ø^¤Í?öï m\þEùÝßö_ð]mÿñ{!öÿªäúþß{ðOÙ,ïe:šÛýKýîíôú½l' ³s?*'k “ù¿\Þc8ÿ ¾—îö¯f¼×êþ/øîïñ/ø^ºçŸðÔØÅÑñ}‚ÿ¼WÞ§÷?øÏ—ä2†_]²3æ ¶¬ Æs£?˜âƒú•z¯ÅB?Uhë<(>gø=^5+sM¶\bu€YÂÀ²[AÄá>{kùÚk¿ž¨Áƒí–žHâÈŒÈ(néí|!ÁëŸd ¹,O3Y„§ÄqL‰ ¥NÐÄlP•Ù›²®%ÁâS©§LH‡BWOMi¦&>·Æé®Šs«ÑˆÚûolÊœ]›Ø ½h½ˆ…tY¾®øx·j”᱑ Ô‚Þ¨×Àƒ ²PgTqÞ|16˜j|¤çœןéh^F’袘ªòyÄ*Øð#¢ù‰­¿°õžIa´,3#Ìàb#wæ§ÿ(2·óOy`eï âJÉY 3‹ô2áÛ”Pñïj]›Ãº[…ÚÛ·Fè™i§Ê$õ6ÿVzåç;.¬e™Ze¬CÏ ™ ZBÏ@£q3fB¸k•dNásÏ,¼Jí áQ7Üqñ+?qÈ¥\y|&tÃ/…ŽE¦Çs‘¶:DvÍéq‰Qþ>išÇ¡TŠ«a…±ö»0bi‡‡B|™rI˜ª$Œk­Ô«Z!ò«ïàǘ›JÂOÜDNHüRÙ&^F»BD{hÚþ9`¤Ž qØØ{"2OÛEúoýí+Žô(¶¤Å Ë!YGNá”çPZ\×í`¨Ø¿Ÿ×!jênYÛòRSZ»»?׊¢Æ±rþÖ°&ó_;Ž»}0‚*_ÄR)ɶÃhg«s‰™sq—ÿ|ºÉϵ÷ÜËM—û•!‘å§¿¸ŸÚÑa£‹§ý|›wô°Ø ßŸx¸¾4¼2×ø¼,Í|&s»ÿ2¹Z^LÃ7`Ÿãå*x÷Q¿]²;Eÿþø8S@ ‡ã<‰ ^Lúú‹k+ˆ®jí Ô™$I ^b}c#=âÞ]lñM)O<‹’6‚}½6Dà ûÂÏ»eG7£p#-Ÿigøìªav@>‚jžW2¢lhÍ`×âÛ*ÿfÀ”.‡<7~‹Ú¶õ+þÓ.0¾õI‰'£áÉH(†ŒòkïzÃtº!ª’´ÃNL}ežŒ+ÓyÁêF†²EðX„ä–txxò‰Ü»ÐÿwölcÚb9ùb†" Iõ©›†[“LÚk–¬áZxÇw¼¦sÓ«à!d%T¸cÒ1eg‡žfc&Z²1ãž³E6Ò VZs_ppVöÚª—]6Ùದ †[›ƒ“MMO¼|³bËá¸yÞóÓ®_¸S@¨nÇ7‡<$túV‘‡úR ¬-CàoJÀ2ñc©-çÒŠ ¬KjðJ“YêÊÍ~̦BÙ«v ÁÊ3zé¶Ë2+hf¿tà=,;£û‹•Œ’­_ñ~ˆ¦£{ ©W_îeÖ˜“a¥’¥ÇªI Ò£Qòõ›JhyòØìßMÜ=u“Æêfáð4ûÂó땊ßîßÌW Ã@!Ãü\-ÿÙðÅã:ï…|&ØË´Ü7€Ê WÝG~(˜ã]„( b-ÿìçàV E¾Ý¸|“8˜Ö7w©/†ØäŒ‚ÍKýQÆìFݯd!g'¥gÔ^x}y)Põ¿RÁÉC{nX©R…ƒ?´DÊÌ2¨[î‚8X h«y[®«GX)Þöé/Ä;µ®u;^ \{3<›…d/»¢MIOÚ_ü`~oÐ:IÄñNø0•Ê*çTëawoäë dâOˆú±‘ßù¯o¿¡àïH ¼=IV΢(<³œàªGÄsJÇ-ˆüð'`ç¸"Ý{ú¶Eª³ÅNABz»VíƒÒköM÷Ç_¤€ïõí»RÔ>gªóAKgg x4ùCr¾^ÕÑ™|oêÏþƒÖ’ßµVF÷ën¯r|z½põ ã–¬±«šà°fKPI0É”]Åçæ5:ñw†´s„ÆÏú ~øàÓ’s?Ì¿¨£2]á mo½ÉÃõï´w2¼T\F]0©Àׯö¦ Jxªà{þ­šƒ)Ž¢XÈ'LOö¡.Žrt3ºEQ³ô¡KDZôÃ~ _·[4×÷zõŒùžÜëB¡Z!‘ŸÒEÑùA,cjÁŠ¥ƒ¯x8Í—ˆú‡ñ ÃÂûÒ ,*Ì×O+1k›B¥=0ã"98$˧¢ñ†™Xf¹›.¢AÚñZæRƒ‘ßäÎvÉÕŒ}ñFtEÓ¥U&°›#Æ(—´VL¦8ª(“ ®¢ ¾Þ~UÙéqÑXv'½Êð°‰j[ʠؾqoƒÎù•—IøÖ#7Ôê¡©ëmÁÊ]jŽ“Õ0êçJÄb£SžN`œê4ùfòZŠ%´;»–¦¶Xfþ qøM UÀhɼŸ#&¢ Ñ¼9·iY¤éI',÷EñdTƒŠø[öMÍF5á——Ô–Dçþ1ƒ0+H—g$¼ÄL4xcðÐ`Î’õOð]oXÖÕ\2ÚÈqÞñkDðmì²ÜQÁ±¿Ñ6.¯l2a´çˆ'l?$Fîè©›HFJ ›¹5‡¡ñçiŠcÜ,ÐÇÍîÇ×’p’£í2åzɵ}!täÇ_z<ˆEÙ q-Û‡~ô€B¦/î:ó¢?eu+wM[Ç03yIô:ŸPjfmÿ! 1 .¹Ì5÷ýÀùfi<œê,G™•ÈJ§.5|+ã$­.gÆÂsšÂ£ ÜiÌZxa,…•&|BÈÝŠNÂÛ½gƒ17xuv~,y™Zq‰O8¤Uë·Æ¢FôžPk}Ë>6k+´Gd÷‡¸ìB½ãkÚå E¼ŽGA‰Dí æä¹”MPÖI^žuö§€qÍ“H¼ˆÐÎô¹&\Ò‰]*8l©Wë'Iç@Ö ¡ óðˆéÅ|+Ül*:²H ‘ù+?Ž}çt|˜&×î¸_¡+Ù mÒ Ê*³ƒ}[ñ‰OU•TÊ-Ï•c~|¦®­À€ý«#Fá´I:ø“ MÔg8ñõuÁ¨š£ {ðEs1»Ë(D¶#sߪâñwÐoÒ°F4ø'pç‡ï¿w>ׯ¼Ü>¢;}i*1eˆ¨èƒ±=57þ6þVšo{-ΣÃKJóìÃJÙSÜ\9 ?ÕQìzUa¶pkœ•ª|TÚp¬Ëð=އç[p{}‘;<~¤•N×ïÚrr0tC {™%þrÈÖë ä°€Ÿ”kC8&_Qi·uëCJ^ʃxx¯ÁÇÛ<Ù?Ý¡(ÎP;Ia}Tž±Ç<€~5¸h¶’«'+Ê3ÁîõÄçKd%êû²bÌtÑõƒ ^TU7ârµÂGì'ÜUÔ ç Ë7O5noËZ¹ñ¦ö˜ú*kµÓØy’r[µ Q\36: †/aÂÍ>ôžWˆ±k&¿xyÝßW>Í>eøŠà»”Ê77}JÞ½êèΰÒÅ]L»©PñVzZ¼æ%<ƆsçCcœ,ò •X’ó´AÒ…™–‚ÙÑ/§BIÛŽyp‘h;Ø.‘¼ÁnÏÜß7ã‰Í,%Ý·Ë+/Z"u„½ a[2|I~̼ÊLúê£|ñ:Lk“#AĽ(¶˜7^vQµ‡c •ßI\¶v ­Zÿj«Y´}¸›LÊìFÆÀÑ íž 9aDä?Á3.6º2\ÆßqBù¦Œyvj »D£fhåDzí|R³ª!÷ö³” .$ñø Ze¢ûÊ>«Y‚xÇ0~ý >‘õ›Æ£‡T,Ëv48*}õ \C/^½Ê×·B+ëí’‹¸÷–5f °ç®² Š[Ô…¼ÏWÁ¿¤‰JùˆÄ“øÑôûínQ+ª“ŸXtÎ\€´³(é’µ|ul^'ßiQÞㆴõÁ}>wK~f¯+!ˆ·9ÖÎê#ŠGµçâÀòÔºk-Ó³éƒÎ"½ÄŒ¡ÒŽlQĨœ,@(L½Z²U†x3[²ç.æðc!R ÖNÉ eÛ”Mùø„v>ñËh<®+Ntñi‘é…ÂÓÆX°dý½„Ðñ† ØÓ¥†oA¹]µCáy2–ÓØVÚ¼ròãÁŒk×p™=ñB%–j —Ýã\y‹ pÛrž~é;„/ybZúó$z3›ìx…Øÿõ‚]˜$ÕHí”ds¯åìiòî+÷¯úA®_iøAê¢BƒÑÇ{¢ O”¶š…A¸WzXOL@R0¼lÄðîHœs}÷ç@WÓfjç”'¹©£Â§MQ§¬CM!?ңƊ°{ý˜›ÎÒ‰%ždc¶¢ôP(gd1ÝûÝámÙvwmßœ•P1¹“´ÞçÏÂÒ~°µôIR?!öÐñ>ûþÓÖö‘‹ ­«è’|]¹5ÆÀ>czhÀ%ÐI?±^•-ƒ±k5Ö¥[æ¸þš6 :ú“ªŽ¿Ã…ýçÙ*œ‚‹€Hk±ªÄ¹4&6z· 2¦$ž´•“>Œ¹WÒiÏ‹ÞH:lI¹I9XX7˜ç¹¼tYƒ%…™/oåF—IÔ;ݱGÊ©vIcìu¿÷Ôý²8÷ÞPÆÃi¦…%KÙú˜ãl¾¿!žMfòžY’æ»F¡Ñ¨ä§çÊ¿'¥½§=ðà<´œ!öw*’¬ÜJåeÍÆøþÊi@c9’)õóA=’Ì–p1¥Æ ¢þ³jSF¼Y¹ð¥Ó¾”k‡;œøaÇšuR›}à‡¹ØùëÌ‹Rj²Ç”úA¬c×< ‘69$É.W–ŠnR »üéa¶µàìßÜ÷& £B¬zÜšÎÙ±éÕKjrw¨~äž¡¤lú¦¸ŸFqÙ©j¬ùÊ>BOÂ÷ˆQÐë£×€çÎóÖ~ULUá¸êJ˜þr"bÊ[Ÿ JþBŽÆgclï¥×õ¼²74I©ßUÞg9ضv*}±£öú„ ø­ýNµ’üµâ+–ÊÞ}ɾ`'!¤/,Ýec8×”ð î×À9~ua¹LaM Ýi¤Á‡Ñx›æéPB»¨®(>û_02šB­U`äƒ)››ÙV`vŸ\ÔB÷7æcüñ n‚-6>Vˆ3Ž4D¶ÜT±YÚ„+w;t®(J< r *© ƒ“h­žd´L<…o0Š<ôRAÆF' !Ù’‘FÎ!cý’êÝÚ<*Ld‚Ýkh7í]r¤[Ú7#üs5±ARüó—Cç=mªÓ³ ‚ma)Z§oôȃXCy…:T¦À E}M·WŒnº†tÕÊ•Ây[0úê÷´.©{÷‹l6]OŽ},?ùÓÔãÚÓ"X8¼ic2ªâí­Gâ×Ùˆ µ½ îTï˜'}Å%¨áω–•Ç«õÌ(´áaéšA”&Å é{«ýTÑ%ÖÛƒÌåU"£kbØúß :I¦'ˆ`v¼!n$hSæ«Þ”<;Ì£&}´t=¸ï ¢þ‚YÆv^s‰44Õƒò^Ä·ìÆ³þì‚Äu˜e×î"`¸R¯Am  5KObëæóB‡®£Ð"Ž1# þ»úA!F ÔèÙ·p{ÁÚqïÔD`ï?ó8Höñü…%dREJ‹gRœCÚK«€Ò‡•ò¸ Pº*pÄ^¿–!÷Àþù ô¬Ì–¾¢¦¨j`W•­vµ¯iÁ«yj)¦HûB«_ñÜ<¸H¼lÛ":çX‡MÄ=Bti&´l‚ÊwŽ”¨wú+âMBÿ–^ÉÈ’ÇŽòTûñi¹á‹=… {_„ªÌ’ }j¡Ùñw’V÷¡Ë2Ndþ—-ÄÌø½¬|êl´¡Dæot"%œçÈ’ÁµŠ‹bÃÈ )«®©q½ú Å‘’+mœh¡{sÛÔ$šË’ÆH!eÁô¤ F%ql1Õk½ê¨Ç²ÀæJî~NQMpµh=öãuȵ¼¹²rBΜ»ütJš˜ëŠþqt{îòícÕ\qÅw™ršVµÝ|Ò ’ë9óu¼åK MCvô±´$\l ì¤Zi9î5Ù2iXX+ÔÉ9 `(åAeóÿŸ"nÚôJs—t=öØyÈ’ÂÓ:DzGKÇ9#`p»e§)Ñ7 †æñ×y'¥ÀgÇ>F-B‚t”F ª3H'»rÈÉà>•"°ËØEeCßîcn!]vªÇ&»õÎÓë¬ÒygßEgÄ#FU&N]úí)¼x‚;vÌݯR²•ƒ¾ÁÍâžï1óùŹgÙ×ç~å¡¿˜ÙßF°3õ0ŠçoÍkH™g%&bô²? WZÁ « Z¶Hí&¯ðЪ~kæÑ§•*RdÇúÔeŠñUO#–Go̬ò†iäWUÙ. Qz®ÎÙ¾¿ÁN¬ß ùÊéM€va“p@lå…kã‘}Û'Éú{ôY *Я|=†Þ[­Ü­Í‘žãi^´ðô¦I„-R8Ï^Aþ£cG-äŒü!%—t–\“G¢Á²ÜƒÝª‚|µFØ>=¨ïÆÕu×¥SÄ%…)d¨ŽèÍJôUžÔ¾Saü_a^á!“wÚΩ€zŒìfþŒ­3÷cÕæì‘žÛ®­k…¦•3ˆ¬çC_î@·¸ž=ÑÛÙ oaû°g’€vøØ)m©'}¸õ·‹³ºÊL?±3$ä@¾îm'þוr;¦¸´˜5}>2tÞ’„ ëýÚ†Éövf·@Èóú2Þ’´m&æHáÊ=>ØÎòˆ8j£ çgæÊÕ–jñ\Â10êÌ‹NCý)dO³gç–®õÎÅ©†ÜoŽ¹Ê€Y c_Ñ~ìR±QûÑÏÌ",ùOÚ„»_EeHÃÌ„æYí èc˜àeFQ›ý50䄺ۼ]¯h¯Ðì]v¦›K= h0Ÿlýø…ú¨ˆÛ’Û•Q¶y#0!*{v囌¼æA»W8àM¢\ì‰ÖY#?ÈÈ2¹ÐgêÈUg¡NOàM-a3Ì|ZÐ ÑÄ ¶ä,Q·ºTi¡îêÕ8ía´f÷µq¾Á~ÙÆ¹*Èàt“ŽD&­`)T…'©úXÙò<÷z[¬ÔÜkõš‡ÅÕ’|áK>ÕÙ~vFx¦ñ}„ÈP&¶jdi®^¾`0 =åä˜ë‹äØ4#9ãGÌ;Æ,@€íèvØ ɸä¯-â§ûo ‰ò¾Õôõ£oT…[Ñ9aug›aÖs?¿1¹§)ÏnÈœkM8m´%çñ×·KUMÝ,kûÔwó@SÖSW™eÀ {¼¿ˆÓ‘, äYÝdSÆÕ¾g¥ûër%1#¸’.]çmö(m{„#ZXRJGG ¦‚Eܲ^~õÅséºptZ0£ÜoÉRÊJ§V‰ëw[³h†Û_-fŒìâXVMv£š ¬|´EéW@ž·ò™œoà1Û°À]‹ <_msÃÖKÜ~<ö&nI&t±¸MñíÅ'·3KAãptøü ‰×:B›žýn)À1çI­O°1§o¹OmkNée®„‘‰[, ¯R’Fˆ]^ÅÐ@/å Ö~ÔëÌì*çÔöàU3ƒÈ}#[$FÏTt‹+É;ˆ¶ F.-eX›”¡ K‘jè§ÂǸì{2’Wy°@Mä½ó2‚ûYVùЃÄl{ŠÓëE4³Ò $ŠMͯ³bKà«ô,Îù•ÑxJFi"íiÀM¡ÍYœ)H‘*­™] u9°A"=ô:%¤äÈ~qÌH‹—†!¸’)åÀ47ða,ŸFËZðdãÌe¸9¶,™;ß ðP²¢E{¸/›ß×s½ýŠgÙDXt®»“¾^„ˆ(ÆñþWáþiT¡/üjhÅŒË ¾Xî¥Û…!Ð) ”Ê>_'NoÜ~±rúÄMÑÌ©²ÄÑ=R½&“ŠQVÿª\m· ‚A·ÜÓsbiºÑÍûŒ,ïö+YˆDF9êÚ]{ÀØPÕ+GLÑ8"¸¼í†uë'Ö‚i¾š²÷×Ö[OUC-Æe[Iªx}”(yo¹=¹Œ’N4 «öLæZ^TH³Çþ< žGªl±¡D~“ç@©~e|Éæâ>^£ÈÚ¡;ÍÃçÜ‚ Ž}WTRò'¦’‡^Ç|‰&òl[,BE*wMïa’.¾õ8|VеÕ÷SÂ:d׳–éÓÔÃgWMJ?ôˆ¦5x§Uå NTºx×.tÝÑUã@àvØ’ðB¬~–ŒÃþ§ãfJÿB·/ vzÚ—0M*õ´‡èò‚‹ ¼±UÁ‰³”Ân™£„pÁk·ÄÌö‘S©~z~]ýÇìíöDþÆü3°QtÉ›~{4ºUÑ Ocÿ–ϾBÙǨ˓T®‘?ãÐy Ué€blÚSN÷øPþ'á›æolN{^¡)Çk$]ß¿„Ý =—¡G úÕ=HLŸ³¸ã‘ž¨å"ôpÁ¹¸‹Úæè#,ý¼ r5à8µ rÌÆ²fW³*6j3¼@¼ÈûDÊ ž“â#Gb¶"H!M2F>'üÁùß6ÔP&ë¼b·òT¶~çx²YtDE+ÆI9ö\Æx>ÌÖr@ò‡øîÍÕ`é±üÂàsfL¤è½kéïÜ™œ:„·fË}ÁPH¶ñSG@Šr‡5*z•‰ÉbÑèû3q{°¡è¯%ηYÚ¾ù¡Í±%@$ìnlvF‹±ìlèÇ[ ód¶¦8?6•Ò“b‚®åƒÔ›9àFdfÁÀÁ›‘+§z2Íœf©'7Ô&}ÈÇÛ¢ƒFXœÂÒ0(ÆÝÞù@@V–sØ ×t5Æßh1ûó"ׯn›øÄk–KÉOѯƒ»£+êq42^/4_êá[•ˆ Îú<o ))|[ȉŽð{®wmIäW¬Z³îÁ= f%‚,çšÒi.ݺñL¸ª)èl\J0QãÙ0)wíØÇñDg‚nuŒB¿§ä÷e%©§¹É¢’îý(;¶~Z•¤lb¤ÚYÉC –¥²T`l4¼ä]6'—g3¬³´püÆS²}»5ÀÆKûé¬y uar­)jg ¹%rlŸ¯ý᳃ÔÝùÏ'½õ5$[>ã<ƒÓ_XÖ7ñ‚p][¨°BrïmE1Çc“åf(<…´‹Xkï7“»óˆœEÝS•õ6„ &ææù4ü%E"1®kKˆ‹K„’ì¨fc~ÙƒŒù'dyKÄFŸT.¤¸*+WJ…Tú80­T•b»aWòûo–÷o¿LX¿ÇúzŽ3GAttljC¦—âÀî ˪£c\ž+^ú¶¬ öJ&m›<Þbª‰>rŠœÉˆÏQ=kÿlèpÇë"‡>ˆ6H–ígÒŒ·E*ïöCGê¬WÉc8Ÿ’æ æ”ýTÁND¯¡·H*î‰ÏÏݤ}Òýz)ˆ’gÀÎÝ Ï¯º.swVœŸ[P›úR76^g»>UŸy­ Ëüö½‰Û–¾¾†lãGÖr_­ƒîˆ¡oðH~+šéZ¬—ÒKZüêDk+‰pïAdˆùº‘¼îÈp¸¦'„ÿ`¨%Ù»£°ÀØüšÎ¿qz"N—ñ…ózCÌÝÏa•xø|¶PícÂwÅX¹ñJ÷ Œ¶ºZ*Ѿì®ç3ðÚT™é¸§ö¡Ñ·+¦­0›ðUŸ;b·çeø_¬ôÐH´Ãyx ?ÛÌv÷VC?ãLÀÞꀃߟæÛX«3¨Áæ¦*w°¥'I,Ûq¥‘-ª¤³ó¶]µZŒvWjßšX¶ƒøV9oJ >éû{Ùi’ ¦â¡;ñ‡Cç+éè;¬= ¨$ú„þ<.u‘Lb1"ñûc9›‹ß¦]VæOGjŸ÷b¬«DôAÕ°ÉñkÌWÏ ¼Á§×Ftô]pv¹uÉ3­›xE &ÎËÆ ‘ÄŽðv;Â,ÞŒˆ/¤pÌÛ¸&ÈeÕi«,qëÈ!5Œž:Y–[:Ûå6öæÃÕ&î¥Ðùe6ÆeBo_ËNúNÍÐŽGw{®¬³MÛòh¯/°‹£è_$­fçðxÚ¦ÅGŽ;)'Á÷¸¹nï éS͆–l•©%!.ãÈ6¸Ûè‘ u¬dÛàÕæùLk]°ÀkE8Ü+Psj°†M¼Äý÷z ¸|ý?2Í\áÝ D¬Úâ†íÃñž9—Íiæ&‘)BESÊ^z,¤õHMµM˜Í©ÆÝDÈçôãg¨}À“ŒbÄ©V-­ÏSК7ÌûED³˜]?˜ýáÛ;Gá çù 7üúz%­…p·N†ÇIL âCÇAŸÊZyVë-¡½Ä~y5Bù)¥)C¯Œ`H’IY5ŸõZG¸OŒN*^Xqâñ—«”ØG‘ÐìçŠG¼ …•£ì±¯zõCGÒ´ûFñNÀiâÍß}„½&K»5v^åÐ6ŸZ`°Ó$±¥v³ Åhº¦)\££TY×[÷·I’ÄÝ%®«7[pìCõó¹ã"N'›^ =†¯iz©=¦ZÔÝÚzýª¬ïÌ‚Á'jÝm•L»>'úD ¬A0ua‚f¾\Á—)¶BxŒŠØZ•yð»Ïâ#3¶™ YöÁ"ë&sijãåz[°ØŒI[ô¦ñ u›ONO Š®ôÜAM½ vˆaøœCöXƒD†n7d½•.êËûFýó2å9Þlð{dáB@Jí²~Ç]íËŒ ?ëb~šÉ/Àe#õOV÷ ùÜìëù=»\‰xèÏ Ua-eßNn:]KÊxž"×%¤‡‰PL•Œàhã'Ð!Ûo'. P¨í®xnÉltO“ìòFŽÔn%–bñûš†NrUiH\´¼ÂÉ ´3Ú诈d語ó»Ld>#ßâM‚´3k‡¿ãL¢ÖåýŒ ºåˆæ #ŠÎúu£3@ä 1wA«’[4 wg¿âÇHÖ¥·ªm12ÈJ¶6(Š(µÕ܌ЀB¶ ÂW>ºîHÒºpsYáz©æYâÙÚ”™D4"}pB¬}λ!ek=à#”WuX©Öö!{ïqMOpø¤Ì×Àׇ9%kD¸Äs‰˜!„.e¬ 4vË*zŽûr¤á<ÆE²¢°€íµÔ£”‚i ‰.÷I™äCI¤=5æØ¬wi2)¬ïçïeáN=|)\mR+ro½©3˜ú¨ª,­Ò*É-`NvG-I<Ö"¹âÎʤRÕÈÂA‹ªƒsÂ*wá_\ŒË¿¡iÁÕmµ$!P÷¼Ðt†é;M:k}¢ý*å!ü h¤ÜëQt3A‹œøÉ¶ßf—–®õ=Öw±©q—Ü’ñÀk+äôœ²‘«°ËÝÑjÃ>Åd«ˆºLDc)ý÷W0œÔ›+}óSu+RZÜzÙrùÑõ"m\SÐÌÆLÌl ^Ÿ71›~±+Ÿ°²¸Û.ô›+FNGN¡ò¦O°Bbr¼Ç[gcE(ÀªóRx„šÙ]–=4 S)òý´Âô+Y7ǵ›Ay‰ ññ¸ Òáæ¥~ïˆ.`5zaÃpF;oâÓ°™õ}¡lƒ Ô WV9¥&„´ e›-ëµ³÷v.q=W“…^»9hÄ„j¦ï“þNÈ"×3Îë248ög¢+ãæ^`j”Rç8Z.û¼ÎGš%QÈJýJΰê†A †ýTñï"õÈ›ê)`ªå‹ÐâEýÀK•¿¡‰&¤'Ò‡EÄb-’,©’S`gÀjqïšXNò¡ÃQ¯SsÝÙ:OR—Ã]oíj5Cn;~ ˆÞ Î6|ÎÂKgá-Š(” £aãù»-œ9´kù!ãj&9 |³W×+÷•lü˜YC6‰×Æ öâ~ŠÎ3ß®+·“»Ô•„Ð(‹º†;»«ì˨0†õ®’ë×Í,ìà9Gã#ߨIùôúû£¢j¥ñD{×5ê²u¦ñ¦ƒÐ˜¨ä,ÇçqÔÆ¾„ÏÖ–¶tÜÓ¾1ùû¥•ärS7<ýZL+|#è…!³Ò×æØ§†¡ a¿ï‘3nŽ*Íýð F:½\h”RkÚ&بõóC/NO4“¿#‚ÎqzL½0jÓ ú÷GN*ììšU*Ž5ƒŸy¿€Ë9ªÿß…®! «Óí¨Ñ=6Æ‘‡ûòD‘W©Í˜àˆß/_í}ßš‹Öóå‚6–Ä.=Ê’q~î˜ÛVb&/ÆjdðËHŽªP¹ß*FDÛiþãb]{ÞFÒ8@Él‡®Ûs ÎKá<÷›;Üç Ÿ"¶ç¸•‹0d ëKœÔÔêÄ«ö‡Úb »B¦Àç.„Ù§˜°½ ã’|KÎß:>_•åH„\·/é0X¥!­I“ྡÊy çÊ÷äSÃ22ñàËçêóÄeeëNeº£« ÝQTäGñ§$ޱÖEyèìt*úëpâ¬)˜àÁø sï®÷/pù·LZyÑét§SŠ£[dŠáX ¼yÔîûäŸk»% ÷Ñ,I‹÷Ë–Ú– *4ì˘€’Ô3˜(b¥S?} ¹õ»EÊBmÃ*íªIróØoÔ=¯V}i~T±ÎŠø%Û•r“—¶-åå[ æÛµªJ1iß%¿øñ®ckA&‡!þ;GcA¼ð¹o;¶‘ïYýÕñ›• <\rdu³ÞrÕÉš /›øX0øg©žY³Ë¿y’c1»4Ù³)Èùø—æ—~´ôN…U]Y@UAk½¯‘ vPeS»ˆ¥J­‡·˜es+ \9±×bY÷Šà¯òNõ%p±<«…Ÿó:@òOc݃vQÐpß6˜sUVüN"‹Mæóüéá—"`dÇ/°03“•øL¤êÜÆ5– ½'Œ1:­ãŸ8äöTM‡ê÷¦/ë†m3V|ë]Fؕʽèz‰4 BÕoù”±+2ˆé½w }aïìÆ(v|4"|c_åØ[¡¨Ë0iioò±¬8äò«çm¥Ô ¬öM2DIM¦abèÑ*…µ^ËåhPÎ$2K =¢=Wæû°ÂÅâ1Š£­ %ÛRDÚÉE°6;R –r –ºÓ7Y3: Á˜îòv¨,V í¯$M(•ÀWìü”(‰ÏšØ`8xY„Iv¦íÚn>¾0âå‘KEmb3´ÝŸ¿úÜœ?’[¬ îûèyﲜd¯zˆÀ¶)hÒù ¿ˆö«sŸÇ7/×_†"¶q+-ÞÙ>Ó¦`tçÕ¡¿[%7ÉDâ3»´¾;2ðIVB÷Ü9ì¶ÂxLê˜Ê—Œù÷û¢˜ÝüPâWïò©+=ÔÐþ8ØÇŽ0^›ŒÁ󂵸ÁnÔÖ|ÂB«ZVíÀïmÓVmð;,:n…[ÿÚõ›*W?äÓ[úô•›mvNŽ…z¾¨ë ÖÓªJÛò‹ýçsg¬ý’Ñ&•Ý»‰s57}O“³UާßPS¼Ò:j³~·4à *lå. e&IäÐ-k”cÞSá°k)Ø›ˆh—Ò?‹à91jrx¬-Y¡„¢¸+ mTÐõBÿòÑ‚ÿbМ€vKÆÇŽn¾>ÕÈ¿k@{ç7lŒN¼é÷IÛ;K!C|#| Žxâl“T:k@høÓ`O&]Kÿ#VJ¹‡§êÀ$ìOnÿSi7OÀn—+¯T §2þu…•¯G”Ûe6”z·C@‹¶ 9Þ¾–̸'“J¢Å4¾‹¤˜!^Rþ£uí’`!ÿÃïË%Ëk¸ìAŸÀù¼4®YüÝ4£ªJ˜7Ÿ‡xiB\® ‡¹Xl¸Ã7NÐâÄŽ=¹[lh\"ó5Yí_ù/ÎpÀ„%î\žg¥\K)hå;­šó]ûÙ_ÁH»üRÖ ãŽ(æÔŽzšDNYg&>¹Ü¥âir †KOülq]ÔÀ4.SYFÕ&#š7óEg•ð­fW…`Åj–dÐ<%ŒœÄ/OR´àåJ[M·Jæ³Hëÿ'ÒFßB¸üu…{­ÿãô³ô±ÜK1„S·uî‹2Kû%~BW¹õ’²[â ÅÕ ‘épÔ…`¼È%8£rr=uÚéÓé—šÚŒNY¼ƒ–ÙìhÄ+Øt¼ZYðz·ÿq¥&ŠšÙêÆU:âíÎÓjÓ™]/ŽLK‹¤†ÀZ2G»K‰ˆœ‰Ó»ϳn[ÿ}ÇSÝðYÔRÿ ¶’1§Õ’ ;1Ô”N¡[”51š²´@79?°9ö³JYÝÒëSûVÀO¦¹Ü·$t²k×ô+³–„r8è&8R$×P5è¶£&Š#ìP’ºÜ_oè/RÊÌâ\QQo_rV+NѶ»×tFb@ §w"-E[^Ψàañc˜õ Ež‰ë'8îug«>ñ ç)‡èÝŽ™ÏOu•H»iµÂlÏýªš­ŽJàîìEQÆÏêHÝZœ‹¸Ù¨™˜Á2Ÿî%ѱ[eø É£?û¦ÇuÈð(¬÷7ÌœÀ½6˜AJkfN¡g7ïfIó5B€+çI³éá×€Ò¼ÔlT¿||Te¼üÔ±‚G®*Ü•°KxK¹ž0¢0þ½2TßÒÑ5ÙÏOQÕ8-™X<µyq°²Ô[ãáóKOͺŽ÷pAÌ^÷!׳í,8³³®u8›ÙØbV±­v8Qmn72šIIÌùª`Uyyƒ>©QM8 O…àdÎÀ ¶?–…{"ôEÇE’6Ÿ¶‡Þâ *åe(’Ÿ˜Œ‹;LìT î§ô`Z€»A’ö‰.g!L·`#Êm¯·B/%l{§Ö@ˆbæoþÕÏë_gp‰uæÉ„‹€©j*†øÕG&🧠X«}ÒëüÉZñs4©ÐÊá'aÖ¯JçU¨‘ &%8c6^ÅÍn4ÑÛWGöàÛ`ÁOo1ò^o2Ნ˜Ñç£öçïxõ«ÇSTb~1`\#ß •·7 wàæ;«ÊÇJÚ¾ ~Ý]°AGû<©dŠ ÏrNªª`Í)kšñÜnNüʶYÞºZPù ›¾!z{ŠA%iQ6ŠrIÆ+ƒ2VT^¬' žŽ7˜ž*³[tNÐ ]Y˜¾ž,ä¤î|A#WÞ—]l„ÀAŒþù¥ˆU¤Z´ªg™Ä˜L[^™nâYÔÝS.7W论mC`C²ÀÒT\#$—Ê¢Eô }nTî–ÌŽ‡ê¶ûK»7žCÝí£»€Kþ·;òi¹ H#”䛓Ï;Gk´&’.ª-Þ0Z@K s§×r˜Ä:§ÓTgDì¢Ãš™¤ƒúoö—½¹n! 7ö®‹ª»ׯ¥YÞ‰xò­"°Èš¤»¯æ†‘z}æ¥4ÃöòÂJѺ)TøB~7™ – Öq«¡ï­=¶íJöëeþ­_±sÁ¦Å0"hdÇŒ±·$,•[!€Vþ&šß ÝÚÇB¿[ù‹ì ÜÒÕQdùd¥5åûûZâcc{mÉ0¦0d[¸^þDi]ô¨¼bÀ=YüoóÅ6=’Œq×Po5—æÅòŽ¢ÜP¯¡ÙïÔ—#µ‰'ÛnÇ6½ÌÈ&)Œ—=ò–üÓS”å+oŽa1%(*ÇÌ8*e{DÈPM"t_óåÁ|ߘà,0Êè'‰ÓÅ söÝüy½Tl¦ >ï=Ú-R='ŠÀÜ0Zþ¦B•/¦â½r‘¹Éâý®ßNýÿSƒ[ endstream endobj 2803 0 obj << /Length1 1369 /Length2 5921 /Length3 0 /Length 6846 /Filter /FlateDecode >> stream xÚwuTTm×> ¢" Í¡Cb†éé‡ f`h)éP¤¤TFiiéTRBºAB¥¾Ñ§ÞçýýÖú¾5k9{ïkï}_÷Þׇ›ÝÀXH†±‡k`ÐB`a, ª««¥ ˜0$JÎÍm‚ô@Áÿs›Â±îH Zö? ªX8ÄçSƒxàº4pǀۤ,XJDA ™¿€¬, ñBÂ]aà w'çVŸúb‘ޏF½|P~,##%ø;Pvc‘PÐ…x8Â]p¡`Œ"á¾ÿ*Á'çèáá*+"âíí- qqÆ`øo¤‡#`w‡c½à0ài@âÿ‹›097`âˆtÿ#bŒAxxC°pç@!¡p´;.Ç ƒc\{ÀXKÐw…£ÿëüþ¼, þ»ÜŸÙ¿ !Ñ¿“!P(ÆÅ‚öE¢ô5t„=|<ö A¹cpù/±Ç~Ÿh(Å? ºC±HWwaw$êI‘_ep÷¬Ž†©b\\àhwò_çSCbáPÜÅûŠü5_g4Æí÷·‰@¢aˆ_D`ž®"wÑH7O¸–ÚŸ œ‹üŸÜIK‰Éˆp7îuùÕÂÄ×þ;þ寱ðsŸxÇý‘û¹C¼à€Öà÷Ÿ[ä`0CB={¸MþOuœŽøÃÆ­éXp@¿~¿Ùà– †A£|ÿÿž²ˆŠ¶š¹©ÎÍ¿8ÿUQÁø~B` @HT€EÁ’€î%àß…þ¾‚¿èÿö@ï?*j¡@ú¸ëû‹‰×ŸËÁ÷§tøwÐÃàvðý#kŠ{€ÿÏBøòÿÛÿ_Uþw ü÷‘4a ·ÂœÊþ¿QfòZê¿Ú±s@f¶¨Îàµb¢*÷ã›Ø«‡ãÊÍ£ËÌQoˆæ_Ô8›ÓœmgýÓÊÒMT6#ì¿ úRËÿÜp×ñ]Önj²¼'††9ÐíÔuy(ðßtÛ[Ë\Ó”ã©-=.qÜ!å­Þ¾BÐû”^ZZì AX£rfc©Ê[å‘Ñ÷Z\îûJý[‰,k?ÒÚ{D%:& ñ‘óiLëëW]µ2מ®¶H2jßF¸[ÔéOâùB‚ùìÝ{ ’K´WÓÇO:}éöÇÓÔhéW˜©ßP9µ“ùBXø=oPÞ­¥œNÜý$ÉŠ¯E›oÝߨ’_茙‹ûèΪ`u,S˜=Ò v6îñ dmÞÀŸ¤×V[v±M·xÎ-¬ÿ:û“&‘î„zõú¤a5>}’$åÖÙžtšæû—Gîþ“”ð$b›Éôûárr“¥%<žú 1ZS1¾À4н§–ܯž"L¦têe{;éIß·‘6­fn,ë=HŠuŠ÷#žÕ‘¼)c+}fw-‡`;š¯ÿ@¹$ùÒb g~!̆g]@¹ Z±ë5%³u'=|ÖmïÆŠêœx¢ñ¨vfPWÚbN]åô ²åë–oÝ Ên¸ìä¶ò.•Ú¡U²å ñ¥±6%÷¯’Ÿu’13ô÷ÄV}Ïú¢zeˆººû†ù6°äw÷ƒdg }/ 4ég0Ýl®}NÜù½oÞ¹ôHliL ‘±¾Sjb…½qý{#­$o¿ê˜¥Î¶ÎžqÓWS}Ï ½{*Øëvôë?ê?é+?XZKZRg^i¤\®<ì]ØÎž­Yx..—ù¦–9W°¹nªgŸµ60³²Ï°”Âe–ŠåžÑAX@K3f*nì3, íª^‚ŠUusìŸâ4†h¾ßËY‘ñNaŒ}‡× Þ7µæöp÷æ ‚hj4¥ðÒz³£û[—×6_…² ^ŒùÄ/f6‹+Á7ŸåðÅÃæ gWú9ÃÛÓ×nÒŠ¬WÇqÞêvº´´sÂjWÜå´›±"ÇÁ~5»6RºX+€=qÊãœnäUÊÏ»½xÅ®ãôíÊ%"½˜>¢Hôõ¹¬úôدö"„M7H¤Þߢ×Òà}±Ñ޶ñØ6z0šòö}3ÿèÕo¶ÊS,I …+)å"tû×Õ8›“hó>½V6ŠR°7årYb {–hĵ4Á5l‰…ÙSÓ¿4-™›Kç˜4>öºŸcBQ},ña¿¤`Üú£°©ù•Bx² *çdœ_ýË”î@‹¾VV‹d>+&ñsúJË ‚±Ñºƒ Jsç ËèQ7%M’ÆÎ9nÕw¥ß°ÎeΙ/’t ómpL€vŒ}¦CnD…qoÄï̧Œ†›8Ž,$HM|È´Gœ3@¹Ë!ƒÛxÜ&­ä~þøž>@+d;3ÿLXé~oî°DêX[ÞÇ<oªÐ¼ÕÑþ £­€Qîe²9~[Á˜Fǧ õ õÌÉ´j¯µG-è-’¢©M¤'–ãβ¢ÎK‰‰æÈëÒ>wnKÁZ´ºÐ[¥õ>\-ƒíúöš Ê/¶YN£wÁñ5ìxf¾²N^Ç^·¨f4v¤#HtK§š¿Ï™JoúûLÿ]j=чeRïwt>„ßšGÛü$õ¶ %Ñ` ?œº—> ê0®:»z»æûþ§¸DÌWšûŸOy¬hPGéUê_ÛFøu%´ ‰ûÜ<í¬§ù6ä "}·aG¹¾ü€±ˆðŒ ìEˆ ÷/}4¢›Dξ‡ýV¨òmU•7Äßé/{Çâ¾zËí~j>˜sæþÃùê§9{öYš¡ÖüŠŠÉ„e…–YæÙpèŠð¥ó,[¦ˆ’ä­(­òë”W4Y/ 'ù=ÛÖ¶‹ÓŠ„”­fŸó5¥p‰ê®&ÍtÞq$æÎè`^çKË •¤"œ`&Îby¬rv®Öà=5òo·˜Sc\œ—z§f|®†B™2,Ë럤m—Ъgi0Ž>´Õ·m»Oµ)³‰8/¶¨Û¿»Ì|u€CÒ46¯óÍ– (c½ôØ>+µ$„¢¼a2-Tf=Ÿð \ÍxsûF ˆ«‰LÏj~juº£8Uçk5Ìà=é$[xÊÂ9ÎÕ>DN~ñ~€ãÛgy úµ•AŒE`ð¶z„9'Ð š=3ç-8¼ÁiT·¦¼Au˜bwtj¤ Ì]+cê.‡ÔøO'–¼ìeµ;tC6-ÀÝÚ7+è96ô»b5ó'Î=—wmÑÜ*+;½–g/{y‹óµ½Ò„&;#G*ÄÈh‚sÖï♹%þvöx‹9 ­ô^íZbðë~§Zï··LùØ"e®…¶NÔ„ÜÓs¦kሃ•Š#RÉÏ´²Ú@~•¾?£;ž>~ÎÚ¡—;{Ü´iuýÅå·¼J=Ê'c —ó¿µôjä½-ý‚f?Á#’ÞÅ‘žuîÛ~T=%HŠ çòEx䉯6­©¦Ëxvóê…Œü­ªÞ}’‹4)*B¹“oU¾©³'¤°í 7¤“PîöjÐO!n•YQ[„sF¿©ïÏ<ý(κt{­/^|´ÎÑÚù /¼xìÏCÛq”6„‘,§ ÙµæãcÐx_ñð­»MlÆX­>CÜ+êOØÐÀ†¯ío¢•gzSgĬĪ7Ò¡Ì«Še<ò{j4U¼WØ"/ñ~Ïç’AZÇçÁㆷ·Ðp‡Ÿ-¦³At*¶zÛ³(-Q•܃ZZ Ž­­ûzë)ò©bâ¾,æ2 L¶_´*­Öß˽ÞÛ›Âkj\^œò \4UOsupß~Þ“˜ '‹gÑ=Ùð…ñ\F)˱Ğ»ƾê}ñ»2 [«ƒbÝ#Ú]BÝLr?ùW Ng³d×Ö?ïuöO%VŸ¿¤oÕ[di‹_¸pàŸ.qÑ}ÛÔñÐ"“b,øxbçêŵxaƒ÷/=½j܆QÝ|“Œ™;•¼Sá/|\K™«¬»œ"ÝߨvêŠô|5ȺßNŒ.§Òö? “¥»?Ê.Ý¢»Iè»ØsÙ¾¢Mœ†ô ŒÓÊééOÃnm™ µÅö£)¾W>qä³¹¹$³©â‰ËçÀ,r0•xÓøõ³õV]ÃF•8Ë£†O©j©”Žf‚7#ë9Ãäi»Ã7^d’ÂMŽú=çMã£õÜËh˜68Ô~p;Â]¥îï…ù[•åË ¤ÝµŒ ] M¿­(#sMô®(ÃÛ7ß#èxdlQ½ê#wüŠI§”§$+(›^BëiÝìm èÈ[ˆ|ƒ‚>æjG´B¹ü²ÉìîrK‹ƒ˜m¶€ÅH8¯Ï;v¤dnÙ”û‹íÅ“_-~>F‡yJNñ'Õ‡òæu³¾\{E¸ÏýÚR¹ óY°ÙxûȲê7º—qw>'¥>W™"Ђr µ`ã@[™§÷у/±L¬ I÷[QðÇ@ת’¾ÄDstiòzÿa¹—¹Û«ic!‘RÖà°(UÚàªH¢áˆÙqPòqwæÑƒI$EV*8ô¹|²†H÷=9yÏó2”ôwÇ äíZè«D^9óÌÏä#ø8*ËæÜD/žûI|dwúpª¨h´œ‹ÏÉ”ÖiIh’¦âlḵ¢`»Ð ¡áóÁ÷ß³¶ª· ÑÓf×”[µŽ á§k\”3Væ­Â/ÝN¢W;y,aÏ!¢ÝS§õr©fùdÆ²š° ˆ¿JX9clÝžýØhý»êö!|T£Ž=Ÿ³ŒLÏžê]%(¤´ŒTùÈ›PÌú£8}ŒænëhˆÏÆ3G¹ý#Åf)¿Ý~¹NíBç§óò£1›Ä!;”Ä+tÂýÛIÂdÅ?±Ïɸœ8u]0ù•óR´Ñ5ߘPÈV÷ä`›§\4áE äÔ‘š½×êñvRTfH=Ù+Ú(øæ)ØÎ^kmÄbžçâñ»Ÿ&/­TÖÜšªàø¡X‹ôÀƆòÔÏŸv“B:³þR ¡£‘N³óJTÑnA7ÇDúMíÝüÐyB©ÙÆ9ñðÒV ¢oÃbü {ßt•¶Ú/ O3SÙ§Ÿ¦(7KúÐO™Él½Ð‚ya6sœ+Þüä&¢Ðlµ40T~x]¸Éô‡XÝݱŒ½ëÒ¨—£«¤Áx&ä— @6GB™C¡ã~šC’dÿ˜VWŠÝsv"Ëó¯ut_®@êc»¡>üõ –6[ˆ¸ÜGÒ–Æ{+f±AZøLÍ$w>'ìXƒùîHÅ0þHûHU^û¥<¨á¶Î «aù|ÒĹ·Ï#ׯœ¨càísg £È¥Z´Ëi!pI‚Ûµ¬„¥D2þ<Öö~§EgP4l¬ Lå÷g™2zd­g†‚ç¸ò|%¨&€ç§Là~¡ÝVcì$l·äáÂÓT ­fz˾paâM¹|¶3;’ŽúY[MÁ‹Ø Ô&þK–Ÿ=ÐÕ”õ‡™’ç˜KÅx†òºkè¨$µý²I̵FùºkþÒFâm½ØÛ²AÛåËGïË8ðƒßŸ/%=q0ÐÐb½Æ?óí¾Ì4\Üö6¦æãÚ yv>[IÂÆo|Ã6ë‡*:¿|Ub·ZñüŽÙÒ¤kº/šÿdeKrô‚äK”U«WE Ò¦‘¯¬ƒ`Åo|Vw©@f½Ö¾mÿ@äY•ȰéBìÊœ¯o°XkOɼ¹tž ^ÞeŸ›«Ÿ“!¦šI]„-ÃH~/ù¾\Um¿n^éÑmóóEïTól–çY#ð›<84jd·+\¡·ÖŒ;¯M¶÷„PNáïe†;/$ÞW{2ê¼ßÚö½™·ÿ}¤|8UbBÿèˆÝµÈRô̺|cÖsQ›™/Du‹üü<áñ ú)·T”Ö÷Ú#ŸhÉ‹4)nøÏåŸe§ p¶ú®³JÎår"¼ëìÞß#ÚÓˆ.Ëù=ŸÄV°˜Gá/ݽq8$yŠ’a¬ü/Äû%w Á-—pÙºË+àžÇH¹Â'¾Ó¦{ç¤Ø‹í]ßi&¥@;ˆÇà ]E –é]vÔ‹³b»:5" ¨íö8HíH0k¶Ÿ=k'!g¡j®!t€\ßCò‚g®1,Ï'E¬ÚBñNºSc•ݕ٠«ÓúÞäåíªÎO s(QÆщÔ-‹_¬)còT»+žó–loÇzë·äRô_SŠ‘%*8:d¨°´kÍëq2¿?…Â}KÊc“ìHØÓ‡_ÅïÇú£@»LaŸûŸ½êÙ™“ÚzþRäĸ𓫫|Ziä>it1&«ïuK™ýµ/Ìs+„•¢S¡· -®“M+÷ú‰ã©' ÂáðË!f°RêOë†FA»ŽÄ–^Ú›Ÿç¯{9U›V?„$§c›ÏûäÇ¢c„‰Pt hé,ÙvXÇi†X>J¼š n¿¦6Ð×õNžñÞíUÊþ ¤ ËýŸJäâ`cæ£í­·?ŸòG¢—‡Šâ‡SŽiÕc‹Ð;ZëÔò‹„E£q/+=/X>o ä6Ò´º»Î ëbc~‡HU4ì«=Z¾ôQ:;®0¾R±ÀL;±4ÑŸÔð‚*6Øz?G©,œ3w³~ÏDêVWj¼†¡æ[w]¾;³ É2匢“Eq>#EÄ2°v%¿Ê·¹V^€7 ¸•²«³›K‹/>ì†Æž¬~‰ À’UŠ–Ò—¦Ä×[s¢?îÓb«Ä§™øEÚ:w5tÆRç Oõ'DÍÚ• žáÔØï€˜¼všö±˜{-åÁ3˜ˆðò·sh3û«’"× \µœDNÌ P…&{›ÙE=ƒ/¤]µaW®xM—ò1í ѹÞ#ˆ†‘“SrðŠÊ½†µìÞ»§ÿч¥æÞ'ªÎÚG…Êæç.ß’] ¢\"´Ëð°øq:Ý«ôùÁgž Ö¡`jÃ7—y…²Žûí¥éW^VõöÅòCgéPÌsÄ×Svׂ’2Ò¦4¿åtžÜÙ+ë}GTÉtéöRˆµû˜ 8>Cþ²­mo¨_IÇ ëIJWYöõèQÓ±ð¬”QÀTPã/ÚãÁkÂ7½n\´R´n× Z5´>†á¿ó OÆ\ûáYdÁµ¡'¢øZš%øê^á1> stream xÚŒöPYÓ ãîîÜÝÝÝ]ƒÜ݃‚'‚{°à Ü‚»»»¹'3ó™ïÿ«î­T‘³º{w¯¶½*2U &1 '3 ´“£;3+?@BIÀÊÊÁÌÊÊŽ@E¥iãnüGŒ@¥ tu³qräÿÃ@Âhê’Išºƒì”œòö67??++€••ï†N®üISO €3@ÞÉè†@%áäìãjceí ó¿ŸZs:ã_Çb@WsSG€’©»5ÐÑÜÔ ádnt÷ù ZAkwwg~///fS7f'W+a:F€—»5@ètõZ~' P6uþ3@ÓÚÆío¹†“¥»—©+ØÛ˜Ý@'<-€®Pp€†œ"@Åèø·±âߌ€j`cfû×Ý?§;²qüë°©¹¹“ƒ³©££ÀÒÆP‘Vdv÷vg˜:Zü64µws7õ4µ±75üÅÜ -¦0%øOznæ®6ÎînÌn6ö¿SdùíTe)G ' £»Âo~’6®@sPÙ}Xþ“—£ß?ÀÒÆÑÂòwÎ,ZŽ6.@9ÉL@"„W™ÐÀÅÊÊÊÃǺ€ÞæÖ,¿Ýkú8ÿR²ýƒ2ðsvrX‚’ØXAÿ!ø¹™zî®À¿?ÿEll sw€ÐÊÆáÕ;H ´üƒšïjã 0`Í€õ÷¿½—…“£½Ï«ù_ýe‘UT×VÕbø;ãuââNÞ?&NV;+€í÷ñ€~ü×Í¿ø_òIUMmþ!÷‡G9GK'ßß9€Š÷¿<<ÿ ÚV†ðßÊN Yh_Gß•‹Õô‡íÿóüuäÿßÜÿöòÿ6úÿ—´‡½ý_jÚ¿ôÿ?jS{Ÿ @£ìáZ %'Ðr8þ_Sàß«¬´°ñpø¿Z9wSÐzˆ9ZÙÿ[F7io …ª»¹õß3ô¿.€ÜÛÛ8UÜl~_6&PÃþ´pæv  Å Ô«¿T@Ð>ý7¤”£¹“ÅïÅcç☺ºšú €ZB\?6ІZ½ÿm ³£“;è”^ÀÒÉáwG¹¹,b¿E#n‹ø+â°H¼"^‹ä¿ˆ €öj>‹Ô¿ˆ‡À"ýŠ@Ö2¯ˆ4À¯ˆÀ"÷Š8,ò¯DNáÈ)¾"9¥W"§üŠ@\T^©‚¸¨8­^¹ò‚$ª¯¬mþ… ˜ª¯äIÕíò‚2Q{E LÔ_(WÊDó_2Ô´þQ.^P­WJMûRÓyE ~º¯DHï•(ýW:÷ dijå% O¦Πåý}-ÿ{ $5{E Í\MÍ퀠7ÒÒýUÎñ¯üïþW cþŠ@Y›Û¸š{8XÚƒïßš‚b˜;Ùƒ†üÎ߆ Ký¾ égy¥ÅÆÊÆÂè t= ¯F ~¯Fžø:Ü¿õ. {ä߬AÌA `oêð‡P?,_!èŒåó7´ùƒ ÿ1¿¡ç+ ¶ß‚×x\¿Í<\ÿˆ2°z… ZX¹šþé€Ñúµ4 Ñ°öq¶:þa’ýÁˆ”·íT*»? (‚ýÔ¡?rÿ½¯ž¹@GA7ÍzP5œ^É€;ýG JÏùU ræ ú¬püϰp²ý#ýï¨p‚Xƒ¦ÏÆéµËœ Ò8Û{üÑàßÕty'Ð'wàüsðý#ý¯¶ß{­;;È“ëï›ñUªâk(.7 ƒÍ“ë· Ðóâs¼ºÙ¼3'¨dnö¦nÖ8Ñ|åzåXÜ­]Tý·½Å£ ªœ»—Ó>@n=þ€ &zþAd½þð:íýEôù‚zäûÊäÉèúw¨ÿ<æ® &¹ÿõ¼ƒ^–ÿá¿>á€@o 9ÂüŒ“¹À;ÛÚwmw_Ľ˜¶G…&©¶u>Ñ1ùÍ»¶{< À~¤«Î Yu½û8Ð…¶´)E{-º@úäwØ\û¾%I­õ—ÿ£q‚úÄv+ÂÜ8α‚C±º^bx"&MÑÿ'í`;ÈfðïòT¹.¼(ªŸ1ï¼zd¼ëzˇÃg¶Õvª¹Ë~2Åh}0 .ž¢Ê3ËšÆ#‡qg"†£Ç8óFº¾™ÄÈ{!•O`@8Šá(ôÓ_c½Ÿö]®ÐdwëÀ§Ä×Ç#†¼Æž ößK‘Çõ+)\ú1çÝ,XHšƒÌ˜ºÄ„ƼǞQm£íØØ]ã9<ÿm+÷#à áÌ­¤šÒF,cWrìêVãhL÷; ñÞ7Kñå¶íNKÛT¢¾Ÿu/€)d=ëà¦N¿_õ.˃?˜nÃS[î7;tŠEzEˆ¬¼Øè¥¬ ¢–ù3ˆS¡ËÜG :t€rXhŒ žy¡MÃýBÎÅØ6 XYõy¡»Á‡‰N¸rýÏc*Δ¿­M¡ÏÚ{a¼ } åV~1ûžzvV€oÍ!e’N›—!Õ™·G£&P l˜ -c9[«Äa–,õ!ULÜàš;ï£,䔓éÞž­ˆ2 ñ±½çËg>Ñ®ÔjçÊW#Û:ŠfÙkî ëá»±ØÛ¸)/7ÂÞwÒ¾?«ôŠˆ]×äy—ùM=(§ÃM%MF,¢èvsºÞŒâXSܓ̡1UGSèas¤£èÑ‹±LN’Цp^©Wa_ð½ÿü›9ÉÂnü/A¢8‘×Aìµí*w´`H™h˱T™;‹ÆíÚçÏℚwŸ)|×ÀºgŽl’ MlRúÙWsö4¸>¤AÚ'P“Ín¥_® Ñ~ˆz¶ŒjZÑò«_ ªÉ˜ú\=ꆧ€mç`Å=’”Òd®(2`½Ì$eÛnøf‰>Æ5 U¹Ö®`] †• vèS®JŠDhÀïZ²*Ò“¯ŒcN‡74v»nxf•ã^I-Rº;ÖsõËFóЫ=i§2×BÙP¢)£`tAåffL´P‡Ý›t×…LÑâgÕ&¡Óaà›6ˇ~q!Ñš«‡c2ÖÄN½<'ß{ÊãûñÛ¾ ªžÊïØ^ë+ëìoœÊºWUÆO"rÖC¨{yâ'Ò0¸ü l(ps)p¥ý>Ü·! +biä’wxŠŽ\^Ô¥L‡“_ª³e|ïJøð„úi·h‡ŸÚä­•êgü¶T0(ŸØ =ͧ°¡mŠ:¨ûÉ•ŽzDu¦Ã+ñ *–̨Xç?AÓ?˜¤Âöä%­&±X^wgÙ·S©J±çñ“h‹Ñiˆ+²ì–áœpa–Id‹å¯ÞfÙ Tù u ÒR´ÌéB;JÃ$’ÃEƒ}{Çë§>甈ÞÙ£‰K»e¬sa&öüVÁßI Ñsf2U}õ™(¡ÙgKiï…;¨<·Æ¨ýÖÔ=›NT…í0% Lúœ4ù+‡ EÚ¦9ª’Òì¸L¯þÓ²¤CÅK‹ïØé·0ðöe÷åä]òÂU@¨9mñ8q¢€]mºx¨%þE|ƼÓà•âSu œ&œÂöVé˜>ȲvÕ,æ½vE¨‰ ï;¨"†›´÷ØÉÔ^ê*ÀêÙ!!¦Á[Ûçºa}"‹ü …o ^j±³çE'rqxBÚÍ\o ³«8_$%¶c“žD¥ÛC{™…(Åm /ظòû©h…/๓ùSIöÁÒ´0ˆs”/£ŠÀÖÖ -ž+º~ƒ'V¢=®Ò·E þ(Êû¸Ù‹ù³ Ò­£ˆO°A&YBÊ$L{ÿ³õZû@¶ZÒ¨t¡“j{ÏÆzè[ʲøvò ޶[U¾Y¾#ý7¾÷à4&›•$ÈG® :÷üÊÉ…Gýn“×}ɤ¢0–¡H™FÄ:ËaÔìœ^¥ö¾ˆ;”Sì:§˜µ^Ëa?ŽTøÌ^ò·ÉUŠr0Gtºé¥1Þ,³™ø”}P«H6TûØE(M_¶d£‰s³g¤ ¸±0ÎW2 -× Ò¬SnQà‰«†cPO›92p-Ìxì×»îÅ<Ös´ÕÌ!FßÎé½W}¸B•×’ú|tùüálR!´cUöMmƒ0¸¾šè(ªÜüš;UþÖKJf‡A Oõ·Ç\ëQÇ,¤ü}=š©EÓ®¯šÝç4º®o§VÓX?BÊ+æá ÂѦˆ"Ôîæ§#T6(û)H7¬.žÙe˜­t9â›(Vç¿[4-ÐÊoîõ{ŒÀðÜ8U\]jÙùÌ™tÅö‰ò-¦«ƒØË‰ÛG¬®—Žú«ôi­B¥·ƒn×gNXf¢~ >3ˆpd¤Ñ~¸æpÌ:oõ¿’ì°â:"®™9‡Y¹©~² dš0¼©Ê Vtþ…Ñ„j‰äߘQÏ»÷À<Гò•Ár´Ï×§Ä3”tݸVÜ·jð}Nø»ˆçT ÄÁeÛõìûn]pÓ|2^üé„”Å÷xV^ód°pw<ÛÒðz¢>oÏÃr Ò*ïíÄgö+’àIS²<ÉXï÷£¤“C–WNJ¥VM "B,ïT½9ƒdÃr±ý`uëeHf°Ðô0É9᏿/wîÖe É'Ë `îØRFӎ͹”ïøÊœ…Ùyä[ÅŸ.ÜX O¢¾ZÑ^•zc«1¢¸ TmðŽ$ɸõ6ó“ªSò½áÆ¢Žxpð©¢³iÀòØ·íºÑ)‰VìQ7"V7µÿ~è]gœ;«—Å_Ë¥T\ µºs²ˆu‹ÛZ‰Ú@ø¶ä‹mAØZï|YÀŠIòÉ¡$µQPÙÖŒšn3%Œìjñ.ê°»\AeüÛþiæy=¢sÑ9Gìr×4ã«#Ç¥à.8äo*›îbÊÐLŠÈŽ)Ñ©"ÐÆ+8FÆa‹VX‰ Ù8?âbLH¾Œ—(ˆ¿_9ãö|í\"­NhBNÞ³ÿ®æœNPþùí$]Gø×¬û†Â –X |$£ækþ-w(ù[Ñ,ïòºP)ZV™AÑìE5ˆØÒ¾d;Mšæ³l4lÁxBǹ-`w{E ¶$Ý×A*‚KÂlËÏÂ`‘­èq_6 †¢|U¶î@à„û"G¹|ŠÒÂà»ö´ç“ ”p$-Àµmge.p'`”?]÷âÜŠi”lJåš~ód5§GŒVÀ÷ÞžÝî«,-ÀÙPŠÞÇ£°{²)p9¸)½í’É|ª=óB©ê¦#’_BâóÃroƒ4`Øn—“-èÖ(ÃjáŠÖezLÛ!®Ï>¦\%U=™Òéq>¨¢7P¥¸z`8Ña¢\A‰Ë«´w™ ˆYÝ¡’²¶ï?£mºa»b‡x/¥ ì0w /ŒÏTWçÙ¥V-Ø÷P§TSî.¤¹ÆÓYNlIûf˜4ö5Š|Þ”3Õ¥N|nK<z:‚ñbgI‡nj×”qô^šVŠ‘ùø´mòŸO2`e›“å{ŸA§„˜)=ÏD®³Xp¬¦dõm’Ë”¦ WîÒX*¹MÀN‘êêh=<Þ446éõ4Ä!MÍRÙŽô‘É~;V‘}‰%5¾ÿ-°÷¾vôâm†|“gJmð›% ÊyØ2ÔE k‘`®4ÁwxOÄ­ÇC_:ÏE“*ñ²àÓM+ꃘ°ÒÄÞšG…ïÛ;é€×+Ñ^ÄÁ¸‚5S,šÌŽ;êùÙ.špøÛCxW™´ÐÈÙç>½]«!ۮ̻žTí<òKþ #UýéThÔÙtÏ1xÎúPÅÒ$«ñ$cÓùî©’×Ãg‰Òõ"eùò£‚e€¹K7W§O ÙÓò›é¬»Ž#-ÆJðoî¹t;6ü²¹ßTÂzi«Œ*ÁûÄÒÚßž]Æap„+<öÖz˜dø#ÖÏ{|C³Ã2dõ ©â´Ž=ç:ÀHÇ}7ðÖ†Äc|¨‚”57š¾ráU鮉´9`É'Þá0Mr¼»%¶Ùœ•]ж }²kRg≯~ò¤ ês`Æ ÑØì’lž·÷y$ÅãIÂùŒ¤w=#QWÙë°ß`ôµZƃËX&ö®až­èª;ˇ)Ä絘á3„5ÎȶJÇã_’ÂÎ0 ;–eV|Ö”Ä%½àoDO•îMæŒ~6Ë(Üp•Ãxõ¶BmɹºœŠ•pXŠ…¬ê¡ÛxTu-ou_´OœýÄÐsEÛ'–¼¾á‹Y° U/„\$‰¹£#2•Å3bÑm´˜– ´XoŒñL{¼Àiìâñ)$â¿CïÑT(5Õ¥Üò²Húªj°áMèÒšï%G›òÒf‹Æ¥X\&×aÞàoMÒA™à+¹©5ÖïÕªÃÐþT¡Ï?zºÛ3VЛÉöý¢Áþí<°ƒ°ÜÄãN‚Àªâˆ{f)b¯>ý‡Ñ7á K¶ÏÄ/Ó³<Œ¢~ä(ƒêÑ(4“Ÿß†¥²ó»¼:¡LI‘ò|wl.MßábØ~Ùý•µÐûÖuçTç+4lÚ¶ã{·ØO¬Žô(~(Õö"ú¥¾—Ñ1¢…›vyI™'¨ûóAž*˜LêK¨ºLR>Ÿ,p+iñjýadøIŸˆ=ó¤6¸^¢lfưØömå]¶9|Ì|±|›ïÄ¥ÕÕˆéVl¼G½tîDš`7¦îƒÏrSYÅ8Ä}D¿ÕÍ §ˆ.û›®xÎÙô‘ϳéFã.Š@§ÚÌOZÇ—H·…‰‰ã<ÂGt? .Ódã³!ZJ*ÅxÈ÷ý$ÃÕYØÝŸ”zû®îݶ‹‚~ÙñÉé^%Zæ—fN@n¼Œ=ýbÀœ/Ò•:*NAëg>X'ëï&§—_ÔàAéXÐ#©†#Úƒ>µ]D&¦þ9/¶'ÄP¾ñ½¹cCè:E9o›’Û³Vƒ@S=’b¯J1õ…s´ødW$lŒææè¶ûþ­4®…¶Œâ #Ã.Žv…ÌsÁšKS©K}7ÔÀ ¸õ‡^ÔŠû{}’ ßw’¥î¢H·@ŒôŒœ=¥9Qa[:Ak“-¥¶á—ÙÏ/ëÀµcmIùiÿÔ–]Ô€‰b ר~Üšýbý{ˆ–xOŸò“U £È'Ûn&)F4sQ¤o w žn¦’ ‰ Òà;üÔ’†=!ȲSÜ/j½OãŸh²Ô8úͼ)šbI9.I5†ùËlÍЩšÜå`Y„óT^N2‰]µW‚»ð½ß|i†i¦Û8ÍélxdŸuÉåô Í`7o\ZQ™º„Ó¦4ʰFY­SîBvjäjœ´CD“ÿXtNúwWùVC·s™µF°‚®ÕzMg&¸Ó²YZ²Ñ:n‘y®N‚ÎHz‚‰$ÌÑ+à‰1B_¹I {\üªúQ1FØàÛ5usÆÑöÓáëœûñó³Þ:—I®t q†wgL(¤V¶4nbCßûw2¢¨Z3hÜrˆ†¤iïv—n„ù´A OñÑ˱àL6’ûÍaÃrh-øþ8ðؒδ„ž/»V]-¤“ŠàE yÔ*Ì|ð¢«:³ÂŒÂv™â_³°¥(l®^ÂŽ°†uéC,ÌlssBfjMDP€”á‰Û$¯ôW±Sö° пðuó ÈïQœ®×ÀŒ*ä²,›vh+îã8›9Ó@dïÂO˜1¨³hœKz”Ï4\ªÃ!©$ºÀ1?ZÀ z¼Gõ‡rÿfË6ñ#Cl×õ9 »ªc¢êXÞ³‹QÔþ¢>lì£öJ||&夂 µwõK+‚ZºüDP! ‹"æ 7Tk5ðÇÊ­Kâ\|áw¡uà1eÙäÝ3=™uV{šûmË[Ff¥:½p0‹´µô”€^0w{tØQ’6ÃŒ°”É\+»õ|  éq]SÄ,ä$MX"‚˜làܾ†Cö¨ÃOQ™ œô#Á Lø³Ë:…ÛªÑ#Ube24¡=8=K¸uã?‡¥NÙçÆeUy:q«IŽõ¶t˜j¥0¤”fߤ÷‹GnäPb€½9g§TkÞÙÜ´6Z'ÙÜ>úò6¿b¡ÏÏ¢ÈÙkâ1˜ÍƒÍ©ŸkÒˆ–Ÿ£ïP·Æ›K!UãÍcœàÈM@›š¦³Z¡²ºAqÔ­ŠSÁ“Ž w³ÅõJQ²ÝÙÔ=1#‚*Ü]Ī%‰F*÷¥á™°Vè †&Ndƒ&Ì<ò!’ݨ¬8…Ù$+i Ì=¢”@lI”rêOé6쎫- §»{ë^É9p‰FY5Çm„á -Æak jdø¯½9`69þÏÏ—Àýz÷ÕÐH N¦hŠªˆu’ꈲñã“LùÖ¤`‰=â””D²¶§ŸÏN¦‡'nP'ºaR£57Em› ˜LìÕ>¨òê|'†ëóüÐø B¿Ž~¸½½¡ˆ=õË fÕ] = ÔÄa–~ëóå¼Nµ:mHc°è‡„¶E0ùÆkŸo¢ Ÿ¹¿gåR/ùN†[rooîcJG¶–ÅÅÏÜb„›ø("‘?jŽe}NiÀ6ôø43‹Ž5aºÎÞC¨¡%ÑÐçõ.e¢ 9=á }Ü/;g©ùíMŸ"'å9û¢t Lù¡—àœÉFÉJE¹q÷<k.–Üøåéœ~h«½eó§êe®o§k†{Çî'ÚBȃmÔK„qùÏXµÚ/Ø3zÑ›žR;|æû<Þ«¿@_¶§»>‰h«HõÂÙ=Àöí=•»Ô3KŽg ÀvŽoîHÔSÇ”{íO\Ã7]àba7Ç—Cø<CÍÒEN·—Þ` Æ#Í»^oD¸ ½¥(×Z:h¾ í܉Fî¬úÚNSÕÿ’ÎRY}¿_W&-€•ƒ"‰9÷mSÎ1ÃÓ#5(À‚K3„ë± ­×ÜWÁv•Jì3mÀ8Š´j;~lEд¥p$ý+,õŽ}•!ßyyÆU[1ï;6Š9—,‚gÕI¼8EµÃ~ðèQ(îr›[“ûSm!ÚcHÿ‚}þ`.Réô¯óí¥s…/` ¤S{ûŸäNNª‰SÑeÕ¸ÐzïaÕo6…ÀÈpÞ­³ª1ybtë1¬o<Ϫh ãz¢>) +‡Wmà$“ ]ñw!.B‡ÆêcpKúX°èh¸ã>·z&úa[Ü9»¢™ß߈^´GÛ´[zæÎ8´Ç‹‘ V©Ìáá_¡_aНö‰êÜ1Ò?)„aç‰4IŒQ¼¦Š¸JýÀ×]wyfèƒh±²ûeîf½ö®¦b$Ó-ñf*8‚¾§ObZü‹N!Îíh&OСÂXêJÒX(­#Ò%ÿaÅO% %¥U*C.PÄi3 —’†þY)6”ç”–û4¨Ñ|_4Í0”>OçÀd"3ª”â†Æ­‡ø¹«+%ó»œØ(º…<ÌRØh(õ1y^ _¬–! ÈK œÊV!¦EH|èkÙí qgSv´Äb¾…_6þd¶ŒrªÁ\Q£³Pñsû™/ï\\Ù¢"°h î(ѳ峹17ëÏQm»Ñ/ÇlR{DM~v3Ôî*PžH­lþ?ó_J«aîû¿5­ës;½~º?v™ÚÂþT>˜ëP®œ@¦Ã‘Cˆxƒ’Rýôt4r¶¹ãRÒªüdWÑË3i+¥Ä¡™ú«‘{ ¯zŸ25™K^†YóÉ€ÏG7¾äØÂϧ\ŒUK8¬Ècu3ëZ:_…ƒŠòTÊ^²{ÚIÍmnMäf¹‰ÉLº(2› ‹íñ^”¯«»mZGx`R„ 8[³0¹M(myŠ^¶…Û}´x8¸Cq,yÌ1¡|9éîÆ×§Ä¸Ûm¢V«]D:„þ·«N7²Ãç˜ô ¨´÷4Oþ`¤Ý¥÷úêR©ðÔqôšZ®ó7JôôÐü¹FZkÍãâ+¹J²°h“6ù®Ú8Çñj1ô¹² MJl·ŸÊÒKáªùœÇb2ú®‘*bñŒÓò5 p#Oпg 2¬¾tx¦ÚÕ²OÙâ¿'Kâ?jãsB$¤@û9Ž ×’Õ50ÐáyöæñÄâVõû\†Fm}pôN_ñÆËugPоä"®µ…Qýò \ÃO „ŸýäöPaðvfœm‚€d›½iŸ¹>ܦ‚.(ü>z¼'šûöÃä7ì{—ÐØ{4E䢷[§Ng`Zaö°´Ó‰ïƒÔÄ×3Ô†^¶Üß4Ñ^?Ñ éŒFžNà#Pn?Ä­ØÆã´~~æŸt̸ؠÜs0®-<äX¦TDu€D- §£%2) ×¾Q”,t‡+ÿÚ>ˆqø2Õ/@6´ª¹Fœ@îtâFz5#Ùd¹Êð¶çÊ)8=/'Øl{NJ!ЀfIƒ€š}yöø u—e:ý™È½(âÛÁeà±¢¶:œ* =yR–ËGH`æÔ¼¾]F—ôSz Éúu«ëA’ÄáÖ‚óS™YrÑ9tkc,y¢;x´.¿VH耖*¹¦á3{XõqÑÂ8Iq±5¢ŸÙöV¥MçøËB˜_?4ÏÖÛÕ4'_<$i«ìÒ’àÁ[÷.8{ 9`¬>Ù§É=GOÈÎZò%$6ì[Cl¯q!€)»²•ËKrµî>oŽì0­Trc‡ eoeŸê«;×FË)å¥jƒÝ%Bí'à;Oa̬yI鈜{ŒÎt¨Ð~AørKÉ.#~xfMÀrûHF‚™Cý©Ñ«.ú¤xìç½Z-ÑQ°ßB䢢ʮ‘7 ½¦ØéÀÛ¬§mëfyA*S´Ñƒ|sâ\ú"}éë´NÂe&ž„ü1ž}ÙÙ'ª¨anÚ’>lßœÀ` c8óš]J!gÙõØ ±Ý©ÝñèWSÙɘSG ûê*t§à]‡&‹<“lØËËœ‰ºC¯ŒÏŸýø[•¯&"†AÏýå%¿^W¹ÕxXð}‘2¶LT¶Y²7G¢‰‰aÿÇà+›òïЭÖ÷ ‚ßž'%±Ô# !ä‘`8â]í2¦Ÿý­=ø/±‘¼Ìg¢E, ªvTÞÚ8F.Æ{{µ+JbèûnºÚ”R¦Z•‚oRË»Rð Ï´)šD­ 8Y¤"-’uåŽUì»Ð'\‘ûé_’)VpKß§V2¢+b?jÁІkIÅ= 8æ'W.Ü0ùÃR¸”)U×kùÂÆsûæ-kO€‚s-ªsT‹ÒPŒ®²wƒ‘Ç™²¡?Ö[È‹ÁûepsæÞ!´F’ Ú†Û\¡ÐÞw3kYŸ§V}‹ÌcÕ}EŒD3nz"á3|g8ØVôÐV,Ÿ1& ¯c%ǛګiÖAÙ:´üY-æ’Î8°5…>¸}ëA4>&NFÌ5F1~Äèia‰KøšqxtÁø .sÜí42jÈïÑoñ-¸5µ5]n`Ñ‘í=²MOgÕȧ‘À,aìV$ät‡(ÚÃp±ËzTlbú›'ͦNóìÛ <™Ì“™¯>><ÔîZao¿9á<÷½CðWg ruáò´ôdˆwN‹Û,®áâÛ'«ûrN(¦ˆ'ç£wzø”¯/Wo·æmjp cA-ÆÔôc É¤Qô¢~ºE…år[ñ=ßüݲí'ÍÙÕoËÙº&vR ´ˆ:ÉïªÖ?=ï R %ëÇb¯m•æ’êu[-X?l¬‡ªœôÖD*OŠE:=õpgßé%™)X²oœÖïd&Y\Ø®.7|Â}C€hI¶½´ýnlÖ$œñãŽUýJVÖÌ—Üç}ßȦë"Žk‰cÉAš‹öÒƒmW`sOwi–‡TC8<ÝöÈUæèX°_Äa¬ãƒ8˜ÔnÙ˜×h;ÛÉ\’ÖÝ]Œ^Ü¥ZÝ/c&Èö;W»ìر“¢Î@•å»2Œ/Bº?9˜ðÐè•7¶Q3!ðíMãS žšÎçïÚÞ‡>&[GøÓÒ‡É|!qª†‘ˆ.†ãÇ³åª ëV$òäÔLs[…›ø™¤ÉÈøvY*°N§î*± ˜eÿñm׬ñÝ”u¼ž—ORe™ %¢JSƒí0rrOWYÚc [4í÷S üA‡ÞEFô¾ŸaÄÁ`ÁÙòªuÞ?’˜UÕ%íIÒTAß”ö2U \ìÞ&´OBh–Ï .ތ܋Öj¨–úÁ2Ðü#7€bc%¸G‰¹£ †l%c¦8³¨û•š9éZ›ãE±˜d6àe²¥Vè´kíŵPøüd±—<£Dºã©­sŽnÅ{8¹Æ;ØÃJ¿y5^‘¸òÙNè‘}»&¢8>êáR±÷©æì88™œ­Ÿi¿³FÖ’ŠÇ>Ð2€¶Ž>ȾÊA<$ÖjÓ!'ß®˜ ž6Þ”nA/w¶û¨6Z¦qùذš|›¾H‹bØýþ#ü32sƒC£{{/É\LéüIL‹ôG?2ø¦†Ða8þÆÇŠù»qnóuxG‹ozùoc÷šºä¼ª /êôÝÆ]ÈÌìÈCÃùºra½?„yNYâJ°Ãôk…§Œe8ÐÏø~Ä kCuЪ˜J µ.p)ÙÏ“æˆöÔßk‡·=auÐ,ç1ª8GjÄ­\I-\rL • hsÌlLxž_à†å° ‚"ÿÑ4=n)*c¥z{ DÓ„2F>sޱÏ¿$+A~Éèds—Eí w¯×-E{«c•e§ý;ì;]A¨aŽAÊò3÷§e%é…jS¬Ó !w-6dß6V®Ê'y² ÙBÀ£­ãE½¨ì­P-bOá™áÐè9Q­«+]Kãð|cDfdä‘«ÝÓ¿z§‰”*4ö”P£z;“˜^çeŠ}aX{ìû<@njÆ>*¥ÅVïö~F¢¯Ð ·_›kÞVçX ¬2~fL1{µÚn•åÂèf4XÈ.hò®Ð‡#^ZHçzh0#ÛÀË[Ç)V÷>ByoÄù‚Lÿ3ZXˆpÅH¯b ¿¦˜!ŒK³ÓÞ1bÄK³|1/>ƒë³¥ó€›ÖLgErêgùCpÇòjßX š‡ ;a7¶ÎÍ}üNÔxû+ ôìÔq‡ Kt]¹«ûHõâoÖNy¦°·§Xr«9 »! `×_×è‹P/$Œ:Žý&·é­Ç~­¿/1³¶É=úŽò¨c…(zT§3!0TËÿÞ¡v׋ôJš‹çˆñü[4E‹$FÞZxÔJ;ï±ÒÇïò’tEf]”u¡;¨òÉÃ,}T|מlXñÅrQ?ê¥{Ù]-ÜÊèõßu½\¡Ð¼ÜðÕ½Sq LÊ0ÌûHÉŠŠh£ÿ¾ÝCþÂe]YèÀ+7{BPê×M²>¿ Ã{?‡¯âêÝååIƒ»N4Ï`Lhœ&³·Fñä'øvTP†ÒuÊ4`Z¬’.·0xmbINg1¡å4ÕIrµ+í¾J~‹IU=|;®záÆð{0â0ÛÎ`¬Ë›úïT÷Ú)V]šµ€BCFDïPp!vG¦îž>u\U®È•kŠM„S•«‚¨±@+ÃS”50ëpÛØoåZn_åu†ÒŽT[‡ñöê­µúÀâçs›þ½lœî‰—U@å'*¿è!˜öꪷm²A\uÜ‹DºÝ90¤ÞÏúãÛl!›ÇÅ– µéÄGžiXoÇ-ku½1JEmÒŽ³J±L0‰[¯!bº'£D¡à–ñŒôƒè6wÜòû%–´©>¤¡†²ow.K9Ðh&KóòTô÷Ôï·vÚò4û+…ìjíÅ©œÎJöb_HË{6B~×¾Ào:ɳž‡Ù|Ÿ¤Ì22Èž9ë6\œ½ˆ'ÕQk”íiG4Q£3¸?É[}X½ÊûØ~ÇQXB?±ôøóS Y*#Dÿ—F?»ž7Ci´S6•ЮÎO/°Ü±$ë™T»qSq™? ­„C$ÂÖ64ÒƒsC"þ…Ñ„ÓÉæÒÜ2—†.ª®JÆ[KÅ=¤(Lc5B j†9Ã\‚"à&á«EÒ©wŠÔѨ=?¿’ŸÔ”¹­ËœËf :1Ó}hô2ŽO‚¯t²úyÆÜ…{I® G5yû±Bxé+œ¢±{t™Kí ‡XµÖ3ó^Â`Ž 毣ö–ØaB=›ò½¦ùRàd¬Äû‘õÉpT¬ÎC],sítæM4;mÀ¤Öe–ïu£@žòØóPÁ¨ªÜ‚8!÷Qí®7T¬äúSº4vÃi†‰¨·Š}ì'w§šJ‹õ,½ct a£}º¾õ³h«"¨x5ï¶™õSí቗¿m O=fáé¾àª±\£ãcCIbwש„ÔéÇš£¦ˆñö^Ê.è:…ªªÜfµ ÑÏ"‚Iy2?Bû’µºžtËËÙ<®Ê>û‡Û@…$°·ä#KÏÇú/—? o^„ ® ˆ¢7Ÿ–ïRXzmMÂòË^!3…&E–TŸÎyâbI2Ÿ°6 ä µDLßÒ™x¢Uœ‹Ó4¨©õÆ/×âvÉËŸïÌQCyÒ 4󅕾ꮫÑr]D:m™iq)³:•²”ùû]:Š’=N:ùO{ûâaúVY—Æt磰üÇf Q]‹-ÙMËÞXa¾þXï¸>nv“ßøÖ¢–`½íù œûó=;Û’ÁçÉîÏFÖ¾¦Q3\•Ý+" 8í›Üôqã3ÚyE+æ&1áìEßøÒ|±L8Ù#9†úHÒ­`1æ°n½Lò¶ŒT&£0ízï¢Ö±&²ÁdœèÖ6ÎHhåR¼V17õºïí½óãÍôÇIOçÿF`¨#‡˜ãr,À6jzl3l°x¤ŠdYâ5M?ïŠDOaíÛØV'mö¦UåÜsoDµÙG¸¯uŸ=pÏé}ì1·ˆùOªŒ4‹`AZ!‰ùôPì£ÊuÝorî,x_ÈéY¢õ““ßH¤™É*¯…%.ÂëÌla/@YÇ»‰Ëµêª@PCº¼$:2[ò-8)Šêf¦‡vWí¦ú+º¡Òó|rös“I+ocÊ17#°ãIÒJ äR> îlí,“%:í…¤$V: ûrKQ^iqÍÝ!]ÌÓFþ)›îÛ—<;ÂŽþ®¨Éx¹çG3ºÉëö/„|±×ÒÊZ”•Ëö‡õ™Aüû~™‰o7/–FqqRš›W_0x“ûná¹â¦oÜo(¶ ñ3N¿ɼÏB¸²Ï’®ÿ86RÔ%^y1Ô=BÄT-+ª`sâ—ri0åÜÁXÁ% ’M­Éð(p°dÉV7úsâO¸Mguå¥ö}ûSÜeü»gtÜC㡳{Êj?1ÅyCÓ¬–‹yÈ™¬ÇHk:‘¬ “u‡7_Q”~>uQ¬›O'2Ô…SL}rLè~| ]ÛfRlß |î#‘s“ÍW.ûLSTå=Cü3gâšûÄ<`òÆVõ‘g¬º= üËç‡k›šóo; ®à‹ÈkÃCU`‘Ä(¡„IôNryFɽ«h•œýä+^;Zð¥ÒÒ&œ¥q3)Àœ×Ö¥Ò¤RcA“L’¹R¢š¢á"°›7hÖ›ºqÝdØñwÍÁU…4°»Luã²`.G£|d.~Kw$Ð 4§QsÂù2g3ÕBl„S.lÈBSÜ2IÒõaÿ<]Üù&j9¯Z¥….3ð†#A ƒT§›ü`œ6úÊg²zncw%ŽÙ —ã­u^¼]; õ¬Bc‘õ¢òÓv…GYÅ–teh8ÍZù9‡SÖ—vÍaF‚Œtn `Eù2Ý7—(šÕý¨0ŒWݣθEŒ=îÀvåAÞÊ£Qe/ÈÎÕé1 sr[! ç'—Ũ LQQÑ(‚Ý“lëMVú?„FDpü¾ÃNÄŽþâ-EÖI$µŠ<ßòð™¶}>®ì g°×ä”Z‡F·0lbuYY®^å<‰õ‰0ºŽ{Ç4åìù’¢v¹Qõâ gÍá°e™äúʉÖDRÕI½Áã:3¦gÖ‡Gajcî ÞÈ”8.çXs XT ³éix+q‡„n þí^¯Ìô! ¯ ŒŒÙw}Itñr)?;uŸ£uk-tš×T\F_CÿEiÆœd7tçíx ®ŠJ8IiaéÆXY^ŠMÌP¤Â¦C¿q‹PÿZèê]ÔñNZ¼ì•߃O‘Wyl®"RYæÈÛª,€½N}s¤eTB4ÈËÓ#׆P_¨²¼åß2÷:7*¼&Eè\¶0I•§?ÍÊî–÷%eäiTQfZÝü8=âöX÷ù|(• å'úô>ð˜ÿÚñ…p:IÓ~>N¢© p¾Äüþ¼•Hô2‡XáOž>Ú%NvÌ ÒS`’£n/¿Q‡qDƒ¨ÿ•ÈXå×<’¬5ÍéÜ6Ì`²„Ö)B-EŽZwrå~çÝhî…5é/à`˜´"yÆ#ô\Ò,=Hý¨Èssù2èG߉%Ö˜-’ iÜ%ÌA¾ £{ßsx.ç!c,¡6ƒï¤lò“OªýiÍWpÀµ6‡-–­p¼ j÷GB&C#bõæÑP ¯Sñv©*O5€\X±5í€ß2k?ýG¦f™`½ùYŽÖ'LGÊ—ªŒéqB9†oí¨?ë²ERCÆn›•pg»t›!ÿi‚•ÈÛxTËàˆ2®{jGƒÏ³°aá ]ɤb2x§ÀÙÀ¹¸æ× UÄå«ÙªBßt“¹>dËÏ_+þ¾ˆˆ†ÓùX .Æpˆ»Jve«6’â;+"λžJu†RÊzš/ƒ6Vgöb߇– îrÎî<©äë©­<Ì_P¸g’«?ôj£kŽÏÀ*y‘p|0¶iŠb8©)dL.Š [­`‚4i{çõ†!%ñŒC˜gF#_êaŸÏ}÷)hTÑ@ØÜÞM1}cïºÙ«|ªlá9È!Èl$Ãv"’H÷AL¸‰¿7£3jE²šX5¾yPA³!¹ ÏH!™„Üb  ÅõM³BÚß <§ Ñ_]Rb¢g2/™kQJ{mHï¡Æ)ÿä™R?†¡½p©moÚœÃ2ýÌŒÕHd›1^àKõ>ÄLÇ¡24ÄŠ,áí{ÿÒþ¼áÃË1Ó3ÁpÏJrî#äéz]±ZºDS]ìð,„ÌvF¸ ±ïßuÂë´”´Âò:UͶ:.9M£Ð·‹–FøºAïJŸºõ! Âð?ˆæÙµ¡0z®Ó'NC3ÈóHƒaV³áÃ#te xO¶Ùc%’t)cªë4§â<®¼¢ ­Ì³(KÖ )Ãj¥:u·^âb4Ü—>ICpv}“±Òæð˦œSÇnéB¨t¨lµý¬T¦Hó$£œ!8eV¶a8—#* %¿V×l„A&탹ҫw¶$¶r¾¼²o9xK-Bàh!µmÃ7c”´—¦/ÙzfqúlÞ.ÆIP†Ìÿ ~уùbY£˜±i·îÕÊø+wÄÇg¡êãq { TÉò˜ë*›*éòv¯.u,’L'ˆ7ž§µø=bÕÑÇÇ$!eü7ÀQ…ª‡hðY‹/v ßÈË~¥Ø0$i®?ñúÈ…k6ÄÇ¢¾Õ;õGµòèÕÊcÛ„ŠŠúZȉ2OÑø´‹'„“€,¨m‰>àñkRý:®ña»æ'¢‚Ÿ˶©ˆ´ˆ„¥DQbœÀá»ä®Ç˜YT^µK¬äÚKË/¸¹…“ª|øY[X†nwNòg]¨‡JÂZ¡Ê¶LûÉqQyo¿ŠR6ÆZþÀXݬv{x7“^~1pàd)>6Dz yJaWåx¥ ‹à+; ~sŠA±±ØX Øf@üš‚4vB{VÏBIIY~éðaOwZ21×I~Ûö$CÂóv¨bK%LºÚ&˜#HqkŸÝߤˆ-Üæ¦§ "ÈmÁÍàäùa‚7x‚VΩm‘—gµø$§Ta¶*x0rJj;Sêjf|\öAÖ0âÅHZ˜ìí»~éÛ0cÉÅa‰K&­ 9·æŠ`ú= ;4è³YÝy<ͺ-Îq¸´óã ´)&*œ?QY+}jt—_|}º8¸‡Ïw,¥Bí‰FHç³ Oæ1œp_Ææ¶ Aå#°|“ï7ÃÝ¡:³ù¢pÌ*ì¦K·:”WžÔ;‰õ º›d~c6‰¸—ÉCÚ–y;ßl„`)*qëòt|ôô½X²ûزž¸ŠQqß|b¾Š¡ƒñ—ÃjLµ¢˜ßÈ#$»xÀ±ÿ†­Ó9zÁ'^Çï-bR“]2s tÖ•¨BÕ›SK6ÈË}Ù~¸^í ¹ò"0^‚­|HÒW2WñP@CzWZúvål˜îÍöz}<öñs7Æ÷¡Gö{}LÉ`$Nús“SMci]ßK»£¯µóéO—JÍëÔ„“;õŸ˜å.ˆZ±#-¢¿àÏHŽÓv³N×Ϲ2£«Slº<΃q ~ØbëD¬Ÿ—çelÃmÉÆúÚ¡(Pˆ´§€Û¬íÔµ~Cž{‡xÚCÅqÒ¬ X®’kFô=’,X1òqQêáï9eê  ä,›Y¹5¶Û Q )3tC¢¬Á ØZ"ŽUÃ"É£Ó¾%]òB/y”¿¥Œ}ÌpÔ½o®2ÃQœ®€ùe£Â=\hœŽu""RÖbÎ>«{îìFþF(ºO`ØïÛ»/Š6ì”w€õÏ·~–a Û{…$]7<;PŽç>ˆ®üüžÛoù+oo›Yl§–VÒO¦›}&=\.h•$gZ'~qàï.Ý ¡Y“–¤>‡iF/­·Ölíš¿`ÝñÀ–EžÉ~è®|—ðbÛ~ל§‘œÈÏ_°–šR0€5îøÕG¡5þ×åi³[^“\®¥OÌ8…ÆÆNaËpÈõþÔ骻Jèì8 —¾QFp9¢Ã™s¨ÞÇ5xRš¤ÖÓ|uÓÞÝú' ÕËû7Ò]Œå`¾víké¼Ý:$×§”ê¥!¾&ÖCTIöû¼ç[­iH2x`7ŒOC‹¿Üÿ^)×êcoo‘N—(d–=“Eù±:ïCAFŒƒ¾ÿf£8â&QÞBìòq›\`ŒèÙãµøÁ<¿ cCVgnçJJ ‘ Õÿ'îØPøeͲ‰ ù´NlS äÈÑm㦴4n½ Ï"¨Ø/R¢&ဤå’~CD(õ¬B ½%¤P–`+’õ¿ Ò¼ƒæ&‹°RJ-“ƒuçnh<ùSûßù«ORÙ¤/Ú‘,‚ÑÊ?ö'sņˆyŒlv=t0ç òĺa!ñïá•UŽºý;2ûz‰…;§58­J;L]žû¯ÈVtû¹òìfÛ2_Yí>ÙqRÎq¢0åÖ’0Y$É<a“óäQ…ìIš Ðñ¸´×°ƒ7¦tä¥_†öŒµH¬f¡U7yƒâͻ̨KÜ#ÝvÁõpž0Ú÷u^dz\®˜¡ýE v˜¨W{ˆ·Wf ­ÿûsÈÑ%Þ(ƒ*Ä7tè(²¬XßEJÛ‰($‰ÐðúÁ¶¿¥×½e¯îü¶Äkšß0åçµÅ›562¡ót….PìM¹½Û–éŽ rÅu[3wûN6¥½Ô2Mw 4ð°ÓçÆ¢ÿ¬À“‹"%Ê›bÊÃÁ¨ª>‘ìÙ2™Çf8–“þÿÜé2 £)xYažÐµ×êOËH¾ÌÞÍøûL’ù„Äv|Wc¡&†Gi·š+ï‰9·d™6ÞU8Â>~ìùnª>F—Ën™YøhI_܈ €pq^îÝÃlMpõ¼ä`‚çñ>kÍðZûT`ÔP‚,Τ †É}P‡¢ù~ÿÏ1”¸.PíÆçú¯%Kïk·“9Áuña ¡Ú‘Í’c¼6çóhGxHç°¸Óàf"®† æÄÜ€]j‚­òn˜p!Ê­!»á®q«Ù‘_5àý% eØfÒŸÛ~¬VñQ„¤¥nF>«˜ƒ”?]Á¥Ü©LCS6¨ã‡#½à-‡°YópBn»ßä½=åÅ%y ¨j*WüÓªy~ Ì&ázŒ÷¥„Õö”䩼J±§…")ÕuðûÅÅÖÑ'ŠÃW׋`WæRO¤ÚÅ«Ñ`ñqѨ>‰¥ Å$‡v 6G)¾„cMÚŽnv Ç-B)ß~šäû)ö/C!lØåI 2þ|H/ö)uùéÇm°WÜ®|Ýèfdÿ–û˜Žü&{ø\<[Ù\ȵ ýÌvˆxøŠVNéDÿ¹5Z 7£e N”–M†¦ OÇ«•Wžð\T^mÖíÿsQé›™p•ÀÉ6÷i×ÔNºewõ׸v€F£XÌa5f škÕ,õìŽBSça4ÂZJ |ÒÁË$µÝ¹(Ÿ¢ÄjÝ„ûÎw^xõð:/ÄÓÍÜCö… …/RÂtD¤`5\•Ç my†¤çŽôÆÓ ;‡D£®Z¤/,µ°íAx¾Ì³Åº6§&Y2|^1< ^ïìN鉨‰ñ»ç-ª›B¢w^Öa½ÞxLÁ]4¶.¹Ré¿é{±“RœnÆpš×UoLÒXPšqµóŒPlŽé¢Vø.èòš¾AßÚnÖ .Mjå›4þ~P"¶ßà&RJ¸’x¨ê¥0:?jÍæÀG’G³z&Ñø*Šÿ(è+]ö9$_?ˆv&Þ­²Ø¬€ rW“¾ØŽ»ówïé%‰*Jþ;'ŠÐ.÷‰Oî\&U8X[í»}M P­E-uSvø?S˜8^.^r‡( ±»®7BŽ~D Å£ôüjÿ(ó2«Ô=ÅΞњÀ…á,´êqCNB B9ÜêDøh?wŸ‹€…ÑßQû%õšÙ7j‡,¤ÖLW¬yDŽ l^íY¼)d<˜6.]ÿ*çp|R·Bsȹ ë¾TÑ•U• ß®ZgÝÌà)ùõÁ‡:TkaÌÛ÷Ö‡FÏB´ÉúóW¹àPOϪ—]Úg…7 £xÊš_oÁPä÷Lã ¶‹Ý‡éBhjü †ÐÀsl¥fâèî{’×›¹veýû³q?äº)°©Ó°±v}Ò}}¯é7ÄYü²J»Òܦh(¦”@QöÍ#ËpZ…ˆBãp붤*ÐåBýIsŸíëèUÇç´ˆ\"? ÓØiÑq~E¼šŽ´KS DÑÁ‹¼E_z¡¸pyÖNßš~þ^jÖ-žÝ­u¨},ÈjBÜÉ9ÑLƒ}z6¸—ªÁ¬°CÆuäJ*LVÑ—­içrKsãÿºsû&Ùoåã&Gê+.+ãÀ®W%Î@‡›=?§Ÿ‘aT…¥ìÿ´iø‚úcq?0°2¸Û6ÈŒéÚÕFèÞ¹LMÏê„M}ÀeAl£Ó÷I…RžL[rö¦Ÿ‹ž‚‚õçN⋘ù”ÈhÌR²ñ‚0›¡[wúŠœ)ªŽY÷O ©‚ŽúGÝ ¥²‹JN'±ç2øÇSbL¼þ«~üÁ'`ÆÙæDþ]¿/|…hŒÊã~Ö;DîJ¤ œQ”( ë¨4³0ömÑ»iÃî"1Ä´ÿÜæè²9y.)K{siÖ/òm›û™Œ…ùPÌ—ZÞr5ìE­ŠôÙ´=x½"“tÃŒó¶¨Fô„¤\.àêË™]ÌU¯Á"žõœ£bÓÐ;ñ0-mGy§* „ið@8RHÐ÷¹^rÚré´­C"×äo’Íø«ªYó¦=Ü$PŽv™^%we«Ë(«wÜ™J¬Ç`)C»ïOŠ)QI;ê=‰..<ëpÔØ¤q›„òÜ[ܽœˆ·D¥‰§;ñ’h1¬ZêáN}D½$ô5îoèg½>]^¬ ^…¼^²ê¬Û‚E*¬âøB–„|SwÌÃÁp¿ y°0ùþfWUÜ µUm3³2 Ì U²ã»Žt4²rf¿.3Á¯KH—vâJžéSÀzÅGWΊîϬ˜ùóî¹Õ Š¿¤?Àµ½Ü*¤!!Fí¤üoP|mÇ>ë.&ýÃö§/ül^µK¼°‚-ˆä¤8†0R·"#KorΣD[lÍ„›9ÝRõ‡/‡!` \¨Cµ_­ aŠç_ëî­ßà’¤Íñ· MŒ¯Æ\¥wüVö&CáŸs>.»o(.ð<Æ®Å@5bW>;Œ<«ç_5æRÀdü~H·p¥É´Ñéæh.ºò³"€F\–òsK`“aÉ6ýà¤B),2ã¹Wüd¦×ÿÌhäÑ×oÈí àtúMw~)+~YÜ Í‰5`Uò µ~5(ÊfË“±ýròÓàahqÍŸ0#p4ìÉ6†9¬r“áñZîží‘>xÔh…}å5¡5øè{úô8ºP‰BÁ“¹@³ºKî»X²é±`° ¶îìË&Ö£š"ÚM#v½Ä¤:Þ™ÿÝò|YŠaSЊ'¸µHÎÂuµ ,6§ÑªËJ>§…læ*ô#r Acs·-hÔù+zqÞálBw»®Ö± 'óœÐ§nS§esL©Š|½p{È[srl²á=×q¿ô`Ƀ`'°©âpÃe #p¿n"€®‘èôŸF”8;ijR—óî4‘܉'x{KÖ¿ÿÆ= Ä݈pY@ù½TÁÂõdÒxí¯õZŽÄ[Ý‹l‰Ø¬)ÿ¡÷Ê/5“Å%ØZ,ræcN«‡[¹Î…«‰-ö£¶hc¼iá# b·×R;.ãË’0Vz½ò<q²Õ°²<¤à­sé­ Àw6BÝc«ø-ñ¶x)þé÷䯥ü*|¸G ÒÂkÏ%sýéöKUZ#‰@1Â0VŒÜζ †Þ ýÚ[ˆã fèî0•¯ñìÙÎ:€ ÒjÁºÎjÝÒa«¬ 0Z£ùüB+Çý]ÝP†eÿF ¦ÃyåËF0Q‹¡–ÇÛ~ŠKöÞKÿðŒÅ˜¿ m©*$l€ìÛ½+`&õXmáÎÍ8¾rì,q7À jô-Õ1Q"gõÅ ÅÝçhÍoûî†ÃI÷1Nþ,/qêÁТ¹°ÉÖ©ª†\ü—[O©æaÞFVÙ”"M³’6â—_P+[ (ÈØ^ uˆx\–•ІΪ>fÇâ®Ø ¤¢à0ø¿¿J! ËÝS—]Ù"jÊsãHS :êp„cí“3‰¨aA³ÁµFÌùŒ½¥ÝÆk”£©Ø­vüÿ>.ér§. ì`°«;å}à lR®?í»ŒIF·©Ñ׬°Ï>õöî}ÅtÆ&V'ïtµŒz2®Ìwl`³ëôÉäÔü!‚§"*ïkG¢No8Â/,,H‰¹>ì̯{yC"1rŸ] y9¦c¨`ú,˜ýYƪ±=ÿF÷yn Ž.sÓþ‰û´È]wc•’"^Ëä"V4’º#”Ö%{¬ ¬š Þ†‚y¼×óUþ¬û‰ DXÃòPþK³cžÂOVØÈì¨ÉÂÁDŽUnøEáøD×X#îÞ¨±U.ÅŽ>Ûvè>õ.ÃBE(j°…ìêÏóCN/v L/Q¬œq[EœGD`s{·ÿTóqµ;ÇíJÖÄÝÇ+ƒ¬é†o€*ØûEýXM†M§Y4*͸W~¼Kî¡õ§¨|–ÝNÚG ^õíX6T’#|IÍf<¸„¼0…šÊJb&奆EÇÝ„ÙYõ­ÀqWa$ o¾jÐ3ʾ¡*eÎ!U 4ÃìýÚ$äÎðà£Ú¸f–#'×?mª%Fo#Љì÷ŠýÎf›UaúyŠWߦ•9˜tëãŒàÇŽš×TG™|;ýšW¿:eõ‹HÂIý7ï¡þòbûaw®_„Q¿eà ]†)ñÄ­)MRñ™ùZü£˜õ«!þ£…Ië¤xb t2ÔCõ?W2i}ÅãQK•ÚŽ´*Ö½y`˜ýz9J± ,Ÿü7×Ö’0X$Àä⨥Æ?\úkqdèeÐ ÷}Þ+·U·E¦63+ÒŠÌô‡éƒT\›[ù%ǫȕqXþÔåPÎdî^`éÚQ#”^„®Å*Þ¾iÕPã}ˆzIt'ŽÃIP3IOÉj†ï˜:=F§úç´ÞÔ<®èÛ5ÿ»ªbÓðR… 5;ÃWKÁ¾3”»ÒjØ`ż3ÛO0ÖÓ%eÉÛíp;Ãè?Lž—N“ VœR¯È:FÈ­:ƒ™t|<ˆ=à/ïæKHé¼O½©nËE=ä¡:sÏdYsQö€Ï|‹{vÏëh£.™ù-jYøù¹†F9®®¥8PX¡F&CƒBvåC“´=üÎ" ‚ÛÛ^F^ì¼Z…P8Ù#)µƒÆŒ4ÌP`Ô„Σ«\kÜgõëËâu¼”ìë{­ eŸ;Ô"î6r‘~ÇŸËó’ýgk÷gåÌÖ£•¡,ê—Bº6AD…õýDŽ#[CkŸû~{Ñ0µ¶“Õ¾ÀC¹aÅ…ÃOƦŠq䫜ÏM·ÇÇŠA BµN2/=¾×7®s9sLÈŽÁ)s΢„åÈ~vaÁ#+¶d€Zj»ÐìòÃ2S˜6Ÿß*‚=”V1ÊãS%Õßã€Ï;àm u€ýˆ·à=•”•1á×*;¶„X{ù œ ñ¤vù˜•ä‘T¨Äê"tùuöé•dMë!o_“Rón»À|ôè¢k|óÍz¬LÉó«v£´eé¦ dNÌlÒ²\’,d„¨D“Î>t>ðƉ 9Ïr&[¶«°Ah0|«TTƒs§#ÃÁ%ÇúÏJèè¶å ¬N4€)^()œ`Ø´3ÀZ“V‡(«¾o-Ÿ.ÁoÚ¬*MœE'9—íLøåÁß–%Åð"àûzW‰¡Þlþ6¯/™+’’$DPçSG Ê7Ž`æö3Òzú #¹|6ÐZcÇaiõ&m³ýÄAtâ$°ƒüJÇÚ€ã„íòlÄ·Q{àr¥%;¥6·ËwÛÀ>¥X$Ül–z©ÍóêJÆøD®¹>³7™Ðs¨ ŒŽyþW½/wn }dsom‚ ayÒîÀ˜¯ähÂ,L«N\Ë?kJ†Ö\¡ó(ªÿ6:ëÖ-]Ú\„_!,„c‹NðžBšù±Üi/…+%¯vðüÄ_ýš~Mç‹R²½2[—B‰®Lû²/è^¥è4;)3y`ß4…ÙH]Aá¬OE »ËðzT†4DÞ›é{"íá¤öÒs(+“4œa‹‡ª÷‘¸x}¾ãúû~SÌÌÝð¯M…ýÀQ;Ä—Ù@ÇsYð¿.$>¯°d6ˆ`€¥ÜëýKû;xÛ î äîí†~G¿åö¨Ê;§fqW·–‰Gp«ä¾L¹QÆÓ`#§žiSb¦øuŒ†Ï…Þ!Úíã“MOÝТŽŽnôªä'Àèd­Á±==¨ç6ÚûÁ>NÚ½i÷ˆq¼ÍªKÏLßÅ™üF`H¤ëàÝ7/ðØ}Z(ç€ÌHÈ2ƒ•9Üá7R|HvË‚¦ Ú×Sl¼Ö—×ÇâT³1BÜì?õKÍkCùÊâχDƸ´å v<ûš‘D¤Õ–F¸ !äM¡ ÇÝršÎ'c=j7ãêbHpd*IÒ[à/æõpv¢Þ`Ô<¥KW PrOO5A¾J”‹4ê!Wz©Ç1Õs|ñŒ½OBÉP†ÒÌéÜd4†ì þ¯g¢r:Œ“ÿ²Ê]5OxSº!+ûàÛçÌÜS+ôW OqèÆ9¡-5¤uíD.Œ'5€"1F)aqãÛ;ì˜ržˆ²äîVˆ«%8\òW18ã¢j€_¤Y1ˆ‘¢§ÙylJ¹‚ê¡&"tF–¸!ødû­¨ýÈòGï ¸‰CDÑ%”à‚ágBT€™1ýM ÛØ{ˆW¾®!D2=Ô„[:X hÿÜðqµ+ȰŠ,ºˆ/°–Ìî’‘– è+v}ý\è¼$§‹âæ©¥G̪…‚‹:‚䎼c–'¹=ÿ¡¹¹ÂóZ—¹9©í9Ͷà£@g èÞL}r†ÔžõÑ B†$ÁÇ>ÁFuFsR½¬Í]ŠM¼›ÃÛ´8ÿã¸À: ¾p&‰iP©‹;û¹KiÀŠÖÓQµ3X9e4¢;Ò­Â"z´‚×VåÄ=–áÆAÙ`ž…ÔB!JäDûoc}Úê!ç ©&Èhƒ ÛóiÞM¯‹ÙÿâÊ„„„Úe¬;nƵç6]/¿àLË_–óб¸¹[…|Kk¤>Ø©]×qcWý‡¿ë.ËÛülÞ$Eør]Öý·°Íã›çAÛcíTÔ„5žÃ fÕmA)NÌVŽ Å$n-Qs5óg# %„Ù©ˆV²Üª JŠº Ôˆxþ÷¢ç!?í b:>#“ƒœC.³ÐU­“ Zm•#-,ñ,åEA ¨f¶ j´aãâèm êOŸOCQ*pE=ÝŒêðf[¸wKl‚Õ«!åw“ò’ƒ,&•ç›]S7JÕ…ks°¡›¿q°äï?¢ Ê]ØÄ6ž9wœs؇ð ›;K'PRs!ë@µwWí0^pZ+¦ÿìRí õĨ?º,Ê1Þý™D0¤%žVbc,Ç ,yõµßùÑV øO½sÍ9º±Q^é›Uq›’•dr&9³n!Î÷š-o€—ö[f¤_ÐÐuæ;ÞÕÒÆ¶q­¬Å”áß÷fûºB<ÏîÊh¼Àλ<#ß0;&“²/[Nù9ÜSž œZó¢ÏòÁlï,A!ЧbW¨|fE"9rZNj´ãÁ´›Ã»i¡`Ýùã\‡†™‹U¸›Ðf¦€ƒ*jPø™ùˆä&ªŠW¾¼ï°}¶?·<%]¶p†›h’6Ó‹7¥Õ^•Oé8Ùǽ*—Ú8qÁIaKßÒ*'W³/*ïâ,Y”Ú7ÊLˆ¤Í«ñ2{šùÊûʼ³Ø ÍEÁŸ¬ÂOR暌Òõi°>2JøÈ|yZ̾ñ|®UQÈM.¹ôm"Á\ gJº†G´ÄðUÒΛÕµ ڇʬÉ]5“|H,mîëY7—˜‰xdyßîµC¾äw¸·ûEìùÂöÅÆÜ™Q*j%aÓt~‡…“¥cpGYòÑMÝüó *ú N¿>e‘‘ŸFwáx‰@Š]o}ï'XÜC}Á¨)£B÷2 ñ7WNgû^bL=Ò™ÆÓÃ@$ûe! –`§yÜöÞàùÍ>(PÍuA/÷ Uð±‡æû½é–êù®buãÇŸŽpbßIñt㨠ÉÛsÜÿÀ Ò<‹ 0þ3Ábè?j{ú¬Å×ÿ²§]!Ã_Xš›iõx¨y*ñõ}uú ½à×(©„þÛoA<üDWÿhÍu\~`xïœï¡ˆ‡¨?Ü%x9€p–¥µ‚ B¸Ç xÓšUýÝgš‰c`@Ù€mÇÙlÁ42ª¯d¨\êhO¹Þç’-—¿ ÎÚK–97ÅGˆy5Yëšw¨QýäŶrÛúfºB¨ ¤Íbæ`¼MŒ µ=¸õ0߉G§HTÍ&­ÛóE/¬aX=ã¥È—pƒò¶äÈÒ—ñýqÐâ=ŽáîÐÐËu²ÑÑÁ~cç^X9ôï•v9Èʬ"gm5Ž£_à®Q…Sá[¼Õ‰’ʧvýt,9r¾ šÝ¹Ä\j–\Ê\ÖᶈOT«N¾Ùl4Òí™[K‰›uìˆdCçZ -(˜­V%þ¡÷t»9ù7ž¹™pz"ž.jµ4tì\G±]…–,*Øg[Çð™JºuáfNǸE©´ÿíšWóƒñ ç‡Aã1q£´ÝSj‹?’™gî•™0릈ôŸq…¤Ï|æÖŸûänÌG:-*}åæyƒ”Åѱ½ë¥›x¯«V@_T–Ùdk9Î Ì´qµß³>»{±×œ~ñéþ‘»Ñ´ePC‚C‡w‚)Î{¤>òY_ÿ ¼{l5ÛÛÅçÙVÝ_§+ rf½_჻ŸaÓ# >ìœÚ!EƒjŒ¬P3¶På—Ÿ¨ÎM%gé`˜—j~ÙëŽWæJ‚¶è\°¬[B>™°@`Ñù|zš¤ÏW 4*¹ÑvzÞ;×=-)d±x)Ræ”Põ–ræ7AgÖ¿‚BÝ6q3… S¯e‡7*Œ¸œåº3=ÙtP\ÐÈBsjÿÜ8ê,D3¦ð°fÉ=08pjÜÏ®‹ÃÛÎõû|#m—RÙhk¤¬’'ê1ƒQ­:94`~~ÌšŠû¢Š7èè­I dÍ$LyËt,ðhYͪ(Ì 7˜v“µ¯ùÉ÷c©™\üg=‡ómk*tï·Mº´Þ¨ %ö¥‘Âú>ó­XÈR¾è›õÌ8d½8sÄj]{¼eC«­lÁÁe¸Â¤eždE¨Ð[¶e %„€VˆÂ2Ò'M» SS(óެÂÌ0øyüwFîCÉÐ=Óÿìs*Ù\UáX%vÁX|4¤ÊÑ^h¦ Æ þNAO¦÷V‘²>2à’òºÑÞZ$ë¹d¨ªÁÞðÝÀl~!)Ëo ïlÐGôÍ ÿêä<›–•nH}+;Á6ÊÖREP'wVꛪ‹ŽÌû¯/êsYû‹îø*/#8&ר.o1J+ø·EÎ2²!R—›žÀºwP8@¥#*¦ƒšõa*áià–Œ™Åôù’‡±F×(Ï„Rãšù ZÌÑËSuL{×q‘%1A9´qyøéÝ´ßÌMájœ%UR+ÚËá×öÓNj¦•ã6v·xïÂNºŒÍ6Tºý‹ïvØÙ2ÉÚD\[g<ì#³ÄK±Û­§u“¡ƒ×"IQƒ¡­Zõœq&>hŸàèΘå„D9´WBþ$$;x9ÕžaHq¤PªæNÃÁ§ðpBƒÔa†vQ…e«½ó{%–»to ]‚¥O ª¡5TÅ?Ài›ýê"m޲¸‹b¬_új‚Æ0âU:¬›bYò™;[oF‡µŸU:î×qå°œáègò¶ê^r¤úÝ!dqVº ke<\1¿N-@æàÐón“Jc‚–'9‡'žþ¤,3ܶtNµ§¦æ@ôð!iz¨Y{ÿßmzkbK×bôÓšÅ"Åj³6ÉšZ¯ïl»J:aÎÏ•ãã,É-@âŸeË÷êç8Æ6‰BÛ07r¨&Ù‹Ôç»ËzÌŽ‡põ8¯$Øw*äž\0ï)Õ)\xGºÞ‚’@NéEÈÚfI6Mem=|þ1ƒöTÿÇÌ&Äáahq›vm\QZWXü­\ôörÃ{gMÞ6¾/h|TÕäÜ2““£À0Ιn.Ö,×E\—l@ÆâM#Ò$_ɹAJœ¶7ئ‹ % l}8…´õÆBÛ蜀‹&ÄäC±W_ð 0ÄJÕ´˜Ï•|¸úË`Hx:cäsVží®½ÓתC¥=”VJA9ؾéò;QUÉÊÝíœ!ÅOÞÄ6ܽ>Þ'k™—tG‚jþ-³9ÉOJ¸'_ xìH~^l PÀšGroˆÝ±¸h‘^£óI’íÏ5- P(Ç‘\÷½2®¨Žt/~-ÏÅŠš÷ÙªüU»× ^·ÖO[œÏ7“ Mè¿ 'V5äÜ +ÇæÊ¨rqb…†KØ0œâç<ò’kïü¢2GjMZΣjå,çÿ-Æ.lŒž”&!™9×´Ê*1Ö§Ñ(¶D`Å}eD?bÏ‚”Y¤5èjlüwo ¹>j袬¹­xc•¶ë°:¾'/C§{ê!XßjÕ3t¾ vD;ë>›]ÎQ¡€Nб‹Ãæ=Ôa=äËy8od}­ä½Gïú«l@°U<ø0iixÍwRÄFdoŒ ¸ /?OreÝ&tíÌ (Œf§<Ý™!¼TR»Ð¼Øûq1„çà›n]C ²ÝKŠ‚J‰•±Ù¢À]¥^Ú-8çAÚçØ7ŽÉ‰ëŒ0Fý9)MKH»JPœW±÷Zßå!4ö2«š‘©<Äå •ÀàiP„Q7$Fñ&Åüð;û”ª6Ú‰£Áþ\¹±“åªÿ—ófªi~ oý›0ãÒDÂF}_ѨY^“ê6Ô´]êÏú¢@|_/k£«ÞlÔ‰ì<º¯?ÛUE’Vêo»j2Ë$IwºGú|‘V ƒ³ Ñ3ú±ÚÜ“óÁœâWw›cLÑçÂ0†Ë2…'TÑTæä0‘‚äöäå°ëôK°\ »z‹äòÒõ´Ö)C2ày…èìó©îý8îÀõ_,Ïodi„£ýÓ×ãP*ôd:‚f¥Ç‘1Œ -OtÎá;q/ Çç@{!–A·ÍYC,eDfƒ¢ôßI—ò®0æwÏYkyA¶«ÙT¿õu|¢”ü¢e&=u‰ª “ãgÁ—r3,q7£=A7$/¢¥z(ß>ç?L–V¹äÎ"x|¼è^zB’èÇpÐQeh²>}3!c(E0Ôqǰ†Ö¡‚¾3®níÌçúf ØúºæÆ22\* GØäfÓYo©¤c×cë1Ï‚#¬r¢É?ѱÖNÒÇkžØg=W,G‰—™ƒ€ÖØêE endstream endobj 2807 0 obj << /Length1 1488 /Length2 7411 /Length3 0 /Length 8412 /Filter /FlateDecode >> stream xÚwP\Û6Ý‚HH,ݰtw7’R ¬À.,»tIwI Ò!R"%ÝÝe€tHH|èSïóþÿÌ÷ÍÎìž»®s®s_÷™Yfz]}n9[˜5XEpóñÅ Zz P€äÇcf6€ œÀxñ˜Àp7 *þq8„¸ó)‚wiZ0(@éàð ‹ó‰ˆ~ Pì¯D\ r‡Ø´xê0(Ø Yæâ‡Ø; îvùk `³að‰‰‰pý.È9ƒá B8€ïv´9ôa60Âë_l’„‹8/¯‡‡ÈÙ·—fçx@=°î¶ü¢ Ð9ƒãÁc8@ÜþpëÃì 8pçp‚Ø€¡nwH¨-¸Û ¯¦ ÐqCÿHÖü# ðçÕøxøþ†û³úú»dcsvA½ P{€Ä ÐQÖäAx"¸ ¨í¯D“ì®ä‚8¬ï~P–{ Ýñû“› â‚pãqƒ8ýbÈû æî’• ¶ 0gg0á†÷ë|Š8ØæîÖ½x·Õ ó€úü±¶ƒ@mí~Q°EºðB!®H°šâŸw.¼|ö`@ŠˆŠÀ®°§ï/p/ðï ß/÷Ýùý|\`.»; `?ˆøîÏÇ ä àH°ŸÏþmáññl!6€5ØÅûýÎ ¶ûþë<â 0Þ üõù{eq§-[ÔÉëŸôßÍåÕVÔVT“ãüMøï¼<ÌàÃÍpó ||b‘»…ß¿Qþæÿ÷ß^]äϳÿATƒÚÁbP¸»»¿h¸ÿ© ¶?Ç…ðï´aw:Øþ‘½9Phs÷Å÷ÿï’ÿŸæ¡ü/²ÿïó(#œ~GÙ~…ÿŸ(ÈâäõgüNÅHÄÝDhÁîæúß©Æà?†X l A:ÿwT º› 9¨½Óß—qS†x‚mu!‡?ôWîà P°.Ì òë™póÿ»›5Ç»§Äí®S¿Cà»Qú÷–JP˜í¯™ã€àpÞ]ãï,!€ßÝpÚ‚=ëÀË…!îJwôüv08Þ¯~мº¿\¿-1/èo‹ï®C¼Î›‚wÖÝ»ö·}×J^„üž;0„ì€;!òzþ àõÃÿˆÿ‹… ¿›ìß*»£ø—ýûƒ=Á6xó30‰gµ!-çÕr<¸×G¤&™×ÓÙ¹}æá—„Ø)ìUYA«ð3¹”þÎûK_”ØNeè®}všê°Ã›_<~ÿÓ÷Ê2Qo|ý=ÞÜyÏhÁŽÜÛn\jnÙ ßkW_£çŽèM¨mê̹®HQBÝ|’s.Ï·Ý¥‹Ca3ë7ª„5ð¯J'¸c cÌŸO1çYgOS0`!¸ip8zMžM>Ƚ¥SOäÄóÛ(ô1]㻘ö^.7àwk§d¢4¥ A?}04Îâ#¿™ªþpÖçMá*|(mšüÃð'çd>§M6ïum½søÖ÷§,Ì£âl”¼è¤jÑ1«ÍªIÎÅôIX‚Ù‡K꫞jßEš¬Ý¸t’ ·:N"µå“EôÖ¤ÔûäOwV7ÆëF¸·•¤ Š*Ø1’ëNGâqÏ uôSîçÒçБù(Ö’;º:ÿi-í¤úAÎy Ý85÷M8æÏ¬s€—=…(Ц› b¦Q)ßUµÚX =NØ»Ž·É庶½Õ”LäšPFŠ[îLlªh!2ÐܤãÈ­b¹lþY¤ÚK%ëTóÕÉurfX‚6•è¥ýË]þÇX~â[ îoø^*ðÞæææÔ QýœêOt"Ñ«p¸ÌoÕ§‰^&Z{O®8‚‰ÃA4­Ð["Dûas’—ÔM˜=”þñsÓÔð±ôWÕ¥:7agoT¹Â¾D¬NSc7,M%Hì³LÛ®w†‡Ô•¦ƒ±Vsr¦s‚\S"xý±ž±š)ñ-ã>ê÷°çêÓ¨L>!„9ÏHk‰ÖITÃKQ OHÑiêiˆÉHíç¸yCÊO¶õd'èæ}ެQžó¶ŒzUkäÑZb”V¢A¸XgøFeˆ<}!ЬÔt>Yz°M#Æ„ÞnúdÚÖË A¿ŸK,•C‘™9 CBªÈ<4ºÏ÷Á|Ÿ Aô…œG‰Ö;Þ˜-‚1HK{(±^xÁŸcVIb¦ívL¡‡2¿ ô”Pñr«C“—^ñýÑç£ÕB•í6b&¡A{à†Ó ºËլ켴å­Ýçy4ã‰o!‹"ãUŒv’×Ê¡÷ýs¤,0·L¬bˆó÷_„ql ù‹ào2¼"Êʼn_ˆ±Ù˜ûáAlÌC+Žº6ô1Ɇò XzªµéæV›=¶ ²z—X‚Ñ£¥M?†õ‚ü´ãÓ-ñ÷zaˆŠÌ9Ьœö‰ÕÛ$¦S¤ý¡7÷®an¥/6>gÏj®ìE}–{ êu—öì‰íT j±„Ìû£<ψö£< »] ˆÖGd¨dG‰”Lh´PˆDð·ÚeW(¼šƒUÈœù2AÁ§#YR-v¾-¤WÙß*.¹8o“`7>¨"rh̬Íé dò(4¯R·Åål×ÏU’*ny m4Jdž\”™¨šÉQ0 Žù¨8ʾ¸7•è·,ûŽ}—Ùå6A‘Ùî8ûò„+±µ·Þ#Š,AòéT³N°„²zA^ƒžBÆ7Kn4»Óg-§ûiKÞ#ØïòÆÇh—Y;»W_bÜ8×8^PrgUÑ­™w]³QwH)šÙ²Ë^­0c OSÙßÌ'EjͧÉI]i3½¡à{œæXAäP¶ÑõÀ—º*à»iŸÍÁÙlK´”_BʨpûS´!V0rÊSµêž ½'ÏI;6ƒýÅŒþ—¹Zwmœ¾4/Ñÿ3æÌWá¡c䤖{ÎSŠ¢½ð­êþ·ÑÆHËŽ/ÓÂfäõIRõxqF½Ô&eü2Ì-xÍÝÛìQ¼zÉM¾`©ýÅaÌRô¼HkTËÛz þfÈ@ªPsT¨ß\›s¿ç†t*ÁtzNö%1Yu;íz³/Aós¹qVýîvß}ý>é]&à 2D“cù³c!ÉöÜ V•˜ Ë2ZÍ£ßKìļ¢šÐV¿gš),ÞˆN¨Ðu”éözïu!ÚL"‰y¶¼r8˜ä*¥ Â8|˜Ú(k;ßQƒÙàÜ/Ç÷X4HŽÛw5ÒšÏÊ»¢æ  .!u±èÊÔü~>O/ü „ ×ÿk¯[[Ã;ëí‡z^,ð>Eà}ÍLýiöíroa­ ©Ïi$7 ¬M::›©7=w÷ëÃÏ™ÂtòįZrví}Ò÷c«³Ú‹©¸ý|µR¬‡ Y\3Ë%¿;öÄÏï(Ø)e=ºT¶ˆ‹öJ…:øRÙâ<ÄÆãekóg¹ùÖ®[](/öNáÖ30F ïbe7ž™âÓ.±lTâQÝÉ=MŠô% wjRU®R鉸Гj.áºd4NÅžÆc¸ƒ¦¤¶§ð†z§ú;±oë‹m ûdü?žIÒó:ñ—½NëüºÝ&DÕ“RÓnk„šÔ‹ûp—t%KTí•Æ¨ùIÖ®ÝUvqØd‚ŸŸAêö²åŸ$bÙÔŠl[ƒ6h“byénàYÊÐl=½pQ‘eúÚ‘jX¢[R…5"™À_>_»@—î¼ãPõ‰}ß06£ü[æ2ÚDÑ‹°‚Èçœä¦äÝ“+ûÂÅ{*ÉɉÂÉ"7÷ùÒ$õfbYí ÜüY`ö†Þ×rÆ=¾Ï$˜p½J©¿P´¾ö¨Œ  äÞí/Í2טVfâKÑP•ߨõ…öæ9^*\íˆVÉJ?ö£µUÎ3ÃØ&9.ñ>fuÉeÑÿ€ÂaXÇDûv.•ö5J\ÈJo\Mjú•íž{²%Ýœ9í¢qvÉùµæÓK’BõÅÝP³Œ£U–ï†Û×õO ‡ŸµßWÙ GÚà‡îÔÒ,ŒÔÞ¬V†™ëïï3¨ÅUbm¸ä¸áb%¹š¸daêZÜ ùÞ¢ûÂu"QQml¶ädDZF¾³¹;a‚?V€  g.Ÿ‹vÜúEåz6ßg§}#ü2¼ýî6ÏM{wrG³nýÁÛ᪮C4þÁò¾²Qs'ú#%LK‚Š,«1M†»Çx½Ém*ý4n¾¥Îê¯;™…(—«’FŠlåÜI$)Ÿ­U¶Õbrc¼Ú_%â’"“7Ù.¿qÎ+]Kß3À…„D•ùý{—ÝŵÔ»Ò\kóžj–€Sð[·ÈâOCóž©z”üºÂÇàÈL‰[·U–ŠMòD*›UÇÅï—µZCAHºˆáçmWì9IÎZ³÷9gÞ¥U™èò'Y‰¶¦yGT}´hVyæ³R¬ÚË¡&®1¡»·»Ž1£‘¼"—-Ãèz‘Zzm·úD•7¹tg­ŽïÞj¢åk¥^;'h1^ãéá…n™¼ ¨kÉ*gËÝ­<;ÁxÔã[$Ü”áK·ž‘ЯOª–Ö`Õeçèúä'‹hÄ4eÉfMì”úŠ#P2e¡VlOmøJ'XÑ×s]"÷¡ õk®ß®«âïìßÈÅ!”8=6‡¦âNm[UA’Ê™"S¼œ¢ÇUmæy;F‹ïÛ·6³üp°Ú< \ƺ‡¹¤•Þ/ÑRc²$f8õ"¡FÃO޾H ã›O ‹šåS°»÷Ž ÙÜ{Ð=dTgqŸ!nýQs (<{—“ÁÍ—QJºIf}žD(e“¼±µ!yü Aì•ãœku D9„ã5ýž¡C‚ ?J„ÕTí«aJ3¬áùsÐZëG]æNCšI6h;WÖ¼„¥~ŽÛF™7+ЏÈ\BaFÎÅ- 16fù~ç0ä-ù6{/!'ýè£ðÆŸ>­½Øø¦FèGÞ‹if¿³=u‰6¶çÖL°.Ìqùñ“ÒË|Ñ‹Í^¯Xg |Ð;Ò^®ûîFåa‘”˜!ÿrñƧ`ò·M Õ×E´Ç ÓªøŸ;`.qpÖ‹ eý~Î{†ú—˜Îë{GšI(ñ›$æqÇÔPóü±Ÿ¤‰ÓÂÏû ?TP(•](7zÁ$€ 74‡2+‹‹ÎºcÒT ƒŒ½)=—Õ÷Hã „Ôé9¨ÎÖ^è?”-ÖÚae™Ùå.*¾Èõz½ì{¹rrñbB¨¡Z%¤Æ`ezª?Ä(ûäÞ²´=Nc”}3*mg²D]gÛÈ-.â2ÎdýÀ1ŠŽëâ#ƒÝ¼0Çs¯Óûz’LødÃ_—q?ñß‚pX&ÎÉsžÏI*LåžTÒ¹'F.RÏXZûÙ G+úô4kÉ ¦]¦NÞ›ìû¬ÞøpSnþcÒZï²’Y‹$nÑ¥;‡'“º²º!„¸¡*ܽ+=1­¶ÀuïŠõãÀuv¢„Ì}­–3ìBÕŠWØž:oX±“ yØ&ݪ/%Ö}W-±t r¦_a?Ù™³¢UÁ !¸bÒ5ž/›-ŽKÙ)1OèPQƹØ*.;Ÿx÷a–ÌtY|j" «}7SˆéÝ®‘̉á©Ffäˆç]#~r¢ÕŒë<>+8xUjbÔʘwñ¹¹1³Ië*ÿТ蜣7öµØâ Ä…#Üyá3«Ò,˜Æ4’™_œ²<Áé- å•’>Kñjœ­{¶k‹<³Hç9¿þ–¤pž2Ô&—~]®Éû‘јޣK².µŒ÷ÛsµœŽí°‡b•é‹âD«ýÆæî <÷Ѽå„È’7z:í¿£ØYÈ<f¿íñ|YêµH¯/”mÏ5)Ο±¯ÛBÌü 9­dµ_¹‡2)¿éàñ‡m¹ª?,“¥ŽðiæñpPvi´vÑ©ÑèfÍâ«‚Q¹>ù{Žœ,h²ý¬£ãéanÁaÍa–ÍØå ¤Q®§l–%×Ùâ{-<óâìûAä´fã¸T2Ö7ˆníÃ",ßö)Ýyç¿ÎvÞdÕ£ˆƒaÙGöúóYSÏÕ{p˜ŒñIÎx× ˆ÷ÂýèÃsEGÔ³ö‰YN*®²Ú™´\ƒè8:ø{‚Ì«áL˜$ª¬WÝ5 Xļênê£1b®ò;¦}¹òÝ¥šü¶Â²è"J³²¼¬„Mu97NâÑ_ÀWÚE±™I}`‚6É|Í:úGòõô¶rØ8Â;ÆÌöí6ë¹ß³VrêKl1n¥µ"ø;šžj? Ø'ì0Óž–MÉå0}wF³!Áèà°¤!ò‘_¢Ja¹>?èg ÿ=…ñUq‰ “t=fu^Šeê}\ŒÃÖ‘¦!F"OâÕt¯¯¢ãÆ’½ÝSĄըÕp™è»¦yß\¼m=…%±éæ{émwÔê¿¶"$’¤» ¥÷¡ŒÊV)ë·po°)½EÊUwºbPŽ9mØ ÍRñÏSžÍHÅ+ebMçPòŸ+2×”W“ñsÚÂï7Oç“òJt$æ&,$^ø)üþ*à{ËbÒÝvË÷S­ZǯUèÓ>˽ zI¸–å‹ê#'…ñù—߈©ú1Éfµ‰‹zâÞ &K»sqj­ñmkwq‰´üR·[<„èÞ §¤Äµ”…'4Ú¶šòEÄ‹†úo@Ø’œb¢¾H9ºV‚ªÊyÚùˆ¾fÍ­°ŠK°Ï¬XÒrí?DzÚ|Óœ—«Ï?¥/9Ñ$D©LbÈE’¿¢{ù¯?Ë_ªpTaL ĬÀÃ'zºôLíâÒ@gîñ=¼ÇÁ·dt¯’½–Ø •È8ÚJ·•³®†¯ EÜ£u¸b˜¶lŵyê0 ‰3˜ôY½ý @¦Óºx}mY'¹32©¸Ë‰[|‹ºâ@¶BY+@K2D"ùi³}è¡J%^=9ÂԂïÈö¼áºHª¬b¿l’VVžíÈ”Ý÷ ¸C"R{lø€ÑXŸ‹”ªäãÄÏ·›Ä肱„~ùÞpS™þ‡ýŒÇŒ6G§¹ŽF_ÒõÖ1AëI1.?ü£3O¼ßíj°ÕR(O˜Ãìæõ×=l/Ü}ÓÔ[³Ÿ”€Ã_\éÀ:®¸€ ¦¿™ _û.—j•x¼5á’µJº¥t³«,Þ¯‰2[Ô#–Éx΂m(©{M>ã…4ÝšBîl×üX}Ñíù3×L’Ö \ë Yˆ5`axŽ)·ýaîŸ1‡Êš/ßhÏœÖ"çuJ6jk¡Ìûl-ê5PÄýS,Úsäú2´R,’r!÷ëÖÖUÙ÷›MÑñmMÖØg‹g‹ùû7=/¥ \ô¯î1¾è@ŠK°³%d°”φA“é=´[ÓðG½x„^­ePâE~ŽÈ¾–á 5Šž¦Ýy4WY‘‡'*Üm5å´“zpý¬Ñ©Á»a¼Ê2÷ä-¬‘Ù3îýÏË \—_$˜ HŽ jɹ€ÖàÚÌ*€¡«W:$‚æ‹h›Uaò°žÆ¡/™ÊåøñoÐP²¯¥“Y»±m+¡ž-Úi Œû¹Ž–r+/ë§ßWç»1J´,xô '¢¢ò.R ZH™âl¿/}øBúÑ+ Ô2ћøžiÝ­æƒ]PK€¿hï{–£¤m½†,aõþ¡§ºaâÊõÊzîO,1°&#¾:A ã9;Uœwä„_PÄ`Oàr­.X+JóµšÄ/ëÃíðT’“±ŒÛ¦%VºÝ—º|Ø E´n™jdU–}ì…±Ç/t¼jÜ6e#7it‹»çÞÄh%uƒ$ì¿Ô(𿎟"'9:Ë\F’°–øÞ/¥ö½Œyß,Z°ÿbcH¿öËIüì˜_ô|e"½àוI+BŸÊ®©žÔLÁRG×HѽÀ ÖÍãøz4ÂFþÎgB{w«„Žš21GÌ|ð½4Ïb}_M˜L|œl¶E†­ç2”SȦynââoíRž 玘èɵ48§ÓùæÌ×ôçé»[ |D±÷DY£í‰(k}º|Ýg|Üý©-G¯ÔBôóUòïÜ.A³²n9л~²Âò¨®TCÔ‚f{tùÄjcOÍÈXqQHʰ†âh*`‚ÌÇ G|x¸$€ÅНm³ þIóÌX7å{ZVúâ{ú_—¼.äqX¯¾û3½Vúkè–†íc »ìŸLÇ¢]üª¢†Fô™¸Å5û£‘ù‡ú°ÃÐÄïï;©‹Yò x_› µÔg êvæ§ÜÀ¤Ò™U4ñµÄ™óÓ~1ðêŸz9ŠGÁ”¬€ Ï'ÁœG7Ú÷ÕØO¥T éžàlÓ/Á£"ñõó÷Ð¥ºG¬£E¿ §Ð‰ŽfSd•¶¿¾‡]ÆQ’ÿƒzæ5‹Ù¾Ì“ $g‘‡Ë7P×Iž¯Ê‘–WAJšœTÊ6F±1ú½™rß=ѵæIýñž.¡dÉqgûi®èàÉôŒ2Ôïõ«3³~ÅB'½þ ™®¼ŠP™~c¶ÃP.n°yò>/—-cÿG)´"Ø•ÕÊÍU$Qó»ïƒ²8¥OM¸ßY±Ò4užU?=ÞiÒÿ*w¨x…kfØ•óS ë{“’zé†Ö?R¾錪Ñ^³ð̪ë†bðãÑm$Y#®—€ƒÔR§_‡DœüW]ªh­{'¦G!FüþõYÖG¦’$£äšgaŸüò>ù2”ËÚµh]Í›(”º6í¸Ö|'êg<@íƒqA¡|ÌÈ÷¼­.Ã:e‡orªT)¹Í¤W?+GéØ;g¿¦1öºþÔÿÃcØd…;Ë}£b?Ã2gæa~{3 êÛ·C±~ÛìÔ0“e‹HS|‚E-|hÀÈÜv9DóA,°÷ýäÛ¬É܇34dáC_JdT—Ôz·z¼Aëå¨v,Rõ}>èvºì87vN2=K[O—Ê$󨟑éu½Jwog%…¹ÌXÇ?Oê›÷VxîMÚÏ ”uŽ{ûú<I«;ƒÂ1RóNü éÓ &u{u¹áÄdã ‰ò’ºž•©fŽXHbÄ”6Ĺ»UÂnÞSeÞ¢|“«&»ÚsÇoëÊ'4 Ó=8…D{]i£TféɤcVº8Uï1…œŽ©ÛCpô2yÊ$\¸x.D>{|¶á¸¾uJ\ä‚Quß6ìV| t!#w¨²¢/MÏ€ÄvÐ:¢Ú¤û,1†2×^;˜e›ä‘³x¹Sèò•ÂÙÚ†sn}œ¦ÂÇdΠpD·oñ&È0üvfÉXcø¥:M÷FíPi%ò+áÃô^_=Ôßïaÿá¸éu$½1䙓°‡µ…ØÅ£ræ±3$e¸!'•:ÎJée»oF·Ûýè´2ìÇ÷8ÆÄ^ؼœÿ(¶;Üã'PR øMù´óç›g·m å¢è-”ÍÂö$˦˜ÿFl6nN¼‰,#¬ãË·J«ø¼`ÕΠoê ?võëVIøbk.¬më.ÝÎö¾A·j\ûÊá…’4xáRÊ„’v=‘Ín{˜°E¾oºðÕûib|~äfæ<›õÈ¡y ê¶©{‚ÓióGtyÕuÞ¡…dꮤVgÉb˲ç·y«êM–~˜½®ãñúci¤Þ¨X’ó×¹” GIº– t EŠãu±,~ßÍ+˜µl¤P¬C_p¤ûž*"pæ/öƒUõÙ”«Ú’‹Äài™y8fþBxÏ‚ç Þñˆ`ÕëâdÛÖ9,fS>I‰Ð5+%5 ÌE‚Ï×§ ¼~J ^¤Z½§‡¤kŒ^†LôÄ/z^ÝD7vÚ…5ý¨{$‰Vu¾øþ€]MÜ endstream endobj 2809 0 obj << /Length1 2081 /Length2 14193 /Length3 0 /Length 15458 /Filter /FlateDecode >> stream xÚöp¤k× OlÛÛ¶mÛéØ6&¶mcâdbNlN2™hbÛìýböûýÕ9ÕUÝϵp-ÜkÝO“+©Ò ›9˜%ì]陘x¢ò*\&&V&&Xrr5+W[࿤°ä@g+{žèEÆ®21c×3y{€Œ›-€™ÀÌÁÃÌÉÃÄ`abâþ¡ƒ3@ÌØÝÊ Ïq°ºÀ’‹:8z9[YXº~DùÏ#€Ê”ÀÌÍÍI÷·;@Øèlejl7vµÚ}D45¶¨:˜Z]½þ‡‚ŠÏÒÕÕ‘‡‘ÑÃÃÁØÎ…ÁÁÙB€šàaåj PºÝf€¿Ê(Ûÿ.Œ– fiåò/±ªƒ¹«‡±3ð!°µ2Ú»|8¸Ù›±ªÒrEG ý¿Œåþe@øwkÌ Ìÿ¥û·÷_DVö;›š:Ø9Û{YÙ[Ì­lE 9WOW:€±½Ù_†Æ¶.þÆîÆV¶Æ&'n VÔ÷ïê\L­]]\¬lÿªñ/š&‹Û›‰:ØÙí]]`ÿÊOÌÊhúÑu/Æ¿ÕÆÞÁÃÞç_ÏæVöfæ•`ææÈ¨noåä”û·Å‡öÌè `gbbâäf@OSKÆ¿ÈÕ¼+ÿäïçãèà0ÿ(ègeüøõq1v\Ý€~>ÿTü/‚ef˜Y™ºL€Vö°Ø?Ä@óá“w¶òè2} 3€é¯ÏŸô?fËÌÁÞÖëù߇Ë('-«¢¥NûwÁÿU‰ˆ8x|èY9ô,ìLf&N&çǃßÿ²ü·þÿÔþ·TÉØêß¹1ýa”¶7wpÿ«„Þý§ ÷ÏÕ¿×…ð¿>æ ú3özLìL¦_ÌÿŸ‡ÿo—ÿ3ÿËÿËØÿß|$ÜlmÿÖRý¥þÿÑÛYÙzý[ÿ1Ån®!ïð±öÿ×Tø¯%–šY¹Ùý_­´«ñÇfÛ[Øþ·‰V.Vž@3%+WSË ÐÎàƒÞÖʨäàbõ×5 gfbú?º]3µù¸J\>Nêoðc•þ7¤¸½©ƒÙ_;ÇÂÎ0vv6ö‚ý8øÄðaþXN3 çßs `d°wpýp|”ç0wp†ýë<9،‰þ…8Œ"'€Qôâ0Šÿ} £ÄÄ`”úƒXŒÒЧÜôÁ)ÿqþ‹˜?8í€Æÿ•p}H”þ ^Õ?ˆ À¨ö_Äýa©ó}DùÃÂýÅäú¨Ãô1?Íþ™ŒÀÿ–2þëÀÿÛ…¿ôNnSú_›¬Ì­ÜÿáôÑ s7ç~˜Xü~dnùøqVÿ€ÙÚþ~¤k÷þÕ#ûÀtþ Ù>l?Þ<ð‡±ãÇ}oo 4ÿSó¿¥ÎÿSÛG’޶n.ÿ ÿÈóU0äùGËþËhgeê`ëð'!ö—»ìÓGÿÄøØ~FWKgà?šõ‘¢«‡Ã?>x=þ@–ý?èX>¼þ¤üÑ*o ó¿¼ÿg-LÝœ? týûÚúØ™ÿà¿ßK@ 'ÐveÉÁ”7ĺ1¤ë±^σ~oš|O3ƒšÞgŹÛí7"T*u]ÎçMç{áÔ±oÈk;âTwB?‰^}NÚ›¡Â;’•;Ÿ}_ Uæö:aÌbÏ”œ7 ÀàÓ« íû¾:ùjÙ€µƒôÊ8¹q!*¡=z Jz6 U­N†-í)ï×qȽTÍÓǪÇè•/’šä~Ç&t¥'€¦A½ôDZ¼»_@ÍŸy'’I¤…õ;e-õÑùÅ÷ôÝ{½ZÅ¥‡ G›ìurŽÂGä0MkÙ§¢tÓy2ý;f÷Ô–] ³í!•÷ž‚Ê£óѵù 6#ºttÌf‡T’]9q$[îåšÌ¦§ô5g»‰ b’Õ»¢-g#¢áàÅ\SF· ï~ê7¥ôÀÜôæ¶?WTÏfº>iw™(ÖAíOy§ã_ô!¯aŸù×Îü«Zˆ21r¥¶my¥`x&©<••ÆžSÞå2ñ®G¦bU¥)]L6ð:‹—ýÒñ }•zÁS1L1Újk„§ÊïîDê5†wH¨Õ,Ëf DQ}£Á<Êé& Ÿ$Wˆíäå¢4¹ù - ‰«3Ú—l2bö ÁÀꔬ¦í²ã6Á ×xŸâRÐ:¸±,AmËãGø^Ǻ«›@ ïþVA.©pÙ³<„E7_ÖÍèo4ù@’} &œ ÈÂÊõ3Á C¯/-ùÙt·Ûœsw1°lòšey 7ñg±Ÿñí`¡r@è†Âs³ •Ë6cÅǸ™S.p以?8¿bû­¶©Å£Òvñ{"wƒÄD¶÷o räÏU(!@ß×ÅtÆ“óà:œðžÏÇÇ0_‚d¶“ ÚÛøÃ;ù¨åkúBcÂvø Aí6Ác+x'Òñ“jü͘õuT§Ñ픂ͧØê;¨ 2üä#³•ÊÆ-Xfm™-b'·%/6ŠÒ5>µú]Çø´”óé¢`à³[É(jW L}gCÕŠBÕéÁ$;½ß`fOºàùåߎ u¨“÷ ¿ògêÌYR ½z¨Xÿœ (ëtóie%ôéNDOqûvšò ­Ê ^€ä«cž—¾ÔŒ»§c ª©&xѳG×á·žõyTÜAŒH˜6‰#y *U¨m@¸à"5øi‡ o—<Údñ™ˆÂfµdÖ]¼˜Ò±˜=<‚RíŠj×7U­U1]›“û˜x‹Ýsלþ´uÁÄËñ±9s–¨¶¼‰+·ûHÒ@Ï3õO‡ÝvqÝwFÖ¥¦c6Ídn7ÓÖnqieOÑ:R°Ý[gbìâ´Ü+t17”ª9ºÇŠ…¤' BÅd­"Üz’e|=£5·½ÝõLJÄ)Üçì¯ã߯aVåÀ»tÆø-î `ûµÉ¤ÿŽ^<¥•*Z¶1±F„vÜÂ1ÜaèòÎî&Vmð›RpgæÕè„ùxÕÿû®¾¾‹ ºûi!yEYÜÍœÜóÛ!• 4ˆ•‰³“¶Žˆþô)‹‘•ÁOØ%ŽœÉE5< +ÊÂf ]gaß¿k§^](ÛPùbÌ~3|P-fxà2NÖx%§tøéN¢ÎG\}ZnC`É®,SXE½•jA!SHvNTŽŽ¸8A÷kdÕZUƒbœùTÂiv’fô˜fuL+‹&.ÞªÊ6üZÕ\!-ÝÇI¦ŽLhä—ø£½-A›Ï+‰ì ØmÈûP̛몚v<wÖ»–›%PÞ¶ßS(E_}°²‡±TØ´ƒfíS¥p¿¯Â‚O3$ÛûYá 8û]õnŸ\]ÿ ?±;\O®Ÿ3ˆìÖ3f©Óç]ÕL0J•ßüyˆ<=c® †~AŠôØç8+ȯY‰üWÛq¼4:ù±!ýQÈ’1ÀXñ¸e1:a²SÀÌMÆâÓñÒÇÑ ál#}ÈB †–ä^ã!*¨“˜‰lÅe$7¢³ÃüÒd•wм¯úkÛ…ùSº¼€íÍÔú~Bñoíïù˜§†®2¹_0œF2û¡dnó SlÜFE¼Ii«ê+™¥NåŒOLÆåâ){‘™YWÁw{Ãpš&DõúÔʱ(ËÖæöPñŽ–AÈ{®5™¼Óz k1÷\<Çt>ü¯`2HâÁ,ºšµb>bCœkÜý÷x”2y³{Ϥ̷3ÌÖé¨Go™òÄ0‘=gy9íŠz6Ø;7Ð|WÖà¬õTöbž‹ËLš3²ƒ¨°”Ã[goŒ 6/Ú J -fIS`˜ùv¤Ò~\h&ac T¹ª€Ÿ6(wYû?Ðù–q¢B‚ª;²ÕNsŒÈ­˜I¬‚ËñÃYþ½PKhh%x. õ¹ƒñª~9œ´Iψ¿o‚Üg ¹vÃ×m¶Ö*¯ˆG{±óÇÏü<üœ:×~Á¨#9ÍGyú¦ie'ÄKÖþU±‚~èÈ&Z%mNËVâѬX`hž‰v¯ÓñOÏ:ßËÄo9‹šD÷hyd#“¶žÖý%ÌÀ,ª˜¡%§;öÉïÁ’>M-U¤|=]ÙØZ föÚnÂÚØƒü‚1äÑ-j q¶_UÝ7éÄ,ѯl^À þk¨3:•[/õâXè[WöèÏ=ª¡üƒ˜,|qðÙ¦Wò¶*xsïÈÉB¸ìfÊÔ¦FhÐËV@3ËT|˜qHæHpѹ6*âR˜N[áí«~ðœE¨ÙŒ:÷ãŽoáí‚ÆL·š!*æ:.™av5f(?sæ³7Ú´ä²ä–çÈ!<#h$IcKYÄÃDEMblÖ{¤Òeí+‡ežMcŠkÑuì Ñº¡R·3ì;Ùn£ªú ·oq?ç`Œ÷9n¿=ŒÅ]c󺤶Ä~Ÿo¾Àm½æµƒÄ¼„ZÿˉÀ,§¤ªXîÑ#Å2Z¢WðÆZBÊ—: ÿ¨6­‹Gš¹òüMEtiÕ‡å׆ñ¤0Ùæ¶úážPíü:¿¤ƒÃ ‘™ñVBÖs©‹Ÿdž°;}¶tšö[H×eÉæSÀ›Lç¥c­ªbÕŒ½¶Œ‰Ý(îÞ¹·sa^lÊ×7ˆœ=0ˆ™Ùó•$_pªž"ûQ´¥6À(Û¨µaO·d5ÊCv\Í‹‰îe»Ì>Wy*ö%' ñ§ÀééÜjÔÇX ²+ɧó²xA#Ûnäü*êà^ _÷0yDì¨Ç¾<½ûuEÂÄ(àÇ‹®˜¤eÐ[ítfÑŽÅ<~ùiâæ÷+7?¦ö2æÜÚ¶ =%Eì+ÿ˜!X´_äJû s«à6wå˜3ûüe]2Ÿª×W=õ1]°S+¥ža>%ï¸VÕ‚y©ƒ C«èÍî¦[ÏZßµûAœÒéÑÕ˜åqü:AC€›LÙŽèuY‡Ý¥Ñ5»ë0þ7š^<qKoýC×ÛmŒrð;Ž¢muDÄÞ I‰´âhÚì:õ µ “0'®í2§ãRÜ,~j2”}ΚßÒ@¿mQÍm4‰êá½K¬¬G¸ûâ“0¯ôÆü KÈ.(P²Âoyp&xåÔx^.m†U01x‚Þ^~÷5‡²&£Ðokî‹p¶¹%B–û‰Z"ü°·F·©¦ûŸ]`Wo¼´!lD¤è?r“…mŒäB‚´dC6§Fî]œFäȮͮhÝ”n¬Þ’.ŸÔ¼Ó“ü–pSŽ­ Õëù¨Wåt,i\úªK[\(í,Ô­uy÷ðèÖÒóòဳÓ^¾L}nPoBãçz¤þ ]Äñœ=¨©ÓôÚ £5HUßÔ;Jc bNÝû%Š@wYî`6ÿ©:Jñ,ÛÝû²Íõ'nx‹oQöªH~g“rÙìÎÌ~Z‡¹‚¼3R#u›JŠ4âlä† SàAÊ^‘h € ZænàËq¿ ;Þ©i=Õ [Yq¡êqr,È¡e’E¨Ý›3r ±›ÊÈê踎lŒ°ùýv¯3â^&Ìrk#†J¢ÖÔcª'îÆµí3âò&Þøø4F]ÁèR'‡m³8ý\E>H~ozê/ï_ZÌË,4m}í¡å¾7Â\íHÄ‹KÍgëùÛRâ½#·$M ·o]]Lï%¸=ïp¨Wˆ^Î%kEzì[ã¿ÉÊOFæ¾(<Çdo_Ö!ò‚O4-TؽB×3Ý ÛtÞ„(›Ïiûì¼2Øw…yóæ1†. :Õ¼¦`Y~A¾ùãPM5+¸òǼ=òƒM×Ã]Æÿ¼s8éïÕ¦­’^ÍŠ’r õdlõV± xÒ÷¦Ë³àfýFÑ gÿ=öÝëy¢­Z¶0¼Ù¶Ø]ë­ãÄM”å7˜tmâ)¤þ-®Epf’ ÿ# •ãžrWù}‰ŠrßQ¹ª³gädÝÁ³ùX„®äç}O ¢©T”›üŒvñ— Jøï8 »ôß™ú5‘—kvj>3Ÿ-3™u¢3¨† ëP_Ýs\ûp y mf‹°q²Ùp.û•Þý‹à¿6äÛònG?¬7­¿M05ÝzI eEÅ›_¶Ê…Ý–‹s/£ðOÓ®ïxäd1•Òj)Ü„iLËõ©I jîçà¸Ùp ;ÿ²¨è0N ‡ÁtuâB>ç¯{üívÀæoÉil-ù^é²”V2Qü=³þÕ„ë‡/çÑ@Àá±!Z*ê ˆðõÈW¡3ç6qdö{‹Óáxö5+½FÏèÑ3]f²b æ¡Du»LÃl¤ÉwMlÜ›µ“ owS¿Pw´$kÕßUë4‚¹+ó(³($bH/Õg¶„4bn»ûÁŸ€ Ô®åYãZUS“È·y½Ÿ|L¶bïöí›r†¥L¶®ùâl‰R*š¼ÌÈÜ 9’Uµ¾nóD°D£ø9¸`c8…_áö0KYƒ":rIUJ«¾ åBmaˆ¡À×zªèËÚ6NëkgéIùøôN_衸†Z+w#y4]ü<`ÊPô"nŽ–}ËdŠÎ†½ª7Wyè<ÍÇúüµ˜ná„Êr>e¼6yÊ™šžp+YSrWdÜg± Ã,Ý|ñóWÊÑ/©T#ÕѼ¼Ëìƒv¨aŒ ²b§TbêÎð—ìªG+°öŽËÉVØW >‰œ1Lõa¤[È~°‘<;›Ò!Û‘8©“ YšÜÔÝñQý¦‹·^]¤¡kõl•gð7a+zͯø»F”­}e©}[Ãé©Z;KhÀ‡Œ»ÏasÕ[(§š£N±ø}e‚~ÿsì7“ÃÔ[bR¦¹È'©øÒÃî²úlLÌtôÚ²t2Ýá[&Fp”¯_ÌŒ©ïB‚ó"¿¿E )…ËwNÌ% †¡JjMv˜ƒ+ì(YA9u´#cîÈÜ•›ä›€÷’¬?÷¹0¶+[æ22Y…µ&Ÿ ß XvN&cÜC`IÍêéÚ•X h`wÝ”ŽÏÜ<ä êz‚œu1]“`FÈxwëЙp€Í00cBÄÆæj£„0÷X&êMäÊ'Ksá¹5>Kq«[+´*н×ÿ4ºÿzÏ6ñÆßÖ•«âU„øǧ:­vsˆíà‡Mr…¶ŽZ÷¥Þü´WWaÐ)¬áŸZzš6>ž5i„äñž)Õ‚#(ê}Ï{3Ñ“ù,óKT&­-îÌÖ%ßÒsms\»­V¢t 멾®”’(öPýƒØ~›Ê">¬«³ï7õP³8:.·!¢6´ðªŸáYå®èóûzhyéñ‹9Ì¥“ÛLªE—Pz~vدUY¤žhh½óˆ|=î )ó2E4£D¾>yk C±n¤·/…AÎLâõ¬AWQø¤ŸÞÜuÕ5+ûói°ä‡¯ÖÚ~^CóÈåFʼn¿é³û*ÉÏÖÉW.°22Am[¹\.Ál¨p›&éÜù~‘Åîä€öí—i—ŒÐ1å_•I•HþD'ÞºŠ½tªÈ}Ö\ .]ž`pM©4nÁ9¹[aðfˆ#î¸5?žL²ìZýÕ›ƒL›† ¾OrÕáÑ5³ºªŸêë§ŽNMcx· ÖLgˆìÈÖñ£Èô å&„j~V{»j¨¯³¡'̲Œ‡!—¢è/›Ø³y…k—âÄ7tÇø½êFØÓM5£>ʳt >yeSàõË?ª¿9y=Ø…¨¸ÈDU ~bû9±šöJûÙXm¾Ñ|ÄíÕF8Ã;;ºšD"äEݪ÷2w'v/f³Ý+Ë©ŽM•XÀ¹Êª37ÖüÉÒäè yƒ3‰±<_Ió¥€%"n6…EÞðä½Ýõ³•ÝŠDÏÀ†ŽÕÑ•wòíœñWûžÞËE0=Ý$52x­¼8PYDJ†£Ïã=;JÂæ$Ì&Å„ŸQZð\‰m§A¶Y–¦OÂ0Z~ÁûÓ궇sqóM]6“Âפß+$Š ¿Õq';!Û?õüKŠÅ%àë䃷Ý,Á ©í "ÐLˆ%{Yh*+¢ÏÈCÅè,‚~lû>öã­¹r#húÖâ­œÓc*S‡(ì‹áøSˆ-WfŸÃA_x÷Ñ›Éà—»=ÇAœ(ÒtÕÛ©¦õþµ¤Žª×aEè•@†_1 õRö¾%”¡^±<:c×Õ›ð\^tTC¶ùԚʰkÜæë¡IgÙIr… P›Í„ÌÁ¡_GÊ;õÅ69S½,'<™Ñ#›ûêwbža°ÒçvÎßC7ÐUó«°û˜H‰Áïì1øŒ€ÜwX-„:L‚úÚU÷Qð2&K»ý‹Ë­!%¯/ ±]ôlËæ5º® T@QÈŒAé3EUÇ£~Áùç!¼åK(çÜaƒ&œ5­yùç :ƒmÙ•‰ºozKjÒ߉ÌV— ¢-×^6]ËÓÙÒÆ%ƒ§%ÅW´#œ¡ãÚc“ß*–¬Dó¦Õõ8Ít$Ì;j|Ó›Qèp£êCðhÚ È ‚äSÝP!"4Q„Àè@¯â¯Ê«'Ž]„¦oWÍEÝëYõ!ÚJH‚k2&e²Çƒû—?P÷n5• }ón‚íOòkÒ:LTeðÕáæšìHgÏ’ŸŠúsStŠÅš®$Iˆi«;ǘÒq;Ý©„ ;!ȼ‹öz‹›î]ß^Ú?­™”ú§i‘0rÛ‚Ã=u…c£ ÷FÍ þÄCš4Y™äÐ.|7A~1œeSÆ£ýe›N›¶÷õ ÙP^ú0\3¦$bÌŽÊv™,«ô·¡×²žÝÕÎIk¶A ¸ §ÌjNõ°õÝÅÔzŒœŠ4ò ±û ?¨ÚìÛÍàÑ0³½ny‰œK_è¯âiª\¦NZ[¾«ËÖ¬!~_ÂÞÅRég~‘rH¸a-¢ü¥V±!~úp‹§¶bvfÒʪÒH“|…u-XŽVaö–½o‡+•ï˜,!¬‰÷ôËJcJ˜”dµpÞf›FM‚ðù¤úÉÿkiˆV7neÚÚþÞWݪñJY+ù DÄûµ°`¥Úã›Î˜t­$™9ÜZ @DÛ;—‘$BG—Åæ’¦=U#}ã5¡ úO¶¶8L'…îRkiè줧(‹p¯‰ÖæåëRëh˜ÃµoÎ LÌ‘Xß’F¼guZ‹ÑŸg+²íÆ1-Óg¼•]Jw“ì\¾ëZV;r1CŽÀ¼G!WzíùÔb¢ýR“"÷È ;ó /tK\†–™ÛSÚÂ8Îw-{HO¿ØRSÙϲïW;n5|åUÜý9(¥{Ó`‚PT[°Ô×Ù÷vÍ—À;×G†]5Ô:úz"4«Rƒ|ˆ6I“Ž¿Dá’êz©Që2u«Txæ>¶±áDƒýª=èIö€×ú`“Wô¥yl³)Tý¶þÀìL.Ƭ­ô³<±2Ûdº¿›d]Ì÷ì z$Ìû€tl<§JSŠ|ÉS¢/OÝÖFÂ[à§iÆÆ?°„ŠkA(e!µkº¸]1>s½ø|Ï—“›Ýp•RBƒ7„º¯/ÓF/r9çqêçUÙ¤sÕ€m)«s Ð 1ß,büÙc€bÓËLépКExX»¶q”=It{sN”žv˜0H]'’í‡ëßz½ÛÙ(ÄŸ=T¼Ïfí¢p]&ýrW/`¨þü}‡ °ì0'“4-€ÔÁ; Á§i˜B¸»FÎõÔ%•˜äØFž ÆòǶbUŠ>ŸíN¥GA:f‰4ä7”Ü ßÐMæ+¬À›ç¼³óûÔ—6{d_'(l@f¨µ¾„|à5wš¾yXXyîâÌÛ$ÐkìànÍGšÇM¢r¼Nm>Ái¦?³æÂ >³,v4$ îGgß[…¼@žn<Ò˜mH-;ˆzƒ´¸‘<'°kW3Nñi´#WálTN!ĬY‘ŒÚs§tI~ZׂæZþÝ ÈO¢q§Bz›h¹ºQÆêŠtC/&šúnn8VmÓX­ý2×½xäx­«âÉ7ÍøfÙò¢÷,±‚ M®J¢”vªéÉ=xz$aê‹ántVdq“5ÎÑ‰Ç d†ƒ>Ù×pYÜÃ4LvJÃa¬šÈg7`òy.D( ÒaÜ6 ú!›ò¶,,탲ïöó~rcˬ•,¾XÛ±[oϼfpê “üzÌZÃrÅåÂÒ̺¡ôxþÜ»5G(oK}`ôäiŒ`á#!RÚ,©€)¾:VOÖTPQ¥–6ŽŸM´ˆV 'æ··/;=·ª Û^÷íõÝ)@tׂܹmX½F#IjìÔæ7Яk`1w—-x¥¸,ÁÁò nzE$ùýöò@‰üÝ9§¨þ„».^4ï̤¶B¸ ™â928”&ʸÒª÷‚´Ñ{m|ß…À9j«;-æ6¢=P’÷3b8—Òו4(¯ü–¹Sm9Ε$ÚÕ^ÔÚëLȵo~ÑÑ#ñÐ=?ž£l[׊ÞO h­*Þ fü„QV²,·ÓÖFGœ!`mGˆRòRޱÖhã¼S ‚/4 Xãv•ÜÑ5g©ëŸkw¨Ó}ßäR¢‡‰%ÍR~e¼0)¦%qÚWAS*tÑ€ "œ› ÑŸÊvÏD^‡JÆK“ïdé´!ÄÜX”¢iw%`ÏÃù.b_j?bÑ •¾ÑWÖàÒh43‚àC%ËÙ"«ŒÎa§‘«Š]æ}ÿj”8m¿u×¾0ÜCãÅ%Ó\nUæ—ò"êäpN)K]…s§Ù”ÌÌY2nÜþɦƒ¦j‘  A9ÆW–öS¯M’ nˆ“6õ!M¹Pn7ò µ#»"ËÎð‰„1- (˜ ˜©ï}‘ÉyØýí×"ñ›À„~M8Ù[I/Wœ‹ú:u¯¬¢à߱ߟ}‘GzËÉ*íyÐ3÷ªÌ‡â¿eÅ`›2Æ;JÒ卵9¹¡Îs܈ãˆèî<@—‡ó×k¨#|E6U †Ë©(Ô³e«“äýNUsÀ²Rôë[ÀDŠK7–1a9”9Ï—a£9½rôü2 TډϺ÷ƒ{O: Õ™8mšWµZßô±Lw!0?K•cÌÆD›€WÃL3Î÷˜âwæþœ‡º­.Ä{kÝ>b8½ ‘ K¼ ¦r˜Û§»ªKPzÅ/çãV,©…r•iÛ ùE¼n¶Ìð-4Š‹à\jx%«Ÿ6)×HšöÊV¦¦¨nð`ˆòâÍ¡s“Ù®VDg'Fì—Hsb’î=@ï¶ÃXœ”#¯¥p{øÄÉ¡ÿ"%h}8ÂöàBΰýUÑ»£ŒŸü§ÒvÃöõ#ªtâx \ʶšBŒ›ÙZ‹MAð (ù8ö7÷ŽýþbV-½ր쮨ÞCÝÕè*¤*˜-•ɮV&! ˜85$ôÏ÷ˆ8DI¡Ó7å1@!d_œÏ‚ÒÌþ¢8FxI?ÈóÒµð7äù­¼ôŒ£Ýw0qÝØ£!dÛäîÒ4ûEu3gˆ¦Ijí@‡LV¥4žÈsÌ ž;¼iת±àR…Mf¬PšŸjÆ:Ðbˆ÷0÷y˜€ñéVÉf Гjy6-‘:&¼ntód óý”fÌ}NˆAÒ¬¡šA…±»,@‹+EDëT.é+úm&Âwø¸”IcJû7 í…6Vb9Š€®4áè;׎eöô·Ê}ªóºtkG ø»}3=T¹Í’Þ"åMÜÖŒ§ÓN®rlCrî€öjÎ0ÊSªL©ãôøˆ°Tˆðƒgå x{úsrvÜ;Iêð–í…H·· [„e †sæÑ|F­ŽÖz‹Ÿ‰zÛpdËÔ˜ñ)fyÍdÒíËyøjÇcd}Í•aD½†@{Qj‡–.8>b<Q«— ©º:aÖvuªVýׇR œdiÛ=“ÒÙø!ÆçM݉û"»·•.fpˆ(ÍÆçù÷/Gä  v|A£Ï棰~XGJˆ ŸT(D”ŒÆžò§T–_à"Ry‡;ñóÛƒ¤h_uNõq(f”p[9i—¯èuC)|¼óÂ/r$J#ß'õ9{1ŸAŽ¿7×VèÃ45‰‘ª¨„}¯0ãÛžªÑxQ×´þL·ä‹¥ÿ)†+›”B^ƧÃ2¸ñ‚ůøjP8mtÕŽÓ|¢`x=‡]&¿É¯†^Ït"ÖìIƒ9#Îia ~sx£`ºtåÇxðöãQ}H~XE›õrÍ,sX"rÉ/ã&Ûg"xÚþ¼c²,`ùŒ™7(¢n½cj;ã÷V!¢Ë)ßÊè BpàU&E ì;¶¥ów®¡~¡¹hï<Ÿ´4˜z8z×B×§O^€|«yt¦@YÐõ"ƒž®à¼½QX!Æ+–—À[f1àåë–ºÀk:#¢]0ƒ)½#‚ëçð†¾tP†»:QØþ4šâäI}Œ4ž„6¿‚ðk! ÅýHPU\Ô ¨ëÄXŸ³=À+Á7.¼^,ÒÑxsT‰uáZçD¼×*#K1‰·ˇæÊìÙp!fG*¨ôLxKbHc©T¤'ã¢\n].ÂÆm'JìÝñw¥½%„Ïüpe’t E„È|«1؈’ï±)›fs̬'Õ0%‰O+Ÿ©2O£!¿ÍùØñU¢œ5ºÎZÙ4EYE٠кLLâJ~Ä`É—…×|‡£&ÙHÞ' ²?õ-ÙßúQ5³Õìvç  ‹C~˜Ÿ"I!Ÿ8i‡¿z6å5¿¨ÆthBÖ…N‰¼‰ºEOÅV üLç‰ðe5ºzkÎ…æ y¤ªQæ ôSL^‹eކUÛº€;Y‰ïÕä¿ h«`⪋³LVN¬7h8õNj¬-• ìZikEÜmÂ[RX?fqŽõ÷ûÃç$Ó˯ÌíðÄ=´:«ìYéeþNû¾"ä¡õ<–ÇP¤‘§›œU°pŸ½ÈÕ1­ØÝz‡‹yê~jœBjÅ2SòÎO+ø†c½Ú׆'ÇÆv´‹½‹™Àùø0áͺ0þEY~Í|8m”´kfœ·Š"©¹´¿ïžVœõ¦…`ß<³`QYeTð»á3ѦðÑÿ™f¨½^kô~øg»«¬³_Ž!ó/!±5ò‚ä3ü)Ь×âUìÊB»øw²C¯£±ºð˜ªMØÝì4·è‡ÆË!ègû–ª¢?t††ó‡5¡Û-gvr“ŒL-4SÔõV†øÅõb¢kRÜ´¤ÛFW4=2Ã×#Mv_•uÄûX8y/Hèö &ò.ŽÔ´fõñ?³{Öß0KºHÜá” X+ú¬?mkU.”sØ›+ÍÛÞÊÁBJüaÄŸò™íxO{~³Õ€ñZ…ÆmMÂ_6.“—{.;j–¨œ2ÒNõ·xè &ËíEyQ8¯’lR£É>F®À ¾€ üÍH¸gÜÉ…êe®ˆÓ÷®iÄIttmyÑÙé—4VïÍ QÉ×ûŽl±Ùhk8¥è—„ÐQ–±@ƽ̋䶒¸ôÌóÄ…:0_¼`BGyjhœÙWïŒcC¢ds]_œÈOáK? Âcôc0ev®F—ûæóN‰\ÈÜÉcù\J¿ ÂzV*¯™Š}ıޗW" Ì—¯=³<‡“¡² ~Z¼Îsôô͵vþ ²n½8¬Ø—Èa^§ß¿!šoMì/ ’$Q¿ÆdRƒž '­Ã€¬<Óê\Ë4Øgݤä-,\èméTÛ€Ï?¥•†æ5Á£êº V°¦NÔ~,ù±K5!dt™­hmä’N}“ãG$¡…'“¯$©÷öçè3rýWÅ!h°×'–ˆa'ŒP‰0ßüœ[â®7 U°Eyñ‚ü±ÑÜyžb°0c!n»IŠç— ¬Ƀ ÛÅRÿ³„.O!½0sê×`ífÇ›Dò›gès){ KR8O¶:ôœ1_Ž¡ˆëáN^pjþ VÔËâIµÐ3Hb1«S 6/Sî¾Ù¨½Ïg )GµŠ"·ìç’±§NþûŒí´r®åî*ŽÓï!¿‹¼[¸~ÍTô€¦æø‡³r÷Ù<–ã•FðŽ0uŽBÇ~zíBCgë/ƒÛÁÜëí§Õð _úR‰E «e)GíÛ,$ Šwç(À§îPÈm‘_Ô¬dR2ùž$bj°ÕÌ'…–¸Ó–ÏiÀ ^à„WÍ Ò‘r@ •Ô®Ij˜ftS½}ìOȹ‰ÛŠ;³j^íàË=$uŽÚ¡â(×5… >íæ–•ž—ß%mßv> ¸ZïÑ3„>¨È´Ö•Uyã;xÕ“Öàô«}ÿ¯p­lKœË®r+;£sÚE3UXãœg¬|£îø;-y¥üT.xÕºñj¦.ÕÓ™;·¨ßJ &Ö›õíÌÈŸ:ž9’bÚYß)ÉO0KÏ9J-ºÐå4Óv˜z Û½XðqµoÜ‹ë{ktÑxÌ¥Ô}{m1oÏ÷?{ð1î]&Oi—õÜ#ÁÊÆ,ëÜé›ËÊöÅàŠÅÔ“ÑŠÖÄ&Uêe§˜ºVV_¡µÕí)S½™ìÛˆ˜¼Á0d{]éTH:ù<êþÆúˆ£=MéàÒ={ùUÜèÍf£Ë2šeüì’{<諤ÁÈzù£#$ñ]z!(sóåŠ6Ðòb ÉÅÖ!­ÉÍe†Fw}ÙrÜàrGj`©¼öª(|i’ž, ¸ˆŠÄV)jr4+Ù¾GÄœRNZ–š%Ö·½G¢²-ÊÈP=|qœC2ŒºJŸÝC±4hˆégÎZë`)3 &í—¹‰Ñx}Á¯Ý€G%Þ-äþʶ*oŠW¥Z§.ôêwM$kkê±í´Ý Ù­¼¤ òñLGX%´,8îT“oEúíS’Ã'pLÐN4 )ιkº^£'Ä'Ô:q¬¿£Ñø@ã@dÑd {Éjbe-Fƒ\ºÅˆA®gÚï@bèR¢^#]½á‡ºe:8Ìq𢴟9qw§Éz’#²MºÜyOøªs <ø»s¡‰Ä¿¬)l8X>?Û.‡ ÔåÃdÆ®‚ÒSúÆ—ÝÊH^’è­ªwñ4`~Är^Š=þØ¥hØT2¾ßÓ$ôJÿò€µ/'JTfÅpª0‹#UÞyÃÑwvQV‹éª2%–+øËÚäÃ×·•Þyè÷>/ˆp¤™qX¿ôàþ 9ƒG¸>CÙU:÷÷›»éK[qt/Ìèw!eò:œÂ}Ýëô^¤WkÝ`« c¤©¿v|楽n"R‹2Ô¾TK² «ssr€ÒÏHSñ†™¸²ÿäŸ7øÌ[Ê0øÌÚîh Í™´¨í/- mxVÂ'”æ¯jMɯåm…шYÞi£Ÿá+¿©Md½Ò¢w ibûýõ µI)}V‹¾ ƒˆÚX!µ¾Ìôâk •­*Ìòw ª¥( ƒJˆ¤¿BPH¨þNZM­w Óu›T Q7Â…Š…vEÆÜH!¸©XH|s˜Ï2{ëf÷[¡âËV ‡1¾£µ,0ç››=Ìg l7[cVnãR ì«Í[kIR¤,2Ilúm 0ÛŒoBcýbC¹°F[hY¿À°Üð* ÏÑË¿…‘ï¶ŠTAÑ:¥ÑÍ$ÙBŸis‰™¹~}¡ð/[¹¾œÄ¡¹¨ý±œo7&Ýîð¶ñ;?œê¥09;ètNU0䦘on~d¶MIÞµ@:|äÍÂ";™‚¤—ŒÐ­Ð.™ºƒ6¹û .ÖS°ÙnXn@’°ŠÎÖ)jö̦/º3MΧ™•¦1Uaý•*\j¡ÁaÊe$]¤y)Q¨U±\¤©Êp2Ó6þYQµó8b6RüOšÐ½Éo’xy%ÅA S€§­ø6vÆPŽÁàEÔh”õ uÚ‰(•ZÜÔö^R7üW$œº6ÅÐz¬¶Ï³¸Œû{"ˆè|Ô[ûòé1Ú‹õ1U^%…^g»«H?h£í‹»ÊÕû ™Í9-fh0„Ÿñ. ‡f1[~¾ÏD·vPG¼ŠŸÁ5nRr›Mìu™©åõh ZŒV>]K yê¼›Ñ &2ÐR×î¶Y‡–7H³kk=Ôœ”ÑÀ,ÝÞ µÊ<òu)̃”éãÊI GL6­Šù4ôV±l„åp.µò¡Ï··ÒÙm­ÿ¦îŽ– †®ÿᜠ'ß2|Ç%ä»ÕѦ󯇧9Tä©K?£_0F `õ¨µxÅ%P…æB#“žªÐzBÏÙ#LœjìvëáÌì9RÊãªÙ6‘hãò—N—åž1r“Åjb/ƒPTwƒºŒ¹|’ï UiŒnÚª=­jbof³»K“}Æó>Žëõi¨Þl§Z;Ökää\VP‘£hË$‘IÄÌiþù†Âp[¦ßå~®šÈ¯.Кv†?×kH€÷†R€>o›·ma)ì.‚kîôMeYÔ;ã½NÉîùà°0ïˆ#oÐG³/÷b£‰4AÒÚI¼Jc ˆ17•B•ï‚%dTàš6÷¾¥ ÚÁýšÌŽeÑç{)Öñ9kÕÖWÏ¥ŸÙ„¥îÛy¡U”ÛPÒkÛ^ujtÛJKµÚJ”Dó»/MX#ŒYêTTlØ=>3ozZ¸ÍŸžn/up(mó<ŽüyÖ­yDbß|FU\kt*ïzTk4Iºª:¿Š:‚޲c …رæõ$IšlÚërÅcŽ¨Æ¹+_@ñÌ÷õ[˜©ö¶½;ˆzj¥×'L§6U2ÂõÇâä"ì­ìû‚wŸ&ûñvCÎô#& [¾_ÃÒÐ €4ó5 €0@U§Š1.Ô¬qÅúzŽ]ª”t1Û°4U‡Ïl€ŒYA.ûêT§}ÎÉV¢‡»)4 R¨½õÒ@ù”‹n`bõü_«ÌhY18ý¦ÒEªÓ¡¬$±ù±xl~ÁÒ@$È, —ÙßtéÒr§Âv×¾áo6‰J5É-Ò^V5âÞ„~Æz{’¼OíÖ¾JÕhˆÏ<òöÕÄaµ¢wÇ#D3‚Í!*nsóî;Òn²õ“äh@Ã/ζæOƒâdØ1ì¨bm&fø -±d‰R=Zkó™dþ “°µõ&`ŽgHêßÏ?$š¡TÈOì­­¸^üà:ˆ|ùzjN¥é«Ö~þDÔpXgðÿŠ©IÍ endstream endobj 2811 0 obj << /Length1 2148 /Length2 16382 /Length3 0 /Length 17674 /Filter /FlateDecode >> stream xÚŒõt\× ÇnlNlÛ¶mg’Ll›m7n¬¦iÐm5ll4úrßz?ïÿ¯õ}kÖš9ׯuöuÎÞg(IUÔE-Í€RŽnŒ¬L,|qE5^ ; %¥ÈÍø/+¥ÐÅäèÀ÷¿¸ ÐÔíÝ&aêö¦èès·°²X¹øX¹ùXXl,,¼ÿ ttáH˜z€,ŠL9G +¥¸£“· ÈÊÚí}—ÿ,4æ´V^^n†¿Ó¢ö@¹©@ÑÔÍhÿ¾£¹©@ÝÑtóþ k77'>ffOOO&S{W&G+!Z€'ÈÍ tºx-É(™ÚÿÆ„@ а¹þˬîhéæiê¼ì@æ@×÷w   à}o€º¬@Ù èð¯`…0þ}4V&ÖÿÒý;û/"ÃßÉ¦ææŽöN¦Þ +€%ÈP–R`rórc˜:Xühjçêøžoêa ²35{ø»pS€”¨*Àô]ß¿Õ¹š»€œÜ\™\Av)dþ‹æý%,Äíín®Õ'rš¿Ÿº7óß×jëàèéàû¯µ%ÈÁÂò/ îNÌš gw ¬Ä¿#ÞMlV@7' 7/è z™[3ÿE®áíüÛÉú—ù½~_'G'€å» ?Èøþƒàëj긹¸ý}ÿéø_„ÀÊ °™»Ì€V „?ìïf å¿ðûÍ»€¼ú,ïÇ `ùëóß•á{oY8:Øyÿ ÿûr™õ%Ô¤Õèÿü_—˜˜£À—‘ÀÈÆÉ`eaçp¿/üÿ—å¿úÿ£ýo«Š)èßµ±üa”u°tðþKÂûÙýG†Ç¿{‚æßãB øß”ßû ùÓö,œ,æï_¬ÿŸ›ÿï”ÿ=ÿËÿKÛÿßz¤ÜíìþöÒüåþÿñšÚƒì¼ÿíïbw·÷‰Pt|Ÿ ‡ÿª ü×+-@îöÿ×+ëfú>¢Vvÿ=D«È h¡r3·þWýçÞéí@@GWÐ_Ï €‘•…åÿøÞgÍÜöý)q}¿©¿]À÷Qúß-%Ì-þš96N.€©‹‹©7ÂûÅ¿#N€/ëûpZ½þîk3“ƒ£Û{ à]ž?ÀÒÑá¯ûäâ0‹þeúâ0‹ýAÜfñ?ˆÀ,ññ˜%ÿ‹¸YÌÒ€Yæb0ËþAf¹?è}wù?è}¥ÿ"³ÊôΩö½sªÿAïœÐ;§æôΩó_Äû®Èôz÷™ýAïŠÌÿ‹8Þ9ß4û?ÑݳÅ?à»fà?à{–ÿ…œ!Gw—øßK¶ú|ç·þ³Û{ÍÖÞNÖïowèð½tÛÀ÷Úíþß‹·ÿYßKýCÅùžêðÞMÿð¿×îøg÷÷dÇÿq¿WïôÇýNæôþ¯á`´tûceý·õ_ãý_ó{9½µã?NŠõ]ë?N‚õ]˜ëŸâþB@*g}çøÃøþb0»Y»ÿÔ÷> ÌnžŽÿHxèþø~6ÿ€ïò<ÿ@¶w>ï?õ¾Çú]þEö?“eîîò®Îíï—ï}ìþƒÿþk½€æË Žæüa6aõ¢žŒ{‚³”{Ú™´Œ¾Ë.î¿‘aÓhërC6]îDÓFzQ×v$inEVH^|Ûša#¿¥¨¶?ù='©Mïµ#,MaN–‹6 Á2jˆìû½8ûiÛB¶—£,tvçAVù„ñàÙ/íÕ4ðyu,baOu¿ŽKñùó cœf¬Apùe‘YÞ<.Œ#ú…ÊÜíÝ,zÁä‰\=‚ÿI{©¯Þ[üã¼Ïzµ›k7ž.ä-úØ4•¯Øaº΢oEéÚà’W›@)IÁ†Œ5FT¦C¶œ:ZŒCk_ƒÇØrëna Œš`c7¥¡²ÓØ…L«®Ý8íÝHtØe)¶Þq§Õci“A¸Â;Óô˜ç&Miøå9¾®Ã×Ä^TP"çy>^rš”)+m³ýd‰§ýŒó"‹Âdë!>:¦m¼ÎÙWnµª­w›¡}§ü°fH*Oæ5Ü7´5íâ~"7W+,5¾Âuü(—‡ã&Yr)fTî{»ÝÊ[ýس$ÕË› f:ú24Tz6v«aßòIìÅn_æ&·pTRS?LO*¤±ÒDõÆ›ÖdcgíÁʈ'%›Qê¢É8(ðFãukuÊ!¯sVó!Á·g9°ºé>%;íCØ>÷/Š×æ½ËLeŧÏÅÂ9£04 ˜QP?+ã³á|(  æñå•äžSLú«Jfü´¹¾~ê/Ä…‹S!@åRú›CÍmÒÞ±–â>¯„P¬~¦#rEšígxõ’]Í¥Sf&KïFlEpcå§° {£ü0ˆ/Zxr"/£ÿ俸Ôþô€E=ØÐX¦¦nTXŠ=«2Ú’e)uû«–¦+ ¯·ù™¹­»2,l³zõ{Øç%1šiYB*X‘^´‚ýñ]ÿ(ÆíL>ß=oQ0Нö|P!QÔ?üËfË1lŒ ŽÞú¿ í¸¾Ó‡­¶} IÖZÖ™SÝ/Z Áy¿¸û'—“Zd½¡'f¿¸RÅ[ /*©2OÍòV  Ϙœ÷|06 ˲ç_ápO45Ç…òr©!ý¾§ †$ÞÝ‘èN†‰†+/q¯‚ê˜>Ýaþè#`«a÷=N/wÛôi=kqU¨µmcçuˆ8néK˜UXjñl¸ !kC`ª¬=ïoR“'=ª"Í"4,uÝ\ÕQG ÚÞp#üâ÷C$é2!ÀKCŽ0ß Óå~1à—’Å`‘a:Ö÷ÍdκªÏ‚g%|3PóŒ•ës>Ä$\(Iy¸PVkèTª;õz²ú-Úi&Â_(ú>9`Ø“îª €OŸJ†^OÄ!gx¼® ‘íïÞþìïYÁnk«æÀR:t×Óû"œ‡¢ æ¤zzÕQlýPLðÆïØüÆH³Ö2Ž·W ÿj¶ŽnÚG/1öYñeÙˆŸjÅÁÝJk«b½øRе€®®„Ë 1ðÓxh]>!̵åÓfVzGaýÈŽš§œü¤šÓ]ýåM@Ä9À–±ècœ&Ê‘ µ¾ñ'߯øvrQ†™Ó–ä2ý)& Z ¸¨¹…Î+x^Uކ¥±üü—Ó³¥—x9&p»¸8ÿ³^o²ûÚnRcò•r/³™{'N%ýW:5o׌TŠc>3æÓ&€n–èùßP¾–Ë›™Üµ³$÷ðpÛB¹´=•4KàcH¸˜ªðQÝF\DmÒb“_hÅq-sí¢º­¾ Nÿ‹}iê¬.ý†0äDŽ!Y~ÿå[Bº#%ôšÖ©ÁC×ëÁ@Iå˵D&K¦â.¤i‡4Sæãžÿ«àçÐÎçâ#ØE÷#¸Cè¢5ï|#£üœDá ²8ц¾ðøØ® ùWtkãæzí¹5çýñÞ5íÊ#P6øW|Žh×㮼*²jæ£3†é5ìÏ0;‡>ÙùÇ{û]Z!½VÅv-x«<ÆmÐÒ66“^âRÕýÅÚd¬„yT)Z8"þb<©Úå埾¸BóZÂYY=ÃÜoìÀº.¯ËÙ% ú{éß‘2é‰[­‹<®V“ŒÝBÞðzLKÐL[XóN2Ç8ÊOsL ×aÎ&`÷Kžw E¥~±©Î⎠å+¼Uäæ?Ÿ"D\W@ùÑü‚Ì`Ú" ¥‹ & Æ¦<Œ.R FÂA^à&„˜ûä$„öáJÛã;+l碒¯Â2}½PßKé5=dßxzúíW>ÍøÑ;XÚcë«Qòu·•¥ˆRV$ÕüZFvÿ¬´b’5 LuwFC\(º t_†–@­/Sí…$›e +ÍßûÂHHéçô ËnhNÉt"A½”u¡©åºC×J‚Þmì& 8î0Ñìø‹m£Ï+í·ÑuæK|œ!#€àŸógT4½ˆc4ºLÌ8·zßµübbè¹E§Cü9>Ã~ BxÚüÕ†´UïÝц±:ÃþHE»´Ã¹D¦¬é”í7bßT$×ø^þ±¹jªøª…¯Ñ$¼a ÖËZ"ìÎϼÿÌÙÑTÕ}I§sÉWwÕè‚™Øef…ÉËŽXFÑúa‘°‰lç‰Ûú­Îš_¦·`äU<Þ[Zø2´šD}²¿“y¾Ø6&ô«=ÝúñßLøÀÐË䌖êèçHA÷lbcÜ~… ÆY™ÁÉ,ÓŒLбËI pyè äÃé“cêŠþf˜÷óØeJŠŸogÇL«;Ÿå~¢@?Bm–]«ŠlC~y~D÷Pa1 ÞèpÀ(:c¹-hä ÞŸYï–þÚm‰VŠËñâ­ªÖ±v¬êÌÆŸäP™mô™ÓcZÖ9Û™¸„³5ŽxÖõ)Å W±3AŒÎ™õÈÔ ÐC0(í#‡³ú¡÷F‡»66„¬²0iŒl msƒ°T:o®>¦Û¸¼ç‚F÷sf3^qù!«–MÄÐÇA÷¶Ý•½cØsñ ”BŒ%[{Pž*UQV¼¸oÙC:… ÙÂD§:rø`Í~”8×ò/ç¿ØE\õ}÷"Ñú½›ðÒ\±ý+å`üœÓsvªBuåøT}+Xz"àªþ€/QZËJ.׺«8à•K?@µMøÙB#ˆ©(É:o0Þ¶Äiݳ¿¾a" ™ÖŸ3Ë©ý§_ˆ’z•VåÛ‹@±8ø SYÅ'âì£êŽìàÀ“/Z Oëeµöž3åÒ¡,X=\Øjº¹H¿d¨x­¢Â`? =.³ŽˆG´ë2úd…3š†ËØ"zÓ.tù½gC¬±—Ë¿5<µCØDa‚¾–Öh?©Öözç“/d4Á’ñ5ñ >@Mðº®G0¶j´2mu‹:#ÉiˆùÈißOY$¼÷c9í&„bd×ùxž@…îžB;ûÿH/UºÝ,ÝjzÏ'”JߤŽ×‡€žFžà©ˆ=vŒ5žü ÜóÌÈ¢±§Òïæ=l®?ë1g2ã–„^‡ð¯éªÁT¿¢‘,™— ˜’DV3 ÷‚71sl¡»øXŸÖß*vL”á(FÛX€ù™‹4Y=ôh®lâuÓÄI–÷±6ªÜÚ÷@*ΖW Aµöþ¸ÆÛ‘FW:‰‚%k±Þ½†ü‚AY®ŒÇ/`ûŒ,ö|ò¬m~¨O¹ÑÑŠ¦¿Ýëð§ø¦Õij; ‡¿ 1…ÊÑ®—%ùÇ=u÷‡VÊ@]¡ßZíJŽ'ÁCK1a7vƒëÈp6ù‚ü^籯ý579?zÙQöha–I¥¯ÝÛ—,å ñÂiàn°ù®Ñ‚\Xãx˜Ó-ru†uYE­4SǬi¾úßì¸|ýiĨhK=±f¶Óä`·šäÉÉ„ü½×U£.Ad¶¤ª½´ ÕØ‚š~¾‘×ôƒA ÷¹ ŸdÔ9O$iMÛÐs›L¨»kíb 5;ïÐibRòh¾Ú¾’C¢ Ùgd¤øÊ(oßLÐE3bѼÌFÎ%?ÜÌdç(ÓÈů½it•N ²657c]ƒ{6«óN~1̦&oí„>&¯¾xã_À˜·f` ÏÅOÿº]=²x¢#¸z…+kžKR>˜Â!ì,´Cz²ÇC-®6‰ÔÈáDl@sí"­Õ õ£Åš}<´¼…5Í8t·è!rþûlØÍ°j”«™G;‚ÁÇ龎~ !ï3ÁcÆŸ~ÑÕßIÖdĪ^¿·Ž23÷î®ï…@[MÛ/S sNPXÆNò/ØizUÒúe ì©•9YÂÓéJ¦É``t»"ã3†"Ð…t 2¤Rp@ûï!Û†™Ù^z”ÓôaÙÔ1¶R'ÛÐXÿ.Ù5—2n¹NüÜœ©›H¨Ž}f›‹š±ÒTâ óÁéíÁ\`àGÅ’°ÄtðÜaÝã]öüÞwìì7±!iaìF²f²À ·^Éu\Úaô™±]/>GÓí£pËC¸º ª cWšÜ·o9Jé Ôß(gYŸ¾k@n×rñBz;IE½êÚB½0ؤ÷‚ PPj§8×Ú‡NØH½m:'VfY'{ª/ʾ‰šÅ¤ T^ ÷{f¿Žÿò¾õQ"cO M*¢7Õ=—%#ƒ×ªÔìòäî]ŒL§™ØÞÎoZªÃ½å€°Ðî„5;AGp>­Ÿ½pÛ<‘ªÇêÖLo.n„`\V"Þ0>¯T˜æ\Ñ}DÆTä·8ìfðL+ú©Un_ØœÐq-:ý:G{úà'»ë[ØšM ‚ƒð)ñM”2.›ÅÁùE ž]‚Àå32AŒ ‘üÅÜg=Z1й÷½9”Õ±í¶û‘kà«Õ’6ô:¾¤>‰Ž'$:ÿm Îo )ÝÍà‰ÐwD…°£ñ'ñ÷D}¤v\N“4‰jrTQ3å{‘>4÷<@íÛÄ_i’_•é0§m4f2J¼§G%è²`7qlÎ#Š ùdå°î 6›Ð;@c ½ ‹^¼Ç¬4ˆ6a¾^F*"p·‹çs3:ëVêt„§2:é÷f½@ªèJ4¨Òkk=c劽-Uòü#9þþj¼Ï#àì¨Î\Kò:Áª–•?ÆàŸGQ+~g>ÿBQùj1Õo½*AØ’í¡àÈ ¯ˆè:ÊDV ðö–a ¦-ûVBE½'ݵ@ä“׿yÞ8¨ê$øZ-”©À»¥TY"mšÄ"©¶ÄW’M0^«CYööêð¬øMâì[c‰~;Bbô, ŠÈ„Ñ—q±ÐœfvúÚ_QÛsm~ Éí¹_Ò$¨­UlMe Dö)>åò‡jJÕOn¶T.µs™»õÓ\ww7Á¨Úÿò§µ·†oÇhþ…ñ­ô…ÕekÜ!‚„6W5ÿ<0 m©ù{wÓD×±'sªïQûuIÒóVÖGYvþIŽx«íW††©ý½(ܼž¬žÕS UW¤ýÛD'áÆêô¡Þ1àÉõeá—B¾K$¥˜ò쌄>Ôâቧ’ÌH +‘e,uD§^œCpXNW™,³ãÙnÍbj­Ö9ë\FÈ#¾Þùý ³¯cá܀ݛq”»qê—‰½onut÷E<%B/yUaõÇ^€áRi|°íùDza«ìûáŠfy ºæ 7µwD^²Ën#AaÛj¾xM"(×ÍAÏÆiw…õϨ—ŒÃV¨“žT§£Qâ‰â¤\eÈÁõ¼}h™Éæìœã"Sôq‹Ï7\•£5THÉ…q Œ¥“uH¯+7:P%•íD/ÇÁVÕJέ¿ÈŠÞ‹Õk|F7f[™OÔD(™çŸ€‹ÍøŽ,ev)5_—–Äsˆå SÐ’!K” %ª0нM¢ë É sdú•nð[ýlûo*AWÖýÄWǵF‘xŒ5Ÿ¨ûûõT_‰4t­EÝ3xÅ…œÕgèß ®»¾bκ? mðÒZ,_uÅV\Žã£OÃn¯@]¸£×œNê±0U=âM…Î|!¼¼^@sCµY_ñÈÈoÂÞÊßÔ˜öé·4ÈMžåèšCè*j•]ÆùY;¤MQɤtÌ:`Ù2”¥è;D* N˜C´º`4¦!ZoòÄ`¥ ízÉÓEcqO"?®w)óå5îº4Åïó)–ñº~Fz /˜v £“Hþ­›iŒ8+&k&$~ Ô?‹o™*7¤ !*" —çŽ!É›;ú}8¬f“”kË&š#´GEjÔ¸~ˆ§æ3-h‰õ+öÁÊFt=…Ú+ÒLLÅB n§Ôh&ža–¥¯Èc~Ï~ QŽ4©N ¶Y½b¸BPqŒ×_‡HU}û·(½R¨Å1ÙO0).xÉÛdýs&”¢‰Y=%¥ ¢Þk\¬Øb?ô ù!Ι&NùíßX³Bô°¡ôíÞó"XÐyñSbógúº$_;Ro᫉MžÑbÓ¢R“.Ç“HKËý*oÕ´]¸à-(Ðlâu§ ˜à^~Ì?¼kNp`ݳ 8øL¯Õò¶‚Èíw17”ë!^—#p={=•Ý锆mÁ¼Ì£ó²Þ´Šçzx«ezyêÙFJ&ÑØ/?M\]-ÎçÜ| e Vφ¡Æ¡BéŒN2èŸ6ìÎ3ÓÞ,"ý¤´Qê´ŒeÚwÆ’l™Ða—°îÐ>‹ )‡Ôì{(îÂwYM„¶7w¢Š %X¼ –tˆùs,O»…›Ç—8É^\s©•¿UÕí•`'O¿6Zoó3:šÍ`v³Ÿ.¤*É𾸖pré Çqwï·D°PÜIDìµ–T%V²Wä}Y¬ì:ý€ (¶T±óçbS<¿?ΦØBpËé1;½ ‡òoçÍïÆcL‰=§Ýß¶È.ZPqš Èv½WRI¯‚“}Û…ò˜g k ˆSa?š \/€¤1áìž§.?Ë©/ɯ~võØÝl`È‹d÷v{àÀ…¬/¿¨e•¦8ïjÆl%‰ix'¬KÕ>K_‡+RkßÂ_5xä9x8§pãªuÞq÷ žT8Ø;é Æ5¤¸ÿ.ÿÅ3CUn NT°nÙ« .#W]<©êqtG‘¾KÝ{®ñU»þÑ¢EíÁ¨ð}ùªB62ÅD]Û0©ém÷vk—«˜«jý²Œ{nBêåȬ`X>u"¢2@ƒfó¿íÁñèÇFc¤ü•ü8Ü„’Ö¹›/ÁÓRNu ˜ÞËéÒ†€‚™òDªd¯G``éfÉÈïõ[KÔ½¬»ƒÃàDäúQÆn¬„d©;Š¥ŠöFQ•3ljYAô iº)³Ò?°ªGWVO°fs`ÎBm‹9Ýaöƒþ7W{+B¿¹)VÔò “7>©×à0Dƒ¤ä°DŒù%ªEEû6/󺣎â÷ùo—<²È ~7ªè p+3¡”•1{âi@5*FA>Ý¥C¡•šE2svæþÓ`ɱµ@ZŸÐN¨Ö¾'v™øjkÐnÆ«¥©ÈòQô` · œ¢d›|™èLJ„hžÂîgèé¶ Må hQ3¹\ ˜€Œì½G¿Þ·Ò ¬¦,õ`ôç¨â&f¶öAaŸPÚøŸKÍÐk&¨¶“WÝXWŒû#‚Õz¨[Á’\R6 6Ÿ*›=öÚ¼kvá>¬Ř‘¯5âŒÎÞw]Ðùl#a=_YR´_u7ц(4Xú/´t‡ W”Ô&‰L‚ÉÝ,Ú…qd~[3þ1j·luÏKü)vk•)ÄÕ¢GLoSŒcQ'F.ìnó,i?n¡\:ÉW«œnS¨‡ƒ˜I¾ cVÅÍ]V‘È@ÂpL”½"‚a-ÿÍ/È…¬Î'$‡^¥ýÍD| Û-Wç«ßT˜’¶7p–/@K°Êž#¸’NÎå“7Êt PÞ‘áf¬ÅÌ:HAhኆ L©=¹bh¸òJM6À»9=¿îœš\nÇ6WûÖ¦*æ,Ñ·RÜi5ŽìÍ„Àá½yNC<œ)vY/™…¼æ•±ó))aÏÓjW!U*9B„ÊìJ'×$Ùïöa™›Úq½YMõçñl:î¤-²â(ãÏNaÏó<9"Q¨Ø@¼òt¿{®ᔂg5ó/åS¨¸}ðÌÖC¸Kç{ùÌ'…Jc%&9Š‹ã& 徖­_RH`ü·tÞ¯¯Á8 BÖsá¤C"ÙRùŠ©?ÎO¦ŽÌ–Ÿk»NEQIã¦ç,¸ ? •¦;F©ZÛ’"D~úšÙÙJŠ1!lOMš2 àÔÔM•9òÌdØxÃz¸^›ýXèÜš¨“JÚtæbg‰o\bK‚þL'©ªÝ ¼œ;cbªÌ~<¡"¶”܉µÄ1Àiæ¡#‘seæü,€FGeUÕÛ­hñÛ þ[9/›_5HHeéUVå'cNŽa±ž‹¼„A ÿÒ¾/IÔðEs”»a•ÏD‚æ_ÏÂ,Úù„¯?1YŸj´³¼¬T¶£¹[WÓ}ñ‹o³°urQFþ¦Ä“Ñ µSâ[£™R´DqýìÏãÈ‘=’ ˜¯Ð1´>’yšîwÝNÎúF)qà§«2F¬Ë©cÿgÀWJŒm×ú uh”þj3gö$<-7ŠFÇ®´ˆ|º‡–ö#š1 06¶vß…Ÿkºó¡Yãyz“«ß¡,´…+ŽkÄ­¼fvµúk©‚dlš:ˆ æ)Ùç}ü›ø¾øidÍ”!ª“–ŽÏ(:á&­Í <õC´ÍÙRuÞ^\BÈÀ'û\×’üB;î”¶¢Q²Tòñ§ ‡ÏBã: œÅÃZ%È>nѨ9fq1x¤ÔLb0˜uÞ+?D 3‘óa=·~ÛÒѬU2µR³l%3þ¦¤”U ©êÉÒè×@Á‚Š}µ¨Â”ôâ Ý6Û’Ÿ.@ðøul)lìnBæå3á‘>>ñ%JwUÇ×¶Œæ,;¥h5rW°¿l^ûb*ÎQb‘*ýרB‹ˆS+·çI|H̆²hy‰Ä&ÑÖ­ëY{èþãFA¶¬w¿Q¸±ê×Äx¦æíë ÝÑÄoÙýmG‹jU ^ÙׯVc²œlFæ²tš3X‘k²mEÚí>_¶’xÞn™bKšÒ¥]Ù–±Á»´éAzІmAJ$#Bþt’ŠØIÉc[Æ=’š!gF¤xp¾;ngúÂ>Wm4F~]±fº$¶Kå¾Y»snºø¶Ž@†a˜%Í{r•HFBÌR§2Šâi3#µŒ”ÙI§Äqên4´lÐ#ö. ¼ n*=©FP=îç É¡¥€Ï‚-Òf„6æSͨ”pöãÄ– KLl;á§û‘xføFܤ²E hh’?µ:Á eæ N'j†4|º+z$þ,>§êœhpg§Ç–8ëVåþVÆäc¤6œm÷—ý¤Ñ÷çDÊ Ým ײÊQétµ I ¨ÎÕÐVsu€þÎlåcÅdj/Â4Luá=4FeÓ"Hn9ë’9ƒqlµTœá·Z&x€ê3%cVT:{yÝ5tùé IV\OÇŠ öà܆|,Ëö…Ãp_"6_iM¸ŠBÑQj¼ÇþBÑ·G~ÿ`ýÄÀUk WgA1³ÄÖ± ÃÓ…ú§Éºþ¨$ù×íyZ½4_“ž)¼j'1è´ÈªwxÓ‘~• ()k !}ëšå°ºoHÏ>C‘}ܳ vޤ–ttæCqX<”ÖhûH”iÄ¡¦éiŽ6<[cx—G­-¡‚ãdWñ·MqÔîw¹ØåTííQº¼ô^»K‚É .çË7Í—oÚe'uÏ.PW$¼Îé÷„ N6;S2цìÓûjps!Î ÷”[ˆ#_#“½‚˹«ð,É&(†ClnöøIŽ,pr}WÇü¸4ô×N4U:ã羘 %\Â1fJ’¥°d r9%-P_žñë‘ÎâÔ-3q’—wŒómó#4ØCw¸äÚ^B ?—cOU‡ºCòÇä£V]|@ ùuíë¼øeNÎrBUŒ›G°°}]:Yn8 J`áゎ¶MP¥–@Çë/<@×möEî¢0áè%mWy(°°Öq}á)ªGvµ<¾jay펠¤O&×Ì?Ó«ÍW±(¸ïؾè±+AåUÄϽŸ>¯’?6 3ÌÙÌÎ’Cqb³þ™:F-wÿ"¢^û«µŸ“÷â藥ݥmˆ_½8}ý2%ïõºçŸû´¤c›~”6.=ݬ‘iVœf+jM!ˆ4ÝÔµmˆ9ä5}¼0µà,î6Op›¨Ó¼b¥JÀÚz˜ãÐu‡"‘Ö0¼ö-* ½ç·°Aª —årÖ™9ú†Hé±q¦:7|_,ec°}’†û(Èœ±þÀâýÃå^fžò½Ìë~Ê—k·Ýa2âËÁä›Ì#áØòØ\èWär%Þ$Ö%Nà«ØbXûbzÜ6º¡PdñÄeQ¬Cy!ç!‰‚lŇ_“±Ó:+® á†P‡„#aBT548LïÌËߺ%l¬‡9Õíëö0 ÈÑM…}`4HPã-²NÂz223)yä¶ ´¶ïÛå”ý/Gí‚ü w—#É[ŠäŒJ2ùã¹ $¿4›}ÁK@(Æ‘%ØŸþ²,| %+ƒ•Dl'­RÓÐmePqNp"õÀM‡óÂײψAí'(@Ûø‰¶%ÉFÌîØ{$Ño`ñ£iQXmYæu+;›M­zÅm÷]º:žblÛEÂÚ³xÏx™—ÿ8:ùÖÄ<¹ ¶].çcZ‘T9i ŽSövF×ÊæQâäÅ!üè‘®éG¾Ùó³[ú/¯,0Ô’wjü9"7ßêî¾_b\«EÞ#^7„5ž_ [hþ~ËšˆVÌŽÖ9­ƒ Z‘ü%éïùƒkmü*ev´äù¥©nj^‘…£ã**+iRÎÓiØÞ!DjÜtF7…ú8m`¹ý³¡TÛKÂížÊIQwà®T5#_ Íåç}Õïc¿¿Øäm+¯‹Íõ2ÜŠ:áçÙ£2åð”FKU0†¥¨ˆÎ¯átðÇ<_}_¿»k0õ 9sã+5$ÍÜÃIô-1vqû¥Ðµ9Ûp´Ö.=͇ù¡5Æ*¶XØãL-ja”zÙ +N™¬=èI2ÛýfÛv“Ùò9ØécÓuA)k’àÛ—þ3˜þ‘!¥ùØŽœÚÌm½xŸG¬8oì$voéRµ_©mS¿˜ öu¯n`œµu¤,¯±>cò-¯Ò’.†`d*!ãôЛÉP£¼z.ôàv+fȉ€÷{x'ЗÃäZyËR×vgÜW\]:@ò'wr™Jjž´/™ÅÂZÞK¢²Vm…EùUä×DGÝpR\‹sÚVuÓý‚…e¥öZÍ'L¦2ÆZ±Há?+õºú«³üKhoámîà#'¢uïÚ †Œ,ôÀ´¸Aîø—K°EQõ[¿ˆû„ö—\ſ֫ …;¿×]'·3m]jvÈZ\6=ð` ΡNùcW %K*<^8:Ê VD1±ˆ²¾hÞoÒª 2Ð §îê8îñCM÷OxS¢ÛôAØÄ0heT+øúß×£¿=/ÝÑ`³q8¤Ê|VD"~B‘°™õkpÁ@>”À™Ë“Ý ¦NGXr=Ùk2 ÆN*6AÀãµ,ó‹öÇ£¦Ó®êf¶×Ýó­ 3Þo‰ù82äÚòRŠ{ë(BIÀU¸±ûˆMq>›8(º`œËBÏã³MÏ‚»³SÕˆ$¯¥û'`N ùâOÀäo‡4"êBµäFPš´ªoT/àÁ¼ r-áæ?ÑÌåŠîÕz4è"QeÕ NòO,S•¢Çàø¿çx*sû±Kds·iæk0ÓÖO/ŽYaYêunÏŸ½L°z8«Æ§ÑTiƒ ‡•q¥§ÙÄ¡·±N°¶‘uÍÓ_eðq¥rÚ#]iVWPÕ‘êâ!•½wE’›@¯ëËåö²_B+E©eyß-HâÇ„í‰Ò"!“•‘›¼ôyNøÝ=`ÏbT•(ú‹6T½]ý¨FéøÁ«×üñgÛm]*õ'3÷Å»çÑkiøi l™Yøu 1k_cFÊš=´îÎÕ*öm9ù–º„[à vûº7K¾)éd‘3í&RÞ;4yÍY„ ¬C®zXèðac¯²C‰y³~åDà_ e¢Ý…u)Ð¥S/B\x›s(ÕšSß›ž !ùÄ+‰;­'Àg͈ç×ÏT¨»‚²É’IN·T˜HçPû,ðË=Åô`X‰‚ì|9—Œ™²×¸_”°ó,æðÅ3àhƒµð—:g¬.‹Á›\? ßôp–ÿ]Czª)©# !B[/{ÜûÂÑ:¥­2Úl éèªrlj)‚6¡üën¦Öô3e3’9³¸˜’ì¾ä/‚ Ȩ`f>ä@™fò•7cVHJ–®à0÷OŒ?©ŠVÂOÑNù”À["\¤Þ&WjGkjžç¹ÈL]u‡,±t~½mâäaIàõO:ÞjHrD@Òq†Ã݉ÛÊ\’*ËDŽÓŒÕ¬¯ª´¨U?„ñaîª2%Á6ºš툴Z«•J!ŸŠ1C.>I:“gbZ£AÒS~= b{dò³¸Œ§õy;[>P3Çí¤z ÆD5B£?ÀçÛzËîy«ZŠ âýü9Yäç˜|8]0 ENN^K;µÐ5GüÔ„ß);5v3©F˜{âœçÔPfûÒ%uÆ'&ƘՄ; ºѽG7C²™§Çd3Ì›hV †üÓ"½TIZ\P&_ž„²{½©‹¯Í?Æ3Hé-Bnc/ŸÐnb}ðUD]º F#£ªEœí'­=î³ð¡Yæ ÞK›j9±@å,ÈMuù4Lਪæ4²~~Ák\Ú:V¥7‘qÏó/Âææ±„Ó j¼ýØFŠ˜2¥(áÿ˜“‚¸@ b^}¶•ÔKÜðºØ¾¢ìS¡·#<ãм–ºçþ°â@ â,‹u E>º VPsÍÛ,‰U^n'ùáÛÒ‘6®”ݹ‰Â@ê€NY r¾NN©Yåwj^¬˜È'•\öå[˜³ÉÅGî83ÓóÎ5ª<#Q„:“F~x™„-–Šõ>KU-vzrü^Ä 4—œ³ê¥Óÿ-HÃºéƒ š¶FÒ]7Ià]ÄËE,¦}À÷¡¨iå÷ÑÎÁ+KÓ7埿؛)’ƒ]›¢’ÎSçï÷L/7Ü…Aã%¡òÛ1*`òûø–¸gë2H[¶ÖG&AfàA÷¥ {%nïx*U;¤«]1¥Íl¿-­ ¾ÝøÄVÞpŸäµÞ.½åJ}qW¤šÊæQÚ±p×3JtJPIVˆÚ­jçPm-÷kv»brðUå¨î.àkB÷.ëƒü½5Ä>s5âi•ÂÆã92÷ÈWiKG[Ì_)îmI–SRfóû÷ÏNáßб‹ÃۋÀiQñæ±sVu›=2ͳt¿¥ w󦨆¹—bü˜‘TtOwlF(‘FMÏתK}›#&v ØŠ R/žšê˜hÓmwMÒEc÷{œ!-¾³´EMØå„º—EÓ} d^áû_nhíšè-RFš“›™î¡ý”·rðÑÁó( ý”ûj²ù³5mÕºã)ÏXƒ Hbš9úÙ]cHÿRܦM\# d,*Âåb"MçYÒh×È™KBã „ò§Ð_øAË».šté˜-w³¶¯?ÀŸÕOVßî©eªmßm¨%Åe¾$ïjàªá0tìHê,9%Ì­¾[Ý%Oîä{8BÙ«|¡mfÍNºß %E7ٜꑂìöbú[­'+æa1‚Â×$O©pR†Ô{Þ[ˆ€÷çÃ^jò¼D°-¦ä«êx4 Pãû@u'xÅ!žäúHõmgŸ²ÿápp˜K¶>jcWÛBõ#d¨bÈÄñâ®®OMQÂrÑåÜžÝO(>u×ýÌʦïÅQD¯4?Ëv¥‚g7 !¬T¶$8S™D(v‘Z¾PkVšz„ &­€‘%çÞž•`7\Rº•I@Èœ®¢@뵃^×TˆÔå†X°ýÀ[ŽX“¡ª.T?3´ž§‰’VBÿ8¼=}úÊ/9À&›v˜õs0ê¦ÝǪÊS¨N¢knÃkƒœZB"°ž¯@•ùë‚Æ#Xe¢O¶T‰u wÏ÷fÆÌ" rª8÷äÄäiÔóDEÍé1Ný,ÞÚáîÒoÙB¿q¬y7|‹0&“P…JÞ†´Aá ÁŽU¬<‚Ê@\|A_¡ZRŽ\ÙÈø ä™Ñ°ÈžLSíöZ[9‚\ –×Jô¨‚ê܈Èp¡€ ;ÖA”©Œ´ÒDª;9Ò¼¦j-º~¿.æŠÈÜŠÃz÷!Í×Vû / Ãà) ŠÃf­yF$“í,ûÏ=ÆØÙ‡æT3•\Jž$wÌß)] ,BëôAxˆ¯<4ð®o, 4£G'­é·³ï¡ìM àY]„h¶t‡6 Lß„|-PÃì}_&g·øÝ•ØkGÏT‘áF²ö#q®4ðe$Ì1×BÈþK45­OÓ¸%µˆbfsŽåÁ«Y¸ÒŽÏä]¬Ž–íÔÅhnc‰×3pÒÿ4žWŒü^ ˜#­NÔðA?W”[Ø™š— Ö‡` "ŽœwMª³…rIV×9áè²÷[ºwñ‡E FÍÅ9B#Ï'Î}Ñ1Ì;‚˜Ä³bMJÍxö¥<~Q΃ý®ˆ ¾wl#d=$ ?fm´â¼\O{Ê3Žƒs 5lo×õº¹:/VÌE=²}£xÉ©ßú:ghcÚIË™=~ˆ9XžŒaqõrT˜º¸n°‰ —˜Ìâæ€2b¼3^Ã3*~§Õ^YÒÔüBMÂ$F4ÅTz͘å"¿`Û: $"õo²&Ãuí1ËR;(ÛúdÓq¹3ýÃBs{YSx{Ü 6§Ç¼ÒŽtáS›àHêi©K ËPKÉfq¥‰ž8Ý>3ÃbÉŠsáŠèjFH„O÷,P󌤌¹Á½8È ‚þÅÅdÍ„X¹˜)œ]$úª9Èz•'Óç Ê]—x ûó$ãÀöŒ JYï,Þ«jö­s—h¼ˆ* äçyÐ’‹S¼ûÞª#¾AhÍñð%e§Rb¾k_ðfÚê žDc茯èQzoëŠØÚ‰,…²⣼ÿHÚñ0Ñ­·C²ÿ>…ÔÀFJ²ÀB!û¼Éi°Ëø©LñP¶¯úP°¼ZŠª!‚LkXmŠ„z½YÉx„E‡,ÁmL½âGÁçýNÄ+œÀãé–g,ã !Ãòþ~¿Ü£•iïºxS×ÓtÒÍŠ ˆª“òâÖi{* ”ø*¨8UT’…»†‰ŒÄMha·9Ä |B(­,°­% %¿ùäÚÛSjCLºBc+m$u({½<±'°Êž«n¹á ~šÿÌ&«4dËiY¼ïšoÈá€[0Ô50ùMìØ*EF-þK²!«‘Y`ÚÌ$Wúز@4Ícjöýçb ¼‰¤½´—Ðx ç·½†äєѣQγ^{bjZK[ÖímxaKý<êBCvzt‰3+yw¢o±¯ùŸû\U/–O-PËk,7:{›úÅp1•«Éñ7L\ŠrÅŒªÛæVšŠb\­’ZÌ^C™) '¥‹‰Ž:E™Q…1[U B¹ÔÊfoS“bRkö²›þª+ÊoÅ-ÙÂ,Ú@ÿªmûüŵ¥E×b9_É|(DåCGi<™ï‚1gŸÌ©Ê{ã†[ë¯ðDµh¼å ×ëå„ÙP/Îe¤ ¾{9Mzäծ䢹ñòÁº‰}פÜõÁ;¡w°%dEV³›­Û:Z_^+!ËUí9è‹@ùV¨P„á]?¹ÉƬ!4Àf|1vO³õPèùܘ®b?í¶_½¶Ý‡‚N†‹§ŸpŅ ¤3‡Íš‹ÎZVá]£†ü&˜€¼‰³ûRSèA?"Ê̘³×Pyc¹OŽãÿQ“Îû^›NJ¡;Bñw-‚Øï­'½¹23 s\‹? +’©äfÊÛtËBãàh¶¶ê`âtˆz‰%_©"í.õÜ|$ðÑ›|&§‡bSÖîüÊ}‹Ä‹Zžh‘OŽ5ÙÑÁr™á,NBöFn7"ƈ”YJ)‰Æém Íf{€¯ðH#WF¥X±¼Lé¿@tµ> Þï|À·}9‰’4¬ýNbM?èÕÀk2»ÏΞ2¿3~JAœntÈ­¼fŠõ2¾aG±–³ºæ÷]d«¶}í0Òc[Š»²Ûûí5-QÌç#×C‰xˆïw©Ð>;*«Q-’T8Ç׌#¨g?0¯ØÇ“À4" Å\D÷Ë)˜}‹b?Æ:ë¤cLÆü=Ye×(aX-òÛŒ„YugÑÁ·EŽŠ>TRt Bû𗱡´²Ïz»ÐµÃüA< &·üGÿ:_ùÝëô=¼$°XHÕ_‰J R¿º§%à BªB8þˆ~„÷ÝÁˆ×E&ux=§{BÇçÇ 0ÞI¢ÉÈF¡‡¹ôzö >kª¨mUšnn¨brŸ‰òKÏ“3?ß¾µ¶U,°Ëßzî©=*Èb½¥¡º'?Wö™ÕY&-Á`,R*ãÂÉÕ-e\C$fÚaƒ~¾›ZNÎ,ibtÇ ƒKï¡üF»¸-<?7<@ãPA]G:^–—%¼14ƒ88ÊÊô‚#Å_n®KІl3í._žÃ·¨ þ^SOx®111Çß@1É4*`Ñ©ÙØÑ;AÄâØŸ·ÙÛÖb¾íIn͘|Ý\Ax–7̈¨´Æ.©Ió™pH\mí-ä’æ`÷ÇEï%‹$ûl¡Ð•Ò(,oŠl-ã—üo êqŒõÃ猥4á)ÀÞâÛv¬æzb(m"tGBYÉÛØE8ä<602d\Ϭâ8„µé+i%§Öù7Gò†ËZx»Úz‰¨ÖÌÙ'¦GýÜÆ®©ãÞJ±ÁŒ†çB¾Ò½`Š·èƒOµØ*Œâ°ö£ß—Jvfˆ.ðæ¯YØ¡'¼EôÅ?ØÆ)¬ƒéx„È´|Qš@ðªY‹týi‚… ~7x-þÒˆ>JÕǸÛV: d^/=šLÔµ›·f§m: LD?±jXtc#ðèFP?áèuL0úv`¸—ö[çíÌÆïÿvÓÈWCyÅ[§ô´Ï®Ée] ?´•­¿•y΄osyH“!Q€ÃÑ%KøaeÛ·F’Ñâ¸ÚÅ@ðêŽD¹¬8²M˜ý>pËu8ÐYœgÚ _ÅE0°ÍÇyZ0jeþ¸ƒB¨¨¨O·Ftµhš%C¯ ØG:îÚ´ð„ìGËÄÖÿÝxôñÒ4Côç¤#´;ûLï|ýð=nORæ1ç´.¼X™Ä gâ¥+VÂJ$¤Ó˜ôç|N9„ôªŸd×ÉÖŒŽ±’~aú/’ ?‰ìÉÚ€Õ¯AqùÀ¥-R#"‘Ña`Å3gŽ4¾Èé…ÑžþÔ#„4²—Üþ9B¡Éïî"H¥úµ>"«º{ÀÆî'¸³ƒ“¤”“âÑÅxu–BûÈrë!ó”ªL\%Õ«KœT’—<<¾\ZMŸçgŸI†C;è,¦|9žKpë(êW{ñYƒ"•qè ® ”00ÔØæšwuvãʤDz®ÊôÈTšw‚îðH¯ó$„wù<£Xðd«Âã\¢p¥Ÿ»?°œû†“£ ³Ô|€XÃîx$oØRRD-¨”âÏdAöœþÕàÔ]°ÞP’ »« ³šü<²G(ÌœÀ'K)ª"95…ŸÅ™»oŠ4zàBN4å“Á2ñ¶í¹\Ê/O‘0µódïÒ=ûÒb+œuŸ¶ Þs‘º1¶.¨—W¯Nu±Ö>¸IØövxaŸáéýå§ îêÇù]qC;ãx©u‹Â=È›a}/&ï( ÊIÛ=³èhêÞÁpyr CÉC¦lŠDS­À"ÊÉ/¾dh–gª/›Û•Œ°Ë2iæÌþßoúloòýe b€eÙLêÖD]p{éÝÀ‰Ã} ?DÄÜŸ&ú8nê/(!‘Gæûsá»nË\üÁ ²ÙD“N誕XÄ3y2îW.Õë„üœùúÊ`iÊvOí{Ÿ ¤p4Ëÿ'rü˜UP`qMÉ'wùU³•ƒ»Ü2Q:%UœáÛ];ioÀ ™ÛÒø|^Γ3³´Aã¢fksz4¦¼¬lãv*¼tüÕW|q8ÔÆ0h·´¯Ï†~ A÷n©Óõ¯ vÄ¥é÷פüƒ-l²K40aLFX=´,a›T µ¸µYêL?Ýî+y~z²f§ŸzMô¡•ú“/Мdfi(­.àN^UwX%õ#LMŒ´Þ¨îµÿÙùp'UÇUÁÝ+¦Ò ‰q>óÄ¿¦]ìî ,OÊã §÷æÓ·)R±ˆ%¿ÈÄaØÑÚ£®JžãC mê˜Ì+<[dÉ+ÝÌs“˜üÍûâñãZÇlð9„NA*Çxc™Þœé³˜Á]Ì`õÉyDϘ1’™é†:X,“ñú ƒ ¡Ñ¼Å1çhU|*õò»„V1íŠLr•ŽáÞÐGT;üÂ=JuƓɂ|à0ïÍ+hÞŒßllµžäøv‰‹ŸÉz|(¯a”u`¥¶1 ÞöðùÍ©åŠhW™B–’6Q™;}î;@K$ËB‰·XX D„Õn8!,é‹"õ^71’Qƒ“Ö92 ¡ñÍTÞ ®:=´>Úd¥§8–2Šx‡.ö„¼-!Yr=wÿ‰ÔþO£+Žrë[@;ýùõ”Ô-ö>xÉP0­ð\Ž\ÃúímD9à哎Äykqˆ7¨º¦^†ÎÇOàIýc_›³«V èù~€¨RPÊVžNoûVHΙÁëxÍÆÕîËsßïòÙãœÊ.ÆäÉ»ŒŸóW÷œrP4±?H®—­në«V¢)èPr-Êe‰Ô@a©¦[;&-½ælrh@ÉD?Vi%Ž”~à·ùaÔ?‰!>8yB¢1 Iƒ«ñõ.ƒJæûegƒTYE#ÞѬðn¯qÉ^=nv¬ÈplÐãdAšÊõ9 ù]ÐììÜSÔÿ|e=1h¬9sVêáÞ´ëãcoµÜ$¡Aö„ >µI¹9{˜sisýmß>nE.ÝåÃиŒñB¿¶(Üëââ”?µ¬L>×…GŽÙ7ž CÚ¦$‚ð‚hÅ?¢ø}µ‘ObZ`V-m#p4ÛØCÙ6RÊ {à§EVÚ¡aŒª­Æ6¸¿|UÅ›XóÀ¹ÚhçþÏÉA‹Qøƒ¯»QÜ6…ÓLòÚE0{´ yFK endstream endobj 2813 0 obj << /Length1 1606 /Length2 7387 /Length3 0 /Length 8424 /Filter /FlateDecode >> stream xÚwP›k·5ÅÝJÑÁ‚k¡hqw H$X±âNá@q-ÞbE ŠC¡P¨Å¥¸»ÛM{¤ßùþæÞÉLò®-k¿k?{?3aaÐÖ㑵ƒÙ€•`P?/P ¯¡§Ç‚¼@ . ‹>áþÛŽËbö€C`P‰ÿˆ÷ƒH› Ô€Aªž.~A¿ˆ¿¨Åÿ„yH@^;€/@ÃqYäan¾G²Îßv[¿¸¸(÷¯t€¬+Øb ‚4@G°+²¢-È ³…€¾ÿ¢`—rD Ü$øø¼½½yA®p^˜‡ƒ47À‚pè‚á`/°à§d€&Èü—4^\€¾#þ§Cfðy€Hƒ Ä …#S<¡v`²:@OE å†þ¬þg7à¯æøyùÿ¡û+û'ú+dk suA}!P€=Ä ÐRRçEø ¸ ¨ÝÏ@ †Ìy . dÀ¯W”du ¤Â¿ôÁm= n8/âòS#ßOd›¡vò0WW0Çýù~ °-²ï¾|®3æ õûÙC vö?eØyºñ@!îž`…¿b&Üß60 Å€‚°;ìcëÈ÷³€¾¯ø—“ÿ§©!ÀÏ æ°GÊ@ìÁÈ\?8È @xx‚üþÓño„ËϰƒØ"6`÷7;Ò ¶ÿ#Ïßâ0"ÇüùùçÉ9av0¨‹ïïð_GÌ'§ª¯ljÈõ—äœrr0€?€G@ˆ ‹þMóOþÿ˪ ‚üõrÿA¨µ‡ÄÿÔ€lÞß:¼þ ö¿¶†ðï š0ä8ƒì¿§ß( ´E~ñÿŸwàWÊÿoô²ü¯Óÿßo¤äéâòËÏþgÀÿã¹B\|ÿŠ@޳'¹0ä‚@ÿ;Ôüç>k€í ž®ÿíUA€+" upù§‘¸Äl§ AØ:þ9EŸ’ÞkÃàŸ7€‡ü/rél‘· yZ¿\`äNý»¤"Ôf÷sù„E /.9aÂÂ?~ä–Ú}~ 7€ C SHy{˜îÏ3ðÉþ4ý‰D|ò¿‘€Oá7ð)þƒD>¥ßHÀ§ü øT~#$‹æo„dÑú‰!Y´#$‹îo„dÑû„|ú¿‘€Ïð7Bršüƒ„‘õla.Ȇþ´ü«Y¶žÈ›ä×@#;ù7þumÁ>`[ÜÉq˜­d˜SmXëy,7ÏÊ'ÌùŶèD“Þ(aë÷|?Gu¬Ì'_Ýå¬í*)Ó´'Ê#¾ŒûÓpîžû˜wfÏ¥*ç!P{—äöy .Ž:Àtv0j‡Ñ´è%’½$Z"k3t3¶d£ñëpÑ.ÁµªÕ¢›6øš©øÀPrJÌJƒˆ—ÍmÛB5a`^D|41'N õ0K÷ÔW1¹A…$œÉµÆQ]ø.™%d|œíÏîëM<|©Ö]-RqŸŠì©*Cîà¨$e«6ÂQXå„OåË“÷F»Qò?b~ÝÆ°Ñé>ÖÉIóB‹FÃzgkŒF½eø6e—^½)›ZL¦ÄáýȆ÷–ØÙ‚^Ö7ÙœP›J2$)Ô=AÇÖ¦WTfCê7zÖ'0‡¡dŠZH ´ŸYKŠ@ç\f¬"$¿"òû†‰7 xž´P0—æ¿8Äú”ØOÔéþrûÛ+kØÔ˜òE©òŸ\; é˜KÂBÒNªB'?ËÛ­i°®‹}PŒ•l¼M̺'|­sŽ÷Vxd´m Ùc=ì;(I§­}ÿBááz»ØîfyøhbÁ1Ío ×ÓËM‚–¿yÎöíùÓáêdËìKågqÑ6>ä5 […­–§?Åq'Ÿ ™´˜;²rã±¹7Óª[5Ø Xxj ê=»4cäjïàØ(«©e9]°F‰µÜ÷ljœÒbûTøª”p"z¥áKduÇ.Í­8ó¬e‡Í‚èÆà—ã<¨³×º¶<­N¸U/ç}:…lI7 ŸFa¸íʦp°Xs÷ƒ%ù½‰Œ±›Ö\¶ìSÞ·ØÎ¨3 ˆ«ïh¢/„ZÑ”aÛî€ÛÜÓöiÍåÕ?ô;iMÞõp¬~rôÅòáÊiu/˜åy§!\­‘z÷&mpcÜiD)\6ëÂmÈp‚s¯®Óú½^¸´¿‚í¶ ùæ–Á'Ô˜%®6ï“SëžuzíÌ‚u ÉÉÛ‰žâ­’(% (-¡¯£œTËê×w^qÛKé9»4À¿æ á”t\âÐ@CŽâïBh¼>N+±nΘˆÑ:eõ=õ–9i-Üìuͳ (RgÐõ“ÂoY2%ÓÜtdÔÂÜEOEÈêò쩦d²±8kDž>ï¿=vÍÜ “Æ–L®ŠH_¡)RwRÙ:µ°¯ì"´¶,K•Ð)¥É`Ý!–>ÖÔ £I @©ûjžûÄÄ0û¸0_ ÊLûÌ8ƒ«>|ôå¦Ð-»8RÌÁØÌñˆf…ö±?|Àëa­9ÿtŸúÅrkÞ©M•Q®†¡Þü×Ôò’2ˆØ‘Ð`_~[Š'z®bGYK¦³j¯µúBÓMávv5ii#åæ¶©hÏŸ‚µ°Ùýí‚îÈÁþzKMX]£sÛUkÊ}­x#HµŠM“ŽÉØü|¸d~Õù‡ •Õ×öûòO²Kj#%†S±)iGÉ–­# b²€ø¦ØÙ[ «¾¼¢½§"ÆJÝCVͪEA!¤‘& ds{×£ wög'ÜzeI, h-·âýÇ/`¦T³jzÉÅÑ n%øÔ¡|§bbZZ/$dJ8·Ì ¢3 ƒcù¼"}‰Z3}Í)N©¸RÉv%ˆ¯÷yè(–‘M~0”JOmÈ*ê^¿^&Âøàö0|îõ<гêÀ¦-ñ×À½z–^¾ &U'›bUJ–ÅËàžòÊYB@û§Ã¡x𲆠×Ü\ý5×{ǹÄý»“¼‰ÌsˆUuOŒ±l 'Æ,<—ƒÊÙVüaRéTpJžd¾š;]rú±¸Ãîp¶´LÏ·Ôa„¥ÃÉQŸ ™%¨€”0{ã†U!Ž…7¯êÛüc8Nêc:pÛÅ õÛ1ˆýûd)+Ñà‘,$žrËf€tº.=£ø-”jÄbºC\Z;œ2=×®½ú+Õëz¹AUçÌïÜ7EfL‹¨²‚dç ÐK²ó“œçsǸ׾ô˜&÷ôîÎ6%ø˜@£Q[«ãblGRïW¤©€MJjÑ'µCªþä‘.¨›!Û×iúü„ÖYÁkntsuÒÇd%îíÝò¾÷0\êE3­ŸæÖõjÞ?ž<Ý ´8¾ŠøtDàRôC?‰¶£†¡Aeχ?9»—þGRñ9ÃOàWkéâ1C½¡gGb~¢_ nó åãXž{xŒÐ&n0‹%ìRšù& Ãõ´nõ½T1såÔÝ]X͘·3§»÷c§KÆ8co->*Ncª`òŠ þ›lÍÆ soíǢ݉Øq‚޹F1À#Îî¥sžˆ×ÉVšëú´ØœÛí‰4³713JÌ_þHª*î-íÖïLªò´¶›9¡ò¬õC©ð¨6JûfÉÏ%ËÉþ™˜cÁÚküÅfB]úhEÇ·‡ø‚«ÚBÕT±¬{Hlİ f²AÝÀ‚éÜi\ˆ·sÉ&_—\)rüÔ§î$ìˆÔÍ÷‹Ò¬Ý­h^x¼Ã€ãàS\Ö™o«ê¯ ØH®zîqr‹¨÷º9$Ê|Ó’HÈ!mÌ'–Ï)}ÃeõM>õ4NnѶe{@¹QLžkñ«´tIsh$DWöÂel 7v±'_©–¤V†l lP½Ó²kõŠñnh?+¡n»–åõ8 8@c@„ö[Š IzµmŒäUOsÖS'Åó£Vã†ÈCåò<•oÜãÒìÛ6gl¨=õVk;Ô ’¢ªJ¸/%ÃNÎàÂSÅ736^î¶b+t9š:ÅÊ ëŽåÁ­Ô…€³Có¸7*Æ,\ô|¿óyzR;7Jñz²ûGWMt? ) ÁN%Æß-¾zôÎ>ÒdÃÝiX±2@׺ºWN”Ìß6GÔNóZuÌ„!úè#Ê;Cj*5G’E^8;…Þ¢·N·,Pz,BȪÂNiß"Jðê¹Ûú)Œ_|ÖyñRe*Ç:Ûé-y‘v^ÝS’£ò ÙT²¦"ùõóg×ë»ÚùSúiæ™<)=®Ôeð¦;°A_œÂ*Ôàc«©0¿èüL`Û>ï‰x6ÍýöZô2§.(ñÞõE‘x¯«¥ÜÖOëUÖÙ=vCã¹c¦ÄxÎ×NK.QÍcÄìâCüØà‹†(ø“cJü¾òOþªAe„ QŽòïï‘5èã!rBõen&¬¥,›ç1;V°Ðëu3‰Š|Gwî…ù`œ 2%´~°ÏÝ1Y}l•wíÈjÞ}Æ<ï`”Qe•ƒ²ìž/$9b¸3•E9ZóE¤ù.£V å]ï€ä;aŠHB¦Oid¸NâK<¯WÄÑ*SϾõ{ ê¼'(?/ÉIP8ÐÛ¯# *Íëδq°¥,êQûÚáG<¢Ä~HS.ôéj±¶éK¶®t»¬€ê'·32Bï5¬6K—§µ%}W MÀØ-ˆûuñ>]Y_4"0”¦;ËHêˆûz+ˆ½¸ðÖqª.5þ‘ÃÝmß¿äkÝ«º÷ñ˜fŸßJÈʨtÂ,RT¿~HѰI÷G¬ih3Þ4qLtåŠÜ’ƒÐÂ>Ÿr¬èYÔʾøÒ¯¸‡*h±¹ÿ¬ Æ$xDD;p*L àÚ“£f%ãð['ÓCßF ã/磦õìB”Å@ëLŠ€Ì Ç* xè9ªLGI>Þn?Ã=ÝÙÍÔ@ªÔФ|Kûv3ðª˜si‰Êgfë~^tŠ·{Á_Ÿ ÅME›Nò2H'ʻ䨥ʙ· K2‹NšN¹Sêò M¥ªÈ,§‰±‰ ®w œùÂØ(÷aATç•™ ”ä‰+×mö%›éàçJu<Ô;(ÁÔÁþZÃÖ óL f\6˜c+þŸ¥;öV#â•m*¶èaþo³U2g…2KÖ×"îKò›%UÁÔ-J’o—Û»~ÐNï1Ó_ê•p¢+s åÞñÈ…ÄV©ºT}#Eì O>SŽ&–7$Šføƒ:e”€÷í%þÃûBÑGX& 8þ"ŽQô‰JJ”ˆŸX¼~º¼Š÷»óÏ,4†¯r¼ud9—±Umv"›±8RFRuðCF²³çÎÓZÄ¿Ê$RµùɈâ±g]2.½)&Ñß,]~ÒòZb×):qÛš,ß‘@¥>¡I¯«å9)Ë‘ì­àucx“¿"™´w%ý`ì×9°u@EëégÔ>„I.õ÷då1t^‹|RjúÅ¢¦n•ÏTµà7’s@§£9é6у ývçßBBJÈŽM]¬üØ)jB!FCø2‹MMMVÒ¥åÆ,d¶Ä³BæÔêÒ¬Hï,ºD°ˆQÆïHÓǪÄ»Êìš”Ò_ë\ßH$Ed‡lkÒ>Rðë†6HÊ“™R&†Œ¤ëe«Jùš­|mÏ£>ö¸~_–Ñɤìe:å” ê8z,ø†Ü5'¿Cæ•Óx’j‹¼ƒœ“KOto³zò¼C3¬ñIãR®·¤È'œ&w,¢Êµ&Ϫùî±sP©m­fô»1u‘µÁ¡ÑÞ*®¤)êÒd¦¸vGH6jÃj5ªcmõG:ÂôÁvØ<Õ_¼½Ú.d–Ãñ…© Œ$÷ÚcF¯¸§Íæx»ÆZ¤·Ò*²rT¸_Ä)5òq |ßÒK:™¢Ì­È/³øHªHLyÝbk¤¦4Ä:z+wéžÛ?ç¨zjµÙl›ôl ÿ8tt>t©PDå¬â~sWxÜ…Ô‰Åy$˜×VuÂ{Ppû¤3e=‰pðTˆ•ŽÆ9ˆ¨Xõ¦³ji¦ÒÎ4]½Ãó5ˆ“Cw ,G›² §„¥`Óæ?UB07£ßÂsÇpòd±Ó;ÕÆÅà3‡²ë¿qljAž¶ÔsùH_ú¸ ~eÐ /œÊÍ—·ŠgQ)Ùõž8Ö›æ‚ç9àz®MŽˆëаWvjwÆsSµTêv¤¯í4IŽ\Ï'Ú™ö’Ú^4P·œÕÒ;b~*z~ª%\0˜"Rq¶R@ÄŸÌ븰@Z÷Kò¥¿ÐX9,Æ–ôüŠ$Ìûú†ï€™÷×ÍV‹4*Æ„w A_*’}bV°ØA äNµæSicâÆSK²Ñ,wÇëuš,e/[*Ecï±á¬òèpŒ]M/ÌO”óƒÊ¦_4K+x”ñ'­’ºªFj0¡ß„ı_~QèåYçÿLl§ÛÞªÓ;]Ã*¾£SfSW•TÃ5!ÏÈaü.B2V ²n—$4_þ¼l=¯Ä›bóUnŒjô[Rp¨Ã¯ß5l3“a—Éqó¢W†å4q†'B¬*’¦#Ôu¿.¢‹ÍÍÕ+ÝïÏQÄ•-àÛ‹Î Ù¬ÆÝ:'*"m0ï‹_ kJÅ(¬’ ï?ãn¥<¾Fíh,½£—¬S)¢žeu??Eòl¨«Ì%”Íæ^«rø6Ÿ|×þ,Èl…qãÅy ;Óu´÷ªš%âû(½Ó.¼›i ™¥2‹öù‹ûžÃÁ,¬ضƒÆjW ãtž+$cØ=Ã%b‡I5¯öc^G$iZö/Y¨2~( žÔB¤*$µÊ€š *£øóWfŒrr®*RÇMû¦è‹õ—Ÿêº ”'N iúäퟱYqc`‚‰¨ …!Úúبn8x ŸŒ0f1ëˆlku¢Ëð@§²ë;ÀGïˆ5xÚbÂKçÅ…=cK»÷SñW.ª?Ãâû«VµŒ:¢&ôÕ¶Eº:¼%²jÛíšÊð®á¦^‚’zìÇ‘XÛ˜™3ºtì²Ý¯Š²Û˜©k'òw—aÍ5eIɪ¬:,”úVÑBŸèt•(Lð;¼×+¹™²Œy`½)°ÍÃTçÂï?T†™ë,X3)#ÆzÉúð¼ð¥ÁŽºØÞìÇ•¢p~”®¶ÜvÆê·cä?l‹LSÚäIŸ§Ý²qµ“6Û‹Ô å›ŠÇ9Ã0¥‘@„]d´<þÎèçÈ<›vÒÓØéÚÞj+Þ›É7Iã˜ß7+°6)úŠ-<ì¹¥åùü6ž0d•sûâÎ)„âË»'Hÿ¼GLùƒ=+,m?ýMÇ D7PŽr<þæ\ûA„Q'„¸b»-oÕ‘÷?–ŽŸŽCšñ.`9ÒfQý&«Qººé5IßÕ;Y} æ{•¯²{4âr®”v»{cLl¦è¥¿N« Ñë×Á—³Å8dùb—¢@)± ©È ~¼öe%ýÆîþGZS÷>é´&ò 7 ##w-¿!¢ bsµ¨É÷¢Agúay§¥”ÁYM Žì\$tšiA_‚!ðC‚‹µ&ËSÒØsÃÛ#XB¦u™+ôÏ(* p¢zè,Ôíá²\÷yt‰S¿Ns{8‡éå®°Q1íL4½tÎC1oG3ãtöþ#ù:g±ÅCÑÄ㳘OÛ¹u<‘Df«ñÎ~`¶£Q—aAn"ë"’‚ÉŒ~&âsyÉ’°±Í;/ÒÐzBÅïeQûKØ:R 6ØaBykŸf›Ê3ET¾óüPð`pí¹GÂJo÷! õmÖ&†nÌæj‚‘.ïBhÓóoº·9|E'÷üÍÓ×]]~¼~¦Ì~ _[UiŽÁ^‰Ý÷xØð컎®àë©u^|ßãïý[§°Ãá‚7–Á7õ$Äô÷8ê?üØÔ¡õsÛ]“Yt±;éƒ<ž<«h͇”ÑÇèI= ›Gݤ4nRÈÖ‹Pº·6Ž…bB,ù´ˆ2?i)Œ·yW3ªÓ&i[:=k?±ö+`Ôý‹}¯5çÈx'ÛuÌânöQ­”Þ·/Û>ùÌ@Fx!”’ßä“ðçÿx¹:¬&õmN?&­~¼\KÑ]7;ÆîžO3º÷ânÖ°ÀV¬œ2p=Z Ú5Ò$«g(§O§©®t­d¾¤“aèçÍjpüèÅkÛz!'Õ9JÇ|mJ0E Ú2ôrÀÎY´{¨KÞF\=̾P9¸cfA6s[ŒR²O!} LÔÕ‰«™Æ/ô¦¶gÓÝøè…Ÿr+j8»)IeÈ!r™A^[míÖcª|Íp•Óz4o>9Ëm%M€£·™õÈ¢öÃJ¢[åF³ƒ›/áfÆ–Ìk~­²<ÇÂvšŽ¨BÀL-Ö3jvÅ}ìÉ/\½YÂãNe^¼¯ŠsëGrL±º4òšK” k«[¾×Ùd ãupúkiÛ{¼ÝØë¼3¬*3véýßW÷ç{’JçêW‚@+á;t=æßH1Ð(ÚxùêzrB*méHáùáR9ð=>Ïò3Ð&Ó´£Œ;'| Ïg)Nl%ü:†'õ–|ŠO—ýÑMðÔp ‚ðݱ\Η#aš\=üÏZ‡Gñ¼˜=Q•+ÐÛÌ¡šÁ.›mm•í¾%v[‚4TÏ 'r†±Oá=¹Å¢}†‡Šr)wVÌdΧD—Â+ý®40ëiܰcHüÓcñbùžRë»á+’áíb¨°qØA§Þ$Cìæ=ëͨÏÍ«±k|Ñe´Ö5c*<”l^óâu¤Ç´õÔ𰄌͚Ư›Ð¹\Ü7ùݯRŠÞ½?-âþ`.Q”|'ûfÛ´Ž`×ôÜÄ?{ÊjÉÞPbôšf¬ñV“,î²<€òÁÖÓšj×,üIõvŽû8¦§¤ˆïàðÌÌô<áØ}v›Ýé•„QÉ>§^1> stream xÚ¸TÛÛ-Œ+Zœ"â(PÜÝÝŠ H‚/îîN¡¸§@±Bq‡R¬@q//R^Ú{ïÿÊ÷­õÞÊZIΞ=3gŸ™9¿¬ÐÓ¨k±KXA-@²PŒÈÁ%RÑ2r¸¸x8¸¸¸1ééµÁ0Ð_8&½.ÈÅ …þƒ!å2‡Á1isœ¨…Ý@OÈ/ÈÅàæâø‹uH›»ƒ­*E(äŠI/uòrÛØÂàyþú `²døÙ~»$A.`Ks@Åf r„g´4whA-Á ˜×¿B0 ÛÂ`N‚œœ掮PQf6€f й‚\ÜAV€_’ªæŽ ?¥q`Ò´mÁ®´ Ö0s8€-AW¸‹Ä ä€gh)(Ôœ@?ÈÊØÈü_¸?½C~;›[ZBÌ!^`ˆ Àì¨É*sÀNP'€5\Èl ‚`ú¸š»ƒ07¯Ï? ÿ^a+°% `²C0ÿއAÖ¬áõw{Œ¸àípýzýï›1¼Ã¬ ¯¿é¿KÌ)©¨#© Èú§äÿ%%¡žvn»òøùy¾ÿŽó¿øKýoTÝüçîþQb ü!~z qÿ³3˜þfÀ¿3¨Báý 0ýÝþ/¹x¹,áoÀÿç!øíòÿ×û¿¢ü_Ûÿ¿;’uspømgúƒðÿ±›;‚¼þdÀûÙ Ÿ (|B ÿ¥êþhØÍñ¿V˜9|F$ 6ð>g>çàzþv•{‚¬ÔÁ0KÛ?zé¯bÀs8€! u¨+ø×½÷ââú >z–öð»Å^²ß&|²þWb µú5‚ܼ|ss/LxÀW¼ |V­@ž¿[ÀÉÂà.¸F_€5ÔóWaù€NksK˜›Ë/Ë €Só¿ ®ˆÓbcÇíAðÛÔöï?m”þ/#÷/›““ Ôäì¯ó_8wqzü›äâpZ˜ÿ317€Gý''ÏŸðüáé,àUý Áîüë.ù›ÆÇœÝÀîæ ¼gÿÂ^8­ P—%øý4øéÙüz€\þ­žÑ^·ÿ /þ@Ýàõø „3Á7׿YpÀÍv‚—ø»Â¿DÍÿ†œNpéP+øÅü+¿Õ?Èð.æV¿§êQá\ÁðfÿódÿÕE–n..ð(¿ÇÞb­ßê 'Èsá3ÔR(Ä®>¤ýºVâ©ûÖêêZgd‚A_/Œaî­2Z–Ü´³¤™U5éHºú|yØÔçWOY¾]{¾ü¸’&ŸCéÛu*§k½Å;áT9=º²*ÝšÛÈ36Ž‹Â>p¥>u2ä|·e°}¸'üJ÷’h:0A¿#ëàã~â;ÞËOøº,2|°:¥9h—)s|nüŒ¿f^.ŠúûN9!CqùIÚx]Ü|mü9må„ U ÁP‰€<ûoå”o«øF߈µˆ¤¾àò[š˜@Ïi2¡}Æ®v7²Wï¡Ø×—7zªÔ”šY2)§%G™­ñ3Hç· )Ô²Ä/ý•ñ‘4mo©ds-¾—TOø²†;`K]JŠ—z˜ÐC(Ü­g¡Á¬Ö¤9*GÔ ¾Wb–,+´ßªMü5«¶+Ã6ñ>KC”*Ô†¦ãhÇÔÏÔßî^hâÿ4…Íè ev~ÏpgzVc-%˜y¬ó&ÇçÕÆÅ…†¯9Ï–l™rjçÙ O”ª§hEÓ°$y=‰²žêu¡šEݕɟØRmÄÁºÐ†ô%÷¶ÜÃ$±ž†j¡”œ:‘‘/¢l!ý¥•/i+4§f‘Li=r×”J/FÉѶÅ$Ù7eË ÉÁí°Bkaí°#¡p­n‚TÑé±EPb¥0$ïmÏdyÅìy›@5x¨5¬£®Ð`í£4^>æJŠõmÌ ¦=ÿˆóÐýCü„Q~ë홙뒩#ûŸ}oºûr]¹­¥Î¼VÖkMÞμ7¶¤z‘\!çwf &ÛFTЏ{n¯&Brô³Rü³ ©ì‹Û²:T&z…dÛéS& ?º3²Ñ" êáÕÍ»ñùÝ™—Ð÷A&stïb¶ÎNñ_8¤Æo¾sme ùÀ™°¾nœE£½õ1Àû i­êÛÂdÃq`‡m¾Pünê› ‚V$¦ïi&Ÿ¤þR;d)S{½:3¾n¢6tꪜÀ˜uŒÝß×'bªHîZÚhœù:ëS­Z„plKïú£bï$€Ð:·¦ZD´¹U¥»¸9>Üe^že|¾+6ˆ…ttjËwHΰÅãK|P‹pï1-EÕÜmHИ «Ñh8]a|HxzÕêÂwÕþA¨¸Á0m·«Ó}žJÀË ?ޏI>ÉËIˆ\zhnlGvÌ™<Ñ 1®Zζð–“£¥zZ.ö Ù­Kã‹)ÖTߥÛ~×*øÐñ‰y¨#NæÙün±cUïV×SöÖf¬AnΧ}úïq¾á ]Ocæ¿`9Ž„ÖÞ‘,PÆy1Ñ}¾k9rÖ4%\@ªŠÊV–/þÔ¦ôåü¬9—9ãÍ9—unÉÒÀ+µoì}q^6"&©Êh̽»x×]Ôû§Œç9u“—å0­²¡"\+±å:}"¦`ƒàÐWöªzMÝG²ó»’¾ i{ö K½h«šGL‹³&Üóôx\Hw÷‡Ž!ïbÆq÷^9CgËŸ“ilµU‡ä{½&x•¿èNýä˜Õ/¡(êcŠL“eܧúä$•þƒ9ÎêKJâØ|(ò<(+lA]ªqÏ]õÛ­Ÿ/VÉ!ö7´¼\ã&`¾IBwL ë«Z¦ÍVÝÙï«QreUüAJÖOõ½W\òLDnåh}+ž„é«J˜ºH{SëŽɼ9¿44/xO+÷†¼j”F¤êÎŽûcKæÈ©9ŠÜPë¦åLb`-¼ =¢apl¾Eb3¥õCÌ¡³n\þ>ßA;ÐÓu\¥€2T=’¥ñ T_b]Ò‰àa¿NJu-dæG/‹ÓÆNöÑqQÎÿ l¬ìÕw=yé}¶ó¢¿ïUW±¨Õƒ—vVl`o“®ãÀvú™sé¨Ô0YâYâñ|w[¢€÷£÷[ÚR+þœa~m‰}aJ¡”,Gé1ý.³ ÑùP»#¥KO»ü6 6Ô±kV `íçúïX½ ÙÒÊdžÈ% ›åX§  NÇ稈×ã=uXʺ‘~çƒw׎؄æãØÆô„‡´%f ïËMßj¼Sø“o:u_öÅQ £¡¹&!ñzqèÇ#SL½eþ¾MQ „PriTÊ+°¯¬²[ö¯,@ áò&©{K¹Fíù.þÀ¼\OcÞ;d†T±¾u^¿ˆ¼ ‡¦àÅõ±³eæYdŸQò³"Ê`ég2Ÿ‚’œœjdY*Ë.êV2Ü]Ôf¬Æ!üÇEøÓÈÖÁ,5Oõ/:wDÚ³YÆV”)­‘Æb‰z’Ì“ì„X)}ˆÞs…c0O.J$ÙôÖ*±ìê+õ -é63z/žJP.2c@¾]NÝ3‘—Ý•œº ¿þÒÂÝCópE'üæU6BÚ3Ô¼º!ÖS:QûÎê¾WwÓ¯Db²à¿gzxÕ^©÷¢îºf |/¥ŠóÝÜJfÁ¤dµq’`«eû òÊ®’›_j(ˆ?ûb+é8­¦)}žÏŸcS¶ìéÓ¡Ö®‚4˜fÎZ[-…Ë–œ¬ G=à hó³£Óé7Åph£xmÝzZàƒéɾĴ?OéºÑ^—$•î¹݉€LAq‚f´± r÷µÇ£S\^ž«bÙo63] Ï_KfînfJ”U>Yëp®Ÿ8Á¥^í^™zÞ„E^”0ù øVÝšôFÕÛg­¾<¾óöGo\ŠJ—?¸›}Åjoª»%9ïò÷¼’£{È{R¼?Áá›ß:þx4å]É—‰NÙ±ÌËÚº¬Ä ÒêÖ4$ˆÔ,#¨œ;¨#5_´1‰/,Dgyc[¶tˆ÷ª2(8¦ç.ŠêÓ :¦‚¾‹;ãè=ÐNëJÉï^¿~ñÉžd6ñ‘°×uŽª¶y Ú~qYGGIÿ1Lµ±øc„w=^‹½„‚q83‰Ê5®³VÁöƒAÚ¤‰<(53~–¡ŒÅ$Žr ‘ñÎRwôŽáÝÐ+áÕñ¾¢ô«Nª)ò£Ú'û ¬)–8ÕÍÂù~^ŒŽ‡®Â™:{N4¦H¥í‹›Œ%ªÙrÇk2DqúÊÆºíŒŸ@ÎxôEó½Å¤DT¯C;, Ø”±>Î$L¢´ /Xv£;‡Æì˼x®¡ëQ×_g‘ò=ØñÒë­×ÆEXOˆ¬ÞøÈ$ ÷F{.­eâsÐé®íØ’Ãr.½íéìí錟Ô¡œXZ·äßÔབྷBÑK?9»åy}™îDí Qó&Yc;3Åb­ŒˆÓé ±éì …v²s§ìÔ ÓŸ³øI]OhŽJq> ÞB³]¹¨Ž§F`þÑ âÆƒœÂïŒ,Ä÷ÎúÚˆS˜ðÓÙûSNt±rnG2æÜ‘ ëóÖš£Ôµõ‚k¯gL5fô‹>OñJiÚ5¨r8¹\W=[Ï­w$+Y«f]¢eV`S‹6jJ±…t7tõ"„ä_ƒærÄö­Äy,™ñŒy*ÈÓpög)fèYT|å)zÉ3÷Šs…¤¬ ×2 ¹8uÕ íîódñÉñº",C])a©GrŒWëR/ÓÚœ˜Qª™/Qæ˜Rgá0×Í2µÞd7=VQiÃljÁvîwgh®¾’ZÝâQEhV6tmðÐVwóI$vmo›¨½VÏfe]]ž¯^'{¡s­Nû^i<,Œµ²}Ú ÄO ÆUÉ”z‰¶zú4K¹QÈÆMàÃ&ö„³·ß„Ìf‰v¶%&Ñåß¾Y3§´&7­¿—ðiñÐ41˜Ê"ÃaÃ|C'[ö)M^záT—\ÌéÍk*½•P}…^Vä}PÏ@¿d8êåÂe¾œÒ¼ºmƒŸj£Q ŠÂ°é~D€ú‰6±÷Ê´5ƆðLZJÌ] ¢ÙsøSYøY‘±ý~m™ÎÌW7mÑÿeYþº*·½uùÔM‘Ÿçµ?Þ~ã©ûÚ~×¹¿Ò’žOŽÊÌ Ø\|l¹Ê©ñA=2!B|wê„P¼ŒGúëBB$©“0"Kõ â9ÔׄÄòh´‹"ß¹"_êo¾ N™Òúùø>‰·±;*À%@&ê%RƲh!…Üég‚Ýë{*áR—ïÀØ|ÝW’zw†øòüj>oˆB9é 8_=™ÃEºt“óR²y¾x6K%ôΙv¯Aèæ‹VjZ{ÇÈÉÝ…”_ƒX—bð{Î$YZ>ŽZ.ÑT¤sÖ/J3!\d´Ã3•S"ß]÷VŽ‚=¡ŠÆks4£w|j˾ѹ°ƒ^ü“Ýõ‘òÖ*üâwUÕÝw”üQ :®AYo?—÷{íl LFÓ΋‘⽓s±Y×AýˆÇ;JžÃðª6¾©+ Ý/uY®bsþEnú>v~ ªŠûÖ*“ ¬4xc€ý}¢òý(ÛxܸOiT4Tm>‘<‡#¦0®úCÓ¨“d2ª*l÷lý'cÐÎÇv`5Áé%[•çø«s×WÏ£bù\aY%üÍðùGcG¶¥[ ù&ICÙV¦lµØõ ŸÄã +’2¾«½)Ûü⡺õºÁÜ¡B0’îZwU}3Ä£×t2R†+ŠFi…'rr„Ödkê‡óO®:k™~&!'Z‘ŸÃÖ–sÙör®G³R#Qj?¾˜=F/uJÊðiY-Sà#‘JSº—Bæô¨}íHˆVùeXëÝ[[ª))åó‚³ÄbÏ Œ¯%”¡²-+Ù°ýhC6e’EÇÂ^5 ™¡àöa¹ßÒ_S/ÖhY~F5>!EÑÊ¥ëÛÅ®V¢†xEÀÜ=gݬ4‰Ý ½L ëµ­h“+ -Xw>¨…Ï;Ôx~eäó8ÝàÓ¯—Âë’V¢RC#ûnÍd#îal]¢›9Òc´ïïw”ý±Ge‚+Áã^…1°®–í>]CÑÌ莅é}³¥Ý²r3µ°Lhñì2Ñ(ÛÛk"i–¬Z²ŸåM·Ò”84cê ÷Iyä¥'Úu±)z“X³ã%¾Ý÷Ъ³vƒþû/…^y¡KŸ´a/I þrÏø¶“Gâå៎SÑÙ­òQ–:Ü6÷_"ôŒ!mÓfø_1º}~ED#ºÄsËÕKÒÛ^h2û6…”y6“ÝçZ|k­Úçn<ͲžF\ÏÁÝtê>ôsI›ÉÄõö{­û÷¹Ù´sÙ'—ÞB­u ^³/eæ}Ùtr)³WÁz'Ž*Þbè~ÓšáÐ; ÓºÚþHOxļËé¤9p½²Ð]AKÊÝ䆙!Jâ½fý¸PëZjxÊHŽNX×Zz‘ñuÇ"B£žüü¤VËáIž]ß% ŒÜÍ o%`Ýžƒ@Éû¥*a~TÈÎÝÆ±Ì>ÛH—{_D…JÀLȨh9 ûµHpš\g{ªEt17˜L‹Û¥¡×ö&Xíþb*ñ9‹š÷m‡eË™eJ¥ÃÝê—ùù ‚øÃ}‘þ')¤™—׃'ûl¼a…UÙ¨Tα»Ñ¨Ì5lcsWŽFUλí¸'.@Ö9 ÉÇ ÔoY|;Šx)ÈP»™bÝÖŸ|ÊÌ{ž–ß`¯ÄÉ2­ìløâiÛOƒð™­52‡f4ÅÏ Ã]òÕõNâ7ˆ7(÷IýèQ÷ª¥¢h/üN§Œå¶B•+1*,—ž 2Ÿk!q'R} #a+"1ÊÑ&41âÁ9D-µg^ã¶T¤z^«’ªGø2H:­¾“Sý>ÝÚÞ8’¹âȸýŒjMU-1{í†1j&V&üݽ¼ÏԪω([—fgÙäÀ‹$xw •îÿ&£Éଳg ÅHe…¦rÕ•qZôG¬ˆ)¢yûÖ-ä«M4]½Ø+™Éƒ–O›Æ<Ç`îº>ÑB^ùüü î¸Kç",²Õlò!}’ÝÕ>AYú–qí*@Q£Î¤5Û×wÔEgôÐÞίwEˆ„¬$TÔG@aAÃY¿j‹I{: `›Ðd§Ãø=õFRíWlŒé 4ÑîÔCåZ×ݶ±iöŽÁÉåo¤xfɘ àOÁ‘'\`têc›tŒãÆŠù‹tšW[Z5ÎE.ˆ‘:%¦ßë¿6ÙúúTÅø¡sôU‡”9÷ 8FÇA-¹±Á‘¹Û9#ßÈbßõŽneìªr¾ôHvy>¥›´±S4@¬3²¼œˆ~ýF/NÞ™ ³å8ÁÌ0%î –eÉMÝM$î½,¯N˜gåÀ_P²ôåãŽPÂpiìÇ!Ç RJiÞÌ/mç)NHô¼•@ýceãyÂP.¤ ™(BG?wã óÚÑJê&ÇŽQðÖ‚ŸÇ¶ö)±1×As89FÙ¨¸-Bf’0í÷;-¤ÁX"Ÿ c­Ô7ƒQLúêw‚ª/ טÚ3ùwI½O…&½ èÃAÝ×óà¦Û’#Û{ðMaas:gä$Ú9¯M–<TQ´¬a|ÐçyF± ßùÜ¿U +ŒúXã®^KKYMüy.•ôüðtÇæ0'‹ì^Fj%1@D·•&ÙhÑÙb‡zÀ´ˆß$hÕ›}çàZu⯺qúú‡Ña)ÝÎOÍÒa 4“…|`ëÎ(ªïÛø»´´ f®Ûj’G1,XLú#ߥLP}i|óé²Ëçb"Ó Õ6yB¥Ši¬(ÅüGmIi¸RUpŠÙ Ã/çæ ¨·æ'Å¡2|û¢Ya‹¥ïÙXèÌbfCУDk1surŒ4—z†³Â‘J/šì)4Ý. Zƒ‘ “Y½U'fVƒDmFIšËÒ¹Ÿù™ÂÙ´2úÆ'?qÌMrñ@J–ktüFG“8HûΨm@Ž7}YX[$™´þ¾:MUà‡‘JúT! KGàÂÑCj“÷·„O¼õÙuÞË}íçm0í«»ÞVI~*¡ÆèªoèPlì/ì””B˜üz毲5yKl?‰uǬ‘y·¿>dßï,@¼ÃàM6§-0`¨N”O o=™VZRÉ$íÄe·W›ã5sƒ…˜Ï« …~~ô ½¼"`á¨Óª^³ûBÏ#—­Ãñz#Í’Y)Š-¾}µ†ïkwºÚ+'e`'ÐJÜ“BÀz]‚G)YŸc+8­V@ÎlL\xÛËǯĆ?Ç-åÝ›gÌ`’¢ri®^ñ†bÜ3cœ0¼Ù“?f·M›ÍbÔf-¹¶û4)äšq{ûÇ ±Ä’{€¸^‡Ðc|ìò¡%ÌW¬Š™vû*×MÙyƒ,âIsçK)[ÙTq<ŠdœtX,kå)vµœnž“SFØ2¢ë§BšK[Æò$ùdzW6Æ$™†YÝ'*®¹¨µØæ8æÓsÙ×LÑÜïrHU_,"õI9þ(,ð Qâg| 4UKWÔÚÅOdÂã ·é¨dîqüBÒ<²³<¿Äñ:“©;ò ì}hU*ÍÌÔLwÞ¾ûÄï)ÜQçZ¨sÐñ®Ã.üÄù^Ýy,Âó–‹—ˆ(A£15V}#2›xÞ w_Ϥ+f%¡ d6ºˆ|¹G¡M°3X]¶ƒ¾H˜Dl[qæmV»ˆz=[°_ÇѼ-'0¶;‡’›—~oäî–²B˜yFWª¤ÑÍ4÷*Éh» A°å>¥É•¯ÝNx¸mŽ–õ•ÅàÖ«ËãªO×Ô5‚ÛÕsº‚B%û[‘xd±Ñ¯ ªÁí)ihz  ¾››f7CÙêè83èØMÃvŒÀâçãs“4†¥aQ© ëwé&zf4h¬Çyiø7ÙÑ:†Å(LƒO‡Lîš]Y2§¾4Cd0;ö”˜¼¿0ÍBU¥»t>¼øx©w!Kr MS5bbíLþšÜ®GôøV¢>©l2¤'Ò(Êéóõ ¤z'ÅÃ}îgˆÕÚW \ƒÓ¦îÄ'Nödö·Ð=Œ)`Û6¨D¢œôTƒ‹ÊŽ»TÜÙݪßH>ÛÐõå¡­JÖ]´ÞLRº+øý%åní¦TúfEfñÖ}XYT½©p‰Õ3Üõå¾½,˜o¾íEâǹeLgÍ6Áö²¯¾q}·(JA8êÌ[ "ߘI;}î«ë=wðßœµEõÎáb| ú¼"VÂD{k1´ž6sOŽ’ö:g%Û¹üà@Ó:e†RµØÖòÆ„Ëê¤!‘Ñžk8ê%ô`×ðxcâýû{—•hVubC}Õü’B©óëœí¯SÅȢ˜ZoÉÞúΡ*’?®lÿ ¡xÚç¹´µ$íaÞ«B% * N“BålØ]Î#£žœ”ÅÎB{»Še´}c–ÁD mŽ-K\3%gºG}¡¾?Äh:EÐŒá«uÙ«ò >>ÓQý¨ 4œÃz7àPÊ=Ñ“V·÷.¢ v˜§¢ÉkŸËÜëô,´ò CÃ6… 柨gy¦[`7qüXÛ}ÛRi¿0xã[gÒzm§ý ÙSúÓ†!8±OÈøˆr%t­ßi¹¬™ÂÁâ#ð«èKw­9‘`~ê ¼3±_ê ïØeVÉf¬3e^ŽôB¹KkØ[Îù§ÔL@"7bÔÝT¦çKÛ0-óOoñéŸ}Åü)í$\bD–@LWåhwî²òuDÈ~ˆõ•Ô°Xº{{Oó4×UÒqýpÔìmmö\v¶h!õˆý†aòÂ×É7äßû†£±ó¶³ï´uŒ²Éä—›¦°¢5€yNr/Å¢² s×4r½}/s§Ó¡ÂOj~nýÖo·¶ endstream endobj 2817 0 obj << /Length1 1393 /Length2 5926 /Length3 0 /Length 6880 /Filter /FlateDecode >> stream xÚvT“ÛÖ-Ò«4‚Ô¡£Ò{ïE!$"$:J¯Ò‹tP©R¤W¥é JSé H)ÔsîùÏ}oŒ÷FÆH¾½Ö\kí¹÷œß/—±ˆ"cPàq"` H ¬kl) Ä /¯ ç‚ø+LÁk†pÇ"1hÙÿPvG@qø˜ ‡ÇébÐ-X–”KÉ‚@1Hæo Æ] õDº@€ÀRð*c\}Ü‘ŽN8ü˜¿ü0XFFJøw9@…pG h€.ç„@á' .c ‰Àùü«¿¼ç*+*êåå„¢°@Œ»ã-a€ç0B`îž8àa€…øÃ HÁ 0qBbÿÄ18/¨;€¸ a4_á†#ÜøácM€¾+ý¬ó øël` ø?íþªþÕ‰þ] …Á0(W(Ú‰v8 ]}5 Î' €¢á¿€P,_õ„"] öxÀïCjІ(žà_ô°0w¤+ Ä"]~QýÕʪh¸2…B qXŠ_ûSAº#`øc÷ýs³ÎhŒÚ﯅ wøEîá*jŠFºy 4Uþ‚àCÿÄ8$#))!@¸Þ0'Ñ_íM|\¿“à_a<ƒ?WŒ+ÀO€t@à(ü°POçîðû߉¯(À` ÃìŽH4Å?Ýña„ß5þòÝ‘Þk^{`è×ç?Owñò‚cÐ.>ÿÀ߯¨–¶±©©ªÐÆÿÉ))a¼~" i¼\ÅdRÒ’€€wùÿ¿¹ÿŽ@‘í ôOCM´ ó‡þìþ¦áù—*øÿrŒàßô0x)#üÿ(ßÁð_àÿoýÿ.ù¿ÉþW—ÿ—òÿ{Cj..¿Óü¿óÿGŠBºøüÀ+Ù‡w….ï ôCÍœ¬‹€#=PÿÕÄAñîPD;â.–‚$þÄ‘X5¤7n€ÄÁœþèèï«ÀÏpA¢,ò× _ýWo:˜3þ¥‚Å_Øïï©ÏUEÃ0ð_æƒH îîP ^cbÀŒw)áý[ÞQ ƒÃ—ðwŠ_׊‹¨«;O¦øWk˜‡»;Þw¿€Ÿû÷ú·ÉoŒbf“ ¹_Òr\¥Èæ%²î¦d/¿:˜fðþyØØ´?›à×ão›Î¬‡ó©¹8ÕîÏJ;"ùý?ö:×á˜kŽo¥Ò"?ÓK0ä µ³&¶¾™d>}*Õ%¾Z±òô¬ »j%³ @Šé¸RÙp±Š9m›„Ñ–\7–p–6tqWÜ­Ó=L4MßžF#㎔ZbXø|¶ŽË˜›ëËêéNß-Ð~])YÆÀÊè«Å•3˜ØËÊ”¥U%àS‚*?O‰çf-B…ñÍ¡ª'Áìì7âÞ°‚P€öûƒŠÈˆK‰îy ×·îW(´È' ¡¦Ÿíû¦¬¯f»,0F¾žÍµ‚yùÝeзÞ'\0+wܶ&Kc±D2«Uò|?ö-t=H%È릻ؤk„¾à‹ÇÍœÅÓ£±ÀGò†ëõI|=Úô«;Iȵ³Vl—ÆÍ.öo6ͺ‘8,óez=ôF×là¬ÞTL_ÉlØyõ”P’çCj‹QiÞ êX})¹ƒ˜Õ¥N‰®oòïµ™'â'_7ÏM9\.ÙS‰Ñ8Ô=’"ͺmQxžb£­›®g]V]Œ•|¶°f!K1Úú š7¬¹$¯ôªÙ>í&µ*s¸~{Sz[‹ g‹˜ò–ÙÚm^÷ö`Ÿë%Ûš‚ŸˆÁcÆq±å)ÎÝ4™¸êÇ›ÑÆTÏ…eòG)S$5Q¬iòEœI€ÌI£é’veG> V>g­¦ùšÅå°Op%eKF·Eß¿Ú^ 5e¿1¯Á§³µdÛ1-5¢*ö3¨›AŽe[à@Zx’Wòòk‘ÞªM´µÙ4}½RdÜ¢ÖÛÁL✵Î*Âelí+].»î¨¡®áÝÝ•™Ÿé¼åg Fy¹ƒVDò‹öú¾Uf‚‘=m#×ËÔ9|ÛÕ¹í²–@™-Ü[É®èÞ¼BA¡¸€`ÿÞ»£«z)#\œ?¯­º Hç®ÆØ6YMBSþJõ4}¼¹×¼ÀO%]~B×Çx.³88ÖRU2}LÁ^ôñ:XÔGiùcŸ­<ôôîËr×KQ>é}‰ö)§FK‚<@õ$ º/ô Å'›„ä Ö¶N ü—X^Fºú1píP™j1«¬Y’-_Œòk¸÷²±µLhŸØ1B,Êe3z„îG´rŠK–?¿ÌÐø]¡×y,¤ÓœÙ£f[‚ÐéÛªÛ˜ NÃl©±fCÛí¾µÿO{TñܰSêV@þNo6¥\RzXWì<ÖðSó«j¸JvnWãùyUf”bk_¾Lð¡^ÕÌF$+-ÑFICP#l8'~BÕÅKEpñ"ÚñU±þVðT¶¼¶½áÌc³Ìæïœ†Þº GO¾Ô}Ë£›ÉÑ¡­té£Û?èß šã¢lµl[­’_wˆÓȇ+×RʉOn–F™QŸ¿NÕä@…=Sâ øvD¢x²Òíi+ñ¤…]Z‘*-[Z¿u~˜P9Kû%L ‘ç`·q2!XåÛý×~6OÎR[gzß¡e«ê¤+L¹*4”Ëoo^Ë=Ãó„|£€ñ³Ë­\j°Qÿ»§~(e¾ñWŠ+8¤;¹lB¤€ßדok…?‘¶ÌBºa†dwûÕ¹FÙ÷)Z®u eS©Ìý(-p•ûÖÎ ¥‡(ù5øñÎyÐ2l»Ä¥ŽžÔV‡+nÌï^ n`ÏZ–(D¨Y%ßšvˆ ’p–¦L™8M¹¢wÃNêç«´ô{´ÉE :ùïNd“£Óì^¸”\¡|óÈ®p•«·%ÇÖÕícz”÷9áac}ùŒ [ôM-» ½ß3nýqˆŸLï‚tÙ1ƒp×°*«É¥bÌJ·¦æ½$’%~f¶£uM&ªÏ›ñä»zNvïïœÛûR]RO´õ kÚ=ðÏU4äþôÐ+Ó C i¯¿š¥Åû©ýÆÈ7v$£Ñ¥×ù««:“ž“ ‡á‡½Ýf·ØlÚÖÃÁÄ6 ârjQùq-É…’;~ÙgobäY¶/}òS£æ gDT 7îuWwdL NjíÞh°•ÎÞ-â9º.ÎAÞˆ, ¥ëndæXJ4IQ…MQ– ׇÙ_ªj5óI-puÌ‚J•´Vo]Rhâ1%¸Jv®ÈÄË4//¸ÌÞP— ¹¨ûåDO‰¨¢òeÃëW©sê†]ë_óCª›#,§¡æunþÚÓ¯¤×ÕÈʸÎ@÷ÎC¿pÈu óñ”] i–Xõ?eÜ¥ëŒeÉ¥l¿–ØÓ~o¨ÚZº×MÆ^ÞD,³P8^¿À@ËÃ{äEe³7耑Ñß•þ9`ÅU»•£ö:Vþ«ÿÇœŽÈKƳ%6Ï'ÓNÍûÙoù¾÷Mÿl¶»¸A*mŽ)j›’6Ou®Œ·ÄÈAøJì¼ß%îcX¡ùRV(šÊœ¬}!ƒLŠäõ$Rš' …gÚÐàk«&·þd7RµpØuE^÷yD¯à°*Éæ‡Â׈z«B?°„FíxÍ÷ÔoÆšÜçq)È­5± /‰MxÊY·[ÊÏ8l~w ßg¤´ÕÖûÉ6ç9¬*u¥ŽÜ¾Š«0("é ”lUì¡sÉw…>‘»]è ½Ṗ¨³È.Gèý¸qìØåD×±'¸ŽU}6`bFìΜýÛ!¤Öw·3Ékö܃›§bºRƒ#-k¹¢ì^‘È£Rš<™óÝ{B,3_M âi/¼OùfVÿFÇ :Ç5_½^f÷Ewà³2ÿdñŸ¥$üEDÖÙa÷‰æ*ì €î3?Vê®pΚ÷Yi©C8`);rõ®<¢¹]ŒÓËÏåh¯Ù‡…9 lf¶©íS 3| Jb~¡50o䟯c¾TÌY™‡Í}¿0쨑Ÿsäd²Z|§×¶®[OÜÀÅ9Å¥"ù¨t÷¬ÇçÚÜý‚u·»Ý1¸Jí\èwÂYîfzæ5Ëà%åþç!rt ¢Ú¼žt ¤x½¶ˆ²JFT‘¼¸QW£¢l^Xy™[¹ÊdÿsßN^âàfû;Òä8ÁíÁïïK¢XÖTĸ„0«´Tò·b›&¿çŸÆoO†\ñ¥Ç=PÑI›5𠦧• £tã&ê–X%s3»o ¢„úS-Ý(˜ã!^¬„–äõx¨Ñën•­C|» šè?©åŠqðˆ ͨP´]¾Ï[EeüTóø-JÏïd]ž$ªœ§×Þz„tN9Èu¸®9[}¡Ï¾Ü+WðøjŸÕçlÚ—#aÔ|½ éÄ.pŠ‹©4’/‚†€:a™eÚj?!£VÄX¬L­Â»|èe‹CU=6,ñ"Ý<#$nÉï=)4®ªMÊ)_Ý/=Jζêç &òL cFiÜžúwÃ×çÔyœãË€gív665caA™Cž ½u“–n§G ·M­Ïµ—ÅÍG¨#Üë ãH‘ouq †÷žw`¾Uåõg“#z©ÌüH™´cžB¾H/)`­U…l¢P £ssvV¤90qá®Lb6˃åÛæ`9õÿÌä#Ñ¢g s†q¨º®FBVjqÄr£Îà7*„n.Ï{OAIÍÏœkp^†Rÿ¼1ûè•®`‘y&v¥3§ì-ñS%Œ;AÜ¡)A“þNò“Å([‘ŽûåË‹í½#üyÖÝwånvS^I®?ëû±W»öz1öB[„–‡ Å«OwØ-(|õT€éülÒy}›‘1þu5¾ûƒhÔ&çw%j:•‰i±™•õµ¼é…LjÐÙÙWh-µ†£ôçɬÈV Ó¬‹FáÃf‰á==7 c£¯Ö‡„­½ì÷.?µtö3êJK°oPµµO™ÜH-ñ%ûäáĉÜò³ä–(#6’i.IÊðÈ(b‘ºÒÓºýå²€ûa§ÖH®OIT-O ¿æ‰¿ÞÈöŽY£¶<+;ÎwÒt…ÄôbpuBse"}1 ýñ/Êÿ”inªl£ 'åæ&5Á/´Ò†¼ÜøXŸôçºj¤ÁyÁ|º•SÒã:Ù;sk~%ŸDºXÛnŒ§žûŸò§Ï„Kke JS Š;h?Ø …ÿ„ÏDX\`?*_Õf‰xþIÍÇš´\Sò&óñFòªw+ÉhÀÛo½Cž÷ÄÏ\CÉÚ -Î- Ôѹs›Ä:íƒC_êòPÇ)/RL(èw5'h xËï}r²¥¸²Z ½nĈè“üÖ•Rúâ,süü‹ïnJ¹ä‘™ëK׺› Q{:Ä¥¦` z­ŽL\DfòúòV8‚‚à¦_7}Â_dÒVoTFóù|Í—ßÝžk—zJӤݲLÙŸ7:ʨYñ)¥u\Ù“Ä/U`ùî#ámþĮܵxä):[v€×˜Š#¿üÁt´=H¥"ËÛðqò¦oíëì5.ºóƒ"Ðfº®UÁr­%¬«ê«äÝ^¥[Xû`çê©ÉÒ¬‹w´"·7±Šp‰_…çÄ[å&©LB¾ý+¼?f¿Oê]‘´K&ÍàMüAÓ¢ tžt‘æV°ìœhÓ8,‹ê¾]GÍKJå{‡Üöи÷‹ƒèû¡]áG2™¹Šé/’Ž2ƪY2W­Qž_|Ji†¾g[½ƒTB2å¢Mç~],+’ã7\~º« ƒ˜Æ2K÷R ntÚåˆìñJ&;w[Y•nª,èJÙ .~qŸLŠ@õuÏ“ <¿çSR%]§áü}/Eã3KÓ”…~¡Öå‡/EÞ_N›Wº¶ãÍ~¢Æ[£k(´I#ê 0MÞ»ÆÖRl›¿†Ôi§†–}—8ؽPåu%wwÒﭘо͉ ÅøúH<4>1ê{Ò£w|\09s6ï±Á’'xç%èŸÖñµ³MGKĜٿ¶d¨Uš¨å#ø[¿i{˜NG62ß‘&€ü’ ^—݈^•/×3M­ô ÑËL^6õQ¢`:=æÙ —I»÷Á…ó:‰[m3s8×L¡Ì »ß°TkïZœ­æ“GçVÑ„ðR)²÷Æ£ƒ]`³*°/j’0IÚìÖJæÆdœ^‘@ÈáüAHÿØäJÆÃj×â­ ³ù!QbO¾P§®œ!æQS‚YRðÝu9>óvù÷‹oD¬Îm§B'‡V~ÈQ‰E­‰Áëo²$¿´ˆØ€9?‡&ç ÒW’‚„6DgËi,æoô4¦Ÿ5@ó‹% rÔ-U…&õŒÙoS}v ‰¦nhÔ|fc5¬r_‡ŒF9ï+Á÷{øáÅÊGZ5.>yµ‚Óñ$‘iÛ¨ß~ù>ü…íüè!*Ööçc®æµ›‘YAŒ“‚““+¬Á€>‡}-àUeδwÍ<©ë²;Œ7Å<ë¢DX2H¾‘T?áê|;ùMüÓô{úßÓ«ŒoWB·{j 3}”¡¶+ô·>l$wm™qŒê ‘Lêc=¯žxŠ{{=~ãE9pQÑJÕv‚œ«·™°ÓÔÅ) Ø?ÝXæ+0x÷––VmßÑ×@+¼êðqÙ÷ØúçRf/r芃âfuXüFy!™¸‘̦–¼q/•tÆu_^Á’ÓTêq a´Ë®aŸ>ë$È)¬$sBmo¾×n½CºW–(»°©˜ÑNù±Y·á*Ä!=!„`„.Gx™;¨ºªE\ÿ—„BF+‚‘æ f21Ÿz4’¥¸¤Ø’[]ŒPøÊè¤f¦Å\CX’Ý i [#‰.øÑdrpS äåÓªÚ+ÝfÑ?)ã_ÈHŸ§ày…LÖeåtMóÒÂ0]ÔZä¶àS÷NÉWý—·Ëm»J–XbxãÆâËÒ’÷‚kîÀ[×XƒÐu8­ðš‡·rcNµ ÙÒ•Í‘¼/ŠTèË™Æqy=Í¿©÷s·Úq-!̯’éš¿{¢ÿµ÷ÞzÌ@`f°«ÿèDÎלþyí6Óqíáxc‰‰¯ÒöÞf¿‰û¼Ö¶‘ÆQ޾¼êŤÀÊ¡úÂùßvóèxö¶˜< †up®ÆµŒ½]m` ú çíÓª%7ÖL…(æ9Ù¶KÆ^ }þÑÐ67ƒ®,£©óž³¬¶£˜ì:‰î\alÀa´ñSWãŽÍx5Öµ{}mËL-cs%;¦ÕÛRe-êv,-ð\£ìbª‹+¹F&¯¬;ïú¤Ž1,ÞKz0,À̰4YWl¦™÷«ìHm¸õYdÿÇ)~—t$]Ó¶bš­,Úˆ){äŒeñäœ*¿œ%>Œç*ÞÑ ‚Àj»|“ U¹Ââ×Ôã(à$].ŽèisVØ[ó¹åE\©7]Ñš®n°öJê7‚¢çV7~°õchdÙ8Åï®ûdù‡Š r/\¤Jð óõ‹7ºËŽÊk×(=ª êáûúïгö)6ÍQv¹ÞÑÔwÖQO2p"¸cnþ$ê–3…y§éFUýw;6-WïOÆ¥öÍÒ¬á “ï%| eñÄá7¥SnƒŸ¬±wlOø +Šœ:ÈŒlçNêUû8ß#~g^–?ÿ °.IÎñ>Vß ½{3v…9[Q|:Õ#~ù¨"÷ùØDm¨S~>"¿7·gUÓpãåvç¶Ø]Ý™¹ª°¸œ›”&F}…;=}LŒlŽž…t滕ðó·ÉŽt TBϮ穸sÏšßA•ÖZ|–Ȱ@Ï2²=¿ð@5BÍ=»m(s §…ÃŽ®jr<ó{®÷`2Cû†åÕËÁ™^=Sâ]î±Wj'×ÓkÒò­IqžB·:V&‰LTÙQA¬Üm¤R dtµ‘¶çÐ,hvjá†I=á"½Gɼ;L[-¦=8烓À{©ÂÇó8&«ÕþTBIß endstream endobj 2819 0 obj << /Length1 1613 /Length2 7637 /Length3 0 /Length 8709 /Filter /FlateDecode >> stream xÚuT\×.- *Cwwwƒt—ÃÌCÌÀ ÝÒH—J—€ŠÒ -!‚”„ÒòúÆÿ}÷®uïšµfÎyvœ³÷~ž3, z†< „Twçàå—*éš‹ùù…xùù,,F0wgè_0€ÅŠDÁpÉÿå „„‚Üј2Èí§ƒ€5=œB@QI1I~~  ?¿Äߎ¤$Pä ƒuxš8`QB¸ú aöîècþ^ÙÁ@ 1îßá@(Á: w¨ úD0ÈhˆÃ î>ÿ‘‚]ÚÁÝÝU’ÏËË‹ä‚âE íe9¸^0w EzB!À_‚\ *ã°`¨?¸!â±» ¢g G¡#<à(ˆ>h¨¡ Ôu…Âÿ8kÿqàþÕ ¯À?éþŠþ•ÿ ƒ.® ¸ n| s†uUµyݽݹ 8ä—#È…@ǃÿ¬¬Ñô‚ àÎ>ÿºÿž/Ÿ…ª¢ªןŠÿ±)*"¼~Çê!P°_/:ŠŸÿ¿lhÕЯ =°ß&(ZTÿy® Œ€üRŸ ˆ(„D‚|üh’ ¢Yà'€–)êý›ß@>^8ÂD×|Œ@~UHȇŽBxAÐ*ùeúƒ ý…þá?°ð_0zý††Pè¦ÁPNè1:üƒ  ù {{t?ÿÆ~Aö¿ÞM(êæøß4ù`p´~aèéÿ òù\`pÔ¿)|®èƒô+ô+äßxq´ Cñ_A ùÍ«_àt ìD¢sü&7º¥ï?`P¨7 ˜B€¥Â_…7ŸÕ*Ðyñ|ûˆ÷u©5&ɼ'ZÄuú¹Ÿƒö­lµq7ÅGª»ƒz3e‘cSþtœ;gÃÞV¹! éêÏÜ1TzV÷x Î;ì¡ Zû±Œ˜ÒÝdýûÄ,q,ÙžšN]Eˆu ­W¯_·¢Ö-$~]€/OHÒéÜãò[`Åš30/¹0·"I CZfzi\cÅÂN›ãhÎ}V,²>ÌÏ÷çöödjuÕˆVE’ÓPøj2ä¦ôÑP&çj¾Aa°*Šœ(•¥%1Ò¼p‰d]ÀõtÍZJ4µoºƒhroÅï&©¾QeÀ‘§³l×äØíõ¼š×½íB&м]N¹˜ßÕÜdoÄû&hMðÖ)Nh>\~lr/Y¶O‰Ÿ¨€VêóP“÷ûGƒ{H´<SP¹dÅ@Õ—„œ˜{¾ ]§žÞuÇxĵ䑱rfP£ÈšBRVº÷Ÿ@Ó•³mŽuC4xw|¤Ž-xy7V¦›DiK»º¹Ü;{ÅmtAõq|—cº.„~ÌÑc¬%àèˆÀ™ ƒ­:¨öÊœ•iÂNJ*;Rz7ZXŸûØ[b%×ä9ï˜ó"áÍ>Äizpg ]¦—oi‚Ñ¢£0MägÕƒÏÍØ]Ô6Óx‚ä¾ûŽvÍ„?=@úÖüØuôåãÏI5MŸq-¼ˆ#þhë ú)o»øY{Óøm0nWO}§YIk»"^îCwßx¬WÉ%'Žüc@ßåðBõN‡,"ô¬;û½!•AOpC’{d¥Åwø°ªÇ?¼S~¨4X÷uÀ–¾þt“®>ò[Éïã.œaxÉDSŽ;iÂìù e"–ʲ2K=ø‹øÉ¨ƒ&–„p.QÀu$V¶k kŠû–Ë“5±ÜY\ËP™Ô8Ùà†'ÆPF‚ÏŸ\{ƒ«gÖÕ\]Ë!å€6I±i¶–54-m¤Yaʾ9ž€œÃmczë†P8© 7… h €?lß!¥¸GÈZê½C½×ñÏDzÈFKü¹K¶HŒoI´“Þ0 m±°äR*5鉨H¤è1/~订h ¥þd4ÍðÕ,Nˆô¥ÛÒ½’'l §äK.A¯‚Å|øí™ë¿‡H©÷óž;r²¤ó såX²)z™c‰Û ZÛ<š$Î þ@‹ïª.ÇìV¬¯Ü-DoAæ‡o%é=ÍÖ¹Én»%ñI©Û„>Hé«EP?¯ò®£†9ÂY1øYz?%®ø$ôi·Ëdöª!ue´Øf¿Èϵq8Õ9…«¡À LF%¯yŸÒ¼ô?´¤I×›? [o¢¶Ò‹IZ¨ù™´NÚk=d.‘Ë騌±”¾s÷n·µµû&ª»@ßãÜ/O3 ü)~`YålCéºkÅz¸N9žˆñGn ÙX¦¥}ˆ±¼Ã”תi¬uŽ¡_b Š$°øò„éªoð‡oï…Q׃t§•µâLÁkïËAþR³ÍØnÌ­ÏèóÁGøs%¥ ʼnKež·Õƒ³8±:’ß®£ÂÙB—°mZD§FL‡ÛÒȶ‰¬Ì]öÍ ä^ø¼ÏfPŠ@X RH·´æŽí¦nJŽ_Yb«cI«Ñ6­¯º±‚Û‚0ª´i² ŽÊÁù'ãÖ‰,BŠ}G ,O¥„WC\m6îº^–»)*ɈÙfbÎæ(Ùâ£>摚¥œwÇ;5ø¯©aàè§õê5o~¾®íV¡Žn³I$nÙhËŒ]”¹ñg™·˜àxôDÜS쟩¹ÑÂaëìÅlIÿm·À$Ùˆ´æLô~ôcrÀÛ™/Ïòp®°WV8—¿Â\«´U€n¹ÐU·TO÷–ѽøT¤áÓl£C¦°÷Ód•ç-ü«iC´×öÅ :ÖßXüîÛ“·–fš?£ùYZÆÎ!7Í};Ø÷õ@ùyÙ47ë+†ÞÙ°²˜¸™QÚm·`.€®Që’Haån ˜ÉàädOºbš÷)~èøŽŽ² èؽËÕbZŸZDÖ[Éüˆa†¨8RFå ¹ ÓÁav'Æû,S%µ•Šõþ¨ÓP€Ey‚ÚáJ,u“ã—óÕ­ÕÅÈ ƒ“úšê½·.{¬‰¯^õZÿˆz 7 ½Û.Z}!ÂÚ|G”ñúf:yóDyºúä’ÿåéÌXùþ32æÞ™¹êüe*Y¯Yƒ«¾`‹(л|ŠoâÝ+z¨Ò9I޳8Æç*¢E™Þzu–Ú7žå3̉^i èJ‰\zÄڵ»™ñ8RÇ;ÃØ˜ïázÉ/wµ 9Xv§ö6µÜfŠl; ?!L²g½p´2ð.ÞO»ñiÌ4âÍ£¥'Äàa¼ ……ÎPfl¯¹»;µ1T ÷EÌe• ¤Uºxòë`Ùñ$Á;sS9Ö¯ VûÚ¸ú“º´3KÞ.@ݦÓm™µç°¯)K[§^d«¦â@sÕ#iØNôIî:JXuz¹M?{6OúlôdõÄ ê•qo ”µ§È;Kö`…‘à‹Y =Ex)æYuÄ‹ê ÉN3ëñÕŠÚµö·¾ªŒ÷æÞ3R½`3âùî 3æy¥ÌF~—U‡Ú<ÇàêÄôªºþ˜.kTþ„o‡Œ!+°×-©Ô¬‡§ÕC-¯)~Üýë³]Ø>wŒaÖ ±Ï’EY œèGã ’&Îo¦ñ«7.Ÿ¹çô/nŦ´=¢XWà$žHÕŒ<ºÉ­ªŒT'2\fT~MÕ#ý1{ò‘R‡©º@œ6+pÄ´ÙÐÖN~fïA塤é©Þ1b•Uɼà]ýáp+jAh¾RÁdÉÖD±ÒaŸ(³i([î:ª²Rüä©pÊçÉf[&NK©¼åõ=õ¢óWöUW/.ЬŽmGù ¥8/ÞCľHI’^Ž}Ó‚¡±X4'“¥Ž*󇔪\tn±Å­p¦TZÛ? ®Ç›\nv‹0­ªTÜ>éKxœ0ºÚ8õŠGy^¬ð|ü#VݬÛ†ïS‚ÛÎu2¢¬Ö߉#6Ããiù:~6?V;v˜^iNªË×.H "KÄ¡üùÅ·Xöjðõp¸z[Jvñ‰%<ïé{lÓú>œ¹ª¢@”ïx–|­ñEsŽùÐ'®çö‡_£Në×ìõ1”0]ásQV_K}kmX#oDƤ[—©ÇªÆ¤Ø£ÿð®a‡UDZjç©ü2¢7-GUŽsRm°¸·¯4 Eq¬d pjæëCYk¯½Ö[6ŒU+¬]…ʾ…OfœË§®™# `æn6hï× àJš¹‚Œ[t™~¾˜–Q´Ü‡Íl…¿î)ûª° ý4ÜÌIÂu_啌.l‘¯ÑG„K|=WTËÔ&ZÔ³|Oµ¼F;5šÎWÑÕÔ_’Ù@gà=¡ç$¿£,øI ÷ž-P4_;:3™H¬OT è;À¬]æ fü$Ã~ÞXzs¹qüUÅh[zwÐóRFñ|æYÀÀŠ\Ó“Æ·µtšë!>?pÈ¡Gyb=¸ñÒ.çmu |)úõý ãǘt_§{zʨŒ]'¶‚!”˜2騱–®øE5Ë¶Ž•]ïÂFóçžVîì7gÐ Ï Tº_99ê”>=¶zÖܬ·£ŒKm-£ÈžÔA9c˜¥±^A#å© ã'.þû¹­çá²YÅÓgøë«ÒÄ^ãÍÏü=û0 ®¶G?o2È]~¾¿E­z+ãYÓǦuº«©Óœúx2eå/õ=ro3Kž{2Ó¿_Áî¦>¶,™Yýª>n>Jkå«wÉ {–Âþ&í24o2iÔœ-FQgÖ³µüUèæR¨® ^Ìh t§ÆÆ'Cò1ÂǘËëƒÔqâÚK‚Èd¤Q¨åÅû,aÊSò{¶ÔL°‹kOsÅûfRS[ó={œ%#ŒV拱îÜP=‘Ô·ê÷Ÿ#Z‰þl&T3T¨Ãô'Š\ÔŒ.\QÑèka-Ø7aGŒ8ÚHÉX~ð®}S¾óB.`Ä÷vÉlOºGmh³è[{îÛ+MM:Æ®=ƒ´Ýj«+„·z<ͯΩœŒ¿\rôW”Ø— åÈ9:ÇÀÞ?PṲ̈Þ|é™zèPƒK6QT«ž—fòñègð:Æ9®{Ïýcܼ \Î3¹cý_€¼>#ñàŒÍ(ý›K¨¬¯%ƒÕÓG™+âNFJ/S‚·l_ðv7לl– ykÁQÌi1+,ýWyS¥Ž× ]qÙÆ{iä¹ Cˆ«ýÚæ)ý¸z#´»ß7ìjž˜è˜ âaj®*$>ö¿/ùR£›L‘rˆóî ®Z ·€Fy|ž›Þ*÷ DbZùye79M:ø5sû=\.ÎóCÖ)` ×'¾-¯¶‡E{ æ¸ÆwÁ¸rU9eîVst¸ô l:§±76nö²`t-ª¦“Ïú|qÐZµý†#‘µZ ËõÅËšä 5ù,GMåóÒ¾B€´|–Eeÿü¶‚âÈ®êdž!”;}ñºÂp>Uÿ÷ÖT‰bɳ¢ÈByÍZ4×&Ó»ò^‚à.Þñ×&Z†tÞ¤fÃÆu·GÚïo¼ºg)¿¼Qlg@|ÚÕÊüàÐN}Æ}Ñ4©môƒPô–ÍG¥wGìëЈ¾,;&÷4ì{›erl.…!lPwg\!¯ž6íÌX1¡0ˆv›–›GÒáÖ2¥ç~“(~éÑ…¶5fvª“D c@3 ]­³æDB$ŒA3v†]4à#si*S¹èAsóíïAá4éù“ýzî5k›GªÔ\Ø/‚d7Üaâ=ÀSZ©š{M?2 s,ÞY«kaî6áI-’Ê\Bx” ðPˆæ»Ú”*í©!aT í‹Â‡G$²%6½•Á›™\Ñ$?ñ#ë¹qý‹+d9ð×:†íL:ß5|×ÐîöPÛ’ìLñá-–åLý$ïù“ŠáÛ¸Ó¬½'óÿÉŽW*a°Þüîæ-;…æÃÆ<Œ,ù0³F„_]ëöË^!C=ÓÅ™c ÇÎyËE•£{™õÄÕA ñvó‹®§ñc/ïŠS༠ҔÞ÷뼸Û+Tð`ÑèšQd+L2³§ðüñÓÆî[(=ŸÂ”’»yÒÑ¢ E{â{)Zü¡’ëcÖúqÕRlaßPãŒELµÕN{ÞÒ¯Ÿ7ÎMëÚ~þÄ9ïùÒ°½öaçc_ñfÈrßN '³¿öÕGçŠòÌ¢S¦'oÃ_/¯í#U¥,¾I¨V=ð„Th¼Õ‹Ä÷öï/´?wwyÕ¹ÙÔÓg`üŸ½±Ý“WÿeÍ)ådˆ…âÓ»±ŽˆZ¢f߉˜™´æ!·±\ã^Ö7&‡¸“·Îß Gý¼“ïv6 &‚Ý¢YÈ,Tt‘¢™†‹½!1;kò§IGtϯd9]_z(“Pê;cÞ?na7 ;n bû¢÷”0ä<\uL]›*àrÈJ–Ø£b/ _ZÊ*b'çÊ—Rí;^‹_¥FÆáíý9?9ÎØ²‹›Ò'6d4¼šŽÍ²årÕ¥g°i®»Îÿ«™žJ”Ÿ] Bß[(¬=¥oÞüDéþYáúጨ‘Ë·!W»‰ õÐïˆZÿÍ*Ǧø‰̶üêu\¢ ËšóJBÊ{6ãÅ ëÄOºV&úÖVð¶Á XÊ­Šk//Ç–`Ù)@&¼C§^gÝâí%ÖPÓs™/º/5¹.q•&²ߥ`·ÕOa6g+*ŸMµv½–¶É¢¡ÿnf-©¯kÍ«•Gf‚ŸÈß¿ý‹+>vˆykЇ¸ìã  oÝV ½J=bvú¹°­»3‡¯J¿c/95욪ù”õ«¥µìcKK°{-úg-—ÙÞuï’Z¼&…™~Θ¿°Énoç””‹ÇçìéhWôÈå©A úºÀên•¨Àì¿8 œ{J["êX”M¯²~‘êz:_Ì)è}ž×¸÷w Iž¼†ïoº±aéCUÝ>Nc—ú“Zö…Oå—Oà [€Ôî˜ _vÏ$S½­ð'@ `7,6‹Ü>¤0…ìæj壷9ó ÷/6mŸ“é-ÌIi.VÖo[æ 啊?Äò!°7µñaXq™{éÞ¤¤õ5†›míÆNÌq]–QVZ;ÙÆZP„޲ž.¼þ~y·´„£çxwp¯rÁ[ÿÎj1ƒ§vªd]Ñt™qîãÙàO™I~VqDÒä âÌDÛ—vÊš±0ìZs‚ÕrP¬È•£Ö¤ k)‹21g'ÄLŠ6¾¢éë$8|Ç1ÎòŽÃ+yyß·à*¼.?Df©Vú°é-b»lw¸ÊQÍÅN®ŒY9šÄÕq-)J±ì5ý)y…gÊ…v^õZžë(IßW¼Å&s«ñ¹]™eÛØõ›™3õ Ãsé—ÚÝÒ7'»£‡U:Û²›á¼|þ¢ cæ,*ÁTA'ÁˆÍYÀÍ”.äÉ•Ëx°Åµ™Wá6›ßU¹· zâ#d¯™ÙYéCÜ´I´“´ ílûÆËM©ù¥5Vµjö=Óp÷~T—BﲜE>î§1ZË©¬Tû-Ölh"¯³j‡˜;ó[uÙ-çmS– GÌZÉ®þ’Ä*†»Ì=V £÷%åØû.rseŒI—¹’ßaU¾–¾°æ xNù%8—v ÿKÖ•\ÿóµw 8RM”¸ñI÷SÀë2¤Å6 ?¬øuJ~g«<Öŵ€¾ˆ3ææÜŸ6¾ch¿´Ì’'Ð eÓÅž°m’ó}õîý§êÞ£ü!¶|V’ÉãoÉ” Ô¨[÷EUTX­«:mûKÖOÃ}œ%JHÖVl!¢¨ {¯l•8\B¸gtn-Ïw[[Þv=¾Ê<°Ònaƒ¾£ §ù,ËÒ&fax6yZ”PØã¯Ë*؇MÒ»Ï蘺ð>"?¿ݦ¨²ï{['i›OzܼJLd»bâ¶É@/}ÎáÔÿ²à)^“dMúä‰Ý3§Ÿ”R Ó6áÝðƒÝ[4UãØ¡¦µ ¢ƒx½Øª08¡o,ÖåÝÏV¡ÀK §Œ Õ¯äýß5©BC'®ÃÙöwàQM’ã)NX‡rW7Bx8µ54ÛÉþ}«Ù§ HZ3úr|Ǩµô¨Ñí¤´0²eüPz_¬·Êq€q#$  `%°ÞPrÈ¿Âf7ÝA%„J 5¬"¢K„Õů:R¢™n†©+Å2ŸyÊ×Iš²FtÎ<÷ÚÄÌĹœÌMp¶ÚÅ"-¹J¦“a›×Ø1=R^Ú¯0ìlCGµk‰É·gæœy‹óÖk‰6ŽÆ~Œ8›°]paKŇP ¢AǬË_Ú"z.D`v£‹ î{ŠÖɧÙu¿ØQ.«û{® iRqÒ.‡ÊÑWvXZJRSéÙ£¾Ò™ÙÐyUU\ÊJr®Ž·_ìðš}v<Ér7¿0ûé:_Œ}—]6[)†.l¬Ü’“Åùèzµ0Jó=ˆ×L¦™ÑF™hçnϦ҅³.Úd·PI‘ŽêüÈ^é/RÕÐ¥q‹<~)ø6$LJ>¬@Ú´ JpÚBXÃBÎ~d“üŠåõâG€…LySöñ®^ ƒËIùÛA+óûv õoå¾6s½s,XP‹8ØÄ”òð'öÖÞÅrUùóÙPHÝ®àà¹ØÏµIŽ0Šž|¶-&dg»¹ÐA~ž H²g¤²‹HooÂHèN(¹YÖ…Eñ·YòÔ±“gÑŠ»™ÞN?ÃlѰà×|Õ5_'=F1„ÜXÕ´Ì„òû’½9èfKòׯøžÒàûÌÔ*}ŸÄœØ"„:lê£! iøÌL åíX21RXÊä½Õá 2+Ò•ä¹'¦Žµ(hHréïV褦Âßn­¿sŸÄI¾i&?)\–@eЦâF¼?b¸ÆJQÆŽ»ƒº$¼/«ª®ÈešûÂò Çê’³Ö3J\¢s§g¢fìwÛÂGªz Sâ­9évá6t ^ß©‘ÃÔÏlõ⪹"öÅ7‡ÖãØïØn6¦iË䓤¬z—'pèu?4þ·Îäþ endstream endobj 2821 0 obj << /Length1 2215 /Length2 17494 /Length3 0 /Length 18810 /Filter /FlateDecode >> stream xÚŒ÷P]ÛÒ ãîA6îîîîÁeww×<'8ÁÝ îÜ5hp÷Ç9Wrî÷ÿUïU°FÛè1g÷Z%©Š:£¨¹ƒ)PÊÁÞ•‘•‰… ®¨!ËÊ`aagbaaC ¤Ô¹ÚÿcG Ô:»€ìùþ!î 4q}·I˜¸¾*:ØäÜl¬ìV.>Vn> ïœù&î s€"@ÎÁè‚@)îàèå ²´r}çùÏ#€ÆŒÀÊËËÍðw:@Ôè 23±(š¸ZíÞÍLlêf  «×ÿ” °ruuäcföðð`2±sarp¶¢ex€\­j@ ³;Ðð—d€’‰ðßÒ˜(V —9Ô,\=Lœ€wƒ-È hïòžâfot¼³ÔeÊŽ@û+ü+€ðïð2±þ·Ü¿³ÿ*²ÿ;ÙÄÌÌÁÎÑÄÞ do °ÙÊR L®ž® {ó¿Ml]ÞóMÜM@¶&¦ï·nU˜¼+ü·>3g£« “ Èö/Ì•y?fI{sq;; ½« Â_ýI€œfïçîÅüï˵±wð°÷ù²Ù›[ü%ÃÜÍ‘YÓä䔕øwÌ» áÍè àdaaáaã@O3+æ¿4¼;Yÿ2¿kðóqtpX¼Ëú,€ï|\LÜWg7 ŸÏ?ÿ‹XYæ 3W€)Ðdð§ú»hñ/ü~ÿÎ O€Ëûø±Xþúùï“Áû„™;ØÛzý ÿûŠ™55d$$Eéÿ-ù¿N11O€#;'€‘“ÀÊÊÆà~ðûß:ÿ=ÿ¨ÿÛªbúwwÿ¨(koáàý—ˆ÷Óû÷OͿ׆ð¿ Jïó Ðü}N³÷_¬ÿŸ—àï”ÿ³ÿW•ÿ×ñÿ¿I¹ÙÚþí§ùWÀÿßÄdëõïˆ÷yvs}ß E‡÷ ±ÿ¿¡ÚÀ-´"Ðäf÷½²®&ï;"joù>猬L,ÿ²ƒ\¤@ž@s«™Õ¿fé?—ñÎa ²ª8¸€þzï¼g±°üßûê™Ù¼¿[\Þ¯ìoð}³þ—WÒÞÌÁü¯dãä˜8;›x!¼OÀ;âø°¾ïª9Ðóï03Ù;¸¾§Þ5ú,œþºX.N³è_¦!.³ØÄ `ÿƒxÌ/€Yò¿ˆ›À,õ±˜¥ÿ v³ìÄ`–ûƒÞùþ w>Å?èOézçSþ/âyçSùƒÞùTÿ 6³Úôήþ½³küAïÚ5ÿ‹xßÙMþ wvÓ?èÝ쿈óÝgæ`û~eÿ±ppüe±³û“ÿ×]2›ÿ¾÷ü|oÒâOÁ÷&-@îÿô¿[,ÿßë[ýa{ïÛÊËÑ hÿˆwèð½EÛÀ÷þíþÀ÷wóŸ\ÎwáöïÃöÿ{³èÞ“þÇýÞ¼ã÷{1Ç÷oŒ½-ÐÂõ•õßÖ½þk~¿pÇ÷åwøÇѼb™þßµ:ÿ¾ sùÓë_èþåïݻؚ¸Xý#åäåûæ0»z8üÃýžáöø~Tîÿ€ïj=þ@¶w^ÈÞc½Îÿ*ö?{hææü.Öõïæû’þÿý]=fKófü¡Öµ¡í÷Õ¢<M°q \F_ÃiïJâ»ï«‹ <\±‹YížÝ‹yØÄ8f+yk²ÑÁa±1ÜðMáÃYªo‡¶0ÝaðÂ|øT)¥Sº37YÆQ²!¾+ù.èÓ ‹™—–Âу·Ð:ˆH<ïçšß ·ŒTÛ¬sí´·0"Íš1‹„hÄr¿É<§8C3†0‘ï)>‘u£\=þgÂÑrê]µe}uî7Éu× :2Š‹ZåX„ü¯$9ZKª ÂÇ`kpl`—åßÙ¹ÊÜ ÀKF'Œý0jÝü¿Õ¶ƒmWì|Kå½éúÕ[C>®(XkÁdŠq93T¾CІ,M<ƒÔt\ú{7(o–LžäÛŒåÇœ²t€‰lº¾R]çÁ¹jîÊ $Ÿ4 >ËGЉÃ9w:íX—¸c¨×%ûJx+WM~‚B¦~nÁŸœ>þ°ŠéÞû2ˆ][¨)7ÖE)¸}OD[_a æ¬**‹žd]qüЈ€Ó°;XTû ¢*÷¨j7ç¿•¼¼Š[;SûâhѪždf±IËþJVÑ”,gÆË¿6é#>9^,Û#ñ'0_Üê4ä–d*‚µ‚!y|4¯±ŸõhŤï‘ÑSÐpΡø2%«Ý~2^”Ö+Çöœ\$Täu¡jäÆs¢„£\h¼¦LzÉA…óNü&Ç.%Jy,òÙ&÷ÓO’Í«ŸæÌåÙ–W}AÁl£·ƒEúOQ”Iö“Ú4!Xœn²8T?×Í¿ÉÂXhW·»–¤=@w±³‘Ü@˜^–fCk¡@4L«û*ß”V6 P%¿Zmê¸H‹’ÕíPî£& Œ§‘M[¶ ¼5|ÒâæÆ¨´"ÏM!ÿ«19犥 Nl™5Ûª¦öž¿â§hægÜs™šPð”.]Z¥Ïl5mïl0ïYÇKžµöK˜ê§xÈÙíCDìº5/ÒÚ2¨l,ý¦["tNW›È1‘1jeÌgùAÕòkÁ¾ ¬«Òfê/Y y!¸ÝÅ`Y{&ƶ——~ „W¬@ÍÇ‹ìs–ª¨Ç5óÅt(—€a>­õë7°F..N¾OÂêhÎälM7`àaðèŸè¯ N:ûGÜq¾‡×Æn/öýxÕ4@ÒDÁåñ›ØÝŠÃ¬\ÞsDArîó]átµð[/îÈ…¼Òß/¶8d‘Æì—Óz%2 `ÂMå¼ÍZ*Ùjñ]…Ê ®>Ò`=’L[S0}~HÀ_Áúyoޭ›çÝÞ<.A`HFBó´Væ•X*\VµòèRî"ŠçZÉAÌI+Ox?ûìdV˜_¬Uø¥éØo}°OeeT–úUMÒjµuò‰˜°-ÜžÔñô›¨­+ÖÖI†º Q(‚íñ%µ ®vYTyÒ6)”­PU@žôƒ¤×öaô«K7‰C>°Åño)4lÙż.ƒ=… _2qÉj?±½ÌþŽÂÃJ–Jv*Ç+÷0U>·Aù/×ôöâ³þî]·ó®`ÙuÁ|i&u È^Á$ú°øºx<§ —_µ?Î''«püqÍG»1CÚz‹íG„a$h.v…º§í¢Á—¼ó”8Ÿ#á1 P~^1ŒR°1“€¡b]Yçpå‘PÒªQŽ˜®ñ,Y—æ†pÁ&’Øag48ÁJª2Š“ »¤Ê7;IU\6èTcÇÆ~4"Õ]™øtÌÛ¦©Z 3‘¬5g^·U ·ÖCÿ*¶¿ ]õ O"{q¼J({ã˜%zSŒiE×R èeІ®î=@ÿpyk„ZP®iS¢Í6/Mõ+ÎÕ¦ˆÞJK€¢ÔHòXáx±ÑíêÚÌ›WøÌ°~Æë¹††ÿ{[ÍêÉÑõãâ½?wn¿ÚMÐø‘sE1•jÊ‹^gÆ´¨¢A¶ÅœÎžp£§q ¨å>}ïÜ^Sèñ,(•r¤ù…fº[C8?$}œ Ù„UŠ©Þ£q d¶.SQþzxG.Çhl)H€ [i±F‹ ‘T+)ð Ìu“Ä q–ú`‰8ÙþÃ…·,!¾…4ðzJZ×¹7˜b>op–s¥°ÛÝÕÁ“dÅwlM‚Ï”øeFÁcCÈtj{RÕƒêk닎ž€TZÇ\~¿ú•Ÿ:†MÅ@~Ëþn¦föÁV¿Oüy1p“ï[ÊVl&µ/ãŒK°Wö<'8pgT¢8™ˆþ$59^˾œ†RX”O˜rßÇ’Ï™bOÒZè^!OGj@†vl¤gƒóß<›ìr¦å—ãoù:¹)ÇÖpôÓË€‰õnŒ˜KͲ¿¦_r„¡ØáÊGdÙ½10p Eo|äœÌ>S[J‡åêª#ÿÁM R$zí8x´¤°_l–üÔ§1;´¬>«( íîk—^…)ïHóúƒ’Z©sh%‹<ÁæÙ ÓNû§ß¦<}ùéâ>Ñ *Øn'¼ˆP”d¬ã}‹­è׆Áòšè²+Þ-%9K»[µ.û8`]Ô¥éR i*¶ÓB| xÔ›)™‰».H÷Ù™àKD!4ŽðK¼ý³T[d®îšì—ÃNy-=Ÿ6›M‰ÙÎ[ìd¬£Xýœ^ÚÊTØp|×Lx~ûGŽŽÙÔªlÝr8<ïG ý&Üü…Ž•^èž1›q‡vU>¼±2Îs¯É©×b4ƒr„øcšöð#h7²õ8Ì÷öÒÌ:‡fÚ,QÄû‚ë7*e9ßUÁrg¶ß´kŸ¯¶Ò-{éXïRóæt&Õ©›;]¾¯AÑoȪYrZ\Ÿ¶ Ò…\Ÿ9©Ø..ŽóqÚ›>jOR¼v)ªò©L¶uëŸvOxݶ1_¹‹X7 N¼m)¤ˆ„Þ•yô*ýl† õ“Z5×á‡kI‰>õˆÜ;› l5Q,1ëÍ 8fÎ?%¼05%§ÇÎÈ`sZ/·°@W þŠöÊ ÁþKuÁ9:œÚ#nî»!6f~²ImIafd”CãÅSôJJ2ªí)>m=ó;„~±>ì®Óòõ[F$âË[èQ'i­e=r µE¯°SG[”ëB¦|þǹ'×»*èiˆ\r°ÚmÝ/ Þ_ú½c¦ºâ a÷Šª(YIS Às«ëµÉÝ&ŸÉv×&jά%;ÎÏÏÕ˜"â4ˆ†YMÈ®[oj†,Eá1ãò®g>s]¨–buOdsÅwg÷¤›‚¾1‰¥ª ;|ÏI4]ðzѽþ%Òèq.îÄÖé#I6å*ˆ–„;Ìçxu‚0ó¨W·Ÿ 4Áˆs¤x‘$!iœ1Ph•Nó¢[Ÿ®|Üh¸ŽC#z ÀäÜîÜh*v Uu«¢<„$ê.,“–œ»Ñ6±Ó’ eã"hënº>ù ‚gØ·v¨W¿ÃˆÒçügI•7¡,,væM5Šö£V‡ú#HS4îLëýØL"Å„_"RûôÍóAPÐBÁu@B»é€“e(i|ÛTÖt¸*랈±ûá”û,Ð]¾½ŽÞ¥-OÂ;—Í墺äµñˆƒþÇa@ggÔ/>!QûÇG æù¥f*·O³Ã…ky+ŸD4BÂø=Ê_ïJgñsN«Ë¼‡ÚgŠ7q&¼swpk6‰f‚Þƒç7&»2ÆsƸ©·}訓1›2KÒ†™ÌÔ®pÚoÚ/Ó#Ïûn„œt¦ý°x¼ÏJÛÃqõT³U~ËMäYtp«óÜá‚û̾ â…:l™³£Ú8ݤ¢i¿?Ø Sk( ˆ¨O‡ÆUvبðXà—· —\U„~i€±Ê37líwÉwé# mÅQ¤Í. G/,žÔ(¨+!söH ®ÓF ’/ð€}‡Ç“f-kR`Œ”*çU!š1oVùòJ²Š¡3“Vô5EŸ»>A› ˆáŽÔ¯Už#li…ò+æ®Opz»¾B(Ú¥6€^;ä"k Ž=@v?zF‹ón·ÌŠ›¦sm„ed+Å.„FU5FOGºç`ÌX«2ç”2“pQIFHda[àóœŸéy%§~b°iôÁŽ5í‰×ŸRnÑ ¯›Ã¬œ¹G¾ü fù !p.²YǦÀ1`ØÙ9Wladz‰ÅÖ}^þeû¶HÀ«ÉóØü׳FSDç‹‹3@ɺùÐ|ëÓ=õšÌ‚oĪNöB{úøPùÇBpj§ °ÔÎ&iÆ"7‚Úk!˜¡ÿæã+ìiûPUUûø s©íR ถg0Uˆš8ßy/Óûû)@”òðw3‡k,‡úaÉà­jw‡ßé½¶t3¹qÇjQÄ<qUϲh ¶úžå‹Ú°™(.)“D}Ò|ÑNrÃPUË» öw>µË;Á/óÝßØÆ¾Ñî•ÅÑA›ážÔô器1ú­vF=d| ±*ùÝMf _æLa`Òü z Ñ‘èìuh=½t¾ h5¦?tøèЃ&íÇîMÑ;¹œSóURãq]Éû /Ýp|HZ7Ò’BhÕ-Xôø^,Ì[½ t´šæu­© ÿ±/WZ8Ërú»ÂàéÛþÂŒ­Š]Uz#ÌÙJ™£ˆ=ƒW@!Ç<θK1ø_¿§RFCîaˆ¼Ž ù#Ü'H7WšÆçE@:wD?fmýÎXáÁÂ6ŠPÛÀr8æ=ƒÔºý•—…ŒÑ‹!¿Š—Œf"4ó9-ñÜ›k3ÌSéh`i7édÈ#Ê3;ŸÈ'àÉKüz IÜÔ7fª¯­©-¿f'…ÓæGRrÁnÖ›ü±:ëeÇ—]9Þï5ín—o£É“æÕÐp:2™úæ+Y‰Ö´ìž«”ö/Ô¶°NìyåâÇ*;5,ý5YNG¶²?§Ð”¥ˆî çn =ÁtïËvóBSËp}” ÊsTÕ0RØm5ŠSªèpOÒ*„ÄqTË!‡’X™Üe÷Ž—+ê”·ã÷–¡âd²ÂO©LÂ=c‰ÓU³Ì«¶«z¶kT™ûXQjþñÚb¤ß®ïžì xèe9=t dÜ1Wk;ø5É¿\‡lÆ*áãýX…Æh9ç¸ÌŸ\£[ƒé»ôù˜õ[“+Þ^r|Mð¥úMÕVç>‚îæWîäRÜ] º]-U%¬Ö)mg’ Ýu¿ Ú$ø•-ì…äõ|lâ9e¡‰«ð9^]õ®@5\s•‘«¸r¸ÔÒJ/‹S7âzNªmï1pÚd'ª4Ö¨°u½ÓùòqNwZaEù¢¨àÎKî»j-a· 8$…€Î`»µ8¼2q5Ô>Jæ)É[ލ½Ìt8_wB<7à¬À&ÅÓ~ÏÞ‰ø8 :²ÁJŒë¬Îкåp™Ð3vFÈT8¸Vö{¢r‡Òúõ¶²\Éù]ÁmÝë~œsÚìŒd_ø ±MË+›pžF:Ô)ãj‘î>¼lËÓah˜ä!´\'•sûGSxœ‘jeõþY')^³!òû¢r3³4üÖùôNs…ÁS–ÔÑ.ô˜¯ëVýÎkÕB°äŠBt³ÒeˆRñKø;>üâÔ@[Y3;:CæbWþ|:Õv¾¤]Ú•=>T“šôÎÛ¸h8°¶,l°¿à-]›ÈAž?­¶tP‰,éù¹þ‰ô;ÿÓ 2¢â¸èMú,ÕÝâ`´ŠéÛ;rg>3ÛJ|¤ -­!fÉ*Ô-è¶4u=&“[­ñ@3‰×Ÿ:P9HŸÐ|@bÉA2]ËaËü£_G ’~ÊWÖÂ4Ô'ÏjI2/2Ø€3DÏž!×ǀ¸J<—·]l\k˜ŒN)¸ðãlÓàpšerÕ:q½ðóÊgجB•ðhqDñжìË+Z…9I‰e´žÕŸgêê`®Ê¦Qðeú_a5™—ž®Ÿ]†¦ûoú»Ibn]Ë…Å‹êT,¤p‹o¿ŽÂ¯2™œ¤Òˆ“.n€K˜þ¸#Ë€‘,õ$X²¦®;ëú)WûlÓöøø™K1½˜xEÀ ì’>±íÊËoМ"Ëj0m4ä¿…ƒú Ÿ¢¾r\Xâ3ů<ޏÁæïîÃ;Z6î¸xCÒ/€²ŒnR" ¾ØªÚÓ'¾˜®ôd=• ð¤…çž5Ê'¼²æb@~A?êvÔnA{œ8kûîàm7£9A~çó€¼î|B°Óc𣏸“?1ÀMÂkœ+ ŸÖGôëI®$í!!dýW5ðMô9‰Û~ÒêeÁÚבƒ u>hšnÌo]ѪêþŒŸ¯\¥éõ}ÁÁÍÞŠCå '¿ÿÊ^Nži£$ÉÀ¥Ùb û¬Á Èë"Ô¨çLøQýqRP*…^6¾€—Ò,ãLŠ`Á™ §ÞcìUYnàqä&ýç 9­‹Œ+ÃòÛ\‹rÙ‚{!ÝßÞ×L‡a7Òëº/ûÅì]?õê’˜”±óëÈ6­Ý L. ñ‰î´û–d£7i&'»‰0Udå%r jp«3byå”|ÕLeÖÑ”êdŒµ ÓÜ­3pxÝ+27`dé{;aGß.Š)(æI'=dyÊJ°íΟ‘TçËId!JO ×ÝOvûÚŒ®a^ÌåBøˆbÄÉèîWä™=ØŸ5l&§ºöJ[ƒ`\´zT†åV`Í1D¯]g†ãg[è­^ì1`‰® â;Xà¶^ñõonFÃ$ÍÙ1ð4w¹äe·pHç@áŸ©ŽøZÈ2 Î(VÚe"¸‰†¯+­×H­ØìX•ûægOâä7odM-›ÆYÞ1¬R¤ê—ää†Ã½Ke86pÄÕNǤÏl“NR«LܧÒ>}Ííúk•Érw¹(îï%nS_ËEŠù¯ÎŠ"+H°"æeêrt7?.ÛõNsH±1fH¤Â!ê˜ì«Ï‹sH&íÈ@CI™~õ7õm2Og¶ÀZáD曾ÿWÚ\©€/å—¾Yžw|­èé„Q €ì¡]ÐîyãØ¸£#ÎÆ~N?ýÁ}« µbÕlÒ’»~Ôhõn'æ›ÿ¼¤ô‹Ða»êxãÁ]ªP-ž®D>ët*ËÎÛvN²±i_ZIÿ— ¹-Ã|ur‚– qëʼn ‡ðWnb]¬8¡Ÿ=úÃ<^I‡ "“rW RËø–i…ÂtõyLl’øÙÐS€>Á Ó6æBIµJH;–¤ŸSÖž•I×Oç©q!˜ŸÜÒÕ›y0‡ÛmÆ[ݾS‰¯¾™§K…J{ƾyZgix< 3z¨Òpq|Y…‚Ü}SÛx èªóx_OI8.[Ž…Ýp„ƒ[Ȭíg}XùÓØÃÉã­lÃ5òŠdú˜?W}¬óËè9CUìà‚<ý<2Ž)ÚbËïøµnˆ¥/41ÇK²™ì/®“ˆ6›1¦rŒÛ:¾cÒ&çÛt@e°-ûHšéè«EÉ=åu§ÏøMÖ›}Y€Õä+…þÜ9sŸjk3zkYõ[—¨i×mÁ9ºnâhùÄsÄÚ(/ºçQÇ·Ë`óÈsRÒø8m™]Ô£>!ÛJÓÁÍ«“ËɨJ&aä:Ràꯄï®jª'¨l€ =qÊ*!LÔp›»ä÷›²µ›Ü̱:~wVÊ÷sÿ>Í’w° ~!°Ϋ4J]͈6Z ÷Æé”« ð;±Ïp'vÛ½rŸ®5ñÖ9Œe•«$F[1|ÈåWeGÆ3|ù¼£­Õ–í]¤ýÛm"Ygºî<×å á쥃ؠçÚ.ÖrÀ8~¤ ½‰/´_ *”äêô&‚70ë«d˜Åòn¢µ-¢?w¦¿D ½)9õ‹×íV®j)çþâî‹`X«öÞ% ×ËÆÑ*Çpdw%µ\I¢g»#ª¼í°èµß³¢a>äP²L2*©;Ù.-4V‡b(ÞæÄ±†Ía‰ÀŽÕéò…«J…4•§äÊÆºŸ¶ü˜Ï¦…nÃZl¡B=ÁfæBqêoÈ^Éo nS%H]tÖj¤þ--]Y´fÄ8pïo$ÎéѬuD©¶ðy;˜ÌféoØTÌñÊ貚U'šs>Ý™)ÃT˜‘/, œ¹õM)%-d_‰aÌá$->p—$ð¡.*ü2ax¹ê—‰‹Í2UȸSwËŒ s/×ä›.8°@ÞP4³Ÿo°¸M)Øž«Zaí‰Àæ¼"­Ç³Ì—Ô^äd±ôó' úŒ“éäì»óŽg}E-¯ÆÓE[Ÿâ<ëb.®:³øS&Xµhı/YÙ…îj}6Ï7ÌŽí[Só;þ$¬RO ±+f7N×)¥á®•­ ZT]…ú ½ÿ­_ÙS´¹J/$½H·ý5êåúO qN¾Î¨¤^RvÀ}’8ÅÄÓ[Ñ×å+îÍ&/':ÿ¥`Ím9΀’¼a!_[â÷ç5Î>ãåu±|Àe²NX}>³Ô5ä$ ëK%îý°à÷%öÃlmŸÔ`,0乆iM¢_¶ƒ[Ú¶îø™*á—°Éh´n²i*Zö òêÁ¥jܘ‡]œ´¦rŒØ™‡"O,öÉŽ¤ 7bŒJG#`ûo!Ëk³f‹”îvät`q49ÝŒ ¶cšöÒ£ƒŸ+ Ýî Pwù¿¢P”ôã$&¿SL)£oš#–u7ä)ÝM –õ½f­y{”Ë.ôg.| "Œ€!¥‘aQÂÝŸÇ<×m0ú@Zú‹ôÀ©ð!+±Úƒ+ïZМä‘ëzÅZ„ˆ< úS‰óݼRx>ÈÓpÕœX°7þ³ Y uQLv½õÔb7.ááCQ VÒ…{3þVyºßÇq«¯002¬ó'óÈãK×j‰f¨`nï »³ç  |§aíá^\)Dh@K½Ccrðe€[~˜Òj/еV ï礢¦ÈTŠR{>¬ô_eP />PYoqè_Á0(>f¦ÝÊä}PvV·‘`(€ÿš"¸CG¡¹¾ÇÍ Í›ÒêmÁø\Ó”_²Ó ¶2΢F¢ÇWW$„³áñ¯Ã8áädÉèžÎ»ÓUdþ¬‰[;…‡V±˜È»QF@nñ%–0|…ƒõ~Ï7¿óK˜èp’S¡†”]fž†¿§ Žó«Û….Y‹‹¼&ïïÝr«Ñ¦yM&Ú˜9pç;ÀÇ(¶Aæ‹M&È/h‰Ú¦‹ŠÓ@ªM\°Q«/;\Oð௓£r—[ÐÒ'pŸ`Ý%0"«/ó„ÀLÏQC±ÂM…s?³½Ä¤“„Jƒ» \ùÍ.fï4"4Gϯ[ª5•G7OÚÑ€Pµ‡üiöBdÚ0ó½wøú¶ô42åLiƒÇ4Mº çÍ%n)>- -¤=Ë5Göyé'OVN¿¬ rÕÃQ¯û¯ dlBoý®>Xü*<ÞÛ,‚{Ü6HîV?Pk[t<·>^@bÙ û{ØSsÃ8=ÞÚ[/„’ )~Êè»#ÈÅMaààÐteõ™ðÀ²±ÈJãƒûŸ¾n‹žšÎ±c;>N0Œó‹/yY“Ì}ÿ5ŠÚÌñl}êâ‚é!àTÓ‰PNie™Þ´Ea‚‹®n‰+^kŒ,¤BUA4?"fI\KnZWˈ”¯|¹G-ÉåsT58ßr?§#1Þù7DôÜ„؇{â†ÒÝ#µo¬ÞŽÔQ:›Au\À2ßøñ@gÛƒŸüâøäÒoÖP¯ÈȤ3Ò,Z’ë”ì¡Nø!é•Ê^½Ì¶âCËn¢¡¤ZãäZïRþ»GÛ:œv–åbÉ—™Ñêi¬±¯èµD*þ0åŸzHå| ¦-dU¹wZ!Ǻ3®cZ#Øi3g¡àÝš7\6ÕÝ›qëzS"͹0Ô8t.§ãOÍ—é•xÀé üõâgî%̳Áª°v·C¸)žôüe„ö;hiôŽPß°ÙÌ;ûrFÈï1¦´8X)²`)ùóB;IÅùªK-³Ó)㥄’U©^øýÌ,lÈåÊ,ÜïùJ¨OÕ ½Þ´rxíØK‚ ¦±…AÙÐë¨$t;†YüˆK}tÒø±YLºkc°YkÍ¡tÙ'Æ­i¨¸Ö\ï¤ý8ÑØÜsæWº?XŸ¥ádÍÖ¬6¡¤ØLâöUùW´ùØ„†]ò©£—~ÜýeŸ›¾…™ϧ› šI"vFC}ƒpù3¥ Üy¿Ï–Ê6}ÝVvîÿ+ÐXF78(zf0ay­hgÕ÷'˜S{¸Ê„áÞšŽ mnã¢ÖàQêÓ?d£1¦¬MÔzž§g,—TÐÙÃÑb$qzP{ñ´’Fš|tõ ’«|¨7‡xS:÷—Wr:;èyÚÁ |á'¬ÔkÀ/?ž÷2Ú™7±U žÝvÑvèàß»©rþÅÆŒÒ£v‘a ‰a"âbôÂ&ðÙÌãÀÅ¿ýÙ3;<泡z®4Kìtw)ÜðU¸Éqy+%|á¢<4¦ˆ,BP‚‘@!½‘¬½FA'{YàÖ·uFèGš;9ÿ­ºnrW CŨQ%ãÎîV?‚ȑݑçoz½Ða ©¦=«I𙨠kNébT¾K•;Ç@˜tÓÕ£Zé¨}з\*ªÜq$™qòÚe¢{c×?ò&À£‡Îäô#9þ¬NÓѬ´ûóUڮ×¶a޽ߏ *}R {‹E{JG 1BòJ•ÛbÕ‹‰â‹Å I«>Ö0œˆ0`ŠYB¦ cݽu¾v_­r³b÷yH¨×rúŠØº"æHµÖô`,˜ß?à™E¦ó ¿^a`ÈA¤üÔ«>­Ô¶’ò80s’iŽÕZKèÎ>eB­IE­FÃqí’k­ˆM¯‡OKu(¾à˜CþB¸²é›qÁÆKó éW‘KËÖü9ŽQMbûý±¾²ÚЮXPZ ËŽdæ<÷ Uö"Í>µ­…í×ía…¦[Ðr¢ÚÃøi¹³¢šqúZ01ÿÐR3×Î Š?@3>½†Å8¢P#€„ç äËZf+éÂ^ïž·êŒ*»§NYÍõò¦·˜”à"cE›¾½¡Œ£b°èZ¡˜ –äÔAFù·>0jû@Š`yÛ´nZ-~÷‰â\(×Ïõ,“Pcþ‘/<âÅ?‡&Ú­Y­eJÎ4ç…8ùÕÌ ˆt¯‚Óz6i²ƒ®‘VÕpm? jú‰àxtNÕ4ˆÔÆs2:†°J¾:R×BªMƒcáAT·°ˆ&\Ò cu€r;Ç­]%êúÛŠÙpà ¼ÉÞIMJUrªÙ"­°ÙFU®ö.þËíVâ×N& UÕmõ«:ñÂÁQ3!cÞflF¹††ºà0üÂî@pPb^99™µ'¯ É,ϱdI8†*ÊZ¶«ñ¯„91wW©°mÛÙ¼ãÉÑî8õÌwá–?Qof9º3°jô¢!˜Q&øàoÓÀOt¨ÓnvhãÕ C§%V²DºL±„Duæì9yŸcw‰6è1êà'áµIìÈǵ-…„l:$øðô„I œ ¥Öµ»Ìôì»ÿìòއµ~B~k‹Ž¢Nظ¯¬;|Á%¼÷ýŽG„€•8žwà9V/Í›'¥(Iû£/]"lÙ2Ëx÷Å Ÿ/¾NuAêú™y,¦p†R RQøžì$Ïš¤'ÒƒøÛÛ§éNáíí-lìa²›Üt1Èj3÷å^8ß±rÐÎo7vLw£Ì£GäËe/[ 6¥gCîB(ŒÇGÃH‚á·— N¶Úð–­N¨ø-à¸|[ôÄÑÆâ©ÙÉCÇÌvE¾º-fÔPÞŒâJïÀ²»¾b[P\½Ã“·Ý¥’£¿Ž7‡¯P0•¦¬Ö¸>\¤+–÷8+Ûñ€Ï¹&`cIƤr&SÖ¹ä¤Ñ­ð£Aì`]BÀ“ÊZe<ÅIØgšF >y?%5PgwÞàÞ ñ9>–O?ÉØl¤#ÜÂC~"Y¤»˜Ž}ví9Xû‰¡JÛ9Kþþ7eà'·S 樕#™êpW£.`â8Ÿ)ùè«ú‘Åw^ÄϬùyÀ‰.^DD7žl=¢0{»&Ð ï2ËRZp E}¬Ë¢uJ„†:êxۛΛ%™0ãèq•õi%ì˜ 6ôº’aÔ í ’Êk-–î9Õ¼@r4k®=`˜©0ƒ Oý¼Öi—WôwG±„ë=á^"ËE =—¢9Ô£Í*n¡)_Ï8±îö'ê˃š4§¦4³aCãn—™­‰9N÷.? ¥MˆGÆßk p* f?ɼJÒl‰–5tMýèm›ú‚'ë¿Í€ðJlgM°™’Z#é7E=­óù9g>¡ƒߨ—¿if›“—{í¢¢NéŽÎSâ[­VÕ5€Ü¶™ê:ð"õÎ>”^J£h ®[ç±]ùÚ‡Aúl]éÇ]3Ã^o °öõ:L„kÂ:fÜ©ÕúRoü.zcg?}ósØV£A…¾$Šb§úhp>"ýcîÑšV¥$¯Êí7£ Ŷš€㬥Œ)"¢÷É1RÏ1w*eÐf©ßt|…=³ÙÆý%ýd^ÝÞýîv?C&4-Ë3x)ÊÞ4lùä·xœÄW§›ÀN½)o䶆ŸEƒ91rЛÊ7uìÀÈf'ž{æ+ÍŸÖhDQšÌ;¯ѨI+<ÕöXÆ?Gè?umn¶áìɃw¨R|/‡YÆùvõiù˜®ƒá–÷Ù£ßÚÍÿ ãâÛJµ‘Ìfͳ®7K]FLä3gl £ßÂØA¦9ÐB ŠX „J™‡¢B?Ä÷ÂljPÅM|PøêüHúòUJ¥®kˆR•”¸ LeÆ/S(ÉÞfà<…ÕþÒæPžKÑß)l-ó¸ŠfÌÐîFê’˜ fyÍGB.Y0zÜÂâ鉉Ç9'‹¾"–™à•§è½óÒÝÛÚ“^x˜‚mƒÊúk£®udès|CZ¸µ/O@’(mŽëüq#EçOU°n ÇJ<ºœŠ‘À’Géë¹­RµÏoñZép)™X[vߺ-V®t¦Þ¦ŠwLÞŽ†ìŸ‚È}{¶Â©õ÷™c£k¡œxµ7BÇ‘:ÄŽ}Ð6x|Vð~Ìs%žB· >6ýÚ¡ù$>ÄÙhJ¯>·pùÀ2\^¿Ôc€ªAénÄɆY3i+¬d7|†C32]lkLEý¾Æhm’[Á Ç'6a]¿nqã3„ûãP‰šzŽO=§¨’¬–2I·™:¢KëYk_­uPíN~6 íM§8z.ß %‹as ÛÅøÙ´°;) וiƒVãkaµ ÷Ð[H­µzƽþ%bš…¿ø:]’9º¡…çòÁ¯@ÿÉÀ›Z@…mÅâƒYbœ‹AÃ%ªßY Ë©}îòRqýÝ]FV¯¤, †µ8O{ªJírH´øwÆ‘‚ ×O’½¯›­œ©û¥Æ3l= ÏÄÈãQ!DmŒGîÃ1¼S®9æ©9çp/s±PÊôý~ݤI9ƒ<ª²}Þç^øû½{Zä%Ö×—ä"Ws¸[utÛËߗåクc¼X{”ìë2I®°ezF —~~,ªøâ{õ@nld«µÁH“ó…ƒíxÞ®Vî·Ø)BÁU×Ï8S³‰tUü¸ÀçsÑ«–YÄ$ófå¥lÙ:|i7'5ÕéXÀ§Ã3]Õ‡h6±Vé (9ëv/¸ðãûç>S—ÒGÁ«ÁÙŒqÄoßy€>‹²m# W€ÎÀ{ŠŒPgêÁ%õχ4>|£©ÒOV1Çÿ¸M“jàP*ŒKÇ‚ž¢«­\J-¯­Öcëk{šOÆ(Ü-™*âdØQÂ9wè~×Ö=<;¡\—м Œ{t§û¼r_²wï{­AKÝBB—!K¶ÄOéݨs©Áš6÷Õ–÷HùZ?Œ½NòLˆ/ ¬{Cæ¦;7JX,ú‰‘ÐL=>­¡\ÊÊž2Îæ ùò~Œ}1µ–’( µ™kÚ°"¶BaòðÔ †“#×P±H3T€rÞ¿38qöÅÐæ²KHk‹}R¸Êî±_&ýA:y¸W6 ^³4?VOÙÕâÙ:<¹s~‘‘ùâñå¥bePÓ=Ú}çÐ `„?®fõzþévúz'ÂÞqgø£n!>AÌ/g¸󓼡â÷6ªVä\ù%ÞŸò×â`u˜3u ;µ*“£ÄKV9·°”»7jòJ´2©š¨‡ŠÜ)`fGUÛ?d†Ný†™©±£“D½´ {A¬&‰îÂÜØX²wH.Ì TæV¾Cw}@‡‚=‘-n^…îEô÷˜ÇÆà^e‹t=mÅWqz¶!Ö š‰Í°ì½‘Œ3jþ%Y³É¸ën'·úò´ýá08ð¾;¾/À#akÛ*Mì7óŒ%ª }"“‰HŽ˜‘TÆáĬ¿áM‡Ë£¾³9jy =—¸0u4tc¹~¥DF^p™AXßÉcðJÕ6Š Ö™÷÷|rÖ‚ß´{²úéÞ–¶Bißa‰Á·>îl“gÅD0îISêmcøø> ‘(˜dÊôT·±«(S“½‹¿û¡wM‘e3Ø Kô$ …[†Çùé"E—ñÂ/`?üÊÕq €Ðp'¤ËA~%±ÓìÉ‚ 4¬£fÁ«<åœP¸M—üïˆZÐ`^3оîОŸü^jU퓾¡™Š6azyÍ‹+¶#é&|ÌA¢>&#/‡ø]öÊÄáÇf ºÅþvƒÑ̈ԲŸmS™Q¦ãK›Žºx¸F²»Õ¤ÛÓP4‰‰íÑ$Ñô+RŒg@u_@^¡K\§N³e‹®ýëÛîšk³¾ä‚^†|¿Z7wœí—ÈŒ|%$š R¢áœ%ÍÔ‚îÄ:[Ã@mfQùQÒ!YSGÞ: ôJ…¾©°Ã}Ó³Ígg®‰˜ )ͯûMéY¥÷â¯ýçv&g*쩟Æ@è{Rþl2AÞu¾ Œä€Oº›{[Ètû=E˜%„på`“£™kãënÑ(´Ý\;†ä,/í‚tëN?Ô±¹f ’™Ÿç1G*öš„#† 5ì²ZJíWyg3;õ{eÚ†[²Û`!7[›*NÛ ²‡×_ ôZŽÊµB”Ù¢2 Çí’b·18{Ññ’AÙQP^.£¯–wUBË‘cK‚šNª‹¶ ÓVmÑzp:¶ŽÎŸ¶ë¨DÓ‚åöúE%7Éhz­D/[ù»n¡{‰ñÑ6$53陸Çüë\šplƒ›Q?a5žzÁ©O’O¥ŠÅ\sÐ¥ÆÏ9•$ˆbŸÓNÅóž’º‰ü:ÇqIk÷þ\ ù17Šªc$ö1²³tþ%W]*æø"Ř“G @\)f#gðà5FU|æ#²Ö­ª‘¬¥Î”ñzt¾^w(_TUåî9— }2_ŽQ3†W1:Žg|m•Z¯¤ï»x(ºV Þü»–Ð΋Ó:¦ÃéœÖ|ÓÈ÷=Íﯲº[æT"?]½U.Ùg:>hT=¸@åW÷<“4œÖÑo(ÔŽj t_>­Ñ¼Êpl£æ{†ÎMÆÝ¬=áMK½•¬7\²Ãk!P-šñlgÒ§f±Yçd…“I£ï˜¬³f ‡(pM°¯¹ôxô¶ÛÛºÒׂ_e⺠½Rç» §>2 8v7?«$m;<ûª¶Äò|ÇCž‰#U•¤ÏrËÛ’:Y\kyôà— #5²ÖŒç‘wŒcJm\ <ª–÷dך¢Ç Õ~“Ô(þ %äÂUÆ© …¬éó §"3CïH>ß^0y/¯ÌÑa5è¼kê÷½Ç3™›ðØ¥(ô»®gD÷曑`q_Dÿ„’µ*¾pÚ¡o5±UDò—8oeÀ>zI`9!ôͽC0s¡.wáÐúºˆÄpåy—ƺÂG Qo4—o_´ÕSÔú} Eàçn=ÿáXÈrC¶Çó˜–!‡–ªK׿ãöà ´Þ€ P´|XcކÁgûmë|â’M–TEÅñ†KT),{<å&[ÆäXßõcLU&œð‹ëµr~ÃuáÈ«˜Y}|9q )áWg™åBÄn)Ô ÄΠ5‹tmÁƒ;´Ç ™ÿÚxë…šíð¤A!±À©þí›Á°ñ‚³EB H e+o²a°yQtùÙ¨ÞjÞs¥~ð¼ Šø¬äßLMî´—·Þª¼Ù7Ùåîò‹“—ÿ,ÞÅÞ<(]Å šú—GõËZ^Î'×’øç pmùªìŒˆ6÷ÄÌÓEÆS<39ÎÂJ|‡«¹O©12ñ¶ÝÌ›áÕ¦ÛGh}ƒÏÄ_Ù’qÈtÿþM@ÔüÁÉ÷‰aÈÃòQë ²¯s…_.úö™onð -$,‘µp¸ò,³}QâILr)PµøÏØt 6F5$GÔ\vmáÜ”ÿ&»Ìœ^fB—”­£ÆV\eCüòaØçIÙR èý¢v“5¯ˆ§qú곊oÃv£HÑ XY¶Ö{tmzuÁ–Gí %uìÜ9ê>šHtv’Š7¥ƒÔ¥êÊèj6»í L¯‘YùC ÎϽÑ,12YXz˜Ù8˜½cɱɊ.I½ÛscwH³àÑàõiŠÝ>4Á¬ËÈ#æd/©ö>Ç҇v}}2ͬ§awÙøð*¯²­÷›;c_ÖbNnß -X7] øJez=Õ’ V5º|ôSÎ,ªï3§¥Õç‹UGþT|á±c=£Ç¯Ÿ$A/¸”hi…y=Š„º Ÿ5V?ÄM4“§Û`µBz‹©ºOxÑ‹EhwÓQÓ²YïdTD~%{`D4ðäi©GDtŸªVÙÍRIñg +¯K,¥€ïUmµ ”[ O+8ìu•Ó^Ä3=±[¿Jø\Ù~Ø"»my/&š¡Ò•_Ü Úüت‘>%”䇫-ç»ç¿ÉP¯ôÉó"¸ ¨ãr–ºï…†@êžÙ}žŠMx¥­œ­3’ê@ì7q!ªxPeÉ¥/.gA0‹Ž~†›+èNZ™fŽY¸Ö0—C¢uW8_1WT§?úu9L®ùûnŒ’+<&ï»õ9©’_jxƒ0ýH{æ ’D?'5û³æ íÊ'”R*<ê€B4XÉè;·Ì–ˆ¸¡eÝßϟ­À ÌÞ†Üë–zûsO_ƒuó?ºì TpYˆ=XÞ_âF}…–9ª 1ô™fWc¸J%=ŒK;Ô‰>.ÃyÚ!àê¸x6æ?jMQ æ¦5 ¥¤ÞíŠ`úµî*ùU¾hÚ5Pn8pò‡'¾fŸn4·®˜VNduÌ1GÄNóá M@ýƒÙþ·Î_!Ûbƒô]>Ö%Hñ̬^Zöº6éËm è·ÂÓCÉñ¾óƒŒª£YœÔ=-´ç¹¯_ R±”d&„Jê÷LŠªDC TFböWº¾c?Qy˜ø¦@|Ë`›®c>Hé‡ù°²¶$¯"‡ ýV:¦ °EQYúff$‹ ÷›zšÿtLáãwtËÁDÌ †üT4þiðë½ ­Ç„/ÍWM2Ú¹U°Y' óVJœùdŒís€eõߌ(ÐZ*þ2’íçøùijhr”¥B°® ë\Ç_R£Šr^{Öxê+øÐ*¨Ôñ-÷ó jG£«¦ å·'°žë#zZ^Õ1¸–|°½ÂOq4Rö'…‚4GÛ7Gq»=‰W7ÆîfEWmfwâ ~ÖínºFv‘¨4]å{vMD"ø8ç}­“÷²1˜64”±>ÞFϯ©å±?|£ÿ:4!ÌœA …Ô¢ˆ7öÖ›m$BDÕÛÎÁî$TÇuÝ·±9‘뺛BÄÓr“¥Ô%êoÄ™L/Dí´^a]+ÆMzE>*ÃX¹|îu«öáúEÒË8nQ2%ß¶ûS(N-ïp'}ÛZWºŒ×Ø©ŒH¿*­p]ÛØÀ%'Êý ùµcºåŸ”üÑjÔ0¬qþzP*øYÙÏ­„›5v}g/ÖÓ-ä»}¦`êãšñ¤Ât6¶êPøèD;BÆÂÌçý ÿ'ô ø¥då&á28”­ôÉ­p0[V†ð<ÈJýUÝõ¸kîųøJ‘t}w|¥O÷qw+¼ûEåeßêfóp\/N.Ìkw#çJZ×éù&«7-^;Ûc‰8#Sê)èòÀ5htªNiÉ}ün¹˜ á­Î#ûܬu>¯Ý¡æa)\Cá–*íwóõgkYM Õ/ŠÚàV,9-B—¶]¼5Ü'Qßê~æØ\¿Ž¹™Jü_t7ÕW¾·Tz{øò•á%Θ(¥qà<%ä‘PƒÝ&ËÆi­'`ê‰q4/j–®\Ïqb8±¦cØ›˜ÈÁÀ5AˆÅ<‹Œwõ®ZÓɱkR6é݈ªNp)Þáª÷^ÖÔçhs~¥¯½ˆ¢bdÕ›#©†/éþ:Ú¸M¬9£Âòks³¤»Fú´DQÚ+ýßttüc E³Ks[›¡S~઎ް«nt³Âˆ±€ï•ûÛ¤…6+t ~—cãï"daÆ~±š~?øÚÆí­ñbQߪ‚ä v위oÝ›L*«Ìï½°Ê1+7Øt»b‰Ez³¨Z$d#íÏJ f«à;J]&ð:£VD»T°Ç'y!ì<ʧq>ƒë¶\"Jm=Hì)4!¿ƒPH6H˜@}–…¼s*’-Ìi#0å×'Sn®æNö²V‚ð*]ï¸jˆVÿc$(B¢pÚ„ØÍ†•V‚ätøäY†ŽÀ ‹Öë «³R.nè R¡*SÃ;ð· ;wŒ´¥y’ư$'[Tô‘LžØ±p›-OàÛÁb£ÍÂ7Ù2}}çÔ´À ž™‹ $oøÍÑz7û´¯mÛþNѶ3òç¹ÿ=ð!iÏØF‡X˜d†þã^ššèiºL@Œ¤®ÇwEñ| æ“W^<‘+æ€Ø—™Å³üd\O„¬VZûH¸lyçVÚæ‰ÉÔG$€ÌÁTzŸ–7sp¿ã·Ä‘0ðåª/:‡7¥vxM´“¥ /DI7Ýz«8YÉ2ˆúCæ€DAÍTCç é %vÁ{ºcÈÉq ¹‡{onÊÆßï é‚°´.4yœþìVbÄÜÑŒó,-9aš úÊ! V¥åèMŽƒp‡c¤¸vÍÛ¡Y¨Ñ~‰ž„~ØÔæq‚ ˆÏ»îdÉzë€aÁÀ@½GÉh -k¸Å9û ðW*_IA úC‰JÂFì³·“p WMáÛd!©)&ß î”áüå*|@%‘ò®íVPØG³Yúè{G’FEø¯ràÂAK¾.]øÕ%Û•ôÛ!dÿG» ,¨×a²ë3œ9 üƒˆ`Äϵ#vª¢(püòg£ôY, Ù¸G½ÊÛW o±¿N•:$¯ûº6þuã.aœŸµ åK<û ùåiFyùµF«+š±Â¤‡ÓSeØìc4ü¸»N^ Ð4}öÝAÄ9ù*œkÂÓØW=1”ÙȧÔ4¨ºK÷N²à¸¬6oÔ9Æà‡¦¼È–¾ÁfËû{†«{$ÀÕÇÿ1“6§GpÓf_Rœ=lFtPÿÎíhZTªˆýµ¹˜ôfòþ“Ò Ã+1BÑS1ÅÛÑ*7ë­¥Œ¹Ê*ß`Ü4çˆVç"ø.½°Äʔ޾Y1Îdº§ê[úL+Ì]„#n*î]¯`ã.}ÿâe?áMB˜“.ÓBHȺ@€§†IZªÉ+•±O%.œ€FTÆ ®¤RäË4k÷D»’ѹ´ŽQŒºŸ®}^(OŒÃûgXŠBF¬nˆTŒgÞ{Ÿ´Ùóç‡L·€–Ó2ýŠO²aqvXoW¶î3× ?4ËjÙØ£k’-"ϤŠóYÀP“øíq¯}­æ±˜K‘$ ÀDx+»W³†¬Éú:ÁØd5”¤qæf01pºuu1¶€×0Kʶ¤ÕhÇ‚RsL'gŸPª¯k-~Æ1)Æ/U€—–ïòíK×TI*­`Eª¡DÒ×ËÆÿ±¯¤M™±1Za¨Ž~(Źpn%ó{Í–cg,³Cs@9Š<þr£2#„$¥*>Eö’Îèß¡/XÕ¥ endstream endobj 2823 0 obj << /Length1 1673 /Length2 10035 /Length3 0 /Length 11112 /Filter /FlateDecode >> stream xÚ´PœÙ-Œ‡ Á¡q—Æ5¸»»4Ð@ãîÁ-¸C€àîî܃…`ÁxdfîÌÜûÿUïUW}}ÖöuöÞ‡š\EYÔÜÁ,å`ïÊ daãˆ+jÈòØØ8XØØØ‘©©5 ®¶à¿ÄÈÔZ`gˆƒ=ÿ¿ ÄÁ ×™ÈõÅNÑÁ çf r€Üü@~66;ß œù wˆ9@‘ ç`vA¦wpôr†XZ¹¾¤ùÏ@gFòññ0ýáµ;CÌ@öE«Øî%£È î`»zýW:A+WWG~VV ‹ƒ³å[z&€ÄÕ  v;»ƒÍ¿ ”@và?™± S4¬ .ÊÕ,\=@Î`À‹Àb¶wyñp³7;^’ÔeÊŽ`û?þ4`üu7 ðïpyÿ±ÿÃdfæ`ç²÷‚Ø[, ¶`€²”‹«§+doþÛdëâðârAlA¦/TH‰ª@/ÿ¢çbæ qtuaqØþ¦Èú;ÌË-KÚ›‹;ØÙí]]×'q›½\»럵±wð°÷ù X@ìÍ-~“0wsdÕ´‡8¹e%þ2y!ÿ#³»¸ØØØxÙy`'ØÓÌŠõwx /GðJàoñ ?GG€Å °Äüò‡ìãr\ÝÀ~>ÿVü7Bæ3W€)ØbüOô1ØâOüÒ|gˆ'@Ÿíeö€¶ß¿¿O†/ãeî`oëõùýeÕ“eü“ñß:11O€3€™‹ ròx^~ÿæï øù?¤* È_űýQÖÞÂÀ÷'‡—Ëû÷¿Æ‚¡üw%‡—Yèþ}6.6³—ðÿyþpùÿ›ûßQþo£ÿ¿I¹ÙÚþ¡¦ûCÿÿQƒì ¶^¼Œ²›ëËZ(:¼,‡ýÿšjƒÿ\eE°9ÄÍîµ²® —õµ·|qf ' çŸrˆ‹Äl®q5³úsþÓŠ—¶{°Šƒ ä÷‹óâÅÆö?º—­3³yyU\^ö‡ ü²TÿWÒÞÌÁü÷ö±sq@ÎÎ /ä—þ¿ .€ðeMÍÁžÌ7€•ÅÞÁõÅðÂÑ`áàŒü»­Ü\VÑߢ?7€UáÄ`Uüñ²XUþA/:í¿ß ý89¬/Ï‚Ý?’ßÌXÍÿVð¿à‹ƒÕ¿àKMA^«í?øÊþ_ð%”ÿ ;€Õñ_ð%”Ë¿à ?×Á—²Ýþ_¹ÿ òX=þ€ÿuãfnÎÎ/ïÑ‹ñÒŽÿà??0Øl†¼²ä`&j]Úù³V”ȃùÛ;'ÚðUÔ ¢ö®$û¾j°¸àÝ5Gaô²hïÂ^ôÝ&Ö1{és‹Î6£¯¾ÑüoV;á-Lw˜|g°„î]ÜØ÷ä{zôL8ìÍ-ßœ·ªz܈ÌÓã19]~[Ì>”¤i­¾­²:EÛ|‚ 3ý Ÿ——&´K4»«Z¬Nt~¡[–ÊåJdê4‰Dêð.chœk{xµœ ²•Att„æ(“}ô6ý Ÿ›PÞd0O½Û/‰ÿ@|ÓDgê2¡.L)#»;s%sµ+«fŽ:‰K{ÕæÁø…¹ÕÙžÚ'ø%ŸÇ’át’âY_d”Çýþ‚/T ¡‰¶Œív½Ù‡‹Z9_L¾gŠC|öÆèøë¡ª¸‚°@&é×Òc]¦‘Ù…ÊlPŽN·­ ö*ÓMp·“,Ž8&nÞ鉞®ÿGЬJ&HËQ}Ϻœ³Y˜óPEâtUîô`¸îXi[î»òu­DZ=IŒ˜%u‘¹òîFÇp.ÁãG±Å~>ü~bwŸ­¹ÚÃZ¸¡Uü–WpgÇáÔœ«Ä²é²Ï‘DÌi]sD>:e¸c犈߂9×ïõ¦jŠ0”Õr4åPk'•RÜðØ lBC?š†‹"² ¤Õï ë] ´ø´­‘¤ Ö¦E:ÇvøGtr«#ý/wc³gÂ7­ü;¾°î)ö2@=Ù#p˜#›¹ëg¢ª¾óÎù⠳Œ„kY•A·šb¦ÜkÒÝíBц´Ãg;¤Š/7T"G÷8«]kB0â¥ÆT†­¬üðqÀNa«€Ta ±óüëúÖ_•—¹³­Ä‚*ã†"~]£êŒV º˜‹µòÄNÕdüR‰Þ—Ú‰3˜a‡ÿõáÇÏ€Ò‘0ß9 ѦÉx`}ߥAÍ>5ühÙ9tÐÀì){p·í+X–¬ û݄߹wïJ»=~‡<:ò¾ïöã³Ñ²$ Zý‡¹vMŸ ±Ñ¨¿¢üñ‰ù'† z¯“ó3r‹ˆ‰Úˆ06­—×5½é=ý³Hã*&(Mƒ’DzªÐ‹0É@T~ç‘'ˆ¨[e£Œº±® öq¨+\¥Üb’–ÿ•!Oy¹Ï8šUa˺F¨}=×äࢽy^°ìÂ>˜œÒöh)ˆ­§ÌkX»,ÖÖ.¿>¶Æõ,/ÏÜÍÄî*'Ž2*"hçââW›L’8ÃI»£é8Yb²ǧfÑ“•¢ÓÙžf•Ô"­哱µs½1÷˜2@+_Cµ!Cûáh*lUÈWJ->ãÓ9…>u.n(œ#jEs ùxÒ…… öA䛿Yâád,ùœ¹daÌËôáÉ/º)Å É22qÕ“œ9 6mSåÀ|ÄIâгØ_˜¥ËýÕš{£p±9Gü{M@g©âõ\²óVôíµa ©PÇ¿P²±:ãQ­`ÊûŒÓŒ XžÛ€{"ªò<˜·®b¡§(4ÅœJ@ÂÃÀút 6·U¢‚k (› ¸n~Or^vò*üf‹a7öƒþ”¬h‡ƒQ›òÃOM±ŸiE"M¤ˆ²¢™Tš¤FÍY úl 8ñÐ$=ÞVùßÊÒIï R‡µy¼-̺´"“­8œá‘N­ìM£bá‡4V¾Ø¢xgRcýÔʯ}{Ò¾À¾0ÌÉ”d•µ¨Õ&d~ŽÊ tçVÈEA¥š $Â}‡Ðœ7Æ §rrÙS§ÄÌ,Nó¶tGQe¿p‚l½qšUFº˜–‘_·h¾ë8;Ð⃮"»ÿs`‡þ´÷8µêÎ êêú—Ÿmg¯0®F(+4L+«ô½•$wÉUfHãtˆ:N>á–‡¥‡ ƒWPž©¼Åw2aÚú+2ÞÚKúN‡nŸ;Ózê}<Õ‡W îš¿¤ôán;!ø`ÔŒyUÏræû¸1 BXyÔ‡¾i4EÔë.WiA=´.uñe2cóÕÔÏÿ¨v0Èë™o¹Q`# 7ÚĬ‡éL}1B#j%Só¡óê‹ì™Z•¶Á&ìT¦òÏbÓ2ã™^×V—Œ^{øs­GtfÞ¡],g—ÙáAoQÅìdž‡„C] åM4±q±š6ÇWAú^Ýóä*qÁ" ÖNCJ‚NRä¦K ŠâïEQ#ž€6Te5ÁÏ‚¢¸2ÌÞ´·û´¶ž¹Åô…q‰ÐÓï'Ó¼ºK.˜ypánšŠ–"ƒž‹ŠfNWÛ0‚k‡K?ßûì«P Ùeökp]^¹úùó(bÄG®yzŽáÙ%4–=D.d''fŸ¥A|ŸÇïb!~~úyÞžp•„R^҇戩ݎn|Õš’9ÇJ;—HÛ/ž×}e ðnÍ ´•Z=¡\ؽló ’<¡Þ3¡šdóv=o^¿q—üÌŽÍ› +˜FAÔÒõRv7²væ§bÆJXEQ 1 ’åŠxŽAÔ4H†çx%NØcd‘ æÐG§/PUÕNí-kË÷ åêì&GP\¹‰Ë#I-Co¯Vûño¨„IXŸšêò±¿zR®ÏŽRQ?žkÊ3÷4ek#tH!óTMKš‡üûwÌ×tn-ì^2íü·ÕÊ¥CZÐFriˆp1uqYþ2½Øús1eÂyèR·’ªí×X( (ðþÎp]IŒªÃâRž1ŽÖÜ,#úu7®²ÑqÁˆgþ‰wA',ÑKÙ°Kìäcס¯Á¸"ÚôhªCBˆ]H”ºö¬mÆ^ÂpÎí—¥É:©¾êÙœ«Èæn̾Åv½šÊSd"ª8¹É¯?•í"äÖD”²&pímaºú¨7;áaŽW¼£13h¦'à=}Šò¾c]›Éƒ^‰¼*ŠÜúì->(Md ‹À0NÔTþ „2BJQÇ;í–ÕÖÜÜÃ#R“–Ž4Ð:6ãÕdkô½¿S lá—91ØÏf¼›*Ž ã ¡a*ýbÍÔ7msy^Â4ðÙhÊœƒX3ž1h¸fZ§+iïrý@}] ô¥aê~^p ”øAÑºT¬§Z&¿Û£^špÁ;D³íÙZ0@,†6LUêN‡WÉu·b8“Îg)Ï'„Ôsr­­[?™د«]k#ѧ‚0FŠ+´›cäz‹l#ØQbž^Y|­FŠäút¬L~;ØãÜ_ãÎ$ôÅia›³Wæ]7´Ë‚ˆª„åi¶Â‡7ö}(ˆÍO½Œ`q{ ;"Ê›ú±VT¿æŒŒ'ÇQçŒ1`˜"&%Ú¡-+ì—ÆN‚O\~d)ñêH´Û”éT‹Âµk]|hæ»ÊJüU¼T7É’“HeŽLó^Ðþd*¢¦Ë8BhðÜ»³æ›ÖH³CÄàRËyÆüÉúpk@éq^âšö°Áz0.YœnfNW "n¤¡«ìô»cY³1VGã móò£m9»ãMSáü0aϜԤC,¶š×‚š±ó6_LÙ,qa4 b1KÂÛK¢éñ.wF¦ Ã`Ì{ÒOÆûìÚgnÖûJö²køëìÑ~:­µß2#õE˜Ûîàî*zÒâ¡õ•K=¬KÕ£¢¨½:DwE²/¦çªš6*ò±%Íg¡†<Ý¿œPeTÄ;½Ê7.³ö22ÑÙGôAÈFÖ·kÛD83™U4x™Êɬìd^…Äø`§íÛßÔ¬æ«ë:êºÒùêI‡ñg­=LPÎy=z6¶wY˲á¨ÑmìøSÙfõ½Öcoy—Ø"Ç%Å!hanÍ©µÐ}7];þ—ÿJ¦Q‰ËvÔUˆrÐL^’¡WùsÉÆ­A,â€4¶Ç†Ôèn†úTØ<σYíÁïµ&T‹Þw°›ÑWäÊ•lqÔ*õÊk*)Z£]˜†7kÉFÎUBÅe0gh8jÇÓVº©‹-‹æ <¤»šV~"x»+v4´Û3Õ´D¶ù`N ¤¡y!MDYq¤(× 2ÄH„ØÝÛû0–únZ¨­ :m™ŒòÆ%òµcª¥BÆ=AY©ÈTcËÒß*RŒVØñ:±Sx†ÊÄap27 •~”u,ê)M2‘öjsX[·½‰–4 Ž(æl–žÐ‡¹å¾dñp°Ý,—sšAÝ9f0eµ›1¿Ý|Ô8mhæ£ЄÀ‡ã$FßH1äñEÆL{Òðí*){×ð')ë_úW:ÓûÝŠ‰sVj62«~0bŸhÀ¡IMlnž9¾~œË˜¾îçVy¬]`7ê†ÆÊÑúéF ó¶€2-"ý5°êÃ!ay,9@`Ü_%(({@Öò=`OîÒ-ŠsÔ¦®ÒŠfÏi`\þìÝOíWjÑb~¡Ô[Zr»òe¼]:H§HCõ=iÒ=êð%rVÆ·$ ³œ3(>š—œã:±ôòóŒYÅo -p‚§Jײ7®Ò¼Vü2Ür‘lLvО|»ÈÞU‹Éɳ#ðZÏ_™„]'3¿ßD>槆bqªTŸt‘gÙÄ8–"TV¯´3•m÷¤ùVÃðTGÁG±õ?8ï3u.*"‘]ÕB£{«SŒ.O¶¤0-R¡&5ìó}’¸º³,£æ)GçÝßìSc" |¿ðÉŒx“¤ÌNT¦è0 k'™CÓßÐTó‹ÊY) ñRs†aé†I›ghÀ÷“ q¦SE¾ä=mLÄ2݈ÞÞÿ±‹¸Þâk`Â4„úŠœ'4P­^‰‡ÓõAóIÕ<æÛÑr aõ9Y© 4o°7üüŒˆ¨áãù*Ax{s›`à"÷èwøž¬“`™î!U’X—ŒOԾ ʘ-ÁsDrñÝüLªìqŸÂb Zöéô\óë.(é9ÍÃ"aJYn}(éšb;ƒ_„UNPù7CS'Š >œ~ [ÛÂf…mÈÔ™ÛFeõÂé‡y–šÖg߆|"ö¸0-N–óärM^ SŸ7Å™%ÜO¿‘UýŒgðukŸQ˜ƒÏýK.+„”w1e·«\H÷½‰qéQc@LEû0|O%¾°%¶þI%®çýÁ5nMwâB¡~_Êr8VÏB¢ôCÞÃgb¥1©ùö.e±ÉÄO‚Ò_DÄ OjT~ö-…T.B‘‡š¹…“»ó ,Ë%H) zivn>©U>¦FN¼—J5I{Í@Y–$d̓íܲ:^¥ƒ 35ËtåWqÊ·O_#íÓJŠàôÍ zÓ˜ ž_-˜^(ÚI8é­7zíðí:™‡&»+àðž<ã;Ч¹¾ˆ`cÐQŸ*åý%ú÷´Ä!zT¸¨õœ>»_¹óÃèü ù ѯI‰ÑÈ‚`„ÌÌÕ"$EYCü”õê0ØFka̓¤,âWM<¥‰¤ÊoríxÕíßý“Êý(ØP_¨¹"Wòa§Ïyó@¤3…»+ËñuòZ}÷Ãì9šôò;e3$u;74øÃî”a_3™èüüº@b„ìLΩù«í¤ªjÔ¸=šÇ¼K±ú;V3, ©#dK×V¯tùäŽU~ŸLo–©¡ ”7]OÉ&Cè™Î=2mÛpìW˜”·iIlªå²´œ-êô_—m)'1R(ˆ²Iï9·ûa}oßë‰M¨•Ú*ÄvΈ³ãoqÆ×í¹Iµ xU’¤tî³KÉmSgGëk-]%[jˆ´m8}Ê=J¿Ô:£ÚœcU*7l*RØV‰“~Œ¢þø‚§S+ G–@VTÇÚæ¦äAÀ‰¤²fÚÿŒœ‰©£²Fô ý’¥ï&ЇaøSÊu=0œ¼Ø1@u0õ0yeO ¾×•.¤˜ô§ßÑîRiS-4¶Q$Ch:¡îØP¾²“QŒP.º@Wb±˜íÆ´@¾Ä!ñ!*zMu9Ý7Ï•î h‚ÈûÐ~f?ÇoÁ^‰zN.ıáû‹äe¥,à˜ֿΠEóTö,qØKŸp]Úõá^È`Ð03!¦ã˜î)½ƒW1ˆò¶@»*€wË[Ѹ…çW¦î^払b¦nÈÙ+Ì_²6Ú"¹=f§-<œd1þ€èë:œ¸è”šæ0uŠ ù„] ÛÿÃügÙlÈÄà€ êóGÓ{çLФãf:·Ýç.Ô õœiÉÔúj×ÇæB5‹2êöj!Ü-9úSzEÒì9õ4ˆ‚<'!vœèà ‘³ÝGkˆ»/˜17jÂanß<£Ñ¥oO)B[y6žóð×`Ík©[ᆅH‚´µo6 JkäëõcàP5lkyfèbH¦n“Q}">˜†]MÃåWÃ2»h,_/“6¨»Þ†È„üæSÎ0=ôÌG²™ö M–e85‘e|!é4rÉ:+HFA}ŽSÈ„ùᧉeð^ ̃¬-8¾›9¶ƒwØ0érû'éÓm°Qol÷½áJàI(7Ÿ—PŽ—àt¡Y…ˆ¥Þ¹ðذ÷ÞùªÁôB-¸Ìù®ì ›Á.9]Án ›³—œ  Ï”õ&/nò`¾(ƒ,’ÚÄl !^Q«6ëTøÁU¥}Päo9¤ßûºˆ»®ÁÇ$û©Ý IçÛJ«*Ó}åú‡ÇyNÝBW)èI (ÀÍ4³Ç²Q·µ®7¦-¾¦¯ÏLQ[J™;ðD¶И)ŒR"®–x6O§‚Lt”¬ê)5ªHÙôï´—H½™;ëÆJácrž)¸Wãþ˜§ ‰¢¯ø0²œùæÌs >”yîǯGš•ò SÝ!±ü ¼ Ùû ÖìÒQ<-Z%‹´[öh·ÉÎKØ&LèOú.rŸKXÆ)R¦iòá—!¶57;p o»Uʱ[¸Pë†lå>Ê+J+mç:þtÌ…ÊôM÷•PÍŒX€f?wŠý.Š)Æã—ö¦8MÍ$uóvÀådþ;(Ü®Øtýà¿|CÌíÞ®AÞ{=—}¶ŠcИð58ë+hðð­þ5Ý.X©fHg‡³Û[Ÿ‚ ·Z®zBvh5 Ëïs/z% <Ö ÿ.UÐî”2|êØMDóÎÛÃÔò.m®ä\! m7×Vú#l©] f5"v“ÛØ ´"â±§ÛœPªn¬æÕq¦s±+€Ï¸l¼ôœ Øiúù¡áúU©™m‘„$Á°Bë»Eí°?xÒøE>Ư;+J`§Pßge?À¡§žž?ÚÑ·®-™Ñå 9¦Ý×Yë¹+’CÀ|J\6†Êþ‹MB^õUe™Gùœj„[­þcà¾`´ôþó‰Tµ%ü ¸Ug›#ZqÌh§ƒÜGqkN(,O+ý"ëôƒ¤‘ˆênìÌ»ŠH±Ú¤ ø+f­y‰ÏW¡^ƒ‰áÈÔ$µ¦½]n¦˜×*[A¯íyôH3ôZG­‹½ mˆw‹f„“aÅ9™l˜Æ^å•zêŲQn¦ê®ÙôE·ÚÂÙú«Î]ðMYœÈÑn7þAGç§êHT‡ÿœt/ uã#C:m”]\Dúgi×4”9–ƒ{‡wÎç募o%ãLeÇG>W¿˜%àÏË‹…¡ÔùT´wà^[r¢k9ÃYDå1óRÅQ o¿…ùD·!sñåX!-"¤‚’ƒ/üiQYŽóˆ`¶gbâf/a$Ÿ|—®KÁßQR÷`]4†^óüë«~ý/ÐÍ@nB¹~SõQÄrˆ8y_Þ…£ÎÒú fpP.\0°x«dsJFZl¦A%Cw7|ÿÕ±Þ¦^ö@ØÚ[ñ'ÙåqJ O 6“ÛLÔj}¸ ‚¥f¯Ÿ|•ǰ™t¼š¦—ß`ǾJ°Ü²,lã$ ÄiÌv×02÷bŸ¢ª‹6cÆ¢ÏÅvS˜†ßm¼,ÚÓÑ?L¹;ëvKèK­äyŠoè Œuµ®ÉE1ÛéyâfßGgY`f.ìÖ¹ìñwn½/ žzèKÂÓ™-Л98ŠËƽ|xï,©¢Æ/Ýu¦¡®™^u¾_iӤƧ•ÄÃýLqj6õm>w]M#è’»³7ŠëG«bg¤;F¤îpÙOÉŒ›¨ÿÓÆ!ã’÷¸#Ä”6QõÛLÏkUy]’-Ú_—È»AºoÒ{¾ßåà½ãf JE »4Ìàö›“GuÕM\ÃM"ñ“pQœIûÝÈðGa@y¥õe„åŒ\(˜Š$q|߈A‹¨Y0Ãn8„ný¢ghé7zŸßæ‰æÝ³`ìùH¦©ïÂù€Þ=‰'Ú“@ßTN©A?ûsNÊ3K§Ÿ(pò”xø¦êŒÁµQÈ´±S&- aßB·ßëôð-[ª¼òìƒr®£r÷&vSFdnŸ6Ô´¤çf=[Ê3€2 µ*¼¢/ W±@÷!æ+2Ku˜­ê6Wwè-‚Æ=°£t÷ºëóã,êâè‹§ùø1´ Tdv‘‰ÈòþGtH ÉMl|vœdlo›•د¶`å\±·BŸ‡‚àLyNn"ß´î¯L´“dnxKÓÆFý§šÔ(ùú¬Nž¾‰îsúd–%®XCãLîÆ©WŸÇó ,9(Svð’üïó,~ ¤á>•>p~hÙiM× .†À¹rg1 yLðM^ÖÅqZ>M÷ØÒt¿îòBï:¶u¯o·‘“Ø€tß³}÷&vac?´ [J–fr‰u9S-¹*£p¿w%(OõK³ÖW8ëö.k,äHÜA”4žØ<ès ”ÇI²6EfŒ.J{Ù4,Fœ·CtËk3-ÙôÔºÜ?ûŠ›7ÉŸ!ó¶ðÑÜÌYÚøzô$¬˜8”û®žeвØ-ÊFbªEA[üƒ!>@ºzLĵD²¨ORn"žÈé4ë÷¯Kõc-)¾VHä* ^|>î7Ö~6›Ú¯ù•Í!üdŠª¤Öæ´Ž_ƒ¾YFÀ÷«PøS"“‡ÃÈ^/*D+š$º]kIü¬~8+Þ×€³'¾Iz‚Ïxn &|‹3 q|Rÿ]¾j™]]¡^d9+æ®j¦w.{}M{xË©¹u(v|¨ÙƒÊJp‰íºÜª~ûeíº™ ¯«ÞEýw}¶æem3Qÿã5µVÂZË’âÇõ…¯þüË´K”W$Ä(¢WwiïSG;ºŒ£rÖÇ„±ÎyœW%1ŒømÅÈb’sqë Ž¦0÷œ£‹ö;’6V©+yh@Bš“Þ}Ú}k!.wsM.ÅO…íZoùˆCËWˆÎXÃLÕZ|MrvZ°si–×¶-‹L!ówÏ ¸ú1ZÑ&wl%Ékx®êAâüñ´š¯¾-Œä÷ÖѼÎsܹ–ÏÆä‡PgžŽj Ýa¢|N&•Ý®ÿ$mÅÛŽ‘[ÈJ¾áÊè@m€og±Þñ)#}’7ßË̓÷ÁCÄîÆH, ø50‡ 46œß•-J F‰!k£ @dÐò‚kíS¨ƒ¨J­¿Åþø.NÙQýû¥)‘QµpÞÎi¾ÂAbÓ0EHc@•C¡ÎÆ#Èra%kç^éÁi„¾‰ 'Z#Ü¡Rn¨ç-À‹f³Œù– ÎÌÃ4úÎ\“ê;Q=:U•tTèÏGIûúJ˜ÔÊ(Ù AT˜Èé7UEÛÆ?*>©3­,$§`vbÊ{õ-¸¹»úØ?rêzüµ!Þl’"ÓT·Á|Új“£ùj£œñÈÔŒ_yªÆTòí›=x¯<^(~,M]”$b EËØòœ_ÁcQ§Ú# ¯¶É~¬¨‘ºùÚÊÇ õ%1\Õñ>=3áñ6ß³²µ¾‘žx2¢àãOðK^CýÞl;Û%¶æª·9%gÅ™—ÿÞè’Œ=K‰·ãJ­ÑBóºÙÙœÜ×î휨)%Šm/’eè#§”ô¾•–ÝÞìYq­ý°¾ƒ6)p£j§–ëZK¦~¯ø¦bLÝȆÈ|uÜ¥Ka¸=*û²$ò`FSÓ;›p…Tö@u0VUà¸g\(zÌV`›ÎLu'=§ÿp±4*4ÓC›¿¨­pÎïmjQ ©¨{ï ý€ÿK‘>Ûæ›àLÁ} Í€'¯N…AÞÊœaRÒ¼M~{w T*(¯f;Ø]Dü¹ ,õ¹XŶ¯PF SÄíõ±4¶ãÚ3dĤ§î‡6`¡6&DdÝ|¥ÂW¨\ ÿ½•hZÚ1×±$ÐËdê;Ô“å,•77ÚSzDýÊ«Rs¥Ÿ%Ôª²veg¡{­´ú¡:Îíj 7)`RY•4Ú¿”6~àXü¦Öç jΘ.Ó]+´Kµb°Ø”ïª|F'š£‘$]4Üi.ÛÐdM§› ÁøñVÒÙ¨¹Äœ8>k–SsöÙA(4¨„ÌÅRéAœ ¬9釪íüå7áí/S#j6AÈ'ñ­QŒó ü£g¸§[Þ!=OU­¬%y ¨,†ø`áШ;.§FCÄ[ë»&ñíûiVȇØ#!|¹gy»*PIXçyÁÙ­$hvQÓ͹;%sš6üôó"&BÛ½È!VS ª–Žàf'׊™ÿíÅÇcemÔÝŠ}Î8óHd_Y_ñ0>_éèWþ(䯾â5PY¸çO|¼eWî:}´[É|§äb5ƒÄœ¾;ãÕ žu³"Zˆšú¬È1sö³g^‰Â+¡5ùÔ³RFcÀ°®é§=AÞâršhÛù˜Ù"„v~G£h¬oú KËwoQ/‡@Q_…ç:aõžAðÒh*%Ú4üi­Yݳկ7Wµ°´ËV›„NjǩN˜"|`ÉyÝÆ|“cò¢ß¥W‚ª]aðû0:~zÇvŒ¢ç ª·Îfs†ûSªvu埅ܺ!ª¶SÉœ»ÌåM²WzKŽc P&%ˆ§,ÑÓ”ó²ÝnèD]0›ãlšùجZª„P€®HºŸ©8õS³$zß.Hõ“¸éJ?ô¼\¸ùLŠÙ÷«<¯$+bbÍÛåɤVœ²­Ô* ¡|1e,ꆞ°žÖOûk]µR3•wÞ“Y_óQ£R{‰ß(ƒ!ÙCåEpϘKø")î]K&¾X‰¡­{_c‹‡{y:e¬·¬¨.ΚµuùW¦ŒY$‰)^Ož¼úÌ }ן-À‹y1ý» Zä#Ë/³oÁBA%íNï×'Þ‘~xýD&H×D3…£¸Ôüm†Öh†Wùbµ1œÀ ÉÑ€Áòg'†Ï¹¾?ZÆ«%Ѭ¾X¦ö<‹aEXãÜnádè-)c¶ÃªŸ§é–I&¯i~`¼7Œì€®$ÁÅBtº6ÇñvPíSÇ™¬“„dTO<™£5Ä%¹Ïñ£pMœË¼Ú$¡‚¿ÎÔå:õÚ½iXA)‹æíeöâ6|­}›zVeÚ¡¤ÚA×åãŽì*Bl‡É¢G)¤´“«6üsFëÜfñõTáK TÊ~B²Ùg1Ât÷ˆ³ìÁuœ3±5,OaÙw HìF»ôŸ'LÕ“˜‡$CÈW¿â©êa´Ð”úá=Y'$P˜H_¿ÒJ õr,ê™ùlE‹Ñ´±Ú]ÏÀêKæ¯K“<¸qî‰ïçÄù4–͈î¡a't¿7ظñŒ“+yp>Z^Wä8@[^y `柂¤ÿ&X(<wF´û³hr5þØ ^ü8ÀÈ‹Ûp§,ñºjÏ6p¦/X_E=%똊4Yò }ÒPc2ÿåðÊ«³sèº"¥ÜwJ› ® ðÎ’ C;¬é"LËpR|~ÇÙ†'÷Õ|cŒi«ã®+ãŒ]ÀbJ÷µ¨VG\úûX—È׸°äû¦U†%çÁÂ5\:-|PßÇî«V‡z§ç±¡=JÛáËây~¿f®\=æK÷YB•ˆ'Z¶/5ûE‚Nù±§i‰Âúߤ©e·<Åk¬B{Œ»'nž” ßh¿: TXhÚÐl¥xÇ•’ßzçxŸaù¿Wàa²¿Gv#¨¥¿SšÁÉA£u¶•´p3Öó`›ÐJ ‰?l&Èahš¡¶+ˆÊÔeÙE´üu¢.8 ¿y&²mYYÁüeCÓ›\?†*TéŸü‹à×Þ›úCp*ÅzÏ ¾šç{ŽcLA> stream xÚŒ÷P\ÛÚŠâîN и»K @pww‡Æ ÁÝ%x‚kp îNpw—ÁõöÞgŸœÿ½ª{‹ª¦Çgs|6×j*2%U&3 PdïÂÄÆÌÊ“WScc°²r0³²²#QQ©Y¹Øÿ+G¢Ò:9[ìùÿ°s»€eŒ]À†ò {€Œ«-€ÀÆÍÏÆÃÏÊ `geåû¯!ȉðÁØÍÊ Ï Ù‘¨Ä@žNV–.àsþû@kJ`ãããaüÛ bt²25¶È»XíÀ'šÛTA¦V@Ïÿ A+héââÀÏÂâîîÎllçÌ r²¢c¸[¹XT€Î@'7 ௔ ÆvÀRcF¢¨YZ9ÿG¡ 2wq7vÀ[+S ½3ØÅÕÞ èŸP•–(:íÿc,÷FÀ?Ű1³ýîï¿YÙÿíllj ²s0¶÷´²·˜[ÙŠrÌ..Œc{³¿ mA`c7c+[c°ÁßÔ"Êcp†ÿäçlêdåàâÌìleûWŽ,…—YÜÞL dg´wqFú‹ß+' )¸îž,ÿ4ׯänïý_dneofþWf®,êöVŽ®@éÿØ€EH¿e@+++/;èz˜Z²üu€š§ðo%Û_bp¾Þ €98  ¯•9üÉÛÙØ pqrúzÿ©ø_„ÄÆ0³2u˜-¬ì‘~G‹æÿÁàþ;YytYÁãÇ`ýëïßoúà 3ÙÛzþ6ÿ»Å,2ÄÕE$þIù_¥¨(ÈàÍÄ `bçàpqð¸ù¸¾ÿåßüÿ›ûßR%c«¸ýOÚÞàûO àÚý7 ·æ‚öŸ¥¡üï ð4´¿‡_•‹ÕüÁöÿyþvùÿ7ùEùþÿËHÂÕÖöo=í þôÆvV¶žÿX€§ÙÕ¼ò ð~Øÿ_SMàÖYhfåj÷µÒ.Æà ±·°ý·VÎV@3%+SË¿'æ¿mG·µ²*œ­þºoLl¬¬ÿG^9Sðâ nÖß* x£þ÷Dq{SÙ_«ÇÎÅ 0vr2öDbÏ;À› ¼£f@¿GÀÂlr»ÀÙùÌANHµ”› À"ò—è?ˆÀ"úñXÄ~#^ˇ߈À"þ/âa°HüFlÉ߈À"õqX¤#Nð,ÿF`.²¿˜‹Üoæ"ÿ¹(üF`.Šÿ"^0¥ßÌEù7sQùÀ\T#0µßÌEý7sÑøÀ\4#0­ßÌEû_Ķ4þq€-íÀÛó×Åø¯ ø\cgS++S+'SW»åœìÉÁƒhålóÛÂä_ÄÆö51vú­Ÿnú/⛂lÁ£õoLο$vv¿9ý5s,f@p½€¿#€óþϼÿÛ÷¿ôŽ®àEý7+pÁfkl÷G0wóßQÀæVn„ýK ruúÃlbñó´üÍÜ KOK ý`™ÕLÔú®»Í\ˆß„¹ÁÛþµS¿õà²ýÁ|¥²ü>Š Ë¼‹èÁ5ýfvýœÃo58˜øÑko 4ÿ]FN¶¤NÿS]Npàù°ýî'¸2¶®°¿Š°8þ.?¸TŽ®  ™É=áûGø¿áÙØÀÆT \Äß¹ÀNÎ@;«ÿ®¿l€nÔž ÄüÈú—!¸@ζÆÎ–çñûXðµÏâbéücÀEqqýáŽáú{ŒÁgþývâl rú³²à>ºýÁ„ÝÿXpP? øTÏ? ¸+^¿9ƒ#yþÃà.TSW'p[\þ~æoÛÿâ¿_l€@ )ÒâÈT Ⱥ&¨í;Óîø»iª]Í4:&ïE§ï®hðÉtU™ëN7"ÉCÝ+Ûâ´×ï—HŸ½›ëàC[•[}ž ãU¦v[‘&ñú'òEjûÞ"3©½ßóyvôѰn†ì¡ÊutåESú‚}çÞ+éQÛWº<2·«¼WÅ-‹üTúƒ)Z=J/ h†*Ï$k–€Î…é-=Ö¹úÌõÍ4VÎÄ+©L<’ïI4G·Î{Ìý¬×j¹»s'!%¡Á[èk¬Ñ)joуüyïâ¨õwóÙ¬tÌë£}¤>#d§üºrÒXø¬¶N‹|’£”¾­µ,Z=(ˆ™»ªFô5Çhó æîî’_› { öCoÜÌäÝbá<½÷6a®µ¯eOk&t½†uÍ·‘¶pWEW?<‡:úâÈÃ_íñvúä[g”PV{÷XOœ8L{ìy¨~ï/?sEC‚ÏONGÇÀÎÿÜÀC5]Í©‡XÅ×j¨×E§;D¸$¡¾Ììx±÷Âyš7ª“Æ+ûèåîN\ïi›4Q(Íe‚ÕHjmªƒ[…–Á˜È““?7T*[ÍGñ^fÙ¬òýT«Ä ä˜|èþm—aiÞ£&…CÍÃñ»Æ¡ã˜¬Pc¿¦ÆTMâ…kœ).m–¥mAšþüƒü¼Ð¾DH<"ñ±Ý‘qêÜhiän΃ÙÛÔ¨¸tKóÆ0ÝŠL*<ѧ¡áË*‰na •tÙ’Zýð±8AÕi¥À¦ÎWôØò‚w×¥[º£Ä=‰‹úß(>¦êLwé,x{ VEÕ„VhRП>„Ƞƪßm™ ç#n Vò½÷m_ïè™2¾ž³f6|Î]‘"­_µß‹68ºëwš–oœ¦÷°kšÅÛÓ®LÅ:YAevÚÅ.s0÷fýÐéÃý¾l?ç0K@ÿˆ¥ªÝÒgb’ù®HEfmè›ì ´]¦íÁ µæŠ?~äê€7Iã—óg;‰Þ7«?ËÞfÕ¥v-ͦqÄIÈ~”Æ )ày§Æ#²"ÿ¨¨„Á,³%5Ì`¢U-à[“p—³gݧ­u->ïZFÚö•k Õa9NTº­p3/B€÷T’Ëã ü=š“ÕR*}f–óÜU÷Õ]û{OÊçìÝ,ö6]—ÉCÃ)K_£ê2…-¯Ò#šL27_èßBQú#™õEP”‚Q‚3Âù0Ès/JèbJ|Ô§~ö—G™ãÃÝ—a¨Ïw¹Ã˜1Kí.Ê}Wž‘É5ö«Í¨!ÿÌš§‹êØêýk*Þö &!äT؈ ĤcØõ•I‰ÃêÛ¸f¶$ñ‰À«_Þ£N}ñÇg#ìùZ#a "œÂ”•œuÙ]èˆoIöEÏfá~»ÏÞ™ÇÉR˜›ÓÄÑñ¾lKïײ±×Ññ!]x#óFúù¯€Hq@mš–ÁÒÛ#®0 S¿wöÖíì[ßgáæLqâÜÙP¢ŸîF8üMr¤õC3#º<›jøcFwPÍçòJVŽ"w. ‹Í-N¨:ò­.HIhi¼KbgkFÐÜË^T÷T4¼^/F¦ˆ¶jÙ'Æ;÷|In%*üEg‹AÓÑ-ñ§Ø0ŸºRÏt sà_i’ã*BÐ ½§$ÒÂ{Œ734ï&¸V3ó•ìDfr5懽V‡¿&d˜â‘†q¨¡!å(¹!Q¿ùöm»ë¨<^ÿVE%£T¬@ Æ Šë™âJät“Ax@ô˜re€îè}B ­&Í#t(Ä‹hŸd) !“S¨Z^Hò,ž¶•? z(£Mtñ>5†ßx™8y†ëEë¢öÆC‰ÑO!Ì)#ˆ:ÚäŠi8»ô‡·È²4è²[Ó¨4B9˜™âJ ŒüòÞª’ì*hï¹õr6„™Îg ð´¢iü—®ý$ð˜-Óz`oµ‰r.mK‹ÝG*ÕÆŠŒ**®¶>ËóUÃíâÈXü0q'ÛJEmsî Vû‘Qñ¡Ú$pˆ_Ó‘LßϪ?Ͻ5Ñèõ ¿>Šf·ÛhÃÒ®EM-VºÌ^*h»ÓðóûXÂeÌmO®ÖêÍÜv@šÿÍü*€¦˜Ä!löL™6[óÞMYx®zÇTy1ˉ⬕õ ±w-l?³Ø‰Õ˜,ß—©>&l·-ñ§NC.’°ÝØÜÅ–§ˆÏ½ŒWÙEf[¶\4&#&«ŽŒ)R7ÌÅÄo¼}›ˆ ö·:½’—°ðŽ®c$ÕsòIPíW]‡3f,ÐPÌð Óô½ßS°6[Úч;€8w#õHlg5¾ tYˆÚ”ŸÞ"o&å·ß 0Q²ëG| 1|°.3± °Š ~,Ñ>.±u¸åÈCj=-ˆXÇ‘iÀüúdÃõ:C;ïÄŠdÑýWȈ~1AVˆ›XU¤Ðk[¦z-úÐHâÓ– ¼"YgÙ‹WÞ@ÏWqf:Þ¯"™.F ©ã £Å£$„Ê TÿO^8F{d>/~Æô•cfûêÈq0ðtÌ.ÒÄ–Žñó/a$ô¬Ð¹Žgþ-ÕþUBûA ¸êˆ}ý¤ƒ±<è½þ|Š. º>Ñç\N¬Ð¿šú^xáד5Óˆ?Èõ}o‹ñ^95ªÁI4sO"ò™B•”yõbiÌ<¢iס _„H_ÏçÎ߈‰í×Á ‹ÌGäY÷®’sXÃì¹Õ £ÂÆÚ<°^áøt’®Ê³÷åjÔyuüæÝê„ߥ®óÊ'^š37#Y¹éÏÉ·$´a"tlc Ìßüxˆæ±•«ì“iÎG:_.Ü©uÁì:(êa.i"þÄì®)ðœbìDÄ/•³±‘­÷†ç3G°°xb„´=ô)£n#òÿA€&?hLÿu†ò&üm‡ÅJƒÐ ú‰é¡ßXO|M#N¨}“údú8[ÔçýB͵þ²øâÅW”’4W8¾×%tNÌHOItÚ©î—õuÔâÔîÎò ¯á-4b·a’O¹©Î ±—hþÞ§÷:þ"¤«í÷ï¿=Rv‰L„ãö…ÈÇq“!_‡àµ;ƒžeÎᇪZˆÖÙÂ`/Fó©?KÉT “cé:èw#/Á;Œ[F-tåŽw&_„¨CñúOÌ&zåí¯µË…×ú?@%â?ñ“ÈF T^?äi¾Rj%]ÃP.„òã› ñ9l×I˜}'™“Q¡…äÖeR£?å$ËŒžòÔ†0¢‘¯¦…F®@¨:–Ç.S¡è7÷W#7'Ž"‡Þ¦¾hQ'¨´÷Š#ë³Ëù…ôBpà\[ÒñRⲈc˜ºII$Ãoa «?wÁh”ì‹„Öb…ôúζNÉM‰Ûèû )¸Îf½kµÅýÿLÙÎY „üVW Ø/‘ÛetÏSsU>5ó¯^¾»ð}[/^7RL»­:<2ÆÊœØQöF‡löˆù‰â×°4ܘ@«¿’>>Ö÷¡ú‹f<ÈŽ—䧃äihÆ$òAጬĀ›mÑœ‰ñÁ§y^Ÿ•eɉìµÕŸz-R(Höý›p¦ìaëU¤Zãp8¹ldÂü¸›˜Í)»x.$=xÂTÍS·ÉAª@]¯Ï9À1ˆ`_Àðº%]êÇhk¦‡`„ ÞÅ n·k/×ü¸÷&Ÿ#û­<êLûWœ–±¨:÷‰QѤOŽà°b c—š …0PÙTTÍ`¯ vµ)Ï‚èò»+®§z æùa#ðÎ:’1õ‘ïT°ô'%¤+Õl<Î3¬-L²¥Í˜iù‘º¶~–e3GMB¥Rå;8v”^ áù• zy0.y$Œ™ê;elqƒ*Cꛯó×Ê]¤ÕVÄž'æÉŠ“Ž[ú¼÷”8žM¢a 9'Tïwæ å”4‰»>_úëOT÷ô‘hX¥.fÎ_ð2Ä ¼LZ?=rI~ó[ènÊŽØ#ßΘ•cAFlë›8{Ñt òïNkŠÔ•¦ q0 =Cr¹®¿“!Q»|¨H” Ã…ä-ÖÞlijožœð~ªf @o»{@Èvyýá«ôt’äÒ‹û¥HÆ£6™w~pZ…xy“_Ï{ØÈuõU7Œˆ´¾èŠê°™£+,ö)˜§[oÖÉ>0DA†´þè%râ2ý9W¢Â¦¼¹ö²]Ѻ#õû›Êõ¥=†:xMà›ÙIçùYÔHºÒ»´”_]ð¥2Ú#¼u'l]Ïpf2rlxÂØòuƒÂØä}&E£Ê]hÄ?Û›ÍM'§sœê¾W! ZØ~Œþ™Ï¥]%;ñ.@u÷BÿØ é}X¾¿!<׬”óFàãõ nÿËåVKä¨ñªëžÅŽ_Òs^ä܆/ §mòdÒîûûªCEéõfÂŒ ï8/O&3§1Ts¢¼ï£¤X<2ëSswAóÓ·uªY%Û49oˆ¼¼ ›Mê ¦Mm”L>ö@, ±æUw÷ÜŽymKOW¡ª}jŠT)¥œf, ,>aÉ=…È?Ù  OƒãíªMx’GtW¿Í<áL]XêeÌܰ* Õ6Zo¦.èk3D;^ÉÇçÓ7f}l!êôZi\ó Pß›|’ªý5„(çƒ~ËȺkVÈ8÷£¯â!¡8³šI½ælóÇϘ†_êÎsáêˆ8UÉcßâå×LÖo¢¡¡–€BdRc4»¨;p›}4uh&¥ä‡Þï…Žó˜)ö|ÝrÔŒ 1Ž¿$¬Z©ÀÏæwƧ‚w#¡'—…#Ió<œß²æSÖƒMë状œ]EgÒKŒ¸ß‘#1™Áíb¬²P´§áÅz,­¨$Ã#>B#ðö%˜ º’9ìGCøËX§`»O\<]~ÃsOž7nâ¯öã} ¹2Q’»Ã¸un⬥Ûm­Íuñ$lA¡#ºàíÏ_~]\’ÈA@^ Ã8ãqd"RCD³TÛ25ro+îo†nNŠËx_B ãÌáRösK-?­[°¤{´æ}S˜:íŸVg¾´;ÃQ(áp@òÕ–†—Õ ¼ï clŸ¾Iû©¢4J ¯dc%x«©¹›˜‡ºqlæ2®– ÔÿÙv4öFÍ›^U yŒ„jPti7W!¥F–5)ÕðõôEî¼.I«®uiíþC’±Ü®q–Sç|âì{Â{³öÒÔ®¤}·*.œZ¨£–L. nïs†FÓwJVP¯ÎeËZñ¼o_>ÏLÚÙEú^¯¨’;êÕÏ”ò©PMìþVÚ ¸ì€ï(:¿y[W´»ÿ­³µ½Ôvíº†è>}0x[|¤Ê†w±wÌ?ëê ã€ôGÕV³ÀHƒ[‚«öÅSËS3N Ë)›€2Ç͘±È)ly9×*4dpIbËc§™Có^/¾û¹múiþ[n|Y±—½òHIªê¼Ê®=é¾­Â)þB¬ ¶õPh ”ûwWþ"hbÖuŽÃ»žwÐ,ë~ÊWµ®æW[_.h¤`¾´n a;Z—^¤Ó! Çž®aÈnÈÁ˜z;éôe«µ„›Zj2IŒoÎÎ Ö§‡Ç©ë—ä=襌ÓKƒàm™…¤Awo]íÇ*¥C8Ù­µBü® ííà#‰äwMI”8Âæ<$©KŸ×}1›´Fv@aûO™4[ jÁ@žë9w|í spÉ€dW¤ÑŸiIVÛ–H| .˜„o‚ù[]­L÷œÇvdüÝ‘Lu|ºp`)Åu§H¬"æçŸßB<Öl´÷ ¼áð‰÷’ØÔæ¼Ñ„_P%–N“Ù,Ê>¤ûøŠC•Yd¢Û©(ÜsÑ'€›£âºÞ< ^ÁõU˜<[s×Ç_`¶Ršû,*I ŠFÏ,â@öþÊÙ—=ŠÐ[Y„ÎýÌ‘ ¼ÖF ®‡k” ”Z†#W¼‰ÉÇã‡ÁCöÇNBßà€œô7rZ3ŠÜû,4PFü¤3ß¡ê:êâ‹IZ q/x-¢¤!)¯%“_Gå<}% 3ñ‡…éLV`×~¥|~åÙ”E&ãþc 9ļ‚º&™À«Ÿu sC’m RcÕ,}Ûv)o ‡Úœû™„*¨ff ”E5ø8°ÑèÏ€H†Ö¾!h'ÙìíiÁÊ'TTGNÂvXxªW/—n@QuÆ•VkŒšq»ÄZÔç‘"ª´Ú¸ÙRúTXÝž°::œGRö€˜rmK=(‡Õ¦»y]ìgô}:†-^pÆŒKLnÓZ„Ë4hªŒ=ÎqIPºé7Çðò [?FÊ]} ¯LºfýAîô™È9c\U¬rê]÷Ïa”GÝ™ÇA2¦B6Êo\rIkò˜˜ÒLB/x³IÒgl¡f™X2|gÔéÒ±ÐÁÕ€‰>‹˜õSúVQLH†â Ü M{³yß m×t%èÆÀ ·Ïû¦Â†ò6\: ^Ð*ÎqqNí§æ¹!Ðñ×O%»…fžêÇÂs0rËÓ¶-l†ô¡Äy±…¡ÓrŒŒÃXŒàŠÐ÷Ç·ÙÙ­ ‹\FiYt{ßoûˆ®Cè;qoÏj]£i61Bµ‰EF@@(âÝ„+Ÿ„kïÉŠVmXÍ8^bó¢ 1_N uÐ÷vÈÉß–üÜÏ0éH*”—%L5ö6ÉfHïÙO©šˆÜg-Þ^r$tÍFûÄ«´;¾Æä‚‡íƒ±Ï‹ü.ãš¾_§jx¶1ï¿®Z8×mkâVt¸£,Ôð@þ¼‰jÂ4ú9bŸ JŸsWXé}P«“¥¬BÀ}ïj¾cé²S “:²Ôø 7?ÝÝÏ’àŠØþг?F£€T¼n­::ä fú#ádc'ìUP÷ÒF ·Y£"oÃ4fΡÄͲe×°™ Kc;D¤¶ˆ³ü{ ñÐGËÉšü›cíSlüù—eá&‰úŒÕÕ2IxÍYƒÜÀÌ>j:‡ˆÑô(¢úSlÎÌEá–)¥ò:M „±5Ûˆm45™Anè7ÜŸ‰NYÜÌý|çAµ~§á&RÚ§r¿¤ˆeýê¾#J|Q6í]¡K/˜*Z×E?—È»kÚ€Agà6jiíZ–J*N°-f¹Âæ{µ·]Ÿk`y͹¹ÚK¼Rº™Ä¥áð*»`<ûœ`Jê“i[A¬ =æñjµñ&u|Á0}2ö°²îϽmh5´úêÃNujó™b©Q´ åŠpø®•hÃ¥rsQüç’£Ú7¦8Ä¥ £êaÅØš®ðŠOÉ„jço‘>”zŠÊoQ‰š`Èse‰h‰~¢DAŒ}GáÇ£Ûùº§ÏÖ2n³új§<ÍTÜåíÅl–Œ–Ég¥ñ’õ“’Q-Ò¶þH‘ÌÄ‘¸67®ã$JúãÃÛäV]ÑÑ7ÂêXšÊ‡Ä±€÷Ϭ#­í†ŒÛ‰&åÞÞÖxÂçh˜eMF²ñ1"xõÐñëópù„㤅þ‚O2|½pX‰¬l6ÏÄpŽø¾§Ñ>Üñe2œíL  0çØA°ëª‡sÚ K‘o¤è. *«¡4L_Oh1›…`Ú¿7„ɵýJx=:´ˆ,6÷¼ûòîùùè Í§ŒäsOS3=Þuä`KÞ2ˆfÌ$} òjJL¥ì1£}ô—EÂÒó«ëtVáU¦Óûst Òí‹•eV;ïõn‚¸¤ÝƒïhÖ#L^¤¦hŸ$bù¼Üú¤áwxŠ¾ÇŽ»À»Ïâw¨µN½ÖÒG•6‡Äw¹ÝMö6 ©ø/ï#¼ãá»; ÒAW¸§vÕ·W«êÁ3˜À¼ÿE/IÙÏC’ˆ•1 $Ãzñ©ÐfìÓMZáÊ+…½p9CZmºqÄe^"öaèÎvN¨ñ3òM‡.ž"Ž>G»“ˆ²[tqNµàæÞ²æ¦2¯fÚ[>³Oo½¼²Ãñ¼È˜ «„ôÿ ÂyfÉ ñ²=’ŒmVaC]–’õŠžÍ-eQ¤…q ãÎ_ÜѱsóxYZÁn,‘‰·Wlå௠ðº'x‰)šÌ3?Q0‹àÿ˜ílv{ÚZûs"ÉvôõjKa†ÃêИ3V¤Ù^Á8ú˜!ºÿ³ö«º–dú‡12]‹‚ލà‰ºw1a±œ hªD—BŸý².ꊥRXÕ/c䉦ô ²ãÚ•ý.Ä;ÂÍÙó¹:‡bÜG*#F·ˆ© ˜óX³i›-¨$˾±½Š)9Z*¼Fäâ“&ó%Ý÷öœ?!XJh«ZÏ\ä_sy6~$J´÷ATîE2iÐFE¡|ºÇPVs¨›Â‡M“XVã~Þ!C?ˆÐlM½%•34]=ô=¹mH†;=Êr–œç%×~4D“;¼¼˜‘ìg®ò<sdó‚Éhªè†mhy“Êý†zJ“„×9ŠɨOOÏd#$@.w•¼ñ§‘‚jù/3Ü8Ͼ¢&C.YÙñw3Ž/ûøßFQjÃNWÓyÐõ1Po1ƒÖífѽŸžJ–v¶|È ÚTº6?öጠ2|ÎÙ‚½Ä- ïn‡ ä#Ñ//šÀàaœ²ݺMÁùzbê‚¶¬–·eþëGz]üЍ.Eú²÷’Q&b…Ï3ìœànˆEçj+ç¹9%k#5õ uÐvÀJÜc¢Óû¶îLíü…VÜ=øÙz ß,£ÎUê ÜiÝÛæöIB=ŽK]åIS¡/«ð_i¸¸Ó¦³¨â$=Öª–Ì[éYÒÉ‘MG¹NÓ@Þ&M°,pim^#ÞyÞÜz÷€O½˜!Cæ˜Æ¼¡ ~A÷Ý}<º”Üëœ'.M7dfÆ 8ñ±dAL×6Í8§ìÉI.a÷Ð2ÁJ _k#ÃîȽ@$ï—m¶ êÌù@æÊ†R#ÛÄœ°.ûq·C؈[í˜ÒF=ŽB@¨½ð­éŒ¤y£Ö\™z‡«^r¥õvÙ<'#¿T{wHCÓÔxƒÃ&>ÊášžÜé+Ý5^Si£oÙ½+sø[q~¢ŸFi"¼|ƒ$•Ž "hðXPf?ÆÞÎBIlZÝ›L““ŽJÎI1Nf ÍÂYï*gÔV¢ËÆ ›Z5~ªzËu}ÀDcJÁ|ëG%hî›ñ±\òñÏžû‚RÂ=±Í‹rt¨mVǪ0PÙÔPýúœ~ W2›ÃÁŠQo6,w0¶N­— Z·Œ›^¶kX÷¾[® RQfÛ™«øá¿Óír°ˆýaœp’ ‘¥žc}âNô8 N¡‚¬Æ¾=üûÖY 'FÏVHöàåÃbgàÓ;ßáÄIh»òG…†uÍià+¨–âÉ5î}uéç‰Ñ0†'o¯:÷N¨žì…ž­ˆè²õ ñX]ønûä--UÓ{Ú‰ïšlšó}ÞÿZ­Aé’ï† ÿXàN\O96MP­]­÷feúì×Ö¨àEFO‹¨Š.p4€@œÑžÀâ2ƒî¤ÈÁýJ)|x%{âÕ'´Ÿdáã]ùƒÿ ºS²ïÀV¬v¼a ñ¡§„ãjÏ=à`ÌÒ ÈÞT­À—»{ÆÌõÉë«‚ü71ç›`•w 1-Û Æ ËXÃÕ[sÇ7t1LxCçâ†ùe­#j©J Ý8íg‚ô ¶AV…òrl;fe–¿WK˜t¡ÆÍœÅWVž}ÚŽÛS)›G^_öcHѸ!z-PË»óó@ïZó¶ZÝ;y[xõ£e…ë¶¢5(­@jÆ ý€“¸´ e7órð‹nŽ:µ Þj¶n5¼öÉ?ò$Bîý.WÏtYÛÃYìFö?Ïœ¯}×c»¶íHú½tð­÷1Âq%<ú~xüâØ6"Ë¿-Ló ˆ4%¥ˆ÷­e-$„r] 6¼(ÈhŠÒ/YĬ³Mé·)´í^ðCÓ~òÐ$rn ¦²»3®iÚt×ȵNƒç—C⸠¦h4qØÃ–_oòÅú¸g²m¯n–¯w!Ô|#”ÿ>ÓÆf!ð;Ÿ™ô0°=5>5)Ù†ù•ÅjeDæ8öƒ·0°u"š÷º­ðŒI¼ëCa’e&±ldgTÀ¶|ñàO§ïovÚS‰d¥j?bG*2· >ðªyöÃ%¯õzUQleÝ•rX`ž—Óß!võ´Ô½ò¬¦·RæÖÆÃl÷Šà•À«Ïß½WPŠmÁý8 ÀÍ­¨8Æ"û(LC¾+>‚?¯1±•¥©LFãΞøþ„®y¨O†52w‘EŠÀðû½½†I{ÉeöOFOD“z¤ƒi½RlÚ†>@×ó6Üõ·x¹ërBÔÆ®Aj7º¡Üø#ú „Àäø›Ô§yÀÍÕg!¶‘‹ù¥¶.Ȧ¨ü\ËzøÐ¥_Ô“ó‰–Æjô¬åXøªšošB~A©ªû9:<ŽÈθJi–áœ= ÔÕ$±—F WÕ‘e…ܳê4»É°É•Dé l¼Ò´äýVçõçùrçõ~áq4¾mè.g{¢ƒ WH‰’¶Éæñ23Š{ÚxhJoMGÊ;£ì4ÜG¢Çîòø¿0¼Ó~Æ‹+Y£ÔsÅtž?¤™ »$ï { u¾kÃ÷¬¸À¿ñÑP$LR³ì]\Ȧ½È–W! i·h~˜¢¢!oL´Ã(ªÅ ý©s÷¢ù°sÒ&cEO’q¼¬£Ô·) ó¶AÙ³”7Ä+µ.¿«ƒòŠþ–ƒªTRgX94þ}³Ã¤=Éx¢~Fj¤)U¥Šó¼YY'1BH/æäæû½KÁ–”3€.;—ó}ìe:b)4^-ÊZçy’ ìâB_¿8¥6ÌZac{Ši3>mÄÛXl[÷Ï‹ºÅ?›­êX±³YlÂ6‰ôGüe%œ?¢Ö«¼×¨~g¾· D2 LVds«tç0üúm.JK¢ò¢QÆ cŠ©M»††„lÈØ;Á»É¼®é^©‚deÖ%@Sv²Æéÿ07Ãöí–±‡Ì…ƒljÙOÎlÕ`£^è=gT‰Ôä[(­m(«8ƒRÁ·áåâž_0è`›FÁ/Óù!ܦNˆ7¡18^ ÃB5¤x:¥ÛÔu@{c¢Èi:Ò‹TÕòãéЋñåÝ3Í•¹TB›=ž_¬VhÜO½ ªXkB¾Õ1FË ‡yrK!=A 7~佄W³èýõ®ìÛæUô¾àçÚTÒ¨TºÕ29Çõ4Œ-òlThͱ0A“ØšÜÓüÄ“7nS±$Ü,} RFˆkév¦Û_b‰Ð}¥1}ƒ ´aa¯véÁ›.(H Xܤåë¹ÞŸÙ¨1ñ&Ÿ†ãMïF*vjNïBC‘N]”°¸#œeŸÀ>ÚÿJQt9¬‚z•¾mŸQ ×ÉÁ®õ(@–`¶µ'™ ÐÏÞfîùnHRìNT¼EÄ_ŠŽbæU¿ûòeÁ4ž9N;ä>twï¢=Ÿ õE0•AJ™¿&ù¥"ñpΜÓf<4§g‡¬Û/,¨7Â%©–>¡ä ýûÜwØ5JïóC§évWT±ÄNº:8úi°$º•[/¹ê»Bg}÷åìKÏ€Ÿ*T $?×ç($ÈQC‘]Í ¶lqÐRBв>š#Kqášâåj·x—î‚ÍýùA @:¼.”Ì­ÒÖoö¬¡£ü‰P6KqÛEuœm§Lxatœnž^ìµÔo=<ˆ*X|¨îÓöûW ¸®ðšDßÈ…t7ÇbÄ c[D…;ÓXVåârµÇ C+ÞUO˜twÓ“Æh=)H¦\è‘(Ö£û¼"9Ž&Ng2-Ï@GŽ·D±(EèÐê^²¤õÛ}«ÆðIï@e¨Þ ô(æ '^« úÔÏ’¢©øÌ*üÓð(™íoq )ÝäÂ`¹ßãM2žð·”CE> ì \ïÒhÏ}åÁû~&~³:L’TíM–þz:`0ÿÉf!JyÎ’_ße轈vòP]/p¯gV ú²D®þáÍÆiÇÄRºMŸWÄR‚¤u×§ä‘o ͆?s‚+§&²9öt¿:—t^Y@Ü—%[1÷_’Fh¿h^C猢¯³Å @ò{v QñÈ&bïn‚±\xldŸTw¸+›¬#U<KFáŸl°J¼Àö^[AS©\Ö6i8-жÛSÕ=OßìÄÄ™º:Dë+fŠÎ!gŠ2·Ez}hžÊM{ËÊ#k5˜¤îap“7R­¼ˆ !ZÞøÜj.K7QE¨¦¼CÕ<ʃŽé…ÃïôuÅ3†6ÛüÈt_%¸*òï¡'r±V æ)ápþ‰ÚJpŠô~ÃE颮ه塞îQ[¯¼+’Œ#e4É”­SWöØ_ØÍ\<“iÕã¹ï±[)m+Lè#{¢þ¤ª—ðŒ*JÚ©¿õãܼÖì=çQý~“Ì÷Øúû'Su¼•þí?„Þ/QÇ"Œ0(u'äÙDWÌ£,$Ôý0²èßÚ¡W]I64®©ü~QcM÷kQ#8dâ׉8[NGêè⦣]Œãj›Ñ'¦Ÿ9öC½~Ìf ]CPDªýó Úhrmü¬¢Bû‹nðþ:ІüˆåÑä4}w.ùu™^9×bÜÍIË!n¿'¿ßšßð‰ÿ^œ×±ÏõE—I_èÓκ2ܽðµƒqÒam(³3ˆ kRZ5Uø¡÷'ÎÈa{«óÕ©ÔFº­¹y–ìÌ»†Ú¨ ZF(€k#‰McbuÆœ‘5è›íóÏ[ǽ/ùã1 0*îaÖw\õ°ÏvxÊŸ¥p—,5+XtŒ«¼S­Iu9e’YÓµ$frG83a©ªd¥\ë °Áy¥0ãómÑ9].ð-0óNœÚ<Ëù¬¦ƒ›„Ý•}ñNùc;ñç"–O¯š³ »U Üã• ›²'±JJCê ­bDz„F5õØè§×zDˆéBHžC•æ+÷buº~€e12ÕxM6ÛƽîØR¡À:È\’v¡ûÅE+í¿âf|îðÅk8&º©Ï ü)/µf>eœr¥YD2‹R.2£WŒYù¢·?pýÚEH¶ÆG«XWé¶¼ÛÖS³ZÄÛ{y2´3_h(wëø­Äð8ß™4³ªjpÝØÙ¬è7i3C w<€KÊgV•5ü7ö¬gt{Øð<«¡«ÍY.šC¯/lZçÝߟÃd„eìÓ?°|µIòï :˜GÕR|yÁ´¤bÉ`ë®ÐWŒõq  lÒŸ¥çŠ&¹™kEÔìe'âÌÙår¶£ü6ƒl µ•ÇT b°ÍªsJzÞb‡]Åt)Ql—­ ¶ØqÎGÛsÎç‰Jâκչ}²¦Y+¬útƒOÞ›\WÙ²VóL>vëÐ:?v|va¤|¥‹Ä=—$nŽ+MµÜµ{^20ÙëñŠ:Ä·A[\45  Õ¬3} ïoàêØr=Ôwå“o<”~Å:bWL;ÕKøªÒÒoƒÿÓi‹ÀæuÊ3þ›u²Å£ý·¯x70!÷=çN¦o$J´bâEéj@æašoÖS2Œ“¦Ý½ükJËq¼¼*`\÷[ì ž[ AcRwÿÞW†–¼@%IÚ÷N”R,ŠO\jÞè§¥Ÿ„²VûñiYlîÉw¯“jŸdبÌ2¥›€?`>1€—9¦uYÕÛj³êü•˜Ó€úÓlÔÈ56 ¾ÄSöx%‹×§¡ÈUÿÞK¡¦C»•uëlÆiX¢ Ÿ Å$gÚ½ÉÍn1Ë$Ó£NÐa&¥÷Vw€[É“t±·zF5mëUªñ‹¥ÐÄ8U¦ÓxlíêÁp.²áŠëŒAüà ³ÎB§ÜgzyZæã½†.¯ã6¬›þ”tÉëåüNßQ·ÆîmßE÷Õ/°8ÛÑ Ä„Ø¼ùÄ쇠=e“UàÑŽ©2Ü®íîY+å× çFP_†°› Æ„ &Üû¡ÊÚPfW¤§‚kñ î¡ËRôò'¬" wù1K·V1¾Èy¡ÍøÀ4NÎäD•*srŸ„|³6õ›"Â;ï|úœÛƒ‰'¿¾³ O´à|>‡¥Òé¢÷lœ–:Hò¿ðƒ^jc‘•/øÒMÉ%(²¶p2Î;~ÛFV0óKi¶³Qæ8g!Àð͇Ê_ãØ•/Üqê®qW?ÒÀÐŽ5ù¥&¾`ÅŠ®®=à ·Ùy“RÝ­ùgB·n}vê(•¶¤!½š– óy)÷dåþ[³~§"ù Êó‘Ëæ8çt½£íóU’¢@O—rÕ÷<œ+·ÏBÅzØ×¥ȽÓrø÷F“F•äĽíݸÚ%Xææ>Áhˆ{¿ëߘrv¡t;Ã) ßtèUñÙ•HA bÄГ0MANT`[¬„¸‹aÞKpÔ¤pb{‡‘£Ó‹µ¾¦¯„må„Öæ´Á’ D²À&ƒ„V5f¤<+yÔ ü\C­J²]û™ˆ«xe¦ïÃîsfm_8—,_}" J¹Žš3 >+Ÿ*K»‹?õ³l“E‘dÍæ‹¢Ç)Í.îËä>Uz¥1P¡ðS·ÖOlŸvÌ…¶TýtYørš lMÅLorIz:õ¤—Ÿo“ã]_p2R+¿*T|œÂô¬,£tÇCð "W‚ôEŠÆ ®Ü4â£Íió¯ÞCÆ !7[ÀPùK¶Êþvo$i‹ ? ±ôËǼ úÑM­¤ºóÜmuWô þ8÷¡²r½TÙ0íª+##ŽvÉ I>Ò­ÓúaŒ®8“æYòÇtÈS7H…??ùÍ¥ _ôì¹à…t=L:“¶ù ƒ¦˜×B Ÿu5¤¡ÓD*¼l¡P§’zžÑÙŸ|.fj‘ÈD‹¥:hRîæí<š'ù¢:È€øëÍð-¿&¹'¨5e7o-„²óÒBšŽ=2ì‹D…Gôèen „ݘJñ­¦„!Ö¨Z3D›àŠ´joôfÌڶ핈Ú9Î>˜@)ã›w¿ „1f¦â#O@=£‚"Á8Ó§bQokJHòˆ ËÎûùÓþã± } æÉÒ^çþÎCçkXæàÝù¸ºoHítCÕ«\v§ÊÔþ6ur׌ㄜ01bÖÔ¸Á•Ö;ø¡JD5䀂hÛ¬—Ê‘ý¨/ ùê&û1 ‹ÛçÐXÇ0–µqÜ {i)âÊiòm)·öÕÍ ó8oPÈcZû¯ûáõ’ ¬L•oŸ$Â…Jü5ß°ú¤•©’'º©¯|”^~$éãÑ÷ÿT:¯¹yúË—‹wŠSôq6Ò2\g¹§}@%ÀÍí—¹©)`Xp]äSßòçTÃvAü(o Ëgê‹òè"Ùl×ùö3·cŠ Â¥–޶𫸸\=¾jDk¬ß>K’na"¶²©ýÓ’V÷¸>>ꇯöãÖxÅïZ*¦bFoêe6¤ù²O¯ýWèïg–0Zßœ]¢…ãùÖ;oo`0i36õv,4~!å䜿 T†Y‘†êã®2Ðéq«Ûlû §ÈòB±E©4vË©ÅÈC³ä 3?Ù´½•aæ¶gøT-Ÿw•ˆPîÍIþuΈÝXzò>C® ¶9T¨'Ê8A@šy ¤“x£pÍȱ*¯xQO£hãÑ}»àБ…ã]w}·pö\¿d—ÞS0) eq‹Áe“`?´¶jùà â(M Åldµâ7(ÁZYÔ I8·š [smý´´BKß'ßI}ß+sm $…ík…=Ï8nÒä†aÚÄð¢fT•wž™HõÃï‰é¹wDb},zTuD(Y©È&Œ&~¯ˆ±Ð8“,_Íé1.ÑCõJ°WŸÃhù´‡G°9¢Y§Q,ì3퉱>£†ÊpjØü²ø!cݵ0|%ȧg¼WÃ)Sɯëõvñ§ê{ùš‡ôÃ@%fh?~6V¼€Š•l¶uS¨ÕÅã—øè¼X/%´“ýq–-õ͹ÓTß¹Áìo9r‰xÃ{äIð‘óý)xÉäZ6æ[#|ª”†÷¸Â¹u“6¯'îì:”ŸÊ|£Ò¸úÙ$Iï ²ëp> ’5øt>±Ù“±–Üs.—|h2ŸŠ¬ƒ¨9‚AØ {µ Õ¦§öù1¡î rj$òú™N%ÏÕICª.ñKK¹§:rQ“$œ /nÂ’àrˆ\»öWè’Õ{K BM“ãÉjfh7½Zu"÷O:‰3íû7öZÄ9ð§§Ã×PK߯8í ÏÏIqÃt9¾à>HSÍRŠÙ•°|íÄàC~g-QyKå¾r¿²-[âGMáê ."°~X*%4zR Î\ U/ìÊÊþÊ@üYn½~§ùç^f9YߎSV̘ 'Ú.~*;ät¾S¤Ù˜xœ†²€eS¥§=7ßÇJ໇ÿ'd›ñCçrá"ÖxÉcâ.3®æxö(JËÙ¹õ‚x‰OjN˜©?”W‰En½fò°!ñ Q­¢ÏÛ–þ÷¢W=° ]Œzª›µàÙ¨£œ^EÓ˜ëwž¥N*`0<¨ESð¶ÖFR$‡®¤³‹„$Ž¿×êöÅç¼Lÿ>Wéa²X7g€ÚÃPþšFDΑ×ËÝðfçïz¢7 èФ¼T†ðNÏÿ‚RÁÑŸ Ű_{ê[˜ôeó›Ê§ãÆ÷”üw b›v5'À 3Ø^Þû‘uBÓU˜ØKKÔñ‚Ò1|]S1’(LJΩñôECƳ0/-ZÛðǘ _E­7, '+ÕgËû1º‚¹Ä’[¥ U±}P±|é^ 2eLÌsý’ö‰ï:ñ{ªl£—5´BìºÕØ0 ? Ìtë2øUþL¢C$±KHÀ:…'塾øÛ¥Wÿ‡’ ®‘²¦NðY®×Ó+˜øð*oEœI›¬ô­×ñx÷N·2;ÞÚÚ8|íZ>bà ;¿ß‚äó.Á£â¹ ¯$RÒpRx0Ð[Ëÿ²x½mJ <»Q›7š¥|ÛÜÍÄVðL  t+õ¥Aj${’äÝ&êŒÚÕôKí$£l§Š+› M½VŽj˜çÆùJl·B$øgñÊ,ˆQÄ~}"²»Ø1÷ø•}êbÔÿûñοqÚŸÙ1"Ë=¥ÔßW-†Fl±²,Ø­Æ´4qY*Oyt¿G‡”Làs»åÐòä@¤ÑØ&Úý2£­ùï ïå GmËZÔ€¹‘‰Rf×ø¼×¦Ü~ú+üxôÿô’Sññ‡e`]‹@IsPã.¨Uqí÷s´¹º®Ë5i5Æ„ ÏO\ bô´]—dËMýÌuï3£¥;ÇÔõ*„ìÃx©°£±*A“”i aÙ6k°Ê5Q¾í–tÿÙÁ‡£ÛÄ;'5Í®ªþýÅD=$³ù&"@dw•#T7ú÷é‡w[ah£ñukƒº¾…9§k3L OÄù%ÿô³«õG¡˜«üÝES£|† Ë•‹U‘#Aø gÁÐŽ êÓ(cWûf÷ä¼ÜùusφªtŽ®z á^óßgçJ´? ÷~ï7Ò šd´„iz=YQÈvð¾ê¶/—1²#€vGØo`®ÎJ5Úáaµå¢Aq B­Âc$W»zÿpŒ$¤Œá("÷§©å…C?šÐ±‹ÅE€Ù§¦ââoÂÀœÖ“svi1à,lªÏíTòyâÍ“o¶ |ÏÓÖañÝnª PiSî"d°ZÒH¥çT£÷R 8 ò îàM½v§Áhý×:Çšè­D§ïj Ißns˜§ ”8@XÒ ·}ÞIÁm#­CŽí]I¥†KŽQdòsÔå‰ü¯c‹ÎÖ‹¶’¦vÚ!áq|ÂŒ´Ú9‘lø÷7˜—”XcÑPˆwh¶ÎГçØç±ªN,–%MY™ç~€Ì Û§±í<ƇÜÍz¶Ð^` #²;S-`)]!o9¬hËCù„î?ÒQ¯$­mC‰éAEËV€ëh"g´J{è*ˆqÞÓ ®t¹T|ÉàgÍ’®¹b8gôæ^.ÿÚŒ~ºÚ‹òÖãЯôÈ<0Ý6&~J°MàÏ“knÐacµf¢9Šþ3hñÛÿØÅøð5‹ª©Ú}| %G‹î¨ØàæÛ|ÈÒÎQâŸ~5 P5»Å@î½Ç=TVÏ è¦²-޲ßGŒõŠC¦Ðn«°ûA£Á ±Lø¯¡@ˆÚ²”Ð8*‰ G)Ÿ„Îz‹´ƒCm¢±"Ê‘k½ÜZÛ%>V/Ò ú¼€=´õIa³\þ'‘Åho*x¡f«¼.ï•À^lH, dƒïry¢Iš=ÖD§SÓ˜UÙ“»`&DìL1š¶ïåÔ OâqÚ–¹êeÎ4duJxdÎz‹z2GòŠŸB·Çj{Ê(×Ú%€”­î0Yå^ë‘äßåzóï㉾pÆëÈÁS¶÷GeeDéðbFxÀpåÈÓq ”̧´Ä1 CÙGËR­±OóuøÄ.çón²>¦e[~J¶þ¤x˜Ë bq³ tCàÙ­ÆÉÜ}Å+ùtÍaai`~4½*ò},ûl¾oêĨ¸¯V)zò3†ž’Àš|¡‰P˜±=º\ï-[>M&»„ÞhЮ8 ®¢*H^ û8|ôʈåFm<‘†³ êDm¸e½©FfuÁÇpg2ÝÄ0hÕéùÃ_‘d÷gä¾c+Dùƒ‚æ¤vÇÐó«Ô•§í8o´h»SÇËxbaM/$+R¯)k2ÍZ‹6¸ [šFæñáÕÊžùŒêðd®›×˜µ[¡ëðñúû íÓucÎgmÏE0Õùúo€p¯É+ ËȰ<1 6÷àdû{½Íf%‚’ü"3Q…¯¡/V¹ø÷BÖyÔ-ôµyˈÍa†·Í^s`ªýÏÔæ¾á¨t »#nä!¦Ø€_ -­oÃJæ“×íäú D…‚à’Ô0¥½_¨Ä{%>½ûQC“#ÆÆc=³ÃIݿϔ·ÔÚ å€Ÿ\¯˜Ôq‡w:ùXùé :.ÐPö£¦#Mîä‚ÃÚédµÜNMOG<ÊJÖc´Ø*bRë¯ žMνýØ¥ý"<-œ¿0nÇp–˜í¼ßZM´˜“«8GZ0Z7:žŒmû‚¤äÈpVáKKÞ%% M€@s½ÄBÿ'£Æ@Ÿé’{÷lxÔæÀmߡњ²þ5i%h>Ç¢tÁA\WXÂ7¯cib£Ð*yáßLÕmd©“´.¤¥ž‚‡tIJŽô2Y,ñ‹›µé9„Õ§ºˆêãri¡ûPs†ÿ×èP… ø¿MqŽy,PÓ-%elF\›f$¿@$j¨Ù‰öûò˜r-¤¡’\.CãÈý– kOsš»«Ýlfü”t0TûºæÍIV/¸ªæ Š H¬“M}ĺr‡{ä]IßÙ÷ºË£ ¢!^ÃÅÂØc{—(UüÔ]"¿ÝD®Š­+ÍS¼“MŠRlрݓæ\>Úß>_˜<5Þ5s’‚þ¼àc"[à "ÌUë W«\Ï=óuS›RÚ cÙ„†»2¢¦¡paŒŒZzpØê:&àÌü’ˆ ™Ë{ñ?e¡Y@;‹#àSÁ˜ä­Êïrh†3ù bŠÝ“zÉÕðÅ€–Á¤¿é4{ÕDê¬`%9PRû¼åbYµ>p¨/,:.©gú>˜ý¹ÚŒt.`ÐuÈEç8\V˜ª+I*õ“:Í)80_·`IxnÎdw _ ÂÅÇÃo({𤠹á-öÖ/{ñ¶LµT„óPN«Tƒ¤Bëß(Å—‘ Ý/- L;\k]ŠÝòN»ÒÜz¯÷×Hò[PÃŒ«nWŠBOµ»aûˆj½h%*‘.Îÿ¼}-£åùí« <•gehi·ª?‹¯°¥MïÜß ŒÙL‚B† ºzÜ( ¹ýBî³®Ll×çÄ‚¯Ø•cËYžhX~®?É.J0_‚K?ܘÕ7PÒé!ÄøJÁ*ÙÂVÆúð½Ö;”2÷@H„ª9›-XdåXðìtøÛ;Ô³÷Q7Lì~$'•äs‰¼ìÕÄ÷ YÕ4eo 8㡾~é™ Œk/­E-d6 géÄ&‡øàú”“k|—\±M±Ã€T³ÑWØòyãÕÍ4¼oÄÊ>b΢‹níþdœõÈéŸçÏÇ ›µ1×™ù@·3U;§çÓ6éWÀluFêZ R/ΰ>_£# ïmêbsþhu²‚u4»âÍchÛç3(ÅZTJ%Ú`“ûÐÄ¡Xê–0ÉÖØ?\*%X„X½æ+Gu0¤P¥Bʉ‹ª,úØgl˜ðr¢NÌÅES‚Íà ´Æ *&Ùr,þ¤DFiS—K`ñ%Í“I=¸½<ªè´Œø=»vÝãòiüû;[q‚ÓSÅ5D3w”Ù.±-+í«j©ˆéÝ{ázæßKR©ß6žÛ“ÑàànlYÀú^ùÊ™í.vLw½šÁ$4­…a©B fR endstream endobj 2827 0 obj << /Length1 1867 /Length2 5787 /Length3 0 /Length 6915 /Filter /FlateDecode >> stream xÚt<Ôü¿-+Q*E}ìîÎÊÞ#[Èçîpœ;îÎ "4l"{d¯(£ìì­”•~Wß¾ß|¿ÿÿãñû=îñ¸»çk>Ÿï÷ëõæbÓ7T„clj4^"–”uŒŒ Â," Ssq!ñ(Äßvj.c‡Ä ¥ND(cP<Á¦Åu0h@Ó @Dˆ¸äº ƒÁ’b°R€ Ô t„M £æRƸxa‘öxBŸ¿ÿ¼0>")y]àW: èŒÀ"aP4 Å; œ aP`ˆ!x¯•à•qÀã]¤@ !¨3Nƒµ—ã8¨;ÀcÝ~>'ÿFÔGÂð€-‰¦þS`FØý… ÷Ez`ÂøAðÏÏ?ÿn& ŽA£¼þ„ÿºb±¾ŠŠŽúµß’ÿq*)a<A (," ˆ ‹â’b€ß¿«ü£ÿoí¿¬úPäonà?õ4Ðv@ò/ „³û[†ûï¹àý½4|À¿;èbÓŒxÿ ¿%X #|AþÏ+ð+åÿ7ù?«ü¯Ãÿ_Fjn(Ô/?ï_ÿêŒDyýŽ L³ž°:Â~ ÿj‚økup¤›ó½x(aCÑö¨‰SCz"àúH<Ìá×Äü} „ê($¡Á!¾7€  þ°r0'›‚#\Ö/‚°Qÿ†aà?WOXL€b±P/j0a¾„ÅÄaGáÏ_£ €„ÐsÓcÄV~~5wã]^¾ðl¿ü–‘ÁÚõ`~{‹¸y!úQm¥S…Õ3XáòS±ú¼µ2f‚ªaïï(Ùöì<“ç0Ã)dhø˜6|ã¹ÒûqèÖ{^>?HàY1§Ï`WÃY¾m}É,&‹šÞØöÝꢦ©^Z>ÛE¿Ix¸6¶78ÞtMg|âí÷œ!·5KÛ­_1ýž™9þdÎ_¼öÜ´Ìr`/D†!Âó¢Z/Ë7Øä9ªÅz…ׇ[/Œ±Ûãón§>^ÒN—´tó»œÏKÅ­ÐŽ Ü*s—>œÎ®ôƒ^ D{Reö}á=»ñƒ{HµLù(tY n{6] )s¬HÚÓµíÑö¾fƒ.5@íá´VMP}޽\†©p/Lïh¯Í¥u&#Ðòjû¼bk‚ÿú£KºëÓjì¸'¥´Å²KZ>×)%©U(7¯4=åzd€;wô¦Z–ž:šMÐɰñ4¤µå®/|–)Qí.Êr 2HרwŠYªS|Qp÷O϶W—I¼&û+ܧ¢qh9sº‚xÓNe>fûÆ5‘¢œ¸á µ•(ßI¬"{ü*$Ð`vŸñjÊYÅJÑ«g¹:¤ Ò áÕ³;ðW s ê„ÒЯèhâOÝœdOž’öÄŒdñDÆt°x?\Ko®±g^&3!¹W¤o=ìØå›´27¯Û]Q‘-f¹ÄšÊtëUsê–¸¤ï±ÁÀX²à›p®ºj­ôŸ{‚K¼Ie î¢Ç·Ò¨‹mÕ˜¹Òj?'€ÚwŽ½ç±—\s˜ì¤ÈˆX•Ÿ‘åµ»«:!'º¤#‡‹ä¬ªj}¦c¬*²Úp¹˜Î¶,~vr$žkÂ@Í®#ôÃYùŠUȾ%P‚4L)=4{jˆ:^˜†jF’p=˜Ô«}cÅ—f›Â\šÞÄšôˆDݬ§šwìxß–w½-,Pêà ŒZ„D½« þ}¾{¿®{âð&8Øä@yZHK,x¢Ž´ô4s*ÌòþâåFŠT™·5ËèÙp>m´F‡¯Ä¶‚WOlµ³#íUtµ;D×…ø\™Ÿý›—¤+ pC>’…¢‡<.ºSò”ÇTr g5dµÆ„b–Š 6×MÊk'O†î#µw`âŸæ÷¯Š¼Œ_ƒÄ]¸½löÖâíy°£ŸçÓ=úèCÐÛ2O)ò…¯¢^©Á¥Ï­tCº¯¯9Eîˆ ×jÈ ˆ8ºZxäkÂ645+¨Iî^bäñïä&bムõyÍÅùÓ™mÔ·µ±¤|@¾™ ¡Ð¹CiÞK+T¼ëØÌƒ«ôÞë&ž%¢NNn©…^T ÆÅÔòXöW3 Ǝ¯úÜ%á)³v'5«Qǹ`I *@Ï+†߆Ré·KC^SDÏñç¿9±ñ™Ÿ¯§gÌ^ÞÓ>“lv_˜èÆçY†U~. ˜±+Ôm6!9T/½ýÜ©1KþÕêi áhF¼Ùã·zˆ›kJmÆL÷F3=imÉ/ƒîÑÙmž¼ðƒ¼¤Íwže­ürô”G²“‡¯! {Ô4#ø]žš½’xýÁMrÒ2CÏ…PFŸÊ¥kä÷b~œxÒ·hõ0û!Ų¨¿%-¹CÕlcÕ›ø½Ý}p>ïÕFŸLÊàã'&àçÛî ëÓ|Oj)ã뮉¤—lµúu–Ø=¿B³ÃÈø]¾)‡–×ZÙŒ-t¸FýR;é(+›¯ «,/Ûpšg!#±.ÔV¿šÈÿŠÊLµwÏ^«á×&ÁEÉÊu5L;­‰û(Ä2Hþx$¥™Ñèp¶·V˜o–†ó:ŸyŽàÓ÷¾ŸZH§ÏKOבEáOËÙDì“Uú° ø´ÝðM­{g¬5êïv­Ÿƒ¦äI'Éì¹<&Ú¤£ìWêXk~%Æ€ã˜FöŒ ÞÊ*¢CèiåY¿ ®–c ­F® ¥IOûržÒ™ÛƒÒ®ñ§Ò¥.}ÆÎâ;z¼Òå”X=]vÐîTi\QPyx¦'ƒ Q…7ÊÊtìоˆ„dßÜb¿¢¾´­Ó”9JaþU²öÕœÆʼn 8Ãçñ‡ÒÅ“™Õ^aíôÎÓ:‰/Ç›>Øv}(xÛ¯ÃK¡³—»–5ÜUX½´OVA²µmÛ“0š5VÊ&¿Ú²ÛÅõxFƒñåå¾…X›4Z®2Œ´ð¼g∜ÿHû£¸9ªì’2yëæDð{ßµNŽÐ„ç˜åVŸÀ3KWBá"‡i…Ò@¡ÊÄ×ÒKñí!Dþ.˜T,A°Pº4ïÃ/¼rm·úÉÊol#Aö)Lm×ZDrXš6µ’ è™ç]˜‹$Uè¯ÚŸ:ÍèÔ9òViUÝÊÿÛþP½Ê½>q²nDó¢vSš«`øÇíºC˜L_¾™îqŠÝÚ÷Qئ٠Öå[¼0×@º ÷<ßWhÚ‹ÀPŽRÔLt7v¹sžYtw8Z½»@ñ(Ÿa%rÕÀ»³©ºëƒâ%3ʶø9ö%^4ãâù¬òqb’lª_h'o tuÌ©-3)8±OèdkÒkæ6…O v¿“¯Ÿ¥Ézî¡ìôõºÍCÄ'qR…HyuLjŸÖQeÕñQëÁ¦ñ'¯eÀhA1ƒ”É@çØ8&ÑP%Òš/¨^jsuQ¦CêBwˆ¹ë© Úëâtv Ò³.•;h4Ö·Ç)å÷®ÔÉ á™þ¾#ù·+2­š¿åpÞä8m•ŸÉÔl5É11ö¼eùHµ9²G!À'¾tÙå¬ÕSFárwí•é²úø7B H~¸ÕfñL‘úÓ@\ìÖ-û˜àsú¶›Ÿ›:²r™žTÞ+1l[¬èÓQ´ KÉÓûŽÇ#NÇçÞ“ ½ÅêŒc(e,NTk«;z·Gwj©?3É·.-œÊIB)¶‡.\&r$±y˜Í±ùZÕ‡ÑÕ·;©ž\¹ù<ÄGpï@ËU¨ÙíB±Ì 7a I{#Ú©gz…R/ïë Ò^ÉG¹zv‰\ôÑó‚j¡šw¾|¨gbö/Û3þ1jÒ™UÐ%×`áÏEw¡aÏÈòÒ(ê[¾‘ۘ܇¥¸*Öï%¸Ñ,2öÜ.^ΔQ롱(SlùR̂˗á®9ãw©IíK#öTˆ³·à­ƒŒiSL½ât¾Ärõq·È&x¢zçléŸÎq+ÀDÝdO¯¶;ÞM´^Bæš§o—ùÜãÛ/J,Ò{ÄäŒÞb»õ9†¾”m(ôRâ²KÛ¼µ¯×‹{;G‘òŸ§Ffü?V¦‰cÂÃÝUÛÏúU%Í™Èѳiz6xJQíRƒWR^&m I8V@/$‚xxø2mi—îõ$d õû”nˬ¿¯ýîxÓ¨f1‘‡Ydó9-eFÀ⬃y™÷Ž>IQšºX”²F£5ÊÀkÆ(p×ÒÇŸ«â¦Ž«@2Ê ´í7 h»9‰˜!ªiå“í±åAR2k³éª3Nl‚ _U¼VçO žÑoeLyè(¬*óRÖ‡-<âšCMðƒoFÍÙy½g–©•÷ ›˜8 b¸=ú¨2îÍÆ½K7ûª”%ö˜® ¯úUŸK&—ªy²ªåRåf±ëˆöu=â0|y…òb=Sµ>90â7-¦^eáÎQÂW‹î’¿"}€7ÒríJ+Dš¢ù™ >ÎÞ×)ð±(¨ª¢˜“æ^°^wCÕ>=éåPæ¹8ÖÃ5K-ǰ­:ó|CQÔÍþ”íUïeÄÙRL¯Z3ŠÅÑÛäÛg^YëŸ+À J)8Æ/ÉD®´j#Q)|õuSƒŒ¸ÎéРIš'>ÃÁÄæûv7/ß^Ý>zí>åäGFêÓQ×þwÝ:&×¢7¥VY3F¸‡7t¥LÅŸS/pFú<®ï¼ìU?Ôλa¥;þÆÇQ_ªÇ/˹!VÖ”ô6éöèîñãî çÊ'CÆ·qOÚoÝSQÑsÏbû\/1>ðrÖ”LWÀ¿ãñ1úEaïÊ*³ktøa¿eͳ7{ª~¼ãWÖ+óD÷ùýȃH—ˆÔFÑçˆ"ågÇ;knøW'Ó}žÄ’\`ܽo ùªç0Š[€ë]¶ pÁƒ'eü:[H¯£'öØ-“Ìþ~pâ+Iç«×sd´=½"E]¶>08ßp§ bPeIáÕYíÔ4c{u§Û÷Ñ‹2JÐAØÝ.þ§Ú ¡¡ä‰«‡9zfÒ½åAÁ &\k%¯û*Œ+_ãqŸátjú¾ù="óßÔƒô±37ù–[ˆVrì¿ykuVÃwîŽ(¬åÚ\õÙ¨ÜËuè|_ù¢œcôm+^ýt¨+[>¨ U"åñàG&QƒïÛ XÖcŠ„û${CìÎÌÓ·Õ=°å$S†’ÄIÃgú,%àï¿6.­Íäää½öƒº˜ÛÑo:• ‰n‘áýÁ~ËCÚMùö ET/¢‘b”xÊ(NÙo’VyK­î/oZèNñò5ƒYÇîÔîÚáéÞ„Ó9÷dyĹn:rŠ¥˜=êPRÖ¿f{¿A?@¦ýü«À€Ýã¹Î«¹› Ë-éòÎâÏ®¯>qCó³tVÙWk¤¯¤-˜§ŠÍ2xz;Hþýãü g¤©2{û]QÏL´¹³“ Ê¬jTK%ųȨjý›µ}ÏÞŠäR"P º‰$ÉÅǃq¯;<3dâÏÈ\nÈÆp‚×¶ž\R·M%Iucý™¡;Úàby~A“loaD]½Œ³¶¯åI„7¬Dôäñ§‡ñ•ïFVTA®v_ÇËÞFä_ "…ÓBÎþÈ=b©”]¤{ÁŽ×—©Ê4;×no¶•gyû©WIâݧ;3W˜k| îÐØ§ÒYO •::õîÃa"Dq/#MŽ«áž¯iZç,;K4ôæÄÚtjg>6(Ö?zÜF²Ù*Ä«¡—}yÆšs©sÆ3sÈì3ÃÒ³[¢å 1c÷aÐDew&ÌMNž®s»Þµb¦=p £cé%Gløœ¹ûMóéc¬õsÊ÷'εò¡ÌÖ½¬ígSeäÜé2r2T‡nºE<ÞëèèH `oæêì#Ú!s2í©g±*.¶ÎaÓXʼâÇÁ×ÜÖh榃µ6¨¬TxŽL[jJ‰¼ª¯7u— œ+9ærŸÚM5”éµätLò1—-y›CŵšPÜ´qµÇrÓöãǪÛ.‘½5kß»è÷ÁƒS¶ߌ•»Ÿ„×bgÝâ»ù9ù›„p':¯ìÎ(Ñ áYâzS’×’!ÏV}©‹a‹Ñày´²ï"]w_°’&Š<øÃ—üÜëÒE ½—Ÿ\ãËœDU4¾ù0OʰP=Ð:ß6·ÝŽêÊ8¹ª*nÏëbi"bâ÷£=é1ÿÝèYÓLïÛ]aõ¼yâë›ç}ÖW4+µÍöZè¬.ÙT¾™ô]ûÖÃb ~«//ãÒòçp¥-íŒ «–³J>¸kGý¸|œ§½_Ø&¦R ëñ¬×o˵ÏßA, ʉ¶§NÇï%É =õ_ÿäG‰6¦ çHó:oï­Ôbw«Å³´c½õ%jª¾B…ÂÄé´mxwtMÇYU«æ´Tmζyâ£Jw¨dƒ Úž¦qZµ–‚" ‘v8¨i„&L2…ÈÕshÖ6a®C÷­DO3ùôUs{3–þÁœbº+üˆÐ;Ó¡’Ë™°…ÍVÉzWU>ü¸ §Qwu¼›kiÚ“/£ºÑŽ-¾Ó­µ‡ó(‹¢t¿ôy‹Ä%ß):ÚòòX?ý›È¯!ùÅ,ø×I!ï$gdi*9|­„2.žWɳ.Ê»{É`ÿ­áÙ§ä¡d—jzg%Yö«1‘©TöÏ,|²%ßyÈñ¥n>#Y§å&ýé¢AžÁÌCäÅÆ(Ë@‡§+ê9ħ\7ɸ¶ÎÉš/P¥203ù.Ÿß¨´9#VsýpzÔ€!–hzàà5£)Ù].ù=÷y¶ºvÆÔµ9†Œ‰ëGãËÅEýr6€œ;ÄÀKF_g êûXüÁKá(GúiaòØiE¡î gšë·õ'u•‡Þ/u¿\¯}Ž+%ºP½Í¶»Ë<³`kßèD¶g*ZGˆ‡Õ–ë…Ï!Ñ [ØÜÔÁ·_ç®ktŸBYˆ ‹1®‡”„s8ª=±é$[ÚÛ*º;¾«ªU/§Ù¹lræ*ïÀŽ{h¯n¦¥Ó¢÷7‰ü4´ÈñëpEì&æ3£‹ d¤„¸fcùù08Sxäþ™°w^§·/ú÷YŸÌ‚†'îÅÜׄøo¼VaošT°dr¼³VÖèºFo¶Í4åÊ¿^§ùLjekllǺ&QW³opMà0 ¦·¦ôaP oñ¾dh=ƒykñbˆO¡2¥¬0Wî £½^z,·­,Ý®{Knš·Ù‡ëª»ÍV¦ã§Z?›w0©ïžR©^7¼ù"çÖ þê)ƒï)øN³ÍÀ$N±·1¨›-]QOËÅ\›GX|DÒ.¼”y1`áµy¶M'ÛÙJøœn*þX⪙6Sf¸aÑ3r¯Úìw´†¶1ãSþìƒ.ï劵 èÙüï¼Æv‚GŒdxâ¡Ìøé+ïÍMó¾ýàu¾ŠõcA¾ Ö² S¨µáOffêµYsÄ 'O øÈa8ÊAr?Èe×B•ø:)g3~p Gà¹ê‡ s`6§g(?¾öðW©§î8fcß{K=˜D—W¥±ÆpóG—Iw"££ûùUöû§ôÂôû[J¨¹t¯@iytdÃP\%¨‚é—¥¬w÷RmƒëÞVÄ—Þi¦¯ÕT@–U¬¼X|¡ôý¼rúÿ¦+žÖ endstream endobj 2829 0 obj << /Length1 1363 /Length2 1434 /Length3 0 /Length 2309 /Filter /FlateDecode >> stream xÚS 8T}OZ4åmQ>-ò'„—Y²¤lBdI5×ÌsÍ̽cæŽ1 …´Q^}Ji¼¥E¯ŠŠ’¤M*ZH^DB«ÐBË{ghý¾çù¾gžçÎÿÎïœóÿó;fÆþ6.<,fa(nC#S€o€«/ ¨T™J¥“ÌÌ\µ“ÌÃR‚¡? ܤ0„6wW1xËE€Æ4;Ú,*ЩTû¯@LêÜ¡„|ÉÀCaÉÌ “(¥H¤wߎÀ‚k höö³¬5áÀE K.„_Àb¢"Œ‹À¸ò§N—8P( …‚ ‰edLéli .lXKc`PS~¤F&™@"p`|\Ia@DFeDˆåÁR@T^>`¡FÀ>k0Ø@#Ó¾¥ŒV'BPM0Äåbb „*4ð ²|Èx,n ”§B"FÄC1"‚"€æé`¹,ÁpŸŒ+E$¸Œ,CDjŽu¢Í(Ï ‹a—‘ÔïsG¤0—è»’28\!Š)PÕ×Ay|5 ž\B B‘h9ìå>ˆ!L¤ï¶HL*ƒf?›àhÇru@¥Ö8ij3Á!^%Á$€OЀã>Lü‘T2(¸TÇ«~tü|#Ñh€‡pqG"(é{v óîÄü¥H,XB%äGTõïÛi)¡0†Š”ßášS¼Ã|ÃB<¤üÍéêŠÅ• “ llé„N¶ `OâÎó­_Ùk¬þ2øº2z¡| Ì Atï+‘˜AeX ®%ø¹‚FèßåNeR¹Ä‡ö/&ä¿i_åÊÿ×±ä"‘Æo1ø?$FDÊ„‡\KÃkì ó¹øW¯›á‚F±X˜çà\Á€x4v˜Ø‰Ÿc=P.ÆS/i ©R’¨„BèÄU4bËxp¬Fœ€BF1œ9ø˜”¤‰=P®@ÔÛLx4FÝP$"å 1bXt BÓø~ªÌ•K¥ÄZi†K<ëë]³Ã0 sIu÷1®crT~ò¹÷Ç]¦*lžTÑmu+Þ¤ôè·zLŽyº(ÉÍéC7ãÏÔZ—‹wÛR?4MxF?ô¥P¢O.kŒËJuЯ;yn8?¢Å:îö„9}Ïd>rzÛ‚ Â8 ”©ÿªˆ}UÑ3¯Æò_ÖÑ]Oîíê˜ïd^”÷î/Á«‘3O?'Zµ)u¤ÁìÙŒ1C“K\v•乞p©¹{ÞËTöf^Õ‹ CVLJ¬Ë7èÌÇXk!ÍYS;;u% zvu:oo/µ›²€sÔ˜µ–zô§[$õœKN´ˆUÌ™ÿ2ºàB{Yü^_MbtKDÝþÏIzC½uÿò›î7Gß™]#œi[;²>dUTÆ‘Õ+OV…ÛŽ9üh>'3æAÚ*=7,™,|àF+ŒÈÚyt§àÐæÖ— Öý—×É"§2uüOYN•SÞuQ)Í·¯½çnÙjÿz3«½á‘Œßø9qж²b­Ï+fý¡å·µI¥BϺ„“Ê ¥Ý%‡›Ï^©+¿–1ýÄLVåýɸå¿Û®ô|Øø6˜£c“/¾?´Gtw)V”èkßsÀ®êyvôUÚÊìÚ/I,vfnCtb㙫Söeîböí(Ò9E^fÔ»öIoÜÁÀën  û_Og¶ºªÐÎ>…¹?Äq;;´jô¥þ„;.†aXNÉo¦Ìš!:NN™ùï=7îŠÙ»­8-À0K™Ÿ—6äï9%O²d<ÿÍ—¶cßÿq&^9ÅåQœŠ¡)w8ºñoØV¬ ‹¼V»§r2¯ï8Æ}:†²6·íËû @¾¤WºæºSõšç[Ž/Ö}´I›²?e¾Á¦^§úÐ৬tÏ­ÝyÛ¦=ÏtÓÀ¼™LœåHÎÐN~ƾ’ÓÞ|TLšÛ\©PÞ{|;oôÅ;6xjuU;Ó=†›¼cëþ;û|×4Òþ­QþaܵéS¸V†Îu)´ìBó–ûÛ¬|÷Biíz©A˜ÑZ´d(û€Þ[am$Õéê°Ž—D¥Î]eÊ)ÛxÉ“‘‘ð%«þôðÐÉÛsKçÝ®mzÞê˜/S­lKZ¡èKÝëzäþÍ&;.V )ñ¹Õî}Í“¼?¼ÿ0¨‚|d>#?ýôщ ‚žõBë«åÔÒâ%Ç”“„·HySgg¯^i´):qÁÓÏ­dñôBžÏ¸ƒ:;î585Y]»qsçÔÃ>úFk:ãÓæoË4ï”ÄÝ2Ž÷L¸“æväão«˜ï¼“ÅU7œçë÷ll ZÀæÞ/NhN¸›xÚYa~îü6JáÞ}ivj¹Ã§Ö±Wç….4䔤>’ââ¯/ŸóJ{›H66óAxãâÞDñ6̸iÀó>ðD7Ø.z=™öxw£U­û˜×Á£Æ}ÿz{ÜDö0?­w¦µÆûÜMæŽwmº:/{ñjžåò&Õ–ûzTí5á÷‡nïò4úÃŒã¦ûiônƒá£.8ôGÏ:Tföaï\S~ÈÐÄE.PAGèò‡Ïïx‡w;x´Û×…§H> stream xÚí\Ys7’~ׯèÇݘ0«pމEÑ’lÙZê°L‡Zd‹ìuó˜î¦,ϯßÌ/QÕ¨*Ån2öacgL…2‘òB‰:Ø0©'ʹ8±õDk'QÑoWOŒ1ÜÑk"ÍðÔ èø‰S‰ç¦‰ó¼ÈÙI°š;~mxB3‰1ð­ ÿQf*­<Ü£©ô6P/ñ<‚®œe¨ÞN”'ˆÔSÔKè¹‰Šž1r];K(<-óžzÔx~<ðWS†ÔÄDÍoQ`=ÆÌÄé=K4DÆÜÄÏ; ~â£a21oã„0òè1*¬õ$ºÀ‰e©VŽ{z’^4U×]"©fÖR—(Q\‹Ä •RMx"qI{Å@3'šD<1b!.(ã°÷DËL”.-³¾¦¹±f!Ö¼ÁX3+5¤®eyÉæ|Tñ ui™7‰¶K„P×k^¦4s›8C]ZŒÜ¥e$VË]ZK+jZF C µ*:Å4-‹120â·JDaÓ´,yÖ¥hhYJ èé¹V–%lhA­I`ºf•©MJ¼U~v¼‡š¥Z{'ï¨a&jeø91⚥¦j«ŸÐ(Ѫk˜7ôжÀ+45ʲÔ´MêÎè /óŒHåØxB2Ž·C]à¹ÌoæMY£"ý¨™ M:ÅØhvÛ!‚ˆ `ѰD˜/$X¢8’Ü´¢Úr—8 ²¨«yšb‰Ãj¤x“Æ&O´±.‘êÞ*-0¤G›¢ÆDÖÍÄ›DbКYbA¡&=ÓV âQmy1³Ï:Ý´ŠX èŒÒÒ òý÷OªƒÉïtÈÙ‡£Iõñ·ã %:X{4éòf±øãÉ?ÿ92M…ÝcÎu&^]®'ß?©YQ™éXrH'â’'kDÐùI‹¶È“v"îüdD¶y¦]Éï´;?E‘ažE`ù)+¡<ù,âü¤E+3/z—×YÑ~"«7Ë«“·³õä÷IõæàpR½›}]OZÚßý}=£Ó³Ù“êñav¹^±-Oª£Ùêêfy2[‰]ÅØëÙé|ºõuò;3Ê%·GŽ ¬" üAø¦KÂóÁŽ4\}?©uæi2{õiñ·'jgöXUGÄ{ƒ»¢ï²û.EèŠþ¾ÂÞ]0n(g.ûMÁŒ±ñ®3Óec÷ÌôØØeÕ]Líh{÷$”ºÿX O·0<<œáñž'!ö<í)7j¿¶PÔ.§:ÜïÉéîw-]Ï*ul[WKîkév–š7C©yõ`©y½Å1¹¿3Ù͆ô…X2õnÆ%aCTnJ{(£oƒÞÓ¹¥Ðu/t[÷i!¿u)pëy­¼ uÜ3f†,½uÄØ0‰KÈŒ`üžj`Iß:ZãœÛó0õ܆=—á&k[hÿxò;Eüžïxž÷¢ AwÄH oªéÙÒ;¢N;Þ!°±ÏðZÑz™´ÐF»QžG£æ=ÅÄï,÷)ÂÞãüCø”hß.‚bWS«j–ÀF&>*E$( >ÝúËŸ[aÄÃÛ&ŵytÓ£œ„™©-”ˆdÒøhx$±Pb¹$¤ä4¯£gb… Ìšzjð0ZOÓ•ò xC3 “ÓÊhUÒ`š‹Œ¢~¤Јæ½)Êå ‚añPVCs]X€EÛåšS‘…N\Ê;sl IØb#kˆ¯ùˆœâÇ=Î y·Þ3b[ 5‰‰§ÌŒ(0¤[>º=²¿ï kùíN-eIDFnKì%]úÇ­Œ$=³=FË‚1|(mbÁøÈs<ÏIŽÀq±'æzö8U¼Fq0.’®ÁyGü•~RŽ&Ê‹NCr1Ë‹™ìuû m°‘U »÷8;¹? ¨Ë œWé{¿!‘5«d¼áÆ­o¡‘’Õ||Å d’«‰T‰u¬³¹U¬g¹-ÌWÙºÓ€¶7ã0<†+·bÜÐf£–ò>~+m³lÙ¼”?”2?ò¯ØJ[®;Õ±æ½ [%v6ÿb‹£š–Î0ÿÜb¾-eÅŒãmžŸa·8€QÚ^rQ…2ÛÁØ<¤œüºë©Æ1øB ŽµÊ o… ]twüJ·¬ª¹R!à†#]*u hK¾ÊÚ~“Á–¿Äë–K-©LñCÊ _-}Gàú½û´Ø‡Ë?÷_v hnmðõØÑŸVªÒ­S)Î3GÁœe‰$0¤Š5“¶Ø¤` n…¬(‹’ÍLìšD¬A±Ût‰Mj´N±‡Àñ‘× kö.‘ìHkÎ+,S´hpvmO;lÆ? *X IÛožÞ’eYOmÃ}I«[Õq-ã¹—m‰i¬zlÁGk¢†N9úŽgØ¿O«jøY¶íâ{οÆß”¸»o:K»cÞ&8«t÷"M,ÖÍPxÑ&¨´’wˆã¬Û²! 6sÈY ˜£M|Y;á ýÒð%žýf€G¤°`’(@f¿Çn9H$P®AȪ=oƒ£ …ć,‘…Yõ:%r³dòiÄ"Òe¥d5å3´9Ö_Žï^íp ÔÛ’£~ºŒ¥Ó s+ºW¾8ÒÏšü+ïGúÖöwUò³ÀK:î”EœøÿíÿÉa½fuNHɳò¹°šOß¿8Kœ7˜ÀóØ:sàʹåwðþI%[_^Ͷ\!ã`]’¤§Õ ãpH/†ç“g¢Y£¡±º… –Ù'=°;Ý_¢ëÃóð¶„9fß(ɧK27Ç<Œñl`'éƒÆé ì šEð4ž<\°— ŸÄâÔ`tà£ÊÉ ¹Jr¤? €3öÁ}D ÀB ˆ_ ÖG×k!m—oÖð…ü¢³w =@È•81sª†¿t9ó ôÄ3m¬œi2L£$ßMRbàqÂÅÅ¢è!±"ô)1× 2lÞ%g¯b×á€RD6á oÈÖÙiÄ^˜ÀË›­C©}yû6Ã,ZÁUΑq ¡fn…Õqð‹ŽÄ5@t2ÏDÄ7Ú!a%ùh>$ù $‰\°>cÐ\VqHm3™‰–«©3â%5œ`Ž—\)i’’4~6Oòv3V®áQí$nC”ä¥ò°á àÁ犬ŒÏÕ¬ö¢ež9f™l{ tÈK-" .Y¤m4 ‰¾MzÉÜ0ŽW;Ø œÖÐâdól¾¬&H(aÉks“ŠGD—ÄgÇo½ÆZïñVáŒBÿh½ÉŽÝâÄ Ãô²PèŠhþ>?ú‰‹31KžÌ!xP|¢Ä~a *K™ ¢“à#|‘ˆõ$ÆáÓ„&Kúk\ÊzÃÜ”â„n3xI™#–Êã­ïDÌÒn¸"Õ§Ù8±}àoÑ¿…œmäÚ² "?«TžçÉâFX²ˆºÁ@ÙÇÕñÔ dÑ0‰®å@È}\ºåò”„/ZÒkÕzHÉŒa¿Ã*‰D‚E¿#}Œw´U¦²Þ’u©˜/s¬²`jÅX¾‚¤–+0”5üÿÏÿÚ×u¥Ò+W*‚;Ww‹åƒ~¾¹*Šíå­Lþ¬@jÝ·ä S.¡ósÂ…§ª%`(RˆM"h6½rV°»âòïŠííšÈ”éLfeö0ë¤à(d! ÌW˜’.KèÎß1K@_ÐIIù¹V2†µº\BJd.ðÛKFÝ¢wMMCh¿W°ÀÊ{/éÒÃhG¦z#–7¨íì£â–Ó@³²@Š·Y“Š´Nt.Ž$)/EÊÜÒÊ×+‰® nð‘PçºÑà\¾MÁ¥ ¥0Sƨ5ï˜q9|!ŸKlfY‹âZ`,!à Hÿ¶ÝýäÕí.òn‘K+#B‡4ª¡+*$ÕRø‡ŸÁU@â´Uô+Šx"bo‚²?!‚ÂJ€%ý(·ù6ºÎ'b¥äþMv6€_²s_ôûT9×HSd“û:ä8JVäO[ {ÜMÈHÊ×XÙΖe)ëÐB6å[á•ô¥Å.XÏ¡óIÄiD±EZ“¿z0ùêŶrIÝ ó Í{2nƒ*•µ lD üÕ¾yä‹ ù¤•ËEÅŒBÛ»{‡÷i3Äbg À¨iù ´|>”éDÉÖœ8DµŸ&QH cćXUïˆd_²&Ô]îs.ª Ž€~ôóxèuîæ«±¸‘ã)¹QRÄqxP\‚jɯLG¾<Ú‘:¾’‘ Öµså½u(#ó·›Yx'’~naÝ"¼€•“)EP·ªá–ÑO°U8©Ñ&&'˜)¸²_Δ㟀ë¿5ÅÇ€òö!m¹7ÁR¶†)dˆ¸Pì*jV9ˆJáèg&‰’ëËõ?TñÄa†À•õG{Ï1È<´Š’rFQ yßgì°Ÿ-œ’OxjV2Pž§©y+ù¯­/2 V®óåC ªàû‚¬˜iMÚ(sŠWKýa”7ÏÅ·³üÁêÁlu²œ_¯¯–òëÏÓ zóôéññOOÿñìõþGUÓ‹Åôl5±2cÐ~çüä;͈ò\ú ]®ž®NøûYŠ(ŸTϦ×/fó³szŒþIÅhøÝwŠ_¾\Oó“§—g‹Ù„À¿]Ï.>°Q|R}Ì‹(" çÓ%ÆúÕÓj¿zV=¯«ªÕËêUõSõºzSUo«wÕûjZ}ªNªÓjVayõ¹ú<§ÿ¾ÌªÏW7Ë꬚WV‹ê¢º¬.痳ꪺ¢öººž-çW§Õ¿ªeµªV³/³Ëj5ÿZ­ÓÕyµ®ÖçËÙ¬ZÿuUÝT_ª¿ª¯ÕßÕ¿«Ï–Wÿ)¼8œ:È—ÏݓǙ{ðëñч…¹z„¹†™ËŸ-™ô8Ì­ÓÌÖ¾$¦ K†ž\-®.»l-8»h˜{Nìýïó'Õ‹Ùçµô–óX\OÛpýðé»ç^‚ëq„é)k´6îq˜®õ(ÓY™Ù“˜LîĤ¶"ñèéÛ¿‰ÏÞ>9¶ÊfùŸ"vhtªG£ÙÐXJúŒ*éãózOì«êGœ×Ÿ«_òyý@ Æêuq1%õ:Ï–³Õ|Ezv^œÔ«FQ–Õr~yFºÒÕ¿z¼2Ûðê‡ãÃßž²…{>já4ó*ñ¿µüïIƒÞ0ËÖ%¯êB|=Æ,F™õi9=™Í¾Êïóõüúôê/959=íÐÍuwÊÍu1_íÏÏÎ6OŸºOż‹ùéæa}-}Àj×ü9[gˆåã§ÁcûŒåÅô\ÿ™Lóåzv¶œ.Nç«ëÅôïöy=ûºÞØU>OŸæÝ‡ò©€°¾.lP ®y*?Í{OÇÒ”1ÌåÕéÍɺÙýrz:?™.1÷ܦKz|Cj¿ž_]6kÚü…šÙåéjÎêÓSq·•ŸyþËÏo~!ýrLÅnÌß0yæ.“÷oÚ„§«°ñãlÞTÿÕzóÕ¯ÕÇê·ê˜¬Ätq}ÎÎèÓl “q>ߘقÆÈ7]¯æì§òoUñÔÏä—Φ<ñl9›®gËÖKý9½¾ž’‰YL/>Rg¶Z‘¹¹¸a×uÃŽëbv6×µž³Z’ψ蚰Ӫ®é÷jý<¿b/6?#T­›Þ¥âm°û2;!É4ެ'Ñ­"‡·¿?;„Dýíæ]5.̪G’gt£òÙ0WÕu®­|ó/ûûŸ®x‡-F´©êÇRÔø EeÇÅÊÉjù¡QĬ†PÁÙ@Ǻ–µêšÕeLUnÓŠXoåö÷<øøá'poì +×(†ò‰m þQl:Ý€ÆM[¹ç?}xóžh:£ÈÖéªÓC4¢õÏ>}ÓpÀâ”ækØü³ñ¦zC6â ýG桱hï` zvíäf=«¦dYVÓËS¶pGÚq’¬nóåÉÍÅç…’ß9I„>û×ÍtQ;žuËá:âõ~ÈNö G[ç_ŸSø½Sü~½¸Y‘^ÿëæjÈAz2¥ ÙV³‹¹ìy4П/NïîÇz+ç÷óÁÏ/9¾;ò#¥Ñ•Ì£èO4£úó†~Žnâׯ·‘¸•7øéåGqFFŒ¦ñm°_? ‰ÁãˆðÑxD‡" >ǃ]TµLÒÙC7¡?ÔïVåc­[v5‹tªL ² Ù»•S:~}pôó7°·Ékㇽö¡ÓÆòü\@>¶»†þ†«í!ßúˆoôaZ~‡ÕvŽëջLjÃoߎYyŸš”ØÈ§qóã}Xï,ƒ´,1©°÷ÙlhZX³±ï÷_¾bbM8I¡o*…Í6Ô’víäp¢:¢R/?““Y“Š5éåYé„6¢Õ,¯¾Ê±.—WåtsºÜdEîX}ºY,ftγ Ú'Ÿ÷ù—ébvyÂŽèêj‰ùèÉüD Ë7½‹›“óêb~IGÿâfA¹îâïêrúi1ÍŠÊŒ •§MžE&áb¾˜.{Ûʃ¼úñíû÷Ï!°B1iâzo4.ÎA\n­ñȃÄôýéj†?4¸iípc‚?Ĉ?]t8_®Ö¼Ÿ +ÊOÓöž~Ÿ®ÏWòg·Þ@ÿ6²¿T6 Æ7à¶ß@ïbn€_÷ñÛXâg3Þâ÷;H`pk6Øíï@›BÉ¿ýúwQƒ øþê~Wàõ*л(àßP_n`ôêÚ=üü ÇøU©‚~ü½úó¿Þâ„Îà ‚;ØÁPC±ƒŽú°ýzåÖúªñ`¶Gß-Ö °Ç»-€®Kô;è·ÖG¯†Ú×=~ªD¯¶Gß-4 Ðíß8ú°ƒýëWaèž+ÙÏŽu£{nüÝÂÈÿÝÖ¯cÿÃìïåùôwk?lÈ;H¿›–÷ÑëúnÛß‘¾Þ}?ÁàßJýv7ãàhWí ñ—êvà?õl` ~¦ëýKý‹;H Ÿ 60T@3î}v°¾ý8»¿3PÁ¤ÇÝÿ-Þ‡ÿFçŠÿHç ç-›¿³Mþ»œ?ÎOW“ß•ß9Q>ÿÕKå%œâ?þrGâщмþc7TQ>¥˜(.àqG×réʼ‘\Žÿ\§Û•®e£üÇÃë¦c›NƒÊ7#bÁvEšÇUl§f$µ#騔ÜçòŸÏ4(¥›ŽÏ]7ûTºÁ`œùï§je›‘FŒÊm§º‹Ê5[Ï“•:®é48CƒSt}WT±aWþ»¹Z¥gjp¦ŒS ·wD¥ëŒA7"Òˆt#"­mÓIAÕˆH›,ݨ¿¶ Îæhg‚ª9<Ú78}CgPMÇ5Q ±Á™ªR¦ÊÔuÓÙŽ*ÓAešãd”i:͈ÖM§Á)¦yWTùoS'«™±ÍˆmF\³ ‚ª9NÆ7[ »Bƒ34tFýT±ÁÐ'Ó'Ó'[Û¦[Tÿ:*= endstream endobj 2834 0 obj << /Type /ObjStm /N 100 /First 988 /Length 1790 /Filter /FlateDecode >> stream xÚ¥—ݪ,E…ï÷SԜ̈•?"È€7ŠŠÌÝà…àFˆçleæíŠÎØ;¢É¢}·º›XQ«¿¬Z݄ڎrPŽZ†ˆÞªq–ƒ©Ôj?@SêÑX>n½$â¤cà<¨×qÌÖEÈÛgç'ê}^†bÝO>jâ=ª¼GSÌä=>Å}r=*Îy):j/ýRòé¸.bʺ:‰.Õzr¹”XžO¢d¬Ê5Ö6ĪŽST—O%Î¥ø ¦K5¹DUrù˜ª®hýR×u«’‰¡,³à©jà©r¥tꃋN\u¢žòuéùF™t¢ÖƒY'ä«eèD‘‰vMà”‰~íÀ)}ê{21® L™˜P%§NH@”¢ª‰Ò IŽª’š’š’\Ð^;$949$949$949$949$9¦îäÐääÐääM“C’7MIÞHwHò¦ÉQ¯£¢´ir:š&gÁÝzQQSU9š&ç)šœ§LhróèåÚÁ¢tBW×ä|GMÎŽ®É¹É„2ç&šœ›Lhr†Lhr–Û59ËiêÊœY&49Ëëšœ©C“³Ç¡ÉYÎóPæ,‡uhr®åšœ%ùÐä,ɇ&'I>”9Iò¡ÉI’MN’|hr’äC““$ŸÊ\nQ:!ɧ&—Û옚œ$ùÔä$ÉçÅü³ÏžÞýûÿÿ}>Þ}÷ãÏÏŸÞýë·ß}9ú“¼þð,Jo´r|ÿôî«÷?}<þC¨t½–[Dîç›»k‰fâ\â6üÃÓçŸÿ“Ul`;…ÉM¦%`bþ­U-®ê¶¡ÛÎa©†¥–jò#«¦m8ÙÄz§•j¢™8XÕêÚÐê\‚ÈÄú&xdÛØNXªf©š¥j¥ê¶¡ÛÎa©†íœ¶s¶GVÍ…¼0±vöB&Ö7Ùkù[«zXÕ+ÌfíìÄ&VªÎÕD{dÛØNXªf©š¥ê¥ê yÅ„í¶sÚÎÙYuÚ†Óvž+ç(lb}“£ÖVº6È“ÝL¬TƒÉÄ#©ll§=ú†=úF³·§X¶ŠÃ®áwÕ¶@Ôi‡¼Ø¹(«Úi¯\ØEµ-6u®\TW.âµBn…%þú`d»¸.¶B¹Ê÷&ì‡!Ê#»`v¯ßÆëhϤnïœðÒ_Ôëöµ;ÈžˆÝºeØ“à/K«Îòê=íQ3í¯v~}H¾žÕ;Ëoùåý¯—ë—ï?||9p»æ¯ÝÚzu[8^'ß¿üò|ýD§ÛÇ_\?ÍÏ›^é_G¿ûðüÇí7üõòÎà–´Ü`ýØøæù/·;?8¿šúµ3ø}âúÊ›_¹_‹~¼ókÝùqîWƒßºÜ{?9Œè×v~p<ó@äѶ<àx çÁ‘¶<àxp΃#ly°ãÁ9ŽGÞçˆ}ŽmŸÃõ9ò>Gìslû®Ï‘÷9bŸcÛçp}޼ÏûÛ>‡ësä}ŽØçØö9\Ÿ#ïsÄ>ǶÏáúyŸ#ö9¶}×çÈû±Ï±ís¸>GÞçˆ}ŽmŸÃõ9ò>Gìslû®Ï‘÷9bŸcÛçp}޼ÏûÛ>‡ësä}ŽØçØö9\ŸÃºø~¥G¿-+}õCîGÑoËÃJ_ýJæÇç ~ër£[éqéžû!úÑÖ¯9?ÊýŠ÷³Ë½÷«o~3åÁ³G?ìüæp~Èý(ú•­;¿œÇ<ìrïü†ã1rÑoËc8#ç1"±å1žóè‘ÇØòèŽGÏyôÈclytÇ£ç§Øç´ísr}NyŸSìsÚö9¹>§¼Ï)ö9mûœ\ŸSÞçûœ¶}N®Ï)ïsŠ}NÛ>'×ç”÷9Å>§mŸ“ësÊûœbŸÓ¶ÏÉõ9å}N±ÏiÛçäúœò>§Øç´ísr}NyŸSìszëó?ÿVT endstream endobj 2839 0 obj << /Type /ObjStm /N 100 /First 948 /Length 1586 /Filter /FlateDecode >> stream xÚ}˜MªG„÷ïuEþTU/`Œñ¼ÐÂ`¼ÂøøÎ.i^U>’ÜH9£¬èŽˆ}ÐÄ]qG³çoƸ±>ƒXÞƒ6ÅÐt/óh}/3·±—ÉÚd¼ù ®·¿qὌÞÖ^5³Mkú¼'yþá™lùd{êdìÉOè>1ýD.@Sž}¾~bìÃOÌ}bø Û'ºŸXû]š_â™tù´Oho¼ý’Rãm˜d6–} ‘'ƒç;öÛ³'Õx›vk·k¿™Æs_ƒüÄöMðÛ8¹qÞÎÉËvw.ô\î\¶s¸sÙÎáÎe;‡;—íî\:ïÉOlçpç²ÃËvw.Û9ܹ¬} w®Û9ܹnçpçºÃëvw®»k¸sÝÎáÎu;‡;×íî\·s¸sÝ…Ãëvw®Û9àOÌvþ\¼?Î×òGÆ õ}XþL˜µÎ“|ÐÖE§¾¬,mM_ÖµÞÖôå>ŸÈ—G÷åáË“ç~¤ºÁ—»/Û\>øò꾬ÖÄ—UÛðÜ|€æË2ÚàîÊâO®ˆ/³/+ù2û²š/{£_&_âÊäË“|¾<—/»Ãa×ÝàX*ÍÜà­7sƒnÐÜà$7hnp²|™âÍ NYË_V7hnpv7hnp7hnpN7hnpιÞ>~ûôÇ_ßÿþúül»ÿzûôË3óù·?¿}ý绦??ûúï_øþøë×ÿ¾?müò%êÑÑS+õüŠ §™ž»=zZëqÔCª'—J=± ÷óv?èy«ïz2j=zœê]}H݇Ä>$íC®>¸îƒc’öÁW\÷Á±Iûà«®û Ø§}ÐÕÕ}PìƒÓ>èêƒê>(öAitõYê¡G½´ŒKOj=Šziàw=Z«Ò{à{ëý¼Ý¨GË.½^ëIÔ£TO/=*õlÝz¯Ûý¨‡£g³ÖëQO2=—žÔz¡×í~Ô»ú˜usF½´yõ1ë>¦D½´yõ1ë>Fìc¦}Ì«Q÷1b3íc\}Œºûiãê£×}ôØÇHûèW½î£Ç>FÚG¿úèuûèiýêCë>4öÑÓ>ôêCë>4ö¡izõ!uûд¹úº‰}hÚ‡\}HÝÇ>$íC®>¸îƒc’öÁW\÷Á±Nû૪û Ø§}ÐÕÕ}PìƒÓ>èêƒê>û ´ºú¨yN‘ç¯Ûý wñœjžSäùëv?ê>Pó‘ç”òÏQó‘ç”òÏQó‘çHyŽ‹ç¨yŽÈs¤<ÇÅsÔÙs™=‡ì%ËžOö\fÏ!{βç“=•ÙSÈž³ìédOeö²ç,{:ÙS™=Bö”e“} ݘûºËZ'û¸+ðöu—´Þ³·’¶h»2ØÚ­•°µÛ•±Ök­d­ÖZÆZ;¬µ’µXkkí°ÖJÖZ`­e¬µÃZ+Ykµ–±Ök­d­ÖZÆZ;¬µ’µXkkí°ÖJÖZ`­e¬µÃZ+Ykµ–±Ök­d­ÖZÆZ;¬µ’µXk‡µÿÒ&¹‚ endstream endobj 2840 0 obj << /Type /ObjStm /N 100 /First 883 /Length 1594 /Filter /FlateDecode >> stream xÚ}˜Áª$EE÷ï+êÄÌȈU ‚®DDüYÌb@ÆQü|oöLwt´a,æ½îš¨ÛyOfsxušã8õ<ü¥Çä…SÇ!r籆ò·ë䯩qNô0^;eœ›8pêÛ9…1œŸï=Ç:®}íºŽëäG\vÌå‹yÌÉOñÓ)¼ÝÏÅgý:æ‡Ãªúæ>÷ª8 ÛÅapÎaã°ïŇ÷²Ü8| +‡/–r]‡ ¶òu2YÁ—±Þ`òš»'‡ÅYlæÂae5Ÿ6öðÉa;™<9 ¶óÁag=g=ÙÁ~r² XP.èX䈇×¼ñY|Á‚`Á%,\‹ÈÁ‚K7K\Ê‚`Áe,\`A°àra2 r/8Ì‚ëdA°àºX,¨ƒÁ‚:¹q`A,TaA° . ª² XP•»äîî-å0XCu´‹ï,h—zrí‡^,h',h'ç šsn² 9ç„;h>öyápn± sÊ‚fœ3½ýàÕÉã¿MÝ”s{«M9wîÔµWÀ–¶ØmL&¯Û äárç^˜È.É+sƒ˜¼27ˆ=37µ=38l{†þ¿² Àvâ~põÚ›·‰² ·s÷Þ;½g¸ßÇX}‹=ãû íì3´g°ÜžaAA^±ÛéÔ·o¾yûúן~{œ¶øåûåíëïør|~ùó»ïÿtÃñùýÇ÷ß¾Ÿ·w?½ÿçgq{÷í·ÏYz=²m–¦,©²,²¤ÍÏY_Vù’5Yëì²R–YË#KÛ,IY£Ê ö«e/‰ýªØK°—–½$ö«b/Á^Zö’ØKÅ^‚ýlÙÏÄ^*ö3ØÏ–ýLì¥b?ƒýlÙÄ~VìG°Öf­”U±Y³ÉÚB{Êû1îY~y›e)ký7Ë/DÖj³æSÖ}•/YòÈ:¯.ëô”eEÖyF–µY+eÍ*K#«eïÏìï«|É öÞ²wKY{öÞ²÷ÄÞ+öìѲGbï{{´ì‘Ø{ÅÁ-{KìQ±G°·–½%ö¨Ø[°·–½%öV±·`¯-{Mì­b¯Á^[öšØ[Å^ƒ½¶ìWb¯{ ö«e¿{­Ø¯`¿Zö+±_ûì¥e/‰ýªØK°—–½$ö«b/Á^Zö3±—нûÙ²Ÿ‰½Tìg°Ÿ-û™ØÏŠý ö£e?ûY±Á¾u­'×ÞWù’ì[×"¹ö¾Ê—¬{´®Er­W®E¸­k‘\‹Êµ×¢u-’kQ¹áZ´®Er-*×"\‹ÖµH®EåZ„kѺɵ¨\‹p-Z×"¹•k®EëZ$×¢r-µh]‹äZT®E¸­k‘\‹Êµ×¢u-’kQ¹áZ´®Er-*×"\‹ÖµH®EåZ„kѺɵ¨\‹p-Z×"¹•k®EëZ$×¢r-µh]‹äZT®E¸­k‘\‹Êµ×¢u-’kQ¹áZ´®Er-*×"\‹ÖµH®EåZ„kѺɵ¨\‹p-Z×"¹•k®ÅÐ6KRVÅ~¬ÈêþÞÞÏùž²*×Úõø{Û.´Yš²¤Ê²È’6ëùYÇ}•/YgvvÏ:öËç¬âY‡YÚfIÊUÖŠ¬–½?³¿¯2gy°÷–½kʪØ{°÷–½'ö^±÷`–={¯Ø#Ø£eÄÞ+ööhÙ[bн{ûö_î®h[жL[â±èm)÷‡·?|øøç§XÙïøn>HÿÇ_¼÷+±õúA±ú²ZÕÒÀ­Ú-,=6~T¾¯r<­òñîË"çëGÆ®hÞM›²ª£¶bº›ÓrµÚ“{²¤‹J_€zUA]Î&JÒù_Õù—ØÑ.*ÿU ÐÒžéôKuLf`Ÿö™°K…}öÙaŸ û¬°ÏÀ>:ì#aŸöØG‡=Ùö¾Æ—¨À>ìšd{_cŠÒ­^è¢öʵ®ÕKº¨gìZ©VCµz6Ø5™V+Ój˜VOí¢$E*jET‡=yV+ÏjxV½Ãž4«•f54«ÞaO–Õʲ–UtØ“dµ’¬†döäX­«áXE‡=)V+Åj(V­Ãž|«•o5|«Öa·„ÝØÿbu endstream endobj 2841 0 obj << /Type /ObjStm /N 100 /First 871 /Length 1488 /Filter /FlateDecode >> stream xÚ}ØAŠ[I Æñ½OQ7Hé“JUB † Ì¢Ã,Bæø#uÚ–e4Ú$¶Ÿ¬¼úµÃŸ¶¬9æѱ—ý…Aö‚ð€=g<ýùìסCü:0–_§3Ô¯“ Ýë&4m=Ÿ:Ž_Ÿ4.»Î×—½Ÿ/4m€Ï5ˆl‚Ï9d|fïAì3Û†ëÆzù]Ù+jÃËgÔ†Õg– oß³løøŒØðñ±áËg„¦Ïð Ÿa¶v¿ŒËÏi¯Øeø Ÿ!ßC6¼|fÚ°úÌ´áí3vcw†PÜv@qgƒ¸3]öƒwgº0Äé{`3tdˆ;ÿXîL[ÇrgûÉØ»gÒãŸ{Ee,w&µaw¦eÃîLˆݙĆݙĆݙĆݙ؆ݙ؆ݙðþ ´W`Aw¶OÓPw&Ò¡~nû  ugš6ìÎ4mØý.Õí|º®3ìxª{ÞìtºÍÕ§ÇÞogÓsxØÑôZ2ìdÛÏjÛÓßl/‘n»»Ä~€±ýc‡Ú|æíóçÛ§ïþüëÍ`ÉþÃ}»}újêç×Ãßÿøñö÷O{þñôÇÛ?ïÿ%ߟýöö¯]Z¿®}ùò¼Jv¬’nÒªY­âX5›U|žW}Üc^Å×ck·JÒ*T«V¬B·j>¯ú¸Ç—UÁŽŽ‰+v;:v$v®ØìèØ)±£b§`§Ž;*v vêØ)±SÅNÁ>;ö™Ø©bŸÁ>¹[EiUÅ>q_Å×õÿ«¼[O«fÁÎ׉U«[ÅiU«$VQ³ê\O«î÷ø²j>VÝ­Zi«ŽÆ*îV=³ßïñeU°ïŽ}ï´j«v°ïŽ}sZU±ï`ß»&ö]±ï`׎]û®Ø5صc×Ä®»ûêØWb׊}ûêØWb׊}ûêØ%±¯Š}»tì’ØWÅ.Á.»$v©Ø%عcçÄ.;;wìœØ¥bç`玉+vvtìHì\±#ØÑ±#±£bG°SÇN‰;;uì”ØQ±S°SÇ>;Uìì³cŸ‰*öì]R9%õ~/«ìè’Š”Ôû=¦Uˆ¤¢K*RR¹J*"©è’Š”TTIE$]R‘’Š*©ˆ¤¢K*RRQ%‘TtIEJ*ª¤"’Š.©HIE•TDRÑ%)©¨’ŠH*º¤"%URIE—T¤¤¢J*"©è’Š”TTIE$]R‘’Š*©ˆ¤¢K*RRQ%‘TtIEJ*ª¤"’Š.©HIE•TDRÑ%)©¨’ŠH*º¤"%URIE—T¤¤¢J*"©è’Š”TTIE$]R‘’Š*©ˆ¤¢K*RRQ%‘TtIEJ*ª¤"’Š.©HIE•TDRÑ%)©¨’ŠH*&ºUÏ¿;£J*æãwgºšßý˹çU;];VI· iÕ¬Vq¬j¾²ð/cÕýóªóøÊ‚Žv«$­BµjÅ*t«žÙï÷ø²*ØwǾ5­*¾² ì»cßH«*öì»c׾+v víØ5±ïŠ]ƒ];vMìZ±k°¯Ž}%v­ØW°¯Ž}%v­ØW°¯Ž]ûªØ%Ø¥c—ľ*v véØ%±KÅ.ÁÎ;'v©Ø9عcçÄ.;;wìHì\±#ØÑ±#±sÅŽ`GÇŽÄŽŠÁN;%vTììÔ±SbGÅNÁNûLìT±Ï`ŸûLìT±Ï`ï’J)©÷{|Yõ`‚z¿Ã´(zÚå4Õ”ªšFL»–¦”V%vM­*íšZ4Úõ3峪gijkgJgUÎg×͔ͪšÍ®™)™U1#˜]/S.«ZF,»V¦TV¥ŒPvL™¬*‘ì™…üº£X’ endstream endobj 2842 0 obj << /Type /ObjStm /N 100 /First 995 /Length 4038 /Filter /FlateDecode >> stream xÚ…[[‹&I}Ÿ_Qû îæ=2AQDAQßdFieÀÝÑ^ñçqª»º¢óTåƒKM^ãœÈŒˆ<_[ú¶R¶Ú·¶(iËmK9l9m©wýß–{ÞRÙJ-[Ò±cl±mu”-¦MBùÐ7‘¶•­ÙKÞFÈö¡‚ûª:´Øz:"–0ìK¶X¥ÚW×m÷^]yѯªÓ‚¤ú·”²Í¨:¤›Quù*6ÃL’lVVí{oÛrh_¢(ö^EQB±¯±åŠÞ¦%Ý£EÅØm–”…b´¼• PSè¹ÙÜV•„dØšâmݰ5ÙJϘÑÌ[fZWø5Ǭ{è–µ`_5¼¶ls%oUÀ±#ÔVQJZCÊiK«ÈÖj4¼Ò·&ØMÆÖFµqj†Äu7)ྫgZDoÞ¤g´©‡vl½n=Qoê5Á8ÙÔn³^ ê#š¥JɈÉìa¹Ž·Q›Y?Ò6êò1Ì>;a§m¨ÓƒRhŸêõÐ`öP·8µõ»3ÃŽTLÚ§.ÔCkjô3ê§ìŽMú9ÔÚdg+¦ÑjG°”¶{>¦&hÕÝðßdg)*ýhÕÝrnhÕݲß4¢î–{ÒƒfˆõhÚÑRÌú™”CýÔÝJhÕÝ êÐÝc‚VÝ­F Ÿv¤‹yvDÝ­¶ŠVÝ­i(±)Ý-én-W´ênMÏ}ênz¬ÌH½pQ‚q6Rµ{ ÓS³»²/¦»‰ìcíÙdýÔÝz´3?ÔØsÍ~ñ‹ßüåÓó¿žô|êeÿÓ‡o~¥§wÿúãÇŸ~x¶€~ûô¿çM/šýã—¿<ϬÇÌäf¦žûKÃOÿµÈpZèu—ß~úñ‹nò2ð¿XßË:¿þü“.ósuä»ãëŽÇûŽ9öËm¶UI{YèL§Ñnž™™ÁÍ|……=S?£z±`Gõ²è+¨ä—Oý©Ý,NVfâ‹tø"½ó”c§{b)•¤×¼úÉ/®c¹=Žúâv §Ý²?ùÝn‡b¸Û­Ÿ6‹ä„~hw«œïD$~8Ü/VÁÌ~žøíÇlýê7Ÿÿþó??üñùaYæl_ýîŸ??ÿðùùéëøPVö#xnNhN{ó¾ß–pjÁ˜ý¶¾´d´ÀOß)ËŸ¾ÿôü΄×qß½7óé??}|þôù‡¯;å}•í«ü'ŒŒ¶N-Á¶JÁ5Y[Inb°ÅJŽ®-¡­¾7Ó›ð6x²õ¥'c™á–.Ö¶º£­¢Í[߬­&×&hk®­[[ ïM}³àmà•™K8“àKO-Í¡Á¸"Ùµ<ñsÁDVŽÇià…•Äõê–qÝ›â†â†gÄÕàMhn¦Yð6ðÂÌýZ8ðɈ«Ñ°Ñæ¬L6·ú›2ÚœoRA[çV¦ÇiÜ•‘Æ[Íîp¥†6w¸’ñV‹·¼o9x+Žßý¦— #ëãmÜ…‘´Uç  Úª£7ƒ¶æèÍ ­9#3h&ƒ¹°Ò,xxe&x¼uo:xëÞtð6œéfeð÷¾€‰Ñ.¬lÓÀ +‹ׂ_ÚÜÙ*m.3©EoRE›;-Řhéâ’—·ˆ©¯Ì,áüV:ÚÁňkÙ\Aœ³¨ sœW0Q®¬”Çià…•Ä¿ˆ«Žà âª#¸‚¸ê® ®9‚+˜h¡¨¾Ýrxe&ˆ¿,ˆgºí𳼏îÛ@\wh˜è¡È xxaeqÃYÙ@Üp~kFœwWZC›;.MÐæŽK3&d/Øf3Û[’l—I² ,áLç¸#N’C#m~œ'Ù,mÁ¨½%I¹Œ™R»q^Äoˆó”€8yÄùK%`âªâ·$)—IÒV ¾jè Î!ÃÎF*k±9Ö\C?[ÜúE¸<ÎdººßÈÃÁH¤á0Î< Gw‘V£;ŽÈª1:‹MÜÍ鏨éê^#Çxö1òot§.Sý<ù4ºcˆtŸÈ¦q.}­aÜ:dÞXδ ñFW1 ïF-‘G£ –H£ÑÅJdQ=Ô¼|\ä|u‘qc;Ÿ)µNoÔ9^ ßêµ=7)9c@úŒ.ñ#{ÆÎ]› \®î/2mtõ,m绂<]tDÞLî0"m&w‘5Ó'óÊqqËÕ½­H;§‘`S<; ù5¹ã‰|™ÜñDºLî0"[¦ÌóQ/Ö«¢‰5å3^äÕäÊW¤Õäž_H“ɽ¾%“ …ºTìål=¬»*lO“‹£H§É¥]dÓäªVdÇä]HŽÉEOäÆ$¼XhGÛ®ŠXäÑÔÏÇi4¹ç²hÎb5ÎtŠå'rb¼HhGõ*WÅ+òggo }æpæÙ3»H‹l˜Ý# É0»7raNܵrT­rå[äÍœÎçi3»÷²fvÏ+‡‹H‚ÙϾk<™ÉQ­ö«dÖÁTuK‚©z¦¥ƒ©z>fLµó1ë`ª‘v€ßkÌɼ~$³~•Ì:˜rõhS®öD!àžêL¹bt€)—òÀž-ú‘ÌÆU2`ÊæÂEÚÂÆÂÆ Â…Êí&òx<Žd6®’Ù€p“^xùòôwÓ¦~-¬½ Z/­ÖèÇY-%¾Åj†wÓ,9òZÀ6? ›,|íRrÊ»•œC@xmSvŽ·þ—Ÿþv, 4ƒ´£€&í bÎ!'cÞž 믶{™w©P{¦ÚSt¾ËV+ƒv)œRù‚Ùº¦ØþÞÌyÖ™)‘åU6y×eNkC³.ŽAŒ,Ž¡['RÏQg[çy €JJ§[šó%ñ]—¹¨Sx¦¬•Aá™ØUßK-¯aov_,KtÕæ ì‚ÂîYä ºuq꣚èQQRÆ ]}̳èìYWEgÏ»š(:{=ÕLÑÙ ®fŠÎ^rµPt:iÔ{tfé4kN7€UØÚoõg æ[Á©õV`DÊá°žql¾r«gì3CŒ¢˜,óeL –¹2fºš¥©Ì`™#c¾‡•ó¤*sJ¡Ö›Shz°7~ä\˜S*µÞœRÙ±°£{ ÓtÅVgÐԀتŒú¡2màxûó‰0TÏkŠÊxíùWž.âý¼Ô¨ùæ”AÍßKqÖcN¡wÕ‚m‡ UîaµÇ<ëVÙE-¶!tˆÄz G4Öƒ7d`=xJÖ³?o•)“1­ßØŸOlC¼ ¨ù(|™ùj==Ô* ƒ½¢,`Écžu«î?æ± ÷ߦXdo ¿PóñÛ;:æ—Ùdå4k ’05ß¼Ò™ùj# (E:ƒu¤3XIÆV̳îaAh –é-9PXÕz¨ùÍz¨ùbïv.L^ɱÝÃOïg-€©W2½êj æ¦×dL 9”ߣ^Éô›.ó¢{\ÃyÖ=,Óv2 &ñdzÕMéÉ…šo^¡·Õ¤œLo«):yþd²ršuL÷£‰Ô´¡LC€ID™†`²0X¦ez‹M zQ_.aM׫¯Š(S“2½é&*ezÓM[ʃZoN¡—ÕÄ£B/«vÈ}iا"jå+S¡ }ƒ™UèÌ4©B_`¦øú3Ñ©Ð÷—iO%݇c*¢Æªˆ2ýªÐ7–ÉX…>±LÍ*ô…eRQ!¬fºE%‚þ¼ª.4ñ®ˆ²Iw¨¢M%/xÙU›AÊrÙU›Q©‘¦ÚŒÆ´§#Iz²‹CîÍ»©ó´¼j sͺ8õèèD·.bØ6².óݼú˜§-à'cPx¶çž)1ŠÏÞ÷Ú×iŸ=\ÉÔ²+Ú×î1ƺ‰‡>Éײ‹7ÚWh_G‡2 +P(ÊN Ôxµ‡¼9ßÂV ñì…‚ÄÃ? OÿP(H<þCå á/’Åeÿ»·nóø‹ÅóÄLø«q(ðWãPà/¡P²ù‹Á‹>ïá}Rdâ$DÐ)HÈ¡SÂà á¯Á¡˜¿b g/üxûø~±xž¸‚ 1‡ ˆ‘‡ EÙ"5Ö„EAÚ;ZäóúV ûƒL\€,øˆ“ 4`r} üÅïz¿ø]/ üöaþbñ¯¹,1Â]ƒ#1wÕÀ‘à¯EG‚¿áWºCåWÝt‡ÕyÍSž–¡ZTB ZTB ZTB ;TZö$È•ÇÈ5ß¿žañ> endobj 2932 0 obj << /Type /ObjStm /N 32 /First 313 /Length 1041 /Filter /FlateDecode >> stream xÚ­XMo[G ¼ëWì±>TZî—‚Arë'ÚæTäà&B` ±J9ôß—|ò¸®–~j€^ úÍrg†Ô[®T´RÊ©h­©{ÐRó´öÄM=à$¼@#Q–â‘$*º€š¨S·¨åD£:Ú(‘ˆl,*‰T|]³-ó)jÆ$â‘¥Yrmû*ÎÚF*M]Q³%œÔÒyn7@ŽNËbãè%ÕÌžÛkª4–u-UûëQOµåå§Ú˲n¤ÊfÆ"IuPóHS•圪۲ˆRËMƒKjT}5ê¼yñb³ûñúóþ~ÿæðåÃþýñæîv;¶¯ÒbEý%!Ã+_€ˆ#!jˆ•cFŒ¦ÙSš#ï6»ïo>ßC‘SÖ»ÍË—Ïûbòm#_\®’äÈWGB‘Í¢éŽôaGtÕ˜«œ².³¶xçBq$”om‘ɷͺ„@ö”È× G.øWsÖº¯ámi‘¯ámi‘¯ámé¡|oKå{[ºFˆW–ëª1W9e]0æmáP¾·eDòÅÛ©oËoˈ|‰WV.ø’«9kÝ—x[$ò%Þ }y[4”ïmÑP¾µEsôÁqd¬s•SÖcÖ _võ¶D5{JäKÉ‘0ÇڢዬՑ ¾ôjÎZ÷¥Ö O펄òÙ‘P¾·%|_ÕÛ¾¯ê•=½¯Ïs•SVhìŸ5mK[«óÓb>«ƒOíý´>ÄÇÙD&?jûîæƒeb4#äœùÍÝûo=^ÿy4¾ûëû-•èÃ=# „ôi¼>lÜ9ú˜9:dwÈîÝtpŽ9ü²p K@ÁÍÍͨCsHQ8 €b†b†âÊ ˆ%$ð+Ê)Ò Ý‚¨Û€Š!!ƒžR}K4}@º@º@º ~9²v§r‚~ÎYûL)ð"ð"ð"¨¨@–æUÊÊçŒ,3£Â’Â’Â’¢Â UÊ«Œ<’ÂÂÐÃ*š3BPVO/Êa)1Î,h:F0È:eî$Ä-à„)‚)‚)* ‹Ö/äÄ}âÔùõÆH´®®H@WÉëœ:ÝQJÑ™³ÀU«WÕ.ÐUx•³L·‡ZFx*ðTà©¢ÖªêúE¬¶µo`¬0Ra¤¢Àb*Ä|õ]]ƒª¶üÿMHÿÆ}’ÖÐ"ÌLÅÌTÌLm¼6!/š¸‰,ßÐt³S1;µ—¯;4ŸùÜcòj‡ÌRÅ,Õ>þãÇýb91ŒÃXça|^³g7}³?XÂòk‚m§¿ýu¿O»××ÇëOw7»Ÿmhü·ÅÃf÷Ó—ã§›ÛÓ#9=:ÝÔ–ß"–ÿ=击ûÝÛÃË-ñ~ûjÑ‘ì RAù7©\ endstream endobj 2965 0 obj << /Type /XRef /Index [0 2966] /Size 2966 /W [1 3 1] /Root 2963 0 R /Info 2964 0 R /ID [<910A22CDD62EC604D3F6CD7449CE3E3F> <910A22CDD62EC604D3F6CD7449CE3E3F>] /Length 7076 /Filter /FlateDecode >> stream xÚ%›{l{}Å÷»ÛëG6Û™ñäaça;vâ8¶3qÛy9vâ8'±“؉íd]z©Z*-ªTúA‹@¨·Àm©¨Ð-(¢E#ꬠ¼«»ƒ *ê‚(u+(°D––v?'ÿœÌ9ã¬wæ{Îo;߯3™Læÿ²™L6c™L©ñOóv{6Óæ·¡Eë@k…怃v­*ƒÌ ¢é6É\gÑ´€îƒâÎÚy4- ºÅ8»vM è(©¨]BÓªò¨ÚZ€æCIcí ÚI4•–$×®¢iõ „½v M ¨lAØk7д€î‚öÚ2šPYа×n£Eë†öÚ Ú94Ù‘°×î¢iu „½v횬LØkëhóh;¡„½ömM1 ì5…]‹ï(a¯)ìZ@!Â^Sص€¶Ca·çaoÙ­°kmC3@a¿Ö Í ûM´"´(ìËh-Ðf@a× ,ªVص7Aõ‹v­¢z©@a¿‡–‡–…ý>šÞF' °¯¡e¡]€Â®X—Ð(ìZÙÆ<ç ;+°§{Ð (ìÐBèn@aŒöº ì!«¨÷ÚöEÐÛ‚î{È"èmB„=dô6 aY½‡Ð!€°‡,‚Þè0@ØCAoz ì!‹ ·{è Ý‡Ž„=dGæÝƒŽ„=dôîB'²z«Ð ì!‹ ·{È"èÝž{¸í6t ìá´[ÐY€°‡ìæ¼eè9€°‡,‚ÞM耰‡,dÞ è@ØC2ï:t ì! ™w z ì!‹‘·]{Ènλ Õ Â²›óô#zQ²yW zC„=dAñôòºÂ²#󠺄=dAñôÖt {È‚â]‚ª„=dQðtY*aY¼‹Pž°‡, žn‰LCØCvUÞy¨ GØCvUžn§ÌJØC2í…6ŒžÝh„½ý „=$ØÞ,š„=$œÞ 4öí‘7 -„=$œÞh3@ØCæ†Â²MñNAÛÂ*`SЀ°‡ ØIh ì±@;Â+`' ]a°Ih@Øclê„=VÀÆ¡½aÙ)xÇ¡»Â³SðÆ {Â+$Ç }a’Qè~€°Ç|Ú{G¡Âóiï„=–ÑG Caeôa¨€°Ç2úa¨^€°ÇChúoúå„=–Ñ¡zã„=–Ñõ+uÑ„=–ÑAuÃ{Ì'§§·«›MØcýT…"챌®KU‘ {,£÷CeÂóéçé6É\„=–Ñ÷AÏ„=–Ñu‹/„=–Ñ÷@çÂËè*Ï<@Øc݇^{,£«´‹aåqºöX—-®„=æÈÛ½ öX—¥n„=–Ç»¡wÂëCDv\{,;Ð{@#ìÅv¶âž¬¼¬£±“övBÑäqÅ`ØD+¢í€nÐäqEè1¢éƒ Ú{n°öÎ¥ 'ôiІf@MŸ­ÐGÓŠ^„€&4¶µ^ ´hAÓŠ.ªnEÓŠÞÕ/jG“©õRÀ48-;ÑØrzz€ƒÆ¶ÑËB»€n4¶ž.¡Ø…¦•:um£«{Ð øhlýܺ؃6…öº؇ÆJí>‚öýhlýÜ-è~àÚy´MèAàßÝ è0ˆÆwg÷!t8ŒÆöÍ}FÐØ¾¹ëÐ#ÀQ4¶oît8†ÆöͽŽ£±ûrïAÇ 4¾Ãºw¡“À 4¾Ãº«Ð8‰ÆÊ]N§ÐøêÞžΠñ=Ô½ fÐB´[ÐYà,ßCÝeè9 q›Š!_#ݛРÀE4ÌïހΗÐZЮCç4Ìï^ƒ^® a~w º\EÃüîU¨N\Ccwõ#zÑhøÞ½ÕZFcwõòº˜ÛhøÞ]€êF¬ á{WoM7ñ._ÉÜKP€°k7âê²T< ]„ªð„=äk•«["Óö»ç¡2a×nÄÕí”Y {(Ÿ…bôz#ì»z{(£S:I©öPFŸ’²:a×–Ä¥–uZ'졌~Jºë„=”ÑñA°× {(£Ÿ‚ö:aùžââ¡:a¯öPF? %ìuÂò ÇÅuÂ^'졌~JØë„=äk†‹w넽NØC}JØë„=”Ññ}°× {(£‡ö:aYå]2S'ìuÂòUÁ=%ìuÂÊèä­NØë„];÷(”°× »v2.Y­ö:aOXåÝ(a¯ö„ŒKÎëž°Ê»‡¡zž°“qõßôË {ÒŒ6Õ'ì ;W¿RMؾ*¸‡ ºa„=a'ãêíêfö¤íT…"ì ;W—ª"ö„í¾Û•A{ÂNÆÕm’¹{ÂNÆÝÅužðÜÂÕ-ÆÙuž°“q÷@IE°' ‰ÊC¢ê„=áƒÀõ¡¤±NØ…D¥%Éuž($”°× {r M¶ ìuž° rwA {°'!qBèn`!qC÷ûÐø4pAû€~4BâlA÷Ðø4p6¡Ch|8Ð`Oç!t8ŒÆ.ÈyFÐx@ç¬CGÑø4pÖ £À1´A´ûÐ1à8Ùœ{Ðq`í¾s: œ@ÃèÎ*4N¢±ÝwV SÀ)4ŒîÜžΠ±ÝwnC§4ŒîÜ‚ÎgÑ0º³ =œGÃèÎMèà"Fwn@ç€KhݹÐ0ºs z¸‚†Ñ%è"p ;W¡:q ;ú½è 4<î\ê -£áqG/¯‹¹†Ç¨nÄ wôÖtï¢ñ¼É¹Uî£áqG—¥â­£±[r.BUø‡hxÜÑ-‘i6Ñð¸s*Ã5œØZÆãŽn§Ì¢Éãg¡ £^Óûìj†2ú,šY4}šòh|8ÓÐЄ&£Ÿ6-h|8§¡E ¯ Î)hЎƧ3ív ñUÁ9 -;ÑxøãÐNÀASHN@»€n4¶LÎ$´ ìe…dꄽÌ×gÚ ö²Brº ìe¾R8cнa/+$Ç }a/ó•Â…î{™Oç(ô @ØËl·œ#Ѐ°—’è@ØËì´œa¨€°—Ùi9‡¡zÂ^f§åè¿é—ö²B2Õ'ìevZŽ~¥.š°—’CPÝ0Â^VHôvu³ {Y!9U¡{Y!Ñ¥ªÈ„½¬ôCeÂ^VHt›d.Â^VHöAÏ„½ÌNËÑ-¾ö²B²:ö²B¢òÌ„½ÌãC/„½¬¨´‹a¯²[r<è@Ø«ì–Ùâ:@Ø« É.èM€°Wy8êÈR·€ÛÀËÊptß2}‘Žî÷øºŽUŽV8¬€‡À° l€Ç@4Úô’ `@Èy 4Í@ PZ6 èv%`'Ð 8@Ð ô»ð€^Àv{€½À> 8Èk–9õœÞn?°Ÿ+?Póêeà–e–Þ¨!à00 ŒG€£À(p ŽãÀ0 œà$0œNg€i`˜Îç€óÀà"0\æà2pX®KÀ5à:p¸ ,·€ÛÀà° ´Ì¥9]þ pXÖÀC`ض€GÀc °EÊ«¤Ø"Å)¶H±EŠ-Rl‘b‹[¤Ø"Å)¶H±EŠ-Rl‘b‹[¤Ø"Å)¶H±EŠ-Rl‘b‹[¤Ø"Å)¶H±EŠ-Rl‘b‹ ¤û*äßµÌåOê°Lؤ#,b ¤X Å)H±@ŠR,b ¤X Å)H±@ŠR,b ¤X Å)H±@ŠR,b ¤X Å)H±@ŠR,b ¤X Å)H±@ŠR,b ¤X Å)H)wJ¹Ó»À!ˬ^Ñåc‹ ¤X Å)H±@ŠR,b ¤X mX 9`b&0€9™ 0fb‚f€I˜ 0ÿ´L½³.A `Â%è˜k º¦Y‚€–À˜\ zæU‚ÝS*Á^€Ù” `"%Ø0‡†9âžeÖ?¡KhÜߺ¤#fN‚a€I“àÀ|I0 0UŒÌ’ã$Á$ÀÜHL‹S3"Ái€É``$˜˜ ÎÌ~&>‚9€9``º#¸ 0Ó,LrKóÁu€©à&À¬Fp `B#¸0—¬LcŒZÌ`ƒ–ùµi]¾>5ô#&/‚ `ØÀ|ì4Gø Â>ˆðA„"|áƒDø Â>ˆðA„"|áƒDø Â>ˆðA„"|áƒDø Â>ˆðA„"|áƒDø Â>ˆ˜BŠÊÉÏß|™.¦qKÞxSGø Â>ˆðA„"|áƒDø Â>ˆðA„"|áƒDø Â>ˆðA„"|áƒDø Â>ˆðA„"|áƒDø Â>ˆðA„"|áƒDø Â>ˆ(r„¢{>ˆ(w„-¢Ã–yõçuùkˆ°@„",a DX`[ÃsX`[#sX`[ƒrX`[Õ`™×_?×dæ¯è3lk(NÓm-–yëŸêDN\4ÆÄ¦¼ªá¥GEÒüZ§eÞñýöãÕ;wmƒlkL­×2ï×hºm7?ÂÍÙfw]ÕdŽØî³L<¯ŸÓ$›FÒ+CõҰʶF͆,óé§Ã‚l“«ó€æ ¨ùö¨e¾øne#\ÕnNÛ+í0 ŒY.÷9ij:ªSxÂr-Ÿ‘ð6Ô†žN[®£¨êÎg-çÔ¥xºß~ÉrÞUióÀu`Ñr»ß,‡ýí·€–Ûÿ&i7žÆ·ß¶ÜÑ.iúT{‘ë÷,7qP'Ô{ßXnæ‹ÒÔzÓÑ#ËÍéè±å>»Gí³`–»ñ¼¨ÚgT+l²Üê÷¤5êeµ[níŒ4={ÐQÐi¹‡oU‹’…»,겘œ*2U }Ë=óuiT‹…±î³Ü+W¤õ%<`¹ß}«4êÆÂX ‡,÷ÚJ£mÒwãˆâ…G,÷zŠõ´R¼°Q¼gÏK£x¬‰Å°Q¼çÞ#-¨[ب۟դQ·P­ÚFÝÞ±!º±&Ã9Ëýå¤é •n“z®W,÷þêÄ"@ñÂë–ûÐŒ4µ`ïâÅOïÐàpßr¶`êð¡åU+Ü Q _Zî“O/n³“³ü@‡Ú!êaä,÷|IT­r”-—þ4µ4Ô‡Øa¹/É% ÉK(JÒe¹¯.HS[‚¢$žå^ÐEB•ì±Ü¿)Ήžøë û-÷ÝëÃDݾAËýठêâ5jô#Wšš ·ÜO¾!MM½ià¤å~þ iS€:l3–ûÅÿJcþÔÁ± éI.XÞ^©꺩U¶`ùü»¤Q·„ô$K–/ʬ‰:gjw-[¾”—Fɵ¶V-ßõŒ4u¿T€5Ë÷~DÍSG$’—lZ¾_KAšXÊ˰óm-™å?Ñ­#=—ò–?ñ‡¢€ÇÌ¥¢å§$'Ñ%v¥Ë_ü¾46¸¥À±üâ¬4zùN3G½À.Ë/¿I'\@MßòëÒØÖ–Ôàé³üÖ§¥©4´üˤ©ß£&ÍaË¿"+mF-ÿÊÒè7:ºu[&,ÿ;ïÒ‰I`˜²ük‡¥©ù¢ŽÉŒåßpUÚ,Àæ¸Ô¨Û³_’¦Šºº=7#Çr¥›@£nþ¼4¦@>òKj_4Š÷¤lDJk@£xïÿ°4u3Ô‚X·ü‡þNÚà °eù䤩#AÝʺ}6£žƒYáLUGj4êV{QTeÕ2èÅûÊ5ƾ¸¼Ãòßø}i|')ë™~·å_ø¦4jYÞ ôZþÛóÒôˆÿ °ÏòÛǤõzÞ~Èòß½+Mí3¾•õ0}Øò?¸§z¯çc–ÿñiz¶®â“–ÿ™IÓst=ü>mù_¼\šž_f­`o•¦gáÔ¨|Ñ ÍsÒÔËRc„B•¬ÐþŒNP¨2…*/Y¡ëËÒøfSf?^^¶‚ÿ/Ò¨Q™•ïZaßÓÿ˃…ò°n…¿‘FÊj mZáÈiL"8ÜñªÚ?O¬0N’[«+þc¿ŽD5g…óï¥%T¥(Õ+\Ö=­j³¨¯ŒmVXi“ÆUµ/Yá‘Þ}•¶NUßõE‡îM•ºUµé eUªZ%~UŠWÕ—G}o¤´U2X¥‚U¢VÕg2X¥ÈU¢V´²ÂK>¥ß{Ø ú‚ކ­ðb«ŽF¬©ë•::bMK}::jM¯:­£QkúêӳǬé§_Óј5O<½9Ç­ùú¢ŽÆ­ù£ßÒÑ„5MI®NZKÏN°–õçtXË«þSG'­å=‰Ž¦¬åSZꧬå;oÑÑi+Žj!«ž±âÚËt4mÅ êhÆŠŸ{·Ž´R3£ä¨ ½Óвr›£&œºnZͺ­øâçµüÙ3 øå®Œµæïós¾þîNhÇ«ø¼ŠOSÏç|^ÀןÜéoìôGuú+:út>ÝkŸéTŸ!Ÿ>OcÎ×Õ1Äá3µáÓ˜óõGuú+:¦6|Æ4|òæÓzóéµùì7|ýQþŠN6Gsͧ›æ³0ú4¤}:Ð>Ý4Ÿi%ŸÉ Ÿ´O7ͧ}æÓ/óµði9ûô˜}úe>£H>wͧÇìÓ/óiùÌùLÕùÑgûá3{ä3lä3FçÓ óéˆù ùLù¬˜>1Ÿ˜Ït‘Ï8‘ÏŸ)ø´À|z^>M.Ÿù!Ÿ!ŸÆ°O“ËgPÎç3ÏgøÁ§ÉåÓúõòÉ¥O“˧«åÓëõÙœTìù/*X¡µU¡á[a®Â\…U´B/«Bs·Â\…‰· #nš» _¡ð _¡ð _¡ð _¡ð _¡ð _¡ð _¡ð _¡ð _¡ð _é³Öî?n¼IÿU™ÿT9²% endstream endobj startxref 662139 %%EOF elk-2.3.22/docs/PaxHeaders.22528/spacegroup.pdf0000644002504400250440000000005012337331340017201 xustar000000000000000020 atime=1400746720 20 ctime=1400746720 elk-2.3.22/docs/spacegroup.pdf0000644002504400250440000056066712337331340017771 0ustar00dewhurstdewhurst00000000000000%PDF-1.5 %ÐÔÅØ 53 0 obj << /Length 428 /Filter /FlateDecode >> stream xÚ•SËNë@ Ýç+¼L$bÆóôlP©À•¸Ø  -m!¥bɯ_O’ -OU‘âÉØç8Ç' P¼ØA;Ûùü;‚%(y\ èTàl*ëÙBÛÀ\f f0údŸ2ê AC0ÉÃí"»¾Q0•ë±d0‘ᥠZ€µ‰½œ`’]îÀ‘b¯ÄZú‰C¢EÖAR3z³;” ·E™î­e4ÿ“$}[,_èrD›Á §Ñ}%Ρ¯ÄjþEœf)½8>Öû¨ÊO‰A+ô^;¨î€<#ž=²e¨¦pWó¦(Mà|òXø×…Öùm3k“]m“/äõrS””×ÅM5îxÉ¢±^'^&¡¤€Ñèžöªi×÷«eOM(…}G’ ”ëe‡ PGtŒ=êl°ÇÍKAù<åß´ëçƒþ—&ƒw2¯ÛEÝŸëå´?œÎ?«vº~nSjÐ^ú"”qŽ¡ÏôÚ9J…6ÚdÞ«Eòd'ÕVkœÈsÝàíÝ›O3’8ŒŽûÌÈ÷sç¤ÅQVeÿØÙI¯¤/Vï³”ßíú?“ÚçF endstream endobj 72 0 obj << /Length 603 /Filter /FlateDecode >> stream xÚÝ–ËŠÛ0†÷y -å…5º_ºli† ½¸«™.œÄ_R;˜·ï±åÄž!­34@ áØÖù¥ó ýD má‹JDá§œ!Šk•ŠP©­Du‚RôeA!‘¢Ûc|-n–’!&‰š£(E†##(Q Š6è¿«Ê@0¼O|h‚ÑGÐpÄ(qÔ±NCQÈ%‘Êz BÇþ Ž÷u„7ízŸÁ\¡`Ì*,ºyž ¹~oâmÒK®ˆáòúq/ _½ÖÆzm8ãUžÀBVâ*í¢ÀÍ.^'þq[Wínøú„ ]™«¾È*o‚sÖ§ ”~‘¯U»ÏÊäfÙ-Ö–c°ÞçºÊ«m›ôÓhÍ0ÓSS`L¡% ™ J$nŒrŽ—ÔVÕû:.ß¡”†ÜÃÞ—[xß'uê} ‰‹!'è­8ƒ§ÒÝSE¿Um½äË,O†©ûÜNj𦈳’¤ŽB:Ôb¡ „ŠÒ™…îB¦˜|Ÿés³|0Ûl›Ç"€ÕW¾´?”Út¥út‹Wc¡Rëó }… ;“Ç$L÷”Ér³«³bäù)TrŠêiúˆJ~i[//huÀ  µHëx=kß§¶±—vñÃI@f¦QÔ‘P¿=f7~ŸhðÃdÃ3}õMò:°ôÖº®šæ +85O·TŸ:Ò2Öý·|ÌØLYyv;u©ÐPpB‰êëyÿKJv†’)>àÿw§RQLÎ$n¯ÞtfNw7¸¨iJ ‡ËÝ4ù}´ø¸\Fl endstream endobj 80 0 obj << /Length 1698 /Filter /FlateDecode >> stream xÚ­Û’Ó6ô=_á·ufˆÐÅò…>Úe‡Ù´ÓàAq”DƒcËÞ-ߣ‹;6t$ûMù‘hÿÞDu„á//2Äq–gQžp„“4O¢VF»èý"ŽÞŒë‹õâéë„D$A,Ii´ÞE2†‡Këmô!&Ë!”Ç¿×KFâ®m–+X·}Ù©¦^~Zÿñô5áÁ¨À1p´¢@ŽSwÿî$J¹o›þ´\%8‹•v«0K÷ªT·¤yüÕ?Ti¶·=†°†Òß,Û¯º•Ûìes”]ë/ï–$nZ÷ZzŠªóĺƒ?zU}vìKÐ.6²x+ŸÀhºk›£QÌhBâIá4q·A•8(F¸ÿ“¤–[÷e3è°ê´~“íQÔõêOÑï{ÂÖžâ×£AßXU›ÊŠÚ“ªD×)Ç1‰ï— «,;«&ì+Yﻃ>_ H.ê}%5Z®8¸nê–Ò¸•e³¯•6æ5{QU  ;Àëk@{Ï#ªÚ­÷Kœ[ÕôþCé\Ö´[U‹ÎßÔ”¨÷e¯îaãÝX³ÇÍέÜÊÀÉ‘×Zm*鎬3kÀ ¨+1Ÿ“Á­GïĦ«_™­³»¬ƒûvJ ×ìÕÙú­¨´É‚€$†ðŽ÷jkÍg¤í»SßMUâN£²9žDçD¦÷aI‹Ä–9úÇð áý«¬Ý‰ñ²Yÿ6¯Ö‹/ b“œD4IP’F)§ˆ2•ÇŇO8ÚÂ7àŒX‘Gó1D3PÝ-Þ»œŸ§,M2”1fiaæå½SGǼoäú¼äi,öFOsºD»Wº•ÒÂ'õîB±1eÍFw-T¾•È•yýY‘Œ[aVŒ¡ŒgNê«Ð_$¸¢êÜÖäcEÜÔÒª6~± IÔ ÒݱϧtŠŒ9KF¹‚T°Øeàž èu,Á¶Ä™µ•_l’·r 1úù˜ Fx!wníöî(¢—ÜŸ©ªêá¢[8ð5ÆÄ˜ –§³ë;Ϊ|p»¬cI,ÿÇS5~oào$ñAíÞ>lª0I3Ä04^;Ê£ ¶()b9PÊRúAÓ¡Óh‚¥{—ز-›Ú4˜A¨·Âs¡.ypJflhˆMÁ4có²¿ £A‘K®"÷Ìfæec½ +(KâÔÈ[ :DõÍ‹£ØÜ@h§9Æ@iÅ!Äíqªˆ@ §˜SFÞtO0Ç1đь¦Có‘žxâÖ_­3"È1šÍ@Î7 L| ¸)=%1› À^®éʳ³`u)¡Õ."H(`zæzjÕñò‚s¨yq¶`­O²TP¨´oÞ cppâHYŸ {|Wƒá‡S¤ 6‚?`1È–â®ggU¾GåæePü_Žv¢{:¦aú”OHÎ6—ôùã"‘œâP:A¾ÛTZ1 åÀ§Ôz([cÉNl¯­8J3°u²ÕÃut&Ó—Aú²ðég¡rmBrêrȽ@w™gp>ÏÕîP/:óÁUyfF_‹çÇ*wÇà:©¯ïÌMX,9×q˜[†’ýÍÌ’$ºÇ¥Ðr¥e­U§îÍG° 'W(/Bš»:1ö·•¥éˆ±ù 4Êp @åÍó¹Þƒ±1Èt0¶†ã©%_4ÿÙ˜J!i ñÒ5G-N_ü>ˆIgsKy:úîv•Aw€P&¨ ^ΘfcœŸÃ8 ª£6B!»@ Ρfæ¨MÐB„ÌG‘ÇÌ,~• Ça®G4¡so=·¯¹?¶0]ÉáЇ´} >ØÈ•­ºptî­CN"Lì‡  ñР‚{4}ãl‚(a? JhådœM@…&¦ÄZbD",< aRL(‘_‚ªYp”;,RüšÑŸ£›h˜R”3ÆiæŠ`X6è„’Ÿ¬âAp­÷xXGzΙï'33?Ì@6Ì’yœ‚®í9µ©s=´ÃÉ‹×vÅvÞeLsá ]"Ù'I;ï/,–æ…—ÙW²i¥€`ÝAW4éXöˆwÒËÓ5!ÂsÏû0T^g±©vÈÚ úî/„lâ.èCÓWÛYf‡¾Þ†=iÞZæ‰:sädê|ÄïúÉt g~›¶"3"8C÷oœGÙk£iÚø¦Ü<ÿùƒfoH2÷˼êQ½ÙãSœWëÅÈ/ endstream endobj 88 0 obj << /Length 975 /Filter /FlateDecode >> stream xÚV[“›6~ß_Á#ÌYW.ykÚͦí$™¦Î$&,6YP»ñSÿz8€×ÒdvÖç"¾ó‹ø'`ÁþïPøSyJM³4Ȥ"T&™ :TÁ7 ip·¬/¶7›—2 %9ÍY°­‚”© DÓvüÚǶqÑçío›—L=5¤AÌQ2G»íAG±"´OÃ!báÑoî£~AÅÂõM…ë‡Sñ,üâ­šO” ·à…«ûº±…AaÙ ´ÛÕ¶èµ#è¹”ÅSôƒ¸Ï0²3 y ‚A$ò‰÷cha‚h\«®(½Ÿ{± û™"Sô}]Nž]öM‡a]Çñ¦éGKþE¿¸¢„ ~ÿŸ0Á ÏòÙ¬°»µ³8#œg³Ñ·Žâ Q [Žê&€FÚ4вØ ‡ªca=ç)’ú¨'ÅläÌÇ,繫§¬‘eÅRfáOU¯;´(;xWm÷#qWJ»ÌïH:ç2óÕ=>A¦¥ÑÏàAŽï^ã"ã$å ¯®-J½ïš¡]cDå$])›ãÑó‹ïu~a7XLq††`Ü&KÒînß¾¾Ý¾û‹¼}¿]C‘2Âù½C¹€ÛŒµ;¹¾0ä««ÖNŒE’J¯Hu‡f0>ÊŸ;Ü?´öÇn(õΧ+ÏÇɰ—$?‡Š[¬‘0|eYø®SPõ±5§3¨lU´>ó(±;=áî›IkWÑ% IÎ,ió…Ôvµ«2Â/aAØŠÒð× ‹RRNÍ. üè›ág þm±QêiX^ó)hƒÚ÷€ÜŒÅÿ ÕP3Óœ^Dól²[˹ 9»œ+_}æwþ4ÅUǾÆí÷*b嬑K€Òy~»«i7غŸÆ¸6fÝ,`’™ði& x‚»g<f0c€dåÐ.÷c¦S…s4U؉¸Å~Déé æ3¿ùÖ쇪ƒ¬O³?Ê„/©Ò°ÀkÀ6~y4z·Ÿï Sù]æ,$¸½ëçtüû`]oôC„ÅæÍ?QEW3mM?—Ê¡ïÛç›MYÖÄܲo6n_ÛªÙ¬áf2ƒ}z®3ÅðmUÓáfd%&ÆÂóËÄeÝ ÏOÌXPp›Ø¥Iøx¨G ¨)œÃV.kã¢ÍÌ<ègæAŠ7þÑ;?½î/YÆÂ?K¯?üù®h,4‰ªÉåâôçžïÌçnôäá+ÝAAÛøu1ìl¿ëë{ÍÓw‘îŸW…™¾!®-ÇB\¾„àâ„§@—„‰ËÕôõ#/Œn·7ÿJ_Ñ endstream endobj 92 0 obj << /Length 2995 /Filter /FlateDecode >> stream xÚ½Ý_ÛÆðw >zvÂù? ЇݠI7@‹ â·$kÅI X[ÄEÐöÛw¤åÝÇWœÕ‘$™çìègŽÈ!Å?=üžÿýnxÆüŸ¢òcLqHΫхä†Ï†ß†ÞŒù…ãðÝýãÞoBÚ•·1D§•unØlßüôË8üšÿç÷è씆ÿì_ºL²*嗌çáÇ7?mÄÄ8D“MAÚH~¹UÞMó6îß½ùê[í=ªiœôðî·A{£œwC´Z…0¼ûuøéí?þÜÞ˜ôöýÍmþï‡Ï7¿¼ûþÍ_ßñy,r L3Ze­ü¸Ùøç¿^<ÿÞëþ´¾îè†>»»<´PêV>ôI“+"·èã¹ÙÙAÚ’¾ª­Ù S=¹Š;;DâÆ‹<œæÖÝàf^Þ 7“Ôhq{’æVDnáÆs/ Җ¸UmÍn˜ªxòÒ„¸ñ"÷§ú³Þr ZÜòÚ)}á&Í­€Ø¢Ç^D¢,a«ÊšÝ U'Edl€"d­´ÓÖz£—ÔÜ”‡; ¬ù÷L(Ö„™’[°ñÜK`ô%mU[³¦j&µAš7^äá4·þ솷”ß2 ZGu)*Kçu‚´Ž ‰%nUì9¹üü·]¸ÜÓ}ÆWuÜV‹ª/kz{s«ßJ}f‚u—.·Ò©’þð†Á·@K«.Z•L1(,­Bb‹A»þâ‘W„t'ƒ¼{6¸XgÝ øE_Õƒð öº³ö|þUƒ–Y]óFÙ–Y!±Å=×^8mÒìñîÙÞÑšëVœ{EÈ^ÕƒìI“owxŸ3*¾¼Ñhæ78Šë­Ü¢ç®_äµ>HwÒÇ»?nŽW_÷ÓïæÔô‹(D «>eú.5éOo0ÌÛÒ´ ë¬Ut©L—a!±E!‹½BHuBÈªï š¥ÁgÉ¢ ùãUŸþL|û$ìnÐ0¨½ò´<ëô¤‚Õ¡tÜ‹È-yîBº“BÞ}ÇÐ.>I eˆaÕ¥v(0ìnÐ`85jЪ­ƒélFWm!¹…!Ï]™ç«E ݉!ïž­á惑'Á ¢ ¬ŠA‰_wø’ŸMI¹Zŵ“QÞø S1$—øU¹—ß bºÏüªî;~星p6¤É̯.Rø ¹÷§7üE§&ò“š’-þ„Y’[üñÜ+øƒt'¼ûΟ=öwt×Å{#¢q¬zGIcwxCca@˼6xå¬#Ò2/$·hä¹WÐéNy÷¬ñhÑ7ãË …Ï„2$°êRNÐH»Ó]~{@«#Ök•’/¥ù[òØ+DT'¼úÎßÑlü|Ê  ñ«ª0~»ïˆŽ»+4 Z—- [›”µ¡ ”&eDnQÈs/L‚éN y÷ãIy#D4!„U‘‚Pâ×ÞðgƼ-ÔNÐ8Óü#$ñ,5$·øã¹ë/Ixµ?HwòWuß.ïÚJþMÈ_=ˆ§W‡ûÃüÆÌõ½Vkel,ü¤9‘[øñÜsù­˜„!݉_Õ}»¼kHä‡hBüx‘»5üºÃ—üÌdU0 ~&Û )~Âì É%~UîåùaºÏüêîÛå]D?H“™_Uäa¿þð¿4æ!-›ä”¶ñ“NHCr ?ž{~îįê¾mÜT$\iBüx‘»ÓWÇôg7ô… ¼­ ›8*À'L½Ø‚Å^Á¤:ÙãÕ·Œ¶õ F’DD/’Èjݯ€ØÝ€˜ M´£«šoö#v´»«ï„»"zÍ y­û »£[OR&EÔsû”õæÀÐHO:?öðì¾CìåBš—gù±æ›ýˆ}Ð{–žAt~‘ò<¿CÃÇ<ñDÙ­ï¢TÑ¢¾Rܪ4Ú<ñ«(Ï-ßDÉb/Òœ¾•’7ßìGìhÚ•¾P„¾”’õxXó5½ÑËg‚çMx;õ<œžußÏÝ LÜÿ}(×ý¾>ý¡ücü Àž= endstream endobj 96 0 obj << /Length 3105 /Filter /FlateDecode >> stream xÚÅKÜÆ…÷ó+¸-ºTodábe $aíl/fÚ²l@šÀ „8ÿ>E²ëò²YºÝˆ0äZlžsÈuY’t¦{—ÿ¼êž:ÿ C¯‚îSß%”ö1ùîãÛî×îû7ÔÝ+úüãÆL?1±½²Æw½7Êyß?Üüø³î~Éÿø]§•R÷ïiÓ³F…~üáûïÏvâÇäÏ0Di'ys§‚Nû¸{sóü[:£Õ Ó½ù5ÿ{Þ ÿµwFÅØ½ù¥ûñöŸ><³éöñÙ!ÿÿíÇg?¿ùîæ¯o¸ƒ>)›ÈAòʇaåà‡ãhà·Îž~Ò&üþö_[#ÖÛ|<-ƈõI¹´6ò··?<<=þþðéݧߟ¶²„Š¡Ç8ðÚ«äüÚÁÃû÷[YŸ½†ÿÙ ŒùÓÉû¸Æ,}Áhz•w8€áŃ„è¹îËQôù·6Ó¥†^Oö*õCçÔ7ž6ò§ÛHw‡˜™8?‰Z„w¢våý8´ƒsîö/ㇿ½{4F á„èåNîfûç£@q³|@­•€9Љž´€Ý וL —Dx'WÞãAã¾|D8!×Gqp¬&GÃf[ cŠ*y…qÐ*š…B÷y !²'W²ÿÿVa½0¸¶~gðþ(1ˆ0R\¹'øšÕ+ìõ^ß+Cï à/-Øqѯ€Ý—ú&æV¾ÓÑZ5|2t_jƒˆ[¾kˆk’®à†|â ¹˜?M\J.F¸`Ç…¿vï„ÞÊûq:j«‹>±æB¬~ÜÊÝõ5·ÝDÄÜ´è5Ä~Qªºá"þ "¼ˆ+ïÇ騭 ¯Øû€X!¹•ûkzíòU. Ê¯‹y§§ |£_< Bt \÷ªÞÇtRGæúìfþÊV ôÊæ3£ç ~˜D¤!&yš×öù‡|9“¯MþN¢a†¨äf¯g#ö?”Íê(MRI{”Öª(”Ý%×½ªYDC‰HCPò4”Ç3(G*(fJn† ˜l¯0©ƒ²°²”31ù 0 Ñ-LrÝ]˜D¤!&yš‰É‡5“c;)5”3Ä$7CLþ)@Ù¬¾…2³¤z ‚2 Aõ§ëc¤â‘=1Ée¯BÒb‘„„)Hò0¯­©Õn#oˆ›Â$w³Ônኲ]½Âd†ÄÐì^Hù$YCP Å£[ äº»P‰HCTò43–Ûêm¤ò ±CXr;Ä¥Ð×nW¯`½Šºaóaé-a)ÔoŒnÁ’ë¶ci\"â—<ÎÌåy7r ‡Ø!.¹¥„?`6ËWÀ F隀!(cOS˜Æ¾xÀ1Â…L.|UÜLDs•fꂟ_èƒCÜ—ÜÍáåå>x»zK7.MK?.Ã`X ƒäá‚%¾ªÁDc‰HCX®ÒLX®ÇÍ¿¹„% aÉݾ¹Ëfõ –v>W,mRÚúKaÈ#\°ä»`‰HCX®ÒLXž¢_Âᆰän÷W`Ù¬^Á2ñ Å`2$} *R Gè(¹î.P“«0Óx¥9k*åK„B’›¡–R ²U{ ¤¢JE¤ÎßÙ¸)”oŒpA’ ·# èï@┫8”góÞ3”ËWîöN¤b0åöw1m¯pšœr4îS¯ afN…zŽ>qºÞ£÷IS0]§™0=¯çrÛ qS¨\¹¡z.PÙ,^¡2ª Yqß;•ìB¥´( #\¨äÂ{tH¢r•fší9[)~aº↨än¨­¦{ÚÕ+X†8Ýø€Á2jeû´`)uˆpÁ’ ï‚%" a¹J3ay¶~ü–7„%wCCE–Íê,óq…¥ª·Ã‚¥TÃ!ÂK.¼ –ˆ4„å*Í„åY ¿„% aÉÝP —°lV¯`ie hrÜçOZÙæÄquŒn¡’é^¿¶%" Aɼ¶Ïç£êãʶ£Ä$ 1ÉÌ,“ãÂ,d»z…ITˆ ÉqoY ”*8D¸@É…Û©DtËqKgæÒn¸|zfn%4†Mnˆ-º´éöA´ÙCPm•6 ir¯£ÒÉ.€Jµ"\åÂ×ߎl6iˆOžfæÓmø|àD¸!8¹›386›-lÙt))A3ån°*¸…Mi”#|bs%¼GI‡¤)l®ÒLlÍvaðÃçÙ„¸)l®Ü›–íê,{¯ƒÂ2#7$·`)ÔtŒpÁ’ ï‚%" aÉÓÌXÚ-–Âc1 nKîfÁRXˆÙ._á2å"hªÜÅ ¼ó —B)Ç.¹ð.\"Ò—<ÍÌ¥Ûrù¸šz=~ñyPöTn@•8mV¯pêó)͹`TJ0•ÆÚ!º…R®»K‘†(åi&JφÚG$¥Á#„b’›YVeJP¶ªW˜tù¸÷ ésçòauqRªéáB%Þ£ICTò43•öœJñ¾qˆÂ’»áX^¸o¼ÝD…N«UoQM¦õªOŒN©²C„ \x—ÊŽHCtò43îœNñ7D'w³Ð)qÙ,_áR÷Ê žåâŒÉç±L›{qÈ#\¸äÂWqÀ\"Ò—<Íx?EmÔ݈Ãî?D&÷ÃoJ»Ôn6›Øòi§¢ñi‡^Å”>…ªŽ>ñ¹ÞƒOHšÂç*͉O»åóÂð;ÄRAteiAôéóp¶ËWàLZé4‹n3+Æ œBQÇ8¹ð.p"Òœ<Í N·…S{‡ø!2¹Ÿ³±w¡CÔî¡‚gŒ*XÐlºíµ ÒØ;F·ÐÉtÛáôÒ!iˆN–f†³2ön¤Áwˆ‚“ÙY9…’Þ®^Á2Ø|@ê6ôJ{³p)•tˆpá’ _ÕQG·šˆ4Ä%OsÓVÀ†ß!~Lî‡È”Êy³zL7(oAéÖ;å¦TÎ!ÂL.¼K9G¤!0yš˜®æùø»‘à! Uî À_èµ{¨kC>—(`í o Xi#\€å»‹HCÀò43°›‘x#ÅCüžÜ{B‚tíÙ¬_AÓXå,h†Ýš˜é4¥".hrá]ÐD¤!4yššvƒ¦8ñChr? šR•o–ß’ir”¾ͱ[mUò~!S¨òáB&Þ¥_‰Chò8'4ÝMq0â‡Ðä~X«)ôvý ›)(Ô`§Iƒ²C™Wâ`¹r;Ÿˆn:"ºŠ3º-îba‡åv–â.¡Ù,_ASçÓå@ÓêF/ͦ4§Ž-Tê´c÷‘„€Ô¼µ¬=/N˜J‡8!‹*ãRoVÞb8äíh}¹X8ª7Dõ„!SÝ£t#¢y”Ê­kwn]CX) 2+ô£‹%»Ù@奸1˃xLãWfR(×Ù\v"Y ‘«,•»Öîç»Ö>ÿ–\€—‚$÷BeZzGs«ví%iùŒô¨W”*ìrõ(Õiˆ.½¥tÑÝGD–åÍ¥,ËtáxV¬ï¶wQÞ‰€"Ü-/4]ܱFSxcZ£víi¯ªw¨W8•´c€Š{è–g½2Ý]:7ˆ0ô¤Wf&Ôn/'Ÿ¤»~¹z®+3³\PJ’i_ig"ƒç/ÝØßêÇßÍûÐÝ»ü÷WÕ£:Î<õS{Ho‡ŸÎ>ý(Çø/ÙnÛŽ endstream endobj 100 0 obj << /Length 3023 /Filter /FlateDecode >> stream xÚÅK7F÷ý+ji/DóM–YÄNìq€(ˆwIjÅqX=ˆžÉÏJ"©K‰}Uœþ !HÚè”t¾[:æ³Tõ礦éß·ÓÃ$Ó?nÂÉíÒúh§Ï¦ß¦îd:PNoëÏ?ïÔá%jRÖ‹hü¬ÆÚi»»ûé9ýšþç÷“fŽÓ‡î&µ0zNþ4ýx÷Có&AH㦠S‚Ùso’7ÂÙ9¿Ç«÷w/Þ(7))f9«éýo“rFh¥§`”ð~zÿëôÓ³~Ù=×ñÙýóUúï‡ÏÏyÿýÝwïi‚Tû,-&–VȨš?n÷~ÿ×1ÁÃÏR¹?>üû2ˆö*O â£mŽ¿ø¼Û<<¬þ±ùòñË—Œ÷"xP´˜m`óéÓ%Õê(fÿÿÐQ1½‡áßcŠ âm©¨‚Hox<ʽ\m £ ‚\¤ä×{è‹7:s‡ƒˆ!NFÌn>ä÷%Â*Þàð;_èÈ ­Ðé4Éã¿3"CÊÉ"7ÕèÛÙ\cžýmÿÃ>{§”~±a¬F¤)VÓ4«wÇzÃÈ= ïx)¥ó ò2Y¢¼­^n£%\µ¤`^ËØÑ`%¤šleSÌÞÊt©”¯ô‹{¥)aŠ”4ÌêU–ò¯{ÆÊaú¥•>záFJ?Ká‘R?.%‚[œl¸ãMåÓ„sT²­å ¤n”L¿{à”DdÉF6YV¯OFîGBÛǽŽÐÑ2“!½aÊTdúï'C«z!Ÿ\I¶±)ä`ãY¯~ÇÚøÔ EE¤öØq‘;ºYX§@út ò§a$×_CÈUEJ¾‰Šj²ŽM1‡QäY‡ýúšˆ4ÅIšæÔ*ƬRGè8¢P´‘ç¢é/f•,@7Œi|5⿊j´Y56µgŠs Á-®5ܶÇdÆdã:®y+¼ ×Òiô!f*2Š!¨U1J]¤˜T ’6+FÃî›3Ö1¸8Ö€[Ç6œdÃ:’9%¤m;ç„Òe;8^é5ä*%ó¢ÅŽh×ÿ˜´Y4öЖ1ƒ3¸ˆÖ€³heÝ#k÷¸mÃA:¶™ý•8 M^g•pádÛ‚î¯ÊQüWiÛ i³r4ìa¨Æ)‡åp¬• Á†YnOÑñMO?Æ·Lê²;3š!¨U3J]¤™Ô ’6kFûPÎ3¹xÖ/<ãzÑáÏR Ú sÊ ò^ž–ŒfhµŒBYæ-C„͒Ѭ¯ù¥ ¶Ö`¯l '¸´ËÎé{”^2ýNû¢?Fƒ«c”ü5ä͒Ѱßðkn±¬á._ÜÏÐñ,ahïÔÆ LY¥Iž]AðE¶¿hBàÆ&˜´GÙš°¯øÅ 7ËÖr/nŒGè¸æçC9ׂQטkG Ôª¥.jÏü b´Y1ö5»áÁÃìÒ §ñÁœOn€v4­—B‡²o­®tšr•Œ’Ç%[ÐiBÒfÉhØoxÉØ"Yƒ],Ùp‚ŽdV ïQ’Ùtjô\%[Ðc"ðÕ4Šÿ*¦AÒfÓhØW¼il1­Á.6m8AÇ4= ¥@››ÖQ.1ÑÌ%mhõ‹@éõ‚„Íz‘¬ox»Ôb¥.–k8@G.å„ó ]M«fáMÝ0W¤A¨Õ.J]¤WÔ ’6ëEþãýB`‹_ v±`à :‚IêmeZéÓG^>1ˆ VÁ(uÑ„ríCÒfÁhØw×Öa!äâXC>m1$cVûÇ3\ZfbÖƒö2ͬ…3Å2÷¸ej±¬¡.ºîûÑ‹¹+kÿ󸆘rŽ6Õ¬w;¦ƒ`³ƒ-¶içVLC7¡£`°bV(C MQŸuBÈUCJ×P4„”“5¤Õ¬õnÇhˆÀ ìQÃÕõþvõ/ï7«-c!]5¤èE_ºÒè±!¤œì!­f½Ý±"¸EĆ{."3CÑQQK4ª-ÔV„xR‘"ÈÕDJo&BÊÉ&ÒjÖZí˜Ûì@¸ÅĆ[úä{ýã!:&Ê ê.F©ô¹…jâj{Ïèª"Eߦo†”“U¤Õ$7ÜðÁ-*6ܳ© gâp†Kõl„× urÌÇxꞯÎU øbcƒ¿‰˜rŽ66Õ¬ïSËø¸n¶±åžOV˜ SÆCttŒRÈÚÒÕÑ eæªc,2}4]U¤èÛ¨)'«H«IÓfuϨˆànQñþú¼e³V>½²ì3Ç+kÚt‘¢o#"¤œ,"­f}Ï]ïÁ왈\c8œáRD5Gh§YK-¢µUDvŒ!W)ù&bÊÉÒjÖ:?"âQ!èâbƒ>ëš™qâx†Ž‹Ñ ÔB¢Š³Ð³«*òKÚrQ±!/š®XðRÍÑĦ˜µÞ2+ˆj–°¥ ¯Ww8BÇÁ „ Ífœö$áõ¹ _M¤øñFa"¤œ¬"­f½å®¼`‹‹ öÌEv gZnEI¡ç—7p·rpù¤óôÎÌ#:—ÓÇôç·Ýs¸ßÕ ‡¿ Þ9ro¡ú¢TÆÿûÎF endstream endobj 105 0 obj << /Length 2921 /Filter /FlateDecode >> stream xÚÅMoG†ïþsŒêôw÷ä&-6ì‚A|Kr ÇÀä"^x÷ïoSb«ÉVqZ~AHq(>õŸLOuÈ¿&3},¿›“.…9© SNSöAi³Ÿ>˜þ˜~z£Ëõô޾þõÆ<ýˆ™Ly¨uSòF9ï§ÝþÍ/¿éé÷òß~œ´rsžþ÷ôÈýdsPÁîÓôó›Ÿ.žÃÛyJ¶0GéIÊÃ]y–ùôïß|û½ “ÑjÖ³™Þÿ1™`TÔqJ®|Óûß§_¾ùç—ý[›¿y|{WþùáóÛßÞÿøæïïysT¶` Xm•O¡©àçݱ€ýû¹‚ïڄ??ü纵²6 ‰Qyí›B~øðy¿=îþ±ýòñËŸ‡ë \´ÊiСp1+ŸÛCñÃöÓ§k¬wZ…d^½v±<…“Ÿb‹…}¹h’*OøœßéïvÛGÁA™ää¿¡ß~oí”ÔœôÓ“Ê)ONÍa~~P<>¨î¢ÊÙ>ÿ™=ý``?èË¡åqOø¯`2$N5™ÇÙØÃVðÁ%îÛ;çÜ7wv»;~çŸÏ :WÑQQk¥ç¤¢öÊDO*Þí·‚‹4¹ÈѲ‹¹ã¢¸‰S]äq6v+K\r±á’‹·]®âÚŘ£ £bœµŠæ¬âóò¼tDЫ }•3#$ÍIÆ&꾄 2"°ÕÅ{éâÓw/ê8\GÇÆä@*¦¤t ¤â¶œ ¿Krì:~u”* ²9ØGAÀ¯e’} ³Úw:\þë˕ӑ0ÌÊ1–šÓ•²3‚ƒ*yÈ©‹&¯fƒò1e5ç:•Ž‚†*iÈ©Ë4´àõ“§jØäÙï¤I L¶òb(x8\DÇÃh”‹ ©´‹åI]JÇSišdäè•d„ä©26yvâogAÀ$c{ /d6¹Ç«èØèËË»¸ò5ç@2Š—‹0©ÈÁ+©ˆˆSMäqî­Ù ;Ü.‰Øpiƒûöp¸ˆŽ‡®éF;—•s‘D”‡Ñ4©ÈÑË‹¾R„ä©.ò<ÅÅ­t©ˆ“Œ øò—±‡‹èÈhµJuV´^¥|–qAë‚À“ÿŠs#BHHž*$Ïóð(þ2LB6àë_ÆzÙÈá*:Fê¤ ê-Nœ1å•Kd¤<‹† ÉFŽ^i¥†ä©6ò<¥‘6ÂÝc0ÙØ€Ùíc7[˜á*®m´³SÑ‚l´sR1×ÉKzYDµŠØP—‰èÀ"bòœDlóìvÂV7„[=¼8ŽíV·Ð»ŒÑÑ0k¥hm³WÆÕQt’›™Tää•T„ä©*ò<÷v+t/.©Øp/ÛAÅá":*–ìÁ‚FÑ6•ÂÎ&Þ¾`„ÐIGF_ÉFHœj#‹S.…õ‚%9öjy®Ç«èØl9è Q´ Ii_GÑY°A% 9uYíÁm &OÕç¹GÑ.yØp¢ÇkèXèæò4жÞ)?“…76º!hR‘£—á*BòTyžYE—Tl¸ËU®¡£¢ å5B©hg5{K*ÊWŠ2™Èɯ0±6CòTyžñ®—Ll¸‹ïН¡c¢)y,h mM,?éÈDyŸ‚&9z%!yªŠMYE—Tlãb‡k¸VÑÌY¥D½ÈÞŸ×ç›M O:rü::bòT›<â :.éØÇÅ7èŒÑñ1?}fDG“ç"Y å-n¹šØ×i\ qN"6qîeØêa‹ðp´†Ž†©(”A“h“‚J¾z8 "¨ä §.;´ƒ¶Çq`ø7^FÇH]^ E}>;Þè¡X2Q|¸¾yd©Ö,÷;±{F0É@b^¬Îò¥âp ×öÍåñ4yž½ªÍ—×/›‡@VñrÙ ý¹”0'óX˜{±QA@«zzùÖÜ/«7\Aç³QË+à@æå㙪Þv®þqð+D|H/"ÍI@žæAܶAP« õBAaí.¡÷ñVÊæ„úJå‚%o|¸Õ×sÏDyæ®c $ }å9ÍÃÍ®A>"%#/ïI†K软§Jõ†ðNeíÈÂ[ïêùõ`zSO^GCHšúžž<¸Qƒ Òz6Çpñ6Íp ­‚ÖŸ!8qhs(Opü±ç§ÐÓÇòý»î1<Žt’;þŸC`oûO?TRü\elÌ endstream endobj 109 0 obj << /Length 2987 /Filter /FlateDecode >> stream xÚÅ]o7†ïó+æ2¹0Ëorr—ì®SØ…Šæ®í…,§iH‹fÑÝ¿¿´ER‡}f¿€P´2ܱžóÎ< ç Gš?'5}Nÿ~˜“Lÿ¸9'C S´NH룾~š~›~|%Ó†rúP_ÿ|¥žþDM*mj¤›‚UÂX;íö¯~þUNéþ0Iaæ8ýïiÓý¤cÚ4Îéç/ÓO¯~<{÷ø&:U0{îMÒæF8;ç÷xÿñÕw·ÊMJŠYÎjúøÛ¤œ>ª)˜ôê§Óϯÿõ×þޝïßܤÿ~úúæ×?¼úÇGZÁì… S–Z8×ðÓî‘ÿû¿~‘Êýñé?—uhŸ`Ò€êð^ØØÔñý§¯ûíápóÏí_ŸÿúãpY€ñ:$ÐŽ0> çÛCñýöË—K¬5RØù[ 記ÞÃðï±BÅñiçaTTA¤7<î+ß=Ümøâ!¥ÿí‘ùÝ­ÖSsOÛÃ<1»ù¸‘ò[%Â1êã/uþKGþÒ mlÚîiƒÿ2:Câd›8;½g$F`«Äín¼1Ƽ¾Ñ»ÇìÓÏK=\FÇG)…œgÒ åmõq{³»g\D ‹‹”Ì»{.*€‹8ÙEçÝ^oØêbÃ-.n‹‹[ÆÅá2.]ôÑ?KˆŠ~–«¢¢zÞB4KØ0× ˆ< BÒlÒ¼»ßêçDP‹‚-ö¨ ®2£ápƒÙ‚ÞûÞÞ§‘Qð¥Øâ¥^É¿GÉòÑ(ïyù^Ьæ5Ì3óO­ÂkN¿¡2:î¹YX§@þù´¡òÕ¿Ý–™‡!ä¢ _IAHœ¬!ó^÷Îfª†lU±á–y8ŸÞ•ÔŒŠÃ¥ttL¯³Ô í,fªŽé´éQ èâ#%_ÉGHœìc‡÷­>¶»ñÒGÃú8\JÇG“b9ÔôlÒÞTñ4=/öÍ|q’Ò×õ*Ü«`âd'›8;®W`«“ínì9yóæF½^1u—ÕñSE¥ù©µˆþä'ßGCÐÅMJþ†ñá&$Nv“ÆyÇ»‰ÀV7ní£w«ú˜áB:6J'4¬•–³0*n«Ô""…®1¢'nHœ,"s»ßsý [El¸g= ãàp —ºY‰ AºÙ‰PN 5ßÏ@ÀYCÊ½Ž…˜4G iš[½g®pC¨EÂ[ÃÅ.f¼„Žƒ! å@ .j¡µª.Ÿ5BðÅDJ¿’Š8YEçvÏ­¶@°ÕņÛÊȈãEtlôVx@6¦@>ä£j #!‚Z$¤ÐuÎh !q²„4ÎíÃ3+C°U†{6+?0Ñ‘0ù#hÚ9'”. Ðfa^F‹ˆ¼®‡žÁ} &N‘ƹÕŒˆl±á–Ñðayn.¢#¢y¼-´òì¬.œD\17#ðÅFJ¿Ò°‰“m¤qn4g#[ml¸g6òãpõñø`|ÔQH]–Ÿ-£!‚Z4¤ÐUj‰Ö'kHãܱ=3[5l¸«{æñ:¦r,h Ð)+l(kÐvan€‹…”{% i²„4Íß3¨ÕÁ»¾g-áRA›Œˆå L¿Ó¾:¸<-CðÅDJ¿Ž‰˜8YEçŽm™!ØêbÃ]ß2ѱ1ahÚÆ+W#!‚š%l «:­À &ÎQÂ&Î{c[$l¹g“2³š2^DGB?‹àAkÏ6u•Ÿ–!ä""¯ á"Bâdiœ;öV¶ŠØpÏn‘åFÃá":":/´-2ÛtPtˆUÄs3_l¤ôo°17Câdiœ;v¡‚­66\rD¹kñy‡Ëèøhµðå£õ"è²Ìì Ô¢!…®ÓP£5„ÄÉÒ8w{vvF`«† ÷ü¦mFÂá":êY(Zg¶Æˆzc˜_¸oB."ð•<„¤É’4w÷Ü•µjH±7p?oáp  Uzõ •f«fáªòçˆr±‚¯¤!$NÖÆ¹Óù³ºÏ»ˆ@WöÙÌÌ'Ñ‘1M©@ ÍVz!Ë‘M2ò7oCÐÅFJ^×:ktlj“m¤qRÇÂ]¿A`«‰ ÷즜‰ÃE\šhbÖƒV›Íœ´0'—;>ÛØÐ¿al؈‰s´±‰sÇ~Ü‚-6¶Ü‘;—Ññ1X1+”!Š9šê#›6]\¤äëÌÓ˜8ÙEçŽý¸3[]l¸#w/£ã¢WÂxЂ³ñNXSœ£!‚Z4¤Ð¿w4Œ"íÉæ¾‡ba:®”ðwFBH˜,! ³Ùs+}l•ro6MÛÂÌÎã5t ´iœ-®˜ôcYnŽo™Ü#°Å@J]e ¦*€‚ˆ0Ù@fs8z;±:àVð™ÇQQGKé˜hÒþ Ugcº¯*2Yp‹‹Ë»;.T„„É.Ò0O.2q à*#%×ñp[:çÅOóÓÑQK4jdÔV„XtœÔ"#…® XFH˜,# ³Ùq3[U¤Üó©™Sp¸ˆŽ‚2…ú>£T:leÑyæ/(BÈEC ¾Š†0YCf³ßrm [5¤ÜÓˆ¸|Š8\Ä¥†z6Âk†zé5V —/à@ðÙņ~ 1aŽ.6a6÷K—¶!èâcî>ž&èg…¯¢#d”BК³ŽV(“¶“\Óá)v•‰l"$L6‘†ÙÜoÙ®®6ä~Û²åt.¦£cÚ NƒVŸuÂldú¶ØH¨ã2ZhL˜l# ó$#Ó¶@¸UFîu-Ï[8\EÇB§Ó^­>k„´ê4(²g‹t1‘’WuÐèq&›HÃl»{v\D€«Š ¹?.–ïÉy^ËáŠ:ZšYX Z‡ÖÖ¤ÂNZj^KºhIÉW™®!a²–4Ì“–܉W-)¹sÚ¸p]g¼–ŽÚ‰PBêYÌVŸÆÉí ‚_¬¤ø«X “­¤a6»Ã–,àjeC~æ$’Ór¸˜Ž–*Ó Ui­’k³9“+´Dð‹–-!a²–4Ì“–Ü`‰W-)ùâšçãp—>ª9Š@+Ó^D›×7ÓaC¨ÅB ]e¡75˜4YCšf³ß3!Ø*!å^HÈÜ1^EGÂèêÂ£Š³Ð³+.Ü× gðªŽÆaGCH–£…M–dáÂ%G¹ˆØ /NGkèhŽ a< N{òma äâ!‡!a²ˆ4Ìæž»S‚­Rîùr s…g¼ˆŽ†. e@+Ò*ídYÕ¿¥‚.RòU<„„ÉÒ0›ë![=¤ÜêánùÜp¼ŠŽˆÖ ‡ºiLÙ(¼ §yy±Uà‹Œ”~!a²Œ4ÌfÏÝ#ÁV)÷BFÆÅá":.%¤A#'ä«‹üÝÜtñ’¯â!$Lö†Ùì·œ‡lõrÏ'g®U.¢ã¡ ):hMZiõ´áñ@3k€jQBW)èÑý2$Mv¦Ù\¿ŒÀV)÷¢_^¼Â=^KGE™Ž‘­G+Y†C½Ô2#°ÅEúe !A²†%HRp©YF`«†ò¹{s˜›¸Ç+¸”oNÛGÐ*ôlEm”¾ðÍîêø(ørû IŽò‘$›ûóD^³˜G Õ½Ãrƒ<\Bç9¦^DR/>þJU÷øîÎòQî5ìƒD9ÚG£lvœ~hÑR/ïÁឤ;ZDïUéÔã#…qú4õ®x<ÕËáõ!’'ö5$„D)‘> stream xÚÅMÛF†ïþ<Ú‡éô÷GnYïÆA€]0ˆoÙfÇ `i/ŒýûÛšQ—JÃVQ=~Áˆ=kôÔK>i²Y-ò¯ÉLëï¦ý¤ë¯P’ :å4e”ö1ûéó‡é÷é§Wº¾POïèÏ¿^™Ç1“qY…è¦ärÞOËîÕ/¿êé·ú?NZ¹’§ÿ=¾t7Ù’UN¾~ýiúùÕOÏÞ$E;%[+(Qz“úr§‚/Ç÷øÛûWß|oÂd´*º˜éýï“ñ^W¦äŒŠqzÿÛôËë}Ù½±ùõÛ»úû‡Ïo~}ÿ㫼ç䢢3  JPYç³ ~^üñŸ§ öÿÖ&üùá¿ëBl¨oA…ØPTré¬>|ÞÝï÷wÿ¼ÿòñËŸûu.=hg¸hT6ç›â‡ûOŸÖXï’².¿Û‘±¾‡“ßã +$ú ’Ñ$Ußði'¡69õïè7ßÛšL•¤_˜•snrª„òô¢txQ%ÜÕ‘ÍÓ÷ìñûA_÷Õaã=¾àAcDҘǙwû{A^—äåÜ»ùÍ]Ýh¯íýrøÂ?mž .WÑÑPk¥Ki¨½2Ñ7 ¿}¸¿[!èæ"GË.掋iHEžfÞ.—uD°IGÎ&ŸŽm˳¿]Vs¸¢µš1GÆÌX´ŠædærÿpYLøèåx|Œüz/aš–gaæ‡pxG`›‘gØÓùp {»²y8\FGÃä@¦¤t äàÝòp/HøÕØf ÇÞÄÀ¯MBúñ$óR‡ÅËú}-“ÜãLr¯™'Œ€ct´«¡}0 õb}¡‰§óÓø-éÁ79þ& "Ò†<ͼ_$ \R‘sŸ«xØ£I:"—Òq²NÜ‹¶ '}Q%&r²ž+JÇdºùÈÑ7™¸@â<Î\§ß‚. ɹëã²àâpU. Í.*oŽMð‚†jÓS¯š³dð°ˆHCò4ó²Óg—,äÜ“…×¢‡ËèhhrÝ—¤¡µ*GÒpcþŒA79úª!í"" ¹ÈÓT…¹3„K.r.Ÿ;?º(©8\EGE”…M˜uQÎRQž0CÈÍDN¾‰‰ˆ4d"O3?ÜK£"‚K&rîjT”fÌÃU¬M Ũ¤A&†êEJ$¢nJá( ““~ñ ÷e3‡k阽Š:ÌŒYÅdÉLy&A7+9zÜJÀL‡´äqêÑZ2Á%#9wuÞ(]à/£#c0JP+:ÔíclkEÁCµyÈ©WM¥ xtD¤! yšª¡p…Â% 9wu±[²p¸ŠŽ…î°>Ô‰Þ¨ÈByú‚!79ùªm"" ™ÈÓÌ;ñà’‰œ{á-è8\JGGû´‹0:Ú¬´õ¤ãçŽ|s’ãoâ$" 9ÉÓÌËNšÊ ¸ä$ç®ç2Ò•Æñ::BÖ’<¨ŒW>µVt4D@›…z•…Fƒ5¤! yšyY„¦ Krlg-„$áhk}‰*G”„º~϶¦t”Ñr3‘“_`"`ÚÉC.ò<ó^º¸á’Œœ»7{ÒãÅt”ÌN9êIûœ”£‹ñŠã4ôò Õ,=BBâ4-ÏâÌûUŒvSóŒ}áRšÑŒÓQ3ÖíA-jŸœÊ¶©™#!Ôf$§^7R°‘ˆ8d$Ó.; ³kœ”äpRrÙnÉŒWÑq1De ¨Oí£V6µ>uÚèScÐMH޾ˆ8$$3/Ò•—\äÜ•‹ÒYäx½U1¢dôQ%[HFù4Bn.ròm\DÄ!yœy'-àpÉEÎíÌ«‡Ëè¸h‹2Ô«öÎ)så^5†Ü\däÛ¨ˆHC*²4óNjÃ@°d"î»0‚‡ÃEt<4¡nGP¯Ú›'Åè½=à›ŒÿókDґ癤+Ž.ùȹë¥Ò)ãp#µUÚ€zÔ^G¥³%#å5ÝläèëfÕ豇däqæeë³6 ÉÙfÕÒ¹ãp-k+]ÎÊGP³Ú«‚kVæËBb¨G!Ï¨× +$$Nò,μ—>–á6ϸϻÕûËŽѱ0U Ê”UÉ­Yå †ÜLääÛ˜ˆˆC&ò8ón/ôd \2‘sÉÄýæç`Æ‹è˜XkpÔ§v1(ï<™¸}ÞˆÁ79þ6:"âŽ<μ—>. á’Žœ»ÒQ‡«èøè“Ê vŒ 5Pnmêò­µá’œ»n JçŽÃet\4Iù jWk_Ø\”/=bÐMFŽ~Œˆy5"ÙÈóÌ‹´TÂ%9wݔ·ËèØ¨ër NµÑ§Qqû’#ÝlÔ#ñ€‹ˆ($¢¦Õ|«5¤¥#˜Gõ8ó:÷ÐÏ\„iîñ0owÒM¡Ô&§Þ½}fŸðxÕÑzÏϪ» ¡žl©\h-è­ÇþBÀôlËø&"œoy óvÙIPO¸> stream xÚÅMoG†ïþs´êôw÷ø&i×ì"A|Ëæ@RŽÀô"^8ùûÛ¤ØÅ±U3M½aIJjžz‡«ÙÓóñç`†Oå¿÷×A—_aL*è”Ó}PÚÇ쇯‡ß†Ÿ^éòB=¼§¯¾2‡1ƒ)/ >Éå¼¶»W¿üª‡‡ò?´rcþ>¼t7ØìÕ¨}ùóçáçW?=ÙHòiH¶T0Fi#åå®Çã6î>¼úî ƒÑeÓ£>ü6˜`ÔhýœQ1†_^ÿûÛîͯ7onÊ￾ùõïþùWP²û1`*°Ú©˜ì¤‚Ÿ·û~ÿïc_þ£MøããÿÎ ±Ñ(¿¯RHL*j3)äû_wë/_nþµþöéÛ_Î+p±lUƒv…‹£Šyº+¾_þ|ŽõN+Ü؆ŒeNÞÆ $–ad4I• >î€èÞÞl7kÁBš,äèì¡ß½³åÛjLúð¬œsƒSc_dÒþUq“”Íæñ›öø“ý¤WÖíwáá¿ 2CòT™yžÛÝz'(Œà’œ{sûæ¦ìµ²WÊÿÚ®¡»‹h¸¨µÒãrQ{e¢'»âVò'9^ö1·|è‰Suäqî6;IG—täÜ›»©ŽAÇî"ÎuŒ9ª06ÆQ«hN6®Kk|ÞD¹Š8!_Ð_."$ÍÑÃIš»Ýñóγ."ÐUÅ šTÜ]|^Åî&&Ò0%¥c8jè_J$ý8q™~¬ß‹£T÷x”û]k(!ï^Ê$é8óæþ$Ý~,›W¯«Œ†waT>{û}cbuïí¦ô@A@š$äèëH‰SEäqî·³MÁ&!9û!÷K¯·‚—Ý5Ü,_GmAnúQ1‘›Ûµ4:#Ȥ&'_ &`Þ‚ÉSÝäyn7;©I"¸ä%çÒ¼e]•\K6v×ѰÑYåj”vQy“ÉFy A“޽lÚ‚î”8ÕFçv+Í¢!\²‘sÏfÑ’‹ÝU4\4YeíA.Z«r<¹8?†àÉGŽ¿ÎÈ ‰S}äqîŽûR’')9ü|.=7fw—Ò0S‡²-Ô”ZÊ™‘Ìœ™R#Ðd%G_ÇJHœj%s·[KŸ%\’sùŒzÙ䦻”s!ÃhTÒ !ÃX6Z?C†çU„@«ŠºÌÄk"&ÍÑDžæ~'e„`«ˆKsšYûKh˜²2´²UÖšj <‹ÉBN¾Ž†8UCçVöÁ%9÷éÇFAÄî"F_¢'ˆ1´¨"Îh„àÉFŽ¿ÀFÀœ“§êÈóÜÉ:"¸¤#ç>ýÀ(èØ]CCÇb’ eé‚2¶.KGÁB•,äÔESi«Á=§JÈãÜo¥Y „KrîÓÁY˜¯ôѰÐíÏ-HoTHdáÌèŒ “‰œ¼¨ÂM„Ä©&ò8·»µpˆÂ%9÷tˆq¾vÑ0Ñ>¾;mVÚz2qÁðŒÀ“Ž!qªŽ<ÎÝfn5Â&%9ûlMZ8?¢¿Š†“¥ Z Æ+ŸêÂtL@ID]&¢‹ˆHS=äiÊäYj‹,)ȱ|Ap®+öÖp. £Êe .ß³uy:Í,OCÐä!G_à!`¾‚ÉSMäyîgOÒ°IGÎ>ÓQèˆýU4„ÌN9Z“ö9)GÇ“üyB®>NÈËf.ྈ‰sÔqçV;B²±»Š†>© Z qåkÎáÔ!åÃâ4ÉÈÑ×™à@âTyœÛíL‡€ÉÅ ø‚Ù[KÃHWöx-b;·ãã©?Î(‰`““œ}•é &Nu’Ç98)5H™¤ääóKY%»ËhøhµJÕ"­W)G6Ýž]®ðÉIοΠ ‰Säqêåƒâ¼‚'1'ø çÝý5ÕIÔ=Qœ1å½LlÞ=ï(‚OŽrþu…Ä©Žò8'G¥æ‰À“£ÿÌ5…ÂY@ýµœÛiÇòÆZ¶(3[Ö‘W!ìjæ„}31qŽfNâÜmÖbã„«”Sò…³¿¢†šY+@kßû›K7ž猚6©ÉÙ×Q§ªÉãÔú%„Ljrrã ò™žþZRƨ‚­‚Û¤U}Ëã(؈€’ ºLFžcâTYœwâå†,©È°7ï–^mØ_BÃÀ`Ë-zÛ”öÇ÷4iéD —$äÜeóon‰8UBçÝÃÃ8Z#Èäá„Ü­!»ki鯲GAkÞÖ»bÛIHá, —„äÜem-$$N’Ç9)Ñ2 ÉÉÔ¿ýutò¯¿»ëhÈhƒÊ %£Õè ¤Iê*©È©ËT `!qªŠ<ÎJ¡\‘soV‹‡è­m[ËO×E“ÔT’S—IÁBâT yœÕF:aÂ% 9÷©„ÒT¥»ˆs ͘UJ Ål«­ÊÞW å ¼ d2‘“/00aÁä©*ò<«ÝV¸ØÂ%9—Tœ¿#@ sP¨ƒŒ&ÊŽLœ?Ž W'ôep_„¤9º8I³ÚJ—a#°UÅ –T\pÝkw “)5€–°MÚo´ºèTrS—uDðS0qª„<ÎêùÎd"N*rø™ŠÂÝ_EÃÅ•q åk­2c¬.ÎÜ‚&!9ú:BBâT!yœÕVºÅ(„K.rîÙ-µÅî*.z¯êl3㳊þ¸°™„Gw@¨¤!§.Ó|§[Lœª!³ï‘á’†œ{Ö »‹hXèŒÒõIÑ¥Ç\-œëˆ4©ÈÑ×Q§ªÈã¬fo’a“Žœ}Ö…§¼õWÑðÑ92h ÚXsxaõQžC#Ȥ#'_ #b ÉS}äyVâ]R \r‘sÉÅ';öWÑp±¼™£-=}ê‹òy·,‰¨{×ï‰(ÕÁe%ÞÂ$ÿtnJ”>vp®ÞX^ŸAKΣW4c^òˆ»êÇØW”!YŽþ±,+ñf(hAŸ*(ŒÄÝ4·Uv óþ[†”ÏC€«~|ÿ aŽþñ0+ù™¿jSÏ`᫽%´žšUÞ‚„z´¥r¡®+éqY/gžnybÞ7äK*§<¹Ï|u¯ì»z»—ž…¨•ž^yªõG/=ëåÌÓÓ+óQ,/=ûª“ܺ#¨Ju×x§²®kÄQºèË™t'PÆ\$”í Rk½Ë'«õG/Ýû¥Û{rèѨ¿¥›zv¢§JŸ÷›N\ªÛŸB;êýXñ¸ =|*~ßÜwÙ–þ‘ÅpôÍ㮫?Urü½Kg endstream endobj 121 0 obj << /Length 3015 /Filter /FlateDecode >> stream xÚÅKoGF÷þ½´,×û‘å<âa€0°w™,ôpœñÀ“¿?E©ëêUºì²>  J“ç»ÍƒbuÝ~ü¾˜åSý÷Ýr\tý'”¤‚N9-Ù¥}Ì~ùòqùeùñ•®êåýüý•¹‰YŒ÷J›¼$o”ó~¹¹{õÓÏz¹­ÿó‡E+WòòÇý¦w‹ÍI•ê÷¯~<{kÒ’lMP¢ô&us§‚/ë{üåë·ß›°­Š.fùðËbÂé~IΨ—·ËO¯ÿõõîͯ¯ßìê?~yóó‡^ýýOPjÅ9bXm”¶Kðþæà×ÿ<$8þ[›ðÛÇÿ> bC©û3€‚Ä Léƒüãã—»«ãq÷Ï«¯Ÿ¾þv|šÀE£tí “²Éõ ®>~Šõu‹”Ý7`2Ö÷pò{l±B¢Ï MRõ v@J‚€* È©=Aß~oëŸUIú~är*‹S%”‡Üi£JØE•³}ø›,…¤m–ò´o5XR³Ã¾Ù9ç^ûAÐiøÀ-­k!ä–öÊD¿º•·Tr‹Se·2ó¨¹e.»IÛÜâiÞ n!°äV‡mný!È5M*WÌQ…€q+­¢in•çÝB@›ZtÓ°æ†-HØÕ¬.ìÞ?/ڼꡫWÏ[5HU©£RRº~ñÞGÏZ0ê¥DÒ‰7é'uzqÒæOº÷Fé¥H2©C®&]¿±éµ0JÍÑ2Õçƒ ë†f[f#… ’Tœú~ U¬»Õp©Ì¤T´M,žö°“F)–äê°rí¤qj>p«»mAnùRÒê–ÜBPÉ-NÝä–t ’¶¹ÅÓîE·Xr«Ãnpk>pËYåê‹ÐEåÍ:7ÎNp A%·8uÓ´Æ­ºßùL¾¾.°×Õ=ä|Ýì~ƒ_÷ Õ4÷x5ÿöNÁ%ù8ww¸<›†ä3YeíAòY«rlòyA>•äãÔM31 –RM“WsðV´&û8x·aÉbž>ÐOea‡•º(gÖÏ8‡ï¤Y‚KrîÜ‚H@H5M@^MýŽßIG 2Ø‘W¯®O¿ø×;S{ÞÅéO] ¥¾—¹ªh)‘ŠÂ$‚m*rìŸa"¦˜ÕD^̽ˆÂâ-ÜDä` ¯ž·o>°/ee¨K²UÖ®«¡9J#!„Kúqî&ÿ<Ø?H5Í?^Íé«X !h2°C¯ÛHxTœN1P1zu©³ŠÉ’ŠÒHˆà’Šœ;¯¢¸)§¹ÈËypQ hr‘£i8|èz ÓÃù C­'€º¥!Ô]i×–\º¥*yÈ©›xH„TÓ4äÕìÅCc—äÜÝåÞÄ<| Ÿ;¹j§oTHM¾,~##¸¤çε)@úAªiúñjöÞ¼½¿‘h2°C÷-‡eBs}:GhpÌçHi>*Œ”6+m=I)}7#¸$%çþ)RBªiRòj¤”¾šh’’£iX¼ºœÆ¬I<¨ÏŒW>µÆ­p*JþqèßþeU'Ú/h³AÂ6½xØ:ó“Ü`I­Û¾pï@¬ ×l‚§vùR÷qDé¥ëßìÚ+,Ây*ùÅ©›üšlµaÒ6ÁxÚ*˜ ƒ€I±|¶Þg¥å¾ùϲS΀Zº>'åÚ’Q&wjó¬£ÊžåÁ™˜—ϖä]=ëÒ¼‘F2¸yÖƒWÏþX5Ž`çC ,‹E¥jîúäT¶Í2a¶¡’eœºi4›<'“¶YÆÓž,‡3™4ëÈÃÙýAÁƒlÇ GóyÆ…X‚:º>êZÛ:xát•ŒãÔMÆMžª‰IÛŒãiO4I8˜„ëÀÔ°½4G›Ï0Ì[#J2U²ë'Y„Ó T’ŒS7I6y'&m“Œ§=I&k2YÖ‘ûV„:ó!šÙ¢Œµd½sª]S‚`J–1è&ÉÒ¤d°M2öà8!¸¤ç>^Ïpy‚6b ˜ *DPßÕ›¢¢[g<% Ž!¨ä§n’,OJIÛ$ãiO–‰#‚LšudÉØüìêÒî|žqÚÖ½ j¯z«PëGX„¦„JÆqê¦Ï2yHIÛŒãi÷â „K¾uÜ­Khóž*ærV>‚ú¦®X\SL¸BmŠuÔmk´zÎ1LÜÕ±.î^^Ü€€›d=xЗ²—Æ´ù8á’WÅ „KY•¼¶ÚŠÐ€PI8NÝÔ”z¶) u¥þ' )§ ÉË9ø;¡Sá’·ôv¨7Ÿa a­ÇEPoÔÕýèoC‹Ð:€`ÉBŽ;™e!¤œf!/çà¯% \²°ãžY(uæS <ôõC5\0õc MC¡³€ ’…œú²[<|«…ˆjš„¼šƒ·7’….IØqûõ¹t\;bà «?¨‹êÜi²›„Bã‚% 9öe7ƒøV !å4 y9Uã¤!Lv೓‰¥%¼ù­VÉ¢FCëk0QèG@°$"ÇÎß:!"¤œ&"/çàon\ò°ãž})KÃátˆ†:)ƒºÛ„3Õ —š†BÇ‚% 9öe·œøV !å4 y9”4DpIÃŽ{¦¡4N‡xª¡-NE ÒЖ¤bnTk¡¥Á6 ;ì& XCL9«†]9õkùNðnöàóéáó·x˜µÒ Ô¿µÙ+ãhNh{@°ä!Çnò0£=„”Ó<äåTŸ½À†dDÐIÆŽ~.£tÄ<c cŒ*XPŸ×&­ׄ…–„J62ê& ZFH5MFVÍ^\<„`ÉBŽÝ¼v8a``°uƒÚÀ6$¥½i -–äØmwaÑàãL=MB^ÏÞKË6.YØq·§Ì‡xèŠòÔ¶Þ)_ÈC¡“Á’‡»­“bÐBêiòzöÞÜÝ ""À$b]s&ŠÓI6ÚP?*”¶¨âmûÄ…Ž K6rì6Ñ-L=ÍF^OµñF²&;ðÐFipœŽ2ÐÑXå,¨ËlM¬?]ÓQè¬@°¤#ÇÎ]{öxí£½$ã­ #¤š&#¯æ°«GÏ‚Œ0ÉØéF}—N®™ÏðÔBS²J Ôf¶Úªì[›Ù­–,䨹+ÔØÝ1^¢!¦œ¦!/礡pØ “†øLCa4œ1ð0…ZJ4¹([Z›ÙµYØQç®_ÃŒ…bV»bNa,D€›ƒ=øÌAiåf:ÄÀÁdTÌ 6³IA%O m–,䨹ëÛ@Bªiòjî5”ÆB™<ìÈg }•ùCVƺÌ&Úº+[—Ù}–<䨹«Þ@Bªiòjª‡w ±0iØ{ ¥ãåù ëÏ€:õËø¬¢o]f#´U XÒc箋i©¦iÈ«©ÞH"À¤a>×PšN§xXßK;ÔÜÐUËJ[16BC‚%9vîÒ9‡jš‡¼šêáµä!LvàsÅéátŒˆ&)ŸA}fcÍý†«ˆB[‚%9vîò:Ô±2¤œf"/§šx”LD€ÉÄ|n¢4AœN1Q×ÏÇ:ÌFÓh(ôT H’Pço¹Ú4B*iþµJö&…(¹GЉ át€§Ú•º}u•‹Wtpl…î ‚Ù´cÌÉkð0æAjYÅcµìå‰ ‚ÚÌãÔ‰Yàt„Áã £Êä^>ý©5’­Ð+A@›|ºÍ>p«RÌj/f/7Jئ_‡ÝÜ&™N0zªQýêé~Ê…Ö8¶Ò³ÐÇü=B·Ùg±öAŠ¡g>s²ïVz¤Ñ˱ÏdØ3û.]–Õßß ÷b¶v?*ÄøˆC¯ªuüÍ—O endstream endobj 125 0 obj << /Length 3144 /Filter /FlateDecode >> stream xÚÅMoG†ïús´`»¿?rÌîÆv€](ŽoI2í8L.â…×{Èîf Ù*NKo ei8OÕðqu÷ÔhæÏIMóŸ—Ó~’ù?—‚p2Ä0Eë„´>Úéˇé÷é§™7”ÓËöúç:¼EMÊ8a¤›‚UÂX;mw7¿ü&§÷ù‡?NR˜§o‡MwSÞL˜˜òן§Ÿo~:Û‰›w¢sÉs;É›ál*ûøþíÍ‹”›”I&5½ý}R9ÕL~õÓÛ÷Ó/Ïþýu÷\Çgïžoòÿ?|yþÛÛoþù–F½0Á‚"HZ8·àçíÌÿã?Çö¿Jå>}øïeÚe˜4˜8´óÂÆE¯>|ÙÝí÷›Ý}ýøõÓþ2ãtþ@¸(œ_~¯î>¾ÄZ+…M1 £bÞ‡á÷±BÅ ñùàaTTAä€Ò–ñ‚-þQê?fæ‹´ž‚HA¶‹Â;‘\:n¤ç2`„Îa¾gËy£:¿Q7øƒ±‘Mµ˜fsk_ì¶[Æ^¸ÙKÉ›ÛçcL>,ùÅ>Ó[Æåá :J)dJ ¥ÊÛª¡ûN1"BÀEDÊåEŒÇ à!"™ê!M&{¸? ,»Þ±l6"ðÍÆ)ãñou÷ޱr8˜K+}–$®)}’Â+"¥¾_J÷è仪8‚DäR”\äB”Ô÷+‰ W#øVŒŠÃAtL ¤aBzW5ô\m|<´8H™«´`›H&2 ¸ßrõðÑØfÞ‚Û¯…{Æ¿¡8:ò¹$¬S }ÞPù“€\„€‹„”û$"’©"ÒdŠˆ\D ›Œ”Ý)ƒž1³ÅñX:Bæu{’$¤M"ùP… ŒŽlÑ‘RWéèÀ‹H6ÕGšÍ¼h9ŽÌŒ‘x3’ÒÏ.Üq<ŠŽ‹&gäP£³É‡SÅêbd\„`‹‹”ºjÝâÁ¥‘LU‘&3«¸gÖÏpÓ’Ï5ä†çá :ª(¢´ µÑ7 ;G„€‹‡”»ª&°‡ˆdª‡4™yˆÞ±kgº™¸`×úÝ©"®X?Ô±R:¡a h™„Qéd%7q„€‹•”û$V"’©VÒdŠ•ÜÄnVRöÅÄñŽQq8ŠK]R"HŠ.9êŒÑH®>b¸G)v•ˆ+"$—""ÍeöpË®¤!äêá}^÷kjãx8!CÊz€.j¡µ:ÉÔF ¸I¹O¢$"™ª$M¦8ÉÔFº9IÙ—µ‘YO‡ÑqÑ[áe¹è£ðAW¹ÚÁ)u•‰ ¼ž†dSU¤ÙÜZýb·cV1r3‘¢›‰Ûz¶ñ~‡ƒèxè”ÔŒvÎ ¥k3Úp‚-Rꪵ´’à’ˆÈ¦zH³9x¸eNê@ÈÍCоð+ˆÃQtD4ó%B v´Ë¯.4 ;]„€‹Š”»ª$*V‘MU‘f3«¸?]éÄÏA4+Q)÷MÊ뽘ñh:vêãg†±SG!µ=ÙÉJ¸ØI¹Oc'"›j'ÍæÂNn‰¢ÙI£8Í"·×[Ôãat´ÌYP—Ð)+l¨mjcÙš‰à))v”,% ™ê$Mæàäž=‰@7ì³:¹¦LŽÆr©£M^DòQæïiò‘©’p’r $`]I§*IÓ©J2ÕÂnNRx¯:^é\Ó‘2a¨smcȵóŽQ‚=*¹ ®[á€/)ƒdSŒ\dsXá›BsÃÅR‡;9FGIŸDð ¶ FDÝ”ôŒ’lQ’R×UIðÅ=lª’4›ƒ’{fÑ !7)zs>n3ãõxsúZzØÖK¡C+@›@bÀEEÊ]§¢«ˆÈ¦ªH³9Œ×;v­ a7ð ¯O"Ç£éHiµð%¥õ"èt’’›EBÀEJÊ})ÙT)i6UJn‰`7))ürÉt±ÇÃèØ¨“P ÔŶƈv­™‰l…„p‹Œ»ÎEðÕfdª‹$™ƒŠ[v‰ A7)û¬<ž®ñáêãp4#U~õ 6¶UIx£NJrõ.JRîœD¬²éT)i:ÕJ®@"ØÍJ ïHn=GÇG©…T V¶•^ÈØZÙ‰±‚-6Rêº6øŠ3H6UFšÍkûb·ã3p3‘’7¯Ï~mæ~ ‡c¸´ÐÄ(¬5²Í¬…©Zy¿…ìÑÂu]M_ÛɦX¸Èf¶ëcCÀÕÂùÜB¦ŽÑÑ0X‘JÃEеm7_Ä€‹ˆ”»NÄ‘M‘fóÚªw»÷ÜŒÂn..àEÅwÏuxöíøýn>ûù­ÎËîwt8¸Ž£^ ãAÍlã°Æže&pq”rŸÆQD6ÕQšMu”™?BØÍQ ßœ$OÈ¿/–2F‡Ò1ÒA-㔈±ö±­f‹&‚[|¤Øu·D‘à "›ê#Íæàã–¯™tÓqÁî•Ì»±’9[ÇO“?ƒjl3«àO‚r.†RîªEŽ_' ɦJ³©†rÁnŠRø=“›hÇÒQRK4ªfj+BlJFH¶I©ï™ÿ݆´«>WEnžroˆ`«o4Ø[Ȇ€6ÑÔ£Y†k˜ÝK¡P÷>1JåÚP›Ó–¹=[Ä¢ÔUbi*–¾."Ø* öÖpƒ,‚ÚÌZ`‹YŠQk~©–NFx RK§_ëé8Ë\ŠƒÁÕZPW©eÆÔ‚[ÔZ{k˜ÑB­j-±E-f1逸Ô4ÖÑ eÚu+þ»WŒ\p‘‹rWÉeåB[å¢Á¾1½cÔìB`›] îÕ!qœÝ‘Ë{á4¨¬ƒޏõ†q Â-nì_¢"Öª‰5›õ†1 Amfl-[cÌfwÌÊy¤êåj„´µ—k™Û*a°E,JåÍŠg³øüÆzs?smYù‰Q‘MUfs»aæùjSb7×'úãðŽ{& «A}[mM¬¹Ù!.öQîØTe"›jÍæÍ†TÜæoVŒªÃðŽÚåÏåŸN"Y}òV!àâå>ˆlª4›Ù?nèEp›¼Y3øÓ;ªœ‰õjµÊr¥Ö«e.\Á`‹~”º® 68­C[í¢ÁÞÅ­GØ&ׂ[kÛµ‹RÆC¸4L¥(BuZµÔ"ÚÚiuÌE)l1ŒRÇnõ¿Î0H°Õ0ì­ÑÌÉ4¶¶à^–Y$‡,×./==fRÞ/âx¤£¨o*&¡Sm°:¦½ ¡5\@Çnô¿®W€ˆµX¸ˆ5×9®Ð!°ÕÂ%·Ò]Ü)áWé²k‡/åñ'*‹9ï;`G¾pc_p"ØfÓ;Å`‹~”:v+ë•ú!‚­þÑ`çq–+ƒnp>°SrnE¬¬ƒÃ¡vTÌ‘*êš*¯…Jµk꘮)[T¤Ô±ÛX¯ÁVi°ó€Ì•B·©¸·Ä•Z¸¹V ‡Cì(h­p¨‹òJWx[û«Žé¯b°EAJ]¥ TlU›d«!‚Û\€Ï||5µ£âŒ4¨iaÞ©Lõ¯sÜ@ ¸ÈH¹c7 ^)#"Ø*# öÑÜ >·É¸__¡Ì¿Æ«W»8iÇEò5pó”ç°as‘9ˆ)÷/qlu‘;»Èœìƒp›‹|:×wí„Ìx Ëd>öÔÉU²U;æ®dñKƇôÙΗ Ü™æÿ1ò!2©òÉvYÊŽÈæŒ½34›nÌKi«éÑd àp˜—j¦¼}u‚“§%2Ó†0jäøw9©7I*yõÌüÖ‚Yå¤ÐŽž}ï†è<4Ò.Îߪ=`ǽ§B ê‘"é*râž €ÖG6ž˜»@ë"#riOm<å’K(û8¨ÇCOÏl$Ô3‘¹Çã†Ð»ñ¥uu#¢¬}d/¹e4[îzI¨«ìs`û¹Ô[^’\Þ˜·ÆFPÛÍ.)vUóåÿë–ØÃ^>¼>ï™4òìz9}Ì_¿ì꘵±‡<Þ9zÓÉö®œÇÿHø+á endstream endobj 131 0 obj << /Length 3121 /Filter /FlateDecode >> stream xÚÅIoGFïú}”èT³È 0ƒ¶Ì›íƒLÉ `r`dÿýÉ^"ÅN+»?Ã0dRt±ßÅç¬ÊŒdõ¯·ù±ÿùls¿±ýŸÔŠI¶Ô²©1s›ß>n~Ø|õÂöíæ3þøë wø·q!™¦DgBŒ›Û»ß|g7úürcMhuóÇáлM°Ñ´úç¿l¾~ñÕ£)ÁoŠï ZÖ^¤LŠíô¿yñú­KgM³Ímn~ظž¤¾)Á™œ776ß¼üϧ»W¾¾üþÕ¶ÿûão¯¾»ùòÅ¿nd‚šM¶” ySJ]$øúvà§ÿÜk]úùãÿ΃ødûùÄäð)›bË"Çç»{¿ý÷ûO?~úùþ<@HÞd:!USêòL|þþ—_α1Zãs½;p±¿FÐ_c…‹’c¹èŠé/x<.Û7ï!`RP‚ÿ±‡¾~ë{q¦{8°˜Ú ¦¥v<(íê„m6µúã×Â铸Æhüáüøýi‘հȲšwántÙ_˜ý•àÝ«máeøÛþc|¹õŠÍÓ!"Zklk »÷.Gѽù\&%X±ÊRDw½ˆˆjXDYÍ»p;:,"Ì".À'¥‡ýäTqr|3µ¿®8­Ö[¾~¿Þ7¿ÙŠãn«§+:·:wÉRÂH›ígZH­Œ®îÉéwÕàš±ƒ+¢RzQÌ^ielEpÉè÷lh½ÚÂé KXб9‘^ñïj$É'‘ÿÈWM?•R>Gòã«î^$÷><íÞµ…°x²Ý6¸;E¼k¡l„nw‹T¹žÏñÂ¥fbr ér?Ðe’.(ÒA°$žÄ®ÏcÅCÃòÉböòÝ*ò!À, ?P¹ö·Xا÷Íz…±™– Y !X²PbWY¤…îz Õ°†²š®áS4D€YC ƒç÷“>.Nëñ~ò Y§£d Þ„„ºN‡l¢«$kRd…`IV‰Õe=±C&¢vUÓ]½Õ\E€ÙU žs7÷™¯h ´«¦ÚRÚ{S3+µ=LRKðª8a¥FÃRËbÞõX›ÑCÈlµ$oß­±šfôkFàé¨]m26W·Í×tÕæê0é*Á…®ˆbXWYÌAWm¶Ž ³®’¼}4_×fNÓ!ÎELÍõêA"¦Ö_”o[‹6lb¸'%w•†ª!¤ÒPÖÒ-T—A!`²P‚¯3•;öìÀ|A£K5.ž©zã½{PZZ1`RZ‚ÿ §ŰӲ˜ƒÔÊÐ !³Ô’|6´*+¡ó)&æØÅ( s5¹x2±*B°ä¡Ä®Zwƒõøü´gˆ°ì™ »ËŠc*;¶ ËŠYÓìYÉ›@ô”’qžéM1 ‚%³$vU÷Òº—ŠYˆ°l– »ËÊô‚eµØ“ZNqk>p+ì·,zã©L…Ü*Vq ‚%·$vÕ¨æF-DXvK†ÝÐØ-–ÝZ`On%Å­iøÀ-<å·|5ÖS‹º8Å-–Ü’ØUnÅ9·aÙ-v7j¢²[,»µÀžÜRf²óð[=Gµ“‹&ê=¥÷ ¡’Y’zñÆ2Å,@VKfÝZT,€Ê^-¨'¯¢âÕ,û\«Øú¹Í(¯lÿš§örQÚË,‰%±oªyZ,HX6K†ÝZðdËj-°'µ”¥ŠyøÀ­Lp ¦q¬Å^}+JÓƒ=¹µÀ®ºŸØ3Ãûµ~zÚ=D1äÞ¢˜ÝV™AB°äÞ{to«L!çá÷r3%ƒzÀ±S=»§ô€1XrObç'ÜËW¸‡(†Ý“ÅìòkeË„ËòIîöùõ‹yø@¾^³w nmÌ=X¡Á¥dE>–䓨Uòy¬|ˆbX>YL¿èªö!ÀlŸo×\w§éýb¯$£ô‹ýz_JQôƒ`I?‰Û«ºîž–õ’aû4T™‡B¸lׂKCÛs}ÕùÅ|3Îúª1Ã;¬Š²ô¡’a‚:·'u`ˆ¬,˜ÈºËN ÁeÁ$—×gO‚þú­í3‹ã§ö´ßõ¯)‹¸óú¹dR5A£k&j‚¥A€Á’;·u€ˆ°,  »ËI5f`^ÆÕ|ÎÀ逭7ÖšŸÑfcé'êªÒFÀ`É@‰ÛcºªE Ëʰûk¬f Ì.À¼ØKÛî/Tp:Ṃ¡V3¨Kº)°‚J·ƒ=)¸ÀÎm±[¥ $,)¸»ËQS&—`^~FÁç.Äó–hšC9Xªi•º©UiK`°ä ÄÎíEZu!†„eeØ>“UD€ÙÁ˜'²ÏþöÑ|ˆeÙ™A}Õ“‰úªUiR`°d™Ä^·Óè²ßü…TÃÊjvùNYOpÙÂw1ãÕª0Ÿa aì?!P3#$צԀ­J3B%%unI¤  6P³Ë·Êoa"°,àûH@mœÍ00ôÓ\@­ÚöW5jÕV¥¥Á’‚»ªžºß»PAD5ì ¬¦_Œoµaf àåÅX§C 4ôÖ}챆Jsƒ% %v~“@CD5¬¡¬¦kx§…0k¸?ÖP §S <´Å8ÔÓ8‚sýGÞªt90XòPbÿ´'r<ÝdƒÃÊbvÛ|§MM`ÖpæýÏõAæ3œKè[0Ùƒ$ô­˜\©R•F{’pýÓžÎñ´„bHÂE1]Â[EB˜$\‚IÂÛg-œ1°°Zc ¨áëk4.ÐpS•vKJìüÓ9®·Q [(‹ézåÆf àåP¨Ý·X˜³IÔö¥ÿTH¦tD0T’PPW9/yBŒ"!¢–P³wP¹+„pÙAÉ}4ªw…ó)öŠZu†}*ÆFê 7¥)‚Á’…»ª/7±ïo…ˆbØBYÌ~ߟ¶V!³‡’¼]½=f>ÃÀÂÐLô î°ÁÄÆ*m –,”ØKo ¯±Q [(‹Ù[¨­BÈl¡$?¶P §C 4ôÉÔ‚ÒÐ7Ó"uˆ›Ò7Á`IC‰½ô¾ð ۆ²˜Ã>TmÉ‚f%zû¸§x8bà¡ó&xP—ػܿ“ºÄMé`°ä¡ÄÎß^ï!¢öPsðP[3„ ÙC‰ÞN4’çSœ‹èZQ@do½©‘ÉMi¡`°$¢ÄÞ¬n$¥‚c©d°W~³ ‚e¡Ø£O~±A0<-Õ|’T5Ô «ÍøFá¦ôC Ô“R êÍêgUŒ•ä"£¹ÞªF¨$Ô’:+ÔlOÅ™\A}^Wú‹FJil`°d”ÄÞ¬~BÅØ(D0VJûBU e§ØY§¦“ ¤êA\um]ö¦N$•Ò¨À`I*‰½YݵK…ÆRÉ`;ï4«\¶jÁ=Yõžî¥Þÿ¼YÓifÅhjc”‹ÕäH}ئ40X2KboV?šbl"›%ƒ}¡›…à²Y îɬï—;Ž5¯¦³ ¼ ÎØ€º¯ û5ÒÍ‹Uú ,y%±ëïÕÍSȧgˆä,žL¾»Ûjâ!¸,žän§oç§£ ¼sÅÄ j¦:ïž¼so”LæIðÍ꽞cóܳê!¢³z2úî~Þ(Ï£ƒY¾yìÞ±Ÿå”gkÎGHhÃáÍ1Úú  Ò>À@I@[gç“{ˆÔì¥>x§ìPÙ;ûxÀ{O×Úýû–—§[:mä›Îs.]ëÇWPë´ECÓoç Ì“r‚¹~Êy™tˆØäœˆýV½Ð" ¤œ€ng×8¦s Þ¡2›@ªÕý—¹´K,{²Mb×OF/Ó ‘›t“¹ß~Я®.·àª×ÖÊûHν;P?áõ&~¦Ÿªõ´wñC`ùü°¶zˆÜïÛ÷û ž×ÞèzîÃ[÷=py´ûôûɾßÿxvÄ›3zÐbÿ€z¤u0ÕÒN{JOYÐõK$N(Áù‰‹"øêAå. êvvÅw:Èù;š÷—H¡Í¼¡¹ÝüØ?ÿlx*«ï°´ÿÿ 'j&½£ïêuü63³g endstream endobj 135 0 obj << /Length 1966 /Filter /FlateDecode >> stream xÚµÜËrGཟb–x1Mß/Y¦*S•ÄT¼#,Œd.UX)H^?=žéã3¨uÔ-Š 3žÿ·ôÑsé–¿ jø¿vƒÌ¿\ ÂÉíÒúh‡¯÷Ãûáõ…ÌÊá|ür¡¿D ÊD¡d‚UÂX;l.Þ¼•Ã6ÿã«A “âðýqÓ‡A§$B4ùñçᯋ×?ìÄL;ѹAòÔNòæF8›–}üz{ñüJ¹AI‘dRÃíûAY+l®ŒÞ·Ûáͳ?¾=\êøìÝå˜ÿ¼ÿzùööÕÅo·¸ALB…ÀÔ 9aœY5øk3øøÏÜ`÷·TîÓý¿ûE´3ùùôéb+ó> ½Œ9ÄÛÈ„Q‘w8?Z:B Klˆco§ÐçW:?Ç"ù¸a1¤ÁˆäÒ¼‘_6rh#9Œ!;Ró ´Ý-î~3ýï¹ Á•#¸âìñær4Æ<Ów›éÍÞÍŸ1ãî:R ™“@i…ÊßÚ"ÐYb‹@K ŒóFá°Àã9ª@\ýšÆÇ‘ øpîx½à{·ØÛ§×]fŸž^8Ç#Ï')¼yá°<–ÔÞ*õÏ ¼˜Ë9<ô©Ã®8ŠV«b7Öèì8b‹ªuìŒÈ.¦Ž’ê.R §„ô®pЧ³#‹%ÙdI–Împ««II熣UèÂh×쨫FQþÖ­SL|ÞPù)Xb &ۄɘ8š(Ü슙8rÁÔ*·whênRa•¯w“ÔL¬lɇ…•’+–ØÂ Ç6±²+ŽfÀ 7»²ŠtÅ ®VÁ‹«m3¬î*XF?¾8<°ŒVÅK°Xb ,KÃZ6r,Žf 7»¦Ç+Ž\pµÊí¯º›TX©(¢´L¬´Ñ+M°b‰-¬plÓxå VÍ€n–OÐIWÁàj¼¸ºÛlÛï:ôשà’Nh¶k?™„Qå¤XKlÁ…c›pG3À…›Ý9r®Uð‚k¾!¾-÷·–{ °îJûÀ\R"H&`.¿âN¶ìa_<©‹/œÚÄ+æÅR¬ðÂÅ®i],¹E×*·ŠksÔV¡Š­…rL3H.j¡µ*¸ˆ›ö<±Žmºi¯ŽÝ2Ýü8ª?\ýf´æðÇ þVÁ3¹±ùœ¬¿JEž·ÂËÀ$ÏGáƒ.òˆ›õ<±EŽm’§NQô8º=Üýê=Ž` · î¦×]¥BÏ)!ÓL¥›ž#]f*q·ž'¶ÐñMóDæœA£:ÈÃÕ¯Èãy«ànyÝU*òÌ´d„i†ÒY%\yÄ}žØ"Ç6 zöyÕA®>n‰å,Á o\ä5Oôw©ÐÓó+ÂCOG!u™¢TÄTOl¡‡c›è¹sèqTz¸út¸Ýô8‚Þ*¸ÐÛ4ÓëîR¡—kY¦I(§òÇPf351[À’ZàáÔsׇÇÐÜáæÓÁvK¸cÈv«Ü®û··Ñ>>›¼ˆžKŸÌŸÓe TS <±…Žm_›qê²4–îw¿y©³=–`ˆƒÇÞýU*ô¢F1M“Ú„;wZÿBác ^ð­‚›æ³ô+ÒXª{«ê7»ÑìjÏèãˆ.úÖÑu|ó ¨v„ÂîJ…>‰à™æTm0"j¤˜þâ . qpû’¢SrT…¸ú¬¸ÍÌ q4Œw‹Ãéhž? ÷Wª(t^hÅ4k½:”ÑF³d<±Å Žm_‰tªAŽê`WŸŽÂÄ•/K0ÄÁc÷¸þ.zV ï¹èY/‚.CŒ¶äa˜%¸àÃÁíë•NÅÇQðáêÓø@†9¢ß*ú€¾†ãpw§ CU(¦i\kòëŸR‡a–Ü¢åþ|„Í!j>¤ÂÉ`%ë•›§7+”¿ÑGâî^‡Ê 癦|­J›2嫉)_žØÂÇ69tg]stˆ¸ûÕ‘ bŽ`pˆƒÇÞuÃýU*ô¤R1ÍùZé…ŒeÎWs¾<±…Žmºöç ÕA®>É#îA³ƒ< òšïA÷wÙ§gb~]<Óœ¯IZ8ôuȼà[·¯Ó;Kõ‚oUýj{ä$%ºð[GX×¾œn3ìïTa¬HŠ‹aˆ"EóÄ8 ä . qðÏgÈQâê3Câ<%âhÿû¾@œaŠÀÇ6LóÀÆ;aM™Ö‘Y‚‹@ܾ¢ôTÕA ®> Ü!G4\EÓᆠ»KUÚ "Ó܈qJÄèžR!GnQˆsÏUxü2„£:(ÄÕg…Ô8È qòÓÉ`×8Ø[§ÂÏX¡Ó´°™vj`Z˜XÃ[øáئK‘tÎ ÈQøáê×ôE0K0èÃÁcï›Ñú«Täi)‚æù´!y†XÃ[äáØ¶ òzÝî>ý˜bE K0ÐÃÁã©ïú说ÿóž¦}8z?þ¼§ò“ÌjOlÌ—WÖ Þï–q}yóGùªüüP³‰ endstream endobj 139 0 obj << /Length 1357 /Filter /FlateDecode >> stream xÚÍWÝoÛ6÷_¡GˆiQõ‘·¬uZwh“Úíƒ,Ó’0‰J))E÷×ïŽG9vê¡i7`C‘êHïãw_ôg‡;ü½p”ãÁ?‘ÆLxq;I(˜FIèhéì·=çÅáûËf2¿¹ÃC„‘ïlöNì;qà1—6;çƒNgœûÂ]µC_)9¿ž¦¡;¨¼¯Z5±pou[·Å »é§Í+ÇY*„ç93?d±°Â·âŒ˜V÷:S—Ó™ð<÷u ⸻jIr—j ë^ê}–Û­Æò4Ye•ô„·n=r\Wµ´ ³OÌlŸzÀÊÉD.î±ÔKùh"8œZŸ_~âöp«Aèfõ”»5Ñ}‰Š‚À-êv›ÕDßO…p3]eÛZv´¥åç¡ÒrG«-JüúHBw~ºîhƒ½À¶“Œ¬YÉH–Õâ·åzy󆮾\®77«ß/ñâ7A†$Ç’ü„EAäÌxÌ?±Nk™õh­€ØÜä}»•š¾çED!Ô¯~}>Â8Yl&Ÿ'ܤÇ´‰@°ç§NÞL>|òœì¿r<¤‰óÅp5Nøð­õäíCî=$ i ÉËÇtñmºtE÷µÁtØ~7쬧Aÿ΄ÅiJš–o6‹Õõ4 Ü+ Õ³ÅÓ ,öãS$»a«©T5cÎí-uS\¨¡¹èòR]”Y]‹‘»|sûn3¿y·ø,÷vÇîÕêêõl_ÿDìc’Œv‘­—ôy)u“)5{ Å€…fü/Úú!*u‘—™Îr(P\ûêÑ#Ä—LØš¯!À5ª0¹O¤­$íw(p|Š’Ðq=qd—­TûºÂª<çÄ*À˜"uØøAÉÓqv®(Ÿ/ÖÏVËÛ ”ùåß5®˜y©e_É~ÐØ³|P—AÂ"d¡¡°qeºÄű¨à©/à¥n–Èl:’T=. ˆx1S;"È{£*·†½­ £ïÕ= ’Š–“ç×¹Pž dÓYÈ…»1ÂØ=T˜FnÕÑ7Ï:9ë`“ƒoÜí¨ú H2à y_õ%]ÈŒŸ¨U}©å®¤æoEö-é[eõžvÞ3ú¾Ðmê~T××’œsÄ€…-Ú¶}èÿ0%À&c§ê¤!RÕÙ§eÎz;TOª˜û)L‚tQZöýÝå|žç«·5+ÚûyWTjßÎÏe  ãñ2;ŸŽ1äc$þ÷3'cñ?›9OXâ¥ãÌ ì̤ÕîNWM.1Ñ¿3wNÙ¿?{’mòÄç'Ͼ:²þ‰SæÝz±þéÑ7tVsÓÒ í\f1ü©}ÎFhSbŇ¡xh!T$áoOLµ!Ñ5Фd×Â-á‘¶ [<üRV9”tp§í{lÈå©ÔÈí²f¼®¿v}f%t½rh¦¼Ï5¬wˆt ¦$øêSTý¦ÑbÁ—µyY&¾±:ŽH}ë6nVVÌ®U’vïKØíd¦ÉJGú¬¢¤µéÛx¯­ õPƒÚê 0p ­Rp|Ö©¾m€  Ü;ê×]…>t´Gã °dgì¾l1e<Ò烾ڴÇì™ñ‚%°ãb„ÝžUP™79a z±ÿÃÁÍþ «“8ñR’{Ƶ¾Ôr|¬—ðcÅä¶å£TÁÃãT;ºáS­šý)ñ7Uõö©O 8Œwm=4ãEm BðQÿõÏ+¨šúИã§5æ4`q<µ/Ÿü=-~Ȉp¢€Eãs’G'žî¿ûyÍh endstream endobj 145 0 obj << /Length 996 /Filter /FlateDecode >> stream xÚÍV[oÚH~çWÌ£-áÉ\=vª>¤)tI•&w¥*›‡ µ`SchÒ_¿g÷ôa;¾KzGCA¥8–’¡d†CŠ,áPr‹®<…PʤWòY™Ný€+éýE$™ërªíz˜Íõ±HBœžÅŒ¨œ š“˜š+ 8ÃŒ‡ö†Ñ§d0ú÷N|y§ƒcsè W í¢H¬˜Bc˜2n‘V뛲XWY¬ä–±áª—«þf‡ßE v¡DCêòKrtñ%\”‘wé+åŒOÎ@wò<Ž,Â!¸ÙB*–ݱ~ê²°³i±X¹Î+»¬Š¹.Ó|êœ1ndy¿Ôé¼qÄD’r,El¡7)©¶ÈY¾\;¬žVE¹ qj°7€‡²´œp‘~?˜œŽG—ÉèâÓ±=Då^Š™Â$vĆY~ ^s ^Ý™’¡Â3©©²"Oçö‡eZVvV̬…†jcÊ»³+Èx&D¦PZÖÒK­™ñÉnð`cÌœçfg½Êòo-Ò›­}êå5·Q9 U(ëœhÕ‹€9!8Y;w߀ê[4uh! ‘÷¶ /Ìk'ÓÁ ±k ©ñ#,!˘wÓK¡¬å>Ë6\‹å´Ë#±½ûžiÀù„pîe+;Véß&}:wËÂŽ7õm¶ø Z6s§Ê<Ó+ûˬºË;w0³7êrãKÈýÜÝyÕ™0N&!mÜxÓ¤—ª.—cÌTØN®‹蘪 ]ÁäóP´’Ó••zúhEÕ›_’ ×¸óešBä‘yšS³gŒÇƒ?Gx—–õ£Ir1þú‚vå^ú)<¨JßÚÖq–æë´|° Fì(gßï·%ééE±i²MßN&zYéÅ.0J;Ázƒ¤÷½Gke£F„b8 c4]ô®® º…}¸ó8B?j«œÁ8G“Þç'ðã´‘8¹•¸…ϩ飿90duÃõþ_©‡¤naô¤ýûþó„Ž¿¶Ð¥-™Û£EZ•Ù}—ªÞoiѾÀÝ‚|ªoÝâ¶øÐ„€D|¡^Ч—‘5?_Ï«lÙ´@^kßjlðNqˆ±ˆäNb]Wµ·xMJš~»s-÷œŒšZ7!Šïô›ó Åët#ñânô¤Ð8†F-ÿ[¡ þÀ[r $Ü6iY¬VÏèµÝoÒ:j.†-ôŽþÏ×û›¼_Š æRH€Œq¹Ú·¢¼=Ùûe> endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 791 /Length 1527 /Filter /FlateDecode >> stream xÚÍYÉnÛH¼ó+Þ1¹4{Ý <` b03Ž^hCI4´ÉßO=RvdѲS²›j¾®®ª×ìE4¤)ÓÉÊÄŒ¦äÈà#ü1>(YíȲ.Ö¢!¾¡½ÃH­m& úqƒ|öä<gpŸBDX¢%Œ¢ó…·ÙIï¬ùHŒK& Ì@$‚¡„Êà)ƒKÏd)X06(9!‘±Œ6ŒA+j2ÁEЏQŸ´GŸd²tê¡%8[“ ĬHd²>sE’´ÏdÂÀÑfØlF瀴9£¨Ô”3häÈY (D*lòEÂwñ%!:hPDtðL vü‹ ”ÑœA1ä e˜›ÐEFû 0˜éµ‰…ø§ñÅ Æ›,–·°Û@¢wFLAJ½¤fxߨ…˜€ÌñÑI ãB4–<û\(ô)H €S–`àd3È~Ð,5È…vH3Vò‘DVF¦­¤‰ò `0.BЩ0‰É BÄ 0`؃&0T(Iº€ñ!3:ɤÈAƒ¨S“\ä~E´N’;I<ð£ƒ2Ë(ƒ`È…(À ‰2 FW –#íˆõ(‘[žñÀàŠ£#*O¨ü­>­©üH¯æÕÕbTO•yMo߯>M³úzÙÔ½ÞlÛà¿æ·Õö(×F^\Ž+ªoh~wqUÑí¬^ÞÑüÇä²Ï·7ömã/õr1šVåñrÚÔÓŸ³z\ß.«§š./Zßë9®g‹ÙÅô }†*Ѐ¾jv#<&õõäb4¥¯¯Nêå Ç£qõæ¾ZÝdýõõŽ>V6ÌoEÍ&P[Û geÔÍhz}7M®ªñxmý^/Ì•3w3»¸ÚDkk{á„{œÉ·.Êä[/Œxq5«çó.LSÝ ‰ØŒ¦OñAm/œô€3ye²ã ³‡¦/TçptT”§?î**ÿÄ“P”j ¯ébŽ™B‹òK5o°ç2©75Ÿ«ëÑÅûú;iY rP–#£R>/€3æŒ&zÕÅZÏÿó¯¬ Ìñ4]ŽÇçÛ¢0‘5àÁv Ž$ÂŽeÖ‹MÜ*ñ`]T :ƒ˜ÇTžVßôÐêI•l7U²~ÊòÝtZî 3dC Q·E+*Ú¶pmáÛ"´E+#r[´(±EÙÐôU”'ËËEóýÑô¿¢|_Ï®«YCÖœ—¿—ŸÊ«/¢î ®°Q ë då IÌÿl0ºsBÔ;z~fÝ'‰Èè=ÈÚ¤šu>ke|~–„Ý?‰à•Λ$ E–e'(NæYnÿ,lV«2v$Ê:Ùû•íó^øý±H¬F]4Ay–}ŠUa´I¹-£¢»H핉nôc«€å O@ÄMÎì¦b÷N%$1;VŒ=“0³ÉîfâöÏ„°ëÕÊbw‡˜b׃ÊþGJˆ xjœòxv…šIn7•°*¾qCE+Æ $À[vS‰û§â@Å(l_j:…ÝTxÿTlãB3VWœS8lí¦’Ö©|” ªÏŠÍ›+6fvI·¬Ø8XrXmApÐ㸺ÆŸyÈJžtg%Oƒö+œ{©Ï»÷+Ý0¤GéM´§Múi ê%{íä—€ö§üäï¯-¥®Á/55mššâ S÷1õQΡ1)‹uz›[k®oCÖjò¶Ö÷yêÿåšR1 endstream endobj 150 0 obj << /Length 729 /Filter /FlateDecode >> stream xÚÕU]o›0}çWø¤àúcè[–&]:õ+ÐISÛ‡„8R)!i·_¿k mÒ&SÖªS'6æúøøøžË¢è;ÜÇh†\"”XHxÏ'E¾X¸ó"/“ò B¶#ô[—ÇeA%Ë@FÍrGݨ3è_Äýó³C3‰ŠõIÀŽILÂÀ„T¹,f ÇåœÛå¥;žafÆ€ž Ù†£É'u´Ã¤}ïÀ·Ü hÒ¦ÇÝ•þX ·ÀÛ¸k\¿Õ4º_ûP6Ó?÷£ø|ð­âÿ"Ož'É6:@¥Tc£i¤æ¥ÊFª9BBÖNñäËQ#¯Õ­;‹VyL‘dÌSP/ɬë[‚Æ0§‹9hw_EeÈã Ú)ЬË:)¢‡v Ü4ˆÏ0‘õ6=,—RX»àY:s8µW°ei¸Dù²H”yï¥S¥S†&”éPjãIHv%ˆ N Eí”þYÜôœ€Ûm}Jî~‚ ,™ÜÔs±–éLå*J+ÍyØ­±áé¹ÄJWñÁùU lTö…#¥Ý´O»@6zý‘wÙ7–Eú°Ý·­?:w´Ó¹ûc¾‡g;yLÔsÓB’À)¯ôC‹z°1ëð…EÍBž·Qp…ÄTè”®ºÑVÙÂÇt›(n&[ÍîR?ÀħÿÎóíy‘NýÎ÷ó;÷8öÁÀoò;§ö‰hü<ù=ÛÇéÙGñwV»»•üGþ¦o·ùdöädï²ñÏÇ R;]NËt>MkˆÎŸ{ýËÎ÷«„¾¾F$j±£Jh'ÁS%‚R%žÐŸm0¨Ùò³ 6< 6æ@…ù ±¦ô endstream endobj 165 0 obj << /Length1 1857 /Length2 13332 /Length3 0 /Length 14489 /Filter /FlateDecode >> stream xÚôPœéÚŠÁÝ]w'¸»‡à 4и»Ü-Xp·àwN‚»·à~˜Ù³gfÿ÷VST5ßzl=úR“«¨3‹™Ù›€¤íí\˜ÙYØøJâ:ìl66N66Djj °‹ è¿rDj-“3ØÞŽÿ_N  Ë›Lèòf¨dowµ°sعùÙyøÙØll|ÿ5´wâHÝÀf%€¼½È‘ZÂÞÁÓ laéòÆóßO)=€‡éOw€˜-È l ´(],A¶oŒ¦@€º½)äâù?!è-]\øYYÝÝÝY€¶Î,öNÂôLw°‹%@ ä rr™þ(  ´ýU "5@Ãìü…º½¹‹;Ð xØ€MAvÎo.®vf 'À;@]NðÁd÷cÅÿ0þj€…ýïpyÿl÷§3ÐÔÔÞÖhç ¶³˜ƒm@€ÒŠ,..L Ù†@gû7 l4y3ø3u @ZL|«ð¯úœMÀ.Î,Î`›?jdý#Ì[›¥ìÌ$ìmmAv.Έä' v™¾õÝ“õ¯áZÛÙ»Ûyÿ™ƒíÌÌÿ(ÃÌÕUÓìè ’“üËæM„øÌäxÏÆÆÆÃÍ 9@¦–¬hx:€þT²ÿ!~«Á×ÛÁÞ`þVÈlzû‡èí t\œ\A¾ÞÿVü/Bdg˜M]& °â?ÑßÄ óÿà·ù;=zloëÇ`ûãïï/ƒ· 3³·³ñüÇüϳÊ)©èÈÊ0þUòßJqq{€7ó{n3Ç{6;;7€çíÃ÷ãüÝÿVÿ§Tþ+»E”³3·ðý§ˆ·îý··¿6ƒî¯³¡ü/ƒ²ýÛ>ƒtÿ¬¿>Û{6Ó·öÿÏGð§Ëÿ¿Ýÿ#Êÿëúÿߌ¤]mlþÔÓýÇàÿG´Ûxþeñ¶Ï®.o·¡dÿv!vÿ×TôŸƒ··1û¿:9àÛ…ˆÙYØüÝF°³4Ød¦v1µüÏýw oÁmÀv {gð€™íÿèÞnÎÔúíQq~›ÕŸ*ÐÛIý/¥”©½Ù·Çñ6w “Ðñmôoè=À›ýíHÍ@î6€•ÅÎÞåÍðVœ/ÀÜÞ ñ‰ò°X¥ÿýq¾-×?ˆÀªüâ°~øñ¾ù©üƒ8¬jÿ .«Æ?è=€UóoÄÇ`þƒÞLþAo ¦£?ºÁjö/È`ý ¾Qšÿ ßÿì]þ¥+Åâ_ð- ð¿à±Í¿à³í?ðí¨Xíþߘíÿ†\o¶oý¿ÔoÜÿ‚oÕÿ+ö7bçò|S:¿ÝûßÁÞÚált¶ü—7€Õå‡7nK'Ð?|o›Àêânÿ/‡·®ÿ@Ž7Ï?áÿ,Š©«“ÓÛ#úç)¿mÑñŸ/6ä2E\œ³7ødU÷©ý®FŒÈywBh–zW;žÙ{Ñ©Ãõ.…¾úKкÓXÊH/úʶݵèÙ³÷QK\Xk’jۣϓQ‚ÚônâÂîàdá‘Xý 1³†è/ŸgG­@ëw-]òÔ¹Ž®¼¨*ùXwîý2õåËc¡s»ª¿ª¹žÊg˜c4£õK~Pç™dýħ€ua&gÀ<÷@ûq}3‹™3ùJ&ŸÀˆè{ÃYä­»Á{ÿÓkµRƒÃ¹›€Š@ŸäÝ5æØ4·øþgy¼yïÒâèu¡ùlžˆ¸á¥Oý‰?´(üTð>•1 e(vaQu縛f:Ùh™N*hhÉêá½C¨KeÌ“¾RŽ”eƒýïŸ)IÔu Í;zH»O5»|ãðùÙcö&lIo„°¶:³ü¸ŸîaY+€Ó2Š0)æk”KÊpgÆÕó|¥ÔFœc ½õ^óXŠo™­ÞY…ù»Øê¯ñ÷#yðâ©L<š¨4ì'<uÅ[Žè5Ö`_ãO¡uò…oO¹p¼p&5ñ\|b’ãÀG=©Èâ–O[gû‰mëL¬ ¥=¥ú`¦sLN<= ‚:ûœÕyR.²¬zŠyÌuR‹’A2˜dIwð7š'ù¸Ã{šÍoÀÿM“еP2IWÏ6ÝuØ8»òËŽ+¾ÑæŠk8ñ'¢  ™vFH¥»"ÏS¾ÇÑrS5 c"·ÛÊíë4}È™s­£ÅóTõPåS<è´›ä[Êý3Œ®‚¿Šìy‚“t¦à­”|~Ýc†ÑÆ4‹²ßQY€Öl#¼¢<£Ñ4¼ÕlâËËG7…Å|²¾+|ºâ¹ªc¬ V¢œØ\áá=°Îh–æPZòŸ ¥V[ѽ¨›uäˆK3‹±WE—n>8S [¹ùƒ+ïÅ9ü4z™¬ØO眈0EEvAžËñçw†éÝp›÷H]HÒÒ(âÚ;ì!ê¤ä/P… ÇD°?Ɖ¢yùuâ[ÛhVÂ5’Ë¿Ñs¯€"Ü3E ÑÝ3.!˜.Ëé\«Av6“I§Òâ638ÿÚG™™ Ô0ãû!Ü(ŒB YÒ‹&P}¶¨co{2GƒÓßOc;@à9!ªMbÐe<)âYaP~'·u_ãh£l³ûî´Iåõ:­y¢—œd0å]¡SbüúÀ5À"“âŽÕT¹³ì£rÇ!~h±Òà~ibÝ-]“„¨\Ybn%k&BoCÁÈ}\AÒkõ+Îûþƒá~íô$•` ‹I]u•£¸-ÿ±’†¶Ô®Š@߸Î@5êS0ÿ>êÖjK/· › _¨­AûùÓëRi‘þG*nB=Æ@M©HÊÁæh¥¼Çt(“u,’O›ŠÕ[åøú× ›¢w^œ´%Å4S)ÜÅŸÎ9RW`#»¨aéR®2¬Œëð%×_X놡R¬é0Gcã¬ÓЪQ]Œo ÄûÂð·~ÖêËú~Ä2º)ûžØð‚ÿˆeJÝæG‡M¾„(ï6æ›6Äç8çþkjÃ{;—;óë„óD†Ò§t„;Uæ>‡ =ÚšÈt%š:žŒŒÏ.ºëÐúN$þ>ïS”JšßSÔ1tV£u‘/ ÖDO¤HÆF×3µ)^š[1&'vvt}‡¼9ÊÉ¢ð`ë½µ¤|W±îª'ºä»¹¿H1Œ8b&— Å€À°êúeðkÀ¥ÇÅ£§ á,ÑZªç£M~u±¯Y 3Hi¯~èZ">οXˆ¬La·QÅÊ®ZŽÂ['ŒyE²É玦=/¼ïÚZxœÕÞ»xŒåQ}dÒâÚ+BT:]›8 `J?ÓjqÎòêNyÚ3EñoC‘!EÎ4µ)<›l"õR—ýfö®V1¦”:ëó˜Ë@7™>ÔŠÁ”Nî°Åw£Ö‰éç ¯axiÏZ…×7xdsrÛŒ!ûcáÚýiû›è1œ[·šfbësdF檡ŠòßéúeJì¥"Fi²@£HEI´mræÀøÎY‚ì>÷—lIa%T’ßJ<éyŒ{|µë•p¤l¤Ô·² _ï´çY/À» Á" ÆK#Ùyýè‹ÏD¯¾] uh•I¢…ÑÂs²Õ•=G÷ge˶v|cìéÌa·»¹8ezè‰P•'(}È{.VVƒ8( ª†ÌÎÞc“S€~Ý{©EÕ©—¯×ý’f®)@ÀõS—M  kÕr™øð©>!Ö¢-ŒÌ"uÝ~m…œšD“»»Ý2¢¨¬m…îG€ãz¿e>§¾«68¿„ °Ù°‘Þñ_o*ŒâÉ[!guoòÿZ–Á',$ÂÑeþ&Äèaù|Lò>FG Ù˜uù¡£ÔŽÏø+ïZ\ÔVÿ’4¦$bИÑÏ–‘ÊÜD7àá†únª&õ˜µÀ»mEdqqãSëB_©Þ]´ÆýpY5”Áq éôÃôš0ŸÏÉ3W¿]U Ë ë.7.-¸ÙÂ\HœLíÖ‰,Þ‹Òdÿ^N¬XÈGŒŸŸ ˜O”é|ÓH|‘~&±\&hƒ+p€…3Ÿˆ„ ݃KDˆ+ýƾè¾ãªœž6ž)£ {¬¡Ž –ø…1e͕ݟ¬`$£·=hbæ™BÆÍVÏà8{e¸J²w$è ÿÙ6Éú #¶•ûP¯Y}îݾ¹‡è›òïø²<éˆä:a¡vô‹Þó¦Hªøì³Ý(J6²iû»dW½†YÕñ±G)Í!rbüïúdkñÎXîR¯—w•Õ‹ÇÜ­Úó1H¡Xª¼('õ‚ÈÔ64D%ˆsWUè§~â–[BÒ ùëú-L;þ³µ¢N ºRTé=†Èzð·¸&‚÷D¿VÈÚÜî^Õ´µŸI?…_ä(„0…Jõ¥ÈÚÞóJÚà'Ĩ½=»^þ$}O†kß{>Œ^–½³/£ˆæ9ª±Äó[Pjùlë¥Û1BÛO¢!ÿÞö#Á¥Ðh›ÅŒúù›ðk±À:VWÜ·oT;†P¹ÂL¿°H?®$BfäPC&Ëôáµb[u2Ñ@œâjÒL¨W–³¡¦EW¤©W[têo7÷>F¦­NC3Zò²„a“”4ˆ$¼rùÂ0Œ\奙IŒÍå Ü‘ÊôwÖèRŠ5$âç•ÕŸÍ ƒ¥Z„Ñ ºÔË‚^D©|%µ«Ò£f¯XU”ëa §R8Ø®wúŸW¿Ñûξû* dA1Cõþ÷¨ӢB™C¢‘‡I!+íg¶üDÛÄ$}p®5äÔvJÈ^ûÖŠÏ-ßðpäÈtL³Tnü"¾± ࿃v ‹¸žqF¸If“é­H>/qý@C{ÏçÃÜŠ>¬õÔˆkø½¡ êü.AA÷­R!k‘ä‰wË/V¢•*>ÄÖ7¸þ\Ò/ǡξ :Ï} ÅV%é—¦þ~鼂ݢÛñ=iœMV-»YaAÔ)|<ÊçT^~ñ†½=‘P¶Š}ŠÊÛ|·žGõ=¡Çðà<=ì$™æ½$‹ÈøÄ_{Vµ9—Ú GùYì´NKË ¼;%)š‘š¼î˜+½ãæ†7àëõžÓr[ýx=sOgCrt Ñ–ž~ö¸>‰z.µw7^Õ@ð‡}ÿ˜ùT”ßœy¦ã—ŽoØòý•’äºË?$‰FfL{névóuð‡âñY²öɦdZP8eqÇ BÊäã®{ß©ðÜ%¦P~'Scl6Õܬ ÑÐØ„¤Ë¦'kz’R04[¦nè¦øý¢Å¢0PžCãÃãæþSæ™`!ó!›jC+bZ9¯sáÅÆv†Û‘C_.Ô#5ºub¼ë¸"\ÈIߘ‹©Ì³/ÏSOýc“§lwN¡Á‹AJý~tÃØžÚ™kDM„†ϳ/¼\G;UIk±ÆW¢lüžlü{–E×~™9 Ó°þÂÜÙ冠>kÿqÀrƒN>N•w¢ýäiߦŒÑËZ@îÓœíyÉMmÛ±² 9ÝìbÖç3µÇ’?Û³ ˜Ã owT.ÍéiÝž¸"'+z¤äµü'ôøºl‹ ÂâQ Èc@ÇãÇ †3§Á+ÊÁicé• V<ÚŇ”™õ3‰°³pÉó£õ#C­âZ2tþà<½¹m1AÑæýíL¡î‘j¬ Œh*Q™²#̼@6egÅ÷׋ Šd—®‘̱ÜsFnPˆŠ¿ì‹¤ª›óýäèÈ9u.&Ü;0‘ Uow1½o{Ò\&@É,D7¦ƒúÌð%b9bi=´œJh#X>«uÛ« Â2‡«Zg,C^ö´GO Öä³þÒ%žÊCu² [Ïj8Ù´ÿYÛM¡`x¹ÊCGgJÎ>„' )¶ûfãç&R©¼éÿ£:iWp, ußX²Mq<ìl@“Z½¼eðÅúò¤W½AñÌóxÍèÅêî{šÚ|“àÙ6à÷XËOx'Öo=x™p=+ž$Ûk L8ñ½öØïÕeQ(rÐðôhç+ñ]™ çÀüÌ4k!C‡î«[ß[¤=`$æõôTU?rÅ8KžÔñzɶ=Xäô˜¿Š+ÇT9»FM%šEÕ/ 9áKÔêˆ\Ú´§Œiùk›y®.¿—G‹¯ŸÞ·^9b;š¾CRom³T_UhÙ‰¡oÆ ˜('ŒHi´i6Ùt>'ªyñ†<â—ón0¦¨;¼üü\™Ÿ–ðõãšEÉ;a¾²Û©qúŠÓ¸9y0Á<Žû†*Ù’ZK à@TìA!CÄ"¶Z9Á1ô0š ¢Ž¾?N£haÀ¢sµ4MM½eRatœÿÈš«à{Eþ³ï¢§àçåÃÑFÁÃT€º¦!ÔDTœ½Ãzë9Å{Q±(„ü_&ŽØ‡Ä7Ús ZâH•ª\–æ˜ÔÏ-Œà sÙB"¿2ËŒêü¼óªßg”ñI„Ï37Jt2’IX^:.‰µˆ/±EøiШdWðš ïFW#YÇÚpµ¤hRá5o¶u¶¨V%°,“)"”ïÓÒ@Û|ñ4Ü_®zýfQ`ë·‘a\§Ë½¿9î3å½#&ošªªvWˆìhgF·†¶üÅ3ý÷·{Éqcry‰8è•KÙ0/5àÊÕÐ,‰ÊSÝsÁ|2úüaĨÇà Ѷ—è$%‡ A½¸¶I‘ÒgД®ÆáUcH™š^¾õÅÀdIÌ+6Nð4^2&¤‹¢ÜÕ°Öds}qaûÉŸàåØéöxñÂç+?ÿ7t-åxñ=š^¨#+²&ç@™jIYÔê*n*.ÅöFôjyÈFÄv¹Se9|‰¹/Ž@…t ¦Á*dá‰DOD›xÚl[ó$$šûQöÍ2þ_à—™2Œ]W’:ÛžUòddN:”(»@\üñçÔW—.ï‘ g7¤°yļqù•­û£ç»…ʺ.ƒ$_E6xGûMùù“!@úÕâÙ×Ϊ–„¸x`™âÞ£Ç8»³QY%>Çè¶îN§.Ëì ¢ŒÈíêQà!ˆ0+ºÁµ©‰÷sÃáó/†¤#SÒ`'ÍÝ*š§òÕ¦3l¿Ë+ÖdyO³²ÀÞiâcš„N²¤d­+Û*\òÏBÕ'=!¯€—Ñ"•< MÇDë\ˆäàmÊIl‘=ë–$z%„‹“Gb5Òš!m92 µ<ç%Ú/m+3³‡sƒ5GgéÛlŒ¢õ?5V•5†D®ð¢ —Omòž~-¼îù>(­"ïÏj^©ô蟕ͳ(c«§64+”~ÐñN¡¦›Hu©Éb°ôšsïÏåõib­q– [ýýÐñ%¶ ž/wJÈ8fð(ìà!%J·Â·¥åy§ŸûžÇF8¼¯ºŠõLÑ1؃£q†Ì!uF"Z R0ó7½»ªöå–B0¥ó‡FKÙd²¾t‡oî(¨UFâo6ùÙú)¸Qš€s%»8ÛˆŽ7›ŸßØÃSK—Š('áz5ÒBúGÓÞJfÐ…‰¬ª^öTéy}Àj&—í*ŽÀòå®°*ô²TPˆö¾ôÁõ#+i¶yU¶ àç›gpˆí6Ü÷}ª ì>oʬ*}ò`tvæq[¿J^ (ð Á†Ã£©þ7Z’‹mÌüŸU7ádæS<ä­_ˆp©#Ê&,VÆ•ïéB“œ¬k7f³úNU/!isØœ¶¸ˆË‡Ò®$+ +:öÊ¥K’!¶Âó}wiVׄâ]iamƒÈk5ðÛB-ÉÃ(”SÞØwHÛȘ1ŽÞ=%§åÕ}*ÿvêQšëz•D<`ê¯gd×ÛK†{—ÔQðÉùc·óáWúqÀ¡¡H–ˆ>ŒVL]§ß\¸ë#ºßé/j JyOl'ÔDÅŸžÂF`Â*§—ÌéˆÍ3pªzåÈ·· ônjH´ ’'aaAœÎ»×#ÔRkqADüÝ 4Ïä( ƉÚ&S]+³…ŠÁ‘=߃æ¡Áj­Â$(Φ~@Ôènã`BN‰x ¹øÉëU@•»W‹´ŽøÜÒ³¶W(’þ ±–™—òû$ç9üB—ˆzN™Zµ‡Æe 5Ù@™„±×óð«¹èÙk/MÚÿI¥áýÚ1 s×U{”Å×çX°$Ù&™Ö†´'ÁÃÉXÂû¸8ç¾Jý…½áŽñ ²ƒ–öZ!¶&-ÊÚË6±ÐvˆÈ"_Î/[v?:ùþd æø–OU i½.ôm~I-†¦Œ£ S‘)N× o©IC­O?—å[²*Û…6Teßµ Å„þQzé>åAÀÃwî£ÜW"x=@—™ÞLɯ¯F21±,½8œ6DL¶Úy5ô$‡NÅþZŸ{hg{ˆÎ1oèi‹oø“éMGêt7å(Ê˶¥¬æPËŪ™—ëä(n™$w%*‚›F™^&`»P9y-µœvWßI\vopו$$£qØsë—‹´?®?âÉzæØ5ÕO²˜rn‚ ¸œm©&£îöÎö7f¤¸##êÊ;<ûcGlñÐJrƒt‡ôÉöƃO¦mÛîêDßÇù|Ë {+À¼Ä™¬a>êšFi£'ö½!§,ìè¯SŠü°ª¯¡áI¦3 ^~^²¨µÚß¹)åÜ$ “IÂ¥¥û膾ù‹Ì0`û KˆLÇjfU¨”¹OÊ(oŠ¡8¤z`" ýº»ùR؂•ML¸Ç´¸Ïb÷À=Ÿû¯DXMìQêœ\~m™¢5Ñ— DÔ¦ä„õ2»pÑJSS}"Ý0M‘!VpX(Ù'I¦!nÆ$Î8aÓÜ·XëÇ(ì iöàv¬#v±ÂÆVý]LÑ/ ¡”­&§A›MkÐ3lÏE~ð²EµSëüAȨ%‡ø÷ä8ý>#7o @N‹ÖÝr˧š«ÿîû/!ŒùU`uñ´“šb‹éj×:…\‚¥¾ä*ûîFTDÍ6¶»9Vìþ¦\óø‡ R‹;úSÕ¨ï0n `ÝÍ —›:Œ ­„¾Tûêêáó•7¤»ÉLe—Šžµw<³­>‹“ë˜ë:’³áj¡5 6Ç ”J{úDùhÑ(¸úõBŽËýq4mÈAlå¡=¹\öþ^KR{ßWÆã7a!>;± o¾žß:§ÁJùQ@)Ú sLªdM°ôÕerÎ(7e ¨ö»Ñy¤¶9\ 4RœˆfJþFÄ|ŠÂðìQ”ΫüÞôE°¬m<ÓÆ^ú%˜•o»qé¸ê2—jW“FŠ=…m>Mz n Ç•q Û}bGù½©Ï{ó©È’vÕ9q>rËYƒ(î92'¼Zly‘X$gO®â]N~®´QCzdògúJ勬u‘]²V†©Jüœ™Øï·2#i ³QÙ¨¡Ù ­{Qn0üi›­n|ÉBé*iÛÏÙcàܬµKIm×¢iÀ³GäqvDyzéÀh:`¬B¨ï~iŽ­Ð@¦ƒ„>cåR~Õgl9íøjjCž!jQîvh-$°‡¦JxdK)cŽ ·S׋g›mºr#Í úÈÖº|åôY]þ~ô= 1dqê|uCޣ꯭ é1mÜÍŽ²Ó°^zÆù…®1Å^Ïâ>"]嬑8¨sfaoîï…!z’Œß¢mÎñóÙõÚ¹6s~”øJè%W–“:¸jŸÇÕ9zͽÙ±„K1Jì`-tl3p¿ˆîÒ‹Òb!ª¥š%žT÷â~‰RÓÂȳɨ¸mC;æZE|ý׎”Øø{ëˆP<Á0pæ©U'§LÎÈFÒðÌøñiŸjŽöÇP‰ø(Ý8ö+ÿ ÊÁªïD”î(Ä¡"*±·‡…¦þWñf¥e Ð6H3ÃÕ3l­9Ÿ8D4®pAÏ(ÅÙ÷Ö0I( æNžÓ[zGÏn?ŸQíÃÇ­äk§Æ<‰ðGf„½D¼t¥ŠÓË¿I´u¹@jyAtËÓS‚Ha½NÈòA›5ãvÇËE–À*.(õj…è =MŒ|—BdúñÁj4ÒÄQÖ¹!Ån>k3¨4€fZc\vì‹óG?×0 ¼Ê”« ©.P wv ÆÔ+r”׆<C^ï§m2c¡/š¨ØJ–˜’pŒò¯•ßÃô>Þ3<ز©orOz6*¹®ê‰´Ó«È²óN²0ãìr~ÄYÐí¼ôÌ»x1ë¸Ûw]` ª€žâëóÄúx¹PùBTñ¼|±êÊÈE¡ <ÄÂ#\Cxu‰fûT.Éì€%"ÙlL7}‘ÂÔú‚‰Ð!Ÿ×âCÔ°\ÃŒ½öX¶Ð|¯zÔ!E‚>5³W*6)YøŽ®m.Ãõ`Y‚Üér,œÚ2] ©Æ$âÊß‚ ‡EëìWÑ‹NÒÅåQáémP ƒÀÉ~vyž†žDê9¸Jœñ™ü ÇždŒëdÖ;yÂQÕfFâwš®PŽ&%‚…D¸ üém NMÜŽ(Ãq$ìŒö]ˆ1Ì8b„œj°ù¸žvD^Ïvv¸É*ñEsumÚ–×ó¾Áè±¾Ši nq|^“b(­HÖ¯]¡þ”\ô=F•纮á´96C³m=øúÎÚT3Šé÷É.Y ïd² \ÿ`B·ûLx'»é¦êÑ×óÃõ 3œØREÄm­ÅÁòЉ %9ÊëÓãMü›¿ê? ìV•…q’Gô‰£Û}çÀõcpÙ+[6ïÌ$¬+3 5`!d¿ÓÓÂ+pïbSøþ‰„<Æ—ÔÀܽz¨FýiÅôIµÐ$ËäF“˜zBˆo%N¢)ì+‹|#éLÞfd´…7¼7¦Z¼SDÒ!b„Ôv¿4ãqï>%›êS¡iÌQuü²²SziÌœhR#ÅŽ%7[ômAÇGAÑW½˜a4m¾¡ º4ëç3ð !PuTÔÿn•»þI €ŸSX»_+šG6+tZ×õµ;&#Ù¡ž🻠cô%úZª²K¡vQf\Ÿ ê©§¦,z±¢ 1­´œÎÇ4´A™—M³VY}•¬,Ü6*íÉõ·¾EÌ?°ü€6™¼7ªÏÀšèlE>#pìj-»÷9‡œs´¯ApMõéˆé.ŸLí‘nþ_¿ËJtÖò§_.èDŠ¢Ò/ó înäEôÕzRo…!vN\§úc4öFÓnX;¤÷…tŠ»jÍØ¡èKµ-7fpÛŒÕ2öjó«ÕŇ&–Æ”ÚÔ„ùÉâú&(xã$”»Zß>P’’£šÃMlõ|¶)N;IËl0½øRÒ5Èò¹ƒ¢ž 󡩆l0b•{&ÂGýSE¢á¡O¼v]ýеÁ—Ïù6A1¿ûŠÈôž«¡«勽ô±:N§`HL‰‡î÷Ê;)À¢-bIú¡$&Mm×9®¶';"ÁªÏB‹ Íù¨JòCŽz˜ÒŸD 6©åÌñw‰7'CUN‡WÁ°&rð©'&»¯Ç$æ'dY—„ƒŸýQ’fv×qèFq¤Ä¹ú‡^‡¶d­{×${ª?‹žìÙj¦>xR×VQ+ "1§ÓÁ"9fEC½ºô~,Î]d¾M“¡`ñV7ˆ§{?‡úhTÇdM·Ž±BïŽø9‚äw!4DçÉ/íŒ ʆ¨6ØEMKÃH1⑆MY»Y2"~buÞ©Ö¥íÈÿ ƒL«!Èp_øÍþ¥XüœH»ÎØá÷¾„IE*l&'vó;\:\|j  ÷a)ïg/R¢;ç,½"æ¶â… ýq‚Y8 ‘‚*Ùnà‚T®dZ5L„œ·2¡Û4Á:5škã^£J†Á¿µô%`y˜”¡Qæµos j žãC¤TÝÁ}<¹ù¹+ºx$ÛB`ÔóÑWˆ?Õ­:'™Kb®­Ø7—Is¾©@MˆœÕ?vŠï`NiÙ{ñ•ŸxåuWþ›ŽŒíáMŠש<…¿ç×CFúvEÊðRˆ0 ¨=ÂSÊ·cñ>Ðà]ú{Pè/»Šlu‘OqÃlô*ð™@½r˜åá9<ïíRiLm™€MqÛ´ÉJÍînç«ma®8Ü·O©"‰-é&£rKÅÌ2ÐèlL ôi=³ˆ¿¯š&–ƒ4!¾jÆËGÃ8üê´Ô$óþsUyya ‚½¤<êkë/e“îtWØ!R@ WlÛv;ª‘ƒ…LºAò‰2ã25s¥ÁS[Ecm¸¬Ak-’ÜÞ÷¨ÈÚ~«‘ýsëaÑžˆ¼@ߦ¥1™KxÊÇ)y·:?”Žèã“/x® ‹´ýݦxÁB<®,·ï|”Ñ0ë-¥1ÎíÏ4'iÆ›^T¶ƒóžõ s¡L®ÆX}1ì,÷Wè( ªð…†„–GŠ,ó\R¿Rº7Hhi‡m}^¤H9§¾÷YXš›%£ÉX’("H3–”ñ;Kžœ•Ëù6­ á¯^ä;ËÄÈ–Ü ñÎŒ¿.E·Òd-¹óS ¹¹ów ­ži¬´(S¯9'FJÕIWy=* •†Tꩳƒµ"»ouv›}¹­þ}ñbNÓXˆ:ZxÐl¹‘£ppUhø.µZÍ F£Wa 5áôZWØ(tµ+ýn§•™>úËQ/û§tÎ¥wF?ðu’ÝWç»—ÔKp+\Ô¦ku÷®¯CûáRçÁÝ^üÇ +׆wGVHSÒíÔ¹XͯóXECк™¸Ñ;šj«8¬¿±;9b>áÄìÇ#Òª²(ç¹.›ê!5 ýâ&Ĭ’MXSQ˜j€Úbz¤7Z_OÿÅñ›{eUÏŠÀÛCök%òú£EŽä[ëš„¢­rlB=C«Nr7!+ò³¯Òð$‡×)´ëa"ŽÇbˆÞ=v}+ȉÒïdLGÚW_Ôq³ûü ½"¼°Ûø®? _­u]hnc~·æ+×ÇÔChê52}‚ø»U2÷›Åâ´…£ýkk1š–PiÚ¶óõÃpSþĶˆÃœ×¹[e-YƒU3"ülòSº…H£îð.$]]¥#|wfÊHƒÂWX]5 ¸$½²ªæy ¬õqØ{D`D‘ï%_‹g·òn|k|ÔõïZ€[ŠŠ‡Î,Îgçõ¯usRZ©]G[)Äήi§.i˜äö6wŽŒHÕÀ™ãví6W†ß>tdœ8uyœÖŽ‘ääÄÛÎN‹žåU¾‡£·8êV¥Þž®ñ¯ý‹f.»eµPð”3£U_±úBëТ‚hIyI%œsëçÒ0]k™rÌ~‰‘ž?»Ç¬¤|™xX: ×Ö¿"u^ Ù/$jÏ<¿#ÄþЫ›$×É4óZwnÚÿ3ý¡»8 ÀVœ+Ó’˜¼æéÀÚØNˆØyÄİT½³„µ‚ JFO_Îé’Ź²Ò@Bqg…‹RÜМF2¨ÇJ`Fÿ”åØ)Îñš¸þ„8»mÐpêÀj—¯H‚Øã•Qa¼ÊƒnG ßCi.¶›þìÝXʽ±‰¸IÛ*l÷MQ§í*„1`]W ;È$Þ’t“å½Ñ‚cÖòp»†>‹ã ÎxX—÷#¸Þð¦“no8'¯@b(¢qö)bÑ/ý`+æ:› ÇAB‰k©ÃWbl­›÷¦ôúVÕΰ¢D¦¨ ÎF20-rÇ$(ÞŠ:73¢xv~Pg\‚<~™ÓKk4߯(¨ °gDm±<¨½-Â`‰ BË@O™+ ¬^'¤ ºø05ã~:Ç…ukËt¥bXj‘húû éC4Ï.ñyÎäD¸xÏþПSr”¼ÝâĘ – aüðƒ| ` VëѪ%¦¥ðìÂß>\“»G$f‰ä:âœ}‡²öB$ÎQí¯´sxØç†øûªÇ›NÌ…Ùña bE¿(4(*Ê0"…ŒÐä˜æ†"¥nåC j ê}ìž¹‘ Í㯠E׳›ÓÀö‡W¾ñîa„ ÷5fðâ³Ï3Á~ lÑ.tôxÀgÜN q¢›ø{…ªÆ*Ã1²Ì+ ýÜAö-Fª %5jnª™Ô´Ï‚.µ´¡˜| ˆö+‰©‚œ«=’³cXŠÌM¿*ñ¼£FŽf¬×7ͼ¯·¿«×4áZeîY_›€Ø=œ‰>‹¬œUt\$¿{¬Rƒ¸)ç84 :ž+J©æcg§äŸáäVê5ÑÃLFËéÑuy:ØÚŒ¤U?¹CŠ(¸EHÚÔñ±ß“ùZ|Iùlï~¶Ô\ÅVšÃ¤ãÔ8Pn¯NFÍ9-å-=UÙF±ßýÄâ²òÁv¥¨à‰L¯>ïN÷K çeÁúïãã W:ë…Þ<»v*ØóÕ|¸÷sË”ñWμPg=x#}”ĽDË;…V9á6Ö~¬‘{âwç M(c92LY!…–QN‚(×»§÷ÅQ!-š»·©9'xâø¡~÷~¢•¿º2çF”IÙRYC€ï†×#¹Š9›³‘bÌç›L™'&è^g5uêÜ€*\‡ Fô'ut`i„°{Áµ)(øæ9ìì­©¸Š*ø!÷9ÈÁÁꎓÔìÖ¦Aâc¹&?µ|QãižÖãUo¼(z>3–h™Ü©¤Dd‡Í—Ô B¿×†‡Òל€‰ CcYû*¿& ¦\xoåœ HéJͲæKå÷tÌW 5ø‚·lřˆ,÷«UI¢G4sÕÐ[ éÄ,ÀIoØcñ4HxÉUÛÅ_ï].&Éjn Y²å© êÊΠ SîhŽÕ£JñyÜ’m.õ ù g–™ÌU+´×¡þF(óN«‘ ‘£v¨ËȪ^º¼àBnű`K¸ü½R  ºê»N[|òVÄ,ÆÐ遼ÕwëY?+"Õ2’–ܼ²rËÖM…‰Ïîq=qª¤à†9÷ [ˆ+ŠÜ’Y7™&þj“|rSλi¹G×aÑ-“ɆòÂz¨RâÍ,«xà—˜=oT¯LÊCiîSÎvÆŠõv¦t“OÛýÙGèö>köpâuÜÂXN|Ž‚ ¯\õX¥:G9ÅZÂûä[y; ŠxÿZmô«qﯺàgà}ëf"Ì—ˆ×ôü:}ãÞ©°Vé(viñ‰ÈøÝfI˜…pòâ˜D8Uy„™MÞIùv “JÚî٩Ο\b2¨e%<ÄMƒŽ¢ 8±Yyb?ÐâÌ CWÌø`Z݈͛pC@?¢ml6PöÂoæirå ŠQ_nÈ~ôÉB“B uF¤Ç(½+˳⊇>ŽÏVˆ{Öiš‰_,ÌöÊÿ è¢ÞE¥Ïf5¯\#âÔ»³=©»ó•~’¦~±aë]"PXœ@ØçAT'îHH°¥ÊŒÔ¼M¬q2å›êv…´RÔž Í’L\DP/qFE$üZd÷ >Â×S…ž÷’ÇåWÒ¬§Ä.þýnÉ»ªÑ®|i.¬ãÝïÖ¥oÔ?øìå[¹1ÈľYÄ…¹Óú½zó}=@2ªµD¾ð5üfàØÎ5Ì ¿{’·%R²5¥ûóWn“ÉnÞ;ä©>Θ…ÞÖDZCL(|¦=£y°,Vö—ôܾ"òf2Âë኎:9òÒÛ!ÁÞÒ‰úî^2uê×Pa¢bgŸ[6 ‰ÌŠwBi_…C_°È;uqï4¹¸ÚCU>·^¥;`{¢³ºÅ–b±“?àÛµö1¿>³Ø îD@Åhùåo´¥0å˜áNG§ª3ó»Þ_{6Åf„wR1v]_öÙY l®¢?'°Ýhééuæµ”¨²qi Žh­`Þ6Ij(W& ..BÕÓ¼¶É»ßSXµ´'ÚuICªœ³Î‰o,Õ_9 % Ûpˆºk@ 0åêç8/|ô ò‰§ÁÐb‹Th£QëÊóiIñäaê»Þä¯I´ÄLx•E(EKÚã;“ícWeÏÁR ëA‚ÈÃÏc„òUŒ/àç ¥Ñ!¹ìFd¥ïvù‡‹Þ«Ÿçq:Éøp‡O[²Èa"æ÷¾ÖÔ–ŽTéC›‡ô†Ô4VüÕµÂæ™{d%ðŽåþÏ#Ín6pô‚É’*CùÝ,„'p#qÊ„KÔ¦×ÑR)£:X‚\ù豆Qf¿g.=¡mÌæ p—¾}o´Ë¼¶FWẠðâÖ}Geé‹þ×à þÀ!Çú(`qðОL»åJ<;Á³/ o´¢³rÛcøïäê<ÔAQ ðÓa L´Ì6jƒgw‘^qLÿ' ¨vá-YÙlQ¹5à± §þ'ñ¥Q/RuE.g³8ùž„˜…¹©¥(›×´¡$g(ëÔÓØ-)’{ªÓRõºqusï¸Ø±°m¬³èÆm0BÔ@è´YcøþLx¨TÍçò÷ŒRX/ïC BwZôjßV|8¯Ûôs|ÿqÑM<–îBÿm™í¼èüB€ áÖ’zñ04µÌ¤™Äw¿ÛÒæVßµs@äw8Ö+C€ËFD¦äÿï¦ { endstream endobj 167 0 obj << /Length1 2070 /Length2 13190 /Length3 0 /Length 14440 /Filter /FlateDecode >> stream xÚ÷P\ÛÖ ãnÁ54îîîÜÝÒ@ãNãîÁ-$xîîàÜ‚ww}äÜsnÎýþ¿ê½ê*ºÇ´5Ç”µ7Td*êLbf& i{03+?@BQ\‡ÀÊÊÁÌÊÊŽDE¥a¶ý#G¢Ò9»X9ØóÿËB¿Ê$àWCE{€œ«-€ÀÆÍÏÆÃÏÊ `geåûÇÐÁ™ t³2(2äìA.HTŽžÎV–à×sþù  5¥°ñññ0þå³9[™íŠ@°%ÈîõDS -@ÝÁÔ öüŸ´‚–`°#? ‹»»;3ÐÎ…ÙÁÙB˜Žàn¶¨\@În 3ÀoÊ% èojÌHT K+—ÿ(ÔÌÁî@gàU`ke ²wyuqµ79^O¨Ë*”Aöÿ1Vø#àïâØ˜Ùþîoï߬ìÿršš:Ø9í=­ì-æV¶ €²´3ØÌÚ›ý6Úº8¼úÝ€V¶@“Wƒ¿R¤ÅTÀW†ós1u¶r»0»XÙþæÈò;Ìk™¥ìÍ$ìì@ö`¤ßùIZ9ƒL_ëîÉòwsmìÜí½ÿAæVöfæ¿i˜¹:²hÚ[9¹‚d%ÿ¶y!ý‘Y€À.VVVn>È ò0µdù}€†§#è/%Ûoñ+_oGG€ù+ ¯•9èõ ÉÛè€]A¾ÞÿVü/Bbc˜Y™‚& +{¤?Ñ_Å óÿà×þ;[yôY_Ç Àúûóß_†¯fæ`oëùÇü¯³HKHªi«2üMù¿Jqq€7€‰‹ ÀÆÆÁàábøþoœÿVàöIU€VgÇú'¢¬½¹€ï?$^«÷·¿'ƒöﵡüï J¯ó ÐþV.VÓ×?lÿŸ—à/—ÿ³ÿ;Êÿëøÿߌ¤]mmÿÒÓþÇàÿG´³²õüÛâuž]Á¯»¡èðº!öÿ×TôŸ…w°5û¿:Y0ðuCÄì-lÿ[F+i+™ŠØÔò?CôO^ƒÛZÙƒT\¬~_8&6VÖÿ£{Ý9S›×KÅåµW©@¯+õ¿GJÙ›:˜ýÞ=v.nÐÙè‰Äú:`ì\\o¶×%5yü5Ûf{ð« à•œ/ÀÜÁéwG¹y,¿E!Ö×áúƒ8,²Ы¥âï«¥ÊÄ`Qûƒ^ýÔÿ N‹ÆÄ`Ñü/â{ üƒx,&€Åô¿ˆëUgê`ûZ¦$¿«Åbö/È`ý±ç~E5êÁk’æàodõÇžã7tûW€ßzWçù¿šXü ¾2±ú|MÐö_ð5{»?í5×?©s½Ò¶mï¿ô¯É;ür¾:;üú5Ç?ê×`ޝ׹½-Èü?N¶¿¥ÎÿC›óµޝ{æð¯R±½¶ä_ÄØ^™¸üIî7¹þ•Ëë%õߝ黨],ÿâõ”?g¾®9 ØÒô¯j¾¦ vwø—Ãk ×Á×ê¹ý«7¯<ÿœ÷ªô9ÿÇû¦ßÔÕù•0ø¯ûéu5þÁ=†@ )Ò¬ƒ©@ˆuMHÛm•‘;ÓÖ˜ÐÕ–v*“÷‚s»ë=|2]åç Uçk±äÁoKR´W¢‹¤OÞÍuðá-Iª­>Æ j[­Hóã¸}?¾ˆÕö’ 3iˆnû<9ùhÚ@7CvÊQå8¹ò¢©äaݺ÷ÈxÔö–ü ›ÝRÝ®ä–G~,™dŠÑŒ6,œ¦Ê5ÉœÁ'‡3‘ Ðcžz O_]Oafÿx!•K`@ò=Œá(ðÖ[c½›ñZ.Ó`wé" $ÐÃ'¾Â™ ößM‘Ûó.ú'õÕœÄh¶Q¸èÄYMÖ¹ X2üã×0þžq D úÆDXœ©ê:•øàž­zv>fN-Oáä›q>’‹jÇήWTùôgç`‘>ð‘ {xÚ÷DÛ·!W´"p»á»)sÜóy}½|~“4u‰/þ¢ óì&¹`ýno êQÏí™ï2öYú—ºGÂãăÀ!6K²l¸÷GYÚ}˜/6ÂDÅ1PòÖ#Õ«r^h/ß•²LƒE·ïDQ Öæœ4¶\CæÍJôA±éÖürÝö0Ãò‘ìêyUúz3ÅM0EFÊ!ƒBjx*‹€À/)y4„Má—…7*$ücuÅ“÷Ì*ÅÍ}&dKÆCß¹PD¯(ý¢”¾nðK[‰Y¢€VkÒàDi{›8§ý[Ç4Øi1‘s[c —îbÅ0•Æ›äŽXOsuÏ¢_³&koF¿¿çs%qŒí»VYˆ¯Rruž¥Srµ,Ž š[ÈméV™Ž2*ôÅol"…íêšFÚd*óÒ¤ýù–£lÇïzã];^°×–*?ÔÌ |+)Úì¯Qæ8¦-%¸ùnøŸJiÓƒ0õ#¹çÓ¹äN§×BN1x=¾‘iÏe…¤ëòwÖ-KŠäŸ«Ä4̓ÄG-Îå‘Õš |‚ÝÊÑ~iÎP3D­ÿÌ׫§—AbçcŠç^8$k`¦ægŸöqëå:‡€Õ€àÉ\%Ãf~&¹-P¹çÅaqyô(6£¼ Z2„vˆfq›4ðS·yu0ê#K©ö§`ÉÔþ'‚"^Èà¡{µ>Zô¢–1¬<˜ž…ÉÎôGJÇS¬$²qr’¥ ¾Úh5€Þ¹oñç¥xC†/P(¾¼~Ú"!œ]=SýêF×çWlÊ…Z’zL•)ÝiÓÚ‹ò)Žõ•(ÇyM ¹~®7§³Êµl8 edwÄ~À jÎ/Á;°Ñ{K“½ðŒB- Ã%ZÒx¦Û½UÃý¼6½È–‡Æ°Gp¶­8;böñ«Àô­ú Æk¥®~ÔéNþÓÜBý4ÊÑl3þq+SœÙ4ë'‰EöÍ÷#\Î qüùø›µ_î×Ê;FýÖžMs0çß#­E`‘™ó «ìWú"H)¾.†ßNÅJnH…ßBàLj#áõAi"0ÈáÁÞؼ!@f|çWaT:©)\é÷sņ/E&› Û8„áÇt8Ü'öÛ¶x»t«í»±L6çêäâÃË^a½Òã‘‘±£¼ë*zv»ñpv I•ˉô¢Ü-D ïø¾º YJuëÐöyƇ)ݦÂÓòîà™qÍ æ­èp–À¶ra‘Å¢èHdÀUI½•»Ž-íhÄ0˜Ÿ6ÔÉÅÆoIy[W‘ñ¸`Kß4=BįK\Ï$Lì8ÈsܤÐòP×?¯—Õ/áWÛo{uwU‰Ùj–Æöe”Ÿ%ð`AƈÝԾ䓋¦:Æp ÏÇ¡å èHV±=©¨oXGå  …‚ôtbøµ]z†:)W—ì/v ‡¸ívcÍâ<>³ø9XDƒŽ³Ê|–AÙQÇøØÀ•¢§¦G)h™#±âžÚNzöÀ©"†õÑÝÒ¤Óÿ݇•”oHP½>zÝ¡×M²Î-%ÉÔ#´¾T§7Vh£—‹öÝbk`ÐXv»>ÉÎ2©d~NÓÖ°£ï”ÑXˆÀœ9+ÁêJ¬™wCrØN]²õ“Qlщœ³–r¥@x²ùKªEHTž^ªM*¢ c<È$×þ±Ù„d,?<ÿBÏ,î´Ø2<%¾&*®GØCé¨8oÅq#Îúkf³ŒBÀ‚r¥ðEö”CÌåÔANQ&aÄ¢œÀ©ƒÒ)±Á7þÐ7¬ØY»@>r8%À{ÉÉnýöSÀ®%·»·º© ÐJ…›oƺ „DÁ*Â$}¤‹ØÜ§Csù>†Ër6²Àò˜Â$uû»/½~1þÆoèà I²ê ¬NÉpîäF­>9 §ÚÉäkæí9<éÕï Ñ|¯#¬d´¸Ýx¿(íjÂÜ1¼ôT‰ŒfvX•ö՜үÉ~Òó º*(· ™øú?/Ë!>IÉŠrÀ"k x¹Öùº*¼OQœ(é çÉ’ï˜B†>¾Ùi=ß [æõTDyŸŸÇñÉq{O÷ö³d11GîÂv²e×ްäÜò1h ¤*:ë^&h_³õÂL'o|_è¨ðæåÍ•ÙÑ—+××´JÓušñ•Lu —vgÿìèsWµÒfÏh [\ášµšwGS(+|ALéî:\«‘º\°mëÌ®69ë÷š¼ŠM\“po5äàôùaËÜÆC·£E´#”n£qè[P«”`­NŽÌ/Ì¥§Y Eó!F>:`ŒGÉr–P×Å÷Á†W^Aíx°e+ÕXÒœ9¿ìà*Þ¥àÎ@dÌI»ûœ€¸hb ÏýëôºTFß:@ÆÎÍ5|u®P‰† ¢)$Ñ0Aõ"ý0ÅySµtÃ!ã[ I°C“¾˜gßE1`$ 7™3K“ÔѰ°$}Ûᮨ¬_)é"—:¬JÔRwßì øØ®±ÒÑxÉ^¡EP¡ä²:ûpŽîßA%¼h}þ“’xŽñ×…pöv8á…Þü§Eòw™?*ѦÑsM¥ìcâEš£<4rÕ´ '­$ýçå¦l*²Ëñ¿n˜msT§!­¥©¬³‹TêØŽ[½LØ+ªµVìäCšûúÍÉ—X8üò{*®SxòXxºË…†˜vÔ¨"·×ìSˆåĈEí·!_¸ÅX÷¾Yva«IóUekÌ¢xÇÓæQ§žR®†Æûó_ZvÞ¼\Å)¾XwíÀe£ÌRÅKCái…¼,~Ypk ‚y¯Î¿vÀ/rTëiD¿õ_çË(…ˆÎ^ԽѷøÔP~Ù¿{€€=µÖñk6˜wŸò¾“‚„0.„9cC‚Lrf¾b’›=Œ\YT‡¢âN$UÏWxõƒR©5dQ0ï©èå¹µl«Ž ô“¢3áü¾TeÝaæŒÂ#ù.Ù!½9>C¤¦XDÂ!(FÌ® ž”3n ¢Î ÙE¤Ð‡ Ь‡'äÁäA×¼(“¼&–¤U™ÎÚ% À;•ƒbƒ÷&¿6f(¯…:èFEâY¾ÞðÅ f8`‰kbì,ðT0çpoà‹7l¨ÉÒj ø€äøZdXÔ$oØ,¶ ÊœRm’…R£™zlma1•mËïôO*Ò7¥Ð-ên¢“ùV{ î;“žOfé/P߆OÂ0¨\†Vý2  Aw·S†´±'‹Hü[ç@ö–/"XKKÞ¡9[2Ù³Y¢5ü}¹¶e÷½.ÀmÞÝ…™–I­HóÖK¹7m¹K#²‚ï›c™Dޝ ˜.pád|Õ)ß}Pn~9 Ì5ظҜ¸g`”ì¤Ð]’ZeCB‚9õ2R´ ¦ í¶"µ¦ •’*®Úè, ¬ž›‘Ω˜ ä4ûrôÍ«4tx¦Y˜ CMÃq£4a>0ÞXòœð*æqþØ'FôÚåãß©ýeýlçìv•¡rK*œ˜ƒ`àqÞºa|ÓúuXá{SO6²giXIRpÕå.ô 5QoóU‰3ßR³¡.„¹k¿ù çÚ=²JhÎÖ§ì‰ø«Öhs•|‡Æ£€NÅ)#ÆT´cnc–ŸÚÞ–ó£ƒ'ƒ,éû#Ö;µê¾“ÏGrá^È.a‘3 ›‘¿f­ñ‹Vjý¼2¼Ä Ô&-)颸½”Ôå–=‰­²z>ö'’ÔCÆ÷¿¥›Ô÷—׃ùWa… ‚“SÁõ£öã[§þ^°âÖ½nôBŽ ÛA׮õC$d ­4T˜¯)¦Šaƒ]Ÿuƒc[²pÙ àä®å |w€{@ö|Q¯tùÔm·®ÌIRÔŽ½Ða²ü²õ¥9œ+}îy¾]»uuF}â}᮪Ϡ)—˜çÔ„ÄÐüKùdÃΞqÕZÑ^Ê\ŹHM†¤R¦¼N­’÷[ú­R(^QþK¦¡OêÁŠ ñfã 9íJÏÛ;(æûå )s>Êïp?Mƒb]÷¨1Ê կÕ?ÞdcW^{ºô@3Ç+ìò:/jH)3,ïšQ0:¶BܲnxÜ)ÿeº‘ÖËÀb+ž3ᇠízôƒÜ¡ûYKÛ´Õ9nk/4/ZÄÿ›£Y¤¥À×20±†Z¶"o·ä¡Ó¸B¶‹®w„d'òm°¤7°ØÀZ ‘Ò¾Ãl(›ftT^ %…Æ1i 8õözÉXâ $Û¬ÚãÐ#PJ m‰“¼ó« þþ`™/,OÕ|KÚN€ »lƒMMy¡;´‰àˆx2æµO¿€îzrE§m—´÷| #Îõçí>$,Fá`Ûâ|=''Ѫ÷¸øØQUÇŒhÜ‹>çš»5úìýÅÞ·M#[ÛޗƵđ¯Ãm›Ù¦ßE{•º$U¶ÿ™ºNžŒ™¼GWVa~z53}Á“ k;aŸ®è¾¥#øÙgµó6·étÅŸ¢uˆßgx¼{%wŽóÝ]UÁ´ó™Ÿl„TlÝåôYº[yD¥ ã7ýt’ À_º¡¢©kÎÄ x]4÷¤Ãüï Äx$âütŒ·S;Ô(d6Å´zÀ†‘’+f¨udˆ³¬ëô®«°?½.M6ñª‚R«ˆJu'޾Ö(EVe7P]LX @œjêP[Ž~àŽŸWîØ¹¸_›Öc¯6ZÄ¿‡Dó’©=yš·«¿/?0[¼¿&ç–ÙAz8O~û8`¦s_}Û¬#å Qýù(4t¤Ùj¼›mk«ZŒÅýgåP˜(-XOÈ1ö¨ý¼¼®D…»¢ gä>†¿õÝ;ƒZª<š?ÏF€±Gt–N,^TÝ(ëSŒ”í7³˜Qi._leãQˆ;öê¶«o OqÜ/ÔúÙÙ ©å3ø7n8·¾«>pIYŒX|Ô+Ü*+a†1|î6ÄË$kÀ±¤|÷É0ׇSb»Æñ3pH5Ü«­—Wx¬ûTؚ¸k6npÑÉí“zT9=ßµÛL(õBfFc ͼ®ÐS4€GG?# ~Ï S›†»UN¬èAæJŽå™ÒO‚$–¬nÝ7u#FQ¾Y¬Qÿ:‡ £5!ÁÁ{¤BZ5w…?J=7©QÅRwl{Ñ­ù)]3ߪ’·ñ¤ŽÛÐèæã©ìÈ÷¶²¤`WôPút5ÁîÕóõò~f迱´[êò‡°…z Ä DJ|µ2~B À±v`.Ëý\X+mÒ R'ôÐÔ‹3_‰eÓm’õ|ûöI*dy?Á¥aÔuWO Å™ª)ï¸ýeоñ× oå-ÏîašúÝŠf;GªiÏ+æuðãõîüËËÃhÔ†»Š-ôÜ WëFŠß&=dÌš¯ˆ ¹Éj¨Þʯ8®%0¦oØ;vã¾UðÓ–dðq2Ӗᮨñdƒ7)ņ×á„•—)¨¡è9æ™Øá˜arÆÅÀHà$·GK‘»XÀ$‚KþEŠ#Àì')?9¼ä¤÷u\ ßÝÄã¢í7˜ì1ä›6‹]ò·¡Î>¢ORkmlà\l <7C$Ž(Å™S#î›ù7–Y½duêþ²k M_ñ‚îÙ=ƒ˜,°àK¦+™ka>šT¸9 ´ÿ⊸¬^oñŠ‹'jÙSÞü\ßl‡Ñ6~À‘íDË LÂŽ\t’6wIwaˆýႚÅ• ‰N§`b˜®h¤o‹Ó0šú¸‰ÛC —ßã˲ýS~ÐýÎvƒ…\<¢Â™öcƒºx;ù¼×HKÌ®d¸EUqbXÙÌÄd¨:€={ÒªÍçhñÝÐN!‡ú©¬î¢`"`ÿ}¾Q6&M¦D„c¸L ßÍ¥?Ûþð¯©Sj54rhî—mŸ Ò³BWÒ'ìx½rJ1¥ÀÂI/gIœøªË…=-(Ã¥¨‚ \RJªÅ(ó0–tüÄrúZµXÿPbWó–@\Y|ËHÿÝ£“8_,²/l tòs*̨ƒÂŠØv©Î0møgëÕ7wÝ!ÞT§‡®ÆaŽ530ú$Hõm8\ù~ï9Ø„W€åÖfcýûiÔó†krúÏUËú»¢ýÔÒ¼VˆF| ‚IÑ!îð †\¦BÛÆvñ\³ÏnX'›âÅðñ쎿Þê“ãá^à[Ïû*Sk€\l‚Ÿ9Yá°ÊE‚Ð/ËßÏÍ9dåcN$(Í€"ÒÞ„!+/+û-v ä6àU/d]ôm/¯>xÊ} õzü±âѳ R¦¬‡»¡$¥‹çzg 'ö½þdH<³ƒ C¢+ìvrJ.Ô\ö¾M 䳂˜ÿ]%>ë™Y;¼yÐr[ ¾¹}M2Ñ-&1 •ÖäqŽîâù³I㹯®‚AT!S€µ.s¢L·/L‹s³€Ì@˶Úêy”Kwr×âBžÛ½Sb”é\B´ÐÁ‡ôƒ€ÉZšTÕ’R"ÐOœhLÓîà(ÂJ¶V@Ÿ;)lÈ]×Úa”îá{QþÁîuiž‹8 ºÕ»ä›¿]öã+l¬l¥”6^ÛU#—Ìø¤óLè÷¸óÄYQй¿ ¿Ìuó4¯{œm_-¡2®P8´ÆYD"òšG>‰?G"—+¬tø]:…ÒJÆ:gÆâôZ¶ÅfÃõ©šßõŒ» H‡”«E‰J¥¯ÏrV¬n¥c‚v;ñ#³€Ÿ>"ÚhµÑ;‹à;øéy‰ñâ'YqØ\Qå‰tüúWF&>hß¹7ÿ,M-3©i¶d¥ú¬fÇTRi¦,+ÿÆ'Û>ÉžŸ”øp‘z¡núнÀŽÊZUº2·Ñø2y¥mµdïg> èý-NŒgûzX¥‡tœ£·²ÊL+.ö#|òbjnæúO«#¾€Ú¹^«#Hqý)–È#=…W¿ûåñ¸@ú|²g®N”!³¥4Ÿ†gxÍ£Õ{–)zk·œD_á;}’‰R;A]£ú‹j‡ö´ ‚aapÇýÍôGëe½öp\¶gœ´P«áT®OJh'`"Àª ‚…)Æ)![œfê<è\ùKBby_6²P‘jX“G}›4òøg ¢«õ±;§‡¾뮋_ºRÅÃJ TÖo}×ä<›9y.öe&‘&häVëÙ}"‚øÊ:U¾$€ìQCÎs´†Q‚]$ÐJƒœÐú©!ß 3µ*ðdYëÂĨՎ,G^·fü­Çýì~nðûܨ<·d¸ÏjG!éÍR³^2#Û¢æ¬6©zú›­ó÷ÁC¸¨Ö…íÌ_â ëаŕ¯£»["ižÃ£{G%À n…C[TžªüY¨µÀŽfjx ˜mño‘$PRÁ´ù—ØÒTo¡»kãŸP²ž“;wÁO¸é/‹Ñ/ ñtQJöXú¡±µO÷$ 8ÖmÈ"‚~Ï@ß@±˜.9)›߬¹d¿KÌ HTp¸EâÉÊÜ™9+­âP B.°òŦ¥§™:¿À¯@ÜMçR㨘Ѩƒí¹ë ±ö„Ñ4ü•Fóx Î4K²·‰™øf´1)»óò‡¬¸@Xã{ľZ’îJk&­ø0~ dÃ_êo§ù÷ZËãÂ÷Š~GoO?ï2¸Q5ñƒ ðÖMȦwYÊËlyéÍÐ(TŒÁ·r_uâüŒÒvqGN“.ž}åU‚!ª™sh™š`a.‡{žrÝj6ɱ<˜‚[ÎÌ‘’ö(ÔõœeM‹ØlQ“œVƒ Ò€81W“=w¤[_¢‘ÕiËJ}dðx¢ ÷öFøÕª¥¿¡ßêåÄq‡zà㬅 4õäÏõ½ÒíNÇkº½¨º©‚×Ñv:’+”çDÑþȲóî¤]¥3š¡5«Z¾Z9Èu´Ô¢,ç 2`%\oæjþIŸaì½s?mUGä9Æ“¹IM/žFŸãP‡ásäÊ9bq"…°èL¹ý¨Ó7¬Þ@¤¬r4ªüJøÑÈqSÍ‹@ªMz‡³Pïèó¥à•#‹~;ÍçB¢xE嚌·øÅ=ÝÙzÑ>Ý?Wت/´a-X°µV[(¿ò½kn†FÅ…˜þ@ï2ÆÒëÍÙ o†ëˆ‰ïZè@€9z ½Sbb°Ü÷=ý-k² @²öT Ǿ‰¥€#M3*âƒ&+Ô ²¢Š‡êtäÛ ‚²Š‘ö‰Þ"Ø´¥I-Pªá¤þϲ(åµïÞ©¶Üü?Tß-¿Gå¬ÕaÎrŒ†wž¨…Õ"N L”£ÖwÅÄf©QÓ÷Ô8 ÅN®ðŸxÛ£­ù/'õ0š÷þ;ž§»†©·h4ÖæxüB˜a£oÒ³z·€…D7¡L¨[Ž»Ôs‚¥a‹fZN>4÷¢)™gÐËèç;Wß8Òª´©ÒÁ]6ºS]®,}¾ŸÏpŸl© :ø°Z‡[·Ë÷CÆêý?hO]{ ½º~ŽWdÙÃ\7«…†)¸ã5²¢¾0ÅžHé‹{;ªÓqž9푈»’mÐ"·Å,Á?$o—zó#ñ.ÊÉú¾è?·4eÛ7Åy^ÔÄôÐ׎VÛDHcôµ‚’¬½1‰ƒ‰|rP¿€ˆä©4÷0æ]tøW9[dd‘D“׺´Âm·™fiíX²|¹è3õÇ&Çk<û‘SS>ûvÓÜäžÊ”Óñà‘Œ`ª@ÃצøÞ€Ü¡wÚDeK•|î<½0#èêqÇ«¥›Ñæ<¯/ÿ"¢ü¨°/Xíi–õ™d"¤µ{6ˆuú£‰Îîß+±b?\¦·-<žc#‘¦N=ÕåXOš¯^ªÏ)X±©÷ qœû0zµâÝ›´ûãµ`•çN µª®:G1JÇJaØxT}9ñvô•b©C‡B´’Éôkn²úøžÓò[Ð37ò( D²ù[¢IŒ?ïf8’«Ô—Fø6Ýü’èäRk;ÿ‘Û x•¸÷F`Üá‚ ¿âk  ûhsT¿c¤¢ÍãÄX¾šÑ|´8 ɹŒØ[*vÇ´@ý­.ß1YJ®œ¢ƒÙD’ˆCå]¾*Ì´Þ‘7â è=ÕÑäúÕgˆ´1Ú+ ƒräXûÛ“ïæ;;¤Vx¥²\.ݽ¼u±Ž˜Sx3ECÞjVçUÞHÞÙ†6J*¡  ¢ÆÖà“/©yòW»ã´@ü-Òò(!k-8wBTgÜÇTÂö³fð 5¤¢b × +tÔ<¦Ñ‘†µ5zè`#bÚ~ üTçl4L&*ˆàÓÝÇÏ Ö™û”… …ï\L}<„b¸â¡#„‹?UÖUY‡$IÌ)ïm•£TÁ€µ0L;5ª¯ÕŽ¡%cGyßÙºï30ßr¾ñÁý±ÌÞU“¦Ní]n¼•f銥¯¬aHÝ 2”P¯ÃŽ:ºÃBØ•‹#û)ƒ^þ-yjÀ ó—˜ûT€[Üv;}7sD°½0M£sý[©Û‘céUªôt!!–N\öïo8£xDæYŠPµUºY» ³köžë/ ;Å1W5JÁtÃü¤Ë¨Þ–1.ÕS:~PIXKÃyB›Buˆ\vµ¹'ø;~Í:Åߦ0›‹ <- ëàÖ6ØJMÕ<&Ûxê¸{²Æ[?¥­·”ç«V$bù¿4úë~”:\&åçÕ:¨!ÔLTE(ˆä ´ñqɯá¿|såoÅDë²$Í´øHw]<÷9†¤T%æ'Ìüw,¹M&z9>d*2Ôe¹_دïÛ, § úL[à*ŒŸâMOñ¾úcKŠYA§2³ÛeŽœ•†g!fA8®É@·$ï¾ù»8ˆ|ó_-5PÝz麢/ b´›ƒ¨Í*­nx»mÑWºË϶:¾L8I—,ÔúIõeí"¤g܉û0j8ƒê4.­ARXmr{ÑtÍv¢¢_WürŸ¬A”Ær¸ñ†I^½7olH5˜^B[µÜw¶iR½­¼¿´¹òctQöh_[¿2€rœtèt|ÿ¦9nô€p0yÕ0wUÆœifgÛ<¬ ÑcB3(³êI„>¡é­{§JeBQÕÓíŠíqÀ _– ¤¢GmÑnçº+ ÔÖO×ê9/Á Ÿž=ÕÚãn†GA:Êhcg"zÏõpá}§ç7`Ëqp[ „ž$ÌÝ.YŒu³îēȘh ÝÏu» ÊíDz僱]ØM’2sé7|›¹Š­§ˆf‰܈QîTûúÌKÚØ…Ëms vRëNꇑVnBXTÞÈéùô› ü<®ý§$«.˴߃+úêÎÞ1m'O-¤GÆp |Éb¬I;\Ñ:¼*£rz¢lⳡú‘©¡/ë¿GácÈ^˜ð¾Ç˦õ^; Ö<Ûòú“`K†ÎàìG|«k˜¶æ“/ÀØsHÞ L„³M´"A:ºOºŠ - «l3Åà“üüb)[£®¯jåÔ†ˆÌŸémœ¼ž( aÝÕ†×Cw7|aØ’—Ÿ‡Màtªèº%ùqÄzü‘ Ä„¢OýŸ°hRë¯`(Í i.ôºì€Go1cTÇÍÂä ¬:ò¼ë‚Ϻ§0ÛprÆ•­Ù·”–ü•d˜Zf)Jl­[2k5‹ »wp#c¢$üF­GÊÚ}Q¬[oÉ;yÚ‘¶_ó£Góé•dÇ1¶EÖGÙ8Þ¯Ã?ëß­*¢ïT>ºó½ƒóeZÀÀ¿ìí>BæI¬çpkŸ-'sòYB^ÕÝUõ” úºjŠLþ¼VnýØ©Ù[!Þø!¦ùYið%&ë6`Ç:Uƒl¼¦´3Ëç]\ƒ|T”¨ô¡5‰²IM§7aÏ)d¿›$sJ$Rú²}¶ïÇÌxM¡°7~ÏüB%º—ôÍÆHnQ®aóã°(%~)»bfé\‰\Kß~QMväõVÅ/¾ÞQ‡´»à¾”%)L™%ÝsxåYS¥Ñj•¶›H”7q`[^–Ü«½OV;AŸâ줱\w_̇|¢¦ N’¿nb/½F44-¿Z°¸4Ô¡)H=ÆXpS×q‚çõ‡M‰Íé]Û¶"žÛx“ïÕŽƒ¬f3Ƥ¼ j–ïc‚ʤ“H—ÐŒIšÁþꇊ°#‚"5šÍ®"%ŽßÁ&X <¾,©ò=ì¨ÒÃû•˜¥o±ðò tªjfS/z‘¯ð |7ßaÏÓ¹NR@’z·bçtŒÚºŒž«ýòŠ4cA™ÕÑ!“û¾ý­|ësØžq\;QWü éÏ[Œ"h=ˆ¤'å‘Uƒ÷æxó¿ÐMð„ø®[gq6ý®Âmö[²3‘ª²dùø6c‚q D”¼{A^x¡éxxˆ G•æüý[KŸ˘Až"ž™)0Ñ ¨¬ù‰;HÆ[ÒéÌoõÚdäÊyjßÂ~¾ÒWíf› äü³j‡d™TµZËæ§@'>É7D-Q'ûØÖ“-]E|Ì™q¢aÉ^Ö®¥}Ó£‡&Ú,wѲŠ[B}¨µ£9³;ŒÕ7…J‡‘0¦ø¹‘\ Ï•ÉXyÁÛ F7ˆÍMĘE4βÄýìáPG< ˜¼ÉþÁÁýý©j=òì0?§5>µ@²ÃÆxº$ÁkÙœM‹ClC7Bt¿½em˜­*ÿÒ+ø b¤Eƒ¨›†ÐÖmjÂ*™ð¾wòṡ¶{‚7 N“@¯'*‘}Wï“ùا˜MGçäÀðôžƒûšá,9÷oiÜà?P˜3iäœaÓ1ÞX–±TŒôK…é3 uÝÕ‹õõZlá4¥¤²×çнæ6Hø™BòIŠhÍk2R~ÀÊR® ^ (x®É ´ÀÈQ0 åšœ"¯L‚þ|ÝgHþ$×x»U¸¡H·-)†ö[R_3K¤ù€žXæ¯:û1hôé,~ bØGOjèôùüÅiå¶û„¢KÚ7Õ¦Ò›ƒŠÚ»æw•‰Š OR”\ÐoŽ.ÆGdž¶E¸ó1§Àè2C·^mîz±y4«š“B䨛}[ôƒìéÏcbÂúøm£7«Øp•$HÛÔ[ ?5Wydd5Ê´ƒ´ßw®2‚ò}GéFÖ×üÓ6‡JŠlG¡ xêOŸùTÓdätÅ‘‘£ÊKKžÏè@ö2? µ;ÒšŠ¢‘ѧäóJ1Ò{?ô’%º›~ˆÿj‹Ÿ¼›7MŽÆ.{7¼‡íGøí}Qœž…zkFhÿ­1«Aü¤­{ÇñKB½ÖìQHYw±Ïë?ƒõæYÃÆ Aí‚¡ÙÈ’½>hó7åjã#Eœ}<×ú]Ð"êô”?¯Ä¦Ü%)4n¿æ @™n8æ@9áWù`¶|k³µ¥g¡ÍѨëʤŽ)dÁ™Úqè[hs g¯C–2Ò©ª±Œwa|.ùf=%ùuÂ-<÷y0ÿzW œ¡bâ´°×@†¾Ñ4twäÉköÇé:u(_Õ÷n~zœHŒZKÂU²‰OLõŠ)×UˆÆÜ„K‚gyÇa$$çlœ©GÎqp?Þ$Ž*œ¦R„[}ý²Ù=1Ó/‰}Êg‰‚¿Ê¯” ‰P~ O—ôÞv#©E[Y óQÚ¢âÐÅwq7i!×`‚2̧"SËF¼Ãôløås&Q"ˆrÄÀ©íu¢8?rês^ó³‰í‚ g©zöwî¤\â÷YëÛ,8Äõ伃_/šáªU"OQà‹—z¯lVü¿+È•¿ê ŒRíâïxK „`óFdˆä0I‰…§e­gÙ¾ö&ØÅîÓ:zf!ŽÏÛ6<}0Iìþ¼<º-ÜÈ#¨Ž£áw[/c<|g¤ÍÞÁ¾ïꉤ?&ú¿¤¼Ì}^Jа ×GB϶jŒ”SŸcMAMâçÁ÷v–ÕΟæï¤à\Câg4O´µ#ŽÅcèû„i{Ðq!‚¬åB[êh¤Dàʪaü¥ª’†hm>½ŸWjàÓñKÆ"GU뢛”‡S}Þæ 8£¶'ðމà*.Ã~L'@Ët=¥NíÜꦜàQ7µÄ/®- ‡L3$æ gWŽøjBŸâ œ¹ÀM4’*fdúUœ1…Fšó9BÇß2/ˆ˜Ì@:U˶*ªŸCuȘ¾ÅfD«!>î!´€n+e}4.^²ªLËð¨#6N_ð~ƺ(’o4ÒÔzõe¾ƒ>†Z­KaNµA·ž9–hŽA±LÛ£BÆM½Y#«èÚ5ð…=ý \“AxãÅ;À¾•ÑŠWøÃñ×~‡‚ê^@¸HZîoo\kÙ®æDŒÊ~¿ÕÒèIËýñ·^ ¹_Ý9~àtú~ûô¤Íç¹ÙäÑÖ|—Žfëå2†! :¥[ʇ*%ªj;4þýÚH©š+Š­cg?C­ä—ÍÝÎzµsà¶H¥qìဴ. ö‡ˆ¯&–È6šJ¥—SÌ¢5›¶UoNÙí|i‹Ìû¨xu9Uç_Ð fqo¯nkcÆOùvxÅàÜ›PºÝêRƒfxó=ŸxЇ¯ñoº¾JÁX¬îê8÷Ë‚£>½D4 ‰ÐG~5·ØuÆÃ©1S¼­9Ñ5ïA^#îMø¤±±¨ÌÔ‡ËHO@'Qr¨)Ùñ ˆõa‚Ùé)|–D­$Ë_<|…ÉãØF¢]ª(Ç‹ÍÅ[•JÄ \%æ. ÷Oàþ¡ÂL\ͳ‹åãO=VûèH÷ðs 4"ÖC3YO`‰C(Ñ…Àê:{G¹+üþh¢DkÝÔav ('ï,àå4³þv(àSžœ/Càj¨èj]sŒ"Lƒ'¾‡çñ'!AË41€¢ûùbâ=\ýÉÈô‰p_«Ë_ÀÖwðå÷Ì .?)ª½SHÚZ—ˆÖ‡êHcü¾Êù,JŽÇªÈÂû©xD›NAÛ0c«Až#gxõ§7Õð]G´Ó­ÍY (ï¨9@y°ïAåf=:¢àã~÷ñjó•WךW‰«¤{Ò5å2Ec°àDpá*yÞübÜme—÷8k=„ܰXWHÓúÀþÁO¡nî]~$/,kÖøÃ0TÈUZk£Õ¥z‡vo^°ÇÞq•bWóG|Þó¹Šq¡caÓu2ÕŒîŪ¤KÖ)w®ã %ÓñVÙ“1¥Ç*¶kãØWc!d\ú™y ª×ê\fXCÒKî4´ÌŒ=˜É.¥l# u$½cú,OÍ%溆ú‘ÑràY…ÏÑUÂˆÎøk~ ÈQÞ^×Î7“RPä}Ä£gæ±+•ê*²¤5’'F„€ÐµÐáÂŒ rìO•‚ª}Wœn8]]*ø_Õ¬F$‹ì³IÈËÕQØ”ƒµ6ÈZ?ÚÀ–XI™KOqêØI¶@bO*÷"—rÎ iw|ȯc€L ŸAÒ`ñ·Hâè§›ýÞŸnAk÷ÿx²Ì endstream endobj 169 0 obj << /Length1 1873 /Length2 11690 /Length3 0 /Length 12855 /Filter /FlateDecode >> stream xÚ¶P\Û-Š{p'@ãî.Á=@p·§q—àw îîn ÁÝà Üí‘sÝûÕ{ÕUÝ{¬©c­9Ön*2%U&QS;c”Ø™‰™• ® ®*ÎÆ `eå`feeG¢¢R³t¶ým@¢Ò9:YÚùÿå"î:¿®I_=ìÀ9€›Ÿ‡Ÿ•ÀÎÊÊ÷—£#?@èji P`ÈÙANHTâvöŽ–æί…þzКÐØøøxÿˆÚ‚-M€`€ÐÙdûZÑhPµ3±9{üW ZA gg{~777f ­³£¹#ÀÍÒÙ r9º‚L¿I¶ ¿¸1#QÔ,,þcQµ3sv:‚¯ 6–& °ÓkŒ Øäx-P••|°ÿã,ÿFÀŸ»`cfû;ÝŸÑ¿Y‚ÿš˜ØÙÚÁ–`s€™¥ ðAJžÙÙÝ™›þvÚ8Ù½Æ]–6@ãW‡?z¤D•ÀWŠt2q´´wvbv²´ùM’åwš×}–›ŠÛÙÚ‚ÀÎNH¿û“°t™¼n¼Ë_çk ¶s{ý Í,Á¦f¿‰˜ºØ³¨ƒ-\@²:½.!ý³frp±òòp²²@»‰Ëïjö ?Œl¿—_YøxÙÛÙÌ^‰€|,Í@¯?H^N@WÀÙÑäãõoÃ#$66€©¥‰3Àdn Fú'ûë2Èì?øu-ݺ¬¯È`ýýùûIÿuÈLíÀ6ÿ¸ÿqÊ,:RJŠj qþÛ*&fçðbã0±s±ØXyx<¯>ÿçïø‹ý«J@Ë?»ûWBY°™àw…ß,^·ï/&®íŸÒ¡üw E»×™hÿ‘€+«ÉëÛÿ³þùÿ›ÿßYþïøß–¤\llþp ýÓãÿã´µ´ñøÓåu¨]œ_¢`÷*ðÿºj‚þ#k©¥‹íÿZe¯B›Ûü½—–NR–î S%Kg‹ÿLÒ_GñšÞÆ R²s²ü}ñ˜ØXYÿÇö*=ë×ËÅéõÀþc:½êÐù³ýA¯Jûï$Á&v¦¿%ÉÎÅ ::=^çáq½ŽÇ«vMAî <€…lçüx¥ë0³sDú}Êܼ¯3ö{éÄà `‘ûqXÞÿƒ¸,òÿ ‹Â?è5‹â߈—À¢úzÍ©özÍ¢ñ7â{ÍüñXLþFœ¯q¯7Ží?ößûÅbúd6µ9‚œ^/ŸœØ, Á×fÌÿ_³Zü ¾R´ü|åaó/øÚí?ðU,àÁ×Bvÿ´ûêûú^ø—™Àbÿù•·ý«ìþÕÿ«zYÿ_{ù¶×ç¿áëù³8»ÙýËüJÞå_ðµ¼Ûð¿ÆÃÄÅÑñu~þõëìü…ÿ¸¾A w ÒÒ¼‰@U]PÇm(‘Óθ ìIê­;Óx‚sŸä´áf¼jfÆòû2©¥^6)«NE1‡Û¬µ… ¯õ¤ œ×L¤Rûæ¤Æ±ó/׳ ^7oÉçÑZ r5“ÅHø‹û ”ˆ#п! ›š÷©R¡yÓÔõ,&¸Qc—HñÈw(~ýVS’!û–OãhKŹÕxPm‡ëŸ&{Ë6&p;R/,E1ü½à×;¤x·jôáÁŒ^â®9×€SÊg IÁ·œðÕ+y¨ÙÅ®‡i˜^ÆÒX"‡¦}eŒX;Þ Z½ÆºÆà¿^¯0]°äçã‚KÐzêpLpš"ħÆX¹%~ž*SZîtxÏ"XJÇooÏ#±ë*{©"ÂÔ·dÇ_Zv%/È“_‹“r·y &Ü$z’G - Ãj!Zgç‡ZeÉ $¢»éáý©$^ßã|Û+ÂT¸^tqqàK×…‹à t}Jœ¬/(!ün%õu³YÊíWŸÿE^Ò=qhW` ww¬4¶1ÓD'[Ãs…«#Hxøþ³ —ªšéÉØ-ÅB”¡b²Ôºî:2«{óúc võ‘N Ö‰\Ŭ`¤SDÃPÏŹ ¹Žiׇ9–ë³øpÛ×bSÑÔT IØ'[Lÿ˜ Ozˆjj*³ü´@Â(f G(lëHô››š†Hþ„A)-¥1ùöeÍN®*¶49oèñ®_ò8ºÒ6j>2Æ©ýœÏúA™„C“R©žuÊå’… w4ÎrGÑ …“8¼n›‡-¾Ÿ’qá>a|f¾a0á ’K}»Ðÿ«û€lc{}}í\&u =É-ìÌò±çÛ×_†X(Œ·jÀòöˆ\‹ÒŽ• ¿jNúç†7'3m´fœÕ7¼iYž+ö ‰‡™‰—..5ÉžAè#!1Úzƒ?Ì|ï’ð·5¯v”ÍUÉ¥­¤OúËiOWÐOy°°’7çõ1Y]±û”º™–`‡Û-µXrІQð„hÇ]ZíÔóÞ]EHóžù>§KŸµ´w·q Yí²µ6Urn©²˜h;G¦¯°eg˜æÝ3²"Z]q~+ž=YNšÚ] Y÷b ¥ZÔÊ×T¬c‡wSþ®òì!þA2ÈXÁÕ0ÂD×ô³»s^å E‚@F'vbH9/Ú0ºÈDDAê $ ìig<Ô\­AßÞYËa§ÇúÇûxÿ¸”Î}†‚0§ìïñ«šÉ«²Õ g±8šZ­*­ûÅYô*(ÎÀؒѱ™M#NãûëøS†Ï³ØJí·,FƒÞGûX—$7U®)/œ- Nõ·$$¹¼*4Þó½ »PJIÂHTA‹‘œ-ÖôèÈ~Àç·îÉþ˜¹ön  | ß«ç>ý ° ‘œHqáDÃ&#åßÛíMJ]ýd˜Â…x¯þ5äPñ†{ë\&ŠR2û™y)gàÁªÓRÀî£gtðOxš“›©<_ÎêÙ8WIÞ)¥þ=5yµb¹wUoet:Û¬¬ÆŒåÃoü×…CI“ÑÕ©Bû¨òŒâ"¶Y¥z¶™Oñw«iKÃq¥3o"¤õ¯K £š ·Ibt¯\ß ÇÐ\½TŽXzl½Q÷&D‹‘‰_bŠÑñb¦y½‘õ’ÏÄ'^ð£ú²G1i¡Qž™ªáç§'DñÜ~3òVdá#!¹7“݈!í©ùZ—Hâ [®PþœD©`íØ-ÈB¯IÚ[a…5Â|&üEvóÊ© ôy°iK%¾åuå×<²ÁŸE¸Ã§ÒÜŽ>Æã-Ô÷ê[y}ŽäúUóQ˜° KÃ×F¡D†=I‚PÓ…Z›ÇÇ<ŸIྩ”wú°ÈMræÚ¯‡*$K™¸FʉnvcþºZÆU—ìŸ+NŒÚ›—Ü«b6Å0'¶Ï{ LÉtýP‰^ŽçÖ¶93¬ˆ .‰7³>FÛ±6ª «NO«›˜j6òžI˜eñçß(ó¶³x®X€Km‹»Cûš º6ìÀ‡œÆl/äÊqÛ¡L Úªjƒ'œ¸z•‡ø¬ ®!:6&È® 8²fF–õ ‘™Fö‡šoÓ°TÑÊýÎìBKé¹]¿³j-9¹ÂLŒÎtë´ƒ]ɲ¥ CãF ‘ß‹–}`¨4* fâ{<ÁDF³l¦µR­ gœ¸ŠÃ{GÚé,B8–OÙQ…ZàDbQbéŠëB{_n t.C’—±÷˜$¶28–Þhx>¬ul¿Ý_þ*ω€¹øÅ—díöãnJmºü§9Zþkr<¥|·2.MW-‚z2ÙnBî¼r7–ói\s+<0–!#Hµ†Ó°öZRü(ôå[œ€¾÷@ÁiY›•Ø\ò|»é{ÝÎwfo i´]Š×4§®¸åá‘0ò•øiÊj¬` ¾aé?U ›cynÌX%£gO·ßB¿v¢€¾‘ÝsÌ¢¨<°EgJ Dâí¬®Öʺx8§ô{+Ãø7¯G=ëcÉP[¨´µ9§QœU4wæðËÖœj}ôb­›žË¢b Õ×LE9R o¨==^b‘ EPšíD<Ö—²;D»< ºõ÷ÞVw×»Àu©„ÃÓϬ€0b¹p®ÂéQî> (ÙB ˆÕ•{˜Uº2_¸0üÚ^"ÈÇõ3k‘çÚÐü!ÊšóÕÿAÀâè?{’©¯Ïb†úÆh²áaÅÓhDŽÜç*馑~>å-qñ®L4'òІñæFåªÛ]Grüä|  ÞÒ•xCS²#žºE¹ºà%þf·.^c‘eÖÀž,«ÈzŽm8=oE`爡Ù#ËY‡öÎ=©|U¹ wjï—*ð\¥*qR@¤dœúéõûQÃe;ì©òémü-˜n$Ã9Lˆ²É˜ôI-Ñ+¸“²”«ŒÌÕ0\>RÞ±ëôKÉëûH±qFT¹}e”ÜŠUõ ²$“6'ñÂòJÉX~(:KQä3ø¯öa”†ÙoÅ™ð¥?;@n7âˆ=ÃNÅŽXÈ¿ÓÅH£lc®G2c½ µÐð1=ÅnŽG<-ó,Œgl&~ 3Ìf}G#r2Ø_/˜f­½ÿ¾qQ« ˜*¸ÿLÄlÚ©ªVm‹éœSà¸j=ío²«á[×YfcÿÀ@ ðeoï[yÜèò¢YÒgC\ã µAcìyšâ§‰ÇPÅP¡#FåËýš+$7Ãá©Ñ›ÍRU:}l¡)¬\’²òFáöikF–áýOáK .‰º³(,ù×Rå…h‹ZrÙƒœkŽ# Ý×PÖˆÛ^çÆTk(•†?ÅŸ>.’¹oÑ>†<3ðÔÚ¾u—fW¶KXEâ' ¯V5»’3«ÖvíØþ\¤ýD\`¤×}ÒR/Ëδ ºx± SÐÝã­¶3ŽÐù1oØz_µKûÐÊØ+0KZ¢shÐk6ƒGgÜp04Âûå‚gÖIÝ¢S.Q ¸ýS‹ìAäKl9ö´·D~ eCÆaÓ5‰m#?Úï=91õ£~OÁ™ÓÌX4¶yÜgktdîø“ÝÎüf÷ÞuQ-}‰ÚçìÆÐËgJïîD;¶);*äu»Þ_³´›ääT3|#ÁHrCúè™971³ÕU M6ŠK2‹ZV »hIz¯Ÿ…>NŽayMF·”ŠºXSÁ^)éd—*ÝpŒ3æx—;Á½.Di=ÖÀþºµ"8…úUE ¬Äï{Éþ6æŸ`XçÐŒíTŸº•g·dê„RdddÇXµX,É&—0BѾ*gȳ…Ç_¡£ŠQ2Ðõôvhf{bM%´k<2Ž{¢›Ž ™ ¦ª+r¨èäŪº‹p¦C*St :y}¹ÙøNTs͸%Õm:óèôÅ-3̨³”ëÙ „Òà²ÛC6cljºç³ëÐPg!g˜…ŇÚª}ZWcï:iæ âc²²{|G™^â«ÀÊcòKÊ?Ñcœ ‘9g^‰Q¤f47®çïQ„‰e¼,ˆÅSv$ƒ.>qÎÎh‹Îê$/Ó™AÁ¹ ˆœN§@p©…G8Ú=ÀM!n¶Ow íP³f®úÆûÜøéâDédÞ8Ÿyº¼zÒB¥y°-°Ïß® ®ŠˆùYL½½WmŽ jì"«°~š¶ í–qn.fÞýZ/íüMŽ!¸Ž›RüªKX(â@¾#¥¸2«—zl^–·|¿ÚpwÚÏbùQ$Ö‘Å?4~½ôhÛ¸áSÝèŠpÿÓ§bõ)8­iðá—F$‘!µ¬m…x·/ÉoQ¾Âfƒ,ZjZ¬…¾‘ËÞ¥—ùÁü9/wó‡ì-C L­¹êBÀœO߯µàÅA÷JT턈mX†ÊC]WÉ^Éñ% :*›/(ØG7?â Hà ÄeWv+ ^ZÎ|M¿°xM][S¦¯rȦ<¡”A+ž³w‹ I¿§<ÊUî»èYh(›’·­1ʧî.Y!¥‡êíï¤?ù<65ì£AíY»:ÝC¶ªÃ «UÖE (ÞîÆq-%Ç„^2 —z%)xCøÁ_˜^I•2ˆUzïu¥@Åc«6Q}\6%½¸·ûv€ÌuDJOŸë´àÚZa{¬hÉõÖÉÖ.þûÚD¦•krCÔ]ÀÚ ¹7\¯ü1Y rtNòÞf¹;T/ÔnXSŠZ|ÌÆ±:yLŒÕ°CÑÕÌÒ,ŽiâNÃæ†ðÉ^óYìè]1ÅI?›$ñHÁdnHp3˜uè>cYM.£«¯·DŠÑǯbGMÔa²wiäIô|¶z­^ùW˜4·‰¾ÖâMìgÏ¢±¦,c¾R®³$Ç›F½º\!–‡6ù²1¥‡t„º;±'ª¦iÕò1õg‹LïØÚé S¹<~èïÄ"w–ãmwгºÜÒ,ߨ¡·æØG4d8ÍÃWMº…h]–T(AÙ˜ ¡e?øÓ¾ú=\UrÇú7ºú`e<ÐE°\ÛtLXcM8V…Ÿ†}ÁŒÈé Ü%·–¯èqÝÒ½%ž#‘ÍGÃnú.Rí: {l(ˆo­,ƒsF®‰gÆÁœ0×M€Tâ8d“¸²zÐeQ/aÄöžwô%™åËŠÇyHå›´åǵ'ïjßùÆ÷/Îz±¿ê{¹ÀRóaé.\–vŽ"_pë.Íñò*"Ð`ƒá¯Ùß¡ém•ᘮúñ讆 «íÛRÜxUûΜEU ß\”²#i+;Ü×ËU5.O”‰4ðBŠQ¦ÕŠz ªè'SCs”t.žM“·mI}Ò¡u´ b/4—é>«­D©Z! Òy˜m™n¼h“ò™Í´¾ÁaßCüPæ–Ÿ°§Usèe~ìš›\ô%Ö{RžOf¸ëì÷­"ÅÒÂVÕµ¼uôjmo6kÄÙý’ûŽU­«sê]œa í;Ëm¡º\Ä8”i~µ}U¯`©ÛZ¤yw¸Z’ŸÜ"Å!?¡ûs M½‹ÞT‘6WÐ?¢i´󎽺n:ÊÓÔz©I´÷›ÙzÕEU²CîžpÒ¨i™øë`»f îV5{ Šû^êXa¿6={1x)€iM° w¦T…wp‹ÏëÍû:Í{¢Â:÷{ƒ…‡!•c«‘ØiŠ.ãó–$àqñ 2aäf¬Ë´«R„Üó๼ò €©8ÓbìÑäoÓ„¸yìÕcºØ)ôÂ~¾ÛjAC˜„jÔla1.òë nÄö)÷ƒB>g^Å ‘HVÆ5`u½1ØùzLÇŠ±˜P'‹³n³µ\˹ٙ-F¾…Ýæ¾?׉IÔfE³KÆ-D æ7Bi¥ÛÅ<ŸÝAh ³ûVÒ! 3xw!”wÎåÈuSIî™pGw3ëP©TÖõ¡YK~ßFñT08ÕMvÚ4å: ã¡d«"4A¤'±Û`eJùºÞJ±@:gH/ÑÛW¯XŸâ¼Y¹ßœ(AN¿ öRÿúZ:󌻨ñÃö=ó»ì«½¸íª©ª“õéHî1®… Yûð# %?Æ‚±-iI×W¸î/3aG?CKÝÐ&}‘ù‰‹’û›L).|m ?J9‡ ¶÷åánÜôÍ¦ÞøôM¹¹µVZ&Ñ[Ýöç%šÐ•êÑt}–þüüÈz&bE3å«[ßÍ6!`Í:/`FkJŸ“„˜î˜YáºÚ† 2I0}£Ê^ÔPîLüÚ”Vê.B)&oÉ„xª9ò9»˜p%y¾6i½¸À$· £‹Í~)ܽɶ¶b´¨%†¶Ú:?œ:nÎñ§ŒŸ=yc\Ùx4v”1»í"¡Tj†³/§=‡F–«%àžÇìF’ŸÚ{@áaÔÓî^ 6+«¶hô9ó°4„(_5ì6v¡TºPsÛö‚~ SÆÛ¢<_ä‚9Ã-^’ݼzqÿGˆì@„/—Óã\¥äïwÔ%V‹o‰ŽfóS¢$\«¸a55šËºS»]³Ú¯°`¶Å3©V8 h„¾g¨;XL¢…Õ×t6ÞH+)GGûÙt”rOÒ}Ï] ‘qèØê™2•ÁýBWÞdhàÈæÒ¿¸h!z@†ÊÅ$±XÇW%¹»'9„=züÉBºÄ²––UØø±öÒ_²RS*úT¸~åꊘĒωGèøO .у®µ:à‘A ¶r4V|ï•Lj·5 ?ö(Y"½ƒI ŸüÛ$Ž8UÂ5wÌÇBµÌr AÑ´˜úu}{ã€v1]õ´jWứ…èŸyíúUÖ^:ø`ÊýÂgns—Ã$kÖáÚ\þ¥LëZ€8 “y_m¨âÍg¤Ÿ‰ßYÐd«;0 SdÏ¿Æ !IFØ%oÖYûÖ‹Ç}×aÎYv‰iá^Y™/§Üˆ[Õ8ê41eÓ¼­9:J ]ÅDo3sÄR}2·o=‚¦dË2QÆNÙÃD’"æÕ ~Úg7åŒ@öc3ÑÕ’_ ¡àÖçd²¹¿Tˆ<‡×!t‘Þ…Š©‡>ó©†ÄøÌç áá|eq;¨÷8Í#r¹UD”› <1z_Q¥î8•>b]ðK8ÔN…Bà¬4Y[€›+¿ºÉñµ[KMþ&¥UÌTÚl½ƒ„VR2½íÁ Ò½ô⨽ü‘hÒ‡ÞG?1Þ§5¢8vñL8Hz¤/v‚ E!MǦ™Õ¿PÿÀW#!<Ô¼RŸsO À/é=Xþæ Ó€h:@Óñ0BùÉ5FxE#U ¯ât^ùÀgã‹~ö¸ ,Øu¶òk8Ìõ˜wœy¶9ŒÓöŠÌä¯"ÏuQstòÊ#b…æ¯düQ±MÕÞÞ )p<Æï•;*Hi$¡|v6+š>.lˆI¤œÚ& þ,¼‹è¿'­™7ˆFò$ƒáÊ!Θé>¦›àÜUÇvñšÛ©ßÇEŠ;|ÑáËuSx¹_¿I³"¨@S›Õ“–\ª 6mù™bèw¬O¦/lÒ#ñGhÃ&ûØ÷èA$Ì, Ê¥©Èµ§.}þXWŠªXж Ò3¥öÊf*u1½à3‘“¼3”?Â]2`ZR¥Æz“_šœ=®Ñ…PZKû½•HsN…/þ`¡ˆŠ$L‘_i}»Ë h•ÛàtÈœèÌ mƒÞÕ”‹‘b_ó˜,±@l!q)ûAÆÍöý-Õ‘fáJM•Õg«n"U8Q:‚E½…™z{ F¹6¯`+=Âg=þ+Ô_ôY™b™ßüý<×~¡&TRçM  î‡X:K<˜#å5ŠéÇ%kF#ª¶i i°×þHùþ!WŠ5ã'j‹êA¡9w4Ù¸á¤)”Xñ¦C<µ’íù #§­•²¿)¼óœä+ÖÆWÿé4µ‚6c´ª4ÿ•}–½˜>ŠÐ3·œøõyS}©qÒo%^ò©Q²Š— Àï/ "”/«Ó›]²£R=öš¨$¶ºa}ŸªƒÖZDä rÚ^>Y>¦EPYÒÚòLE–I0ø:ÖqÞóÎÄ¥ypå,´Ëß¶ÈÿBíK`ßU3ôI»@¾cG“í«I‚*ÏdWÿG»¹9ú‚ UÙDö#ã6ôEIgÖ˜ÉwÚˆëu§ ŸIüžŽÉæDd]/Š£‹=sŠHiEÓ Ú×bÕkR Ú¤:q’5 ÷ÒXpú§ ‚BèÉ“rèr{–8Å‹ë`rÔK’Ù{…"Ž'vsÞ%}mìÌn½í¼4¦_!teìyû8L&;ÝXáŽvä&ˆ”êãxaøö‡½È£t]+ÑÚ¯˜‰Ø5ø‰¨b­ý+¸Þ ­Ž¹W½-pt ”Sð‡9¾“PÙ·o#XéWo%DaÏ6=À dzœ±i€›pWûútó Šês·7¦g‘‚ u½:ÛƒB¨5õRn#q¿"d™‡*¼ŠRå21™l¯­š±ÉMp´. ØR†™Y°t憓}ûq¨Þå; ÙŽ æXJÕˆ2{Z‰ %‹<Øâ©#" œ÷,PôS íråÒié`I¡Ž…7€ƒqvV¤[H7-"îà‰u%Ai.ôŽ*¾±:$]]¿¯E4ÏýÈãM½Y§‚Xï_-90w+Ï0׺aՃϽ¥?™GL@Vç ýd—µt}N«?¤jØuÊQÂ#8… Ë@1å†`Ù ×Ëë.ÿM+a=Å#”·Ò2­2×]³NMzóXËÄ€68óÝvk"Bñ»Éæ)9ÙÌÎgc@N>E%¯× `ÙÅøãI¿Ëóçìqˆ£mø½0FR]sLHM£1KmYŸ·×ž'¦:¦­V©ôe¤¼b†ã2°ìª€öu½}Ùª¦/Ríx×´7—6Kø+Ã~j<®w“Ô|Õ<¥•Œ4ýú#¥«ž×b*©Ð¿u›Ì ÂQ†ŒÅ88lëÔ±Éç®— µÊØ~;»Ž£3_Á+!p²mÜÐ8»hª°Ïkë'+8Ç„¿÷}w÷¸-Æ˜Š·ãûÇÂPœfy6N!7`ÜÄþsÁÝŠÎËNÚ%òówé.ý\m¿Ò¡û7‚£ÍaÞÂÐ\”퟊mµLå­ÜÊ’ã¾£1“° uü’¼Ëý, ¿oØã+V×Á*JŠƒÁ¸îL—È_˜âJ!_VÃ06§7zé ®RökF NiqþÒ í*Ù2„MÇÓ ×ÇSP¦=6Ŧ1ãçJ‘@xp|cƒ2 ૊ô£ER÷°A&IÕP#sD®]“qˆmÏKZ–aÖÃôýd3d$ëZÕÂŒgHÓ‰ìÙ««¥I'Úª+žÃu6ÿúÖµ@ßòm'’òµY "⻇„ìÉÔ:£>%cÿ@®†zúÜïQçÃ:ƒ¾9ÎÔì-×+Pµ@5>x:ú¶Õ¢‚nÅ]í¡ðÉ€Ëûw!Ç&‚K[úªXeä븕›µ£‡ŽQEõiÁ«ÞóØg˜n¤D?ÓáB}ãû¯Ožº `EËçˆ÷Ÿüjjõõ%ù∛#Ó‰«6ó¡„E$ªÞ÷¿ „`õenBÉùFÀ±Ì Á¥l4܉®Ózû€¡nTè B i¿§HöÐÄVqÏæ(A0Q¥+£¬côïB('ø)†¯â7í¸] ¯XÕHÏVͬ ©ì¹:@Ñ9‡òh¡*’dÍ™Lñ¨)áƒ)îܵz¦° ôvk_„èmµõvš4‘%“mG)ºvÆ¥Ëî]½ua`F¶ö”Ò0}£CÔ—5TEü½”н·Ü¤¿XÊ2kdh1ÀG©ì åvëÒC–o 럸#`­Í«¸ÏõdèUhjàx9ÂR«¸ÂÛù¨ulJ0ëÆ”Úæ_—rŽ&>6ŠdŽÖ>;ôc³!=µ6óÔ…²·ôKÎ1{¿ù˜}°É€ø º÷tp_]ô)ÒÅß¹`±ê]-]C0K;þ§›AÈ,Ù¢Ö—YB¯u¼Qü“¯ËÂY{H„qJÒæ6òð“ùåÝ®´N8ñÜ\­!°ì­ u9¥‡tYKë7§ú@KŽj$×ÛÊÈK%=Éü¨Ö¾ÞïÐOÄHµ'ÅûÜ£-Y÷ á'FÊaFùŽî ¢F¡2 £ºÏñt`ص(jZ#è ±Ä—&3óÉÞIÖ_P'¡Ý¶+©;pbtÙô–Ÿêe5±;!%…‡Ü~%ŠÛcù:‰ º}êÐ院ֳC(†3®î—v[nãxÚvj¿AÙß{K\ˆÞ3I²<…^ÉÛsPLÎ~]àUßÇ`S(ÿ#P×z¢ÊÎðc$Œ>Wëùœn kŽr#¿«ËípaJ±$àä°²µ}ãn™öé«ÒOxté“- ŒšUò(.¸›<.Ž´iŽ5)£]ÅŽ0Óß) ö¸‡fúÑÜr£2¯ßƒ'ÏY¸s=šþŠaJùP%Ù¼Á„ÍÚKáÖ˜ñèvrƳ޽‡HNŒŽ<ÓŽ'ônî Ëi&ì µEÎ¥£CVöD^l9„Égɨ³“n;{Áiý+¹™f´Ï‰Ü²Déê]ãÓ½wÂk‘ÓúÚÜÜóîqÔÈ&¶Kìe/IÂU…ž{Ã.Ì/ ÷ƒþr[¬D0Ns â&]?–|ÞýômÁn‰y-É"·ku<Åè(Ë\͉àÄăÂðÀñ™·KßöÔ€—L@Ž ÁaË%r¥Ô}FßåGHäùq.¶Ç¢.íîÅÄ$càÒ‘@$€4O“tËšì”q8_e]„þ‰áZ°`Ò1Ãd—ºˆ\óØó5¯6zÁUƒ±#·¿½´¿h'Þv>¬ü@Àrîï&©BAafÚ¯ÒçÃʰxöõ¼/™$UóçüÜÌ(Œ¨ê„aI–Ò¾§¡)i>8U2kU‡ZM Œ´¦ v&Ha+/ý,8;†¼ã‹¼·žG#ûôõôfyI=ÛŠÀøÊ ‚ªexñ@ä˜|0ù8[r\Oˆ=Ï ƒ¹ëÁduüÊg]Î5 4ÃCXj6ú¤±˜•Àb_­÷Ù+è›´ÿ¯ÆÕþ_¨$o)ªq]Ò8§ÑÅB–ˆÄÆA6î&µ‡t·'ÜÑbyÀ X!Z«²Â“žihâ9Q<®tÝa*Ši•­#7Ò÷JaW³:æ4ÙLÚOKû0s¬çÑdP @àu7ÎôóÓ×o×X£6ûÑoBí<ùÒûÊVßÎ3•Û ïÏýZŸ 8 ¨ºþŽ÷˳ ;m’1”Í`-©\ã$ã_ü|gl“­ÓQgL~3h(¿[(Û®9ôøPn½Ä†—€³@³“Þškª|œÌÀ¹0$°«| ñ>óáé· DÜãzöè’!&Ô­±Û*<‹ó7½xÅ;z|¯oßËÀHüB&ü’h1qLe,šaÕñÆ.Y§éª¢™­ÄÙÍ-òxQfª­ÇÒK$#ðZGYiQç¹åM¦Ûräæ{˜8G«)ª;E6Åht¸÷ï”;…b ƒ¤¿Â[Àß›?!‰ä¿¿ ’4á{ÿDvQèNçpÝTÃÖG­@ühõ “"ÝðËÏv¡úIèúï‰?Üúu ZĪÕ}×’rˆÃ¯‚G¿©êr^ ³ºgÆÊ0”w'c˜³R;Î.|íSKˆ€$¹1™Û> aŽ3ŽJ*5~BÂÆ^Íd:¥‰<*Ð5AmÍb+å»ÄØEßÀÁìõŸµÜ «hþš:ï,ùŒñÞkHKÅïñ—‡.DÊ4Ò˜1¿H‘U­´_'"g(1ë<Ÿ¶:›?#C'&bV¦Ú)âíû™9°àÖ®Bg3åóq7ìYŽhcÜ £×aŸ3<›Wç‰ê±ÑÔ ÜÞÏ#®k¾jÆÚƒöN¢ž’vÙs® åܯa-efNX;mާ؉ÚRqø]É”?±7½cG4Ý‹Cü#ôŸE~a2ýönà2,»;:«ïûâÍ„;ÄX6ê!­ÐY—YøÂòÕ(ÐP•ûhRªbÑ dçBYl³3«´Oõ§~Äêµ"Òcim¸wr´Éói–>ÊaC .¯U\ž†Þºnqî˹SÜž ¡9i³îÿæ endstream endobj 171 0 obj << /Length1 1522 /Length2 7172 /Length3 0 /Length 8192 /Filter /FlateDecode >> stream xÚ·T“Û6Œô"J餓Ф÷^¥ƒH  ’„^¤wÞ›Ò‹T©"Eª€(ER¤¨(Uú=ž{î¹ÿ¿Ö÷­¬•¼3óÌÌ~ö~f¯¼l ùì¶UÃJ”tt4@@(, ‘rpA10Èß~R EÀ%ÿ ¡„‚€1XŸ2ƒê àMw$ ‰I‚îK! Pâo % P{@í:M‚&åPB ½QPG' ¶Ïß.;nHBâ>ßït€‚+µÃ:`ŒÄÛÑ "ì Œ÷¿JpI;a0HIAAOOO°+Zr”åæxB1N‚ò€Ø~Qè‚]!¨ rŒœ è¿†Œ'`0¨ŽÆ¦¸Ãí!(¶;ÀPC ‡„ÀÿkÿàüÙHôŸr²‚Â'ƒíì®H0Ü w8@a€žª¶Æ ÃÃíÁ04›öCa`[,à÷ÒÁU}Ëð?´ ŠÄ ÐPØ/Ž‚¿Ê`·Yn¯„pu…À1hÒ_ëS†¢ vØ}÷üs¸.p„'Ü÷oË ·wøEÃÞ)h ‡º¹C4”ÿ`°.Ò|Ž @(~_X\q@¼ìœ50òFB~A¿ÜXþ¾Hà€¥ñ‡:@°?¤¾h°€A¹Cü}ÿ;ðo‹ØCí0[ˆ#NúOu¬âð—=Ô `ÄÊþúüçÉ«0{æýü÷ >ÔPVÔ3âýCù?AEE„À—_XÀ/$ €€"â€ûØÿ×ùÏüÍþ·÷úguÿUQî€üjñ‹vûþfâñG\æ†ðﺬ !®ôÿ( ´Ã~þŸ§àwÊÿŸøUù¿êÿW¤êƒýŽsýøÿÄÁ®P˜÷VÐîìpè °#ÿ_¨)䝉֨CÝ]ÿ7ªc‡Dîˆ:?HD(ò—ŠV…zAì@1vN‰éïÓÀö€Aá4ô×ŃÍÿ'†=;ì傯žÙ_!0;ˆ˜ßÇûˆ`GíßëPÛ!ìͤ¨ŒB½I±’ÀZ¢_vxí!^¿5€#0Ø–³?À"ýuÐâ"A£_®ßVÈ‚`Ò üG h Áüã•bo×ÿ‚ˆ!Hì8#à œÂAGð¿`B@€ ×oó_ ìÜQ(,ÅßÒÃÒûÛþ}Å@ ^;Ò™)„T¨s}hûÏZFOþõQi‚ÝŒŸfBü£EVĘ>•që•$ÃÜœY­ Õ™^ª•s§®¢ÛϼÅé}ßµÖÞ"Gü¬ª›Ž¬¶ SWG×&“}™îLÝlÁyjš¦È"YŠêÃyÀCÑE"gïØgÈqÓï^}ÏÇdONš2Õûšaíº]µe9Ú´L&_>`ZmÖEèîår}²û(*]7뎖tÇ i’g ÅòÀÐàž®+G~5^+–Ú®ˆbÿç>í®¢_—§)ãc’Ö¼òíÎèÐ8:¶¨;ÏçV{#YªpìqÊt *O‚hßö#Úq„I=Ê‚bOw|.vp³º¤È>nI™Œw:Š <ë#Õá»ú!Û–®¨)⪹0nšjå¡ôíà}FÛ¶F%A¹u_§“²¦'ÓÉŸŸzŽ+ž<˜F0d+éIl»ÂòAk~ ÷Dãä×ëíe2AÄåŸsv„ösdn°ZtX³^Ù^!¬o}Wd2)Z:í&jÚ3½Ãú•w­)7ûõ2xo ñP­—ÈšRık/´×ê«ûòù„ºì¡²ÿáwâ¹ÜÄ>óÔí__ÔœV‡8–Ý ìÙv´æhV€ýl:œâJmsw{š‡ìÚYpS¾×›áÜ÷þéHJáDoØöŒ“à±?ò’|ÛaÊ >›²&íc„‰ø˜lío ö—;™­ã ò5 <¸>~i‰©¦Pf‰îøÌlÅpÃø%´ð»'O\ ø¬bm“²¾û ·ƒÉ†ÃD¬ W·© ¨æÏúGOA»¼c³”×n~1m¬B"r”Ïr*£ð:¼d‡¦ÕN-X-TŽº³ £yÏÈÖÖh·Y 0ñ5³ù$dýA~v®:›Éñ|}[S ”½È³B£â›3¢’|«§4wí´žðÌOIñú¼»Ed[CåCî¸]¤?±äÙ' vë·[Åiœ¶ŽjQp†ÉAÞ8N”‰Üvhm’þî¬u?ÁîÒ;Zä°>pe·¤È”Xåï )X¿íÖ~Ì0’aôîÈ÷}5 ¼ *þCžê¬¯­Ñ«‘vÂðO_ žûFiïpFvu‘™åJ¬•,Ÿk\’• ¢ž]{aTðqñÍÀ3kbE’4‚%ÒºK*¸GÕ¶ÉÌÔMGë}öµå†hAfcÖìYHÛû{n˜Ðe‡Sÿ.ª±îÚpq|Cƒ ³TïÛTÒ9èBΩzVí+!m]ןç¶…-ûÊNÆ TÕ”+¹"–Ö£UþO‘s·í?û:ÑŠÈFSEYy*—|—‡èØßèÅÛCíÍǬ–å;刑סÂRLõAŠ}­ ̳3–ƒÃëxcwžkÙmmX“’Èž¿97BŒÉñ0Q·¼>õ. œ¹‹¤&dÏ4e—ÖæŠê =–¤Ëmf”6Wóý¼²3Ñ ¯Åã²FéÜù… ³ Y¨ÐÝ ²´ƒ‚WŽDö¯dv™ß¢2_zxÏÕ8Yñt«kÍÔù=:øhåIÝÈ ³S(ÌÇÓØí!ê/PQ,Qr»6ÿޏýå ˆùV–žX¹¿Vð›µI-íèËX¢¹ÁR±®€á(àž‹bRdÿ%웬gÒ¢Ù¶ô'uó¸Ú~|/ªWÔþkªüìÙw²miظ}\”õ l1R 7¶œ‹Zzs]ÈÖtéDžOŠœd,5Ì_9+ðdÛ8ŽGèWÔÕ“p•|–ªÕ'7f UBÚn¾•—úÙ£„#ÙâTµàŠ!}vv’pR"7J‡Â‰þšÑÞf}PFD9î Glºøwµ,¿Ìý¸pœç"˜TÍY#zxýÍxÙIã‡$AuüKÚæ&+l¿ˆ˜åYŒÝGœieU&]êëÙÌúº´:š~>H4N¯=Ê^èDÀNÔ™áã—ÞÙ½ãþþ«st˜þ|N4"L˜uÔÏ’Pc™¹¶ÁèÓ´ [͙ʢöÁ$ß. (+50¦qmûªO {IG ñGA-\<Ø´ƒ˜—Ûr3‰7i½§]°ºº`ÇéœmªKr͹y7Âë}“sõ·t¯ÂzÃWx¼¹á·åÚòL6ƒ5›èYNyY]Àa´>ó#uTéÓ< ô2¸:T´ÂÜí?Ê«)’Ý*ª›ô¸:ñ?d‹¥gÉÛÑì!UçfBé%42ë‹>6¢³Õö”u¡úBw,£ïùLïò>­èyä]FÉÔi¾gÆÖ´Úä†në*Uoê}€î~ Ÿ•M½AÙÿî8rýúúaži绦=¹ÊÛâ›1ì{~{ylͪÑKC#Ñ-— [³ÚÉRÖIíõÓ45Ø›ÚÒz̹>ÒѺ¸mRjZÐ%8LQàIð¥UŠ5|ºm :-œð½Ü)g2ä#=‘ !&ÛŸR˜ì[ò†q¯j_k}‡yYÀŠ·kœ@õíË&I}¥«ü8íY‚DœJ+n±©ž#ÿlÚTwìÍZõ-äÝ °:!ËâG>E¯)Ç'XBUœM|sAQû ‘£ºTí‹qQoS-?ŸÀñýÕôï~³M¢"gEû­0™jŸáÙ.£)Í€ö ‹úŽÆËÂ6—H8*ÄøºŽ‰iEö‘Àgjs~ÌffÆVíóz!ŸÜ?C‹q"H¥ Å0 FXï‚ÍKÛ¬hœü6Ú1fkî܇™û“Ö •†òbc;Ñ/o•Väc‚}¢^ÚÊo;2¢›_ôé–0¿7 hÇ|Íqè÷ÚRæJ ÔÏNåÌAçã*Þ•Ç¢É{fÚãB>  ‰kñXöU,Êùñª.š¿ÞØ ) òy•¶þUMps{yœ½X±‚LW0:á³d‹"í!`jqš3P1o|ä.´DÛ‘&¤úeµ%sÕÑŠä/•rm}W¬¿à§tiٚןæR¼rpöR‹¥Ú5fA~ѺHáÞÆt×ö‰.*b>v‰ë¤²Þó¸®8dÀð÷êïQd„fóÉ â® >3‡Ÿsðí;t¥î¬eÐŽ%•u —ÚÒoµÐ+©•ÜLÖ}Ÿ_ß»ä'Ð"ú&FÑ¥°t<9`c³Öá,)H†{çaÓÀ«KãžS1ÆG÷›7V’g¥‡¶×IJ#ñœŸvõoyö`Âx¡e‹Ðê"͊ɼæóIÀ+ãâ¾áïèMó¶\ç0ÿg¤^cÔ•¶‰v‡NX2I•WÖ/‡H|¡ÞÕë™xUÒOk;¶ß]ø½ðM·«€ýÆFr•ÒÎ>V"Îàýö–©…iæaË%’Àùƒ\zó»JE’ªzœ+÷ÒíÅ"a‚*Ì’Á:4Æäðra»PÊ” ”Øúl=ÊÿÒß%@{Lþóת×äÃj2½V•N·¹]j²[¡$ⶉ?åÑV·z©] $†ßÜ¡Ó;Ïzó͹fU•Æh¾ý=9;x7„Á`®öíò¢°èã#×@;¢Žwã1qÄÈÆ~`·Êv„ín ŸRµÛ~gø…õŽFavÿd>êÕ£¹¦×Áo®>@6I+m(ûÛH¹/ï&«kr>(Þ"¬+Ÿj5%8B†Oî»> T(`¥àš±ÔY£Ÿ¦¼IBAs4Ÿ`ô|ìƒ^jláÝ{o¦ƒ2+Q•Ø zöËàa»¯‹ÀaÃhä“W ßqJQh²°W‘6šo“/]bÚ[GÔTœ&97ån…„ ©—«mRsWå%bØ2䵓ÁFé–²/7}:kî1ðtK…ó«Œ1¬‡%#^Ù~Zè]«iî<%”Ò![ùEËËM¸§xù5¦”ùyöVÂ{¿1ÓiŽH`áˆÌ†J¢|M[ŠÀ®Õ2ª¡X2Ÿ‹Y]¶ ²9û`d¡aRªæøãÀôÓPWÓœ-þ:+ £>h´­B^ìÌEºEžÆ:Ý.ˆ›ž·ªÙzS/Iåue:ì[Ì¢Ó#5ÛkG`ñ¢¬fv®Å½A+caê·¬“‡»«ûJw*¯<:cZ/)qâä2òO燘'š7DÊÐ’–ŒRêBÕa¯êå`/êíh¨Ö.q°Aˆ ç¶ù1 ø‚ ‚‰¶Òá©Éó.g‚ë¾K„[c)ˆìÑêÐ'oûñV¿‹«qPF!GÛßìô7ëüœH=…_¼f·3 Üae«HÊk¦Fš•cKk XS&™¸+.uýñÓ½Wûh|æ|«íZG¥ïÏ_-ÈlîLûIÅY[&·£°o•êÉ5Q‚˜s²žýM1¥òûjŽñ­'o%ož(ÊH°ýØ¡cÏæiK<<tBÝ]$/‹” y6¾ÚÜãÇ>â÷ QHÎðzö(—õ·ò«Ä%1`ÀÈ×i·iîÕCüÎ2lk>±d’]ÇhGˆÕÓ‡"ýÞMlwè±p/¹½_§PMŤéåãÊxÕ·õÄÌ’,±Þ蓹J¦¸àM¯דXWð¡{úˆlÅÛê&ŸŒ—ulw¥1ÁË']KOÅôˆ#œgWÅåÂäB?¯+¼ŒÃId²ˆ?ðVN™é$r5-±¾›d¾Jóóä¦Ô°Y¾ù¼ ûûѯø4sw„ä97¼å_}¥ý4,HH†Û•†¯h%åq7Y†­6~èÁ #|Êüo>ƒ””¸9WŒÚ§ á÷'‹Ÿ«ñ>ìÎWŒ­[ŠîÜ–i!æá 2º_)ð8"ánÆør',õµ8ë­&Öú¾W-NšgÍ%ÝLϸœã®l×yheü0±Œ|vãÉ@ª> ¬y·öÅ[´´I›'NÕh<åø)+ëUú½tþ²ž¹†ÊÇ>ÑÁâùÊû*< •ÇÉgCœ=4Á ûK‹~>Ön¾Xàÿ°:kh£t'ø¾Ä(«ˆ¶TÚ¶˜ ‰ÄÔ7/Ž×bŒLõl™ƿ‹èy±{%y}¦üÿÓ¬…¾ jØQ\KÆú°-h qàSbò}d*9@hÚλ‡Ÿ®ÕÐÞy>e„ïù¹íaTÕá,†šÝÞÓNæ”45îmÏL¬:V5jÛËÆFEàje“ËŸ xôÍPWRüi!í=Gü­’%bc¹EîµI[ޱ³YDls`Ʀl´ùjï@w‰^ieù€™§è[Á;Ã+~.™e\zvAºEÍÊ5²–åd–Ãî<& Î!â®rÌh‹£woý¿A—l1Ïè)ÉxÙ—A!ÑH§öÍÝ6? Q÷ný…ÇSÁÜ6?ÊÓõõš¶¸Î‰ŽE’EéR¬JCCƒit–j‘ÌÄ¢j<6ro TuÊÈ—{/?Œ8®Æo#»f—páx—8¢ý ›öUE­‰_µzw¨,´I½[ÜH^(v5±÷ÈߣÛb3ÝY&M8U¹ÕԯѺ+ö“ïLè›="îrÔ;{&â[ò5õ4$´uãÊÄÎ)Ï’Æ9·ôTµgA²õ5…^ÑûÝÁhb6eÉ2œJœ0n\"0Ýj¶ŽWòÅàÀkíôS9¦×öT<§’SÀ]!Ëû^\_ÚDdÕÄÛy˜ð=D™óÐö҇ñ –ÚúáÀ]žŸMZ_S§y›åe!ü³ˆŠ‰'›—JôÕô7ñÓžö†(vûÇÐðÞb÷èA¤)gÎ:†/_zll‚Y#¯VÖ…£6yvGŽª} ª~†Ìü´â,éãŒèºÚ˜Åyv˜ÝzºÞ×+Pô‰H:*ù-±nìhåÓi˜©ó gáö£[F 6ê+¶ÀL1-*¥Ù7HëÑvqoz«ì–sÔqä—èáê¾ÁÐ̹Á "w¹£…ócäý´úg°ìš-U™¦×>z½oJ X-ôEú³6…,>H VxûºåT]ÇÊ)‹^–é„Weg5)­À’§Ëºá‡ lœ;ÆÁ¼wÿ²òXK).]PXšÜÏi[óöQ[m{…¡Éë»´ªÇ4£ÌS1Aiì«èFÃh¥»«&2zKnƒL£š-×¬Š¶Ç ñ\%¨V€ý × ­1 $«}WÓÅwDó";Róô²¯¿Jië9SF¬ÉŸ_¡“çϾ Èé°»*ôOiw‚|­æpxø69ÛôM©[¨=ýµÍ#M¯×¡5&²ìû]ÿç[üì endstream endobj 173 0 obj << /Length1 1482 /Length2 7062 /Length3 0 /Length 8059 /Filter /FlateDecode >> stream xÚ´T”k6Lˆ”’* C÷0CIww—Ô 1ÌÐÒÒ Ò ‚‚J#‚HK—„‚t‰|£žóž÷¼ÿ¿Ö÷­Yë™çÚuïëÞ×~Xuôyeí6P%Å ‚Äòššª"Hñ°²ÀP.п̬FP$ û¯y(…¶)@Pè8M æé ÀÂbà‡b €ý;á!P€xÁìš@€E°Ê#Ü|=`Ž(ô1¿8l9`Qч<¿Ó²®P˜-Є ¡®èm!.}„- ŠòýW  GÊMŒÏÛÛqERœ<oÊ EB=¼ v€_„ZWèf@V€# ùÇ®°GyC< ´Áf …#Ñžp;¨}8@_U í…ÿ ÖøÀøën` ø?åþÊþUÿ ±µE¸ºAà¾0¸Àæh+iQ>(n÷+â‚D ó!^˜ Äð»s@IVAü‹ÒÖæ†B‘0—_ù~•Aß²"ÜNáê …£¿úS€y@mÑ×îË÷g²Îp„7Üÿ/`ƒÛÙÿ"açéÆg‡¹{BUþ A›þ±9@Q!ÈCÔõ±uäûUÞÀ× úÛ þeF3ðwC¸ìÑ$ 0{(úÀ ñ‚PžÐÿÿvü€Á;˜- `u€Á þ©Ž6Cíÿ`ôð=`>€G ´öÀЯßÞ,Ðò²CÀ]|ÿ ÿ=_>S]3#Sî?Œÿã““Cøüyù¼üB  ¢_þ]æ?ð7ùßVì¯æ@ÿTT…Û#è*¿I oïo"^é‚ã¯áüû-ZÌPÇ?Ú7 lÑðÿóüNùÿþ¯*ÿ7íÿoCJž..¿Ý¿ýÿ7ÄæâûWZËž(ô^h"ÐÛÿßPcèŸ]Ö„ÚÁ<]ÿ׫Ђ ÷Cî€Ö8/Xüc‡!•`>P;ÊÖñ’þžú ªƒ@Â~}rÐY ÐÿøÐkgëŒþ¬ Ñûã‚ Ñ;ˆú=Ü_ŠÞ²÷¡·EØýZG~!aÄÃâK€ üÁè½µƒúü<€G Ð)4ç€=ƒàטEE|¶¿L¿Ñ¯Žøìþ øÿ ø`ÿ@0"ÿ Šø¼~Ãuhëéá¦ð[XèöÿÆ¿¿P¨Ô–`v a+æTÖr^+KãÍ»ñAg?óÜ„Ÿ÷C‰%ªGqÜj%Y?7gN½Ri¶¬déÔ®%ç~ž·8}ä¿^ÏÐà+xÊË ´åÀ`“8usŠ9‘âFË4Eü£Ð8]Ž^¬Ü£C‡.†¤_ÚΡGŸ•ø1{Ýû™o¶{JÕÂ[´Ú:j+r4Њ}]ÕC½µé7Ø:¦dÏ_uM]‹5š¡•Ť.ÑvAì]C²Ü7Ø?OÚM×óDÍ+dã;KŠTQ¼ŸVA·Æh¾ˆèG~¹×n™¿2¹ü}ÍBF=J‚~ù¢Ô·û”æ?˜qMœrž:¦ìR·e})uDg\u…ŠdäO0E:DûÛI,(鷽ާ8›ÅY\w!ìkæÈa~ìø¢â0(pHV?Æ)³ÚÖŒh\"/ì&ãò¶ž½UgHøäõ”f¶…‹:ÎD$u¯„52}­é½i+n'óÒxª:o’ÊzåwÆyÆéÇ®ŒÀ" …u*hñŒchï¯EW’Ñ?Z£cSœfŸ’å(™«ð¯ÑŠN ì¹3{ò’þž(’HR%ÏŽÎÝßfU†aÌ48c˜Ùºœ¢ˆ—pÎÀÂåŸä}ñ¾yƃ—Î\&¥5ž»õž÷„ ÇD䨙ƒ”òøÇg¬ÚºSw…™oøÚÛ­_É“& <<6ra žÛN<½°Á©œ¤Ð‚êÐɨ7ãÙæé…‰(8ŠˆVî^¸ù­diìg+åYL®g¶´¸>¢1ýqZ¸u1Ù`ñ>õ ptmuèhd=­ þ¦vº~=2[YÆ%Ñí–ïï%}vÇœ¶Y¹=Ãâ|{;GJ€O…!4,cþ¹/2BÊS=wm-ÚRæpNåo™·DW'å3*S·bTmð~žÜ¶"扗ŸAðŒi¨jæ8%Zýð2B`l°ö“:–÷ëÂ0o³…L${+_¸¤€²4hBúñ‡NIß-î'ß[Å‘€$¿½ÒËn¸²‘ÉÃreÆ`?§X;š·mˆyÉ]?bä<„Q’§S«‰å|ðf!Y¤»,%BF¦mnî|!b}\|œ÷ñõ³ÉJÖ›»ÙÚ$L5_½¼ë@jÏ~æšãYÍÕ*¶¬Ð4îÙ†õëâo3ê¢Ü;š<¥lAÜ,ƒ¶ùbß&™‡ô¸1}1„^U_¯ ò«‡=o m8uÝØY0öÒ9l0:ÅÉÞ¢.|üiÔ+^4JzËýth¡×Wé‘{×,qoW–‹S8ÁöéF9FJÎ&m§Óø³2$¶”Ky-ME:]¥Ã—™8n›í2xš|þšmöÔÁZÆy×­t4—–Ó(ò`…rº–χâ+ݱ<<×á/wåLu…2otè>lCꚇ ÒAºßÆ\Ñ×DIŠL?§˜î‡4ØÅ]¦˜éÜÔŸRgc¤¶C?MðÓùwêôJOÍ;_ ^ǽ&Q÷ì6dÅš»_Ô,$c5*ÉäÚÇ™ð7LnIÈ%ãí{³€¥\QîÔ y*dءھ“ÚÑÔ£¸ƒ9M<æ´sÏ;ƒðHL‡0襧wÉ•›ÍZÖ¥4½8‹=0¾Éeaò\úê®ô†ºÙ›¨Ð ']öPèb3jÕ¤ùõ“­7óˆf.Þí¦9o’øŸ yͰò ]ÝÝÃ=ºUÉ\&Ü1P|¢ü­{1·lÍöL(EÚWÓ)*ã¬bvgžN¾¶š…$ê².¤ÏUIf8Ýö216UÈ)ÚÂeŒ:y#Áñä:åø^8îiñkǦ‚Æi¹Æ+ÜûT‘›üÚ;z÷9·)ÕïqÕÎ×ÐÇ_g¾IE½´ü‚;CtðIœÄE3Hp¥\EÐvCáR#¢fJœø8yŽà]•ºhLXÝþ$ÙüÁ¡k®é§ç}Ãð{¥þ3)^iÎF¦þòÛM¢F©}·i?q•Åy;Ý r8šK£JEählt²šb™i]wÄî–æ5$¾¾ÓÜû¥>úý¬µ0ö^ÞV £cÛ¨Kä¯Ô‰Úa7Ù)ÉKjþ¢ŽÕ­¨‰=-2¾²:™Šâø‘¯+ÀàlVAˆŸµ˜½S(X—?³}0JÏæ[…t‘ÌàŠZÅ’ñqæ‘ÁzìÓ±>ÏW6ûñÓ`ú4§ö”„lx©É±Ñ¤Qì-±ð §.A=g²KbŸ'î‰y%æÛ×$.ÜÓ¡Ú4-—ÒJ©¦Xã‘=×ÐÜÂ:s—¼)ü‡R¶Ï¹® Š¥ôñíÔ`*{ “›ã„EŽuŠì2µvçŽÑ»‚O‚ [ kÇÏÐÙ&{ùþIn¬œý¢D¡å¯C}B¸ˆí÷ZméÞd#–1Î9-bäKÊw¯$ôõ™U¼ ½„û†úpëÞ5À‘xOc÷[â”   Ì#!»<U†.«á¤Ÿ65Â8”=ôׯÓXwóÚlÂÕßßÏYw®º<=fŽ MFp…‰ºXÞß\¶®Ÿ¹>£¿$GÆ7–ÛŸVuá¿:Ú¾º©(‚) Å™ &0³àþ`ï(kzÙ­ù¡¥,0â°ËaâÔ67Sw«¢aûp%Q ÈDõ"¬¹¾Ô‡€6ÚÙ¬íøÕò ++¹•’›Z¹Žd%öÛ~—*âÈù'Ë»ìs½TvI¤ÜKêÃ˯+CÅÄ0z†¤µßù mÞ;#ÑãDªPöÞÑs{°qû§åYwüƒF=#Fi¡e§­DªCWüŒíÃÐïm_X‰äõ==˜­‚S)ìâÆ\ñ?œaãÁäg úØé•ÆPã·—zs¯F) •5_cDÆ\ÍR¾[]GÊ6ðúÍÞM˜³Û÷A¯ü3·Œ¾Cq@àT¦ÄøèWÖöÕàL›h÷‚Á“ª›Š¯esþ²½‚Tg~qœù¶iÒ  €«Ø;lžH;é ït&Ž*|€ÁW„ÉÔ>Åtƒ·4v~ÞD£06•vÞ¬©;éDÔyÓKéŒO¿Ì9•ÉIK Ðýþ³Û5_‰AtRa²pèù÷êuü»q.8EíŸÏm˜ê×_GÀµ°K×Cb7WÓ™ÁÞ,@áUŸlRìa†àa±!…™aÏ%[vØot|ûa‹7Åe`åÄ¿„Ú©ƒÖ²>rR +aòM‚΂x’„>—ß=]ç^&äDJÄ™•© nõ ¨ÞÃ42O6,Æ ¬2‰¦¸9aì<ˆë.é8{Y#*ïÉÚ¨ü¾¿‘Cw‹ÉñÒ~åtµô-)2H¡Cµj<ÀÜZšvÀGZ9;øÉ¬9)O`wÿ„ùí…ϧ|êEͱµ¶`¨xS w ¾óß¿ íîÄ>{½­í/Ì&y•Ƭt–ÕKŸh¨dBX »n+¿Uc\ÈÓÄî8‹Û¼SBTN±\~âÉþîƒk忆–i-pÛs X“Ú‹Î,¶ìk©ý0›ÖÕü`˜rý¹/–Ìö¼´ÂÕQ`q.+¢Æ½d/]9¸øì“núåÆ˜ŒW[_ ‹ãÄK ýÄåxk¿4dÉéïÔ V ˜c곬 ðy“ úP1›ÂÏàÏt«¸iXTúѦË$ËÄŽþÓyᣬí‡>I¡^I\©PCyw™žX¶í5yà;ܸ$”úÐHÊœâ aÆ É»ÕMµ`áó#ÄKϾ‰ULRŒÔø°Urµ ̳2– bîÞz]ø¦ÞÖ>hR>»œŠbóÇ ¶57›Â:Ýo½ .Xf4 ¥Jx„ø6r«Øû‡Õ€©Jfyý#¹ÅGâ5Á‚Èq}ÅW#w¸1ªy^“ÒGD_”¥+ÿTªcŠˆ”¿‘Ío>šÈÀ—Áþ(ò$•úÔ啘W Œ&·7¬g¹KhéÓíïºQo}ÉÀ¼õÄìóÏÈÁµîÕO½º‚—£s·zï> Ž"®ä²>¡Óï·ýZiV.*ÚÎ}Úÿ,y¶—ºS+rŠôÝmod?2³ ‘õ©ô6›Úq¢Q~§­Úñ0ºŒgXh±yú|©ýU—ĸ³L+RÕÜÚZV5ï•ošÊ.Ö9­õ‹•]xðÇKY[éëgÝ·q–nÙ£½Ýž!H‹Ôz}Ál¾zŠÙÏvyÜíú#Aî˜Û±÷ô͂ݿ»Y¬¦*þþ$ÚE¡z9uüHWÏ{ž”&vM6³Óuü'ó¨ß÷ÎhJe <‡ªJ‘p½”ä):gæ>çÞð}¸- —cU F–*¿\ÌÈ»¿òSÛ’Ë©?Ge÷Â0Œ‹§ïáË$©õƪ·ÖoÌNv¨”¡¼`GŽÓªxµøà+n¾o™³äL{çrk<áÓQÎ÷ N–ËŒú:Šm3¯B%¹wDÊ"^üUíÌ!‚/£}‚sayÇ¢çvZ2Ùæ¢Æ¨¼„¬š)3Ò ï¬bßÖŒgSÎM˜`‹žòZ$ø³Y]l‚©mø±ET1 ZØSß â¨u‘x~çöA‡¯y-fÁ'ñWIÚ=™z‡m)£Ç;rˆñâäL@hz<+‚)È×ÜÉûÈïÐÍÊ.£~U¿ocÉÒªàôƒDHÍ} ËtVÞŸ TÈj?š@HaÉXȪ¶¹Z7¦¼ÀßïÞ£­)©T+© A|¶¼5ìÚ4Aˆi‹‘pÛÇ}¢f,ó¶zƒµ'ca!ÏqÏÓ b}þS\0 ÎIlþN•"_Cô›“jA'øF”n;ª»uF[釳0©Ž¡,&“ÉìNö›á«¨y>9Ë‹Nì„Ø4"8 sô81žJçâÂVI*o­¡Ù¾sʃgj݃~%îpxžéUØî¾{ë9w&ò‡4!¼¤‚¬50¶ÿB!™4S#¶æß/Y~ð2'æj59>Ö·B^qèçÚRÑ̘OÕxM–ò,›±üpëÇ]ÚD¦ÔêœÒâ샵x6Ù퉗Œ0$ß,$8:×…ç¦$ટšh’q¥‰ [ÎúíÚBŸÅ‘Õ} Wä¬ÔK»ÓΘ!|«Ç»ñ 0|õ€&{B ´•]˜ 9ÐæºJ§j- ²euó¹ µÿN‘ÄÏáþFògS—â>3éÏ,·(íØÆ#l/S™ª› ›¤ «É(åGgû,³Ì5„‹Òï}¸œ»šÄˆ"°/Åâë"&Õ>=õMMúø4Ô`mX4óqÜ•…öNŸuªÓËíÙz0 wTd–ñýPv»2­¬µÙ÷±å.K=àÊj¹9JK‹•â?¼CîN ÁZpFD™î3C2w‚XúÊ“{ÊY)r”ô-7wçSŒdÙ ÷ôOʸ"M»ãäµqÞÊÿ žLp¯ö€èÑXL !ôñ$-¬§ÆÅÚ“4”/f3Ñì)e5So€Åi©ó‘—>îpÍCe¦õFñþ˜<æqÍ¡)aœôµ_×Äéw–sd#[ðØe˽kþð=i  Ð-¼,Ÿ¹“[‹¤‹"ãr*¥sXìAùùHµŸÕ—r÷BæÆs8oUmiu÷ª¾à«Ù®Æ ÿ¦Sq¥¦ßQR¼×Þs +U|¾‹Íß6'¥â"“óyŠ%?5öŒùù0Gà8³do'õhÒÝ“”÷½&æåýS¾Ëº…¶¿VZ]»±é u=ÕW›²d}XŸhò8N3ißôœ¦Š.Š_¼›“¼–[Ä™GÖ› ~Á#WþpX9ì•ö¤B±"`ãƒsÛ‡!óúaíðþòCSªX™sGxfš×AùfC´Œ®tVZèkEJ…`ý#óš˜Ëç;€…™‚õüÒÚ°ùzÊË£ð#MG]Ý”üqÍÑŒg ^3Û±ÍÓ§—ÕãeU+j•\o V‹˜ç™ŽÆ?Ó„OÀŒ­„ÈŸ¥QSBÔG **©X¦™#1"ßqvöOz3¾šbCp\¿¿—ÄJµ?4^eî~@ž°êubós W]6‘¡Be?éYz³Ü˜Dý¤–ër¯‹]ÊÚ£‹Ï„ž.‹äµÇ7l$¢;\9¬K¯#ü oÊÞеzYP“—é.#| ä²|õó£Î^k×0[Úç|÷«s¨ê²N¿(¦øp™f“ážíW°Ìltõ,”u¬Ä}**+ø–w´T±Nºé§Ì1—º_öéÔ±–yüQi8Î<ÏZö¥3nŸ¾´Ó•Õô1ný; MbÜ*¥=B÷ºbìï'™%ˆ™:¼<õïW?_¤ªŽ×¡Þ7 Þ;"o¤¸'Ðw+Ì\‹Ì_ -¤¹¬Ä~ Ñç‘Ù/2vžš,.ôïˆmŠ“Ee5Ž.0ãûeˆÛIKnm{˜Ègõêxfòw/SÛ]2ô!1â=ëUþÕ"3¤}[çÕi´PsëæfTar*#Å:W®ÝkB•§Š{¢‚•ÎÌʬ’•êGÛÝîY“dò{Þ/¦›Œ£jg?É©…¸ _¸Þ%•ÊM VuÎJ’ƒj¸Jd`vÄíKÜ%­9ªî“BóùŽØôë é¥çÄ‘§7ÂNL­ Ö~=KcÁ ž*ù._¼‚fóc‘7ÕO+Šø¬æ½—Ï-3„;Jžð/xz ½÷ÉÛI'»ÌækùÒýÞ‹èPŒÑF6úêõu…(v:íÏÖðô;Ûº¸Hº8V †%a3Ë׫8¸˜«_ ^ÄdRoÅH+½l_‡éÙät]WIña?¯Tâ>”Ô Š[µ®Óªo8óÌ5zÅeÿ€áÑ|s]ò¨8œ÷N¼_ŸªN¾Ã¶—KÓXØÝê½uTJ0cçå –ø 5õå*ñôhÀþU”j«Ø3Œ+;xNin\GØ‚Ø;AŽ0Ûì~(S(mÿ‚ϳ¹©jò5 ö¾®Ú¶U f!º>½ìc¹™.Ù°V8Ç£Ï^%än%Svz¥Ô»œ8‰‰>±B4©íÐů¥›oÕS¢÷à,ZÄiw¿:áDŠ3ª}c¦ÇÔï\LCU<¸}¦±É#×nå|#Ë”Q¡Ï¬NøIe›ÇÑÔ±Øáþ¸Úz¡Èxov1Ч Ä'{£™ìZ‰]›Øð] Ó—AÔ,CóZÎgâ&s¾ö®O¸ù¤³Éåˆ.¦G–ü‹¡2w̆øŸ”ùaüd#ÀÔ¼¤Øž2.ó™Gï mÖ‡Ú²ŸÞïm¥r÷)$s³™àUûnmÇ¥ßÆÆtÍÆ—ýÕØˆ™åMáÒ©“܇"$%VÇ„1æù»>¯È®ïöÂëf‚%ÑTKŠ{\ípúvÛ¢ ±Y"¾Œp×o¶V©:®Ãúi „ß&¼kñ›¯pƒíµDD‡$”+÷Ý|`t¡o{µV˜ œß±#–’ËúbmwŽ;õ%e‚æÓþ¤Dáˆ\£›ÉZaÍ¢ŒÏêÎH?‹›4ÝÖbÊŒsö'ÂÐmÛòü€À5µ> Kîo{6&p[O˱*Jï^O–P­xb|¼òŒ¯ž–ìÀ\Ý¢Jœ ,¦‹ì)ðâ÷Y¾ýªä-Oáöø­p Ò£x1ô\7Ôò¹¹¡> stream xÚŒøP\ÛÖ ãÁƒ[ÆÝÝÝÝÝi,¸»[p ww‚[‚[p‡ànÁ]_çœ{OÎýþ¿ê½¢ ö˜>æšsínȉ•Té…ÍìM€öv.ôÌ L<Qyf&+ <9¹š•‹ ð?bxr  “³•½Ï¿ D€Æ. ™˜± ÈNÞÞ ãj`f0sð0sò01X˜˜¸ÿkhïÄ3v³2È3dìí€Îðä¢öžNV–. 4ÿ}P™R˜¹¹9éþrÛ¬LíòÆ.–@[PFSc€ª½©ÐÅóBPñYº¸8ð02º»»3Û:3Ø;YPÓÜ­\,*@g “Ð ð›0@ÁØø73xr€š¥•óßrU{swc' $°±2Ú9ƒ<\íÌ€NPr€ª´@Ñh÷·±Üßt€ÿôÀÌÀüO¸ÿxÿde÷—³±©©½­ƒ±§•ÀÜÊP”cpñp¡Û™ý64¶q¶ù»[Ù›€ þªÜ !¬ 0ü=gS'+gg+›ß‡uYÜÎLÔÞÖhçâ ÿ»>1+' )¨ížŒŸìG;{w;ïÿs+;3óß$Ì\Õí¬]Òbÿ1‰àÿÈ,€.v&&&NnVÐô0µdü^ÍÓø—’ù·ÄÀ×ÛÁÞ`"ôµ2‚þÀ{;».N®@_ï+þÁ33̬L]&@ +;ø?ÑAb ùßtøNV]&Ðì1˜~ÿüó¤/3{;Ï?æ/£ˆ¶´’°íߌÿщˆØ{¼éÙ˜ô,ìLæßCÆ zðýß0ÿ4à¿äÿ’*[ý§¸E”¶3·pÿÍÔ¼ÿòpûÏXPýge¨ÿ›AÁ4Ë@ÕŸÑ×cbg2ýbþÿ¼¹üÿ›ûßQþßFÿÿ$ájcó—šê/ýÿÚØÖÊÆó? Qvu­…¼=h9ìþ¯©&ðïU–šY¹Úþ_­´‹1h=„í,lþi£•³„•ÐLÉÊÅÔòïúï)€ÂÛXÙ•ì­~_6zÐýháL?‚.gÐYý¥‚öéSŠÛ™Ú›ý^<v€±““±'<èèAˆàÍ ÚP3 Ç_£ `d°³w¹@ô|æöNð¿O”ƒÀ(ü[ô7âÍÖÄ `ýƒ¸Œb7€QüÄÉ`”øƒ˜Œ’ €Qêb0JÿA ì²(»ÜÊ.ÿ²+üA ìŠÿ .Pv¥?”OååSýƒØŒj(ŸÆʧùòiýƒ¸A:ã(ƒ±3hF¬œ?þ19˜üA ˜8›~‚^5æ.ä¬ÿÈÿ^Œ F¦ÿ vP0S{ÐPü““í·ÄÖöO¿§…ÑìdÕhft:ƒ.Ü?F B€â‚ÿ'/Ço½£+hïþ¸€è™ÿ óÁßJ«?YC·?˜ þcÿmnïêô¯è ‹A/Ë?,Aó`éé` ´û—Hfõ/¢ùñ_Ô©×j£í¿jµèO(v«h«þ¥‘³ÿ“älÿ?jPõÔ ` W¨Ýÿœ(ó¤ÿ{žl N;€&Äþ_'ô»7Žÿ‚ êÃR:ýÞã?zñ?'É*Îhkõ¿cÁþÛèö¯~±ƒ¢:ƒ^(ÿ"ílcìlù¯À ÚþT º“],€ÿšQwû9€b¸þ ‚zîö/ªÌý_òöø…÷üµÔëOq H^@§¿SýϽfêêê©Ë_oÐ¥÷_ü×§ Ðh ¿4ooÊbý5¤ã¾Vøƒ;ýî8ÿ ù®f*5½÷’S§ë#ò»dêšÌ u§[áäᔕmqª¡e¢ïãÖ†wámIÊíO>φ *S»íð‹“X…ÇÂõýpøôjB{>/Ž>![Á¿Ëç:ºr!+å£ß»÷IzÔ÷—ÿ ›ßUÞ«áEx.Ÿ¦QÖ ,™%Ï3ÉšÃ!q¡'€¥A;÷x?{s;ƒ–3ñF$“@ ï{ÃZä­³Áû0çµZ©ÆâÜ…K†«ƒCyƒ6:Eá-r"ƒ½à]Z´2°èÑÊWD”ƒD÷e……á€%£ÆJ%Ê®¹·ÎmtéóNn2 „òÃúNR]Y3†¡‰"fM»aºKëG ÁÁ7s‘ÕŽ[nsë/øËÜÓõo€Y$mË〖nï§ÇÕá‘ú»°/m÷ÃÍ#Ûݾš%‚ý‚øîÌ4â–º‘+?y2¾@—»ŒAti¥1Pè–Ý’¹ž¡Cù¼ƒ.Dñ˜· ™˜t¸ {ÁGñOÙs}.b}«Ï¾mÌ¢.ظ£é¿s(¼™|ÿr~^ˆkÉ*n”F•—!Þý)o-ŽR™÷+°q6¸œñ|£ ‹A¬Ì“H.q‹}ñb¬ˆMZ²ww¡z8R/ÈÓú»€áT£J½=ž½@™xç$Š~ì 1pH$8´ûÖì`ë¶¢BÄóÐ^ãá¼Ê=Bd8vS3$ïÓ7•€œ.gÅ4Iá(ˆâ»í¹^8Ò_j"nĶÍqï5Õø·ÇºŠŸÝéÊ¥ÅÈ)‹–äûeùÂ}–ôÅŠzqk„°>Ý4°|íT¼§CÌDY%ÏÜû IjØ9ܬqñŠ'òAUí>ŸÔk¬wazl›øÇÔ6™·M•^ [_ €—=: Ò&‚xa; ýjŸ*:òÕ<²eMÝ]¸a¿.cv¸~24 %Bú®“• C`üD PXF™¹&WD‹ñ6Ÿ”m½å•%ôH×Â_í¬÷u ã†/´‚_¯Kœl]L0Býnrï™#9gÚC2OÙn°âCz$îŽU ùüçlâ…)x90ì:ÝìtÔëí"jâhóP­ XÓÔ(X°m¾9JŒ¡¯q)*èJ¬âyÄ!ô^º.ØW ûË”çÇÄݦ޹EŽK…`ÙvìDßõ“ŒÚ±{gÒ^Y®™‚žhKFáø²âíü„P‘&‹Ñ—#±œÙtõöûc¿f Æè!~¡ºëÇ_ÄL‰ÝÚyö^d¿&ïÈûª¾O cºo®m²èÛ—÷®ª _¥-¼w=ȱ=•€ÁæidF†]L1ƒ-òä¸ êZ^H •†àÈÙ±«^ºS”ÑÏÔÖdKzÝ—ráðQ&îP¾tH?[*<6Ì{ï(¢S™!åÜLçl1¡­‹»(†HäOŽlû„š5çªp «lWLÈ™–R¡iÒßõå%­'1šßôfÙt’+‰³äñjS«ŠÈ1îñ•c²£—‹f ¬ßeÙðV{ÿèB "m[Ô‚¶“€I$K áòVY´ODíîSæÚ1Ô<‡0~õ—õ±—G0DŸŸù¢‰ºþŠŸÐ‰ä¹#ðÆP‘[gÐygì’M+¤È|œÇ˜&qAô¹‰Õ“4mÛô½¼ü¤d¿Î˪.¤må[›×D´„? šMùCIŒ@5jQC$NSßw_ƒ:jEuè§.]ÞYàZÉ™ V VQg»DÌ dy§RÃA§ÔT€Ç=T1Ž¡î¸–F*öàÕµrn ’šÒÛ[pî$ÚˆÖÆö¨|7o(dŽÍÁŠ'µ®dì6å…«>†iX›3†1 SÁLHS¾3ƒV'O;hâÆë½Z> X¥ÌŠu ¡Á»˜×11ƒŒ„V­È ˜½aE×ÁÅU1O|Òj‘ïǿ!D"±ñ(+q¯–gò”šðM#0Ö†ÊÆ¢º;kÙdº*f•¸å |.eî‡ÞæËƒ1›23ví¨ ‚{ËQ£¨¥d´èlðñW¾³Yl†²WB7컪‚ýBžy|¹l/\ýXÔór'„È¢üò`7±oQò’œÜdÒrV¯I‹6íl8<ÁÃeàâ$/ùdáv•Æ c……qFÜÂ’üצmò)öïµw(—ÆÁ4—'wƒ)ºò™e¯¸˜éŒVpVKÓ®p&Ùx=¢ð\ƒ}^ÂREs9¬àðž —º¹­[«.Ì®UåYˆÂ ºlª‹,&îŸiM.e…§ @<K|±Ñ¯«ý$iÄ„~;¼´œz…î¸hÚ[’ð«ìâÕc+I˜hø9†+­)’w›ç‡T„ˆ6ÍèS§ÌF+\® W®´§ÛK$W¼çtþ^à Säðöí5ë¹CL©ÎA¨óC¸hšÌ§³_Ö¯¶ 1ž7˨SY$ú¤^~8_JÜ.»‘²ÂÒnûKœD¸?‘aÚµh‹V‰2?ö¹”› ‘Þ•rM~TŸ’­Ïá-è:šM² ”x¤‚AXŒV¸Š,çÝØ,2{­ìyúžX…ò¼NÓÉ7Pœ—¼Ý‚^éÜUÌÍ×(‡$*nªq˜o¹Ñ9ÜGŽ©œ4.Qd¯ÔÙ·5…ìOVßI2ÅÊÚq§Ä½À}¢ãÌNi´]Eˆtâ´¬ùÀ£ð¹èdÈyæfðs3‘Œy0b¦æj( ›;Z™ÂÙ,‹æúW÷ÕÐEn“·‚]Åâô‘1Í^ 4ýUÆb#Ïòhå:¸ˆáÏzÊÉ=$hÊW¬Ô°.b ·f†òFÁ…aªäjõ m²œq5°´*ió'ºNEÏCÚ7ýè¿´¾u‹øˆEQw‹ÚáJ×ðãàêâù'W¯Ñç3²Á]s異)¿6 €ë( ¿—^Úp!/ØyKÉìÒ-¥æì£øöœk9n—…X‡{¨M9ûÓ¸§I­÷‚RËÉv=ÑÎÐ.RF. –*Eþë~îÉtøªFoY‰ÆõŸç3LÖzìŽü°~ÉÕèÃþ4.TÏoí÷~Ž@sÛ:“[_iÛËgKºfN%óGw²~;uNÆè¸º´ÓY‡¤Ikç/»q¾9·ÏÀ0òNðœG€%%ŠòÆ6…eÐô×i:9#Üc¶CØ0qµpVJ5#£ŸÒ»­ŸÍ ãsø…ÖòÞѧÕ/£ëà‘a¸/¥‰Ö||Ð˳Ô-˜hÓð«ˆWõHxNØ5‹ Ûl, ÄÑUÇÍBx¯¸q1î\¡-|ÊÏp ÷%âwð°÷œ»pÚBžªú~¡9iU6ö"ó‡•IpD)YnÄLÍ‘ŸƒW×OËÄ×u#‚Ìï•<ؤBs1}ŽÞi>7ðþ”$œÇ@ÑF'a¹f_ºz޻ߔÒ#™©Ð…¹gNOûeÊ®pÏ]î ÀÂ)Ó.òrÕèÌyÙdAu]æ©L‡ì" [½Å5–$éÜßÈC¤BÆ­ÏAñhëYMmÕˆé6|hÝs«Y%×§"b@ "blóýØ£Þ0wA;‹ç+»|I ÔúÞéOŒ³Èwè±íUï?ø—>1Z†nô/åû®}>=£ÐÄ*ß™WÖj%ƒ‘Z/Ù?ê"]XÕç?4ǰ¤!´h‡Yᔂbx}b·Ø‹ôMñyÛEXš^É.%ê‹ ´á–aèO ŒÄF¿l¬8Þ#ÂÚÉ_¥²"ákçÀ¾¦î¢š„xÏ6ß•Âð*òýg¨»Âš²‹.cxß©âR"´Þðì¸@ÉÔY axTÔ‹S1IŽðŽ·aþTv„ˆ-üüQ²õ<…7›/ÞñƒÝâŽk ‹œ(s’V€} ï ¼cÂBŸãtQ àNÔ¤³¨*m~s¯!pB•e µB&E~y$$Ù†êb¦‘ –° 8¬¼Ëhë À.Ë ®ùŒô¡îý¹¸f)•Rµ¡Ó:SÃæ£îû½¿o¿÷ºC0Eü#E;ùäìx\vV{·t&W–üÀ´H¼¦å„ð)ƒ_diTZÿC€* ó€ôj¦ ÕyTW9Lβ\›~7ÈOÕéÕÓ˜ ¯¤-Y67ÉKÈ ƒ¯U6…­ †*ĸº>E…Ÿ™ €ÕÜ<,&ež²íŒé„ä±’¿ÇÐ#°<9_S“7ññKõ²M/EJ )ßþrzí%0žÚ|jGÂ+èy°Y0[ÚLHUŠ"…ï º#ñ èfÆ…˜%„¯·­QWÎÚe\%LìéÙ±Ís1C‹‘mJ\àqd2!ÿ:ÿi“ÑÜ—u=%ãøGñà6‰dY jÕ>¥¹¼óÔ»Y"-MõßçÛÆæí¾Æ„€Ùrë±Ab©ogQŠRo°Ãc±D†MQ¼á_Ç/ý¶dZÜò¿ê¯Â“-½+ÿ“RÔR0=/Dç… ý×Úî ¡¤*œ,¸tãʆzŒ4aÓȰC{MðyªË8'°æÒŸF “vÚÞÖ?X}l ܪÚ(¥mr_ü7êˆwžónf”zFN¼?çÈפžñ; .Z+~„4Êj>ÍØv¸D¬ârõ\!sºLY½Jv…7÷5uì¥eïöô#~YÕŸËzüpßu‚¬NWþÍ%—zÏŠGê2÷›bhßOªjC bà!„Æ·WÇI,J׃>zIžˆÍ‹>¯àìÐ )=ò8õ_n‹]`„H“^Û8?Db<ÉÔ¶ZšXùqªµŽ7;l1dï±ègXC¤„VâÍ'‚_>¶¨0gܼ¸Q Ú2 QŽ©n÷ˆµ.Ùx>áp&aå#jßÌ‹ÖWõÛ64ÕHº²Jf¼»o\b.~zïÂ=‹ðº3ºu¿Áö©Ž¹Ê.ÂðILÀ׆vϼ܂ےŒà±´\_èLþÁhÑ`ºURö–—½¦Ð}ð¸jGÚÉñL¸”Õ\8h]Õʵ2 gu§÷²sêìdMÛ å@ìæ–'.fÙŒðJä* IØñ˜¾<žƒz«Í¸¼p¸Írk‚[w¶Äõ Vu‡[67µOM¶ÌX‹lÇÝb8©I1Xw Â#êƒã`p'”4UÊ[‡5 »\I¹t—i£¯%aY‚—غúDO¼{»v mçK¥ÏøÙ~ßDa&ó÷ËFÿ%`ׇAp#×{!<¨Ê"Ìù•ˆƒ†ôƒeާŒÙžSOFÆçyhÅCH‘º5ã‘(FÓßFų zÜñº¡OŒ ? æyíY]ʇ`£ùZÔî =Dîúöû{¼ß;Ól‚~—¶kî›ÊdGƒì\c#¨Sæu•<‚%вÏõ‹È^nŠb¨à òLÖH`ÔPJÞc”’ºú}ع\°ÍíGû€Þó'šDÌùå‘ÍRóPÚŸßÖB²íIàb–JÔá:¼¦®,Ž,ÆŒwbã]$r§Òøzѵ=W[Ê+'!i: †,nߨµXô{âÙJ¥ÒÇò3.Ó º'å€ö_3SÕ]ù!Þ%&Nr œP^¥IÙÅgC´•V s’z‹…©ð1²¸¼È÷^?8ï<}ä–ÖºN4/(Ëœ‚Üz›xy¢E_*Ö?)IAb8Ú$îšì%¡‘ù©Ê‰Üµ¬MX‹}fý‰€bzIø@‘¶b/â{k;,Ú2ÿMŠBÞ.‡ÛWU<5mÔO¤?qªå¾¼±—œî f€MPÞžÜõ>øK`›iHÊÍÓÑîc9cVJ¾n0¶”96ôB ß‚[F÷¿¯|xÐ!¬ô +sBd½¢¥gäÈ/ XSóiZíÈwD¼-ä¿ùm7~iˆÉÌù|ikÓzï;U"ê9„= 6$Â! G”²¿r+ðÌ3¬aø1,0WÌM#Íä‹5Ó¨G⽈ {ƪ¾ì5p1ìº#‘i9ºTz£´^:B-Áõ>èY½(óѺúÜ=ò¦ã,φ™5iQkÍ f„å;ÇA„¢Ìg{$úV¡DxYHIθm’*åÉpˆ½òÇ]€Î¥—³OhoAŸÜ\ƒ*zdO€yùœmGI0ëYÜü¹*K?n¼n½YóbÒ³L¦ÞJ=aþ%–éÉ2NÀóÃ{˜.߬™§2„÷^#1«»¦ª_qGeÜzèd‰|Àá.B'’5Öâã3áSŸ3”CtWÖøÔ»µxð¡‚– šÒÞ’oÔÁýRh_Qeç»î®)Ï&éïˬ·8P;ìXÝ10)Ó쇅ùIõ•† íSy@´j€¡@ìTÕ«íUÄWFíô…WØLZôƒcD /<½5œÃKï‡ÍåûÑ—ÈLY6<š±@YzÜ…UÍ"Õ]¥¨±járIÊà>¬¾•GìúÉéQñ3–ÅI)%ÎnìÂ_Ú;šÃô_%†ÑÄåôÓ‡D>må¡é_°ó)·îmùíAZlnŽžÔú ’.z›;¸O…€Y=ZÙÃr;%©{ÛyýðåPÕ¿âW2Üþ…ø©Q С¬æ \¤ ¢[y§h_ø¢©ÈQÎ`6°Y…'D¼¿ðå@د{_¡zE´™—Üeet>´zO•¶E³I·=€tŒøq\J„Ôd† žÈOòAœ7¶œp( JáË´Df×õŽ™ýýƒe¿Ø¢'¸h³«²ÝÖ.ühÀÝ(²¥.–(\S˜UŽÏëëð°Áe=ø)}iuÄ&aMÄVù¼HŒái¦L{R èAJ4¾”õYþùiãÜèÔíû™å^˜”QjÛBÖ-…ôF6ÊÑJ\šß `„Ý¢›S!tS99ímËMÁpvne¨òäšk{iÇsÙ.…6IÖõ’›¢¶ =ÁÞG̾Éaò c(_tÎ ’ý åÔ9 aVþ"PÖyðä,É´™-1€s;ÿõû¶ÈXûWjƒR€Ý0 ¼pDó–-Î#’Žwy =Ë—áñÀƒ9ÅGcpäm+[Tj"Aöœ¯ëðË~ôD6_TöÙíŽâZ68vöwÉ#6± ÀRæçƒt•`µ‰‡¼]¼ç‹IE{r9l-Ó# i}ýÜE^øî™?~mç-“æû¼¸¡iv¶ß2ðV“l`ßü8Ù+ñÜôC,Ç)¯GuJƒB]öðm$ ¿2ÏÛí±:³VZÀäsy‚c žPxtèŸZ% °A}è«AUæqJAˆv¡Ð'Ì‚R:ÚT·d¥<æ|‡,i.߯>û >;3ßM+(ÛŽ@ŠÊ..g'òë<5+f­cf9ý³9ð,¨ÄT^ÍûÖ@'K>'õn<Àr÷SˆýH9žŽ%ž³d-J¸ÂsÍ‘q ;<)]1Ùóq>á\~$õà§Dü¡†ðØÏóÕANuëODmYXnMnGV7ƒhÏ[㰽ɂiÆM}{Dšiƒ‚mª|šx£>rEÅŒ–>™È”ÅË;ûÇ,}T7Ìo€‘å$Q:zõØ hœ£2Wú‘)Ø¡sÜ+ fh–)»rÊy«aL0:Í©º›À+:v2v\èî×]àüçšé9êåÚÄ4šU]¾p1^ñí€òÀ\m2ê‚B†î— Â! œÙ|Dv‡¶`l¨Ë™hRš²@Õ8¡•Û£ývŠ ¹‰2M阻ݓ֠o„¼¿r]¡fáŒG>AiWpj“£i’*}:qpÄTvk‚%L3ÿ®|,u}ïÎãÏ”vÛ…‚1¿vGÎHñAGÅÊÛù[#ù¶O3]:Ô¸ÄîÔ›ëålõ/6¤(©TÛ Ô‡r·¥²—dÈ}8+=Ÿ4†O€ïæs¤Ò¬J!¢G}<„uUÒ!ßöù!Jò=tÎLTôŠöR„³¦ÀÝ‘}Í›‚õÀH‡ñQ-3Ë“bHFx¥R·äG?º¥+~zÚÚ>}Ž6wÆae^ϵc¥µ4K‹ÉBº,½©ql¨…³Ýü^/ètlS ÐX\Zׇ# å$´z 5ÿh ?£¾cd–À?\´YËø”Ѐ²*³4Pâüå‰)lÜ`Ó358! Ó§Ð1ãçã:ýØ [ÄUF;‡t’ä\OA‚c2ÅNb¸å¯÷_C¿lL®Q»òíãù"ýðu Ç=/9¬ê,+y_û0Û¢aM^BF_ôóø©Šo{q–Ò*åüÍÓ'ì+Ý“£‡Uó¯&³¬To,µ*ÀÂD«*)…%Ò é-¬²AËB53ßzÏDæo^Rî­ÖBlÆNãboÁ%Ï2=¸­Ñ ÁÅB³H”¢ó>rEcb};¿`Éä#ÆtO8G? {’©t³§o6K`R{xü¾š!^Yä·Q¾k?”"½Ö]Å:YÊMèýÀuæqÅY©DLþ¾b¸´ì ›‘Y1Ú vÌåø.øÔðªEÁ·r='è6–;© !ii+*ÜÚÒˆ-õëA/JÀ‰ãÝ'ØÎ|JƘiÉTš Kýå43 ֞ΗbL¹Ê`±Ê]Ü­©!öÈ÷’‘÷8pògJá<]f$°QÄÚ®£}˜•# ÈD»Þ]%‚ ¤ùeCqjRE½Ú¶¾äñÅMKcí¸íqèqDä2îG.Ft¶´³ šXþU°&ìDM»¢!Œ’£C3æfÌÐ7qãⵚ‹¾cþ2¢‡¾ Ö)•o¤8Lþ~‰§aÕ̬šçƒO,*ÑVߤ{%S»„òÑA„ø4¼®q€Bç@­™ º¢®÷êl'ì˜û”ØU¸°2O×õë\/ð .5н{f2PuD3¶žªïž*Äa2³: Ëi2:لȯÆëãÌ æ>˜+~­ñì÷,ÌewîÇÆÅ ÞÅËà'K–~õJ‹•Q°w¶(Çíbë¢ÙÚÈWï¶OìŠÍ5¿6msåKU¼kE„…Þ8üqÇûfÃuáŸàð3mÇZ—_ˆÇŽŠoš‘©Pê"¿¤Rz|ºÆø\1æ6¤ÖS÷z°lÄåFDœZ_ñ–½uü£ÂGhñÑ(©») ½'Ô’C§¶ÇÌ<‰OÔ¹Š¿Î­(†î½üèêH»‡1•«Ê²¥yîY’;Cܤ–²ÂtŠL´ñ¹­Ü¢Ì–¿9~\é|"°1Ž .‡jÔ—~ûºZd5ð#Ì4ò–[[ÄI°Eu­ÑhèÃÑÒ2"T¥TnS»QT½+®©“æ÷†Õ¦]þž ›;84££„]Îï^÷Ç_ qÊ3‘¼6Ež/uíÁ|é£Kô ±6Wî~6Ûv7”4ê@½†'Ú¨ÅÃà|<^·¨£Ñèáæ]˜¥o•r"ˆ+duB86Ñq³£°d±‹2Ø:94~¿Öy¥ý%0…„·{·Œœ7@,ÅÜz9W²H6Æ“ç>NÃRâEm›S¡7¸7ß{!«M–Rð;éWoús‰«žMåºPƒW†È·Øœ1ÖCD~Ó‘¾Ÿ×³çf®þid™Áf„éèW/¾ù ?/€zQKÌè|¬³ßø³”;h$Gݸ%ý6Wg>£íÆÇ¬¹šD£qË’´a…†¹cl×âòw$‘›f0Så)‹Y¢ÅÉy>ý²š/s™o#Ûsî@§¸5°nK²ÿ:{•À¦@+ÐlH¨B§ö@•ý†Œ! žAûÎìÇÎmGŸõ¶F1€ k´Ú­í$I›ÆfŽ]Ž^9ŸS­†D%4г»s—»å;Œs±Ù£æ«þò Œ¯ý}  1m™c&’Ï RÙÕ0æ}Æ5’xï² “ŸŠw«&ie“îÃe7OºÊžÃø@èFü~Lˆµ‹É1éµ<ÄgǦwÑo‹åÇ´ÅŠ/—¼_Èݺ3²¤’Ú(ËGíñDyX{L¢¹4$`tüëHºµÊPgNa«¦A<Ê< ˆá(,¿„lÔ† è ¨9Qµìò€Í)õEFã â'ˆjÓé{û)eVíY¯a´4?Ó\Á´À©>ú“û¢m✰{M«uœ.ŽL‡ ðG‰j%­,ÄÖ]‡g}œ–ãÞ¥ÿæ:ï‹1.•YÓØ›Í8ÚÞ½7ÓÐ!´f;Údz`—'ÔðÅåž’× U~“‘Î#ЈI„ó½I©üΜ‘îWçgí•Ü=TµÖRʸ¾"ÍpÈÓÎ ~ÊÖüšÛ㎴‰hÝÅ·V‡¼ ù,go¥ä¶±d’Ø¡˜¶ц'™ùÏO%Éà:–ØEþŸ TÁ ¯Éq²¼P£ýøHDÇUÌ>á¦r¢µú„v076J¼j°fwê¼é·¡…¼mãm¦IJêîïwÕ!)äJ©™êĽCæj†wsþŒéýý:úË£¶T£Ìðþ€meâ•”sXIØNЉ΂ì€ÐCÏ5“a³ÄšçX¼öÇoxø³ˆOÂ÷vN:9µÄRi¥ñ7„pŽ~ÄN›ÿR}+b'³¹È[ ^c îÈ©I(„‰È£‘¥t©;¦P®™]¾*ãnþÅÁ8ˆT$é&“ PYýè1Ü`Unƒ@\ʶùÝÎÎ0™7Ê|‘sóˆI®=(¡ã&4mqq uu¿ F”ÙÙÒsƒ¨5dßï-§†»ÑÌ Þ9ÄBHÐ4Æ“§MËH­ ·UA5ºÞ¦„B¢VzüÀ4C ™Ø©«øÁ|„¦Ò¾un’ùé¼éŒ$ÅkÛ†a¶•¡iì ÷FUë¢Cë}­:¥®oJëà`áwùÛù ÌGü!{;”ÌÀ,Vw|ï7{klÙ-Q_|1M3ÒΡÌÏàj–µ¼ávƒœ)7#>WuñÏjT}&Oº”ê<œ !Ó‘5Hi#/Æ·’—g¹¼ë‚ølHM•³ìm~kº?›Ð  À2­¸†à£áL­YÉ~¤oš„ ï J¥ÒçÌñ«¡¥æh9fh5½C›ÇNTYÆ}asÙìŒÉŸ‚ùmŠœPaÝ´ëò-û—-˜—.28G[}‹ntC÷kÈW«ÜêL¾÷ú­ÉÓóïYÁx ®Á~Wgßµf;@tëÝôÕ0Ñ‹ê2Wäô_£i»Üh«†~²^÷j3ö™î}‘÷þ<΄‰ú˜Š]¥2Í]ÊUh>úìðÎâ[ÒLÓx1CÜlæóâó‚2“œ;îø0‡mÒ‚’¥kµ¢$º44Ü“ÙöBÜzpSL "ÿÞôúX‹$=–Óñ½^kíŠó3Êg?4ÀãŽ$|Ë”™ ¾-‡ãܧR /qD A}Ì ÃFít™¬¿ncÁ¨×3ut¼­^uw5JÝÉÖÝsP ¥ÂÉPYŒúŠþ5ŽÔQ_t-ù¥IcŽa4¬ÎNTœÜnHRb”+#Vc„Ób(ø7iÙðÇ7F#NÖ8,a-5pÖòñS€¶Õîe3?ÄäT=v38Iâ>²˜ Yº´Ú' ò¸[ ?ÖW=MÚŸ}4±†­bv§·Í­õ‹. ,ÑàË)IÔ›X«#ãñ\ñ_²WM y™_²2£>Yô×!dN´"Ê׃³4Éecà@_zÎ’UsÒã}HáT¾fäwæ³!oCn ºëMÛzî¼­7• ù,Åm!ENâ>Ji¯4Kئ~-‰%¶¶v{î.”T 3äEJq2DTG2YÕH{d`ªë ÒG̓ŽNVËe&<õÔî+{›ÝçgÏæ#4]º××õúçÏDî³À­"S­ ˆ!S“¨³}ÄiŸñ"b $CóH_rüÀ8œÞ>ï\/4H‚C(øæ­$ŠÌ–`A„yXÏ´ÛÀBàï{L|Ç•Á3mL£–˜~öeK‘Ü\ ë¶Bó`Ó¯3KÂoy-dè8ë>Нøªñ”„“D‘ëĨ¶•4åÄ5ñ *#Π5e¯ùÎoS3*§ƒ®¬®Ô6j±Ù—îÜzʹÐVÏÙH;žø¾>Qý®ã´³¦>-‚Äe/³_¿­)ÄjI2ñèw4п'ùš¬0$îï;Í¢6~…›áŸš*áã®/¬ß ôHo‡ÕEáô|ˆHçW¯}ÁOÝ,Ž|^÷$1Ø)%›í Ù0!ƒûšô4xôEiï[{Gþ>΀ÓcòŒ²"ÔHº“L èKÜSË‚O¤ ×ÓçÃ᳇UäHL&= •wV¨“õ°Ê]”kM.‹™Cަ=ôhlW0c½îœùTµ“ü˜û¨´LâA•(ºsÃL统jÛŸLH Ê&á‡é¯DõoBÏÌj{øÀï#/1xLéŽ “5\tSÑMáJ³¼ï̪mÊE¾uÕž-‘XÐ#Ü\%í•` ·ëJÒÄŠvê>çAš®Û?™ÇT…ZˆØ‹™Oj؉;òÊšh"q‘èL¯èìÅû„½JUñãW<ÇÇ(•(ñÓØ/˜9€»%ÜGÍû@gûš7|+ŸŒ‚Ôz4õ2E¥œZexC12óBY‡24\ˆ©¤† 0ÝLÕ¾çÞ£¤ƒMˆa'iK¦'//¡¦€.|uÝœI/¥‚#5I|ÏÐö½hg|Ûrcþ zƼ÷Žm?oÒÞQÆÁàNAƒd!ê Ôé1ô@ãB©J ‰ŒLQÆ×˜0ø¨íÜ^Ì“VÀ'`IaTiQ¯wÛ#¤Ín’ßûúM«b¢rDŽ3ØøqO½›(WIhº~å‹‹k(Nã¨Y ´ÒÜ€<Ÿ(Úi®¢mæ•·9Üšf¤ÿ4ÛD·G!;Ã)%¾$k]^–ÜÏÆhÌ«|\§7÷C”ûx³¾X¼7d[æms0Ûµb×ïh™Àåõ}Gs piD!W´W p+Fõ¾eJß-èlìó:`cåU•´®ÿ¾ÖîFâýÅâ:Á˜ôv_r&z‰|q~š£^NÔÑ#iâ¾–¹Ä„ÊÏ›e»AЦßxÙiîd­VðܽÉ6j:ÏbµZš_÷H“9ðˆ–±Ä lò LÏyF W4ÿÀÜAaÔè¸Ê݃‡CP—IÍYŸµÈ3©¿A¨ÿüã6.ï]ëíx2þK+bÉ~ÓÏœ³Íe c ¬Ÿ¢PkýevªŽçxv]G)½B½ c€ÕÖ3d6Ø+¸ýëôEˆ`¬:˜|Øìý¢%TíluEÿ¨.µ—Mdª×C{p‹dü'<Š9ÍæCÿ4Ö¯.­é =‚ׯñ­h@¦ÜvûHXc›†¹<ǃ%žW®,:û 3­»žëC@£ás­DÚÚLàRÐqO»_Ô'îmؾ÷Bµ& *—8p˜|œ-Uƒf›jNHðòð%tFíªvmg¤Qýiù—*x¤ë0Ÿ9a4dœ) ¤’Nâ•~£âwÒûŠëÂpäน3høž=²]htێň`e÷ªá’‹lùVa/…мzãTæSdÞ^Lq©µ0‡x=u+açÚéëG„Ž|zÙè[ ²x¨œ>™i Ä‚ˆ”øþYÁ5vbÎÇL¥ûÃÛ”ªîü¸cöú`Ûa+£OŽÜ=ÒÍÌäûb¿b'‘öQ°¢ ÚíˆõÜo¾çªË#jÙŠ! ÇëIç²a$ù4'(Ÿ~R¿®|PÂÉ×ü¾àtÁN§+Ù¡äw”5Κý1ÞJwòÁvOØÐ£+š:iøŽ»)j¯Ê³š¢°]aÛñ£ËûÉ'¾ë½K-…–‡+Xu<åRÉ*´ ¹S1‘STüWîâBlfËÊùðÁS/¬ Ïq‹»**9[]Uò{ÒÜ$^®Ü,ðCyøg>Úã«pï!N”¦Û;W37šsBhC­À.>âúÊ]€ùÈÝüI* ÂÙpD7QﯛðH:Ë}úÜá$x¢¬HÛˆ]|"èÕefHPìf•ꤰ$†2Â3BgE²[ɑݺ•]ËÓ3øW©‚Ù·]ØlL–z ëN‘jö©Èp»+…¥Ö¡ó‘õ½AÀ+ÚØ²sIù ¸¿§ÿnÄõ€ñ;X eµb¥†eñ.þŒ~Z? |»™ër»p¦Ù¯­Ùit1Ð ò²»,èÑrPR+a-æ麡‹ï¿~;L¬áq˱ÃÜT`v„ c¦AˆbH²`ÝR›ÚåNxÏ5¡[œ;VCtÍíÀó¨xu(ê§ Ô*Žý‚x¿¾ÃOKÃaÞÖô ÇW' )áXvUbyëí@™>!lƒ.Ivç8Hâ åƒh Yº®ü|©HR™äúCf&¸ñ•õ€@Æ—j.G~·?‹Eeu²Ú/W€¨›þsŒ/Ê#{ìÚ‚ìMÔçYæG¥°=ÎçX½Íô3DJÖ_§åõ»Îq½>ߤòèm£Ã^®øn†”ø¹Ñ ë0F¬xqcDŸ8^Q5n®·?ßk@TWØMX°6(ªgïÙ÷²E “T%0‚ï“,<Φ+‘®t2$§Ð2åql㘠tŠŠ¨X‹¾#K1w¤=ý̘ iû“'še–YÉlÊΠ3ô<€I|Óa¤>$7Ší}­Î1xf׉HÁ_É„ Ì|YÂ&ù¨—{¤X_ƒE¥ÅɆôu9ñSYeN«Ù„BîÓ¦à&ïÅSdC#Ë™¼.Là>Ó~/Ÿn›nÙióê´º9+O‡Ó $y.J¨-ï'Ý‹páa.SËÑ™V¡ÇLÍ™qäÉÓ婆ê(ˆä¡ D¹LNN5Ê2\µ 7¯žHÌÓŽÍŒ|׋ý¤Ç†ÂÙ È9çrö*¡µÅ”†Š3J|âOiz$ȆVåb$!«xzÐæ_Ö2œ“Ÿsó¯pçÑÝ,,Œ¦uD¿JYVTï_ƒÇ’œŸ¼3=Ìê’‘Ì\zò2Íà»ö…¨é öÍ^qÁ³®ÙJÌþN^®Þ’j>X3)§>Ñߪ²ù-F\ÀØ“ª:I9ÁXÊ€—†‰b¡ÂˆJ‚ÓoÂN[F“›Óú/6c5´ Ð@–P­Ú“Tþ±Qhø =¤ì—x'bíÜ—>5“óÕ©ù™˜öat6ž 7µXyÞæYtâ.'5g•c«.”šmXp%›cmJN"Ô-3[„²J™aY¼_ †–{Kvb7R…×ãåà^0™NV<: VøáƒÅܯ/y¼ ²_ïÚÀÌú=àåKöŽÜ–ˆà ñ.ëª4ö´™bq]ŽzzFä;¦å횘¿%ª¿ÆKém‰˜I6‹Æ ÌØ ÁG×3ÀŽA¥”}*(¾Y–&¨‰ã¯²†›‹ˆBP˵#®Æ“««ú­j[ìC21ø†$¿ÌËï^Ú„¬ÆS¬q6ú  B¤¥lʀ͸ãšõ|Òf‹ë‰|öœ“``~wb§a¡ó‰]òqÃÌ5ʦ·ÒÚò)½¶Ý:‰ë{mIUt¯}÷ã/¡¯Næ–!Ð1 r(ƒ [–¾+þzPÜgþÕU°n®¤"èÎ}yÆ©•b:/õPHF=¦þ’n^NÓ\ÖôäYAV¬³É.AðÞùݦfÔL´Ú}0uòl€º¯ÝSȤEîVçýá&ñ¡ «–ÃiÁ¢7IáHS)ˆ«Çï£Avë¸hBD`Wdæaø3ûîaZË»HÌÀC3œÝmœwô;â‘hý޹ñ‡—Ù™o½e☬[Ð |DG_µq¥F`gÇ´ÜÛI*Õ{ÍTŒÑÁ>! ü¸ö‹Ïhs<æPáTóJë–õV§]9‰ÇQæ¢@–˜€R6æŠ ÖÉ]ðzÕT`;K“¢ÆëüaàµzïÐéì…3c²‚Û@ãÖÒІG¡Ñ1†1Mž K4úiØ^]éGt´pGŒëÚYýˆ Ù“H.Dÿ@ö]·‘5ÑÙ.ûÁݸÛ&¶=2¯òI3ÁæÇœžrIÿïÚ'Ÿ‘Ÿ½5'nh7•7îºÉDG5D²‰\v5ÝË«³y“ÀO /ë4zf:Ø#^mm½3ÄP›.ªˆËµ¥¡/uÉkß“ OîÜÖö× ?Mˆ-ùÈa8S,%X Juñš«n]µÉºˆ,–GÐÂ*"¬éôP^ÜLÿ!Øé l)%\x$‚þ½™oœÌÀ¯Œ-pr’±ø î-+YÅpYóªO¿Ì$Êó8«uy‡—)2{%ÎÌ“y«Wp7*3ç# ÑT‘ŒµôLE!\é<ååýNct¶9榯þN˜‹‡ßiÁb]â¸vät±ThÓs¯}¤õÝGðèØc³!ÆŸÓmu^/ î\ñ»(uíHó=ó|õµS™ˆfoÂpõ¯}¶ð =3¯ŒÕ;7ýE*aÉ["bâyÆUõ|6óK;%Û½ëäϹ-<‹ #y<÷adL5÷çSÚc”ßÞ÷ó÷æe˜˜›û»juQ²´ôQy“kVk¼éO@Ä«|ôþ ¾þÐwŠ£˜‹pŠêÁ(ÀŠÑÜC¸n¹y ãøN3Z•€Ðj‚ÒFa ¶¦o\Ö^”(FO”Á•Øÿ 1 FMT^©c¹ûƹuÞ, ™|À%ÂW£ËU/·H-º¡;«¢ìUgåŠ6/ÂÆ´Ä2áåãÁp.´Ì:ÿÏ õ\þéíV’¶šq¶)4ËÓ¾õ¤,/«|€W:mü`“kk´}Yìü‹ÏÜ8w£¯Ö!59ÄjãñÔŸ~çq‰\ª$×Q¥ž\E±ŸðNPHp*ß[cí8«LÄKB 6m¦'ÛJN šAßõrÖŒ¬3¡üW oH#v(|sÇ¢cÈ,{ÅÍ‘>¼w˜‹ª3<–Ù"fF¥Ä—$úIDÚù½/7j´/¢òöÄy¿d£Å7{zbæ]{qVí0½_ÄÅ<úÏnåú°—é¸kç• ßË+ïñ¦­Ï¿ûÔ Šo\ c²òäØc`\Öâ[¢K¿†9´¢÷û§… ‹ 9çìú½rÀH­#j{¥¯+qs“•Ž]®;b{À Úv-³éÐÅéC=h¬1¸VzÒûrÀ»LþÚÙã Fÿ›MµÈÙœoN½_QGQlsdÆÅÙX>ÕSzºOi!¦=cn»Qf ?åÇM~ë"Û •ÈÒ7M»Dc{J&÷¹ ðpï‰#¬¶s}Ƙ‘ IÛÙfb×CfŽåM=¥ƒ‡H¥ÂÙìe™åÇC±6§É{tv¬ã5 ¤~ŸÔ×Îî¸ o±æ\~’÷PŠõ&3}ùl9˜ÜÄ÷Àz|c8t£Šäê9ûZ9™­0,j‰ò5•Fg½ ”lº,½¥öô¤¥ß~Ö‹[Dâ­ýoŽ5ù4/ƒú&ëyâpQÃ4BÍ\¥¯¦Û+ÍŸŸ*º¬±Db:I5´PQ’)ã6YJc{ô,sQ#ÏG²yõÈä¢GM°f‰,È $öÒ§hy^.nu4úÞõPŠ!no]¡«R;„ä’ˆWT5ÐÎ`;¹äójÏUæÇ‰!¿ââô²;+SzL(¼tMŸu[ñrZ ý —úÔå´—íXú ¬QÁ6V¬ú„.1{—yÂâºß¥jm*:[“ûÞË;B¹»ºF$¿â¦c˜ØZM??õõJ±deäk|¯:¨›Mc_ÄÅgÆÄ›ËÕÄÜ"b}‡à€È{èÌ|Šl2$Ž”À€²Œ1RÑøJ;P"§Ð¬ŠáF©adè÷Ô /2±êkÓO-Ö)Ñt¶ã'V5Û:6=mÉ)P8G϶=5ÀÒirßöâ—I§­~~Ž(j‰|«Qm3 1®|ûFãŸýZ0…Âä,Р¦Êæé®»ª@«lœ¤¶@(0£DÄq÷ɈˆyæÂCÛög9ZåçL’D§i±¡ƒ© ÿ2DPéü… ;üáÕk˜Î,§e¸ƒÂ\¿U)£8•cÁ–$²áv­›Lë‡5w¾pñ¬Ø›4=bæâ^ÅŠþ*Ñ…5ü/’al?bÏcã5ƒÏÃP<‘ï+ôÈí5¹ ü)ox—£¢YÚü¦¡ÈÎ…ûã>“8ýð9q×eç+HâŠý‹ÛNeÞ¹ô:»."ª@²wƒŠÃ?³­K6CC“4€<§n_ÂÖꙿ`_€g‘^ Ÿ©ÇÔiþ<Žü‰®¬Ô1©’Ô‡Obe €7äÐø@1‹={?ó:‡Ì‰üœÂ9·W¨5ôqà8C5Ÿµ sǦÊÜI˜œXe’öÿ ´Kçâ“{Dd”Yáäg6Èõ ˆœÃ¥ÍÂÌ0aIQ³ûæs»¤– çaã©Ä¶Ò¬Ç¼´\™Xb±2n¦EtàåÁ(;©!6fb·TI`F€ÿ8G^x‹ÛýÎDÞ$ÏæulÊ<ßžhXïØh¼mà ah¾óåq+“Ž76O޲ÃÜM .ï“YÓ ¹åH[è "^aÚËÿ¼Š¼QË,¦µsþ±Åc»7…ù ]¿o|¼PË£J áWOΤót.Sïª+u´†rÏìŒh©ì{iT^ØF[ß6s6ÔL 0î¹eO¢ÖWTuÍÅçÁ&B^Ä“$¾Ø¡\äâï@KtÝiŠSƒuàÛƒkIƒ Ýð›ó‹,Cª;ö•% ù¤ÊÙõêìÒÙµ÷& +¾†øeUÙ霧¼ñ½îû4o‹âzx^Úƒ·‘'p¡`s ¤ñæ ‰jÞ˜ÙP>ÔÔŒv02`\âh Dk$<àrðß<ˆn5HQá ­e ·kƒ•th‘k«óä˜>ÑZHÉßø0·´Ö°À]Z^s íXq“ÄÕrÉ`•H­£ÄÊ#C`C©¨hxÙy÷H·PÌ:•®ªUÅK'™3HÁRqZÐ@ЀÛí»‡ºëyqÙén›,ñÐGÀ@wâ¿UYJW­[„N‚üºØ\KÛj4 £·¿ïØüÔª§&RD»‹8}ùH®I³î}ÌՎeIb¨«íøáõžÇ½yÌëù¾È|ÕÆ’‚EŸu8dS÷†V_¡3–À•.e¥ž,f|Æ?$kE ¥;YŽEyg%z8·fÎïâi0)–žZÐö'W¼¯€;a o߀4ÿ‹ú€Ðþ 8e—­ÜÈt–)+þÅM‹±àż5-FòÀÇÝ˼~ZĢ̠§ˆ#ô1ÝBOqǼ‰’]çy7!,sç6ÿQB1 7o‰ObÅz°ÊJ–“Ø;‰qÒ\¼gÇ(ÒDúÔß‚„ŒŠ›¹¤Ð‘7`tDY2„ŸYcXÐÌyJñCÁHd’èŠ é#fe“ï`5-"é©×ck…,ñ6ÀõþîwI5Ôx= Ü2óÞ7¶}Læ6‰‡±ÓI¨|SVøíØ«sÆØÍrÉIô˜°íHºW‹eèlüÈÃ}Úð½ÄVçÚ­—Q¤Ú‘Ø!^²ÕùpÙ(V-¼å‘ø2¢‚vDþbªÔnÊÅ*Ì ¶.NH!uöíEg6¹©Tox÷¬¦I²bZþlÀ_FÔ;Ú_’öq´ñ·ë ëÕî®îpè—gÿr(ïÊ/Pæ’6^x‹fxÊÓŸüФ2ÃB!¢qMRP Ï(b·iy"_§w¦ (bÑ3z HRN }!qé-’£œþM¨¿Œw£„Yb¶Ó‘Fÿ¨ ´ð÷mòÞ—Îå7¦ÆX’o8Œà¬­k(£n3u¥¼<ó7 oµ¥8ƒ(z/ 2‰Ò3•’¤um]à }ßAHicVóu‰3è¬ô’5Áóh¶Î|zna1è%_@Gk:ýÞÑc°¢æß:±wÖË´4Ü„Iù¨ ²ªk?bYÍ:wWŸ™P*chžŽøÂ'§½Vn%Úƒ|,:‰ðØòÕ$*§âµ(fõˆºçs6ŠŸ>~§.…ýÝš8ÌPÆë J( ¶hš*jg&Ü‹’4ZÙê# ŽZ)n?kÏ·oתès)FhÏeÓöåµkÌl¹Ô³À¨Ù\¯–Cä¦GÝYÁqÁ³t=Ê‹ƒ®ÅÈ»öUÄÍ¿q0,Á4ŒHŸùýJ\ê±e›?‰¼é¥]&›vˆŠÇß4Éöïxx¯ZuÈxÓ±OÿÂ!9€›’ˆ¼”É鯫VvdoÓQþb‚pHDË`=ö;r…Ñ/[„¨*ÑTÌÿŽ·ÃÞWA ¡.Œ^ÝãO¿è/L*ðreç„DþXÃcô¨©Œ>™HƒØ©¢´…, Ýž›Š2G…Ñ¥æA¼\ËÊ+Á Ì´À“…Jm´bÌÍ:”ºÛd;r~Åû@V´d´Í›ò 7Œv ¾‹®.$ð$Ïðví£'/õi“ WuJg"ê:NËn¹w±“¹…¡Å`¯Ñr“ì«O9£[Ezg´JI¹;æöMÑöN§ð»ËŒ¶Ï‹É±]WkÿJ2ÞQØ^=ëRÿO=/H!½AYíÿv#¶Ñ›V¥$ i£¡ßâ Ð÷ti¡`A™«&ÎÒ“,ÜÏ.aø‘•œô&Å•HóÆÍ>HmŸ‘«MÖ”HCmVœâ£Ú…Ÿ4ÛP;×<ƒ”jǃڱhëµä *×où.K«Ç~Æå» Š¡sôpîp>@hw÷Ò!ߨ3gÄË?Xg´ADw¥ÓHXoÂÚ§Í¥ç`ƒª›Ä&ÉBn5ôÙ ôユØò}S0Ew·€Fíð‰ü Iƒ± H™'°Å–]Y,ðV— 1dz½èÆA²ïʽupxIwBGð (ÒØ^%¨þ!Õã"µÚò2q< ð%Ò6_)4¿Sl#ï祅÷¾ÌĶwï”j-€mÁÝ«t—\yb"T Ñ{™õ· oì–±+´³ƒN.Ö$m”—êªÎmo<”cˆÈ]X¦ˆOˆ‹¾ÊÀÆrŽ!Nbû ©XðG¡vn;êt‹°Hd½`î}µÔÔÎÕÍË0QKèRü7e»÷©¾¸ÌÿÁs‰ö'¡Ÿ³e3Ã,mƒ)ñü,•M•”z.˜­àsÇð»À§ƒ:jNàç^öµz"nè@˜0ÝÛÉ]=† Œ2“ mgúiàΡSék#ʸW29è—Ñïò|1Vã)ãÐ[ì-ãG¿ŒY¦´Š¶qÏáJ•±=Õ¸FÔú=CøÏÕõ±EôÑz¾î¾Ýºã5>RiÑWÕlÙÒ9ŽÚÔ½å%LF`€µ>‹8ã×ìhxZI—œúRC©:ÅY3Å–?‚^ÁžÀÄE¢ŽÍ2x¡·&XÛÑíû.îâÕ^¤؉ [õLÎ= !nÙ®Xëhq£Ÿ N7÷IˆÏˆ ÝôM€Þ¶ì´?Íßoeš{PNµâú˜*K® …kÙÓÏ— IAŠåuiMyØ‘U8­²5Ú)ÓïÄVª°ªé/Ólœ©Øú¤þGä~ÇÀ“ƒô•b÷e$YûØqÐCù3 "k!¨/…8oýLX…‡ TÇÐJ§ Y$Yn Ë]øOÛ¾ù„·tC‡SÅŸm UñSxì9²–ýZô¼:šL²¯}Æ®»Ã¨‘¶Ž¸ øþX΀ުŸ{^â9màf•øÏVè½ ­ÅÍ"ÇM½¥kÏ…xñZíÍÄAÁ±>/.?y'ñÙ©ôw[Wp˜¦ãv58–I†·OrûѰârRwøùÉóÕÎekØŽ8çоŠUüV¸—´Ø‡‹tz†¹ÓävÂÁ–ûÍOQˆ¸™YFG•Š”μ'-ø‰lK±ŒWZ x©Ml¢Ûš'f=Ñ” ÅyÛwo°q‹@ ;g§%ªã¤¹RnÐk½ŽBž¯v’êÈnvs ”š,äº fÚ½ÜuÈ­”!à˜ `Ž4@©m¶GVT¹ M˜Ídš* ]p¤(-µÒ=H ‹ŒðÌ ˜Áþö0É7ßc½QÆÿÀ›¼uøÙŠT]þàó#Û1 ü…3Pˆo´ë`{\V@•;$æG9ò%yõ`½Â¡ÚC^§´[À„hΰ[0p§E6óÁ`Í&Âí r/ïîE#^ŽŸfKìw‡÷Ü«U47ê. EÙÙú_Õ•–ÏqKU.?ðFBüóÝlsÅZ™¦ gÿÆ!8|AÖÅ » ·Ö¨Éª.ÛˆRú9ìâÁYÉs/o"@-0Ìå’LxÉ†× Í¶O;É­èéÛ}ý`y=ù[1AçAjöïµÓV¯qn¶¼±?Ý•}³¢Y»±-=´6t?‹ÃùIÏè´'ÞäªõaeyúÕù®H ƒPS7•«™q#Ö‰fikF³b´ÆŒK÷{û«‘+1 ¡ËNH°µÍ±ß†Ù…I<6Êsˆ:¬–8EÃô[™KMã/ÑžY‘•u,¾À’ô®ÿ]€Às‹ •ffAC0Or赿í9ƒÍ´+Cu’ÉrÜÍÀ%¥â…wšˆh•a“ VhR4^·)ó=Fàæ \–U ³haýæVB@ŒëVÑš8Ó·ñ•³“Ðëñ™% *€«Ù0…Èû}q:-ÏÓsù…úúÉìÝž]}vÁ*T†[w&`}L^Ñ“ cé6ÈôG\˜‚¨nIŸq—dºkX¦¨8f=~a=Ú•"ï«eO¶ ÛË2¤ïKU’pmy«ÀŽàÛYˆM®˜ËŽƒç.N̺ p¶ìÉ‘6Ê=2‚2åð ÅúʘAƒy…†ïøÞ_gàa³ÒL3÷o—eSì‚àZ¯èf9z ’¬s$&âÒä‹üäŽöJËþ׃ĽŒ O Ç[Wœ$¥®†«Ã$°°Á›Þ˜OYæ.Í{m>AN !”Æìë¶c\¹\¦Ê~7-Á¯²ÎŽeýa†Ôa‡ÙÙÌꢙ7ò«)«¡Îƶè¸˶…üsÞÂZú•®Wm¯|«éÔâD8vÇãÒ£ºï3Ùe­…ÚB€â2²ÿ`âsUO—@<çEß…7vµ¯$³È;C_6ú™£áÉsC\cê¥k‚iiM4Ú ¹? ß;£œ¬îJEªÉ4†eç‘,räaÚ)]© ÛQ[gª*#¢âª5&Q‰ý„ÎöuWElÜÙáÀð8RZj:£„¼&V_Ñ,™Y£û{“I$„ *’¯N¹[º×~«HÆÇPva’º«¯˜š‰+éUY2jzyÉÚG>I¯SŠÙhyظâS;ݧط¶”µ›òQw1R:÷Þ“«:ª#Aje|NX®øÜÇŸ¢A–¥JsÕ!/G¡I½]À~8ìIô—Â|PF}›’¾7u Ž%ÆØæª§­`/jr F1åÂ_¬7ÞËzwœ7uvKlk¾‡Br'Â{6 ·À5ÍÇÂ7:'šH]«q¯SëiÔÆ®„‹&£A05ÚÁ»/ÕdPóæ¹U,ÙÅB "…8\ݤ+Äw??ÚH+ÿ›¬X ¢Ù”jæÖUvuŠÃÛ(ïÇ(ÅØÔÂ%óÓ)¹/«Øs«‘«ø?û3uËZaï4ÏUíè £Ø_92ÒWòš–²nÔ¼ ¦ä0Éx«8<ä%ƒW£à”zwGPŽTS(¿J®]Ð2ËÞõ„>ÂvÍ«žá—©7È:´ Ä:ƒÆb¹#ÉqY‰u{P›ó]tXf¿†¿“ˆ—³§œÿ»ÀF‹ä…FvÞÝŒ¸E4r(HÖÆ4•«a‹y0ÚM#‹I„qK{ˉ¡Zn×C:ä$ÖÚ‰â}öTð¿»| v"˜úHðT*Úïvvq+÷M†÷q "«ù}ç²éjáÊéˆE]äÉ/ý®þ…S¿ôÿ¨…OxLd°?°‹Ä¬µâæÍ²´ã=(/±ÈèxH·SÉë4½e#7~ʸªAÒ4K6-ogƒäCʼ8ub§!|ˆ‰XúõÖÐf³aŸèX]ØPzmX=‚;ä m“?4 ­nˆžÝÚΛƛգ åìMAl€óF½Ï+µY§a†³Â‰ß}ûºm”bbÌ—` «[6"1¯XÞIßDOqÁ>e4 μV¹q¯¬Oê~~ÍÔ#ÑPweÍÒ4.péŸöSÔü²ŸC¹¢–þk€ÚFºÌs˜¦yëÚ`Ó·Õ.¸±8E@ÞLð†"ÂAwyºfØC[HÅ©úS~]ÒlÝÓ«^:3¬xD #ø'´ñ×§9„&T¥¦ÜðŒÀ½™Ò£C]ÙX0*`Æ0¼ ‡ž®G¶Þ®YÿáÀ»Y!eë"—ûÝó•TŽ\}Y Ù¥¡Nþ³Fãeñ°¶>â—1®ÖÞSêYë¼,Q“#i‰të…*hÎÕçsPec;Í+ç‹wø­óÔ$$ 1kÒOËÇ‘Íi×=rKïŸÜ˜¸ø ‡°s=›k'XÑ^ªËî‡!±œ>Ì—¿£DG‚ZpÒFž{–aÓÔP¡'Båed\ùàzð÷ñâÍV¿‡âHÓÝìen´Ñqè9B6?¸›š*ï¼ýÒ ‚Àò·ÊýaÑrDÍHk Fñ=5v3¹1qùÉÛ-iøSBxÔL-\^ÁòÚ×ÖÒ&ž÷» b÷°™uÎ2®±EÈUW>ÄøÝ¬Í æ.LÞ~ÚøMZQ> stream xÚ´TÔß6Lw—¤ ’C§twˆ„4 1ÃÐ-Ò]Ò Ò!Ý ’¢¤ä;ê?î½ß·Öû®Yë7ç<;ÎyÎ~öfaÐÑç–µ…Zƒ” 87‡O ¯©' àãàáããÇaa1ÃAPCÌ …ˆÿ‡]²‚#0+8ÂM ¨y8€ °8PDœÀÏÇ'ö·#&P°òÛ4yjPȇEêêÛ;À§ü½°Ûp€bb"\¿Ã². ØÆ д‚;€\'ÚX9ô¡6`Üç¿R°K:Àá®â¼¼^^^>>1 äyÛ8ðþJnàã úmü #îàç uØ!(€Àv ÄŽŸ»•'‡y€üþÓðß; ` ¶¬Aö`οÙ0ÈîÏQyØ`ʇÀ÷ë÷ÏÊ ¡-[(ÄÙç_÷ßÅåÕRÒÒT5àüMø“œÔàÇ- àæâùDø"ˆEÀgù‡ÿßÜ£:Và¿îÆ÷oFUˆ ö‡âíþ¦áù—&ØÿjÀŸ Eè`ÿWöÏø„ølàÿ³ø‡üÿiþW–ÿ‹ìÿ÷>JÎο­ì¿Ìÿ«• ØÙç/;BÅpDGhB}ù_×§ ?M¬ ²{¸ü¯Un…è Yˆ½ó?vW{ƒluÀp‡?ú»ˆôÎ`Hêþ5fÜ@>¾ÿ±!zÍÆ 1JÜ•úm!Zé¿T„Ø@mõ¿0À ³òÁA±øÍi òþ­k/ G„ôvPίz"‚xÿPBÀ¯!í~õ€ý ˆx!ˆÛýŠx¡ÿ±GœÍëòDL’A‚Ðø?{ €îýG ñ‚þ›SÀë ‚ýþ‹² †¿%‰x¿÷¿gä ²ÁYœ‡ÚH¼p¬{ÑvY+KãŽ=.5òý4ƒƒÛoÖîqE€™ÆQ“ý| v.›6ôèÓgEö3™%ú[¿¯Í ˜-)º­×þ7IzSÛ­8')ú'оÊÖ÷ÑaÓrÈìøßºù†8¡6#wª±ä¹yˆè^zõ*{×÷U,†ÏoëîÔ«ãÞTLsÇ=‰}R:Ë’o3GɈç¦ÃzDrìM8{v>Còzâž^-‰'à N ØÏd?þçœïJ•¿{3• %êÉ諟ÜîKµ ~eÅk°Ñô9Šö± —T ó.»ï¶–Þ%lï‡9+Ë„8;%/*™jLìZ‹J²K)C2†`Îñ'µ5oÕ"ÍÖî\ÚÉà{mg‘:‹Þû©úŒvwa‰´:éÁ9é MÕpï®.UOµh^c¤ÜƒáJ3Œ8×RŸ+é3É¿ä¨lœ%T°ÅGÙ½“txu†®Sï52i~ ŒÅé_ª²¹[¯Ò´.¥Ó`øët¢º¦QhÙh“7½©–+=;{+WkØÿ¹‡‘ÃÀ!©dÂ\ž˜Ðå%%»ÞgŸ4®.wN•µ‰Ï.H=þòX%»1b”E+®UB”Íúd Kƒ4Τ'­+ÅzÀvß|À\ÝtÜrš¦¶"§ºç½ï]ÝUâpxx_#°e„“„ŽO§éy‰ZÆ¢¬uܱÐ÷€kº¤7Ðr2ê‚ñÕª:Q¢6¿€èR"Ëm¦ªüÜf«ÝNdk6¸dôÿÂuÒRa€€àîK?~yÌ 6«79ÅZ=‰¨Î òE?{«!Ú5à9/¶@4)íæS JûKÍ·ûžIbo•F^ù^‘³=¯¸$~ò¿ÔNç±> ­¡Šèøx½¿oˆ]¢Ž¿™lÞÜÔ.:Ñ*É¡YÝþY Åe -®LbôËË$ÚdÂêm[ ™‰þ8Ù—‡.:¡vc‚µ³-tšQ¯tJ†víù'ëœöq£›Jgã{YßV \ñÓ ‘Þüˆõk,•4%&§«iW<›B%1Š&1é  f>8_ %A^l¦ÄÜ5ÉEB¡-_J›8,!,â~¦Ð=å""0ÞpPþ‚ ëà'UdGaóf©!ѧÞ"Mò­k®ÂZ• Oo?×` ´‚  WÛ•iê^ò(ì&¥=M-{v}äèM@„ô,ÚA‹´D›Œ&éhᡜÖZ•r‡ÑY‚˜pŠ ÁÃ×y³¨ßöAßhYÝÔéëyl‚ý€é<»»ç„ôís*é¤ãá¡);þè¦Ü‘ï"çQLÁÞ‡Ov{Ú]ZâÛÏ,‹m†œ˜=Ä›0ô*ÈâÁŠ_ž´µÎå½–Ú:sSŸ¥ ¥ù¡gÏôRB¡íåMî$»gèȉÿâT7–rvJéîÜaöW²u'±¥ºùP²O5ñmï '·µ€W³ØÓÄK”€œ…ýeñáWß¹Âfڦ⻱™rê'>·®W]ð…ë¦ø¨ï7iü‚e_¬„§ÝË’#¾P0`Ìj¿0‚b™W럭˞¸Â˜½„RËžޏ:GæEC€E®¶¦G#‡ÎNÝè Îz[ž?‚cc-¼ÃHÚv-2Scš~»ÆHQ1¹Í½P¯¹†=ó:ËoKò`9²¨ËRÂ7ÇmA•*ÜBJÚ%K›Í —·kÏ`á^X~ßY¯÷¸m3Zeœ.s:2Ð+Ù!k¸¡\?ò-ÜÙJQ˜ Ë`'=Ôì‹Sb)N I+‡uœÙSàIŸt/íÒYŸó1†MÖºh#›i`< îÀ!“}u9U…1Ý«9–r¦Ÿ­¤í­ÑÒ5è1ôÐ,´Õbjjé >2™Ø$ÏP…ÌÌû‡Y41¼ÐKäþ\UfÓ‚OÆ\*áÑ$Å}ªKù³ñ8¾æÝ´”¿yÐYÜÐèã+ÜYä’Fit®dz.¯¨í­~…ã¨äRòƒÊh¨5Ÿvn2"F´1t€.fiï¥ßgÌü˜0›ÂGÛe# é%ëíµ$gê;ÿ‹qb™¢Þ)nâZǯ²v›bï: o¬Oóë±IDQ ®—më)ö ÛZ2¶@ug°hÏY.aÉt8š4Ž ÊÊáÓ>å"ŒŸž÷ËÎ ¤{Gý‹‘µ¦B0ˆ7,ƒcOGùùíJkÍ^qûÜÃsì^Cí¯dàñ/)K„«™ü§|\.¸Ǹ¹F¾gãÚ…){?½"ˆk¯lçêÞdÄ'ìÆðB“íˆô6¿/ai8ÐÏuÒâî=ôNU¿0íUoö%‰á=£ù¡£È¶@¶â°§!Ff&;Zù‘ú9w“tì÷¡oY3É<¶~s®Xr°8«v<ž`ã>ª«ÜEÙ¿rI)–¤cqþ–§xsHÔèÕ§+«à¹c&ùUã¹¶yðm±«gœB˜yz"Yo/&}lÖ2þ©7sÆ»CN;çÓ-ïä$ªü‘î©M* ¾ðcšcù•&M„/@p}Ïì?½pÌ(3L¾duä=é~76?Uz‹…û½‡B•ù›ôç5ì[GÅå.f÷ÕY):^m;é¬öŸ3)‹ºŠv,ÞvÙ]±‘åpÙ­anÆnTÈfã•*tö‹½H”E®"y)ÕâoµueÉm‘ÛÃçæŒÓ¾‡|Óub÷'Ÿü`q¤_È;8r!j•bøs… ºäÉø„?ž¡ê Ô‰ÎAHW:á$¿‚c':ÍžU-Ÿùˆ¾”Œ8xv„k}`ÙQߌœux ä69úhpÿÑòQÖ£øp…sÄ};­TÒt?7Zì6T™u[´Kˆ3]“ß-£z¯Âiò}_ö¼ |ÙÀ8ðXÖ½Q€ HϹÛBD&•Ø„öIoyo±¬MË£IR¤rÙîg‚tZ3~ ô‚÷‡ù7hBgU[]5Ý‹R †B<¸90dõk:Šb·ç[ú™¨Øô®¤r ‚Å;†àJÈ!چܔGTÁ‹D·YJIRß7ãé$™¼n{±ÚM¤ ]à(Æ/(pÉ2&N2fî"JÓÓGµIø¡'‹ K5Xì“8}^ÒDÔ{j^K.ŠÊzpîÑŽþú¦;)]ó±óÉØÊNbá•ÉæÜk Œ ¸ZN%¹Û@f7¦Úin~ª“Ç œOgEm9På@Ãê«õ°F< u;*3ë{èÙv?îSkúZ3Ý8âG;fˆ«CÑ6¼:SbüYâ§ØsQñ}.¿Èº:©[T5BÅP~Ó§oZüúD>µÒ‰uŸÓ°©¯æ^Ln_3O'€ŽéâSÎ3tå®…¾ ®4òmÒ g÷;¶•çJª÷*ë *´a–ÉHçYžÙi_Ë·¥Xfx¬v|Õâª}4å~BÚõ=œ|<…Þ.+øâÌ—~¢a¤ºXGz¡ëÏ:_Ö2Ø5ó¾EÒFÀ‰u¦mQ-/OÐeÿÄôc—iÊ ƒÿ¸]6©ÐÖÚ(Ž˜Zã`\óÃÁ³¹ù¾j‚¹Ï¯ílQu[àÐzA6:ýöÚteߣCPKË›•íSTU^Æša*âÿ¬%8I‚õæÜ¿ßngÀyö٠ȘÓ]²³>¯iýeV³ô:ŽæëA¼Cü=¶Úa‹Fî,V4ùgž®t—B5™óTªøÄ÷<²Z#>$¾™‚ËÜì{dìX¯ÍR ¶ËÞoŸ@ {Ý6ªºÞ(~+™àªr©Cù¬Xºß$,ö8mæ¦LD%œZ6}޲4uZí÷yòM^œ´á̈V!—«Î¹Aʪóøk\;û\ Õ»öµî4éÆÌe¹™ùŸÉ:<ÍÇ8Š+\}‚6%óÝþ{8ÔI‘èÛRW_jÉÇ¼É­ÕøoŽPÚ¢¯Í·ÌŸ^ =‘5yã­"g:RTµãBÖã/Ås|µ:@Ð0 ‘AQ"œÍRe%·õoIãD 4kóð¡­2ö}À’ñYÖÎG2Éªè¡øUÁ-Y€*·)^t¢÷É«Ò ýY˜èó¤¤E49½ úA†Ù"œÉ×W'!žX¢[+NŸÊ¿3 vR¾> ðH‰˜ü%ÈnØË5³yYò•aÞ1°"N:€•ŒÈÚ¨(£Ém¬#ð•Ô;Éåv<á絉ð\‰â©HA½ü6§¸zÒì~TÊÛŸ+J¶hZö@,åñ––sÔd¤±…²ÔwË«[}Ë¡@ŸÍú«Û•d‘£!^íòÎè‡;UosGÝ€Jݺvy@´õ¾Ö˜4±gißöe>´½úB²´ÍÞIÛh›E«H‡6YËÒô–ÏNÍ7jô³ùCÜW liõuX(Çïñõ üc áV/Ú(B ŽŒIæÃMšòOoMhCg¦ìÃl{°ŸˆÍð~öÏ?1œh7° ¡Xa¥f¶xUE&̼ö%W^PÞðØÅãE‰b¬k,©Qº8ƒ¢—ÕKr=JŠ«yðñœp‘iÁø;tA|ÍŠ5ÑQ~…2d°¦¯ØãòL½Ý²¢vÄãC<úÒ•÷<ÛãÊËJ—Û`rfx~’X‰»q›ÛŒ{æø1"<;’¢”íHÏa››0Žç¡Y™Dœ†f1´ÿc•MMáÄyŸ÷;ý1¸‹2Ú ·‰ü§Öh“ÇfÚGüó‡GgX‰ReÈ-ÂæÃÌŒ»"æ:ŒØcSÚd»Ä­ñÃùƒ—W2¦îóNHA‚Nj­Ç2¼oôµ+& ÆjÏ]©·|ý€ùõè4q©ïîг·¡¢GªÝ¨-&û£±w@:¼äI盃‚C¬(ŽíÊUÄ«<5ÆñÕ7Ö¦ÇÍj;¢¥i”Ç"Y‚ÇÇsªH.ãX™¿û)ÿ<*I¶tn'zÝSÁ+Áêï®I@Ù‚yÙÕ“ûì<—@_K±@zì´ËsÙ;¥•KÇ*c‰L4­Ÿ+v*9kxù½6|pj"†"½1Í&ûUÐ ¸=w‚wÜÜÑ~ÄH÷èì® Õ—Œ]‹=w¼çº5Óò(‹£µbÚñåcùètà#ù¡¬²5U’œD,2kø5,ÂÅ&ý©[ǘQ…?ÉyãÞâÎÉ~¬X6ä ×L9 ¬eÙfƒV&Œòøõë%ã?šfQ¨¦â¯ïx²¿E²¨ÓßAS∑ª$>Z¿’hG†mêôÍÏ2ôéÈÍBË6>°ëDÌŠ=;ø'£…Žè7²dNTß@­ŽeN)¹ (M â /»SÌ‹ÇB×w±Âtk•A²KYªj1l ~ܲÎuÌß\˜ªu› ÑÛÚòQ{pVÐÏËÛ„Tœ™ÌLÅÌú;åzÍ$v7òð "Ö¶LtĬ„´íŸø=:M|ÝÈ€©m>$´‡/QÒ%¼Ö?Û«:’›éÂÝï-s‚2³<œà>mÚÉÔ…«E› ¿hý2ƒ³¼Ôúª€s(ö²r Bì°žó:öÍqì‘£sYjªÂ;©! Ô\¬€¨ÅæO€ÑÒ›båC0¡éãšI}ŸwϬŸ ™¢€u:úMºt„}ãßëçM«| ÙǬµñz¿ñO48讀a\Ž]Ô¦­‘¶x¨•|–ÿQÒ$ìrlùC>J¸"}–@ÃÐØY{ÑvwÚ†­zON¥í\¹Ýk]¤ª=XC:¹ÂñÑ äèÄ'+BíüHÄwþî$mZ &$û“Žä|O·sAõi £þî¹9œºW„çìOY ÕÕéE©Æ=Ô( å²€…ÞeìÐÅ«i—¬$ÒI¡#Üp<Í­ÛlŒêŒ@·³?þáfæ†s‡z6 Úngµi}uû®”Ðã­gÃÅoÑå îi£Öø‡¿)1­ªgWkÜ+>’Ûs)§ýä…[°bÃ5TëÀõZ’ɮ՛åŽóᚆ`^šÏõ^§VS|ú‰¾{S|ç$æ©cK{ÿàÆüõÂnÌmûµZmNHgbÝóZÂî-‚á ªmÌ •ƒô7!–Ÿ0ˆõýÓÎØ¬ÈDLÏçMXƒyä<ÕÅBýÇjØS8o—¬­ü”öÿ Ñ'd 8UÒx%íæ´JKL¨ Ô¬Ñéh?Rd±˜C Ñõ‰"å„pÛ‘C‡VCÎ$ÆÆŸég8«+ÊT ³<Àè+ÒeœÅÜZ=9d1T8)ªŠ‰oyE>½ÓìsÈ)ÁGQêhÉSNÿ>mŸý§Xݧ͆ÒT>‰„„—¼¦È½1'™Ü ›¶ñf9Ú»0¤|¹9*ï+mé.KìŸ:ûC‚±4æê°¿VJPT™~õ,Йæž`úEòYóÆ÷oãÛ‰ן…Ÿ”ƒJún‚Ž”ßÈu@Þ'|P×ʹѦ»ŽÍÞ¬ çÏ„$}í1”v€ê ù¼^ÉôÌëm2¹“ak8âìrñÉÚ’y(îš;MÞw¼‡åÖúÄÒg ‡+ÿ.ŠUf¬A .›ww)…:^‹{œ°týÚÝiÌY¡Þ¿ü*$!Z©§æÛËûÞWÏ)8è§™/W®s˜ÀÖ\óx¼J²¸{Ÿë^Ö¦ªg8ù žœ…žFû¤-_=äù¯PUßä`¾>¥¶ÍLv—ºddwÝÖm+=ÏcÔÓíÚ+ÕwzG–p}ÙÚ Eš*?ï0óf¥K#rzÑ"¤xSƆwã¯ä’~•iVuüÉÅ Çoâ¹C&0¨×$:)ƒ½ÿa É­g6\»‹ú¡x¾Ód%Õ+Á (Õq·Î}àl^åîÛ×Λ1+õ+w#ÀAËúSU™¬èx»ã÷á§¥ŠÂ… Ä’¡ãœ+Ÿ½²ó²x-BŠ9´N Ç5öº T¥w²©<œ„éûaëöe-V©Øp7©ŸD_4¥j<¾:ˆX9*ß—{!Ï¿ /)œË¬½µýè/²×´»oAšFÒ‹,ûcà¿ûc™CØG§xVfÈöìx ¤z±Óòš,f¢ÍV]AË.,¾f+H˜¯?X©•U8å¬^PlíÍèÌÝÙØ:Ég#å7ÚOîõk CÅÊsÙ²X•b™ŽŸLlÈÆž¶wÃÐ~‚´8Vá¥YÃFc£D§¹H~tÖqg;zºœ™þõÔÑ÷ËôþTòlÚÖ·æj'¤®Ìïo7Å#ùcˆ î…ä°½ð!Ð-î6Eq¯À~HdKë·Ø"´úLσú^²’HœÒP¡‰šæJÑ2®N¥bÌ– x†×tò*àmcÍÓötiÆãQ‚:t(–ëìfçh’,œ èkv5Â[×÷þÑtLºk¾ÿ¥Bò-$(Ë%~(0êðÙŒ¯et‰ÏæG•€Ì÷“‡wÙ*!7³#õœã¡r•êÅ—¤yCý%yíÄx@­S”Ý¥ ]ik,±.EÕ|–Þ× 1&§ö¹ÞÈŽ€›¢vðÞÉÄm²¨eí{ô¥aWI¿µEÍq£lÍTǧä©ýÊ›5úÓ:+ƒ¨øˆŠçSµ•d1„­®º½Æ>|(Œ‰P¹Ä¡Ãe+—μ/ê4²´ïg+%áîåxsËÈ/¹’‡ç‰×ÙMßΘæ7áØÍÄ£¦V»þ²"ç¬.DÈ7»Pˆ3)oQ’¹j›¢›ò4]è_üô¤÷B[~£rõ=ôG\‹ó[¸‡©¥sp*ø«ó|ƒT"¯„$®èŸºƒZ4tµÅåÞåIÊJž,t§ÜMºcì|ØÞ°žÏìçüHý¢TÚ(†Êàãßcv½á®2S¤êõ'XúÏ ¼‘ˆÊ^•xψÖ}|ñããó.4Q6eßµóO=ÇÊHÌñÁ²‹ñ©¨{|‡õz`¥žS¬¾¯Gb;;’Á#é§‚Ï©W‚9Z§šªüž©ùöôD¡06§Ï{üã Æ cßÊBò‰JþoV¨;|Ø‘øµÖ#•ÈsÌLËï FX¥pÙ¾bˆ{½Î0Pþx,¢¢x·uÜÒ¸ä–öÅIo„Ó5Œ©>¡íÞ2ÅUQDCÝèü¹Ÿ1³¥jj,eP¥Ê°§µÜ9ˬGq íÔÖí³ÏS~µ±7h®wÂh8Ÿæ3ë,NÊ¿|Ôl§ ·úÚéJ‰›ÅUÃJŽíN@oàØrTœAÑ7õi…éû;…Þ"îwòd ©» ç¥>ŸøŸŒ(#(óSÖôÍ5íý¾©wE9™/ÌÃ^Z> ¼86 ©y™orf–C=LÙ‚óÞ¼øDÔÌÁF$\?Ó6tU((õe%î56‘Qž2×&z®ý½ÛÕñvÔÇP9¥@Ì:~m~¹ÛÝù„Ó_Žé{¢ÏšÑøÄ5j*áE.a?¨ª“s´×nîNo% È 2¨Uí©¯’ÏŸâá…u5ð”Þõ—(¶824–±ø²Q}œLk¦¦¦ñ½µ}úÓ‚‰=~9ÑK­úùB?ãÒqÇBÖ,8k¾2ö©¢qYø–¹þ[~a½jÛ’ð¦úr'z²W&!ø+"BÞçv O¯‘Fë‘jQ²H‘ëô·RŒ ‰™±p†NqkÂO~õ_$ç^Ê8²\j¨Êž¬u¯(`·ƒ}.(.W2-¡S@=X ÿìà ­/pÞ_M¢lV`ìÁqY2â³üÞ€¤§ã±×¤ZÃ~œ#zXÖR`3{'‰éÂÏ_’— Z.¶³I àæÛ£:Ihb{kˆA&¶ÑN¯W÷|Î’ŽÌ´Û*.­™PçìDm•¢ˆBXeCWûn6ÅvÚÀ¤…8ºpí‰Sdì9Á"ÿ˜àeó}Š“AI¶@ý¡~¸ eˆë(½(¿mÝ[ ¡y§š«{l.3Ѓiu£Ç#û™´’%´ÁäîDxDÕÑÏóô_6ãÂ?Î×d þº m3*ðήüÁƒ• HêúóÅãÉ¥gWSû3't6¹iÑï¤%ÙÚ"ê—™v,^Gê5,éÇ ¹™†ܘÕx Š9}=½Â¸Ë—묗&]7é")m ¯»ñžŠ %¾Ã8‚Õ$wJGÿ jcHižkëÔÌÙÙyÜð¶Ï ÕÈh¥)Æ çƒÌXJ)g–Z<æ´ø¢ÝÔ+}¿â¡“î@zÙ…#•7ÊB•߇œgÇÀ/ëI^\éÝÖòcñ˜î)˜ê.¸d/ú˜Õ”Aûɳ Š‚IâÙ·¹«¸ !¹€ÜkÃ[GľÒR'ò/Ø êÜ0RŒ½¶jE²6ß³Ó;ê"5zwU}ÊwiôèŒ[ìJ¼¥ªÀ())þ#/s|YE(-‘fÂ$oe.oíHÂK¾G@!¬Y]ñ¦»&L²ëízpÈsG®'o/bˉt²n Õ¨‡¥évbiZ~Á¾A³"@¶º’ÔðJÁåÉ^Hóv8»ìEÁá“oîôëº ™B«6ß=àžæaºœžh$7»è’È›Nk û!£7=WîÎ ð,,×§:HÚÑQÜüÄ IªlËú9‰um¬ØDË”¤C1km´Xµ¬ÑÀ²mûiêèºíê4–ðùQagcÊWc Mí+5ÂÚ/Ša1ìX}á˜I-½‘â Yb9Ì—0f=II”Ïhók^6U.»®0=.žŠ£ÇzEØþ£Xӆ͌‰vý„†d?45'Ù,U™ˆ½–ýÄ$·_ëÆ“˜è™Ê8¹4™3§•}àÄjÍyH]ÉX-—ÜP+Ió¦ÜX6I.~>È9\­®?õ°Bî‹Ï÷@Ó:O}ºÖ&÷肉û endstream endobj 179 0 obj << /Length1 1606 /Length2 7387 /Length3 0 /Length 8424 /Filter /FlateDecode >> stream xÚwP›k·5ÅÝJÑÁ‚k¡hqw H$X±âNá@q-ÞbE ŠC¡P¨Å¥¸»ÛM{¤ßùþæÞÉLò®-k¿k?{?3aaÐÖ㑵ƒÙ€•`P?/P ¯¡§Ç‚¼@ . ‹>áþÛŽËbö€C`P‰ÿˆ÷ƒH› Ô€Aªž.~A¿ˆ¿¨Åÿ„yH@^;€/@ÃqYäan¾G²Îßv[¿¸¸(÷¯t€¬+Øb ‚4@G°+²¢-È ³…€¾ÿ¢`—rD Ü$øø¼½½yA®p^˜‡ƒ47À‚pè‚á`/°à§d€&Èü—4^\€¾#þ§Cfðy€Hƒ Ä …#S<¡v`²:@OE å†þ¬þg7à¯æøyùÿ¡û+û'ú+dk suA}!P€=Ä ÐRRçEø ¸ ¨ÝÏ@ †Ìy . dÀ¯W”du ¤Â¿ôÁm= n8/âòS#ßOd›¡vò0WW0Çýù~ °-²ï¾|®3æ õûÙC vö?eØyºñ@!îž`…¿b&Üß60 Å€‚°;ìcëÈ÷³€¾¯ø—“ÿ§©!ÀÏ æ°GÊ@ìÁÈ\?8È @xx‚üþÓño„ËϰƒØ"6`÷7;Ò ¶ÿ#Ïßâ0"ÇüùùçÉ9av0¨‹ïïð_GÌ'§ª¯ljÈõ—äœrr0€?€G@ˆ ‹þMóOþÿ˪ ‚üõrÿA¨µ‡ÄÿÔ€lÞß:¼þ ö¿¶†ðï š0ä8ƒì¿§ß( ´E~ñÿŸwàWÊÿoô²ü¯Óÿßo¤äéâòËÏþgÀÿã¹B\|ÿŠ@޳'¹0ä‚@ÿ;Ôüç>k€í ž®ÿíUA€+" upù§‘¸Äl§ AØ:þ9EŸ’ÞkÃàŸ7€‡ü/rél‘· yZ¿\`äNý»¤"Ôf÷sù„E /.9aÂÂ?~ä–Ú}~ 7€ C SHy{˜îÏ3ðÉþ4ý‰D|ò¿‘€Oá7ð)þƒD>¥ßHÀ§ü øT~#$‹æo„dÑú‰!Y´#$‹îo„dÑû„|ú¿‘€Ïð7Bršüƒ„‘õla.Ȇþ´ü«Y¶žÈ›ä×@#;ù7þumÁ>`[ÜÉq˜­d˜SmXëy,7ÏÊ'ÌùŶèD“Þ(aë÷|?Gu¬Ì'_Ýå¬í*)Ó´'Ê#¾ŒûÓpîžû˜wfÏ¥*ç!P{—äöy .Ž:Àtv0j‡Ñ´è%’½$Z"k3t3¶d£ñëpÑ.ÁµªÕ¢›6øš©øÀPrJÌJƒˆ—ÍmÛB5a`^D|41'N õ0K÷ÔW1¹A…$œÉµÆQ]ø.™%d|œíÏîëM<|©Ö]-RqŸŠì©*Cîà¨$e«6ÂQXå„OåË“÷F»Qò?b~ÝÆ°Ñé>ÖÉIóB‹FÃzgkŒF½eø6e—^½)›ZL¦ÄáýȆ÷–ØÙ‚^Ö7ÙœP›J2$)Ô=AÇÖ¦WTfCê7zÖ'0‡¡dŠZH ´ŸYKŠ@ç\f¬"$¿"òû†‰7 xž´P0—æ¿8Äú”ØOÔéþrûÛ+kØÔ˜òE©òŸ\; é˜KÂBÒNªB'?ËÛ­i°®‹}PŒ•l¼M̺'|­sŽ÷Vxd´m Ùc=ì;(I§­}ÿBááz»ØîfyøhbÁ1Ío ×ÓËM‚–¿yÎöíùÓáêdËìKågqÑ6>ä5 […­–§?Åq'Ÿ ™´˜;²rã±¹7Óª[5Ø Xxj ê=»4cäjïàØ(«©e9]°F‰µÜ÷ljœÒbûTøª”p"z¥áKduÇ.Í­8ó¬e‡Í‚èÆà—ã<¨³×º¶<­N¸U/ç}:…lI7 ŸFa¸íʦp°Xs÷ƒ%ù½‰Œ±›Ö\¶ìSÞ·ØÎ¨3 ˆ«ïh¢/„ZÑ”aÛî€ÛÜÓöiÍåÕ?ô;iMÞõp¬~rôÅòáÊiu/˜åy§!\­‘z÷&mpcÜiD)\6ëÂmÈp‚s¯®Óú½^¸´¿‚í¶ ùæ–Á'Ô˜%®6ï“SëžuzíÌ‚u ÉÉÛ‰žâ­’(% (-¡¯£œTËê×w^qÛKé9»4À¿æ á”t\âÐ@CŽâïBh¼>N+±nΘˆÑ:eõ=õ–9i-Üìuͳ (RgÐõ“ÂoY2%ÓÜtdÔÂÜEOEÈêò쩦d²±8kDž>ï¿=vÍÜ “Æ–L®ŠH_¡)RwRÙ:µ°¯ì"´¶,K•Ð)¥É`Ý!–>ÖÔ £I @©ûjžûÄÄ0û¸0_ ÊLûÌ8ƒ«>|ôå¦Ð-»8RÌÁØÌñˆf…ö±?|Àëa­9ÿtŸúÅrkÞ©M•Q®†¡Þü×Ôò’2ˆØ‘Ð`_~[Š'z®bGYK¦³j¯µúBÓMávv5ii#åæ¶©hÏŸ‚µ°Ùýí‚îÈÁþzKMX]£sÛUkÊ}­x#HµŠM“ŽÉØü|¸d~Õù‡ •Õ×öûòO²Kj#%†S±)iGÉ–­# b²€ø¦ØÙ[ «¾¼¢½§"ÆJÝCVͪEA!¤‘& ds{×£ wög'ÜzeI, h-·âýÇ/`¦T³jzÉÅÑ n%øÔ¡|§bbZZ/$dJ8·Ì ¢3 ƒcù¼"}‰Z3}Í)N©¸RÉv%ˆ¯÷yè(–‘M~0”JOmÈ*ê^¿^&Âøàö0|îõ<гêÀ¦-ñ×À½z–^¾ &U'›bUJ–ÅËàžòÊYB@û§Ã¡x𲆠×Ü\ý5×{ǹÄý»“¼‰ÌsˆUuOŒ±l 'Æ,<—ƒÊÙVüaRéTpJžd¾š;]rú±¸Ãîp¶´LÏ·Ôa„¥ÃÉQŸ ™%¨€”0{ã†U!Ž…7¯êÛüc8Nêc:pÛÅ õÛ1ˆýûd)+Ñà‘,$žrËf€tº.=£ø-”jÄbºC\Z;œ2=×®½ú+Õëz¹AUçÌïÜ7EfL‹¨²‚dç ÐK²ó“œçsǸ׾ô˜&÷ôîÎ6%ø˜@£Q[«ãblGRïW¤©€MJjÑ'µCªþä‘.¨›!Û×iúü„ÖYÁkntsuÒÇd%îíÝò¾÷0\êE3­ŸæÖõjÞ?ž<Ý ´8¾ŠøtDàRôC?‰¶£†¡Aeχ?9»—þGRñ9ÃOàWkéâ1C½¡gGb~¢_ nó åãXž{xŒÐ&n0‹%ìRšù& Ãõ´nõ½T1såÔÝ]X͘·3§»÷c§KÆ8co->*Ncª`òŠ þ›lÍÆ soíǢ݉Øq‚޹F1À#Îî¥sžˆ×ÉVšëú´ØœÛí‰4³713JÌ_þHª*î-íÖïLªò´¶›9¡ò¬õC©ð¨6JûfÉÏ%ËÉþ™˜cÁÚküÅfB]úhEÇ·‡ø‚«ÚBÕT±¬{Hlİ f²AÝÀ‚éÜi\ˆ·sÉ&_—\)rüÔ§î$ìˆÔÍ÷‹Ò¬Ý­h^x¼Ã€ãàS\Ö™o«ê¯ ØH®zîqr‹¨÷º9$Ê|Ó’HÈ!mÌ'–Ï)}ÃeõM>õ4NnѶe{@¹QLžkñ«´tIsh$DWöÂel 7v±'_©–¤V†l lP½Ó²kõŠñnh?+¡n»–åõ8 8@c@„ö[Š IzµmŒäUOsÖS'Åó£Vã†ÈCåò<•oÜãÒìÛ6gl¨=õVk;Ô ’¢ªJ¸/%ÃNÎàÂSÅ736^î¶b+t9š:ÅÊ ëŽåÁ­Ô…€³Có¸7*Æ,\ô|¿óyzR;7Jñz²ûGWMt? ) ÁN%Æß-¾zôÎ>ÒdÃÝiX±2@׺ºWN”Ìß6GÔNóZuÌ„!úè#Ê;Cj*5G’E^8;…Þ¢·N·,Pz,BȪÂNiß"Jðê¹Ûú)Œ_|ÖyñRe*Ç:Ûé-y‘v^ÝS’£ò ÙT²¦"ùõóg×ë»ÚùSúiæ™<)=®Ôeð¦;°A_œÂ*Ôàc«©0¿èüL`Û>ï‰x6ÍýöZô2§.(ñÞõE‘x¯«¥ÜÖOëUÖÙ=vCã¹c¦ÄxÎ×NK.QÍcÄìâCüØà‹†(ø“cJü¾òOþªAe„ QŽòïï‘5èã!rBõen&¬¥,›ç1;V°Ðëu3‰Š|Gwî…ù`œ 2%´~°ÏÝ1Y}l•wíÈjÞ}Æ<ï`”Qe•ƒ²ìž/$9b¸3•E9ZóE¤ù.£V å]ï€ä;aŠHB¦Oid¸NâK<¯WÄÑ*SϾõ{ ê¼'(?/ÉIP8ÐÛ¯# *Íëδq°¥,êQûÚáG<¢Ä~HS.ôéj±¶éK¶®t»¬€ê'·32Bï5¬6K—§µ%}W MÀØ-ˆûuñ>]Y_4"0”¦;ËHêˆûz+ˆ½¸ðÖqª.5þ‘ÃÝmß¿äkÝ«º÷ñ˜fŸßJÈʨtÂ,RT¿~HѰI÷G¬ih3Þ4qLtåŠÜ’ƒÐÂ>Ÿr¬èYÔʾøÒ¯¸‡*h±¹ÿ¬ Æ$xDD;p*L àÚ“£f%ãð['ÓCßF ã/磦õìB”Å@ëLŠ€Ì Ç* xè9ªLGI>Þn?Ã=ÝÙÍÔ@ªÔФ|Kûv3ðª˜si‰Êgfë~^tŠ·{Á_Ÿ ÅME›Nò2H'ʻ䨥ʙ· K2‹NšN¹Sêò M¥ªÈ,§‰±‰ ®w œùÂØ(÷aATç•™ ”ä‰+×mö%›éàçJu<Ô;(ÁÔÁþZÃÖ óL f\6˜c+þŸ¥;öV#â•m*¶èaþo³U2g…2KÖ×"îKò›%UÁÔ-J’o—Û»~ÐNï1Ó_ê•p¢+s åÞñÈ…ÄV©ºT}#Eì O>SŽ&–7$Šføƒ:e”€÷í%þÃûBÑGX& 8þ"ŽQô‰JJ”ˆŸX¼~º¼Š÷»óÏ,4†¯r¼ud9—±Umv"›±8RFRuðCF²³çÎÓZÄ¿Ê$RµùɈâ±g]2.½)&Ñß,]~ÒòZb×):qÛš,ß‘@¥>¡I¯«å9)Ë‘ì­àucx“¿"™´w%ý`ì×9°u@EëégÔ>„I.õ÷då1t^‹|RjúÅ¢¦n•ÏTµà7’s@§£9é6у ývçßBBJÈŽM]¬üØ)jB!FCø2‹MMMVÒ¥åÆ,d¶Ä³BæÔêÒ¬Hï,ºD°ˆQÆïHÓǪÄ»Êìš”Ò_ë\ßH$Ed‡lkÒ>Rðë†6HÊ“™R&†Œ¤ëe«Jùš­|mÏ£>ö¸~_–Ñɤìe:å” ê8z,ø†Ü5'¿Cæ•Óx’j‹¼ƒœ“KOto³zò¼C3¬ñIãR®·¤È'œ&w,¢Êµ&Ϫùî±sP©m­fô»1u‘µÁ¡ÑÞ*®¤)êÒd¦¸vGH6jÃj5ªcmõG:ÂôÁvØ<Õ_¼½Ú.d–Ãñ…© Œ$÷ÚcF¯¸§Íæx»ÆZ¤·Ò*²rT¸_Ä)5òq |ßÒK:™¢Ì­È/³øHªHLyÝbk¤¦4Ä:z+wéžÛ?ç¨zjµÙl›ôl ÿ8tt>t©PDå¬â~sWxÜ…Ô‰Åy$˜×VuÂ{Ppû¤3e=‰pðTˆ•ŽÆ9ˆ¨Xõ¦³ji¦ÒÎ4]½Ãó5ˆ“Cw ,G›² §„¥`Óæ?UB07£ßÂsÇpòd±Ó;ÕÆÅà3‡²ë¿qljAž¶ÔsùH_ú¸ ~eÐ /œÊÍ—·ŠgQ)Ùõž8Ö›æ‚ç9àz®MŽˆëаWvjwÆsSµTêv¤¯í4IŽ\Ï'Ú™ö’Ú^4P·œÕÒ;b~*z~ª%\0˜"Rq¶R@ÄŸÌ븰@Z÷Kò¥¿ÐX9,Æ–ôüŠ$Ìûú†ï€™÷×ÍV‹4*Æ„w A_*’}bV°ØA äNµæSicâÆSK²Ñ,wÇëuš,e/[*Ecï±á¬òèpŒ]M/ÌO”óƒÊ¦_4K+x”ñ'­’ºªFj0¡ß„ı_~QèåYçÿLl§ÛÞªÓ;]Ã*¾£SfSW•TÃ5!ÏÈaü.B2V ²n—$4_þ¼l=¯Ä›bóUnŒjô[Rp¨Ã¯ß5l3“a—Éqó¢W†å4q†'B¬*’¦#Ôu¿.¢‹ÍÍÕ+ÝïÏQÄ•-àÛ‹Î Ù¬ÆÝ:'*"m0ï‹_ kJÅ(¬’ ï?ãn¥<¾Fíh,½£—¬S)¢žeu??Eòl¨«Ì%”Íæ^«rø6Ÿ|×þ,Èl…qãÅy ;Óu´÷ªš%âû(½Ó.¼›i ™¥2‹öù‹ûžÃÁ,¬ضƒÆjW ãtž+$cØ=Ã%b‡I5¯öc^G$iZö/Y¨2~( žÔB¤*$µÊ€š *£øóWfŒrr®*RÇMû¦è‹õ—Ÿêº ”'N iúäퟱYqc`‚‰¨ …!Úúبn8x ŸŒ0f1ëˆlku¢Ëð@§²ë;ÀGïˆ5xÚbÂKçÅ…=cK»÷SñW.ª?Ãâû«VµŒ:¢&ôÕ¶Eº:¼%²jÛíšÊð®á¦^‚’zìÇ‘XÛ˜™3ºtì²Ý¯Š²Û˜©k'òw—aÍ5eIɪ¬:,”úVÑBŸèt•(Lð;¼×+¹™²Œy`½)°ÍÃTçÂï?T†™ë,X3)#ÆzÉúð¼ð¥ÁŽºØÞìÇ•¢p~”®¶ÜvÆê·cä?l‹LSÚäIŸ§Ý²qµ“6Û‹Ô å›ŠÇ9Ã0¥‘@„]d´<þÎèçÈ<›vÒÓØéÚÞj+Þ›É7Iã˜ß7+°6)úŠ-<ì¹¥åùü6ž0d•sûâÎ)„âË»'Hÿ¼GLùƒ=+,m?ýMÇ D7PŽr<þæ\ûA„Q'„¸b»-oÕ‘÷?–ŽŸŽCšñ.`9ÒfQý&«Qººé5IßÕ;Y} æ{•¯²{4âr®”v»{cLl¦è¥¿N« Ñë×Á—³Å8dùb—¢@)± ©È ~¼öe%ýÆîþGZS÷>é´&ò 7 ##w-¿!¢ bsµ¨É÷¢Agúay§¥”ÁYM Žì\$tšiA_‚!ðC‚‹µ&ËSÒØsÃÛ#XB¦u™+ôÏ(* p¢zè,Ôíá²\÷yt‰S¿Ns{8‡éå®°Q1íL4½tÎC1oG3ãtöþ#ù:g±ÅCÑÄ㳘OÛ¹u<‘Df«ñÎ~`¶£Q—aAn"ë"’‚ÉŒ~&âsyÉ’°±Í;/ÒÐzBÅïeQûKØ:R 6ØaBykŸf›Ê3ET¾óüPð`pí¹GÂJo÷! õmÖ&†nÌæj‚‘.ïBhÓóoº·9|E'÷üÍÓ×]]~¼~¦Ì~ _[UiŽÁ^‰Ý÷xØð컎®àë©u^|ßãïý[§°Ãá‚7–Á7õ$Äô÷8ê?üØÔ¡õsÛ]“Yt±;éƒ<ž<«h͇”ÑÇèI= ›Gݤ4nRÈÖ‹Pº·6Ž…bB,ù´ˆ2?i)Œ·yW3ªÓ&i[:=k?±ö+`Ôý‹}¯5çÈx'ÛuÌânöQ­”Þ·/Û>ùÌ@Fx!”’ßä“ðçÿx¹:¬&õmN?&­~¼\KÑ]7;ÆîžO3º÷ânÖ°ÀV¬œ2p=Z Ú5Ò$«g(§O§©®t­d¾¤“aèçÍjpüèÅkÛz!'Õ9JÇ|mJ0E Ú2ôrÀÎY´{¨KÞF\=̾P9¸cfA6s[ŒR²O!} LÔÕ‰«™Æ/ô¦¶gÓÝøè…Ÿr+j8»)IeÈ!r™A^[míÖcª|Íp•Óz4o>9Ëm%M€£·™õÈ¢öÃJ¢[åF³ƒ›/áfÆ–Ìk~­²<ÇÂvšŽ¨BÀL-Ö3jvÅ}ìÉ/\½YÂãNe^¼¯ŠsëGrL±º4òšK” k«[¾×Ùd ãupúkiÛ{¼ÝØë¼3¬*3véýßW÷ç{’JçêW‚@+á;t=æßH1Ð(ÚxùêzrB*méHáùáR9ð=>Ïò3Ð&Ó´£Œ;'| Ïg)Nl%ü:†'õ–|ŠO—ýÑMðÔp ‚ðݱ\Η#aš\=üÏZ‡Gñ¼˜=Q•+ÐÛÌ¡šÁ.›mm•í¾%v[‚4TÏ 'r†±Oá=¹Å¢}†‡Šr)wVÌdΧD—Â+ý®40ëiܰcHüÓcñbùžRë»á+’áíb¨°qØA§Þ$Cìæ=ëͨÏÍ«±k|Ñe´Ö5c*<”l^óâu¤Ç´õÔ𰄌͚Ư›Ð¹\Ü7ùݯRŠÞ½?-âþ`.Q”|'ûfÛ´Ž`×ôÜÄ?{ÊjÉÞPbôšf¬ñV“,î²<€òÁÖÓšj×,üIõvŽû8¦§¤ˆïàðÌÌô<áØ}v›Ýé•„QÉ>§^1> stream xÚx4Ûíß¾ª]{o¡ö jï½÷¦f„HTbS³Vm¥V)µiQ{·fQ»VµÔ¨½Š¢J½éxžç÷üþÿsÞ÷äœä{_ŸyÝ÷õ¹“VC%0 ¢Ž€£„Ò=+a E88L¡(ä/œ€Ãâ…„"àÒÿá¡âqD¡1UGÚQh{âaqia i  Jýåˆð’¨:ú@Á=A€6Ap¨ <ý½ .®(t¿Ü €°””ÿ¯p€’Ä r„ôQ®tE# `‚A!(ÿ¥à–uE¡<¥…„|}}=‚/y~€/å 0† !^>0à'e€¾£ä5A€©+ùÛ`‚pFù:zAhAàHtˆ7 ñ «L´tžøogÝßü€?›þ;ݟ蟉 ð_ÁŽ ÂÃÓî…»œ¡0À@]Wå‡â8ÂÁ?aH:ÞÑÇ stB;üjÝ ®dpD3üà ò‚z¢‚H(ì'G¡ŸiÐÛ¬« << p’àgªP/½ïþB׎ð…þµr†ÂÁÎ?i€½=…ÌàÐ{Þ-Õ?>hˆàÌ‚ˆ¥ÄÅÅ„{ˆÈUègSOÈ/ã/Í!8Ðá pFÓ€C!è‚@¤£€òò†þ§áß+aa Bœ .P8Á?ÙÑ0Äù÷}þ^P?€ -?aðçëï'[´ÂÀ8Ìÿ÷_G,¤¤¡¦­ªÅ÷‡òßFee„ P@D % ‹$$ÄÁÿÎó÷üÅþjèýÓÝdÔ‚;#R¿I wï/">”Áýglxÿ® @ëàþGþwb@úMøÿ<¿BþÚÿ™å•ÿw¤î ƒý²sÿvøìŽP˜ÿ´ž½QèÙÐC 'þ߮߭C½=þÛª…rDψÜ­sá;‚À;¿q(RêBQ ×ßZúë0Ð5`P8Ä„þ¼wÐQ@àÙУrGß-Hô‘ý2AГõïºjpüsEÄÄŽ^^Žþh Wb€@aô¬‚!~¿$„#Pèšc0ÀáEðó`¥$BÎ0 qFý4ýF¥þ ¿ñ/ò€Â½‘"hÀ†‚z¢»ù‰ý«5·—zziÝ÷_ë_WâÌÏ @2‘n/#ÛÏk”|>à,-wÆ&[õň¡8gŸºêâfkLÞSv?§~l8W51ÄÀ»>êw÷unØb†f> C­oUùP `ðÛñk3Aï2&ñ8v•ì ň‰ÄÁˆ+ÍbæòD·èÆ‹õ¢«N䆵ÔÀPrJÊšÁ€JPÊëÜÁ|hÅʾŒ²ºKšHîe“émªe6v…ùšx¦ÜO÷ÍÕ&1kèãÇ7¹ý}E uzªÅŸGQÐQh³æ §ÐQ¥äj7!18•ÅNUÊÓ“ÙèŠ=¢8o:H,~Ÿ*ìoKõnpÑW »epÿm£wBlF.¯{ñˆÑ~-Çô›msj¬+ÍcveŽj0ÆéPæAµ(,¿‹š€S×¹p­7…(-;³ÒÅ|ß{?BÔn}œöÜ!!;EXÄ6]&9ð陲¸!ŒÙsØÙâý¥l:€‚žƒÂPë¦>«Û²÷ðm~Á¯Ïú •–,ið“Íæ7íCÝчö}&ªÉ°dËŽìÞí”&-±Ówdæ¼jâ¨ZYD—=OR^ÒTˆq~–a[§†Œµ¢ÔÜ8[’¹(I)Ù¬©îF¦>¾•ô¥Ð)Rb ÷ýr¦ï«Äß>• o–K— Þ_?¼¡j´›DZ»z˨û¶]²“סžN~§µ«C©>—6êN2´q'ùrSÙj2ìPbf1_ù‡Yˆ=EÙý»ùÎ ß¿nœ4ä[*ÕÅXÃbuM†¬Ú?{ËÔaݟȘùj|·§ƒ+}ÃO³áâëÂiHCz€-²VÙ˜$Öªò±Ÿ*Ö̦ßQ·ý¤Ï«û­sãÉ7Ba›3™;kažv› úžß+î)«ÈI¸æH‰®>× å” Ä"Œ1Q%ú*INä8Þ.2Äpun$Xƒ)è¼§.ܱaØGVw¡áyxÚÃø‘¢µ–QH{ tv³8\]ò»¡è‡OB–âoü•]µû÷w6l-î1¨†ëµàÄXÝY*=Žj&+´Jš~[hi¨v¨{%²j/ÒrëyK9B3=@˜Æo’Žrp›««Ý›.¨ At~za¡ÏÂdœ­öè¨d/«%i óä;ç£ÕL‹ú5õÝ]2LcWáÌêyN_JžóEÈTÎm%Å ÝÜx‘Œ>ÎÓˆ>ç1Ú\½=–ºà3˜#ˆw1†mÿ¹]ˆqÕºm…GÔé;hi¤N…Áàd"«Ö­ø—S/¿oÐ~5&ûaš²Éêzû%sÀ[‘ûvŠ÷m)ÅÔ-³§¹A«_¿;Š~V/ƒÝLï<–ôêbÀ-šD¥jZ(•u?_‘©c}o¾8þƒH¥uˆ2ÂQ÷xÁ§5o7U¡»î‹Ì£ÜZ¹áòü‘ý«¥•wÙ*¿5¦gÓLïaû«¤Ïc婺ÐO)Úóç Pç’t¸“S'89Ã6”´Î í0+ê²|ç³)JÀZƒšîÜ 3Ñ¿ïÉÌqƒa»&Cf†ZuÎ:£å#Hú„û#VÕí{B»>¯“Æl Z¾Ï17ër(îdiFD¥‘Ë.r%j?^ñI™æïg¯gs5+ÕS8©ÛQXNó䉔ð!ž¥‘[0F¯j¤)é§ŠÙŠ¦Çš~®“tnÐû•DG´ðDÖU%¦Ö'9ˆàGj]¤<£8>vÞ Œ·#Suýp"»V˜•µ¢œ>¼=|ñª>)âÌ¥r쿸Rc?ðbê…¢-ˆY2­N/q+‚ný†NÌåw9š½•Š3f€Ô²0þ†µ‡‹4ëî˜ï²x‰%ðîÝ´yÏŠ³{vÑ4:·9uÑn7ËÞÄÿùøÈ–L–ž´Ö„lጌ|-”¼²bÇ“Íjú¹7Ô‘ès¹j~¼n™:¬Ã„­@&i3ýÒÛÃ$–@Iì(K\YŽl¡Ð¾eºŠ÷<+©v¬íÁÄY9…­Έ@Hp`ÌDÿ bþTßCÆl(ñ«rã¨'|paµ~êÓt`‘~y8Æ+ò[ÅÖa£evY¿ˆ:|ís•ùûµÑˆ.ÇòlÛ“M…i~B̽#'T,-Ó•T<åÚ Æ§Û¾ÇxëmT² Àî¦á«‘çþëd†³/ñ³ö×2ÅuÖ›]ýk>sÌRî„þd‰Ô š©þž2ôªƒ³«€47º=áÜqéCãHÛª9N* láAž¬›µ#â ÃÅÆ†›ìëM-Ò×ïx;ÕnÏmƒ¹ªz>w1´4¾Ábèp|I ŽžïbˆŸû@Cè1ü Úú’¾·P—XrìÕÉ|hø¸a A9Y—£«Yü®UçÃÉqcOæWÜ{y|³ +ÿô¾‘¶âüœözoã¯ëpäæ8W \'¹cµã§å(“²Á"°ÂÇZK*, ½gîú V¯öÔçd7•ƒë2¶Üëzp—Œ÷¸ßOÙ‰Ìq1•.¯v="Û0âGI¶`Aˆ©7»åwèŒ>·R=,ðB”–ôÞ‡…ü€ï~rQ>sï#µPâ»—ó7Sõúwf…žŸ2Qï æܼԄdGͪÔoùèïo°iˆ–ìíãæçÙ6(Ñ$¿ŠÄ´QýÖb>ýe)N£¬ &®ãÌ`A°è•o¿'÷]ƒ-«âÎp”¥ „»‹¶'½6ê€.@èC]ã|À¤nudPK¬ê æþ;$ß–j{žqôÖ&ÍÇJËÑUx1uo–éæš•Öµ¼î@Á:kG5¯ l0LÃü£z…L cyëŸB åI%Î%¾îï£i™Ï5…y$ðÊ’ l ã=áì@¦¹aõ•=æ Ð.ròØ€ã Éþ¾ ®by𵛿ivBXOƒ¹ÇÀúãeº{¥o]T†èRŽSæ^µfß Ànûl£²"Ô‹ºßšÒ—…]Š`âÝ{,ßï56­õ°áVm¶§sJáçVÐ*ˆÏ3rÎç$\3óò aVLU÷ÀÈú¦hØY£¡qÒ~ÔÁ%;nÕ±„Ø:'ŽÏ—‹çU»ýý¥‘˜h«R!Ïþã¦:~€ ëx ï3D+ƶ[Ü;ýïa{#Å#ÏG’I}:¾F.|ÿtìVÝ´iû#²ž¬äÝÑ%b탣-;UhÙ•MÉ¡4Röɇf‘nÖ/”‹fÑA9·q¾‰™Gî8O˜Åmß3 >»œ ’»ŽÏFÿžé32ìÁÙDfK})eN ^ûœÆKÀÄçâ©Ê_ÃÿZ.È­RDŒLe0\"çë4aêAFuÃã9FÒÁ-!õ2†Á–a`aÊ8w¹5SÑBèJO×Elú²6ãáy´¯¨W¬©]É»¶?ÜVš -]1¢ÚêRf6?¹Ï~(¥VØJì&GðÐVP¹ù$лڞDLô¬X}ßeª«îÎå¬Íµœ]¥²JòåŽ{/LJIX–^-NÜiÀcŽ.Jß~aèLû¿ê˜Ƥ/_üdµ›ñ©WQ©MÊÇ×>ŸÛj¿'Мt…øi°_ç3Do ´ŒÞzû¨©ŒæÃX§úHÖ#PMmvJ¸íó×ά47Xx‡;*q„6|qzc%[¹ççfš;{ô9µ<ç}|&oÉúÆ#òeHqFMlqÍ6i®¢¹yþDò;Ít ¶¬ÿy®¾7‘ã#ÜíⲎ>Á’þL”~}qo Lä%i³»’–m4Þ9IH£IáúµUÆ<¼><'+iš³Œ×.‘i …뤈A²B{ÉÙ4$»4ÚWôø¬“y‚~¯†üz{¾‚ïˆøyh£lÁ}.]¤l–ÙV˜”'«}'f©Qûû¯k\%ú9õËØ™òĘ}e#¯ÜlëÉáÇ¢–òÚ óª{¡rúçnt8Á‰˜ïÑ8Yq˳ÍKòn>ìq/ó=G¬Äc|„Çj®v%©ú®´œÛ…v0$S퀟ª¥R ÷<ô ›§[Î"d§2_Þp¥G垸³»»³ÛÞÙ©¦Â:97\T“¶©`Yd( }rúØ“fTý4Íh=+Ëi¹ŒJÈóøFÃñSFÓ´{ê’Xö?¦•ÈR»à;Fïp¯ =t9dd§»òpÂ<ŽVm oǨëwrŸ}á⥾ºgjz~„’e˜Žw?ÂS(ñ ãÉs>i©ÞK_^)<÷¿Í½ZíÀñ>°‚´”µÝˆ9Wȉ\òk9qÞP®ä«šözx ¶t`ƒšxïb Ã˜`ôŒý‚ý¥%ý§ðÙ\…m°¢(ˆ‡ÔV´‚>ƒx{šqƒƒW/X“±‡>k«8OFül9{Ð˳ƒ®F˜Òí*_Œž´+ôÉ„JßÓà:[Q¹›ÑêɃõœççG®=K6Y!Oí4wËENqÃ-=½V‚†ºH¢{ý>œÕCg*KŸEõ1u­‘u¾¦†Þ)ÔÈöÖ±šsü‡|Ož—˜=|\«þÕìÜ­Mg4*Н²}Òª"A¡¬äN?Ń‚²uëe\Üq¥^“s[i $ÇÃ^|Ý—q˜¦ÚXWÇÓ”®ñtÙJ“ÉI8­a¥Ms °Ù7bÀØÎj"›Ž˜Ÿà)»zÙ» MÕù#szÏ#\ÿ‰Ç-”†‹êrmáÝýÊÑ8§ó§:s†®u÷õëmš±´†ì·cBUðM©'ñ7ðe§2Å_†Ýp¸ƒþVVžÑæj¿ZþÈîlŒCŽû>änY(ÙŠ¾ˆ»s¡ã1Â[[BôIévý‘Ïòv×IˆÎ‚E`®ÞÔ¢¨ÂlRB¹Þ‘í7i :J2–䤙ؖ+2Ø‘Ê,©ø±¥–I‚†ËZ2 ù¬¦E1Á[MHêÝ›§f¶k/"Rå&,ã~ܺJ«êª‡’÷—«Žâ] sR¹Ùyߎ¨ÕÇ äU[ãj<ï+I¿<¾q÷äl.Q7 s'¢À0S…"Á<õÖÑq¹óþx"Y¦É›‡m«NæâƒIzF·OÇðáåW•ûu ]ÚmB©êlâf‚5@ù ̾:FS‘@:¶¡©Ê ¹°/ȭŽ?„¶íòlë[ßKqƒ‚ÁóBQ;Ã!bd‡…æ+Ãåu|UdÅMUÏ_]2IÄÕ™!ó_Ì”÷ûo|êMÃ5ÍW»ÔðrY1Ãé%{Ëžý8ž3¨&©¡+ï~úGе9ɼÇÛDÕ8z>Ÿ—¸ÝhP¥«K¢/c…ð/{9¶£¶}F˜o-hÌ¥ÐÇx Æ?K|~ˆolÓI3ž‰Ð—u»½Ž÷ƒ+|£·]ø9Åñ+™`’ÃwõBž€f¸¥ç Iµ §¢V)¬³î0ëĸDc•÷mu—oP(ÆçšV=Ls9ž²qôë9é*|³zä­•›K|ÌzÕ+)%x5SÚ¶áDï£ â QëâS +‰á„IX¶ÊÃ]NðµÔ7¤ºQæ’qLÌ FAýÄn"*6ÅŸ* $äÃÜ-.Ü‹ Ë;0‡-«¹"^î3•Pç’PuËš•¾œÕ_ÔE€Ý³Ä¢¤Ñò„Y·è¿dL ¸,ÓÁTR|jµ‡úk8xYàxÉÀ>Û£x–'BÑt·ú¿æµÍ&Rƒé}èZaFáXeœþ`ñExRœle±f©õ>‘PW@ÐŽõº’H­=gËyí’¦÷$~´oÞp?ñDFÙÎ(É ’ÑχEº‹b쮨±Ë­¡Ó.øQn XÄ¡—¢¾¸E„*i˜óÁ‰ˆš¾Kß"ä´:Ñs¤g®N5»ås×ú,b!%ïœ\Þ ?ïm<EE7V^·¸UD•ô±•Ö¯Ÿì'Ïä ÚPM鯹æc&Z‘SÕñÌ!Ä$Ü©–~¤ÝæÁÕL½‹Á_å7t‚¬FúíkæÉªë­®EÏaì¹–Þj±§}€áÁ¿8áj"`aMžD|sT›–«©ælH®l탯þç'uް éXös±%õHßûñX5`«Î¢hìø0›Ýç‰o.÷~HkÕú¹e<Ùä~ 9ƒfsÜ5{Ó*Ã;a«qøß¾ì8á•z¦f6/•i‰Ó¨dè\©Üò­yâA‰[ùaÈäû £ïÌ*º'…Ç)ÍÔ~™¾øŸ:K˜¨7/æ`sÝg‹\SK“‰ j”qÀ"é#ôùÎqÎò¾ÚÔf4ƒc{ÁŒcÓxlFï–°T‰éwˆòñ›–ö¥P{[ûÛS¾4³¥UUø+9>“ÕŒ"7| .>›6/^ ç?R:Ý>͹a“à?–:ÍŽ®ZpŸ{ 6VÚuàî{ ˜,‡ío!ßu³&‘R½á¯¸ÞwÝb¶|÷ë/…M™P`Æ¡¬¿²“D9Œ•Ó/©õ[±<úÝA:ž¸k¡Ã{mû.F÷æ:[fÈ—÷þP«ü‚èw`}MOû3»éhy¦³› ’Zj f.DH˺ëIüÞlîà±Äõáø*»Œ§¬´_™\µåå°ÍVÀrœOdZj3µü§ïªÍb¿ÞŽõô*s×#lRÄQì†p¾z*šž ëŠE™œ­÷r0…íñl yœ/οª`£ið&ÈTƒ¤ŠóõÎ× K­¸èñ(k[J¿f~ÚpŠ1zIrXc#Ïwë;$ÓÑàúÐa.†®Üç¤Ð ¸«OY¹q¹zF­¶Ë¿ 1™$“Ó£APðP „iƒÌ?IOқ͋L4Ë Ç̾Ic#é2²h}apõu"å¯AÀ÷VAPó±èQ¥çåÒ‡¹¹1ФÝm¹ òGV´Yõ§ço·ù•ÄàCZKêqéB¹ —oã²–‰l‘‚õú¼/M[ëRÉ×# r¦Ì“ôŸØ6=–ÌU.7žzUù€?êû¡z׸]ùUŸäPvÛ—uoúŒøa¤XÎtàÛš·P@`eB+_06ræa¼©Tz¢ÕãàNV{~÷÷õË¡ÛèkëêM(™x7£¸YãÿäGæá¹ 96õ·­Ô^Z¾åîRgB}XÊ»K6—ß|ë$tpÓÎ-vxv’h‹¢ãž,*_ÌʱҷబrRó¹un~¦yÅ9ØÐõøþyšu°‹ »­ú½VR¼Ž|LšlÝM/«ùÐÃùçûy÷Æê^Üfóbغï7ªqIûæv·Š-øÃ&yöm,b͆ A½æ¢Pÿš¦ öï"Õ¦ûñ|9ëí*0ðÖ‘Üo4ªÂ»ó;ù6ƒ3Ì ¶2ý²çø/¸‘æ8­ÖôVm ܋ЮûÛk-SŽw?´ñibyd&(ôWÐ-És¿O¾{É8_¢bÁ½«§w2ÏuGa çUI¬½"ÊX“OãîdFnÕÕ°øv,¶ƒàõ’¢‹‰F²ª%Á(BR¼êƵ´Ð¾L&)¬sÛÄÝ-úÏLöQ¥ŒÚ×tÚ,ÝîÕÊZ`?ôE,€9·;ùæ£ØÝjêÁ5¥'á³Æ'ÔÃÎôgø×s„ÚmsF¶Ö§± táÉ쪗>'ýDÞ¶å||#¿B·Çû„ äÎ\o'Ý,iaç%¿¡Éüc]e>8B°~Ôeÿx)ø•ùíÙ¼ù™õ²¹¹à/z ¿Ø©C…õ? Öä endstream endobj 183 0 obj << /Length1 1394 /Length2 5935 /Length3 0 /Length 6885 /Filter /FlateDecode >> stream xÚuTÓýû6-N etctJ#- ÂÛ€l£»S@¤A”I‘‡’AZB$$DBºùÏx~Ïÿù½ï9ï{vÎöýÜù¹îûº¾ãá04V£í·Ñ(œ°(,TÓ7±”‚Áâ 0X ÀÃcŠÄ¹ þ˜<æ ‰FÉý¯5 ŠÃÛÔ¡8|œ>ÔñpŠŠE¥äD¥åÀ` ,ûw #T‡z"á@}PB`ÿ„ÿگȽ»f&7#þOUí ô…e%%¢¢2’@iiY`À¿Ëügƒÿe5„"ÿ\üOEm”=(û~xãðüC þ?’þ»Ã4žË ÿ?Ô·K‚aø/ÑÿoüJù¿ñþg•ÿõÿûB·=\\~¹ùùÿ7Ôéâó'Oe^úh¼8Pÿjø-e}éáúß^m/”žâ¢ °Äo;{é€"q0ÇßDú{ø.HÂEþ|ãà³ÀàÿòáUsÆ¿U°ø…ýr!ð¢úw_  ÿ©>1I) ƒúÀx’‰áYà'Š—)áý‹ß@ çñ€öh àçZ%d€"n$>Þ øWi˜ƒÞ/àûþ}þ¥rÂL£aòáN/Û«TX½„¿¾'›ûÜ“dÙ-‰ãxêç¨w)KsÄ]õ>¼üZ_ºáäóÈáqVÁÃoë¶œÙ4­'8®Õ-á¼Þ£6Ä 8šÅaP:=ffó¡Ñuªûß#‹ñÓévñ劥³첕ìÐX´O͑Ɗ{ ’Û²FgÉÁý÷ÎÒš:Éð0Õ6<#ŠC&¨6Å3ù,@2ßÍ̼ÍéîJßÎ×í¨”*¤c¦÷ÕáÈíKîafx˜£S%àU•ÜW{žšÄÉüÌ5’w–ÚÕ1‘mx³Šƒ2ç\z°ùp÷výmeVHË䈎0<Àn«ëåŒÁeçZѦõèýú¾»ØúV|ƒçŒSö³„úp牾¾+i·ºE>rZÕ ä§Jž§3ÞøØDÐÁdû~>U8Hé›ïPÇä•ðGÛßʵMwÂ{""°iʆ‰Ã›³Ïâ©Þßó„ž+[ÆÍZ5{LÚQíäЮB[ÜůJ–sçû€èåÃâýÂnð0Ð÷Kx¾V»ã{IvÞÝ!eA±¤¡ŽIb]Š 2"Dåb{#ïþÒzº£ÖW=×{½æ`•µ&òkñèYïM’TñhW6Ž&aêh!‘Hcö9Äc õ,µm>ä¨C$+‘CpI”Iì–Ì›¬ÉÿÝ5vI:gŠêÊa{+%^q V à ½Åyåã·îàŠÉe­§gJ% m`R\ê=H%ss+Mf˜ºov›' »Ùd݌ݦ6Ec.ÄGoí͇ýpL.ì·‘ot¬ñÚ;Od‡¯4?8rÍ’Œñ-Žv6 f)”ûœÂD³/=)µ"ÝT•jf0‹f8" Q8qÿÌÖFË—p@÷Ù5èe°‹´Ø»æ[ˆ¼–Ù[БK/ OXbäf¶(„OÕË’HÆAœÂÆöþÅ@:Mð;r7-%nŸ°š=#ÃàNqv‡S8&7ü{’á 9©,ý‹¬ÖK²Ô:ÍÙƒÔæ¬‚À GÌ5'mI:´‹jð“´· ¤~@ªýÐG®cY‹þùLeÑÒ«oÝ¡~>pÄè­ã¾äJ «å2-~zÄ\ä¿aN3œÙ [n4×\è&¤ Í×ùHS­àµò%›#褌%(\½v­ÓÆ·Š- Î3ò8ò{¬Púˆ<0¶lê1GɲۋåpýR2I³÷BŠ1ÈBˆCˆ™²c¿$dÝ0x¨{D`Tl,…¹bõ)–ë´§oÍ·ûØ´c—C!JЇÑFu2ï•÷I¸äî&bwn«–÷‡ì¹°]òéâ’ÚÂÄÏÏ=/kg‰ &µ%a¾žE͆ó…~&¶m–´èhM¥]§´¶týai¬ô̧1‹C( çÉK¦ù®;½g7~Q¼W÷B¬E$7 ÉR´9í$ n "(×cκ²[ ˽3Z¿LiRè;D! 9—X q³]©»³évRꮪ¤¥â›Œ9œfà{5û>;ˆænòQççZÿÂ%M£ÔnÃÚàÕgU¬Ñ­¶‰TÍ+ Ãqó·.üyf¬FîÇ*Â:b ý3tVšî¹xEqCØ¿næ™?4¥©<”ºmOxÝuëÓ“Ç$§Ä ‚‰_¾R ÝÊõ40€Nc¥ÐE÷O\óÐÖƒ”+“«Y¦;\a´eGÍàÅÔ~–3‡ÂZ}›¯<~×èZJ2,Ÿ0ˆ,…Š!Φ³ÈyÝ×3·­þôù„ïKGŽî©°ç1ñ“C,ëî¶ÀjRkî ¥ÊÂ3Ò@ió¾±±®4ÕTïòБ^}u1©a¶“ÅBŸ*tæk¹ÜˆލxNõ <+×öNV;Ac¦…€ÉÚË{}ȹ?Àª4HEsg!Ž©ÁéÓQÈâ÷ÅùÈtãýöÊŠ­×®[¼‰/_vÛ¬E¡,ÂB¯õÀ ŸIò6]•â<»˜x¸º¯>Q±.:˜®¶üñ„–»{²wº"w[QÑkÊø4¤'Ø* úW.ýW™Î…6ClÉ´œÀa<çS ©÷R\¯½ÚKšs¹¦¥Nµ±¬%”®]2¦otÃ;¹É’çGÚÃøÏ¯Xn‘z)éhw„tš¥t74_æŠlÝ ß§H²ƒeÖZ8@ó×YV> [DÔßÿK ëMW™må&ö*Vº¶QèÂ(à>~^–@SnÐNV§¼ SIÒ»:=®móÊx±§õæÛ¤½ {¹Ëù¢ØË¬-’H  ÞL/ñ½½‚UÊqÖíDŽV$3ß¾õ5'Yëv/÷‰'Ofhž í/î»#¼’#Ø– ™›ñª )Ú œÆÜ¢or$>Ç<©ˆxV‘.×~×ãldñEÕÒ›×¾u·9Ù¦9Ÿñ ›‹ sCš´ e ý¨± eM‹~Ï¿@¢(êixƒWÌ¥-vÛQL›ñºîYž*ß´—fX7KÔýzLŠvêÒ.}âäd£tGÏéÿʆ™¢"Ͱ}ص›óecº<¢é± N&g‰ÃŒ;j5º ŠVcô? ÃF*9I6;ºŠ Êx ÕÁ_¸zVßKÿQÂ4+Úýªª‘ù’ÞnâJ5VèåL:%ÒgÒ…nò )zw¾Å(Íà ÿ¸¾sª<ïý8ç6w8«‘ôÌó ä!Ó.¹M“ßëär…¥AJÿë+Ìkºw‡n KÜ"Ö'b ª‚Æ`¾ÙS~´d¹g¡ÆÅ©:ù»àn"7˜h>ì±j§¹.±9G6¹iyû’KXg„å«"jm"š“¸h—Wß|cÄ.¾Ö ù„ˆ„7­I© Íò'WXÖ“½§LÃl鮸4ˆÙ»“äºHnêJ~ºÁ'™œÊÒdœŠY_ŽwƒËJMì…_óÑ]ãÕg²Ì6>}·8­¨Ùã`Íý>¤¼/²AËMØíÈUr·K¸ÅCóqÃÜÜ“Mä¡6$/ún­ì›PE¬µè¾Q$0>/iôÎÌú7‰ÎˆD*X«îË!.ûíü÷¸äÖûôËZ’Ä}ùÊÁû9åe‘°DŽ“tê²¹‡R†4kSûïô¹*òdX2-Ú0µ­oè<=Ô4àƒ¦üCŠÇ ©Å5ÇK Œ³â3ezh._ýB›ÝƒÄ[+„&Š¥n“¡ …±7h$’?Ž5Ýã„È?þ²¼¥õ^jæÔ¡ü´Èô¸ðFÀâðz”O²Ë<:îYr’—¸úfíù‚é[™Fè¨çþðãöï|ñ ‚Ée6÷û”Ÿ‚IƒKMÃ.Q¤–—È8$É÷†ëÆ_ «ÏHç¼'ªžÒå»Êñmüþvpë‘~z”õr} z5ü‹HÛy“½æžãÄBKtRu®Qp^%m" Ãù'ßBÅÓ¾WáZ­ÉY…ûT(Ù£Fb‹š’éò‚@¬h$S¹Ê츩Zß™®ÿÃͧ;sQûN5KFjun(«é(ë¹ß*[4Ñ`½ä°‚Y˦áòa…”ƶùfø?¼³>äN9¥®æQ]Ê;¿ôhÎUÈÆ^vŠ­#‘Ðú©6¢ ž—–ÅÄr¶c®hãµÕrÉ–³|·#_Ý7?vÒ¥tüŒ;ãîäCtχ”A5},Un¹G?¿Kž+­k­ôYÀvê…¿Áÿ¢„ûꮳ¬Û—· ó"u>’7e–s¤t-l£¥ÆÒ’Ìê4Ã{º2Ç<ëúÖvݳ+M»Z„²ê+W8<<_`ÓüJé°ìiqS–w»ÛžßÔ\ &(p qTOà©«Q¹MüHŒóÃMðõ:úœ+-Gኙ…‡äÆË‹ T^#MOü9={ŒÏL×çét®ç—˜n_JÒð¾¡R‹õtü »æ­ºú§š.¥×ŵO=¹Ùˆ;™ö Å“‹sZ#–C,Ö¾†‘ d}X2}êIè㱤1hS–4}õÝ®ï_æÄ/NÄ«ó¨ÐšŽC¯VÚú¤ËÙ£}Ìnz½“¦J\*ºÙ†‰4 …7fJ0бÝcâBŸyZª^¿+?þýŽS®g—3…\„éÂt_!ÑÕ ÆX9#ë·þÓ” ÑÍÂÄ+ûó„þ”‘ó:Ñù Ú=uP¢Y‡âˆa¨@+ -ÏšÈÎÒWõ«Ï”­H/×î+v¥yäÝ m’zí ty¡¡AßÌ­«E¸ô±8µ@Ƶà幘¬Ü tÃo´º,h×kpÓR+¯j>¢69t6-/IœK²Q/MïlÆe‘0£KahU6xÈM„yBö©úqek¯0—Ûfwÿ÷ŠtRz í²yÍÉÍÉ ËŒƒ|ÂÖ¶J„3öiñ«”Nä\S]¼üRŸÒY ë|sòˆ#x÷”»… (9Û÷Ïb(¨i1ëø_mŒnãWæ”îâ"'K ¼ Íâ2  b^î´ª¦@«ó`“`Pˆ]È÷†êue€ªÔ˜·LÈ­:ÎÓ¼ääÉà~Y ó¿:¶õ^<ˆ)Lr§bð8:©ß»'f|~ÚwÙ8-œ?+·;òƒ;‡¢YŠV[óŸdžŸí[c-$lÃÌÞÉM\M¦ÏT ‚ÅFvT¥­}ÎUa ¤Ò%I¾Cj‚0X…Ñ?…*g¬†• ÌÔzÚúe]#tµ·æ>®¿ö^¦RD ,#Ör")ýÚx Ì5"“VÜö„ÐŒ(©è>Å–«[Ô¤$/lwÜ[hÜÌ_™±Ñh{.'ô¼5Ñê#ļ!ßøf‚® ¦ˆ”ÌÒéÚ L#Ó=”ŽK”Õî®t9íäÎ7}­dÂ9sýØ¥æÙ‘tUÕ‡ÓL¥'Ê–IÁøÒÍWå…/ÊÇzR„‘Œ ¶íËvÔZ=U¡ ,I¯!=ƒ&K%V_¢×X”QÎ¥ð‚g··•:OY%ZR'rå~&)ÆÐlܪ:Ïúî:ŸÏ^Ðß—¼QÑ$,õBš>[}Â[¯ Íé„tðH®D:D¶Ž÷¯ßÔ‘QNÛ$Æ Â5Jç£CßÖ&‹Óˆä¨9ìû±$*9ãËÎ$Çm’}ŵí>júÈ-õúãÕfœj³¬%rlbGôŠÞÀU,ïøè›ú³–Eù(Ÿ±wñ6lÌo,Ù#ù.Kヲ}ãéfpÉè€` õyñq`½Çfå‘jyºüí˜3fÕ…ýª–¿îY|ˆÍ—°å^›½öœ³z=»\µIÕ˜cFÉ”Á ]žÒtïË;ð,cºd3XÓùHK°_ÖjÓC¦Ó5ž/œþ鯨sã'ȇkÎ!Î e)"œ¤«cɇ„¢Ñn¬ññg»1·zÍy·i^Ž&Z-îM€µÕ’)Þ}’¢òå"Ã: Msð¿ (nâÒj:ñLÝñ H¨$¥-¨Òzœjþ~÷d§øÖm4émÝ:'ÝðJ¡6œÙ\½d§Ò´SWLFyE9ìn3'Ú¯ºö囓nqC‹ùÉ=Ys§öjȼÆ.[F UETæåqÇ£ÃWŠ®ÉГÔé(üðk?¾Ö-žwcÞôŒSò{8ŒzrKåýU‹ºÎKXCŸüäâ6»š¡‚QU*¶dÝP¨œöò°Q|…<_ØWìgWU…ó–÷ …WOë¦' î}ü 8ãù ^»¾ônã}OájÈ—žfAnQ°4ñûGªÊÜRãû£¯Ã_}Yú¹-oõUÎXƒ¦ü†'\ôE~€ökÃHroÿ·ùG8×—í« ]=ÆfŸÌÞÔ½ñé‘U0ŒåIZ©>ºfO´·MÙÜ5‰þVGÉÍ¥;¿¬JäŸPTS÷0G×2s5{~5×ýpF‰¤¼Ä<›‘¯ê*Ï(9’®§¾{ØàÏ“†îœYÈt>Þ…y¨S3¹^ßkæ7Û® âûdøˆ"ä(üö°–cÀI¿µ •Ç‹­$ryëˆ-áìS_xy´ïHy¹&­€·÷Ç܇ñf!Ÿ¸¡ð V>HóÉ¢kW_ÃtqµÿÜ]C(?»b´‘·xØ›äžË}µë‡ùËÛÛ·¤L]¿ö»Ù¦ëk…æyGTùoë”;5<]Ù&lÍ­X&¥\T•Qxì¼` ´)äX¦Jœ“£¼Þ=w²¢Þ¹þö X?cÂÚ ËO¬¸JM™2ì7©¸Ý´_¤ QI6h-’Ø¹ðæ¶ˆê/ÞŽ½ú†í–«Q¬¸•~Ç+žŠf"ÍQÞ»‘&Tä絈a«Lá>úéM‚ ¹”×OÕø>‘ú‘ûä)©S……úÈx¯¦ÒÃZ·ƒ.CpK^ì©ì0êüj&p8K á¨*®™ÓßÇÕÆéÉRÇ…‘R.'3C–*‘f}pjå_s /ƒzÚó E³šI}‚¯ˆ]çDä°WvÖ>R&=µëèë!9ëÜ[Í­MFl¿ Ü‚£8„¯ÝaðMå©’=)÷%›hP[¸Ü³°šdÿÕ§cäq¦²`,9ļH´ÿ9!X˜ endstream endobj 185 0 obj << /Length1 1574 /Length2 9715 /Length3 0 /Length 10758 /Filter /FlateDecode >> stream xÚ´T”]Û6Lw7‚0 ]CKwJwI ã0C ‚¤´´HH§twƒ„ ÝHŠ€Òw=÷û¼ÿ¿Ö÷-Ö®ãÌ}œû873ƒ¶·¬ Ü¢‡!¸ùxxÅòúª|¼^^^^~ff}(Âò‡Ùââ …ÃÄþG„¼ „x´)€pà…›€OÀ',Æ÷\Œ—ÀÏË+úO ÜE  r‡Ú4x/à0ˆ+³<ÜÉËjgxìóÏ'€ Ìà}Îõg:@Öâƒ` ÂâøØ rèÁÁPÂë¿J°IØ#Nb@ ‡‡ÈÑ•îb'ÅÎð€"ìºWˆ‹;Äðe€&Èò75f€¾=Ôõ/‡Üár P0æú˜â³¸»ôTÕZNØ_Áêpþ€‡ï?åþÎþ£ög2 †;:`^P˜Àêh)©ó <\Ìæ@ƒ+ü1ä‚:€¬þ<: $«=2ü›Ÿ+Øê„påq…:üÁøG™Ç1+ÂläᎎÂçó)@] àǹ{ÿ¾Ü×0¸Ìçd …ÙØþAÃÆÍ hƒ:»ATþŽy4áük³ƒ B¼¼¼"ü"ˆ3â ¶þÑ@ßË ò§“ïó#?'¸Àö‘Äj yü‡ãã r‡.n?Ÿÿéøo„Ãǰ‚kˆ†óoõG3Äö/üxÿ.PO€ï£üø¼üýçËüQa6p˜ƒ×¿á^1P]KÉÔPƒóoÊÿqÊÉÁ=>ÜBn~!^¿ àùã‡ß×ùÏþaÿ§Uýûtÿ£¢*Ìý‹Äãôþ!âþ·2Øþ^vÀwЄ?ê`ûWþ/y…xÁ?|ÿÏKðgÊÿŸöÿ¨ò•ÿÿ>‘’›ƒÃŸ~¶¿þ?~#ÔÁëïˆG=»!wCþ¸!°ÿjùk¡5 6P7ÇÿíUE€wDf÷¨sn>A^Á¿ìPW%¨'ÄFŠÛÿ¥¥.㱇ц»Bÿxw³xyÿ—ïqõÀ¯ß×Ç+ûÓyܬÿî«ÃmþXA~!aÈÅä…ó¨€G$ðá{ÜUˆçŸy`pÄc à‘£Àî‚óÇÅ €²˜þB¢ âÐsPõ_ôÔø‰€šÿ¢Ç<­ÿ ^Pû_Äêþ‹kêý‹@ýÑãY þƒ„;€áƒùÇ"øxW«ýŸ–ÿØÍÅåñ¥øS¯3úÿù,A ž0Îü ,üª:¸õ²R–ƃ{k”_¿ÿ8âËhS‘Ú}['P^âêD 7rN¶sêGäÕ*ÉÑCÃkc Þ×ß}S#Å(æk[Ñm­7¸|¿‘H^﹪»ñÿPëè0µ€ÙØQ4ê~ñ8•™d§är>ÚšNßQ–`i,¿(³?Àd­ÿч2‰I%""€‡Ü&›ÞV.W%;9Õ®Êäz,3ú;á©ÒÎUjß0¿ÐzÿB 2t-•fwßIí4}WêÃÏná'jVߓ̛݊T7ïÙO[ƒß²Y»ŽèI?ÏPÝüv¬r¼­ªkר2°ŠÚ—‚*¿úžñp[ö“§5뺅8G‡BQsÄ|’~¾·€kIwi©2©¤6nï¶Òø¯àjžOÄj¾êUƒãñú®I“©ù\Ãi¤õÚz'>³|ã`ìáÈ —(—\ÛÓ Ý ¤ÌhÌW³–Ëcˆ*ƒ¼ÖB\fˆ£º½g†y´¾Âcû#Ê¢Ðlò”‘`++°é IÃwÒßk4i©ü®w§;<³ „ç®ÎèBÕ»Næ.*¤Ê±Û®óC·¬ÉøP³$3™<˰ WÅ ò]Ìq%‡ÚNÞ5mЇ™?×H ¼£ò¾­ú}HKvÈ84JyyjP5b[ê7–ímæ ‘ùœäó®fX¸ûÍÁwéˆzÕ%½5îgL‰5§ÐF¦£j­(œœôŸ çuâ¤÷–bñ#—~.qËC.µò#©v{“[ÝŠ´NW¶‘›,zÖ±ÕSõ쫆d¦-5Éñä—Ò'þ-øÊt“x {Å¿6ßfO1ªÑçÒ,\*I€TS_jÖp´ÿ<ÔÉZüÍJ&Þ«,øƒˆŒ„š×”itgÚØý ‡Q”kôž6Úý<¬ÛÞøÞ@üI>Oˆþ¹ñÀ„ŠÏLTïm•~Üý5¤³WIÒ”½7O×>bXàL«Û—•ܨ"(üˆžBÆ17ÈXÚ·¹dµë/ uÏizID5Ö6¾mÿ”·%ŠÐñdKD%,|£i_ÁÌ{`µ¦P¶µÊã¼´Ã×e¥k 5#áy˜ÚTBº #S0r2± Møò$ê^ìÇXÍ)›•’{ŽÍÑjˆº²Ô<§rfÆâœ­?eN¸ûDˆåŸûB@I–yOæý묘 úÕ“ `J©y¦ÝIïÛ@þáó‰—7áÌß`cFlAdBnªßY&VlrU±ól*[¥æ)Wæèí»üôg(ÖÇ;Å™è†(uãzo´ÎŠËëð²$ZÝíØ¯»*Ë2Öl0oÆõMa·ßo‘x¨‹1|þœ¤ÜþYVÒ3šTLý±±ˆlšº<2]ÆT³®î@΢ŸØÏªû89.ïîmªrqÅK ý8ÌÅ|ƳFôr”ò•_Ü·>¦«O›½¸øç6Åß ×ÌËë‹sMФ9 £âGÓP†í­Äìhtì>æmƒ0š«É_D›žå#+p1 ”´¦“¬{y½Ì‰j!å)ùx1¾ÏБõ8@³žpͤ4ÌEª‹‘Ö ryÆßp†„‚MÃybþ»½oÈâshuÔ÷½¹Þ®{CIs<J‘7#£›kÑd€ÅãKÁ0Fô¡mñ§'Mâ¯æ6^Ýs^Î5Á3"·K Ù½ây,$H±Æw?=LYØi:Ší«à.]³å‘]Ó¿bâyG*¿H9(5qiã²IÜi’íÝ-øUá‰#=ÛÍr‰W|±tIÅâµk)R¨«B0¢\NˆSöòrêÖœŸSh˜ÿ¡aÏoe W{qX•õ^WÑ~©yõ†Ž¶%Æà´ŸëméˆrpVaÍ‹—Š@á¿>#HîÀª^ÕsHæ/Tä=K¸ÆÀ3k¡þèÚIÏÁÃFj¾Q@ßì€6ÕžŒú§ˆù͵‰5æÍm·`Ï;Øçr_+úÎzL¸²|ÇT¡:ýI„•@þ{€ùÎÇ­–â] Eʤ¡–h8ï…wM£J"o¬[Æ&y@Õ7½†ExÐÄ “ÕŽ]ˆl¨dGìee =á'“Då6†¤&/€hÕ´K=28ãg-¨Îλ¤ü;œzì“Ì;sܜϟt·ëOµOkŒìk{‘æ¾¶y›+‘«Îewx/Öüü¡>êË(¯Xéá'÷#½¯-§œ·\€ÅéÄ=DPGÌm@íƒGÛ)'L~ê{Çù Ž”Y(–ªáÂ÷ ¤‰ImB%²ß¦pݪî:« xCi3ÜIÔ×íT ’ÆP`;‹۔”êôßw @ž÷ÎÖº}‡Mò$`â„k˜‰Èø‰ìÄÖ¿ð“p6=3».óõ²Èü«â¬ aÌxzÇò´:g¬aEnyzü¯®Éj S oËŽë^~”Ô $¿¶‘b0YÙmÑx§S1š4œ¶©Y+GÆZîæ¼—Û^B!¯¸2¢f R=:\¢U=sÊ=+$µçh*ôp¡Wöü$¦9>·$Ì«$6x]dÄ?£Ì²x]Àio(ÁTl©oW¨¾7Wïv‡v ö•>°¨ôº­bÿœÍ_µô{÷t„{îòÍó2Ê>s¢³·_w]Ê Yt’fyÍÚÓÆe5Ì3m§H×{šÓEB›.S ¤®Þæ,15Þ±wêKÇQ¥~å!Ãñ©£ñÔzÔ@A¡!+*e¥÷;Ï䣹­ì$ŸPb–Û.³ãè'T+*‡úß„QBÒTÝÉ‚àÒJ4v¸“B©]®¢%q±µ §ß”M\z™f²>¨ovö]’µ‰$Ø‹í½z ÅNWØÓ†‰¼¦å¹Üwø]ÑMèëàKL‡W\,½\ú(ÎšÊÆ¯m.½»˜¬šºÄqxÙ+;°*–›´•ÎêË=éèB>#„ ÙV(L¤‡ß(†}­XH!È/È¡MºìåÍJ‚Ñ7¸—IÅr0Øð1oê9ùQFÞ¬Œu¸ ²‹¿oú8þnõÝî„—9ßÖ+$'Š•w{éeÑ.‰FBŒ6ö­]ç÷þþŸJœŽ».‰3ÕÅd„±›.ª:}ú Ñ^àpQ~ŸÜ” òZ̈¶#QF¯}8Äaó¾Ã¬ÌZt¨qåJS·Ø%¸‹™WíÉêÁÏFkÌ/k‘^ýœTyŸ.mr·ß¢¸hÌŒ8íýi|$_{皉O-Õ ˆU½›Š>ÍoÚ^­U»nS u°§*A=”Yø‡¬ó©$Œc Ͼ©Œ^t ºOMãJ§†SÑôM±¬1"ÌÝÛ Ž³›ºßC^¯šÆ[Óñ_ù69ª¼ çós¾k)µÔæ§ð]‰üÊ|ónxäuµöÚ¹ üªÀro;Œèíº¤ä1y4öIj¾{ÚT\ØI4ÑIéà÷ů"—BfM–“»¸]ãì;§ IÇ¡µë¡@±‡»F¾©h"ë|…Ñ;J¿a%«0Ô™Ž2Þ ðvÃ&,Gw)¨SõüS­TOzÄ[È’P£gã|ü9…F<àëd¼0ŽYËK•‚#n…XøŽör(ZLƘî;4tÄ´ÇZG:_îwŽzœ·OÜe^5JŽ>¬Zª'É„æ_”xôhN4bû)-Ù‹c5Å Eì{Dü8eni{²ü÷€9û´GÖÖtþjœäiiüÎ+¥¶¶Ä:1ÁD]VèhŒ8°Ÿdꄳp`D(«Gô6.Ög #ÒœDPuQ~ú»pxýÑMÄÚS‚¤DB‡}~jöZé5yç\mÈE»Ý}nÚ;Ü»‡àÝv†j»ZüVÛiç–pÄlºZŽéô ââŒ}%‹KâÒûºÉ.ïW}Þ‘ß:¢Ñ1T0ó1$å! dÕWÖ„1:¹ÝOAº.|Eß7\no+IeäÃØp-2ðõkº¼¡‘_Õ$>Ó„vr57ŒÓß /l/V¿KúFÆëÌâ nˆÝ%°u`›Eô¼)R&Žvu§{åŸ:”ðºT׎vxHU#‰1CxrþÞÒ܉.«¾+É{—>Oÿ€‹É°x\”øÕ×ýEÓïu§±DOüI…ÖÛ¿7"‚§‡uœGÊϧN(¿ž¯íûäe`ûê6_¡Ü©#áþ¤ì7's——µÿÉÔOÈ&”í%*%²'+"ß%ä¾Ì#¨,ùž­7¤õOÖ]Z:2%1ë{Ë4ÊFSœákWIw땱\d‘Aßê/=/Û,™}'Šj¤XX¼iU1ÉÓÏ* Œ® Ûô®¡²Ñ†¹œËH“ñL_üâñZÏ”Ïnf@$mÕ} ûœ¿ÙWáD‘ŠVç % ;Kªîñ$›4ûÏl‰ÕZk8][²¼³ø]úЋîëw9»vüÛÛ÷ĤdaþN×úÀ™ùF㇘©ÁüåìEý.ý qRÜû‹â)êOû•%Þ_Z' W)Æv½!ÓX¨Ë¯ãÁ’Þ‡g Í+«i+&ÊäsÁ^âkBœ±ÈU•ye‹t +ËèÁèn|èv{ÔVˆÃº“JôVs}5º–eªÂo¡áYÖÎÌóëPÉí0 ïu|¾1zÀÔ°E'ƒ‡lÊ/š×_Yõ5$dôƃ£ËÛ^k‹ØR—6II—þ<) lé#ñ¨ëÖ¶;Ô:^âK}Í”25?1;÷»J]O_¨[Ir…=¼ŸáÙ¬2Äwpîk”]U†¥fùŒJ#éْؓ좌Bôô„Å—²·1è62–”CµËå‡8k†ÁâY+£BÞˆ{ ǃä:hÿ}Û‹w³sUæ{PÇ®Ÿ=êÃ…Ùçkà†ñ¬×Rñ*ªeÔBWZËŠ*Ë›]“C$`Ù’Ê!³Ê–mx‚¹¿% cÈòŒÐ{NQÅo$üú½˜#_~Èׯh5™…ÖL“–O^âO Ù]I†IʬÖð« ö[t ¶OÂP,¢EVÉB:K?¬ŸHx5xîÙlÝê7„e³yÞ¹º4_5îØ¬Å\².ƒ1f}æ 3g[S¿îB´ºf“Û%¥•6VÒæžãèÞç#Y¼Y½¾ÇÜo½èè¨?ß; o9–8-"e›Ë'Œ‹Ÿi¿Téùuã/˼ó«Q%&î’6V \«t‡ÿJíqà˜ÌíÞÓ…ÿ §¹Š®¸U%‚^ñ×v/}¯™ ~£Š×ßfÈÁír~1ˆV±°É» ‰iÍÍþM]⻽ٿN~fÔ£JaL4ù|ÌàM[Ù™eºîë«c”%ÅÏn*ý9*êýc6è ý¶x8¤Þ¼ìrâßlŹ7…wSa )û x3õŒ-ÄEV}TÔ¿^Ñô~ JµøúEÝä“Ô’ &Q ìÞ¥\ˆ·^2tw)%Äë,Ý@ Û´7KY:Ãuü³úÀþÃö솃¶cÅ[âzŒƒÅ'——7­à ÅW×Bä!±>OÍ´º Ê 5cÿ³k¬T7„[ýí õyXiuíÆHþÏÙu©–þ…PÒK.¥؉—¹­Šå…¸&—ŠA<:pù#;Ýô¢〧x8 ¸“a, êî™™HýÔÇÏKþtOÞÚ7ò[;U.QCKªxÕFÒsÒ×] ‰y›j{z|Çm6_€Dë¼—:]s‡Çl*ѱŒU®IÒ_Ú,fÄ¿j÷gð\b†Ý±:ÚÉýÕ´ ¯+uÉ^.« 9AɵÞI}³“1YÚLâ|2Þ-z·Þ8ÛÀ;X[ƒöZD†à6¼b/ä¼’‹À9Yv°;a Ea/¼iGPS®Ä ë¸sà AøÍÛÜésÓ—ÂDÆü˜déî‘øñŠ)à’Ã’™Ã2Kú6Ù’pÝ7±Fr ¹§ñ70ó~NU!swÒ¥ê6qÆô§A«QšÔT]Kè$M‡‚Çi¡cË˽g’>¦¿ „cáœêÌ_—%ï*/™,-5îƒAÄn~¥Î®•E\:ë•JÒºíÊŽ tôŽË%èê“­Li/<¯Û=ë Ïo¶”êïcˆu.òdC –¸…Ë!‹;óMÍœª5ýIˆC#[jþýGYÍ‘ÖõµÓ&Ô;Ói“qõE­£‚¼ ¯ŸuØi;µ‘Qù‘˜$ŒZíYå±µè*ѾQ¤ïÓ?ÔPÈÂÌ0ÆCÅ:ãbŸò^'Ù‘Â~ÀœéöRÐß•âØË ÔX¼jÚY õŒš”²–¬Vý¯"Ç[9]×zQtx‘w^s¿í’25©€.: B÷ºéž_:ŒJ?mŸëZ§Àd[µéf'¸FNqýE;‹K«©56ÅP¥–^¿øÔg%Qð—g—¥`p uóLj»ú@ž5oòpqäÇû>ÓÙÃjÝ ²…)Ž)å\¥Øyê qyVˆƒ*ØØ@Ì•>&œ3“ʲž£è˜r£F‹æÑUÞxø* ©. FèËÛáO5zê‹£&žR…Y<(Ç—Bõ|_{ÃpEž3€‡«ñUö,uJ¼âbn ÂÀúaC¿=È¿ûΕ݂´h íz^œ¼™ÎG®Û7w`£êKî/ küIo'H?^-èìê3ÖEåüæ«jkì“m?Ч˜ý.Ð\(È Æ•æ+bNW!ŸÅEÙ*7l8ÈÈ¡˜o:Õ00˜b—X±ÂaU+}»ø3#_;4BW>¸%óø„]}ZQa¨{iâà‰žÞ(ü BË:»äåGL}IàüÍéM€ë—ñ¾³¾NúÈózD©´|A¶­eáùÇaì%Ðïd6y†¹ïÈ Ö]gX´#iŠÅžOæ_1ÿn7ùÝ×} ftÏwœ½’¼ 4yiÏâõ:¾òèÑ árƒõPý}ïSýøñ*Ü ,cGÀE½=eÔϘÙ1UºNÄ?‹íÈ;ª¤R×× (´|ΡévLx c»AŸRðé]¨¢~Ke1Ž´™éO,E 2¹«Ôî]ÐT —?\™AÒï¸&Œn×'QU¿C«0%‘NLT3Õ°§IvT¼Pv2ΜÊ:ßȲoy²éö”ˆ°déÀm­.¹˜’•!•þÐN•–po[âAcm.åkõpKûqdPÉu[ù¢^aa*ÃgÓû[E«„Sì4Ø¡¿å8lñÄ)ª~)ò|½Žü•&Þ™•õºÓÓ´þWAGF?:u)Ñn¤NﳬCl _²ûXµÔéÛ’#÷-ûŸ¿es@ËÄ É GÉ‘ïK`5Þ¤[ÖÇûË^,½aø뭊ƒðJfo¹AùâÙÅ”ª_j«x¦­c ù‹¢´ŽÔã¢zoh˜¥i„š¦Ñ£H9¹†-ÿ8*ý°»H+Àèbµ?xÿ`,EË#7õM(R·<ΔJ,¶c ßþcÒb(0¡RŒiP¶^Ö–Æ[Ęx-젡 Ÿƒ­eÀܬ+­Å›;ábä@ù.¼«‚ªÐz9?½¹K—m¨E×V^ÑYe¹ )Ër’”7¼ëðV4â'$S\í  û¾ù¥e]…),#_÷sÿ­y”]ßÊzíaØûq»2u”®(¾—¢[ úYßÍiAHùç­e 9)ýŸ¶o±W4=ìg"YX÷u¨à6B<‡Êˆ€ç^²ž·¾ÈÞEÙãn™‹!Ü¡Ü~Þ»zÅ¿×ìyÐBi ž2¯×ÈqÕ%äâåžÑß ¢ž!Ì蟼Ff ;™PZôñ:€*ã©Ã¸×“¯ßk£±3 pÆ ÂJLsµ“ Ÿ <ø´ó!Ø8[WUï¬#÷]œïôðÌäß°nm a cÜŠË2 |)Ë‹ ps6KÉIÙVpO~k‰µ'ŽÆoÚ¿>¿I™qøá¯Çu<þuÅHÿÃJ3#4Füä“ß/ ÍY·™A¢Ñ vïÈ"qÜ ’ƒg!…§itÏw?“!ì"µÔ ]|E™]ÏäR–#Ñ¥bq£>yDÕ\Z¡T1a=B÷Ú;ë8_ÑW›ª.Gæ\rDXG°c9UÔú›ÿ€¿ Ü¡N8ªm#EUz4æêYc“ˆè%¹-DYh‘ÊVÝ?x0×ZÈ »¥~‰óÜâ¹[JÉÙ6L²òñÜx`SÜ”H]®%ÆzRGÞäˆ_X 5Ôœz Œ*`CÇþÊúž³£!éûEz÷Ô*ºëhb‹Øý¦Ä¡ÖÛ¼RA.ˆèUñ‚[3ã4Ÿu3ÃVp»²|0G2ÉÖûè7ë¨u½3\â…쬎/E܇»÷ç"˜Þ[ú5,¤tÎW^I*Ó° ËX¦i½êÖDÙf ­¢î+ÏÌŠZ'¼`ãF~[YÇR«zŸÈjõÍëvÉp§Uúü5šz™ô¬ÅÞ~ÏÊ Ú‡ñ°9BªSœ,ën¢•n,fú‰ªR/ŠA:ì¾÷ñwKæS§uEÅ«šmZl2EͽÌÞ“V+ua|~»‹+ éÇ èüBL†¹PgmP:ž·:ÛÄÐ /*ÉnÙ‘ qoµTx¨}•0ºñS0µ¯Wí-؂Ȣ&$wÓ’Žâ²æ=ËæÊ]CWÖÉ ¦|!B~ûëDuc4´8u( 5äå½ÐÝ?E¼,¿Ì٨̀x®^˜ïçð{þOÛª¥¨ŸrâRêmßùÒ¼_Ùˆ7Ô}ê–®ò›»åiøA*”¬úô?)g5øÅy(4tÞˆ! ³ ƒÊ~¹ß*2uMnñ¿™¬bÄÔÅnîî3Ñ¿HàÈnªãÏÖ¿aMW#gÒOÂÚ*ƒ…ñÖ+„‰&¯ºdõù‰Ë+`ðï WŸbPxû|xÄðèì.ƒeB‹^èÜå=Yï 35ˆ­‹éó«Bò¹¿ü`N >2þ9Õ ‘3Po&yÚ!:‘ t'ÛI{F3ûAôC»V¦Ër°´WPµœ—:1ì’VM†ø_†Ã(°§~|¼‹Cát7¤œØÌ%Ïâª`-™çõzj>Å+Kð³´éâ"i¦¾²¾ð8ݪ³¾ãσÝröç-[…ù¯ÐÑÂõb?Sý`?Õ7­ t÷³‰ŸÔàÂ_*%›ÿñ‹ŽËÙ@Mgáñô7ó8Ács0m ±˜^}‚ª¹’!ú0.¤í·ò{á.Hµ£;Ê;ÐÓ/ *¶™öÒ Ü”~){ºÖ õÁd¤8XU§³ßà§oÎkoðÂòWšòWtoc‚†ÂÌïí4m.o¹PT‰¤Q¶‚SäoãS׈#¶X\ùWM œ§¨6žc(¡í] é´9&°ãùshDœ :¬}‚áOHìæm¸ý@N™kïŒEPg¿†ž8jœ+äW‘3ƒ½Ux4ôòƒýǽ§ÑU°dx´ÖÆårü›ƒ ¼f O%Þ2:üÝLâ»,ãyÁÈy•‡§7›qÍ×H«koñ:òÐòêÎñ64Cæb‘÷aðw7œ‘p÷u³ÛUß™š E´s ›™žêÛ âý¾äW,fçïñ Ê ü1ºoRül½ð­Ó:V?;®ocibÎÛ·K¥ƒ&6Ó¼5O ÛT½¬Æ©\Êu ~uð»N¾ª¬CQ‰x,8ï¸ñ7¢d¶Xcæ_é¢>dïåq_²”ض“fºŠ?¿‡ÐÏ7 ÷m1h®Ï¿­ƒ,¥O5¸½;=yqƒ”‘Tä u¤åßèYaIÖµŸ#é5«„N·¥÷›7zYƒФð®Ã¤`ú\¡åL0µF8¨ÔNùyíëPv JUµ¥âQ)ü\SôÓíÖÓš‰*óŠ›7ò­«ìuªß>I¿såŽ=_®X‹Šø™Û_·_; ¹¹ìão,:&AÂñ J÷ ¨/¨?¼‹òç~7ù¬ÿ(qVï¥Öòþæ$ÜèÀX¥1œ÷‰³tááb¾m®÷ó%·";‡?ØÎé‰?¶É9‰•*j'í=¶¹—.*|ž˜Ø¹9HÕM~àÉLÕ˜ò8Å2RYkEê¾êÔÊݰ5óJ7Å“£ƒF•„†€û²RÚ’fÉ]âǘLÖ( û™úöåx&–ã¯Í6ƒ6ʾ…ZÚ¢s¯Á̪­Bj"ß Ñ Gtí‘"öÖÉs,à[A-oÚ%q¼Âßú†¯c»EnÔߣkÛNu‰TuÄj·ÛúÞ³8•¢½ÙîÁðb‚¿ Êϳ¦X³öu¡VD]ylûÕܬíj€››)BW¦ž¿¼äÌo ×|Èbÿé cóÐP&­VÝû5ÿ™/r°øK1Y“%ÏåÁF¯í¤²@­Æ{¦¸_!XÔ¡²kü¤O(ýgë–ÞŒ¢lfctðË“sgq©öD6•8Hë„“ý¶Zïçbš¥§( "–ö^Ë IÌ1N¤7ø¡tž¬Cf©T&™?VÞûSôŠÏù*À/9¬(ZsœØ¢٦܄ ï­°ûØwu­F3ZË¢yy]çZ™PVÛþ·3¸ŽÖ«öŒêÑ[2‹HDzÚHç!„˜Ÿ%úÂ¥å_•ý:ÎcA²ßù–µ[ }Ьº‹ü}g’˜û›”Še°ò{™c_ÑôrÌ)»ˆ]aVÂÈ®šÅ‹*ä§_ù~ê-ºà·I4†¡NÇa×F}UåþÚfà’§'ãOx'#Qßßs9ú²{`.쥮ìó$­ÛؽÝé¨Ì‘£cìË'³,™5QX¦2â¦Ö . ÅÈþå~~çGpŸc¹„à¨ûP׈üöy.=+VF(Hë…ãð—u®‰ñ>s1‰' ,bJî'83į½¼·ÌÝXŸcÇ Üåi*”ôÛ€ÿ<ו`x™ßuŸ©I\N¹~g›¸õ$É¡r„¡‹Oh˜#‹Öƒ'R(¦|ž4löÐÌúyë7gs_`6°¤XÞ¡{Å‚‚96äFµ#yÇ#¶9ŸàqL.¨$Ï 5Þ]Ðö†dMªsjKZl‚3Û~$¡û–bŸJlõ 8áQâ§ç‹GüѪwí² RsÄÉådÎ6)i-ŸFLQ[ʽ!àP¿N”Šÿ©5wø@峹ߵU#õÛ%o¤ãJKÀ<ÃôË­WÏê‚R@æÕq{âe¬2‹rÎsû+Ȩ«ØÕñŸL?S=E?AÐ-vÒ‡Ú}Šš³ým÷DˆA|q1묷`ÂlÐBÈñ¦Þ·Ä7äãêDˆØïu>ô"r[%ù%ðÑ«2ª5G^s² ”,¹K¨íÑ»MOöJ^­ŠÆ)VSGþãÊxmä½.U6j¹6Öy²Tf­ùÏ$£öõ¨Ó»4hyDg*–X±¼`GQÌÛ‹Ý#]âúQ7$t|†t;³õ–ÊGŽtìÊê‚oT3½¤²2gÂTÓZÒY›€{=i‡Ùl^ô¬/6Œ±=¯¶a}å¸È â‹„ƒ’lÌÌø^£ìBÛ.~ÌJ1:4ìÉÅ™ä Þ®!h6ov›Gïg€›[Ƈï±`‚þðn45wéöýs…Òe?1±&ï~2ÒS}åQ2TÛC%6o;«Î¾r3Fý5)Z Îî_)Ð?÷Ë<5\2FÓãùy©y%r5lqç…1ôº/DfSrKÛÍXôËs:ñ}/GFkx?.7gÐtNõ`üxÆøªË†«øíT`&§?ù‹8»[¼T4¿<—rÊÔZ§,2Ü|Cª¹É`&:uÅüu7ƒ+yªÝí¶‰­9îéôç,åéö»Õ´l„MØß¾TïºíFÊî0²'&xG-òVš^W¯ÔáW•˜Uc—(s÷ľ8Ä3¢ÅlÁ}Øä5¥üƸ‰ÏI…¼»:g›^ÆÓzðDý M©R¼Ea"—•½ãê3£w6=Æ ÁGvdšhC‰o‚Õ/¾ß«ùz\µ1.>¹SºÕWš“é»Ìþ?5ðò endstream endobj 187 0 obj << /Length1 2301 /Length2 16174 /Length3 0 /Length 17531 /Filter /FlateDecode >> stream xÚŒöP\ÛÖ càÁwww×àœÆ¡qwww îî’à„àîî‚ëãœ+9÷ûÿª÷ª«º÷˜>æšsí&'VR¡6%@¶NôÌ L<QyUUf&+ 9¹ª…“5ð?r8ru ƒ£È–ç¢@C§w™˜¡Ó»¡<È ãl `f0sð0sò01X˜˜¸ÿcràˆºX˜ä2 [ #¹(ÈÎÝÁÂÌÜé=ÏTÆÔfnnNº¿ÝÂ6@ cC[€¼¡“9Ðæ=£±¡5@dltrÿŸT|æNNv<ŒŒ®®® †6Ž 3j:€«…“9@ètpšþ¢ P0´þ›9@ÕÜÂñ_ ©“«¡ð.°¶0Ú:¾»8ÛšïÙ*ÒrE; í¿Œåþe@øwsÌ Ìÿ ÷oï¿YØþílhl ²±3´u·°5˜ZXŠr NnNtC[“¿ ­Aïþ†.†Ö†Fï—nþ 0|gøo~ŽÆvNŽ ŽÖqdü+Ì{›ÅmMDA66@['G¸¿ê³p¿÷Ýñ߇ke rµõü2µ°51ý‹†‰³£š­…½3PZìß6ï"¸?23 €‰‰‰‹•´ÝŒÍÿJ ênü[Éü—øƒ·§È`úNèma |ÿót4tœœÞžÿTü/‚cf˜X;Œ€f¶p¢¿‹¦ÿÂïçï`áÐaz?fÓ_Ÿÿ>é¾O˜ ÈÖÚýùßGÌ("­©®¦BûoÊÿUŠˆ€ÜžôlzVV;+'€ƒ›àý¿QþËÿ?Üÿ–*Zü»¶Ä“¶5¸ÿEá½wÿ¡áòï¹ ú÷ÒPþ7ƒè}šª?Ãÿ…‰Éøý‹ùÿó üíòÿoòÿŠòÿ:üÿ·" gkë¿õTÿ2øÿÑÚXX»ÿÛâ}šÞ7Cô¾¶ÿ×Tø¯u–šX8Ûü_­´“áû†ÛšYÿ·‘Žn@% 'có¿'æ?ÇðÝÚ¨r´øë¾Ð331ýÝûÊ[½ß)Žï‡õ· ø¾Qÿ›QÜÖdò×ê±°s  Ýá˜Þç‹…àÉü¾£&@·¿GÀÈ` rzw¼³ó˜‚àþ:Rv£ð_¢!Ž÷Ùúƒ8Œ¢€Qìâ0Šÿq2%ÿ £ÔÄ`”ùƒÞóÉþAïùäþ ÷|òÐ{Åÿ"®÷˜Ê+€QåzÏ ú½gPûƒÞ£hýq¿g0üƒÞýAï–ÆÿEìï:cõû±üGÂÆö—ÄÆæÿ_çÅhòøÞàŸïÜþ5+ ÞI˜þ1x'ajáò¿Ô g‡8¼›˜ý¾—`þ§ w¢æîvæ@ÛX¼Ë,þßùZý¾“²þ|gló¾ß$ŒB±¿»Ú¾à?ôïô@²¿;ƒþGý^½Ýõ{0»÷7Ž­5ÐôOؘÿ-uøŸÆ°½·Êîý2ýi&ë{x{gÐûþo ™ß[ð1¿óuüSó_èò†°¿›;¾_¯ÿÍôÎÊÑÚÐÑü!Þ“ÿIð~E1:™;ÿq*ïLœ\AÿpxáüøÞT—À÷Â]ÿ@–wo·À÷ðîÿ€ï=óøSÜ{$ Ã¿RýÏ–;;¼7Íéï‹øý øþûm ºá–æAƼA–õAßïk…ñ\é÷ÆùgÈ÷4Ò¨é=—:œ‘`’©k²6n…“‡zQVwÄ©n„–‰^Ò ]¸!ÏÞÜΠåL¼ÉÄÓÂyŸF³yjo²Ä<Ìy¬Uª²8vãáh"€¼A¢ð9L‘Á^ð,-ŽÚà_øÊDͶ1úƒÈk¤‹øŒGGN ›ÉÚa‰[r”Ìû[£¿flÖžŠM½Ý ÒÂ'ZSWW É|ÅÖâ~½ýÁPØ»0Zy—XwÏý­%¨­“Ù“³ú aÓmX¸mÌÕ‘5±—P{o yhüë}®n¯BËÌ2²:Ï>ˉS»·}7•Ž ñsg$8˜ÂätdôÂŒfNò¡ø›:t¶/°5ÜߌÀ`¿ôPë á,K¨­0Ø_åj§qÉ>y¸ºâ7¹['MK³¡µYÇŸicVB ¥GÐ%ræÎ•ËÖñÜ“ ɬ˜T M}“8“=¸ëÑ/Ï{2A%5£­<áo98‰€šÕÎ5ômmIÕÀP¸Áˆb×b\ÞáÓ®(<,Ì ý‘Ž…'>V¤32N‘- ßËv8ww‹µ ‚üÉÜÎÊ´%LA§*‹KäyhøªF¢WÐL9]¶¬A7|,ŽOeF) µû 9¶²ˆÿ¦|[g¿/qI·–Ô'mT{¦G{Ñ}Øm°&ª>´î§¿…˜NüÌX&ZÓ^û/ 7þ·`%ïïÎø®¾)ÛyKý—ñèÜå)¢¦5Ûýh½ãûר¡ù–7›Ö9¬}­êTŒQÓUD‡=ôÊ8;SO&±n/¡Šƒœ£l^ÝcÆšNs¯‰I†ûea¨õ¡ZÙYH›,ë[½U U?ìȵŸž„-ù/6ý¸k¿*²S»ð–çÒ‡Xã$d}¤±BŠ8…°T9…W埕"xcÖ⢤†i-B4ë¾òz×'ÜÅØ·ü¡¥y#¾à\Aô½€ýç7»•8éïÅ[y*¬ç²\N»ÏÑlLÆàRé³slÎ:§ˆ®Z})_÷²Y¾ë8MN §,D5f š_§G´em½Ò,@ùÁ™ D”‚‚3ÃyüQHr/˨cʼԦ~ ”D™bC?T ‹5:ݣ̚¤ö–äòWff±ýþîK‹×\xnÉÙC~b!ô–е>ˆJ>6¢Ê6i†«¶:)qTwׯœä$>0ݲ–/„8•ï‡ÍŒÓWP/¡§,˜BŸœ}Õ[l£—EüAÃlæzwÀÒÇÆXœ›ÓÊÚ%T±ý¥–ÓcÅÐãxŠÿˆ:¼…a3ýâ·¤¸[€eû`ùÝ1{˜„±/¿­e'ËvÇô¼1Æaœ+3Bôóýè!«ŸQŽ´nhVD{k=OÌè.¢é|^ÙêqdâÞñeñS©©Ù)y—]ÞŸÅ%‘"!¥gYì\ý’kūʾ 0“’Kìírd o»eb¼{ß›ðN¢ÊOd®4݆®Ø“z®]œ ²ôF™W‚®è9%‘Þg¸•©1èÿt?Á˾–U¨d#<;H›«¾0ì±6\iŒEúÉ€UO .GÉŽ·¶v§ç¸2^÷NY9³\´HJ¯†ý…›ôZøl‹Vð§È ÙÁêOêc¡„zž* Ê}:ÈP°W‘’å8ô £ªy!ÉsXZ~PÈA"tVÙ¥(¾ãâ$™Î—ß–´6Ë ~  Né‚5R%WÍPBÛ¤?ÀËR"ËnÏ R ä f‰o*)ÐñÈzF¨°J²(# q|ÉÙ¤¿˜ÓÃÒŒ¦ô[9¼ñ•Àb°7Oëûp§…—sõd`X^ê:º¤P­f7VbPUu½!Ï]½«!c6mäJ¼Š0úݱßXu: ¬J¬Ò(`ˆGÞX××b Ïõ[¢ÁÛaaLå^¯Á¦¹t/‚ªj¬t…­T8Ðz·9µc,á*æ®/×mív~Ç?Íïva @YJh¶DÅU¡Åܶ[ž«Ö5UYÊxªøøAŽÜ€âß3ˆê“ìÑS‹1Yîü.7©ôè.Ûâϳlnúì„a{±¹KíÏýt×_KL¶­Ù)FŒÖìéR¤nЉµ‡\?¶`lï´û%¯>ÀØ;¶ü¬›—O‚è¼î1{:š5a„„`€ùÐôw¤ mµw"w1ìîGšà˜Ïë½AÈ~²`§T)¿<…q'åw ¨_›F¼qP¼Ð®²ÐÀÐJõ¦—K¨ž–™»\räÁ5Ÿ…-ãˆÕ¡~Z±óPdjåZ.¹þñÂ.ý”â"Z©ôØ‘€ª[>2Ü–Q$î®xõÈûÙW Î@ÍU œåd@›::^:NúX]…èèa°Oìõê[eHS=fr CÍà$on¿ðFHÙkî×^çW#p¤€ùS öëÑ`ì&'r¿·¢S³«Wô»äï6»Å×§E.˜d4|{1¹ßcòëk†©£lÀµmU@žLgŽÊ8(ÖX¨x…)]zS_E(KSp†¦å~[FfãDt—D¦šê}ÝØ@,õGìíŽ ©òÞF)öê'yUk¿â{ˆî µhû ­u>l ÝRöðŒãHÆ1“Á߆`´ºƒgÍc‡©›‰4ZC¡/Es«½HËÔ’ éØéöÂ/¶7ZìÉïN(½ Qƒàò›˜KôÈ;Xï” lð{„HÄ~æ!”ä­¾yÌÓx#ÕL º"[ åÁ6â¶Ûi”Ð3É'œ—Q¦çСW¥9c#Ίžr×3 ”oz¡‚„¯úXs6,^¡$L:`ï§JbŠE%¼K}Õ,¡HPîìÿy¯[Ê"çwÒÆ…p)hNÍE1ŠÉ(bˆbx›’HŒÝÎÖtá„Ò"Ï÷#R“ Ü£ƒyƒŒƒ ³ÅûÉ_ƒoƒÙrÏb›“ãà…¬“­^ÛØ8(“Û£sÏSuþ|jãY»â¿ô&ho)¥ÚQcbH쪉a^§†7yŠ $ý=, =ÆûÍOI­c¨é² K¼ë5ùù0¹]’.‰dP03;ÑÿvÇH$gb|ðyËkuErâëúÚ¯/¼íRp¶[ÐÆ,a5nDšãйÌÄ‚<›˜[¨m){(XN¤„}›X‚ämSwÉfA*]@ŒàX°7`xÜ:õQìÒ’þ1øcPÿ©b‡Ë‡saœQ läX ·Fã5‡4 ‡î|D$éÓch´XœØå6}ÔþˆÌ*Ç*&®Á>íi‘PöVÝLõZàùuÞ•Œª ¯Œ¦;)!]­jåv‘iifôU*Ñä#\Ïö¯Š,|†¨IˆTòB;û®òk,ßJ½#7ºeO½„1c]‡ÌmPuKHSÛMÞàz¥“T¢êªèËÄ Y‘wÒ~Û_—ë ýµE$ $ç€èçÉoÚÝ\IF ¸ÿáMsHþ@‰„öXþèd☕) ®àaÜü-£ä)€]ÒgÌw±·õ+pÌI0kR±£käèAÙ5ȳ7a¨!ÜXž.Àö‰î¢˜Ýyƒ_†Põê±*Q* œ«Tk«˶}rÂó¹ŽÞùûýãǯNoÓÞJϧINý˜ù%2n É\ ƒ3Êø+[ Ø_<‡ œ×Þt0ÃðˆšJ®ÉÚX{ÂbŸƒ9{¿Ì9Ø„(È5¿FN\¥¿äJTYUÖÃ7|¸êT´ìJíÀ­ÞXÞ§m„ÑâÎM:–ÉÏ©§FR—ß§¥üîÙ„)—¹ÔR¿Éäj<ífîy6!•‘cÆD—oD'ù‘iT2ú¹ ÿWg›©qËäLŽCcG <Ÿ™µOô¯Ôxv­Ù ~•½KÝ8¡°B?}ö9)ÇÍ€§›UÌcÆ«íöÈQ+uü5ç}³]ߤ—¼ÈùsoJ6ëäɤ=¡‡š.}Eé6NœÌ FÏ8=(wz‡±Onˆ¦xy£Dhœ2Só—÷A 3Ýw*Ùe;”9¸xž8m'FME3ÆVJF}üÁá˜òêzûî‹Ç<ðv¤gªˆƒU[#•ËÉfèŠJOsEÀ O·ý)ÄÓ ¹zÒ>ËúªÝe²¥..÷ÓemZ‡jl´Ñuµh£í¯åã iZ²}Úñº=VÛùÖÝýÕöE'…BRµ BðrÄtÛG6lœ³CÆ9ž¼pÄTš´QçÚ|2PõY#ÔóÏqr¡ñØ”Hb ° ë'›Ž/¶Ë@!2©1=]˜m^ÚTAÇ“Rr°CBû¡ãœ&Š}ûÃAö‘!†ñW85«UØ_y±Éa\iHäùF¡ Óܶ-¹¤¿|H`6Ÿ[C¦ÿ’ñ°+Gh4‹ÙCWc¦hKÉ…9ôBÉKðÌŒÝ Éö¥Äùm¨=°>À/©¼å| É7òSJ!ùŒ—äj7n™‰™8g®É|×ÀKyS:ù¡Q¯Ø™o‚ê×oßÇvÉnø Š~œá¸<‘>¬I*­u…*‰'¡G­¾‹ƒºâ V~ÈGð8S蔃œ€róÀ 3Æt·oyµ Sg3j,‚Wf¢çŸý+0Hí༵¤adu~„ÑuÎÜ §ýRV%‚Q²²à»ÓPßK,ŒCÜ<1sW KPȰ½Uõ¤ù¤ ?FH>(²¼—«‹P/ø))ÕçíìUî¢1I³±qyýA,ÉPzOÀÐÍá;ÛBâœ΃IgyjOÒK ;FÄq{;³_ÌT™¶Å˜_ÉâͱbE3ž‹à5cvÒÆ&Ò/c…W¼ªFî¸_7KÊ«J%±·¶.´@z3ØÓUrq?BÐX²wPÛým¹Üúé¦ï!}0xWz¤Â„õ±,<ïé"f÷û(¢¥j†’½ ]祚§j˜6–S1aŠ™9k–SümöõB³XŸÖ)‰9…ZxÉs£ôþ׎qàBmn|E©‡Í瑲T•å=¢k…3ìÅX#tË¡Ð2 ×gý%Ÿð™6>±éwÙôñC2nø~¾¼np6½Þ·»¤”†U€Êÿ¶-8„noY~™N 7s’1SOûµ9OíçÁ¤Cþö·2 ©É$Qîy‡^}œõh¿%ÈyB¯d^›ùÖ©*Ì$õzû|jܔޠõüd·×gq°{6µµ‚ÅFIî[“È0M[8 S—36¼QÛ4GvA‡a¬ÏY”Û´ªÁ@/Ο·{n‰Î„yèáD@2†3Ü说$‹æ`pÜ N¨8 ÁÜßœ-Œ÷Çveü\ጵ½š{0>‰êLZD,/á§IîÀžê7;xqY½„ã=$¶´Øn5`Uð¥†Ód¶J¾Qû¼ag•ét¡* ö]þàÅÌQv Ýhû)^Å^ HòUcÏËw®Zšã<"I‚ò‹IÄ¡ìõ£7KŽçgajW\™c'ÍÍL Vç(e4VÕL{öx#/BŸ“Ǿ#–§nN#aï`ÿœtÜ"9ÍYEŽƒ'FJ¢‰ÙËˆÆ®ÆøRÂvpÌK.³(ip²Iºä·QywoÉãâ,ìaAjã„Õë¿S2Þ8·dቹD†;b¬Á‡V @7„XMsÎa.p²-A*‚cLÚ|å߯äõ¾‚Ä!¶æ%!òi†™eõ|~n¶øÑÂ#unòÙH¶¹D»›1q ”4’2Ÿ}©ŽWJ7#¨8¢‰H«¶DÍͺ\¡-›òˆ`•¿Y¹X“yUYÜ2ÙÛ]tÀ}v›ríH=~kHwñ¸<Èüx [ºd‹5(ý9 ,3ºKk¬P§¬1t»À$Dè¥ÙÂý™þÍ'R~OTô:?¼:é†išÄ!Ï1s\E´z‚¿wÚ}áIgöiV˜¾˜™¬–].i]Uš^àk.IúŒ9Ô„4 M†ûœ"]:2˜´0ñÃ,f£Ù˜æ›*8mi檄†­Iˆ¼÷„²–sº‘dK@•KƱ ¾™¼»6¨´†±‹_šÓ8mš都q&Ù+0û¼Øt2F—ƒ’[™¶cf5¤ !Î…Þ"™–³h`¦Àh`]‚|0¾}ÄÂbYúè4KŨÓ/´ãÅ+Z¼¦kèÀ±3§yƒ¤ÑJñ]42 Lë6üói¸–A錾HÍ&¡yɬýå:1ïÃÕÄO¼.šþ.9ù»ÊŸ¿2º’ŠåeqR =@²™Òû¶SjA V<×93‚+Ö„ž¹h¯xåN{AÔ‹ ÊÇ2ä}p•Çyô¼ú—~˜]‹yU³ÁÈhý í&ýSËüê‚×$öšRJ.Wdù0rZq—(¸ˆa’ ÈÖ™ò_e¾[‰†ÅnX¼Z1 6wuãÀè«_¿ÊHŒ7-ìèúqµm‡ úJ3Y÷{£€“£TEuf‹ §bÌï~²S凖·œ¦×ÕÊÇ59”Û2<Æ–å¬Å¦,p M<¬¢¢q¼Š(Ã.$|¾Xƒ ‚Üü]³¡† 3Ÿ=1åG¾E4ßRxËíÛ:gû~*b[ÉQ×ݤeÈ×6:.%sº­ˆc>fhöšÿ9Óc<õ\ã¹[ÁÇ—érz·Úº5ê1Ê÷?v™28Y°Æ=ê½þ©ÉŸ$Ë(À©9}8Ìýh²|>Oý «‘ò©w~zV `m‡ ò+ê/‘R¡HB‹ ¶èÐ@f„â×c?ئ†#¿9ÃXìö€ñùîvè=• :öñä;zoÎð€³XKô=™4Ø­Ò¢Õ±žÌƒm!ÂiÚ?vaªqã©$?ÂãÚ¦¡qìa|Íç¶Øaß0B{Q¸«'"¤t•ëEDߣC«·$I>Ópip—72uÉl+|À§ › ‘‚© D™jþ.©`|ÖI‘X¦ÔíÖÚH!ö)#ýí¤0Ö‚Ÿ y$5÷Ѓ'@ÇAvü(05¥Û˜w míRí®t½ôl5£Cà„Úî1åºË;ef\ÄRs¤‰ ÂuŠæ™4—­U)Ãf…éØvAIæ@›é”ñºÏID½aC)§1úyqGŽ3‘ºªÁìÖ¯Å?dáwüX|3 CX÷÷7S@Šxæ Í6r-¶üðm'~Í%®Mf$B9qe1Tk›F?ŸŽà|·ê<<çÄ6nM/ݱ}ˆ'G/UÞ³[<ñG Æ>Ä(×ԚȎß²éIƒ†ã ,k‚w/Šÿ¾î„‚ðË”q1™iÒùëtzÿÏûZ×Þ%|D¿Ó°“¾‘ºÅ®Ïó;Q}•‘åà£ßŠ*êX·µ[˜g,ˆÇ¶èÑ]>0#˜sY< ì—wï'9²0Øp<—¡?iQ3÷.¿Ò§ºÚgÛ`°ô3fžaâ ¸Ýæ³§9(ÇY5‹Ù‘i(›òÂüÆ¢œÃVb±»‡hÌj 2ïäžYÏÅ ki?É6Û„ž³Ä OÞâÝ‹¨ÓØ*£åç_ÖŠ.A!™WÞÆs lÉgÆóÇ ¡¿zšeµ| Mý´ 4±Ÿ†ßÚ‚X>æ_%ac³ÎjÓÄ µ¨èÉî«ÑÜ)¤Æ(Hªs{VpÂå_"…“ý]>Íb°¡8è_WgG’¾Ë9I?0ÄË/Ô&®û=gt£òõÎ ãѤÍTÉÜqž·P›¬r·dt'¾»\:Þ_AŽžH͆ —ì Ëg1°X›g¯Ý"ë"Hh…­+v×<äsÎ22aþtÆýFLKa6©´“¿ª„YFìÇ›–:¯pwz> 3µé)Ó_(í€È_)a«ñc°`òù?Ä•!ã+ôþTñ ¾×okNÈÍO†2DTˆ±Þñ"?í³Éú³\q%¨ÕJ£¨?ÏcŽWúç?6Døë<Î6!µ‰ ±*¢K³ŽkÓIÎØ¢…I…áR3˜ÙH°S{õ±”cÞþ¶>³Ý0ý%¹Y= þö7ŽBŠÞy‚Få‡` /¨H˜‰]•Ax„¾/‡,¤n|-+ê¥Ñª`ƒ‹ŽÁv'~õj]2zNÙ9= íº²²G>7ȆXlfz±™ºßZàìS¿².u– >7±‘$‚“­& |:d_ ¶x—Z·Ïš <Q L¼Þj×û¤Œà­"ÌíÒº‰r‘ÔÑ…{ÐgL¦Ö…ž?Ä[£¬Çê,Fõ^ÐLÁvì,FfBX¶Q,±Ÿ$î'ýsQ/¥qlB…1ðLD Ų\eÔ?2ÉÜ{W: œzêë‹CX=ÄÖéÚ‘q.}æEþÒ¦éªÌ­8åÝßf|ZS›Ð²eÃoôU ¨sßl,Øó"}nÈ, »Ô@4Tòtr͸â`5{^\ìâ×l&<*!BÅdê¥$ ”½Z †óžð´%Hrt7ϹK]ÃÛÓQ¾èéÌ Þ½Ð{3Ìc#h}½vµ/Äkƒu c>ÀCiOe^¼òØO m­vÇcEÆÀ^&’Å,]Ó-÷Sy.«ÐhñêèÚÝžpêHÉœhey©xöö›ô÷Ýñ$Ïóc ‚è!`XÇW7Ξ]”¦ü®¬ŠÄ^ÐÇ({ù$” üùõ®¨ ÛÎ"`-›ü¢í88Ó5øc:î ^ºïg¾É7»8‘ LN¼Ç(\Ñ}ÞæQ}碵´ººî,]£ŸG3§N‚ξ–¢zs–=IÓXCŠ# !yÿWRF2qùì_B])†<ÛdĘ1ge;È߉›%Hút±…ÎãwêdÇö~_™žWçnÎ%š(‰¹l!ý~ä>´^¼"¸š4a38M¦*\ѧ7ÈŸÿd$J2èx§@ë~º€†“g«‡QåIU%²²épÕ8á¸S#]M§¨0OI³`Ð5áŠHÙ ÏRŠ›³X©¢Zg'-¬ŠßÀx7%9âœ#¥&¬ï\'õڥ˂֯ðÝîn\þF‚›Žƒ¯Ù¿)íÊŠÆvv›ãv¢í¸ÚÝõ~G$¿ç!±c³ÇqM!{¬ýûÆÄ$¡¤'4¢'ô‚Ý 3]μY[ö,8ä`4¯„h¦{Úàñ²YÔžU&¹T¹)Šìƒ.t¹i v[ˆç£α}vöËL5Ž|Aì¥ °HŒ¬mðæà¤/?NNÕÄ ì¶wGsàĦß? ÖÓâo¢Èÿ»^ðg×YÁ^üø°8ÑFó°)Ð@=rFÃB¨bàzCêGd]¥YDs²ôÁ.êÀYÑ•«ü¢‹ƒ‹þJw1Rƒ¯eÂîo—QòÛXÕ×?ûá'½uª§Øc0ÌÑR*Ä §dÍ:c(€X‰h%ƒ‹ ‘Iõc+ ]Qÿ‚rN’ô8©•Ok©-F=|SÝ©>ô¬Ê}©˜Õ0C{¦%˜Ì÷ÏÆêŽ¢© äLO܆µkÒbù}Ì‚ïÑ;¤·š.ûÎTºtcV1ˆ;ã°*Kn¾Ý˹‡C£ºtX94éßL5EîÅ~ T‘—Ù†•#9šæ(E}”-Ñ„› .]›ùâÐÚªZÞ`°Ž®ä1þƒ„ÔAV­é汚ÜeUq;¹œ”»¢Œ]Ñ¿,Knv¨³Bóô :œbƒ–D{úk³ÎÍð•ì)¸9¥N8ÏŒ©; ^é)6 "¢¨‚€éœ‰Øîzª«XA§åÄ ™Xá"‚6¸Åä¼ !Ä’óO@ËJ~GŽ+àü­Á$Ì%œ/œEà᪺fPo¿¯Ó¢öÜØÛ…`ü$•|îçc>ä ,OÐ׃Î?¹»ô{1éÂ>E¬}ˆmã^pÎ2»¹Gfa…RâO×Èvð®"LñV*¸è°|Šý±Ú>6U‹–Á‰^A"Ž50{’Æë[2£'þ‘tRœl¬c í3°g~PÓÈ=ßßqF7õWQ2¢ Ÿ¡W÷ö<™†Ã¸‡,B‡` Põ½w›üÀÕNï±ÍÛ5¡ù@9äêc8ݧ,´ƒÈÜgüæÝ­p ×GKñ ù¼pòcs&‰¿@F¬ÙhRÏÂ+çÂ$…’5ƒâuž=oíê×~U[(Ï<>)Éü¯ˆ´­üž˜jÛ–CrBºà ñ´~)»¯ìA`À²; GÞï Þ æS–dšp½0˜¯æíaš?JÈ¢kz=ëåîÜ&°ìŒ»Y|z™¥_72‘TH'=áƒÒ÷qRj® "B&6Â)†ù›*RÁ_ÕôƒÀžÅÖÏD#{ÐÀYÆ´Š.ÔéÙ¬;çÖªÑYåoÅøv!É ‹´·šYP*Ö6Qgj(V‘n¥¤ñ‰ò=ô¢Ó]c%­% oã¼Gü#3¥ë¼Ny¬)ˆ’(È6q‡%$Òå¿·Š= ÷ÐIkÅýÉ[oì2ZÍ ·¨¥\‰²Dëä¨elÆUÿuR·ÇåèQ¾hý ªGÈ!äó$®‚ö’‡"œé— Ÿ‡âhz9gZ‡²Oq8šÿpVÔb¨¨Ÿ¤Kyc 6`݇ÀGÅ‹RÐZ}›Ü`/ò¹8Eá\äòßD6ß1é4¶ tuÐy®àxEZ[ã׎£#Xš­á®dsiU‡Â;CÞ­7>°×H-L½…F‚Æ­‡ø` hÀ·4]g%ÑMŽÎò+¯%^‘…2»+©›]ï”9%øBÆ£ðÁÛkÁ¬Z)ˆ%…f.‡~d•OH-0.%¡&¨ #¬—ˆ\`BxHä[lÐC9á¡•%¯ËcÃdq úþ'Rå.¦ÁÐGÃò›ØƒÑ)&\q™/»>zºx1Úßç“÷iQP°R†W}#ÖÛmãôÎÏ@Š«¡ T$¦M¦÷XMP¡{R<›^}gCúˆÅw³àëêBüõ#xM*Ør—õö¾©Œ´³áB÷J1Yz8†ß!=‹rž„hžNÛ^)}E.^­Ú?‡·×¿ÀÆŽÇ#:ã¥Tù¦ Ù,]#¢uϯÍ2H!§àнŇkõ×Òâø¾1r¨ÓT×òf‘/v™~¸Øp<«èçKû…L%²½1 Ž&Ÿö„Á ¤²»«Qwe—2˜u­úBƒ›LRqò6èXÕåå&O4¿2|÷¯ìò-ÜÙèj‘[ú ŸZk²ò«´£ïQ΂Sɇí€Y¡ÞðbÁ|*ã&fŒ׆͋¬a™\ú’¬ê‚àp°‚…üGÌv¿ÅJ‘’c¥¢Bð:•2GD çŒ)ÉøöP|Å&G ®z»‰Ê­¿*×2}ó¶1ÏPÈT¸¤¬NÈíмRgk_*,”»!ï²µöj¦4’ËqEùI?¬–ë|.Ù¢T\t®A˜¤¹ÍGtt@p¢o•wiýE<\`‹¶RtÈw®¨‚¶ŽÁ]ÁŒõSƒc,u£RY G‹i¿0ÚEï‘í—™óý+Œàc VžlKæ¥Ã°åd½ª*Ú1»Uœ©µþ:Ê7VGyIw‚ZV¶Ó(øÔnM,‰x»KA&J?ãzŽù<\tø`³º#iÖß7@MˆÃM'r PjWÙÇoÐ`+U›{’Q]êâ¶&‡„“`ˆcž”¤JÚ p´»æ¼«” Ò››rJÕ@üýЇ•áùÄy)xn¥gõ—øë<šÊÊSâí!Ë~VmJäŠp` ¯Û”#”`-2iÌ飿hMé­¦]„»äg*ÁΕWx\B/gM…^6ý«4On'~×[ÒW‚êÜÜEH‘ú~U9jóOh†®$Ô %é8ûæú·›3g-}~x´ìV*ò7â‘T\åp^Þ†@ºµG*³ð}Y#÷Ê?´¥Vj%é%ôzA úJÝ|VfÖÞ_Ùæ?—tƒ”·h¶èËÔLx´zø‰Ù9^ \ï…Còòz¹—aËÃÒ‰Bõ%A¿MðCaN RyŸÄÓٲs™Nµ‡»©ô¿MIûÇ.Ò*ès„«_=çƒPì¶ÎÕÀ!L7_vãæá7ÉÝÂTÊŠ{Öýcô³D%ˆj4¦þïúÿinçCÛGÜ ·âŸ(¹)(±ð?ŒeLûæuçè½£¯îôg©–LûQB³ËáýD!ºH·^›MË ƒ«@˜+QUm‹_Ùu;»‡Ç_7B†Ô4Ñ¥*5 …þ>¡0£KÚFCócÛ5p¶žš_5¹%ýÇéJ~Cq#ÖŒŸìG–†ä8ÐKÛÀl`Ôºê³Õ§qÏÙ'Ó)5§¹‰ÁC +È·vˆÂgÞº½p'M‰EÍX¡GØ0£øJ3ƒ× ÆêOªûŠWP~{9Jæazˆ¨má’ܨh•´)®Û‰Ó^ÕŒ‰Š¶z5B± ÂÓgše·9¶£OƒÒqñáólĵHum9iG; U_òñfq€XLR~¨ër¼5èˆó=e,ÞÞ ä«NhÓ##ŽÃ¸ÜÀ±X'Á)=¥ÏÁËD\‚ÕEÙõ¤’Ÿ`ŠàPø ^ñãóXrzíÁ´éPHèÄO¾y˃³†änäõª—£,rEq/l”åàCu¼ªV3É—]—K×d2˜l±A*»H1ÀBÖØ#\Õ \×qe·Ž1Ô“Ö¡™|¢MÁ7Ä0]¡<ÔRJðM>½øy9—mž&OÂÞ‚‚ð1aš{ÕŸhßeGð;\_×:yÌàài†÷ˆtø:„ ÁÜIëT˜hOí&Íów‘>ºÁþ`”µé¨ºXCˆÓà‰@΄”iêÓ¡‹ •2pƒ+Þ3kð™1¼ß£Tjí.²^뤉4í[µÖ'Ù!:’½{¦¬Ù»âvG¨·±^F—[zÛbQÈðì%÷8ð69S¼|L¸µk&9‰Úî¤QùåÒ‰#Y̆ÓA3¬L¬;ÏfS™lè ƒ•u$í6kªÆò*¢æ²ééTN­6Xb¯±$:u^WÆ«ÌÛâð¦ðÌ÷¬Ð½4QZÔð}MÈå¬&­›ðز° @Ñú€½—ÜŒéÏêŠHƒæNŽÝ¾öibxe+^j ~EEJÝÉqš;æY$ã‹pZ=ö¹oÂÕMua¤é:—ò£– ZrŠF?0‰¹Y•ÝâsäM«Ô!ëÁØ[»ªý Î.µ~ZJ«üBüIkPv] =ü8ég^) ÿ'o´mN¶Ú¶S]?%#鉋pýaï WCjY_­Ó¶3y¬_OZæŸ'ÐM¾FäÃ"¦<Óþ ³ø‚»í£À=ÃqÉÔŠ¶ïà÷YªäJ¯7;BZ$L{“èÒÆLjl9³„˜v¼Úºw$÷Ib3ÅÊúË TLíXíQ©ìG>žŽA5l„£´}ª‚0ßBä‘•h' i6%…_ ê.õÑŠ›e“”¿¦î鿘\#p€à`Ü2ʾ’ÝÓÓÃ×Û=‚Ï£Óc¦µÕÿæ ƒçÈ&ÿ&ª1ñ’Y5ç® Ü0&ój®^Ë]ñÕ;ü—î:76Ž_Ц‰¯Õ¾¿Ï¼3' ñDS< #)nQ Ýb«™énÙìÆŒ‹Éiê µ£+MÌL¸i_óXØÔL®â«§ÒÙÜäe>ì&§~cØ|¥0v—.t¿èmN±Š!¼“0x™^_K>!2WLg^¡ï™¤©3œr-.EÑC;)Uê¾"å–šÖç3a%˜ˆp×ô|±ª&±²–z€–·ÊÐoÆžiÌOA ¥úS+:n{alÐ&uÊrŸ¬Ï ªoZ-ÜŽl·Œ7¾ À´ÓÃz¹LŸŽËÐίágyg`Ë ßÜjªhôš-I0’B>ˆídçš©šÀ 8¹x[ži1G„üï‚Ӕ͎ðö.Hâxÿ—QKWzÄÍ[‘_üÚ@T稻!49Ý×E*ÈPŒj5‹{5› œ–uMȨô®ìPÝÂÓ “8PSØ.oÃd^§¿Ö s×Ú‰n_^¤}©[z¾€­Ê¦gŽ«C{ªÿÀt¹"Ñ€ÓƒÚÚW…,uôôÝÈ ‹w¯Œ³êG­Ê«:tìÚ-ºfqQZ¬óð6ãe»u/È —^d‡f¤„Ç!R^‚3m¯Úè=„Ä@ƒHØ\ ý¾ê_£àIæÂâநÄ&xXŸ¡«Ò8À×£KæûtBë¢höhìµäöìϲ²³– v–›Ø¸îžzRÖ(Y0%tm ££lèê'ç#WÏsqÀ‡ÌU~åÑMO4¼Soï2¨¤MÝÒLex¿²æ+æ½]ÒßÌe½Š´qØæ„ø‡£åîêYÏ`EùÔ\MÜDÝּɻG2ÊŠˆw1ÝÏàv$œ’ÈQ!Ø¿÷`ùß)óžºNç™ô ¥;ÇpbßÑFÖ‘EAÝi´Yèv*o„™È©J Cj¼9cʦ&{O,èXuyÛô-j“i>]õ$)R‰a""SÊÕ3®F/OØÝnÎyfùТ!ócÞ)Q²UÄa·Ð¥{ƒñ“Á°*&Úðpp.‹ÅHl~DŸLÂ? óœ|n@\ã'Š &è÷oEñ¶´Î¶ÍÆMAzdèk@Âm"»ÆMjÓ<)xñÇDüxÉ•àpË* †Áåϸ•ÞÈPÉQÑí„m¥$ÒSÐ7m˃0 1Arƒ‡JÅ]Š„˜Yµ›ÊÒŸaÑoF4ãÂØÉØ)l… c‹÷¾HW‡[“Ò4¼ >”X½rbæ­ßšCQy"¾v†”³TÄ,À!óÀ¹„s¤GÑ Â¢›îC¯àL²´º,nQHXÆ!ÌJ­ƒ@Õp2‹Tü)§~ºKGÏÍ1Véëaß5ŠänPÂûüÕ(u^å+CèÐÊ4¦…Ðëƒ]jÔG¨àV|Ôh-m÷ÊŒ5,† Œ>áj¯ßÚh?%;΂䶗†q~Àä|4_zE½4n³×Þ´]P…x(Â}Ëâ°úHUº_å¨7PzÚʘq´•ÁwC¨‚Q¾ÄÛÞÞîc‰^ÎÄ)a²ÒÑÂd’QóÀOëHÈéVÇgm@*ÈÏÁâÃòì_ŠðP¹5ˆåùüsÖ$-÷«9d®a¯`VÀ^È^d–T‹QÏ©>ãÂeõÖvý}„•T’ÉüÙMcr)3#µ¼dMQKWVéq†”Ea\ˆ£*ºÞhaýǧµqªØY†sØJ<Ú”BJijtiw¡ãz¯Úƒƒb9fÉ*½*:Šk—üšË’ª!öy›™k׿>Ía½®è%eQ„‡q]id×v¡ÐRî‹L@Dõ³+Å ½j A 0Ð |+$[ø`†Öqôj9jÇΥć«eà9má@F>á™nEcìÅGdWõ€Z âm./Þššwª`•k'W¨ºÞ M OÛæB¢ÔÓ: î'äë¤R…î»Ó¥ô5®YS®O'œXz‹¥‰Ç—`mMHåiâðøüé «IP5Ø0ñÔ¸±ÝI§u"ŒÇÕ³‰¤K:Q4¸œäù¡vì«ÖJ”o>ÄZ…{ÅoHrµmñV‡çaü|MD²‹$©mM`C #Ô¡Ø÷ÁºßßT]â:¤Fï& à|thÃÅçrlW5uIï!¶/H¶b~,TÍz3nǬ:ÕÅYßϾûüãù/±ŒÆÑ¼Ïá LY˜¶2¤åªªã7GE Áoe˜®2aö£{®j\gÕÃÛ–A>Eæ©'U‹ê%ýïÑó¥²PU2x\Ó£¿äZB¯ÑÎm3j¿ªø5+Ïùƒ0¤Œpnª9&ÎK½+¤Îæ/ŠÔT KXCU†„ž:1«/X¯g«ÕøÀUŒÍCMλ©ÊÊtH˜ôÑ¢jjâQÅbíÛð˜Û6*Úp~ÆÞØ[žJ£3]ˆ››wŽBB˜¦§-‰bj¢q¥…ý¾”ð†>a½L~¼E¡À†¾AV¦ƒ¯öq0GßÛP¶É!ƒiÉJ ãŸU<[„»d’\ JQjxDèè'Ìè+š=ȸ-ßwÒhi\›}ŽhžÕÑg# o0BÇ»+=0£âÚܼ.JŒ1ªß.íÚÑÕ–Æ=èÛ…6©oÐØô œß¾pCqª? «w¢êÃfJVÙþFiŒtýÊçyá™Ô$&Ÿ´ü•Ù60÷8, Òù :¾juã¬`®lAöë¯ÃHöʪÂ([&§s‹¨DQ¨uâ PÓï ¤ó²²ªíV÷ ¼T—OUÞÁ,?S?( +`™´y¨S­¤ `|l>æðO@¢ó Ù¿ô< „jØ0zÕ!‹½ý^çE4˜}ò¦ ùðúa~eÖAQ;ºÛ @ã~•ÜBªÝZä8j}Ü7ãñ¦=õšó<íØu(ÿE|g—Vó¶ÚÉÐ>úUç¹W[›Þ¡¶Œ֪ȵÙ?þâvãäÑQÿ‹jf™ßrUÿG.:×9CÞ@œÛV†’›¹+Šù¬X–Nì/°Ô8 ‘D>šKs½Ì{Áݪ! dtœ¯üCæÖÄö?°ÚF³a왟õÜ"9Ïý–CEO‚<‡C;º0ù‹>4ë„4…’濨͞Ÿ¡J7<Ý¥ H~EñÊ.h?©íÚ-RË…—¨[ø½Ñº¨2`X㤟ù˜£‘ã1Ýï§Å60™E‰bV U€½f.Á[—l«§õ5r_ª—‡…Þ>BøƒI•ÓŠçŽÀ(=”0¿!'µNVâ­Â¯oûšÊnRžé~ƒ³]ëÎ¥;IØ]×ZPõÖO~’*Àœ< 4ÕGµ*´ÇH;,,8Ü6ÜWƒŒL¢•­Ú€t¼‰Ó üDÎÊ%×_Ÿv[`åÁÜϯtdÐa;¸PŠ19Å;aìE´rÒù*Fƒèð“ÚgˆÕÚyÐÍšwÎ ÉÄDæC pìk¨õˆ¬Ï'`$tðÁ óD®›oÒé”ßLÀ;:<ð/#ü+R6«]h·÷ž’YØbŽCvlÂÔѳz˜Cç´Û‡1ŠÜÖ‘MÐE‹àt‹ –a¿}çŒBÄ^]$Ýq,8Ë+ÔZD?ubµEõ€nŸž[éÍÒ¬¸§é&Qñ€Ê✤E’B ù9ê6ùeLªÁEEr¤¼ Ï`zù‹]Óg}[¤†ÿB°iÔ¤á6É.´Cœ—ºó)–,?"››@eUóéïÞsG:íº·ý‡®1Lø¡~á&ÄS4âùÀ럱bl^Ë 7AQUŽ(]wp·1uÓê’Õ­4©`l«þî…YŠW– b{Ñ ìƒã{ç¸ED7Í«ºÆÚ¯|_&ÅúyÛÂÏ÷®)1ðûä—Ï[’é¢ãW¥Á÷ó4)s¡Š‡€Å´J!E®æFéþ™†Ü¸M¤Õ2Fæpúëà‡±ª¯F‘jd Ѭ_xQ)eGS¥Â"3$Q39‰kœ -[T“ðË“³êõ°F/ƒÖfÅú¢Ÿ7—“Ç÷v+ˆ¥ú¹¼¥ô˨ÌewaÏbô¤Jé´*›Â>‹=t47(ΖÉ0 CÎçk’¼¿LOáGW~´&˜|( aklDiÑàÇfüHoÅ9´áËu´/ÈÃå79F€hrtö= ²<ÿ»H‹(UÒÀC¯,ð—\.7¦’¯ÆlÚ$¿ÙÜÈ8ÐísUe±ÚÉ­ÌrùO5‹§¦è|}°µÔª1ƒ6ó.&ÏÕ¿QŒ=’+á¿b¯ÛÆ’ü&’¨ìŒ±1'ë òaæ5£a2­›Ç‡æÀ[#Ku3œr3’k?tBúr§Ù¶ÑHl‚Ï3|œ(ç1%!‡ÄãÞ&•ޱÆÃ;€ Ô¦½®r…¿ §–eÇÕ$²Ë‹¾EŒ"«m?«`ÓèG p]D4Ãé$mD[Šn8º“&3£Ys1]ƒ;JËà)6Ê›º|îØòµ·écúNxÚ£e8/âîhUìX±ô$™Þ³¼!“'¥ Mgw»ù-úÔê‰=Èʺ3/aßjÓÛ,‚áw éáð ¥–no Ò]Ø4ùGm”x;lRÇ×!1ä ñÆî&¶ÞkíaîxÑÏI4T/ðŽËFÛdæ7î›ÅŽOûòƒÈϼŸ…ð'žÄ5;´¼@ÿÝñãáw)ÉŽâW¦ñž‘ëÐ26 àãÖ×|íoòÕ.á†0.n޶(¼»,JAëw~˸þ†¶J¶(³&ž€èª­ánd†âa›%—süÜ|Î{kaa¿^÷‰O’䕽 Šóûš3ÃÌžšÞ‘HxË“–*™˜l©n¦EŸ=e»î,`“„íÙ õ–ú²ªÂúvº<ôÆ´Éþ€Û‹)¬~eMËÙ¹.Äf:YL8ï”+º‡‰/ÿÐ=_‚Nï¦åçõÄž5E endstream endobj 200 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.13)/Keywords() /CreationDate (D:20140522101840+02'00') /ModDate (D:20140522101840+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/TeX Live for SUSE Linux) kpathsea version 6.1.0) >> endobj 152 0 obj << /Type /ObjStm /N 67 /First 589 /Length 3529 /Filter /FlateDecode >> stream xÚíZYsI~ׯ¨Çñn º¯b#|ŒÏ`›Áæ„ilÅÈ–G’Ø_¿y”Z¥–dáq#puuuV_fef‹Ö. %´×B+#œÚiá¢Ð V\ÆÀÕ[am‚«Yá½Z[ õAhkàÎÃkmO{ ³W2r…å „Ñî‚Æ\1ªì`|½ñÁ §-N‚pÁ˜$á²>Q oBèéh„÷F'|Lø(Ÿ3pŽI✔QM2"d|’QgÐ9-§$b°pDRV÷¢ Õ[’¶ÉŠÊÀ ’wJÄ(R½ðQ̆J…LY9X10Ñ(n²É¦â³ÓÀxç Û,H7IäˆX¦,rÂIV0É`.<É€¬`”@6L@ PV+½‡À(c‚.0É…‰° ;”€Äi$ö k@„áÑk‡Š €FsÀà7 Ó0ŧ@§…1“›‘:Sð(®cð ®_8 ª€¸í=~Ü“ç_o!Ÿ .›žÜßÌš›Ù"AA”=ïÉçÍt|7¹h¦\´tÜ|öÆ_Ä;¤ñÙ÷ ºÆé~Êï{Ài,8$ÿÏHÊx§)rŸ ùúÍ[ð1øIÁqs7½ßH1C_þEgMê{ü%ºC0H<~,ä!hN¦ ‡žƒ‚o f!bx‹]…ÈRx”Ž¢o€³|6_œ53ñ€;8ò¼ù2$ô]Œ±Þ¥‘ç^©•Ù÷ŒKжl·í;˜Ò°~u.o±R/îƒÖ}]Ƶ¤&úBB?–1¥ÔÏe¤Øñ¾ÊÈdª1}3+%YZÌàf|@êR™,®ðX²)Wª5Ñqͧ¼*­mìge¨¬k*ÕAY5³˜ÕTuXúªôÓ³J½‡×úÐÖE¢txd9¹³Y­(©œK(Е°­ì„Ô„ïåyY£½…; ¼ð÷ '4ò­x?o…†vgĬx£šWÞ£Õ%Ÿšâ ¿LÍÐõãé¤ÚWR=-Õ“æ<.bb©íƒ? ¹ˆ©ýûþ¸—àH¥übúà‘W•”¤1å'‹8§¤)ñzL–›x953¦6FŸvÂ,&K2Þxð‚$‰ÜYY—y ˜•¸Æ'¤ ÷³`xß¡eÖ‚ÆHÁÏš‡jÞµÊÛ13åFªÌ dK¥ wðêÒ±ùJöÔ`ñΖš)5\ÎÓè°„ÖO+žÓˆ…b—â—Š0V£ñÖY*ñ8ß4bÁòìmh<Ú‰­?‡t€UHkgËúœ7$Ÿt‘ÈÔ<_P•6¢¢¨8´³û5üž±p¬4# ,–*ñžmÛ¦bg0Ô&Šjg!L,þT€øëL&È¢§‚ÐÕL€/™ºa_æ zMîˆP±1¸ÑeÂÞ8xÊ#·˜S£Q[„ía&¦è'ºÒëFí_\]òzÆ‘WØ+´¯¥åçÎS“;RñÒâ#Äs!ÖJDWM»§Üú#c}º7>Õè)”•’±es:êÔèDjï#{”NS:Nšü¶é°-£æŠÏ>Q0_Þ_d´ï³EÓѨµÂôT/…P§Ó¥6-Ë ›£~c„3?eaKݾãwBr­¢G4ÁrN×ñÛ#õß¼NxxóÌ n<&¦©V<ѳ®Å¸ÿ¼¯~ÂPšéÅdx;Oø•“Á5<9:~öúÉoÿÞ?Þ{­< .§Â1Åý<ôÈñÈ`ÅÄß ¡V¾ïÉÝéþ:/i=¹?¸}Ò /¯à6…žD1øì‘ƇG³Áhx±{s9j°?›5×/1'õäë² Jð¸Lð—˜_ä¡<’'òT>“Ïå¹|!òƒ¼e#?ÉO㻉¼”C9’×òFŽåø¦‘·r"§r:ü"§£ÁôJÎäìjÒ4röÏXÞɯ;lÊáÐÁ×?f} šÃýƒç¯þdhÌh,B£é÷ºŸÊ¡Ù'pŽ š³ œ‹ñh|CÑ6jÿ>7]Àn†€×µ[üoÔ|šñlB[o›Épü‘m>77qý,¿Êÿ6“ñ2¼qxÞ>;9x÷Ïö7„žv%òTŒËðzÝ×.àU°¦‚ÖêÚù»üC>pOÚ—-{}=`?›I3NáKyµh³Ï?˸ämpy{t°wЏm:‘ÖÌqqéagï »Gˆâ7Á9—ƒÑíÄZ3LšÛé‚NËËÞ~Y27êmÌ}óçÛ—ož‘¹i½µfé~–µi£µ˜lÐÇSùyÙ*»U{oŽžíž€UÏ7ùЩ¹Uþ«Úðy£M»r²Çü2Èoò d‘y°Ÿ¶Ùä¥|%_Cئ3ˆçé_Z>L53JeÎibžsÖNAÍßwƒ&¢*æéèJ^}½½‚ä2”m›™þ†c6Þ\R‚º²ßJUÿÈ/˜®VVܪœžáÁ|¾!PmhÓ•ú).a£KKªo³<# 0 ¬¾U¦ÞûýüÉÛ—`øÙÙ¦hšMÇÿŒ>o¶o¿Çò´± î¶¡ü¤ê8„ßp`.ÛºUöÝýí×ߎÐÖ7›l5Y<ÊòþÌàÆ‚Ï–œÚèèO£ñxB§f|®‡7wSy}7š oGË=NÚ*ûž<}ýâÕ™»)¨!OeúŸç„ÿI“†µ›Ãúv2¼n–íÙ*ï>==|ûòì9ß\<ý¼œ÷“ÊIH÷¤Þ_©i«ãôEIŸ”­–Ý*!í½~ùw~¾±Ê€­ÿ×Þ=r¨LÕzÉT¼mM5ÆüHÁ 3o§N[“ß,u«óÊQ÷¬‹†õ‡*ÄÝ ®|O»±6¤ ) ¸û0£[\ öÓ†þ‡zåejÉsô•ý×ûáp2!rÂÅž|:(7Ú³Wó«)}¬±µøî KW|êŠGª âíöâWúŽü¨VÌwKòc%ßm/¿Û8wÅ›óõ’xµïóöâ;lWºëJϹ–®S%=m/½Ópv¥‡oØ^C¯·—¾Üu…¯ÄK•p_Éö8tÝî¤#=­D¯¥§\I÷ÛKïö ]é+A§*á¹þ€שÞ]Ùî^Ü]qa{áÝRÛ•~²K¾’þ€ÃÞ­}]é+1g—ŽV¸6àÕªxüjŠ_RÝa±\|•81È?†§âç¯b¹ð—L\8DæÅL1õþ!Ü3óƒ—ürM|Õ¦\_z°lˆ‡Uå:¿/²\¹ç¯´î“ ¬ ‹¾EOþ„¬³÷ôn6‚’>-.%VÑCB—ÐaÆ®Ý8„WQኻÐFòlnÚüvÒ|n9¤x§owš{v–|q‚ƒ¹´†ž³±i3j6k´±±eãîacj6j Û²Q›Ù”¯ø˜ «lL‹ª¹Uãj6f ›bsĦ†Ø¬Ø´ëõóÎ5¨êUÝA5«J]§åV ¾ù÷‘|R‡ ·V÷ð¯áÖkànÑ÷0©ÁÖkÀn±Öë™ÐÆ%tñµè/ã‹Gg³Ád¶#¸æ‰_ná,÷5Ü»ú^íàõõŠÆ•T¯˜L§õŠÅ•À‡^>^g¡-Ýû®füÀíà÷Í5K+¡^ °Âb¾qe‰&íÐ'Ö‹ЕÇ«keÎiÖkV¥šlàdZîAÅl«{P0ÇêÕS5ÔN…µÚØ–f½2ÝP¬Ÿ6³áøæ_è¾è–ÖpÉ.¯ Ë+è.½¼„ðk5ÁÕŠrÓ»íS® BKë ‚±kÖA׬ƒ6V¯YÄ­_³ÈÛÜÕ¾«YwËý¦€óÜ:•Á‡üAñFQqgeK+ªáÒ*àgá|µåZŠ/÷ô9ø=gj“h‹ðS𼦵ÞÀKþø²Ç•|ÑÌ‹s•Küø¼¤šËæxü±‘/¦Í¢’ŸÞ67»¤ðm©úvë¸ endstream endobj 201 0 obj << /Type /XRef /Index [0 202] /Size 202 /W [1 3 1] /Root 199 0 R /Info 200 0 R /ID [<97172F06651E62499CCD6F3BEACF960E> <97172F06651E62499CCD6F3BEACF960E>] /Length 515 /Filter /FlateDecode >> stream xÚ’]SÍQÆ×Ú’—p:ÎKŽä­BèE¤(u¨!B]¹hÜcÆ­Œc4kÜ5ãÂÀW0ã†/ +n|†ó{n~óìgÿÿk¯½×cfö/™%s{÷ÛPGjˆ!”ƒŽâ@mu`ï8j#¨·ðQ›Àfpïj Ø ð(À6p¯µì÷ñúPÐàõ¢²  <ģɔÍ,i<¸LʃKºÃ,‹ Z@››etýVPæ»vÐÍr'`™v°ì{Á>°t‚. Š×nªòÀA*S4*@¥t£·ºÏúŽ&ƒ*Á‘Á‘¡Óô’}n ôL“tË|‘§¡ ƒ!·òWy'Ái0âÖ5,ïEÕÐ0ê6° 1Pãncyy`œu›ÉÊ;΃)·ù?ò¦ÁEpÁmé—¼0 .¹=þ+ï2‡ó`Ák¤kàŠÛ³Uí^7ÀœÛJIÞupÌ»½.Ê»Izö%pÏmõ“vÙ`2Ab£–ñµY6Â=}*Evƒì‰ ä4ÈiÎ A&ƒLIŒF·÷OT ëöã•T“{aY*ç>]‘jvôV*ï¾òBªàþó¹TÑS}¿TÉSç©OÕªT«§Å5©²§—íRm€HE`ªÁ¤ch  9Fc Fãž¾åÌÓúGû¯¶cÚ endstream endobj startxref 188084 %%EOF elk-2.3.22/docs/PaxHeaders.22528/Brillouin_zones.pdf0000644002504400250440000000005012337331340020206 xustar000000000000000020 atime=1400746720 20 ctime=1400746720 elk-2.3.22/docs/Brillouin_zones.pdf0000644002504400250440000057763412337331340021000 0ustar00dewhurstdewhurst00000000000000%PDF-1.4 %ÐÔÅØ 6 0 obj << /Length 71 /Filter /FlateDecode >> stream xÚ3T0BC]=seªœËUÈe”ÐÉTàAÐ3000²„#±±©Ö÷Ì5VpÉç „C…t ”;N? ! endstream endobj 5 0 obj << /Type /Page /Contents 6 0 R /Resources 4 0 R /MediaBox [0 0 507.249 517.809] /Parent 7 0 R >> endobj 3 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/var/tmp/10089666731916source1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 8 0 R /BBox [0 0 507.25 517.81] /Resources << /XObject << /Im1 9 0 R >>/ProcSet [ /PDF /ImageB ] >> /Filter /FlateDecode /Length 10 0 R >> stream H‰*äå250×32U0BSCs= C039——Kß3×PÁ%Ÿ—+— À¢n½ endstream endobj 8 0 obj << /ModDate (D:20020211151125+01'00') /CreationDate (D:20020211150909+01'00') /Creator (Acrobat 5.0 Image Conversion Plug-in for Windows) /Producer (Acrobat 5.0 Image Conversion Plug-in for Windows) >> endobj 9 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Width 4228 /Height 4316 /BitsPerComponent 1 /Decode [ 1 0] /Filter /CCITTFaxDecode /DecodeParms << /K -1 /Columns 4228 /Rows 4316 /BlackIs1 true >> /ColorSpace /DeviceGray /Length 11 0 R >> stream ÿÿÿXRÒä0ƒ á¿÷ÿÿÿÿÿÿäGÁ}š5¯¯úð½K4›áWÓÿúþ ½¸ºû²QõLœ/´.¶ŸýÜ‚ãêÃD,þD‡$ûl*®r@Þé†A×é~UýÕÓÛKûš®ÚEœ}uÚv—þ¾ô½8LÄ¿Ÿ×ת^õétëé}.š_ÿôÒ5ßUÈO¦¹¬In1. ÜnÒÒýuWš]mœª`¸õøUÆä‹ÞGi{9È'/‹Wéö»7tâÈ©þÐ30žø»úÿqý;“þäˆ_¶ Œ‡úv=K8ªù  ¥ïm.´ÃKû½†—]ÿúW½†µUºý¶¾ûKªð¿ºý‚aW±¹n¤•xÚ_¯¯T½¥¯Ú¯´Wôúë«L­¸]ýuvPàˆëXˆŽÿwü•¯L‚X.-¯ÿÿýk¿_ÿ¿_ÿÿäÜ]|ÿO¿¯ûÿÿÿÿýÚûÿÿzïÿÿõýÿ÷ÿúÿ¿ëòлúõïþ¿«ßëWÿ_õß÷ÿú÷ÿÿÿþÿèÉ"Ýý_¿_÷ëþ÷ÿü¦*Ðßú÷ÿÿo¯¯ÿßÿÿÿþŸÿÿÿÿÿûÿ¯ÿ¿ýÿÿûõÿÿÿÿÿýßïÿõÿÿ^åu øý{×ÿÿÿþÿÿÿþÿ]úÿßõ÷ªÿÿùf‰+ã¿_ûÿõÿýú÷Úëóµ$mÑ ÞÎÃF#ˆŽÈàoò-Å.†ŸÉ4GÁkä0È | ùfÂ1÷Ë0±30oÈdc¾Y†t\ùÁ¨\>Y”FÌŽ ÜáÉ…²V¹gUF"àxlyϺ,ãHÃ.ƒnÈ4¹N}”>Yè£/¡ƒ0æ•ùhZËåà 1B!‡Ë@®]— €Í°`ùh!œÌ@h#¢:1—Œ-¾YU¢„yÅ0Ì@#‘6„DGo–B\ŽDvn#£æñÖE0ÈR8˲>^0Þ €kær¶•aôC <Já‡Â xLsùR)†D Ç.Ê_ì? xX(s.’ ô@’9ð¥Á-ôCQÎçovDÛÕ × ôA{ÓÂ{ ð‚ á‡éðÁôƒ·ÐMì>¡¼0oI‡†îo >‚½¾aí¥I‡l>¡º ;¤Û† ƒ{}&ðÃz²]*}'Ã}xo«`Ëagè&ðᇷÒmJxé7jÃé0ð¬?6WHòp‡Òa„Aø0PÁðn"}&úMÓ tÛA‡Ò 0Ømé0Û >a•Ä aôœ0Áô›Ø} ÆqÛ}& ¹ ¾“`ƒ¨a„ŽA0ÑߺMÈ­ÈuH7úL1 >­†PM·ÐL6Ô0a¾“an›ž“a¶©¤o¤Ã ;¤Ã ú † ke~ÛáÝœLÒ ¨¶´ƒa‡ÒoÞ“o¤Þ¨¤x°k«Ã¤ <0úLé>Ãz7·Â°øe¤ÒoOOAº-á29—ÁxH0Ü®¨ˆàx!iŽºNåqC.€½&@¹²ÙâáU äØ —pÈ/Ó ›6¤ÎÍÒl·S28dc$Í'¤Á–â3’á åsH¸dƒ'J\h6 Zêe~"8-†¯ Ù’0ŒFÙ˜-ÂÐVeÙ ¥Ã0é0ÎËš#äp[r8¤|¹›ˆùŒº#Ä|àÒ 2a&Gΰ[Òã#‘ˆˆˆˆné6 ]FòèÃ#çŽ `®G‹„/‹Ý Èi""""ˆ·p¬Hƒ}š40Íã•"îô1`«*BÍ:L‚Ø6{)|a« ¶ÜÖRêÚÐR P¹œ'H2!˜Ü›AÒd2aÈW;q6Zöt™ €Xn–Å8IÈ ÑÈæQ·°Y €ðPç6h<&@ðRœÊ6TiÒdƒptéHc”9¸³: AeÊ7Zh:HƒK•Å2i†ÁÝd6aL€Nn”ƒ …! ®´è&é$ÚPéVd<A(m' Òì °a×a¥·I#"íÒÂûI¶ê¶Ú[t«m+ .ÛA;t’Ý,7KØi6ÁÒ¯-ºK¶“·IwKl4· {¤áº®ØJÛ «m' ?ö‚¶á$¶ÒØzöÐN ÂIm­°t¿+ ÒöÒØt’ÛIÃt¶‚·ÂöÒØu^ ÃöÂM†RÝvéVÙj…$†õíŠ[I#'[i8nÇ´¬7Iv ҭµv»„†õí¥°éVÚVÄ—´‰—aº^ÚJì:Öô†é+Ã+l0é{ ½ºI+kᇯ ¥íÂ_e°4’Ü7A%¶!¶Þ«t·n½Ú ÃI,6ì7IxinĽ´žÃµNÜ7„»ivÝk´°è/n·aÒ]Â^¥ö—aº¥M„¶Û »m¸aÐUº^ÝWm-¶‚öÒöê–ØAv ½´­ÃªÛJ¶á}´aºKÚût’Ü%m†/míÒ­´¼7IvÒݺ[¶—`ä’º véo /mÒ[ ¥áƒ¥Tè-Û,ÐEZî»ÒV›/ ÐX°ÒÜ0è*tªî’ØIÜ0áwIm‡Òl¶ ‘„^ݶ––áºTì§¥vä­‚uTàÝvìD Ÿ‡A$Ø¥Ût¶ËLÕ$ÖtªÄ$-·I]-º[ +/IÛ¥M¥l:JÚ Øt’l%aºXtœ7I+Kn–Ú ÃKm+oJØW :UiXn’¶‚vá,: ?E b´­‡ .ØHʵl=fF˜¶’n ’M‡ <7 ]¥¶Ýî\7êÛIÜ0tö‘Ø[a×Ãa!·n]áVp‚Kp‚í¿\4¼7Iw m†è%ÛKÛ¥ì:¼:]ØKmº¥º^Ý/l »aê°Ýnp‚KÒözl%¶’]¥áºU¶“ì:I턖׆ÒݺIz ¶½†–Ø0éVá/z÷uíÒKl%¶ : -´°p—V–á½{ivÜ%[„½‡¥Øh.­Òwn¾ÚW·IvÂ[a‡J¶Ò¬7IvÒö}ÒÛaÒûKÃt’¶ÒOaÐ]i;aºIm ½éi¶TØaÒ§m/aÒZm+Ã^á-¶W´« ÐTqm ¶Ãp–;i{’Mén¥I6—l:^Ú^Þ’Û m· í ¯ Ò^Ò퇪ØiS†é-¸Iì0t½´aºU¶“NÝ/m!Ã]°•°ýv“·A*‡K :^ÚM†é~XnA;i6Þí¥°ëí¥a¸KØh-‡I}+ ={i;•m„°ô—´›`ë[i6 —tÄ«m"¸%†}´¸oKÚ§l:UN^‚é´· :I4Im‡\m-ÐO†UÕ; ÒV ۥV–Øn‚Ý/aé[Am†á%m'Øt©†ì0ëM¥á‡Kl®Kmº[éxn–ù„—l8*V!!-Øt©±@¼>•†–ᇥr¾‰{aê›+𬠷aëlF» :Ka|7÷+ú8‚]·I&ÄP[†«e“T—·êð‚ÛKaŠ[l?¶—†’t¼7ZmÛt·oJW-Û xaý[KØzI6ÒÛ ×ÛA^?VØKm½/ixn—º]°þ°ÐTá½%ºöÝiÛ nÁÿ´† »i]†ým¥»~¶Ð]†/t«aôöÒÛaúÛ >¤»ix[ švëí¤Õ°ô»a!Ã×i8n’]¶ðÚNú¸AX`éVÚNßW°•·×t°Ý*Û l?í¤ÛK¶–¿h-‡ëm' >»a&Øt«m+ ëÝM®vê–é^Øa%¶—l%àíw[mÿm/aÒ_ m°ÿ°Ò¼7I-°‚ðÃþémÞ—áx7ZØavÛõº^t—m»ÛIÜ0ë[i]·¥ì%XaúÛK¶¼:[†ê½„íÿm/ Kp¤–Ú °Þ‡ÛKmºUm„½¾µivÞ½´¼0ê–ém°ÿÚ Ãt«m+pÁõÜ%íÿ†‚ì7I-Öœ7ûm/aÿmÛ•vݾ´/ ëî»aú¦[°ô¯a+°ÝxN–íô„®h› m†qt‡¤¶—·é°—a½mÕ;õl$¶õ¦ÐW·¥l$îÿt]Ö›Kw¥°Â_}' ]ô¶ëÛéZ[~”›“ Ÿ¿VÚí·^›AWõjÒþ•› 5Ún»ÕvÂ[zûI¾µºVß]´¿Ynm¤ÝÕ ›¶–ú¥« ;ÿVÒî«á ßI]¶“ßö›JÞ—ö‚碌¤ýl%~Žê^¬4»¨¤ûh&ÛÿmÖúK¬&âSÿ÷Jíõ^ØI~«¶Ú[ßõºíéW¶—ÿ·l%¶ÝWÛKïUí¥ný}´wJ½Ð_õ¥l%¶úuúmÛô»t·ëý„Û~·m~é/¶’ï¯ÛIÿÕS ¶Þ’÷i}ú½°—w¥öÂ[½kÝÝÿØiný}ºû¤—áßÿa®í×Ô‰&ÒÛú^›h*ßþ¶_uKÕ´žý}«„·}u«i'wUÔÐ^ÿÓ5‚ö–÷ë@Ë™€Ï¯oT°B)0—úõ,†¨­»ëÂ&ë@Ú‚÷­r †à§zTÝëÁÌ9r´(Üh&ó·Þ©b""MÀ³x'ÙS ÂûË*Â.ƒJJñ#\Ó¯,¥‘ ¤Á¾’Ë( ‡Ow¢ÊDG €«»!œwÒÚ,´ÃLÍÃ).Ãf uQ,ŠHÀeÌ[ºÚ!ƒ·ª,Ú²àxjCû¸©f%£`x6Ckw†ß嘎2:H6#îÓmÒRÌÍàÓkÞßò̘ÃO]÷n•fàÐG[ïþ¥d !µûßYdEz€ðÕ#÷ï½Õ ˆuà§)È ©oêýe“@Îd ŒàÜŽŒckW»úLÈl£GÝþé* È<ŽEÀðnG´×¿oé¬"èà b=µÿ¤gelކ™&¢Ý­×Lìh’:.‹¢èoúú„A<¡ÙÞ x5˜B":w[~ „6Ròàxi ïý- Ù Ã0ŽWßÿ§)ŒŽƒI §Ú½$’aðk/ØÞúWú‰ÀÁ°2-©6þúz¤“ xeN l7nòÿ­ëä YFÊIÑâØe7ôžªY Qv¬‚ÔÊ63M¤í²›§ÚWª&ê Ñ È9Íëõ·mêÿ&êÄ#‚³ Ó2Ò[JÛ~ ‚^’&èÇ  Ü±{·ñÝ*&ï‘Àðy7$º[ð¿DØ’#á—"¬«ì9”w þM…ÀðV­éÅ^ÕI±tGEò8 eÅ#…öÒîä<[ƒ}I°`x+™ Ýwº¼!}eº^GÁTCªZWßuËrÀ<È莯Ûû÷­éB>"ý:WõzRßð<ãa%´ž›¯©\ÉÃ\[éûýëEu0<3Käxް«ÿ߬®R†Q„"-¥ÚO··TŠêðÌ $­×ëzR¾#y )N·o·\ÈB8 û¯Úõ™á°¸rëõz»FF3x4ºM×uHʨކQ#£u{«{júÎÌóxf˜B"=]õS°´aÀ¹to[_mÛôv%˜Ëà E?§ÿª§Ì28$÷¶•ï¶uZÊZ=‘Àð.Gˆé‰Úû~¸õ+B$9&æa7O[W}l‰æ ކƒŒRumu{õ‘‘s#à\ŠOWöÝ¿@ËáªGCM¤é_iÞ¢@ðÐ9FË;ï ·T@ðjAFã¦÷Jêï¬à¸çæàíïOÝzDn$›[_°Ïå7R~@²ÎnV½Ò÷é"Qºª ¥{Ü6üƒk#ýûáúDÙ›§Ká·T’o½¾þ]'Kí½-_ôúé6–— þªÞÝ>›t‚i7ý¶ŸÓJÕ´›í¾´ôÝi'ÒO úú¿M+Iºo»Òi7ºýõM'ÿÑ ½'ÚV—rýRo½º ïI=¼:[ ›¾™n Sk}û·P©íö“õ·¤ú½ëÕÿ!¨;¶›Iµ½«êmÅÿuÿIöêÒýÛêÃÛI¿ÿª¿úM¿·¥ooÿª!› ½µmoöú¿™Ì:ëtÓú[zêÝ7\7ÒNùÚ’M¿K{»¤•·•…V÷Ütþ‚áà†ÚV•¦›uK|+î½ ï„¶ô¯n›Ò­½"Nm-, aô¶ÕS}¾Ð»Ò mä$é·]:oÒÛÐAí½µÂ}%ïAí}ÐoÂ[zM¦ÞéXNéBÛá?­ü>©mé>Ý:Z ú_î›k{adj‹†µð–ßÞÝ:XL! ú[~öû}¦ŸI-¾½µ´(wßAmÿÝ=h á ¶ú]þ›ö­“u! ² ŒMÒ]ûÕµn´Ñ AÁagÕ·÷·ëxI¦Ú®ßÕÝ]z  ÃÃMé·ê­«¯i;n=Rßûoo¼-{v’Øwz·ZO¥°ÿI~ém«A-½é„¶öÖÞ'M+ >é%·Ú÷ßt´}ô¶éº’‹jév–Þ”-¾ $•½^Þ•°ÿ¥Úl0•=«iv íô·b¶Þºð–H%¿Imï·Il>úK}{}¥éa½é%†øI6ÚÚ^ˆ5BÁ¾úNü/nŸ{@šï~‚Xtˆ08K¶­¥t“Óê–ß!ÆÓ~ÿ„šÃ}$íܰÒÖô‡ >ô’ô’¶ûtöÛÈ=º„°Ý¥[u÷PXaéý'u¯oºí,7 -éÛªMÚº·A'n@G­mõ»{káaƒá.ô½ÖáxRBÛÞ’[}UÝ:Ûi'L>ú[t’»{tú <6½PXo¯uÿA-¶È&{zK½RÛ¦Õ¼$ªt!þ»·ýt‚Wën©mð–ÛIµ½*áÐÞ¡wo[ú]„’ÃzK†è{a«túJ¡‡ß.ïvÿ½iØuÔ%o®ÞÚ^J¡½ýwTö—¾U°ÂXo[}¿ÒKaÝÒK¿îoÒpÞý¿¸oÒ| •CéXzÛtÝj^vé%oŒkn­«n’[úI·¯wõð— 4›ÒPïÓÛJ×Ò…°Î~ &Þ©§{Óv,1 _Òo©)µ´º-Ø;ºI áé&mÿzImµ}}U7I¿ÒK 4ßJ›vÞÚO„†ÿ ¤=°Þ­-Ö·¤’¿u©ð¶›w®’Kon’H&ÛµaS­î%ÁiÎïéS·¤T²è†PåA‡8æÚ‡ºX¥NÈe÷à‚Iß¡«ì ’ØM§uI[½&ÕÒÒ]§_UNÞ“i]: ,l ÛÐ^ÛÒ}ÖúÚmz¥[~êÝi%´õ}½ÒMÕ«‚^á=W¶ô›î­$¶¶T¸OKÛkµu _qÒ ¦Å&÷Ý$•þ’^ôÚZZU÷}/m&öêÐUûð‚om_´œ$×Ýé-m&ÎÅ«“aÒ÷ªOMöv*Åm÷ÒJÕÊæ °@÷§ ^­õ´›Òl tÚÜ*»é%jÚîð×ð—pï¤kz¶ˆAÂ:JéÂVðߥ 7¥h! =Ò´ªÂéE7tØI¾ü ®ÓzH íûiéÖÒØiý½„é0Õºt¶Ón©ŸÐOÚV‚%Ÿaõ &ûI†¯™?„“ØeðNô“ ‡¶¯V–é.Ä[zI§ô{ãi-0î¡··M¥¥„—wûMö·¶®’[Ô »ÊÄWúëà º¥¾×Þ¬ ’ÁÐ;ô‚¦þéÒoÒ\26ßWí[ï¿J°Óé$m-t›%Ňÿº[ÛÞ´Xa½$·ÒmzÕ´» ýíé7¾ÚXIpÝÔ%ÁÚOÚM®TÛ}%¿·ÿM¤’a‡| ŽÍBŒ#@#oIºöþ&þˆ½½uµuÒIÛt’̃f@Ñt›§«Ü%I·ô¤rh(fC†ÙVÿ¶‚´•0Ã}%"˜]¡ÒoÒ÷ $a¾¨$Ú}_ßáI¶GÛéAVÿL?¦Ò´’DØbîHRÛôŒ‹7õnœ ’‘ÃKÛéPl?K[A*0Þ’ -·ÒÛýþ«l¨Ë™9V烙Ø2×ÿm\$¨'"U†ýjì0ô¶í×KA%¶ˆ*l\;ª%¶Óô›ÿuikà úKÛwé;ÖÎêµÐH*v 6õA%··®ôÁzm/Ã! pØwÒ­ÿI7ºÎæ5ÒJ› ‡ÔmøI-·}-‡êºÒ_r03·zH%Ú»Ò»Õ§i¶I^ÑP õ¥Ûý+¿´E¥ÒÒÿ °o¤«oïßU@ƒmÖKðØnêKaý$·WAïp•~à ·T’ýí­¿Ò}+J¾Ãaƒ¾’[u­&ݯ[~kJ›mô’[oЫo¦¯«h&›÷ ÝRKnþÛ}wº´‡[m‡é$·Úöô­wK@›ªpÃ~‚K×~èot­-¶úªì:~Û†—éXIµÜ7sª ‚Amÿ#»i&¡ü ¬%Øa¿ëÛ¶²‘Â{m) ¡îÚé0gƒîÛq .ñµIØmÕkté1[a‡Õk^ÛµIíµÂMxa·¤’î½]Ãh*ï«AÏ~Ûé$ÛÚZnᥰí×TØ[·ôNÞšû¶I·n›JÁ…ì6êµ·é$ÙØÄØl ·oK&ƨ ‚µàÃøA*·éx¶0‚WaÞâ–ÖÛwJ«nô•Û`s⧇kj“W†õKoú»"¶á¾¡¿¿ÐIwé{aÊ’»ÃöÒ¢Nü0Ûª¥¿¥¶ì.à ½ÐI'^Ãô‚Kaý%°Áª¶~‚Tÿ ;á$·õÝÃJ÷øH_¦Þ©{}¥ÛoöÛm©Ù¨h·ðaÞÒ/Ú¤žÁ½°Ã¿Hÿu¸oUíô­†÷‚AÃ÷I.¤» 0{°ö›„OöÛáWÝvööÛ~Ò_öµ­½8Tíº[{é*þÃí¤»}ªÝ·¸m»ÂH‰=¯†vÐI;z!ˆ^3L5Á¶÷Iÿ ÞKÞë`ÈáC› ßa*Ÿ« ö’‹{á*xƒ½°ÛÛ H û}7{J“ïU¶ 0×oi%àßm%ZoKnaÓm½¸]ÿI†öÒKÛÕvØ~ý$­?Øwm$‚VÞˆ_ÖÛ”0Þú[ÞšA·Ú Ww@šO†=ݾÐ*×ðÝØi(.ÃXNe5ÃD1ÖA¾ÒÓïnû§Ã í¤™®.öôœu‚à w·´ßè+ö”‡ßZ!ÄaÚá»øKÓ½ m»iGm¦“rô› o÷¥ÿ«°Ò…¶ ºÓƒ &ÞöÒ_õ ݰ”Ìäp· á¾rS~ÛáB¦êEé0ÞÚB"+hOib•íî’~‚~Ò ÞÒv×µß}ûI¿A0ûa½ðúöÈ®ÖÝ¥m­7ØI·ÃK¿^Eon»ït¾¿°ní¥‡jÙòö­Ú½év©7Ø$}ºÛù Éî›| »Kð„ƒ ½„Ød…¢RP½o_Â[j¾„ûK;)VvˆmJµôéÓdÝ)m¥Ã MéØd•/¸Ú IeK5ŽPçØµ{µÇÒìßD6—àwaŠT,5B•´#ûÚ oKl$•ìmö•¶š zn~·a&û q_² Ç"/[» ïAvD0ä ǧ`Ò{t ¥|D0ûLJØNŽ ÉÖÜ31mÛ p»v »·Nàš€®Þ•°`“ú\-öï†Â[ 4É<¸*ÚîÄ&ü% ’Ô;ðÚ^vR¤p0'VÒ[ {Ah7°ûn–Ø!dT6›÷"äGMÛ¤yr µè6ݶ[i’ÄG» •ˆþé%Ù\’a÷m-°ˆgö'ƒ0‰;J˜m½„½é†Û¶Ú[‚ @a’HŽ Buà5är¤7·IªßL7Ü0Â[ ìg ‚ã•6&b!#Úrb@Ï«o„¤•û ¾Ú^“Xc!—¹†ÇÁ¿¤Ú[êÃöÚ[a!‡ ׳PÝaþ½mÝí-ÂmX ¾{h-RÞÁ·Øa¥°ÁmW mÒíÝu·«îÚVáÜ‚™[ öþ-…߆Û.Á XÙÈ.ô‘ »Am%}¶öÛðØDß³²„G´°dY¾‰Â¾éc¾ Ã»a†‚ì ƒˆdêMˆt@Ý>ÿM†öÛKlNv° 4íðƒûk­ûöØAm„A}ˆ˜ŽÖ@ø6Þ‚moA{öÛÝ´¶Á i;3žÒW§ÒÖõ ;í¥¶‚;·ÕårB½s­w«}°Ã^Áƒ"Ùh2Ûz¾Û XU_ öÛKlL0D.­·_JÖZa4°Û¶ÃK Á;$»~›^Ýá0ƒÓ ÷´Ãl ÎÖ¢87M©5ÿí-$½†ßm®ØI† ˆ7 ßeZú{ÂZ§}†à ¶(³,!™±F©k»ÂÕRÔ0Û¶ÚTØAaá¿ê÷a.½-¿¶·„ÈgCtA·jÃI·¯tµ§¹¶vØu°àšjA“c>¿è-&¡:Nw¶ÒÞa6ܾõôÝ„­X@ÏZÓm÷l%·TÝ¢ƒ•¿¯ºIЈû¶Ý°Ú]ˆiÞB`ƒmmiý(­pßm†–í=ÁÆÝoi$´ØaÝí-¾Ý"\ §Û¤’ð‚IëmöÚ[uÚ 'muÛ·P«¶}Øp¶ÞØa"(÷VµøIuvßm¥¿°ÂD­FÕµ_´^¬0îØl%l;Ø¡>l:Òéôºì7í¥·[E(5[Ø0K÷ "¾á»»iS~ÑÛ¢á˜j éY¾í$ûmí°Â]ÞÂePêC=ˆÒMí$ôØaݶXo¦„N"8$7Vº·(O®Ãûp¿°`„Ñmí+~’Môí½°ÚVÛi(C·‡ªí*}paÞÛK¾Åí'ût¶ýÛ{v–í¨wÁÒÊq½„ÈI« ß „»»-Õ¢æÃÃzÁî‚©”é[om†“M¶¢6jŽÔ Ú·®È(øoݤ­ÚaÑØ¿¯K/³*¶opÚ[l0[D3ì$:]nK!¥l+Xaݶ[l3 ‡WOØAq'²Îá‡}´¶Øˆe¾žÃ4Ë¢>a/«O¥È2ìV¶í¶‚Ûl]´"!í®‚ì$œ?ÃonæJ¾È(vØt¿ÒX·•£¶– Ød³^GÊ Mûz QàõpÈ7ß2d„?if@a0ìJ9²ž—ÚKH CX¦Û Õm¶–›™ Œ0ÛCWÊ'oÛ¥MHÀÍA‘ÖžÕûX% Xm†/m}´ŽÁ'“Ž DŠ«´ØwÖØiPW 7 ~¯ÏÄ ‘ûÐHj'È5ŽQeÌÃvž´œÈU$Ûm•$GÕº°¨AÅÛ &™(Q$/‹´öÃiZl7Á«LƒŽ^Ö±Ýö4ÆVÿö‚ @“dÌV$]ªþ½a8}†Ýý†× 6líÃ+aÿ·¤ ð ¸(Drö×m†’„Ar¦”;;ÄGÌÔ:Þ· D ³¾ „¶÷î%„¶8ˆe>Óîš{IÃ;@eÛvWbœ$áÛg©CJß½B6wª.ÓÕ»û†´˜ga@†ÁAt홈Ÿ¼ A@‰†&aߦµÛa\'D0jêA}ßMØ ‚0ƒc© ¨0ßî×!G »ÕP9[¿]DöÚÂ!×äþÛ\)Û{fn¤H}>A.v #i†A¬sOkAþ[¬mPi÷JA©i®Ã¾Û Nv§¥epòð‹ ½Ó»X°ööC\-Öýz‚8ÛÆ^ ¿iì5»!²ÇYÖAPrŠHg›ÚmµÝ&PÿBB›hï¯Öe›pBAùÔÐAµVÝ„" ì…º!”åMÿÛ a6Ü<tA‚´ ½>¨!Σ‰µ†÷û gfÞÛÁWVƒu·®ÚX² ÍïoÖݶØt@ÁR·Ýº½*;¨2 ÍÖCo·¶Öv¶Øwa¶¤T5’t¶>AM‰² mÉëí¥ 7nß’ÐhÛk»ÞªBQ†ûû¤í¸a¶‘X ºw·‚ Iä”5[úí½„ »ÃmÐ4¸í¶yv‚’! rr rd %9†ëÞèíH0GVÛ°ÝNÍsu:öÒiˆ6;ŒŽ Ñ Ü7M{ná! ¾ÝÐîÚB|Až Cunáž@¿oC+m¸m¿¶šmo l51È49Ûœ>#í¾NÞöS‚ß+ ØÄed¤·þìM¶á†M .[tvv² ûß÷ é;tÃõ䛨ô@žtÈ)m@6ßnèìLaÞíj7×Ú& ®·aƒA†×ÛÂPôÁßÈkm¤  XyÚÀ*à þÛv]Ðv×T7»xH$Âvó#PÔ5ðÛäÇ»œðˆcfŶöÑQÊs›-®ÂA'pÞeášC/¢ ¾ŸÛiÒ6Ømºâ$cœÙSº‚M;æZ"àDH…$Pá¶êûÚx"ÂnÃm­¡$lí^ÄÌ<ƒD›d{ý¾Òvu {ô‚ݺ’ƒŒ ¶î¾ÛPÝß¹܂ɱR·  ÃÛZ'ßò·ü'm»V $O‘À¯ð‚Cë‡Ù)«a﹬%Û~›h0mðÂB Ð@Ê6 ð’^ù’À36mõ®ÛðÁ6ìt™LÀ®žÒ ª23FOoN×»oá¶øŒ‰_m¤/AÛokÒ·ûxa½$K@¯ô ¿+êˆá©†×ávýº 6ô‰"#=;…¶Ê[Ķ{õm¿;¹ºnÔÀQÞŸNÊé°Ñ!dM¾— ÛÎÍEm& ¼$wÀn]W¤|ô!ݱa‚W¶vÂA7JAqÙ\Uˆào ©±0Ò@ó6¯»mÒ[`Û¿ú@•"f,®œƒNƒ%xncí·†i–ƒ~ÛuúîÐ@­$È5ŽÊôÀăÈÔQ-ˆà{ûí¶ ntš¶¨á%aÈqÁ$È<ÉeÃVD–DÌêÛkÆÛ ÂÒu ½ A ä( ÈgªdVD*&`x¯»á´ €Vå8xT¾AHÜFÂA( Ða™F êÝüÃö; Am‹xMSä\/H$ïÁdÖ"ÑÝ`xµ{ðáÛ×TCXÜKi CréìíIðd0›èìÀ]¶é…„ØnÁ’|†`å•· &œì\‚ƒ@炬 ¶’Gb¨Žº»Î9ÆpNÛ V¤ ›…Ü ‚ &¬ì@ámhIÀñ}¸ˆÂ°‚ÛmÏ y'jÈ.9C‚î‚ -³¸dt\ ¢:#âé ŽÉ@ñ õmÇAm‡¡ †¼äƒ{0çd„‰ÃevUð$.Ž!I‹^ ÎÁ†‚ *ž„|$$«&ð,†#/Ä ]»D6Ø0ÒdIZ¶Ú„pÉÀðf† "’@ðë•pÛLC†ØfFhò#á $ßê*â@ðÛ‚¬©+ÈhnÞ/ 3!$`C®Âa%}ÚT²†Û—%8" r- x®uËíºim¶eÀxa`ŠKÑɹ@K x4Á×5H‘("WmðD¬öÙtgÅ0‚³L]n¢v\<p€FFHŽˆàx°ÐA°KaÙØæp2‡}» b€l>\T$„Oàˆ+~ØAnÙφá m$ßè6)1Ê]TPÏç’–Ûa& l®° .ÌÕk¶"l„mÃtCIÊnƒH„$€<º;P`Ý'ƒ}²¸4FHé_ØD,"lk‘ÀðÙ A¹j+à¼Kl5°Aa³"\ÆaÈñÀ[§°‚`‹u°<4‘n«+‹¢àx.ƒ]·M„ a™dq—°$Ò ­±ÑnTfðT„!=ò8Ûu°‚ìì¥Ì54¯ên‘òùĨDà Ã«ÚØ [gv‹™.DxÀÌt'…·ÑÀ܆ ‘njˆàxg0¡µ¶ÂØ ¶Èœ` —[í¦‹qòàxA´’DGÃDƒu€­éa°Ë„0¢ý×BWTFðW0…ƒ‚Bf†ÂêÆí®[ë®¶¸±J[¤EÀðˇvé w’¸‹Š­«Ñ]H ²9çHOàÐ\våm(\êEC0©öÑ\À ¦ñ’-Á@ðX½ˆ¥¶©é ×¢¹RìZ ëx)í°AoºV›‚+Žƒ!0„0’-Òò莆ÕÛ»Jšïó"P<Œ!Â-Ó† ¤„OàÙ¶Â _cVÕëj¶'ÁCFIhî ÊRmP vÛ a÷h5 ㄼ# ˆ¸ ç‘J@ÈÛÔ "l‹¶ ZÄG|ÊÑA Š "laÀ¼6ØJÛ ÒÛGj™Ì¸ „|Ú°DàÂBh†~çi.¡„ƒ¥ôv+Dp<K¡‚VÂDØ)ÂXvDu²¡¨9›ýyÚ„\aIšãÛa5 ƒÊ;¥nì0<H莸 Ú†T=ÙÝA™È¡Î ú- …ålQ!3{m‘-²€Ö9ÊÝÛôï"¬ŽÈù £} œ$MÈÎÚ ‹_ ha-—ô©»’èØ ÄvGcÂtADCvÛL$ò`näà¨+aNÒ¯'HKë IÝß 3Ø*_í‰Ãmrkh ©»mª d ÁÇ.ÎåI_¯ Èd㔹LÈÏ.ˆí'A/íI0h´@ÌG" Ûk[r\u©–˜B$Y,Å$»n¡¢ `¥çr¤eé_dFóHŒ¦’ $a¨"²±8½å.2ëß x4·WI%Ý0–ˆd¸ä#{~“W x.ܧƒJT[Ô ¹ ËöSq]ýº xnå7%ÛI$”†ÛuFÜ ÁÂ!’Ý-½+á+nh›aiR!¦Ý/t!aÈqÊ6õU‚ pmöÝ$YÜÛRˆdDص¶¿`–ߪL†sd; žC Ç#ƒ›î½ÂíÕ2Ù=´‚ x*lAFÉÞ)yP3wªI é-<3G5œÜúá»ØAU¶JÃŽS%‘šî½RK† .AI_kø'VºKlP-,•æºKÚ}ºIVÐ'Aq<0Ã^>× ®‚Ô’PÝ´½°šï ’Ýh"lfÓVÿÜ'ߥVÒÒ Ó»ÿ™$Ã.¡ô’ÛIB ¦ÝWa?«$®–’M¿ú{wIVÒuaš}%Üʤ\ nNZ +i*ÓÓmée=qmnºKt´Ú«×Ðz!”áÖÞ™‹„ªÚéŸ{_N £ØÐaÞCT‹-k®“mÕ·Iu¤žÝ8M’vÒ é¿ýÁnr xÛ¦é$½]_VÝ/¬Êº°nÞì$’{ih-þ% °E:H7mø4’M]t·¼ Ђ ôß´Q°× >“n—N$›Ûö’®½7[Ö,þè$¶Šë½6ú‚IÛ¶ô’º¥ÿû„A@DÞßè.Ú¨I½]ÿT˜{„‚^ÞÝ]%g;ƒrpÞÞÞ‚«z„ŸÛûO*a÷úIvô®Õë½ÁA‡·½$•°È.:Ð^“n“‚“ ·ãèŽfiDtnÒ{÷ï a²ß@VÃ}è$®"=_Mב †³ÂM§··ªWÂO­ºWi¶%nö÷ÒKè-=Ú¨iø ¨0w·¶©T7…¾®úÁHP9‡í÷¤³!Ón“ÚÞ¶û„’m‚~Õ½‚è-iÇ·¬ IÚÛß .ð•ÉWJE»u‚ aàößxA%oI´}êÛiZL7 Ó{i$”7 žŸo¦Þœì€.¡½­†¬¤•ô¾êý†ð°‚ Ûw±†IU=.µvÇ;à0GI0Ý÷a… .ÎÉ–“jÝ6–Þh$4m¾ì†‰¤’¶ÒéÿØl5ÂvëpÅ ªçcô˜}­¥vÅ4,0wí†Im=«¤ß»ˆ$“nöÐd2Ç)d$­®•÷þÞ$›mé°Ð„’÷¤étÚK´XaßnW‘É%·z^Ýkî,0Ûö„PIm½éj×ÎÊ)&ÝöÒA^ð“}ÿ[‚Tn·Aw}+Û¦Ó‚“ ÚMÂInð“¬~"Úƒ ±MÖ¶ÒµÝ,’¢($›l n[op¢Ÿ« ¡GTm=$­Þv›Ðj!VPÒ .Þ•m¤ª*m·t’¶Þ‚w}5L7a4‚­úÿÉÃTA°â!R´Ý šiºA6˜ Xaé-¶ýRl(A$ÃtWnêšn•ð– á*÷¤ýªV¡Vú[ÂôÝ+h3àÓL: UÛÐNý¥h285¤úI[oI­õ´!P0éïH*vÕa I0Ò VÛ´ºôô¶ VïIöð®‚HH$•ßJšë¨H&š_oA4ÓjÂ@°Ú¦ %a·…h[¢Îªœ‘$ÃIPI[oA j"ˆmì²JÒKÞ•Ò C‚«a¼%è*mU —½&Õ¡†–’ÛwIô©†•ªÛ R}$ƒit—}n–ƒj —m½+ÒPÚZA-Þ“ëM®—vú½UƒU %»ÂN’Ói…I+†éÚV6™à¨*ÛévžhF’VÛ´›¤Ò†¡•ïKTè:¤•¶ðKÓ"i&I%m¾­+µA%oto^’[mBOZL„»· ­j›ÂI[oÛ¦ATp°aÔ$­Þ_!²…mmI%¶ð•â*Û *†ÝéÖƒl„‚îJ %¶‚oH0ÄDR[n©=Sa$®ÞºPÃJíÒÖ›Im·¤Úì4W}ꡆ]Ý$ÞY rA´’†Á»A^žÚK¿WtÒ 4W½+®›AU»ÂMªxa„[oAuÓ $®Þ“k¤ ¤¶ßK[J -†ô›§Pm$­Þo醕[{.­Xa$­ßNº@ÚKmºJ«h$®Þ½ºa¤–ïA7é $­·Ö¾Ã %nì$ûtÚ -†è%u¤a.ïÓ®­ªVÛÂV“¨m•ïIÊuÝ +mé8×M„’·v“~m$­¾‚uÒa¤»oA{xa„’¶Þ—N“iUÛÂL5è4’¶øJûÝ—¾u« %VÛ “ýi%mô­'I†’ÛnÒ~Õ†’VÛÒozmVÛÂZÚA† [o¦ëPÃ@—mè'úpµwÒ×PÚI[· ]7M‘ÒI[µ„ÿAˆi%·ÒoÕ +·¤é6“’Ømá+ô´’»z ×Û*ߤþa¤•¶ô›ß 4’»IºÒ´’¶Þ‚Ò¼A-»ÂWè&ÂI[oIÒ|0ÒJîé7ÚL0’]½'ü0Òì;T¯Òm•ÛÒÕ´›I+mé7^ 4’ÃwA7é6©[¼%jÚ°Â ­†Ó ?ᆒWoKIÐA´’ßP›ú ¤•¶ô¾Õ°‚[·¤Úô4VÛtté6­øKí'H-¶a+ü0z ÛuM¥¨lIm½'îƒ %¶í„Ÿum•ïJצI[oIëPÚI[oI¾Ò „’‡ô½K¶ô›KJI+má+Þƒh ‚Û🵠]ÛÐE‘-6—¶‚ Xmá!¿H6J÷¯ºL4K ½&ûÃi%;2M·¤ë¤ 0’\;è+­+I‡i{{ $®ÞA´´ƒ $·è+ÝXh$°Û¥m.m$¶ô¾ðÃI)]"m»A6º¶A(¿…}èH ­· ºT›I)]"»Òool$”[¤ë¤Á ’·zWN“ $ÃzM­Ðm ‚·xA_á´¼6ôéH ®ßMö¡´Ãmé=>ÚH-Þ—ÚA†JØo&×WI/Ò¿Ðd  $­· ­'I°Jº Ò ÃnÒ¿H6KÞ“Ó¤ÃA ­¾V—°ÂI[oA?j ­†”5醒Vý_ÒmK·¥ÓiH+w„káÒJdé¶õI†’QnúnŸ 4‚VÃxA_ja$·zN•„›A ­¾‚oŒ0ÂI]½}¦I[o :á´‚Vï…uA´’íé7´Ú ¡¶ð•¥°i%¶ôŸ ØInô›ðÚI[}kA†A{Ò}¦ÒJÛxJÒÛA­·¤ýI+o ¯vI]½ õ@ÃH ­¾•«M¥[‡ ŸÃ $¶Ý¥u°ÐH+¾·Ûh$­·„›[l$ýû†ÒAvô­+ 4VÛÒ}†Ú%m»Jö`Ò¯xIÒ°ØImºA7¶H-¶ô[a„Wô¡«m¤¶ÛÐLPm†’VÃxK 6‚A[é' °ÂH+mè* 0ÚA-·«¶Ú +°í¶a$¶úM0Û„•‡j– 4‚WmÒpÃa„VßIÛ ¤•áªNÃp‚K· ¨m„–Û“M† ‚°ÜŽ’Øa´»ÄBv`ÒXm´–ÛMÃa ]­†h$­ÓA¶%¶¶Û %n¶ 6’Wk,£h;a$­µ‹ 0a•¶†n‚ ÛIØa$» Cm¤•ºI°ØA%m ¬`ÒA[unI[a$ „‚[a(a†ÒJí+ 0ÐI[¤ƒm¤ÛA&a$ºH0Øi ®ÒM† mµA† „VÝ&Ãi ­´ Øi·H7a%Ý$Á†I[ta¶’[´ƒa†’VÝ&à $•» Ûi%mÒ`Ãa+¶l0ÐH-é0Øi%m´› ¥WÐA†ÃH.ià $‚‡´›a¤–Ý Ã +¸AÛIn°à ¶è&Øa –Þƒ ´W´›a¤‚¶ØH6ÚI[°“ a •Ý Ãm*Ãm&Øi½0à –Û¦ÛZ¶éà WÂ6$¶Ú†Ãj”7h& ƒI+¶m°‚Kn“dtt·… [a$­¶‚l0˃b ö‚l1H+ Âl —µ¶’¶ÚA†Ò[Ò †PîM´•¶é†Km„ƒm­ÚM´‚·„`ÃI[nƒa¤Ý&I^Ò 6‚VÜ M°Kmºm¤Û Ú [Òa†VÛH0ÚKºA†Ò Þn’ÝÓ %¶ÚAºA[mÄ”7¤ 4‚¶ÂM wH0ÒJݤޕ¶Â6‚JÝ« ‚¶Ú6©[t˜i¼$ÃIvÚAºA]ÐM¤»tƒ R¶Ù*H7H·˜i¯iÒKn‚†©[´ƒ‚Ví m$¬6ÂMÒW°“©[ti%vÒ ¤Vô˜i%¶Ð@Þ•ÛJH+m¤ ‚Þa¤°ÛjI,=# Áá+¶¶JøPÝ ¶ÚLI[´aª[t›I+m¤ ‚· ˜i%m´:A+é0øWt˜i­¶a¤‚¶ØH0Ô%o Ý-¶ÂA†’[´­$Ü ‡Am´­VÛ¤I+v“ B n‚nªÛi6’Wè0i­Ú@Þ•¶Â ´‚_I‡H+m¤J¶á&IXv“ •Ûn Û¤j½…mPVÛA0ÒJÞ¡¹6j­¶‚ 5 wI†©[´›T¶ÚA½+zL4‚ í¤T·¤Ý% ¸H6Am´ƒ R·h(t•¶Ð@ÚIwHP¶ôƒ’ l0“Âá·I†¨+v‚†A[za¤•Ü$ ª[°“t‚¶è&H%Øiô­é0ÒJÛi ­éÒJÃmÚA+n =wjÚHÞo[v`ÂA+·A‡ ¶ÁT½'H-¶é‡H+Ø ˜i­º†¥o„’ÛiÒ [°“Jî“«m¤ÚH-¸Ai%vÒaª ´ƒ’ÛÂm ‚¶ÚA´–Þ­Ò í¤ÃI-é0è%m°‚ ªVôƒi%vÂA†«nÐPè [xA´’¶Ú†ÒJÛh&Ò [ÂAºK¶a¤•ÝX5 [´ƒi%aºt‚·iÕm´›H-¶Ò ÒVô˜i ¶ØA6’VÛPÃÖÃÐA†’ ºM¤‚·iC¥¶Ú¶Ò€… aºL:JøIµ [l A´’·jÃI 6Ò ¤•†è Ü$­ÚL5AC Òm •ôƒ R¶ÚL: m´6¨oI´VÛ 0ð•¶Ò%ná6’ na¤†í ÚA+n“A[°“ $­ºAè-¶ÐA´ªÛi0Õaêt·tm ‚†í ÃT­¶“i¬7 ÁÒnÒaªØnW+I7A+w¤ÚICn!ÃIí m$¡†Ú ¼%ÝX4’°ÛH:I[p‚ 4‚ ´›Ò¶é0ÒJݤÃP‚†Û ÚIaØ †JíÔ5JÃtƒ’·h&Õaº‡H ­Ú@Ú º #~·„›JÃmÝ[tƒiCz† Û &[pA6•‡¤ÃAC ´ƒ -¶Aµ·i6”0Ý Ã­Ú º†ÛH0ÐVÝ& ݤ ¥mÂMÕ»A6‚°í& +nm(m´˜iaá ÝCi0Ò±h Ý\$A[I´®“ +h ÃJØAWI´µ U´‰°¶Õ¤„òjØK +eš0Ũl²`+†®MÅÑÀðÜ5l›ƒÍᱫdÞÀðÚ \›Dp< ¶M„²:#Åà 7 \›:1—ˆá[-ÉC C ÙnŒÃ ƒ å¾’PÙ]`2ChvW™2AN+Íˈй’ª6 ` ½s!LÀ-†XÛ2@0G³#…¶vœFÑÆGCs±¤`Ã`Œ6v<|À¹¶J²ù¤G°Îc1ަ0Dp[â± ¨9`>Ì 2 `Ð9¬°f[œã“£”ì¶C$ fÉ 3”ìÑ"9C˜r0f•²Ïeû4ÉÈ ±Ë‘‘@>ÎÈ0åûH 2‚дÍYÃlÚu²†hçöšF@ñ€ûMQUœÚ†¡ià>Ô.ÌíB€eûQHȦUTÿÿÿÿÿÿÿÿÿÿÿÿÿÈ›—^?ÿòíB¸È³J28¤##fSƒ̉˜!"³è@|Ø‘ú3aHäk är;& ‘ °AÈ›"89¬3JVc"²0Ía–j „CA‚ 4á¦Rd€þÏàB>EC,ïä$3¡!“† A„C0@hM=iÈï¹ èU„ ši¢ u4AÝÚ„èN ˜O»µ½»µ aªa4ÓÕ;[MVõØAݪ}÷§Ã[ÓÂtÂî—Oûí~õÃ4zö¿}¯Þ–Ó½Wÿ¾×¾×ÝêŸ~—_ý{NÛ¥«ÚiêÓêôöÚKW×iXIo´¸OmV½¨K Ñ¥^W§o¥!›«Ø) ʬ†€„ã.9­}òËdM—Dt]]ÛiTƒpo:y 㜄È0CA5Þé µJ‘&´_6‹äxì )Q‘¡N€ ¢:.ˆ˜/¯i"èqòà„2 v7>µ YPŽŽŽÊ… HÜs0ŽÎ¨ˆæq"ešÁ¹s!²àÁ&@Ñ€ÊB""EÙrõ˜D3R† öÈ1͆”µWµX~ƒÂù µ„" ŒP Ö¡"¡d0„H! i„$@±Ã;Ô ZzaÑã•îˆa¢4û×Ý+¥õõA¡hs³³P0ƒƒM4Ñ‘ ÔÙÚè4Á9;!¢ºMµ ¡ÿ^ï_®•4ÈPf¦všÝÚpÁ;NŸ¤Þx_»ï}¯ÇÂÚ®š}Ú Û´×» ¼ í=%ßÿï_ëì'…ïûTßz~}ßm¿OJ÷¯®¾Âzý…øzëMîÒ]ÿÿ¥ÿ]5×»øuúõM®×wíÚÃßÿ­k¯ÿöŸÞ±¥ïÔ´« ïƒJÿõ¾ºÕÿ{kþŸOÛT„oä ¹"6H5"õõ]SZ^ê«Ó þ•{»\;~!Ç úÿõ®µ{ÕÓw¯ê´·÷éýþk d3Cá…!—^•×WÝûµ«jÿûü†qi&¹ ¥¼ƒqÎ:¼)î¹ã?üyý¾Úûý->¿ºÂLQ”夨ù‡†Cf„HCCä@„4CfmH1Ý·ÿoÿûýhƒpõ ß å ÃU ¼ÝPt…ú~ õÚ®ÿk÷ûý'iöº}¦à¿ÓJëÚûD†¿_¯ßKH{þßÝ-{j}íoL_þßôà¸.þªêƒuÿ¥Ú^ë~’þýôõÞÿ_Ò_õvÿ¾õ_ÿÿKKÿÿm.í+Ë`uÿÿ¿MV“ý«~úûëûßë.–’úý¿]ÔqÿµJêïïÿ«â5«õ¯…_!—^CCœp_w²çï¥w÷i{íúÿÈ(/~@‡("„#ïôïõ«ÐwðzwÚWÓòeºÖ›Î®ý Ö·ôûy À†^#û \rH½ÈfëJC,s£ÿõDáŸï½¯êÿ·_ï Ô3ÄH Š.þA­àÞ!ïÿ­=­i\&ß®½î–÷Ú Ãºûµî;ú®ÿtž×zïÂW{ýúu¾ïúÿOÿwK÷}þûVõëúß×ý÷ûýÕvºW}=öúPvötý÷ ¼ý÷~ßkkM÷×k«v¶µ¯ýoÿÿ÷þÃK[†žýý¥ êPÈèØ(†` ì3¡z}{Ûþ¾ÿ¿ÖÕV›éþî+ bmˆ¨øõßý0ÿ¯¯ï´öÚ]”î÷í]ò Ko÷×[U¯ÿöÂPfò8(ÙS”áÃOì¿MÈf¹D]§ßIÛ×ÿP·_ïà²&¢+ˆ‹j‰=¸ºn½õ¯]oýúO¼>ûÛ‡NõÞ“ö ­ö © Ñ×ý2 9Y¿j­îŸ½¾ª°ù Åò ƒqÁo¢ ࡊAD>ߤ!·½ªÞ÷¿{¦ª·È.¹ °BïÈO @MO»»_íw·Ó†½­mÕÁSð®­ë½]R[ÿû};Õ?úzÿÿ¶ÿúiªïï}=S¿NëÓ~žµ¾«¶ö©ß¿é¾  Â¬5ÿ¿½»õ»_úaVÓÓÕo´ì&½·°ý¯»ºnûøi¡oí?¿@ SA…×ïߥõ½~¶U´Ó¾ÓNÓ Ñ°aÈ4¨L/l=¿¿ 7kª°è0¡P5ÓM{MB;ˆ7 ",¿}û÷~·auvØ ÓçiÃ;A§ Âa0DÌAE3Jõo‡}ü‚ðï 0f¹°JÏŽ­Ða0PŽÕ‡"ˆäB%&qB""#«†S»aJö¸tß!ž A¡ðÈàaж Ø`2Â21Ès ŽÆ±êÈ(CƒažEÂÁï¢ Ü§>¶àË¢:ˆ¦.)x°ey ëD:`^î9 ¥¡ƒIˆƒÛˆ‘i~©ÄDz ß[È5ª`é¾Ým{êA€m÷{­Ý»ÝßN÷Ý7ÞÝÓÕoéÛÝwu[éÚ÷é[¨u÷éÚ…ÿpûû»ïÓºXkÖÕµÛUnß4a8»M5×ôü ÓUL/XkûõÛ´`¡`Õ¦œ5†©ªi§j˜&Ž‚a4 XT @Âa4v©¦ „ ÁC8åŽ3‹p\ÌA¦QH ÈܘrA¦wLdÂCkÈñã;މCVÆŠöþ"BÐé‘Јˆˆˆ‰­ˆˆˆÄDræÕ(ÿÿÿÿÿÿÿÿÿþ@}¥Gÿþw‹û(Ó&]/K—VÚþS`Š?ÿÿþ@}u_Çÿ2^>[!j?äÙº¨ÿùCUòšµ,¢HkùôЧãòìÁ 2ìªEN}¿ym-®5-] á5¯[ÿÿn­ÿ÷ÿÿù¯.þ„?¯ÿ×áj’ü/h-è.SK‚z^ð‚éZ Õ„¼(õ^á}‘;I\Ah†[Wh:a-zPïaoÅ"w!íz"Ñr)íÁ?A¸mªÜ‰ea /a´"öÒðû­û¥µÛ]È“§uŽà˜-Òáº×K· }tØä…ÑnKöJi!íö Ê]ºÇî©¥ØikNékÚV•zëám-j«h0«J"—éR5T­WúËQJIS µõ§I¡ô¾š[]nA»ªtj”Ìèt¾"? íB§NÏ…ëŸÿ^Ù „µ;B.ˆøüD~?ûêŸúîÿ,ái5uÿOëî«¿ûêŸÿúoÙœƒ|ñ>k¸Ó}µÞ¿¯u÷߯ÿÓýÞC/ kÐù.½„âÿïÿÿ¿ýÿ÷ÿÿÿÿÿ÷ÿýõÿýwÿýú÷ë÷ÿ2î?ÿú÷þ½ú÷ÿÿ¯îü·¢ëû_úÿûû¿úÿëß÷ëÿÿ¿úÿýÿï×ÿÿÿïÿÿÿÚv¾ôëòÍP‹£hßܳFmpˆ6Iiðˆ+H“T@ž@žY´ÉøD©n„‹ z‚!¢(ç–ž ‘îàˆg.Pâ$c•´½R4\á&€x.ü Ê‚†‰xAg²ƒ1áÀånÊÃ@ðÆÓø „DÌ+„2¸àÆÍ}!<­^Y…@¹Ú + —.å˜, ¥àÜhH*@‡1r¶g¢teàx(ÈRÀœæGŽ"8†×HLˆÀÆ@@ d™3\2VÈàxc ¤2C/‚O"àx¹¡’ NLsŒº=›¡!<žT""CáVf¨e˜0GFK`W„ô"@¸å9ðHr‡)ˬ.Êj#0(ÈH!·ÄDDDDH$ʰ£”ÓEt& ñ&9 AàŒr4€Ë3P`® Èà×’â”ÚÀ+—‹†@q ƒœrN&9Ù¥œ ËDM‚Úæ r•”ç™]¸ˆˆ.9‡,ç‚ ¦b¨H®dvG-.›B""$š>G‘p<1ÄDDaÈ7¶c„„CÈf¦ÒÚ•e'0åY8[ îS:€ˆa¹Œ†£BsµŒˆsƒ!ªä&‡R&Ê,.APs4tµ–ƒlpÉŽ"$3\ŽË1Á~$FHm.R„˜Îgòù|º#¢8‚´\c ±*Ùƒ7ò:8€³†”dÜ¡Ê` †ÒêQ)¹Ï# À‚Ä[ ¾aA±rIX."$fa¯7œ#‚Ø6ÐXb$Ø9ÅÖì!Qdp¤pÉH [ x(r“F€¸B"@²:#†á P‚r6‚šRÍ!5£ ²Î ),Ãa» :Ðe9N$c”šVA±¿µ]ލ ¬DøE46h!L¡";#ƒMFér–Ëá°¤„DIÞYÅÁuDGDp<‘ðD5Û§¤MÔ‚ÄIÀðnS%(Nns° <ðBCQº¸I‡† ²v&†PA*MÁGex4”Ïih& YÚ–\ À‚n‰¦GÁALƒkaÜÄC< ¦ˆ6·+Iቘ€‚Ò Á\ØDÉ8 ˆ67Rh&á,È"6Ë᜺ Iƒ„CÊЈ1#r›j`°¡à–dZ†im‹†Ñp› ³%@<KmXmn,Éo.†XK 0áÄø E¶áµ¤Ü"8Y\€<ËiT6´aÁ9\` %´XXI‡K+àÒGÁ«p@²¹@¥µZ‚aÁ++‚¢8 BCXØ% Ä'€ðÌ“pQ])ÀðÓClØ nƒ›ÄТ٠­&²ÜàxiÁÐn[—Á¤¶H «I‡,·V†©l‚¦à‚Ëq <‚ J–噢Ø(M–¤X†@ð֦²fË›¡!Íú[¬fÀðj,$ÜÄв;#¢Ø5]&è,›hƒRÂaÁɰ0<4‹\6µ "o\›ÃTµÆÁW ðK&€xi‚ Û„M‹28D|"fúPL8"7QÀxjâÖJ ¼$„M–‘ BÖSGI¸ ±3ÃhŽÔ0á“rðÖ#Àˆm›Â ¸@²n ˆàx4–°`« ˜p¸†@ðlrš©`© ܲ™7EÀðÒAPÜ]¤Ã„ Äð …ªPˆà««pˆ`ܲMÕð×$5Ô¨&á,›¥á¬GH-„AÍÂå’ÀðÕ/¨à­¤Ü ¨²‚ @°aÁ–@`xk‚¤Ü ¬²$ˆàx6– *á&²–žÁ°FKÕÁË!X  ‚Ò胛šK X ¥¦f ºL8IË"P …¦X ÔnY^#à¨]AQc&áFIÄð …¦¬zaÂYe­Á\´æ úA¹e& ¨šà¦‚« $pAe”Xdp<5ËH(4˜pE Å<ÚBÀ´›¡ ,ªYRÒH úMÐ'àx*–•`¯ ƒtB²+–S@<ˆø" ÌT˜pAe €<5Ë‘f’‚¶ Ë)Áè´ ÃlVEŠMÂYhV†¹f–»h&de   ˆ*²ÒnYh)ÀÁfНA¸%–€P<4h+¨PÜ,´"8t,¯eš •&áÄÔ %šœ‹ ; C Yg¨ = Ü%–u¨Y¨{t‚:Öo*éá;„AYo¤Ü^Y¦ ÉzL:Z„AY_«Y AôC3¥˜´ ÉépaÁð‚¸%„YŠ`¯}àRáUdTá&áÁ%,°WUIá °@· ÁÁF]eœ0ÍÂxA7ÐX K¤Ã V+,ïzA¸ X œ³¯¤Ã‚¥E˜0“ÂMÐX@¬³4I'éåጴf*}&ÒÁWe»H0à‚ÐX [á+‚„ ^‚ `‚Ë9˜+÷ᇠa, IzMÑ Êpè ¨áoAÓu°¨YÉ\{´ƒ–€PhL³…ƒ"úMÐPÕ',å ¯ié“u@KÂ!–8,HzMÂQ ‡,âÀ­áÁÁà–YÆÁ—Õ‡„´ tn‚–ux W¤Ü AÒ ­¯I‡ Z ,ã’C½ ÝØ ²Ï¨)Hôé7 ^8G–t7a&A‹ aUhÒînE•P ,ø ”úA¸ ‹(XË* 4å Ð ½&APXDZ õJè‚7)¹ ·¤‚a²ÐH Dt–áÜ$@ðÝ•T, CúAƒ„ Aa•h,´ƒ.Ú¤Ü*°%é7 qÈG8H@°Avé7A‹‚Yh%} Óx :`‚¯A7aËB@7[ÒnAÐTZ$A•¡Q> ÁØ%a F…¤p‚p‚ËE`I¾“p‚pA`ˆ)´%Séº TZýá&›*“u¤ÐK-›è&à‚ AIŸ¨<$p‚ e”ЫpAƒ)–U´‚›:z ‡e”¨4²ÊJ‚Mp¡‡@¬ XB ôp–,AÁ+é7ˆ4ínYALy'$'I¹6 a-ÈM¢a *,¥@H6n, ´‚  ­df,4› ´ˆ*³¨aɰ€|²ˆ -mf a A:IC‚X%ÐI¸DœÅ¦‚ Á ®Èé[ °Aq!±Êƒ¹NS0D7K*ˆˆkr;-œNÜ+- D5œ®)Ê­ h† ¨ \DDD‡…±Ë‚‡'¡L¥$ãØrÜРˆˆ‰9¡È.å¹&E Bp8nXKkDDƒhä(äc”9Õ ÁÀá`‚Y ½ ¬©ˆˆÔƒŽGå9FËi¶!p@Ÿ"ÙŒŽÌ˜#‚æ‚"èòIÛ–ä€B„µ$)ä` ÁP¸r9˜D|ÌÆ]%m„CJBœD¨F„G Gˆñp„p3#fGËÅÙ5 “°à¸%â"""BeÀÐK²9ˆ-†á-âR#â$#q ¹7E8lm¸OAn""$Î#äv\ nCMÊì§ ¸ »*ˆñ2‹Œ¸ƒDDƒzfMä™Á`‚»(ˆùxº4ŒEÁlàÈàÊp00ƒtC]œ¢ )¤ÄDDJ„f)/‘âá’ Ñ .|5Ÿ ЇDÙÀ«Ã‰Ž!ž""CTr Š94å2Øt@¯k2 ñ'"ñ2¥ˆˆ r(ç™èPe2sÁ˜C »6Ëæ":3ŽƒDDDHeÁ‡&9ÐU”o£¡"³Î.ÄDD¤283¡ OÆóáXSu·<6AM tš†$P3d0糄+гYvQËãÁq Þ 9MÓ¼[@‚òÌR 興ˆˆ‰[Ë¢|Ž\ Á°Ž‹£ º= òƒPçkT»,Â@ň”ˆò#²ù.2:#Äp3ƒqÞAÎ$‡-­„4×5È0;Ò*ьꋌÀ!p3"æ_#¢ùÄ£XÂ]íDDDÒ8!|¸#ƒA´Tà  ºnÔDIb#³ˆŽÍÅÁËäpÚ#˜œdp< Uí¦¢"""B#<§Eã#£<á°Q¡<Œá°µ@Ã[í¢7Èù„GF$ 8ƒ x7j¨ vÑ ¸b""%h2k•P<3‘Ð «l²­…/¡eœÕæG2;#†GÁ”äÇ#W~H²&ÄDHŒ».Œ ®"P@ða¨f½´Dˆ‰äc/Àñ4&`x.^+Wi’t ¼b"tÎv0 öá¤Â –`"#Ç;V‹áœ_lƒûA0›Ѓ8àËá%Ãl éam‰à< Ÿ·  šl-NÁ@ðP^¦Ò`¼í` ^Þáí…çi@xf½µº§ ̰ °‚~÷ í–a0<ù’ðÊ,æL¾K¶YMWh-°¼È`eœÑ ·±wKa–e@x~dL ¤"KÃÐM6·2Á¦ Z¿a+pD æù‘P…“&Avߥ¹fp,W2 Ã,¼›aw¿ZlMó"P<¶A8ãÁé¿Al0D ǼÈСÐ/oÒ¶Ë:È \¯`x5«¶öúKl/•ÈÁ©½Áÿ¤¶Á~WƒWØD5]nÝ*[`/ àÚn~á!öý.ÈÒ¸·•Æ‘ Rë§/m=-¼_àxkרK¶ÝP[‰ÙL}]£¹\ ¿Â ïI,0ÎÍAeðXù]S.ƒmxIöð¡-°L"ê^&€xm§áJ›´[h†k"Y‚_-ð ·ÜW¶ƒ’Û0u-Ђ·á/n!%¶†2Ȥ÷l·¨ öô¶Ñ C dAÌl?PD‘ݤ„Y @žª[“˲àx*}½ºKm „ ¸ˆgr†ÓrO »o m„›@ßtñ ãƒ6¿/aÈ[i;i6Y ŸÄâ.‚—¨ ZÚN‚î›,Ýø†@ð$íÉî¿om-†“`‚ù6HÉÛíÓ¥¶“–M@ãäÛð(õ nïi;¤Ø ^ɶ€xx$/}Òi´›@ßc^Üàn¹§$Ô:m!mlW¡'ÁgŒ­»´tØ"ûì› àVGU »}´rn¶ɱP ¦¤:l›’?ɰP W„º¶uÐ+䨕À°Ž¼]·º·N‚žÕWËq&¸yp—·ÚÚÙ7-Oˆ3¹À­|Âpˆ6·-íî•î |A<œòJí„·ÚAºÉ¸¨|›ŒÁk p—Þé_ W¢n 2/L ½½´›Û ¶MÀ²á‘}‚ vûIµÉº@7øŸ ûßa&ü›„ƒ)Êr”%p–­ïOà_C Ykì ½»m&äÞ 8ù7K †G÷p‚öÖÂMø UË!¨d GÚì ½½´{‚÷,“Eà c¸ ^ûi_`_0Ȇ {wjß„ ¹d.G÷A{i¶‚mòlhéòÈ2öÂ[¶v“ø UË ¨d^/½°‚;I·äÙd þY ‘2‘×a÷Ý(m®M•$Äò#†@cmíàÌ:Jà ºA_pÈž/a–S\âÂI[òl A|NC ¾¶Á½ÄE'H2IWÄÏ.ë°—¶ÛòlRÿÁ nöÒ[òl*C 3®µl UÚNß@‚îYU†@lNÁ½´¶ïÔ²†@h.“† tÚ[f²t‰°÷,¥Àdé°a.ÛAm’ÞM•G¡ §!/mí–T ©m‚¨ º‰8d„í#¯l\ ¾/e•/#†@h#¬6JkÓ a‹m"mP,|O@e‡ ¶eÐ ®ü› «! ‚}´"¶ÛPˆ,.qSÈ Æü Øk°î6ðYøŸEà 3^élT7RmWUá ep e½´C™×!¶Ò |´ @5‘ô½²nT‘B¦›´+\QòÐTÒ]„í“q "Oí©n” uì´)@5˃*VØTƒ§M°áü´,†@5¥|=׸m"Ýd> «! KÀNY ¬=SôÝ„‹r@,øƒ! ²R ûjºöH]Ë:2T ±Û oÓ`Á ‚ VºÇˆ2Ù!5[mì2pBÜ, ï–p`{mSÞì€À" +šyg €m2@ÞÞ•ëƒðd2RV¾ëÿ 倵\³‚†@míß׆nP‚ Vßü³ª†@2„·_ù èAu,ëa ¤|ì ÿïýÂܳ2%íÿn®]YCÈÏ¿ Ûúý²Ü ïˆbG)…ì>×¼6[¨þòq!8¸/ot›®Ñ¢#†LûôŸØ`¿„'ƒ'‡ïí Ùo@Ãä¸O~›ºb""$·8炸¥ÇGbúmÀÿwÜDDHAÈ%•¤‘ì"йßz؈iƒÁðû!îƒl­â‘×ÿúb"C4rÇ)ÊæH 0›dFGD “E•âÛÞ""A Ϲ+vuKá+ã§·«°Ì$C8ðÃA~»ß¶9ÌÈ!ðA‚ x‹‚}ça¥«÷ H‚ÉøA°Á„ µö[¾ƒÄEB¾«ioí4ÈieÅÈ ë¬_êµÿ ‰¡É9 "P_zN­‡ïÄHf¹œˆåyR /þ–÷Ó±nc—´„x_î׿éˆÊ‚ §0çsáH4 ýRÃ÷ñ˜/í_ß_L/÷¥ßÈfÁC‘ªd‘þµ†÷.è=“‚Cö˜_ôÒÿ„""F28.^#‚Øf{ ¬Ý?þ»éâ"g›Œ#<¹‘Ã$šîþ—~Јˆ“æ™#²;. GÈ67 ÿu¾ô""$4Pd|Àd"¥!¦ÜÇú¯u؈‘ È þÁî·¿-в>GDvGÃU5‚úúOuâ""RDpûü«ÿ­®ßþ›úþváÿ¢(ç=ÿ©f!-ûÃÿ˜‡wÿOÒî÷ôzU~éÖ»wþ}×ý«uì?õ{²>¿_×m½} çe–„}m-¸zºÿëÝ/ÿÊU¿ïNëx{ý §ÿÿ^Ù©ý×Oïúi¥¶ß_zëþÂÝ;°ßþíä6ÿÁ4Òí¾õÿÁïM»¶¾ßü'ÿà˜Kl7úWIõÿôÒðÝîý¯ÿþ‰0ë¶ 7ý¾ÿ¯õ‚¶ßÿêíÿÙcH/a¿^ûÿ‰G‘׆éý‡¯U÷¡ m¿}Ý'ÿ÷D,woþÿë­' ¸?O°õûÿ ƒ·§Úvÿÿ é8oOV×÷ÿÂöß÷`ÓOþë¤Ûkßa„õûwí[[a?ݶ½+{oþÃM?×ý{ûh4Eÿÿ¶ëï 4ë»ë÷OVKSªöÃNŸûýw¶ŸýD"Ý~ÿoß¼: µ¾¾¿’ïXm¯[ú÷òº_Û§öÿïðwMþ«[Âýß¿»ÿëþ›õþ»´¿ßÒo¦Xþþëpíuíºo÷ÿÞ©Ú _ßéº ›‚í«Û _÷õ|Gÿih†¡ÃƒKú}û¿ûkÈDY ¾ÿÿþÒÐ@ÜWÿªMÿû.Œ"á4œ5ëÿÿìÉBâ"ºa† ûý+ê¸õ¤ä_öïß¿ðºqÿ;P«Òÿü/ýºéÒÿ½pZOßi÷ÕÿôDr{÷ÿ{i-¿÷Aÿÿk¿ÿ¯¿®é†’Zÿ´½¯ûIƒWÿõÿ_uÛÿÂýÿÝ5ýýkÿ¾°“¿öÒ[ýû íS¯ÿ¯ü $Cc—ûXKÿö$¶¤EÿúÛK÷ÚV«ú÷ÿ†ƒWïMªïÎÅ2õiÿ¶Â¯–䌊؋¯ý.]òÜŽåoï®ÃK\ÈbBí¯º[`¿ïÿëŠh=ëÿIßöŸß¾º¶¾í'M_Ý-ÿ§öF97 ¹Â¯éXo÷ÓÄDþi:ÿÖÿ°ƒï¯YÝLº>.¿„oþˆ·oútºö“oÿA÷¿v¿Â{öÿôûïe˜{ÿÝHzÖkÿGEpjÖïAní¯ª†ÚÿI¿ÿ‚ÿ]&UäpráWú·ZAù9„" ýéÿý^ˆ}ÿ»ïý½ݯ]6ú¿þ·ÿL?ýSûÈl7þv‘'ÿé6£_X&ˆcí÷ßÝÓ†·ÿr&¾ŸúßðßûR”!ȼ]$Ûz×výtëýPˆÌ®¿Ö•¼?ïJÒ{ÿÿÿ~ï§Vþ½oþ«·k×ÚWýÿ¤µÛ÷éýÿÿWÛÿjúÿJBR?öÛÿî¡ÿÒ„0Ž£öÖ¿mFë{ýÕ4ÿ¿¥®µý(* =7ÿÃVû{þ“Vé÷ûì4­.«þ8½7¯ìƒçK_ü/WÿØ„Ã_ßéWßö¡á‚ý®°½¤û×°L†‡_öô¿¿xþ¿ûi7ÿƒ ­/®—u}ý5 _úí­¯”ëØU×ý+°¿ã{U¯þ©Å¦ßþ»Jÿû~î­0¬/ýu}u ®úí?÷¹A—ÍW½tMÿ¥„"A×P­í?{k úÿ„°ÿö• ø_¿ÃMõ·_Âÿ¥]ý6 ¿ ˜÷íÛïa„žúõÖÓÿX~¿­}í; ~ÿØ]?¨i&ƒ+×û_l-Þÿù\mcÛ† Ýþ¾ãûþMQéï}ýû}â?úýßï]]þþµÓýuÿõ­ïí÷¾»ïíÿÿ¯Þ½ýýýïØ÷{ÿÿ®½¿ÿõ§­Wë÷ÿ[öÿ÷ûÿÛwÿ[÷òÍö¿ßú¾÷Õþ¾ïÿ·oôþŸôý¿»Çïî•úõþ¿×ÛÿëOýþíõ__oý}«ùgáèâù—"6é{ÿÓÁžÎÜ'åÁWK¦½}qéÚ^ÛïݯôÕSïÿM¿öúí÷ø_ÿ„—ý?õu­Ûëð}¹ ÈëVßmzðÈlGI…¿þŸÞÃô=ÿéýpÓé+~ˆ“(woý½-ÿô„×î÷]¯_A÷þú[ýî•ûô½^ÿúoþïU·þ´ÿïô½ÿuo×ÿíÿ®ío­î»ÿêÿÿL%oý¿ÿïŽÿÝzÿö÷_þÿÿ¹ß;÷¯¿_¿¦ß®¼ûëí·»†ûýý7þûƒÿ½~ßúè‰÷¬u[÷îA¢Aÿ!'ïý6Ñ 9 ÿôîßü'h†Ôƒÿíu¿é8hƒ$§Âÿêßü'h‡ò’_Õ5¿M»là`ê ~¿×M·ßã#¨Ž¼/é/÷ëÈ@kìßi=·þÕƒ!©°¾ ýum5í¤È5yo›þ½ÿÌ‹‘0ͼ/õ[ºüQ ×dX2«+™þ»®Љ`hðzKVÞˆ_5L…²8…:Ú+¬†×oKÿé.'˜ ~ˆ7®»øN(ƒîª‚?½.O?ú ä6n›Ca«¥kmÿ¤,}ç+–†ÇþµNßö‚ÌØü%úÒuïý È4¥Ü ¿zôïÿ†CUW‚8äQ參wÿFCäpiðB ß z·ÿ¡ †™k zÓ {Þþ&AƒOaü¯·ïÃÊäÃ;×_vÿɰ eø ¿‚ë¶v!‘â;ÿ&ÅA³Ð+½¥ÓvD2 m¯ƒmetá£êºîƒƒËþÙoÈì¨ò¾³§¯]÷^¨3²ÁIx¿àˆhUþE?Ù1Ûmw¿gai:Ð.Õ¤é×^Øß‚ôÐOöØi¥ms$ºïÁøN›ÖÛê¿ °õÌGÂi>“»Óý+ Ží\'þöð¯ô¢kÁïJþíÒÿ)HæxŒ%lÑÁ¿÷¥»ù ´¡àzöþïAh4›wC>ôö¸n®Ûu[oiCÔ ¾.A…ÓûvÒýmdSª²Î!+ Ýr5·iÚ .¹[C>Áøðvë~úTÞˆa¸´_ä—zní¥þÈg"”&îC;q( _TC^I{¶í*õhJƒ÷‚^“V’«M]´®ûê··‚ @ålK°¨¼h2ùr0ö××w %÷‚ @‡éÈ,ȯGv^ûº oÄ_ ˆ?Û¾/bºÞÝkÈ0zÕ"€lÕ¿ý½/É13$á³á¤`5-»]êî‚}…øAÑQ—ïÛþí½o”±" mWÐi‰˜K„[m®½½/Ñ ë’³*DYˆ9[K÷÷ûÒü‚ðDö1'µª»_«{ éØ<%ôr C•°«WþíÕj›!–¹d" È×ÐA¸’Ù^›öÜ_h2 +‹A/ ƒÙ ­‹Ù w*úv­pd×¥¤†wÀ¯†\©[%w¶ÿgxˆàÑ‚ Û"…w@Û¡ý±a¥ˆ2 K¨„@‰#à›;¬56î¿{\ïPk ¼µwÙØŒŽ¿Ýë—§¦Äð¶×ýØahì˜5`%Üìl3”‘§¿÷a…ÎÆÃ3ÃgecBETÃ_öãÎÅC+‚òWî(†ÂÛßôáìì¤çbÀÇË>¦ò¢¶äíïù‘YÞv að˜y 0>o2N{{¦©… ã‚o«²êíÓá?Üì‹o;%X$?ÈmºW­Óê™HñD$Šà{H®YÃO´ŸëU\ùä+%á!8 Vwƒt¯þè-~Cd† t"ºØeàˆck-&ÝûÒÓod2¤®wXc¶@Î?M´›ýz [» Ó$ó°À‡á#²¬N"8>v¿{éR¾d\°| H1'xNéµïÒK P2R¤/ “]+é/ªÅL†§†$eÐA_!+Û«~û¤B`©æB Ó„½‚GMä¸ÐBv“»þ’i[™†nM¤-胫 Ý&õýU%ÁƒÁð‚aè†Äé¶ÖÓýPV‚ìÈ( áaôw!”9GOuïZW™*†…*á&ÄŸ'l+í~–—™%°A}oµw[«ëUI:+šŽÁ¿"Êøn®×¿õÒÊ˶‰ƒ°D]?T <« µm°­éߤ’§x¢a‚îˆhi¬*«ð–‚ï}Ö —°›ÉP{ÛTßýU.Í®´ƒè[r —Z·ëù:ÓT“l{‹¸`‚ÌŠ·ˆ÷}ߨé‘åK}‰K §A!qª}‡ùB#§aVÿ¡HÝÞÈi’°B “Û{èI쥈eG"?ê©;+‹†’Zðߦˆ`r‡+cQ¯XTÛårÀkLØl»íö±[&õ)̺¾ô·o+…š ö$\²ü7¿!˜ål@>Ðþ’¯oÐ"@4÷í;I‰=ÔCBåú_kI;jWY ÈA…ý¾Ô2 »·×Wãíås0P“ û}¤K†ÓÛOô·¶L†uÉ/ôÃPÊppýÖ´á¼·ðé0¿–[쇚Áªƒô·¦½¼ê%0¿–„Š"àÕ}WÝ$Ü›v·´#Vð >¼&ýÿ]s¹ƒBçd<&ˆÀÖúìË¥>Ñ 82;ðÛõWx" Ç Š€Öö ‹ä-…ámõé^Ü †2ãsUoL$S‚È« ÿ¹'w„Іµü0øpа+ï¯Ñð˜MµC@°@È6Ég•¢ÛzaHÒ#Gv¿Â“M¼ Á°l쪂rÊ­·AHLÁe[ÒöNAÝ„ ¢°Ý ø&Ý dp\‚ƒ7oý¤øVÜ L"fWŸ Û„(ªdpfû«útíµA‚Tw·Pié_ ˜ÿ×­ût';ðÛîH7H e9Òé/¥þï¾ ‚¬‰«½–] ØDxŸÃsjšoû§ íàgiÁ·ÈXc„Ÿ;A(ÆèG_ªÎÖ‘xº*Ä#Ævƒ„vo$t Ö!;V¶þõ±è®Xðd$Fß ƒè3ŽìMÎÒÿÛÁcg‚§oÒ „D3@ó]R­þí¶Yذmöß HC8äàƒZõz4yÙXm=¿ a'‘ö x2 ›[W},챜»ÿ»‚ <íH6ÿØ X„‘XÇUívH ¿,ƒÈ‡7 • ‚2TÂ5_«áó´ UjBã{V^FI@x§iîþèr¸€ÏádÙF®öƒ"ޱH®àxH}¿®ˆ/½9“‚³[~­¬ ŠäâA¿ö–WÔ3ù—‚¡ß¶Ö\¸Cì/ýöW8h\Ë@Vµí…‚&ÁúEr`xb , U†A•¿á×µað‚+‰á¢ÿap‚ó"௷÷Q¼ Šå@x0GW÷¢ òÊî+2& ÛuÛI‡H"¸V\#¨uú‚¸dJßí+´Oá º†ýZXDØ×2ku«i0ð‘n:#àA þøXJ³!pT«ûp¯!>‚€Oß\" lU82 «‚§ûayÐ81ºÑ €°DÙML‚’˜UÛz[¨EÀðWõÐ aPAy’ 2pg EvÔ0ðžÁ^»ÐF»2 Áen[ú ½[–àÛþÚæI`Ê—a¤ÞA–84½Ò-ÖlȬ¬®j Ÿm'°†ëð”<" ì“•ìë°é‡@ÑnfƒZï¥x U•æ kïo 6ð< ¬</+† U¸¦ô›ÿ¯ì¤k•ĺWi¼ ‰°0<K­&ðD0¦E t˜d›ú­„› à•]ÂoIh3¹Vã¯L=MŠÀñ¯Õ>dA COÄEÖÖ’lÌ.‚&Ê`~—é7‚W]•ÄÀ’ºØ ô†·{MæU’X2 ©v˜b̰›%ƒ0Kñaà‚oè® Dt— ô›ý½_qJ²º˜)× Ý¥ûy”À‹ü®° H.nááßûØ@›ªÁ†— È17„WíÐ Zµ•ÌÀ%ÂdÚÑŒÂ0ˆèÚ3L‡Óa×ï WŽ[À).‘ ŽËs@Ui‡„¤ ÜO÷™‚ÿ–óB莒á¶Ÿ(B|>v¶Zå¾ Êá&ÓßJA”ܳí`ˆ1µÁRr¤–úMõx RŽLÝOía­–åÁL-Rnéô‹sFˆ5™üt ü·& ¨‚êy\4W(tøA\†Ç;&; } o"Ò P¤MÈ7?ÔI»;, Z帘¡|U°Óû× ì•nðK¬·(‹à“Ѭè\ŠÈ_ä ÐD1²·å¸ )ß+½Ã;"¿§ŠàÈÈ'„ƒnÿ ±}5´Aö×@¢C<%Ûî˜ ¿ÒÎÌ`È,Ê ¸$í¾¹K ºí, WåºP,†A@çÑ0'w÷L%ú ,"ÚÉÓl·4‚h;{úwh5ÎÄrCòmˆ¸ðˆ8é¯{¬úL ½ÐieW„ tŸa•§ÂB-7¶ \&O;ÐîšÁXS„Coêi~ƒJôêžM†Eòn¬om7@Á-Õ¼*oÔ›„¥ðÂñú¼ï" $t·&É­‡´ ¶›]¤Ö­à„-ºu&Ã@W| ºd/>÷¢ 8L< ¾·&€WDÞ°a¶¢ô îB¡]” #oòlPˆWúa} ¢Ý@ÛY‘~¾ ƒ0ç >ƒú¶õa|4AÃÉ(·ù6Ãt÷ ¶ú /m6+MØÂ ¼‰ô¼·V`Ä;„†A‹ª~@¬sŽUœØ4Ð@Ü… m÷¦v¬ ª‚ Ã!í^Þ"$Ž@É7¸Lºl!!d%t½0Áè$âúê"C0r‹…§°DBب2œ= ›zõX‰uíiÃÚúb >-¿ßÉÈ<…vˆ#·®+ó² <è'mWîA q YfØŸD m²Oé†Tÿõ  XJ ¸irÍ6‚m°K×Á‡+ª¬TÖù/ûB"yf|¸-…/3 Â/â8bÒn ’TïÙØX  ÿ„ã’¹fèDD«Fä^0 `¼†(Réiä3ãפvH„àcß!Û‹üDDŠç„.!™ ¹pSp4Û Á÷;ZÅàŠ%z þ„ML¸d‹"*EªáðÏoêvhŸB’Ó×ìHhŒ":.]ÑgÒÕ=6.¿ú“Z_Ј‰29ò8±£œrdeðéˆ-ÿ2ð<7Ø TKÚk Râ"IÅ㙢"A)ÉA ¢Ý ˜_ø}V¨>D'üDMhÄu"á„""CP{ X%kèËPYáU;T™†ÖøˆƒÈ.8ä3¹œ¡Ê”s…(+þÃð%á5üD(†Ë„ ¡ÈÝAoû{$³º÷D ú_Ý""UätHDpÈK‚Úýø Ih’ø ¶ ½iÃL&¡_Ð*¦%^‚þþÁZ¦’½Öƒ"ìS úÖÂKô¬3íM= ˃qÁ%UúXô—ðA0’ý%§…ü ·_´ººý„4‚úKñï __ ¨‰*ê´ t¿¤Ú"‚‘ º—ô½+ô´ÓÞþõý.ÿÚè/ÒÿÿaªUév—þÂO¯záµÿ¨"Ú]BëIn¿¾Õ-í&ßïúÚH/Òí®V«w ¿ï¾}/׿³[„0Zð‚ô®-ýJëKþ—ÚRÇ×õÚþú-ÄÆ(%øK½«þ‘e AH4¤SïJ¯+š‚åâ;)×ÿ@­i+ý/LÉ( ÿøAXMª_Òï¿oà‚µ $¯è+õn©Wô»[ïøAIÔ/éw]÷ðJé­z×ÖAü‚ç÷ýÚè†ÁÊœ9Ü¡×éwÁû®™n: >ñz\Œ|œ`¨5ßZB¯þ‚è:\&ƒòßv ëéÝ/¿…Aµø@¾¡'é{Õ´ý7þ»OZõu÷úA_”# Ÿz ÝkÕ¶ý‚þ"#®—·ßíýAк³›,µ´µ_×÷Ð%_¿ ¾ëõoî kþ¾ë׆ÿa+ýô¾ëý¾úýú[ºÿÃë„›_ôoïwß‚ ÿÒöÒÿoöZÿ —õoôRCÿô¿¯öëáMÉÇ«Òöÿ·¯·¯ºt¾×þ÷é+kÿ¥í¥¿·ÝÁ*ë¿Ò~?öÿ„ mzîÒ÷µ{»ê-ëú¤¾¿»þ—{Ú_¿„áõº¯O¥ïú¯| ]×éé{ÿwÕAºýô‚¾¿÷î—ÿúU¿í5ý-´¼È¡W„¾¿ §;‚$Ͼ w_ßkïøˆü [kØþ•î¾—Â þ¿Ai×÷ð‚ÛKÿKÿÿ„»ÿô½íØKŠþµî“ÿánÿzZoÿð‚ÝÒí¤ïè ¿ö´´ÃIý{*¯ÓÒì¿¥»ûè/¥ÿ‚ ßxSE/ú__ý;¿{¥´O ×ý,2œ¦çµú +íþ¸¯Áý~—Ûü «_´žé~ßëÐ_ïÐ%¯oH%ûû-÷^ëï^é~ð—ÿ ˆlgo­t–}ÒºA¿ºýýA 4žõ¥ÿð‚ÇþÒÐì žµÿýù‘tW¾Zÿâ’„G2ë´ð–ÿôDkô¸/»„¿ÒÇÒá/ôºß‚ ÿªÿ ¿ÒïøAWé_ý/ô¾ú„ ¯þ .ø_®è­h/þIþ—PAnž‘3]_ ý/ë¸A?éÿA{éð—ú^ÿ/\$úwÂ_½.ÿA{á-×áú×Òð—ú [îvV;Ý{ߥþ–ÿÐ[úOÿ å ü%×Ó‚†i—½/þµúÓþ+ÿ„ ¯×áÂ_ø%ý¤ý| _á/ºè%ú]H¤½ï„¿Ò«þO®•ÿ;x@½õÿ§@—ú_ôð—ö‚ÿö+ý~ÿ„~‚úþ]z^½ô¿×ÿáïÒ÷þ‚×Òý÷” ÊÞð‚ÿú]W_úÁ§á/ÿ„ ßÒÿ¾‚ôÝwÿ„•_…úü ¾µ×넟ô¿ï _jßþ ~è/ÛøAýõð}(KÿØK÷…ÿôÞþ/ô¿û„¿ÒþúE eûéòœ´÷¯õOA„ÿu Kÿ¯úT‚öôÿ¬_á¯MÞ‚÷ú  —wI=­øB‚ºoKKý%WÚ[ÿH"Ú`Ý^·ÿH®•o¥_Ý/½÷ÓIý%ÿ† Wݯþ4íéðAA/¯‘!HÍ"ÒX÷o¯¿ Â _Û ¯ßi¦¯}÷á>ú ÿ½ Û´»ü6á%¤ê¿õu m°ôWì7":öÝ/aè$>Þ—þCŽö×Òí| Ý„¥íé[ý¦Ø°@·{KH­/áô ï ¸¿ØmMÒ ½?a •ÛzéuÛÁ*ý_Õè%»}[ÿ·@½¼+ßîÝ/½%öõáíéß°—¿_úi­é?¬íBw É^øA-oÄ%íÚ]þÂ[·×ý4·¥ôµ/oKï¨A{éåó/½.÷¤ØAnÞ–Ö´œ µè%ïÖÂ!š$fšßoA~´­%í»KÓZ¶$î›ÒÖ’…°—þ»ák‚ ko-p\%ûn½à¿A_ý7T4ý¼%í„¡„  ·ÛÒõ-ÍCJ"]íÕ~ .¯Ò_¡®Ý žð°w·¥Tà”%¿zý„ ´¶ôjWJ ßô½ B ½¼%ù\¨aûÿ‚)Ú ]íè.‡Cm¹i‘,ÒïK| P¡ûvðl ¿}/Êæ¶¡ÞßWà–Ð[÷„jW. •íõø ©¥ÿ¥øD6ÍB`~Þ—nÓk°•ûá+\%@Ë m%øAb ‹§Zm4ŸÊüzöÝ%¬®à©AWúOx ¨/¶ô¿†Ù°Ä¯ßKk/ïKðD6Í•Á{·¥Þ*êßþ‚×½á/Á ¿oA~dZ ´íé~¿uKôChØ©ÿ¯æB ©K½½/Ð-n÷êÞ’ù‘„ÃbEÿÐOæJKÕ‡×èAý/P•j‚·…ÝÌ«ZÞ úZà•?oA_„APÞÕ½/Ð*Ò| ¿2ðT÷…»K»†Ñ¹ øIÿ¬¯i7¥]!´nŸô¯Jü*øJô·Â® Ý%®vJtATsŽ}…ðA= ¿ d56iÐW¥ùØX*ä2Ç<³ ›ÒÞÁT7 †yi´ éu ‰ w ôR[éGÂ]¤?‹ßÐMéz‚ZTá/ Ún¥áßöá· Ÿ }UÂß ì ¾'ëó²à©ô›ÂZáÚ72ðI¼%~p‚¾«ÁÞ|%¾Ò ›ëðD6™&ú ð—à‚øA7¥ø « ¯Kð{ úWáÝ$Ý¥öVAiÐ+Ò5'ð„Á&ô…| ¾‚¼%ø _ 7¥ø ¾^“Þ/i?U¨ _&ôºÁô›ÒÝ ÞVá+U†Û…ô›Z¯ü}/Áô ô¿*[áÛ¥w µ¤ú_„ð•õø µ¤Þû!‚·Â ô¿·„›Òô@º ›Òø‚ô^ø^ ¾¾ N“¨KÐ_ z^l³K ŒÃ¶‚ô‡Þ«ÑVQ„ ð–à‚ø$ÿª ®ÊOÒo yn¦ ¿ 7¥zôè/ k'ºðDÙEo+Â^ |$Ý%àˆ+²•ú ô«A}oKrÜnA}Þ–¨BÞ = · ZzMáúOÕ`‚öPõðA|mÒðDLÞZ¥áOI¼%à| ŸJðDÚ?ÐL>¼-aúU„ðKÒøZÐMá+ËsPdÞ‚o_+¥ƒ/Á[ªð@½ ¯@¼]¤Ÿ x@¾oKp| ].¥pPeøA7Iz á+¤¼®T WÐW¥áð“u^*è&á$ø" Mµ¥nð–ð‚~àˆ)4)jWA/.é7¥åp`¥Õ'ÂøAw&ê·ƒ#A“á/KÊú'°7Iv/¤ú Á$g+iẠ7¥à}&ÚßíˆIp@· ›_,ƒ 0¨$Ú^X2?¥i>6rñ#iŠ ‚t‚Y F™†+Jó  8Èm´ËÂN•fE€qa‘ÖZ^,^“i^°È4þºÖd*¶›Â ÒðJÈ´’é:W™Ä›L ðˆi WÂ@ôå4‚¡&‚ Á+ð—]‚EAÄi Â(tÒúGQ:èºÐ„è.6¬%Ix ¤Ø¨ZÒ^›þ¤½)6TÖi/@˜jM–€û&’¼Rn8ºA…U‚&øê—„›Ð°‚]³µ°+ƒ)ȳAi ½à~]h%èì”dÝ i» íša‚ z MÅò8˜ô—L%bEfë$ÝÁYf+w zf¢Wè(žÖ’~v* 0e9Ó4z }(†IÈ33à’~v4qd™Š´_²h ä{I| ¡œq"³ ¡$ïOåAÖ)dûA ~vœ %R#á¹aƒ<¼ ¢ I³é ³`W‚,@zÁ„‡6èØå3>D #aœïÁjYÀòÐE™6ˆöFå7Rá+fC<¸ô‚„"EŒr›‰s±Áj'ÀñåsPhN"C8æˆÜuh²¾hD†V¹_)@Y,£ûKYyXx3Ž@óg„ž"@¸æƒÉgH(œÇ‚XB$Yäʘ3Ë(˜=#­ Í¥,¥yÖBèÚÇA™›YeÇ„¸Î9Àø ¥•LA8D¸1eA[~¦hBÊJ‡Â R D†qÊ¥”ÈŽðº $ƒƒàˆ33L‡Ãõ¤Äƒ¹Üƒãt¥¢€x|Z ˆjrôd˜¬Ö$63‚RÑQ‘Àñ42¡µ6 Q>‹„‘ PG²œìÈf³’LD|;ppDÙ … ¨ÂÚLHƒ‘·ø@¥ ( Gôµ H5œë‰3€}- ˆŽ‡.´´qÄ‚ãz„(ƒv] !â8A¬‘òèÇ,æ x}¤"Fò8C4ÔªYøaia!<Œf# ¸A¨Ä}ã –tàÆd ´ˆ‰:6¢8@ÜÚ3PRϨRYNi‰­‘â;#´ ìÄGGãhöRÎÐZ "&y¼Ž¨" @ðnҲΆ0KU(G„GˆàK%œP¸]$""CÎ">GPÁ”äe¤ ¸I‰‹™p%Â?àx9 —IÀ”(Ë:˜ 6]$M¾.Ð×–u€< –¡"³.ÑÁ<3²)´!!#.ÀV–cáŒ%¤$¸ij'‘ÀðúT‘7ŒÙ @ž È2 ¤‚#Ô4 ÊÙB°•…,€FGQÄðA—ÒF|Œ 6K0  öQ ‹’Dè‹äp4 ’ÌÀŠ `ƒHDÔFÌe˜T†Œ%kBA¢8†”³@ðÐGXH¬¢Î•öMy€3 ,Â@<3á!íèJ†]Ál6嘶† ¼ ‡L ‰­¸-‹,ÓP<è+qHDÓ1—F$HêY¼†…A]¤"%@d–jð`8JÝ"ÌI‘à ¡”âE7I HGzMYx¸d”LÀðÑ„©½!PdÍ0†Ì TÞ¥š6‹™€<6¥š&†}·„„MHÂ0ƒÊî ºÐ[zDÔÆ`­!‘ÖÛt„H„}‘ȸ’ÍRÀ‚:Ð[zˆˆË4”øKoJY©`xÒVÓ…-!ÀðÑ„zÁ• †ÂJݤOà£A~”´«Á¾Uáe¤\[è)i$Ã)NÕ†£MiK*¢>‹q`< ÚBÒ|D·+ÈàxÐCA)eKB á”ÝnÐRʨ„·$ÀÁ…H.¢M JÂRʪ2°á r›•°‚t¸‹6â¨$’Ä›V†f´¥¦€<3-tk)iÖ†S¥¥Ë)b&Åh¸Ëê–B HFó‚J”I²Èô¥,Ä d ÅÌà‚Ò‰\HþµƒÜ ©(2†`ä—, ´ Zk(¸ *"Ò0­(žÁ«¯JZœ†f!Ò–¡ÀðjÒÖZšàÕ„¥&Éyh/‘ÀðhÒÂZÀxf`‚Ò‰hÁ§KJZ…xf‘Ö´¥¨ƒNd],µÀðÍÖ % î@ðh‘]Ó¨šàÑ„“ÂRÕ€<p‚NÒƒ x5É[A@ÂRÓHŽÔ€ði IbªvJƒNMBÑÙ ºL‡ó(Á£"Ó&ê È {3i RÕÃK rÕÁ¥ÂK-U<ŽƒQaQ8ƒZ„¸0xATµœ ^-iáªiá%–¶€xjvpÊy86ñ8Œá©„¸†XA\µ„€ð×a¤²Ö*ÃTºˆ+–°XEä“–±(ÕpdÐ5 2=W-qÀðmArטdt‚Xb ¸ò׬2Lµ*–¸@È Á…-p È R× €rÔ!B–¹Hd P(eNàW!˜¹"#à§ '€ðUAA”8*‰à<d4À"Ø>GÁ½Dðˆ.Ã)Ô(Ÿé K`l¡C ¥°V ¥° U-…@Ôj[ A˜2Ø4 Ùð°fóeùáuÿÿÿÿÿù«kÇÿ >ÔÇÿÿËX-GÿÿÿÿäÙêQòí@L”‹ >Ô)œ€ûL¾JM9öt¦Ÿ >Í¥Ä-4ùöjpØTÃ-}Ð0ƒµOf ©ƒB hPËÇÙ‘Ù4Ða;´ø!°A Â 4û¹öRF8i¦˜Oׂš ;MȲèˆí4õM4ト>᪅_^®ºiÛvµ^ÒM¤¾ýµîÛïþÚJ©ß½µ½iwz¾Ú«­Ì§È(!®¿öÖÑP@÷wû‚´“‚x nßëÈr” á©íSÿZMÒWÿ~AU¤'mÿõÝ0¶íoþ×Aª{ÖÿºÐ¯é¯úU¦ÓþYµzïuU}òÍ )’">GËz#ÙŽûi~Û÷‚K‘HȼR‚Ȱ.w r>KÅ`—_mZT÷¢}GA2 !&ƒC3c”8†GA&24DH1öþR28_‡Óð…§a˜A¦VB0špaˆlM–>“È€1܃«ðši§v!4ÓAØOY%á?¦:ý÷ Õ0ŸÝ„0ò;¤ÿ}zªéÝ Õ8íÒýÓ ôýoµÖí:¾¯_Þ>·Ü;ÉROíSwÒ¾ÿ{ô×ߊßáWÿÿuëÝþµÞ·þµßÓUü'þ¿vC¿ë¥Úß_¯~©Ç÷öëÿ¤¾ð¯Üvî»ÿí?Kÿý4Þ¯Ú¿ Ã×}ðDt·o¥×ÛÚî½!=ê¾Á úzð“»úÝoòÇ8þ@ƒ"x¿ë‚×m]îïßBý"Ã_è‚€üƒx =°Õ¯ð÷ª×ðCÿyÚx{K8›NC- G½íôÁHr³_mZX¿z]Öþ” úvÃØawNûþô½õ„úk Xawï~¶´Âí°¬×È4ŽïþÂíÿý^šÃ.–=ä3‡¦œ|zÝoÝÄS[ …¿µù ÀµõÒöˆgº½[Ó]½ÿ†¿Òý ›Ú ~Ûxz}h?û§á¤¶š§ú°û_º×ÿ̤ûØ9üÃÃÖôÿ{_ÿõø‡Aäé÷­ì>.¿ûÿ¾Òvƒ kz¾µ·ûßö“{´Óûµa¯ÿ÷^ýumU4Ði«û ÿýþÒn Ó† ‚*âîô«þßêÒzv0T_õ¯ï·á ÁB0ýµ×ðÿ½&ö„oÃj=]ÞÿU½8h’!ý„ð–¿û着 †sCvj°Þ“ð®êëi­„¡"Äaý®@¸LuWòÿM0ƒ#ÔÄ7÷yÔ†…šðŒÃ>Û´ÓB#u¯®At·ôßÐh2s¹JÂþ×Wî»§l!ýwûwÿl§Uýëî×öÄe›û_}Ý?Ý=kÞ»vº»p‡ï÷‘Ó Üh0°×ºý? Qpd> Žä¸z÷ø‰:09D„3G)lèuÿî â÷Ùºõ_ÃmëûÝ]½{zÖŸ{ÿÿûöítúzkýúÞûÿøk·°D}Uë÷j·×½?¸vªžjŸýªk{]uÓÐp§ Z§i§j¶ž©¨5°©¦©Ú  aÓ K4âb!„Ðe8&ˆg…hŽ""B‘Œdàai¦¹åâX2ЃÄDD|ò‚j?ÿÿþ@}•…@9¬4ÉA  a°‰™æ .S†0Ë*ÃÛIU;ï÷¶·¢ .ïWÛUu¢ƒ”ù5×þÚÚ `ŠîÿpV’pO ÛýyîR\ Õ=ªá I šJÿïÈ0*´ƒ¤í¿þ»¦Ý­ÿÚè5Ozß÷Zý5ÿJ´ÚË6¯]¾Y¤2DGÈùoD{1ßm/Û~ð@Ér)Š@0BÎôGÉx¬s²ëí«JžôC@ï Èè&A„#bÐ`ˆflr‡Èè dÀFˆ‰>ßÊFG ðú~´ì Ó4ÊÒFN Ñ ‰²ÇÁÒy;aÃU~M4àîÄ&šh; ë Ò¼'ôÇ_¾ô¦û°ƒ†¾@‡tŸï¯UOý;´§ºOÿºa>Ÿ­öºÝ§WÕëûÇÖû‡y*IýªnúWßï~šûñ[ü*ÿÿî½{¿Ö»ÖïÿÖ»új¿„ÿ×îÂ(wýoô»[ëõïÕ8þþÓ½ô—ÞûŽÝ×ý§éÿ¦›ÕûWäsºï¾Ž–íôºû{]פ'½WØ!_O^w[­ñþC8çÈdC/ýpZàí«½Ýûè_¤@¸kýPo'¶µþõZþá À»OigiÈe´÷½¾/ø)Vkí«KáïOëºßÒ!?NØ{ .éÃßÞ—¾°ŸMa« .ýïÖÖ“¯øOý¶0:ù‘Ýáߨ]¿ÿ«ÓXeÒǼ†s£@"ðôÓƒ¯[­û¸Škt·áö¿!˜¾º^Ñ ÷W«zk·¿ð×ú_´{A¯ÛoO­ÿtü4ƒvÓTÿVk÷Zÿòƒ”Ÿr?˜xzÞŸïkÿþ¿è<ƒÝ>õ½‡Å×ÿ÷ÚNÐamoWÖ¶ÿ{þÒovšv¬5ÿþëß®­ª¦š 5a_ÿ¿ÚMÓ´pÂa0E\]þ•ÛýZON ƒƒB#oëþµýöü4 hF¶ºþ÷¤ÞÐ0ƒC òr Q§«»ßê·§ @Ä?°ž×ÿ}õUAÎhaÎÍVÒ~Ó½]m5°ƒ´$P8Œ?µÈ .ªþC`ÿé¦dz˜p†þï @г^˜gÛvšhDnµõÈ.–þ›ú Cw)X_Úêý×tí„""?®ÿnÿí”꿽}ÚþØŒ³cßkï»§û¢'­{×n×Wnýþò:d÷_§á‘ã . ‡Á‘À¼‚×^ÿ'B(†háÅ!í¿ýÄ^û `w^«øm½qÿ{«·¯oZÓïÿÿ~Ý®ŸOM¿[ßÿ vöª½~íVú÷§÷ÕSÃíSÿµMok®ºzTá«Tí4íVÓÕ5¶4Õ;A‚d :aa©fœLD0š § Ñ ã ЭQÄDHR#£‚ ƒ˜t  4Ââ"""w<¼KB¢:`¸ˆˆþ@pMGÿþ  endstream endobj 10 0 obj 46 endobj 11 0 obj 39392 endobj 4 0 obj << /XObject << /Im3 3 0 R >> /ProcSet [ /PDF ] >> endobj 17 0 obj << /Length 73 /Filter /FlateDecode >> stream xÚ3T0BC]=ccsebl©œËUÈe”ÐÉTàAÐ300šFbcS­ï™k¦à’χ é@)wœ4D˜! endstream endobj 16 0 obj << /Type /Page /Contents 17 0 R /Resources 15 0 R /MediaBox [0 0 486.019 632.508] /Parent 7 0 R >> endobj 14 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/var/tmp/10089666731916source2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 18 0 R /BBox [0 0 486.02 632.50999] /Resources << /XObject << /Im1 19 0 R >>/ProcSet [ /PDF /ImageB ] >> /Filter /FlateDecode /Length 20 0 R >> stream H‰*äå2±0Ó30R0B3c#=SC039——Kß3×PÁ%Ÿ—+— À¢2¹ endstream endobj 18 0 obj << /ModDate (D:20020211151431+01'00') /CreationDate (D:20020211151405+01'00') /Creator (Acrobat 5.0 Image Conversion Plug-in for Windows) /Producer (Acrobat 5.0 Image Conversion Plug-in for Windows) >> endobj 19 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Width 4051 /Height 5272 /BitsPerComponent 1 /Decode [ 1 0] /Filter /CCITTFaxDecode /DecodeParms << /K -1 /Columns 4051 /Rows 5272 /BlackIs1 true >> /ColorSpace /DeviceGray /Length 21 0 R >> stream ÿ–Ú’ñþZ6ÑD~@`"–Z!&Ú£%EË`-G 8H£ò£-1' Ó¯Þ¯÷kzûü¦—@TuÇE0]q娑ù¨AþÒð‡ÑfƒEsUáôº]¢ÀÅá{C¡òÐT¹év 8½ ®Jí>ƒ4EÖÑA‘Öâ/ wrÒRþƒŽäaq­=úÓÿ!ª§ˆùžV‡8æp¢ Õ«ûëÿÿÿïëÿïÿÿ–jÚå ÿÿÿÿÿÿÿÿÿÿþ[‹¯ñÿÿÿÿ)‚µ±å²Z´?ý~Z‹ cþ¿-BµÇÿ¾A¯÷¯þÿÖÿÿÿÿ÷þ¿Ë4UÊrÍÃàà>Ë…š¡ÀðΈ;H  ,Ú‘p<2б–ixiÈ >ÈJY‰Hœ °ˆ >Ȧ'ðSD  °ì…e˜–àÔ2qÁbà‰Ä"€Ì07–`.GÁ(6D™f˜RÌ*<†Â 2¬Èèe˜* ÑIH RÌÄ á²$ ’Ì.„A‰€0Îä}“ y­Ã¶,§ ÊìŽY„ã‚byÁ\Ë2Ñp<’pa‰ðd#©fì ¤X`Ã!`Ë,ë9 Æœ; ›––u <ÐUƒ ’‚”}­°Ã+`Ë,âàO²‡ 070YÄ›ìCgn ¤~YÔøKpà Iù¸ÂÎÀðÜ ½†wÀÊ_-2U,äáº[eP̈øÎÅÐ" C‚Il3ºdpe.¢YRÐ¥» N”Éxa†@àÍ– BÀ3%á†v\ % ¶. émƒv ŒpB@‘Ê‘5퓉hÂRÛg‚€>l6Z`%áƒàË-hBO†ÎÅ’Z*¤•°ÃS¹h8,%Û `墢Ì•†¼²™‚Â[†2œ²’äp(#á/ 13¹eS]°Ã;Y ¢¦ªYA¡ᆠË)@%àÃYF€­-¶ÃYUZ^0nYD9}-°ÃaË-¬RðÁ†Yo‚ÂêK°`Áƒ–C@Z#¤špm¸D 2 ­ƒnˆ27Ã;ZäuD5‡;Xl‡A &Áƒˆ4võp`Û2 TC)¸4í°òÌTTCCs¬0Ø¥Dn7pÃÒ„ v 2dÝ$œaƒHŽ©%a°ßé,0aƒºI6`Ü*%a† «ƒaº aƒaÕ'a†‚K aÂA`à : Ãa†SJ¨' 2@>Þ¢l}•†7IÃÄ’;¯Á† $“aà :¥y—pà‚î$²[Zt’»2 °t’݆ :¥¶ 0Ã,¤Õ$º 0ÃØÚH%¶Á†A$¸m‡’jÁƒ †X®¦‚K¶ 7ZMÁ³µ 1 Ul6éàÛz^Ãv´ ! –á†>¸º Ø0ÃH%¸`Á‡I/`Û¤“¶ 0t^‡Ità 2‡zKpÃKl2{YT— ƒtK°`Ø:E¸Kvl€ÅµHRì6Ãé$îd² i « ƒI/d2ö²–ÛaºKრ: ¶Êæ¡”:J»a‡ W†0è$aƒ Ò n aÒAxl0eªP©%mƒ1,Ô®—[ 0ýàØli/n]L «pb3µ/P‚톤k`é%¶0ÝaÒK 0ÁÂI8n’VÃ;Yô‚X`Á‡I&Á†:Iaƒvà ‡I°aº®4‚NÁÒÈ4l”%°a¬xI#*æÃÝ$åp°Ê :$­°a‡I/l:Ixa†$®Ã ‡I*pÁƒJðà ®¨—l6= ^ ’ pÃ$» :InÃ;%ô’ì`Èý–$ðÁ†á$¼0Á‡KÛaÒ { ƒ ‚ › 0n•[ƒ :Iw(vt’ñdvJé%Øa†KpØ0á —°ä2Àc­°Áƒ’^[¨€n’ ¶A¯j¡ÒKà :Kn ƒnË ’ða‘ÑÙ`¤‚Û Iì¤8I*°Ø0é%¶Ût’ðà :„½† ’wg ¯±0t—³µb ‚þC3caÐH&°ˆ.¾3± /I!a„A Ãn’é™,28.,†žÌI¦d+’à ۰€á ² †t˜0ô dB#; ®9÷Pt’Q³Rçf™¢ >T©Z; ÃD‚ÎÈAR ÙØ.ƒ[ ´9÷0uJá6v—Á¶$]à‚I¤å)3`x4‘Ⱦ`n’V­•DDá¡&@ððQ:I'¶E²àx7#x“Jt’Dn²ä|yÃ)h:H$ƒ¬ƒŽLr×<IÂKIˆ> û0Ñe9N@ðu@é ’mdϵ7E•ÁC¤•9)Èàòã‚HLÀðp`è$·#3á› ¤9¦UHÐÒI0Ë£À­ Ò9vT†‘(ÂÈê ±Ê¥"Z‚1t¡çK²@I t‚HV&)`x@`á$‹wíÒ!—íÀñXt”®±‘Áª@}!ø0ð’+”ÅÁZC^¶©ê‡$‘]\l $4 RHì"#äGØ:IÐ:A!8ŠG­ Œ–ðlŠAðŽÅÑp<4Ë\µRS!d]ˆàx2 ­$ˆ2‡ HêHÈC.¦I.:>†XÒ LÌàÈg™£SÅÑ œÙ˜T­™p<ðˆzb’ x!$ŽÔÀðÕ#³D6“I4e  i#³ŽËá¬c<„[ 4ÎÈG~ƒÂYÜÀðS#˜‹¡…T'hÃ#¸ÃXÂ#˜ÙàÃA,Èl$Jˆ¼Gá•Ù  ÂAdk9#²@>©n\5HÌàÁˆÒ—ßA%àÒ;! ¥×4¡#%€<ƒe¿£Ž Ã/ߤd4@ðnf]8P„HD5a¯ô52+Ã, 7A:_Ýd*aß„›Kþ‘Ð á‡A´¿éÃ8†V®—itŒ„àá·" î“iÂFAàÀ`Êô 6‘´¿áL  åÐ0Ì•&ë§ëuè##P<ÃNÚµÂ_]#µ”GÁ€ÃV÷JÒÕzGa@x;ê÷KÒ¨A•àÜïêÒ»K¤v*†‡ºZ]‚Ý D¿ï½Ò¨2àGS´ùp< ÿ¥Ä/ì4H>)q÷ÚÝuÔ=ŽRâÍzzp‚zðŽìGb 7½¿K®‘TÌáœCð— „‚„ooÿ×ø (MR%€xlAªB28{®—CXCR&†Æö¯½Òüa"£.†€ÁöÞߥü)ƒpßMýiuÔÚ'Ã@`ü7÷„¿,Šj„Hº[ööþ»Ò„@ðT6°ÿÿKÝ* xiT°öûKô¨à`؃\£·ý½z x76~ûßþ•<ÊÈ0ý¾ëA{Ž@øs›,÷ßÒN’,€« ´oaýûéw¥'7CööíR×肸åˆ!¥²W·ýSTþA°rÀƒöþø[éd Ëö~ ÷Ùêÿ»è/üƒé`ëo»H%§ùdw{~úÿè0뽪XOî?míé-†Ã老ÿA¿}ÛT¿ø`߆®Ý ¶ޱì? ÷¤–Í/ÈZ¹d u¶» $±øaµÆÛi%ì $Øc¿¥^<0{¸a¨Kô=û$¿°÷°Á ’ýƒ 7pÁ„ªþ =ÛažÂUè0é¬1 /àÃïitËTIm‡aí‚.‹T¾5iÃI}>ƒiöLÃ:_kØ4 ÝêÝŠ¹dS $ßt„Rc6¡Û¾YÊ?“cDÁív—ˆñ ‘Ó ì0Òþƒg¥5¶þD[a×Ü7m/«a¤ÿ 6Û  =†—òËá¥aƒ^¸d5$%mßmØ4¿†d2€•|m°i`ì=_ÛÃ¥ü²  Ãv‚_Äv_á†àÂAopaÙÙt\×ûˆ µàÃpµuaÚ_pÁºW첋§ ôÃl%ü3KªŒ7Kûÿì„|6õ¿¥kÁ‡¤–ý‡ˆKø6GM¥÷bþød5ö¦ÒþZ,5].¶ÁÚ]öÝü; kÁ½/á†é~˜v—öS‡¥üX6Òwᇥü0í%øaºÿ „öÝ.ø6GZë¶.á Òýv—òÐXš_Ønë·¯ö ´¿ƒÖü´ƒaýA·KË\m}ƒÂøûiPÃt¿àô¿ìƒj[Ký†—ú 7K¿`úûá·K;DE1õØdu¥‘DGˆñVЇï m¥‚#Ö‹h".`ð•§o¡Cl¥ÚU¯Á‡×†ƒ õ†ì%Ó ¯ø0úÝÚßì7$õ_ðÁÚîÿü0n–ßVýÃ…¿_ðaØJÝ¿þn–í¥ûä¿ßá»T ÝJ6Ò?ÿÐ`ô–Û¯îtoçeï`úNíÿu„o¦=w 7Im¿¿`ݤˆg¿Uü0v’ ¼ú÷ü0xJBjîÒÿ°v’M·ùiÔ—àÜU>ŸCôƒTÛ}nS‹Ü1I6úøO[_ÝzÓV·uKûà×ßß]Áª{Oø/µüÚ_ í}¤þ¨/ƒ^ôÚýkÕÿÝ-Ó í&ÿ |WOégu«Avšuºô¸‡¿[KÌ,àÕ«{ÿá.Ö—]bC +Vҵĺ¢)ðí…Õ†¹Úéðv (k„Š ø5Å?_!–Õ2Ý®±¾Ýóºû^ÓM{¯ÁÚëׇjŸä'¯† ë¶ ùh/¸aoÈK ¸Oa5½Çûµ×Úÿi§÷Kÿù‘*¦êd°»úk†”k÷kNÒÿO§°ýë´Õ]¥þÿ[Kí;M9ØÄ[ëê—â*)Ö·_ÓØIzÿdÓ‘L-¿Zˆ×»ßK_’ÅZ_ìm?þº[ëËRi5ÿã×î»Kÿª•…ý¥ãWúëþÕ~ªõü‚ö¿ÿþµÿýµë¶öCÿÄuÿ¾—ÿëïÿ–aJÿø§ûþ—ékUßùna_ýÿ¿â¿¿ÿ·ßõ»ýï¥_]×ïôúûÿ¿ý}ß}ªÿ¯é¯»ãÿêõß×÷þY^ñú_[¿úõÿÿó"µÿ®þMÊÿêêŸïZOù~C_ûÅ„=Ë:Âk×øý/ÿ¥þZbJ®?ã×ëÿßþºÿ÷ÿÿïïõÿýÞûýýÿõÿïÿÿÿõÿõßÿ­ÿÿÿÿÿíþ¿ýî¿­ßÿßÿÿü¨ÈèÁ‘°‹ÿЋÿï¿þ¿¿÷ oÿáWÿv®ûûU×ýßÿú_ûÛëý__ÿm­÷V¥¨ _]Òñ¯ÝÿßWZ~ºå¹ÕßA½xýû¯ùdB¤ýþ£¦Úßý?þîˆt7¥ÿ ƒÚõøTßOõnþþ“ºÿË)¥·uõz§~­øþ—õK¾é{Û¥WþþÚÿ_Òéú÷å þZ Ú¿ôú´­/Ý«ôÿ¦ÿòÖP¾ºÝxÿºmmº½SÿaÒV½÷á´ÚWÿ`Èð,׈ªþå”Bm¦ºêt×ÿ^×éá…Jÿ½§íúõÖ·ö½~šôŸÿÝÚ,ÀU¾¼~Ÿµý/ß¾Ýô׿ý®¿oõZÿ¾ŸWôë¿ýÿûÿ®¿ým?ÿ„_Ôïú„÷yoï÷‡ÿêׯêè„ðûþ–‚!‹î¾ºmurÞï¶“{ù\Ð'ú{K-€„¥q¸ØÈàÓûIÎÁÞʆå{F`éêÆ¾jd-‘óc8‚Ž“Ó߆ÛÌŽ‰ÀHëÿз;[G"á õÝuÉh&vR âý6·ü4ììÕæ28.G €7þûíÚäm‘Ñ#åÅ0 ÓÕÿûJˆ‰ ’sGUwïAáX" DÎå'~¾µÃt¡È‘ÌJ«úûir—frvk9£ýé~õÈdðw>ÁC•Ëûk¾ZêHÂ#‡9_R†_r¥ qÒ{WòÖKޱH௯ yPæsÙRuíµú-b0) ËöA^ ³.ïïikeªŽF#ÈÀdÕà ÜrÜë×m*ܵuÎ#aHâ"?È’`ýp­&Z€Ys'‹ÄpÉ ö¸ƒíÈ.8Oyj‹²¿ÖÂ~ÃËqaH莂·¿Ò ‚®Än2ÿè6 ¤í•Ösa¿ÝRa…†RîWÏ¢è¸d®«õa ×a•Æ28dßÿiaQs%–\!2@ªúÈÉ6v,AvA„L…„`2A–¿ëaƒ†ÃŠaL•@¶%ÿµNÔ0È>ÅÊ©œr p9 ‡rœ±ßúÒ ų° [Dv""ÿ×I†L&3Èæ]F$bßöþÎê ¦G. cû¿ ƒ ¦š0 ffŠ7å”"*Õ~­ølh·p[èÆa·Ë)·ÿL4A‚²œË­9C[9RPú×êØ$"W° Ž)Ä!úcïA°D]h¨"ŽAl®ïÞúL0‚+‰£0[ [ÿ¤“a+§°Ô/‘Ó÷×PØHÉ,Á —Ä[÷ïA°@Œ…l~È®þ“–Ë‚Øi;Yj?ûdP4•#`¹Á ŽÅû‡ûI²:Þ™s#‚ØBßiýT1„Z²#‚Ø+‘Øÿ鲈шñ€31oïúL¨2˲ùqà¶Är#‚èÀwÿA´""Al(•_úl¸-‚Ñþå[¯PÄ‚Øj9¶WoúûÓ ¶ 8S•(ÿïõ †HŽA¯<„_×çjßì†H+9RXmûuïÒd2@¸å®}ÿôÿd2 rܧ2âwõÿû! #‘ŽIu›ý?PÈd';˜s·Q¿µÝý2†Ýœs7 ·÷éuÙÁ@æ6þÿ{ì8åÁFÂ{øÖ¿†AªÎå,ß÷ÿL†Ãt[ÿþµwÿNú}ÿÿí=÷{ZÖ­¾¿O¿ÿý-¿úýÿÿ&Á®·ÿ§ãYoûmÿÿ]jùd_§úIïÇOÿ»¶û×ýR÷ïävåréWvÿék_úú{ëöÿ~ý-wÿÖÿ_ ÿé·ºþþ–¯_ößïÿ_wûôÿ¥÷õ¥»ÿÛÿÿ¥[þÓ´›ý}¿§÷ÿÛ}BKK¯ßè?oú­¿§¥Ù2’#æÖ«ÿL ýò( `Gד¦ùeÐ6éÃþñúiýýi.Û}"ŽUO´Öµ÷í!½mÝ…ëáõ¤×ÃU×Ýï§é÷a~ïKûÞ¥í÷Vë÷­u¶ødÚÞÚþûñoýºéü=?Ò^½¿È1³>] žéi{·ø=ºûü†VÉ7¶—ª{õÒØ"^Òêšý§!­²­í¥þíõD6*ýý~ïAdv5½°—­»ôäL¥·ZÖ­ð¨"jÿ„¯ý¾ «(p{ìWK÷PƒQ9—Zú¦ß…Q>]o×íðA‚ƒš­Õ®OZ­÷Ñ,ƒȸ0…[ú#£ª0„w¯­ï@ÆJÃÈ0ªÄDv¾¯oÁ62Öú_ܯªà›Ê,ÿ–æI]Þ;MÈ4vú®Ê¢4Ͱ@솠ßòn:Ö¶Á]”øƒ"M†A°Ÿì®(†©®Ð|[;àlûÅqr¸Ø­§Ë(–;¤G¿ý,®L3¼>6Ä?Ûþw|e;õ_°A»  wÔ0Ä 4}ë¸&Ø2G¶v`1z~º!«%VÐ?³±°½­u‚!ƒ¶ðßI†v)õ}v‚5»¿Ú#·¯H Ý÷ÂÜuÂRoÕÁ}¾xgsÈëIïîn÷å–€»vAÕ7¤–“o¿Ø&¡+ÿI»wé^ R+M7þ­¶¾Ë(àCæ¢ ‹júÕ¶ûÔ'¤AÀÞ•õêÛ¿ÂÔƒwH†Å Uÿ-ôD?Jîþ‚C!—[êô”Sumÿ ©jâ „÷¤Šÿ}[}yrÛ!¦8¢@GH[ú½_ÿ[ßÕlìƒ8’ÛþÂÙ‡ ºJô½ÈBKbWoøâÊöú| .êïK¸ž«Òs/Oª\?ßO–qÒP0Þ¶=}Ûï}tTÃcámW½°×·¥ï+ ÷­ÿ¶líÚó"Ü·Z6èÂiúôᪿKˆ*vÚ}W¶þÜ3ˆŽ ó"”·ò ì*k÷}÷\KrPF÷o²¯ Òöÿn¸$ßÁí0_÷u»× ?pÔ‹">GC¥¿zü.&:¦">¿þÜ.7öÿ¿Û®O¶’ é-ýï{$ËV‚ní(S Aý{]¸CË& ÅÓi‘¾[žK«¿¦þ'»I’<·á{v÷ø@¡ðÈè$ˆ`ë¥÷ýü$ ÄR  Yö½÷¾ÝpA}Hf >ú^J=ÿ ½Ø4A(ÿ_¦ïVþ&ö™°€ƒw¥þßíß‚oh :Ó{þøoz¿ ›ÃÙ„ßûï÷ ¼0ŽèŸ×û{{}I±‰Þw\ §¿é?L?[ïlˆŸÇ­Ý«§ý‹y’˜5ßÒýÞé_íðwë®öîé¿¶ù‘˜l¿_}ö×þø{¿ïÛÛÛ¾[+;:k+Øc[Ö½ºm'ø¹ß tUáÖ—ÞÞÞÚüÅá¿ÕÖÃíwÛ&KyϯíÛjÚØLM.¸ý/nÛÛAh:½’i/k’Íúk¦÷Vïß…A§ëößh'­¶¨§!· _éýჭï¤Er^‚¢ R)ëÕ»x`ÍvÙÎÊ’›XPðN@žBœ×˜ê½[Ø„â5Ò@vœ\†ª„5W|>³!ˆñaîßVÒa}?÷mX';,‚B A±G¥$ÜÖ ƒ‡ ‚³•"ÿªïaá…`…­öÒ <"˜ˆe×Ö¿·‡oWý è†{R¿ —ôãZk¶· N ƒ$¿×[»†Û¦kÚEq¤mx L"+‘Á[áR½Ó½´Óü‰Ý„‰Àeôµîv×  ‘c˜ ‚ „TÁ—á-»vÓ^ ØÂ¥Ñ[o {îl;¯ƒJÛ ±ÈMÁ]‚éKí†íµØ­¼ ˜L#ºDpm0»H“3Õ/Û†àßÿ°tB"Ä:ÂHA¢)²{††Š]}2éð‚2{ Zz^í¶ï]*: á#*§¥õZnÜÿpÜ‚PïDUWØÇÿîÃaÛkéÃÂÁ\ÉX+WT©:nÃ#ðßú¸tƒ¨D1!" ›îíWhpÅöëÕ½7 FE ªÝ¿únÈ^«ëÕ¾ŸŒAZ¾Šãkôš`îïêî‚o ‚³VøÒîîˆ~·×ÛÒð a}/²0¤Ôoµëm? E|DpWuÕÄZHo®½_„Vä®ÿ-Ôû $ßÞëÂWN‹‚¼„ô–žd¦ˆã!Ai»ÒäØš ÛþÀËA†õéº,¥Æ-ÕzuøAÄ“ 믄ïwðNßSð‘\ û׮“o×ßqôAS ¬Ü n’ûOí?…mïÂEu€V»þù\+ þ—&Á†™[ak‚Es@UÛ´µÝ2º¼¼G˃Wwð0Ün°þ ûw¥¾ˆaÃ+ö\õé;zá[è ŠßZü…¤È´i× [·á-Á‚·v«Y¼/‘êÈ#.†ºò7ü›Xe íºá[‚²l6×ô""A}“h+2p…Àð7½'^NðÂX$[ŠdpTö?í:lì¨2Å7·]$­Ø`ºC ®º—é-0ƒW;B<ˆ@m+uü ¶ù~w\"ÝL6‹éU}éÕ•´]â8d7¤Ýp%» [­‚°i§]l&­’ù 2àaoׄ _;𠉱®GA Ô‘Rúã—bC 3šûk·O h!gúÞLD†@e¹nK¦ë„’z º`Ѓ6õúÃ Þ Š`²š9[k¥PUÓjƒ 6. ÷øa ðtCŽVL¯#†TàV9nT´«Õü-Ò é ‡i.ÐmÃ;G¢8+HÎy+Ú¶¼% º;Ô&ƒ8 “aPdÞ¡“EÀþ@ðQ IÙûXøD3˜V Ð7¦6,b=­mìíÀðÌD5Í`› ­$Ûä1‚‰²2t¯n“ ”ˆàx6H6ÁC‘¯]i«„…º[ÑB&ÉYÒd‚œî#Î9c™r¶­|·A¤¬>C ȹoS E÷ÄE¢tºít$ÝÒ¶é Áz½U»· Õþ[‰pÕmôÂ&õ‚³KÿÈdsC aïÐAÒW¾‰¸0V®½Ö@ðÚs¹ËZ¨J«„C;u%Þ“›‚ºë×È Á·F•¥¿ %OÖMÅ__¿SrÚ@ÒÒ‚ %h›–ÝUÈ5ÙC•µÂI¥Mp@’ÛëATs¯E¯¿ ^T -ÿ—ɺ¨+Ò_ûÈ’V!Z_Ð%Wü›¬‚•~×tPM5 wú&怦T’Tº½Ó A¸ð“O u@Šÿe‘ÁHÞCT„írÜࡎÐeA=œÛ0º+”/~ƒ t| ’ñ48?Qí… A™¸{ ½B }IpÁ7 ‹KïÒt°¸A/z ƒ pÀÞ_[ %¶‚hn%Õm0d ÕC[Iö%¸QáéÕäÜÚVë±ö—CaµôÒª&ã@§a-~—.ðƒWpd ÅMÓív— V˜Vƒ·'÷ÞWxkt¸@©Â`“ÐLÊ (M+X~ÒÜ.‚kSm)0'@Úaëá© ? rº˜d~BÁØ“ÂA¨Y‘0Y.‚p¯OÎÖû¥Â!°ØB(4¶¹Ø´úÎÒ…¯Al$7¥u·znî¶ØK‚A‰§I3!`<´÷ÿÂðKÁÓÖdZ…µQW§tºxA ë2TÍ¿ïôº ½&× Ý»¥º\®6 ´3¸&ÒÃ*a§øK Zd üA‡ Wët›´ieˆiý®õ ´ ëÛTÿè% A0Âa߃ïõÚK ƒ@´²½`¦ÚßÓƒDí.WN°n°Ü5S±O×+„)®Ãní;oÐ\" G t»´Õ?ô¸I†&ÖØm§Ö—&@ÄL!¥MÞ¿ÿPHh@¦>íoõþd°šûO×­;•à  ]°ôEŽ­ú}*kÓd;´CG:}t°¼ O ­: ¤›Âþ¼U ô­‡M­¨_ë ¶u¶­×Û¥®Ì‰AG_á´Ÿ}/ÒÒ]?OtÚßëÂà‚¯äÊ!†“tý_ ¸KýÊr‡1º£ «{» ý*„ ªv[™‘ÚN·†´´¸A_j#mÔ?Æý]•Ü Oû·OOoZ]¥öÚW߯ó!tE‘"0­`éëþÐ.B,ŠÂPö¾Øm+[úT¸ a[Kö·ººÚ  ¯s ?¸m'[»Ñ 8\ › øí·M«¯¡ ¸ MÔƒº¯mz°é| AÒb·¶Òol ý/„.÷a¥ih?I>+¦¿ ÕÓ§ëðˆ(dRÐkí†¯Ú Ò[à‚µkWm&Ò´ïþøUíÓß!ñú!úß@­köÕºt&”?Á+ë¦Ã +[„þ‚oàk§í×­7k‡¾‚¾½·I¿H6ô“¿ ~›àçNéþ­¾ø^ØkÈ7rǯÖÿ-pƒÝ†“hF·ª½ðA_IöëwííoÒ×Óv鵤úVþ†S¿§¶·ò u÷à‚&ðµ¶qÁnKù$Ÿ_|C#ømÓ ¢A½ºo ·_¶Òt–A¢]_øJ¹ý7 ­öˆmm/êüì¨36îì4›h,Ww%Fš ÒÞ‚w{ü ðD2™Ißß»[d‡#sŽAC¢dìøB:ÖÒn®‚í/Û 4›U·ªy …„¾á¤ØH5•ð ¯ÃþÛ¥„A­˜/}´¬$.NˆA—^í¿í´´ Ü0ö‰8ˆHöf»NŸ·jvP²Pl4›;. ñoµŸß\7³ ‚íÝl ‹¥½\†hçØ*¶íþÛ¤"]péÐIñ ûï!aõí¬ ; 4¬Gc¨gƒ» ɰ/»oöÚÁî'!ˆy\”=¼7Õm¬%û¬ïEÙ]*#ƒbú¶ß¿Â½¶–(x”3`¢¿o­;á»m¨m&ñußa¿ë;(B/Û­¼9N _¿Ú¦ÂAîjÜ{¢},;¨†qÒg`hB í‡O yòÜ I ÂéÞ± @ŸÛ[­Á‚ ¸Á—Õ5÷J¸A.ᆂ੻bDP“ûºØ„VÚ¶Û˜Mò £7Õ?³³ Onß a6å¹+kM0­j —[i>ù6€Ú¤•ÈC­3³ˆHöJÈ«¦òlpÓÐxÚäqânÚAÂòmP4*Mô+íƒ[ Aêòl ê±T›‚u·¦Á}²l4 D1§Ô³±`×§pÚXKòl.Jˆ"wOÜ%ûjÚþ:a~ Úí°èËakp@ßT¬%ûj: ýÒzzvv¬=ØtØ@»ëI¶ºV/°ÚWwáªÚ ½¶ '`´ÛR!¤ØÕ¦ýÒnßCL>v‘ˆÚA}·Øª^C Á1; 6½ÛIÐktPÎ9mÅT ¿ ­¦Ÿ„ÄŠÜo2 Há´›ƒ=A² VvàñíÃ\í"{ÐkaêPKöé±BÝA5BAÛ‘™-¯¸m& ÛÇß|ÁAKaÛf¬{aÓ †`g\ÏKݵ°ˆ/ ‡¡ÈK pºÒ‚öÚM ¦ÞA§¢8,‘ÕP_·ê!ð@Þ%G./m†“i7¤H4È,.aAû`Ò2¤ö“І;4øKÛ „–Ô5“a0Ó´ƒ,q"m`>ÝØ M´ƒ ¢mVG̳ !4DpY†” ZÛ…Ôl·KņpLÁià{mm,·FÀðÊd0å(Ã}´ ‘ÚìíÐte¿£0<áhî`} ¾ç„‚~âÒMÖWUeà H@ÑÝ@y¶°'öçbÚ éÊæ 5Ú ¨ņ”+íÃIÂ|îg•ёà ðÂ;Ü0°A_·W ·‡™#†M†ŽËñà NÂÒK~û]]CÌ…Ã$3pçj€{†•4 öÃ[8·‡™h qNv²’k 0TýÚ±o»;KÎØo¹Ù,T ¿°ô@‰½¼ì©ò8-ƒzs!óx¦4T_¶êoPÜï™8)Á·†%xpƒka.·{öÓ ˆ Ëá‹Wgaª”àÉ]6øVLdMÀÌ’±>‚¸ÓDvVþÃÐ^†P`P­™$ÁS`‚_wÂM¢.ëÒ²'¥á¯L_¶Þz;ø»D -Á‚¶ƒ2 <†qÂý»Á+ȱ£àh ‘ј(c´Ì¸šOöîmÕ©ÄHƒ(äæPÓ{S"ðÍ„¿vÕrÜL3KÁ 0'¡Ê2»y’p< á· M–é0B$ Ãlr ­ˆ¾¦JÀðÏA~Ûw•Ì‘ B-‡‡™ྠSû~ ²¸##äp4àï™ áá+Ùœ}ìíK¥‚l®1Å0Ü7jdR„Âý·B-…fKHŽ€äq›Fi³¨/y(t ½»ØVd*°ˆŽA‰xn“þÜ2:;4F˜Èàh ÅÛo a~ÞÄžÀÙÚ„o.ÈàhFÙ¾ûIè/vݶG£bò>GdvG@l#æáÛú ïÛ†\Ì0¤aˆ½û ‚ü´îÞÄD 6LØÕ»jÂÁz‚vÚÈÀäPÊ6#õKð­ØA2€¬å=Ö —黄CKe$ 4ØÑÝðTúÛa)07âÝG­Uoÿûx% f †ä~CM½kû{„C-ä©H†qËdíüƒKré~íØD! ˜o„™=ê@»s ím¹UÈ-‚½”ÈW»¨U®é·@¹°ãÁN}ÖAvâ·ôÞä( ì†HqÊexf~ÁWúm¤É 7&çe v-¨e·OÓö‚!±%É9{vB^á§þØhä2r «+bÍ»n¿þ ‚Ù €isÁ[Kûõÿl.C I+·¶¿ý°@®@ð(‘_»ZßøA<á¡Ê™K½Ž×¾ØKZŠºK»Y ±Ë‘5¯‚¢ Rà»O²²-þØI¤A sñK­§w„_í„d ·=»aGÿ;@"éößlIHe­^ÿý/"€•÷ßí™jivׯÈ5aZzýMa"äZ·i‡õ´Û2°Ìª¶›þêØD2¤Ûvÿ­XAR»W÷éÁ¾í÷Ú‚°•wMÿÒsµPhJ›M½¯Õ‚!™%µûzýØI%zýh%ïaÿÁçe!›[á‡ÿA6v( -­ÿÒ°nÞIfÉPg#öN‚Ké0Ã4ÿØ+h$•µM½ÅX%ÿmïý\ì¸f¤Ói+m0_öÎꔩûaµ ¿áÍ_D6ª~½¸ •mëý´w0jH·Ò/ÈâVÛÖþÉ€†¦àˆ4®1ç_ 7K]XA¢$B ÚVÞ½ÝÚ‰Øè ©zm´»÷ÐB’´­­‡k룾’ ûá¶á{è6 A ÒäǤÃëþÛiƒXT™ã±kaºúöÞ‚ :ÐCðÛ¥ÿa½" upzVàÒÿOi¤Ô§û ëý¶ôd´ 6­‹ôpÂ^ý¶Ò ´›t¶Û ý[`Â@‚oHbº÷l`‚ÒwKm®úÛHi0ÝvÚÿô_}SÿýÁé?¨m¯ôÖ¨jÛ¥µÿ ˜á2(é½%×ñs!`km&ú¯×„A§bM&ÚS;¿}„ ëê÷ÿ‚Mí´’ë ѲƻJ´Þþ̃K¤ØÕ­õÓtÚW§¯PAZºÝ_ô”ÐA:MÒª÷ä¡¡!™´¶®•éÿI°“ Ÿ×Ýé6_¥ÒzõpD%]+äWÒl ž¿ÐMõ2Õkh&Ò„“¤“÷a©"84éU_Mÿ] ±ÂmtŸ_ÖÂn’[¤›•ý~¹ÙH5¶•t¨“Èâ$Ú¤ÿ¾œ N’D¾MÂpBÿqëi£±@koI4ô¯I½^R¤’~“ªW¿‚ºAtÂJé ßòÌ@6’«MSz·þ ´«j¶µòÏ5ámB«ét“|}&é-¸I6«ÂzTúúW¿ ´‚[i$ú·­Áé.ÝStÿ–`@Ó+-µI]$¼'^‚Névô­BiïÁ›¥ki$úÃþ-Õ΂®ô•Õ­ü ­ºB6Õ&תø ®Õ[ªë`ˆëø ­´•µKà –æ7#ð@½%º›Ã3”n«ùf‚ ¶ëz«Qñ ½%n©ÿàˆjï[Õ:I= Û^é&×øJí$›Uÿà;~I&ëùgÒzMF–¿T ÛRºª`œ%Ý0@­èC!±É›™*oúà‚¸j"è.¿¨ ›t$Úÿ ¢Û,v“¥ÿm @÷I¿ú`‚¶Ö’´º~'ºzm„Án“¼WzB ¶ë„ÿX/Kþ6Ú×÷Jî¶¿pMº_ýö•¿ônµüâÐ-ºë¨ªÞ¶þ´ oýú ¶Òßî^“üÉ:ô·J×ÞÓé6§¥ú’±m§Óz[ÿ ·O]ïmµß®žÚK]é6î­¦Ûkÿµ‡Ò×ý¶Ò ¯õaº@©zÒõOþ“l:×ú ¯  í/ßÈk9R%n°’ÿ!šæ‘ wA›ŠÙW®Èh‚— nŠ^ù 9—Oµ¯ìšàA†ÒKO‹}/­¶ÒKw·¥ÿm½/á¶Ò]vÝ¥_Øo¯Ëqu·¥_6Þ—é¶ÒA~ÛÕ/á‡iBý6ÚKý»¤·í¶KöÛ¯a´‚þÝvý·_áé-tÃt¿¶ÕaÒ×Ût·í´—öÝ/ắᶒþÝ/ø7A_·¯^n¿°ô«î뾘z_ÛûK]†Ãim×ûz_Øm×öÃ¥¾ƒ¶—öÿû ÒýÞ—ðÝ¥úa¿ýí/á·õÛ ~ºý·¥ü²§Mëüa¶–üz_Øm×öô­{o_Û´©ûn¿Ãm¥¯o¯íÚ[öô¿†Ûÿ°ô¿¶ékáÚ^ðßúí´¿ƒn–÷aß®ŸK½Ãuþt¿°í·uû º kW¯u ;¢l°ˆïûnCþÝ„‚ û½¿°íGûn—]‡×Ô0ÛK¾úýC}†Ú_I½.ª×é7uõaº_I¶ÒúOuõ ëí Û¥ô®ÒúLת ë]+´¿†Ý/i^¿AÞ¯…nÒú ·K´¡‡´ƒz^ªÛJV— ˜zQðŠ6ßøÛt¾nÒúWÕU Ãt¿MÚû 0Þ¾“áo¤Ý¥WH0ß¾“z ô¿™´m¥ÇV•t­°¿I¾½$zö“Ú_Iƒm·uÔ$Þ•]'tºÂaé}Cm¥ôvY¥Ñy/¤Û–hlé7e˜ Œeâ82÷H0òÌÍ¢ùWÂM¹fh†^ý‡–a¨ ž’nË9( ŸH6Ùg(Ëà³­&쳃Ì@¿I»- f\9 2Ò†å  .Ät[ÒmË@†DBøV첬Æó’=Ða唣/ ÓÙfT“yeHŽH2ï´ƒvYMr9Ã$ˆï t¡¶Y"8€„Hdƒ+9T=&òÈL2@ค|ÜaXzA·,˜ˆá’ â"6ô›²ÝB2¯< pG­®Û‰”Ã$ #xØz ‡dÞa’ Ät^ƒzM䨕 U.„pÝXm“byta T3Cô 2lƒ#†Hj̺9‡¤Ëu”Gf2á’eãD"6%n$d|Àd†ÃŽ!aéËr€„HdÙ¦Z´›+–2á’ c =\®. \á—íé6W<\2CLFÃÕÌ’ŒÀdƒAµ è&Ì€ÈÀdƒi´0Þs"á’ätf†eÖ“‚d|Ød‚©†?lìi Ó8†Ã Îñ‘Ã$6†ßNAD6!¦GD|¿Õƒ! Žˆá’ „q‘ñ°zL2á’ ¤p¢6“!˜9\(7 ƒ!’ ƒ”Ø8aÒL†Hl†ô™ îS`¡‡jÈd“Êò› ¡ƒÒd2¥²]½Èd6EÁ½YÀ°s¶UA2†»µÁ½YÃ;´­‡¤g)´ÃÒdÛK`Þ“ Ñ6Î~m˜ <$ ¦Ø»} 0𕾡ƒÒ†ô¬=(aØH¯ èl”7Ô0ô¡¼% =+z Ãu†Õ+JÁºPúPdg¯WU†A»zÜ7¤Õ‡¤0Þ•ƒÒ†ÛÒ°ô ÁéCxJêÊéE‡¥aºV R†ô¡½(aéXn°ßV”xJÃýª &ÊK« p•‡¥VÝ(oJáX=v©A†á(aªPa½Xj°Ý(6šVé"Û¡ƒÒ-ºÅ·á 2Ê]i' 1t»z]†©,z]»H' éU‡KpÃm"¹=l’ a½%-u@Q’TðÃÒ°zMîî•XxIa†šIA‡ÕXt+J¡·øaèCÖ¡‡¤Â°ôªÃÒ¨mR¨`Ý)ÇPÙ\i=†*Ãn°aÕXv‚·¥ ëH¦·¤•ƒÒ[xI+µÃt¡`ú +éÚÆÒ-°´[¨I º†I&Ø›z ჰ°àß ‡oU·IpÁéT0Ö»K†íVôžÃH&á†DŒrn~+Š^iá²Èœ“Ãe‘x5‘É. 74À°æGÒjÙ7YAK8åHtÙ7)@„D‹…mQT0ypÉ G’jÙ7 Ô/W 2nŸ#‚ØBè$Èf¶a“³Â¶MàÃlŽ HOƒÃ ›œG †6S0jl›˜jX2l'ÀÌ5¡†M‚"àf ðÙ6¨ Àž&È0Y°É³àX]Ñ#†H+[-ÉÀ< ¡e)An* ‚ ¨+Ì9¬§!GPÁ¡ x+YR(Vn-—ÁL‹Q "â-Àà„àÚ¹¨„3YXe½hŽ‚‘^0H' 0„ᮿˆJ™;e¼à¨W@ Wh8l®”‚¡+¸tª¶"†¨çÄ&K`xŠ÷ 2¹Pb&Kx—‹5U/Û+‰á´WÀ<Äk¸a•ÕàÚWÀ< ;¸`Êá¢àxkÍràx,™¢n Šj¼º%F•vÊüˆàx5‘Ñtdh¸‰mà…ÑXKYb€ýàÃ2KÃTŽˆèDÉh2GBZé`Á Ò:A¦Ÿëßݦƒí;UàÙØ*#à ®8 s/ˆ–¸äG"9P.„4Ô&©§é÷ÿ¦ÿ]ØgbèAC…ÿén·ß…»ÁrU÷Î+ÓÝÿûÒ÷}ïêü„ù 5Âïl5i[Ûö¿¥«ÛÊòak×§`íÕ: kwëò;ð]u¿{a¨amýã]ÿ_ï×û»{éõ¿íÿÝm]_¯ö·¶¯§ïJý¿oï´¿»´¡@¾ü>«  Ò_Oýú]÷¶GAXin²¿"{_ïÝÂÿ¦Ä3›!šýíÍU× Û¤ÚðýÞï°]>Ö6+îÒþ×]¿¸peÃ+P9i2 ÇÚÝ{ë½ývA«Þ¡È;0å9D‰oj¾CETúþÚZ» ÔWüƒI7'5·í¢ Ú}Ð"¾—ðÖÂ[nçO}ƒßÖü7 A{µ½>í}XauââDEîöî»û ì&·÷ºÿ %f`_ï~÷÷ýêÞ·I½Ø^Âà ½ï^ݵ÷Ú»A‚wßëÆÅV÷ÿ°ø_íÕ†Ÿzü)‚­4ªë¿íð¾©÷h5¾ôâ2{ôîûöï×»·NÂa{Tø®š­ÿ꾿ޚ 4ÓTí]v½÷{öøM§v¨0A‚¦ƒA¦õT&·}þª˜L&žšvƒ…€Î8 Ërˆ8)ÄÐeô-BÚ÷jêC7dÐ0ša ’Ýhªƒˆˆˆ¥Ú­êš¦¦ƒ! sìm0A‚ϲ²Á9ý=a­Úiª`ŠLDL¥”¬&4i¢&6ƒ \@ETU”Ì,úa5ƒ í2]a0˜&0A•åµ}0h„ÑÙ4q¿aA2MpB†Lœ9M‚•a!†É… /hF2×ÿÿÿ–‘RäÚ©J?,ÀUòV£òí:+)¢cÿþ@Fœ~XYQÿÿÿÈ Qÿü¦pÉ™ÓAÓº§[–ÚÈ»rÛ Ó^[Ž!%#"b DþZæ`á0¦ƒOnZë@Ü…tÓ^®ZŠh’yv{#¢00GŠ ÂGH;ï^Za`ÖH.†HH…„(X Ó^ë–hèìdG åÒ !  4È—wk«Ë-Hò"ÈìækEÁË™†udpÎuè†hB!¦ Ó8ƒ¿û–䦄„@ÅDA°dáªf (IŽR°h†šÍUÐißzòÝMC‹Ê&D4`‚ i„!ªÓ¾Ó Þ¾ò¹LG/°nˆ4˜ƒ«h;AÿxM;ï«„"H¬†`4‚°ïNû[ÓM;½ ÐpÓTÓ^ûÓú´ÓOïÞƒÐ;UáÿkÞ©ßzÞ îÕ{UîÛí4ï_öƒ†ÚªÝê›§Tö¿ß¤ûNý?ß¾ÞªíS½?½ íµ^ÿÒ¶¨4ëißÿÖÞ—ºj¿j0“´@¹ò Ç(‡nŸûNí%¥nªêÃ!˜:nAF¾¬AÝ"42‚êÃ_½ªy’U ƒ5!Ÿ6‚¨Mßø! ö†ÒXW† C1Ár(A ‘jÓ¬ Õ7j¾wtý%ÌàÁHlá mö½R|7u~ß°j“!œ j @ŒÕÃcÖïÓI=ßéõN⤠ЧÓôôõ†ÿûÃUýêò\Pî@„:D6„0U{×ôõÿ¤4÷§êß@„=;ÐŽŸWMûßê+wÿ~Ccà¼8i·ýÕ»uuªõÞ¾¾´ƒ{ûÿÿ}¯[ß~¿áxz…ßÛ­ïr ðR‡ü†qÿÿH7î—}ê·O±ë‘#‚õß ¿_ûm=÷Æ@¼_Púð„?ƒT¿û×¾°fÕõ `rÈÄ’?o§®Ü{Öô“ûU-ø‘gƒÛÖ½SZ ýÿúnºïîÿöî¯OýëþáøwÕ÷ôˆg¿÷ºkÚ!žÿÒ]ÿ]}›_ß¿¼]U?éÞÚ~×ÿüj—ÿ§¿ ÿïß»_¯þëmý'uÞ¿úõèWÖŸýZýêÿï{ýÝy ãþ•þº‹ÿû¿ºßý{@ÝýU­ú»ký~¯ß÷ê½zº½¦ÿÿý­kõ_Ó_ÂÿúÝ?¿ßîïïÕWòN«aì*¿ÞŸÛô»…ýp_Èl÷ƒÚîŸ^»ÿ®·ëP#ò ï°w'Tï÷kîÕÿÍü†Âù×ýaµb¿pøaZÿ¯È7°·á=uvß UÖC,ªÅJý¹_¥ÿ®û¦Â[WÑ7}/~ïW„Pô¿tØ}‚[ðß\'}­×º×ûì+!•ŸPïßÓv¯[¿ú÷Úl#†\S†âA@ç~ÿöÒ×ýþïKûâ)ý‚pÙ{ÿµ×¿×¾Á^ô@êõºïú°•¥°ýÞîÓ<U»vÐknžÛÒÞÃ\.Ù^ýì8«kI¹ Üõ±MÖÿ[ XK.@pÿ`Èç D9‚¦Ñ •=¦½ßj¶­…Mv Þ÷X‘›ƒ®ëx!m û_¿cŠb¶"äé~»}ïn¦È÷÷û×Ãw{wº×ÛI¶ƒNõÓmziwo}:o£ªýÛð­­ß ’íWiï½·t;ÿNá‚ki„ÓƒOtŸvŸÿº¥ZÛ¬0ƒMc„7 ð±°ªßWúné¯ßpÐ0DtË2IÂ×MVû¿ïÂÝÚ}¦4""=zaSÿûõõ½9ìZj·÷¯~ Úi¦ gKß´°×M>ûM0ša0”9nŠ1ðß Â…µNýS´Á¡ÒÂi¦§i¦šh5R6JqÌæQFÂϰ˜PXjš ÑP`ËpDb6Œ"ä""õ„&4@Èa¬H\ˆøˆŸB"?aƒ!±Ám¨!G8B°«(ršfšƒ \%5ÕÞ"/V† (ÿÿË`ÉGÿÿÿòÐJ£ÿÿÿÿÿÿÿÿòÚ4QòÚXQÿÊfÔçc¨ÿÿЍÿÿ „Eí;ß×BzÈQð_ µZaKP•8n¨¶–öúí¥O¿­¥»Ò®ÿ­.Ó! ©f¤Ù‡xâ)oª[K¥T¿µéV¶§[Ò×]Ø-Pýn½UÐ9N¸ˆ××uäÍÉÇ×~¿î¿uô÷_þëþò(åZ-¯_´È1׋L!¸Ã^ÿßÿÿþþ»™ .•Gþÿúßïëò„«f¸ÿÿ,„×ÿÿÖÿßÿ[¿ÿ×ûÿÿÿÿÿßÿÿïSµUÇûÿÿûÿÿÿþõ÷ÿùi©.?Þ·ÿòж¸÷¯¿ÿÿ÷ý¯÷ÿþZKaK®ZDˆ‘6 ¡ Õ²Œ}á8Ú¼"îVÈpBHsîô$"^ZBÀxiðˆax"°g xQ,ÇRÒH "P‚ô0‘Á~"V…¸@ЍOC0ÐãøHYCš< Í—"ÊiÔ´¨ i'ÆBP¹PD3v¨T,LpHO†2 Ñ ÉxXDùº²ÍZ@ 7N„È6¹À|ßâFææ¨*ƒ„C.JyÀ6%,ÐPh¶@öæÀ€r‚ù°¨"²[²‚à>l6Y¢ Õ²‡ xhóeeš6 X²†`›Td@²¨ŠYJDp<6K44âxðˆf¯¬î`xfË7T’ŒÁE ÎÕàÑA©q± <2ˆê9ظ GÎÕ@ðÊ‚ Ò¸3Ž@ðÊ \”ÂÄà 2à<3aFA¢8 ô³CJÄò#áš]B Ô¹\OášGàQ’#àÑ,À¤,A•d \Ô! t Ì–€ði–aH5Q_ðÊ- ø@°g‚†SB0‚±3Á e˜6 Y]@…ø" -îWDp<!'eAC<3@~XŸÃ,º„•Õ@ði„ Êæ@xeRÌÔòÝâàx7– 'àxf‚p–[בÀðÌ ,Ï ,C)È L8@±4Ã7–`ᥖâ xipe¸ ¼³¥–[ªá¦Õ–ë@xirÎJY6p<4ÞVM¸ b:àdÛ\ŽƒG,ᤠx x5¦€ñ'ÀðÔ在4òl.ƒ_,âÁ§“bÀ<5xAeqp¦Pƒ]™%̽dp<2Þxˆ2†’eK ÜÉX|éÌ„€ðkáÒ6¦ƒF@ x4rΜ56œÉQÀðjxDͪ»ˆ0fË9§Ödh†«Ð-Ú+Ì lÖ$Oå}@ðÔÂË=†Ÿåqx6kKò¹€<>Z Sò¸žGÁ³¨@¾Äþ\ R:êZCWÜLÀð×áP_•ÖÀðm#êA-À¢<`Í¢âþ[¸ýK@Xj–ãG OËyàÚéB‡ùnB#àÛ  ‚éñ3Èàxiá(D5„‰øŽ†f”´ ªþ!”;Ò‚ Cø”ང¡Šýå¹(*&L ~[™çPD5[‹*ü›8–…¥ÂRý•RVà’_‰ ì‹‚þM‰ƒkiÂ—äØ 5NZ p—ïk†©°ÄKë§- ‰2»ánáQ¿[å Ô!kÜ–Ù+ÐI…¦Åèë°ùe[ d­¼má—¨"£ûX@Ij°D5'Û©eS uÞ­§ ý+¶ÖH ü :½ðp×°ÂrÊ,IA×§D5Í‹¾ZºÁÖ6Wàˆ5˜¼+‚Jˆcà‚ö®$!t~V#Á©ÒA¬U7CXpISÞ e0*†©·P•–P<$’»Â!¤WÞ/í AcË,ÁQ“n oA$ÖÚ„ÁÚ64«Ð@W†±½® P]A*xv  èK!²B`È莎 JYÁ±.b"‚ðI-ÍAôW Ù"è· 'YdS ¥ÑW*Z‚ *P$ÚR Ä‚´¥°ä $AnSq`²˜–B€TJч ªn°™ P*"›Âw ¬nTCOz«  I7HIÁT›†¦´d ˜à–°Ô¤Ë‚ª]¤„„s³– I+ (ŸPˆil%6g,‰UÁ‘ðL•†Ø WÐDÇ)œ` µˆÊ˜6 «a$çh[D6ÀÒ¶ ·(ÙP-Yn6‚BÈ06‚†ÊÐ*„â(‚YÜ·)È Ú Ê„ ÙÛƒa„.ÂDLÀðÌ/™€ÖlïƒhŠAÓHŠÅÀðÌ3PAFÈ(† îPâF9[Pä:åAx „œ (I d b ÄBÁð‚;5Áª†Ù¹\NÜîA„šî°<2¥‘ÁV†ÄA‰ ±Ê‚ Ò;'—ÁˆD6ÍÔÈ*qÁ6v6 ¦8†/A Ò#ôDÝeŸÄ[;(P˜%¦BC¹7ZQÎÊÁY0xHÈ€e„g`™ÑepÃWÑ 0pA6'ä=.ÂF@ˆŽRn ö È2ˆG@€jB|ÁVh˜gi`¬A°v‚22lÊÁ¦pDš*fS†ÂZ„`ÈêE•V ‘Ñ^‚ é[‰àÛ°Av d3\ –̆¥‚!¯"8H® PXlÉX56d —h!˜È–nd64(Pd3Y{†d,H<…‚ðÄÃ+¸lÈ¥ G‚¦0{.•†.„Ž@Âô\´3(I2©Ü<Ú„]P2òl¥¶RÅÚEuÊȲ”^ä6¶(Yp¼ ƒGT@ñ²‰Xo ɲa‚éîYà ªíÜ¾ë ´Á †c"Bn HÙKÛá—@ˆp½ 8Á›[m¡#Øâ Ll´†ì"‡)h/H<àÚÈiÎÊ2ñtÝâ8*‘ô T·0YÁ•‘bgb@½¨Ÿ ²øAv‘n&2C ]†m“ƒ‘ d‚ð`ìàXÈY°› ï"ìŽ ¨/0y(@ðÛd†ÕˆBÈ2Žrä1X]„™ ÖAáÀðlmÑ ¢´ˆàªˆrtEº¨er  zmQa Èt\†dRC0Ýo&ðTÛ„hï˜0['À…[™†nˆ’1Àðm¶ÒØAÎ:k|D{œ4"N¤4/pÒ›P2¹RÁSm&„2¢×„‰¶€\è­àØGö÷;‰žG &„™Cˆ{; ²ëm!<¶‚'+þ\ s o+êéðd3 Äß>‚¦R¹p!…Z› ЉÐ ­¿¤ôƒ!˜nM£±¬Ž†»Mÿá"lZ{àxkmëO„ƒ†qÈ ƒ”oɼ"c#û @Èf׉üކ¸·fJBR øAd hОÁ±»2- Á5Dd’¡"njœÈÕÃL0íat ÅŸŠå©6Ì…oÂDÜ€1Ɔ›w}Û„2fÆ™@<5[a¦“ ¿¿ƒÌŒàØÜ4´ß„‰º°ÍæB`x6°Û°“?„7 ÎdV†³ÃDpÂNôƒ Ðl™á¬GM°rÁâïè"nT¼È—#á¬Û -wépPËâf†«mÓ |´Ê0|¯€xj›†“ Õ‰üt0{+  c †Ã¦ƒ_é!šl5•êÁ±†Pa´™ú…ß‚²XfrºD\ FÎ ˆR¦¬&©ý `ô,á¶l*GMÔ ÷ú{+Š28ÄtÄC >kÁ d ªÄ2‡vQ°@íh_"È8™á´GÜ•á('¿T‡¢ºØL7XNõ¶Aƒå¹¨¤p<˦Û;2 WþEX3v1&mlOëôd,®[†Ñu çaÎÖgét‚ §–õá´a4°µëÚB–ënBé î ö—‚E‘l3yn4‚¥Ã…ï_ `ùn(‚­;¤K´IËrÐ<a[ˆ&¼†96.´‹,Á¦á•@ðVnvKŠÆÁ,µGSƒ2X÷Á5ªð‚ ñ'Ãjûpƒ uÒ²¤ ÎÁ—Óü^ï É´Ñp<µÍJ‚뤖ê14Á°Ž§„¹V‘e( ÙÝM”à­×yØD'„¼ E”#“` <Hëþ¢½ü$YU£“a`<»ÓÎÄ!ÀQÓ~‚&Å€x+—Èþý¤ Â÷ðH†ÿ³¸ˆ:Öð‚»á"Ð8fñ ¬ x)íIX[ ^ß @È4®i‰ B:aÐA½¸$Z ÞMðR>]ZP„AKf=ë´'žMЈàx·Á¤w@SöéÐA‡Äà «!°t}úE À4òn¬2ýìB;ðRöüA‡²n6Ãi°‚ îô0|›ŠàpÃ.Œ ¬ã AvÝh Èi./“rÀ< ˆÄàtþ‘h¾MÂÀðR#¶Ä]…]¿H´*ƒO&ê x,XA}ý…°ÍäÝmÀðYlìH .›ô7ÄІÐ*MþgÀ1Ë%ðY ƒqØ _~Ð2 Œpe@ð+Ù( a„íÞ%Ÿ@ͨ² § xíPã›F¿–qPÍâ$àx,ˆ‡ ÔF#˸{†,‚h¸Œ0‚%@Iíê¥ïàx,‘öÁƒÓ‡N ,A‘¶öÃòÎ W,„ x38Kíü³’o,‹a¡„AL/Û^YÖ§–S\Žƒ1AÁ/ÚuÄødì0D 9º*? >YSà²Gm‚ B9TA”:Ã"È*àÈ4H,¡ðg/¶T-j‡Ë2Á£–P0È í k¼0| ‚¤¦J€âœ|¶ÂÏ–R°È¾ÙA$Û¯Âyfj½‰`aL.òÌÑðÁòʪÃg\¼l¬AS,Á›²Êd°gÀòßZA¢@ðd2t‚¿ `È5J¼´xd1°_«ƒËB2Âï e˜& O@Rô/ÂX7ËB°Éž´ƒË@d‚ÂTY`_ƒ,uøA+‰ìŽ7z[Ä2Å~‚²Ì$‹BÄG Œ0µÂ ìCA­ð“E˜d*Yà†A@àž­¿x!ÓÂX7¢ÏL¾\Æ·Â {ˆšàÔÂëJïeœ ô->¶§h*ùg(Áv¼h%…圴 Oè+O–u@=ê¶×–ƒÚ@Z§ôŸ³°0X÷áaz‹’þ[c†}c³² UÎÖUú JûGaHŽdpjÈßÕºX@Ÿâ6’cma-û;J ÅOòܺ“ú2°Ùþ¢Ð^ÔÊ`BIþ‚ÂOìÉpªŸ¸Ah&þ-„ºõÂ_á‘ÐIuÁ õ± Ž Z~•«ö˜¯| ©ßÚOð‚°K·l/ð–‚¿µ¥„¿Òþ¤þ¿Â„¯úwè-'ûÿ ´½}ß„‚÷ëw„¬ ŸþžØAh&ÿRVÓút¯¾—P‚Â_ÿO •ö´›¶¨N‚~?êé(Kúýéa&ÿçb™ßh+AwÓÄGÂM%†ô A?Ðõ—¾ÝÂXA?Ö°‚ÂWßô´¥»Â Iûþ–¾M†–ˆ`wéh/"#¨@­&ý Ÿp–‚ÿ†ý,I~-{éºÂNOrÐÞ÷„¯[¤¯Ð, Ÿ­ÿii_]I n‚ I¿} øIÐWëïÒÂO_ÂZ_¾ŸÂ ć„ õÿ¥¥×zºp–¿êß„¤ÿ×í-ÿ÷á,$ß½Ai_ú»Â AÖü '¿§z¥„¯ú§àiÓN´_û¼ÈQa$ÂMÿûÉM% Ÿÿ^!-ÚdÜòè* ?¼Dw+Kí~'ÿð´¯ÿ ´ýòÙ 3¸JÿøAR öL—á-Ûúô„›øß¥A'ûÞ‚Ò¿þI¤þ—ÂNºïXAh'¿î i^ŸÕ„´ÿ…¥ÿ¼%A'ÿè, ¿û„¤ÿë,%íA, ›ÿÚ «ïî–Oêõ-/­xAh+íõ¤¡ÿÝ'I¿÷‚Z ÿè¿ß„°“ÿ} ¿þÒ¿Òë Ÿm;á-/¿á„ ø§á-/÷ ³± [×áà—Ýt¬PW½¬ Z ÿnZßõ i¬%„ï´‚ô–‚oû„]ÿ,-ú¼$¨/ý„“þ´ ÒùhïP–Môûp–_ÿK ~é¬ •ÿýé¾,$¿ÓáZ ÿø".´‚ þö‚é?¿„/ú胷’ÛëÂZAo­ —ÿ­’ÿà–‚ ïô¬*ú_ a—ÿ A%ÿÒÂA~þ‚ÐI¼%¤”–/ý,IG¾› zÿ2ux@´‚_ÇÒÂ/ÿ-$¿~‚Ò_×¥¤—ÿ  ºkÕ& ¿øKI*á„^ÿ i%u÷* ïúZA/ï„°‚D1 ÿ ´Uþ°aÿÞª• ·þ ý„@¿·éi’ÿá.’_„ ‚Kÿ (Uþð–’KÿÐXH% ÿa-$¿þ-AWÿKIÿ­, %ýð‚ÐIWþM„Kÿ°–’Iwü ´UÿxAa$Ü?Z H$—…®PBö½º ’Óþ-•qý* $–ÿ- ‚ÿá+I—@´Iuô°’] h$’¾ú¤ÿá„ ÿ®’IvüZH$¿é4 ÿáh$’ëá¤_"é‚Kþ‚ ÃÍ7N_ hZ*[ýxI¶‹@]„©%]nô„Iø%È1åzI_2N¿KD ’K㵄$åA •tõÒÚ’A.ßô*‚IÞ]’­^ÖÒA$»¯t´’*÷®] ’KÿA% IøA] UÒß *A ’]þ ¤‚I/»é& ‚ÿ®$$—ëxIH$—WôtP¾ÿ„“ $¿úIÂI—¿Â ÕR_þ$CÒUÿÒD= ‚_WåšZ’ATUþ¼ éI}íâˆh7äÚ¤’_× $ôAVß}-°I%ÿáô‚¤¾«‚U¤‚I/ÿ u A~ÐKidˆ$’_ü%é IUÿp‚} ’ ÿtúA$—ÿ/A’K_V–’ ‚Kýé½$’­¯¦ Z¤A}ÿA:T‚ /ìï.’µP’I y.¯l L5I$¿x!úÂÙt‚¤Iºð1HA*ý¯zT© ’úá¯*R$J¾“v½è¤UîÞ¼ šÓI$¾¯ø@ƒI(H ¾éõé4¸I$¾ƒoð“ %A$¿Oý a$’WUzð“K„‚ ü‡ûë¤R¡ *®ÚM¶-Jp.’KoH6þ¡&¢‚ J—Aõè%ª*]Òmºì ¶$¿÷}aÐI%ý;ׂ ‚ •õÚ­ÎlI]ëoô†sbÄKÿuá,B KmøAi%ÕýÖð‚ÐI%ÆûþKº«ij–A/¯´‚I{Ûë-au…_]| XP’ûVý°–‚I.ßÂ|%¤—§ Zú $n¿z ’I.Ù˜0ßá' øõô´UØW^N‚ /Ý}&’IÚÂ)%Ý«J°I%å  kï ‚A%Óv×Ò J«µþA$•½««p‚I%×¶º„‚Ix¯@‚%]v·’A%ÿ­ØÒI%ýïJ’ÿþ¥”Ö$’ÛíV+ ‚ÿþ‚P’I~𽤂]wö-$«w»àºA%ÿ^‚ÐIWß­, ‚IkßÂVH*ÿ^%I%ý?„°‚AW÷ô ¿ëÂNJ·Û Ð-Iuãéh —¿ð‚ÂH$¿§„k¿éêKAúü’^÷ÂXIWÿK $¾¿ ¿ °•%úô´‚Ið’ ’¯·á‚H%÷»A'A$¿ü ´‚Uÿá:I%ýl% ’ýz TA.ÿÂX%UýìM —Ú¦á*¯õ¤A$¿øI_~ôA—ÿ+‹ ‚I$¾þ! ‚J¿Õ ‚H$½þ’I/«ì ‚ *ý^‚Aÿð‘–ˆ$µ÷ð¤ ÿÐH$v·Â $«÷ØI’ñý-0A%ëÂXI*ÿ •K¯@‚:«J +ý †‚A%ÿ…ÂJ•v©Ð ’_WKI$½Þ,$’Wý¤’ýô%Û®Ò %ÿ,$’_ðJÐI%ÒÒ¤ªZ¯ÒÐ$’ëøAaB—¿Â„A/ÕÚN$~ßKH$–¿Â ‚$–ÿÂXT’ëü-‚Kÿ„’H/ß‚XH$—zô¤‚ ð‚@I_~‚‚J }| I ¡ð‚A’þÕ I‚_¿ ŒŽdpØ„—ÿH´8mªIO ƒA[ý´­‚Kÿ„” ‚I{ú ZI ¾× K]Þd3bH%¿¬% ÝIí A$‚×ú8pI$¿øAnI/û¤ö‚A¿Ú„·"4‚I[]¬ U¦‚¤Â[á wÓÂö’ /þÝB¤‚æF«ý@’Jãþ~H%×ð‚ý@¿~—á‚®ÿ„ø*A/þ‚ý ’ÿ|³_ÐA¾¿Bµ¤‚A{ýú —ÿ„ Ö’IòÌTá$’ÿá'ÒIWú„H%i_m/A «wú^I.ýè/$Kÿ¥è$’ÿáÚJ_ëe]$‚Kÿ„‡Á ’ ýÚÚ $¿Ö–¡$‚[ÿ/H ’ïé¼ ’KûV zI ºöð½ ‚.ÑÝK\ » $¿½,* ’í~ì ‚ Çè Z¤’_«AhH$·ïK4H*þY¤˜I —¾­4‚ /ö–ƒIP_ô­‡a‚K]a.tI_ðiÒA%¾ôi6 »ú kI$¿á ´áIrÎfi®‚ ‚©h•Ö êÂKÛøIºI%×W_Ò _Û°‚× I{ÒP~’Kô Ô I%ÿ´øH$[ý f+½$µ÷‚(p„Ñx$KýhPݤ’úý´ÒH ·}ØJÓA$‚ëúJƒA%Zÿ(i„’K¿é&I rÊû}$ ºMAtÿÂ!i$ºá%H*øA"ÞA}˜A%éýè$a¨I/ÿ„"Á •«¿ÂAAƒ $ªýi$C„è$’ßþP„Aƒ $•Óÿ$ƒi$‚ÿøJ Ò ½ÿ ¡a‚ tÿ 8P‚Kÿá&š„‚_ߺB!TSOð@’ %ôÿAIº ÿ"Ò RH+ØMý$ ‚KàƒíB˜I$½ÃýK0†A$¾Ÿá›Iºiþ ‚„ /ÈC¿m ¬4 Œ»Ayè ßà‚ ÂAÅ~Ò{étUÒzoð© ’ Ói7ú$á$[Þ¿°‚Híe ’K¯¿á „I/MïøA•®—§¤’Aý¬$‚%KÓoþ‚ B ½ý$I%éûï@’ ¿}uT ’ ’ëÞ÷ˆA ‚ÈT ÓëÖI!A/í¿ð‚„’I×½$I ºMÚ]`‚H ’K®ÃKðI„ ¾í¯xABI—,°ªá‚[è ÒH$¸í±þ"¹˜QHƒ%ÿ°½è®^#„@ ÂA×ÂH^AÒm«úZ,‚ÉÚ /ì*¯Ü&V _véS@©6‚Au°×®Ð8T8AWð×ÿ…A4©o¶½Ó :IA%ýûä5 ’IinŸáú ImPyÙB¿‡é$Apšx׫á —  ûîAUpÞ‚AÛIÓ_éá$0AtÓzíð‚ a¿®ï‡á$i%ý.ªAew´J¡;X iÖ’ †/i…öw¨U¶@È*I-è “ ‚áD† ù,S†ÅÒ „pü$0ÂIrËÑò,ôƒg5«@ Á ‚\Gð´×¹ 4^ 6’WkúkPÛÐIUÇúatàÁøI a„_è4úà ?¤´’úm=t¤ ¤_ÚÝÕ°Ã2Q| ‚m%ý’€w¥¬0Â}°@á —ÕÞ½†Fj~Ò ÐH/ ÷^žqÚ]H0’Ká2>÷Z¶,úB’ áßz †[„‚ -ëÿ¸0h+ÐA$´Ý¿I°Á„»$‚[°ƒ½/l­* •¾›oêÃa ½ ‚KÿkÓa†•­’¾ˆmõíÊ‚ [ ^‚2P_¢Ný,A´· I/ VúÙn1a†ÃKÐPa—éíë› /+T«¤Û¦¾Ø6—¬4K–€%¤÷ý6Á¤êMÊà“’^÷Ýkƒ‚ð¨+A%Õ}ÿÛõÂai µ}=¦—VÈ5lõA6’[ÝnÿPà €Ò½$ H ½­;Úûa˪mRH0ÂIzÿ¿¦Ã×ÂAA.÷öÕ-&ʘfÓÒIÒA]ÿÿH6È5oÕ¨I mZ÷Þÿl0×ÐH ØI.½Õ¢;×¶ 8Z¤p’UõPŠ|+ô› ƒY–é‚+¤•ÿÅ¿_lÛPH$($ö맯pÃJÒ$A}Ö­«k¤ØdÕz¤’H/í¥u×¶#ªaª$’_áﶺ°ÁˆjÈ1 IEqF’[îÂÚÝtØaìBA%K^ë׺¶ 2›AZA¿ƒ#£‹V>› ¥I%Ib)µ«Û ’VKûLo­ƒ ÂH$ÃA/ÝßðØ`ðÁ’a¤‚þÕ5Ö:A Ä‚AA„’ú´ý(l0ÔPA mþÈl%÷M 4º ÃI&éàôÖ¡¶êMÒQý¦«¦Áµ l ‚_°iÞ•†ÅKôÖÿ‡¤$¿´×í‡Ð@è$½¥jÒl6¡ ÐI/W»ô; è$0‚_úõa‡ÐA$¿ï_`ø$Kß»êhœ>•=ëÚüC`é ‚¨Jíý?M´©%¥ÿëI°k,…Í$ûî×M*% «øi­aá AiÄzmM0I’š¤¿õ·‚ ¹ºÕkM)7 OíZÚ„ÒI%IûðÝ Ð@‚-$·þ“tƒ JBZ×®½¾C4ܱ$HŠ’‚ i×öÒ†I+ÂA½í´›á H —ªöµéöÐ@”(zAÇõn˜4A Þ—ý,7†CTÜ"A$ú ¾ý7†APA¤Â%ýÖ†I*¢’úÝ7@Ú )¿êÞ †¡½A-Bûøzai ’TÚëaˆA$‚¤õ¦ò4ªJ»ïm솱²Ò@‚T—ÛÒmCh ’ Auý¼‰†¨A ‚J—צö$•„¿ûy( E$uÿJè0ÐI%»Þ|2ÆÂ‰’ /µì5!a«AB %Ÿúo 9r¨* e Åú··„$ƒ_÷@ÁŠAˆ=†‚매à $0i{ßï $’a¥ýz}†‚A(a×ö­[Áƒ ”izý[à $”0ëÿÓƒ$nýöðØI%d3èvXïõ çd I% ÿé¼0iˆGƒ¿õx0e¸$‚¨T}ûÕ½†[” ’Xaõÿ 짨$N ~´¯à ‚J©‡ü6¡ƒH$¬¯úWƒI&¶ú÷íᆂH$4?o®ÃPà ’Á‡þ´ƒvÃA$B;m^þ`Á…,¯úM…  ‚ ;_ûi† $¨ÿôðl ‚ICÝÿ·† PA aÿ½_ ¡ÃI$ýúm¡a‚ A¿UÚÃà ڹ`A¡ƒ÷ý7†ÐI$d3 =WÒ·ƒ’H ƒ =ÿáða¨A‚l?ß«˜a ‚ƒßZMìIB¦þ›Ì‡ÔP’ ?û÷ƒt‚ $ ?þ­¸`è$‚I‡þü7†è$ƒþ=AµrA$aÿõaæU†¨„Iå”) ÿM¼P’e•@C¿Õ¼È¸kÒI0|†íõMÐa„’ |-oÛxa„JƒÓ×Òo 4H ƒû­ÓnÃI$¡ûëko2À‚A$ 2¼ßýô¯ 4I ôÈ4^¾Ô7†H A†½.{õÓn A$‚Óòœ ãgc+Õ¼h*Iƒî->Ÿ÷†„’ ?núw¤Þ ƒdª.D “ ûµ§ønƒj’„ŽÊƒë«pd%:H(L7îúo«{ $  Ä”ÿo×۠ʤ@‚H0ÿÖ·¤Ä0i%Tor¹RÛïö ƒnÖI j?¯«j 0A’n®ÿöé$’25ÿÿö6I‚A‡ý²úàì amÙPH$Aƒÿ®¾ˆ59K [i ß×¾þ$ã”åH0d6¶$’I Ýý¯ýˆ‰,© 4H(H$¿Kiß1ÈqÏ"%yƒhA ¡Pmêïëñ a[Xa†H$ ÿ¿‹#ˆ]Ù#»a„I$ ƒQûÿ² NH`ˆˆAÈaÏå,ÏeÁ† $“þéý )Áœº8eÙŒŽaa 0i$A ßþºó¼Fãa+êè$$‚aæ·ÿ¶öÄHhº.…#à¨Ødvè%ID"ãëÜ1fÁ†ÐI H&¿îE‡ìš#Æ\.9PTŒ¤ $j¾ÿ}ìDPPç1 MÏ!`ÐH$@Ãÿýk°ÄDÎ0Œ€lˆ‘!$\‚¡"H(A0}_õoàÄD Bá²$v´A\ ‚I'ëýSûbP@ðZsA[0@ YICDk‹ÿ­ë 5!‡7n@°l$I2‡×ûÝöÈëÏçŠ9N"C4rxQ2òSA‚ÃÒ¯éù.\s"DŠ9Á‰„’@Þ‚·þ߷ЈšÑ€É„’ AëÞAJKZS˜ €Y#á’0võëûw‰ÊH$ÃÂDPëMûæDà è ’ì( }î¿ááL‹Èñ2$’ †}©ŠNÿ«k² ŽÛÄDÕ‘Ä#àN‚$™CºOÿïìƒd‚šB'Ñp< $„0xOû{w¹àÖo¨ ¡ ‚&Mk ¤WRÁT$’ ½?úÝ[`ÛjÈ [’A‡wðƒéÖ°ÃdìàN9ö0$‚@Ãÿ…û}°`â¢yRPÁÛ/ŸÐz_» БG,Ñ$aà ?Â~ßìr^wd$0ì_vƒÿðmèA<’I­iÚþÙ¤Ià®A$ƒCŽõA×~í·†qÈ ƒH ’aÓ}ím]>Ø0d1oˆ¸ Ä|$’A‡‡öœ…£ô÷r5CÄœd’AßPœ ÛJP½lbÞTà 4’ =µºiàÄÂ#†ŽÝƒ ©Y €ð‚ ‡·Õ2­Bm4#û °Ñ.Lƒ ‚T Ú]1VêýØ}YÙª0b@aí¥úÿ*a†ÚN!œt’†ê¯ÞAAr 9r,Íî'ðd 5µÓÕºá…ö 0ß—Ã]‚év ¾ôî› 6Õ³µxi$“ö@Mß~ÞÃoÎÆ‘p<$¥¹€ÏºWAöi"ëßÛ i8™á„‚2 _‡M0^ 6ÖÎÁñB$a…¤[äl—[L-°Ãn³µ >(LŠôä3>Á~¯méÎÉAi m.±·­°`ᥥÂJîš²ãŸd¶épÃo³!ò8*Ò·  ƒÙP\®*YÒvÁƒnœO`I&è' ¸ïvëØmí™j i ƒØM‡û¥¹[ fY€ÌA$ §@Îj-t¶Ømù’@Ø 0àø&‘‹²8Ñ7‰Û_iX8H$p~ (ŒÃöám† ÒÝ0áðC Å¿¥á¶öíR ;àˆhŒ†’¯m-°a·î‚Pþ@Û«ivÈ6Hi9V îA†ÁùZî 7ð›¤aü NIOņ‚öi7n’M°DuÒ •j½l0ÝmmH› ‘¯Ù\Qi†€È&0þ׃ ‡Wê‚d7qH\ìpnk/öÁ†Ý;“ Aƒu@› ¡è‡×†¶Ø7]„-„‚A‡ÐM‰ðˆ½x0ÛK ’@ÃôØßµ¶aöÇI&öˆ"Ý<¥„ÿú &¦ß=÷`ÛKl$0ÊGá;á÷°Û{é ƒ°Viýáƒo¼$ ;ì­üPžnSƒzvÒAè['½±ͨkz &;–Umí¿ö Ci^’@ÃN ˜zL'§¸oÞÒA0áð­ZrÌìÑaƒm-ÂJð˜öN D8qïl0a½·A ƒ îwD&ôül:ô‚†/“qT z¼È Ü0m¯‚H&ö)mSz÷l;IÝ 7 zÜì¨[ÐTß,]·ý¶÷ioE–Ã?Vš"»üì5Ã{¶’A¾‚;°ï¤ þÃnŸA${A.ÕÔ{¶m­é$߯"Á‡µ°Ãa×a$ƒ| ¯ ^•öØa¶džWxAè+Áä1³5M»¸6GÛAÕØ$“|6²÷Aék[ÛIÝ*o¥{wa&ûlm¯ôo„ü?úà †«zAÃð¯I¾Ûa*Ü ’o¤ßyÓVßà Â[ÚI_A7êˆM˜¥ôØ`îÛ„’oÂo½]ÊØÎßá¶Ò§´‚WËp¤ÂotBÁna4®Õ°Á¶KzI_\ƒ} „d3wÁ­ý†ÃiSºH(|[í&A«c´ŸÜ2[(p—´I÷Ýd5ÖCVþÃv•vJ,‚co`ÒÓ[ß 7­·%O„ïa‚¶ƒOWt¾’°­ÛA¡S¿l0l6>’ú ôÂ$€]4×ì0mŠVØI$aîˆ8îÿpl7¿ ¯„Ú&‚¬ËáP¿5›°Þ¯A ¾“vG|"h'¦½†ÊƒoõJøA^„ÙËþ™ ÖÛ„‚¿ $ƒˆîl:{A$× >4ߥa†ëº ™Xý„AÜíNm«4½B$cAEºiþ›Ó¦Û cÕð÷ðX0Øa{ÐH-‚ ûé; Õ{H% Ió#@"×Jà °´Þ’ Á>W°÷ð› Ò]°’[A>¿K2ÆÂTøHð‡ ÂñÂM¶h%½—…ðÈÿa²{Ñ„½ÒKÁn„2éð‚°Ûi$øAW®â†“°ì%ö’\›& ù 9*c&Ø0a†‚íÒJè1íÚ<» g^Ã’{H%TûW†¾A¸a°ë}$¾w<® »D µŽ·ƒ ÒJÞ’öwôÑ æ†¸±[XW[aƒm]°I.êWH“Ö„ðk²¶°­ü0Øu· H/`£xM"5ÙMÆÝm† ´’õ {! ,= °tÝÛ ½vé%Ý0“¸ Ë¢8.Eo¾°Ãn=„ ö¥@g¼!‰`kæSp6Ý6d¶MÒW¤ú ›ÂEHVCŽÿa· í$»j xH­m6û†Û`·t_ÐMè†{DÐ莜7ulb—„‚^Õ&ð‚ ØmS~åqÃmµ{@’÷„èdØd›¢ÛÕ†Û«t«ºAo;.6E†“xH%í$v"“;ݽÁ¶ý´‚ oÐ}!;^ûdU_é/º…x@Œ¨ ¤êíÜ0ÛWÒ®[ª'XPô•#²€W[¶Á†ÙOSn‚ hn¤VôtYÜ‚ºåVü6ÝÕæGEÖ Wua2 h‰˜*-¶Ø0mªå,3[ ‚íÓÁæYâ<,CW\ Yå°m¯h‚KøÃÁ†–'Zž¶ 6ÒK»I-¶“@¬ÈpT 0˜öÛ· ½¥†XdW-0Kl¡Ãvpô’ñL< Èè Ya¶/ˆa¶*ÛØIÞî"œÊ°Û« 8~ÈbI/^–dwi;M¶‚Kºzƒ ݃nºô’õ üÝìÈPš²¸mºÛ¾Ö†¨V ‚ºå; 6éöð”/¤Þ‚afE€ª¸`ï½ÛP•BTý Ì‚ÁY¦Øaµ~Ý •Õ&ôšÁS\ÊâÁ´Ý^ö’^©ú{2YWl2 €uÁ*䨠SéSfI@§VÃoÿ„—U¾²¸àɸ0a†•ûh — mçfÓe{dpW;ÚÛm/|$— ^+l3ˆY=˜du¶ 6ÿÝ$¸^®±#‘_ÁJ.¶ ½½m‚ëþЕÐðû Ý[øT¸'õ帰Ô=ÎÒ#ƒ.‰1AV.×ý$ ßå¹X,Cì!S¶÷Õ´J¡JâaˈG"8û-ÂÁb6š†¯­$® ˆ‡ö¹nHˆàO{øaêúØI.šz\:Pä ÂÃJú 7^–‚ l"Cí¿U@8/ÞÛ†˜v¯¤é%Á® H¢v˜Gj€¬Ú]¥i%Âwk®Mƒ“ŠÒÃÂa°û³a$ {u„Ò&ÉÁ™MÕA—ÞÜS ’áo pU ïA†K« %ѹ ípƒRl¬ ÈøA…l6 Þ¯ZAÁ)î†M"l6†­}/½ÐIpˆ(¸mÎ?0¤ØXµm´ƒi}„’é+m¼x Á"lZ†bí ƒuî’ ‚ ­·}Ø8 g2J#ÝÕ¹ ý$¸A{ïh гÀ:·H«ÏÐA.’NÛ·„LÀða]´ƒjôÛ„’¸ JÞá¼ úA‡Wá‡ýÚIU[tú › ¦ÛVÒo{ ¸$­¶ìÞ‰½hŽ޶Â@ßïérÜ/@«mÃXz !3àÂnÂ@Ú¾Û I]-¶òVˆæîv040ðlmŠ :¾í —¤½Ä[Ò´Kï UP^ýnV†÷Ûp‚K–å@a&öŸA¶†•ïiAvÛMà‘6Á‡m_­ºÕÂNîø@m¾vK·¾AÁ[bú }¤ÁRuví¤”›, šíðI]· z (è!mÚÐ_¸PÓ»á —,68 ]7Iꠒ辂¿t½Ý$AÞ¹3t·i^ÃÒ[„ Ú ¹°]dd5v{»´Ž© ¼C…È6²~Á Óþ„¸AtЄv:Ñ fB¤öÜ$[-õãMŠÐ0BDzä4™+¦ o¶ÐH.‚HíQ`‚L!#oL†["º¤ÓÜ$º „“ºnÈíö’[%;ÛÈ.È*ð`ôÒK„©¤ý²#!e4ŽÄÃlŽL4÷I-DevKCAUTÖ-§ ˆ8dq«ÚIp@•ž‚iyÒ C•µQ†´JØI-µzÛI¶ƒÎ(9Ç ›g„’¨@’_W¤ð˜¸a•µ8T »tž¶Ò±@òr¶7DÈ.VÝ ž½[C2e$]«nxIvðA=wVЃ)È*l7Õt[x@›V›A8q$a]„’è*]PMÖÚ¶W˜q&9̈~n’ •ÔÀºTðAué6ây x@ÞJé.Þ‚m-Õ¶ÄÌ6ÐAí—$–ÈøM&êí,îÓ’@Ú¦ÝáªÄ`‚×}°ƒÊÐ)%áap‚M[&ë´­[;5EÁU&ô‚]#¤;A6–é6dªí„—•ÅÀ¸¨a‚ ¬´_jÙ³³á»è@¸*VM¯N•‚‚lî°(wI.+ ß'¥$ºØA‚áž>ð’\% €›WzXhBqèŽݤ—Al&¡¯b  ÒlN"85vAt• Á6–éè,O287½$¹]XenŠíT%‰ÄGí´’Ú „Â}îé±>ÐIpˆ(6\&»ªDʵ†ä3ŽVÖ!Ò»L/n˜I;º.Ôª‚àBZ}ÃÀÁ¾CKe¬ ’ØJºk²·oh‚¦ÅCIz Š9æ² ­•&š§žÛDœ­˜`’ ‚2¥M}ïvˆgHöBK‚Cõ}nè‚A´röK„ ßnŸ†‚#€T ‚è/÷öØd|@T0©- ¯¿¶"ˆ«.Eö[&÷Ý-ÜMh týû°ŠÀ)Ò\m}»ö‰–GŒÝ º ¡”-ÿ†Ð‰86Ö¼%¿»A‰rh .dH‚ Ò]»\4v¬ é$ºDÚºë¶eùC±0<:\a¥íÝbçe y„A0gÁ>Õ[s°@fA\L[ºjí©@K¥Úi^v´ ‰p@š÷Mw;4ÅáîÓIó/¤J«Â!• Û2@e%Â÷¶Wƒ„&«zm°Õp=­…½Òá/wD1Àè/.Ö «zApK]† =ª\ µ{ a_A°D 2) ¤!}ðÐA…ú\$˜'‚í¤-Úh.”5ÓäímÂ.‚\ Wéí¤HMé2¥ªéZZðÐBÛtÊ–‹„uÖà zÚ\Aõds·°i}8K„ ´±l ›oeK×ï°i>¶‚è-.Ãa'zuáßᆕý º _¶®—þYËt¯­._¸`ÂM¶“+fk‚ ×ÛI½p‚à_áË zºéƒ Ú =«„¶µöž´/øi=Ö—þаÁ-ý.-|Ci7k„º ×à­ëK‚ ÿtŠüŸQK _å¸&áÝÒ „­_An¨-‚R7†’~‚]0ÊYäQþYÕ +´‚ð–é~YÖIßKa.ëñAzÖ*ÿ ·Â — ½µ¿.ÒK„ n¿A7ét·ÿ mÐK‚[jþ‚}Ráõú»ét ¿ôÚIpAm¥øA~—ÿxIÛH ¸A;iuÂ& úK„•µü*z ¸K×ìH6í$¥¸ë-ú‡¾”pD2Ú¯Ë R Û´VÒßñ.ß^û¼² ´ û¤¸@¶¿ÂPnê—þšÃî]×úA†Þ’Z'ÿÕ¶üìè% í …Ô›¨„®Vÿá+Û¤¥yŽ‚ ¯wAú ÿá&Ú¥V-¯ð‚ ÛªTÃH÷ïƒïA.!µý™ Õʤ‚à_oè0ÿ«¥º ƒmºIs%DM¤ï´ƒ¼%Ä.¡×„ƒ{ét Õo@˜6õ+–á5)¿„ƒî’è$Òü$7t—„ kôƒwáÒjPåŽBú{I. *ÊÝ^‚AÌ\#oApˆe³*ú6î¡- ¿ ô—2.ŽÕC7ôƒ íRé¥ù‹´{Ò wèa& ¾«b]a40{è.»¼$ÃoIp@·¤’öð½ýƒí¤•$¯ ¿Al§þ@Á½Ò\& ¶aEôÛP—PKí µâú^‚ ô‚A·é/A/Ð@“µAt%ôˆ¶VtÛÐ_I? “‡Ú ºH,·5^ ©ÛzJð‚ û  ÷Zé XñAP@Ãí — Ä ’î¡ m»Òè$!zØI‡é ½ üC‚ 6ÛÐ[  è%ŠIÿIƒmÕx@¾ét»mÐL6í$+c+Óp Þêäh*aÿ ÈeȱÝVÐj/‚ ?Ò­ð¿oH6÷„·à‚ýÜ ºH+~ êéµH0íè%A½ ‚·¤ ¾©w‚+ßoAÝ%·£³0iAë°ð‚ 7uKm¤—zL7º d;¶Òúm½2‡n’ A¶ÂA½ûÁD6þ—mŒ%ô·„ ‡¶©v ‚þõ Ão¤›p—ûá níBí¶‚¾×¨d2¤^ô—vûLˆ‚ 6ÛT½Ì(®#„ƒoÒUmÁ/ÛA0ýRöá/½ 6ü%꾩î]Ü ¿tË’-¤–¡aý(A0ïÒ†­/ôÝô¢*ê ;´‚Xa/´ÒoÖª%,ø¾Â ƒí$°Á,}a ·Â ˜@¿,Љ A6úIS/ÇH;|%D[¤þÍÁa÷IRl _ˆ ‹p ÊmÒJ“a+ð“ »`~‚a·ªÒÒ¬›,¬ †ïA*ØK±Ô0vÚÂ…Â~“ ï W,´-ªÐA‡wIU  Ûé »A.ô›#ûzXL F‹¬$ [z¥ Aè a÷ID _„†ÞZ Ýöð”·SùeÉXmé ©„»Ó@˜~´MË8Mý00Ýè ž ‚þÑA‡Þ_jA‡z¥´ŸášpÃmºJ˜ —Є~¨*[ê n’Zþ˜wj•¯{ë@·ÐLwH-A»tP‚ý ÇxKýä36©P•'øA‡!¥°^–úAÍØd6+J¨†¶Í?@ÃeØÖ‚U¿I¹“z ‚¯&éJ´ÈæÚ®­ñPÃBC=$ •'Ó¶J»^há r‡(Ωi?PÁ¡5—¯ÓÕƒDÀ±H*u鶈 ÔT‚_&⡚†ð¨>¸a´C3È jáVûL0h#  :TºaƒH„Á¬—A •}l0ÐDlªÿí„:T»Ó "ƒ"Tºé‡4¥[©7 Ô-w 3XeHaÒTA²G×L4‘HK!¥*¾ˆk™´*ü†á0dt B %Ê’¶MÊW¢ ,”솧„²$Ëd×Lƒ¾SBkøßÿ÷ÿÿÿþ×ïëÿÿÿýÿö×ÿUûúÿ÷ß¿ÿª÷oþÿûÿÿÿµÿ÷ú¿ÿÿÿõÿÿÊk)£P_¾YAüK[̺ A•ü¦…]ýËmm‚&˜'ü¶‚‘@ ÓÓë–ÑH8" iªiÿA½M;½?å²d0NÕž¿ËfaK¢ú &þ¿Ë`™ÆG D'Ü>Âú°„H`€i§ÿÿ§ª÷ë¿ Ý§}úêû@õûÿ½]¯÷è†Q×ÿÂÿò ê ÿzýúoëzýßUþúû­¾ß××ëý/!•Ëïë]~ˆh­w~¿¶›º+o­ûºNÿ¥ü2Uc^Ú½_hÉ)¨h§ÒûÿÝï¿WÞ¿¥¶µ«¿ýÿõ÷ÿýSêÖÝÿ¿ï^’w^½µÿÙeT^®µª÷÷ø®¾5ýãýþÿ¯¯öAxÿÿûÔ?ÿþ¿}÷ßÿ»ÝÿëÿÿMýïÿúÿß¿ýmþûwý«ÿûßõ_ï·ëë¿ÿöMοÿß}cßßïÈlf ëý½ûì3©÷ÿ¿ßiwþ¯oغ~ÿoïþµ½†š½ÿ¾¾ÿûv@º¨ ÐŽßÿkGáÓÓ¿¿ö;÷ßýßþûÿäï~Þÿê›ßo­¯ÝÓíõ†ð×ö¶÷ÿpÿËIB÷ÿÚ Âý ÷‡Þ¦ ÿ·´ôíQDq /ûMï¾ !ÿí»U´!ýÒ½˜L É´ª¿÷pÂd Ž„}Öý!œ!9C–ÓÍí÷hŠôÓL›PS]Ú !ÖôÊsŽïÙ'B#üFï–¯ãÿ¯ÿµûý|›¢o‹&à_Äm¯].å¡'ÂøàõÿýÚúÿß÷ޟߺýúUïõýýý`Š~ñÿÿ÷úù7ZñßÿûÿÿwëÝþ¿×¿×ßÿ¥ÿýÿ}×ÿO^ÿ§ÿþÿÿßÿÿþ¿ýªÿÓ½ÿÿÿõÿ÷ÿûòÈ.µ¸ÿÿÿÿ{÷[ÿÿOÿɸR®·ÿ߯Û××îM•Wìÿÿÿÿúÿîïÿÿïßßý}?õÞÿõ¯ÿýÿ÷ßÿÿÿºÿÿÿÿúöš÷ÿëíÿÿßëÿúíÿ¿ï®ÿ[öºþÿÿ¯×ëéKM:ö~¤/„‡Ð]–RêÂZ}¶vV°—Ká-aÞ¿°–ð‚øA{KÐA| ¾‚ú á.áð‚)ª—´‡áð•ð‚®_ _º,–¾!“rÕÒQ¼ ½„¾‚Ö/HÂ[Â_A{ Ú/„´ è°—Â_ | ­éUBõø@»‚\´-.*{KáTZ(ú_Â_ }ð—ÐE¦±ûk@‡vú´ôTðHo _ i¤¾^‚ i¥ð–ð‚Û„Ž·„‡„–@Ã0²•†¡È43h,†“0n²ÌÄ–AQ˜² ìÄô ȳÂV‚ =@­œÒPÁà”‡„ È-3©Ò‰›#Áa(Äœ¦(0v”²À3Q5A–_¡Ò–RjÂPd Ù넲ˆDp,t¢Á‘ü ¥”À¤RÊ6 Ø%,¥Y¥A˜rš Z Çm p”Yæ€HAK) ´²¥á¾Pe8eÖ(† Ý)h á"ª9hд@ðÝ¢¨A ´m(2 í´ ‘ ôd Là‚Ȳ­ÂRÐŽ€ÎGôHÀ<7.¨–…€g°‚,‚j é”^‚0z àá»(E]D0ËøA ³ ýC ~Ë\%gr¦PásÀ}„IÀóÒ–q°>ÂPa¸@¥žhõ„¢E@ðÝRƒ |È K:¨Zw {d‚Qd Õ,ÃP<°‚–fç™ ‚†@ñYE)fˆ¡,ÊÀñ‘Ö–apÄµÈ €gCÁ©k¤ÀÞZãq ¢ØZQ µÊÀðk–˜D[â5á™%ÀðÙ K]l -s0<¥°èŽ Q ªÒ†S„1 Â–°kƒ ÇQ8 A…-€Bÿü®¡GÿÿòfŠ?ÿü€©¢å˜h£ÿäKe‘:*QÿÊemGÿÿò˜YüÿËHYGÊ`Âÿ)„ˆŽˆô¶ËQrEË)tZ@„„;‰fÊX9(i§-…h¸†Á0ÓO¡ –†R§ÜµCDD¾G˲èªA¤ Meª8 ˆqÊä3 µ3¢Öùj+EâèŽDZ¦iº¼´Æ#†ICH ÓA¦GH0œ=5–™ aªi¦ƒ@í?–jË#‡0Š‚H0V-a¦Oî „Yta«ímöåœFÙÓ¾Õ0¡;[áƒ#">T ª§Þšw¯B 4ÿïNíþ#¤ím5ý;MnÖ»M4ÓWjŸ¯½>ïû¾ÞO¸Uª­ëïµ×Ú¿Ëwµ®· jšÓD L§Hƒ}~éÿÕ|´¡» ½{^!ª9‘„ ´xMÞŸõøLƒOP9I­5OßÒ»^¬ˆ!kÒz{×ÿ|†š„ÓéÓI7}úïë¿Ò Sßÿþšëëû_¥ÚÈhç—÷­7{~Ce­zwÆý:Mvÿ@ÂîöþÈùnŽ«ÉpÐ]SÇ~‡×÷ˆ½ÆðBÿú÷õ|ƒXá?ä3»ïzÚÈ2ÃÕ5_Ò~/…hXÿÒjÿÿµŽ}'ßëmÛûÓÛþÿD4>Ó÷ßí_ûMGàû^¾¿þŸ‡àŠ÷Ý%¿ôûwÈmÇzÚOÛÿ÷ôÛ_ø"Ÿë½Õƒ«êýjÇÿu]ë_ï­ú[Ý‹«~ýuÂ#«¶¯Ç î¼wÛ]Ó»ëJ«Ó·¿{nÝý¿að´ëwú¨K ÝÊ1¾Úa¥o¢ xUµárC‚xCé°ýw¸;zp®C`à…k†½0Â^² <`? H> „?ÝÃ.X30ÌWîy„õ×ìGöÜ:îò wûºÝ={PX/ïµv±y Ùµƒíp¯ÿÚ­ä4'·uÃÿÙw{í ÷Þû½‹#Ÿ«L-éûÕ}ß{wפü´/{© òëƒä‡  r°ñh==?§äðH£”Hï¦ä/ 5×U,å n;ßxq}ûi;A­ë©g ¡×^±~ûÕÓNîªûOßûk´ÂÞ©ªÿ¿þݚà ƒ@È#œ…R÷ÿëzva4Ó#u«þýöš ‘º"ŒGNïöõTLhF•VûÓ´Ó´àÈ7Uuíý4Ða4V‚wÿªªh4Á uÿ²Qvi„"%ª…~šwÚh0˜@Êóeº§kªÚ †}‘ëúá4  dv©§i¦Aw)Îåû((aSÓA„K.ˆñPŒ!°˜PM „""0Á4"#†YË#ñjzÿå´uòÒ5Qÿç`KÄ€û;¯Ü"ËQ"òÔV‹ÅÑè á¦N„¨‚¡ B¬*É0Ð@å¦12JAš 2:A„á鬴È SM4iü³VY9„TBA‚±k 0šu"Ë ƒ5Xwko·,à¨Â0ŽÌ†ö©… ÚßDò TíU>ôÓ½x Â`˜A§ÿzwoð™'ki¯éÚkv°…Úi þš»Tý}é÷{ÿÝöðš}Ãú­Uo_}®¾Õü†[¸}­u¸kTÖš be:Dëð¯Oøö«à…¥ ÝëÚð™ QÈ4Œ `= ƒÂnôÿ¯Âd|‚ÊH­iª~þ  endstream endobj 20 0 obj 46 endobj 21 0 obj 39698 endobj 15 0 obj << /XObject << /Im6 14 0 R >> /ProcSet [ /PDF ] >> endobj 27 0 obj << /Length 71 /Filter /FlateDecode >> stream xÚ3T0BC]=#s0ef¤œËUÈe”ÐÉTàAÐ300°€ #±±©Ö÷̵TpÉç „C…t ”;N> endobj 24 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/var/tmp/10089666731916source3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 28 0 R /BBox [0 0 512.77 648.10001] /Resources << /XObject << /Im1 29 0 R >>/ProcSet [ /PDF /ImageB ] >> /Filter /FlateDecode /Length 30 0 R >> stream H‰*äå254Ò37W0B3 =C039——Kß3×PÁ%Ÿ—+— À¢–½ endstream endobj 28 0 obj << /ModDate (D:20020211151608+01'00') /CreationDate (D:20020211151555+01'00') /Creator (Acrobat 5.0 Image Conversion Plug-in for Windows) /Producer (Acrobat 5.0 Image Conversion Plug-in for Windows) >> endobj 29 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Width 4274 /Height 5402 /BitsPerComponent 1 /Decode [ 1 0] /Filter /CCITTFaxDecode /DecodeParms << /K -1 /Columns 4274 /Rows 5402 /BlackIs1 true >> /ColorSpace /DeviceGray /Length 31 0 R >> stream ÿü€ÃTM8¼´ŠÄìiGÊ䞢S!¨–ÉAÂÓÿËT<ÿÿÿýëïëȇÂ}ázÔ+cÿ¯ÿ »YjþÈ™í'Zfjäpãh~A߃‡ú Á5¦á}Æ»ivÿipîÚ_êÚûKéZºÓKH)öŽKÕiRÕijº©ª–œSZš t¿iœpQeÑӧ帚¸–lÒÁán¾Ë"Ê^7û]×ß_îî¿×_§¿_úõÝëÚ舯‚æOuø_¯P“ð¿KǪ{Ë@’–{N£å{ñû_ûÚì¿pf‚‘×Ñ_ƒ¸¿Mßä£í) 2Çè;BÁ»uM†4ý¼·*OVÔZí¤þÒ½Ý}Òë¯aUv ‚#¤ÿIëRÕ§]4ºaz×´ºév—U÷GYø[÷AzëôÏ KñÓþÂø3g+ ¢ºb"?êSd—ÿtû½WüìÂé§ýé¿Çÿéÿþúûëïý7ëÞZbiV;Ó_ï¯ûùÈŸ1Ð?‡×®ý¯]ÿûí{ëÿ\³ ñÿëßÿþY€Kãÿÿïÿÿÿå°Uü}ú^ÿÚÿúÿý{ÿÿÿÿïü²!|kýÿþŸûõ·Òï©?„BÁMTÎÕ#ÎÊAº#ÆþèDH.äÚƒ~H(jijv6¾b¤Ø!ØfY’ |í@d³Çpˆh“±’„p¤vP¶ƒ@Y‚ ÖåCHqdqj" €!Jˆfƒ*f øâ!›DræEÈ_ÎÐ DY28f±r<)ÎÍ$QÊP‰؈Ð9bå3#$PN†\¨PåñÜî$rr ÙÖ³ <3çc†hˆ‰.!Ÿ‚ xfŽU”:^28Ì#ÁœÈj˜Ñt]`‚t`0\2£‚ Ð9È•€i$Eà à‚Xd†cqAàã<ÙʰdaÀ³*Aš"$4GGˆàxjËH]fTA"h˜D2ÍŽx+ÙÄÇ ƒ#%aš"S¢p?áh݃¦ÂH°5 k™ƒAØ0<7Á&â3«Á ¡Áä „Ðêv´ byÁk›•ƒ_A¨p„‡ ´›5„C0ÝPA£iD ØY L>@χ(s° ACPhÙÙP5‰ 3è aðEA¢DÈ3°+ÐÈ Ö|Á#!pZ#®0ùØÐi™eÀ rÈLƒCAžv4„®S°ƒ|" KŽ!ᙤ;—²º"8,‘â:Ć…UA©u ðdZð‚+>Yt Þv€Ô+‹™0d ó¿ 1d‡2hZYK†gD—4"hj †k@®ƒKyƒ#ÆYLG&A¦[Œl>VƒLôÑ`øAâÀÎS%ƒRÊ. *¡¤ údQáƒÙ ¢è·Zb;)’àîYAC3 „›æS3 Ö„¨ë6 eð¹e% Øä\5 °4GÑLŒ2 MäL52š`e”Ì3y 2lRˆà|G@–ßOæ–‹ ¾"l¶ŠSBƒα4ɺ#8@²Ð€Ìà„"nL`å¶Ö4 ƒC('"ĈÛR!š+„MÄÀów`ÃèƒI¸QáÎÛ0PèpÈ4²ŠðDÝeÀóAÖZ †g‚Ày‘Ò aRZÃ3Á@Àò aöd—âÚXh ß!†A¢ŠÚ, -!™ÙÈXT=¶†‚Áƒá‚0>Ü´†_Èdä|Xoƒ#jelðlºå” XbM—(²Šæ[*€cA¡”{,¥@y _eå Ð3%¨¦œ²©ùYà3%¨&YVó-‘—† ‘e4Ú ßcP`árѸ3–Î]ƒZ‚ E‰ -H}Š Á×- Áœ¶Ã/,õƒDµ ‡-Àø¶Ã+A¥]h´â„YÔLµƒB–P<`ˆÚ”0pe ¬0eœ e©P4å ("Ø5ø7†`´,æV ƒC BÔ˜5e¡(2èµËÆ ,³æGÑk‰VÜ"£‚Äà C0²YêÄCd‘¸"aRÎ_.‘k¸ÖZd¨¸48žÂ±(Ë8¨ibYÄÀðáQ!²ÓS•,å9µ…@ÆZ`¨"‰LNâ„ ,æjZei,³ªáKZ ÊÂ!™xB ,é@x…­á—–p`ÐðD37ÒÌ5EÀü’ƒ$Á )˜4ð@± î " $Q†kyiƒF!²ÕZ ­mË–š°jË2°X-UPÊ}”<²©†aè†nÓË1@) bA|OàðAe˜6Avp@¸"»Q•Õ, ¥†`ÖZa P‡+¨H‚‰-:C(W-: „}lKH€Êt'„$ lRD.=$¹i¸4å˜& ¥ª*‹( f¬´ŒÒ!—²ÈP@µ+’áñX(@ˆé4ŽÉ#AËRËIl2ÌV Eª\2‡£µ Ì„GÁàÕ–`€l. ê‚Hƒ^ÅÆ[†_-%@Í"´„ ¨n.ZAA—–f€ÙEªeaX0à‚xKD55h“ ¸åCÂ!—±õ¤A¨¼µ| é0B|AÊÞe¤6^Y˜ÙjÀ7á4DVY† Ù‚ Klì8ŽÈè“Å¿†W-!°ÍÁËQ,2›Kp„DH;’s.Pä2¥¤"Ãp@©-ÐŒ.Ae`5ðD .[KnÊâÁ™Â“tˆ·øD.K´Â ca2Ò™ÙBD5‹%¨ 5¯+†W--A§;PÌ"ʲ ¸ µ·w*ÈgÈK„C.CT Ð, ´Èú ˆØÖZ^ˆàÑÃ,  Û‚ WäÓ aÔeÂ$-†YJ$CIjZ‚híÇ¥á¬AËØ¶È/‚(qXB ¡Áà–Ñ@t$4Œài*´.†lm6YR¾—Ø"{Pˆel¨’³¹C™Ìh9e ¹jZàs!$YÄZí„-k ˆ"[ û‚e© Ò´°ArÍ„ý´CWaÂGbv–¸ WAH(öYfØ"ö.øXK+Ö¼³JC2B§+¾å–·-L ¥Òƒ<`r͘C[ØAQj8NÖ*‚Á‚­rÈ–Yi¥ @¯®Êó Þ¡ÈeÈ[ø Z— á˔Ԥ¿†¾Æáô¯,„ˆ$¾‚ _kÐ"R׈fH±~Y³-50Ê]+ÁÁÊRõPà²Ó ¯JBÙ’ÐfܳC ß|²ƒie¦Vw¥"’ „ -h²hå¦.‚ž´ æJ`ÑË7Á¥º„$4¶«B¥·‚Ë5Á¤%éA0lº[àˆfޏ" [ö ²Ó ËÒü CÁÍ‘’[ .?·‚ ¥˜² <$, ¹i}*| ®†jî†YÖ†T“ïH‹_™ ƒGC-ÂJòÈ0pA$ú]½ ‚B¾Y4L UÚKú!™³ØŒ.¡ NZh ¥n’ þd ¾Y…Ð\†!™(q‚  ö!èð@Ú91Ër—J8ä5¤"ZvÚ‘ õæU D$·–`Ø5BèèDA„+†T„“­…¿B ¢‹Œ]ì" ’QÝŸ üÈè\"¼>WL.ÂÇKèArÌP©^Ý„A²CRÒY ¿6A,ãÚü \ µÒ/|, IáH ðVÖfN u /ä+•2 gr‡„ y ÄG]Ë0€iZVà…¡åq0Úpˆ7’ ´Ö°DW*ú…šÌ®m‘d´)S×;Z +–gJJïM:°ZwX" kŒÁh\]}°•¢º°mÁ/%º ƒ½pˆ4®†Zåk¬\JåÁ·†É´ %RYØX4rÎd©?à•–ÐeH³*)ÐqXAp_¨ Të¸!xM¢9ge`×Ë:©ÁWíÄÁS-%a•ºN¬.غšÿ–•hÀfSÓ ” \%ÿ†Òñ.“p³±°ÓäܺÉQ%ߕՂ®ZZ†]7· °@º–õƒHÂý2¸ÀUËHàÑ]6’Ø$/A^«†ÚáÐ%´¬®jÅB ˆ"ÍBÕr¹¯––e?c„A©u\ ¶÷ôÁË]_àìW,äÁ¡.ú+̰A%|†ÁÌÜZ.A/¬" ‹¨¢üHÀØ \³ˆŠð– ¥À¥š¶[k!¬Ü ‚TÂX$™fª†Zü‚³}ÜK9%| ³$°VË4,3?X²—3Gf¡«ÂMêDRT@ŽY’È+a 6‰æEnd4›Ï,ü KáX@œ/TBŽA¹+–w¤‚a4³%=ÁÙ“ƒŒòà´[©†§ -4 Hk®,ÑPÌIÂi @3Gkp"mëÂ’ Ø,ȱ¨‚Ñ£ì´ËBÐ4j †w ÂñB Ë4h2–ÎÖC1IP3„’€ÓèH¤DptÄs!pVÁçj Ö‘ Ãr>`‚àÕb8(AÙÐ)©f¨ µL&‘XDp?L 6æ ¶â¡œ 0¸D—3‚ ì4„œ Ëö rÐ ±¦¡‚!–Üz‚ bc; “2àÕå ¨3)|y@VÁÊo{hí:#ÅÁh"ì"mÅ´¡Aaá¦B$à´Gh8S³0Ôå HÃ!”>y•@ËEšpÊz; •í#¨ ‚è†`ágÙE)ôAY¸pAÊ‚‡@‚híL&ÎÈ@®Z ƒXˆ¤Ùßtd@2eš;Pn0™È!Mð`˜Î ÑÁm“@¹—ƒ-‚An,„ÌÇ!ªÝS œ.´A"n` ƒd@#„Nü'l!y“‚¾†i¸ æAšì \ ×Ih=Ë03Ñ“. Ì4Á*‚:h<í,pHë<L0š!¨ÜÏD2£ªxDÛ‰Q £q°³ ¤lä0å)\5îZ0A§’ƒ." âNQGâCLÚÔ ÓptC8!7‚ ,” AesTG ñ!Dˆ0áp@¹å!àˆ+9MʨAb„] à’É2æÇÂ!–éQ¡°›ÎËA”rÌ Òl*AAFW Y]SË*À4Èk+Aó²„,³ƒ4"ňÝ!¹§LÁÌ£q» ¨6¨A`‚ ‚üSÁ!S:|ìH ð@“A¾Ó¦úáÌ7²oD[­K0¸f&&º`¹e, ÐM„& Öˆ_Èl“,¥Ò !Ç]‚‚ \vjâÜ­Jå”PÂ$£j‚¹´Aˆt‚†ä•@Õd9°Þq°ÒJTëAë‚ Ë3Á¦›A0Ò"€ÑÁË7)ÃHDÐ3uA`ˆf›,„0 ÛH–†ÊYeV  )öš ¯ PƒW°cáÌ7 bm"V‡ø2Ž %M’½rÊœA.¢¦,,³¥U2ͦCú¯‚ Ðn(O ‚–Aˆ" ãê5Þ@ˆeMÈ\ФW@ˆf›å ÛDACgË-  ´A©rPDui ’`ƒ–_ÁAžA±r ¦ÀQC4Ý&•.YG²n&m7 ®¸™sa)g+Š‚ €k®ƒq`L+D × ÃzøakË"P5 ÝÊ D Ô–qPiz;4A‚ׄŽÔâÜ´ˆjÑÎA]„C0Ü'L®*Ó^ƒFÖ%¹JI¦!4 o%°²Î`}1ë–@¤G« ¸a"¨/Ë€—)0l0‘s!pSË8@hO°ˆmŽ^½šB ßnÃJº2Hùg«¨ F`Ó 2ܘá $;@´M,®– ­\² ƒR„A¾ç @8 ¾YÃ_ClpƒU–ã¾äÈÐ0h†Y¸£KHZåôÁþGP‚ ¦n<³ø4q ÊK+ª« „”·Ðá¡@ßp Êo@5pˆm+‚ Õ-e½½†Ø4`Ó$–YÍA &’‚5Ë €jL" ö¢v1 ð7Aœ‡- @ÖMÆÃ\)ÚyÁà‚L·bvVˆAaC/Èw*ÂMA~Y@ˆ4ÉEÊñ‘ÁPŽH‚pJƒI¸¡úÓ̉˜*¿BÊé@¡Dœ!@¬Üd´)I7 .aòɈ" 2&< ¬2Á0°H&`ƒ*[à„‰ ¦ÁÙ+¨4`œ´†D$IöE¿$œƒ+“">“ ¬nA¬ÜP °ƒɺX5®W •Æ‘ Óq)h "n& »&î@*µRn° ~J'ÀÝ…‚"M 4ÓASvù7TA“aep@UdÍÊh 0Ddž„/¡åq`Ùeu0×`” #q@C„Ñ /„Þ%ÊâH ‘ 6WX¸+-åÃP"$§!Ð@“aøD$Hœ„v_‚+¥†e`„ƒQ¸¨Z2 û¯pD3dµ°&“e»†É †êPˆj›Š”8+ ÐkäÜ <"&Á¨M"F⢠SA0Ÿ“q@i\®\ :mä0n³@‰¸ ´BÓ²{'äÜ ûA¾Æ«…‚ÐAÐAºa|H=Zu‚¨A´ßô + Ý`r Å\'Iªäܸi`ˆhÙGpZ´ ZMð¾Më %+Øh¾Â­B&Àd_+”´éÂù7 4¬ ¿+ªƒWÑ6 ¾öA•z‚ W+…†ª] d¨Zêd\)“ 4EÃã~ öƒ iÖòo§C™ƒÂiwaøM…Ú| U™)†ÏÊåÈm†ˆg):°¨.¾MŒ®›%z ¤ì6AúI†ÁIí µïÁ¸"öfõ+‰`K‡6‚¦üÈࢶ¾M‰CQ&ÌŠgz |?AÓp_à»t×&ÊA¦¸D3‰cvÒ+á£a¸muþïFV /ô œWø »ÞB.uw„Òß䨴üÈ 6=Ú‚]íÖö§faª¿\›†šV!WI8‚½\…pü{Ô_¾M…Ró `¢Øa"¸ÀXÂZ ëÞ…ý [D4J« Ž’@ pƒ  Ã­vÔ_êæUtâ0ƒ^¾¼íL ¯\" k­,È€o#xh®@,?°o÷ $…'ü›( %°S´d&26 -tÚÚ[ $v ‚ûy6´áIØ@ˆ8å( P/Ô¶Á‘ÁÊÐD¹Ü›j•`—†!d`,{°ÿv)MûäÙ®¹Ù lI°Ò ÕxaýmAPbMj¡¬/ &hcøaô®çbÀ¬ÚËþGaqÙÚÀl§Â /ÃoöÂ0“þM 5Ôƒ¢bÜíP/HH’}ƒU¬0úå¹ k^ ½ß >•¶BlP »¿áýAo"Õ臡s/†í*ÚD6ä.B½òÝh57NÂ!¢Awz»­7Gc`©ú‚  Òh0AUéÖÒ_AµK–êA¯º¦v6éeÞlíQXaé~v¬©ï¨D5%ßÎÌz})]ÍãA‡ îô .Z‚(pšw¤ n©ª­ƒŠI󱀯MÈ™£p„ƒLƒàË"Ž/´™ ]éOn»Ð-â>[‹žâ"v 6+õ ×´ÿnqkó½Y/‡-ăWPD4/ öì'JÞ‚¬–ïôAªDôôµømÁ*¾åº@ÔÛ+Іíd m_Û+™=oAUs[ü"RT$¯ ðÙ]`6B ¯‚üƒqÍ~[ˆ o«Õ#cWû§x" Ëç ~†¬…y] (Û XOá†W,@‚Ýo+HŽ ‡g‰¼xïß‚!§"®ƒuÓ¯£‚û`ÂM¦Âwá·ôë-èÚ•Äs$„ 0@¶Ó@Ü]ÿø"² nˆl\%º¯Ãa.bé…T¯_ª ×%^ V&P‚úá†.×È()mþò¹ jÕá¥}0ÊéÐ"Äï§„ QGkü+̵d” Û§KØa‚¶öœdºëî*Ì%̆"8k­t`ˆ*íU ɰ ƒ¶½pˆjHÑØA‚ Ýq]¡kû ¶Êãc#°È.:pA;Ú]òº jxA¢×)¶d@2%öà ±Êr¸´D@šv×ø U¦FBæStž°Ø@±B6µðz ¨ ¢ (]á†èƒ ë`ÂUò¹PjÞ ­£°@Âdd0[#a¦]xa™†VÙ651Ù S«ù\X5ý4AFÌéÚ`„-‡ìD ¥ð@¶"½`ˆj®3ÈY³ (Ó ¨UÓwa‚[`‚ØO¼®ÞB‚ Ýu6uùØ?èh¶-’Z_‚é0Èð \<"†îºuPÙòÝH 0Õ¿+ƒÞ¨1Içi4@²oöfAÂØDvej¾«ö'¨þÃØAa…C]qJÔ†bæx …m?A†e¸°)á®ú[Ó-gzá¹1„×ö¶^ˆi.Uù íÂŽå9'X@„7ü0̰ Û -¤þ-i¡"’ë š @“°AÝúÈ!µpA'÷°a.ÂêŸ@¿…Ø-û† ûIp@·µð¿‚£±Á?¬6v÷-ôÐ-Uz_½„ >­0Á„ ¶Ÿ¯×Ð@“öœ6&qÉŽKt½‘°Nÿÿ+@ÌwæG SåÒ!è׺`ÎÆÁ¸ˆ„ANFx’­rk…u¤Ê¨3„"!¯Ãgi@ PfhÈk®YõÈXÚNö»  @¡‘ä5ò ‹‹´‚~.ƒáƒ†Ãp3Ž # ¤¸ß –}Œ ¼í&úöD3› ÿ NºNh ˜Bh¿Ô0Îø„ Aˆ(ä PNœŠé¢ZÜ0  „̺È—NèíH2—@¨:ÿá°D6‰ÿ<Ç:è¨M'-é¿ðÃ7Šj¼…ñÞvV©QÃ}÷ÿ 0E›ÆÕøL§Gí ƒ !Úûû !*ø™[¤öUaÑ6YÃzÓé°D6å@ûP‚(ì ¥Ä>ˆ.åAëÖ0@‚ pÿô@Ñ û v(ÚH.Ür†ûRüD~Ø"$&C®¤@ÞŸøžÆTC@á0‚õüPé.÷ä¬ Ød1ÀÁ@†˜`—å×ì! ¼…C/zä(f $A©eu0<7üjö ê +ŠǪòJ D D‹ã„È$Ù\¶Òü0ÍBep0'N»ålK£! .†ÂÒ{A°@¿w4:¶).ÿ“0g`ŽÒqpÚ xo'ÚÁ ¢ªš •ÄGÿ;€Zm‚[kOâ 3¹£Dh¢'¢í÷®w@+ pDRý×ÞÁ±Ì9N"$ŽC+BFUæA@Wuüï@g#¢¸"et€ÃKªØˆ‹„:atG¸!|¹’<^ß; EÒHZåp€}¸Kýº°„DDDw,rÁ•Æ_ùÚ€g/B& äñ õàÈ. †ÉÜ"òN+ü7M¢ ¨Wÿæ‚ð^×û­Á~üì\e{ ‹•Э0ÂßpõÁjD¥ùÙX0ˆ%ް¯ú¾ð–Ó…äd¨‚޽D{ OÃ÷á†@ð’,5•àq†¾ðôíÕGk@xÌ„Á½àa…׺ª o×™â ^ù à ªÃïš /óÀ2:2¨­-íCê¯Ã¾ÈdƒuŠ!±Ìæÿâ|™`(¬È”4¬šw½õÉÃ""¾æUãD4.z‚ }%4½öº„Ÿôà x]¬‚Ò*¯_kØA6¾æ@ÀðC²Ðotdµ}uäTåAìþDsޝ… Ȱ4/æ@@xR°("‡!q•ÿü‚û9ʃÁS)È®(O²'±æAHÑþŒ…€ðà‚„‚ ÿhDDDFÒtD!ˆðÊpÂ!°C!t*ûý¼Œ2’ÿbf²<_L! ppD5Íz¯í¤'DH¢áÛ¿± 6 E ç÷ýÚˆ‰:#hº9ŒEÁ‚8, ¯z™*äp<3à^‚ í4ý¦Òª6ŽZ¿\A”á—ÈùpÒAºåÚçúuì0¢%8h«û‹˜¬ëÿltÛî¥|Ã(0R&DÐ"µêõúÅ?×¢ºðÐë…Ø! Ã$*Fle÷{¿Ø3¸A…º {\Ä iÁÿi…M™QÇýÛXY)¹my]@µ·‚B;¯Ã eh&ü®p[°I÷} ÿƒ¿fPŽþ½¬’†Ë!a£ù\¬áø _þÖTÀ½„ðe›/m¥âîÕS‰àÔˆ{ Z‘»wOÂå8«ü®²ˆàÑ!•µ"¶Il ^¿þK¥Dsœ…›Öâ| È5®7líHl/ÿ„Ò!¢ê$‡ «ì<að_ÿ" \ðT„b›úE½†Úá6ƒ ª¿„¡7üA•zîv*<•(¢#õà2 <4Ýü']„TƒÿZ! ` ï]ÝZ_­„–«×É0PÂ*a¢ÿ¼éwÙÚ´ ƒþŽÃ·Áa Fþ¶ˆK} › Äp›ì E÷ðˆhGf¢ÁÿyÁÜ©*Xa? WWÙ!Š '*A§dÐ(oãüˆmH—^(ê†j a‚ x›ËkÿÂí>¡¢ ¥a‚ žº¯f–™ŽïûEX6Áïôü[@„§l0ˆ EÿPé'z¾ûR\DEýXD¨µrV„WýëaÑ0C<µý„BÀðj6ˆ §‘Å$Æ*ûýí!Ê”ý ÈU¡ †$ßýì0Y©>ëDÐ P™•`xp¶Ÿúغ;°< X7þ­ŠaÿÊt ¡È ¸Ì¨ƒ‚ÁÿùgC#ˆÐ7úÄNC2€<díëþeêèŠÛìá”u•ûGbðf@büíL2‹Ý Ú; Cìmÿ;&†±„p( I¢ -ÿøBF²µ ¨ƒ.‚ÃC`‚;N‰ÿÈm©¿ œH›Ñ÷PÓ`ˆbþET<ÉPNÎÆŒY ÝÐ>¹Ø°Øga@x`î°ÔL?ñƒÂ{C!§±Ãþ  ÁøÑ Ô ÿ áv@Æ6AµküìÀñ0ˆb(FÔιRü2CÁh2+Š´>øžÛ FÀ‚&H„rþÂ#|ÃAÃhƒÃZçk@Ï!›ºˆb(Ì`Áÿá¼ÈX;¹Þ±f"î ¡ì†¢QSA#¦"™ -§*Êÿé¼ º{2#¨ÔLÁN ¾&Àð@‚d71¿àÃÂí¦d*ÈÂA?ðx’!Þ¨À( @ÿÜ7‚ý™" ¨¶þŒªÖ@80! @ª$¡¦¾ìÉ@ýL‚‰ØtßÜÈiHn  Â&@Пõ†ðA{ãßÔ7L#¾¶ÿ¶¨ƒq¿ÞùÙƒùfHd–ÁΨÙƒœMÿî˜Anû^ŸÌ…ºNÆBHˆ9^ÿÕ°ƒ†}êÕ>æE@¼È.·ÿÆÉP®™\0hw_™…È!$¦C6 þ½ÓAnêW ?ås‘ËÑÀŒÁHiÍ7ßúr+]ƒûðBC—<‚ ;**K`¿Oîœù\˜bÿ‚m(pŽÂbdf ¶ºôëïƒÁßѯ´„0@™Ý¼Í‹ä|ûÑ 6ÂúPðtß…©ðÒd6ÇîÁ´ì´4ÿý´; ÇÞîC;p2–u =´˜Bv  gaa˜ßßðƒ`ƒñMd2͵ýü0°‰P€¶vªˆá²ßíÝ&ÎÅÃþ ƒþ ÞØDüz°—øD€¯ý$Ì 9|’¤a‰ðÏA„ï¶©‘à»ÿà~àˆ Q_ú‰ lo‚`·O‘D…Uÿó¹JÌ–C)¢ ¤uý$áƒ<40¶ûH`Ðzïúû A bFÝá CÒ² ì_Wi2 Dߪï¢ö7µl M¬Ž ‰ý ˜dÛ}H]–ua„¡ ‰?zº/ó °P!8oõA´P ¸[ì‡t‚ÿÑ­‹úlȰÝ[ÉuôAqÛ@Ûu×i±”Y­$ß¿WÐÿ „wR0]„FmV¨…›ÞÂí~D(6ÈŽ’oý}6 ¥pˆh–‡rK‚h/¨GA6à $ºí¦xQ';}k¶¥a°_Vd& Ð=? Ÿxkþ­e= _´Š H_á µÅ=~›öCºÝCF½ÿÔ(î“fI¹‘P+W é7M±÷ö » } ÃI ¨ðºÓ»Òâ/ë¿ $ ûfBA  m§µõ½¶Rß 7éjÈ'ÉXhô³*ƒ`†A]tqý:á ¿Jíô™ÇAý‚Ez/’̽õý„V@«2àÇÿ±@‚~œ"PCms]!gRÕmþ,s#‡OûI¢* ðAP炤–8M=ÿáʘKDWaáÿ¤Ð%ëh!wßõÿi5"âu¼äžúh"$G«25âiû_ïîA¬)Ôt›ä ›…o°0‚_¹ÚX7+¬«Ý¯|ðÒ?{Ì7,¨`‚ µÂW4{Ë¢û×ȶGõÂ!°â½+tCTÜNJúÔ ˜@ˆlÊÖoÀÉÄ^×Âõ¿jýíÛ7„ØK®E¾€­ï]Óþ²& ßëä ÔS a{Ü ÔKÿnÝz„azÞˆ›ˆ¯Á„©¯‚ƒs½AÞd& ½|5úX A„È7r»Óa4CÁNClÜ?è†Ã§D1!¸&©•{$ DpÛïÿ Ö¼ š‚oÝ4„ú#†»Vº¸X@ä!z ±A^F¿kïiZÚ AH&Ÿ¬ ÂB ƒi¿kÂÈ’Úبló XŽ ¤uÝþÝý*‚Ã뙀AÑ&dw¿Âº×ОNzÂZZ ·öÂ$hä5Éa•"Þ¡îd– ·ÿáö»íé`‘) ­ü0±ÚÂðŠþ Ë!wßa­„¶m}‚D,5ÖüÈÕ"ÿ´§jÃeáƒJ›ýÓ )-c¿¸D6b+Ûþ"> û„ Ò+ê ‹†¶I ¦ý, @Ñ2ÏßQÁxEp€¤§ýò ŽªÛwìì´”à¹ÜkúÔ -"¸. «·÷Ã×~® ê ‹õ½!³d¼O‚¹Kmû{R{J¶mkX$!•Èùÿ®‘6”è®Z Imßð‡6Í.&ëgb`ÜJ_ûöÙÁ»iÔ•xoÛÚÇl~›;àÃ0¿ýËØ0º § ʤݘ»xd<­mïÚeXk—ÿüB!¢XÒè¸2BWõ^í~#%µû^'¡AHY]¿a«_mRNv\3™ ƒbþù]P4Z–èré‘ìZÿo¯lzÁ2+ ¯ó$²[ 0Ú-ê1ïíÿº®# °VZðMð@±-ÁÅSöÒ­[½³ºƒ%Ú ø. ˆh&ËrÀ$;ƒa5]‡ÿzáοmn î¿ àˆg‘‰n¦äubÁר`¾á¿°H ¶õì/•Åe²°HÕˆ×a×ú~"ºtG ¢ßƒfK­$áqaÈ)…7ì4½CÚ 0@…W\Ñ`ˆŒ£í+h+À§á†] ÎÖ¸NC0x E)FB€ÚRn‘}x œPþ Cgja|qirË d6× ãðU‚Ù6@)Ãù]XqõèˆI©Té¡fVer€ÊámA7a(dÛ@R1Áü[‚î©à\3#ƒh ºó!¹…åtà݃ «BøêvVi I‚ Ã!¶º€KW™| N!(Ð6¿@“ׂ ßx¨È k‚ ]o °MpdÙ ,Á¡ÿ„ R} ‚¢ü¸^d 讀ÐäØH õû :@Î9n”Šƒw£!Pm‚šÇÁ{+ð7¢lP†þv44„Gd$Hô¯@ˆh_$ذ¯¦]¢ö_™ƒ`KðAU‚ ɰP½ç`À¾’ˆlèÉP6‚ _ì%xAdÙT¾˜D‰Bá 6‘’Ð6‚þeà_Ì–Á¾[ŠØ€>¯¥ÂÊ㙼¾ƒteR  ¨+9x%àˆh]<· þ IDDuÉ(6‚ H ]Að@œ)Ù€f_LœaÒÊê@Ý´³¬¢t:pˆ%æA`Þ3± +¯ˆ²XD4l­×“ ×AZiøD­è"×…;t¿ZY\°6=„ „ìpl#£µnµùØR xJÁNË‘~Ák Wˆ—Ã{T ·{Ä.Áθœ6¿,®.œ6¯^ ›‚T¡¿î–†}­52S½6+ÿKÌ„Ãb–äm„¾©Q\l60Ò§€«Vÿ ^X ¬åt*U+˜î‰Ú°Vû({_àˆh\†nÖþ‹½a2¸@.ôd­Gf2á®G˜R,7¯‚¬É@7PAkðº}”" åíqbMëò&õxAh-~!qD~")ø‚†ØíÝ{ ø'"6­/‚ä°6)^°ØéႾۯ™j 2ºX4üÈÈ3ä 3U"C"Ü*íßåM—@°AS_2ZøMJç ¨2 Ò+·þH€döW°ˆ¹¤"²à˜_†}ˆ„&2ÜL6­·KM2¬#Ð °@˜!úVˆba¤*ARCvï§LÁ‚ Òrï³  Ñ¢ ÔN[–dplÛzº3¨y“†Ì ™ £}<¤o†‰ ¡ § Ù –ÿ´Â^•ÊÁ©ØnŸ ˆg æFa³Á·Þº¦ð@°‚ /„ªÝ -ÒÑpÛ;wu胻¬ígDo«ƒD„—ÁÐn ŽÓ£M¡<pko•@¡JW¦¹]UfBh"l¢Á sqKñ ›kX2 ›ðÿ¯A„ AB Ñ"µÆÌŒ‡I±+ŽÄ Y6Ô6ì0š°¿P^ƒ  h&Â4M„­ˆdÀÝ}0»0D67 ¾‚÷D3É-†A•d±ý2mo Â2‡(pDtƒK@~†ªRlY6XÓ]) „t"" ÖŠýš¹\”dØÕ‘ V·õ…Ú B |É8gêÂ¥ºXR(¾ “Ñ \„}-mp™DÿétB‚Ð*¬®Z 0RX ¨ÿ_Ô D62ŽÑ‘­[†ÅÑ-Õ9Rtÿ§ô›@·Á=`‚ÔQÎC¯_é°A Ó'*w+‰ƒr?…+9ë^‚a—à‚øéaaµëß± µ}ås£-ʃ0ïð#ôõÒÌe€«¥ý6ƒuÉËq`ijIƒ ýPËdš ŸÖðA($w®GÂVá5þ [ÎÉ¿„ !àªé‚Â_‚ ìh[Žu¦’ µ¤MY\€1@‘بð骺ÈV[ñ)AŸ¬ë‹°Dö _¦ƒøH/‚^Ø@°‘Ú¨3kè†x"ßÐ" - W¢H[t†ÅÁajÙ“ÿ„¤ÔA«;/Á Ÿä m^è®Â`‚m/àƒI_j/“@ˆ1 ¯™-‚„щÿÁ0©¿Âô)ú2p„°)o€ÖÃßÄ4¿å‘`~_ aƒD†Rü2F©½< ¾v0þ0ˆl]jW3A+ÿ ÖH^Ñ òZ~0‚ÂrVÒüvðOA¡ž¯; צBrÝÂKëùH@¿•#MÒf¼" ÙN^½ä e@½B›é¡/…Ûr0"ÈV ^ Bù½ %༅‘, |A/@‚þCÍžæeàjeÜ/2N9 ã”9äU!A¥'“@ÙZH a„„‘ ¨¾4"Ay$¢Žð[ôÅ COu_ ¼‚»•H‰˜fETý Ké™hØ4–dpÒâ$I[„¨ ¶°¤2™Nƒ}«Â\ãj‚@ÂpH¹ ½vé&A29[^ ¡ ¸äö(ƒEl4¹…½v&Fl•p¯!G< ö †ØÙl‚d™Ë1Ùk—¶•AZø'ÂP͆«,Âê6ÝlKÎÒÁ‘´ˆ–GeÀð" ½§¥ÂƒSCÈ…¢}&x¾h2;.OB&°<#œ @º‘A¦Ý$ÑeðkÁ$e‚ì$w€xg#ðé„ÑCtº,®%\íT3-ÃHï@<ËÀ‚"ŸA¸kèH4´R¸ ZpÂGb`x)„ „ ŒÒpÚ^‚÷ÆvHƒH ULI¶Òè¶u–G†Œ é… í„—  ™îxm‹ì ®™ðÙVÃA'–E€ÔëMÚVG"Ë×TAÇ . pà ª @°@­„í 86‚^B $¶Aph+톒Æ`2‚Ò n D š@‚ágz @¶ÜÈÔ8“†p@ºL.ØGk@¡AÒÅ0P·2³sº³AxL4+k0A:-$‚ ÝÅÎÇäÜ4î“| š‚„v í¾ƒu Ó Ú;X E 8 “oÂ`×Ú÷{ $YƒNÂYÞ¡—Ûè‚øÁ=*ðá`Î Vº[~ˆ l 6bO{Û1A…›o„8 ºý6&‹ iÞt¿éaÒf ~Ú†ظ AtT­' zõl"„[Gx[¾h ]^é°A@ˆi4-á¶è àt›;VØ* V$Ð2žÇ¡ ‚}¨a‚ ‘ÖF‘Q‚¾ ¸$­­ „² ipÊ€§Q„ nÒ. ƒ´ƒ "ÙS‚Ãi¦-úÂh œS¦ÜÃaeÕÁaüoÁås /!u¡  B ›ðˆ(ØKá"n 58MÓa[aá lȘJÐ) ,Ìr— AذCFÌ…cr ]ô[‚H*x&…‘ö˜a$"E7a°Ú@‚Ü î\®¥ Ðƒh6AC@"ÍÌ*·„}‰{Ô› 5~HpÑUÊa @á Â!¨Î2ݤûº~/ErÀÍ ¼Ò\U9) 0@»|ÈÈ xDèýoD2µ "€ná ™7Ð5­¶ÐAÒ¨›Øj_@ÀÖN Àær„ ¶Ò2Z » ¡ïKðš*¨gdCFĈ=L›ðk.ÃT I'Ô›®²¸˜ JÁ#`¡ [Å ˆ(ÚšKkÁ/‚ ¡4 :D4l]8 ^ÐB’Nô.åra–D´ð@AÂL„A¾Ö¾:„Õ Â*€×„ &ɲØk†uˆ ZD¾«‚\êdÇ †–Òr¶&ÁV‚hÈ´ i'^/•Ó†P‰2³±ðI ‚pˆ(ô“ëCQšá/(0ä36CÁH'—øA|$!iÛ5 AY˜ekÛà—Á/!;H ÒCU˜¦Á ¿É±@6| e9 ÕôVd¬2ô–ýø" $*CHrv ("ÌÂZ ¯ð@»„1ˆ ü$¡a¯~]LŒÀÁ’j¢àˆlÙ’&çÅ@Ć4»¼-`ˆ’Ø4| TMülÈ4^·äؘkï"¸á§A¼í³)ù„ ´•¿/‚®piI¼%†»4Õ0̬2éx}‚!¬ÍYó%0Ë+§“Oa„‚Zd<+~‚äCÐEu¥MáÏ$A“„C*BP™€Í‡V\Ì(¬ ÇáDÙlRl%¡°ï tðÐã%`ÚÝ0Ù‚,0AZL“c膛H~°‚· „vf]„C<“ÐJÙÚ˜ejÞá.–‚¡‚ ûY·•€o‚ UÃðKÖ-3³ QØ"$¢M‚ƒis²Ô^ÃÛ«N êZ p„†‰*µaøAm‚ÌŒR6Ñ—†; Yذeøaö[¥o 6“È0–¤¨6dؤ6é ‚ZmÜ·%Þ ‚vƒÚ‚ Ciš †nu°|O Ði„ !Ðol ´æU}&äØðD‘b†»MA ½Í‚ä îE ‚ÝÚZ ¡)‚V ™pÌÈÒ1™¡ ðÔ/`^òd°@”›H @ˆ¢ÄD>ê[Ž_ <+D”™ ô!H<7¶ sž6“ Órl 6Â!˜P÷Û X¼ÊÁE¥rEÆî‘i§•ÛØi Ð@XaîCLH…Ô0@‡ƒkL`$ðûNÎÌ€»iZÐ4Èü&!`‚†h&›Ø`‘]`6@„)ÖZL‡8#Pk+ Ô¹¬›P!–§Ãì†Ñ]T6¯ t Ü+ A†0´A_àÅMS ^_V( B-XDZiÂíðÐ@¶úª‚:nš ¨!¤9íA96@‚ ;5  ‚Ãz°ˆ(–°a ðVaYn—Å ßd3®HD¶Ýge bÕ„AA¶A…ÃÄ"Ó¨¿Îæ`‚í»M›A4IA­„àgklŽUâ-?Vv*‚Å@ò áX E¤NƒFãiÝ`{  ¸‚̉r>w`¢…Ëu T [(nWòÜÈ;xçca–Љ݊²+ “%¥³ÙÔWÐ/ÙšÎÌf ‚¢¢ ;DA§X" ­?¦ÛZ'-ÈÚ`‚R.N=î[’ß ²°“°›‡ØxA&%Û¬%íô@Ä!é° J­Œ÷X@ªÛÙÝa—v­¦WXu&¯í%Ci§]ÝP@ÖÒ@” O¦8 µmgdfڰ‚I‚UÞ.ï@ˆeÉiÚL0‘\,f Òö†ÓLŸV ‚Lím#M«H6 ˆ*´‹A|ƒ ‘AZaX GjvJ¬5d¼ ‘ ±Èjì[†‚ #™$ÂSA‘æ $‚ !=·‚ hH]ìCa‘ÁpÐ A‡@Ö.$;`ئC5p@P¯°@¶eX4Á6ÞD‚•ð6 XÚ›Ç-ˆÝB­†A(ga¢ "uÔÂA7à•0@[Bm ÄJà€ª‚ƒô ‹ÆeÈ"k‡mÈ0ÅA$ÃðAU°B’o°ÂDxÁ ‡àagfA¤oô@@AANF¡ø ¡&Ñ—Uá‡I“p@eA7áÓ` MÓz Ñf™¨ ÃðD6ÚiK‚ [þá ¿ “gaA¦“í¤–A†mxAWƒZá7¶êäÜPM‚P¶vR‚ кD÷w´MÆÁI&„ žB®›ÔB ÈÓ¢ ù\}‰ ˆ4®7oz Cá°˜AI^þA¿+…­‚‚JýÝMÞˆ‚Mïà+ ðˆ*5•ë P¿ö\„CIrïÚXl޼" @…t¢ß}„AY¦¢Ä:Êâ`­‚ÃôÜ›ƒ vÞ ¨Ô2.ÁÕ\©ß·a-1hŽŒ; ‚¨@´÷웄!S°o²º°W¨ šÓ¾@„CÛðDš‚©‘0Õ#ìŠ:ëÛNv„ „D2œÃœpŸØ`‚-O28F‚ ¨!øa‘„2L5·¦ „X~*‚û„7åz¡S†¡¸§àɲÈ2ÐaøA 3 k¯¸H[ðJ˜A?°a`üV¢Ú ]m“bÀR”;ð•/ Ù6A ? ~h"Õ)Ø~* Xn©\6V©mü T ÷&ÉCæJ€­VÃ@ƒ Ò®à7à‚±uÖ „aøAP!oÓmݽÁVjÖ‚®ƒ`Á@•+t ½A*Ö›`üÈh©kM‚ ¦Ø¬è‚»U"!¶È-Á&ü% :[aoÌ”•.­Â0~¬-e¹ 0~tÐ@ƒ~Uµ²ÁoÁej•­¥Þ&á*é/–å€n; ¬ÕRM0–´‚uÁT$ÕàÂØ¬ÉÁKdU¢ ÎÚ‚PÈëÐ-¦®èvɨ¿;2Kª ©µ…i HÙçá/²Ž ð‚oÂ25ˆá©³¹¸±ÉAi摆ÞvH ±#€øˆˆŽÁà‚ 5 #ðh"Ü" àV䛈&`_bAð|8A7XA}”à‹p€NW(L?A]¬3Ä0E¸0X÷‚ Є0~-à“ÎÀKzMîˆ+µ€¡Ùn°íêÁå¸Z."ÕL:ÎË‚–@†U•QNü,vU:aÞY†RØAü" ’S)¦°Áå¹X,³º(ä5™E( Ô£„°ðI‡àˆ2µ”Ã!´Ê-ÆÑé¿ W¨6ô!aø% ‚¨çe®A»Á+¨L" ¡}h® ¸ ƒ DZÆeevk) ß`”®, ´!`ü" |+–‚¶oÈ()C ¦È§-Ï„ ‡á+ªƒ.„&ü(2 L…p“ l ¥s SËw c‚z·¼Ž ¶‚Ën½ S‹)Áà— ¢Ç ¤É\¶ÚŽT$C nÈDo)n °AALç7¤ RÜébC¹ l§5¼·,® ÌH69°£cÁ$k‹å@ª]a D‡ C›Žåvèš$“7%‚ÄDD=’]  È…РĆä%ž ‚¬©VÂ-ÕãƒA•æØØ‚–ëO‚ÄH+¹ì°RÝ( ðA"!I±¨ü Ô›`,Ø A5†ºØe8x" I€Èƒ(áDð,aC à‚`¤Ø á 2 &æ°A5&Ã`Q•ø˜PdM‰ewA,L©6(·B˜)6,½`¤Ø,’ŠaP A$ÙT ìÉkD Ó $Ç)9à¡ÈÇ&Ë@µ‚„DD„Îfó#˜+I±–\ 0@„DI26bEZ62 ñ#h¹—°jƒ ÌmTC‚#hÜGG Ú“sƒ=‰°¢+©7Ò#f‚]Ë£y†\26!<7niˆˆ‘LØ`Èë•fo.‚òn`X B$ ¥Á Ž Á?n§\t&¬Â.‘„ÜX ðAb"0d6âðA ›‚ïƒ8³¬“u ?̆4Øå7W¤ÝiÀüްAD’o­†)dð?.ˆë‰6ï;A–J€ñTA(2ˆºÄìÈ¥‘@X@¥ xnìÂåL;UÂRÈ.™a)d,Âi…U,`yg`€zàÈ5ÉÂe‘dS²€>–C <\ RÊàx¸ ¥—€ñ\ ¡<Ft²è‚gdÀ÷,£ð¶ðf*–Ux¹ØÀ=–¨5d#>‘m2Êàð@¢ÈB‚ƒ xy Nè¹eÃçxœÃ ªš–U€<@óölà x1# D€}šh5Áô¥¢Àðu+ yC x.9[K‚ì–„áŒ\´k‘Àðcç²LC xhÙc ´+ÀŒ•ã–€0<Á@ð!ÊØ"³Eˆ7´áŸæìҢІ|$ZÔ´*àFUãhYÁºa)ÀñeœÔ PÊ€x%àx( x >Í[,úà_)gN†U‘Ð PÈ‚‚!K9€<2¤  i``áK8 ´Z¨RÎP‹àbbȨ x.í-A<4œ)gU €Ú–uœ¸dLC よaYPC!€}¤*Y‚ð(ƒ³ðÓ†@ðÍöXaK0´å˜…)”rÌ%×,Ű+f$³l!‚–iÁ®Yº†YL¥š 42€bÙf«åšÆ?ÿÿÿÿÿÿÿÿÿÈ´Ô†vfä²%bH›"þﵿîý;»ÓÚj¡Wÿá Óý?Óõýéëß×Vž×„ï´ío_ikWýú}Wwé÷émWûÞÕÞ×§þªÞ»¾“…õ ‚Ӱʧ}'ÿ]j‚P¯ ƒBlÉòw=d»Y.'…×ôA¼Î;ÿD!nÖ¹åù@(‚èFA„9tÛä2Çr gÐBµbüþ¤¸)ø™<êBÄíBƒFÛIh†ÀÜ'ø ÿAíÖ@È0f†P¯®ŸÃÂz}ôƒ{·~ýd …HÕîÒþè ÞýðƒïéÓúAaZ…õ^þIþ½Ý~“k×Öžý%¿ß¦º¿ûAßéíKÿTéþºïNÿÕ§Wö—éÓÞ¶ý·§ý}¿êžýuëÖ’õý«ÿôÿé=­…ë÷kOÿk{Ó}n©>·úÜWí{´»ûÒ¿û^ {º¿nÒúê·ýß!±ÊʯÓjã§µÍï÷ë°E®ï†m½â/k?_ kø,uÿ¾#Xpê"E!ýÇu×íÇï¯u©Çl†På–îõëßzúê—¿þ“Ë®Cÿï¿ëÿ­;‡Uë‡k{{õKû[¯_ëýé¶×鿺·ÿÿª¾C¾ÿk¶ÿÞ}u÷ýûûûúíÿÃxû ¯úÿ…k«O}î°ßýë×ÿ_ÕOÝû[¾ýµê¿î¿êÿ¦ÿÃÜ7õqýW_ Ûý×þ®ë½uNô©k¥ÿußUÈïëÛtõºÈú¦C@5ß\‚õþ¤4Vzþ÷Ú¨<.C.»ò¢ {éôipBt k¿Mþïä¹Jy0¢÷zZ×W½ÿ„íõO÷y&qñnÈ.”èwÚ¿î­ëoþ×~ž½ àéuýZ¦»Ú]v½_»ztÞ¯ßí­[ÿ¿¿oßû¾é¿ÿ÷ü4›}moô•ÿÛþýûÿzV·îÚWí­mê·ß½¿¿ Ú_­¯öªý‡ôþýõ¿[Y‡û¥~ÃK ß^¶¿È.þÂL4·®¡…žàÁ.®×lÔw×ïûº ù8(aÃfßì0“·ì3•×\ ðf?‘°ÈÏß½»Š09N¶ÿ`Â×ìt÷ÇÖÐ5Ùp}Ó!”ç#r ”tÄVßñJÞí{ÖÜȵXUA…‡ Ñ¥®!»qtôßímõK_¼d4B´* ŽföûÞëÛ÷koÚß­ñÚÄAðþïoÃ[ï¿~õ^þ‘ ýöšÿº®õÚÛ}…¿XN»ûþßA­½®¿°’Þ·Ô'>ªßß½º„ÂÛü5·í6ûT×Vưþÿ·Ó ÚúÃ]Umjºv½ê©ú ?økv𦞆¾ß»ÿþÁÿA…O[ ëaPkImm{M4îÔ ÓNÂiØNû@Á4 0ƒA……»Xk§úi¦C+avTÐ0švœ0‰F!”ƒq$ M8aSA¦  Ó,pˆÃ.eó±°`J´"EaSL Â*HÂM4TL Á W33DtC`„DDì[%BL“„Dl4LßDv «:d(µDds¤!„ ¡Ìr˜Q;£1ˆÿùj£)¢ù-…,Á$Oê‚Æ@ÁA|ë̘Dq‘@ Šƒr@B ¢VÈù‰€ ¨Ú%"Ë"P̲#… c a”w’!a!Á‰…0. ÂíBBÂ!ˆ0„0DõÅ !(9! p„fDŒÄ h4ì Ó[4Âh@EÏ«D(‡v¾Õž¡· 4চ T Ð„áø ío: ~ î×NîÂi÷§[´ïÓ‡ú÷½o ‡ÿávý7´û§§ÝéûéߦŸm…¯÷é·ú§¯©\¥~×é>½;ðƒ¾ÒQ¯k~¿§zÞ¾´µNøIá‚û÷U»×ÿò֞µ_ïÿ¢-U܃ä4r <ˆ+D 9C”;_ú¢ µô@¼p¥:¿hÌà‘ôÑð]«Ð!n›î7ò w@އÆkOÔ#Ph§þC8Îý VŸ@‡Þ´›Û÷Iºþƒwïp¾¾÷Á¯É a?úO}zV½~½½ë ßý7ÿU^ÿô¿úKÿI½®ú×è ê¿á¿úÿ[K}ÚÕÿé}:¦ëU¿ßïwû:¯}+T¿†\4[Õ{Iõï W¬†Êãßnô=l?_ÿ´®CD}b#®ÓúÃÓì%pˉ·®š×d|ÞúoÝë!¡üC®>5â+ïÿ°êö:¿¯«õõô°~µßûïõÞÝvﺻW­~¿UþÃïë¯ëëÞAÝé«ÛÕ~¿ÿ÷qÜ;íò!õ××ý?Ö“úÛj›Iá[ßUß_í¤þÕ¿¿®«÷®½.+½8u¦+¯øZ ô¾ÿoÓuÂÖ·m*D2­¿¿»Áõ~ Júä ¨ÿ BukÓr Müúár ¥×ºþþýü?_!±%«¯§þ»ú÷îwy Wþ»K÷¥¿ßÕþßû¶¶Óë÷MUÃÞýuku]¥ý¯_jý®¿vÒ»OÖÚÖýmߪýu¿Û­v×kûú«õö”†Óö²?m/ÿoþý»k·~ÃZþJ»×¿í_­®þ%ƒj­v¼:ßýÛ«ý†ý†ýµ¦ ×K SKÚûä ÑmÕl2ê¶ýƒ·á› ›iÁ½}Èôm— ½¾øoØ®ž>@¿èƒçWê!È5)ßö¶þ—ÕØ¼oÓ|;j¯ÿ¿zk¥á/û»kà kÿrƒ½ô»koö¶ý®º·¿ß°¶ïÚÛ|5½¾ý®­®ƒ÷K†©ý¯ë{]4÷ì-þšÿ`ªž¾×ÿíním;ÕߪµïÓì&ž· -Úà šxNúv©Ã_MPaS» ‚wª Õ¬4õMQ4 ;MÁ;L¨A˜¨&˜A Á4Ô0š¨&ši Á0ƒ@І(Ú!! €Î¶T dœ¡Î9c‚  ˜ºen…~+ H}„DD‚b"""""$]‘ʇDDDDDF#ÿÿÿË0¡Gÿÿÿÿ ±¢oj?ÿÿË`ÉGùJ…þþþô·ÿÿýÿ¿)Åéôëø]/ Âét ¯À( m.»±ÿ²(¶ÚÁ˜ ¸\ÌHŽþÚzoíÈ=®Ú"Û`«· ¤Å]¶ÒÓVÆ©÷][Kö½t©÷^©yÃ.ìDPUú]/T××KuUép•h×ÕWÒô×j¶x?õö\iÿù6TUúî¿~¿~¿Óÿ×Óÿ!àƒ °MQqÕÿþ¿ßýÿÿëÿkzßÿÒûÿÿîZ„‹¯¾ëíKFŸøÿÿÿÿÿþ¥4B¸ÿÿÿÿÿÈÚãÿÿÿÿ½ÿýÿÿÿÿïÿõ¿ÿÿÿÿÿ÷¯ÿÿÿ÷¯ÿÿïÿ«úÿÿßþ@mލ‚Hc„C<µÑ‰f:„A[kZ]p„2=БvS¢„ØžÝ#ˆ3mB„Atä·_D˜,ôˆØ-\ D¨ˆÿ 0,#ÕH¬¢à³ÐBÊ`&‚ÀXGwHï@<7¨Aˆ×£°0g#Ë#²€=];EÀðŸÊ;4~eÀµ@ŒµÈೄpU ƒ6¨-´Ô2-Â>4Œ”j‚2JºAœrP TB C¤WÐá æfiÉý"¸ —P‘\¤¡WTíÖ@÷ ä[À—ô[œ"Ü@8H·&œ$[âÐEryÙxJIê…„ˆÂP–v`Vv6ŠGP– I‘4 Î@ð $0´¢ àÔ^(';SÃesµ€<BYÙ˜PY“ཙx fDâW2Nº!G s$€ÏK2š è,È+ƒp‚Ì–jÌ’Ã^–W5 \Øp—p—Z‚á 2IÂXÝÈw ƒ‡ ¤Â ëK.‡ k· tẠìp‚i'aÒý‡HiÛ¤¸nœ0tA ì7 »‚¦ÁéU°á%pà’Øt»nI8`év ’pÔژ.[ŠU·¤ÌWm E'¥}°ék†éul8A{†éi8d…A­†-'aÂ_· táéiXaÐ^íÒûaÐZØaÁ.¶-'è-[ ê’Øt½°Ü%u°è-l0áî„´¬7Kðà´›nëaÂ_†-[aÐOXn—¸nZM†è-{¥ø0pºNà²V)p`º¬7 hD„Ú{a‡KAö䬂¶Ð¶à÷n‚¶Pí,0è'ÈPÝ6ªND ƒtƒul8IéµpÁÒÜ7Ût»m' ÂÈH—ü7[H!«jÛ҇РvêaÂ2 »jí\7 0Dáßmv%M=6 œ7zØnýºÃ[{«·Aoõ°á&[§ 8K~ÖûkV›ÒT¯Û»ô¶ º¿líH1A;ýl8ISõmº]wNäÿ­†è.ŒŒ:¤°Ã„ýý·KT÷IÃÒÿ°`è-/U»¤«Np‚´¿K ÐV_Óa‡JÂ_ImÂÅz® ºl0éV¿†% ƒÿI¶ ¨Òé‡Znÿm‡AWé-‡¥·Ý%·-½×pÝ/­.Ø8%·é$á‡Am÷]†/ð’Xn oê“·Iï°—l•»ÒÜ7K½JØx[è0Ant»Â bhûJÃ…¾„$» ¾Ö–ß!®8M®v„]7®ù ±ÊÁ6wa€ßßkatÞ¬&Þ»¦éÓ­öèÛt®·Ú]}[}«¤!ÛÒl<0é´ƒM¶›^«ªv-¥j÷¥h7º¿Ú º½Ó¤WZBëÕ|C¤ÝÕýSäÜ-ºVþ”0·î¶)7¯þïZWÈQõþÒoê÷Më§nŸé]­Òýƒ§ú· 7–ƒE_l>â¶•¶“úÙå û©o«#Þ]ÄŒUÓz õNÛß„CD‹êá·Ý MÖAö´Ã—áépÃoIôÚmïTý»•ôBÁ_´´BÑ·½(Bߺ6ÞßAÒz[è&Ö›A87½Võè6¯TßÚí«~›Òéßô»÷ÛïZlìu®“¶­”Èßû)btÙÕm½XëpAëoOU†Uf­÷¯ù r·ÓÞôÝx‘Þ¶¹©WzàÌ$SIk¤ÿˆ4AqÝÓa:¿éhƒed!Þ®v(_ÛíÈ+¤œì 4w­Ò´!ý°MzßôÞ­— ʾ›öˆ{AÚ¦Îô 5´—«hˆ„Øí„ÚíûÊpÕt¤Øí$ê¾Ã ™¬[ÑÊ¡ØV[t­"(àÊ¢A°a(a% ¼<VHeT (a*½!Aq ôÉX51Lƒ­ëBò5 •iˆ]é'Ñ*Ò`ˆ4 &•ú .9åM“šÑ)½%q%+¢ Pì„€Â"¯Y8\†œR ôf¬ а‡o F€ï!®9ö³D.‚IŽVÖH[Ê=©áÀͦëÁ‘ÑØD’LH\}ô´C¹Ç.Å»[t‚ Ð! ‚¶Æé2 Ñ}m È)}„TÒ·¨M汑ÁYV@ºáÞ©CHC*¥Lƒ §ßV !3 ¤¸.ô•… ¡ªGµ…OT˜„I\­‚ŽE\¾‚h­†Ø_ß­Ž ¤}z«¤h’¡º×}CGz±& «Öƒv\”Z½ ˜Gfì*[õ;Rƒ)Á¢å:}$"fÙ84-7TŠå ÊÅ¥Þ”®a†ªõH®KÁ­Òþ†™¿GÂ[z"ÞÀÊJþ[ 1_º à©_©n FA‚aSÒ§‚ l=ŽÒG¸L/ôv6t %ô {’¼Ž¶ê õ®©AÃá­ú¤ÁïÔêߤBè:zA$ƒïo¨$  þ¨*a§ &ô©8MßÖÚ 'Ý$’n&•ô6vDCߤ½ }ÒZmP{ô’ð7¥[M½jŸOo„»Â·é]´½Rõ ¥zJŸDÇý/Òéé$·„CQì‰àÕ¾¿ °Ãî©Sè*ßH%ð‚Û 5o¥øI¼?Õ.Ý-¶O¤ŸÂ l7߯ÐUa‡õUé.Ã}%½%°Øk}-\ »)Ã[é¼4–ì~¼B[ תO„»a×Òô mƒúFD‹ºK°a¯Å/ v þ’oKa°×éz l®©t—`ÁÿKT¶Ûý%Ò l6·¥¼ ¼6Gë­:„†/úWInk]&ð–ÓZÒ xa©ªô“|.ƒ |ì¡K8Ä¡'H · 5Q%jÜ7ý&Ò¯ëé6K †CU(­•^’MÒ^ Ö› Û ~“i$á¶ëÒM¤Ü0ûé0aAmƒ—TƒhˆáÒðÃþb)Øa¯ÔA-Û®’L¤[a¿ô $[½$I[†]\%V õ‚Ü6—I ]†ô›…¶¯« / ?é6Kl?ªM„«­$ƒ îtú¦ÒÛ 5^“ -¶Õ&KÁ¿é0 l0¥º]ºú@Á„à z¤È7 °ÿÒ ‚¥áÓÙbé-¥¶WéAnÈjì[Ö¥v ªè$ m·_ Ò^Ãý¤ŠþØ0ר¤!¸0ÿª]†½$Ü6½RAn=úH.ÃuÒ¤· ÿH$¶tºJ¶5é(%»jý—†ö¨-ÃkÕ »©ƒOô§`ëÒP¶ƒ}Õ ¸† ~”-¿ÒA,0uÕ$¬_J‘ðî´Oaÿ ÐmzÒ ì0ÿJþ‚A.Ã^’Aá‡ýR|è%¨a¥T’KØÒK°ßè$^4«Ò pÃú¤—´ ÷ %Ñ  ¨]{ Ú°Öº }|uõU~°Áý:'Zi Úøi —a:è†TŠ’U‡  |ƒL… öP÷ Çx4ãôÈmÈB_wÃøt{ôò’: }¾°dt’ûÚ‡ñ%³: ýè?>ÚÊ/{Ã^@ñv¦‚_}?b,A[)P¾ÛV¼8,¤§;Z¿GPYHûÒ’àP_ZÕÛÃü‘wZ 5Ú¨“xoIþùt‚ßAþJô•}«^ˆ 3—’An´ØbF w{ü’úIokú@ø]»ëùÙ¨i ½WùÞí$·ÿçtÄP–Ú#Óå}W;#äG’A=ÓkNŸÿpÖ½>"Ÿû÷ÿÅõõÕÏ O×ï¯V(?ëýk§ÿz«ëOþ·¯º!\ã¿Uýÿ¢(_ýjÝ7é?_ëA7v—ÿÕöõKí.µi?a/¯¾ÿÅ2=ÃýjÛ¿¬HG‘`r:Öëê»Ãì¾½úþv¤­Ûï‚þ,‚Gk_ùåZþǰ¿þ„|…/Ø}_ëÿ²ŸµÕô­^;wÿÿûÿÝïù’¢çkizÕíס¶ÿ¿¥ÕõýnÒþÇ÷zÛkßý¿Nàëÿ¯ç~¶Â_ý]tÈÀÐØ/ÿVýƒb¾¾½zmð­þ¬+õò®qíýá¯ÿBíý;Uï¹Ýmøa8at…§¿q¢(炇 …}×ðÃñ}~þÃK­?ì-†»ëþÃIü uê°Á/×øaaÑÁ/¿îCÞ›@«ÙàÐeÝßeA¶m¤~"?ÚÁ”:ÿã‰õÕÇÿþ×ÿÇòÌ!úÿÿÿýýû_ÿþ¯wÿüÈJÿÖ¿_×ÿ÷Ý××ÿßõÿýÿÿÿïÿþÿÿÿëÿÿÿÛÿßÿÿþõÿûÿþÿÿõ¯Òÿ¯þ÷¿ÿ×ü¦F×ÿ­?þÛ–õ/ûþ#ÿÕ¯ÿ}ÿÿ×ÿþÿÿßÿÿýÿûúܵ=Ç»ªëëÛÿÿýmw;SN×UñÇÿoÿÿþ¾ß¯ëõÿÖ¿ý÷{¿¯ÿ×ÿýÿ_ÿ÷ÿ_ûÿ̆ßÿ{þ¿~ÿÒÿö¿þ¿ß_ïÿ¯õÿþÿýïÿëÿëýz}geÕoq½kKÿ¯ýí÷ÿÿÿÿý_Ýÿ¿ÿ_ÿ¿kÿÿú×ÿÿ¿ÿ¯í~¿þÿÿ¿ÿëäÍÿûúß×}.¿÷ÿÿýÛ Òõÿÿµ_ýÿzwßÿ¯ëþY ~õÿüt½ÿÿêýó!+úzûõÿ_ïÿÿÿéýþß÷þÿù.Ž ¯ý„"û¯§ý{Óÿ¿ýÿ÷þþ”†`þ¿îÈ7?úÝ`ÐoÿÞÿõÛAÿ¾þûw×úúï®ßõúw®Ë#¯î¾µÿÿñ¿~÷ú×ÿ÷µ{ÿ_#l¹ŸEÌÂ0ºÿÿu§ëîÞŸÿ»ÿÿëïuÿoënº¬†`ÿ~®ZI×ì†x(ÿ>+ÓBßÿßh?õW^ßÿ÷û·¯¿ôÞ×ïÖÝÚý{íãûÿ·ý¿ýoÿ×M¿÷¿¿ÿ®Û_Ý.Ûÿ­í;ÿÿq;N¾»ûa?·ÿiõ¯í÷Þ¿A½o~ÿÿÿuüí:¿Óþ­{kýûý÷®µ÷÷¥þ¿ÒÿÿÿÿÕ-=ÿè"í¯þOO2R_÷ü ì'ÿÒOÒ¿ý¥ëkÿÒïuWý%]÷ÿÒ÷Õÿõòÿÿ *”ˆÂ#ýÿõÔDtÿ÷á?ÿéi­ÿ½T z¯ü&©ÿÿD ùO]?þˆ44BŽÿøÒ>ÿøI¦ýýaÞÿþ“õõ§UÿZûßúéß$ô¿í}¤ß~úÛ4^íÿÃ^ ××ò(ˆ6cXiÒ·ÿ¡¨ÿÿýé7ÿÓþÿÿVëþ²ÖµÝÿD~µßàï~ÿfPáé?õ Mûußä\éöÎÖA¬$O—=ºýP ‹ÿþÔ"£°‚*:5Jÿöv ŠD)~ßÿh`˯ÿ­\‹ªþT‚ L+Öü®d¿„!  ?Wãü ä"™?þƒd)i[Ž·ÿÓ èBwáýÿà`¿á0A†y:Òo¾…”à¿È”eâ?ÿÓô ÿÿíY?:§ý¦Ÿ¦*Ð?þkÒkDF­‡`¿ar6¶C`þ»ÿL†yaÅ÷ÞÔ-´úýzÈY)A¿}¶—ì,Œÿí×õÍžŸtºë@Èëÿivµƒ ,ÿÛKסˆ?ýþöýÒòL]Ê­è¿¶—‚Õ± ¯úùü`˲ ƒ9̵¦áyÔ3W+˜""?Û_M,¥gö%zk“@0Gÿq]Èl¥Ø(ïµÔ#1RÎæÿÿ šƒ gdÿÚöEAçu¿×°˜¬ìA£>¹i­ëkDr§Ž×°Z!‰?ïáœuÈgÙŸ÷â<‚‚Ò{§îßAƒ"ÀÿÿÙ ± úÿàÚ}™ ¿a°àƒ÷ùÚоŸOðääˆ#”;ôºÑ—¯25„! ?$?™Y ýô¯;4ã?¿A6˜OÚoþ•൵ÿðÛª‚‹Ú~•á|;Õ'ÎÁC3Ì€„¿««yÙXfø{ÿÕè¿Ãÿ¤ú_È:’þ•è†rŸ·ÿVöè†Â·ú«ä(Uû¯–`…¤ùØG#TíÃïŽo;#:Åjý+ÎõÛ»«x/Ú":צ– ºè#@¿õ» }ÑÓ#¿««ÑÙ¨eûj,.¾”4 aÖöþ¶˜A¬0«Ù h&š’@Ëö!}á: `ˆelGi»µÝ¦ ¢ 6£ºúÿ@Ñ 1p‡õÚtÑö%Ú`õ…)ŸNvDÂX^ $@¾Ö“ÔR ²(áy’’ÍÚ¯Ay6Dh|`þ¶C- luÖÙgABv0Á7àÈëXUá0eÁ¿Ä:Çé1KrÜ?zÚ¤ä1A%´ŠÏõê °\†…˜24Œdtk÷« :)Ã4cD0ˆ­°ò®Bfšzé^T„ ƒJëoòAÓÈ5í5ý…„ò$‹†mÿuÞñ<vÓ]zÑ GPÊ·¯þo”àîëÿ ›Ä2‹ßøTAò°’púø[Òo5¢T 4þeÀÄÕø0öÝ/„Ñ í>%H3vúù‘¨Ê‘ªWpd—¢ ßóµ°j@ÎÝõçh·]a4CMh‚*÷SºÃ3¾¾v¨ ¨†Ò˜ç`Ã7núxD. ÅAé[@È4IfÝ× AH%ž ľv©ßß;+ Å 'õƒ Õ M½r1X" z„ íNÅÁ«aá.„\–DÀ4"žl ) =ú®v4 M0hAy\ZO `뵿«@ˆ4 dH ò¸.; ¿Šð°„ ÂA¯‚ åzƒS³²@ÍýaNS  ù^·X2 k‡­guƒXƒ(Í7™dp7Z;3ŸÂÎñ;€ió%@>«¤ i¼È´ –ešGŸ Y߃Y—2Árâ…Áˆ:ãgn &U æU£Àyó‰ƒK2!Á§½ó#á\N[×A¦F>vdƒ—¤1 d4ä¶hœ¬†?’á<”‡ƒoͱ @žó²”a‘Àó X2‡í\ OyؘdtÂqA®EKEH»ÎÔ"æˆOc™ ƒO²*nK%È ;¤`Èð† Yx"q´„†l•hLÀð…І 2- jÚd3Pnˆ7 $ xÈìNÔÑfJA§ý2ºj\†PÉ)Ä#ƈÐ2²­mè W Ò&ðA2J ?aò¹`j:!¯ÒœŽðÁ‘2]¾Ø@Í¢8] •Ç `dG}ÅCM°ˆG;ˆ‰Ãw1ºœ¯¬~›n‚ †¢ àÊÈ<2 †¼;¨ V‚:á¦G°d6ð]†Ý̳ $Dá‚ñµ«m¤†ªêÃ#ƒXb9^°?®Þ"‹Š `p]ep`xn¿`•ƱqÊäÁ™.ÛW¨¢T y\h þàD5—-@È(e5•Åa.Û@4ù—çc@n¹^`ØWY¬ ÃiVÚCYºÜ®f!V´ÎÄÁL/ð‚жZúpÃK[„CPØÖ‡àÚÚð@¿Mº‹Vd²ÿìQÁÿaÖÂ!ªlD _Û 3"ÐÖÙA¯àÆ™‘@j莰ŸáÓë~¯.Ùkð±øtœ[_„êÙ0méÿ¤æIÁ³Ö•™ ¥s B`ÈùþõV̽!¬ÜÕ¡ÿT›BþþA“ŠL°Ao×Èi&MBvAõ]G5 LçgkØÂ wâ#óµ0Ûw¿õ M5ÓñD[«ÿò˜86ÿü ]ÿË Z-Dá¶õúÅlnQ}þ[i`¨vúúü¶ÖCm>ÿ嶪 «×ü"{;ú÷–Ø +'÷ü" ›Ñÿ_-¥H ­Œÿ @Uÿþ˜D6¶£ÿõ"À©ÿßR$ ¯ÿ]B ÷þ“Skõþ¤+ûý0@¿×ø" Û ÿý2pdÿþZeiP9N¿ÿŠ!·µž×ý>Ù“Óïá=Huý_/ëú Í/ÿþAfHÿuÐ_õ}ô÷ôANEß{UÂõkð‚ÿ¿ Uý*ÿ¾_Òý/û®ô´û¥ý…ý]ú·Uþ©zÓû! ºÞ•ˆÕûþëþøi~ëøom–Ò€ÛØj¿-¡°Óá‚_ËhYÅ#†}†C üDàc Sü¶Œ²?°¿ˆá¯û þ ßA6øÿÿºõßé}ÿ÷ÿþùØZv?¯þ“_»õÿ×õþÿ¿ëï_þv¿þÿ¿øÿÿÿÿÿý}ïëÿÿÿÿõ_ÿ½ÿÚÿþ¯ö¿ëôÿ×ÿÿÿÿ×ÿÿï¿Ûÿå¸ëãÿÿÿý¥[ÿýúÿkÿþÿ׿ÿÿý}uïoþ®µ×ÿÿûÿÿÿÿýïý_ÿÿ¯ÿÿË(ÿ޿ߥÿÿÿü›·Þ?úÿwýNÿûÿÿõ¿×ÿÿëú×ýå ~±Ûþ“úÿé÷ÿÿ_öÿ¯÷uÿÿÿÿßÿ×ßÿzÿþ¿ÝÿÓú×ß_[ÿ^›ý÷þ¿ÿýu{ïöõéíÿ_ÿúÿÿÿÿÿëþ·ÿþÔ¦ ºqý¯÷¯_µÿÿuïõ¯ºÿþíÿ_ïoÒÿÿÿÿÿýþÿÿÿÿÿkúïû×ëïßúú_ï[ÿ^ÿËUU'ëÿÿÿÿÿkýÿþõïÿ×í}÷ê¿õ»ßÿ_þÿ×}}ÿõ–Æ«éã¿®úúûÝ}tµ_Ûׯ_ÿéWû·þ¾«ÿÖïuÿþ¿ÿÿúª×~×ýwÿé~¿ÿïûIÿÿ¿ê—ßúÿÿéoýþ¿Uýwÿßúkÿÿ_ÿëÿ×Ö÷þ©¿ÿ½/ÿþ—ÿÒûå°­Õa?ú~ô—ÿºOëßÝ_Ê`…ÿƯ§þµ¿ÿú_é?êÿþ©«4ëÄÿ¿ê—þþ—þ¿ßÿõý}ÿþ¾—ßÿ_ÿZÿ¿™®¾=}WýWÿëÿÿÈg6‹Öü†St¾¹¦ä«¬øoù ¦å¿È+·($n'ÖÁýY†é?Zn­=7Oû y·ÕƒÕl‚ˆ Èß¿f ÛÕÉÉëlÔ ½ðØd—Uõr «[eX+uÛA•r¯ìƒ)uwÃdHHéú†Á‰5ÌmnJM~Ù+?í@$ô¶ :ôý† Y`k†Á‡øÜ’Ç®ÊÐýCe,?°ÁY’—횂ǥ,àH9ÝGòoÈ[ \…ÿÛ;8,Ø?J;Ô û夰Ã}xlì`ªu,ƒ¶v ´øØa‘÷>çfŸZ†0jîv& ú}°a—N ®ÎÊAkN­†@õµ&†ÎË@ðßO°Ã {ÙL*W@óت†Pï¶v¨½Q:Û;Xý+í†@÷µp‚o†ÎÒÀüé:ì1z ¾Ø2h„u ™8du¤ßa™`&~Ù”ÀñéZVÁ 6‚ˆbBH­¥ $L2­) 0Êl%C.Bp”0dtiA‹t€‘heXJ tÚRD–AC ´¥­h´ÉC,6”Aƒl  ÛiH ðe6ƒ ´¤Ãá´¤ÓvÊZJ †T^”2›2Š @M e†Á &6PÂRbÀaêCƒ ¥`Û)0°.¨2{,a(0m ¡¶ÂRfA–ÚÈ @#¦Ð(1'° Ò†C7i)H Ò¬ ‡ C!›°ÊÀÒPbAH  ÖÖ ãƒlˆ`Þ2»æ, ¶Ð(d3vô€¢˜f6 ƒBP0”2 K.7J@PÐ[JCj a(œ¶R¨¢:m CR©Á©†”2‡ Ô&Òˆd4ÀÚR¦H6P`ÛAH І“iAÔNÂPÛk * DtGÛJ@UL5AH ’†ºa(bÒ†Ò50”AKoTY«Êˆ1PaH + @YXmA©a°kƒPe¢p†a‹QÿùöhªÈÇþZµ¨ÿÿÿÿÿÿ6QùRê?ÿÿÿÿ– |€ûA]N OßwÿWÿÿ_ÿ÷òž• GˆèŠ£´¤c*kpÎD€¹& $â3"À¹ œ h†ipá„ " Èe$"‹ÃBT§¶–‘±IH(#ç~Žì0A²ì‰".ˆÄGGËäÄc=—È„s ‘±—¬4j˜ Ð4à ܬ¤Ud3‹”TC›ˆ§- @Ø] `!@Ñx“3¨4”B DH:D!!Æ„HR4m;Nï §¨A¢(Ðh€" £º‚ÉHA•Ó4ÓMƒD2É´AÞªƒ´Ó@Ði„d õA„àÓ°ƒ´Õ4ᬆ®èívÂïwa:­ áÚ„Öï´šwº§~M4Ó íl#«Õ?ï‡Úm·éß þøxá¡vÝïõ[A§K ïÓµ¼/´îÕ{¿o†Ÿ¾Ÿê½êûNÝWºûôî½o´þôþƒMº^ýo´ö—NïNÓõúwj{M_iØg§Õ'þ«Ö޾ݯ«¹*"p½9 ïôÓï[Ú}¤°Wº áZ!°©>î—¿÷·ýôßý6·Ýß÷î©¿ÿ÷ÿþŸþ½u¨_íRov—‡·õúOü3ª ¯kiï~ºW Á¬'íé}oïoð¼ ª½aªMëºÈGpAñ[{µWß{ÓpÂñp`”u¯Tà /¥ÿÁ—ïx2=…‡ßÅzMÇïk_‡û»´”HÃüH@ÚR¡ÿÿ믿é‡^¿­j£Òƒ½=o]ß]n¿mv»¾ô¯ÿÿïõô¶×ÿ¾ŸðÞÿëþ«÷Û­ÿÿ!ˆ{ÿÿZÕzZiÞ½¥µ÷ké½zÿºÿ¯»_í´¿ûû·ÿÿ×þ¿!‡öÛí¥·ûý[_­ûªÿ„ÿĆ /´·þÖýÿÿõ»· êšÕµÿÿ[kðµý¯¿ÿ®ÿÒÿ«þÆõ ~פA¸åÖ¶×~þ®°ÿªë¦ýr —}raÿõ¿í4—ÿÒmSê¾ „½jär‡ø³8%ȇÿ¼/² 9ÄdWúï{^Ÿ÷ñ4ÞÄkC«ð[ð‡¯´¯í´¯{K}¯t»Ýzþÿ¥î¾ÿÚî½{¯_×®ÿëÝz¿õßµ§t¾ÒÓm®»u¾·]Zúí­ûúßù7" ¾Ò×÷~¿VÈ.;Úá¥ý®×w¶µ-rU]®»~ÿo­«·û oí%úÞî£Ókuýû¾öJŸ¾ÂÈaþßµßÚk»°º÷ÿ÷Ó`ªßí„©¿´¿ÒÛÒé]:YBoßä߬‚Œ[È(?oØ0¾ÿwk°amqa‘ ÛïoΊïéŠßᔊjìâ^Ö°Õ²: Cá ïïxpa}ýZÛö+öì`Íz®*$![ _t]Sðf‹»#£|S[¾ÝoµÄjȘ}®Å5Ç#Eø½¸‰_·[wµÿÅÞí{Ã߇·p©Þ«k¿¤¾·ïÓÖÝÛÕïxk»ö·ö·u×µ_týíôÖßá§oÚêé®é-5 ÿ» ûoÓ ~šÿèN–þÿ·Ðan¾Õ[[[õ¾!…-Ã[O†»jý¾šÝ¯ oíuÖê1i…[õÿðLûM0·ì0«zÚ¾Ô×¾û}šÚ¦ƒ Ü5¿[® …X4îï´íB;P 0ª 8a4ôÓ ¦«z (T Uu[ì d¬ˆ`„C ‚.ƒ&8A…&˜\' v‚`š`˜Mšzi…DNÁs ¡È.$Ø&ƒKdAÊÐdsŽqÊ%ì VE‚¸":"Ó²z&ƒ Þgr‡#‚™|ÐQQ[ Œr ,å ˆƒ!G""""""$ˆˆˆˆˆˆˆ‘Uqôþë噢X§äÙ×ß§ýk¿_NSU.7åªBXÿ%„3¾a–qUïjöýõÿÖÿÿù‘bãÿýÿÿÿéûÿý/}ëúÿÿßÖþ¿å­Oüd"â[õÿO½ÿ÷ÿÿ׿Õ.ÿÿÓßßÿ×ÉwìÔ&VŸ½®Dƒ˜sµé-ˆ½×~¿ÕÈ@ŸR`kÁÖÂøŽ5úúýÿžô°Âébȯ¥-…vÒ÷!,¨"¦Òè*|Eþí;KwÒ^ä+”ý*Ü‘ ]Èaz ì8U¥O ŠZ_o×}¥¥Z Ö–öÖÒûiR×t´x~–í´—[JÒ¯¯ïu ª~¡œAìiqI$¶¿÷*iuë^•¥M-.ºU­-æµ¥UOKªÕo\%U Zû]*Ð]Eý´:IÔ2‡ Tö#ªÓÒ_Ú^¬§DpÙ½ëu÷§µèª#¢ñ‹åÂ_!›[®á®ÐÝû“tµÜ{Õ¬›«ËæÂù7 WÊ[Aü,>ÚwÌ•JÃâêÈ.9nïjo–bJƒýiÛ¦.–Ý¥K®ûÒÿ¥·ô¿M¤ÿ-±˜=ŸZþ‚‡#‚fÆŠô"$r 죖9§K_!¶ä‡<΂—Jj¿-14„DD†³•©K½-.(D3œ¼\9ŒÃ0ˆùåÑÙ ¡kЈˆˆˆ‰qʲ ÔˆZ]‡¤h̓›E ×§ªrT3–åÔ)YKÒ«¥&9 àa.ºQ? Ô4qÊrƒ&çAc”çr ÒƒôB""""Uä"1—dp[ ¬?f""vjG2|Æo<Õ ˜wÅGb""LÙpäp¤p<^˜wÒ> ˆ‰2ù̼`1¤ÁßH8ˆˆô ˜ç²nk8Ân‚S釨ˆˆ‰ 4yFâ:.EÌ ºúA‡Ðˆˆˆˆ”ŠÒ = a™ßIµH0Á<7Ò ¶a„þéy`–ý+°k·ËL³Iµ aªõ¤ƒ¨0ÁïÅ&õl ¿¤Ô0Â_ÒmðÁ„@…~ôz•æ  úL=Xa/é0üh*øH7Ð`Ð]zoH0aïiÊùt 4—I¿H0Ð_¤›]azÚ†Óè0i*Z&CJéÅ„›ú°ï¦ Réþ 0‚ÒÜ&×@ƒ $˜K¤wÐ`ÐPgÁúMª¨a ®“{Ð0ÐAzA»T˜i"¬àšAµÒ 4\$ÃúC9b‚ÒM§¤A oÒ 5¼0ÂÃrCµPÃ@ºL:p´ At›IÓI†•Ò öQnœ3 ºL?V]&6 0dðKÓia l! éðuªM¥jÚ\$k¢eDºMÛÁ º] Ãíl·~Ã]]¯i7!]Ðl5} ÃŽ›é6©_Ò ôÝé&kwÒo©Û‰¾Z•$ƒ ”ì†Ææf3HÖ›‚ù Â>)'Y¦õ=¤ÛWÁ úA†ÖCm¼ÆÎͽ&ÕÁd3A‡&ÂkH6–']a0÷Ó¸,ƒ:áH7­[ì'!bâá mlÈ¥ÀÂÔ `ú ™ ƒNA"OÒ 5Á4žÈ).œ Áô›Û20 ‰2 ž>oÂi $ Áô˜i6dœ$I@’ˆ¸gçu$ƒu„C6 ÁJØ$ߘ4¬Êˆ °dsº;À$H0î¬=̱! ˆ£³£ÈGé‡éµÁ HM”:¤ì&Ø2™ ¤u‚!˜U;pVIµÎÖ,0ŽÁ"ଘ0}ÚØ ‰(q>Èá¶7Ò ¦v !ƒ.‚`Áõm4ÎÅÁ¨81 Caô†¶ ÝäËVGDÁ²:ºL?; ÜC ˰pÄK|˜I!•°æF‘„0ßV2œ&CH7Útd, É6} ؈„ •Vd f °`ý0aDÃ32XÚl0úA°™1„d–t‡°m$lJW€TW ô­4W˜2SƒÒ ;:†n §(sCh¶¤DØ" Ç'²¸ˆœ µpaý¹fÃ(l®EõÃzA Ä,®'‘ÁX-ƒ„›¦ ÀI°{¦ÐLƒVÒ¥u0Të`°e?¤ƒ¤ Éâx4íƒé6“!ž_-ð2°ßH0ù äŒ0}&Á[Ô &v`4t›ZËu VÂÔ7U·a‡´a­m¢ ÔIµ{mÓÞõaªöˆ2n– ±é0ÂÕ6ˆ-@ÁXòÿ6v$ {áºPt"$“”9VTÊ]"ºÒ 3²`¢í‰ 9ø‚šÀ9jp Dp¤s.F:1òMZBÃ;im ÃpB""""A¬r„ä$“gzƒWL"¢#‚¹ á'PÓ#ƒs†c1œÐA³º­;B|Èè0rÓ[°#B""AWr°¡ÉqÇ&\ô(°…5f˜0ƒK ÐW/â"""Awc‰g!‡ »’i…\™ƒA˜@­0ƒØpŸ¦W 4 ´„"•Á”0ຠ©ƒKi)ÊÝÖ†iá ÎqȃÎ9·VÚ†"¡Qº€¢´ËA¤DDDHyB.Í£†hEÀðÌ«I°0eÔk#ᢃD‰J9VTÎçr‡8åù!Ëp°ÈƒkLh&È 4±Bx!/&9s9œ¨=œr£šÈ5@ÞÎ9pÂL0 MT9i‰ƒN""""F!5Ä|ú$gˆgò„²¬»“ ƒ†„ÀñÁÄDDDDDHÚ(G¢8†`Ô“aÌ ‰à=ÁÄDM`aCdá¤Â-¨D3[”I²l 0é¢Ñ ËLfì4˜ `‹ApX–HŽ˜6]S ¿–…hŽÓ!+4‰e2’”…‡„Ä‚“‘G;˜rÇ+ÊPfA²+”ær‡8îZx‚ ÐÝf #KC<7†£ã‘Á³ù‡! Ñ\äG3ÈQÊrœ›•…yVTÊr‡0ç9PU˜¹æXåYà§(rÐaÉ9à”„¸ »ˆˆˆt$2›¥Ãb""""""""""""""""""""""àdÞ=7-# ÌØjÜ´–A§n›‚  ^ ·anÒ-°á#¡É¸a²ƒËH° 5n Ãepaì‚üw)Ç)sF9œ›–幬È(Œs9Ü‚9x;”9×ÁÃiHVæ¥çƒÁG/r70ä3'ÁË6@ÈhièDDDDN¨HHœD|Â5£`A˜g#‚‚8d‚Ì´†ƒ3`üDDDDDd¼GeòùøŽË†vpYi$ Û&àAž’®Uä&GÜo#¢:> C0p©ƒIDDDD[–€Ì>žZZ a†•7B†Ü Óeˆaª·-. Ë%c<Î3À„ØgªnZN´„DH9°ÂWÛ„C(Þé† $›„Ÿ&ÊÃG¼³Ñ߆b¢ a¬§† Wˆ"Fúd!4ö嚦œ&˜4©º `ܾX’“Y¥a›´¤Ø¤¥yf‹$  ††h"Û„$R VáÊ7¤ªnY¦¢Ô ÑJ¼ ´2£]¹fˆ ÍCJðZL[rͨ2´‡ÓrÍ 2´†–Ü-&@»6ªW,Ü Î0Í!+pitá±iå˜h””?nY‰@bÒ&êº[pKHt“Ë1P3u ÷D ²¤¤›–ahfiAûrÌ) Í"nT A4´[«aáÊdåph1¥[–`˜eè „H#0j½Ë0 35†”Œƒ#ªöài[Ö­¹f Ý(aƒÒÞˆe2PL‚óeqÁ½/pD 2*Ò Øk©%mË3@1îomË2—iPa†–­Â«» }>vXTîW lªöå˜jNÃUVàˆe=M²š/¶åd34¼¯¨(ëÛ–uPÌëÁ†’ëpD 2ƒ¥àÁûÛpKK°Ã]vàˆe2¤k{ôî­P0t•ï,â¡”ð¼0Ò^ÃrÎ64›R¸lë[–s_^ƒ ]R’xnYÔ[H%Pm-{„@»*HªÕ†GUA5ygNVOH1Pƒ»–r£J¡…IíÁÍe[j±•ÔÀ½*i·W¶º{rÏ›¤+¬u¤äáòÐh ®Èg0•ƒ•Í'n ¶‰Ô“EÃàÁõCtíËBÀfêaÌe•ÌÁBª ûnâ#ó ƒ­§xD3+ÕA†µºÛZC3ªlím^#æt`ËàÃúoîZ "mì*lB!³n@Ã9ÒIi;ЂȤ@‘õmáƒKýÛ–D Q§LÕ'­¸B{áËh4ÖÚÝË@f{rÈhˆn—ÒÛ–…iNù¤&³½A¿_»pBCC@ {Óƒ†C) —ú{rÑTAðšh¤¯«¸BA»@XXv $½]å¢pAþ“Ã÷ý¸! ]¡Qý4 ö–ÛÁŸ²œ:þ­‡A¥¡aþ!‡¤é{pDÈ&>°d 4 Ò¾å•H5Hú /áËh[a%»„P ßáõµ§n"léÿC)¡ZØi-·†™°Û Þ–ßL€OoÿàÁ¤±TïD3M…Ù’u ½,0}—¼–ý`ÁÖÕ[tA¹°%/´°a¤¬%vðDuzOifUŽ‹rÐÿèWí Pa®×l:X®ˆhÀ¶I¥ßæBkƒ–ÿ}6VÉvX`ÿM¶éÞAÂÃIk·µ² ®–A¤p³!°Ë×M? !±u²È’Zm¯ªa½©š0ɈÈX Õ:a6ðä݉ÙH(j73l5]0ƒnˆHN ¢FäÝ%­·„ 5l·¤MÁa×߾í4»mò=8D @hèÜoþÁ5ö•ÖÀ½¢„7Q ’X‘<·¦ l®HÛ# ˆb ² â&Bˆ%^"ßoÁÄ0ˆqÁ¾ˆÈl•.ê ®!ÈŽSt¢·8Oöå¹JÃma ä`KÛŽÁ®‰ at·«~WAjW‚¹²¤½½"‡‚L!‘pVÂéSò4B,ad ö´Xå.7_o°ðˆlRí:. ga@í™ 4W°êÁ‘Ò‚M 82„ƒZ)-·ÁŽÁØ´ŽÊŽ‚y•†“} 4Â!œÎvX „r@ôµKoAƒ‘ùC°K;TDð?]öá À ˆhÝ£´¼Ž ½„K°ôH8DÜâf ¨‚;ÎÖÁ«_}°ü¯Á¢Œˆ2>ˆB„×·H íÔí•Ç –d¬Ð ÞvªZIwÛ«2K ™+àÝ©£·Ã ,£!pd«°}oØ{¢6d é7‚ ÖX×Û¨0×2Uí KÎÅÃPŽž’ß°é°D47PT Ó!Òöô5Á’NÐgi³×aðz°‚Áœ~¨&Ö»áƒó!p Ž„O#¨Þ U­.ýƒW †SîCí@":×ÛÐaø „Ì X CÒ[u >ÌŒ‚l AÎÜLÿöÒs%\› BIÊn †˜áZÖß >Â ÜØ[Èè·¨5G×o†àˆlYr%Ä¿‚Ò®ø`÷2Э´ÞCYκZõÃuÖÁÓ¸†GEu@mz®û°’w¡#‚—(ª»|0ÖÁo'íÄ’âD5vO_|0î­¢šáÕ%o°k`‚í´Bñ¥È ÷zA†¡3µ€Qö‚5XAZ^ß >ÁTÛ¢/Z¾Ýh°Á",Aa¯®íè0ÙÇA™Â²: €N'ªê;±ElŽÉ2P ·¤ÞŽÊ¹7¬ Ý´M€U;(-wí„ ÃB §)È+lÀ0t“~7˜7Ó¡pV#á }’ý¾0’x0‰æ¨4•½`ˆ7›Úeh Êå†ÞÒÿ|6M–ÀºÊã±gq&° WI7V ‚j"z#ƒ! aû}‹ ìOƒ)H'‰ yeUøa“b°/jM¨ˆ a=UðÁ‚IäÚ¤\L–õ ‚ˆY´G3HA¯I‡Ã ÞÙ6pIÕ•mvøa¢ $ é²l(ˆàY]+za–éÌ­t›ñ?‘â8+2 Q]¾e¹ÁÊ ßÄZau_ „ " $³t›&ËA« ÕCu 4)A$¯É± 4HlÞªøa„Á KOY7àQôÃì4ÁêÙ7 kÕûi„ABñ Ò[Ð`Ð`‚í[ä$‹+MÕ”áÈY ë WïÄ0h lÖÿÓ„é)6©·ÛA Ý}j­“{ úaÓgÃ+üúÛàÃV!^“iÓ뾃˜+ªÉ²Ø5ö•oPÁ¥ëºit½ðÃØ^– ¥­oÃ|†RâM-²l¤—ëïA¾AºâÁªà„0“ý|0ö %Ø Â¦’[u †bäðP×pD‡__ÃtS¨LUhU/Þ›Q‚a-‚MÒZðÈf®3MVM€Àð#_¾>˜[dÙXEÁEëü7t\auÝÒa®òlœ  Õ-xaÚMm‚AúûàÚÓ®‚iÒõì4Õ­°@ƒW¥]C úå¸] +õûᆠ„Ÿ²Ý@a½VþfJ¡—XNÐ2 wý>Ø ÂáBh3 ××Ô0EÈù|Âa0™ ý/|0º &‚núý0̆Ã0À4zpU¤º|kô¿ÿ°Â/¤Aê–Ÿ 3$áš m: ã…wUü0`ˆ B—T!‚#¯ÿÐa¤ Ö%[I„>’éðÙ”hã0¿¯« ¶éud·ÝWO†ÚÂ@Á°ô™ÝžÚ[ú¾½Ò[ì@ºd4·WK¾¡† 5¯K^ 3±P1¥ oû« ì 2µd GëÑû`‚Ö‡ÒKÛá†`²6þ·á†*&Õ[­u|0gh §„߯ ï} îÀÀ“jŠî«K}†Â*úû½ Ã+HŽEœaz^—}°„ vªÿðÁ„³–a­%™:z¥­½, °QK%×o† Òú§þ¬4g)A0—¥·Áƒ q0féRkþÙ a=ÂÞ¶½½2 ”D} íTWøb$ ä°©ÉëÖ«~‰;‘\“•G)Î9‡"\†ÐWå9()+äù|לDÑ4}ËäIdtyÉÑ©h y GEÌŽ!9Ìv\ ªÿPÄDDDDDDDDDDDD©~ä4Bá}k$¾Ö?_ð‚!˜ 'øa޽¶µº¥In_ðÃÊéÐ ¯{ª~ªûh"DÿÁƒâ«iuj¿†Þªm Uí„¿úKK¿ƒ ö ú ßUôŸXa´W 3þÄ~ù‘$r]l ºôb‚_kí „21 _]°@«Úß[EÙB×D4þ¡ƒì-zI5ëuÃa¾ýk^°k­†/Ø[¾Ân¿ d-þ 0‚ÛÃ_¥@þº½ðÁ–ZÀäQ¦ƒi{ _è0Â!沸¯û­Ò Ÿ®&ÕaßO«}=k¯éC¡$¼oô¶—ô¿á‡`ˆch×ÿãþ—×.ÿí$ª—_ûÁ/ÿ÷_Ó»ôÃÌŠA¯ízë_ø0ðA}÷oékÚ¯Á‡¤—^Ÿ[ÝiÿÛP@¿ÓõÒ÷ ý%C ÖØAöõ«]¢ !¿öðþ·Ú¬vž¸o/_ô¿­´^ÃrDØ®÷v[‚ýit¬GJÚ™ëÔ3ØB:õüüvƒŽ½b-궺 ÒßKK"‘ U¤ÿlÉT>í~¾a”Š Ÿáƒ23#†?ïö‚”‚îúý.ëü„T0ô!>¶‚ ûTN¾•„×Òº¨aµ„»®ÖÖ¯Kø0ÚÐ[ioVÒIþ6³³ cµÿT¤G[Ò·Ge m‚^—îW«†Ž¡ÈcfVÂ[ôü'Iö¯X`ý-ƋҧK~8#úü-Šþƒôú@÷µoÁ Âî·KÒ ïðìaV¿íè&Û¤2%oDGƒ)È/°¦þÒþ“ÁºlT È»UZÐÖéS·ö‘ظ1Õkúýðýö½oÕ·ðaø »ºÔ›¢õߪ°~*ô½=®·«ƒáïwWé{~˜~¡Á_¥ªÿþ”0ÕÁGu"ùtGdpÂ]ÿ÷I÷ðÞ¡wÁ·µ®—Òûuà ðÿþýü~†6}ï]{¥ïðÃðA'WÖ½W«ý‡¶-{¾¼{þ`ü$ÿúúN­×ðˆ/±„ ¢m}ë÷ÝõƒíZlk^·[ÖÝa#°0]ÿ¼‰*+”åÈÄoþOörf ´ÿøMA‰'+i}&Öúƒ~‚ßûµ¨¿ì$ú ÁÒ• Ãë[v«~“¾vá-ûvÕBÿ²tÝpÃðAoöÜ0T¤Ïû¯XaøAö˜Ud«ëO]ƒðoO·š"àFáþšoá»Âýí¸A]+¿á¯¨0Ö‰`1ÿ¶Ï…„CImþÂÃ}õW±%Òm¿tWªÐ [õ¶*Û¾°O\ˆ8ïíÛA› †CUºu¶“Ü0Ô áh6[š¢8M´~Óaº &Ì–(› †šïW°ÃÐH a‰õ¢.ÖÛH5‚¨2ÍÿÞßo ]H1ZÝ´˜M„òl ‹½|7‚ è&ï톓A³"ÐP2œ†¢æ[nž[ÑaƒPB Õ>–í¥Úxžºín¸n’‚`Ô“I÷²œÛm*pD6Ò&îK·_l7–ô `¬Û€ô$b7]m´¶ÐL0‘7 h÷I¸ì…ÓÁù'Öëm-´a…SÈ4GýÕøoA]½1ÿÕ°Ò{‚l„ø¡ u ¯»°ô”ƒ¿»ê´¶á1”黤û <ACö›m,7!! ›&^ÕÃJîy](6t‡ýbÛiv 2›Ð‚lw¿ :CAPA†¢|3/ßm-Ä0R{àkº^ÛÊä‰E‘BÃ"¿aîÚ[‚Þu]WÃxAnŒ–CmºÛöKlm:×ød2ä5 Oúm¶Øi;edx5Ý{°Õ`ã aâhˆá›~Þí¤®—~¿°Þ"‘!0ÔLÑ3ßmݶ—`“³}.ë¼:B7B­Á¯»ºNá'@h5½¶—ÙÞ¡š¦KH ˆn@‰-vöÛ®A ,Áâu¿»â‚®Pyîy).îÛ vJAAfXIê=y¶Ì–ƒ`D6.Z‡1Ê‘_{véC`ˆlf Òî²@^ÃÐ$ZÈàÐÁÕÄœ…õ»l4ÙúZ|7F^‚!!«*ÚÚ!·!+LÃ… µVÁ ÿ¯ 5XA a‡¬‚¼€ˆ¶í„·!»×úÛ ¦–œ‚Ì“û†–Ø ‹1P ö’ZöðH÷ 0õDSœr ’GvÒÛ‚†bSïÿ††L,<®\6$&`ªG^Ûim¢Ù±¤ÿ«†ÔÐå{ 5Èmýí´¯H³P†ß¥Øx$Âpaá4ˆ°*û·[pD a*PƒZÒØaÂ2 ¸Žaà¡"X ôÖKnC³JR}v Wº @Á:*`Ë{a°–Ý(AíXKƒÂ'¸bôC?ÊX2{°ÂUÂÓÆ ¶Þ “xo ÑÝ‚žÕ°h'aƒ)š AôDÙÕÝjÙ,Șg"e¸oíODLÊZÛb·‰ Ý¡°øD.Ø5ìaÁ_Aïµ¶D!uDÀ:°ð‘ [ÁÈþdhʰ\A'ZÃöÞïD ÛZkpaà‚A6á‹ÂÁ”ÆÃé°ÂÛá‘â>“Œ$þtePl`› Áá\X­ª+,WÕ¾ë ÞµØz A¾Ô›ƒ A ÚÐ3ÕýÖÝHmz ÿ¶'¶‘‘fGf¡Žímáý«ƒjLÐ`ð2†ë éÃU¨j÷k°è PNàÃÁ+¸ÃJÚ¶KAQîªá¼a;Aƒ D08@Èð¡°xmèî±·D“#ƒ]à {aà;xoJèFÀþÆÚÎà ê!«¶«°ôk íˆa¨HIÀóAï…º;5ÿ‚}™¸g¡¶ÁWÈ&Ûá[ÁîD¶Ò݇‚¼[•Óƒàˆ.¸PƒßVÒ;8/tÛû :'¶Ø`Ò\”ÖÝ4ŸxxnÒì<(&×a½vîLvíº è< Á-õ°aàc §²pÃÁ!ƒmÓ‚m^@»r‹m­Ã†„AaÏ´ðÃpAãð0Û Ù 7ò­Äöõ°Ã‰h†™(Hnƒr«î¥R½4CI¸»^Þ “ÈN ³¾†…â‘ ÞB„Ô'!¬å7ÛÖᆡp( ¨0i »p@Â¶Þ Þ „½vúíàˆg#X3ðÃtÜÓ=‡»vJvXoNëÁƒ£±pΆP?H6¦Uçn@á3Èà|•½‚ºA9[nëmè#‰Qì+ @ç‚‘B ÞB Ým¦ðšF dî*ᆠ  $F‚ àWHÁ+R¸@Y 6èA0ÔH—&š~Èiîç``Ý^°Ò"̨ SM&åp 7î |Œ‰‚8p¤CMW è†z‚c&‚n̬vƒvØ@ÁÙ³V¡Á‚(CPè2‡ ¬Üë¸o;V á4wX(JIÒwmMEá&"„ð+‹ödf;H’ì®`0§z‘ Úi¶Ñ— º0DˆP+Và 0M‰+ð„ê½&ôDPZ_l50I(`ð™ÖdÒÚ ƒ„ê™80Â;5z¸0ð â–t0DئC,s2zPmÒg8hï‘­·‚`Á ’aá&ÐL††A«ha^ˆ' £²YûA•$ü7áÞÈvAvÝ Õ2:; ÕØ5 )[ ÂæF“; V҄ä0„NÒ«ÛaåB ØtˆS†h‚é(“a<6ô&øL’@Wût ‘Ùj\®ZÐ'8 7 B{u Tƒd(ˆà¨G]Ì‚¦Õ„تm‡I¦ý„&`­öð@‚J>˜'»E½ÛI(FJ ÉW‚ Úº†“V¯ÆÛ_÷2[O†tƒ6‚†Ô&ÒÛ¾ØkTW½·¡ '†°_¶ÚÙß6×Êü geÛPDW00aÒL…“¿ô°D*nW@Aì0xD5׆ï¦÷m°X`ˆ]…\®0 á¥sµ¤Ã¢¤ ´ nûN½¶uÝz+˜XÃÐ%n½»ÝÎʼn vË0º#åó Ždp8\®&‹ƒ$?†„ Cª¿» ›–r˜Ú4ËæÆ\ q> pêíà‚à WoÛl,†YKl´%3LÃ/‘̸d0U ¾Ç v<”sT0ëî¿D4ƈ8å;l²¥eÙÄpˆàäpÉ •ÕL¿ ðL,7Þ߶ਃi0„7e—/›E>\  +Êë`nGàÒØ`ò(:êi “Óݳ´àÖˆ2 l›‚#c<Èìàl#˜L’,»‚BÐo¿öìrmòlR‹™4"àh )ü I„¸`ÔB¹NE·+î–í„ÐD0Ö#ƒ¶Ã-ÄãqŒÌˆàj ÙnpgØà›ðQaéÖõnˆ4C àªí™Ž#y8ÍäpæyeÁ¨ŽÀ$RÜ@,&ᇂAƒÕZ]ìîÁ¡¸E k¼Fhâ5äñ)xº0. $H·&a:ì4©¼&·öáà FÁ¯b""""$ A­AˆkÀݯ[¸"cH‹dpÊna„‹q@<4ªÛf°i`Ô'Oíà“!í„Á¤[–á™]ÐA‡‚kþÐ š*€»»G-Éðo]É0ðM/VÂ!šŠØMØ¢Ýl pÙðjAʀ ^ØD áía”áµ°rá¨Á!†\ÜÖ½³*{¡3@É t¨T­Àv•ÿ°Ab%" hÂ#†@2-¦¤ HèîoÒ~¾,DH„gœG‘€Èê“ ‚Bõo]œðb"$¹˜Íä|º#àam5} ¿ÃMÎÒÃ)ÄDD“2쎔•¨@¿Iµ¬]‚GX‰ü† +¦¡iÝOZÝj@Ë@…ÄÖ~ˆ‘L'ð­ýášžv¥­¿¦ÔŒ +Ýß´×HhÙî–¶d0Ò¿A>—öÎÊÃ-ÿ Úfa¤ûI_á·á1´îým#†›jÒNõ‡Õ‚[+v•»^é9ØØþ‚ÚÞÐA‘bõ‚]ª¯{Tßðút ßÖÐM®‚ÝtÛŽ}‰¿ZtA—jž‚·m‡`“ÿM · $ú[oÁïÙ©ÇI6¢•·^Ød}Á¿ÄEÛ­™ôŸôÛ 2ßô†“mý·Îü3wê úí/~ˆemWúMÒ ·ø`ÝÒßÒõÛ"]Wz;5 ÛÝRo§m>ï´ ½¥îðˆ5›ÂVà º­ÊPf;ô®ú »U†˜V)ëz[kQ%ì ©s·Ð¦ô› …âÙ0Í~õo]ƒJº]úú Ø0’Ó2¨37íNÑ·¥†^aØA_‚)ö~› K ƒfSAݱJÐmé8l¶2 ò'ýn„› c¶„.Ûû{[ìÈ/½Ý½¬›¥V'Û"PˆŽ _ ›ëaýÛ}0y7)OwºW޴Ρ«Óci7»uA„¶>íÓ»·Ó. Ÿ{m„®½,B÷Ûm&öþ—ûé7í­Ýßm ›½¾ˆné6ÚN¿TîÞ¶ÓmôêÛh'÷\‚–ȶþÚAþê+ý½!½ú÷¶Ú]ßI­÷´N–÷M¶¿ôÿn’í­#¦ïÛ´OT‡wVÛK_¥»i{iRÿ†ÝW}]ü;„½µ¯·Þ•ÿM»öØh.ž½¿¶ëÕôÿûAjý[¶Òmëí}þí ´›÷wíÚ^évÝöÛW_†¡ÿv麃<æÎO»)}ÓoZZÄDDCú»iZMö÷Ûm…êw}Ú]ZÛûm´´Ն߻¥a[Xo¾ÛI‚~ÞôÝ„´µ†ßWn­ß ?Û°‚´¯°íöÛKa=CöÛIG«¾ÛH4ßa·¤ÞÚÃm[a„ž¡‡éÜ0•­»ÂNÅ? ¾º¾~ ÛM¥ =°“´ý†øI¶¾Ýám„ü0üº´¬=ɽ†c»ðÛáÛWPßatëmÜ ¶bWø ­ß¶ÞÚVû†[0»wXmܾûô w¨aöM‹¡¶ÛáƒôC-˜6ß[{Âí¾ y64oÕü!M·}¾Â ·Xa»‚ îêÃð6î¶‚ Ûn¡‡x$ï¬{„ »z¶Ý‚ÝßaøA6Û¬0öÂV÷Û|›Xi»oÃá~ê÷`•Û­¿†“7@ÞÖ{„ ·ì©nJaÝêÛ…mÝC ðA6Ý­½Áîü;ÁÒf‰6ï·Ø@›¶ÖÜ ›þÃz-ÅCQÃn•½Â ¶Û¨0ÛÁÓf©6þÁö;möà“ ía¾ÒnÞ¡¿-ÄúØ{‚ ¶ï†[ƒZ †íö8 ›·¨a·„ok í„ ¶Þ¬;ÂM·koËw fÝø`ÛÁn·0›mýöWY¹V-Ûk ?…¶úVÝÊê¡®í·|2 65ÐBGÃm·Û»+‚†»m»¥ ¾vÿ†„¶Ý­·l&Ûo†‚Þü0ï&þ°öÐ&Øoå8o•Òfö”[¼ ›¶ønðI†Þ•‡áli¡»|0Ý ¶ï†i6î¶ü v™vßVà‘63A½°°Ã¼Ûo†ØA7ÇoÊæ ¨íðÝáa¶Õ‡á& ›m¨oÂÛöà‚m¶¡‡¶&þ¼M¶öh'~ó"VnÚ†¹¨+°ß†è&Û{°D6Ú„7¨a»¤Ý¼í-üȘ+6ÝEƒ¶&Ûá¿ 7u »`ˆ+µ ¶û~M¶¶ì M½C~M·Ûó/VÝ`ÛÂt¡‡á&iC°JÛJÛv'ø`÷7i[ɽ¬M¶‚¶ã„A•¨fô¡‡¶ 0Û oÐ Þ”0ÛÁ'maùÙHÝ¥ =´mº·áRj§n•†ø$Ý„¡üm´0Ë«p@›t¬~&Ô7ØA6ÚVÞŽÆ;n‚°{a&í(aÝ A· aø@­´ ÃðI» op@ƒº ÁÝ‚ Û©f- Ú•Ò–L6Ò‹¹K†íT¬=ˆ@‹U^Ûa+x žÝ{°ÛX|$Ý ¡· ·JöA¶ÒƒäX ÛÂVðA6Ü(0ô¶†A³ g ZoJÄ‚9lé!Ãm(bAE•Y6‚Y í†Ò± Ñ炇+å4[D ÀŽÒ†""$ çrÈœW”ÊžMéXˆˆã`aÙÙа‚±φ±Î9PTÝj&|1 Ô磚o ð†Ã ¬DDƒPå¹FÀB®J‰ (3–Ü,zPÄH5ÁPx4K–‚mÒ†"""Aw0æîIzv”1îj"a[¥b$4°§;™ÎåŽVÀ“l4¡ˆˆˆ†G åÑš#FB A6á+eÀðÛ2.ÛÐV+vÒ† vÛÕ&9 ­†ÚÃB»AXBÛh++B8p”D2à¸MÚ "K£Ñt^#Äp%«m¬DDN¨Â#(½(‰Ë£lÀÈàm ¶”DDäp6#n‰D|»#™ »mÔDD‰#¨Ý„¢PŽ#èº#™à4 vÝ4Ž28¤p3{n¢"jD|¾]ˆìŽDpÎG°7nÂQ>Ìa–8&¥R0æ"äG°ÝÛXˆˆˆáÃ$3´D†Œeâñ#†@A¶Òˆˆ‰ähD|¸G †-¸ADDD#á®Ý¥èÖ‹¢ñ6Þ¢"&€Qm¥)‚LÖdvGˆâ·aÝm†Ò· ¡¶ÖÞ[a…°ô­· Ý­·JÛaa¶•»JÛ¥wA[Ö†–aaºWuÞ‚† +v•‹KiC­´ÒºVÐRÜš´¤|CaÝ(¶•´ºPÚW [Jé[…t¬0½l%lPÙfŽ .Y‘—d|Ž‹ç –tèÁbå Â'Î#<—ˆ@Ë)J%Ñt\.Wl²)³qÄl!€É©ê&ɹa#Ä_#웣lÌRèÆl Áf.[‚fhôNÀ-²¸²"ô^§[ a†F…$¡œò3 ³» lŽ ÍB‘!Á¬f°0U†X!ÎÄpƒ´Ó4ÓL4Öi«úª÷zÛØAÛúôÿ×úvšh4 Á8† „Õ4 kÞŽÓTÂƒÓ ­§kéý&´µ¦¶·úwzzÞ—ß^Â`ƒL Ä;´ÓA¦ƒD =tïÐv¾«_‚øKÞõÕ§Òá?Õ4×_éÞ¶ƒÕ4vœ5† Ã[Ó´ð«Þ_ùÇ;”%XAivªë;k´ÿ»ýW}þ˜TÓï]>AÃû4ý;Ó×»úM.:d4È(°Du{ …~Âêîôõùî{)×}uôð©ß÷i§}÷~ƒ»o]þëD6A" Ç)Ôá1¡0„6=;5ƒä¿¢Ü¡Éþ@‹zD{½þšá>ÿn­=ú ß§¯ªéõªŒULÇ!‚o52 Žx² ¤ ÄÚr Ä0^ˆ7›„´ÝÐ*Ì×û­¿õÓ¿´éßWÿt- ŠðÓT/ Ð3Èl›Aïè# h§»Î1Ú××*½?Ó ë_éö×­úªî»ÿ­h!Ûî·Z  F Ñ»_Ûôƒkþ‚X§ô©{Úî›Aíz{÷þ©iÿ º«ëw÷H7¾úAÿéÿ¯á½;௤Þö©û]‚ôítC)ßÈgÈg᯿øZ ½úýáë¾á7ëÓÚëH/ú]*ÒUiÙ¨6|‚‡rGÑç(}§úB=¯éý'{¾ôî½'ý$›ýoX;¦ß À½d4ÂO !–Ÿ \fäx0½HðþƒAÕÿß]?ô¿M ¾µªnûÒ´ù ô»¯ôœ†`é… aÔ‚êÞS È0L‚ãÚ Ür¹Ó*/ðOOzO~ým¢ Žþí-{ûÿ}¿ôÒûÖŸXþ®÷Ýh†)A"åWo CAPšÈBP1ÒßÁ7¯õ]ø5á÷ß~“Ú÷íõk¿ý_î­!¯ëÃôÿ~›£ ½ ÚwÞ’uW|†`2 àû¿õöéÿa­zÃZµ_K¿þ¨Ò @’¿ýÕá§An/ôßV½dmÞÿ‚m) °µü;TCBV«¢(’{ F“Ý×ÿ¿îºïª¦éÝ+ú¿ú}5Pë¥)™“¯ÿ|Hfhþ@¼ Á) ºþì0¯qýÚýw×­Rn®ÿÿzoõÒ{_^ë@„Õïjýð¡qÈ4‡zãß~ëÿÿß÷Z]ýú{¨{]ú¾íwö¿O_ú¾ûÀïØ|>×¥ÿÿ_ûÿß]~þ¯Ý ÂÓªVy¯_­}õÿêé¿ëÿþ®«ï¿ä¿§÷­ÕßÝ÷ÿöÃ#ÇÒ÷`±ý×á~óR½[«ïoï¾¶ëÿþÓþ¡ÿÈ7r‰º†·}{töˆŽž;«µÝ_ÿý¾úÿý~¿U¿XA¿f?ƒ/Ô3òÎù ªÖ“Ø/¯Zº÷Ò§­þ¿ú·ÿ÷õÿOò ¸ûöéú!ˆüR|H±">ä5ƒIî?ÿ«¿ý_ÿ«ÿ«Zëëë÷¥ú§þ©ý?mÈaüþ¯zë÷ÿûOû†GÂKõÓ¿õ÷õ¿Õÿ]ÿÿoõ ­×ÿßïZÖÓÞ©Û^¼G¼+^¯Ûÿkÿÿ¯éßÛéúÿ×ZÝÿÿÿýt÷Úúëò ¿¥cê¿ôŸ×u×!Ÿ?ýk¾×¿äÿ_÷[Þµñ ¿þþA„¯þ/__­HlràãéW¸@ßÿÕ¿öÿéúº÷ÿë¯ä0é¿ÿþ»Î³«~ªC7_ïl†Ž$>þD;û]îõÿÿ×øoú¿^«ö»ZD¦ÓúOÁ“Ïe9Z'äs„R8/Ö´A‹^Wû÷ý¿J»ÿ¾ÿÿþú¿éïn¡ÿþ¸B;ðCÈ.b·_OuÓéSôý÷­K«ý[®ý†¿Tû}_ÿûÕ¯ÓÒþïNÿþÿM[kýý_îúøµö¯þªúÿ© Ñþ•{÷_÷ïÝ{×]Zú¿õºÿü>×Åý-Ýoÿ_õ_  êýîAt}Õûý6ÿßíõ¿ë´¯{­¯ÿ†¯ð`Šôõ·UÖ¿\†w)Za;×Þ›ïý;뾟ïêé_ö·ö»¾´ÝÅy” EõÒ¿MB_ß‚nþ¿µïßÿýÝ·ï÷ßk{Óuü0½~°ÿÙ?ò ˜Üƒr\-«…Èhï^½nžëï}ÿø?Vû÷ïO ZßöCý†’_jíÿQÓ®äJh†pÎ’ˆ0ON¿__ëMÚþ·¸{{¿§ÚÃJÿa…Û oà púKïWÓÁ;ÔÖ¶½okûkûûozÈÈfœp®Ã)þÿûõmdöŸØfõǰdæõÓýn¯Ýûï¾ïÛ«êÒ÷þÿѪÝÈfx`²*9ÞýÈ.9C¾ÂL4·ýP…·ìYð/Oo±õ»û÷Ý|+i7þ¿v»Wß½{O˱v]—PÎdq/~è^ì-…ÛûË¿~Å]uO×&åÒþ÷í§ßÿ¶öÒý4¶Úõ}ª ÀÏ ˆ¹ÎBù Š,88¦@¼ÒWû·õ^«ßÇÈëöݺßïÖI7ê +û ¿kÙšl*ÓÞô7ñ½È4jžC7\S¿ímûîÝ6ÞÒüo»î÷ûô› ¸JC°`•5öABõ¤Ÿµ ÛÝÞõ}È5¡>ßõ¿µÿ¶õÓ‡z··ÿßkiH.ÿàÒ¦ý†öãÙ Á÷Þï_o{ðöMmþÖÚì%®¶®«ppûƒNßÙ Ü$Á—@­7û ò#‚þ6ºâÿ­úIß{ëÝî«oö«}éúþ¿!˜‚ Ü JÃ:Ã5íÓ½ÐnC:†G‹¢87ˆ0–ÝwÝûÿ¾þÿööþÿ·Óïû oØ];TÙpUN~ÈeކÁβC.Ã#£j߆­ÈN"6+tý­ýª®·¾«þ­ý¾þé…·ûÿµýa¬0ƒ r&Fû¾ØâB)"ò .A¥Ûý­¿­ßíߦªŸß {ï»´^ý¿ ;ONùP”5È._wÈ(Ïïƒß‡·mU½7á¯Ú ûá îôÓ†šþ›á5·îßi­­‚¦b=ý`Eí»ß·oI­¿ÚÛúßö½E”ç4Óí5»»_¿ ªö¶ ݦƒ!šMmSƒZ]îøA·Þ÷ïnö¶úÚïÚZÐ[ï–âÈDA”9œŠ9E 0šš /w÷ª nÖÓNX0ša4Èe¤0¿î×NöÿÿÝ5ÿµ¿MW¾í½ˆˆˆ†S a0„ÓM4îî 8w 4 4 0B$ ùô^.„в>õ­;¥ÝÝ=ÿo„ÖÛ½5·Xamtáö±˂ɕl@M8i¦OL†^Ë‚i¦ƒ3‹‚­†En­ýÚÞöŸßh¦·ý¯wkÝöèDD2œÎ3•‚P dÇ3”æ0A d8ä@dng6Æ0@ÊÙiܱÌɧ×ÿmoïû} [Öá„Ó^NÕAP0°Õˆˆˆˆˆˆˆˆˆ‰Ù@A»ÿ´ ÿþü ÓMþÂß Õ4ÔA‚°ÈcÖ/á=WNj¯ß ÂÝÚh¦ƒ  È(4ÓÑ@Á€@Âr…+«M4ínÂÃôôÕm2 #„TõM ¦qæ¬ È0(VÓœ‚‡*Zƶ¬²¢ÆÐ:d …*h4Ða4ÓOM5P„0M0ƒ"Ž$„HT""ûÔD¨Í¡5fy[˜A d¨ Ó´Ó A¦™0C ¤*Јڸj""$I dta´ ˆ9DÎä+—³" ŽM@!"3ˆ¾'by„#ÓC|5Ôz”ÐÒ¾.—îÕ¨Qj?,•(ÿÿÿÿ–€µÿË €`‚aÊØ5•`Á+£Á¤VA¤ÐÌÁ‚¬øk²€Ó:ƒY86¸ka¦H S€…@9 ¤¸jÈ@r06Ê€`„¡¬j5†© wIºÁ&U‚°Á(ä ‘ÃÀ‚h †` ÞGDàÜ—'£@h5¹@4X­).Ä0i3* @Hj r@9uB04á°è ‡@r7/›EÆJ a‚VºúxTïû´Ó¾û¿AÝ·®ÿu¢ ‘ã”êFðÈÐa@ÀšÁ¿ò _ÑîPä‡ E½"=ÞÿMpŸ·VžýïÓ×ÕtúÕF*„&cÁ7š€ŠÇAC¹#èƒs”>Ó‚}!×ôþ“¿½ßz÷^“þ’Mþ·¬Óo`^²a'† ËO.3r ¼^‚$x@ÿA¿ ê‚ÿﮟú_¦Ð_ZÕ7}éZ|†ú]×úNC0tÂ0êAuo)À‰ d&AqÎín9\镸'§½'¿~¶ÑÇv–½ýÿ¾ßúi}ëO¬W{î´CF” r«·…! ¨Md!( ¿éïà›×ú®ƒüðû¿ï¿Ií{öúµßþ¿¯÷@Ö‚×õáú@ƒ¿MÑ…^m;ïI:«¾C0Çð}ßúûtÿ°Ö½a­Z¯¥ßÿTi I_þêðƒÓ¿ ·úo«^²6ïƒA6”†XZƒþª!¡G«UÑ ”I=„£Iîëÿß÷]wÕStî•ý_¿ý>š‚(uÒ”ÌÉ×ÿ¾¤34 ^P`”†]vWޏþí~»ëÖ©7Wÿ½7úé=¯¯ˆõ Bê÷µ~ø?иäC½qï¿uÿÿïû­.þý=Ô=®ý_v»û_§¯ý_}È`wì>kÒÿÿ¯ýÿ﮿Wî¿ÐaiÕ+<‚ׯ־úÿõtßõÿÿWU÷ßò ßÓûÖêïîûÿûa‘ãé{°X~ëð¿y©^­Õ÷·÷ß[uÿÿiÿPƒÿä¹DÝC[¿¾½º{ ÄGOÕÚÿþß}þ¿_ªß¬ ß¿ˆ3Á—ê‹ù Šg|†UkIì×­]{éSÖÿ_ý[ÿûúÿ§ù @\}ûtýÄ~)>$aX‘r ŽA¤‡÷ÿÕßþ¯ÿÕÿÕ­uõõûÒýSÿTþŸ¶ä0þ‡W½uûÿý§ýÃ#á?¥úéßúûúßêÿ®ÿÿ·ú†Öëÿï÷­kiïTí¯^#Þ¯Wíÿµÿÿ×ôïíôýë­nÿÿÿþº{í}uùßÒ±õ_ú OëºëÏŸþµßkßò Žÿ¯û­ïZøGßÿ ÂG×ÿ —¯¯Ö¤69pqô«Ü oÿêßûôý]{ÿõ×òtßÿÿ]ÈgYÕ¿U!›¯÷¶CG"ý®ƒ÷zÿÿëü7ý_¯Uû]­?¿¢ Siý'È`ÉÈg²œ­ò9Â) ëZ Àů «ýûþ¿ß¥]ÿßÿÿ}_ô÷·Pƒÿÿ\!ø!ä1[¯§ºéô©ú~ûÖ¥Õþ­×~Ã_ª}¾¯ÿýê×ééN÷§ÿ¦­µþþ¯÷}|ZûWÿNÇÕ?ýÔ†hÿJ½û¯û÷î½ë®­}_úÝþkâþ–î·ÿ¯ú¯¿Pu~÷ º>êýþ›ïöúßõÚW½Ö×ÿÃ ×ø0EzzÛªë_®C;”‹­H0ëïM÷þõßO÷õt¯û[û]ßZn⿼‚Ê"úé_¦¡/ïÁ7 ßÚ÷ïÿþîÛ÷ûïµ½éºþ^¿XìŸùÌnA¹.ÕÂä4÷¯^·Ou÷¾ÿü«}û÷§„­oû !‡~ÃI/µvÿ¨é×r %4C8?ÈgID'§_¯¯õ¦¿í[‡Ü=½ßÓía¥°Âí¿„·á…¸}%÷«éàê k[^·µýµýý·½d ä3N@¸Wa”ÿýú¶²û Oì3 zãØ2széþ·Wîý÷ßwíÕõi{ÿèƒUnä3 <0NÙ •ï~ä¡ßa&[þÈ(BÛö,ø§·ØƒúÝý¿ûî¾´›ÿ_»]«ï¿Þ„=§ÈeŽØ».˨g28—¿t/vÂíýÈeß¿b®º§ë“réNûöÓïÿ¿Û ûi~š[íz¾Õ`gˆ†Ä\‚Îç!|†ÅS ^i+ýŠÛú¯UïãäuûnÝo÷ë $›õ•ý…_µìŒM6iïzƒx‹Þä5O!›®)ßö¶ý÷n›oi~7Ý÷{ýúM…¿Ü%!ˆØ0Jšá‚Û ¡úÒOÚÐmîïz¾äПoúßÚÿÛzéý[Ûÿïµ´¤ðiS~à {qì†`ûïw¯·½ø{¦¶ÿkmv×[WU¸8}Á§ïì†î`Ë V›ý†yÁFÿ Ž ]qÖý$ï½õî÷U·ûU¾ôý_ÌAîP%aášöéÞè7!C#ÅÑÄKn»ˆîýŠÿßû{Ûé÷ý…·ì.ªì‚8*§ ?d2ÇC`çY!—aÁ‘ѵoÃVä §º~ÖþÕW[ßUÿNÖþßtÂÛýÿÚþ°ÖA„¹ #}ßlq!‡ù Ò‹íþÖßÖïöïÓUO÷ÝÚ /~ƒN߆§§|¨@Êä/»äg÷ÁïÃÛ¶ª¿Þ›ð×íP}ðÐwziÃM?ÿMðšÛ÷ o´ÖÖÁS ±‚ þˆ0"öÝïÛ·¤Ößímýoû^¢ÊsŽšiöšÝݯ߄Õ{[îÓAÍ&¶©Á­.÷| Ûï{÷·{[}mwí-h-÷Ëqd" ÊÎE¢á˜MM»ûÕ·ki‚§ ,M0šd2Ò_÷k§{ÿîšÿÚߦ«ßvÞ„DDDC)Ð0˜@Âi¦šwwaœ;†šš ƒ!Š|ú/BEYzÖÒîîžÿ·ÂkmÞšÛ¬0¶ºpûXˆeÁdÊ‚¶ &œ4Ó §¦C/eÁ4ÓA„ÅÁ V„C"·VþíoNûO¿ï´@Ó[þ×»µîûNô""NgÊÁ(H2c™Ês˜ Ð2r 273›c@„ el´îXædÓëÿ¶·÷ý¾…­ëpÂi¯ 'j ¨XjÄDDDDDDDDDì  ˆˆ]ÿÚ Pÿ~i¦ÿaoÐjšj  ÁXd1ëðž«§µN×ïÐaní4 SA„Ðdši„hƒ `À a9B•Õ¦šv·aaúzj¶™‘ *z¦„Ó8óV d+iÎAC•-c[VYQch2•4h0ši§¦š¨B&˜A‚ ƒÇB$*}ê"TfК³<­Ì Ð2 TiÚi…  ÓL‚˜!…ÒhDm\5$„‹2:0ˆÚD¢grËÙ‘Ç& ‘Ä_±<Â顈ˆˆˆˆˆˆˆˆ¾ê?½Jhi_K÷jÔ(µ–J”þ  endstream endobj 30 0 obj 46 endobj 31 0 obj 53463 endobj 25 0 obj << /XObject << /Im9 24 0 R >> /ProcSet [ /PDF ] >> endobj 37 0 obj << /Length 74 /Filter /FlateDecode >> stream xÚ3T0BC]=Cc ed`¡œËUÈe”ÐÉTàAÐ3000µ€#±±©Ö÷Ì54RpÉç „C…t œ;Na!8 endstream endobj 36 0 obj << /Type /Page /Contents 37 0 R /Resources 35 0 R /MediaBox [0 0 474.499 716.248] /Parent 7 0 R >> endobj 34 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/var/tmp/10089666731916source4.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 38 0 R /BBox [0 0 474.5 716.25] /Resources << /XObject << /Im1 39 0 R >>/ProcSet [ /PDF /ImageB ] >> /Filter /FlateDecode /Length 40 0 R >> stream H‰*äå217Ñ35PAsC3=#S039——Kß3×PÁ%Ÿ—+— À¢‹½ endstream endobj 38 0 obj << /ModDate (D:20020211151805+01'00') /CreationDate (D:20020211151748+01'00') /Creator (Acrobat 5.0 Image Conversion Plug-in for Windows) /Producer (Acrobat 5.0 Image Conversion Plug-in for Windows) >> endobj 39 0 obj << /Type /XObject /Subtype /Image /Name /Im1 /Width 3955 /Height 5970 /BitsPerComponent 1 /Decode [ 1 0] /Filter /CCITTFaxDecode /DecodeParms << /K -1 /Columns 3955 /Rows 5970 /BlackIs1 true >> /ColorSpace /DeviceGray /Length 41 0 R >> stream RäŠT€ÍPÇü°…ÿ–™*ùi •iÿõ}òšõÆÕm×ÿÿäßEÇþS”›ZÂÇÿà» vf¨cýþW \~Ë™xàÉËi‚à×¹}Â}°«";ÓÑM]¼{iK1Ml4£¶—o«¯m"æá‡CÛKÝ}-:Ú…PÁDf”DT´Ê•!¥KÒÑAÕGšªK°¼Ì%B]a[¡Âfr€}’až"1ÿ,êJ?–‘£§-Â+]ÖZZ;ƒ a¾ÝN2Í­¦£-Å“ëWÛ{þcO¶–ö+;U\S×éÿ§þŸÿÓöõúÓÿ¼§uÿ]-õú§Âû_†]§Ñ¥WÅV!Öƒ(!¬ú´áìûÇúáwº¢lV­á‚Qö){¯i{ü„v— Ú_þ[fkm.8a¥éÒ¿ *íÿo÷ +î•WJû×wK°™‡KÄE.—6«ë¡H§]B õÞúöšàÊj ãÿÿÿyN¸ôõù!{­ÓÝôÿþŸõô÷éwûëþXWÅ}õÿ¾¿éÿ§ÿ}ï¯ú|¶É¯µëjÿU½ÿ–≮2x@‡ña}µß×ï×þÿëÿÿýÿþZbÇýý{ÿ,Ñ%¬W-Êß׺ùgZñëÿ,•­x™']q´­õZþ”³“ürSýrʪ»KˆõË9jÚã®Y×ǯÿÿ¿•ÄÌŠ¿„A ÚÿÿþZ «Ô}ëö•]ÿo][JôÝ~×í©m‰'zå©4=¥Çoû÷+úÛ=ýëÞÎÔ+~;~®»uú{ °áSv­à˜ï@Èëà…ÓPðü þ=éë‚À !<´…@×Ä;áðE@ðà$kèC®QÃøH2pwP“ƒ(w\q`û¤Øa˜WÁ'.ª ¡Õ*ú!bÙ¬ ü´¦‚¤ì?°Im†Z §Ùþ $4àÞðD†ž› =: -[aë$©7NKÙúp’ Û ÒÁØ1VØaÛÒIvà  ×jT–Ø`ñ‚¿’ Øð‚ªÛ`ùf–p’îACgD6$_pøA%í°oÂI{rœ>$—qað‚AVØaðI%w+!³„ý†WK¨†qP½°`õ‚Z[l5¸ A/²f>‚…[ÎáýU± †ÀSá•vÃî":KÛ 7é ]³¿ Ð$«p`þY³ ‰{`Èla,ãšDü³mK¶,)fr÷ÐÒîÃX.è†Àµ[ƒ °‚ |9[ ½!Q/`Èl``‰È£•³ %Tá†X sà‚I]†2š4 æ_øA%[`ÙM, B$8ç™Nè*]Á†SAH¸d†æ x ’û`Êh 2AáJ·; …4`°Èr!rÌ  ¬+ 2šNåÑš#x,çFˆQ̹Д¨[M B"O—Á_Dƒ èéVàÃ)«â:B'Ã*Ñ1Í#,³ ºJÃCBeTïe¥ÐÄ”²Ð.$©Ù ’²¹ä¡ÉŽT€ñSa²™Íá¹¾GüDHaÌ9NT(Ë0L –ÎÊÃaL¨á$"8MˆˆmªË@—@ˆè*¶e3ª#èGbBYöRÆB‚§ ! O.) Hµ J­†Løå8dŸ BÛL*ƒ9¢. Ž˜DurÌÒì0ËPÂ,¡ìrJ3 ¸dr÷D6nŠœ1,¸ˆà}ˆò8d‚ØaÁJ¶ÁÐØ5&ä5ü¥Ï|7IW°Ùk’à¸öḠ^ <Ý'Øp@©+l0hän)« 8I.¬2 ÚåD ÍÊýƒ$«pÚ p9#p_°à’K¶Cƒ„:pa¸@‚þ,4ATÜÒðØ: U(v †»&UCpAk‹™†£%:°p‚AUØ`ä3+øaÂA-« vBþÁ¸ I.í¥øa•emƒჄ(Ó`Èhk†ýÃp$ªØ0ïðÜ ‚UØ2þý°Ã‚I{a´»ÁÁÑ+U¶ d… K†è$—Áƒ÷  ‚^Øa¢Ÿxn %VØmXo»$—mƒ¦ž Ð*ÞÊã‚:ÃMà ݔTI$Óaˆ4›Â!¿Cp%‹aƒPÃ;îÓmƒ¤’àæÐJžrР6.Ø0Ô6:n 8@Tá‡Má=‡ *¶ †Æ°Õ‡§†IV <0ù e³$°Ï$6ÃH0ôB†°p‚KaƒA¾n˜t+ƒÃÒnÛ„’Ü0Ô7t톲¬ „I+aºaé6á‡@…*°aÐné¼7Amƒ°wöà•&ÁÐÖÄ«mƒ‚IVCƒÃ—¶è$•±aá‡ò]l2<8 A¸a¤uÈ(r±p‚Õ°omx‡ 0à%Ebpa¤ùAÍÅ/@Ãp‚Ix`ÃÛø‰ aRUa¸ IjØ0i0iÜA‘Úl:IVØ0ðÚ®$49àò­†T©áaªZ˜kÁàxe‘Ü‚s"$R¶4ƒ ô‰B.†j!ƒtU¶ÃÛ`¯æ\ Ô6ÈdSK¸0{ 2œî ÐB}Îᘓl8 ‚^Ã6":ˆ’ðl.¶Û„UàÃPÃNŽÅ²èŽŒá ¤á‡$—l0tpÁ!3€< ˜Uaƒ„ /l2‡°ˆhš dqpܲâ -=‹0ÂÈÀ ¶ B %Ü·¨ÃhQ‘^GˆàxhÛ„_m¤ÚB'â:#âØn TT­† !ÇB&‘R8)ÈUÃ,µ‚„—pÈhjÏiâ'YbÊ]àJ›`Ã Ú ¢¹R#™t`3Ä…sT•C‚ *Û-Ô0„DÌ]ÉÈh I( Û`Òm&·ábAÇ%*Ä’ ­ƒa ¡¾îÚ]]ÊÁaj§zÒ^Ûi|0ÄE%qn¾¶öÒzL4«ý%KvA7ÃijÞ¿‚+¶  1ÎÒ’†ÒKoÒKOà Ä+ª¤©†¾úôW5ûmØ„ñ¢¦Òöõ„õìWn’ú¥T¿îá‚ôÚ^ÝêP’zÿ Õ†‚]û¯Û°÷ l-=é(Ð"­k»õ´½¿¥em/•I¼;é´[kþ–½†ï°ÒöõJ…Ð4öõ ¥í¼…‡Ò„ýÃÓ_ý%Âwvß2BÛ*Û×Ò _a·›KÛë_M;¶ú†ÈdGJ–ÿÒè=í»ì0BM×·E¸’KZ¥íØ~˜0B–Û±ú]ÿÛn¡ŠS®ÿZчn즅vëéz·°oÚ÷´º­&ïÃé2rŸ]ûª­~Û!”·ì‡]·KZéµ|7Ò„·þ¾nÃ}Z½úë÷îíê›ÚÎù*ZU«ÛÛ ªO[cþ½~à÷ýpßë]ðÛ°`›¥·]õ¤ºZøþµi·ßªýÝõ¾:dú_û³ ‚õý½RÖ·Ñß2zÝ&¾—ëMí„ÿmBþ—uû¦Ý/§U_Õ¾®ôý[Ö­*­%w´[û²0?ÒöµÞšëU´Ì"莃 ªÛt­í¢á:·¤èDGUT°Èè/·È¨dÀ7úì5]kc§ô›!/W­¥õ[[ÛH6t :PÂÐz­V˜¯~œÐzpÔìÊvCVÜSÒô—mí—Ák 'K ™â¶¾ÖÛzLGTÂkn5Õa…ÿÈjQê/Û4ˆ÷ªá„•»ò‰ýÍÇ[•u¾÷tÁ>‚0Õ`ýz W¿ ĺ¢ÕûkÒXi]õâ~‚(2: Œ2>G29—dƒ7Wýk½ún’ˆƒ ˆAÅûu¤¾“Û|/ ›CKû¤žýþ¯P›MvCþ®“}„÷ªA¿á(¤‘­i{x/éÃþCkªÕövªº«Ax C–=.ƒuõþÙ‘Û…ŠúMÁC‘ô¿_´Ÿ2˜iÙÙ`4¾“rNPsQ%ÓeºÚKªßó+Üì\5)ºIèiþœ}WU»¼ìH+Ò0éÃÓíýWîûgf”z¤Ã|WIê•zï\>v ÉÃ3êãúêé*é=°‰q[;¬4Þ’L?Òû-Kª{·h; _Iô°½e–¥ëªý=Ì3ZºI0ÿuÄR®ûnš³±Á¤4ý Ãë+×Zk¸Ã+`Ò „JÕ&õÊàÀƺ¥á0ƒöAÈ4mc¤¥+§ Ý.»h6ÕJÃ/é0õs'#»‚¯ëZ 'ðdP 7I ßYÙ˜`­ CëUþûA”€búO® ‚“a Ò­¤÷¤È0Ê}$ÃýADgHKªõ:†eôƒv–™( &ÿ­a5z •"z¤ßé$†k”!ª]%ƒAI¹Œ"$%¤“ Ð‚#¡t½|G¤bAäRúA‡Õ…°ik×é@¼‹uI½yìÖ v«¥íôÁ7¤ƒ¤!†y à ³ˆ$M¡W×é2K$ÃÒ醡b1]Woá=Roô˜Ë¢U½$—ÓWÒo^™ !Á ×ýêý$ƒ®™ ½ån’ß%ö©úMëì†Í‘õþÓ·ºIëÕ_uºé{Á>þ“Zä&Õýk;%ÞÌ µ¿I‡ÓuA‘ÃZ¯OˆúºI[úЃuë§}ïÒ ÚZíúUïëéüì°;N·¯ý÷ÒaõGeFߥUMÈ`>¯I&õs±¼Ž Õºõï‚›«ª·Ð„=×_ú_„ƒR¹h5íý$»té7I&ü®. Šß¯ÿi~›ðZéé/w`×Ò †©ƃ4œ"°Ö¿ïd{ÒI¿+«§ýRKýоoR¹pk 4›§ëÛÚº«¢¾¨á[íuõkÒMêW8iÈt'K¥köž©¥~¨0I¿Ò_ÁïH&ú+À4±V¿û{_ üÉ- A§ý/ò´‹ŠåsUT˜z¨"„Šÿý¼CØõ2% Ó‰¦Òí/÷éSiÑ’ eñ &ú¿Ûjߤߙ` ¾î·íîH0Ði ƒP0M¥Úÿ»}&ÓÌ€‘°j;1ÿßAÐÌ]Iü4«Õúì5H+KµöîßAß™ 7û¥¯úÓl„r†B ÔÜÚí7»z â4dpjm.c­ôA‡™pi7÷îÛé0jƒCrï̆+Kí¾©Ái|?m7ô“i­dpÌ#ïù… /­ê¼‚ÿ!d(ïú»é6‘Ú4¶–=7öàûG¥ ‡‚ ÐÜ)ø‘í´’lFßI•Cýa¿ûêã±PÍms$má´¯mênŽÆÁ¨É9œMÖ5°ú~ô“jv`ƒ*ÄoÇm.Û~‚`ó°€ÒJ{NüÈg†Òÿ¨Iµ;Ô4ˆúk½bíûíéCÒ*ÖÚÞß­öýi‡ú#ƒWUý°ÒTÞïH&Ôî©]¦ûdu÷ný&èìÔ÷„õá‹_û¤“ JØi[¤ßí¥í·õ <’Xíí¥íÿ÷H ›H©a¶•û†Vûô›ÉVG¯§®Ø~¿Ò ØP„ßkí¥»mßH0ÔŠ^ÚMõƒÕÆF«z~û_·}$åX5;uie-[ %Û¤ÙN~­øì?ûn’MÁ¯o;&›­Û­á&Aܧ*.†oh!m|6µMÛÕZ D/Ûßn­½ïH(&A³f–Ò×ÛZûIAªYn›¯aÿoé%ao¹]KòÐ a´½öê©2%¦ö\Z x¶Ý~ßI÷A^ÃUh®y¾ê‘]`1í¶+áºÓAöü$i·ý†¾ž÷¥VÚ»_oûoú@°bÈ<…]{iV½ô’ ïîIîÞ’ Áïݶ«Ówô‚Á» *ØtùÙ¢_zJ {AµÛûè °ßý몶ú¤ ˆ6.PËivÈhÞ¤½ºI†;·I [ýA¬Ôßm†öÒïÒ@°iúÖÚKM÷TŠâÀÊ=Û¯oëwꜷûkI7A?oöë¯é$×ÒðÚôîõH! yì[·û¿»Ò@ŸßíëVïZOÝ-¶[OÞ‚Aöÿ ¥ŽÛú@ðË€ý¿v÷¿ªEsT@Ûí¥áµÝ»ÒB A›jû{íÒEº2&¯øA@÷pßÿ°ü·€\¨îÝ$ŠàÀñá<7ØÎÚ^KTûë¤ÙN Þß÷–àhÙ/nïÂAYµA‡íöÛ PûÏßé AV ƒ>Ñô¼6¾dk»Wmô•†õoH²¬0ëÓjŸº¨"Y­Þ¿º¯zÛô  Saøáµ :oW¿ ‚\×W¸t׺OwI A%L›Aµºßé ¼7 Ým†U·ÛWTŠó€‚Éhé¿íÖ»i8¾¨"åøaý­ì4¿zÊ㯄J>m×úºmÕ %†ƒ)Ê‚—º^k^Ý[~’@á"p`ñv×ݺÿÐ@’ÊÐì:öë]´­Û¤‚¡`Áúû~õÓßÒ¸Úþ¶×]´¯ê ’Áºn­Ã½}ÞôDŹÞÆßí¥ûußTŒ’€á,0ݵí‡Ýv“뤂 HSß÷_vêÜ-R ; öì5­m{+ÀhÒ¤» ²l©^Á‡_º ÜÈÌ2ºÈ” `Á·^ÃK­½ìÉdj@·¯·û¶ÜÉT4ô‚ƒ*’ ÃlìÉVì4¿co2 ʨA%ƒØ­lÈ\tÙÙ€'oðþ-yV‚ ,0Û_Û°½#"ÐSI ÁÝ{û»™(~I,0mþúèȸé$ˆ2¥,7KmýñÒ@’X0ï½ïì®>d@ÑÀõH" ¦iÃßí{öeÀp>’%΀úÃ_·¥ÅÀÜ¿Hg † †—¾¿¬ÐßI! `Á¿Û×öv¤ =$*.°Ãoé¤ý·;›ê$‡;[{­Þª·;*Ž© ,6Úøí³±0Zô‚ ,2æÂ?mwùØ,=R%¡àÁ¶—¿FV·ÎÂǤ‚æX—¾þƒîÎꚤ2V è+d Í´~ïéÛçh«ô^ ¶¿¶½6ÙØè‘Ágá ‚K2 :»ÿ&@xouI –È›M¯ßëØ" Û¯èÈ@2¥ƒ º÷ªÞܪƒ7I %ƒ ýïýò®¡ @’Á86‡Õÿý’?®D¶Ma‡i{§×¹Ã|È•h A,0ß¿ûÛ²`Z\Uƒ ¿îˆÔ¿nBöž’2@2+ƒ pÝ-¯¾¾¾jDp>uªAVØØX0o[öšûØ! ͵Šô‚ pÝýÞ¾¶¦h"†ûKmé#.d°`ÛKß .x‰‘Á}$’Aa'n¨ûÛMA<'‚ yÊúA¬0ÛýS>‹†Àž›fD€xߪ@YX¿î„aü/Ò„a‡kOaSÃVdú K`È7-½ó% Ì…Àñ>©a·¯ºWÈH úHìÉCkaK2[K^úN³"`x_ªHBJ†Ý{gb‰—A §*æ¡2†¬È`ô@’ÃÚïXˆˆˆŠ@ع– x_ªílÊö†Bé¾Öƞ̼ ]P%a±nªÝù”àâßH$‚K ?Ûºm³³$ád—ú@‚K 6뮟;XÁªGj€¬–7\ÉM÷·‚úIK+ê mø'é;‚à¿é AV;K_îÎÅÀð\õÒ #¾[Þþÿáœ~© |® »ïƒ˜Ùfv­ÀðÐíé$’ ¯M½E—ˆÃE©} D6ä8Xa·÷÷9°;@ <-* Ì…"²…pÓÖÿÄŠ9r—"ìVá±rŽŸH ’[ŵ½Ûâ$µèðDõP‚$µ }?ñ!*Ï% m” < ëZÁm‘ך‚—Möö„HAÉÙRvÁºê·…I#±@TKÃÚ¯ï""F9äMä. Ø]$^vøÿûAñÒ>ƒrW‚ƒ·5ãÒD5ä9A¯;˜)7ÿÝ )r.†Â<‘`<2ïª@¤A£ªö¥ûoB'€ðh#Žò xe7ëEUÔ$vtHèŽ  Wêw …ÑAl¨Á£ÁÕ $"çu›kîÛ #°&GÃT˜IÊp<ûAÒ $¡Ö½ÿµt` "Á¥¤‚ &ëpÃo÷wÕ&Û¡?Á›õé$“}fN –µÞߥz‰à7öê’š†ºWé² k¤ëöûîÚAV6-vª„@’vµ2ðR‡_»o¤Û|†¹²§†½ @’ll a·T²?nºxi"c‚~Ò¤A$Þ0ÃoìÜÛcÓ°ÂR Æm'^@’zA°}i„Ó·½m{ »ê©GI^j”iöõ¦Å"ÍûT•$‚B“é™îþúƒj¼2Ü*éCQs[zaR_@ëÿ« ÆÖ[9'ÐIüˆ† ¿·'onó²Id2¶¤cè*¡«O Á»I,C¾í© [- Ö´‚ W¶UèþýÝNÁd3QÐ0Jè†6a$‚!¤¿÷¦ÙC†«ïó²Ë°„ˆ9r$]ôˆPj%ZN!‡jEû|P²éé A%ÝX`Û¬‹Ýõ««ú@’Iu™$kI?o~´Ñe9Q³ =}R†ªá¨Z¶wõ†ëˆä6[HD^A¸ääký‘*—ì0o_W[t§gEÂ26‘R Ä,—IuT‚!¨:AAѬõ†d4 Í­.ÚßEq‹;ä¶M8aNÍCØ" ö°©*B’iìT« ¿«n» vjˆàÜPa!y Ýépɸ]$ B¤ž )h×ÛÛÒÂG ïL×ub2º’Ò"«KúÃA–D¬ê«]´·ÈǤ¡4BC`šâ’AIP^eàºdaª³cú·]„ÂA­w—Ò$’I,ÊEĈ9¶Tk­Úïõ AJðþ’D 5RH%á:BAoëoôòs¾’°/¥ô‚I/;2 ¹ Iêµ´½-H¶G Á A„d ½uH$¡W¬’lŒõ_ëz\ƒŠ׎§Q[ÒH$’UÎÔ±'D3áÕß«M%ÚÞU†À•ô  Ø/Â@‚I$¼&‰- ´º&8Kè/AÁqRDÚ½R@”%^vX gÄH™#hØh² ÈèC”á¾–")v—¤‚ìÔÕ"\5H&¹Ø¸4‘Ó (‰ v„D28)7º¤MŠÍ·UÐI+h†Ãlâ‚’JGAx! ‚„]g“uù\“AúUÈ¿ ƒÈ6 ‚A ¢=0L`ò†‰ ת {UÙ ´,„N¿t‚ $òp4ü¨(u!© ½*U÷^™-蔊ˆÚý•ùt,!(ˆë µÕ%ûR<T-Y] * lïB`ˆèZpa·_Ww¡!Gð¨ïÁ‹%ÀA $©Ð9„FJ@ÐtFþ¤"áZwCá$-&kˆñˆÚzA’K„ĬæFHº. 2“0'þA×-·ëµMa‰ _4‰Á­%«Q! Êpa†Gd}µ¥AÕv‘‘B#‰ŠCÄšãôP^R’B,D„Ø«¥÷÷S!@_ÞúH%Kp@ö ¯¿ß‚I)‘„ä¸(o@ˆ4®°ª´Ú Ùîµý§Ì’Ò‘üI>˜`W; oJªßè/Ew »"dLèD$–¼I´ÁQÑ•*V­}ßV‘\<¸{ƒ{>ÒPzT‡pÃ)ÑA°þ‡û©Ç9:B-Ä–Â`èÂéa ²6L `ÄÑÔWþ—v•9Vva r Yî$ e pÊ6b:OövR]—fD @š-Ð ”á™ÞJ¤ . È*-U´¿üDL±Ã„ú-êÃÈi `ò ÍÝ.S†ÀÁ¾G²0>’_m–ã†Í$ÔH†u¸h‡„’y 2†'õÚ ^ +¼›$ÿ+­äp/…¼›8–¸t +Â@Ø‹O HR¨×èzºBARH‚U ¹þí Z ´‰±A‘ÁDƒ;Ÿj¡á%N2‡ozß D»„™ôâqDpHîg>Äž ò “!µ³;©BÚýÊâŽA6 a=“¨‰rrdh<¥rn$Û"M D¡QkÈËÊàaY-ŒA&ƒ¤,D…‚H<U°ƒ!·µ¶RdpQ¡Âðƒ|®L¾MÔ@0a é ºnă#âdQæ±uó³3;4ºDÜJ.a„©fAITÙ,F¢C3§Öàˆ>ña*ñb^e¨6–óÖÖ@ðqÏ @Þºì&T·I\sü$´`ÛÃÇ*DÁ¯×„ 1²Ú_°„Œ €ÓÃZì;Ã$8Ĉ×[k!³ap‚Þ¨”†@7È57åZe¸`ØÝ öGÃ4¸Cê Úù;»[ ½r¤‹‡#àσªí†ê!ˆƒŸe€úÆíNl[ø‰À<°i%¸0mÔHX+`lŽº$€Çé b Bôœì yEÖUl‚‰Ã µ‰rÜþVøCÄ&­½6Bý‹"8y,ANëÈû°AÃÔ‡¨˜â"D­J-¿ÐM”ᣅõ‰ñHàx| d3Tv@|pa·Ð²°§põû§( ­ªuÄðZê“ݰ`ß¡ d—‚µïM…Æô¬ÈìŽ û5†QtH￸0Øj¥,2Ñ´?³ŸjðK^â-a—T¡ûMø3àˆ‡²PÓwíÙ!¾Õl†œƒ2<¤ ´’;5 ÔöÃm¤âS†@)&qâ/Gêò "ëÂ’”ž ÕÄ".‹† ÎGª¼2 »{Gi„|2ª,‹±¤Ô[~ÁtÒ\†l† 7"”C ¯pÛ{ˆš‘°È Ú ?ñÜ}Ê@Ÿ’€Ê¥h/ dv“N&°ÈØ-ýõä•­7 ù, ´•¬· fë2 2{»×¿ ž«!¢@Jù ´‚¢ û†A·`ÚæB2ñ€<5¶êÞýzà¯ä” Ò§þ }šÀðÒ¾Þ¿õÕäB»áˆp‘ ÎC [Ãn“FJˆŽŽƒÞAô÷®“×"È«òfÒ‚ °_`ÁÞ¢ öé²,6ësº×XJ×`¯áÊ*HÔ2 㕸øm¾ÊúêDw§»¥¨D%OÒ¥Ç~wàa*lÔ ¹n–î¹\í¾¡‡tíÌmp’ußs²¸IlÐÞƒ ¾ˆR mß¶é^vjˆà¡ÒT÷ü0uA†GëN ;¬&fâIºanÚOÇk ©/U²’WJ?a0nºl{ ã…¶Á¥‹'A0ÒÒÿÞv#.Ò¦²'—±â Ud5[”ÃxÄ'I†f et‰_}‰àP—VIƒQdØ\5›û…·» éä09À…icW¯; á.A¾ÅÒð`Ý*X[n¬7»"¥XXAiÎÅAB\+°ðÝ鬆cu+ußäl+$X´¯ÿ†@ÆÌ×!öÛà Øhê¹ã…wݽå .5ÂÒçehŽ)d{$L‚a‡v 7^‘ Ömþûd@7´¿ý àP’Ó´-Ð2 «o×ïßoƒ k¯ö †^ËP/¸okò ·2öÕ_e–Î9צÿ£µ 0‘ Váì0mÖ”-­‚dÇ(›x„#L-/îvd‰×ÛÁ†ßðM5ˆÁc÷³½…#u™ˆàܺU¯|0ô«‚ éº ªÜ[¥ôô/€`ìÔ: {ß ¿Paèƒkr¾¯Ím=s$s VKÛÁƒn¼tìÈÔøO×,ªÄ­W|0n­U^ fê½.¶×Øg‚ 1X¢ FHr­„¯èw¦ÙÚ®`5½×X± #P8ˆaëÞ 6õTJÞ‚þïE-˧…FDÃ1"gb‚þ 6ët›lì¬Ò Òÿ¡ØYf•i"pPÂO«aºÖ“yذa=?Ö)™ PÈ_(t  ÞƒoTÒo;Œ(Oü%pd!tA¸é¤AƒwÖ—gik š¿§ÁiÐ Ô! Šþ †¨«UÖÜì¸6“ƒHuñ;uàÁÓÂi¿²n4›­BùÞµá$ÒùÞ€å׆w!›Á<‰%°Ÿø;ûMìïÃmô®¾„5ÄCŠØTÞ¸d5À©UVáפ•KA~üYdžÅ+úÈè6½SX"¢o i†Gxœ ǧµÁ‹½Y¶²d¾‚ûç(QàþßX`ïÄE²©˜ WÐA…^6¬‰Y^Ãgÿ`Á½VAA·Ò2¦G%o‘¡šðÎäÂ0ž÷ÂXm½h•ƒk–åjÂB5ì&b-§ƒÿ® †²z[‘pm±Šý¦¶¶êí$Ãß´F‘:¯~šà¿Ù´ ɺj¶GZL „†¦ÿKþ¾ŒŒÃ/ê"‚`Á¸ø•ÚÚ ½‡vs% jAÝÂl4¨³SƒmÒûêE»Ø'!…Çõƒt¥špÚê¯";n·ó PÛÑ$ºÒ† ü³x^—Ó Æ›uÐ}HL ɺØkZåšj ¸JŸ»}ù¸6ˆ4IU¥°°pEú,à Tá/Ãmá‡æC@؃Ðb-T³¤ŽÕ‚­¥ßnÕ¿CZº!†d‹CK;+D|:á3±€¨á$¾Ýíù0l´ƒñÅPLï@Úº_Ød—~dœ5ØaC ¶Öƒ¨Há*ûo·¹a­C2B„¬ÔíÁ[Uû}ÛæT b:Œ— ¸0–’“0T°´ý¶»ÔÊÁ°h É-– VCh8_­¿~dj”FÑ 5‡Ôª ê¿¾ªÜíd5èC ðkRW‘ÁY²Üi-}ÛðD5–BC6Uè6R. ø„¿^ Ê€µ; DpÔA@.ÖÂdluK´ÕˆÓgeA¬ˆHL¡Á—O‡P™‹ƒ%„Aã\Iuùبk 2:.„Ì ‡²¸4 ÂR  µn7©Ù€ÛHDA1.ù7ðh ™:. ØAit÷CXr¶C.Cñ èD†»•$¦—ôüì@6 Gc`\ÞÁ!ÒÒ¼›¿;¨5HúL¨[XXuDæX4‘AI¾ŽÈ aHC!˜ål.¡½)¸K®‚oÁÕØ; ÎÞÆÛÔ2Í%ú ·I0ý6à`xsÝë`è·-öÛ ‚oûH¢àx¤}ˆv°`Á¼{Ð$ƒm´Óa!$àÂ7Ô0`ÈmöÛTxƒ8£R«‘Àðb½l0ÃðÃtI¼Xa!(Á ¤ƒ}I¸¨jm¶+Ø£²ðÁt“ºÃ!¬Ò$íöŽÒeÀðôýA† ?n’ohLÀðÙzRn E¤² µí›Ú;RÂ=ðÈj4–îð‚mØGf€ÌÞ”0ÁêîA¼FZ/öPá–’Ð6uºMᣠ™°Òd:Þ¢l:,£ÖmÃBNˆ‚€ºÁƒ%ë¦í£ PÏ!¤-á†ÞdZ‡ 7á•ÙRmepÒ =+@›ÜA¹ÌæAƒ-%l¡´›ÜËÓÄF°`Á‡áÁÞ:Ô0l†Ñé¤ïX0a†²cµowD"5 i†Õ M ¯»H—ÒÁ†Òl$÷¢ºÃ 4®0ßm!!‚¥K @Ò“a+û V­(d5J´°“{°ÂGp ø0Á¥nƒo¶] ƒ¥ 0ál ƒiñòÈ&@ÒØJØkX0dØk¤ß°Ÿ²­%Nè&ýú–B°Ò¸I»¶µ–@PÒ à ܽں†hE ÛàÁiCÐH?Ë!(5: ¿~YÃ4$“}ëbi YiA ÁßÔaPh|2m$‰BO¾” F‘zi0ïu–_ "ÒÔt˜ða–•Q4¿¥ ʤ &aïòËX5‰gÐPa'íêÃB‘ –›¿Xa–j)Daýð`Ës4ƒ+HH&ÿì–BRI¿Ò† Wi&Ýô¥”lÁ‚oõ²ŒÑ€¶û°”eš2$ýÂÁÔfðI6þ a„A]¤ª›ü›†\²‚‘bØ2¥„¡ˆaUi%C}Ù6U 8a–`X+«{¹6Ée% 2Ì(@ˆ*´Ça‡êMŠÃn 0B¶ß“aPW–S kDZ}oòl5„ $˜o·B¡†Y‰ÁYdÙ@à V÷ɲp'†PäÙœAU§Swì› beœÐ°ß¹6ðY°`l5òlàY-†A%oynd RÐ TiÃR¼' VÈœ0`ˆm´ÆÈkÉiØùnI@‘@0Ë8˜* ƒ wH)2@ £òÜ å hAˆ4¯Û°D ˜0De ƒùn*rÐ* A7叨ÁjgÂM5" ×|·H72Ðf ˆ†uÕ÷-Óá¸Ø`ˆm´ÉB{ ÌÈ´2Ф ¨ƒ®%ì·83Áƒ ~[ÀKB¨5„ E\©ù\ÐPÃL† å.©Êé@hH ŒCrË•ÉþZ   BÄ‚.7²¸XàÈ4´T2ëŒy\´PÁ‚È+”½9\UÀóƒƒkaN \~WÊʃ[)A‰'*KW+¤Çl²¬ÜA‘Óåp`xa‚ ÚØV$,‹•õÂAje,!®Ø x+ÁRàˆLª`Ã,¢¨C¦$IåŃ !mb‘Êð„† L†@’Ë™á!ƒ,¢iÈ6•Ì–€ðÁ¢í…2\s9[æJ xIgA1b¼È(  L†@+lÃÁdpÉÉXƒƒ†ªdXÉ (‘p<3%˜X 2‡$9 ÌÚ¬‰àÑ  DÕÉ ±ÊÙdá™,Å0Í&É0‚)­$50AAƒ$“CGãÉã“Þ¬§Á¦ "’)1CŽ$;Ÿw:àÕ  B&’‰žÈàx4AƒA<2A²"@ð.áAƒ-Ò"5‘ô±R#†H*B B'³ˆŽ!®G$@ð7f  ·R A@É ¢8 0`Á,˜l–j4 E7ñ°3+ · 13Èà¶`Ëua¨[AheyÇ ¶ ŒÂRÍ€Š!3EÁl!hnhAl;0гU†`" ‚#¢ÌH-C ÐÞˆ”DpÉ ¸a•Ì´„â0 ÓA¥rA `%É Ú†W B&' D DpÈx0ÊâHˆŽ§  ³BÃ,"r8d² ÔCLè@ðXf•–i fΤ«ÁR…à¡ÈiÑ`Pl!!š8"T€ðb‰-¡ 5l)iFD¦@IQC.E ˆ  xa‚!¦@Š Ù Ò7X)49C’i i$#@ÒJZIÃ,ËPÒá²>eá¤0b PÃA¬Í„Á†v`Â!¤æÅ%¤,‡b§`ÁA§eƒgu¥kÙƒ íÃZ†“‚ƒ ÖHPá ´–¤!-# h%a©A¨P†›è 0Ô† P`Ía© ƒR† ÀjÁ‰°7d€|Ü\´ËÅ… ‚ ›…™€×†  °7YósBÓ,|€ûB…ö ?QþZš(ÿ,ĵÿÿÿäÝ)GþM–”ÊdiGÿå¨6£þM±xɶ(ü€û4ñ)+: 4'ý;¯rÈT•n5ÿn@} Ë#¢è‹„Wå˜Zˆ3 ƒÒW‰e”DpB$(#Oî@}<ÁÈ4š×È›ŒDha†ˆj+×¹ó`!IXˆpÓO÷–£¢+6 Mßpý~$ ïTáßü€üªÉ+#b ÉX4/Þ·]Èì Àä @Ðh»wþÔ€úËEið×¾§­Ü€û„#ÅÒ"`ˆf 5PŸÿÿÂ#¦ƒU†ƒþïëº =;»NúO¿üá4ý?iõý÷ÚzÝú ÝÍ[`s¿Òúk ßÂ~È`Áá vÿ{|'i÷ü Ý:þûô××ÒÃïzæÂÿîûD9Vþ¿Ö¸Â¼¶Ê•úzÈ1”A¿ðßÝ÷Çôþ›„ÿõÖ¿»ê¡7ïOé¥Ã¿èƒz{Ý ÷ÿ¯È.9Ç~z×W÷ú]÷èAþnöúöíQÝ÷ýþƒ¯ûwßë»Õ·¯Ò{]$Ÿ\Îøª¿·ôßv{=À¼H¡¿ïïÿ¤ÝñÓq×Óëþ´éõÿ¾õ¿Ðï–¨'ÿZwÓëõOO僚UwïKwÂß–õ¿°©zý×ý=D®sAª±ï·ÿKz×ÎÈIøJ¿[ýþïºõNþ»Ó^¾¾ûïéÜëzõ­ Â}Wĵ†××Úw{Ý_Qþüì4Zk&GD¬$¦GDPEo÷w¢{×ëõ­”ÍNVÔœ† ˆ0Hƒd ‚‹O¶¿Ø§½y +wwkÙLÐÈ8±˜4!‚¦«÷õ÷òhSà¿ëëåœ #a ’aŸh8}Ó•ÅUzívÚÂ…uk÷ü²"$d¬!RD(B…¢A¸ÖiëcUû¼‚ôõ_­ûÚý4áš Ÿw½uÿôþ«ïíjÊ7 \  wØAëÃïÞ»öºvþ½moµâƒ‡„k >û¿[©z¯{éoêÝý…ç`Ò°Ÿvžú_êAq—ªÿ¾¾ÒÀï†Gùî¿ tÓ[NÖ»úoÞýïí[¿4K†î$:ÓB’þ¨?°Ÿ÷ißõétþéWâ'[þ°ïîûú¾õúïëøk÷f`_n@ÊÖhwµÐDêþÕl'õ×k¾ý…¿Š{Aˆ=õÅ+ôïíù 䟿»i-j¬0—È4‡Þ›ïçcWé릯!€" ŽV:< wúTíÚL0»Ü-‡OoK•ú}Ú~• 8h§OK·Û^»Yüµ¶¶ÒþA/§!±z}ÿ¿á…ߊû¯Û«ª‹÷zÈbt7þµíÙwðÁ/ö¿¬6–î×ïD69Sôþ›ÞÞ½¿drêÚkïÛIëd;ªÈcûŸO ÿßÿ"Gíûë×P¿}È6KIé$›×Òoõõ&èÛ#Ú†ý¥~˜_ÂwiÚÄ3‰+·mÂøOýÞ«èDC¿÷éö·êž˜L†ˆN?ý÷w¥wîëß‚o·íSí½¦ šhDoïôÞºï¯î¿¯·ÝL'®†‡Kúú}¥O­íÚ¢ Žýz» Âë¦Ó  ©ÿÒoNC@ô®ÈèÚ !ŸÏW°´þ·mÖÖï@í4È(;qý~·½xˆ¸ƒø¤¯TýýëÚ B"Ú_Ö¯ë~þ·ÿÛöÓÈ4: e)~°d<-?ÿûõ~–íîT¦@ !m+k¯kÕ÷Ý+úÿᦃ¤`Í´n-øJûî÷¯¿úv¡ „""õŠ÷½ûªú_vš ´þ½5ÿþ•¿" ~ÓRÇIXŒ*ýU÷ëýÂögàˆˆ0Z¿x¢ûþº¥þŸ÷Ú½ûÿZNúÿŠ{þÕ…í þ¾¶®õë] ÿÿíß F™ êõÿùn a¿ ½œÁÁ~¿^:Ê~µ] À_Jžµ»ýÖÔƒ ÷ýÓÃÿî×{ÿOé5íëõ¥wúú­×ßÛ¯õµÿë]Öýzÿ¥Ýÿï{^»ÛKïVCýÛ [}º§¾­Ò ÝÙ0¸kÿµ¿Óoþ×µQ-m¯¿µZa„¾ìÍJÝÅñÿÝ*ûì%÷N܃Pûÿ!‡~ÃKjìþƒ¾C4rƒ®ˆ.ç«ß]¿† úPÈù SÅÕ0èCvîºoØ30QµÓWßoOÿvýŠßwý§n¯ßïî«Ó_uM«ûUáýS·µ«ÖûößÃû[]0·ëëÝ¥÷íVôÕ|-½ýþþÖþÂë‚v©ÚvC=ªíû ®ƒO½SÓMd˜p`¿~ÖíPkj!š64ÂdÆrrJ¬F»øk­‚a4ÐvA@º)1×·Mši¦C0‰"O6Œ">RB/éýËA„Ó Ü”ƒŽDDDo¸i¦ˆh §"!”匥ڊa„""ü0™PDn¢"ëë÷«½¦¡ÊbŠ?ÿÿÿùe*Qü´„"Â’‰L’!ŒÈ)Gü´*Ç夣ÿÿòæÅJ?òºZŽ@}—²šE£)µ¥ÿ >ÐP£ÿÿÿÿȳ/ñÿÿ)¥µÿÿÿÿÿÿ-bÕ¢1w_ïÿÿÿïÿÿòœ¸OתÕÚì"Ô:â?ÿO’ײ9"hw¿h‚?r3ü*ÛK±«"þõÛ]Òì8]×°×·]´ªÚû¯kÚKý¦[„”Dj•*Z®ŠuTêôÒëz´0Ôü¦õQÿ–—¨ä•U§÷éÿOú{¯§ëéýÖXqºËlÍqO~¾Ÿ®ë÷_]úïîÍŠ!#Õ„7½ý¯ÿ÷ÿþ@AuÇÿõ÷ÿþþW%\Wÿïÿÿÿÿòëÿå”Rè?ߨÿýÿþ—öÿÿÿ½ÿÿÿÿÿïûý¿ÿÿÿÿÿÿÿÿÿÿÿÿzÿÿj®Sb¡²I§}'ðŸÉö\W×Jét½t³¼.:X!!œ(ð‘Ùš„²–ô°ˆ…T²H†a©XBAp•!‘€Òl €`=aj‚;‘¹I°¤².ˆ‘Se+@ˆ*È ðtÚBÜ %¢ Ö 8ƒ7P¥ Ë0È ËÔ°D2·©Cƒ‰9L%‚D¡Àð,Öû[ x,9ì¦ ³P2ÌÄGÀž¸A²¬ÐaÈ vv RÂDOàÏJàŒ–‘„\3 –ÀðS#ÒÙšH•Âæ r H.šÔVÈý2pB¬àpæL™m¤¢øB‘\ã2¤)0ö CC›„Ha2+MâšÑ€<ÈùÎ¥P>‚@†jdd°D]Á–o!P ¥Õ Áè#°™#àÈmh7„C,$0B@Áè#µ\Ž‚™uPÃ;ð@„Ï.‚Å é‘Âa$àxR ߃Þ‰2H‚µC lLŠ@ŒŠðפÃ&`Ý †d†•"+0Átƒ*ÁÒPlXA ¬4¡°AaVpé+ X „g¡È=‡U ’€Ì#«AžDc.Õ#AXdhÆEºP2ÃašÞ‚-ÉAL7C3j"ÝPØt ·"ÝHƒr›K ¶ÔE¹`2°áÞ‚-Ê\0å6J¼$[‰fT7 ‡‚·FàˆemM¸ ‹t˜D68 QnHkl ÁÊÚÛp‘n 6›”ذ4^E¹pÛ 8"’ÒE¹ÈÜ ¹sÂ"PVÖ\Wa[Ø2 ‚o D¥îS`Ã,>A¶U¸"‡ ½+¬¢à¬Ã„$È›Î̘A i ‚ bCOHJêA¶Ü ¯R¸*0MÊna–Þ"¹h+à>"¹@+0pD2¤ÔíP®, Ëa˜Û„Šâ@¨Ü ¹*¾®`6ËíËhm!•%§‚W& ¢òÙ3Òle¾+ŒO`‚o D6Ç)q7 ¼ ŠúÙò,§dÙÃ*ð‚+Ï. ¢È Én” O„!!©'h·X¦í"¹¨+' ÐA7„ÈÐWº ¼ Œ’ƒ\Ž`·p‚d%pHÈ”¹n× @ˆj¹V^!8xHÈÃlD®´ Ü" «êè FE¡¶“k†ìFE Ú Ñ ÙÊ^z¸m幘4C-]d4 ¥¾ Øp?-ÖÁ « Ï##¶ˆjÓÁA¢KÒ2@D5è·S¢XN¡2N áü Še> DÓùnZ $Ë.ß D[…ð¢ò)zÊ`¬[‰§°D¶ACo!] F^e¸¨jrÙ:Ëq k0Ñx Œ¬6Ë qÁjØ‘ 0ÛS³0V@¾ dÉEJP!ÚØ* ù/„C7jD4H» @ŽÖAT ½‚`)Èh–½†»º‘ 0M 2ä~ µ"¬„ Á…+¬ƒI—åÃ;v v ¤t[­—µOwtŽÊA°B鲸X4óxA‰‚©ne‚ ÂAˆeÿŽÒdpUH4l årÀÍ2 Ò ch Ðp‚2U ¦GahŽ ½’Ø|;BM­A¨p¾ ˆf®9 ­‹»@Žê  …ÁW8(c œ6‚ ×´y]PŠéÀÁ°‘Ý†Ø ¾ƒJäÄ6 @ˆm+ Ó´ý\H2ì$vjÖ60¯a ±Ü0@×r¹@4ˆd2÷0ÁV´Ž‰°i|…ÖÈfìv*¡´ ˆ5ì ðH®i‘Ã*ÁBÁ´› AW†kre,H)Á‚”¢àØ‚êW& E¸€Ë‚b‹Ð@»AÈ4Ð"ÆÊ¤öW&áK•˃Yn4 0ˆ%Œ¶ ÖƒSr’ #I¢¬+„A¡º‘°i¢0I²ZÊègƒKŸDÂ:‚©6[ N ˆ4ˆ=¢@*\£!@i&Þ‹†¢Y#†ØD4¶·2 tÂAˆ‚,j ea« ¤np\¶ Õ…2 „V7@&ã‚„(› ƒDƒi¾€º §ƒI°^A¨Üa¹#D3Ù7„¥F «ËPk0^AA¸@¯!á&öC9º€¸aÇDdpi¸":CJEñ2àj&ó,›Œ : Dߺ+”ÁXf‘ònø' \¦Á¨I±˜iA¤ÜpU-‘tˆf½Ô6J|ÉiDÙ-DB¹ Ãe"‡ á £e²‡`‚' ¤!q2T²lHäp\ÔDØL4¹l‹ ˆ4 À¸ ¾T£µj&ÁLŽ ÀÁà‚úª†!4EA68jþÂM‹@ù„ —Hìì´4‰±HA„TÃ(·Z NZ¢Hh DØ CÁœ@Èf7TÇ;@eÁPº¨@ʆ[rÕí Ó`3¸Ö.AÀО ²ÜP5;‚›$PK;>G‚ø" fÉ ‚ª@±8ËzÃ[ÙÚ€i&ÆlÆ"‘geÃ,Ž‚]wH›QHw;0ÈèCìî°Òƒijìl2Êä©ú Òl0†»” ;  B ÙÚ¨›h ‚, ÅÊî&È ´³°PÍCYu~ƒIµ*-Gj€Ð/gc†‘6pT,íd3WÁj6r »5 ÎÌÃ,'¶ƒI³mÞÌœÕ\[pAæA´GHeᘠw*xD6`¥ÀˆmïU™ ÁêHe7Z!·´áQ‘pÍ2O„nHä| œ2 r&Cip_%@Ôd`K¤C]u5Ȫ"ÝP4ÂL„¨ÉÛì![‚†±Ø¨9\,_ A¦[–º®´gfAµ|" mÊŠ†¾Ê †j Ù`U°âÁ¬"ß,$%¹E¸¨k E¾€Ôðˆ57 Ûµ€‹p`Òp@‹p( }­"Ý 5’±òpk-̸A!¨9À˜ O´A¡º²R5E¹@j"Äú!–Ü™ y@E¸(i`‚ýâ5ˆé-ÉA­2€Tü"Ý:Hf¹R "Ý,5Aj²mÁüoXjH›ƒ'äoQ i'v7ÊChŽžè· j„ Ÿä#yÈiI VWR ÐÁ}„[ÞHey„¡‚k–Ö‚âWK@„†Xà…,®¶ ²íŰžP’h X4Á\¶¿ ¡Õ‘H,;!šáT!Ø" 6TŠÂ¶±å´87L®H¢}.ÝK-”¤ ¥pPÖ0‚ –ã²¹H6ˆAtÁrÙX›+†Ø@°°¹lªžW&H,,- ÕÊàÃX µ‚ée}C\Y\”®, UÈ ÂuÂ!¥R+Ú#†¡AepPÊ®fFm ˆA„ÿ!˜d°ÂZ©[ú Œ•A°%‚i@oÐY(k•ÅCYIPføY‘Xi—Ár¸Ømá>‚s!@Õ‚Âa ˆaÊwüÈÀkÐA`šH†ýæBXBX „tˆi®H )D ôÜÈ€×Pƒû̸Y^ R.¡'÷FF¡¨N&A…ï;Yˆá¬ Es‚™ 4Pøx!H:^ó°°ÖAadU’ðó² lDm¥äÃÎÅC]Pà…~ÎÌ©nL:‰M_o;¡‚¹k^Ó Nê pH› ‚Ÿ^ÛÎÎ -~È(Æw®_@‚ È«þÃ2²ˆá´!—¨°BCM¸( Kþd5‚XÚß ‘TG pH›‚¸õöÐÒn´‚ÿ •aª KëÈr±Ch DØÀ2ýöCFž  HÈÓ‚¾Ãõ°á‰ Si„˜@µ¾Ó ¨m¢Ì«Z´Èj9FÕTÿ H5  ­µôÈ£`‰Á/ûÈl6H³.Oý2l6C®D ½ûÈCa%™‚¿¯ØH/ýaÎÖÁ“¿ÞÂïü," »Rÿô³µ$/ÿA#¬ ¢ ¿ú„çe€É¿Û°‚ÎÊD¶g¿v˜Aa_û°•‚·÷0–¿Øh4  'ý¦TMßÙž,-È­ö"". ZþÁ';¬¶Öö":L[¦A œmµûaáW†®0‚°Azü0Áš‚–kðʈ9 FâI ˆ2H_`—,ÅEb2C”ÜNRðÂFD×1"· +$ Ê8d4B†@ s·5 ,1WØ‘`¥ÕBÁ†A¡¹¯†$UËÁe‘$’²‚㔸ÐT,¥"C!ÈáÄC Qͳ2íÌNÍðèHAϰ°±ý·b€¿îˆdÛŸcì¶ VûBCï »r›ÛD(ä2¡lWû´pÈrZ öB|2Crúÿƒ8RdpÉ3Àµk튀ɿûD,2AJŸàÂ+Ž ÙþØBP!”JŽõ ]?¾GjÃ%­þÄìL2bÿäØÕ €TÿâÊ‚n úx‰àÈ þɲ°ÈÿäØ  ƒÊæKËrÄöp||}‰B#á·ÿØìMðkÿù7Œ¸ ÿðâ|ùH,2 /ã݉8,urn*w웕†§þ²n ?[Ûe?ïø‡ßý¿úÞµ¯ûÝïs%$f—ÿæE Õ}´CYq}ÞCiq>ÿø?¿í·ÿ¿ ƒÙP¿ý°„œ_þø7½zíÃk_ú¦Pïûv-ÿºè7ÿïoÿníª¿îÃÿuÕ½ÿû§ߺù7!}î»Ç~¯×íÝÿ×õ¯ï½ßûÿ÷¾Ü“û¬¯ë_¨þÿÿîîŸýêëÔ¿ïõ§þHþ¿úmé.ÿ~ýÿüºýûãWo¥ÿút¿þZá÷Õ{¼ï_¿ûýýïÿ¯ëõ_ù?nõ_ÿûÿÿïþ’ÿõû®yo|´€—®ÚÖ:ÓÇßvÕ-þ÷ý_]vÓJ­oÿþ½ÓÝþõÿëÖî‚ß¿_ö’Uþÿ¼%ß÷ÿÒªö¿ÝÚ ~“ÿè0‚þÿûà {ÿ÷´ÂIûÕÓ@¾šûþƒ#‚ÿ;ÿMÈhãù×µýÿì!ûíxä…ÿ×*îÛëLâÿ¿êêƒÿ÷¡ÿéo}Wûèz«Þïÿ÷ÿõÿ÷Wßõ]z«ÿÝvÜ?îé ¬_Iÿñoú¿ûºîëý¬?w]ö¿_ëîÚ_ûÿ¯ÿºßÿ¯ïÿ·ÿý}ë÷ö–w­û­Ýÿý}ýþÿùk).Õ_ïãÿ¥õýûõëézúkßþå¹§Þ÷¯×¿úãKïÿ÷û]ïý}ö×ÿÿþÿþÒÿßÿÿ¯Ûÿ®ßõôßý×õ—WÿäMZÿýû¾?Ý¥Z¿úÿÿ®ôÿÿÿÞ¿í¯ÿÿ®¿ä…ï÷ßÇí/ÿ{wß}ÿ×ßÿOõ_þê¿õúúþýýÊøŸÿÝ[÷ýzÿÖþ?_»Kÿÿ¿ßöýÿ_ÿÿÿþ«ûý´¿ÓÿÞº~¤u}Ý?ñý¿[ÿê¹n½ÿÓØò°¿Ýv¿ÿuÕüõÓþÚíÿ¾¿ëìïUïó ÿ¯‹j½÷ïþÿ¥_ÿþÿÿÚOÿýÿÿþÿ×þê¯ýûk÷§×ÿÿ­×ÿÛëÿ_ýýÛ_KÝÿïßÿ~éu_ÿOÿU¶×þ­ÿÿÿÝý}ÿ½ýz÷þïÿß¿m|î>¿ýz Öëéÿïºûþÿþ¯ýiþûÿ÷]_ûï^þïûû‘ ~¿é>)ÿ¯o_ÿÿ_î»_ÿþÿ¯ïÿÚ¿ÿÚ_«ß÷_ï«øÿÿ´´ÿÿë§W¿×÷K$?÷uëiûû¾Ößÿîºîžÿÿ÷»õ¿ÿN—¿“hUÿô¯Æ÷VëïõÓî¾ÿïþ¿Þ½êéÿévº×öþüï[oõ¿ýïý}Ò¥«ýÿkïÞ¿¾Ÿÿï_Û¯××t¯¿ôõûï~ûú«ÿ÷¥ªÞ½ý¿ÿ믫ÛÿïîŸÿï_Ýýÿô÷ö¯ýÒÓ{ûÿú¿ÿ·á5ºýÿNißÖ¿]5»ÿíú 'ÿ¯èˆåsM?þú\L& þÿºÒtÓý_·­_ÿûH7ÿëÝ^º…÷þë§v¿gÕûé.nqÊ\KèÕ¾ÄGÿ_^ÿý·_ÿßÿ÷ûKþúßú¿÷÷÷ÿé}w¿ïV×믿ý¯ÿî¶ëÿÿá/ÿ¿°×ûý¥Ø_ýoì5ÿÛë²—õ]ýŠßÛýl->ÿjÛ þ½ê_ÿzh0ºÿëÖÿöýûÿéoÿÿëÿ«~ÿýúîÿ¯k×ýþ·ÿÿÿÞ×uÃÿºÆ—¿ßëõÿßßïÿÿý¤ßÿÿÿÖô¿ÁÿuõãýïýÿU{ÿ½}»óº¿ÿ]wÿÝý{ÿv“Þÿÿ__k×ÿÞ¿é_ý}m×ïû__ý¯oÿúo«ßý×®»íÖßßÿõëþ¯×ÿý½oÿ~¯üª®ë·]uÿû_ßõ½_÷ûÿúëÚ^ÿßúM{ë·Û_ïÿþ»ú^×õÛþþûõ¿ÿWZ¯¿Õö?_Þ«½ýßõÿõÿÿ÷¯ûý¯µïÞ½¾¾ÿë®ÿÝ·ÿú_êÿö½××nº¿½ÿÿWÖïûïTwUUõíu¿Ûÿýú÷_ë¿Ý__Óõ¯ÿ[÷÷ÿº÷ýûýÿþÕ¯¯ÿ_ÿ÷¯[¿úûýõ×ïí«ïÿïúëÿV÷_ý¿¯uõÿÿïý×ÿÝ{ÿý×ýïßÿÿõÿ-‘‹ïµÿŠþÿÿëµÿïÿÿÞ¶¾÷ð×ÿÿÖ?&Ç]{¯ñß¾³³TÿÿñÿÖ믷êúÿÕï¥öÕÿºþ¿ÿºÿ¯ê÷ÿ·úûûÒÿ]ïõ÷î“úï÷ÿõWÿõÎêÞ÷~ÿuÿú×ÿÿß­µïëýëüîï½?ñÿ¿ÈÓ1Ë…7ý¯Â"¯¯öšÚIè?þ÷[ßþ½jÿÿ¾Ú÷ÿÿÙ•zÿí¯²ÿëÁ ÿõÝ}§þ÷õïßúïýÿïÿïûýºÝÿ"­{_ßÇþÿÿÿô¿õÿûÿën¿ðžÚýoý÷ÿáuýw…÷î“ÞÖ k«¾ºð_ߥÖúÝýñÁ/ø"rŸúÝÁ!{ÿøö'¦ÿuø@¯¯N¿‚W~ÿôõܴ1ËT{ßï„ ôÚ÷‚ õ÷¥øAVߦýp@¿¯ÿ _ý´—pD9Cÿý>[“ÿþý„ÿêü _»Û_Âÿúüÿïþ/õÚ½è/êý~‚-ÿ®½aÿwÿ÷Öëð‚úo¿ÕøD>ïwý{ðIÿíê·•Öƒ?½/ô ××ÿ„¿®Ýzàï^ü _þëï+‚÷úÂn_~õw áí×¿é¨ ºõõªÑ ±.‡­ ÿ¾ÿn·|Kû×Ù’*/ßúˆŽ&¶@½ß^Â~Ö®Ÿp‚úÖõ®WÔ9þ÷¯xH{úwZj]~µÂ.ÿ·á<¯€Ÿý@‚ëîë„BÛ‡•ÿ÷èŒ0Ô%ûý.ƒx@½~ߤÞd²îµë«tï·ôŸCʯþ×I¼ ¹d[õ×øAqõ¾­'ÁÿÛ_ðD<‰ÿõõáÿû]n ÷»ôð@¿õu‚ø"p¿éÚÙ% ^!ÿïú![Ž‚ ¿úN !…̘ ¿Óþ@é÷½¿%ˆƒÌ†ÿUÖ¸d~Ð_û „’à°A{þÕQ-¢+Þ+ÿÿ!æÐB̦×ïO 4ŠpøKß~¼$ ðR °AzÒïØ$!‚/ÿiY/"9X—ïßÁP!‰“Áÿö–šHÿíttx _þÎÒ.ÍGô ÿØÖ ˜‘de ¯Ûø ‚A†GYØPcýzð‚vX 0vïî¸ ‘ÚhÂ\³(¾ÿê7‚ ‹¤q÷Ýv` ŽÒÑ>}~¨`„ððA÷VÚ2G„®½,GAÿ«ò¾ŽÒ÷Ûmú!%\ _o¯X2ëõ[´²‰9| »õþ› ¢Q ÷íø)’Ð(Áë’"ÉZ¯ýjddXAcß§S $G´^¾,®õÿðAè ð—ßöèȘ\$WÐ3çpØûï¥Â® @—þëX Šàe„ ñÿ ‡)`ÿûVbõÂ!ÛÓþèt·vGXKþÿHC#ʇo§ýû ðõ2<ã!£~ þê ²6j ÿø'ƒ!”—ýº e¸€Ê†ÿP\·0 Âÿô,6ƒ…n%ímÑÚPc-ÄÃ:d¸_¯èû{ÑÚÀ/–å‚&HÿÚ„C¸YnÈFˆ#†^þôâˆB þëZ]ˆWÿä1˜_û¨. ûºŽÂ`¿_îÁ]LMÞ“dà½~Þó±¦ ƒÿ¥Òü¯~Þ %½ÿü$–ÿÝí#²àõe¸ºáÿýÂÇD0Ü—õ|î F ¹íÁíB!v*¶ßîø?wÎæa8?Ð œCU¸×}êˆ}…Bhtß¼J²-“rýûá› ÂðšA“åqe¿ÒAð˜HC!–ßTW-ûðK‚ "2ˆëOj²mÀAà¦aÈØfë¿ñWbˆ¸e[ý[ –M oø{ê–4 ¥Ö7d+¿z,&ŠÆGîú ?¼– ‚Â0„0ÿ·^‘)Yn² d3,ý»ï ‚TØ`bß°ýò$‚Ád3_oßH'-ÂÁpd3W0þôZÈ0Ëê[*«‡}èJI¬pmº•`á+‘€ÍþØ/á‚ÂÈP2ÿ±ýCìÀ, @ÁÓø{jˆ›à;0¼~Ã[à,·Aà`Ž¿·õ¨H«ŽSˆÛßN 2R$d1oµ$ †l‚·Ù «úÁë—þ›»ð‚+˜ ½~þ–[ê+‰Yuå8ý7¾d¨¬ Šå!—ëéÚÒ\(2½~ß~Er@ÍþÚ^þˆuÌÝp¾ß}„oÀaxU¯ÒÁ †d¾Ô¯·ÎÅÛ„·<~þ¡:ÚtW˜eÿý¼ò[ Dl© ÿt+‚!v]’a …+ÿùNÔ ²º >¬§¯ÝI(@¼È¨3mʢ꽮, NÐd¶UÈPá£XéB +–T#"@Í«7-zZ A£$ Íì&±×n”%‚ù\ÔCQ§-©éû°TY\Pè0k¸!¥¸á "½¤m9má4ûÂà“tWСð„úA$‘µJEqÕ²ï-•°0ØO},&ðd4›‚1xIÄ{¤iÀ®øAEúÓ`‚nŠâÀÑ"Ç‚ ‡]Aa/ ƒ[q» ºÝ·Ö‚JÝÁ0ߦAE¿QÂéd›¨¶–ƒ ¿¬W•ÖA§mð˜A‡ß„bWK’:ÛYl,´ ¼ÈŸÂ!d–õ7ôMæEa4²¼PM–ãRï¦–Þ 7áN[«½†–ÂTÚ‚]a°Èk.±z©,¸DI 2Ü5¸k´Æ‚|ìÕ`“–â¡¥ýWV ždJ 2‹–ÛKdP#‰¼+Âè& 2kŠaWDktD(ÒX@›†Îá’Ô „½‡aZ‚YP' ¤å7¯°’}‹ÐK…’žD‚œ¡Ä:¨A'¹w„°A50€k´ vMÕˆe9 6ùè/ †VÍá‚ ¡`ú„—`Á[ –d$ “n _‚ìƒHçØXZ ³ ÆMˆ D@†®‰¥ñ$9ö.¯'d6— y!à‚»bBì˜'Iaëü› ~“ _ næÝAxA`‚¹\öëäñ!7À½-¡C]qN´´Ã.‚ ôeX>M„ƒZªð«HÕ‘Á´’H, ²l,ì-m~'h°°@²lT €Ì9Ú ûa^å *‚i0°DprlB?È m ›Ç%&Ê€ÛVýIXm„ \ X0} ¬¸6OàˆUƤÙ,5˪—Iûˆb Ò &ãƒf#ï&Y›OÊr ­…e”Õ‰àWŒ“ð@±<QO¬M˜‚z“pÃj¿† ©…ÂXg†Óaxd 7S gjlNÕ?ä>æÂà‚ɱm†SYNDŸ“¢Höí- ÎôDpÚOßCAØA`‚TÄ2 ›Àé7ß„@êD;°a[;. ‰éúìîÃAz4 ¬ì\8OAYl=7þ‚"ÈŽh ki˜XuÿÉ h0ÚA°ˆ‹¥s±0T¾ÿè‚ëd`¡ …‚MXd C¥åh;ÀÚ.’ah ŽÊU>ýzGh ³Úµ‚"· £mg`€Ëzýð@ŽÆÄ+†ÎÔÁU21UÁ;wÎÆÁWàØÒ»½Â!–z ÉAö÷Ô" ²O‚X†ëT•ä¨;2FG„X2 õØ@„=á­pbýßÑA#-A ðK2 «ûz@ò ¯6Y•@xOàn»Â 2‹_ü NˆeÁäµ&`ù’€=û¯¢L¸’‘$h%FC@xo[¿Áä6ä ,ÈT¼?|nA^Etƒ˜OÚÂr'Ô´ª‚fE€QM}ª@“AÃ\Žœ X7Nüa°‘ˆá·‚ 2SO_‚ë3Ì"Ÿ Ã–Á?a{A$ÂBC ¬•a‡¦þx@×Â\8ˆôçbUQpÒ0°‚vÃDp.†$]ªQ ÏVý±!¢Dðjà–ôD‘Ù¬]`‚ÿAÙ"UGiÑpÓ#çE’a÷í$d¨ °„C‰ålœ%Ââ†y,…Bh ¶]s¼ $Bwge`Ù„ Vk#A ¡v ™ÔÑƲwA œì0r mejLÁº ³µ¬Ž ¤u‚¢a¬"äd—Á´G”"œ¯ ¡¬+„KlËZ žAqÁrJVe m‘ø®ðˆ¹¨K™'Y &u;;”Ö$r¬ÈGRýb< H-Äò#‚¬°A]ˆ2 ó à‚*s"°•wu´ p-ü'‚ —ÿlìÀ òK½uÑë‹Ò«ÿGjCA÷á2ÇVTÿD® -ü ¬ Uï #v ·ùj…} ˜ÿÐN 'ÿ-R°/„ RoX J¾þ KûÂXAZúËT à½7YnB‚ ¤ ÿåª (^›Ü`— ãuï–­A—‚UOô ktèÿT%ïòÕàʇkvâMúû–©¨eá¿ü ZW¤î°8Iÿ^Wí¿-B@ˤ½+Þ'—û©j°@š@½_ºh _ëÔ‹/Jë¨ OïôÈf_WõA ½wê_ÚôÁÊ6Búå8f ÿzf$_¶ëMAÍ6 >“ü!`_éô .Ò¿ Iîëß /×ü‚¹°À½öþ ’ÿA «Ò ¿ßÐ$é_á ûýºAÀ¯÷Ö’[ÿÔ·XAB]ôÿ‚ ô¯º„OÿÞ ‚AÿOü$õõª ÿ¿¨A/ôÿP‚û÷úh+ý„ ëíúa/ÿVª_ôßu/½Ò þ¯é)×ú¿ä,üB¾·ùs`×_ÿ‘M„‚îþþ!ÿM×J—×¾×Óü²%ÿÿ þ¯â‚ÿ_à—¿¶ýÿ_¸A×| ¿Õë‚_õ@‹¯ï{ËL·„‡ú]q“pÒOý_Ä%ÿ¿Â ÷¯à_ëoÐ^Ýïôÿü%ý ûI¿¥§×ü º{[øAn½?Â_ï-u¨ _ôÿ ÷Öþš ÿ¿ØAuôÿP‚ÓÿÖš_é_ìœ6uûïD€»ô¿Ä/ÿîZ@i÷«}FýÐ_ßKý'¿ ÿ¿¥ÿOô_ßz××úû¶µÿõ¦þ¿ºßÒûÿÿNÿëþºoý7o_ÿü?õþ÷öÿý/ÿÿNëöë­~—UëÓ¿÷ôCoj_×ú!¬à½ýÿ7ý_Ñ ¹B[µþoôßä–šõþÈY ÿ_ää¯þßË[Ó_õüGÿ¿–”×¾¯ñ-ÖÕéÿòÖ4/ôŸéûýþÿÿÿý7ÿÿï¿úßÿÿ®úö“÷þþÿ¿´“ßµÿßÿûõ¯ô¯þÿýËT¿õoãõõÿ«ít½]5îß,Â÷÷ñ½~µÿþÿÿÒ·ÿÿÿ"?àƒ~ú½ú}z¿ô¿êÿ×ÿá¤ÿëÿÿÂ×ûÿKý?è_¼/û!oüì¤[þKDÿ ?ðŸúßð¿ÿû9þþßÜ'ÿµÝãÿÁúé½Öûr('wÿ÷ÿ„ÿ·ëûú½ûÿÖÿ~ºÿË4­HŽýþÞ4}}n«†×ÿûíÿé=ýÿ¿ðÿ¿×íÿMíÿoÿ¯û~×®ÿoÖê¯éÛ÷ßëëëÕ×ÿÿVþšÿ÷ûÎ5Öþ#~ýúý×ÿë~M‚׿ºß®ý®ÿ×}»ÿ|ìO½þëÓ÷ûÆ©ÿ¤ÿ³º/¿þ˜÷®ÿO­µ¿ÿ­k_ßìî[‚ÿKøˆï×wõ~þ@¿[¯ïôûÿþï¿÷¿×ׯû×÷¯«ÿúÿÿÛë¯û«¿­ÿÿ}mOþ¾ÿúÿÿßÿÿÿú¿÷ëÿ«½ÿýwÿô›ï¯ÿÿëÿ¾¯ÿþÿý×ý[ûÿõÿÒÿ÷÷ÿú½wïÕ_¿ý]õ}¯O÷ÿýï÷n•ÿÿû+/]%zÿ}õúÿÿïÿÝ;ö÷ÿÿõü²­¯ýºãþ—ý{ÿýÿïIÿ¿ÿú¿ëª¾—ÿõþëzýÿÂþú|/ÿ¼.Ö´¼ý÷„¿}> ~ð—Ú­ð‚ÿcà‚ï{z^¼î‚ ]²Iþ» ºún¥œ uú¼%ßûÂ_ôŸ ÿú ]´ÿÿ‚ ÷¥x ¿ûá½þðAcýôô¼³ò_í_é¶‚î÷ÂW}/ ¿ø@¯Ò·„}+ ÿøAÞ ¾·„ ÿà‚ë÷„ ·¤øAü%ëÛÐ/}yhÖð@µôøA{× ÕþZ*A¿ÛÄ Zëð@¿¥n^ýð@¿Ö¡ÞÕ¼ ¥ •øJ?ׄ ú·„ÿ¿_›÷pEúmB¿þ_ë úÞWé¼WÞ·,¡a•õ^ ]¶T÷íÑØ5_ëIJ û°@¿‹ÐKþ¡þB—`‚ý­ºRΔ·ÕÔ µ±¯ü ^>ð‚ýx%õ|TßmÂô¾­–T_Uo ½^*¯à|%Ý+ÂMÿÂ}/„¾ï„±»,Š¡—þ/·„¿áݬ_"ýØAº/Óáõ» êø ¿ô}-ÂRÌ[_·„£ÿ Zº|%zJòÈ\37ý„][Áÿá}n‚ÿ°‚þøKV—„Þô¤Ÿ&æ™ïô õx%Ýo…ýðA}|_§Á/÷„éô é^†Zd_ÿ zøK^øKêÞ‚ß^ ¤Ê—­º ¾ú õäÝF‚ÿá‚þÞ„×ɽ@Ó¾›Ñ ÄÓ·ý„ v¾Mæ¶ê¯ [÷Á+zW„6ÿ„ ݯ Vú| ¡µï†ûé_­Á-£¦õo[ûP@¥¨&›ëÁõ¼" )¡KÿJÞ“xA]ÿ­¯à‚Û«z Òšo¯ ßMà‚;Wÿ ¿| [ÖðA[tŸA[_Áa½x%Õ[ÐVßòmÈ ­ûz[ÒÛAQ»ï °ýôÛÒðJßùn²[ûª»ï–ä¦Z ÕµJðA ¾¼ ­êøA¼ ¡‡¥à”7ï¢l _øA[u¼· {w¾+}] V¯A-J•ÿ`‚‹ºW„ ßø@¯øJÃï¿ÁÔa)½ú·Þ[Ì5=> [ï(oð‚°Ú½o|[ü®´÷ßD5 ßá!–È’n­ÐQ½Ô(n¼VûÁ–rj÷p±a÷„ Çè-7•Å^çjk âù\bïÁ»â‚½á~Á»á+Þ DÙ#úWò¹Á²ï„ Þ [ÝvÕ·æF€Ùmð@¶G÷AX‘›¼É`0ÈïT¬H¦âd¦ –AHÞ¯ ÈAFøð‚Ä7Áaø@¬ül•ÌŠJÄ™²ÃÐ…d͂ۙ ƒm<4pYÃ(Ø[A-M xf› m(²ƒ\l­á† ˯‡á–Ùh^eXmËmHÖó$$¶É@ðÛñA´*–ÚPw„¦ΠSÃYðJ ¡È ´O"8ý¢ €0×@ðTn$è%È`x67‚ !˜r†»uAƒ¼ ¥0 ˆàx6¾(†@ðÛoNˆ6€ÀÊal b;ó° Û”Á  —„¥3`x*; EºW)“à¯çe ©Êe8v¨!”È0<6Ÿ S @x6ëpAC*êø@¥2Pˆàxk‘öð@¢p §P”N@ðm_NC x+¯íÂR™JÁ_SºÁZSCà­v‚ƒ x2È—„¦Ž‚³¹ÝVSIÀðÛ¼%) €xmꂔРÍçn òšÃlºðD€bPbG b‚) TGÁRÐQ àÉ"!)¥<\Rš2Dp<Œ,Q4ÁS<6³±X ¸JXP‚³’°d– ௠ ÊàI³DDð f‚C,àIaÊrÆõ„M28 „Dhƒn JlÔ\ƒ x¥PPe@ð(T‚ 'Àð(ÐR›[Á’Sap< 4A”9À  Q8AM—EÁ–Se`x‘ÔD)M‚äp<ÑĤ¢P* ”٠dD@È ¸j@Ea @(`2‰9`xHÀž@B  ’ðÚe—Áª!<2€Hž†‰„áàÁH ’ <€À0d&R R@ahfÁžD1ÁDdÝID¶Â”äÜ…7T^9©J?ùCUÿ-¥•ÿÿ“t(夕rEÆ}ËHèµ€—¿ÿÿÿ½KlÕqÿÿÍo¢ ²ÿúðˆ®–½‚Ðïòû^ýlÛ‘Oh>ˆ äAÎæáWxiîAÇäGÈ“ZnðÜ*ívöè³Ñbt„jÚ^îÒíÑ6 Z°þ¦Eе,‚‹–f°kˆÕ*Z­-V•tY¢J¦¬e¸*,¢‰%ˆéì.Á/øVLt1 .$@XÈÁAΚr•‚c#fGÍB rq«ÉH9T@šhXAÚa9M"èì €Á" Øl}Zjºrš$DxŽFâ(ˆà`¥ %¡ ˆeµ[½9iž- Å#£±1„"@…¡a˜A¦¡4ü¿¦Z¸¥YÐNA cNÓAÝ„Âwúí˜BÓM;\ íP5ûôêi¦©¯i„¦ôýz}§z§§vj»}­Sþ÷Õžšþºí;OÿÓô×»ÿké·þœ=WûÑç(uUïO¥M?O~ë!?ׯÕ÷}¢ 1}úCµí[y o[i8"ý;Ð]/´Aw;ôCΈe»»D6 ¡Ú?muY§éô-¯k!ŸG­n¾ý-а¿ÃÝz@öèƒè/¯ ¯^«M4v¨&ëïêž=ýÿÐo|6¿U¬úþý'¾žÿÿÆÓîûN®ô›¯¿ªýÿW¤—}k÷ë»õû´î›¿}ûê«zvÕ.ýwýß»þïÿvõuø~¾ÿÂðíw_ýäûôîõ.9Év—}7þ¿Ü>Ë®¸’S~÷×_·¯Ø?ÿ×ä1ÿÛûðûZî×öÿÿ÷û_ôî¯ û÷Ó w¦ýÿÚÿ¯ìØ|5¯‰îÚ¯oõoŽŸwÿÇïõíûäv—ì'ýÝßöÒd^×Ußïö×ÓoÚzýÿÛÿöûáµ÷®•÷ÿÛýþ˜j๠éjžúiÿÿ¾÷©…Ècf·ô·´›ýÕ¾êä =ëzïwPo¯„?¿uö¿ý^ÿiëú·\>“»mÕõÿ÷vÒÛo½ÿ‡·ö›¯J»_a«½6Sªýÿm®ö‡~û Ýÿÿ¿û#[Ú¶F8~ûÿý®}0iC!‹  séwúÿ_ì4­Ø3é&@ÅâHÿü†gK)œ¿ß!œjïy ¡ÆÆß¾öš^îò* Ç]±]±]ûïeúê¾A¡Bë¬;¿þ.„o¿÷ÖÖí:ûïi-{îé÷ö½½þ«¿þ·wýè5´½ÿöœ0Ú÷«_î—ïµ¼'wß½{[ÛûµX0ƒ^í4Wkëëë -¦šÚ¦²&ÿwþŸá‚A½a`™"äËJM#kKëßi„Iªh ƒ¢¨cÂl¯i§kjš„ÂaPà„4É:"€¸†g8'ƒMSMm0MDB" Ôà„Ku%Ø*h0š  ”‚ø2 Ïùt¿¿ÿÿþ@TÑqþõû×å°Z¶>ZB‹ýôY¸ýÿÿÿÿÿ÷ ?!eÇ×ûÿÿ–’RX÷õÿS\o¿­ÿ¯Ë\º’%ßöþ¹i­.?ÿù‘’ãëË`É\¯)±EÇßÿ÷ÿþõúÿÿ-!@Ê.;:Š\dtz!£"!èDD‚°ç†³†GÚ0†Qpr>\ˆè¹Á=ˆˆˆˆˆ ?$²Ò& Ü‚Øeü–KH)páxuá–„µ¶ avZGAØ9Cš`r‡(r‡2,:B""#•hÆH¢Ÿ8ÈèˆF3Lü}gHÞmFâ ÈœGÈè¼Gͳà‚QD""""N!ð`à‚ÄìP ÁØ·aÂ!œÒ °’°A(0áÁ‡¶Du††A6[¥‰f•†Íƒ‚ "6]†C0ä8 °Ã„ X0d…)f«ø0c@ˆëCA‡CFÊdØ„°ÁÁѰH0tM†€ÁM”* Øc,Þ ˜d3bHƒYmË4p!C(pp–,ã†[jªY‰@ÝÅÌý„†‰n,›†d%“ePÊ‚ƒ,2`?³‚ `ÊdzX0`œ °ÁܳP NkRƒ„ Ãð@²npÍè,2 I‚¬ ƒ‚X0î,·­A©0'‚!¢EqA­0aBa‡ÁIJn$ %•)pA`È5&àaƒË(’–ë›â ã+ ƒZ`ø@°að@¶ø X7ÐXaòÎ 0ßD4.#2:–r°Ùw„!Á/øHËDykÕ2 „ A>¥œl…@ì¨ ·Âì(D6H¾´ñ‚]dܰ6¸D6HÂk Uë Ü·*DØ\½kN!´°ˆ5ÆÐ2 “øDhôB ›K¼Ýz íd(îˆh’›ðqi ,æ aÒ öL…Ö»… ÞIm,›M ±J“Ö!iòа Ûð@½(JÒt î¡n²n€h¹P“ø]Ûàˆ7_GX$ôÚP‚qÂá´ ^+í`‚o«uj—¶”C¦dÙhþøB ‡„˜{ (A>O¶”´+þM”’Ý¥žÐ‚ÕÖˆ(\™6+ <®!WP‚tâúÂZ +„ÒPD.I Ρ¦&Å)n¡à—Ø ºˆ@´Át¡#­¾!¤Cû-MjZ"ÂKV©Ë*Øei` vœ ON‚í(Ai8 O|íêÓa$ê%®† éÂXË)`ûƒXá=Ö[©† ¼²‹†Wºp~\_„Á}„ à}–âÁ§Ð.ì žYA†Q\m.ˆa¹2R| Ë]È7oXWH+¢ŽS áO‰æapA[aW]P.*‡ Ü‚yeàÌ ‡¢Ä2:#áp 0AÁ´¸ ˜4‰0Õ.‚!¥ ˜A¡X¢(À—2Z639 %Ü'‚jÁ¬p•…h­"á¨MÂ!–¶ö„Ì4ˆì\AÒ ‚n±"HÀW&Ô4܆œ“…–Þ(AtWHƒBf`‚q;úãGe Ö YÓ‚®v EàA_iÑÚ¨kAÔ‘%8$6–v— $p@¯Äøi„­`Z™zlÈ+hð—ŽeXk‚ ¾ ½«ôd5È膌`‚Ó„ ýœq#ÄÀ×Ë%`Ñ~$á´Ãw¶ Z¬)!Ó²­‚!¨¹‚Tÿ‰ Ì “­é="8ß ¶ë±3Âw‚ô¼®p>¾‚ÝoŸŠ~_ÒB^Z@—߯5Þ·^êí(&î·¶½ !ª¸µkº^W 7oôݽv_¿ü ›O¶—@•tûü%~mwÓÈ2lÇõ }ƽx+øA½´»‚ ïOA¾øD} d61±ø ›{ì>¯D5këPÞþ wðÁÓîV÷Áƒëi.úMõˆ"Äú–jÊákÞ_,† Ù~<0f´G{à‚Þô0„á&þ¡†G@ƒÚ @»ôÄCÞ•Á§O’ (ülmi6aßìêOßd5Üðö¬" Šnú•0j¶”›”†Ûéè0´Ã¿R´ j*'¿Tþù »Ô4ØguAø@ü4â$) ¶Ù1Ðè=ˆA{Ì.ƒå/-d¤!ª†›A;§É°œý{Pvý¨yÙ*;ÿ½ßJÑÍ•ÁmÿÞ‚úï`‚{éh/-À×î‚­¶>œ" FÄR­§„ ßíÈk|'ýWàŠuwÒ Û6ˆBÿƒô þ¬CÁ»ûx ­ÚÓ]a}gjO ~¡ýô¹&C8`ð„ƒd‡oØk´Áà{vaǃ ‡¥ÞYùD4“@ÃÂO¨Åh¤Ûߦ˜<" ’Ñ¿ö+ÿ† môœŠ†Ö ý{ 6‚ ­ þn‚¤Œ_ÖÈ*·A'»® ƒ% 6õýv$‡&9X|)¹iY ܶmV¶""D n0Øÿ"Aܡʃ̥ÔÂo½aˆˆ“‹aKƒ àÄD‚ã”ær¤¶ úNÄD‚‡7ÉÈ5wE˜.·±!Ç(r ŽSÏœûî4²” a˜_.ˆ„D ·úƒ!G Ö9C˜q íilDD&ÿ¸d y7ºàÓߤ˜-þá«ê» f ƒ…ÝêÎÈ0Ûv¾Â»Z[ fK§÷ÖC) ßû! ÁT)^þ–â$°!p\Ž!•ÿÜE”ƒÁì…·O{4#†@4[ô¼Déà ;ßûP†µý*v~*eGðÄDÍÀ‚àÚÝ×»œdfouú&Cy,_ÛÛì}wïõÛ¾ß×§ÿûÓ¶ú[eq$ƒûÿb=ëü´ßIé´öÿû '{}-Þ¿þêÛÿá¢oì²&«î‚ ï„ý{ ¯§AÑ[õ®Û é¿»jõðÓIݽÇû‡º´¶ÿW¶´ûï×»¿îíõö¾–ÿýï}½úî´µîÿÛu~ÿëvuûë_~þ÷ÿmÛÕ;wÒ§oÕÿÚßVíúðÚm¥íÿ»¾×o¾“»vÚ׿û~Á%{ë[·l5÷¶éû X®ýuØokvòØTM’Ã~á%î6M‰A½/mA…·îM‚§ûr8µì6Ô›¿íµm…߸ t·nœ0©Þè ëÿt¿Ù60z톻ÓÛäØ"îÝ>·ÞM†Ñ87¯zÝ{~oîÝ=þÞMŽˆà¨K†z^é]oøBC\À¶ßmù6þûénø" ¥ëvêý¾òÝl6ƒþßµNÛà/m_ÿËu@laý¶ö×níKpYÕÞ¯n½ww-ʃ\0ëÛjßOø"»ÞÝvÞ[†¹·µõ·òÜÀk‰Ù€Ñß ÷ÿx"Û(uíéß{òÜ@k©{_«wËzƒY‡KpÞÛ_ø"{3]ïô¶ï-ü4Ãzöé·»ý »mqß|·4‡ý¿K·ÊéAªÁþõ¿{ÊëÖd&Uöíߕթ½m·Ý{©\4˜u÷VîÞò¹@j!¡£JöÕ5Ð n©¶áŸ¶ù\H4ƒïl é¿r¸i¦ì4k÷•ÕƒS@÷iÖßeqÖu ïýÛÐ@‡¤mú»ÞWFG°aôöÚª¯Âk•ƒè<6ÁÓì6ÞÊðA‡JÞÙNM“þó%¼¥ÉheXÑlDGÝé  ™‡I ݶ¯Ùl¬ÉUÁ¬~›m¿¼p„aé&÷+çWêdZ Aƒ¬'ÛM^Û³!`Õ`ô“mÝÖûH†“só²¸ï·÷·f@a¦©2@?m{oÁjpƒڤݷÓß™ 1 ëýÛÿɲeR#†“×z½½[m±Ì¥¹cÐ}îúÿCLÚÃÓMu·®ÞZÖdø" c„ÖÝý½¶S4¢v–d|CÖ«í·ÿð ÿ¸o«wì”Þ“½¯ê÷tv¨Wïµßÿ°DMŠu÷§ƒöÛó²Ôo_öß^ùØ j7Kí-°ÖíÞ£e‡ÿW¨b¾ùÙ0ÖoûiX¿gbK¼ìi½-ìÏ mÓ‹~vœ4›þØ!O ÎÈ fÿ±[~÷¢fú?í6û{çx×ÃVßvêv8i·¯kºÛ¼¥†£uðÁm¯ùY Fýa¬>ÛÞBÁ±éxa=×ø"ÆáOÞÕ·»¾&õîíýù Bëÿ[}ׂ[¯öÚ·vK^Lcýºß@ŒvB¡7§ÿîÛAvÑR.£uZÛowÒ ¦Ò!&õþÃûm!#唳³¸6·[owÔF"zýÛ^Þ¤YŸþÛVßTCm¡Ö–÷®Û¢Ì+ÂúÝöÿ¼B ØÈékM°êïËkPmo¿ö¿å´€Úoÿmí¿–Ô³uÿo÷ ÿîþþ[)imÓmÛ)²JPãn—ä¡;kÛá oõŽûö%² ¦aoNµm¯ym ¡·¯V÷VÛ–ÕooÚûÙm8*6Ý+ïomòÙ3 ¦Û™*­×¶ëòÙY ¦Û{NÚûaÝëJö÷¼¶BÃm¶êÚûÕ»–ÉhmÞ“im··v["À¨ÃoL%• m}Ám4·Ø0’¶µ˜,¶@ƒm¶êÈgÅíÓm• ¡awìBÝ¿pOËd@66ß /o»öÁvk·tƒ ºÝ·ßë-CTMŽ{ îvXß}¶é¬Iµ‚¢{t‡vëÚiÁmÙî½Úí¿e°¶{ ½{}î“–Á(*nßÜ7·í`ˆmíD6úíºÛmrØMۯçÿ-‚ T0©¶ë»iÛ½6[ ª7w¯¿¿ÁÛÙT6ÿÃu{k–Á0T­‡^ýÞ鲨 –ßý¿ÿ-ŠSa·­Û[mü¶ »·_n¾ÒlIa½.ïnßpD6å›oûk½ÖZäˆÞ\6Èëvõ¶ôþ·!ªà‡mºû}¶Ýa!à ½m·¾ý–¹h+{u½¾ïW-rWÛo÷ 'î²×E ¾½ý·ò×@ˆ*@-¶ë»yëí[-u`È/w¯m{¿Ë\@2í½]÷w«-}A—m¿ÛÛi9kÐwÿßßø ªzíê¶×-qÁ’÷_mGý°@¶Ûû·Wmùk¢8);mÒ[¿å'$W!6ßÝÓyÊ}–±h oßn›Ð+¬&þî–íîƒ×-aPRm¿ì5Õ½ËXl­ºÞõh;K-d€ÊÛz«½Ó~ËX@)ßí¿§i9kT—t» ü„;ÖÁRnPÛþÚD…im¥–f"n8)·Òw{NéãqA‘º¥‡×`êøNöZ©HÀ+6Þ½ÔÂÝ[¬µVMÍu퇊ôþÚ6Æß§nƒ{–¨"o]Û×]«H*ÛÒï»öùj‹#möÛµNþ›-Q°$#¦î¾t÷þZ¤ÀŽ…·ÕoïîØ BÛÞÝ{½e«P6ô¶í|ʾZ´vßû~ãí8"…më¶þõòÕp7ߵe¨– ·û‡Óé –¡.¸áñ6Ý-Û¤ûì„)·ÛZÛK-BÐYR¥»ïvý»\µ AbÕ¶/n¯a¤Ùj"îm¿ïÞÛ ‚ °¦­·Kà ~Òp ûßÝLØD=†Ý'vþâ°ˆ·ÛwûºiÚ°ˆ)·)¦Ûÿm|4á¦oöõ»YjP $Ðm·Jݼw ªÜ’6ïý­ƒ({eœÕAZ¸ì=±|P%A¶Ý-·¬®&.+NïÕ·ØvËLÌ5´B{m½tÚ¿¢fØÐA¶î»·íà‘nT¸ ÛoîᅦVÛn—mÖí„•'m¿»{™'W„î­»þþ;k%vßûjÛx-?nÝ-¶}‚ ×movÛþßøDO§^tžÝ[·+ÿwþÞB[áÚÝm·Uw¥Û°‚nŸÛo^ÃûÜ N·{mëÛ[~ËMFM×í·]¿÷â¯oþßMÛ„i[ÓmÿoþÂÞö­·Wm´½ÎÖ–/ô›o^ß}‹„]½»Öíûo‚ ‡]¤Û×ÎÖ“k÷„}¶»×bÝ~Ø@›IØ4›n¶íûmà—ìS·û@›;­$ÛVߣ²ÅÚöö'a6Ý,vë÷ Z[M¿Û ûÞö&Û¯Ú¾ú ý„ÛëvþöÁÚ¸a6Ý|í[#„n©ïACï»ÕØCl-ïe¤O[A¶ë½Ù>½¶è'_nõû ã¾ÂÞÛM·öÚcûÂjâÛÚÝ÷ =[m×¶›ok»ýÞß°‚¾í½}?¸ANØm÷ûm»®íÒþBÍþ+í¾»zè&Þm0ÛzþÝ ÓAÛ÷¤ÙÜÕø@›Õ¶ÿôØ÷aºM·®õM·¸@Ü„ÛõÚÓïi6L$Ømêýwð8Ëãž rŒ]ºí¾÷¸ ›ïý×Ý„¯mº_÷· W°Û¯ûß–‘¨47m·ö×Ý·AZOëêÿ°@›vÛ¯‘näÚI÷oîúßz‚ ½†Ý/ýooA{g`É¿ö뿊 ½Â ‰›uºöÞ{i¦ô»{÷íÞþþûkÛá÷Ún¿é}é7°ý»_°×}´{o·^öÕíõ½úoTß Ìï-źÛÓûö;}Ä-í¾Ýmm»MݾŸ[îÿ«{míÒïowtÛÛÖÿ÷WzÞííÕü/»ØVö­õo`ƒ}Ûi·¶ôßý‘4cøMðÝÓêï¦÷ý_Xußû»D4;o†ûÿé·Ü ƒš&ðÝ‹zÛ·Ò†-öï÷ößm+· åB‡êý·}-ºÛ¶éfZ/[ïAHí¸·tß±òmÞØK{¼^–Þ7·Ó¶ííúõ¦ïÒ«l6÷[¿Û{tí·mÿUW^Â[vÛmÒÛ°»{z ·o¿ê ¶î§„»¶÷¥è28¦Šnñl%‡nÛo[hF“nývÛûöîô¶Ý¶Û¯UÛ} ·m½¿»áûp–ÞMÖ•·°frƒ¥†ï »¼>ßñ«öÒÜ60ݺï†ÞÌ–Öá¹6Æv›5Öøwï¸ÚZ)÷‹dàá÷·o ±»ÎËUœ ïÓúo·Km¼Xaa; ß¶ßKmó²Ä†á<:½¿´½¿»ÃÝ]»Â]·¤Ü2n 2¬?¨{º s±E~ÈhÆÈ`Ý?µ ß„¶ÅÕ)ÐðOÕÞî­¶õ”8@Þ Ã½º¾íM·ÐÓ¹7ÀÚ´föíÜ ·¼Zn‚̇[½0ÿKmúw&Æ€ÉmÓÝÝ.íû ½†—·wa.Ûéòl¶ ïoo«wëp^÷¢§¶û ¶Û÷h›*‚¹€—aþ­ßa*oÖðD6ÑØ0öôÛ{Òì7×Dؾÿo}¶ßíAQ;¸0u¥{nf/¾ü  ž6ïPÝ}¥»ö6( ®Øoû»Ç [Гa0Û~ ô6ÊRÛmM·º„A´WáíáØþ‚îÿ†¹NÛþ¶Ûm„­·î‰± k|0÷I6émÞê w"¡{[vïKmûɱ(6ÞØwà¯nénÞØH _ ×È;¶ûÐKß…&Á`Ú—`÷PˆG·{Ka¾ÃHÃ/ßj„6÷Iݾ¢›}°ÃÛá<>ô[{ b Ö~kª»nö•Û{6 ná‡ú ·÷ o{“a ×øa»~á†íá-·Ã‚!­ºûoÖ¶ï´í»dÙXj÷aß_¿Ó·t&Ã]x0}ûl=Ý%¼A¯C[f<Ý%ÞîÂ[mˆa“c†·l0ýw¿ÒýÐ'ì6ë¶Ûm¥¶ÛdÙÃ_àÝúá¿Òì6Ø"»-Û jDöÜ ¶Ûl·Z _·],-¶þ‚ÞÜ·U _ƒ¼´ÝÚ[ Û-ƒW¶Á™b·È0ʶÝÝ-½°‚ø0ÇòœSnü ·nËqPl®ÃôŽ¡§m»z^Ûh†¬£°Ã߆T5oí-·l·I‚!©/wz! €Â! ïtݶj’=‡ëM„·½„»m°A|0÷© 9EÅ0îÜ%½¶[êݰa÷›M [ú a¹n7¹n€Õ½°ÿÎ4›²”Ÿ\ŸÛM°A}‡ø°›Æí, Bíí–ㆿpaÛÑX 6öè,nöÁÕ—†ûPȃ¦Íu½¥¶ÞØ"’íƒðŠ46ˆMéôíí•ÕZ»œí[}£xKoÛ+‚ƒgl>Ái¹7÷p–Û{er lùÙ€¾š¶Ã»¸[}Ù\T>Á÷[² 6=ð»mᲸ6÷mÞ¶0 žÛÛðÃ^ ,6GNú[¶­„ ¶ 7ÈTÁa² ö’ né²½AµöÙ)=•Žõ .û`ˆ6¯ž ?"ˆ.EFc6 ‘ò;lAÞ®ÝÛ‚í‡á Aˆ·íP'°ÛÙ]ÃhŽ»•…Û$À¾›dN#;uKné´…{~AŽÛ:DQ@ðP’m½¶d”ï°`ü§ ´¶Åq«‚¥nÞRGˆáK›fD ÛÝ‡Ú ¡Â÷!&ÒAïI‰‘c2 ¯†è VC(vܺ„6Û´a½»Ð- Ó †Gï¤Ý¾Ü" ‹ì0ÁíÈ}¼ î½Õ$ ÿlÈT=þEÞ&¨+`ÈejðI ·ÈÃ2O†ší­°ÞØP•¶ÞÂ4 6Ol:q÷l¥†‹°I6íÁ„³!«öþ¾ÎÇ x* îðêÙ–€«öu·mÃá ’Ì;vû¸@—l;¿w;Á;TWv•;`ˆm޾ù­VÙ&ˆRO@ÆUCm¾ïfP ¢÷ >ñöÄ]°‚¤©Ý»öÁTnjíƒÒÞÝÂH$›‡o»gk`¨— =¿Û¼% ©°í¯¶ 7̼&d¿ÛÛ%%{oöÎÂZ» ް@ú}ý*ý¿Ý³²°dí±y@í®í»„AET«ÛýÑVõøo2¬¯îì%P·vÚöÎÅWì  ëÃy©8Apïwa·l>e0Ê÷rt æN‚IW‡l5í¨o†‚ `tëµv(„\inÛŠîv ½ƒ™þ˜|ƒ®ž*®í»vÁ»°ÔìÈ2î±màì ¿Iïìíª÷È7 ûvÈh\Š Ü ~۽݂·¶ôµx2 æTŸ{ÆÈ4\0o!…Ÿ»`Ãp—ßoMˆ@¯a‡L„KöÞë .Òl7Ù$Ná‡lÛ‡[y 0K;åÚ·{`|7Ûl“Žõ·¶VæžÃÁ[]¼†-^·îJ“Ø`õý½ðA.à Ýí„AXÛ<ÎÄ"8ûnE…pW Û|2‹pÙÎê[Øh×Ú^È>v÷A”Ùfƒ‚!³b•ÛÅ2: v)¶öÉpd ņ§s÷íºReM;W•Ö­°@‰°a‹mØ" öY­»ÜB^Óv» " ÆÁæJÖi ¿·o%Úm»Û8 dØà^à 4A>Õ;·d)6ÙÙXfVvþ a6Áƒ:íât@—d1²íýY6G{a—³G[¶vûa*à ¶þ›4¶Û &?·Ž*á]ø@‹ ¿ m. ’ÚwÜ" FÄ1ëì0ƒ FþÛ¶%ÎÎ)Ûz•É¢8)“dW|~d¸%é·z ÖêïÂQ_¶+:Aû"È «»vßÁS6Ðü0AµuÛñR-uÊõ¹6 ¿Á‚`ˆUý¶vRÜ$£ï¶ÛáS68/Û±!²BZÛy µ¶EÒ ¶Ÿv•Î h‚¯v™ É}¾AöKT‹Óíþ6@þìƒy×nÙ6¦Ð*ÿ¶û+ŽäØà£µa¦Ay):»x7ûJÛ} Ký¦õ–†Œ%ý¿~d–äÛÁGW¨/Nì0í*ßÛ2X@‘6°/ߨZ„ß;Sô +©®ýÛ\ DýôÞl=¶Á1½ým¿™ø _uý6Üíh& /ûm½„@ãåºP(ýª_·gifÚ µû¼("ƒ‚rÝ`2ººým¶8IÛô Ž[ªæJaŽ×ó$ã²J*ÿ¶ì`ˆŒ »æ@³zh7 ÝK×¶Þ™’°7rÜ~ÌŠ@Åøi·}‡ ~Öì5 ˆ7Þ¾æB¡›Úì†}ÎK÷¶þeX常(ùX&½6Q»h*úÞÐt„CFÂj¹‘0lOÛÁ¼ –ÿmÐnd€(Ëq°Ïô†Pçêm÷`È2a_}ØLA7+–æg×2N a?o200‚^×·A™>†}Š}6df0Ð7ß20‚¯÷n" Rܸ7_ 2˜4Ã.“ºnÁƒ²$‹ï¶ÚfB`±‚!³e;°D ˆÊ’[Ûtû¾ˆNfFD Ée¾³¨çf`ÐGÙ Ûo¶æEö*Xm¢= IRÜé÷XA¿ìȰL-/îÚ Ì‹>„†6©ùÙ.”XaÞÞ 6%ßvî›2¨2Þgí Ð0m¤ÛŽ‚ª_m´œÈ€XÂ!Ÿi^çe‘3XMûvWñ¶IÛ{™Lp‚÷‚Ì ì=„ ÿné³(Ñ}‡+­†{æÑm‚ Ѽ(m불.„—¸i8BP†;; Â:N†ù &‰.ïWo³µ°YÊêa£éçjÁ E‡td¶›pÃâ@»¯­Þ’FW ¯y—§; A½E½.a)V©Ü†bù°@´nV•Øça†›ûm†Pä ÐVMÆ•ý:k‚ÆW)8ßak–uâp ‘ÃmGý´ °A{ b¹ßR²;öì„¿ð d>ÄÁ`ˆ$›½šƒ@0n*þÜ Ì”â8y6L>Ê ˆ/!¿ðˆfI#u”;ÊàÀßí§m3 @؃;ù]Xgån·ÊÀf‘æ ºò¹0dKúl Ád369XS8Ú”.ƒ‘-¾aû¶W ¿×°A™ BbH)l’W¬6z«¼‚ƒSÛà ¿Ü Ì•†¬Kœ"ä ÖÞÚÛíú¿î™V ‡%@‚Çaù( Â>´®ú_Û‘Á­Ò:åL ðˆ1%UÃ{‘0i`ýº×ºíeÔÃHŒ‚Êø zú `Ô;Ûlm’¯÷0ˆe¹BH¨–FW5 Ÿ «‚ ÐáVí_]°š  p…ƒ#å‚ BæºÛ´T@†îáû÷†q1‘`YÌ–ƒGÛÜŒ ÃºaèfË;¥Ø@ä¨#»µC:ý÷Thˆá¤^21îÁj •±YÙö’°Â ¤8rJaŽ Y’lýÛ„! a¶Ò ¸H‡A¿º@؃É‚!}7z H4H¦~Þ@È5l ö½‚ Û3‘Á8".Ÿdäà ¿l ™Ç ×µ vNØH4Áˆ”°+\Z̆¥°ý»ƒ _l%¶aƒ+•Öd*Þ9–¡§ƒ}7 ˆØ4W†Kl °a‚ W!iØlº™ Èé6AöeW‹†nû—„ à î0gÁaq?AªIvü"¸ ‰h4®ìqÂÛ (a”  – -Ì 4”mûÐELkØœ³`8l©€Aæ@Ãg³³=+aø·„£Kç`Ã>Ø@°Á‚FDápD\¯Sµ ÕLìáô¶ÂìpÊüí!—¶Ð[FÃ,Éx1fZŠÐ"‹ý†ùo 2‡!™Å)¯§K ÞDpy‘Ãeìì,5paÞ-è! _öX0Ð „8ç™òHŒ¼4uCMz¡†Ú»ˆ Gum~çz†¾ ¢ H0„0ˆºÏ”†¢l°ñ dWö[l‰-H3yÙ hùÊXjXaõm„‡úm„ ‚2Ð ÁðˆÜ×P™$ b“t ûz2œ†aP/Ûƒb+,íh4t‚ JFI¸o¾ƒ!š¸Ê½ ¬a8DoújACU|0í[ÁvZ»í“@lÃd¬EÑÞ¾v¤ˆáŸ¦•†ªp› ‚ûÓv@Á—_¶ bËfBô!v³A}Hª#†–¸6êÛ‚v² uû¥†Dö †võö¤l5®Ý”;öð‚;4 ßÜ °Á‚ ÆÂ§bá Ž¾˜ uJŇtÛaL 3°–J]™`ÞI€Ùø0z ƒC•%™d^ØD5U$L 0ÎÌÀðÝÙ²¸Dnc &jÛÜ0ßo ñû@ÁÃ#²°Q ’ÅAÖ[®½Û#!ÐGY¬~ d˜ ØXƒ!—°9Ú°ÙÂWi°Þ›Á IÈߨA` ÙÙXÁ‡‚ÑÖâƒaÚÛhØ4Ö¿h‘€\0`‚‹;¬ô@¯gÆ?o1«ì‰†¾ Ã;Øe;Îà ý(Þ»;+u Ø$dX =^ˆh0@„0ðDn©¢›PÁßxA × Ê„DpîÁâa†6 r¹P¿mÒ)vv 5Ài{uƒ}B²‚íʰA)\(Õ°`ïô¬ïÁ©·á‡²©î">M†´^­‡¬6ÂI!¤!íê 5£ fläÜ“DÚ lë† ÷Â!¦¸ =†Eq"vˆÙÓ °‚Úi†Mçz®vÃHŽ‚½<0úD4oX2mÒö ]4Ãw·i(ƒjÿ•$G ÂDÚyÚ¨ðdÙÁS­†ö݆û«ÅøR °–AØ|2Ý,¾›o¾%;ÄØ:ðÃêEÙ†K‚©¹¯Ð0ô›lîÃZ¾Ö°oÇCTÙÚ!”Üi„míé$v.ýýCï]mjn(ÄX?o,ì¬ ¤¼0þ™ ³hhn`­¶Ú ʰN“vÁþ@š [ ÞÞ!”ìF¼íÃú°@š ¨ßBrl6ƒ¦í£ / ÛE¹ j"Èj7˜®!ƒ~Ü£µ T_`ýè ·D0k+šE°Ã´›Ð,ìÈ6¿e8?òÝh2à Ø80`‚¶v¯„’m*Ä7¿‚ _QD$G Ò¸(m‘Ã? 7Ûl…¿káÂÜË…¿-ÔÃ)¡ "‡ a‡xJ›AÞ <&¾‚‚hŠƒI\5P\0ÚoA-È:â}‡™ƒÈgD¨AÃm°Kmàóµ€o[‚  È5.œ†ž¡pÃÛÐ*‡tíÑÚ¨×-ÊC@`‰(f‚\7·„ÿƒ‚o–â` 2!0B¸aï`/û Ál" —„CFÒÈ4H̃Yu°`êT›^ è†qWJ‚ò™ Ùk ¹6JAƒöÂJ­x0|‚¯-Õƒi ˆ.n$ذ{xAU°öHpKxA“!< — l;-Tpµ;ÎËŠ#Ö##Ðd¬5Wvò0RÓ¦ë2àð_Ëzpa„‚ `íá.@¹µÓÁ†™Ý=ùn„#"ÐË#£*¸K`Ó*d6E<0ð½à„…’ fð‚+¶è%U”lŸTÁÃ;%^!2X@\p‚HG¬ì,@ÊØe?„A`ˆk Øeò9¶UÓ°ÑA~W4į0Ë;- b>]ˆÌrC› å7WŽvH  Ñ>ÄW@”9 ­Š”á [ DD‡ã™Ì¹`KàÈ10Ñà‡òºÈ`AÌÚB‡ e`ŽÅŽìDH9r<(r—€¿ ¦Èö%vƒqr»$4‹R|ˆ‰ãÊ‘PK™T°Å•4v~WR 2  $Ûb$r(äœÐLr‡(s­”ªÇ š…ü® ƒAðÄDDDHG*Î9pw<æ«)Að¡Ê¨%¼dàÿ„®¶¨Kâ""""",ŽƒÕXa ƒ¯PD¸äRÈi)…wŠï Ù\L0vU™ †e û hºáØ/Á#±Â„Ì…¥Í$OnªC “°™ òÏ@ˆcyLÈ\$ ®MµV‚[öAåNáVÌŠƒ5—øUõ ò¸0_£ PÍdJÅà–ð¬/²½`ÃÐ2 ¡^ê¯25ëè ®ƒ Ô$ ø^Lšü®@0ù’Ø50‚ é%h<íhÿ„Aö‘¤W5 ! Vä Žg f -Ų,=#µ@;쯇¢¿XDfŽð„èåÑ„fˆñs#‚Ø+¤“ίü9[y\ᤓôˆˆ‡¢1òà¶=·³²×¿Â/EzÁ¨ ’ô""Uäp\Ž!®–íá?é±+— •Þ„H@É {o“Dp$ƒë2[Ø0 ÚFE™pÈMÛ}û̉BNWU˜_ĨG™³#†@«°õ;. åÑqP‚-•ÉàÈ5©®øˆÑ0‚mîwP* ¢%Ìtezƒ˜5B®¢$žaÈŽ‚*ÛçdÙ7ìœr¥l®€ÐF¡úS#ŠGzvüîa¶GCh>ð@!p™¨]µ•…ÏUoÎܹü$-‚ƒ øˆµ]·” U´¿Ì„„Êãƒ@0mdg´ƒôõEd[ ?Ì’6‚ƒAwúÊ m²Ïwá&Ì–CT©†mýa-5´A`ˆ6’ˆ¢ ðˆI™*†¹Y Ú×BË/HiŽRÚa¿ ›A@Íþª#äX `ës*š%!Vdç|Òõh"á´GMðBy³"mA¦I;ëÜ«@„†¶Ã@Áß@ŠpL3!0Û;¬þ’×’à¨GA„a&Ì€Tì 5ÿÕÄ B aú™…s%`¬ÈjH=ºKÊî ÀÎá0þ‚"I*ІžBÿéfKh¸*•0ÇYÚÐ;‚!µ°Pv;iRæJ ¬uè'2¬ÕCS?­aÿÚPiC[¥UP"RYGKyÚ&eè¸mr#ƒTƒŠ¾—%`Ú‡ÑØš°–„†ÝuÔÈPCoc•‚9‘ªÈ@4òJì‹„½k™ Ùôë;„ Œ’œŠ¤ß­SfDÃlL–aþgk`¬vD,4ûoê[ê•L«EÁTXÂvZ’UÛW¬j̈A uÅ÷„EpX"{ l ¾ê’YÚDKAYƒü$9Ú* †¨Û‘]ûý1"ø"kªHýú ;-A 0Ô‡·î•Tí/BCYu±—HšåB Žà5®›úÖ`„†«qÁþw £‚ ­²Dw@Ó» ÷R¸ªªSµ$GÐÃë°ˆ*meèaMþ‡["ˆ!!ª ¥Ö_,ìhP@ÈjL=ÒÞ•avj Ät`Ãüî PböûúT™[ Ú9@LuäÐ1‚ö4ûúIl“˜ZIAPއ2/ ¿D"æPH$v*{io-ÅWˆ¨ ‡LÔ¾VÃáUÙL5 ÷H}H(m—J¡¿Áè è#°P(¶ÒÞ’AIH+`Áðèªçg`‘Ú v—KÔ‰‚¯†A‚¤¶Jw’!µ/Gk ¦ÓéS)_Paè< XB25~Òô´ƒGÃ|d¨ÁV— a´ÒV×Ðf eTà À›BôB·®RX ŒŽ ‚Î:¯TAž'Áƒ ƒÈ˜r>™%paˆ­úÓA_z5 Úy‚¬ŽƒÖÕh!xd'D(í°K@­}jˆ9[/Lí,1 E).¢ Á&êê´ÖÀžz ð@ƒ- €®&ú¥D¶'V@”7‚"J\+þ•" ;(vdà¿V™8aT–«­Äká(Ùf\6K†`PÐ{¥ISÚ›­ƒN›Š& –ÿ¢ £•µ†­²‡t­ AV’p_µTBõˆaôÃ$ˆƒÎ‰°0W÷ªÕ¾ÌŽ&vè£X2:7‘ÁÈùppDŽ"ò ßé6“± cC¹•d+•`ÈùŽ â"""@ Ù@FIÁD ýIt’„¸1Â&ÅÁM) Ý—WÇ¥mpì Dd]2 izMÕ‡¢mX2„2VQ¸÷T’Ún@ˆ2IA ÿ¤Þ˜6ˆ,ŽCW:]$’Ý`2†Óä00îSŸ}&Ô@@¿û¡ƒ Ô9pw0„S"À!p@‚Vô•»¶CfÊt: ÕiÛÝ´›’@Ùþ”îÕ§¬·[4®’X™†£w¶­ A¿RÐ2ÞêëAZ†v‚ýRDÜ©%‚÷$u°A ¥âW[A7¶2 –ô¨[§àÒËp@d zËr„®¯¶cA` ÚÐíÖìG‚ ­!R}V×V[‰š]zz½¬ @zI&ÕÜ0°ˆ2H\-þßá»2`ˆ+Ž‚Õh´bµo eº|Ž â+Õ(·^vd°„ Am/-§[ÇDäX¯¤ÞßE¹®GA/ûYoàÊ!ØÐ«Ö®—廂‘ ¤µtÝà™{ê­¯ØD¤ }WþWYP‚ë« [é ‚½Vÿåu<H.«OÚåpPS2TûªVÕ7Á‚¿U ?°*}ª‚({þ zÆ›_r¸Ð*†VÕVë¼ FJa›~©Ú «*J4W&è/^؈ç}áT•èd)Õ‚ I%Eº^û%båz€ÜÉLwk‚ §%B ,æ,Èþ–ý®W˜Ð@¿UMïZB ÆqGT¡­ø" r$ uïÚX Œ•7ÿy’R#¹’˜5mi'rP›ð„ƒ,”Á^—mFצu/Uß\ @ˆ4³’iU7ßFJ@n+ê­ÿ„ANJdYÒíj¯µÌ‹HÉP¯Zºë`‚-éméÖ ]t›¿£! RA¡™G¯Ý»³#nt©´¿2t©[Ñ7®’ 4ÛK«}¹cðA!šÌ ê®»tù`pþ›_2 ™*OéL›]×Ð Az\^êëÌ  Ì”®Ú¤”?tªŒPD ä¨A¥˜.ÝtþÝvv”ˆf³ 5­ºío’˜4ô”¯R[·º­$’ -øÓûïª9Z†k1Wý½uO@ÞJ¢ é%Mä¯úìFJ`Óý|vþŽÊ@ ÉK@¾•)&ýº¬"òUÇëQ¿Öó±0( µK;´ß½yØ,™)†mëHººµðD$ªC-šF«÷Û¥ç`ÁdÉP3wÒ[zßà‘Xfô«ÛêÈé|‰*}jÛ݈®Î΀‚Úë½nÞˆ,IH­]³"µýgv`‚ú­Øéµà‚ƒS4i¾©Û\¹9¦h¢¤¿­~V€­+uK·ïè•Ö”^úܪ` ¿Óöþ‚Ì”Án’¦~¤ Ákf©Úý¾×„" LÒ^ºn÷¼”Y’i_Tž—ðˆ,ILƒS4ËI.þ¼ÐDC·êýºx @”È5ÕUûI©P FJa¥NÀÒ«}aƒCI%}ù¬_]¿ðD $¦ i{n«%ý'Ä2¬ò]$°ç`Š„d$¦CM¤¾» ji$éR»„d¦ ÷äJdšBŽ•+y\uA-ëWŠ/Z¶²©)œr "ÇZJÞ‚úïh [ZJù‰*ii7K‡°A£a¥Òêð ÒÒJ}%µA–ê•á„@ÞJJÒôÜ0@Œ‚" m;ºÕ¸0ˆ)IHBºªM Â ¿îƒ DÚzt—¢Ë—(pF@¡¥¾©ÓBCjJk–ã¥UEÕ°‚ƒKM^=Px`) ‚Ú_‚A¶J‚ô¶Ða×’¨[IR°ƒ’ iß÷ ‚!«"B m1öÐ0@Œ•JéRM„A)žõJÁ$ ­S¦‘Pi^»lÈÉCZ`Ì…ƒT·[I{e 4Aô’n( YFE¡¦?ÿl ŒŠÃSeÕU6ކˆ5µ#VTa2,›ª«aÌD6ú­% tµlÙ YrA­©Sé$è* ×"€[­[0 ®©+¥†ÚÈi‚!¤ÔWu¥a†FBA«ÕB¶ª`ˆiHTô¬"a`Â" MAMRœ%°ÂÈL4íÖ“id5FCA©ýl T3° k i$t•´ Wè ›-°‚†“QO¥ 6‚ÊÀi F@a©×';RH† ì„  zA+J™ }ø‚.–‚m-‡ÈÀ5—Wè, ³³PÕ;5 A oªé*M ©ƒ@;èM‚TDš³záX@”0Âd 4½$ : ƒh(@—]°‚PÙ*°D4Úµz‚ °• #!«n©&ÒÃ` ºáÙÚ¨f(0a†£U[ôn@¹%†‚2#DÚ WJa-ƒ ]pA& ƒ@ˆi5E›Õ!m,‘§ê‚!¨D ¶CnÁU ab ­­k†‘ÃWÖM„@¹¢ "mUWð“¥°‚ ÔÕZµT„­„eá§õºp$ÂØ5Ò ‚ÒÚ„a% @·I¬ Jv$ Àˆ5²¡#úM¤ìÀ™J‚ެ$vàçeÀö!ú¤- ‚`‘Ù˜jí* Â&w8@ˆj5†:á+ &v8 ¥¦õ@‹§L¥áœ ½PQmd” €]T+$A¡Ù)˃!ðÕ }BL$ˆ„H  ^°AÁ$ ˜$ŽÕCZô’ Ð(M€¨‚\ M¥†É¶] Þ©aJ´†¨åCQ¬¥‚L0‚Iˆ„! Jý$á*Û%@zP‚p‚Ù D G`˜D4ÚË6¸AZK!šà B Þ’Ú d3ŽThT_ “a%}@®’„¢ `‚ì¤5}PA6 Ø`ì@[\ °ZAõh#¾ ¼$ 6¾½a+ á; ?ÐA8AŽt‘ØØk]%A6‚&`Ú¡†˜å5Ô_H&ÂV•BCÕAl*H¸k‹ANɆ¥º • ˆ* Ç=mP@uÂM„ˆ¸k i-i ‰†¡Z¢[&´´2:"!¦8BÃ8:Ø4G MøIˆ¢30b4"’$šáZI M$2Í ‚ ê 9:. E.h$wXkn°‚ˆÌ ´†£]eÖE”É2„Ù­ ‚¥Èo w kKu´ß¤È,l„Â@Ôl>AH)m>Bíáþ&AQ A Gg [¤¡ÈkmB ‘߆¶Ö‚ kÙ5„"­:Òd36aRGp ŸH ¿ ˆk66¸A8J‚ìplô© %‰˜kõ @ƒ .‚D5wÐH0p´+z„i Ú¤E(5úé ´ ^ @í+A®G]T$ZÊ@bµ!½P A†’@PlþL5 f¦’IJ—U Š 6mpA$Šq ’H[Ô$8a®~BÄ "íƒM%A²Ò#¤¡Èi¶m¾l4H4¶g®,â”àÐXA Öô’X˜BÚ ’"È [ð–oØiaBA­³[Ò„5†CÁ¤¨ Amp‚-d¬"‡œ5ÂDP5ýRAo~gˆARH†£d›é A%PñðVX ˆØkɹš×Òá-‚`ýQºT‹Y)¦/¶!ƒ ’†½¿2Ð p½Í Ã¬$#³E´¨ ¡gÐ6– ÚXA6¥Ð„Pî‹¡Ã!–„©!ªÙ-‡Jva+ ÙXƒiPHƒÉ7 M¥@Ð* #hu á%Á¶,= ÐöGB‚l$¡A×l’°×A8‡0‹â VA†õ!6±Á­f ,PHM§Á¥ C_Ãð@‹\ÂQvª Ú¨Aˆk3@D5›\Ýþ°‘k©a¥²$¡º¤CP’ÛôAƒI A,]•ƒÒ.ÁÖ-‚BJRAøu„­a†ª‚Z†ë\0þº†P UØ5Ð]Xj ž¡éB ÁxmR@¸aÖ\0zAÛ]JÔì4ª :ÉP4]‡èKB-*.UK°}@h»duJ— ZÐ@½ÖE“TF×-Ã.”$#ÛJ\0íAà iØ~‚ì4”Un”àÁô¸a®vÕRì: A,2 OT †/ wÂOAT7„h®4ÈàÔ5 ƒ/ÝhwbCŽB9 íÕª±!|¬)¸à®‰ q̸°]ˆ09+2ã…â$‡0瑅؉ Žh(Ì­š…ÑN"CDsYèRvE.'Ál óä¨b"$v!)îY„‰Ó†²¬!L,0B¡a……†“ j Ž"Ë>¨ÆG28ƒDA¥¡‘Ñ#¢;#ŠGDp[(¨ˆˆŸBO˜F8-†€Èx)ÏeaÜ舉'›2á’™(EÑÌ› .dJ†""P#ÀÁ2b"yDs#†@eDD뛎‚ÄD†àÄN¨Ž®"Aäpm‰!—Dr>,DJ R¢èe¤(†9`UG™(ÿÈj£ÿùlZ >‘GþS`ª96ZE´,¢?ü¶ ÿ–³¨ÿ-¡%™.£ >Ð £ËIMÊDS$ª"2ÁHìiD|²)¨Z-¤µ-mPÇ–¨Å›òŒ´Æ”þM¨ˆ U^âñäÚ„pƒ#‚Õ†rì„Ñ‘ÙØäWÄGMn@~DDxº#Y%¬Àr2ŽÉ"¨%qÉX`©¢àAdXŠq‘$]‘ =>@M.ŽÂ£è·Kˆñ’29ãèê pPLXLí„Bn6DQ0hC  Â„0‚½È Ú$… ‹å'If6ÖŠ †Èšˆˆhh4 ;"ÀÑj4ÓM;L'ü! 4!¢Š‚@`‘€`a0Aªjš§ SN 'kk„Öîœ4îаB *iÚi k SAÚ¦ ¿¦šü±qÜ4vƒÐh=íSáðÓ ;0Ÿ ïZîA„ítÓ ¦oûÓÖï ¯þŸ½5Aÿëam?û»°á5¾ý~å²W•Ϙ®ÂwkééÕþµª§jŽ—ïÕ,‘—O&àÑf'ETî¼JC9b¤ª" ’.aA"­û½ô×_úo¾Óíÿ×Åx“d#²!2ìÍÈÄJ|‘È’àA¸î¨ŽˆØ¤4DHR aÙ¨°ƒM 0ÙVÿÕ%ï}:»TïM{ºÒ¥–r28É<ŽË£æKˆDŒˆ Ò@e¡3"!„,!h0…„즜4Ða­ ÓýBëßP¸_Ý÷!œëítADÿrËVF‘$8Áƒ@Á`ˆf„ kÜÃLŠ š 0M?O´­õV­'W††ÁÍAsÂÚ¢~ˆ7¥5¿¿ÏZ_“c£´g|•"² a”0ƒMVÓMwÕP0©÷i¦—wÁR|†RªD3Ù†pdhAp"Ý¡ ¡ú ‰²ø ÚC÷zwåqƒ#ä­C#r8¥T2ÈÐ@A‘ðƒ ݦ«iÚ}Þa>Ó]mÓ¾Aw+H¬ƒìÔ†cá àÔ) OÂÝð@Ýè ðºþ’îW 4APhZ!¦U[áðîÉ„ƒ½5ûðŸhŽ~‚r¬†ŠúD6!B»anõºêÞm~Út Þ0ƒA„Õ4ôûÖï´Õ´ð˜]T®CF¯ëM׌ôéé+ÝûA7zM »×¯º &·jš…[¿]÷z}÷zú÷­:jî½ßnÖ›¾ƒÿÕ~w…í<&éÿué ûÓûõW¦ïõIkÿßÒ¦á%ú×ðƒ»oTõïÿmtï ¯ß­ZOÜ.ÿ¯÷ô÷¥­öÿ[tÓê“]i½ªo»Öê×þ×á7§º\?ßMnÖ¯Jžºý->ÿ¯÷½uz§Úßût÷þ—_÷kî·½Ú½}ýpͦßé«J—µ§!˜ë»Nš_~ˆô–“w­ô©^½¯íR{ëß½Òâ a?ýa,+¹ ÑÔ+.]ß ¡Î;ù grô[wòÿ··§¿wòÂPË­ï«¿o[¾Ýd4‚i§Ô+In”¤¢o:ƒq`†qò Q2²¬ã½`„à7½èai~ˆ1¼½=ðàôº†_¿²9A…‰7*¿ÿ}{÷×ï»áH«ˆ(ënˆ€" '¡¡ö¨;|"03¤;ß]è†È)`†ÁÊHêLHµ¿ˆqÄ?´Õäúüƒ¿×‡Ó{ДAq|‚Š:@¤3Ô»Úªn­ý·A…íö‚í[^$ÕŒ¹Ǥˆeàíûïµþ¯î¾ƒzýôï\Ñ\†q´öû•kñÛïþžžïêßï‡tüƒAm;û«ÿ{¦ÿ¿ÛÿnéßTœ*‚ý¥ýµêPîúm,ƒ]úI)iÙ‡wi6ï· ï­íV»×ÿ¿ôÞˆ7§ÿ@´žÿÿ}kz‡Ôë…ß­õ†×zú(R;D0:ý½ÿö×êü¬4 ú×éoþŸ¸zB÷Õ¤ýý`˜ü7ö“÷ôÃû…úÓßx}_õ{¿@ïý¥¥ÿx"Ÿ{ëßïÿþ‡°ÿïÿý*÷öŸû[ÿÛ_Ûé]ÿþ÷ûÿ·ôÝé]zoêýn¿ÿ]»ÿÔzÿm^¿xþÿAï½RºOîìUû´´ýÕ{úÓýÝrBé¿ßcÞ«÷¿Øû¿ßn¤³½=ýõðÌw{!”0r õ]ﮟ¿]s! öã¯Ö»½WÚ^ëúM~ÿ …ëß÷|4¢E©üƒF¸{ßßß÷ÿ§ûZßíÓ!”Ÿ]¿ÿ½ûMôžør &”†Á̧ƒaõu§]ôÿçõßÚJ¿§­øTˆ0b¤]oÝmkºßOêáìqÊU@üH ›¿·þÿ]Þ·ü‚ã¿ÿר(V]o ]NˆhÎ õ\ G^5Oûw¿ýi¥¾žø“ !ß­5úoïÞŸúm?ûýÑ ã–:! ŽäZp„wxOB«¿ißïï·ÿáêýÀþïþÞÓóøoý{ûÆÇol‚ Ãõÿöß»i_Ûíþ½»µé´¯÷ÿý ý†žãþÃýI_­:õþªþ»ëýõõ×í/þƒ¥¯zµí§c÷û]ý_~ßµúéí/ºnÿÛÿÖÞßÛë÷ý!‡Oÿ­úýª Gw¯µº§ûô·íwa¥~“ðÿÿ À쎿ßýX÷¥Ò§_ÝþïoÞ}´·~þ×ûéí´©ÛVÿ~ßÿt×Òúë}kuÿö¿ûkêŸmwõm¦÷È.;o^Ø[nÁaÞï·ß÷¦=ûö릷Úmþî¿§û§á‚(u½÷÷nýÓ{…÷†»¶aßoÃïöt_Õ}¿Nÿ×­v–ú·ûíû÷ú°í‡i¿Ó|3ˆ[ìK«1Ÿ (F‡þÙÒÛ_õ»é§ÖûìBî·ý«ÿúö ’ßîÈéÞG÷ ð݈¦.C*¾öįÅwJ£ä6X^CC”肇R$®×k·«¿ûì8÷¿ŒˆNÈ7¡PN×PÝ´C(bßcÝîúöÛ†+ûòÄ;ÂS\ ÷ ¸Ó…ÿº[½_î­ëñÛÁé²wÈs×{i×r ¥ö·§ƒíÝøa.¿Ègr‡1!Ì^žõ×Tý¯P×þÞþݪä2Õ{ˆl™#ˆ>ûÛaôÖ×»Þ¯¿ÿxB5ýûíßkÖÚïjßïßÖÖÔ¯{výïÂý§vŸ÷ßþ®õ­ýïÕú_v–í­ÿ[wk×wÈ0!» »®¶·a?M9ä—¯n·®Û¦¿wþÓ¶»v¶ßmì7‡«V÷ÂvÓ~Þýµ­Ý¯iû¼]ö½®ý/¾}oÿ…_°–턘i‘ ߃íyC­ïA{½¾¾ß]mnÐkz|=õÿû¾ýÝ¥O°×Ø0² õ:ô÷CvÚе÷Xoßß$~ÛÕ;µ´Âw§|ë°×zí‡Ã÷{¾ÂûÃ3A-áŸÂ²8㇠ r«ï¶|#ÅõO_¿];Oÿ]mn nímt½-ïVí»ßäÃn?­ˆýˆ…lC÷âÿaÖÖé8kÿÅßá4 œ0A¦º᫯aU½n  ‚GÁÐy ¡‚·ëztëÕúÃ]ÿß«ü¡í2›½4&š ¦š¦ƒ ê°×÷Ùá–CløY ´÷ä3ÛhÕ}¾îðw¾ûínû¸k}Úi¡j!ÊÙÓ ˜pA‚h0ƒVA‚  dÒÂì2(øzv_àØät½ÁíÃö¶·kÚÝßÒ OOT T 4Âj¡SLƒudcžI@‰\ÂTïÙ ‰l~»Èl[ñ!˜ªï~Ý×¶Õí»ÿ·Ëp@nÓM5M4/! `A Âh *'ˆ•툋l&b·h I¼WÝ{Ý~ÕO_ïOO†Nƒ&:d á0L h&@Æð¡Á3Žw)ÉSRqwZÞÛØ9å=á½ÿ}õµµ‹†Ÿ§|?å¹*(†T9NSX–#ß{ä/Ü5ôýWMn?þÖøˆˆ‹ijûé?Ãû~íõ¾×Tïœ[îØ}û[úBÛïïêü.„î&·¬>õ÷ß}ß­Þ÷ë m8zðí¶»¨k{¯µïû¼-Ü0M4&šjŸ l†wJéZÝÕ'kûOïÕ5†A ÁCejša†™Ç û ëðjš¦žši¦˜A Âˆ `ÅJ* ºÐ ÈqÉ0„"EGN@ñŸ´Ó]S‡hkiª¦˜&@¾èPá†qÉHÔ!Çz†ÖÓM0¡A0 Ô2B‡(P^™á„Ði¦ š ŽˆñØf]¸ŽŒgVõ)š.éêÂi¦C@èAŸj krÔ ˜Pa0D]h»#¡èDavØ­bYœ¯WúWáÚ´ñ dI¨þ@TÉxü€úâª<°…ùj£ÿÊâj<€ûu5cE@}¨G20ˆ-Xa >ÈMŽE|DpDÖääDG‹¢5‘òZÌ!(ì’*‚WL•† š.†Eˆ§EÙЃÓäÐ2èì*>‹t¸##‘>Ž `—Àe„ÎÐ(D!aãa„E„0š hC kÜ€ BHP˜±NRq$–aȱcm`H¢Hl‰¨ˆ†¦ƒ@Ó², ¡M4Ó´ÂÂa£B!˜¨!‘¡‘ÑTù¦©ªpÕ4ì Âv¶¸MnéÃNí , ¦¦š°Õ4ª`«úi¯ËÃA§h=ƒÐ>Õ> < Ó°ƒ úõ®á4N×M0šaVÿ½=nðšÿéûÓTþ¶Óÿ»» Þ[ï×î[%yØù\ùŠì'v¾ž_ëZªv¡Hé~ýRÉtòn btUAëÁä¤0 ã–*J¢ Ù"æ*ß»ßMuÿ¦ûí>Ðÿý|W‰6B;!â.ÌÑ1ŒD¡Èùˆù.ŽêˆèŠAAtD… b š‹4Ð`™ •a?ýR^÷Ó«µNô×»­*Qyg##Œ“Èìº>d¸„HÈ€Í$Z#0""BƒXNÁ0XiÃMjÚ ?Ô.½õ …ýßrξ×DO÷,µdiÁpBCŒh4 a†h@ѽÌ4È¢  ÓÓôûAúßUjÒuxaHlÑä0A|)ݪ!°wèƒzP#[ûù õ¥ù6:;Fq—ÉR+ ¹A4Õm4Ðwq U Ÿvšiw|'Èe*¤C=˜gAF„!Ü*ʪ/‚ ¤?w ‡~W2>JÑ20#ŠUC,0Új¶§Ýáí5ÖÝ;är°€:È>ÍHf>Þ BÄü! ß Þ‚ ¯é.årA… á‚a5U¾ì˜H;Ó_¿ öˆçè!*Èh¡O¤Cb+¶ï[®¡íá×í§@½á4MSOO½nûM[O …×õJä4jþ´Ð! pˆÏNž’½ß´w¤Ú ½zû Âkv©¨U»õÐw§ßw¯ AïzÐC †®ëÝöíi»è?ðýWáx^ÓÂnŸ÷^š½?¿UznÿT–¿÷ýý'ún_­;¶õO^ÿö×NðšýúÕ¤÷ýÂáoúÿOzZßoõ·M>©5Ö›Ú¦û½n­í~wú{¥ÃýôÖíjô©ë¯ÒÓéßúÿ{×Wª}§ýÿ·Oéuÿv¾ë{Ý«×ß× Øúmþš´©{ZrŽ»´áé¥÷èIi7zßJ•ëÚðþÕ'¾½ûÝ. ÖÿÖ»ÍB¹åÝò ã¿Ùw!ŸE·! ?û{z{÷!¡\% ºÞú»öõ»íÖCH&š}B´‘éJ@Ê&ó¨7ˆg Àå!‹*Î;ÖN{Ð!—èƒËÓßK¨eûû#”X“r«ÿ÷׿}~û¾€:°H‚ް†èˆ*zj·Â#:C½õ×þˆl‚–l¤Ž¡¤Ä‹[ø‡CûM^Aqÿ¯È;ýx}7¹ DÈ(¡C¤ C=K½ª¡èúßÐA»tx^ßh.ÕµâMPHË\zH†P^ß¾û_êþëè7¯ßNùÍÈgIo¹V¿¾ÿééîþ­þøwOÈ4Ó¿º¿÷ºoûý¿öîõI¨/ÚQßÛ^¥ï¦ÒÈ5ߤ‘–Hwv“nûrú×þÕk½ûÿMèƒzô Iïÿ÷Ö°÷¨}Gþ°ˆQ§ý÷úßXmw¯¢… ã´C¯Ûßÿm~¯ÁÃB­~–ÿéû‡¤/}ZOßÖÃi?L?¸_­1M÷‡ÕÿW·ûôÿÚZ_÷‚)÷¾½þÿÿáwûþÿÿÒ¯iÿµ¿ýµý¾•ßÿï¿ûMޕצþ¡_ÖëÿõÛ¿ýG¯öÕë÷ïôûÕ+¤þîÅP?»KOÝW¿­?Ý×$.›ýö=ê¿{ý»ýöê@‹8ûÓßß_ Çw²C ѯUÞúéûõ×2¿aÞ:ýk»Õ}¥î¿¤×ïú^½ÿwÃJ$ZŸÈ4k‡½ýýÿúxß±µ­þ×ý2Iõ×ûÿûß´ßIï‡!¡ÊiHlÊx6WWúußOü:]ý¤«úzß…Hƒ*EÖýÖÖ·û­ôþ®È¥Q$ÄŠ »ûïùÝëÈ.;ÿý}‚…eÐ&òÔè†ÌàŸYÀ°DuãTÿ·{ÿÖš[éï‰0°rðêÓ_¦þýé÷ÿ¦Óÿ¿ÝÎ9c©îA…§Gw„ô*»ö—ýþþûþ¡ÿÙ îÿá­í0ÿ1ÿ†ÿ׿¹ lpVðVÈ Ü?_ÿmû¶•ý¾ßëÛ»^›JÿÿÐÀÿØiî?ì?×ô•úÓ¯_áú¯ë¾·ÿß_]~Òÿè0úZ÷«^Ø×úv?µßÕ÷íû_®žÒû¦ïý¿ýmíý¾¿×òtÿú߯ڢw÷zû[ª¿K~×vWé?ÿò ÈëýÿÕz]*uýßîöýáÛKwïíwÿ¾žÛJµo÷íÿ÷A}/®·Ö·_ÿkÿ¶¾©ö×VÚaÿ|‚ã¶õám…¶ìîû}ÿzcß¿n·úk}¦ßîëúº~"‡[ßvïÝ7¸_xk»a&öü>ÿgEýWÛôïýz×io«¾ß¿qÿ«Øv›ý7Ã8¾Á„º³ðQ ¢„hí-µÿ[¾š}o¾ÁT.ëÚ¿÷ÿ¯`É -þ쎗÷ýáÄpÏ}ØŠbä2«ïlAúüWtª>C`å…ä49@þˆ(pU BJív»z·ûÿ¾Ã{øÈ„ìƒzèu ÛD2†-ö=Þï¯m¸aR¿¿ \C¹ %9À¯r 8_û¥»ÕþêÞ¿¼›!°‡qw=w¹w Ѫ_kzx>Ý߆ëü†w(s\Åéá]uOÚõ íïíÚ®C-W±h†ÁÉ’8ƒï½¶Mm{½êûñ_÷„#_ß¾Ýö½m®ö­þýýmmAêñ·oÞü/Úwiÿ}ÿêïZßÞý_¥÷inÚßõ·v½w|ƒ°ÞéªûºëkvôÓžIzöëzíºaû÷í;k·kmöÞÃxzµo|'m7íïÛZÝÚöŸ»ÅßkÚïÒûçÖÿøUû nØI†™½ø>×”:Þô»ÛëíõÖÖí·§Ãß_ÿ»á¨ÿÝÚTû }ƒ ßS¡Opd7m­ _u†ýýòGí½S»[L'zwÁÞ» w®Ø|?w»ì/¼34Þü+ cŽ8r *¾ûgÂ<_TõûõÓ´ÿõÖÖá ÖîÖ×KÒÞõnÛ½þAqÜ9ãúØØˆQÄ?~/ömn“†¿ü]þAð`©Ãk îºö[Öáò $wüÊ+~·§N½_¬0…ßýðj°ÿÊÓ!™»ÓA‚i a0šiªh0ž« }nd6Ï…ËO~C1=¹WÛîï{ï¾Öﻆ°wݦš¡2Ü­0™‡&ƒ0E`4 ÐhA ,.Ã!‚‡§eðN ŽA§KÜÜ?kkv½­Ýý Á4ôõ@Ñu@ÓL&ª4È7VF9ä”•Ì eAð!˜–È뼆ſrŠ®÷áíÝ{m^Ð{¿û|·í4ÓTÓBò &Ø"¡x‰^Јˆ¶Âav+y€´›Áµ}×½×íQÄõþôôø`”è2c¦B‚d o 8çrœå5'gpU­í¹ ƒ‘ŽSÞß÷ß[[X¸iúwÃþ[’¡"ˆeAC”å5‰b=÷¾Ar÷ýÃ_OÕtÖáÃÿíoˆˆˆ¶–¯¾‘Cü?·îß[íuNùží‡ßµ¿¤-¾þþ¯ÂéØNá‚kqÚÃï_}÷Ý÷úÝï~°ÖÓ‡¯Ðkkº†·ºðû^ÿ»ÂÝÃÓA‚i¦©ðÁ6Ègt®•­ÝRv°ï´þýSXa4 d6V©¦8aaIœp¿°¾¿©ªi馚i„ hŠœT¢¢ ­ ‡CB$PdtäIûM5Õ8v¦¶šªi‚d î…ˆg”Bw¨amm4Ó d A3$(r•áÙ‘þMšj  ÁaHè†eшèÁqÐeoR™¢îž¬&šd4„ö ¦°'-@Ði…EÑV‹²:„FmŠÖ%™Êøõ¥~«OÁF@TšäL”@ endstream endobj 40 0 obj 45 endobj 41 0 obj 57648 endobj 35 0 obj << /XObject << /Im12 34 0 R >> /ProcSet [ /PDF ] >> endobj 7 0 obj << /Type /Pages /Count 4 /Kids [5 0 R 16 0 R 26 0 R 36 0 R] >> endobj 42 0 obj << /Type /Catalog /Pages 7 0 R >> endobj 43 0 obj << /Producer (pdfTeX-1.40.3) /Creator (TeX) /CreationDate (D:20100419154306+02'00') /ModDate (D:20100419154306+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6) >> endobj xref 0 44 0000000001 65535 f 0000000002 00000 f 0000000012 00000 f 0000000277 00000 n 0000040545 00000 n 0000000165 00000 n 0000000015 00000 n 0000195071 00000 n 0000000626 00000 n 0000000843 00000 n 0000040504 00000 n 0000040523 00000 n 0000000013 00000 f 0000000022 00000 f 0000040878 00000 n 0000081460 00000 n 0000040763 00000 n 0000040610 00000 n 0000041233 00000 n 0000041451 00000 n 0000081419 00000 n 0000081438 00000 n 0000000023 00000 f 0000000032 00000 f 0000081793 00000 n 0000136140 00000 n 0000081678 00000 n 0000081527 00000 n 0000082148 00000 n 0000082366 00000 n 0000136099 00000 n 0000136118 00000 n 0000000033 00000 f 0000000000 00000 f 0000136476 00000 n 0000195003 00000 n 0000136361 00000 n 0000136207 00000 n 0000136826 00000 n 0000137044 00000 n 0000194962 00000 n 0000194981 00000 n 0000195149 00000 n 0000195199 00000 n trailer << /Size 44 /Root 42 0 R /Info 43 0 R /ID [<4A3080B10C54D3BD1FA4655ABE4E7C9C> <4A3080B10C54D3BD1FA4655ABE4E7C9C>] >> startxref 195470 %%EOF elk-2.3.22/PaxHeaders.22528/make.def0000644002504400250440000000005012337331332015004 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/make.def0000644002504400250440000000436212337331332015555 0ustar00dewhurstdewhurst00000000000000 #------------------------------------------------------------------------------- SRC_MPI = mpi_stub.f90 # To enable MPI parallelism the MPI version of the Fortran compiler must be # used. This is usually mpif90. Uncomment the following lines and run # 'make clean' followed by 'make'. #F90 = mpif90 #F77 = mpif90 #SRC_MPI = #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- SRC_libxc = libxcifc_stub.f90 # To enable Libxc first download and compile version 2.2.x of the library. Next # copy the files libxcf90.a and libxc.a to the elk/src directory. Then uncomment # the following lines and run 'make clean' followed by 'make'. #LIB_libxc = libxcf90.a libxc.a #SRC_libxc = libxc_funcs.f90 libxc.f90 libxcifc.f90 #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- SRC_FFT = zfftifc.f90 # To use a different FFT library, copy the relevant library or include files to # the elk/src directory (if required), uncomment the appropriate lines below and # run 'make clean' followed by 'make'. #SRC_FFT = zfftifc_fftw.f90 #LIB_FFT = libfftw3.a #SRC_FFT = mkl_dfti.f90 zfftifc_mkl.f90 #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # As an example, here is the make.inc file we use for our cluster. It uses MKL # LAPACK and BLAS, MKL FFTW and Libxc. The Fortran compiler is mpif90 which # enables MPI parallelism. All libraries are statically linked. # # MKLROOT = /cluster/intel/mkl # MAKE = make # F90 = mpif90 # F90_OPTS = -O3 -ip -openmp -I$(MKLROOT)/include # F77 = mpif90 # F77_OPTS = -O3 -ip -openmp # AR = ar # LIB_SYS = # LIB_LPK = -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a $(MKLROOT)/lib/intel64/libmkl_core.a $(MKLROOT)/lib/intel64/libmkl_intel_thread.a -Wl,--end-group -lpthread -lm -openmp -lfftw3_threads -lfftw3 # SRC_MPI = # LIB_libxc = libxcf90.a libxc.a # SRC_libxc = libxc_funcs.f90 libxc.f90 libxcifc.f90 # SRC_FFT = zfftifc_fftw.f90 # #------------------------------------------------------------------------------- elk-2.3.22/PaxHeaders.22528/examples0000644002504400250440000000005012337331331015147 xustar000000000000000020 atime=1400746708 20 ctime=1400746713 elk-2.3.22/examples/0000755002504400250440000000000012337331331015770 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/PaxHeaders.22528/Pu-ELNES0000644002504400250440000000005012337331326016403 xustar000000000000000020 atime=1400746708 20 ctime=1400746710 elk-2.3.22/examples/Pu-ELNES/0000755002504400250440000000000012337331326017224 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Pu-ELNES/PaxHeaders.22528/ELNES.OUT0000644002504400250440000000005012337331326017717 xustar000000000000000020 atime=1400746710 20 ctime=1400746710 elk-2.3.22/examples/Pu-ELNES/ELNES.OUT0000644002504400250440000002553412337331326020474 0ustar00dewhurstdewhurst00000000000000 28.00000000 0.000000000 28.01333333 0.000000000 28.02666667 0.000000000 28.04000000 0.000000000 28.05333333 0.000000000 28.06666667 0.000000000 28.08000000 0.000000000 28.09333333 0.000000000 28.10666667 0.000000000 28.12000000 0.000000000 28.13333333 0.000000000 28.14666667 0.000000000 28.16000000 0.000000000 28.17333333 0.000000000 28.18666667 0.000000000 28.20000000 0.000000000 28.21333333 0.000000000 28.22666667 0.000000000 28.24000000 0.000000000 28.25333333 0.000000000 28.26666667 0.000000000 28.28000000 0.000000000 28.29333333 0.000000000 28.30666667 0.000000000 28.32000000 0.000000000 28.33333333 0.000000000 28.34666667 0.000000000 28.36000000 0.000000000 28.37333333 0.000000000 28.38666667 0.000000000 28.40000000 0.000000000 28.41333333 0.000000000 28.42666667 0.000000000 28.44000000 0.000000000 28.45333333 0.2131671042E-14 28.46666667 0.3961102824E-10 28.48000000 0.4588435025E-08 28.49333333 0.2265681752E-06 28.50666667 0.2169472049E-05 28.52000000 0.1126680577E-04 28.53333333 0.3995849862E-04 28.54666667 0.1071946785E-03 28.56000000 0.2302654600E-03 28.57333333 0.4134527622E-03 28.58666667 0.6458027918E-03 28.60000000 0.9201485802E-03 28.61333333 0.1254370374E-02 28.62666667 0.1685103026E-02 28.64000000 0.2209073982E-02 28.65333333 0.2728952966E-02 28.66666667 0.3062836618E-02 28.68000000 0.3054362047E-02 28.69333333 0.2681629518E-02 28.70666667 0.2081435267E-02 28.72000000 0.1452138871E-02 28.73333333 0.9417868404E-03 28.74666667 0.5964752970E-03 28.76000000 0.3898836903E-03 28.77333333 0.2725974237E-03 28.78666667 0.2033404973E-03 28.80000000 0.1566482811E-03 28.81333333 0.1210045139E-03 28.82666667 0.9415034122E-04 28.84000000 0.7683676928E-04 28.85333333 0.6806226002E-04 28.86666667 0.6458737197E-04 28.88000000 0.6280969914E-04 28.89333333 0.6064227161E-04 28.90666667 0.5761517109E-04 28.92000000 0.5442329632E-04 28.93333333 0.5230938455E-04 28.94666667 0.5273047405E-04 28.96000000 0.5679198260E-04 28.97333333 0.6471620746E-04 28.98666667 0.7529574812E-04 29.00000000 0.8615268564E-04 29.01333333 0.9449179040E-04 29.02666667 0.9834823814E-04 29.04000000 0.9747880338E-04 29.05333333 0.9377254409E-04 29.06666667 0.9090475860E-04 29.08000000 0.9288816387E-04 29.09333333 0.1020238141E-03 29.10666667 0.1171827373E-03 29.12000000 0.1343290684E-03 29.13333333 0.1489513390E-03 29.14666667 0.1586536923E-03 29.16000000 0.1637565020E-03 29.17333333 0.1656172108E-03 29.18666667 0.1648460650E-03 29.20000000 0.1606625397E-03 29.21333333 0.1523073583E-03 29.22666667 0.1405073230E-03 29.24000000 0.1279809358E-03 29.25333333 0.1178486035E-03 29.26666667 0.1115731073E-03 29.28000000 0.1079746757E-03 29.29333333 0.1043058118E-03 29.30666667 0.9835076717E-04 29.32000000 0.9013683669E-04 29.33333333 0.8229641460E-04 29.34666667 0.7883311485E-04 29.36000000 0.8293825396E-04 29.37333333 0.9489673803E-04 29.38666667 0.1117992068E-03 29.40000000 0.1287711511E-03 29.41333333 0.1411925464E-03 29.42666667 0.1458290602E-03 29.44000000 0.1415087661E-03 29.45333333 0.1290230904E-03 29.46666667 0.1114603018E-03 29.48000000 0.9363352537E-04 29.49333333 0.8088286925E-04 29.50666667 0.7678842274E-04 29.52000000 0.8155378370E-04 29.53333333 0.9175507356E-04 29.54666667 0.1022906715E-03 29.56000000 0.1091271788E-03 29.57333333 0.1114390744E-03 29.58666667 0.1113159991E-03 29.60000000 0.1115922427E-03 29.61333333 0.1132229226E-03 29.62666667 0.1145941268E-03 29.64000000 0.1128808255E-03 29.65333333 0.1062826776E-03 29.66666667 0.9508033378E-04 29.68000000 0.8121276235E-04 29.69333333 0.6711661273E-04 29.70666667 0.5491432402E-04 29.72000000 0.4607196325E-04 29.73333333 0.4126802848E-04 29.74666667 0.4030310341E-04 29.76000000 0.4227432915E-04 29.77333333 0.4608915277E-04 29.78666667 0.5114297856E-04 29.80000000 0.5755573283E-04 29.81333333 0.6577496326E-04 29.82666667 0.7570168040E-04 29.84000000 0.8625363014E-04 29.85333333 0.9578374138E-04 29.86666667 0.1031389295E-03 29.88000000 0.1084058579E-03 29.89333333 0.1126566020E-03 29.90666667 0.1170293465E-03 29.92000000 0.1217551507E-03 29.93333333 0.1260766450E-03 29.94666667 0.1287995165E-03 29.96000000 0.1293019013E-03 29.97333333 0.1279010934E-03 29.98666667 0.1256015777E-03 30.00000000 0.1231951918E-03 30.01333333 0.1207891777E-03 30.02666667 0.1178594945E-03 30.04000000 0.1138908721E-03 30.05333333 0.1087336091E-03 30.06666667 0.1026381624E-03 30.08000000 0.9591333883E-04 30.09333333 0.8878690519E-04 30.10666667 0.8146114130E-04 30.12000000 0.7432177553E-04 30.13333333 0.6793892558E-04 30.14666667 0.6278367165E-04 30.16000000 0.5889872323E-04 30.17333333 0.5586207941E-04 30.18666667 0.5320572133E-04 30.20000000 0.5085511805E-04 30.21333333 0.4913520669E-04 30.22666667 0.4872098845E-04 30.24000000 0.5121617194E-04 30.25333333 0.6075032978E-04 30.26666667 0.8436904695E-04 30.28000000 0.1297986021E-03 30.29333333 0.2011914765E-03 30.30666667 0.2968778647E-03 30.32000000 0.4115604076E-03 30.33333333 0.5395149198E-03 30.34666667 0.6744797205E-03 30.36000000 0.8039759373E-03 30.37333333 0.9056070963E-03 30.38666667 0.9515729162E-03 30.40000000 0.9227626465E-03 30.41333333 0.8221749873E-03 30.42666667 0.6764091555E-03 30.44000000 0.5227274579E-03 30.45333333 0.3912180980E-03 30.46666667 0.2950131697E-03 30.48000000 0.2327657520E-03 30.49333333 0.1969780804E-03 30.50666667 0.1800258770E-03 30.52000000 0.1752343667E-03 30.53333333 0.1761998793E-03 30.54666667 0.1772385636E-03 30.56000000 0.1746337396E-03 30.57333333 0.1674937199E-03 30.58666667 0.1569988481E-03 30.60000000 0.1451109503E-03 30.61333333 0.1332434854E-03 30.62666667 0.1220103430E-03 30.64000000 0.1116555535E-03 30.65333333 0.1027767848E-03 30.66666667 0.9653795949E-04 30.68000000 0.9430426584E-04 30.69333333 0.9673425013E-04 30.70666667 0.1029999865E-03 30.72000000 0.1106251090E-03 30.73333333 0.1165311053E-03 30.74666667 0.1185103911E-03 30.76000000 0.1163167036E-03 30.77333333 0.1115487134E-03 30.78666667 0.1068678714E-03 30.80000000 0.1050485554E-03 30.81333333 0.1080702852E-03 30.82666667 0.1163319444E-03 30.84000000 0.1282336155E-03 30.85333333 0.1407858806E-03 30.86666667 0.1507843251E-03 30.88000000 0.1560052549E-03 30.89333333 0.1556952427E-03 30.90666667 0.1505670215E-03 30.92000000 0.1422130069E-03 30.93333333 0.1322011314E-03 30.94666667 0.1212860058E-03 30.96000000 0.1096998868E-03 30.97333333 0.9800685132E-04 30.98666667 0.8756851016E-04 31.00000000 0.7961433958E-04 31.01333333 0.7413267924E-04 31.02666667 0.6968875478E-04 31.04000000 0.6459952931E-04 31.05333333 0.5834280703E-04 31.06666667 0.5213252309E-04 31.08000000 0.4824814347E-04 31.09333333 0.4863267566E-04 31.10666667 0.5362994904E-04 31.12000000 0.6190087380E-04 31.13333333 0.7108895406E-04 31.14666667 0.7891767266E-04 31.16000000 0.8342677404E-04 31.17333333 0.8328979348E-04 31.18666667 0.7797825910E-04 31.20000000 0.6864057048E-04 31.21333333 0.5815353829E-04 31.22666667 0.5041308676E-04 31.24000000 0.4832246517E-04 31.25333333 0.5228794093E-04 31.26666667 0.5981387488E-04 31.28000000 0.6713269773E-04 31.29333333 0.7128058923E-04 31.30666667 0.7180619389E-04 31.32000000 0.7038708709E-04 31.33333333 0.6936398997E-04 31.34666667 0.6971138683E-04 31.36000000 0.7057927642E-04 31.37333333 0.7003716947E-04 31.38666667 0.6671695493E-04 31.40000000 0.6056953011E-04 31.41333333 0.5271641384E-04 31.42666667 0.4463415922E-04 31.44000000 0.3761283088E-04 31.45333333 0.3253053401E-04 31.46666667 0.2981670196E-04 31.48000000 0.2940189151E-04 31.49333333 0.3080676707E-04 31.50666667 0.3342755973E-04 31.52000000 0.3693426931E-04 31.53333333 0.4137828838E-04 31.54666667 0.4691420866E-04 31.56000000 0.5322117061E-04 31.57333333 0.5927668308E-04 31.58666667 0.6371799186E-04 31.60000000 0.6573528572E-04 31.61333333 0.6570774725E-04 31.62666667 0.6507398867E-04 31.64000000 0.6544458848E-04 31.65333333 0.6758694831E-04 31.66666667 0.7107354085E-04 31.68000000 0.7465865273E-04 31.69333333 0.7715693167E-04 31.70666667 0.7797577786E-04 31.72000000 0.7723348270E-04 31.73333333 0.7535111199E-04 31.74666667 0.7277173076E-04 31.76000000 0.6977897247E-04 31.77333333 0.6661036694E-04 31.78666667 0.6345457979E-04 31.80000000 0.6044010699E-04 31.81333333 0.5751349198E-04 31.82666667 0.5446981312E-04 31.84000000 0.5109387386E-04 31.85333333 0.4738621796E-04 31.86666667 0.4366052275E-04 31.88000000 0.4037781062E-04 31.89333333 0.3784354327E-04 31.90666667 0.3601134764E-04 31.92000000 0.3464694875E-04 31.93333333 0.3366695964E-04 31.94666667 0.3333700631E-04 31.96000000 0.3407384178E-04 31.97333333 0.3602878995E-04 31.98666667 0.3880836703E-04 elk-2.3.22/examples/Pu-ELNES/PaxHeaders.22528/Pu+.in0000644002504400250440000000005012337331326017447 xustar000000000000000020 atime=1400746710 20 ctime=1400746710 elk-2.3.22/examples/Pu-ELNES/Pu+.in0000644002504400250440000000472312337331326020221 0ustar00dewhurstdewhurst00000000000000 'Pu' : spsymb 'plutonium' : spname -94.0000 : spzn 444784.7903 : spmass 0.206284E-06 2.2000 42.3450 800 : sprmin, rmt, sprmax, nrmt 27 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 T 4 1 1 2.00000 T 4 1 2 3.50000 T <---- 1/2 electron removed from next lowest state 4 2 2 4.00000 F 4 2 3 6.00000 F 4 3 3 6.00000 T 4 3 4 8.00000 T 5 0 1 2.00000 T 5 1 1 2.00000 T 5 1 2 4.00000 T 5 2 2 4.00000 T 5 2 3 6.00000 T 5 3 3 3.00000 F 5 3 4 3.00000 F 6 0 1 2.00000 F 6 1 1 2.00000 F 6 1 2 4.00000 F 7 0 1 2.50000 F <---- and added to highest state 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.7999 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.7412 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -30.0000 0 T elk-2.3.22/examples/Pu-ELNES/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331326017563 xustar000000000000000020 atime=1400746710 20 ctime=1400746710 elk-2.3.22/examples/Pu-ELNES/elk.in0000644002504400250440000000136612337331326020335 0ustar00dewhurstdewhurst00000000000000 ! Electron loss near-edge spectroscopy (ELNES) of spin-polarised fcc plutonium. ! Take note of the modified species file, 'Pu+.in', and the requirement of ! spin-orbit coupling. tasks 0 140 spinorb .true. ! maximum allowed energy for the initial state in the double differential ! cross-section formula emaxelnes -20.0 wplot 300 100 6 : nwplot, ngrkf, nswplot 28.0 32.0 : wplot nempty 20 ! q-vector in lattice coordinates vecql 0.0 0.0 0.25 avec 0.5 0.5 0.0 0.5 0.0 0.5 0.0 0.5 0.5 scale 9.13730 atoms 1 : nspecies 'Pu+.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.01 : atposl, bfcmt ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/MnO-str-factors0000644002504400250440000000005012337331326020111 xustar000000000000000020 atime=1400746710 20 ctime=1400746710 elk-2.3.22/examples/MnO-str-factors/0000755002504400250440000000000012337331326020732 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/MnO-str-factors/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331326021271 xustar000000000000000020 atime=1400746710 20 ctime=1400746711 elk-2.3.22/examples/MnO-str-factors/elk.in0000644002504400250440000000474312337331326022045 0ustar00dewhurstdewhurst00000000000000 ! MnO in AFMII structure with LDA, in analogy with NiO example. Unit cell from ! Transactions and Journal of the British Ceramic Society (1984) 83, 5-9. ! ! This example illustrates the calculation of X-ray and magnetic structure ! factors which are the Fourier transforms of the electron density and ! magnetisation, respectively. ! ! The structure factors are calculated for the reflections whose diffraction ! vectors have lengths up to hmaxvr (given in a.u.). The connection to the ! traditional sin(theta)/lambda ratio is ! ! max|H| = 4*pi*max(sin(theta)/lambda) [wavelength also in a.u.!] ! ! Additionally, the hkl indices of the reflections are transformed by matrix ! vhmat. ! ! Since the primitive magnetic unit cell (given by avec) is bigger than the ! conventional crystallographic unit cell (cubic with a = 8.397946), a ! non-integer hkl indices appears when reflections are reindexed to the latter ! with vhmat. They have zero intensity for X-ray structure factors but are of ! non-zero intensity in case of magnetic structure factors. ! ! Example by Alexey I. Baranov. tasks 0 195 196 spinpol .true. scale 8.397946 avec 1.0 0.5 0.5 0.5 1.0 0.5 0.5 0.5 1.0 atoms 2 : nspecies 'Mn.in' : spfname 2 : natoms; atpos, bfcmt below 0.0 0.0 0.0 0.0 0.0 -2.0 0.5 0.5 0.5 0.0 0.0 2.0 'O.in' : spfname 2 : natoms; atpos, bfcmt below 0.25 0.25 0.25 0.0 0.0 0.0 0.75 0.75 0.75 0.0 0.0 0.0 ! the large magnetic local field on Mn is halved at every iteration, this speeds ! up the convergence of magnetic calculations reducebf 0.5 ! fairly high number of empty states nempty 8 sppath '../../species/' ! this grid is too small for accurate magnetic moment ngridk 4 4 4 ! maximum |H| hmaxvr 6.0 ! H-vectors are reduced by the symmorphic crystal symmetries reduceh .true. ! uncomment the following lines to define an energy window for which only the ! orbitals within this window will contribute to the structure factors !wsfac ! -1.0 -0.1 ! H-vector transformation matrix for the conventional cell (cubic, a=8.397946) ! in the usual matrix row-column setting and applied directly as H' = MH but ! only for the output of the structure factor files. vhmat 1.5 -0.5 -0.5 -0.5 1.5 -0.5 -0.5 -0.5 1.5 ! For accurate results fine radial mesh (lradstp=1) should be used. lradstp 1 elk-2.3.22/examples/PaxHeaders.22528/Ni0000644002504400250440000000005012337331327015522 xustar000000000000000020 atime=1400746711 20 ctime=1400746711 elk-2.3.22/examples/Ni/0000755002504400250440000000000012337331327016343 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ni/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331327016702 xustar000000000000000020 atime=1400746711 20 ctime=1400746711 elk-2.3.22/examples/Ni/elk.in0000644002504400250440000000117412337331327017451 0ustar00dewhurstdewhurst00000000000000 ! Ferromagnetic nickel example. A small global magnetic field is required to ! break spin symmetry. Check the total spin moment of the cell in the file ! INFO.OUT. Note that large k-point grids are required for obtaining accurate ! moments. tasks 0 spinpol .true. bfieldc 0.0 0.0 0.01 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.33 sppath '../../species/' atoms 1 : nspecies 'Ni.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Ni-magnon0000644002504400250440000000005012337331327016777 xustar000000000000000020 atime=1400746711 20 ctime=1400746711 elk-2.3.22/examples/Ni-magnon/0000755002504400250440000000000012337331327017620 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ni-magnon/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331327020157 xustar000000000000000020 atime=1400746711 20 ctime=1400746712 elk-2.3.22/examples/Ni-magnon/elk.in0000644002504400250440000000334212337331327020725 0ustar00dewhurstdewhurst00000000000000 ! In this example, the frequency of a magnon at a particular q-vector in fcc Ni ! is determined. Computing a magnon frequency requires the energy difference, ! dE, between the ferromagnetic and a conical spin-spiral state with small polar ! angle theta. The following formula can then be used to compute the frequency: ! ! w(q) = (4/M) dE / sin^2(theta) ! ! where M is the total moment in the unit cell. See Q. Niu and L. Kleinman, ! Phys. Rev. Lett. 80, 2205 (1998). It is good practice to fix a q and then run ! two fixed spin direction calculations: one at theta=0, and the other at a ! finite theta (in this case 15 degrees). ! Note that the energy difference is very small (order of meV), and the ! calculation has to be very well converged in all parameters. As a result this ! example is best run on a multi-processor, and is still quite time-consuming. tasks 0 stype 1 taufsm 0.01 swidth 0.005 rgkmax 8.0 gmaxvr 14.0 lmaxapw 8 lmaxvr 8 ! tight convergence required epspot 1.d-9 epsengy 1.d-6 evaltol 1.d-14 ! use a fixed spin direction calculation fsmtype -1 ! use a polar angle of 15 degrees momfix 0.0 0.258819045 0.965925826 ! large global field in same direction as momfix bfieldc 0.0 0.258819045 0.965925826 spinsprl .true. ! spin-spiral q-vector in lattice coordinates vqlss 0.1 0.1 0.0 nempty 10 ! very fine k-point grid required for good convergence ngridk 20 20 20 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 ! experimental lattice parameter scale 3.325 sppath '../../species/' atoms 1 : nspecies 'Ni.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt elk-2.3.22/examples/PaxHeaders.22528/GaAs-NLO0000644002504400250440000000005012337331330016407 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/GaAs-NLO/0000755002504400250440000000000012337331330017230 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/GaAs-NLO/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017567 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/GaAs-NLO/elk.in0000644002504400250440000000176612337331330020345 0ustar00dewhurstdewhurst00000000000000 ! Susceptibility for non-linear optical second-harmonic generation in GaAs. The ! inverse lifetime is determined by swidth. Note that many k-points and empty ! states are required for good convergence. Various contributions to the ! susceptibility are also written to file. ! For details, see Physica Scripta T109, 128 (2004). tasks 0 120 125 nempty 8 scissor 0.031 swidth 0.005 ! components of the optical tensor optcomp 1 2 3 wplot 400 100 0 : nwplot, ngrkf, nswplot 0.0 0.3 : wplot mixtype 2 avec 5.3435 5.3435 0.0000 5.3435 0.0000 5.3435 0.0000 5.3435 5.3435 sppath '../../species/' atoms 2 : nspecies 'Ga.in' : spfname 1 : natoms 0.00 0.00 0.00 0.0 0.0 0.0 : atposl, bfcmt 'As.in' : spfname 1 : natoms 0.25 0.25 0.25 0.0 0.0 0.0 : atposl, bfcmt ngridk 12 12 12 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/graphene0000644002504400250440000000005012337331330016737 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/graphene/0000755002504400250440000000000012337331330017560 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/graphene/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020117 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/graphene/elk.in0000644002504400250440000000142112337331330020661 0ustar00dewhurstdewhurst00000000000000 ! Band structure of graphene. Observe the massless Dirac-like dispersion in the ! density of states. tasks 0 10 nempty 8 wplot 200 150 1 -0.5 0.5 plot1d 4 100 0.333333 0.333333 0.000000 0.000000 0.000000 0.000000 0.000000 0.500000 0.000000 0.333333 0.333333 0.000000 ! very high number of k-points required to resolve the linear dispersion ngridk 30 30 1 avec -0.5 0.866025403784 0.0000000 -1.0 0.000000000000 0.0000000 0.0 0.000000000000 3.2265697 scale 4.64890 sppath '../../species/' atoms 1 : nspecies 'C.in' : spfname 2 : natoms 0.0 0.0 0.0 0.333333333333 0.333333333333 0.0 elk-2.3.22/examples/PaxHeaders.22528/YBCO0000644002504400250440000000005012337331330015702 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/YBCO/0000755002504400250440000000000012337331330016523 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/YBCO/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017062 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/YBCO/elk.in0000644002504400250440000000240212337331330017624 0ustar00dewhurstdewhurst00000000000000 ! High T_c superconductor YBa2Cu3O7. Note that the code determines which atoms ! are equivalent, and lists them in EQATOMS.OUT. This example is quite ! time-consuming. tasks 0 ! small cut-off for testing purposes rgkmax 6.0 ! use Broyden mixing mixtype 3 avec 7.2246 0.0 0.0 0.0 7.3442 0.0 0.0 0.0 22.0733 sppath '../../species/' atoms 4 : nspecies 'Y.in' : spfname 1 : natoms 0.5 0.5 0.5 0.0 0.0 0.0 : atposl, bfcmt 'Ba.in' 2 : natoms 0.5 0.5 0.1843 0.0 0.0 0.0 : atposl, bfcmt 0.5 0.5 0.8157 0.0 0.0 0.0 'Cu.in' 3 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.0 0.0 0.3556 0.0 0.0 0.0 0.0 0.0 0.6444 0.0 0.0 0.0 'O.in' 7 : natoms 0.0 0.5 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.5 0.0 0.3773 0.0 0.0 0.0 0.5 0.0 0.6227 0.0 0.0 0.0 0.0 0.5 0.3789 0.0 0.0 0.0 0.0 0.5 0.6211 0.0 0.0 0.0 0.0 0.0 0.1584 0.0 0.0 0.0 0.0 0.0 0.8416 0.0 0.0 0.0 ngridk 2 2 1 vkloff 0.25 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/H2O-iterative0000644002504400250440000000005012337331330017530 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/H2O-iterative/0000755002504400250440000000000012337331330020351 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/H2O-iterative/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020710 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/H2O-iterative/elk.in0000644002504400250440000000166512337331330021464 0ustar00dewhurstdewhurst00000000000000 ! Water molecule in a box. This example uses iterative diagonalisation which may ! be used for fine-grained parallelism. ! Remember to set ! export OMP_NUM_THREADS=n ! export OMP_NESTED=true ! where n is the number of available processors. tasks 0 maxscl 30 lorbcnd .true. ! solve the first-variational eigenvalue equation iteratively tefvit .true. ! molecule calculation (atomic positions are in Cartesian coordinates) molecule .true. ! put molecule in a large box avec 6.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 6.0 rgkmax 6.0 gmaxvr 17.0 sppath '../../species/' ! atomic positions in Cartesian coordinates atoms 2 : nspecies 'O.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atpos, bfcmt 'H.in' 2 1.811 0.0 0.0 0.0 0.0 0.0 -0.451907959 1.753710409 0.0 0.0 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/Al-libxc0000644002504400250440000000005012337331330016601 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-libxc/0000755002504400250440000000000012337331330017422 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Al-libxc/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017761 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-libxc/elk.in0000644002504400250440000000164312337331330020531 0ustar00dewhurstdewhurst00000000000000 ! Test of libxc (http://www.tddft.org/programs/octopus/wiki/index.php/Libxc). ! The library must be downloaded and compiled separately. Follow the ! instructions in the Elk manual for installation of libxc. tasks 0 ! libxc is selected with xctype(1)=100. The remaining two numbers are the ! exchange and correlation functionals, respectively - in this case Slater ! exchange and Perdew-Wang correlation. Refer to the file ! 'elk/src/libxc_funcs.f90' for the complete list of functionals and ! associated numbers. xctype 100 1 13 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.8267 ! this is the relative path to the species files sppath '../../species/' atoms 1 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Fe-FSM-MT-FM0000644002504400250440000000005012337331330016741 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-FSM-MT-FM/0000755002504400250440000000000012337331330017562 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-FSM-MT-FM/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020121 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-FSM-MT-FM/elk.in0000644002504400250440000000124512337331330020667 0ustar00dewhurstdewhurst00000000000000 ! Ferromagnetic bcc iron example with fixed spin moment in muffin-tin. ! Run by Fredrik Bultmark, Francesco Cricchio, Lars Nordstrom. tasks 0 ! ferromagnetic local fixed spin moment calculation fsmtype 2 mommtfix 1 1 0.0 0.0 1.0 : ia, is, mommtfix lmaxapw 10 ! fairly large number of empty states required for magnetic cases nempty 8 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt sppath '../../species/' ngridk 6 6 6 elk-2.3.22/examples/PaxHeaders.22528/Fe-AFM0000644002504400250440000000005012337331330016101 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-AFM/0000755002504400250440000000000012337331330016722 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-AFM/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017261 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-AFM/elk.in0000644002504400250440000000116312337331330020026 0ustar00dewhurstdewhurst00000000000000 ! Antiferromagnetic fcc iron example tasks 0 spinpol .true. ! fairly large number of empty states required for magnetic cases nempty 8 avec 0.5 0.5 0.0 0.5 -0.5 0.0 0.0 0.0 1.0 scale 6.82 sppath '../../species/' ! note the magnetic fields on each atom atoms 1 : nspecies 'Fe.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.1 : atposl, bfcmt 0.5 0.5 0.5 0.0 0.0 -0.1 ! this k-point set is too small for calculation of accurate moments ngridk 2 2 2 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/C600000644002504400250440000000005012337331330015476 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/C60/0000755002504400250440000000000012337331330016317 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/C60/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330016656 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/C60/elk.in0000644002504400250440000001214712337331330017427 0ustar00dewhurstdewhurst00000000000000 ! C60 buckyball example. This example has high memory and time requirements and ! employs iterative diagonalisation. ! Remember to set ! export OMP_NUM_THREADS=n ! export OMP_NESTED=true ! where n is the number of available processors. tasks 0 ! use iterative diagonalisation for the first-variational step tefvit .true. ! molecule calculation molecule .true. ! use very small energy cut-off rgkmax 4.0 sppath '../../species/' ! use an fcc box to contain the molecule avec 0.5 0.5 0.0 0.5 0.0 0.5 0.0 0.5 0.5 scale 24.0 atoms 1 : nspecies 'C.in' : spfname 60 : natoms; atpos, bfcmt below 4.20790955 1.12423579 5.07240250 0.00000000 0.00000000 0.00000000 5.92255243 0.30577656 3.09053347 0.00000000 0.00000000 0.00000000 2.53625794 -0.58931105 6.15449739 0.00000000 0.00000000 0.00000000 5.89150423 -2.19125067 2.27598598 0.00000000 0.00000000 0.00000000 6.07911622 -2.76287388 -0.40300296 0.00000000 0.00000000 0.00000000 6.14208189 2.34350589 1.26288498 0.00000000 0.00000000 0.00000000 6.32168145 1.79658139 -1.30022597 0.00000000 0.00000000 0.00000000 6.28972619 -0.81331917 -2.15152863 0.00000000 0.00000000 0.00000000 -0.85451519 2.59699373 6.10424958 0.00000000 0.00000000 0.00000000 0.89249869 4.38777367 4.97351314 0.00000000 0.00000000 0.00000000 -0.05102260 0.16353689 6.68186323 0.00000000 0.00000000 0.00000000 3.36781297 3.66786366 4.46912637 0.00000000 0.00000000 0.00000000 4.56285678 4.42127851 2.11483015 0.00000000 0.00000000 0.00000000 -0.49930340 5.89307270 3.14654495 0.00000000 0.00000000 0.00000000 0.64416979 6.61402206 0.89416165 0.00000000 0.00000000 0.00000000 3.23137475 5.86189222 0.36707927 0.00000000 0.00000000 0.00000000 -4.04684820 -1.59965305 5.07597408 0.00000000 0.00000000 0.00000000 -4.88658574 0.94354019 4.47250898 0.00000000 0.00000000 0.00000000 -1.68274430 -1.98120762 6.15625484 0.00000000 0.00000000 0.00000000 -3.32578546 2.99557474 4.97542176 0.00000000 0.00000000 0.00000000 -3.10623709 5.03232141 3.14743312 0.00000000 0.00000000 0.00000000 -6.29775752 0.83554235 2.11927100 0.00000000 0.00000000 0.00000000 -6.08784676 2.78439786 0.37044299 0.00000000 0.00000000 0.00000000 -4.45682426 4.92933134 0.89618365 0.00000000 0.00000000 0.00000000 -0.95746747 -5.66581425 3.40868774 0.00000000 0.00000000 0.00000000 -3.42822750 -5.26727104 2.27991661 0.00000000 0.00000000 0.00000000 -0.10387824 -4.05947157 5.30402621 0.00000000 0.00000000 0.00000000 -4.93898784 -3.27912812 3.09521999 0.00000000 0.00000000 0.00000000 -6.32980727 -1.77424483 1.26783606 0.00000000 0.00000000 0.00000000 -3.23999190 -5.83991471 -0.39909123 0.00000000 0.00000000 0.00000000 -4.57094481 -4.40022696 -2.14742792 0.00000000 0.00000000 0.00000000 -6.15020772 -2.32243545 -1.29533158 0.00000000 0.00000000 0.00000000 4.14416909 -3.98220068 3.40634448 0.00000000 0.00000000 0.00000000 3.25204835 -5.66116553 1.42568487 0.00000000 0.00000000 0.00000000 2.50352789 -3.19913602 5.30279789 0.00000000 0.00000000 0.00000000 0.75764784 -6.48459473 1.42687540 0.00000000 0.00000000 0.00000000 -0.65282474 -6.59204455 -0.92630589 0.00000000 0.00000000 0.00000000 4.44820711 -4.90778847 -0.92840348 0.00000000 0.00000000 0.00000000 3.09860260 -5.01057066 -3.17986082 0.00000000 0.00000000 0.00000000 0.49168780 -5.87162431 -3.17872698 0.00000000 0.00000000 0.00000000 -4.21537397 -1.10412910 -5.10475461 0.00000000 0.00000000 0.00000000 -3.37499392 -3.64732234 -4.50151628 0.00000000 0.00000000 0.00000000 -0.89933950 -4.36660874 -5.00582745 0.00000000 0.00000000 0.00000000 -2.54410030 0.61009804 -6.18628259 0.00000000 0.00000000 0.00000000 -4.15359883 4.00310105 -3.43858320 0.00000000 0.00000000 0.00000000 -5.90029145 2.21167861 -2.30835699 0.00000000 0.00000000 0.00000000 -5.93067825 -0.28551870 -3.12307455 0.00000000 0.00000000 0.00000000 -2.51263637 3.22020647 -5.33473426 0.00000000 0.00000000 0.00000000 0.94767869 5.68830199 -3.44022726 0.00000000 0.00000000 0.00000000 -0.76728544 6.50657224 -1.45864170 0.00000000 0.00000000 0.00000000 -3.26164816 5.68270840 -1.45786691 0.00000000 0.00000000 0.00000000 0.09442961 4.08156247 -5.33543346 0.00000000 0.00000000 0.00000000 4.03843892 1.62287778 -5.10734353 0.00000000 0.00000000 0.00000000 4.93027621 3.30214499 -3.12685400 0.00000000 0.00000000 0.00000000 3.41902454 5.29011783 -2.31168290 0.00000000 0.00000000 0.00000000 1.67416495 2.00384654 -6.18737863 0.00000000 0.00000000 0.00000000 0.84756100 -2.57503512 -6.13588359 0.00000000 0.00000000 0.00000000 3.31858560 -2.97318149 -5.00728254 0.00000000 0.00000000 0.00000000 4.87893235 -0.92061781 -4.50446425 0.00000000 0.00000000 0.00000000 0.04346370 -0.14161607 -6.71310040 0.00000000 0.00000000 0.00000000 elk-2.3.22/examples/PaxHeaders.22528/Eu0000644002504400250440000000005012337331330015517 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Eu/0000755002504400250440000000000012337331330016340 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Eu/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330016677 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Eu/elk.in0000644002504400250440000000101212337331330017435 0ustar00dewhurstdewhurst00000000000000 ! Ferromagnetic bcc Eu example (thanks to Sandro Massidda for fixing a problem ! with the Eu.in species file). tasks 0 10 spinpol .true. spinorb .true. bfieldc 0.0 0.0 0.01 nempty 8 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 4.30385 sppath '../../species/' atoms 1 : nspecies 'Eu.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 8 8 8 elk-2.3.22/examples/PaxHeaders.22528/Pb0000644002504400250440000000005012337331330015507 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Pb/0000755002504400250440000000000012337331330016330 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Pb/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330016667 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Pb/elk.in0000644002504400250440000000122312337331330017431 0ustar00dewhurstdewhurst00000000000000 ! Band structure of lead with spin-orbit coupling. tasks 0 20 spinpol .true. spinorb .true. nempty 8 rgkmax 8.0 avec 0.0 0.5 0.5 0.5 0.0 0.5 0.5 0.5 0.0 scale 9.3541 sppath '../../species/' atoms 1 : nspecies 'Pb.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 8 8 8 plot1d 7 200 : nvp1d, npp1d 0.0 0.0 1.0 : vlvp1d 0.5 0.5 1.0 0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.5 0.25 -0.25 0.5 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/Fe-XMCD0000644002504400250440000000005012337331330016231 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-XMCD/0000755002504400250440000000000012337331330017052 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-XMCD/PaxHeaders.22528/Fe_lo.in0000644002504400250440000000005012337331330017662 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-XMCD/Fe_lo.in0000644002504400250440000000366012337331330020433 0ustar00dewhurstdewhurst00000000000000 'Fe_lo' : spsymb 'iron' : spname -26.0000 : spzn 101799.2074 : spmass 0.392232E-06 2.0000 35.6837 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 F 2 1 2 4.00000 F 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 4.00000 F 3 2 3 2.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -26.0000 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -3.6844 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.4317 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.5316 0 T elk-2.3.22/examples/Fe-XMCD/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017411 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-XMCD/elk.in0000644002504400250440000000264712337331330020166 0ustar00dewhurstdewhurst00000000000000 ! Soft x-ray absorption spectroscopy example for bcc Fe, including XAS, XMCD, ! and XMLD. Species file Fe_lo.in has an additional local orbital at the 2p ! energy. Spin-orbit coupling has to be included for 2p 1/2 - 2p 3/2 splitting. ! XAS, XMCD, and XMLD are computed via first order optical response. Fe is ! cubic, hence the following relations hold for B || z: ! ! XAS = 1/3 * Im[ 2*eps_xx + eps_zz ] = 1/3 * Tr(Im[eps]) ! XMCD = Im[ sigma_xy ] = -2*Re[ eps_xy ] ! XMLD = Im[ eps_xx - eps_zz ] ! ! Similarly, the real parts of the epsilon and sigma tensor are related to the ! Faraday effect. A much larger number of k-points is necessary for a well ! converged spectrum. ! Example by Markus Meinert. tasks 0 120 121 sppath './' wplot 400 200 0 25.0 26.5 ! compute the xx, xy, and zz components optcomp 1 1 1 2 3 3 spinpol .true. spinorb .true. ! use GGA xctype 20 ngridk 8 8 8 ! start with a large magnetic field and reduce at each iteration bfieldc 0.0 0.0 2.0 reducebf 0.8 ! large number of empty states necessary for "continuum" absorption nempty 20 ! a Lorentzian broadening is applied to the spectrum swidth 0.01 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 atoms 1 : nspecies 'Fe_lo.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt elk-2.3.22/examples/PaxHeaders.22528/Si-OEP0000644002504400250440000000005012337331330016142 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-OEP/0000755002504400250440000000000012337331330016763 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-OEP/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017322 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-OEP/elk.in0000644002504400250440000000225112337331330020066 0ustar00dewhurstdewhurst00000000000000 ! Optimised effective potential calculation of silicon. An iterative proceedure ! is used to find the optimised potential [Phys. Rev. Lett. 98, 196405 (2007)]. ! Note that the exact exchange energy is calculated only during the last ! self-consistent loop, which is the reason why the final total energy is ! different from those calculated in previous loops. tasks 0 20 ! exact exchange only (no correlation) xctype -1 ! large number of OEP iterations to converge the gap maxitoep 200 ! large number of empty states required nempty 15 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.25 0.5 0.625 ! These are the vertices to be joined for the band structure plot plot1d 7 200 : nvp1d, npp1d 0.0 0.0 1.0 : vlvp1d 0.5 0.5 1.0 0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.5 0.25 -0.25 0.5 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/HfSiO40000644002504400250440000000005012337331330016202 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/HfSiO4/0000755002504400250440000000000012337331330017023 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/HfSiO4/PaxHeaders.22528/spacegroup.in0000644002504400250440000000005012337331330020757 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/HfSiO4/spacegroup.in0000644002504400250440000000101412337331330021517 0ustar00dewhurstdewhurst00000000000000 'I41/amd:2' : hrmg 12.420224 12.420224 11.268814 : a, b, c 90.0 90.0 90.0 : ab, ac, bc 1 1 1 : ncell .true. : primcell 3 : nspecies 'Hf' 'Hf.in' : spsymb, spfname 1 : nwpos 0.0000 0.7500 0.1250 : wpos 'Si' 'Si.in' 1 0.0000 0.7500 0.6250 'O' 'O.in' 1 0.0000 0.0655 0.1948 elk-2.3.22/examples/HfSiO4/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017362 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/HfSiO4/elk.in0000644002504400250440000000454312337331330020134 0ustar00dewhurstdewhurst00000000000000 ! HfSiO4 generated with spacegroup data from Am. Mineral. 67, 804 (1982). tasks 0 ngridk 2 2 2 ! Atomic positions generated by spacegroup version 1.2.00 ! Hermann-Mauguin symbol : I41/amd:2 ! Hall symbol : -I 4bd 2 ! Schoenflies symbol : D4h^19 ! space group number : 141:2 ! lattice constants (a,b,c) : 12.42022400 12.42022400 11.26881400 ! angles in degrees (bc,ac,ab) : 90.00000000 90.00000000 90.00000000 ! number of conventional unit cells : 1 1 1 ! reduction to primitive cell : T ! Wyckoff positions : ! species : 1, Hf.in ! 0.000000000 0.7500000000 0.1250000000 ! species : 2, Si.in ! 0.000000000 0.7500000000 0.6250000000 ! species : 3, O.in ! 0.000000000 0.6550000000E-01 0.1948000000 avec 6.210112000 6.210112000 5.634407000 6.210112000 6.210112000 -5.634407000 6.210112000 -6.210112000 5.634407000 sppath '../../species/' atoms 3 : nspecies 'Hf.in' : spfname 2 : natoms; atposl, bfcmt below 0.87500000 0.87500000 0.25000000 0.00000000 0.00000000 0.00000000 0.12500000 0.12500000 0.75000000 0.00000000 0.00000000 0.00000000 'Si.in' : spfname 2 : natoms; atposl, bfcmt below 0.37500000 0.37500000 0.25000000 0.00000000 0.00000000 0.00000000 0.62500000 0.62500000 0.75000000 0.00000000 0.00000000 0.00000000 'O.in' : spfname 8 : natoms; atposl, bfcmt below 0.26030000 0.80520000 0.93450000 0.00000000 0.00000000 0.00000000 0.73970000 0.19480000 0.06550000 0.00000000 0.00000000 0.00000000 0.19480000 0.73970000 0.43450000 0.00000000 0.00000000 0.00000000 0.80520000 0.26030000 0.56550000 0.00000000 0.00000000 0.00000000 0.62930000 0.80520000 0.56550000 0.00000000 0.00000000 0.00000000 0.37070000 0.19480000 0.43450000 0.00000000 0.00000000 0.00000000 0.19480000 0.37070000 0.06550000 0.00000000 0.00000000 0.00000000 0.80520000 0.62930000 0.93450000 0.00000000 0.00000000 0.00000000 elk-2.3.22/examples/PaxHeaders.22528/CaO-BSE-core0000644002504400250440000000005012337331330017145 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/CaO-BSE-core/0000755002504400250440000000000012337331330017766 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/CaO-BSE-core/PaxHeaders.22528/Ca_lo.in0000644002504400250440000000005012337331330020567 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/CaO-BSE-core/Ca_lo.in0000644002504400250440000000357312337331330021343 0ustar00dewhurstdewhurst00000000000000 'Ca_lo' : spsymb 'calcium' : spname -20.0000 : spzn 73057.72467 : spmass 0.447214E-06 2.2000 40.2509 500 : sprmin, rmt, sprmax, nrmt 8 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 F 2 1 2 4.00000 F 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 7 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -12.300 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.9708 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.2735 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0.5000 0 T elk-2.3.22/examples/CaO-BSE-core/PaxHeaders.22528/O.in0000644002504400250440000000005012337331330017750 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/CaO-BSE-core/O.in0000644002504400250440000000222012337331330020510 0ustar00dewhurstdewhurst00000000000000 'O' : spsymb 'oxygen' : spname -8.00000 : spzn 29165.12202 : spmass 0.707107E-06 1.6000 22.7954 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 2.00000 F 2 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.1227 0 T elk-2.3.22/examples/CaO-BSE-core/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020325 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/CaO-BSE-core/elk.in0000644002504400250440000000532512337331330021076 0ustar00dewhurstdewhurst00000000000000 ! This example demonstrates the calculation of the Ca 2p 1/2 - 2p 3/2 (L2 / L3) ! x-ray absorption spectra in CaO. The Ca 2p states are treated as local ! orbitals in Ca_lo.in; additional local orbitals are added to allow an accurate ! description of the unoccupied 3d states (compare with the default version of Ca.in). ! Look at the imaginary part of the spectrum (EPSILON_BSE_11.OUT) in the range 11.8 to ! 12.5 Ha. Compare to the independent-particle calculation (EPSILON_11.OUT). ! Try switching off the exchange and the direct term in the BSE Hamiltonian ! individually (set hxbse/hdbse to .false.). ! For a converged spectrum a lot more k-points (6 x 6 x 6 or more) are needed. ! The numerical cut-offs are well converged, so the computation is quite time ! and memory consuming. Run with hybrid parallelization (MPI across nodes, OpenMP ! across cores) on a cluster for smaller memory footprint. Compare with calculations ! and experimental data in J. Phys. Condens. Matter 23, 145501 (2011). ! Example by Markus Meinert. tasks 0 ! ground-state calculation 120 ! compute momentum matrix elements 121 ! compute RPA dielectric function without local field contributions 180 ! generate RPA dielectric function with local field contributions 185 ! write the BSE Hamiltonian matrix to file 186 ! diagonalise BSE matrix 187 ! compute BSE dielectric function ! do not include valence bands right below E_F nvbse 0 ! additional valence bands for the BSE calculation - these are the six 2p states ! of Ca (check EIGVAL.OUT) istxbse 1 2 3 4 5 6 ! number of conduction band states for the BSE calculation ncbse 20 ! large number of empty states required nempty 20 ! enhanced G-vector cut-off of local contribution to RPA gmaxrf 5.0 ! automatically determine the smallest possible G vector cutoff gmaxvr 0.0 ! the spectrum is very sensitive to the k-point mesh ngridk 2 2 2 ! use a symmetry breaking shift for more efficient use of the k-points vkloff 0.05 0.15 0.25 ! Broyden mixing for fast convergence mixtype 3 ! the energy window for the plot starts at zero by default; ! sufficient energy points needed wplot 5000 100 0 0.0 14.0 ! include spin-orbit coupling for the 2p 1/2 - 2p 3/2 splitting spinorb .true. ! about 0.27 eV Lorentzian broadening to simulate lifetime effects swidth 0.01 sppath './' avec 4.545000000 4.545000000 0.000000000 4.545000000 -4.545000000 0.000000000 4.545000000 0.000000000 4.545000000 atoms 2 : nspecies 'Ca_lo.in' : spfname 1 : natoms; atpos below 0.00 0.00 0.00 'O.in' 1 0.50 0.50 0.00 elk-2.3.22/examples/PaxHeaders.22528/B120000644002504400250440000000005012337331330015472 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/B12/0000755002504400250440000000000012337331330016313 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/B12/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330016652 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/B12/elk.in0000644002504400250440000000250612337331330017421 0ustar00dewhurstdewhurst00000000000000 ! B12 ground state (Andrew Chizmeshya) tasks 0 10 rgkmax 6.0 scale 9.6376071 avec 0.5552208286774546 0.0000000000000000 0.8202701037340987 -0.2776104143387272 0.4808353423746850 0.8202701037340987 -0.2776104143387272 -0.4808353423746850 0.8202701037340987 sppath '../../species/' atoms 1 : nspecies 'B.in' : spfname 12 : natoms 0.7791796713741874 0.7791796713741448 0.3689976501302752 0. 0. 0. 0.3689976501302326 0.7791796713741874 0.7791796713741874 0. 0. 0. 0.7791796713741874 0.3689976501302752 0.7791796713741448 0. 0. 0. 0.2208203286258126 0.2208203286258552 0.6310023498697248 0. 0. 0. 0.2208203286258126 0.6310023498697248 0.2208203286258552 0. 0. 0. 0.6310023498697674 0.2208203286258126 0.2208203286258126 0. 0. 0. 0.9898987839828806 0.9898987839829161 0.3457964522602026 0. 0. 0. 0.3457964522602381 0.9898987839828806 0.9898987839828806 0. 0. 0. 0.9898987839828806 0.3457964522602026 0.9898987839829161 0. 0. 0. 0.0101012160171194 0.0101012160170839 0.6542035477397974 0. 0. 0. 0.0101012160171194 0.6542035477397974 0.0101012160170839 0. 0. 0. 0.6542035477397619 0.0101012160171194 0.0101012160171194 0. 0. 0. ngridk 2 2 2 elk-2.3.22/examples/PaxHeaders.22528/Si-PBEsol0000644002504400250440000000005012337331330016643 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-PBEsol/0000755002504400250440000000000012337331330017464 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-PBEsol/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020023 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-PBEsol/elk.in0000644002504400250440000000142012337331330020564 0ustar00dewhurstdewhurst00000000000000 ! Band structure of silicon using the new PBEsol functional (xctype = 22) ! (http://arxiv.org/pdf/0711.0156). tasks 0 20 xctype 22 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.25 0.5 0.625 ! These are the vertices to be joined for the band structure plot plot1d 7 200 : nvp1d, npp1d 0.0 0.0 1.0 : vlvp1d 0.5 0.5 1.0 0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.5 0.25 -0.25 0.5 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/Fe-Fermi-surface0000644002504400250440000000005012337331330020166 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-Fermi-surface/0000755002504400250440000000000012337331330021007 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-Fermi-surface/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330021346 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-Fermi-surface/elk.in0000644002504400250440000000210112337331330022104 0ustar00dewhurstdewhurst00000000000000 ! Fermi surface of ferromagnetic bcc iron. Use XCrysDen for visualisation. ! Run code and then use ! xcrysden --bxsf FERMISURF(_UP/_DN).bxsf ! to display the spin up and down Fermi surfaces. tasks 0 102 : this generates the XCrysDen Fermi Surface .bxsf file ! 3D Fermi surface box defined in terms of reciprocal lattice vectors plot3d 0.0 0.0 0.0 : origin (first corner) 1.0 0.0 0.0 : second corner, etc. 0.0 1.0 0.0 0.0 0.0 1.0 12 12 12 : number of points in each direction spinpol .true. ! large initial field for rapid convergence bfieldc 0.0 0.0 5.0 ! reduce the magnetic field at every self-consistent iteration reducebf 0.5 ! fairly large number of empty states required for magnetic cases nempty 8 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/LiF-TDDFT-bootstrap0000644002504400250440000000005012337331330020476 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/LiF-TDDFT-bootstrap/0000755002504400250440000000000012337331330021317 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/LiF-TDDFT-bootstrap/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330021656 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/LiF-TDDFT-bootstrap/elk.in0000644002504400250440000000275112337331330022427 0ustar00dewhurstdewhurst00000000000000 ! Time-dependent density functional theory (TDDFT) optical spectrum of lithium ! fluoride. This material has a prominent excitonic peak, which is absent in the ! usual RPA dielectric function. The 'bootstrap' TDDFT kernel is used, see: ! arXiv:1107.0199v1 [cond-mat.mtrl-sci] ! The scissor shift is taken to be the difference between the experimental gap, ! 14.2 eV [Phys. Rev. B 13, 5530 (1976)], and the LDA gap, 8.97 eV. tasks 0 ! ground-state calculation 120 ! compute momentum matrix elements 121 ! compute RPA dielectric function with no local field contributions 320 ! compute TDDFT dielectric function with local field contributions ! scissor shift scissor 0.192 xctype 3 ! bootstrap kernel fxctype 210 ! smearing width swidth 0.01 ! G-vector cut-off of exchange-correlation kernel and response function gmaxrf 0.0 nempty 8 lradstp 2 wplot 800 100 0 : nwplot, ngrkf, nswplot 0.0 1.5 : wplot avec 3.80402 3.80402 0.00000 3.80402 0.00000 3.80402 0.00000 3.80402 3.80402 sppath '../../species/' atoms 2 : nspecies 'Li.in' : spfname 1 : natoms 0.0000 0.0000 0.0000 0.0 0.0 0.0 : atposl, bfcmt 'F.in' : spfname 1 : natoms 0.5000 0.5000 0.5000 0.0 0.0 0.0 : atposl, bfcmt ngridk 8 8 8 vkloff 0.25 0.5 0.625 elk-2.3.22/examples/PaxHeaders.22528/Al-linopt0000644002504400250440000000005012337331330017005 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-linopt/0000755002504400250440000000000012337331330017626 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Al-linopt/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020165 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-linopt/elk.in0000644002504400250440000000132712337331330020734 0ustar00dewhurstdewhurst00000000000000 ! Linear optical response of aluminium including intra-band contributions. ! The plasma frequency is also determined and written to PLASMA.OUT. tasks 0 120 121 ! include intra-band excitations intraband .true. swidth 0.01 ! dense k-point set required ngridk 24 24 24 ! larger number of empty states required nempty 8 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 ! lattice constant at room temperature scale 3.8267 ! this is the relative path to the species files sppath '../../species/' atoms 1 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt elk-2.3.22/examples/PaxHeaders.22528/FeAl-LDA+U-INT0000644002504400250440000000005012337331330017203 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/FeAl-LDA+U-INT/0000755002504400250440000000000012337331330020024 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/FeAl-LDA+U-INT/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020363 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/FeAl-LDA+U-INT/elk.in0000644002504400250440000000240012337331330021123 0ustar00dewhurstdewhurst00000000000000 ! FeAl in CsCl (B2) structure using LDA+U and interpolation between AMF and ! FLL double counting (dftu=3). Compare the total DOS and partial DOS with the ! one calculated with bare LDA. Note the opening of a gap and the increased ! localization of Fe d-electrons. Note the interpolation factor in file ! ALPHADU.OUT about 0.1, this value is a sign of a weakly correlated compound ! (see PRB 67, 153106 (2003)). ! Example created by Fredrik Bultmark, Francesco Cricchio and Lars Nordstrom. tasks 0 10 ! DFT+U block ! here an interpolation between AMF and FLL double counting is used (dftu=3) ! inpdftu=1 corresponds to provide U and J as input dft+u 3 1 : dftu,inpdftu 1 2 0.183 0.034911967 : is, l, U, J spinpol .true. ! small field along z to break symmetry bfieldc 0.0 0.0 -0.01 scale 5.496 avec 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 atoms 2 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 'Al.in' 1 0.5 0.5 0.5 0.0 0.0 0.0 : atposl, bfcmt sppath '../../species/' ! fair number of empty states nempty 8 ! fair number of k-points ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/NaCl-monomer0000644002504400250440000000005012337331330017435 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/NaCl-monomer/0000755002504400250440000000000012337331330020256 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/NaCl-monomer/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020615 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/NaCl-monomer/elk.in0000644002504400250440000000173712337331330021371 0ustar00dewhurstdewhurst00000000000000 ! NaCl monomer in a large box. Note that with 'molecule=.true.' the atomic ! positions are supplied in Cartesian coordinates. Try plotting the 1D ! density along the molcular axis. You can also compute the vibrational ! frequency using task=200. tasks 0 molecule .true. ! large smearing width improves convergence for molecules swidth 0.05 rgkmax 6.0 ! large box containing the molecule avec 10.0 0.0 0.0 0.0 10.0 0.0 0.0 0.0 10.0 sppath '../../species/' ! note that atomic positions are now in Cartesian coordinates atoms 2 : nspecies 'Na.in' : spfname 1 : natoms; atposc, bfcmt below 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 'Cl.in' : spfname 1 : natoms; atposc, bfcmt below 4.4121 0.0000 0.0000 0.0000 0.0000 0.0000 plot1d 2 1000 0.0 0.0 0.0 1.0 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/Cr-mono0000644002504400250440000000005012337331330016460 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Cr-mono/0000755002504400250440000000000012337331330017301 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Cr-mono/PaxHeaders.22528/mag2d.general0000644002504400250440000000005012337331330021066 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Cr-mono/mag2d.general0000644002504400250440000000027312337331330021634 0ustar00dewhurstdewhurst00000000000000file = MAG2D.OUT grid = 200 x 200 format = ascii interleaving = field majority = column header = lines 1 field = locations, field0 structure = 2-vector, 3-vector type = float, float end elk-2.3.22/examples/Cr-mono/PaxHeaders.22528/mag2d.net0000644002504400250440000000005012337331330020237 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Cr-mono/mag2d.net0000644002504400250440000002211312337331330021002 0ustar00dewhurstdewhurst00000000000000// // time: Sat Jun 16 15:49:00 2007 // // version: 3.2.0 (format), 4.4.0 (DX) // // // MODULE main // workspace: width = 565, height = 623 // layout: snap = 0, width = 50, height = 50, align = NN // macro main( ) -> ( ) { // // node Import[1]: x = 47, y = 39, inputs = 6, label = Import // input[1]: defaulting = 0, visible = 1, type = 32, value = "mag2d.general" // main_Import_1_out_1 = Import( main_Import_1_in_1, main_Import_1_in_2, main_Import_1_in_3, main_Import_1_in_4, main_Import_1_in_5, main_Import_1_in_6 ) [instance: 1, cache: 1]; // // node Sample[1]: x = 216, y = 66, inputs = 2, label = Sample // input[2]: defaulting = 0, visible = 1, type = 1, value = 2000 // main_Sample_1_out_1 = Sample( main_Import_1_out_1, main_Sample_1_in_2 ) [instance: 1, cache: 1]; // // node Compute[1]: x = 84, y = 147, inputs = 3, label = Compute // input[1]: defaulting = 0, visible = 0, type = 32, value = "$0/mag($0)" // expression: value = a/mag(a) // name[2]: value = a // name[3]: value = b // main_Compute_1_out_1 = Compute( main_Compute_1_in_1, main_Sample_1_out_1, main_Compute_1_in_3 ) [instance: 1, cache: 1]; // // node AutoGlyph[1]: x = 44, y = 254, inputs = 7, label = AutoGlyph // input[2]: defaulting = 0, visible = 1, type = 32, value = "rocket2D" // input[3]: defaulting = 0, visible = 1, type = 5, value = 7.0 // input[4]: defaulting = 0, visible = 1, type = 5, value = 0.25 // input[5]: defaulting = 0, visible = 1, type = 5, value = 0.05 // main_AutoGlyph_1_out_1 = AutoGlyph( main_Compute_1_out_1, main_AutoGlyph_1_in_2, main_AutoGlyph_1_in_3, main_AutoGlyph_1_in_4, main_AutoGlyph_1_in_5, main_AutoGlyph_1_in_6, main_AutoGlyph_1_in_7 ) [instance: 1, cache: 1]; // // node Color[1]: x = 108, y = 341, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "black" // main_Color_1_out_1 = Color( main_AutoGlyph_1_out_1, main_Color_1_in_2, main_Color_1_in_3, main_Color_1_in_4, main_Color_1_in_5 ) [instance: 1, cache: 1]; // // node Compute[2]: x = 348, y = 66, inputs = 3, label = Compute // input[1]: defaulting = 0, visible = 0, type = 32, value = "mag($0)" // expression: value = mag(a) // name[2]: value = a // name[3]: value = b // main_Compute_2_out_1 = Compute( main_Compute_2_in_1, main_Import_1_out_1, main_Compute_2_in_3 ) [instance: 2, cache: 1]; // // node RubberSheet[1]: x = 467, y = 146, inputs = 4, label = RubberSheet // main_RubberSheet_1_out_1 = RubberSheet( main_Compute_2_out_1, main_RubberSheet_1_in_2, main_RubberSheet_1_in_3, main_RubberSheet_1_in_4 ) [instance: 1, cache: 1]; // // node Translate[1]: x = 283, y = 189, inputs = 2, label = Translate // input[2]: defaulting = 0, visible = 1, type = 8, value = [0 0 -3] // main_Translate_1_out_1 = Translate( main_RubberSheet_1_out_1, main_Translate_1_in_2 ) [instance: 1, cache: 1]; // // node Colormap[2]: x = 479, y = 260, inputs = 19, label = Colormap // input[1]: defaulting = 0, visible = 0, type = 16777224, value = { [0.0 0.66315789] [0.60691824 0.0] } // input[2]: defaulting = 0, visible = 0, type = 16777224, value = { [0.0 1.0] [1.0 1.0] } // input[3]: defaulting = 0, visible = 0, type = 16777224, value = { [0.0 1.0] [1.0 1.0] } // input[4]: defaulting = 0, visible = 0, type = 16777224, value = { [0.0 1.0] [1.0 1.0] } // input[5]: defaulting = 0, visible = 0, type = 32, value = "Colormap_2" // input[7]: defaulting = 1, visible = 0, type = 5, value = 9.2432623e-05 // input[8]: defaulting = 1, visible = 0, type = 5, value = 0.9849546 // input[9]: defaulting = 1, visible = 0, type = 1, value = 20 // input[12]: defaulting = 0, visible = 0, type = 16777221, value = { 9.2432623e-05 0.9849546 } // input[17]: defaulting = 0, visible = 0, type = 5, value = 9.2432623e-05 // input[18]: defaulting = 0, visible = 0, type = 5, value = 0.9849546 // window: position = (0.2998,0.0000), size = 0.6348x0.5859 // main_Colormap_2_out_1[cache: 2], main_Colormap_2_out_2[cache: 2] = Colormap( main_Colormap_2_in_1, main_Colormap_2_in_2, main_Colormap_2_in_3, main_Colormap_2_in_4, main_Colormap_2_in_5, main_Translate_1_out_1, main_Colormap_2_in_7, main_Colormap_2_in_8, main_Colormap_2_in_9, main_Colormap_2_in_10, main_Colormap_2_in_11, main_Colormap_2_in_12, main_Colormap_2_in_13, main_Colormap_2_in_14, main_Colormap_2_in_15, main_Colormap_2_in_16, main_Colormap_2_in_17, main_Colormap_2_in_18, main_Colormap_2_in_19 ) [instance: 2, cache: 1]; // // node Color[3]: x = 339, y = 334, inputs = 5, label = Color // main_Color_3_out_1 = Color( main_Translate_1_out_1, main_Colormap_2_out_1, main_Color_3_in_3, main_Color_3_in_4, main_Color_3_in_5 ) [instance: 3, cache: 1]; // // node Collect[1]: x = 214, y = 419, inputs = 2, label = Collect // main_Collect_1_out_1 = Collect( main_Color_1_out_1, main_Color_3_out_1 ) [instance: 1, cache: 1]; // // node AutoCamera[1]: x = 363, y = 493, inputs = 9, label = AutoCamera // input[3]: defaulting = 0, visible = 0, type = 5, value = 15.0 // input[4]: defaulting = 0, visible = 0, type = 1, value = 800 // input[5]: defaulting = 0, visible = 0, type = 5, value = 0.6 // input[7]: defaulting = 0, visible = 0, type = 3, value = 0 // input[8]: defaulting = 1, visible = 0, type = 5, value = 20.0 // input[9]: defaulting = 0, visible = 0, type = 32, value = "white" // main_AutoCamera_1_out_1 = AutoCamera( main_Collect_1_out_1, main_AutoCamera_1_in_2, main_AutoCamera_1_in_3, main_AutoCamera_1_in_4, main_AutoCamera_1_in_5, main_AutoCamera_1_in_6, main_AutoCamera_1_in_7, main_AutoCamera_1_in_8, main_AutoCamera_1_in_9 ) [instance: 1, cache: 1]; // // node Render[1]: x = 252, y = 561, inputs = 3, label = Render // main_Render_1_out_1 = Render( main_Collect_1_out_1, main_AutoCamera_1_out_1, main_Render_1_in_3 ) [instance: 1, cache: 1]; // // node Display[2]: x = 139, y = 557, inputs = 8, label = Display // depth: value = 24 // window: position = (0.0869,0.1107), size = 0.7949x0.6797 // main_Display_2_out_1[cache: 2] = Display( main_Render_1_out_1, main_Display_2_in_2, main_Display_2_in_3, main_Display_2_in_4, main_Display_2_in_5, main_Display_2_in_6, main_Display_2_in_7, main_Display_2_in_8 ) [instance: 2, cache: 1]; // network: end of macro body } main_Import_1_in_1 = "mag2d.general"; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; main_Import_1_in_4 = NULL; main_Import_1_in_5 = NULL; main_Import_1_in_6 = NULL; main_Import_1_out_1 = NULL; main_Sample_1_in_2 = 2000; main_Sample_1_out_1 = NULL; main_Compute_1_in_1 = "$0/mag($0)"; main_Compute_1_in_3 = NULL; main_Compute_1_out_1 = NULL; main_AutoGlyph_1_in_2 = "rocket2D"; main_AutoGlyph_1_in_3 = 7.0; main_AutoGlyph_1_in_4 = 0.25; main_AutoGlyph_1_in_5 = 0.05; main_AutoGlyph_1_in_6 = NULL; main_AutoGlyph_1_in_7 = NULL; main_AutoGlyph_1_out_1 = NULL; main_Color_1_in_2 = "black"; main_Color_1_in_3 = NULL; main_Color_1_in_4 = NULL; main_Color_1_in_5 = NULL; main_Color_1_out_1 = NULL; main_Compute_2_in_1 = "mag($0)"; main_Compute_2_in_3 = NULL; main_Compute_2_out_1 = NULL; main_RubberSheet_1_in_2 = NULL; main_RubberSheet_1_in_3 = NULL; main_RubberSheet_1_in_4 = NULL; main_RubberSheet_1_out_1 = NULL; main_Translate_1_in_2 = [0 0 -3]; main_Translate_1_out_1 = NULL; main_Colormap_2_in_1 = { [0.0 0.66315789] [0.60691824 0.0] }; main_Colormap_2_in_2 = { [0.0 1.0] [1.0 1.0] }; main_Colormap_2_in_3 = { [0.0 1.0] [1.0 1.0] }; main_Colormap_2_in_4 = { [0.0 1.0] [1.0 1.0] }; main_Colormap_2_in_5 = "Colormap_2"; main_Colormap_2_in_7 = NULL; main_Colormap_2_in_8 = NULL; main_Colormap_2_in_9 = NULL; main_Colormap_2_in_10 = NULL; main_Colormap_2_in_11 = NULL; main_Colormap_2_in_12 = { 9.2432623e-05 0.9849546 }; main_Colormap_2_in_13 = NULL; main_Colormap_2_in_14 = NULL; main_Colormap_2_in_15 = NULL; main_Colormap_2_in_16 = NULL; main_Colormap_2_in_17 = 9.2432623e-05; main_Colormap_2_in_18 = 0.9849546; main_Colormap_2_in_19 = NULL; main_Colormap_2_out_1 = NULL; main_Color_3_in_3 = NULL; main_Color_3_in_4 = NULL; main_Color_3_in_5 = NULL; main_Color_3_out_1 = NULL; main_Collect_1_out_1 = NULL; main_AutoCamera_1_in_2 = NULL; main_AutoCamera_1_in_3 = 15.0; main_AutoCamera_1_in_4 = 800; main_AutoCamera_1_in_5 = 0.6; main_AutoCamera_1_in_6 = NULL; main_AutoCamera_1_in_7 = 0; main_AutoCamera_1_in_8 = NULL; main_AutoCamera_1_in_9 = "white"; main_AutoCamera_1_out_1 = NULL; main_Render_1_in_3 = NULL; main_Render_1_out_1 = NULL; main_Display_2_in_2 = NULL; main_Display_2_in_3 = "X24,,"; main_Display_2_in_4 = NULL; main_Display_2_in_5 = NULL; main_Display_2_in_6 = NULL; main_Display_2_in_7 = NULL; main_Display_2_in_8 = NULL; Executive("product version 4 4 0"); $sync main(); elk-2.3.22/examples/Cr-mono/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017640 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Cr-mono/elk.in0000644002504400250440000000235012337331330020404 0ustar00dewhurstdewhurst00000000000000 ! Unsupported monolayer of Cr with the symmetry and lattice constant of a ! monolayer on the Ag(111) surface (see Phys. Rev. B 69, 24415 (2004)), which ! exhibits a non-collinear Neel state. Small magnetic fields 120 degrees apart ! are applied to each of the three atoms. ! Try plotting the 2D magnetisation density in OpenDX (version 4.3.2) using the ! files provided. tasks 0 72 spinpol .true. ! note that the number of empty states should be large because non-collinear ! effects are obtained in the second-variational step nempty 8 avec 1.5 0.86602540378 0.0 1.5 -0.86602540378 0.0 0.0 0.0 1.0 scale1 5.50836 : 7.79/sqrt(2) scale2 5.50836 scale3 7.0 sppath '../../species/' ! note that the magnetic fields are in Cartesian coordinates atoms 1 : nspecies 'Cr.in' : spfname 3 : natoms 0.0 0.0 0.0 0.0 0.1 0.0 : atposl, bfcmt 0.333333333333 0.333333333333 0.0 -0.086602540378 -0.05 0.0 0.666666666667 0.666666666667 0.0 0.086602540378 -0.05 0.0 ngridk 2 2 1 vkloff 0.5 0.5 0.0 plot2d 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 200 200 elk-2.3.22/examples/PaxHeaders.22528/FeAl-LDA0000644002504400250440000000005012337331330016353 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/FeAl-LDA/0000755002504400250440000000000012337331330017174 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/FeAl-LDA/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017533 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/FeAl-LDA/elk.in0000644002504400250440000000124112337331330020275 0ustar00dewhurstdewhurst00000000000000 ! FeAl in CsCl (B2) structure using LDA. Compare with LDA+U case. ! Example Created by Fredrik Bultmark, Francesco Cricchio and Lars Nordstrom. tasks 0 10 spinpol .true. ! small field along z to break symmetry bfieldc 0.0 0.0 -0.01 scale 5.496 avec 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 atoms 2 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 'Al.in' 1 0.5 0.5 0.5 0.0 0.0 0.0 : atposl, bfcmt sppath '../../species/' ! fair number of empty states nempty 8 ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/BN-ELNES0000644002504400250440000000005012337331330016311 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/BN-ELNES/0000755002504400250440000000000012337331330017132 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/BN-ELNES/PaxHeaders.22528/N.in0000644002504400250440000000005012337331330017113 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/BN-ELNES/N.in0000644002504400250440000000222012337331330017653 0ustar00dewhurstdewhurst00000000000000 'N' : spsymb 'nitrogen' : spname -7.00000 : spzn 25532.65213 : spmass 0.755929E-06 1.8000 33.2667 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 1.00000 F 2 1 2 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 3 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6770 0 T elk-2.3.22/examples/BN-ELNES/PaxHeaders.22528/ELNES.OUT0000644002504400250440000000005012337331330017625 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/BN-ELNES/ELNES.OUT0000644002504400250440000002553412337331330020402 0ustar00dewhurstdewhurst00000000000000 18.00000000 0.000000000 18.01333333 0.000000000 18.02666667 0.000000000 18.04000000 0.000000000 18.05333333 0.000000000 18.06666667 0.000000000 18.08000000 0.000000000 18.09333333 0.000000000 18.10666667 0.000000000 18.12000000 0.000000000 18.13333333 0.000000000 18.14666667 0.000000000 18.16000000 0.000000000 18.17333333 0.000000000 18.18666667 0.000000000 18.20000000 0.000000000 18.21333333 0.000000000 18.22666667 0.000000000 18.24000000 0.000000000 18.25333333 0.000000000 18.26666667 0.000000000 18.28000000 0.000000000 18.29333333 0.000000000 18.30666667 0.000000000 18.32000000 0.000000000 18.33333333 0.000000000 18.34666667 0.000000000 18.36000000 0.000000000 18.37333333 0.000000000 18.38666667 0.000000000 18.40000000 0.000000000 18.41333333 0.000000000 18.42666667 0.000000000 18.44000000 0.000000000 18.45333333 0.000000000 18.46666667 0.000000000 18.48000000 0.000000000 18.49333333 0.000000000 18.50666667 0.000000000 18.52000000 0.000000000 18.53333333 0.000000000 18.54666667 0.000000000 18.56000000 0.000000000 18.57333333 0.000000000 18.58666667 0.000000000 18.60000000 0.000000000 18.61333333 0.000000000 18.62666667 0.000000000 18.64000000 0.4802983991E-10 18.65333333 0.4187232974E-08 18.66666667 0.1166852820E-06 18.68000000 0.1185389883E-05 18.69333333 0.7384946085E-05 18.70666667 0.3045664582E-04 18.72000000 0.9242656802E-04 18.73333333 0.2095808507E-03 18.74666667 0.3736608862E-03 18.76000000 0.5533811122E-03 18.77333333 0.7624387726E-03 18.78666667 0.1130701129E-02 18.80000000 0.1718257455E-02 18.81333333 0.2493497109E-02 18.82666667 0.3185876321E-02 18.84000000 0.3773753388E-02 18.85333333 0.4163071949E-02 18.86666667 0.4417930457E-02 18.88000000 0.4382860113E-02 18.89333333 0.4265167650E-02 18.90666667 0.4274114406E-02 18.92000000 0.4531939553E-02 18.93333333 0.4773633135E-02 18.94666667 0.4692470703E-02 18.96000000 0.4280908391E-02 18.97333333 0.3707009360E-02 18.98666667 0.3231771893E-02 19.00000000 0.2948639963E-02 19.01333333 0.2934893917E-02 19.02666667 0.3219916297E-02 19.04000000 0.3575260703E-02 19.05333333 0.3751330763E-02 19.06666667 0.3327580078E-02 19.08000000 0.2543806713E-02 19.09333333 0.1654728178E-02 19.10666667 0.1150618326E-02 19.12000000 0.9459602807E-03 19.13333333 0.8998660240E-03 19.14666667 0.8176059080E-03 19.16000000 0.7558026853E-03 19.17333333 0.9037873207E-03 19.18666667 0.1321903948E-02 19.20000000 0.1867767255E-02 19.21333333 0.2223600447E-02 19.22666667 0.2224099692E-02 19.24000000 0.1902702475E-02 19.25333333 0.1439482382E-02 19.26666667 0.9722495061E-03 19.28000000 0.5977864035E-03 19.29333333 0.3478918970E-03 19.30666667 0.2213236000E-03 19.32000000 0.1703656489E-03 19.33333333 0.1539137766E-03 19.34666667 0.1451793490E-03 19.36000000 0.1375585069E-03 19.37333333 0.1278149172E-03 19.38666667 0.1195727132E-03 19.40000000 0.1260018751E-03 19.41333333 0.1695476274E-03 19.42666667 0.3183900566E-03 19.44000000 0.5793807268E-03 19.45333333 0.9115068510E-03 19.46666667 0.1130902983E-02 19.48000000 0.1185230847E-02 19.49333333 0.1088279488E-02 19.50666667 0.9753621739E-03 19.52000000 0.8640461661E-03 19.53333333 0.7562832710E-03 19.54666667 0.6414338684E-03 19.56000000 0.5560142899E-03 19.57333333 0.5075797090E-03 19.58666667 0.4777864278E-03 19.60000000 0.4375588173E-03 19.61333333 0.3777842167E-03 19.62666667 0.3123612299E-03 19.64000000 0.2611515503E-03 19.65333333 0.2373966982E-03 19.66666667 0.2324238458E-03 19.68000000 0.2292782226E-03 19.69333333 0.2212538667E-03 19.70666667 0.2174469307E-03 19.72000000 0.2324020016E-03 19.73333333 0.2755053590E-03 19.74666667 0.3373106475E-03 19.76000000 0.4001468611E-03 19.77333333 0.4277098535E-03 19.78666667 0.4056550688E-03 19.80000000 0.3437894304E-03 19.81333333 0.2756163370E-03 19.82666667 0.2317231865E-03 19.84000000 0.2230530902E-03 19.85333333 0.2569834841E-03 19.86666667 0.3246486802E-03 19.88000000 0.4109200279E-03 19.89333333 0.4913710672E-03 19.90666667 0.5572174814E-03 19.92000000 0.6215124056E-03 19.93333333 0.7215388596E-03 19.94666667 0.8783714081E-03 19.96000000 0.1089505958E-02 19.97333333 0.1309540454E-02 19.98666667 0.1506600555E-02 20.00000000 0.1641843699E-02 20.01333333 0.1683875413E-02 20.02666667 0.1608065088E-02 20.04000000 0.1413556994E-02 20.05333333 0.1149511752E-02 20.06666667 0.8333914280E-03 20.08000000 0.5265343190E-03 20.09333333 0.2595013230E-03 20.10666667 0.9703860137E-04 20.12000000 0.2181874162E-04 20.13333333 0.4267836290E-05 20.14666667 0.8728401994E-06 20.16000000 0.4237144268E-07 20.17333333 0.000000000 20.18666667 0.000000000 20.20000000 0.000000000 20.21333333 0.000000000 20.22666667 0.000000000 20.24000000 0.000000000 20.25333333 0.000000000 20.26666667 0.000000000 20.28000000 0.000000000 20.29333333 0.000000000 20.30666667 0.000000000 20.32000000 0.000000000 20.33333333 0.000000000 20.34666667 0.000000000 20.36000000 0.000000000 20.37333333 0.000000000 20.38666667 0.000000000 20.40000000 0.000000000 20.41333333 0.000000000 20.42666667 0.000000000 20.44000000 0.000000000 20.45333333 0.000000000 20.46666667 0.000000000 20.48000000 0.000000000 20.49333333 0.000000000 20.50666667 0.000000000 20.52000000 0.000000000 20.53333333 0.000000000 20.54666667 0.000000000 20.56000000 0.000000000 20.57333333 0.000000000 20.58666667 0.000000000 20.60000000 0.000000000 20.61333333 0.000000000 20.62666667 0.000000000 20.64000000 0.000000000 20.65333333 0.000000000 20.66666667 0.000000000 20.68000000 0.000000000 20.69333333 0.000000000 20.70666667 0.000000000 20.72000000 0.000000000 20.73333333 0.000000000 20.74666667 0.000000000 20.76000000 0.000000000 20.77333333 0.000000000 20.78666667 0.000000000 20.80000000 0.000000000 20.81333333 0.000000000 20.82666667 0.000000000 20.84000000 0.000000000 20.85333333 0.000000000 20.86666667 0.000000000 20.88000000 0.000000000 20.89333333 0.000000000 20.90666667 0.000000000 20.92000000 0.000000000 20.93333333 0.000000000 20.94666667 0.000000000 20.96000000 0.000000000 20.97333333 0.000000000 20.98666667 0.000000000 21.00000000 0.000000000 21.01333333 0.000000000 21.02666667 0.000000000 21.04000000 0.000000000 21.05333333 0.000000000 21.06666667 0.000000000 21.08000000 0.000000000 21.09333333 0.000000000 21.10666667 0.000000000 21.12000000 0.000000000 21.13333333 0.000000000 21.14666667 0.000000000 21.16000000 0.000000000 21.17333333 0.000000000 21.18666667 0.000000000 21.20000000 0.000000000 21.21333333 0.000000000 21.22666667 0.000000000 21.24000000 0.000000000 21.25333333 0.000000000 21.26666667 0.000000000 21.28000000 0.000000000 21.29333333 0.000000000 21.30666667 0.000000000 21.32000000 0.000000000 21.33333333 0.000000000 21.34666667 0.000000000 21.36000000 0.000000000 21.37333333 0.000000000 21.38666667 0.000000000 21.40000000 0.000000000 21.41333333 0.000000000 21.42666667 0.000000000 21.44000000 0.000000000 21.45333333 0.000000000 21.46666667 0.000000000 21.48000000 0.000000000 21.49333333 0.000000000 21.50666667 0.000000000 21.52000000 0.000000000 21.53333333 0.000000000 21.54666667 0.000000000 21.56000000 0.000000000 21.57333333 0.000000000 21.58666667 0.000000000 21.60000000 0.000000000 21.61333333 0.000000000 21.62666667 0.000000000 21.64000000 0.000000000 21.65333333 0.000000000 21.66666667 0.000000000 21.68000000 0.000000000 21.69333333 0.000000000 21.70666667 0.000000000 21.72000000 0.000000000 21.73333333 0.000000000 21.74666667 0.000000000 21.76000000 0.000000000 21.77333333 0.000000000 21.78666667 0.000000000 21.80000000 0.000000000 21.81333333 0.000000000 21.82666667 0.000000000 21.84000000 0.000000000 21.85333333 0.000000000 21.86666667 0.000000000 21.88000000 0.000000000 21.89333333 0.000000000 21.90666667 0.000000000 21.92000000 0.000000000 21.93333333 0.000000000 21.94666667 0.000000000 21.96000000 0.000000000 21.97333333 0.000000000 21.98666667 0.000000000 elk-2.3.22/examples/BN-ELNES/PaxHeaders.22528/B.in0000644002504400250440000000005012337331330017077 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/BN-ELNES/B.in0000644002504400250440000000172212337331330017645 0ustar00dewhurstdewhurst00000000000000 'B' : spsymb 'boron' : spname -5.00000 : spzn 19707.24740 : spmass 0.894427E-06 1.8000 43.3288 300 : sprmin, rmt, sprmax, nrmt 3 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 1.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 2 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F elk-2.3.22/examples/BN-ELNES/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017471 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/BN-ELNES/elk.in0000644002504400250440000000435412337331330020243 0ustar00dewhurstdewhurst00000000000000 ! Calculation of the electron loss near-edge spectroscopy (ELNES) for boron ! nitride. Note that a 16 atom supercell has been constructed with a special ! N atom (defined in the species file 'N+.in') for which the nuclear and ! electronic charges have been increased by one, and the 1s core code state has ! been included as a valence state by adding a local-orbital at the appropriate ! energy. This approximates the local core-hole interation. Compare with Phys. ! Rev. B 64, 115107 (2001). ! This example is well converged and is of publication quality. However it is ! fairly time-consuming and is best run on a multi-processor machine. tasks 0 140 ! spin-orbit coupling required to obtain realistic 1s state in valence spinorb .true. ! ELNES q-vector in lattice coordinates vecql 0.0 0.0 0.125 ! energy range for ELNES plot wplot 300 150 3 : nwplot, ngrkf, nswplot 18.0 22.0 : wplot (for the nitrogen K-edge) ! maximum allowed energy for the initial state in the double differential ! cross-section formula emaxelnes -10.0 ! large number of empty states required nempty 30 ngridk 8 8 8 avec 9.674352000 0.000000000 0.000000000 4.837176000 8.378234597 0.000000000 4.837176000 2.792744866 7.899075331 atoms 3 : nspecies 'B.in' : spfname 8 : natoms; atposl, bfcmt below 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.50000000 0.00000000 0.50000000 0.00000000 0.00000000 0.50000000 0.50000000 0.50000000 0.00000000 0.00000000 0.50000000 0.00000000 0.50000000 0.50000000 0.50000000 0.00000000 0.50000000 0.50000000 0.50000000 'N+.in' : spfname 1 : natoms; atposl, bfcmt below 0.12500000 0.12500000 0.12500000 'N.in' : spfname 7 0.12500000 0.12500000 0.62500000 0.12500000 0.62500000 0.12500000 0.12500000 0.62500000 0.62500000 0.62500000 0.12500000 0.12500000 0.62500000 0.12500000 0.62500000 0.62500000 0.62500000 0.12500000 0.62500000 0.62500000 0.62500000 elk-2.3.22/examples/BN-ELNES/PaxHeaders.22528/N+.in0000644002504400250440000000005012337331330017166 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/BN-ELNES/N+.in0000644002504400250440000000253412337331330017736 0ustar00dewhurstdewhurst00000000000000 'N+' : spsymb 'nitrogen with pseudo core-hole' : spname -8.00000 : spzn 25532.72506 : spmass 0.755929E-06 1.4500 26.9237 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 F : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 1.00000 F 2 1 2 3.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6020 0 T 0 3 0.1500 0 F 0.1500 1 F -20.0000 0 T elk-2.3.22/examples/PaxHeaders.22528/README0000644002504400250440000000005012337331330016103 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/README0000644002504400250440000000037712337331330016656 0ustar00dewhurstdewhurst00000000000000 Elk Code examples Please note that these examples are simply to demonstrate the features of the code. Any calculations used for production work must be thoroughly checked for convergence with respect to input parameters. elk-2.3.22/examples/PaxHeaders.22528/US-LDA+SOC+U-tensmom0000644002504400250440000000005012337331330020373 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/US-LDA+SOC+U-tensmom/0000755002504400250440000000000012337331330021214 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/US-LDA+SOC+U-tensmom/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330021553 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/US-LDA+SOC+U-tensmom/elk.in0000644002504400250440000000433612337331330022325 0ustar00dewhurstdewhurst00000000000000 ! US in FM structure with magnetic moment along easy-axis [111] with LDA+SOC+U ! and automatic interpolation double counting (dftu=3). Values of Slater ! parameters for Uranium are calculated through a Yukawa potential with ! screening length automatically determined such that U=1.0 eV (0.036749 Ha). ! In this way there is only one free parameter to be chosen. ! Check the tensor moment decomposition of the density matrix and of the ! Hartree-Fock DFT+U energy (and its convergence) in TMDFTU.OUT (see PRB 80, ! 035121 (2009)). Observe the large 011 (spin-polarization), 110 (SOC-like term) ! and 615 (large multipole of magnetization density) contributions to the ! exchange-energy. ! Example by Francesco Cricchio. tasks 0 ! DFT+U block ! here interpolation double-counting is used (dftu=3) ! inpdftu=5 corresponds to determine the Yukawa screening length that produces ! U=1 eV (0.036749 Ha) through a secant algorithm dft+u 3 5 : dftu,inpdftu 1 3 0.0367493060 : is, l, U fixed ! the tensor moments are calculated and written to file at every iteration tmwrite .true. spinpol .true. spinorb .true. scale 10.36175041 ! fcc lattice vectors avec 0.0 0.5 0.5 0.5 0.0 0.5 0.5 0.5 0.0 atoms 2 : nspecies 'U.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 'S.in' : spfname 1 : natoms 0.5 0.5 0.5 0.0 0.0 0.0 : atposl, bfcmt ! large global magnetic field along easy-axis [111] bfieldc -2.0 -2.0 -2.0 ! the global large magnetic local in the cell is halved at every iteration ! this speeds up the convergence of magnetic calculations reducebf 0.5 ! this rgkmax is too small for an accurate calculation ! rgkmax for actinides must usually be increased around 9.0-9.5 rgkmax 8.0 ! convergence of magnetic moment with number of empty states ! must be checked nempty 8 sppath '../../species/' ! low convergence parameters for testing epspot 1.d-4 epsengy 1.d-2 ! larger betamax might help convergence betamax 1.0 beta0 0.05 ! this grid is too small for accurate magnetic moment ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/Si-hybrid-libxc0000644002504400250440000000005012337331330020077 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-hybrid-libxc/0000755002504400250440000000000012337331330020720 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-hybrid-libxc/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330021257 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-hybrid-libxc/elk.in0000644002504400250440000000112312337331330022020 0ustar00dewhurstdewhurst00000000000000 ! Hybrid functional example using libxc. Note that the DFT step should be run ! separately with task=0. Then the hybrid step should be run with task=5. ! Example by Tyrel McQueen. tasks 0 ! first run task=0 with PBE... xctype 100 101 130 !...then uncomment the following and run with task=5 for hybrid GGA ! (note that only the correlation functional is set) !xctype ! 100 0 406 lmaxvr 6 gmaxvr 10.0 swidth 0.001 ngridk 2 2 2 nempty 8 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 'Si.in' 2 0.00 0.00 0.00 0.25 0.25 0.25 elk-2.3.22/examples/PaxHeaders.22528/BN-ELF0000644002504400250440000000005012337331330016051 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/BN-ELF/0000755002504400250440000000000012337331330016672 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/BN-ELF/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017231 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/BN-ELF/elk.in0000644002504400250440000000101612337331330017773 0ustar00dewhurstdewhurst00000000000000 ! Electron localisation function (ELF) of cubic boron nitride. Note that the ELF ! is not continuous at the muffin-tin boundaries. To make it smooth increase ! several parameters such as rgkmax, gmaxvr, lmaxvr and lmaxapw. tasks 0 51 plot1d 2 400 0.0 0.0 0.0 1.0 1.0 1.0 avec 3.4204 3.4204 0.0000 3.4204 0.0000 3.4204 0.0000 3.4204 3.4204 sppath '../../species/' atoms 2 'B.in' 1 0.00 0.00 0.00 0.0 0.0 0.0 'N.in' 1 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.25 0.5 0.625 elk-2.3.22/examples/PaxHeaders.22528/Fe-FSM0000644002504400250440000000005012337331330016123 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-FSM/0000755002504400250440000000000012337331330016744 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-FSM/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017303 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-FSM/elk.in0000644002504400250440000000131312337331330020045 0ustar00dewhurstdewhurst00000000000000 ! Ferromagnetic bcc iron fixed spin moment example. tasks 0 ! small mixing parameter required beta0 0.05 spinpol .true. ! total fixed spin moment required fsmtype 1 ! fixed spin moment vector momfix 0.0 0.0 1.0 ! small magnetic field in the z-direction bfieldc 0.0 0.0 0.01 ! fairly large number of empty states required for magnetic cases nempty 8 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Ni-magnetic-response0000644002504400250440000000005012337331330021135 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-magnetic-response/0000755002504400250440000000000012337331330021756 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ni-magnetic-response/PaxHeaders.22528/CHI0_T.OUT0000644002504400250440000000005012337331330022551 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-magnetic-response/CHI0_T.OUT0000644002504400250440000001053212337331330023316 0ustar00dewhurstdewhurst00000000000000 0.000000000 -1.154821411 0.3333333333E-03 -1.164827291 0.6666666667E-03 -1.175162913 0.1000000000E-02 -1.185744916 0.1333333333E-02 -1.196478716 0.1666666667E-02 -1.207621907 0.2000000000E-02 -1.219497763 0.2333333333E-02 -1.232223448 0.2666666667E-02 -1.245908528 0.3000000000E-02 -1.260531294 0.3333333333E-02 -1.275979671 0.3666666667E-02 -1.292229298 0.4000000000E-02 -1.309320176 0.4333333333E-02 -1.327294106 0.4666666667E-02 -1.346204663 0.5000000000E-02 -1.366128001 0.5333333333E-02 -1.387165050 0.5666666667E-02 -1.409427110 0.6000000000E-02 -1.432985090 0.6333333333E-02 -1.457795841 0.6666666667E-02 -1.483633790 0.7000000000E-02 -1.510167250 0.7333333333E-02 -1.536847008 0.7666666667E-02 -1.561835629 0.8000000000E-02 -1.582224156 0.8333333333E-02 -1.597684450 0.8666666667E-02 -1.610462165 0.9000000000E-02 -1.620858506 0.9333333333E-02 -1.630610283 0.9666666667E-02 -1.638922724 0.1000000000E-01 -1.643053473 0.1033333333E-01 -1.645448631 0.1066666667E-01 -1.652724270 0.1100000000E-01 -1.670572497 0.1133333333E-01 -1.700381434 0.1166666667E-01 -1.740630183 0.1200000000E-01 -1.785759457 0.1233333333E-01 -1.830593693 0.1266666667E-01 -1.876598873 0.1300000000E-01 -1.928246000 0.1333333333E-01 -1.983324376 0.1366666667E-01 -2.033380873 0.1400000000E-01 -2.069624959 0.1433333333E-01 -2.090902422 0.1466666667E-01 -2.109513019 0.1500000000E-01 -2.141345131 0.1533333333E-01 -2.192268858 0.1566666667E-01 -2.259386462 0.1600000000E-01 -2.331470195 0.1633333333E-01 -2.398038090 0.1666666667E-01 -2.463600858 0.1700000000E-01 -2.544182383 0.1733333333E-01 -2.645795988 0.1766666667E-01 -2.762261267 0.1800000000E-01 -2.882387356 0.1833333333E-01 -2.993497980 0.1866666667E-01 -3.090160938 0.1900000000E-01 -3.179676047 0.1933333333E-01 -3.266766675 0.1966666667E-01 -3.341951077 0.000000000 -0.2939543084E-01 0.3333333333E-03 -0.3213679541E-01 0.6666666667E-03 -0.3481091029E-01 0.1000000000E-02 -0.3745716553E-01 0.1333333333E-02 -0.3987029375E-01 0.1666666667E-02 -0.4180701295E-01 0.2000000000E-02 -0.4337993659E-01 0.2333333333E-02 -0.4475734567E-01 0.2666666667E-02 -0.4611016640E-01 0.3000000000E-02 -0.4766199248E-01 0.3333333333E-02 -0.4949678787E-01 0.3666666667E-02 -0.5160790111E-01 0.4000000000E-02 -0.5402341098E-01 0.4333333333E-02 -0.5679818773E-01 0.4666666667E-02 -0.5999537815E-01 0.5000000000E-02 -0.6370055500E-01 0.5333333333E-02 -0.6804434954E-01 0.5666666667E-02 -0.7324059899E-01 0.6000000000E-02 -0.7961712642E-01 0.6333333333E-02 -0.8761410464E-01 0.6666666667E-02 -0.9771801385E-01 0.7000000000E-02 -0.1104111888 0.7333333333E-02 -0.1265127511 0.7666666667E-02 -0.1468804228 0.8000000000E-02 -0.1701832571 0.8333333333E-02 -0.1927291128 0.8666666667E-02 -0.2133675637 0.9000000000E-02 -0.2318547284 0.9333333333E-02 -0.2477381027 0.9666666667E-02 -0.2629743640 0.1000000000E-01 -0.2746909092 0.1033333333E-01 -0.2778302045 0.1066666667E-01 -0.2708704861 0.1100000000E-01 -0.2580725542 0.1133333333E-01 -0.2452315859 0.1166666667E-01 -0.2380939884 0.1200000000E-01 -0.2399555014 0.1233333333E-01 -0.2480525887 0.1266666667E-01 -0.2578369343 0.1300000000E-01 -0.2717019661 0.1333333333E-01 -0.2961360091 0.1366666667E-01 -0.3330868590 0.1400000000E-01 -0.3761207726 0.1433333333E-01 -0.4115902809 0.1466666667E-01 -0.4286249474 0.1500000000E-01 -0.4315805064 0.1533333333E-01 -0.4326856880 0.1566666667E-01 -0.4438577558 0.1600000000E-01 -0.4707978543 0.1633333333E-01 -0.5060429200 0.1666666667E-01 -0.5361600936 0.1700000000E-01 -0.5620980469 0.1733333333E-01 -0.5986382279 0.1766666667E-01 -0.6584007198 0.1800000000E-01 -0.7473556916 0.1833333333E-01 -0.8635987269 0.1866666667E-01 -0.9963339784 0.1900000000E-01 -1.140477958 0.1933333333E-01 -1.304628550 0.1966666667E-01 -1.502976398 elk-2.3.22/examples/Ni-magnetic-response/PaxHeaders.22528/CHI_T.OUT0000644002504400250440000000005012337331330022471 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-magnetic-response/CHI_T.OUT0000644002504400250440000001053212337331330023236 0ustar00dewhurstdewhurst00000000000000 0.000000000 -6.371303810 0.3333333333E-03 -6.685857265 0.6666666667E-03 -7.033125363 0.1000000000E-02 -7.413021262 0.1333333333E-02 -7.827484996 0.1666666667E-02 -8.297371391 0.2000000000E-02 -8.851778912 0.2333333333E-02 -9.519139536 0.2666666667E-02 -10.32536093 0.3000000000E-02 -11.27577796 0.3333333333E-02 -12.35002137 0.3666666667E-02 -13.47594999 0.4000000000E-02 -14.41399946 0.4333333333E-02 -14.50537243 0.4666666667E-02 -12.35378571 0.5000000000E-02 -6.396887702 0.5333333333E-02 2.082297719 0.5666666667E-02 8.537852437 0.6000000000E-02 11.09836882 0.6333333333E-02 11.17835558 0.6666666667E-02 10.29313610 0.7000000000E-02 9.189939544 0.7333333333E-02 8.118536840 0.7666666667E-02 7.161330481 0.8000000000E-02 6.394614141 0.8333333333E-02 5.851096379 0.8666666667E-02 5.468413677 0.9000000000E-02 5.204198426 0.9333333333E-02 5.031729567 0.9666666667E-02 4.914681526 0.1000000000E-01 4.890034929 0.1033333333E-01 4.974965003 0.1066666667E-01 5.111640464 0.1100000000E-01 5.186700036 0.1133333333E-01 5.128163521 0.1166666667E-01 4.935246497 0.1200000000E-01 4.675769404 0.1233333333E-01 4.425231752 0.1266666667E-01 4.200338247 0.1300000000E-01 3.973566366 0.1333333333E-01 3.741511337 0.1366666667E-01 3.528635333 0.1400000000E-01 3.358275103 0.1433333333E-01 3.237198552 0.1466666667E-01 3.152831080 0.1500000000E-01 3.082272934 0.1533333333E-01 3.004155452 0.1566666667E-01 2.905092898 0.1600000000E-01 2.797130658 0.1633333333E-01 2.703528386 0.1666666667E-01 2.628099447 0.1700000000E-01 2.551070711 0.1733333333E-01 2.460252322 0.1766666667E-01 2.361202917 0.1800000000E-01 2.264031176 0.1833333333E-01 2.175983780 0.1866666667E-01 2.097774533 0.1900000000E-01 2.023284329 0.1933333333E-01 1.949215549 0.1966666667E-01 1.878647118 0.000000000 -0.9905070562 0.3333333333E-03 -1.176628829 0.6666666667E-03 -1.394880703 0.1000000000E-02 -1.653518683 0.1333333333E-02 -1.951541679 0.1666666667E-02 -2.290019465 0.2000000000E-02 -2.691567145 0.2333333333E-02 -3.197097669 0.2666666667E-02 -3.876682371 0.3000000000E-02 -4.834317772 0.3333333333E-02 -6.211958811 0.3666666667E-02 -8.228567242 0.4000000000E-02 -11.21746977 0.4333333333E-02 -15.54391828 0.4666666667E-02 -21.07849178 0.5000000000E-02 -25.86681968 0.5333333333E-02 -26.28941975 0.5666666667E-02 -21.99367808 0.6000000000E-02 -16.51901112 0.6333333333E-02 -12.15898777 0.6666666667E-02 -9.193532834 0.7000000000E-02 -7.253289903 0.7333333333E-02 -5.986075031 0.7666666667E-02 -5.198342831 0.8000000000E-02 -4.755014554 0.8333333333E-02 -4.495540344 0.8666666667E-02 -4.306808146 0.9000000000E-02 -4.163688293 0.9333333333E-02 -4.027644430 0.9666666667E-02 -3.910649695 0.1000000000E-01 -3.814516060 0.1033333333E-01 -3.668960788 0.1066666667E-01 -3.395733350 0.1100000000E-01 -2.990412474 0.1133333333E-01 -2.530816924 0.1166666667E-01 -2.114302739 0.1200000000E-01 -1.803443998 0.1233333333E-01 -1.583223483 0.1266666667E-01 -1.401314461 0.1300000000E-01 -1.243025019 0.1333333333E-01 -1.129770109 0.1366666667E-01 -1.069316551 0.1400000000E-01 -1.045749005 0.1433333333E-01 -1.031159043 0.1466666667E-01 -1.000520022 0.1500000000E-01 -0.9444987393 0.1533333333E-01 -0.8677353320 0.1566666667E-01 -0.7903821396 0.1600000000E-01 -0.7342757779 0.1633333333E-01 -0.6961359971 0.1666666667E-01 -0.6535518269 0.1700000000E-01 -0.5975324230 0.1733333333E-01 -0.5419753301 0.1766666667E-01 -0.4997530069 0.1800000000E-01 -0.4732482033 0.1833333333E-01 -0.4579001682 0.1866666667E-01 -0.4456953974 0.1900000000E-01 -0.4335539453 0.1933333333E-01 -0.4256793467 0.1966666667E-01 -0.4261458375 elk-2.3.22/examples/Ni-magnetic-response/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330022315 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-magnetic-response/elk.in0000644002504400250440000000157512337331330023071 0ustar00dewhurstdewhurst00000000000000 ! Magnetic response of fcc nickel. Try plotting the transverse component as a ! function of frequency. Compare to B. Rousseau, A. Eiguren and A. Bergara, ! Phys. Rev. B 85, 054305 (2012) and references therein. tasks 0 330 ! energy cut-off for Kohn-Sham response function emaxrf 0.5 ! G-vector cut-off for response function gmaxrf 5.0 ! frequency plot range wplot 60 100 1 0 0.020 ! q-vector of response function vecql 0.1 0.1 0.0 spinpol .true. bfieldc 0.0 0.0 0.01 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.33 sppath '../../species/' atoms 1 : nspecies 'Ni.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ! dense k-point grid is required for response functions ngridk 10 10 10 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/LiF-BSE0000644002504400250440000000005012337331330016227 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/LiF-BSE/0000755002504400250440000000000012337331330017050 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/LiF-BSE/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017407 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/LiF-BSE/elk.in0000644002504400250440000000256212337331330020160 0ustar00dewhurstdewhurst00000000000000 ! BSE optical spectrum of lithium fluoride. This material has a prominent ! excitonic peak, which is absent in the usual RPA dielectric function. tasks 0 ! ground-state calculation 120 ! compute momentum matrix elements 121 ! compute RPA dielectric function with no local field contributions 180 ! generate RPA dielectric function with local field contributions 185 ! write BSE Hamiltonian matrix 186 ! diagonalise BSE matrix 187 ! generate BSE dielectric function scissor 0.21 lmaxvr 5 ! automatically determine the smallest possible G-vector grid gmaxvr 0.0 ! number of BSE valence states nvbse 3 ! number of BSE conduction states ncbse 4 ! G-vector cut-off of local contribution to RPA gmaxrf 3.0 swidth 0.005 nempty 8 wplot 800 100 0 : nwplot, ngrkf, nswplot 0.0 1.5 : wplot avec 3.80402 3.80402 0.00000 3.80402 0.00000 3.80402 0.00000 3.80402 3.80402 sppath '../../species/' atoms 2 : nspecies 'Li.in' : spfname 1 : natoms 0.0000 0.0000 0.0000 0.0 0.0 0.0 : atposl, bfcmt 'F.in' : spfname 1 : natoms 0.5000 0.5000 0.5000 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/Si-Hartree-Fock0000644002504400250440000000005012337331330017771 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-Hartree-Fock/0000755002504400250440000000000012337331330020612 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-Hartree-Fock/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330021151 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-Hartree-Fock/elk.in0000644002504400250440000000154212337331330021717 0ustar00dewhurstdewhurst00000000000000 ! Hartree-Fock calculation of silicon. Note that this is still an experimental ! feature in Elk. It is also quite slow and is best run using OpenMP on a ! multi-processor machine. ! Important: the exact exchange energy is only calculated on the last iteration. ! All previously calculated exchange energies are approximate. tasks 0 5 ! Hartree-Fock is treated as a second-variational correction to the Kohn-Sham ! problem. Thus a large number of empty states are required for convergence. nempty 8 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.25 0.25 0.25 elk-2.3.22/examples/PaxHeaders.22528/Fe-FSM-MT-AFM0000644002504400250440000000005012337331330017042 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-FSM-MT-AFM/0000755002504400250440000000000012337331330017663 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-FSM-MT-AFM/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020222 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-FSM-MT-AFM/elk.in0000644002504400250440000000203612337331330020767 0ustar00dewhurstdewhurst00000000000000 ! Antiferromagnetic bcc iron example with fixed spin moment in muffin-tin. ! Rememeber to put a small magnetic fields on atoms with same symmetry as ! fixed moment. This in order to correctly symmetrize the magnetization. ! Run by Fredrik Bultmark, Francesco Cricchio, Lars Nordstrom. tasks 0 ! antiferromagnetic local fixed spin moment calculation fsmtype 2 mommtfix 1 1 0.0 0.0 1.0 : is, ia, mommtfix 1 2 0.0 0.0 -1.0 : is, ia, mommtfix lmaxapw 10 ! fairly large number of empty states required for magnetic cases nempty 8 avec 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 scale 6.6 sppath '../../species/' ! note small magnetic fields on atoms with same symmetry as fixed moment atoms 1 : nspecies 'Fe.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.001 : atposl, bfcmt 0.5 0.5 0.5 0.0 0.0 -0.001 ! this k-point set is too small for calculation of accurate moments ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/Si-geom-opt0000644002504400250440000000005012337331330017246 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-geom-opt/0000755002504400250440000000000012337331330020067 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-geom-opt/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020426 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-geom-opt/elk.in0000644002504400250440000000113312337331330021170 0ustar00dewhurstdewhurst00000000000000 ! Silicon geometry optimisation example. The equilibrium atomic positions are ! found using tasks=2. Updated positions are written to GEOMETRY_OPT.OUT for ! each optimisation step. tasks 2 ! use Broyden mixing of the potential mixtype 3 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.27 0.27 0.27 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Au0000644002504400250440000000005012337331330015513 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Au/0000755002504400250440000000000012337331330016334 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Au/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330016673 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Au/elk.in0000644002504400250440000000124612337331330017442 0ustar00dewhurstdewhurst00000000000000 ! Example of spin-orbit coupling for Au. Try comparing the band structure ! without spin-orbit coupling. tasks 0 20 spinorb .true. avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.85 sppath '../../species/' atoms 1 : nspecies 'Au.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 plot1d 7 100 : nvp1d, npp1d 0.0 0.0 1.0 : vlvp1d 0.5 0.5 1.0 0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.5 0.25 -0.25 0.5 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/Al-STM0000644002504400250440000000005012337331330016143 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-STM/0000755002504400250440000000000012337331330016764 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Al-STM/PaxHeaders.22528/stm2d.general0000644002504400250440000000005012337331330020610 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-STM/stm2d.general0000644002504400250440000000027312337331330021356 0ustar00dewhurstdewhurst00000000000000file = ./STM2D.OUT grid = 200 x 200 format = ascii interleaving = field majority = column header = lines 1 field = locations, field0 structure = 2-vector, scalar type = float, float end elk-2.3.22/examples/Al-STM/PaxHeaders.22528/stm2d.net0000644002504400250440000000005012337331330017761 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-STM/stm2d.net0000644002504400250440000001263512337331330020534 0ustar00dewhurstdewhurst00000000000000// // time: Sun Oct 15 18:48:57 2006 // // version: 3.2.0 (format), 4.3.2 (DX) // // // MODULE main // workspace: width = 392, height = 525 // layout: snap = 0, width = 50, height = 50, align = NN // macro main( ) -> ( ) { // // node Import[1]: x = 40, y = 40, inputs = 6, label = Import // input[1]: defaulting = 0, visible = 1, type = 32, value = "stm2d.general" // main_Import_1_out_1 = Import( main_Import_1_in_1, main_Import_1_in_2, main_Import_1_in_3, main_Import_1_in_4, main_Import_1_in_5, main_Import_1_in_6 ) [instance: 1, cache: 1]; // // node Colormap[1]: x = 245, y = 132, inputs = 19, label = Colormap // input[1]: defaulting = 0, visible = 0, type = 16777224, value = { [0.0 0.0] [1.0 0.0] } // input[2]: defaulting = 0, visible = 0, type = 16777224, value = { [0.0 0.0] [1.0 0.0] } // input[3]: defaulting = 0, visible = 0, type = 16777224, value = { [0.0 0.0] [1.0 1.0] } // input[4]: defaulting = 0, visible = 0, type = 16777224, value = { [0.0 1.0] [1.0 1.0] } // input[5]: defaulting = 0, visible = 0, type = 32, value = "Colormap_1" // input[7]: defaulting = 1, visible = 0, type = 5, value = 0.0043241107 // input[8]: defaulting = 1, visible = 0, type = 5, value = 0.045520809 // input[9]: defaulting = 1, visible = 0, type = 1, value = 20 // input[12]: defaulting = 0, visible = 0, type = 16777221, value = { 0.0043241107 0.045520809 } // input[17]: defaulting = 0, visible = 0, type = 5, value = 0.0043241107 // input[18]: defaulting = 0, visible = 0, type = 5, value = 0.045520809 // window: position = (0.0000,0.0000), size = 0.6348x0.5859 // main_Colormap_1_out_1[cache: 2], main_Colormap_1_out_2[cache: 2] = Colormap( main_Colormap_1_in_1, main_Colormap_1_in_2, main_Colormap_1_in_3, main_Colormap_1_in_4, main_Colormap_1_in_5, main_Import_1_out_1, main_Colormap_1_in_7, main_Colormap_1_in_8, main_Colormap_1_in_9, main_Colormap_1_in_10, main_Colormap_1_in_11, main_Colormap_1_in_12, main_Colormap_1_in_13, main_Colormap_1_in_14, main_Colormap_1_in_15, main_Colormap_1_in_16, main_Colormap_1_in_17, main_Colormap_1_in_18, main_Colormap_1_in_19 ) [instance: 1, cache: 1]; // // node Color[1]: x = 81, y = 206, inputs = 5, label = Color // main_Color_1_out_1 = Color( main_Import_1_out_1, main_Colormap_1_out_1, main_Color_1_in_3, main_Color_1_in_4, main_Color_1_in_5 ) [instance: 1, cache: 1]; // // node AutoCamera[1]: x = 300, y = 292, inputs = 9, label = AutoCamera // input[3]: defaulting = 0, visible = 0, type = 5, value = 35.0 // input[4]: defaulting = 0, visible = 0, type = 1, value = 512 // input[5]: defaulting = 0, visible = 0, type = 5, value = 1.0 // input[9]: defaulting = 0, visible = 0, type = 32, value = "white" // main_AutoCamera_1_out_1 = AutoCamera( main_Color_1_out_1, main_AutoCamera_1_in_2, main_AutoCamera_1_in_3, main_AutoCamera_1_in_4, main_AutoCamera_1_in_5, main_AutoCamera_1_in_6, main_AutoCamera_1_in_7, main_AutoCamera_1_in_8, main_AutoCamera_1_in_9 ) [instance: 1, cache: 1]; // // node Render[1]: x = 174, y = 347, inputs = 3, label = Render // main_Render_1_out_1 = Render( main_Color_1_out_1, main_AutoCamera_1_out_1, main_Render_1_in_3 ) [instance: 1, cache: 1]; // // node Display[1]: x = 142, y = 463, inputs = 8, label = Display // depth: value = 24 // window: position = (0.0000,0.0000), size = 0.5137x0.7214 // main_Display_1_out_1[cache: 2] = Display( main_Render_1_out_1, main_Display_1_in_2, main_Display_1_in_3, main_Display_1_in_4, main_Display_1_in_5, main_Display_1_in_6, main_Display_1_in_7, main_Display_1_in_8 ) [instance: 1, cache: 1]; // network: end of macro body } main_Import_1_in_1 = "stm2d.general"; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; main_Import_1_in_4 = NULL; main_Import_1_in_5 = NULL; main_Import_1_in_6 = NULL; main_Import_1_out_1 = NULL; main_Colormap_1_in_1 = { [0.0 0.0] [1.0 0.0] }; main_Colormap_1_in_2 = { [0.0 0.0] [1.0 0.0] }; main_Colormap_1_in_3 = { [0.0 0.0] [1.0 1.0] }; main_Colormap_1_in_4 = { [0.0 1.0] [1.0 1.0] }; main_Colormap_1_in_5 = "Colormap_1"; main_Colormap_1_in_7 = NULL; main_Colormap_1_in_8 = NULL; main_Colormap_1_in_9 = NULL; main_Colormap_1_in_10 = NULL; main_Colormap_1_in_11 = NULL; main_Colormap_1_in_12 = { 0.0043241107 0.045520809 }; main_Colormap_1_in_13 = NULL; main_Colormap_1_in_14 = NULL; main_Colormap_1_in_15 = NULL; main_Colormap_1_in_16 = NULL; main_Colormap_1_in_17 = 0.0043241107; main_Colormap_1_in_18 = 0.045520809; main_Colormap_1_in_19 = NULL; main_Colormap_1_out_1 = NULL; main_Color_1_in_3 = NULL; main_Color_1_in_4 = NULL; main_Color_1_in_5 = NULL; main_Color_1_out_1 = NULL; main_AutoCamera_1_in_2 = NULL; main_AutoCamera_1_in_3 = 35.0; main_AutoCamera_1_in_4 = 512; main_AutoCamera_1_in_5 = 1.0; main_AutoCamera_1_in_6 = NULL; main_AutoCamera_1_in_7 = NULL; main_AutoCamera_1_in_8 = NULL; main_AutoCamera_1_in_9 = "white"; main_AutoCamera_1_out_1 = NULL; main_Render_1_in_3 = NULL; main_Render_1_out_1 = NULL; main_Display_1_in_2 = NULL; main_Display_1_in_3 = "X24,,"; main_Display_1_in_4 = NULL; main_Display_1_in_5 = NULL; main_Display_1_in_6 = NULL; main_Display_1_in_7 = NULL; main_Display_1_in_8 = NULL; Executive("product version 4 3 2"); $sync main(); elk-2.3.22/examples/Al-STM/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017323 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-STM/elk.in0000644002504400250440000000211612337331330020067 0ustar00dewhurstdewhurst00000000000000 ! STM image of the surface of aluminium with an embedded oygen atom. Try using ! OpenDX to plot the image. tasks 0 162 ! the z-coordinate of the plotting plane is the 'height' of the STM tip plot2d 0.0 0.0 0.25 2.0 0.0 0.25 0.0 2.0 0.25 200 200 ! use small cut-off just for testing rgkmax 6.0 avec 15.0000 0.00000 0.00000 0.00000 15.0000 0.00000 0.00000 0.00000 7.50000 sppath '../../species/' atoms 2 : nspecies 'Al.in' : spfname 7 : natoms; atposl, bfcmt below 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.5000 0.0000 0.0000 0.0000 0.0000 0.5000 0.0000 0.0000 0.0000 0.0000 0.0000 0.2500 0.2500 0.0000 0.0000 0.0000 0.0000 0.2500 0.7500 0.0000 0.0000 0.0000 0.0000 0.7500 0.2500 0.0000 0.0000 0.0000 0.0000 0.7500 0.7500 0.0000 0.0000 0.0000 0.0000 'O.in' 1 0.5000 0.5000 0.0000 0.0000 0.0000 0.0000 ngridk 1 1 1 vkloff 0.25 0.625 0.0 elk-2.3.22/examples/PaxHeaders.22528/MgB2-Fermi-surface0000644002504400250440000000005012337331330020363 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/MgB2-Fermi-surface/0000755002504400250440000000000012337331330021204 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/MgB2-Fermi-surface/PaxHeaders.22528/fermi.general0000644002504400250440000000005012337331330023101 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/MgB2-Fermi-surface/fermi.general0000644002504400250440000000035612337331330023651 0ustar00dewhurstdewhurst00000000000000file = FERMISURF.OUT grid = 24 x 24 x 16 format = ascii interleaving = field majority = column header = lines 1 field = locations, field0, field1, field2 structure = 3-vector, scalar, scalar, scalar type = float, float, float, float end elk-2.3.22/examples/MgB2-Fermi-surface/PaxHeaders.22528/fermi.net0000644002504400250440000000005012337331330022252 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/MgB2-Fermi-surface/fermi.net0000644002504400250440000001624212337331330023023 0ustar00dewhurstdewhurst00000000000000// // time: Mon Sep 3 18:12:53 2012 // // version: 3.2.0 (format), 4.4.4 (DX) // // // MODULE main // workspace: width = 527, height = 582 // layout: snap = 0, width = 50, height = 50, align = NN // macro main( ) -> ( ) { // // node Import[1]: x = 151, y = 24, inputs = 6, label = Import // input[1]: defaulting = 0, visible = 1, type = 32, value = "fermi.general" // main_Import_1_out_1 = Import( main_Import_1_in_1, main_Import_1_in_2, main_Import_1_in_3, main_Import_1_in_4, main_Import_1_in_5, main_Import_1_in_6 ) [instance: 1, cache: 1]; // // node Select[1]: x = 240, y = 119, inputs = 3, label = Select // input[2]: defaulting = 0, visible = 1, type = 1, value = 0 // main_Select_1_out_1 = Select( main_Import_1_out_1, main_Select_1_in_2, main_Select_1_in_3 ) [instance: 1, cache: 1]; // // node Isosurface[1]: x = 182, y = 209, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.0 // main_Isosurface_1_out_1 = Isosurface( main_Select_1_out_1, main_Isosurface_1_in_2, main_Isosurface_1_in_3, main_Isosurface_1_in_4, main_Isosurface_1_in_5, main_Isosurface_1_in_6 ) [instance: 1, cache: 1]; // // node Color[1]: x = 199, y = 297, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "red" // main_Color_1_out_1 = Color( main_Isosurface_1_out_1, main_Color_1_in_2, main_Color_1_in_3, main_Color_1_in_4, main_Color_1_in_5 ) [instance: 1, cache: 1]; // // node Select[2]: x = 319, y = 120, inputs = 3, label = Select // input[2]: defaulting = 0, visible = 1, type = 1, value = 1 // main_Select_2_out_1 = Select( main_Import_1_out_1, main_Select_2_in_2, main_Select_2_in_3 ) [instance: 2, cache: 1]; // // node Isosurface[2]: x = 310, y = 211, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.0 // main_Isosurface_2_out_1 = Isosurface( main_Select_2_out_1, main_Isosurface_2_in_2, main_Isosurface_2_in_3, main_Isosurface_2_in_4, main_Isosurface_2_in_5, main_Isosurface_2_in_6 ) [instance: 2, cache: 1]; // // node Color[2]: x = 316, y = 299, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "yellow" // main_Color_2_out_1 = Color( main_Isosurface_2_out_1, main_Color_2_in_2, main_Color_2_in_3, main_Color_2_in_4, main_Color_2_in_5 ) [instance: 2, cache: 1]; // // node Select[3]: x = 409, y = 122, inputs = 3, label = Select // input[2]: defaulting = 0, visible = 1, type = 1, value = 2 // main_Select_3_out_1 = Select( main_Import_1_out_1, main_Select_3_in_2, main_Select_3_in_3 ) [instance: 3, cache: 1]; // // node Isosurface[3]: x = 449, y = 213, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.0 // main_Isosurface_3_out_1 = Isosurface( main_Select_3_out_1, main_Isosurface_3_in_2, main_Isosurface_3_in_3, main_Isosurface_3_in_4, main_Isosurface_3_in_5, main_Isosurface_3_in_6 ) [instance: 3, cache: 1]; // // node Color[3]: x = 444, y = 300, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "green" // main_Color_3_out_1 = Color( main_Isosurface_3_out_1, main_Color_3_in_2, main_Color_3_in_3, main_Color_3_in_4, main_Color_3_in_5 ) [instance: 3, cache: 1]; // // node Collect[1]: x = 299, y = 392, inputs = 3, label = Collect // main_Collect_1_out_1 = Collect( main_Color_1_out_1, main_Color_2_out_1, main_Color_3_out_1 ) [instance: 1, cache: 1]; // // node AutoCamera[2]: x = 422, y = 412, inputs = 9, label = AutoCamera // input[2]: defaulting = 0, visible = 1, type = 8, value = [1.0 -0.25 0.5] // input[3]: defaulting = 0, visible = 0, type = 5, value = 4.0 // input[4]: defaulting = 0, visible = 0, type = 1, value = 800 // input[6]: defaulting = 0, visible = 0, type = 8, value = [0 0 1] // main_AutoCamera_2_out_1 = AutoCamera( main_Collect_1_out_1, main_AutoCamera_2_in_2, main_AutoCamera_2_in_3, main_AutoCamera_2_in_4, main_AutoCamera_2_in_5, main_AutoCamera_2_in_6, main_AutoCamera_2_in_7, main_AutoCamera_2_in_8, main_AutoCamera_2_in_9 ) [instance: 2, cache: 1]; // // node Render[1]: x = 255, y = 507, inputs = 3, label = Render // main_Render_1_out_1 = Render( main_Collect_1_out_1, main_AutoCamera_2_out_1, main_Render_1_in_3 ) [instance: 1, cache: 1]; // // node Display[1]: x = 451, y = 520, inputs = 8, label = Display // depth: value = 24 // window: position = (0.0089,0.0231), size = 0.4240x0.5944, screen = 0 // main_Display_1_out_1[cache: 2] = Display( main_Render_1_out_1, main_Display_1_in_2, main_Display_1_in_3, main_Display_1_in_4, main_Display_1_in_5, main_Display_1_in_6, main_Display_1_in_7, main_Display_1_in_8 ) [instance: 1, cache: 1]; // network: end of macro body } main_Import_1_in_1 = "fermi.general"; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; main_Import_1_in_4 = NULL; main_Import_1_in_5 = NULL; main_Import_1_in_6 = NULL; main_Import_1_out_1 = NULL; main_Select_1_in_2 = 0; main_Select_1_in_3 = NULL; main_Select_1_out_1 = NULL; main_Isosurface_1_in_2 = 0.0; main_Isosurface_1_in_3 = NULL; main_Isosurface_1_in_4 = NULL; main_Isosurface_1_in_5 = NULL; main_Isosurface_1_in_6 = NULL; main_Isosurface_1_out_1 = NULL; main_Color_1_in_2 = "red"; main_Color_1_in_3 = NULL; main_Color_1_in_4 = NULL; main_Color_1_in_5 = NULL; main_Color_1_out_1 = NULL; main_Select_2_in_2 = 1; main_Select_2_in_3 = NULL; main_Select_2_out_1 = NULL; main_Isosurface_2_in_2 = 0.0; main_Isosurface_2_in_3 = NULL; main_Isosurface_2_in_4 = NULL; main_Isosurface_2_in_5 = NULL; main_Isosurface_2_in_6 = NULL; main_Isosurface_2_out_1 = NULL; main_Color_2_in_2 = "yellow"; main_Color_2_in_3 = NULL; main_Color_2_in_4 = NULL; main_Color_2_in_5 = NULL; main_Color_2_out_1 = NULL; main_Select_3_in_2 = 2; main_Select_3_in_3 = NULL; main_Select_3_out_1 = NULL; main_Isosurface_3_in_2 = 0.0; main_Isosurface_3_in_3 = NULL; main_Isosurface_3_in_4 = NULL; main_Isosurface_3_in_5 = NULL; main_Isosurface_3_in_6 = NULL; main_Isosurface_3_out_1 = NULL; main_Color_3_in_2 = "green"; main_Color_3_in_3 = NULL; main_Color_3_in_4 = NULL; main_Color_3_in_5 = NULL; main_Color_3_out_1 = NULL; main_Collect_1_out_1 = NULL; main_AutoCamera_2_in_2 = [1.0 -0.25 0.5]; main_AutoCamera_2_in_3 = 4.0; main_AutoCamera_2_in_4 = 800; main_AutoCamera_2_in_5 = NULL; main_AutoCamera_2_in_6 = [0 0 1]; main_AutoCamera_2_in_7 = NULL; main_AutoCamera_2_in_8 = NULL; main_AutoCamera_2_in_9 = NULL; main_AutoCamera_2_out_1 = NULL; main_Render_1_in_3 = NULL; main_Render_1_out_1 = NULL; main_Display_1_in_2 = NULL; main_Display_1_in_3 = "X24,,"; main_Display_1_in_4 = NULL; main_Display_1_in_5 = NULL; main_Display_1_in_6 = NULL; main_Display_1_in_7 = NULL; main_Display_1_in_8 = NULL; Executive("product version 4 4 4"); $sync main(); elk-2.3.22/examples/MgB2-Fermi-surface/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330021543 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/MgB2-Fermi-surface/elk.in0000644002504400250440000000156612337331330022317 0ustar00dewhurstdewhurst00000000000000 ! Fermi surface of MgB2 plotted with OpenDX. In this example, the surfaces from ! different bands are separated in the 3D plot. tasks 0 101 ngridk 6 6 4 ! plot a 2x2x2 reciprocal space cell plot3d 0.0 0.0 0.0 2.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 2.0 24 24 16 avec 5.831694400 0.000000000 0.000000000 -2.915847200 5.050395498 0.000000000 0.000000000 0.000000000 6.659394380 sppath '../../species/' atoms 2 : nspecies 'Mg.in' : spfname 1 : natoms; atposl below 0.00000000 0.00000000 0.00000000 'B.in' : spfname 2 : natoms; atposl below 0.33333333 0.66666667 0.50000000 0.66666667 0.33333333 0.50000000 elk-2.3.22/examples/PaxHeaders.22528/ununhexium0000644002504400250440000000005012337331330017353 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/ununhexium/0000755002504400250440000000000012337331330020174 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/ununhexium/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020533 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/ununhexium/elk.in0000644002504400250440000000267412337331330021310 0ustar00dewhurstdewhurst00000000000000 ! Ununhexium in the simple cubic unit cell (like polonium). This example is to ! demonstrate how species files can be generated with the 'species' block. ! run the ground state and find the electric field gradient (EFG) tasks 0 115 ! this block tells the code to generate a Uuh.in species file before any tasks ! are performed species 116 : atomic number 'Uuh' 'ununhexium' : symbol, name 292.0 : standard atomic weight (units of 1/12 carbon-12) 2.2 : muffin-tin radius 31 : number of occupied states 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 6 5 3 3 6 5 3 4 8 6 0 1 2 6 1 1 2 6 1 2 4 6 2 2 4 6 2 3 6 7 0 1 2 7 1 1 2 7 1 2 2 ! include spin-orbit coupling spinorb .true. ! add a small field to determine if Uuh has a moment bfieldc 0.0 0.0 0.1 avec 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 ! use lattice parameter of polonium scale 6.312 atoms 1 : nspecies 'Uuh.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/HEG-HF0000644002504400250440000000005012337331330016044 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/HEG-HF/0000755002504400250440000000000012337331330016665 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/HEG-HF/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017224 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/HEG-HF/elk.in0000644002504400250440000000065212337331330017773 0ustar00dewhurstdewhurst00000000000000 ! Hartree-Fock ground state of the homogenous electron gas. The Wigner radius ! (r_s) is written to INFO.OUT. Note that the exact exchange energy is only ! computed during the last iteration. tasks 0 5 chgexs 10.0 ! use the unit cell of aluminium avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.75 ! note that low density gases require denser k-point grids! ngridk 2 2 2 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Fe-fast0000644002504400250440000000005012337331330016433 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-fast/0000755002504400250440000000000012337331330017254 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-fast/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330017613 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Fe-fast/elk.in0000644002504400250440000000172712337331330020366 0ustar00dewhurstdewhurst00000000000000 ! Ferromagnetic bcc iron example. Note the large global magnetic field that is ! halved at every iteration. This procedure speeds up the convergence of ! magnetic calculations. Compare the number of iterations with the Fe example. tasks 0 spinpol .true. ! large magnetic field in the z-direction bfieldc 0.0 0.0 2.0 ! the magnetic field is halved at every iteration reducebf 0.5 ! Broyden mixing with spin-polarized calculation works only if a large field is ! provided so that the system does not get stuck in a non-magnetic solution mixtype 3 ! fairly large number of empty states required for magnetic cases nempty 8 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Ni-Fermi-surface0000644002504400250440000000005012337331330020202 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-Fermi-surface/0000755002504400250440000000000012337331330021023 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ni-Fermi-surface/PaxHeaders.22528/fermi.net0000644002504400250440000000005012337331330022071 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-Fermi-surface/fermi.net0000644002504400250440000003707512337331330022651 0ustar00dewhurstdewhurst00000000000000// // time: Thu Nov 6 12:08:29 2008 // // version: 3.2.0 (format), 4.4.0 (DX) // // // MODULE main // workspace: width = 372, height = 548 // layout: snap = 0, width = 50, height = 50, align = NN // macro main( ) -> ( ) { // // node Import[1]: x = 147, y = 71, inputs = 6, label = Import // input[1]: defaulting = 0, visible = 1, type = 32, value = "fermi_up.general" // main_Import_1_out_1 = Import( main_Import_1_in_1, main_Import_1_in_2, main_Import_1_in_3, main_Import_1_in_4, main_Import_1_in_5, main_Import_1_in_6 ) [instance: 1, cache: 1]; // // node Isosurface[1]: x = 146, y = 196, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.0 // main_Isosurface_1_out_1 = Isosurface( main_Import_1_out_1, main_Isosurface_1_in_2, main_Isosurface_1_in_3, main_Isosurface_1_in_4, main_Isosurface_1_in_5, main_Isosurface_1_in_6 ) [instance: 1, cache: 1]; // // node Color[1]: x = 154, y = 315, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "green" // main_Color_1_out_1 = Color( main_Isosurface_1_out_1, main_Color_1_in_2, main_Color_1_in_3, main_Color_1_in_4, main_Color_1_in_5 ) [instance: 1, cache: 1]; // // node Import[2]: x = 291, y = 73, inputs = 6, label = Import // input[1]: defaulting = 0, visible = 1, type = 32, value = "fermi_dn.general" // main_Import_2_out_1 = Import( main_Import_2_in_1, main_Import_2_in_2, main_Import_2_in_3, main_Import_2_in_4, main_Import_2_in_5, main_Import_2_in_6 ) [instance: 2, cache: 1]; // // node Isosurface[2]: x = 290, y = 194, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.0 // main_Isosurface_2_out_1 = Isosurface( main_Import_2_out_1, main_Isosurface_2_in_2, main_Isosurface_2_in_3, main_Isosurface_2_in_4, main_Isosurface_2_in_5, main_Isosurface_2_in_6 ) [instance: 2, cache: 1]; // // node Color[2]: x = 300, y = 313, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "yellow" // main_Color_2_out_1 = Color( main_Isosurface_2_out_1, main_Color_2_in_2, main_Color_2_in_3, main_Color_2_in_4, main_Color_2_in_5 ) [instance: 2, cache: 1]; // // node Collect[1]: x = 231, y = 399, inputs = 2, label = Collect // main_Collect_1_out_1 = Collect( main_Color_1_out_1, main_Color_2_out_1 ) [instance: 1, cache: 1]; // // node Image[2]: x = 283, y = 486, inputs = 49, label = Image // input[1]: defaulting = 0, visible = 0, type = 32, value = "Image_2" // input[4]: defaulting = 0, visible = 0, type = 1, value = 1 // input[5]: defaulting = 0, visible = 0, type = 8, value = [0.459851 0.459851 0.459851] // input[6]: defaulting = 0, visible = 0, type = 8, value = [5.36756 3.53923 7.97489] // input[7]: defaulting = 0, visible = 0, type = 5, value = 5.08525 // input[8]: defaulting = 0, visible = 0, type = 1, value = 640 // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.75 // input[10]: defaulting = 0, visible = 0, type = 8, value = [-0.0834371 0.940039 -0.330704] // input[11]: defaulting = 1, visible = 0, type = 5, value = 30.0002 // input[12]: defaulting = 0, visible = 0, type = 1, value = 0 // input[14]: defaulting = 0, visible = 0, type = 1, value = 1 // input[15]: defaulting = 1, visible = 0, type = 32, value = "none" // input[16]: defaulting = 1, visible = 0, type = 32, value = "none" // input[17]: defaulting = 1, visible = 0, type = 1, value = 1 // input[18]: defaulting = 1, visible = 0, type = 1, value = 1 // input[19]: defaulting = 0, visible = 0, type = 1, value = 0 // input[29]: defaulting = 1, visible = 0, type = 3, value = 0 // input[41]: defaulting = 0, visible = 0, type = 32, value = "none" // depth: value = 24 // window: position = (0.0104,0.0600), size = 0.4542x0.5800, screen = 0 // internal caching: 1 // main_Image_2_out_1, main_Image_2_out_2, main_Image_2_out_3 = Image( main_Image_2_in_1, main_Collect_1_out_1, main_Image_2_in_3, main_Image_2_in_4, main_Image_2_in_5, main_Image_2_in_6, main_Image_2_in_7, main_Image_2_in_8, main_Image_2_in_9, main_Image_2_in_10, main_Image_2_in_11, main_Image_2_in_12, main_Image_2_in_13, main_Image_2_in_14, main_Image_2_in_15, main_Image_2_in_16, main_Image_2_in_17, main_Image_2_in_18, main_Image_2_in_19, main_Image_2_in_20, main_Image_2_in_21, main_Image_2_in_22, main_Image_2_in_23, main_Image_2_in_24, main_Image_2_in_25, main_Image_2_in_26, main_Image_2_in_27, main_Image_2_in_28, main_Image_2_in_29, main_Image_2_in_30, main_Image_2_in_31, main_Image_2_in_32, main_Image_2_in_33, main_Image_2_in_34, main_Image_2_in_35, main_Image_2_in_36, main_Image_2_in_37, main_Image_2_in_38, main_Image_2_in_39, main_Image_2_in_40, main_Image_2_in_41, main_Image_2_in_42, main_Image_2_in_43, main_Image_2_in_44, main_Image_2_in_45, main_Image_2_in_46, main_Image_2_in_47, main_Image_2_in_48, main_Image_2_in_49 ) [instance: 2, cache: 1]; // network: end of macro body CacheScene(main_Image_2_in_1, main_Image_2_out_1, main_Image_2_out_2); } main_Import_1_in_1 = "fermi_up.general"; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; main_Import_1_in_4 = NULL; main_Import_1_in_5 = NULL; main_Import_1_in_6 = NULL; main_Import_1_out_1 = NULL; main_Isosurface_1_in_2 = 0.0; main_Isosurface_1_in_3 = NULL; main_Isosurface_1_in_4 = NULL; main_Isosurface_1_in_5 = NULL; main_Isosurface_1_in_6 = NULL; main_Isosurface_1_out_1 = NULL; main_Color_1_in_2 = "green"; main_Color_1_in_3 = NULL; main_Color_1_in_4 = NULL; main_Color_1_in_5 = NULL; main_Color_1_out_1 = NULL; main_Import_2_in_1 = "fermi_dn.general"; main_Import_2_in_2 = NULL; main_Import_2_in_3 = NULL; main_Import_2_in_4 = NULL; main_Import_2_in_5 = NULL; main_Import_2_in_6 = NULL; main_Import_2_out_1 = NULL; main_Isosurface_2_in_2 = 0.0; main_Isosurface_2_in_3 = NULL; main_Isosurface_2_in_4 = NULL; main_Isosurface_2_in_5 = NULL; main_Isosurface_2_in_6 = NULL; main_Isosurface_2_out_1 = NULL; main_Color_2_in_2 = "yellow"; main_Color_2_in_3 = NULL; main_Color_2_in_4 = NULL; main_Color_2_in_5 = NULL; main_Color_2_out_1 = NULL; main_Collect_1_out_1 = NULL; macro Image( id, object, where, useVector, to, from, width, resolution, aspect, up, viewAngle, perspective, options, buttonState = 1, buttonUpApprox = "none", buttonDownApprox = "none", buttonUpDensity = 1, buttonDownDensity = 1, renderMode = 0, defaultCamera, reset, backgroundColor, throttle, RECenable = 0, RECfile, RECformat, RECresolution, RECaspect, AAenable = 0, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, interactionMode, title, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels, webOptions) -> ( object, camera, where) { ImageMessage( id, backgroundColor, throttle, RECenable, RECfile, RECformat, RECresolution, RECaspect, AAenable, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels, interactionMode, title, renderMode, buttonUpApprox, buttonDownApprox, buttonUpDensity, buttonDownDensity) [instance: 1, cache: 1]; autoCamera = AutoCamera( object, "front", object, resolution, aspect, [0,1,0], perspective, viewAngle, backgroundColor) [instance: 1, cache: 1]; realCamera = Camera( to, from, width, resolution, aspect, up, perspective, viewAngle, backgroundColor) [instance: 1, cache: 1]; coloredDefaultCamera = UpdateCamera(defaultCamera, background=backgroundColor) [instance: 1, cache: 1]; nullDefaultCamera = Inquire(defaultCamera, "is null + 1") [instance: 1, cache: 1]; resetCamera = Switch( nullDefaultCamera, coloredDefaultCamera, autoCamera) [instance: 1, cache: 1]; resetNull = Inquire( reset, "is null + 1") [instance: 2, cache: 1]; reset = Switch( resetNull, reset, 0) [instance: 2, cache: 1]; whichCamera = Compute( "($0 != 0 || $1 == 0) ? 1 : 2", reset, useVector) [instance: 1, cache: 1]; camera = Switch( whichCamera, resetCamera, realCamera) [instance: 3, cache: 1]; AAobject = AutoAxes( object, camera, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels) [instance: 1, cache: 1]; switchAAenable = Compute("$0+1", AAenable) [instance: 2, cache: 1]; object = Switch( switchAAenable, object, AAobject) [instance:4, cache: 1]; SWapproximation_options = Switch( buttonState, buttonUpApprox, buttonDownApprox) [instance: 5, cache: 1]; SWdensity_options = Switch( buttonState, buttonUpDensity, buttonDownDensity) [instance: 6, cache: 1]; HWapproximation_options = Format( "%s,%s", buttonDownApprox, buttonUpApprox) [instance: 1, cache: 1]; HWdensity_options = Format( "%d,%d", buttonDownDensity, buttonUpDensity) [instance: 2, cache: 1]; switchRenderMode = Compute( "$0+1", renderMode) [instance: 3, cache: 1]; approximation_options = Switch( switchRenderMode, SWapproximation_options, HWapproximation_options) [instance: 7, cache: 1]; density_options = Switch( switchRenderMode, SWdensity_options, HWdensity_options) [instance: 8, cache: 1]; renderModeString = Switch( switchRenderMode, "software", "hardware")[instance: 9, cache: 1]; object_tag = Inquire( object, "object tag")[instance: 3, cache: 1]; annoted_object = Options( object, "send boxes", 0, "cache", 1, "object tag", object_tag, "ddcamera", whichCamera, "rendering approximation", approximation_options, "render every", density_options, "button state", buttonState, "rendering mode", renderModeString) [instance: 1, cache: 1]; RECresNull = Inquire( RECresolution, "is null + 1") [instance: 4, cache: 1]; ImageResolution = Inquire( camera, "camera resolution") [instance: 5, cache: 1]; RECresolution = Switch( RECresNull, RECresolution, ImageResolution) [instance: 10, cache: 1]; RECaspectNull = Inquire( RECaspect, "is null + 1") [instance: 6, cache: 1]; ImageAspect = Inquire( camera, "camera aspect") [instance: 7, cache: 1]; RECaspect = Switch( RECaspectNull, RECaspect, ImageAspect) [instance: 11, cache: 1]; switchRECenable = Compute( "$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4", RECenable, switchRenderMode, RECresolution, ImageResolution, RECaspect, ImageAspect) [instance: 4, cache: 1]; NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject = Route(switchRECenable, annoted_object); Display( NoRECobject, camera, where, throttle) [instance: 1, cache: 1]; image = Render( RECNoRerenderObject, camera) [instance: 1, cache: 1]; Display( image, NULL, where, throttle) [instance: 2, cache: 1]; WriteImage( image, RECfile, RECformat) [instance: 1, cache: 1]; rec_where = Display( RECNoRerHW, camera, where, throttle) [instance: 1, cache: 0]; rec_image = ReadImageWindow( rec_where) [instance: 1, cache: 1]; WriteImage( rec_image, RECfile, RECformat) [instance: 1, cache: 1]; RECupdateCamera = UpdateCamera( camera, resolution=RECresolution, aspect=RECaspect) [instance: 2, cache: 1]; Display( RECRerenderObject, camera, where, throttle) [instance: 1, cache: 1]; RECRerenderObject = ScaleScreen( RECRerenderObject, NULL, RECresolution, camera) [instance: 1, cache: 1]; image = Render( RECRerenderObject, RECupdateCamera) [instance: 2, cache: 1]; WriteImage( image, RECfile, RECformat) [instance: 2, cache: 1]; } main_Image_2_in_1 = "Image_2"; main_Image_2_in_3 = "X24,,"; main_Image_2_in_4 = 1; main_Image_2_in_5 = [0.459851 0.459851 0.459851]; main_Image_2_in_6 = [5.36756 3.53923 7.97489]; main_Image_2_in_7 = 5.08525; main_Image_2_in_8 = 640; main_Image_2_in_9 = 0.75; main_Image_2_in_10 = [-0.0834371 0.940039 -0.330704]; main_Image_2_in_11 = NULL; main_Image_2_in_12 = 0; main_Image_2_in_13 = NULL; main_Image_2_in_14 = 1; main_Image_2_in_15 = NULL; main_Image_2_in_16 = NULL; main_Image_2_in_17 = NULL; main_Image_2_in_18 = NULL; main_Image_2_in_19 = 0; main_Image_2_in_20 = NULL; main_Image_2_in_21 = NULL; main_Image_2_in_22 = NULL; main_Image_2_in_23 = NULL; main_Image_2_in_25 = NULL; main_Image_2_in_26 = NULL; main_Image_2_in_27 = NULL; main_Image_2_in_28 = NULL; main_Image_2_in_29 = NULL; main_Image_2_in_30 = NULL; main_Image_2_in_31 = NULL; main_Image_2_in_32 = NULL; main_Image_2_in_33 = NULL; main_Image_2_in_34 = NULL; main_Image_2_in_35 = NULL; main_Image_2_in_36 = NULL; main_Image_2_in_37 = NULL; main_Image_2_in_38 = NULL; main_Image_2_in_39 = NULL; main_Image_2_in_40 = NULL; main_Image_2_in_41 = "none"; main_Image_2_in_42 = NULL; main_Image_2_in_43 = NULL; main_Image_2_in_44 = NULL; main_Image_2_in_45 = NULL; main_Image_2_in_46 = NULL; main_Image_2_in_47 = NULL; main_Image_2_in_48 = NULL; main_Image_2_in_49 = NULL; Executive("product version 4 4 0"); $sync main(); elk-2.3.22/examples/Ni-Fermi-surface/PaxHeaders.22528/fermi_dn.general0000644002504400250440000000005012337331330023401 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-Fermi-surface/fermi_dn.general0000644002504400250440000000030512337331330024143 0ustar00dewhurstdewhurst00000000000000file = ./FERMISURF_DN.OUT grid = 40 x 40 x 40 format = ascii interleaving = field majority = column header = lines 1 field = locations, field0 structure = 3-vector, scalar type = float, float end elk-2.3.22/examples/Ni-Fermi-surface/PaxHeaders.22528/fermi_up.general0000644002504400250440000000005012337331330023424 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-Fermi-surface/fermi_up.general0000644002504400250440000000030512337331330024166 0ustar00dewhurstdewhurst00000000000000file = ./FERMISURF_UP.OUT grid = 40 x 40 x 40 format = ascii interleaving = field majority = column header = lines 1 field = locations, field0 structure = 3-vector, scalar type = float, float end elk-2.3.22/examples/Ni-Fermi-surface/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330021362 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Ni-Fermi-surface/elk.in0000644002504400250440000000152412337331330022130 0ustar00dewhurstdewhurst00000000000000 ! Ferromagnetic nickel Fermi surface. Note that the spin-up and -down surfaces ! are separated into the files FERMISURF_UP.OUT and FERMISURF_DN.OUT. ! Use OpenDX with the files in this directory to produce the 3D plot. tasks 0 100 ! define box corners and grid size for 3D plot, first point is the origin plot3d 0.0 0.0 0.0 : vclp3d 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 40 40 40 : np3d spinpol .true. bfieldc 0.0 0.0 0.01 ! small smearing width required for precise Fermi energy swidth 0.001 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.33 sppath '../../species/' atoms 1 : nspecies 'Ni.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 8 8 8 elk-2.3.22/examples/PaxHeaders.22528/Al-Eliashberg0000644002504400250440000000005012337331330017545 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/0000755002504400250440000000000012337331330020366 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/MCMILLAN.OUT0000644002504400250440000000005012337331330021407 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/MCMILLAN.OUT0000644002504400250440000000053212337331330022153 0ustar00dewhurstdewhurst00000000000000 Electron-phonon coupling constant, lambda : 0.4755993984 Logarithmic average frequency : 0.1010570375E-02 RMS average frequency : 0.1096145743E-02 Coulomb pseudopotential, mu* : 0.1500000000 McMillan-Allen-Dynes superconducting critical temperature [Eq. 34, Phys. Rev. B 12, 905 (1975)] (kelvin) : 1.155421145 elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/PHDOS.OUT0000644002504400250440000000005012337331330021070 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/PHDOS.OUT0000644002504400250440000004410412337331330021637 0ustar00dewhurstdewhurst00000000000000 -0.1716855986E-03 0.000000000 -0.1679085154E-03 0.000000000 -0.1641314322E-03 0.000000000 -0.1603543491E-03 0.000000000 -0.1565772659E-03 0.000000000 -0.1528001827E-03 0.000000000 -0.1490230996E-03 0.000000000 -0.1452460164E-03 0.000000000 -0.1414689332E-03 0.000000000 -0.1376918500E-03 0.000000000 -0.1339147669E-03 0.000000000 -0.1301376837E-03 0.000000000 -0.1263606005E-03 0.000000000 -0.1225835174E-03 0.000000000 -0.1188064342E-03 0.000000000 -0.1150293510E-03 0.000000000 -0.1112522679E-03 0.000000000 -0.1074751847E-03 0.000000000 -0.1036981015E-03 0.000000000 -0.9992101836E-04 0.000000000 -0.9614393519E-04 0.000000000 -0.9236685203E-04 0.000000000 -0.8858976886E-04 0.000000000 -0.8481268569E-04 0.000000000 -0.8103560252E-04 0.000000000 -0.7725851935E-04 0.000000000 -0.7348143618E-04 0.000000000 -0.6970435302E-04 0.000000000 -0.6592726985E-04 0.000000000 -0.6215018668E-04 0.000000000 -0.5837310351E-04 0.000000000 -0.5459602034E-04 0.000000000 -0.5081893717E-04 0.000000000 -0.4704185401E-04 0.000000000 -0.4326477084E-04 0.000000000 -0.3948768767E-04 0.000000000 -0.3571060450E-04 0.000000000 -0.3193352133E-04 0.000000000 -0.2815643816E-04 0.000000000 -0.2437935500E-04 0.000000000 -0.2060227183E-04 0.000000000 -0.1682518866E-04 0.000000000 -0.1304810549E-04 0.000000000 -0.9271022322E-05 0.000000000 -0.5493939154E-05 0.000000000 -0.1716855986E-05 0.7942636861 0.2060227183E-05 0.000000000 0.5837310351E-05 0.000000000 0.9614393519E-05 0.000000000 0.1339147669E-04 1.059018248 0.1716855986E-04 0.000000000 0.2094564302E-04 0.000000000 0.2472272619E-04 5.824600365 0.2849980936E-04 0.000000000 0.3227689253E-04 4.765582117 0.3605397570E-04 0.000000000 0.3983105887E-04 7.413127737 0.4360814203E-04 3.706563868 0.4738522520E-04 6.354109489 0.5116230837E-04 14.29674635 0.5493939154E-04 9.001655109 0.5871647471E-04 6.354109489 0.6249355788E-04 6.354109489 0.6627064104E-04 19.06232847 0.7004772421E-04 6.354109489 0.7382480738E-04 18.53281934 0.7760189055E-04 28.59349270 0.8137897372E-04 15.88527372 0.8515605689E-04 18.00331022 0.8893314005E-04 17.47380109 0.9271022322E-04 16.94429197 0.9648730639E-04 33.35907482 0.1002643896E-03 31.77054744 0.1040414727E-03 31.77054744 0.1078185559E-03 25.41643796 0.1115956391E-03 25.41643796 0.1153727222E-03 45.53778467 0.1191498054E-03 41.30171168 0.1229268886E-03 31.77054744 0.1267039717E-03 51.36238503 0.1304810549E-03 47.65582117 0.1342581381E-03 37.59514781 0.1380352212E-03 46.06729379 0.1418123044E-03 58.77551277 0.1455893876E-03 38.12465693 0.1493664707E-03 82.60342335 0.1531435539E-03 55.59845803 0.1569206371E-03 75.71980474 0.1606977203E-03 61.95256752 0.1644748034E-03 57.18698540 0.1682518866E-03 76.24931387 0.1720289698E-03 84.72145985 0.1758060529E-03 85.78047810 0.1795831361E-03 86.83949635 0.1833602193E-03 92.13458759 0.1871373024E-03 76.24931387 0.1909143856E-03 100.0772244 0.1946914688E-03 88.95753284 0.1984685519E-03 139.7904088 0.2022456351E-03 88.42802372 0.2060227183E-03 114.3739708 0.2097998014E-03 117.5510255 0.2135768846E-03 102.1952609 0.2173539678E-03 119.1395529 0.2211310509E-03 176.3265383 0.2249081341E-03 125.4936624 0.2286852173E-03 126.5526807 0.2324623005E-03 154.0871551 0.2362393836E-03 139.7904088 0.2400164668E-03 135.0248266 0.2437935500E-03 179.5035931 0.2475706331E-03 184.2691752 0.2513477163E-03 169.4429197 0.2551247995E-03 179.5035931 0.2589018826E-03 159.3822463 0.2626789658E-03 190.6232847 0.2664560490E-03 184.2691752 0.2702331321E-03 231.9249963 0.2740102153E-03 204.3905219 0.2777872985E-03 227.1594142 0.2815643816E-03 203.3315036 0.2853414648E-03 216.0397226 0.2891185480E-03 246.2217427 0.2928956311E-03 258.9299617 0.2966727143E-03 236.1610693 0.3004497975E-03 295.4660912 0.3042268806E-03 205.4495401 0.3080039638E-03 277.9922901 0.3117810470E-03 295.4660912 0.3155581302E-03 287.5234544 0.3193352133E-03 302.8792190 0.3231122965E-03 343.1219124 0.3268893797E-03 246.2217427 0.3306664628E-03 344.7104398 0.3344435460E-03 336.7678029 0.3382206292E-03 339.9448577 0.3419977123E-03 387.0711697 0.3457747955E-03 309.7628376 0.3495518787E-03 381.7760785 0.3533289618E-03 390.7777336 0.3571060450E-03 371.7154051 0.3608831282E-03 396.6023339 0.3646602113E-03 446.3761916 0.3684372945E-03 395.5433157 0.3722143777E-03 432.0794452 0.3759914608E-03 457.4958832 0.3797685440E-03 433.6679726 0.3835456272E-03 445.8466825 0.3873227104E-03 479.7352664 0.3910997935E-03 487.6779033 0.3948768767E-03 524.7435420 0.3986539599E-03 524.2140328 0.4024310430E-03 484.5008485 0.4062081262E-03 533.7451971 0.4099852094E-03 580.8715091 0.4137622925E-03 560.7501624 0.4175393757E-03 554.3960529 0.4213164589E-03 600.4633467 0.4250935420E-03 559.1616350 0.4288706252E-03 616.3486204 0.4326477084E-03 669.8290419 0.4364247915E-03 650.2372044 0.4402018747E-03 646.5306405 0.4439789579E-03 692.5979343 0.4477560410E-03 700.5405711 0.4515331242E-03 616.3486204 0.4553102074E-03 765.1406843 0.4590872906E-03 749.7849197 0.4628643737E-03 778.3784124 0.4666414569E-03 764.0816660 0.4704185401E-03 711.6602628 0.4741956232E-03 845.0965620 0.4779727064E-03 820.7391423 0.4817497896E-03 909.1671660 0.4855268727E-03 781.5554671 0.4893039559E-03 905.4606022 0.4930810391E-03 829.2112883 0.4968581222E-03 965.8246423 0.5006352054E-03 962.1180784 0.5044122886E-03 930.8770401 0.5081893717E-03 961.0590602 0.5119664549E-03 953.1164233 0.5157435381E-03 1030.954265 0.5195206212E-03 1078.610086 0.5232977044E-03 1035.190338 0.5270747876E-03 1125.206889 0.5308518707E-03 1078.610086 0.5346289539E-03 1119.911797 0.5384060371E-03 1210.457858 0.5421831203E-03 1174.980746 0.5459602034E-03 1118.323270 0.5497372866E-03 1299.415390 0.5535143698E-03 1234.285768 0.5572914529E-03 1347.071212 0.5610685361E-03 1267.644843 0.5648456193E-03 1343.364648 0.5686227024E-03 1338.069557 0.5723997856E-03 1458.268128 0.5761768688E-03 1497.981312 0.5799539519E-03 1445.030400 0.5837310351E-03 1550.402715 0.5875081183E-03 1455.091073 0.5912852014E-03 1578.996208 0.5950622846E-03 1705.548889 0.5988393678E-03 1752.145692 0.6026164509E-03 1701.312816 0.6063935341E-03 1779.150657 0.6101706173E-03 1709.255452 0.6139477005E-03 1903.055792 0.6177247836E-03 2014.252708 0.6215018668E-03 1902.526283 0.6252789500E-03 2182.636609 0.6290560331E-03 2235.587522 0.6328331163E-03 2391.792713 0.6366101995E-03 2634.837401 0.6403872826E-03 2688.847332 0.6441643658E-03 2807.986885 0.6479414490E-03 2963.662567 0.6517185321E-03 3196.117073 0.6554956153E-03 3323.199263 0.6592726985E-03 3370.855084 0.6630497816E-03 3413.745323 0.6668268648E-03 3499.525801 0.6706039480E-03 3453.458507 0.6743810311E-03 3447.104398 0.6781581143E-03 3337.496009 0.6819351975E-03 3556.712786 0.6857122806E-03 3443.927343 0.6894893638E-03 3408.979741 0.6932664470E-03 3596.955480 0.6970435302E-03 3447.104398 0.7008206133E-03 3655.201483 0.7045976965E-03 3467.755254 0.7083747797E-03 3544.004567 0.7121518628E-03 3671.086757 0.7159289460E-03 3548.770150 0.7197060292E-03 3609.134190 0.7234831123E-03 3656.790011 0.7272601955E-03 3647.258847 0.7310372787E-03 3737.804907 0.7348143618E-03 3685.913013 0.7385914450E-03 3693.326140 0.7423685282E-03 3772.752509 0.7461456113E-03 3715.565524 0.7499226945E-03 3715.565524 0.7536997777E-03 3874.418261 0.7574768608E-03 3752.101653 0.7612539440E-03 3817.231275 0.7650310272E-03 3834.705077 0.7688081104E-03 4022.151306 0.7725851935E-03 3874.947770 0.7763622767E-03 3930.016719 0.7801393599E-03 3793.403365 0.7839164430E-03 4023.739834 0.7876935262E-03 4057.098909 0.7914706094E-03 4023.739834 0.7952476925E-03 4099.989148 0.7990247757E-03 3976.084013 0.8028018589E-03 4003.088978 0.8065789420E-03 4196.889317 0.8103560252E-03 4228.659865 0.8141331084E-03 3995.675850 0.8179101915E-03 4211.186064 0.8216872747E-03 4058.687436 0.8254643579E-03 4146.056441 0.8292414410E-03 4153.999078 0.8330185242E-03 4022.151306 0.8367956074E-03 4198.477845 0.8405726906E-03 4014.208670 0.8443497737E-03 3937.959356 0.8481268569E-03 4311.263288 0.8519039401E-03 3876.536297 0.8556810232E-03 3922.074082 0.8594581064E-03 4214.363118 0.8632351896E-03 3931.605246 0.8670122727E-03 4206.420482 0.8707893559E-03 3944.313465 0.8745664391E-03 4004.677505 0.8783435222E-03 4038.036580 0.8821206054E-03 4171.472879 0.8858976886E-03 3909.365863 0.8896747717E-03 4111.638348 0.8934518549E-03 3969.729903 0.8972289381E-03 4125.405586 0.9010060212E-03 4098.400620 0.9047831044E-03 4117.462949 0.9085601876E-03 3930.016719 0.9123372707E-03 4122.228531 0.9161143539E-03 4069.807128 0.9198914371E-03 4235.013974 0.9236685203E-03 4111.108839 0.9274456034E-03 3970.259412 0.9312226866E-03 4290.612432 0.9349997698E-03 4269.961577 0.9387768529E-03 4072.984182 0.9425539361E-03 4320.794452 0.9463310193E-03 4219.128701 0.9501081024E-03 4489.178354 0.9538851856E-03 4454.230752 0.9576622688E-03 3883.949425 0.9614393519E-03 3893.480589 0.9652164351E-03 3500.055310 0.9689935183E-03 3534.473403 0.9727706014E-03 3453.458507 0.9765476846E-03 3266.012277 0.9803247678E-03 3293.017243 0.9841018509E-03 3056.326664 0.9878789341E-03 3208.825292 0.9916560173E-03 2818.047558 0.9954331005E-03 2941.952693 0.9992101836E-03 2695.730951 0.1002987267E-02 2580.297962 0.1006764350E-02 2457.451845 0.1010541433E-02 2289.067943 0.1014318516E-02 2317.661436 0.1018095599E-02 2422.504243 0.1021872683E-02 2201.698938 0.1025649766E-02 2438.389516 0.1029426849E-02 2282.713834 0.1033203932E-02 2282.713834 0.1036981015E-02 2371.671367 0.1040758098E-02 2362.669712 0.1044535182E-02 2338.312292 0.1048312265E-02 2320.838491 0.1052089348E-02 2325.604073 0.1055866431E-02 2327.192600 0.1059643514E-02 2311.307327 0.1063420597E-02 2389.145168 0.1067197681E-02 2362.140202 0.1070974764E-02 2209.641575 0.1074751847E-02 2412.973078 0.1078528930E-02 2289.597452 0.1082306013E-02 2324.015546 0.1086083096E-02 2352.609038 0.1089860180E-02 2330.369655 0.1093637263E-02 2223.938321 0.1097414346E-02 2324.015546 0.1101191429E-02 2292.244998 0.1104968512E-02 2244.589177 0.1108745596E-02 2344.666401 0.1112522679E-02 2284.831870 0.1116299762E-02 2166.751336 0.1120076845E-02 2241.412122 0.1123853928E-02 2281.125306 0.1127631011E-02 2297.010580 0.1131408095E-02 2061.908529 0.1135185178E-02 2270.005615 0.1138962261E-02 2220.761266 0.1142739344E-02 2193.756301 0.1146516427E-02 2156.161153 0.1150293510E-02 2157.220171 0.1154070594E-02 2203.287465 0.1157847677E-02 2050.788838 0.1161624760E-02 2111.152878 0.1165401843E-02 2122.272569 0.1169178926E-02 2176.282500 0.1172956009E-02 1883.993463 0.1176733093E-02 2127.038151 0.1180510176E-02 2025.901909 0.1184287259E-02 1920.529593 0.1188064342E-02 2061.908529 0.1191841425E-02 1965.008359 0.1195618508E-02 1957.065723 0.1199395592E-02 1817.275314 0.1203172675E-02 1895.113155 0.1206949758E-02 1961.831305 0.1210726841E-02 1573.171608 0.1214503924E-02 1960.242777 0.1218281007E-02 1640.948775 0.1222058091E-02 1780.739184 0.1225835174E-02 1606.001173 0.1229612257E-02 1474.153401 0.1233389340E-02 1626.652029 0.1237166423E-02 1385.195869 0.1240943506E-02 1446.089418 0.1244720590E-02 1280.353062 0.1248497673E-02 1272.410425 0.1252274756E-02 1450.325491 0.1256051839E-02 1221.577549 0.1259828922E-02 1612.355283 0.1263606005E-02 1359.779431 0.1267383089E-02 1699.724288 0.1271160172E-02 1587.468354 0.1274937255E-02 1785.504766 0.1278714338E-02 1963.419832 0.1282491421E-02 1979.305106 0.1286268504E-02 2276.359724 0.1290045588E-02 2352.609038 0.1293822671E-02 2647.016111 0.1297599754E-02 2587.711089 0.1301376837E-02 3022.967589 0.1305153920E-02 3092.862794 0.1308931003E-02 3359.735392 0.1312708087E-02 3734.627852 0.1316485170E-02 4312.851816 0.1320262253E-02 4583.430978 0.1324039336E-02 4670.270474 0.1327816419E-02 4727.457460 0.1331593502E-02 4862.482286 0.1335370586E-02 4922.846326 0.1339147669E-02 5018.157969 0.1342924752E-02 5010.744841 0.1346701835E-02 5180.187761 0.1350478918E-02 5180.187761 0.1354256001E-02 5289.796149 0.1358033085E-02 5150.005741 0.1361810168E-02 5220.430454 0.1365587251E-02 5227.843582 0.1369364334E-02 4818.003520 0.1373141417E-02 4892.664306 0.1376918500E-02 4385.924075 0.1380695584E-02 4405.515912 0.1384472667E-02 4146.056441 0.1388249750E-02 4150.822024 0.1392026833E-02 3650.435901 0.1395803916E-02 3458.224089 0.1399580999E-02 3399.978086 0.1403358083E-02 3005.493788 0.1407135166E-02 3108.748067 0.1410912249E-02 2872.057489 0.1414689332E-02 2775.157319 0.1418466415E-02 2702.614569 0.1422243498E-02 2597.242254 0.1426020582E-02 2460.628900 0.1429797665E-02 2368.494312 0.1433574748E-02 2356.315602 0.1437351831E-02 2270.005615 0.1441128914E-02 2080.970858 0.1444905997E-02 2104.798768 0.1448683081E-02 2027.490436 0.1452460164E-02 1912.586956 0.1456237247E-02 1885.581991 0.1460014330E-02 1774.914584 0.1463791413E-02 1672.719323 0.1467568496E-02 1721.963671 0.1471345580E-02 1518.632168 0.1475122663E-02 1555.697807 0.1478899746E-02 1385.195869 0.1482676829E-02 1399.492615 0.1486453912E-02 1241.169387 0.1490230996E-02 1186.629947 0.1494008079E-02 1126.795416 0.1497785162E-02 1050.016593 0.1501562245E-02 908.6376569 0.1505339328E-02 839.2719617 0.1509116411E-02 789.4981040 0.1512893495E-02 613.7010748 0.1516670578E-02 529.5091241 0.1520447661E-02 336.7678029 0.1524224744E-02 228.7479416 0.1528001827E-02 260.5184890 0.1531778910E-02 184.2691752 0.1535555994E-02 211.2741405 0.1539333077E-02 152.4986277 0.1543110160E-02 160.4412646 0.1546887243E-02 127.0821898 0.1550664326E-02 120.7280803 0.1554441409E-02 92.13458759 0.1558218493E-02 54.00993066 0.1561995576E-02 5.559845803 0.1565772659E-02 0.000000000 0.1569549742E-02 0.000000000 0.1573326825E-02 0.000000000 0.1577103908E-02 0.000000000 0.1580880992E-02 0.000000000 0.1584658075E-02 0.000000000 0.1588435158E-02 0.000000000 0.1592212241E-02 0.000000000 0.1595989324E-02 0.000000000 0.1599766407E-02 0.000000000 0.1603543491E-02 0.000000000 0.1607320574E-02 0.000000000 0.1611097657E-02 0.000000000 0.1614874740E-02 0.000000000 0.1618651823E-02 0.000000000 0.1622428906E-02 0.000000000 0.1626205990E-02 0.000000000 0.1629983073E-02 0.000000000 0.1633760156E-02 0.000000000 0.1637537239E-02 0.000000000 0.1641314322E-02 0.000000000 0.1645091405E-02 0.000000000 0.1648868489E-02 0.000000000 0.1652645572E-02 0.000000000 0.1656422655E-02 0.000000000 0.1660199738E-02 0.000000000 0.1663976821E-02 0.000000000 0.1667753904E-02 0.000000000 0.1671530988E-02 0.000000000 0.1675308071E-02 0.000000000 0.1679085154E-02 0.000000000 0.1682862237E-02 0.000000000 0.1686639320E-02 0.000000000 0.1690416403E-02 0.000000000 0.1694193487E-02 0.000000000 0.1697970570E-02 0.000000000 0.1701747653E-02 0.000000000 0.1705524736E-02 0.000000000 0.1709301819E-02 0.000000000 0.1713078902E-02 0.000000000 elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/PHDISP.OUT0000644002504400250440000000005012337331330021202 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/PHDISP.OUT0000644002504400250440000005331212337331330021752 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.4374229827E-10 0.1367793241E-01 0.2655782300E-04 0.2735586482E-01 0.5301413786E-04 0.4103379724E-01 0.7926970458E-04 0.5471172965E-01 0.1052297822E-03 0.6838966206E-01 0.1308062850E-03 0.8206759447E-01 0.1559198244E-03 0.9574552688E-01 0.1805015954E-03 0.1094234593 0.2044950640E-03 0.1231013917 0.2278574089E-03 0.1367793241 0.2505606691E-03 0.1504572565 0.2725925469E-03 0.1641351889 0.2939568145E-03 0.1778131214 0.3146732784E-03 0.1914910538 0.3347772569E-03 0.2051689862 0.3543185391E-03 0.2188469186 0.3733598110E-03 0.2325248510 0.3919745521E-03 0.2462027834 0.4102444380E-03 0.2598807158 0.4282563148E-03 0.2735586482 0.4460988443E-03 0.2872365807 0.4638589545E-03 0.3009145131 0.4816182540E-03 0.3145924455 0.4994495879E-03 0.3282703779 0.5174139119E-03 0.3419483103 0.5355576525E-03 0.3556262427 0.5539106873E-03 0.3693041751 0.5724850433E-03 0.3829821075 0.5912743579E-03 0.3966600400 0.6102540998E-03 0.4103379724 0.6293825011E-03 0.4240159048 0.6486021122E-03 0.4376938372 0.6678418685E-03 0.4513717696 0.6870195427E-03 0.4650497020 0.7060444533E-03 0.4787276344 0.7248203087E-03 0.4924055668 0.7432480756E-03 0.5060834992 0.7612287778E-03 0.5197614317 0.7786661465E-03 0.5334393641 0.7954690607E-03 0.5471172965 0.8115537274E-03 0.5607952289 0.8268455661E-03 0.5744731613 0.8412807695E-03 0.5881510937 0.8548075206E-03 0.6018290261 0.8673868527E-03 0.6155069585 0.8789931441E-03 0.6291848910 0.8896142432E-03 0.6428628234 0.8992512252E-03 0.6565407558 0.9079177875E-03 0.6702186882 0.9156392947E-03 0.6838966206 0.9224514940E-03 0.6975745530 0.9283989289E-03 0.7112524854 0.9335330871E-03 0.7249304178 0.9379103317E-03 0.7386083503 0.9415896728E-03 0.7522862827 0.9446304473E-03 0.7659642151 0.9470899843E-03 0.7796421475 0.9490213394E-03 0.7933200799 0.9504711837E-03 0.8069980123 0.9514779340E-03 0.8206759447 0.9520702029E-03 0.8343538771 0.9522656379E-03 0.8482356956 0.9521101105E-03 0.8621175141 0.9516439608E-03 0.8759993325 0.9508684817E-03 0.8898811510 0.9497858120E-03 0.9037629694 0.9483989124E-03 0.9176447879 0.9467115320E-03 0.9315266063 0.9447281665E-03 0.9454084248 0.9424540065E-03 0.9592902433 0.9398948782E-03 0.9731720617 0.9370571764E-03 0.9870538802 0.9339477893E-03 1.000935699 0.9305740178E-03 1.014817517 0.9269434878E-03 1.028699336 0.9230640584E-03 1.042581154 0.9189437248E-03 1.056462972 0.9145905189E-03 1.070344791 0.9100124068E-03 1.084226609 0.9052171861E-03 1.098108428 0.9002123820E-03 1.111990246 0.8950051457E-03 1.125872065 0.8896021544E-03 1.139753883 0.8840095157E-03 1.153635702 0.8782326758E-03 1.167517520 0.8722763353E-03 1.181399339 0.8661443709E-03 1.195281157 0.8598397661E-03 1.209162975 0.8533645519E-03 1.223044794 0.8467197565E-03 1.236926612 0.8399053677E-03 1.250808431 0.8329203064E-03 1.264690249 0.8257624122E-03 1.278572068 0.8184284426E-03 1.292453886 0.8109140844E-03 1.306335705 0.8032139785E-03 1.320217523 0.7953217567E-03 1.334099342 0.7872300915E-03 1.347981160 0.7789307575E-03 1.361862979 0.7704147033E-03 1.375744797 0.7616721341E-03 1.389626615 0.7526926036E-03 1.403508434 0.7434651130E-03 1.417390252 0.7339782182E-03 1.431272071 0.7242201415E-03 1.445153889 0.7141788879E-03 1.459035708 0.7038423651E-03 1.472917526 0.6931985040E-03 1.486799345 0.6822353808E-03 1.500681163 0.6709413377E-03 1.514562982 0.6593051014E-03 1.528444800 0.6473158997E-03 1.542326618 0.6349635726E-03 1.556208437 0.6222386796E-03 1.570090255 0.6091326010E-03 1.583972074 0.5956376322E-03 1.597853892 0.5817470716E-03 1.611735711 0.5674553009E-03 1.625617529 0.5527578569E-03 1.639499348 0.5376514955E-03 1.653381166 0.5221342471E-03 1.667262985 0.5062054632E-03 1.681144803 0.4898658544E-03 1.695026621 0.4731175195E-03 1.708908440 0.4559639659E-03 1.722790258 0.4384101219E-03 1.736672077 0.4204623396E-03 1.750553895 0.4021283905E-03 1.764435714 0.3834174526E-03 1.778317532 0.3643400901E-03 1.792199351 0.3449082251E-03 1.806081169 0.3251351027E-03 1.819962988 0.3050352492E-03 1.833844806 0.2846244238E-03 1.847726625 0.2639195640E-03 1.861608443 0.2429387259E-03 1.875490261 0.2217010185E-03 1.889372080 0.2002265332E-03 1.903253898 0.1785362697E-03 1.917135717 0.1566520562E-03 1.931017535 0.1345964672E-03 1.944899354 0.1123927373E-03 1.958781172 0.9006467240E-04 1.972662991 0.6763655816E-04 1.986544809 0.4513306666E-04 2.000426628 0.2257916123E-04 2.014308446 -0.4374229827E-10 2.027941873 0.2416788133E-04 2.041575301 0.4829169111E-04 2.055208728 0.7232754109E-04 2.068842156 0.9623190887E-04 2.082475583 0.1199618189E-03 2.096109011 0.1434750214E-03 2.109742438 0.1667301680E-03 2.123375865 0.1896869837E-03 2.137009293 0.2123064346E-03 2.150642720 0.2345508900E-03 2.164276148 0.2563842785E-03 2.177909575 0.2777722377E-03 2.191543002 0.2986822560E-03 2.205176430 0.3190838062E-03 2.218809857 0.3389484703E-03 2.232443285 0.3582500538E-03 2.246076712 0.3769646909E-03 2.259710140 0.3950709364E-03 2.273343567 0.4125498473E-03 2.286976994 0.4293850504E-03 2.300610422 0.4455627970E-03 2.314243849 0.4610720027E-03 2.327877277 0.4759042726E-03 2.341510704 0.4900539099E-03 2.355144132 0.5035179092E-03 2.368777559 0.5162959310E-03 2.382410986 0.5283902596E-03 2.396044414 0.5398057419E-03 2.409677841 0.5505497074E-03 2.423311269 0.5606318688E-03 2.436944696 0.5700642025E-03 2.450578123 0.5788608103E-03 2.464211551 0.5870377602E-03 2.477844978 0.5946129081E-03 2.491478406 0.6016057003E-03 2.505111833 0.6080369577E-03 2.518745261 0.6139286428E-03 2.532378688 0.6193036104E-03 2.546012115 0.6241853448E-03 2.559645543 0.6285976847E-03 2.573278970 0.6325645391E-03 2.586912398 0.6361095963E-03 2.600545825 0.6392560308E-03 2.614179253 0.6420262105E-03 2.627812680 0.6444414087E-03 2.641446107 0.6465215256E-03 2.655079535 0.6482848233E-03 2.668712962 0.6497476783E-03 2.682346390 0.6509243569E-03 2.695979817 0.6518268172E-03 2.709613245 0.6524645408E-03 2.723246672 0.6528443987E-03 2.736880099 0.6529705533E-03 0.000000000 -0.4374229827E-10 0.1367793241E-01 0.2655782300E-04 0.2735586482E-01 0.5301413786E-04 0.4103379724E-01 0.7926970458E-04 0.5471172965E-01 0.1052297822E-03 0.6838966206E-01 0.1308062850E-03 0.8206759447E-01 0.1559198244E-03 0.9574552688E-01 0.1805015954E-03 0.1094234593 0.2044950640E-03 0.1231013917 0.2278574089E-03 0.1367793241 0.2505606691E-03 0.1504572565 0.2725925469E-03 0.1641351889 0.2939568145E-03 0.1778131214 0.3146732784E-03 0.1914910538 0.3347772569E-03 0.2051689862 0.3543185391E-03 0.2188469186 0.3733598110E-03 0.2325248510 0.3919745521E-03 0.2462027834 0.4102444380E-03 0.2598807158 0.4282563148E-03 0.2735586482 0.4460988443E-03 0.2872365807 0.4638589545E-03 0.3009145131 0.4816182540E-03 0.3145924455 0.4994495879E-03 0.3282703779 0.5174139119E-03 0.3419483103 0.5355576525E-03 0.3556262427 0.5539106873E-03 0.3693041751 0.5724850433E-03 0.3829821075 0.5912743579E-03 0.3966600400 0.6102540998E-03 0.4103379724 0.6293825011E-03 0.4240159048 0.6486021122E-03 0.4376938372 0.6678418685E-03 0.4513717696 0.6870195427E-03 0.4650497020 0.7060444533E-03 0.4787276344 0.7248203087E-03 0.4924055668 0.7432480756E-03 0.5060834992 0.7612287778E-03 0.5197614317 0.7786661465E-03 0.5334393641 0.7954690607E-03 0.5471172965 0.8115537274E-03 0.5607952289 0.8268455661E-03 0.5744731613 0.8412807695E-03 0.5881510937 0.8548075206E-03 0.6018290261 0.8673868527E-03 0.6155069585 0.8789931441E-03 0.6291848910 0.8896142432E-03 0.6428628234 0.8992512252E-03 0.6565407558 0.9079177875E-03 0.6702186882 0.9156392947E-03 0.6838966206 0.9224514940E-03 0.6975745530 0.9283989289E-03 0.7112524854 0.9335330871E-03 0.7249304178 0.9379103317E-03 0.7386083503 0.9415896728E-03 0.7522862827 0.9446304473E-03 0.7659642151 0.9470899843E-03 0.7796421475 0.9490213394E-03 0.7933200799 0.9504711837E-03 0.8069980123 0.9514779340E-03 0.8206759447 0.9520702029E-03 0.8343538771 0.9522656379E-03 0.8482356956 0.9530604482E-03 0.8621175141 0.9554352442E-03 0.8759993325 0.9593613990E-03 0.8898811510 0.9647921065E-03 0.9037629694 0.9716636742E-03 0.9176447879 0.9798972098E-03 0.9315266063 0.9894005957E-03 0.9454084248 0.1000070641E-02 0.9592902433 0.1011795299E-02 0.9731720617 0.1024455855E-02 0.9870538802 0.1037928997E-02 1.000935699 0.1052088729E-02 1.014817517 0.1066808060E-02 1.028699336 0.1081960480E-02 1.042581154 0.1097421195E-02 1.056462972 0.1113068147E-02 1.070344791 0.1128782822E-02 1.084226609 0.1144450879E-02 1.098108428 0.1159962618E-02 1.111990246 0.1175213310E-02 1.125872065 0.1190103417E-02 1.139753883 0.1204538719E-02 1.153635702 0.1218430371E-02 1.167517520 0.1231694899E-02 1.181399339 0.1244254155E-02 1.195281157 0.1256035240E-02 1.209162975 0.1266970400E-02 1.223044794 0.1276996912E-02 1.236926612 0.1262771727E-02 1.250808431 0.1245686988E-02 1.264690249 0.1228432751E-02 1.278572068 0.1211028403E-02 1.292453886 0.1193491086E-02 1.306335705 0.1175835588E-02 1.320217523 0.1158074247E-02 1.334099342 0.1140216885E-02 1.347981160 0.1122270766E-02 1.361862979 0.1104240585E-02 1.375744797 0.1086128482E-02 1.389626615 0.1067934087E-02 1.403508434 0.1049654589E-02 1.417390252 0.1031284840E-02 1.431272071 0.1012817479E-02 1.445153889 0.9942430851E-03 1.459035708 0.9755503520E-03 1.472917526 0.9567262833E-03 1.486799345 0.9377564071E-03 1.500681163 0.9186250045E-03 1.514562982 0.8993153509E-03 1.528444800 0.8798099650E-03 1.542326618 0.8600908644E-03 1.556208437 0.8401398220E-03 1.570090255 0.8199386218E-03 1.583972074 0.7994693098E-03 1.597853892 0.7787144388E-03 1.611735711 0.7576573014E-03 1.625617529 0.7362821524E-03 1.639499348 0.7145744160E-03 1.653381166 0.6925208766E-03 1.667262985 0.6701098529E-03 1.681144803 0.6473313522E-03 1.695026621 0.6241772061E-03 1.708908440 0.6006411851E-03 1.722790258 0.5767190936E-03 1.736672077 0.5524088439E-03 1.750553895 0.5277105105E-03 1.764435714 0.5026263634E-03 1.778317532 0.4771608834E-03 1.792199351 0.4513207573E-03 1.806081169 0.4251148558E-03 1.819962988 0.3985541944E-03 1.833844806 0.3716518773E-03 1.847726625 0.3444230266E-03 1.861608443 0.3168846973E-03 1.875490261 0.2890557785E-03 1.889372080 0.2609568831E-03 1.903253898 0.2326102258E-03 1.917135717 0.2040394915E-03 1.931017535 0.1752696941E-03 1.944899354 0.1463270281E-03 1.958781172 0.1172387123E-03 1.972662991 0.8803282837E-04 1.986544809 0.5873815416E-04 2.000426628 0.2938399295E-04 2.014308446 -0.4374229827E-10 2.027941873 0.2416788133E-04 2.041575301 0.4829169111E-04 2.055208728 0.7232754109E-04 2.068842156 0.9623190887E-04 2.082475583 0.1199618189E-03 2.096109011 0.1434750214E-03 2.109742438 0.1667301680E-03 2.123375865 0.1896869837E-03 2.137009293 0.2123064346E-03 2.150642720 0.2345508900E-03 2.164276148 0.2563842785E-03 2.177909575 0.2777722377E-03 2.191543002 0.2986822560E-03 2.205176430 0.3190838062E-03 2.218809857 0.3389484703E-03 2.232443285 0.3582500538E-03 2.246076712 0.3769646909E-03 2.259710140 0.3950709364E-03 2.273343567 0.4125498473E-03 2.286976994 0.4293850504E-03 2.300610422 0.4455627970E-03 2.314243849 0.4610720027E-03 2.327877277 0.4759042726E-03 2.341510704 0.4900539099E-03 2.355144132 0.5035179092E-03 2.368777559 0.5162959310E-03 2.382410986 0.5283902596E-03 2.396044414 0.5398057419E-03 2.409677841 0.5505497074E-03 2.423311269 0.5606318688E-03 2.436944696 0.5700642025E-03 2.450578123 0.5788608103E-03 2.464211551 0.5870377602E-03 2.477844978 0.5946129081E-03 2.491478406 0.6016057003E-03 2.505111833 0.6080369577E-03 2.518745261 0.6139286428E-03 2.532378688 0.6193036104E-03 2.546012115 0.6241853448E-03 2.559645543 0.6285976847E-03 2.573278970 0.6325645391E-03 2.586912398 0.6361095963E-03 2.600545825 0.6392560308E-03 2.614179253 0.6420262105E-03 2.627812680 0.6444414087E-03 2.641446107 0.6465215256E-03 2.655079535 0.6482848233E-03 2.668712962 0.6497476783E-03 2.682346390 0.6509243569E-03 2.695979817 0.6518268172E-03 2.709613245 0.6524645408E-03 2.723246672 0.6528443987E-03 2.736880099 0.6529705533E-03 0.000000000 -0.4374229827E-10 0.1367793241E-01 0.3593109444E-04 0.2735586482E-01 0.7193976963E-04 0.4103379724E-01 0.1080995189E-03 0.5471172965E-01 0.1444758614E-03 0.6838966206E-01 0.1811228404E-03 0.8206759447E-01 0.2180800642E-03 0.9574552688E-01 0.2553704037E-03 0.1094234593 0.2929984241E-03 0.1231013917 0.3309495772E-03 0.1367793241 0.3691901453E-03 0.1504572565 0.4076678948E-03 0.1641351889 0.4463133681E-03 0.1778131214 0.4850417310E-03 0.1914910538 0.5237550793E-03 0.2051689862 0.5623451062E-03 0.2188469186 0.6006960344E-03 0.2325248510 0.6386877170E-03 0.2462027834 0.6761988227E-03 0.2598807158 0.7131100197E-03 0.2735586482 0.7493070853E-03 0.2872365807 0.7846838684E-03 0.3009145131 0.8191450400E-03 0.3145924455 0.8526085684E-03 0.3282703779 0.8850078596E-03 0.3419483103 0.9162935077E-03 0.3556262427 0.9464346010E-03 0.3693041751 0.9754195359E-03 0.3829821075 0.1003256294E-02 0.3966600400 0.1029972150E-02 0.4103379724 0.1055612778E-02 0.4240159048 0.1080240753E-02 0.4376938372 0.1103933447E-02 0.4513717696 0.1126780357E-02 0.4650497020 0.1148879899E-02 0.4787276344 0.1170335769E-02 0.4924055668 0.1191252968E-02 0.5060834992 0.1211733621E-02 0.5197614317 0.1231872765E-02 0.5334393641 0.1251754255E-02 0.5471172965 0.1271446994E-02 0.5607952289 0.1291001637E-02 0.5744731613 0.1310447943E-02 0.5881510937 0.1329792886E-02 0.6018290261 0.1349019629E-02 0.6155069585 0.1368087384E-02 0.6291848910 0.1386932177E-02 0.6428628234 0.1405468441E-02 0.6565407558 0.1423591370E-02 0.6702186882 0.1441179910E-02 0.6838966206 0.1458100239E-02 0.6975745530 0.1474209606E-02 0.7112524854 0.1489360359E-02 0.7249304178 0.1503404046E-02 0.7386083503 0.1516195442E-02 0.7522862827 0.1527596392E-02 0.7659642151 0.1537479394E-02 0.7796421475 0.1545730816E-02 0.7933200799 0.1552253715E-02 0.8069980123 0.1556970193E-02 0.8206759447 0.1559823257E-02 0.8343538771 0.1560778169E-02 0.8482356956 0.1560349816E-02 0.8621175141 0.1559066006E-02 0.8759993325 0.1556930473E-02 0.8898811510 0.1553949420E-02 0.9037629694 0.1550131479E-02 0.9176447879 0.1545487666E-02 0.9315266063 0.1540031315E-02 0.9454084248 0.1533777999E-02 0.9592902433 0.1526745444E-02 0.9731720617 0.1518953420E-02 0.9870538802 0.1510423629E-02 1.000935699 0.1501179569E-02 1.014817517 0.1491246394E-02 1.028699336 0.1480650762E-02 1.042581154 0.1469420665E-02 1.056462972 0.1457585255E-02 1.070344791 0.1445174657E-02 1.084226609 0.1432219774E-02 1.098108428 0.1418752080E-02 1.111990246 0.1404803415E-02 1.125872065 0.1390405765E-02 1.139753883 0.1375591039E-02 1.153635702 0.1360390851E-02 1.167517520 0.1344836293E-02 1.181399339 0.1328957710E-02 1.195281157 0.1312784480E-02 1.209162975 0.1296344801E-02 1.223044794 0.1279665477E-02 1.236926612 0.1286056952E-02 1.250808431 0.1294097457E-02 1.264690249 0.1301069992E-02 1.278572068 0.1306930600E-02 1.292453886 0.1311639666E-02 1.306335705 0.1315161777E-02 1.320217523 0.1317465579E-02 1.334099342 0.1318523648E-02 1.347981160 0.1318312347E-02 1.361862979 0.1316811705E-02 1.375744797 0.1314005282E-02 1.389626615 0.1309880044E-02 1.403508434 0.1304426240E-02 1.417390252 0.1297637281E-02 1.431272071 0.1289509618E-02 1.445153889 0.1280042623E-02 1.459035708 0.1269238478E-02 1.472917526 0.1257102053E-02 1.486799345 0.1243640800E-02 1.500681163 0.1228864634E-02 1.514562982 0.1212785827E-02 1.528444800 0.1195418899E-02 1.542326618 0.1176780511E-02 1.556208437 0.1156889355E-02 1.570090255 0.1135766055E-02 1.583972074 0.1113433063E-02 1.597853892 0.1089914559E-02 1.611735711 0.1065236353E-02 1.625617529 0.1039425786E-02 1.639499348 0.1012511640E-02 1.653381166 0.9845240474E-03 1.667262985 0.9554943979E-03 1.681144803 0.9254552563E-03 1.695026621 0.8944402785E-03 1.708908440 0.8624841314E-03 1.722790258 0.8296224163E-03 1.736672077 0.7958915949E-03 1.750553895 0.7613289197E-03 1.764435714 0.7259723664E-03 1.778317532 0.6898605706E-03 1.792199351 0.6530327680E-03 1.806081169 0.6155287373E-03 1.819962988 0.5773887470E-03 1.833844806 0.5386535059E-03 1.847726625 0.4993641164E-03 1.861608443 0.4595620309E-03 1.875490261 0.4192890118E-03 1.889372080 0.3785870942E-03 1.903253898 0.3374985516E-03 1.917135717 0.2960658637E-03 1.931017535 0.2543316874E-03 1.944899354 0.2123388295E-03 1.958781172 0.1701302212E-03 1.972662991 0.1277488953E-03 1.986544809 0.8523796329E-04 2.000426628 0.4264059539E-04 2.014308446 -0.4374229827E-10 2.027941873 0.4217461247E-04 2.041575301 0.8432793617E-04 2.055208728 0.1264385668E-03 2.068842156 0.1684848705E-03 2.082475583 0.2104448723E-03 2.096109011 0.2522961489E-03 2.109742438 0.2940157274E-03 2.123375865 0.3355799893E-03 2.137009293 0.3769645839E-03 2.150642720 0.4181443496E-03 2.164276148 0.4590932450E-03 2.177909575 0.4997842910E-03 2.191543002 0.5401895240E-03 2.205176430 0.5802799609E-03 2.218809857 0.6200255767E-03 2.232443285 0.6593952944E-03 2.246076712 0.6983569877E-03 2.259710140 0.7368774970E-03 2.273343567 0.7749226574E-03 2.286976994 0.8124573399E-03 2.300610422 0.8494455046E-03 2.314243849 0.8858502655E-03 2.327877277 0.9216339666E-03 2.341510704 0.9567582688E-03 2.355144132 0.9911842471E-03 2.368777559 0.1024872496E-02 2.382410986 0.1057783243E-02 2.396044414 0.1089876473E-02 2.409677841 0.1121112053E-02 2.423311269 0.1151449871E-02 2.436944696 0.1180849967E-02 2.450578123 0.1209272684E-02 2.464211551 0.1236678806E-02 2.477844978 0.1263029707E-02 2.491478406 0.1288287499E-02 2.505111833 0.1312415178E-02 2.518745261 0.1335376770E-02 2.532378688 0.1357137472E-02 2.546012115 0.1377663797E-02 2.559645543 0.1396923706E-02 2.573278970 0.1414886744E-02 2.586912398 0.1431524161E-02 2.600545825 0.1446809036E-02 2.614179253 0.1460716390E-02 2.627812680 0.1473223287E-02 2.641446107 0.1484308938E-02 2.655079535 0.1493954781E-02 2.668712962 0.1502144567E-02 2.682346390 0.1508864428E-02 2.695979817 0.1514102934E-02 2.709613245 0.1517851144E-02 2.723246672 0.1520102643E-02 2.736880099 0.1520853572E-02 elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/ELIASHBERG.OUT0000644002504400250440000000005012337331330021620 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/ELIASHBERG.OUT0000644002504400250440000001565012337331330022373 0ustar00dewhurstdewhurst00000000000000+------------------------------+ | Eliashberg equations | +------------------------------+ Temperature range : 0.1925701907 3.466263433 Number of temperature steps : 40 Number of Pade approximant input points : 80 Number of output frequencies : 2000 Fermionic Matsubara frequency cut-off phonons : 0.6576874456E-01 Coulomb : 0.1096145743E-02 Temperature (kelvin) : 0.2744125218 Number of Matsubara frequencies phonons : 12125 Coulomb : 201 Eliashberg equations converged in 121 iterations Temperature (kelvin) : 0.3562548528 Number of Matsubara frequencies phonons : 9358 Coulomb : 155 Eliashberg equations converged in 88 iterations Temperature (kelvin) : 0.4380971839 Number of Matsubara frequencies phonons : 7625 Coulomb : 126 Eliashberg equations converged in 87 iterations Temperature (kelvin) : 0.5199395149 Number of Matsubara frequencies phonons : 6437 Coulomb : 106 Eliashberg equations converged in 87 iterations Temperature (kelvin) : 0.6017818460 Number of Matsubara frequencies phonons : 5573 Coulomb : 92 Eliashberg equations converged in 89 iterations Temperature (kelvin) : 0.6836241771 Number of Matsubara frequencies phonons : 4915 Coulomb : 81 Eliashberg equations converged in 92 iterations Temperature (kelvin) : 0.7654665081 Number of Matsubara frequencies phonons : 4398 Coulomb : 72 Eliashberg equations converged in 97 iterations Temperature (kelvin) : 0.8473088392 Number of Matsubara frequencies phonons : 3981 Coulomb : 65 Eliashberg equations converged in 104 iterations Temperature (kelvin) : 0.9291511702 Number of Matsubara frequencies phonons : 3637 Coulomb : 59 Eliashberg equations converged in 113 iterations Temperature (kelvin) : 1.010993501 Number of Matsubara frequencies phonons : 3349 Coulomb : 54 Eliashberg equations converged in 125 iterations Temperature (kelvin) : 1.092835832 Number of Matsubara frequencies phonons : 3105 Coulomb : 50 Eliashberg equations converged in 142 iterations Temperature (kelvin) : 1.174678163 Number of Matsubara frequencies phonons : 2894 Coulomb : 47 Eliashberg equations converged in 167 iterations Temperature (kelvin) : 1.256520494 Number of Matsubara frequencies phonons : 2711 Coulomb : 44 Eliashberg equations converged in 202 iterations Temperature (kelvin) : 1.338362826 Number of Matsubara frequencies phonons : 2550 Coulomb : 41 Eliashberg equations converged in 256 iterations Temperature (kelvin) : 1.420205157 Number of Matsubara frequencies phonons : 2407 Coulomb : 39 Eliashberg equations converged in 364 iterations Temperature (kelvin) : 1.502047488 Number of Matsubara frequencies phonons : 2281 Coulomb : 37 Eliashberg equations converged in 634 iterations Temperature (kelvin) : 1.583889819 Number of Matsubara frequencies phonons : 2167 Coulomb : 35 Failed to converge: possibly close to T_c Temperature (kelvin) : 1.665732150 Number of Matsubara frequencies phonons : 2064 Coulomb : 33 Failed to converge: possibly close to T_c Temperature (kelvin) : 1.747574481 Number of Matsubara frequencies phonons : 1971 Coulomb : 32 Eliashberg equations converged in 410 iterations Temperature (kelvin) : 1.829416812 Number of Matsubara frequencies phonons : 1887 Coulomb : 30 Eliashberg equations converged in 27 iterations Temperature (kelvin) : 1.911259143 Number of Matsubara frequencies phonons : 1809 Coulomb : 29 Eliashberg equations converged in 16 iterations Temperature (kelvin) : 1.993101474 Number of Matsubara frequencies phonons : 1738 Coulomb : 28 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.074943805 Number of Matsubara frequencies phonons : 1673 Coulomb : 27 Eliashberg equations converged in 13 iterations Temperature (kelvin) : 2.156786136 Number of Matsubara frequencies phonons : 1613 Coulomb : 26 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.238628467 Number of Matsubara frequencies phonons : 1557 Coulomb : 25 Eliashberg equations converged in 6 iterations Temperature (kelvin) : 2.320470798 Number of Matsubara frequencies phonons : 1504 Coulomb : 24 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.402313129 Number of Matsubara frequencies phonons : 1456 Coulomb : 23 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.484155460 Number of Matsubara frequencies phonons : 1411 Coulomb : 22 Eliashberg equations converged in 4 iterations Temperature (kelvin) : 2.565997791 Number of Matsubara frequencies phonons : 1368 Coulomb : 21 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.647840122 Number of Matsubara frequencies phonons : 1328 Coulomb : 21 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.729682453 Number of Matsubara frequencies phonons : 1291 Coulomb : 20 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.811524785 Number of Matsubara frequencies phonons : 1256 Coulomb : 20 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.893367116 Number of Matsubara frequencies phonons : 1222 Coulomb : 19 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 2.975209447 Number of Matsubara frequencies phonons : 1191 Coulomb : 19 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 3.057051778 Number of Matsubara frequencies phonons : 1161 Coulomb : 18 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 3.138894109 Number of Matsubara frequencies phonons : 1133 Coulomb : 18 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 3.220736440 Number of Matsubara frequencies phonons : 1106 Coulomb : 17 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 3.302578771 Number of Matsubara frequencies phonons : 1081 Coulomb : 17 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 3.384421102 Number of Matsubara frequencies phonons : 1057 Coulomb : 16 Eliashberg equations converged in 1 iterations Temperature (kelvin) : 3.466263433 Number of Matsubara frequencies phonons : 1034 Coulomb : 16 Eliashberg equations converged in 1 iterations elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/ELIASHBERG_GAP_T.OUT0000644002504400250440000000005012337331330022572 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/ELIASHBERG_GAP_T.OUT0000644002504400250440000000423012337331330023335 0ustar00dewhurstdewhurst00000000000000 0.2744125218 0.8979159003E-05 1.474334254 0.3562548528 0.8973022596E-05 1.474333976 0.4380971839 0.8960549309E-05 1.474333761 0.5199395149 0.8932652060E-05 1.474334019 0.6017818460 0.8870330555E-05 1.474335614 0.6836241771 0.8779579809E-05 1.474338346 0.7654665081 0.8654459855E-05 1.474342556 0.8473088392 0.8475836313E-05 1.474348938 0.9291511702 0.8248942361E-05 1.474357233 1.010993501 0.7959714938E-05 1.474367892 1.092835832 0.7590052091E-05 1.474381392 1.174678163 0.7115881661E-05 1.474398023 1.256520494 0.6552769722E-05 1.474416845 1.338362826 0.5874956277E-05 1.474437784 1.420205157 0.4957272309E-05 1.474462743 1.502047488 0.3713308200E-05 1.474490381 1.583889819 0.1562243241E-05 1.474519706 1.665732150 0.1646783492E-07 1.474526374 1.747574481 0.2707264062E-09 1.474526827 1.829416812 0.1827195339E-09 1.474527363 1.911259143 0.1339343389E-09 1.474527737 1.993101474 0.1310884744E-09 1.474528192 2.074943805 0.9059611454E-10 1.474528701 2.156786136 0.8785055405E-10 1.474529216 2.238628467 0.7072204392E-10 1.474529670 2.320470798 0.6801304529E-10 1.474529971 2.402313129 0.6525551230E-10 1.474530496 2.484155460 0.5413761390E-10 1.474530991 2.565997791 0.5150033356E-10 1.474531334 2.647840122 0.4885293873E-10 1.474531735 2.729682453 0.4621824378E-10 1.474532243 2.811524785 0.4357152232E-10 1.474532719 2.893367116 0.4095523831E-10 1.474533007 2.975209447 0.3835640086E-10 1.474533512 3.057051778 0.3581819638E-10 1.474533884 3.138894109 0.3332935945E-10 1.474534342 3.220736440 0.3092825377E-10 1.474534710 3.302578771 0.2860217955E-10 1.474535215 3.384421102 0.2638350628E-10 1.474535672 3.466263433 0.2425728191E-10 1.474536098 elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/PHLWIDTH.OUT0000644002504400250440000000005012337331330021436 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/PHLWIDTH.OUT0000644002504400250440000005331212337331330022206 0ustar00dewhurstdewhurst00000000000000 0.000000000 0.2711397106E-35 0.1367793241E-01 0.1358896214E-10 0.2735586482E-01 0.2151487490E-09 0.4103379724E-01 0.1070288517E-08 0.5471172965E-01 0.3300894552E-08 0.6838966206E-01 0.7809928083E-08 0.8206759447E-01 0.1558742265E-07 0.9574552688E-01 0.2760741146E-07 0.1094234593 0.4472629633E-07 0.1231013917 0.6759279800E-07 0.1367793241 0.9657817349E-07 0.1504572565 0.1317330471E-06 0.1641351889 0.1727742717E-06 0.1778131214 0.2191020716E-06 0.1914910538 0.2698446803E-06 0.2051689862 0.3239251149E-06 0.2188469186 0.3801428806E-06 0.2325248510 0.4372624363E-06 0.2462027834 0.4941002192E-06 0.2598807158 0.5496028561E-06 0.2735586482 0.6029107111E-06 0.2872365807 0.6534028965E-06 0.3009145131 0.7007220400E-06 0.3145924455 0.7447791782E-06 0.3282703779 0.7857409099E-06 0.3419483103 0.8240022239E-06 0.3556262427 0.8601491196E-06 0.3693041751 0.8949152779E-06 0.3829821075 0.9291366682E-06 0.3966600400 0.9637072386E-06 0.4103379724 0.9995378929E-06 0.4240159048 0.1037519972E-05 0.4376938372 0.1078493596E-05 0.4513717696 0.1123220569E-05 0.4650497020 0.1172361227E-05 0.4787276344 0.1226454506E-05 0.4924055668 0.1285900739E-05 0.5060834992 0.1350947021E-05 0.5197614317 0.1421675400E-05 0.5334393641 0.1497994541E-05 0.5471172965 0.1579635744E-05 0.5607952289 0.1666154257E-05 0.5744731613 0.1756936669E-05 0.5881510937 0.1851214825E-05 0.6018290261 0.1948086179E-05 0.6155069585 0.2046539971E-05 0.6291848910 0.2145488003E-05 0.6428628234 0.2243798357E-05 0.6565407558 0.2340330043E-05 0.6702186882 0.2433966479E-05 0.6838966206 0.2523645769E-05 0.6975745530 0.2608386080E-05 0.7112524854 0.2687304831E-05 0.7249304178 0.2759631018E-05 0.7386083503 0.2824710574E-05 0.7522862827 0.2882005272E-05 0.7659642151 0.2931086197E-05 0.7796421475 0.2971623165E-05 0.7933200799 0.3003371776E-05 0.8069980123 0.3026159805E-05 0.8206759447 0.3039874606E-05 0.8343538771 0.3044452977E-05 0.8482356956 0.3039591359E-05 0.8621175141 0.3025060762E-05 0.8759993325 0.3001022912E-05 0.8898811510 0.2967743882E-05 0.9037629694 0.2925588999E-05 0.9176447879 0.2875015889E-05 0.9315266063 0.2816565866E-05 0.9454084248 0.2750853883E-05 0.9592902433 0.2678557301E-05 0.9731720617 0.2600403776E-05 0.9870538802 0.2517158551E-05 1.000935699 0.2429611480E-05 1.014817517 0.2338564078E-05 1.028699336 0.2244816907E-05 1.042581154 0.2149157567E-05 1.056462972 0.2052349534E-05 1.070344791 0.1955122077E-05 1.084226609 0.1858161412E-05 1.098108428 0.1762103226E-05 1.111990246 0.1667526668E-05 1.125872065 0.1574949835E-05 1.139753883 0.1484826757E-05 1.153635702 0.1397545838E-05 1.167517520 0.1313429669E-05 1.181399339 0.1232736099E-05 1.195281157 0.1155660432E-05 1.209162975 0.1082338594E-05 1.223044794 0.1012851083E-05 1.236926612 0.9472275553E-06 1.250808431 0.8854518478E-06 1.264690249 0.8274672863E-06 1.278572068 0.7731821141E-06 1.292453886 0.7224749057E-06 1.306335705 0.6751998449E-06 1.320217523 0.6311917672E-06 1.334099342 0.5902708892E-06 1.347981160 0.5522471718E-06 1.361862979 0.5169242805E-06 1.375744797 0.4841031302E-06 1.389626615 0.4535850134E-06 1.403508434 0.4251743275E-06 1.417390252 0.3986809249E-06 1.431272071 0.3739221161E-06 1.445153889 0.3507243590E-06 1.459035708 0.3289246680E-06 1.472917526 0.3083717737E-06 1.486799345 0.2889270575E-06 1.500681163 0.2704652827E-06 1.514562982 0.2528751331E-06 1.528444800 0.2360595660E-06 1.542326618 0.2199359799E-06 1.556208437 0.2044361899E-06 1.570090255 0.1895062051E-06 1.583972074 0.1751057957E-06 1.597853892 0.1612078437E-06 1.611735711 0.1477974701E-06 1.625617529 0.1348709388E-06 1.639499348 0.1224343443E-06 1.653381166 0.1105020988E-06 1.667262985 0.9909524231E-07 1.681144803 0.8823960960E-07 1.695026621 0.7796389825E-07 1.708908440 0.6829768758E-07 1.722790258 0.5926946658E-07 1.736672077 0.5090473277E-07 1.750553895 0.4322422583E-07 1.764435714 0.3624235878E-07 1.778317532 0.2996590585E-07 1.792199351 0.2439299908E-07 1.806081169 0.1951247650E-07 1.819962988 0.1530361243E-07 1.833844806 0.1173624684E-07 1.847726625 0.8771315316E-08 1.861608443 0.6361765242E-08 1.875490261 0.4453828235E-08 1.889372080 0.2988603419E-08 1.903253898 0.1903892932E-08 1.917135717 0.1136219565E-08 1.931017535 0.6229479236E-09 1.944899354 0.3044251440E-09 1.958781172 0.1260553793E-09 1.972662991 0.4022411202E-10 1.986544809 0.7993820452E-11 2.000426628 0.5014364757E-12 2.014308446 0.2711397106E-35 2.027941873 0.2604005262E-11 2.041575301 0.4149323759E-10 2.055208728 0.2086263637E-09 2.068842156 0.6530762062E-09 2.082475583 0.1574920842E-08 2.096109011 0.3217040175E-08 2.109742438 0.5855148686E-08 2.123375865 0.9786464302E-08 2.137009293 0.1531746532E-07 2.150642720 0.2275121991E-07 2.164276148 0.3237478466E-07 2.177909575 0.4444715988E-07 2.191543002 0.5918826007E-07 2.205176430 0.7676931054E-07 2.218809857 0.9730501717E-07 2.232443285 0.1208477793E-06 2.246076712 0.1473841297E-06 2.259710140 0.1768334923E-06 2.273343567 0.2090492584E-06 2.286976994 0.2438220862E-06 2.300610422 0.2808852508E-06 2.314243849 0.3199217925E-06 2.327877277 0.3605731544E-06 2.341510704 0.4024489513E-06 2.355144132 0.4451374845E-06 2.368777559 0.4882166045E-06 2.382410986 0.5312645268E-06 2.396044414 0.5738702289E-06 2.409677841 0.6156430874E-06 2.423311269 0.6562214663E-06 2.436944696 0.6952800162E-06 2.450578123 0.7325355122E-06 2.464211551 0.7677511198E-06 2.477844978 0.8007390430E-06 2.491478406 0.8313615728E-06 2.505111833 0.8595306072E-06 2.518745261 0.8852057670E-06 2.532378688 0.9083912658E-06 2.546012115 0.9291317279E-06 2.559645543 0.9475071609E-06 2.573278970 0.9636273023E-06 2.586912398 0.9776255563E-06 2.600545825 0.9896527276E-06 2.614179253 0.9998707422E-06 2.627812680 0.1008446524E-05 2.641446107 0.1015546174E-05 2.655079535 0.1021329558E-05 2.668712962 0.1025945416E-05 2.682346390 0.1029527037E-05 2.695979817 0.1032188561E-05 2.709613245 0.1034021934E-05 2.723246672 0.1035094532E-05 2.736880099 0.1035447459E-05 0.000000000 0.2711397106E-35 0.1367793241E-01 0.1358896214E-10 0.2735586482E-01 0.2151487490E-09 0.4103379724E-01 0.1070288517E-08 0.5471172965E-01 0.3300894552E-08 0.6838966206E-01 0.7809928083E-08 0.8206759447E-01 0.1558742265E-07 0.9574552688E-01 0.2760741146E-07 0.1094234593 0.4472629633E-07 0.1231013917 0.6759279800E-07 0.1367793241 0.9657817349E-07 0.1504572565 0.1317330471E-06 0.1641351889 0.1727742717E-06 0.1778131214 0.2191020716E-06 0.1914910538 0.2698446803E-06 0.2051689862 0.3239251149E-06 0.2188469186 0.3801428806E-06 0.2325248510 0.4372624363E-06 0.2462027834 0.4941002192E-06 0.2598807158 0.5496028561E-06 0.2735586482 0.6029107111E-06 0.2872365807 0.6534028965E-06 0.3009145131 0.7007220400E-06 0.3145924455 0.7447791782E-06 0.3282703779 0.7857409099E-06 0.3419483103 0.8240022239E-06 0.3556262427 0.8601491196E-06 0.3693041751 0.8949152779E-06 0.3829821075 0.9291366682E-06 0.3966600400 0.9637072386E-06 0.4103379724 0.9995378929E-06 0.4240159048 0.1037519972E-05 0.4376938372 0.1078493596E-05 0.4513717696 0.1123220569E-05 0.4650497020 0.1172361227E-05 0.4787276344 0.1226454506E-05 0.4924055668 0.1285900739E-05 0.5060834992 0.1350947021E-05 0.5197614317 0.1421675400E-05 0.5334393641 0.1497994541E-05 0.5471172965 0.1579635744E-05 0.5607952289 0.1666154257E-05 0.5744731613 0.1756936669E-05 0.5881510937 0.1851214825E-05 0.6018290261 0.1948086179E-05 0.6155069585 0.2046539971E-05 0.6291848910 0.2145488003E-05 0.6428628234 0.2243798357E-05 0.6565407558 0.2340330043E-05 0.6702186882 0.2433966479E-05 0.6838966206 0.2523645769E-05 0.6975745530 0.2608386080E-05 0.7112524854 0.2687304831E-05 0.7249304178 0.2759631018E-05 0.7386083503 0.2824710574E-05 0.7522862827 0.2882005272E-05 0.7659642151 0.2931086197E-05 0.7796421475 0.2971623165E-05 0.7933200799 0.3003371776E-05 0.8069980123 0.3026159805E-05 0.8206759447 0.3039874606E-05 0.8343538771 0.3044452977E-05 0.8482356956 0.3048847860E-05 0.8621175141 0.3062045549E-05 0.8759993325 0.3084084769E-05 0.8898811510 0.3115028742E-05 0.9037629694 0.3154963190E-05 0.9176447879 0.3203993508E-05 0.9315266063 0.3262241074E-05 0.9454084248 0.3329838668E-05 0.9592902433 0.3406924954E-05 0.9731720617 0.3493638014E-05 0.9870538802 0.3590107883E-05 1.000935699 0.3696448106E-05 1.014817517 0.3812746290E-05 1.028699336 0.3939053718E-05 1.042581154 0.4075374054E-05 1.056462972 0.4221651263E-05 1.070344791 0.4377756858E-05 1.084226609 0.4543476674E-05 1.098108428 0.4718497388E-05 1.111990246 0.4902393060E-05 1.125872065 0.4961920680E-05 1.139753883 0.4832408453E-05 1.153635702 0.4703574045E-05 1.167517520 0.4575766745E-05 1.181399339 0.4449274944E-05 1.195281157 0.4324326501E-05 1.209162975 0.4201090071E-05 1.223044794 0.4079677309E-05 1.236926612 0.3960145899E-05 1.250808431 0.3842503288E-05 1.264690249 0.3726711078E-05 1.278572068 0.3612689974E-05 1.292453886 0.3500325214E-05 1.306335705 0.3389472406E-05 1.320217523 0.3279963705E-05 1.334099342 0.3171614238E-05 1.347981160 0.3064228716E-05 1.361862979 0.2957608148E-05 1.375744797 0.2851556574E-05 1.389626615 0.2745887729E-05 1.403508434 0.2640431538E-05 1.417390252 0.2535040342E-05 1.431272071 0.2429594743E-05 1.445153889 0.2324008940E-05 1.459035708 0.2218235450E-05 1.472917526 0.2112269083E-05 1.486799345 0.2006150040E-05 1.500681163 0.1899966041E-05 1.514562982 0.1793853358E-05 1.528444800 0.1687996680E-05 1.542326618 0.1582627745E-05 1.556208437 0.1478022691E-05 1.570090255 0.1374498135E-05 1.583972074 0.1272406000E-05 1.597853892 0.1172127160E-05 1.611735711 0.1074064004E-05 1.625617529 0.9786320837E-06 1.639499348 0.8862510009E-06 1.653381166 0.7973347782E-06 1.667262985 0.7122819463E-06 1.681144803 0.6314656251E-06 1.695026621 0.5552238830E-06 1.708908440 0.4838506692E-06 1.722790258 0.4175876089E-06 1.736672077 0.3566169388E-06 1.750553895 0.3010558363E-06 1.764435714 0.2509523640E-06 1.778317532 0.2062832074E-06 1.792199351 0.1669533339E-06 1.806081169 0.1327976440E-06 1.819962988 0.1035846260E-06 1.833844806 0.7902195912E-07 1.847726625 0.5876394664E-07 1.861608443 0.4242060033E-07 1.875490261 0.2956813656E-07 1.889372080 0.1976059565E-07 1.903253898 0.1254225269E-07 1.917135717 0.7460455607E-08 1.931017535 0.4078506595E-08 1.944899354 0.1988194588E-08 1.958781172 0.8215926040E-09 1.972662991 0.2617522333E-09 1.986544809 0.5195918648E-10 2.000426628 0.3257057249E-11 2.014308446 0.2711397106E-35 2.027941873 0.2604005262E-11 2.041575301 0.4149323759E-10 2.055208728 0.2086263637E-09 2.068842156 0.6530762062E-09 2.082475583 0.1574920842E-08 2.096109011 0.3217040175E-08 2.109742438 0.5855148686E-08 2.123375865 0.9786464302E-08 2.137009293 0.1531746532E-07 2.150642720 0.2275121991E-07 2.164276148 0.3237478466E-07 2.177909575 0.4444715988E-07 2.191543002 0.5918826007E-07 2.205176430 0.7676931054E-07 2.218809857 0.9730501717E-07 2.232443285 0.1208477793E-06 2.246076712 0.1473841297E-06 2.259710140 0.1768334923E-06 2.273343567 0.2090492584E-06 2.286976994 0.2438220862E-06 2.300610422 0.2808852508E-06 2.314243849 0.3199217925E-06 2.327877277 0.3605731544E-06 2.341510704 0.4024489513E-06 2.355144132 0.4451374845E-06 2.368777559 0.4882166045E-06 2.382410986 0.5312645268E-06 2.396044414 0.5738702289E-06 2.409677841 0.6156430874E-06 2.423311269 0.6562214663E-06 2.436944696 0.6952800162E-06 2.450578123 0.7325355122E-06 2.464211551 0.7677511198E-06 2.477844978 0.8007390430E-06 2.491478406 0.8313615728E-06 2.505111833 0.8595306072E-06 2.518745261 0.8852057670E-06 2.532378688 0.9083912658E-06 2.546012115 0.9291317279E-06 2.559645543 0.9475071609E-06 2.573278970 0.9636273023E-06 2.586912398 0.9776255563E-06 2.600545825 0.9896527276E-06 2.614179253 0.9998707422E-06 2.627812680 0.1008446524E-05 2.641446107 0.1015546174E-05 2.655079535 0.1021329558E-05 2.668712962 0.1025945416E-05 2.682346390 0.1029527037E-05 2.695979817 0.1032188561E-05 2.709613245 0.1034021934E-05 2.723246672 0.1035094532E-05 2.736880099 0.1035447459E-05 0.000000000 0.2711397106E-35 0.1367793241E-01 0.2557314863E-10 0.2735586482E-01 0.4073803573E-09 0.4103379724E-01 0.2047330086E-08 0.5471172965E-01 0.6404524318E-08 0.6838966206E-01 0.1543066898E-07 0.8206759447E-01 0.3148269687E-07 0.9574552688E-01 0.5721562443E-07 0.1094234593 0.9545947369E-07 0.1231013917 0.1490848363E-06 0.1367793241 0.2208623030E-06 0.1504572565 0.3133214838E-06 0.1641351889 0.4286156573E-06 0.1778131214 0.5683981623E-06 0.1914910538 0.7337164425E-06 0.2051689862 0.9249291474E-06 0.2188469186 0.1141650868E-05 0.2325248510 0.1382727955E-05 0.2462027834 0.1646247474E-05 0.2598807158 0.1929579736E-05 0.2735586482 0.2229453147E-05 0.2872365807 0.2542058334E-05 0.3009145131 0.2863176925E-05 0.3145924455 0.3188328897E-05 0.3282703779 0.3512931322E-05 0.3419483103 0.3832460700E-05 0.3556262427 0.4142610819E-05 0.3693041751 0.4439438432E-05 0.3829821075 0.4719489812E-05 0.3966600400 0.4979902489E-05 0.4103379724 0.5218478020E-05 0.4240159048 0.5433723460E-05 0.4376938372 0.5624861051E-05 0.4513717696 0.5791807479E-05 0.4650497020 0.5935125664E-05 0.4787276344 0.6055953375E-05 0.4924055668 0.6155913890E-05 0.5060834992 0.6237014454E-05 0.5197614317 0.6301538352E-05 0.5334393641 0.6351936138E-05 0.5471172965 0.6390720907E-05 0.5607952289 0.6420371702E-05 0.5744731613 0.6443248121E-05 0.5881510937 0.6461518249E-05 0.6018290261 0.6477101070E-05 0.6155069585 0.6491623760E-05 0.6291848910 0.6506393597E-05 0.6428628234 0.6522383834E-05 0.6565407558 0.6540232535E-05 0.6702186882 0.6560253290E-05 0.6838966206 0.6582456611E-05 0.6975745530 0.6606580778E-05 0.7112524854 0.6632130847E-05 0.7249304178 0.6658424430E-05 0.7386083503 0.6684642685E-05 0.7522862827 0.6709884760E-05 0.7659642151 0.6733223698E-05 0.7796421475 0.6753761620E-05 0.7933200799 0.6770681846E-05 0.8069980123 0.6783295618E-05 0.8206759447 0.6791081167E-05 0.8343538771 0.6793713186E-05 0.8482356956 0.6788182758E-05 0.8621175141 0.6771639306E-05 0.8759993325 0.6744225474E-05 0.8898811510 0.6706176201E-05 0.9037629694 0.6657814586E-05 0.9176447879 0.6599546253E-05 0.9315266063 0.6531852344E-05 0.9454084248 0.6455281313E-05 0.9592902433 0.6370439730E-05 0.9731720617 0.6277982292E-05 0.9870538802 0.6178601286E-05 1.000935699 0.6073015738E-05 1.014817517 0.5961960470E-05 1.028699336 0.5846175312E-05 1.042581154 0.5726394655E-05 1.056462972 0.5603337569E-05 1.070344791 0.5477698622E-05 1.084226609 0.5350139575E-05 1.098108428 0.5221282041E-05 1.111990246 0.5091701208E-05 1.125872065 0.5094612026E-05 1.139753883 0.5294464507E-05 1.153635702 0.5501111357E-05 1.167517520 0.5713554376E-05 1.181399339 0.5930628689E-05 1.195281157 0.6150997636E-05 1.209162975 0.6373150692E-05 1.223044794 0.6595404840E-05 1.236926612 0.6815909849E-05 1.250808431 0.7032657810E-05 1.264690249 0.7243497215E-05 1.278572068 0.7446151786E-05 1.292453886 0.7638244115E-05 1.306335705 0.7817324078E-05 1.320217523 0.7980901816E-05 1.334099342 0.8126484935E-05 1.347981160 0.8251619419E-05 1.361862979 0.8353933575E-05 1.375744797 0.8431184204E-05 1.389626615 0.8481304023E-05 1.403508434 0.8502449244E-05 1.417390252 0.8493046143E-05 1.431272071 0.8451835341E-05 1.445153889 0.8377912499E-05 1.459035708 0.8270764161E-05 1.472917526 0.8130297456E-05 1.486799345 0.7956862532E-05 1.500681163 0.7751266657E-05 1.514562982 0.7514779139E-05 1.528444800 0.7249126416E-05 1.542326618 0.6956476878E-05 1.556208437 0.6639415314E-05 1.570090255 0.6300907114E-05 1.583972074 0.5944252681E-05 1.597853892 0.5573032827E-05 1.611735711 0.5191046193E-05 1.625617529 0.4802240045E-05 1.639499348 0.4410636010E-05 1.653381166 0.4020252570E-05 1.667262985 0.3635026257E-05 1.681144803 0.3258733624E-05 1.695026621 0.2894916104E-05 1.708908440 0.2546809861E-05 1.722790258 0.2217282642E-05 1.736672077 0.1908779497E-05 1.750553895 0.1623279021E-05 1.764435714 0.1362261489E-05 1.778317532 0.1126689957E-05 1.792199351 0.9170050014E-06 1.806081169 0.7331334024E-06 1.819962988 0.5745106557E-06 1.833844806 0.4401167663E-06 1.847726625 0.3285243807E-06 1.861608443 0.2379579176E-06 1.875490261 0.1663620073E-06 1.889372080 0.1114772447E-06 1.903253898 0.7092101557E-07 1.917135717 0.4227097831E-07 1.931017535 0.2314868091E-07 1.944899354 0.1130077014E-07 1.958781172 0.4675307697E-08 1.972662991 0.1490845736E-08 1.986544809 0.2961285189E-09 2.000426628 0.1856982570E-10 2.014308446 0.2711397106E-35 2.027941873 0.2784761186E-10 2.041575301 0.4433953877E-09 2.055208728 0.2226530069E-08 2.068842156 0.6957375866E-08 2.082475583 0.1673931819E-07 2.096109011 0.3409621965E-07 2.109742438 0.6184852430E-07 2.123375865 0.1029738939E-06 2.137009293 0.1604587006E-06 2.150642720 0.2371470818E-06 2.164276148 0.3355943303E-06 2.177909575 0.4579311460E-06 2.191543002 0.6057447262E-06 2.205176430 0.7799818571E-06 2.218809857 0.9808781204E-06 2.232443285 0.1207916114E-05 2.246076712 0.1459814245E-05 2.259710140 0.1734546291E-05 2.273343567 0.2029390530E-05 2.286976994 0.2341006004E-05 2.300610422 0.2665532315E-05 2.314243849 0.2998708419E-05 2.327877277 0.3336005188E-05 2.341510704 0.3672766050E-05 2.355144132 0.4004349849E-05 2.368777559 0.4326270189E-05 2.382410986 0.4634325862E-05 2.396044414 0.4924717581E-05 2.409677841 0.5194147021E-05 2.423311269 0.5439895127E-05 2.436944696 0.5659877660E-05 2.450578123 0.5852677064E-05 2.464211551 0.6017550770E-05 2.477844978 0.6154417070E-05 2.491478406 0.6263820559E-05 2.505111833 0.6346879882E-05 2.518745261 0.6405221045E-05 2.532378688 0.6440899929E-05 2.546012115 0.6456317743E-05 2.559645543 0.6454133121E-05 2.573278970 0.6437174311E-05 2.586912398 0.6408354500E-05 2.600545825 0.6370592817E-05 2.614179253 0.6326742925E-05 2.627812680 0.6279530505E-05 2.641446107 0.6231500253E-05 2.655079535 0.6184972474E-05 2.668712962 0.6142008778E-05 2.682346390 0.6104386040E-05 2.695979817 0.6073577455E-05 2.709613245 0.6050739416E-05 2.723246672 0.6036702929E-05 2.736880099 0.6031968405E-05 elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/PHLWLINES.OUT0000644002504400250440000000005012337331330021560 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/PHLWLINES.OUT0000644002504400250440000000050012337331330022317 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.6376836933E-05 0.000000000 0.1275367387E-04 0.8343538771 -0.6376836933E-05 0.8343538771 0.1275367387E-04 2.014308446 -0.6376836933E-05 2.014308446 0.1275367387E-04 2.736880099 -0.6376836933E-05 2.736880099 0.1275367387E-04 elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/ALPHA2F.OUT0000644002504400250440000000005012337331330021230 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/ALPHA2F.OUT0000644002504400250440000004410412337331330021777 0ustar00dewhurstdewhurst00000000000000 -0.1651537560E-03 0.3965264126E-03 -0.1615203733E-03 0.4136230544E-03 -0.1578869907E-03 0.3494326032E-03 -0.1542536081E-03 0.3846940402E-03 -0.1506202254E-03 0.4233210607E-03 -0.1469868428E-03 0.3906850028E-03 -0.1433534602E-03 0.4646618975E-03 -0.1397200775E-03 0.4524371011E-03 -0.1360866949E-03 0.4116574747E-03 -0.1324533123E-03 0.3323831236E-03 -0.1288199297E-03 0.4598471186E-03 -0.1251865470E-03 0.4836071864E-03 -0.1215531644E-03 0.3793013646E-03 -0.1179197818E-03 0.3744979470E-03 -0.1142863991E-03 0.4512089095E-03 -0.1106530165E-03 0.4963632505E-03 -0.1070196339E-03 0.4147807011E-03 -0.1033862512E-03 0.4436985981E-03 -0.9975286860E-04 0.2899279380E-03 -0.9611948597E-04 0.3788484454E-03 -0.9248610334E-04 0.4340368299E-03 -0.8885272071E-04 0.3243077377E-03 -0.8521933808E-04 0.4953336437E-03 -0.8158595545E-04 0.2572634738E-03 -0.7795257281E-04 0.4016929802E-03 -0.7431919018E-04 0.2141521200E-03 -0.7068580755E-04 0.2377948821E-03 -0.6705242492E-04 0.4754569294E-03 -0.6341904229E-04 0.2610044056E-03 -0.5978565966E-04 0.2771416165E-03 -0.5615227703E-04 0.3879840813E-03 -0.5251889440E-04 0.3167382140E-03 -0.4888551176E-04 0.1293408684E-03 -0.4525212913E-04 0.2467127044E-03 -0.4161874650E-04 0.8667786860E-04 -0.3798536387E-04 0.1059519544E-03 -0.3435198124E-04 0.2015424233E-03 -0.3071859861E-04 0.1215816103E-03 -0.2708521598E-04 0.1257166931E-03 -0.2345183335E-04 0.2071457683E-03 -0.1981845072E-04 0.1814336619E-03 -0.1618506808E-04 0.7553635157E-04 -0.1255168545E-04 0.4470619010E-04 -0.8918302822E-05 0.8609423480E-04 -0.5284920191E-05 0.000000000 -0.1651537560E-05 0.1948355313E-36 0.1981845072E-05 0.000000000 0.5615227703E-05 0.2367822316E-04 0.9248610334E-05 0.6335923507E-04 0.1288199297E-04 0.5235438557E-04 0.1651537560E-04 0.7586022265E-04 0.2014875823E-04 0.1157740174E-03 0.2378214086E-04 0.9340082565E-04 0.2741552349E-04 0.5222682099E-04 0.3104890612E-04 0.1337708212E-03 0.3468228875E-04 0.3243267217E-03 0.3831567138E-04 0.2571491060E-03 0.4194905401E-04 0.2585188337E-03 0.4558243665E-04 0.1232776369E-03 0.4921581928E-04 0.3009292496E-03 0.5284920191E-04 0.3786932411E-03 0.5648258454E-04 0.1574893136E-03 0.6011596717E-04 0.2055524787E-03 0.6374934980E-04 0.3068094449E-03 0.6738273243E-04 0.5161503958E-03 0.7101611506E-04 0.4218928928E-03 0.7464949769E-04 0.4811535596E-03 0.7828288033E-04 0.4502950565E-03 0.8191626296E-04 0.3545333718E-03 0.8554964559E-04 0.5149897540E-03 0.8918302822E-04 0.5743837056E-03 0.9281641085E-04 0.7470899497E-03 0.9644979348E-04 0.3814869526E-03 0.1000831761E-03 0.7118054236E-03 0.1037165587E-03 0.5018940444E-03 0.1073499414E-03 0.8456329421E-03 0.1109833240E-03 0.7067144912E-03 0.1146167066E-03 0.6476651903E-03 0.1182500893E-03 0.8535764585E-03 0.1218834719E-03 0.8456136302E-03 0.1255168545E-03 0.8209966161E-03 0.1291502372E-03 0.8295019793E-03 0.1327836198E-03 0.9250588866E-03 0.1364170024E-03 0.9092662904E-03 0.1400503851E-03 0.1431513627E-02 0.1436837677E-03 0.1121485670E-02 0.1473171503E-03 0.9363515179E-03 0.1509505329E-03 0.1287549084E-02 0.1545839156E-03 0.1085972253E-02 0.1582172982E-03 0.1184930247E-02 0.1618506808E-03 0.1255795595E-02 0.1654840635E-03 0.1453942750E-02 0.1691174461E-03 0.1517156198E-02 0.1727508287E-03 0.1808406286E-02 0.1763842114E-03 0.1383647565E-02 0.1800175940E-03 0.1769846598E-02 0.1836509766E-03 0.1970446833E-02 0.1872843593E-03 0.1636772288E-02 0.1909177419E-03 0.1583682668E-02 0.1945511245E-03 0.2024258570E-02 0.1981845072E-03 0.1741813392E-02 0.2018178898E-03 0.2397935521E-02 0.2054512724E-03 0.1952274853E-02 0.2090846550E-03 0.2971436710E-02 0.2127180377E-03 0.2408238705E-02 0.2163514203E-03 0.2523113298E-02 0.2199848029E-03 0.2273200554E-02 0.2236181856E-03 0.2254382180E-02 0.2272515682E-03 0.2828330831E-02 0.2308849508E-03 0.3192948855E-02 0.2345183335E-03 0.2811394439E-02 0.2381517161E-03 0.3543264279E-02 0.2417850987E-03 0.3446436259E-02 0.2454184814E-03 0.3513383897E-02 0.2490518640E-03 0.3229330221E-02 0.2526852466E-03 0.3011176752E-02 0.2563186293E-03 0.4099445505E-02 0.2599520119E-03 0.4253439828E-02 0.2635853945E-03 0.4411340839E-02 0.2672187771E-03 0.3984209887E-02 0.2708521598E-03 0.4855303428E-02 0.2744855424E-03 0.4805062546E-02 0.2781189250E-03 0.4613710830E-02 0.2817523077E-03 0.4525521122E-02 0.2853856903E-03 0.5387544552E-02 0.2890190729E-03 0.5251685376E-02 0.2926524556E-03 0.6471423987E-02 0.2962858382E-03 0.6430011115E-02 0.2999192208E-03 0.5560780148E-02 0.3035526035E-03 0.5589027304E-02 0.3071859861E-03 0.6870358256E-02 0.3108193687E-03 0.7330248950E-02 0.3144527514E-03 0.7228268685E-02 0.3180861340E-03 0.7196704175E-02 0.3217195166E-03 0.8001898421E-02 0.3253528992E-03 0.8249694492E-02 0.3289862819E-03 0.6971668677E-02 0.3326196645E-03 0.9479753492E-02 0.3362530471E-03 0.8964405627E-02 0.3398864298E-03 0.9223051420E-02 0.3435198124E-03 0.1008556784E-01 0.3471531950E-03 0.9975850534E-02 0.3507865777E-03 0.9692578830E-02 0.3544199603E-03 0.1106291041E-01 0.3580533429E-03 0.1231547414E-01 0.3616867256E-03 0.1193791866E-01 0.3653201082E-03 0.1080856513E-01 0.3689534908E-03 0.1162302878E-01 0.3725868735E-03 0.1396772201E-01 0.3762202561E-03 0.1395619610E-01 0.3798536387E-03 0.1442842967E-01 0.3834870213E-03 0.1534332633E-01 0.3871204040E-03 0.1433395869E-01 0.3907537866E-03 0.1542094673E-01 0.3943871692E-03 0.1529094621E-01 0.3980205519E-03 0.1765686448E-01 0.4016539345E-03 0.1879005926E-01 0.4052873171E-03 0.1668157924E-01 0.4089206998E-03 0.1937021802E-01 0.4125540824E-03 0.1878129668E-01 0.4161874650E-03 0.1870338812E-01 0.4198208477E-03 0.2130227286E-01 0.4234542303E-03 0.2413211237E-01 0.4270876129E-03 0.2097625024E-01 0.4307209955E-03 0.2305435300E-01 0.4343543782E-03 0.2372531937E-01 0.4379877608E-03 0.2694417599E-01 0.4416211434E-03 0.2585958709E-01 0.4452545261E-03 0.2617943798E-01 0.4488879087E-03 0.2575096785E-01 0.4525212913E-03 0.3124869639E-01 0.4561546740E-03 0.3136329991E-01 0.4597880566E-03 0.3061852050E-01 0.4634214392E-03 0.3231086548E-01 0.4670548219E-03 0.3442087895E-01 0.4706882045E-03 0.3520158570E-01 0.4743215871E-03 0.3666589425E-01 0.4779549698E-03 0.4023186094E-01 0.4815883524E-03 0.3907744591E-01 0.4852217350E-03 0.3981112305E-01 0.4888551176E-03 0.4185844991E-01 0.4924885003E-03 0.4386811312E-01 0.4961218829E-03 0.4878921415E-01 0.4997552655E-03 0.4695664119E-01 0.5033886482E-03 0.5187062854E-01 0.5070220308E-03 0.5041331397E-01 0.5106554134E-03 0.5085046341E-01 0.5142887961E-03 0.5970823637E-01 0.5179221787E-03 0.5660483468E-01 0.5215555613E-03 0.6212477464E-01 0.5251889440E-03 0.6288321069E-01 0.5288223266E-03 0.6507043360E-01 0.5324557092E-03 0.6874586800E-01 0.5360890919E-03 0.7261210458E-01 0.5397224745E-03 0.7774632024E-01 0.5433558571E-03 0.7547803780E-01 0.5469892397E-03 0.8551446073E-01 0.5506226224E-03 0.8565448262E-01 0.5542560050E-03 0.8975824370E-01 0.5578893876E-03 0.9261416552E-01 0.5615227703E-03 0.1003426510 0.5651561529E-03 0.1033048412 0.5687895355E-03 0.1081863290 0.5724229182E-03 0.1217515120 0.5760563008E-03 0.1231611707 0.5796896834E-03 0.1241704050 0.5833230661E-03 0.1372056903 0.5869564487E-03 0.1655884301 0.5905898313E-03 0.1728910272 0.5942232140E-03 0.1639159771 0.5978565966E-03 0.3061619323 0.6014899792E-03 0.1663888841 0.6051233618E-03 0.1993922331 0.6087567445E-03 0.2010886672 0.6123901271E-03 0.1826430846 0.6160235097E-03 0.1659156793 0.6196568924E-03 0.1743652863 0.6232902750E-03 0.1772057028 0.6269236576E-03 0.1696289631 0.6305570403E-03 0.1660090225 0.6341904229E-03 0.1661969949 0.6378238055E-03 0.1747393609 0.6414571882E-03 0.1669911987 0.6450905708E-03 0.1594619718 0.6487239534E-03 0.1666309407 0.6523573361E-03 0.1724515902 0.6559907187E-03 0.1664822384 0.6596241013E-03 0.1599465306 0.6632574839E-03 0.1679242331 0.6668908666E-03 0.1692390836 0.6705242492E-03 0.1624942354 0.6741576318E-03 0.1621926686 0.6777910145E-03 0.1735568084 0.6814243971E-03 0.1623143254 0.6850577797E-03 0.1640366988 0.6886911624E-03 0.1724985802 0.6923245450E-03 0.1651757860 0.6959579276E-03 0.1624485489 0.6995913103E-03 0.1646891524 0.7032246929E-03 0.1708587253 0.7068580755E-03 0.1697481964 0.7104914581E-03 0.1650805837 0.7141248408E-03 0.1615012221 0.7177582234E-03 0.1803095682 0.7213916060E-03 0.1639867353 0.7250249887E-03 0.1630080429 0.7286583713E-03 0.1674645892 0.7322917539E-03 0.1766367684 0.7359251366E-03 0.1690986853 0.7395585192E-03 0.1584275009 0.7431919018E-03 0.1723529369 0.7468252845E-03 0.1806714341 0.7504586671E-03 0.1758145005 0.7540920497E-03 0.1648365591 0.7577254324E-03 0.1764928508 0.7613588150E-03 0.1784778832 0.7649921976E-03 0.1789874588 0.7686255802E-03 0.1688732974 0.7722589629E-03 0.1880419086 0.7758923455E-03 0.1867502759 0.7795257281E-03 0.1874921663 0.7831591108E-03 0.1848476398 0.7867924934E-03 0.1811187908 0.7904258760E-03 0.2047309427 0.7940592587E-03 0.2268788751 0.7976926413E-03 0.2240511962 0.8013260239E-03 0.2421975852 0.8049594066E-03 0.2505850323 0.8085927892E-03 0.2571368545 0.8122261718E-03 0.2689934463 0.8158595545E-03 0.2588218380 0.8194929371E-03 0.2679529025 0.8231263197E-03 0.2688740436 0.8267597023E-03 0.2676772749 0.8303930850E-03 0.2697171259 0.8340264676E-03 0.2728527019 0.8376598502E-03 0.2945944228 0.8412932329E-03 0.2847858091 0.8449266155E-03 0.2789113885 0.8485599981E-03 0.2810216024 0.8521933808E-03 0.2834367044 0.8558267634E-03 0.3007777805 0.8594601460E-03 0.2843574166 0.8630935287E-03 0.2996279107 0.8667269113E-03 0.2894400649 0.8703602939E-03 0.2835939124 0.8739936766E-03 0.2955139809 0.8776270592E-03 0.2886585363 0.8812604418E-03 0.3060584486 0.8848938244E-03 0.3269219172 0.8885272071E-03 0.2579686062 0.8921605897E-03 0.2423800543 0.8957939723E-03 0.2644794992 0.8994273550E-03 0.2433179461 0.9030607376E-03 0.2373131331 0.9066941202E-03 0.2387353088 0.9103275029E-03 0.2329035249 0.9139608855E-03 0.2154212836 0.9175942681E-03 0.2304273119 0.9212276508E-03 0.2226192353 0.9248610334E-03 0.2186615040 0.9284944160E-03 0.2108786314 0.9321277987E-03 0.2044270488 0.9357611813E-03 0.2121751763 0.9393945639E-03 0.2040623185 0.9430279465E-03 0.1963570971 0.9466613292E-03 0.2017239912 0.9502947118E-03 0.1931291315 0.9539280944E-03 0.2034276254 0.9575614771E-03 0.1935440246 0.9611948597E-03 0.1823878749 0.9648282423E-03 0.1848080683 0.9684616250E-03 0.1882068901 0.9720950076E-03 0.1909033463 0.9757283902E-03 0.1657625548 0.9793617729E-03 0.1847394162 0.9829951555E-03 0.1724685145 0.9866285381E-03 0.1670717103 0.9902619207E-03 0.1782165900 0.9938953034E-03 0.1582387802 0.9975286860E-03 0.1659582570 0.1001162069E-02 0.1567903574 0.1004795451E-02 0.1637132043 0.1008428834E-02 0.1672185897 0.1012062217E-02 0.1629641482 0.1015695599E-02 0.1598591941 0.1019328982E-02 0.1632713189 0.1022962364E-02 0.1683764101 0.1026595747E-02 0.1726588860 0.1030229130E-02 0.1702656774 0.1033862512E-02 0.1728579672 0.1037495895E-02 0.1810802782 0.1041129278E-02 0.1896066432 0.1044762660E-02 0.1856029948 0.1048396043E-02 0.1927193027 0.1052029425E-02 0.1995338160 0.1055662808E-02 0.2118293891 0.1059296191E-02 0.2152595987 0.1062929573E-02 0.2311412362 0.1066562956E-02 0.2586827772 0.1070196339E-02 0.2595738061 0.1073829721E-02 0.2652010573 0.1077463104E-02 0.2689950564 0.1081096487E-02 0.2593549391 0.1084729869E-02 0.2887840688 0.1088363252E-02 0.2747684982 0.1091996634E-02 0.2937470397 0.1095630017E-02 0.2829717615 0.1099263400E-02 0.2631406755 0.1102896782E-02 0.3106199146 0.1106530165E-02 0.2963015049 0.1110163548E-02 0.3214237332 0.1113796930E-02 0.3250928975 0.1117430313E-02 0.3176268573 0.1121063695E-02 0.3367953732 0.1124697078E-02 0.3252866117 0.1128330461E-02 0.3470371941 0.1131963843E-02 0.3336355865 0.1135597226E-02 0.3429130172 0.1139230609E-02 0.3580120964 0.1142863991E-02 0.3555406456 0.1146497374E-02 0.3484975103 0.1150130757E-02 0.3718150683 0.1153764139E-02 0.3746498818 0.1157397522E-02 0.3802907860 0.1161030904E-02 0.3606849403 0.1164664287E-02 0.3835667133 0.1168297670E-02 0.3984128533 0.1171931052E-02 0.3992253523 0.1175564435E-02 0.4005753725 0.1179197818E-02 0.3978715675 0.1182831200E-02 0.4195048688 0.1186464583E-02 0.4087273493 0.1190097965E-02 0.4435261816 0.1193731348E-02 0.4263773947 0.1197364731E-02 0.4455752270 0.1200998113E-02 0.4703803584 0.1204631496E-02 0.4474577669 0.1208264879E-02 0.4806084306 0.1211898261E-02 0.4875796337 0.1215531644E-02 0.5180017093 0.1219165027E-02 0.5252893451 0.1222798409E-02 0.5233172598 0.1226431792E-02 0.5328254618 0.1230065174E-02 0.5797362666 0.1233698557E-02 0.5614074843 0.1237331940E-02 0.6200014011 0.1240965322E-02 0.6189025766 0.1244598705E-02 0.6240952325 0.1248232088E-02 0.6787792321 0.1251865470E-02 0.6901538090 0.1255498853E-02 0.6745465879 0.1259132235E-02 0.6637796346 0.1262765618E-02 0.6641886050 0.1266399001E-02 0.5578814650 0.1270032383E-02 0.4407694405 0.1273665766E-02 0.3868613772 0.1277299149E-02 0.2474150700 0.1280932531E-02 0.2332849401 0.1284565914E-02 0.2166026203 0.1288199297E-02 0.2214464101 0.1291832679E-02 0.1985433135 0.1295466062E-02 0.1979294020 0.1299099444E-02 0.2060186309 0.1302732827E-02 0.1797065127 0.1306366210E-02 0.1933682611 0.1309999592E-02 0.1843211000 0.1313632975E-02 0.1662139075 0.1317266358E-02 0.1724505354 0.1320899740E-02 0.1738347050 0.1324533123E-02 0.1625725310 0.1328166505E-02 0.1569398523 0.1331799888E-02 0.1623224977 0.1335433271E-02 0.1542992984 0.1339066653E-02 0.1414237130 0.1342700036E-02 0.1541693327 0.1346333419E-02 0.1415037174 0.1349966801E-02 0.1378149650 0.1353600184E-02 0.1425247008 0.1357233566E-02 0.1343706577 0.1360866949E-02 0.1354260768 0.1364500332E-02 0.1218427150 0.1368133714E-02 0.1297577354 0.1371767097E-02 0.1245417265 0.1375400480E-02 0.1206339661 0.1379033862E-02 0.1146179646 0.1382667245E-02 0.1227257221 0.1386300628E-02 0.1071850479 0.1389934010E-02 0.1101719701 0.1393567393E-02 0.1164979166 0.1397200775E-02 0.9963295438E-01 0.1400834158E-02 0.1020289241 0.1404467541E-02 0.1014485493 0.1408100923E-02 0.9681953173E-01 0.1411734306E-02 0.9673093915E-01 0.1415367689E-02 0.9146090572E-01 0.1419001071E-02 0.9147134610E-01 0.1422634454E-02 0.8696149208E-01 0.1426267836E-02 0.8768852200E-01 0.1429901219E-02 0.8018538719E-01 0.1433534602E-02 0.8137913787E-01 0.1437167984E-02 0.8412142998E-01 0.1440801367E-02 0.6312564426E-01 0.1444434750E-02 0.7623736071E-01 0.1448068132E-02 0.6614701788E-01 0.1451701515E-02 0.7139262332E-01 0.1455334898E-02 0.6354800708E-01 0.1458968280E-02 0.6247484708E-01 0.1462601663E-02 0.5510259833E-01 0.1466235045E-02 0.5653403787E-01 0.1469868428E-02 0.5105400442E-01 0.1473501811E-02 0.4730440402E-01 0.1477135193E-02 0.4823706013E-01 0.1480768576E-02 0.4166746730E-01 0.1484401959E-02 0.3561764177E-01 0.1488035341E-02 0.3312857989E-01 0.1491668724E-02 0.2810039916E-01 0.1495302106E-02 0.2263864558E-01 0.1498935489E-02 0.1321440457E-01 0.1502568872E-02 0.1153894930E-02 0.1506202254E-02 0.000000000 0.1509835637E-02 0.000000000 0.1513469020E-02 0.000000000 0.1517102402E-02 0.000000000 0.1520735785E-02 0.000000000 0.1524369168E-02 0.000000000 0.1528002550E-02 0.000000000 0.1531635933E-02 0.000000000 0.1535269315E-02 0.000000000 0.1538902698E-02 0.000000000 0.1542536081E-02 0.000000000 0.1546169463E-02 0.000000000 0.1549802846E-02 0.000000000 0.1553436229E-02 0.000000000 0.1557069611E-02 0.000000000 0.1560702994E-02 0.000000000 0.1564336376E-02 0.000000000 0.1567969759E-02 0.000000000 0.1571603142E-02 0.000000000 0.1575236524E-02 0.000000000 0.1578869907E-02 0.000000000 0.1582503290E-02 0.000000000 0.1586136672E-02 0.000000000 0.1589770055E-02 0.000000000 0.1593403438E-02 0.000000000 0.1597036820E-02 0.000000000 0.1600670203E-02 0.000000000 0.1604303585E-02 0.000000000 0.1607936968E-02 0.000000000 0.1611570351E-02 0.000000000 0.1615203733E-02 0.000000000 0.1618837116E-02 0.000000000 0.1622470499E-02 0.000000000 0.1626103881E-02 0.000000000 0.1629737264E-02 0.000000000 0.1633370646E-02 0.000000000 0.1637004029E-02 0.000000000 0.1640637412E-02 0.000000000 0.1644270794E-02 0.000000000 0.1647904177E-02 0.000000000 elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020725 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/elk.in0000644002504400250440000000341312337331330021472 0ustar00dewhurstdewhurst00000000000000 ! Phonon spectrum and solving the Eliashberg equations to find the temperature- ! dependent superconducting gap. ! You can submit the same phonon job (task=200) on as many machines as you like, ! but they must be be able to see the same directory. Each machine will compute ! a row of a particular dynamical matrix. The code assembles all the pieces to ! construct the dynamical and electron-phonon coupling matrices throughout the ! Brillouin zone. ! Example by Antonio Sanna. tasks 200 ! uncomment the following lines for electron-phonon and Eliashberg calculations !tasks ! 0 : ground-state run ! 210 : phonon DOS ! 220 : phonon dispersion ! 240 : electron-phonon matrix elements ! 245 : phonon line-widths ! 250 : Eliashberg function, alpha^2F ! 260 : solving the Eliashberg equations ! number of temperature steps for Eliashberg calculation ntemp 40 ! phonon q-point grid ngridq 2 2 2 ! k-point grid density is determined by the radius radkpt ! (only used for the phonon calculation) radkpt 40.0 ! require accurate forces lmaxmat 6 ! fine k-point mesh required for the electron-phonon coupling (must be ! commensurate with q-point mesh) ngridk 24 24 24 ! tight convergence for forces epspot 1.e-7 ! use Broyden mixing mixtype 3 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 ! we use the LDA equilibrium lattice constant scale 3.7653 sppath '../../species/' atoms 1 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt plot1d 4 200 : nvp1d, npp1d 0.0 0.0 0.0 : vlvp1d 0.5 0.5 0.0 1.0 0.0 0.0 0.5 0.0 0.0 elk-2.3.22/examples/Al-Eliashberg/PaxHeaders.22528/PHDLINES.OUT0000644002504400250440000000005012337331330021421 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Eliashberg/PHDLINES.OUT0000644002504400250440000000050012337331330022160 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.1170583703E-02 0.000000000 0.2341167275E-02 0.8343538771 -0.1170583703E-02 0.8343538771 0.2341167275E-02 2.014308446 -0.1170583703E-02 2.014308446 0.2341167275E-02 2.736880099 -0.1170583703E-02 2.736880099 0.2341167275E-02 elk-2.3.22/examples/PaxHeaders.22528/Si-phonon-DFPT0000644002504400250440000000005012337331330017553 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-phonon-DFPT/0000755002504400250440000000000012337331330020374 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-phonon-DFPT/PaxHeaders.22528/PHDISP.OUT0000644002504400250440000000005012337331330021210 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-phonon-DFPT/PHDISP.OUT0000644002504400250440000012662412337331330021767 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.8241530510E-10 0.1665498177E-01 0.2842451735E-04 0.3330996355E-01 0.5681441417E-04 0.4996494532E-01 0.8513450673E-04 0.6661992710E-01 0.1133485039E-03 0.8327490887E-01 0.1414185009E-03 0.9992989065E-01 0.1693045270E-03 0.1165848724 0.1969641652E-03 0.1332398542 0.2243522538E-03 0.1498948360 0.2514206848E-03 0.1665498177 0.2781183038E-03 0.1832047995 0.3043909192E-03 0.1998597813 0.3301814223E-03 0.2165147631 0.3554300191E-03 0.2331697448 0.3800745701E-03 0.2498247266 0.4040510350E-03 0.2664797084 0.4272940143E-03 0.2831346902 0.4497373805E-03 0.2997896719 0.4713149889E-03 0.3164446537 0.4919614574E-03 0.3330996355 0.5116130050E-03 0.3497546173 0.5302083359E-03 0.3664095990 0.5476895588E-03 0.3830645808 0.5640031281E-03 0.3997195626 0.5791007969E-03 0.4163745444 0.5929405681E-03 0.4330295261 0.6054876338E-03 0.4496845079 0.6167152899E-03 0.4663394897 0.6266058160E-03 0.4829944715 0.6351513075E-03 0.4996494532 0.6423544482E-03 0.5163044350 0.6482292098E-03 0.5329594168 0.6528014639E-03 0.5496143986 0.6561094897E-03 0.5662693803 0.6582043583E-03 0.5829243621 0.6591501699E-03 0.5995793439 0.6590241191E-03 0.6162343257 0.6579163541E-03 0.6328893074 0.6559295966E-03 0.6495442892 0.6531784778E-03 0.6661992710 0.6497885492E-03 0.6828542528 0.6458949181E-03 0.6995092345 0.6416404676E-03 0.7161642163 0.6371736232E-03 0.7328191981 0.6326456473E-03 0.7494741799 0.6282074692E-03 0.7661291616 0.6240060928E-03 0.7827841434 0.6201806708E-03 0.7994391252 0.6168583885E-03 0.8160941069 0.6141503469E-03 0.8327490887 0.6121476828E-03 0.8494040705 0.6109181824E-03 0.8660590523 0.6105036409E-03 0.8660590523 0.6105036409E-03 0.8830700586 0.6116656057E-03 0.9000810650 0.6149939082E-03 0.9170920713 0.6200437295E-03 0.9341030777 0.6261591142E-03 0.9511140840 0.6325774599E-03 0.9681250904 0.6385389322E-03 0.9851360968 0.6433811057E-03 1.002147103 0.6466064641E-03 1.019158109 0.6479175804E-03 1.036169116 0.6472201815E-03 1.053180122 0.6445978862E-03 1.070191129 0.6402647929E-03 1.087202135 0.6345037923E-03 1.104213141 0.6275996744E-03 1.121224148 0.6197766539E-03 1.138235154 0.6111494591E-03 1.155246160 0.6016951745E-03 1.172257167 0.5912494961E-03 1.189268173 0.5795264954E-03 1.206279179 0.5661565781E-03 1.223290186 0.5507343699E-03 1.240301192 0.5328675438E-03 1.257312198 0.5122190281E-03 1.274323205 0.4885377776E-03 1.291334211 0.4616763281E-03 1.308345217 0.4315958532E-03 1.325356224 0.3983610305E-03 1.342367230 0.3621277121E-03 1.359378237 0.3231264081E-03 1.376389243 0.2816442236E-03 1.393400249 0.2380073629E-03 1.410411256 0.1925657580E-03 1.427422262 0.1456808532E-03 1.444433268 0.9771707390E-04 1.461444275 0.4903702466E-04 1.478455281 -0.6780846948E-10 1.478455281 -0.6780846948E-10 1.495028740 0.3319938278E-04 1.511602199 0.6619340945E-04 1.528175658 0.9877928618E-04 1.544749117 0.1307593124E-03 1.561322577 0.1619433499E-03 1.577896036 0.1921512000E-03 1.594469495 0.2212148608E-03 1.611042954 0.2489806370E-03 1.627616413 0.2753110795E-03 1.644189872 0.3000867318E-03 1.660763331 0.3232076642E-03 1.677336790 0.3445947798E-03 1.693910249 0.3641908760E-03 1.710483708 0.3819614460E-03 1.727057168 0.3978952056E-03 1.743630627 0.4120043221E-03 1.760204086 0.4243243223E-03 1.776777545 0.4349136432E-03 1.793351004 0.4438527818E-03 1.809924463 0.4512429930E-03 1.826497922 0.4572044731E-03 1.843071381 0.4618739666E-03 1.859644840 0.4654017397E-03 1.876218300 0.4679478791E-03 1.892791759 0.4696779113E-03 1.909365218 0.4707577842E-03 1.925938677 0.4713483245E-03 1.942512136 0.4715993604E-03 1.959085595 0.4716437864E-03 1.975659054 0.4715919171E-03 1.992232513 0.4715265209E-03 2.008805972 0.4714989240E-03 2.008805972 0.4714989240E-03 2.025914059 0.4731072636E-03 2.043022146 0.4778463011E-03 2.060130233 0.4854685235E-03 2.077238320 0.4955933457E-03 2.094346406 0.5077464530E-03 2.111454493 0.5214016811E-03 2.128562580 0.5360187803E-03 2.145670667 0.5510734353E-03 2.162778754 0.5660787169E-03 2.179886840 0.5805989263E-03 2.196994927 0.5942575404E-03 2.214103014 0.6067410034E-03 2.231211101 0.6177998070E-03 2.248319188 0.6272479145E-03 2.265427275 0.6349612254E-03 2.282535361 0.6408755023E-03 2.299643448 0.6449839756E-03 2.316751535 0.6473346897E-03 2.333859622 0.6480275361E-03 2.350967709 0.6472108229E-03 2.368075795 0.6450771486E-03 2.385183882 0.6418582874E-03 2.402291969 0.6378187577E-03 2.419400056 0.6332477651E-03 2.436508143 0.6284492848E-03 2.453616230 0.6237302229E-03 2.470724316 0.6193868581E-03 2.487832403 0.6156901183E-03 2.504940490 0.6128706337E-03 2.522048577 0.6111048472E-03 2.539156664 0.6105036409E-03 2.539156664 0.6105036409E-03 2.556167670 0.6124217579E-03 2.573178676 0.6181637944E-03 2.590189683 0.6276853469E-03 2.607200689 0.6408896411E-03 2.624211695 0.6576000773E-03 2.641222702 0.6775331023E-03 2.658233708 0.7002785205E-03 2.675244714 0.7252920098E-03 2.692255721 0.7519012566E-03 2.709266727 0.7793239894E-03 2.726277734 0.8066942522E-03 2.743288740 0.8330929834E-03 2.760299746 0.8575803356E-03 2.777310753 0.8792297397E-03 2.794321759 0.8971665009E-03 2.811332765 0.9106148767E-03 2.828343772 0.9189547954E-03 2.845354778 0.9217817721E-03 2.845354778 0.9217817721E-03 2.862675959 0.9043903079E-03 2.879997140 0.8861388395E-03 2.897318321 0.8672708024E-03 2.914639502 0.8479416147E-03 2.931960683 0.8282387920E-03 2.949281864 0.8082007662E-03 2.966603045 0.7878340637E-03 2.983924226 0.7671287957E-03 3.001245407 0.7460725030E-03 3.018566588 0.7246624243E-03 3.035887770 0.7029162700E-03 3.053208951 0.6808815920E-03 3.070530132 0.6586438305E-03 3.087851313 0.6363330857E-03 3.105172494 0.6141295621E-03 3.122493675 0.5922674719E-03 3.139814856 0.5710369158E-03 3.157136037 0.5507829075E-03 3.174457218 0.5319002902E-03 3.191778399 0.5148229500E-03 3.209099580 0.5000056930E-03 3.226420761 0.4878977874E-03 3.243741942 0.4789088314E-03 3.261063123 0.4733702813E-03 3.278384304 0.4714989240E-03 0.000000000 -0.7697504056E-10 0.1665498177E-01 0.4158751181E-04 0.3330996355E-01 0.8304631719E-04 0.4996494532E-01 0.1242504284E-03 0.6661992710E-01 0.1650792420E-03 0.8327490887E-01 0.2054200971E-03 0.9992989065E-01 0.2451706692E-03 0.1165848724 0.2842411381E-03 0.1332398542 0.3225560647E-03 0.1498948360 0.3600559064E-03 0.1665498177 0.3966980967E-03 0.1832047995 0.4324576110E-03 0.1998597813 0.4673269405E-03 0.2165147631 0.5013153984E-03 0.2331697448 0.5344476860E-03 0.2498247266 0.5667616597E-03 0.2664797084 0.5983052503E-03 0.2831346902 0.6291325054E-03 0.2997896719 0.6592987436E-03 0.3164446537 0.6888548267E-03 0.3330996355 0.7178405717E-03 0.3497546173 0.7462773270E-03 0.3664095990 0.7741597408E-03 0.3830645808 0.8014467350E-03 0.3997195626 0.8280517047E-03 0.4163745444 0.8538319931E-03 0.4330295261 0.8785778307E-03 0.4496845079 0.9020012571E-03 0.4663394897 0.9237262492E-03 0.4829944715 0.9432825437E-03 0.4996494532 0.9601075947E-03 0.5163044350 0.9735634437E-03 0.5329594168 0.9829766481E-03 0.5496143986 0.9877069780E-03 0.5662693803 0.9872410996E-03 0.5829243621 0.9812915378E-03 0.5995793439 0.9698681429E-03 0.6162343257 0.9532931819E-03 0.6328893074 0.9321552370E-03 0.6495442892 0.9072247707E-03 0.6661992710 0.8793650550E-03 0.6828542528 0.8494630613E-03 0.6995092345 0.8183884209E-03 0.7161642163 0.7869765122E-03 0.7328191981 0.7560270592E-03 0.7494741799 0.7263097184E-03 0.7661291616 0.6985698242E-03 0.7827841434 0.6735291192E-03 0.7994391252 0.6518776481E-03 0.8160941069 0.6342545401E-03 0.8327490887 0.6212177922E-03 0.8494040705 0.6132066121E-03 0.8660590523 0.6105036409E-03 0.8660590523 0.6105036409E-03 0.8830700586 0.6116656057E-03 0.9000810650 0.6149939082E-03 0.9170920713 0.6200437295E-03 0.9341030777 0.6261591142E-03 0.9511140840 0.6325774599E-03 0.9681250904 0.6385389322E-03 0.9851360968 0.6433811057E-03 1.002147103 0.6466064641E-03 1.019158109 0.6479175804E-03 1.036169116 0.6472201815E-03 1.053180122 0.6445978862E-03 1.070191129 0.6402647929E-03 1.087202135 0.6345037923E-03 1.104213141 0.6275996744E-03 1.121224148 0.6197766539E-03 1.138235154 0.6111494591E-03 1.155246160 0.6016951745E-03 1.172257167 0.5912494961E-03 1.189268173 0.5795264954E-03 1.206279179 0.5661565781E-03 1.223290186 0.5507343699E-03 1.240301192 0.5328675438E-03 1.257312198 0.5122190281E-03 1.274323205 0.4885377776E-03 1.291334211 0.4616763281E-03 1.308345217 0.4315958532E-03 1.325356224 0.3983610305E-03 1.342367230 0.3621277121E-03 1.359378237 0.3231264081E-03 1.376389243 0.2816442236E-03 1.393400249 0.2380073629E-03 1.410411256 0.1925657580E-03 1.427422262 0.1456808532E-03 1.444433268 0.9771707390E-04 1.461444275 0.4903702466E-04 1.478455281 -0.6355906234E-10 1.478455281 -0.6355906234E-10 1.495028740 0.3319938278E-04 1.511602199 0.6619340945E-04 1.528175658 0.9877928618E-04 1.544749117 0.1307593124E-03 1.561322577 0.1619433499E-03 1.577896036 0.1921512000E-03 1.594469495 0.2212148608E-03 1.611042954 0.2489806370E-03 1.627616413 0.2753110795E-03 1.644189872 0.3000867318E-03 1.660763331 0.3232076642E-03 1.677336790 0.3445947798E-03 1.693910249 0.3641908760E-03 1.710483708 0.3819614460E-03 1.727057168 0.3978952056E-03 1.743630627 0.4120043221E-03 1.760204086 0.4243243223E-03 1.776777545 0.4349136432E-03 1.793351004 0.4438527818E-03 1.809924463 0.4512429930E-03 1.826497922 0.4572044731E-03 1.843071381 0.4618739666E-03 1.859644840 0.4654017397E-03 1.876218300 0.4679478791E-03 1.892791759 0.4696779113E-03 1.909365218 0.4707577842E-03 1.925938677 0.4713483245E-03 1.942512136 0.4715993604E-03 1.959085595 0.4716437864E-03 1.975659054 0.4715919171E-03 1.992232513 0.4715265209E-03 2.008805972 0.4714989240E-03 2.008805972 0.4714989240E-03 2.025914059 0.4759135631E-03 2.043022146 0.4888731548E-03 2.060130233 0.5095923478E-03 2.077238320 0.5369494042E-03 2.094346406 0.5696667902E-03 2.111454493 0.6064436376E-03 2.128562580 0.6460189395E-03 2.145670667 0.6871746590E-03 2.162778754 0.7286966609E-03 2.179886840 0.7693086314E-03 2.196994927 0.8075922598E-03 2.214103014 0.8419163237E-03 2.231211101 0.8704269667E-03 2.248319188 0.8911951849E-03 2.265427275 0.9026110157E-03 2.282535361 0.9039374621E-03 2.299643448 0.8956581469E-03 2.316751535 0.8793009440E-03 2.333859622 0.8568920511E-03 2.350967709 0.8304536142E-03 2.368075795 0.8017494184E-03 2.385183882 0.7722311843E-03 2.402291969 0.7430764116E-03 2.419400056 0.7152474680E-03 2.436508143 0.6895431038E-03 2.453616230 0.6666349513E-03 2.470724316 0.6470894204E-03 2.487832403 0.6313775406E-03 2.504940490 0.6198757706E-03 2.522048577 0.6128610546E-03 2.539156664 0.6105036409E-03 2.539156664 0.6105036409E-03 2.556167670 0.6124217579E-03 2.573178676 0.6181637944E-03 2.590189683 0.6276853469E-03 2.607200689 0.6408896411E-03 2.624211695 0.6576000773E-03 2.641222702 0.6775331023E-03 2.658233708 0.7002785205E-03 2.675244714 0.7252920098E-03 2.692255721 0.7519012566E-03 2.709266727 0.7793239894E-03 2.726277734 0.8066942522E-03 2.743288740 0.8330929834E-03 2.760299746 0.8575803356E-03 2.777310753 0.8792297397E-03 2.794321759 0.8971665009E-03 2.811332765 0.9106148767E-03 2.828343772 0.9189547954E-03 2.845354778 0.9217817721E-03 2.845354778 0.9217817721E-03 2.862675959 0.9379614747E-03 2.879997140 0.9524516458E-03 2.897318321 0.9646393559E-03 2.914639502 0.9737863985E-03 2.931960683 0.9790726275E-03 2.949281864 0.9796846534E-03 2.966603045 0.9749449594E-03 2.983924226 0.9644464548E-03 3.001245407 0.9481366906E-03 3.018566588 0.9263134531E-03 3.035887770 0.8995431004E-03 3.053208951 0.8685504788E-03 3.070530132 0.8341268157E-03 3.087851313 0.7970757376E-03 3.105172494 0.7581951655E-03 3.122493675 0.7182841749E-03 3.139814856 0.6781643574E-03 3.157136037 0.6387081327E-03 3.174457218 0.6008680742E-03 3.191778399 0.5657002193E-03 3.209099580 0.5343703092E-03 3.226420761 0.5081261964E-03 3.243741942 0.4882169456E-03 3.261063123 0.4757488287E-03 3.278384304 0.4714989240E-03 0.000000000 -0.6816697173E-10 0.1665498177E-01 0.6308836449E-04 0.3330996355E-01 0.1260006698E-03 0.4996494532E-01 0.1885623464E-03 0.6661992710E-01 0.2506018183E-03 0.8327490887E-01 0.3119520363E-03 0.9992989065E-01 0.3724520505E-03 0.1165848724 0.4319486307E-03 0.1332398542 0.4902979366E-03 0.1498948360 0.5473672323E-03 0.1665498177 0.6030366308E-03 0.1832047995 0.6572008419E-03 0.1998597813 0.7097708809E-03 0.2165147631 0.7606756836E-03 0.2331697448 0.8098635517E-03 0.2498247266 0.8573033409E-03 0.2664797084 0.9029852892E-03 0.2831346902 0.9469213797E-03 0.2997896719 0.9891451347E-03 0.3164446537 0.1029710754E-02 0.3330996355 0.1068691539E-02 0.3497546173 0.1106177591E-02 0.3664095990 0.1142272814E-02 0.3830645808 0.1177091322E-02 0.3997195626 0.1210753391E-02 0.4163745444 0.1243381149E-02 0.4330295261 0.1275094219E-02 0.4496845079 0.1306005538E-02 0.4663394897 0.1336217564E-02 0.4829944715 0.1365819036E-02 0.4996494532 0.1394882422E-02 0.5163044350 0.1423462113E-02 0.5329594168 0.1451593387E-02 0.5496143986 0.1479292086E-02 0.5662693803 0.1506554933E-02 0.5829243621 0.1533360344E-02 0.5995793439 0.1559669605E-02 0.6162343257 0.1585428234E-02 0.6328893074 0.1610567349E-02 0.6495442892 0.1635004874E-02 0.6661992710 0.1658646378E-02 0.6828542528 0.1681385393E-02 0.6995092345 0.1703103024E-02 0.7161642163 0.1723666747E-02 0.7328191981 0.1742928357E-02 0.7494741799 0.1760721253E-02 0.7661291616 0.1776857617E-02 0.7827841434 0.1791126708E-02 0.7994391252 0.1803296418E-02 0.8160941069 0.1813121145E-02 0.8327490887 0.1820359073E-02 0.8494040705 0.1824799730E-02 0.8660590523 0.1826297406E-02 0.8660590523 0.1826297406E-02 0.8830700586 0.1798150505E-02 0.9000810650 0.1767528234E-02 0.9170920713 0.1734213177E-02 0.9341030777 0.1698138121E-02 0.9511140840 0.1659398728E-02 0.9681250904 0.1618250388E-02 0.9851360968 0.1575088804E-02 1.002147103 0.1530415173E-02 1.019158109 0.1484788212E-02 1.036169116 0.1438766877E-02 1.053180122 0.1392849281E-02 1.070191129 0.1347414735E-02 1.087202135 0.1302676619E-02 1.104213141 0.1258653306E-02 1.121224148 0.1215162397E-02 1.138235154 0.1171840125E-02 1.155246160 0.1128183624E-02 1.172257167 0.1083610022E-02 1.189268173 0.1037523813E-02 1.206279179 0.9893834195E-03 1.223290186 0.9387589083E-03 1.240301192 0.8853751173E-03 1.257312198 0.8291369542E-03 1.274323205 0.7701359955E-03 1.291334211 0.7086392867E-03 1.308345217 0.6450624689E-03 1.325356224 0.5799301353E-03 1.342367230 0.5138268549E-03 1.359378237 0.4473427642E-03 1.376389243 0.3810181246E-03 1.393400249 0.3152918059E-03 1.410411256 0.2504591342E-03 1.427422262 0.1866446736E-03 1.444433268 0.1237948479E-03 1.461444275 0.6169346096E-04 1.478455281 -0.5621410540E-10 1.478455281 -0.5621410540E-10 1.495028740 0.6927367032E-04 1.511602199 0.1384528265E-03 1.528175658 0.2074422579E-03 1.544749117 0.2761454356E-03 1.561322577 0.3444640344E-03 1.577896036 0.4122976552E-03 1.594469495 0.4795437899E-03 1.611042954 0.5460980515E-03 1.627616413 0.6118546758E-03 1.644189872 0.6767072816E-03 1.660763331 0.7405498615E-03 1.677336790 0.8032779648E-03 1.693910249 0.8647900205E-03 1.710483708 0.9249887442E-03 1.727057168 0.9837825627E-03 1.743630627 0.1041086985E-02 1.760204086 0.1096825834E-02 1.776777545 0.1150932240E-02 1.793351004 0.1203349267E-02 1.809924463 0.1254029990E-02 1.826497922 0.1302936768E-02 1.843071381 0.1350039301E-02 1.859644840 0.1395310781E-02 1.876218300 0.1438720917E-02 1.892791759 0.1480223479E-02 1.909365218 0.1519733599E-02 1.925938677 0.1557084476E-02 1.942512136 0.1591939828E-02 1.959085595 0.1623606855E-02 1.975659054 0.1650633644E-02 1.992232513 0.1670099294E-02 2.008805972 0.1677490302E-02 2.008805972 0.1677490302E-02 2.025914059 0.1675357553E-02 2.043022146 0.1669039258E-02 2.060130233 0.1658755138E-02 2.077238320 0.1644820970E-02 2.094346406 0.1627612532E-02 2.111454493 0.1607554885E-02 2.128562580 0.1585136634E-02 2.145670667 0.1560942211E-02 2.162778754 0.1535697130E-02 2.179886840 0.1510324071E-02 2.196994927 0.1486005710E-02 2.214103014 0.1464236961E-02 2.231211101 0.1446817017E-02 2.248319188 0.1435686322E-02 2.265427275 0.1432519356E-02 2.282535361 0.1438160173E-02 2.299643448 0.1452266541E-02 2.316751535 0.1473480167E-02 2.333859622 0.1499968266E-02 2.350967709 0.1529923023E-02 2.368075795 0.1561814046E-02 2.385183882 0.1594440765E-02 2.402291969 0.1626893235E-02 2.419400056 0.1658490850E-02 2.436508143 0.1688726904E-02 2.453616230 0.1717225521E-02 2.470724316 0.1743709833E-02 2.487832403 0.1767978718E-02 2.504940490 0.1789889873E-02 2.522048577 0.1809347962E-02 2.539156664 0.1826297406E-02 2.539156664 0.1826297406E-02 2.556167670 0.1824700190E-02 2.573178676 0.1819942445E-02 2.590189683 0.1812126951E-02 2.607200689 0.1801427704E-02 2.624211695 0.1788091547E-02 2.641222702 0.1772437260E-02 2.658233708 0.1754851482E-02 2.675244714 0.1735782115E-02 2.692255721 0.1715730570E-02 2.709266727 0.1695244203E-02 2.726277734 0.1674909569E-02 2.743288740 0.1655346052E-02 2.760299746 0.1637197914E-02 2.777310753 0.1621121106E-02 2.794321759 0.1607759827E-02 2.811332765 0.1597708300E-02 2.828343772 0.1591457524E-02 2.845354778 0.1589335372E-02 2.845354778 0.1589335372E-02 2.862675959 0.1572701981E-02 2.879997140 0.1556498461E-02 2.897318321 0.1541260954E-02 2.914639502 0.1527648134E-02 2.931960683 0.1516399273E-02 2.949281864 0.1508247345E-02 2.966603045 0.1503792429E-02 2.983924226 0.1503370660E-02 3.001245407 0.1506974662E-02 3.018566588 0.1514263862E-02 3.035887770 0.1524653377E-02 3.053208951 0.1537432742E-02 3.070530132 0.1551868242E-02 3.087851313 0.1567268914E-02 3.105172494 0.1583018795E-02 3.122493675 0.1598586617E-02 3.139814856 0.1613523495E-02 3.157136037 0.1627455558E-02 3.174457218 0.1640075250E-02 3.191778399 0.1651132999E-02 3.209099580 0.1660429887E-02 3.226420761 0.1667811482E-02 3.243741942 0.1673162835E-02 3.261063123 0.1676404607E-02 3.278384304 0.1677490302E-02 0.000000000 0.2257175107E-02 0.1665498177E-01 0.2256797606E-02 0.3330996355E-01 0.2255658716E-02 0.4996494532E-01 0.2253739460E-02 0.6661992710E-01 0.2251008818E-02 0.8327490887E-01 0.2247424629E-02 0.9992989065E-01 0.2242934811E-02 0.1165848724 0.2237478889E-02 0.1332398542 0.2230989774E-02 0.1498948360 0.2223395777E-02 0.1665498177 0.2214622808E-02 0.1832047995 0.2204596719E-02 0.1998597813 0.2193245783E-02 0.2165147631 0.2180503254E-02 0.2331697448 0.2166310016E-02 0.2498247266 0.2150617304E-02 0.2664797084 0.2133389506E-02 0.2831346902 0.2114607072E-02 0.2997896719 0.2094269573E-02 0.3164446537 0.2072398968E-02 0.3330996355 0.2049043176E-02 0.3497546173 0.2024280072E-02 0.3664095990 0.1998222051E-02 0.3830645808 0.1971021345E-02 0.3997195626 0.1942876251E-02 0.4163745444 0.1914038428E-02 0.4330295261 0.1884821205E-02 0.4496845079 0.1855608523E-02 0.4663394897 0.1826863361E-02 0.4829944715 0.1799133200E-02 0.4996494532 0.1773048087E-02 0.5163044350 0.1749304495E-02 0.5329594168 0.1728626791E-02 0.5496143986 0.1711700543E-02 0.5662693803 0.1699081414E-02 0.5829243621 0.1691099289E-02 0.5995793439 0.1687790422E-02 0.6162343257 0.1688886449E-02 0.6328893074 0.1693865122E-02 0.6495442892 0.1702039898E-02 0.6661992710 0.1712654679E-02 0.6828542528 0.1724959033E-02 0.6995092345 0.1738255588E-02 0.7161642163 0.1751923114E-02 0.7328191981 0.1765423212E-02 0.7494741799 0.1778297907E-02 0.7661291616 0.1790163293E-02 0.7827841434 0.1800702177E-02 0.7994391252 0.1809657213E-02 0.8160941069 0.1816825130E-02 0.8327490887 0.1822052189E-02 0.8494040705 0.1825230833E-02 0.8660590523 0.1826297406E-02 0.8660590523 0.1826297406E-02 0.8830700586 0.1852309689E-02 0.9000810650 0.1876613204E-02 0.9170920713 0.1899673204E-02 0.9341030777 0.1921945973E-02 0.9511140840 0.1943833073E-02 0.9681250904 0.1965643316E-02 0.9851360968 0.1987566707E-02 1.002147103 0.2009662986E-02 1.019158109 0.2031865395E-02 1.036169116 0.2053998163E-02 1.053180122 0.2075804485E-02 1.070191129 0.2096980677E-02 1.087202135 0.2102643890E-02 1.104213141 0.2109025115E-02 1.121224148 0.2116388387E-02 1.138235154 0.2124746280E-02 1.155246160 0.2134076404E-02 1.172257167 0.2144308317E-02 1.189268173 0.2155313040E-02 1.206279179 0.2166898055E-02 1.223290186 0.2178810047E-02 1.240301192 0.2190746403E-02 1.257312198 0.2202375003E-02 1.274323205 0.2213360312E-02 1.291334211 0.2223392610E-02 1.308345217 0.2232216526E-02 1.325356224 0.2239655031E-02 1.342367230 0.2245625626E-02 1.359378237 0.2250146427E-02 1.376389243 0.2253147018E-02 1.393400249 0.2254392909E-02 1.410411256 0.2255400760E-02 1.427422262 0.2256179287E-02 1.444433268 0.2256733137E-02 1.461444275 0.2257064699E-02 1.478455281 0.2257175107E-02 1.478455281 0.2257175107E-02 1.495028740 0.2256950454E-02 1.511602199 0.2256266429E-02 1.528175658 0.2255093300E-02 1.544749117 0.2253383013E-02 1.561322577 0.2251071371E-02 1.577896036 0.2248080895E-02 1.594469495 0.2244324241E-02 1.611042954 0.2239707985E-02 1.627616413 0.2234136603E-02 1.644189872 0.2227516447E-02 1.660763331 0.2219759572E-02 1.677336790 0.2210787241E-02 1.693910249 0.2200532992E-02 1.710483708 0.2188945165E-02 1.727057168 0.2175988819E-02 1.743630627 0.2161647003E-02 1.760204086 0.2145921368E-02 1.776777545 0.2128832164E-02 1.793351004 0.2110417715E-02 1.809924463 0.2090733517E-02 1.826497922 0.2069851239E-02 1.843071381 0.2047858061E-02 1.859644840 0.2024857111E-02 1.876218300 0.2000970309E-02 1.892791759 0.1976346098E-02 1.909365218 0.1951177002E-02 1.925938677 0.1925737549E-02 1.942512136 0.1900466442E-02 1.959085595 0.1876148467E-02 1.975659054 0.1854312450E-02 1.992232513 0.1837937226E-02 2.008805972 0.1831572290E-02 2.008805972 0.1831572290E-02 2.025914059 0.1831816584E-02 2.043022146 0.1832504211E-02 2.060130233 0.1833521146E-02 2.077238320 0.1834733131E-02 2.094346406 0.1836029874E-02 2.111454493 0.1837347633E-02 2.128562580 0.1838671491E-02 2.145670667 0.1840026024E-02 2.162778754 0.1841461880E-02 2.179886840 0.1843042376E-02 2.196994927 0.1844831762E-02 2.214103014 0.1846885561E-02 2.231211101 0.1849242870E-02 2.248319188 0.1851920423E-02 2.265427275 0.1854908147E-02 2.282535361 0.1858166035E-02 2.299643448 0.1861622127E-02 2.316751535 0.1865171449E-02 2.333859622 0.1868675799E-02 2.350967709 0.1871964353E-02 2.368075795 0.1874835219E-02 2.385183882 0.1877058273E-02 2.402291969 0.1878379865E-02 2.419400056 0.1878530105E-02 2.436508143 0.1877233304E-02 2.453616230 0.1874221422E-02 2.470724316 0.1869249137E-02 2.487832403 0.1862107822E-02 2.504940490 0.1852635342E-02 2.522048577 0.1840719760E-02 2.539156664 0.1826297406E-02 2.539156664 0.1826297406E-02 2.556167670 0.1824700190E-02 2.573178676 0.1819942445E-02 2.590189683 0.1812126951E-02 2.607200689 0.1801427704E-02 2.624211695 0.1788091547E-02 2.641222702 0.1772437260E-02 2.658233708 0.1754851482E-02 2.675244714 0.1735782115E-02 2.692255721 0.1715730570E-02 2.709266727 0.1695244203E-02 2.726277734 0.1674909569E-02 2.743288740 0.1655346052E-02 2.760299746 0.1637197914E-02 2.777310753 0.1621121106E-02 2.794321759 0.1607759827E-02 2.811332765 0.1597708300E-02 2.828343772 0.1591457524E-02 2.845354778 0.1589335372E-02 2.845354778 0.1589335372E-02 2.862675959 0.1605993551E-02 2.879997140 0.1622391810E-02 2.897318321 0.1638346347E-02 2.914639502 0.1653752160E-02 2.931960683 0.1668561513E-02 2.949281864 0.1682764632E-02 2.966603045 0.1696373444E-02 2.983924226 0.1709408728E-02 3.001245407 0.1721890685E-02 3.018566588 0.1733832680E-02 3.035887770 0.1745237732E-02 3.053208951 0.1756097199E-02 3.070530132 0.1766391098E-02 3.087851313 0.1776089544E-02 3.105172494 0.1785154841E-02 3.122493675 0.1793543876E-02 3.139814856 0.1801210546E-02 3.157136037 0.1808108045E-02 3.174457218 0.1814190898E-02 3.191778399 0.1819416680E-02 3.209099580 0.1823747436E-02 3.226420761 0.1827150787E-02 3.243741942 0.1829600770E-02 3.261063123 0.1831078444E-02 3.278384304 0.1831572290E-02 0.000000000 0.2257175107E-02 0.1665498177E-01 0.2256948253E-02 0.3330996355E-01 0.2256271322E-02 0.4996494532E-01 0.2255155157E-02 0.6661992710E-01 0.2253617675E-02 0.8327490887E-01 0.2251683615E-02 0.9992989065E-01 0.2249384172E-02 0.1165848724 0.2246756490E-02 0.1332398542 0.2243842996E-02 0.1498948360 0.2240564073E-02 0.1665498177 0.2236650593E-02 0.1832047995 0.2232331208E-02 0.1998597813 0.2227615393E-02 0.2165147631 0.2222516535E-02 0.2331697448 0.2217052383E-02 0.2498247266 0.2211245403E-02 0.2664797084 0.2205123019E-02 0.2831346902 0.2198717720E-02 0.2997896719 0.2192067020E-02 0.3164446537 0.2185213266E-02 0.3330996355 0.2178203277E-02 0.3497546173 0.2171087828E-02 0.3664095990 0.2163920970E-02 0.3830645808 0.2156759212E-02 0.3997195626 0.2149660555E-02 0.4163745444 0.2142683437E-02 0.4330295261 0.2135885577E-02 0.4496845079 0.2129322777E-02 0.4663394897 0.2123047709E-02 0.4829944715 0.2117108718E-02 0.4996494532 0.2111548698E-02 0.5163044350 0.2106404067E-02 0.5329594168 0.2101703886E-02 0.5496143986 0.2097469157E-02 0.5662693803 0.2093712332E-02 0.5829243621 0.2090437050E-02 0.5995793439 0.2087638122E-02 0.6162343257 0.2085301768E-02 0.6328893074 0.2083406106E-02 0.6495442892 0.2081921875E-02 0.6661992710 0.2080813367E-02 0.6828542528 0.2080039558E-02 0.6995092345 0.2079555373E-02 0.7161642163 0.2079313069E-02 0.7328191981 0.2079263688E-02 0.7494741799 0.2079358518E-02 0.7661291616 0.2079550552E-02 0.7827841434 0.2079795867E-02 0.7994391252 0.2080054910E-02 0.8160941069 0.2080293647E-02 0.8327490887 0.2080484540E-02 0.8494040705 0.2080607340E-02 0.8660590523 0.2080649663E-02 0.8660590523 0.2080649663E-02 0.8830700586 0.2080619376E-02 0.9000810650 0.2080547675E-02 0.9170920713 0.2080489863E-02 0.9341030777 0.2080531223E-02 0.9511140840 0.2080777780E-02 0.9681250904 0.2081345544E-02 0.9851360968 0.2082350089E-02 1.002147103 0.2083898374E-02 1.019158109 0.2086084129E-02 1.036169116 0.2088987160E-02 1.053180122 0.2092675696E-02 1.070191129 0.2097209855E-02 1.087202135 0.2102643890E-02 1.104213141 0.2109025115E-02 1.121224148 0.2116388387E-02 1.138235154 0.2124746280E-02 1.155246160 0.2134076404E-02 1.172257167 0.2144308317E-02 1.189268173 0.2155313040E-02 1.206279179 0.2166898055E-02 1.223290186 0.2178810047E-02 1.240301192 0.2190746403E-02 1.257312198 0.2202375003E-02 1.274323205 0.2213360312E-02 1.291334211 0.2223392610E-02 1.308345217 0.2232216526E-02 1.325356224 0.2239655031E-02 1.342367230 0.2245625626E-02 1.359378237 0.2250146427E-02 1.376389243 0.2253331082E-02 1.393400249 0.2255372804E-02 1.410411256 0.2256519105E-02 1.427422262 0.2257040002E-02 1.444433268 0.2257193393E-02 1.461444275 0.2257191852E-02 1.478455281 0.2257175107E-02 1.478455281 0.2257175107E-02 1.495028740 0.2257012556E-02 1.511602199 0.2256528232E-02 1.528175658 0.2255732020E-02 1.544749117 0.2254640055E-02 1.561322577 0.2253274239E-02 1.577896036 0.2251661570E-02 1.594469495 0.2249833342E-02 1.611042954 0.2247824222E-02 1.627616413 0.2245671250E-02 1.644189872 0.2243412793E-02 1.660763331 0.2241087498E-02 1.677336790 0.2238733276E-02 1.693910249 0.2236386342E-02 1.710483708 0.2234080370E-02 1.727057168 0.2231845753E-02 1.743630627 0.2229709011E-02 1.760204086 0.2227692364E-02 1.776777545 0.2225813460E-02 1.793351004 0.2224085275E-02 1.809924463 0.2222516182E-02 1.826497922 0.2221110177E-02 1.843071381 0.2219867255E-02 1.859644840 0.2218783909E-02 1.876218300 0.2217853743E-02 1.892791759 0.2217068173E-02 1.909365218 0.2216417171E-02 1.925938677 0.2215890039E-02 1.942512136 0.2215476175E-02 1.959085595 0.2215165785E-02 1.975659054 0.2214950524E-02 1.992232513 0.2214824028E-02 2.008805972 0.2214782315E-02 2.008805972 0.2214782315E-02 2.025914059 0.2214174232E-02 2.043022146 0.2212363826E-02 2.060130233 0.2209392220E-02 2.077238320 0.2205326599E-02 2.094346406 0.2200258219E-02 2.111454493 0.2194299686E-02 2.128562580 0.2187581582E-02 2.145670667 0.2180248535E-02 2.162778754 0.2172454853E-02 2.179886840 0.2164359850E-02 2.196994927 0.2156123055E-02 2.214103014 0.2147899446E-02 2.231211101 0.2139834914E-02 2.248319188 0.2132062119E-02 2.265427275 0.2124696920E-02 2.282535361 0.2117835511E-02 2.299643448 0.2111552386E-02 2.316751535 0.2105899211E-02 2.333859622 0.2100904641E-02 2.350967709 0.2096575096E-02 2.368075795 0.2092896434E-02 2.385183882 0.2089836461E-02 2.402291969 0.2087348142E-02 2.419400056 0.2085373372E-02 2.436508143 0.2083847120E-02 2.453616230 0.2082701740E-02 2.470724316 0.2081871256E-02 2.487832403 0.2081295397E-02 2.504940490 0.2080923200E-02 2.522048577 0.2080715997E-02 2.539156664 0.2080649663E-02 2.539156664 0.2080649663E-02 2.556167670 0.2080676096E-02 2.573178676 0.2080759006E-02 2.590189683 0.2080907443E-02 2.607200689 0.2081131501E-02 2.624211695 0.2081437507E-02 2.641222702 0.2081824895E-02 2.658233708 0.2082285668E-02 2.675244714 0.2082806014E-02 2.692255721 0.2083368832E-02 2.709266727 0.2083955888E-02 2.726277734 0.2084548860E-02 2.743288740 0.2085129176E-02 2.760299746 0.2085677193E-02 2.777310753 0.2086171543E-02 2.794321759 0.2086589442E-02 2.811332765 0.2086908334E-02 2.828343772 0.2087108669E-02 2.845354778 0.2087177040E-02 2.845354778 0.2087177040E-02 2.862675959 0.2086018312E-02 2.879997140 0.2086049359E-02 2.897318321 0.2087275567E-02 2.914639502 0.2089672190E-02 2.931960683 0.2093186904E-02 2.949281864 0.2097743387E-02 2.966603045 0.2103245398E-02 2.983924226 0.2109580870E-02 3.001245407 0.2116625703E-02 3.018566588 0.2124247073E-02 3.035887770 0.2132306195E-02 3.053208951 0.2140660580E-02 3.070530132 0.2149165881E-02 3.087851313 0.2157677457E-02 3.105172494 0.2166051801E-02 3.122493675 0.2174147952E-02 3.139814856 0.2181829029E-02 3.157136037 0.2188963944E-02 3.174457218 0.2195429342E-02 3.191778399 0.2201111745E-02 3.209099580 0.2205909830E-02 3.226420761 0.2209736730E-02 3.243741942 0.2212522221E-02 3.261063123 0.2214214628E-02 3.278384304 0.2214782315E-02 0.000000000 0.2257175107E-02 0.1665498177E-01 0.2256971904E-02 0.3330996355E-01 0.2256361868E-02 0.4996494532E-01 0.2255343788E-02 0.6661992710E-01 0.2253915832E-02 0.8327490887E-01 0.2252075838E-02 0.9992989065E-01 0.2249821691E-02 0.1165848724 0.2247151786E-02 0.1332398542 0.2244065561E-02 0.1498948360 0.2240690563E-02 0.1665498177 0.2237349480E-02 0.1832047995 0.2233872223E-02 0.1998597813 0.2230312049E-02 0.2165147631 0.2226721409E-02 0.2331697448 0.2223150257E-02 0.2498247266 0.2219644281E-02 0.2664797084 0.2216243175E-02 0.2831346902 0.2212979019E-02 0.2997896719 0.2209874896E-02 0.3164446537 0.2206943841E-02 0.3330996355 0.2204188223E-02 0.3497546173 0.2201599620E-02 0.3664095990 0.2199159229E-02 0.3830645808 0.2196838785E-02 0.3997195626 0.2194601954E-02 0.4163745444 0.2192406088E-02 0.4330295261 0.2190204226E-02 0.4496845079 0.2187947212E-02 0.4663394897 0.2185585783E-02 0.4829944715 0.2183072510E-02 0.4996494532 0.2180363505E-02 0.5163044350 0.2177419821E-02 0.5329594168 0.2174208531E-02 0.5496143986 0.2170703478E-02 0.5662693803 0.2166885758E-02 0.5829243621 0.2162743974E-02 0.5995793439 0.2158274363E-02 0.6162343257 0.2153480892E-02 0.6328893074 0.2148375440E-02 0.6495442892 0.2142978185E-02 0.6661992710 0.2137318352E-02 0.6828542528 0.2131435443E-02 0.6995092345 0.2125381097E-02 0.7161642163 0.2119221677E-02 0.7328191981 0.2113041603E-02 0.7494741799 0.2106947233E-02 0.7661291616 0.2101070736E-02 0.7827841434 0.2095572729E-02 0.7994391252 0.2090641526E-02 0.8160941069 0.2086485959E-02 0.8327490887 0.2083318659E-02 0.8494040705 0.2081328930E-02 0.8660590523 0.2080649663E-02 0.8660590523 0.2080649663E-02 0.8830700586 0.2080619376E-02 0.9000810650 0.2080547675E-02 0.9170920713 0.2080489863E-02 0.9341030777 0.2080531223E-02 0.9511140840 0.2080777780E-02 0.9681250904 0.2081345544E-02 0.9851360968 0.2082350089E-02 1.002147103 0.2083898374E-02 1.019158109 0.2086084129E-02 1.036169116 0.2088987160E-02 1.053180122 0.2092675696E-02 1.070191129 0.2097209855E-02 1.087202135 0.2117211869E-02 1.104213141 0.2136205022E-02 1.121224148 0.2153715968E-02 1.138235154 0.2169568338E-02 1.155246160 0.2183663490E-02 1.172257167 0.2195981652E-02 1.189268173 0.2206575400E-02 1.206279179 0.2215557231E-02 1.223290186 0.2223083378E-02 1.240301192 0.2229336092E-02 1.257312198 0.2234506494E-02 1.274323205 0.2238779696E-02 1.291334211 0.2242323417E-02 1.308345217 0.2245280652E-02 1.325356224 0.2247766399E-02 1.342367230 0.2249867894E-02 1.359378237 0.2251647477E-02 1.376389243 0.2253331082E-02 1.393400249 0.2255372804E-02 1.410411256 0.2256519105E-02 1.427422262 0.2257040002E-02 1.444433268 0.2257193393E-02 1.461444275 0.2257191852E-02 1.478455281 0.2257175107E-02 1.478455281 0.2257175107E-02 1.495028740 0.2257012556E-02 1.511602199 0.2256528232E-02 1.528175658 0.2255732020E-02 1.544749117 0.2254640055E-02 1.561322577 0.2253274239E-02 1.577896036 0.2251661570E-02 1.594469495 0.2249833342E-02 1.611042954 0.2247824222E-02 1.627616413 0.2245671250E-02 1.644189872 0.2243412793E-02 1.660763331 0.2241087498E-02 1.677336790 0.2238733276E-02 1.693910249 0.2236386342E-02 1.710483708 0.2234080370E-02 1.727057168 0.2231845753E-02 1.743630627 0.2229709011E-02 1.760204086 0.2227692364E-02 1.776777545 0.2225813460E-02 1.793351004 0.2224085275E-02 1.809924463 0.2222516182E-02 1.826497922 0.2221110177E-02 1.843071381 0.2219867255E-02 1.859644840 0.2218783909E-02 1.876218300 0.2217853743E-02 1.892791759 0.2217068173E-02 1.909365218 0.2216417171E-02 1.925938677 0.2215890039E-02 1.942512136 0.2215476175E-02 1.959085595 0.2215165785E-02 1.975659054 0.2214950524E-02 1.992232513 0.2214824028E-02 2.008805972 0.2214782315E-02 2.008805972 0.2214782315E-02 2.025914059 0.2214366363E-02 2.043022146 0.2213130286E-02 2.060130233 0.2211108312E-02 2.077238320 0.2208353985E-02 2.094346406 0.2204935522E-02 2.111454493 0.2200930375E-02 2.128562580 0.2196419772E-02 2.145670667 0.2191483918E-02 2.162778754 0.2186198289E-02 2.179886840 0.2180631237E-02 2.196994927 0.2174842866E-02 2.214103014 0.2168884999E-02 2.231211101 0.2162801967E-02 2.248319188 0.2156631974E-02 2.265427275 0.2150408818E-02 2.282535361 0.2144163838E-02 2.299643448 0.2137928001E-02 2.316751535 0.2131734109E-02 2.333859622 0.2125619074E-02 2.350967709 0.2119626192E-02 2.368075795 0.2113807190E-02 2.385183882 0.2108223666E-02 2.402291969 0.2102947315E-02 2.419400056 0.2098058212E-02 2.436508143 0.2093640593E-02 2.453616230 0.2089776233E-02 2.470724316 0.2086536690E-02 2.487832403 0.2083976799E-02 2.504940490 0.2082132004E-02 2.522048577 0.2081020628E-02 2.539156664 0.2080649663E-02 2.539156664 0.2080649663E-02 2.556167670 0.2080676096E-02 2.573178676 0.2080759006E-02 2.590189683 0.2080907443E-02 2.607200689 0.2081131501E-02 2.624211695 0.2081437507E-02 2.641222702 0.2081824895E-02 2.658233708 0.2082285668E-02 2.675244714 0.2082806014E-02 2.692255721 0.2083368832E-02 2.709266727 0.2083955888E-02 2.726277734 0.2084548860E-02 2.743288740 0.2085129176E-02 2.760299746 0.2085677193E-02 2.777310753 0.2086171543E-02 2.794321759 0.2086589442E-02 2.811332765 0.2086908334E-02 2.828343772 0.2087108669E-02 2.845354778 0.2087177040E-02 2.845354778 0.2087177040E-02 2.862675959 0.2089489075E-02 2.879997140 0.2092887871E-02 2.897318321 0.2097279912E-02 2.914639502 0.2102549654E-02 2.931960683 0.2108565748E-02 2.949281864 0.2115187772E-02 2.966603045 0.2122272679E-02 2.983924226 0.2129680327E-02 3.001245407 0.2137277690E-02 3.018566588 0.2144941636E-02 3.035887770 0.2152560365E-02 3.053208951 0.2160033757E-02 3.070530132 0.2167272930E-02 3.087851313 0.2174199332E-02 3.105172494 0.2180743615E-02 3.122493675 0.2186844509E-02 3.139814856 0.2192447824E-02 3.157136037 0.2197505672E-02 3.174457218 0.2201975925E-02 3.191778399 0.2205821907E-02 3.209099580 0.2209012284E-02 3.226420761 0.2211521103E-02 3.243741942 0.2213327920E-02 3.261063123 0.2214417969E-02 3.278384304 0.2214782315E-02 elk-2.3.22/examples/Si-phonon-DFPT/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330020733 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-phonon-DFPT/elk.in0000644002504400250440000000251412337331330021501 0ustar00dewhurstdewhurst00000000000000 ! Phonon dispersion of silicon. ! You can submit the same job (with task=205) on as many machines as you like, ! but they must be be able to see the same directory. Each machine with compute ! a row of a particular dynamical matrix. When run with task=220, the code ! assembles all the pieces to construct the dynamical matrices throughout the ! Brillouin zone. ! The final output (PHDISP.OUT and PHDLINES.OUT) is included with this example. tasks 0 205 220 ! scale the number of radial mesh points in the muffin-tins; this is so that ! gradients are accurately calculated nrmtscf 4 ! limit the maximum number of self-consistent loops maxscl 30 ! phonon q-point grid ngridq 4 4 4 ! k-point grid should be commensurate with the q-point grid ngridk 4 4 4 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ! These are the vertices to be joined for the phonon dispersion plot plot1d 7 200 : nvp1d, npp1d 1.0 0.0 0.0 0.5 0.5 0.0 0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.5 0.25 -0.25 0.5 0.0 0.0 elk-2.3.22/examples/Si-phonon-DFPT/PaxHeaders.22528/PHDLINES.OUT0000644002504400250440000000005012337331330021427 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Si-phonon-DFPT/PHDLINES.OUT0000644002504400250440000000106012337331330022170 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.1692895189E-02 0.000000000 0.3385790130E-02 0.8660590523 -0.1692895189E-02 0.8660590523 0.3385790130E-02 1.478455281 -0.1692895189E-02 1.478455281 0.3385790130E-02 2.008805972 -0.1692895189E-02 2.008805972 0.3385790130E-02 2.539156664 -0.1692895189E-02 2.539156664 0.3385790130E-02 2.845354778 -0.1692895189E-02 2.845354778 0.3385790130E-02 3.278384304 -0.1692895189E-02 3.278384304 0.3385790130E-02 elk-2.3.22/examples/PaxHeaders.22528/Cu0000644002504400250440000000005012337331330015515 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Cu/0000755002504400250440000000000012337331330016336 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Cu/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331330016675 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Cu/elk.in0000644002504400250440000000144312337331330017443 0ustar00dewhurstdewhurst00000000000000 ! Try and find the equilibrium volume of fcc copper by adjusting the scale ! parameter. The individual lattice vectors can also be scaled separately using ! scale1, scale2 or scale3. Remember that a previously converged charge density ! can be used to begin a new calculation, even at a different volume. This is ! done by setting task=1. tasks 0 avec 0.5 0.5 0.0 0.5 0.0 0.5 0.0 0.5 0.5 scale1 6.83117 scale2 6.83117 scale3 6.83117 scale 0.96 ! large cut-off is required for Cu rgkmax 8.5 lmaxapw 10 gmaxvr 14.0 sppath '../../species/' atoms 1 : nspecies 'Cu.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 8 8 8 elk-2.3.22/examples/PaxHeaders.22528/Al-Fermi-surface0000644002504400250440000000005012337331331020171 xustar000000000000000020 atime=1400746712 20 ctime=1400746713 elk-2.3.22/examples/Al-Fermi-surface/0000755002504400250440000000000012337331331021012 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Al-Fermi-surface/PaxHeaders.22528/fermi.general0000644002504400250440000000005012337331330022706 xustar000000000000000020 atime=1400746712 20 ctime=1400746712 elk-2.3.22/examples/Al-Fermi-surface/fermi.general0000644002504400250440000000030212337331330023445 0ustar00dewhurstdewhurst00000000000000file = ./FERMISURF.OUT grid = 40 x 40 x 40 format = ascii interleaving = field majority = column header = lines 1 field = locations, field0 structure = 3-vector, scalar type = float, float end elk-2.3.22/examples/Al-Fermi-surface/PaxHeaders.22528/fermi.net0000644002504400250440000000005012337331331022060 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al-Fermi-surface/fermi.net0000644002504400250440000002203612337331331022627 0ustar00dewhurstdewhurst00000000000000// // time: Fri Jul 15 15:49:55 2011 // // version: 3.2.0 (format), 4.4.4 (DX) // // // MODULE main // workspace: width = 620, height = 667 // layout: snap = 0, width = 50, height = 50, align = NN // macro main( ) -> ( ) { // // node Camera[1]: x = 404, y = 490, inputs = 9, label = Camera // input[2]: defaulting = 0, visible = 1, type = 8, value = [1 1 1] // input[3]: defaulting = 0, visible = 1, type = 5, value = 6.0 // input[4]: defaulting = 0, visible = 1, type = 1, value = 800 // input[5]: defaulting = 0, visible = 1, type = 5, value = 0.65 // input[9]: defaulting = 0, visible = 1, type = 32, value = "white" // main_Camera_1_out_1 = Camera( main_Camera_1_in_1, main_Camera_1_in_2, main_Camera_1_in_3, main_Camera_1_in_4, main_Camera_1_in_5, main_Camera_1_in_6, main_Camera_1_in_7, main_Camera_1_in_8, main_Camera_1_in_9 ) [instance: 1, cache: 1]; // // node Caption[1]: x = 46, y = 444, inputs = 9, label = Caption // input[1]: defaulting = 0, visible = 1, type = 32, value = "Aluminium Fermi surface" // input[6]: defaulting = 0, visible = 0, type = 1, value = 25 // main_Caption_1_out_1 = Caption( main_Caption_1_in_1, main_Caption_1_in_2, main_Caption_1_in_3, main_Caption_1_in_4, main_Caption_1_in_5, main_Caption_1_in_6, main_Caption_1_in_7, main_Caption_1_in_8, main_Caption_1_in_9 ) [instance: 1, cache: 1]; // // node Color[6]: x = 141, y = 504, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "black" // main_Color_6_out_1 = Color( main_Caption_1_out_1, main_Color_6_in_2, main_Color_6_in_3, main_Color_6_in_4, main_Color_6_in_5 ) [instance: 6, cache: 1]; // // node Import[1]: x = 258, y = 10, inputs = 6, label = Import // input[1]: defaulting = 0, visible = 1, type = 32, value = "fermi.general" // main_Import_1_out_1 = Import( main_Import_1_in_1, main_Import_1_in_2, main_Import_1_in_3, main_Import_1_in_4, main_Import_1_in_5, main_Import_1_in_6 ) [instance: 1, cache: 1]; // // node Isosurface[3]: x = 57, y = 106, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.0 // main_Isosurface_3_out_1 = Isosurface( main_Import_1_out_1, main_Isosurface_3_in_2, main_Isosurface_3_in_3, main_Isosurface_3_in_4, main_Isosurface_3_in_5, main_Isosurface_3_in_6 ) [instance: 3, cache: 1]; // // node Color[3]: x = 171, y = 194, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "yellow" // input[4]: defaulting = 0, visible = 0, type = 32, value = "front colors" // main_Color_3_out_1 = Color( main_Isosurface_3_out_1, main_Color_3_in_2, main_Color_3_in_3, main_Color_3_in_4, main_Color_3_in_5 ) [instance: 3, cache: 1]; // // node Color[4]: x = 50, y = 286, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "blue" // input[4]: defaulting = 0, visible = 0, type = 32, value = "back colors" // main_Color_4_out_1 = Color( main_Color_3_out_1, main_Color_4_in_2, main_Color_4_in_3, main_Color_4_in_4, main_Color_4_in_5 ) [instance: 4, cache: 1]; // // node Translate[2]: x = 166, y = 364, inputs = 2, label = Translate // input[2]: defaulting = 0, visible = 1, type = 8, value = [0 1.2 2.0] // main_Translate_2_out_1 = Translate( main_Color_4_out_1, main_Translate_2_in_2 ) [instance: 2, cache: 1]; // // node Refine[2]: x = 473, y = 83, inputs = 2, label = Refine // input[2]: defaulting = 0, visible = 1, type = 1, value = 1 // main_Refine_2_out_1 = Refine( main_Import_1_out_1, main_Refine_2_in_2 ) [instance: 2, cache: 1]; // // node MapToPlane[1]: x = 317, y = 129, inputs = 3, label = MapToPlane // input[2]: defaulting = 1, visible = 1, type = 8, value = [1,1,1] // input[3]: defaulting = 0, visible = 1, type = 8, value = [1,1,1] // main_MapToPlane_1_out_1 = MapToPlane( main_Refine_2_out_1, main_MapToPlane_1_in_2, main_MapToPlane_1_in_3 ) [instance: 1, cache: 1]; // // node Isosurface[2]: x = 508, y = 170, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.0 // input[3]: defaulting = 1, visible = 1, type = 1, value = 10 // main_Isosurface_2_out_1 = Isosurface( main_MapToPlane_1_out_1, main_Isosurface_2_in_2, main_Isosurface_2_in_3, main_Isosurface_2_in_4, main_Isosurface_2_in_5, main_Isosurface_2_in_6 ) [instance: 2, cache: 1]; // // node Color[5]: x = 324, y = 241, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "black" // main_Color_5_out_1 = Color( main_Isosurface_2_out_1, main_Color_5_in_2, main_Color_5_in_3, main_Color_5_in_4, main_Color_5_in_5 ) [instance: 5, cache: 1]; // // node Ribbon[1]: x = 500, y = 264, inputs = 2, label = Ribbon // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.01 // main_Ribbon_1_out_1 = Ribbon( main_Color_5_out_1, main_Ribbon_1_in_2 ) [instance: 1, cache: 1]; // // node Shade[1]: x = 492, y = 358, inputs = 8, label = Shade // input[2]: defaulting = 0, visible = 1, type = 3, value = 0 // main_Shade_1_out_1 = Shade( main_Ribbon_1_out_1, main_Shade_1_in_2, main_Shade_1_in_3, main_Shade_1_in_4, main_Shade_1_in_5, main_Shade_1_in_6, main_Shade_1_in_7, main_Shade_1_in_8 ) [instance: 1, cache: 1]; // // node Translate[1]: x = 360, y = 360, inputs = 2, label = Translate // input[2]: defaulting = 0, visible = 1, type = 8, value = [2.0 1.2 0] // main_Translate_1_out_1 = Translate( main_Shade_1_out_1, main_Translate_1_in_2 ) [instance: 1, cache: 1]; // // node Collect[1]: x = 265, y = 458, inputs = 3, label = Collect // main_Collect_1_out_1 = Collect( main_Color_6_out_1, main_Translate_2_out_1, main_Translate_1_out_1 ) [instance: 1, cache: 1]; // // node Display[3]: x = 287, y = 605, inputs = 8, label = Display // depth: value = 24 // main_Display_3_out_1[cache: 2] = Display( main_Collect_1_out_1, main_Camera_1_out_1, main_Display_3_in_3, main_Display_3_in_4, main_Display_3_in_5, main_Display_3_in_6, main_Display_3_in_7, main_Display_3_in_8 ) [instance: 3, cache: 1]; // network: end of macro body } main_Camera_1_in_1 = NULL; main_Camera_1_in_2 = [1 1 1]; main_Camera_1_in_3 = 6.0; main_Camera_1_in_4 = 800; main_Camera_1_in_5 = 0.65; main_Camera_1_in_6 = NULL; main_Camera_1_in_7 = NULL; main_Camera_1_in_8 = NULL; main_Camera_1_in_9 = "white"; main_Camera_1_out_1 = NULL; main_Caption_1_in_1 = "Aluminium Fermi surface"; main_Caption_1_in_2 = NULL; main_Caption_1_in_3 = NULL; main_Caption_1_in_4 = NULL; main_Caption_1_in_5 = NULL; main_Caption_1_in_6 = 25; main_Caption_1_in_7 = NULL; main_Caption_1_in_8 = NULL; main_Caption_1_in_9 = NULL; main_Caption_1_out_1 = NULL; main_Color_6_in_2 = "black"; main_Color_6_in_3 = NULL; main_Color_6_in_4 = NULL; main_Color_6_in_5 = NULL; main_Color_6_out_1 = NULL; main_Import_1_in_1 = "fermi.general"; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; main_Import_1_in_4 = NULL; main_Import_1_in_5 = NULL; main_Import_1_in_6 = NULL; main_Import_1_out_1 = NULL; main_Isosurface_3_in_2 = 0.0; main_Isosurface_3_in_3 = NULL; main_Isosurface_3_in_4 = NULL; main_Isosurface_3_in_5 = NULL; main_Isosurface_3_in_6 = NULL; main_Isosurface_3_out_1 = NULL; main_Color_3_in_2 = "yellow"; main_Color_3_in_3 = NULL; main_Color_3_in_4 = "front colors"; main_Color_3_in_5 = NULL; main_Color_3_out_1 = NULL; main_Color_4_in_2 = "blue"; main_Color_4_in_3 = NULL; main_Color_4_in_4 = "back colors"; main_Color_4_in_5 = NULL; main_Color_4_out_1 = NULL; main_Translate_2_in_2 = [0 1.2 2.0]; main_Translate_2_out_1 = NULL; main_Refine_2_in_2 = 1; main_Refine_2_out_1 = NULL; main_MapToPlane_1_in_2 = NULL; main_MapToPlane_1_in_3 = [1,1,1]; main_MapToPlane_1_out_1 = NULL; main_Isosurface_2_in_2 = 0.0; main_Isosurface_2_in_3 = NULL; main_Isosurface_2_in_4 = NULL; main_Isosurface_2_in_5 = NULL; main_Isosurface_2_in_6 = NULL; main_Isosurface_2_out_1 = NULL; main_Color_5_in_2 = "black"; main_Color_5_in_3 = NULL; main_Color_5_in_4 = NULL; main_Color_5_in_5 = NULL; main_Color_5_out_1 = NULL; main_Ribbon_1_in_2 = 0.01; main_Ribbon_1_out_1 = NULL; main_Shade_1_in_2 = 0; main_Shade_1_in_3 = NULL; main_Shade_1_in_4 = NULL; main_Shade_1_in_5 = NULL; main_Shade_1_in_6 = NULL; main_Shade_1_in_7 = NULL; main_Shade_1_in_8 = NULL; main_Shade_1_out_1 = NULL; main_Translate_1_in_2 = [2.0 1.2 0]; main_Translate_1_out_1 = NULL; main_Collect_1_out_1 = NULL; main_Display_3_in_3 = "X24,,"; main_Display_3_in_4 = NULL; main_Display_3_in_5 = NULL; main_Display_3_in_6 = NULL; main_Display_3_in_7 = NULL; main_Display_3_in_8 = NULL; Executive("product version 4 4 4"); $sync main(); elk-2.3.22/examples/Al-Fermi-surface/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021351 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al-Fermi-surface/elk.in0000644002504400250440000000116312337331331022116 0ustar00dewhurstdewhurst00000000000000 ! Fermi surface plot of aluminium tasks 0 100 ! small smearing width required for precise Fermi energy swidth 0.001 ! define box corners and grid size for 3D plot, first point is the origin plot3d 0.0 0.0 0.0 : vclp3d 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 40 40 40 : np3d avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.8267 sppath '../../species/' atoms 1 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 6 6 6 elk-2.3.22/examples/PaxHeaders.22528/HEG-OEP0000644002504400250440000000005012337331331016173 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/HEG-OEP/0000755002504400250440000000000012337331331017014 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/HEG-OEP/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017353 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/HEG-OEP/elk.in0000644002504400250440000000070212337331331020116 0ustar00dewhurstdewhurst00000000000000 ! Optimised effetive potential (OEP) ground state of the homogenous electron ! gas. The Wigner radius (r_s) is written to INFO.OUT. Note that the exchange ! energy is only computed during the last iteration. tasks 0 xctype -1 chgexs 10.0 ! use the unit cell of aluminium avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.75 ! note that low density gases require denser k-point grids! ngridk 2 2 2 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/BaTiO3-lattice-opt0000644002504400250440000000005012337331331020413 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/BaTiO3-lattice-opt/0000755002504400250440000000000012337331331021234 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/BaTiO3-lattice-opt/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/BaTiO3-lattice-opt/elk.in0000644002504400250440000000223612337331331022342 0ustar00dewhurstdewhurst00000000000000 ! Example taken from the Elk forum demonstrating the lattice optimisation of ! BaTiO3 using the PBEsol functional. With thanks to David Tompsett. ! See: http://sourceforge.net/p/elk/discussion/897820/thread/db2127bd/#24b6 tasks 2 latvopt 1 epspot 1.e-7 epsstress 1.e-3 mixtype 3 xctype 22 trimvg .true. lmaxmat 8 rgkmax 8.0 gmaxvr 18.0 ngridk 10 10 10 avec 7.576000000 0.000000000 0.000000000 0.000000000 7.576000000 0.000000000 0.000000000 0.000000000 7.576000000 sppath '../../species/' atoms 3 : nspecies 'Ba.in' : spfname 1 : natoms; atpos below 0.00000000 0.00000000 0.00000000 'Ti.in' : spfname 1 : natoms; atpos below 0.50000000 0.50000000 0.50000000 'O.in' : spfname 3 : natoms; atpos below 0.50000000 0.50000000 0.00000000 0.50000000 0.00000000 0.50000000 0.00000000 0.50000000 0.50000000 elk-2.3.22/examples/PaxHeaders.22528/Nb-phonon-DFPT0000644002504400250440000000005012337331331017540 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-phonon-DFPT/0000755002504400250440000000000012337331331020361 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Nb-phonon-DFPT/PaxHeaders.22528/PHDISP.OUT0000644002504400250440000000005012337331331021175 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-phonon-DFPT/PHDISP.OUT0000644002504400250440000012660212337331331021750 0ustar00dewhurstdewhurst00000000000000 0.000000000 0.1010643596E-02 0.1615885685E-01 0.1009375258E-02 0.3231771371E-01 0.1005583933E-02 0.4847657056E-01 0.9993106555E-03 0.6463542742E-01 0.9906237319E-03 0.8079428427E-01 0.9796186028E-03 0.9695314113E-01 0.9664176529E-03 0.1131119980 0.9511699544E-03 0.1292708548 0.9340509329E-03 0.1454297117 0.9152619315E-03 0.1615885685 0.8950296342E-03 0.1777474254 0.8736052889E-03 0.1939062823 0.8512636370E-03 0.2100651391 0.8283014216E-03 0.2262239960 0.8050352944E-03 0.2423828528 0.7817988912E-03 0.2585417097 0.7589387952E-03 0.2747005665 0.7368090775E-03 0.2908594234 0.7157641168E-03 0.3070182802 0.6961494944E-03 0.3231771371 0.6782909622E-03 0.3393359940 0.6624818155E-03 0.3554948508 0.6489694530E-03 0.3716537077 0.6379423871E-03 0.3878125645 0.6295193375E-03 0.4039714214 0.6237421290E-03 0.4201302782 0.6205737824E-03 0.4362891351 0.6199024504E-03 0.4524479919 0.6215508801E-03 0.4686068488 0.6252901623E-03 0.4847657056 0.6308559388E-03 0.5009245625 0.6379651047E-03 0.5170834194 0.6463313240E-03 0.5332422762 0.6556782076E-03 0.5494011331 0.6657495823E-03 0.5655599899 0.6763167625E-03 0.5817188468 0.6871830638E-03 0.5978777036 0.6981859635E-03 0.6140365605 0.7091973570E-03 0.6301954173 0.7201223308E-03 0.6463542742 0.7308968061E-03 0.6625131310 0.7414843377E-03 0.6786719879 0.7518722904E-03 0.6948308448 0.7620675682E-03 0.7109897016 0.7720920444E-03 0.7271485585 0.7819778265E-03 0.7433074153 0.7917624853E-03 0.7594662722 0.8014843821E-03 0.7756251290 0.8111782316E-03 0.7917839859 0.8208710376E-03 0.8079428427 0.8305785330E-03 0.8241016996 0.8403022412E-03 0.8402605564 0.8500272513E-03 0.8564194133 0.8597207666E-03 0.8725782702 0.8693314496E-03 0.8887371270 0.8640474593E-03 0.9048959839 0.8577288231E-03 0.9210548407 0.8503591685E-03 0.9372136976 0.8419285469E-03 0.9533725544 0.8324332729E-03 0.9695314113 0.8218757456E-03 0.9856902681 0.8102642564E-03 1.001849125 0.7976127841E-03 1.018007982 0.7839407799E-03 1.034166839 0.7692729429E-03 1.050325696 0.7536389879E-03 1.066484552 0.7370734064E-03 1.082643409 0.7196152204E-03 1.098802266 0.7013077323E-03 1.114961123 0.6821982678E-03 1.131119980 0.6623379160E-03 1.147278837 0.6417812645E-03 1.163437694 0.6205861310E-03 1.179596550 0.5988132919E-03 1.195755407 0.5765262082E-03 1.211914264 0.5537907486E-03 1.228073121 0.5306749109E-03 1.244231978 0.5072485424E-03 1.260390835 0.4835830578E-03 1.276549692 0.4597511583E-03 1.292708548 0.4358265490E-03 1.308867405 0.4118836577E-03 1.325026262 0.3879973536E-03 1.341185119 0.3642426685E-03 1.357343976 0.3406945182E-03 1.373502833 0.3174274280E-03 1.389661690 0.2945152591E-03 1.405820546 0.2720309393E-03 1.421979403 0.2500461965E-03 1.438138260 0.2286312953E-03 1.454297117 0.2078547773E-03 1.470455974 0.1877832033E-03 1.486614831 0.1684808971E-03 1.502773687 0.1500096878E-03 1.518932544 0.1324286464E-03 1.535091401 0.1157938101E-03 1.551250258 0.1001578799E-03 1.567409115 0.8556987144E-04 1.583567972 0.7207467810E-04 1.599726829 0.5971247595E-04 1.615885685 0.4851783747E-04 1.632044542 0.3851830032E-04 1.648203399 0.2973189717E-04 1.664362256 0.2216267566E-04 1.680521113 0.1579234777E-04 1.696679970 0.1056483297E-04 1.712838827 0.6359642558E-05 1.728997683 0.2954817193E-05 1.745156540 -0.2463522229E-10 1.761407614 0.1683085184E-04 1.777658689 0.3368403744E-04 1.793909763 0.5058028796E-04 1.810160837 0.6753726692E-04 1.826411911 0.8456836813E-04 1.842662985 0.1016818794E-03 1.858914059 0.1188805841E-03 1.875165134 0.1361618389E-03 1.891416208 0.1535181281E-03 1.907667282 0.1709380638E-03 1.923918356 0.1884077687E-03 1.940169430 0.2059125563E-03 1.956420504 0.2234388006E-03 1.972671579 0.2409758781E-03 1.988922653 0.2585180515E-03 2.005173727 0.2760661667E-03 2.021424801 0.2936290311E-03 2.037675875 0.3112243556E-03 2.053926949 0.3288791518E-03 2.070178024 0.3466295062E-03 2.086429098 0.3645196777E-03 2.102680172 0.3826005131E-03 2.118931246 0.4009272153E-03 2.135182320 0.4195565551E-03 2.151433394 0.4385436659E-03 2.167684469 0.4579386016E-03 2.183935543 0.4777828712E-03 2.200186617 0.4981061714E-03 2.216437691 0.5189235347E-03 2.232688765 0.5402330747E-03 2.248939839 0.5620144705E-03 2.265190914 0.5842282709E-03 2.281441988 0.6068160432E-03 2.297693062 0.6297013305E-03 2.313944136 0.6527913420E-03 2.330195210 0.6759792584E-03 2.346446284 0.6991470214E-03 2.362697359 0.7221684615E-03 2.378948433 0.7449126250E-03 2.395199507 0.7672471639E-03 2.411450581 0.7890416692E-03 2.427701655 0.8101708399E-03 2.443952729 0.8305173955E-03 2.460203804 0.8499746530E-03 2.476454878 0.8530827456E-03 2.492705952 0.8563244723E-03 2.508957026 0.8615734288E-03 2.525208100 0.8688442599E-03 2.541459174 0.8780363359E-03 2.557710249 0.8889405325E-03 2.573961323 0.9012533266E-03 2.590212397 0.9145962559E-03 2.606463471 0.9285383933E-03 2.622714545 0.9426195906E-03 2.638965619 0.9563726928E-03 2.655216694 0.9693435226E-03 2.671467768 0.9811080110E-03 2.687718842 0.9912862992E-03 2.703969916 0.9995539374E-03 2.720220990 0.1005650451E-02 2.736472064 0.1009385595E-02 2.752723139 0.1010643596E-02 2.768555520 0.1009410219E-02 2.784387902 0.1005720888E-02 2.800220284 0.9996080253E-03 2.816052665 0.9911257718E-03 2.831885047 0.9803501347E-03 2.847717429 0.9673792071E-03 2.863549810 0.9523334565E-03 2.879382192 0.9353560847E-03 2.895214573 0.9166134571E-03 2.911046955 0.8962955902E-03 2.926879337 0.8746166703E-03 2.942711718 0.8518155533E-03 2.958544100 0.8281561578E-03 2.974376482 0.8039276116E-03 2.990208863 0.7794439386E-03 3.006041245 0.7550429778E-03 3.021873627 0.7310841155E-03 3.037706008 0.7079442987E-03 3.053538390 0.6860117118E-03 3.069370772 0.6656765074E-03 3.085203153 0.6473181463E-03 3.101035535 0.6312893201E-03 3.116867917 0.6178971326E-03 3.132700298 0.6073831315E-03 3.148532680 0.5999046905E-03 3.164365062 0.5955207534E-03 3.180197443 0.5941847214E-03 3.196029825 0.5957461404E-03 3.211862206 0.5999611274E-03 3.227694588 0.6065097278E-03 3.243526970 0.6150172621E-03 3.259359351 0.6250764835E-03 3.275191733 0.6362679394E-03 3.291024115 0.6481769162E-03 3.306856496 0.6604063551E-03 3.322688878 0.6725858899E-03 3.338521260 0.6843775999E-03 3.354353641 0.6954792356E-03 3.370186023 0.7056256556E-03 3.386018405 0.7145890991E-03 3.401850786 0.7221787793E-03 3.417683168 0.7282401466E-03 3.433515550 0.7326540605E-03 3.449347931 0.7353360286E-03 3.465180313 0.7362356084E-03 3.480923541 0.7357812328E-03 3.496666769 0.7344406460E-03 3.512409997 0.7322808424E-03 3.528153225 0.7294113739E-03 3.543896453 0.7259811210E-03 3.559639681 0.7221736528E-03 3.575382910 0.7182010951E-03 3.591126138 0.7142964681E-03 3.606869366 0.7107045434E-03 3.622612594 0.7076714135E-03 3.638355822 0.7054331536E-03 3.654099050 0.7042041749E-03 3.669842278 0.7041660632E-03 3.685585506 0.7054578221E-03 3.701328734 0.7081684375E-03 3.717071962 0.7123325171E-03 3.732815191 0.7179294461E-03 3.748558419 0.7248860934E-03 3.764301647 0.7330826862E-03 3.780044875 0.7423611398E-03 3.795788103 0.7525349372E-03 3.811531331 0.7633996259E-03 3.827274559 0.7747431020E-03 3.843017787 0.7863550423E-03 3.858761015 0.7980350580E-03 3.874504243 0.8095993490E-03 3.890247471 0.8208857927E-03 3.905990700 0.8317575179E-03 3.921733928 0.8421050776E-03 3.937477156 0.8518473688E-03 3.953220384 0.8609314556E-03 3.968963612 0.8693314496E-03 3.984706840 0.8609314556E-03 4.000450068 0.8518473688E-03 4.016193296 0.8421050776E-03 4.031936524 0.8317575179E-03 4.047679752 0.8208857927E-03 4.063422981 0.8095993490E-03 4.079166209 0.7980350580E-03 4.094909437 0.7863550423E-03 4.110652665 0.7747431020E-03 4.126395893 0.7633996259E-03 4.142139121 0.7525349372E-03 4.157882349 0.7423611398E-03 4.173625577 0.7330826862E-03 4.189368805 0.7248860934E-03 4.205112033 0.7179294461E-03 4.220855262 0.7123325171E-03 4.236598490 0.7081684375E-03 4.252341718 0.7054578221E-03 4.268084946 0.7041660632E-03 4.283828174 0.7042041749E-03 4.299571402 0.7054331536E-03 4.315314630 0.7076714135E-03 4.331057858 0.7107045434E-03 4.346801086 0.7142964681E-03 4.362544314 0.7182010951E-03 4.378287543 0.7221736528E-03 4.394030771 0.7259811210E-03 4.409773999 0.7294113739E-03 4.425517227 0.7322808424E-03 4.441260455 0.7344406460E-03 4.457003683 0.7357812328E-03 4.472746911 0.7362356084E-03 4.488939120 0.7352917658E-03 4.505131328 0.7324730222E-03 4.521323537 0.7278175041E-03 4.537515745 0.7213879976E-03 4.553707954 0.7132708067E-03 4.569900162 0.7035741448E-03 4.586092371 0.6924260504E-03 4.602284579 0.6799718199E-03 4.618476788 0.6663709517E-03 4.634668996 0.6517936017E-03 4.650861205 0.6364165670E-03 4.667053413 0.6204188283E-03 4.683245622 0.6039767163E-03 4.699437830 0.5802294526E-03 4.715630039 0.5515910681E-03 4.731822247 0.5235605397E-03 4.748014456 0.4965113462E-03 4.764206664 0.4707827693E-03 4.780398873 0.4466635152E-03 4.796591081 0.4243741998E-03 4.812783290 0.4040504433E-03 4.828975498 0.3857291252E-03 4.845167707 0.3693407563E-03 4.861359915 0.3547105209E-03 4.877552124 0.3415691693E-03 4.893744332 0.3295729241E-03 4.909936541 0.3183296048E-03 4.926128749 0.3074270576E-03 4.942320958 0.2964600309E-03 4.958513166 0.2850526621E-03 4.974705375 0.2728751669E-03 4.990897583 0.2596546080E-03 5.007089792 0.2451804703E-03 5.023282000 0.2293061445E-03 5.039474209 0.2119474493E-03 5.055666417 0.1930791607E-03 5.071858626 0.1682547531E-03 5.088050834 0.1435287422E-03 5.104243043 0.1191114822E-03 5.120435251 0.9495945959E-04 5.136627460 0.7102482823E-04 5.152819668 0.4725627345E-04 5.169011877 0.2359987997E-04 5.185204085 -0.2463522229E-10 5.201441086 -0.8509294859E-05 5.217678086 -0.1650222457E-04 5.233915086 -0.2342322612E-04 5.250152087 -0.2861715038E-04 5.266389087 -0.3119908301E-04 5.282626087 -0.2966558169E-04 5.298863088 -0.1977981739E-04 5.315100088 0.2548407982E-04 5.331337088 0.4898712934E-04 5.347574088 0.7079199203E-04 5.363811089 0.8772049631E-04 5.380048089 0.1034994379E-03 5.396285089 0.1202789313E-03 5.412522090 0.1379749287E-03 5.428759090 0.1564999916E-03 5.444996090 0.1757639945E-03 5.461233091 0.1956748523E-03 5.477470091 0.2161392652E-03 5.493707091 0.2370634764E-03 5.509944092 0.2583540376E-03 5.526181092 0.2799185750E-03 5.542418092 0.3016665506E-03 5.558655093 0.3235100102E-03 5.574892093 0.3453643136E-03 5.591129093 0.3671488378E-03 5.607366093 0.3887876453E-03 5.623603094 0.4102101119E-03 5.639840094 0.4313515037E-03 5.656077094 0.4521534952E-03 5.672314095 0.4725646223E-03 5.688551095 0.4925406581E-03 5.704788095 0.5120449064E-03 5.721025096 0.5310484015E-03 5.737262096 0.5495300087E-03 5.753499096 0.5674764163E-03 5.769736097 0.5848820126E-03 5.785973097 0.6017486440E-03 5.802210097 0.6180852473E-03 5.818447098 0.6246724256E-03 5.834684098 0.6295260561E-03 5.850921098 0.6333802564E-03 5.867158099 0.6363306249E-03 5.883395099 0.6384837454E-03 5.899632099 0.6399554391E-03 5.915869099 0.6408685736E-03 5.932106100 0.6413504149E-03 5.948343100 0.6415295431E-03 5.964580100 0.6415323985E-03 5.980817101 0.6414795962E-03 5.997054101 0.6414822415E-03 6.013291101 0.6416385979E-03 6.029528102 0.6420315854E-03 6.045765102 0.6427276877E-03 6.062002102 0.6437778312E-03 6.078239103 0.6452205395E-03 6.094476103 0.6470870260E-03 6.110713103 0.6494068940E-03 6.126950104 0.6522121543E-03 6.143187104 0.6555371140E-03 6.159424104 0.6594129382E-03 6.175661104 0.6638579945E-03 6.191898105 0.6688670858E-03 6.208135105 0.6744030883E-03 6.224372105 0.6803932753E-03 6.240609106 0.6867307517E-03 6.256846106 0.6932799935E-03 6.273083106 0.6998848800E-03 6.289320107 0.7063776718E-03 6.305557107 0.7125877691E-03 6.321794107 0.7183495364E-03 6.338031108 0.7235088517E-03 6.354268108 0.7279283049E-03 6.370505108 0.7314911340E-03 6.386742109 0.7341040680E-03 6.402979109 0.7356992761E-03 6.419216109 0.7362356084E-03 0.000000000 0.1010643596E-02 0.1615885685E-01 0.1010191085E-02 0.3231771371E-01 0.1008837863E-02 0.4847657056E-01 0.1006596839E-02 0.6463542742E-01 0.1003489465E-02 0.8079428427E-01 0.9995456345E-03 0.9695314113E-01 0.9948035346E-03 0.1131119980 0.9893094547E-03 0.1292708548 0.9831175353E-03 0.1454297117 0.9762894562E-03 0.1615885685 0.9688940531E-03 0.1777474254 0.9610068536E-03 0.1939062823 0.9527095216E-03 0.2100651391 0.9440891980E-03 0.2262239960 0.9352377279E-03 0.2423828528 0.9262507627E-03 0.2585417097 0.9172267276E-03 0.2747005665 0.9082656519E-03 0.2908594234 0.8994678588E-03 0.3070182802 0.8909325231E-03 0.3231771371 0.8827561098E-03 0.3393359940 0.8750307205E-03 0.3554948508 0.8678423808E-03 0.3716537077 0.8612693170E-03 0.3878125645 0.8553802784E-03 0.4039714214 0.8502329685E-03 0.4201302782 0.8458726544E-03 0.4362891351 0.8423310195E-03 0.4524479919 0.8396253205E-03 0.4686068488 0.8377578943E-03 0.4847657056 0.8367160448E-03 0.5009245625 0.8364723187E-03 0.5170834194 0.8369851553E-03 0.5332422762 0.8381998775E-03 0.5494011331 0.8400499706E-03 0.5655599899 0.8424585870E-03 0.5817188468 0.8453402046E-03 0.5978777036 0.8486023682E-03 0.6140365605 0.8521474476E-03 0.6301954173 0.8558743547E-03 0.6463542742 0.8596801718E-03 0.6625131310 0.8634616562E-03 0.6786719879 0.8671165985E-03 0.6948308448 0.8705450218E-03 0.7109897016 0.8736502172E-03 0.7271485585 0.8763396209E-03 0.7433074153 0.8785255393E-03 0.7594662722 0.8801257360E-03 0.7756251290 0.8810638930E-03 0.7917839859 0.8812699608E-03 0.8079428427 0.8806804126E-03 0.8241016996 0.8792384140E-03 0.8402605564 0.8768939235E-03 0.8564194133 0.8736037314E-03 0.8725782702 0.8693314496E-03 0.8887371270 0.8640474593E-03 0.9048959839 0.8577288231E-03 0.9210548407 0.8503591685E-03 0.9372136976 0.8419285469E-03 0.9533725544 0.8324332729E-03 0.9695314113 0.8218757456E-03 0.9856902681 0.8102642564E-03 1.001849125 0.7976127841E-03 1.018007982 0.7839407799E-03 1.034166839 0.7692729429E-03 1.050325696 0.7536389879E-03 1.066484552 0.7370734064E-03 1.082643409 0.7196152204E-03 1.098802266 0.7013077323E-03 1.114961123 0.6821982678E-03 1.131119980 0.6623379160E-03 1.147278837 0.6417812645E-03 1.163437694 0.6205861310E-03 1.179596550 0.5988132919E-03 1.195755407 0.5765262082E-03 1.211914264 0.5537907486E-03 1.228073121 0.5306749109E-03 1.244231978 0.5072485424E-03 1.260390835 0.4835830578E-03 1.276549692 0.4597511583E-03 1.292708548 0.4358265490E-03 1.308867405 0.4118836577E-03 1.325026262 0.3879973536E-03 1.341185119 0.3642426685E-03 1.357343976 0.3406945182E-03 1.373502833 0.3174274280E-03 1.389661690 0.2945152591E-03 1.405820546 0.2720309393E-03 1.421979403 0.2500461965E-03 1.438138260 0.2286312953E-03 1.454297117 0.2078547773E-03 1.470455974 0.1877832033E-03 1.486614831 0.1684808971E-03 1.502773687 0.1500096878E-03 1.518932544 0.1324286464E-03 1.535091401 0.1157938101E-03 1.551250258 0.1001578799E-03 1.567409115 0.8556987144E-04 1.583567972 0.7207467810E-04 1.599726829 0.5971247595E-04 1.615885685 0.4851783747E-04 1.632044542 0.3851830032E-04 1.648203399 0.2973189717E-04 1.664362256 0.2216267566E-04 1.680521113 0.1579234777E-04 1.696679970 0.1056483297E-04 1.712838827 0.6359642558E-05 1.728997683 0.2954817193E-05 1.745156540 -0.2463522229E-10 1.761407614 0.1683085184E-04 1.777658689 0.3368403744E-04 1.793909763 0.5058028796E-04 1.810160837 0.6753726692E-04 1.826411911 0.8456836813E-04 1.842662985 0.1016818794E-03 1.858914059 0.1188805841E-03 1.875165134 0.1361618389E-03 1.891416208 0.1535181281E-03 1.907667282 0.1709380638E-03 1.923918356 0.1884077687E-03 1.940169430 0.2059125563E-03 1.956420504 0.2234388006E-03 1.972671579 0.2409758781E-03 1.988922653 0.2585180515E-03 2.005173727 0.2760661667E-03 2.021424801 0.2936290311E-03 2.037675875 0.3112243556E-03 2.053926949 0.3288791518E-03 2.070178024 0.3466295062E-03 2.086429098 0.3645196777E-03 2.102680172 0.3826005131E-03 2.118931246 0.4009272153E-03 2.135182320 0.4195565551E-03 2.151433394 0.4385436659E-03 2.167684469 0.4579386016E-03 2.183935543 0.4777828712E-03 2.200186617 0.4981061714E-03 2.216437691 0.5189235347E-03 2.232688765 0.5402330747E-03 2.248939839 0.5620144705E-03 2.265190914 0.5842282709E-03 2.281441988 0.6068160432E-03 2.297693062 0.6297013305E-03 2.313944136 0.6527913420E-03 2.330195210 0.6759792584E-03 2.346446284 0.6991470214E-03 2.362697359 0.7221684615E-03 2.378948433 0.7449126250E-03 2.395199507 0.7672471639E-03 2.411450581 0.7890416692E-03 2.427701655 0.8101708399E-03 2.443952729 0.8305173955E-03 2.460203804 0.8499746530E-03 2.476454878 0.8684487039E-03 2.492705952 0.8858601382E-03 2.508957026 0.9021452740E-03 2.525208100 0.9172568636E-03 2.541459174 0.9311642596E-03 2.557710249 0.9438530356E-03 2.573961323 0.9553240744E-03 2.590212397 0.9655921487E-03 2.606463471 0.9746840385E-03 2.622714545 0.9826362490E-03 2.638965619 0.9894924064E-03 2.655216694 0.9953004345E-03 2.671467768 0.1000109622E-02 2.687718842 0.1003967708E-02 2.703969916 0.1006918117E-02 2.720220990 0.1008997476E-02 2.736472064 0.1010233536E-02 2.752723139 0.1010643596E-02 2.768555520 0.1010234800E-02 2.784387902 0.1009015166E-02 2.800220284 0.1007004888E-02 2.816052665 0.1004237393E-02 2.831885047 0.1000758989E-02 2.847717429 0.9966283641E-03 2.863549810 0.9919159157E-03 2.879382192 0.9867029099E-03 2.895214573 0.9810804450E-03 2.911046955 0.9750323074E-03 2.926879337 0.9683268033E-03 2.942711718 0.9612755119E-03 2.958544100 0.9539496516E-03 2.974376482 0.9464228039E-03 2.990208863 0.9387699376E-03 3.006041245 0.9310663663E-03 3.021873627 0.9233866516E-03 3.037706008 0.9158034674E-03 3.053538390 0.9083864481E-03 3.069370772 0.9012010452E-03 3.085203153 0.8943074228E-03 3.101035535 0.8877594247E-03 3.116867917 0.8816036468E-03 3.132700298 0.8758786517E-03 3.148532680 0.8706143546E-03 3.164365062 0.8658316129E-03 3.180197443 0.8615420373E-03 3.196029825 0.8577480400E-03 3.211862206 0.8544431230E-03 3.227694588 0.8516124001E-03 3.243526970 0.8492333351E-03 3.259359351 0.8472766723E-03 3.275191733 0.8457075242E-03 3.291024115 0.8444865811E-03 3.306856496 0.8435713998E-03 3.322688878 0.8429177313E-03 3.338521260 0.8424808481E-03 3.354353641 0.8422168349E-03 3.370186023 0.8420838113E-03 3.386018405 0.8420430594E-03 3.401850786 0.8420600341E-03 3.417683168 0.8421052413E-03 3.433515550 0.8421549691E-03 3.449347931 0.8421918641E-03 3.465180313 0.8422053472E-03 3.480923541 0.8415731291E-03 3.496666769 0.8396951955E-03 3.512409997 0.8366275758E-03 3.528153225 0.8324631760E-03 3.543896453 0.8273309513E-03 3.559639681 0.8213945209E-03 3.575382910 0.8148500089E-03 3.591126138 0.8079228422E-03 3.606869366 0.8008632152E-03 3.622612594 0.7939399405E-03 3.638355822 0.7874324687E-03 3.654099050 0.7816210024E-03 3.669842278 0.7767748456E-03 3.685585506 0.7731394270E-03 3.701328734 0.7709227621E-03 3.717071962 0.7702824229E-03 3.732815191 0.7713142642E-03 3.748558419 0.7740441464E-03 3.764301647 0.7784236418E-03 3.780044875 0.7843302624E-03 3.795788103 0.7915721783E-03 3.811531331 0.7998968611E-03 3.827274559 0.8090026923E-03 3.843017787 0.8185523988E-03 3.858761015 0.8281872100E-03 3.874504243 0.8375408214E-03 3.890247471 0.8462525119E-03 3.905990700 0.8539790371E-03 3.921733928 0.8604051420E-03 3.937477156 0.8652527018E-03 3.953220384 0.8682885947E-03 3.968963612 0.8693314496E-03 3.984706840 0.8682885947E-03 4.000450068 0.8652527018E-03 4.016193296 0.8604051420E-03 4.031936524 0.8539790371E-03 4.047679752 0.8462525119E-03 4.063422981 0.8375408214E-03 4.079166209 0.8281872100E-03 4.094909437 0.8185523988E-03 4.110652665 0.8090026923E-03 4.126395893 0.7998968611E-03 4.142139121 0.7915721783E-03 4.157882349 0.7843302624E-03 4.173625577 0.7784236418E-03 4.189368805 0.7740441464E-03 4.205112033 0.7713142642E-03 4.220855262 0.7702824229E-03 4.236598490 0.7709227621E-03 4.252341718 0.7731394270E-03 4.268084946 0.7767748456E-03 4.283828174 0.7816210024E-03 4.299571402 0.7874324687E-03 4.315314630 0.7939399405E-03 4.331057858 0.8008632152E-03 4.346801086 0.8079228422E-03 4.362544314 0.8148500089E-03 4.378287543 0.8213945209E-03 4.394030771 0.8273309513E-03 4.409773999 0.8324631760E-03 4.425517227 0.8366275758E-03 4.441260455 0.8396951955E-03 4.457003683 0.8415731291E-03 4.472746911 0.8422053472E-03 4.488939120 0.8405408527E-03 4.505131328 0.8355688205E-03 4.521323537 0.8273534078E-03 4.537515745 0.8160008913E-03 4.553707954 0.8016586884E-03 4.569900162 0.7845139859E-03 4.586092371 0.7647919687E-03 4.602284579 0.7427536352E-03 4.618476788 0.7186931671E-03 4.634668996 0.6929348019E-03 4.650861205 0.6658291210E-03 4.667053413 0.6377486180E-03 4.683245622 0.6090823560E-03 4.699437830 0.5872588007E-03 4.715630039 0.5704206513E-03 4.731822247 0.5535996717E-03 4.748014456 0.5369102565E-03 4.764206664 0.5204395683E-03 4.780398873 0.5042442444E-03 4.796591081 0.4883483343E-03 4.812783290 0.4727427076E-03 4.828975498 0.4573860788E-03 4.845167707 0.4422076606E-03 4.861359915 0.4271113147E-03 4.877552124 0.4119809328E-03 4.893744332 0.3966866761E-03 4.909936541 0.3810916478E-03 4.926128749 0.3650585703E-03 4.942320958 0.3484560871E-03 4.958513166 0.3311643859E-03 4.974705375 0.3130799358E-03 4.990897583 0.2941192253E-03 5.007089792 0.2709177627E-03 5.023282000 0.2446376562E-03 5.039474209 0.2187803158E-03 5.055666417 0.1933278421E-03 5.071858626 0.1727302843E-03 5.088050834 0.1509785890E-03 5.104243043 0.1279447378E-03 5.120435251 0.1037862226E-03 5.136627460 0.7869122033E-04 5.152819668 0.5287243071E-04 5.169011877 0.2656092300E-04 5.185204085 -0.2463522229E-10 5.201441086 -0.9108428106E-06 5.217678086 0.1957879817E-05 5.233915086 0.5937368667E-05 5.250152087 0.1132396537E-04 5.266389087 0.1817098377E-04 5.282626087 0.2645480286E-04 5.298863088 0.3613521707E-04 5.315100088 0.4716252748E-04 5.331337088 0.5947945975E-04 5.347574088 0.7302208463E-04 5.363811089 0.9286553135E-04 5.380048089 0.1155776980E-03 5.396285089 0.1389685732E-03 5.412522090 0.1629675445E-03 5.428759090 0.1874597541E-03 5.444996090 0.2123123963E-03 5.461233091 0.2373867967E-03 5.477470091 0.2625443573E-03 5.493707091 0.2876494977E-03 5.509944092 0.3125710450E-03 5.526181092 0.3371828498E-03 5.542418092 0.3613640756E-03 5.558655093 0.3849994202E-03 5.574892093 0.4079794050E-03 5.591129093 0.4302007903E-03 5.607366093 0.4515671280E-03 5.623603094 0.4719894343E-03 5.639840094 0.4913869526E-03 5.656077094 0.5096879749E-03 5.672314095 0.5268306866E-03 5.688551095 0.5427640063E-03 5.704788095 0.5574483928E-03 5.721025096 0.5708565940E-03 5.737262096 0.5829743165E-03 5.753499096 0.5938007920E-03 5.769736097 0.6033492173E-03 5.785973097 0.6116470436E-03 5.802210097 0.6187360866E-03 5.818447098 0.6339073580E-03 5.834684098 0.6492364921E-03 5.850921098 0.6640994081E-03 5.867158099 0.6785272540E-03 5.883395099 0.6925546132E-03 5.899632099 0.7062184628E-03 5.915869099 0.7195570649E-03 5.932106100 0.7326088148E-03 5.948343100 0.7454110722E-03 5.964580100 0.7579990073E-03 5.980817101 0.7704044911E-03 5.997054101 0.7826550638E-03 6.013291101 0.7947730109E-03 6.029528102 0.8062841233E-03 6.045765102 0.7971279323E-03 6.062002102 0.7890339791E-03 6.078239103 0.7822409722E-03 6.094476103 0.7769391573E-03 6.110713103 0.7732559858E-03 6.126950104 0.7712455428E-03 6.143187104 0.7708848397E-03 6.159424104 0.7720786623E-03 6.175661104 0.7746720796E-03 6.191898105 0.7784673932E-03 6.208135105 0.7832415613E-03 6.224372105 0.7887611065E-03 6.240609106 0.7947932248E-03 6.256846106 0.8011132313E-03 6.273083106 0.8075091872E-03 6.289320107 0.8137846667E-03 6.305557107 0.8197604456E-03 6.321794107 0.8252756374E-03 6.338031108 0.8301885875E-03 6.354268108 0.8343776750E-03 6.370505108 0.8377420773E-03 6.386742109 0.8402024874E-03 6.402979109 0.8417017472E-03 6.419216109 0.8422053472E-03 0.000000000 0.1010643596E-02 0.1615885685E-01 0.1010191085E-02 0.3231771371E-01 0.1008837863E-02 0.4847657056E-01 0.1006596839E-02 0.6463542742E-01 0.1003489465E-02 0.8079428427E-01 0.9995456345E-03 0.9695314113E-01 0.9948035346E-03 0.1131119980 0.9893094547E-03 0.1292708548 0.9831175353E-03 0.1454297117 0.9762894562E-03 0.1615885685 0.9688940531E-03 0.1777474254 0.9610068536E-03 0.1939062823 0.9527095216E-03 0.2100651391 0.9440891980E-03 0.2262239960 0.9352377279E-03 0.2423828528 0.9262507627E-03 0.2585417097 0.9172267276E-03 0.2747005665 0.9082656519E-03 0.2908594234 0.8994678588E-03 0.3070182802 0.8909325231E-03 0.3231771371 0.8827561098E-03 0.3393359940 0.8750307205E-03 0.3554948508 0.8678423808E-03 0.3716537077 0.8612693170E-03 0.3878125645 0.8553802784E-03 0.4039714214 0.8502329685E-03 0.4201302782 0.8458726544E-03 0.4362891351 0.8423310195E-03 0.4524479919 0.8396253205E-03 0.4686068488 0.8377578943E-03 0.4847657056 0.8367160448E-03 0.5009245625 0.8364723187E-03 0.5170834194 0.8369851553E-03 0.5332422762 0.8381998775E-03 0.5494011331 0.8400499706E-03 0.5655599899 0.8424585870E-03 0.5817188468 0.8453402046E-03 0.5978777036 0.8486023682E-03 0.6140365605 0.8521474476E-03 0.6301954173 0.8558743547E-03 0.6463542742 0.8596801718E-03 0.6625131310 0.8634616562E-03 0.6786719879 0.8671165985E-03 0.6948308448 0.8705450218E-03 0.7109897016 0.8736502172E-03 0.7271485585 0.8763396209E-03 0.7433074153 0.8785255393E-03 0.7594662722 0.8801257360E-03 0.7756251290 0.8810638930E-03 0.7917839859 0.8812699608E-03 0.8079428427 0.8806804126E-03 0.8241016996 0.8792384140E-03 0.8402605564 0.8768939235E-03 0.8564194133 0.8736037314E-03 0.8725782702 0.8693314496E-03 0.8887371270 0.8787895482E-03 0.9048959839 0.8880077487E-03 0.9210548407 0.8968826741E-03 0.9372136976 0.9052969205E-03 0.9533725544 0.9131215131E-03 0.9695314113 0.9202186591E-03 0.9856902681 0.9264446790E-03 1.001849125 0.9316530082E-03 1.018007982 0.9356971758E-03 1.034166839 0.9384336836E-03 1.050325696 0.9397247252E-03 1.066484552 0.9394407008E-03 1.082643409 0.9374624980E-03 1.098802266 0.9336835176E-03 1.114961123 0.9280114374E-03 1.131119980 0.9203697091E-03 1.147278837 0.9106987921E-03 1.163437694 0.8989571296E-03 1.179596550 0.8851218757E-03 1.195755407 0.8691893840E-03 1.211914264 0.8511754675E-03 1.228073121 0.8311154425E-03 1.244231978 0.8090639665E-03 1.260390835 0.7850946835E-03 1.276549692 0.7592996868E-03 1.292708548 0.7317888126E-03 1.308867405 0.7026887748E-03 1.325026262 0.6721421540E-03 1.341185119 0.6403062528E-03 1.357343976 0.6073518285E-03 1.373502833 0.5734617178E-03 1.389661690 0.5388293649E-03 1.405820546 0.5036572655E-03 1.421979403 0.4681553421E-03 1.438138260 0.4325392606E-03 1.454297117 0.3970287052E-03 1.470455974 0.3618456207E-03 1.486614831 0.3272124388E-03 1.502773687 0.2933502976E-03 1.518932544 0.2604772668E-03 1.535091401 0.2288065865E-03 1.551250258 0.1985449254E-03 1.567409115 0.1698906567E-03 1.583567972 0.1430321364E-03 1.599726829 0.1181459458E-03 1.615885685 0.9539500369E-04 1.632044542 0.7492633776E-04 1.648203399 0.5686802420E-04 1.664362256 0.4132410531E-04 1.680521113 0.2836444067E-04 1.696679970 0.1800139181E-04 1.712838827 0.1013230005E-04 1.728997683 0.4405136712E-05 1.745156540 -0.2463522229E-10 1.761407614 0.2838306082E-04 1.777658689 0.5681648132E-04 1.793909763 0.8535017448E-04 1.810160837 0.1140330220E-03 1.826411911 0.1429120305E-03 1.842662985 0.1720311375E-03 1.858914059 0.2014296216E-03 1.875165134 0.2311401178E-03 1.891416208 0.2611862934E-03 1.907667282 0.2915802874E-03 1.923918356 0.3223200544E-03 1.940169430 0.3533867821E-03 1.956420504 0.3847425591E-03 1.972671579 0.4163284688E-03 1.988922653 0.4480632639E-03 2.005173727 0.4798427464E-03 2.021424801 0.5115399428E-03 2.037675875 0.5430061245E-03 2.053926949 0.5740726842E-03 2.070178024 0.6045538462E-03 2.086429098 0.6342501574E-03 2.102680172 0.6629526857E-03 2.118931246 0.6904478325E-03 2.135182320 0.7165226577E-03 2.151433394 0.7409706060E-03 2.167684469 0.7635975211E-03 2.183935543 0.7842278301E-03 2.200186617 0.8027107786E-03 2.216437691 0.8189265922E-03 2.232688765 0.8327924332E-03 2.248939839 0.8442680061E-03 2.265190914 0.8533606484E-03 2.281441988 0.8601297089E-03 2.297693062 0.8646899752E-03 2.313944136 0.8672138591E-03 2.330195210 0.8679319779E-03 2.346446284 0.8671317060E-03 2.362697359 0.8651532052E-03 2.378948433 0.8623824231E-03 2.395199507 0.8592405890E-03 2.411450581 0.8561699079E-03 2.427701655 0.8536154695E-03 2.443952729 0.8520039007E-03 2.460203804 0.8517199331E-03 2.476454878 0.8684487039E-03 2.492705952 0.8858601382E-03 2.508957026 0.9021452740E-03 2.525208100 0.9172568636E-03 2.541459174 0.9311642596E-03 2.557710249 0.9438530356E-03 2.573961323 0.9553240744E-03 2.590212397 0.9655921487E-03 2.606463471 0.9746840385E-03 2.622714545 0.9826362490E-03 2.638965619 0.9894924064E-03 2.655216694 0.9953004345E-03 2.671467768 0.1000109622E-02 2.687718842 0.1003967708E-02 2.703969916 0.1006918117E-02 2.720220990 0.1008997476E-02 2.736472064 0.1010233536E-02 2.752723139 0.1010643596E-02 2.768555520 0.1010256171E-02 2.784387902 0.1009097804E-02 2.800220284 0.1007180192E-02 2.816052665 0.1004522708E-02 2.831885047 0.1001152225E-02 2.847717429 0.9971028653E-03 2.863549810 0.9924156733E-03 2.879382192 0.9871382097E-03 2.895214573 0.9813240679E-03 2.911046955 0.9751482103E-03 2.926879337 0.9690130281E-03 2.942711718 0.9627871695E-03 2.958544100 0.9565864448E-03 2.974376482 0.9505280774E-03 2.990208863 0.9447283850E-03 3.006041245 0.9393003056E-03 3.021873627 0.9343508265E-03 3.037706008 0.9299783885E-03 3.053538390 0.9262703575E-03 3.069370772 0.9233006658E-03 3.085203153 0.9211277300E-03 3.101035535 0.9197927516E-03 3.116867917 0.9193184923E-03 3.132700298 0.9197085937E-03 3.148532680 0.9209474834E-03 3.164365062 0.9230008731E-03 3.180197443 0.9258168203E-03 3.196029825 0.9293272941E-03 3.211862206 0.9334501590E-03 3.227694588 0.9380914749E-03 3.243526970 0.9431480044E-03 3.259359351 0.9485098228E-03 3.275191733 0.9540629327E-03 3.291024115 0.9596918024E-03 3.306856496 0.9652817654E-03 3.322688878 0.9707212345E-03 3.338521260 0.9759037014E-03 3.354353641 0.9807295091E-03 3.370186023 0.9851073922E-03 3.386018405 0.9889557913E-03 3.401850786 0.9922039532E-03 3.417683168 0.9947928286E-03 3.433515550 0.9966757824E-03 3.449347931 0.9978191311E-03 3.465180313 0.9982025174E-03 3.480923541 0.9977950109E-03 3.496666769 0.9965833992E-03 3.512409997 0.9946000282E-03 3.528153225 0.9918975539E-03 3.543896453 0.9885470848E-03 3.559639681 0.9846356281E-03 3.575382910 0.9802628960E-03 3.591126138 0.9755375485E-03 3.606869366 0.9705729805E-03 3.622612594 0.9654827927E-03 3.638355822 0.9603761133E-03 3.654099050 0.9553529738E-03 3.669842278 0.9504999575E-03 3.685585506 0.9458863502E-03 3.701328734 0.9415610135E-03 3.717071962 0.9375501739E-03 3.732815191 0.9338562698E-03 3.748558419 0.9304579383E-03 3.764301647 0.9273111486E-03 3.780044875 0.9243514127E-03 3.795788103 0.9214969378E-03 3.811531331 0.9186525343E-03 3.827274559 0.9157140544E-03 3.843017787 0.9125731308E-03 3.858761015 0.9091219878E-03 3.874504243 0.9052581202E-03 3.890247471 0.9008886698E-03 3.905990700 0.8959343619E-03 3.921733928 0.8903329034E-03 3.937477156 0.8840417734E-03 3.953220384 0.8770403646E-03 3.968963612 0.8693314496E-03 3.984706840 0.8770403646E-03 4.000450068 0.8840417734E-03 4.016193296 0.8903329034E-03 4.031936524 0.8959343619E-03 4.047679752 0.9008886698E-03 4.063422981 0.9052581202E-03 4.079166209 0.9091219878E-03 4.094909437 0.9125731308E-03 4.110652665 0.9157140544E-03 4.126395893 0.9186525343E-03 4.142139121 0.9214969378E-03 4.157882349 0.9243514127E-03 4.173625577 0.9273111486E-03 4.189368805 0.9304579383E-03 4.205112033 0.9338562698E-03 4.220855262 0.9375501739E-03 4.236598490 0.9415610135E-03 4.252341718 0.9458863502E-03 4.268084946 0.9504999575E-03 4.283828174 0.9553529738E-03 4.299571402 0.9603761133E-03 4.315314630 0.9654827927E-03 4.331057858 0.9705729805E-03 4.346801086 0.9755375485E-03 4.362544314 0.9802628960E-03 4.378287543 0.9846356281E-03 4.394030771 0.9885470848E-03 4.409773999 0.9918975539E-03 4.425517227 0.9946000282E-03 4.441260455 0.9965833992E-03 4.457003683 0.9977950109E-03 4.472746911 0.9982025174E-03 4.488939120 0.9971205367E-03 4.505131328 0.9938812476E-03 4.521323537 0.9885045376E-03 4.537515745 0.9810233134E-03 4.553707954 0.9714831454E-03 4.569900162 0.9599417756E-03 4.586092371 0.9464684948E-03 4.602284579 0.9311433965E-03 4.618476788 0.9140565152E-03 4.634668996 0.8953068613E-03 4.650861205 0.8750013612E-03 4.667053413 0.8532537177E-03 4.683245622 0.8301832029E-03 4.699437830 0.8059133976E-03 4.715630039 0.7805708943E-03 4.731822247 0.7542839780E-03 4.748014456 0.7271813019E-03 4.764206664 0.6993905742E-03 4.780398873 0.6710372728E-03 4.796591081 0.6422434049E-03 4.812783290 0.6131263266E-03 4.828975498 0.5837976390E-03 4.845167707 0.5543621749E-03 4.861359915 0.5249170901E-03 4.877552124 0.4955510708E-03 4.893744332 0.4663436680E-03 4.909936541 0.4373647671E-03 4.926128749 0.4086741985E-03 4.942320958 0.3803214926E-03 4.958513166 0.3523457799E-03 4.974705375 0.3247758341E-03 4.990897583 0.2976302519E-03 5.007089792 0.2742214688E-03 5.023282000 0.2533503126E-03 5.039474209 0.2314946134E-03 5.055666417 0.2086683875E-03 5.071858626 0.1849100376E-03 5.088050834 0.1602809656E-03 5.104243043 0.1348636722E-03 5.120435251 0.1087594368E-03 5.136627460 0.8208565723E-04 5.152819668 0.5497292413E-04 5.169011877 0.2756189127E-04 5.185204085 -0.2463522229E-10 5.201441086 0.1824871846E-04 5.217678086 0.3667299297E-04 5.233915086 0.5544350124E-04 5.250152087 0.7472144343E-04 5.266389087 0.9465444690E-04 5.282626087 0.1153731066E-03 5.298863088 0.1369881870E-03 5.315100088 0.1595884197E-03 5.331337088 0.1832387814E-03 5.347574088 0.2079791318E-03 5.363811089 0.2338231404E-03 5.380048089 0.2607575087E-03 5.396285089 0.2887415761E-03 5.412522090 0.3177074544E-03 5.428759090 0.3475608362E-03 5.444996090 0.3781825695E-03 5.461233091 0.4094309973E-03 5.477470091 0.4411449549E-03 5.493707091 0.4731472413E-03 5.509944092 0.5052483463E-03 5.526181092 0.5372502230E-03 5.542418092 0.5689499393E-03 5.558655093 0.6001430979E-03 5.574892093 0.6306269650E-03 5.591129093 0.6602032933E-03 5.607366093 0.6886808512E-03 5.623603094 0.7158776848E-03 5.639840094 0.7416231451E-03 5.656077094 0.7657597136E-03 5.672314095 0.7881446517E-03 5.688551095 0.8086514996E-03 5.704788095 0.8271714400E-03 5.721025096 0.8436145403E-03 5.737262096 0.8579108832E-03 5.753499096 0.8700115903E-03 5.769736097 0.8798897426E-03 5.785973097 0.8875411990E-03 5.802210097 0.8929853103E-03 5.818447098 0.8962655245E-03 5.834684098 0.8974498752E-03 5.850921098 0.8966313391E-03 5.867158099 0.8939280419E-03 5.883395099 0.8894832834E-03 5.899632099 0.8834653366E-03 5.915869099 0.8760669628E-03 5.932106100 0.8675045554E-03 5.948343100 0.8580168029E-03 5.964580100 0.8478627150E-03 5.980817101 0.8373188160E-03 5.997054101 0.8266752461E-03 6.013291101 0.8162304558E-03 6.029528102 0.8067745753E-03 6.045765102 0.8186693300E-03 6.062002102 0.8304597293E-03 6.078239103 0.8421408508E-03 6.094476103 0.8537003337E-03 6.110713103 0.8651185119E-03 6.126950104 0.8763687339E-03 6.143187104 0.8874178539E-03 6.159424104 0.8982268773E-03 6.175661104 0.9087517356E-03 6.191898105 0.9189441673E-03 6.208135105 0.9287526769E-03 6.224372105 0.9381235475E-03 6.240609106 0.9470018793E-03 6.256846106 0.9553326321E-03 6.273083106 0.9630616497E-03 6.289320107 0.9701366462E-03 6.305557107 0.9765081388E-03 6.321794107 0.9821303125E-03 6.338031108 0.9869618053E-03 6.354268108 0.9909664044E-03 6.370505108 0.9941136459E-03 6.386742109 0.9963793120E-03 6.402979109 0.9977458229E-03 6.419216109 0.9982025174E-03 elk-2.3.22/examples/Nb-phonon-DFPT/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020720 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-phonon-DFPT/elk.in0000644002504400250440000000165312337331331021471 0ustar00dewhurstdewhurst00000000000000 ! This example generates a good quality phonon dispersion for bcc niobium using ! density functional perturbation theory (DFPT). ! The phonon dispersion and vertex location lines are included with this ! example in the files PHDISP.OUT and PHDLINES.OUT, respectively. tasks 0 ! generate the ground-state 205 ! generate the dynamical matrices with DFPT 220 ! plot the phonon dispersion nrmtscf 2 ngridq 4 4 4 ngridk 12 12 12 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 3.118 sppath '../../species/' atoms 1 : nspecies 'Nb.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt plot1d 9 400 0.5 0.5 0.5 0.25 0.25 0.25 0.0 0.0 0.0 -0.5 0.5 0.5 -0.5 0.5 0.0 -0.75 0.25 0.25 -0.5 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 elk-2.3.22/examples/Nb-phonon-DFPT/PaxHeaders.22528/PHDLINES.OUT0000644002504400250440000000005012337331331021414 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-phonon-DFPT/PHDLINES.OUT0000644002504400250440000000132012337331331022154 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.8125810923E-03 0.000000000 0.1531564935E-02 0.8725782702 -0.8125810923E-03 0.8725782702 0.1531564935E-02 1.745156540 -0.8125810923E-03 1.745156540 0.1531564935E-02 2.752723139 -0.8125810923E-03 2.752723139 0.1531564935E-02 3.465180313 -0.8125810923E-03 3.465180313 0.1531564935E-02 3.968963612 -0.8125810923E-03 3.968963612 0.1531564935E-02 4.472746911 -0.8125810923E-03 4.472746911 0.1531564935E-02 5.185204085 -0.8125810923E-03 5.185204085 0.1531564935E-02 6.419216109 -0.8125810923E-03 6.419216109 0.1531564935E-02 elk-2.3.22/examples/PaxHeaders.22528/Si-hybrid0000644002504400250440000000005012337331331017001 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Si-hybrid/0000755002504400250440000000000012337331331017622 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-hybrid/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020161 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Si-hybrid/elk.in0000644002504400250440000000056612337331331020734 0ustar00dewhurstdewhurst00000000000000 ! Hybrid functional using the native PBE functional. ! Example by Tyrel McQueen. tasks 0 5 xctype 20 hybrid .true. ! hybrid mixing parameter hybmix 0.25 lmaxvr 6 gmaxvr 10.0 swidth 0.001 ngridk 2 2 2 nempty 10 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 'Si.in' 2 0.00 0.00 0.00 0.25 0.25 0.25 elk-2.3.22/examples/PaxHeaders.22528/Si-meta-GGA0000644002504400250440000000005012337331331017042 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Si-meta-GGA/0000755002504400250440000000000012337331331017663 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-meta-GGA/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020222 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Si-meta-GGA/elk.in0000644002504400250440000000225612337331331020773 0ustar00dewhurstdewhurst00000000000000 ! Band structure of silicon using meta-GGA. Note that the libxc library has to ! be linked into the code. See the manual for instructions on how to do this. ! LAPW appears to be required to obtain accurate kinetic energy densities, thus ! a special Si.in species file is included in this directory. ! Compare the meta-GGA and LDA band structures and band gaps. tasks 0 20 ! use the Tran-Blaha meta-GGA functional for exchange and LDA for correlation ! [Phys. Rev. Lett. 102, 226401 (2009)] xctype 100 208 12 ! double the number of points in the muffin-tin nrmtscf 2 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 14 14 14 ! These are the vertices to be joined for the band structure plot plot1d 7 200 : nvp1d, npp1d 0.0 0.0 1.0 : vlvp1d 0.5 0.5 1.0 0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.5 0.25 -0.25 0.5 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/Nb-autoswidth0000644002504400250440000000005012337331331017677 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-autoswidth/0000755002504400250440000000000012337331331020520 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Nb-autoswidth/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021057 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-autoswidth/elk.in0000644002504400250440000000101712337331331021622 0ustar00dewhurstdewhurst00000000000000 ! Example demonstrating the automatic determination of the smearing width. See ! 'autoswidth' in the manual for details. ! Example by T. Bjorkman and O. Granas. tasks 0 autoswidth .true. mixtype 2 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 3.118 sppath '../../species/' atoms 1 : nspecies 'Nb.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/LiF0000644002504400250440000000005012337331331015621 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/LiF/0000755002504400250440000000000012337331331016442 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/LiF/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017001 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/LiF/elk.in0000644002504400250440000000135512337331331017551 0ustar00dewhurstdewhurst00000000000000 ! Linear optical spectrum of lithium fluoride. tasks 0 120 121 ! the inverse lifetime is determined by swidth swidth 0.01 nempty 10 lradstp 2 wplot 400 100 0 : nwplot, ngrkf, nswplot 0.0 1.5 : wplot avec 3.80402 3.80402 0.00000 3.80402 0.00000 3.80402 0.00000 3.80402 3.80402 sppath '../../species/' atoms 2 : nspecies 'Li.in' : spfname 1 : natoms 0.0000 0.0000 0.0000 0.0 0.0 0.0 : atposl, bfcmt 'F.in' : spfname 1 : natoms 0.5000 0.5000 0.5000 0.0 0.0 0.0 : atposl, bfcmt ngridk 10 10 10 elk-2.3.22/examples/PaxHeaders.22528/Al-exp[iq.r]0000644002504400250440000000005012337331331017357 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al-exp[iq.r]/0000755002504400250440000000000012337331331020200 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Al-exp[iq.r]/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020537 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al-exp[iq.r]/elk.in0000644002504400250440000000117212337331331021304 0ustar00dewhurstdewhurst00000000000000 ! Computes < i,k+q | exp(iq.r) | j,k > matrix elements. The q-vector is ! stored in vecql and the outputted k-points are selected with kstlist. ! Note that q should be chosen commensurate with the k-point grid. tasks 0 130 vecql 0.0 0.0 0.125 kstlist 1 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.8267 ! this is the relative path to the species files sppath '../../species/' atoms 1 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 8 8 8 elk-2.3.22/examples/PaxHeaders.22528/LiF-TDDFT-LRC0000644002504400250440000000005012337331331017102 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/LiF-TDDFT-LRC/0000755002504400250440000000000012337331331017723 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/LiF-TDDFT-LRC/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020262 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/LiF-TDDFT-LRC/elk.in0000644002504400250440000000266112337331331021033 0ustar00dewhurstdewhurst00000000000000 ! Time-dependent density functional theory (TDDFT) optical spectrum of lithium ! fluoride. This material has a prominent excitonic peak, which is absent in the ! usual RPA dielectric function. The TDDFT kernel fxc is described in ! Phys. Rev. B 69, p155112 (2004) as the 'long-range contribution' and requires ! a material-dependent parameter alpha. tasks 0 ! ground-state calculation 120 ! compute momentum matrix elements 121 ! compute RPA dielectric function with no local field contributions 320 ! compute TDDFT dielectric function with local field contributions ! long-range contribution kernel fxctype 200 ! parameter alpha for long-range contribution kernel fxclrc 5.5 ! G-vector cut-off of exchange-correlation kernel and response function gmaxrf 1.0 swidth 0.01 nempty 8 lradstp 2 wplot 800 100 0 : nwplot, ngrkf, nswplot 0.0 1.5 : wplot avec 3.80402 3.80402 0.00000 3.80402 0.00000 3.80402 0.00000 3.80402 3.80402 sppath '../../species/' atoms 2 : nspecies 'Li.in' : spfname 1 : natoms 0.0000 0.0000 0.0000 0.0 0.0 0.0 : atposl, bfcmt 'F.in' : spfname 1 : natoms 0.5000 0.5000 0.5000 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.25 0.5 0.625 elk-2.3.22/examples/PaxHeaders.22528/MgB2-lattice-opt0000644002504400250440000000005012337331331020121 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/MgB2-lattice-opt/0000755002504400250440000000000012337331331020742 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/MgB2-lattice-opt/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021301 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/MgB2-lattice-opt/elk.in0000644002504400250440000000341712337331331022052 0ustar00dewhurstdewhurst00000000000000 ! Automatic determination of the c/a ratio of MgB2. This is performed with ! geometric optimisation which involves changing of the lattice vectors whilst ! maintaining the unit cell volume. ! Setting 'latvopt' to 1 performs full unconstrained optimisation of the lattice ! vectors. Setting it to 2 results in an iso-volumetric optimisation. In both ! cases, the atomic positions are also optimised. To constrain the atomic ! positions, set the nuclear mass to be a negative number in the species file. ! In the case of MgB2, the atomic positions remain fixed because of symmetry. ! As the calculation progresses, you can plot the files TOTENERGY_OPT.OUT and ! STRESSMAX.OUT to see the change in the total energy and stress tensor. The ! modulus of the maximum force on the atoms is written to FORCEMAX.OUT. ! The updated unit cell geometry is written to GEOMETRY_OPT.OUT. The last entry ! in this file contains the final lattice parameters and atomic positions. tasks 2 ! lattice vector optimisation while maintaining the unit cell volume latvopt 2 ! speed the calculation up with Broyden mixing mixtype 3 ngridk 6 6 4 avec 5.831694400 0.000000000 0.000000000 -2.915847200 5.050395498 0.000000000 0.000000000 0.000000000 6.659394380 ! decrease the unit cell volume to increase the pressure scale 0.9 sppath '../../species/' atoms 2 : nspecies 'Mg.in' : spfname 1 : natoms; atposl below 0.00000000 0.00000000 0.00000000 'B.in' : spfname 2 : natoms; atposl below 0.33333333 0.66666667 0.50000000 0.66666667 0.33333333 0.50000000 elk-2.3.22/examples/PaxHeaders.22528/TiO2-linopt0000644002504400250440000000005012337331331017227 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/TiO2-linopt/0000755002504400250440000000000012337331331020050 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/TiO2-linopt/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020407 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/TiO2-linopt/elk.in0000644002504400250440000000145112337331331021154 0ustar00dewhurstdewhurst00000000000000 ! Linear optical spectrum of titanium dioxide. The inverse lifetime is ! determined by swidth. Note that many more k-points are required for good ! convergence of the optical spectrum. tasks 0 120 121 swidth 0.005 ! use Broyden mixing for fast convergence mixtype 3 avec 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.6441 scale 8.6806 sppath '../../species/' atoms 2 : nspecies 'Ti.in' : spfname 2 : natoms 0.00 0.00 0.00 0.0 0.0 0.0 0.50 0.50 0.50 0.0 0.0 0.0 'O.in' 4 0.3048 0.3048 0.0 0.0 0.0 0.0 0.6952 0.6952 0.0 0.0 0.0 0.0 0.1952 0.8048 0.5 0.0 0.0 0.0 0.8048 0.1952 0.5 0.0 0.0 0.0 ngridk 2 2 2 elk-2.3.22/examples/PaxHeaders.22528/Fe0000644002504400250440000000005012337331331015501 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe/0000755002504400250440000000000012337331331016322 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331016661 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe/elk.in0000644002504400250440000000126312337331331017427 0ustar00dewhurstdewhurst00000000000000 ! Ferromagnetic bcc iron example. Note the small global magnetic field, which ! is needed to break spin symmetry. Check the total moment of the cell in the ! file INFO.OUT. tasks 0 spinpol .true. ! small magnetic field in the z-direction bfieldc 0.0 0.0 0.01 ! fairly large number of empty states required for magnetic cases nempty 8 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/fractional-species0000644002504400250440000000005012337331331020722 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/fractional-species/0000755002504400250440000000000012337331331021543 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/fractional-species/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331022102 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/fractional-species/elk.in0000644002504400250440000000154112337331331022647 0ustar00dewhurstdewhurst00000000000000 ! In this example the code generates a fractional atomic species file called ! 'A.in' which is then used in a ground-state calculation to find the moment. ! This allows for easy use of the virtual crystal approximation (VCA). tasks 0 ! generate a fractional atomic species charge -26.2 and write to the file 'A.in' fspecies -26.2 'A' spinpol .true. ! small magnetic field in the z-direction bfieldc 0.0 0.0 0.01 ! fairly large number of empty states required for magnetic cases nempty 8 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 ! Now use the file 'A.in' in the atoms block atoms 1 : nspecies 'A.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/NiO-LDA+U-FLL-Ykwa0000644002504400250440000000005012337331331017756 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA+U-FLL-Ykwa/0000755002504400250440000000000012337331331020577 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/NiO-LDA+U-FLL-Ykwa/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021136 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA+U-FLL-Ykwa/elk.in0000644002504400250440000000356412337331331021712 0ustar00dewhurstdewhurst00000000000000 ! NiO in AFMII structure with LDA+U and fully-localised-limit (FLL) double ! counting (dftu=1). With inpdftu=4 the values of Slater parameters are ! conveniently calculated through a screened Yukawa potential with screening ! length lambda provided as input (see PRB 80, 035121 (2009)). Here lambda=1.5 ! gives realistic values of Slater integrals which are printed in FDU.OUT. ! Try to plot the magnetic moments of Ni as function of lambda. ! If inpdftu=5 the code will automatically determine the screening length ! corresponding to the fixed value of U (udufix) provided as input. ! Example by Francesco Cricchio. tasks 0 ! DFT+U block ! here FLL double counting is used (dftu=1) ! inpdftu=4 corresponds to calculate the Slater parameters self-consistently ! through a Yukawa potential with screening length lambda dft+u 1 4 : dftu, inpdftu 1 2 1.5 : is, l, lambda ! alternatively try inpdftu=5; this will determine the screening length ! corresponding to U=0.29399 Ha (8 eV) through a secant algorithm !dft+u ! 1 5 : dftu, inpdftu ! 1 2 0.29399 : is, l, U fixed spinpol .true. scale 7.893389 avec 1.0 0.5 0.5 0.5 1.0 0.5 0.5 0.5 1.0 atoms 2 : nspecies 'Ni.in' : spfname 2 : natoms; atpos, bfcmt below 0.0 0.0 0.0 0.0 0.0 -2.0 0.5 0.5 0.5 0.0 0.0 2.0 'O.in' : spfname 2 : natoms; atpos, bfcmt below 0.25 0.25 0.25 0.0 0.0 0.0 0.75 0.75 0.75 0.0 0.0 0.0 ! the large magnetic local field on Ni is halved at every iteration ! this speeds up the convergence of magnetic calculations reducebf 0.5 sppath '../../species/' ! fairly high number of empty states nempty 8 ! this grid is too small for accurate magnetic moment ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/GaAs0000644002504400250440000000005012337331331015762 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/GaAs/0000755002504400250440000000000012337331331016603 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/GaAs/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017142 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/GaAs/elk.in0000644002504400250440000000130512337331331017705 0ustar00dewhurstdewhurst00000000000000 ! GaAs using the Perdew-Burke-Ernzerhof GGA functional. Try calculating the ! effective mass tensor at the Gamma-point using task=25. Repeat this with ! spin-orbit coupling switched on. tasks 0 xctype 20 avec 5.3435 5.3435 0.0000 5.3435 0.0000 5.3435 0.0000 5.3435 5.3435 sppath '../../species/' atoms 2 : nspecies 'Ga.in' : spfname 1 : natoms 0.00 0.00 0.00 0.0 0.0 0.0 : atposl, bfcmt 'As.in' : spfname 1 : natoms 0.25 0.25 0.25 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Fe-spiral0000644002504400250440000000005012337331331016771 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe-spiral/0000755002504400250440000000000012337331331017612 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-spiral/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020151 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe-spiral/elk.in0000644002504400250440000000134312337331331020716 0ustar00dewhurstdewhurst00000000000000 ! Spin-spiral state for Gamma-Fe. Care should be taken to ensure that the ! calculation is fully converged. tasks 0 spinsprl .true. ! spin-spiral q-vector in lattice coordinates vqlss 0.1 0.1 0.0 ! fairly large large cut-off required rgkmax 8.5 gmaxvr 14.0 nempty 8 ! spiral magnetic field along q with perpendicular component only bfieldc 0.05 0.0 0.0 ! tight convergence required epspot 1.e-7 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.375 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/Si-BSE0000644002504400250440000000005012337331331016131 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Si-BSE/0000755002504400250440000000000012337331331016752 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si-BSE/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017311 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Si-BSE/elk.in0000644002504400250440000000340612337331331020060 0ustar00dewhurstdewhurst00000000000000 ! BSE optical spectrum of silicon. Note that the non-zero vkloff is needed to ! make the system non-metallic, i.e. all occupancies in EIGVAL.OUT should be ! either 0 or 1. If this is not the case, then the response function will be ! too large. This is quite a time-consuming calculation and should be run on ! a multi-processor system. ! Silicon is surprisingly difficult for a BSE calculation: it requires quite a ! large k-point set for good convergence, unlike the excitonic peak in LiF. tasks 0 ! ground-state calculation 120 ! compute momentum matrix elements 121 ! compute RPA dielectric function with no local field contributions 180 ! generate RPA dielectric function with local field contributions 185 ! write the BSE Hamiltonian matrix to file 186 ! diagonalise the BSE matrix 187 ! compute BSE dielectric function ! this should be small (but not so small that it affects the results!) for a ! fast calculation because the wavefunctions used in the construction of the BSE ! matrix elements are expanded to this angular momentum cut-off lmaxvr 4 ! number of valence states to use in BSE Hamiltonian nvbse 3 ! number of conduction states ncbse 4 ! use smallest possible maximum |G| gmaxvr 0.0 ! a scissor correction is required to match the gap to experiment scissor 0.0331 swidth 0.005 wplot 800 100 0 : nwplot, ngrkf, nswplot 0.0 1.0 : wplot avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 5 5 5 vkloff 0.25 0.5 0.625 elk-2.3.22/examples/PaxHeaders.22528/Ru-ELF0000644002504400250440000000005012337331331016141 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ru-ELF/0000755002504400250440000000000012337331331016762 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ru-ELF/PaxHeaders.22528/Ru.in0000644002504400250440000000005012337331331017134 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ru-ELF/Ru.in0000644002504400250440000000404112337331331017677 0ustar00dewhurstdewhurst00000000000000 'Ru' : spsymb 'ruthenium' : spname -44.0000 : spzn 184239.3392 : spmass 0.301511E-06 2.0000 43.5262 600 : sprmin, rmt, sprmax, nrmt 15 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 T 3 1 2 4.00000 T 3 2 2 4.00000 T 3 2 3 6.00000 T 4 0 1 2.00000 F 4 1 1 2.00000 F 4 1 2 4.00000 F 4 2 2 4.00000 F 4 2 3 3.00000 F 5 0 1 1.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 1 : nlx 2 2 : lx, io 0.1500 0 F : apwe0, apwdm, apwve 0.1500 1 F 6 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0.1500 2 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.6548 0 T 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -1.6432 0 T elk-2.3.22/examples/Ru-ELF/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017321 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ru-ELF/elk.in0000644002504400250440000000152012337331331020063 0ustar00dewhurstdewhurst00000000000000 ! Example due to A. Baranov on how to obtain a very smooth electron localisation ! function (ELF). Since the ELF depends on derivatives of the density it can ! sometimes be mismatched at the muffin-tin boundaries. This can be corrected ! by using high cut-offs for angular momenta and APW functions. Note also that a ! modified species file Ru.in is used. tasks 0 31 51 avec 4.42816109463 -2.5566 0.0 0.0 5.1132 0.0 0.0 0.0 8.0901 scale 1.0 atoms 1 'Ru.in' 2 0.3333333333 0.6666666667 0.25 0.0 0.0 0.0 0.6666666667 0.3333333333 0.75 0.0 0.0 0.0 ! this ensures that no radial points will be skipped when computing the density lradstp 1 rgkmax 11 gmaxvr 22 lmaxapw 12 lmaxvr 12 lmaxmat 10 ngridk 2 2 1 vkloff 0.5 0.5 0.5 plot1d 2 1000 0.0 0.0 0.0 0.0 1.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/Ni-phonon0000644002504400250440000000005012337331331017014 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ni-phonon/0000755002504400250440000000000012337331331017635 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ni-phonon/PaxHeaders.22528/PHDISP.OUT0000644002504400250440000000005012337331331020451 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ni-phonon/PHDISP.OUT0000644002504400250440000012660212337331331021224 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.3394132962E-10 0.1025457845E-01 0.1888579557E-04 0.2050915690E-01 0.3774855680E-04 0.3076373535E-01 0.5656537833E-04 0.4101831380E-01 0.7531361194E-04 0.5127289224E-01 0.9397099299E-04 0.6152747069E-01 0.1125157644E-03 0.7178204914E-01 0.1309267971E-03 0.8203662759E-01 0.1491837067E-03 0.9229120604E-01 0.1672669646E-03 0.1025457845 0.1851580040E-03 0.1128003629 0.2028393184E-03 0.1230549414 0.2202945538E-03 0.1333095198 0.2375085924E-03 0.1435640983 0.2544676267E-03 0.1538186767 0.2711592258E-03 0.1640732552 0.2875723900E-03 0.1743278336 0.3036975955E-03 0.1845824121 0.3195268278E-03 0.1948369905 0.3350536033E-03 0.2050915690 0.3502729785E-03 0.2153461474 0.3651815471E-03 0.2256007259 0.3797774247E-03 0.2358553043 0.3940602199E-03 0.2461098828 0.4080309931E-03 0.2563644612 0.4216922031E-03 0.2666190397 0.4350476401E-03 0.2768736181 0.4481023480E-03 0.2871281966 0.4608625340E-03 0.2973827750 0.4733354689E-03 0.3076373535 0.4855293761E-03 0.3178919319 0.4974533127E-03 0.3281465104 0.5091170432E-03 0.3384010888 0.5205309060E-03 0.3486556673 0.5317056765E-03 0.3589102457 0.5426524259E-03 0.3691648242 0.5533823796E-03 0.3794194026 0.5639067756E-03 0.3896739811 0.5742367252E-03 0.3999285595 0.5843830783E-03 0.4101831380 0.5943562938E-03 0.4204377164 0.6041663188E-03 0.4306922949 0.6138224763E-03 0.4409468733 0.6233333642E-03 0.4512014517 0.6327067665E-03 0.4614560302 0.6419495770E-03 0.4717106086 0.6510677385E-03 0.4819651871 0.6600661954E-03 0.4922197655 0.6689488615E-03 0.5024743440 0.6777186039E-03 0.5127289224 0.6863772404E-03 0.5229835009 0.6949255519E-03 0.5332380793 0.7033633083E-03 0.5434926578 0.7116893071E-03 0.5537472362 0.7199014233E-03 0.5640018147 0.7279966696E-03 0.5742563931 0.7359712654E-03 0.5845109716 0.7438207130E-03 0.5947655500 0.7515398791E-03 0.6050201285 0.7591230814E-03 0.6152747069 0.7665641761E-03 0.6255292854 0.7738566482E-03 0.6357838638 0.7809936999E-03 0.6460384423 0.7879683377E-03 0.6562930207 0.7947734566E-03 0.6665475992 0.8014019204E-03 0.6768021776 0.8078466355E-03 0.6870567561 0.8141006205E-03 0.6973113345 0.8201570684E-03 0.7075659130 0.8260094010E-03 0.7178204914 0.8316513171E-03 0.7280750699 0.8370768322E-03 0.7383296483 0.8422803105E-03 0.7485842268 0.8472564895E-03 0.7588388052 0.8520004965E-03 0.7690933837 0.8565078592E-03 0.7793479621 0.8607745077E-03 0.7896025406 0.8647967719E-03 0.7998571190 0.8685713725E-03 0.8101116975 0.8720954070E-03 0.8203662759 0.8753663316E-03 0.8306208544 0.8783819399E-03 0.8408754328 0.8811403384E-03 0.8511300113 0.8836399205E-03 0.8613845897 0.8858793394E-03 0.8716391682 0.8878574806E-03 0.8818937466 0.8895734352E-03 0.8921483250 0.8910264741E-03 0.9024029035 0.8922160243E-03 0.9126574819 0.8931416479E-03 0.9229120604 0.8938030241E-03 0.9331666388 0.8941999341E-03 0.9434212173 0.8943322513E-03 0.9434212173 0.8943322513E-03 0.9535655315 0.8943189294E-03 0.9637098456 0.8942790429E-03 0.9738541598 0.8942128294E-03 0.9839984740 0.8941206825E-03 0.9941427881 0.8940031484E-03 1.004287102 0.8938609212E-03 1.014431416 0.8936948370E-03 1.024575731 0.8935058665E-03 1.034720045 0.8932951070E-03 1.044864359 0.8930637731E-03 1.055008673 0.8928131868E-03 1.065152987 0.8925447664E-03 1.075297301 0.8922600150E-03 1.085441616 0.8919605092E-03 1.095585930 0.8916478862E-03 1.105730244 0.8913238320E-03 1.115874558 0.8909900687E-03 1.126018872 0.8906483419E-03 1.136163186 0.8903004094E-03 1.146307501 0.8899480289E-03 1.156451815 0.8895929470E-03 1.166596129 0.8892368888E-03 1.176740443 0.8888815480E-03 1.186884757 0.8885285774E-03 1.197029071 0.8881795816E-03 1.207173386 0.8878361087E-03 1.217317700 0.8874996447E-03 1.227462014 0.8871716080E-03 1.237606328 0.8868533448E-03 1.247750642 0.8865461255E-03 1.257894956 0.8862511429E-03 1.268039271 0.8859695098E-03 1.278183585 0.8857022585E-03 1.288327899 0.8854503408E-03 1.298472213 0.8852146283E-03 1.308616527 0.8849959136E-03 1.318760841 0.8847949122E-03 1.328905156 0.8846122641E-03 1.339049470 0.8844485359E-03 1.349193784 0.8843042235E-03 1.359338098 0.8841797544E-03 1.369482412 0.8840754898E-03 1.379626726 0.8839917270E-03 1.389771041 0.8839287014E-03 1.399915355 0.8838865878E-03 1.410059669 0.8838655021E-03 1.420203983 0.8838655021E-03 1.430348297 0.8838865878E-03 1.440492611 0.8839287014E-03 1.450636926 0.8839917270E-03 1.460781240 0.8840754898E-03 1.470925554 0.8841797544E-03 1.481069868 0.8843042235E-03 1.491214182 0.8844485359E-03 1.501358496 0.8846122641E-03 1.511502811 0.8847949122E-03 1.521647125 0.8849959136E-03 1.531791439 0.8852146283E-03 1.541935753 0.8854503408E-03 1.552080067 0.8857022585E-03 1.562224381 0.8859695098E-03 1.572368695 0.8862511429E-03 1.582513010 0.8865461255E-03 1.592657324 0.8868533448E-03 1.602801638 0.8871716080E-03 1.612945952 0.8874996447E-03 1.623090266 0.8878361087E-03 1.633234580 0.8881795816E-03 1.643378895 0.8885285774E-03 1.653523209 0.8888815480E-03 1.663667523 0.8892368888E-03 1.673811837 0.8895929470E-03 1.683956151 0.8899480289E-03 1.694100465 0.8903004094E-03 1.704244780 0.8906483419E-03 1.714389094 0.8909900687E-03 1.724533408 0.8913238320E-03 1.734677722 0.8916478862E-03 1.744822036 0.8919605092E-03 1.754966350 0.8922600150E-03 1.765110665 0.8925447664E-03 1.775254979 0.8928131868E-03 1.785399293 0.8930637731E-03 1.795543607 0.8932951070E-03 1.805687921 0.8935058665E-03 1.815832235 0.8936948370E-03 1.825976550 0.8938609212E-03 1.836120864 0.8940031484E-03 1.846265178 0.8941206825E-03 1.856409492 0.8942128294E-03 1.866553806 0.8942790429E-03 1.876698120 0.8943189294E-03 1.886842435 0.8943322513E-03 1.886842435 0.8943322513E-03 1.897027160 0.8942714923E-03 1.907211886 0.8940892138E-03 1.917396612 0.8937854115E-03 1.927581338 0.8933600781E-03 1.937766064 0.8928132038E-03 1.947950789 0.8921447763E-03 1.958135515 0.8913547813E-03 1.968320241 0.8904432028E-03 1.978504967 0.8894100234E-03 1.988689693 0.8882552249E-03 1.998874418 0.8869787889E-03 2.009059144 0.8855806975E-03 2.019243870 0.8840609337E-03 2.029428596 0.8824194822E-03 2.039613322 0.8806563305E-03 2.049798047 0.8787714693E-03 2.059982773 0.8767648936E-03 2.070167499 0.8746366036E-03 2.080352225 0.8723866054E-03 2.090536951 0.8700149124E-03 2.100721677 0.8675215461E-03 2.110906402 0.8649065370E-03 2.121091128 0.8621699258E-03 2.131275854 0.8593117646E-03 2.141460580 0.8563321177E-03 2.151645306 0.8532310632E-03 2.161830031 0.8500086935E-03 2.172014757 0.8466651168E-03 2.182199483 0.8432004582E-03 2.192384209 0.8396148606E-03 2.202568935 0.8359084861E-03 2.212753660 0.8320815168E-03 2.222938386 0.8281341562E-03 2.233123112 0.8240666297E-03 2.243307838 0.8198791865E-03 2.253492564 0.8155720995E-03 2.263677289 0.8111456673E-03 2.273862015 0.8066002143E-03 2.284046741 0.8019360923E-03 2.294231467 0.7971536806E-03 2.304416193 0.7922533876E-03 2.314600918 0.7872356508E-03 2.324785644 0.7821009381E-03 2.334970370 0.7768497481E-03 2.345155096 0.7714826107E-03 2.355339822 0.7660000880E-03 2.365524547 0.7604027742E-03 2.375709273 0.7546912965E-03 2.385893999 0.7488663152E-03 2.396078725 0.7429285241E-03 2.406263451 0.7368786507E-03 2.416448176 0.7307174561E-03 2.426632902 0.7244457358E-03 2.436817628 0.7180643188E-03 2.447002354 0.7115740682E-03 2.457187080 0.7049758810E-03 2.467371806 0.6982706876E-03 2.477556531 0.6914594519E-03 2.487741257 0.6845431709E-03 2.497925983 0.6775228742E-03 2.508110709 0.6703996238E-03 2.518295435 0.6631745133E-03 2.528480160 0.6558486676E-03 2.538664886 0.6484232422E-03 2.548849612 0.6408994224E-03 2.559034338 0.6332784229E-03 2.569219064 0.6255614865E-03 2.579403789 0.6177498837E-03 2.589588515 0.6098449118E-03 2.599773241 0.6018478937E-03 2.609957967 0.5937601772E-03 2.620142693 0.5855831337E-03 2.630327418 0.5773181576E-03 2.640512144 0.5689666647E-03 2.650696870 0.5605300915E-03 2.660881596 0.5520098939E-03 2.671066322 0.5434075462E-03 2.681251047 0.5347245395E-03 2.691435773 0.5259623811E-03 2.701620499 0.5171225929E-03 2.711805225 0.5082067102E-03 2.721989951 0.4992162808E-03 2.732174676 0.4901528635E-03 2.742359402 0.4810180267E-03 2.752544128 0.4718133480E-03 2.762728854 0.4625404119E-03 2.772913580 0.4532008097E-03 2.783098305 0.4437961373E-03 2.793283031 0.4343279951E-03 2.803467757 0.4247979860E-03 2.813652483 0.4152077148E-03 2.823837209 0.4055587871E-03 2.834021935 0.3958528081E-03 2.844206660 0.3860913817E-03 2.854391386 0.3762761096E-03 2.864576112 0.3664085904E-03 2.874760838 0.3564904186E-03 2.884945564 0.3465231840E-03 2.895130289 0.3365084707E-03 2.905315015 0.3264478566E-03 2.915499741 0.3163429126E-03 2.925684467 0.3061952021E-03 2.935869193 0.2960062803E-03 2.946053918 0.2857776941E-03 2.956238644 0.2755109810E-03 2.966423370 0.2652076694E-03 2.976608096 0.2548692780E-03 2.986792822 0.2444973154E-03 2.996977547 0.2340932802E-03 3.007162273 0.2236586608E-03 3.017346999 0.2131949351E-03 3.027531725 0.2027035709E-03 3.037716451 0.1921860256E-03 3.047901176 0.1816437465E-03 3.058085902 0.1710781707E-03 3.068270628 0.1604907259E-03 3.078455354 0.1498828301E-03 3.088640080 0.1392558919E-03 3.098824805 0.1286113115E-03 3.109009531 0.1179504805E-03 3.119194257 0.1072747825E-03 3.129378983 0.9658559397E-04 3.139563709 0.8588428426E-04 3.149748434 0.7517221653E-04 3.159933160 0.6445074829E-04 3.170117886 0.5372123199E-04 3.180302612 0.4298501573E-04 3.190487338 0.3224344396E-04 3.200672064 0.2149785816E-04 3.210856789 0.1074959759E-04 3.221041515 -0.3394132962E-10 3.221041515 -0.3394132962E-10 3.231254349 0.1251907998E-04 3.241467184 0.2503301127E-04 3.251680018 0.3753664830E-04 3.261892852 0.5002485164E-04 3.272105686 0.6249249112E-04 3.282318521 0.7493444889E-04 3.292531355 0.8734562243E-04 3.302744189 0.9972092760E-04 3.312957023 0.1120553016E-03 3.323169858 0.1243437059E-03 3.333382692 0.1365811293E-03 3.343595526 0.1487625906E-03 3.353808360 0.1608831416E-03 3.364021195 0.1729378697E-03 3.374234029 0.1849219007E-03 3.384446863 0.1968304017E-03 3.394659698 0.2086585833E-03 3.404872532 0.2204017022E-03 3.415085366 0.2320550641E-03 3.425298200 0.2436140256E-03 3.435511035 0.2550739966E-03 3.445723869 0.2664304427E-03 3.455936703 0.2776788874E-03 3.466149537 0.2888149139E-03 3.476362372 0.2998341673E-03 3.486575206 0.3107323565E-03 3.496788040 0.3215052559E-03 3.507000874 0.3321487071E-03 3.517213709 0.3426586210E-03 3.527426543 0.3530309784E-03 3.537639377 0.3632618324E-03 3.547852211 0.3733473094E-03 3.558065046 0.3832836099E-03 3.568277880 0.3930670107E-03 3.578490714 0.4026938649E-03 3.588703548 0.4121606035E-03 3.598916383 0.4214637363E-03 3.609129217 0.4305998523E-03 3.619342051 0.4395656210E-03 3.629554885 0.4483577925E-03 3.639767720 0.4569731982E-03 3.649980554 0.4654087515E-03 3.660193388 0.4736614481E-03 3.670406222 0.4817283658E-03 3.680619057 0.4896066656E-03 3.690831891 0.4972935913E-03 3.701044725 0.5047864695E-03 3.711257560 0.5120827101E-03 3.721470394 0.5191798058E-03 3.731683228 0.5260753323E-03 3.741896062 0.5327669482E-03 3.752108897 0.5392523944E-03 3.762321731 0.5455294943E-03 3.772534565 0.5515961533E-03 3.782747399 0.5574503584E-03 3.792960234 0.5630901781E-03 3.803173068 0.5685137617E-03 3.813385902 0.5737193393E-03 3.823598736 0.5787052206E-03 3.833811571 0.5834697955E-03 3.844024405 0.5880115327E-03 3.854237239 0.5923289796E-03 3.864450073 0.5964207619E-03 3.874662908 0.6002855831E-03 3.884875742 0.6039222236E-03 3.895088576 0.6073295407E-03 3.905301410 0.6105064680E-03 3.915514245 0.6134520149E-03 3.925727079 0.6161652659E-03 3.935939913 0.6186453809E-03 3.946152747 0.6208915938E-03 3.956365582 0.6229032129E-03 3.966578416 0.6246796205E-03 3.976791250 0.6262202719E-03 3.987004084 0.6275246960E-03 3.997216919 0.6285924945E-03 4.007429753 0.6294233417E-03 4.017642587 0.6300169847E-03 4.027855422 0.6303732426E-03 4.038068256 0.6304920073E-03 0.000000000 -0.3394132962E-10 0.1025457845E-01 0.1888579557E-04 0.2050915690E-01 0.3774855680E-04 0.3076373535E-01 0.5656537833E-04 0.4101831380E-01 0.7531361194E-04 0.5127289224E-01 0.9397099299E-04 0.6152747069E-01 0.1125157644E-03 0.7178204914E-01 0.1309267971E-03 0.8203662759E-01 0.1491837067E-03 0.9229120604E-01 0.1672669646E-03 0.1025457845 0.1851580040E-03 0.1128003629 0.2028393184E-03 0.1230549414 0.2202945538E-03 0.1333095198 0.2375085924E-03 0.1435640983 0.2544676267E-03 0.1538186767 0.2711592258E-03 0.1640732552 0.2875723900E-03 0.1743278336 0.3036975955E-03 0.1845824121 0.3195268278E-03 0.1948369905 0.3350536033E-03 0.2050915690 0.3502729785E-03 0.2153461474 0.3651815471E-03 0.2256007259 0.3797774247E-03 0.2358553043 0.3940602199E-03 0.2461098828 0.4080309931E-03 0.2563644612 0.4216922031E-03 0.2666190397 0.4350476401E-03 0.2768736181 0.4481023480E-03 0.2871281966 0.4608625340E-03 0.2973827750 0.4733354689E-03 0.3076373535 0.4855293761E-03 0.3178919319 0.4974533127E-03 0.3281465104 0.5091170432E-03 0.3384010888 0.5205309060E-03 0.3486556673 0.5317056765E-03 0.3589102457 0.5426524259E-03 0.3691648242 0.5533823796E-03 0.3794194026 0.5639067756E-03 0.3896739811 0.5742367252E-03 0.3999285595 0.5843830783E-03 0.4101831380 0.5943562938E-03 0.4204377164 0.6041663188E-03 0.4306922949 0.6138224763E-03 0.4409468733 0.6233333642E-03 0.4512014517 0.6327067665E-03 0.4614560302 0.6419495770E-03 0.4717106086 0.6510677385E-03 0.4819651871 0.6600661954E-03 0.4922197655 0.6689488615E-03 0.5024743440 0.6777186039E-03 0.5127289224 0.6863772404E-03 0.5229835009 0.6949255519E-03 0.5332380793 0.7033633083E-03 0.5434926578 0.7116893071E-03 0.5537472362 0.7199014233E-03 0.5640018147 0.7279966696E-03 0.5742563931 0.7359712654E-03 0.5845109716 0.7438207130E-03 0.5947655500 0.7515398791E-03 0.6050201285 0.7591230814E-03 0.6152747069 0.7665641761E-03 0.6255292854 0.7738566482E-03 0.6357838638 0.7809936999E-03 0.6460384423 0.7879683377E-03 0.6562930207 0.7947734566E-03 0.6665475992 0.8014019204E-03 0.6768021776 0.8078466355E-03 0.6870567561 0.8141006205E-03 0.6973113345 0.8201570684E-03 0.7075659130 0.8260094010E-03 0.7178204914 0.8316513171E-03 0.7280750699 0.8370768322E-03 0.7383296483 0.8422803105E-03 0.7485842268 0.8472564895E-03 0.7588388052 0.8520004965E-03 0.7690933837 0.8565078592E-03 0.7793479621 0.8607745077E-03 0.7896025406 0.8647967719E-03 0.7998571190 0.8685713725E-03 0.8101116975 0.8720954070E-03 0.8203662759 0.8753663316E-03 0.8306208544 0.8783819399E-03 0.8408754328 0.8811403384E-03 0.8511300113 0.8836399205E-03 0.8613845897 0.8858793394E-03 0.8716391682 0.8878574806E-03 0.8818937466 0.8895734352E-03 0.8921483250 0.8910264741E-03 0.9024029035 0.8922160243E-03 0.9126574819 0.8931416479E-03 0.9229120604 0.8938030241E-03 0.9331666388 0.8941999341E-03 0.9434212173 0.8943322513E-03 0.9434212173 0.8943322513E-03 0.9535655315 0.8944054692E-03 0.9637098456 0.8946248999E-03 0.9738541598 0.8949898793E-03 0.9839984740 0.8954993181E-03 0.9941427881 0.8961517261E-03 1.004287102 0.8969452468E-03 1.014431416 0.8978776996E-03 1.024575731 0.8989466297E-03 1.034720045 0.9001493625E-03 1.044864359 0.9014830646E-03 1.055008673 0.9029448051E-03 1.065152987 0.9045316205E-03 1.075297301 0.9062405774E-03 1.085441616 0.9080688342E-03 1.095585930 0.9100136988E-03 1.105730244 0.9120726809E-03 1.115874558 0.9142435382E-03 1.126018872 0.9165243144E-03 1.136163186 0.9189133681E-03 1.146307501 0.9214093923E-03 1.156451815 0.9240114232E-03 1.166596129 0.9267188376E-03 1.176740443 0.9295313399E-03 1.186884757 0.9324489374E-03 1.197029071 0.9354719049E-03 1.207173386 0.9386007387E-03 1.217317700 0.9418361018E-03 1.227462014 0.9451787596E-03 1.237606328 0.9486295090E-03 1.247750642 0.9521891010E-03 1.257894956 0.9558581595E-03 1.268039271 0.9596370964E-03 1.278183585 0.9635260269E-03 1.288327899 0.9675246846E-03 1.298472213 0.9716323399E-03 1.308616527 0.9758477226E-03 1.318760841 0.9801689507E-03 1.328905156 0.9845934676E-03 1.339049470 0.9891179870E-03 1.349193784 0.9937384508E-03 1.359338098 0.9984499962E-03 1.369482412 0.1003246937E-02 1.379626726 0.1008122758E-02 1.389771041 0.1013070122E-02 1.399915355 0.1018080888E-02 1.410059669 0.1023146150E-02 1.420203983 0.1023146150E-02 1.430348297 0.1018080888E-02 1.440492611 0.1013070122E-02 1.450636926 0.1008122758E-02 1.460781240 0.1003246937E-02 1.470925554 0.9984499962E-03 1.481069868 0.9937384508E-03 1.491214182 0.9891179870E-03 1.501358496 0.9845934676E-03 1.511502811 0.9801689507E-03 1.521647125 0.9758477226E-03 1.531791439 0.9716323399E-03 1.541935753 0.9675246846E-03 1.552080067 0.9635260269E-03 1.562224381 0.9596370964E-03 1.572368695 0.9558581595E-03 1.582513010 0.9521891010E-03 1.592657324 0.9486295090E-03 1.602801638 0.9451787596E-03 1.612945952 0.9418361018E-03 1.623090266 0.9386007387E-03 1.633234580 0.9354719049E-03 1.643378895 0.9324489374E-03 1.653523209 0.9295313399E-03 1.663667523 0.9267188376E-03 1.673811837 0.9240114232E-03 1.683956151 0.9214093923E-03 1.694100465 0.9189133681E-03 1.704244780 0.9165243144E-03 1.714389094 0.9142435382E-03 1.724533408 0.9120726809E-03 1.734677722 0.9100136988E-03 1.744822036 0.9080688342E-03 1.754966350 0.9062405774E-03 1.765110665 0.9045316205E-03 1.775254979 0.9029448051E-03 1.785399293 0.9014830646E-03 1.795543607 0.9001493625E-03 1.805687921 0.8989466297E-03 1.815832235 0.8978776996E-03 1.825976550 0.8969452468E-03 1.836120864 0.8961517261E-03 1.846265178 0.8954993181E-03 1.856409492 0.8949898793E-03 1.866553806 0.8946248999E-03 1.876698120 0.8944054692E-03 1.886842435 0.8943322513E-03 1.886842435 0.8943322513E-03 1.897027160 0.8944779425E-03 1.907211886 0.8949145542E-03 1.917396612 0.8956407038E-03 1.927581338 0.8966540951E-03 1.937766064 0.8979515299E-03 1.947950789 0.8995289250E-03 1.958135515 0.9013813328E-03 1.968320241 0.9035029662E-03 1.978504967 0.9058872268E-03 1.988689693 0.9085267373E-03 1.998874418 0.9114133755E-03 2.009059144 0.9145383121E-03 2.019243870 0.9178920491E-03 2.029428596 0.9214644611E-03 2.039613322 0.9252448367E-03 2.049798047 0.9292219212E-03 2.059982773 0.9333839594E-03 2.070167499 0.9377187382E-03 2.080352225 0.9422136294E-03 2.090536951 0.9468556309E-03 2.100721677 0.9516314077E-03 2.110906402 0.9565273315E-03 2.121091128 0.9615295191E-03 2.131275854 0.9666238685E-03 2.141460580 0.9717960949E-03 2.151645306 0.9770317636E-03 2.161830031 0.9823163220E-03 2.172014757 0.9876351296E-03 2.182199483 0.9929734861E-03 2.192384209 0.9983166583E-03 2.202568935 0.1003649905E-02 2.212753660 0.1008958500E-02 2.222938386 0.1014227755E-02 2.233123112 0.1019443037E-02 2.243307838 0.1024589794E-02 2.253492564 0.1029653563E-02 2.263677289 0.1034619997E-02 2.273862015 0.1039474872E-02 2.284046741 0.1044204106E-02 2.294231467 0.1048793774E-02 2.304416193 0.1045990072E-02 2.314600918 0.1040269913E-02 2.324785644 0.1034413404E-02 2.334970370 0.1028420353E-02 2.345155096 0.1022290545E-02 2.355339822 0.1016023740E-02 2.365524547 0.1009619677E-02 2.375709273 0.1003078071E-02 2.385893999 0.9963986186E-03 2.396078725 0.9895809965E-03 2.406263451 0.9826248638E-03 2.416448176 0.9755298640E-03 2.426632902 0.9682956267E-03 2.436817628 0.9609217697E-03 2.447002354 0.9534079015E-03 2.457187080 0.9457536233E-03 2.467371806 0.9379585316E-03 2.477556531 0.9300222213E-03 2.487741257 0.9219442879E-03 2.497925983 0.9137243310E-03 2.508110709 0.9053619571E-03 2.518295435 0.8968567825E-03 2.528480160 0.8882084372E-03 2.538664886 0.8794165676E-03 2.548849612 0.8704808404E-03 2.559034338 0.8614009459E-03 2.569219064 0.8521766016E-03 2.579403789 0.8428075556E-03 2.589588515 0.8332935905E-03 2.599773241 0.8236345270E-03 2.609957967 0.8138302273E-03 2.620142693 0.8038805990E-03 2.630327418 0.7937855988E-03 2.640512144 0.7835452358E-03 2.650696870 0.7731595754E-03 2.660881596 0.7626287425E-03 2.671066322 0.7519529251E-03 2.681251047 0.7411323779E-03 2.691435773 0.7301674251E-03 2.701620499 0.7190584642E-03 2.711805225 0.7078059685E-03 2.721989951 0.6964104906E-03 2.732174676 0.6848726647E-03 2.742359402 0.6731932099E-03 2.752544128 0.6613729324E-03 2.762728854 0.6494127281E-03 2.772913580 0.6373135847E-03 2.783098305 0.6250765839E-03 2.793283031 0.6127029034E-03 2.803467757 0.6001938185E-03 2.813652483 0.5875507037E-03 2.823837209 0.5747750341E-03 2.834021935 0.5618683866E-03 2.844206660 0.5488324408E-03 2.854391386 0.5356689799E-03 2.864576112 0.5223798911E-03 2.874760838 0.5089671659E-03 2.884945564 0.4954329007E-03 2.895130289 0.4817792962E-03 2.905315015 0.4680086575E-03 2.915499741 0.4541233932E-03 2.925684467 0.4401260154E-03 2.935869193 0.4260191380E-03 2.946053918 0.4118054762E-03 2.956238644 0.3974878449E-03 2.966423370 0.3830691570E-03 2.976608096 0.3685524224E-03 2.986792822 0.3539407451E-03 2.996977547 0.3392373218E-03 3.007162273 0.3244454393E-03 3.017346999 0.3095684721E-03 3.027531725 0.2946098798E-03 3.037716451 0.2795732040E-03 3.047901176 0.2644620656E-03 3.058085902 0.2492801614E-03 3.068270628 0.2340312610E-03 3.078455354 0.2187192030E-03 3.088640080 0.2033478918E-03 3.098824805 0.1879212934E-03 3.109009531 0.1724434319E-03 3.119194257 0.1569183854E-03 3.129378983 0.1413502816E-03 3.139563709 0.1257432943E-03 3.149748434 0.1101016382E-03 3.159933160 0.9442956517E-04 3.170117886 0.7873135965E-04 3.180302612 0.6301133401E-04 3.190487338 0.4727382404E-04 3.200672064 0.3152318433E-04 3.210856789 0.1576378360E-04 3.221041515 -0.3394132962E-10 3.221041515 -0.3394132962E-10 3.231254349 0.1251907998E-04 3.241467184 0.2503301127E-04 3.251680018 0.3753664830E-04 3.261892852 0.5002485164E-04 3.272105686 0.6249249112E-04 3.282318521 0.7493444889E-04 3.292531355 0.8734562243E-04 3.302744189 0.9972092760E-04 3.312957023 0.1120553016E-03 3.323169858 0.1243437059E-03 3.333382692 0.1365811293E-03 3.343595526 0.1487625906E-03 3.353808360 0.1608831416E-03 3.364021195 0.1729378697E-03 3.374234029 0.1849219007E-03 3.384446863 0.1968304017E-03 3.394659698 0.2086585833E-03 3.404872532 0.2204017022E-03 3.415085366 0.2320550641E-03 3.425298200 0.2436140256E-03 3.435511035 0.2550739966E-03 3.445723869 0.2664304427E-03 3.455936703 0.2776788874E-03 3.466149537 0.2888149139E-03 3.476362372 0.2998341673E-03 3.486575206 0.3107323565E-03 3.496788040 0.3215052559E-03 3.507000874 0.3321487071E-03 3.517213709 0.3426586210E-03 3.527426543 0.3530309784E-03 3.537639377 0.3632618324E-03 3.547852211 0.3733473094E-03 3.558065046 0.3832836099E-03 3.568277880 0.3930670107E-03 3.578490714 0.4026938649E-03 3.588703548 0.4121606035E-03 3.598916383 0.4214637363E-03 3.609129217 0.4305998523E-03 3.619342051 0.4395656210E-03 3.629554885 0.4483577925E-03 3.639767720 0.4569731982E-03 3.649980554 0.4654087515E-03 3.660193388 0.4736614481E-03 3.670406222 0.4817283658E-03 3.680619057 0.4896066656E-03 3.690831891 0.4972935913E-03 3.701044725 0.5047864695E-03 3.711257560 0.5120827101E-03 3.721470394 0.5191798058E-03 3.731683228 0.5260753323E-03 3.741896062 0.5327669482E-03 3.752108897 0.5392523944E-03 3.762321731 0.5455294943E-03 3.772534565 0.5515961533E-03 3.782747399 0.5574503584E-03 3.792960234 0.5630901781E-03 3.803173068 0.5685137617E-03 3.813385902 0.5737193393E-03 3.823598736 0.5787052206E-03 3.833811571 0.5834697955E-03 3.844024405 0.5880115327E-03 3.854237239 0.5923289796E-03 3.864450073 0.5964207619E-03 3.874662908 0.6002855831E-03 3.884875742 0.6039222236E-03 3.895088576 0.6073295407E-03 3.905301410 0.6105064680E-03 3.915514245 0.6134520149E-03 3.925727079 0.6161652659E-03 3.935939913 0.6186453809E-03 3.946152747 0.6208915938E-03 3.956365582 0.6229032129E-03 3.966578416 0.6246796205E-03 3.976791250 0.6262202719E-03 3.987004084 0.6275246960E-03 3.997216919 0.6285924945E-03 4.007429753 0.6294233417E-03 4.017642587 0.6300169847E-03 4.027855422 0.6303732426E-03 4.038068256 0.6304920073E-03 0.000000000 -0.3394132962E-10 0.1025457845E-01 0.2450379401E-04 0.2050915690E-01 0.4899861705E-04 0.3076373535E-01 0.7347543114E-04 0.4101831380E-01 0.9792506537E-04 0.5127289224E-01 0.1223381526E-03 0.6152747069E-01 0.1467050695E-03 0.7178204914E-01 0.1710158815E-03 0.8203662759E-01 0.1952602932E-03 0.9229120604E-01 0.2194276058E-03 0.1025457845 0.2435066815E-03 0.1128003629 0.2674859161E-03 0.1230549414 0.2913532211E-03 0.1333095198 0.3150960143E-03 0.1435640983 0.3387012196E-03 0.1538186767 0.3621552779E-03 0.1640732552 0.3854441659E-03 0.1743278336 0.4085534262E-03 0.1845824121 0.4314682057E-03 0.1948369905 0.4541733035E-03 0.2050915690 0.4766532275E-03 0.2153461474 0.4988922587E-03 0.2256007259 0.5208745227E-03 0.2358553043 0.5425840684E-03 0.2461098828 0.5640049515E-03 0.2563644612 0.5851213237E-03 0.2666190397 0.6059175246E-03 0.2768736181 0.6263781778E-03 0.2871281966 0.6464882872E-03 0.2973827750 0.6662333351E-03 0.3076373535 0.6855993795E-03 0.3178919319 0.7045731495E-03 0.3281465104 0.7231421390E-03 0.3384010888 0.7412946957E-03 0.3486556673 0.7590201062E-03 0.3589102457 0.7763086753E-03 0.3691648242 0.7931517980E-03 0.3794194026 0.8095420252E-03 0.3896739811 0.8254731193E-03 0.3999285595 0.8409401027E-03 0.4101831380 0.8559392943E-03 0.4204377164 0.8704683376E-03 0.4306922949 0.8845262160E-03 0.4409468733 0.8981132578E-03 0.4512014517 0.9112311295E-03 0.4614560302 0.9238828164E-03 0.4717106086 0.9360725923E-03 0.4819651871 0.9478059764E-03 0.4922197655 0.9590896794E-03 0.5024743440 0.9699315373E-03 0.5127289224 0.9803404355E-03 0.5229835009 0.9903262219E-03 0.5332380793 0.9998996109E-03 0.5434926578 0.1009072079E-02 0.5537472362 0.1017855753E-02 0.5640018147 0.1026263293E-02 0.5742563931 0.1034307769E-02 0.5845109716 0.1042002534E-02 0.5947655500 0.1049361099E-02 0.6050201285 0.1056397002E-02 0.6152747069 0.1063123686E-02 0.6255292854 0.1069554372E-02 0.6357838638 0.1075701942E-02 0.6460384423 0.1081578828E-02 0.6562930207 0.1087196909E-02 0.6665475992 0.1092567415E-02 0.6768021776 0.1097700846E-02 0.6870567561 0.1102606900E-02 0.6973113345 0.1107294416E-02 0.7075659130 0.1111771327E-02 0.7178204914 0.1116044632E-02 0.7280750699 0.1120120383E-02 0.7383296483 0.1124003677E-02 0.7485842268 0.1127698678E-02 0.7588388052 0.1131208635E-02 0.7690933837 0.1134535931E-02 0.7793479621 0.1137682128E-02 0.7896025406 0.1140648033E-02 0.7998571190 0.1143433770E-02 0.8101116975 0.1146038859E-02 0.8203662759 0.1148462305E-02 0.8306208544 0.1150702684E-02 0.8408754328 0.1152758244E-02 0.8511300113 0.1154626990E-02 0.8613845897 0.1156306784E-02 0.8716391682 0.1157795435E-02 0.8818937466 0.1159090782E-02 0.8921483250 0.1160190776E-02 0.9024029035 0.1161093552E-02 0.9126574819 0.1161797493E-02 0.9229120604 0.1162301286E-02 0.9331666388 0.1162603958E-02 0.9434212173 0.1162704916E-02 0.9434212173 0.1162704916E-02 0.9535655315 0.1162659450E-02 0.9637098456 0.1162522668E-02 0.9738541598 0.1162293427E-02 0.9839984740 0.1161969840E-02 0.9941427881 0.1161549316E-02 1.004287102 0.1161028606E-02 1.014431416 0.1160403855E-02 1.024575731 0.1159670681E-02 1.034720045 0.1158824248E-02 1.044864359 0.1157859357E-02 1.055008673 0.1156770539E-02 1.065152987 0.1155552159E-02 1.075297301 0.1154198516E-02 1.085441616 0.1152703957E-02 1.095585930 0.1151062979E-02 1.105730244 0.1149270341E-02 1.115874558 0.1147321165E-02 1.126018872 0.1145211041E-02 1.136163186 0.1142936122E-02 1.146307501 0.1140493210E-02 1.156451815 0.1137879843E-02 1.166596129 0.1135094363E-02 1.176740443 0.1132135981E-02 1.186884757 0.1129004829E-02 1.197029071 0.1125702001E-02 1.207173386 0.1122229581E-02 1.217317700 0.1118590657E-02 1.227462014 0.1114789331E-02 1.237606328 0.1110830706E-02 1.247750642 0.1106720867E-02 1.257894956 0.1102466846E-02 1.268039271 0.1098076579E-02 1.278183585 0.1093558849E-02 1.288327899 0.1088923221E-02 1.298472213 0.1084179962E-02 1.308616527 0.1079339958E-02 1.318760841 0.1074414622E-02 1.328905156 0.1069415793E-02 1.339049470 0.1064355634E-02 1.349193784 0.1059246521E-02 1.359338098 0.1054100936E-02 1.369482412 0.1048931352E-02 1.379626726 0.1043750130E-02 1.389771041 0.1038569407E-02 1.399915355 0.1033400994E-02 1.410059669 0.1028256282E-02 1.420203983 0.1028256282E-02 1.430348297 0.1033400994E-02 1.440492611 0.1038569407E-02 1.450636926 0.1043750130E-02 1.460781240 0.1048931352E-02 1.470925554 0.1054100936E-02 1.481069868 0.1059246521E-02 1.491214182 0.1064355634E-02 1.501358496 0.1069415793E-02 1.511502811 0.1074414622E-02 1.521647125 0.1079339958E-02 1.531791439 0.1084179962E-02 1.541935753 0.1088923221E-02 1.552080067 0.1093558849E-02 1.562224381 0.1098076579E-02 1.572368695 0.1102466846E-02 1.582513010 0.1106720867E-02 1.592657324 0.1110830706E-02 1.602801638 0.1114789331E-02 1.612945952 0.1118590657E-02 1.623090266 0.1122229581E-02 1.633234580 0.1125702001E-02 1.643378895 0.1129004829E-02 1.653523209 0.1132135981E-02 1.663667523 0.1135094363E-02 1.673811837 0.1137879843E-02 1.683956151 0.1140493210E-02 1.694100465 0.1142936122E-02 1.704244780 0.1145211041E-02 1.714389094 0.1147321165E-02 1.724533408 0.1149270341E-02 1.734677722 0.1151062979E-02 1.744822036 0.1152703957E-02 1.754966350 0.1154198516E-02 1.765110665 0.1155552159E-02 1.775254979 0.1156770539E-02 1.785399293 0.1157859357E-02 1.795543607 0.1158824248E-02 1.805687921 0.1159670681E-02 1.815832235 0.1160403855E-02 1.825976550 0.1161028606E-02 1.836120864 0.1161549316E-02 1.846265178 0.1161969840E-02 1.856409492 0.1162293427E-02 1.866553806 0.1162522668E-02 1.876698120 0.1162659450E-02 1.886842435 0.1162704916E-02 1.886842435 0.1162704916E-02 1.897027160 0.1162634620E-02 1.907211886 0.1162423743E-02 1.917396612 0.1162072312E-02 1.927581338 0.1161580373E-02 1.937766064 0.1160947990E-02 1.947950789 0.1160175244E-02 1.958135515 0.1159262232E-02 1.968320241 0.1158209069E-02 1.978504967 0.1157015885E-02 1.988689693 0.1155682823E-02 1.998874418 0.1154210042E-02 2.009059144 0.1152597710E-02 2.019243870 0.1150846009E-02 2.029428596 0.1148955129E-02 2.039613322 0.1146925270E-02 2.049798047 0.1144756636E-02 2.059982773 0.1142449440E-02 2.070167499 0.1140003897E-02 2.080352225 0.1137420223E-02 2.090536951 0.1134698637E-02 2.100721677 0.1131839355E-02 2.110906402 0.1128842591E-02 2.121091128 0.1125708554E-02 2.131275854 0.1122437446E-02 2.141460580 0.1119029461E-02 2.151645306 0.1115484786E-02 2.161830031 0.1111803593E-02 2.172014757 0.1107986042E-02 2.182199483 0.1104032280E-02 2.192384209 0.1099942436E-02 2.202568935 0.1095716622E-02 2.212753660 0.1091354932E-02 2.222938386 0.1086857440E-02 2.233123112 0.1082224198E-02 2.243307838 0.1077455237E-02 2.253492564 0.1072550563E-02 2.263677289 0.1067510160E-02 2.273862015 0.1062333988E-02 2.284046741 0.1057021981E-02 2.294231467 0.1051574047E-02 2.304416193 0.1053230117E-02 2.314600918 0.1057499554E-02 2.324785644 0.1061588700E-02 2.334970370 0.1065484368E-02 2.345155096 0.1069173586E-02 2.355339822 0.1072643604E-02 2.365524547 0.1075881905E-02 2.375709273 0.1078876211E-02 2.385893999 0.1081614497E-02 2.396078725 0.1084084996E-02 2.406263451 0.1086276207E-02 2.416448176 0.1088176907E-02 2.426632902 0.1089776153E-02 2.436817628 0.1091063295E-02 2.447002354 0.1092027982E-02 2.457187080 0.1092660168E-02 2.467371806 0.1092950123E-02 2.477556531 0.1092888433E-02 2.487741257 0.1092466018E-02 2.497925983 0.1091674127E-02 2.508110709 0.1090504354E-02 2.518295435 0.1088948641E-02 2.528480160 0.1086999282E-02 2.538664886 0.1084648935E-02 2.548849612 0.1081890624E-02 2.559034338 0.1078717746E-02 2.569219064 0.1075124078E-02 2.579403789 0.1071103780E-02 2.589588515 0.1066651403E-02 2.599773241 0.1061761894E-02 2.609957967 0.1056430598E-02 2.620142693 0.1050653266E-02 2.630327418 0.1044426060E-02 2.640512144 0.1037745551E-02 2.650696870 0.1030608731E-02 2.660881596 0.1023013013E-02 2.671066322 0.1014956230E-02 2.681251047 0.1006436645E-02 2.691435773 0.9974529505E-03 2.701620499 0.9880042695E-03 2.711805225 0.9780901587E-03 2.721989951 0.9677106099E-03 2.732174676 0.9568660507E-03 2.742359402 0.9455573456E-03 2.752544128 0.9337857958E-03 2.762728854 0.9215531395E-03 2.772913580 0.9088615513E-03 2.783098305 0.8957136408E-03 2.793283031 0.8821124519E-03 2.803467757 0.8680614606E-03 2.813652483 0.8535645726E-03 2.823837209 0.8386261209E-03 2.834021935 0.8232508628E-03 2.844206660 0.8074439759E-03 2.854391386 0.7912110543E-03 2.864576112 0.7745581042E-03 2.874760838 0.7574915390E-03 2.884945564 0.7400181739E-03 2.895130289 0.7221452202E-03 2.905315015 0.7038802791E-03 2.915499741 0.6852313348E-03 2.925684467 0.6662067480E-03 2.935869193 0.6468152477E-03 2.946053918 0.6270659240E-03 2.956238644 0.6069682194E-03 2.966423370 0.5865319202E-03 2.976608096 0.5657671472E-03 2.986792822 0.5446843468E-03 2.996977547 0.5232942803E-03 3.007162273 0.5016080146E-03 3.017346999 0.4796369109E-03 3.027531725 0.4573926141E-03 3.037716451 0.4348870416E-03 3.047901176 0.4121323717E-03 3.058085902 0.3891410316E-03 3.068270628 0.3659256853E-03 3.078455354 0.3424992213E-03 3.088640080 0.3188747398E-03 3.098824805 0.2950655398E-03 3.109009531 0.2710851058E-03 3.119194257 0.2469470943E-03 3.129378983 0.2226653205E-03 3.139563709 0.1982537444E-03 3.149748434 0.1737264566E-03 3.159933160 0.1490976643E-03 3.170117886 0.1243816772E-03 3.180302612 0.9959289295E-04 3.190487338 0.7474578252E-04 3.200672064 0.4985487587E-04 3.210856789 0.2493474715E-04 3.221041515 -0.3394132962E-10 3.221041515 -0.3394132962E-10 3.231254349 0.2795954070E-04 3.241467184 0.5589940460E-04 3.251680018 0.8379994864E-04 3.261892852 0.1116415972E-03 3.272105686 0.1394048755E-03 3.282318521 0.1670704431E-03 3.292531355 0.1946191269E-03 3.302744189 0.2220319537E-03 3.312957023 0.2492901828E-03 3.323169858 0.2763753375E-03 3.333382692 0.3032692364E-03 3.343595526 0.3299540244E-03 3.353808360 0.3564122022E-03 3.364021195 0.3826266559E-03 3.374234029 0.4085806852E-03 3.384446863 0.4342580308E-03 3.394659698 0.4596429013E-03 3.404872532 0.4847199987E-03 3.415085366 0.5094745426E-03 3.425298200 0.5338922937E-03 3.435511035 0.5579595760E-03 3.445723869 0.5816632978E-03 3.455936703 0.6049909708E-03 3.466149537 0.6279307287E-03 3.476362372 0.6504713437E-03 3.486575206 0.6726022415E-03 3.496788040 0.6943135155E-03 3.507000874 0.7155959382E-03 3.517213709 0.7364409719E-03 3.527426543 0.7568407771E-03 3.537639377 0.7767882198E-03 3.547852211 0.7962768758E-03 3.558065046 0.8153010344E-03 3.568277880 0.8338556996E-03 3.578490714 0.8519365893E-03 3.588703548 0.8695401325E-03 3.598916383 0.8866634648E-03 3.609129217 0.9033044218E-03 3.619342051 0.9194615301E-03 3.629554885 0.9351339963E-03 3.639767720 0.9503216946E-03 3.649980554 0.9650251511E-03 3.660193388 0.9792455273E-03 3.670406222 0.9929846003E-03 3.680619057 0.1006244742E-02 3.690831891 0.1019028895E-02 3.701044725 0.1031340550E-02 3.711257560 0.1043183713E-02 3.721470394 0.1054562881E-02 3.731683228 0.1065483012E-02 3.741896062 0.1075949485E-02 3.752108897 0.1085968074E-02 3.762321731 0.1095544906E-02 3.772534565 0.1104686425E-02 3.782747399 0.1113399356E-02 3.792960234 0.1121690661E-02 3.803173068 0.1129567499E-02 3.813385902 0.1137037185E-02 3.823598736 0.1144107146E-02 3.833811571 0.1150784878E-02 3.844024405 0.1157077904E-02 3.854237239 0.1162993726E-02 3.864450073 0.1168539785E-02 3.874662908 0.1173723417E-02 3.884875742 0.1178551808E-02 3.895088576 0.1183031954E-02 3.905301410 0.1187170619E-02 3.915514245 0.1190974296E-02 3.925727079 0.1194449164E-02 3.935939913 0.1197601059E-02 3.946152747 0.1200435434E-02 3.956365582 0.1202957325E-02 3.966578416 0.1205171326E-02 3.976791250 0.1207081557E-02 3.987004084 0.1208691641E-02 3.997216919 0.1210004682E-02 4.007429753 0.1211023246E-02 4.017642587 0.1211749343E-02 4.027855422 0.1212184421E-02 4.038068256 0.1212329350E-02 elk-2.3.22/examples/Ni-phonon/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020174 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ni-phonon/elk.in0000644002504400250440000000205612337331331020743 0ustar00dewhurstdewhurst00000000000000 ! Ferromagnetic nickel phonon example. Note that 'task=200' can be run on as ! many computers as you like, but within the same network file system (NFS) ! directory. Once all the DYN_Qqqqq_qqqq_qqqq_Sss_Aaa_Pp.OUT files are ! generated, run 'task=220' to generate the phonon dispersion and compare to ! arXiv:cond-mat/0609352v1. A previously calculated dispersion has been included ! in this directory. tasks 200 rgkmax 8.2 ! large lmaxmat required for accurate forces lmaxmat 8 beta0 0.01 ! this variable determines the density of k-points for the phonon calculation radkpt 50.0 ngridq 4 4 4 epspot 5.e-7 nempty 8 spinpol .true. bfieldc 0.0 0.0 0.01 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.33 sppath '../../species/' atoms 1 : nspecies 'Ni.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt plot1d 5 400 0.0 0.0 0.0 0.5 0.5 0.0 0.5 0.0 -0.5 0.0 0.0 0.0 0.5 0.0 0.0 elk-2.3.22/examples/Ni-phonon/PaxHeaders.22528/PHDLINES.OUT0000644002504400250440000000005012337331331020670 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ni-phonon/PHDLINES.OUT0000644002504400250440000000062012337331331021432 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.9092470720E-03 0.000000000 0.1818494042E-02 0.9434212173 -0.9092470720E-03 0.9434212173 0.1818494042E-02 1.886842435 -0.9092470720E-03 1.886842435 0.1818494042E-02 3.221041515 -0.9092470720E-03 3.221041515 0.1818494042E-02 4.038068256 -0.9092470720E-03 4.038068256 0.1818494042E-02 elk-2.3.22/examples/PaxHeaders.22528/NiO-LDA0000644002504400250440000000005012337331331016232 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA/0000755002504400250440000000000012337331331017053 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/NiO-LDA/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017412 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA/elk.in0000644002504400250440000000166312337331331020164 0ustar00dewhurstdewhurst00000000000000 ! NiO in AFMII structure with LDA for comparison with LDA+U case. ! Example by Fredrik Bultmark, Francesco Cricchio and Lars Nordstrom. tasks 0 10 spinpol .true. scale 7.893389 avec 1.0 0.5 0.5 0.5 1.0 0.5 0.5 0.5 1.0 atoms 2 : nspecies 'Ni.in' : spfname 2 : natoms; atpos, bfcmt below 0.0 0.0 0.0 0.0 0.0 -2.0 0.5 0.5 0.5 0.0 0.0 2.0 'O.in' : spfname 2 : natoms; atpos, bfcmt below 0.25 0.25 0.25 0.0 0.0 0.0 0.75 0.75 0.75 0.0 0.0 0.0 ! the large magnetic local field on Ni is halved at every iteration ! this speeds up the convergence of magnetic calculations reducebf 0.5 ! fairly high number of empty states nempty 8 sppath '../../species/' ! this grid is too small for accurate magnetic moment ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/FeCo-MAE0000644002504400250440000000005012337331331016363 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/FeCo-MAE/0000755002504400250440000000000012337331331017204 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/FeCo-MAE/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017543 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/FeCo-MAE/elk.in0000644002504400250440000000237412337331331020315 0ustar00dewhurstdewhurst00000000000000 ! Determination of the magnetic anisotropy energy (MAE) for Fe_(1-x)Co_x where ! x = 1/2 and the unit cell is tetragonal of L1_0 type. ! The MAE is determined from a set of fixed spin moment direction calculations ! performed automatically with task = 28. The number of direction points used is ! given by the parameter 'npmae'. The estimation becomes more accurate as the ! number of points increases, but the calculation takes longer. The MAE is also ! strongly dependent on the number of k-points, the number used in this example ! is insufficient for a reliable result. tasks 28 ! number of magnetisation direction points; the estimate of the MAE improves ! with the number of points; in this case, the symmetry-reduced cardinal ! directions are used npmae -1 ! high-quality calculation but with small k-point set highq .true. autokpt .false. ngridk 4 4 4 swidth 0.01 mixtype 3 ! artificial strained lattice avec 0.5 0.5 0.0 0.0 1.0 0.0 0.0 0.0 1.0 scale1 6.8 scale2 6.8 scale3 7.0 sppath '../../species/' atoms 2 : nspecies 'Fe.in' : spfname 1 : natoms; atposl below 0.0 0.0 0.0 'Co.in' 1 0.0 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Al0000644002504400250440000000005012337331331015503 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al/0000755002504400250440000000000012337331331016324 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Al/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331016663 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al/elk.in0000644002504400250440000000127212337331331017431 0ustar00dewhurstdewhurst00000000000000 ! Ground state of aluminium. Try calculating the density of states by using ! tasks=10 tasks 0 ! You can add notes to the INFO.OUT file using the "notes" block notes Simple calculation of the ground state of aluminium. Must check convergence with respect to k-point set later. Run by H. Golightly avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.8267 ! this is the relative path to the species files sppath '../../species/' atoms 1 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 vkloff 0.5 0.5 0.5 elk-2.3.22/examples/PaxHeaders.22528/Os-convergence0000644002504400250440000000005012337331331020024 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Os-convergence/0000755002504400250440000000000012337331331020645 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Os-convergence/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021204 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Os-convergence/elk.in0000644002504400250440000000233212337331331021750 0ustar00dewhurstdewhurst00000000000000 ! Input file for a very well convered hcp osmium calculation. This is the result ! of very careful comparisons with Wien2k to determine the true GGA equilibrium ! volume and bulk modulus. With thanks to Maric Dulak. ! See: https://sourceforge.net/p/elk/discussion/897820/thread/aecdbcf1/#cb4d tasks 0 spinorb .true. mixtype 3 epspot 1.e-7 xctype 20 rgkmax 8.5 gmaxvr 18.0 lmaxapw 10 lmaxvr 8 lmaxmat 10 fracinr 0.01 ngridk 12 12 12 swidth 0.001 stype 1 ! parameters used on Elk forum avec 5.21365943 0.00000000 0.00000000 2.60682972 4.51516152 0.00000000 0.00000000 0.00000000 8.23342262 ! Journal of Physics: Conference Series 410 (2013) 012049 !avec ! 5.23321858 0.00000000 0.00000000 ! 2.61660929 4.53210023 0.00000000 ! 0.00000000 0.00000000 8.25356786 atoms 1 'Os.in' 2 0.00000000000000 0.00000000000000 0.0 0.33333333333333 0.33333333333333 0.5 ecvcut -3.5 species 76 'Os' 'osmium' 190.23 2.4 22 1 0 1 2 2 0 1 2 2 1 1 2 2 1 2 4 3 0 1 2 3 1 1 2 3 1 2 4 3 2 2 4 3 2 3 6 4 0 1 2 4 1 1 2 4 1 2 4 4 2 2 4 4 2 3 6 4 3 3 6 4 3 4 8 5 0 1 2 5 1 1 2 5 1 2 4 5 2 2 4 5 2 3 2 6 0 1 2 elk-2.3.22/examples/PaxHeaders.22528/Ge-lattice-opt0000644002504400250440000000005012337331331017725 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ge-lattice-opt/0000755002504400250440000000000012337331331020546 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ge-lattice-opt/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021105 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ge-lattice-opt/elk.in0000644002504400250440000000244512337331331021656 0ustar00dewhurstdewhurst00000000000000 ! Unit cell optimisation for Ge with the PBE functional. This is performed with ! geometric optimisation in which the lattice vectors are changed. ! Setting 'latvopt' to 1 performs full unconstrained optimisation of the lattice ! vectors. Setting it to 2 results in an iso-volumetric optimisation. In both ! cases, the atomic positions are also optimised. To constrain the atomic ! positions, set the nuclear mass to be a negative number in the species file. ! As the calculation progresses, you can plot the files TOTENERGY_OPT.OUT and ! STRESSMAX.OUT to see the change in the total energy and stress tensor. The ! modulus of the maximum force on the atoms is written to FORCEMAX.OUT. ! The updated unit cell geometry is written to GEOMETRY_OPT.OUT. The last entry ! in this file contains the final lattice parameters and atomic positions. tasks 2 ! unconstrained optimisation of the lattice vectors latvopt 1 ! PBE exchange-correlation functional xctype 20 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 5.3451 sppath '../../species/' atoms 1 : nspecies 'Ge.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfieldc 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/Si0000644002504400250440000000005012337331331015522 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Si/0000755002504400250440000000000012337331331016343 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Si/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331016702 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Si/elk.in0000644002504400250440000000145212337331331017450 0ustar00dewhurstdewhurst00000000000000 ! Band structure of silicon. The points listed after plot1d below are the ! vertices joined in the band structure. tasks 0 20 ! use Broyden mixing mixtype 3 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.25 0.5 0.625 ! These are the vertices to be joined for the band structure plot plot1d 7 200 : nvp1d, npp1d 0.0 0.0 1.0 : vlvp1d 0.5 0.5 1.0 0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.5 0.25 -0.25 0.5 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/NiO-LDA+U-FLL0000644002504400250440000000005012337331331017045 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA+U-FLL/0000755002504400250440000000000012337331331017666 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/NiO-LDA+U-FLL/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020225 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA+U-FLL/elk.in0000644002504400250440000000323312337331331020772 0ustar00dewhurstdewhurst00000000000000 ! NiO in AFMII structure with LDA+U and fully-localised-limit (FLL) double ! counting (dftu=1). Values of Slater parameters for Ni are taken from ! literature. ! Analyze total and partial DOS (t2g and eg states) and compare with bare LDA. ! Notice the increasing of the gap (~4eV) and of magnetic moment to ~1.69 u_b. ! The increasing of magnetic moment is typical of FLL double counting. ! Example by Francesco Cricchio. tasks 0 10 ! DFT+U block ! here FLL double counting is used (dftu=1) ! inpdftu=1 corresponds to provide U and J in Hartree as input ! inpdftu=2 or 3 corresponds to, respectively, Slater or Racah parameters ! inpdftu=4 or 5 corresponds to calculating the Slater parameters through a ! Yukawa potential (see example NiO-LDA+U-FLL-Ykwa and PRB 80, 035121 (2009)) dft+u 1 2 : dftu,inpdftu 1 2 0.29399 0.30078 0.18799 : is, l, f0, f2, f4 spinpol .true. scale 7.893389 avec 1.0 0.5 0.5 0.5 1.0 0.5 0.5 0.5 1.0 atoms 2 : nspecies 'Ni.in' : spfname 2 : natoms; atpos, bfcmt below 0.0 0.0 0.0 0.0 0.0 -2.0 0.5 0.5 0.5 0.0 0.0 2.0 'O.in' : spfname 2 : natoms; atpos, bfcmt below 0.25 0.25 0.25 0.0 0.0 0.0 0.75 0.75 0.75 0.0 0.0 0.0 ! the large magnetic local field on Ni is halved at every iteration ! this speeds up the convergence of magnetic calculations reducebf 0.5 ! fairly high number of empty states nempty 8 sppath '../../species/' ! this grid is too small for accurate magnetic moment ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/NiO-LDA+U-optimized0000644002504400250440000000005012337331331020434 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA+U-optimized/0000755002504400250440000000000012337331331021255 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/NiO-LDA+U-optimized/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021614 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA+U-optimized/elk.in0000644002504400250440000000375612337331331022373 0ustar00dewhurstdewhurst00000000000000 ! Optimized LDA+U calculation for NiO AFMII with only one free parameter. ! The double counting is automatically chosen by doing an interpolation ! between FLL and AMF (dftu=3). The Slater parameters are determined through ! a Yukawa potential. Hence there is only one free parameter, the potential ! screening length lambda (see PRB 80, 035121 (2009)). Here lambda=1.5 ! provides realistic values of Slater parameters which are printed in FDU.OUT. ! Try to plot the magnetic moment as function of lambda. ! Analyze total and partial DOS (t2g and eg states) and compare with bare LDA. ! Look at the file ALPHADU.OUT where the interpolation factor is printed out. ! (see PRB 67, 153106 (2003)). Such a factor is about 0.5 for NiO. ! Compare the value of the interpolation factor with the example Fe-LDA+U-INT ! (weakly correlated system). ! Example by Francesco Cricchio. tasks 0 10 ! DFT+U block ! here an interpolation between AMF and FLL double counting is used (dftu=3) ! inpdftu=4 corresponds to calculate the Slater parameters through a Yukawa ! potential with screening length lambda, which constitutes the only free ! parameter in the calculation dft+u 3 4 : dftu, inpdftu 1 2 1.5 : is, l, lambda spinpol .true. scale 7.893389 avec 1.0 0.5 0.5 0.5 1.0 0.5 0.5 0.5 1.0 atoms 2 : nspecies 'Ni.in' : spfname 2 : natoms; atpos, bfcmt below 0.0 0.0 0.0 0.0 0.0 -2.0 0.5 0.5 0.5 0.0 0.0 2.0 'O.in' : spfname 2 : natoms; atpos, bfcmt below 0.25 0.25 0.25 0.0 0.0 0.0 0.75 0.75 0.75 0.0 0.0 0.0 ! the large magnetic local field on Ni is halved at every iteration ! this speeds up the convergence of magnetic calculations reducebf 0.5 ! fairly high number of empty states nempty 8 sppath '../../species/' ! this grid is too small for accurate magnetic moment ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/Cu-ELNES0000644002504400250440000000005012337331331016362 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Cu-ELNES/0000755002504400250440000000000012337331331017203 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Cu-ELNES/PaxHeaders.22528/Cu+.in0000644002504400250440000000005012337331331017411 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Cu-ELNES/Cu+.in0000644002504400250440000000373312337331331020163 0ustar00dewhurstdewhurst00000000000000 'Cu+' : spsymb 'copper with pseudo core-hole' : spname -29.0000 : spzn 115837.2717 : spmass 0.371391E-06 2.0000 37.1331 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 1.50000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 2.00000 F 2 1 2 4.00000 F 3 0 1 2.00000 F 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 4.00000 F 3 2 3 6.00000 F 4 0 1 1.50000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 8 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 3 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.6152 0 T 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -4.0000 0 T 1 3 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -34.0000 0 T 0 3 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -41.0000 0 T elk-2.3.22/examples/Cu-ELNES/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017542 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Cu-ELNES/elk.in0000644002504400250440000000224612337331331020312 0ustar00dewhurstdewhurst00000000000000 ! Electron loss near-edge spectroscopy for fcc Cu. Note that a special species ! file has been constructed to simulate dynamical core-hole effects by removing ! half an electron from the 1s core state (even though we are interested in the ! 2s and 2p transitions). This is a publication-quality calculation and may take ! some time to complete. ! No supercell is required because of the strong metallic screening of copper. ! Compare with Eur. Phys. J. B21, 363 (2001). tasks 0 140 ! spin-orbit coupling required for accurate description of deep valence states spinorb .true. ! maximum allowed energy for the initial state in the double differential ! cross-section formula emaxelnes -30.0 ! energy range for ELNES plot wplot 500 200 1 : nwplot, ngrkf, nswplot 33.0 37.5 : wplot (suitable for the Cu L3 edge) vecql 0.0 0.0 0.1 rgkmax 8.0 gmaxvr 14.0 nempty 20 ngridk 10 10 10 avec 0.5 0.5 0.0 0.5 0.0 0.5 0.0 0.5 0.5 scale 6.83117 atoms 1 : nspecies 'Cu+.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt elk-2.3.22/examples/PaxHeaders.22528/AlAs-fatbands0000644002504400250440000000005012337331331017547 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/AlAs-fatbands/0000755002504400250440000000000012337331331020370 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/AlAs-fatbands/PaxHeaders.22528/AlAs.par0000644002504400250440000000005012337331331021150 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/AlAs-fatbands/AlAs.par0000644002504400250440000000551112337331331021716 0ustar00dewhurstdewhurst00000000000000 world 0.0, -0.25, 1.113445717, 0.5 title "AlAs band structure" subtitle "(atomic character of As)" xaxis tick off xaxis ticklabel off yaxis tick major 0.1 yaxis tick minor ticks 2 yaxis label "Energy (Hartree)" s0.y1=0.05*s0.y1 s1.y1=0.05*s1.y1 s2.y1=0.05*s2.y1 s3.y1=0.05*s3.y1 s4.y1=0.05*s4.y1 s5.y1=0.05*s5.y1 s6.y1=0.05*s6.y1 s7.y1=0.05*s7.y1 s8.y1=0.05*s8.y1 s9.y1=0.05*s9.y1 s10.y1=0.05*s10.y1 s11.y1=0.05*s11.y1 s12.y1=0.05*s12.y1 s13.y1=0.05*s13.y1 s14.y1=0.05*s14.y1 s15.y1=0.05*s15.y1 s16.y1=0.05*s16.y1 s17.y1=0.05*s17.y1 s18.y1=0.05*s18.y1 s19.y1=0.05*s19.y1 s20.y1=0.05*s20.y1 s21.y1=0.05*s21.y1 s22.y1=0.05*s22.y1 s0 line type 0 s1 line type 0 s2 line type 0 s3 line type 0 s4 line type 0 s5 line type 0 s6 line type 0 s7 line type 0 s8 line type 0 s9 line type 0 s10 line type 0 s11 line type 0 s12 line type 0 s13 line type 0 s14 line type 0 s15 line type 0 s16 line type 0 s17 line type 0 s18 line type 0 s19 line type 0 s20 line type 0 s21 line type 0 s22 line type 0 s0 errorbar linestyle 0 s1 errorbar linestyle 0 s2 errorbar linestyle 0 s3 errorbar linestyle 0 s4 errorbar linestyle 0 s5 errorbar linestyle 0 s6 errorbar linestyle 0 s7 errorbar linestyle 0 s8 errorbar linestyle 0 s9 errorbar linestyle 0 s10 errorbar linestyle 0 s11 errorbar linestyle 0 s12 errorbar linestyle 0 s13 errorbar linestyle 0 s14 errorbar linestyle 0 s15 errorbar linestyle 0 s16 errorbar linestyle 0 s17 errorbar linestyle 0 s18 errorbar linestyle 0 s19 errorbar linestyle 0 s20 errorbar linestyle 0 s21 errorbar linestyle 0 s22 errorbar linestyle 0 s0 errorbar riser linewidth 3.5 s1 errorbar riser linewidth 3.5 s2 errorbar riser linewidth 3.5 s3 errorbar riser linewidth 3.5 s4 errorbar riser linewidth 3.5 s5 errorbar riser linewidth 3.5 s6 errorbar riser linewidth 3.5 s7 errorbar riser linewidth 3.5 s8 errorbar riser linewidth 3.5 s9 errorbar riser linewidth 3.5 s10 errorbar riser linewidth 3.5 s11 errorbar riser linewidth 3.5 s12 errorbar riser linewidth 3.5 s13 errorbar riser linewidth 3.5 s14 errorbar riser linewidth 3.5 s15 errorbar riser linewidth 3.5 s16 errorbar riser linewidth 3.5 s17 errorbar riser linewidth 3.5 s18 errorbar riser linewidth 3.5 s19 errorbar riser linewidth 3.5 s20 errorbar riser linewidth 3.5 s21 errorbar riser linewidth 3.5 s22 errorbar riser linewidth 3.5 s0 errorbar color 1 s1 errorbar color 1 s2 errorbar color 1 s3 errorbar color 1 s4 errorbar color 1 s5 errorbar color 1 s6 errorbar color 1 s7 errorbar color 1 s8 errorbar color 1 s9 errorbar color 1 s10 errorbar color 1 s11 errorbar color 1 s12 errorbar color 1 s13 errorbar color 1 s14 errorbar color 1 s15 errorbar color 1 s16 errorbar color 1 s17 errorbar color 1 s18 errorbar color 1 s19 errorbar color 1 s20 errorbar color 1 s21 errorbar color 1 s22 errorbar color 1 s23 line color 1 s24 line color 1 s25 line color 1 s23 linewidth 2.0 s24 linewidth 2.0 s25 linewidth 2.0 elk-2.3.22/examples/AlAs-fatbands/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020727 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/AlAs-fatbands/elk.in0000644002504400250440000000165112337331331021476 0ustar00dewhurstdewhurst00000000000000 ! Band structure of AlAs which produces a band-structure with line thickness ! proportional to the atomic character. You can produce the plot by running ! ! xmgrace -settype xydy BAND_S02_A0001.OUT -settype xy BANDLINES.OUT -param AlAs.par ! ! You can change the graph appearance either in xmgrace or by editing AlAs.par tasks 0 21 nempty 8 plot1d 3 200 : nvp1d, npp1d 0.5 0.0 0.0 : vlvp1d 0.0 0.0 0.0 0.5 0.5 0.0 avec 0.5 0.5 0.0 0.5 0.0 0.5 0.0 0.5 0.5 scale 10.53 sppath '../../species/' atoms 2 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfieldc 'As.in' : spfname 1 : natoms 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/Fe-spiral-supercell0000644002504400250440000000005012337331331020765 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe-spiral-supercell/0000755002504400250440000000000012337331331021606 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-spiral-supercell/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331022145 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe-spiral-supercell/elk.in0000644002504400250440000000220112337331331022704 0ustar00dewhurstdewhurst00000000000000 ! Spin-spiral state for Gamma-Fe calculated supercells instead of the spiral ! Bloch state anzatz. This is required for functionals which do not preserve ! the anzatz self-consistently. ! The code runs in the same way as the phonon supercell calculations. The ! supercells are generated automatically from the q-points given by ngridq. Like ! phonons, several instances of the code can be started in the same directory, ! allowing for parallel generation of the q-dependent ground-states. ! Note that automatic k-point generation is always enabled for this task. tasks 350 ! q-point set on which the spiral ground-states are to be computed ngridq 2 2 2 nempty 8 rgkmax 6.0 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.375 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 -2.0 0.0 0.0 : atposl, bfcmt ! reduce the external B-field at each s.c. cycle reducebf 0.85 ! define a fixed spin direction in the muffin-tin fsmtype -2 mommtfix 1 1 1.0 0.0 0.0 elk-2.3.22/examples/PaxHeaders.22528/Al-phonon-DFPT0000644002504400250440000000005012337331331017535 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al-phonon-DFPT/0000755002504400250440000000000012337331331020356 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Al-phonon-DFPT/PaxHeaders.22528/PHDISP.OUT0000644002504400250440000000005012337331331021172 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al-phonon-DFPT/PHDISP.OUT0000644002504400250440000005331212337331331021742 0ustar00dewhurstdewhurst00000000000000 0.000000000 0.2693020653E-10 0.1345846785E-01 0.1507685009E-04 0.2691693569E-01 0.3024971500E-04 0.4037540354E-01 0.4561082574E-04 0.5383387139E-01 0.6124509381E-04 0.6729233924E-01 0.7722703995E-04 0.8075080708E-01 0.9361834731E-04 0.9420927493E-01 0.1104661297E-03 0.1076677428 0.1278019365E-03 0.1211262106 0.1456414559E-03 0.1345846785 0.1639848385E-03 0.1480431463 0.1828175356E-03 0.1615016142 0.2021115403E-03 0.1749600820 0.2218269247E-03 0.1884185499 0.2419135732E-03 0.2018770177 0.2623130312E-03 0.2153354856 0.2829604005E-03 0.2287939534 0.3037862273E-03 0.2422524213 0.3247183402E-03 0.2557108891 0.3456836059E-03 0.2691693569 0.3666095729E-03 0.2826278248 0.3874259851E-03 0.2960862926 0.4080661441E-03 0.3095447605 0.4284681050E-03 0.3230032283 0.4485756919E-03 0.3364616962 0.4683393211E-03 0.3499201640 0.4877166199E-03 0.3633786319 0.5066728339E-03 0.3768370997 0.5251810158E-03 0.3902955676 0.5432219929E-03 0.4037540354 0.5607841150E-03 0.4172125033 0.5778627874E-03 0.4306709711 0.5944598000E-03 0.4441294390 0.6105824710E-03 0.4575879068 0.6262426258E-03 0.4710463747 0.6414554429E-03 0.4845048425 0.6562382020E-03 0.4979633104 0.6706089735E-03 0.5114217782 0.6845852974E-03 0.5248802460 0.6981828959E-03 0.5383387139 0.7114144698E-03 0.5517971817 0.7242886227E-03 0.5652556496 0.7368089559E-03 0.5787141174 0.7489733679E-03 0.5921725853 0.7607735851E-03 0.6056310531 0.7721949414E-03 0.6190895210 0.7832164113E-03 0.6325479888 0.7938108931E-03 0.6460064567 0.8039457267E-03 0.6594649245 0.8135834232E-03 0.6729233924 0.8226825751E-03 0.6863818602 0.8311989100E-03 0.6998403281 0.8390864497E-03 0.7132987959 0.8462987311E-03 0.7267572638 0.8527900500E-03 0.7402157316 0.8585166863E-03 0.7536741994 0.8634380743E-03 0.7671326673 0.8675178855E-03 0.7805911351 0.8707249936E-03 0.7940496030 0.8730342979E-03 0.8075080708 0.8744273837E-03 0.8209665387 0.8748930061E-03 0.8346256212 0.8747056726E-03 0.8482847037 0.8741442237E-03 0.8619437862 0.8732103099E-03 0.8756028687 0.8719066676E-03 0.8892619512 0.8702370971E-03 0.9029210337 0.8682064325E-03 0.9165801162 0.8658205026E-03 0.9302391988 0.8630860843E-03 0.9438982813 0.8600108473E-03 0.9575573638 0.8566032914E-03 0.9712164463 0.8528726766E-03 0.9848755288 0.8488289455E-03 0.9985346113 0.8444826398E-03 1.012193694 0.8398448110E-03 1.025852776 0.8349269247E-03 1.039511859 0.8297407609E-03 1.053170941 0.8242983102E-03 1.066830024 0.8186116667E-03 1.080489106 0.8126929182E-03 1.094148189 0.8065540358E-03 1.107807271 0.8002067625E-03 1.121466354 0.7936625026E-03 1.135125436 0.7869322138E-03 1.148784519 0.7800263009E-03 1.162443601 0.7729545155E-03 1.176102684 0.7657258598E-03 1.189761766 0.7583484978E-03 1.203420849 0.7508296747E-03 1.217079931 0.7431756443E-03 1.230739014 0.7353916081E-03 1.244398096 0.7274816637E-03 1.258057179 0.7194487666E-03 1.271716261 0.7112947039E-03 1.285375344 0.7030200811E-03 1.299034427 0.6946243231E-03 1.312693509 0.6861056875E-03 1.326352592 0.6774612934E-03 1.340011674 0.6686871619E-03 1.353670757 0.6597782703E-03 1.367329839 0.6507286186E-03 1.380988922 0.6415313072E-03 1.394648004 0.6321786255E-03 1.408307087 0.6226621487E-03 1.421966169 0.6129728444E-03 1.435625252 0.6031011842E-03 1.449284334 0.5930372615E-03 1.462943417 0.5827709133E-03 1.476602499 0.5722918432E-03 1.490261582 0.5615897470E-03 1.503920664 0.5506544361E-03 1.517579747 0.5394759604E-03 1.531238829 0.5280447275E-03 1.544897912 0.5163516178E-03 1.558556994 0.5043880940E-03 1.572216077 0.4921463052E-03 1.585875159 0.4796191835E-03 1.599534242 0.4668005325E-03 1.613193324 0.4536851085E-03 1.626852407 0.4402686925E-03 1.640511489 0.4265481534E-03 1.654170572 0.4125215016E-03 1.667829654 0.3981879338E-03 1.681488737 0.3835478683E-03 1.695147819 0.3686029711E-03 1.708806902 0.3533561723E-03 1.722465984 0.3378116742E-03 1.736125067 0.3219749500E-03 1.749784149 0.3058527350E-03 1.763443232 0.2894530084E-03 1.777102314 0.2727849683E-03 1.790761397 0.2558589985E-03 1.804420479 0.2386866292E-03 1.818079562 0.2212804900E-03 1.831738644 0.2036542577E-03 1.845397727 0.1858225977E-03 1.859056809 0.1678011000E-03 1.872715892 0.1496062113E-03 1.886374974 0.1312551612E-03 1.900034057 0.1127658857E-03 1.913693139 0.9415694635E-04 1.927352222 0.7544744689E-04 1.941011304 0.5665694663E-04 1.954670387 0.3780537215E-04 1.968329469 0.1891292697E-04 1.981988552 0.2693020653E-10 1.995403229 0.1940073340E-04 2.008817906 0.3877123680E-04 2.022232583 0.5808139601E-04 2.035647260 0.7730132807E-04 2.049061937 0.9640149534E-04 2.062476614 0.1153528181E-03 2.075891291 0.1341267850E-03 2.089305968 0.1526955605E-03 2.102720644 0.1710320893E-03 2.116135321 0.1891101969E-03 2.129549998 0.2069046857E-03 2.142964675 0.2243914264E-03 2.156379352 0.2415474438E-03 2.169794029 0.2583509970E-03 2.183208706 0.2747816529E-03 2.196623383 0.2908203529E-03 2.210038060 0.3064494729E-03 2.223452737 0.3216528740E-03 2.236867414 0.3364159471E-03 2.250282091 0.3507256467E-03 2.263696768 0.3645705172E-03 2.277111445 0.3779407094E-03 2.290526122 0.3908279869E-03 2.303940799 0.4032257232E-03 2.317355476 0.4151288880E-03 2.330770153 0.4265340234E-03 2.344184830 0.4374392097E-03 2.357599506 0.4478440203E-03 2.371014183 0.4577494660E-03 2.384428860 0.4671579293E-03 2.397843537 0.4760730880E-03 2.411258214 0.4844998287E-03 2.424672891 0.4924441510E-03 2.438087568 0.4999130625E-03 2.451502245 0.5069144651E-03 2.464916922 0.5134570338E-03 2.478331599 0.5195500887E-03 2.491746276 0.5252034611E-03 2.505160953 0.5304273548E-03 2.518575630 0.5352322045E-03 2.531990307 0.5396285318E-03 2.545404984 0.5436268008E-03 2.558819661 0.5472372753E-03 2.572234338 0.5504698784E-03 2.585649015 0.5533340567E-03 2.599063691 0.5558386509E-03 2.612478368 0.5579917745E-03 2.625893045 0.5598007021E-03 2.639307722 0.5612717688E-03 2.652722399 0.5624102826E-03 2.666137076 0.5632204504E-03 2.679551753 0.5637053200E-03 2.692966430 0.5638667371E-03 0.000000000 0.2693020653E-10 0.1345846785E-01 0.1507685009E-04 0.2691693569E-01 0.3024971500E-04 0.4037540354E-01 0.4561082574E-04 0.5383387139E-01 0.6124509381E-04 0.6729233924E-01 0.7722703995E-04 0.8075080708E-01 0.9361834731E-04 0.9420927493E-01 0.1104661297E-03 0.1076677428 0.1278019365E-03 0.1211262106 0.1456414559E-03 0.1345846785 0.1639848385E-03 0.1480431463 0.1828175356E-03 0.1615016142 0.2021115403E-03 0.1749600820 0.2218269247E-03 0.1884185499 0.2419135732E-03 0.2018770177 0.2623130312E-03 0.2153354856 0.2829604005E-03 0.2287939534 0.3037862273E-03 0.2422524213 0.3247183402E-03 0.2557108891 0.3456836059E-03 0.2691693569 0.3666095729E-03 0.2826278248 0.3874259851E-03 0.2960862926 0.4080661441E-03 0.3095447605 0.4284681050E-03 0.3230032283 0.4485756919E-03 0.3364616962 0.4683393211E-03 0.3499201640 0.4877166199E-03 0.3633786319 0.5066728339E-03 0.3768370997 0.5251810158E-03 0.3902955676 0.5432219929E-03 0.4037540354 0.5607841150E-03 0.4172125033 0.5778627874E-03 0.4306709711 0.5944598000E-03 0.4441294390 0.6105824710E-03 0.4575879068 0.6262426258E-03 0.4710463747 0.6414554429E-03 0.4845048425 0.6562382020E-03 0.4979633104 0.6706089735E-03 0.5114217782 0.6845852974E-03 0.5248802460 0.6981828959E-03 0.5383387139 0.7114144698E-03 0.5517971817 0.7242886227E-03 0.5652556496 0.7368089559E-03 0.5787141174 0.7489733679E-03 0.5921725853 0.7607735851E-03 0.6056310531 0.7721949414E-03 0.6190895210 0.7832164113E-03 0.6325479888 0.7938108931E-03 0.6460064567 0.8039457267E-03 0.6594649245 0.8135834232E-03 0.6729233924 0.8226825751E-03 0.6863818602 0.8311989100E-03 0.6998403281 0.8390864497E-03 0.7132987959 0.8462987311E-03 0.7267572638 0.8527900500E-03 0.7402157316 0.8585166863E-03 0.7536741994 0.8634380743E-03 0.7671326673 0.8675178855E-03 0.7805911351 0.8707249936E-03 0.7940496030 0.8730342979E-03 0.8075080708 0.8744273837E-03 0.8209665387 0.8748930061E-03 0.8346256212 0.8756690869E-03 0.8482847037 0.8779880638E-03 0.8619437862 0.8818224151E-03 0.8756028687 0.8871271700E-03 0.8892619512 0.8938411888E-03 0.9029210337 0.9018888279E-03 0.9165801162 0.9111818830E-03 0.9302391988 0.9216216960E-03 0.9438982813 0.9331013145E-03 0.9575573638 0.9455076072E-03 0.9712164463 0.9587232581E-03 0.9848755288 0.9726285805E-03 0.9985346113 0.9871031197E-03 1.012193694 0.1002027025E-02 1.025852776 0.1017282191E-02 1.039511859 0.1032753186E-02 1.053170941 0.1048327973E-02 1.066830024 0.1063898460E-02 1.080489106 0.1079360899E-02 1.094148189 0.1094616155E-02 1.107807271 0.1109569874E-02 1.121466354 0.1124132571E-02 1.135125436 0.1138219645E-02 1.148784519 0.1151751356E-02 1.162443601 0.1164652760E-02 1.176102684 0.1176853615E-02 1.189761766 0.1181718696E-02 1.203420849 0.1161579445E-02 1.217079931 0.1141224943E-02 1.230739014 0.1120693909E-02 1.244398096 0.1100023696E-02 1.258057179 0.1079250070E-02 1.271716261 0.1058407001E-02 1.285375344 0.1037526451E-02 1.299034427 0.1016638188E-02 1.312693509 0.9957696070E-03 1.326352592 0.9749455642E-03 1.340011674 0.9541882391E-03 1.353670757 0.9335170126E-03 1.367329839 0.9129483708E-03 1.380988922 0.8924958365E-03 1.394648004 0.8721699280E-03 1.408307087 0.8519781489E-03 1.421966169 0.8319250093E-03 1.435625252 0.8120120793E-03 1.449284334 0.7922380745E-03 1.462943417 0.7725989744E-03 1.476602499 0.7530881711E-03 1.490261582 0.7336966476E-03 1.503920664 0.7144131832E-03 1.517579747 0.6952245830E-03 1.531238829 0.6761159289E-03 1.544897912 0.6570708465E-03 1.558556994 0.6380717866E-03 1.572216077 0.6191003138E-03 1.585875159 0.6001374006E-03 1.599534242 0.5811637206E-03 1.613193324 0.5621599374E-03 1.626852407 0.5431069854E-03 1.640511489 0.5239863372E-03 1.654170572 0.5047802568E-03 1.667829654 0.4854720327E-03 1.681488737 0.4660461913E-03 1.695147819 0.4464886862E-03 1.708806902 0.4267870634E-03 1.722465984 0.4069306012E-03 1.736125067 0.3869104235E-03 1.749784149 0.3667195876E-03 1.763443232 0.3463531450E-03 1.777102314 0.3258081780E-03 1.790761397 0.3050838103E-03 1.804420479 0.2841811952E-03 1.818079562 0.2631034810E-03 1.831738644 0.2418557549E-03 1.845397727 0.2204449680E-03 1.859056809 0.1988798422E-03 1.872715892 0.1771707603E-03 1.886374974 0.1553296414E-03 1.900034057 0.1333698032E-03 1.913693139 0.1113058121E-03 1.927352222 0.8915332359E-04 1.941011304 0.6692891379E-04 1.954670387 0.4464990374E-04 1.968329469 0.2233417819E-04 1.981988552 0.2693020653E-10 1.995403229 0.1940073340E-04 2.008817906 0.3877123680E-04 2.022232583 0.5808139601E-04 2.035647260 0.7730132807E-04 2.049061937 0.9640149534E-04 2.062476614 0.1153528181E-03 2.075891291 0.1341267850E-03 2.089305968 0.1526955605E-03 2.102720644 0.1710320893E-03 2.116135321 0.1891101969E-03 2.129549998 0.2069046857E-03 2.142964675 0.2243914264E-03 2.156379352 0.2415474438E-03 2.169794029 0.2583509970E-03 2.183208706 0.2747816529E-03 2.196623383 0.2908203529E-03 2.210038060 0.3064494729E-03 2.223452737 0.3216528740E-03 2.236867414 0.3364159471E-03 2.250282091 0.3507256467E-03 2.263696768 0.3645705172E-03 2.277111445 0.3779407094E-03 2.290526122 0.3908279869E-03 2.303940799 0.4032257232E-03 2.317355476 0.4151288880E-03 2.330770153 0.4265340234E-03 2.344184830 0.4374392097E-03 2.357599506 0.4478440203E-03 2.371014183 0.4577494660E-03 2.384428860 0.4671579293E-03 2.397843537 0.4760730880E-03 2.411258214 0.4844998287E-03 2.424672891 0.4924441510E-03 2.438087568 0.4999130625E-03 2.451502245 0.5069144651E-03 2.464916922 0.5134570338E-03 2.478331599 0.5195500887E-03 2.491746276 0.5252034611E-03 2.505160953 0.5304273548E-03 2.518575630 0.5352322045E-03 2.531990307 0.5396285318E-03 2.545404984 0.5436268008E-03 2.558819661 0.5472372753E-03 2.572234338 0.5504698784E-03 2.585649015 0.5533340567E-03 2.599063691 0.5558386509E-03 2.612478368 0.5579917745E-03 2.625893045 0.5598007021E-03 2.639307722 0.5612717688E-03 2.652722399 0.5624102826E-03 2.666137076 0.5632204504E-03 2.679551753 0.5637053200E-03 2.692966430 0.5638667371E-03 0.000000000 0.2693020653E-10 0.1345846785E-01 0.3608013939E-04 0.2691693569E-01 0.7218148424E-04 0.4037540354E-01 0.1083232391E-03 0.5383387139E-01 0.1445206951E-03 0.6729233924E-01 0.1807834902E-03 0.8075080708E-01 0.2171141147E-03 0.9420927493E-01 0.2535067253E-03 0.1076677428 0.2899463096E-03 0.1211262106 0.3264082328E-03 0.1345846785 0.3628581747E-03 0.1480431463 0.3992524535E-03 0.1615016142 0.4355387167E-03 0.1749600820 0.4716569673E-03 0.1884185499 0.5075408846E-03 0.2018770177 0.5431193908E-03 0.2153354856 0.5783184103E-03 0.2287939534 0.6130627649E-03 0.2422524213 0.6472781468E-03 0.2557108891 0.6808931113E-03 0.2691693569 0.7138410301E-03 0.2826278248 0.7460619496E-03 0.2960862926 0.7775042988E-03 0.3095447605 0.8081263933E-03 0.3230032283 0.8378976859E-03 0.3364616962 0.8667997182E-03 0.3499201640 0.8948267308E-03 0.3633786319 0.9219858960E-03 0.3768370997 0.9482971462E-03 0.3902955676 0.9737925781E-03 0.4037540354 0.9985154269E-03 0.4172125033 0.1022518615E-02 0.4306709711 0.1045862898E-02 0.4441294390 0.1068614656E-02 0.4575879068 0.1090843365E-02 0.4710463747 0.1112618860E-02 0.4845048425 0.1134008446E-02 0.4979633104 0.1155073987E-02 0.5114217782 0.1175869080E-02 0.5248802460 0.1196436429E-02 0.5383387139 0.1216805530E-02 0.5517971817 0.1236990786E-02 0.5652556496 0.1256990111E-02 0.5787141174 0.1276784102E-02 0.5921725853 0.1296335814E-02 0.6056310531 0.1315591133E-02 0.6190895210 0.1334479729E-02 0.6325479888 0.1352916553E-02 0.6460064567 0.1370803796E-02 0.6594649245 0.1388033240E-02 0.6729233924 0.1404488899E-02 0.6863818602 0.1420049866E-02 0.6998403281 0.1434593264E-02 0.7132987959 0.1447997214E-02 0.7267572638 0.1460143744E-02 0.7402157316 0.1470921551E-02 0.7536741994 0.1480228575E-02 0.7671326673 0.1487974317E-02 0.7805911351 0.1494081865E-02 0.7940496030 0.1498489593E-02 0.8075080708 0.1501152502E-02 0.8209665387 0.1502043204E-02 0.8346256212 0.1501527159E-02 0.8482847037 0.1499980421E-02 0.8619437862 0.1497407179E-02 0.8756028687 0.1493814393E-02 0.8892619512 0.1489211769E-02 0.9029210337 0.1483611720E-02 0.9165801162 0.1477029311E-02 0.9302391988 0.1469482201E-02 0.9438982813 0.1460990569E-02 0.9575573638 0.1451577030E-02 0.9712164463 0.1441266540E-02 0.9848755288 0.1430086289E-02 0.9985346113 0.1418065588E-02 1.012193694 0.1405235741E-02 1.025852776 0.1391629904E-02 1.039511859 0.1377282945E-02 1.053170941 0.1362231282E-02 1.066830024 0.1346512718E-02 1.080489106 0.1330166268E-02 1.094148189 0.1313231970E-02 1.107807271 0.1295750697E-02 1.121466354 0.1277763956E-02 1.135125436 0.1259313679E-02 1.148784519 0.1240442011E-02 1.162443601 0.1221191093E-02 1.176102684 0.1201602836E-02 1.189761766 0.1188288275E-02 1.203420849 0.1198895571E-02 1.217079931 0.1208618683E-02 1.230739014 0.1217405013E-02 1.244398096 0.1225206056E-02 1.258057179 0.1231977271E-02 1.271716261 0.1237677957E-02 1.285375344 0.1242271137E-02 1.299034427 0.1245723435E-02 1.312693509 0.1248004970E-02 1.326352592 0.1249089246E-02 1.340011674 0.1248953048E-02 1.353670757 0.1247576345E-02 1.367329839 0.1244942194E-02 1.380988922 0.1241036648E-02 1.394648004 0.1235848664E-02 1.408307087 0.1229370022E-02 1.421966169 0.1221595236E-02 1.435625252 0.1212521475E-02 1.449284334 0.1202148484E-02 1.462943417 0.1190478502E-02 1.476602499 0.1177516189E-02 1.490261582 0.1163268547E-02 1.503920664 0.1147744848E-02 1.517579747 0.1130956561E-02 1.531238829 0.1112917275E-02 1.544897912 0.1093642633E-02 1.558556994 0.1073150256E-02 1.572216077 0.1051459674E-02 1.585875159 0.1028592258E-02 1.599534242 0.1004571149E-02 1.613193324 0.9794211882E-03 1.626852407 0.9531688509E-03 1.640511489 0.9258421786E-03 1.654170572 0.8974707119E-03 1.667829654 0.8680854243E-03 1.681488737 0.8377186573E-03 1.695147819 0.8064040547E-03 1.708806902 0.7741764992E-03 1.722465984 0.7410720486E-03 1.736125067 0.7071278736E-03 1.749784149 0.6723821955E-03 1.763443232 0.6368742252E-03 1.777102314 0.6006441030E-03 1.790761397 0.5637328388E-03 1.804420479 0.5261822536E-03 1.818079562 0.4880349210E-03 1.831738644 0.4493341101E-03 1.845397727 0.4101237290E-03 1.859056809 0.3704482689E-03 1.872715892 0.3303527484E-03 1.886374974 0.2898826593E-03 1.900034057 0.2490839124E-03 1.913693139 0.2080027838E-03 1.927352222 0.1666858619E-03 1.941011304 0.1251799949E-03 1.954670387 0.8353223802E-04 1.968329469 0.4178980176E-04 1.981988552 0.2693020653E-10 1.995403229 0.3875837993E-04 2.008817906 0.7750166322E-04 2.022232583 0.1162146015E-03 2.035647260 0.1548816445E-03 2.049061937 0.1934867941E-03 2.062476614 0.2320134630E-03 2.075891291 0.2704443412E-03 2.089305968 0.3087612701E-03 2.102720644 0.3469451279E-03 2.116135321 0.3849757257E-03 2.129549998 0.4228317157E-03 2.142964675 0.4604905141E-03 2.156379352 0.4979282377E-03 2.169794029 0.5351196553E-03 2.183208706 0.5720381551E-03 2.196623383 0.6086557283E-03 2.210038060 0.6449429672E-03 2.223452737 0.6808690808E-03 2.236867414 0.7164019252E-03 2.250282091 0.7515080494E-03 2.263696768 0.7861527563E-03 2.277111445 0.8203001770E-03 2.290526122 0.8539133600E-03 2.303940799 0.8869543716E-03 2.317355476 0.9193844085E-03 2.330770153 0.9511639216E-03 2.344184830 0.9822527485E-03 2.357599506 0.1012610255E-02 2.371014183 0.1042195484E-02 2.384428860 0.1070967312E-02 2.397843537 0.1098884605E-02 2.411258214 0.1125906388E-02 2.424672891 0.1151992007E-02 2.438087568 0.1177101300E-02 2.451502245 0.1201194764E-02 2.464916922 0.1224233725E-02 2.478331599 0.1246180501E-02 2.491746276 0.1266998568E-02 2.505160953 0.1286652718E-02 2.518575630 0.1305109214E-02 2.531990307 0.1322335940E-02 2.545404984 0.1338302541E-02 2.558819661 0.1352980561E-02 2.572234338 0.1366343572E-02 2.585649015 0.1378367285E-02 2.599063691 0.1389029666E-02 2.612478368 0.1398311035E-02 2.625893045 0.1406194148E-02 2.639307722 0.1412664284E-02 2.652722399 0.1417709305E-02 2.666137076 0.1421319713E-02 2.679551753 0.1423488692E-02 2.692966430 0.1424212142E-02 elk-2.3.22/examples/Al-phonon-DFPT/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020715 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al-phonon-DFPT/elk.in0000644002504400250440000000150212337331331021457 0ustar00dewhurstdewhurst00000000000000 ! Phonon dispersion of aluminium calculated with density functional perturbation ! theory. ! (A well-converged phonon dispersion using a 4x4x4 q-point set and a 12x12x12 ! k-point set is included with this example) tasks 0 205 220 ! q-point grid (should be commensurate with the k-point grid) ngridq 2 2 2 ! vertices for dispersion plot plot1d 4 200 : nvp1d, npp1d 0.0 0.0 0.0 : vlvp1d 0.5 0.5 0.0 1.0 0.0 0.0 0.5 0.0 0.0 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.8267 sppath '../../species/' atoms 1 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 elk-2.3.22/examples/Al-phonon-DFPT/PaxHeaders.22528/PHDLINES.OUT0000644002504400250440000000005012337331331021411 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Al-phonon-DFPT/PHDLINES.OUT0000644002504400250440000000050012337331331022150 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.1126532403E-02 0.000000000 0.2253064807E-02 0.8209665387 -0.1126532403E-02 0.8209665387 0.2253064807E-02 1.981988552 -0.1126532403E-02 1.981988552 0.2253064807E-02 2.692966430 -0.1126532403E-02 2.692966430 0.2253064807E-02 elk-2.3.22/examples/PaxHeaders.22528/diamond-rho3D0000644002504400250440000000005012337331331017537 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/diamond-rho3D/0000755002504400250440000000000012337331331020360 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/diamond-rho3D/PaxHeaders.22528/rho3d.net0000644002504400250440000000005012337331331021343 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/diamond-rho3D/rho3d.net0000644002504400250440000003450212337331331022113 0ustar00dewhurstdewhurst00000000000000// // time: Fri Sep 26 23:37:42 2008 // // version: 3.2.0 (format), 4.4.0 (DX) // // // MODULE main // workspace: width = 298, height = 472 // layout: snap = 0, width = 50, height = 50, align = NN // macro main( ) -> ( ) { // // node Import[1]: x = 56, y = 47, inputs = 6, label = Import // input[1]: defaulting = 0, visible = 1, type = 32, value = "rho3d.general" // main_Import_1_out_1 = Import( main_Import_1_in_1, main_Import_1_in_2, main_Import_1_in_3, main_Import_1_in_4, main_Import_1_in_5, main_Import_1_in_6 ) [instance: 1, cache: 1]; // // node Isosurface[2]: x = 220, y = 121, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 5, value = 0.04 // main_Isosurface_2_out_1 = Isosurface( main_Import_1_out_1, main_Isosurface_2_in_2, main_Isosurface_2_in_3, main_Isosurface_2_in_4, main_Isosurface_2_in_5, main_Isosurface_2_in_6 ) [instance: 2, cache: 1]; // // node Color[1]: x = 72, y = 232, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "white" // input[4]: defaulting = 0, visible = 0, type = 32, value = "front colors" // main_Color_1_out_1 = Color( main_Isosurface_2_out_1, main_Color_1_in_2, main_Color_1_in_3, main_Color_1_in_4, main_Color_1_in_5 ) [instance: 1, cache: 1]; // // node Color[2]: x = 69, y = 316, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "orange" // input[4]: defaulting = 0, visible = 0, type = 32, value = "back colors" // main_Color_2_out_1 = Color( main_Color_1_out_1, main_Color_2_in_2, main_Color_2_in_3, main_Color_2_in_4, main_Color_2_in_5 ) [instance: 2, cache: 1]; // // node Image[4]: x = 223, y = 410, inputs = 49, label = Image // input[1]: defaulting = 0, visible = 0, type = 32, value = "Image_4" // input[4]: defaulting = 0, visible = 0, type = 1, value = 1 // input[5]: defaulting = 0, visible = 0, type = 8, value = [7.29024 7.29024 7.29024] // input[6]: defaulting = 0, visible = 0, type = 8, value = [-4.66221 51.8696 -4.66221] // input[7]: defaulting = 0, visible = 0, type = 5, value = 21.0859 // input[8]: defaulting = 0, visible = 0, type = 1, value = 640 // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.75 // input[10]: defaulting = 0, visible = 0, type = 8, value = [0 0 -1] // input[11]: defaulting = 1, visible = 0, type = 5, value = 24.9389 // input[12]: defaulting = 0, visible = 0, type = 1, value = 0 // input[14]: defaulting = 0, visible = 0, type = 1, value = 1 // input[15]: defaulting = 1, visible = 0, type = 32, value = "none" // input[16]: defaulting = 1, visible = 0, type = 32, value = "none" // input[17]: defaulting = 1, visible = 0, type = 1, value = 1 // input[18]: defaulting = 1, visible = 0, type = 1, value = 1 // input[19]: defaulting = 0, visible = 0, type = 1, value = 0 // input[29]: defaulting = 1, visible = 0, type = 3, value = 0 // input[41]: defaulting = 0, visible = 0, type = 32, value = "zoom" // depth: value = 24 // window: position = (0.0104,0.0600), size = 0.4542x0.5800, screen = 0 // internal caching: 1 // main_Image_4_out_1, main_Image_4_out_2, main_Image_4_out_3 = Image( main_Image_4_in_1, main_Color_2_out_1, main_Image_4_in_3, main_Image_4_in_4, main_Image_4_in_5, main_Image_4_in_6, main_Image_4_in_7, main_Image_4_in_8, main_Image_4_in_9, main_Image_4_in_10, main_Image_4_in_11, main_Image_4_in_12, main_Image_4_in_13, main_Image_4_in_14, main_Image_4_in_15, main_Image_4_in_16, main_Image_4_in_17, main_Image_4_in_18, main_Image_4_in_19, main_Image_4_in_20, main_Image_4_in_21, main_Image_4_in_22, main_Image_4_in_23, main_Image_4_in_24, main_Image_4_in_25, main_Image_4_in_26, main_Image_4_in_27, main_Image_4_in_28, main_Image_4_in_29, main_Image_4_in_30, main_Image_4_in_31, main_Image_4_in_32, main_Image_4_in_33, main_Image_4_in_34, main_Image_4_in_35, main_Image_4_in_36, main_Image_4_in_37, main_Image_4_in_38, main_Image_4_in_39, main_Image_4_in_40, main_Image_4_in_41, main_Image_4_in_42, main_Image_4_in_43, main_Image_4_in_44, main_Image_4_in_45, main_Image_4_in_46, main_Image_4_in_47, main_Image_4_in_48, main_Image_4_in_49 ) [instance: 4, cache: 1]; // network: end of macro body CacheScene(main_Image_4_in_1, main_Image_4_out_1, main_Image_4_out_2); } main_Import_1_in_1 = "rho3d.general"; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; main_Import_1_in_4 = NULL; main_Import_1_in_5 = NULL; main_Import_1_in_6 = NULL; main_Import_1_out_1 = NULL; main_Isosurface_2_in_2 = 0.04; main_Isosurface_2_in_3 = NULL; main_Isosurface_2_in_4 = NULL; main_Isosurface_2_in_5 = NULL; main_Isosurface_2_in_6 = NULL; main_Isosurface_2_out_1 = NULL; main_Color_1_in_2 = "white"; main_Color_1_in_3 = NULL; main_Color_1_in_4 = "front colors"; main_Color_1_in_5 = NULL; main_Color_1_out_1 = NULL; main_Color_2_in_2 = "orange"; main_Color_2_in_3 = NULL; main_Color_2_in_4 = "back colors"; main_Color_2_in_5 = NULL; main_Color_2_out_1 = NULL; macro Image( id, object, where, useVector, to, from, width, resolution, aspect, up, viewAngle, perspective, options, buttonState = 1, buttonUpApprox = "none", buttonDownApprox = "none", buttonUpDensity = 1, buttonDownDensity = 1, renderMode = 0, defaultCamera, reset, backgroundColor, throttle, RECenable = 0, RECfile, RECformat, RECresolution, RECaspect, AAenable = 0, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, interactionMode, title, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels, webOptions) -> ( object, camera, where) { ImageMessage( id, backgroundColor, throttle, RECenable, RECfile, RECformat, RECresolution, RECaspect, AAenable, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels, interactionMode, title, renderMode, buttonUpApprox, buttonDownApprox, buttonUpDensity, buttonDownDensity) [instance: 1, cache: 1]; autoCamera = AutoCamera( object, "front", object, resolution, aspect, [0,1,0], perspective, viewAngle, backgroundColor) [instance: 1, cache: 1]; realCamera = Camera( to, from, width, resolution, aspect, up, perspective, viewAngle, backgroundColor) [instance: 1, cache: 1]; coloredDefaultCamera = UpdateCamera(defaultCamera, background=backgroundColor) [instance: 1, cache: 1]; nullDefaultCamera = Inquire(defaultCamera, "is null + 1") [instance: 1, cache: 1]; resetCamera = Switch( nullDefaultCamera, coloredDefaultCamera, autoCamera) [instance: 1, cache: 1]; resetNull = Inquire( reset, "is null + 1") [instance: 2, cache: 1]; reset = Switch( resetNull, reset, 0) [instance: 2, cache: 1]; whichCamera = Compute( "($0 != 0 || $1 == 0) ? 1 : 2", reset, useVector) [instance: 1, cache: 1]; camera = Switch( whichCamera, resetCamera, realCamera) [instance: 3, cache: 1]; AAobject = AutoAxes( object, camera, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels) [instance: 1, cache: 1]; switchAAenable = Compute("$0+1", AAenable) [instance: 2, cache: 1]; object = Switch( switchAAenable, object, AAobject) [instance:4, cache: 1]; SWapproximation_options = Switch( buttonState, buttonUpApprox, buttonDownApprox) [instance: 5, cache: 1]; SWdensity_options = Switch( buttonState, buttonUpDensity, buttonDownDensity) [instance: 6, cache: 1]; HWapproximation_options = Format( "%s,%s", buttonDownApprox, buttonUpApprox) [instance: 1, cache: 1]; HWdensity_options = Format( "%d,%d", buttonDownDensity, buttonUpDensity) [instance: 2, cache: 1]; switchRenderMode = Compute( "$0+1", renderMode) [instance: 3, cache: 1]; approximation_options = Switch( switchRenderMode, SWapproximation_options, HWapproximation_options) [instance: 7, cache: 1]; density_options = Switch( switchRenderMode, SWdensity_options, HWdensity_options) [instance: 8, cache: 1]; renderModeString = Switch( switchRenderMode, "software", "hardware")[instance: 9, cache: 1]; object_tag = Inquire( object, "object tag")[instance: 3, cache: 1]; annoted_object = Options( object, "send boxes", 0, "cache", 1, "object tag", object_tag, "ddcamera", whichCamera, "rendering approximation", approximation_options, "render every", density_options, "button state", buttonState, "rendering mode", renderModeString) [instance: 1, cache: 1]; RECresNull = Inquire( RECresolution, "is null + 1") [instance: 4, cache: 1]; ImageResolution = Inquire( camera, "camera resolution") [instance: 5, cache: 1]; RECresolution = Switch( RECresNull, RECresolution, ImageResolution) [instance: 10, cache: 1]; RECaspectNull = Inquire( RECaspect, "is null + 1") [instance: 6, cache: 1]; ImageAspect = Inquire( camera, "camera aspect") [instance: 7, cache: 1]; RECaspect = Switch( RECaspectNull, RECaspect, ImageAspect) [instance: 11, cache: 1]; switchRECenable = Compute( "$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4", RECenable, switchRenderMode, RECresolution, ImageResolution, RECaspect, ImageAspect) [instance: 4, cache: 1]; NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject = Route(switchRECenable, annoted_object); Display( NoRECobject, camera, where, throttle) [instance: 1, cache: 1]; image = Render( RECNoRerenderObject, camera) [instance: 1, cache: 1]; Display( image, NULL, where, throttle) [instance: 2, cache: 1]; WriteImage( image, RECfile, RECformat) [instance: 1, cache: 1]; rec_where = Display( RECNoRerHW, camera, where, throttle) [instance: 1, cache: 0]; rec_image = ReadImageWindow( rec_where) [instance: 1, cache: 1]; WriteImage( rec_image, RECfile, RECformat) [instance: 1, cache: 1]; RECupdateCamera = UpdateCamera( camera, resolution=RECresolution, aspect=RECaspect) [instance: 2, cache: 1]; Display( RECRerenderObject, camera, where, throttle) [instance: 1, cache: 1]; RECRerenderObject = ScaleScreen( RECRerenderObject, NULL, RECresolution, camera) [instance: 1, cache: 1]; image = Render( RECRerenderObject, RECupdateCamera) [instance: 2, cache: 1]; WriteImage( image, RECfile, RECformat) [instance: 2, cache: 1]; } main_Image_4_in_1 = "Image_4"; main_Image_4_in_3 = "X24,,"; main_Image_4_in_4 = 1; main_Image_4_in_5 = [7.29024 7.29024 7.29024]; main_Image_4_in_6 = [-4.66221 51.8696 -4.66221]; main_Image_4_in_7 = 21.0859; main_Image_4_in_8 = 640; main_Image_4_in_9 = 0.75; main_Image_4_in_10 = [0 0 -1]; main_Image_4_in_11 = NULL; main_Image_4_in_12 = 0; main_Image_4_in_13 = NULL; main_Image_4_in_14 = 1; main_Image_4_in_15 = NULL; main_Image_4_in_16 = NULL; main_Image_4_in_17 = NULL; main_Image_4_in_18 = NULL; main_Image_4_in_19 = 0; main_Image_4_in_20 = NULL; main_Image_4_in_21 = NULL; main_Image_4_in_22 = NULL; main_Image_4_in_23 = NULL; main_Image_4_in_25 = NULL; main_Image_4_in_26 = NULL; main_Image_4_in_27 = NULL; main_Image_4_in_28 = NULL; main_Image_4_in_29 = NULL; main_Image_4_in_30 = NULL; main_Image_4_in_31 = NULL; main_Image_4_in_32 = NULL; main_Image_4_in_33 = NULL; main_Image_4_in_34 = NULL; main_Image_4_in_35 = NULL; main_Image_4_in_36 = NULL; main_Image_4_in_37 = NULL; main_Image_4_in_38 = NULL; main_Image_4_in_39 = NULL; main_Image_4_in_40 = NULL; main_Image_4_in_41 = "zoom"; main_Image_4_in_42 = NULL; main_Image_4_in_43 = NULL; main_Image_4_in_44 = NULL; main_Image_4_in_45 = NULL; main_Image_4_in_46 = NULL; main_Image_4_in_47 = NULL; main_Image_4_in_48 = NULL; main_Image_4_in_49 = NULL; Executive("product version 4 4 0"); $sync main(); elk-2.3.22/examples/diamond-rho3D/PaxHeaders.22528/rho3d.general0000644002504400250440000000005012337331331022172 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/diamond-rho3D/rho3d.general0000644002504400250440000000027412337331331022741 0ustar00dewhurstdewhurst00000000000000file = RHO3D.OUT grid = 80 x 80 x 80 format = ascii interleaving = field majority = column header = lines 1 field = locations, field0 structure = 3-vector, scalar type = float, float end elk-2.3.22/examples/diamond-rho3D/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020717 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/diamond-rho3D/elk.in0000644002504400250440000000115112337331331021461 0ustar00dewhurstdewhurst00000000000000 ! 3D plot of the charge density of diamond using OpenDX. tasks 0 33 ! define box corners and grid size for 3D plot, first point is the origin plot3d 0.0 0.0 0.0 : vclp3d 2.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 2.0 80 80 80 avec 3.3637 3.3637 0.0000 3.3637 0.0000 3.3637 0.0000 3.3637 3.3637 sppath '../../species/' atoms 1 : nspecies 'C.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.25 0.5 0.625 elk-2.3.22/examples/PaxHeaders.22528/Nb-superconductor0000644002504400250440000000005012337331331020563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/0000755002504400250440000000000012337331331021404 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Nb-superconductor/PaxHeaders.22528/MCMILLAN.OUT0000644002504400250440000000005012337331331022425 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/MCMILLAN.OUT0000644002504400250440000000053212337331331023171 0ustar00dewhurstdewhurst00000000000000 Electron-phonon coupling constant, lambda : 1.116559470 Logarithmic average frequency : 0.5925289319E-03 RMS average frequency : 0.6440097313E-03 Coulomb pseudopotential, mu* : 0.1500000000 McMillan-Allen-Dynes superconducting critical temperature [Eq. 34, Phys. Rev. B 12, 905 (1975)] (kelvin) : 12.84233372 elk-2.3.22/examples/Nb-superconductor/PaxHeaders.22528/PHDOS.OUT0000644002504400250440000000005012337331331022106 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/PHDOS.OUT0000644002504400250440000004410412337331331022655 0ustar00dewhurstdewhurst00000000000000 -0.1024516824E-03 18.63406109 -0.1001977454E-03 55.90218328 -0.9794380838E-04 74.53624438 -0.9568987137E-04 26.62008728 -0.9343593435E-04 47.91615710 -0.9118199734E-04 50.57816583 -0.8892806033E-04 69.21222692 -0.8667412331E-04 71.87423565 -0.8442018630E-04 61.22620074 -0.8216624929E-04 53.24017455 -0.7991231228E-04 55.90218328 -0.7765837526E-04 61.22620074 -0.7540443825E-04 58.56419201 -0.7315050124E-04 77.19825310 -0.7089656422E-04 55.90218328 -0.6864262721E-04 87.84628801 -0.6638869020E-04 79.86026183 -0.6413475319E-04 42.59213964 -0.6188081617E-04 37.26812219 -0.5962687916E-04 82.52227056 -0.5737294215E-04 42.59213964 -0.5511900513E-04 71.87423565 -0.5286506812E-04 66.55021819 -0.5061113111E-04 55.90218328 -0.4835719410E-04 37.26812219 -0.4610325708E-04 79.86026183 -0.4384932007E-04 66.55021819 -0.4159538306E-04 47.91615710 -0.3934144604E-04 55.90218328 -0.3708750903E-04 37.26812219 -0.3483357202E-04 37.26812219 -0.3257963500E-04 34.60611346 -0.3032569799E-04 37.26812219 -0.2807176098E-04 47.91615710 -0.2581782397E-04 34.60611346 -0.2356388695E-04 21.29606982 -0.2130994994E-04 13.31004364 -0.1905601293E-04 26.62008728 -0.1680207591E-04 26.62008728 -0.1454813890E-04 21.29606982 -0.1229420189E-04 15.97205237 -0.1004026488E-04 13.31004364 -0.7786327863E-05 7.986026183 -0.5532390850E-05 0.000000000 -0.3278453837E-05 5.324017455 -0.1024516824E-05 1.331004364 0.1229420189E-05 0.000000000 0.3483357202E-05 0.000000000 0.5737294215E-05 7.986026183 0.7991231228E-05 10.64803491 0.1024516824E-04 15.97205237 0.1249910525E-04 10.64803491 0.1475304227E-04 37.26812219 0.1700697928E-04 15.97205237 0.1926091629E-04 31.94410473 0.2151485330E-04 21.29606982 0.2376879032E-04 39.93013092 0.2602272733E-04 39.93013092 0.2827666434E-04 45.25414837 0.3053060136E-04 74.53624438 0.3278453837E-04 50.57816583 0.3503847538E-04 29.28209600 0.3729241240E-04 77.19825310 0.3954634941E-04 49.69082958 0.4180028642E-04 82.52227056 0.4405422343E-04 77.19825310 0.4630816045E-04 47.91615710 0.4856209746E-04 62.11353698 0.5081603447E-04 85.18427929 0.5306997149E-04 98.49432292 0.5532390850E-04 79.86026183 0.5757784551E-04 109.1423578 0.5983178252E-04 90.50829674 0.6208571954E-04 98.49432292 0.6433965655E-04 106.4803491 0.6659359356E-04 90.50829674 0.6884753058E-04 117.1283840 0.7110146759E-04 130.4384277 0.7335540460E-04 111.8043666 0.7560934161E-04 141.0864626 0.7786327863E-04 117.1283840 0.8011721564E-04 150.8471612 0.8237115265E-04 138.4244538 0.8462508967E-04 159.7205237 0.8687902668E-04 149.0724888 0.8913296369E-04 154.3965062 0.9138690071E-04 141.0864626 0.9364083772E-04 207.6366808 0.9589477473E-04 151.7344975 0.9814871174E-04 165.0445411 0.1004026488E-03 184.5659385 0.1026565858E-03 151.7344975 0.1049105228E-03 226.2707419 0.1071644598E-03 220.9467244 0.1094183968E-03 231.5947593 0.1116723338E-03 204.9746720 0.1139262708E-03 175.6925760 0.1161802078E-03 210.2986895 0.1184341449E-03 246.6794754 0.1206880819E-03 250.2288204 0.1229420189E-03 247.5668117 0.1251959559E-03 271.5248902 0.1274498929E-03 239.5807855 0.1297038299E-03 250.2288204 0.1319577669E-03 279.5109164 0.1342117040E-03 247.5668117 0.1364656410E-03 385.9912655 0.1387195780E-03 282.1729251 0.1409735150E-03 300.8069862 0.1432274520E-03 343.3991259 0.1454813890E-03 290.1589513 0.1477353260E-03 330.0890822 0.1499892630E-03 391.3152830 0.1522432001E-03 276.8489077 0.1544971371E-03 338.0751084 0.1567510741E-03 332.7510910 0.1590050111E-03 457.8655012 0.1612589481E-03 457.8655012 0.1635128851E-03 391.3152830 0.1657668221E-03 412.6113528 0.1680207591E-03 412.6113528 0.1702746962E-03 423.2593877 0.1725286332E-03 508.4436670 0.1747825702E-03 441.8934488 0.1770365072E-03 497.7956321 0.1792904442E-03 433.9074226 0.1815443812E-03 559.0218328 0.1837983182E-03 572.3318765 0.1860522552E-03 580.3179026 0.1883061923E-03 596.2899550 0.1905601293E-03 486.2602609 0.1928140663E-03 601.6139725 0.1950680033E-03 582.9799114 0.1973219403E-03 617.5860248 0.1995758773E-03 700.1082954 0.2018298143E-03 718.7423565 0.2040837514E-03 617.5860248 0.2063376884E-03 708.0943216 0.2085916254E-03 767.5458498 0.2108455624E-03 756.0104787 0.2130994994E-03 750.6864612 0.2153534364E-03 742.7004350 0.2176073734E-03 787.9545834 0.2198613104E-03 867.8148452 0.2221152475E-03 843.8567667 0.2243691845E-03 877.5755439 0.2266231215E-03 889.1109150 0.2288770585E-03 963.6471594 0.2311309955E-03 897.0969412 0.2333849325E-03 987.6052380 0.2356388695E-03 939.6890809 0.2378928065E-03 966.3091681 0.2401467436E-03 1030.197378 0.2424006806E-03 1024.873360 0.2446546176E-03 966.3091681 0.2469085546E-03 1147.325762 0.2491624916E-03 1099.409605 0.2514164286E-03 1110.057639 0.2536703656E-03 1205.889954 0.2559243026E-03 1085.212225 0.2581782397E-03 1078.113535 0.2604321767E-03 1251.144102 0.2626861137E-03 1110.057639 0.2649400507E-03 1219.199997 0.2671939877E-03 1168.621831 0.2694479247E-03 1228.073360 0.2717018617E-03 1336.328381 0.2739557988E-03 1211.213971 0.2762097358E-03 1200.565936 0.2784636728E-03 1325.680346 0.2807176098E-03 1277.764189 0.2829715468E-03 1291.074233 0.2852254838E-03 1409.977289 0.2874794208E-03 1344.314407 0.2897333578E-03 1280.426198 0.2919872949E-03 1445.470739 0.2942412319E-03 1331.004364 0.2964951689E-03 1365.610477 0.2987491059E-03 1346.976416 0.3010030429E-03 1480.076853 0.3032569799E-03 1474.752835 0.3055109169E-03 1453.456765 0.3077648539E-03 1490.724888 0.3100187910E-03 1466.766809 0.3122727280E-03 1513.795630 0.3145266650E-03 1493.386896 0.3167806020E-03 1504.034931 0.3190345390E-03 1583.895193 0.3212884760E-03 1498.710914 0.3235424130E-03 1623.825324 0.3257963500E-03 1477.414844 0.3280502871E-03 1647.783402 0.3303042241E-03 1739.179035 0.3325581611E-03 1642.459385 0.3348120981E-03 1623.825324 0.3370660351E-03 1629.149341 0.3393199721E-03 1777.334494 0.3415739091E-03 1716.995629 0.3438278462E-03 1709.009603 0.3460817832E-03 1586.557202 0.3483357202E-03 1812.827944 0.3505896572E-03 1711.671612 0.3528435942E-03 2025.788642 0.3550975312E-03 1812.827944 0.3573514682E-03 1794.193882 0.3596054052E-03 1815.489952 0.3618593423E-03 1887.364188 0.3641132793E-03 1846.546721 0.3663672163E-03 1919.308293 0.3686211533E-03 1921.970301 0.3708750903E-03 1935.280345 0.3731290273E-03 2084.352834 0.3753829643E-03 1961.900432 0.3776369013E-03 2129.606982 0.3798908384E-03 1991.182528 0.3821447754E-03 1908.660258 0.3843987124E-03 2126.944973 0.3866526494E-03 2253.834056 0.3889065864E-03 2031.112659 0.3911605234E-03 2063.056764 0.3934144604E-03 2250.284711 0.3956683974E-03 2254.721392 0.3979223345E-03 2334.581654 0.4001762715E-03 2214.791261 0.4024302085E-03 2156.227069 0.4046841455E-03 2278.679471 0.4069380825E-03 2387.821829 0.4091920195E-03 2337.243663 0.4114459565E-03 2251.172047 0.4136998936E-03 2542.218335 0.4159538306E-03 2406.455890 0.4182077676E-03 2395.807855 0.4204617046E-03 2534.232309 0.4227156416E-03 2611.430562 0.4249695786E-03 2552.866370 0.4272235156E-03 2419.765933 0.4294774526E-03 2449.048029 0.4317313897E-03 2616.754579 0.4339853267E-03 2770.263749 0.4362392637E-03 2691.290824 0.4384932007E-03 2725.896937 0.4407471377E-03 2707.262876 0.4430010747E-03 2861.659382 0.4452550117E-03 2731.220955 0.4475089487E-03 2832.377286 0.4497628858E-03 2608.768553 0.4520168228E-03 2984.111784 0.4542707598E-03 3000.083836 0.4565246968E-03 3094.141478 0.4587786338E-03 2980.562439 0.4610325708E-03 2992.097810 0.4632865078E-03 2949.505670 0.4655404448E-03 3194.410473 0.4677943819E-03 3082.606107 0.4700483189E-03 3178.438421 0.4723022559E-03 3122.536238 0.4745561929E-03 3322.186892 0.4768101299E-03 3311.538857 0.4790640669E-03 3407.371171 0.4813180039E-03 3654.050647 0.4835719410E-03 3146.494316 0.4858258780E-03 3420.681215 0.4880798150E-03 3449.963311 0.4903337520E-03 3396.723137 0.4925876890E-03 3748.108289 0.4948416260E-03 3822.644533 0.4970955630E-03 3790.700428 0.4993495000E-03 3660.262001 0.5016034371E-03 3950.420952 0.5038573741E-03 3926.462873 0.5061113111E-03 3835.067240 0.5083652481E-03 3809.334489 0.5106191851E-03 3961.068987 0.5128731221E-03 4437.568549 0.5151270591E-03 4131.437545 0.5173809961E-03 4235.255886 0.5196349332E-03 4536.950208 0.5218888702E-03 4301.806104 0.5241428072E-03 4557.358942 0.5263967442E-03 4272.524008 0.5286506812E-03 4875.912653 0.5309046182E-03 4977.956321 0.5331585552E-03 4812.911780 0.5354124922E-03 5044.506539 0.5376664293E-03 5166.958940 0.5399203663E-03 5177.606975 0.5421743033E-03 5174.944967 0.5444282403E-03 5768.572913 0.5466821773E-03 5739.290817 0.5489361143E-03 6151.902170 0.5511900513E-03 6630.176404 0.5534439884E-03 7320.524001 0.5556979254E-03 7650.613083 0.5579518624E-03 7871.559808 0.5602057994E-03 7967.392122 0.5624597364E-03 7951.420070 0.5647136734E-03 8473.173780 0.5669676104E-03 8510.441902 0.5692215474E-03 7988.688192 0.5714754845E-03 8875.137098 0.5737294215E-03 8230.043650 0.5759833585E-03 9034.857622 0.5782372955E-03 8750.022688 0.5804912325E-03 9562.822686 0.5827451695E-03 9498.047140 0.5849991065E-03 9527.329236 0.5872530435E-03 10073.04103 0.5895069806E-03 10613.42880 0.5917609176E-03 11231.01482 0.5940148546E-03 11895.62967 0.5962687916E-03 12799.82530 0.5985227286E-03 11533.59648 0.6007766656E-03 11288.69168 0.6030306026E-03 10868.98164 0.6052845396E-03 10545.10391 0.6075384767E-03 10396.03142 0.6097924137E-03 9974.546703 0.6120463507E-03 9843.220939 0.6143002877E-03 9295.734477 0.6165542247E-03 8873.362426 0.6188081617E-03 8096.055877 0.6210620987E-03 7275.269853 0.6233160358E-03 6098.661995 0.6255699728E-03 4919.392129 0.6278239098E-03 4629.233177 0.6300778468E-03 4748.136234 0.6323317838E-03 4787.179029 0.6345857208E-03 4513.879466 0.6368396578E-03 4312.454139 0.6390935948E-03 4400.300427 0.6413475319E-03 4517.428811 0.6436014689E-03 4511.217457 0.6458554059E-03 4658.515273 0.6481093429E-03 4501.456759 0.6503632799E-03 4421.596497 0.6526172169E-03 4333.750209 0.6548711539E-03 4198.875100 0.6571250909E-03 4394.976409 0.6593790280E-03 4472.174663 0.6616329650E-03 4184.677720 0.6638869020E-03 4099.493441 0.6661408390E-03 4155.395624 0.6683947760E-03 4423.371169 0.6706487130E-03 3905.166804 0.6729026500E-03 4059.563310 0.6751565870E-03 4211.297807 0.6774105241E-03 4125.226192 0.6796644611E-03 4059.563310 0.6819183981E-03 3978.815712 0.6841723351E-03 4146.522261 0.6864262721E-03 4047.140602 0.6886802091E-03 4136.761563 0.6909341461E-03 3966.393004 0.6931880832E-03 4175.804357 0.6954420202E-03 3963.730996 0.6976959572E-03 4227.269860 0.6999498942E-03 4018.745843 0.7022038312E-03 4293.820078 0.7044577682E-03 3894.518769 0.7067117052E-03 4221.058506 0.7089656422E-03 4084.408725 0.7112195793E-03 4432.244532 0.7134735163E-03 4171.367676 0.7157274533E-03 4229.931868 0.7179813903E-03 4040.929249 0.7202353273E-03 4631.895186 0.7224892643E-03 4618.585143 0.7247432013E-03 4133.212218 0.7269971383E-03 4208.635798 0.7292510754E-03 4148.296934 0.7315050124E-03 4328.426191 0.7337589494E-03 3955.744969 0.7360128864E-03 3872.335363 0.7382668234E-03 4079.084707 0.7405207604E-03 4168.705668 0.7427746974E-03 3838.616585 0.7450286344E-03 4221.945842 0.7472825715E-03 4126.113528 0.7495365085E-03 4258.326628 0.7517904455E-03 4522.752828 0.7540443825E-03 5159.860250 0.7562983195E-03 5515.682084 0.7585522565E-03 5715.332738 0.7608061935E-03 5499.710031 0.7630601306E-03 5888.363306 0.7653140676E-03 5588.443656 0.7675680046E-03 6218.452388 0.7698219416E-03 5773.896930 0.7720758786E-03 6178.522257 0.7743298156E-03 6319.608720 0.7765837526E-03 6364.862868 0.7788376896E-03 6356.876842 0.7810916267E-03 6744.642780 0.7833455637E-03 6764.164177 0.7855995007E-03 6838.700421 0.7878534377E-03 7073.844526 0.7901073747E-03 7131.521381 0.7923613117E-03 7210.494307 0.7946152487E-03 7419.018324 0.7968691857E-03 7287.692560 0.7991231228E-03 7778.389502 0.8013770598E-03 7645.289066 0.8036309968E-03 8010.871598 0.8058849338E-03 8385.327492 0.8081388708E-03 8399.524872 0.8103928078E-03 9024.209587 0.8126467448E-03 9314.368538 0.8149006818E-03 9889.362423 0.8171546189E-03 10941.74321 0.8194085559E-03 11414.69342 0.8216624929E-03 12601.94932 0.8239164299E-03 12697.78163 0.8261703669E-03 13280.76154 0.8284243039E-03 14335.80433 0.8306782409E-03 14066.05412 0.8329321780E-03 11331.28382 0.8351861150E-03 9655.105655 0.8374400520E-03 8228.268977 0.8396939890E-03 6348.890816 0.8419479260E-03 6029.449768 0.8442018630E-03 5568.922258 0.8464558000E-03 5150.986888 0.8487097370E-03 4239.692567 0.8509636741E-03 4429.582523 0.8532176111E-03 3652.275974 0.8554715481E-03 3689.544097 0.8577254851E-03 3487.231433 0.8599794221E-03 3415.357198 0.8622333591E-03 3155.367679 0.8644872961E-03 3126.972919 0.8667412331E-03 2890.941478 0.8689951702E-03 2781.799120 0.8712491072E-03 2473.006108 0.8735030442E-03 2393.145846 0.8757569812E-03 2220.115279 0.8780109182E-03 1980.534493 0.8802648552E-03 2048.859384 0.8825187922E-03 1751.601743 0.8847727292E-03 1732.967682 0.8870266663E-03 1690.375542 0.8892806033E-03 1256.468119 0.8915345403E-03 1552.838424 0.8937884773E-03 1247.594757 0.8960424143E-03 1189.917901 0.8982963513E-03 1016.887334 0.9005502883E-03 878.4628801 0.9028042254E-03 716.0803477 0.9050581624E-03 648.6427933 0.9073120994E-03 697.4462867 0.9095660364E-03 577.6558939 0.9118199734E-03 577.6558939 0.9140739104E-03 572.3318765 0.9163278474E-03 436.5694313 0.9185817844E-03 519.0917019 0.9208357215E-03 409.0620078 0.9230896585E-03 370.0192131 0.9253435955E-03 303.4689950 0.9275975325E-03 268.8628815 0.9298514695E-03 166.8192136 0.9321054065E-03 11.97903927 0.9343593435E-03 0.000000000 0.9366132805E-03 0.000000000 0.9388672176E-03 0.000000000 0.9411211546E-03 0.000000000 0.9433750916E-03 0.000000000 0.9456290286E-03 0.000000000 0.9478829656E-03 0.000000000 0.9501369026E-03 0.000000000 0.9523908396E-03 0.000000000 0.9546447766E-03 0.000000000 0.9568987137E-03 0.000000000 0.9591526507E-03 0.000000000 0.9614065877E-03 0.000000000 0.9636605247E-03 0.000000000 0.9659144617E-03 0.000000000 0.9681683987E-03 0.000000000 0.9704223357E-03 0.000000000 0.9726762728E-03 0.000000000 0.9749302098E-03 0.000000000 0.9771841468E-03 0.000000000 0.9794380838E-03 0.000000000 0.9816920208E-03 0.000000000 0.9839459578E-03 0.000000000 0.9861998948E-03 0.000000000 0.9884538318E-03 0.000000000 0.9907077689E-03 0.000000000 0.9929617059E-03 0.000000000 0.9952156429E-03 0.000000000 0.9974695799E-03 0.000000000 0.9997235169E-03 0.000000000 0.1001977454E-02 0.000000000 0.1004231391E-02 0.000000000 0.1006485328E-02 0.000000000 0.1008739265E-02 0.000000000 0.1010993202E-02 0.000000000 0.1013247139E-02 0.000000000 0.1015501076E-02 0.000000000 0.1017755013E-02 0.000000000 0.1020008950E-02 0.000000000 0.1022262887E-02 0.000000000 elk-2.3.22/examples/Nb-superconductor/PaxHeaders.22528/PHDISP.OUT0000644002504400250440000000005012337331331022220 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/PHDISP.OUT0000644002504400250440000012660212337331331022773 0ustar00dewhurstdewhurst00000000000000 0.000000000 0.9313789310E-03 0.1615885685E-01 0.9303940073E-03 0.3231771371E-01 0.9274507963E-03 0.4847657056E-01 0.9225839020E-03 0.6463542742E-01 0.9158507437E-03 0.8079428427E-01 0.9073311667E-03 0.9695314113E-01 0.8971268825E-03 0.1131119980 0.8853607200E-03 0.1292708548 0.8721756662E-03 0.1454297117 0.8577336626E-03 0.1615885685 0.8422141196E-03 0.1777474254 0.8258120974E-03 0.1939062823 0.8087360971E-03 0.2100651391 0.7912053973E-03 0.2262239960 0.7734468687E-03 0.2423828528 0.7556912109E-03 0.2585417097 0.7381685722E-03 0.2747005665 0.7211035555E-03 0.2908594234 0.7047096723E-03 0.3070182802 0.6891833964E-03 0.3231771371 0.6746980641E-03 0.3393359940 0.6613979832E-03 0.3554948508 0.6493931993E-03 0.3716537077 0.6387554203E-03 0.3878125645 0.6295155797E-03 0.4039714214 0.6216634186E-03 0.4201302782 0.6151492849E-03 0.4362891351 0.6098881202E-03 0.4524479919 0.6057653615E-03 0.4686068488 0.6026442942E-03 0.4847657056 0.6003742697E-03 0.5009245625 0.5987991762E-03 0.5170834194 0.5977656120E-03 0.5332422762 0.5971303200E-03 0.5494011331 0.5967665825E-03 0.5655599899 0.5965694050E-03 0.5817188468 0.5964594204E-03 0.5978777036 0.5963855154E-03 0.6140365605 0.5963262158E-03 0.6301954173 0.5962898763E-03 0.6463542742 0.5963137131E-03 0.6625131310 0.5964617045E-03 0.6786719879 0.5968213789E-03 0.6948308448 0.5974995157E-03 0.7109897016 0.5986168176E-03 0.7271485585 0.6003016690E-03 0.7433074153 0.6026831748E-03 0.7594662722 0.6058837735E-03 0.7756251290 0.6100118113E-03 0.7917839859 0.6151545343E-03 0.8079428427 0.6213719841E-03 0.8241016996 0.6286922382E-03 0.8402605564 0.6371083352E-03 0.8564194133 0.6465770640E-03 0.8725782702 0.6570196131E-03 0.8887371270 0.6513614582E-03 0.9048959839 0.6452710535E-03 0.9210548407 0.6387375567E-03 0.9372136976 0.6317569222E-03 0.9533725544 0.6243317486E-03 0.9695314113 0.6164710038E-03 0.9856902681 0.6081896356E-03 1.001849125 0.5995080724E-03 1.018007982 0.5904516228E-03 1.034166839 0.5810497823E-03 1.050325696 0.5713354552E-03 1.066484552 0.5613441042E-03 1.082643409 0.5511128389E-03 1.098802266 0.5406794584E-03 1.114961123 0.5300814662E-03 1.131119980 0.5193550767E-03 1.147278837 0.5085342356E-03 1.163437694 0.4976496805E-03 1.179596550 0.4867280678E-03 1.195755407 0.4757911944E-03 1.211914264 0.4648553414E-03 1.228073121 0.4539307661E-03 1.244231978 0.4430213649E-03 1.260390835 0.4321245241E-03 1.276549692 0.4212311691E-03 1.292708548 0.4103260157E-03 1.308867405 0.3993880164E-03 1.325026262 0.3883909878E-03 1.341185119 0.3773043973E-03 1.357343976 0.3660942780E-03 1.373502833 0.3547242407E-03 1.389661690 0.3431565434E-03 1.405820546 0.3313531830E-03 1.421979403 0.3192769728E-03 1.438138260 0.3068925731E-03 1.454297117 0.2941674475E-03 1.470455974 0.2810727219E-03 1.486614831 0.2675839295E-03 1.502773687 0.2536816305E-03 1.518932544 0.2393519002E-03 1.535091401 0.2245866829E-03 1.551250258 0.2093840159E-03 1.567409115 0.1937481246E-03 1.583567972 0.1776894001E-03 1.599726829 0.1612242639E-03 1.615885685 0.1443749321E-03 1.632044542 0.1271690869E-03 1.648203399 0.1096394675E-03 1.664362256 0.9182338853E-04 1.680521113 0.7376219778E-04 1.696679970 0.5550068126E-04 1.712838827 0.3708642597E-04 1.728997683 0.1856914872E-04 1.745156540 -0.2119926836E-10 1.761407614 0.1167636695E-04 1.777658689 0.2335431344E-04 1.793909763 0.3503448487E-04 1.810160837 0.4671580312E-04 1.826411911 0.5839495466E-04 1.842662985 0.7006626520E-04 1.858914059 0.8172203856E-04 1.875165134 0.9335340005E-04 1.891416208 0.1049516447E-03 1.907667282 0.1165100499E-03 1.923918356 0.1280260726E-03 1.940169430 0.1395038111E-03 1.956420504 0.1509565740E-03 1.972671579 0.1624093640E-03 1.988922653 0.1739010497E-03 2.005173727 0.1854859764E-03 2.021424801 0.1972347558E-03 2.037675875 0.2092339914E-03 2.053926949 0.2215847406E-03 2.070178024 0.2343996099E-03 2.086429098 0.2477985034E-03 2.102680172 0.2619032110E-03 2.118931246 0.2768311811E-03 2.135182320 0.2926889640E-03 2.151433394 0.3095658799E-03 2.167684469 0.3275284552E-03 2.183935543 0.3466160737E-03 2.200186617 0.3668381258E-03 2.216437691 0.3881727572E-03 2.232688765 0.4105671446E-03 2.248939839 0.4339391020E-03 2.265190914 0.4581797485E-03 2.281441988 0.4831569511E-03 2.297693062 0.5087192755E-03 2.313944136 0.5347002181E-03 2.330195210 0.5609225416E-03 2.346446284 0.5872025797E-03 2.362697359 0.6133544140E-03 2.378948433 0.6391938507E-03 2.395199507 0.6645421426E-03 2.411450581 0.6892294124E-03 2.427701655 0.7130977362E-03 2.443952729 0.7360038507E-03 2.460203804 0.7578214455E-03 2.476454878 0.7784430045E-03 2.492705952 0.7977811601E-03 2.508957026 0.8097202637E-03 2.525208100 0.8127621752E-03 2.541459174 0.8180722519E-03 2.557710249 0.8254818699E-03 2.573961323 0.8347083870E-03 2.590212397 0.8453755210E-03 2.606463471 0.8570387029E-03 2.622714545 0.8692123423E-03 2.638965619 0.8813963913E-03 2.655216694 0.8931003777E-03 2.671467768 0.9038639182E-03 2.687718842 0.9132734116E-03 2.703969916 0.9209750747E-03 2.720220990 0.9266847244E-03 2.736472064 0.9301947813E-03 2.752723139 0.9313789310E-03 2.768555520 0.9303531086E-03 2.784387902 0.9272842776E-03 2.800220284 0.9221983529E-03 2.816052665 0.9151385507E-03 2.831885047 0.9061654245E-03 2.847717429 0.8953569170E-03 2.863549810 0.8828084247E-03 2.879382192 0.8686328742E-03 2.895214573 0.8529608019E-03 2.911046955 0.8359404245E-03 2.926879337 0.8177376792E-03 2.942711718 0.7985361970E-03 2.958544100 0.7785371540E-03 2.974376482 0.7579589211E-03 2.990208863 0.7370363950E-03 3.006041245 0.7160198562E-03 3.021873627 0.6951731494E-03 3.037706008 0.6747709401E-03 3.053538390 0.6550947651E-03 3.069370772 0.6364276021E-03 3.085203153 0.6190467399E-03 3.101035535 0.6032148873E-03 3.116867917 0.5891697155E-03 3.132700298 0.5771123957E-03 3.148532680 0.5671961006E-03 3.164365062 0.5595157879E-03 3.180197443 0.5541007253E-03 3.196029825 0.5509110379E-03 3.211862206 0.5498390276E-03 3.227694588 0.5507152506E-03 3.243526970 0.5533185561E-03 3.259359351 0.5573887192E-03 3.275191733 0.5626400906E-03 3.291024115 0.5687748269E-03 3.306856496 0.5754946519E-03 3.322688878 0.5825105677E-03 3.338521260 0.5895503534E-03 3.354353641 0.5963639971E-03 3.370186023 0.6027273776E-03 3.386018405 0.6084445755E-03 3.401850786 0.6133491862E-03 3.417683168 0.6173049555E-03 3.433515550 0.6202059978E-03 3.449347931 0.6219767898E-03 3.465180313 0.6225720780E-03 3.480923541 0.6224633663E-03 3.496666769 0.6221416606E-03 3.512409997 0.6216199729E-03 3.528153225 0.6209190876E-03 3.543896453 0.6200662807E-03 3.559639681 0.6190936654E-03 3.575382910 0.6180362977E-03 3.591126138 0.6169301989E-03 3.606869366 0.6158104665E-03 3.622612594 0.6147096509E-03 3.638355822 0.6136565575E-03 3.654099050 0.6126756127E-03 3.669842278 0.6117868828E-03 3.685585506 0.6110067870E-03 3.701328734 0.6103494790E-03 3.717071962 0.6098288103E-03 3.732815191 0.6094607245E-03 3.748558419 0.6092658797E-03 3.764301647 0.6092722532E-03 3.780044875 0.6095174562E-03 3.795788103 0.6100504754E-03 3.811531331 0.6109325682E-03 3.827274559 0.6122370704E-03 3.843017787 0.6140479307E-03 3.858761015 0.6164568725E-03 3.874504243 0.6195591931E-03 3.890247471 0.6234483486E-03 3.905990700 0.6282096182E-03 3.921733928 0.6339132832E-03 3.937477156 0.6406078635E-03 3.953220384 0.6483140087E-03 3.968963612 0.6570196131E-03 3.984706840 0.6483140087E-03 4.000450068 0.6406078635E-03 4.016193296 0.6339132832E-03 4.031936524 0.6282096182E-03 4.047679752 0.6234483486E-03 4.063422981 0.6195591931E-03 4.079166209 0.6164568725E-03 4.094909437 0.6140479307E-03 4.110652665 0.6122370704E-03 4.126395893 0.6109325682E-03 4.142139121 0.6100504754E-03 4.157882349 0.6095174562E-03 4.173625577 0.6092722532E-03 4.189368805 0.6092658797E-03 4.205112033 0.6094607245E-03 4.220855262 0.6098288103E-03 4.236598490 0.6103494790E-03 4.252341718 0.6110067870E-03 4.268084946 0.6117868828E-03 4.283828174 0.6126756127E-03 4.299571402 0.6136565575E-03 4.315314630 0.6147096509E-03 4.331057858 0.6158104665E-03 4.346801086 0.6169301989E-03 4.362544314 0.6180362977E-03 4.378287543 0.6190936654E-03 4.394030771 0.6200662807E-03 4.409773999 0.6209190876E-03 4.425517227 0.6216199729E-03 4.441260455 0.6221416606E-03 4.457003683 0.6224633663E-03 4.472746911 0.6225720780E-03 4.488939120 0.6220862340E-03 4.505131328 0.6206333514E-03 4.521323537 0.6182272443E-03 4.537515745 0.6148904881E-03 4.553707954 0.6106537567E-03 4.569900162 0.6055549144E-03 4.586092371 0.5996378798E-03 4.602284579 0.5929512904E-03 4.618476788 0.5855469993E-03 4.634668996 0.5774784459E-03 4.650861205 0.5559050825E-03 4.667053413 0.5288888244E-03 4.683245622 0.5013051686E-03 4.699437830 0.4735554711E-03 4.715630039 0.4460531357E-03 4.731822247 0.4192161103E-03 4.748014456 0.3934565688E-03 4.764206664 0.3691668088E-03 4.780398873 0.3467005811E-03 4.796591081 0.3263497953E-03 4.812783290 0.3083180732E-03 4.828975498 0.2926948330E-03 4.845167707 0.2794357397E-03 4.861359915 0.2683560441E-03 4.877552124 0.2591412499E-03 4.893744332 0.2513748742E-03 4.909936541 0.2445778727E-03 4.926128749 0.2382513476E-03 4.942320958 0.2319146819E-03 4.958513166 0.2251343116E-03 4.974705375 0.2175418921E-03 4.990897583 0.2088431506E-03 5.007089792 0.1988198131E-03 5.023282000 0.1873270252E-03 5.039474209 0.1742881956E-03 5.055666417 0.1596885835E-03 5.071858626 0.1435684363E-03 5.088050834 0.1240428180E-03 5.104243043 0.1009503991E-03 5.120435251 0.7907343607E-04 5.136627460 0.5826870712E-04 5.152819668 0.3833236795E-04 5.169011877 0.1900797429E-04 5.185204085 -0.2119926836E-10 5.201441086 0.1033422711E-04 5.217678086 0.2089469474E-04 5.233915086 0.3189318230E-04 5.250152087 0.4351474729E-04 5.266389087 0.5590915249E-04 5.282626087 0.6918641964E-04 5.298863088 0.8341603766E-04 5.315100088 0.9862885690E-04 5.331337088 0.1148206258E-03 5.347574088 0.1319563140E-03 5.363811089 0.1499746441E-03 5.380048089 0.1687925087E-03 5.396285089 0.1883091323E-03 5.412522090 0.2012853089E-03 5.428759090 0.2137982084E-03 5.444996090 0.2261163411E-03 5.461233091 0.2382806007E-03 5.477470091 0.2503376397E-03 5.493707091 0.2623387280E-03 5.509944092 0.2743383859E-03 5.526181092 0.2863928232E-03 5.542418092 0.2985582326E-03 5.558655093 0.3108889987E-03 5.574892093 0.3234358919E-03 5.591129093 0.3362443283E-03 5.607366093 0.3493527684E-03 5.623603094 0.3627913301E-03 5.639840094 0.3765806694E-03 5.656077094 0.3907311732E-03 5.672314095 0.4052424841E-03 5.688551095 0.4201033591E-03 5.704788095 0.4352918452E-03 5.721025096 0.4507757426E-03 5.737262096 0.4665133132E-03 5.753499096 0.4824541889E-03 5.769736097 0.4985404332E-03 5.785973097 0.5147077090E-03 5.802210097 0.5308865137E-03 5.818447098 0.5470034456E-03 5.834684098 0.5629824736E-03 5.850921098 0.5787461868E-03 5.867158099 0.5942170073E-03 5.883395099 0.6093183540E-03 5.899632099 0.6165899083E-03 5.915869099 0.6189637603E-03 5.932106100 0.6208029282E-03 5.948343100 0.6221303714E-03 5.964580100 0.6229658505E-03 5.980817101 0.6233267409E-03 5.997054101 0.6232298004E-03 6.013291101 0.6226941396E-03 6.029528102 0.6217454728E-03 6.045765102 0.6204213380E-03 6.062002102 0.6187763882E-03 6.078239103 0.6168862483E-03 6.094476103 0.6148482069E-03 6.110713103 0.6127775106E-03 6.126950104 0.6107992751E-03 6.143187104 0.6090374534E-03 6.159424104 0.6076031754E-03 6.175661104 0.6065847174E-03 6.191898105 0.6060405855E-03 6.208135105 0.6059962220E-03 6.224372105 0.6064440814E-03 6.240609106 0.6073463991E-03 6.256846106 0.6086398481E-03 6.273083106 0.6102413185E-03 6.289320107 0.6120541790E-03 6.305557107 0.6139745222E-03 6.321794107 0.6158970378E-03 6.338031108 0.6177202789E-03 6.354268108 0.6193511918E-03 6.370505108 0.6207088565E-03 6.386742109 0.6217274425E-03 6.402979109 0.6223584192E-03 6.419216109 0.6225720780E-03 0.000000000 0.9313789310E-03 0.1615885685E-01 0.9311502856E-03 0.3231771371E-01 0.9304644149E-03 0.4847657056E-01 0.9293215438E-03 0.6463542742E-01 0.9277221464E-03 0.8079428427E-01 0.9256670896E-03 0.9695314113E-01 0.9231578294E-03 0.1131119980 0.9201966522E-03 0.1292708548 0.9167869529E-03 0.1454297117 0.9129335427E-03 0.1615885685 0.9086429744E-03 0.1777474254 0.9039238757E-03 0.1939062823 0.8987872780E-03 0.2100651391 0.8932469288E-03 0.2262239960 0.8873195760E-03 0.2423828528 0.8810252100E-03 0.2585417097 0.8743872539E-03 0.2747005665 0.8674326870E-03 0.2908594234 0.8601920931E-03 0.3070182802 0.8526996212E-03 0.3231771371 0.8449928505E-03 0.3393359940 0.8371125511E-03 0.3554948508 0.8291023354E-03 0.3716537077 0.8210081963E-03 0.3878125645 0.8128779320E-03 0.4039714214 0.8047604597E-03 0.4201302782 0.7967050273E-03 0.4362891351 0.7887603331E-03 0.4524479919 0.7809735719E-03 0.4686068488 0.7733894301E-03 0.4847657056 0.7660490568E-03 0.5009245625 0.7589890439E-03 0.5170834194 0.7522404519E-03 0.5332422762 0.7458279180E-03 0.5494011331 0.7397688866E-03 0.5655599899 0.7340729975E-03 0.5817188468 0.7287416631E-03 0.5978777036 0.7237678599E-03 0.6140365605 0.7191361480E-03 0.6301954173 0.7148229260E-03 0.6463542742 0.7107969124E-03 0.6625131310 0.7070198397E-03 0.6786719879 0.7034473335E-03 0.6948308448 0.7000299443E-03 0.7109897016 0.6967142929E-03 0.7271485585 0.6934442895E-03 0.7433074153 0.6901623855E-03 0.7594662722 0.6868108190E-03 0.7756251290 0.6833328195E-03 0.7917839859 0.6796737430E-03 0.8079428427 0.6757821120E-03 0.8241016996 0.6716105421E-03 0.8402605564 0.6671165427E-03 0.8564194133 0.6622631820E-03 0.8725782702 0.6570196131E-03 0.8887371270 0.6513614582E-03 0.9048959839 0.6452710535E-03 0.9210548407 0.6387375567E-03 0.9372136976 0.6317569222E-03 0.9533725544 0.6243317486E-03 0.9695314113 0.6164710038E-03 0.9856902681 0.6081896356E-03 1.001849125 0.5995080724E-03 1.018007982 0.5904516228E-03 1.034166839 0.5810497823E-03 1.050325696 0.5713354552E-03 1.066484552 0.5613441042E-03 1.082643409 0.5511128389E-03 1.098802266 0.5406794584E-03 1.114961123 0.5300814662E-03 1.131119980 0.5193550767E-03 1.147278837 0.5085342356E-03 1.163437694 0.4976496805E-03 1.179596550 0.4867280678E-03 1.195755407 0.4757911944E-03 1.211914264 0.4648553414E-03 1.228073121 0.4539307661E-03 1.244231978 0.4430213649E-03 1.260390835 0.4321245241E-03 1.276549692 0.4212311691E-03 1.292708548 0.4103260157E-03 1.308867405 0.3993880164E-03 1.325026262 0.3883909878E-03 1.341185119 0.3773043973E-03 1.357343976 0.3660942780E-03 1.373502833 0.3547242407E-03 1.389661690 0.3431565434E-03 1.405820546 0.3313531830E-03 1.421979403 0.3192769728E-03 1.438138260 0.3068925731E-03 1.454297117 0.2941674475E-03 1.470455974 0.2810727219E-03 1.486614831 0.2675839295E-03 1.502773687 0.2536816305E-03 1.518932544 0.2393519002E-03 1.535091401 0.2245866829E-03 1.551250258 0.2093840159E-03 1.567409115 0.1937481246E-03 1.583567972 0.1776894001E-03 1.599726829 0.1612242639E-03 1.615885685 0.1443749321E-03 1.632044542 0.1271690869E-03 1.648203399 0.1096394675E-03 1.664362256 0.9182338853E-04 1.680521113 0.7376219778E-04 1.696679970 0.5550068126E-04 1.712838827 0.3708642597E-04 1.728997683 0.1856914872E-04 1.745156540 -0.2119926836E-10 1.761407614 0.1167636695E-04 1.777658689 0.2335431344E-04 1.793909763 0.3503448487E-04 1.810160837 0.4671580312E-04 1.826411911 0.5839495466E-04 1.842662985 0.7006626520E-04 1.858914059 0.8172203856E-04 1.875165134 0.9335340005E-04 1.891416208 0.1049516447E-03 1.907667282 0.1165100499E-03 1.923918356 0.1280260726E-03 1.940169430 0.1395038111E-03 1.956420504 0.1509565740E-03 1.972671579 0.1624093640E-03 1.988922653 0.1739010497E-03 2.005173727 0.1854859764E-03 2.021424801 0.1972347558E-03 2.037675875 0.2092339914E-03 2.053926949 0.2215847406E-03 2.070178024 0.2343996099E-03 2.086429098 0.2477985034E-03 2.102680172 0.2619032110E-03 2.118931246 0.2768311811E-03 2.135182320 0.2926889640E-03 2.151433394 0.3095658799E-03 2.167684469 0.3275284552E-03 2.183935543 0.3466160737E-03 2.200186617 0.3668381258E-03 2.216437691 0.3881727572E-03 2.232688765 0.4105671446E-03 2.248939839 0.4339391020E-03 2.265190914 0.4581797485E-03 2.281441988 0.4831569511E-03 2.297693062 0.5087192755E-03 2.313944136 0.5347002181E-03 2.330195210 0.5609225416E-03 2.346446284 0.5872025797E-03 2.362697359 0.6133544140E-03 2.378948433 0.6391938507E-03 2.395199507 0.6645421426E-03 2.411450581 0.6892294124E-03 2.427701655 0.7130977362E-03 2.443952729 0.7360038507E-03 2.460203804 0.7578214455E-03 2.476454878 0.7784430045E-03 2.492705952 0.7977811601E-03 2.508957026 0.8157695289E-03 2.525208100 0.8323629988E-03 2.541459174 0.8475374491E-03 2.557710249 0.8612888924E-03 2.573961323 0.8736320412E-03 2.590212397 0.8845983202E-03 2.606463471 0.8942333621E-03 2.622714545 0.9025940497E-03 2.638965619 0.9097451893E-03 2.655216694 0.9157559245E-03 2.671467768 0.9206960231E-03 2.687718842 0.9246321869E-03 2.703969916 0.9276245453E-03 2.720220990 0.9297235006E-03 2.736472064 0.9309670795E-03 2.752723139 0.9313789310E-03 2.768555520 0.9310415145E-03 2.784387902 0.9300318416E-03 2.800220284 0.9283576210E-03 2.816052665 0.9260316320E-03 2.831885047 0.9230716207E-03 2.847717429 0.9195001550E-03 2.863549810 0.9153444378E-03 2.879382192 0.9106360779E-03 2.895214573 0.9054108183E-03 2.911046955 0.8997082232E-03 2.926879337 0.8935713220E-03 2.942711718 0.8870462122E-03 2.958544100 0.8801816225E-03 2.974376482 0.8730284369E-03 2.990208863 0.8656391834E-03 3.006041245 0.8580674899E-03 3.021873627 0.8503675138E-03 3.037706008 0.8425933502E-03 3.053538390 0.8347984260E-03 3.069370772 0.8270348916E-03 3.085203153 0.8193530174E-03 3.101035535 0.8118006112E-03 3.116867917 0.8044224661E-03 3.132700298 0.7972598562E-03 3.148532680 0.7903500920E-03 3.164365062 0.7837261508E-03 3.180197443 0.7774163956E-03 3.196029825 0.7714443911E-03 3.211862206 0.7658288284E-03 3.227694588 0.7605835607E-03 3.243526970 0.7557177532E-03 3.259359351 0.7512361438E-03 3.275191733 0.7471394074E-03 3.291024115 0.7434246133E-03 3.306856496 0.7400857612E-03 3.322688878 0.7371143773E-03 3.338521260 0.7345001530E-03 3.354353641 0.7322316028E-03 3.370186023 0.7302967217E-03 3.386018405 0.7286836213E-03 3.401850786 0.7273811237E-03 3.417683168 0.7263792965E-03 3.433515550 0.7256699122E-03 3.449347931 0.7252468199E-03 3.465180313 0.7251062178E-03 3.480923541 0.7248313455E-03 3.496666769 0.7240062022E-03 3.512409997 0.7226296219E-03 3.528153225 0.7207010079E-03 3.543896453 0.7182222425E-03 3.559639681 0.7152001460E-03 3.575382910 0.7116492886E-03 3.591126138 0.7075949175E-03 3.606869366 0.7030757389E-03 3.622612594 0.6981462775E-03 3.638355822 0.6928785350E-03 3.654099050 0.6873626761E-03 3.669842278 0.6817064970E-03 3.685585506 0.6760334738E-03 3.701328734 0.6704792586E-03 3.717071962 0.6651865916E-03 3.732815191 0.6602987345E-03 3.748558419 0.6559516975E-03 3.764301647 0.6522657171E-03 3.780044875 0.6493366182E-03 3.795788103 0.6472278275E-03 3.811531331 0.6459638457E-03 3.827274559 0.6455259236E-03 3.843017787 0.6458504953E-03 3.858761015 0.6468306416E-03 3.874504243 0.6483205301E-03 3.890247471 0.6501424771E-03 3.905990700 0.6520960499E-03 3.921733928 0.6539685115E-03 3.937477156 0.6555459029E-03 3.953220384 0.6566241383E-03 3.968963612 0.6570196131E-03 3.984706840 0.6566241383E-03 4.000450068 0.6555459029E-03 4.016193296 0.6539685115E-03 4.031936524 0.6520960499E-03 4.047679752 0.6501424771E-03 4.063422981 0.6483205301E-03 4.079166209 0.6468306416E-03 4.094909437 0.6458504953E-03 4.110652665 0.6455259236E-03 4.126395893 0.6459638457E-03 4.142139121 0.6472278275E-03 4.157882349 0.6493366182E-03 4.173625577 0.6522657171E-03 4.189368805 0.6559516975E-03 4.205112033 0.6602987345E-03 4.220855262 0.6651865916E-03 4.236598490 0.6704792586E-03 4.252341718 0.6760334738E-03 4.268084946 0.6817064970E-03 4.283828174 0.6873626761E-03 4.299571402 0.6928785350E-03 4.315314630 0.6981462775E-03 4.331057858 0.7030757389E-03 4.346801086 0.7075949175E-03 4.362544314 0.7116492886E-03 4.378287543 0.7152001460E-03 4.394030771 0.7182222425E-03 4.409773999 0.7207010079E-03 4.425517227 0.7226296219E-03 4.441260455 0.7240062022E-03 4.457003683 0.7248313455E-03 4.472746911 0.7251062178E-03 4.488939120 0.7235143564E-03 4.505131328 0.7187587152E-03 4.521323537 0.7108989667E-03 4.537515745 0.7000340463E-03 4.553707954 0.6863013838E-03 4.569900162 0.6698758436E-03 4.586092371 0.6509683880E-03 4.602284579 0.6298244767E-03 4.618476788 0.6067222063E-03 4.634668996 0.5819701823E-03 4.650861205 0.5687989475E-03 4.667053413 0.5595599677E-03 4.683245622 0.5498094229E-03 4.699437830 0.5395900901E-03 4.715630039 0.5289381856E-03 4.731822247 0.5178821764E-03 4.748014456 0.5064418846E-03 4.764206664 0.4946279331E-03 4.780398873 0.4824415667E-03 4.796591081 0.4698748664E-03 4.812783290 0.4569113536E-03 4.828975498 0.4435269622E-03 4.845167707 0.4296913364E-03 4.861359915 0.4153693970E-03 4.877552124 0.4005231054E-03 4.893744332 0.3851133484E-03 4.909936541 0.3691018636E-03 4.926128749 0.3524531298E-03 4.942320958 0.3351361515E-03 4.958513166 0.3171260770E-03 4.974705375 0.2984056039E-03 4.990897583 0.2789661338E-03 5.007089792 0.2584665104E-03 5.023282000 0.2292622790E-03 5.039474209 0.2011055267E-03 5.055666417 0.1741312921E-03 5.071858626 0.1484305000E-03 5.088050834 0.1260161104E-03 5.104243043 0.1071613779E-03 5.120435251 0.8716898304E-04 5.136627460 0.6623244272E-04 5.152819668 0.4456805630E-04 5.169011877 0.2240907709E-04 5.185204085 -0.2119926836E-10 5.201441086 0.1552421927E-04 5.217678086 0.3100431672E-04 5.233915086 0.4639714298E-04 5.250152087 0.6166148290E-04 5.266389087 0.7675899565E-04 5.282626087 0.9165512120E-04 5.298863088 0.1063199403E-03 5.315100088 0.1207289731E-03 5.331337088 0.1348639006E-03 5.347574088 0.1487131902E-03 5.363811089 0.1622726050E-03 5.380048089 0.1755455749E-03 5.396285089 0.1885434067E-03 5.412522090 0.2084099482E-03 5.428759090 0.2289702160E-03 5.444996090 0.2498584163E-03 5.461233091 0.2709394545E-03 5.477470091 0.2920776823E-03 5.493707091 0.3131397230E-03 5.509944092 0.3339970630E-03 5.526181092 0.3545283570E-03 5.542418092 0.3746213881E-03 5.558655093 0.3941746297E-03 5.574892093 0.4130983715E-03 5.591129093 0.4313153987E-03 5.607366093 0.4487612390E-03 5.623603094 0.4653840207E-03 5.639840094 0.4811440041E-03 5.656077094 0.4960128630E-03 5.672314095 0.5099727912E-03 5.688551095 0.5230155091E-03 5.704788095 0.5351412266E-03 5.721025096 0.5463576099E-03 5.737262096 0.5566787792E-03 5.753499096 0.5661243544E-03 5.769736097 0.5747185510E-03 5.785973097 0.5824893226E-03 5.802210097 0.5894675395E-03 5.818447098 0.5956861911E-03 5.834684098 0.6011795991E-03 5.850921098 0.6059826331E-03 5.867158099 0.6101299231E-03 5.883395099 0.6136550749E-03 5.899632099 0.6239757469E-03 5.915869099 0.6381178474E-03 5.932106100 0.6516774287E-03 5.948343100 0.6645922746E-03 5.964580100 0.6768060026E-03 5.980817101 0.6882688104E-03 5.997054101 0.6989381423E-03 6.013291101 0.7087792742E-03 6.029528102 0.7177658112E-03 6.045765102 0.7258800971E-03 6.062002102 0.7331135280E-03 6.078239103 0.7394667658E-03 6.094476103 0.7401205845E-03 6.110713103 0.7355894382E-03 6.126950104 0.7318374866E-03 6.143187104 0.7288203223E-03 6.159424104 0.7264730008E-03 6.175661104 0.7247190388E-03 6.191898105 0.7234777089E-03 6.208135105 0.7226691657E-03 6.224372105 0.7222175804E-03 6.240609106 0.7220527590E-03 6.256846106 0.7221107664E-03 6.273083106 0.7223339807E-03 6.289320107 0.7226708812E-03 6.305557107 0.7230757563E-03 6.321794107 0.7235084363E-03 6.338031108 0.7239341004E-03 6.354268108 0.7243231744E-03 6.370505108 0.7246513112E-03 6.386742109 0.7248994364E-03 6.402979109 0.7250538307E-03 6.419216109 0.7251062178E-03 0.000000000 0.9313789310E-03 0.1615885685E-01 0.9311502856E-03 0.3231771371E-01 0.9304644149E-03 0.4847657056E-01 0.9293215438E-03 0.6463542742E-01 0.9277221464E-03 0.8079428427E-01 0.9256670896E-03 0.9695314113E-01 0.9231578294E-03 0.1131119980 0.9201966522E-03 0.1292708548 0.9167869529E-03 0.1454297117 0.9129335427E-03 0.1615885685 0.9086429744E-03 0.1777474254 0.9039238757E-03 0.1939062823 0.8987872780E-03 0.2100651391 0.8932469288E-03 0.2262239960 0.8873195760E-03 0.2423828528 0.8810252100E-03 0.2585417097 0.8743872539E-03 0.2747005665 0.8674326870E-03 0.2908594234 0.8601920931E-03 0.3070182802 0.8526996212E-03 0.3231771371 0.8449928505E-03 0.3393359940 0.8371125511E-03 0.3554948508 0.8291023354E-03 0.3716537077 0.8210081963E-03 0.3878125645 0.8128779320E-03 0.4039714214 0.8047604597E-03 0.4201302782 0.7967050273E-03 0.4362891351 0.7887603331E-03 0.4524479919 0.7809735719E-03 0.4686068488 0.7733894301E-03 0.4847657056 0.7660490568E-03 0.5009245625 0.7589890439E-03 0.5170834194 0.7522404519E-03 0.5332422762 0.7458279180E-03 0.5494011331 0.7397688866E-03 0.5655599899 0.7340729975E-03 0.5817188468 0.7287416631E-03 0.5978777036 0.7237678599E-03 0.6140365605 0.7191361480E-03 0.6301954173 0.7148229260E-03 0.6463542742 0.7107969124E-03 0.6625131310 0.7070198397E-03 0.6786719879 0.7034473335E-03 0.6948308448 0.7000299443E-03 0.7109897016 0.6967142929E-03 0.7271485585 0.6934442895E-03 0.7433074153 0.6901623855E-03 0.7594662722 0.6868108190E-03 0.7756251290 0.6833328195E-03 0.7917839859 0.6796737430E-03 0.8079428427 0.6757821120E-03 0.8241016996 0.6716105421E-03 0.8402605564 0.6671165427E-03 0.8564194133 0.6622631820E-03 0.8725782702 0.6570196131E-03 0.8887371270 0.6683238988E-03 0.9048959839 0.6803482590E-03 0.9210548407 0.6929261176E-03 0.9372136976 0.7058712118E-03 0.9533725544 0.7189830094E-03 0.9695314113 0.7320520112E-03 0.9856902681 0.7448647193E-03 1.001849125 0.7572081318E-03 1.018007982 0.7688736961E-03 1.034166839 0.7796607052E-03 1.050325696 0.7893791555E-03 1.066484552 0.7978521100E-03 1.082643409 0.8049176147E-03 1.098802266 0.8104302227E-03 1.114961123 0.8142621738E-03 1.131119980 0.8163042735E-03 1.147278837 0.8164665077E-03 1.163437694 0.8146784219E-03 1.179596550 0.8108892910E-03 1.195755407 0.8050680964E-03 1.211914264 0.7972033252E-03 1.228073121 0.7873026040E-03 1.244231978 0.7753921755E-03 1.260390835 0.7615162248E-03 1.276549692 0.7457360622E-03 1.292708548 0.7281291671E-03 1.308867405 0.7087880980E-03 1.325026262 0.6878192731E-03 1.341185119 0.6653416253E-03 1.357343976 0.6414851366E-03 1.373502833 0.6163892550E-03 1.389661690 0.5902011992E-03 1.405820546 0.5630741550E-03 1.421979403 0.5351653677E-03 1.438138260 0.5066341370E-03 1.454297117 0.4776397192E-03 1.470455974 0.4483391453E-03 1.486614831 0.4188849648E-03 1.502773687 0.3894229296E-03 1.518932544 0.3600896367E-03 1.535091401 0.3310101564E-03 1.551250258 0.3022956831E-03 1.567409115 0.2740412582E-03 1.583567972 0.2463236294E-03 1.599726829 0.2191993292E-03 1.615885685 0.1927030736E-03 1.632044542 0.1668465978E-03 1.648203399 0.1416180566E-03 1.664362256 0.1169821191E-03 1.680521113 0.9288087213E-04 1.696679970 0.6923561438E-04 1.712838827 0.4594957182E-04 1.728997683 0.2291149243E-04 1.745156540 -0.2119926836E-10 1.761407614 0.3380318417E-04 1.777658689 0.6757659530E-04 1.793909763 0.1012919656E-03 1.810160837 0.1349238606E-03 1.826411911 0.1684506640E-03 1.842662985 0.2018550785E-03 1.858914059 0.2351240334E-03 1.875165134 0.2682479362E-03 1.891416208 0.3012192555E-03 1.907667282 0.3340304763E-03 1.923918356 0.3666715269E-03 1.940169430 0.3991268246E-03 1.956420504 0.4313721293E-03 1.972671579 0.4633714226E-03 1.988922653 0.4950740404E-03 2.005173727 0.5264122773E-03 2.021424801 0.5572996633E-03 2.037675875 0.5876300687E-03 2.053926949 0.6172777520E-03 2.070178024 0.6460984093E-03 2.086429098 0.6739312349E-03 2.102680172 0.7006019556E-03 2.118931246 0.7259267608E-03 2.135182320 0.7497170216E-03 2.151433394 0.7717846701E-03 2.167684469 0.7919480976E-03 2.183935543 0.8100384241E-03 2.200186617 0.8259059892E-03 2.216437691 0.8394269182E-03 2.232688765 0.8505096115E-03 2.248939839 0.8591010100E-03 2.265190914 0.8651924743E-03 2.281441988 0.8688251010E-03 2.297693062 0.8700942668E-03 2.313944136 0.8691531462E-03 2.330195210 0.8662148826E-03 2.346446284 0.8615530121E-03 2.362697359 0.8554996464E-03 2.378948433 0.8484408364E-03 2.395199507 0.8408084909E-03 2.411450581 0.8330682650E-03 2.427701655 0.8257030272E-03 2.443952729 0.8191919259E-03 2.460203804 0.8139857362E-03 2.476454878 0.8104800285E-03 2.492705952 0.8089886005E-03 2.508957026 0.8157695289E-03 2.525208100 0.8323629988E-03 2.541459174 0.8475374491E-03 2.557710249 0.8612888924E-03 2.573961323 0.8736320412E-03 2.590212397 0.8845983202E-03 2.606463471 0.8942333621E-03 2.622714545 0.9025940497E-03 2.638965619 0.9097451893E-03 2.655216694 0.9157559245E-03 2.671467768 0.9206960231E-03 2.687718842 0.9246321869E-03 2.703969916 0.9276245453E-03 2.720220990 0.9297235006E-03 2.736472064 0.9309670795E-03 2.752723139 0.9313789310E-03 2.768555520 0.9310966440E-03 2.784387902 0.9302518739E-03 2.800220284 0.9288508759E-03 2.816052665 0.9269040163E-03 2.831885047 0.9244256845E-03 2.847717429 0.9214341697E-03 2.863549810 0.9179515025E-03 2.879382192 0.9140032623E-03 2.895214573 0.9096183505E-03 2.911046955 0.9048287296E-03 2.926879337 0.8996691312E-03 2.942711718 0.8941767318E-03 2.958544100 0.8883907998E-03 2.974376482 0.8823523156E-03 2.990208863 0.8761035678E-03 3.006041245 0.8696877289E-03 3.021873627 0.8631484152E-03 3.037706008 0.8565292368E-03 3.053538390 0.8498733423E-03 3.069370772 0.8432229666E-03 3.085203153 0.8366189896E-03 3.101035535 0.8301005125E-03 3.116867917 0.8237044628E-03 3.132700298 0.8174652358E-03 3.148532680 0.8114143807E-03 3.164365062 0.8055803421E-03 3.180197443 0.7999882620E-03 3.196029825 0.7946598493E-03 3.211862206 0.7896133222E-03 3.227694588 0.7848634246E-03 3.243526970 0.7804215173E-03 3.259359351 0.7762957418E-03 3.275191733 0.7724912522E-03 3.291024115 0.7690105075E-03 3.306856496 0.7658536155E-03 3.322688878 0.7630187173E-03 3.338521260 0.7605024002E-03 3.354353641 0.7583001248E-03 3.370186023 0.7564066541E-03 3.386018405 0.7548164693E-03 3.401850786 0.7535241602E-03 3.417683168 0.7525247786E-03 3.433515550 0.7518141418E-03 3.449347931 0.7513890796E-03 3.465180313 0.7512476160E-03 3.480923541 0.7515873200E-03 3.496666769 0.7525911446E-03 3.512409997 0.7542139299E-03 3.528153225 0.7563826918E-03 3.543896453 0.7589998576E-03 3.559639681 0.7619474463E-03 3.575382910 0.7650919047E-03 3.591126138 0.7682892956E-03 3.606869366 0.7713905551E-03 3.622612594 0.7742465744E-03 3.638355822 0.7767129180E-03 3.654099050 0.7786540447E-03 3.669842278 0.7799469525E-03 3.685585506 0.7804842107E-03 3.701328734 0.7801763774E-03 3.717071962 0.7789538235E-03 3.732815191 0.7767679959E-03 3.748558419 0.7735921605E-03 3.764301647 0.7694216678E-03 3.780044875 0.7642737763E-03 3.795788103 0.7581870685E-03 3.811531331 0.7512204855E-03 3.827274559 0.7434519997E-03 3.843017787 0.7349769400E-03 3.858761015 0.7259059804E-03 3.874504243 0.7163627969E-03 3.890247471 0.7064814052E-03 3.905990700 0.6964031908E-03 3.921733928 0.6862736587E-03 3.937477156 0.6762389447E-03 3.953220384 0.6664421526E-03 3.968963612 0.6570196131E-03 3.984706840 0.6664421526E-03 4.000450068 0.6762389447E-03 4.016193296 0.6862736587E-03 4.031936524 0.6964031908E-03 4.047679752 0.7064814052E-03 4.063422981 0.7163627969E-03 4.079166209 0.7259059804E-03 4.094909437 0.7349769400E-03 4.110652665 0.7434519997E-03 4.126395893 0.7512204855E-03 4.142139121 0.7581870685E-03 4.157882349 0.7642737763E-03 4.173625577 0.7694216678E-03 4.189368805 0.7735921605E-03 4.205112033 0.7767679959E-03 4.220855262 0.7789538235E-03 4.236598490 0.7801763774E-03 4.252341718 0.7804842107E-03 4.268084946 0.7799469525E-03 4.283828174 0.7786540447E-03 4.299571402 0.7767129180E-03 4.315314630 0.7742465744E-03 4.331057858 0.7713905551E-03 4.346801086 0.7682892956E-03 4.362544314 0.7650919047E-03 4.378287543 0.7619474463E-03 4.394030771 0.7589998576E-03 4.409773999 0.7563826918E-03 4.425517227 0.7542139299E-03 4.441260455 0.7525911446E-03 4.457003683 0.7515873200E-03 4.472746911 0.7512476160E-03 4.488939120 0.7514290962E-03 4.505131328 0.7519486287E-03 4.521323537 0.7527327840E-03 4.537515745 0.7536633756E-03 4.553707954 0.7545833550E-03 4.569900162 0.7553043340E-03 4.586092371 0.7556151499E-03 4.602284579 0.7552908805E-03 4.618476788 0.7541017803E-03 4.634668996 0.7518217103E-03 4.650861205 0.7482357559E-03 4.667053413 0.7431468408E-03 4.683245622 0.7363812499E-03 4.699437830 0.7277930438E-03 4.715630039 0.7172674045E-03 4.731822247 0.7047229816E-03 4.748014456 0.6901133227E-03 4.764206664 0.6734274775E-03 4.780398873 0.6546898601E-03 4.796591081 0.6339594493E-03 4.812783290 0.6113283946E-03 4.828975498 0.5869200909E-03 4.845167707 0.5608867720E-03 4.861359915 0.5334066674E-03 4.877552124 0.5046807581E-03 4.893744332 0.4749291604E-03 4.909936541 0.4443871577E-03 4.926128749 0.4133008932E-03 4.942320958 0.3819227266E-03 4.958513166 0.3505062498E-03 4.974705375 0.3193009453E-03 4.990897583 0.2885464660E-03 5.007089792 0.2588086547E-03 5.023282000 0.2379443380E-03 5.039474209 0.2163948486E-03 5.055666417 0.1941923737E-03 5.071858626 0.1713793852E-03 5.088050834 0.1480081520E-03 5.104243043 0.1241400259E-03 5.120435251 0.9984452528E-04 5.136627460 0.7519824415E-04 5.152819668 0.5028361428E-04 5.169011877 0.2518754928E-04 5.185204085 -0.2119926836E-10 5.201441086 0.3016069697E-04 5.217678086 0.6029173035E-04 5.233915086 0.9036358696E-04 5.250152087 0.1203470472E-03 5.266389087 0.1502133130E-03 5.282626087 0.1799341124E-03 5.298863088 0.2094817707E-03 5.315100088 0.2388292376E-03 5.331337088 0.2679500575E-03 5.347574088 0.2968182704E-03 5.363811089 0.3254082282E-03 5.380048089 0.3536943149E-03 5.396285089 0.3816505584E-03 5.412522090 0.4092501290E-03 5.428759090 0.4364647261E-03 5.444996090 0.4632638661E-03 5.461233091 0.4896140979E-03 5.477470091 0.5154781886E-03 5.493707091 0.5408143373E-03 5.509944092 0.5655754880E-03 5.526181092 0.5897088185E-03 5.542418092 0.6131554830E-03 5.558655093 0.6358506710E-03 5.574892093 0.6577240277E-03 5.591129093 0.6787004496E-03 5.607366093 0.6987012402E-03 5.623603094 0.7176455813E-03 5.639840094 0.7354522528E-03 5.656077094 0.7520415213E-03 5.672314095 0.7673371150E-03 5.688551095 0.7812682064E-03 5.704788095 0.7937713375E-03 5.721025096 0.8047922369E-03 5.737262096 0.8142874912E-03 5.753499096 0.8222260504E-03 5.769736097 0.8285905564E-03 5.785973097 0.8333784910E-03 5.802210097 0.8366031478E-03 5.818447098 0.8382944308E-03 5.834684098 0.8384994834E-03 5.850921098 0.8372831478E-03 5.867158099 0.8347282455E-03 5.883395099 0.8309356591E-03 5.899632099 0.8260241791E-03 5.915869099 0.8201300499E-03 5.932106100 0.8134061168E-03 5.948343100 0.8060204255E-03 5.964580100 0.7981540638E-03 5.980817101 0.7899979762E-03 5.997054101 0.7817484417E-03 6.013291101 0.7736009433E-03 6.029528102 0.7657423478E-03 6.045765102 0.7583417257E-03 6.062002102 0.7515407693E-03 6.078239103 0.7454454176E-03 6.094476103 0.7449498444E-03 6.110713103 0.7495821620E-03 6.126950104 0.7533923492E-03 6.143187104 0.7564180072E-03 6.159424104 0.7587053047E-03 6.175661104 0.7603084261E-03 6.191898105 0.7612888633E-03 6.208135105 0.7617145443E-03 6.224372105 0.7616587968E-03 6.240609106 0.7611991469E-03 6.256846106 0.7604159594E-03 6.273083106 0.7593909337E-03 6.289320107 0.7582054748E-03 6.305557107 0.7569389729E-03 6.321794107 0.7556670282E-03 6.338031108 0.7544596729E-03 6.354268108 0.7533796452E-03 6.370505108 0.7524807790E-03 6.386742109 0.7518065730E-03 6.402979109 0.7513890004E-03 6.419216109 0.7512476160E-03 elk-2.3.22/examples/Nb-superconductor/PaxHeaders.22528/PHLWIDTH.OUT0000644002504400250440000000005012337331331022454 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/PHLWIDTH.OUT0000644002504400250440000012660212337331331023227 0ustar00dewhurstdewhurst00000000000000 0.000000000 0.8107056139E-05 0.1615885685E-01 0.8102016278E-05 0.3231771371E-01 0.8087081550E-05 0.4847657056E-01 0.8062800025E-05 0.6463542742E-01 0.8030063864E-05 0.8079428427E-01 0.7990078601E-05 0.9695314113E-01 0.7944322464E-05 0.1131119980 0.7894497830E-05 0.1292708548 0.7842477212E-05 0.1454297117 0.7790246270E-05 0.1615885685 0.7739846278E-05 0.1777474254 0.7693318253E-05 0.1939062823 0.7652650564E-05 0.2100651391 0.7619731420E-05 0.2262239960 0.7596307152E-05 0.2423828528 0.7583946723E-05 0.2585417097 0.7584012544E-05 0.2747005665 0.7597637340E-05 0.2908594234 0.7625706646E-05 0.3070182802 0.7668846450E-05 0.3231771371 0.7727415538E-05 0.3393359940 0.7791114969E-05 0.3554948508 0.7752781485E-05 0.3716537077 0.7719875245E-05 0.3878125645 0.7694493444E-05 0.4039714214 0.7678755023E-05 0.4201302782 0.7674747885E-05 0.4362891351 0.7684476939E-05 0.4524479919 0.7709813723E-05 0.4686068488 0.7752447938E-05 0.4847657056 0.7813840874E-05 0.5009245625 0.7895180508E-05 0.5170834194 0.7997338020E-05 0.5332422762 0.8120825666E-05 0.5494011331 0.8265756291E-05 0.5655599899 0.8431805300E-05 0.5817188468 0.8618176538E-05 0.5978777036 0.8823574116E-05 0.6140365605 0.9046182795E-05 0.6301954173 0.9283659878E-05 0.6463542742 0.9533141673E-05 0.6625131310 0.9791267339E-05 0.6786719879 0.1005422239E-04 0.6948308448 0.1031780318E-04 0.7109897016 0.1057750246E-04 0.7271485585 0.1082861476E-04 0.7433074153 0.1106635877E-04 0.7594662722 0.1128601233E-04 0.7756251290 0.1148305461E-04 0.7917839859 0.1165330877E-04 0.8079428427 0.1179307804E-04 0.8241016996 0.1189682840E-04 0.8402605564 0.1194273726E-04 0.8564194133 0.1197644856E-04 0.8725782702 0.1199639978E-04 0.8887371270 0.1195235353E-04 0.9048959839 0.1187085104E-04 0.9210548407 0.1175351247E-04 0.9372136976 0.1160263145E-04 0.9533725544 0.1142106579E-04 0.9695314113 0.1121210967E-04 0.9856902681 0.1097935402E-04 1.001849125 0.1072654223E-04 1.018007982 0.1045742811E-04 1.034166839 0.1017564241E-04 1.050325696 0.9884573253E-05 1.066484552 0.9587264730E-05 1.082643409 0.9286336588E-05 1.098802266 0.8983926740E-05 1.114961123 0.8681657217E-05 1.131119980 0.8380623241E-05 1.147278837 0.8081404397E-05 1.163437694 0.7784096384E-05 1.179596550 0.7340826372E-05 1.195755407 0.6821971970E-05 1.211914264 0.6296480304E-05 1.228073121 0.5770012394E-05 1.244231978 0.5248232331E-05 1.260390835 0.4736643418E-05 1.276549692 0.4240430914E-05 1.292708548 0.3764318670E-05 1.308867405 0.3312446107E-05 1.325026262 0.2888270826E-05 1.341185119 0.2494500597E-05 1.357343976 0.2133056784E-05 1.373502833 0.1805069450E-05 1.389661690 0.1510902654E-05 1.405820546 0.1250206862E-05 1.421979403 0.1021994101E-05 1.438138260 0.8247305479E-06 1.454297117 0.6564406635E-06 1.470455974 0.5148168893E-06 1.486614831 0.3973291557E-06 1.502773687 0.3013290691E-06 1.518932544 0.2241445155E-06 1.535091401 0.1631614802E-06 1.551250258 0.1158910250E-06 1.567409115 0.8002050479E-07 1.583567972 0.5344915834E-07 1.599726829 0.3430910354E-07 1.615885685 0.2097347367E-07 1.632044542 0.1205391406E-07 1.648203399 0.6389927966E-08 1.664362256 0.3032630975E-08 1.680521113 0.1225378380E-08 1.696679970 0.3835100913E-09 1.712838827 0.7515346195E-10 1.728997683 0.4674331753E-11 1.745156540 0.1264001320E-34 1.761407614 0.7541940591E-10 1.777658689 0.1194895585E-08 1.793909763 0.5951081710E-08 1.810160837 0.1838485160E-07 1.826411911 0.4359793905E-07 1.842662985 0.8727209035E-07 1.858914059 0.1551464553E-06 1.875165134 0.2525074664E-06 1.891416208 0.3837413741E-06 1.907667282 0.5519897718E-06 1.923918356 0.7589344686E-06 1.940169430 0.1004722019E-05 1.956420504 0.1288022310E-05 1.972671579 0.1606201806E-05 1.988922653 0.1955581954E-05 2.005173727 0.2331747573E-05 2.021424801 0.2729869150E-05 2.037675875 0.3145006156E-05 2.053926949 0.3572364945E-05 2.070178024 0.4007493226E-05 2.086429098 0.4446402180E-05 2.102680172 0.4885615972E-05 2.118931246 0.5322155721E-05 2.135182320 0.5753470478E-05 2.151433394 0.6177331263E-05 2.167684469 0.6591705635E-05 2.183935543 0.6994630136E-05 2.200186617 0.7384096273E-05 2.216437691 0.7757963135E-05 2.232688765 0.8113906311E-05 2.248939839 0.8449408976E-05 2.265190914 0.8761796877E-05 2.281441988 0.9048314869E-05 2.297693062 0.9306238740E-05 2.313944136 0.9533012737E-05 2.330195210 0.9726400579E-05 2.346446284 0.9884636299E-05 2.362697359 0.1000656102E-04 2.378948433 0.1009173290E-04 2.395199507 0.1014049986E-04 2.411450581 0.1015402826E-04 2.427701655 0.1013428469E-04 2.443952729 0.1008397240E-04 2.460203804 0.1000642799E-04 2.476454878 0.9905487027E-05 2.492705952 0.9785329729E-05 2.508957026 0.9650318553E-05 2.525208100 0.9504839343E-05 2.541459174 0.9353156265E-05 2.557710249 0.9199288561E-05 2.573961323 0.9046914465E-05 2.590212397 0.8899304862E-05 2.606463471 0.8759286645E-05 2.622714545 0.8629233551E-05 2.638965619 0.8511080562E-05 2.655216694 0.8406356893E-05 2.671467768 0.8316231999E-05 2.687718842 0.8241568939E-05 2.703969916 0.8182979713E-05 2.720220990 0.8140877646E-05 2.736472064 0.8115522673E-05 2.752723139 0.8107056139E-05 2.768555520 0.8099636566E-05 2.784387902 0.8077595488E-05 2.800220284 0.8041579061E-05 2.816052665 0.7992642005E-05 2.831885047 0.7932215494E-05 2.847717429 0.7862064499E-05 2.863549810 0.7784236688E-05 2.879382192 0.7701005327E-05 2.895214573 0.7614808755E-05 2.911046955 0.7528189024E-05 2.926879337 0.7443732069E-05 2.942711718 0.7364011454E-05 2.958544100 0.7291537241E-05 2.974376482 0.7228711002E-05 2.990208863 0.7177787404E-05 3.006041245 0.7140842218E-05 3.021873627 0.7119746135E-05 3.037706008 0.7116143327E-05 3.053538390 0.7131433488E-05 3.069370772 0.7166755971E-05 3.085203153 0.7222974704E-05 3.101035535 0.7300662834E-05 3.116867917 0.7400086404E-05 3.132700298 0.7521186851E-05 3.148532680 0.7663562688E-05 3.164365062 0.7826451248E-05 3.180197443 0.8008711931E-05 3.196029825 0.8208812798E-05 3.211862206 0.8424822653E-05 3.227694588 0.8654410897E-05 3.243526970 0.8894857323E-05 3.259359351 0.9143073803E-05 3.275191733 0.9395639295E-05 3.291024115 0.9648849019E-05 3.306856496 0.9898777834E-05 3.322688878 0.1014135702E-04 3.338521260 0.1037246281E-04 3.354353641 0.1058801414E-04 3.370186023 0.1064217147E-04 3.386018405 0.1041397000E-04 3.401850786 0.1022228621E-04 3.417683168 0.1007014573E-04 3.433515550 0.9959857846E-05 3.449347931 0.9893044722E-05 3.465180313 0.9870667587E-05 3.480923541 0.9876070540E-05 3.496666769 0.9892022431E-05 3.512409997 0.9917773008E-05 3.528153225 0.9952139426E-05 3.543896453 0.9993603176E-05 3.559639681 0.1004043688E-04 3.575382910 0.1009085206E-04 3.591126138 0.1014315661E-04 3.606869366 0.1019590929E-04 3.622612594 0.1024805731E-04 3.638355822 0.1029904416E-04 3.654099050 0.1034887603E-04 3.669842278 0.1039813873E-04 3.685585506 0.1044796077E-04 3.701328734 0.1049992297E-04 3.717071962 0.1055591939E-04 3.732815191 0.1061797825E-04 3.748558419 0.1068805445E-04 3.764301647 0.1073529812E-04 3.780044875 0.1062096046E-04 3.795788103 0.1058513006E-04 3.811531331 0.1061778794E-04 3.827274559 0.1070769441E-04 3.843017787 0.1084258572E-04 3.858761015 0.1100942232E-04 3.874504243 0.1119471435E-04 3.890247471 0.1138493184E-04 3.905990700 0.1156698773E-04 3.921733928 0.1172876347E-04 3.937477156 0.1185963460E-04 3.953220384 0.1195094744E-04 3.968963612 0.1199639978E-04 3.984706840 0.1195094744E-04 4.000450068 0.1185963460E-04 4.016193296 0.1172876347E-04 4.031936524 0.1156698773E-04 4.047679752 0.1138493184E-04 4.063422981 0.1119471435E-04 4.079166209 0.1100942232E-04 4.094909437 0.1084258572E-04 4.110652665 0.1070769441E-04 4.126395893 0.1061778794E-04 4.142139121 0.1058513006E-04 4.157882349 0.1062096046E-04 4.173625577 0.1073529812E-04 4.189368805 0.1068805445E-04 4.205112033 0.1061797825E-04 4.220855262 0.1055591939E-04 4.236598490 0.1049992297E-04 4.252341718 0.1044796077E-04 4.268084946 0.1039813873E-04 4.283828174 0.1034887603E-04 4.299571402 0.1029904416E-04 4.315314630 0.1024805731E-04 4.331057858 0.1019590929E-04 4.346801086 0.1014315661E-04 4.362544314 0.1009085206E-04 4.378287543 0.1004043688E-04 4.394030771 0.9993603176E-05 4.409773999 0.9952139426E-05 4.425517227 0.9917773008E-05 4.441260455 0.9892022431E-05 4.457003683 0.9876070540E-05 4.472746911 0.9870667587E-05 4.488939120 0.9823726639E-05 4.505131328 0.9684904209E-05 4.521323537 0.9460049763E-05 4.537515745 0.9158422829E-05 4.553707954 0.8792013539E-05 4.569900162 0.8374693490E-05 4.586092371 0.7921282156E-05 4.602284579 0.7446617404E-05 4.618476788 0.6964710960E-05 4.634668996 0.6488052629E-05 4.650861205 0.6027103947E-05 4.667053413 0.5589996430E-05 4.683245622 0.5182425734E-05 4.699437830 0.4807714189E-05 4.715630039 0.4467002511E-05 4.731822247 0.4159527895E-05 4.748014456 0.3882949406E-05 4.764206664 0.3633690633E-05 4.780398873 0.3407281229E-05 4.796591081 0.3198690099E-05 4.812783290 0.3002651079E-05 4.828975498 0.2813985111E-05 4.845167707 0.2627920776E-05 4.861359915 0.2440408278E-05 4.877552124 0.2248412618E-05 4.893744332 0.2050162394E-05 4.909936541 0.1845324184E-05 4.926128749 0.1635071331E-05 4.942320958 0.1422021414E-05 4.958513166 0.1210028900E-05 4.974705375 0.1003837156E-05 4.990897583 0.8086143768E-06 5.007089792 0.6294177898E-06 5.023282000 0.4706460019E-06 5.039474209 0.3355473127E-06 5.055666417 0.2258501926E-06 5.071858626 0.1415702112E-06 5.088050834 0.8102667277E-07 5.104243043 0.4107476533E-07 5.120435251 0.1752913451E-07 5.136627460 0.5726986225E-08 5.152819668 0.1157534111E-08 5.169011877 0.7335149420E-10 5.185204085 0.1264001320E-34 5.201441086 0.7271268414E-11 5.217678086 0.1170473555E-09 5.233915086 0.5984577247E-09 5.250152087 0.1917148178E-08 5.266389087 0.4759583611E-08 5.282626087 0.1006433411E-07 5.298863088 0.1905750867E-07 5.315100088 0.3328861335E-07 5.331337088 0.5466226279E-07 5.347574088 0.8546046106E-07 5.363811089 0.1283497088E-06 5.380048089 0.1863671183E-06 5.396285089 0.2628801441E-06 5.412522090 0.3615155546E-06 5.428759090 0.4860549156E-06 5.444996090 0.6402961032E-06 5.461233091 0.8278831070E-06 5.477470091 0.1052109449E-05 5.493707091 0.1315703676E-05 5.509944092 0.1620608320E-05 5.526181092 0.1967766079E-05 5.542418092 0.2356928573E-05 5.558655093 0.2786503474E-05 5.574892093 0.3181829555E-05 5.591129093 0.3569103613E-05 5.607366093 0.3969324469E-05 5.623603094 0.4378917306E-05 5.639840094 0.4794104423E-05 5.656077094 0.5210994482E-05 5.672314095 0.5625675105E-05 5.688551095 0.6034305215E-05 5.704788095 0.6433202569E-05 5.721025096 0.6818917879E-05 5.737262096 0.7188259753E-05 5.753499096 0.7537805342E-05 5.769736097 0.7776408942E-05 5.785973097 0.7869647866E-05 5.802210097 0.7950061643E-05 5.818447098 0.8021814066E-05 5.834684098 0.8087711008E-05 5.850921098 0.8150239930E-05 5.867158099 0.8211597594E-05 5.883395099 0.8273673849E-05 5.899632099 0.8338039568E-05 5.915869099 0.8405944726E-05 5.932106100 0.8478326716E-05 5.948343100 0.8555827751E-05 5.964580100 0.8638819748E-05 5.980817101 0.8727434866E-05 5.997054101 0.8821599662E-05 6.013291101 0.8921070456E-05 6.029528102 0.9025467072E-05 6.045765102 0.9134301363E-05 6.062002102 0.9246995568E-05 6.078239103 0.9362882506E-05 6.094476103 0.9481171645E-05 6.110713103 0.9600841589E-05 6.126950104 0.9720341971E-05 6.143187104 0.9836703289E-05 6.159424104 0.9942648797E-05 6.175661104 0.1002035083E-04 6.191898105 0.1005378367E-04 6.208135105 0.1005760825E-04 6.224372105 0.1004864585E-04 6.240609106 0.1003368963E-04 6.256846106 0.1001548985E-04 6.273083106 0.9995520286E-05 6.289320107 0.9974818205E-05 6.305557107 0.9954251596E-05 6.321794107 0.9934604877E-05 6.338031108 0.9916599017E-05 6.354268108 0.9900885872E-05 6.370505108 0.9888032644E-05 6.386742109 0.9878503842E-05 6.402979109 0.9872644608E-05 6.419216109 0.9870667587E-05 0.000000000 0.8107056139E-05 0.1615885685E-01 0.8102016278E-05 0.3231771371E-01 0.8087081550E-05 0.4847657056E-01 0.8062800025E-05 0.6463542742E-01 0.8030063864E-05 0.8079428427E-01 0.7990078601E-05 0.9695314113E-01 0.7944322464E-05 0.1131119980 0.7894497830E-05 0.1292708548 0.7842477212E-05 0.1454297117 0.7790246270E-05 0.1615885685 0.7739846278E-05 0.1777474254 0.7693318253E-05 0.1939062823 0.7652650564E-05 0.2100651391 0.7619731420E-05 0.2262239960 0.7596307152E-05 0.2423828528 0.7583946723E-05 0.2585417097 0.7584012544E-05 0.2747005665 0.7597637340E-05 0.2908594234 0.7625706646E-05 0.3070182802 0.7668846450E-05 0.3231771371 0.7727415538E-05 0.3393359940 0.7801502241E-05 0.3554948508 0.7890925442E-05 0.3716537077 0.7995239911E-05 0.3878125645 0.8113746164E-05 0.4039714214 0.8245505158E-05 0.4201302782 0.8389358099E-05 0.4362891351 0.8543951559E-05 0.4524479919 0.8707767870E-05 0.4686068488 0.8879160464E-05 0.4847657056 0.9056393487E-05 0.5009245625 0.9237684630E-05 0.5170834194 0.9421249742E-05 0.5332422762 0.9605347540E-05 0.5494011331 0.9788322463E-05 0.5655599899 0.9968643699E-05 0.5817188468 0.1014493842E-04 0.5978777036 0.1031601746E-04 0.6140365605 0.1048089205E-04 0.6301954173 0.1063878048E-04 0.6463542742 0.1078910430E-04 0.6625131310 0.1093147390E-04 0.6786719879 0.1106566414E-04 0.6948308448 0.1119158087E-04 0.7109897016 0.1130921994E-04 0.7271485585 0.1141862035E-04 0.7433074153 0.1151981364E-04 0.7594662722 0.1161277173E-04 0.7756251290 0.1169735554E-04 0.7917839859 0.1177326655E-04 0.8079428427 0.1184000382E-04 0.8241016996 0.1189682840E-04 0.8402605564 0.1194273726E-04 0.8564194133 0.1197644856E-04 0.8725782702 0.1199639978E-04 0.8887371270 0.1200076006E-04 0.9048959839 0.1198745754E-04 0.9210548407 0.1195422217E-04 0.9372136976 0.1189864377E-04 0.9533725544 0.1181824454E-04 0.9695314113 0.1171056453E-04 0.9856902681 0.1157325756E-04 1.001849125 0.1140419460E-04 1.018007982 0.1120157064E-04 1.034166839 0.1096401056E-04 1.050325696 0.1069066902E-04 1.066484552 0.1038131900E-04 1.082643409 0.1003642410E-04 1.098802266 0.9657189495E-05 1.114961123 0.9245587695E-05 1.131119980 0.8804355918E-05 1.147278837 0.8336963409E-05 1.163437694 0.7847548433E-05 1.179596550 0.7340826372E-05 1.195755407 0.6821971970E-05 1.211914264 0.6296480304E-05 1.228073121 0.5770012394E-05 1.244231978 0.5248232331E-05 1.260390835 0.4736643418E-05 1.276549692 0.4240430914E-05 1.292708548 0.3764318670E-05 1.308867405 0.3312446107E-05 1.325026262 0.2888270826E-05 1.341185119 0.2494500597E-05 1.357343976 0.2133056784E-05 1.373502833 0.1805069450E-05 1.389661690 0.1510902654E-05 1.405820546 0.1250206862E-05 1.421979403 0.1021994101E-05 1.438138260 0.8247305479E-06 1.454297117 0.6564406635E-06 1.470455974 0.5148168893E-06 1.486614831 0.3973291557E-06 1.502773687 0.3013290691E-06 1.518932544 0.2241445155E-06 1.535091401 0.1631614802E-06 1.551250258 0.1158910250E-06 1.567409115 0.8002050479E-07 1.583567972 0.5344915834E-07 1.599726829 0.3430910354E-07 1.615885685 0.2097347367E-07 1.632044542 0.1205391406E-07 1.648203399 0.6389927966E-08 1.664362256 0.3032630975E-08 1.680521113 0.1225378380E-08 1.696679970 0.3835100913E-09 1.712838827 0.7515346195E-10 1.728997683 0.4674331753E-11 1.745156540 0.1264001320E-34 1.761407614 0.7541940591E-10 1.777658689 0.1194895585E-08 1.793909763 0.5951081710E-08 1.810160837 0.1838485160E-07 1.826411911 0.4359793905E-07 1.842662985 0.8727209035E-07 1.858914059 0.1551464553E-06 1.875165134 0.2525074664E-06 1.891416208 0.3837413741E-06 1.907667282 0.5519897718E-06 1.923918356 0.7589344686E-06 1.940169430 0.1004722019E-05 1.956420504 0.1288022310E-05 1.972671579 0.1606201806E-05 1.988922653 0.1955581954E-05 2.005173727 0.2331747573E-05 2.021424801 0.2729869150E-05 2.037675875 0.3145006156E-05 2.053926949 0.3572364945E-05 2.070178024 0.4007493226E-05 2.086429098 0.4446402180E-05 2.102680172 0.4885615972E-05 2.118931246 0.5322155721E-05 2.135182320 0.5753470478E-05 2.151433394 0.6177331263E-05 2.167684469 0.6591705635E-05 2.183935543 0.6994630136E-05 2.200186617 0.7384096273E-05 2.216437691 0.7757963135E-05 2.232688765 0.8113906311E-05 2.248939839 0.8449408976E-05 2.265190914 0.8761796877E-05 2.281441988 0.9048314869E-05 2.297693062 0.9306238740E-05 2.313944136 0.9533012737E-05 2.330195210 0.9726400579E-05 2.346446284 0.9884636299E-05 2.362697359 0.1000656102E-04 2.378948433 0.1009173290E-04 2.395199507 0.1014049986E-04 2.411450581 0.1015402826E-04 2.427701655 0.1013428469E-04 2.443952729 0.1008397240E-04 2.460203804 0.1000642799E-04 2.476454878 0.9905487027E-05 2.492705952 0.9785329729E-05 2.508957026 0.9650318553E-05 2.525208100 0.9504839343E-05 2.541459174 0.9353156265E-05 2.557710249 0.9199288561E-05 2.573961323 0.9046914465E-05 2.590212397 0.8899304862E-05 2.606463471 0.8759286645E-05 2.622714545 0.8629233551E-05 2.638965619 0.8511080562E-05 2.655216694 0.8406356893E-05 2.671467768 0.8316231999E-05 2.687718842 0.8241568939E-05 2.703969916 0.8182979713E-05 2.720220990 0.8140877646E-05 2.736472064 0.8115522673E-05 2.752723139 0.8107056139E-05 2.768555520 0.8122136123E-05 2.784387902 0.8167364191E-05 2.800220284 0.8242702942E-05 2.816052665 0.8348084271E-05 2.831885047 0.8483400961E-05 2.847717429 0.8648495412E-05 2.863549810 0.8843145956E-05 2.879382192 0.9067051348E-05 2.895214573 0.9319814049E-05 2.911046955 0.9600923021E-05 2.926879337 0.9909736733E-05 2.942711718 0.1024546709E-04 2.958544100 0.1060716499E-04 2.974376482 0.1099370806E-04 2.990208863 0.1140379121E-04 3.006041245 0.1183592036E-04 3.021873627 0.1228840971E-04 3.037706008 0.1275938276E-04 3.053538390 0.1324677710E-04 3.069370772 0.1374835306E-04 3.085203153 0.1425438880E-04 3.101035535 0.1439115115E-04 3.116867917 0.1446922933E-04 3.132700298 0.1448776174E-04 3.148532680 0.1444741068E-04 3.164365062 0.1435032970E-04 3.180197443 0.1420007533E-04 3.196029825 0.1400146857E-04 3.211862206 0.1376041421E-04 3.227694588 0.1348368828E-04 3.243526970 0.1317870508E-04 3.259359351 0.1285327614E-04 3.275191733 0.1251537297E-04 3.291024115 0.1217290445E-04 3.306856496 0.1183351810E-04 3.322688878 0.1150443201E-04 3.338521260 0.1119230168E-04 3.354353641 0.1090312318E-04 3.370186023 0.1078407637E-04 3.386018405 0.1095696719E-04 3.401850786 0.1110336037E-04 3.417683168 0.1122038313E-04 3.433515550 0.1130570274E-04 3.449347931 0.1135759844E-04 3.465180313 0.1137501546E-04 3.480923541 0.1136710293E-04 3.496666769 0.1134383573E-04 3.512409997 0.1130659580E-04 3.528153225 0.1125759128E-04 3.543896453 0.1119972217E-04 3.559639681 0.1113640759E-04 3.575382910 0.1107138789E-04 3.591126138 0.1100851559E-04 3.606869366 0.1095154848E-04 3.622612594 0.1090395689E-04 3.638355822 0.1086875427E-04 3.654099050 0.1084835781E-04 3.669842278 0.1084448329E-04 3.685585506 0.1085807618E-04 3.701328734 0.1088927976E-04 3.717071962 0.1093743988E-04 3.732815191 0.1100114570E-04 3.748558419 0.1093675731E-04 3.764301647 0.1076780746E-04 3.780044875 0.1085837926E-04 3.795788103 0.1096018737E-04 3.811531331 0.1107274840E-04 3.827274559 0.1119454713E-04 3.843017787 0.1132296613E-04 3.858761015 0.1145428961E-04 3.874504243 0.1158379355E-04 3.890247471 0.1170593005E-04 3.905990700 0.1181460767E-04 3.921733928 0.1190356134E-04 3.937477156 0.1196679507E-04 3.953220384 0.1199259603E-04 3.968963612 0.1199639978E-04 3.984706840 0.1199259603E-04 4.000450068 0.1196679507E-04 4.016193296 0.1190356134E-04 4.031936524 0.1181460767E-04 4.047679752 0.1170593005E-04 4.063422981 0.1158379355E-04 4.079166209 0.1145428961E-04 4.094909437 0.1132296613E-04 4.110652665 0.1119454713E-04 4.126395893 0.1107274840E-04 4.142139121 0.1096018737E-04 4.157882349 0.1085837926E-04 4.173625577 0.1076780746E-04 4.189368805 0.1093675731E-04 4.205112033 0.1100114570E-04 4.220855262 0.1093743988E-04 4.236598490 0.1088927976E-04 4.252341718 0.1085807618E-04 4.268084946 0.1084448329E-04 4.283828174 0.1084835781E-04 4.299571402 0.1086875427E-04 4.315314630 0.1090395689E-04 4.331057858 0.1095154848E-04 4.346801086 0.1100851559E-04 4.362544314 0.1107138789E-04 4.378287543 0.1113640759E-04 4.394030771 0.1119972217E-04 4.409773999 0.1125759128E-04 4.425517227 0.1130659580E-04 4.441260455 0.1134383573E-04 4.457003683 0.1136710293E-04 4.472746911 0.1137501546E-04 4.488939120 0.1132287106E-04 4.505131328 0.1116882488E-04 4.521323537 0.1091984763E-04 4.537515745 0.1058694424E-04 4.553707954 0.1018430699E-04 4.569900162 0.9728264003E-05 4.586092371 0.9236133683E-05 4.602284579 0.8725098036E-05 4.618476788 0.8211195371E-05 4.634668996 0.7708508199E-05 4.650861205 0.7228590147E-05 4.667053413 0.6780141873E-05 4.683245622 0.6368915926E-05 4.699437830 0.5997808757E-05 4.715630039 0.5667087361E-05 4.731822247 0.5374698690E-05 4.748014456 0.5116620341E-05 4.764206664 0.4887227402E-05 4.780398873 0.4679668169E-05 4.796591081 0.4486256036E-05 4.812783290 0.4298892402E-05 4.828975498 0.4109533864E-05 4.845167707 0.3910706317E-05 4.861359915 0.3696051003E-05 4.877552124 0.3460867073E-05 4.893744332 0.3202596763E-05 4.909936541 0.2921187767E-05 4.926128749 0.2619266798E-05 4.942320958 0.2302070589E-05 4.958513166 0.1977105433E-05 4.974705375 0.1653540737E-05 4.990897583 0.1341381055E-05 5.007089792 0.1050498136E-05 5.023282000 0.7896332131E-06 5.039474209 0.5654942574E-06 5.055666417 0.3820696321E-06 5.071858626 0.2402576491E-06 5.088050834 0.1378731055E-06 5.104243043 0.7004205941E-07 5.120435251 0.2994206636E-07 5.136627460 0.9795023651E-08 5.152819668 0.1981543079E-08 5.169011877 0.1256347082E-09 5.185204085 0.1264001320E-34 5.201441086 0.1648921692E-10 5.217678086 0.2631316158E-09 5.233915086 0.1326245533E-08 5.250152087 0.4165756508E-08 5.266389087 0.1008957673E-07 5.282626087 0.2071831817E-07 5.298863088 0.3794093859E-07 5.315100088 0.6386211213E-07 5.331337088 0.1007423198E-06 5.347574088 0.1509318659E-06 5.363811089 0.2168002398E-06 5.380048089 0.3006624489E-06 5.396285089 0.4047041383E-06 5.412522090 0.5309074759E-06 5.428759090 0.6809798960E-06 5.444996090 0.8562878655E-06 5.461233091 0.1057797824E-05 5.477470091 0.1286026380E-05 5.493707091 0.1541001659E-05 5.509944092 0.1822237476E-05 5.526181092 0.2128721632E-05 5.542418092 0.2458919234E-05 5.558655093 0.2810791448E-05 5.574892093 0.3253455013E-05 5.591129093 0.3753270779E-05 5.607366093 0.4280004254E-05 5.623603094 0.4826398058E-05 5.639840094 0.5384087526E-05 5.656077094 0.5943878505E-05 5.672314095 0.6496087630E-05 5.688551095 0.7030928207E-05 5.704788095 0.7242751927E-05 5.721025096 0.7408181282E-05 5.737262096 0.7551221196E-05 5.753499096 0.7675158490E-05 5.769736097 0.7871678127E-05 5.785973097 0.8176336036E-05 5.802210097 0.8458233948E-05 5.818447098 0.8715269308E-05 5.834684098 0.8947029383E-05 5.850921098 0.9153665299E-05 5.867158099 0.9335780837E-05 5.883395099 0.9494369272E-05 5.899632099 0.9630751244E-05 5.915869099 0.9746508674E-05 5.932106100 0.9795054754E-05 5.948343100 0.9741258032E-05 5.964580100 0.9701609812E-05 5.980817101 0.9685042289E-05 5.997054101 0.9699924056E-05 6.013291101 0.9753964071E-05 6.029528102 0.9854145386E-05 6.045765102 0.1000667427E-04 6.062002102 0.1016407814E-04 6.078239103 0.1017159642E-04 6.094476103 0.1017589156E-04 6.110713103 0.1017793985E-04 6.126950104 0.1017907407E-04 6.143187104 0.1018190423E-04 6.159424104 0.1019323514E-04 6.175661104 0.1023033726E-04 6.191898105 0.1030861821E-04 6.208135105 0.1041275917E-04 6.224372105 0.1052525900E-04 6.240609106 0.1063863773E-04 6.256846106 0.1074946380E-04 6.273083106 0.1085559839E-04 6.289320107 0.1095536494E-04 6.305557107 0.1104729077E-04 6.321794107 0.1113002999E-04 6.338031108 0.1120235182E-04 6.354268108 0.1126315473E-04 6.370505108 0.1131149009E-04 6.386742109 0.1134658774E-04 6.402979109 0.1136787914E-04 6.419216109 0.1137501546E-04 0.000000000 0.8107056139E-05 0.1615885685E-01 0.8107942240E-05 0.3231771371E-01 0.8110506205E-05 0.4847657056E-01 0.8114469488E-05 0.6463542742E-01 0.8119382598E-05 0.8079428427E-01 0.8124646809E-05 0.9695314113E-01 0.8129543667E-05 0.1131119980 0.8133271395E-05 0.1292708548 0.8134986973E-05 0.1454297117 0.8133852400E-05 0.1615885685 0.8129083331E-05 0.1777474254 0.8119998079E-05 0.1939062823 0.8106064802E-05 0.2100651391 0.8086944655E-05 0.2262239960 0.8062528762E-05 0.2423828528 0.8032967104E-05 0.2585417097 0.7998687754E-05 0.2747005665 0.7960405403E-05 0.2908594234 0.7919118659E-05 0.3070182802 0.7876096227E-05 0.3231771371 0.7832852671E-05 0.3393359940 0.7801502241E-05 0.3554948508 0.7890925442E-05 0.3716537077 0.7995239911E-05 0.3878125645 0.8113746164E-05 0.4039714214 0.8245505158E-05 0.4201302782 0.8389358099E-05 0.4362891351 0.8543951559E-05 0.4524479919 0.8707767870E-05 0.4686068488 0.8879160464E-05 0.4847657056 0.9056393487E-05 0.5009245625 0.9237684630E-05 0.5170834194 0.9421249742E-05 0.5332422762 0.9605347540E-05 0.5494011331 0.9788322463E-05 0.5655599899 0.9968643699E-05 0.5817188468 0.1014493842E-04 0.5978777036 0.1031601746E-04 0.6140365605 0.1048089205E-04 0.6301954173 0.1063878048E-04 0.6463542742 0.1078910430E-04 0.6625131310 0.1093147390E-04 0.6786719879 0.1106566414E-04 0.6948308448 0.1119158087E-04 0.7109897016 0.1130921994E-04 0.7271485585 0.1141862035E-04 0.7433074153 0.1151981364E-04 0.7594662722 0.1161277173E-04 0.7756251290 0.1169735554E-04 0.7917839859 0.1177326655E-04 0.8079428427 0.1184000382E-04 0.8241016996 0.1189926796E-04 0.8402605564 0.1196948813E-04 0.8564194133 0.1200212764E-04 0.8725782702 0.1199639978E-04 0.8887371270 0.1200076006E-04 0.9048959839 0.1198745754E-04 0.9210548407 0.1195422217E-04 0.9372136976 0.1189864377E-04 0.9533725544 0.1181824454E-04 0.9695314113 0.1171056453E-04 0.9856902681 0.1157325756E-04 1.001849125 0.1140419460E-04 1.018007982 0.1120157064E-04 1.034166839 0.1096401056E-04 1.050325696 0.1069066902E-04 1.066484552 0.1038131900E-04 1.082643409 0.1003642410E-04 1.098802266 0.9657189495E-05 1.114961123 0.9245587695E-05 1.131119980 0.8804355918E-05 1.147278837 0.8336963409E-05 1.163437694 0.7847548433E-05 1.179596550 0.7488361484E-05 1.195755407 0.7193495728E-05 1.211914264 0.6898510512E-05 1.228073121 0.6602226265E-05 1.244231978 0.6303375454E-05 1.260390835 0.6000711814E-05 1.276549692 0.5693122148E-05 1.292708548 0.5379736435E-05 1.308867405 0.5060031371E-05 1.325026262 0.4733921968E-05 1.341185119 0.4401835511E-05 1.357343976 0.4064762270E-05 1.373502833 0.3724277797E-05 1.389661690 0.3382532682E-05 1.405820546 0.3042207098E-05 1.421979403 0.2706429497E-05 1.438138260 0.2378661155E-05 1.454297117 0.2062550824E-05 1.470455974 0.1761766340E-05 1.486614831 0.1479812375E-05 1.502773687 0.1219845376E-05 1.518932544 0.9844979376E-06 1.535091401 0.7757251461E-06 1.551250258 0.5946847951E-06 1.567409115 0.4416616905E-06 1.583567972 0.3160436729E-06 1.599726829 0.2163536026E-06 1.615885685 0.1403376299E-06 1.632044542 0.8510590700E-07 1.648203399 0.4731783872E-07 1.664362256 0.2340034542E-07 1.680521113 0.9784768126E-08 1.696679970 0.3146230773E-08 1.712838827 0.6286839632E-09 1.728997683 0.3956586397E-10 1.745156540 0.1264001320E-34 1.761407614 0.1270274667E-09 1.777658689 0.2010645802E-08 1.793909763 0.9997780683E-08 1.810160837 0.3081460873E-07 1.826411911 0.7284586501E-07 1.842662985 0.1452342298E-06 1.858914059 0.2568940099E-06 1.875165134 0.4155417596E-06 1.891416208 0.6268438694E-06 1.907667282 0.8937678010E-06 1.923918356 0.1216201107E-05 1.940169430 0.1590873198E-05 1.956420504 0.2011582391E-05 1.972671579 0.2469698769E-05 1.988922653 0.2954885561E-05 2.005173727 0.3455961143E-05 2.021424801 0.3961812724E-05 2.037675875 0.4462272184E-05 2.053926949 0.4948874047E-05 2.070178024 0.5415433465E-05 2.086429098 0.5858405576E-05 2.102680172 0.6277013156E-05 2.118931246 0.6673153497E-05 2.135182320 0.7051114784E-05 2.151433394 0.7417144540E-05 2.167684469 0.7778917061E-05 2.183935543 0.8144943721E-05 2.200186617 0.8523961346E-05 2.216437691 0.8924322504E-05 2.232688765 0.9353400731E-05 2.248939839 0.9817016561E-05 2.265190914 0.1031888884E-04 2.281441988 0.1086012103E-04 2.297693062 0.1143874297E-04 2.313944136 0.1204934268E-04 2.330195210 0.1268283613E-04 2.346446284 0.1332643128E-04 2.362697359 0.1396384297E-04 2.378948433 0.1457580301E-04 2.395199507 0.1514088683E-04 2.411450581 0.1563664340E-04 2.427701655 0.1604097484E-04 2.443952729 0.1633367111E-04 2.460203804 0.1649797052E-04 2.476454878 0.1652199521E-04 2.492705952 0.1639990742E-04 2.508957026 0.1613265057E-04 2.525208100 0.1572817681E-04 2.541459174 0.1520111806E-04 2.557710249 0.1457192121E-04 2.573961323 0.1386553260E-04 2.590212397 0.1310977204E-04 2.606463471 0.1233357279E-04 2.622714545 0.1156527701E-04 2.638965619 0.1083116106E-04 2.655216694 0.1015432617E-04 2.671467768 0.9554031250E-05 2.687718842 0.9045476505E-05 2.703969916 0.8639979209E-05 2.720220990 0.8345427924E-05 2.736472064 0.8166867086E-05 2.752723139 0.8107056139E-05 2.768555520 0.8131427545E-05 2.784387902 0.8204314364E-05 2.800220284 0.8325023178E-05 2.816052665 0.8492362270E-05 2.831885047 0.8704592274E-05 2.847717429 0.8959366070E-05 2.863549810 0.9253665984E-05 2.879382192 0.9583747466E-05 2.895214573 0.9945098708E-05 2.911046955 0.1033242521E-04 2.926879337 0.1073966694E-04 2.942711718 0.1116005384E-04 2.958544100 0.1158620276E-04 2.974376482 0.1201025609E-04 2.990208863 0.1242405925E-04 3.006041245 0.1281937114E-04 3.021873627 0.1318809911E-04 3.037706008 0.1352254775E-04 3.053538390 0.1381566922E-04 3.069370772 0.1406130253E-04 3.085203153 0.1426170587E-04 3.101035535 0.1478428125E-04 3.116867917 0.1531339390E-04 3.132700298 0.1584624861E-04 3.148532680 0.1637996337E-04 3.164365062 0.1691159399E-04 3.180197443 0.1743815975E-04 3.196029825 0.1795666943E-04 3.211862206 0.1846414736E-04 3.227694588 0.1895765879E-04 3.243526970 0.1943433443E-04 3.259359351 0.1989139363E-04 3.275191733 0.2032616590E-04 3.291024115 0.2073611073E-04 3.306856496 0.2111883534E-04 3.322688878 0.2147211053E-04 3.338521260 0.2179388443E-04 3.354353641 0.2208229437E-04 3.370186023 0.2233567678E-04 3.386018405 0.2255257550E-04 3.401850786 0.2273174843E-04 3.417683168 0.2287217281E-04 3.433515550 0.2297304929E-04 3.449347931 0.2303380492E-04 3.465180313 0.2305409512E-04 3.480923541 0.2295580649E-04 3.496666769 0.2266512436E-04 3.512409997 0.2219430570E-04 3.528153225 0.2156282780E-04 3.543896453 0.2079606327E-04 3.559639681 0.1992361449E-04 3.575382910 0.1897746762E-04 3.591126138 0.1799013517E-04 3.606869366 0.1699294451E-04 3.622612594 0.1601460078E-04 3.638355822 0.1508011067E-04 3.654099050 0.1421010527E-04 3.669842278 0.1342055227E-04 3.685585506 0.1272280674E-04 3.701328734 0.1212392068E-04 3.717071962 0.1162711680E-04 3.732815191 0.1123233295E-04 3.748558419 0.1107830485E-04 3.764301647 0.1116625082E-04 3.780044875 0.1126187919E-04 3.795788103 0.1136180745E-04 3.811531331 0.1146255133E-04 3.827274559 0.1156070859E-04 3.843017787 0.1165313946E-04 3.858761015 0.1173713209E-04 3.874504243 0.1181054172E-04 3.890247471 0.1187189335E-04 3.905990700 0.1192044038E-04 3.921733928 0.1195617502E-04 3.937477156 0.1197979011E-04 3.953220384 0.1199906987E-04 3.968963612 0.1199639978E-04 3.984706840 0.1199906987E-04 4.000450068 0.1197979011E-04 4.016193296 0.1195617502E-04 4.031936524 0.1192044038E-04 4.047679752 0.1187189335E-04 4.063422981 0.1181054172E-04 4.079166209 0.1173713209E-04 4.094909437 0.1165313946E-04 4.110652665 0.1156070859E-04 4.126395893 0.1146255133E-04 4.142139121 0.1136180745E-04 4.157882349 0.1126187919E-04 4.173625577 0.1116625082E-04 4.189368805 0.1107830485E-04 4.205112033 0.1123233295E-04 4.220855262 0.1162711680E-04 4.236598490 0.1212392068E-04 4.252341718 0.1272280674E-04 4.268084946 0.1342055227E-04 4.283828174 0.1421010527E-04 4.299571402 0.1508011067E-04 4.315314630 0.1601460078E-04 4.331057858 0.1699294451E-04 4.346801086 0.1799013517E-04 4.362544314 0.1897746762E-04 4.378287543 0.1992361449E-04 4.394030771 0.2079606327E-04 4.409773999 0.2156282780E-04 4.425517227 0.2219430570E-04 4.441260455 0.2266512436E-04 4.457003683 0.2295580649E-04 4.472746911 0.2305409512E-04 4.488939120 0.2294091945E-04 4.505131328 0.2260693408E-04 4.521323537 0.2206830182E-04 4.537515745 0.2135047521E-04 4.553707954 0.2048615223E-04 4.569900162 0.1951275330E-04 4.586092371 0.1846969701E-04 4.602284579 0.1739575480E-04 4.618476788 0.1632672922E-04 4.634668996 0.1529363399E-04 4.650861205 0.1432146947E-04 4.667053413 0.1342859967E-04 4.683245622 0.1262666108E-04 4.699437830 0.1192088171E-04 4.715630039 0.1131066681E-04 4.731822247 0.1079031740E-04 4.748014456 0.1034978226E-04 4.764206664 0.9975394697E-05 4.780398873 0.9650597450E-05 4.796591081 0.9356701087E-05 4.812783290 0.9073741658E-05 4.828975498 0.8781497020E-05 4.845167707 0.8460688330E-05 4.861359915 0.8094340040E-05 4.877552124 0.7669209555E-05 4.893744332 0.7177140596E-05 4.909936541 0.6616156223E-05 4.926128749 0.5991099675E-05 4.942320958 0.5313659730E-05 4.958513166 0.4601681384E-05 4.974705375 0.3877754724E-05 4.990897583 0.3167181183E-05 5.007089792 0.2495519528E-05 5.023282000 0.1885995690E-05 5.039474209 0.1357105081E-05 5.055666417 0.9207330313E-06 5.071858626 0.5810654162E-06 5.088050834 0.3344630403E-06 5.104243043 0.1703430398E-06 5.120435251 0.7296768634E-07 5.136627460 0.2390740827E-07 5.152819668 0.4841837657E-08 5.169011877 0.3071865981E-09 5.185204085 0.1264001320E-34 5.201441086 0.4821097482E-10 5.217678086 0.7663981566E-09 5.233915086 0.3838281140E-08 5.250152087 0.1194929704E-07 5.266389087 0.2861362577E-07 5.282626087 0.5794777307E-07 5.298863088 0.1044051290E-06 5.315100088 0.1724882543E-06 5.331337088 0.2664568312E-06 5.347574088 0.3900491929E-06 5.363811089 0.5462341272E-06 5.380048089 0.7370073713E-06 5.396285089 0.9632440377E-06 5.412522090 0.1224614403E-05 5.428759090 0.1519566323E-05 5.444996090 0.1845373328E-05 5.461233091 0.2198243468E-05 5.477470091 0.2573480499E-05 5.493707091 0.2965686279E-05 5.509944092 0.3368991304E-05 5.526181092 0.3777299436E-05 5.542418092 0.4184532849E-05 5.558655093 0.4584864164E-05 5.574892093 0.4972924394E-05 5.591129093 0.5343977599E-05 5.607366093 0.5694055833E-05 5.623603094 0.6020050750E-05 5.639840094 0.6319761111E-05 5.656077094 0.6591897973E-05 5.672314095 0.6836051663E-05 5.688551095 0.7052626577E-05 5.704788095 0.7538920791E-05 5.721025096 0.8011304952E-05 5.737262096 0.8440427822E-05 5.753499096 0.8820086056E-05 5.769736097 0.9145800696E-05 5.785973097 0.9415008957E-05 5.802210097 0.9627162819E-05 5.818447098 0.9783730908E-05 5.834684098 0.9888107083E-05 5.850921098 0.9945435609E-05 5.867158099 0.9962368342E-05 5.883395099 0.9946773428E-05 5.899632099 0.9907417216E-05 5.915869099 0.9853641297E-05 5.932106100 0.9843415595E-05 5.948343100 0.9923368004E-05 5.964580100 0.9988315155E-05 5.980817101 0.1004019477E-04 5.997054101 0.1008087466E-04 6.013291101 0.1011210318E-04 6.029528102 0.1013547122E-04 6.045765102 0.1015238848E-04 6.062002102 0.1021692910E-04 6.078239103 0.1048939441E-04 6.094476103 0.1082756838E-04 6.110713103 0.1123383702E-04 6.126950104 0.1170931415E-04 6.143187104 0.1225365316E-04 6.159424104 0.1286484337E-04 6.175661104 0.1353900916E-04 6.191898105 0.1427023498E-04 6.208135105 0.1505044111E-04 6.224372105 0.1586933491E-04 6.240609106 0.1671445959E-04 6.256846106 0.1757135672E-04 6.273083106 0.1842385170E-04 6.289320107 0.1925446170E-04 6.305557107 0.2004491621E-04 6.321794107 0.2077677023E-04 6.338031108 0.2143208138E-04 6.354268108 0.2199411533E-04 6.370505108 0.2244803927E-04 6.386742109 0.2278156181E-04 6.402979109 0.2298547956E-04 6.419216109 0.2305409512E-04 elk-2.3.22/examples/Nb-superconductor/PaxHeaders.22528/PHLWLINES.OUT0000644002504400250440000000005012337331331022576 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/PHLWLINES.OUT0000644002504400250440000000132012337331331023336 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.1729057134E-04 0.000000000 0.3458114268E-04 0.8725782702 -0.1729057134E-04 0.8725782702 0.3458114268E-04 1.745156540 -0.1729057134E-04 1.745156540 0.3458114268E-04 2.752723139 -0.1729057134E-04 2.752723139 0.3458114268E-04 3.465180313 -0.1729057134E-04 3.465180313 0.3458114268E-04 3.968963612 -0.1729057134E-04 3.968963612 0.3458114268E-04 4.472746911 -0.1729057134E-04 4.472746911 0.3458114268E-04 5.185204085 -0.1729057134E-04 5.185204085 0.3458114268E-04 6.419216109 -0.1729057134E-04 6.419216109 0.3458114268E-04 elk-2.3.22/examples/Nb-superconductor/PaxHeaders.22528/ALPHA2F.OUT0000644002504400250440000000005012337331331022246 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/ALPHA2F.OUT0000644002504400250440000004410412337331331023015 0ustar00dewhurstdewhurst00000000000000 -0.1024516824E-03 0.9637723274E-04 -0.1001977454E-03 0.2621094140E-03 -0.9794380838E-04 0.4270245815E-03 -0.9568987137E-04 0.7902628405E-04 -0.9343593435E-04 0.2415767333E-03 -0.9118199734E-04 0.2748605549E-03 -0.8892806033E-04 0.3956149697E-03 -0.8667412331E-04 0.3776163333E-03 -0.8442018630E-04 0.3455838051E-03 -0.8216624929E-04 0.2286528907E-03 -0.7991231228E-04 0.3022310425E-03 -0.7765837526E-04 0.2956194194E-03 -0.7540443825E-04 0.3222979643E-03 -0.7315050124E-04 0.4604075722E-03 -0.7089656422E-04 0.2738022579E-03 -0.6864262721E-04 0.5612627089E-03 -0.6638869020E-04 0.4864904886E-03 -0.6413475319E-04 0.2007430644E-03 -0.6188081617E-04 0.2018467249E-03 -0.5962687916E-04 0.4644216537E-03 -0.5737294215E-04 0.1408413803E-03 -0.5511900513E-04 0.3874337575E-03 -0.5286506812E-04 0.3167435951E-03 -0.5061113111E-04 0.4210652489E-03 -0.4835719410E-04 0.1697709368E-03 -0.4610325708E-04 0.5665115825E-03 -0.4384932007E-04 0.2618187279E-03 -0.4159538306E-04 0.2427422770E-03 -0.3934144604E-04 0.3010548596E-03 -0.3708750903E-04 0.2533242405E-03 -0.3483357202E-04 0.2990549909E-03 -0.3257963500E-04 0.2133876811E-03 -0.3032569799E-04 0.2303039476E-03 -0.2807176098E-04 0.2489358711E-03 -0.2581782397E-04 0.2420237311E-03 -0.2356388695E-04 0.1087871723E-03 -0.2130994994E-04 0.1420245227E-03 -0.1905601293E-04 0.2436944019E-03 -0.1680207591E-04 0.2555861477E-03 -0.1454813890E-04 0.7277900037E-04 -0.1229420189E-04 0.1477807723E-04 -0.1004026488E-04 0.1930901763E-04 -0.7786327863E-05 0.1108680986E-04 -0.5532390850E-05 0.000000000 -0.3278453837E-05 0.6259030236E-06 -0.1024516824E-05 0.3267784005E-33 0.1229420189E-05 0.000000000 0.3483357202E-05 0.000000000 0.5737294215E-05 0.2833045743E-04 0.7991231228E-05 0.1156801828E-03 0.1024516824E-04 0.1240616109E-03 0.1249910525E-04 0.5657709307E-04 0.1475304227E-04 0.2351428314E-03 0.1700697928E-04 0.6359078559E-04 0.1926091629E-04 0.1041385196E-03 0.2151485330E-04 0.1141684782E-03 0.2376879032E-04 0.1088001619E-03 0.2602272733E-04 0.2164880183E-03 0.2827666434E-04 0.2669005899E-03 0.3053060136E-04 0.5825823710E-03 0.3278453837E-04 0.2733677583E-03 0.3503847538E-04 0.9728845104E-04 0.3729241240E-04 0.5756943321E-03 0.3954634941E-04 0.3401087402E-03 0.4180028642E-04 0.3443301472E-03 0.4405422343E-04 0.2979231013E-03 0.4630816045E-04 0.2241152098E-03 0.4856209746E-04 0.3825311590E-03 0.5081603447E-04 0.5499160419E-03 0.5306997149E-04 0.4871638861E-03 0.5532390850E-04 0.6346658064E-03 0.5757784551E-04 0.5652425063E-03 0.5983178252E-04 0.5727249651E-03 0.6208571954E-04 0.6713495096E-03 0.6433965655E-04 0.8957766427E-03 0.6659359356E-04 0.4631295218E-03 0.6884753058E-04 0.7488744489E-03 0.7110146759E-04 0.9500671097E-03 0.7335540460E-04 0.8277593668E-03 0.7560934161E-04 0.7763867693E-03 0.7786327863E-04 0.6375886167E-03 0.8011721564E-04 0.1330860506E-02 0.8237115265E-04 0.1052289245E-02 0.8462508967E-04 0.1295030335E-02 0.8687902668E-04 0.1201282900E-02 0.8913296369E-04 0.1177956941E-02 0.9138690071E-04 0.1158767531E-02 0.9364083772E-04 0.1168787619E-02 0.9589477473E-04 0.1226120849E-02 0.9814871174E-04 0.1035349092E-02 0.1004026488E-03 0.1911987440E-02 0.1026565858E-03 0.1622443906E-02 0.1049105228E-03 0.2118066644E-02 0.1071644598E-03 0.2066313118E-02 0.1094183968E-03 0.2149133704E-02 0.1116723338E-03 0.1743820935E-02 0.1139262708E-03 0.1778841086E-02 0.1161802078E-03 0.2294064409E-02 0.1184341449E-03 0.2330886634E-02 0.1206880819E-03 0.2697687891E-02 0.1229420189E-03 0.2630359551E-02 0.1251959559E-03 0.2962836802E-02 0.1274498929E-03 0.2496716471E-02 0.1297038299E-03 0.3409918911E-02 0.1319577669E-03 0.3209027746E-02 0.1342117040E-03 0.2805099400E-02 0.1364656410E-03 0.5603983665E-02 0.1387195780E-03 0.2988623173E-02 0.1409735150E-03 0.3919986014E-02 0.1432274520E-03 0.4556418722E-02 0.1454813890E-03 0.4356586559E-02 0.1477353260E-03 0.5521016287E-02 0.1499892630E-03 0.5611831338E-02 0.1522432001E-03 0.4810075108E-02 0.1544971371E-03 0.5395545900E-02 0.1567510741E-03 0.5457102329E-02 0.1590050111E-03 0.7645136621E-02 0.1612589481E-03 0.7722696118E-02 0.1635128851E-03 0.6739159106E-02 0.1657668221E-03 0.7892390836E-02 0.1680207591E-03 0.8351812356E-02 0.1702746962E-03 0.8656031691E-02 0.1725286332E-03 0.1114995316E-01 0.1747825702E-03 0.1050951947E-01 0.1770365072E-03 0.1097494217E-01 0.1792904442E-03 0.9423968712E-02 0.1815443812E-03 0.1292435652E-01 0.1837983182E-03 0.1359277905E-01 0.1860522552E-03 0.1474078170E-01 0.1883061923E-03 0.1618399776E-01 0.1905601293E-03 0.1331862983E-01 0.1928140663E-03 0.1653310830E-01 0.1950680033E-03 0.1717517430E-01 0.1973219403E-03 0.1865283153E-01 0.1995758773E-03 0.2185585689E-01 0.2018298143E-03 0.2165254096E-01 0.2040837514E-03 0.1894187978E-01 0.2063376884E-03 0.2227090750E-01 0.2085916254E-03 0.2800302665E-01 0.2108455624E-03 0.2651016103E-01 0.2130994994E-03 0.2653005549E-01 0.2153534364E-03 0.2601000656E-01 0.2176073734E-03 0.3007832894E-01 0.2198613104E-03 0.3158419580E-01 0.2221152475E-03 0.3352879543E-01 0.2243691845E-03 0.3603514482E-01 0.2266231215E-03 0.3510318104E-01 0.2288770585E-03 0.3900897434E-01 0.2311309955E-03 0.3867768719E-01 0.2333849325E-03 0.4086586731E-01 0.2356388695E-03 0.4131188417E-01 0.2378928065E-03 0.4458496031E-01 0.2401467436E-03 0.4454661340E-01 0.2424006806E-03 0.4852666511E-01 0.2446546176E-03 0.4332292091E-01 0.2469085546E-03 0.5405059124E-01 0.2491624916E-03 0.5151863214E-01 0.2514164286E-03 0.5587702914E-01 0.2536703656E-03 0.5770967319E-01 0.2559243026E-03 0.5487153882E-01 0.2581782397E-03 0.5395989204E-01 0.2604321767E-03 0.6548909245E-01 0.2626861137E-03 0.5613184214E-01 0.2649400507E-03 0.6467447568E-01 0.2671939877E-03 0.6230962863E-01 0.2694479247E-03 0.6449277074E-01 0.2717018617E-03 0.7459603381E-01 0.2739557988E-03 0.6481161695E-01 0.2762097358E-03 0.6910487282E-01 0.2784636728E-03 0.7548442275E-01 0.2807176098E-03 0.7333218389E-01 0.2829715468E-03 0.7462389577E-01 0.2852254838E-03 0.8106735641E-01 0.2874794208E-03 0.7920908329E-01 0.2897333578E-03 0.7389223150E-01 0.2919872949E-03 0.8956126052E-01 0.2942412319E-03 0.8061786354E-01 0.2964951689E-03 0.8481610980E-01 0.2987491059E-03 0.8393776305E-01 0.3010030429E-03 0.9301591780E-01 0.3032569799E-03 0.9410381443E-01 0.3055109169E-03 0.9132881201E-01 0.3077648539E-03 0.9576645698E-01 0.3100187910E-03 0.9428760932E-01 0.3122727280E-03 0.9950238462E-01 0.3145266650E-03 0.9861507624E-01 0.3167806020E-03 0.1035940895 0.3190345390E-03 0.1067650763 0.3212884760E-03 0.1017628364 0.3235424130E-03 0.1119390327 0.3257963500E-03 0.1032543464 0.3280502871E-03 0.1116832350 0.3303042241E-03 0.1220745326 0.3325581611E-03 0.1189120551 0.3348120981E-03 0.1145288773 0.3370660351E-03 0.1204590276 0.3393199721E-03 0.1280142786 0.3415739091E-03 0.1249400529 0.3438278462E-03 0.1269488500 0.3460817832E-03 0.1211082608 0.3483357202E-03 0.1350547119 0.3505896572E-03 0.1295074635 0.3528435942E-03 0.1531992207 0.3550975312E-03 0.1394775534 0.3573514682E-03 0.1393935873 0.3596054052E-03 0.1403029348 0.3618593423E-03 0.1502695256 0.3641132793E-03 0.1435340833 0.3663672163E-03 0.1529447391 0.3686211533E-03 0.1587647117 0.3708750903E-03 0.1553024613 0.3731290273E-03 0.1675083396 0.3753829643E-03 0.1603168529 0.3776369013E-03 0.1721360473 0.3798908384E-03 0.1665033523 0.3821447754E-03 0.1601757824 0.3843987124E-03 0.1786871533 0.3866526494E-03 0.1893843169 0.3889065864E-03 0.1748128883 0.3911605234E-03 0.1771630931 0.3934144604E-03 0.1919126319 0.3956683974E-03 0.1951992469 0.3979223345E-03 0.2013201799 0.4001762715E-03 0.1904604752 0.4024302085E-03 0.1912412465 0.4046841455E-03 0.2001493964 0.4069380825E-03 0.2131793361 0.4091920195E-03 0.2058310103 0.4114459565E-03 0.2021010362 0.4136998936E-03 0.2271428008 0.4159538306E-03 0.2149453698 0.4182077676E-03 0.2130553738 0.4204617046E-03 0.2301051666 0.4227156416E-03 0.2352592191 0.4249695786E-03 0.2338231073 0.4272235156E-03 0.2239269409 0.4294774526E-03 0.2228039875 0.4317313897E-03 0.2372080598 0.4339853267E-03 0.2520266979 0.4362392637E-03 0.2521086378 0.4384932007E-03 0.2500847673 0.4407471377E-03 0.2511599623 0.4430010747E-03 0.2615003480 0.4452550117E-03 0.2516431693 0.4475089487E-03 0.2637776953 0.4497628858E-03 0.2458412448 0.4520168228E-03 0.2799882700 0.4542707598E-03 0.2776204762 0.4565246968E-03 0.2850786228 0.4587786338E-03 0.2795110632 0.4610325708E-03 0.2812894797 0.4632865078E-03 0.2766035428 0.4655404448E-03 0.3029493553 0.4677943819E-03 0.2917074952 0.4700483189E-03 0.3007061886 0.4723022559E-03 0.2943492923 0.4745561929E-03 0.3113544433 0.4768101299E-03 0.3143024162 0.4790640669E-03 0.3217909013 0.4813180039E-03 0.3462637444 0.4835719410E-03 0.3041839916 0.4858258780E-03 0.3262512550 0.4880798150E-03 0.3297720539 0.4903337520E-03 0.3272403343 0.4925876890E-03 0.3590616165 0.4948416260E-03 0.3642727713 0.4970955630E-03 0.3615070606 0.4993495000E-03 0.3558095889 0.5016034371E-03 0.3853576809 0.5038573741E-03 0.3779354026 0.5061113111E-03 0.3736209860 0.5083652481E-03 0.3715987800 0.5106191851E-03 0.3830007142 0.5128731221E-03 0.4344541896 0.5151270591E-03 0.4017166648 0.5173809961E-03 0.4112092460 0.5196349332E-03 0.4469805318 0.5218888702E-03 0.4253885816 0.5241428072E-03 0.4440901075 0.5263967442E-03 0.4214008710 0.5286506812E-03 0.4839667338 0.5309046182E-03 0.4842308082 0.5331585552E-03 0.4800858077 0.5354124922E-03 0.4999131381 0.5376664293E-03 0.5151435196 0.5399203663E-03 0.5129636480 0.5421743033E-03 0.5178858645 0.5444282403E-03 0.5749955102 0.5466821773E-03 0.5698376972 0.5489361143E-03 0.6105312808 0.5511900513E-03 0.6544084953 0.5534439884E-03 0.7243368117 0.5556979254E-03 0.7610158521 0.5579518624E-03 0.7846924320 0.5602057994E-03 0.7954405182 0.5624597364E-03 0.7941751702 0.5647136734E-03 0.8469582173 0.5669676104E-03 0.8644430019 0.5692215474E-03 0.8113168741 0.5714754845E-03 0.9034797105 0.5737294215E-03 0.8416925946 0.5759833585E-03 0.9305042754 0.5782372955E-03 0.9009458111 0.5804912325E-03 0.9894321954 0.5827451695E-03 0.9855269501 0.5849991065E-03 0.9960114466 0.5872530435E-03 1.054251494 0.5895069806E-03 1.121717942 0.5917609176E-03 1.189500549 0.5940148546E-03 1.265796570 0.5962687916E-03 1.355060249 0.5985227286E-03 1.234932603 0.6007766656E-03 1.221852792 0.6030306026E-03 1.187803928 0.6052845396E-03 1.161463507 0.6075384767E-03 1.153651624 0.6097924137E-03 1.115298350 0.6120463507E-03 1.106984983 0.6143002877E-03 1.044915160 0.6165542247E-03 1.002716410 0.6188081617E-03 0.9168450650 0.6210620987E-03 0.8297164498 0.6233160358E-03 0.6957187509 0.6255699728E-03 0.5781876495 0.6278239098E-03 0.5441131292 0.6300778468E-03 0.5650691319 0.6323317838E-03 0.5639425120 0.6345857208E-03 0.5432974452 0.6368396578E-03 0.5165132791 0.6390935948E-03 0.5268823557 0.6413475319E-03 0.5420665766 0.6436014689E-03 0.5433467066 0.6458554059E-03 0.5660374090 0.6481093429E-03 0.5465171209 0.6503632799E-03 0.5353491971 0.6526172169E-03 0.5259766194 0.6548711539E-03 0.5122183906 0.6571250909E-03 0.5334700481 0.6593790280E-03 0.5388706689 0.6616329650E-03 0.5087524450 0.6638869020E-03 0.5026229132 0.6661408390E-03 0.5060100729 0.6683947760E-03 0.5399817263 0.6706487130E-03 0.4784093144 0.6729026500E-03 0.4982915854 0.6751565870E-03 0.5131521190 0.6774105241E-03 0.5043607696 0.6796644611E-03 0.5057851656 0.6819183981E-03 0.4961170402 0.6841723351E-03 0.5104137066 0.6864262721E-03 0.5022336732 0.6886802091E-03 0.5202386633 0.6909341461E-03 0.4995526665 0.6931880832E-03 0.5243200494 0.6954420202E-03 0.4980908715 0.6976959572E-03 0.5364399757 0.6999498942E-03 0.5141811845 0.7022038312E-03 0.5425326877 0.7044577682E-03 0.4994890405 0.7067117052E-03 0.5476476798 0.7089656422E-03 0.5320698679 0.7112195793E-03 0.5653931696 0.7134735163E-03 0.5436904247 0.7157274533E-03 0.5587597698 0.7179813903E-03 0.5298817030 0.7202353273E-03 0.6043079083 0.7224892643E-03 0.6135299145 0.7247432013E-03 0.5543251053 0.7269971383E-03 0.5676888329 0.7292510754E-03 0.5614434134 0.7315050124E-03 0.5718818455 0.7337589494E-03 0.5538447997 0.7360128864E-03 0.5300053851 0.7382668234E-03 0.5679850855 0.7405207604E-03 0.5664814004 0.7427746974E-03 0.5434249604 0.7450286344E-03 0.5969104593 0.7472825715E-03 0.5800238197 0.7495365085E-03 0.6005653869 0.7517904455E-03 0.6880566600 0.7540443825E-03 0.8063288884 0.7562983195E-03 0.8743390778 0.7585522565E-03 0.8894207982 0.7608061935E-03 0.8769197159 0.7630601306E-03 0.9200685620 0.7653140676E-03 0.8739575786 0.7675680046E-03 0.9628887168 0.7698219416E-03 0.8993387041 0.7720758786E-03 0.9543998969 0.7743298156E-03 0.9677904921 0.7765837526E-03 0.9764541048 0.7788376896E-03 0.9690271536 0.7810916267E-03 1.025352207 0.7833455637E-03 1.026040968 0.7855995007E-03 1.033925408 0.7878534377E-03 1.062493751 0.7901073747E-03 1.064798593 0.7923613117E-03 1.085170471 0.7946152487E-03 1.106351623 0.7968691857E-03 1.085951522 0.7991231228E-03 1.154270935 0.8013770598E-03 1.141329929 0.8036309968E-03 1.186222464 0.8058849338E-03 1.238418643 0.8081388708E-03 1.246802713 0.8103928078E-03 1.335954494 0.8126467448E-03 1.377237320 0.8149006818E-03 1.466048009 0.8171546189E-03 1.621482981 0.8194085559E-03 1.705549775 0.8216624929E-03 1.907999735 0.8239164299E-03 1.918816432 0.8261703669E-03 2.007057820 0.8284243039E-03 2.195145348 0.8306782409E-03 2.124351422 0.8329321780E-03 1.698471495 0.8351861150E-03 1.442124371 0.8374400520E-03 1.233724187 0.8396939890E-03 0.9684642639 0.8419479260E-03 0.9077156076 0.8442018630E-03 0.8393552582 0.8464558000E-03 0.7758897581 0.8487097370E-03 0.6448872503 0.8509636741E-03 0.6711533968 0.8532176111E-03 0.5451233400 0.8554715481E-03 0.5593159253 0.8577254851E-03 0.5255101576 0.8599794221E-03 0.5010025277 0.8622333591E-03 0.4740393160 0.8644872961E-03 0.4650453938 0.8667412331E-03 0.4125955342 0.8689951702E-03 0.4110073151 0.8712491072E-03 0.3569423827 0.8735030442E-03 0.3333502180 0.8757569812E-03 0.3201721641 0.8780109182E-03 0.2731328044 0.8802648552E-03 0.2806311540 0.8825187922E-03 0.2421452807 0.8847727292E-03 0.2304795794 0.8870266663E-03 0.2240802827 0.8892806033E-03 0.1652359321 0.8915345403E-03 0.1942262103 0.8937884773E-03 0.1594136989 0.8960424143E-03 0.1420788893 0.8982963513E-03 0.1201874940 0.9005502883E-03 0.9600312400E-01 0.9028042254E-03 0.7173159889E-01 0.9050581624E-03 0.6347074167E-01 0.9073120994E-03 0.6763426045E-01 0.9095660364E-03 0.5377519544E-01 0.9118199734E-03 0.5291620427E-01 0.9140739104E-03 0.5110508861E-01 0.9163278474E-03 0.3861347120E-01 0.9185817844E-03 0.4351463148E-01 0.9208357215E-03 0.3339114895E-01 0.9230896585E-03 0.2929719614E-01 0.9253435955E-03 0.2344708453E-01 0.9275975325E-03 0.1989118170E-01 0.9298514695E-03 0.1180841827E-01 0.9321054065E-03 0.8254493707E-03 0.9343593435E-03 0.000000000 0.9366132805E-03 0.000000000 0.9388672176E-03 0.000000000 0.9411211546E-03 0.000000000 0.9433750916E-03 0.000000000 0.9456290286E-03 0.000000000 0.9478829656E-03 0.000000000 0.9501369026E-03 0.000000000 0.9523908396E-03 0.000000000 0.9546447766E-03 0.000000000 0.9568987137E-03 0.000000000 0.9591526507E-03 0.000000000 0.9614065877E-03 0.000000000 0.9636605247E-03 0.000000000 0.9659144617E-03 0.000000000 0.9681683987E-03 0.000000000 0.9704223357E-03 0.000000000 0.9726762728E-03 0.000000000 0.9749302098E-03 0.000000000 0.9771841468E-03 0.000000000 0.9794380838E-03 0.000000000 0.9816920208E-03 0.000000000 0.9839459578E-03 0.000000000 0.9861998948E-03 0.000000000 0.9884538318E-03 0.000000000 0.9907077689E-03 0.000000000 0.9929617059E-03 0.000000000 0.9952156429E-03 0.000000000 0.9974695799E-03 0.000000000 0.9997235169E-03 0.000000000 0.1001977454E-02 0.000000000 0.1004231391E-02 0.000000000 0.1006485328E-02 0.000000000 0.1008739265E-02 0.000000000 0.1010993202E-02 0.000000000 0.1013247139E-02 0.000000000 0.1015501076E-02 0.000000000 0.1017755013E-02 0.000000000 0.1020008950E-02 0.000000000 0.1022262887E-02 0.000000000 elk-2.3.22/examples/Nb-superconductor/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021743 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/elk.in0000644002504400250440000000665612337331331022524 0ustar00dewhurstdewhurst00000000000000 ! Example of how to determine the electron-phonon coupling parameters and ! superconducting transition temperature T_c. ! Note that these calculations are very time-consuming and require many ! computers sharing a common directory to run efficiently. It is also important ! to make sure the results are converged with respect to the various input ! parameters and err on the side of caution. Electron-phonon coupling is still ! an experimental feature at this stage. ! Follow the steps below for niobium on a 4x4x4 q-point grid. This is a time- ! consuming example, so the main results are included in this directory. avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 3.118 sppath '../../species/' atoms 1 : nspecies 'Nb.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ! use efficient Broyden mixing mixtype 3 !--------------------------------------------------------------------------! ! Step 1: Compute the dynamical matrices and potential derivatives ! !--------------------------------------------------------------------------! ! This step should be run on as many computers as possible which share the same ! directory on a networked file system - just keep submitting jobs to the queue ! from the same directory. As usual, each job can be individually parallel ! using OpenMP. ! The code works by determining which DYN_Qqqqq_qqqq_qqqq_Sss_Aaa_Pp.OUT files ! need to be calculated. These files contain a single row of a dynamical matrix. ! If a calculation fails to complete, just delete that particular DYN file and ! re-run the code. All the DYN files must be calculated before proceeding to the ! next step. tasks 200 ! good convergence required for accurate forces epspot 1.d-7 ! the q-point grid ngridq 4 4 4 lmaxmat 6 nempty 5 ! this is an important parameter which fixes the k-point density irrespective ! of the size of the phonon supercell radkpt 50.0 swidth 0.01 !-----------------------------------------------------------------------! ! Step 2: Phonon dispersion curves and electron-phonon coupling ! !-----------------------------------------------------------------------! ! This should be run on one computer. You can plot the dispersion curves in the ! file PHDISP.OUT along with lines corresponding to high symmetry points stored ! in PHDLINES.OUT. The phonon linewidths along the same directions are in the ! file PHLWIDTH.OUT (PHLWLINES.OUT). The electron-phonon coupling parameter, ! lambda, and the estimated T_c is stored in MCMILLAN.OUT. You can also plot the ! Eliashberg function in ALPHA2F.OUT. Compare with the results of Bauer et al. ! in PRB 57, 11276 (1998). ! Uncomment the tasks below and run. !tasks ! 0 ! ground-state run ! 220 ! plot the phonon dispersion ! 240 ! generate the q-dependent phonon linewidths and coupling constants ! 245 ! plot the phonon linewidths ! 250 ! Eliashberg function, coupling constant, and superconducting T_c ! fine k-point grid required for accurate electron-phonon coupling; it should ! also be commensurate with the q-point grid ngridk 24 24 24 ! vertex location lines for the dispersion curves and phonon linewidths plot1d 9 400 0.5 0.5 0.5 0.25 0.25 0.25 0.0 0.0 0.0 -0.5 0.5 0.5 -0.5 0.5 0.0 -0.75 0.25 0.25 -0.5 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 elk-2.3.22/examples/Nb-superconductor/PaxHeaders.22528/PHDLINES.OUT0000644002504400250440000000005012337331331022437 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Nb-superconductor/PHDLINES.OUT0000644002504400250440000000132012337331331023177 0ustar00dewhurstdewhurst00000000000000 0.000000000 -0.6985342353E-03 0.000000000 0.1397068407E-02 0.8725782702 -0.6985342353E-03 0.8725782702 0.1397068407E-02 1.745156540 -0.6985342353E-03 1.745156540 0.1397068407E-02 2.752723139 -0.6985342353E-03 2.752723139 0.1397068407E-02 3.465180313 -0.6985342353E-03 3.465180313 0.1397068407E-02 3.968963612 -0.6985342353E-03 3.968963612 0.1397068407E-02 4.472746911 -0.6985342353E-03 4.472746911 0.1397068407E-02 5.185204085 -0.6985342353E-03 5.185204085 0.1397068407E-02 6.419216109 -0.6985342353E-03 6.419216109 0.1397068407E-02 elk-2.3.22/examples/PaxHeaders.22528/FeAl-LDA+U-AMF0000644002504400250440000000005012337331331017155 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/FeAl-LDA+U-AMF/0000755002504400250440000000000012337331331017776 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/FeAl-LDA+U-AMF/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020335 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/FeAl-LDA+U-AMF/elk.in0000644002504400250440000000250012337331331021076 0ustar00dewhurstdewhurst00000000000000 ! FeAl in CsCl (B2) structure using LDA+U and "around mean field" (AMF) double ! counting (dftu=2). Compare the total DOS and partial DOS with the one calculated ! with bare LDA. Note the opening of a gap and the increased localization of Fe ! d-electrons. Note the non-magnetic solution for U about 0.1837 Ha (5 eV) ! (the exact value of U depends on the muffin-tin (MT) radius used since DFT+U ! is applied only inside mt spheres). Try to plot the magnetic moment as ! function of U for different MT radius. Example created by Fredrik Bultmark, ! Francesco Cricchio and Lars Nordstrom. tasks 0 10 ! DFT+U block ! here AMF double counting is used (dftu=2) ! inpdftu=1 corresponds to provide U and J as input dft+u 2 1 : dftu, inpdftu 1 2 0.183 0.034911967 : is, l, U, J spinpol .true. ! small field along z to break symmetry bfieldc 0.0 0.0 -0.01 scale 5.496 avec 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 atoms 2 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 'Al.in' 1 0.5 0.5 0.5 0.0 0.0 0.0 : atposl, bfcmt sppath '../../species/' ! fair number of empty states nempty 8 ! fair number of k-points ngridk 4 4 4 elk-2.3.22/examples/PaxHeaders.22528/TiC-eg-t2g0000644002504400250440000000005012337331331016711 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/TiC-eg-t2g/0000755002504400250440000000000012337331331017532 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/TiC-eg-t2g/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020071 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/TiC-eg-t2g/elk.in0000644002504400250440000000216512337331331020641 0ustar00dewhurstdewhurst00000000000000 ! Density of states of TiC resolved into irreducible representations. When ! lmirep is set to .true., the Y_lm basis is transformed into one in which the ! site symmetries are block diagonal. The band characters determined from the ! density matrix expressed in this basis correspond therefore to irreducible ! representations (IR). ! In this example, we want the e_g and t_2g resolved DOS for the Ti atom. The ! ELMIREP.OUT file contains a set of eigenvalues, the degeneracies of which ! allow for easy identification of the IR. For l = 2, the 3-fold degeneracy is ! the t_2g IR, while the 2-fold is the e_g IR. Adding together curves 5, 6 and 7 ! in the file PDOS_S01_A0001.OUT will give the t_2g plot, and adding curves 8 ! and 9 will give the e_g plot. tasks 0 10 lmirep .true. avec 0.5 0.5 0.0 0.5 0.0 0.5 0.0 0.5 0.5 scale 8.1787 sppath '../../species/' atoms 2 : nspecies 'Ti.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 'C.in' 1 0.5 0.5 0.5 0.0 0.0 0.0 ngridk 8 8 8 elk-2.3.22/examples/PaxHeaders.22528/Ge0000644002504400250440000000005012337331331015502 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ge/0000755002504400250440000000000012337331331016323 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ge/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331016662 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ge/elk.in0000644002504400250440000000144512337331331017432 0ustar00dewhurstdewhurst00000000000000 ! High quality density of states, band structure and linear optical tensor of ! germanium with spin-orbit coupling (Andrew Chizmeshya) tasks 0 10 20 120 121 spinorb .true. xctype 3 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 5.3451 nempty 20 wplot 1000 150 0 -0.5 2.0 lmaxapw 10 lmaxvr 8 gmaxvr 12.0 sppath '../../species/' atoms 1 : nspecies 'Ge.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfieldc 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 10 10 10 vkloff 0.25 0.25 0.75 plot1d 3 200 : nvp1d, npp1d 0.5 0.0 1.0 : vlvp1d 0.0 0.0 1.0 0.5 0.5 1.0 elk-2.3.22/examples/PaxHeaders.22528/Ni-MOKE0000644002504400250440000000005012337331331016246 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ni-MOKE/0000755002504400250440000000000012337331331017067 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Ni-MOKE/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017426 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Ni-MOKE/elk.in0000644002504400250440000000120112337331331020164 0ustar00dewhurstdewhurst00000000000000 ! Magneto-optical Kerr effect for ferromagnetic nickel. For good accuracy of the ! Kerr rotation a k-point grid of 20x20x20 is required. tasks 0 120 122 ! the relaxation time is taken to be 1/swidth swidth 0.01 spinpol .true. ! spin-orbit coupling is required for MOKE spinorb .true. bfieldc 0.0 0.0 0.01 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.33 sppath '../../species/' atoms 1 : nspecies 'Ni.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 10 10 10 elk-2.3.22/examples/PaxHeaders.22528/diamond-TDDFT-ALDA0000644002504400250440000000005012337331331020124 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/diamond-TDDFT-ALDA/0000755002504400250440000000000012337331331020745 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/diamond-TDDFT-ALDA/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021304 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/diamond-TDDFT-ALDA/elk.in0000644002504400250440000000121712337331331022051 0ustar00dewhurstdewhurst00000000000000 ! Dielectric function of diamond calculated at finite q-vector using ALDA. tasks 0 120 320 ! q-vector in lattice coordinates vecql 0.5 0.5 0.5 xctype 3 fxctype 3 ! G-vector cut-off for the RPA and ALDA response function gmaxrf 2.0 wplot 500 100 1 0.0 1.5 avec 3.3637 3.3637 0.0000 3.3637 0.0000 3.3637 0.0000 3.3637 3.3637 sppath '../../species/' atoms 1 : nspecies 'C.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 4 4 4 vkloff 0.25 0.5 0.625 elk-2.3.22/examples/PaxHeaders.22528/Fe-Mossbauer0000644002504400250440000000005012337331331017437 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe-Mossbauer/0000755002504400250440000000000012337331331020260 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/Fe-Mossbauer/PaxHeaders.22528/Fe.in0000644002504400250440000000005012337331331020376 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe-Mossbauer/Fe.in0000644002504400250440000000315412337331331021145 0ustar00dewhurstdewhurst00000000000000 'Fe' : spsymb 'iron' : spname -26.0000 : spzn 101799.2074 : spmass 0.392232E-06 2.0000 34.5962 500 : sprmin, rmt, sprmax, nrmt 10 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 T 2 1 1 2.00000 T 2 1 2 4.00000 T 3 0 1 2.00000 T 3 1 1 2.00000 F 3 1 2 4.00000 F 3 2 2 4.00000 F 3 2 3 2.00000 F 4 0 1 2.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -2.1817 0 T 2 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.2816 0 T elk-2.3.22/examples/Fe-Mossbauer/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331020617 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/Fe-Mossbauer/elk.in0000644002504400250440000000332612337331331021367 0ustar00dewhurstdewhurst00000000000000 ! Calculating the Mossbauer effect hyperfine parameters for bcc Fe, namely the ! contact charge density, the contact magnetic hyperfine field and the electric ! field gradient (EFG). In this case the EFG is zero because of symmetry. ! The hyperfine magnetic field is difficult to calculate accurately. This is ! partly due to the neglect of the orbital and dipolar contributions, but mainly ! because most of the contact magnetisation arises from the polarised core s ! states. One therefore has to switch on core polarisation with ! 'spincore=.true.', but in addition any semi-core s states should also be moved ! to the core and thus treated with the full Dirac equation. Consequently, this ! example requires a special species file (Fe.in), in which the 3s states are in ! the core. Also note that the field is quite sensitive to the number of empty ! states and k-points. Experimentally the hyperfine field is 33.9 Tesla ! [J. Phys. Soc. Jpn. 33, 159 (1972)]. A complete derivation of the formulae can ! be found in Phys. Rev. B 53, 3271 (1987). tasks 0 110 : isomer shift and hyperfine field 115 : electric field gradient spinpol .true. ! switch on core polarisation for hyperfine field spincore .true. ! start with a large field and reduce it at every iteration bfieldc 0.0 0.0 0.01 beta0 0.01 ! large number of empty states required for hyperfine field nempty 10 rgkmax 7.5 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ! large number of k-points required ngridk 8 8 8 elk-2.3.22/examples/PaxHeaders.22528/CuFeS20000644002504400250440000000005012337331331016176 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/CuFeS2/0000755002504400250440000000000012337331331017017 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/CuFeS2/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017356 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/CuFeS2/elk.in0000644002504400250440000000315512337331331020126 0ustar00dewhurstdewhurst00000000000000 ! An example of how Elk can automatically determine the primitive unit cell ! from the conventional one. The input chalcopyrite unit cell contains 16 atoms ! which is reduced to 8 by the code. tasks 0 ! automatic determination of the primitive unit cell primcell .true. avec 9.99476 0.00000 0.00000 0.00000 9.99476 0.00000 0.00000 0.00000 19.6966 sppath '../../species/' atoms 3 : nspecies 'Cu.in' : spfname 4 : natoms; atposl, bfcmt below 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.5000 0.2500 0.0000 0.0000 0.0000 0.5000 0.0000 0.7500 0.0000 0.0000 0.0000 0.5000 0.5000 0.5000 0.0000 0.0000 0.0000 'Fe.in' : spfname 4 : natoms; atposl, bfcmt below 0.0000 0.0000 0.5000 0.0000 0.0000 0.0000 0.0000 0.5000 0.7500 0.0000 0.0000 0.0000 0.5000 0.0000 0.2500 0.0000 0.0000 0.0000 0.5000 0.5000 0.0000 0.0000 0.0000 0.0000 'S.in' : spfname 8 : natoms; atposl, bfcmt below 0.2574 0.2500 0.1250 0.0000 0.0000 0.0000 0.7426 0.7500 0.1250 0.0000 0.0000 0.0000 0.2500 0.7426 0.8750 0.0000 0.0000 0.0000 0.7500 0.2574 0.8750 0.0000 0.0000 0.0000 0.7574 0.7500 0.6250 0.0000 0.0000 0.0000 0.2426 0.2500 0.6250 0.0000 0.0000 0.0000 0.7500 0.2426 0.3750 0.0000 0.0000 0.0000 0.2500 0.7574 0.3750 0.0000 0.0000 0.0000 ngridk 2 2 2 elk-2.3.22/examples/PaxHeaders.22528/NiO-LDA+U-FLL-tensmom0000644002504400250440000000005012337331331020525 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA+U-FLL-tensmom/0000755002504400250440000000000012337331331021346 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/examples/NiO-LDA+U-FLL-tensmom/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331021705 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/examples/NiO-LDA+U-FLL-tensmom/elk.in0000644002504400250440000000313712337331331022455 0ustar00dewhurstdewhurst00000000000000 ! NiO in AFMII structure with LDA+U and fully-localised-limit (FLL) double ! counting (dftu=1). Values of Slater parameters for Ni are taken from ! literature. Calculate the tensor moment decomposition of the density ! matrix and of the Hartree-Fock LDA+U energy in TMDFTU.OUT with task=400 ! (see PRB 80, 035121 (2009)). ! Observe the large 011 (spin-polarization), 404 (high multipole of charge) and ! the almost degenerate 413, 414, 415 (high multipoles of magnetization) ! contributions to the exchange energy. ! Compare the case with and without spin-orbit coupling (spinorb). ! Example by Francesco Cricchio. tasks 0 400 ! DFT+U block ! here FLL double counting is used (dftu=1) with Slater parameters as specified dft+u 1 2 : dftu, inpdftu 1 2 0.29399 0.30078 0.18799 : is, l, f0, f2, f4 spinpol .true. scale 7.893389 avec 1.0 0.5 0.5 0.5 1.0 0.5 0.5 0.5 1.0 atoms 2 : nspecies 'Ni.in' : spfname 2 : natoms; atpos, bfcmt below 0.0 0.0 0.0 0.0 0.0 -2.0 0.5 0.5 0.5 0.0 0.0 2.0 'O.in' : spfname 2 : natoms; atpos, bfcmt below 0.25 0.25 0.25 0.0 0.0 0.0 0.75 0.75 0.75 0.0 0.0 0.0 ! the large magnetic local field on Ni is halved at every iteration ! this speeds up the convergence of magnetic calculations reducebf 0.5 ! fairly high number of empty states nempty 8 sppath '../../species/' ! this grid is too small for accurate magnetic moment ngridk 4 4 4 elk-2.3.22/PaxHeaders.22528/tests0000644002504400250440000000005012337331331014473 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/0000755002504400250440000000000012337331331015314 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/PaxHeaders.22528/test-0160000644002504400250440000000005012337331331015756 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/0000755002504400250440000000000012337331331016577 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST400.OUT_0000644002504400250440000000014112337331331020326 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 107.995139286 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST820.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST820.OUT_0000644002504400250440000000014012337331331020333 0ustar00dewhurstdewhurst00000000000000'Norm of tensor moments' 2 1 0.100000000000E-03 1 9.89510477230 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST000.OUT_0000644002504400250440000000012612337331331020325 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -28464.6926928 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST450.OUT_0000644002504400250440000000022412337331331020335 0ustar00dewhurstdewhurst00000000000000'total moment' 2 3 0.200000000000E-01 1 0.434570695907 2 0.434570695908 3 0.434570695908 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST910.OUT_0000644002504400250440000000023412337331331020337 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 3 0.100000000000E-07 1 0.530584787921 2 0.227393480538 3 0.757978268459E-01 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST900.OUT_0000644002504400250440000000007012337331331020334 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 7991 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST830.OUT_0000644002504400250440000000005012337331331017575 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST830.OUT_0000644002504400250440000000016612337331331020344 0ustar00dewhurstdewhurst00000000000000'Norm of DFT+U Hartree-Fock exchange energies' 2 1 0.100000000000E-03 1 0.698358270236E-01 elk-2.3.22/tests/test-016/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017167 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/fort.980000644002504400250440000000014212337331331017730 0ustar00dewhurstdewhurst00000000000000 278.124590911969 -28740.5416678561 282.317353885541 -28740.5416678561 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017576 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST705.OUT_0000644002504400250440000000010112337331331020332 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 6 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST500.OUT_0000644002504400250440000000013512337331331020332 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 57.9542347467 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST810.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST810.OUT_0000644002504400250440000000475512337331331020352 0ustar00dewhurstdewhurst00000000000000'U and J parameters' 2 80 0.100000000000E-03 1 0.146997242076 2 0.223204275783E-01 3 0.00000000000 4 0.00000000000 5 0.00000000000 6 0.00000000000 7 0.00000000000 8 0.00000000000 9 0.00000000000 10 0.00000000000 11 0.00000000000 12 0.00000000000 13 0.00000000000 14 0.00000000000 15 0.00000000000 16 0.00000000000 17 0.00000000000 18 0.00000000000 19 0.00000000000 20 0.00000000000 21 0.00000000000 22 0.00000000000 23 0.00000000000 24 0.00000000000 25 0.00000000000 26 0.00000000000 27 0.00000000000 28 0.00000000000 29 0.00000000000 30 0.00000000000 31 0.00000000000 32 0.00000000000 33 0.00000000000 34 0.00000000000 35 0.00000000000 36 0.00000000000 37 0.00000000000 38 0.00000000000 39 0.00000000000 40 0.00000000000 41 0.00000000000 42 0.00000000000 43 0.00000000000 44 0.00000000000 45 0.00000000000 46 0.00000000000 47 0.00000000000 48 0.00000000000 49 0.00000000000 50 0.00000000000 51 0.00000000000 52 0.00000000000 53 0.00000000000 54 0.00000000000 55 0.00000000000 56 0.00000000000 57 0.00000000000 58 0.00000000000 59 0.00000000000 60 0.00000000000 61 0.00000000000 62 0.00000000000 63 0.00000000000 64 0.00000000000 65 0.00000000000 66 0.00000000000 67 0.00000000000 68 0.00000000000 69 0.00000000000 70 0.00000000000 71 0.00000000000 72 0.00000000000 73 0.00000000000 74 0.00000000000 75 0.00000000000 76 0.00000000000 77 0.00000000000 78 0.00000000000 79 0.00000000000 80 0.00000000000 elk-2.3.22/tests/test-016/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017136 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/elk.in0000644002504400250440000000160612337331331017705 0ustar00dewhurstdewhurst00000000000000 ! US in FM structure with LDA+SOC+U and calculation of tensor moments. ! The Slater parameters are determined through a Yukawa potential with screening ! length corresponding to large U=4.0eV. tasks 0 400 500 maxscl 2 test .true. swidth 0.05 dft+u 3 5 : dftu,inpdftu 1 3 0.1469972 : is, l, U fixed spinpol .true. spinorb .true. scale 10.36175041 avec 0.0 0.5 0.5 0.5 0.0 0.5 0.5 0.5 0.0 atoms 2 : nspecies 'U.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 'S.in' : spfname 1 : natoms 0.5 0.5 0.5 0.0 0.0 0.0 : atposl, bfcmt bfieldc -2.0 -2.0 -2.0 reducebf 0.5 sppath '../../species/' ngridk 1 1 1 vkloff 0.25 0.5 0.625 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST510.OUT_0000644002504400250440000000014512337331331020334 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.320079366642E-01 elk-2.3.22/tests/test-016/PaxHeaders.22528/TEST800.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-016/TEST800.OUT_0000644002504400250440000000014412337331331020335 0ustar00dewhurstdewhurst00000000000000'DFT+U energy for each atom' 2 1 0.100000000000E-03 1 0.225481305577E-02 elk-2.3.22/tests/PaxHeaders.22528/test-0090000644002504400250440000000005012337331331015760 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/0000755002504400250440000000000012337331331016601 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST400.OUT_0000644002504400250440000000014112337331331020330 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 12.4988308181 elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST140.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST140.OUT_0000644002504400250440000000311412337331331020334 0ustar00dewhurstdewhurst00000000000000'ELNES cross-section' 2 50 0.100000000000E-01 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.00000000000 5 0.00000000000 6 0.00000000000 7 0.00000000000 8 0.00000000000 9 0.00000000000 10 0.471230011074E-10 11 0.803971591037E-09 12 0.576151783855E-08 13 0.255219264420E-07 14 0.862039480389E-07 15 0.246685694156E-06 16 0.662423693092E-06 17 0.197023948519E-05 18 0.502142111945E-05 19 0.968522482922E-05 20 0.140267130050E-04 21 0.151591948554E-04 22 0.124542576471E-04 23 0.762866461074E-05 24 0.359373249419E-05 25 0.130457476094E-05 26 0.446616059222E-06 27 0.136688316600E-06 28 0.321400788556E-07 29 0.976841437458E-07 30 0.101241152780E-05 31 0.595272250477E-05 32 0.451045856124E-04 33 0.149358496073E-03 34 0.313441619707E-03 35 0.452121843286E-03 36 0.476804290718E-03 37 0.395560374503E-03 38 0.297250042128E-03 39 0.275098723789E-03 40 0.330791557909E-03 41 0.441749833421E-03 42 0.589830628440E-03 43 0.769883909992E-03 44 0.956202384626E-03 45 0.110515312424E-02 46 0.120298472951E-02 47 0.123557814304E-02 48 0.116036950807E-02 49 0.918630999055E-03 50 0.538858309161E-03 elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017564 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST000.OUT_0000644002504400250440000000012612337331331020327 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -99.9146932710 elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017575 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST450.OUT_0000644002504400250440000000022412337331331020337 0ustar00dewhurstdewhurst00000000000000'total moment' 2 3 0.200000000000E-01 1 0.799019174355E-26 2 -0.114506654692E-26 3 0.129847111969E-25 elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017576 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST910.OUT_0000644002504400250440000000052612337331331020345 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 9 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.459243458892 5 0.459243458892 6 -0.459243458892 7 0.918486917784 8 0.00000000000 9 0.00000000000 elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017575 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST900.OUT_0000644002504400250440000000007012337331331020336 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 2277 elk-2.3.22/tests/test-009/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017171 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/fort.980000644002504400250440000000014212337331331017732 0ustar00dewhurstdewhurst00000000000000 80.0314506433280 -100.133080114954 81.2379347657075 -100.133080114954 elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017600 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST705.OUT_0000644002504400250440000000010112337331331020334 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 24 elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST500.OUT_0000644002504400250440000000013512337331331020334 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 166.666666681 elk-2.3.22/tests/test-009/PaxHeaders.22528/B.in0000644002504400250440000000005012337331331016546 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/B.in0000644002504400250440000000172212337331331017314 0ustar00dewhurstdewhurst00000000000000 'B' : spsymb 'boron' : spname -5.00000 : spzn 19707.24740 : spmass 0.894427E-06 1.8000 43.3288 300 : sprmin, rmt, sprmax, nrmt 3 : spnst 1 0 1 2.00000 T : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 1.00000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 2 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F elk-2.3.22/tests/test-009/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017140 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/elk.in0000644002504400250440000000063312337331331017706 0ustar00dewhurstdewhurst00000000000000 ! Electron loss near-edge spectroscopy (ELNES) for boron nitride. tasks 0 140 500 test .true. maxscl 6 rgkmax 6.0 lradstp 2 spinorb .true. vecql 0.0 0.0 0.5 wplot 50 100 3 18.5 19.0 emaxelnes -10.0 ngridk 2 2 2 avec 3.4204 3.4204 0.0000 3.4204 0.0000 3.4204 0.0000 3.4204 3.4204 atoms 2 'B.in' 1 0.00 0.00 0.00 0.0 0.0 0.0 'N+.in' 1 0.25 0.25 0.25 0.0 0.0 0.0 elk-2.3.22/tests/test-009/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/TEST510.OUT_0000644002504400250440000000014512337331331020336 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.497417879462E-01 elk-2.3.22/tests/test-009/PaxHeaders.22528/N+.in0000644002504400250440000000005012337331331016635 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-009/N+.in0000644002504400250440000000253412337331331017405 0ustar00dewhurstdewhurst00000000000000 'N+' : spsymb 'nitrogen with pseudo core-hole' : spname -8.00000 : spzn 25532.72506 : spmass 0.755929E-06 1.4500 26.9237 300 : sprmin, rmt, sprmax, nrmt 4 : spnst 1 0 1 2.00000 F : spn, spl, spk, spocc, spcore 2 0 1 2.00000 F 2 1 1 1.00000 F 2 1 2 2.50000 F 1 : apword 0.1500 0 F : apwe0, apwdm, apwve 0 : nlx 5 : nlorb 0 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 1 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 2 2 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F 0 3 : lorbl, lorbord 0.1500 0 F : lorbe0, lorbdm, lorbve 0.1500 1 F -0.6020 0 T 0 3 0.1500 0 F 0.1500 1 F -20.0000 0 T elk-2.3.22/tests/PaxHeaders.22528/test-0120000644002504400250440000000005012337331331015752 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/0000755002504400250440000000000012337331331016573 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST400.OUT_0000644002504400250440000000014112337331331020322 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 25.9807546805 elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017556 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST000.OUT_0000644002504400250440000000012612337331331020321 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -484.420565404 elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST910.OUT_0000644002504400250440000000144712337331331020342 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 24 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.205241634672 5 0.205241634672 6 -0.205241634672 7 0.410483269343 8 0.410483269343 9 -0.410483269343 10 0.410483269343 11 0.00000000000 12 0.00000000000 13 0.615724904015 14 0.205241634672 15 -0.205241634672 16 0.820966538686 17 0.410483269343 18 -0.410483269343 19 0.820966538686 20 0.00000000000 21 0.00000000000 22 0.820966538686 23 0.410483269343 24 0.00000000000 elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST900.OUT_0000644002504400250440000000007012337331331020330 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 3287 elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST750.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST750.OUT_0000644002504400250440000000036112337331331020336 0ustar00dewhurstdewhurst00000000000000'total forces' 2 6 0.100000000000E-02 1 0.313465160219E-37 2 0.00000000000 3 0.522441933699E-37 4 -0.313465160219E-37 5 0.00000000000 6 -0.522441933699E-37 elk-2.3.22/tests/test-012/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017163 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/fort.980000644002504400250440000000030412337331331017724 0ustar00dewhurstdewhurst00000000000000 112.073579960326 -242.163991104766 227.526206374851 -484.398949466810 115.478096188364 -484.398949466810 117.218942923165 -484.398949466810 elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST705.OUT_0000644002504400250440000000010112337331331020326 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 48 elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST500.OUT_0000644002504400250440000000013512337331331020326 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 10.4700037758 elk-2.3.22/tests/test-012/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017132 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/elk.in0000644002504400250440000000130712337331331017677 0ustar00dewhurstdewhurst00000000000000 ! Phonon and electron-phonon coupling test for Nb. tasks 0 200 220 240 245 250 500 test .true. mixtype 1 maxscl 5 wplot 50 100 2 0.0 1.0 ngridq 2 1 1 ngridk 4 4 4 radkpt 4.0 swidth 0.1 rgkmax 5.0 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.8267 sppath '../../species/' atoms 1 : nspecies 'Al.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt plot1d 9 400 0.5 0.5 0.5 0.25 0.25 0.25 0.0 0.0 0.0 -0.5 0.5 0.5 -0.5 0.5 0.0 -0.75 0.25 0.25 -0.5 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017564 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST510.OUT_0000644002504400250440000000014512337331331020330 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.348170115159E-01 elk-2.3.22/tests/test-012/PaxHeaders.22528/TEST251.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-012/TEST251.OUT_0000644002504400250440000000016312337331331020332 0ustar00dewhurstdewhurst00000000000000'Electron-phonon coupling constant, lambda' 2 1 0.500000000000E-01 1 0.155205350962 elk-2.3.22/tests/PaxHeaders.22528/test-0130000644002504400250440000000005012337331331015753 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/0000755002504400250440000000000012337331331016574 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST400.OUT_0000644002504400250440000000014112337331331020323 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 38.9887698127 elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017557 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST000.OUT_0000644002504400250440000000012612337331331020322 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -1514.80904306 elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST450.OUT_0000644002504400250440000000022412337331331020332 0ustar00dewhurstdewhurst00000000000000'total moment' 2 3 0.200000000000E-01 1 -0.166641029789E-02 2 0.642113091842E-03 3 -0.122355056324 elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST910.OUT_0000644002504400250440000000144712337331331020343 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 24 0.100000000000E-07 1 0.142903595960 2 0.285807191920 3 0.357258989901 4 0.714517979801 5 0.285807191920 6 0.357258989901 7 0.142903595960 8 0.857421575761 9 0.357258989901 10 0.714517979801 11 0.857421575761 12 0.357258989901 13 0.142903595960 14 0.285807191920 15 0.928873373742 16 0.714517979801 17 0.285807191920 18 0.928873373742 19 0.142903595960 20 0.857421575761 21 0.928873373742 22 0.714517979801 23 0.857421575761 24 0.928873373742 elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST900.OUT_0000644002504400250440000000007012337331331020331 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 4945 elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST750.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST750.OUT_0000644002504400250440000000036112337331331020337 0ustar00dewhurstdewhurst00000000000000'total forces' 2 6 0.100000000000E-02 1 -0.526221457231E-01 2 -0.444294408030E-01 3 -0.641508045923E-01 4 0.526221457231E-01 5 0.444294408030E-01 6 0.641508045923E-01 elk-2.3.22/tests/test-013/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017164 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/fort.980000644002504400250440000000014212337331331017725 0ustar00dewhurstdewhurst00000000000000 166.012263936000 -1478.22361597488 166.012263936000 -1478.22361597488 elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST705.OUT_0000644002504400250440000000010112337331331020327 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 1 elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017564 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST500.OUT_0000644002504400250440000000013512337331331020327 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 257.858059505 elk-2.3.22/tests/test-013/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017133 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/elk.in0000644002504400250440000000115312337331331017677 0ustar00dewhurstdewhurst00000000000000 ! Force test with spin-orbit coupling and removal of the source term from B_xc tasks 0 500 test .true. spinorb .true. nosource .true. tforce .true. bfieldc 0.0 0.0 0.1 rgkmax 6.0 maxscl 2 scale 5.496 avec 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 atoms 2 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 'Al.in' 1 0.52 0.52 0.52 0.0 0.0 0.0 : atposl, bfcmt sppath '../../species/' ngridk 2 2 2 vkloff 0.25 0.5 0.625 elk-2.3.22/tests/test-013/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-013/TEST510.OUT_0000644002504400250440000000014512337331331020331 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.726968253747E-03 elk-2.3.22/tests/PaxHeaders.22528/test-0060000644002504400250440000000005012337331331015755 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/0000755002504400250440000000000012337331331016576 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST400.OUT_0000644002504400250440000000014112337331331020325 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 63.9839402857 elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017561 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST000.OUT_0000644002504400250440000000012612337331331020324 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -4211.11941733 elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST450.OUT_0000644002504400250440000000022412337331331020334 0ustar00dewhurstdewhurst00000000000000'total moment' 2 3 0.200000000000E-01 1 0.350856978545E-21 2 0.821384889256E-20 3 0.682047114084E-20 elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST910.OUT_0000644002504400250440000000174112337331331020342 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 30 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.146981971254 5 0.146981971254 6 -0.146981971254 7 0.293963942509 8 0.293963942509 9 -0.293963942509 10 0.440945913763 11 0.440945913763 12 -0.440945913763 13 0.293963942509 14 0.00000000000 15 0.00000000000 16 0.440945913763 17 0.146981971254 18 -0.146981971254 19 0.587927885017 20 0.293963942509 21 -0.293963942509 22 0.587927885017 23 0.00000000000 24 0.00000000000 25 0.734909856272 26 0.146981971254 27 -0.146981971254 28 0.587927885017 29 0.293963942509 30 -0.277555756156E-16 elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST900.OUT_0000644002504400250440000000007012337331331020333 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 8873 elk-2.3.22/tests/test-006/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017166 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/fort.980000644002504400250440000000014212337331331017727 0ustar00dewhurstdewhurst00000000000000 305.145828175750 -4204.08125977299 309.745939678728 -4204.08125977299 elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017575 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST705.OUT_0000644002504400250440000000010112337331331020331 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 24 elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST010.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST010.OUT_0000644002504400250440000000612012337331331020325 0ustar00dewhurstdewhurst00000000000000'total DOS' 2 100 0.200000000000E-01 1 0.00000000000 2 0.165234445262 3 0.566061650399 4 1.49271167707 5 3.16231815089 6 5.45848446039 7 7.72988404697 8 9.06423720870 9 8.88174816046 10 7.40675705035 11 5.51205298658 12 4.12663064697 13 3.82614561808 14 4.69595964262 15 6.49811991010 16 8.56041798688 17 10.1950227542 18 11.0040474550 19 11.4015769131 20 12.0223829709 21 13.1451405768 22 14.3244179306 23 14.7628404026 24 13.9418792711 25 11.7851507036 26 8.89177987455 27 6.10519183358 28 4.26624675429 29 3.62861008874 30 3.97499811324 31 4.79277260590 32 5.75130328005 33 6.73057151064 34 7.83181951422 35 9.02681212049 36 10.0974457773 37 10.6687861817 38 10.5762083404 39 10.0626952974 40 9.66087595796 41 9.85865823452 42 10.7688176427 43 12.2912891827 44 14.2074749654 45 16.5484140996 46 18.8387410600 47 20.0921464724 48 18.4221684888 49 12.9151301748 50 4.47891636821 51 0.00000000000 52 0.165226672680 53 0.566418633390 54 1.49418077422 55 3.16567118453 56 5.46347326949 57 7.73487245881 58 9.06695789543 59 8.88109034263 60 7.40330527049 61 5.50715261509 62 4.12092995794 63 3.81941146904 64 4.68846153914 65 6.49127758949 66 8.55692747969 67 10.1961692305 68 11.0092049520 69 11.4075340634 70 12.0266413219 71 13.1465955386 72 14.3241350228 73 14.7620317445 74 13.9414141347 75 11.7852070053 76 8.89233257416 77 6.10616097330 78 4.26760909325 79 3.63043282186 80 3.97733194279 81 4.79548911177 82 5.75400263843 83 6.73291251862 84 7.83370753380 85 9.02822770059 86 10.0979345576 87 10.6674963690 88 10.5728334165 89 10.0578896351 90 9.65583327451 91 9.85409070268 92 10.7649200017 93 12.2885622076 94 14.2064452725 95 16.5494466226 96 18.8411594644 97 20.0952012600 98 18.4248363843 99 12.9165524304 100 4.47835396365 elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST500.OUT_0000644002504400250440000000013512337331331020331 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 0.180480373843E-01 elk-2.3.22/tests/test-006/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017135 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/elk.in0000644002504400250440000000123412337331331017701 0ustar00dewhurstdewhurst00000000000000 ! GaAs using the Perdew-Burke-Ernzerhof GGA functional and spin-orbit coupling. tasks 0 10 500 test .true. maxscl 2 wplot 50 100 4 0.0 0.5 rgkmax 6.0 xctype 20 spinorb .true. avec 5.3435 5.3435 0.0000 5.3435 0.0000 5.3435 0.0000 5.3435 5.3435 sppath '../../species/' atoms 2 : nspecies 'Ga.in' : spfname 1 : natoms 0.00 0.00 0.00 0.0 0.0 0.0 : atposl, bfcmt 'As.in' : spfname 1 : natoms 0.25 0.25 0.25 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 elk-2.3.22/tests/test-006/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-006/TEST510.OUT_0000644002504400250440000000014512337331331020333 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.169524116591E-01 elk-2.3.22/tests/PaxHeaders.22528/test-0100000644002504400250440000000005012337331331015750 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/0000755002504400250440000000000012337331331016571 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-010/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017560 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/TEST400.OUT_0000644002504400250440000000014112337331331020320 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 9.99701221395 elk-2.3.22/tests/test-010/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017554 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/TEST000.OUT_0000644002504400250440000000012612337331331020317 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -79.6432779488 elk-2.3.22/tests/test-010/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/TEST910.OUT_0000644002504400250440000000023412337331331020331 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 3 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 elk-2.3.22/tests/test-010/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/TEST900.OUT_0000644002504400250440000000007012337331331020326 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 5743 elk-2.3.22/tests/test-010/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017161 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/fort.980000644002504400250440000000014212337331331017722 0ustar00dewhurstdewhurst00000000000000 125.000000000000 -68.9759408939248 125.000000000000 -68.9759408939248 elk-2.3.22/tests/test-010/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/TEST705.OUT_0000644002504400250440000000010112337331331020324 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 2 elk-2.3.22/tests/test-010/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017561 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/TEST500.OUT_0000644002504400250440000000013512337331331020324 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 0.666133814746E-12 elk-2.3.22/tests/test-010/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017130 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/elk.in0000644002504400250440000000102012337331331017665 0ustar00dewhurstdewhurst00000000000000 ! Water molecule in a box. tasks 0 500 test .true. tefvit .true. maxscl 2 molecule .true. avec 5.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 5.0 rgkmax 5.0 gmaxvr 14.0 sppath '../../species/' atoms 2 : nspecies 'O.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atpos, bfcmt 'H.in' 2 1.811 0.0 0.0 0.0 0.0 0.0 -0.451907959 1.753710409 0.0 0.0 0.0 0.0 elk-2.3.22/tests/test-010/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-010/TEST510.OUT_0000644002504400250440000000014512337331331020326 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.239279326039 elk-2.3.22/tests/PaxHeaders.22528/test-0040000644002504400250440000000005012337331331015753 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/0000755002504400250440000000000012337331331016574 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST400.OUT_0000644002504400250440000000014112337331331020323 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 12.0278783736 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017557 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST000.OUT_0000644002504400250440000000012612337331331020322 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -106.883238270 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST910.OUT_0000644002504400250440000000052612337331331020340 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 9 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.412930617293 5 0.412930617293 6 -0.412930617293 7 0.825861234586 8 0.00000000000 9 0.00000000000 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST900.OUT_0000644002504400250440000000007012337331331020331 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 339 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST187.OUT_0000644002504400250440000000005012337331331017577 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST187.OUT_0000644002504400250440000000523512337331331020350 0ustar00dewhurstdewhurst00000000000000'BSE optical conductivity' 3 50 0.200000000000E-01 1 0.307737888273E-02 0.00000000000 2 -0.258095590354E-04 0.00000000000 3 0.141147370355E-04 0.00000000000 4 -0.258098536031E-04 0.00000000000 5 0.307847627056E-02 0.00000000000 6 0.147584220307E-04 0.00000000000 7 0.141150541077E-04 0.00000000000 8 0.147587607837E-04 0.00000000000 9 0.313623073761E-02 0.00000000000 10 0.307799850615E-02 -0.303581101351E-03 11 -0.258124303697E-04 0.256176751848E-05 12 0.141170142605E-04 -0.139618316555E-05 13 -0.258127221874E-04 0.256182564907E-05 14 0.307909651809E-02 -0.303686632549E-03 15 0.147608926244E-04 -0.145925693927E-05 16 0.141173283810E-04 -0.139624570406E-05 17 0.147612283116E-04 -0.145932341785E-05 18 0.313685514358E-02 -0.309434272934E-03 19 0.307985837642E-02 -0.607279322732E-03 20 -0.258210473297E-04 0.512408899181E-05 21 0.141238497623E-04 -0.279279529579E-05 22 -0.258213308935E-04 0.512420534472E-05 23 0.308095826210E-02 -0.607490500085E-03 24 0.147683084849E-04 -0.291897979073E-05 25 0.141241550233E-04 -0.279292047535E-05 26 0.147686349683E-04 -0.291911289804E-05 27 0.313872936770E-02 -0.618986580147E-03 28 0.308296149703E-02 -0.911211959327E-03 29 -0.258354187950E-04 0.768751890917E-05 30 0.141352550383E-04 -0.419026601010E-05 31 -0.258356885886E-04 0.768769366818E-05 32 0.308406451045E-02 -0.911529013001E-03 33 0.147806818660E-04 -0.437963516762E-05 34 0.141355455184E-04 -0.419045403612E-05 35 0.147809929883E-04 -0.437983520460E-05 36 0.314185643210E-02 -0.928775132155E-03 37 0.308731288581E-02 -0.121549665720E-02 38 -0.258555595925E-04 0.102526128298E-04 39 0.141512493030E-04 -0.558902623953E-05 40 -0.258558100792E-04 0.102528462713E-04 41 0.308842028817E-02 -0.121591993305E-02 42 0.147980332454E-04 -0.584169108779E-05 43 0.141515190579E-04 -0.558927742101E-05 44 0.147983228171E-04 -0.584195850739E-05 45 0.314624138572E-02 -0.123891849251E-02 46 0.309291959286E-02 -0.152025159011E-02 47 -0.258814905375E-04 0.128199279214E-04 48 0.141718595675E-04 -0.698950888855E-05 49 -0.258817161516E-04 0.128202204153E-04 50 0.309403265556E-02 -0.152078155043E-02 elk-2.3.22/tests/test-004/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017164 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/fort.980000644002504400250440000000052712337331331017734 0ustar00dewhurstdewhurst00000000000000 110.092661387050 -106.883307978221 111.752322019042 -106.883307978221 113.437002242519 -106.883307978221 115.147079230951 -106.883307978221 116.882935843742 -106.883307978221 118.644960711953 -106.883307978221 120.433548325306 -106.883307978221 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST705.OUT_0000644002504400250440000000010112337331331020327 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 48 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017564 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST500.OUT_0000644002504400250440000000013512337331331020327 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 0.304869195901E-01 elk-2.3.22/tests/test-004/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017133 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/elk.in0000644002504400250440000000126312337331331017701 0ustar00dewhurstdewhurst00000000000000 tasks 0 120 121 180 185 186 187 500 test .true. mixtype 2 rgkmax 5.5 gmaxvr 0.0 nvbse 3 ncbse 3 swidth 0.02 wplot 50 100 2 0.0 0.1 avec 3.80402 3.80402 0.00000 3.80402 0.00000 3.80402 0.00000 3.80402 3.80402 sppath '../../species/' atoms 2 : nspecies 'Li.in' : spfname 1 : natoms 0.0000 0.0000 0.0000 0.0 0.0 0.0 : atposl, bfcmt 'F.in' : spfname 1 : natoms 0.5000 0.5000 0.5000 0.0 0.0 0.0 : atposl, bfcmt ngridk 2 2 2 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST121.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST121.OUT_0000644002504400250440000000523112337331331020330 0ustar00dewhurstdewhurst00000000000000'optical conductivity' 3 50 0.100000000000E-01 1 0.233627136431E-02 0.00000000000 2 0.233642351269E-02 -0.232613997045E-03 3 0.233688004316E-02 -0.465257852585E-03 4 0.233764121182E-02 -0.697961441428E-03 5 0.233870744590E-02 -0.930754671028E-03 6 0.234007934429E-02 -0.116366749786E-02 7 0.234175767835E-02 -0.139672994387E-02 8 0.234374339288E-02 -0.162997211296E-02 9 0.234603760743E-02 -0.186342420765E-02 10 0.234864161771E-02 -0.209711654580E-02 11 0.235155689735E-02 -0.233107957752E-02 12 0.235478509982E-02 -0.256534390223E-02 13 0.235832806067E-02 -0.279994028588E-02 14 0.236218779992E-02 -0.303489967846E-02 15 0.236636652481E-02 -0.327025323169E-02 16 0.237086663277E-02 -0.350603231697E-02 17 0.237569071463E-02 -0.374226854360E-02 18 0.238084155817E-02 -0.397899377741E-02 19 0.238632215191E-02 -0.421624015957E-02 20 0.239213568919E-02 -0.445404012585E-02 21 0.239828557263E-02 -0.469242642632E-02 22 0.240477541881E-02 -0.493143214532E-02 23 0.241160906337E-02 -0.517109072199E-02 24 0.241879056637E-02 -0.541143597126E-02 25 0.242632421806E-02 -0.565250210529E-02 26 0.243421454502E-02 -0.589432375551E-02 27 0.244246631667E-02 -0.613693599519E-02 28 0.245108455216E-02 -0.638037436264E-02 29 0.246007452775E-02 -0.662467488505E-02 30 0.246944178452E-02 -0.686987410302E-02 31 0.247919213667E-02 -0.711600909581E-02 32 0.248933168018E-02 -0.736311750735E-02 33 0.249986680206E-02 -0.761123757318E-02 34 0.251080419016E-02 -0.786040814809E-02 35 0.252215084353E-02 -0.811066873483E-02 36 0.253391408349E-02 -0.836205951365E-02 37 0.254610156529E-02 -0.861462137282E-02 38 0.255872129044E-02 -0.886839594007E-02 39 0.257178161964E-02 -0.912342561515E-02 40 0.258529128626E-02 -0.937975360343E-02 41 0.259925941034E-02 -0.963742395097E-02 42 0.261369551334E-02 -0.989648158097E-02 43 0.262860953363E-02 -0.101569723321E-01 44 0.264401184287E-02 -0.104189429984E-01 45 0.265991326379E-02 -0.106824413717E-01 46 0.267632508934E-02 -0.109475162852E-01 47 0.269325910398E-02 -0.112142176602E-01 48 0.271072760698E-02 -0.114825965527E-01 49 0.272874343780E-02 -0.117527052018E-01 50 0.274732000265E-02 -0.120245970785E-01 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST510.OUT_0000644002504400250440000000014512337331331020331 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.317672755935 elk-2.3.22/tests/test-004/PaxHeaders.22528/TEST800.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-004/TEST800.OUT_0000644002504400250440000000023412337331331020332 0ustar00dewhurstdewhurst00000000000000'1/q^2 weights (wiq2)' 2 3 0.100000000000E-07 1 4.86260558311 2 0.630337591897 3 0.442953142821 elk-2.3.22/tests/PaxHeaders.22528/test-0180000644002504400250440000000005012337331331015760 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/0000755002504400250440000000000012337331331016601 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-018/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/TEST400.OUT_0000644002504400250440000000014112337331331020330 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 41.0030272914 elk-2.3.22/tests/test-018/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017564 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/TEST000.OUT_0000644002504400250440000000012612337331331020327 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -3817.36120778 elk-2.3.22/tests/test-018/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017576 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/TEST910.OUT_0000644002504400250440000000052612337331331020345 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 9 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.00000000000 5 0.251891649582 6 0.251891649582 7 0.00000000000 8 0.503783299164 9 0.503783299164 elk-2.3.22/tests/test-018/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017575 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/TEST900.OUT_0000644002504400250440000000007012337331331020336 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 3511 elk-2.3.22/tests/test-018/PaxHeaders.22528/TEST210.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/TEST210.OUT_0000644002504400250440000003630112337331331020336 0ustar00dewhurstdewhurst00000000000000'phonon DOS' 2 500 0.100000000000E-01 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.00000000000 5 0.00000000000 6 0.00000000000 7 0.00000000000 8 0.00000000000 9 0.00000000000 10 0.00000000000 11 0.00000000000 12 0.00000000000 13 0.00000000000 14 0.00000000000 15 0.00000000000 16 0.00000000000 17 0.00000000000 18 0.00000000000 19 0.00000000000 20 0.00000000000 21 0.00000000000 22 0.00000000000 23 0.00000000000 24 0.00000000000 25 0.00000000000 26 0.00000000000 27 0.00000000000 28 0.00000000000 29 0.00000000000 30 0.00000000000 31 0.00000000000 32 0.00000000000 33 0.00000000000 34 0.00000000000 35 0.00000000000 36 0.00000000000 37 0.00000000000 38 0.00000000000 39 0.00000000000 40 0.00000000000 41 0.00000000000 42 0.00000000000 43 0.00000000000 44 0.00000000000 45 1311.48824515 46 1311.48824515 47 1311.48824515 48 0.00000000000 49 0.00000000000 50 856.838986828 51 1702.53032357 52 1702.53032357 53 874.587794412 54 28.8964576680 55 920.358734168 56 891.637141599 57 1765.43804306 58 1702.61775612 59 2531.04116431 60 1685.39354384 61 885.648011946 62 57.0497386638 63 874.544078138 64 1674.28961003 65 1737.10989697 66 891.637141599 67 63.3448822405 68 829.254017405 69 1731.47049752 70 1759.31776459 71 1759.23033204 72 856.838986828 73 1657.24026284 74 1674.46447513 75 1737.41591089 76 908.817637611 77 920.315017893 78 857.363582126 79 857.538447226 80 901.997898736 81 902.172763835 82 1730.63988829 83 828.816854657 84 1691.68868741 85 920.315017893 86 2594.60462792 87 1731.55793006 88 1674.63934023 89 0.349730198705 90 28.5904437442 91 1702.57403985 92 1730.59617202 93 1731.03333477 94 91.3232981369 95 920.489882992 96 891.812006699 97 2531.47832705 98 1674.28961003 99 2502.88788331 100 856.795270553 101 885.779160771 102 902.872224233 103 902.697359133 104 1764.95716404 105 919.615557496 106 891.593425324 107 0.349730198705 108 1674.68305650 109 1731.60164634 110 2560.24363590 111 885.560579397 112 1657.41512794 113 1708.86918342 114 1765.04459659 115 936.796053507 116 885.341998023 117 857.844461149 118 885.473146847 119 902.522494034 120 1702.48660730 121 1674.33332630 122 856.838986828 123 891.505992775 124 2594.86692557 125 2566.66992830 126 1731.38306497 127 56.2191294419 128 885.210849198 129 1702.83633750 130 1674.63934023 131 1702.44289102 132 919.965287694 133 920.052720244 134 909.298516634 135 1703.09863515 136 2531.65319215 137 1713.63425738 138 856.664121729 139 1759.05546694 140 1731.20819987 141 1765.83148954 142 863.440144329 143 891.593425324 144 1702.96748632 145 874.325496763 146 1674.59562395 147 885.866593321 148 1742.48699877 149 2588.09090297 150 2565.27100750 151 1736.84759932 152 891.593425324 153 857.494730951 154 1703.88552809 155 1732.60712066 156 1732.25739046 157 857.669596050 158 858.281623898 159 1731.99509281 160 1766.61838249 161 2595.95983244 162 1750.57450962 163 2561.64255669 164 1704.84728614 165 1704.01667692 166 1690.02746897 167 1704.89100241 168 1706.11505811 169 1767.49270798 170 949.823503409 171 1753.67836513 172 1733.00056713 173 2533.62042452 174 2533.79528962 175 1716.12608505 176 2566.36391437 177 1768.06101955 178 2572.61534168 179 893.735522792 180 2564.96499358 181 1733.65631126 182 2596.87787421 183 1751.18653747 184 2569.68635126 185 3370.65593885 186 3405.23551224 187 3395.18076903 188 3438.72217877 189 3410.74376287 190 3435.35602561 191 4252.10718841 192 5535.09242236 193 4674.05667315 194 2172.13054788 195 933.604765444 196 955.506619138 197 954.238847168 198 1720.54142881 199 1719.97311723 200 1719.09879174 201 910.435139780 202 965.386497251 203 998.436001029 204 997.605391807 205 982.785574637 206 929.495435609 207 911.790344300 208 879.046854446 209 878.871989347 210 1707.55769518 211 1678.83610261 212 2563.95951926 213 913.101832545 214 941.998290213 215 908.424191137 216 880.533207790 217 1703.22978397 218 851.680466397 219 1703.84181182 220 915.375078836 221 2596.61557656 222 1744.36679859 223 2562.60431474 224 1734.83665068 225 1734.83665068 226 1736.58530167 227 1737.67820854 228 2626.99838758 229 3455.07206556 230 4742.07919680 231 3881.61175916 232 2170.77534336 233 885.822877046 234 856.970135653 235 891.243695126 236 34.6232896718 237 62.7328543928 238 28.1095647209 239 28.2844298203 240 0.524595298058 241 0.524595298058 242 28.1095647209 243 90.1866749911 244 90.2741075408 245 891.156262576 246 828.729422107 247 856.270675255 248 27.6286856977 249 27.8035507971 250 34.6232896718 251 34.6232896718 252 89.3560657692 253 54.9950737464 254 54.9950737464 255 0.437162748382 256 855.177768384 257 855.352633484 258 889.451327857 259 34.7981547712 260 34.6232896718 261 26.0548998035 262 54.4267621735 263 54.6016272729 264 28.7215925687 265 60.1098779025 266 59.9350128031 267 888.708151185 268 828.948003481 269 853.822563864 270 25.3991556810 271 87.7385636002 272 62.8640032173 273 86.9953869280 274 24.4811139094 275 24.4811139094 276 23.9128023365 277 23.9128023365 278 887.003216466 279 863.177846680 280 914.588185889 281 51.4977717594 282 51.4103392097 283 23.0821931146 284 57.5306176870 285 80.0444992287 286 56.9623061141 287 22.5138815417 288 850.806140900 289 878.828273072 290 934.959969964 291 84.1538290635 292 56.1316968922 293 21.1149607468 294 41.7053261956 295 41.7053261956 296 75.3668578210 297 74.4925323242 298 102.470948221 299 914.369604515 300 930.763207579 301 911.528046651 302 79.3013225564 303 43.1916795401 304 34.4484245725 305 0.00000000000 306 28.3281460951 307 62.7765706676 308 62.7765706676 309 863.090414130 310 828.641989557 311 828.729422107 312 34.5358571222 313 34.5358571222 314 62.4268404689 315 27.9784158964 316 27.9784158964 317 34.4484245725 318 34.5358571222 319 863.177846680 320 828.729422107 321 828.641989557 322 61.8585288960 323 61.8585288960 324 61.8585288960 325 0.00000000000 326 34.4484245725 327 34.4484245725 328 863.046697855 329 855.483782308 330 889.932206881 331 61.3339335979 332 34.5358571222 333 0.874325496763E-01 334 34.5358571222 335 34.4484245725 336 61.0279196741 337 61.0279196741 338 889.626192957 339 863.046697855 340 863.046697855 341 34.4484245725 342 34.4484245725 343 60.4596081012 344 60.4596081012 345 60.4596081012 346 34.4484245725 347 863.396428054 348 897.844852626 349 863.396428054 350 94.4708699253 351 60.0224453528 352 94.4708699253 353 68.8968491450 354 103.345273717 355 984.534225630 356 975.353807914 357 940.905383342 358 25.2680068565 359 0.00000000000 360 0.00000000000 361 0.00000000000 362 24.6122627339 363 24.6122627339 364 854.565740537 365 829.953477803 366 830.040910352 367 0.874325496763E-01 368 24.1750999855 369 24.0876674358 370 24.1750999855 371 0.874325496763E-01 372 830.434356826 373 830.346924276 374 854.128577788 375 23.7816535120 376 23.7816535120 377 0.00000000000 378 0.874325496763E-01 379 23.3007744887 380 854.128577788 381 854.041145238 382 830.915235849 383 22.7761791907 384 22.7761791907 385 22.6887466410 386 0.00000000000 387 831.352398597 388 853.822563864 389 853.822563864 390 22.4701652668 391 0.874325496763E-01 392 21.9018536939 393 21.9018536939 394 853.560266215 395 831.833277621 396 853.210536017 397 21.4646909455 398 21.3772583959 399 21.1586770217 400 21.1586770217 401 853.385401116 402 852.642224444 403 852.642224444 404 20.4155003494 405 19.8909050514 406 19.8909050514 407 39.4757961789 408 852.336210520 409 871.352790074 410 851.767898947 411 37.5085638111 412 36.6779545892 413 54.2956133490 414 894.609848288 415 876.423877956 416 858.806219196 417 0.00000000000 418 0.00000000000 419 833.625644889 420 833.625644889 421 833.625644889 422 0.00000000000 423 0.00000000000 424 0.00000000000 425 834.150240187 426 834.150240187 427 834.150240187 428 0.00000000000 429 0.00000000000 430 834.543686661 431 834.543686661 432 834.543686661 433 0.00000000000 434 835.024565684 435 835.024565684 436 835.024565684 437 0.00000000000 438 835.549160982 439 835.549160982 440 835.549160982 441 0.00000000000 442 835.942607455 443 835.942607455 444 835.942607455 445 0.00000000000 446 836.423486479 447 836.423486479 448 836.423486479 449 836.948081777 450 836.948081777 451 1674.28961003 452 837.341528250 453 837.341528250 454 837.822407273 455 1676.16940985 456 1676.16940985 457 1677.08745162 458 2517.70770048 459 2937.60252030 460 2098.86207126 461 419.894819821 462 0.00000000000 463 0.00000000000 464 0.00000000000 465 0.00000000000 466 0.00000000000 467 0.00000000000 468 0.00000000000 469 0.00000000000 470 0.00000000000 471 0.00000000000 472 0.00000000000 473 0.00000000000 474 0.00000000000 475 0.00000000000 476 0.00000000000 477 0.00000000000 478 0.00000000000 479 0.00000000000 480 0.00000000000 481 0.00000000000 482 0.00000000000 483 0.00000000000 484 0.00000000000 485 0.00000000000 486 0.00000000000 487 0.00000000000 488 0.00000000000 489 0.00000000000 490 0.00000000000 491 0.00000000000 492 0.00000000000 493 0.00000000000 494 0.00000000000 495 0.00000000000 496 0.00000000000 497 0.00000000000 498 0.00000000000 499 0.00000000000 500 0.00000000000 elk-2.3.22/tests/test-018/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017600 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/TEST705.OUT_0000644002504400250440000000010112337331331020334 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 48 elk-2.3.22/tests/test-018/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/TEST500.OUT_0000644002504400250440000000013512337331331020334 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 333.333336992 elk-2.3.22/tests/test-018/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017140 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/elk.in0000644002504400250440000000062212337331331017704 0ustar00dewhurstdewhurst00000000000000 tasks 0 205 210 500 test .true. rgkmax 6.5 maxscl 8 ngridq 1 1 2 ngridk 1 1 4 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 3.118 sppath '../../species/' atoms 1 : nspecies 'Nb.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt elk-2.3.22/tests/test-018/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-018/TEST510.OUT_0000644002504400250440000000014512337331331020336 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.203822523392E-01 elk-2.3.22/tests/PaxHeaders.22528/test-0010000644002504400250440000000005012337331331015750 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/0000755002504400250440000000000012337331331016571 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-001/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017560 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/TEST400.OUT_0000644002504400250440000000014112337331331020320 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 294.007318025 elk-2.3.22/tests/test-001/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017554 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/TEST000.OUT_0000644002504400250440000000012612337331331020317 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -25065.3486438 elk-2.3.22/tests/test-001/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/TEST910.OUT_0000644002504400250440000000037112337331331020333 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 6 0.100000000000E-07 1 0.108711646790 2 0.213882564036 3 0.142325463505 4 0.543558233949 5 0.213882564036 6 0.142325463505 elk-2.3.22/tests/test-001/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/TEST900.OUT_0000644002504400250440000000007012337331331020326 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 2957 elk-2.3.22/tests/test-001/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017161 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/fort.980000644002504400250440000000014212337331331017722 0ustar00dewhurstdewhurst00000000000000 1171.18517894656 -25065.3467616168 1171.18517894656 -25065.3467616168 elk-2.3.22/tests/test-001/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/TEST705.OUT_0000644002504400250440000000010112337331331020324 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 8 elk-2.3.22/tests/test-001/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017561 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/TEST500.OUT_0000644002504400250440000000013512337331331020324 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 0.108829024803 elk-2.3.22/tests/test-001/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017130 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/elk.in0000644002504400250440000000214512337331331017676 0ustar00dewhurstdewhurst00000000000000 tasks 0 500 test .true. ! small cut-off for testing purposes rgkmax 5.0 gmaxvr 0.0 maxscl 1 avec 7.2246 0.0 0.0 0.0 7.3442 0.0 0.0 0.0 22.0733 sppath '../../species/' atoms 4 : nspecies 'Y.in' : spfname 1 : natoms 0.5 0.5 0.5 0.0 0.0 0.0 : atposl, bfcmt 'Ba.in' 2 : natoms 0.5 0.5 0.1843 0.0 0.0 0.0 : atposl, bfcmt 0.5 0.5 0.8157 0.0 0.0 0.0 'Cu.in' 3 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.0 0.0 0.3556 0.0 0.0 0.0 0.0 0.0 0.6444 0.0 0.0 0.0 'O.in' 7 : natoms 0.0 0.5 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.5 0.0 0.3773 0.0 0.0 0.0 0.5 0.0 0.6227 0.0 0.0 0.0 0.0 0.5 0.3789 0.0 0.0 0.0 0.0 0.5 0.6211 0.0 0.0 0.0 0.0 0.0 0.1584 0.0 0.0 0.0 0.0 0.0 0.8416 0.0 0.0 0.0 ngridk 2 2 1 vkloff 0.25 0.5 0.5 elk-2.3.22/tests/test-001/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-001/TEST510.OUT_0000644002504400250440000000014512337331331020326 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.201527282201E-01 elk-2.3.22/tests/PaxHeaders.22528/test-0150000644002504400250440000000005012337331331015755 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/0000755002504400250440000000000012337331331016576 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST400.OUT_0000644002504400250440000000014112337331331020325 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 72.0036812564 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST820.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST820.OUT_0000644002504400250440000000014012337331331020332 0ustar00dewhurstdewhurst00000000000000'Norm of tensor moments' 2 1 0.100000000000E-03 1 94.2850355419 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017561 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST000.OUT_0000644002504400250440000000012612337331331020324 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -3198.07294875 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST450.OUT_0000644002504400250440000000012612337331331020335 0ustar00dewhurstdewhurst00000000000000'total moment' 2 1 0.200000000000E-01 1 0.135363070768E-16 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST910.OUT_0000644002504400250440000000066312337331331020344 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 12 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.597004528775 5 -0.199001509592 6 -0.199001509592 7 0.398003019183 8 0.398003019183 9 -0.398003019183 10 0.199001509592 11 0.199001509592 12 0.199001509592 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST900.OUT_0000644002504400250440000000007012337331331020333 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 7247 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST830.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST830.OUT_0000644002504400250440000000016612337331331020343 0ustar00dewhurstdewhurst00000000000000'Norm of DFT+U Hartree-Fock exchange energies' 2 1 0.100000000000E-03 1 2.25431943836 elk-2.3.22/tests/test-015/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017166 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/fort.980000644002504400250440000000014212337331331017727 0ustar00dewhurstdewhurst00000000000000 245.901128998586 -3195.59571551616 249.608119255881 -3195.59571551616 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017575 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST705.OUT_0000644002504400250440000000010112337331331020331 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 24 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST500.OUT_0000644002504400250440000000013512337331331020331 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 62.2552521379 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST810.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST810.OUT_0000644002504400250440000000475512337331331020351 0ustar00dewhurstdewhurst00000000000000'U and J parameters' 2 80 0.100000000000E-03 1 0.293989987790 2 0.460665956751E-01 3 0.00000000000 4 0.00000000000 5 0.00000000000 6 0.00000000000 7 0.00000000000 8 0.00000000000 9 0.00000000000 10 0.00000000000 11 0.00000000000 12 0.00000000000 13 0.00000000000 14 0.00000000000 15 0.00000000000 16 0.00000000000 17 0.00000000000 18 0.00000000000 19 0.00000000000 20 0.00000000000 21 0.00000000000 22 0.00000000000 23 0.00000000000 24 0.00000000000 25 0.00000000000 26 0.00000000000 27 0.00000000000 28 0.00000000000 29 0.00000000000 30 0.00000000000 31 0.00000000000 32 0.00000000000 33 0.00000000000 34 0.00000000000 35 0.00000000000 36 0.00000000000 37 0.00000000000 38 0.00000000000 39 0.00000000000 40 0.00000000000 41 0.00000000000 42 0.00000000000 43 0.00000000000 44 0.00000000000 45 0.00000000000 46 0.00000000000 47 0.00000000000 48 0.00000000000 49 0.00000000000 50 0.00000000000 51 0.00000000000 52 0.00000000000 53 0.00000000000 54 0.00000000000 55 0.00000000000 56 0.00000000000 57 0.00000000000 58 0.00000000000 59 0.00000000000 60 0.00000000000 61 0.00000000000 62 0.00000000000 63 0.00000000000 64 0.00000000000 65 0.00000000000 66 0.00000000000 67 0.00000000000 68 0.00000000000 69 0.00000000000 70 0.00000000000 71 0.00000000000 72 0.00000000000 73 0.00000000000 74 0.00000000000 75 0.00000000000 76 0.00000000000 77 0.00000000000 78 0.00000000000 79 0.00000000000 80 0.00000000000 elk-2.3.22/tests/test-015/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017135 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/elk.in0000644002504400250440000000161112337331331017700 0ustar00dewhurstdewhurst00000000000000 ! NiO in AFMII structure with LDA+U and calculation of tensor moments. ! The values of Slater parameters are calculated through a Yukawa potential ! with screening length corresponding to U=8eV. tasks 0 400 500 maxscl 3 test .true. dft+u 1 5 : dftu, inpdftu 1 2 0.29399 : is, l, U fixed swidth 0.05 spinpol .true. scale 7.893389 avec 1.0 0.5 0.5 0.5 1.0 0.5 0.5 0.5 1.0 atoms 2 : nspecies 'Ni.in' : spfname 2 : natoms; atpos, bfcmt below 0.0 0.0 0.0 0.0 0.0 -2.0 0.5 0.5 0.5 0.0 0.0 2.0 'O.in' : spfname 2 : natoms; atpos, bfcmt below 0.25 0.25 0.25 0.0 0.0 0.0 0.75 0.75 0.75 0.0 0.0 0.0 reducebf 0.5 sppath '../../species/' ngridk 2 2 2 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST510.OUT_0000644002504400250440000000014512337331331020333 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.365431014152E-01 elk-2.3.22/tests/test-015/PaxHeaders.22528/TEST800.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-015/TEST800.OUT_0000644002504400250440000000020312337331331020330 0ustar00dewhurstdewhurst00000000000000'DFT+U energy for each atom' 2 2 0.100000000000E-03 1 0.827733127849 2 0.827733127849 elk-2.3.22/tests/PaxHeaders.22528/test-0050000644002504400250440000000005012337331331015754 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/0000755002504400250440000000000012337331331016575 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-005/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017564 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/TEST400.OUT_0000644002504400250440000000014112337331331020324 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 25.9979715035 elk-2.3.22/tests/test-005/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017560 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/TEST000.OUT_0000644002504400250440000000012612337331331020323 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -1272.39241981 elk-2.3.22/tests/test-005/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/TEST450.OUT_0000644002504400250440000000022412337331331020333 0ustar00dewhurstdewhurst00000000000000'total moment' 2 3 0.200000000000E-01 1 -0.577718925414E-01 2 0.313774257804E-06 3 -0.453191089657 elk-2.3.22/tests/test-005/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/TEST910.OUT_0000644002504400250440000000144712337331331020344 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 24 0.100000000000E-07 1 0.581776417331E-01 2 0.174532925199 3 0.407243492132 4 0.523598775598 5 0.639954059065 6 -0.581776417331E-01 7 0.523598775598 8 -0.290888208666 9 0.872664625997 10 0.989019909463 11 0.174532925199 12 0.407243492132 13 -0.407243492132 14 0.639954059065 15 0.872664625997 16 0.581776417331E-01 17 1.10537519293 18 0.407243492132 19 0.581776417331E-01 20 0.174532925199 21 1.33808575986 22 0.523598775598 23 0.639954059065 24 0.872664625997 elk-2.3.22/tests/test-005/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/TEST900.OUT_0000644002504400250440000000007012337331331020332 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 2229 elk-2.3.22/tests/test-005/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017165 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/fort.980000644002504400250440000000014212337331331017726 0ustar00dewhurstdewhurst00000000000000 76.8867187500000 -1271.18011685613 76.8867187500000 -1271.18011685613 elk-2.3.22/tests/test-005/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/TEST705.OUT_0000644002504400250440000000010112337331331020330 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 8 elk-2.3.22/tests/test-005/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/TEST500.OUT_0000644002504400250440000000013512337331331020330 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 59.3361712420 elk-2.3.22/tests/test-005/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017134 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/elk.in0000644002504400250440000000076512337331331017710 0ustar00dewhurstdewhurst00000000000000 ! Spin-spiral state for Gamma-Fe. tasks 0 500 test .true. maxscl 5 spinsprl .true. vqlss 0.1 0.1 0.0 rgkmax 6.5 bfieldc 0.05 0.0 0.0 avec 1.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 scale 3.375 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 2 2 2 vkloff 0.25 0.5 0.625 elk-2.3.22/tests/test-005/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-005/TEST510.OUT_0000644002504400250440000000014512337331331020332 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.314340132774E-02 elk-2.3.22/tests/PaxHeaders.22528/test-0080000644002504400250440000000005012337331331015757 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/0000755002504400250440000000000012337331331016600 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-008/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/TEST400.OUT_0000644002504400250440000000014112337331331020327 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 51.9937214756 elk-2.3.22/tests/test-008/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/TEST000.OUT_0000644002504400250440000000012612337331331020326 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -2542.05807264 elk-2.3.22/tests/test-008/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/TEST450.OUT_0000644002504400250440000000012612337331331020337 0ustar00dewhurstdewhurst00000000000000'total moment' 2 1 0.200000000000E-01 1 -0.215752294098E-16 elk-2.3.22/tests/test-008/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017575 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/TEST910.OUT_0000644002504400250440000000066312337331331020346 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 12 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.475998886908 5 0.00000000000 6 0.00000000000 7 0.475998886908 8 0.475998886908 9 0.00000000000 10 0.475998886908 11 0.475998886908 12 0.475998886908 elk-2.3.22/tests/test-008/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/TEST900.OUT_0000644002504400250440000000007012337331331020335 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 8385 elk-2.3.22/tests/test-008/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017170 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/fort.980000644002504400250440000000014212337331331017731 0ustar00dewhurstdewhurst00000000000000 287.496000000000 -2542.05817169171 287.496000000000 -2542.05817169171 elk-2.3.22/tests/test-008/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017577 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/TEST705.OUT_0000644002504400250440000000010112337331331020333 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 96 elk-2.3.22/tests/test-008/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/TEST500.OUT_0000644002504400250440000000013512337331331020333 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 59.0748505269 elk-2.3.22/tests/test-008/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017137 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/elk.in0000644002504400250440000000112612337331331017703 0ustar00dewhurstdewhurst00000000000000 ! Antiferromagnetic bcc iron example with fixed spin moment in muffin-tin. tasks 0 500 test .true. fsmtype 2 mommtfix 1 1 0.0 0.0 1.0 : is, ia, mommtfix 1 2 0.0 0.0 -1.0 : is, ia, mommtfix swidth 0.1 rgkmax 5.0 avec 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 scale 6.6 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.001 : atposl, bfcmt 0.5 0.5 0.5 0.0 0.0 -0.001 ngridk 2 2 2 elk-2.3.22/tests/test-008/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-008/TEST510.OUT_0000644002504400250440000000014512337331331020335 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.930511137435E-02 elk-2.3.22/tests/PaxHeaders.22528/test-0020000644002504400250440000000005012337331331015751 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/0000755002504400250440000000000012337331331016572 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-002/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017561 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/TEST400.OUT_0000644002504400250440000000014112337331331020321 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 25.9987264598 elk-2.3.22/tests/test-002/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017555 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/TEST000.OUT_0000644002504400250440000000012612337331331020320 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -1272.19626561 elk-2.3.22/tests/test-002/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/TEST450.OUT_0000644002504400250440000000012612337331331020331 0ustar00dewhurstdewhurst00000000000000'total moment' 2 1 0.200000000000E-01 1 -0.697299505636 elk-2.3.22/tests/test-002/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/TEST910.OUT_0000644002504400250440000000144712337331331020341 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 24 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.290028863884 5 0.290028863884 6 0.00000000000 7 0.580057727768 8 0.580057727768 9 0.00000000000 10 0.580057727768 11 0.290028863884 12 0.290028863884 13 0.580057727768 14 0.580057727768 15 0.580057727768 16 1.16011545554 17 1.16011545554 18 0.580057727768 19 1.16011545554 20 0.870086591652 21 0.870086591652 22 1.16011545554 23 1.16011545554 24 1.16011545554 elk-2.3.22/tests/test-002/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/TEST900.OUT_0000644002504400250440000000007012337331331020327 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 2315 elk-2.3.22/tests/test-002/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017162 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/fort.980000644002504400250440000000014212337331331017723 0ustar00dewhurstdewhurst00000000000000 79.4339156480000 -1271.20260238882 79.4339156480000 -1271.20260238882 elk-2.3.22/tests/test-002/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/TEST705.OUT_0000644002504400250440000000010112337331331020325 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 48 elk-2.3.22/tests/test-002/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/TEST500.OUT_0000644002504400250440000000013512337331331020325 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 77.9004020233 elk-2.3.22/tests/test-002/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017131 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/elk.in0000644002504400250440000000064212337331331017677 0ustar00dewhurstdewhurst00000000000000 tasks 0 500 test .true. maxscl 5 rgkmax 6.5 spinpol .true. bfieldc 0.0 0.0 0.5 avec 1.0 1.0 -1.0 1.0 -1.0 1.0 -1.0 1.0 1.0 scale 2.708 sppath '../../species/' atoms 1 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt ngridk 4 4 4 elk-2.3.22/tests/test-002/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-002/TEST510.OUT_0000644002504400250440000000014512337331331020327 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.396358145638E-02 elk-2.3.22/tests/PaxHeaders.22528/test-0110000644002504400250440000000005012337331331015751 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/0000755002504400250440000000000012337331331016572 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-011/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017561 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/TEST400.OUT_0000644002504400250440000000014112337331331020321 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 27.9917204869 elk-2.3.22/tests/test-011/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017555 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/TEST000.OUT_0000644002504400250440000000012612337331331020320 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -580.157822528 elk-2.3.22/tests/test-011/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/TEST910.OUT_0000644002504400250440000000037112337331331020334 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 6 0.100000000000E-07 1 0.153099057192 2 0.153099057192 3 0.153099057192 4 0.459297171577 5 0.459297171577 6 -0.153099057192 elk-2.3.22/tests/test-011/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/TEST900.OUT_0000644002504400250440000000007012337331331020327 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 7799 elk-2.3.22/tests/test-011/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017162 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/fort.980000644002504400250440000000014212337331331017723 0ustar00dewhurstdewhurst00000000000000 270.011394000000 -577.281082913880 274.081849515974 -580.118410811037 elk-2.3.22/tests/test-011/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/TEST705.OUT_0000644002504400250440000000010112337331331020325 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 48 elk-2.3.22/tests/test-011/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/TEST500.OUT_0000644002504400250440000000013512337331331020325 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 0.654311197822E-12 elk-2.3.22/tests/test-011/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017131 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/elk.in0000644002504400250440000000066712337331331017706 0ustar00dewhurstdewhurst00000000000000 ! Hartree-Fock calculation of silicon. tasks 0 5 500 test .true. maxscl 2 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.5 0.5 0.5 elk-2.3.22/tests/test-011/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/TEST510.OUT_0000644002504400250440000000014512337331331020327 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.361572520651 elk-2.3.22/tests/test-011/PaxHeaders.22528/TEST800.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-011/TEST800.OUT_0000644002504400250440000000023412337331331020330 0ustar00dewhurstdewhurst00000000000000'1/q^2 weights (wiq2)' 2 3 0.100000000000E-07 1 3.60574052465 2 0.467410683508 3 0.328460548608 elk-2.3.22/tests/PaxHeaders.22528/test-0070000644002504400250440000000005012337331331015756 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/0000755002504400250440000000000012337331331016577 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST400.OUT_0000644002504400250440000000014112337331331020326 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 38.9880729308 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST000.OUT_0000644002504400250440000000012612337331331020325 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -1515.65980343 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST450.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST450.OUT_0000644002504400250440000000012612337331331020336 0ustar00dewhurstdewhurst00000000000000'total moment' 2 1 0.200000000000E-01 1 0.333533379119 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST910.OUT_0000644002504400250440000000066312337331331020345 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 12 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.381076255894 5 0.00000000000 6 0.00000000000 7 0.381076255894 8 0.381076255894 9 0.00000000000 10 0.381076255894 11 0.381076255894 12 0.381076255894 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST900.OUT_0000644002504400250440000000007012337331331020334 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 2801 elk-2.3.22/tests/test-007/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017167 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/fort.980000644002504400250440000000014212337331331017730 0ustar00dewhurstdewhurst00000000000000 166.012263936000 -1515.67662377613 166.012263936000 -1515.67662377613 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017576 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST705.OUT_0000644002504400250440000000010112337331331020332 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 48 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST500.OUT_0000644002504400250440000000013512337331331020332 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 57.4409675347 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST810.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST810.OUT_0000644002504400250440000000475512337331331020352 0ustar00dewhurstdewhurst00000000000000'U and J parameters' 2 80 0.100000000000E-03 1 0.183000000000 2 0.349119670000E-01 3 0.00000000000 4 0.00000000000 5 0.00000000000 6 0.00000000000 7 0.00000000000 8 0.00000000000 9 0.00000000000 10 0.00000000000 11 0.00000000000 12 0.00000000000 13 0.00000000000 14 0.00000000000 15 0.00000000000 16 0.00000000000 17 0.00000000000 18 0.00000000000 19 0.00000000000 20 0.00000000000 21 0.00000000000 22 0.00000000000 23 0.00000000000 24 0.00000000000 25 0.00000000000 26 0.00000000000 27 0.00000000000 28 0.00000000000 29 0.00000000000 30 0.00000000000 31 0.00000000000 32 0.00000000000 33 0.00000000000 34 0.00000000000 35 0.00000000000 36 0.00000000000 37 0.00000000000 38 0.00000000000 39 0.00000000000 40 0.00000000000 41 0.00000000000 42 0.00000000000 43 0.00000000000 44 0.00000000000 45 0.00000000000 46 0.00000000000 47 0.00000000000 48 0.00000000000 49 0.00000000000 50 0.00000000000 51 0.00000000000 52 0.00000000000 53 0.00000000000 54 0.00000000000 55 0.00000000000 56 0.00000000000 57 0.00000000000 58 0.00000000000 59 0.00000000000 60 0.00000000000 61 0.00000000000 62 0.00000000000 63 0.00000000000 64 0.00000000000 65 0.00000000000 66 0.00000000000 67 0.00000000000 68 0.00000000000 69 0.00000000000 70 0.00000000000 71 0.00000000000 72 0.00000000000 73 0.00000000000 74 0.00000000000 75 0.00000000000 76 0.00000000000 77 0.00000000000 78 0.00000000000 79 0.00000000000 80 0.00000000000 elk-2.3.22/tests/test-007/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017136 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/elk.in0000644002504400250440000000132012337331331017676 0ustar00dewhurstdewhurst00000000000000 ! FeAl in CsCl (B2) structure using GGA+U and interpolation between AMF and ! FLL double counting. tasks 0 500 test .true. msmooth 2 wplot 50 100 2 0.0 0.25 gmaxvr 10.0 xctype 20 dft+u 3 1 : dftu, inpdftu 1 2 0.183 0.034911967 : is, l, U, J spinpol .true. bfieldc 0.0 0.0 -0.01 scale 5.496 avec 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 atoms 2 : nspecies 'Fe.in' : spfname 1 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 'Al.in' 1 0.5 0.5 0.5 0.0 0.0 0.0 : atposl, bfcmt sppath '../../species/' ngridk 3 3 3 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST510.OUT_0000644002504400250440000000014512337331331020334 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.988770850986E-02 elk-2.3.22/tests/test-007/PaxHeaders.22528/TEST800.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-007/TEST800.OUT_0000644002504400250440000000014412337331331020335 0ustar00dewhurstdewhurst00000000000000'DFT+U energy for each atom' 2 1 0.100000000000E-03 1 0.316376034436E-01 elk-2.3.22/tests/PaxHeaders.22528/test-0030000644002504400250440000000005012337331331015752 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/0000755002504400250440000000000012337331331016573 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-003/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017562 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/TEST400.OUT_0000644002504400250440000000014112337331331020322 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 27.9919966262 elk-2.3.22/tests/test-003/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017556 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/TEST000.OUT_0000644002504400250440000000012612337331331020321 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -580.222972467 elk-2.3.22/tests/test-003/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/TEST910.OUT_0000644002504400250440000000037112337331331020335 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 6 0.100000000000E-07 1 0.153099057192 2 0.153099057192 3 0.153099057192 4 0.459297171577 5 0.459297171577 6 -0.153099057192 elk-2.3.22/tests/test-003/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/TEST900.OUT_0000644002504400250440000000007012337331331020330 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 7799 elk-2.3.22/tests/test-003/PaxHeaders.22528/TEST750.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/TEST750.OUT_0000644002504400250440000000036112337331331020336 0ustar00dewhurstdewhurst00000000000000'total forces' 2 6 0.100000000000E-02 1 0.181172970258E-01 2 0.181172970258E-01 3 0.181172970258E-01 4 -0.181172970258E-01 5 -0.181172970258E-01 6 -0.181172970258E-01 elk-2.3.22/tests/test-003/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017163 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/fort.980000644002504400250440000000014212337331331017724 0ustar00dewhurstdewhurst00000000000000 270.011394000000 -580.223103872267 270.011394000000 -580.223103872267 elk-2.3.22/tests/test-003/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/TEST705.OUT_0000644002504400250440000000010112337331331020326 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 12 elk-2.3.22/tests/test-003/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/TEST500.OUT_0000644002504400250440000000013512337331331020326 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 0.555111994293E-12 elk-2.3.22/tests/test-003/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017132 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/elk.in0000644002504400250440000000067312337331331017704 0ustar00dewhurstdewhurst00000000000000 tasks 0 500 test .true. xctype 21 maxscl 10 tforce .true. mixtype 2 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.27 0.27 0.27 0.0 0.0 0.0 ngridk 2 2 2 vkloff 0.5 0.5 0.5 elk-2.3.22/tests/test-003/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017564 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-003/TEST510.OUT_0000644002504400250440000000014512337331331020330 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.846164591554E-01 elk-2.3.22/tests/PaxHeaders.22528/tests.sh0000644002504400250440000000005012337331331016246 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/tests.sh0000755002504400250440000000055312337331331017020 0ustar00dewhurstdewhurst00000000000000#! /bin/sh # Test suite script for the Elk Code for i in test-* do cd $i echo echo "Running test in directory $i..." \rm -f *.OUT ../../src/elk > test.log NERROR=`grep -c Error test.log` if test $NERROR -gt 0 then echo " Failed! See test.log and output files" else echo " Passed" \rm -f test.log \rm -f *.OUT fi cd .. done elk-2.3.22/tests/PaxHeaders.22528/test-0170000644002504400250440000000005012337331331015757 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/0000755002504400250440000000000012337331331016600 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017567 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST400.OUT_0000644002504400250440000000014112337331331020327 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 63.9844994307 elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017563 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST000.OUT_0000644002504400250440000000012612337331331020326 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -4199.45569908 elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017575 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST910.OUT_0000644002504400250440000000037112337331331020342 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 6 0.100000000000E-07 1 0.00000000000 2 0.146981971254 3 0.587927885017 4 0.293963942509 5 0.440945913763 6 0.293963942509 elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST900.OUT_0000644002504400250440000000007012337331331020335 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 725 elk-2.3.22/tests/test-017/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017170 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/fort.980000644002504400250440000000014212337331331017731 0ustar00dewhurstdewhurst00000000000000 305.145828175750 -4199.45571888859 309.745939678728 -4084.39413882695 elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017577 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST705.OUT_0000644002504400250440000000010112337331331020333 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 24 elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST300.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST300.OUT_0000644002504400250440000000013412337331331020330 0ustar00dewhurstdewhurst00000000000000'RDMFT total energy' 2 1 0.100000000000E-05 1 -4084.32563880 elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST500.OUT_0000644002504400250440000000013512337331331020333 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 0.188737914243E-11 elk-2.3.22/tests/test-017/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017137 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/elk.in0000644002504400250440000000120412337331331017700 0ustar00dewhurstdewhurst00000000000000 ! RDMFT test tasks 0 300 500 test .true. rdmmaxscl 1 maxitn 2 maxitc 2 mixtype 3 rgkmax 6.0 lmaxvr 5 gmaxvr 0.0 avec 5.3435 5.3435 0.0000 5.3435 0.0000 5.3435 0.0000 5.3435 5.3435 sppath '../../species/' atoms 2 : nspecies 'Ga.in' : spfname 1 : natoms 0.00 0.00 0.00 0.0 0.0 0.0 : atposl, bfcmt 'As.in' : spfname 1 : natoms 0.25 0.25 0.25 0.0 0.0 0.0 : atposl, bfcmt ngridk 2 1 1 vkloff 0.25 0.5 0.625 elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST510.OUT_0000644002504400250440000000014512337331331020335 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.117177069405 elk-2.3.22/tests/test-017/PaxHeaders.22528/TEST800.OUT_0000644002504400250440000000005012337331331017573 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-017/TEST800.OUT_0000644002504400250440000000017512337331331020342 0ustar00dewhurstdewhurst00000000000000'1/q^2 weights (wiq2)' 2 2 0.100000000000E-07 1 5.16355050398 2 1.29849999353 elk-2.3.22/tests/PaxHeaders.22528/test-0140000644002504400250440000000005012337331331015754 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/0000755002504400250440000000000012337331331016575 5ustar00dewhurstdewhurst00000000000000elk-2.3.22/tests/test-014/PaxHeaders.22528/TEST400.OUT_0000644002504400250440000000005012337331331017564 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/TEST400.OUT_0000644002504400250440000000014112337331331020324 0ustar00dewhurstdewhurst00000000000000'calculated total charge' 2 1 0.100000000000E-05 1 27.9796521338 elk-2.3.22/tests/test-014/PaxHeaders.22528/TEST000.OUT_0000644002504400250440000000005012337331331017560 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/TEST000.OUT_0000644002504400250440000000012612337331331020323 0ustar00dewhurstdewhurst00000000000000'total energy' 2 1 0.100000000000E-03 1 -550.836271023 elk-2.3.22/tests/test-014/PaxHeaders.22528/TEST910.OUT_0000644002504400250440000000005012337331331017572 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/TEST910.OUT_0000644002504400250440000000052612337331331020341 0ustar00dewhurstdewhurst00000000000000'k-points (Cartesian)' 2 9 0.100000000000E-07 1 0.00000000000 2 0.00000000000 3 0.00000000000 4 0.306198114385 5 0.306198114385 6 -0.306198114385 7 0.612396228770 8 0.00000000000 9 0.00000000000 elk-2.3.22/tests/test-014/PaxHeaders.22528/TEST900.OUT_0000644002504400250440000000005012337331331017571 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/TEST900.OUT_0000644002504400250440000000007012337331331020332 0ustar00dewhurstdewhurst00000000000000'number of G-vectors' 1 1 1 7799 elk-2.3.22/tests/test-014/PaxHeaders.22528/fort.980000644002504400250440000000005012337331331017165 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/fort.980000644002504400250440000000014212337331331017726 0ustar00dewhurstdewhurst00000000000000 270.011394000000 -607.046713539589 270.011394000000 -607.046713539589 elk-2.3.22/tests/test-014/PaxHeaders.22528/TEST705.OUT_0000644002504400250440000000005012337331331017574 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/TEST705.OUT_0000644002504400250440000000010112337331331020330 0ustar00dewhurstdewhurst00000000000000'number of crystal symmetries' 1 1 1 48 elk-2.3.22/tests/test-014/PaxHeaders.22528/TEST500.OUT_0000644002504400250440000000005012337331331017565 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/TEST500.OUT_0000644002504400250440000000013512337331331020330 0ustar00dewhurstdewhurst00000000000000'DOS at Fermi energy' 2 1 0.500000000000E-02 1 41.8882116244 elk-2.3.22/tests/test-014/PaxHeaders.22528/elk.in0000644002504400250440000000005012337331331017134 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/elk.in0000644002504400250440000000075112337331331017703 0ustar00dewhurstdewhurst00000000000000 ! Optimised effective potential (OEP) test tasks 0 500 test .true. xctype -1 tauoep 0.5 1.0 1.0 maxitoep 10 maxscl 2 swidth 0.02 rgkmax 6.5 avec 5.13 5.13 0.00 5.13 0.00 5.13 0.00 5.13 5.13 sppath '../../species/' atoms 1 : nspecies 'Si.in' : spfname 2 : natoms 0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt 0.25 0.25 0.25 0.0 0.0 0.0 ngridk 2 2 2 elk-2.3.22/tests/test-014/PaxHeaders.22528/TEST510.OUT_0000644002504400250440000000005012337331331017566 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/TEST510.OUT_0000644002504400250440000000014512337331331020332 0ustar00dewhurstdewhurst00000000000000'estimated indirect band gap' 2 1 0.200000000000E-01 1 0.493546690623E-01 elk-2.3.22/tests/test-014/PaxHeaders.22528/TEST800.OUT_0000644002504400250440000000005012337331331017570 xustar000000000000000020 atime=1400746713 20 ctime=1400746713 elk-2.3.22/tests/test-014/TEST800.OUT_0000644002504400250440000000023412337331331020333 0ustar00dewhurstdewhurst00000000000000'1/q^2 weights (wiq2)' 2 3 0.100000000000E-07 1 3.60574052465 2 0.467410683508 3 0.328460548608 elk-2.3.22/PaxHeaders.22528/COPYING0000644002504400250440000000005012337331332014442 xustar000000000000000020 atime=1400746714 20 ctime=1400746714 elk-2.3.22/COPYING0000644002504400250440000012356412337331332015221 0ustar00dewhurstdewhurst00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -------------------------------------------------------------------------------- GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.