48#include "./base/base_uses.f90"
53 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_subsys_methods'
73 SUBROUTINE qs_subsys_create(subsys, para_env, root_section, force_env_section, subsys_section, &
74 use_motion_section, cp_subsys, cell, cell_ref, elkind, silent)
79 LOGICAL,
INTENT(IN) :: use_motion_section
81 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell, cell_ref
82 LOGICAL,
INTENT(IN),
OPTIONAL :: elkind, silent
84 LOGICAL :: be_silent, use_ref_cell
86 TYPE(
cell_type),
POINTER :: my_cell, my_cell_ref
91 NULLIFY (atomic_kind_set, qs_kind_set, cell_section, kind_section, my_cell, my_cell_ref, my_cp_subsys)
94 IF (
PRESENT(silent)) be_silent = silent
96 IF (
PRESENT(cp_subsys))
THEN
97 my_cp_subsys => cp_subsys
98 ELSE IF (
PRESENT(root_section))
THEN
100 force_env_section=force_env_section, &
101 subsys_section=subsys_section, &
102 use_motion_section=use_motion_section, &
105 cpabort(
"qs_subsys_create: cp_subsys or root_section needed")
110 use_ref_cell = .false.
111 IF (
PRESENT(cell))
THEN
113 IF (
PRESENT(cell_ref))
THEN
114 my_cell_ref => cell_ref
115 use_ref_cell = .true.
118 CALL cell_clone(my_cell, my_cell_ref, tag=
"CELL_REF")
122 CALL read_cell(my_cell, my_cell_ref, use_ref_cell=use_ref_cell, &
123 cell_section=cell_section, para_env=para_env)
130 CALL cp_subsys_get(my_cp_subsys, atomic_kind_set=atomic_kind_set)
133 para_env, force_env_section, be_silent)
135 CALL num_ao_el_per_molecule(my_cp_subsys%molecule_kinds%els, &
139 cp_subsys=my_cp_subsys, &
140 cell_ref=my_cell_ref, &
141 use_ref_cell=use_ref_cell, &
142 qs_kind_set=qs_kind_set)
145 IF (.NOT.
PRESENT(cell_ref))
CALL cell_release(my_cell_ref)
161 SUBROUTINE num_ao_el_per_molecule(molecule_kind_set, qs_kind_set)
164 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
166 INTEGER :: arbitrary_spin, iatom, ikind, imol, &
167 n_ao, natom, nmol_kind, nsgf, nspins, &
169 INTEGER,
DIMENSION(0:lmat, 10) :: ne_core, ne_elem, ne_explicit
170 INTEGER,
DIMENSION(2) :: n_occ_alpha_and_beta
171 REAL(kind=
dp) :: charge_molecule, zeff, zeff_correction
172 REAL(kind=
dp),
DIMENSION(0:lmat, 10, 2) :: edelta
181 IF (
ASSOCIATED(molecule_kind_set))
THEN
184 nmol_kind =
SIZE(molecule_kind_set, 1)
189 DO imol = 1, nmol_kind
191 molecule_kind => molecule_kind_set(imol)
196 n_occ_alpha_and_beta(1:nspins) = 0
201 atomic_kind => molecule_kind%atom_list(iatom)%atomic_kind
204 basis_set=orb_basis_set, &
205 all_potential=all_potential, &
206 gth_potential=gth_potential, &
207 sgp_potential=sgp_potential, &
208 cneo_potential=cneo_potential)
214 qs_kind=qs_kind_set(ikind), &
228 n_occ_alpha_and_beta(arbitrary_spin) = &
229 n_occ_alpha_and_beta(arbitrary_spin) + sum(ne_explicit) + &
230 sum(nint(2*edelta(:, :, arbitrary_spin)))
235 IF (
ASSOCIATED(all_potential))
THEN
237 zeff_correction=zeff_correction)
238 ELSE IF (
ASSOCIATED(gth_potential))
THEN
240 zeff_correction=zeff_correction)
241 ELSE IF (
ASSOCIATED(sgp_potential))
THEN
243 zeff_correction=zeff_correction)
244 ELSE IF (
ASSOCIATED(cneo_potential))
THEN
246 zeff_correction = 0.0_dp
249 zeff_correction = 0.0_dp
251 z_molecule = z_molecule + nint(zeff - zeff_correction)
257 IF (
ASSOCIATED(orb_basis_set))
THEN
268 charge_molecule = real(z_molecule - n_occ_alpha_and_beta(arbitrary_spin),
dp)
270 nelectron=n_occ_alpha_and_beta(arbitrary_spin), &
271 charge=charge_molecule, &
277 END SUBROUTINE num_ao_el_per_molecule
Define the atom type and its sub types.
integer, parameter, public lmat
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
subroutine, public get_gto_basis_set(gto_basis_set, name, aliases, norm_type, kind_radius, ncgf, nset, nsgf, cgf_symbol, sgf_symbol, norm_cgf, set_radius, lmax, lmin, lx, ly, lz, m, ncgf_set, npgf, nsgf_set, nshell, cphi, pgf_radius, sphi, scon, zet, first_cgf, first_sgf, l, last_cgf, last_sgf, n, gcc, maxco, maxl, maxpgf, maxsgf_set, maxshell, maxso, nco_sum, npgf_sum, nshell_sum, maxder, short_kind_radius, npgf_seg_sum)
...
Handles all functions related to the CELL.
recursive subroutine, public read_cell(cell, cell_ref, use_ref_cell, cell_section, check_for_ref, para_env)
...
subroutine, public write_cell(cell, subsys_section, tag)
Write the cell parameters to the output unit.
subroutine, public cell_create(cell, hmat, periodic, tag)
allocates and initializes a cell
Handles all functions related to the CELL.
subroutine, public cell_release(cell)
releases the given cell (see doc/ReferenceCounting.html)
subroutine, public cell_clone(cell_in, cell_out, tag)
Clone cell variable.
Initialize a small environment for a particular calculation.
subroutine, public cp_subsys_create(subsys, para_env, root_section, force_env_section, subsys_section, use_motion_section, qmmm, qmmm_env, exclusions, elkind)
Creates allocates and fills subsys from given input.
types that represent a subsys, i.e. a part of the system
subroutine, public cp_subsys_release(subsys)
releases a subsys (see doc/ReferenceCounting.html)
subroutine, public cp_subsys_set(subsys, atomic_kinds, particles, local_particles, molecules, molecule_kinds, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, results, cell)
sets various propreties of the subsys
subroutine, public cp_subsys_get(subsys, ref_count, atomic_kinds, atomic_kind_set, particles, particle_set, local_particles, molecules, molecule_set, molecule_kinds, molecule_kind_set, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, natom, nparticle, ncore, nshell, nkind, atprop, virial, results, cell)
returns information about various attributes of the given subsys
Definition of the atomic potential types.
Defines the basic variable types.
integer, parameter, public dp
Interface to the message passing library MPI.
Define the molecule kind structure types and the corresponding functionality.
subroutine, public get_molecule_kind(molecule_kind, atom_list, bond_list, bend_list, ub_list, impr_list, opbend_list, colv_list, fixd_list, g3x3_list, g4x6_list, vsite_list, torsion_list, shell_list, name, mass, charge, kind_number, natom, nbend, nbond, nub, nimpr, nopbend, nconstraint, nconstraint_fixd, nfixd, ncolv, ng3x3, ng4x6, nvsite, nfixd_restraint, ng3x3_restraint, ng4x6_restraint, nvsite_restraint, nrestraints, nmolecule, nsgf, nshell, ntorsion, molecule_list, nelectron, nelectron_alpha, nelectron_beta, bond_kind_set, bend_kind_set, ub_kind_set, impr_kind_set, opbend_kind_set, torsion_kind_set, molname_generated)
Get informations about a molecule kind.
subroutine, public set_molecule_kind(molecule_kind, name, mass, charge, kind_number, molecule_list, atom_list, nbond, bond_list, nbend, bend_list, nub, ub_list, nimpr, impr_list, nopbend, opbend_list, ntorsion, torsion_list, fixd_list, ncolv, colv_list, ng3x3, g3x3_list, ng4x6, nfixd, g4x6_list, nvsite, vsite_list, ng3x3_restraint, ng4x6_restraint, nfixd_restraint, nshell, shell_list, nvsite_restraint, bond_kind_set, bend_kind_set, ub_kind_set, torsion_kind_set, impr_kind_set, opbend_kind_set, nelectron, nsgf, molname_generated)
Set the components of a molecule kind.
Types used by CNEO-DFT (see J. Chem. Theory Comput. 2025, 21, 16, 7865–7877)
subroutine, public get_cneo_potential(potential, z, zeff, mass, elec_conf, nsgf, nne, npsgf, nsotot, my_gcc_h, my_gcc_s, ovlp, kin, utrans, distance, harmonics, qlm_gg, gg, vgg, n2oindex, o2nindex, rad2l, oorad2l)
...
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, cneo_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zatom, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, u_of_dft_plus_u, j_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, j0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
subroutine, public init_atom_electronic_state(atomic_kind, qs_kind, ncalc, ncore, nelem, edelta)
...
subroutine, public create_qs_kind_set(qs_kind_set, atomic_kind_set, kind_section, para_env, force_env_section, silent)
Read an atomic kind set data set from the input file.
Routines that work on qs_subsys_type.
subroutine, public qs_subsys_create(subsys, para_env, root_section, force_env_section, subsys_section, use_motion_section, cp_subsys, cell, cell_ref, elkind, silent)
Creates a qs_subsys. Optionally an existsing cp_subsys is used.
types that represent a quickstep subsys
subroutine, public qs_subsys_set(subsys, cp_subsys, local_particles, local_molecules, cell, cell_ref, use_ref_cell, energy, force, qs_kind_set, nelectron_total, nelectron_spin)
...
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
represents a system: atoms, molecules, their pos,vel,...
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.