1! 2! Copyright (C) 2008 Simon Binnie 3! This file is distributed under the terms of the 4! GNU General Public License. See the file 'License' 5! in the root directory of the present distribution, 6! or http://www.gnu.org/copyleft/gpl.txt . 7! 8! 9!--------------------------------------------------------------------- 10PROGRAM casino2upf 11 !--------------------------------------------------------------------- 12 ! 13 ! Convert a pseudopotential written in CASINO tabulated 14 ! format to unified pseudopotential format 15 16 USE casino_pp 17 USE write_upf_module, ONLY : write_upf 18 USE pseudo_types, ONLY : nullify_pseudo_upf, deallocate_pseudo_upf, pseudo_upf 19 ! 20 IMPLICIT NONE 21 ! 22 CHARACTER(len=256) :: pp_data 23 CHARACTER(len=256) :: upf_file 24 CHARACTER(len=256), ALLOCATABLE:: wavefile(:) 25 INTEGER, ALLOCATABLE :: waveunit(:) 26 INTEGER nofiles, i, ios, pp_unit 27 TYPE(pseudo_upf) :: upf_out 28 29 NAMELIST / inputpp / & 30 pp_data, & !CASINO pp filename 31 upf_file, & !output file 32 tn_grid, & !.true. if Trail and Needs grid is used 33 tn_prefac, & 34 xmin, & !xmin for standard QE grid 35 dx !dx for Trail and Needs and standard QE 36 !grid 37 pp_data= 'pp.data' 38 upf_file= 'out.UPF' 39 40 CALL nullify_pseudo_upf( upf_out ) 41 42 WRITE(0,*) 'CASINO2UPF Converter' 43 44 READ(*,inputpp,iostat=ios) 45 READ(*,*,iostat=ios) nofiles 46 47 ALLOCATE(wavefile(nofiles), waveunit(nofiles)) 48 49 !Now read in the awfn file names and open the files 50 51 DO i=1,nofiles 52 READ(*,*,iostat=ios) wavefile(:) 53 OPEN(newunit=waveunit(i),file=trim(wavefile(i)),& 54 status='old',form='formatted', iostat=ios) 55 IF (ios /= 0 ) THEN 56 CALL upf_error ('casino2upf', 'cannot read file', trim(wavefile(i))) 57 ENDIF 58 ENDDO 59 60 OPEN(newunit=pp_unit,file=trim(pp_data),status='old',form='formatted', iostat=ios) 61 IF (ios /= 0 ) THEN 62 CALL upf_error ('casino2upf', 'cannot read file', trim(wavefile(i))) 63 ENDIF 64 65 CALL read_casino(pp_unit,nofiles, waveunit) 66 67 CLOSE (unit=pp_unit) 68 DO i=1,nofiles 69 CLOSE (waveunit(i)) 70 ENDDO 71 72 DEALLOCATE( wavefile, waveunit ) 73 74 ! convert variables read from CASINO format into those needed 75 ! by the upf format - add missing quantities 76 77 CALL convert_casino(upf_out) 78 79 PRINT '(''Output PP file in UPF format : '',a)', upf_file 80 CALL write_upf(filename = TRIM(upf_file), UPF = upf_out, SCHEMA = 'V2') 81 CALL deallocate_pseudo_upf( upf_out ) 82 83 STOP 84 85END PROGRAM casino2upf 86