89#include "../base/base_uses.f90"
95 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'md_energies'
121 LOGICAL :: shell_adiabatic
128 NULLIFY (atomic_kinds, atomic_kind_set, particles, shell_particles)
130 cpassert(
ASSOCIATED(md_ener))
131 cpassert(
ASSOCIATED(force_env))
134 CALL cp_subsys_get(subsys, atomic_kinds=atomic_kinds, particles=particles, &
135 shell_particles=shell_particles)
136 atomic_kind_set => atomic_kinds%els
137 nkind =
SIZE(atomic_kind_set)
139 shell_adiabatic=shell_adiabatic)
141 md_ener%nfree = simpar%nfree
142 md_ener%nfree_shell = -huge(0)
144 IF (shell_adiabatic)
THEN
145 md_ener%nfree_shell = 3*(shell_particles%n_els)
148 IF (simpar%temperature_per_kind)
THEN
149 ALLOCATE (md_ener%temp_kind(nkind))
150 ALLOCATE (md_ener%ekin_kind(nkind))
151 ALLOCATE (md_ener%nfree_kind(nkind))
152 md_ener%nfree_kind = 0
154 IF (shell_adiabatic)
THEN
155 ALLOCATE (md_ener%temp_shell_kind(nkind))
156 ALLOCATE (md_ener%ekin_shell_kind(nkind))
157 ALLOCATE (md_ener%nfree_shell_kind(nkind))
158 md_ener%nfree_shell_kind = 0
162 CALL zero_md_ener(md_ener, tkind=simpar%temperature_per_kind, &
163 tshell=shell_adiabatic)
164 md_ener%epot = 0.0_dp
182 LOGICAL :: shell_adiabatic, tkind, tshell
190 NULLIFY (atomic_kinds, atomic_kind_set, force_env, &
191 particles, subsys, simpar)
192 CALL get_md_env(md_env=md_env, force_env=force_env, &
196 potential_energy=md_ener%epot, subsys=subsys)
199 atomic_kind_set => atomic_kinds%els
201 shell_adiabatic=shell_adiabatic)
203 tkind = simpar%temperature_per_kind
204 tshell = shell_adiabatic
207 natom = particles%n_els
210 tshell=tshell, natom=natom)
229 CALL zero_md_ener(md_ener, tkind=.false., tshell=.false.)
230 CALL get_md_env(md_env=md_env, force_env=force_env, reftraj=reftraj)
235 md_ener%epot = reftraj%epot
236 md_ener%delta_epot = (reftraj%epot - reftraj%epot0)/real(reftraj%natom, kind=
dp)*
kelvin
255 CHARACTER(len=*),
PARAMETER :: routinen =
'md_write_output'
257 CHARACTER(LEN=default_string_length) :: fmd, my_act, my_pos
258 INTEGER :: ene, ener_mix, handle, i, nat, nkind, &
259 shene, tempkind, trsl
260 INTEGER(KIND=int_8) :: max_memory
261 INTEGER,
POINTER :: itimes
262 LOGICAL :: init, is_mixed, new_file, print_memory, &
263 qmmm, shell_adiabatic, shell_present
264 REAL(
dp) :: abc(3), cell_angle(3), dt, econs, &
265 pv_scalar, pv_xx, pv_xx_nc
266 REAL(kind=
dp) :: harm_shell, hugoniot
267 REAL(kind=
dp),
POINTER :: time, used_time
290 CALL timeset(routinen, handle)
295 shell_adiabatic = .false.
296 shell_present = .false.
297 NULLIFY (motion_section, atomic_kinds, atomic_kind_set, cell, subsys, &
298 force_env, md_ener, qmmm_env, reftraj, core_particles, particles, &
299 shell_particles, print_key, root_section, simpar, virial, &
300 thermostats, thermal_regions)
302 CALL get_md_env(md_env=md_env, itimes=itimes, t=time, used_time=used_time, &
303 simpar=simpar, force_env=force_env, init=init, md_ener=md_ener, &
304 reftraj=reftraj, thermostats=thermostats, barostat=barostat, &
305 para_env=para_env, averages=averages, thermal_regions=thermal_regions)
307 root_section => force_env%root_section
310 CALL force_env_get(force_env, cell=cell, subsys=subsys, qmmm_env=qmmm_env)
315 CALL cp_subsys_get(subsys, particles=particles, virial=virial)
316 nat = particles%n_els
317 dt = simpar%dt*simpar%dt_fact
320 IF (virial%pv_availability)
THEN
323 pv_scalar = pv_scalar + virial%pv_total(i, i)
325 pv_scalar = pv_scalar/3._dp/cell%deth
327 pv_xx_nc = virial%pv_total(1, 1)/cell%deth
332 atomic_kind_set => atomic_kinds%els
334 shell_present=shell_present, &
335 shell_adiabatic=shell_adiabatic)
337 CALL get_cell(cell, abc=abc, alpha=cell_angle(3), beta=cell_angle(2),
gamma=cell_angle(1))
342 IF (init .AND. (itimes == 0))
THEN
350 IF ((reftraj%isnap == reftraj%info%first_snapshot))
THEN
360 IF (simpar%e0 == 0._dp) simpar%e0 = md_ener%epot + md_ener%ekin
361 hugoniot = md_ener%epot + md_ener%ekin - simpar%e0 - 0.5_dp*(pv_xx_nc + simpar%p0)* &
362 (simpar%v0 - cell%deth)
369 hugoniot = md_ener%epot + md_ener%ekin - simpar%e0 - 0.5_dp*(pv_xx_nc + simpar%p0)* &
370 (simpar%v0 - cell%deth)
375 econs = md_ener%delta_epot
376 itimes = reftraj%itimes
378 econs = md_ener%delta_cons
382 CALL compute_averages(averages, force_env, md_ener, cell, virial, pv_scalar, &
383 pv_xx, used_time, hugoniot, abc, cell_angle, nat, itimes, time, my_pos, &
390 IF (print_memory)
THEN
395 CALL md_write_info_low(simpar, md_ener, qmmm, virial, reftraj, cell, abc, &
396 cell_angle, itimes, dt, time, used_time, averages, econs, pv_scalar, pv_xx, &
397 hugoniot, nat, init, logger, motion_section, my_pos, my_act, max_memory)
400 IF ((.NOT. init) .OR. (itimes == 0) .OR. simpar%ensemble ==
reftraj_ensemble)
THEN
403 extension=
".ener", file_position=my_pos, file_action=my_act, is_new_file=new_file)
408 WRITE (ene,
'("#",5X,A,10X,A,8X,A,10X,A,12X,A,2(8X,A))')
"Step Nr.",
"Time[fs]",
"Kin.[a.u.]",
"Temp[K]", &
409 "Pot.[a.u.]",
"Cons Qty[a.u.]",
"UsedTime[s]"
411 WRITE (ene,
"(I10,F20.6,F20.9,F20.9,F20.9,F20.9,F20.9)") &
412 itimes, time*
femtoseconds, md_ener%ekin, md_ener%temp_part, md_ener%epot, md_ener%constant, used_time
420 extension=
".ener", file_position=my_pos, file_action=my_act, &
422 IF (ener_mix > 0)
THEN
423 WRITE (ener_mix,
"(I8,F12.3,F20.9,"//
cp_to_string(
SIZE(force_env%mixed_env%energies))//
"F20.9,F20.9)") &
424 itimes, time*
femtoseconds, md_ener%epot, force_env%mixed_env%energies, md_ener%constant
433 extension=
".translation", middle_name=
"qmmm")
435 WRITE (trsl,
'(I10,3F15.10)') itimes, qmmm_env%qm%transl_v
438 "PRINT%TRANSLATION_VECTOR")
446 pos=my_pos, act=my_act, extended_xmol_title=.true.)
450 "VELOCITIES", my_pos, my_act, middle_name=
"vel", extended_xmol_title=.true.)
454 "FORCES", my_pos, my_act, middle_name=
"frc", extended_xmol_title=.true.)
458 "FORCE_MIXING_LABELS", my_pos, my_act, middle_name=
"fmlabels", extended_xmol_title=.true.)
473 IF (
ASSOCIATED(force_env%qs_env))
THEN
478 IF (simpar%temperature_per_kind)
THEN
480 extension=
".temp", file_position=my_pos, file_action=my_act)
481 IF (tempkind > 0)
THEN
482 nkind =
SIZE(md_ener%temp_kind)
483 fmd =
"(I10,F20.3,"//trim(adjustl(
cp_to_string(nkind)))//
"F20.9)"
485 WRITE (tempkind, fmd) itimes, time*
femtoseconds, md_ener%temp_kind(1:nkind)
492 CALL cp_warn(__location__, &
493 "The print_key MD%PRINT%TEMP_KIND has been activated but the "// &
494 "calculation of the temperature per kind has not been requested. "// &
495 "Please switch on the keyword MD%TEMP_KIND.")
501 IF (shell_present)
THEN
503 CALL cp_subsys_get(subsys, shell_particles=shell_particles, core_particles=core_particles)
507 extension=
".shener", file_position=my_pos, file_action=my_act, &
508 file_form=
"FORMATTED", is_new_file=new_file)
511 WRITE (shene,
'("#",3X,A,3X,A,3X,3(5X,A,5X))')
"Step Nr.",
"Time[fs]",
"Kin.[a.u.]", &
512 "Temp.[K]",
"Pot.[a.u.]"
515 WRITE (shene,
"(I8,F12.3,F20.9,F20.9,F20.9,F20.9 )") &
516 itimes, time*
femtoseconds, md_ener%ekin_shell, md_ener%temp_shell, harm_shell
523 "SHELL_TRAJECTORY", my_pos, my_act,
"shpos", shell_particles, extended_xmol_title=.true.)
525 IF (shell_adiabatic)
THEN
528 "SHELL_VELOCITIES", my_pos, my_act,
"shvel", shell_particles, extended_xmol_title=.true.)
532 "SHELL_FORCES", my_pos, my_act,
"shfrc", shell_particles, extended_xmol_title=.true.)
536 "CORE_TRAJECTORY", my_pos, my_act,
"copos", core_particles, extended_xmol_title=.true.)
540 "CORE_VELOCITIES", my_pos, my_act,
"covel", core_particles, extended_xmol_title=.true.)
544 "CORE_FORCES", my_pos, my_act,
"cofrc", core_particles, extended_xmol_title=.true.)
547 IF (simpar%temperature_per_kind)
THEN
549 extension=
".shtemp", file_position=my_pos, file_action=my_act)
550 IF (tempkind > 0)
THEN
551 nkind =
SIZE(md_ener%temp_shell_kind)
552 fmd =
"(I10,F20.3,"//trim(adjustl(
cp_to_string(nkind)))//
"F20.9)"
554 WRITE (tempkind, fmd) itimes, time*
femtoseconds, md_ener%temp_shell_kind(1:nkind)
558 "MD%PRINT%TEMP_SHELL_KIND")
562 CALL cp_warn(__location__, &
563 "The print_key MD%PRINT%TEMP_SHELL_KIND has been activated but the "// &
564 "calculation of the temperature per kind has not been requested. "// &
565 "Please switch on the keyword MD%TEMP_KIND.")
572 CALL timestop(handle)
607 SUBROUTINE md_write_info_low(simpar, md_ener, qmmm, virial, reftraj, cell, &
608 abc, cell_angle, itimes, dt, time, used_time, averages, econs, pv_scalar, &
609 pv_xx, hugoniot, nat, init, logger, motion_section, my_pos, my_act, &
614 LOGICAL,
INTENT(IN) :: qmmm
618 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: abc, cell_angle
619 INTEGER,
POINTER :: itimes
620 REAL(kind=
dp),
INTENT(IN) :: dt
621 REAL(kind=
dp),
POINTER :: time, used_time
623 REAL(kind=
dp),
INTENT(IN) :: econs, pv_scalar, pv_xx, hugoniot
624 INTEGER,
INTENT(IN) :: nat
625 LOGICAL,
INTENT(IN) :: init
628 CHARACTER(LEN=default_string_length),
INTENT(IN) :: my_pos, my_act
629 INTEGER(KIND=int_8),
INTENT(IN) :: max_memory
636 NULLIFY (enum, keyword, section)
639 extension=
".mdLog", file_position=my_pos, file_action=my_act)
648 WRITE (iw,
'(/,T2,A)')
'MD_INI| MD initialization'
649 WRITE (iw,
'(T2,A,T61,E20.12)') &
650 'MD_INI| Potential energy [hartree]', md_ener%epot
654 WRITE (iw,
'(T2,A,T61,E20.12)') &
655 'MD_INI| Kinetic energy [hartree]', md_ener%ekin
656 WRITE (iw,
'(T2,A,T61,F20.6)') &
657 'MD_INI| Temperature [K]', md_ener%temp_part
659 WRITE (iw,
'(T2,A,T61,E20.12)') &
660 'MD_INI| Total kinetic energy [hartree]', md_ener%ekin, &
661 'MD_INI| QM kinetic energy [hartree]', md_ener%ekin_qm
662 WRITE (iw,
'(T2,A,T61,F20.6)') &
663 'MD_INI| Total temperature [K]', md_ener%temp_part, &
664 'MD_INI| QM temperature [K]', md_ener%temp_qm
674 WRITE (iw,
'(T2,A,T61,F20.6)') &
675 'MD_INI| Barostat temperature [K]', md_ener%temp_baro
677 IF (virial%pv_availability)
THEN
678 WRITE (iw,
'(T2,A,T61,ES20.12)') &
679 'MD_INI| Pressure [bar]', pv_scalar
683 WRITE (iw,
'(T2,A,T61,ES20.12)') &
684 'MD_INI| Hugoniot constraint [K]', hugoniot
688 WRITE (iw,
'(T2,A,T61,E20.12)') &
689 'MD_INI| Total energy [hartree]', simpar%e0
691 WRITE (iw,
'(T2,A,T61,ES20.12)') &
692 'MD_INI| Cell volume [bohr^3]', cell%deth
693 WRITE (iw,
'(T2,A,T61,ES20.12)') &
694 'MD_INI| Cell volume [ang^3]', cell%deth*
angstrom**3
695 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
696 'MD_INI| Cell lengths [bohr]', abc(1:3)
697 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
698 'MD_INI| Cell lengths [ang]', abc(1:3)*
angstrom
699 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
700 'MD_INI| Cell angles [deg]', cell_angle(3), cell_angle(2), cell_angle(1)
703 WRITE (iw,
'(/,T2,A)')
'MD| '//repeat(
'*', 75)
706 WRITE (iw,
'(T2,A,T71,I10)') &
707 'MD| Step number', itimes
708 IF (simpar%variable_dt)
THEN
709 WRITE (iw,
'(T2,A,T61,F20.6)') &
712 WRITE (iw,
'(T2,A,T61,F20.6)') &
714 WRITE (iw,
'(T2,A,T61,E20.12)') &
715 'MD| Conserved quantity [hartree]', md_ener%constant
716 WRITE (iw,
'(T2,A)')
'MD| '//repeat(
'-', 75)
717 WRITE (iw,
'(T2,A,T47,A,T73,A)')
'MD|',
'Instantaneous',
'Averages'
718 WRITE (iw,
'(T2,A,T39,2(1X,F20.6))') &
719 'MD| CPU time per MD step [s]', used_time, averages%avecpu
720 WRITE (iw,
'(T2,A,T39,2(1X,E20.12))') &
721 'MD| Energy drift per atom [K] ', econs, averages%econs
722 WRITE (iw,
'(T2,A,T39,2(1X,E20.12))') &
723 'MD| Potential energy [hartree]', md_ener%epot, averages%avepot
727 WRITE (iw,
'(T2,A,T39,2(1X,E20.12))') &
728 'MD| Kinetic energy [hartree]', md_ener%ekin, averages%avekin
729 WRITE (iw,
'(T2,A,T39,2(1X,F20.6))') &
730 'MD| Temperature [K]', md_ener%temp_part, averages%avetemp
732 WRITE (iw,
'(T2,A,T39,2(1X,E20.12))') &
733 'MD| Total kinetic energy [hartree]', md_ener%ekin, averages%avekin
734 WRITE (iw,
'(T2,A,T39,2(1X,E20.12))') &
735 'MD| QM kinetic energy [hartree]', md_ener%ekin_qm, averages%avekin_qm
736 WRITE (iw,
'(T2,A,T39,2(1X,F20.6))') &
737 'MD| Total temperature [K]', md_ener%temp_part, averages%avetemp
738 WRITE (iw,
'(T2,A,T39,2(1X,F20.6))') &
739 'MD| QM temperature [K]', md_ener%temp_qm, averages%avetemp_qm
742 IF (virial%pv_availability)
THEN
743 WRITE (iw,
'(T2,A,T39,2(1X,ES20.12))') &
744 'MD| Pressure [bar]', pv_scalar, averages%avepress
748 WRITE (iw,
'(T2,A,T39,2(1X,ES20.12))') &
749 'MD| P(xx) [bar]', pv_xx, averages%avepxx
750 WRITE (iw,
'(T2,A,T39,2(1X,ES20.12))') &
751 'MD| Hugoniot [K]', hugoniot/3.0_dp/nat*
kelvin, averages%avehugoniot/3.0_dp/nat*
kelvin
760 WRITE (iw,
'(T2,A,T39,2(1X,ES20.12))') &
761 'MD| Barostat temperature [K]', md_ener%temp_baro, averages%avetemp_baro
762 WRITE (iw,
'(T2,A,T39,2(1X,ES20.12))') &
763 'MD| Cell volume [bohr^3]', cell%deth, averages%avevol
764 WRITE (iw,
'(T2,A,T39,2(1X,ES20.12))') &
765 'MD| Cell volume [ang^3]', cell%deth*
angstrom**3, averages%avevol*
angstrom**3
766 WRITE (iw,
'(T2,A)')
'MD| '//repeat(
'-', 75)
767 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
768 'MD| Cell lengths [bohr]', abc(1:3)
769 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
770 'MD| Cell lengths [ang]', abc(1:3)*
angstrom
771 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
772 'MD| Average cell lengths [bohr]', averages%aveca, averages%avecb, averages%avecc
773 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
774 'MD| Average cell lengths [ang]', averages%aveca*
angstrom, averages%avecb*
angstrom, &
779 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
780 'MD| Cell angles [deg]', cell_angle(3), cell_angle(2), cell_angle(1)
781 WRITE (iw,
'(T2,A,T33,3(1X,ES15.8))') &
782 'MD| Average cell angles [deg]', averages%aveal, averages%avebe, averages%avega
785 IF (reftraj%info%msd)
THEN
786 IF (reftraj%msd%msd_kind)
THEN
787 WRITE (iw,
'(/,T2,A,T51,3F10.5)') &
788 'MD| COM displacement (dx,dy,dz) [bohr]', reftraj%msd%drcom(1:3)
792 WRITE (iw,
'(T2,A)')
'MD| '//repeat(
'*', 75)
793 IF (max_memory .NE. 0)
THEN
794 WRITE (iw,
'(T2,A,T73,I8)') &
795 'MD| Estimated peak process memory after this step [MiB]', &
796 (max_memory + (1024*1024) - 1)/(1024*1024)
802 "MD%PRINT%PROGRAM_RUN_INFO")
803 END SUBROUTINE md_write_info_low
813 INTEGER(KIND=int_8) :: max_memory
817 CALL para_env%max(max_memory)
represent a simple array based list of the given type
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind_set(atomic_kind_set, atom_of_kind, kind_of, natom_of_kind, maxatom, natom, nshell, fist_potential_present, shell_present, shell_adiabatic, shell_check_distance, damping_present)
Get attributes of an atomic kind set.
Handles the type to compute averages during an MD.
subroutine, public compute_averages(averages, force_env, md_ener, cell, virial, pv_scalar, pv_xx, used_time, hugoniot, abc, cell_angle, nat, itimes, time, my_pos, my_act)
computes the averages
Barostat structure: module containing barostat available for MD.
subroutine, public print_barostat_status(barostat, simpar, my_pos, my_act, cell, itimes, time)
Prints status of barostat during an MD run.
Handles all functions related to the CELL.
subroutine, public get_cell(cell, alpha, beta, gamma, deth, orthorhombic, abc, periodic, h, h_inv, symmetry_id, tag)
Get informations about a simulation cell.
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
types that represent a subsys, i.e. a part of the system
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
real(kind=dp) function, public cp_unit_from_cp2k(value, unit_str, defaults, power)
converts from the internal cp2k units to the given unit
Interface for the force calculations.
integer, parameter, public use_mixed_force
recursive subroutine, public force_env_get(force_env, in_use, fist_env, qs_env, meta_env, fp_env, subsys, para_env, potential_energy, additional_potential, kinetic_energy, harmonic_shell, kinetic_shell, cell, sub_force_env, qmmm_env, qmmmx_env, eip_env, pwdft_env, globenv, input, force_env_section, method_name_id, root_section, mixed_env, nnp_env, embed_env, ipi_env)
returns various attributes about the force environment
Calculation of the incomplete Gamma function F_n(t) for multi-center integrals over Cartesian Gaussia...
Defines the basic variable types.
integer, parameter, public int_8
integer, parameter, public dp
integer, parameter, public default_string_length
Machine interface based on Fortran 2003 and POSIX.
subroutine, public m_memory(mem)
Returns the total amount of memory [bytes] in use, if known, zero otherwise.
subroutine, public m_flush(lunit)
flushes units if the &GLOBAL flag is set accordingly
integer(kind=int_8), save, public m_memory_max
computes the conserved quantities for a given md ensemble and also kinetic energies,...
integer function, public calc_nfree_qm(md_env, md_ener)
Calculates the number of QM degress of freedom.
subroutine, public compute_conserved_quantity(md_env, md_ener, tkind, tshell, natom)
calculates conserved quantity.
Split md_ener module from md_environment_type.
subroutine, public zero_md_ener(md_ener, tkind, tshell)
initialize to zero energies and temperatures
prints all energy info per timestep to the screen or to user defined output files
subroutine, public md_ener_reftraj(md_env, md_ener)
...
subroutine, public initialize_md_ener(md_ener, force_env, simpar)
...
subroutine, public md_energy(md_env, md_ener)
...
integer(kind=int_8) function, public sample_memory(para_env)
Samples memory usage.
subroutine, public md_write_output(md_env)
This routine computes the conserved quantity, temperature and things like that and prints them out.
subroutine, public set_md_env(md_env, itimes, constant, cell, simpar, fe_env, force_env, para_env, init, first_time, thermostats, barostat, reftraj, md_ener, averages, thermal_regions, ehrenfest_md)
Set the integrator environment to the correct program.
subroutine, public get_md_env(md_env, itimes, constant, used_time, cell, simpar, npt, force_env, para_env, reftraj, t, init, first_time, fe_env, thermostats, barostat, thermostat_coeff, thermostat_part, thermostat_shell, thermostat_baro, thermostat_fast, thermostat_slow, md_ener, averages, thermal_regions, ehrenfest_md)
get components of MD environment type
Interface to the message passing library MPI.
Output Utilities for MOTION_SECTION.
subroutine, public write_simulation_cell(cell, motion_section, itimes, time, pos, act)
Prints the Simulation Cell.
subroutine, public write_trajectory(force_env, root_section, it, time, dtime, etot, pk_name, pos, act, middle_name, particles, extended_xmol_title)
Prints the information controlled by the TRAJECTORY section.
subroutine, public write_stress_tensor_to_file(virial, cell, motion_section, itimes, time, pos, act)
Prints the Stress Tensor.
represent a simple array based list of the given type
Define methods related to particle_type.
subroutine, public write_structure_data(particle_set, cell, input_section)
Write structure data requested by a separate structure data input section to the output unit....
Definition of physical constants:
real(kind=dp), parameter, public femtoseconds
real(kind=dp), parameter, public kelvin
real(kind=dp), parameter, public angstrom
Basic container type for QM/MM.
Polarizability calculation by dfpt Initialization of the polar_env, Perturbation Hamiltonian by appli...
subroutine, public write_polarisability_tensor(force_env, motion_section, itimes, time, pos, act)
Prints the polarisability tensor to a file during MD runs.
initialization of the reftraj structure used to analyse previously generated trajectories
integer, parameter, public reftraj_eval_none
Type for storing MD parameters.
Thermal regions type: to initialize and control the temperature of different regions.
Setup of regions with different temperature.
subroutine, public print_thermal_regions_temperature(thermal_regions, itimes, time, pos, act)
print_thermal_regions_temperature
Thermostat structure: module containing thermostat available for MD.
Utilities for thermostats.
subroutine, public print_thermostats_status(thermostats, para_env, my_pos, my_act, itimes, time)
Prints status of all thermostats during an MD run.
represent a list of objects
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
represents a system: atoms, molecules, their pos,vel,...
wrapper to abstract the force evaluation of the various methods
stores all the informations relevant to an mpi environment
represent a list of objects
Simulation parameter type for molecular dynamics.