diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3c6866b9b4..01059eb45c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1036,6 +1036,7 @@ list( motion/helium_interactions.F motion/helium_io.F motion/helium_methods.F + motion/helium_nnp.F motion/helium_sampling.F motion/helium_types.F motion/helium_worm.F diff --git a/src/f77_interface.F b/src/f77_interface.F index e35f2dd5f4..3af9988498 100644 --- a/src/f77_interface.F +++ b/src/f77_interface.F @@ -109,8 +109,7 @@ MODULE f77_interface mp_perf_env_type,& rm_mp_perf_env USE nnp_environment, ONLY: nnp_init - USE nnp_environment_types, ONLY: nnp_env_create,& - nnp_type + USE nnp_environment_types, ONLY: nnp_type USE offload_api, ONLY: offload_get_chosen_device,& offload_get_device_count,& offload_set_chosen_device @@ -851,7 +850,6 @@ CONTAINS CASE (do_nnp) ALLOCATE (nnp_env) - CALL nnp_env_create(nnp_env) CALL nnp_init(nnp_env, root_section, my_para_env, force_env_section=force_env_section, & subsys_section=subsys_section, use_motion_section=use_motion_section) CALL force_env_create(my_force_env, root_section, nnp_env=nnp_env, para_env=my_para_env, & diff --git a/src/motion/helium_interactions.F b/src/motion/helium_interactions.F index 3851c0edbd..c39c47fd52 100644 --- a/src/motion/helium_interactions.F +++ b/src/motion/helium_interactions.F @@ -12,10 +12,13 @@ ! ************************************************************************************************** MODULE helium_interactions + USE cp_log_handling, ONLY: cp_get_default_logger,& + cp_logger_type USE helium_common, ONLY: helium_eval_chain,& helium_eval_expansion,& helium_pbc,& helium_spline + USE helium_nnp, ONLY: helium_nnp_print USE helium_types, ONLY: e_id_interact,& e_id_kinetic,& e_id_potential,& @@ -26,8 +29,15 @@ MODULE helium_interactions helium_solvent_type USE input_constants, ONLY: helium_sampling_worm,& helium_solute_intpot_mwater,& + helium_solute_intpot_nnp,& helium_solute_intpot_none + USE input_section_types, ONLY: section_vals_get_subs_vals,& + section_vals_type USE kinds, ONLY: dp + USE nnp_acsf, ONLY: nnp_calc_acsf + USE nnp_environment_types, ONLY: nnp_type + USE nnp_model, ONLY: nnp_gradients,& + nnp_predict USE physcon, ONLY: angstrom,& kelvin USE pint_types, ONLY: pint_env_type @@ -334,6 +344,7 @@ CONTAINS !> \param force calculated force (if requested) !> \par History !> 2019-09 Added multiple-time striding in imag. time [cschran] +!> 2023-07-23 Modified to work with NNP solute-solvent interactions [lduran] !> \author Lukasz Walewski ! ************************************************************************************************** SUBROUTINE helium_bead_solute_e_f(pint_env, helium, helium_part_index, & @@ -386,6 +397,26 @@ CONTAINS ) END IF + CASE (helium_solute_intpot_nnp) + IF (PRESENT(force)) THEN + force(:, :) = 0.0_dp + my_force => force(qi, :) + CALL helium_intpot_nnp( & + pint_env%x(qi, :), & + helium, & + helium_r, & + energy, & + my_force & + ) + ELSE + CALL helium_intpot_nnp( & + pint_env%x(qi, :), & + helium, & + helium_r, & + energy & + ) + END IF + CASE (helium_solute_intpot_none) energy = 0.0_dp IF (PRESENT(force)) THEN @@ -629,6 +660,171 @@ CONTAINS END SUBROUTINE helium_intpot_model_water +! *************************************************************************** +!> \brief Calculate helium-solute interaction energy and forces between one +!> helium bead and the corresponding solute time slice using NNP. +!> \param solute_x solute positions ARR(3*NATOMS) +!> to global atom indices +!> \param helium only needed for helium_pbc call at the moment +!> \param helium_x helium bead position ARR(3) +!> \param energy calculated interaction energy +!> \param force (optional) calculated force +!> \date 2023-02-22 +!> \author Laura Duran +! ************************************************************************************************** + SUBROUTINE helium_intpot_nnp(solute_x, helium, helium_x, energy, force) + + REAL(KIND=dp), DIMENSION(:), INTENT(IN) :: solute_x + TYPE(helium_solvent_type), INTENT(IN) :: helium + REAL(KIND=dp), DIMENSION(3), INTENT(IN) :: helium_x + REAL(KIND=dp), INTENT(OUT) :: energy + REAL(KIND=dp), DIMENSION(:), INTENT(INOUT), & + OPTIONAL, POINTER :: force + + INTEGER :: i, i_com, ig, ind, ind_he, j, k, m + LOGICAL :: extrapolate + REAL(KIND=dp) :: rsqr, rvect(3), threshold + REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: denergydsym + REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :) :: dsymdxyz + TYPE(cp_logger_type), POINTER :: logger + TYPE(nnp_type), POINTER :: nnp + TYPE(section_vals_type), POINTER :: print_section + + NULLIFY (logger) + logger => cp_get_default_logger() + + IF (PRESENT(force)) THEN + helium%nnp%myforce(:, :, :) = 0.0_dp + END IF + + extrapolate = .FALSE. + threshold = 0.0001d0 + + !fill coord array + ig = 1 + DO i = 1, helium%nnp%n_ele + IF (helium%nnp%ele(i) == 'He') THEN + ind_he = ig + DO m = 1, 3 + helium%nnp%coord(m, ig) = helium_x(m) + END DO + ig = ig + 1 + END IF + DO j = 1, helium%solute_atoms + IF (helium%nnp%ele(i) == helium%solute_element(j)) THEN + DO m = 1, 3 + helium%nnp%coord(m, ig) = solute_x(3*(j - 1) + m) + END DO + ig = ig + 1 + END IF + END DO + END DO + + ! check for hard core condition + IF (ASSOCIATED(helium%nnp_sr_cut)) THEN + DO i = 1, helium%nnp%num_atoms + IF (i == ind_he) CYCLE + rvect(:) = helium%nnp%coord(:, i) - helium%nnp%coord(:, ind_he) + CALL helium_pbc(helium, rvect) + rsqr = rvect(1)*rvect(1) + rvect(2)*rvect(2) + rvect(3)*rvect(3) + IF (rsqr < helium%nnp_sr_cut(helium%nnp%ele_ind(i))) THEN + energy = 0.3_dp + 1.0_dp/rsqr + IF (PRESENT(force)) THEN + force = 0.0_dp + END IF + RETURN + END IF + END DO + END IF + + ! reset flag if there's an extrapolation to report: + helium%nnp%output_expol = .FALSE. + + ! calc atomic contribution to energy and force +!NOTE corresponds to nnp_force line with parallelization: +!DO i = istart, istart + mecalc - 1 + DO i = 1, helium%nnp%num_atoms + + !determine index of atom type + ind = helium%nnp%ele_ind(i) + + !reset input nodes and grads of ele(ind): + helium%nnp%arc(ind)%layer(1)%node(:) = 0.0_dp + nnp => helium%nnp ! work around wrong INTENT of nnp_calc_acsf + IF (PRESENT(force)) THEN + helium%nnp%arc(ind)%layer(1)%node_grad(:) = 0.0_dp + ALLOCATE (dsymdxyz(3, helium%nnp%arc(ind)%n_nodes(1), helium%nnp%num_atoms)) + ALLOCATE (denergydsym(helium%nnp%arc(ind)%n_nodes(1))) + dsymdxyz(:, :, :) = 0.0_dp + CALL nnp_calc_acsf(nnp, i, dsymdxyz) + ELSE + CALL nnp_calc_acsf(nnp, i) + END IF + + ! input nodes filled, perform prediction: + DO i_com = 1, helium%nnp%n_committee !loop over committee members + ! Predict energy + CALL nnp_predict(helium%nnp%arc(ind), helium%nnp, i_com) + helium%nnp%atomic_energy(i, i_com) = helium%nnp%arc(ind)%layer(helium%nnp%n_layer)%node(1) ! + helium%nnp%atom_energies(ind) + + !Gradients + IF (PRESENT(force)) THEN + + denergydsym(:) = 0.0_dp + + CALL nnp_gradients(helium%nnp%arc(ind), helium%nnp, i_com, denergydsym) + DO j = 1, helium%nnp%arc(ind)%n_nodes(1) + DO k = 1, helium%nnp%num_atoms + DO m = 1, 3 + helium%nnp%myforce(m, k, i_com) = helium%nnp%myforce(m, k, i_com) & + - denergydsym(j)*dsymdxyz(m, j, k) + END DO + END DO + END DO + + END IF + END DO ! end loop over committee members + + !deallocate memory + IF (PRESENT(force)) THEN + DEALLOCATE (denergydsym) + DEALLOCATE (dsymdxyz) + END IF + + END DO ! end loop over num_atoms + + ! calculate energy: + helium%nnp%committee_energy(:) = SUM(helium%nnp%atomic_energy, 1) + energy = SUM(helium%nnp%committee_energy)/REAL(helium%nnp%n_committee, dp) + helium%nnp%nnp_potential_energy = energy + + IF (PRESENT(force)) THEN + ! bring myforce to force array + DO j = 1, helium%nnp%num_atoms + DO k = 1, 3 + helium%nnp%committee_forces(k, j, :) = helium%nnp%myforce(k, j, :) + END DO + END DO + helium%nnp%nnp_forces(:, :) = SUM(helium%nnp%committee_forces, DIM=3)/REAL(helium%nnp%n_committee, dp) + ! project out helium force entry + ig = 1 + DO j = 1, helium%nnp%num_atoms + IF (j == ind_he) CYCLE + DO k = 1, 3 + force(3*(helium%nnp%sort(ig) - 1) + k) = helium%nnp%nnp_forces(k, j) + END DO + ig = ig + 1 + END DO + END IF + + ! print properties if requested + print_section => section_vals_get_subs_vals(helium%nnp%nnp_input, "PRINT") + CALL helium_nnp_print(helium%nnp, print_section, ind_he) + + RETURN + + END SUBROUTINE helium_intpot_nnp + ! *************************************************************************** !> \brief Helium-helium pair interaction potential. !> \param r ... diff --git a/src/motion/helium_io.F b/src/motion/helium_io.F index f72b060432..609cf22635 100644 --- a/src/motion/helium_io.F +++ b/src/motion/helium_io.F @@ -41,7 +41,7 @@ MODULE helium_io USE input_constants, ONLY: & fmt_id_pdb, fmt_id_xyz, helium_cell_shape_cube, helium_cell_shape_octahedron, & helium_sampling_ceperley, helium_sampling_worm, helium_solute_intpot_mwater, & - helium_solute_intpot_none, perm_cycle, perm_plain + helium_solute_intpot_nnp, helium_solute_intpot_none, perm_cycle, perm_plain USE input_section_types, ONLY: section_vals_get_subs_vals,& section_vals_type,& section_vals_val_get @@ -179,6 +179,8 @@ CONTAINS !> \brief Write helium parameters to the output unit !> \param helium ... !> \date 2009-06-03 +!> \par History +!> 2023-07-23 Modified to work with NNP solute-solvent interactions [lduran] !> \author Lukasz Walewski ! ************************************************************************************************** SUBROUTINE helium_write_setup(helium) @@ -364,6 +366,8 @@ CONTAINS WRITE (stmp1, *) "NONE" CASE (helium_solute_intpot_mwater) WRITE (stmp1, *) "MWATER" + CASE (helium_solute_intpot_nnp) + WRITE (stmp1, *) "NNP" CASE DEFAULT WRITE (stmp1, *) "***UNKNOWN***" END SELECT diff --git a/src/motion/helium_methods.F b/src/motion/helium_methods.F index 1f46a38439..654626f164 100644 --- a/src/motion/helium_methods.F +++ b/src/motion/helium_methods.F @@ -19,8 +19,12 @@ MODULE helium_methods get_cell USE cp_files, ONLY: close_file,& open_file - USE cp_log_handling, ONLY: cp_get_default_logger,& - cp_logger_type + USE cp_log_handling, ONLY: cp_add_default_logger,& + cp_get_default_logger,& + cp_logger_create,& + cp_logger_release,& + cp_logger_type,& + cp_rm_default_logger USE cp_output_handling, ONLY: cp_printkey_is_on USE cp_subsys_types, ONLY: cp_subsys_get,& cp_subsys_type @@ -33,6 +37,7 @@ MODULE helium_methods USE helium_interactions, ONLY: helium_vij USE helium_io, ONLY: helium_write_line,& helium_write_setup + USE helium_nnp, ONLY: helium_init_nnp USE helium_sampling, ONLY: helium_sample USE helium_types, ONLY: helium_solvent_p_type,& helium_solvent_type,& @@ -46,6 +51,7 @@ MODULE helium_methods helium_cell_shape_octahedron,& helium_sampling_ceperley,& helium_sampling_worm,& + helium_solute_intpot_nnp,& helium_solute_intpot_none USE input_section_types, ONLY: section_vals_get,& section_vals_get_subs_vals,& @@ -58,7 +64,8 @@ MODULE helium_methods max_line_length USE mathconstants, ONLY: pi,& twopi - USE message_passing, ONLY: mp_comm_type + USE message_passing, ONLY: mp_para_env_type + USE nnp_environment_types, ONLY: nnp_env_release USE parallel_rng_types, ONLY: GAUSSIAN,& UNIFORM,& rng_stream_p_type,& @@ -99,6 +106,7 @@ CONTAINS !> \param solute ... !> \par History !> 2016-07-14 Modified to work with independent helium_env [cschran] +!> 2023-07-23 Modified to work with NNP solute-solvent interactions [lduran] !> \author hforbert ! ************************************************************************************************** SUBROUTINE helium_create(helium_env, input, solute) @@ -118,9 +126,9 @@ CONTAINS REAL(KIND=dp) :: cgeof, dx, he_mass, mHe, rtmp, T, tau, & tcheck, x1, x_spline REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: pot_transfer - TYPE(cp_logger_type), POINTER :: logger - TYPE(mp_comm_type) :: new_comm - TYPE(section_vals_type), POINTER :: helium_section, input_worm + TYPE(cp_logger_type), POINTER :: logger, tmplogger + TYPE(mp_para_env_type), POINTER :: new_comm + TYPE(section_vals_type), POINTER :: helium_section, input_worm, nnp_section CALL timeset(routineN, handle) @@ -163,17 +171,20 @@ CONTAINS ELSE color_sub = 1 END IF + ALLOCATE (new_comm) CALL new_comm%from_split(logger%para_env, color_sub) ! release new_comm for processors without helium_env IF (mepos == 0) THEN CALL new_comm%free() + DEALLOCATE (new_comm) + NULLIFY (new_comm) END IF NULLIFY (helium_env) IF (mepos .GT. 0) THEN ALLOCATE (helium_env(mepos)) DO k = 1, mepos - helium_env(k)%comm = new_comm + helium_env(k)%comm => new_comm NULLIFY (helium_env(k)%env_all) helium_env(k)%env_all => env_all ALLOCATE (helium_env(k)%helium) @@ -338,24 +349,24 @@ CONTAINS SELECT CASE (helium_env(k)%helium%cell_shape) CASE (helium_cell_shape_octahedron) - helium_env(k)%helium%cell_m(1, 1) = helium_env(k)%helium%cell_size - helium_env(k)%helium%cell_m(2, 1) = 0.0_dp - helium_env(k)%helium%cell_m(3, 1) = 0.0_dp - helium_env(k)%helium%cell_m(1, 2) = 0.0_dp - helium_env(k)%helium%cell_m(2, 2) = helium_env(k)%helium%cell_size - helium_env(k)%helium%cell_m(3, 2) = 0.0_dp - helium_env(k)%helium%cell_m(1, 3) = helium_env(k)%helium%cell_size/2.0_dp - helium_env(k)%helium%cell_m(2, 3) = helium_env(k)%helium%cell_size/2.0_dp - helium_env(k)%helium%cell_m(3, 3) = helium_env(k)%helium%cell_size/2.0_dp - helium_env(k)%helium%cell_m_inv(1, 1) = 1.0_dp/helium_env(k)%helium%cell_size - helium_env(k)%helium%cell_m_inv(2, 1) = 0.0_dp - helium_env(k)%helium%cell_m_inv(3, 1) = 0.0_dp - helium_env(k)%helium%cell_m_inv(1, 2) = 0.0_dp - helium_env(k)%helium%cell_m_inv(2, 2) = 1.0_dp/helium_env(k)%helium%cell_size - helium_env(k)%helium%cell_m_inv(3, 2) = 0.0_dp - helium_env(k)%helium%cell_m_inv(1, 3) = -1.0_dp/helium_env(k)%helium%cell_size - helium_env(k)%helium%cell_m_inv(2, 3) = -1.0_dp/helium_env(k)%helium%cell_size - helium_env(k)%helium%cell_m_inv(3, 3) = 2.0_dp/helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(1, 1) = -0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(2, 1) = 0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(3, 1) = 0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(1, 2) = 0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(2, 2) = -0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(3, 2) = 0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(1, 3) = 0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(2, 3) = 0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m(3, 3) = -0.5_dp*helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m_inv(1, 1) = 0.0_dp + helium_env(k)%helium%cell_m_inv(2, 1) = 1.0_dp/helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m_inv(3, 1) = 1.0_dp/helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m_inv(1, 2) = 1.0_dp/helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m_inv(2, 2) = 0.0_dp + helium_env(k)%helium%cell_m_inv(3, 2) = 1.0_dp/helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m_inv(1, 3) = 1.0_dp/helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m_inv(2, 3) = 1.0_dp/helium_env(k)%helium%cell_size + helium_env(k)%helium%cell_m_inv(3, 3) = 0.0_dp CASE (helium_cell_shape_cube) helium_env(k)%helium%cell_m(1, 1) = helium_env(k)%helium%cell_size @@ -760,6 +771,21 @@ CONTAINS ! set the interaction potential type CALL section_vals_val_get(helium_section, "SOLUTE_INTERACTION", & i_val=helium_env(k)%helium%solute_interaction) + IF (helium_env(k)%helium%solute_interaction .EQ. helium_solute_intpot_nnp) THEN + IF (k == 1) THEN + NULLIFY (nnp_section) + nnp_section => section_vals_get_subs_vals(helium_section, "NNP") + CALL section_vals_get(nnp_section, explicit=explicit) + msg_str = "NNP section not explicitly stated. Using default file names." + IF (.NOT. explicit) CPWARN(msg_str) + END IF + ALLOCATE (helium_env(k)%helium%nnp) + CALL cp_logger_create(tmplogger, para_env=helium_env(k)%comm, template_logger=logger) + CALL cp_add_default_logger(tmplogger) + CALL helium_init_nnp(helium_env(k)%helium, helium_env(k)%helium%nnp, nnp_section) + CALL cp_rm_default_logger() + CALL cp_logger_release(tmplogger) + END IF IF (helium_env(k)%helium%solute_interaction .EQ. helium_solute_intpot_none) THEN WRITE (msg_str, '(A,I0,A)') & "Solute found but no helium-solute interaction selected "// & @@ -835,6 +861,7 @@ CONTAINS DO k = 1, SIZE(helium_env) IF (k .EQ. 1) THEN CALL helium_env(k)%comm%free() + DEALLOCATE (helium_env(k)%comm) DEALLOCATE (helium_env(k)%env_all) END IF NULLIFY (helium_env(k)%env_all) @@ -990,6 +1017,17 @@ CONTAINS NULLIFY (helium_env(k)%helium%ename) END IF + ! NNP interaction + IF (ASSOCIATED(helium_env(k)%helium%nnp)) THEN + CALL nnp_env_release(helium_env(k)%helium%nnp) + DEALLOCATE (helium_env(k)%helium%nnp) + NULLIFY (helium_env(k)%helium%nnp) + END IF + IF (ASSOCIATED(helium_env(k)%helium%nnp_sr_cut)) THEN + DEALLOCATE (helium_env(k)%helium%nnp_sr_cut) + NULLIFY (helium_env(k)%helium%nnp_sr_cut) + END IF + DEALLOCATE (helium_env(k)%helium) END DO diff --git a/src/motion/helium_nnp.F b/src/motion/helium_nnp.F new file mode 100644 index 0000000000..6abcea69ca --- /dev/null +++ b/src/motion/helium_nnp.F @@ -0,0 +1,334 @@ +!--------------------------------------------------------------------------------------------------! +! CP2K: A general program to perform molecular dynamics simulations ! +! Copyright 2000-2023 CP2K developers group ! +! ! +! SPDX-License-Identifier: GPL-2.0-or-later ! +!--------------------------------------------------------------------------------------------------! + +! ************************************************************************************************** +!> \brief Methods dealing with Neural Network interaction potential +!> \author Laura Duran +!> \date 2023-02-17 +! ************************************************************************************************** +MODULE helium_nnp + + USE bibliography, ONLY: Behler2007,& + Behler2011,& + Schran2020a,& + Schran2020b,& + cite_reference + USE cell_methods, ONLY: cell_create + USE cell_types, ONLY: cell_release,& + cell_type,& + pbc + USE cp_log_handling, ONLY: cp_get_default_logger,& + cp_logger_type + USE cp_output_handling, ONLY: cp_p_file,& + cp_print_key_finished_output,& + cp_print_key_should_output,& + cp_print_key_unit_nr + USE cp_units, ONLY: cp_unit_from_cp2k + USE helium_types, ONLY: helium_solvent_type + USE input_section_types, ONLY: section_vals_get,& + section_vals_get_subs_vals,& + section_vals_type,& + section_vals_val_get + USE kinds, ONLY: default_path_length,& + default_string_length,& + dp + USE nnp_environment, ONLY: nnp_init_model + USE nnp_environment_types, ONLY: nnp_env_get,& + nnp_env_set,& + nnp_type + USE periodic_table, ONLY: get_ptable_info + USE physcon, ONLY: angstrom +#include "../base/base_uses.f90" + + IMPLICIT NONE + + PRIVATE + + LOGICAL, PARAMETER, PRIVATE :: debug_this_module = .TRUE. + CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'helium_nnp' + + PUBLIC :: helium_init_nnp, & + helium_nnp_print + +CONTAINS + +! *************************************************************************** +!> \brief Read and initialize all the information for neural network potentials +!> \param helium ... +!> \param nnp ... +!> \param input ... +!> \date 2023-02-21 +!> \author lduran +! ************************************************************************************************** + SUBROUTINE helium_init_nnp(helium, nnp, input) + TYPE(helium_solvent_type), INTENT(INOUT) :: helium + TYPE(nnp_type), POINTER :: nnp + TYPE(section_vals_type), POINTER :: input + + CHARACTER(len=default_path_length) :: msg_str + CHARACTER(len=default_string_length) :: elem + INTEGER :: i, ig, is, j + INTEGER, DIMENSION(3) :: periodicity + LOGICAL :: found + TYPE(cell_type), POINTER :: he_cell + TYPE(cp_logger_type), POINTER :: logger + TYPE(section_vals_type), POINTER :: sr_cutoff_section + + CALL cite_reference(Behler2007) + CALL cite_reference(Behler2011) + CALL cite_reference(Schran2020a) + CALL cite_reference(Schran2020b) + + NULLIFY (logger) + logger => cp_get_default_logger() + + CALL nnp_env_set(nnp_env=nnp, nnp_input=input) + + nnp%num_atoms = helium%solute_atoms + 1 + + CALL nnp_init_model(nnp, "HELIUM NNP") + + periodicity = 0 + IF (helium%periodic) periodicity = 1 + NULLIFY (he_cell) + CALL cell_create(he_cell, hmat=helium%cell_m, & + periodic=periodicity, tag="HELIUM NNP") + CALL nnp_env_set(nnp, cell=he_cell) + CALL cell_release(he_cell) + + ! Set up arrays for calculation: + ALLOCATE (nnp%ele_ind(nnp%num_atoms)) + ALLOCATE (nnp%nuc_atoms(nnp%num_atoms)) + ALLOCATE (nnp%coord(3, nnp%num_atoms)) + ALLOCATE (nnp%nnp_forces(3, nnp%num_atoms)) + ALLOCATE (nnp%atoms(nnp%num_atoms)) + ALLOCATE (nnp%sort(nnp%num_atoms - 1)) + + !fill arrays, assume that order will not change during simulation + ig = 1 + is = 1 + DO i = 1, nnp%n_ele + IF (nnp%ele(i) == 'He') THEN + nnp%atoms(ig) = 'He' + CALL get_ptable_info(nnp%atoms(ig), number=nnp%nuc_atoms(ig)) + nnp%ele_ind(ig) = i + ig = ig + 1 + END IF + DO j = 1, helium%solute_atoms + IF (nnp%ele(i) == helium%solute_element(j)) THEN + nnp%atoms(ig) = nnp%ele(i) + CALL get_ptable_info(nnp%atoms(ig), number=nnp%nuc_atoms(ig)) + nnp%ele_ind(ig) = i + nnp%sort(is) = j + ig = ig + 1 + is = is + 1 + END IF + END DO + END DO + + ALLOCATE (helium%nnp_sr_cut(nnp%n_ele)) + helium%nnp_sr_cut = 0.0_dp + + sr_cutoff_section => section_vals_get_subs_vals(nnp%nnp_input, "SR_CUTOFF") + CALL section_vals_get(sr_cutoff_section, n_repetition=is) + DO i = 1, is + CALL section_vals_val_get(sr_cutoff_section, "ELEMENT", c_val=elem, i_rep_section=i) + found = .FALSE. + DO ig = 1, nnp%n_ele + IF (TRIM(nnp%ele(ig)) == TRIM(elem)) THEN + found = .TRUE. + CALL section_vals_val_get(sr_cutoff_section, "RADIUS", r_val=helium%nnp_sr_cut(ig), & + i_rep_section=i) + END IF + END DO + IF (.NOT. found) THEN + msg_str = "SR_CUTOFF for element "//TRIM(elem)//" defined but not found in NNP" + CPWARN(msg_str) + END IF + END DO + helium%nnp_sr_cut(:) = helium%nnp_sr_cut(:)**2 + + RETURN + + END SUBROUTINE helium_init_nnp + +! ************************************************************************************************** +!> \brief Print properties according to the requests in input file +!> \param nnp ... +!> \param print_section ... +!> \param ind_he ... +!> \date 2023-07-31 +!> \author Laura Duran +! ************************************************************************************************** + SUBROUTINE helium_nnp_print(nnp, print_section, ind_he) + TYPE(nnp_type), INTENT(INOUT) :: nnp + TYPE(section_vals_type), INTENT(IN), POINTER :: print_section + INTEGER, INTENT(IN) :: ind_he + + INTEGER :: unit_nr + LOGICAL :: file_is_new + TYPE(cp_logger_type), POINTER :: logger + TYPE(section_vals_type), POINTER :: print_key + + NULLIFY (logger, print_key) + logger => cp_get_default_logger() + + print_key => section_vals_get_subs_vals(print_section, "ENERGIES") + IF (BTEST(cp_print_key_should_output(logger%iter_info, print_key), cp_p_file)) THEN + unit_nr = cp_print_key_unit_nr(logger, print_key, extension=".data", & + middle_name="helium-nnp-energies", is_new_file=file_is_new) + IF (unit_nr > 0) CALL helium_nnp_print_energies(nnp, unit_nr, file_is_new) + CALL cp_print_key_finished_output(unit_nr, logger, print_key) + END IF + + print_key => section_vals_get_subs_vals(print_section, "FORCES_SIGMA") + IF (BTEST(cp_print_key_should_output(logger%iter_info, print_key), cp_p_file)) THEN + unit_nr = cp_print_key_unit_nr(logger, print_key, extension=".data", & + middle_name="helium-nnp-forces-std", is_new_file=file_is_new) + IF (unit_nr > 0) CALL helium_nnp_print_force_sigma(nnp, unit_nr, file_is_new) + CALL cp_print_key_finished_output(unit_nr, logger, print_key) + END IF + + CALL logger%para_env%sum(nnp%output_expol) + IF (nnp%output_expol) THEN + print_key => section_vals_get_subs_vals(print_section, "EXTRAPOLATION") + IF (BTEST(cp_print_key_should_output(logger%iter_info, print_key), cp_p_file)) THEN + unit_nr = cp_print_key_unit_nr(logger, print_key, extension=".xyz", & + middle_name="-NNP-He-extrapolation") + IF (unit_nr > 0) CALL helium_nnp_print_expol(nnp, unit_nr, ind_he) + CALL cp_print_key_finished_output(unit_nr, logger, print_key) + END IF + END IF + + END SUBROUTINE helium_nnp_print + +! ************************************************************************************************** +!> \brief Print NNP energies and standard deviation sigma +!> \param nnp ... +!> \param unit_nr ... +!> \param file_is_new ... +!> \date 2023-07-31 +!> \author Laura Duran +! ************************************************************************************************** + SUBROUTINE helium_nnp_print_energies(nnp, unit_nr, file_is_new) + TYPE(nnp_type), INTENT(INOUT) :: nnp + INTEGER, INTENT(IN) :: unit_nr + LOGICAL, INTENT(IN) :: file_is_new + + CHARACTER(len=default_path_length) :: fmt_string + INTEGER :: i + REAL(KIND=dp) :: std + + IF (file_is_new) THEN + WRITE (unit_nr, "(A1,1X,A20)", ADVANCE='no') "#", "NNP Average [a.u.]," + WRITE (unit_nr, "(A20)", ADVANCE='no') "NNP sigma [a.u.]" + DO i = 1, nnp%n_committee + WRITE (unit_nr, "(A17,I3)", ADVANCE='no') "NNP", i + END DO + WRITE (unit_nr, "(A)") "" + END IF + + fmt_string = "(2X,2(F20.9))" + WRITE (fmt_string, "(A,I3,A)") "(2X", nnp%n_committee + 2, "(F20.9))" + std = SUM((SUM(nnp%atomic_energy, 1) - nnp%nnp_potential_energy)**2) + std = std/REAL(nnp%n_committee, dp) + std = SQRT(std) + WRITE (unit_nr, fmt_string) nnp%nnp_potential_energy, std, SUM(nnp%atomic_energy, 1) + + END SUBROUTINE helium_nnp_print_energies + +! ************************************************************************************************** +!> \brief Print standard deviation sigma of NNP forces +!> \param nnp ... +!> \param unit_nr ... +!> \param file_is_new ... +!> \date 2023-07-31 +!> \author Laura Duran +! ************************************************************************************************** + SUBROUTINE helium_nnp_print_force_sigma(nnp, unit_nr, file_is_new) + TYPE(nnp_type), INTENT(INOUT) :: nnp + INTEGER, INTENT(IN) :: unit_nr + LOGICAL, INTENT(IN) :: file_is_new + + INTEGER :: i, ig, j + REAL(KIND=dp), DIMENSION(3) :: var + + IF (unit_nr > 0) THEN + IF (file_is_new) THEN + WRITE (unit_nr, "(A,1X,A)") "# NNP sigma of forces [a.u.] x, y, z coordinates" + END IF + + ig = 1 + DO i = 1, nnp%num_atoms + IF (nnp%ele(i) == 'He') THEN + var = 0.0_dp + DO j = 1, nnp%n_committee + var = var + (nnp%committee_forces(:, i, j) - nnp%nnp_forces(:, i))**2 + END DO + WRITE (unit_nr, "(A4,1X,3E20.10)") nnp%ele(i), var + END IF + ig = ig + 1 + END DO + END IF + + END SUBROUTINE helium_nnp_print_force_sigma + +! ************************************************************************************************** +!> \brief Print structures with extrapolation warning +!> \param nnp ... +!> \param unit_nr ... +!> \param ind_he ... +!> \date 2023-10-11 +!> \author Harald Forbert (harald.forbert@rub.de) +! ************************************************************************************************** + SUBROUTINE helium_nnp_print_expol(nnp, unit_nr, ind_he) + TYPE(nnp_type), INTENT(INOUT) :: nnp + INTEGER, INTENT(IN) :: unit_nr, ind_he + + CHARACTER(len=default_path_length) :: fmt_string + INTEGER :: i + REAL(KIND=dp) :: mass, unit_conv + REAL(KIND=dp), DIMENSION(3) :: com + TYPE(cell_type), POINTER :: cell + + NULLIFY (cell) + CALL nnp_env_get(nnp_env=nnp, cell=cell) + + nnp%expol = nnp%expol + 1 + WRITE (unit_nr, *) nnp%num_atoms + WRITE (unit_nr, "(A,1X,I6)") "HELIUM-NNP extrapolation point N =", nnp%expol + + ! move to COM of solute and wrap the box + ! coord not needed afterwards, therefore manipulation ok + com = 0.0_dp + mass = 0.0_dp + DO i = 1, nnp%num_atoms + IF (i == ind_he) CYCLE + CALL get_ptable_info(nnp%atoms(i), amass=unit_conv) + com(:) = com(:) + nnp%coord(:, i)*unit_conv + mass = mass + unit_conv + END DO + com(:) = com(:)/mass + + DO i = 1, nnp%num_atoms + nnp%coord(:, i) = nnp%coord(:, i) - com(:) + nnp%coord(:, i) = pbc(nnp%coord(:, i), cell) + END DO + + unit_conv = cp_unit_from_cp2k(1.0_dp, TRIM("angstrom")) + fmt_string = "(A4,1X,3F20.10)" + DO i = 1, nnp%num_atoms + WRITE (unit_nr, fmt_string) & + nnp%atoms(i), & + nnp%coord(1, i)*unit_conv, & + nnp%coord(2, i)*unit_conv, & + nnp%coord(3, i)*unit_conv + END DO + + END SUBROUTINE helium_nnp_print_expol + +END MODULE helium_nnp diff --git a/src/motion/helium_sampling.F b/src/motion/helium_sampling.F index da09c1593b..8a16283b3a 100644 --- a/src/motion/helium_sampling.F +++ b/src/motion/helium_sampling.F @@ -13,8 +13,12 @@ MODULE helium_sampling USE cp_external_control, ONLY: external_control - USE cp_log_handling, ONLY: cp_get_default_logger,& - cp_logger_type + USE cp_log_handling, ONLY: cp_add_default_logger,& + cp_get_default_logger,& + cp_logger_create,& + cp_logger_release,& + cp_logger_type,& + cp_rm_default_logger USE cp_output_handling, ONLY: cp_add_iter_level,& cp_iterate,& cp_rm_iter_level @@ -188,7 +192,12 @@ CONTAINS TYPE(cp_logger_type), POINTER :: logger NULLIFY (logger) - logger => cp_get_default_logger() + IF (SIZE(helium_env) < 1) THEN + logger => cp_get_default_logger() + ELSE + CALL cp_logger_create(logger, para_env=helium_env(1)%comm, template_logger=cp_get_default_logger()) + CALL cp_add_default_logger(logger) + END IF DO k = 1, SIZE(helium_env) @@ -390,6 +399,11 @@ CONTAINS END IF END IF + IF (SIZE(helium_env) > 0) THEN + CALL cp_rm_default_logger() + CALL cp_logger_release(logger) + END IF + RETURN END SUBROUTINE helium_sample diff --git a/src/motion/helium_types.F b/src/motion/helium_types.F index 52ea5de4bc..b1ee42f6bf 100644 --- a/src/motion/helium_types.F +++ b/src/motion/helium_types.F @@ -21,7 +21,8 @@ MODULE helium_types USE kinds, ONLY: default_string_length,& dp,& int_8 - USE message_passing, ONLY: mp_comm_type + USE message_passing, ONLY: mp_para_env_type + USE nnp_environment_types, ONLY: nnp_type USE parallel_rng_types, ONLY: rng_stream_type USE splines_types, ONLY: spline_data_type #include "../base/base_uses.f90" @@ -274,6 +275,9 @@ MODULE helium_types LOGICAL :: interaction_pot_scan = .FALSE.!< whether to perform solute-helium interaction scan + TYPE(nnp_type), POINTER :: nnp => NULL() !< neural network potential + REAL(KIND=dp), DIMENSION(:), POINTER :: nnp_sr_cut => NULL() !< hard core cutoff in addition to the nnp + ! temporary arrays for optimization ! INTEGER, DIMENSION(:), POINTER :: itmp_atoms_1d => NULL()!< DIM(atoms) - same as permutation @@ -295,7 +299,7 @@ MODULE helium_types ! *************************************************************************** TYPE helium_solvent_p_type TYPE(helium_solvent_type), POINTER :: helium => NULL() - TYPE(mp_comm_type) :: comm = mp_comm_type() + TYPE(mp_para_env_type), POINTER :: comm => NULL() INTEGER, DIMENSION(:), POINTER :: env_all => NULL() END TYPE helium_solvent_p_type diff --git a/src/motion/pint_methods.F b/src/motion/pint_methods.F index e5aee78d3f..7351598aed 100644 --- a/src/motion/pint_methods.F +++ b/src/motion/pint_methods.F @@ -623,10 +623,12 @@ CONTAINS pint_env%beadwise_constraints = .FALSE. CALL section_vals_val_get(constraint_section, "PIMD_BEADWISE_CONSTRAINT", & l_val=pint_env%beadwise_constraints) - IF (pint_env%beadwise_constraints) THEN - CALL pint_write_line("Using beadwise constraints") - ELSE - CALL pint_write_line("Using centroid constraints") + IF (pint_env%simpar%constraint) THEN + IF (pint_env%beadwise_constraints) THEN + CALL pint_write_line("Using beadwise constraints") + ELSE + CALL pint_write_line("Using centroid constraints") + END IF END IF IF (explicit) THEN diff --git a/src/nnp_acsf.F b/src/nnp_acsf.F index ff4f5eafe1..cd74f1176e 100644 --- a/src/nnp_acsf.F +++ b/src/nnp_acsf.F @@ -1159,7 +1159,7 @@ CONTAINS rad = 0 DO s = 1, nnp%n_rad(i) IF (nnp%rad(i)%ele(s) == nnp%rad(i)%symfgrp(j)%ele(1)) THEN - IF (ABS(nnp%rad(i)%funccut(s) - nnp%rad(i)%symfgrp(j)%cutoff) < 1.0e-7_dp) THEN + IF (ABS(nnp%rad(i)%funccut(s) - nnp%rad(i)%symfgrp(j)%cutoff) <= 1.0e-5_dp) THEN rad = rad + 1 nnp%rad(i)%symfgrp(j)%symf(rad) = s END IF @@ -1174,7 +1174,7 @@ CONTAINS nnp%ang(i)%ele2(s) == nnp%ang(i)%symfgrp(j)%ele(2)) .OR. & (nnp%ang(i)%ele1(s) == nnp%ang(i)%symfgrp(j)%ele(2) .AND. & nnp%ang(i)%ele2(s) == nnp%ang(i)%symfgrp(j)%ele(1))) THEN - IF (ABS(nnp%ang(i)%funccut(s) - nnp%ang(i)%symfgrp(j)%cutoff) < 1.0e-7_dp) THEN + IF (ABS(nnp%ang(i)%funccut(s) - nnp%ang(i)%symfgrp(j)%cutoff) <= 1.0e-5_dp) THEN ang = ang + 1 nnp%ang(i)%symfgrp(j)%symf(ang) = s END IF @@ -1189,12 +1189,14 @@ CONTAINS !> \brief Write symmetry function information !> \param nnp ... !> \param para_env ... +!> \param printtag ... !> \date 2020-10-10 !> \author Christoph Schran (christoph.schran@rub.de) ! ************************************************************************************************** - SUBROUTINE nnp_write_acsf(nnp, para_env) + SUBROUTINE nnp_write_acsf(nnp, para_env, printtag) TYPE(nnp_type), INTENT(INOUT) :: nnp TYPE(mp_para_env_type), POINTER :: para_env + CHARACTER(LEN=*), INTENT(IN) :: printtag CHARACTER(len=default_string_length) :: my_label INTEGER :: i, j, unit_nr @@ -1203,7 +1205,7 @@ CONTAINS NULLIFY (logger) logger => cp_get_default_logger() - my_label = "NNP| " + my_label = TRIM(printtag)//"| " IF (para_env%is_source()) THEN unit_nr = cp_logger_get_default_unit_nr(logger) WRITE (unit_nr, '(1X,A,1X,10(I2,1X))') TRIM(my_label)//" Activation functions:", nnp%actfnct(:) @@ -1225,6 +1227,8 @@ CONTAINS END DO END IF + RETURN + END SUBROUTINE nnp_write_acsf ! ************************************************************************************************** diff --git a/src/nnp_environment.F b/src/nnp_environment.F index 38b5734d60..12d0244a70 100644 --- a/src/nnp_environment.F +++ b/src/nnp_environment.F @@ -72,6 +72,7 @@ MODULE nnp_environment CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'nnp_environment' PUBLIC :: nnp_init + PUBLIC :: nnp_init_model CONTAINS @@ -229,7 +230,7 @@ CONTAINS CALL distribution_1d_release(local_particles) CALL distribution_1d_release(local_molecules) - CALL nnp_init_model(nnp_env=nnp_env) + CALL nnp_init_model(nnp_env=nnp_env, printtag="NNP") CALL timestop(handle) @@ -238,11 +239,13 @@ CONTAINS ! ************************************************************************************************** !> \brief Initialize the Neural Network Potential !> \param nnp_env ... +!> \param printtag ... !> \date 2020-10-10 !> \author Christoph Schran (christoph.schran@rub.de) ! ************************************************************************************************** - SUBROUTINE nnp_init_model(nnp_env) + SUBROUTINE nnp_init_model(nnp_env, printtag) TYPE(nnp_type), INTENT(INOUT), POINTER :: nnp_env + CHARACTER(LEN=*), INTENT(IN) :: printtag CHARACTER(len=*), PARAMETER :: routineN = 'nnp_init_model' INTEGER, PARAMETER :: def_str_len = 256, & @@ -274,7 +277,7 @@ CONTAINS IF (logger%para_env%is_source()) THEN unit_nr = cp_logger_get_default_unit_nr(logger) WRITE (unit_nr, *) "" - WRITE (unit_nr, *) "NNP| Neural Network Potential Force Environment" + WRITE (unit_nr, *) TRIM(printtag)//"| Neural Network Potential Force Environment" END IF model_section => section_vals_get_subs_vals(nnp_env%nnp_input, "MODEL") @@ -300,7 +303,7 @@ CONTAINS IF (logger%para_env%is_source()) THEN unit_nr = cp_logger_get_default_unit_nr(logger) - WRITE (unit_nr, *) "NNP| Reading NNP input from file: ", TRIM(file_name) + WRITE (unit_nr, *) TRIM(printtag)//"| Reading NNP input from file: ", TRIM(file_name) END IF CALL parser_search_string(parser, "number_of_elements", .TRUE., found, line, & @@ -308,7 +311,8 @@ CONTAINS IF (found) THEN READ (line, *) dummy, nnp_env%n_ele ELSE - CPABORT("NNP| number of elements missing in NNP_INPUT_FILE") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| number of elements missing in NNP_INPUT_FILE") END IF CALL parser_search_string(parser, "scale_symmetry_functions_sigma", .TRUE., found, & @@ -353,7 +357,8 @@ CONTAINS IF (found) THEN READ (line, *) dummy, nnp_env%cut_type ELSE - CPABORT("NNP| no cutoff type specified in NNP_INPUT_FILE") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| no cutoff type specified in NNP_INPUT_FILE") END IF CALL parser_search_string(parser, "global_hidden_layers_short", .TRUE., found, line, & @@ -361,7 +366,8 @@ CONTAINS IF (found) THEN READ (line, *) dummy, nnp_env%n_hlayer ELSE - CPABORT("NNP| number of hidden layers missing in NNP_INPUT_FILE") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| number of hidden layers missing in NNP_INPUT_FILE") END IF nnp_env%n_layer = nnp_env%n_hlayer + 2 @@ -395,7 +401,8 @@ CONTAINS EXIT END IF ELSE - CPABORT("NNP| elements not specified in NNP_INPUT_FILE") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| elements not specified in NNP_INPUT_FILE") END IF END DO @@ -417,7 +424,8 @@ CONTAINS END DO IF (i == nele) EXIT ELSE - CPABORT("NNP| atom energies are not specified") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| atom energies are not specified") END IF END DO END IF @@ -427,7 +435,8 @@ CONTAINS IF (found) THEN READ (line, *) dummy, nnp_env%n_hnodes(:) ELSE - CPABORT("NNP| global_nodes_short not specified in NNP_INPUT_FILE") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "NNP| global_nodes_short not specified in NNP_INPUT_FILE") END IF CALL parser_search_string(parser, "global_activation_short", .TRUE., found, line, & @@ -435,7 +444,8 @@ CONTAINS IF (found) THEN READ (line, *) dummy, cactfnct(:) ELSE - CPABORT("NNP| global_activation_short not specified in NNP_INPUT_FILE") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| global_activation_short not specified in NNP_INPUT_FILE") END IF DO i = 1, nnp_env%n_hlayer + 1 @@ -459,7 +469,8 @@ CONTAINS CASE ("h") nnp_env%actfnct(i) = nnp_actfnct_quad CASE DEFAULT - CPABORT("NNP| Activation function unkown") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| Activation function unkown") END SELECT END DO @@ -483,13 +494,15 @@ CONTAINS ELSE IF (symfnct_type .EQ. 3) THEN nnp_env%n_ang(i) = nnp_env%n_ang(i) + 1 ELSE - CPABORT("NNP| Symmetry function type not supported") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| Symmetry function type not supported") END IF END IF END DO first = .FALSE. ELSE - IF (first) CPABORT("NNP| no symfunction_short specified in NNP_INPUT_FILE") + IF (first) CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| no symfunction_short specified in NNP_INPUT_FILE") ! no additional symfnct found EXIT END IF @@ -586,13 +599,15 @@ CONTAINS nnp_env%max_cut = nnp_env%ang(i)%funccut(nnp_env%n_ang(i)) END IF ELSE - CPABORT("NNP| Symmetry function type not supported") + CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| Symmetry function type not supported") END IF END IF END DO first = .FALSE. ELSE - IF (first) CPABORT("NNP| no symfunction_short specified in NNP_INPUT_FILE") + IF (first) CALL cp_abort(__LOCATION__, TRIM(printtag)// & + "| no symfunction_short specified in NNP_INPUT_FILE") ! no additional symfnct found EXIT END IF @@ -621,13 +636,13 @@ CONTAINS ! sort symmetry functions and output information CALL nnp_sort_acsf(nnp_env) - CALL nnp_write_acsf(nnp_env, logger%para_env) - CALL nnp_write_arc(nnp_env, logger%para_env) + CALL nnp_write_acsf(nnp_env, logger%para_env, printtag) + CALL nnp_write_arc(nnp_env, logger%para_env, printtag) ! read scaling information from file IF (nnp_env%scale_acsf .OR. nnp_env%center_acsf .OR. nnp_env%scale_sigma_acsf) THEN IF (logger%para_env%is_source()) THEN - WRITE (unit_nr, *) "NNP| Reading scaling information from file: ", TRIM(file_name) + WRITE (unit_nr, *) TRIM(printtag)//"| Reading scaling information from file: ", TRIM(file_name) END IF CALL section_vals_val_get(nnp_env%nnp_input, "SCALE_FILE_NAME", & c_val=file_name) @@ -696,12 +711,12 @@ CONTAINS DO i_com = 1, nnp_env%n_committee CALL section_vals_val_get(model_section, "WEIGHTS", c_val=base_name, i_rep_section=i_com) IF (logger%para_env%is_source()) THEN - WRITE (unit_nr, *) "NNP| Initializing weights for model: ", i_com + WRITE (unit_nr, *) TRIM(printtag)//"| Initializing weights for model: ", i_com END IF DO i = 1, nnp_env%n_ele WRITE (file_name, '(A,I0.3,A)') TRIM(base_name)//".", nnp_env%nuc_ele(i), ".data" IF (logger%para_env%is_source()) THEN - WRITE (unit_nr, *) "NNP| Reading weights from file: ", TRIM(file_name) + WRITE (unit_nr, *) TRIM(printtag)//"| Reading weights from file: ", TRIM(file_name) END IF CALL parser_create(parser, file_name, para_env=logger%para_env) n_weight = 0 @@ -744,8 +759,11 @@ CONTAINS nnp_env%expol = 0 ! Bias the standard deviation of committee disagreement - bias_section => section_vals_get_subs_vals(nnp_env%nnp_input, "BIAS") - CALL section_vals_get(bias_section, explicit=explicit) + NULLIFY (bias_section) + explicit = .FALSE. + !HELIUM NNP does atm not allow for bias (not even defined) + bias_section => section_vals_get_subs_vals(nnp_env%nnp_input, "BIAS", can_return_null=.TRUE.) + IF (ASSOCIATED(bias_section)) CALL section_vals_get(bias_section, explicit=explicit) nnp_env%bias = .FALSE. IF (explicit) THEN IF (nnp_env%n_committee > 1) THEN @@ -768,7 +786,7 @@ CONTAINS END IF nnp_env%bias_e_avrg(:) = work IF (logger%para_env%is_source()) THEN - WRITE (unit_nr, *) "NNP| Biasing is aligned by shifting the energy prediction of the C-NNP members" + WRITE (unit_nr, *) TRIM(printtag)//"| Biasing is aligned by shifting the energy prediction of the C-NNP members" END IF END IF ELSE @@ -777,7 +795,7 @@ CONTAINS END IF IF (logger%para_env%is_source()) THEN - WRITE (unit_nr, *) "NNP| NNP force environment initialized" + WRITE (unit_nr, *) TRIM(printtag)//"| NNP force environment initialized" END IF CALL timestop(handle) diff --git a/src/nnp_environment_types.F b/src/nnp_environment_types.F index 06e3cda2c9..5aacfa93bf 100644 --- a/src/nnp_environment_types.F +++ b/src/nnp_environment_types.F @@ -58,8 +58,7 @@ MODULE nnp_environment_types ! Public subroutines *** PUBLIC :: nnp_env_release, & nnp_env_set, & - nnp_env_get, & - nnp_env_create + nnp_env_get INTEGER, PARAMETER, PUBLIC :: & nnp_cut_cos = 1, & @@ -82,8 +81,8 @@ MODULE nnp_environment_types !> \date 2020-10-10 ! ************************************************************************************************** TYPE nnp_type - TYPE(nnp_acsf_rad_type), DIMENSION(:), POINTER :: rad ! DIM(n_ele) - TYPE(nnp_acsf_ang_type), DIMENSION(:), POINTER :: ang ! DIM(n_ele) + TYPE(nnp_acsf_rad_type), DIMENSION(:), POINTER :: rad => NULL() ! DIM(n_ele) + TYPE(nnp_acsf_ang_type), DIMENSION(:), POINTER :: ang => NULL() ! DIM(n_ele) INTEGER, DIMENSION(:), ALLOCATABLE :: n_rad ! # radial symfnct for this element INTEGER, DIMENSION(:), ALLOCATABLE :: n_ang ! # angular symfnct for this element INTEGER :: n_ele ! # elements @@ -102,7 +101,7 @@ MODULE nnp_environment_types REAL(KIND=dp) :: scmin !scale REAL(KIND=dp) :: max_cut !largest cutoff REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: atom_energies !DIM(n_ele) - TYPE(nnp_arc_type), POINTER, DIMENSION(:) :: arc ! DIM(n_ele) + TYPE(nnp_arc_type), POINTER, DIMENSION(:) :: arc => NULL() ! DIM(n_ele) INTEGER :: n_committee INTEGER :: n_hlayer INTEGER :: n_layer @@ -122,11 +121,12 @@ MODULE nnp_environment_types ALLOCATABLE, DIMENSION(:) :: atoms REAL(KIND=dp), DIMENSION(:, :), ALLOCATABLE :: nnp_forces REAL(KIND=dp) :: nnp_potential_energy - TYPE(cp_subsys_type), POINTER :: subsys - TYPE(section_vals_type), POINTER :: nnp_input, & - force_env_input - TYPE(cell_type), POINTER :: cell_ref - LOGICAL :: use_ref_cell + TYPE(cp_subsys_type), POINTER :: subsys => NULL() + TYPE(section_vals_type), POINTER :: nnp_input => NULL() + TYPE(section_vals_type), POINTER :: force_env_input => NULL() + TYPE(cell_type), POINTER :: cell => NULL() + TYPE(cell_type), POINTER :: cell_ref => NULL() + LOGICAL :: use_ref_cell = .FALSE. ! bias LOGICAL :: bias LOGICAL :: bias_align @@ -265,28 +265,6 @@ MODULE nnp_environment_types CONTAINS -! ************************************************************************************************** -!> \brief Create data structure that holds all the information for neural -!> network potentials -!> \param nnp_env ... -!> \date 2020-10-10 -!> \author Christoph Schran (christoph.schran@rub.de) -! ************************************************************************************************** - SUBROUTINE nnp_env_create(nnp_env) - TYPE(nnp_type), INTENT(OUT) :: nnp_env - - NULLIFY (nnp_env%rad) - NULLIFY (nnp_env%ang) - NULLIFY (nnp_env%arc) - NULLIFY (nnp_env%subsys) - NULLIFY (nnp_env%nnp_input) - NULLIFY (nnp_env%force_env_input) - NULLIFY (nnp_env%cell_ref) - - nnp_env%use_ref_cell = .FALSE. - - END SUBROUTINE nnp_env_create - ! ************************************************************************************************** !> \brief Release data structure that holds all the information for neural !> network potentials @@ -398,6 +376,9 @@ CONTAINS IF (ASSOCIATED(nnp_env%subsys)) THEN CALL cp_subsys_release(nnp_env%subsys) END IF + IF (ASSOCIATED(nnp_env%cell)) THEN + CALL cell_release(nnp_env%cell) + END IF IF (ASSOCIATED(nnp_env%cell_ref)) THEN CALL cell_release(nnp_env%cell_ref) END IF @@ -466,6 +447,10 @@ CONTAINS END IF IF (PRESENT(nnp_forces)) nnp_forces = nnp_env%nnp_forces + ! note cell will be overwritten if subsys is associated + ! helium_env uses nnp without subsys + IF (PRESENT(cell)) cell => nnp_env%cell + IF (PRESENT(subsys)) subsys => nnp_env%subsys IF (ASSOCIATED(nnp_env%subsys)) THEN CALL cp_subsys_get(nnp_env%subsys, & @@ -503,6 +488,7 @@ CONTAINS !> \param local_molecules All molecules on this particular node !> \param nnp_input ... !> \param force_env_input Pointer to the force_env input section +!> \param cell ... !> \param cell_ref The reference simulation cell !> \param use_ref_cell Logical which indicates if reference !> simulation cell is used @@ -515,7 +501,7 @@ CONTAINS SUBROUTINE nnp_env_set(nnp_env, nnp_forces, subsys, & atomic_kind_set, particle_set, local_particles, & molecule_kind_set, molecule_set, local_molecules, & - nnp_input, force_env_input, cell_ref, & + nnp_input, force_env_input, cell, cell_ref, & use_ref_cell, nnp_potential_energy) TYPE(nnp_type), INTENT(INOUT) :: nnp_env @@ -532,7 +518,7 @@ CONTAINS POINTER :: molecule_set TYPE(distribution_1d_type), OPTIONAL, POINTER :: local_molecules TYPE(section_vals_type), OPTIONAL, POINTER :: nnp_input, force_env_input - TYPE(cell_type), OPTIONAL, POINTER :: cell_ref + TYPE(cell_type), OPTIONAL, POINTER :: cell, cell_ref LOGICAL, INTENT(IN), OPTIONAL :: use_ref_cell REAL(KIND=dp), INTENT(IN), OPTIONAL :: nnp_potential_energy @@ -554,6 +540,16 @@ CONTAINS END IF nnp_env%subsys => subsys END IF + IF (PRESENT(cell)) THEN + IF (ASSOCIATED(cell)) THEN + CALL cell_retain(cell) + CALL cell_release(nnp_env%cell) + nnp_env%cell => cell + END IF + IF (ASSOCIATED(nnp_env%subsys)) THEN + CALL cp_subsys_set(nnp_env%subsys, cell=cell) + END IF + END IF IF (PRESENT(atomic_kind_set)) THEN CALL atomic_kind_list_create(atomic_kinds, els_ptr=atomic_kind_set) CALL cp_subsys_set(nnp_env%subsys, atomic_kinds=atomic_kinds) diff --git a/src/nnp_model.F b/src/nnp_model.F index 3f7635b8fd..7e14022fcc 100644 --- a/src/nnp_model.F +++ b/src/nnp_model.F @@ -41,10 +41,12 @@ CONTAINS !> \brief Write neural network architecture information !> \param nnp ... !> \param para_env ... +!> \param printtag ... ! ************************************************************************************************** - SUBROUTINE nnp_write_arc(nnp, para_env) + SUBROUTINE nnp_write_arc(nnp, para_env, printtag) TYPE(nnp_type), INTENT(IN) :: nnp TYPE(mp_para_env_type), INTENT(IN) :: para_env + CHARACTER(LEN=*), INTENT(IN) :: printtag CHARACTER(len=default_string_length) :: my_label INTEGER :: i, j, unit_nr @@ -53,7 +55,7 @@ CONTAINS NULLIFY (logger) logger => cp_get_default_logger() - my_label = "NNP| " + my_label = TRIM(printtag)//"| " IF (para_env%is_source()) THEN unit_nr = cp_logger_get_default_unit_nr(logger) DO i = 1, nnp%n_ele @@ -66,6 +68,8 @@ CONTAINS END DO END IF + RETURN + END SUBROUTINE nnp_write_arc ! ************************************************************************************************** diff --git a/src/start/input_cp2k_motion.F b/src/start/input_cp2k_motion.F index 7c1ecb694b..3b381796df 100644 --- a/src/start/input_cp2k_motion.F +++ b/src/start/input_cp2k_motion.F @@ -36,7 +36,7 @@ MODULE input_cp2k_motion helium_cell_shape_octahedron, helium_forces_average, helium_forces_last, & helium_mdist_exponential, helium_mdist_gaussian, helium_mdist_linear, & helium_mdist_quadratic, helium_mdist_singlev, helium_mdist_uniform, & - helium_sampling_ceperley, helium_sampling_worm, helium_solute_intpot_mwater, & + helium_sampling_ceperley, helium_sampling_worm, helium_solute_intpot_mwater, helium_solute_intpot_nnp, & helium_solute_intpot_none, integrate_exact, integrate_numeric, ls_2pnt, ls_3pnt, ls_fit, & ls_gold, ls_none, matrix_init_cholesky, matrix_init_diagonal, numerical, perm_cycle, & perm_plain, propagator_pimd, propagator_rpmd, propagator_cmd, transformation_normal, transformation_stage @@ -61,7 +61,8 @@ MODULE input_cp2k_motion section_type USE input_val_types, ONLY: integer_t, & logical_t, & - real_t + real_t, & + char_t USE kinds, ONLY: dp USE string_utilities, ONLY: s2a #include "../base/base_uses.f90" @@ -2108,7 +2109,7 @@ CONTAINS CALL section_create(section, __LOCATION__, name="HELIUM", & description="The section that controls optional helium solvent"// & " environment (highly experimental, not for general use yet)", & - n_keywords=31, n_subsections=9, repeats=.FALSE.) + n_keywords=31, n_subsections=11, repeats=.FALSE.) NULLIFY (keyword) CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", & @@ -2156,15 +2157,17 @@ CONTAINS CALL keyword_create(keyword, __LOCATION__, name="SOLUTE_INTERACTION", & description="Interaction potential between helium and the solute", & - usage="SOLUTE_INTERACTION (NONE | MWATER)", & + usage="SOLUTE_INTERACTION (NONE | MWATER | NNP)", & default_i_val=helium_solute_intpot_none, & - enum_c_vals=s2a("NONE", "MWATER"), & + enum_c_vals=s2a("NONE", "MWATER", "NNP"), & enum_i_vals=(/ & helium_solute_intpot_none, & - helium_solute_intpot_mwater/), & + helium_solute_intpot_mwater, & + helium_solute_intpot_nnp/), & enum_desc=s2a( & "No interaction with solute", & - "Test interaction with wrong Water")) + "Test interaction with wrong Water", & + "Interaction with NNP")) CALL section_add_keyword(section, keyword) CALL keyword_release(keyword) @@ -2229,6 +2232,101 @@ CONTAINS CALL section_add_keyword(section, keyword) CALL keyword_release(keyword) + ! Helium-solute interaction NNP + NULLIFY (subsection) + CALL section_create(subsection, __LOCATION__, name="NNP", & + description="This section contains all information to run an helium-solute "// & + "interaction Neural Network Potential (NNP) calculation.", & + n_keywords=2, n_subsections=3, repeats=.FALSE.) + + CALL keyword_create(keyword, __LOCATION__, name="NNP_INPUT_FILE_NAME", & + description="File containing the input information for the setup "// & + "of the NNP (n2p2/RuNNer format). ", & + repeats=.FALSE., default_lc_val="input.nn") + CALL section_add_keyword(subsection, keyword) + CALL keyword_release(keyword) + + CALL keyword_create(keyword, __LOCATION__, name="SCALE_FILE_NAME", & + description="File containing the scaling information for the symmetry "// & + "functions of the NNP. ", & + repeats=.FALSE., default_lc_val="scaling.data") + CALL section_add_keyword(subsection, keyword) + CALL keyword_release(keyword) + + NULLIFY (subsubsection) + CALL section_create(subsubsection, __LOCATION__, name="SR_CUTOFF", & + description="Section for failsafe short range cutoffs for the NNPs, "// & + "if the distance between solvent and specified solute element becomes "// & + "smaller than the given cutoff, an artifical repulsive potential is "// & + "introduced. Note this is only meant to prevent such configurations, "// & + "not to physically sample them.", & + n_keywords=2, n_subsections=0, repeats=.TRUE.) + + CALL keyword_create(keyword, __LOCATION__, name="ELEMENT", & + description="Solute element for which the short range cutoff is in effect", & + repeats=.FALSE., default_c_val="none") + CALL section_add_keyword(subsubsection, keyword) + CALL keyword_release(keyword) + + CALL keyword_create(keyword, __LOCATION__, name="RADIUS", & + description="Short range cutoff in Angstrom, below this cutoff, the energy "// & + "is replaced by a sizable positive value plus a 1/r**2 term to guide particles "// & + "away from each other.", & + default_r_val=cp_unit_to_cp2k(0.0_dp, "angstrom"), & + repeats=.FALSE., type_of_var=real_t, unit_str="angstrom") + CALL section_add_keyword(subsubsection, keyword) + CALL keyword_release(keyword) + CALL section_add_subsection(subsection, subsubsection) + CALL section_release(subsubsection) + + NULLIFY (subsubsection) + CALL section_create(subsubsection, __LOCATION__, name="MODEL", & + description="Section for a single NNP model. If this section is repeated, "// & + "a committee model (C-NNP)is used where the NNP members share the same "// & + "symmetry functions. ", & + n_keywords=1, n_subsections=0, repeats=.TRUE.) + + CALL keyword_create(keyword, __LOCATION__, name="WEIGHTS", & + description="File containing the weights for the artificial neural "// & + "networks of the NNP. The specified name is extended by .XXX.data ", & + repeats=.FALSE., default_lc_val="weights") + CALL section_add_keyword(subsubsection, keyword) + CALL keyword_release(keyword) + CALL section_add_subsection(subsection, subsubsection) + CALL section_release(subsubsection) + + ! Create the PRINT subsection + NULLIFY (subsubsection) + CALL section_create(subsubsection, __LOCATION__, name="PRINT", & + description="Section of possible print options in NNP code.", & + n_keywords=0, n_subsections=3, repeats=.FALSE.) + NULLIFY (print_key, keyword) + + CALL cp_print_key_section_create(print_key, __LOCATION__, "ENERGIES", & + description="Controls the printing of the NNP energies.", & + print_level=medium_print_level, common_iter_levels=1) + CALL section_add_subsection(subsubsection, print_key) + CALL section_release(print_key) + + CALL cp_print_key_section_create(print_key, __LOCATION__, "FORCES_SIGMA", & + description="Controls the printing of the STD per atom of the NNP forces.", & + print_level=medium_print_level, common_iter_levels=1) + CALL section_add_subsection(subsubsection, print_key) + CALL section_release(print_key) + + CALL cp_print_key_section_create(print_key, __LOCATION__, "EXTRAPOLATION", & + description="If activated, output structures with extrapolation "// & + "warning in xyz-format", & + print_level=medium_print_level, common_iter_levels=1) + CALL section_add_subsection(subsubsection, print_key) + CALL section_release(print_key) + CALL section_add_subsection(subsection, subsubsection) + CALL section_release(subsubsection) + + CALL section_add_subsection(section, subsection) + CALL section_release(subsection) ! release NNP subsection + + ! Ceperley's sampling algorithm NULLIFY (subsection) CALL section_create(subsection, __LOCATION__, name="CEPERLEY", & description="Enables sampling with Ceperley's algorithm", & diff --git a/tests/Pimd/regtest-2/TEST_FILES b/tests/Pimd/regtest-2/TEST_FILES index 41c9119f02..505d0e6680 100644 --- a/tests/Pimd/regtest-2/TEST_FILES +++ b/tests/Pimd/regtest-2/TEST_FILES @@ -16,4 +16,5 @@ he32_only_worm.inp 40 1e-11 3.284 he32_only_worm_restart.inp 40 1e-11 3.1056893819001927E-004 water-in-helium-worm.inp 9 1e-11 -4.2435303435780906E-004 water-in-helium-striding.inp 9 1e-11 9.2149634888323367E-002 +water_in_helium_nnp.inp 9 1e-11 0.188542848154504 #EOF diff --git a/tests/Pimd/regtest-2/input.nn b/tests/Pimd/regtest-2/input.nn new file mode 100644 index 0000000000..dcf6c4f50e --- /dev/null +++ b/tests/Pimd/regtest-2/input.nn @@ -0,0 +1,88 @@ +number_of_elements 3 +elements O H He +global_hidden_layers_short 2 +global_nodes_short 25 25 +global_activation_short t t l +cutoff_type 1 + +# radial H H +symfunction_short H 2 H 0.00000 0.0 6.000 ! eta rshift funccutoff +symfunction_short H 2 H 0.01284 0.0 6.000 ! eta rshift funccutoff +symfunction_short H 2 H 0.04711 0.0 6.000 ! eta rshift funccutoff +symfunction_short H 2 H 0.11421 0.0 6.000 ! eta rshift funccutoff +symfunction_short H 2 H 0.38554 0.0 6.000 ! eta rshift funccutoff +symfunction_short H 2 H 1.14214 0.0 6.000 ! eta rshift funccutoff + +# radial H O / O H +symfunction_short H 2 O 0.00000 0.0 4.000 ! eta rshift funccutoff +symfunction_short H 2 O 0.01284 0.0 4.000 ! eta rshift funccutoff +symfunction_short H 2 O 0.04711 0.0 4.000 ! eta rshift funccutoff +symfunction_short H 2 O 0.11421 0.0 4.000 ! eta rshift funccutoff +symfunction_short H 2 O 0.38554 0.0 4.000 ! eta rshift funccutoff +symfunction_short H 2 O 1.14214 0.0 4.000 ! eta rshift funccutoff + +symfunction_short O 2 H 0.00000 0.0 4.000 ! eta rshift funccutoff +symfunction_short O 2 H 0.01284 0.0 4.000 ! eta rshift funccutoff +symfunction_short O 2 H 0.04711 0.0 4.000 ! eta rshift funccutoff +symfunction_short O 2 H 0.11421 0.0 4.000 ! eta rshift funccutoff +symfunction_short O 2 H 0.38554 0.0 4.000 ! eta rshift funccutoff +symfunction_short O 2 H 1.14214 0.0 4.000 ! eta rshift funccutoff +# +# radial H He / He H +symfunction_short H 2 He 0.00000 0.0 22.000 ! eta rshift funccutoff +symfunction_short H 2 He 0.01284 0.0 22.000 ! eta rshift funccutoff +symfunction_short H 2 He 0.04711 0.0 22.000 ! eta rshift funccutoff +symfunction_short H 2 He 0.11421 0.0 22.000 ! eta rshift funccutoff +symfunction_short H 2 He 0.38554 0.0 22.000 ! eta rshift funccutoff +# +symfunction_short He 2 H 0.00000 0.0 22.000 ! eta rshift funccutoff +symfunction_short He 2 H 0.01284 0.0 22.000 ! eta rshift funccutoff +symfunction_short He 2 H 0.04711 0.0 22.000 ! eta rshift funccutoff +symfunction_short He 2 H 0.11421 0.0 22.000 ! eta rshift funccutoff +symfunction_short He 2 H 0.38554 0.0 22.000 ! eta rshift funccutoff +# +# radial O He / He O +symfunction_short O 2 He 0.00000 0.0 22.000 ! eta rshift funccutoff +symfunction_short O 2 He 0.01284 0.0 22.000 ! eta rshift funccutoff +symfunction_short O 2 He 0.04711 0.0 22.000 ! eta rshift funccutoff +symfunction_short O 2 He 0.11421 0.0 22.000 ! eta rshift funccutoff +symfunction_short O 2 He 0.38554 0.0 22.000 ! eta rshift funccutoff +# +symfunction_short He 2 O 0.00000 0.0 22.000 ! eta rshift funccutoff +symfunction_short He 2 O 0.01284 0.0 22.000 ! eta rshift funccutoff +symfunction_short He 2 O 0.04711 0.0 22.000 ! eta rshift funccutoff +symfunction_short He 2 O 0.11421 0.0 22.000 ! eta rshift funccutoff +symfunction_short He 2 O 0.38554 0.0 22.000 ! eta rshift funccutoff +# +# angular +symfunction_short H 3 H He 0.0 1.0 2.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short H 3 H He 0.0 1.0 16.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short H 3 H He 0.0 -1.0 2.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short H 3 H He 0.0 -1.0 16.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff + +symfunction_short O 3 H H 0.0 1.0 2.0 6.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short O 3 H H 0.0 -1.0 2.0 6.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short O 3 H H 0.0 -1.0 16.0 6.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff + +symfunction_short O 3 He H 0.0 1.0 2.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short O 3 He H 0.0 1.0 16.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short O 3 He H 0.0 -1.0 2.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short O 3 He H 0.0 -1.0 16.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff + +symfunction_short H 3 O H 0.0 1.0 2.0 6.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short H 3 O H 0.0 1.0 16.0 6.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short H 3 O H 0.0 -1.0 2.0 6.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff + + +symfunction_short He 3 O H 0.0 1.0 2.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short He 3 O H 0.0 1.0 16.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short He 3 O H 0.0 -1.0 2.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff + + +symfunction_short He 3 H H 0.0 1.0 2.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short He 3 H H 0.0 1.0 16.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff +symfunction_short He 3 H H 0.0 -1.0 2.0 22.00000 ! central_atom type neighbor_atom1 neighbor_atom2 eta lambda zeta funccutoff + +scale_symmetry_functions +center_symmetry_functions +#normalize_nodes diff --git a/tests/Pimd/regtest-2/scaling.data b/tests/Pimd/regtest-2/scaling.data new file mode 100644 index 0000000000..34840807dd --- /dev/null +++ b/tests/Pimd/regtest-2/scaling.data @@ -0,0 +1,59 @@ + 1 1 0.056817790 0.750692450 0.535422570 + 1 2 0.049035400 0.733801881 0.511770326 + 1 3 0.033094917 0.690558470 0.453923969 + 1 4 0.015326365 0.613129380 0.359844582 + 1 5 0.000681635 0.379056130 0.145144367 + 1 6 0.000000116 0.099158979 0.014140815 + 1 7 0.303742678 1.374101777 0.950667957 + 1 8 0.235810207 1.287115579 0.845399854 + 1 9 0.120225731 1.081696249 0.620860609 + 1 10 0.032412417 0.771739614 0.345340187 + 1 11 0.000162353 0.213805507 0.039411695 + 1 12 0.000000000 0.011145065 0.000284075 + 1 13 0.000000000 0.971823088 0.674142370 + 1 14 0.000000000 0.904632499 0.448357163 + 1 15 0.000000000 0.747181452 0.200857852 + 1 16 0.000000000 0.513834679 0.067521608 + 1 17 0.000000000 0.113060914 0.004983123 + 1 18 0.000173036 0.089741938 0.014016891 + 1 19 0.159049241 1.528033231 0.924189394 + 1 20 0.021928251 0.741271301 0.264708443 + 1 21 0.000000000 2.966883486 0.538884027 + 1 22 0.000000000 2.907583844 0.942197930 + 1 23 0.000000000 2.010270751 0.098215870 + 1 24 0.000000000 1.984445110 0.269188161 + 2 1 0.000000000 2.840136700 2.022427109 + 2 2 0.000000000 0.925422032 0.681974012 + 2 3 0.000000000 2.479841745 1.345071490 + 2 4 0.000000000 0.763221458 0.458412591 + 2 5 0.000000000 1.737259739 0.602573557 + 2 6 0.000000000 0.456334883 0.193352815 + 2 7 0.000000000 0.979460492 0.202564825 + 2 8 0.000000000 0.166699990 0.045058226 + 2 9 0.000000000 0.179451002 0.014949368 + 2 10 0.000000000 0.002840834 0.000295471 + 2 11 0.000000000 0.269412607 0.019135491 + 2 12 0.000000000 0.039142871 0.003080234 + 2 13 0.000000000 4.553843569 2.800523813 + 2 14 0.000000000 4.827097878 3.161841792 + 2 15 0.000000000 3.450986149 1.434508332 + 2 16 0.000000000 4.185789633 2.325371247 + 3 1 0.904224152 2.066881809 1.606267709 + 3 2 0.833469552 2.007545008 1.535310978 + 3 3 0.670584553 1.857396706 1.361771907 + 3 4 0.438119010 1.595201594 1.079533747 + 3 5 0.078461817 0.862496097 0.435433102 + 3 6 0.000656033 0.155828033 0.042422445 + 3 7 0.000000000 0.925422032 0.681974012 + 3 8 0.000000000 0.763221458 0.458412591 + 3 9 0.000000000 0.456334883 0.193352815 + 3 10 0.000000000 0.166699990 0.045058226 + 3 11 0.000000000 0.002840834 0.000295471 + 3 12 0.226700653 1.450755585 0.737233133 + 3 13 0.026515912 0.630416258 0.242989934 + 3 14 0.000024620 0.427149376 0.024691249 + 3 15 0.000000000 2.773800494 0.993854746 + 3 16 0.000000000 3.196696257 1.300572740 + 3 17 0.000000000 1.553136834 0.176102454 + 3 18 0.000000000 1.767843771 0.364970085 + -0.0022195411 0.0037903600 diff --git a/tests/Pimd/regtest-2/water_in_helium_nnp.inp b/tests/Pimd/regtest-2/water_in_helium_nnp.inp new file mode 100644 index 0000000000..17732eb558 --- /dev/null +++ b/tests/Pimd/regtest-2/water_in_helium_nnp.inp @@ -0,0 +1,104 @@ +&GLOBAL + PROJECT_NAME pwater-in-helium + RUN_TYPE PINT + PRINT_LEVEL low +&END GLOBAL + +&MOTION + &PINT + P 16 + PROC_PER_REPLICA 1 + NUM_STEPS 5 + DT 0.5 + NRESPA 1 + PROPAGATOR RPMD + HARM_INT EXACT + TEMP 7.5 + T_TOL 0.0 + TRANSFORMATION NORMAL + &PILE + &END PILE + &HELIUM + SOLUTE_INTERACTION NNP + POTENTIAL_FILE_NAME lj-test-pot.dat + COORD_INIT_TEMP -1 + GET_FORCES LAST + NATOMS 20 + NBEADS 16 + NUM_ENV 1 + INOROT 80 + IROT 1000 + PERIODIC F + CELL_SHAPE OCTAHEDRON + SAMPLING_METHOD WORM + DROPLET_RADIUS 20 + &WORM + CENTROID_DRMAX 0.2 + STAGING_L 5 + ALLOW_OPEN T + OPEN_CLOSE_SCALE 100.0 + SHOW_STATISTICS T + CENTROID_WEIGHT 5 + STAGING_WEIGHT 10 + OPEN_CLOSE_WEIGHT 20 + HEAD_TAIL_WEIGHT 10 + CRAWL_WEIGHT 10 + CRAWL_REPETITION 2 + SWAP_WEIGHT 100 + &END WORM + &NNP + NNP_INPUT_FILE_NAME ./input.nn + SCALE_FILE_NAME ./scaling.data + &MODEL + WEIGHTS ./weights + &END MODEL + &SR_CUTOFF + ELEMENT H + RADIUS 1.25 + &END SR_CUTOFF + &SR_CUTOFF + ELEMENT O + RADIUS 2.05 + &END SR_CUTOFF +! &PRINT +! &EXTRAPOLATION +! &END EXTRAPOLATION +! &END PRINT + &END NNP + &END HELIUM + &END PINT +&END MOTION + +&FORCE_EVAL + METHOD FIST + &MM + &POISSON + &EWALD + GMAX 25 + &END EWALD + &END POISSON + &FORCEFIELD + PARM_FILE_NAME ../../Fist/sample_pot/water.pot + PARMTYPE CHM + &CHARGE + ATOM OT + CHARGE -0.8476 + &END CHARGE + &CHARGE + ATOM HT + CHARGE 0.4238 + &END CHARGE + &END FORCEFIELD + &END MM + &SUBSYS + &CELL + ABC 8.0 8.0 8.0 + PERIODIC NONE + &END CELL + &TOPOLOGY + COORD_FILE_NAME ../../Fist/sample_pdb/water_1.pdb + COORD_FILE_FORMAT PDB + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL + diff --git a/tests/Pimd/regtest-2/weights.001.data b/tests/Pimd/regtest-2/weights.001.data new file mode 100644 index 0000000000..05408ee2f3 --- /dev/null +++ b/tests/Pimd/regtest-2/weights.001.data @@ -0,0 +1,1301 @@ + 0.9060148261 + -3.3151924806 + -0.2434705206 + 0.2081377856 + -1.0695092540 + -1.6081372120 + 3.0359799810 + -3.5020890563 + 0.0485078428 + 0.8992477168 + 1.3796316946 + 0.4182046745 + -0.6710684853 + -1.1806909854 + -0.3002130055 + -0.4406986438 + 0.7095645070 + -3.0635571614 + -1.7759598812 + 2.2212727853 + 2.9999318026 + -2.1344327130 + 0.8561185365 + -0.4770219643 + 1.0522498731 + 0.9088401080 + -1.6819737897 + -0.7420403220 + 1.0572311401 + -0.4569166102 + -0.6521236939 + 2.1309900394 + -1.1856248521 + -0.8761605359 + 0.2313332848 + 0.6720932669 + -0.4690604256 + -0.1814550052 + -0.3799666015 + -0.0732037283 + 0.4446521726 + 1.2419866177 + -0.3344275993 + -0.9172561025 + 1.8285972815 + 1.2202681742 + -0.9252110679 + -0.4398168414 + -0.5057676949 + 1.8660952798 + -0.2676693465 + 2.0569312381 + 0.8741706961 + 0.9419943351 + 0.8978867043 + 0.6541350345 + -1.4780340029 + 1.7006439711 + -0.6184963269 + -0.5199192282 + -0.4242004615 + -0.6983185633 + 1.1527259144 + 1.2515341172 + 1.3701714343 + -0.1309557737 + 0.3348529555 + 0.5688789957 + 1.0228631733 + -0.3274399009 + -0.6257322936 + 2.2628410243 + -1.4946688803 + 0.4900435523 + -0.3797252011 + -1.6554372553 + 3.8265505885 + 0.8424220729 + 0.4945535447 + 1.4939470112 + 3.5136052142 + -2.8204097801 + 3.8048287736 + 0.5138592865 + 0.0199643268 + -1.5890730984 + 1.7353630083 + 0.1014583873 + 2.2590937587 + 1.0827167145 + 0.5759934790 + -0.1952901655 + 4.1926927598 + 2.1259343897 + -3.7351548247 + -5.8740363282 + 2.8723012896 + -1.1639883403 + 0.0544131933 + -1.9003884786 + 0.9226451041 + -2.5244304548 + -2.4245692237 + 0.1709412272 + 0.5559748044 + -1.5824644992 + 1.1556426766 + -1.5726938658 + -0.8714936101 + -0.0326988353 + 0.3811275400 + -0.9745030182 + -0.8794835151 + 0.8759603411 + -1.0294455656 + -0.7059309692 + 0.0009402616 + -2.4430904665 + -0.2305008176 + 0.4822488115 + 2.5956003261 + -2.0303477254 + 0.8821125776 + 2.1817207129 + 0.0657657280 + -0.3081893872 + 0.3432387914 + 1.3918661213 + 0.0220583799 + -0.7102766206 + 0.5178960442 + -0.3716861798 + 0.1852420912 + 0.5138473026 + 0.1774408792 + 0.5237914329 + 0.0827044968 + 0.1261314952 + -0.6031814856 + -0.1117644674 + 0.1912964598 + -0.2085158002 + -0.1969269812 + -0.5888709495 + -0.0991413608 + -0.2814024124 + 0.4178578121 + -0.4282581230 + -1.0761109576 + 0.0340910863 + -0.1495355416 + -0.0690654413 + -0.9216480090 + 1.9776421900 + -0.7074927879 + 0.0800551537 + 0.9630806509 + -0.2887510287 + 2.3336152131 + -4.2089802524 + 1.1385329480 + 0.4981145580 + 0.2699996619 + -2.3366367917 + -4.1045832311 + 1.2743030530 + 0.6334184863 + -2.7606337061 + -0.7696751702 + 2.5467578521 + 0.6001768008 + -4.9753773212 + 0.5719115817 + 0.5511462946 + -2.1134122910 + 0.4888473332 + -1.1111409203 + 0.1132428615 + 1.6302213175 + 1.6868418210 + 0.1488944396 + -0.4363621464 + -0.6141113848 + 0.4319380533 + -0.1568273554 + 0.1945509128 + 0.3466424601 + -0.6833880546 + -1.3684019769 + -1.7406198995 + 1.0381762145 + -0.3136355254 + -1.2015869131 + 2.1306095379 + -1.1108111875 + 0.2065718130 + -0.1000469894 + 1.1334483696 + -0.4192428438 + 0.2461687039 + 0.0889425108 + -0.5892268300 + 3.3772231797 + -0.2636458412 + 2.4494451109 + 0.1024586250 + -1.7819367502 + 0.5288420116 + -2.8797441597 + 2.1031823279 + -0.3055171100 + -0.5597629343 + -0.7871420520 + 1.0517191997 + 1.2771895080 + -1.3533473690 + -0.5155314666 + -0.0507639801 + 0.7184660317 + -2.8019409732 + -1.5606360934 + 5.0392165928 + -1.2738738177 + -2.5229227509 + 1.6665281138 + 0.5565879963 + 2.0721709648 + -3.7232261278 + -0.8799195144 + -2.8143860571 + -1.8403379532 + 1.7853051424 + -0.2220379604 + -0.7858444921 + 0.5108252816 + -2.7597357144 + -0.4319001913 + -1.4081699156 + -0.1187125597 + 2.0206596418 + -0.0023294091 + 1.4953511727 + 1.6198929486 + -1.6490288118 + 2.2609593116 + 1.4643522920 + 1.9313066665 + -1.7590696677 + -0.0675502008 + 2.9703679736 + -0.6565152073 + -0.9669340307 + 1.4688400837 + 1.0538576740 + 0.8661247853 + 0.8892257804 + -0.2225718123 + 0.1338607431 + 0.4537607873 + -1.0147776226 + 1.1079210701 + 0.4282892846 + 0.8838622781 + -0.3806650443 + -0.7783501359 + -0.2697276512 + 0.1377558148 + -0.6293131657 + 0.8487264335 + -0.4440857583 + -0.0251133407 + -1.7198865052 + 1.4646525385 + 0.7707685197 + -0.9067827026 + -0.0195729212 + 0.6338421701 + -0.4850167361 + -0.6787006428 + -0.2116132666 + -0.2232934660 + 0.1857079329 + -0.0488817573 + -0.1422180346 + -0.2697390949 + 0.0039543924 + -0.2154073415 + -0.3274136515 + -0.1483971394 + 0.2610956767 + -0.2380594434 + -0.5007120115 + 0.0336415605 + -0.0601264562 + 0.1282634644 + 0.0608883436 + 0.4449587501 + -0.4900488810 + -0.2438086068 + 0.2893331184 + 0.0486751457 + 0.3595511604 + 1.0713225979 + -0.5078670451 + -1.0485839088 + 0.0238520835 + 0.0982299034 + -0.3926770621 + 0.0964900965 + 0.1688924462 + -0.4376620891 + 0.2689179411 + 0.7055397022 + -0.0022531066 + -0.0493179522 + -0.8614457378 + -0.9275293474 + -1.0006670157 + -0.0484229857 + 0.3531842776 + 1.5958829102 + 1.2274329979 + 0.4965980670 + -2.3582397120 + -1.7310013808 + -1.0529627699 + -0.7852489547 + -0.8551516213 + -1.0378494886 + 1.2165776186 + -0.5325998472 + 0.1052932819 + 0.2840638502 + 0.1334297186 + 1.2856460411 + 0.4689078469 + -0.4704243145 + -2.9910520308 + 0.4270363386 + 0.9805430738 + -0.2600807799 + 0.6645070816 + 1.0048349392 + 0.3670547896 + -1.4168155745 + -1.2432275286 + 0.1328599947 + -0.8007151737 + 1.9331519284 + 3.5481242902 + 1.8300782770 + 4.7870820109 + -0.8278144633 + 3.3569861032 + -0.8183161276 + -0.4165460984 + 0.2401892332 + -0.6221765641 + 0.5538173859 + -1.2678780005 + 1.0875720468 + 0.4948640507 + 1.0827779180 + -3.1501203238 + -0.9298684716 + -0.7109285068 + -0.7935594880 + -0.7971063863 + -2.2863520689 + -0.6362843139 + -0.7040993110 + -2.1322027667 + 0.5663997031 + 1.8639783422 + -0.9761723728 + -0.4696437080 + -1.7897518024 + 0.8407208513 + -2.9307630294 + 1.8611202408 + -0.2870159170 + 0.3861363722 + -0.1474684417 + 0.3096442845 + 0.3572516115 + 0.3414252622 + 0.7980046722 + -0.8463845000 + 3.4575364033 + 0.8133265383 + 1.6373694962 + -2.4334669739 + 2.2688798549 + 0.5875479454 + 0.8657670704 + 1.0196691049 + 2.9995002352 + -0.6414738341 + -2.0016391268 + -0.4028426270 + -0.8067820966 + 0.8338280211 + 0.6936849215 + 2.4081979168 + -1.5456645151 + -0.2095294156 + -0.1486969284 + 1.4594942014 + -0.7094009665 + 0.1219582204 + 0.0548719846 + -1.3278681565 + 0.2938139655 + 0.0666981007 + -0.5638843165 + -0.1463490447 + 1.8074242856 + -0.2589667011 + 0.3809764008 + -0.9886927612 + -1.3750372405 + -0.0787511731 + 1.2933496255 + 0.6025286862 + 0.9033695046 + 0.1898479730 + -0.0914711962 + 0.4043555042 + -1.3151353520 + -0.4121153470 + 0.8261881744 + 0.4950434637 + 0.5238723222 + 0.5672066677 + -0.3379993375 + -0.8917728583 + -0.1643733454 + 1.1448298429 + 1.0945238197 + 1.0986695087 + -0.5796520900 + -0.4526949393 + 1.3242374493 + 0.4583297691 + -0.0875598160 + -0.7839933891 + -0.0851124387 + -0.4886415070 + -0.4295862741 + -1.0583721453 + 0.5061878193 + -0.2398390447 + 2.7091776924 + -3.6784647153 + -1.5738471869 + 0.4245096977 + 0.6582037051 + -0.6872141652 + 1.1220277424 + 0.3332095384 + 0.2777987297 + -0.0898002215 + 1.7147841633 + 1.8668441571 + 2.4116331221 + -0.7808969701 + -0.4730985382 + 2.5293800052 + -1.4067330954 + 0.7179765970 + -0.2252660798 + -2.4847511080 + -0.2196304719 + 3.1849181590 + -2.2129982802 + 0.0173815650 + -0.1569854122 + 0.7286521105 + -0.0235253606 + 0.5709596958 + -0.4267083790 + -0.0950476180 + 0.8407714388 + -0.1124304180 + -0.2165918497 + 0.6263878288 + 0.0352291488 + 0.2960659905 + -0.8269452489 + 0.0268187040 + -0.4610416029 + -0.9742131398 + -0.3022141500 + 0.0716943548 + 0.4429075160 + 1.3272247703 + 1.0858197959 + 0.8249374450 + -1.7831317610 + -0.2331645650 + 1.1825174401 + -1.2527076906 + -2.1531092619 + -0.2500141058 + -2.3700757042 + 0.2462373634 + -0.8119906026 + 1.3454733071 + -0.0655382154 + -0.3537713678 + 1.7536943558 + -0.5951132607 + 1.1210016679 + -0.5841054080 + -1.8617155696 + 0.1218132252 + 0.9476767793 + 0.7061779289 + -0.2606260342 + 1.1425168510 + -0.3949652147 + 0.3831970887 + 0.2802738282 + -0.0208555199 + 0.8117763192 + 0.4508944611 + -0.8259721293 + -1.1225512944 + 3.4926830483 + 1.6770429617 + 1.6325504545 + -0.9146360535 + 0.8488957544 + 1.1707712977 + -0.5733487411 + -0.2195740839 + -1.6090558170 + -1.3301348620 + -0.7095819968 + -0.6698517060 + 1.2295365136 + 2.4003930666 + 1.9514630065 + 0.0394090891 + -0.5818978042 + -1.2287473227 + 0.6306734219 + -1.5884841732 + 1.5775771826 + 1.8024709955 + 0.1189405414 + -0.6555742758 + 0.1362533626 + 0.1062481255 + -2.1911777334 + 0.0563569012 + 0.4604884820 + 0.0678187434 + 0.2008169234 + 0.0395531086 + -0.3948761334 + 0.9143877662 + -0.0162692903 + 0.4396843856 + 0.2408248687 + 0.2774339995 + 0.4983088551 + 0.0928241028 + 0.4052256387 + 0.0942121435 + 0.1995283039 + -0.1786888762 + 0.1538779751 + -0.6927377263 + 0.1448593365 + -0.6284821473 + -0.0031143447 + -0.3306565856 + -1.4777390892 + 0.1565085035 + 2.4679846434 + -0.5977708551 + -0.0814076776 + -0.6050842729 + 0.2634943034 + -0.6253737124 + 0.0862277947 + 0.1084213140 + -1.7561379760 + -0.0972585809 + -0.1254302025 + 0.0656794645 + 0.3456697033 + -0.7155594095 + -0.0905441276 + -1.3150090903 + -0.3501135505 + 0.2752762098 + 0.0752954001 + -0.3462553824 + -0.2210669184 + -0.5524824232 + 1.4359228412 + -0.5938969484 + -0.1821934068 + 0.6975684106 + 0.6689322063 + 0.5388848131 + -0.9118779247 + -0.4935295644 + -0.9813900327 + 1.0819978586 + -0.0845935729 + -1.2857630329 + -0.3483703418 + -0.5778428139 + -1.4656476464 + -1.2277231706 + 0.5100039495 + 0.8231558972 + 0.8584516059 + -1.3328841540 + -0.0445214372 + 0.9619222815 + -1.1073089114 + 0.5231339147 + -1.0786442299 + -2.6633797830 + -0.3734564000 + -0.6988357089 + 0.1793404150 + 0.4563436369 + -1.0240929397 + -0.3086853955 + 1.1619124309 + 0.0811288453 + -0.9565358669 + -0.9457843790 + 1.3917002864 + 1.0004672852 + -0.8098413146 + -0.7392950571 + -0.9689456968 + -0.2890940027 + 0.0442600610 + 1.7295357074 + -0.0359537107 + -0.8130522077 + -0.3500849803 + 0.4648128580 + 0.1196296715 + 0.9838458606 + 0.4623025370 + 0.0556570970 + 0.0612526835 + -0.0816630800 + -1.1336759227 + -1.3062803262 + -0.3107001682 + 0.3845298208 + 0.5724638133 + -0.1471438678 + 1.3457526026 + -0.9744230016 + 0.9818819666 + -1.5847469978 + 1.4599460767 + 3.0138339228 + 0.6051537350 + -0.0676262115 + 0.4118839793 + 0.6477115327 + -0.3921994021 + 0.0114464013 + -0.1751737619 + 0.0538213492 + 1.2412110308 + -1.7881193727 + 1.7530074994 + 0.9193794762 + 0.0871103992 + 0.3507917218 + -0.2378252505 + 0.3794949476 + -0.6215945145 + 0.7694412509 + 0.3768399499 + 1.4643775547 + 0.8742897986 + 0.6118582760 + 0.6526562158 + 0.8275820455 + 0.2784112550 + 0.7409149767 + 0.6791843015 + 1.2033927649 + -1.4734262504 + -0.3517110319 + 0.2575094855 + 0.8307565069 + 0.4302732759 + -0.3748665211 + -0.6366162534 + -0.5467602417 + 1.1879985240 + 0.1594754175 + 0.6530183196 + 0.1031095623 + -0.5162124185 + -0.1848545504 + 0.9347603534 + -0.4771093242 + 0.7847221788 + -0.1548617009 + -0.1347368035 + -0.3059810397 + -0.9422220877 + -0.8492875256 + -0.3302733121 + -0.2626521821 + 0.8662505394 + 0.5747642567 + -0.9532640527 + -0.4317040518 + 0.3622493374 + -0.7246143081 + -1.6975265208 + 0.3375653941 + -0.0971788043 + -0.3345894732 + -0.1957404776 + -0.4817881773 + -0.9851172211 + 0.3441725797 + 0.1730959908 + 0.5306170701 + 0.4438535655 + 0.4097206720 + -0.4150472497 + -0.2330084151 + 0.0410324487 + 0.7674683973 + 3.8997566127 + -0.1788506680 + 0.2263504858 + -1.0667384896 + 0.7234545436 + 0.3181934693 + 0.4168141748 + -0.3791457183 + 0.5328543562 + -0.9386494811 + -0.8551597782 + -0.2856018360 + 3.5909940854 + 0.5457318302 + -0.3816553099 + -0.7100393081 + -0.7982090165 + 1.3275978321 + -0.1039077547 + -0.0356951482 + 1.0818189170 + 1.4788780443 + 0.1798022169 + -0.5895476129 + -3.2209414158 + -3.2724465319 + -0.4817727614 + 0.6536156634 + -0.5276234886 + 0.0215347436 + -1.1855017388 + 1.0483851660 + -0.2544861248 + 0.1956829789 + -0.5217542838 + 0.1288877992 + -0.1861145521 + 0.7788675286 + 0.1815565944 + -0.3239805358 + -0.9621140562 + 0.3292597400 + -0.5515477236 + -0.6207020532 + 0.7060298117 + 0.6359867432 + 0.5981873011 + -0.1307376035 + -0.5315098001 + 0.4740074390 + -2.1774899645 + -0.9601742260 + 0.4065896226 + 0.2055541419 + 1.3644429110 + -0.9257810146 + -1.0598373388 + 0.5781782380 + 0.8659485164 + 0.6551846055 + 0.7547622947 + 0.8772587107 + -2.1487203584 + -0.1554497976 + 0.9381899765 + 0.0367332854 + 0.8189364893 + 0.6529361697 + -2.1775606148 + -0.6807644764 + 1.3344611721 + -0.6534154100 + 0.5194749676 + 0.8050742173 + 0.3572890662 + -0.4299123117 + -0.2880052875 + 0.9632599655 + -0.5889109843 + 1.0101017456 + 0.9428902603 + -0.2969133049 + -0.1991615335 + 1.1039700001 + -0.5732329183 + -1.2839225498 + -0.1689706981 + -1.8326421553 + -0.0979544965 + -0.0834720056 + -0.5095449590 + -0.2651512056 + 0.7175975297 + -0.3249943004 + -0.2721960513 + -0.1142735636 + -1.3458650505 + -0.5949470761 + -0.0020418156 + 1.4568833465 + -1.5557732229 + 0.2161638654 + -1.9680980506 + 0.3592493224 + -0.1380025983 + 0.0830959467 + -0.8324122060 + 0.0915440585 + 0.9232602648 + -0.5574165350 + -0.8697812633 + -0.3857573898 + 2.8966165309 + -0.3064785014 + -0.4207294394 + -2.1156314676 + 0.0533977636 + -0.4991181432 + 0.4576914253 + 0.2251331837 + -0.2365176428 + -0.9936437924 + 0.1931574419 + 0.5181233139 + -0.1116142398 + 0.4070798438 + 0.2693258942 + -0.1972089070 + 0.1153868760 + 0.3656162869 + -1.2254550523 + -0.9500113397 + 0.9729752430 + -0.0661111148 + -1.0369140189 + 1.0245752062 + 0.9919507510 + 0.0318745934 + -0.0697848458 + 0.3433080178 + 0.7510105073 + 0.2333290043 + -0.8559230507 + 1.4420022735 + -0.2979080581 + -3.2031372167 + 0.8225641747 + -0.4140463085 + 1.6543507160 + 0.4158486100 + -0.4481980684 + 0.4275425389 + -0.3240612730 + -0.0417492242 + -0.7874918080 + 0.1746374596 + -0.3894121789 + -0.4489718701 + 3.4530897495 + 0.4105346131 + -3.1880311136 + -0.4789110789 + -0.9821741004 + -0.0937924827 + 2.3599204780 + 0.5270061411 + 1.0032959391 + 2.2163176707 + -0.9384521320 + 0.9940715318 + 0.7926760112 + 0.9442140355 + -0.5906897024 + -0.3892961246 + 0.3552161863 + -5.2716719167 + -0.1179307778 + -0.3904052239 + 0.0250395742 + -0.9868069032 + -2.2985137379 + -1.3677610429 + 0.0509385189 + -0.7081747849 + -0.2531525166 + -0.2965275869 + 0.3051189209 + -0.2123470869 + -1.1335446573 + 0.3923025816 + -0.5037887612 + -0.1007743012 + -1.2211774223 + 0.6168850347 + 0.4151846283 + 0.5336747964 + -1.7572502951 + -0.0890335257 + -0.5580069346 + 0.4942488149 + -1.6592884785 + 0.7182256583 + 0.7150707977 + -0.9875349217 + 0.6745401660 + -0.1039202617 + -1.3139212801 + -0.0217848731 + -0.5174283778 + 0.3149861035 + 0.0722696513 + -0.7117142707 + -0.0754628670 + -0.0330177283 + -0.4667636684 + 0.2690171584 + 0.7830433544 + 0.6578311800 + -0.7364122533 + -0.7198514831 + 1.4759619962 + -0.0166361751 + 0.6127372739 + -1.2706418827 + 0.4378679626 + 4.4011320278 + 0.0785600400 + -0.2525701889 + 0.4199100654 + 2.2181418644 + 0.0831281883 + -0.1166007363 + -0.1650131942 + 0.0315695097 + 0.4782231426 + -2.0434979152 + 1.1037769620 + -1.2494022676 + 0.7818185877 + -0.5116865227 + 1.4692143738 + -0.8945981080 + 0.1749644098 + -0.3305683627 + -0.1342756399 + -0.5192438648 + 0.6909286670 + 0.1603452548 + 1.0192599419 + -1.4066957031 + 0.6739787457 + 0.0131797862 + -0.8291616327 + 0.1395530129 + -0.6050036994 + -1.1464615711 + -0.6563868621 + -0.5167170448 + 1.6768850827 + 1.0726437229 + 0.4232882529 + -0.3961335718 + -0.5161762620 + 0.6798105501 + -0.3575787466 + 0.1646686939 + -1.0109976369 + -0.7567328955 + 0.4669975948 + -0.1747926709 + -0.8807603680 + 1.4241051587 + -0.4251430123 + -0.9478260439 + -1.3453468111 + -0.1282515029 + 0.2057437300 + 0.5512283961 + -0.2738979900 + 0.1534272636 + 2.1742570288 + 0.8081077768 + 1.1958956739 + 0.1193478096 + 0.7136669390 + -1.3048844392 + -0.0743053818 + -1.6172500849 + -0.9214599855 + 0.2669023218 + 0.5728739478 + 0.0500795567 + -0.1969505075 + -0.3621672031 + 1.0584273920 + -1.1087476368 + -0.6092009948 + 0.9603132903 + 0.8405220895 + 2.2823289971 + 0.8085050868 + 0.4878067826 + 0.5863583355 + -1.1366977798 + 0.0733837704 + -1.1022949034 + -0.4511345955 + 0.1512673706 + 0.0123382946 + -0.4706577797 + 0.1385941904 + -1.6423062301 + 0.7349390799 + 0.1470146528 + 1.3815588045 + 0.7433022541 + 1.1818745903 + 0.2171356678 + -0.2510766211 + -0.8541125458 + -0.1175114004 + -1.4263851712 + 0.5378641385 + 0.3814139043 + -0.3758958374 + 1.6655458257 + 0.5345293776 + -0.2290742365 + 1.1399007725 + -0.9011176499 + -1.8633487577 + 1.4904346528 + -0.1608934363 + 0.5593088477 + 0.8381290960 + 1.6790581899 + 1.0813331824 + 2.9537353162 + -0.3773451203 + 0.0530197986 + -1.5066644082 + -0.7311762850 + -0.7245526773 + 0.8300198326 + 0.4015478023 + -0.7757652438 + 0.4533358640 + 0.1678303990 + -0.0803204315 + 0.8301887809 + 2.6633896612 + 0.7292131747 + -1.0637119241 + 1.6043646807 + -0.6892778328 + 0.2276199924 + -1.0482586979 + -0.1303468949 + -0.7830862758 + 0.1451135800 + 0.1209421712 + 0.3224223457 + 1.8464773659 + -0.4192699972 + 0.8504839868 + 0.3340184386 + -0.9592843395 + 0.5604546076 + -0.6049617847 + 0.5387592575 + 2.1679026092 + -0.7529993720 + 0.5139825911 + -0.8824491444 + -2.0544315398 + 1.1327946284 + 0.4572922527 + -1.7350832524 + -0.0627362663 + 0.6198245360 + 0.3113457335 + 0.8135062473 + -1.7437078657 + -0.4094193569 + 0.9495157359 + 0.7316162260 + -1.1986265817 + 2.3738944773 + -0.4415715747 + 1.8676963390 + 1.2308260548 + 0.2131434883 + -0.7692661903 + 0.8851682327 + -0.6974250930 + -0.7329408414 + -1.3282267943 + 0.7615848747 + 0.1455478671 + -0.2641181355 + 0.0624200653 + 0.9671130824 + 0.5842593291 + -1.6720731210 + 0.5721888128 + -0.5231684857 + -1.8760553350 + 0.2504188046 + -0.8302292502 + -1.3418835560 + 1.3194078101 + 1.4437727272 + 0.7370057720 + 0.1419625080 + 0.7549552749 + -1.1699884865 + 0.8051896540 + -0.5667713831 + 1.1058390991 + 0.0247882018 + 2.2145228270 + -0.3077431653 + -0.4659024842 + 0.8481522456 + 0.0132465057 + 1.9580294337 + 0.4749955922 + -0.9307078183 + 0.4233407956 + 0.0238222106 + -0.2498580707 + -2.0652432784 + -0.1885126404 + 0.1202879765 + -0.4309106261 + -0.7319188440 + -0.5953361109 + 1.0135930365 + 1.2554288672 + -0.3950838269 + -1.1189326047 + -0.6787893462 + 1.1620958637 + 0.6062865241 + 1.1526913611 + 0.5946061325 + 1.4060171861 + -0.2801544766 + -1.1009398808 + -2.3584536298 + 1.3997044792 + -0.2908291838 + -0.6814138510 + 1.9424177480 + 0.2863683944 + -0.7121995511 + 1.1256557836 + 0.1694237137 + 0.3590725308 + -0.2227492513 + 0.2788909787 + 0.4569714325 + 0.2333823556 + -0.0554485605 + 0.4944174770 + -0.0286605877 + -0.2341442060 + 0.3820664479 + -0.7523734363 + 0.3842210366 + 0.0665009954 + -0.0810113370 + -0.1379397366 + -0.9705121035 + -0.8885935708 + 3.4631723332 + -0.0192649282 + -0.2873724246 + 0.4293375716 + 0.1221754465 + 0.6350572143 + -0.1210178971 + 0.2918695465 + -1.0259630987 + 0.1575604150 + -0.2888725635 + -0.7847446089 + -1.7250441529 + 0.0224791263 + 1.6176062663 + 0.6396926802 + -0.1650723070 + 0.2805758274 + -0.3388279272 + 0.1006770817 + 1.7664431142 + -0.2812196041 + -0.9880252268 + 1.7127530484 + 1.3756042231 + -2.5563700630 + 1.1118217932 + -0.0614918925 + -1.1779500812 + -1.4850433321 + 0.1824621808 + -2.8781180634 + -1.1591685741 + -2.4400077496 + 0.4414991338 + -0.4433771362 + -2.5761488496 + -0.9975396230 + -0.5445387704 + -1.8208754068 + 1.6709789146 + -0.5817944375 + -3.4883787656 + -0.7407191191 + 0.1389566713 + -4.6267865443 + -3.4602371506 + 1.0460230806 + -0.8108713234 + 1.0185632078 + 0.4794064446 + 0.5058685771 + -1.1102979319 + 0.3672540816 + 2.2081405041 + -0.3379181916 + -0.2814702314 + 1.0484743146 + 0.0001846198 + -0.0014445852 + 0.0000587603 + -0.0001449472 + -0.0001187761 + 0.0007734141 + -0.0000996026 + -0.0002918483 + 0.0002413662 + -0.0010047060 + -0.0017327607 + 0.0005455017 + 0.0001178990 + -0.0001142632 + -0.0009334372 + -0.0018673730 + 0.0000828949 + 0.0001459151 + 0.0005028604 + -0.0003682209 + -0.0001058523 + -0.0003409919 + 0.0000632070 + 0.0001557000 + 0.0003480488 + -0.0011223594 diff --git a/tests/Pimd/regtest-2/weights.002.data b/tests/Pimd/regtest-2/weights.002.data new file mode 100644 index 0000000000..5f937f539e --- /dev/null +++ b/tests/Pimd/regtest-2/weights.002.data @@ -0,0 +1,1101 @@ + 3.2434042216 + -0.3320408891 + 1.4451649306 + -0.8551150472 + 0.1649375821 + -0.8664309838 + -2.1332297274 + 4.3317276628 + 0.6641778379 + -1.0748534588 + -0.3250005459 + -0.2899380641 + -0.4530086874 + -0.2508815753 + -0.6476712880 + -1.4485167343 + 0.8421628820 + 0.9320479371 + 4.9017575352 + 0.5267525556 + 0.1151578638 + -2.9507354504 + 0.4947399913 + 3.1842758012 + 2.1320788625 + 0.6079378819 + 1.1318058134 + -0.1312316865 + 0.6697790424 + -0.9150761100 + -1.5492825893 + -1.7565362683 + -0.9336739292 + -0.7333136301 + 1.0967052473 + 1.7361610765 + 0.8078304310 + -1.4371906425 + 2.2747276967 + 0.4544333080 + -0.8612097753 + 1.8072169315 + -0.2325227687 + 1.1481341061 + -2.5963690010 + 0.5385563909 + 0.0355912826 + -1.2267787011 + -1.2003210245 + -0.3343211993 + -2.2694194390 + -2.8605385299 + 2.1399920474 + -0.4207202399 + -2.2274533851 + 0.8788132175 + 1.5553408211 + 6.8164253901 + -0.7779882454 + 4.6131491066 + -1.1443487475 + -1.1445136848 + -1.3784245442 + -1.9812566864 + 2.9943617808 + -2.1247223623 + -3.9178768759 + 0.5743268461 + 6.4082080750 + -0.3801474769 + -2.1784415384 + -3.3210238463 + 2.0293316741 + 0.5714028804 + 2.0202785387 + 3.2239310210 + 1.5641824189 + -2.7208370757 + -1.2258134246 + 3.2616606921 + 1.0825196226 + -0.9575024391 + -0.7599874423 + -0.4748793787 + -0.6506963138 + -1.2746179942 + -2.3605732094 + 1.1237645189 + 0.1803611471 + 0.9211840193 + -3.3871038095 + 3.4783798568 + -1.6119404114 + 3.8268447703 + 0.9858380243 + -1.0372033510 + -1.8071080064 + -0.5082524591 + -1.9340385699 + -1.8781011203 + 1.9066203647 + -2.9160087929 + 0.6083357850 + -0.5964384834 + -0.6037376525 + -4.2617610176 + 0.0162439370 + 2.3138299161 + -1.6817277848 + -1.8266536111 + 1.8736023204 + 2.5654035312 + -1.6531180968 + -1.0322324813 + -2.9025876684 + -0.2319842704 + 1.7930632623 + 2.5678160158 + -0.3392449586 + -0.3528974547 + -1.9814526486 + 0.4216483194 + -1.6509904895 + 0.3311658096 + -2.3125932529 + -0.0440700573 + 0.7164969429 + 0.1818788297 + 0.2777263914 + -0.2540334164 + 1.9987568340 + -0.0545783946 + -0.0532710721 + 0.6008236490 + 0.9493501872 + 1.8668042283 + -0.5172988729 + 0.1498374033 + 0.3312873205 + 0.1134743650 + -1.6691487277 + -1.5390638184 + -0.1218133026 + -0.8093179094 + -1.8305307820 + -0.2170249331 + 0.7194793731 + 0.2247079659 + 0.3580589521 + -0.1889454182 + 1.5668978104 + 1.4586671678 + 1.7552482665 + 1.0639048633 + -0.1092070961 + 2.5400609744 + -0.9476898865 + -2.8666938247 + 1.1309463397 + -0.0476432583 + -2.9852467354 + -1.2538717371 + 0.1609619822 + 0.8941741505 + 0.4123956375 + -0.1703983864 + -0.6326174946 + -1.4710948053 + -1.6721385959 + 1.2327351410 + 1.8715545849 + -0.5191309045 + 0.3366185518 + -1.1286182994 + 2.5662236086 + -1.9450640933 + -0.4933988323 + 0.2305312586 + 1.1877241189 + 0.9258961581 + -0.4287957998 + 0.4383034248 + -0.4265485027 + 0.6717372429 + -0.7107125998 + -0.8007502633 + -0.7844716620 + -1.6492006304 + -1.4100911724 + -0.5842164013 + 1.1061663996 + -0.9203755595 + 1.3793607754 + 0.2610495323 + 0.3413699806 + -0.3900265341 + -1.2317925764 + -0.9402861858 + 0.0659023814 + -0.6083852186 + -0.2026400877 + -1.1622934857 + -1.0775280965 + -2.1227546131 + 1.5658151075 + 0.2423443909 + -0.7273897069 + 0.3337649055 + 0.9863561832 + 0.9157120049 + 1.0095956539 + 0.2075811478 + -0.1404255962 + 0.7768539474 + -0.3498808387 + 0.5599334372 + -0.3510591378 + 2.2184506421 + -0.4749708058 + 0.2183374140 + -0.7323566599 + -0.5802928259 + 0.7566487764 + 0.8977414732 + 0.4900747686 + -0.1062606144 + 0.7022618794 + -0.7155809758 + -0.3756938946 + -0.0592154096 + 0.5785152157 + -0.2912895158 + 0.1597336771 + -0.1595350817 + -0.0042463041 + -0.2469824101 + 0.0170972648 + 0.0862794936 + 0.7624303882 + 0.3693309676 + -0.2930623919 + -0.3723384805 + -0.8712150002 + 0.3953926241 + -0.4700012498 + -0.4995427766 + 1.1908891419 + -0.5198222644 + 0.4449141627 + -0.2153726300 + -0.1745076586 + 1.2390706383 + -0.1089921229 + -0.4107781466 + 0.4801861751 + -0.6727418174 + 0.5482030116 + -2.0497026123 + -0.9229747131 + 0.9499187217 + 1.2433754140 + 0.3133031881 + 0.6531300257 + 0.1944254023 + 0.5746705964 + 1.2525094509 + -0.3845560050 + -0.7367426471 + 0.3982911829 + -1.6757001321 + -0.8786789715 + 0.9725308112 + -0.2246836540 + 0.7142254320 + -0.6754879925 + -1.0795469132 + -0.5269092632 + -0.5670831690 + 0.0837794448 + -1.1065171180 + 1.6909613459 + 0.6433755899 + -2.5935680211 + 0.3236093730 + -1.2091914628 + -0.9560554523 + -0.9259586535 + 0.3560358123 + -0.4855946997 + 0.5284112483 + -0.8576985808 + -0.4495606911 + 0.4016693293 + -1.5665543928 + 0.9640764246 + -0.5668751077 + 0.4618600942 + 0.7168497099 + -0.4818621479 + 1.0928057004 + -1.6578850789 + 1.9804649170 + 0.0998152885 + -1.9736884158 + 2.0805512468 + -0.7227274992 + 0.5403666440 + -3.1958204873 + 1.2606759703 + 2.8717294297 + 1.4211904597 + -0.7969974865 + 1.3512774401 + 1.3130793839 + 1.1836990367 + 0.3917635462 + 3.4778016576 + -2.1364713915 + -2.1396346163 + -3.4982753862 + 2.3508691769 + 0.4296452058 + -1.6532898510 + -4.5253542775 + -0.7331435178 + -2.9767385004 + -2.7547394586 + 0.0882232388 + 2.4776679939 + -0.5759932734 + 1.6525852717 + 1.2568682718 + -6.2250510807 + 3.1212388660 + -4.7745976053 + -0.2419359037 + 2.1746211218 + 1.7051844296 + -1.8773319594 + -3.1567104964 + 10.4726956846 + -3.7035003690 + 2.2407506809 + -12.1769143560 + 6.9934150916 + -0.5293084288 + 9.4184175648 + 3.3525371266 + 1.9870027786 + 1.9465810078 + 0.6027983596 + 0.1286948525 + -0.1499025749 + 0.8812158894 + -0.0142311679 + -0.1897728848 + 0.2037415660 + -0.9138093305 + 0.0632294316 + -0.6102457997 + -0.8001802236 + 0.1625089163 + -0.7041020515 + -0.1043622988 + 0.5162855634 + -0.6681477188 + -0.3810841559 + 0.4184948811 + 0.5440316505 + 1.1604749582 + -0.3609819211 + 1.0823582875 + 1.5879959200 + 0.5048447024 + 0.0120652395 + 0.1609399544 + 1.0875675020 + -1.1700113349 + -2.9377893189 + -1.0675992013 + 0.6610505037 + -0.0915505144 + 1.4377610951 + -0.7344251164 + 0.4246760977 + 2.8843211601 + -1.6804189337 + 0.9989318283 + -0.1155128118 + 0.7903805747 + -2.7504695531 + 0.6950606272 + -0.0792293515 + 2.1233822623 + -0.8939637458 + -0.0238490691 + -1.5767302556 + -2.2799219969 + 1.5272068491 + -0.4044246168 + 0.1491017855 + 0.4796922229 + 0.5844377065 + -0.4307810759 + 0.0534411474 + -0.2715243553 + 0.1849141735 + -1.1484093999 + -0.4673210603 + 0.1653000344 + 0.2921465767 + 0.9392215903 + 0.1744782239 + -0.2210542706 + -0.4193954301 + -0.1132719160 + 0.6408136442 + 1.0038636388 + -0.5330742053 + -1.0340150293 + 0.7625177997 + -1.1217128330 + -0.3831729509 + -0.1563838045 + -0.9165617211 + -0.4097281809 + -0.8754184075 + 0.7113202307 + -1.2469636393 + -0.8519923662 + 2.3232442170 + -0.1904500902 + 0.0232816505 + -0.2724906194 + -0.6316735059 + 4.9054950507 + 0.7697347583 + -2.9953063037 + 0.5291330412 + 1.1442409519 + 0.3478749625 + -0.9250601614 + -1.8977944934 + -0.2280223200 + 2.2087699108 + 0.3053918729 + 0.4197967362 + -0.7842422506 + -0.1740260617 + 0.0717881145 + -0.1283698135 + 1.0378227086 + 1.2913470751 + -0.4174795504 + -1.0264951211 + 1.0140461085 + -0.3254609877 + 0.2062307467 + -0.4456217654 + -0.2137560813 + 5.0843943385 + 0.1294896691 + 1.4430061883 + 0.0192967382 + 0.4490384082 + -0.0463171456 + 0.2567725025 + 0.7584502276 + -0.5869428994 + 0.2333273410 + 0.0232697527 + 0.1196378591 + 1.7617309734 + 2.8891702936 + -1.2473763104 + -1.1185473034 + -0.1419233877 + -2.2569865366 + -0.7770225926 + -1.9126602284 + 1.0489792506 + -0.8554589310 + -1.4366293281 + -0.7428706364 + 2.9738325025 + -1.3314208428 + 0.9809178622 + -0.3359457187 + 1.0129407475 + -0.1766943902 + -1.7423263042 + 1.0086884406 + 1.3141035318 + 0.0278998133 + -1.6471614479 + 1.9462649816 + -0.7139845245 + 1.0414941443 + 0.1539474205 + 1.4316223773 + -0.0423282817 + 1.0976066427 + -0.4324188914 + -1.2169335187 + -2.1115297009 + -2.3218593806 + -0.0101791936 + 0.5971915955 + 1.1101014801 + 1.2078160296 + 1.7318426044 + -0.4585575166 + -3.7755317574 + -1.5703331668 + -0.5826307325 + 0.4686509927 + -0.5493564585 + -0.1707032100 + -0.2574145301 + 0.0229114388 + -0.4567861838 + 1.0171070466 + -2.2274274592 + -0.4087610968 + 0.6750071807 + -0.1463176264 + -3.4432545347 + -0.3325553371 + -0.5306999101 + -0.2449993142 + 2.6108696421 + 0.8018321139 + -0.7986472516 + -0.1172794925 + 0.5943722809 + 2.2119513094 + 0.6229174985 + -1.5964382343 + 0.5014182526 + 0.8191888345 + -0.3201592210 + -1.1326399832 + 0.1985076429 + -0.3638534002 + -4.0396542647 + 1.4398235777 + -2.6144705208 + -1.3640075977 + -1.8473262793 + 1.3787233543 + 0.9131620863 + 0.0171915315 + 0.0984234357 + 0.6160314681 + 1.1000249230 + 1.4428657782 + -0.1004968379 + 0.3498037795 + -0.1644550115 + 1.2892923069 + -1.3537012527 + -0.6362425759 + 2.6637368309 + -0.6359316226 + -1.1273884505 + -1.1716109846 + 1.9432193152 + -1.5923333174 + -0.1468205797 + 4.0898261731 + 1.8051880596 + 0.3023202261 + 1.2892706738 + 0.4938801487 + -0.1422519076 + -0.8600899479 + -0.4270275192 + -0.5466523980 + -1.9651906715 + -0.3829782786 + -0.4065496388 + -0.1158614908 + 0.3441395745 + -0.3148748809 + 2.2734250412 + -0.6998056029 + -0.5571124095 + -2.5494765639 + 0.5375285892 + -0.4253033751 + -0.4640313532 + 1.2212318822 + -1.3328159722 + -2.7145676655 + 1.7916009845 + 0.5956696280 + -1.5835231621 + 0.3287934099 + -0.3582223035 + -0.8722489409 + 0.9369969104 + 1.5939283468 + 1.1492908399 + 1.8820884315 + -0.4386419955 + 1.3208859814 + 0.7694155238 + -0.4209687355 + -0.0521709196 + -0.8516477404 + 2.6598526965 + -0.1326587678 + 0.1201200462 + 0.1275672118 + 1.0686913407 + 1.1687254220 + -1.2061266214 + -1.3356447361 + -0.0228853770 + -0.7100807935 + 0.3839057556 + 1.1892386226 + -1.5409247376 + 3.0974312491 + 0.5986487054 + 0.4530587730 + 2.4487621464 + 0.3223385053 + -1.1341208024 + -2.4618761057 + -2.4150022777 + -0.2702183235 + -0.2181595904 + 0.1649700428 + -0.8864086362 + 0.2712600065 + -0.4346169381 + 0.2795701771 + -0.7351680883 + -1.0109174247 + 0.7364923903 + -1.4524985787 + -0.0956222575 + -3.0611932908 + 0.9509416208 + 0.0000923678 + -0.4286724065 + 3.0940971830 + 0.4678918193 + -0.9939635997 + 0.2684984253 + -2.5746444932 + -2.3153943800 + -0.3194666337 + 0.0647549320 + -2.2564662486 + 0.2641532238 + 0.9783180933 + 0.7197061352 + -1.8582042845 + -2.0350024956 + -0.0299517576 + -0.4791706950 + 0.2794799418 + -0.1127257186 + 0.5003504905 + -0.2252779334 + 0.6168200081 + -0.3656052565 + 1.5135905356 + -1.2072409144 + 0.3698699447 + 0.7861853317 + -0.8975212042 + -0.4021746774 + -0.1230550430 + 0.0017051960 + 0.9380160678 + 0.0180484795 + -1.4743757318 + -0.1623070920 + -0.8755401645 + -0.3943274048 + 0.3461644330 + 1.2782347958 + 0.7741917248 + -0.4400463537 + 0.6883697798 + -1.4037017591 + -0.9717155438 + 0.3475840084 + 2.1348046276 + -1.7097275737 + -0.0275843504 + 1.8346882478 + 1.1111178898 + 3.0632520664 + -0.6114928968 + 1.5181764542 + 1.5996910548 + 0.0195657876 + -0.1209738619 + 2.0244914080 + 0.2499239369 + -1.1985746347 + -0.2613426066 + -0.3113912525 + -0.9942973538 + 0.4041706951 + 0.7324225394 + -1.8772323167 + -0.6102549875 + -0.4413545974 + -0.2342076472 + -0.3611140858 + -0.4004568887 + -0.8934503278 + -0.9799638625 + -1.5723791541 + 0.2283415233 + 0.6747268995 + -2.0692933873 + 2.8471988017 + 0.1118468860 + -0.8850621389 + 0.4070699394 + 1.4568259992 + -0.0149000607 + -0.6273919818 + -0.0871529686 + -1.0286468975 + 0.5879294903 + 0.1091346679 + 0.1708239036 + 1.4738169487 + -2.6547588168 + 0.9866459190 + -0.1477286293 + -0.5228130639 + 0.6765635141 + 1.2920978235 + -0.0183695214 + -0.6802460606 + -0.3897256156 + -0.5037870141 + -0.1592327155 + 0.3733240317 + -0.2128718158 + -1.4831403973 + 0.5252495431 + 1.1162398313 + -1.6187909627 + -1.6001646368 + 1.1800851571 + 0.3209540345 + -0.1376370856 + 0.5717325185 + -0.1612548243 + -0.1172732040 + 3.2286201709 + 1.6227398522 + 1.3665903114 + -1.1010038838 + 0.0493791493 + -0.0700830117 + -1.0534966742 + 1.3786384961 + -2.4900679882 + 1.4424012273 + -1.8633952746 + 1.9003601836 + 0.7565803533 + 0.9985426170 + -0.1146269846 + -0.2027246594 + -0.7026713524 + -3.1384914349 + -0.9968399933 + 0.0465907385 + -1.4623891832 + -1.0844081846 + -0.2112292444 + -0.3163684456 + 0.1260769445 + -0.4564236484 + -0.3752398036 + 0.6357976092 + -2.7767326629 + 0.9844369745 + 0.8769766687 + 0.0927282641 + -1.2654396912 + -1.6124062194 + -1.9684394478 + -3.3851075782 + -0.7540353684 + 0.9727779966 + -0.6374294729 + -0.1953370873 + 1.2186757637 + 0.2889081588 + -0.6888345168 + 1.1029332953 + -0.6556504994 + 0.2929550511 + -0.8801337538 + 0.6698101852 + 0.6385997277 + -0.0742934371 + -1.9450595596 + 0.7865956681 + -0.5850291779 + -0.6299070731 + -0.4959928688 + -0.6523276684 + 0.4315699369 + 1.4574246927 + 0.9261532079 + -1.5370569856 + 3.4621844864 + 0.2757957093 + 1.2163486052 + 0.5292095662 + -0.5299199936 + -0.3924881620 + 0.3881889912 + 0.4998042542 + 0.9125423535 + -0.9591663393 + 0.0390793615 + -0.8553391215 + -0.0903651021 + 0.0325621452 + -0.3750702490 + 0.3884480974 + -0.7535844705 + 1.2001035910 + -0.0341311123 + 0.3905148585 + -0.2872292164 + -0.0976140284 + -0.9667381128 + 1.7855662096 + 1.3932670118 + 2.1509959520 + -1.2615322897 + -0.5050411536 + -1.1640016045 + 0.0222815445 + -0.7492164100 + 3.0108104471 + -0.2317852217 + -0.6899161221 + 1.0708943940 + 3.5033348012 + 2.0610853262 + 1.6507386129 + 0.8893092688 + 1.4007415317 + -1.6882431675 + 1.1484143557 + 0.4272466309 + -2.0095045822 + -0.9373786217 + 2.2195230916 + -0.3647762669 + 1.3283743515 + -3.0539202429 + -2.1813201125 + 2.0955132787 + 1.1081201177 + -0.3587980254 + -0.8079066989 + -0.5263676261 + 0.4497905569 + 0.4120702392 + -0.6732440114 + -2.4255966123 + -0.3651215630 + -1.1404319296 + 0.1190790112 + -0.2417011884 + -0.7436311073 + -0.8322599864 + 0.8749214050 + 1.7295285699 + -0.5734688967 + -0.2729068596 + 1.3582619823 + 0.2830600287 + -1.1841107821 + -1.7066736850 + 1.7134114818 + 2.3113477079 + -3.3018064060 + 0.3553594168 + -0.1450840625 + 0.9347965671 + -1.7209615694 + -1.5998773347 + -2.8612154247 + 1.0015361978 + -0.7685821254 + -0.3651018986 + -1.9309678616 + 0.3462845970 + 0.0413769373 + -0.5120048566 + -0.2117195681 + -0.2021307794 + -2.9101570734 + -0.5356278729 + 0.5702239151 + -1.6923177066 + 0.0890075068 + -0.6422803751 + 3.6461700584 + -2.3573702684 + -1.5748213203 + 1.0665687403 + 1.9897709399 + -0.5499772375 + 0.2897082925 + -1.6377113171 + 1.2539462515 + 0.2299033841 + -2.2878584885 + -0.9425458406 + 0.6612236109 + 0.6823411861 + 0.9337225446 + -0.2583553194 + -0.5880049209 + -0.2480847286 + -1.5372642386 + -0.1265751957 + -1.0066672944 + -0.9021986616 + -0.4974582267 + -0.1497872585 + -1.2339946952 + 0.7866670277 + 0.4262056933 + -0.1601518347 + 1.0473019798 + 0.4433830901 + 1.9296050172 + -0.7732587082 + -1.4913506038 + 0.3261036617 + -0.0683794939 + 1.8413869449 + 0.5477745061 + -1.4361734316 + -0.4965926561 + -1.2968120768 + 0.2961474898 + 0.8548338275 + 0.0803451127 + 0.5686233298 + -0.7714338442 + -0.0358164750 + -1.1716468410 + -1.0707628257 + -0.9901000993 + -1.4539968564 + -0.1395321239 + 0.8015690068 + -0.5505610161 + 2.7102277654 + 0.0561932668 + 0.1578068530 + -1.0343271560 + -0.0346705102 + 1.3198287617 + 1.9387384169 + 2.4023949985 + -0.3080128876 + 0.8805876227 + 2.4479065049 + -0.3795985397 + -0.0437386680 + -0.0120887403 + 0.1255984291 + -1.5059555828 + 1.3820127750 + 0.3111282507 + 1.7906422323 + -0.0093908839 + -0.3538363221 + 1.0546149791 + -0.8456998233 + -1.4398968961 + 1.8222396967 + 0.0060950887 + -0.4424090776 + 1.1358187367 + -0.7241708163 + 2.5467470252 + 0.3568285968 + -1.7646333792 + 1.7531114618 + 0.2062165179 + -0.6832582802 + -0.9690378283 + 0.1360460094 + 0.0501306430 + -0.4719763105 + 0.4419472561 + -0.7825610428 + -0.9447819439 + -0.9531863351 + 1.2928441500 + 0.0612607613 + -0.1651970380 + -0.3130936205 + -1.7753846611 + 1.1638260183 + -0.5482996166 + 0.9794132321 + 0.1448008026 + -0.3992688261 + -2.5755293868 + -0.0029717921 + 0.3792136310 + -1.5814705216 + -1.4196358687 + 1.4610185973 + -2.0242830197 + -1.5441493269 + 0.4794426543 + -0.4706394667 + -0.3396441574 + 0.2446017946 + 2.6477920244 + -1.6906609850 + 0.0103552352 + 1.2960786847 + -0.2936986244 + -1.0430062914 + -0.0096503168 + 0.9311301767 + 1.8942732896 + 0.0251620762 + -0.9829496144 + 0.8311157356 + -0.6997384923 + -0.5108030235 + 1.0590079398 + 1.3330952297 + -2.6930242630 + 3.3566614010 + 2.0895154897 + -0.4419618954 + -2.4979268376 + -4.6302592306 + -0.8206370899 + 1.4421249392 + 1.4356051016 + 2.4363501994 + 2.0091886284 + -2.4335692471 + 1.3006873470 + 0.6605774898 + 0.3424199576 + -0.7450019331 + -1.8785274882 + 1.0148486371 + 2.5342254461 + -3.4565022814 + 1.3795155152 + -1.7418494401 + -3.1152384745 + 1.1730281742 + 2.1335562133 + -0.0006602274 + 0.0001487049 + 0.0006985195 + 0.0007231695 + 0.0015376261 + -0.0001537444 + 0.0055642945 + 0.0021717015 + -0.0145894848 + 0.0002828188 + -0.0000822873 + -0.0006855023 + -0.0000693325 + 0.0037930764 + -0.0040881852 + -0.0024302338 + -0.0007997264 + 0.0000773621 + -0.0003884010 + 0.0001318157 + -0.0012332953 + 0.0001790076 + 0.0002016838 + 0.0005981705 + 0.0006077690 + 0.0130801381 diff --git a/tests/Pimd/regtest-2/weights.008.data b/tests/Pimd/regtest-2/weights.008.data new file mode 100644 index 0000000000..3169dad9ac --- /dev/null +++ b/tests/Pimd/regtest-2/weights.008.data @@ -0,0 +1,1151 @@ + -0.7585054632 + 3.7989526664 + -2.8116005929 + 0.9604599007 + 1.2909409662 + 0.0259162783 + -0.8564072678 + 0.8484974515 + -0.8387029205 + 1.3382144082 + -0.4428979956 + -4.7254069969 + 0.1470637208 + -1.6635299826 + 1.8304214713 + -0.7479133007 + 0.8053112885 + -1.1463902796 + 1.6725529229 + 1.6920687922 + -0.5444750498 + 1.4832471506 + -0.0159574577 + -1.6887052271 + -0.5568351174 + -0.8714713548 + 1.7950453750 + -0.5868359040 + 1.4070731828 + 0.9949787334 + -0.5528249924 + -0.0673506315 + 1.0293888040 + -0.4608414140 + 0.4928300445 + -1.5347865587 + -1.1634778214 + -0.7938734187 + -0.4796332671 + 0.8037235509 + -0.6032514299 + 0.8122962893 + -0.8517840493 + 0.7724590506 + 0.6499403391 + -0.3336868356 + 1.0878915410 + 1.0109766849 + -2.1582985022 + -1.8403470193 + 0.4754506422 + -0.9189280068 + 1.6350045691 + -0.3279246407 + 0.0827230830 + -0.4432342033 + 1.6092937871 + -0.2811145632 + -0.2371031542 + -1.1581052488 + 0.0714462610 + 3.1849801893 + 1.7403034689 + 0.3110933051 + -2.1299855797 + -0.6344464403 + -0.3060070951 + -1.0748663480 + -1.3924207088 + -1.4588385731 + 0.4987747763 + 0.1243210833 + -1.4034739010 + 0.9101651818 + 0.3380719553 + 3.0724761579 + -3.9932716942 + 4.6112923907 + -1.4996529903 + -3.3091474915 + -1.7037495701 + 2.3879227616 + -1.4885979444 + 0.8911427857 + -2.6444905598 + 2.7714827705 + 6.8662735566 + 2.0727653990 + 0.4168749136 + -3.3453214464 + -0.8467757066 + -1.4621662641 + -0.1917088476 + -3.3705046679 + -2.2231744312 + -0.3342873217 + 0.6928652434 + 1.0306811920 + 5.0648410111 + 1.3894005110 + 0.2374455283 + 0.1700290352 + -2.5157479823 + -1.6786962599 + 1.7170723476 + 0.4863930016 + 1.0397446421 + -1.1283230220 + -1.6704131277 + -0.5897179203 + -0.5482479431 + -3.0458065431 + -3.0177839527 + 1.4540917717 + 3.1938944807 + 1.7855274502 + 0.5719620625 + 2.0902511932 + 1.3601531793 + 2.8606648855 + -0.4660194046 + 2.1604835491 + -1.5402230392 + -2.0078861729 + 1.1583878191 + -0.5486427215 + -0.1303223772 + 0.4387346949 + 0.5031664915 + -0.3903342169 + 0.2712566622 + -0.9164392587 + 0.7804570298 + 0.1981497683 + 0.5931907328 + 0.1876406647 + 0.2347525310 + 0.5378074642 + -0.3417918018 + -0.4623060626 + 0.0490570110 + -0.4163484694 + 0.2156866849 + 0.1941720769 + -0.8094101104 + 0.2286850891 + -1.0726107932 + 0.4008264056 + 0.2833669534 + -0.6013715711 + 0.4125889479 + -0.4466826793 + 0.6771662900 + -0.6692967687 + -0.7504803244 + -0.4260731273 + -0.1891073339 + 0.1593726234 + -0.4266529170 + 0.1624111478 + 0.7923169477 + -0.5551484189 + -1.1093018974 + -0.4009602590 + 2.4172710837 + 0.3966124371 + -0.5980016847 + 0.2651018034 + 1.9031149728 + -0.6706383378 + 0.0620937239 + 0.0385410062 + -1.9476732175 + -0.3812103719 + -1.4213921458 + -0.9568283942 + -1.9929146702 + 1.9836822303 + -0.4096052862 + 1.0944145266 + 0.7739461462 + -1.2290342499 + 1.8468798134 + 0.7016895696 + -0.5860500115 + 1.2515461812 + 0.9034743574 + -0.8846102799 + 0.6432067859 + -1.2864494134 + 0.1124449312 + 1.7016660838 + -0.7797684868 + -0.8805621122 + -0.6460608145 + -1.0529175988 + -0.8303775003 + -0.9824820329 + 0.5405964631 + 1.1403052143 + -0.3542605071 + -0.5705942100 + -0.7818870420 + -0.0612865496 + -1.5103853784 + -0.3719348854 + 1.0240554682 + -0.4268086806 + 1.3933158725 + 1.3266573207 + -0.9416243296 + 0.6069372169 + -0.3894946171 + 0.8656342052 + 0.4658017357 + 1.1127756194 + -1.9019397696 + -0.7087220379 + 2.3370942909 + 0.2194979558 + 1.5057343249 + -2.1591310864 + 0.5845485975 + -1.6114647147 + -0.5943160956 + -0.8448519824 + -0.1133567689 + 0.7891498367 + -0.1236441640 + 1.2584406695 + 0.4414591442 + -1.7434082492 + 0.2923907161 + -0.6051456856 + -0.2209501435 + 0.4319911306 + 0.1779662261 + -0.4281235785 + -1.3750747041 + 0.9609919962 + -0.5610179445 + 0.2862069785 + 0.4670637098 + -0.7471992067 + 0.2993510937 + -1.0106363679 + 1.7278687369 + -1.4197573495 + 1.6046012362 + 0.0528062281 + -0.1920123700 + -0.1876084449 + -0.2001881898 + -0.4580460769 + 0.5085756600 + 0.1338986253 + -0.2517895509 + 0.1055642765 + 0.8731098582 + -0.4184836509 + -1.0749388628 + 0.3165462615 + 0.6243386982 + 1.3580123751 + -0.6463067146 + 0.0885731678 + 0.3017975641 + -0.7542801493 + 0.5135609869 + 0.5658900574 + 0.7316026969 + -0.7326712678 + -0.4452809670 + -0.4683671942 + -0.4249385244 + -1.7284790047 + -0.2635344235 + 0.7306817078 + 0.9737071992 + 0.8542372299 + 1.1129749041 + -3.1974855281 + 0.4372980925 + 1.1303142749 + 1.4799625293 + 0.3527927510 + -1.8495631207 + -0.0939697502 + 0.3756199220 + -1.3687734714 + 0.2051454233 + 1.5714806692 + -0.3662799989 + 0.0886981438 + -1.0799327805 + -0.9751810411 + -2.8069184284 + 0.8030101304 + -0.0265309988 + 0.2043054781 + -0.4873923396 + -0.7434497196 + 0.3861398611 + 0.1752313045 + 0.0911198039 + 0.0843221862 + -1.1854365521 + 0.4775042979 + 0.7615453258 + 0.4873296041 + -0.4657252183 + -0.9778672959 + -0.5944011865 + -0.1536883950 + 0.1713969547 + 0.5198889037 + 0.2953509339 + 0.4617149890 + 0.3830442756 + -1.1894927088 + -0.2919383844 + -0.4853523233 + 0.1935552496 + -0.0634788621 + 0.1855427159 + 0.3646041959 + -0.4121831335 + 0.0368755835 + -0.2476398532 + 0.2740003599 + 0.2013924820 + 0.2168762768 + -0.0795893849 + 0.8480125980 + -0.0202623670 + 0.2262724511 + 0.4709516587 + 1.3045001116 + 0.3771781063 + -0.2406990160 + 0.3482625569 + -0.2671097306 + -0.6763324350 + -0.0074221233 + 0.4511796691 + -0.1786642230 + -0.8182497836 + -0.0957709688 + -0.2972757482 + -0.0310579295 + 0.2424397847 + 2.4535387950 + -1.9818443809 + 0.9444998342 + 0.5503568965 + -1.3371033095 + 1.5591144177 + -2.4348199036 + 0.6975100928 + -0.3399386159 + -1.9187706010 + 2.2605893718 + 1.0630573031 + -0.6279270513 + 0.4112725918 + -2.1736256445 + -0.7435272983 + 1.0183479388 + -1.6818877959 + 0.5681257153 + 0.3286779446 + 1.6831231798 + 0.0162066305 + 1.1097398346 + 1.9962567496 + 0.1631292238 + 0.6571170716 + -0.9988397341 + 0.3670189289 + 1.2488670113 + -0.0782775325 + 0.2496786144 + -3.2177129293 + 0.8100435978 + -0.1139456848 + -1.3803332720 + 2.0982127135 + 1.6291069037 + -0.8751835730 + 0.6368285129 + -0.8452349932 + 0.1725924392 + 0.3917803811 + -1.1623132912 + 1.3457531714 + -0.4963533788 + 1.7600126183 + 0.1247590616 + 0.1847327995 + 0.9294589399 + 0.2757701003 + -0.7407829736 + 0.1096080779 + -0.1911348118 + -0.0608561805 + 0.4217548408 + 0.1488264997 + -0.3365465271 + 0.2595725806 + -1.7569542338 + -0.0426723939 + -0.2138246558 + 0.5323406147 + 0.3133649601 + 0.6037386633 + 0.3666101040 + -0.4971658180 + 0.6421213214 + -1.2450696257 + -0.0915795359 + 0.0210717241 + -0.1381327727 + 0.6967575859 + 0.8434168978 + -0.3253989501 + 0.5067087157 + -0.0550425048 + -0.0788678772 + -0.4935133191 + 0.0994930638 + 0.3174487551 + -0.3447304209 + 0.4315230755 + -0.4333214585 + -0.3340982942 + 0.1876958183 + 0.6032479029 + 0.0835292999 + -0.6370082661 + 0.2275757379 + -0.3315292650 + -0.1989726826 + -0.0195071129 + 0.2753308189 + -0.6041976368 + 0.1026535612 + -1.1086545218 + -0.5078661950 + -0.1115766396 + 0.0900122390 + -0.7155303103 + 0.5388396538 + 0.3771700207 + -0.4519814073 + -0.4856394135 + -0.3334530791 + -0.9359305089 + -0.9859956220 + -1.3407842235 + -0.5914013011 + 0.0312297252 + -1.2967084562 + 0.5347835345 + -0.3106220156 + -1.1648719155 + -0.3123280844 + -0.4347757568 + -0.2807293181 + -0.0019263908 + -0.3354411430 + -0.9451352079 + 1.2645728568 + 2.0284878424 + 0.4105986486 + -0.8755642516 + 0.7593463963 + 0.4086976996 + 2.2022270955 + -0.2494509942 + -0.2703094926 + 1.6034704660 + 0.1475799545 + 2.4689996607 + -0.7895544821 + 0.0061856168 + -1.0733917298 + -1.6263848706 + 2.3619122001 + 1.3591019252 + 0.8397639708 + 0.5397929134 + 0.0216736335 + -0.0261320130 + -0.2149356918 + -0.2865174541 + -0.7609050467 + 0.3057206415 + -0.0974844008 + 0.4111282405 + -0.1675567113 + -0.1895183325 + 0.6395267767 + -1.9093379095 + -0.6817066137 + -0.0010482544 + -1.4602903980 + -0.0739923282 + -0.3171061575 + 0.6750315678 + 0.5013710095 + -0.2465896305 + -2.9716390026 + -0.7309525866 + -1.8972995714 + 1.6748767261 + -0.2397399359 + -0.2310540428 + 0.8283391996 + -0.6031204074 + -0.0307518550 + 0.1590382210 + 0.0290029840 + -0.2401285933 + 0.2904266756 + 0.9732412677 + 1.4994638213 + -0.4974141169 + 0.8818874400 + -0.0927021624 + 0.2856438444 + -0.3958087405 + -1.3216875333 + -0.1992619756 + -1.1463469632 + 0.5837861112 + -0.6375473887 + -0.5504032798 + 0.0059873849 + -1.0603170334 + 0.4380406493 + 1.2840440218 + -0.8099996260 + -0.6683731871 + -0.8478475625 + -0.8392997633 + 0.6956019977 + 0.0982507865 + -0.9635846157 + 0.0897334028 + -0.2153478590 + -0.3415561305 + 0.5839262415 + -1.1753402375 + -0.7862706407 + 0.1408280284 + -0.2925753849 + 1.2830758565 + -0.8773299418 + -0.9652326220 + 1.4887796323 + 0.2013629597 + 1.2331338676 + 1.2174040351 + 0.5529136952 + 0.5126207754 + -2.6235397069 + 1.1843916724 + -1.2638695643 + 0.3969608092 + -0.4425714901 + -0.6416162159 + -1.1605275629 + 0.3469550485 + -0.1115835559 + -0.1289995856 + -1.5030113669 + 0.2139474257 + -2.0980239425 + 0.4961849428 + 0.6227714516 + -0.6364035780 + 0.8224275768 + 0.4685672091 + -0.2345497693 + -0.3222176056 + 0.6041225529 + -1.1710199137 + -0.8943836485 + -0.7446415899 + 1.1538010608 + 0.2424459515 + -1.1194500958 + 0.8434211942 + 2.2692307227 + -0.4028542274 + -0.3675646346 + -0.9776290689 + -0.1652631795 + -0.2849548590 + 0.0760797004 + 0.7603139685 + 1.5329414855 + 2.7584418326 + 0.1060428062 + 0.8405747168 + 0.5506426811 + 0.7343342710 + 1.0559535209 + 0.0718684067 + 1.4201084442 + 1.4677430114 + -1.4600318969 + 0.4363408119 + 0.0376048277 + -0.1978071131 + 0.1338753120 + 0.4850811879 + 0.6089228547 + -2.7464391650 + 0.2785447879 + -0.2932740645 + 0.0277107397 + -0.4753451707 + 1.8514077162 + -0.0508361015 + -0.1371907264 + 1.0892881222 + -1.8832914293 + -0.9652245991 + 1.0826106376 + 0.5256133612 + 1.0989164275 + 1.7954233437 + 0.7291293932 + 0.5159865132 + 1.2858732954 + -1.2690289713 + 0.0579609665 + -1.1139056155 + 0.5396107412 + 1.1017984124 + 0.1015144949 + 0.1706607477 + 2.2907421936 + -0.5877120758 + 0.1901310165 + -0.2930760222 + -0.6678695753 + -1.0293878206 + 0.3645388652 + 0.0164036507 + 0.4401084071 + -3.2611307548 + -0.8032725660 + 0.4310054676 + -0.9280806503 + 0.8694777690 + 1.9150693226 + -0.6821029696 + -0.2185008205 + -0.8835372963 + -0.6605693706 + 1.1452442963 + -0.0179892421 + 0.4414621502 + 1.0038499515 + 0.5000196283 + 0.8024135886 + -0.1472111437 + 0.0266607588 + -0.0600118972 + 0.0537843167 + -0.5619488513 + 0.0610556906 + 1.2701738723 + 0.0315923637 + -0.0147940623 + -1.6807367359 + -0.2841238443 + -0.4539422151 + -0.1771881422 + -1.4029287528 + 0.8367259065 + -0.3052875925 + -0.5446231643 + -0.2405596154 + 4.1578030202 + -1.0500828286 + -3.0085417114 + -3.2528583451 + 0.5109868397 + 0.3163536196 + -0.2410773710 + 0.3655781823 + 0.7877961814 + 0.0179447334 + -0.3610945802 + 0.1981178825 + 0.2846426083 + 0.2504422322 + 0.1648516148 + 0.0069914235 + 1.2596637119 + -0.2280505640 + -0.0394717740 + 2.4130667686 + -1.1150155851 + -0.0572664970 + 0.3986095875 + -1.7829932947 + 0.3339122380 + -0.8697622329 + 0.1706452050 + 0.4421492427 + 0.3174488698 + -0.2680435739 + -2.2648325239 + -0.1549464784 + 0.3086862398 + 0.3245737953 + 0.0282692680 + -0.2828645119 + -0.1920642882 + -0.7676248164 + 0.7070556142 + -0.9070049775 + -0.2394570885 + -0.4645009195 + 0.7606755334 + -0.7427306572 + -2.6222302174 + -0.5801092698 + -1.5617683819 + 1.7047570990 + -0.9696778742 + 0.0882483524 + 1.2565045982 + -1.3417941584 + 3.0348756111 + -1.4436358986 + -0.8065419695 + 0.3184897251 + 0.1843686909 + 0.7545090211 + 1.8137919569 + -0.4833364127 + -0.1407672660 + 1.1784212114 + -0.3619139430 + -0.6168206529 + -0.0498683674 + -0.6635709428 + 2.9559246768 + -1.5986142498 + 0.0415918710 + -1.0556287901 + -0.4062561848 + 1.6298711234 + 1.7902315445 + -0.3454182764 + 0.2215851162 + -1.0832299604 + 0.4922760367 + 0.8856059384 + 1.3550967223 + 1.5452880059 + -0.1363719926 + -0.0235831578 + -0.8165969221 + 0.6187202793 + 0.6447666024 + -0.0913164443 + 0.9062879570 + -0.1656589950 + -0.7398587105 + -0.1842566671 + -0.4389236489 + 0.9543360863 + -1.1150537600 + -0.3789340235 + 1.4647791658 + 0.8541462856 + 0.4012504075 + -0.5344430318 + 0.7532027810 + -0.1405716935 + 1.8496436250 + 0.3656596561 + -2.5274035625 + -0.8413311882 + 0.2835566440 + -0.6096734427 + 0.2630377107 + -1.4247149407 + -0.1297646990 + -0.0020566358 + 0.1960542919 + -0.7783934162 + -0.0777454113 + 0.1261276646 + 0.5790644988 + 0.0628589079 + 2.5006730697 + 0.2374604265 + -0.1950103934 + -1.5650980852 + 0.0996216966 + 0.2167734962 + 0.0322296618 + 0.5917420838 + -0.3090193690 + -2.4774975053 + -0.5231947385 + 4.2284328542 + 0.2003751870 + 0.8682332955 + 0.1035368078 + -0.6092074383 + -1.8690305813 + -0.1366659808 + 0.2838398370 + 0.2440075061 + 0.1699955053 + 1.2390978506 + -0.5658940654 + -0.9913050795 + 0.2199368282 + -1.6437384599 + -0.2738434493 + -0.6493827718 + 0.6225380132 + 0.6445741296 + 0.1584372958 + -0.5922501709 + 0.0208131662 + 0.4466365364 + 1.9351877019 + -0.7233390922 + -0.9832668885 + 0.7489559538 + -0.8143631491 + 0.9008598352 + -0.4037533043 + 0.5867071630 + 0.5244234143 + -0.3980955386 + -0.7877099076 + -0.0550687424 + 0.2389061667 + 0.7213886647 + 0.1079276392 + 0.3362873029 + -0.0650173689 + -0.3109746654 + 0.4086445905 + 0.1778245322 + 0.2779589914 + 0.5403283871 + -0.9975069691 + 0.3618938923 + -0.1614597647 + 2.5130304434 + 0.2156014444 + -1.6112702240 + 0.4412186862 + -0.6093620931 + 0.1537961826 + -0.3241420768 + 0.4493080502 + -0.0477859340 + 0.1659210904 + -0.2254377884 + -0.0887489332 + -0.9506431941 + 0.9673681905 + 0.1348600304 + 0.4297506681 + 3.0518993273 + -1.5452395949 + 0.0781315565 + -2.1373895327 + -0.2185269119 + -0.0749302612 + 0.0168850500 + -0.0175249355 + -0.0575091308 + 4.4480283188 + 0.8070961281 + -1.4281877609 + -1.1398856340 + 0.6623363211 + -0.3899141701 + 0.0143163942 + -0.4838898469 + 0.5874269170 + 0.3689739304 + 0.2454059288 + -0.6352690443 + -0.3243889470 + -0.1031045036 + 0.4294372363 + -0.0276249553 + 0.4185740056 + -0.6594117094 + 0.1836564264 + -0.7312893747 + -0.6417254985 + 0.3636914647 + -0.0874805068 + -0.1059200593 + -0.3319833856 + 1.4544042554 + 0.5400202351 + -1.6524488494 + -0.3096266149 + 0.5659314057 + -0.5921707640 + 0.7506031550 + -1.2743575077 + 0.2825790175 + -0.1472644010 + 0.2379579568 + 0.2111365212 + 0.5844044094 + -0.5694849045 + 0.5220512862 + 0.5716988974 + -0.8284473993 + -0.2675095216 + -0.4162653337 + 0.0010887428 + 2.3561462290 + 0.5164831724 + -0.8898120829 + 2.0004762448 + 0.5757977138 + -1.7256557590 + 0.4312316917 + -0.6079341760 + -0.3593071817 + 0.7015405082 + 0.7253162581 + 0.2735239497 + -1.1662764769 + 0.1526862298 + 0.1965958329 + -0.3302039095 + -0.3636488263 + 1.3386698052 + -0.7005156521 + 0.9876805329 + -0.3519737126 + -2.6890163623 + -0.4637859159 + -0.4170395037 + 1.1639000756 + -0.8900411921 + -0.2565647368 + 1.4574336989 + 0.2968621011 + -0.0754782113 + 0.2406370074 + 0.8845807561 + -0.7350205524 + -0.0686524020 + -1.1000527819 + 0.1490544919 + -0.5195713140 + 0.3513390425 + -0.2468123377 + -0.3647105764 + -0.5135888183 + -0.0837125349 + -1.3935061134 + -0.0349077813 + 0.4544619251 + -0.5562367170 + 1.6333749220 + -0.7683464277 + -0.6867651913 + 0.5505487464 + -2.2792746227 + 1.0530205878 + 0.6203946590 + 0.7037171473 + 0.0467663452 + 0.8720151489 + -1.5154012056 + 1.1820867460 + 0.6266792164 + 1.1690687991 + -0.3504068045 + 0.2750823995 + -0.9471448025 + 0.5719803469 + 0.5222091318 + -0.2344564455 + 0.0407747076 + -0.3418303125 + 0.0665188746 + -0.0640882821 + -0.0745819611 + 2.3797383024 + 0.2913969629 + -0.4595078705 + 0.4628744651 + -0.0568472243 + 2.4093589492 + 0.2587239756 + -0.0979748670 + -0.1473843293 + 0.2425944915 + -0.0848054436 + 2.0537181775 + 0.5487246723 + 1.8252945151 + -0.2376630592 + 0.1069905764 + -0.9064712329 + 0.3897596199 + -0.3273477312 + -0.2053636170 + -0.3344990416 + 0.9991330644 + -0.3723086019 + 0.8582269474 + 0.5184739771 + 1.5158609775 + -1.7456561506 + 0.1284916897 + 0.8526015906 + -0.1939195297 + 0.8094987146 + -0.7453592991 + 1.5558012593 + 1.3855923735 + 0.8995123264 + 1.3410485008 + 0.8709374164 + -0.0794102283 + 1.0363841606 + -0.3091837036 + 0.7600137662 + -0.5909723710 + -0.2072288724 + -1.0292436606 + 0.8963895852 + 0.4145883071 + 1.6235076147 + 0.6729655982 + 1.1367575047 + -0.2372630640 + 0.9695440854 + 0.3176722752 + -1.0375183698 + -3.4676633754 + 1.1970416425 + -0.4375947393 + 0.1015361055 + 1.0302270097 + 0.7058158899 + -0.3220193177 + 0.0775394177 + -0.0891863978 + -0.7205265321 + -0.9696988998 + -1.0346284379 + -0.3187212867 + -1.1178039859 + 0.2952755451 + 0.6265010654 + -0.8672678606 + -0.6533529277 + 0.9616369699 + 0.1329196027 + 0.5303698076 + -0.8879843277 + 2.1032929657 + 0.8219707348 + -0.8919371549 + 0.5031551166 + 1.2777079953 + 1.3559685574 + -0.8559206646 + 0.2021145980 + 0.0422156316 + 0.1787211721 + -0.1025574726 + -0.8723853946 + -2.1704997125 + -0.5123816367 + -1.0303018497 + -0.3170643858 + -1.7171179107 + 1.0499121625 + -0.2110386478 + -0.2280296553 + -0.4873856517 + 0.7207404890 + 1.0449530954 + -2.0393883429 + 0.4468069439 + -0.7202183735 + -0.1921883597 + 0.6580358207 + -1.4834387662 + -0.1820076751 + 0.3668198210 + -2.1630633957 + -0.8880123820 + -0.7590871719 + -0.4149940139 + 1.4746492397 + -1.2945216843 + -1.3037821382 + -2.8517718108 + -0.5116937189 + 0.0781424684 + 2.6913173066 + 0.8318029409 + -0.0368700634 + -2.4879919307 + 0.0868235187 + -4.3041715508 + 1.8476232535 + -0.0006527718 + -0.0005179464 + 0.0000822559 + 0.0010544961 + 0.0014005841 + 0.0000217943 + 0.0002447760 + -0.0026995741 + -0.0008176389 + -0.0008393517 + -0.0008302657 + -0.0000246492 + -0.0002904551 + -0.0000368991 + -0.0001005209 + 0.0003824639 + -0.0005224729 + -0.0004540406 + 0.0001238933 + -0.0008073461 + 0.0012594764 + -0.0008072768 + -0.0008165347 + 0.0005172865 + -0.0006189768 + -0.0035430777