solid-dmft 3.3.3__tar.gz → 3.3.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. {solid_dmft-3.3.3/python/solid_dmft.egg-info → solid_dmft-3.3.4}/PKG-INFO +1 -1
  2. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/pyproject.toml +1 -1
  3. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/afm_mapping.py +22 -15
  4. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/initial_self_energies.py +4 -4
  5. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/matheval.py +10 -2
  6. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/solver.py +1 -0
  7. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/io_tools/verify_input_params.py +5 -0
  8. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/version.py +4 -4
  9. {solid_dmft-3.3.3 → solid_dmft-3.3.4/python/solid_dmft.egg-info}/PKG-INFO +1 -1
  10. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/COPYING.txt +0 -0
  11. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/LICENSE.txt +0 -0
  12. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/MANIFEST.in +0 -0
  13. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/README.md +0 -0
  14. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/__init__.py +0 -0
  15. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/csc_flow.py +0 -0
  16. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dft_managers/__init__.py +0 -0
  17. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dft_managers/mpi_helpers.py +0 -0
  18. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dft_managers/qe_manager.py +0 -0
  19. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dft_managers/vasp_manager.py +0 -0
  20. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_cycle.py +0 -0
  21. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/__init__.py +0 -0
  22. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/convergence.py +0 -0
  23. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/formatter.py +0 -0
  24. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/greens_functions_mixer.py +0 -0
  25. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/interaction_hamiltonian.py +0 -0
  26. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/legendre_filter.py +0 -0
  27. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/manipulate_chemical_potential.py +0 -0
  28. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/observables.py +0 -0
  29. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/dmft_tools/results_to_archive.py +0 -0
  30. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/gw_embedding/__init__.py +0 -0
  31. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/gw_embedding/bdft_converter.py +0 -0
  32. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/gw_embedding/gw_flow.py +0 -0
  33. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/gw_embedding/iaft.py +0 -0
  34. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/gw_embedding/qp_evs_to_eig.py +0 -0
  35. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/io_tools/__init__.py +0 -0
  36. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/io_tools/default.toml +0 -0
  37. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/io_tools/dict_to_h5.py +0 -0
  38. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/io_tools/postproc_toml_dict.py +0 -0
  39. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/main.py +0 -0
  40. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/postprocessing/__init__.py +0 -0
  41. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/postprocessing/eval_U_cRPA_RESPACK.py +0 -0
  42. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/postprocessing/eval_U_cRPA_Vasp.py +0 -0
  43. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/postprocessing/maxent_gf_imp.py +0 -0
  44. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/postprocessing/maxent_gf_latt.py +0 -0
  45. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/postprocessing/maxent_sigma.py +0 -0
  46. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/postprocessing/pade_sigma.py +0 -0
  47. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/postprocessing/plot_correlated_bands.py +0 -0
  48. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/util/__init__.py +0 -0
  49. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/util/symmetrize_gamma_file.py +0 -0
  50. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft/util/write_kslice_to_h5.py +0 -0
  51. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft.egg-info/SOURCES.txt +0 -0
  52. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft.egg-info/dependency_links.txt +0 -0
  53. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft.egg-info/entry_points.txt +0 -0
  54. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft.egg-info/requires.txt +0 -0
  55. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/python/solid_dmft.egg-info/top_level.txt +0 -0
  56. {solid_dmft-3.3.3 → solid_dmft-3.3.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: solid_dmft
3
- Version: 3.3.3
3
+ Version: 3.3.4
4
4
  Summary: solid_dmft: a versatile python wrapper to perform DFT+DMFT calculations utilizing the TRIQS software library
5
5
  Author-email: Alexander Hampel <mail@alexander-hampel.de>
6
6
  Project-URL: Homepage, https://triqs.github.io/solid_dmft
@@ -7,7 +7,7 @@ where = ["python"]
7
7
 
8
8
  [project]
9
9
  name = "solid_dmft"
10
- version = "3.3.3"
10
+ version = "3.3.4"
11
11
  authors = [
12
12
  { name="Alexander Hampel", email="mail@alexander-hampel.de" }
13
13
  ]
@@ -54,9 +54,9 @@ def determine(general_params, archive, n_inequiv_shells):
54
54
  # determine if we need to switch up and down channel
55
55
  switch = np.isclose(general_params['magmom'][icrsh], -general_params['magmom'][source])
56
56
 
57
- afm_mapping[icrsh] = [True, source, switch]
57
+ afm_mapping[icrsh] = [True, int(source), bool(switch)]
58
58
  else:
59
- afm_mapping[icrsh] = [False, icrsh, False]
59
+ afm_mapping[icrsh] = [False, int(icrsh), False]
60
60
 
61
61
 
62
62
  print('AFM calculation selected, mapping self energies as follows:')
@@ -86,6 +86,20 @@ def apply(general_params, icrsh, gf_struct_solver, solvers):
86
86
  mpi.report('\ncopying the self-energy for shell {} from shell {}'.format(icrsh, imp_source))
87
87
  mpi.report('inverting spin channels: '+str(invert_spin))
88
88
 
89
+ if solvers[icrsh].solver_params.get('measure_density_matrix'):
90
+ solvers[icrsh].density_matrix = solvers[imp_source].density_matrix
91
+ solvers[icrsh].h_loc_diagonalization = solvers[imp_source].h_loc_diagonalization
92
+ solvers[icrsh].Sigma_moments = solvers[imp_source].Sigma_moments
93
+ solvers[icrsh].Sigma_Hartree = solvers[imp_source].Sigma_Hartree
94
+ solvers[icrsh].G_moments = solvers[imp_source].G_moments
95
+ # copy orbital occupations dict with deep copy of arrays
96
+ solvers[icrsh].orbital_occupations = {key: occ.copy() for key, occ in solvers[imp_source].orbital_occupations.items()}
97
+
98
+ # and the same for the perturbation order if measured
99
+ if solvers[icrsh].solver_params.get('measure_pert_order'):
100
+ solvers[icrsh].perturbation_order = {key: hist for key, hist in solvers[imp_source].perturbation_order.items()}
101
+ solvers[icrsh].perturbation_order_total = solvers[imp_source].perturbation_order_total
102
+
89
103
  if invert_spin:
90
104
  for spin_channel in gf_struct_solver.keys():
91
105
  if 'up' in spin_channel:
@@ -99,11 +113,12 @@ def apply(general_params, icrsh, gf_struct_solver, solvers):
99
113
  solvers[icrsh].G0_freq[spin_channel] << solvers[imp_source].G0_freq[target_channel]
100
114
  solvers[icrsh].G_time[spin_channel] << solvers[imp_source].G_time[target_channel]
101
115
 
102
- if solvers[icrsh].solver_params['measure_pert_order']:
103
- if not hasattr(solvers[icrsh], 'perturbation_order'):
104
- solvers[icrsh].perturbation_order = {}
116
+ if solvers[icrsh].solver_params.get('measure_pert_order'):
105
117
  solvers[icrsh].perturbation_order[spin_channel] = solvers[imp_source].perturbation_order[target_channel]
106
- solvers[icrsh].perturbation_order_total = solvers[imp_source].perturbation_order_total
118
+
119
+ # we also need to swap the orbital occupations, but we skip moments since the whole self-energy is copied anyway
120
+ if solvers[icrsh].solver_params.get('measure_density_matrix'):
121
+ solvers[icrsh].orbital_occupations[spin_channel] = solvers[imp_source].orbital_occupations[target_channel]
107
122
 
108
123
  else:
109
124
  solvers[icrsh].Sigma_freq << solvers[imp_source].Sigma_freq
@@ -112,15 +127,7 @@ def apply(general_params, icrsh, gf_struct_solver, solvers):
112
127
  solvers[icrsh].G0_freq << solvers[imp_source].G0_freq
113
128
  solvers[icrsh].G_time << solvers[imp_source].G_time
114
129
 
115
- if solvers[icrsh].solver_params['measure_pert_order']:
116
- solvers[icrsh].perturbation_order = solvers[imp_source].perturbation_order
117
- solvers[icrsh].perturbation_order_total = solvers[imp_source].perturbation_order_total
118
-
119
- if solvers[icrsh].solver_params['measure_density_matrix']:
120
- solvers[icrsh].density_matrix = solvers[imp_source].density_matrix
121
- solvers[icrsh].h_loc_diagonalization = solvers[imp_source].h_loc_diagonalization
122
-
123
- if 'measure_chi' in solvers[icrsh].solver_params and solvers[icrsh].solver_params['measure_chi'] is not None:
130
+ if solvers[icrsh].solver_params.get('measure_chi'):
124
131
  solvers[icrsh].O_time = solvers[imp_source].O_time
125
132
 
126
133
  return solvers
@@ -533,9 +533,9 @@ def determine_dc_and_initial_sigma(general_params, gw_params, advanced_params, s
533
533
  # if magmom positive the up channel will be favored
534
534
  for spin_channel in sum_k.gf_struct_solver[icrsh].keys():
535
535
  if 'up' in spin_channel:
536
- start_sigma[icrsh][spin_channel] << -np.eye(dc_pot[spin_channel].shape[0])*fac + dc_pot[spin_channel]
536
+ start_sigma[icrsh][spin_channel] << dc_pot[spin_channel] - fac*np.eye(dc_pot[spin_channel].shape[0])
537
537
  else:
538
- start_sigma[icrsh][spin_channel] << np.eye(dc_pot[spin_channel].shape[0])*fac + dc_pot[spin_channel]
538
+ start_sigma[icrsh][spin_channel] << dc_pot[spin_channel] + fac*np.eye(dc_pot[spin_channel].shape[0])
539
539
  else:
540
540
  for spin_channel in sum_k.gf_struct_solver[icrsh].keys():
541
541
  start_sigma[icrsh][spin_channel] << dc_pot[spin_channel]
@@ -554,9 +554,9 @@ def determine_dc_and_initial_sigma(general_params, gw_params, advanced_params, s
554
554
  # if magmom positive the up channel will be favored
555
555
  for spin_channel in sum_k.gf_struct_solver[icrsh].keys():
556
556
  if 'up' in spin_channel:
557
- start_sigma[icrsh][spin_channel] << -fac
557
+ start_sigma[icrsh][spin_channel] << -fac*np.eye(start_sigma[icrsh][spin_channel].target_shape[0])
558
558
  else:
559
- start_sigma[icrsh][spin_channel] << fac
559
+ start_sigma[icrsh][spin_channel] << fac*np.eye(start_sigma[icrsh][spin_channel].target_shape[0])
560
560
  else:
561
561
  start_sigma = [sum_k.block_structure.create_gf(ish=iineq, gf_function=Gf, space='solver', mesh=sum_k.mesh)
562
562
  for iineq in range(sum_k.n_inequiv_shells)]
@@ -4,8 +4,12 @@ import ast
4
4
  import math
5
5
 
6
6
 
7
+ # Determine numeric/constant node for compatibility across Python versions
8
+ _AST_CONSTANT = getattr(ast, "Constant", None)
9
+
7
10
  class MathExpr(object):
8
- allowed_nodes = (
11
+ # Base allowed nodes (version-agnostic)
12
+ _base_allowed = (
9
13
  ast.Module,
10
14
  ast.Expr,
11
15
  ast.Load,
@@ -13,7 +17,6 @@ class MathExpr(object):
13
17
  ast.Add,
14
18
  ast.Sub,
15
19
  ast.UnaryOp,
16
- ast.Num,
17
20
  ast.BinOp,
18
21
  ast.Mult,
19
22
  ast.Div,
@@ -32,6 +35,11 @@ class MathExpr(object):
32
35
  ast.Name,
33
36
  )
34
37
 
38
+ # Extend allowed nodes with version-specific constant node
39
+ allowed_nodes = _base_allowed + (
40
+ _AST_CONSTANT if _AST_CONSTANT is not None else ast.Num,
41
+ )
42
+
35
43
  functions = {
36
44
  "abs": abs,
37
45
  "complex": complex,
@@ -1163,6 +1163,7 @@ class SolverStructure:
1163
1163
  self.Sigma_moments = self.triqs_solver.Sigma_moments
1164
1164
  self.Sigma_Hartree = self.triqs_solver.Sigma_Hartree
1165
1165
  self.G_moments = self.triqs_solver.G_moments
1166
+ self.orbital_occupations = self.triqs_solver.orbital_occupations
1166
1167
 
1167
1168
  if self.solver_params['measure_pert_order']:
1168
1169
  self.perturbation_order = self.triqs_solver.perturbation_order
@@ -28,6 +28,11 @@ def _verify_input_params_general(params: FullConfig) -> None:
28
28
  if params['general']['calc_energies'] and any(entry['type'] == 'ftps' for entry in params['solver']):
29
29
  raise ValueError('"calc_energies" is not valid for solver of type = "ftps"')
30
30
 
31
+ if params['general']['n_iter_dmft'] is None:
32
+ raise ValueError('"n_iter_dmft" must be specified.')
33
+ elif params['general']['n_iter_dmft'] < 0:
34
+ raise ValueError('"n_iter_dmft" must be at least 0.')
35
+
31
36
  # Checks validity of other general params
32
37
  h_int_type_options = (
33
38
  'density_density',
@@ -22,12 +22,12 @@
22
22
  #
23
23
  ################################################################################
24
24
 
25
- version = "3.3.3"
26
- triqs_hash = "0a3ce9651e4b043eb24c0f7eae52e6538b36b752"
27
- solid_dmft_hash = "282d8435c4ccdc1c9061451f5d777f374de8c238"
25
+ version = "3.3.4"
26
+ triqs_hash = "e0692a5bc9a8df98ec544abef51f06a728b37105"
27
+ solid_dmft_hash = "598a67977a6ff7eeca9394ec35138f569dd9a5f7"
28
28
 
29
29
  def show_version():
30
30
  print("\nYou are using solid_dmft version %s\n"%version)
31
31
 
32
32
  def show_git_hash():
33
- print("\nYou are using solid_dmft git hash %s based on triqs git hash %s\n"%("282d8435c4ccdc1c9061451f5d777f374de8c238", triqs_hash))
33
+ print("\nYou are using solid_dmft git hash %s based on triqs git hash %s\n"%("598a67977a6ff7eeca9394ec35138f569dd9a5f7", triqs_hash))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: solid_dmft
3
- Version: 3.3.3
3
+ Version: 3.3.4
4
4
  Summary: solid_dmft: a versatile python wrapper to perform DFT+DMFT calculations utilizing the TRIQS software library
5
5
  Author-email: Alexander Hampel <mail@alexander-hampel.de>
6
6
  Project-URL: Homepage, https://triqs.github.io/solid_dmft
File without changes
File without changes
File without changes
File without changes
File without changes