Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
west-public
West
Commits
6ea6eda0
Commit
6ea6eda0
authored
May 19, 2017
by
Marco Govoni
Browse files
(-i) and (-o) are now mandatory. No more < and >.
parent
886f8949
Changes
5
Hide whitespace changes
Inline
Side-by-side
IO_kernel/fetch_input.f90
0 → 100644
View file @
6ea6eda0
!
! Copyright (C) 2015-2016 M. Govoni
! This file is distributed under the terms of the
! GNU General Public License. See the file `License'
! in the root directory of the present distribution,
! or http://www.gnu.org/copyleft/gpl.txt .
!
! This file is part of WEST.
!
! Contributors to this file:
! Marco Govoni
!
!-----------------------------------------------------------------------
SUBROUTINE
fetch_input
(
num_drivers
,
driver
)
!-----------------------------------------------------------------------
!
USE
json_module
USE
pwcom
USE
westcom
USE
io_files
,
ONLY
:
tmp_dir
,
prefix
USE
io_global
,
ONLY
:
stdout
USE
mp
,
ONLY
:
mp_bcast
USE
mp_world
,
ONLY
:
mpime
,
root
,
world_comm
USE
mp_global
,
ONLY
:
nimage
USE
io_push
,
ONLY
:
io_push_title
,
io_push_value
,
io_push_bar
,
io_push_es0
,
io_push_c256
!
IMPLICIT
NONE
!
! I/O
!
INTEGER
,
INTENT
(
IN
)
::
num_drivers
INTEGER
,
INTENT
(
IN
)
::
driver
(
num_drivers
)
!
! Workspace
!
type
(
json_file
)
::
json
INTEGER
::
i
INTEGER
::
iiarg
,
nargs
INTEGER
::
numsp
LOGICAL
::
found
CHARACTER
(
LEN
=
256
)
::
input_file
CHARACTER
(
LEN
=
256
),
EXTERNAL
::
trimcheck
CHARACTER
(
LEN
=
:),
ALLOCATABLE
::
cval
REAL
(
DP
)
::
rval
INTEGER
::
ival
LOGICAL
::
lval
!
CALL
start_clock
(
'fetch_input'
)
!
! Input from (-i), output from (-o)
!
CALL
parse_command_arguments
()
!
! PRESETS
!
! ** input_west **
qe_prefix
=
'pwscf'
west_prefix
=
'west'
CALL
get_environment_variable
(
'ESPRESSO_TMPDIR'
,
outdir
)
IF
(
trim
(
outdir
)
==
' '
)
outdir
=
'./'
!
! ** wstat_control **
wstat_calculation
=
'S'
n_pdep_eigen
=
1
n_pdep_times
=
4
n_pdep_maxiter
=
100
n_dfpt_maxiter
=
250
n_pdep_read_from_file
=
0
trev_pdep
=
1.d-3
trev_pdep_rel
=
1.d-1
tr2_dfpt
=
1.d-12
l_kinetic_only
=
.false.
l_minimize_exx_if_active
=
.false.
l_use_ecutrho
=
.false.
!
! ** wfreq_control **
wfreq_calculation
=
'XWGQ'
n_pdep_eigen_to_use
=
2
qp_bandrange
=
(/
1
,
2
/)
macropol_calculation
=
'N'
n_lanczos
=
20
n_imfreq
=
10
n_refreq
=
10
ecut_imfreq
=
1._DP
ecut_refreq
=
2._DP
wfreq_eta
=
0.003675_DP
n_secant_maxiter
=
1
trev_secant
=
0.003675_DP
l_enable_lanczos
=
.TRUE.
l_enable_gwetot
=
.FALSE.
div_kind_hf
=
2
o_restart_time
=
0._DP
ecut_spectralf
=
(/
-2._DP
,
2._DP
/)
n_spectralf
=
10
!
! ** westpp_control **
westpp_calculation
=
'r'
westpp_range
=
(/
1
,
2
/)
westpp_format
=
'C'
westpp_sign
=
.FALSE.
westpp_n_pdep_eigen_to_use
=
1
westpp_r0
=
(/
0.d0
,
0.d0
,
0.d0
/)
westpp_nr
=
100
westpp_rmax
=
1.d0
westpp_epsinfty
=
1.d0
!
! READ the input
!
IF
(
mpime
==
root
)
THEN
!
!
CALL
json
%
initialize
()
CALL
json
%
load_file
(
filename
=
main_input_file
)
! if (json%failed())
!
IF
(
ANY
(
driver
(:)
==
1
)
)
THEN
CALL
json
%
get
(
'input_west.qe_prefix'
,
cval
,
found
)
IF
(
found
)
qe_prefix
=
cval
CALL
json
%
get
(
'input_west.west_prefix'
,
cval
,
found
)
IF
(
found
)
west_prefix
=
cval
CALL
json
%
get
(
'input_west.outdir'
,
cval
,
found
)
IF
(
found
)
outdir
=
cval
ENDIF
!
IF
(
ANY
(
driver
(:)
==
2
)
)
THEN
CALL
json
%
get
(
'wstat_control.wstat_calculation'
,
cval
,
found
)
IF
(
found
)
wstat_calculation
=
cval
CALL
json
%
get
(
'wstat_control.n_pdep_eigen'
,
ival
,
found
)
IF
(
found
)
n_pdep_eigen
=
ival
CALL
json
%
get
(
'wstat_control.n_pdep_times'
,
ival
,
found
)
IF
(
found
)
n_pdep_times
=
ival
CALL
json
%
get
(
'wstat_control.n_pdep_maxiter'
,
ival
,
found
)
IF
(
found
)
n_pdep_maxiter
=
ival
CALL
json
%
get
(
'wstat_control.n_dfpt_maxiter'
,
ival
,
found
)
IF
(
found
)
n_dfpt_maxiter
=
ival
CALL
json
%
get
(
'wstat_control.n_pdep_read_from_file'
,
ival
,
found
)
IF
(
found
)
n_pdep_read_from_file
=
ival
CALL
json
%
get
(
'wstat_control.trev_pdep'
,
rval
,
found
)
IF
(
found
)
trev_pdep
=
rval
CALL
json
%
get
(
'wstat_control.trev_pdep_rel'
,
rval
,
found
)
IF
(
found
)
trev_pdep_rel
=
rval
CALL
json
%
get
(
'wstat_control.tr2_dfpt'
,
rval
,
found
)
IF
(
found
)
tr2_dfpt
=
rval
CALL
json
%
get
(
'wstat_control.l_kinetic_only'
,
lval
,
found
)
IF
(
found
)
l_kinetic_only
=
lval
CALL
json
%
get
(
'wstat_control.l_minimize_exx_if_active'
,
lval
,
found
)
IF
(
found
)
l_minimize_exx_if_active
=
lval
CALL
json
%
get
(
'wstat_control.l_use_ecutrho'
,
lval
,
found
)
IF
(
found
)
l_use_ecutrho
=
lval
ENDIF
!
IF
(
ANY
(
driver
(:)
==
3
)
)
THEN
CALL
json
%
get
(
'wfreq_control.wfreq_calculation'
,
cval
,
found
)
IF
(
found
)
wfreq_calculation
=
cval
CALL
json
%
get
(
'wfreq_control.n_pdep_eigen_to_use'
,
ival
,
found
)
IF
(
found
)
n_pdep_eigen_to_use
=
ival
CALL
json
%
get
(
'wfreq_control.qp_bandrange(1)'
,
rval
,
found
)
IF
(
found
)
qp_bandrange
(
1
)
=
rval
CALL
json
%
get
(
'wfreq_control.qp_bandrange(2)'
,
rval
,
found
)
IF
(
found
)
qp_bandrange
(
2
)
=
rval
CALL
json
%
get
(
'wfreq_control.macropol_calculation'
,
cval
,
found
)
IF
(
found
)
macropol_calculation
=
cval
CALL
json
%
get
(
'wfreq_control.n_lanczos'
,
ival
,
found
)
IF
(
found
)
n_lanczos
=
ival
CALL
json
%
get
(
'wfreq_control.n_imfreq'
,
ival
,
found
)
IF
(
found
)
n_imfreq
=
ival
CALL
json
%
get
(
'wfreq_control.n_refreq'
,
ival
,
found
)
IF
(
found
)
n_refreq
=
ival
CALL
json
%
get
(
'wfreq_control.ecut_imfreq'
,
rval
,
found
)
IF
(
found
)
ecut_imfreq
=
rval
CALL
json
%
get
(
'wfreq_control.ecut_refreq'
,
rval
,
found
)
IF
(
found
)
ecut_refreq
=
rval
CALL
json
%
get
(
'wfreq_control.wfreq_eta'
,
rval
,
found
)
IF
(
found
)
wfreq_eta
=
rval
CALL
json
%
get
(
'wfreq_control.n_secant_maxiter'
,
ival
,
found
)
IF
(
found
)
n_secant_maxiter
=
ival
CALL
json
%
get
(
'wfreq_control.trev_secant'
,
rval
,
found
)
IF
(
found
)
trev_secant
=
rval
CALL
json
%
get
(
'wfreq_control.l_enable_lanczos'
,
lval
,
found
)
IF
(
found
)
l_enable_lanczos
=
lval
CALL
json
%
get
(
'wfreq_control.l_enable_gwetot'
,
lval
,
found
)
IF
(
found
)
l_enable_gwetot
=
lval
CALL
json
%
get
(
'wfreq_control.div_kind_hf'
,
ival
,
found
)
IF
(
found
)
div_kind_hf
=
ival
CALL
json
%
get
(
'wfreq_control.o_restart_time'
,
rval
,
found
)
IF
(
found
)
o_restart_time
=
rval
CALL
json
%
get
(
'wfreq_control.ecut_spectralf(1)'
,
rval
,
found
)
IF
(
found
)
ecut_spectralf
(
1
)
=
rval
CALL
json
%
get
(
'wfreq_control.ecut_spectralf(2)'
,
rval
,
found
)
IF
(
found
)
ecut_spectralf
(
2
)
=
rval
CALL
json
%
get
(
'wfreq_control.n_spectralf'
,
ival
,
found
)
IF
(
found
)
n_spectralf
=
ival
ENDIF
!
IF
(
ANY
(
driver
(:)
==
4
)
)
THEN
CALL
json
%
get
(
'westpp_control.westpp_calculation'
,
cval
,
found
)
IF
(
found
)
westpp_calculation
=
cval
CALL
json
%
get
(
'westpp_control.westpp_range(1)'
,
rval
,
found
)
IF
(
found
)
westpp_range
(
1
)
=
rval
CALL
json
%
get
(
'westpp_control.westpp_range(2)'
,
rval
,
found
)
IF
(
found
)
westpp_range
(
2
)
=
rval
CALL
json
%
get
(
'westpp_control.westpp_format'
,
cval
,
found
)
IF
(
found
)
westpp_format
=
cval
CALL
json
%
get
(
'westpp_control.westpp_sign'
,
lval
,
found
)
IF
(
found
)
westpp_sign
=
lval
CALL
json
%
get
(
'westpp_control.westpp_n_pdep_eigen_to_use'
,
ival
,
found
)
IF
(
found
)
westpp_n_pdep_eigen_to_use
=
ival
CALL
json
%
get
(
'westpp_control.westpp_r0(1)'
,
rval
,
found
)
IF
(
found
)
westpp_r0
(
1
)
=
rval
CALL
json
%
get
(
'westpp_control.westpp_r0(2)'
,
rval
,
found
)
IF
(
found
)
westpp_r0
(
2
)
=
rval
CALL
json
%
get
(
'westpp_control.westpp_r0(3)'
,
rval
,
found
)
IF
(
found
)
westpp_r0
(
3
)
=
rval
CALL
json
%
get
(
'westpp_control.westpp_nr'
,
ival
,
found
)
IF
(
found
)
westpp_nr
=
ival
CALL
json
%
get
(
'westpp_control.westpp_rmax'
,
rval
,
found
)
IF
(
found
)
westpp_rmax
=
rval
CALL
json
%
get
(
'westpp_control.westpp_epsinfty'
,
rval
,
found
)
IF
(
found
)
westpp_epsinfty
=
rval
ENDIF
!
CALL
json
%
destroy
()
!
ENDIF
!
! BCAST and REPORT
!
IF
(
ANY
(
driver
(:)
==
1
)
)
THEN
!
! BCAST
!
CALL
mp_bcast
(
qe_prefix
,
root
,
world_comm
)
prefix
=
qe_prefix
CALL
mp_bcast
(
west_prefix
,
root
,
world_comm
)
tmp_dir
=
trimcheck
(
outdir
)
CALL
mp_bcast
(
tmp_dir
,
root
,
world_comm
)
!
! REPORT
!
CALL
io_push_title
(
"I/O Summary : input_west"
)
!
numsp
=
14
CALL
io_push_c256
(
'qe_prefix'
,
qe_prefix
,
numsp
)
CALL
io_push_c256
(
'west_prefix'
,
qe_prefix
,
numsp
)
CALL
io_push_c256
(
'outdir'
,
outdir
,
numsp
)
!
CALL
io_push_bar
()
!
ENDIF
!
IF
(
ANY
(
driver
(:)
==
2
)
)
THEN
!
! BCAST
!
CALL
mp_bcast
(
wstat_calculation
,
root
,
world_comm
)
CALL
mp_bcast
(
n_pdep_eigen
,
root
,
world_comm
)
CALL
mp_bcast
(
n_pdep_times
,
root
,
world_comm
)
CALL
mp_bcast
(
n_pdep_maxiter
,
root
,
world_comm
)
CALL
mp_bcast
(
n_dfpt_maxiter
,
root
,
world_comm
)
CALL
mp_bcast
(
n_pdep_read_from_file
,
root
,
world_comm
)
CALL
mp_bcast
(
trev_pdep
,
root
,
world_comm
)
CALL
mp_bcast
(
trev_pdep_rel
,
root
,
world_comm
)
CALL
mp_bcast
(
tr2_dfpt
,
root
,
world_comm
)
CALL
mp_bcast
(
l_kinetic_only
,
root
,
world_comm
)
CALL
mp_bcast
(
l_minimize_exx_if_active
,
root
,
world_comm
)
CALL
mp_bcast
(
l_use_ecutrho
,
root
,
world_comm
)
!
! REPORT
!
CALL
io_push_title
(
'I/O Summary : wstat_control'
)
!
numsp
=
30
CALL
io_push_value
(
'wstat_calculation'
,
wstat_calculation
,
numsp
)
CALL
io_push_value
(
'n_pdep_eigen'
,
n_pdep_eigen
,
numsp
)
CALL
io_push_value
(
'n_pdep_times'
,
n_pdep_times
,
numsp
)
CALL
io_push_value
(
'n_pdep_maxiter'
,
n_pdep_maxiter
,
numsp
)
CALL
io_push_value
(
'n_dfpt_maxiter'
,
n_dfpt_maxiter
,
numsp
)
CALL
io_push_value
(
'n_pdep_read_from_file'
,
n_pdep_read_from_file
,
numsp
)
CALL
io_push_es0
(
'trev_pdep'
,
trev_pdep
,
numsp
)
CALL
io_push_es0
(
'trev_pdep_rel'
,
trev_pdep_rel
,
numsp
)
CALL
io_push_es0
(
'tr2_dfpt'
,
tr2_dfpt
,
numsp
)
CALL
io_push_value
(
'l_kinetic_only'
,
l_kinetic_only
,
numsp
)
CALL
io_push_value
(
'l_minimize_exx_if_active'
,
l_minimize_exx_if_active
,
numsp
)
CALL
io_push_value
(
'l_use_ecutrho'
,
l_use_ecutrho
,
numsp
)
!
CALL
io_push_bar
()
!
! CHECKS
!
SELECT
CASE
(
wstat_calculation
)
CASE
(
'r'
,
'R'
,
's'
,
'S'
)
CASE
DEFAULT
CALL
errore
(
'fetch_input'
,
'Err: wstat_calculation /= S or R'
,
1
)
END
SELECT
!
IF
(
n_pdep_times
<
2
)
CALL
errore
(
'fetch_input'
,
'Err: n_pdep_times<2'
,
1
)
IF
(
n_pdep_eigen
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: n_pdep_eigen<1'
,
1
)
IF
(
n_pdep_eigen
*
n_pdep_times
<
nimage
)
CALL
errore
(
'fetch_input'
,
'Err: n_pdep_eigen*n_pdep_times<nimage'
,
1
)
IF
(
n_pdep_maxiter
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: n_pdep_maxiter<1'
,
1
)
IF
(
n_dfpt_maxiter
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: n_dfpt_maxiter<1'
,
1
)
IF
(
n_pdep_read_from_file
<
0
)
CALL
errore
(
'fetch_input'
,
'Err: n_pdep_read_from_file<0'
,
1
)
IF
(
n_pdep_read_from_file
>
n_pdep_eigen
)
CALL
errore
(
'fetch_input'
,
'Err: n_pdep_read_from_file>n_pdep_eigen'
,
1
)
IF
(
tr2_dfpt
<=
0._DP
)
CALL
errore
(
'fetch_input'
,
'Err: tr2_dfpt<0.'
,
1
)
IF
(
trev_pdep
<=
0._DP
)
CALL
errore
(
'fetch_input'
,
'Err: trev_pdep<0.'
,
1
)
IF
(
trev_pdep_rel
<=
0._DP
)
CALL
errore
(
'fetch_input'
,
'Err: trev_pdep_rel<0.'
,
1
)
!
ENDIF
!
IF
(
ANY
(
driver
(:)
==
3
)
)
THEN
!
! BCAST
!
CALL
mp_bcast
(
wfreq_calculation
,
root
,
world_comm
)
CALL
mp_bcast
(
n_pdep_eigen_to_use
,
root
,
world_comm
)
CALL
mp_bcast
(
qp_bandrange
,
root
,
world_comm
)
CALL
mp_bcast
(
macropol_calculation
,
root
,
world_comm
)
CALL
mp_bcast
(
n_lanczos
,
root
,
world_comm
)
CALL
mp_bcast
(
n_imfreq
,
root
,
world_comm
)
CALL
mp_bcast
(
n_refreq
,
root
,
world_comm
)
CALL
mp_bcast
(
ecut_imfreq
,
root
,
world_comm
)
CALL
mp_bcast
(
ecut_refreq
,
root
,
world_comm
)
CALL
mp_bcast
(
wfreq_eta
,
root
,
world_comm
)
CALL
mp_bcast
(
n_secant_maxiter
,
root
,
world_comm
)
CALL
mp_bcast
(
trev_secant
,
root
,
world_comm
)
CALL
mp_bcast
(
l_enable_lanczos
,
root
,
world_comm
)
CALL
mp_bcast
(
l_enable_gwetot
,
root
,
world_comm
)
CALL
mp_bcast
(
div_kind_hf
,
root
,
world_comm
)
CALL
mp_bcast
(
o_restart_time
,
root
,
world_comm
)
CALL
mp_bcast
(
ecut_spectralf
,
root
,
world_comm
)
CALL
mp_bcast
(
n_spectralf
,
root
,
world_comm
)
!
! DISPLAY
!
CALL
io_push_title
(
'I/O Summary : wfreq_control'
)
!
numsp
=
40
CALL
io_push_value
(
'wfreq_calculation'
,
wfreq_calculation
,
numsp
)
CALL
io_push_value
(
'n_pdep_eigen_to_use'
,
n_pdep_eigen_to_use
,
numsp
)
CALL
io_push_value
(
'qp_bandrange(1)'
,
qp_bandrange
(
1
),
numsp
)
CALL
io_push_value
(
'qp_bandrange(2)'
,
qp_bandrange
(
2
),
numsp
)
CALL
io_push_value
(
'macropol_calculation'
,
macropol_calculation
,
numsp
)
CALL
io_push_value
(
'n_lanczos'
,
n_lanczos
,
numsp
)
CALL
io_push_value
(
'n_imfreq'
,
n_imfreq
,
numsp
)
CALL
io_push_value
(
'n_refreq'
,
n_refreq
,
numsp
)
CALL
io_push_value
(
'ecut_imfreq [Ry]'
,
ecut_imfreq
,
numsp
)
CALL
io_push_value
(
'ecut_refreq [Ry]'
,
ecut_refreq
,
numsp
)
CALL
io_push_value
(
'wfreq_eta [Ry]'
,
wfreq_eta
,
numsp
)
CALL
io_push_value
(
'n_secant_maxiter'
,
n_secant_maxiter
,
numsp
)
CALL
io_push_value
(
'trev_secant [Ry]'
,
trev_secant
,
numsp
)
CALL
io_push_value
(
'l_enable_lanczos'
,
l_enable_lanczos
,
numsp
)
CALL
io_push_value
(
'l_enable_gwetot'
,
l_enable_gwetot
,
numsp
)
CALL
io_push_value
(
'div_kind_hf'
,
div_kind_hf
,
numsp
)
CALL
io_push_value
(
'o_restart_time [min]'
,
o_restart_time
,
numsp
)
CALL
io_push_value
(
'ecut_spectralf(1) [Ry]'
,
ecut_spectralf
(
1
),
numsp
)
CALL
io_push_value
(
'ecut_spectralf(2) [Ry]'
,
ecut_spectralf
(
2
),
numsp
)
CALL
io_push_value
(
'n_spectralf'
,
n_spectralf
,
numsp
)
!
CALL
io_push_bar
()
!
! CHECKS
!
IF
(
n_lanczos
<
2
)
CALL
errore
(
'fetch_input'
,
'Err: n_lanczos<2'
,
1
)
IF
(
n_pdep_eigen_to_use
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: n_pdep_eigen_to_use<1'
,
1
)
IF
(
n_pdep_eigen_to_use
>
n_pdep_eigen
)
CALL
errore
(
'fetch_input'
,
'Err: n_pdep_eigen_to_use>n_pdep_eigen'
,
1
)
IF
(
n_imfreq
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: n_imfreq<1'
,
1
)
IF
(
n_refreq
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: n_refreq<1'
,
1
)
IF
(
n_spectralf
<
2
)
CALL
errore
(
'fetch_input'
,
'Err: n_spectralf<1'
,
1
)
IF
(
qp_bandrange
(
1
)
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: qp_bandrange(1)<1'
,
1
)
IF
(
qp_bandrange
(
2
)
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: qp_bandrange(2)<1'
,
1
)
IF
(
qp_bandrange
(
2
)
<
qp_bandrange
(
1
)
)
CALL
errore
(
'fetch_input'
,
'Err: qp_bandrange(2)<qp_bandrange(1)'
,
1
)
IF
(
ecut_imfreq
<=
0._DP
)
CALL
errore
(
'fetch_input'
,
'Err: ecut_imfreq<0.'
,
1
)
IF
(
ecut_refreq
<=
0._DP
)
CALL
errore
(
'fetch_input'
,
'Err: ecut_imfreq<0.'
,
1
)
IF
(
ecut_spectralf
(
2
)
<
ecut_spectralf
(
1
))
CALL
errore
(
'fetch_input'
,
'Err: ecut_spectralf(2)<ecut_spectralf(1)'
,
1
)
IF
(
wfreq_eta
<=
0._DP
)
CALL
errore
(
'fetch_input'
,
'Err: wfreq_eta<0.'
,
1
)
IF
(
n_secant_maxiter
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: n_secant_maxiter<1'
,
1
)
IF
(
trev_secant
<=
0._DP
)
CALL
errore
(
'fetch_input'
,
'Err: trev_secant<0.'
,
1
)
SELECT
CASE
(
macropol_calculation
)
CASE
(
'N'
,
'n'
,
'C'
,
'c'
)
CASE
DEFAULT
CALL
errore
(
'fetch_input'
,
'Err: macropol_calculation /= (N,C)'
,
1
)
END
SELECT
!
ENDIF
!
IF
(
ANY
(
driver
(:)
==
4
)
)
THEN
!
! BCAST
!
CALL
mp_bcast
(
westpp_calculation
,
root
,
world_comm
)
CALL
mp_bcast
(
westpp_range
,
root
,
world_comm
)
CALL
mp_bcast
(
westpp_format
,
root
,
world_comm
)
CALL
mp_bcast
(
westpp_sign
,
root
,
world_comm
)
CALL
mp_bcast
(
westpp_n_pdep_eigen_to_use
,
root
,
world_comm
)
CALL
mp_bcast
(
westpp_r0
,
root
,
world_comm
)
CALL
mp_bcast
(
westpp_nr
,
root
,
world_comm
)
CALL
mp_bcast
(
westpp_rmax
,
root
,
world_comm
)
CALL
mp_bcast
(
westpp_epsinfty
,
root
,
world_comm
)
!
! REPORT
!
CALL
io_push_title
(
'I/O Summary : westpp_control'
)
!
numsp
=
40
CALL
io_push_value
(
'westpp_calculation'
,
westpp_calculation
,
numsp
)
CALL
io_push_value
(
'westpp_range(1)'
,
westpp_range
(
1
),
numsp
)
CALL
io_push_value
(
'westpp_range(2)'
,
westpp_range
(
2
),
numsp
)
CALL
io_push_value
(
'westpp_format'
,
westpp_format
,
numsp
)
CALL
io_push_value
(
'westpp_sign'
,
westpp_sign
,
numsp
)
CALL
io_push_value
(
'westpp_n_pdep_eigen_to_use'
,
westpp_n_pdep_eigen_to_use
,
numsp
)
CALL
io_push_value
(
'westpp_r0(1)'
,
westpp_r0
(
1
),
numsp
)
CALL
io_push_value
(
'westpp_r0(2)'
,
westpp_r0
(
2
),
numsp
)
CALL
io_push_value
(
'westpp_r0(3)'
,
westpp_r0
(
3
),
numsp
)
CALL
io_push_value
(
'westpp_nr'
,
westpp_nr
,
numsp
)
CALL
io_push_value
(
'westpp_rmax'
,
westpp_rmax
,
numsp
)
CALL
io_push_value
(
'westpp_epsinfty'
,
westpp_epsinfty
,
numsp
)
!
CALL
io_push_bar
()
!
! CHECKS
!
IF
(
westpp_range
(
1
)
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: westpp_range(1)<1'
,
1
)
IF
(
westpp_range
(
2
)
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: westpp_range(2)<1'
,
1
)
IF
(
westpp_range
(
2
)
<
westpp_range
(
1
)
)
CALL
errore
(
'fetch_input'
,
'Err: westpp_range(2)<westpp_range(1)'
,
1
)
IF
(
westpp_nr
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: westpp_nr<1'
,
1
)
IF
(
westpp_n_pdep_eigen_to_use
<
1
)
CALL
errore
(
'fetch_input'
,
'Err: westpp_n_pdep_eigen_to_use<1'
,
1
)
IF
(
westpp_rmax
<
0.d0
)
CALL
errore
(
'fetch_input'
,
'Err: westpp_rmax<0'
,
1
)
IF
(
westpp_epsinfty
<
1.d0
)
CALL
errore
(
'fetch_input'
,
'Err: westpp_epsinfty<1'
,
1
)
!
ENDIF
!
CALL
stop_clock
(
'fetch_input'
)
!
END
SUBROUTINE
Modules/westcom.f90
View file @
6ea6eda0
...
...
@@ -69,6 +69,8 @@ MODULE westin
CHARACTER
(
LEN
=
256
)
::
outdir
CHARACTER
(
LEN
=
256
)
::
qe_prefix
!
CHARACTER
(
LEN
=
256
)
::
main_input_file
,
main_output_file
!
END
MODULE
!
!
...
...
Tools/Makefile
View file @
6ea6eda0
...
...
@@ -15,6 +15,7 @@ exx_go.o \
exx_ungo.o
\
report_dynamical_memory.o
\
io_push.o
\
parse_command_arguments.o
\
set_dirs.o
\
do_setup.o
\
linear_algebra_kernel.o
\
...
...
Tools/parse_command_arguments.f90
0 → 100644
View file @
6ea6eda0
!
! Copyright (C) 2015-2016 M. Govoni
! This file is distributed under the terms of the
! GNU General Public License. See the file `License'
! in the root directory of the present distribution,
! or http://www.gnu.org/copyleft/gpl.txt .
!
! This file is part of WEST.
!
! Contributors to this file:
! Marco Govoni
!
!-----------------------------------------------------------------------
SUBROUTINE
parse_command_arguments
(
)
!-----------------------------------------------------------------------
!
USE
westcom
,
ONLY
:
main_input_file
,
main_output_file
!
IMPLICIT
NONE
!
INTEGER
::
nargs
,
iiarg
LOGICAL
::
ifound
,
ofound
CHARACTER
(
LEN
=
256
)
::
string
!
ifound
=
.FALSE.
ofound
=
.FALSE.
!
nargs
=
command_argument_count
()
string
=
' '
!
DO
iiarg
=
1
,
(
nargs
-
1
)
!
CALL
get_command_argument
(
iiarg
,
string
)
!
IF
(
.NOT.
ifound
.AND.
TRIM
(
string
)
==
'-i'
)
THEN
CALL
get_command_argument
(
(
iiarg
+
1
)
,
main_input_file
)
ifound
=
.TRUE.
ENDIF
!
IF
(
.NOT.
ofound
.AND.
TRIM
(
string
)
==
'-o'
)
THEN
CALL
get_command_argument
(
(
iiarg
+
1
)
,
main_output_file
)
ofound
=
.TRUE.
ENDIF
!
IF
(
ifound
.AND.
ofound
)
EXIT
!
ENDDO
!
IF
(
.NOT.
ifound
)
CALL
errore
(
'parse_cmd'
,
'Cannot find input file (-i)'
,
1
)
IF
(
.NOT.
ofound
)
CALL
errore
(
'parse_cmd'
,
'Cannot find output file (-o)'
,
1
)
!
END
SUBROUTINE
Westpp/Makefile
View file @
6ea6eda0
...
...
@@ -5,6 +5,7 @@ include ../../make.inc
# location of needed modules
MODFLAGS
=
$(MOD_FLAG)
../../iotk/src
$(MOD_FLAG)
../../Modules
$(MOD_FLAG)
../../LAXlib
\
$(MOD_FLAG)
../../FFTXlib
$(MOD_FLAG)
../../PW/src
\
$(MOD_FLAG)
../Libraries/Json
\
$(MOD_FLAG)
../Modules
\
$(MOD_FLAG)
../Tools
\
$(MOD_FLAG)
../FFT_kernel
\
...
...
@@ -30,7 +31,7 @@ do_sxx.o \
westpp.o
PWOBJS
=
../../PW/src/libpw.a
QEMODS
=
../../Modules/libqemod.a ../../FFTXlib/libqefft.a ../../LAXlib/libqela.a
QEMODS
=
../../Modules/libqemod.a ../../FFTXlib/libqefft.a ../../LAXlib/libqela.a
../Libraries/Json/libjson.a
WESTLIBS
=
\
../DFPT_kernel/lib_dfpt_kernel.a
\
../IO_kernel/lib_io_kernel.a
\
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment