20 USE global_meshvar,
ONLY: smeagolglobal_orbital_bs => orbital_bs
29 USE mbfield,
ONLY: smeagolglobal_zeemanbx => zeemanbx, &
30 smeagolglobal_zeemanby => zeemanby, &
31 smeagolglobal_zeemanbz => zeemanbz
35 USE mselfenergies,
ONLY: setoptionsselfenergies
36 USE negfcoop,
ONLY: coopinfo
38 smeagolglobal_dsigmade => dsigmade, &
39 smeagolglobal_calcmpsh => calcmpsh, &
40 smeagolglobal_nenet => nenet, &
41 smeagolglobal_rmoinit => rmoinit, &
42 smeagolglobal_rmolast => rmolast, &
43 smeagolglobal_rorbinit => rorbinit, &
44 smeagolglobal_rorblast => rorblast, &
45 smeagolglobal_maxkappa => maxkappa, &
46 smeagolglobal_tenergi => tenergi, &
47 smeagolglobal_tenergf => tenergf, &
48 smeagolglobal_vgate => vgate, &
49 smeagolglobal_zgater => zgater, &
50 smeagolglobal_zgatel => zgatel, &
51 smeagolglobal_alphag => alphag, &
52 smeagolglobal_timereversal => timereversal, &
53 smeagolglobal_trcaddvcdft => trcaddvcdft, &
54 smeagolglobal_addvgcompensatingisolatedlocalcharges => addvgcompensatingisolatedlocalcharges, &
55 smeagolglobal_add_rho_gate => add_rho_gate, &
56 smeagolglobal_debug_gate => debug_gate, &
57 smeagolglobal_empdoskso => empdoskso, &
58 smeagolglobal_emtimings => emtimings, &
59 smeagolglobal_ik_select => ik_select, &
60 smeagolglobal_q_gate => q_gate, &
61 smeagolglobal_rglxmin => rglxmin, &
62 smeagolglobal_rglxmax => rglxmax, &
63 smeagolglobal_rglymin => rglymin, &
64 smeagolglobal_rglymax => rglymax, &
65 smeagolglobal_rglzmin => rglzmin, &
66 smeagolglobal_rglzmax => rglzmax, &
67 smeagolglobal_pdosgs => pdosgs, &
68 smeagolglobal_skipright => skipright, &
69 smeagolglobal_sigmatodisk => sigmatodisk, &
70 smeagolglobal_bs_add => bs_add, &
71 smeagolglobal_bs_writetrc => bs_writetrc, &
72 smeagolglobal_writetk => writetk, &
73 smeagolglobal_setene => setene, &
74 smeagolglobal_overwritehs => overwritehs, &
75 smeagolglobal_transmembed => transmembed, &
76 smeagolglobal_writeevsigma => writeevsigma, &
77 smeagolglobal_skiptransm => skiptransm, &
78 smeagolglobal_deauto => deauto, &
79 smeagolglobal_geterrsigma => geterrsigma, &
80 smeagolglobal_getsigma => getsigma, &
81 smeagolglobal_trcef => trcef, &
82 smeagolglobal_rhosetzeroifhzero => rhosetzeroifhzero, &
83 smeagolglobal_m_usehinv => m_usehinv, &
84 smeagolglobal_m_usevinv => m_usevinv, &
85 smeagolglobal_m_callsvd => m_callsvd, &
86 smeagolglobal_m_complexbands => m_complexbands, &
87 smeagolglobal_m_dosleads => m_dosleads, &
88 smeagolglobal_leadsdos => leadsdos, &
89 smeagolglobal_leadspdos => leadspdos, &
90 smeagolglobal_emldos => emldos, &
91 smeagolglobal_emldos2 => emldos2, &
92 smeagolglobal_curr_distkene => curr_distkene, &
93 smeagolglobal_curr_distk => curr_distk, &
94 smeagolglobal_curr_dist => curr_dist, &
95 smeagolglobal_curr_disttrc => curr_disttrc, &
96 smeagolglobal_em_nonscf => em_nonscf, &
97 smeagolglobal_transmissionrl => transmissionrl, &
98 smeagolglobal_emsttk => emsttk, &
99 smeagolglobal_gett0s => gett0s, &
100 smeagolglobal_transmissionchannels => transmissionchannels, &
101 smeagolglobal_transmissionchannelswfs => transmissionchannelswfs, &
102 smeagolglobal_transmissionmatrix => transmissionmatrix, &
103 smeagolglobal_transmissionmatrixwfs => transmissionmatrixwfs, &
104 smeagolglobal_transmissionmatrixpdos => transmissionmatrixpdos, &
105 smeagolglobal_em_endcode1 => em_endcode1, &
106 smeagolglobal_transmoverk => transmoverk, &
107 smeagolglobal_emdos => emdos, &
108 smeagolglobal_empdos => empdos, &
109 smeagolglobal_empdosk => empdosk, &
110 smeagolglobal_writeiktrck => writeiktrck, &
111 smeagolglobal_cbspart => cbspart, &
112 smeagolglobal_evec => evec, &
113 smeagolglobal_negfon => negfon, &
114 smeagolglobal_outinfo => outinfo, &
115 smeagolglobal_writenk => writenk, &
116 smeagolglobal_set_rhoboundary_leads => set_rhoboundary_leads, &
117 smeagolglobal_set_rhoboundaryoverlap_leads => set_rhoboundaryoverlap_leads, &
118 smeagolglobal_set_hboundary_leads => set_hboundary_leads, &
119 smeagolglobal_set_hlr_zero => set_hlr_zero, &
120 smeagolglobal_skipnonequilibriumrho => skipnonequilibriumrho, &
121 smeagolglobal_skipequilibriumrho => skipequilibriumrho, &
122 smeagolglobal_computeimpuritygfmatsubara => computeimpuritygfmatsubara, &
123 smeagolglobal_printimpuritygfmatsubara => printimpuritygfmatsubara, &
124 smeagolglobal_callimpuritysolver => callimpuritysolver, &
125 smeagolglobal_maxdepth => maxdepth, &
126 smeagolglobal_ndivisions => ndivisions, &
127 smeagolglobal_storesigma => storesigma, &
128 smeagolglobal_bs_method => bs_method, &
129 smeagolglobal_bs_nmid => bs_nmid, &
130 smeagolglobal_nrunsigmamax => nrunsigmamax, &
131 smeagolglobal_bsrun => bsrun, &
132 smeagolglobal_bsskip => bsskip, &
133 smeagolglobal_bseskip => bseskip, &
134 smeagolglobal_bssc => bssc, &
135 smeagolglobal_inversion_solver => inversion_solver, &
136 smeagolglobal_onekp => onekp, &
137 smeagolglobal_nbss => nbss, &
138 smeagolglobal_nsplit => nsplit, &
139 smeagolglobal_transmissionchannelswfsskipene => transmissionchannelswfsskipene, &
140 smeagolglobal_transmissionchannelswfsskipkp => transmissionchannelswfsskipkp, &
141 smeagolglobal_transmissionmatrixpdosnwrite => transmissionmatrixpdosnwrite, &
142 smeagolglobal_transmissionmatrixisetphase => transmissionmatrixisetphase, &
143 smeagolglobal_minchannelindex => minchannelindex, &
144 smeagolglobal_maxchannelindex => maxchannelindex, &
145 smeagolglobal_n_replace_l => n_replace_l, &
146 smeagolglobal_n_replace_r => n_replace_r, &
147 smeagolglobal_curr_nb1 => curr_nb1, &
148 smeagolglobal_curr_nb2 => curr_nb2, &
149 smeagolglobal_nparallelk => nparallelk, &
150 smeagolglobal_getrhosinglelead => getrhosinglelead, &
151 smeagolglobal_bs_tol => bs_tol, &
152 smeagolglobal_bs_min => bs_min, &
153 smeagolglobal_hstol => hstol, &
154 smeagolglobal_deltaimag => deltaimag, &
155 smeagolglobal_deltaini => deltaini, &
156 smeagolglobal_deltatode => deltatode, &
157 smeagolglobal_critam => critam, &
158 smeagolglobal_setemin => setemin, &
159 smeagolglobal_setemax => setemax, &
160 smeagolglobal_tolab => tolab, &
161 smeagolglobal_weightrho => weightrho, &
162 smeagolglobal_thetaleadsl => thetaleadsl, &
163 smeagolglobal_phileadsl => phileadsl, &
164 smeagolglobal_thetaleadsr => thetaleadsr, &
165 smeagolglobal_phileadsr => phileadsr, &
166 smeagolglobal_deltaimagtrc => deltaimagtrc, &
167 smeagolglobal_m_tolki => m_tolki, &
168 smeagolglobal_m_svdtolmax => m_svdtolmax, &
169 smeagolglobal_m_svdtolmin => m_svdtolmin, &
170 smeagolglobal_m_dsigmamax => m_dsigmamax, &
171 smeagolglobal_m_rnoise => m_rnoise, &
172 smeagolglobal_m_skipsvd => m_skipsvd, &
173 smeagolglobal_m_svdtolzi => m_svdtolzi, &
174 smeagolglobal_sigmawideband => sigmawideband, &
175 smeagolglobal_emsttkscale => emsttkscale, &
176 smeagolglobal_nlsetzeroratio => nlsetzeroratio, &
177 smeagolglobal_nrsetzeroratio => nrsetzeroratio, &
178 smeagolglobal_curr_fl_l => curr_fl_l, &
179 smeagolglobal_curr_fr_l => curr_fr_l, &
180 smeagolglobal_curr_fl_r => curr_fl_r, &
181 smeagolglobal_curr_fr_r => curr_fr_r, &
182 smeagolglobal_deltamin => deltamin, &
183 smeagolglobal_tolsigma => tolsigma, &
184 smeagolglobal_trcde => trcde, &
185 smeagolglobal_deltabss_bs => deltabss_bs, &
186 smeagolglobal_gamma_negf => gamma_negf, &
187 smeagolglobal_emforces => emforces, &
188 smeagolglobal_emstt => emstt, &
189 smeagolglobal_emsttlin => emsttlin, &
190 smeagolglobal_gridmethod => gridmethod, &
191 smeagolglobal_integraltype => integraltype, &
192 smeagolglobal_ndivxy => ndivxy, &
193 smeagolglobal_ndivxynl => ndivxynl, &
194 smeagolglobal_negf_base_comm => negf_base_comm, &
195 smeagolglobal_nebss_bs => nebss_bs, &
196 smeagolglobal_nprocs_hs => nprocs_hs
198 smeagolglobal_sigma_method => sigma_method
202#include "./base/base_uses.f90"
207 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'smeagol_emtoptions'
213 SUBROUTINE reademtr(smeagol_control, natoms, gamma_negf)
215 INTEGER,
INTENT(in) :: natoms
216 LOGICAL,
INTENT(in) :: gamma_negf
218 CHARACTER(LEN=*),
PARAMETER :: routinen =
'reademtr'
222 CALL timeset(routinen, handle)
224#if defined(__SMEAGOL)
225 cpassert(
ASSOCIATED(smeagol_control%aux))
227 smeagolglobal_gamma_negf = gamma_negf
229 IF (smeagol_control%aux%AtmRVCte <= 0) smeagol_control%aux%AtmRVCte = natoms
231 smeagolglobal_dsigmade = smeagol_control%aux%dsigmade
232 smeagolglobal_calcmpsh = smeagol_control%aux%calcmpsh
234 smeagolglobal_nenet = smeagol_control%aux%NeneT
235 smeagolglobal_rmoinit = smeagol_control%aux%rmoinit
236 smeagolglobal_rmolast = smeagol_control%aux%rmolast
237 smeagolglobal_rorbinit = smeagol_control%aux%rorbinit
238 smeagolglobal_rorblast = smeagol_control%aux%rorblast
240 smeagolglobal_maxkappa = smeagol_control%aux%maxkappa
242 smeagolglobal_tenergi = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%TEnergI
243 smeagolglobal_tenergf = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%TEnergF
244 smeagolglobal_vgate = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%vgate
245 smeagolglobal_zgater = smeagol_control%aux%zgater
246 smeagolglobal_zgatel = smeagol_control%aux%zgatel
247 smeagolglobal_alphag = smeagol_control%aux%alphag
249 coopinfo%ccoop = smeagol_control%aux%COOPCalculate
250 coopinfo%nbond = smeagol_control%aux%COOPNumberOfBonds
252 CALL cp_abort(__location__, &
253 "CP2K was compiled with no SMEAGOL support.")
254 mark_used(smeagol_control)
256 mark_used(gamma_negf)
259 CALL timestop(handle)
265 LOGICAL,
INTENT(in) :: torqueflag, torquelin
267 CHARACTER(LEN=*),
PARAMETER :: routinen =
'ReadOptionsNEGF_DFT'
270 REAL(kind=
dp),
DIMENSION(3) :: coord_real, coord_scaled
272 CALL timeset(routinen, handle)
274#if defined(__SMEAGOL)
275 cpassert(
ASSOCIATED(smeagol_control%aux))
277 smeagolglobal_emstt = torqueflag
278 smeagolglobal_emsttlin = torquelin
283 IF (smeagol_control%aux%timereversal)
THEN
284 CALL cp_warn(__location__, &
285 "The SMEAGOL keyword 'EM.TimeReversal' is not supported yet.")
288 smeagolglobal_timereversal = smeagol_control%aux%timereversal
289 smeagolglobal_trcaddvcdft = smeagol_control%aux%TRCAddVCDFT
290 smeagolglobal_addvgcompensatingisolatedlocalcharges = smeagol_control%aux%AddVgCompensatingIsolatedLocalCharges
291 smeagolglobal_add_rho_gate = smeagol_control%aux%Add_Rho_Gate
292 smeagolglobal_debug_gate = smeagol_control%aux%debug_gate
293 smeagolglobal_empdoskso = smeagol_control%aux%empdoskso
294 smeagolglobal_emtimings = smeagol_control%aux%emtimings
296 smeagolglobal_ik_select = smeagol_control%aux%ik_select
298 smeagolglobal_q_gate = smeagol_control%aux%Q_gate
301 IF (.NOT. smeagol_control%aux%isexplicit_RGlxmin) smeagol_control%aux%RGlxmin = 0.0_dp
302 IF (.NOT. smeagol_control%aux%isexplicit_RGlymin) smeagol_control%aux%RGlymin = 0.0_dp
303 IF (.NOT. smeagol_control%aux%isexplicit_RGlzmin) smeagol_control%aux%RGlzmin = 0.0_dp
304 IF (.NOT. smeagol_control%aux%isexplicit_RGlxmax)
THEN
305 coord_scaled(:) = [1.0_dp, 0.0_dp, 0.0_dp]
307 smeagol_control%aux%RGlxmax = coord_real(1)
309 IF (.NOT. smeagol_control%aux%isexplicit_RGlymax)
THEN
310 coord_scaled(:) = [0.0_dp, 1.0_dp, 0.0_dp]
312 smeagol_control%aux%RGlymax = coord_real(2)
314 IF (.NOT. smeagol_control%aux%isexplicit_RGlzmax)
THEN
315 coord_scaled(:) = [0.0_dp, 0.0_dp, 1.0_dp]
317 smeagol_control%aux%RGlzmax = coord_real(3)
319 smeagolglobal_rglxmin = smeagol_control%aux%RGlxmin
320 smeagolglobal_rglxmax = smeagol_control%aux%RGlxmax
321 smeagolglobal_rglymin = smeagol_control%aux%RGlymin
322 smeagolglobal_rglymax = smeagol_control%aux%RGlymax
323 smeagolglobal_rglzmin = smeagol_control%aux%RGlzmin
324 smeagolglobal_rglzmax = smeagol_control%aux%RGlzmax
327 smeagolglobal_zeemanbx = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%ZeemanBx
328 smeagolglobal_zeemanby = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%ZeemanBy
329 smeagolglobal_zeemanbz = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%ZeemanBz
331 CALL cp_abort(__location__, &
332 "CP2K was compiled with no SMEAGOL support.")
333 mark_used(smeagol_control)
335 mark_used(torqueflag)
338 mark_used(coord_real)
339 mark_used(coord_scaled)
342 CALL timestop(handle)
345 SUBROUTINE emtrans_options(smeagol_control, matrix_s, para_env, iter, istep, inicoor, iv, delta, nk)
347 TYPE(
dbcsr_type),
INTENT(in),
POINTER :: matrix_s
349 INTEGER,
INTENT(in) :: iter, istep, inicoor, iv
350 REAL(kind=
dp),
INTENT(in) :: delta
351 INTEGER,
INTENT(in) :: nk
353 CHARACTER(LEN=*),
PARAMETER :: routinen =
'emtrans_options'
355 CHARACTER(len=default_string_length) :: actual_val_str, expected_val_str
356 INTEGER :: getrhosingleleaddefault, handle, i, iatom, n1, nblkcols_total, &
357 nparallelk, nparallelkbuf
358 INTEGER,
DIMENSION(:),
POINTER :: col_blk_offset, col_blk_size
360 CALL timeset(routinen, handle)
362#if defined(__SMEAGOL)
363 cpassert(
ASSOCIATED(smeagol_control%aux))
365 CALL dbcsr_get_info(matrix=matrix_s, nblkcols_total=nblkcols_total, &
366 col_blk_size=col_blk_size, col_blk_offset=col_blk_offset)
369 n1 = sum(col_blk_size(1:nblkcols_total))
371 IF ((iter == 1) .AND. (istep == inicoor) .AND. (iv == 0))
THEN
374 smeagolglobal_gridmethod =
'Traditional'
376 smeagolglobal_gridmethod =
'Adaptivegrid'
378 smeagolglobal_gridmethod =
'UNKNOWN'
382 smeagolglobal_integraltype =
'gauss-legendre'
384 smeagolglobal_integraltype =
'gauss-chebyshev'
386 smeagolglobal_integraltype =
'UNKNOWN'
389 smeagolglobal_negf_base_comm = para_env%get_handle()
391 IF (mod(smeagol_control%aux%ndivisions, 2) == 0)
THEN
392 CALL cp_abort(__location__, &
393 "AM.NumberDivisions value must be odd.")
398 IF (smeagol_control%aux%storesigma == 2)
THEN
399 smeagol_control%aux%sigmatodisk = .true.
400 ELSE IF (smeagol_control%aux%storesigma == 1)
THEN
401 smeagol_control%aux%sigmatodisk = .false.
411 IF (smeagol_control%aux%bs_nmid == 0) smeagol_control%aux%bs_nmid = n1/2
414 IF (smeagol_control%aux%SigmaWideBand /= 0.0_dp) smeagol_control%aux%m_svdtolzi = 0.0_dp
416 IF (smeagol_control%aux%leadspdos) smeagol_control%aux%leadsdos = .true.
417 IF (smeagol_control%aux%curr_distKEne) smeagol_control%aux%curr_distK = .true.
418 IF (smeagol_control%aux%curr_distK) smeagol_control%aux%curr_dist = .true.
420 IF (smeagolglobal_emstt .AND. smeagolglobal_emsttlin .OR. smeagol_control%aux%curr_dist)
THEN
421 smeagol_control%aux%emldos2 = .true.
422 IF (smeagol_control%aux%curr_dist)
THEN
423 getrhosingleleaddefault = 3
425 getrhosingleleaddefault = -3
428 getrhosingleleaddefault = 0
435 IF (smeagol_control%aux%curr_dist)
THEN
436 smeagol_control%emforces = .true.
439 IF (.NOT. smeagol_control%aux%isexplicit_nprocs_hs) smeagol_control%aux%nprocs_hs = smeagol_control%aux%nprocs_inverse
440 smeagolglobal_nprocs_hs = smeagol_control%aux%nprocs_hs
441 IF (.NOT. smeagol_control%aux%isexplicit_GetRhoSingleLead) smeagol_control%aux%GetRhoSingleLead = getrhosingleleaddefault
443 IF (smeagol_control%aux%MinChannelIndex < 1) smeagol_control%aux%MinChannelIndex = 1
444 IF (smeagol_control%aux%MaxChannelIndex < 1)
THEN
445 smeagol_control%aux%MaxChannelIndex = smeagol_control%aux%MinChannelIndex + 4
448 IF (smeagolglobal_emstt .AND. smeagolglobal_emsttlin .AND. smeagol_control%aux%GetRhoSingleLead /= -3)
THEN
449 CALL cp_warn(__location__, &
450 "EM.LDOSLeadsProjection should be set to -3. "// &
451 "If SpinTorque and STLinResp are T, otherwise the output "// &
452 "results for the spin transfer torque are incorrect.")
456 nparallelk = smeagol_control%aux%NParallelK
457 IF (mod(para_env%num_pe, nparallelk) /= 0)
then
458 CALL cp_warn(__location__, &
459 "EM.ParallelOverKNum must be a divisor of the total number of "// &
460 "MPI processes used in a run; resetting the value of NParallelK.")
461 nparallelkbuf = nparallelk
462 DO nparallelk = nparallelkbuf, 1, -1
463 IF (mod(para_env%num_pe, nparallelk) == 0)
EXIT
467 IF (nparallelk > para_env%num_pe)
THEN
468 CALL cp_warn(__location__, &
469 "EM.ParallelOverKNum can not be larger than the total number of "// &
470 "MPI processes used in a run; resetting the value of NParallelK.")
474 IF (nparallelk > nk)
THEN
475 CALL cp_warn(__location__, &
476 "EM.ParallelOverKNum can not be larger than the total number of "// &
477 "k-points used in a run; resetting the value of NParallelK.")
481 IF (nparallelk == -1)
THEN
482 DO nparallelk = nk, 1, -1
483 IF (mod(para_env%num_pe, nparallelk) == 0)
EXIT
487 smeagol_control%aux%NParallelK = nparallelk
489 IF (smeagol_control%aux%empdosk) smeagol_control%aux%empdos = .true.
490 IF (smeagol_control%aux%emldos2) smeagol_control%aux%emdos = .true.
491 IF (smeagol_control%aux%TransmissionChannels) smeagol_control%aux%emdos = .true.
492 IF (smeagol_control%aux%TransmissionMatrix) smeagol_control%aux%emdos = .true.
493 IF (smeagol_control%aux%curr_dist) smeagol_control%aux%emdos = .true.
494 IF (smeagol_control%aux%empdos) smeagol_control%aux%emdos = .true.
495 IF (smeagol_control%aux%m_skipsvd < 2.0_dp) smeagol_control%aux%m_skipsvd = 10.0_dp
497 IF (smeagol_control%aux%CallImpuritySolver) smeagol_control%aux%ComputeImpurityGfMatsubara = .true.
499 smeagolglobal_pdosgs = smeagol_control%aux%pdosgs
500 smeagolglobal_skipright = smeagol_control%aux%skipright
501 smeagolglobal_sigmatodisk = smeagol_control%aux%sigmatodisk
502 smeagolglobal_bs_add = smeagol_control%aux%bs_add
503 smeagolglobal_bs_writetrc = smeagol_control%aux%bs_writetrc
504 smeagolglobal_writetk = smeagol_control%aux%writetk
505 smeagolglobal_setene = smeagol_control%aux%setene
506 smeagolglobal_overwritehs = smeagol_control%aux%overwritehs
507 smeagolglobal_transmembed = smeagol_control%aux%transmembed
508 smeagolglobal_writeevsigma = smeagol_control%aux%writeevsigma
509 smeagolglobal_skiptransm = smeagol_control%aux%skiptransm
510 smeagolglobal_deauto = smeagol_control%aux%deauto
511 smeagolglobal_geterrsigma = smeagol_control%aux%geterrsigma
512 smeagolglobal_getsigma = smeagol_control%aux%getsigma
513 smeagolglobal_trcef = smeagol_control%aux%trcef
514 smeagolglobal_rhosetzeroifhzero = smeagol_control%aux%RhoSetZeroIfHZero
515 smeagolglobal_m_usehinv = smeagol_control%aux%m_usehinv
516 smeagolglobal_m_usevinv = smeagol_control%aux%m_usevinv
517 smeagolglobal_m_callsvd = smeagol_control%aux%m_callsvd
518 smeagolglobal_m_complexbands = smeagol_control%aux%m_complexbands
519 smeagolglobal_m_dosleads = smeagol_control%aux%m_dosleads
520 smeagolglobal_leadsdos = smeagol_control%aux%leadsdos
521 smeagolglobal_leadspdos = smeagol_control%aux%leadspdos
522 smeagolglobal_emldos = smeagol_control%aux%emldos
523 smeagolglobal_emldos2 = smeagol_control%aux%emldos2
524 smeagolglobal_curr_distkene = smeagol_control%aux%curr_distKEne
525 smeagolglobal_curr_distk = smeagol_control%aux%curr_distK
526 smeagolglobal_curr_dist = smeagol_control%aux%curr_dist
527 smeagolglobal_curr_disttrc = smeagol_control%aux%curr_distTRC
528 smeagolglobal_em_nonscf = smeagol_control%aux%em_NonSCF
529 smeagolglobal_transmissionrl = smeagol_control%aux%TransmissionRL
530 smeagolglobal_emsttk = smeagol_control%aux%emSTTk
531 smeagolglobal_gett0s = smeagol_control%aux%GetT0S
532 smeagolglobal_transmissionchannels = smeagol_control%aux%TransmissionChannels
533 smeagolglobal_transmissionchannelswfs = smeagol_control%aux%TransmissionChannelsWFS
534 smeagolglobal_transmissionmatrix = smeagol_control%aux%TransmissionMatrix
535 smeagolglobal_transmissionmatrixwfs = smeagol_control%aux%TransmissionMatrixWFS
536 smeagolglobal_transmissionmatrixpdos = smeagol_control%aux%TransmissionMatrixPDOS
537 smeagolglobal_em_endcode1 = smeagol_control%aux%EM_EndCode1
538 smeagolglobal_transmoverk = smeagol_control%aux%TransmOverk
539 smeagolglobal_emdos = smeagol_control%aux%emdos
540 smeagolglobal_empdos = smeagol_control%aux%empdos
541 smeagolglobal_empdosk = smeagol_control%aux%empdosk
542 smeagolglobal_writeiktrck = smeagol_control%aux%WriteIkTrcK
543 smeagolglobal_cbspart = smeagol_control%aux%cbspart
544 smeagolglobal_evec = smeagol_control%aux%evec
545 smeagolglobal_negfon = smeagol_control%aux%negfon
546 smeagolglobal_outinfo = smeagol_control%aux%outinfo
547 smeagolglobal_writenk = smeagol_control%aux%WriteNk
548 smeagolglobal_set_rhoboundary_leads = smeagol_control%aux%Set_RhoBoundary_Leads
549 smeagolglobal_set_rhoboundaryoverlap_leads = smeagol_control%aux%Set_RhoBoundaryOverlap_Leads
550 smeagolglobal_set_hboundary_leads = smeagol_control%aux%Set_HBoundary_Leads
551 smeagolglobal_set_hlr_zero = smeagol_control%aux%Set_HLR_Zero
552 smeagolglobal_skipnonequilibriumrho = smeagol_control%aux%SkipNonEquilibriumRho
553 smeagolglobal_skipequilibriumrho = smeagol_control%aux%SkipEquilibriumRho
554 smeagolglobal_computeimpuritygfmatsubara = smeagol_control%aux%ComputeImpurityGfMatsubara
555 smeagolglobal_printimpuritygfmatsubara = smeagol_control%aux%PrintImpurityGfMatsubara
556 smeagolglobal_callimpuritysolver = smeagol_control%aux%CallImpuritySolver
557 smeagolglobal_emforces = smeagol_control%emforces
560 IF (.NOT. smeagol_control%aux%isexplicit_Sigma_NxLeft) smeagol_control%aux%Sigma_NxLeft = smeagol_control%aux%Sigma_Nx
561 IF (.NOT. smeagol_control%aux%isexplicit_Sigma_NyLeft) smeagol_control%aux%Sigma_NyLeft = smeagol_control%aux%Sigma_Ny
562 IF (.NOT. smeagol_control%aux%isexplicit_Sigma_NxRight) smeagol_control%aux%Sigma_NxRight = smeagol_control%aux%Sigma_Nx
563 IF (.NOT. smeagol_control%aux%isexplicit_Sigma_NyRight) smeagol_control%aux%Sigma_NyRight = smeagol_control%aux%Sigma_Ny
565 smeagolglobal_ndivxy(1) = smeagol_control%aux%Sigma_Nx
566 smeagolglobal_ndivxy(2) = smeagol_control%aux%Sigma_Ny
567 smeagolglobal_ndivxynl(1, 1) = smeagol_control%aux%Sigma_NxLeft
568 smeagolglobal_ndivxynl(1, 2) = smeagol_control%aux%Sigma_NyLeft
569 smeagolglobal_ndivxynl(2, 1) = smeagol_control%aux%Sigma_NxRight
570 smeagolglobal_ndivxynl(2, 2) = smeagol_control%aux%Sigma_NyRight
572 CALL setoptionsselfenergies(smeagolglobal_ndivxynl, 2)
574 smeagolglobal_maxdepth = smeagol_control%aux%maxdepth
575 smeagolglobal_ndivisions = smeagol_control%aux%ndivisions
576 smeagolglobal_storesigma = smeagol_control%aux%storesigma
577 smeagolglobal_bs_method = smeagol_control%aux%bs_method
578 smeagolglobal_bs_nmid = smeagol_control%aux%bs_nmid
579 smeagolglobal_nrunsigmamax = smeagol_control%aux%NRunSigmaMax
580 smeagolglobal_bsrun = smeagol_control%aux%bsrun
581 smeagolglobal_bsskip = smeagol_control%aux%bsskip
582 smeagolglobal_bseskip = smeagol_control%aux%bseskip
583 smeagolglobal_bssc = smeagol_control%aux%bssc
584 smeagolglobal_inversion_solver = smeagol_control%aux%inversion_solver
585 smeagolglobal_onekp = smeagol_control%aux%onekp
586 smeagolglobal_nbss = smeagol_control%aux%nbss
587 smeagolglobal_nsplit = smeagol_control%aux%nSplit
588 smeagolglobal_transmissionchannelswfsskipene = smeagol_control%aux%TransmissionChannelsWFSSkipEne
589 smeagolglobal_transmissionchannelswfsskipkp = smeagol_control%aux%TransmissionChannelsWFSSkipKP
590 smeagolglobal_transmissionmatrixpdosnwrite = smeagol_control%aux%TransmissionMatrixPDOSNWrite
591 smeagolglobal_transmissionmatrixisetphase = smeagol_control%aux%TransmissionMatrixiSetPhase
592 smeagolglobal_minchannelindex = smeagol_control%aux%MinChannelIndex
593 smeagolglobal_maxchannelindex = smeagol_control%aux%MaxChannelIndex
594 smeagolglobal_n_replace_l = smeagol_control%aux%N_Replace_L
595 smeagolglobal_n_replace_r = smeagol_control%aux%N_Replace_R
596 smeagolglobal_curr_nb1 = smeagol_control%aux%curr_nb1
597 smeagolglobal_curr_nb2 = smeagol_control%aux%curr_nb2
598 smeagolglobal_nparallelk = smeagol_control%aux%NParallelK
600 smeagolglobal_getrhosinglelead = smeagol_control%aux%GetRhoSingleLead
602 smeagolglobal_sigma_method = smeagol_control%aux%sigma_method
604 smeagolglobal_bs_tol = smeagol_control%aux%bs_tol
605 smeagolglobal_bs_min = smeagol_control%aux%bs_min
606 smeagolglobal_hstol = smeagol_control%aux%HSTol
607 smeagolglobal_deltaimag = smeagol_control%aux%deltaimag
608 smeagolglobal_deltaini = smeagol_control%aux%deltaini
609 smeagolglobal_deltatode = smeagol_control%aux%deltatode
610 smeagolglobal_critam = smeagol_control%aux%critam
611 smeagolglobal_setemin = smeagol_control%aux%setemin
612 smeagolglobal_setemax = smeagol_control%aux%setemax
613 smeagolglobal_tolab = smeagol_control%aux%tolab
614 smeagolglobal_weightrho = smeagol_control%aux%weightrho
615 smeagolglobal_thetaleadsl = smeagol_control%aux%ThetaLeadsL
616 smeagolglobal_phileadsl = smeagol_control%aux%PhiLeadsL
617 smeagolglobal_thetaleadsr = smeagol_control%aux%ThetaLeadsR
618 smeagolglobal_phileadsr = smeagol_control%aux%PhiLeadsR
619 smeagolglobal_deltaimagtrc = smeagol_control%aux%deltaimagtrc
620 smeagolglobal_m_tolki = smeagol_control%aux%m_tolki
621 smeagolglobal_m_svdtolmax = smeagol_control%aux%m_svdtolmax
622 smeagolglobal_m_svdtolmin = smeagol_control%aux%m_svdtolmin
623 smeagolglobal_m_dsigmamax = smeagol_control%aux%m_dsigmamax
624 smeagolglobal_m_rnoise = smeagol_control%aux%m_rnoise
625 smeagolglobal_m_skipsvd = smeagol_control%aux%m_skipsvd
626 smeagolglobal_m_svdtolzi = smeagol_control%aux%m_svdtolzi
627 smeagolglobal_sigmawideband = smeagol_control%aux%SigmaWideBand
628 smeagolglobal_emsttkscale = smeagol_control%aux%emSTTkScale
629 smeagolglobal_nlsetzeroratio = smeagol_control%aux%nlSetZeroRatio
630 smeagolglobal_nrsetzeroratio = smeagol_control%aux%nrSetZeroRatio
631 smeagolglobal_curr_fl_l = smeagol_control%aux%curr_fl_L
632 smeagolglobal_curr_fr_l = smeagol_control%aux%curr_fr_L
633 smeagolglobal_curr_fl_r = smeagol_control%aux%curr_fl_R
634 smeagolglobal_curr_fr_r = smeagol_control%aux%curr_fr_R
637 IF (.NOT. smeagol_control%aux%isexplicit_deltamin) smeagol_control%aux%deltamin = delta
639 smeagolglobal_deltamin = smeagol_control%aux%deltamin
641 smeagolglobal_tolsigma = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%tolsigma
642 smeagolglobal_trcde = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%trcde
654 ALLOCATE (smeagolglobal_deltabss_bs(smeagol_control%aux%nbss))
655 ALLOCATE (smeagolglobal_nebss_bs(smeagol_control%aux%nbss, 2))
656 ALLOCATE (smeagolglobal_orbital_bs(n1))
659 IF (
ALLOCATED(smeagol_control%aux%deltabss_bs))
THEN
660 smeagolglobal_deltabss_bs(:) = smeagol_control%aux%deltabss_bs(:)
662 smeagolglobal_deltabss_bs(:) = smeagol_control%aux%deltamin
666 IF (
ALLOCATED(smeagol_control%aux%nebss_bs))
THEN
667 IF (maxval(smeagol_control%aux%nebss_bs) > n1)
THEN
670 CALL cp_abort(__location__, &
671 "The largest index in BS.SubSystemsBoundaries section ("//trim(actual_val_str)// &
672 ") exceeds the number of atomic orbitals ("//trim(expected_val_str)//
").")
674 smeagolglobal_nebss_bs(:, :) = smeagol_control%aux%nebss_bs(:, :)
676 smeagolglobal_nebss_bs(1, 1) = 1
677 smeagolglobal_nebss_bs(1, 2) = n1/smeagol_control%aux%nbss
678 DO i = 2, smeagol_control%aux%nbss
679 smeagolglobal_nebss_bs(i, 1) = smeagolglobal_nebss_bs(i - 1, 2) + 1
680 smeagolglobal_nebss_bs(i, 2) = i*n1/smeagol_control%aux%nbss
682 smeagolglobal_nebss_bs(smeagol_control%aux%nbss, 2) = n1
686 IF (
ALLOCATED(smeagol_control%aux%atomlist_bs))
THEN
687 IF (maxval(smeagol_control%aux%atomlist_bs) > nblkcols_total)
THEN
690 CALL cp_abort(__location__, &
691 "The largest atomic index in AM.AtomListBS keyword ("//trim(actual_val_str)// &
692 ") exceeds the number of atoms ("//trim(expected_val_str)//
") in the extended molecule.")
695 smeagolglobal_orbital_bs(:) = .false.
696 DO i = 1,
SIZE(smeagol_control%aux%atomlist_bs)
697 iatom = smeagol_control%aux%atomlist_bs(i)
698 smeagolglobal_orbital_bs(col_blk_offset(iatom):col_blk_offset(iatom) + col_blk_size(iatom) - 1) = .true.
701 smeagolglobal_orbital_bs(:) = .true.
704 CALL cp_abort(__location__, &
705 "CP2K was compiled with no SMEAGOL support.")
706 mark_used(smeagol_control)
716 mark_used(actual_val_str)
717 mark_used(col_blk_offset)
718 mark_used(col_blk_size)
719 mark_used(expected_val_str)
720 mark_used(getrhosingleleaddefault)
724 mark_used(nblkcols_total)
725 mark_used(nparallelk)
726 mark_used(nparallelkbuf)
729 CALL timestop(handle)
734#if defined(__SMEAGOL)
735 IF (
ALLOCATED(smeagolglobal_deltabss_bs))
DEALLOCATE (smeagolglobal_deltabss_bs)
736 IF (
ALLOCATED(smeagolglobal_nebss_bs))
DEALLOCATE (smeagolglobal_nebss_bs)
737 IF (
ALLOCATED(smeagolglobal_orbital_bs))
DEALLOCATE (smeagolglobal_orbital_bs)
Handles all functions related to the CELL.
subroutine, public scaled_to_real(r, s, cell)
Transform scaled cell coordinates real coordinates. r=h*s.
subroutine, public dbcsr_get_info(matrix, nblkrows_total, nblkcols_total, nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, my_prow, my_pcol, local_rows, local_cols, proc_row_dist, proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, distribution, name, matrix_type, group)
...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Interface to the message passing library MPI.
Input control types for NEGF/SMEAGOL transport calculations.
subroutine, public readoptionsnegf_dft(smeagol_control, ucell, torqueflag, torquelin)
subroutine, public reademtr(smeagol_control, natoms, gamma_negf)
subroutine, public emtrans_deallocate_global_arrays()
subroutine, public emtrans_options(smeagol_control, matrix_s, para_env, iter, istep, inicoor, iv, delta, nk)
Utilities for string manipulations.
subroutine, public integer_to_string(inumber, string)
Converts an integer number to a string. The WRITE statement will return an error message,...
Type defining parameters related to the simulation cell.
stores all the informations relevant to an mpi environment
SMEAGOL-related input parameters.