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
282 IF (smeagol_control%aux%timereversal)
THEN
283 CALL cp_warn(__location__, &
284 "The SMEAGOL keyword 'EM.TimeReversal' is not supported yet.")
287 smeagolglobal_timereversal = smeagol_control%aux%timereversal
288 smeagolglobal_trcaddvcdft = smeagol_control%aux%TRCAddVCDFT
289 smeagolglobal_addvgcompensatingisolatedlocalcharges = smeagol_control%aux%AddVgCompensatingIsolatedLocalCharges
290 smeagolglobal_add_rho_gate = smeagol_control%aux%Add_Rho_Gate
291 smeagolglobal_debug_gate = smeagol_control%aux%debug_gate
292 smeagolglobal_empdoskso = smeagol_control%aux%empdoskso
293 smeagolglobal_emtimings = smeagol_control%aux%emtimings
295 smeagolglobal_ik_select = smeagol_control%aux%ik_select
297 smeagolglobal_q_gate = smeagol_control%aux%Q_gate
300 IF (.NOT. smeagol_control%aux%isexplicit_RGlxmin) smeagol_control%aux%RGlxmin = 0.0_dp
301 IF (.NOT. smeagol_control%aux%isexplicit_RGlymin) smeagol_control%aux%RGlymin = 0.0_dp
302 IF (.NOT. smeagol_control%aux%isexplicit_RGlzmin) smeagol_control%aux%RGlzmin = 0.0_dp
303 IF (.NOT. smeagol_control%aux%isexplicit_RGlxmax)
THEN
304 coord_scaled(:) = (/1.0_dp, 0.0_dp, 0.0_dp/)
306 smeagol_control%aux%RGlxmax = coord_real(1)
308 IF (.NOT. smeagol_control%aux%isexplicit_RGlymax)
THEN
309 coord_scaled(:) = (/0.0_dp, 1.0_dp, 0.0_dp/)
311 smeagol_control%aux%RGlymax = coord_real(2)
313 IF (.NOT. smeagol_control%aux%isexplicit_RGlzmax)
THEN
314 coord_scaled(:) = (/0.0_dp, 0.0_dp, 1.0_dp/)
316 smeagol_control%aux%RGlzmax = coord_real(3)
318 smeagolglobal_rglxmin = smeagol_control%aux%RGlxmin
319 smeagolglobal_rglxmax = smeagol_control%aux%RGlxmax
320 smeagolglobal_rglymin = smeagol_control%aux%RGlymin
321 smeagolglobal_rglymax = smeagol_control%aux%RGlymax
322 smeagolglobal_rglzmin = smeagol_control%aux%RGlzmin
323 smeagolglobal_rglzmax = smeagol_control%aux%RGlzmax
326 smeagolglobal_zeemanbx = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%ZeemanBx
327 smeagolglobal_zeemanby = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%ZeemanBy
328 smeagolglobal_zeemanbz = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%ZeemanBz
330 CALL cp_abort(__location__, &
331 "CP2K was compiled with no SMEAGOL support.")
332 mark_used(smeagol_control)
334 mark_used(torqueflag)
337 mark_used(coord_real)
338 mark_used(coord_scaled)
341 CALL timestop(handle)
344 SUBROUTINE emtrans_options(smeagol_control, matrix_s, para_env, iter, istep, inicoor, iv, delta, nk)
346 TYPE(
dbcsr_type),
INTENT(in),
POINTER :: matrix_s
348 INTEGER,
INTENT(in) :: iter, istep, inicoor, iv
349 REAL(kind=
dp),
INTENT(in) :: delta
350 INTEGER,
INTENT(in) :: nk
352 CHARACTER(LEN=*),
PARAMETER :: routinen =
'emtrans_options'
354 CHARACTER(len=default_string_length) :: actual_val_str, expected_val_str
355 INTEGER :: getrhosingleleaddefault, handle, i, iatom, n1, nblkcols_total, &
356 nparallelk, nparallelkbuf
357 INTEGER,
DIMENSION(:),
POINTER :: col_blk_offset, col_blk_size
359 CALL timeset(routinen, handle)
361#if defined(__SMEAGOL)
362 cpassert(
ASSOCIATED(smeagol_control%aux))
364 CALL dbcsr_get_info(matrix=matrix_s, nblkcols_total=nblkcols_total, &
365 col_blk_size=col_blk_size, col_blk_offset=col_blk_offset)
368 n1 = sum(col_blk_size(1:nblkcols_total))
370 IF ((iter == 1) .AND. (istep == inicoor) .AND. (iv == 0))
THEN
373 smeagolglobal_gridmethod =
'Traditional'
375 smeagolglobal_gridmethod =
'Adaptivegrid'
377 smeagolglobal_gridmethod =
'UNKNOWN'
381 smeagolglobal_integraltype =
'gauss-legendre'
383 smeagolglobal_integraltype =
'gauss-chebyshev'
385 smeagolglobal_integraltype =
'UNKNOWN'
388 smeagolglobal_negf_base_comm = para_env%get_handle()
390 IF (mod(smeagol_control%aux%ndivisions, 2) == 0)
THEN
391 CALL cp_abort(__location__, &
392 "AM.NumberDivisions value must be odd.")
397 IF (smeagol_control%aux%storesigma == 2)
THEN
398 smeagol_control%aux%sigmatodisk = .true.
399 ELSE IF (smeagol_control%aux%storesigma == 1)
THEN
400 smeagol_control%aux%sigmatodisk = .false.
410 IF (smeagol_control%aux%bs_nmid == 0) smeagol_control%aux%bs_nmid = n1/2
413 IF (smeagol_control%aux%SigmaWideBand /= 0.0_dp) smeagol_control%aux%m_svdtolzi = 0.0_dp
415 IF (smeagol_control%aux%leadspdos) smeagol_control%aux%leadsdos = .true.
416 IF (smeagol_control%aux%curr_distKEne) smeagol_control%aux%curr_distK = .true.
417 IF (smeagol_control%aux%curr_distK) smeagol_control%aux%curr_dist = .true.
419 IF (smeagolglobal_emstt .AND. smeagolglobal_emsttlin .OR. smeagol_control%aux%curr_dist)
THEN
420 smeagol_control%aux%emldos2 = .true.
421 IF (smeagol_control%aux%curr_dist)
THEN
422 getrhosingleleaddefault = 3
424 getrhosingleleaddefault = -3
427 getrhosingleleaddefault = 0
433 IF (smeagol_control%aux%curr_dist)
THEN
434 smeagol_control%emforces = .true.
437 IF (.NOT. smeagol_control%aux%isexplicit_nprocs_hs) smeagol_control%aux%nprocs_hs = smeagol_control%aux%nprocs_inverse
438 smeagolglobal_nprocs_hs = smeagol_control%aux%nprocs_hs
439 IF (.NOT. smeagol_control%aux%isexplicit_GetRhoSingleLead) smeagol_control%aux%GetRhoSingleLead = getrhosingleleaddefault
441 IF (smeagol_control%aux%MinChannelIndex < 1) smeagol_control%aux%MinChannelIndex = 1
442 IF (smeagol_control%aux%MaxChannelIndex < 1) &
443 smeagol_control%aux%MaxChannelIndex = smeagol_control%aux%MinChannelIndex + 4
445 IF (smeagolglobal_emstt .AND. smeagolglobal_emsttlin .AND. smeagol_control%aux%GetRhoSingleLead /= -3)
THEN
446 CALL cp_warn(__location__, &
447 "EM.LDOSLeadsProjection should be set to -3. "// &
448 "If SpinTorque and STLinResp are T, otherwise the output "// &
449 "results for the spin transfer torque are incorrect.")
453 nparallelk = smeagol_control%aux%NParallelK
454 IF (mod(para_env%num_pe, nparallelk) /= 0)
then
455 CALL cp_warn(__location__, &
456 "EM.ParallelOverKNum must be a divisor of the total number of "// &
457 "MPI processes used in a run; resetting the value of NParallelK.")
458 nparallelkbuf = nparallelk
459 DO nparallelk = nparallelkbuf, 1, -1
460 IF (mod(para_env%num_pe, nparallelk) == 0)
EXIT
464 IF (nparallelk > para_env%num_pe)
THEN
465 CALL cp_warn(__location__, &
466 "EM.ParallelOverKNum can not be larger than the total number of "// &
467 "MPI processes used in a run; resetting the value of NParallelK.")
471 IF (nparallelk > nk)
THEN
472 CALL cp_warn(__location__, &
473 "EM.ParallelOverKNum can not be larger than the total number of "// &
474 "k-points used in a run; resetting the value of NParallelK.")
478 IF (nparallelk == -1)
THEN
479 DO nparallelk = nk, 1, -1
480 IF (mod(para_env%num_pe, nparallelk) == 0)
EXIT
484 smeagol_control%aux%NParallelK = nparallelk
486 IF (smeagol_control%aux%empdosk) smeagol_control%aux%empdos = .true.
487 IF (smeagol_control%aux%emldos2) smeagol_control%aux%emdos = .true.
488 IF (smeagol_control%aux%TransmissionChannels) smeagol_control%aux%emdos = .true.
489 IF (smeagol_control%aux%TransmissionMatrix) smeagol_control%aux%emdos = .true.
490 IF (smeagol_control%aux%curr_dist) smeagol_control%aux%emdos = .true.
491 IF (smeagol_control%aux%empdos) smeagol_control%aux%emdos = .true.
492 IF (smeagol_control%aux%m_skipsvd < 2.0_dp) smeagol_control%aux%m_skipsvd = 10.0_dp
494 IF (smeagol_control%aux%CallImpuritySolver) smeagol_control%aux%ComputeImpurityGfMatsubara = .true.
496 smeagolglobal_pdosgs = smeagol_control%aux%pdosgs
497 smeagolglobal_skipright = smeagol_control%aux%skipright
498 smeagolglobal_sigmatodisk = smeagol_control%aux%sigmatodisk
499 smeagolglobal_bs_add = smeagol_control%aux%bs_add
500 smeagolglobal_bs_writetrc = smeagol_control%aux%bs_writetrc
501 smeagolglobal_writetk = smeagol_control%aux%writetk
502 smeagolglobal_setene = smeagol_control%aux%setene
503 smeagolglobal_overwritehs = smeagol_control%aux%overwritehs
504 smeagolglobal_transmembed = smeagol_control%aux%transmembed
505 smeagolglobal_writeevsigma = smeagol_control%aux%writeevsigma
506 smeagolglobal_skiptransm = smeagol_control%aux%skiptransm
507 smeagolglobal_deauto = smeagol_control%aux%deauto
508 smeagolglobal_geterrsigma = smeagol_control%aux%geterrsigma
509 smeagolglobal_getsigma = smeagol_control%aux%getsigma
510 smeagolglobal_trcef = smeagol_control%aux%trcef
511 smeagolglobal_rhosetzeroifhzero = smeagol_control%aux%RhoSetZeroIfHZero
512 smeagolglobal_m_usehinv = smeagol_control%aux%m_usehinv
513 smeagolglobal_m_usevinv = smeagol_control%aux%m_usevinv
514 smeagolglobal_m_callsvd = smeagol_control%aux%m_callsvd
515 smeagolglobal_m_complexbands = smeagol_control%aux%m_complexbands
516 smeagolglobal_m_dosleads = smeagol_control%aux%m_dosleads
517 smeagolglobal_leadsdos = smeagol_control%aux%leadsdos
518 smeagolglobal_leadspdos = smeagol_control%aux%leadspdos
519 smeagolglobal_emldos = smeagol_control%aux%emldos
520 smeagolglobal_emldos2 = smeagol_control%aux%emldos2
521 smeagolglobal_curr_distkene = smeagol_control%aux%curr_distKEne
522 smeagolglobal_curr_distk = smeagol_control%aux%curr_distK
523 smeagolglobal_curr_dist = smeagol_control%aux%curr_dist
524 smeagolglobal_curr_disttrc = smeagol_control%aux%curr_distTRC
525 smeagolglobal_em_nonscf = smeagol_control%aux%em_NonSCF
526 smeagolglobal_transmissionrl = smeagol_control%aux%TransmissionRL
527 smeagolglobal_emsttk = smeagol_control%aux%emSTTk
528 smeagolglobal_gett0s = smeagol_control%aux%GetT0S
529 smeagolglobal_transmissionchannels = smeagol_control%aux%TransmissionChannels
530 smeagolglobal_transmissionchannelswfs = smeagol_control%aux%TransmissionChannelsWFS
531 smeagolglobal_transmissionmatrix = smeagol_control%aux%TransmissionMatrix
532 smeagolglobal_transmissionmatrixwfs = smeagol_control%aux%TransmissionMatrixWFS
533 smeagolglobal_transmissionmatrixpdos = smeagol_control%aux%TransmissionMatrixPDOS
534 smeagolglobal_em_endcode1 = smeagol_control%aux%EM_EndCode1
535 smeagolglobal_transmoverk = smeagol_control%aux%TransmOverk
536 smeagolglobal_emdos = smeagol_control%aux%emdos
537 smeagolglobal_empdos = smeagol_control%aux%empdos
538 smeagolglobal_empdosk = smeagol_control%aux%empdosk
539 smeagolglobal_writeiktrck = smeagol_control%aux%WriteIkTrcK
540 smeagolglobal_cbspart = smeagol_control%aux%cbspart
541 smeagolglobal_evec = smeagol_control%aux%evec
542 smeagolglobal_negfon = smeagol_control%aux%negfon
543 smeagolglobal_outinfo = smeagol_control%aux%outinfo
544 smeagolglobal_writenk = smeagol_control%aux%WriteNk
545 smeagolglobal_set_rhoboundary_leads = smeagol_control%aux%Set_RhoBoundary_Leads
546 smeagolglobal_set_rhoboundaryoverlap_leads = smeagol_control%aux%Set_RhoBoundaryOverlap_Leads
547 smeagolglobal_set_hboundary_leads = smeagol_control%aux%Set_HBoundary_Leads
548 smeagolglobal_set_hlr_zero = smeagol_control%aux%Set_HLR_Zero
549 smeagolglobal_skipnonequilibriumrho = smeagol_control%aux%SkipNonEquilibriumRho
550 smeagolglobal_skipequilibriumrho = smeagol_control%aux%SkipEquilibriumRho
551 smeagolglobal_computeimpuritygfmatsubara = smeagol_control%aux%ComputeImpurityGfMatsubara
552 smeagolglobal_printimpuritygfmatsubara = smeagol_control%aux%PrintImpurityGfMatsubara
553 smeagolglobal_callimpuritysolver = smeagol_control%aux%CallImpuritySolver
554 smeagolglobal_emforces = smeagol_control%emforces
557 IF (.NOT. smeagol_control%aux%isexplicit_Sigma_NxLeft) smeagol_control%aux%Sigma_NxLeft = smeagol_control%aux%Sigma_Nx
558 IF (.NOT. smeagol_control%aux%isexplicit_Sigma_NyLeft) smeagol_control%aux%Sigma_NyLeft = smeagol_control%aux%Sigma_Ny
559 IF (.NOT. smeagol_control%aux%isexplicit_Sigma_NxRight) smeagol_control%aux%Sigma_NxRight = smeagol_control%aux%Sigma_Nx
560 IF (.NOT. smeagol_control%aux%isexplicit_Sigma_NyRight) smeagol_control%aux%Sigma_NyRight = smeagol_control%aux%Sigma_Ny
562 smeagolglobal_ndivxy(1) = smeagol_control%aux%Sigma_Nx
563 smeagolglobal_ndivxy(2) = smeagol_control%aux%Sigma_Ny
564 smeagolglobal_ndivxynl(1, 1) = smeagol_control%aux%Sigma_NxLeft
565 smeagolglobal_ndivxynl(1, 2) = smeagol_control%aux%Sigma_NyLeft
566 smeagolglobal_ndivxynl(2, 1) = smeagol_control%aux%Sigma_NxRight
567 smeagolglobal_ndivxynl(2, 2) = smeagol_control%aux%Sigma_NyRight
569 CALL setoptionsselfenergies(smeagolglobal_ndivxynl, 2)
571 smeagolglobal_maxdepth = smeagol_control%aux%maxdepth
572 smeagolglobal_ndivisions = smeagol_control%aux%ndivisions
573 smeagolglobal_storesigma = smeagol_control%aux%storesigma
574 smeagolglobal_bs_method = smeagol_control%aux%bs_method
575 smeagolglobal_bs_nmid = smeagol_control%aux%bs_nmid
576 smeagolglobal_nrunsigmamax = smeagol_control%aux%NRunSigmaMax
577 smeagolglobal_bsrun = smeagol_control%aux%bsrun
578 smeagolglobal_bsskip = smeagol_control%aux%bsskip
579 smeagolglobal_bseskip = smeagol_control%aux%bseskip
580 smeagolglobal_bssc = smeagol_control%aux%bssc
581 smeagolglobal_inversion_solver = smeagol_control%aux%inversion_solver
582 smeagolglobal_onekp = smeagol_control%aux%onekp
583 smeagolglobal_nbss = smeagol_control%aux%nbss
584 smeagolglobal_nsplit = smeagol_control%aux%nSplit
585 smeagolglobal_transmissionchannelswfsskipene = smeagol_control%aux%TransmissionChannelsWFSSkipEne
586 smeagolglobal_transmissionchannelswfsskipkp = smeagol_control%aux%TransmissionChannelsWFSSkipKP
587 smeagolglobal_transmissionmatrixpdosnwrite = smeagol_control%aux%TransmissionMatrixPDOSNWrite
588 smeagolglobal_transmissionmatrixisetphase = smeagol_control%aux%TransmissionMatrixiSetPhase
589 smeagolglobal_minchannelindex = smeagol_control%aux%MinChannelIndex
590 smeagolglobal_maxchannelindex = smeagol_control%aux%MaxChannelIndex
591 smeagolglobal_n_replace_l = smeagol_control%aux%N_Replace_L
592 smeagolglobal_n_replace_r = smeagol_control%aux%N_Replace_R
593 smeagolglobal_curr_nb1 = smeagol_control%aux%curr_nb1
594 smeagolglobal_curr_nb2 = smeagol_control%aux%curr_nb2
595 smeagolglobal_nparallelk = smeagol_control%aux%NParallelK
597 smeagolglobal_getrhosinglelead = smeagol_control%aux%GetRhoSingleLead
599 smeagolglobal_sigma_method = smeagol_control%aux%sigma_method
601 smeagolglobal_bs_tol = smeagol_control%aux%bs_tol
602 smeagolglobal_bs_min = smeagol_control%aux%bs_min
603 smeagolglobal_hstol = smeagol_control%aux%HSTol
604 smeagolglobal_deltaimag = smeagol_control%aux%deltaimag
605 smeagolglobal_deltaini = smeagol_control%aux%deltaini
606 smeagolglobal_deltatode = smeagol_control%aux%deltatode
607 smeagolglobal_critam = smeagol_control%aux%critam
608 smeagolglobal_setemin = smeagol_control%aux%setemin
609 smeagolglobal_setemax = smeagol_control%aux%setemax
610 smeagolglobal_tolab = smeagol_control%aux%tolab
611 smeagolglobal_weightrho = smeagol_control%aux%weightrho
612 smeagolglobal_thetaleadsl = smeagol_control%aux%ThetaLeadsL
613 smeagolglobal_phileadsl = smeagol_control%aux%PhiLeadsL
614 smeagolglobal_thetaleadsr = smeagol_control%aux%ThetaLeadsR
615 smeagolglobal_phileadsr = smeagol_control%aux%PhiLeadsR
616 smeagolglobal_deltaimagtrc = smeagol_control%aux%deltaimagtrc
617 smeagolglobal_m_tolki = smeagol_control%aux%m_tolki
618 smeagolglobal_m_svdtolmax = smeagol_control%aux%m_svdtolmax
619 smeagolglobal_m_svdtolmin = smeagol_control%aux%m_svdtolmin
620 smeagolglobal_m_dsigmamax = smeagol_control%aux%m_dsigmamax
621 smeagolglobal_m_rnoise = smeagol_control%aux%m_rnoise
622 smeagolglobal_m_skipsvd = smeagol_control%aux%m_skipsvd
623 smeagolglobal_m_svdtolzi = smeagol_control%aux%m_svdtolzi
624 smeagolglobal_sigmawideband = smeagol_control%aux%SigmaWideBand
625 smeagolglobal_emsttkscale = smeagol_control%aux%emSTTkScale
626 smeagolglobal_nlsetzeroratio = smeagol_control%aux%nlSetZeroRatio
627 smeagolglobal_nrsetzeroratio = smeagol_control%aux%nrSetZeroRatio
628 smeagolglobal_curr_fl_l = smeagol_control%aux%curr_fl_L
629 smeagolglobal_curr_fr_l = smeagol_control%aux%curr_fr_L
630 smeagolglobal_curr_fl_r = smeagol_control%aux%curr_fl_R
631 smeagolglobal_curr_fr_r = smeagol_control%aux%curr_fr_R
634 IF (.NOT. smeagol_control%aux%isexplicit_deltamin) smeagol_control%aux%deltamin = delta
636 smeagolglobal_deltamin = smeagol_control%aux%deltamin
638 smeagolglobal_tolsigma = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%tolsigma
639 smeagolglobal_trcde = smeagol_control%to_smeagol_energy_units*smeagol_control%aux%trcde
651 ALLOCATE (smeagolglobal_deltabss_bs(smeagol_control%aux%nbss))
652 ALLOCATE (smeagolglobal_nebss_bs(smeagol_control%aux%nbss, 2))
653 ALLOCATE (smeagolglobal_orbital_bs(n1))
656 IF (
ALLOCATED(smeagol_control%aux%deltabss_bs))
THEN
657 smeagolglobal_deltabss_bs(:) = smeagol_control%aux%deltabss_bs(:)
659 smeagolglobal_deltabss_bs(:) = smeagol_control%aux%deltamin
663 IF (
ALLOCATED(smeagol_control%aux%nebss_bs))
THEN
664 IF (maxval(smeagol_control%aux%nebss_bs) > n1)
THEN
667 CALL cp_abort(__location__, &
668 "The largest index in BS.SubSystemsBoundaries section ("//trim(actual_val_str)// &
669 ") exceeds the number of atomic orbitals ("//trim(expected_val_str)//
").")
671 smeagolglobal_nebss_bs(:, :) = smeagol_control%aux%nebss_bs(:, :)
673 smeagolglobal_nebss_bs(1, 1) = 1
674 smeagolglobal_nebss_bs(1, 2) = n1/smeagol_control%aux%nbss
675 DO i = 2, smeagol_control%aux%nbss
676 smeagolglobal_nebss_bs(i, 1) = smeagolglobal_nebss_bs(i - 1, 2) + 1
677 smeagolglobal_nebss_bs(i, 2) = i*n1/smeagol_control%aux%nbss
679 smeagolglobal_nebss_bs(smeagol_control%aux%nbss, 2) = n1
683 IF (
ALLOCATED(smeagol_control%aux%atomlist_bs))
THEN
684 IF (maxval(smeagol_control%aux%atomlist_bs) > nblkcols_total)
THEN
687 CALL cp_abort(__location__, &
688 "The largest atomic index in AM.AtomListBS keyword ("//trim(actual_val_str)// &
689 ") exceeds the number of atoms ("//trim(expected_val_str)//
") in the extended molecule.")
692 smeagolglobal_orbital_bs(:) = .false.
693 DO i = 1,
SIZE(smeagol_control%aux%atomlist_bs)
694 iatom = smeagol_control%aux%atomlist_bs(i)
695 smeagolglobal_orbital_bs(col_blk_offset(iatom):col_blk_offset(iatom) + col_blk_size(iatom) - 1) = .true.
698 smeagolglobal_orbital_bs(:) = .true.
701 CALL cp_abort(__location__, &
702 "CP2K was compiled with no SMEAGOL support.")
703 mark_used(smeagol_control)
713 mark_used(actual_val_str)
714 mark_used(col_blk_offset)
715 mark_used(col_blk_size)
716 mark_used(expected_val_str)
717 mark_used(getrhosingleleaddefault)
721 mark_used(nblkcols_total)
722 mark_used(nparallelk)
723 mark_used(nparallelkbuf)
726 CALL timestop(handle)
731#if defined(__SMEAGOL)
732 IF (
ALLOCATED(smeagolglobal_deltabss_bs))
DEALLOCATE (smeagolglobal_deltabss_bs)
733 IF (
ALLOCATED(smeagolglobal_nebss_bs))
DEALLOCATE (smeagolglobal_nebss_bs)
734 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.