Add printout routine for virtual site constraint

This commit is contained in:
Matthias Krack 2025-12-04 14:28:51 +01:00
parent e4927a8c73
commit 37bc1a4b6f
2 changed files with 45 additions and 3 deletions

View file

@ -48,7 +48,8 @@ MODULE thermostat_utils
write_colvar_constraint,&
write_fixd_constraint,&
write_g3x3_constraint,&
write_g4x6_constraint
write_g4x6_constraint,&
write_vsite_constraint
USE molecule_list_types, ONLY: molecule_list_type
USE molecule_types, ONLY: get_molecule,&
global_constraint_type,&
@ -233,6 +234,11 @@ CONTAINS
CALL write_g4x6_constraint(gci%g4x6_list(ic), ic, iw)
END DO
END IF
IF (ASSOCIATED(gci%vsite_list)) THEN
DO ic = 1, SIZE(gci%vsite_list)
CALL write_vsite_constraint(gci%vsite_list(ic), ic, iw)
END DO
END IF
END IF
CALL cp_print_key_finished_output(iw, logger, print_section, &
"PROGRAM_RUN_INFO")

View file

@ -210,7 +210,8 @@ MODULE molecule_kind_types
write_colvar_constraint, &
write_fixd_constraint, &
write_g3x3_constraint, &
write_g4x6_constraint
write_g4x6_constraint, &
write_vsite_constraint
! Public data types
PUBLIC :: atom_type, &
@ -1236,7 +1237,7 @@ CONTAINS
"G4X6| Atom index a", g4x6_constraint%a, &
"G4X6| Atom index b", g4x6_constraint%b, &
"G4X6| Atom index c", g4x6_constraint%c, &
"G4X6| Atom index c", g4x6_constraint%d
"G4X6| Atom index d", g4x6_constraint%d
WRITE (UNIT=iw, FMT="(T2,A,T66,F15.8)") &
"G4X6| Distance (a,b) [Angstrom]", cp_unit_from_cp2k(g4x6_constraint%dab, "Angstrom"), &
"G4X6| Distance (a,c) [Angstrom]", cp_unit_from_cp2k(g4x6_constraint%dac, "Angstrom"), &
@ -1248,4 +1249,39 @@ CONTAINS
END SUBROUTINE write_g4x6_constraint
! **************************************************************************************************
!> \brief Write virtual site constraint information to output unit
!> \param vsite_constraint Data set of the vsite constraint
!> \param ivsite Virtual site constraint/restraint number (index)
!> \param iw Logical unit number of the output unit
!> \author Matthias Krack (01.12.2025)
! **************************************************************************************************
SUBROUTINE write_vsite_constraint(vsite_constraint, ivsite, iw)
TYPE(vsite_constraint_type), INTENT(IN), POINTER :: vsite_constraint
INTEGER, INTENT(IN) :: ivsite, iw
IF (iw > 0) THEN
CPASSERT(ASSOCIATED(vsite_constraint))
IF (vsite_constraint%restraint%active) THEN
WRITE (UNIT=iw, FMT="(/,T2,A,T71,I10)") &
"VSITE| Number (restraint)", ivsite
WRITE (UNIT=iw, FMT="(T2,A,T66,ES15.6)") &
"VSITE| Restraint constant k [a.u.]", vsite_constraint%restraint%k0
ELSE
WRITE (UNIT=iw, FMT="(/,T2,A,T71,I10)") &
"VSITE| Number (constraint)", ivsite
END IF
WRITE (UNIT=iw, FMT="(T2,A,T71,I10)") &
"VSITE| Atom index of virtual site", vsite_constraint%a, &
"VSITE| Atom index b", vsite_constraint%b, &
"VSITE| Atom index c", vsite_constraint%c, &
"VSITE| Atom index d", vsite_constraint%d
WRITE (UNIT=iw, FMT="(T2,A,T66,F15.8)") &
"VSITE| Distance (b,c) [Angstrom]", cp_unit_from_cp2k(vsite_constraint%wbc, "Angstrom"), &
"VSITE| Distance (d,c) [Angstrom]", cp_unit_from_cp2k(vsite_constraint%wdc, "Angstrom")
END IF
END SUBROUTINE write_vsite_constraint
END MODULE molecule_kind_types