From 61296c8a09de6c183f164d9633889febcfab9393 Mon Sep 17 00:00:00 2001 From: peterli3819 Date: Wed, 2 Apr 2025 16:39:26 -0600 Subject: [PATCH 1/4] first upload for latte_interface files --- examples/latte_interface/coords_100.pdb | 306 ++ examples/latte_interface/coords_1032.pdb | 1038 ++++++ examples/latte_interface/coords_1299.pdb | 1305 ++++++++ examples/latte_interface/coords_2955.pdb | 2961 +++++++++++++++++ examples/latte_interface/input.in | 27 + examples/latte_interface/latte.in | 57 + examples/latte_interface/main.py | 36 + examples/latte_interface/vars | 21 + examples/latte_interface/wat.pdb | 9 + examples/latte_interface/wat.xyz | 5 + examples/latte_interface/water_128.xyz | 386 +++ examples/latte_interface_bomd/coords_100.pdb | 306 ++ .../latte_interface_bomd/coords_100_2.pdb | 306 ++ examples/latte_interface_bomd/coords_1299.pdb | 1305 ++++++++ examples/latte_interface_bomd/coords_2955.pdb | 2961 +++++++++++++++++ examples/latte_interface_bomd/input.in | 26 + examples/latte_interface_bomd/latte.in | 79 + examples/latte_interface_bomd/regularbomd.py | 130 + examples/latte_interface_bomd/vars | 21 + examples/latte_interface_bomd/wat.pdb | 9 + examples/latte_interface_bomd/wat.xyz | 5 + examples/latte_interface_bomd/water_128.xyz | 386 +++ .../coords_100.pdb | 306 ++ .../coords_1299.pdb | 1305 ++++++++ .../coords_2955.pdb | 2961 +++++++++++++++++ .../latte_interface_energy_forces/input.in | 26 + .../latte_interface_energy_forces/latte.in | 57 + .../latte_interface_energy_forces/main.py | 34 + examples/latte_interface_energy_forces/vars | 21 + .../latte_interface_energy_forces/wat.pdb | 9 + .../latte_interface_energy_forces/wat.xyz | 5 + .../water_128.xyz | 386 +++ examples/latte_scf/coords_100.pdb | 306 ++ examples/latte_scf/coords_1032.pdb | 1038 ++++++ examples/latte_scf/coords_1299.pdb | 1305 ++++++++ examples/latte_scf/coords_2955.pdb | 2961 +++++++++++++++++ examples/latte_scf/input.in | 27 + examples/latte_scf/latte.in | 80 + examples/latte_scf/main.py | 35 + examples/latte_scf/vars | 21 + examples/latte_scf/wat.pdb | 9 + examples/latte_scf/wat.xyz | 5 + examples/latte_scf/wat2.xyz | 8 + examples/latte_scf/water_128.xyz | 386 +++ parameters/dftb/sdc_siesta.py | 330 ++ parameters/dftb/sdc_sqlite.py | 670 ++++ parameters/gpmd_interface_example/H2O.pdb | 9 + parameters/gpmd_interface_example/README.md | 15 + .../gpmd_interface_example/build_bml.sh | 23 + .../gpmd_interface_example/build_cmake.sh | 30 + .../gpmd_interface_example/build_progress.sh | 38 + .../gpmd_interface_example/clone_all_codes.sh | 4 + .../gpmd_interface_example/main_bch_dspl.py | 96 + parameters/gpmd_interface_example/main_mpi.py | 49 + .../main_optim_params.py | 612 ++++ .../main_optim_params_parallel.py | 882 +++++ parameters/gpmd_interface_example/vars | 11 + .../bondints.nonortho | 36 + .../ppots.nonortho | 12 + .../JCTC-2017.params/bondints.nonortho | 36 + .../TBparam/JCTC-2017.params/ppots.nonortho | 12 + parameters/latte/TBparam/README.md | 8 + parameters/latte/TBparam/bondints.nonortho | 41 + .../latte/TBparam/bondints.nonortho.MgO | 15 + parameters/latte/TBparam/bondints.table.UO2 | 1384 ++++++++ parameters/latte/TBparam/electrons.dat | 7 + parameters/latte/TBparam/electrons.dat.MgO | 4 + parameters/latte/TBparam/electrons.dat.UO2 | 15 + parameters/latte/TBparam/ppots.dftb | 108 + parameters/latte/TBparam/ppots.dftb.MgO | 512 +++ parameters/latte/TBparam/ppots.dftb.UO2 | 178 + parameters/latte/TBparam/ppots.nonortho | 12 + proxies/c/README.md | 1 + proxies/c/build.sh | 2 + proxies/c/proxy_a.c | 48 + proxies/c/proxy_a.h | 14 + proxies/c/proxy_a_lib.c | 253 ++ proxies/fortran/CMakeLists.txt | 107 + proxies/fortran/compile.sh | 1 + proxies/fortran/compile_with_cmake.sh | 24 + proxies/fortran/proxy_a.F90 | 31 + proxies/fortran/proxy_a_lib.F90 | 113 + proxies/fortran/proxy_a_mod.F90 | 232 ++ proxies/matlab/AtomicDensityMatrix.m | 36 + proxies/matlab/BondIntegral.m | 18 + proxies/matlab/COORD.m | 51 + proxies/matlab/CoulombMatrix.m | 16 + proxies/matlab/DM_Fermi.m | 37 + proxies/matlab/DM_PRT_Fermi.m | 43 + proxies/matlab/DensityMatrix.m | 13 + proxies/matlab/DensityMatrixPRT.m | 34 + proxies/matlab/Energy.m | 34 + proxies/matlab/Energy_save_00.m | 34 + proxies/matlab/Ewald_Real_Space.m | 97 + proxies/matlab/Ewald_k_Space.m | 108 + proxies/matlab/Forces.m | 109 + proxies/matlab/Forces_save_00.m | 108 + proxies/matlab/Get_q.m | 9 + proxies/matlab/GetdC.m | 86 + proxies/matlab/GetdH.m | 38 + proxies/matlab/GetdS.m | 37 + proxies/matlab/H0_and_S.m | 95 + proxies/matlab/LoadBondIntegralParameters_H.m | 261 ++ proxies/matlab/LoadBondIntegralParameters_S.m | 123 + proxies/matlab/Main.m | 145 + proxies/matlab/Main_save_00.m | 85 + proxies/matlab/Main_save_01.m | 110 + proxies/matlab/PBC_Coulomb.m | 11 + proxies/matlab/PBC_CoulombPot.m | 29 + proxies/matlab/PBC_Energy.m | 30 + proxies/matlab/PBC_Forces.m | 36 + proxies/matlab/PBC_Hamiltonian.m | 12 + proxies/matlab/PBC_SCF.m | 21 + proxies/matlab/PBC_SCF_PRT.m | 43 + proxies/matlab/PBC_SCF_PRT_0.m | 42 + proxies/matlab/PBC_SCF_PRT_X.m | 48 + proxies/matlab/PBC_main.m | 101 + proxies/matlab/SCF.m | 50 + proxies/matlab/SCF_save_00.m | 50 + proxies/matlab/ScaleTail.m | 26 + proxies/matlab/Slater_Koster_Block.m | 104 + proxies/matlab/Slater_Koster_Pair.m | 94 + proxies/matlab/Thresh.m | 10 + proxies/matlab/nearestneighborlist.m | 67 + proxies/python/aosa_hamiltonian.py | 130 + proxies/python/chemical_potential.py | 211 ++ proxies/python/coordinates.py | 58 + proxies/python/density_matrix.py | 309 ++ proxies/python/dnnprt.py | 279 ++ proxies/python/energy_and_forces.py | 664 ++++ proxies/python/evals_dvals.py | 77 + proxies/python/first_level.py | 441 +++ proxies/python/first_level_gpu.py | 303 ++ proxies/python/hamiltonian.py | 182 + proxies/python/hamiltonian_elements.py | 309 ++ proxies/python/hamiltonian_random.py | 57 + proxies/python/init_proxy.py | 106 + proxies/python/nonortho.py | 35 + proxies/python/proxy_global.py | 106 + proxies/python/random_numbers.py | 69 + proxies/vars | 11 + src/sedacs/__init__.py | 0 src/sedacs/charges.py | 115 + src/sedacs/chemical_potential.py | 216 ++ src/sedacs/coulombic.py | 190 ++ src/sedacs/density_matrix_renorm.py | 48 + src/sedacs/dev/__init__.py | 0 src/sedacs/dev/io.py | 40 + src/sedacs/driver/__init__.py | 0 src/sedacs/driver/classical.py | 47 + src/sedacs/driver/energy_and_forces.py | 164 + src/sedacs/driver/graph_adaptive.py | 1158 +++++++ src/sedacs/driver/graph_adaptive_MASTER.py | 876 +++++ src/sedacs/driver/graph_adaptive_scf.py | 266 ++ .../graph_adaptive_scf_energy_forces.py | 263 ++ .../driver/graph_adaptive_sp_energy_forces.py | 219 ++ src/sedacs/driver/init.py | 215 ++ src/sedacs/driver/latte_scf.py | 131 + src/sedacs/driver/old_t.py | 922 +++++ src/sedacs/energy.py | 70 + src/sedacs/energy_forces.py | 48 + src/sedacs/engine.py | 37 + src/sedacs/evals.py | 68 + src/sedacs/evals_dvals.py | 71 + src/sedacs/ewald/PME_torch.py | 27 +- src/sedacs/ewald/__init__.py | 1 + src/sedacs/ewald/charge_solver.py | 86 + src/sedacs/ewald/ewald_torch.py | 118 +- src/sedacs/ewald/ewald_triton.py | 185 + src/sedacs/file_io.py | 405 +++ src/sedacs/fock.py | 45 + src/sedacs/force_fields.py | 53 + src/sedacs/geometry.py | 125 + src/sedacs/globals.py | 7 + src/sedacs/graph.py | 620 ++++ src/sedacs/graph_partition.py | 1397 ++++++++ src/sedacs/integrate.py | 31 + src/sedacs/interface_files.py | 120 + src/sedacs/interface_modules.py | 749 +++++ src/sedacs/interface_pyseqm.py | 701 ++++ src/sedacs/latte/coords.pdb | 18 + src/sedacs/latte/coords.xyz | 14 + src/sedacs/latte/latte.py | 1501 +++++++++ src/sedacs/latte/main_latte_call.py | 115 + src/sedacs/latte/vars | 5 + src/sedacs/message.py | 35 + src/sedacs/mixer.py | 158 + src/sedacs/molSysData.py | 34 + src/sedacs/mpi.py | 218 ++ src/sedacs/overlap.py | 31 + src/sedacs/parser.py | 265 ++ src/sedacs/periodic_table.py | 1370 ++++++++ src/sedacs/run_py.py | 11 + src/sedacs/sdc_density_matrix.py | 41 + src/sedacs/sdc_energy_forces.py | 32 + src/sedacs/sdc_evals_dvals.py | 32 + src/sedacs/sdc_hamiltonian.py | 88 + src/sedacs/src.cpp | 36 + src/sedacs/system.py | 1077 ++++++ src/sedacs/tbforce_modules.py | 149 + src/sedacs/tbforces.py | 69 + src/sedacs/torch_sedacs.py | 261 ++ 202 files changed, 50185 insertions(+), 8 deletions(-) create mode 100644 examples/latte_interface/coords_100.pdb create mode 100644 examples/latte_interface/coords_1032.pdb create mode 100644 examples/latte_interface/coords_1299.pdb create mode 100644 examples/latte_interface/coords_2955.pdb create mode 100644 examples/latte_interface/input.in create mode 100644 examples/latte_interface/latte.in create mode 100644 examples/latte_interface/main.py create mode 100644 examples/latte_interface/vars create mode 100644 examples/latte_interface/wat.pdb create mode 100644 examples/latte_interface/wat.xyz create mode 100644 examples/latte_interface/water_128.xyz create mode 100644 examples/latte_interface_bomd/coords_100.pdb create mode 100644 examples/latte_interface_bomd/coords_100_2.pdb create mode 100644 examples/latte_interface_bomd/coords_1299.pdb create mode 100644 examples/latte_interface_bomd/coords_2955.pdb create mode 100644 examples/latte_interface_bomd/input.in create mode 100644 examples/latte_interface_bomd/latte.in create mode 100644 examples/latte_interface_bomd/regularbomd.py create mode 100644 examples/latte_interface_bomd/vars create mode 100644 examples/latte_interface_bomd/wat.pdb create mode 100644 examples/latte_interface_bomd/wat.xyz create mode 100644 examples/latte_interface_bomd/water_128.xyz create mode 100644 examples/latte_interface_energy_forces/coords_100.pdb create mode 100644 examples/latte_interface_energy_forces/coords_1299.pdb create mode 100644 examples/latte_interface_energy_forces/coords_2955.pdb create mode 100644 examples/latte_interface_energy_forces/input.in create mode 100644 examples/latte_interface_energy_forces/latte.in create mode 100644 examples/latte_interface_energy_forces/main.py create mode 100644 examples/latte_interface_energy_forces/vars create mode 100644 examples/latte_interface_energy_forces/wat.pdb create mode 100644 examples/latte_interface_energy_forces/wat.xyz create mode 100644 examples/latte_interface_energy_forces/water_128.xyz create mode 100644 examples/latte_scf/coords_100.pdb create mode 100644 examples/latte_scf/coords_1032.pdb create mode 100644 examples/latte_scf/coords_1299.pdb create mode 100644 examples/latte_scf/coords_2955.pdb create mode 100644 examples/latte_scf/input.in create mode 100644 examples/latte_scf/latte.in create mode 100644 examples/latte_scf/main.py create mode 100644 examples/latte_scf/vars create mode 100644 examples/latte_scf/wat.pdb create mode 100644 examples/latte_scf/wat.xyz create mode 100644 examples/latte_scf/wat2.xyz create mode 100644 examples/latte_scf/water_128.xyz create mode 100644 parameters/dftb/sdc_siesta.py create mode 100644 parameters/dftb/sdc_sqlite.py create mode 100644 parameters/gpmd_interface_example/H2O.pdb create mode 100644 parameters/gpmd_interface_example/README.md create mode 100644 parameters/gpmd_interface_example/build_bml.sh create mode 100644 parameters/gpmd_interface_example/build_cmake.sh create mode 100644 parameters/gpmd_interface_example/build_progress.sh create mode 100644 parameters/gpmd_interface_example/clone_all_codes.sh create mode 100644 parameters/gpmd_interface_example/main_bch_dspl.py create mode 100644 parameters/gpmd_interface_example/main_mpi.py create mode 100644 parameters/gpmd_interface_example/main_optim_params.py create mode 100644 parameters/gpmd_interface_example/main_optim_params_parallel.py create mode 100644 parameters/gpmd_interface_example/vars create mode 100644 parameters/latte/TBparam/2016_parameters_previous_version/bondints.nonortho create mode 100644 parameters/latte/TBparam/2016_parameters_previous_version/ppots.nonortho create mode 100644 parameters/latte/TBparam/JCTC-2017.params/bondints.nonortho create mode 100644 parameters/latte/TBparam/JCTC-2017.params/ppots.nonortho create mode 100644 parameters/latte/TBparam/README.md create mode 100644 parameters/latte/TBparam/bondints.nonortho create mode 100644 parameters/latte/TBparam/bondints.nonortho.MgO create mode 100644 parameters/latte/TBparam/bondints.table.UO2 create mode 100644 parameters/latte/TBparam/electrons.dat create mode 100644 parameters/latte/TBparam/electrons.dat.MgO create mode 100644 parameters/latte/TBparam/electrons.dat.UO2 create mode 100644 parameters/latte/TBparam/ppots.dftb create mode 100644 parameters/latte/TBparam/ppots.dftb.MgO create mode 100644 parameters/latte/TBparam/ppots.dftb.UO2 create mode 100644 parameters/latte/TBparam/ppots.nonortho create mode 100644 proxies/c/README.md create mode 100644 proxies/c/build.sh create mode 100644 proxies/c/proxy_a.c create mode 100644 proxies/c/proxy_a.h create mode 100644 proxies/c/proxy_a_lib.c create mode 100644 proxies/fortran/CMakeLists.txt create mode 100644 proxies/fortran/compile.sh create mode 100644 proxies/fortran/compile_with_cmake.sh create mode 100644 proxies/fortran/proxy_a.F90 create mode 100644 proxies/fortran/proxy_a_lib.F90 create mode 100644 proxies/fortran/proxy_a_mod.F90 create mode 100644 proxies/matlab/AtomicDensityMatrix.m create mode 100644 proxies/matlab/BondIntegral.m create mode 100644 proxies/matlab/COORD.m create mode 100644 proxies/matlab/CoulombMatrix.m create mode 100644 proxies/matlab/DM_Fermi.m create mode 100644 proxies/matlab/DM_PRT_Fermi.m create mode 100644 proxies/matlab/DensityMatrix.m create mode 100644 proxies/matlab/DensityMatrixPRT.m create mode 100644 proxies/matlab/Energy.m create mode 100644 proxies/matlab/Energy_save_00.m create mode 100644 proxies/matlab/Ewald_Real_Space.m create mode 100644 proxies/matlab/Ewald_k_Space.m create mode 100644 proxies/matlab/Forces.m create mode 100644 proxies/matlab/Forces_save_00.m create mode 100644 proxies/matlab/Get_q.m create mode 100644 proxies/matlab/GetdC.m create mode 100644 proxies/matlab/GetdH.m create mode 100644 proxies/matlab/GetdS.m create mode 100644 proxies/matlab/H0_and_S.m create mode 100644 proxies/matlab/LoadBondIntegralParameters_H.m create mode 100644 proxies/matlab/LoadBondIntegralParameters_S.m create mode 100644 proxies/matlab/Main.m create mode 100644 proxies/matlab/Main_save_00.m create mode 100644 proxies/matlab/Main_save_01.m create mode 100644 proxies/matlab/PBC_Coulomb.m create mode 100644 proxies/matlab/PBC_CoulombPot.m create mode 100644 proxies/matlab/PBC_Energy.m create mode 100644 proxies/matlab/PBC_Forces.m create mode 100644 proxies/matlab/PBC_Hamiltonian.m create mode 100644 proxies/matlab/PBC_SCF.m create mode 100644 proxies/matlab/PBC_SCF_PRT.m create mode 100644 proxies/matlab/PBC_SCF_PRT_0.m create mode 100644 proxies/matlab/PBC_SCF_PRT_X.m create mode 100644 proxies/matlab/PBC_main.m create mode 100644 proxies/matlab/SCF.m create mode 100644 proxies/matlab/SCF_save_00.m create mode 100644 proxies/matlab/ScaleTail.m create mode 100644 proxies/matlab/Slater_Koster_Block.m create mode 100644 proxies/matlab/Slater_Koster_Pair.m create mode 100644 proxies/matlab/Thresh.m create mode 100644 proxies/matlab/nearestneighborlist.m create mode 100644 proxies/python/aosa_hamiltonian.py create mode 100644 proxies/python/chemical_potential.py create mode 100644 proxies/python/coordinates.py create mode 100644 proxies/python/density_matrix.py create mode 100644 proxies/python/dnnprt.py create mode 100644 proxies/python/energy_and_forces.py create mode 100644 proxies/python/evals_dvals.py create mode 100644 proxies/python/first_level.py create mode 100644 proxies/python/first_level_gpu.py create mode 100644 proxies/python/hamiltonian.py create mode 100644 proxies/python/hamiltonian_elements.py create mode 100644 proxies/python/hamiltonian_random.py create mode 100644 proxies/python/init_proxy.py create mode 100644 proxies/python/nonortho.py create mode 100644 proxies/python/proxy_global.py create mode 100644 proxies/python/random_numbers.py create mode 100644 proxies/vars create mode 100644 src/sedacs/__init__.py create mode 100644 src/sedacs/charges.py create mode 100644 src/sedacs/chemical_potential.py create mode 100644 src/sedacs/coulombic.py create mode 100644 src/sedacs/density_matrix_renorm.py create mode 100644 src/sedacs/dev/__init__.py create mode 100644 src/sedacs/dev/io.py create mode 100644 src/sedacs/driver/__init__.py create mode 100644 src/sedacs/driver/classical.py create mode 100644 src/sedacs/driver/energy_and_forces.py create mode 100644 src/sedacs/driver/graph_adaptive.py create mode 100644 src/sedacs/driver/graph_adaptive_MASTER.py create mode 100644 src/sedacs/driver/graph_adaptive_scf.py create mode 100644 src/sedacs/driver/graph_adaptive_scf_energy_forces.py create mode 100644 src/sedacs/driver/graph_adaptive_sp_energy_forces.py create mode 100644 src/sedacs/driver/init.py create mode 100644 src/sedacs/driver/latte_scf.py create mode 100644 src/sedacs/driver/old_t.py create mode 100644 src/sedacs/energy.py create mode 100644 src/sedacs/energy_forces.py create mode 100644 src/sedacs/engine.py create mode 100644 src/sedacs/evals.py create mode 100644 src/sedacs/evals_dvals.py create mode 100644 src/sedacs/ewald/charge_solver.py create mode 100644 src/sedacs/file_io.py create mode 100644 src/sedacs/fock.py create mode 100644 src/sedacs/force_fields.py create mode 100644 src/sedacs/geometry.py create mode 100644 src/sedacs/globals.py create mode 100644 src/sedacs/graph.py create mode 100644 src/sedacs/graph_partition.py create mode 100644 src/sedacs/integrate.py create mode 100644 src/sedacs/interface_files.py create mode 100644 src/sedacs/interface_modules.py create mode 100644 src/sedacs/interface_pyseqm.py create mode 100644 src/sedacs/latte/coords.pdb create mode 100644 src/sedacs/latte/coords.xyz create mode 100644 src/sedacs/latte/latte.py create mode 100644 src/sedacs/latte/main_latte_call.py create mode 100644 src/sedacs/latte/vars create mode 100644 src/sedacs/message.py create mode 100644 src/sedacs/mixer.py create mode 100644 src/sedacs/molSysData.py create mode 100644 src/sedacs/mpi.py create mode 100644 src/sedacs/overlap.py create mode 100644 src/sedacs/parser.py create mode 100644 src/sedacs/periodic_table.py create mode 100644 src/sedacs/run_py.py create mode 100644 src/sedacs/sdc_density_matrix.py create mode 100644 src/sedacs/sdc_energy_forces.py create mode 100644 src/sedacs/sdc_evals_dvals.py create mode 100644 src/sedacs/sdc_hamiltonian.py create mode 100644 src/sedacs/src.cpp create mode 100644 src/sedacs/system.py create mode 100644 src/sedacs/tbforce_modules.py create mode 100644 src/sedacs/tbforces.py create mode 100644 src/sedacs/torch_sedacs.py diff --git a/examples/latte_interface/coords_100.pdb b/examples/latte_interface/coords_100.pdb new file mode 100644 index 00000000..63234eda --- /dev/null +++ b/examples/latte_interface/coords_100.pdb @@ -0,0 +1,306 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 15.459 15.459 15.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.024 -0.035 0.000 0.00 0.00 H +ATOM 2 O MOL 1 0.965 0.020 0.000 0.00 0.00 O +ATOM 3 H MOL 1 1.141 -0.907 0.000 0.00 0.00 H +ATOM 4 H MOL 1 1.462 1.513 1.709 0.00 0.00 H +ATOM 5 O MOL 1 2.404 1.568 1.709 0.00 0.00 O +ATOM 6 H MOL 1 2.579 0.641 1.709 0.00 0.00 H +ATOM 7 H MOL 1 2.820 2.865 3.165 0.00 0.00 H +ATOM 8 O MOL 1 3.761 2.919 3.165 0.00 0.00 O +ATOM 9 H MOL 1 3.937 1.993 3.165 0.00 0.00 H +ATOM 10 H MOL 1 4.153 4.495 4.880 0.00 0.00 H +ATOM 11 O MOL 1 5.095 4.549 4.880 0.00 0.00 O +ATOM 12 H MOL 1 5.270 3.623 4.880 0.00 0.00 H +ATOM 13 H MOL 1 6.507 6.886 7.361 0.00 0.00 H +ATOM 14 O MOL 1 7.449 6.940 7.361 0.00 0.00 O +ATOM 15 H MOL 1 7.624 6.013 7.361 0.00 0.00 H +ATOM 16 H MOL 1 8.157 8.371 9.279 0.00 0.00 H +ATOM 17 O MOL 1 9.098 8.425 9.279 0.00 0.00 O +ATOM 18 H MOL 1 9.273 7.498 9.279 0.00 0.00 H +ATOM 19 H MOL 1 9.844 10.492 11.575 0.00 0.00 H +ATOM 20 O MOL 1 10.786 10.546 11.575 0.00 0.00 O +ATOM 21 H MOL 1 10.961 9.619 11.575 0.00 0.00 H +ATOM 22 H MOL 1 13.862 1.975 4.386 0.00 0.00 H +ATOM 23 O MOL 1 14.804 2.029 4.386 0.00 0.00 O +ATOM 24 H MOL 1 14.979 1.102 4.386 0.00 0.00 H +ATOM 25 H MOL 1 6.255 9.846 11.439 0.00 0.00 H +ATOM 26 O MOL 1 7.196 9.900 11.439 0.00 0.00 O +ATOM 27 H MOL 1 7.371 8.973 11.439 0.00 0.00 H +ATOM 28 H MOL 1 0.905 3.897 6.882 0.00 0.00 H +ATOM 29 O MOL 1 1.846 3.951 6.882 0.00 0.00 O +ATOM 30 H MOL 1 2.021 3.024 6.882 0.00 0.00 H +ATOM 31 H MOL 1 11.955 14.153 5.458 0.00 0.00 H +ATOM 32 O MOL 1 12.896 14.207 5.458 0.00 0.00 O +ATOM 33 H MOL 1 13.072 13.281 5.458 0.00 0.00 H +ATOM 34 H MOL 1 9.388 13.982 6.497 0.00 0.00 H +ATOM 35 O MOL 1 10.330 14.036 6.497 0.00 0.00 O +ATOM 36 H MOL 1 10.505 13.110 6.497 0.00 0.00 H +ATOM 37 H MOL 1 9.916 3.729 8.798 0.00 0.00 H +ATOM 38 O MOL 1 10.857 3.783 8.798 0.00 0.00 O +ATOM 39 H MOL 1 11.033 2.857 8.798 0.00 0.00 H +ATOM 40 H MOL 1 1.645 10.849 1.718 0.00 0.00 H +ATOM 41 O MOL 1 2.586 10.904 1.718 0.00 0.00 O +ATOM 42 H MOL 1 2.761 9.977 1.718 0.00 0.00 H +ATOM 43 H MOL 1 13.668 5.798 2.502 0.00 0.00 H +ATOM 44 O MOL 1 14.610 5.852 2.502 0.00 0.00 O +ATOM 45 H MOL 1 14.785 4.925 2.502 0.00 0.00 H +ATOM 46 H MOL 1 0.434 8.566 11.170 0.00 0.00 H +ATOM 47 O MOL 1 1.376 8.620 11.170 0.00 0.00 O +ATOM 48 H MOL 1 1.551 7.693 11.170 0.00 0.00 H +ATOM 49 H MOL 1 8.236 3.228 1.102 0.00 0.00 H +ATOM 50 O MOL 1 9.177 3.283 1.102 0.00 0.00 O +ATOM 51 H MOL 1 9.352 2.356 1.102 0.00 0.00 H +ATOM 52 H MOL 1 14.171 2.786 10.963 0.00 0.00 H +ATOM 53 O MOL 1 15.112 2.840 10.963 0.00 0.00 O +ATOM 54 H MOL 1 15.287 1.913 10.963 0.00 0.00 H +ATOM 55 H MOL 1 10.024 12.300 0.152 0.00 0.00 H +ATOM 56 O MOL 1 10.966 12.354 0.152 0.00 0.00 O +ATOM 57 H MOL 1 11.141 11.428 0.152 0.00 0.00 H +ATOM 58 H MOL 1 11.444 7.694 1.210 0.00 0.00 H +ATOM 59 O MOL 1 12.386 7.748 1.210 0.00 0.00 O +ATOM 60 H MOL 1 12.561 6.822 1.210 0.00 0.00 H +ATOM 61 H MOL 1 5.914 9.892 5.228 0.00 0.00 H +ATOM 62 O MOL 1 6.855 9.947 5.228 0.00 0.00 O +ATOM 63 H MOL 1 7.030 9.020 5.228 0.00 0.00 H +ATOM 64 H MOL 1 11.015 2.278 3.209 0.00 0.00 H +ATOM 65 O MOL 1 11.957 2.332 3.209 0.00 0.00 O +ATOM 66 H MOL 1 12.132 1.406 3.209 0.00 0.00 H +ATOM 67 H MOL 1 5.157 14.137 9.690 0.00 0.00 H +ATOM 68 O MOL 1 6.099 14.192 9.690 0.00 0.00 O +ATOM 69 H MOL 1 6.274 13.265 9.690 0.00 0.00 H +ATOM 70 H MOL 1 13.014 10.851 2.149 0.00 0.00 H +ATOM 71 O MOL 1 13.956 10.906 2.149 0.00 0.00 O +ATOM 72 H MOL 1 14.131 9.979 2.149 0.00 0.00 H +ATOM 73 H MOL 1 6.432 7.342 4.083 0.00 0.00 H +ATOM 74 O MOL 1 7.373 7.396 4.083 0.00 0.00 O +ATOM 75 H MOL 1 7.548 6.469 4.083 0.00 0.00 H +ATOM 76 H MOL 1 13.237 7.650 6.098 0.00 0.00 H +ATOM 77 O MOL 1 14.178 7.704 6.098 0.00 0.00 O +ATOM 78 H MOL 1 14.353 6.777 6.098 0.00 0.00 H +ATOM 79 H MOL 1 8.056 0.377 3.941 0.00 0.00 H +ATOM 80 O MOL 1 8.997 0.431 3.941 0.00 0.00 O +ATOM 81 H MOL 1 9.172 -0.495 3.941 0.00 0.00 H +ATOM 82 H MOL 1 4.396 9.364 7.094 0.00 0.00 H +ATOM 83 O MOL 1 5.337 9.418 7.094 0.00 0.00 O +ATOM 84 H MOL 1 5.512 8.491 7.094 0.00 0.00 H +ATOM 85 H MOL 1 5.060 0.593 11.823 0.00 0.00 H +ATOM 86 O MOL 1 6.002 0.647 11.823 0.00 0.00 O +ATOM 87 H MOL 1 6.177 -0.280 11.823 0.00 0.00 H +ATOM 88 H MOL 1 10.805 13.676 1.929 0.00 0.00 H +ATOM 89 O MOL 1 11.747 13.730 1.929 0.00 0.00 O +ATOM 90 H MOL 1 11.922 12.804 1.929 0.00 0.00 H +ATOM 91 H MOL 1 10.422 5.195 5.779 0.00 0.00 H +ATOM 92 O MOL 1 11.364 5.250 5.779 0.00 0.00 O +ATOM 93 H MOL 1 11.539 4.323 5.779 0.00 0.00 H +ATOM 94 H MOL 1 2.609 5.311 0.365 0.00 0.00 H +ATOM 95 O MOL 1 3.551 5.365 0.365 0.00 0.00 O +ATOM 96 H MOL 1 3.726 4.438 0.365 0.00 0.00 H +ATOM 97 H MOL 1 0.247 12.838 7.622 0.00 0.00 H +ATOM 98 O MOL 1 1.189 12.892 7.622 0.00 0.00 O +ATOM 99 H MOL 1 1.364 11.966 7.622 0.00 0.00 H +ATOM 100 H MOL 1 0.400 4.030 12.734 0.00 0.00 H +ATOM 101 O MOL 1 1.342 4.084 12.734 0.00 0.00 O +ATOM 102 H MOL 1 1.517 3.158 12.734 0.00 0.00 H +ATOM 103 H MOL 1 6.344 11.570 0.306 0.00 0.00 H +ATOM 104 O MOL 1 7.286 11.624 0.306 0.00 0.00 O +ATOM 105 H MOL 1 7.461 10.698 0.306 0.00 0.00 H +ATOM 106 H MOL 1 1.457 8.882 5.810 0.00 0.00 H +ATOM 107 O MOL 1 2.399 8.937 5.810 0.00 0.00 O +ATOM 108 H MOL 1 2.574 8.010 5.810 0.00 0.00 H +ATOM 109 H MOL 1 1.246 12.939 10.266 0.00 0.00 H +ATOM 110 O MOL 1 2.187 12.993 10.266 0.00 0.00 O +ATOM 111 H MOL 1 2.362 12.067 10.266 0.00 0.00 H +ATOM 112 H MOL 1 5.844 10.735 2.510 0.00 0.00 H +ATOM 113 O MOL 1 6.786 10.789 2.510 0.00 0.00 O +ATOM 114 H MOL 1 6.961 9.862 2.510 0.00 0.00 H +ATOM 115 H MOL 1 9.752 5.415 11.518 0.00 0.00 H +ATOM 116 O MOL 1 10.694 5.470 11.518 0.00 0.00 O +ATOM 117 H MOL 1 10.869 4.543 11.518 0.00 0.00 H +ATOM 118 H MOL 1 10.062 11.535 7.714 0.00 0.00 H +ATOM 119 O MOL 1 11.004 11.590 7.714 0.00 0.00 O +ATOM 120 H MOL 1 11.179 10.663 7.714 0.00 0.00 H +ATOM 121 H MOL 1 11.140 0.576 13.274 0.00 0.00 H +ATOM 122 O MOL 1 12.081 0.630 13.274 0.00 0.00 O +ATOM 123 H MOL 1 12.256 -0.297 13.274 0.00 0.00 H +ATOM 124 H MOL 1 8.664 2.794 6.440 0.00 0.00 H +ATOM 125 O MOL 1 9.606 2.848 6.440 0.00 0.00 O +ATOM 126 H MOL 1 9.781 1.921 6.440 0.00 0.00 H +ATOM 127 H MOL 1 1.908 5.146 9.029 0.00 0.00 H +ATOM 128 O MOL 1 2.849 5.201 9.029 0.00 0.00 O +ATOM 129 H MOL 1 3.024 4.274 9.029 0.00 0.00 H +ATOM 130 H MOL 1 12.294 7.322 11.253 0.00 0.00 H +ATOM 131 O MOL 1 13.235 7.377 11.253 0.00 0.00 O +ATOM 132 H MOL 1 13.410 6.450 11.253 0.00 0.00 H +ATOM 133 H MOL 1 11.098 6.253 8.089 0.00 0.00 H +ATOM 134 O MOL 1 12.039 6.307 8.089 0.00 0.00 O +ATOM 135 H MOL 1 12.214 5.381 8.089 0.00 0.00 H +ATOM 136 H MOL 1 4.497 3.412 10.233 0.00 0.00 H +ATOM 137 O MOL 1 5.438 3.466 10.233 0.00 0.00 O +ATOM 138 H MOL 1 5.613 2.539 10.233 0.00 0.00 H +ATOM 139 H MOL 1 12.642 9.031 8.163 0.00 0.00 H +ATOM 140 O MOL 1 13.584 9.085 8.163 0.00 0.00 O +ATOM 141 H MOL 1 13.759 8.159 8.163 0.00 0.00 H +ATOM 142 H MOL 1 1.618 12.178 5.523 0.00 0.00 H +ATOM 143 O MOL 1 2.560 12.233 5.523 0.00 0.00 O +ATOM 144 H MOL 1 2.735 11.306 5.523 0.00 0.00 H +ATOM 145 H MOL 1 11.030 2.396 11.405 0.00 0.00 H +ATOM 146 O MOL 1 11.971 2.450 11.405 0.00 0.00 O +ATOM 147 H MOL 1 12.146 1.524 11.405 0.00 0.00 H +ATOM 148 H MOL 1 13.962 8.475 13.187 0.00 0.00 H +ATOM 149 O MOL 1 14.903 8.529 13.187 0.00 0.00 O +ATOM 150 H MOL 1 15.078 7.602 13.187 0.00 0.00 H +ATOM 151 H MOL 1 9.462 8.027 5.394 0.00 0.00 H +ATOM 152 O MOL 1 10.404 8.081 5.394 0.00 0.00 O +ATOM 153 H MOL 1 10.579 7.155 5.394 0.00 0.00 H +ATOM 154 H MOL 1 8.529 8.120 2.400 0.00 0.00 H +ATOM 155 O MOL 1 9.471 8.175 2.400 0.00 0.00 O +ATOM 156 H MOL 1 9.646 7.248 2.400 0.00 0.00 H +ATOM 157 H MOL 1 8.139 0.978 12.304 0.00 0.00 H +ATOM 158 O MOL 1 9.081 1.033 12.304 0.00 0.00 O +ATOM 159 H MOL 1 9.256 0.106 12.304 0.00 0.00 H +ATOM 160 H MOL 1 1.628 12.028 12.490 0.00 0.00 H +ATOM 161 O MOL 1 2.569 12.082 12.490 0.00 0.00 O +ATOM 162 H MOL 1 2.744 11.155 12.490 0.00 0.00 H +ATOM 163 H MOL 1 6.188 3.476 7.931 0.00 0.00 H +ATOM 164 O MOL 1 7.129 3.530 7.931 0.00 0.00 O +ATOM 165 H MOL 1 7.305 2.604 7.931 0.00 0.00 H +ATOM 166 H MOL 1 11.865 12.623 9.604 0.00 0.00 H +ATOM 167 O MOL 1 12.807 12.677 9.604 0.00 0.00 O +ATOM 168 H MOL 1 12.982 11.750 9.604 0.00 0.00 H +ATOM 169 H MOL 1 9.083 5.793 0.741 0.00 0.00 H +ATOM 170 O MOL 1 10.025 5.847 0.741 0.00 0.00 O +ATOM 171 H MOL 1 10.200 4.921 0.741 0.00 0.00 H +ATOM 172 H MOL 1 13.001 1.894 6.496 0.00 0.00 H +ATOM 173 O MOL 1 13.942 1.949 6.496 0.00 0.00 O +ATOM 174 H MOL 1 14.117 1.022 6.496 0.00 0.00 H +ATOM 175 H MOL 1 1.513 8.921 9.234 0.00 0.00 H +ATOM 176 O MOL 1 2.454 8.975 9.234 0.00 0.00 O +ATOM 177 H MOL 1 2.629 8.049 9.234 0.00 0.00 H +ATOM 178 H MOL 1 5.013 8.716 0.609 0.00 0.00 H +ATOM 179 O MOL 1 5.954 8.770 0.609 0.00 0.00 O +ATOM 180 H MOL 1 6.129 7.843 0.609 0.00 0.00 H +ATOM 181 H MOL 1 6.661 3.635 13.318 0.00 0.00 H +ATOM 182 O MOL 1 7.602 3.690 13.318 0.00 0.00 O +ATOM 183 H MOL 1 7.777 2.763 13.318 0.00 0.00 H +ATOM 184 H MOL 1 5.109 3.641 1.722 0.00 0.00 H +ATOM 185 O MOL 1 6.050 3.696 1.722 0.00 0.00 O +ATOM 186 H MOL 1 6.225 2.769 1.722 0.00 0.00 H +ATOM 187 H MOL 1 6.461 0.702 0.842 0.00 0.00 H +ATOM 188 O MOL 1 7.402 0.757 0.842 0.00 0.00 O +ATOM 189 H MOL 1 7.577 -0.170 0.842 0.00 0.00 H +ATOM 190 H MOL 1 3.083 7.592 2.472 0.00 0.00 H +ATOM 191 O MOL 1 4.025 7.646 2.472 0.00 0.00 O +ATOM 192 H MOL 1 4.200 6.720 2.472 0.00 0.00 H +ATOM 193 H MOL 1 8.638 14.297 9.461 0.00 0.00 H +ATOM 194 O MOL 1 9.579 14.352 9.461 0.00 0.00 O +ATOM 195 H MOL 1 9.754 13.425 9.461 0.00 0.00 H +ATOM 196 H MOL 1 4.773 13.629 6.292 0.00 0.00 H +ATOM 197 O MOL 1 5.714 13.684 6.292 0.00 0.00 O +ATOM 198 H MOL 1 5.889 12.757 6.292 0.00 0.00 H +ATOM 199 H MOL 1 7.047 3.198 3.702 0.00 0.00 H +ATOM 200 O MOL 1 7.989 3.252 3.702 0.00 0.00 O +ATOM 201 H MOL 1 8.164 2.326 3.702 0.00 0.00 H +ATOM 202 H MOL 1 2.094 0.204 8.780 0.00 0.00 H +ATOM 203 O MOL 1 3.035 0.258 8.780 0.00 0.00 O +ATOM 204 H MOL 1 3.210 -0.669 8.780 0.00 0.00 H +ATOM 205 H MOL 1 6.427 6.710 13.409 0.00 0.00 H +ATOM 206 O MOL 1 7.368 6.765 13.409 0.00 0.00 O +ATOM 207 H MOL 1 7.543 5.838 13.409 0.00 0.00 H +ATOM 208 H MOL 1 4.534 6.437 9.463 0.00 0.00 H +ATOM 209 O MOL 1 5.476 6.491 9.463 0.00 0.00 O +ATOM 210 H MOL 1 5.651 5.565 9.463 0.00 0.00 H +ATOM 211 H MOL 1 2.755 13.902 4.044 0.00 0.00 H +ATOM 212 O MOL 1 3.697 13.957 4.044 0.00 0.00 O +ATOM 213 H MOL 1 3.872 13.030 4.044 0.00 0.00 H +ATOM 214 H MOL 1 3.647 9.025 13.044 0.00 0.00 H +ATOM 215 O MOL 1 4.589 9.080 13.044 0.00 0.00 O +ATOM 216 H MOL 1 4.764 8.153 13.044 0.00 0.00 H +ATOM 217 H MOL 1 2.475 1.170 14.119 0.00 0.00 H +ATOM 218 O MOL 1 3.416 1.224 14.119 0.00 0.00 O +ATOM 219 H MOL 1 3.592 0.298 14.119 0.00 0.00 H +ATOM 220 H MOL 1 9.573 10.933 2.915 0.00 0.00 H +ATOM 221 O MOL 1 10.514 10.988 2.915 0.00 0.00 O +ATOM 222 H MOL 1 10.689 10.061 2.915 0.00 0.00 H +ATOM 223 H MOL 1 6.960 10.953 7.307 0.00 0.00 H +ATOM 224 O MOL 1 7.901 11.007 7.307 0.00 0.00 O +ATOM 225 H MOL 1 8.076 10.080 7.307 0.00 0.00 H +ATOM 226 H MOL 1 12.713 4.501 0.595 0.00 0.00 H +ATOM 227 O MOL 1 13.655 4.555 0.595 0.00 0.00 O +ATOM 228 H MOL 1 13.830 3.628 0.595 0.00 0.00 H +ATOM 229 H MOL 1 13.212 11.633 13.218 0.00 0.00 H +ATOM 230 O MOL 1 14.154 11.687 13.218 0.00 0.00 O +ATOM 231 H MOL 1 14.329 10.761 13.218 0.00 0.00 H +ATOM 232 H MOL 1 11.861 13.431 11.502 0.00 0.00 H +ATOM 233 O MOL 1 12.803 13.485 11.502 0.00 0.00 O +ATOM 234 H MOL 1 12.978 12.558 11.502 0.00 0.00 H +ATOM 235 H MOL 1 9.400 8.430 13.259 0.00 0.00 H +ATOM 236 O MOL 1 10.342 8.485 13.259 0.00 0.00 O +ATOM 237 H MOL 1 10.517 7.558 13.259 0.00 0.00 H +ATOM 238 H MOL 1 2.820 1.799 5.389 0.00 0.00 H +ATOM 239 O MOL 1 3.762 1.854 5.389 0.00 0.00 O +ATOM 240 H MOL 1 3.937 0.927 5.389 0.00 0.00 H +ATOM 241 H MOL 1 9.302 11.302 5.371 0.00 0.00 H +ATOM 242 O MOL 1 10.244 11.357 5.371 0.00 0.00 O +ATOM 243 H MOL 1 10.419 10.430 5.371 0.00 0.00 H +ATOM 244 H MOL 1 7.076 12.436 12.400 0.00 0.00 H +ATOM 245 O MOL 1 8.017 12.491 12.400 0.00 0.00 O +ATOM 246 H MOL 1 8.192 11.564 12.400 0.00 0.00 H +ATOM 247 H MOL 1 0.564 8.190 0.846 0.00 0.00 H +ATOM 248 O MOL 1 1.505 8.245 0.846 0.00 0.00 O +ATOM 249 H MOL 1 1.680 7.318 0.846 0.00 0.00 H +ATOM 250 H MOL 1 7.010 11.136 9.638 0.00 0.00 H +ATOM 251 O MOL 1 7.952 11.191 9.638 0.00 0.00 O +ATOM 252 H MOL 1 8.127 10.264 9.638 0.00 0.00 H +ATOM 253 H MOL 1 9.268 5.723 3.606 0.00 0.00 H +ATOM 254 O MOL 1 10.209 5.777 3.606 0.00 0.00 O +ATOM 255 H MOL 1 10.384 4.850 3.606 0.00 0.00 H +ATOM 256 H MOL 1 13.390 10.203 4.472 0.00 0.00 H +ATOM 257 O MOL 1 14.332 10.257 4.472 0.00 0.00 O +ATOM 258 H MOL 1 14.507 9.330 4.472 0.00 0.00 H +ATOM 259 H MOL 1 3.876 5.191 11.945 0.00 0.00 H +ATOM 260 O MOL 1 4.818 5.246 11.945 0.00 0.00 O +ATOM 261 H MOL 1 4.993 4.319 11.945 0.00 0.00 H +ATOM 262 H MOL 1 6.226 6.828 11.264 0.00 0.00 H +ATOM 263 O MOL 1 7.167 6.882 11.264 0.00 0.00 O +ATOM 264 H MOL 1 7.342 5.955 11.264 0.00 0.00 H +ATOM 265 H MOL 1 3.202 9.766 3.900 0.00 0.00 H +ATOM 266 O MOL 1 4.143 9.821 3.900 0.00 0.00 O +ATOM 267 H MOL 1 4.318 8.894 3.900 0.00 0.00 H +ATOM 268 H MOL 1 12.942 5.592 4.532 0.00 0.00 H +ATOM 269 O MOL 1 13.884 5.646 4.532 0.00 0.00 O +ATOM 270 H MOL 1 14.059 4.719 4.532 0.00 0.00 H +ATOM 271 H MOL 1 4.341 9.628 9.004 0.00 0.00 H +ATOM 272 O MOL 1 5.282 9.682 9.004 0.00 0.00 O +ATOM 273 H MOL 1 5.458 8.755 9.004 0.00 0.00 H +ATOM 274 H MOL 1 13.274 13.142 3.549 0.00 0.00 H +ATOM 275 O MOL 1 14.216 13.197 3.549 0.00 0.00 O +ATOM 276 H MOL 1 14.391 12.270 3.549 0.00 0.00 H +ATOM 277 H MOL 1 3.276 6.152 7.287 0.00 0.00 H +ATOM 278 O MOL 1 4.217 6.206 7.287 0.00 0.00 O +ATOM 279 H MOL 1 4.392 5.279 7.287 0.00 0.00 H +ATOM 280 H MOL 1 6.608 12.279 4.127 0.00 0.00 H +ATOM 281 O MOL 1 7.550 12.333 4.127 0.00 0.00 O +ATOM 282 H MOL 1 7.725 11.406 4.127 0.00 0.00 H +ATOM 283 H MOL 1 14.089 2.765 8.432 0.00 0.00 H +ATOM 284 O MOL 1 15.031 2.819 8.432 0.00 0.00 O +ATOM 285 H MOL 1 15.206 1.892 8.432 0.00 0.00 H +ATOM 286 H MOL 1 12.247 0.859 8.664 0.00 0.00 H +ATOM 287 O MOL 1 13.188 0.913 8.664 0.00 0.00 O +ATOM 288 H MOL 1 13.363 -0.014 8.664 0.00 0.00 H +ATOM 289 H MOL 1 4.467 13.517 1.951 0.00 0.00 H +ATOM 290 O MOL 1 5.409 13.571 1.951 0.00 0.00 O +ATOM 291 H MOL 1 5.584 12.645 1.951 0.00 0.00 H +ATOM 292 H MOL 1 14.342 0.329 12.432 0.00 0.00 H +ATOM 293 O MOL 1 15.283 0.384 12.432 0.00 0.00 O +ATOM 294 H MOL 1 15.459 -0.543 12.432 0.00 0.00 H +ATOM 295 H MOL 1 11.322 2.305 0.943 0.00 0.00 H +ATOM 296 O MOL 1 12.263 2.360 0.943 0.00 0.00 O +ATOM 297 H MOL 1 12.438 1.433 0.943 0.00 0.00 H +ATOM 298 H MOL 1 7.319 4.026 10.612 0.00 0.00 H +ATOM 299 O MOL 1 8.261 4.081 10.612 0.00 0.00 O +ATOM 300 H MOL 1 8.436 3.154 10.612 0.00 0.00 H +TER +END diff --git a/examples/latte_interface/coords_1032.pdb b/examples/latte_interface/coords_1032.pdb new file mode 100644 index 00000000..549a703b --- /dev/null +++ b/examples/latte_interface/coords_1032.pdb @@ -0,0 +1,1038 @@ +TITLE my_single_water.xyz +REMARK THIS IS A SIMULATION BOX +CRYST1 21.830 21.830 21.830 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 O HOH 1 10.727 10.734 10.915 1.00 0.00 O +ATOM 2 H HOH 0 10.309 11.595 10.915 1.00 0.00 H +ATOM 3 H HOH 0 11.708 10.415 10.915 1.00 0.00 H +ATOM 4 OW SOL 1 2.250 2.750 9.961 1.00 0.00 O +ATOM 5 HW1 SOL 1 2.600 2.580 10.881 1.00 0.00 H +ATOM 6 HW2 SOL 1 1.370 2.300 9.841 1.00 0.00 H +ATOM 7 OW SOL 2 5.690 12.751 11.651 1.00 0.00 O +ATOM 8 HW1 SOL 2 4.760 12.681 11.281 1.00 0.00 H +ATOM 9 HW2 SOL 2 5.800 13.641 12.091 1.00 0.00 H +ATOM 10 OW SOL 3 15.551 15.111 7.030 1.00 0.00 O +ATOM 11 HW1 SOL 3 14.981 14.951 7.840 1.00 0.00 H +ATOM 12 HW2 SOL 3 14.961 15.211 6.230 1.00 0.00 H +ATOM 13 OW SOL 4 17.431 6.180 8.560 1.00 0.00 O +ATOM 14 HW1 SOL 4 17.761 7.120 8.560 1.00 0.00 H +ATOM 15 HW2 SOL 4 17.941 5.640 9.220 1.00 0.00 H +ATOM 16 OW SOL 5 11.351 7.030 7.170 1.00 0.00 O +ATOM 17 HW1 SOL 5 11.921 7.810 6.920 1.00 0.00 H +ATOM 18 HW2 SOL 5 10.751 7.290 7.930 1.00 0.00 H +ATOM 19 OW SOL 6 17.551 6.070 2.310 1.00 0.00 O +ATOM 20 HW1 SOL 6 17.431 5.940 1.320 1.00 0.00 H +ATOM 21 HW2 SOL 6 17.251 5.260 2.800 1.00 0.00 H +ATOM 22 OW SOL 7 7.680 11.441 10.231 1.00 0.00 O +ATOM 23 HW1 SOL 7 6.900 11.611 10.831 1.00 0.00 H +ATOM 24 HW2 SOL 7 8.020 12.311 9.871 1.00 0.00 H +ATOM 25 OW SOL 8 8.500 7.980 18.231 1.00 0.00 O +ATOM 26 HW1 SOL 8 8.460 8.740 18.881 1.00 0.00 H +ATOM 27 HW2 SOL 8 8.720 8.340 17.321 1.00 0.00 H +ATOM 28 OW SOL 9 6.850 10.121 6.650 1.00 0.00 O +ATOM 29 HW1 SOL 9 7.540 9.961 7.350 1.00 0.00 H +ATOM 30 HW2 SOL 9 6.120 10.691 7.030 1.00 0.00 H +ATOM 31 OW SOL 10 6.860 11.611 18.031 1.00 0.00 O +ATOM 32 HW1 SOL 10 7.460 12.401 18.171 1.00 0.00 H +ATOM 33 HW2 SOL 10 6.000 11.921 17.621 1.00 0.00 H +ATOM 34 OW SOL 11 3.350 14.351 10.611 1.00 0.00 O +ATOM 35 HW1 SOL 11 2.570 14.041 10.081 1.00 0.00 H +ATOM 36 HW2 SOL 11 3.930 14.931 10.041 1.00 0.00 H +ATOM 37 OW SOL 12 14.601 15.051 13.391 1.00 0.00 O +ATOM 38 HW1 SOL 12 14.841 15.991 13.651 1.00 0.00 H +ATOM 39 HW2 SOL 12 14.441 14.511 14.211 1.00 0.00 H +ATOM 40 OW SOL 13 4.380 3.920 14.991 1.00 0.00 O +ATOM 41 HW1 SOL 13 5.200 3.360 15.081 1.00 0.00 H +ATOM 42 HW2 SOL 13 3.570 3.340 15.031 1.00 0.00 H +ATOM 43 OW SOL 14 2.310 17.131 4.830 1.00 0.00 O +ATOM 44 HW1 SOL 14 2.650 17.901 5.370 1.00 0.00 H +ATOM 45 HW2 SOL 14 2.750 17.131 3.930 1.00 0.00 H +ATOM 46 OW SOL 15 11.271 13.411 16.901 1.00 0.00 O +ATOM 47 HW1 SOL 15 11.741 13.411 17.781 1.00 0.00 H +ATOM 48 HW2 SOL 15 10.791 12.541 16.791 1.00 0.00 H +ATOM 49 OW SOL 16 2.300 14.341 5.380 1.00 0.00 O +ATOM 50 HW1 SOL 16 2.040 15.301 5.380 1.00 0.00 H +ATOM 51 HW2 SOL 16 1.590 13.801 5.830 1.00 0.00 H +ATOM 52 OW SOL 17 2.400 10.911 8.860 1.00 0.00 O +ATOM 53 HW1 SOL 17 2.540 10.071 9.380 1.00 0.00 H +ATOM 54 HW2 SOL 17 1.850 11.551 9.410 1.00 0.00 H +ATOM 55 OW SOL 18 6.200 17.861 14.391 1.00 0.00 O +ATOM 56 HW1 SOL 18 5.280 17.691 14.741 1.00 0.00 H +ATOM 57 HW2 SOL 18 6.480 18.781 14.651 1.00 0.00 H +ATOM 58 OW SOL 19 6.060 9.641 1.230 1.00 0.00 O +ATOM 59 HW1 SOL 19 6.130 10.481 0.690 1.00 0.00 H +ATOM 60 HW2 SOL 19 6.520 9.771 2.110 1.00 0.00 H +ATOM 61 OW SOL 20 15.941 1.140 14.801 1.00 0.00 O +ATOM 62 HW1 SOL 20 15.761 1.810 14.081 1.00 0.00 H +ATOM 63 HW2 SOL 20 15.911 1.600 15.691 1.00 0.00 H +ATOM 64 OW SOL 21 18.421 17.671 3.590 1.00 0.00 O +ATOM 65 HW1 SOL 21 18.961 17.381 4.390 1.00 0.00 H +ATOM 66 HW2 SOL 21 18.721 18.571 3.300 1.00 0.00 H +ATOM 67 OW SOL 22 16.891 9.220 6.120 1.00 0.00 O +ATOM 68 HW1 SOL 22 17.841 8.930 6.200 1.00 0.00 H +ATOM 69 HW2 SOL 22 16.811 9.870 5.370 1.00 0.00 H +ATOM 70 OW SOL 23 16.411 11.081 4.320 1.00 0.00 O +ATOM 71 HW1 SOL 23 17.271 11.101 3.800 1.00 0.00 H +ATOM 72 HW2 SOL 23 16.551 11.551 5.200 1.00 0.00 H +ATOM 73 OW SOL 24 1.130 7.370 15.971 1.00 0.00 O +ATOM 74 HW1 SOL 24 2.010 7.240 16.421 1.00 0.00 H +ATOM 75 HW2 SOL 24 1.000 8.340 15.751 1.00 0.00 H +ATOM 76 OW SOL 25 6.130 13.651 7.260 1.00 0.00 O +ATOM 77 HW1 SOL 25 5.640 12.781 7.350 1.00 0.00 H +ATOM 78 HW2 SOL 25 5.900 14.081 6.390 1.00 0.00 H +ATOM 79 OW SOL 26 12.931 12.281 14.231 1.00 0.00 O +ATOM 80 HW1 SOL 26 13.301 11.551 13.651 1.00 0.00 H +ATOM 81 HW2 SOL 26 13.451 12.331 15.081 1.00 0.00 H +ATOM 82 OW SOL 27 8.090 0.040 5.020 1.00 0.00 O +ATOM 83 HW1 SOL 27 8.490 0.950 4.930 1.00 0.00 H +ATOM 84 HW2 SOL 27 7.090 0.120 5.080 1.00 0.00 H +ATOM 85 OW SOL 28 15.251 9.991 1.900 1.00 0.00 O +ATOM 86 HW1 SOL 28 14.621 9.231 2.030 1.00 0.00 H +ATOM 87 HW2 SOL 28 15.731 10.171 2.760 1.00 0.00 H +ATOM 88 OW SOL 29 11.871 17.921 16.161 1.00 0.00 O +ATOM 89 HW1 SOL 29 12.111 18.521 15.401 1.00 0.00 H +ATOM 90 HW2 SOL 29 11.941 16.971 15.861 1.00 0.00 H +ATOM 91 OW SOL 30 3.170 2.510 18.011 1.00 0.00 O +ATOM 92 HW1 SOL 30 3.880 3.220 18.071 1.00 0.00 H +ATOM 93 HW2 SOL 30 2.290 2.900 18.291 1.00 0.00 H +ATOM 94 OW SOL 31 14.661 14.171 9.531 1.00 0.00 O +ATOM 95 HW1 SOL 31 14.071 14.231 10.331 1.00 0.00 H +ATOM 96 HW2 SOL 31 14.511 13.291 9.071 1.00 0.00 H +ATOM 97 OW SOL 32 16.671 17.141 5.720 1.00 0.00 O +ATOM 98 HW1 SOL 32 16.261 16.911 4.840 1.00 0.00 H +ATOM 99 HW2 SOL 32 16.491 16.401 6.370 1.00 0.00 H +ATOM 100 OW SOL 33 5.980 7.290 2.700 1.00 0.00 O +ATOM 101 HW1 SOL 33 6.220 7.980 2.020 1.00 0.00 H +ATOM 102 HW2 SOL 33 5.200 7.620 3.240 1.00 0.00 H +ATOM 103 OW SOL 34 12.811 3.450 9.441 1.00 0.00 O +ATOM 104 HW1 SOL 34 11.951 2.950 9.311 1.00 0.00 H +ATOM 105 HW2 SOL 34 13.431 2.910 10.001 1.00 0.00 H +ATOM 106 OW SOL 35 15.761 16.621 3.070 1.00 0.00 O +ATOM 107 HW1 SOL 35 16.651 17.081 3.100 1.00 0.00 H +ATOM 108 HW2 SOL 35 15.551 16.381 2.120 1.00 0.00 H +ATOM 109 OW SOL 36 8.070 6.050 14.651 1.00 0.00 O +ATOM 110 HW1 SOL 36 7.600 6.020 15.541 1.00 0.00 H +ATOM 111 HW2 SOL 36 7.560 5.500 13.991 1.00 0.00 H +ATOM 112 OW SOL 37 13.941 4.690 16.741 1.00 0.00 O +ATOM 113 HW1 SOL 37 13.741 5.120 17.621 1.00 0.00 H +ATOM 114 HW2 SOL 37 14.721 4.070 16.831 1.00 0.00 H +ATOM 115 OW SOL 38 9.731 8.900 15.721 1.00 0.00 O +ATOM 116 HW1 SOL 38 10.191 8.060 15.431 1.00 0.00 H +ATOM 117 HW2 SOL 38 9.171 9.240 14.971 1.00 0.00 H +ATOM 118 OW SOL 39 9.911 4.100 12.421 1.00 0.00 O +ATOM 119 HW1 SOL 39 9.141 4.440 12.961 1.00 0.00 H +ATOM 120 HW2 SOL 39 9.571 3.590 11.631 1.00 0.00 H +ATOM 121 OW SOL 40 10.411 7.010 4.290 1.00 0.00 O +ATOM 122 HW1 SOL 40 10.671 6.970 5.250 1.00 0.00 H +ATOM 123 HW2 SOL 40 9.561 6.500 4.150 1.00 0.00 H +ATOM 124 OW SOL 41 0.760 8.110 7.890 1.00 0.00 O +ATOM 125 HW1 SOL 41 1.750 7.990 7.980 1.00 0.00 H +ATOM 126 HW2 SOL 41 0.520 9.060 8.100 1.00 0.00 H +ATOM 127 OW SOL 42 8.650 3.480 1.950 1.00 0.00 O +ATOM 128 HW1 SOL 42 9.240 4.110 1.460 1.00 0.00 H +ATOM 129 HW2 SOL 42 8.840 2.540 1.660 1.00 0.00 H +ATOM 130 OW SOL 43 17.191 5.850 18.311 1.00 0.00 O +ATOM 131 HW1 SOL 43 16.931 6.740 17.951 1.00 0.00 H +ATOM 132 HW2 SOL 43 17.171 5.170 17.581 1.00 0.00 H +ATOM 133 OW SOL 44 13.621 11.441 5.450 1.00 0.00 O +ATOM 134 HW1 SOL 44 14.451 11.151 4.970 1.00 0.00 H +ATOM 135 HW2 SOL 44 13.131 12.111 4.890 1.00 0.00 H +ATOM 136 OW SOL 45 5.500 1.960 8.850 1.00 0.00 O +ATOM 137 HW1 SOL 45 5.450 1.910 9.850 1.00 0.00 H +ATOM 138 HW2 SOL 45 5.520 2.920 8.560 1.00 0.00 H +ATOM 139 OW SOL 46 10.081 14.561 4.770 1.00 0.00 O +ATOM 140 HW1 SOL 46 9.621 15.281 4.250 1.00 0.00 H +ATOM 141 HW2 SOL 46 10.041 14.761 5.750 1.00 0.00 H +ATOM 142 OW SOL 47 3.510 18.011 8.530 1.00 0.00 O +ATOM 143 HW1 SOL 47 4.010 17.151 8.590 1.00 0.00 H +ATOM 144 HW2 SOL 47 4.160 18.781 8.500 1.00 0.00 H +ATOM 145 OW SOL 48 17.951 10.661 8.730 1.00 0.00 O +ATOM 146 HW1 SOL 48 17.331 10.511 7.970 1.00 0.00 H +ATOM 147 HW2 SOL 48 17.431 10.771 9.580 1.00 0.00 H +ATOM 148 OW SOL 49 12.271 15.501 15.061 1.00 0.00 O +ATOM 149 HW1 SOL 49 12.331 14.731 15.701 1.00 0.00 H +ATOM 150 HW2 SOL 49 11.751 15.241 14.261 1.00 0.00 H +ATOM 151 OW SOL 50 3.210 9.431 2.420 1.00 0.00 O +ATOM 152 HW1 SOL 50 4.030 9.821 2.000 1.00 0.00 H +ATOM 153 HW2 SOL 50 2.940 8.611 1.930 1.00 0.00 H +ATOM 154 OW SOL 51 14.581 7.350 7.280 1.00 0.00 O +ATOM 155 HW1 SOL 51 14.531 6.700 8.030 1.00 0.00 H +ATOM 156 HW2 SOL 51 15.381 7.940 7.410 1.00 0.00 H +ATOM 157 OW SOL 52 4.610 12.661 17.271 1.00 0.00 O +ATOM 158 HW1 SOL 52 4.110 12.671 16.411 1.00 0.00 H +ATOM 159 HW2 SOL 52 3.980 12.481 18.031 1.00 0.00 H +ATOM 160 OW SOL 53 11.111 17.761 2.370 1.00 0.00 O +ATOM 161 HW1 SOL 53 10.511 17.141 2.870 1.00 0.00 H +ATOM 162 HW2 SOL 53 11.421 17.321 1.520 1.00 0.00 H +ATOM 163 OW SOL 54 2.020 2.850 14.981 1.00 0.00 O +ATOM 164 HW1 SOL 54 1.220 3.450 14.851 1.00 0.00 H +ATOM 165 HW2 SOL 54 1.920 2.360 15.841 1.00 0.00 H +ATOM 166 OW SOL 55 16.321 13.771 0.810 1.00 0.00 O +ATOM 167 HW1 SOL 55 16.001 14.711 0.710 1.00 0.00 H +ATOM 168 HW2 SOL 55 15.561 13.141 0.690 1.00 0.00 H +ATOM 169 OW SOL 56 4.640 17.431 3.230 1.00 0.00 O +ATOM 170 HW1 SOL 56 4.970 17.821 4.090 1.00 0.00 H +ATOM 171 HW2 SOL 56 5.400 17.361 2.580 1.00 0.00 H +ATOM 172 OW SOL 57 14.001 1.070 4.260 1.00 0.00 O +ATOM 173 HW1 SOL 57 13.761 0.700 3.360 1.00 0.00 H +ATOM 174 HW2 SOL 57 14.991 1.230 4.300 1.00 0.00 H +ATOM 175 OW SOL 58 2.490 17.851 12.411 1.00 0.00 O +ATOM 176 HW1 SOL 58 3.060 17.201 12.911 1.00 0.00 H +ATOM 177 HW2 SOL 58 2.330 17.521 11.481 1.00 0.00 H +ATOM 178 OW SOL 59 9.401 16.981 9.040 1.00 0.00 O +ATOM 179 HW1 SOL 59 10.201 16.411 9.250 1.00 0.00 H +ATOM 180 HW2 SOL 59 8.911 16.581 8.270 1.00 0.00 H +ATOM 181 OW SOL 60 3.820 7.000 4.800 1.00 0.00 O +ATOM 182 HW1 SOL 60 4.270 6.100 4.770 1.00 0.00 H +ATOM 183 HW2 SOL 60 2.880 6.890 5.130 1.00 0.00 H +ATOM 184 OW SOL 61 15.471 2.220 17.291 1.00 0.00 O +ATOM 185 HW1 SOL 61 15.421 2.590 18.211 1.00 0.00 H +ATOM 186 HW2 SOL 61 14.751 1.530 17.171 1.00 0.00 H +ATOM 187 OW SOL 62 6.140 1.220 1.170 1.00 0.00 O +ATOM 188 HW1 SOL 62 7.120 1.000 1.240 1.00 0.00 H +ATOM 189 HW2 SOL 62 5.830 1.050 0.240 1.00 0.00 H +ATOM 190 OW SOL 63 7.810 2.640 17.491 1.00 0.00 O +ATOM 191 HW1 SOL 63 8.480 2.030 17.921 1.00 0.00 H +ATOM 192 HW2 SOL 63 7.080 2.830 18.141 1.00 0.00 H +ATOM 193 OW SOL 64 8.880 15.141 11.951 1.00 0.00 O +ATOM 194 HW1 SOL 64 8.650 14.891 11.011 1.00 0.00 H +ATOM 195 HW2 SOL 64 9.490 14.451 12.341 1.00 0.00 H +ATOM 196 OW SOL 65 13.511 5.900 14.331 1.00 0.00 O +ATOM 197 HW1 SOL 65 13.791 5.470 15.181 1.00 0.00 H +ATOM 198 HW2 SOL 65 13.761 6.860 14.341 1.00 0.00 H +ATOM 199 OW SOL 66 8.030 14.021 9.240 1.00 0.00 O +ATOM 200 HW1 SOL 66 8.930 14.161 8.820 1.00 0.00 H +ATOM 201 HW2 SOL 66 7.320 14.041 8.530 1.00 0.00 H +ATOM 202 OW SOL 67 9.220 5.030 8.990 1.00 0.00 O +ATOM 203 HW1 SOL 67 8.970 4.940 8.030 1.00 0.00 H +ATOM 204 HW2 SOL 67 9.700 4.210 9.300 1.00 0.00 H +ATOM 205 OW SOL 68 5.390 0.640 5.120 1.00 0.00 O +ATOM 206 HW1 SOL 68 4.580 0.650 5.700 1.00 0.00 H +ATOM 207 HW2 SOL 68 5.420 1.470 4.570 1.00 0.00 H +ATOM 208 OW SOL 69 14.341 11.881 0.410 1.00 0.00 O +ATOM 209 HW1 SOL 69 14.661 11.121 0.980 1.00 0.00 H +ATOM 210 HW2 SOL 69 13.421 12.151 0.710 1.00 0.00 H +ATOM 211 OW SOL 70 9.351 2.360 4.800 1.00 0.00 O +ATOM 212 HW1 SOL 70 8.871 2.770 4.020 1.00 0.00 H +ATOM 213 HW2 SOL 70 10.341 2.340 4.610 1.00 0.00 H +ATOM 214 OW SOL 71 10.761 6.830 14.641 1.00 0.00 O +ATOM 215 HW1 SOL 71 9.961 6.220 14.671 1.00 0.00 H +ATOM 216 HW2 SOL 71 11.571 6.300 14.401 1.00 0.00 H +ATOM 217 OW SOL 72 12.271 15.701 7.930 1.00 0.00 O +ATOM 218 HW1 SOL 72 12.481 16.441 7.280 1.00 0.00 H +ATOM 219 HW2 SOL 72 12.951 15.701 8.660 1.00 0.00 H +ATOM 220 OW SOL 73 4.590 11.521 7.410 1.00 0.00 O +ATOM 221 HW1 SOL 73 3.880 11.251 8.060 1.00 0.00 H +ATOM 222 HW2 SOL 73 4.330 11.241 6.480 1.00 0.00 H +ATOM 223 OW SOL 74 12.711 17.971 5.910 1.00 0.00 O +ATOM 224 HW1 SOL 74 13.151 18.611 5.270 1.00 0.00 H +ATOM 225 HW2 SOL 74 12.211 18.491 6.610 1.00 0.00 H +ATOM 226 OW SOL 75 10.321 5.490 0.160 1.00 0.00 O +ATOM 227 HW1 SOL 75 9.911 6.310 -0.230 1.00 0.00 H +ATOM 228 HW2 SOL 75 10.961 5.750 0.890 1.00 0.00 H +ATOM 229 OW SOL 76 5.610 2.220 11.471 1.00 0.00 O +ATOM 230 HW1 SOL 76 5.990 1.380 11.841 1.00 0.00 H +ATOM 231 HW2 SOL 76 4.730 2.410 11.911 1.00 0.00 H +ATOM 232 OW SOL 77 8.660 4.540 6.420 1.00 0.00 O +ATOM 233 HW1 SOL 77 8.340 5.260 5.800 1.00 0.00 H +ATOM 234 HW2 SOL 77 8.900 3.730 5.890 1.00 0.00 H +ATOM 235 OW SOL 78 10.171 0.390 7.530 1.00 0.00 O +ATOM 236 HW1 SOL 78 9.451 0.440 6.840 1.00 0.00 H +ATOM 237 HW2 SOL 78 9.931 -0.300 8.220 1.00 0.00 H +ATOM 238 OW SOL 79 14.291 11.731 8.670 1.00 0.00 O +ATOM 239 HW1 SOL 79 13.741 10.891 8.600 1.00 0.00 H +ATOM 240 HW2 SOL 79 14.551 12.021 7.750 1.00 0.00 H +ATOM 241 OW SOL 80 14.661 5.900 9.921 1.00 0.00 O +ATOM 242 HW1 SOL 80 14.361 4.950 9.991 1.00 0.00 H +ATOM 243 HW2 SOL 80 15.391 6.060 10.581 1.00 0.00 H +ATOM 244 OW SOL 81 18.571 8.330 3.770 1.00 0.00 O +ATOM 245 HW1 SOL 81 18.991 7.690 4.410 1.00 0.00 H +ATOM 246 HW2 SOL 81 18.191 7.820 2.990 1.00 0.00 H +ATOM 247 OW SOL 82 4.880 13.851 1.740 1.00 0.00 O +ATOM 248 HW1 SOL 82 4.010 13.701 2.210 1.00 0.00 H +ATOM 249 HW2 SOL 82 4.710 14.111 0.790 1.00 0.00 H +ATOM 250 OW SOL 83 16.641 12.801 6.570 1.00 0.00 O +ATOM 251 HW1 SOL 83 17.631 12.881 6.710 1.00 0.00 H +ATOM 252 HW2 SOL 83 16.191 13.641 6.880 1.00 0.00 H +ATOM 253 OW SOL 84 13.901 5.750 0.780 1.00 0.00 O +ATOM 254 HW1 SOL 84 13.361 5.540 1.590 1.00 0.00 H +ATOM 255 HW2 SOL 84 14.811 5.340 0.870 1.00 0.00 H +ATOM 256 OW SOL 85 5.270 2.560 3.280 1.00 0.00 O +ATOM 257 HW1 SOL 85 5.540 1.970 2.530 1.00 0.00 H +ATOM 258 HW2 SOL 85 5.270 3.510 2.970 1.00 0.00 H +ATOM 259 OW SOL 86 17.541 12.231 15.881 1.00 0.00 O +ATOM 260 HW1 SOL 86 18.451 11.841 15.751 1.00 0.00 H +ATOM 261 HW2 SOL 86 17.621 13.191 16.121 1.00 0.00 H +ATOM 262 OW SOL 87 10.641 13.471 13.401 1.00 0.00 O +ATOM 263 HW1 SOL 87 9.841 13.241 13.951 1.00 0.00 H +ATOM 264 HW2 SOL 87 11.471 13.211 13.891 1.00 0.00 H +ATOM 265 OW SOL 88 15.921 16.291 16.251 1.00 0.00 O +ATOM 266 HW1 SOL 88 16.191 16.631 15.351 1.00 0.00 H +ATOM 267 HW2 SOL 88 16.711 15.911 16.711 1.00 0.00 H +ATOM 268 OW SOL 89 16.381 10.991 10.791 1.00 0.00 O +ATOM 269 HW1 SOL 89 16.431 11.801 11.381 1.00 0.00 H +ATOM 270 HW2 SOL 89 15.521 11.011 10.281 1.00 0.00 H +ATOM 271 OW SOL 90 9.150 0.890 14.021 1.00 0.00 O +ATOM 272 HW1 SOL 90 9.400 0.690 13.071 1.00 0.00 H +ATOM 273 HW2 SOL 90 9.870 1.450 14.441 1.00 0.00 H +ATOM 274 OW SOL 91 9.801 11.161 17.191 1.00 0.00 O +ATOM 275 HW1 SOL 91 8.811 11.221 17.291 1.00 0.00 H +ATOM 276 HW2 SOL 91 10.031 10.361 16.631 1.00 0.00 H +ATOM 277 OW SOL 92 7.050 10.501 3.680 1.00 0.00 O +ATOM 278 HW1 SOL 92 6.910 10.571 4.670 1.00 0.00 H +ATOM 279 HW2 SOL 92 7.890 9.991 3.500 1.00 0.00 H +ATOM 280 OW SOL 93 4.100 8.130 12.511 1.00 0.00 O +ATOM 281 HW1 SOL 93 4.960 8.250 13.011 1.00 0.00 H +ATOM 282 HW2 SOL 93 3.680 7.260 12.781 1.00 0.00 H +ATOM 283 OW SOL 94 12.741 3.860 12.621 1.00 0.00 O +ATOM 284 HW1 SOL 94 12.951 4.600 13.261 1.00 0.00 H +ATOM 285 HW2 SOL 94 11.851 4.030 12.191 1.00 0.00 H +ATOM 286 OW SOL 95 0.640 15.641 13.311 1.00 0.00 O +ATOM 287 HW1 SOL 95 0.180 16.461 12.971 1.00 0.00 H +ATOM 288 HW2 SOL 95 1.620 15.831 13.401 1.00 0.00 H +ATOM 289 OW SOL 96 3.670 11.001 5.010 1.00 0.00 O +ATOM 290 HW1 SOL 96 3.600 11.831 4.450 1.00 0.00 H +ATOM 291 HW2 SOL 96 3.710 10.201 4.410 1.00 0.00 H +ATOM 292 OW SOL 97 5.660 5.370 8.650 1.00 0.00 O +ATOM 293 HW1 SOL 97 5.780 6.030 7.910 1.00 0.00 H +ATOM 294 HW2 SOL 97 6.120 5.710 9.480 1.00 0.00 H +ATOM 295 OW SOL 98 12.521 13.481 3.880 1.00 0.00 O +ATOM 296 HW1 SOL 98 13.021 14.251 4.280 1.00 0.00 H +ATOM 297 HW2 SOL 98 11.571 13.501 4.200 1.00 0.00 H +ATOM 298 OW SOL 99 12.721 14.451 11.421 1.00 0.00 O +ATOM 299 HW1 SOL 99 13.191 14.581 12.291 1.00 0.00 H +ATOM 300 HW2 SOL 99 12.061 13.711 11.511 1.00 0.00 H +ATOM 301 OW SOL 100 15.821 6.390 4.720 1.00 0.00 O +ATOM 302 HW1 SOL 100 15.511 7.000 5.450 1.00 0.00 H +ATOM 303 HW2 SOL 100 16.321 6.910 4.030 1.00 0.00 H +ATOM 304 OW SOL 101 3.540 15.101 13.291 1.00 0.00 O +ATOM 305 HW1 SOL 101 3.330 14.661 12.421 1.00 0.00 H +ATOM 306 HW2 SOL 101 4.510 15.361 13.321 1.00 0.00 H +ATOM 307 OW SOL 102 4.020 7.510 15.981 1.00 0.00 O +ATOM 308 HW1 SOL 102 4.700 8.060 15.511 1.00 0.00 H +ATOM 309 HW2 SOL 102 4.420 6.630 16.251 1.00 0.00 H +ATOM 310 OW SOL 103 15.871 7.790 16.701 1.00 0.00 O +ATOM 311 HW1 SOL 103 14.951 8.170 16.651 1.00 0.00 H +ATOM 312 HW2 SOL 103 16.471 8.260 16.051 1.00 0.00 H +ATOM 313 OW SOL 104 10.131 1.050 17.701 1.00 0.00 O +ATOM 314 HW1 SOL 104 10.191 1.900 17.181 1.00 0.00 H +ATOM 315 HW2 SOL 104 10.451 0.290 17.131 1.00 0.00 H +ATOM 316 OW SOL 105 5.040 0.500 17.401 1.00 0.00 O +ATOM 317 HW1 SOL 105 4.620 -0.070 16.701 1.00 0.00 H +ATOM 318 HW2 SOL 105 4.380 1.190 17.721 1.00 0.00 H +ATOM 319 OW SOL 106 5.730 8.700 10.291 1.00 0.00 O +ATOM 320 HW1 SOL 106 6.170 9.590 10.201 1.00 0.00 H +ATOM 321 HW2 SOL 106 5.100 8.700 11.061 1.00 0.00 H +ATOM 322 OW SOL 107 13.601 8.620 10.451 1.00 0.00 O +ATOM 323 HW1 SOL 107 12.851 8.620 9.791 1.00 0.00 H +ATOM 324 HW2 SOL 107 13.971 7.700 10.541 1.00 0.00 H +ATOM 325 OW SOL 108 12.091 5.250 2.750 1.00 0.00 O +ATOM 326 HW1 SOL 108 12.221 4.410 3.290 1.00 0.00 H +ATOM 327 HW2 SOL 108 11.801 5.990 3.350 1.00 0.00 H +ATOM 328 OW SOL 109 3.070 2.130 12.311 1.00 0.00 O +ATOM 329 HW1 SOL 109 2.840 2.500 13.211 1.00 0.00 H +ATOM 330 HW2 SOL 109 2.770 1.180 12.251 1.00 0.00 H +ATOM 331 OW SOL 110 7.320 6.340 10.641 1.00 0.00 O +ATOM 332 HW1 SOL 110 7.910 6.080 9.881 1.00 0.00 H +ATOM 333 HW2 SOL 110 7.040 7.300 10.531 1.00 0.00 H +ATOM 334 OW SOL 111 17.281 9.351 18.541 1.00 0.00 O +ATOM 335 HW1 SOL 111 16.821 9.281 17.651 1.00 0.00 H +ATOM 336 HW2 SOL 111 16.661 9.791 19.201 1.00 0.00 H +ATOM 337 OW SOL 112 3.070 0.630 6.180 1.00 0.00 O +ATOM 338 HW1 SOL 112 2.960 1.570 6.510 1.00 0.00 H +ATOM 339 HW2 SOL 112 3.020 0.000 6.950 1.00 0.00 H +ATOM 340 OW SOL 113 16.221 3.670 3.740 1.00 0.00 O +ATOM 341 HW1 SOL 113 16.241 2.910 4.380 1.00 0.00 H +ATOM 342 HW2 SOL 113 15.741 4.440 4.140 1.00 0.00 H +ATOM 343 OW SOL 114 10.231 7.660 9.661 1.00 0.00 O +ATOM 344 HW1 SOL 114 10.381 7.870 10.621 1.00 0.00 H +ATOM 345 HW2 SOL 114 9.931 6.710 9.571 1.00 0.00 H +ATOM 346 OW SOL 115 9.801 15.731 17.001 1.00 0.00 O +ATOM 347 HW1 SOL 115 9.601 16.171 16.121 1.00 0.00 H +ATOM 348 HW2 SOL 115 10.191 14.821 16.841 1.00 0.00 H +ATOM 349 OW SOL 116 18.591 15.181 16.051 1.00 0.00 O +ATOM 350 HW1 SOL 116 18.731 15.451 15.101 1.00 0.00 H +ATOM 351 HW2 SOL 116 19.421 15.401 16.581 1.00 0.00 H +ATOM 352 OW SOL 117 3.500 8.980 18.041 1.00 0.00 O +ATOM 353 HW1 SOL 117 4.260 9.420 18.521 1.00 0.00 H +ATOM 354 HW2 SOL 117 3.850 8.510 17.221 1.00 0.00 H +ATOM 355 OW SOL 118 15.401 2.740 1.250 1.00 0.00 O +ATOM 356 HW1 SOL 118 14.791 1.990 1.480 1.00 0.00 H +ATOM 357 HW2 SOL 118 15.621 3.260 2.080 1.00 0.00 H +ATOM 358 OW SOL 119 13.031 8.380 0.420 1.00 0.00 O +ATOM 359 HW1 SOL 119 13.371 7.450 0.570 1.00 0.00 H +ATOM 360 HW2 SOL 119 13.211 8.650 -0.530 1.00 0.00 H +ATOM 361 OW SOL 120 10.681 13.331 8.490 1.00 0.00 O +ATOM 362 HW1 SOL 120 10.751 12.491 7.940 1.00 0.00 H +ATOM 363 HW2 SOL 120 11.301 14.021 8.130 1.00 0.00 H +ATOM 364 OW SOL 121 3.190 8.100 9.491 1.00 0.00 O +ATOM 365 HW1 SOL 121 4.120 8.460 9.541 1.00 0.00 H +ATOM 366 HW2 SOL 121 3.130 7.250 10.011 1.00 0.00 H +ATOM 367 OW SOL 122 3.390 5.090 10.061 1.00 0.00 O +ATOM 368 HW1 SOL 122 2.870 4.260 9.891 1.00 0.00 H +ATOM 369 HW2 SOL 122 4.160 5.140 9.421 1.00 0.00 H +ATOM 370 OW SOL 123 11.381 3.800 16.781 1.00 0.00 O +ATOM 371 HW1 SOL 123 10.931 4.430 17.421 1.00 0.00 H +ATOM 372 HW2 SOL 123 12.311 4.110 16.611 1.00 0.00 H +ATOM 373 OW SOL 124 11.601 2.070 14.771 1.00 0.00 O +ATOM 374 HW1 SOL 124 11.601 2.710 15.541 1.00 0.00 H +ATOM 375 HW2 SOL 124 11.881 2.550 13.941 1.00 0.00 H +ATOM 376 OW SOL 125 0.880 18.011 9.270 1.00 0.00 O +ATOM 377 HW1 SOL 125 0.460 17.151 9.000 1.00 0.00 H +ATOM 378 HW2 SOL 125 1.820 18.041 8.930 1.00 0.00 H +ATOM 379 OW SOL 126 5.040 15.681 9.100 1.00 0.00 O +ATOM 380 HW1 SOL 126 5.700 16.421 9.190 1.00 0.00 H +ATOM 381 HW2 SOL 126 5.480 14.891 8.680 1.00 0.00 H +ATOM 382 OW SOL 127 10.021 7.960 12.381 1.00 0.00 O +ATOM 383 HW1 SOL 127 10.431 7.640 13.241 1.00 0.00 H +ATOM 384 HW2 SOL 127 9.061 7.690 12.351 1.00 0.00 H +ATOM 385 OW SOL 128 1.890 5.200 17.221 1.00 0.00 O +ATOM 386 HW1 SOL 128 2.480 4.800 16.521 1.00 0.00 H +ATOM 387 HW2 SOL 128 1.310 5.910 16.811 1.00 0.00 H +ATOM 388 OW SOL 129 13.691 9.501 16.601 1.00 0.00 O +ATOM 389 HW1 SOL 129 14.081 10.391 16.801 1.00 0.00 H +ATOM 390 HW2 SOL 129 13.791 9.301 15.631 1.00 0.00 H +ATOM 391 OW SOL 130 8.150 5.720 3.250 1.00 0.00 O +ATOM 392 HW1 SOL 130 8.220 4.830 2.790 1.00 0.00 H +ATOM 393 HW2 SOL 130 7.210 6.060 3.170 1.00 0.00 H +ATOM 394 OW SOL 131 16.571 6.040 12.061 1.00 0.00 O +ATOM 395 HW1 SOL 131 16.191 5.350 12.681 1.00 0.00 H +ATOM 396 HW2 SOL 131 17.391 5.680 11.621 1.00 0.00 H +ATOM 397 OW SOL 132 2.520 15.641 17.441 1.00 0.00 O +ATOM 398 HW1 SOL 132 2.220 16.211 18.201 1.00 0.00 H +ATOM 399 HW2 SOL 132 2.450 14.671 17.701 1.00 0.00 H +ATOM 400 OW SOL 133 6.710 4.640 12.691 1.00 0.00 O +ATOM 401 HW1 SOL 133 6.370 3.750 12.391 1.00 0.00 H +ATOM 402 HW2 SOL 133 6.970 5.180 11.891 1.00 0.00 H +ATOM 403 OW SOL 134 9.300 16.781 14.651 1.00 0.00 O +ATOM 404 HW1 SOL 134 9.060 16.601 13.701 1.00 0.00 H +ATOM 405 HW2 SOL 134 9.600 17.721 14.751 1.00 0.00 H +ATOM 406 OW SOL 135 4.730 5.000 1.910 1.00 0.00 O +ATOM 407 HW1 SOL 135 5.340 5.800 1.950 1.00 0.00 H +ATOM 408 HW2 SOL 135 3.780 5.310 1.980 1.00 0.00 H +ATOM 409 OW SOL 136 1.590 11.371 14.661 1.00 0.00 O +ATOM 410 HW1 SOL 136 1.810 10.761 15.421 1.00 0.00 H +ATOM 411 HW2 SOL 136 1.690 10.881 13.801 1.00 0.00 H +ATOM 412 OW SOL 137 13.471 10.591 12.341 1.00 0.00 O +ATOM 413 HW1 SOL 137 13.711 9.961 11.601 1.00 0.00 H +ATOM 414 HW2 SOL 137 12.571 10.991 12.161 1.00 0.00 H +ATOM 415 OW SOL 138 13.021 8.550 3.090 1.00 0.00 O +ATOM 416 HW1 SOL 138 12.161 8.240 3.510 1.00 0.00 H +ATOM 417 HW2 SOL 138 12.981 8.410 2.100 1.00 0.00 H +ATOM 418 OW SOL 139 17.591 17.471 11.541 1.00 0.00 O +ATOM 419 HW1 SOL 139 18.201 17.771 10.811 1.00 0.00 H +ATOM 420 HW2 SOL 139 17.211 16.581 11.321 1.00 0.00 H +ATOM 421 OW SOL 140 12.521 17.311 11.281 1.00 0.00 O +ATOM 422 HW1 SOL 140 13.361 17.361 10.741 1.00 0.00 H +ATOM 423 HW2 SOL 140 12.291 16.351 11.461 1.00 0.00 H +ATOM 424 OW SOL 141 0.830 12.581 10.221 1.00 0.00 O +ATOM 425 HW1 SOL 141 0.780 12.571 11.221 1.00 0.00 H +ATOM 426 HW2 SOL 141 0.000 12.171 9.841 1.00 0.00 H +ATOM 427 OW SOL 142 6.880 16.621 17.161 1.00 0.00 O +ATOM 428 HW1 SOL 142 6.320 17.431 17.251 1.00 0.00 H +ATOM 429 HW2 SOL 142 7.400 16.661 16.301 1.00 0.00 H +ATOM 430 OW SOL 143 9.030 0.860 1.330 1.00 0.00 O +ATOM 431 HW1 SOL 143 9.540 0.870 0.470 1.00 0.00 H +ATOM 432 HW2 SOL 143 9.590 0.440 2.040 1.00 0.00 H +ATOM 433 OW SOL 144 17.261 1.350 5.230 1.00 0.00 O +ATOM 434 HW1 SOL 144 17.991 1.180 4.560 1.00 0.00 H +ATOM 435 HW2 SOL 144 16.951 0.480 5.610 1.00 0.00 H +ATOM 436 OW SOL 145 13.881 15.731 4.770 1.00 0.00 O +ATOM 437 HW1 SOL 145 14.551 15.851 4.030 1.00 0.00 H +ATOM 438 HW2 SOL 145 13.481 16.621 5.000 1.00 0.00 H +ATOM 439 OW SOL 146 12.801 9.270 6.720 1.00 0.00 O +ATOM 440 HW1 SOL 146 13.401 8.460 6.740 1.00 0.00 H +ATOM 441 HW2 SOL 146 13.201 9.960 6.120 1.00 0.00 H +ATOM 442 OW SOL 147 8.300 12.731 14.221 1.00 0.00 O +ATOM 443 HW1 SOL 147 8.250 13.061 15.171 1.00 0.00 H +ATOM 444 HW2 SOL 147 7.440 12.921 13.761 1.00 0.00 H +ATOM 445 OW SOL 148 6.720 16.161 1.540 1.00 0.00 O +ATOM 446 HW1 SOL 148 6.810 16.261 0.550 1.00 0.00 H +ATOM 447 HW2 SOL 148 6.320 15.271 1.750 1.00 0.00 H +ATOM 448 OW SOL 149 16.501 17.201 13.941 1.00 0.00 O +ATOM 449 HW1 SOL 149 17.031 17.301 13.101 1.00 0.00 H +ATOM 450 HW2 SOL 149 16.231 18.101 14.281 1.00 0.00 H +ATOM 451 OW SOL 150 18.411 1.750 9.631 1.00 0.00 O +ATOM 452 HW1 SOL 150 18.801 0.900 9.271 1.00 0.00 H +ATOM 453 HW2 SOL 150 17.431 1.770 9.441 1.00 0.00 H +ATOM 454 OW SOL 151 2.630 3.260 7.200 1.00 0.00 O +ATOM 455 HW1 SOL 151 1.840 3.770 6.860 1.00 0.00 H +ATOM 456 HW2 SOL 151 2.540 3.110 8.180 1.00 0.00 H +ATOM 457 OW SOL 152 11.941 16.121 0.310 1.00 0.00 O +ATOM 458 HW1 SOL 152 12.001 15.191 0.680 1.00 0.00 H +ATOM 459 HW2 SOL 152 11.351 16.121 -0.490 1.00 0.00 H +ATOM 460 OW SOL 153 8.220 10.021 13.721 1.00 0.00 O +ATOM 461 HW1 SOL 153 8.620 10.011 12.801 1.00 0.00 H +ATOM 462 HW2 SOL 153 8.320 10.941 14.121 1.00 0.00 H +ATOM 463 OW SOL 154 9.160 9.100 2.910 1.00 0.00 O +ATOM 464 HW1 SOL 154 9.790 9.480 2.230 1.00 0.00 H +ATOM 465 HW2 SOL 154 9.560 8.270 3.300 1.00 0.00 H +ATOM 466 OW SOL 155 15.041 16.071 0.440 1.00 0.00 O +ATOM 467 HW1 SOL 155 14.121 16.441 0.510 1.00 0.00 H +ATOM 468 HW2 SOL 155 15.421 16.271 -0.460 1.00 0.00 H +ATOM 469 OW SOL 156 3.720 12.881 14.901 1.00 0.00 O +ATOM 470 HW1 SOL 156 3.590 13.811 14.561 1.00 0.00 H +ATOM 471 HW2 SOL 156 2.880 12.361 14.771 1.00 0.00 H +ATOM 472 OW SOL 157 16.141 12.921 12.891 1.00 0.00 O +ATOM 473 HW1 SOL 157 16.741 12.951 13.691 1.00 0.00 H +ATOM 474 HW2 SOL 157 15.391 13.561 13.021 1.00 0.00 H +ATOM 475 OW SOL 158 10.391 10.981 6.960 1.00 0.00 O +ATOM 476 HW1 SOL 158 9.691 10.511 7.500 1.00 0.00 H +ATOM 477 HW2 SOL 158 10.981 10.301 6.530 1.00 0.00 H +ATOM 478 OW SOL 159 10.141 2.360 9.711 1.00 0.00 O +ATOM 479 HW1 SOL 159 10.061 2.000 8.781 1.00 0.00 H +ATOM 480 HW2 SOL 159 10.121 1.600 10.361 1.00 0.00 H +ATOM 481 OW SOL 160 5.900 14.871 4.910 1.00 0.00 O +ATOM 482 HW1 SOL 160 6.320 14.291 4.210 1.00 0.00 H +ATOM 483 HW2 SOL 160 5.460 15.661 4.470 1.00 0.00 H +ATOM 484 OW SOL 161 17.091 3.850 13.811 1.00 0.00 O +ATOM 485 HW1 SOL 161 17.821 4.540 13.851 1.00 0.00 H +ATOM 486 HW2 SOL 161 17.371 3.100 13.221 1.00 0.00 H +ATOM 487 OW SOL 162 2.550 13.481 2.900 1.00 0.00 O +ATOM 488 HW1 SOL 162 1.590 13.491 2.630 1.00 0.00 H +ATOM 489 HW2 SOL 162 2.670 14.011 3.740 1.00 0.00 H +ATOM 490 OW SOL 163 1.050 10.131 17.261 1.00 0.00 O +ATOM 491 HW1 SOL 163 0.280 9.801 17.801 1.00 0.00 H +ATOM 492 HW2 SOL 163 1.900 9.831 17.681 1.00 0.00 H +ATOM 493 OW SOL 164 6.720 2.030 14.891 1.00 0.00 O +ATOM 494 HW1 SOL 164 7.620 1.870 14.491 1.00 0.00 H +ATOM 495 HW2 SOL 164 6.800 2.080 15.881 1.00 0.00 H +ATOM 496 OW SOL 165 14.401 8.560 13.981 1.00 0.00 O +ATOM 497 HW1 SOL 165 13.831 9.080 13.351 1.00 0.00 H +ATOM 498 HW2 SOL 165 15.361 8.680 13.741 1.00 0.00 H +ATOM 499 OW SOL 166 11.831 13.351 1.190 1.00 0.00 O +ATOM 500 HW1 SOL 166 10.841 13.241 1.210 1.00 0.00 H +ATOM 501 HW2 SOL 166 12.171 13.501 2.120 1.00 0.00 H +ATOM 502 OW SOL 167 6.130 8.420 14.311 1.00 0.00 O +ATOM 503 HW1 SOL 167 6.690 9.230 14.141 1.00 0.00 H +ATOM 504 HW2 SOL 167 6.720 7.620 14.341 1.00 0.00 H +ATOM 505 OW SOL 168 14.931 17.671 9.591 1.00 0.00 O +ATOM 506 HW1 SOL 168 15.261 18.311 8.901 1.00 0.00 H +ATOM 507 HW2 SOL 168 15.591 17.611 10.341 1.00 0.00 H +ATOM 508 OW SOL 169 7.160 5.650 17.081 1.00 0.00 O +ATOM 509 HW1 SOL 169 7.350 6.300 17.821 1.00 0.00 H +ATOM 510 HW2 SOL 169 7.760 4.850 17.171 1.00 0.00 H +ATOM 511 OW SOL 170 14.501 12.201 16.331 1.00 0.00 O +ATOM 512 HW1 SOL 170 14.411 12.101 17.321 1.00 0.00 H +ATOM 513 HW2 SOL 170 15.461 12.131 16.071 1.00 0.00 H +ATOM 514 OW SOL 171 3.900 17.411 15.601 1.00 0.00 O +ATOM 515 HW1 SOL 171 2.990 17.821 15.581 1.00 0.00 H +ATOM 516 HW2 SOL 171 3.830 16.471 15.921 1.00 0.00 H +ATOM 517 OW SOL 172 16.741 8.830 12.541 1.00 0.00 O +ATOM 518 HW1 SOL 172 16.471 7.940 12.171 1.00 0.00 H +ATOM 519 HW2 SOL 172 16.751 9.510 11.811 1.00 0.00 H +ATOM 520 OW SOL 173 12.251 3.250 4.490 1.00 0.00 O +ATOM 521 HW1 SOL 173 12.901 2.510 4.380 1.00 0.00 H +ATOM 522 HW2 SOL 173 12.451 3.750 5.330 1.00 0.00 H +ATOM 523 OW SOL 174 5.940 7.450 6.520 1.00 0.00 O +ATOM 524 HW1 SOL 174 6.440 8.300 6.330 1.00 0.00 H +ATOM 525 HW2 SOL 174 5.060 7.470 6.040 1.00 0.00 H +ATOM 526 OW SOL 175 17.771 3.420 16.421 1.00 0.00 O +ATOM 527 HW1 SOL 175 17.601 3.730 15.481 1.00 0.00 H +ATOM 528 HW2 SOL 175 16.931 3.050 16.801 1.00 0.00 H +ATOM 529 OW SOL 176 17.301 9.341 15.171 1.00 0.00 O +ATOM 530 HW1 SOL 176 17.681 10.251 15.321 1.00 0.00 H +ATOM 531 HW2 SOL 176 17.221 9.171 14.181 1.00 0.00 H +ATOM 532 OW SOL 177 8.590 13.741 0.160 1.00 0.00 O +ATOM 533 HW1 SOL 177 8.130 13.891 1.040 1.00 0.00 H +ATOM 534 HW2 SOL 177 9.030 14.591 -0.140 1.00 0.00 H +ATOM 535 OW SOL 178 6.610 17.901 9.531 1.00 0.00 O +ATOM 536 HW1 SOL 178 6.150 18.781 9.401 1.00 0.00 H +ATOM 537 HW2 SOL 178 7.600 18.021 9.461 1.00 0.00 H +ATOM 538 OW SOL 179 8.590 9.561 8.610 1.00 0.00 O +ATOM 539 HW1 SOL 179 9.130 8.871 9.090 1.00 0.00 H +ATOM 540 HW2 SOL 179 8.270 10.251 9.270 1.00 0.00 H +ATOM 541 OW SOL 180 10.831 9.841 0.870 1.00 0.00 O +ATOM 542 HW1 SOL 180 10.601 10.371 0.050 1.00 0.00 H +ATOM 543 HW2 SOL 180 11.641 9.281 0.680 1.00 0.00 H +ATOM 544 OW SOL 181 18.611 15.691 8.510 1.00 0.00 O +ATOM 545 HW1 SOL 181 17.901 15.571 7.810 1.00 0.00 H +ATOM 546 HW2 SOL 181 18.621 14.901 9.110 1.00 0.00 H +ATOM 547 OW SOL 182 2.210 13.141 18.441 1.00 0.00 O +ATOM 548 HW1 SOL 182 1.560 12.411 18.231 1.00 0.00 H +ATOM 549 HW2 SOL 182 2.250 13.281 19.421 1.00 0.00 H +ATOM 550 OW SOL 183 0.790 12.401 6.530 1.00 0.00 O +ATOM 551 HW1 SOL 183 0.780 11.931 7.410 1.00 0.00 H +ATOM 552 HW2 SOL 183 1.610 12.121 6.020 1.00 0.00 H +ATOM 553 OW SOL 184 6.720 13.911 16.241 1.00 0.00 O +ATOM 554 HW1 SOL 184 5.940 13.411 16.621 1.00 0.00 H +ATOM 555 HW2 SOL 184 6.690 14.861 16.551 1.00 0.00 H +ATOM 556 OW SOL 185 18.241 1.920 12.271 1.00 0.00 O +ATOM 557 HW1 SOL 185 18.201 1.020 12.711 1.00 0.00 H +ATOM 558 HW2 SOL 185 18.271 1.810 11.281 1.00 0.00 H +ATOM 559 OW SOL 186 4.280 4.240 5.200 1.00 0.00 O +ATOM 560 HW1 SOL 186 4.580 3.520 4.580 1.00 0.00 H +ATOM 561 HW2 SOL 186 3.890 3.840 6.030 1.00 0.00 H +ATOM 562 OW SOL 187 17.051 14.871 11.041 1.00 0.00 O +ATOM 563 HW1 SOL 187 16.121 14.621 10.771 1.00 0.00 H +ATOM 564 HW2 SOL 187 17.311 14.371 11.861 1.00 0.00 H +ATOM 565 OW SOL 188 3.170 5.470 12.801 1.00 0.00 O +ATOM 566 HW1 SOL 188 3.550 4.880 13.521 1.00 0.00 H +ATOM 567 HW2 SOL 188 3.570 5.210 11.921 1.00 0.00 H +ATOM 568 OW SOL 189 8.120 15.861 6.870 1.00 0.00 O +ATOM 569 HW1 SOL 189 8.440 15.961 5.930 1.00 0.00 H +ATOM 570 HW2 SOL 189 7.330 15.241 6.890 1.00 0.00 H +ATOM 571 OW SOL 190 14.241 2.140 11.121 1.00 0.00 O +ATOM 572 HW1 SOL 190 14.761 1.490 11.671 1.00 0.00 H +ATOM 573 HW2 SOL 190 13.751 2.770 11.731 1.00 0.00 H +ATOM 574 OW SOL 191 10.011 0.340 11.541 1.00 0.00 O +ATOM 575 HW1 SOL 191 9.381 -0.380 11.231 1.00 0.00 H +ATOM 576 HW2 SOL 191 10.941 -0.020 11.541 1.00 0.00 H +ATOM 577 OW SOL 192 7.700 13.301 3.010 1.00 0.00 O +ATOM 578 HW1 SOL 192 7.240 12.431 3.180 1.00 0.00 H +ATOM 579 HW2 SOL 192 8.610 13.271 3.420 1.00 0.00 H +ATOM 580 OW SOL 193 6.180 15.671 12.841 1.00 0.00 O +ATOM 581 HW1 SOL 193 6.130 16.491 13.411 1.00 0.00 H +ATOM 582 HW2 SOL 193 7.070 15.641 12.391 1.00 0.00 H +ATOM 583 OW SOL 194 13.521 0.520 1.680 1.00 0.00 O +ATOM 584 HW1 SOL 194 13.871 0.110 0.840 1.00 0.00 H +ATOM 585 HW2 SOL 194 12.621 0.140 1.880 1.00 0.00 H +ATOM 586 OW SOL 195 13.001 4.530 6.910 1.00 0.00 O +ATOM 587 HW1 SOL 195 12.411 5.330 6.950 1.00 0.00 H +ATOM 588 HW2 SOL 195 13.151 4.180 7.840 1.00 0.00 H +ATOM 589 OW SOL 196 15.931 2.210 8.820 1.00 0.00 O +ATOM 590 HW1 SOL 196 15.091 2.200 9.360 1.00 0.00 H +ATOM 591 HW2 SOL 196 15.951 3.040 8.260 1.00 0.00 H +ATOM 592 OW SOL 197 0.390 10.771 3.000 1.00 0.00 O +ATOM 593 HW1 SOL 197 1.380 10.661 2.910 1.00 0.00 H +ATOM 594 HW2 SOL 197 -0.010 9.911 3.320 1.00 0.00 H +ATOM 595 OW SOL 198 8.750 16.461 3.370 1.00 0.00 O +ATOM 596 HW1 SOL 198 7.980 16.111 2.830 1.00 0.00 H +ATOM 597 HW2 SOL 198 8.430 17.171 3.990 1.00 0.00 H +ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O +ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H +ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H +ATOM 601 OW SOL 200 6.060 9.641 19.851 1.00 0.00 O +ATOM 602 HW1 SOL 200 6.130 10.481 19.311 1.00 0.00 H +ATOM 603 HW2 SOL 200 6.520 9.771 20.731 1.00 0.00 H +ATOM 604 OW SOL 201 18.421 17.671 0.381 1.00 0.00 O +ATOM 605 HW1 SOL 201 18.961 17.381 1.181 1.00 0.00 H +ATOM 606 HW2 SOL 201 18.721 18.571 0.091 1.00 0.00 H +ATOM 607 OW SOL 202 0.270 15.961 19.791 1.00 0.00 O +ATOM 608 HW1 SOL 202 0.080 15.001 20.001 1.00 0.00 H +ATOM 609 HW2 SOL 202 -0.060 16.541 20.541 1.00 0.00 H +ATOM 610 OW SOL 203 16.411 11.081 1.111 1.00 0.00 O +ATOM 611 HW1 SOL 203 17.271 11.101 0.591 1.00 0.00 H +ATOM 612 HW2 SOL 203 16.551 11.551 1.991 1.00 0.00 H +ATOM 613 OW SOL 204 15.251 9.991 20.521 1.00 0.00 O +ATOM 614 HW1 SOL 204 14.621 9.231 20.651 1.00 0.00 H +ATOM 615 HW2 SOL 204 15.731 10.171 21.381 1.00 0.00 H +ATOM 616 OW SOL 205 5.980 7.290 21.321 1.00 0.00 O +ATOM 617 HW1 SOL 205 6.220 7.980 20.641 1.00 0.00 H +ATOM 618 HW2 SOL 205 5.200 7.620 21.861 1.00 0.00 H +ATOM 619 OW SOL 206 8.650 3.480 20.571 1.00 0.00 O +ATOM 620 HW1 SOL 206 9.240 4.110 20.081 1.00 0.00 H +ATOM 621 HW2 SOL 206 8.840 2.540 20.281 1.00 0.00 H +ATOM 622 OW SOL 207 10.081 14.561 1.561 1.00 0.00 O +ATOM 623 HW1 SOL 207 9.621 15.281 1.041 1.00 0.00 H +ATOM 624 HW2 SOL 207 10.041 14.761 2.541 1.00 0.00 H +ATOM 625 OW SOL 208 3.210 9.431 21.041 1.00 0.00 O +ATOM 626 HW1 SOL 208 4.030 9.821 20.621 1.00 0.00 H +ATOM 627 HW2 SOL 208 2.940 8.611 20.551 1.00 0.00 H +ATOM 628 OW SOL 209 16.321 13.771 19.431 1.00 0.00 O +ATOM 629 HW1 SOL 209 16.001 14.711 19.331 1.00 0.00 H +ATOM 630 HW2 SOL 209 15.561 13.141 19.311 1.00 0.00 H +ATOM 631 OW SOL 210 4.640 17.431 0.021 1.00 0.00 O +ATOM 632 HW1 SOL 210 4.970 17.821 0.881 1.00 0.00 H +ATOM 633 HW2 SOL 210 5.400 17.361 -0.629 1.00 0.00 H +ATOM 634 OW SOL 211 6.140 1.220 19.791 1.00 0.00 O +ATOM 635 HW1 SOL 211 7.120 1.000 19.861 1.00 0.00 H +ATOM 636 HW2 SOL 211 5.830 1.050 18.861 1.00 0.00 H +ATOM 637 OW SOL 212 14.341 11.881 19.031 1.00 0.00 O +ATOM 638 HW1 SOL 212 14.661 11.121 19.601 1.00 0.00 H +ATOM 639 HW2 SOL 212 13.421 12.151 19.331 1.00 0.00 H +ATOM 640 OW SOL 213 2.970 0.350 20.331 1.00 0.00 O +ATOM 641 HW1 SOL 213 3.460 1.190 20.121 1.00 0.00 H +ATOM 642 HW2 SOL 213 3.590 -0.300 20.781 1.00 0.00 H +ATOM 643 OW SOL 214 10.321 5.490 18.781 1.00 0.00 O +ATOM 644 HW1 SOL 214 9.911 6.310 18.391 1.00 0.00 H +ATOM 645 HW2 SOL 214 10.961 5.750 19.511 1.00 0.00 H +ATOM 646 OW SOL 215 18.571 8.330 0.561 1.00 0.00 O +ATOM 647 HW1 SOL 215 18.991 7.690 1.201 1.00 0.00 H +ATOM 648 HW2 SOL 215 18.191 7.820 -0.219 1.00 0.00 H +ATOM 649 OW SOL 216 4.880 13.851 20.361 1.00 0.00 O +ATOM 650 HW1 SOL 216 4.010 13.701 20.831 1.00 0.00 H +ATOM 651 HW2 SOL 216 4.710 14.111 19.411 1.00 0.00 H +ATOM 652 OW SOL 217 13.901 5.750 19.401 1.00 0.00 O +ATOM 653 HW1 SOL 217 13.361 5.540 20.211 1.00 0.00 H +ATOM 654 HW2 SOL 217 14.811 5.340 19.491 1.00 0.00 H +ATOM 655 OW SOL 218 15.821 6.390 1.511 1.00 0.00 O +ATOM 656 HW1 SOL 218 15.511 7.000 2.241 1.00 0.00 H +ATOM 657 HW2 SOL 218 16.321 6.910 0.821 1.00 0.00 H +ATOM 658 OW SOL 219 15.401 2.740 19.871 1.00 0.00 O +ATOM 659 HW1 SOL 219 14.791 1.990 20.101 1.00 0.00 H +ATOM 660 HW2 SOL 219 15.621 3.260 20.701 1.00 0.00 H +ATOM 661 OW SOL 220 13.031 8.380 19.041 1.00 0.00 O +ATOM 662 HW1 SOL 220 13.371 7.450 19.191 1.00 0.00 H +ATOM 663 HW2 SOL 220 13.211 8.650 18.091 1.00 0.00 H +ATOM 664 OW SOL 221 8.150 5.720 0.041 1.00 0.00 O +ATOM 665 HW1 SOL 221 8.220 4.830 -0.419 1.00 0.00 H +ATOM 666 HW2 SOL 221 7.210 6.060 -0.039 1.00 0.00 H +ATOM 667 OW SOL 222 4.730 5.000 20.531 1.00 0.00 O +ATOM 668 HW1 SOL 222 5.340 5.800 20.571 1.00 0.00 H +ATOM 669 HW2 SOL 222 3.780 5.310 20.601 1.00 0.00 H +ATOM 670 OW SOL 223 17.261 1.350 2.021 1.00 0.00 O +ATOM 671 HW1 SOL 223 17.991 1.180 1.351 1.00 0.00 H +ATOM 672 HW2 SOL 223 16.951 0.480 2.401 1.00 0.00 H +ATOM 673 OW SOL 224 6.720 16.161 20.161 1.00 0.00 O +ATOM 674 HW1 SOL 224 6.810 16.261 19.171 1.00 0.00 H +ATOM 675 HW2 SOL 224 6.320 15.271 20.371 1.00 0.00 H +ATOM 676 OW SOL 225 11.941 16.121 18.931 1.00 0.00 O +ATOM 677 HW1 SOL 225 12.001 15.191 19.301 1.00 0.00 H +ATOM 678 HW2 SOL 225 11.351 16.121 18.131 1.00 0.00 H +ATOM 679 OW SOL 226 9.160 9.100 21.531 1.00 0.00 O +ATOM 680 HW1 SOL 226 9.790 9.480 20.851 1.00 0.00 H +ATOM 681 HW2 SOL 226 9.560 8.270 21.921 1.00 0.00 H +ATOM 682 OW SOL 227 15.041 16.071 19.061 1.00 0.00 O +ATOM 683 HW1 SOL 227 14.121 16.441 19.131 1.00 0.00 H +ATOM 684 HW2 SOL 227 15.421 16.271 18.161 1.00 0.00 H +ATOM 685 OW SOL 228 2.550 13.481 21.521 1.00 0.00 O +ATOM 686 HW1 SOL 228 1.590 13.491 21.251 1.00 0.00 H +ATOM 687 HW2 SOL 228 2.670 14.011 22.361 1.00 0.00 H +ATOM 688 OW SOL 229 0.750 3.450 18.951 1.00 0.00 O +ATOM 689 HW1 SOL 229 -0.170 3.170 18.661 1.00 0.00 H +ATOM 690 HW2 SOL 229 1.060 4.220 18.391 1.00 0.00 H +ATOM 691 OW SOL 230 11.831 13.351 19.811 1.00 0.00 O +ATOM 692 HW1 SOL 230 10.841 13.241 19.831 1.00 0.00 H +ATOM 693 HW2 SOL 230 12.171 13.501 20.741 1.00 0.00 H +ATOM 694 OW SOL 231 8.590 13.741 18.781 1.00 0.00 O +ATOM 695 HW1 SOL 231 8.130 13.891 19.661 1.00 0.00 H +ATOM 696 HW2 SOL 231 9.030 14.591 18.481 1.00 0.00 H +ATOM 697 OW SOL 232 10.831 9.841 19.491 1.00 0.00 O +ATOM 698 HW1 SOL 232 10.601 10.371 18.671 1.00 0.00 H +ATOM 699 HW2 SOL 232 11.641 9.281 19.301 1.00 0.00 H +ATOM 700 OW SOL 233 13.521 0.520 20.301 1.00 0.00 O +ATOM 701 HW1 SOL 233 13.871 0.110 19.461 1.00 0.00 H +ATOM 702 HW2 SOL 233 12.621 0.140 20.501 1.00 0.00 H +ATOM 703 OW SOL 234 0.390 10.771 21.621 1.00 0.00 O +ATOM 704 HW1 SOL 234 1.380 10.661 21.531 1.00 0.00 H +ATOM 705 HW2 SOL 234 -0.010 9.911 21.941 1.00 0.00 H +ATOM 706 OW SOL 235 8.750 16.461 0.161 1.00 0.00 O +ATOM 707 HW1 SOL 235 7.980 16.111 -0.379 1.00 0.00 H +ATOM 708 HW2 SOL 235 8.430 17.171 0.781 1.00 0.00 H +ATOM 709 OW SOL 236 4.380 0.711 14.991 1.00 0.00 O +ATOM 710 HW1 SOL 236 5.200 0.151 15.081 1.00 0.00 H +ATOM 711 HW2 SOL 236 3.570 0.131 15.031 1.00 0.00 H +ATOM 712 OW SOL 237 15.941 19.761 14.801 1.00 0.00 O +ATOM 713 HW1 SOL 237 15.761 20.431 14.081 1.00 0.00 H +ATOM 714 HW2 SOL 237 15.911 20.221 15.691 1.00 0.00 H +ATOM 715 OW SOL 238 8.090 18.661 5.020 1.00 0.00 O +ATOM 716 HW1 SOL 238 8.490 19.571 4.930 1.00 0.00 H +ATOM 717 HW2 SOL 238 7.090 18.741 5.080 1.00 0.00 H +ATOM 718 OW SOL 239 12.811 0.241 9.441 1.00 0.00 O +ATOM 719 HW1 SOL 239 11.951 -0.259 9.311 1.00 0.00 H +ATOM 720 HW2 SOL 239 13.431 -0.299 10.001 1.00 0.00 H +ATOM 721 OW SOL 240 5.500 20.581 8.850 1.00 0.00 O +ATOM 722 HW1 SOL 240 5.450 20.531 9.850 1.00 0.00 H +ATOM 723 HW2 SOL 240 5.520 21.541 8.560 1.00 0.00 H +ATOM 724 OW SOL 241 2.020 21.471 14.981 1.00 0.00 O +ATOM 725 HW1 SOL 241 1.220 22.071 14.851 1.00 0.00 H +ATOM 726 HW2 SOL 241 1.920 20.981 15.841 1.00 0.00 H +ATOM 727 OW SOL 242 14.001 19.691 4.260 1.00 0.00 O +ATOM 728 HW1 SOL 242 13.761 19.321 3.360 1.00 0.00 H +ATOM 729 HW2 SOL 242 14.991 19.851 4.300 1.00 0.00 H +ATOM 730 OW SOL 243 15.471 20.841 17.291 1.00 0.00 O +ATOM 731 HW1 SOL 243 15.421 21.211 18.211 1.00 0.00 H +ATOM 732 HW2 SOL 243 14.751 20.151 17.171 1.00 0.00 H +ATOM 733 OW SOL 244 6.140 19.841 1.170 1.00 0.00 O +ATOM 734 HW1 SOL 244 7.120 19.621 1.240 1.00 0.00 H +ATOM 735 HW2 SOL 244 5.830 19.671 0.240 1.00 0.00 H +ATOM 736 OW SOL 245 7.810 21.261 17.491 1.00 0.00 O +ATOM 737 HW1 SOL 245 8.480 20.651 17.921 1.00 0.00 H +ATOM 738 HW2 SOL 245 7.080 21.451 18.141 1.00 0.00 H +ATOM 739 OW SOL 246 5.390 19.261 5.120 1.00 0.00 O +ATOM 740 HW1 SOL 246 4.580 19.271 5.700 1.00 0.00 H +ATOM 741 HW2 SOL 246 5.420 20.091 4.570 1.00 0.00 H +ATOM 742 OW SOL 247 5.610 20.841 11.471 1.00 0.00 O +ATOM 743 HW1 SOL 247 5.990 20.001 11.841 1.00 0.00 H +ATOM 744 HW2 SOL 247 4.730 21.031 11.911 1.00 0.00 H +ATOM 745 OW SOL 248 10.171 19.011 7.530 1.00 0.00 O +ATOM 746 HW1 SOL 248 9.451 19.061 6.840 1.00 0.00 H +ATOM 747 HW2 SOL 248 9.931 18.321 8.220 1.00 0.00 H +ATOM 748 OW SOL 249 5.270 21.181 3.280 1.00 0.00 O +ATOM 749 HW1 SOL 249 5.540 20.591 2.530 1.00 0.00 H +ATOM 750 HW2 SOL 249 5.270 22.131 2.970 1.00 0.00 H +ATOM 751 OW SOL 250 9.150 19.511 14.021 1.00 0.00 O +ATOM 752 HW1 SOL 250 9.400 19.311 13.071 1.00 0.00 H +ATOM 753 HW2 SOL 250 9.870 20.071 14.441 1.00 0.00 H +ATOM 754 OW SOL 251 12.741 0.651 12.621 1.00 0.00 O +ATOM 755 HW1 SOL 251 12.951 1.391 13.261 1.00 0.00 H +ATOM 756 HW2 SOL 251 11.851 0.821 12.191 1.00 0.00 H +ATOM 757 OW SOL 252 10.131 19.671 17.701 1.00 0.00 O +ATOM 758 HW1 SOL 252 10.191 20.521 17.181 1.00 0.00 H +ATOM 759 HW2 SOL 252 10.451 18.911 17.131 1.00 0.00 H +ATOM 760 OW SOL 253 5.040 19.121 17.401 1.00 0.00 O +ATOM 761 HW1 SOL 253 4.620 18.551 16.701 1.00 0.00 H +ATOM 762 HW2 SOL 253 4.380 19.811 17.721 1.00 0.00 H +ATOM 763 OW SOL 254 3.070 20.751 12.311 1.00 0.00 O +ATOM 764 HW1 SOL 254 2.840 21.121 13.211 1.00 0.00 H +ATOM 765 HW2 SOL 254 2.770 19.801 12.251 1.00 0.00 H +ATOM 766 OW SOL 255 3.070 19.251 6.180 1.00 0.00 O +ATOM 767 HW1 SOL 255 2.960 20.191 6.510 1.00 0.00 H +ATOM 768 HW2 SOL 255 3.020 18.621 6.950 1.00 0.00 H +ATOM 769 OW SOL 256 15.401 21.361 1.250 1.00 0.00 O +ATOM 770 HW1 SOL 256 14.791 20.611 1.480 1.00 0.00 H +ATOM 771 HW2 SOL 256 15.621 21.881 2.080 1.00 0.00 H +ATOM 772 OW SOL 257 11.601 20.691 14.771 1.00 0.00 O +ATOM 773 HW1 SOL 257 11.601 21.331 15.541 1.00 0.00 H +ATOM 774 HW2 SOL 257 11.881 21.171 13.941 1.00 0.00 H +ATOM 775 OW SOL 258 9.030 19.481 1.330 1.00 0.00 O +ATOM 776 HW1 SOL 258 9.540 19.491 0.470 1.00 0.00 H +ATOM 777 HW2 SOL 258 9.590 19.061 2.040 1.00 0.00 H +ATOM 778 OW SOL 259 17.261 19.971 5.230 1.00 0.00 O +ATOM 779 HW1 SOL 259 17.991 19.801 4.560 1.00 0.00 H +ATOM 780 HW2 SOL 259 16.951 19.101 5.610 1.00 0.00 H +ATOM 781 OW SOL 260 18.411 20.371 9.631 1.00 0.00 O +ATOM 782 HW1 SOL 260 18.801 19.521 9.271 1.00 0.00 H +ATOM 783 HW2 SOL 260 17.431 20.391 9.441 1.00 0.00 H +ATOM 784 OW SOL 261 6.720 20.651 14.891 1.00 0.00 O +ATOM 785 HW1 SOL 261 7.620 20.491 14.491 1.00 0.00 H +ATOM 786 HW2 SOL 261 6.800 20.701 15.881 1.00 0.00 H +ATOM 787 OW SOL 262 12.251 0.041 4.490 1.00 0.00 O +ATOM 788 HW1 SOL 262 12.901 -0.699 4.380 1.00 0.00 H +ATOM 789 HW2 SOL 262 12.451 0.541 5.330 1.00 0.00 H +ATOM 790 OW SOL 263 17.771 0.211 16.421 1.00 0.00 O +ATOM 791 HW1 SOL 263 17.601 0.521 15.481 1.00 0.00 H +ATOM 792 HW2 SOL 263 16.931 -0.159 16.801 1.00 0.00 H +ATOM 793 OW SOL 264 18.241 20.541 12.271 1.00 0.00 O +ATOM 794 HW1 SOL 264 18.201 19.641 12.711 1.00 0.00 H +ATOM 795 HW2 SOL 264 18.271 20.431 11.281 1.00 0.00 H +ATOM 796 OW SOL 265 14.241 20.761 11.121 1.00 0.00 O +ATOM 797 HW1 SOL 265 14.761 20.111 11.671 1.00 0.00 H +ATOM 798 HW2 SOL 265 13.751 21.391 11.731 1.00 0.00 H +ATOM 799 OW SOL 266 10.011 18.961 11.541 1.00 0.00 O +ATOM 800 HW1 SOL 266 9.381 18.241 11.231 1.00 0.00 H +ATOM 801 HW2 SOL 266 10.941 18.601 11.541 1.00 0.00 H +ATOM 802 OW SOL 267 13.521 19.141 1.680 1.00 0.00 O +ATOM 803 HW1 SOL 267 13.871 18.731 0.840 1.00 0.00 H +ATOM 804 HW2 SOL 267 12.621 18.761 1.880 1.00 0.00 H +ATOM 805 OW SOL 268 13.001 1.321 6.910 1.00 0.00 O +ATOM 806 HW1 SOL 268 12.411 2.121 6.950 1.00 0.00 H +ATOM 807 HW2 SOL 268 13.151 0.971 7.840 1.00 0.00 H +ATOM 808 OW SOL 269 15.931 20.831 8.820 1.00 0.00 O +ATOM 809 HW1 SOL 269 15.091 20.821 9.360 1.00 0.00 H +ATOM 810 HW2 SOL 269 15.951 21.661 8.260 1.00 0.00 H +ATOM 811 OW SOL 270 8.650 0.271 20.571 1.00 0.00 O +ATOM 812 HW1 SOL 270 9.240 0.901 20.081 1.00 0.00 H +ATOM 813 HW2 SOL 270 8.840 -0.669 20.281 1.00 0.00 H +ATOM 814 OW SOL 271 6.140 19.841 19.791 1.00 0.00 O +ATOM 815 HW1 SOL 271 7.120 19.621 19.861 1.00 0.00 H +ATOM 816 HW2 SOL 271 5.830 19.671 18.861 1.00 0.00 H +ATOM 817 OW SOL 272 2.970 18.971 20.331 1.00 0.00 O +ATOM 818 HW1 SOL 272 3.460 19.811 20.121 1.00 0.00 H +ATOM 819 HW2 SOL 272 3.590 18.321 20.781 1.00 0.00 H +ATOM 820 OW SOL 273 15.401 21.361 19.871 1.00 0.00 O +ATOM 821 HW1 SOL 273 14.791 20.611 20.101 1.00 0.00 H +ATOM 822 HW2 SOL 273 15.621 21.881 20.701 1.00 0.00 H +ATOM 823 OW SOL 274 17.261 19.971 2.021 1.00 0.00 O +ATOM 824 HW1 SOL 274 17.991 19.801 1.351 1.00 0.00 H +ATOM 825 HW2 SOL 274 16.951 19.101 2.401 1.00 0.00 H +ATOM 826 OW SOL 275 0.750 0.241 18.951 1.00 0.00 O +ATOM 827 HW1 SOL 275 -0.170 -0.039 18.661 1.00 0.00 H +ATOM 828 HW2 SOL 275 1.060 1.011 18.391 1.00 0.00 H +ATOM 829 OW SOL 276 13.521 19.141 20.301 1.00 0.00 O +ATOM 830 HW1 SOL 276 13.871 18.731 19.461 1.00 0.00 H +ATOM 831 HW2 SOL 276 12.621 18.761 20.501 1.00 0.00 H +ATOM 832 OW SOL 277 20.921 6.280 1.130 1.00 0.00 O +ATOM 833 HW1 SOL 277 19.991 6.260 1.500 1.00 0.00 H +ATOM 834 HW2 SOL 277 20.931 5.890 0.210 1.00 0.00 H +ATOM 835 OW SOL 278 20.871 2.750 9.961 1.00 0.00 O +ATOM 836 HW1 SOL 278 21.221 2.580 10.881 1.00 0.00 H +ATOM 837 HW2 SOL 278 19.991 2.300 9.841 1.00 0.00 H +ATOM 838 OW SOL 279 18.811 3.680 6.470 1.00 0.00 O +ATOM 839 HW1 SOL 279 17.991 4.110 6.860 1.00 0.00 H +ATOM 840 HW2 SOL 279 18.531 2.950 5.840 1.00 0.00 H +ATOM 841 OW SOL 280 0.141 14.351 10.611 1.00 0.00 O +ATOM 842 HW1 SOL 280 -0.639 14.041 10.081 1.00 0.00 H +ATOM 843 HW2 SOL 280 0.721 14.931 10.041 1.00 0.00 H +ATOM 844 OW SOL 281 20.931 17.131 4.830 1.00 0.00 O +ATOM 845 HW1 SOL 281 21.271 17.901 5.370 1.00 0.00 H +ATOM 846 HW2 SOL 281 21.371 17.131 3.930 1.00 0.00 H +ATOM 847 OW SOL 282 20.921 14.341 5.380 1.00 0.00 O +ATOM 848 HW1 SOL 282 20.661 15.301 5.380 1.00 0.00 H +ATOM 849 HW2 SOL 282 20.211 13.801 5.830 1.00 0.00 H +ATOM 850 OW SOL 283 21.021 10.911 8.860 1.00 0.00 O +ATOM 851 HW1 SOL 283 21.161 10.071 9.380 1.00 0.00 H +ATOM 852 HW2 SOL 283 20.471 11.551 9.410 1.00 0.00 H +ATOM 853 OW SOL 284 19.841 6.430 5.630 1.00 0.00 O +ATOM 854 HW1 SOL 284 19.391 5.550 5.800 1.00 0.00 H +ATOM 855 HW2 SOL 284 19.831 6.970 6.470 1.00 0.00 H +ATOM 856 OW SOL 285 19.751 7.370 15.971 1.00 0.00 O +ATOM 857 HW1 SOL 285 20.631 7.240 16.421 1.00 0.00 H +ATOM 858 HW2 SOL 285 19.621 8.340 15.751 1.00 0.00 H +ATOM 859 OW SOL 286 20.591 9.761 12.641 1.00 0.00 O +ATOM 860 HW1 SOL 286 21.481 9.311 12.501 1.00 0.00 H +ATOM 861 HW2 SOL 286 19.861 9.111 12.451 1.00 0.00 H +ATOM 862 OW SOL 287 19.381 8.110 7.890 1.00 0.00 O +ATOM 863 HW1 SOL 287 20.371 7.990 7.980 1.00 0.00 H +ATOM 864 HW2 SOL 287 19.141 9.060 8.100 1.00 0.00 H +ATOM 865 OW SOL 288 19.921 18.211 15.711 1.00 0.00 O +ATOM 866 HW1 SOL 288 19.821 18.061 16.701 1.00 0.00 H +ATOM 867 HW2 SOL 288 19.061 18.571 15.351 1.00 0.00 H +ATOM 868 OW SOL 289 20.641 2.850 14.981 1.00 0.00 O +ATOM 869 HW1 SOL 289 19.841 3.450 14.851 1.00 0.00 H +ATOM 870 HW2 SOL 289 20.541 2.360 15.841 1.00 0.00 H +ATOM 871 OW SOL 290 0.611 7.000 4.800 1.00 0.00 O +ATOM 872 HW1 SOL 290 1.061 6.100 4.770 1.00 0.00 H +ATOM 873 HW2 SOL 290 -0.329 6.890 5.130 1.00 0.00 H +ATOM 874 OW SOL 291 19.401 5.560 13.861 1.00 0.00 O +ATOM 875 HW1 SOL 291 20.321 5.550 13.451 1.00 0.00 H +ATOM 876 HW2 SOL 291 19.341 6.300 14.531 1.00 0.00 H +ATOM 877 OW SOL 292 0.891 8.130 12.511 1.00 0.00 O +ATOM 878 HW1 SOL 292 1.751 8.250 13.011 1.00 0.00 H +ATOM 879 HW2 SOL 292 0.471 7.260 12.781 1.00 0.00 H +ATOM 880 OW SOL 293 19.261 15.641 13.311 1.00 0.00 O +ATOM 881 HW1 SOL 293 18.801 16.461 12.971 1.00 0.00 H +ATOM 882 HW2 SOL 293 20.241 15.831 13.401 1.00 0.00 H +ATOM 883 OW SOL 294 21.691 2.130 12.311 1.00 0.00 O +ATOM 884 HW1 SOL 294 21.461 2.500 13.211 1.00 0.00 H +ATOM 885 HW2 SOL 294 21.391 1.180 12.251 1.00 0.00 H +ATOM 886 OW SOL 295 18.991 13.101 12.821 1.00 0.00 O +ATOM 887 HW1 SOL 295 19.521 12.611 13.501 1.00 0.00 H +ATOM 888 HW2 SOL 295 19.211 14.081 12.871 1.00 0.00 H +ATOM 889 OW SOL 296 21.811 8.100 9.491 1.00 0.00 O +ATOM 890 HW1 SOL 296 22.741 8.460 9.541 1.00 0.00 H +ATOM 891 HW2 SOL 296 21.751 7.250 10.011 1.00 0.00 H +ATOM 892 OW SOL 297 18.701 13.261 2.000 1.00 0.00 O +ATOM 893 HW1 SOL 297 17.771 13.471 1.690 1.00 0.00 H +ATOM 894 HW2 SOL 297 18.801 12.271 2.130 1.00 0.00 H +ATOM 895 OW SOL 298 19.501 18.011 9.270 1.00 0.00 O +ATOM 896 HW1 SOL 298 19.081 17.151 9.000 1.00 0.00 H +ATOM 897 HW2 SOL 298 20.441 18.041 8.930 1.00 0.00 H +ATOM 898 OW SOL 299 1.831 15.681 9.100 1.00 0.00 O +ATOM 899 HW1 SOL 299 2.491 16.421 9.190 1.00 0.00 H +ATOM 900 HW2 SOL 299 2.271 14.891 8.680 1.00 0.00 H +ATOM 901 OW SOL 300 19.021 5.440 11.141 1.00 0.00 O +ATOM 902 HW1 SOL 300 19.871 5.110 10.731 1.00 0.00 H +ATOM 903 HW2 SOL 300 19.151 5.590 12.121 1.00 0.00 H +ATOM 904 OW SOL 301 20.511 5.200 17.221 1.00 0.00 O +ATOM 905 HW1 SOL 301 21.101 4.800 16.521 1.00 0.00 H +ATOM 906 HW2 SOL 301 19.931 5.910 16.811 1.00 0.00 H +ATOM 907 OW SOL 302 21.141 15.641 17.441 1.00 0.00 O +ATOM 908 HW1 SOL 302 20.841 16.211 18.201 1.00 0.00 H +ATOM 909 HW2 SOL 302 21.071 14.671 17.701 1.00 0.00 H +ATOM 910 OW SOL 303 1.521 5.000 1.910 1.00 0.00 O +ATOM 911 HW1 SOL 303 2.131 5.800 1.950 1.00 0.00 H +ATOM 912 HW2 SOL 303 0.571 5.310 1.980 1.00 0.00 H +ATOM 913 OW SOL 304 20.211 11.371 14.661 1.00 0.00 O +ATOM 914 HW1 SOL 304 20.431 10.761 15.421 1.00 0.00 H +ATOM 915 HW2 SOL 304 20.311 10.881 13.801 1.00 0.00 H +ATOM 916 OW SOL 305 19.451 12.581 10.221 1.00 0.00 O +ATOM 917 HW1 SOL 305 19.401 12.571 11.221 1.00 0.00 H +ATOM 918 HW2 SOL 305 18.621 12.171 9.841 1.00 0.00 H +ATOM 919 OW SOL 306 19.921 17.941 18.511 1.00 0.00 O +ATOM 920 HW1 SOL 306 19.511 17.201 19.041 1.00 0.00 H +ATOM 921 HW2 SOL 306 20.561 18.451 19.091 1.00 0.00 H +ATOM 922 OW SOL 307 21.251 3.260 7.200 1.00 0.00 O +ATOM 923 HW1 SOL 307 20.461 3.770 6.860 1.00 0.00 H +ATOM 924 HW2 SOL 307 21.161 3.110 8.180 1.00 0.00 H +ATOM 925 OW SOL 308 0.511 12.881 14.901 1.00 0.00 O +ATOM 926 HW1 SOL 308 0.381 13.811 14.561 1.00 0.00 H +ATOM 927 HW2 SOL 308 -0.329 12.361 14.771 1.00 0.00 H +ATOM 928 OW SOL 309 21.171 13.481 2.900 1.00 0.00 O +ATOM 929 HW1 SOL 309 20.211 13.491 2.630 1.00 0.00 H +ATOM 930 HW2 SOL 309 21.291 14.011 3.740 1.00 0.00 H +ATOM 931 OW SOL 310 19.671 10.131 17.261 1.00 0.00 O +ATOM 932 HW1 SOL 310 18.901 9.801 17.801 1.00 0.00 H +ATOM 933 HW2 SOL 310 20.521 9.831 17.681 1.00 0.00 H +ATOM 934 OW SOL 311 19.371 3.450 0.330 1.00 0.00 O +ATOM 935 HW1 SOL 311 18.451 3.170 0.040 1.00 0.00 H +ATOM 936 HW2 SOL 311 19.681 4.220 -0.230 1.00 0.00 H +ATOM 937 OW SOL 312 19.341 1.660 3.180 1.00 0.00 O +ATOM 938 HW1 SOL 312 19.171 2.490 2.640 1.00 0.00 H +ATOM 939 HW2 SOL 312 20.241 1.290 2.960 1.00 0.00 H +ATOM 940 OW SOL 313 0.691 17.411 15.601 1.00 0.00 O +ATOM 941 HW1 SOL 313 -0.219 17.821 15.581 1.00 0.00 H +ATOM 942 HW2 SOL 313 0.621 16.471 15.921 1.00 0.00 H +ATOM 943 OW SOL 314 19.411 12.401 6.530 1.00 0.00 O +ATOM 944 HW1 SOL 314 19.401 11.931 7.410 1.00 0.00 H +ATOM 945 HW2 SOL 314 20.231 12.121 6.020 1.00 0.00 H +ATOM 946 OW SOL 315 1.071 4.240 5.200 1.00 0.00 O +ATOM 947 HW1 SOL 315 1.371 3.520 4.580 1.00 0.00 H +ATOM 948 HW2 SOL 315 0.681 3.840 6.030 1.00 0.00 H +ATOM 949 OW SOL 316 21.791 5.470 12.801 1.00 0.00 O +ATOM 950 HW1 SOL 316 22.171 4.880 13.521 1.00 0.00 H +ATOM 951 HW2 SOL 316 22.191 5.210 11.921 1.00 0.00 H +ATOM 952 OW SOL 317 19.011 10.771 3.000 1.00 0.00 O +ATOM 953 HW1 SOL 317 20.001 10.661 2.910 1.00 0.00 H +ATOM 954 HW2 SOL 317 18.611 9.911 3.320 1.00 0.00 H +ATOM 955 OW SOL 318 20.921 6.280 19.751 1.00 0.00 O +ATOM 956 HW1 SOL 318 19.991 6.260 20.121 1.00 0.00 H +ATOM 957 HW2 SOL 318 20.931 5.890 18.831 1.00 0.00 H +ATOM 958 OW SOL 319 20.931 17.131 1.621 1.00 0.00 O +ATOM 959 HW1 SOL 319 21.271 17.901 2.161 1.00 0.00 H +ATOM 960 HW2 SOL 319 21.371 17.131 0.721 1.00 0.00 H +ATOM 961 OW SOL 320 18.891 15.961 19.791 1.00 0.00 O +ATOM 962 HW1 SOL 320 18.701 15.001 20.001 1.00 0.00 H +ATOM 963 HW2 SOL 320 18.561 16.541 20.541 1.00 0.00 H +ATOM 964 OW SOL 321 1.431 17.431 0.021 1.00 0.00 O +ATOM 965 HW1 SOL 321 1.761 17.821 0.881 1.00 0.00 H +ATOM 966 HW2 SOL 321 2.191 17.361 -0.629 1.00 0.00 H +ATOM 967 OW SOL 322 2.181 0.640 1.911 1.00 0.00 O +ATOM 968 HW1 SOL 322 1.371 0.650 2.491 1.00 0.00 H +ATOM 969 HW2 SOL 322 2.211 1.470 1.361 1.00 0.00 H +ATOM 970 OW SOL 323 2.061 2.560 0.071 1.00 0.00 O +ATOM 971 HW1 SOL 323 2.331 1.970 -0.679 1.00 0.00 H +ATOM 972 HW2 SOL 323 2.061 3.510 -0.239 1.00 0.00 H +ATOM 973 OW SOL 324 18.701 13.261 20.621 1.00 0.00 O +ATOM 974 HW1 SOL 324 17.771 13.471 20.311 1.00 0.00 H +ATOM 975 HW2 SOL 324 18.801 12.271 20.751 1.00 0.00 H +ATOM 976 OW SOL 325 1.521 5.000 20.531 1.00 0.00 O +ATOM 977 HW1 SOL 325 2.131 5.800 20.571 1.00 0.00 H +ATOM 978 HW2 SOL 325 0.571 5.310 20.601 1.00 0.00 H +ATOM 979 OW SOL 326 21.171 13.481 21.521 1.00 0.00 O +ATOM 980 HW1 SOL 326 20.211 13.491 21.251 1.00 0.00 H +ATOM 981 HW2 SOL 326 21.291 14.011 22.361 1.00 0.00 H +ATOM 982 OW SOL 327 19.371 3.450 18.951 1.00 0.00 O +ATOM 983 HW1 SOL 327 18.451 3.170 18.661 1.00 0.00 H +ATOM 984 HW2 SOL 327 19.681 4.220 18.391 1.00 0.00 H +ATOM 985 OW SOL 328 19.011 10.771 21.621 1.00 0.00 O +ATOM 986 HW1 SOL 328 20.001 10.661 21.531 1.00 0.00 H +ATOM 987 HW2 SOL 328 18.611 9.911 21.941 1.00 0.00 H +ATOM 988 OW SOL 329 20.871 21.371 9.961 1.00 0.00 O +ATOM 989 HW1 SOL 329 21.221 21.201 10.881 1.00 0.00 H +ATOM 990 HW2 SOL 329 19.991 20.921 9.841 1.00 0.00 H +ATOM 991 OW SOL 330 18.811 0.471 6.470 1.00 0.00 O +ATOM 992 HW1 SOL 330 17.991 0.901 6.860 1.00 0.00 H +ATOM 993 HW2 SOL 330 18.531 -0.259 5.840 1.00 0.00 H +ATOM 994 OW SOL 331 2.291 20.581 8.850 1.00 0.00 O +ATOM 995 HW1 SOL 331 2.241 20.531 9.850 1.00 0.00 H +ATOM 996 HW2 SOL 331 2.311 21.541 8.560 1.00 0.00 H +ATOM 997 OW SOL 332 20.641 21.471 14.981 1.00 0.00 O +ATOM 998 HW1 SOL 332 19.841 22.071 14.851 1.00 0.00 H +ATOM 999 HW2 SOL 332 20.541 20.981 15.841 1.00 0.00 H +ATOM 1000 OW SOL 333 1.831 19.121 17.401 1.00 0.00 O +ATOM 1001 HW1 SOL 333 1.411 18.551 16.701 1.00 0.00 H +ATOM 1002 HW2 SOL 333 1.171 19.811 17.721 1.00 0.00 H +ATOM 1003 OW SOL 334 21.691 20.751 12.311 1.00 0.00 O +ATOM 1004 HW1 SOL 334 21.461 21.121 13.211 1.00 0.00 H +ATOM 1005 HW2 SOL 334 21.391 19.801 12.251 1.00 0.00 H +ATOM 1006 OW SOL 335 21.691 19.251 6.180 1.00 0.00 O +ATOM 1007 HW1 SOL 335 21.581 20.191 6.510 1.00 0.00 H +ATOM 1008 HW2 SOL 335 21.641 18.621 6.950 1.00 0.00 H +ATOM 1009 OW SOL 336 21.251 0.051 7.200 1.00 0.00 O +ATOM 1010 HW1 SOL 336 20.461 0.561 6.860 1.00 0.00 H +ATOM 1011 HW2 SOL 336 21.161 -0.099 8.180 1.00 0.00 H +ATOM 1012 OW SOL 337 19.371 0.241 0.330 1.00 0.00 O +ATOM 1013 HW1 SOL 337 18.451 -0.039 0.040 1.00 0.00 H +ATOM 1014 HW2 SOL 337 19.681 1.011 -0.230 1.00 0.00 H +ATOM 1015 OW SOL 338 19.341 20.281 3.180 1.00 0.00 O +ATOM 1016 HW1 SOL 338 19.171 21.111 2.640 1.00 0.00 H +ATOM 1017 HW2 SOL 338 20.241 19.911 2.960 1.00 0.00 H +ATOM 1018 OW SOL 339 1.071 1.031 5.200 1.00 0.00 O +ATOM 1019 HW1 SOL 339 1.371 0.311 4.580 1.00 0.00 H +ATOM 1020 HW2 SOL 339 0.681 0.631 6.030 1.00 0.00 H +ATOM 1021 OW SOL 340 2.181 19.261 1.911 1.00 0.00 O +ATOM 1022 HW1 SOL 340 1.371 19.271 2.491 1.00 0.00 H +ATOM 1023 HW2 SOL 340 2.211 20.091 1.361 1.00 0.00 H +ATOM 1024 OW SOL 341 21.591 18.971 20.331 1.00 0.00 O +ATOM 1025 HW1 SOL 341 22.081 19.811 20.121 1.00 0.00 H +ATOM 1026 HW2 SOL 341 22.211 18.321 20.781 1.00 0.00 H +ATOM 1027 OW SOL 342 2.061 21.181 0.071 1.00 0.00 O +ATOM 1028 HW1 SOL 342 2.331 20.591 -0.679 1.00 0.00 H +ATOM 1029 HW2 SOL 342 2.061 22.131 -0.239 1.00 0.00 H +ATOM 1030 OW SOL 343 19.371 0.241 18.951 1.00 0.00 O +ATOM 1031 HW1 SOL 343 18.451 -0.039 18.661 1.00 0.00 H +ATOM 1032 HW2 SOL 343 19.681 1.011 18.391 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_interface/coords_1299.pdb b/examples/latte_interface/coords_1299.pdb new file mode 100644 index 00000000..55d5d1ad --- /dev/null +++ b/examples/latte_interface/coords_1299.pdb @@ -0,0 +1,1305 @@ +TITLE Built with Packmol +REMARK Packmol generated pdb file +CRYST1 40.230 40.230 40.230 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H HOH 0 24.812 22.184 19.109 1.00 0.00 H +ATOM 2 O HOH 1 24.014 22.044 19.696 1.00 0.00 O +ATOM 3 H HOH 0 23.492 21.337 19.219 1.00 0.00 H +ATOM 4 OW SOL 1 17.915 12.852 12.888 1.00 0.00 O +ATOM 5 HW1 SOL 1 18.247 13.543 12.247 1.00 0.00 H +ATOM 6 HW2 SOL 1 17.565 12.128 12.294 1.00 0.00 H +ATOM 7 OW SOL 2 17.524 28.252 22.152 1.00 0.00 O +ATOM 8 HW1 SOL 2 17.842 29.134 21.806 1.00 0.00 H +ATOM 9 HW2 SOL 2 16.749 28.493 22.736 1.00 0.00 H +ATOM 10 OW SOL 3 18.272 22.452 8.081 1.00 0.00 O +ATOM 11 HW1 SOL 3 18.633 21.922 8.848 1.00 0.00 H +ATOM 12 HW2 SOL 3 17.651 21.814 7.625 1.00 0.00 H +ATOM 13 OW SOL 4 22.430 24.527 31.340 1.00 0.00 O +ATOM 14 HW1 SOL 4 22.675 23.743 31.910 1.00 0.00 H +ATOM 15 HW2 SOL 4 22.090 25.200 31.998 1.00 0.00 H +ATOM 16 OW SOL 5 25.090 23.960 22.405 1.00 0.00 O +ATOM 17 HW1 SOL 5 24.836 23.682 21.479 1.00 0.00 H +ATOM 18 HW2 SOL 5 26.000 23.563 22.529 1.00 0.00 H +ATOM 19 OW SOL 6 24.774 20.640 26.519 1.00 0.00 O +ATOM 20 HW1 SOL 6 24.293 19.797 26.761 1.00 0.00 H +ATOM 21 HW2 SOL 6 24.915 21.092 27.400 1.00 0.00 H +ATOM 22 OW SOL 7 26.990 22.203 21.118 1.00 0.00 O +ATOM 23 HW1 SOL 7 26.249 21.867 21.698 1.00 0.00 H +ATOM 24 HW2 SOL 7 26.681 23.114 20.845 1.00 0.00 H +ATOM 25 OW SOL 8 6.883 20.799 22.990 1.00 0.00 O +ATOM 26 HW1 SOL 8 7.731 20.467 23.403 1.00 0.00 H +ATOM 27 HW2 SOL 8 6.530 21.448 23.664 1.00 0.00 H +ATOM 28 OW SOL 9 22.196 12.513 19.542 1.00 0.00 O +ATOM 29 HW1 SOL 9 21.895 11.768 20.137 1.00 0.00 H +ATOM 30 HW2 SOL 9 22.528 13.206 20.181 1.00 0.00 H +ATOM 31 OW SOL 10 24.367 14.196 27.807 1.00 0.00 O +ATOM 32 HW1 SOL 10 24.759 13.864 26.949 1.00 0.00 H +ATOM 33 HW2 SOL 10 25.039 14.862 28.132 1.00 0.00 H +ATOM 34 OW SOL 11 9.054 23.271 16.103 1.00 0.00 O +ATOM 35 HW1 SOL 11 9.000 23.179 15.109 1.00 0.00 H +ATOM 36 HW2 SOL 11 10.012 23.068 16.307 1.00 0.00 H +ATOM 37 OW SOL 12 13.728 24.315 29.715 1.00 0.00 O +ATOM 38 HW1 SOL 12 14.398 24.828 29.178 1.00 0.00 H +ATOM 39 HW2 SOL 12 13.236 23.780 29.028 1.00 0.00 H +ATOM 40 OW SOL 13 14.471 25.164 21.554 1.00 0.00 O +ATOM 41 HW1 SOL 13 14.885 25.186 22.464 1.00 0.00 H +ATOM 42 HW2 SOL 13 13.759 25.864 21.602 1.00 0.00 H +ATOM 43 OW SOL 14 26.294 31.275 22.228 1.00 0.00 O +ATOM 44 HW1 SOL 14 26.728 31.339 23.126 1.00 0.00 H +ATOM 45 HW2 SOL 14 26.431 30.319 21.968 1.00 0.00 H +ATOM 46 OW SOL 15 26.994 11.521 25.850 1.00 0.00 O +ATOM 47 HW1 SOL 15 26.171 11.436 25.288 1.00 0.00 H +ATOM 48 HW2 SOL 15 27.117 12.509 25.940 1.00 0.00 H +ATOM 49 OW SOL 16 16.539 28.602 27.834 1.00 0.00 O +ATOM 50 HW1 SOL 16 15.693 28.079 27.733 1.00 0.00 H +ATOM 51 HW2 SOL 16 16.972 28.525 26.936 1.00 0.00 H +ATOM 52 OW SOL 17 22.819 23.562 21.747 1.00 0.00 O +ATOM 53 HW1 SOL 17 23.183 24.097 22.509 1.00 0.00 H +ATOM 54 HW2 SOL 17 22.769 22.633 22.114 1.00 0.00 H +ATOM 55 OW SOL 18 19.599 24.838 14.635 1.00 0.00 O +ATOM 56 HW1 SOL 18 20.294 25.205 14.016 1.00 0.00 H +ATOM 57 HW2 SOL 18 18.904 24.470 14.018 1.00 0.00 H +ATOM 58 OW SOL 19 11.460 21.896 29.300 1.00 0.00 O +ATOM 59 HW1 SOL 19 12.202 22.159 29.917 1.00 0.00 H +ATOM 60 HW2 SOL 19 10.878 21.312 29.867 1.00 0.00 H +ATOM 61 OW SOL 20 13.460 8.606 19.737 1.00 0.00 O +ATOM 62 HW1 SOL 20 13.490 8.653 20.735 1.00 0.00 H +ATOM 63 HW2 SOL 20 13.017 7.729 19.555 1.00 0.00 H +ATOM 64 OW SOL 21 26.689 19.633 27.144 1.00 0.00 O +ATOM 65 HW1 SOL 21 25.881 19.410 27.689 1.00 0.00 H +ATOM 66 HW2 SOL 21 27.282 20.115 27.789 1.00 0.00 H +ATOM 67 OW SOL 22 12.680 24.355 15.838 1.00 0.00 O +ATOM 68 HW1 SOL 22 12.330 25.241 16.143 1.00 0.00 H +ATOM 69 HW2 SOL 22 13.173 24.574 14.996 1.00 0.00 H +ATOM 70 OW SOL 23 17.500 25.332 29.830 1.00 0.00 O +ATOM 71 HW1 SOL 23 18.055 26.125 29.579 1.00 0.00 H +ATOM 72 HW2 SOL 23 18.141 24.567 29.772 1.00 0.00 H +ATOM 73 OW SOL 24 24.609 7.817 20.898 1.00 0.00 O +ATOM 74 HW1 SOL 24 25.282 8.251 21.495 1.00 0.00 H +ATOM 75 HW2 SOL 24 23.751 7.908 21.404 1.00 0.00 H +ATOM 76 OW SOL 25 19.438 10.285 16.542 1.00 0.00 O +ATOM 77 HW1 SOL 25 18.832 10.543 15.790 1.00 0.00 H +ATOM 78 HW2 SOL 25 18.857 9.725 17.132 1.00 0.00 H +ATOM 79 OW SOL 26 11.378 19.670 24.247 1.00 0.00 O +ATOM 80 HW1 SOL 26 12.271 19.520 24.670 1.00 0.00 H +ATOM 81 HW2 SOL 26 11.565 20.341 23.530 1.00 0.00 H +ATOM 82 OW SOL 27 19.982 33.490 17.847 1.00 0.00 O +ATOM 83 HW1 SOL 27 20.767 33.113 18.339 1.00 0.00 H +ATOM 84 HW2 SOL 27 19.790 34.344 18.330 1.00 0.00 H +ATOM 85 OW SOL 28 16.937 23.412 19.668 1.00 0.00 O +ATOM 86 HW1 SOL 28 16.821 22.419 19.661 1.00 0.00 H +ATOM 87 HW2 SOL 28 17.719 23.554 20.275 1.00 0.00 H +ATOM 88 OW SOL 29 27.579 22.373 10.254 1.00 0.00 O +ATOM 89 HW1 SOL 29 28.063 21.629 9.795 1.00 0.00 H +ATOM 90 HW2 SOL 29 26.978 22.738 9.543 1.00 0.00 H +ATOM 91 OW SOL 30 12.743 19.748 16.777 1.00 0.00 O +ATOM 92 HW1 SOL 30 12.101 19.822 16.015 1.00 0.00 H +ATOM 93 HW2 SOL 30 13.630 19.635 16.329 1.00 0.00 H +ATOM 94 OW SOL 31 22.687 17.370 21.870 1.00 0.00 O +ATOM 95 HW1 SOL 31 23.080 16.659 22.453 1.00 0.00 H +ATOM 96 HW2 SOL 31 22.590 18.152 22.485 1.00 0.00 H +ATOM 97 OW SOL 32 22.513 10.240 16.651 1.00 0.00 O +ATOM 98 HW1 SOL 32 22.192 10.135 17.592 1.00 0.00 H +ATOM 99 HW2 SOL 32 22.854 11.179 16.622 1.00 0.00 H +ATOM 100 OW SOL 33 10.472 16.762 13.933 1.00 0.00 O +ATOM 101 HW1 SOL 33 9.659 16.888 14.501 1.00 0.00 H +ATOM 102 HW2 SOL 33 10.489 15.777 13.761 1.00 0.00 H +ATOM 103 OW SOL 34 24.723 25.943 21.674 1.00 0.00 O +ATOM 104 HW1 SOL 34 23.754 25.698 21.658 1.00 0.00 H +ATOM 105 HW2 SOL 34 24.933 26.139 20.717 1.00 0.00 H +ATOM 106 OW SOL 35 8.848 23.597 22.834 1.00 0.00 O +ATOM 107 HW1 SOL 35 8.137 23.529 23.534 1.00 0.00 H +ATOM 108 HW2 SOL 35 8.911 22.667 22.471 1.00 0.00 H +ATOM 109 OW SOL 36 25.003 14.221 21.630 1.00 0.00 O +ATOM 110 HW1 SOL 36 25.360 13.898 22.506 1.00 0.00 H +ATOM 111 HW2 SOL 36 25.075 15.216 21.699 1.00 0.00 H +ATOM 112 OW SOL 37 17.024 25.204 21.412 1.00 0.00 O +ATOM 113 HW1 SOL 37 17.045 26.028 20.846 1.00 0.00 H +ATOM 114 HW2 SOL 37 16.331 24.633 20.973 1.00 0.00 H +ATOM 115 OW SOL 38 21.145 21.407 11.963 1.00 0.00 O +ATOM 116 HW1 SOL 38 20.834 22.357 11.979 1.00 0.00 H +ATOM 117 HW2 SOL 38 21.433 21.237 12.905 1.00 0.00 H +ATOM 118 OW SOL 39 22.328 19.648 17.502 1.00 0.00 O +ATOM 119 HW1 SOL 39 21.950 18.759 17.242 1.00 0.00 H +ATOM 120 HW2 SOL 39 22.819 19.945 16.683 1.00 0.00 H +ATOM 121 OW SOL 40 31.232 18.191 16.282 1.00 0.00 O +ATOM 122 HW1 SOL 40 30.255 18.039 16.436 1.00 0.00 H +ATOM 123 HW2 SOL 40 31.500 17.427 15.695 1.00 0.00 H +ATOM 124 OW SOL 41 20.472 22.025 28.044 1.00 0.00 O +ATOM 125 HW1 SOL 41 19.910 21.201 28.114 1.00 0.00 H +ATOM 126 HW2 SOL 41 21.206 21.867 28.705 1.00 0.00 H +ATOM 127 OW SOL 42 29.525 27.024 26.006 1.00 0.00 O +ATOM 128 HW1 SOL 42 29.545 26.084 25.664 1.00 0.00 H +ATOM 129 HW2 SOL 42 30.425 27.384 25.760 1.00 0.00 H +ATOM 130 OW SOL 43 12.572 19.293 19.563 1.00 0.00 O +ATOM 131 HW1 SOL 43 12.235 19.147 18.633 1.00 0.00 H +ATOM 132 HW2 SOL 43 13.127 20.121 19.486 1.00 0.00 H +ATOM 133 OW SOL 44 28.904 25.278 27.929 1.00 0.00 O +ATOM 134 HW1 SOL 44 29.793 25.123 27.500 1.00 0.00 H +ATOM 135 HW2 SOL 44 28.261 25.227 27.165 1.00 0.00 H +ATOM 136 OW SOL 45 18.890 24.136 9.158 1.00 0.00 O +ATOM 137 HW1 SOL 45 18.386 24.659 9.845 1.00 0.00 H +ATOM 138 HW2 SOL 45 19.809 24.063 9.544 1.00 0.00 H +ATOM 139 OW SOL 46 22.411 19.995 11.347 1.00 0.00 O +ATOM 140 HW1 SOL 46 22.844 19.382 10.686 1.00 0.00 H +ATOM 141 HW2 SOL 46 22.765 20.897 11.099 1.00 0.00 H +ATOM 142 OW SOL 47 15.126 24.616 8.500 1.00 0.00 O +ATOM 143 HW1 SOL 47 14.587 24.550 9.339 1.00 0.00 H +ATOM 144 HW2 SOL 47 14.440 24.578 7.774 1.00 0.00 H +ATOM 145 OW SOL 48 19.778 11.195 20.586 1.00 0.00 O +ATOM 146 HW1 SOL 48 19.350 12.051 20.295 1.00 0.00 H +ATOM 147 HW2 SOL 48 20.122 11.403 21.502 1.00 0.00 H +ATOM 148 OW SOL 49 14.611 23.092 15.349 1.00 0.00 O +ATOM 149 HW1 SOL 49 14.685 22.211 14.880 1.00 0.00 H +ATOM 150 HW2 SOL 49 15.054 22.928 16.230 1.00 0.00 H +ATOM 151 OW SOL 50 16.022 14.205 14.111 1.00 0.00 O +ATOM 152 HW1 SOL 50 15.842 15.127 14.455 1.00 0.00 H +ATOM 153 HW2 SOL 50 16.550 14.364 13.276 1.00 0.00 H +ATOM 154 OW SOL 51 30.145 24.475 24.408 1.00 0.00 O +ATOM 155 HW1 SOL 51 30.977 24.710 24.911 1.00 0.00 H +ATOM 156 HW2 SOL 51 29.480 24.281 25.129 1.00 0.00 H +ATOM 157 OW SOL 52 19.974 12.135 30.934 1.00 0.00 O +ATOM 158 HW1 SOL 52 19.765 11.696 31.808 1.00 0.00 H +ATOM 159 HW2 SOL 52 20.496 12.947 31.197 1.00 0.00 H +ATOM 160 OW SOL 53 27.407 10.681 16.793 1.00 0.00 O +ATOM 161 HW1 SOL 53 28.348 10.992 16.659 1.00 0.00 H +ATOM 162 HW2 SOL 53 27.414 9.747 16.436 1.00 0.00 H +ATOM 163 OW SOL 54 20.295 15.208 16.437 1.00 0.00 O +ATOM 164 HW1 SOL 54 20.039 14.270 16.202 1.00 0.00 H +ATOM 165 HW2 SOL 54 20.500 15.626 15.552 1.00 0.00 H +ATOM 166 OW SOL 55 20.140 14.679 26.490 1.00 0.00 O +ATOM 167 HW1 SOL 55 19.541 14.035 26.967 1.00 0.00 H +ATOM 168 HW2 SOL 55 20.592 15.175 27.231 1.00 0.00 H +ATOM 169 OW SOL 56 18.049 18.312 23.379 1.00 0.00 O +ATOM 170 HW1 SOL 56 17.709 18.188 22.447 1.00 0.00 H +ATOM 171 HW2 SOL 56 17.257 18.669 23.874 1.00 0.00 H +ATOM 172 OW SOL 57 23.087 28.689 17.079 1.00 0.00 O +ATOM 173 HW1 SOL 57 22.894 29.416 16.421 1.00 0.00 H +ATOM 174 HW2 SOL 57 22.180 28.392 17.375 1.00 0.00 H +ATOM 175 OW SOL 58 17.652 16.214 32.063 1.00 0.00 O +ATOM 176 HW1 SOL 58 17.465 16.870 31.332 1.00 0.00 H +ATOM 177 HW2 SOL 58 17.266 15.359 31.717 1.00 0.00 H +ATOM 178 OW SOL 59 10.164 21.661 24.153 1.00 0.00 O +ATOM 179 HW1 SOL 59 9.226 21.407 23.917 1.00 0.00 H +ATOM 180 HW2 SOL 59 10.548 21.978 23.286 1.00 0.00 H +ATOM 181 OW SOL 60 20.915 17.894 29.118 1.00 0.00 O +ATOM 182 HW1 SOL 60 20.640 18.563 28.429 1.00 0.00 H +ATOM 183 HW2 SOL 60 21.002 17.043 28.600 1.00 0.00 H +ATOM 184 OW SOL 61 17.367 26.246 23.017 1.00 0.00 O +ATOM 185 HW1 SOL 61 16.659 26.364 23.712 1.00 0.00 H +ATOM 186 HW2 SOL 61 18.116 25.808 23.515 1.00 0.00 H +ATOM 187 OW SOL 62 21.776 22.893 24.986 1.00 0.00 O +ATOM 188 HW1 SOL 62 21.561 22.185 24.313 1.00 0.00 H +ATOM 189 HW2 SOL 62 21.893 23.717 24.431 1.00 0.00 H +ATOM 190 OW SOL 63 25.728 14.610 30.886 1.00 0.00 O +ATOM 191 HW1 SOL 63 26.527 14.773 30.307 1.00 0.00 H +ATOM 192 HW2 SOL 63 25.225 13.898 30.398 1.00 0.00 H +ATOM 193 OW SOL 64 25.135 11.052 12.970 1.00 0.00 O +ATOM 194 HW1 SOL 64 25.032 10.506 12.139 1.00 0.00 H +ATOM 195 HW2 SOL 64 25.610 10.438 13.599 1.00 0.00 H +ATOM 196 OW SOL 65 21.134 31.228 16.691 1.00 0.00 O +ATOM 197 HW1 SOL 65 21.641 31.978 17.115 1.00 0.00 H +ATOM 198 HW2 SOL 65 20.392 31.050 17.337 1.00 0.00 H +ATOM 199 OW SOL 66 15.661 24.773 31.063 1.00 0.00 O +ATOM 200 HW1 SOL 66 15.729 24.124 30.306 1.00 0.00 H +ATOM 201 HW2 SOL 66 15.321 25.607 30.629 1.00 0.00 H +ATOM 202 OW SOL 67 25.005 27.999 10.964 1.00 0.00 O +ATOM 203 HW1 SOL 67 25.289 28.514 10.155 1.00 0.00 H +ATOM 204 HW2 SOL 67 24.617 27.159 10.584 1.00 0.00 H +ATOM 205 OW SOL 68 23.912 25.698 23.933 1.00 0.00 O +ATOM 206 HW1 SOL 68 23.423 25.068 24.535 1.00 0.00 H +ATOM 207 HW2 SOL 68 24.848 25.346 23.932 1.00 0.00 H +ATOM 208 OW SOL 69 7.050 20.594 15.260 1.00 0.00 O +ATOM 209 HW1 SOL 69 6.133 20.372 15.590 1.00 0.00 H +ATOM 210 HW2 SOL 69 7.033 21.590 15.169 1.00 0.00 H +ATOM 211 OW SOL 70 10.707 29.314 23.961 1.00 0.00 O +ATOM 212 HW1 SOL 70 10.092 28.529 24.042 1.00 0.00 H +ATOM 213 HW2 SOL 70 10.103 30.057 23.672 1.00 0.00 H +ATOM 214 OW SOL 71 20.974 26.571 12.738 1.00 0.00 O +ATOM 215 HW1 SOL 71 21.250 26.511 11.779 1.00 0.00 H +ATOM 216 HW2 SOL 71 20.503 27.452 12.792 1.00 0.00 H +ATOM 217 OW SOL 72 19.050 11.882 24.746 1.00 0.00 O +ATOM 218 HW1 SOL 72 18.512 11.125 24.374 1.00 0.00 H +ATOM 219 HW2 SOL 72 19.945 11.769 24.315 1.00 0.00 H +ATOM 220 OW SOL 73 16.829 19.778 32.330 1.00 0.00 O +ATOM 221 HW1 SOL 73 16.123 20.115 32.953 1.00 0.00 H +ATOM 222 HW2 SOL 73 17.160 20.606 31.878 1.00 0.00 H +ATOM 223 OW SOL 74 27.194 11.819 10.655 1.00 0.00 O +ATOM 224 HW1 SOL 74 27.283 11.033 11.266 1.00 0.00 H +ATOM 225 HW2 SOL 74 26.907 12.560 11.262 1.00 0.00 H +ATOM 226 OW SOL 75 9.143 26.922 18.015 1.00 0.00 O +ATOM 227 HW1 SOL 75 9.732 26.265 18.486 1.00 0.00 H +ATOM 228 HW2 SOL 75 8.240 26.494 18.047 1.00 0.00 H +ATOM 229 OW SOL 76 24.798 18.634 30.721 1.00 0.00 O +ATOM 230 HW1 SOL 76 24.248 18.074 30.101 1.00 0.00 H +ATOM 231 HW2 SOL 76 25.641 18.795 30.208 1.00 0.00 H +ATOM 232 OW SOL 77 19.713 11.078 9.455 1.00 0.00 O +ATOM 233 HW1 SOL 77 19.886 10.367 10.137 1.00 0.00 H +ATOM 234 HW2 SOL 77 19.629 11.912 10.000 1.00 0.00 H +ATOM 235 OW SOL 78 19.949 16.434 18.234 1.00 0.00 O +ATOM 236 HW1 SOL 78 20.849 16.785 17.978 1.00 0.00 H +ATOM 237 HW2 SOL 78 19.360 16.720 17.479 1.00 0.00 H +ATOM 238 OW SOL 79 26.100 20.094 24.860 1.00 0.00 O +ATOM 239 HW1 SOL 79 25.929 20.125 23.875 1.00 0.00 H +ATOM 240 HW2 SOL 79 27.079 19.902 24.923 1.00 0.00 H +ATOM 241 OW SOL 80 28.245 23.176 16.401 1.00 0.00 O +ATOM 242 HW1 SOL 80 29.089 23.075 16.928 1.00 0.00 H +ATOM 243 HW2 SOL 80 27.898 22.241 16.330 1.00 0.00 H +ATOM 244 OW SOL 81 23.429 7.658 15.115 1.00 0.00 O +ATOM 245 HW1 SOL 81 23.809 7.098 14.379 1.00 0.00 H +ATOM 246 HW2 SOL 81 22.872 8.334 14.633 1.00 0.00 H +ATOM 247 OW SOL 82 10.552 26.955 16.715 1.00 0.00 O +ATOM 248 HW1 SOL 82 10.884 27.105 15.784 1.00 0.00 H +ATOM 249 HW2 SOL 82 10.537 27.873 17.111 1.00 0.00 H +ATOM 250 OW SOL 83 16.927 19.868 15.041 1.00 0.00 O +ATOM 251 HW1 SOL 83 17.297 20.069 14.134 1.00 0.00 H +ATOM 252 HW2 SOL 83 17.447 19.066 15.335 1.00 0.00 H +ATOM 253 OW SOL 84 13.998 26.748 24.005 1.00 0.00 O +ATOM 254 HW1 SOL 84 13.596 25.972 23.519 1.00 0.00 H +ATOM 255 HW2 SOL 84 13.297 27.458 23.937 1.00 0.00 H +ATOM 256 OW SOL 85 14.352 31.295 25.838 1.00 0.00 O +ATOM 257 HW1 SOL 85 13.403 31.109 25.586 1.00 0.00 H +ATOM 258 HW2 SOL 85 14.735 31.719 25.018 1.00 0.00 H +ATOM 259 OW SOL 86 25.245 18.847 22.053 1.00 0.00 O +ATOM 260 HW1 SOL 86 24.739 19.112 22.874 1.00 0.00 H +ATOM 261 HW2 SOL 86 24.714 18.083 21.686 1.00 0.00 H +ATOM 262 OW SOL 87 18.110 19.707 19.148 1.00 0.00 O +ATOM 263 HW1 SOL 87 18.008 20.702 19.124 1.00 0.00 H +ATOM 264 HW2 SOL 87 17.670 19.405 18.303 1.00 0.00 H +ATOM 265 OW SOL 88 18.407 29.100 15.428 1.00 0.00 O +ATOM 266 HW1 SOL 88 17.629 28.693 15.907 1.00 0.00 H +ATOM 267 HW2 SOL 88 18.057 29.264 14.506 1.00 0.00 H +ATOM 268 OW SOL 89 21.496 27.940 30.924 1.00 0.00 O +ATOM 269 HW1 SOL 89 22.219 28.126 31.589 1.00 0.00 H +ATOM 270 HW2 SOL 89 21.009 27.160 31.317 1.00 0.00 H +ATOM 271 OW SOL 90 21.396 23.151 19.398 1.00 0.00 O +ATOM 272 HW1 SOL 90 22.203 22.959 18.839 1.00 0.00 H +ATOM 273 HW2 SOL 90 21.351 24.150 19.414 1.00 0.00 H +ATOM 274 OW SOL 91 32.625 27.206 21.159 1.00 0.00 O +ATOM 275 HW1 SOL 91 32.437 26.355 21.649 1.00 0.00 H +ATOM 276 HW2 SOL 91 31.757 27.700 21.202 1.00 0.00 H +ATOM 277 OW SOL 92 28.432 18.158 21.287 1.00 0.00 O +ATOM 278 HW1 SOL 92 28.045 18.046 20.373 1.00 0.00 H +ATOM 279 HW2 SOL 92 27.657 17.989 21.895 1.00 0.00 H +ATOM 280 OW SOL 93 21.854 13.532 15.062 1.00 0.00 O +ATOM 281 HW1 SOL 93 22.622 14.072 15.406 1.00 0.00 H +ATOM 282 HW2 SOL 93 21.496 13.083 15.881 1.00 0.00 H +ATOM 283 OW SOL 94 24.782 18.353 11.187 1.00 0.00 O +ATOM 284 HW1 SOL 94 25.623 17.860 10.966 1.00 0.00 H +ATOM 285 HW2 SOL 94 24.721 19.048 10.471 1.00 0.00 H +ATOM 286 OW SOL 95 18.737 27.913 27.854 1.00 0.00 O +ATOM 287 HW1 SOL 95 19.078 27.134 28.380 1.00 0.00 H +ATOM 288 HW2 SOL 95 18.398 28.541 28.555 1.00 0.00 H +ATOM 289 OW SOL 96 18.869 14.640 29.839 1.00 0.00 O +ATOM 290 HW1 SOL 96 17.889 14.819 29.925 1.00 0.00 H +ATOM 291 HW2 SOL 96 19.162 14.476 30.781 1.00 0.00 H +ATOM 292 OW SOL 97 15.633 29.145 19.667 1.00 0.00 O +ATOM 293 HW1 SOL 97 16.374 28.912 20.297 1.00 0.00 H +ATOM 294 HW2 SOL 97 14.874 29.383 20.273 1.00 0.00 H +ATOM 295 OW SOL 98 17.231 13.661 27.274 1.00 0.00 O +ATOM 296 HW1 SOL 98 17.386 14.182 28.113 1.00 0.00 H +ATOM 297 HW2 SOL 98 17.027 12.739 27.603 1.00 0.00 H +ATOM 298 OW SOL 99 22.474 9.875 11.065 1.00 0.00 O +ATOM 299 HW1 SOL 99 22.471 10.847 10.828 1.00 0.00 H +ATOM 300 HW2 SOL 99 23.197 9.495 10.488 1.00 0.00 H +ATOM 301 OW SOL 100 9.546 17.626 27.369 1.00 0.00 O +ATOM 302 HW1 SOL 100 9.197 18.507 27.050 1.00 0.00 H +ATOM 303 HW2 SOL 100 9.858 17.179 26.530 1.00 0.00 H +ATOM 304 OW SOL 101 29.435 20.599 25.289 1.00 0.00 O +ATOM 305 HW1 SOL 101 29.100 21.122 24.506 1.00 0.00 H +ATOM 306 HW2 SOL 101 29.952 19.852 24.871 1.00 0.00 H +ATOM 307 OW SOL 102 16.859 24.623 17.953 1.00 0.00 O +ATOM 308 HW1 SOL 102 16.278 24.398 17.171 1.00 0.00 H +ATOM 309 HW2 SOL 102 17.749 24.814 17.538 1.00 0.00 H +ATOM 310 OW SOL 103 22.411 17.494 8.922 1.00 0.00 O +ATOM 311 HW1 SOL 103 22.525 17.755 7.964 1.00 0.00 H +ATOM 312 HW2 SOL 103 23.034 16.721 9.033 1.00 0.00 H +ATOM 313 OW SOL 104 27.718 17.918 18.028 1.00 0.00 O +ATOM 314 HW1 SOL 104 27.794 18.719 18.621 1.00 0.00 H +ATOM 315 HW2 SOL 104 26.973 17.390 18.437 1.00 0.00 H +ATOM 316 OW SOL 105 19.428 28.867 22.791 1.00 0.00 O +ATOM 317 HW1 SOL 105 20.268 29.090 23.285 1.00 0.00 H +ATOM 318 HW2 SOL 105 18.738 28.811 23.513 1.00 0.00 H +ATOM 319 OW SOL 106 10.198 24.333 21.376 1.00 0.00 O +ATOM 320 HW1 SOL 106 10.435 23.555 21.958 1.00 0.00 H +ATOM 321 HW2 SOL 106 10.262 25.117 21.992 1.00 0.00 H +ATOM 322 OW SOL 107 22.196 18.465 31.449 1.00 0.00 O +ATOM 323 HW1 SOL 107 22.006 17.752 30.774 1.00 0.00 H +ATOM 324 HW2 SOL 107 22.312 19.289 30.895 1.00 0.00 H +ATOM 325 OW SOL 108 19.177 16.695 28.844 1.00 0.00 O +ATOM 326 HW1 SOL 108 18.541 17.348 29.254 1.00 0.00 H +ATOM 327 HW2 SOL 108 18.616 16.205 28.178 1.00 0.00 H +ATOM 328 OW SOL 109 14.256 13.056 21.586 1.00 0.00 O +ATOM 329 HW1 SOL 109 14.417 12.261 21.002 1.00 0.00 H +ATOM 330 HW2 SOL 109 13.308 13.307 21.387 1.00 0.00 H +ATOM 331 OW SOL 110 19.769 17.841 19.874 1.00 0.00 O +ATOM 332 HW1 SOL 110 20.206 17.669 20.757 1.00 0.00 H +ATOM 333 HW2 SOL 110 18.942 18.349 20.116 1.00 0.00 H +ATOM 334 OW SOL 111 19.177 24.021 24.409 1.00 0.00 O +ATOM 335 HW1 SOL 111 18.930 24.860 24.895 1.00 0.00 H +ATOM 336 HW2 SOL 111 19.348 23.365 25.144 1.00 0.00 H +ATOM 337 OW SOL 112 13.128 19.682 21.718 1.00 0.00 O +ATOM 338 HW1 SOL 112 12.916 20.560 21.288 1.00 0.00 H +ATOM 339 HW2 SOL 112 13.991 19.413 21.292 1.00 0.00 H +ATOM 340 OW SOL 113 24.265 10.766 24.493 1.00 0.00 O +ATOM 341 HW1 SOL 113 24.149 11.305 25.328 1.00 0.00 H +ATOM 342 HW2 SOL 113 24.889 10.035 24.769 1.00 0.00 H +ATOM 343 OW SOL 114 15.224 12.544 26.191 1.00 0.00 O +ATOM 344 HW1 SOL 114 14.815 12.639 25.284 1.00 0.00 H +ATOM 345 HW2 SOL 114 15.905 11.822 26.067 1.00 0.00 H +ATOM 346 OW SOL 115 16.171 28.128 25.166 1.00 0.00 O +ATOM 347 HW1 SOL 115 15.398 28.548 25.641 1.00 0.00 H +ATOM 348 HW2 SOL 115 16.066 27.153 25.360 1.00 0.00 H +ATOM 349 OW SOL 116 16.179 7.973 18.838 1.00 0.00 O +ATOM 350 HW1 SOL 116 15.811 8.610 19.516 1.00 0.00 H +ATOM 351 HW2 SOL 116 17.002 7.611 19.277 1.00 0.00 H +ATOM 352 OW SOL 117 14.860 10.741 22.956 1.00 0.00 O +ATOM 353 HW1 SOL 117 14.672 10.505 22.002 1.00 0.00 H +ATOM 354 HW2 SOL 117 14.057 11.269 23.231 1.00 0.00 H +ATOM 355 OW SOL 118 20.264 22.364 7.812 1.00 0.00 O +ATOM 356 HW1 SOL 118 20.097 22.151 6.850 1.00 0.00 H +ATOM 357 HW2 SOL 118 21.123 21.893 8.013 1.00 0.00 H +ATOM 358 OW SOL 119 14.432 13.841 28.501 1.00 0.00 O +ATOM 359 HW1 SOL 119 14.895 13.802 27.616 1.00 0.00 H +ATOM 360 HW2 SOL 119 13.754 13.108 28.445 1.00 0.00 H +ATOM 361 OW SOL 120 23.949 28.612 28.421 1.00 0.00 O +ATOM 362 HW1 SOL 120 23.700 29.051 29.285 1.00 0.00 H +ATOM 363 HW2 SOL 120 23.114 28.673 27.876 1.00 0.00 H +ATOM 364 OW SOL 121 24.860 26.234 15.593 1.00 0.00 O +ATOM 365 HW1 SOL 121 24.021 26.709 15.327 1.00 0.00 H +ATOM 366 HW2 SOL 121 24.678 25.941 16.531 1.00 0.00 H +ATOM 367 OW SOL 122 13.994 20.898 31.066 1.00 0.00 O +ATOM 368 HW1 SOL 122 14.720 21.484 30.705 1.00 0.00 H +ATOM 369 HW2 SOL 122 14.403 20.493 31.884 1.00 0.00 H +ATOM 370 OW SOL 123 19.763 31.059 19.445 1.00 0.00 O +ATOM 371 HW1 SOL 123 18.818 31.118 19.767 1.00 0.00 H +ATOM 372 HW2 SOL 123 20.274 30.793 20.262 1.00 0.00 H +ATOM 373 OW SOL 124 15.319 22.439 27.337 1.00 0.00 O +ATOM 374 HW1 SOL 124 15.956 23.111 27.716 1.00 0.00 H +ATOM 375 HW2 SOL 124 14.687 22.262 28.091 1.00 0.00 H +ATOM 376 OW SOL 125 22.320 32.061 22.179 1.00 0.00 O +ATOM 377 HW1 SOL 125 22.491 31.137 21.839 1.00 0.00 H +ATOM 378 HW2 SOL 125 22.019 32.560 21.367 1.00 0.00 H +ATOM 379 OW SOL 126 27.110 12.879 27.942 1.00 0.00 O +ATOM 380 HW1 SOL 126 26.163 12.568 27.865 1.00 0.00 H +ATOM 381 HW2 SOL 126 27.090 13.507 28.719 1.00 0.00 H +ATOM 382 OW SOL 127 9.308 20.552 15.865 1.00 0.00 O +ATOM 383 HW1 SOL 127 8.830 21.419 15.729 1.00 0.00 H +ATOM 384 HW2 SOL 127 9.870 20.716 16.675 1.00 0.00 H +ATOM 385 OW SOL 128 8.347 18.938 14.159 1.00 0.00 O +ATOM 386 HW1 SOL 128 9.293 18.804 13.864 1.00 0.00 H +ATOM 387 HW2 SOL 128 8.389 18.811 15.149 1.00 0.00 H +ATOM 388 OW SOL 129 24.213 29.125 21.625 1.00 0.00 O +ATOM 389 HW1 SOL 129 23.525 29.555 21.040 1.00 0.00 H +ATOM 390 HW2 SOL 129 25.014 29.053 21.031 1.00 0.00 H +ATOM 391 OW SOL 130 15.833 23.752 32.917 1.00 0.00 O +ATOM 392 HW1 SOL 130 14.936 24.157 32.743 1.00 0.00 H +ATOM 393 HW2 SOL 130 15.904 23.030 32.229 1.00 0.00 H +ATOM 394 OW SOL 131 16.075 23.397 13.754 1.00 0.00 O +ATOM 395 HW1 SOL 131 16.295 24.212 14.289 1.00 0.00 H +ATOM 396 HW2 SOL 131 16.944 22.904 13.705 1.00 0.00 H +ATOM 397 OW SOL 132 20.326 20.875 18.699 1.00 0.00 O +ATOM 398 HW1 SOL 132 20.765 21.712 18.372 1.00 0.00 H +ATOM 399 HW2 SOL 132 20.345 20.271 17.903 1.00 0.00 H +ATOM 400 OW SOL 133 9.929 15.192 16.898 1.00 0.00 O +ATOM 401 HW1 SOL 133 10.630 15.898 16.998 1.00 0.00 H +ATOM 402 HW2 SOL 133 9.460 15.197 17.781 1.00 0.00 H +ATOM 403 OW SOL 134 16.787 20.325 25.209 1.00 0.00 O +ATOM 404 HW1 SOL 134 16.624 20.233 26.192 1.00 0.00 H +ATOM 405 HW2 SOL 134 17.637 20.849 25.159 1.00 0.00 H +ATOM 406 OW SOL 135 17.520 21.373 23.048 1.00 0.00 O +ATOM 407 HW1 SOL 135 16.601 21.519 23.412 1.00 0.00 H +ATOM 408 HW2 SOL 135 17.589 22.039 22.305 1.00 0.00 H +ATOM 409 OW SOL 136 23.555 18.200 32.700 1.00 0.00 O +ATOM 410 HW1 SOL 136 23.865 19.126 32.915 1.00 0.00 H +ATOM 411 HW2 SOL 136 23.912 17.651 33.456 1.00 0.00 H +ATOM 412 OW SOL 137 23.805 17.377 24.654 1.00 0.00 O +ATOM 413 HW1 SOL 137 22.966 16.841 24.563 1.00 0.00 H +ATOM 414 HW2 SOL 137 24.198 17.057 25.515 1.00 0.00 H +ATOM 415 OW SOL 138 26.351 32.443 20.268 1.00 0.00 O +ATOM 416 HW1 SOL 138 25.929 32.467 19.362 1.00 0.00 H +ATOM 417 HW2 SOL 138 26.686 31.505 20.348 1.00 0.00 H +ATOM 418 OW SOL 139 29.387 20.828 17.230 1.00 0.00 O +ATOM 419 HW1 SOL 139 28.756 20.608 17.974 1.00 0.00 H +ATOM 420 HW2 SOL 139 29.627 19.934 16.852 1.00 0.00 H +ATOM 421 OW SOL 140 14.191 23.512 23.343 1.00 0.00 O +ATOM 422 HW1 SOL 140 14.176 23.411 22.348 1.00 0.00 H +ATOM 423 HW2 SOL 140 14.034 22.582 23.676 1.00 0.00 H +ATOM 424 OW SOL 141 15.756 15.625 22.699 1.00 0.00 O +ATOM 425 HW1 SOL 141 15.667 16.593 22.933 1.00 0.00 H +ATOM 426 HW2 SOL 141 15.942 15.186 23.577 1.00 0.00 H +ATOM 427 OW SOL 142 20.510 13.333 11.927 1.00 0.00 O +ATOM 428 HW1 SOL 142 20.283 14.306 11.925 1.00 0.00 H +ATOM 429 HW2 SOL 142 20.679 13.131 12.892 1.00 0.00 H +ATOM 430 OW SOL 143 24.585 21.862 22.891 1.00 0.00 O +ATOM 431 HW1 SOL 143 24.215 21.242 23.583 1.00 0.00 H +ATOM 432 HW2 SOL 143 24.284 21.457 22.027 1.00 0.00 H +ATOM 433 OW SOL 144 19.090 26.889 31.259 1.00 0.00 O +ATOM 434 HW1 SOL 144 18.787 27.543 30.565 1.00 0.00 H +ATOM 435 HW2 SOL 144 19.301 27.464 32.049 1.00 0.00 H +ATOM 436 OW SOL 145 7.500 15.159 18.426 1.00 0.00 O +ATOM 437 HW1 SOL 145 8.026 14.423 18.852 1.00 0.00 H +ATOM 438 HW2 SOL 145 7.359 15.810 19.171 1.00 0.00 H +ATOM 439 OW SOL 146 27.618 20.029 10.797 1.00 0.00 O +ATOM 440 HW1 SOL 146 28.084 19.652 9.998 1.00 0.00 H +ATOM 441 HW2 SOL 146 26.728 19.574 10.788 1.00 0.00 H +ATOM 442 OW SOL 147 11.282 12.159 12.611 1.00 0.00 O +ATOM 443 HW1 SOL 147 11.736 11.951 13.478 1.00 0.00 H +ATOM 444 HW2 SOL 147 10.338 11.869 12.764 1.00 0.00 H +ATOM 445 OW SOL 148 15.008 16.634 8.329 1.00 0.00 O +ATOM 446 HW1 SOL 148 14.565 17.240 8.990 1.00 0.00 H +ATOM 447 HW2 SOL 148 14.744 17.017 7.444 1.00 0.00 H +ATOM 448 OW SOL 149 29.329 17.460 13.545 1.00 0.00 O +ATOM 449 HW1 SOL 149 29.799 16.662 13.921 1.00 0.00 H +ATOM 450 HW2 SOL 149 29.197 18.052 14.340 1.00 0.00 H +ATOM 451 OW SOL 150 11.143 29.847 21.994 1.00 0.00 O +ATOM 452 HW1 SOL 150 11.288 29.066 21.386 1.00 0.00 H +ATOM 453 HW2 SOL 150 11.125 30.629 21.372 1.00 0.00 H +ATOM 454 OW SOL 151 12.115 21.477 18.277 1.00 0.00 O +ATOM 455 HW1 SOL 151 13.049 21.751 18.052 1.00 0.00 H +ATOM 456 HW2 SOL 151 11.688 21.338 17.383 1.00 0.00 H +ATOM 457 OW SOL 152 22.610 13.864 17.470 1.00 0.00 O +ATOM 458 HW1 SOL 152 22.705 12.875 17.359 1.00 0.00 H +ATOM 459 HW2 SOL 152 22.548 13.985 18.461 1.00 0.00 H +ATOM 460 OW SOL 153 29.100 16.537 16.520 1.00 0.00 O +ATOM 461 HW1 SOL 153 28.138 16.665 16.280 1.00 0.00 H +ATOM 462 HW2 SOL 153 29.337 15.667 16.089 1.00 0.00 H +ATOM 463 OW SOL 154 12.381 21.642 14.486 1.00 0.00 O +ATOM 464 HW1 SOL 154 13.077 20.974 14.750 1.00 0.00 H +ATOM 465 HW2 SOL 154 11.884 21.814 15.337 1.00 0.00 H +ATOM 466 OW SOL 155 31.757 13.163 21.010 1.00 0.00 O +ATOM 467 HW1 SOL 155 31.139 13.597 21.665 1.00 0.00 H +ATOM 468 HW2 SOL 155 32.466 12.758 21.587 1.00 0.00 H +ATOM 469 OW SOL 156 21.536 18.257 25.616 1.00 0.00 O +ATOM 470 HW1 SOL 156 21.932 18.565 26.481 1.00 0.00 H +ATOM 471 HW2 SOL 156 22.086 18.726 24.925 1.00 0.00 H +ATOM 472 OW SOL 157 20.543 27.375 25.907 1.00 0.00 O +ATOM 473 HW1 SOL 157 19.895 26.941 26.533 1.00 0.00 H +ATOM 474 HW2 SOL 157 21.169 27.861 26.515 1.00 0.00 H +ATOM 475 OW SOL 158 13.721 27.318 16.382 1.00 0.00 O +ATOM 476 HW1 SOL 158 12.766 27.561 16.555 1.00 0.00 H +ATOM 477 HW2 SOL 158 14.081 27.115 17.292 1.00 0.00 H +ATOM 478 OW SOL 159 11.109 14.336 28.727 1.00 0.00 O +ATOM 479 HW1 SOL 159 10.922 15.263 29.051 1.00 0.00 H +ATOM 480 HW2 SOL 159 11.994 14.116 29.138 1.00 0.00 H +ATOM 481 OW SOL 160 7.998 25.909 14.509 1.00 0.00 O +ATOM 482 HW1 SOL 160 7.826 25.064 14.002 1.00 0.00 H +ATOM 483 HW2 SOL 160 8.506 26.475 13.860 1.00 0.00 H +ATOM 484 OW SOL 161 25.404 24.209 13.944 1.00 0.00 O +ATOM 485 HW1 SOL 161 25.354 23.381 14.502 1.00 0.00 H +ATOM 486 HW2 SOL 161 26.173 24.712 14.336 1.00 0.00 H +ATOM 487 OW SOL 162 24.844 25.891 26.881 1.00 0.00 O +ATOM 488 HW1 SOL 162 25.424 25.089 27.018 1.00 0.00 H +ATOM 489 HW2 SOL 162 24.491 25.772 25.953 1.00 0.00 H +ATOM 490 OW SOL 163 14.619 20.558 23.171 1.00 0.00 O +ATOM 491 HW1 SOL 163 15.041 20.548 24.077 1.00 0.00 H +ATOM 492 HW2 SOL 163 13.641 20.481 23.366 1.00 0.00 H +ATOM 493 OW SOL 164 27.083 10.805 27.618 1.00 0.00 O +ATOM 494 HW1 SOL 164 27.958 10.356 27.439 1.00 0.00 H +ATOM 495 HW2 SOL 164 26.964 10.702 28.606 1.00 0.00 H +ATOM 496 OW SOL 165 23.957 28.645 23.912 1.00 0.00 O +ATOM 497 HW1 SOL 165 23.636 27.724 23.693 1.00 0.00 H +ATOM 498 HW2 SOL 165 24.334 28.551 24.833 1.00 0.00 H +ATOM 499 OW SOL 166 21.857 28.095 24.745 1.00 0.00 O +ATOM 500 HW1 SOL 166 21.651 27.780 23.818 1.00 0.00 H +ATOM 501 HW2 SOL 166 22.393 27.346 25.134 1.00 0.00 H +ATOM 502 OW SOL 167 14.267 8.489 17.721 1.00 0.00 O +ATOM 503 HW1 SOL 167 14.806 9.323 17.839 1.00 0.00 H +ATOM 504 HW2 SOL 167 14.352 8.289 16.745 1.00 0.00 H +ATOM 505 OW SOL 168 15.230 32.590 23.368 1.00 0.00 O +ATOM 506 HW1 SOL 168 15.697 33.435 23.630 1.00 0.00 H +ATOM 507 HW2 SOL 168 15.330 32.564 22.374 1.00 0.00 H +ATOM 508 OW SOL 169 20.692 18.024 12.789 1.00 0.00 O +ATOM 509 HW1 SOL 169 20.383 17.682 13.676 1.00 0.00 H +ATOM 510 HW2 SOL 169 21.344 17.331 12.483 1.00 0.00 H +ATOM 511 OW SOL 170 20.941 14.283 32.482 1.00 0.00 O +ATOM 512 HW1 SOL 170 20.807 15.094 31.913 1.00 0.00 H +ATOM 513 HW2 SOL 170 21.798 13.896 32.144 1.00 0.00 H +ATOM 514 OW SOL 171 20.572 24.087 21.759 1.00 0.00 O +ATOM 515 HW1 SOL 171 20.177 24.703 21.078 1.00 0.00 H +ATOM 516 HW2 SOL 171 21.047 23.401 21.209 1.00 0.00 H +ATOM 517 OW SOL 172 27.011 21.983 12.689 1.00 0.00 O +ATOM 518 HW1 SOL 172 26.589 21.796 13.576 1.00 0.00 H +ATOM 519 HW2 SOL 172 27.502 21.138 12.478 1.00 0.00 H +ATOM 520 OW SOL 173 27.873 21.492 26.173 1.00 0.00 O +ATOM 521 HW1 SOL 173 28.092 21.918 27.051 1.00 0.00 H +ATOM 522 HW2 SOL 173 26.908 21.715 26.036 1.00 0.00 H +ATOM 523 OW SOL 174 18.801 23.348 22.703 1.00 0.00 O +ATOM 524 HW1 SOL 174 18.700 24.180 22.157 1.00 0.00 H +ATOM 525 HW2 SOL 174 19.279 22.720 22.089 1.00 0.00 H +ATOM 526 OW SOL 175 28.842 13.423 18.022 1.00 0.00 O +ATOM 527 HW1 SOL 175 28.740 12.648 18.646 1.00 0.00 H +ATOM 528 HW2 SOL 175 28.519 14.202 18.559 1.00 0.00 H +ATOM 529 OW SOL 176 25.404 27.238 13.894 1.00 0.00 O +ATOM 530 HW1 SOL 176 25.057 28.141 13.642 1.00 0.00 H +ATOM 531 HW2 SOL 176 25.068 26.644 13.164 1.00 0.00 H +ATOM 532 OW SOL 177 13.648 31.004 20.523 1.00 0.00 O +ATOM 533 HW1 SOL 177 14.154 31.859 20.403 1.00 0.00 H +ATOM 534 HW2 SOL 177 13.311 30.798 19.605 1.00 0.00 H +ATOM 535 OW SOL 178 14.229 17.416 17.143 1.00 0.00 O +ATOM 536 HW1 SOL 178 13.948 16.941 16.310 1.00 0.00 H +ATOM 537 HW2 SOL 178 15.227 17.369 17.117 1.00 0.00 H +ATOM 538 OW SOL 179 15.646 10.903 29.696 1.00 0.00 O +ATOM 539 HW1 SOL 179 16.138 11.535 29.097 1.00 0.00 H +ATOM 540 HW2 SOL 179 16.141 10.966 30.562 1.00 0.00 H +ATOM 541 OW SOL 180 19.621 22.063 14.117 1.00 0.00 O +ATOM 542 HW1 SOL 180 19.137 22.720 14.695 1.00 0.00 H +ATOM 543 HW2 SOL 180 19.979 21.395 14.768 1.00 0.00 H +ATOM 544 OW SOL 181 30.397 26.314 19.886 1.00 0.00 O +ATOM 545 HW1 SOL 181 30.779 26.155 20.796 1.00 0.00 H +ATOM 546 HW2 SOL 181 30.028 25.421 19.626 1.00 0.00 H +ATOM 547 OW SOL 182 19.674 13.424 22.478 1.00 0.00 O +ATOM 548 HW1 SOL 182 18.963 12.986 21.929 1.00 0.00 H +ATOM 549 HW2 SOL 182 20.211 13.934 21.806 1.00 0.00 H +ATOM 550 OW SOL 183 18.668 14.883 20.010 1.00 0.00 O +ATOM 551 HW1 SOL 183 18.273 14.187 20.610 1.00 0.00 H +ATOM 552 HW2 SOL 183 19.045 15.557 20.645 1.00 0.00 H +ATOM 553 OW SOL 184 17.034 29.023 9.488 1.00 0.00 O +ATOM 554 HW1 SOL 184 17.506 29.166 10.358 1.00 0.00 H +ATOM 555 HW2 SOL 184 17.634 28.392 8.995 1.00 0.00 H +ATOM 556 OW SOL 185 22.961 20.786 25.713 1.00 0.00 O +ATOM 557 HW1 SOL 185 22.731 20.546 24.770 1.00 0.00 H +ATOM 558 HW2 SOL 185 22.071 20.838 26.166 1.00 0.00 H +ATOM 559 OW SOL 186 26.286 17.329 31.213 1.00 0.00 O +ATOM 560 HW1 SOL 186 26.404 17.825 32.073 1.00 0.00 H +ATOM 561 HW2 SOL 186 26.241 16.371 31.498 1.00 0.00 H +ATOM 562 OW SOL 187 27.580 14.914 14.672 1.00 0.00 O +ATOM 563 HW1 SOL 187 27.811 14.051 15.121 1.00 0.00 H +ATOM 564 HW2 SOL 187 27.719 14.720 13.701 1.00 0.00 H +ATOM 565 OW SOL 188 23.031 33.085 25.667 1.00 0.00 O +ATOM 566 HW1 SOL 188 23.825 32.541 25.398 1.00 0.00 H +ATOM 567 HW2 SOL 188 22.449 33.071 24.854 1.00 0.00 H +ATOM 568 OW SOL 189 15.597 15.370 30.674 1.00 0.00 O +ATOM 569 HW1 SOL 189 15.625 16.152 31.297 1.00 0.00 H +ATOM 570 HW2 SOL 189 15.518 14.583 31.286 1.00 0.00 H +ATOM 571 OW SOL 190 16.883 26.648 31.638 1.00 0.00 O +ATOM 572 HW1 SOL 190 16.297 26.276 32.357 1.00 0.00 H +ATOM 573 HW2 SOL 190 16.832 27.637 31.780 1.00 0.00 H +ATOM 574 OW SOL 191 19.861 24.244 32.586 1.00 0.00 O +ATOM 575 HW1 SOL 191 19.950 23.992 31.623 1.00 0.00 H +ATOM 576 HW2 SOL 191 20.144 25.202 32.606 1.00 0.00 H +ATOM 577 OW SOL 192 15.257 9.758 26.764 1.00 0.00 O +ATOM 578 HW1 SOL 192 14.827 10.581 27.136 1.00 0.00 H +ATOM 579 HW2 SOL 192 16.212 10.027 26.639 1.00 0.00 H +ATOM 580 OW SOL 193 21.738 19.826 33.281 1.00 0.00 O +ATOM 581 HW1 SOL 193 22.076 20.323 32.483 1.00 0.00 H +ATOM 582 HW2 SOL 193 20.856 20.258 33.472 1.00 0.00 H +ATOM 583 OW SOL 194 10.469 18.366 28.899 1.00 0.00 O +ATOM 584 HW1 SOL 194 11.297 18.486 28.352 1.00 0.00 H +ATOM 585 HW2 SOL 194 10.007 19.250 28.826 1.00 0.00 H +ATOM 586 OW SOL 195 19.058 31.288 28.229 1.00 0.00 O +ATOM 587 HW1 SOL 195 18.137 31.553 28.515 1.00 0.00 H +ATOM 588 HW2 SOL 195 19.157 31.712 27.329 1.00 0.00 H +ATOM 589 OW SOL 196 15.716 28.774 16.471 1.00 0.00 O +ATOM 590 HW1 SOL 196 15.871 28.372 17.373 1.00 0.00 H +ATOM 591 HW2 SOL 196 14.924 29.367 16.610 1.00 0.00 H +ATOM 592 OW SOL 197 15.165 21.070 10.861 1.00 0.00 O +ATOM 593 HW1 SOL 197 14.773 20.723 11.713 1.00 0.00 H +ATOM 594 HW2 SOL 197 14.363 21.299 10.309 1.00 0.00 H +ATOM 595 OW SOL 198 18.682 30.296 17.929 1.00 0.00 O +ATOM 596 HW1 SOL 198 18.616 30.245 16.933 1.00 0.00 H +ATOM 597 HW2 SOL 198 19.420 29.658 18.149 1.00 0.00 H +ATOM 598 OW SOL 199 25.446 15.251 13.605 1.00 0.00 O +ATOM 599 HW1 SOL 199 25.367 14.695 12.778 1.00 0.00 H +ATOM 600 HW2 SOL 199 25.061 14.668 14.320 1.00 0.00 H +ATOM 601 OW SOL 200 25.596 23.079 27.017 1.00 0.00 O +ATOM 602 HW1 SOL 200 24.713 23.143 27.480 1.00 0.00 H +ATOM 603 HW2 SOL 200 26.235 22.861 27.754 1.00 0.00 H +ATOM 604 OW SOL 201 23.494 11.771 21.543 1.00 0.00 O +ATOM 605 HW1 SOL 201 23.982 12.630 21.693 1.00 0.00 H +ATOM 606 HW2 SOL 201 24.210 11.143 21.237 1.00 0.00 H +ATOM 607 OW SOL 202 26.800 29.112 25.566 1.00 0.00 O +ATOM 608 HW1 SOL 202 26.671 30.102 25.515 1.00 0.00 H +ATOM 609 HW2 SOL 202 26.164 28.828 26.284 1.00 0.00 H +ATOM 610 OW SOL 203 26.261 24.860 10.711 1.00 0.00 O +ATOM 611 HW1 SOL 203 26.533 25.358 11.534 1.00 0.00 H +ATOM 612 HW2 SOL 203 27.110 24.432 10.402 1.00 0.00 H +ATOM 613 OW SOL 204 9.456 24.988 15.424 1.00 0.00 O +ATOM 614 HW1 SOL 204 10.300 24.942 15.958 1.00 0.00 H +ATOM 615 HW2 SOL 204 8.761 25.229 16.101 1.00 0.00 H +ATOM 616 OW SOL 205 21.383 27.255 22.046 1.00 0.00 O +ATOM 617 HW1 SOL 205 20.602 26.772 21.650 1.00 0.00 H +ATOM 618 HW2 SOL 205 22.099 26.558 22.080 1.00 0.00 H +ATOM 619 OW SOL 206 14.538 22.985 19.831 1.00 0.00 O +ATOM 620 HW1 SOL 206 13.872 23.579 20.283 1.00 0.00 H +ATOM 621 HW2 SOL 206 15.176 22.748 20.563 1.00 0.00 H +ATOM 622 OW SOL 207 12.256 23.724 21.874 1.00 0.00 O +ATOM 623 HW1 SOL 207 12.712 24.484 22.336 1.00 0.00 H +ATOM 624 HW2 SOL 207 12.160 23.034 22.592 1.00 0.00 H +ATOM 625 OW SOL 208 17.301 22.623 16.712 1.00 0.00 O +ATOM 626 HW1 SOL 208 16.786 22.266 15.933 1.00 0.00 H +ATOM 627 HW2 SOL 208 16.708 22.435 17.494 1.00 0.00 H +ATOM 628 OW SOL 209 27.289 17.023 25.562 1.00 0.00 O +ATOM 629 HW1 SOL 209 27.950 17.324 26.250 1.00 0.00 H +ATOM 630 HW2 SOL 209 26.475 16.802 26.098 1.00 0.00 H +ATOM 631 OW SOL 210 12.046 11.028 23.486 1.00 0.00 O +ATOM 632 HW1 SOL 210 12.209 11.923 23.901 1.00 0.00 H +ATOM 633 HW2 SOL 210 11.256 11.184 22.893 1.00 0.00 H +ATOM 634 OW SOL 211 12.971 23.755 12.904 1.00 0.00 O +ATOM 635 HW1 SOL 211 13.462 22.993 13.326 1.00 0.00 H +ATOM 636 HW2 SOL 211 12.946 23.511 11.935 1.00 0.00 H +ATOM 637 OW SOL 212 18.713 14.967 23.853 1.00 0.00 O +ATOM 638 HW1 SOL 212 18.097 15.333 23.155 1.00 0.00 H +ATOM 639 HW2 SOL 212 18.527 13.985 23.839 1.00 0.00 H +ATOM 640 OW SOL 213 17.844 16.429 18.517 1.00 0.00 O +ATOM 641 HW1 SOL 213 17.744 15.500 18.162 1.00 0.00 H +ATOM 642 HW2 SOL 213 16.981 16.870 18.271 1.00 0.00 H +ATOM 643 OW SOL 214 26.348 27.255 19.389 1.00 0.00 O +ATOM 644 HW1 SOL 214 26.764 27.895 18.744 1.00 0.00 H +ATOM 645 HW2 SOL 214 26.129 27.826 20.180 1.00 0.00 H +ATOM 646 OW SOL 215 19.468 25.203 11.319 1.00 0.00 O +ATOM 647 HW1 SOL 215 19.836 25.775 10.587 1.00 0.00 H +ATOM 648 HW2 SOL 215 20.233 24.606 11.560 1.00 0.00 H +ATOM 649 OW SOL 216 24.482 16.998 15.713 1.00 0.00 O +ATOM 650 HW1 SOL 216 23.782 16.352 15.411 1.00 0.00 H +ATOM 651 HW2 SOL 216 23.957 17.723 16.159 1.00 0.00 H +ATOM 652 OW SOL 217 22.863 24.643 26.438 1.00 0.00 O +ATOM 653 HW1 SOL 217 23.205 23.713 26.305 1.00 0.00 H +ATOM 654 HW2 SOL 217 23.295 24.934 27.291 1.00 0.00 H +ATOM 655 OW SOL 218 16.581 23.137 9.018 1.00 0.00 O +ATOM 656 HW1 SOL 218 15.746 22.632 9.233 1.00 0.00 H +ATOM 657 HW2 SOL 218 16.633 23.826 9.740 1.00 0.00 H +ATOM 658 OW SOL 219 12.098 27.383 14.371 1.00 0.00 O +ATOM 659 HW1 SOL 219 11.253 27.822 14.067 1.00 0.00 H +ATOM 660 HW2 SOL 219 12.162 26.569 13.793 1.00 0.00 H +ATOM 661 OW SOL 220 18.497 10.087 28.018 1.00 0.00 O +ATOM 662 HW1 SOL 220 19.198 10.734 28.318 1.00 0.00 H +ATOM 663 HW2 SOL 220 17.867 10.652 27.485 1.00 0.00 H +ATOM 664 OW SOL 221 23.758 24.161 29.453 1.00 0.00 O +ATOM 665 HW1 SOL 221 24.089 23.218 29.494 1.00 0.00 H +ATOM 666 HW2 SOL 221 24.587 24.695 29.288 1.00 0.00 H +ATOM 667 OW SOL 222 21.864 13.608 29.368 1.00 0.00 O +ATOM 668 HW1 SOL 222 21.386 12.750 29.559 1.00 0.00 H +ATOM 669 HW2 SOL 222 21.214 14.121 28.809 1.00 0.00 H +ATOM 670 OW SOL 223 29.881 27.987 21.278 1.00 0.00 O +ATOM 671 HW1 SOL 223 30.280 28.463 22.060 1.00 0.00 H +ATOM 672 HW2 SOL 223 28.896 28.064 21.433 1.00 0.00 H +ATOM 673 OW SOL 224 14.384 27.766 12.575 1.00 0.00 O +ATOM 674 HW1 SOL 224 13.656 27.745 13.259 1.00 0.00 H +ATOM 675 HW2 SOL 224 15.210 27.928 13.114 1.00 0.00 H +ATOM 676 OW SOL 225 17.381 25.415 12.307 1.00 0.00 O +ATOM 677 HW1 SOL 225 16.685 25.906 11.784 1.00 0.00 H +ATOM 678 HW2 SOL 225 17.361 24.493 11.919 1.00 0.00 H +ATOM 679 OW SOL 226 18.771 26.327 16.968 1.00 0.00 O +ATOM 680 HW1 SOL 226 19.165 26.197 17.878 1.00 0.00 H +ATOM 681 HW2 SOL 226 19.149 25.570 16.436 1.00 0.00 H +ATOM 682 OW SOL 227 26.894 25.793 22.690 1.00 0.00 O +ATOM 683 HW1 SOL 227 27.095 26.573 23.283 1.00 0.00 H +ATOM 684 HW2 SOL 227 26.892 25.014 23.317 1.00 0.00 H +ATOM 685 OW SOL 228 29.615 14.551 22.456 1.00 0.00 O +ATOM 686 HW1 SOL 228 29.405 13.573 22.445 1.00 0.00 H +ATOM 687 HW2 SOL 228 29.346 14.860 21.544 1.00 0.00 H +ATOM 688 OW SOL 229 14.566 25.605 27.425 1.00 0.00 O +ATOM 689 HW1 SOL 229 14.245 25.596 26.478 1.00 0.00 H +ATOM 690 HW2 SOL 229 15.214 24.844 27.462 1.00 0.00 H +ATOM 691 OW SOL 230 20.391 25.772 30.067 1.00 0.00 O +ATOM 692 HW1 SOL 230 21.375 25.748 29.888 1.00 0.00 H +ATOM 693 HW2 SOL 230 20.078 24.864 29.790 1.00 0.00 H +ATOM 694 OW SOL 231 23.233 14.897 21.299 1.00 0.00 O +ATOM 695 HW1 SOL 231 22.260 14.863 21.070 1.00 0.00 H +ATOM 696 HW2 SOL 231 23.269 14.533 22.230 1.00 0.00 H +ATOM 697 OW SOL 232 13.951 14.271 26.024 1.00 0.00 O +ATOM 698 HW1 SOL 232 13.866 15.163 26.468 1.00 0.00 H +ATOM 699 HW2 SOL 232 13.345 13.682 26.559 1.00 0.00 H +ATOM 700 OW SOL 233 28.373 27.959 24.651 1.00 0.00 O +ATOM 701 HW1 SOL 233 27.950 28.614 24.025 1.00 0.00 H +ATOM 702 HW2 SOL 233 28.738 27.253 24.044 1.00 0.00 H +ATOM 703 OW SOL 234 25.500 16.383 23.895 1.00 0.00 O +ATOM 704 HW1 SOL 234 25.500 17.138 23.239 1.00 0.00 H +ATOM 705 HW2 SOL 234 24.639 15.909 23.710 1.00 0.00 H +ATOM 706 OW SOL 235 28.002 12.440 13.022 1.00 0.00 O +ATOM 707 HW1 SOL 235 28.815 12.998 12.852 1.00 0.00 H +ATOM 708 HW2 SOL 235 28.343 11.502 12.958 1.00 0.00 H +ATOM 709 OW SOL 236 18.282 22.984 28.431 1.00 0.00 O +ATOM 710 HW1 SOL 236 17.839 22.956 27.535 1.00 0.00 H +ATOM 711 HW2 SOL 236 17.744 22.345 28.980 1.00 0.00 H +ATOM 712 OW SOL 237 15.334 10.807 19.052 1.00 0.00 O +ATOM 713 HW1 SOL 237 16.230 10.739 18.613 1.00 0.00 H +ATOM 714 HW2 SOL 237 15.543 10.729 20.027 1.00 0.00 H +ATOM 715 OW SOL 238 26.453 20.193 17.035 1.00 0.00 O +ATOM 716 HW1 SOL 238 27.285 19.738 16.718 1.00 0.00 H +ATOM 717 HW2 SOL 238 26.145 20.706 16.234 1.00 0.00 H +ATOM 718 OW SOL 239 10.845 27.204 26.439 1.00 0.00 O +ATOM 719 HW1 SOL 239 11.492 26.526 26.787 1.00 0.00 H +ATOM 720 HW2 SOL 239 10.226 27.356 27.209 1.00 0.00 H +ATOM 721 OW SOL 240 23.318 20.552 29.910 1.00 0.00 O +ATOM 722 HW1 SOL 240 23.322 19.973 29.095 1.00 0.00 H +ATOM 723 HW2 SOL 240 24.208 20.374 30.330 1.00 0.00 H +ATOM 724 OW SOL 241 12.360 11.799 19.506 1.00 0.00 O +ATOM 725 HW1 SOL 241 11.587 12.232 19.969 1.00 0.00 H +ATOM 726 HW2 SOL 241 12.913 11.439 20.258 1.00 0.00 H +ATOM 727 OW SOL 242 10.015 16.482 23.582 1.00 0.00 O +ATOM 728 HW1 SOL 242 9.278 17.021 23.174 1.00 0.00 H +ATOM 729 HW2 SOL 242 10.842 16.856 23.162 1.00 0.00 H +ATOM 730 OW SOL 243 24.378 12.205 18.326 1.00 0.00 O +ATOM 731 HW1 SOL 243 24.260 11.939 19.283 1.00 0.00 H +ATOM 732 HW2 SOL 243 24.465 11.331 17.848 1.00 0.00 H +ATOM 733 OW SOL 244 27.338 13.664 23.454 1.00 0.00 O +ATOM 734 HW1 SOL 244 28.230 13.837 23.870 1.00 0.00 H +ATOM 735 HW2 SOL 244 27.455 13.969 22.509 1.00 0.00 H +ATOM 736 OW SOL 245 16.940 13.384 31.601 1.00 0.00 O +ATOM 737 HW1 SOL 245 17.109 13.112 30.654 1.00 0.00 H +ATOM 738 HW2 SOL 245 17.669 12.928 32.111 1.00 0.00 H +ATOM 739 OW SOL 246 32.005 13.657 23.624 1.00 0.00 O +ATOM 740 HW1 SOL 246 32.257 13.911 24.558 1.00 0.00 H +ATOM 741 HW2 SOL 246 31.963 14.533 23.145 1.00 0.00 H +ATOM 742 OW SOL 247 28.888 16.640 31.052 1.00 0.00 O +ATOM 743 HW1 SOL 247 28.877 16.525 30.058 1.00 0.00 H +ATOM 744 HW2 SOL 247 28.475 17.540 31.190 1.00 0.00 H +ATOM 745 OW SOL 248 30.517 21.634 27.971 1.00 0.00 O +ATOM 746 HW1 SOL 248 30.413 20.686 27.671 1.00 0.00 H +ATOM 747 HW2 SOL 248 29.614 21.868 28.330 1.00 0.00 H +ATOM 748 OW SOL 249 29.278 25.405 14.874 1.00 0.00 O +ATOM 749 HW1 SOL 249 30.211 25.764 14.901 1.00 0.00 H +ATOM 750 HW2 SOL 249 28.781 25.992 15.513 1.00 0.00 H +ATOM 751 OW SOL 250 28.968 21.899 14.796 1.00 0.00 O +ATOM 752 HW1 SOL 250 28.346 22.644 14.559 1.00 0.00 H +ATOM 753 HW2 SOL 250 28.495 21.082 14.467 1.00 0.00 H +ATOM 754 OW SOL 251 14.191 11.981 16.094 1.00 0.00 O +ATOM 755 HW1 SOL 251 14.407 12.074 15.122 1.00 0.00 H +ATOM 756 HW2 SOL 251 14.275 10.999 16.261 1.00 0.00 H +ATOM 757 OW SOL 252 17.788 32.955 15.832 1.00 0.00 O +ATOM 758 HW1 SOL 252 17.315 32.902 14.953 1.00 0.00 H +ATOM 759 HW2 SOL 252 18.279 33.824 15.785 1.00 0.00 H +ATOM 760 OW SOL 253 14.053 32.614 18.037 1.00 0.00 O +ATOM 761 HW1 SOL 253 14.707 32.156 18.638 1.00 0.00 H +ATOM 762 HW2 SOL 253 13.297 32.849 18.647 1.00 0.00 H +ATOM 763 OW SOL 254 15.162 6.761 17.608 1.00 0.00 O +ATOM 764 HW1 SOL 254 16.124 6.787 17.336 1.00 0.00 H +ATOM 765 HW2 SOL 254 15.183 6.326 18.508 1.00 0.00 H +ATOM 766 OW SOL 255 23.403 24.435 19.289 1.00 0.00 O +ATOM 767 HW1 SOL 255 22.966 24.938 20.034 1.00 0.00 H +ATOM 768 HW2 SOL 255 24.203 24.019 19.721 1.00 0.00 H +ATOM 769 OW SOL 256 11.933 18.281 8.865 1.00 0.00 O +ATOM 770 HW1 SOL 256 12.169 18.288 7.894 1.00 0.00 H +ATOM 771 HW2 SOL 256 11.288 17.520 8.945 1.00 0.00 H +ATOM 772 OW SOL 257 17.352 17.223 12.875 1.00 0.00 O +ATOM 773 HW1 SOL 257 17.075 17.788 12.098 1.00 0.00 H +ATOM 774 HW2 SOL 257 16.594 16.579 12.980 1.00 0.00 H +ATOM 775 OW SOL 258 20.845 31.014 24.506 1.00 0.00 O +ATOM 776 HW1 SOL 258 21.494 30.971 23.747 1.00 0.00 H +ATOM 777 HW2 SOL 258 21.299 31.607 25.171 1.00 0.00 H +ATOM 778 OW SOL 259 16.173 30.639 14.579 1.00 0.00 O +ATOM 779 HW1 SOL 259 17.087 31.003 14.755 1.00 0.00 H +ATOM 780 HW2 SOL 259 15.597 31.456 14.545 1.00 0.00 H +ATOM 781 OW SOL 260 26.861 14.882 24.781 1.00 0.00 O +ATOM 782 HW1 SOL 260 27.331 15.619 24.295 1.00 0.00 H +ATOM 783 HW2 SOL 260 27.066 15.066 25.742 1.00 0.00 H +ATOM 784 OW SOL 261 20.147 18.767 8.642 1.00 0.00 O +ATOM 785 HW1 SOL 261 19.932 18.177 7.865 1.00 0.00 H +ATOM 786 HW2 SOL 261 19.754 18.282 9.423 1.00 0.00 H +ATOM 787 OW SOL 262 16.330 11.853 15.027 1.00 0.00 O +ATOM 788 HW1 SOL 262 16.561 11.180 15.729 1.00 0.00 H +ATOM 789 HW2 SOL 262 16.187 12.696 15.546 1.00 0.00 H +ATOM 790 OW SOL 263 19.998 14.127 14.342 1.00 0.00 O +ATOM 791 HW1 SOL 263 19.093 13.932 13.964 1.00 0.00 H +ATOM 792 HW2 SOL 263 20.377 14.802 13.709 1.00 0.00 H +ATOM 793 OW SOL 264 15.286 6.974 21.690 1.00 0.00 O +ATOM 794 HW1 SOL 264 14.490 6.733 21.134 1.00 0.00 H +ATOM 795 HW2 SOL 264 15.987 7.198 21.013 1.00 0.00 H +ATOM 796 OW SOL 265 22.572 20.878 22.776 1.00 0.00 O +ATOM 797 HW1 SOL 265 22.895 20.110 22.224 1.00 0.00 H +ATOM 798 HW2 SOL 265 21.659 21.062 22.413 1.00 0.00 H +ATOM 799 OW SOL 266 13.021 22.353 8.271 1.00 0.00 O +ATOM 800 HW1 SOL 266 13.103 21.539 7.695 1.00 0.00 H +ATOM 801 HW2 SOL 266 12.965 23.103 7.612 1.00 0.00 H +ATOM 802 OW SOL 267 29.306 12.539 20.816 1.00 0.00 O +ATOM 803 HW1 SOL 267 29.850 13.011 20.123 1.00 0.00 H +ATOM 804 HW2 SOL 267 29.587 11.583 20.726 1.00 0.00 H +ATOM 805 OW SOL 268 27.591 8.306 19.715 1.00 0.00 O +ATOM 806 HW1 SOL 268 26.981 8.960 20.162 1.00 0.00 H +ATOM 807 HW2 SOL 268 28.102 7.902 20.473 1.00 0.00 H +ATOM 808 OW SOL 269 14.625 19.150 27.877 1.00 0.00 O +ATOM 809 HW1 SOL 269 14.905 19.901 28.474 1.00 0.00 H +ATOM 810 HW2 SOL 269 14.485 18.387 28.507 1.00 0.00 H +ATOM 811 OW SOL 270 15.053 18.138 11.940 1.00 0.00 O +ATOM 812 HW1 SOL 270 14.083 18.294 12.126 1.00 0.00 H +ATOM 813 HW2 SOL 270 15.179 18.501 11.017 1.00 0.00 H +ATOM 814 OW SOL 271 20.480 10.066 25.281 1.00 0.00 O +ATOM 815 HW1 SOL 271 20.492 10.653 26.090 1.00 0.00 H +ATOM 816 HW2 SOL 271 20.115 9.200 25.622 1.00 0.00 H +ATOM 817 OW SOL 272 16.687 16.821 21.152 1.00 0.00 O +ATOM 818 HW1 SOL 272 17.392 17.113 20.506 1.00 0.00 H +ATOM 819 HW2 SOL 272 16.033 16.326 20.580 1.00 0.00 H +ATOM 820 OW SOL 273 20.496 9.997 18.857 1.00 0.00 O +ATOM 821 HW1 SOL 273 19.529 9.992 19.113 1.00 0.00 H +ATOM 822 HW2 SOL 273 20.580 10.799 18.267 1.00 0.00 H +ATOM 823 OW SOL 274 25.891 27.591 29.791 1.00 0.00 O +ATOM 824 HW1 SOL 274 25.008 27.972 30.067 1.00 0.00 H +ATOM 825 HW2 SOL 274 26.443 27.649 30.622 1.00 0.00 H +ATOM 826 OW SOL 275 10.510 26.690 23.469 1.00 0.00 O +ATOM 827 HW1 SOL 275 9.710 26.679 24.068 1.00 0.00 H +ATOM 828 HW2 SOL 275 11.238 27.046 24.054 1.00 0.00 H +ATOM 829 OW SOL 276 25.856 13.235 20.210 1.00 0.00 O +ATOM 830 HW1 SOL 276 26.425 12.798 19.514 1.00 0.00 H +ATOM 831 HW2 SOL 276 25.294 13.876 19.686 1.00 0.00 H +ATOM 832 OW SOL 277 10.188 21.626 13.254 1.00 0.00 O +ATOM 833 HW1 SOL 277 10.108 20.717 12.847 1.00 0.00 H +ATOM 834 HW2 SOL 277 10.441 21.439 14.203 1.00 0.00 H +ATOM 835 OW SOL 278 13.376 16.662 19.239 1.00 0.00 O +ATOM 836 HW1 SOL 278 12.555 16.358 18.757 1.00 0.00 H +ATOM 837 HW2 SOL 278 13.509 17.597 18.911 1.00 0.00 H +ATOM 838 OW SOL 279 19.716 33.214 25.227 1.00 0.00 O +ATOM 839 HW1 SOL 279 20.555 33.286 25.766 1.00 0.00 H +ATOM 840 HW2 SOL 279 18.992 33.211 25.917 1.00 0.00 H +ATOM 841 OW SOL 280 21.318 16.043 23.168 1.00 0.00 O +ATOM 842 HW1 SOL 280 20.740 15.644 22.456 1.00 0.00 H +ATOM 843 HW2 SOL 280 21.291 15.365 23.902 1.00 0.00 H +ATOM 844 OW SOL 281 29.072 25.241 18.007 1.00 0.00 O +ATOM 845 HW1 SOL 281 29.017 24.363 18.482 1.00 0.00 H +ATOM 846 HW2 SOL 281 28.392 25.159 17.279 1.00 0.00 H +ATOM 847 OW SOL 282 16.906 12.470 24.437 1.00 0.00 O +ATOM 848 HW1 SOL 282 16.760 13.426 24.688 1.00 0.00 H +ATOM 849 HW2 SOL 282 17.418 12.526 23.580 1.00 0.00 H +ATOM 850 OW SOL 283 11.005 16.545 20.975 1.00 0.00 O +ATOM 851 HW1 SOL 283 11.185 17.280 20.321 1.00 0.00 H +ATOM 852 HW2 SOL 283 11.645 15.826 20.704 1.00 0.00 H +ATOM 853 OW SOL 284 19.808 19.268 16.414 1.00 0.00 O +ATOM 854 HW1 SOL 284 18.955 18.964 16.838 1.00 0.00 H +ATOM 855 HW2 SOL 284 19.515 19.632 15.530 1.00 0.00 H +ATOM 856 OW SOL 285 19.928 17.083 32.305 1.00 0.00 O +ATOM 857 HW1 SOL 285 19.062 17.537 32.093 1.00 0.00 H +ATOM 858 HW2 SOL 285 20.282 16.821 31.407 1.00 0.00 H +ATOM 859 OW SOL 286 21.167 10.656 13.563 1.00 0.00 O +ATOM 860 HW1 SOL 286 22.068 10.422 13.199 1.00 0.00 H +ATOM 861 HW2 SOL 286 20.751 11.196 12.831 1.00 0.00 H +ATOM 862 OW SOL 287 25.467 23.335 16.932 1.00 0.00 O +ATOM 863 HW1 SOL 287 25.022 24.043 16.383 1.00 0.00 H +ATOM 864 HW2 SOL 287 25.864 22.722 16.249 1.00 0.00 H +ATOM 865 OW SOL 288 11.779 10.659 26.429 1.00 0.00 O +ATOM 866 HW1 SOL 288 11.727 9.775 25.964 1.00 0.00 H +ATOM 867 HW2 SOL 288 11.701 11.322 25.684 1.00 0.00 H +ATOM 868 OW SOL 289 20.631 25.552 23.948 1.00 0.00 O +ATOM 869 HW1 SOL 289 20.171 26.439 23.917 1.00 0.00 H +ATOM 870 HW2 SOL 289 21.576 25.768 23.702 1.00 0.00 H +ATOM 871 OW SOL 290 31.043 16.337 17.275 1.00 0.00 O +ATOM 872 HW1 SOL 290 31.810 15.800 17.627 1.00 0.00 H +ATOM 873 HW2 SOL 290 30.548 16.609 18.100 1.00 0.00 H +ATOM 874 OW SOL 291 12.491 25.394 18.555 1.00 0.00 O +ATOM 875 HW1 SOL 291 11.721 25.934 18.215 1.00 0.00 H +ATOM 876 HW2 SOL 291 12.354 24.497 18.136 1.00 0.00 H +ATOM 877 OW SOL 292 25.292 13.571 16.035 1.00 0.00 O +ATOM 878 HW1 SOL 292 25.055 12.601 16.090 1.00 0.00 H +ATOM 879 HW2 SOL 292 24.754 13.987 16.769 1.00 0.00 H +ATOM 880 OW SOL 293 9.792 18.248 17.146 1.00 0.00 O +ATOM 881 HW1 SOL 293 10.249 17.869 17.951 1.00 0.00 H +ATOM 882 HW2 SOL 293 9.494 17.438 16.641 1.00 0.00 H +ATOM 883 OW SOL 294 17.876 26.066 14.738 1.00 0.00 O +ATOM 884 HW1 SOL 294 18.251 26.859 15.218 1.00 0.00 H +ATOM 885 HW2 SOL 294 17.107 26.444 14.222 1.00 0.00 H +ATOM 886 OW SOL 295 13.351 26.592 29.897 1.00 0.00 O +ATOM 887 HW1 SOL 295 13.162 26.831 30.850 1.00 0.00 H +ATOM 888 HW2 SOL 295 12.534 26.092 29.613 1.00 0.00 H +ATOM 889 OW SOL 296 12.037 28.641 18.185 1.00 0.00 O +ATOM 890 HW1 SOL 296 12.138 29.311 18.919 1.00 0.00 H +ATOM 891 HW2 SOL 296 11.798 27.798 18.666 1.00 0.00 H +ATOM 892 OW SOL 297 13.949 14.903 14.018 1.00 0.00 O +ATOM 893 HW1 SOL 297 13.391 14.944 14.846 1.00 0.00 H +ATOM 894 HW2 SOL 297 13.286 15.029 13.280 1.00 0.00 H +ATOM 895 OW SOL 298 24.441 9.774 18.896 1.00 0.00 O +ATOM 896 HW1 SOL 298 24.484 8.795 18.698 1.00 0.00 H +ATOM 897 HW2 SOL 298 23.461 9.959 18.959 1.00 0.00 H +ATOM 898 OW SOL 299 24.825 20.625 13.710 1.00 0.00 O +ATOM 899 HW1 SOL 299 24.699 19.834 13.111 1.00 0.00 H +ATOM 900 HW2 SOL 299 24.759 21.405 13.087 1.00 0.00 H +ATOM 901 OW SOL 300 30.311 15.797 23.908 1.00 0.00 O +ATOM 902 HW1 SOL 300 30.013 16.347 23.128 1.00 0.00 H +ATOM 903 HW2 SOL 300 31.248 16.106 24.070 1.00 0.00 H +ATOM 904 OW SOL 301 14.689 25.210 19.062 1.00 0.00 O +ATOM 905 HW1 SOL 301 14.868 24.486 18.395 1.00 0.00 H +ATOM 906 HW2 SOL 301 15.310 25.943 18.787 1.00 0.00 H +ATOM 907 OW SOL 302 25.131 30.384 14.211 1.00 0.00 O +ATOM 908 HW1 SOL 302 25.229 30.043 15.146 1.00 0.00 H +ATOM 909 HW2 SOL 302 24.835 31.331 14.335 1.00 0.00 H +ATOM 910 OW SOL 303 26.817 28.630 15.931 1.00 0.00 O +ATOM 911 HW1 SOL 303 26.854 29.598 16.177 1.00 0.00 H +ATOM 912 HW2 SOL 303 27.762 28.323 16.039 1.00 0.00 H +ATOM 913 OW SOL 304 25.870 28.779 23.498 1.00 0.00 O +ATOM 914 HW1 SOL 304 26.007 28.035 24.152 1.00 0.00 H +ATOM 915 HW2 SOL 304 26.345 28.462 22.677 1.00 0.00 H +ATOM 916 OW SOL 305 21.224 20.028 20.919 1.00 0.00 O +ATOM 917 HW1 SOL 305 20.868 19.663 20.059 1.00 0.00 H +ATOM 918 HW2 SOL 305 21.455 19.210 21.445 1.00 0.00 H +ATOM 919 OW SOL 306 23.951 18.581 19.460 1.00 0.00 O +ATOM 920 HW1 SOL 306 24.755 18.081 19.139 1.00 0.00 H +ATOM 921 HW2 SOL 306 23.703 19.155 18.679 1.00 0.00 H +ATOM 922 OW SOL 307 14.745 23.638 10.984 1.00 0.00 O +ATOM 923 HW1 SOL 307 14.721 24.346 11.689 1.00 0.00 H +ATOM 924 HW2 SOL 307 14.730 22.785 11.506 1.00 0.00 H +ATOM 925 OW SOL 308 20.995 28.107 28.584 1.00 0.00 O +ATOM 926 HW1 SOL 308 21.030 29.030 28.201 1.00 0.00 H +ATOM 927 HW2 SOL 308 20.408 28.206 29.388 1.00 0.00 H +ATOM 928 OW SOL 309 21.468 30.225 29.577 1.00 0.00 O +ATOM 929 HW1 SOL 309 22.120 30.435 28.848 1.00 0.00 H +ATOM 930 HW2 SOL 309 20.824 30.989 29.546 1.00 0.00 H +ATOM 931 OW SOL 310 24.896 27.982 17.390 1.00 0.00 O +ATOM 932 HW1 SOL 310 25.409 28.790 17.677 1.00 0.00 H +ATOM 933 HW2 SOL 310 24.781 28.112 16.405 1.00 0.00 H +ATOM 934 OW SOL 311 10.694 13.902 19.257 1.00 0.00 O +ATOM 935 HW1 SOL 311 9.883 14.455 19.452 1.00 0.00 H +ATOM 936 HW2 SOL 311 11.300 14.094 20.029 1.00 0.00 H +ATOM 937 OW SOL 312 12.486 10.419 18.077 1.00 0.00 O +ATOM 938 HW1 SOL 312 11.824 11.058 17.686 1.00 0.00 H +ATOM 939 HW2 SOL 312 12.027 10.075 18.896 1.00 0.00 H +ATOM 940 OW SOL 313 21.726 12.250 26.675 1.00 0.00 O +ATOM 941 HW1 SOL 313 21.308 12.626 25.848 1.00 0.00 H +ATOM 942 HW2 SOL 313 21.836 13.048 27.268 1.00 0.00 H +ATOM 943 OW SOL 314 20.056 23.431 18.133 1.00 0.00 O +ATOM 944 HW1 SOL 314 19.555 24.081 17.561 1.00 0.00 H +ATOM 945 HW2 SOL 314 19.366 23.106 18.780 1.00 0.00 H +ATOM 946 OW SOL 315 8.353 22.549 12.108 1.00 0.00 O +ATOM 947 HW1 SOL 315 7.981 23.298 12.656 1.00 0.00 H +ATOM 948 HW2 SOL 315 8.381 21.780 12.747 1.00 0.00 H +ATOM 949 OW SOL 316 23.066 24.865 12.477 1.00 0.00 O +ATOM 950 HW1 SOL 316 23.923 24.801 11.966 1.00 0.00 H +ATOM 951 HW2 SOL 316 22.364 24.788 11.770 1.00 0.00 H +ATOM 952 OW SOL 317 21.609 21.802 31.335 1.00 0.00 O +ATOM 953 HW1 SOL 317 20.981 21.226 30.812 1.00 0.00 H +ATOM 954 HW2 SOL 317 22.229 22.167 30.639 1.00 0.00 H +ATOM 955 OW SOL 318 11.152 12.741 16.477 1.00 0.00 O +ATOM 956 HW1 SOL 318 10.489 13.482 16.374 1.00 0.00 H +ATOM 957 HW2 SOL 318 11.749 12.847 15.682 1.00 0.00 H +ATOM 958 OW SOL 319 16.479 19.355 30.032 1.00 0.00 O +ATOM 959 HW1 SOL 319 15.718 19.991 30.156 1.00 0.00 H +ATOM 960 HW2 SOL 319 17.195 19.922 29.624 1.00 0.00 H +ATOM 961 OW SOL 320 16.511 25.983 28.210 1.00 0.00 O +ATOM 962 HW1 SOL 320 15.788 26.358 28.790 1.00 0.00 H +ATOM 963 HW2 SOL 320 17.095 26.773 28.022 1.00 0.00 H +ATOM 964 OW SOL 321 11.555 9.180 21.060 1.00 0.00 O +ATOM 965 HW1 SOL 321 11.639 8.600 21.869 1.00 0.00 H +ATOM 966 HW2 SOL 321 12.093 9.990 21.293 1.00 0.00 H +ATOM 967 OW SOL 322 29.258 22.693 23.080 1.00 0.00 O +ATOM 968 HW1 SOL 322 28.713 23.180 23.763 1.00 0.00 H +ATOM 969 HW2 SOL 322 28.812 22.924 22.215 1.00 0.00 H +ATOM 970 OW SOL 323 15.293 7.604 25.247 1.00 0.00 O +ATOM 971 HW1 SOL 323 15.848 8.208 24.676 1.00 0.00 H +ATOM 972 HW2 SOL 323 14.580 7.280 24.626 1.00 0.00 H +ATOM 973 OW SOL 324 16.703 32.803 18.354 1.00 0.00 O +ATOM 974 HW1 SOL 324 16.126 33.380 18.931 1.00 0.00 H +ATOM 975 HW2 SOL 324 17.349 32.396 18.999 1.00 0.00 H +ATOM 976 OW SOL 325 13.842 12.645 18.127 1.00 0.00 O +ATOM 977 HW1 SOL 325 14.323 13.243 17.486 1.00 0.00 H +ATOM 978 HW2 SOL 325 12.897 12.662 17.801 1.00 0.00 H +ATOM 979 OW SOL 326 14.556 13.983 8.009 1.00 0.00 O +ATOM 980 HW1 SOL 326 14.206 14.169 8.926 1.00 0.00 H +ATOM 981 HW2 SOL 326 14.445 14.854 7.532 1.00 0.00 H +ATOM 982 OW SOL 327 27.488 22.281 18.419 1.00 0.00 O +ATOM 983 HW1 SOL 327 26.914 22.997 18.815 1.00 0.00 H +ATOM 984 HW2 SOL 327 27.033 21.434 18.693 1.00 0.00 H +ATOM 985 OW SOL 328 20.380 31.224 13.120 1.00 0.00 O +ATOM 986 HW1 SOL 328 20.139 30.588 13.853 1.00 0.00 H +ATOM 987 HW2 SOL 328 20.743 32.019 13.608 1.00 0.00 H +ATOM 988 OW SOL 329 28.233 19.659 23.418 1.00 0.00 O +ATOM 989 HW1 SOL 329 27.999 19.815 22.459 1.00 0.00 H +ATOM 990 HW2 SOL 329 28.599 18.729 23.424 1.00 0.00 H +ATOM 991 OW SOL 330 27.613 9.786 25.228 1.00 0.00 O +ATOM 992 HW1 SOL 330 28.516 9.582 25.605 1.00 0.00 H +ATOM 993 HW2 SOL 330 27.816 10.233 24.357 1.00 0.00 H +ATOM 994 OW SOL 331 26.953 11.666 23.287 1.00 0.00 O +ATOM 995 HW1 SOL 331 27.240 10.967 22.632 1.00 0.00 H +ATOM 996 HW2 SOL 331 26.091 12.004 22.908 1.00 0.00 H +ATOM 997 OW SOL 332 17.325 7.120 22.392 1.00 0.00 O +ATOM 998 HW1 SOL 332 17.426 8.040 22.770 1.00 0.00 H +ATOM 999 HW2 SOL 332 17.048 6.571 23.181 1.00 0.00 H +ATOM 1000 OW SOL 333 11.304 17.823 11.869 1.00 0.00 O +ATOM 1001 HW1 SOL 333 11.740 18.013 12.749 1.00 0.00 H +ATOM 1002 HW2 SOL 333 10.327 17.871 12.075 1.00 0.00 H +ATOM 1003 OW SOL 334 30.392 14.897 18.837 1.00 0.00 O +ATOM 1004 HW1 SOL 334 30.071 15.409 19.634 1.00 0.00 H +ATOM 1005 HW2 SOL 334 31.097 14.295 19.212 1.00 0.00 H +ATOM 1006 OW SOL 335 20.738 13.693 19.175 1.00 0.00 O +ATOM 1007 HW1 SOL 335 19.925 13.716 18.593 1.00 0.00 H +ATOM 1008 HW2 SOL 335 20.469 14.225 19.977 1.00 0.00 H +ATOM 1009 OW SOL 336 22.146 8.872 20.606 1.00 0.00 O +ATOM 1010 HW1 SOL 336 22.323 8.101 19.994 1.00 0.00 H +ATOM 1011 HW2 SOL 336 21.919 9.621 19.984 1.00 0.00 H +ATOM 1012 OW SOL 337 17.898 29.877 12.282 1.00 0.00 O +ATOM 1013 HW1 SOL 337 18.653 29.401 12.733 1.00 0.00 H +ATOM 1014 HW2 SOL 337 17.369 30.254 13.042 1.00 0.00 H +ATOM 1015 OW SOL 338 9.579 23.791 27.081 1.00 0.00 O +ATOM 1016 HW1 SOL 338 9.173 24.458 27.705 1.00 0.00 H +ATOM 1017 HW2 SOL 338 8.955 23.789 26.299 1.00 0.00 H +ATOM 1018 OW SOL 339 18.804 7.349 14.881 1.00 0.00 O +ATOM 1019 HW1 SOL 339 18.160 6.979 15.551 1.00 0.00 H +ATOM 1020 HW2 SOL 339 19.408 7.927 15.429 1.00 0.00 H +ATOM 1021 OW SOL 340 17.958 31.886 24.386 1.00 0.00 O +ATOM 1022 HW1 SOL 340 18.675 31.220 24.183 1.00 0.00 H +ATOM 1023 HW2 SOL 340 18.213 32.682 23.837 1.00 0.00 H +ATOM 1024 OW SOL 341 25.496 25.147 30.905 1.00 0.00 O +ATOM 1025 HW1 SOL 341 25.379 25.434 31.855 1.00 0.00 H +ATOM 1026 HW2 SOL 341 26.139 25.816 30.533 1.00 0.00 H +ATOM 1027 OW SOL 342 22.647 25.090 16.394 1.00 0.00 O +ATOM 1028 HW1 SOL 342 22.824 25.814 17.061 1.00 0.00 H +ATOM 1029 HW2 SOL 342 22.426 25.589 15.557 1.00 0.00 H +ATOM 1030 OW SOL 343 7.347 20.812 17.781 1.00 0.00 O +ATOM 1031 HW1 SOL 343 7.132 20.349 18.640 1.00 0.00 H +ATOM 1032 HW2 SOL 343 7.366 20.070 17.111 1.00 0.00 H +ATOM 1033 OW SOL 344 15.251 10.366 24.890 1.00 0.00 O +ATOM 1034 HW1 SOL 344 14.474 9.836 24.551 1.00 0.00 H +ATOM 1035 HW2 SOL 344 16.010 10.071 24.309 1.00 0.00 H +ATOM 1036 OW SOL 345 13.711 29.075 24.741 1.00 0.00 O +ATOM 1037 HW1 SOL 345 12.999 28.666 25.312 1.00 0.00 H +ATOM 1038 HW2 SOL 345 13.198 29.521 24.008 1.00 0.00 H +ATOM 1039 OW SOL 346 12.199 23.930 24.988 1.00 0.00 O +ATOM 1040 HW1 SOL 346 12.707 23.203 25.448 1.00 0.00 H +ATOM 1041 HW2 SOL 346 12.905 24.433 24.490 1.00 0.00 H +ATOM 1042 OW SOL 347 30.271 18.583 18.904 1.00 0.00 O +ATOM 1043 HW1 SOL 347 29.513 19.052 19.356 1.00 0.00 H +ATOM 1044 HW2 SOL 347 30.661 18.013 19.627 1.00 0.00 H +ATOM 1045 OW SOL 348 18.452 13.467 15.734 1.00 0.00 O +ATOM 1046 HW1 SOL 348 18.745 13.009 16.573 1.00 0.00 H +ATOM 1047 HW2 SOL 348 18.019 14.306 16.061 1.00 0.00 H +ATOM 1048 OW SOL 349 27.608 25.406 21.006 1.00 0.00 O +ATOM 1049 HW1 SOL 349 28.239 25.387 20.230 1.00 0.00 H +ATOM 1050 HW2 SOL 349 26.879 26.019 20.703 1.00 0.00 H +ATOM 1051 OW SOL 350 29.293 13.162 26.803 1.00 0.00 O +ATOM 1052 HW1 SOL 350 28.984 12.418 27.395 1.00 0.00 H +ATOM 1053 HW2 SOL 350 28.454 13.670 26.605 1.00 0.00 H +ATOM 1054 OW SOL 351 25.367 16.306 20.113 1.00 0.00 O +ATOM 1055 HW1 SOL 351 25.891 17.140 20.287 1.00 0.00 H +ATOM 1056 HW2 SOL 351 24.438 16.548 20.392 1.00 0.00 H +ATOM 1057 OW SOL 352 30.822 27.105 23.424 1.00 0.00 O +ATOM 1058 HW1 SOL 352 31.202 27.871 23.943 1.00 0.00 H +ATOM 1059 HW2 SOL 352 30.581 26.439 24.130 1.00 0.00 H +ATOM 1060 OW SOL 353 23.941 14.747 25.295 1.00 0.00 O +ATOM 1061 HW1 SOL 353 24.843 15.162 25.416 1.00 0.00 H +ATOM 1062 HW2 SOL 353 23.374 15.211 25.975 1.00 0.00 H +ATOM 1063 OW SOL 354 13.604 17.251 21.190 1.00 0.00 O +ATOM 1064 HW1 SOL 354 12.826 17.862 21.334 1.00 0.00 H +ATOM 1065 HW2 SOL 354 13.569 16.634 21.976 1.00 0.00 H +ATOM 1066 OW SOL 355 18.949 7.925 24.760 1.00 0.00 O +ATOM 1067 HW1 SOL 355 19.061 8.403 23.889 1.00 0.00 H +ATOM 1068 HW2 SOL 355 17.959 7.917 24.900 1.00 0.00 H +ATOM 1069 OW SOL 356 8.916 14.706 23.338 1.00 0.00 O +ATOM 1070 HW1 SOL 356 9.277 14.271 24.163 1.00 0.00 H +ATOM 1071 HW2 SOL 356 8.325 15.430 23.693 1.00 0.00 H +ATOM 1072 OW SOL 357 26.796 12.444 17.183 1.00 0.00 O +ATOM 1073 HW1 SOL 357 27.461 12.928 16.616 1.00 0.00 H +ATOM 1074 HW2 SOL 357 26.186 13.168 17.503 1.00 0.00 H +ATOM 1075 OW SOL 358 13.234 9.422 15.555 1.00 0.00 O +ATOM 1076 HW1 SOL 358 12.639 9.431 16.359 1.00 0.00 H +ATOM 1077 HW2 SOL 358 12.597 9.516 14.790 1.00 0.00 H +ATOM 1078 OW SOL 359 16.066 17.405 24.928 1.00 0.00 O +ATOM 1079 HW1 SOL 359 15.432 17.970 24.400 1.00 0.00 H +ATOM 1080 HW2 SOL 359 15.787 17.561 25.875 1.00 0.00 H +ATOM 1081 OW SOL 360 18.659 24.815 26.775 1.00 0.00 O +ATOM 1082 HW1 SOL 360 19.219 24.209 27.339 1.00 0.00 H +ATOM 1083 HW2 SOL 360 18.065 25.272 27.437 1.00 0.00 H +ATOM 1084 OW SOL 361 10.600 13.243 25.686 1.00 0.00 O +ATOM 1085 HW1 SOL 361 11.333 13.874 25.432 1.00 0.00 H +ATOM 1086 HW2 SOL 361 10.318 12.846 24.812 1.00 0.00 H +ATOM 1087 OW SOL 362 10.012 29.575 16.524 1.00 0.00 O +ATOM 1088 HW1 SOL 362 9.500 29.086 15.818 1.00 0.00 H +ATOM 1089 HW2 SOL 362 10.877 29.798 16.075 1.00 0.00 H +ATOM 1090 OW SOL 363 23.586 27.355 19.055 1.00 0.00 O +ATOM 1091 HW1 SOL 363 24.502 26.964 18.967 1.00 0.00 H +ATOM 1092 HW2 SOL 363 23.752 28.341 19.077 1.00 0.00 H +ATOM 1093 OW SOL 364 9.635 19.206 24.800 1.00 0.00 O +ATOM 1094 HW1 SOL 364 9.097 19.827 25.370 1.00 0.00 H +ATOM 1095 HW2 SOL 364 10.251 18.762 25.452 1.00 0.00 H +ATOM 1096 OW SOL 365 14.658 26.293 14.899 1.00 0.00 O +ATOM 1097 HW1 SOL 365 14.872 25.976 13.975 1.00 0.00 H +ATOM 1098 HW2 SOL 365 15.201 27.127 14.994 1.00 0.00 H +ATOM 1099 OW SOL 366 13.759 14.754 20.145 1.00 0.00 O +ATOM 1100 HW1 SOL 366 13.554 14.035 19.482 1.00 0.00 H +ATOM 1101 HW2 SOL 366 14.756 14.731 20.219 1.00 0.00 H +ATOM 1102 OW SOL 367 12.001 14.814 10.866 1.00 0.00 O +ATOM 1103 HW1 SOL 367 12.869 14.379 10.626 1.00 0.00 H +ATOM 1104 HW2 SOL 367 11.604 15.053 9.980 1.00 0.00 H +ATOM 1105 OW SOL 368 18.668 20.118 8.220 1.00 0.00 O +ATOM 1106 HW1 SOL 368 17.814 20.193 8.735 1.00 0.00 H +ATOM 1107 HW2 SOL 368 18.404 19.611 7.399 1.00 0.00 H +ATOM 1108 OW SOL 369 23.926 13.005 24.371 1.00 0.00 O +ATOM 1109 HW1 SOL 369 23.334 13.133 23.575 1.00 0.00 H +ATOM 1110 HW2 SOL 369 24.838 12.905 23.974 1.00 0.00 H +ATOM 1111 OW SOL 370 23.517 7.462 17.110 1.00 0.00 O +ATOM 1112 HW1 SOL 370 24.488 7.690 17.189 1.00 0.00 H +ATOM 1113 HW2 SOL 370 23.088 8.336 16.880 1.00 0.00 H +ATOM 1114 OW SOL 371 26.357 18.637 14.769 1.00 0.00 O +ATOM 1115 HW1 SOL 371 26.316 19.578 14.433 1.00 0.00 H +ATOM 1116 HW2 SOL 371 27.258 18.319 14.472 1.00 0.00 H +ATOM 1117 OW SOL 372 21.116 28.517 20.056 1.00 0.00 O +ATOM 1118 HW1 SOL 372 20.534 27.824 19.631 1.00 0.00 H +ATOM 1119 HW2 SOL 372 21.533 28.985 19.277 1.00 0.00 H +ATOM 1120 OW SOL 373 27.604 11.145 20.199 1.00 0.00 O +ATOM 1121 HW1 SOL 373 27.072 11.634 20.889 1.00 0.00 H +ATOM 1122 HW2 SOL 373 28.093 10.450 20.726 1.00 0.00 H +ATOM 1123 OW SOL 374 11.692 16.705 31.095 1.00 0.00 O +ATOM 1124 HW1 SOL 374 10.808 16.892 30.666 1.00 0.00 H +ATOM 1125 HW2 SOL 374 12.254 16.366 30.340 1.00 0.00 H +ATOM 1126 OW SOL 375 17.350 29.821 30.443 1.00 0.00 O +ATOM 1127 HW1 SOL 375 17.988 29.961 29.686 1.00 0.00 H +ATOM 1128 HW2 SOL 375 17.740 29.048 30.941 1.00 0.00 H +ATOM 1129 OW SOL 376 16.689 13.349 21.122 1.00 0.00 O +ATOM 1130 HW1 SOL 376 16.772 12.656 21.838 1.00 0.00 H +ATOM 1131 HW2 SOL 376 16.237 14.113 21.584 1.00 0.00 H +ATOM 1132 OW SOL 377 15.870 18.012 32.581 1.00 0.00 O +ATOM 1133 HW1 SOL 377 15.987 18.011 31.588 1.00 0.00 H +ATOM 1134 HW2 SOL 377 16.784 17.796 32.926 1.00 0.00 H +ATOM 1135 OW SOL 378 18.304 16.070 15.111 1.00 0.00 O +ATOM 1136 HW1 SOL 378 18.299 17.006 14.760 1.00 0.00 H +ATOM 1137 HW2 SOL 378 17.907 15.536 14.364 1.00 0.00 H +ATOM 1138 OW SOL 379 18.903 20.198 10.486 1.00 0.00 O +ATOM 1139 HW1 SOL 379 19.030 19.297 10.901 1.00 0.00 H +ATOM 1140 HW2 SOL 379 19.667 20.733 10.846 1.00 0.00 H +ATOM 1141 OW SOL 380 22.502 15.710 17.837 1.00 0.00 O +ATOM 1142 HW1 SOL 380 22.313 15.970 18.784 1.00 0.00 H +ATOM 1143 HW2 SOL 380 22.606 16.588 17.368 1.00 0.00 H +ATOM 1144 OW SOL 381 29.683 30.062 19.831 1.00 0.00 O +ATOM 1145 HW1 SOL 381 29.674 29.784 20.792 1.00 0.00 H +ATOM 1146 HW2 SOL 381 28.829 30.570 19.724 1.00 0.00 H +ATOM 1147 OW SOL 382 26.170 27.205 27.204 1.00 0.00 O +ATOM 1148 HW1 SOL 382 26.836 26.494 27.429 1.00 0.00 H +ATOM 1149 HW2 SOL 382 25.555 27.210 27.993 1.00 0.00 H +ATOM 1150 OW SOL 383 16.106 13.386 18.542 1.00 0.00 O +ATOM 1151 HW1 SOL 383 16.962 13.868 18.728 1.00 0.00 H +ATOM 1152 HW2 SOL 383 15.997 12.785 19.334 1.00 0.00 H +ATOM 1153 OW SOL 384 18.518 21.201 17.289 1.00 0.00 O +ATOM 1154 HW1 SOL 384 18.236 20.768 16.433 1.00 0.00 H +ATOM 1155 HW2 SOL 384 19.194 21.879 17.000 1.00 0.00 H +ATOM 1156 OW SOL 385 27.338 17.916 28.534 1.00 0.00 O +ATOM 1157 HW1 SOL 385 27.345 17.201 29.232 1.00 0.00 H +ATOM 1158 HW2 SOL 385 27.179 18.754 29.056 1.00 0.00 H +ATOM 1159 OW SOL 386 22.872 26.440 9.393 1.00 0.00 O +ATOM 1160 HW1 SOL 386 22.770 25.847 10.192 1.00 0.00 H +ATOM 1161 HW2 SOL 386 22.487 27.312 9.696 1.00 0.00 H +ATOM 1162 OW SOL 387 26.300 16.482 16.316 1.00 0.00 O +ATOM 1163 HW1 SOL 387 25.677 16.528 17.097 1.00 0.00 H +ATOM 1164 HW2 SOL 387 25.909 15.761 15.744 1.00 0.00 H +ATOM 1165 OW SOL 388 25.715 22.803 30.761 1.00 0.00 O +ATOM 1166 HW1 SOL 388 26.272 21.975 30.708 1.00 0.00 H +ATOM 1167 HW2 SOL 388 26.349 23.531 30.501 1.00 0.00 H +ATOM 1168 OW SOL 389 24.335 9.089 13.169 1.00 0.00 O +ATOM 1169 HW1 SOL 389 24.710 8.808 14.052 1.00 0.00 H +ATOM 1170 HW2 SOL 389 24.584 8.337 12.558 1.00 0.00 H +ATOM 1171 OW SOL 390 19.492 13.050 28.693 1.00 0.00 O +ATOM 1172 HW1 SOL 390 18.690 12.532 28.990 1.00 0.00 H +ATOM 1173 HW2 SOL 390 19.954 12.428 28.062 1.00 0.00 H +ATOM 1174 OW SOL 391 15.319 18.192 20.811 1.00 0.00 O +ATOM 1175 HW1 SOL 391 15.078 18.658 19.960 1.00 0.00 H +ATOM 1176 HW2 SOL 391 16.106 18.708 21.148 1.00 0.00 H +ATOM 1177 OW SOL 392 10.011 10.867 21.045 1.00 0.00 O +ATOM 1178 HW1 SOL 392 10.224 10.284 20.261 1.00 0.00 H +ATOM 1179 HW2 SOL 392 9.590 11.674 20.630 1.00 0.00 H +ATOM 1180 OW SOL 393 29.350 11.459 25.227 1.00 0.00 O +ATOM 1181 HW1 SOL 393 30.300 11.760 25.311 1.00 0.00 H +ATOM 1182 HW2 SOL 393 29.123 11.659 24.275 1.00 0.00 H +ATOM 1183 OW SOL 394 12.469 18.947 30.412 1.00 0.00 O +ATOM 1184 HW1 SOL 394 11.739 19.586 30.172 1.00 0.00 H +ATOM 1185 HW2 SOL 394 12.924 18.769 29.540 1.00 0.00 H +ATOM 1186 OW SOL 395 27.922 15.175 20.298 1.00 0.00 O +ATOM 1187 HW1 SOL 395 27.229 15.856 20.059 1.00 0.00 H +ATOM 1188 HW2 SOL 395 27.389 14.420 20.680 1.00 0.00 H +ATOM 1189 OW SOL 396 16.812 9.336 28.303 1.00 0.00 O +ATOM 1190 HW1 SOL 396 16.960 9.171 29.278 1.00 0.00 H +ATOM 1191 HW2 SOL 396 16.286 8.540 28.006 1.00 0.00 H +ATOM 1192 OW SOL 397 15.418 29.692 28.828 1.00 0.00 O +ATOM 1193 HW1 SOL 397 16.073 30.447 28.800 1.00 0.00 H +ATOM 1194 HW2 SOL 397 15.156 29.643 29.792 1.00 0.00 H +ATOM 1195 OW SOL 398 27.811 30.191 14.603 1.00 0.00 O +ATOM 1196 HW1 SOL 398 27.420 31.110 14.628 1.00 0.00 H +ATOM 1197 HW2 SOL 398 27.684 29.906 13.653 1.00 0.00 H +ATOM 1198 OW SOL 399 11.736 20.569 9.793 1.00 0.00 O +ATOM 1199 HW1 SOL 399 11.736 20.456 8.800 1.00 0.00 H +ATOM 1200 HW2 SOL 399 10.834 20.237 10.069 1.00 0.00 H +ATOM 1201 OW SOL 400 15.485 14.225 11.483 1.00 0.00 O +ATOM 1202 HW1 SOL 400 15.008 14.268 10.605 1.00 0.00 H +ATOM 1203 HW2 SOL 400 16.443 14.371 11.237 1.00 0.00 H +ATOM 1204 OW SOL 401 12.709 30.471 13.919 1.00 0.00 O +ATOM 1205 HW1 SOL 401 11.788 30.503 14.307 1.00 0.00 H +ATOM 1206 HW2 SOL 401 13.084 29.615 14.272 1.00 0.00 H +ATOM 1207 OW SOL 402 31.111 20.994 19.932 1.00 0.00 O +ATOM 1208 HW1 SOL 402 31.576 21.475 20.675 1.00 0.00 H +ATOM 1209 HW2 SOL 402 30.467 20.394 20.407 1.00 0.00 H +ATOM 1210 OW SOL 403 24.062 30.747 23.377 1.00 0.00 O +ATOM 1211 HW1 SOL 403 24.332 31.552 23.905 1.00 0.00 H +ATOM 1212 HW2 SOL 403 24.483 30.900 22.483 1.00 0.00 H +ATOM 1213 OW SOL 404 18.431 11.951 18.140 1.00 0.00 O +ATOM 1214 HW1 SOL 404 17.742 11.640 17.485 1.00 0.00 H +ATOM 1215 HW2 SOL 404 17.895 12.194 18.948 1.00 0.00 H +ATOM 1216 OW SOL 405 16.283 31.157 26.623 1.00 0.00 O +ATOM 1217 HW1 SOL 405 16.910 31.868 26.305 1.00 0.00 H +ATOM 1218 HW2 SOL 405 16.305 30.478 25.890 1.00 0.00 H +ATOM 1219 OW SOL 406 18.803 21.710 12.232 1.00 0.00 O +ATOM 1220 HW1 SOL 406 18.994 22.675 12.415 1.00 0.00 H +ATOM 1221 HW2 SOL 406 17.880 21.581 12.593 1.00 0.00 H +ATOM 1222 OW SOL 407 11.286 24.629 11.978 1.00 0.00 O +ATOM 1223 HW1 SOL 407 10.390 25.020 12.189 1.00 0.00 H +ATOM 1224 HW2 SOL 407 11.927 25.339 12.271 1.00 0.00 H +ATOM 1225 OW SOL 408 25.149 18.535 17.370 1.00 0.00 O +ATOM 1226 HW1 SOL 408 25.862 18.381 16.686 1.00 0.00 H +ATOM 1227 HW2 SOL 408 24.761 19.420 17.110 1.00 0.00 H +ATOM 1228 OW SOL 409 19.328 20.068 13.042 1.00 0.00 O +ATOM 1229 HW1 SOL 409 18.576 19.495 12.717 1.00 0.00 H +ATOM 1230 HW2 SOL 409 19.812 19.477 13.687 1.00 0.00 H +ATOM 1231 OW SOL 410 21.237 25.471 27.521 1.00 0.00 O +ATOM 1232 HW1 SOL 410 21.435 24.646 28.050 1.00 0.00 H +ATOM 1233 HW2 SOL 410 20.625 25.992 28.116 1.00 0.00 H +ATOM 1234 OW SOL 411 12.074 20.398 27.067 1.00 0.00 O +ATOM 1235 HW1 SOL 411 12.603 19.796 27.664 1.00 0.00 H +ATOM 1236 HW2 SOL 411 11.489 20.905 27.700 1.00 0.00 H +ATOM 1237 OW SOL 412 13.812 21.589 25.906 1.00 0.00 O +ATOM 1238 HW1 SOL 412 12.974 21.098 25.669 1.00 0.00 H +ATOM 1239 HW2 SOL 412 14.451 20.860 26.151 1.00 0.00 H +ATOM 1240 OW SOL 413 25.688 30.704 27.010 1.00 0.00 O +ATOM 1241 HW1 SOL 413 25.097 30.864 26.221 1.00 0.00 H +ATOM 1242 HW2 SOL 413 25.225 31.186 27.754 1.00 0.00 H +ATOM 1243 OW SOL 414 13.208 18.032 32.434 1.00 0.00 O +ATOM 1244 HW1 SOL 414 14.078 18.249 31.993 1.00 0.00 H +ATOM 1245 HW2 SOL 414 12.655 18.852 32.282 1.00 0.00 H +ATOM 1246 OW SOL 415 7.108 16.434 22.080 1.00 0.00 O +ATOM 1247 HW1 SOL 415 7.484 17.358 22.011 1.00 0.00 H +ATOM 1248 HW2 SOL 415 7.761 15.875 21.567 1.00 0.00 H +ATOM 1249 OW SOL 416 14.774 20.761 17.474 1.00 0.00 O +ATOM 1250 HW1 SOL 416 14.703 19.946 18.048 1.00 0.00 H +ATOM 1251 HW2 SOL 416 15.365 20.469 16.722 1.00 0.00 H +ATOM 1252 OW SOL 417 25.788 20.505 20.425 1.00 0.00 O +ATOM 1253 HW1 SOL 417 24.806 20.348 20.318 1.00 0.00 H +ATOM 1254 HW2 SOL 417 26.199 19.650 20.108 1.00 0.00 H +ATOM 1255 OW SOL 418 9.167 20.054 18.678 1.00 0.00 O +ATOM 1256 HW1 SOL 418 8.771 19.152 18.849 1.00 0.00 H +ATOM 1257 HW2 SOL 418 10.121 19.854 18.456 1.00 0.00 H +ATOM 1258 OW SOL 419 9.447 26.979 21.497 1.00 0.00 O +ATOM 1259 HW1 SOL 419 9.976 26.656 20.713 1.00 0.00 H +ATOM 1260 HW2 SOL 419 8.504 26.750 21.255 1.00 0.00 H +ATOM 1261 OW SOL 420 18.650 8.256 26.647 1.00 0.00 O +ATOM 1262 HW1 SOL 420 19.333 8.559 27.311 1.00 0.00 H +ATOM 1263 HW2 SOL 420 18.178 9.099 26.392 1.00 0.00 H +ATOM 1264 OW SOL 421 15.908 15.453 17.743 1.00 0.00 O +ATOM 1265 HW1 SOL 421 15.775 14.632 17.188 1.00 0.00 H +ATOM 1266 HW2 SOL 421 15.282 15.322 18.512 1.00 0.00 H +ATOM 1267 OW SOL 422 11.188 23.471 19.185 1.00 0.00 O +ATOM 1268 HW1 SOL 422 11.046 23.246 18.221 1.00 0.00 H +ATOM 1269 HW2 SOL 422 10.980 22.615 19.659 1.00 0.00 H +ATOM 1270 OW SOL 423 29.510 25.440 22.026 1.00 0.00 O +ATOM 1271 HW1 SOL 423 28.759 25.853 22.540 1.00 0.00 H +ATOM 1272 HW2 SOL 423 29.659 24.566 22.487 1.00 0.00 H +ATOM 1273 OW SOL 424 15.725 17.515 14.579 1.00 0.00 O +ATOM 1274 HW1 SOL 424 15.688 18.487 14.813 1.00 0.00 H +ATOM 1275 HW2 SOL 424 16.285 17.119 15.307 1.00 0.00 H +ATOM 1276 OW SOL 425 18.623 29.156 26.325 1.00 0.00 O +ATOM 1277 HW1 SOL 425 18.714 29.852 25.612 1.00 0.00 H +ATOM 1278 HW2 SOL 425 18.470 28.311 25.812 1.00 0.00 H +ATOM 1279 OW SOL 426 21.211 9.001 15.334 1.00 0.00 O +ATOM 1280 HW1 SOL 426 20.960 8.753 14.399 1.00 0.00 H +ATOM 1281 HW2 SOL 426 21.147 9.998 15.339 1.00 0.00 H +ATOM 1282 OW SOL 427 19.904 17.241 23.554 1.00 0.00 O +ATOM 1283 HW1 SOL 427 19.290 16.757 22.932 1.00 0.00 H +ATOM 1284 HW2 SOL 427 19.962 16.637 24.348 1.00 0.00 H +ATOM 1285 OW SOL 428 21.748 11.771 22.640 1.00 0.00 O +ATOM 1286 HW1 SOL 428 21.852 12.618 22.120 1.00 0.00 H +ATOM 1287 HW2 SOL 428 21.788 12.072 23.593 1.00 0.00 H +ATOM 1288 OW SOL 429 24.392 10.424 15.644 1.00 0.00 O +ATOM 1289 HW1 SOL 429 25.310 10.820 15.617 1.00 0.00 H +ATOM 1290 HW2 SOL 429 23.962 10.771 14.811 1.00 0.00 H +ATOM 1291 OW SOL 430 10.495 24.796 24.754 1.00 0.00 O +ATOM 1292 HW1 SOL 430 9.585 25.143 24.981 1.00 0.00 H +ATOM 1293 HW2 SOL 430 11.113 25.458 25.178 1.00 0.00 H +ATOM 1294 OW SOL 431 25.149 15.809 11.203 1.00 0.00 O +ATOM 1295 HW1 SOL 431 24.365 15.298 10.851 1.00 0.00 H +ATOM 1296 HW2 SOL 431 24.776 16.298 11.992 1.00 0.00 H +ATOM 1297 OW SOL 432 22.707 30.090 25.598 1.00 0.00 O +ATOM 1298 HW1 SOL 432 22.038 29.827 26.292 1.00 0.00 H +ATOM 1299 HW2 SOL 432 23.157 30.890 25.995 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_interface/coords_2955.pdb b/examples/latte_interface/coords_2955.pdb new file mode 100644 index 00000000..04974ee5 --- /dev/null +++ b/examples/latte_interface/coords_2955.pdb @@ -0,0 +1,2961 @@ +TITLE my_single_water.xyz +REMARK THIS IS A SIMULATION BOX +CRYST1 31.230 31.230 31.230 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H HOH 0 15.009 16.295 15.615 1.00 0.00 H +ATOM 2 O HOH 1 15.427 15.434 15.615 1.00 0.00 O +ATOM 3 H HOH 0 16.408 15.115 15.615 1.00 0.00 H +ATOM 4 OW SOL 1 5.690 12.751 11.651 1.00 0.00 O +ATOM 5 HW1 SOL 1 4.760 12.681 11.281 1.00 0.00 H +ATOM 6 HW2 SOL 1 5.800 13.641 12.091 1.00 0.00 H +ATOM 7 OW SOL 2 15.551 15.111 7.030 1.00 0.00 O +ATOM 8 HW1 SOL 2 14.981 14.951 7.840 1.00 0.00 H +ATOM 9 HW2 SOL 2 14.961 15.211 6.230 1.00 0.00 H +ATOM 10 OW SOL 3 17.431 6.180 8.560 1.00 0.00 O +ATOM 11 HW1 SOL 3 17.761 7.120 8.560 1.00 0.00 H +ATOM 12 HW2 SOL 3 17.941 5.640 9.220 1.00 0.00 H +ATOM 13 OW SOL 4 11.351 7.030 7.170 1.00 0.00 O +ATOM 14 HW1 SOL 4 11.921 7.810 6.920 1.00 0.00 H +ATOM 15 HW2 SOL 4 10.751 7.290 7.930 1.00 0.00 H +ATOM 16 OW SOL 5 17.551 6.070 2.310 1.00 0.00 O +ATOM 17 HW1 SOL 5 17.431 5.940 1.320 1.00 0.00 H +ATOM 18 HW2 SOL 5 17.251 5.260 2.800 1.00 0.00 H +ATOM 19 OW SOL 6 7.680 11.441 10.231 1.00 0.00 O +ATOM 20 HW1 SOL 6 6.900 11.611 10.831 1.00 0.00 H +ATOM 21 HW2 SOL 6 8.020 12.311 9.871 1.00 0.00 H +ATOM 22 OW SOL 7 8.500 7.980 18.231 1.00 0.00 O +ATOM 23 HW1 SOL 7 8.460 8.740 18.881 1.00 0.00 H +ATOM 24 HW2 SOL 7 8.720 8.340 17.321 1.00 0.00 H +ATOM 25 OW SOL 8 6.850 10.121 6.650 1.00 0.00 O +ATOM 26 HW1 SOL 8 7.540 9.961 7.350 1.00 0.00 H +ATOM 27 HW2 SOL 8 6.120 10.691 7.030 1.00 0.00 H +ATOM 28 OW SOL 9 6.860 11.611 18.031 1.00 0.00 O +ATOM 29 HW1 SOL 9 7.460 12.401 18.171 1.00 0.00 H +ATOM 30 HW2 SOL 9 6.000 11.921 17.621 1.00 0.00 H +ATOM 31 OW SOL 10 14.601 15.051 13.391 1.00 0.00 O +ATOM 32 HW1 SOL 10 14.841 15.991 13.651 1.00 0.00 H +ATOM 33 HW2 SOL 10 14.441 14.511 14.211 1.00 0.00 H +ATOM 34 OW SOL 11 4.380 3.920 14.991 1.00 0.00 O +ATOM 35 HW1 SOL 11 5.200 3.360 15.081 1.00 0.00 H +ATOM 36 HW2 SOL 11 3.570 3.340 15.031 1.00 0.00 H +ATOM 37 OW SOL 12 16.031 4.470 7.370 1.00 0.00 O +ATOM 38 HW1 SOL 12 15.291 4.930 6.870 1.00 0.00 H +ATOM 39 HW2 SOL 12 16.541 5.150 7.900 1.00 0.00 H +ATOM 40 OW SOL 13 11.271 13.411 16.901 1.00 0.00 O +ATOM 41 HW1 SOL 13 11.741 13.411 17.781 1.00 0.00 H +ATOM 42 HW2 SOL 13 10.791 12.541 16.791 1.00 0.00 H +ATOM 43 OW SOL 14 2.400 10.911 8.860 1.00 0.00 O +ATOM 44 HW1 SOL 14 2.540 10.071 9.380 1.00 0.00 H +ATOM 45 HW2 SOL 14 1.850 11.551 9.410 1.00 0.00 H +ATOM 46 OW SOL 15 6.200 17.861 14.391 1.00 0.00 O +ATOM 47 HW1 SOL 15 5.280 17.691 14.741 1.00 0.00 H +ATOM 48 HW2 SOL 15 6.480 18.781 14.651 1.00 0.00 H +ATOM 49 OW SOL 16 6.060 9.641 1.230 1.00 0.00 O +ATOM 50 HW1 SOL 16 6.130 10.481 0.690 1.00 0.00 H +ATOM 51 HW2 SOL 16 6.520 9.771 2.110 1.00 0.00 H +ATOM 52 OW SOL 17 15.941 1.140 14.801 1.00 0.00 O +ATOM 53 HW1 SOL 17 15.761 1.810 14.081 1.00 0.00 H +ATOM 54 HW2 SOL 17 15.911 1.600 15.691 1.00 0.00 H +ATOM 55 OW SOL 18 1.220 6.430 5.630 1.00 0.00 O +ATOM 56 HW1 SOL 18 0.770 5.550 5.800 1.00 0.00 H +ATOM 57 HW2 SOL 18 1.210 6.970 6.470 1.00 0.00 H +ATOM 58 OW SOL 19 18.421 17.671 3.590 1.00 0.00 O +ATOM 59 HW1 SOL 19 18.961 17.381 4.390 1.00 0.00 H +ATOM 60 HW2 SOL 19 18.721 18.571 3.300 1.00 0.00 H +ATOM 61 OW SOL 20 16.891 9.220 6.120 1.00 0.00 O +ATOM 62 HW1 SOL 20 17.841 8.930 6.200 1.00 0.00 H +ATOM 63 HW2 SOL 20 16.811 9.870 5.370 1.00 0.00 H +ATOM 64 OW SOL 21 16.411 11.081 4.320 1.00 0.00 O +ATOM 65 HW1 SOL 21 17.271 11.101 3.800 1.00 0.00 H +ATOM 66 HW2 SOL 21 16.551 11.551 5.200 1.00 0.00 H +ATOM 67 OW SOL 22 1.130 7.370 15.971 1.00 0.00 O +ATOM 68 HW1 SOL 22 2.010 7.240 16.421 1.00 0.00 H +ATOM 69 HW2 SOL 22 1.000 8.340 15.751 1.00 0.00 H +ATOM 70 OW SOL 23 6.130 13.651 7.260 1.00 0.00 O +ATOM 71 HW1 SOL 23 5.640 12.781 7.350 1.00 0.00 H +ATOM 72 HW2 SOL 23 5.900 14.081 6.390 1.00 0.00 H +ATOM 73 OW SOL 24 12.931 12.281 14.231 1.00 0.00 O +ATOM 74 HW1 SOL 24 13.301 11.551 13.651 1.00 0.00 H +ATOM 75 HW2 SOL 24 13.451 12.331 15.081 1.00 0.00 H +ATOM 76 OW SOL 25 8.090 0.040 5.020 1.00 0.00 O +ATOM 77 HW1 SOL 25 8.490 0.950 4.930 1.00 0.00 H +ATOM 78 HW2 SOL 25 7.090 0.120 5.080 1.00 0.00 H +ATOM 79 OW SOL 26 15.251 9.991 1.900 1.00 0.00 O +ATOM 80 HW1 SOL 26 14.621 9.231 2.030 1.00 0.00 H +ATOM 81 HW2 SOL 26 15.731 10.171 2.760 1.00 0.00 H +ATOM 82 OW SOL 27 11.871 17.921 16.161 1.00 0.00 O +ATOM 83 HW1 SOL 27 12.111 18.521 15.401 1.00 0.00 H +ATOM 84 HW2 SOL 27 11.941 16.971 15.861 1.00 0.00 H +ATOM 85 OW SOL 28 3.170 2.510 18.011 1.00 0.00 O +ATOM 86 HW1 SOL 28 3.880 3.220 18.071 1.00 0.00 H +ATOM 87 HW2 SOL 28 2.290 2.900 18.291 1.00 0.00 H +ATOM 88 OW SOL 29 14.661 14.171 9.531 1.00 0.00 O +ATOM 89 HW1 SOL 29 14.071 14.231 10.331 1.00 0.00 H +ATOM 90 HW2 SOL 29 14.511 13.291 9.071 1.00 0.00 H +ATOM 91 OW SOL 30 16.671 17.141 5.720 1.00 0.00 O +ATOM 92 HW1 SOL 30 16.261 16.911 4.840 1.00 0.00 H +ATOM 93 HW2 SOL 30 16.491 16.401 6.370 1.00 0.00 H +ATOM 94 OW SOL 31 5.980 7.290 2.700 1.00 0.00 O +ATOM 95 HW1 SOL 31 6.220 7.980 2.020 1.00 0.00 H +ATOM 96 HW2 SOL 31 5.200 7.620 3.240 1.00 0.00 H +ATOM 97 OW SOL 32 12.811 3.450 9.441 1.00 0.00 O +ATOM 98 HW1 SOL 32 11.951 2.950 9.311 1.00 0.00 H +ATOM 99 HW2 SOL 32 13.431 2.910 10.001 1.00 0.00 H +ATOM 100 OW SOL 33 15.761 16.621 3.070 1.00 0.00 O +ATOM 101 HW1 SOL 33 16.651 17.081 3.100 1.00 0.00 H +ATOM 102 HW2 SOL 33 15.551 16.381 2.120 1.00 0.00 H +ATOM 103 OW SOL 34 8.070 6.050 14.651 1.00 0.00 O +ATOM 104 HW1 SOL 34 7.600 6.020 15.541 1.00 0.00 H +ATOM 105 HW2 SOL 34 7.560 5.500 13.991 1.00 0.00 H +ATOM 106 OW SOL 35 13.941 4.690 16.741 1.00 0.00 O +ATOM 107 HW1 SOL 35 13.741 5.120 17.621 1.00 0.00 H +ATOM 108 HW2 SOL 35 14.721 4.070 16.831 1.00 0.00 H +ATOM 109 OW SOL 36 9.731 8.900 15.721 1.00 0.00 O +ATOM 110 HW1 SOL 36 10.191 8.060 15.431 1.00 0.00 H +ATOM 111 HW2 SOL 36 9.171 9.240 14.971 1.00 0.00 H +ATOM 112 OW SOL 37 9.911 4.100 12.421 1.00 0.00 O +ATOM 113 HW1 SOL 37 9.141 4.440 12.961 1.00 0.00 H +ATOM 114 HW2 SOL 37 9.571 3.590 11.631 1.00 0.00 H +ATOM 115 OW SOL 38 10.411 7.010 4.290 1.00 0.00 O +ATOM 116 HW1 SOL 38 10.671 6.970 5.250 1.00 0.00 H +ATOM 117 HW2 SOL 38 9.561 6.500 4.150 1.00 0.00 H +ATOM 118 OW SOL 39 8.650 3.480 1.950 1.00 0.00 O +ATOM 119 HW1 SOL 39 9.240 4.110 1.460 1.00 0.00 H +ATOM 120 HW2 SOL 39 8.840 2.540 1.660 1.00 0.00 H +ATOM 121 OW SOL 40 17.191 5.850 18.311 1.00 0.00 O +ATOM 122 HW1 SOL 40 16.931 6.740 17.951 1.00 0.00 H +ATOM 123 HW2 SOL 40 17.171 5.170 17.581 1.00 0.00 H +ATOM 124 OW SOL 41 13.621 11.441 5.450 1.00 0.00 O +ATOM 125 HW1 SOL 41 14.451 11.151 4.970 1.00 0.00 H +ATOM 126 HW2 SOL 41 13.131 12.111 4.890 1.00 0.00 H +ATOM 127 OW SOL 42 5.500 1.960 8.850 1.00 0.00 O +ATOM 128 HW1 SOL 42 5.450 1.910 9.850 1.00 0.00 H +ATOM 129 HW2 SOL 42 5.520 2.920 8.560 1.00 0.00 H +ATOM 130 OW SOL 43 10.081 14.561 4.770 1.00 0.00 O +ATOM 131 HW1 SOL 43 9.621 15.281 4.250 1.00 0.00 H +ATOM 132 HW2 SOL 43 10.041 14.761 5.750 1.00 0.00 H +ATOM 133 OW SOL 44 3.510 18.011 8.530 1.00 0.00 O +ATOM 134 HW1 SOL 44 4.010 17.151 8.590 1.00 0.00 H +ATOM 135 HW2 SOL 44 4.160 18.781 8.500 1.00 0.00 H +ATOM 136 OW SOL 45 17.951 10.661 8.730 1.00 0.00 O +ATOM 137 HW1 SOL 45 17.331 10.511 7.970 1.00 0.00 H +ATOM 138 HW2 SOL 45 17.431 10.771 9.580 1.00 0.00 H +ATOM 139 OW SOL 46 12.271 15.501 15.061 1.00 0.00 O +ATOM 140 HW1 SOL 46 12.331 14.731 15.701 1.00 0.00 H +ATOM 141 HW2 SOL 46 11.751 15.241 14.261 1.00 0.00 H +ATOM 142 OW SOL 47 3.210 9.431 2.420 1.00 0.00 O +ATOM 143 HW1 SOL 47 4.030 9.821 2.000 1.00 0.00 H +ATOM 144 HW2 SOL 47 2.940 8.611 1.930 1.00 0.00 H +ATOM 145 OW SOL 48 14.581 7.350 7.280 1.00 0.00 O +ATOM 146 HW1 SOL 48 14.531 6.700 8.030 1.00 0.00 H +ATOM 147 HW2 SOL 48 15.381 7.940 7.410 1.00 0.00 H +ATOM 148 OW SOL 49 4.610 12.661 17.271 1.00 0.00 O +ATOM 149 HW1 SOL 49 4.110 12.671 16.411 1.00 0.00 H +ATOM 150 HW2 SOL 49 3.980 12.481 18.031 1.00 0.00 H +ATOM 151 OW SOL 50 11.111 17.761 2.370 1.00 0.00 O +ATOM 152 HW1 SOL 50 10.511 17.141 2.870 1.00 0.00 H +ATOM 153 HW2 SOL 50 11.421 17.321 1.520 1.00 0.00 H +ATOM 154 OW SOL 51 2.020 2.850 14.981 1.00 0.00 O +ATOM 155 HW1 SOL 51 1.220 3.450 14.851 1.00 0.00 H +ATOM 156 HW2 SOL 51 1.920 2.360 15.841 1.00 0.00 H +ATOM 157 OW SOL 52 16.321 13.771 0.810 1.00 0.00 O +ATOM 158 HW1 SOL 52 16.001 14.711 0.710 1.00 0.00 H +ATOM 159 HW2 SOL 52 15.561 13.141 0.690 1.00 0.00 H +ATOM 160 OW SOL 53 4.640 17.431 3.230 1.00 0.00 O +ATOM 161 HW1 SOL 53 4.970 17.821 4.090 1.00 0.00 H +ATOM 162 HW2 SOL 53 5.400 17.361 2.580 1.00 0.00 H +ATOM 163 OW SOL 54 14.001 1.070 4.260 1.00 0.00 O +ATOM 164 HW1 SOL 54 13.761 0.700 3.360 1.00 0.00 H +ATOM 165 HW2 SOL 54 14.991 1.230 4.300 1.00 0.00 H +ATOM 166 OW SOL 55 2.490 17.851 12.411 1.00 0.00 O +ATOM 167 HW1 SOL 55 3.060 17.201 12.911 1.00 0.00 H +ATOM 168 HW2 SOL 55 2.330 17.521 11.481 1.00 0.00 H +ATOM 169 OW SOL 56 9.401 16.981 9.040 1.00 0.00 O +ATOM 170 HW1 SOL 56 10.201 16.411 9.250 1.00 0.00 H +ATOM 171 HW2 SOL 56 8.911 16.581 8.270 1.00 0.00 H +ATOM 172 OW SOL 57 3.820 7.000 4.800 1.00 0.00 O +ATOM 173 HW1 SOL 57 4.270 6.100 4.770 1.00 0.00 H +ATOM 174 HW2 SOL 57 2.880 6.890 5.130 1.00 0.00 H +ATOM 175 OW SOL 58 15.471 2.220 17.291 1.00 0.00 O +ATOM 176 HW1 SOL 58 15.421 2.590 18.211 1.00 0.00 H +ATOM 177 HW2 SOL 58 14.751 1.530 17.171 1.00 0.00 H +ATOM 178 OW SOL 59 6.140 1.220 1.170 1.00 0.00 O +ATOM 179 HW1 SOL 59 7.120 1.000 1.240 1.00 0.00 H +ATOM 180 HW2 SOL 59 5.830 1.050 0.240 1.00 0.00 H +ATOM 181 OW SOL 60 7.810 2.640 17.491 1.00 0.00 O +ATOM 182 HW1 SOL 60 8.480 2.030 17.921 1.00 0.00 H +ATOM 183 HW2 SOL 60 7.080 2.830 18.141 1.00 0.00 H +ATOM 184 OW SOL 61 8.880 15.141 11.951 1.00 0.00 O +ATOM 185 HW1 SOL 61 8.650 14.891 11.011 1.00 0.00 H +ATOM 186 HW2 SOL 61 9.490 14.451 12.341 1.00 0.00 H +ATOM 187 OW SOL 62 13.511 5.900 14.331 1.00 0.00 O +ATOM 188 HW1 SOL 62 13.791 5.470 15.181 1.00 0.00 H +ATOM 189 HW2 SOL 62 13.761 6.860 14.341 1.00 0.00 H +ATOM 190 OW SOL 63 8.030 14.021 9.240 1.00 0.00 O +ATOM 191 HW1 SOL 63 8.930 14.161 8.820 1.00 0.00 H +ATOM 192 HW2 SOL 63 7.320 14.041 8.530 1.00 0.00 H +ATOM 193 OW SOL 64 9.220 5.030 8.990 1.00 0.00 O +ATOM 194 HW1 SOL 64 8.970 4.940 8.030 1.00 0.00 H +ATOM 195 HW2 SOL 64 9.700 4.210 9.300 1.00 0.00 H +ATOM 196 OW SOL 65 5.390 0.640 5.120 1.00 0.00 O +ATOM 197 HW1 SOL 65 4.580 0.650 5.700 1.00 0.00 H +ATOM 198 HW2 SOL 65 5.420 1.470 4.570 1.00 0.00 H +ATOM 199 OW SOL 66 14.341 11.881 0.410 1.00 0.00 O +ATOM 200 HW1 SOL 66 14.661 11.121 0.980 1.00 0.00 H +ATOM 201 HW2 SOL 66 13.421 12.151 0.710 1.00 0.00 H +ATOM 202 OW SOL 67 2.970 0.350 1.710 1.00 0.00 O +ATOM 203 HW1 SOL 67 3.460 1.190 1.500 1.00 0.00 H +ATOM 204 HW2 SOL 67 3.590 -0.300 2.160 1.00 0.00 H +ATOM 205 OW SOL 68 9.351 2.360 4.800 1.00 0.00 O +ATOM 206 HW1 SOL 68 8.871 2.770 4.020 1.00 0.00 H +ATOM 207 HW2 SOL 68 10.341 2.340 4.610 1.00 0.00 H +ATOM 208 OW SOL 69 10.761 6.830 14.641 1.00 0.00 O +ATOM 209 HW1 SOL 69 9.961 6.220 14.671 1.00 0.00 H +ATOM 210 HW2 SOL 69 11.571 6.300 14.401 1.00 0.00 H +ATOM 211 OW SOL 70 12.271 15.701 7.930 1.00 0.00 O +ATOM 212 HW1 SOL 70 12.481 16.441 7.280 1.00 0.00 H +ATOM 213 HW2 SOL 70 12.951 15.701 8.660 1.00 0.00 H +ATOM 214 OW SOL 71 4.590 11.521 7.410 1.00 0.00 O +ATOM 215 HW1 SOL 71 3.880 11.251 8.060 1.00 0.00 H +ATOM 216 HW2 SOL 71 4.330 11.241 6.480 1.00 0.00 H +ATOM 217 OW SOL 72 12.711 17.971 5.910 1.00 0.00 O +ATOM 218 HW1 SOL 72 13.151 18.611 5.270 1.00 0.00 H +ATOM 219 HW2 SOL 72 12.211 18.491 6.610 1.00 0.00 H +ATOM 220 OW SOL 73 10.321 5.490 0.160 1.00 0.00 O +ATOM 221 HW1 SOL 73 9.911 6.310 -0.230 1.00 0.00 H +ATOM 222 HW2 SOL 73 10.961 5.750 0.890 1.00 0.00 H +ATOM 223 OW SOL 74 5.610 2.220 11.471 1.00 0.00 O +ATOM 224 HW1 SOL 74 5.990 1.380 11.841 1.00 0.00 H +ATOM 225 HW2 SOL 74 4.730 2.410 11.911 1.00 0.00 H +ATOM 226 OW SOL 75 8.660 4.540 6.420 1.00 0.00 O +ATOM 227 HW1 SOL 75 8.340 5.260 5.800 1.00 0.00 H +ATOM 228 HW2 SOL 75 8.900 3.730 5.890 1.00 0.00 H +ATOM 229 OW SOL 76 10.171 0.390 7.530 1.00 0.00 O +ATOM 230 HW1 SOL 76 9.451 0.440 6.840 1.00 0.00 H +ATOM 231 HW2 SOL 76 9.931 -0.300 8.220 1.00 0.00 H +ATOM 232 OW SOL 77 14.291 11.731 8.670 1.00 0.00 O +ATOM 233 HW1 SOL 77 13.741 10.891 8.600 1.00 0.00 H +ATOM 234 HW2 SOL 77 14.551 12.021 7.750 1.00 0.00 H +ATOM 235 OW SOL 78 14.661 5.900 9.921 1.00 0.00 O +ATOM 236 HW1 SOL 78 14.361 4.950 9.991 1.00 0.00 H +ATOM 237 HW2 SOL 78 15.391 6.060 10.581 1.00 0.00 H +ATOM 238 OW SOL 79 18.571 8.330 3.770 1.00 0.00 O +ATOM 239 HW1 SOL 79 18.991 7.690 4.410 1.00 0.00 H +ATOM 240 HW2 SOL 79 18.191 7.820 2.990 1.00 0.00 H +ATOM 241 OW SOL 80 4.880 13.851 1.740 1.00 0.00 O +ATOM 242 HW1 SOL 80 4.010 13.701 2.210 1.00 0.00 H +ATOM 243 HW2 SOL 80 4.710 14.111 0.790 1.00 0.00 H +ATOM 244 OW SOL 81 16.641 12.801 6.570 1.00 0.00 O +ATOM 245 HW1 SOL 81 17.631 12.881 6.710 1.00 0.00 H +ATOM 246 HW2 SOL 81 16.191 13.641 6.880 1.00 0.00 H +ATOM 247 OW SOL 82 13.901 5.750 0.780 1.00 0.00 O +ATOM 248 HW1 SOL 82 13.361 5.540 1.590 1.00 0.00 H +ATOM 249 HW2 SOL 82 14.811 5.340 0.870 1.00 0.00 H +ATOM 250 OW SOL 83 5.270 2.560 3.280 1.00 0.00 O +ATOM 251 HW1 SOL 83 5.540 1.970 2.530 1.00 0.00 H +ATOM 252 HW2 SOL 83 5.270 3.510 2.970 1.00 0.00 H +ATOM 253 OW SOL 84 17.541 12.231 15.881 1.00 0.00 O +ATOM 254 HW1 SOL 84 18.451 11.841 15.751 1.00 0.00 H +ATOM 255 HW2 SOL 84 17.621 13.191 16.121 1.00 0.00 H +ATOM 256 OW SOL 85 10.641 13.471 13.401 1.00 0.00 O +ATOM 257 HW1 SOL 85 9.841 13.241 13.951 1.00 0.00 H +ATOM 258 HW2 SOL 85 11.471 13.211 13.891 1.00 0.00 H +ATOM 259 OW SOL 86 11.111 11.951 11.001 1.00 0.00 O +ATOM 260 HW1 SOL 86 10.711 12.391 11.811 1.00 0.00 H +ATOM 261 HW2 SOL 86 10.701 12.321 10.171 1.00 0.00 H +ATOM 262 OW SOL 87 16.381 10.991 10.791 1.00 0.00 O +ATOM 263 HW1 SOL 87 16.431 11.801 11.381 1.00 0.00 H +ATOM 264 HW2 SOL 87 15.521 11.011 10.281 1.00 0.00 H +ATOM 265 OW SOL 88 9.150 0.890 14.021 1.00 0.00 O +ATOM 266 HW1 SOL 88 9.400 0.690 13.071 1.00 0.00 H +ATOM 267 HW2 SOL 88 9.870 1.450 14.441 1.00 0.00 H +ATOM 268 OW SOL 89 9.801 11.161 17.191 1.00 0.00 O +ATOM 269 HW1 SOL 89 8.811 11.221 17.291 1.00 0.00 H +ATOM 270 HW2 SOL 89 10.031 10.361 16.631 1.00 0.00 H +ATOM 271 OW SOL 90 7.050 10.501 3.680 1.00 0.00 O +ATOM 272 HW1 SOL 90 6.910 10.571 4.670 1.00 0.00 H +ATOM 273 HW2 SOL 90 7.890 9.991 3.500 1.00 0.00 H +ATOM 274 OW SOL 91 4.100 8.130 12.511 1.00 0.00 O +ATOM 275 HW1 SOL 91 4.960 8.250 13.011 1.00 0.00 H +ATOM 276 HW2 SOL 91 3.680 7.260 12.781 1.00 0.00 H +ATOM 277 OW SOL 92 12.741 3.860 12.621 1.00 0.00 O +ATOM 278 HW1 SOL 92 12.951 4.600 13.261 1.00 0.00 H +ATOM 279 HW2 SOL 92 11.851 4.030 12.191 1.00 0.00 H +ATOM 280 OW SOL 93 0.640 15.641 13.311 1.00 0.00 O +ATOM 281 HW1 SOL 93 0.180 16.461 12.971 1.00 0.00 H +ATOM 282 HW2 SOL 93 1.620 15.831 13.401 1.00 0.00 H +ATOM 283 OW SOL 94 3.670 11.001 5.010 1.00 0.00 O +ATOM 284 HW1 SOL 94 3.600 11.831 4.450 1.00 0.00 H +ATOM 285 HW2 SOL 94 3.710 10.201 4.410 1.00 0.00 H +ATOM 286 OW SOL 95 5.660 5.370 8.650 1.00 0.00 O +ATOM 287 HW1 SOL 95 5.780 6.030 7.910 1.00 0.00 H +ATOM 288 HW2 SOL 95 6.120 5.710 9.480 1.00 0.00 H +ATOM 289 OW SOL 96 12.521 13.481 3.880 1.00 0.00 O +ATOM 290 HW1 SOL 96 13.021 14.251 4.280 1.00 0.00 H +ATOM 291 HW2 SOL 96 11.571 13.501 4.200 1.00 0.00 H +ATOM 292 OW SOL 97 12.721 14.451 11.421 1.00 0.00 O +ATOM 293 HW1 SOL 97 13.191 14.581 12.291 1.00 0.00 H +ATOM 294 HW2 SOL 97 12.061 13.711 11.511 1.00 0.00 H +ATOM 295 OW SOL 98 15.821 6.390 4.720 1.00 0.00 O +ATOM 296 HW1 SOL 98 15.511 7.000 5.450 1.00 0.00 H +ATOM 297 HW2 SOL 98 16.321 6.910 4.030 1.00 0.00 H +ATOM 298 OW SOL 99 3.540 15.101 13.291 1.00 0.00 O +ATOM 299 HW1 SOL 99 3.330 14.661 12.421 1.00 0.00 H +ATOM 300 HW2 SOL 99 4.510 15.361 13.321 1.00 0.00 H +ATOM 301 OW SOL 100 4.020 7.510 15.981 1.00 0.00 O +ATOM 302 HW1 SOL 100 4.700 8.060 15.511 1.00 0.00 H +ATOM 303 HW2 SOL 100 4.420 6.630 16.251 1.00 0.00 H +ATOM 304 OW SOL 101 15.871 7.790 16.701 1.00 0.00 O +ATOM 305 HW1 SOL 101 14.951 8.170 16.651 1.00 0.00 H +ATOM 306 HW2 SOL 101 16.471 8.260 16.051 1.00 0.00 H +ATOM 307 OW SOL 102 10.131 1.050 17.701 1.00 0.00 O +ATOM 308 HW1 SOL 102 10.191 1.900 17.181 1.00 0.00 H +ATOM 309 HW2 SOL 102 10.451 0.290 17.131 1.00 0.00 H +ATOM 310 OW SOL 103 5.040 0.500 17.401 1.00 0.00 O +ATOM 311 HW1 SOL 103 4.620 -0.070 16.701 1.00 0.00 H +ATOM 312 HW2 SOL 103 4.380 1.190 17.721 1.00 0.00 H +ATOM 313 OW SOL 104 5.730 8.700 10.291 1.00 0.00 O +ATOM 314 HW1 SOL 104 6.170 9.590 10.201 1.00 0.00 H +ATOM 315 HW2 SOL 104 5.100 8.700 11.061 1.00 0.00 H +ATOM 316 OW SOL 105 13.601 8.620 10.451 1.00 0.00 O +ATOM 317 HW1 SOL 105 12.851 8.620 9.791 1.00 0.00 H +ATOM 318 HW2 SOL 105 13.971 7.700 10.541 1.00 0.00 H +ATOM 319 OW SOL 106 12.091 5.250 2.750 1.00 0.00 O +ATOM 320 HW1 SOL 106 12.221 4.410 3.290 1.00 0.00 H +ATOM 321 HW2 SOL 106 11.801 5.990 3.350 1.00 0.00 H +ATOM 322 OW SOL 107 0.370 13.101 12.821 1.00 0.00 O +ATOM 323 HW1 SOL 107 0.900 12.611 13.501 1.00 0.00 H +ATOM 324 HW2 SOL 107 0.590 14.081 12.871 1.00 0.00 H +ATOM 325 OW SOL 108 7.320 6.340 10.641 1.00 0.00 O +ATOM 326 HW1 SOL 108 7.910 6.080 9.881 1.00 0.00 H +ATOM 327 HW2 SOL 108 7.040 7.300 10.531 1.00 0.00 H +ATOM 328 OW SOL 109 17.281 9.351 18.541 1.00 0.00 O +ATOM 329 HW1 SOL 109 16.821 9.281 17.651 1.00 0.00 H +ATOM 330 HW2 SOL 109 16.661 9.791 19.201 1.00 0.00 H +ATOM 331 OW SOL 110 3.070 0.630 6.180 1.00 0.00 O +ATOM 332 HW1 SOL 110 2.960 1.570 6.510 1.00 0.00 H +ATOM 333 HW2 SOL 110 3.020 0.000 6.950 1.00 0.00 H +ATOM 334 OW SOL 111 16.221 3.670 3.740 1.00 0.00 O +ATOM 335 HW1 SOL 111 16.241 2.910 4.380 1.00 0.00 H +ATOM 336 HW2 SOL 111 15.741 4.440 4.140 1.00 0.00 H +ATOM 337 OW SOL 112 10.231 7.660 9.661 1.00 0.00 O +ATOM 338 HW1 SOL 112 10.381 7.870 10.621 1.00 0.00 H +ATOM 339 HW2 SOL 112 9.931 6.710 9.571 1.00 0.00 H +ATOM 340 OW SOL 113 9.801 15.731 17.001 1.00 0.00 O +ATOM 341 HW1 SOL 113 9.601 16.171 16.121 1.00 0.00 H +ATOM 342 HW2 SOL 113 10.191 14.821 16.841 1.00 0.00 H +ATOM 343 OW SOL 114 18.591 15.181 16.051 1.00 0.00 O +ATOM 344 HW1 SOL 114 18.731 15.451 15.101 1.00 0.00 H +ATOM 345 HW2 SOL 114 19.421 15.401 16.581 1.00 0.00 H +ATOM 346 OW SOL 115 3.500 8.980 18.041 1.00 0.00 O +ATOM 347 HW1 SOL 115 4.260 9.420 18.521 1.00 0.00 H +ATOM 348 HW2 SOL 115 3.850 8.510 17.221 1.00 0.00 H +ATOM 349 OW SOL 116 15.401 2.740 1.250 1.00 0.00 O +ATOM 350 HW1 SOL 116 14.791 1.990 1.480 1.00 0.00 H +ATOM 351 HW2 SOL 116 15.621 3.260 2.080 1.00 0.00 H +ATOM 352 OW SOL 117 13.031 8.380 0.420 1.00 0.00 O +ATOM 353 HW1 SOL 117 13.371 7.450 0.570 1.00 0.00 H +ATOM 354 HW2 SOL 117 13.211 8.650 -0.530 1.00 0.00 H +ATOM 355 OW SOL 118 10.681 13.331 8.490 1.00 0.00 O +ATOM 356 HW1 SOL 118 10.751 12.491 7.940 1.00 0.00 H +ATOM 357 HW2 SOL 118 11.301 14.021 8.130 1.00 0.00 H +ATOM 358 OW SOL 119 3.190 8.100 9.491 1.00 0.00 O +ATOM 359 HW1 SOL 119 4.120 8.460 9.541 1.00 0.00 H +ATOM 360 HW2 SOL 119 3.130 7.250 10.011 1.00 0.00 H +ATOM 361 OW SOL 120 3.390 5.090 10.061 1.00 0.00 O +ATOM 362 HW1 SOL 120 2.870 4.260 9.891 1.00 0.00 H +ATOM 363 HW2 SOL 120 4.160 5.140 9.421 1.00 0.00 H +ATOM 364 OW SOL 121 11.381 3.800 16.781 1.00 0.00 O +ATOM 365 HW1 SOL 121 10.931 4.430 17.421 1.00 0.00 H +ATOM 366 HW2 SOL 121 12.311 4.110 16.611 1.00 0.00 H +ATOM 367 OW SOL 122 11.601 2.070 14.771 1.00 0.00 O +ATOM 368 HW1 SOL 122 11.601 2.710 15.541 1.00 0.00 H +ATOM 369 HW2 SOL 122 11.881 2.550 13.941 1.00 0.00 H +ATOM 370 OW SOL 123 0.880 18.011 9.270 1.00 0.00 O +ATOM 371 HW1 SOL 123 0.460 17.151 9.000 1.00 0.00 H +ATOM 372 HW2 SOL 123 1.820 18.041 8.930 1.00 0.00 H +ATOM 373 OW SOL 124 5.040 15.681 9.100 1.00 0.00 O +ATOM 374 HW1 SOL 124 5.700 16.421 9.190 1.00 0.00 H +ATOM 375 HW2 SOL 124 5.480 14.891 8.680 1.00 0.00 H +ATOM 376 OW SOL 125 10.021 7.960 12.381 1.00 0.00 O +ATOM 377 HW1 SOL 125 10.431 7.640 13.241 1.00 0.00 H +ATOM 378 HW2 SOL 125 9.061 7.690 12.351 1.00 0.00 H +ATOM 379 OW SOL 126 0.400 5.440 11.141 1.00 0.00 O +ATOM 380 HW1 SOL 126 1.250 5.110 10.731 1.00 0.00 H +ATOM 381 HW2 SOL 126 0.530 5.590 12.121 1.00 0.00 H +ATOM 382 OW SOL 127 1.890 5.200 17.221 1.00 0.00 O +ATOM 383 HW1 SOL 127 2.480 4.800 16.521 1.00 0.00 H +ATOM 384 HW2 SOL 127 1.310 5.910 16.811 1.00 0.00 H +ATOM 385 OW SOL 128 13.691 9.501 16.601 1.00 0.00 O +ATOM 386 HW1 SOL 128 14.081 10.391 16.801 1.00 0.00 H +ATOM 387 HW2 SOL 128 13.791 9.301 15.631 1.00 0.00 H +ATOM 388 OW SOL 129 8.150 5.720 3.250 1.00 0.00 O +ATOM 389 HW1 SOL 129 8.220 4.830 2.790 1.00 0.00 H +ATOM 390 HW2 SOL 129 7.210 6.060 3.170 1.00 0.00 H +ATOM 391 OW SOL 130 16.571 6.040 12.061 1.00 0.00 O +ATOM 392 HW1 SOL 130 16.191 5.350 12.681 1.00 0.00 H +ATOM 393 HW2 SOL 130 17.391 5.680 11.621 1.00 0.00 H +ATOM 394 OW SOL 131 2.520 15.641 17.441 1.00 0.00 O +ATOM 395 HW1 SOL 131 2.220 16.211 18.201 1.00 0.00 H +ATOM 396 HW2 SOL 131 2.450 14.671 17.701 1.00 0.00 H +ATOM 397 OW SOL 132 6.710 4.640 12.691 1.00 0.00 O +ATOM 398 HW1 SOL 132 6.370 3.750 12.391 1.00 0.00 H +ATOM 399 HW2 SOL 132 6.970 5.180 11.891 1.00 0.00 H +ATOM 400 OW SOL 133 9.300 16.781 14.651 1.00 0.00 O +ATOM 401 HW1 SOL 133 9.060 16.601 13.701 1.00 0.00 H +ATOM 402 HW2 SOL 133 9.600 17.721 14.751 1.00 0.00 H +ATOM 403 OW SOL 134 4.730 5.000 1.910 1.00 0.00 O +ATOM 404 HW1 SOL 134 5.340 5.800 1.950 1.00 0.00 H +ATOM 405 HW2 SOL 134 3.780 5.310 1.980 1.00 0.00 H +ATOM 406 OW SOL 135 1.590 11.371 14.661 1.00 0.00 O +ATOM 407 HW1 SOL 135 1.810 10.761 15.421 1.00 0.00 H +ATOM 408 HW2 SOL 135 1.690 10.881 13.801 1.00 0.00 H +ATOM 409 OW SOL 136 13.471 10.591 12.341 1.00 0.00 O +ATOM 410 HW1 SOL 136 13.711 9.961 11.601 1.00 0.00 H +ATOM 411 HW2 SOL 136 12.571 10.991 12.161 1.00 0.00 H +ATOM 412 OW SOL 137 13.021 8.550 3.090 1.00 0.00 O +ATOM 413 HW1 SOL 137 12.161 8.240 3.510 1.00 0.00 H +ATOM 414 HW2 SOL 137 12.981 8.410 2.100 1.00 0.00 H +ATOM 415 OW SOL 138 17.591 17.471 11.541 1.00 0.00 O +ATOM 416 HW1 SOL 138 18.201 17.771 10.811 1.00 0.00 H +ATOM 417 HW2 SOL 138 17.211 16.581 11.321 1.00 0.00 H +ATOM 418 OW SOL 139 12.521 17.311 11.281 1.00 0.00 O +ATOM 419 HW1 SOL 139 13.361 17.361 10.741 1.00 0.00 H +ATOM 420 HW2 SOL 139 12.291 16.351 11.461 1.00 0.00 H +ATOM 421 OW SOL 140 0.830 12.581 10.221 1.00 0.00 O +ATOM 422 HW1 SOL 140 0.780 12.571 11.221 1.00 0.00 H +ATOM 423 HW2 SOL 140 0.000 12.171 9.841 1.00 0.00 H +ATOM 424 OW SOL 141 6.880 16.621 17.161 1.00 0.00 O +ATOM 425 HW1 SOL 141 6.320 17.431 17.251 1.00 0.00 H +ATOM 426 HW2 SOL 141 7.400 16.661 16.301 1.00 0.00 H +ATOM 427 OW SOL 142 9.030 0.860 1.330 1.00 0.00 O +ATOM 428 HW1 SOL 142 9.540 0.870 0.470 1.00 0.00 H +ATOM 429 HW2 SOL 142 9.590 0.440 2.040 1.00 0.00 H +ATOM 430 OW SOL 143 17.261 1.350 5.230 1.00 0.00 O +ATOM 431 HW1 SOL 143 17.991 1.180 4.560 1.00 0.00 H +ATOM 432 HW2 SOL 143 16.951 0.480 5.610 1.00 0.00 H +ATOM 433 OW SOL 144 13.881 15.731 4.770 1.00 0.00 O +ATOM 434 HW1 SOL 144 14.551 15.851 4.030 1.00 0.00 H +ATOM 435 HW2 SOL 144 13.481 16.621 5.000 1.00 0.00 H +ATOM 436 OW SOL 145 12.801 9.270 6.720 1.00 0.00 O +ATOM 437 HW1 SOL 145 13.401 8.460 6.740 1.00 0.00 H +ATOM 438 HW2 SOL 145 13.201 9.960 6.120 1.00 0.00 H +ATOM 439 OW SOL 146 8.300 12.731 14.221 1.00 0.00 O +ATOM 440 HW1 SOL 146 8.250 13.061 15.171 1.00 0.00 H +ATOM 441 HW2 SOL 146 7.440 12.921 13.761 1.00 0.00 H +ATOM 442 OW SOL 147 6.720 16.161 1.540 1.00 0.00 O +ATOM 443 HW1 SOL 147 6.810 16.261 0.550 1.00 0.00 H +ATOM 444 HW2 SOL 147 6.320 15.271 1.750 1.00 0.00 H +ATOM 445 OW SOL 148 16.501 17.201 13.941 1.00 0.00 O +ATOM 446 HW1 SOL 148 17.031 17.301 13.101 1.00 0.00 H +ATOM 447 HW2 SOL 148 16.231 18.101 14.281 1.00 0.00 H +ATOM 448 OW SOL 149 2.630 3.260 7.200 1.00 0.00 O +ATOM 449 HW1 SOL 149 1.840 3.770 6.860 1.00 0.00 H +ATOM 450 HW2 SOL 149 2.540 3.110 8.180 1.00 0.00 H +ATOM 451 OW SOL 150 11.941 16.121 0.310 1.00 0.00 O +ATOM 452 HW1 SOL 150 12.001 15.191 0.680 1.00 0.00 H +ATOM 453 HW2 SOL 150 11.351 16.121 -0.490 1.00 0.00 H +ATOM 454 OW SOL 151 8.220 10.021 13.721 1.00 0.00 O +ATOM 455 HW1 SOL 151 8.620 10.011 12.801 1.00 0.00 H +ATOM 456 HW2 SOL 151 8.320 10.941 14.121 1.00 0.00 H +ATOM 457 OW SOL 152 9.160 9.100 2.910 1.00 0.00 O +ATOM 458 HW1 SOL 152 9.790 9.480 2.230 1.00 0.00 H +ATOM 459 HW2 SOL 152 9.560 8.270 3.300 1.00 0.00 H +ATOM 460 OW SOL 153 15.041 16.071 0.440 1.00 0.00 O +ATOM 461 HW1 SOL 153 14.121 16.441 0.510 1.00 0.00 H +ATOM 462 HW2 SOL 153 15.421 16.271 -0.460 1.00 0.00 H +ATOM 463 OW SOL 154 3.720 12.881 14.901 1.00 0.00 O +ATOM 464 HW1 SOL 154 3.590 13.811 14.561 1.00 0.00 H +ATOM 465 HW2 SOL 154 2.880 12.361 14.771 1.00 0.00 H +ATOM 466 OW SOL 155 16.141 12.921 12.891 1.00 0.00 O +ATOM 467 HW1 SOL 155 16.741 12.951 13.691 1.00 0.00 H +ATOM 468 HW2 SOL 155 15.391 13.561 13.021 1.00 0.00 H +ATOM 469 OW SOL 156 10.391 10.981 6.960 1.00 0.00 O +ATOM 470 HW1 SOL 156 9.691 10.511 7.500 1.00 0.00 H +ATOM 471 HW2 SOL 156 10.981 10.301 6.530 1.00 0.00 H +ATOM 472 OW SOL 157 10.141 2.360 9.711 1.00 0.00 O +ATOM 473 HW1 SOL 157 10.061 2.000 8.781 1.00 0.00 H +ATOM 474 HW2 SOL 157 10.121 1.600 10.361 1.00 0.00 H +ATOM 475 OW SOL 158 5.900 14.871 4.910 1.00 0.00 O +ATOM 476 HW1 SOL 158 6.320 14.291 4.210 1.00 0.00 H +ATOM 477 HW2 SOL 158 5.460 15.661 4.470 1.00 0.00 H +ATOM 478 OW SOL 159 17.091 3.850 13.811 1.00 0.00 O +ATOM 479 HW1 SOL 159 17.821 4.540 13.851 1.00 0.00 H +ATOM 480 HW2 SOL 159 17.371 3.100 13.221 1.00 0.00 H +ATOM 481 OW SOL 160 2.550 13.481 2.900 1.00 0.00 O +ATOM 482 HW1 SOL 160 1.590 13.491 2.630 1.00 0.00 H +ATOM 483 HW2 SOL 160 2.670 14.011 3.740 1.00 0.00 H +ATOM 484 OW SOL 161 6.720 2.030 14.891 1.00 0.00 O +ATOM 485 HW1 SOL 161 7.620 1.870 14.491 1.00 0.00 H +ATOM 486 HW2 SOL 161 6.800 2.080 15.881 1.00 0.00 H +ATOM 487 OW SOL 162 14.401 8.560 13.981 1.00 0.00 O +ATOM 488 HW1 SOL 162 13.831 9.080 13.351 1.00 0.00 H +ATOM 489 HW2 SOL 162 15.361 8.680 13.741 1.00 0.00 H +ATOM 490 OW SOL 163 11.831 13.351 1.190 1.00 0.00 O +ATOM 491 HW1 SOL 163 10.841 13.241 1.210 1.00 0.00 H +ATOM 492 HW2 SOL 163 12.171 13.501 2.120 1.00 0.00 H +ATOM 493 OW SOL 164 6.130 8.420 14.311 1.00 0.00 O +ATOM 494 HW1 SOL 164 6.690 9.230 14.141 1.00 0.00 H +ATOM 495 HW2 SOL 164 6.720 7.620 14.341 1.00 0.00 H +ATOM 496 OW SOL 165 14.931 17.671 9.591 1.00 0.00 O +ATOM 497 HW1 SOL 165 15.261 18.311 8.901 1.00 0.00 H +ATOM 498 HW2 SOL 165 15.591 17.611 10.341 1.00 0.00 H +ATOM 499 OW SOL 166 7.160 5.650 17.081 1.00 0.00 O +ATOM 500 HW1 SOL 166 7.350 6.300 17.821 1.00 0.00 H +ATOM 501 HW2 SOL 166 7.760 4.850 17.171 1.00 0.00 H +ATOM 502 OW SOL 167 14.501 12.201 16.331 1.00 0.00 O +ATOM 503 HW1 SOL 167 14.411 12.101 17.321 1.00 0.00 H +ATOM 504 HW2 SOL 167 15.461 12.131 16.071 1.00 0.00 H +ATOM 505 OW SOL 168 3.900 17.411 15.601 1.00 0.00 O +ATOM 506 HW1 SOL 168 2.990 17.821 15.581 1.00 0.00 H +ATOM 507 HW2 SOL 168 3.830 16.471 15.921 1.00 0.00 H +ATOM 508 OW SOL 169 16.741 8.830 12.541 1.00 0.00 O +ATOM 509 HW1 SOL 169 16.471 7.940 12.171 1.00 0.00 H +ATOM 510 HW2 SOL 169 16.751 9.510 11.811 1.00 0.00 H +ATOM 511 OW SOL 170 12.251 3.250 4.490 1.00 0.00 O +ATOM 512 HW1 SOL 170 12.901 2.510 4.380 1.00 0.00 H +ATOM 513 HW2 SOL 170 12.451 3.750 5.330 1.00 0.00 H +ATOM 514 OW SOL 171 5.940 7.450 6.520 1.00 0.00 O +ATOM 515 HW1 SOL 171 6.440 8.300 6.330 1.00 0.00 H +ATOM 516 HW2 SOL 171 5.060 7.470 6.040 1.00 0.00 H +ATOM 517 OW SOL 172 17.771 3.420 16.421 1.00 0.00 O +ATOM 518 HW1 SOL 172 17.601 3.730 15.481 1.00 0.00 H +ATOM 519 HW2 SOL 172 16.931 3.050 16.801 1.00 0.00 H +ATOM 520 OW SOL 173 17.301 9.341 15.171 1.00 0.00 O +ATOM 521 HW1 SOL 173 17.681 10.251 15.321 1.00 0.00 H +ATOM 522 HW2 SOL 173 17.221 9.171 14.181 1.00 0.00 H +ATOM 523 OW SOL 174 8.590 13.741 0.160 1.00 0.00 O +ATOM 524 HW1 SOL 174 8.130 13.891 1.040 1.00 0.00 H +ATOM 525 HW2 SOL 174 9.030 14.591 -0.140 1.00 0.00 H +ATOM 526 OW SOL 175 6.610 17.901 9.531 1.00 0.00 O +ATOM 527 HW1 SOL 175 6.150 18.781 9.401 1.00 0.00 H +ATOM 528 HW2 SOL 175 7.600 18.021 9.461 1.00 0.00 H +ATOM 529 OW SOL 176 14.081 18.511 17.201 1.00 0.00 O +ATOM 530 HW1 SOL 176 13.121 18.401 16.931 1.00 0.00 H +ATOM 531 HW2 SOL 176 14.641 17.841 16.721 1.00 0.00 H +ATOM 532 OW SOL 177 8.590 9.561 8.610 1.00 0.00 O +ATOM 533 HW1 SOL 177 9.130 8.871 9.090 1.00 0.00 H +ATOM 534 HW2 SOL 177 8.270 10.251 9.270 1.00 0.00 H +ATOM 535 OW SOL 178 10.831 9.841 0.870 1.00 0.00 O +ATOM 536 HW1 SOL 178 10.601 10.371 0.050 1.00 0.00 H +ATOM 537 HW2 SOL 178 11.641 9.281 0.680 1.00 0.00 H +ATOM 538 OW SOL 179 18.611 15.691 8.510 1.00 0.00 O +ATOM 539 HW1 SOL 179 17.901 15.571 7.810 1.00 0.00 H +ATOM 540 HW2 SOL 179 18.621 14.901 9.110 1.00 0.00 H +ATOM 541 OW SOL 180 0.790 12.401 6.530 1.00 0.00 O +ATOM 542 HW1 SOL 180 0.780 11.931 7.410 1.00 0.00 H +ATOM 543 HW2 SOL 180 1.610 12.121 6.020 1.00 0.00 H +ATOM 544 OW SOL 181 6.720 13.911 16.241 1.00 0.00 O +ATOM 545 HW1 SOL 181 5.940 13.411 16.621 1.00 0.00 H +ATOM 546 HW2 SOL 181 6.690 14.861 16.551 1.00 0.00 H +ATOM 547 OW SOL 182 4.280 4.240 5.200 1.00 0.00 O +ATOM 548 HW1 SOL 182 4.580 3.520 4.580 1.00 0.00 H +ATOM 549 HW2 SOL 182 3.890 3.840 6.030 1.00 0.00 H +ATOM 550 OW SOL 183 17.051 14.871 11.041 1.00 0.00 O +ATOM 551 HW1 SOL 183 16.121 14.621 10.771 1.00 0.00 H +ATOM 552 HW2 SOL 183 17.311 14.371 11.861 1.00 0.00 H +ATOM 553 OW SOL 184 3.170 5.470 12.801 1.00 0.00 O +ATOM 554 HW1 SOL 184 3.550 4.880 13.521 1.00 0.00 H +ATOM 555 HW2 SOL 184 3.570 5.210 11.921 1.00 0.00 H +ATOM 556 OW SOL 185 8.120 15.861 6.870 1.00 0.00 O +ATOM 557 HW1 SOL 185 8.440 15.961 5.930 1.00 0.00 H +ATOM 558 HW2 SOL 185 7.330 15.241 6.890 1.00 0.00 H +ATOM 559 OW SOL 186 14.241 2.140 11.121 1.00 0.00 O +ATOM 560 HW1 SOL 186 14.761 1.490 11.671 1.00 0.00 H +ATOM 561 HW2 SOL 186 13.751 2.770 11.731 1.00 0.00 H +ATOM 562 OW SOL 187 10.011 0.340 11.541 1.00 0.00 O +ATOM 563 HW1 SOL 187 9.381 -0.380 11.231 1.00 0.00 H +ATOM 564 HW2 SOL 187 10.941 -0.020 11.541 1.00 0.00 H +ATOM 565 OW SOL 188 7.700 13.301 3.010 1.00 0.00 O +ATOM 566 HW1 SOL 188 7.240 12.431 3.180 1.00 0.00 H +ATOM 567 HW2 SOL 188 8.610 13.271 3.420 1.00 0.00 H +ATOM 568 OW SOL 189 6.180 15.671 12.841 1.00 0.00 O +ATOM 569 HW1 SOL 189 6.130 16.491 13.411 1.00 0.00 H +ATOM 570 HW2 SOL 189 7.070 15.641 12.391 1.00 0.00 H +ATOM 571 OW SOL 190 13.521 0.520 1.680 1.00 0.00 O +ATOM 572 HW1 SOL 190 13.871 0.110 0.840 1.00 0.00 H +ATOM 573 HW2 SOL 190 12.621 0.140 1.880 1.00 0.00 H +ATOM 574 OW SOL 191 13.001 4.530 6.910 1.00 0.00 O +ATOM 575 HW1 SOL 191 12.411 5.330 6.950 1.00 0.00 H +ATOM 576 HW2 SOL 191 13.151 4.180 7.840 1.00 0.00 H +ATOM 577 OW SOL 192 15.931 2.210 8.820 1.00 0.00 O +ATOM 578 HW1 SOL 192 15.091 2.200 9.360 1.00 0.00 H +ATOM 579 HW2 SOL 192 15.951 3.040 8.260 1.00 0.00 H +ATOM 580 OW SOL 193 0.390 10.771 3.000 1.00 0.00 O +ATOM 581 HW1 SOL 193 1.380 10.661 2.910 1.00 0.00 H +ATOM 582 HW2 SOL 193 -0.010 9.911 3.320 1.00 0.00 H +ATOM 583 OW SOL 194 8.750 16.461 3.370 1.00 0.00 O +ATOM 584 HW1 SOL 194 7.980 16.111 2.830 1.00 0.00 H +ATOM 585 HW2 SOL 194 8.430 17.171 3.990 1.00 0.00 H +ATOM 586 OW SOL 195 5.690 12.751 30.271 1.00 0.00 O +ATOM 587 HW1 SOL 195 4.760 12.681 29.901 1.00 0.00 H +ATOM 588 HW2 SOL 195 5.800 13.641 30.711 1.00 0.00 H +ATOM 589 OW SOL 196 15.551 15.111 25.651 1.00 0.00 O +ATOM 590 HW1 SOL 196 14.981 14.951 26.461 1.00 0.00 H +ATOM 591 HW2 SOL 196 14.961 15.211 24.851 1.00 0.00 H +ATOM 592 OW SOL 197 17.431 6.180 27.181 1.00 0.00 O +ATOM 593 HW1 SOL 197 17.761 7.120 27.181 1.00 0.00 H +ATOM 594 HW2 SOL 197 17.941 5.640 27.841 1.00 0.00 H +ATOM 595 OW SOL 198 11.351 7.030 25.791 1.00 0.00 O +ATOM 596 HW1 SOL 198 11.921 7.810 25.541 1.00 0.00 H +ATOM 597 HW2 SOL 198 10.751 7.290 26.551 1.00 0.00 H +ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O +ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H +ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H +ATOM 601 OW SOL 200 7.680 11.441 28.851 1.00 0.00 O +ATOM 602 HW1 SOL 200 6.900 11.611 29.451 1.00 0.00 H +ATOM 603 HW2 SOL 200 8.020 12.311 28.491 1.00 0.00 H +ATOM 604 OW SOL 201 6.850 10.121 25.271 1.00 0.00 O +ATOM 605 HW1 SOL 201 7.540 9.961 25.971 1.00 0.00 H +ATOM 606 HW2 SOL 201 6.120 10.691 25.651 1.00 0.00 H +ATOM 607 OW SOL 202 2.400 10.911 27.481 1.00 0.00 O +ATOM 608 HW1 SOL 202 2.540 10.071 28.001 1.00 0.00 H +ATOM 609 HW2 SOL 202 1.850 11.551 28.031 1.00 0.00 H +ATOM 610 OW SOL 203 6.060 9.641 19.851 1.00 0.00 O +ATOM 611 HW1 SOL 203 6.130 10.481 19.311 1.00 0.00 H +ATOM 612 HW2 SOL 203 6.520 9.771 20.731 1.00 0.00 H +ATOM 613 OW SOL 204 1.220 6.430 24.251 1.00 0.00 O +ATOM 614 HW1 SOL 204 0.770 5.550 24.421 1.00 0.00 H +ATOM 615 HW2 SOL 204 1.210 6.970 25.091 1.00 0.00 H +ATOM 616 OW SOL 205 18.421 17.671 22.211 1.00 0.00 O +ATOM 617 HW1 SOL 205 18.961 17.381 23.011 1.00 0.00 H +ATOM 618 HW2 SOL 205 18.721 18.571 21.921 1.00 0.00 H +ATOM 619 OW SOL 206 16.891 9.220 24.741 1.00 0.00 O +ATOM 620 HW1 SOL 206 17.841 8.930 24.821 1.00 0.00 H +ATOM 621 HW2 SOL 206 16.811 9.870 23.991 1.00 0.00 H +ATOM 622 OW SOL 207 16.411 11.081 22.941 1.00 0.00 O +ATOM 623 HW1 SOL 207 17.271 11.101 22.421 1.00 0.00 H +ATOM 624 HW2 SOL 207 16.551 11.551 23.821 1.00 0.00 H +ATOM 625 OW SOL 208 6.130 13.651 25.881 1.00 0.00 O +ATOM 626 HW1 SOL 208 5.640 12.781 25.971 1.00 0.00 H +ATOM 627 HW2 SOL 208 5.900 14.081 25.011 1.00 0.00 H +ATOM 628 OW SOL 209 8.090 0.040 23.641 1.00 0.00 O +ATOM 629 HW1 SOL 209 8.490 0.950 23.551 1.00 0.00 H +ATOM 630 HW2 SOL 209 7.090 0.120 23.701 1.00 0.00 H +ATOM 631 OW SOL 210 1.970 9.761 0.031 1.00 0.00 O +ATOM 632 HW1 SOL 210 2.860 9.311 -0.109 1.00 0.00 H +ATOM 633 HW2 SOL 210 1.240 9.111 -0.159 1.00 0.00 H +ATOM 634 OW SOL 211 15.251 9.991 20.521 1.00 0.00 O +ATOM 635 HW1 SOL 211 14.621 9.231 20.651 1.00 0.00 H +ATOM 636 HW2 SOL 211 15.731 10.171 21.381 1.00 0.00 H +ATOM 637 OW SOL 212 14.661 14.171 28.151 1.00 0.00 O +ATOM 638 HW1 SOL 212 14.071 14.231 28.951 1.00 0.00 H +ATOM 639 HW2 SOL 212 14.511 13.291 27.691 1.00 0.00 H +ATOM 640 OW SOL 213 16.671 17.141 24.341 1.00 0.00 O +ATOM 641 HW1 SOL 213 16.261 16.911 23.461 1.00 0.00 H +ATOM 642 HW2 SOL 213 16.491 16.401 24.991 1.00 0.00 H +ATOM 643 OW SOL 214 5.980 7.290 21.321 1.00 0.00 O +ATOM 644 HW1 SOL 214 6.220 7.980 20.641 1.00 0.00 H +ATOM 645 HW2 SOL 214 5.200 7.620 21.861 1.00 0.00 H +ATOM 646 OW SOL 215 12.811 3.450 28.061 1.00 0.00 O +ATOM 647 HW1 SOL 215 11.951 2.950 27.931 1.00 0.00 H +ATOM 648 HW2 SOL 215 13.431 2.910 28.621 1.00 0.00 H +ATOM 649 OW SOL 216 15.761 16.621 21.691 1.00 0.00 O +ATOM 650 HW1 SOL 216 16.651 17.081 21.721 1.00 0.00 H +ATOM 651 HW2 SOL 216 15.551 16.381 20.741 1.00 0.00 H +ATOM 652 OW SOL 217 10.411 7.010 22.911 1.00 0.00 O +ATOM 653 HW1 SOL 217 10.671 6.970 23.871 1.00 0.00 H +ATOM 654 HW2 SOL 217 9.561 6.500 22.771 1.00 0.00 H +ATOM 655 OW SOL 218 8.650 3.480 20.571 1.00 0.00 O +ATOM 656 HW1 SOL 218 9.240 4.110 20.081 1.00 0.00 H +ATOM 657 HW2 SOL 218 8.840 2.540 20.281 1.00 0.00 H +ATOM 658 OW SOL 219 13.621 11.441 24.071 1.00 0.00 O +ATOM 659 HW1 SOL 219 14.451 11.151 23.591 1.00 0.00 H +ATOM 660 HW2 SOL 219 13.131 12.111 23.511 1.00 0.00 H +ATOM 661 OW SOL 220 5.500 1.960 27.471 1.00 0.00 O +ATOM 662 HW1 SOL 220 5.450 1.910 28.471 1.00 0.00 H +ATOM 663 HW2 SOL 220 5.520 2.920 27.181 1.00 0.00 H +ATOM 664 OW SOL 221 10.081 14.561 23.391 1.00 0.00 O +ATOM 665 HW1 SOL 221 9.621 15.281 22.871 1.00 0.00 H +ATOM 666 HW2 SOL 221 10.041 14.761 24.371 1.00 0.00 H +ATOM 667 OW SOL 222 3.510 18.011 27.151 1.00 0.00 O +ATOM 668 HW1 SOL 222 4.010 17.151 27.211 1.00 0.00 H +ATOM 669 HW2 SOL 222 4.160 18.781 27.121 1.00 0.00 H +ATOM 670 OW SOL 223 17.951 10.661 27.351 1.00 0.00 O +ATOM 671 HW1 SOL 223 17.331 10.511 26.591 1.00 0.00 H +ATOM 672 HW2 SOL 223 17.431 10.771 28.201 1.00 0.00 H +ATOM 673 OW SOL 224 3.210 9.431 21.041 1.00 0.00 O +ATOM 674 HW1 SOL 224 4.030 9.821 20.621 1.00 0.00 H +ATOM 675 HW2 SOL 224 2.940 8.611 20.551 1.00 0.00 H +ATOM 676 OW SOL 225 14.581 7.350 25.901 1.00 0.00 O +ATOM 677 HW1 SOL 225 14.531 6.700 26.651 1.00 0.00 H +ATOM 678 HW2 SOL 225 15.381 7.940 26.031 1.00 0.00 H +ATOM 679 OW SOL 226 11.111 17.761 20.991 1.00 0.00 O +ATOM 680 HW1 SOL 226 10.511 17.141 21.491 1.00 0.00 H +ATOM 681 HW2 SOL 226 11.421 17.321 20.141 1.00 0.00 H +ATOM 682 OW SOL 227 16.321 13.771 19.431 1.00 0.00 O +ATOM 683 HW1 SOL 227 16.001 14.711 19.331 1.00 0.00 H +ATOM 684 HW2 SOL 227 15.561 13.141 19.311 1.00 0.00 H +ATOM 685 OW SOL 228 4.640 17.431 21.851 1.00 0.00 O +ATOM 686 HW1 SOL 228 4.970 17.821 22.711 1.00 0.00 H +ATOM 687 HW2 SOL 228 5.400 17.361 21.201 1.00 0.00 H +ATOM 688 OW SOL 229 14.001 1.070 22.881 1.00 0.00 O +ATOM 689 HW1 SOL 229 13.761 0.700 21.981 1.00 0.00 H +ATOM 690 HW2 SOL 229 14.991 1.230 22.921 1.00 0.00 H +ATOM 691 OW SOL 230 2.490 17.851 31.031 1.00 0.00 O +ATOM 692 HW1 SOL 230 3.060 17.201 31.531 1.00 0.00 H +ATOM 693 HW2 SOL 230 2.330 17.521 30.101 1.00 0.00 H +ATOM 694 OW SOL 231 9.401 16.981 27.661 1.00 0.00 O +ATOM 695 HW1 SOL 231 10.201 16.411 27.871 1.00 0.00 H +ATOM 696 HW2 SOL 231 8.911 16.581 26.891 1.00 0.00 H +ATOM 697 OW SOL 232 3.820 7.000 23.421 1.00 0.00 O +ATOM 698 HW1 SOL 232 4.270 6.100 23.391 1.00 0.00 H +ATOM 699 HW2 SOL 232 2.880 6.890 23.751 1.00 0.00 H +ATOM 700 OW SOL 233 6.140 1.220 19.791 1.00 0.00 O +ATOM 701 HW1 SOL 233 7.120 1.000 19.861 1.00 0.00 H +ATOM 702 HW2 SOL 233 5.830 1.050 18.861 1.00 0.00 H +ATOM 703 OW SOL 234 8.030 14.021 27.861 1.00 0.00 O +ATOM 704 HW1 SOL 234 8.930 14.161 27.441 1.00 0.00 H +ATOM 705 HW2 SOL 234 7.320 14.041 27.151 1.00 0.00 H +ATOM 706 OW SOL 235 9.220 5.030 27.611 1.00 0.00 O +ATOM 707 HW1 SOL 235 8.970 4.940 26.651 1.00 0.00 H +ATOM 708 HW2 SOL 235 9.700 4.210 27.921 1.00 0.00 H +ATOM 709 OW SOL 236 5.390 0.640 23.741 1.00 0.00 O +ATOM 710 HW1 SOL 236 4.580 0.650 24.321 1.00 0.00 H +ATOM 711 HW2 SOL 236 5.420 1.470 23.191 1.00 0.00 H +ATOM 712 OW SOL 237 14.341 11.881 19.031 1.00 0.00 O +ATOM 713 HW1 SOL 237 14.661 11.121 19.601 1.00 0.00 H +ATOM 714 HW2 SOL 237 13.421 12.151 19.331 1.00 0.00 H +ATOM 715 OW SOL 238 2.970 0.350 20.331 1.00 0.00 O +ATOM 716 HW1 SOL 238 3.460 1.190 20.121 1.00 0.00 H +ATOM 717 HW2 SOL 238 3.590 -0.300 20.781 1.00 0.00 H +ATOM 718 OW SOL 239 9.351 2.360 23.421 1.00 0.00 O +ATOM 719 HW1 SOL 239 8.871 2.770 22.641 1.00 0.00 H +ATOM 720 HW2 SOL 239 10.341 2.340 23.231 1.00 0.00 H +ATOM 721 OW SOL 240 12.271 15.701 26.551 1.00 0.00 O +ATOM 722 HW1 SOL 240 12.481 16.441 25.901 1.00 0.00 H +ATOM 723 HW2 SOL 240 12.951 15.701 27.281 1.00 0.00 H +ATOM 724 OW SOL 241 4.590 11.521 26.031 1.00 0.00 O +ATOM 725 HW1 SOL 241 3.880 11.251 26.681 1.00 0.00 H +ATOM 726 HW2 SOL 241 4.330 11.241 25.101 1.00 0.00 H +ATOM 727 OW SOL 242 12.711 17.971 24.531 1.00 0.00 O +ATOM 728 HW1 SOL 242 13.151 18.611 23.891 1.00 0.00 H +ATOM 729 HW2 SOL 242 12.211 18.491 25.231 1.00 0.00 H +ATOM 730 OW SOL 243 10.321 5.490 18.781 1.00 0.00 O +ATOM 731 HW1 SOL 243 9.911 6.310 18.391 1.00 0.00 H +ATOM 732 HW2 SOL 243 10.961 5.750 19.511 1.00 0.00 H +ATOM 733 OW SOL 244 8.660 4.540 25.041 1.00 0.00 O +ATOM 734 HW1 SOL 244 8.340 5.260 24.421 1.00 0.00 H +ATOM 735 HW2 SOL 244 8.900 3.730 24.511 1.00 0.00 H +ATOM 736 OW SOL 245 10.171 0.390 26.151 1.00 0.00 O +ATOM 737 HW1 SOL 245 9.451 0.440 25.461 1.00 0.00 H +ATOM 738 HW2 SOL 245 9.931 -0.300 26.841 1.00 0.00 H +ATOM 739 OW SOL 246 14.291 11.731 27.291 1.00 0.00 O +ATOM 740 HW1 SOL 246 13.741 10.891 27.221 1.00 0.00 H +ATOM 741 HW2 SOL 246 14.551 12.021 26.371 1.00 0.00 H +ATOM 742 OW SOL 247 14.661 5.900 28.541 1.00 0.00 O +ATOM 743 HW1 SOL 247 14.361 4.950 28.611 1.00 0.00 H +ATOM 744 HW2 SOL 247 15.391 6.060 29.201 1.00 0.00 H +ATOM 745 OW SOL 248 18.571 8.330 22.391 1.00 0.00 O +ATOM 746 HW1 SOL 248 18.991 7.690 23.031 1.00 0.00 H +ATOM 747 HW2 SOL 248 18.191 7.820 21.611 1.00 0.00 H +ATOM 748 OW SOL 249 4.880 13.851 20.361 1.00 0.00 O +ATOM 749 HW1 SOL 249 4.010 13.701 20.831 1.00 0.00 H +ATOM 750 HW2 SOL 249 4.710 14.111 19.411 1.00 0.00 H +ATOM 751 OW SOL 250 16.641 12.801 25.191 1.00 0.00 O +ATOM 752 HW1 SOL 250 17.631 12.881 25.331 1.00 0.00 H +ATOM 753 HW2 SOL 250 16.191 13.641 25.501 1.00 0.00 H +ATOM 754 OW SOL 251 13.901 5.750 19.401 1.00 0.00 O +ATOM 755 HW1 SOL 251 13.361 5.540 20.211 1.00 0.00 H +ATOM 756 HW2 SOL 251 14.811 5.340 19.491 1.00 0.00 H +ATOM 757 OW SOL 252 5.270 2.560 21.901 1.00 0.00 O +ATOM 758 HW1 SOL 252 5.540 1.970 21.151 1.00 0.00 H +ATOM 759 HW2 SOL 252 5.270 3.510 21.591 1.00 0.00 H +ATOM 760 OW SOL 253 11.111 11.951 29.621 1.00 0.00 O +ATOM 761 HW1 SOL 253 10.711 12.391 30.431 1.00 0.00 H +ATOM 762 HW2 SOL 253 10.701 12.321 28.791 1.00 0.00 H +ATOM 763 OW SOL 254 16.381 10.991 29.411 1.00 0.00 O +ATOM 764 HW1 SOL 254 16.431 11.801 30.001 1.00 0.00 H +ATOM 765 HW2 SOL 254 15.521 11.011 28.901 1.00 0.00 H +ATOM 766 OW SOL 255 7.050 10.501 22.301 1.00 0.00 O +ATOM 767 HW1 SOL 255 6.910 10.571 23.291 1.00 0.00 H +ATOM 768 HW2 SOL 255 7.890 9.991 22.121 1.00 0.00 H +ATOM 769 OW SOL 256 4.100 8.130 31.131 1.00 0.00 O +ATOM 770 HW1 SOL 256 4.960 8.250 31.631 1.00 0.00 H +ATOM 771 HW2 SOL 256 3.680 7.260 31.401 1.00 0.00 H +ATOM 772 OW SOL 257 3.670 11.001 23.631 1.00 0.00 O +ATOM 773 HW1 SOL 257 3.600 11.831 23.071 1.00 0.00 H +ATOM 774 HW2 SOL 257 3.710 10.201 23.031 1.00 0.00 H +ATOM 775 OW SOL 258 5.660 5.370 27.271 1.00 0.00 O +ATOM 776 HW1 SOL 258 5.780 6.030 26.531 1.00 0.00 H +ATOM 777 HW2 SOL 258 6.120 5.710 28.101 1.00 0.00 H +ATOM 778 OW SOL 259 12.521 13.481 22.501 1.00 0.00 O +ATOM 779 HW1 SOL 259 13.021 14.251 22.901 1.00 0.00 H +ATOM 780 HW2 SOL 259 11.571 13.501 22.821 1.00 0.00 H +ATOM 781 OW SOL 260 12.721 14.451 30.041 1.00 0.00 O +ATOM 782 HW1 SOL 260 13.191 14.581 30.911 1.00 0.00 H +ATOM 783 HW2 SOL 260 12.061 13.711 30.131 1.00 0.00 H +ATOM 784 OW SOL 261 15.821 6.390 23.341 1.00 0.00 O +ATOM 785 HW1 SOL 261 15.511 7.000 24.071 1.00 0.00 H +ATOM 786 HW2 SOL 261 16.321 6.910 22.651 1.00 0.00 H +ATOM 787 OW SOL 262 5.730 8.700 28.911 1.00 0.00 O +ATOM 788 HW1 SOL 262 6.170 9.590 28.821 1.00 0.00 H +ATOM 789 HW2 SOL 262 5.100 8.700 29.681 1.00 0.00 H +ATOM 790 OW SOL 263 13.601 8.620 29.071 1.00 0.00 O +ATOM 791 HW1 SOL 263 12.851 8.620 28.411 1.00 0.00 H +ATOM 792 HW2 SOL 263 13.971 7.700 29.161 1.00 0.00 H +ATOM 793 OW SOL 264 12.091 5.250 21.371 1.00 0.00 O +ATOM 794 HW1 SOL 264 12.221 4.410 21.911 1.00 0.00 H +ATOM 795 HW2 SOL 264 11.801 5.990 21.971 1.00 0.00 H +ATOM 796 OW SOL 265 7.320 6.340 29.261 1.00 0.00 O +ATOM 797 HW1 SOL 265 7.910 6.080 28.501 1.00 0.00 H +ATOM 798 HW2 SOL 265 7.040 7.300 29.151 1.00 0.00 H +ATOM 799 OW SOL 266 3.070 0.630 24.801 1.00 0.00 O +ATOM 800 HW1 SOL 266 2.960 1.570 25.131 1.00 0.00 H +ATOM 801 HW2 SOL 266 3.020 0.000 25.571 1.00 0.00 H +ATOM 802 OW SOL 267 16.221 3.670 22.361 1.00 0.00 O +ATOM 803 HW1 SOL 267 16.241 2.910 23.001 1.00 0.00 H +ATOM 804 HW2 SOL 267 15.741 4.440 22.761 1.00 0.00 H +ATOM 805 OW SOL 268 10.231 7.660 28.281 1.00 0.00 O +ATOM 806 HW1 SOL 268 10.381 7.870 29.241 1.00 0.00 H +ATOM 807 HW2 SOL 268 9.931 6.710 28.191 1.00 0.00 H +ATOM 808 OW SOL 269 15.401 2.740 19.871 1.00 0.00 O +ATOM 809 HW1 SOL 269 14.791 1.990 20.101 1.00 0.00 H +ATOM 810 HW2 SOL 269 15.621 3.260 20.701 1.00 0.00 H +ATOM 811 OW SOL 270 13.031 8.380 19.041 1.00 0.00 O +ATOM 812 HW1 SOL 270 13.371 7.450 19.191 1.00 0.00 H +ATOM 813 HW2 SOL 270 13.211 8.650 18.091 1.00 0.00 H +ATOM 814 OW SOL 271 10.681 13.331 27.111 1.00 0.00 O +ATOM 815 HW1 SOL 271 10.751 12.491 26.561 1.00 0.00 H +ATOM 816 HW2 SOL 271 11.301 14.021 26.751 1.00 0.00 H +ATOM 817 OW SOL 272 3.190 8.100 28.111 1.00 0.00 O +ATOM 818 HW1 SOL 272 4.120 8.460 28.161 1.00 0.00 H +ATOM 819 HW2 SOL 272 3.130 7.250 28.631 1.00 0.00 H +ATOM 820 OW SOL 273 3.390 5.090 28.681 1.00 0.00 O +ATOM 821 HW1 SOL 273 2.870 4.260 28.511 1.00 0.00 H +ATOM 822 HW2 SOL 273 4.160 5.140 28.041 1.00 0.00 H +ATOM 823 OW SOL 274 0.880 18.011 27.891 1.00 0.00 O +ATOM 824 HW1 SOL 274 0.460 17.151 27.621 1.00 0.00 H +ATOM 825 HW2 SOL 274 1.820 18.041 27.551 1.00 0.00 H +ATOM 826 OW SOL 275 5.040 15.681 27.721 1.00 0.00 O +ATOM 827 HW1 SOL 275 5.700 16.421 27.811 1.00 0.00 H +ATOM 828 HW2 SOL 275 5.480 14.891 27.301 1.00 0.00 H +ATOM 829 OW SOL 276 10.021 7.960 31.001 1.00 0.00 O +ATOM 830 HW1 SOL 276 10.431 7.640 31.861 1.00 0.00 H +ATOM 831 HW2 SOL 276 9.061 7.690 30.971 1.00 0.00 H +ATOM 832 OW SOL 277 0.400 5.440 29.761 1.00 0.00 O +ATOM 833 HW1 SOL 277 1.250 5.110 29.351 1.00 0.00 H +ATOM 834 HW2 SOL 277 0.530 5.590 30.741 1.00 0.00 H +ATOM 835 OW SOL 278 8.150 5.720 21.871 1.00 0.00 O +ATOM 836 HW1 SOL 278 8.220 4.830 21.411 1.00 0.00 H +ATOM 837 HW2 SOL 278 7.210 6.060 21.791 1.00 0.00 H +ATOM 838 OW SOL 279 16.571 6.040 30.681 1.00 0.00 O +ATOM 839 HW1 SOL 279 16.191 5.350 31.301 1.00 0.00 H +ATOM 840 HW2 SOL 279 17.391 5.680 30.241 1.00 0.00 H +ATOM 841 OW SOL 280 6.710 4.640 0.081 1.00 0.00 O +ATOM 842 HW1 SOL 280 6.370 3.750 -0.219 1.00 0.00 H +ATOM 843 HW2 SOL 280 6.970 5.180 -0.719 1.00 0.00 H +ATOM 844 OW SOL 281 4.730 5.000 20.531 1.00 0.00 O +ATOM 845 HW1 SOL 281 5.340 5.800 20.571 1.00 0.00 H +ATOM 846 HW2 SOL 281 3.780 5.310 20.601 1.00 0.00 H +ATOM 847 OW SOL 282 13.021 8.550 21.711 1.00 0.00 O +ATOM 848 HW1 SOL 282 12.161 8.240 22.131 1.00 0.00 H +ATOM 849 HW2 SOL 282 12.981 8.410 20.721 1.00 0.00 H +ATOM 850 OW SOL 283 17.591 17.471 30.161 1.00 0.00 O +ATOM 851 HW1 SOL 283 18.201 17.771 29.431 1.00 0.00 H +ATOM 852 HW2 SOL 283 17.211 16.581 29.941 1.00 0.00 H +ATOM 853 OW SOL 284 0.830 12.581 28.841 1.00 0.00 O +ATOM 854 HW1 SOL 284 0.780 12.571 29.841 1.00 0.00 H +ATOM 855 HW2 SOL 284 0.000 12.171 28.461 1.00 0.00 H +ATOM 856 OW SOL 285 17.261 1.350 23.851 1.00 0.00 O +ATOM 857 HW1 SOL 285 17.991 1.180 23.181 1.00 0.00 H +ATOM 858 HW2 SOL 285 16.951 0.480 24.231 1.00 0.00 H +ATOM 859 OW SOL 286 13.881 15.731 23.391 1.00 0.00 O +ATOM 860 HW1 SOL 286 14.551 15.851 22.651 1.00 0.00 H +ATOM 861 HW2 SOL 286 13.481 16.621 23.621 1.00 0.00 H +ATOM 862 OW SOL 287 12.801 9.270 25.341 1.00 0.00 O +ATOM 863 HW1 SOL 287 13.401 8.460 25.361 1.00 0.00 H +ATOM 864 HW2 SOL 287 13.201 9.960 24.741 1.00 0.00 H +ATOM 865 OW SOL 288 6.720 16.161 20.161 1.00 0.00 O +ATOM 866 HW1 SOL 288 6.810 16.261 19.171 1.00 0.00 H +ATOM 867 HW2 SOL 288 6.320 15.271 20.371 1.00 0.00 H +ATOM 868 OW SOL 289 2.630 3.260 25.821 1.00 0.00 O +ATOM 869 HW1 SOL 289 1.840 3.770 25.481 1.00 0.00 H +ATOM 870 HW2 SOL 289 2.540 3.110 26.801 1.00 0.00 H +ATOM 871 OW SOL 290 11.941 16.121 18.931 1.00 0.00 O +ATOM 872 HW1 SOL 290 12.001 15.191 19.301 1.00 0.00 H +ATOM 873 HW2 SOL 290 11.351 16.121 18.131 1.00 0.00 H +ATOM 874 OW SOL 291 8.220 10.021 1.111 1.00 0.00 O +ATOM 875 HW1 SOL 291 8.620 10.011 0.191 1.00 0.00 H +ATOM 876 HW2 SOL 291 8.320 10.941 1.511 1.00 0.00 H +ATOM 877 OW SOL 292 9.160 9.100 21.531 1.00 0.00 O +ATOM 878 HW1 SOL 292 9.790 9.480 20.851 1.00 0.00 H +ATOM 879 HW2 SOL 292 9.560 8.270 21.921 1.00 0.00 H +ATOM 880 OW SOL 293 15.041 16.071 19.061 1.00 0.00 O +ATOM 881 HW1 SOL 293 14.121 16.441 19.131 1.00 0.00 H +ATOM 882 HW2 SOL 293 15.421 16.271 18.161 1.00 0.00 H +ATOM 883 OW SOL 294 10.391 10.981 25.581 1.00 0.00 O +ATOM 884 HW1 SOL 294 9.691 10.511 26.121 1.00 0.00 H +ATOM 885 HW2 SOL 294 10.981 10.301 25.151 1.00 0.00 H +ATOM 886 OW SOL 295 10.141 2.360 28.331 1.00 0.00 O +ATOM 887 HW1 SOL 295 10.061 2.000 27.401 1.00 0.00 H +ATOM 888 HW2 SOL 295 10.121 1.600 28.981 1.00 0.00 H +ATOM 889 OW SOL 296 5.900 14.871 23.531 1.00 0.00 O +ATOM 890 HW1 SOL 296 6.320 14.291 22.831 1.00 0.00 H +ATOM 891 HW2 SOL 296 5.460 15.661 23.091 1.00 0.00 H +ATOM 892 OW SOL 297 17.091 3.850 1.201 1.00 0.00 O +ATOM 893 HW1 SOL 297 17.821 4.540 1.241 1.00 0.00 H +ATOM 894 HW2 SOL 297 17.371 3.100 0.611 1.00 0.00 H +ATOM 895 OW SOL 298 2.550 13.481 21.521 1.00 0.00 O +ATOM 896 HW1 SOL 298 1.590 13.491 21.251 1.00 0.00 H +ATOM 897 HW2 SOL 298 2.670 14.011 22.361 1.00 0.00 H +ATOM 898 OW SOL 299 0.750 3.450 18.951 1.00 0.00 O +ATOM 899 HW1 SOL 299 -0.170 3.170 18.661 1.00 0.00 H +ATOM 900 HW2 SOL 299 1.060 4.220 18.391 1.00 0.00 H +ATOM 901 OW SOL 300 11.831 13.351 19.811 1.00 0.00 O +ATOM 902 HW1 SOL 300 10.841 13.241 19.831 1.00 0.00 H +ATOM 903 HW2 SOL 300 12.171 13.501 20.741 1.00 0.00 H +ATOM 904 OW SOL 301 14.931 17.671 28.211 1.00 0.00 O +ATOM 905 HW1 SOL 301 15.261 18.311 27.521 1.00 0.00 H +ATOM 906 HW2 SOL 301 15.591 17.611 28.961 1.00 0.00 H +ATOM 907 OW SOL 302 16.741 8.830 31.161 1.00 0.00 O +ATOM 908 HW1 SOL 302 16.471 7.940 30.791 1.00 0.00 H +ATOM 909 HW2 SOL 302 16.751 9.510 30.431 1.00 0.00 H +ATOM 910 OW SOL 303 12.251 3.250 23.111 1.00 0.00 O +ATOM 911 HW1 SOL 303 12.901 2.510 23.001 1.00 0.00 H +ATOM 912 HW2 SOL 303 12.451 3.750 23.951 1.00 0.00 H +ATOM 913 OW SOL 304 5.940 7.450 25.141 1.00 0.00 O +ATOM 914 HW1 SOL 304 6.440 8.300 24.951 1.00 0.00 H +ATOM 915 HW2 SOL 304 5.060 7.470 24.661 1.00 0.00 H +ATOM 916 OW SOL 305 8.590 13.741 18.781 1.00 0.00 O +ATOM 917 HW1 SOL 305 8.130 13.891 19.661 1.00 0.00 H +ATOM 918 HW2 SOL 305 9.030 14.591 18.481 1.00 0.00 H +ATOM 919 OW SOL 306 6.610 17.901 28.151 1.00 0.00 O +ATOM 920 HW1 SOL 306 6.150 18.781 28.021 1.00 0.00 H +ATOM 921 HW2 SOL 306 7.600 18.021 28.081 1.00 0.00 H +ATOM 922 OW SOL 307 8.590 9.561 27.231 1.00 0.00 O +ATOM 923 HW1 SOL 307 9.130 8.871 27.711 1.00 0.00 H +ATOM 924 HW2 SOL 307 8.270 10.251 27.891 1.00 0.00 H +ATOM 925 OW SOL 308 10.831 9.841 19.491 1.00 0.00 O +ATOM 926 HW1 SOL 308 10.601 10.371 18.671 1.00 0.00 H +ATOM 927 HW2 SOL 308 11.641 9.281 19.301 1.00 0.00 H +ATOM 928 OW SOL 309 18.611 15.691 27.131 1.00 0.00 O +ATOM 929 HW1 SOL 309 17.901 15.571 26.431 1.00 0.00 H +ATOM 930 HW2 SOL 309 18.621 14.901 27.731 1.00 0.00 H +ATOM 931 OW SOL 310 0.790 12.401 25.151 1.00 0.00 O +ATOM 932 HW1 SOL 310 0.780 11.931 26.031 1.00 0.00 H +ATOM 933 HW2 SOL 310 1.610 12.121 24.641 1.00 0.00 H +ATOM 934 OW SOL 311 4.280 4.240 23.821 1.00 0.00 O +ATOM 935 HW1 SOL 311 4.580 3.520 23.201 1.00 0.00 H +ATOM 936 HW2 SOL 311 3.890 3.840 24.651 1.00 0.00 H +ATOM 937 OW SOL 312 17.051 14.871 29.661 1.00 0.00 O +ATOM 938 HW1 SOL 312 16.121 14.621 29.391 1.00 0.00 H +ATOM 939 HW2 SOL 312 17.311 14.371 30.481 1.00 0.00 H +ATOM 940 OW SOL 313 8.120 15.861 25.491 1.00 0.00 O +ATOM 941 HW1 SOL 313 8.440 15.961 24.551 1.00 0.00 H +ATOM 942 HW2 SOL 313 7.330 15.241 25.511 1.00 0.00 H +ATOM 943 OW SOL 314 14.241 2.140 29.741 1.00 0.00 O +ATOM 944 HW1 SOL 314 14.761 1.490 30.291 1.00 0.00 H +ATOM 945 HW2 SOL 314 13.751 2.770 30.351 1.00 0.00 H +ATOM 946 OW SOL 315 10.011 0.340 30.161 1.00 0.00 O +ATOM 947 HW1 SOL 315 9.381 -0.380 29.851 1.00 0.00 H +ATOM 948 HW2 SOL 315 10.941 -0.020 30.161 1.00 0.00 H +ATOM 949 OW SOL 316 7.700 13.301 21.631 1.00 0.00 O +ATOM 950 HW1 SOL 316 7.240 12.431 21.801 1.00 0.00 H +ATOM 951 HW2 SOL 316 8.610 13.271 22.041 1.00 0.00 H +ATOM 952 OW SOL 317 13.521 0.520 20.301 1.00 0.00 O +ATOM 953 HW1 SOL 317 13.871 0.110 19.461 1.00 0.00 H +ATOM 954 HW2 SOL 317 12.621 0.140 20.501 1.00 0.00 H +ATOM 955 OW SOL 318 13.001 4.530 25.531 1.00 0.00 O +ATOM 956 HW1 SOL 318 12.411 5.330 25.571 1.00 0.00 H +ATOM 957 HW2 SOL 318 13.151 4.180 26.461 1.00 0.00 H +ATOM 958 OW SOL 319 15.931 2.210 27.441 1.00 0.00 O +ATOM 959 HW1 SOL 319 15.091 2.200 27.981 1.00 0.00 H +ATOM 960 HW2 SOL 319 15.951 3.040 26.881 1.00 0.00 H +ATOM 961 OW SOL 320 0.390 10.771 21.621 1.00 0.00 O +ATOM 962 HW1 SOL 320 1.380 10.661 21.531 1.00 0.00 H +ATOM 963 HW2 SOL 320 -0.010 9.911 21.941 1.00 0.00 H +ATOM 964 OW SOL 321 8.750 16.461 21.991 1.00 0.00 O +ATOM 965 HW1 SOL 321 7.980 16.111 21.451 1.00 0.00 H +ATOM 966 HW2 SOL 321 8.430 17.171 22.611 1.00 0.00 H +ATOM 967 OW SOL 322 17.431 24.801 8.560 1.00 0.00 O +ATOM 968 HW1 SOL 322 17.761 25.741 8.560 1.00 0.00 H +ATOM 969 HW2 SOL 322 17.941 24.261 9.220 1.00 0.00 H +ATOM 970 OW SOL 323 11.351 25.651 7.170 1.00 0.00 O +ATOM 971 HW1 SOL 323 11.921 26.431 6.920 1.00 0.00 H +ATOM 972 HW2 SOL 323 10.751 25.911 7.930 1.00 0.00 H +ATOM 973 OW SOL 324 17.551 24.691 2.310 1.00 0.00 O +ATOM 974 HW1 SOL 324 17.431 24.561 1.320 1.00 0.00 H +ATOM 975 HW2 SOL 324 17.251 23.881 2.800 1.00 0.00 H +ATOM 976 OW SOL 325 7.680 30.061 10.231 1.00 0.00 O +ATOM 977 HW1 SOL 325 6.900 30.231 10.831 1.00 0.00 H +ATOM 978 HW2 SOL 325 8.020 30.931 9.871 1.00 0.00 H +ATOM 979 OW SOL 326 8.500 26.601 18.231 1.00 0.00 O +ATOM 980 HW1 SOL 326 8.460 27.361 18.881 1.00 0.00 H +ATOM 981 HW2 SOL 326 8.720 26.961 17.321 1.00 0.00 H +ATOM 982 OW SOL 327 6.850 28.741 6.650 1.00 0.00 O +ATOM 983 HW1 SOL 327 7.540 28.581 7.350 1.00 0.00 H +ATOM 984 HW2 SOL 327 6.120 29.311 7.030 1.00 0.00 H +ATOM 985 OW SOL 328 4.380 22.541 14.991 1.00 0.00 O +ATOM 986 HW1 SOL 328 5.200 21.981 15.081 1.00 0.00 H +ATOM 987 HW2 SOL 328 3.570 21.961 15.031 1.00 0.00 H +ATOM 988 OW SOL 329 16.031 23.091 7.370 1.00 0.00 O +ATOM 989 HW1 SOL 329 15.291 23.551 6.870 1.00 0.00 H +ATOM 990 HW2 SOL 329 16.541 23.771 7.900 1.00 0.00 H +ATOM 991 OW SOL 330 2.400 29.531 8.860 1.00 0.00 O +ATOM 992 HW1 SOL 330 2.540 28.691 9.380 1.00 0.00 H +ATOM 993 HW2 SOL 330 1.850 30.171 9.410 1.00 0.00 H +ATOM 994 OW SOL 331 6.060 28.261 1.230 1.00 0.00 O +ATOM 995 HW1 SOL 331 6.130 29.101 0.690 1.00 0.00 H +ATOM 996 HW2 SOL 331 6.520 28.391 2.110 1.00 0.00 H +ATOM 997 OW SOL 332 15.941 19.761 14.801 1.00 0.00 O +ATOM 998 HW1 SOL 332 15.761 20.431 14.081 1.00 0.00 H +ATOM 999 HW2 SOL 332 15.911 20.221 15.691 1.00 0.00 H +ATOM 1000 OW SOL 333 1.220 25.051 5.630 1.00 0.00 O +ATOM 1001 HW1 SOL 333 0.770 24.171 5.800 1.00 0.00 H +ATOM 1002 HW2 SOL 333 1.210 25.591 6.470 1.00 0.00 H +ATOM 1003 OW SOL 334 16.891 27.841 6.120 1.00 0.00 O +ATOM 1004 HW1 SOL 334 17.841 27.551 6.200 1.00 0.00 H +ATOM 1005 HW2 SOL 334 16.811 28.491 5.370 1.00 0.00 H +ATOM 1006 OW SOL 335 16.411 29.701 4.320 1.00 0.00 O +ATOM 1007 HW1 SOL 335 17.271 29.721 3.800 1.00 0.00 H +ATOM 1008 HW2 SOL 335 16.551 30.171 5.200 1.00 0.00 H +ATOM 1009 OW SOL 336 1.130 25.991 15.971 1.00 0.00 O +ATOM 1010 HW1 SOL 336 2.010 25.861 16.421 1.00 0.00 H +ATOM 1011 HW2 SOL 336 1.000 26.961 15.751 1.00 0.00 H +ATOM 1012 OW SOL 337 6.130 1.041 7.260 1.00 0.00 O +ATOM 1013 HW1 SOL 337 5.640 0.171 7.350 1.00 0.00 H +ATOM 1014 HW2 SOL 337 5.900 1.471 6.390 1.00 0.00 H +ATOM 1015 OW SOL 338 12.931 30.901 14.231 1.00 0.00 O +ATOM 1016 HW1 SOL 338 13.301 30.171 13.651 1.00 0.00 H +ATOM 1017 HW2 SOL 338 13.451 30.951 15.081 1.00 0.00 H +ATOM 1018 OW SOL 339 8.090 18.661 5.020 1.00 0.00 O +ATOM 1019 HW1 SOL 339 8.490 19.571 4.930 1.00 0.00 H +ATOM 1020 HW2 SOL 339 7.090 18.741 5.080 1.00 0.00 H +ATOM 1021 OW SOL 340 15.251 28.611 1.900 1.00 0.00 O +ATOM 1022 HW1 SOL 340 14.621 27.851 2.030 1.00 0.00 H +ATOM 1023 HW2 SOL 340 15.731 28.791 2.760 1.00 0.00 H +ATOM 1024 OW SOL 341 3.170 21.131 18.011 1.00 0.00 O +ATOM 1025 HW1 SOL 341 3.880 21.841 18.071 1.00 0.00 H +ATOM 1026 HW2 SOL 341 2.290 21.521 18.291 1.00 0.00 H +ATOM 1027 OW SOL 342 5.980 25.911 2.700 1.00 0.00 O +ATOM 1028 HW1 SOL 342 6.220 26.601 2.020 1.00 0.00 H +ATOM 1029 HW2 SOL 342 5.200 26.241 3.240 1.00 0.00 H +ATOM 1030 OW SOL 343 12.811 22.071 9.441 1.00 0.00 O +ATOM 1031 HW1 SOL 343 11.951 21.571 9.311 1.00 0.00 H +ATOM 1032 HW2 SOL 343 13.431 21.531 10.001 1.00 0.00 H +ATOM 1033 OW SOL 344 8.070 24.671 14.651 1.00 0.00 O +ATOM 1034 HW1 SOL 344 7.600 24.641 15.541 1.00 0.00 H +ATOM 1035 HW2 SOL 344 7.560 24.121 13.991 1.00 0.00 H +ATOM 1036 OW SOL 345 13.941 23.311 16.741 1.00 0.00 O +ATOM 1037 HW1 SOL 345 13.741 23.741 17.621 1.00 0.00 H +ATOM 1038 HW2 SOL 345 14.721 22.691 16.831 1.00 0.00 H +ATOM 1039 OW SOL 346 9.731 27.521 15.721 1.00 0.00 O +ATOM 1040 HW1 SOL 346 10.191 26.681 15.431 1.00 0.00 H +ATOM 1041 HW2 SOL 346 9.171 27.861 14.971 1.00 0.00 H +ATOM 1042 OW SOL 347 9.911 22.721 12.421 1.00 0.00 O +ATOM 1043 HW1 SOL 347 9.141 23.061 12.961 1.00 0.00 H +ATOM 1044 HW2 SOL 347 9.571 22.211 11.631 1.00 0.00 H +ATOM 1045 OW SOL 348 10.411 25.631 4.290 1.00 0.00 O +ATOM 1046 HW1 SOL 348 10.671 25.591 5.250 1.00 0.00 H +ATOM 1047 HW2 SOL 348 9.561 25.121 4.150 1.00 0.00 H +ATOM 1048 OW SOL 349 8.650 22.101 1.950 1.00 0.00 O +ATOM 1049 HW1 SOL 349 9.240 22.731 1.460 1.00 0.00 H +ATOM 1050 HW2 SOL 349 8.840 21.161 1.660 1.00 0.00 H +ATOM 1051 OW SOL 350 17.191 24.471 18.311 1.00 0.00 O +ATOM 1052 HW1 SOL 350 16.931 25.361 17.951 1.00 0.00 H +ATOM 1053 HW2 SOL 350 17.171 23.791 17.581 1.00 0.00 H +ATOM 1054 OW SOL 351 13.621 30.061 5.450 1.00 0.00 O +ATOM 1055 HW1 SOL 351 14.451 29.771 4.970 1.00 0.00 H +ATOM 1056 HW2 SOL 351 13.131 30.731 4.890 1.00 0.00 H +ATOM 1057 OW SOL 352 5.500 20.581 8.850 1.00 0.00 O +ATOM 1058 HW1 SOL 352 5.450 20.531 9.850 1.00 0.00 H +ATOM 1059 HW2 SOL 352 5.520 21.541 8.560 1.00 0.00 H +ATOM 1060 OW SOL 353 17.951 29.281 8.730 1.00 0.00 O +ATOM 1061 HW1 SOL 353 17.331 29.131 7.970 1.00 0.00 H +ATOM 1062 HW2 SOL 353 17.431 29.391 9.580 1.00 0.00 H +ATOM 1063 OW SOL 354 3.210 28.051 2.420 1.00 0.00 O +ATOM 1064 HW1 SOL 354 4.030 28.441 2.000 1.00 0.00 H +ATOM 1065 HW2 SOL 354 2.940 27.231 1.930 1.00 0.00 H +ATOM 1066 OW SOL 355 14.581 25.971 7.280 1.00 0.00 O +ATOM 1067 HW1 SOL 355 14.531 25.321 8.030 1.00 0.00 H +ATOM 1068 HW2 SOL 355 15.381 26.561 7.410 1.00 0.00 H +ATOM 1069 OW SOL 356 2.020 21.471 14.981 1.00 0.00 O +ATOM 1070 HW1 SOL 356 1.220 22.071 14.851 1.00 0.00 H +ATOM 1071 HW2 SOL 356 1.920 20.981 15.841 1.00 0.00 H +ATOM 1072 OW SOL 357 14.001 19.691 4.260 1.00 0.00 O +ATOM 1073 HW1 SOL 357 13.761 19.321 3.360 1.00 0.00 H +ATOM 1074 HW2 SOL 357 14.991 19.851 4.300 1.00 0.00 H +ATOM 1075 OW SOL 358 3.820 25.621 4.800 1.00 0.00 O +ATOM 1076 HW1 SOL 358 4.270 24.721 4.770 1.00 0.00 H +ATOM 1077 HW2 SOL 358 2.880 25.511 5.130 1.00 0.00 H +ATOM 1078 OW SOL 359 15.471 20.841 17.291 1.00 0.00 O +ATOM 1079 HW1 SOL 359 15.421 21.211 18.211 1.00 0.00 H +ATOM 1080 HW2 SOL 359 14.751 20.151 17.171 1.00 0.00 H +ATOM 1081 OW SOL 360 6.140 19.841 1.170 1.00 0.00 O +ATOM 1082 HW1 SOL 360 7.120 19.621 1.240 1.00 0.00 H +ATOM 1083 HW2 SOL 360 5.830 19.671 0.240 1.00 0.00 H +ATOM 1084 OW SOL 361 7.810 21.261 17.491 1.00 0.00 O +ATOM 1085 HW1 SOL 361 8.480 20.651 17.921 1.00 0.00 H +ATOM 1086 HW2 SOL 361 7.080 21.451 18.141 1.00 0.00 H +ATOM 1087 OW SOL 362 13.511 24.521 14.331 1.00 0.00 O +ATOM 1088 HW1 SOL 362 13.791 24.091 15.181 1.00 0.00 H +ATOM 1089 HW2 SOL 362 13.761 25.481 14.341 1.00 0.00 H +ATOM 1090 OW SOL 363 9.220 23.651 8.990 1.00 0.00 O +ATOM 1091 HW1 SOL 363 8.970 23.561 8.030 1.00 0.00 H +ATOM 1092 HW2 SOL 363 9.700 22.831 9.300 1.00 0.00 H +ATOM 1093 OW SOL 364 5.390 19.261 5.120 1.00 0.00 O +ATOM 1094 HW1 SOL 364 4.580 19.271 5.700 1.00 0.00 H +ATOM 1095 HW2 SOL 364 5.420 20.091 4.570 1.00 0.00 H +ATOM 1096 OW SOL 365 2.970 18.971 1.710 1.00 0.00 O +ATOM 1097 HW1 SOL 365 3.460 19.811 1.500 1.00 0.00 H +ATOM 1098 HW2 SOL 365 3.590 18.321 2.160 1.00 0.00 H +ATOM 1099 OW SOL 366 9.351 20.981 4.800 1.00 0.00 O +ATOM 1100 HW1 SOL 366 8.871 21.391 4.020 1.00 0.00 H +ATOM 1101 HW2 SOL 366 10.341 20.961 4.610 1.00 0.00 H +ATOM 1102 OW SOL 367 10.761 25.451 14.641 1.00 0.00 O +ATOM 1103 HW1 SOL 367 9.961 24.841 14.671 1.00 0.00 H +ATOM 1104 HW2 SOL 367 11.571 24.921 14.401 1.00 0.00 H +ATOM 1105 OW SOL 368 4.590 30.141 7.410 1.00 0.00 O +ATOM 1106 HW1 SOL 368 3.880 29.871 8.060 1.00 0.00 H +ATOM 1107 HW2 SOL 368 4.330 29.861 6.480 1.00 0.00 H +ATOM 1108 OW SOL 369 10.321 24.111 0.160 1.00 0.00 O +ATOM 1109 HW1 SOL 369 9.911 24.931 -0.230 1.00 0.00 H +ATOM 1110 HW2 SOL 369 10.961 24.371 0.890 1.00 0.00 H +ATOM 1111 OW SOL 370 5.610 20.841 11.471 1.00 0.00 O +ATOM 1112 HW1 SOL 370 5.990 20.001 11.841 1.00 0.00 H +ATOM 1113 HW2 SOL 370 4.730 21.031 11.911 1.00 0.00 H +ATOM 1114 OW SOL 371 8.660 23.161 6.420 1.00 0.00 O +ATOM 1115 HW1 SOL 371 8.340 23.881 5.800 1.00 0.00 H +ATOM 1116 HW2 SOL 371 8.900 22.351 5.890 1.00 0.00 H +ATOM 1117 OW SOL 372 10.171 19.011 7.530 1.00 0.00 O +ATOM 1118 HW1 SOL 372 9.451 19.061 6.840 1.00 0.00 H +ATOM 1119 HW2 SOL 372 9.931 18.321 8.220 1.00 0.00 H +ATOM 1120 OW SOL 373 14.291 30.351 8.670 1.00 0.00 O +ATOM 1121 HW1 SOL 373 13.741 29.511 8.600 1.00 0.00 H +ATOM 1122 HW2 SOL 373 14.551 30.641 7.750 1.00 0.00 H +ATOM 1123 OW SOL 374 14.661 24.521 9.921 1.00 0.00 O +ATOM 1124 HW1 SOL 374 14.361 23.571 9.991 1.00 0.00 H +ATOM 1125 HW2 SOL 374 15.391 24.681 10.581 1.00 0.00 H +ATOM 1126 OW SOL 375 18.571 26.951 3.770 1.00 0.00 O +ATOM 1127 HW1 SOL 375 18.991 26.311 4.410 1.00 0.00 H +ATOM 1128 HW2 SOL 375 18.191 26.441 2.990 1.00 0.00 H +ATOM 1129 OW SOL 376 13.901 24.371 0.780 1.00 0.00 O +ATOM 1130 HW1 SOL 376 13.361 24.161 1.590 1.00 0.00 H +ATOM 1131 HW2 SOL 376 14.811 23.961 0.870 1.00 0.00 H +ATOM 1132 OW SOL 377 5.270 21.181 3.280 1.00 0.00 O +ATOM 1133 HW1 SOL 377 5.540 20.591 2.530 1.00 0.00 H +ATOM 1134 HW2 SOL 377 5.270 22.131 2.970 1.00 0.00 H +ATOM 1135 OW SOL 378 17.541 30.851 15.881 1.00 0.00 O +ATOM 1136 HW1 SOL 378 18.451 30.461 15.751 1.00 0.00 H +ATOM 1137 HW2 SOL 378 17.621 31.811 16.121 1.00 0.00 H +ATOM 1138 OW SOL 379 16.381 29.611 10.791 1.00 0.00 O +ATOM 1139 HW1 SOL 379 16.431 30.421 11.381 1.00 0.00 H +ATOM 1140 HW2 SOL 379 15.521 29.631 10.281 1.00 0.00 H +ATOM 1141 OW SOL 380 9.150 19.511 14.021 1.00 0.00 O +ATOM 1142 HW1 SOL 380 9.400 19.311 13.071 1.00 0.00 H +ATOM 1143 HW2 SOL 380 9.870 20.071 14.441 1.00 0.00 H +ATOM 1144 OW SOL 381 9.801 29.781 17.191 1.00 0.00 O +ATOM 1145 HW1 SOL 381 8.811 29.841 17.291 1.00 0.00 H +ATOM 1146 HW2 SOL 381 10.031 28.981 16.631 1.00 0.00 H +ATOM 1147 OW SOL 382 7.050 29.121 3.680 1.00 0.00 O +ATOM 1148 HW1 SOL 382 6.910 29.191 4.670 1.00 0.00 H +ATOM 1149 HW2 SOL 382 7.890 28.611 3.500 1.00 0.00 H +ATOM 1150 OW SOL 383 4.100 26.751 12.511 1.00 0.00 O +ATOM 1151 HW1 SOL 383 4.960 26.871 13.011 1.00 0.00 H +ATOM 1152 HW2 SOL 383 3.680 25.881 12.781 1.00 0.00 H +ATOM 1153 OW SOL 384 12.741 22.481 12.621 1.00 0.00 O +ATOM 1154 HW1 SOL 384 12.951 23.221 13.261 1.00 0.00 H +ATOM 1155 HW2 SOL 384 11.851 22.651 12.191 1.00 0.00 H +ATOM 1156 OW SOL 385 3.670 29.621 5.010 1.00 0.00 O +ATOM 1157 HW1 SOL 385 3.600 30.451 4.450 1.00 0.00 H +ATOM 1158 HW2 SOL 385 3.710 28.821 4.410 1.00 0.00 H +ATOM 1159 OW SOL 386 5.660 23.991 8.650 1.00 0.00 O +ATOM 1160 HW1 SOL 386 5.780 24.651 7.910 1.00 0.00 H +ATOM 1161 HW2 SOL 386 6.120 24.331 9.480 1.00 0.00 H +ATOM 1162 OW SOL 387 15.821 25.011 4.720 1.00 0.00 O +ATOM 1163 HW1 SOL 387 15.511 25.621 5.450 1.00 0.00 H +ATOM 1164 HW2 SOL 387 16.321 25.531 4.030 1.00 0.00 H +ATOM 1165 OW SOL 388 4.020 26.131 15.981 1.00 0.00 O +ATOM 1166 HW1 SOL 388 4.700 26.681 15.511 1.00 0.00 H +ATOM 1167 HW2 SOL 388 4.420 25.251 16.251 1.00 0.00 H +ATOM 1168 OW SOL 389 15.871 26.411 16.701 1.00 0.00 O +ATOM 1169 HW1 SOL 389 14.951 26.791 16.651 1.00 0.00 H +ATOM 1170 HW2 SOL 389 16.471 26.881 16.051 1.00 0.00 H +ATOM 1171 OW SOL 390 10.131 19.671 17.701 1.00 0.00 O +ATOM 1172 HW1 SOL 390 10.191 20.521 17.181 1.00 0.00 H +ATOM 1173 HW2 SOL 390 10.451 18.911 17.131 1.00 0.00 H +ATOM 1174 OW SOL 391 5.040 19.121 17.401 1.00 0.00 O +ATOM 1175 HW1 SOL 391 4.620 18.551 16.701 1.00 0.00 H +ATOM 1176 HW2 SOL 391 4.380 19.811 17.721 1.00 0.00 H +ATOM 1177 OW SOL 392 5.730 27.321 10.291 1.00 0.00 O +ATOM 1178 HW1 SOL 392 6.170 28.211 10.201 1.00 0.00 H +ATOM 1179 HW2 SOL 392 5.100 27.321 11.061 1.00 0.00 H +ATOM 1180 OW SOL 393 13.601 27.241 10.451 1.00 0.00 O +ATOM 1181 HW1 SOL 393 12.851 27.241 9.791 1.00 0.00 H +ATOM 1182 HW2 SOL 393 13.971 26.321 10.541 1.00 0.00 H +ATOM 1183 OW SOL 394 12.091 23.871 2.750 1.00 0.00 O +ATOM 1184 HW1 SOL 394 12.221 23.031 3.290 1.00 0.00 H +ATOM 1185 HW2 SOL 394 11.801 24.611 3.350 1.00 0.00 H +ATOM 1186 OW SOL 395 0.370 0.491 12.821 1.00 0.00 O +ATOM 1187 HW1 SOL 395 0.900 0.001 13.501 1.00 0.00 H +ATOM 1188 HW2 SOL 395 0.590 1.471 12.871 1.00 0.00 H +ATOM 1189 OW SOL 396 7.320 24.961 10.641 1.00 0.00 O +ATOM 1190 HW1 SOL 396 7.910 24.701 9.881 1.00 0.00 H +ATOM 1191 HW2 SOL 396 7.040 25.921 10.531 1.00 0.00 H +ATOM 1192 OW SOL 397 17.281 27.971 18.541 1.00 0.00 O +ATOM 1193 HW1 SOL 397 16.821 27.901 17.651 1.00 0.00 H +ATOM 1194 HW2 SOL 397 16.661 28.411 19.201 1.00 0.00 H +ATOM 1195 OW SOL 398 3.070 19.251 6.180 1.00 0.00 O +ATOM 1196 HW1 SOL 398 2.960 20.191 6.510 1.00 0.00 H +ATOM 1197 HW2 SOL 398 3.020 18.621 6.950 1.00 0.00 H +ATOM 1198 OW SOL 399 16.221 22.291 3.740 1.00 0.00 O +ATOM 1199 HW1 SOL 399 16.241 21.531 4.380 1.00 0.00 H +ATOM 1200 HW2 SOL 399 15.741 23.061 4.140 1.00 0.00 H +ATOM 1201 OW SOL 400 10.231 26.281 9.661 1.00 0.00 O +ATOM 1202 HW1 SOL 400 10.381 26.491 10.621 1.00 0.00 H +ATOM 1203 HW2 SOL 400 9.931 25.331 9.571 1.00 0.00 H +ATOM 1204 OW SOL 401 3.500 27.601 18.041 1.00 0.00 O +ATOM 1205 HW1 SOL 401 4.260 28.041 18.521 1.00 0.00 H +ATOM 1206 HW2 SOL 401 3.850 27.131 17.221 1.00 0.00 H +ATOM 1207 OW SOL 402 15.401 21.361 1.250 1.00 0.00 O +ATOM 1208 HW1 SOL 402 14.791 20.611 1.480 1.00 0.00 H +ATOM 1209 HW2 SOL 402 15.621 21.881 2.080 1.00 0.00 H +ATOM 1210 OW SOL 403 13.031 27.001 0.420 1.00 0.00 O +ATOM 1211 HW1 SOL 403 13.371 26.071 0.570 1.00 0.00 H +ATOM 1212 HW2 SOL 403 13.211 27.271 -0.530 1.00 0.00 H +ATOM 1213 OW SOL 404 3.190 26.721 9.491 1.00 0.00 O +ATOM 1214 HW1 SOL 404 4.120 27.081 9.541 1.00 0.00 H +ATOM 1215 HW2 SOL 404 3.130 25.871 10.011 1.00 0.00 H +ATOM 1216 OW SOL 405 3.390 23.711 10.061 1.00 0.00 O +ATOM 1217 HW1 SOL 405 2.870 22.881 9.891 1.00 0.00 H +ATOM 1218 HW2 SOL 405 4.160 23.761 9.421 1.00 0.00 H +ATOM 1219 OW SOL 406 11.381 22.421 16.781 1.00 0.00 O +ATOM 1220 HW1 SOL 406 10.931 23.051 17.421 1.00 0.00 H +ATOM 1221 HW2 SOL 406 12.311 22.731 16.611 1.00 0.00 H +ATOM 1222 OW SOL 407 11.601 20.691 14.771 1.00 0.00 O +ATOM 1223 HW1 SOL 407 11.601 21.331 15.541 1.00 0.00 H +ATOM 1224 HW2 SOL 407 11.881 21.171 13.941 1.00 0.00 H +ATOM 1225 OW SOL 408 10.021 26.581 12.381 1.00 0.00 O +ATOM 1226 HW1 SOL 408 10.431 26.261 13.241 1.00 0.00 H +ATOM 1227 HW2 SOL 408 9.061 26.311 12.351 1.00 0.00 H +ATOM 1228 OW SOL 409 0.400 24.061 11.141 1.00 0.00 O +ATOM 1229 HW1 SOL 409 1.250 23.731 10.731 1.00 0.00 H +ATOM 1230 HW2 SOL 409 0.530 24.211 12.121 1.00 0.00 H +ATOM 1231 OW SOL 410 1.890 23.821 17.221 1.00 0.00 O +ATOM 1232 HW1 SOL 410 2.480 23.421 16.521 1.00 0.00 H +ATOM 1233 HW2 SOL 410 1.310 24.531 16.811 1.00 0.00 H +ATOM 1234 OW SOL 411 13.691 28.121 16.601 1.00 0.00 O +ATOM 1235 HW1 SOL 411 14.081 29.011 16.801 1.00 0.00 H +ATOM 1236 HW2 SOL 411 13.791 27.921 15.631 1.00 0.00 H +ATOM 1237 OW SOL 412 8.150 24.341 3.250 1.00 0.00 O +ATOM 1238 HW1 SOL 412 8.220 23.451 2.790 1.00 0.00 H +ATOM 1239 HW2 SOL 412 7.210 24.681 3.170 1.00 0.00 H +ATOM 1240 OW SOL 413 16.571 24.661 12.061 1.00 0.00 O +ATOM 1241 HW1 SOL 413 16.191 23.971 12.681 1.00 0.00 H +ATOM 1242 HW2 SOL 413 17.391 24.301 11.621 1.00 0.00 H +ATOM 1243 OW SOL 414 6.710 23.261 12.691 1.00 0.00 O +ATOM 1244 HW1 SOL 414 6.370 22.371 12.391 1.00 0.00 H +ATOM 1245 HW2 SOL 414 6.970 23.801 11.891 1.00 0.00 H +ATOM 1246 OW SOL 415 4.730 23.621 1.910 1.00 0.00 O +ATOM 1247 HW1 SOL 415 5.340 24.421 1.950 1.00 0.00 H +ATOM 1248 HW2 SOL 415 3.780 23.931 1.980 1.00 0.00 H +ATOM 1249 OW SOL 416 1.590 29.991 14.661 1.00 0.00 O +ATOM 1250 HW1 SOL 416 1.810 29.381 15.421 1.00 0.00 H +ATOM 1251 HW2 SOL 416 1.690 29.501 13.801 1.00 0.00 H +ATOM 1252 OW SOL 417 13.471 29.211 12.341 1.00 0.00 O +ATOM 1253 HW1 SOL 417 13.711 28.581 11.601 1.00 0.00 H +ATOM 1254 HW2 SOL 417 12.571 29.611 12.161 1.00 0.00 H +ATOM 1255 OW SOL 418 13.021 27.171 3.090 1.00 0.00 O +ATOM 1256 HW1 SOL 418 12.161 26.861 3.510 1.00 0.00 H +ATOM 1257 HW2 SOL 418 12.981 27.031 2.100 1.00 0.00 H +ATOM 1258 OW SOL 419 0.830 31.201 10.221 1.00 0.00 O +ATOM 1259 HW1 SOL 419 0.780 31.191 11.221 1.00 0.00 H +ATOM 1260 HW2 SOL 419 0.000 30.791 9.841 1.00 0.00 H +ATOM 1261 OW SOL 420 9.030 19.481 1.330 1.00 0.00 O +ATOM 1262 HW1 SOL 420 9.540 19.491 0.470 1.00 0.00 H +ATOM 1263 HW2 SOL 420 9.590 19.061 2.040 1.00 0.00 H +ATOM 1264 OW SOL 421 17.261 19.971 5.230 1.00 0.00 O +ATOM 1265 HW1 SOL 421 17.991 19.801 4.560 1.00 0.00 H +ATOM 1266 HW2 SOL 421 16.951 19.101 5.610 1.00 0.00 H +ATOM 1267 OW SOL 422 12.801 27.891 6.720 1.00 0.00 O +ATOM 1268 HW1 SOL 422 13.401 27.081 6.740 1.00 0.00 H +ATOM 1269 HW2 SOL 422 13.201 28.581 6.120 1.00 0.00 H +ATOM 1270 OW SOL 423 18.411 20.371 9.631 1.00 0.00 O +ATOM 1271 HW1 SOL 423 18.801 19.521 9.271 1.00 0.00 H +ATOM 1272 HW2 SOL 423 17.431 20.391 9.441 1.00 0.00 H +ATOM 1273 OW SOL 424 2.630 21.881 7.200 1.00 0.00 O +ATOM 1274 HW1 SOL 424 1.840 22.391 6.860 1.00 0.00 H +ATOM 1275 HW2 SOL 424 2.540 21.731 8.180 1.00 0.00 H +ATOM 1276 OW SOL 425 8.220 28.641 13.721 1.00 0.00 O +ATOM 1277 HW1 SOL 425 8.620 28.631 12.801 1.00 0.00 H +ATOM 1278 HW2 SOL 425 8.320 29.561 14.121 1.00 0.00 H +ATOM 1279 OW SOL 426 9.160 27.721 2.910 1.00 0.00 O +ATOM 1280 HW1 SOL 426 9.790 28.101 2.230 1.00 0.00 H +ATOM 1281 HW2 SOL 426 9.560 26.891 3.300 1.00 0.00 H +ATOM 1282 OW SOL 427 3.720 0.271 14.901 1.00 0.00 O +ATOM 1283 HW1 SOL 427 3.590 1.201 14.561 1.00 0.00 H +ATOM 1284 HW2 SOL 427 2.880 -0.249 14.771 1.00 0.00 H +ATOM 1285 OW SOL 428 16.141 0.311 12.891 1.00 0.00 O +ATOM 1286 HW1 SOL 428 16.741 0.341 13.691 1.00 0.00 H +ATOM 1287 HW2 SOL 428 15.391 0.951 13.021 1.00 0.00 H +ATOM 1288 OW SOL 429 10.391 29.601 6.960 1.00 0.00 O +ATOM 1289 HW1 SOL 429 9.691 29.131 7.500 1.00 0.00 H +ATOM 1290 HW2 SOL 429 10.981 28.921 6.530 1.00 0.00 H +ATOM 1291 OW SOL 430 10.141 20.981 9.711 1.00 0.00 O +ATOM 1292 HW1 SOL 430 10.061 20.621 8.781 1.00 0.00 H +ATOM 1293 HW2 SOL 430 10.121 20.221 10.361 1.00 0.00 H +ATOM 1294 OW SOL 431 17.091 22.471 13.811 1.00 0.00 O +ATOM 1295 HW1 SOL 431 17.821 23.161 13.851 1.00 0.00 H +ATOM 1296 HW2 SOL 431 17.371 21.721 13.221 1.00 0.00 H +ATOM 1297 OW SOL 432 6.720 20.651 14.891 1.00 0.00 O +ATOM 1298 HW1 SOL 432 7.620 20.491 14.491 1.00 0.00 H +ATOM 1299 HW2 SOL 432 6.800 20.701 15.881 1.00 0.00 H +ATOM 1300 OW SOL 433 14.401 27.181 13.981 1.00 0.00 O +ATOM 1301 HW1 SOL 433 13.831 27.701 13.351 1.00 0.00 H +ATOM 1302 HW2 SOL 433 15.361 27.301 13.741 1.00 0.00 H +ATOM 1303 OW SOL 434 6.130 27.041 14.311 1.00 0.00 O +ATOM 1304 HW1 SOL 434 6.690 27.851 14.141 1.00 0.00 H +ATOM 1305 HW2 SOL 434 6.720 26.241 14.341 1.00 0.00 H +ATOM 1306 OW SOL 435 7.160 24.271 17.081 1.00 0.00 O +ATOM 1307 HW1 SOL 435 7.350 24.921 17.821 1.00 0.00 H +ATOM 1308 HW2 SOL 435 7.760 23.471 17.171 1.00 0.00 H +ATOM 1309 OW SOL 436 14.501 30.821 16.331 1.00 0.00 O +ATOM 1310 HW1 SOL 436 14.411 30.721 17.321 1.00 0.00 H +ATOM 1311 HW2 SOL 436 15.461 30.751 16.071 1.00 0.00 H +ATOM 1312 OW SOL 437 16.741 27.451 12.541 1.00 0.00 O +ATOM 1313 HW1 SOL 437 16.471 26.561 12.171 1.00 0.00 H +ATOM 1314 HW2 SOL 437 16.751 28.131 11.811 1.00 0.00 H +ATOM 1315 OW SOL 438 12.251 21.871 4.490 1.00 0.00 O +ATOM 1316 HW1 SOL 438 12.901 21.131 4.380 1.00 0.00 H +ATOM 1317 HW2 SOL 438 12.451 22.371 5.330 1.00 0.00 H +ATOM 1318 OW SOL 439 5.940 26.071 6.520 1.00 0.00 O +ATOM 1319 HW1 SOL 439 6.440 26.921 6.330 1.00 0.00 H +ATOM 1320 HW2 SOL 439 5.060 26.091 6.040 1.00 0.00 H +ATOM 1321 OW SOL 440 17.771 22.041 16.421 1.00 0.00 O +ATOM 1322 HW1 SOL 440 17.601 22.351 15.481 1.00 0.00 H +ATOM 1323 HW2 SOL 440 16.931 21.671 16.801 1.00 0.00 H +ATOM 1324 OW SOL 441 17.301 27.961 15.171 1.00 0.00 O +ATOM 1325 HW1 SOL 441 17.681 28.871 15.321 1.00 0.00 H +ATOM 1326 HW2 SOL 441 17.221 27.791 14.181 1.00 0.00 H +ATOM 1327 OW SOL 442 8.590 28.181 8.610 1.00 0.00 O +ATOM 1328 HW1 SOL 442 9.130 27.491 9.090 1.00 0.00 H +ATOM 1329 HW2 SOL 442 8.270 28.871 9.270 1.00 0.00 H +ATOM 1330 OW SOL 443 10.831 28.461 0.870 1.00 0.00 O +ATOM 1331 HW1 SOL 443 10.601 28.991 0.050 1.00 0.00 H +ATOM 1332 HW2 SOL 443 11.641 27.901 0.680 1.00 0.00 H +ATOM 1333 OW SOL 444 0.790 31.021 6.530 1.00 0.00 O +ATOM 1334 HW1 SOL 444 0.780 30.551 7.410 1.00 0.00 H +ATOM 1335 HW2 SOL 444 1.610 30.741 6.020 1.00 0.00 H +ATOM 1336 OW SOL 445 18.241 20.541 12.271 1.00 0.00 O +ATOM 1337 HW1 SOL 445 18.201 19.641 12.711 1.00 0.00 H +ATOM 1338 HW2 SOL 445 18.271 20.431 11.281 1.00 0.00 H +ATOM 1339 OW SOL 446 4.280 22.861 5.200 1.00 0.00 O +ATOM 1340 HW1 SOL 446 4.580 22.141 4.580 1.00 0.00 H +ATOM 1341 HW2 SOL 446 3.890 22.461 6.030 1.00 0.00 H +ATOM 1342 OW SOL 447 3.170 24.091 12.801 1.00 0.00 O +ATOM 1343 HW1 SOL 447 3.550 23.501 13.521 1.00 0.00 H +ATOM 1344 HW2 SOL 447 3.570 23.831 11.921 1.00 0.00 H +ATOM 1345 OW SOL 448 14.241 20.761 11.121 1.00 0.00 O +ATOM 1346 HW1 SOL 448 14.761 20.111 11.671 1.00 0.00 H +ATOM 1347 HW2 SOL 448 13.751 21.391 11.731 1.00 0.00 H +ATOM 1348 OW SOL 449 10.011 18.961 11.541 1.00 0.00 O +ATOM 1349 HW1 SOL 449 9.381 18.241 11.231 1.00 0.00 H +ATOM 1350 HW2 SOL 449 10.941 18.601 11.541 1.00 0.00 H +ATOM 1351 OW SOL 450 7.700 0.691 3.010 1.00 0.00 O +ATOM 1352 HW1 SOL 450 7.240 -0.179 3.180 1.00 0.00 H +ATOM 1353 HW2 SOL 450 8.610 0.661 3.420 1.00 0.00 H +ATOM 1354 OW SOL 451 13.521 19.141 1.680 1.00 0.00 O +ATOM 1355 HW1 SOL 451 13.871 18.731 0.840 1.00 0.00 H +ATOM 1356 HW2 SOL 451 12.621 18.761 1.880 1.00 0.00 H +ATOM 1357 OW SOL 452 13.001 23.151 6.910 1.00 0.00 O +ATOM 1358 HW1 SOL 452 12.411 23.951 6.950 1.00 0.00 H +ATOM 1359 HW2 SOL 452 13.151 22.801 7.840 1.00 0.00 H +ATOM 1360 OW SOL 453 15.931 20.831 8.820 1.00 0.00 O +ATOM 1361 HW1 SOL 453 15.091 20.821 9.360 1.00 0.00 H +ATOM 1362 HW2 SOL 453 15.951 21.661 8.260 1.00 0.00 H +ATOM 1363 OW SOL 454 0.390 29.391 3.000 1.00 0.00 O +ATOM 1364 HW1 SOL 454 1.380 29.281 2.910 1.00 0.00 H +ATOM 1365 HW2 SOL 454 -0.010 28.531 3.320 1.00 0.00 H +ATOM 1366 OW SOL 455 17.431 24.801 27.181 1.00 0.00 O +ATOM 1367 HW1 SOL 455 17.761 25.741 27.181 1.00 0.00 H +ATOM 1368 HW2 SOL 455 17.941 24.261 27.841 1.00 0.00 H +ATOM 1369 OW SOL 456 11.351 25.651 25.791 1.00 0.00 O +ATOM 1370 HW1 SOL 456 11.921 26.431 25.541 1.00 0.00 H +ATOM 1371 HW2 SOL 456 10.751 25.911 26.551 1.00 0.00 H +ATOM 1372 OW SOL 457 17.551 24.691 20.931 1.00 0.00 O +ATOM 1373 HW1 SOL 457 17.431 24.561 19.941 1.00 0.00 H +ATOM 1374 HW2 SOL 457 17.251 23.881 21.421 1.00 0.00 H +ATOM 1375 OW SOL 458 7.680 30.061 28.851 1.00 0.00 O +ATOM 1376 HW1 SOL 458 6.900 30.231 29.451 1.00 0.00 H +ATOM 1377 HW2 SOL 458 8.020 30.931 28.491 1.00 0.00 H +ATOM 1378 OW SOL 459 6.850 28.741 25.271 1.00 0.00 O +ATOM 1379 HW1 SOL 459 7.540 28.581 25.971 1.00 0.00 H +ATOM 1380 HW2 SOL 459 6.120 29.311 25.651 1.00 0.00 H +ATOM 1381 OW SOL 460 2.400 29.531 27.481 1.00 0.00 O +ATOM 1382 HW1 SOL 460 2.540 28.691 28.001 1.00 0.00 H +ATOM 1383 HW2 SOL 460 1.850 30.171 28.031 1.00 0.00 H +ATOM 1384 OW SOL 461 6.060 28.261 19.851 1.00 0.00 O +ATOM 1385 HW1 SOL 461 6.130 29.101 19.311 1.00 0.00 H +ATOM 1386 HW2 SOL 461 6.520 28.391 20.731 1.00 0.00 H +ATOM 1387 OW SOL 462 1.220 25.051 24.251 1.00 0.00 O +ATOM 1388 HW1 SOL 462 0.770 24.171 24.421 1.00 0.00 H +ATOM 1389 HW2 SOL 462 1.210 25.591 25.091 1.00 0.00 H +ATOM 1390 OW SOL 463 16.891 27.841 24.741 1.00 0.00 O +ATOM 1391 HW1 SOL 463 17.841 27.551 24.821 1.00 0.00 H +ATOM 1392 HW2 SOL 463 16.811 28.491 23.991 1.00 0.00 H +ATOM 1393 OW SOL 464 16.411 29.701 22.941 1.00 0.00 O +ATOM 1394 HW1 SOL 464 17.271 29.721 22.421 1.00 0.00 H +ATOM 1395 HW2 SOL 464 16.551 30.171 23.821 1.00 0.00 H +ATOM 1396 OW SOL 465 6.130 1.041 25.881 1.00 0.00 O +ATOM 1397 HW1 SOL 465 5.640 0.171 25.971 1.00 0.00 H +ATOM 1398 HW2 SOL 465 5.900 1.471 25.011 1.00 0.00 H +ATOM 1399 OW SOL 466 8.090 18.661 23.641 1.00 0.00 O +ATOM 1400 HW1 SOL 466 8.490 19.571 23.551 1.00 0.00 H +ATOM 1401 HW2 SOL 466 7.090 18.741 23.701 1.00 0.00 H +ATOM 1402 OW SOL 467 15.251 28.611 20.521 1.00 0.00 O +ATOM 1403 HW1 SOL 467 14.621 27.851 20.651 1.00 0.00 H +ATOM 1404 HW2 SOL 467 15.731 28.791 21.381 1.00 0.00 H +ATOM 1405 OW SOL 468 5.980 25.911 21.321 1.00 0.00 O +ATOM 1406 HW1 SOL 468 6.220 26.601 20.641 1.00 0.00 H +ATOM 1407 HW2 SOL 468 5.200 26.241 21.861 1.00 0.00 H +ATOM 1408 OW SOL 469 12.811 22.071 28.061 1.00 0.00 O +ATOM 1409 HW1 SOL 469 11.951 21.571 27.931 1.00 0.00 H +ATOM 1410 HW2 SOL 469 13.431 21.531 28.621 1.00 0.00 H +ATOM 1411 OW SOL 470 10.411 25.631 22.911 1.00 0.00 O +ATOM 1412 HW1 SOL 470 10.671 25.591 23.871 1.00 0.00 H +ATOM 1413 HW2 SOL 470 9.561 25.121 22.771 1.00 0.00 H +ATOM 1414 OW SOL 471 8.650 22.101 20.571 1.00 0.00 O +ATOM 1415 HW1 SOL 471 9.240 22.731 20.081 1.00 0.00 H +ATOM 1416 HW2 SOL 471 8.840 21.161 20.281 1.00 0.00 H +ATOM 1417 OW SOL 472 13.621 30.061 24.071 1.00 0.00 O +ATOM 1418 HW1 SOL 472 14.451 29.771 23.591 1.00 0.00 H +ATOM 1419 HW2 SOL 472 13.131 30.731 23.511 1.00 0.00 H +ATOM 1420 OW SOL 473 5.500 20.581 27.471 1.00 0.00 O +ATOM 1421 HW1 SOL 473 5.450 20.531 28.471 1.00 0.00 H +ATOM 1422 HW2 SOL 473 5.520 21.541 27.181 1.00 0.00 H +ATOM 1423 OW SOL 474 17.951 29.281 27.351 1.00 0.00 O +ATOM 1424 HW1 SOL 474 17.331 29.131 26.591 1.00 0.00 H +ATOM 1425 HW2 SOL 474 17.431 29.391 28.201 1.00 0.00 H +ATOM 1426 OW SOL 475 3.210 28.051 21.041 1.00 0.00 O +ATOM 1427 HW1 SOL 475 4.030 28.441 20.621 1.00 0.00 H +ATOM 1428 HW2 SOL 475 2.940 27.231 20.551 1.00 0.00 H +ATOM 1429 OW SOL 476 14.581 25.971 25.901 1.00 0.00 O +ATOM 1430 HW1 SOL 476 14.531 25.321 26.651 1.00 0.00 H +ATOM 1431 HW2 SOL 476 15.381 26.561 26.031 1.00 0.00 H +ATOM 1432 OW SOL 477 14.001 19.691 22.881 1.00 0.00 O +ATOM 1433 HW1 SOL 477 13.761 19.321 21.981 1.00 0.00 H +ATOM 1434 HW2 SOL 477 14.991 19.851 22.921 1.00 0.00 H +ATOM 1435 OW SOL 478 3.820 25.621 23.421 1.00 0.00 O +ATOM 1436 HW1 SOL 478 4.270 24.721 23.391 1.00 0.00 H +ATOM 1437 HW2 SOL 478 2.880 25.511 23.751 1.00 0.00 H +ATOM 1438 OW SOL 479 6.140 19.841 19.791 1.00 0.00 O +ATOM 1439 HW1 SOL 479 7.120 19.621 19.861 1.00 0.00 H +ATOM 1440 HW2 SOL 479 5.830 19.671 18.861 1.00 0.00 H +ATOM 1441 OW SOL 480 9.220 23.651 27.611 1.00 0.00 O +ATOM 1442 HW1 SOL 480 8.970 23.561 26.651 1.00 0.00 H +ATOM 1443 HW2 SOL 480 9.700 22.831 27.921 1.00 0.00 H +ATOM 1444 OW SOL 481 5.390 19.261 23.741 1.00 0.00 O +ATOM 1445 HW1 SOL 481 4.580 19.271 24.321 1.00 0.00 H +ATOM 1446 HW2 SOL 481 5.420 20.091 23.191 1.00 0.00 H +ATOM 1447 OW SOL 482 2.970 18.971 20.331 1.00 0.00 O +ATOM 1448 HW1 SOL 482 3.460 19.811 20.121 1.00 0.00 H +ATOM 1449 HW2 SOL 482 3.590 18.321 20.781 1.00 0.00 H +ATOM 1450 OW SOL 483 9.351 20.981 23.421 1.00 0.00 O +ATOM 1451 HW1 SOL 483 8.871 21.391 22.641 1.00 0.00 H +ATOM 1452 HW2 SOL 483 10.341 20.961 23.231 1.00 0.00 H +ATOM 1453 OW SOL 484 4.590 30.141 26.031 1.00 0.00 O +ATOM 1454 HW1 SOL 484 3.880 29.871 26.681 1.00 0.00 H +ATOM 1455 HW2 SOL 484 4.330 29.861 25.101 1.00 0.00 H +ATOM 1456 OW SOL 485 10.321 24.111 18.781 1.00 0.00 O +ATOM 1457 HW1 SOL 485 9.911 24.931 18.391 1.00 0.00 H +ATOM 1458 HW2 SOL 485 10.961 24.371 19.511 1.00 0.00 H +ATOM 1459 OW SOL 486 8.660 23.161 25.041 1.00 0.00 O +ATOM 1460 HW1 SOL 486 8.340 23.881 24.421 1.00 0.00 H +ATOM 1461 HW2 SOL 486 8.900 22.351 24.511 1.00 0.00 H +ATOM 1462 OW SOL 487 10.171 19.011 26.151 1.00 0.00 O +ATOM 1463 HW1 SOL 487 9.451 19.061 25.461 1.00 0.00 H +ATOM 1464 HW2 SOL 487 9.931 18.321 26.841 1.00 0.00 H +ATOM 1465 OW SOL 488 14.291 30.351 27.291 1.00 0.00 O +ATOM 1466 HW1 SOL 488 13.741 29.511 27.221 1.00 0.00 H +ATOM 1467 HW2 SOL 488 14.551 30.641 26.371 1.00 0.00 H +ATOM 1468 OW SOL 489 14.661 24.521 28.541 1.00 0.00 O +ATOM 1469 HW1 SOL 489 14.361 23.571 28.611 1.00 0.00 H +ATOM 1470 HW2 SOL 489 15.391 24.681 29.201 1.00 0.00 H +ATOM 1471 OW SOL 490 18.571 26.951 22.391 1.00 0.00 O +ATOM 1472 HW1 SOL 490 18.991 26.311 23.031 1.00 0.00 H +ATOM 1473 HW2 SOL 490 18.191 26.441 21.611 1.00 0.00 H +ATOM 1474 OW SOL 491 13.901 24.371 19.401 1.00 0.00 O +ATOM 1475 HW1 SOL 491 13.361 24.161 20.211 1.00 0.00 H +ATOM 1476 HW2 SOL 491 14.811 23.961 19.491 1.00 0.00 H +ATOM 1477 OW SOL 492 5.270 21.181 21.901 1.00 0.00 O +ATOM 1478 HW1 SOL 492 5.540 20.591 21.151 1.00 0.00 H +ATOM 1479 HW2 SOL 492 5.270 22.131 21.591 1.00 0.00 H +ATOM 1480 OW SOL 493 16.381 29.611 29.411 1.00 0.00 O +ATOM 1481 HW1 SOL 493 16.431 30.421 30.001 1.00 0.00 H +ATOM 1482 HW2 SOL 493 15.521 29.631 28.901 1.00 0.00 H +ATOM 1483 OW SOL 494 7.050 29.121 22.301 1.00 0.00 O +ATOM 1484 HW1 SOL 494 6.910 29.191 23.291 1.00 0.00 H +ATOM 1485 HW2 SOL 494 7.890 28.611 22.121 1.00 0.00 H +ATOM 1486 OW SOL 495 4.100 26.751 31.131 1.00 0.00 O +ATOM 1487 HW1 SOL 495 4.960 26.871 31.631 1.00 0.00 H +ATOM 1488 HW2 SOL 495 3.680 25.881 31.401 1.00 0.00 H +ATOM 1489 OW SOL 496 3.670 29.621 23.631 1.00 0.00 O +ATOM 1490 HW1 SOL 496 3.600 30.451 23.071 1.00 0.00 H +ATOM 1491 HW2 SOL 496 3.710 28.821 23.031 1.00 0.00 H +ATOM 1492 OW SOL 497 5.660 23.991 27.271 1.00 0.00 O +ATOM 1493 HW1 SOL 497 5.780 24.651 26.531 1.00 0.00 H +ATOM 1494 HW2 SOL 497 6.120 24.331 28.101 1.00 0.00 H +ATOM 1495 OW SOL 498 15.821 25.011 23.341 1.00 0.00 O +ATOM 1496 HW1 SOL 498 15.511 25.621 24.071 1.00 0.00 H +ATOM 1497 HW2 SOL 498 16.321 25.531 22.651 1.00 0.00 H +ATOM 1498 OW SOL 499 5.730 27.321 28.911 1.00 0.00 O +ATOM 1499 HW1 SOL 499 6.170 28.211 28.821 1.00 0.00 H +ATOM 1500 HW2 SOL 499 5.100 27.321 29.681 1.00 0.00 H +ATOM 1501 OW SOL 500 13.601 27.241 29.071 1.00 0.00 O +ATOM 1502 HW1 SOL 500 12.851 27.241 28.411 1.00 0.00 H +ATOM 1503 HW2 SOL 500 13.971 26.321 29.161 1.00 0.00 H +ATOM 1504 OW SOL 501 12.091 23.871 21.371 1.00 0.00 O +ATOM 1505 HW1 SOL 501 12.221 23.031 21.911 1.00 0.00 H +ATOM 1506 HW2 SOL 501 11.801 24.611 21.971 1.00 0.00 H +ATOM 1507 OW SOL 502 0.370 0.491 0.211 1.00 0.00 O +ATOM 1508 HW1 SOL 502 0.900 0.001 0.891 1.00 0.00 H +ATOM 1509 HW2 SOL 502 0.590 1.471 0.261 1.00 0.00 H +ATOM 1510 OW SOL 503 7.320 24.961 29.261 1.00 0.00 O +ATOM 1511 HW1 SOL 503 7.910 24.701 28.501 1.00 0.00 H +ATOM 1512 HW2 SOL 503 7.040 25.921 29.151 1.00 0.00 H +ATOM 1513 OW SOL 504 3.070 19.251 24.801 1.00 0.00 O +ATOM 1514 HW1 SOL 504 2.960 20.191 25.131 1.00 0.00 H +ATOM 1515 HW2 SOL 504 3.020 18.621 25.571 1.00 0.00 H +ATOM 1516 OW SOL 505 16.221 22.291 22.361 1.00 0.00 O +ATOM 1517 HW1 SOL 505 16.241 21.531 23.001 1.00 0.00 H +ATOM 1518 HW2 SOL 505 15.741 23.061 22.761 1.00 0.00 H +ATOM 1519 OW SOL 506 10.231 26.281 28.281 1.00 0.00 O +ATOM 1520 HW1 SOL 506 10.381 26.491 29.241 1.00 0.00 H +ATOM 1521 HW2 SOL 506 9.931 25.331 28.191 1.00 0.00 H +ATOM 1522 OW SOL 507 15.401 21.361 19.871 1.00 0.00 O +ATOM 1523 HW1 SOL 507 14.791 20.611 20.101 1.00 0.00 H +ATOM 1524 HW2 SOL 507 15.621 21.881 20.701 1.00 0.00 H +ATOM 1525 OW SOL 508 13.031 27.001 19.041 1.00 0.00 O +ATOM 1526 HW1 SOL 508 13.371 26.071 19.191 1.00 0.00 H +ATOM 1527 HW2 SOL 508 13.211 27.271 18.091 1.00 0.00 H +ATOM 1528 OW SOL 509 3.190 26.721 28.111 1.00 0.00 O +ATOM 1529 HW1 SOL 509 4.120 27.081 28.161 1.00 0.00 H +ATOM 1530 HW2 SOL 509 3.130 25.871 28.631 1.00 0.00 H +ATOM 1531 OW SOL 510 3.390 23.711 28.681 1.00 0.00 O +ATOM 1532 HW1 SOL 510 2.870 22.881 28.511 1.00 0.00 H +ATOM 1533 HW2 SOL 510 4.160 23.761 28.041 1.00 0.00 H +ATOM 1534 OW SOL 511 10.021 26.581 31.001 1.00 0.00 O +ATOM 1535 HW1 SOL 511 10.431 26.261 31.861 1.00 0.00 H +ATOM 1536 HW2 SOL 511 9.061 26.311 30.971 1.00 0.00 H +ATOM 1537 OW SOL 512 0.400 24.061 29.761 1.00 0.00 O +ATOM 1538 HW1 SOL 512 1.250 23.731 29.351 1.00 0.00 H +ATOM 1539 HW2 SOL 512 0.530 24.211 30.741 1.00 0.00 H +ATOM 1540 OW SOL 513 8.150 24.341 21.871 1.00 0.00 O +ATOM 1541 HW1 SOL 513 8.220 23.451 21.411 1.00 0.00 H +ATOM 1542 HW2 SOL 513 7.210 24.681 21.791 1.00 0.00 H +ATOM 1543 OW SOL 514 16.571 24.661 30.681 1.00 0.00 O +ATOM 1544 HW1 SOL 514 16.191 23.971 31.301 1.00 0.00 H +ATOM 1545 HW2 SOL 514 17.391 24.301 30.241 1.00 0.00 H +ATOM 1546 OW SOL 515 6.710 23.261 0.081 1.00 0.00 O +ATOM 1547 HW1 SOL 515 6.370 22.371 -0.219 1.00 0.00 H +ATOM 1548 HW2 SOL 515 6.970 23.801 -0.719 1.00 0.00 H +ATOM 1549 OW SOL 516 4.730 23.621 20.531 1.00 0.00 O +ATOM 1550 HW1 SOL 516 5.340 24.421 20.571 1.00 0.00 H +ATOM 1551 HW2 SOL 516 3.780 23.931 20.601 1.00 0.00 H +ATOM 1552 OW SOL 517 13.471 29.211 30.961 1.00 0.00 O +ATOM 1553 HW1 SOL 517 13.711 28.581 30.221 1.00 0.00 H +ATOM 1554 HW2 SOL 517 12.571 29.611 30.781 1.00 0.00 H +ATOM 1555 OW SOL 518 13.021 27.171 21.711 1.00 0.00 O +ATOM 1556 HW1 SOL 518 12.161 26.861 22.131 1.00 0.00 H +ATOM 1557 HW2 SOL 518 12.981 27.031 20.721 1.00 0.00 H +ATOM 1558 OW SOL 519 0.830 31.201 28.841 1.00 0.00 O +ATOM 1559 HW1 SOL 519 0.780 31.191 29.841 1.00 0.00 H +ATOM 1560 HW2 SOL 519 0.000 30.791 28.461 1.00 0.00 H +ATOM 1561 OW SOL 520 9.030 19.481 19.951 1.00 0.00 O +ATOM 1562 HW1 SOL 520 9.540 19.491 19.091 1.00 0.00 H +ATOM 1563 HW2 SOL 520 9.590 19.061 20.661 1.00 0.00 H +ATOM 1564 OW SOL 521 17.261 19.971 23.851 1.00 0.00 O +ATOM 1565 HW1 SOL 521 17.991 19.801 23.181 1.00 0.00 H +ATOM 1566 HW2 SOL 521 16.951 19.101 24.231 1.00 0.00 H +ATOM 1567 OW SOL 522 12.801 27.891 25.341 1.00 0.00 O +ATOM 1568 HW1 SOL 522 13.401 27.081 25.361 1.00 0.00 H +ATOM 1569 HW2 SOL 522 13.201 28.581 24.741 1.00 0.00 H +ATOM 1570 OW SOL 523 18.411 20.371 28.251 1.00 0.00 O +ATOM 1571 HW1 SOL 523 18.801 19.521 27.891 1.00 0.00 H +ATOM 1572 HW2 SOL 523 17.431 20.391 28.061 1.00 0.00 H +ATOM 1573 OW SOL 524 2.630 21.881 25.821 1.00 0.00 O +ATOM 1574 HW1 SOL 524 1.840 22.391 25.481 1.00 0.00 H +ATOM 1575 HW2 SOL 524 2.540 21.731 26.801 1.00 0.00 H +ATOM 1576 OW SOL 525 8.220 28.641 1.111 1.00 0.00 O +ATOM 1577 HW1 SOL 525 8.620 28.631 0.191 1.00 0.00 H +ATOM 1578 HW2 SOL 525 8.320 29.561 1.511 1.00 0.00 H +ATOM 1579 OW SOL 526 9.160 27.721 21.531 1.00 0.00 O +ATOM 1580 HW1 SOL 526 9.790 28.101 20.851 1.00 0.00 H +ATOM 1581 HW2 SOL 526 9.560 26.891 21.921 1.00 0.00 H +ATOM 1582 OW SOL 527 16.141 0.311 0.281 1.00 0.00 O +ATOM 1583 HW1 SOL 527 16.741 0.341 1.081 1.00 0.00 H +ATOM 1584 HW2 SOL 527 15.391 0.951 0.411 1.00 0.00 H +ATOM 1585 OW SOL 528 10.391 29.601 25.581 1.00 0.00 O +ATOM 1586 HW1 SOL 528 9.691 29.131 26.121 1.00 0.00 H +ATOM 1587 HW2 SOL 528 10.981 28.921 25.151 1.00 0.00 H +ATOM 1588 OW SOL 529 10.141 20.981 28.331 1.00 0.00 O +ATOM 1589 HW1 SOL 529 10.061 20.621 27.401 1.00 0.00 H +ATOM 1590 HW2 SOL 529 10.121 20.221 28.981 1.00 0.00 H +ATOM 1591 OW SOL 530 17.091 22.471 1.201 1.00 0.00 O +ATOM 1592 HW1 SOL 530 17.821 23.161 1.241 1.00 0.00 H +ATOM 1593 HW2 SOL 530 17.371 21.721 0.611 1.00 0.00 H +ATOM 1594 OW SOL 531 0.750 22.071 18.951 1.00 0.00 O +ATOM 1595 HW1 SOL 531 -0.170 21.791 18.661 1.00 0.00 H +ATOM 1596 HW2 SOL 531 1.060 22.841 18.391 1.00 0.00 H +ATOM 1597 OW SOL 532 16.741 27.451 31.161 1.00 0.00 O +ATOM 1598 HW1 SOL 532 16.471 26.561 30.791 1.00 0.00 H +ATOM 1599 HW2 SOL 532 16.751 28.131 30.431 1.00 0.00 H +ATOM 1600 OW SOL 533 12.251 21.871 23.111 1.00 0.00 O +ATOM 1601 HW1 SOL 533 12.901 21.131 23.001 1.00 0.00 H +ATOM 1602 HW2 SOL 533 12.451 22.371 23.951 1.00 0.00 H +ATOM 1603 OW SOL 534 5.940 26.071 25.141 1.00 0.00 O +ATOM 1604 HW1 SOL 534 6.440 26.921 24.951 1.00 0.00 H +ATOM 1605 HW2 SOL 534 5.060 26.091 24.661 1.00 0.00 H +ATOM 1606 OW SOL 535 8.590 28.181 27.231 1.00 0.00 O +ATOM 1607 HW1 SOL 535 9.130 27.491 27.711 1.00 0.00 H +ATOM 1608 HW2 SOL 535 8.270 28.871 27.891 1.00 0.00 H +ATOM 1609 OW SOL 536 10.831 28.461 19.491 1.00 0.00 O +ATOM 1610 HW1 SOL 536 10.601 28.991 18.671 1.00 0.00 H +ATOM 1611 HW2 SOL 536 11.641 27.901 19.301 1.00 0.00 H +ATOM 1612 OW SOL 537 0.790 31.021 25.151 1.00 0.00 O +ATOM 1613 HW1 SOL 537 0.780 30.551 26.031 1.00 0.00 H +ATOM 1614 HW2 SOL 537 1.610 30.741 24.641 1.00 0.00 H +ATOM 1615 OW SOL 538 18.241 20.541 30.891 1.00 0.00 O +ATOM 1616 HW1 SOL 538 18.201 19.641 31.331 1.00 0.00 H +ATOM 1617 HW2 SOL 538 18.271 20.431 29.901 1.00 0.00 H +ATOM 1618 OW SOL 539 4.280 22.861 23.821 1.00 0.00 O +ATOM 1619 HW1 SOL 539 4.580 22.141 23.201 1.00 0.00 H +ATOM 1620 HW2 SOL 539 3.890 22.461 24.651 1.00 0.00 H +ATOM 1621 OW SOL 540 14.241 20.761 29.741 1.00 0.00 O +ATOM 1622 HW1 SOL 540 14.761 20.111 30.291 1.00 0.00 H +ATOM 1623 HW2 SOL 540 13.751 21.391 30.351 1.00 0.00 H +ATOM 1624 OW SOL 541 10.011 18.961 30.161 1.00 0.00 O +ATOM 1625 HW1 SOL 541 9.381 18.241 29.851 1.00 0.00 H +ATOM 1626 HW2 SOL 541 10.941 18.601 30.161 1.00 0.00 H +ATOM 1627 OW SOL 542 7.700 0.691 21.631 1.00 0.00 O +ATOM 1628 HW1 SOL 542 7.240 -0.179 21.801 1.00 0.00 H +ATOM 1629 HW2 SOL 542 8.610 0.661 22.041 1.00 0.00 H +ATOM 1630 OW SOL 543 13.521 19.141 20.301 1.00 0.00 O +ATOM 1631 HW1 SOL 543 13.871 18.731 19.461 1.00 0.00 H +ATOM 1632 HW2 SOL 543 12.621 18.761 20.501 1.00 0.00 H +ATOM 1633 OW SOL 544 13.001 23.151 25.531 1.00 0.00 O +ATOM 1634 HW1 SOL 544 12.411 23.951 25.571 1.00 0.00 H +ATOM 1635 HW2 SOL 544 13.151 22.801 26.461 1.00 0.00 H +ATOM 1636 OW SOL 545 15.931 20.831 27.441 1.00 0.00 O +ATOM 1637 HW1 SOL 545 15.091 20.821 27.981 1.00 0.00 H +ATOM 1638 HW2 SOL 545 15.951 21.661 26.881 1.00 0.00 H +ATOM 1639 OW SOL 546 0.390 29.391 21.621 1.00 0.00 O +ATOM 1640 HW1 SOL 546 1.380 29.281 21.531 1.00 0.00 H +ATOM 1641 HW2 SOL 546 -0.010 28.531 21.941 1.00 0.00 H +ATOM 1642 OW SOL 547 20.921 6.280 1.130 1.00 0.00 O +ATOM 1643 HW1 SOL 547 19.991 6.260 1.500 1.00 0.00 H +ATOM 1644 HW2 SOL 547 20.931 5.890 0.210 1.00 0.00 H +ATOM 1645 OW SOL 548 20.871 2.750 9.961 1.00 0.00 O +ATOM 1646 HW1 SOL 548 21.221 2.580 10.881 1.00 0.00 H +ATOM 1647 HW2 SOL 548 19.991 2.300 9.841 1.00 0.00 H +ATOM 1648 OW SOL 549 18.811 3.680 6.470 1.00 0.00 O +ATOM 1649 HW1 SOL 549 17.991 4.110 6.860 1.00 0.00 H +ATOM 1650 HW2 SOL 549 18.531 2.950 5.840 1.00 0.00 H +ATOM 1651 OW SOL 550 24.311 12.751 11.651 1.00 0.00 O +ATOM 1652 HW1 SOL 550 23.381 12.681 11.281 1.00 0.00 H +ATOM 1653 HW2 SOL 550 24.421 13.641 12.091 1.00 0.00 H +ATOM 1654 OW SOL 551 29.971 7.030 7.170 1.00 0.00 O +ATOM 1655 HW1 SOL 551 30.541 7.810 6.920 1.00 0.00 H +ATOM 1656 HW2 SOL 551 29.371 7.290 7.930 1.00 0.00 H +ATOM 1657 OW SOL 552 26.301 11.441 10.231 1.00 0.00 O +ATOM 1658 HW1 SOL 552 25.521 11.611 10.831 1.00 0.00 H +ATOM 1659 HW2 SOL 552 26.641 12.311 9.871 1.00 0.00 H +ATOM 1660 OW SOL 553 27.121 7.980 18.231 1.00 0.00 O +ATOM 1661 HW1 SOL 553 27.081 8.740 18.881 1.00 0.00 H +ATOM 1662 HW2 SOL 553 27.341 8.340 17.321 1.00 0.00 H +ATOM 1663 OW SOL 554 25.471 10.121 6.650 1.00 0.00 O +ATOM 1664 HW1 SOL 554 26.161 9.961 7.350 1.00 0.00 H +ATOM 1665 HW2 SOL 554 24.741 10.691 7.030 1.00 0.00 H +ATOM 1666 OW SOL 555 25.481 11.611 18.031 1.00 0.00 O +ATOM 1667 HW1 SOL 555 26.081 12.401 18.171 1.00 0.00 H +ATOM 1668 HW2 SOL 555 24.621 11.921 17.621 1.00 0.00 H +ATOM 1669 OW SOL 556 21.971 14.351 10.611 1.00 0.00 O +ATOM 1670 HW1 SOL 556 21.191 14.041 10.081 1.00 0.00 H +ATOM 1671 HW2 SOL 556 22.551 14.931 10.041 1.00 0.00 H +ATOM 1672 OW SOL 557 23.001 3.920 14.991 1.00 0.00 O +ATOM 1673 HW1 SOL 557 23.821 3.360 15.081 1.00 0.00 H +ATOM 1674 HW2 SOL 557 22.191 3.340 15.031 1.00 0.00 H +ATOM 1675 OW SOL 558 20.931 17.131 4.830 1.00 0.00 O +ATOM 1676 HW1 SOL 558 21.271 17.901 5.370 1.00 0.00 H +ATOM 1677 HW2 SOL 558 21.371 17.131 3.930 1.00 0.00 H +ATOM 1678 OW SOL 559 29.891 13.411 16.901 1.00 0.00 O +ATOM 1679 HW1 SOL 559 30.361 13.411 17.781 1.00 0.00 H +ATOM 1680 HW2 SOL 559 29.411 12.541 16.791 1.00 0.00 H +ATOM 1681 OW SOL 560 20.921 14.341 5.380 1.00 0.00 O +ATOM 1682 HW1 SOL 560 20.661 15.301 5.380 1.00 0.00 H +ATOM 1683 HW2 SOL 560 20.211 13.801 5.830 1.00 0.00 H +ATOM 1684 OW SOL 561 21.021 10.911 8.860 1.00 0.00 O +ATOM 1685 HW1 SOL 561 21.161 10.071 9.380 1.00 0.00 H +ATOM 1686 HW2 SOL 561 20.471 11.551 9.410 1.00 0.00 H +ATOM 1687 OW SOL 562 24.821 17.861 14.391 1.00 0.00 O +ATOM 1688 HW1 SOL 562 23.901 17.691 14.741 1.00 0.00 H +ATOM 1689 HW2 SOL 562 25.101 18.781 14.651 1.00 0.00 H +ATOM 1690 OW SOL 563 24.681 9.641 1.230 1.00 0.00 O +ATOM 1691 HW1 SOL 563 24.751 10.481 0.690 1.00 0.00 H +ATOM 1692 HW2 SOL 563 25.141 9.771 2.110 1.00 0.00 H +ATOM 1693 OW SOL 564 19.841 6.430 5.630 1.00 0.00 O +ATOM 1694 HW1 SOL 564 19.391 5.550 5.800 1.00 0.00 H +ATOM 1695 HW2 SOL 564 19.831 6.970 6.470 1.00 0.00 H +ATOM 1696 OW SOL 565 18.891 15.961 1.170 1.00 0.00 O +ATOM 1697 HW1 SOL 565 18.701 15.001 1.380 1.00 0.00 H +ATOM 1698 HW2 SOL 565 18.561 16.541 1.920 1.00 0.00 H +ATOM 1699 OW SOL 566 19.751 7.370 15.971 1.00 0.00 O +ATOM 1700 HW1 SOL 566 20.631 7.240 16.421 1.00 0.00 H +ATOM 1701 HW2 SOL 566 19.621 8.340 15.751 1.00 0.00 H +ATOM 1702 OW SOL 567 24.751 13.651 7.260 1.00 0.00 O +ATOM 1703 HW1 SOL 567 24.261 12.781 7.350 1.00 0.00 H +ATOM 1704 HW2 SOL 567 24.521 14.081 6.390 1.00 0.00 H +ATOM 1705 OW SOL 568 26.711 0.040 5.020 1.00 0.00 O +ATOM 1706 HW1 SOL 568 27.111 0.950 4.930 1.00 0.00 H +ATOM 1707 HW2 SOL 568 25.711 0.120 5.080 1.00 0.00 H +ATOM 1708 OW SOL 569 20.591 9.761 12.641 1.00 0.00 O +ATOM 1709 HW1 SOL 569 21.481 9.311 12.501 1.00 0.00 H +ATOM 1710 HW2 SOL 569 19.861 9.111 12.451 1.00 0.00 H +ATOM 1711 OW SOL 570 21.791 2.510 18.011 1.00 0.00 O +ATOM 1712 HW1 SOL 570 22.501 3.220 18.071 1.00 0.00 H +ATOM 1713 HW2 SOL 570 20.911 2.900 18.291 1.00 0.00 H +ATOM 1714 OW SOL 571 2.051 14.171 9.531 1.00 0.00 O +ATOM 1715 HW1 SOL 571 1.461 14.231 10.331 1.00 0.00 H +ATOM 1716 HW2 SOL 571 1.901 13.291 9.071 1.00 0.00 H +ATOM 1717 OW SOL 572 24.601 7.290 2.700 1.00 0.00 O +ATOM 1718 HW1 SOL 572 24.841 7.980 2.020 1.00 0.00 H +ATOM 1719 HW2 SOL 572 23.821 7.620 3.240 1.00 0.00 H +ATOM 1720 OW SOL 573 0.201 3.450 9.441 1.00 0.00 O +ATOM 1721 HW1 SOL 573 -0.659 2.950 9.311 1.00 0.00 H +ATOM 1722 HW2 SOL 573 0.821 2.910 10.001 1.00 0.00 H +ATOM 1723 OW SOL 574 26.691 6.050 14.651 1.00 0.00 O +ATOM 1724 HW1 SOL 574 26.221 6.020 15.541 1.00 0.00 H +ATOM 1725 HW2 SOL 574 26.181 5.500 13.991 1.00 0.00 H +ATOM 1726 OW SOL 575 28.351 8.900 15.721 1.00 0.00 O +ATOM 1727 HW1 SOL 575 28.811 8.060 15.431 1.00 0.00 H +ATOM 1728 HW2 SOL 575 27.791 9.240 14.971 1.00 0.00 H +ATOM 1729 OW SOL 576 28.531 4.100 12.421 1.00 0.00 O +ATOM 1730 HW1 SOL 576 27.761 4.440 12.961 1.00 0.00 H +ATOM 1731 HW2 SOL 576 28.191 3.590 11.631 1.00 0.00 H +ATOM 1732 OW SOL 577 29.031 7.010 4.290 1.00 0.00 O +ATOM 1733 HW1 SOL 577 29.291 6.970 5.250 1.00 0.00 H +ATOM 1734 HW2 SOL 577 28.181 6.500 4.150 1.00 0.00 H +ATOM 1735 OW SOL 578 19.381 8.110 7.890 1.00 0.00 O +ATOM 1736 HW1 SOL 578 20.371 7.990 7.980 1.00 0.00 H +ATOM 1737 HW2 SOL 578 19.141 9.060 8.100 1.00 0.00 H +ATOM 1738 OW SOL 579 19.921 18.211 15.711 1.00 0.00 O +ATOM 1739 HW1 SOL 579 19.821 18.061 16.701 1.00 0.00 H +ATOM 1740 HW2 SOL 579 19.061 18.571 15.351 1.00 0.00 H +ATOM 1741 OW SOL 580 27.271 3.480 1.950 1.00 0.00 O +ATOM 1742 HW1 SOL 580 27.861 4.110 1.460 1.00 0.00 H +ATOM 1743 HW2 SOL 580 27.461 2.540 1.660 1.00 0.00 H +ATOM 1744 OW SOL 581 24.121 1.960 8.850 1.00 0.00 O +ATOM 1745 HW1 SOL 581 24.071 1.910 9.850 1.00 0.00 H +ATOM 1746 HW2 SOL 581 24.141 2.920 8.560 1.00 0.00 H +ATOM 1747 OW SOL 582 28.701 14.561 4.770 1.00 0.00 O +ATOM 1748 HW1 SOL 582 28.241 15.281 4.250 1.00 0.00 H +ATOM 1749 HW2 SOL 582 28.661 14.761 5.750 1.00 0.00 H +ATOM 1750 OW SOL 583 22.131 18.011 8.530 1.00 0.00 O +ATOM 1751 HW1 SOL 583 22.631 17.151 8.590 1.00 0.00 H +ATOM 1752 HW2 SOL 583 22.781 18.781 8.500 1.00 0.00 H +ATOM 1753 OW SOL 584 30.891 15.501 15.061 1.00 0.00 O +ATOM 1754 HW1 SOL 584 30.951 14.731 15.701 1.00 0.00 H +ATOM 1755 HW2 SOL 584 30.371 15.241 14.261 1.00 0.00 H +ATOM 1756 OW SOL 585 21.831 9.431 2.420 1.00 0.00 O +ATOM 1757 HW1 SOL 585 22.651 9.821 2.000 1.00 0.00 H +ATOM 1758 HW2 SOL 585 21.561 8.611 1.930 1.00 0.00 H +ATOM 1759 OW SOL 586 23.231 12.661 17.271 1.00 0.00 O +ATOM 1760 HW1 SOL 586 22.731 12.671 16.411 1.00 0.00 H +ATOM 1761 HW2 SOL 586 22.601 12.481 18.031 1.00 0.00 H +ATOM 1762 OW SOL 587 29.731 17.761 2.370 1.00 0.00 O +ATOM 1763 HW1 SOL 587 29.131 17.141 2.870 1.00 0.00 H +ATOM 1764 HW2 SOL 587 30.041 17.321 1.520 1.00 0.00 H +ATOM 1765 OW SOL 588 20.641 2.850 14.981 1.00 0.00 O +ATOM 1766 HW1 SOL 588 19.841 3.450 14.851 1.00 0.00 H +ATOM 1767 HW2 SOL 588 20.541 2.360 15.841 1.00 0.00 H +ATOM 1768 OW SOL 589 23.261 17.431 3.230 1.00 0.00 O +ATOM 1769 HW1 SOL 589 23.591 17.821 4.090 1.00 0.00 H +ATOM 1770 HW2 SOL 589 24.021 17.361 2.580 1.00 0.00 H +ATOM 1771 OW SOL 590 21.111 17.851 12.411 1.00 0.00 O +ATOM 1772 HW1 SOL 590 21.681 17.201 12.911 1.00 0.00 H +ATOM 1773 HW2 SOL 590 20.951 17.521 11.481 1.00 0.00 H +ATOM 1774 OW SOL 591 28.021 16.981 9.040 1.00 0.00 O +ATOM 1775 HW1 SOL 591 28.821 16.411 9.250 1.00 0.00 H +ATOM 1776 HW2 SOL 591 27.531 16.581 8.270 1.00 0.00 H +ATOM 1777 OW SOL 592 22.441 7.000 4.800 1.00 0.00 O +ATOM 1778 HW1 SOL 592 22.891 6.100 4.770 1.00 0.00 H +ATOM 1779 HW2 SOL 592 21.501 6.890 5.130 1.00 0.00 H +ATOM 1780 OW SOL 593 24.761 1.220 1.170 1.00 0.00 O +ATOM 1781 HW1 SOL 593 25.741 1.000 1.240 1.00 0.00 H +ATOM 1782 HW2 SOL 593 24.451 1.050 0.240 1.00 0.00 H +ATOM 1783 OW SOL 594 26.431 2.640 17.491 1.00 0.00 O +ATOM 1784 HW1 SOL 594 27.101 2.030 17.921 1.00 0.00 H +ATOM 1785 HW2 SOL 594 25.701 2.830 18.141 1.00 0.00 H +ATOM 1786 OW SOL 595 27.501 15.141 11.951 1.00 0.00 O +ATOM 1787 HW1 SOL 595 27.271 14.891 11.011 1.00 0.00 H +ATOM 1788 HW2 SOL 595 28.111 14.451 12.341 1.00 0.00 H +ATOM 1789 OW SOL 596 26.651 14.021 9.240 1.00 0.00 O +ATOM 1790 HW1 SOL 596 27.551 14.161 8.820 1.00 0.00 H +ATOM 1791 HW2 SOL 596 25.941 14.041 8.530 1.00 0.00 H +ATOM 1792 OW SOL 597 27.841 5.030 8.990 1.00 0.00 O +ATOM 1793 HW1 SOL 597 27.591 4.940 8.030 1.00 0.00 H +ATOM 1794 HW2 SOL 597 28.321 4.210 9.300 1.00 0.00 H +ATOM 1795 OW SOL 598 24.011 0.640 5.120 1.00 0.00 O +ATOM 1796 HW1 SOL 598 23.201 0.650 5.700 1.00 0.00 H +ATOM 1797 HW2 SOL 598 24.041 1.470 4.570 1.00 0.00 H +ATOM 1798 OW SOL 599 1.731 11.881 0.410 1.00 0.00 O +ATOM 1799 HW1 SOL 599 2.051 11.121 0.980 1.00 0.00 H +ATOM 1800 HW2 SOL 599 0.811 12.151 0.710 1.00 0.00 H +ATOM 1801 OW SOL 600 21.591 0.350 1.710 1.00 0.00 O +ATOM 1802 HW1 SOL 600 22.081 1.190 1.500 1.00 0.00 H +ATOM 1803 HW2 SOL 600 22.211 -0.300 2.160 1.00 0.00 H +ATOM 1804 OW SOL 601 27.971 2.360 4.800 1.00 0.00 O +ATOM 1805 HW1 SOL 601 27.491 2.770 4.020 1.00 0.00 H +ATOM 1806 HW2 SOL 601 28.961 2.340 4.610 1.00 0.00 H +ATOM 1807 OW SOL 602 29.381 6.830 14.641 1.00 0.00 O +ATOM 1808 HW1 SOL 602 28.581 6.220 14.671 1.00 0.00 H +ATOM 1809 HW2 SOL 602 30.191 6.300 14.401 1.00 0.00 H +ATOM 1810 OW SOL 603 30.891 15.701 7.930 1.00 0.00 O +ATOM 1811 HW1 SOL 603 31.101 16.441 7.280 1.00 0.00 H +ATOM 1812 HW2 SOL 603 31.571 15.701 8.660 1.00 0.00 H +ATOM 1813 OW SOL 604 23.211 11.521 7.410 1.00 0.00 O +ATOM 1814 HW1 SOL 604 22.501 11.251 8.060 1.00 0.00 H +ATOM 1815 HW2 SOL 604 22.951 11.241 6.480 1.00 0.00 H +ATOM 1816 OW SOL 605 0.101 17.971 5.910 1.00 0.00 O +ATOM 1817 HW1 SOL 605 0.541 18.611 5.270 1.00 0.00 H +ATOM 1818 HW2 SOL 605 -0.399 18.491 6.610 1.00 0.00 H +ATOM 1819 OW SOL 606 28.941 5.490 0.160 1.00 0.00 O +ATOM 1820 HW1 SOL 606 28.531 6.310 -0.230 1.00 0.00 H +ATOM 1821 HW2 SOL 606 29.581 5.750 0.890 1.00 0.00 H +ATOM 1822 OW SOL 607 19.401 5.560 13.861 1.00 0.00 O +ATOM 1823 HW1 SOL 607 20.321 5.550 13.451 1.00 0.00 H +ATOM 1824 HW2 SOL 607 19.341 6.300 14.531 1.00 0.00 H +ATOM 1825 OW SOL 608 24.231 2.220 11.471 1.00 0.00 O +ATOM 1826 HW1 SOL 608 24.611 1.380 11.841 1.00 0.00 H +ATOM 1827 HW2 SOL 608 23.351 2.410 11.911 1.00 0.00 H +ATOM 1828 OW SOL 609 27.281 4.540 6.420 1.00 0.00 O +ATOM 1829 HW1 SOL 609 26.961 5.260 5.800 1.00 0.00 H +ATOM 1830 HW2 SOL 609 27.521 3.730 5.890 1.00 0.00 H +ATOM 1831 OW SOL 610 28.791 0.390 7.530 1.00 0.00 O +ATOM 1832 HW1 SOL 610 28.071 0.440 6.840 1.00 0.00 H +ATOM 1833 HW2 SOL 610 28.551 -0.300 8.220 1.00 0.00 H +ATOM 1834 OW SOL 611 23.501 13.851 1.740 1.00 0.00 O +ATOM 1835 HW1 SOL 611 22.631 13.701 2.210 1.00 0.00 H +ATOM 1836 HW2 SOL 611 23.331 14.111 0.790 1.00 0.00 H +ATOM 1837 OW SOL 612 23.891 2.560 3.280 1.00 0.00 O +ATOM 1838 HW1 SOL 612 24.161 1.970 2.530 1.00 0.00 H +ATOM 1839 HW2 SOL 612 23.891 3.510 2.970 1.00 0.00 H +ATOM 1840 OW SOL 613 29.261 13.471 13.401 1.00 0.00 O +ATOM 1841 HW1 SOL 613 28.461 13.241 13.951 1.00 0.00 H +ATOM 1842 HW2 SOL 613 30.091 13.211 13.891 1.00 0.00 H +ATOM 1843 OW SOL 614 29.731 11.951 11.001 1.00 0.00 O +ATOM 1844 HW1 SOL 614 29.331 12.391 11.811 1.00 0.00 H +ATOM 1845 HW2 SOL 614 29.321 12.321 10.171 1.00 0.00 H +ATOM 1846 OW SOL 615 27.771 0.890 14.021 1.00 0.00 O +ATOM 1847 HW1 SOL 615 28.021 0.690 13.071 1.00 0.00 H +ATOM 1848 HW2 SOL 615 28.491 1.450 14.441 1.00 0.00 H +ATOM 1849 OW SOL 616 28.421 11.161 17.191 1.00 0.00 O +ATOM 1850 HW1 SOL 616 27.431 11.221 17.291 1.00 0.00 H +ATOM 1851 HW2 SOL 616 28.651 10.361 16.631 1.00 0.00 H +ATOM 1852 OW SOL 617 25.671 10.501 3.680 1.00 0.00 O +ATOM 1853 HW1 SOL 617 25.531 10.571 4.670 1.00 0.00 H +ATOM 1854 HW2 SOL 617 26.511 9.991 3.500 1.00 0.00 H +ATOM 1855 OW SOL 618 22.721 8.130 12.511 1.00 0.00 O +ATOM 1856 HW1 SOL 618 23.581 8.250 13.011 1.00 0.00 H +ATOM 1857 HW2 SOL 618 22.301 7.260 12.781 1.00 0.00 H +ATOM 1858 OW SOL 619 0.131 3.860 12.621 1.00 0.00 O +ATOM 1859 HW1 SOL 619 0.341 4.600 13.261 1.00 0.00 H +ATOM 1860 HW2 SOL 619 -0.759 4.030 12.191 1.00 0.00 H +ATOM 1861 OW SOL 620 19.261 15.641 13.311 1.00 0.00 O +ATOM 1862 HW1 SOL 620 18.801 16.461 12.971 1.00 0.00 H +ATOM 1863 HW2 SOL 620 20.241 15.831 13.401 1.00 0.00 H +ATOM 1864 OW SOL 621 22.291 11.001 5.010 1.00 0.00 O +ATOM 1865 HW1 SOL 621 22.221 11.831 4.450 1.00 0.00 H +ATOM 1866 HW2 SOL 621 22.331 10.201 4.410 1.00 0.00 H +ATOM 1867 OW SOL 622 24.281 5.370 8.650 1.00 0.00 O +ATOM 1868 HW1 SOL 622 24.401 6.030 7.910 1.00 0.00 H +ATOM 1869 HW2 SOL 622 24.741 5.710 9.480 1.00 0.00 H +ATOM 1870 OW SOL 623 31.141 13.481 3.880 1.00 0.00 O +ATOM 1871 HW1 SOL 623 31.641 14.251 4.280 1.00 0.00 H +ATOM 1872 HW2 SOL 623 30.191 13.501 4.200 1.00 0.00 H +ATOM 1873 OW SOL 624 22.161 15.101 13.291 1.00 0.00 O +ATOM 1874 HW1 SOL 624 21.951 14.661 12.421 1.00 0.00 H +ATOM 1875 HW2 SOL 624 23.131 15.361 13.321 1.00 0.00 H +ATOM 1876 OW SOL 625 22.641 7.510 15.981 1.00 0.00 O +ATOM 1877 HW1 SOL 625 23.321 8.060 15.511 1.00 0.00 H +ATOM 1878 HW2 SOL 625 23.041 6.630 16.251 1.00 0.00 H +ATOM 1879 OW SOL 626 28.751 1.050 17.701 1.00 0.00 O +ATOM 1880 HW1 SOL 626 28.811 1.900 17.181 1.00 0.00 H +ATOM 1881 HW2 SOL 626 29.071 0.290 17.131 1.00 0.00 H +ATOM 1882 OW SOL 627 23.661 0.500 17.401 1.00 0.00 O +ATOM 1883 HW1 SOL 627 23.241 -0.070 16.701 1.00 0.00 H +ATOM 1884 HW2 SOL 627 23.001 1.190 17.721 1.00 0.00 H +ATOM 1885 OW SOL 628 24.351 8.700 10.291 1.00 0.00 O +ATOM 1886 HW1 SOL 628 24.791 9.590 10.201 1.00 0.00 H +ATOM 1887 HW2 SOL 628 23.721 8.700 11.061 1.00 0.00 H +ATOM 1888 OW SOL 629 0.991 8.620 10.451 1.00 0.00 O +ATOM 1889 HW1 SOL 629 0.241 8.620 9.791 1.00 0.00 H +ATOM 1890 HW2 SOL 629 1.361 7.700 10.541 1.00 0.00 H +ATOM 1891 OW SOL 630 30.711 5.250 2.750 1.00 0.00 O +ATOM 1892 HW1 SOL 630 30.841 4.410 3.290 1.00 0.00 H +ATOM 1893 HW2 SOL 630 30.421 5.990 3.350 1.00 0.00 H +ATOM 1894 OW SOL 631 21.691 2.130 12.311 1.00 0.00 O +ATOM 1895 HW1 SOL 631 21.461 2.500 13.211 1.00 0.00 H +ATOM 1896 HW2 SOL 631 21.391 1.180 12.251 1.00 0.00 H +ATOM 1897 OW SOL 632 18.991 13.101 12.821 1.00 0.00 O +ATOM 1898 HW1 SOL 632 19.521 12.611 13.501 1.00 0.00 H +ATOM 1899 HW2 SOL 632 19.211 14.081 12.871 1.00 0.00 H +ATOM 1900 OW SOL 633 25.941 6.340 10.641 1.00 0.00 O +ATOM 1901 HW1 SOL 633 26.531 6.080 9.881 1.00 0.00 H +ATOM 1902 HW2 SOL 633 25.661 7.300 10.531 1.00 0.00 H +ATOM 1903 OW SOL 634 21.691 0.630 6.180 1.00 0.00 O +ATOM 1904 HW1 SOL 634 21.581 1.570 6.510 1.00 0.00 H +ATOM 1905 HW2 SOL 634 21.641 0.000 6.950 1.00 0.00 H +ATOM 1906 OW SOL 635 28.851 7.660 9.661 1.00 0.00 O +ATOM 1907 HW1 SOL 635 29.001 7.870 10.621 1.00 0.00 H +ATOM 1908 HW2 SOL 635 28.551 6.710 9.571 1.00 0.00 H +ATOM 1909 OW SOL 636 28.421 15.731 17.001 1.00 0.00 O +ATOM 1910 HW1 SOL 636 28.221 16.171 16.121 1.00 0.00 H +ATOM 1911 HW2 SOL 636 28.811 14.821 16.841 1.00 0.00 H +ATOM 1912 OW SOL 637 22.121 8.980 18.041 1.00 0.00 O +ATOM 1913 HW1 SOL 637 22.881 9.420 18.521 1.00 0.00 H +ATOM 1914 HW2 SOL 637 22.471 8.510 17.221 1.00 0.00 H +ATOM 1915 OW SOL 638 29.301 13.331 8.490 1.00 0.00 O +ATOM 1916 HW1 SOL 638 29.371 12.491 7.940 1.00 0.00 H +ATOM 1917 HW2 SOL 638 29.921 14.021 8.130 1.00 0.00 H +ATOM 1918 OW SOL 639 21.811 8.100 9.491 1.00 0.00 O +ATOM 1919 HW1 SOL 639 22.741 8.460 9.541 1.00 0.00 H +ATOM 1920 HW2 SOL 639 21.751 7.250 10.011 1.00 0.00 H +ATOM 1921 OW SOL 640 22.011 5.090 10.061 1.00 0.00 O +ATOM 1922 HW1 SOL 640 21.491 4.260 9.891 1.00 0.00 H +ATOM 1923 HW2 SOL 640 22.781 5.140 9.421 1.00 0.00 H +ATOM 1924 OW SOL 641 30.001 3.800 16.781 1.00 0.00 O +ATOM 1925 HW1 SOL 641 29.551 4.430 17.421 1.00 0.00 H +ATOM 1926 HW2 SOL 641 30.931 4.110 16.611 1.00 0.00 H +ATOM 1927 OW SOL 642 30.221 2.070 14.771 1.00 0.00 O +ATOM 1928 HW1 SOL 642 30.221 2.710 15.541 1.00 0.00 H +ATOM 1929 HW2 SOL 642 30.501 2.550 13.941 1.00 0.00 H +ATOM 1930 OW SOL 643 18.701 13.261 2.000 1.00 0.00 O +ATOM 1931 HW1 SOL 643 17.771 13.471 1.690 1.00 0.00 H +ATOM 1932 HW2 SOL 643 18.801 12.271 2.130 1.00 0.00 H +ATOM 1933 OW SOL 644 19.501 18.011 9.270 1.00 0.00 O +ATOM 1934 HW1 SOL 644 19.081 17.151 9.000 1.00 0.00 H +ATOM 1935 HW2 SOL 644 20.441 18.041 8.930 1.00 0.00 H +ATOM 1936 OW SOL 645 23.661 15.681 9.100 1.00 0.00 O +ATOM 1937 HW1 SOL 645 24.321 16.421 9.190 1.00 0.00 H +ATOM 1938 HW2 SOL 645 24.101 14.891 8.680 1.00 0.00 H +ATOM 1939 OW SOL 646 28.641 7.960 12.381 1.00 0.00 O +ATOM 1940 HW1 SOL 646 29.051 7.640 13.241 1.00 0.00 H +ATOM 1941 HW2 SOL 646 27.681 7.690 12.351 1.00 0.00 H +ATOM 1942 OW SOL 647 19.021 5.440 11.141 1.00 0.00 O +ATOM 1943 HW1 SOL 647 19.871 5.110 10.731 1.00 0.00 H +ATOM 1944 HW2 SOL 647 19.151 5.590 12.121 1.00 0.00 H +ATOM 1945 OW SOL 648 20.511 5.200 17.221 1.00 0.00 O +ATOM 1946 HW1 SOL 648 21.101 4.800 16.521 1.00 0.00 H +ATOM 1947 HW2 SOL 648 19.931 5.910 16.811 1.00 0.00 H +ATOM 1948 OW SOL 649 26.771 5.720 3.250 1.00 0.00 O +ATOM 1949 HW1 SOL 649 26.841 4.830 2.790 1.00 0.00 H +ATOM 1950 HW2 SOL 649 25.831 6.060 3.170 1.00 0.00 H +ATOM 1951 OW SOL 650 21.141 15.641 17.441 1.00 0.00 O +ATOM 1952 HW1 SOL 650 20.841 16.211 18.201 1.00 0.00 H +ATOM 1953 HW2 SOL 650 21.071 14.671 17.701 1.00 0.00 H +ATOM 1954 OW SOL 651 25.331 4.640 12.691 1.00 0.00 O +ATOM 1955 HW1 SOL 651 24.991 3.750 12.391 1.00 0.00 H +ATOM 1956 HW2 SOL 651 25.591 5.180 11.891 1.00 0.00 H +ATOM 1957 OW SOL 652 27.921 16.781 14.651 1.00 0.00 O +ATOM 1958 HW1 SOL 652 27.681 16.601 13.701 1.00 0.00 H +ATOM 1959 HW2 SOL 652 28.221 17.721 14.751 1.00 0.00 H +ATOM 1960 OW SOL 653 23.351 5.000 1.910 1.00 0.00 O +ATOM 1961 HW1 SOL 653 23.961 5.800 1.950 1.00 0.00 H +ATOM 1962 HW2 SOL 653 22.401 5.310 1.980 1.00 0.00 H +ATOM 1963 OW SOL 654 20.211 11.371 14.661 1.00 0.00 O +ATOM 1964 HW1 SOL 654 20.431 10.761 15.421 1.00 0.00 H +ATOM 1965 HW2 SOL 654 20.311 10.881 13.801 1.00 0.00 H +ATOM 1966 OW SOL 655 0.861 10.591 12.341 1.00 0.00 O +ATOM 1967 HW1 SOL 655 1.101 9.961 11.601 1.00 0.00 H +ATOM 1968 HW2 SOL 655 -0.039 10.991 12.161 1.00 0.00 H +ATOM 1969 OW SOL 656 31.141 17.311 11.281 1.00 0.00 O +ATOM 1970 HW1 SOL 656 31.981 17.361 10.741 1.00 0.00 H +ATOM 1971 HW2 SOL 656 30.911 16.351 11.461 1.00 0.00 H +ATOM 1972 OW SOL 657 19.451 12.581 10.221 1.00 0.00 O +ATOM 1973 HW1 SOL 657 19.401 12.571 11.221 1.00 0.00 H +ATOM 1974 HW2 SOL 657 18.621 12.171 9.841 1.00 0.00 H +ATOM 1975 OW SOL 658 25.501 16.621 17.161 1.00 0.00 O +ATOM 1976 HW1 SOL 658 24.941 17.431 17.251 1.00 0.00 H +ATOM 1977 HW2 SOL 658 26.021 16.661 16.301 1.00 0.00 H +ATOM 1978 OW SOL 659 27.651 0.860 1.330 1.00 0.00 O +ATOM 1979 HW1 SOL 659 28.161 0.870 0.470 1.00 0.00 H +ATOM 1980 HW2 SOL 659 28.211 0.440 2.040 1.00 0.00 H +ATOM 1981 OW SOL 660 1.271 15.731 4.770 1.00 0.00 O +ATOM 1982 HW1 SOL 660 1.941 15.851 4.030 1.00 0.00 H +ATOM 1983 HW2 SOL 660 0.871 16.621 5.000 1.00 0.00 H +ATOM 1984 OW SOL 661 19.921 17.941 18.511 1.00 0.00 O +ATOM 1985 HW1 SOL 661 19.511 17.201 19.041 1.00 0.00 H +ATOM 1986 HW2 SOL 661 20.561 18.451 19.091 1.00 0.00 H +ATOM 1987 OW SOL 662 0.191 9.270 6.720 1.00 0.00 O +ATOM 1988 HW1 SOL 662 0.791 8.460 6.740 1.00 0.00 H +ATOM 1989 HW2 SOL 662 0.591 9.960 6.120 1.00 0.00 H +ATOM 1990 OW SOL 663 26.921 12.731 14.221 1.00 0.00 O +ATOM 1991 HW1 SOL 663 26.871 13.061 15.171 1.00 0.00 H +ATOM 1992 HW2 SOL 663 26.061 12.921 13.761 1.00 0.00 H +ATOM 1993 OW SOL 664 25.341 16.161 1.540 1.00 0.00 O +ATOM 1994 HW1 SOL 664 25.431 16.261 0.550 1.00 0.00 H +ATOM 1995 HW2 SOL 664 24.941 15.271 1.750 1.00 0.00 H +ATOM 1996 OW SOL 665 21.251 3.260 7.200 1.00 0.00 O +ATOM 1997 HW1 SOL 665 20.461 3.770 6.860 1.00 0.00 H +ATOM 1998 HW2 SOL 665 21.161 3.110 8.180 1.00 0.00 H +ATOM 1999 OW SOL 666 30.561 16.121 0.310 1.00 0.00 O +ATOM 2000 HW1 SOL 666 30.621 15.191 0.680 1.00 0.00 H +ATOM 2001 HW2 SOL 666 29.971 16.121 -0.490 1.00 0.00 H +ATOM 2002 OW SOL 667 26.841 10.021 13.721 1.00 0.00 O +ATOM 2003 HW1 SOL 667 27.241 10.011 12.801 1.00 0.00 H +ATOM 2004 HW2 SOL 667 26.941 10.941 14.121 1.00 0.00 H +ATOM 2005 OW SOL 668 27.781 9.100 2.910 1.00 0.00 O +ATOM 2006 HW1 SOL 668 28.411 9.480 2.230 1.00 0.00 H +ATOM 2007 HW2 SOL 668 28.181 8.270 3.300 1.00 0.00 H +ATOM 2008 OW SOL 669 22.341 12.881 14.901 1.00 0.00 O +ATOM 2009 HW1 SOL 669 22.211 13.811 14.561 1.00 0.00 H +ATOM 2010 HW2 SOL 669 21.501 12.361 14.771 1.00 0.00 H +ATOM 2011 OW SOL 670 29.011 10.981 6.960 1.00 0.00 O +ATOM 2012 HW1 SOL 670 28.311 10.511 7.500 1.00 0.00 H +ATOM 2013 HW2 SOL 670 29.601 10.301 6.530 1.00 0.00 H +ATOM 2014 OW SOL 671 28.761 2.360 9.711 1.00 0.00 O +ATOM 2015 HW1 SOL 671 28.681 2.000 8.781 1.00 0.00 H +ATOM 2016 HW2 SOL 671 28.741 1.600 10.361 1.00 0.00 H +ATOM 2017 OW SOL 672 24.521 14.871 4.910 1.00 0.00 O +ATOM 2018 HW1 SOL 672 24.941 14.291 4.210 1.00 0.00 H +ATOM 2019 HW2 SOL 672 24.081 15.661 4.470 1.00 0.00 H +ATOM 2020 OW SOL 673 21.171 13.481 2.900 1.00 0.00 O +ATOM 2021 HW1 SOL 673 20.211 13.491 2.630 1.00 0.00 H +ATOM 2022 HW2 SOL 673 21.291 14.011 3.740 1.00 0.00 H +ATOM 2023 OW SOL 674 19.671 10.131 17.261 1.00 0.00 O +ATOM 2024 HW1 SOL 674 18.901 9.801 17.801 1.00 0.00 H +ATOM 2025 HW2 SOL 674 20.521 9.831 17.681 1.00 0.00 H +ATOM 2026 OW SOL 675 25.341 2.030 14.891 1.00 0.00 O +ATOM 2027 HW1 SOL 675 26.241 1.870 14.491 1.00 0.00 H +ATOM 2028 HW2 SOL 675 25.421 2.080 15.881 1.00 0.00 H +ATOM 2029 OW SOL 676 19.341 1.660 3.180 1.00 0.00 O +ATOM 2030 HW1 SOL 676 19.171 2.490 2.640 1.00 0.00 H +ATOM 2031 HW2 SOL 676 20.241 1.290 2.960 1.00 0.00 H +ATOM 2032 OW SOL 677 30.451 13.351 1.190 1.00 0.00 O +ATOM 2033 HW1 SOL 677 29.461 13.241 1.210 1.00 0.00 H +ATOM 2034 HW2 SOL 677 30.791 13.501 2.120 1.00 0.00 H +ATOM 2035 OW SOL 678 24.751 8.420 14.311 1.00 0.00 O +ATOM 2036 HW1 SOL 678 25.311 9.230 14.141 1.00 0.00 H +ATOM 2037 HW2 SOL 678 25.341 7.620 14.341 1.00 0.00 H +ATOM 2038 OW SOL 679 25.781 5.650 17.081 1.00 0.00 O +ATOM 2039 HW1 SOL 679 25.971 6.300 17.821 1.00 0.00 H +ATOM 2040 HW2 SOL 679 26.381 4.850 17.171 1.00 0.00 H +ATOM 2041 OW SOL 680 22.521 17.411 15.601 1.00 0.00 O +ATOM 2042 HW1 SOL 680 21.611 17.821 15.581 1.00 0.00 H +ATOM 2043 HW2 SOL 680 22.451 16.471 15.921 1.00 0.00 H +ATOM 2044 OW SOL 681 30.871 3.250 4.490 1.00 0.00 O +ATOM 2045 HW1 SOL 681 31.521 2.510 4.380 1.00 0.00 H +ATOM 2046 HW2 SOL 681 31.071 3.750 5.330 1.00 0.00 H +ATOM 2047 OW SOL 682 24.561 7.450 6.520 1.00 0.00 O +ATOM 2048 HW1 SOL 682 25.061 8.300 6.330 1.00 0.00 H +ATOM 2049 HW2 SOL 682 23.681 7.470 6.040 1.00 0.00 H +ATOM 2050 OW SOL 683 27.211 13.741 0.160 1.00 0.00 O +ATOM 2051 HW1 SOL 683 26.751 13.891 1.040 1.00 0.00 H +ATOM 2052 HW2 SOL 683 27.651 14.591 -0.140 1.00 0.00 H +ATOM 2053 OW SOL 684 25.231 17.901 9.531 1.00 0.00 O +ATOM 2054 HW1 SOL 684 24.771 18.781 9.401 1.00 0.00 H +ATOM 2055 HW2 SOL 684 26.221 18.021 9.461 1.00 0.00 H +ATOM 2056 OW SOL 685 1.471 18.511 17.201 1.00 0.00 O +ATOM 2057 HW1 SOL 685 0.511 18.401 16.931 1.00 0.00 H +ATOM 2058 HW2 SOL 685 2.031 17.841 16.721 1.00 0.00 H +ATOM 2059 OW SOL 686 27.211 9.561 8.610 1.00 0.00 O +ATOM 2060 HW1 SOL 686 27.751 8.871 9.090 1.00 0.00 H +ATOM 2061 HW2 SOL 686 26.891 10.251 9.270 1.00 0.00 H +ATOM 2062 OW SOL 687 29.451 9.841 0.870 1.00 0.00 O +ATOM 2063 HW1 SOL 687 29.221 10.371 0.050 1.00 0.00 H +ATOM 2064 HW2 SOL 687 30.261 9.281 0.680 1.00 0.00 H +ATOM 2065 OW SOL 688 20.831 13.141 18.441 1.00 0.00 O +ATOM 2066 HW1 SOL 688 20.181 12.411 18.231 1.00 0.00 H +ATOM 2067 HW2 SOL 688 20.871 13.281 19.421 1.00 0.00 H +ATOM 2068 OW SOL 689 19.411 12.401 6.530 1.00 0.00 O +ATOM 2069 HW1 SOL 689 19.401 11.931 7.410 1.00 0.00 H +ATOM 2070 HW2 SOL 689 20.231 12.121 6.020 1.00 0.00 H +ATOM 2071 OW SOL 690 25.341 13.911 16.241 1.00 0.00 O +ATOM 2072 HW1 SOL 690 24.561 13.411 16.621 1.00 0.00 H +ATOM 2073 HW2 SOL 690 25.311 14.861 16.551 1.00 0.00 H +ATOM 2074 OW SOL 691 22.901 4.240 5.200 1.00 0.00 O +ATOM 2075 HW1 SOL 691 23.201 3.520 4.580 1.00 0.00 H +ATOM 2076 HW2 SOL 691 22.511 3.840 6.030 1.00 0.00 H +ATOM 2077 OW SOL 692 21.791 5.470 12.801 1.00 0.00 O +ATOM 2078 HW1 SOL 692 22.171 4.880 13.521 1.00 0.00 H +ATOM 2079 HW2 SOL 692 22.191 5.210 11.921 1.00 0.00 H +ATOM 2080 OW SOL 693 26.741 15.861 6.870 1.00 0.00 O +ATOM 2081 HW1 SOL 693 27.061 15.961 5.930 1.00 0.00 H +ATOM 2082 HW2 SOL 693 25.951 15.241 6.890 1.00 0.00 H +ATOM 2083 OW SOL 694 1.631 2.140 11.121 1.00 0.00 O +ATOM 2084 HW1 SOL 694 2.151 1.490 11.671 1.00 0.00 H +ATOM 2085 HW2 SOL 694 1.141 2.770 11.731 1.00 0.00 H +ATOM 2086 OW SOL 695 28.631 0.340 11.541 1.00 0.00 O +ATOM 2087 HW1 SOL 695 28.001 -0.380 11.231 1.00 0.00 H +ATOM 2088 HW2 SOL 695 29.561 -0.020 11.541 1.00 0.00 H +ATOM 2089 OW SOL 696 26.321 13.301 3.010 1.00 0.00 O +ATOM 2090 HW1 SOL 696 25.861 12.431 3.180 1.00 0.00 H +ATOM 2091 HW2 SOL 696 27.231 13.271 3.420 1.00 0.00 H +ATOM 2092 OW SOL 697 24.801 15.671 12.841 1.00 0.00 O +ATOM 2093 HW1 SOL 697 24.751 16.491 13.411 1.00 0.00 H +ATOM 2094 HW2 SOL 697 25.691 15.641 12.391 1.00 0.00 H +ATOM 2095 OW SOL 698 0.391 4.530 6.910 1.00 0.00 O +ATOM 2096 HW1 SOL 698 -0.199 5.330 6.950 1.00 0.00 H +ATOM 2097 HW2 SOL 698 0.541 4.180 7.840 1.00 0.00 H +ATOM 2098 OW SOL 699 19.011 10.771 3.000 1.00 0.00 O +ATOM 2099 HW1 SOL 699 20.001 10.661 2.910 1.00 0.00 H +ATOM 2100 HW2 SOL 699 18.611 9.911 3.320 1.00 0.00 H +ATOM 2101 OW SOL 700 27.371 16.461 3.370 1.00 0.00 O +ATOM 2102 HW1 SOL 700 26.601 16.111 2.830 1.00 0.00 H +ATOM 2103 HW2 SOL 700 27.051 17.171 3.990 1.00 0.00 H +ATOM 2104 OW SOL 701 20.921 6.280 19.751 1.00 0.00 O +ATOM 2105 HW1 SOL 701 19.991 6.260 20.121 1.00 0.00 H +ATOM 2106 HW2 SOL 701 20.931 5.890 18.831 1.00 0.00 H +ATOM 2107 OW SOL 702 20.871 2.750 28.581 1.00 0.00 O +ATOM 2108 HW1 SOL 702 21.221 2.580 29.501 1.00 0.00 H +ATOM 2109 HW2 SOL 702 19.991 2.300 28.461 1.00 0.00 H +ATOM 2110 OW SOL 703 18.811 3.680 25.091 1.00 0.00 O +ATOM 2111 HW1 SOL 703 17.991 4.110 25.481 1.00 0.00 H +ATOM 2112 HW2 SOL 703 18.531 2.950 24.461 1.00 0.00 H +ATOM 2113 OW SOL 704 24.311 12.751 30.271 1.00 0.00 O +ATOM 2114 HW1 SOL 704 23.381 12.681 29.901 1.00 0.00 H +ATOM 2115 HW2 SOL 704 24.421 13.641 30.711 1.00 0.00 H +ATOM 2116 OW SOL 705 29.971 7.030 25.791 1.00 0.00 O +ATOM 2117 HW1 SOL 705 30.541 7.810 25.541 1.00 0.00 H +ATOM 2118 HW2 SOL 705 29.371 7.290 26.551 1.00 0.00 H +ATOM 2119 OW SOL 706 26.301 11.441 28.851 1.00 0.00 O +ATOM 2120 HW1 SOL 706 25.521 11.611 29.451 1.00 0.00 H +ATOM 2121 HW2 SOL 706 26.641 12.311 28.491 1.00 0.00 H +ATOM 2122 OW SOL 707 25.471 10.121 25.271 1.00 0.00 O +ATOM 2123 HW1 SOL 707 26.161 9.961 25.971 1.00 0.00 H +ATOM 2124 HW2 SOL 707 24.741 10.691 25.651 1.00 0.00 H +ATOM 2125 OW SOL 708 21.971 14.351 29.231 1.00 0.00 O +ATOM 2126 HW1 SOL 708 21.191 14.041 28.701 1.00 0.00 H +ATOM 2127 HW2 SOL 708 22.551 14.931 28.661 1.00 0.00 H +ATOM 2128 OW SOL 709 1.991 15.051 0.781 1.00 0.00 O +ATOM 2129 HW1 SOL 709 2.231 15.991 1.041 1.00 0.00 H +ATOM 2130 HW2 SOL 709 1.831 14.511 1.601 1.00 0.00 H +ATOM 2131 OW SOL 710 20.931 17.131 23.451 1.00 0.00 O +ATOM 2132 HW1 SOL 710 21.271 17.901 23.991 1.00 0.00 H +ATOM 2133 HW2 SOL 710 21.371 17.131 22.551 1.00 0.00 H +ATOM 2134 OW SOL 711 20.921 14.341 24.001 1.00 0.00 O +ATOM 2135 HW1 SOL 711 20.661 15.301 24.001 1.00 0.00 H +ATOM 2136 HW2 SOL 711 20.211 13.801 24.451 1.00 0.00 H +ATOM 2137 OW SOL 712 21.021 10.911 27.481 1.00 0.00 O +ATOM 2138 HW1 SOL 712 21.161 10.071 28.001 1.00 0.00 H +ATOM 2139 HW2 SOL 712 20.471 11.551 28.031 1.00 0.00 H +ATOM 2140 OW SOL 713 24.681 9.641 19.851 1.00 0.00 O +ATOM 2141 HW1 SOL 713 24.751 10.481 19.311 1.00 0.00 H +ATOM 2142 HW2 SOL 713 25.141 9.771 20.731 1.00 0.00 H +ATOM 2143 OW SOL 714 19.841 6.430 24.251 1.00 0.00 O +ATOM 2144 HW1 SOL 714 19.391 5.550 24.421 1.00 0.00 H +ATOM 2145 HW2 SOL 714 19.831 6.970 25.091 1.00 0.00 H +ATOM 2146 OW SOL 715 18.891 15.961 19.791 1.00 0.00 O +ATOM 2147 HW1 SOL 715 18.701 15.001 20.001 1.00 0.00 H +ATOM 2148 HW2 SOL 715 18.561 16.541 20.541 1.00 0.00 H +ATOM 2149 OW SOL 716 24.751 13.651 25.881 1.00 0.00 O +ATOM 2150 HW1 SOL 716 24.261 12.781 25.971 1.00 0.00 H +ATOM 2151 HW2 SOL 716 24.521 14.081 25.011 1.00 0.00 H +ATOM 2152 OW SOL 717 26.711 0.040 23.641 1.00 0.00 O +ATOM 2153 HW1 SOL 717 27.111 0.950 23.551 1.00 0.00 H +ATOM 2154 HW2 SOL 717 25.711 0.120 23.701 1.00 0.00 H +ATOM 2155 OW SOL 718 20.591 9.761 0.031 1.00 0.00 O +ATOM 2156 HW1 SOL 718 21.481 9.311 -0.109 1.00 0.00 H +ATOM 2157 HW2 SOL 718 19.861 9.111 -0.159 1.00 0.00 H +ATOM 2158 OW SOL 719 2.051 14.171 28.151 1.00 0.00 O +ATOM 2159 HW1 SOL 719 1.461 14.231 28.951 1.00 0.00 H +ATOM 2160 HW2 SOL 719 1.901 13.291 27.691 1.00 0.00 H +ATOM 2161 OW SOL 720 24.601 7.290 21.321 1.00 0.00 O +ATOM 2162 HW1 SOL 720 24.841 7.980 20.641 1.00 0.00 H +ATOM 2163 HW2 SOL 720 23.821 7.620 21.861 1.00 0.00 H +ATOM 2164 OW SOL 721 0.201 3.450 28.061 1.00 0.00 O +ATOM 2165 HW1 SOL 721 -0.659 2.950 27.931 1.00 0.00 H +ATOM 2166 HW2 SOL 721 0.821 2.910 28.621 1.00 0.00 H +ATOM 2167 OW SOL 722 29.031 7.010 22.911 1.00 0.00 O +ATOM 2168 HW1 SOL 722 29.291 6.970 23.871 1.00 0.00 H +ATOM 2169 HW2 SOL 722 28.181 6.500 22.771 1.00 0.00 H +ATOM 2170 OW SOL 723 19.381 8.110 26.511 1.00 0.00 O +ATOM 2171 HW1 SOL 723 20.371 7.990 26.601 1.00 0.00 H +ATOM 2172 HW2 SOL 723 19.141 9.060 26.721 1.00 0.00 H +ATOM 2173 OW SOL 724 27.271 3.480 20.571 1.00 0.00 O +ATOM 2174 HW1 SOL 724 27.861 4.110 20.081 1.00 0.00 H +ATOM 2175 HW2 SOL 724 27.461 2.540 20.281 1.00 0.00 H +ATOM 2176 OW SOL 725 24.121 1.960 27.471 1.00 0.00 O +ATOM 2177 HW1 SOL 725 24.071 1.910 28.471 1.00 0.00 H +ATOM 2178 HW2 SOL 725 24.141 2.920 27.181 1.00 0.00 H +ATOM 2179 OW SOL 726 28.701 14.561 23.391 1.00 0.00 O +ATOM 2180 HW1 SOL 726 28.241 15.281 22.871 1.00 0.00 H +ATOM 2181 HW2 SOL 726 28.661 14.761 24.371 1.00 0.00 H +ATOM 2182 OW SOL 727 22.131 18.011 27.151 1.00 0.00 O +ATOM 2183 HW1 SOL 727 22.631 17.151 27.211 1.00 0.00 H +ATOM 2184 HW2 SOL 727 22.781 18.781 27.121 1.00 0.00 H +ATOM 2185 OW SOL 728 21.831 9.431 21.041 1.00 0.00 O +ATOM 2186 HW1 SOL 728 22.651 9.821 20.621 1.00 0.00 H +ATOM 2187 HW2 SOL 728 21.561 8.611 20.551 1.00 0.00 H +ATOM 2188 OW SOL 729 29.731 17.761 20.991 1.00 0.00 O +ATOM 2189 HW1 SOL 729 29.131 17.141 21.491 1.00 0.00 H +ATOM 2190 HW2 SOL 729 30.041 17.321 20.141 1.00 0.00 H +ATOM 2191 OW SOL 730 23.261 17.431 21.851 1.00 0.00 O +ATOM 2192 HW1 SOL 730 23.591 17.821 22.711 1.00 0.00 H +ATOM 2193 HW2 SOL 730 24.021 17.361 21.201 1.00 0.00 H +ATOM 2194 OW SOL 731 21.111 17.851 31.031 1.00 0.00 O +ATOM 2195 HW1 SOL 731 21.681 17.201 31.531 1.00 0.00 H +ATOM 2196 HW2 SOL 731 20.951 17.521 30.101 1.00 0.00 H +ATOM 2197 OW SOL 732 28.021 16.981 27.661 1.00 0.00 O +ATOM 2198 HW1 SOL 732 28.821 16.411 27.871 1.00 0.00 H +ATOM 2199 HW2 SOL 732 27.531 16.581 26.891 1.00 0.00 H +ATOM 2200 OW SOL 733 22.441 7.000 23.421 1.00 0.00 O +ATOM 2201 HW1 SOL 733 22.891 6.100 23.391 1.00 0.00 H +ATOM 2202 HW2 SOL 733 21.501 6.890 23.751 1.00 0.00 H +ATOM 2203 OW SOL 734 24.761 1.220 19.791 1.00 0.00 O +ATOM 2204 HW1 SOL 734 25.741 1.000 19.861 1.00 0.00 H +ATOM 2205 HW2 SOL 734 24.451 1.050 18.861 1.00 0.00 H +ATOM 2206 OW SOL 735 0.901 5.900 1.721 1.00 0.00 O +ATOM 2207 HW1 SOL 735 1.181 5.470 2.571 1.00 0.00 H +ATOM 2208 HW2 SOL 735 1.151 6.860 1.731 1.00 0.00 H +ATOM 2209 OW SOL 736 26.651 14.021 27.861 1.00 0.00 O +ATOM 2210 HW1 SOL 736 27.551 14.161 27.441 1.00 0.00 H +ATOM 2211 HW2 SOL 736 25.941 14.041 27.151 1.00 0.00 H +ATOM 2212 OW SOL 737 27.841 5.030 27.611 1.00 0.00 O +ATOM 2213 HW1 SOL 737 27.591 4.940 26.651 1.00 0.00 H +ATOM 2214 HW2 SOL 737 28.321 4.210 27.921 1.00 0.00 H +ATOM 2215 OW SOL 738 24.011 0.640 23.741 1.00 0.00 O +ATOM 2216 HW1 SOL 738 23.201 0.650 24.321 1.00 0.00 H +ATOM 2217 HW2 SOL 738 24.041 1.470 23.191 1.00 0.00 H +ATOM 2218 OW SOL 739 1.731 11.881 19.031 1.00 0.00 O +ATOM 2219 HW1 SOL 739 2.051 11.121 19.601 1.00 0.00 H +ATOM 2220 HW2 SOL 739 0.811 12.151 19.331 1.00 0.00 H +ATOM 2221 OW SOL 740 21.591 0.350 20.331 1.00 0.00 O +ATOM 2222 HW1 SOL 740 22.081 1.190 20.121 1.00 0.00 H +ATOM 2223 HW2 SOL 740 22.211 -0.300 20.781 1.00 0.00 H +ATOM 2224 OW SOL 741 27.971 2.360 23.421 1.00 0.00 O +ATOM 2225 HW1 SOL 741 27.491 2.770 22.641 1.00 0.00 H +ATOM 2226 HW2 SOL 741 28.961 2.340 23.231 1.00 0.00 H +ATOM 2227 OW SOL 742 30.891 15.701 26.551 1.00 0.00 O +ATOM 2228 HW1 SOL 742 31.101 16.441 25.901 1.00 0.00 H +ATOM 2229 HW2 SOL 742 31.571 15.701 27.281 1.00 0.00 H +ATOM 2230 OW SOL 743 23.211 11.521 26.031 1.00 0.00 O +ATOM 2231 HW1 SOL 743 22.501 11.251 26.681 1.00 0.00 H +ATOM 2232 HW2 SOL 743 22.951 11.241 25.101 1.00 0.00 H +ATOM 2233 OW SOL 744 0.101 17.971 24.531 1.00 0.00 O +ATOM 2234 HW1 SOL 744 0.541 18.611 23.891 1.00 0.00 H +ATOM 2235 HW2 SOL 744 -0.399 18.491 25.231 1.00 0.00 H +ATOM 2236 OW SOL 745 28.941 5.490 18.781 1.00 0.00 O +ATOM 2237 HW1 SOL 745 28.531 6.310 18.391 1.00 0.00 H +ATOM 2238 HW2 SOL 745 29.581 5.750 19.511 1.00 0.00 H +ATOM 2239 OW SOL 746 27.281 4.540 25.041 1.00 0.00 O +ATOM 2240 HW1 SOL 746 26.961 5.260 24.421 1.00 0.00 H +ATOM 2241 HW2 SOL 746 27.521 3.730 24.511 1.00 0.00 H +ATOM 2242 OW SOL 747 28.791 0.390 26.151 1.00 0.00 O +ATOM 2243 HW1 SOL 747 28.071 0.440 25.461 1.00 0.00 H +ATOM 2244 HW2 SOL 747 28.551 -0.300 26.841 1.00 0.00 H +ATOM 2245 OW SOL 748 23.501 13.851 20.361 1.00 0.00 O +ATOM 2246 HW1 SOL 748 22.631 13.701 20.831 1.00 0.00 H +ATOM 2247 HW2 SOL 748 23.331 14.111 19.411 1.00 0.00 H +ATOM 2248 OW SOL 749 1.291 5.750 19.401 1.00 0.00 O +ATOM 2249 HW1 SOL 749 0.751 5.540 20.211 1.00 0.00 H +ATOM 2250 HW2 SOL 749 2.201 5.340 19.491 1.00 0.00 H +ATOM 2251 OW SOL 750 23.891 2.560 21.901 1.00 0.00 O +ATOM 2252 HW1 SOL 750 24.161 1.970 21.151 1.00 0.00 H +ATOM 2253 HW2 SOL 750 23.891 3.510 21.591 1.00 0.00 H +ATOM 2254 OW SOL 751 29.731 11.951 29.621 1.00 0.00 O +ATOM 2255 HW1 SOL 751 29.331 12.391 30.431 1.00 0.00 H +ATOM 2256 HW2 SOL 751 29.321 12.321 28.791 1.00 0.00 H +ATOM 2257 OW SOL 752 25.671 10.501 22.301 1.00 0.00 O +ATOM 2258 HW1 SOL 752 25.531 10.571 23.291 1.00 0.00 H +ATOM 2259 HW2 SOL 752 26.511 9.991 22.121 1.00 0.00 H +ATOM 2260 OW SOL 753 22.721 8.130 31.131 1.00 0.00 O +ATOM 2261 HW1 SOL 753 23.581 8.250 31.631 1.00 0.00 H +ATOM 2262 HW2 SOL 753 22.301 7.260 31.401 1.00 0.00 H +ATOM 2263 OW SOL 754 0.131 3.860 0.011 1.00 0.00 O +ATOM 2264 HW1 SOL 754 0.341 4.600 0.651 1.00 0.00 H +ATOM 2265 HW2 SOL 754 -0.759 4.030 -0.419 1.00 0.00 H +ATOM 2266 OW SOL 755 22.291 11.001 23.631 1.00 0.00 O +ATOM 2267 HW1 SOL 755 22.221 11.831 23.071 1.00 0.00 H +ATOM 2268 HW2 SOL 755 22.331 10.201 23.031 1.00 0.00 H +ATOM 2269 OW SOL 756 24.281 5.370 27.271 1.00 0.00 O +ATOM 2270 HW1 SOL 756 24.401 6.030 26.531 1.00 0.00 H +ATOM 2271 HW2 SOL 756 24.741 5.710 28.101 1.00 0.00 H +ATOM 2272 OW SOL 757 31.141 13.481 22.501 1.00 0.00 O +ATOM 2273 HW1 SOL 757 31.641 14.251 22.901 1.00 0.00 H +ATOM 2274 HW2 SOL 757 30.191 13.501 22.821 1.00 0.00 H +ATOM 2275 OW SOL 758 0.111 14.451 30.041 1.00 0.00 O +ATOM 2276 HW1 SOL 758 0.581 14.581 30.911 1.00 0.00 H +ATOM 2277 HW2 SOL 758 -0.549 13.711 30.131 1.00 0.00 H +ATOM 2278 OW SOL 759 24.351 8.700 28.911 1.00 0.00 O +ATOM 2279 HW1 SOL 759 24.791 9.590 28.821 1.00 0.00 H +ATOM 2280 HW2 SOL 759 23.721 8.700 29.681 1.00 0.00 H +ATOM 2281 OW SOL 760 0.991 8.620 29.071 1.00 0.00 O +ATOM 2282 HW1 SOL 760 0.241 8.620 28.411 1.00 0.00 H +ATOM 2283 HW2 SOL 760 1.361 7.700 29.161 1.00 0.00 H +ATOM 2284 OW SOL 761 30.711 5.250 21.371 1.00 0.00 O +ATOM 2285 HW1 SOL 761 30.841 4.410 21.911 1.00 0.00 H +ATOM 2286 HW2 SOL 761 30.421 5.990 21.971 1.00 0.00 H +ATOM 2287 OW SOL 762 21.691 2.130 30.931 1.00 0.00 O +ATOM 2288 HW1 SOL 762 21.461 2.500 31.831 1.00 0.00 H +ATOM 2289 HW2 SOL 762 21.391 1.180 30.871 1.00 0.00 H +ATOM 2290 OW SOL 763 25.941 6.340 29.261 1.00 0.00 O +ATOM 2291 HW1 SOL 763 26.531 6.080 28.501 1.00 0.00 H +ATOM 2292 HW2 SOL 763 25.661 7.300 29.151 1.00 0.00 H +ATOM 2293 OW SOL 764 21.691 0.630 24.801 1.00 0.00 O +ATOM 2294 HW1 SOL 764 21.581 1.570 25.131 1.00 0.00 H +ATOM 2295 HW2 SOL 764 21.641 0.000 25.571 1.00 0.00 H +ATOM 2296 OW SOL 765 28.851 7.660 28.281 1.00 0.00 O +ATOM 2297 HW1 SOL 765 29.001 7.870 29.241 1.00 0.00 H +ATOM 2298 HW2 SOL 765 28.551 6.710 28.191 1.00 0.00 H +ATOM 2299 OW SOL 766 0.421 8.380 19.041 1.00 0.00 O +ATOM 2300 HW1 SOL 766 0.761 7.450 19.191 1.00 0.00 H +ATOM 2301 HW2 SOL 766 0.601 8.650 18.091 1.00 0.00 H +ATOM 2302 OW SOL 767 29.301 13.331 27.111 1.00 0.00 O +ATOM 2303 HW1 SOL 767 29.371 12.491 26.561 1.00 0.00 H +ATOM 2304 HW2 SOL 767 29.921 14.021 26.751 1.00 0.00 H +ATOM 2305 OW SOL 768 21.811 8.100 28.111 1.00 0.00 O +ATOM 2306 HW1 SOL 768 22.741 8.460 28.161 1.00 0.00 H +ATOM 2307 HW2 SOL 768 21.751 7.250 28.631 1.00 0.00 H +ATOM 2308 OW SOL 769 22.011 5.090 28.681 1.00 0.00 O +ATOM 2309 HW1 SOL 769 21.491 4.260 28.511 1.00 0.00 H +ATOM 2310 HW2 SOL 769 22.781 5.140 28.041 1.00 0.00 H +ATOM 2311 OW SOL 770 18.701 13.261 20.621 1.00 0.00 O +ATOM 2312 HW1 SOL 770 17.771 13.471 20.311 1.00 0.00 H +ATOM 2313 HW2 SOL 770 18.801 12.271 20.751 1.00 0.00 H +ATOM 2314 OW SOL 771 19.501 18.011 27.891 1.00 0.00 O +ATOM 2315 HW1 SOL 771 19.081 17.151 27.621 1.00 0.00 H +ATOM 2316 HW2 SOL 771 20.441 18.041 27.551 1.00 0.00 H +ATOM 2317 OW SOL 772 23.661 15.681 27.721 1.00 0.00 O +ATOM 2318 HW1 SOL 772 24.321 16.421 27.811 1.00 0.00 H +ATOM 2319 HW2 SOL 772 24.101 14.891 27.301 1.00 0.00 H +ATOM 2320 OW SOL 773 28.641 7.960 31.001 1.00 0.00 O +ATOM 2321 HW1 SOL 773 29.051 7.640 31.861 1.00 0.00 H +ATOM 2322 HW2 SOL 773 27.681 7.690 30.971 1.00 0.00 H +ATOM 2323 OW SOL 774 19.021 5.440 29.761 1.00 0.00 O +ATOM 2324 HW1 SOL 774 19.871 5.110 29.351 1.00 0.00 H +ATOM 2325 HW2 SOL 774 19.151 5.590 30.741 1.00 0.00 H +ATOM 2326 OW SOL 775 26.771 5.720 21.871 1.00 0.00 O +ATOM 2327 HW1 SOL 775 26.841 4.830 21.411 1.00 0.00 H +ATOM 2328 HW2 SOL 775 25.831 6.060 21.791 1.00 0.00 H +ATOM 2329 OW SOL 776 25.331 4.640 0.081 1.00 0.00 O +ATOM 2330 HW1 SOL 776 24.991 3.750 -0.219 1.00 0.00 H +ATOM 2331 HW2 SOL 776 25.591 5.180 -0.719 1.00 0.00 H +ATOM 2332 OW SOL 777 23.351 5.000 20.531 1.00 0.00 O +ATOM 2333 HW1 SOL 777 23.961 5.800 20.571 1.00 0.00 H +ATOM 2334 HW2 SOL 777 22.401 5.310 20.601 1.00 0.00 H +ATOM 2335 OW SOL 778 19.451 12.581 28.841 1.00 0.00 O +ATOM 2336 HW1 SOL 778 19.401 12.571 29.841 1.00 0.00 H +ATOM 2337 HW2 SOL 778 18.621 12.171 28.461 1.00 0.00 H +ATOM 2338 OW SOL 779 1.271 15.731 23.391 1.00 0.00 O +ATOM 2339 HW1 SOL 779 1.941 15.851 22.651 1.00 0.00 H +ATOM 2340 HW2 SOL 779 0.871 16.621 23.621 1.00 0.00 H +ATOM 2341 OW SOL 780 0.191 9.270 25.341 1.00 0.00 O +ATOM 2342 HW1 SOL 780 0.791 8.460 25.361 1.00 0.00 H +ATOM 2343 HW2 SOL 780 0.591 9.960 24.741 1.00 0.00 H +ATOM 2344 OW SOL 781 25.341 16.161 20.161 1.00 0.00 O +ATOM 2345 HW1 SOL 781 25.431 16.261 19.171 1.00 0.00 H +ATOM 2346 HW2 SOL 781 24.941 15.271 20.371 1.00 0.00 H +ATOM 2347 OW SOL 782 21.251 3.260 25.821 1.00 0.00 O +ATOM 2348 HW1 SOL 782 20.461 3.770 25.481 1.00 0.00 H +ATOM 2349 HW2 SOL 782 21.161 3.110 26.801 1.00 0.00 H +ATOM 2350 OW SOL 783 30.561 16.121 18.931 1.00 0.00 O +ATOM 2351 HW1 SOL 783 30.621 15.191 19.301 1.00 0.00 H +ATOM 2352 HW2 SOL 783 29.971 16.121 18.131 1.00 0.00 H +ATOM 2353 OW SOL 784 26.841 10.021 1.111 1.00 0.00 O +ATOM 2354 HW1 SOL 784 27.241 10.011 0.191 1.00 0.00 H +ATOM 2355 HW2 SOL 784 26.941 10.941 1.511 1.00 0.00 H +ATOM 2356 OW SOL 785 27.781 9.100 21.531 1.00 0.00 O +ATOM 2357 HW1 SOL 785 28.411 9.480 20.851 1.00 0.00 H +ATOM 2358 HW2 SOL 785 28.181 8.270 21.921 1.00 0.00 H +ATOM 2359 OW SOL 786 29.011 10.981 25.581 1.00 0.00 O +ATOM 2360 HW1 SOL 786 28.311 10.511 26.121 1.00 0.00 H +ATOM 2361 HW2 SOL 786 29.601 10.301 25.151 1.00 0.00 H +ATOM 2362 OW SOL 787 28.761 2.360 28.331 1.00 0.00 O +ATOM 2363 HW1 SOL 787 28.681 2.000 27.401 1.00 0.00 H +ATOM 2364 HW2 SOL 787 28.741 1.600 28.981 1.00 0.00 H +ATOM 2365 OW SOL 788 24.521 14.871 23.531 1.00 0.00 O +ATOM 2366 HW1 SOL 788 24.941 14.291 22.831 1.00 0.00 H +ATOM 2367 HW2 SOL 788 24.081 15.661 23.091 1.00 0.00 H +ATOM 2368 OW SOL 789 21.171 13.481 21.521 1.00 0.00 O +ATOM 2369 HW1 SOL 789 20.211 13.491 21.251 1.00 0.00 H +ATOM 2370 HW2 SOL 789 21.291 14.011 22.361 1.00 0.00 H +ATOM 2371 OW SOL 790 19.371 3.450 18.951 1.00 0.00 O +ATOM 2372 HW1 SOL 790 18.451 3.170 18.661 1.00 0.00 H +ATOM 2373 HW2 SOL 790 19.681 4.220 18.391 1.00 0.00 H +ATOM 2374 OW SOL 791 19.341 1.660 21.801 1.00 0.00 O +ATOM 2375 HW1 SOL 791 19.171 2.490 21.261 1.00 0.00 H +ATOM 2376 HW2 SOL 791 20.241 1.290 21.581 1.00 0.00 H +ATOM 2377 OW SOL 792 30.451 13.351 19.811 1.00 0.00 O +ATOM 2378 HW1 SOL 792 29.461 13.241 19.831 1.00 0.00 H +ATOM 2379 HW2 SOL 792 30.791 13.501 20.741 1.00 0.00 H +ATOM 2380 OW SOL 793 30.871 3.250 23.111 1.00 0.00 O +ATOM 2381 HW1 SOL 793 31.521 2.510 23.001 1.00 0.00 H +ATOM 2382 HW2 SOL 793 31.071 3.750 23.951 1.00 0.00 H +ATOM 2383 OW SOL 794 24.561 7.450 25.141 1.00 0.00 O +ATOM 2384 HW1 SOL 794 25.061 8.300 24.951 1.00 0.00 H +ATOM 2385 HW2 SOL 794 23.681 7.470 24.661 1.00 0.00 H +ATOM 2386 OW SOL 795 27.211 13.741 18.781 1.00 0.00 O +ATOM 2387 HW1 SOL 795 26.751 13.891 19.661 1.00 0.00 H +ATOM 2388 HW2 SOL 795 27.651 14.591 18.481 1.00 0.00 H +ATOM 2389 OW SOL 796 25.231 17.901 28.151 1.00 0.00 O +ATOM 2390 HW1 SOL 796 24.771 18.781 28.021 1.00 0.00 H +ATOM 2391 HW2 SOL 796 26.221 18.021 28.081 1.00 0.00 H +ATOM 2392 OW SOL 797 27.211 9.561 27.231 1.00 0.00 O +ATOM 2393 HW1 SOL 797 27.751 8.871 27.711 1.00 0.00 H +ATOM 2394 HW2 SOL 797 26.891 10.251 27.891 1.00 0.00 H +ATOM 2395 OW SOL 798 29.451 9.841 19.491 1.00 0.00 O +ATOM 2396 HW1 SOL 798 29.221 10.371 18.671 1.00 0.00 H +ATOM 2397 HW2 SOL 798 30.261 9.281 19.301 1.00 0.00 H +ATOM 2398 OW SOL 799 19.411 12.401 25.151 1.00 0.00 O +ATOM 2399 HW1 SOL 799 19.401 11.931 26.031 1.00 0.00 H +ATOM 2400 HW2 SOL 799 20.231 12.121 24.641 1.00 0.00 H +ATOM 2401 OW SOL 800 22.901 4.240 23.821 1.00 0.00 O +ATOM 2402 HW1 SOL 800 23.201 3.520 23.201 1.00 0.00 H +ATOM 2403 HW2 SOL 800 22.511 3.840 24.651 1.00 0.00 H +ATOM 2404 OW SOL 801 26.741 15.861 25.491 1.00 0.00 O +ATOM 2405 HW1 SOL 801 27.061 15.961 24.551 1.00 0.00 H +ATOM 2406 HW2 SOL 801 25.951 15.241 25.511 1.00 0.00 H +ATOM 2407 OW SOL 802 1.631 2.140 29.741 1.00 0.00 O +ATOM 2408 HW1 SOL 802 2.151 1.490 30.291 1.00 0.00 H +ATOM 2409 HW2 SOL 802 1.141 2.770 30.351 1.00 0.00 H +ATOM 2410 OW SOL 803 28.631 0.340 30.161 1.00 0.00 O +ATOM 2411 HW1 SOL 803 28.001 -0.380 29.851 1.00 0.00 H +ATOM 2412 HW2 SOL 803 29.561 -0.020 30.161 1.00 0.00 H +ATOM 2413 OW SOL 804 26.321 13.301 21.631 1.00 0.00 O +ATOM 2414 HW1 SOL 804 25.861 12.431 21.801 1.00 0.00 H +ATOM 2415 HW2 SOL 804 27.231 13.271 22.041 1.00 0.00 H +ATOM 2416 OW SOL 805 0.911 0.520 20.301 1.00 0.00 O +ATOM 2417 HW1 SOL 805 1.261 0.110 19.461 1.00 0.00 H +ATOM 2418 HW2 SOL 805 0.011 0.140 20.501 1.00 0.00 H +ATOM 2419 OW SOL 806 0.391 4.530 25.531 1.00 0.00 O +ATOM 2420 HW1 SOL 806 -0.199 5.330 25.571 1.00 0.00 H +ATOM 2421 HW2 SOL 806 0.541 4.180 26.461 1.00 0.00 H +ATOM 2422 OW SOL 807 19.011 10.771 21.621 1.00 0.00 O +ATOM 2423 HW1 SOL 807 20.001 10.661 21.531 1.00 0.00 H +ATOM 2424 HW2 SOL 807 18.611 9.911 21.941 1.00 0.00 H +ATOM 2425 OW SOL 808 27.371 16.461 21.991 1.00 0.00 O +ATOM 2426 HW1 SOL 808 26.601 16.111 21.451 1.00 0.00 H +ATOM 2427 HW2 SOL 808 27.051 17.171 22.611 1.00 0.00 H +ATOM 2428 OW SOL 809 20.921 24.901 1.130 1.00 0.00 O +ATOM 2429 HW1 SOL 809 19.991 24.881 1.500 1.00 0.00 H +ATOM 2430 HW2 SOL 809 20.931 24.511 0.210 1.00 0.00 H +ATOM 2431 OW SOL 810 20.871 21.371 9.961 1.00 0.00 O +ATOM 2432 HW1 SOL 810 21.221 21.201 10.881 1.00 0.00 H +ATOM 2433 HW2 SOL 810 19.991 20.921 9.841 1.00 0.00 H +ATOM 2434 OW SOL 811 18.811 22.301 6.470 1.00 0.00 O +ATOM 2435 HW1 SOL 811 17.991 22.731 6.860 1.00 0.00 H +ATOM 2436 HW2 SOL 811 18.531 21.571 5.840 1.00 0.00 H +ATOM 2437 OW SOL 812 29.971 25.651 7.170 1.00 0.00 O +ATOM 2438 HW1 SOL 812 30.541 26.431 6.920 1.00 0.00 H +ATOM 2439 HW2 SOL 812 29.371 25.911 7.930 1.00 0.00 H +ATOM 2440 OW SOL 813 26.301 30.061 10.231 1.00 0.00 O +ATOM 2441 HW1 SOL 813 25.521 30.231 10.831 1.00 0.00 H +ATOM 2442 HW2 SOL 813 26.641 30.931 9.871 1.00 0.00 H +ATOM 2443 OW SOL 814 27.121 26.601 18.231 1.00 0.00 O +ATOM 2444 HW1 SOL 814 27.081 27.361 18.881 1.00 0.00 H +ATOM 2445 HW2 SOL 814 27.341 26.961 17.321 1.00 0.00 H +ATOM 2446 OW SOL 815 25.471 28.741 6.650 1.00 0.00 O +ATOM 2447 HW1 SOL 815 26.161 28.581 7.350 1.00 0.00 H +ATOM 2448 HW2 SOL 815 24.741 29.311 7.030 1.00 0.00 H +ATOM 2449 OW SOL 816 23.001 22.541 14.991 1.00 0.00 O +ATOM 2450 HW1 SOL 816 23.821 21.981 15.081 1.00 0.00 H +ATOM 2451 HW2 SOL 816 22.191 21.961 15.031 1.00 0.00 H +ATOM 2452 OW SOL 817 21.021 29.531 8.860 1.00 0.00 O +ATOM 2453 HW1 SOL 817 21.161 28.691 9.380 1.00 0.00 H +ATOM 2454 HW2 SOL 817 20.471 30.171 9.410 1.00 0.00 H +ATOM 2455 OW SOL 818 24.681 28.261 1.230 1.00 0.00 O +ATOM 2456 HW1 SOL 818 24.751 29.101 0.690 1.00 0.00 H +ATOM 2457 HW2 SOL 818 25.141 28.391 2.110 1.00 0.00 H +ATOM 2458 OW SOL 819 19.841 25.051 5.630 1.00 0.00 O +ATOM 2459 HW1 SOL 819 19.391 24.171 5.800 1.00 0.00 H +ATOM 2460 HW2 SOL 819 19.831 25.591 6.470 1.00 0.00 H +ATOM 2461 OW SOL 820 19.751 25.991 15.971 1.00 0.00 O +ATOM 2462 HW1 SOL 820 20.631 25.861 16.421 1.00 0.00 H +ATOM 2463 HW2 SOL 820 19.621 26.961 15.751 1.00 0.00 H +ATOM 2464 OW SOL 821 24.751 1.041 7.260 1.00 0.00 O +ATOM 2465 HW1 SOL 821 24.261 0.171 7.350 1.00 0.00 H +ATOM 2466 HW2 SOL 821 24.521 1.471 6.390 1.00 0.00 H +ATOM 2467 OW SOL 822 26.711 18.661 5.020 1.00 0.00 O +ATOM 2468 HW1 SOL 822 27.111 19.571 4.930 1.00 0.00 H +ATOM 2469 HW2 SOL 822 25.711 18.741 5.080 1.00 0.00 H +ATOM 2470 OW SOL 823 20.591 28.381 12.641 1.00 0.00 O +ATOM 2471 HW1 SOL 823 21.481 27.931 12.501 1.00 0.00 H +ATOM 2472 HW2 SOL 823 19.861 27.731 12.451 1.00 0.00 H +ATOM 2473 OW SOL 824 21.791 21.131 18.011 1.00 0.00 O +ATOM 2474 HW1 SOL 824 22.501 21.841 18.071 1.00 0.00 H +ATOM 2475 HW2 SOL 824 20.911 21.521 18.291 1.00 0.00 H +ATOM 2476 OW SOL 825 24.601 25.911 2.700 1.00 0.00 O +ATOM 2477 HW1 SOL 825 24.841 26.601 2.020 1.00 0.00 H +ATOM 2478 HW2 SOL 825 23.821 26.241 3.240 1.00 0.00 H +ATOM 2479 OW SOL 826 0.201 22.071 9.441 1.00 0.00 O +ATOM 2480 HW1 SOL 826 -0.659 21.571 9.311 1.00 0.00 H +ATOM 2481 HW2 SOL 826 0.821 21.531 10.001 1.00 0.00 H +ATOM 2482 OW SOL 827 26.691 24.671 14.651 1.00 0.00 O +ATOM 2483 HW1 SOL 827 26.221 24.641 15.541 1.00 0.00 H +ATOM 2484 HW2 SOL 827 26.181 24.121 13.991 1.00 0.00 H +ATOM 2485 OW SOL 828 28.351 27.521 15.721 1.00 0.00 O +ATOM 2486 HW1 SOL 828 28.811 26.681 15.431 1.00 0.00 H +ATOM 2487 HW2 SOL 828 27.791 27.861 14.971 1.00 0.00 H +ATOM 2488 OW SOL 829 28.531 22.721 12.421 1.00 0.00 O +ATOM 2489 HW1 SOL 829 27.761 23.061 12.961 1.00 0.00 H +ATOM 2490 HW2 SOL 829 28.191 22.211 11.631 1.00 0.00 H +ATOM 2491 OW SOL 830 29.031 25.631 4.290 1.00 0.00 O +ATOM 2492 HW1 SOL 830 29.291 25.591 5.250 1.00 0.00 H +ATOM 2493 HW2 SOL 830 28.181 25.121 4.150 1.00 0.00 H +ATOM 2494 OW SOL 831 19.381 26.731 7.890 1.00 0.00 O +ATOM 2495 HW1 SOL 831 20.371 26.611 7.980 1.00 0.00 H +ATOM 2496 HW2 SOL 831 19.141 27.681 8.100 1.00 0.00 H +ATOM 2497 OW SOL 832 27.271 22.101 1.950 1.00 0.00 O +ATOM 2498 HW1 SOL 832 27.861 22.731 1.460 1.00 0.00 H +ATOM 2499 HW2 SOL 832 27.461 21.161 1.660 1.00 0.00 H +ATOM 2500 OW SOL 833 24.121 20.581 8.850 1.00 0.00 O +ATOM 2501 HW1 SOL 833 24.071 20.531 9.850 1.00 0.00 H +ATOM 2502 HW2 SOL 833 24.141 21.541 8.560 1.00 0.00 H +ATOM 2503 OW SOL 834 21.831 28.051 2.420 1.00 0.00 O +ATOM 2504 HW1 SOL 834 22.651 28.441 2.000 1.00 0.00 H +ATOM 2505 HW2 SOL 834 21.561 27.231 1.930 1.00 0.00 H +ATOM 2506 OW SOL 835 20.641 21.471 14.981 1.00 0.00 O +ATOM 2507 HW1 SOL 835 19.841 22.071 14.851 1.00 0.00 H +ATOM 2508 HW2 SOL 835 20.541 20.981 15.841 1.00 0.00 H +ATOM 2509 OW SOL 836 22.441 25.621 4.800 1.00 0.00 O +ATOM 2510 HW1 SOL 836 22.891 24.721 4.770 1.00 0.00 H +ATOM 2511 HW2 SOL 836 21.501 25.511 5.130 1.00 0.00 H +ATOM 2512 OW SOL 837 24.761 19.841 1.170 1.00 0.00 O +ATOM 2513 HW1 SOL 837 25.741 19.621 1.240 1.00 0.00 H +ATOM 2514 HW2 SOL 837 24.451 19.671 0.240 1.00 0.00 H +ATOM 2515 OW SOL 838 26.431 21.261 17.491 1.00 0.00 O +ATOM 2516 HW1 SOL 838 27.101 20.651 17.921 1.00 0.00 H +ATOM 2517 HW2 SOL 838 25.701 21.451 18.141 1.00 0.00 H +ATOM 2518 OW SOL 839 27.841 23.651 8.990 1.00 0.00 O +ATOM 2519 HW1 SOL 839 27.591 23.561 8.030 1.00 0.00 H +ATOM 2520 HW2 SOL 839 28.321 22.831 9.300 1.00 0.00 H +ATOM 2521 OW SOL 840 24.011 19.261 5.120 1.00 0.00 O +ATOM 2522 HW1 SOL 840 23.201 19.271 5.700 1.00 0.00 H +ATOM 2523 HW2 SOL 840 24.041 20.091 4.570 1.00 0.00 H +ATOM 2524 OW SOL 841 21.591 18.971 1.710 1.00 0.00 O +ATOM 2525 HW1 SOL 841 22.081 19.811 1.500 1.00 0.00 H +ATOM 2526 HW2 SOL 841 22.211 18.321 2.160 1.00 0.00 H +ATOM 2527 OW SOL 842 27.971 20.981 4.800 1.00 0.00 O +ATOM 2528 HW1 SOL 842 27.491 21.391 4.020 1.00 0.00 H +ATOM 2529 HW2 SOL 842 28.961 20.961 4.610 1.00 0.00 H +ATOM 2530 OW SOL 843 29.381 25.451 14.641 1.00 0.00 O +ATOM 2531 HW1 SOL 843 28.581 24.841 14.671 1.00 0.00 H +ATOM 2532 HW2 SOL 843 30.191 24.921 14.401 1.00 0.00 H +ATOM 2533 OW SOL 844 23.211 30.141 7.410 1.00 0.00 O +ATOM 2534 HW1 SOL 844 22.501 29.871 8.060 1.00 0.00 H +ATOM 2535 HW2 SOL 844 22.951 29.861 6.480 1.00 0.00 H +ATOM 2536 OW SOL 845 28.941 24.111 0.160 1.00 0.00 O +ATOM 2537 HW1 SOL 845 28.531 24.931 -0.230 1.00 0.00 H +ATOM 2538 HW2 SOL 845 29.581 24.371 0.890 1.00 0.00 H +ATOM 2539 OW SOL 846 19.401 24.181 13.861 1.00 0.00 O +ATOM 2540 HW1 SOL 846 20.321 24.171 13.451 1.00 0.00 H +ATOM 2541 HW2 SOL 846 19.341 24.921 14.531 1.00 0.00 H +ATOM 2542 OW SOL 847 24.231 20.841 11.471 1.00 0.00 O +ATOM 2543 HW1 SOL 847 24.611 20.001 11.841 1.00 0.00 H +ATOM 2544 HW2 SOL 847 23.351 21.031 11.911 1.00 0.00 H +ATOM 2545 OW SOL 848 27.281 23.161 6.420 1.00 0.00 O +ATOM 2546 HW1 SOL 848 26.961 23.881 5.800 1.00 0.00 H +ATOM 2547 HW2 SOL 848 27.521 22.351 5.890 1.00 0.00 H +ATOM 2548 OW SOL 849 28.791 19.011 7.530 1.00 0.00 O +ATOM 2549 HW1 SOL 849 28.071 19.061 6.840 1.00 0.00 H +ATOM 2550 HW2 SOL 849 28.551 18.321 8.220 1.00 0.00 H +ATOM 2551 OW SOL 850 23.891 21.181 3.280 1.00 0.00 O +ATOM 2552 HW1 SOL 850 24.161 20.591 2.530 1.00 0.00 H +ATOM 2553 HW2 SOL 850 23.891 22.131 2.970 1.00 0.00 H +ATOM 2554 OW SOL 851 27.771 19.511 14.021 1.00 0.00 O +ATOM 2555 HW1 SOL 851 28.021 19.311 13.071 1.00 0.00 H +ATOM 2556 HW2 SOL 851 28.491 20.071 14.441 1.00 0.00 H +ATOM 2557 OW SOL 852 28.421 29.781 17.191 1.00 0.00 O +ATOM 2558 HW1 SOL 852 27.431 29.841 17.291 1.00 0.00 H +ATOM 2559 HW2 SOL 852 28.651 28.981 16.631 1.00 0.00 H +ATOM 2560 OW SOL 853 25.671 29.121 3.680 1.00 0.00 O +ATOM 2561 HW1 SOL 853 25.531 29.191 4.670 1.00 0.00 H +ATOM 2562 HW2 SOL 853 26.511 28.611 3.500 1.00 0.00 H +ATOM 2563 OW SOL 854 22.721 26.751 12.511 1.00 0.00 O +ATOM 2564 HW1 SOL 854 23.581 26.871 13.011 1.00 0.00 H +ATOM 2565 HW2 SOL 854 22.301 25.881 12.781 1.00 0.00 H +ATOM 2566 OW SOL 855 0.131 22.481 12.621 1.00 0.00 O +ATOM 2567 HW1 SOL 855 0.341 23.221 13.261 1.00 0.00 H +ATOM 2568 HW2 SOL 855 -0.759 22.651 12.191 1.00 0.00 H +ATOM 2569 OW SOL 856 22.291 29.621 5.010 1.00 0.00 O +ATOM 2570 HW1 SOL 856 22.221 30.451 4.450 1.00 0.00 H +ATOM 2571 HW2 SOL 856 22.331 28.821 4.410 1.00 0.00 H +ATOM 2572 OW SOL 857 24.281 23.991 8.650 1.00 0.00 O +ATOM 2573 HW1 SOL 857 24.401 24.651 7.910 1.00 0.00 H +ATOM 2574 HW2 SOL 857 24.741 24.331 9.480 1.00 0.00 H +ATOM 2575 OW SOL 858 22.641 26.131 15.981 1.00 0.00 O +ATOM 2576 HW1 SOL 858 23.321 26.681 15.511 1.00 0.00 H +ATOM 2577 HW2 SOL 858 23.041 25.251 16.251 1.00 0.00 H +ATOM 2578 OW SOL 859 28.751 19.671 17.701 1.00 0.00 O +ATOM 2579 HW1 SOL 859 28.811 20.521 17.181 1.00 0.00 H +ATOM 2580 HW2 SOL 859 29.071 18.911 17.131 1.00 0.00 H +ATOM 2581 OW SOL 860 23.661 19.121 17.401 1.00 0.00 O +ATOM 2582 HW1 SOL 860 23.241 18.551 16.701 1.00 0.00 H +ATOM 2583 HW2 SOL 860 23.001 19.811 17.721 1.00 0.00 H +ATOM 2584 OW SOL 861 24.351 27.321 10.291 1.00 0.00 O +ATOM 2585 HW1 SOL 861 24.791 28.211 10.201 1.00 0.00 H +ATOM 2586 HW2 SOL 861 23.721 27.321 11.061 1.00 0.00 H +ATOM 2587 OW SOL 862 0.991 27.241 10.451 1.00 0.00 O +ATOM 2588 HW1 SOL 862 0.241 27.241 9.791 1.00 0.00 H +ATOM 2589 HW2 SOL 862 1.361 26.321 10.541 1.00 0.00 H +ATOM 2590 OW SOL 863 30.711 23.871 2.750 1.00 0.00 O +ATOM 2591 HW1 SOL 863 30.841 23.031 3.290 1.00 0.00 H +ATOM 2592 HW2 SOL 863 30.421 24.611 3.350 1.00 0.00 H +ATOM 2593 OW SOL 864 21.691 20.751 12.311 1.00 0.00 O +ATOM 2594 HW1 SOL 864 21.461 21.121 13.211 1.00 0.00 H +ATOM 2595 HW2 SOL 864 21.391 19.801 12.251 1.00 0.00 H +ATOM 2596 OW SOL 865 18.991 0.491 12.821 1.00 0.00 O +ATOM 2597 HW1 SOL 865 19.521 0.001 13.501 1.00 0.00 H +ATOM 2598 HW2 SOL 865 19.211 1.471 12.871 1.00 0.00 H +ATOM 2599 OW SOL 866 25.941 24.961 10.641 1.00 0.00 O +ATOM 2600 HW1 SOL 866 26.531 24.701 9.881 1.00 0.00 H +ATOM 2601 HW2 SOL 866 25.661 25.921 10.531 1.00 0.00 H +ATOM 2602 OW SOL 867 21.691 19.251 6.180 1.00 0.00 O +ATOM 2603 HW1 SOL 867 21.581 20.191 6.510 1.00 0.00 H +ATOM 2604 HW2 SOL 867 21.641 18.621 6.950 1.00 0.00 H +ATOM 2605 OW SOL 868 28.851 26.281 9.661 1.00 0.00 O +ATOM 2606 HW1 SOL 868 29.001 26.491 10.621 1.00 0.00 H +ATOM 2607 HW2 SOL 868 28.551 25.331 9.571 1.00 0.00 H +ATOM 2608 OW SOL 869 22.121 27.601 18.041 1.00 0.00 O +ATOM 2609 HW1 SOL 869 22.881 28.041 18.521 1.00 0.00 H +ATOM 2610 HW2 SOL 869 22.471 27.131 17.221 1.00 0.00 H +ATOM 2611 OW SOL 870 21.811 26.721 9.491 1.00 0.00 O +ATOM 2612 HW1 SOL 870 22.741 27.081 9.541 1.00 0.00 H +ATOM 2613 HW2 SOL 870 21.751 25.871 10.011 1.00 0.00 H +ATOM 2614 OW SOL 871 22.011 23.711 10.061 1.00 0.00 O +ATOM 2615 HW1 SOL 871 21.491 22.881 9.891 1.00 0.00 H +ATOM 2616 HW2 SOL 871 22.781 23.761 9.421 1.00 0.00 H +ATOM 2617 OW SOL 872 23.731 22.771 18.081 1.00 0.00 O +ATOM 2618 HW1 SOL 872 23.551 23.221 18.961 1.00 0.00 H +ATOM 2619 HW2 SOL 872 24.151 23.421 17.451 1.00 0.00 H +ATOM 2620 OW SOL 873 30.001 22.421 16.781 1.00 0.00 O +ATOM 2621 HW1 SOL 873 29.551 23.051 17.421 1.00 0.00 H +ATOM 2622 HW2 SOL 873 30.931 22.731 16.611 1.00 0.00 H +ATOM 2623 OW SOL 874 30.221 20.691 14.771 1.00 0.00 O +ATOM 2624 HW1 SOL 874 30.221 21.331 15.541 1.00 0.00 H +ATOM 2625 HW2 SOL 874 30.501 21.171 13.941 1.00 0.00 H +ATOM 2626 OW SOL 875 28.641 26.581 12.381 1.00 0.00 O +ATOM 2627 HW1 SOL 875 29.051 26.261 13.241 1.00 0.00 H +ATOM 2628 HW2 SOL 875 27.681 26.311 12.351 1.00 0.00 H +ATOM 2629 OW SOL 876 19.021 24.061 11.141 1.00 0.00 O +ATOM 2630 HW1 SOL 876 19.871 23.731 10.731 1.00 0.00 H +ATOM 2631 HW2 SOL 876 19.151 24.211 12.121 1.00 0.00 H +ATOM 2632 OW SOL 877 20.511 23.821 17.221 1.00 0.00 O +ATOM 2633 HW1 SOL 877 21.101 23.421 16.521 1.00 0.00 H +ATOM 2634 HW2 SOL 877 19.931 24.531 16.811 1.00 0.00 H +ATOM 2635 OW SOL 878 26.771 24.341 3.250 1.00 0.00 O +ATOM 2636 HW1 SOL 878 26.841 23.451 2.790 1.00 0.00 H +ATOM 2637 HW2 SOL 878 25.831 24.681 3.170 1.00 0.00 H +ATOM 2638 OW SOL 879 25.331 23.261 12.691 1.00 0.00 O +ATOM 2639 HW1 SOL 879 24.991 22.371 12.391 1.00 0.00 H +ATOM 2640 HW2 SOL 879 25.591 23.801 11.891 1.00 0.00 H +ATOM 2641 OW SOL 880 23.351 23.621 1.910 1.00 0.00 O +ATOM 2642 HW1 SOL 880 23.961 24.421 1.950 1.00 0.00 H +ATOM 2643 HW2 SOL 880 22.401 23.931 1.980 1.00 0.00 H +ATOM 2644 OW SOL 881 20.211 29.991 14.661 1.00 0.00 O +ATOM 2645 HW1 SOL 881 20.431 29.381 15.421 1.00 0.00 H +ATOM 2646 HW2 SOL 881 20.311 29.501 13.801 1.00 0.00 H +ATOM 2647 OW SOL 882 0.861 29.211 12.341 1.00 0.00 O +ATOM 2648 HW1 SOL 882 1.101 28.581 11.601 1.00 0.00 H +ATOM 2649 HW2 SOL 882 -0.039 29.611 12.161 1.00 0.00 H +ATOM 2650 OW SOL 883 19.451 31.201 10.221 1.00 0.00 O +ATOM 2651 HW1 SOL 883 19.401 31.191 11.221 1.00 0.00 H +ATOM 2652 HW2 SOL 883 18.621 30.791 9.841 1.00 0.00 H +ATOM 2653 OW SOL 884 27.651 19.481 1.330 1.00 0.00 O +ATOM 2654 HW1 SOL 884 28.161 19.491 0.470 1.00 0.00 H +ATOM 2655 HW2 SOL 884 28.211 19.061 2.040 1.00 0.00 H +ATOM 2656 OW SOL 885 0.191 27.891 6.720 1.00 0.00 O +ATOM 2657 HW1 SOL 885 0.791 27.081 6.740 1.00 0.00 H +ATOM 2658 HW2 SOL 885 0.591 28.581 6.120 1.00 0.00 H +ATOM 2659 OW SOL 886 21.251 21.881 7.200 1.00 0.00 O +ATOM 2660 HW1 SOL 886 20.461 22.391 6.860 1.00 0.00 H +ATOM 2661 HW2 SOL 886 21.161 21.731 8.180 1.00 0.00 H +ATOM 2662 OW SOL 887 26.841 28.641 13.721 1.00 0.00 O +ATOM 2663 HW1 SOL 887 27.241 28.631 12.801 1.00 0.00 H +ATOM 2664 HW2 SOL 887 26.941 29.561 14.121 1.00 0.00 H +ATOM 2665 OW SOL 888 27.781 27.721 2.910 1.00 0.00 O +ATOM 2666 HW1 SOL 888 28.411 28.101 2.230 1.00 0.00 H +ATOM 2667 HW2 SOL 888 28.181 26.891 3.300 1.00 0.00 H +ATOM 2668 OW SOL 889 22.341 0.271 14.901 1.00 0.00 O +ATOM 2669 HW1 SOL 889 22.211 1.201 14.561 1.00 0.00 H +ATOM 2670 HW2 SOL 889 21.501 -0.249 14.771 1.00 0.00 H +ATOM 2671 OW SOL 890 29.011 29.601 6.960 1.00 0.00 O +ATOM 2672 HW1 SOL 890 28.311 29.131 7.500 1.00 0.00 H +ATOM 2673 HW2 SOL 890 29.601 28.921 6.530 1.00 0.00 H +ATOM 2674 OW SOL 891 28.761 20.981 9.711 1.00 0.00 O +ATOM 2675 HW1 SOL 891 28.681 20.621 8.781 1.00 0.00 H +ATOM 2676 HW2 SOL 891 28.741 20.221 10.361 1.00 0.00 H +ATOM 2677 OW SOL 892 19.671 28.751 17.261 1.00 0.00 O +ATOM 2678 HW1 SOL 892 18.901 28.421 17.801 1.00 0.00 H +ATOM 2679 HW2 SOL 892 20.521 28.451 17.681 1.00 0.00 H +ATOM 2680 OW SOL 893 25.341 20.651 14.891 1.00 0.00 O +ATOM 2681 HW1 SOL 893 26.241 20.491 14.491 1.00 0.00 H +ATOM 2682 HW2 SOL 893 25.421 20.701 15.881 1.00 0.00 H +ATOM 2683 OW SOL 894 19.341 20.281 3.180 1.00 0.00 O +ATOM 2684 HW1 SOL 894 19.171 21.111 2.640 1.00 0.00 H +ATOM 2685 HW2 SOL 894 20.241 19.911 2.960 1.00 0.00 H +ATOM 2686 OW SOL 895 24.751 27.041 14.311 1.00 0.00 O +ATOM 2687 HW1 SOL 895 25.311 27.851 14.141 1.00 0.00 H +ATOM 2688 HW2 SOL 895 25.341 26.241 14.341 1.00 0.00 H +ATOM 2689 OW SOL 896 25.781 24.271 17.081 1.00 0.00 O +ATOM 2690 HW1 SOL 896 25.971 24.921 17.821 1.00 0.00 H +ATOM 2691 HW2 SOL 896 26.381 23.471 17.171 1.00 0.00 H +ATOM 2692 OW SOL 897 30.871 21.871 4.490 1.00 0.00 O +ATOM 2693 HW1 SOL 897 31.521 21.131 4.380 1.00 0.00 H +ATOM 2694 HW2 SOL 897 31.071 22.371 5.330 1.00 0.00 H +ATOM 2695 OW SOL 898 24.561 26.071 6.520 1.00 0.00 O +ATOM 2696 HW1 SOL 898 25.061 26.921 6.330 1.00 0.00 H +ATOM 2697 HW2 SOL 898 23.681 26.091 6.040 1.00 0.00 H +ATOM 2698 OW SOL 899 27.211 28.181 8.610 1.00 0.00 O +ATOM 2699 HW1 SOL 899 27.751 27.491 9.090 1.00 0.00 H +ATOM 2700 HW2 SOL 899 26.891 28.871 9.270 1.00 0.00 H +ATOM 2701 OW SOL 900 29.451 28.461 0.870 1.00 0.00 O +ATOM 2702 HW1 SOL 900 29.221 28.991 0.050 1.00 0.00 H +ATOM 2703 HW2 SOL 900 30.261 27.901 0.680 1.00 0.00 H +ATOM 2704 OW SOL 901 19.411 31.021 6.530 1.00 0.00 O +ATOM 2705 HW1 SOL 901 19.401 30.551 7.410 1.00 0.00 H +ATOM 2706 HW2 SOL 901 20.231 30.741 6.020 1.00 0.00 H +ATOM 2707 OW SOL 902 22.901 22.861 5.200 1.00 0.00 O +ATOM 2708 HW1 SOL 902 23.201 22.141 4.580 1.00 0.00 H +ATOM 2709 HW2 SOL 902 22.511 22.461 6.030 1.00 0.00 H +ATOM 2710 OW SOL 903 21.791 24.091 12.801 1.00 0.00 O +ATOM 2711 HW1 SOL 903 22.171 23.501 13.521 1.00 0.00 H +ATOM 2712 HW2 SOL 903 22.191 23.831 11.921 1.00 0.00 H +ATOM 2713 OW SOL 904 1.631 20.761 11.121 1.00 0.00 O +ATOM 2714 HW1 SOL 904 2.151 20.111 11.671 1.00 0.00 H +ATOM 2715 HW2 SOL 904 1.141 21.391 11.731 1.00 0.00 H +ATOM 2716 OW SOL 905 28.631 18.961 11.541 1.00 0.00 O +ATOM 2717 HW1 SOL 905 28.001 18.241 11.231 1.00 0.00 H +ATOM 2718 HW2 SOL 905 29.561 18.601 11.541 1.00 0.00 H +ATOM 2719 OW SOL 906 26.321 0.691 3.010 1.00 0.00 O +ATOM 2720 HW1 SOL 906 25.861 -0.179 3.180 1.00 0.00 H +ATOM 2721 HW2 SOL 906 27.231 0.661 3.420 1.00 0.00 H +ATOM 2722 OW SOL 907 0.911 19.141 1.680 1.00 0.00 O +ATOM 2723 HW1 SOL 907 1.261 18.731 0.840 1.00 0.00 H +ATOM 2724 HW2 SOL 907 0.011 18.761 1.880 1.00 0.00 H +ATOM 2725 OW SOL 908 0.391 23.151 6.910 1.00 0.00 O +ATOM 2726 HW1 SOL 908 -0.199 23.951 6.950 1.00 0.00 H +ATOM 2727 HW2 SOL 908 0.541 22.801 7.840 1.00 0.00 H +ATOM 2728 OW SOL 909 19.011 29.391 3.000 1.00 0.00 O +ATOM 2729 HW1 SOL 909 20.001 29.281 2.910 1.00 0.00 H +ATOM 2730 HW2 SOL 909 18.611 28.531 3.320 1.00 0.00 H +ATOM 2731 OW SOL 910 20.921 24.901 19.751 1.00 0.00 O +ATOM 2732 HW1 SOL 910 19.991 24.881 20.121 1.00 0.00 H +ATOM 2733 HW2 SOL 910 20.931 24.511 18.831 1.00 0.00 H +ATOM 2734 OW SOL 911 20.871 21.371 28.581 1.00 0.00 O +ATOM 2735 HW1 SOL 911 21.221 21.201 29.501 1.00 0.00 H +ATOM 2736 HW2 SOL 911 19.991 20.921 28.461 1.00 0.00 H +ATOM 2737 OW SOL 912 18.811 22.301 25.091 1.00 0.00 O +ATOM 2738 HW1 SOL 912 17.991 22.731 25.481 1.00 0.00 H +ATOM 2739 HW2 SOL 912 18.531 21.571 24.461 1.00 0.00 H +ATOM 2740 OW SOL 913 29.971 25.651 25.791 1.00 0.00 O +ATOM 2741 HW1 SOL 913 30.541 26.431 25.541 1.00 0.00 H +ATOM 2742 HW2 SOL 913 29.371 25.911 26.551 1.00 0.00 H +ATOM 2743 OW SOL 914 26.301 30.061 28.851 1.00 0.00 O +ATOM 2744 HW1 SOL 914 25.521 30.231 29.451 1.00 0.00 H +ATOM 2745 HW2 SOL 914 26.641 30.931 28.491 1.00 0.00 H +ATOM 2746 OW SOL 915 25.471 28.741 25.271 1.00 0.00 O +ATOM 2747 HW1 SOL 915 26.161 28.581 25.971 1.00 0.00 H +ATOM 2748 HW2 SOL 915 24.741 29.311 25.651 1.00 0.00 H +ATOM 2749 OW SOL 916 21.021 29.531 27.481 1.00 0.00 O +ATOM 2750 HW1 SOL 916 21.161 28.691 28.001 1.00 0.00 H +ATOM 2751 HW2 SOL 916 20.471 30.171 28.031 1.00 0.00 H +ATOM 2752 OW SOL 917 24.681 28.261 19.851 1.00 0.00 O +ATOM 2753 HW1 SOL 917 24.751 29.101 19.311 1.00 0.00 H +ATOM 2754 HW2 SOL 917 25.141 28.391 20.731 1.00 0.00 H +ATOM 2755 OW SOL 918 19.841 25.051 24.251 1.00 0.00 O +ATOM 2756 HW1 SOL 918 19.391 24.171 24.421 1.00 0.00 H +ATOM 2757 HW2 SOL 918 19.831 25.591 25.091 1.00 0.00 H +ATOM 2758 OW SOL 919 24.751 1.041 25.881 1.00 0.00 O +ATOM 2759 HW1 SOL 919 24.261 0.171 25.971 1.00 0.00 H +ATOM 2760 HW2 SOL 919 24.521 1.471 25.011 1.00 0.00 H +ATOM 2761 OW SOL 920 26.711 18.661 23.641 1.00 0.00 O +ATOM 2762 HW1 SOL 920 27.111 19.571 23.551 1.00 0.00 H +ATOM 2763 HW2 SOL 920 25.711 18.741 23.701 1.00 0.00 H +ATOM 2764 OW SOL 921 20.591 28.381 0.031 1.00 0.00 O +ATOM 2765 HW1 SOL 921 21.481 27.931 -0.109 1.00 0.00 H +ATOM 2766 HW2 SOL 921 19.861 27.731 -0.159 1.00 0.00 H +ATOM 2767 OW SOL 922 24.601 25.911 21.321 1.00 0.00 O +ATOM 2768 HW1 SOL 922 24.841 26.601 20.641 1.00 0.00 H +ATOM 2769 HW2 SOL 922 23.821 26.241 21.861 1.00 0.00 H +ATOM 2770 OW SOL 923 0.201 22.071 28.061 1.00 0.00 O +ATOM 2771 HW1 SOL 923 -0.659 21.571 27.931 1.00 0.00 H +ATOM 2772 HW2 SOL 923 0.821 21.531 28.621 1.00 0.00 H +ATOM 2773 OW SOL 924 29.031 25.631 22.911 1.00 0.00 O +ATOM 2774 HW1 SOL 924 29.291 25.591 23.871 1.00 0.00 H +ATOM 2775 HW2 SOL 924 28.181 25.121 22.771 1.00 0.00 H +ATOM 2776 OW SOL 925 19.381 26.731 26.511 1.00 0.00 O +ATOM 2777 HW1 SOL 925 20.371 26.611 26.601 1.00 0.00 H +ATOM 2778 HW2 SOL 925 19.141 27.681 26.721 1.00 0.00 H +ATOM 2779 OW SOL 926 27.271 22.101 20.571 1.00 0.00 O +ATOM 2780 HW1 SOL 926 27.861 22.731 20.081 1.00 0.00 H +ATOM 2781 HW2 SOL 926 27.461 21.161 20.281 1.00 0.00 H +ATOM 2782 OW SOL 927 24.121 20.581 27.471 1.00 0.00 O +ATOM 2783 HW1 SOL 927 24.071 20.531 28.471 1.00 0.00 H +ATOM 2784 HW2 SOL 927 24.141 21.541 27.181 1.00 0.00 H +ATOM 2785 OW SOL 928 21.831 28.051 21.041 1.00 0.00 O +ATOM 2786 HW1 SOL 928 22.651 28.441 20.621 1.00 0.00 H +ATOM 2787 HW2 SOL 928 21.561 27.231 20.551 1.00 0.00 H +ATOM 2788 OW SOL 929 22.441 25.621 23.421 1.00 0.00 O +ATOM 2789 HW1 SOL 929 22.891 24.721 23.391 1.00 0.00 H +ATOM 2790 HW2 SOL 929 21.501 25.511 23.751 1.00 0.00 H +ATOM 2791 OW SOL 930 24.761 19.841 19.791 1.00 0.00 O +ATOM 2792 HW1 SOL 930 25.741 19.621 19.861 1.00 0.00 H +ATOM 2793 HW2 SOL 930 24.451 19.671 18.861 1.00 0.00 H +ATOM 2794 OW SOL 931 0.901 24.521 1.721 1.00 0.00 O +ATOM 2795 HW1 SOL 931 1.181 24.091 2.571 1.00 0.00 H +ATOM 2796 HW2 SOL 931 1.151 25.481 1.731 1.00 0.00 H +ATOM 2797 OW SOL 932 27.841 23.651 27.611 1.00 0.00 O +ATOM 2798 HW1 SOL 932 27.591 23.561 26.651 1.00 0.00 H +ATOM 2799 HW2 SOL 932 28.321 22.831 27.921 1.00 0.00 H +ATOM 2800 OW SOL 933 24.011 19.261 23.741 1.00 0.00 O +ATOM 2801 HW1 SOL 933 23.201 19.271 24.321 1.00 0.00 H +ATOM 2802 HW2 SOL 933 24.041 20.091 23.191 1.00 0.00 H +ATOM 2803 OW SOL 934 21.591 18.971 20.331 1.00 0.00 O +ATOM 2804 HW1 SOL 934 22.081 19.811 20.121 1.00 0.00 H +ATOM 2805 HW2 SOL 934 22.211 18.321 20.781 1.00 0.00 H +ATOM 2806 OW SOL 935 27.971 20.981 23.421 1.00 0.00 O +ATOM 2807 HW1 SOL 935 27.491 21.391 22.641 1.00 0.00 H +ATOM 2808 HW2 SOL 935 28.961 20.961 23.231 1.00 0.00 H +ATOM 2809 OW SOL 936 23.211 30.141 26.031 1.00 0.00 O +ATOM 2810 HW1 SOL 936 22.501 29.871 26.681 1.00 0.00 H +ATOM 2811 HW2 SOL 936 22.951 29.861 25.101 1.00 0.00 H +ATOM 2812 OW SOL 937 28.941 24.111 18.781 1.00 0.00 O +ATOM 2813 HW1 SOL 937 28.531 24.931 18.391 1.00 0.00 H +ATOM 2814 HW2 SOL 937 29.581 24.371 19.511 1.00 0.00 H +ATOM 2815 OW SOL 938 27.281 23.161 25.041 1.00 0.00 O +ATOM 2816 HW1 SOL 938 26.961 23.881 24.421 1.00 0.00 H +ATOM 2817 HW2 SOL 938 27.521 22.351 24.511 1.00 0.00 H +ATOM 2818 OW SOL 939 28.791 19.011 26.151 1.00 0.00 O +ATOM 2819 HW1 SOL 939 28.071 19.061 25.461 1.00 0.00 H +ATOM 2820 HW2 SOL 939 28.551 18.321 26.841 1.00 0.00 H +ATOM 2821 OW SOL 940 1.291 24.371 19.401 1.00 0.00 O +ATOM 2822 HW1 SOL 940 0.751 24.161 20.211 1.00 0.00 H +ATOM 2823 HW2 SOL 940 2.201 23.961 19.491 1.00 0.00 H +ATOM 2824 OW SOL 941 23.891 21.181 21.901 1.00 0.00 O +ATOM 2825 HW1 SOL 941 24.161 20.591 21.151 1.00 0.00 H +ATOM 2826 HW2 SOL 941 23.891 22.131 21.591 1.00 0.00 H +ATOM 2827 OW SOL 942 25.671 29.121 22.301 1.00 0.00 O +ATOM 2828 HW1 SOL 942 25.531 29.191 23.291 1.00 0.00 H +ATOM 2829 HW2 SOL 942 26.511 28.611 22.121 1.00 0.00 H +ATOM 2830 OW SOL 943 22.721 26.751 31.131 1.00 0.00 O +ATOM 2831 HW1 SOL 943 23.581 26.871 31.631 1.00 0.00 H +ATOM 2832 HW2 SOL 943 22.301 25.881 31.401 1.00 0.00 H +ATOM 2833 OW SOL 944 0.131 22.481 0.011 1.00 0.00 O +ATOM 2834 HW1 SOL 944 0.341 23.221 0.651 1.00 0.00 H +ATOM 2835 HW2 SOL 944 -0.759 22.651 -0.419 1.00 0.00 H +ATOM 2836 OW SOL 945 22.291 29.621 23.631 1.00 0.00 O +ATOM 2837 HW1 SOL 945 22.221 30.451 23.071 1.00 0.00 H +ATOM 2838 HW2 SOL 945 22.331 28.821 23.031 1.00 0.00 H +ATOM 2839 OW SOL 946 24.281 23.991 27.271 1.00 0.00 O +ATOM 2840 HW1 SOL 946 24.401 24.651 26.531 1.00 0.00 H +ATOM 2841 HW2 SOL 946 24.741 24.331 28.101 1.00 0.00 H +ATOM 2842 OW SOL 947 24.351 27.321 28.911 1.00 0.00 O +ATOM 2843 HW1 SOL 947 24.791 28.211 28.821 1.00 0.00 H +ATOM 2844 HW2 SOL 947 23.721 27.321 29.681 1.00 0.00 H +ATOM 2845 OW SOL 948 0.991 27.241 29.071 1.00 0.00 O +ATOM 2846 HW1 SOL 948 0.241 27.241 28.411 1.00 0.00 H +ATOM 2847 HW2 SOL 948 1.361 26.321 29.161 1.00 0.00 H +ATOM 2848 OW SOL 949 30.711 23.871 21.371 1.00 0.00 O +ATOM 2849 HW1 SOL 949 30.841 23.031 21.911 1.00 0.00 H +ATOM 2850 HW2 SOL 949 30.421 24.611 21.971 1.00 0.00 H +ATOM 2851 OW SOL 950 21.691 20.751 30.931 1.00 0.00 O +ATOM 2852 HW1 SOL 950 21.461 21.121 31.831 1.00 0.00 H +ATOM 2853 HW2 SOL 950 21.391 19.801 30.871 1.00 0.00 H +ATOM 2854 OW SOL 951 18.991 0.491 0.211 1.00 0.00 O +ATOM 2855 HW1 SOL 951 19.521 0.001 0.891 1.00 0.00 H +ATOM 2856 HW2 SOL 951 19.211 1.471 0.261 1.00 0.00 H +ATOM 2857 OW SOL 952 25.941 24.961 29.261 1.00 0.00 O +ATOM 2858 HW1 SOL 952 26.531 24.701 28.501 1.00 0.00 H +ATOM 2859 HW2 SOL 952 25.661 25.921 29.151 1.00 0.00 H +ATOM 2860 OW SOL 953 21.691 19.251 24.801 1.00 0.00 O +ATOM 2861 HW1 SOL 953 21.581 20.191 25.131 1.00 0.00 H +ATOM 2862 HW2 SOL 953 21.641 18.621 25.571 1.00 0.00 H +ATOM 2863 OW SOL 954 28.851 26.281 28.281 1.00 0.00 O +ATOM 2864 HW1 SOL 954 29.001 26.491 29.241 1.00 0.00 H +ATOM 2865 HW2 SOL 954 28.551 25.331 28.191 1.00 0.00 H +ATOM 2866 OW SOL 955 0.421 27.001 19.041 1.00 0.00 O +ATOM 2867 HW1 SOL 955 0.761 26.071 19.191 1.00 0.00 H +ATOM 2868 HW2 SOL 955 0.601 27.271 18.091 1.00 0.00 H +ATOM 2869 OW SOL 956 21.811 26.721 28.111 1.00 0.00 O +ATOM 2870 HW1 SOL 956 22.741 27.081 28.161 1.00 0.00 H +ATOM 2871 HW2 SOL 956 21.751 25.871 28.631 1.00 0.00 H +ATOM 2872 OW SOL 957 22.011 23.711 28.681 1.00 0.00 O +ATOM 2873 HW1 SOL 957 21.491 22.881 28.511 1.00 0.00 H +ATOM 2874 HW2 SOL 957 22.781 23.761 28.041 1.00 0.00 H +ATOM 2875 OW SOL 958 28.641 26.581 31.001 1.00 0.00 O +ATOM 2876 HW1 SOL 958 29.051 26.261 31.861 1.00 0.00 H +ATOM 2877 HW2 SOL 958 27.681 26.311 30.971 1.00 0.00 H +ATOM 2878 OW SOL 959 19.021 24.061 29.761 1.00 0.00 O +ATOM 2879 HW1 SOL 959 19.871 23.731 29.351 1.00 0.00 H +ATOM 2880 HW2 SOL 959 19.151 24.211 30.741 1.00 0.00 H +ATOM 2881 OW SOL 960 26.771 24.341 21.871 1.00 0.00 O +ATOM 2882 HW1 SOL 960 26.841 23.451 21.411 1.00 0.00 H +ATOM 2883 HW2 SOL 960 25.831 24.681 21.791 1.00 0.00 H +ATOM 2884 OW SOL 961 25.331 23.261 0.081 1.00 0.00 O +ATOM 2885 HW1 SOL 961 24.991 22.371 -0.219 1.00 0.00 H +ATOM 2886 HW2 SOL 961 25.591 23.801 -0.719 1.00 0.00 H +ATOM 2887 OW SOL 962 23.351 23.621 20.531 1.00 0.00 O +ATOM 2888 HW1 SOL 962 23.961 24.421 20.571 1.00 0.00 H +ATOM 2889 HW2 SOL 962 22.401 23.931 20.601 1.00 0.00 H +ATOM 2890 OW SOL 963 0.861 29.211 30.961 1.00 0.00 O +ATOM 2891 HW1 SOL 963 1.101 28.581 30.221 1.00 0.00 H +ATOM 2892 HW2 SOL 963 -0.039 29.611 30.781 1.00 0.00 H +ATOM 2893 OW SOL 964 19.451 31.201 28.841 1.00 0.00 O +ATOM 2894 HW1 SOL 964 19.401 31.191 29.841 1.00 0.00 H +ATOM 2895 HW2 SOL 964 18.621 30.791 28.461 1.00 0.00 H +ATOM 2896 OW SOL 965 0.191 27.891 25.341 1.00 0.00 O +ATOM 2897 HW1 SOL 965 0.791 27.081 25.361 1.00 0.00 H +ATOM 2898 HW2 SOL 965 0.591 28.581 24.741 1.00 0.00 H +ATOM 2899 OW SOL 966 21.251 21.881 25.821 1.00 0.00 O +ATOM 2900 HW1 SOL 966 20.461 22.391 25.481 1.00 0.00 H +ATOM 2901 HW2 SOL 966 21.161 21.731 26.801 1.00 0.00 H +ATOM 2902 OW SOL 967 26.841 28.641 1.111 1.00 0.00 O +ATOM 2903 HW1 SOL 967 27.241 28.631 0.191 1.00 0.00 H +ATOM 2904 HW2 SOL 967 26.941 29.561 1.511 1.00 0.00 H +ATOM 2905 OW SOL 968 27.781 27.721 21.531 1.00 0.00 O +ATOM 2906 HW1 SOL 968 28.411 28.101 20.851 1.00 0.00 H +ATOM 2907 HW2 SOL 968 28.181 26.891 21.921 1.00 0.00 H +ATOM 2908 OW SOL 969 29.011 29.601 25.581 1.00 0.00 O +ATOM 2909 HW1 SOL 969 28.311 29.131 26.121 1.00 0.00 H +ATOM 2910 HW2 SOL 969 29.601 28.921 25.151 1.00 0.00 H +ATOM 2911 OW SOL 970 28.761 20.981 28.331 1.00 0.00 O +ATOM 2912 HW1 SOL 970 28.681 20.621 27.401 1.00 0.00 H +ATOM 2913 HW2 SOL 970 28.741 20.221 28.981 1.00 0.00 H +ATOM 2914 OW SOL 971 19.371 22.071 18.951 1.00 0.00 O +ATOM 2915 HW1 SOL 971 18.451 21.791 18.661 1.00 0.00 H +ATOM 2916 HW2 SOL 971 19.681 22.841 18.391 1.00 0.00 H +ATOM 2917 OW SOL 972 19.341 20.281 21.801 1.00 0.00 O +ATOM 2918 HW1 SOL 972 19.171 21.111 21.261 1.00 0.00 H +ATOM 2919 HW2 SOL 972 20.241 19.911 21.581 1.00 0.00 H +ATOM 2920 OW SOL 973 30.871 21.871 23.111 1.00 0.00 O +ATOM 2921 HW1 SOL 973 31.521 21.131 23.001 1.00 0.00 H +ATOM 2922 HW2 SOL 973 31.071 22.371 23.951 1.00 0.00 H +ATOM 2923 OW SOL 974 24.561 26.071 25.141 1.00 0.00 O +ATOM 2924 HW1 SOL 974 25.061 26.921 24.951 1.00 0.00 H +ATOM 2925 HW2 SOL 974 23.681 26.091 24.661 1.00 0.00 H +ATOM 2926 OW SOL 975 27.211 28.181 27.231 1.00 0.00 O +ATOM 2927 HW1 SOL 975 27.751 27.491 27.711 1.00 0.00 H +ATOM 2928 HW2 SOL 975 26.891 28.871 27.891 1.00 0.00 H +ATOM 2929 OW SOL 976 29.451 28.461 19.491 1.00 0.00 O +ATOM 2930 HW1 SOL 976 29.221 28.991 18.671 1.00 0.00 H +ATOM 2931 HW2 SOL 976 30.261 27.901 19.301 1.00 0.00 H +ATOM 2932 OW SOL 977 19.411 31.021 25.151 1.00 0.00 O +ATOM 2933 HW1 SOL 977 19.401 30.551 26.031 1.00 0.00 H +ATOM 2934 HW2 SOL 977 20.231 30.741 24.641 1.00 0.00 H +ATOM 2935 OW SOL 978 22.901 22.861 23.821 1.00 0.00 O +ATOM 2936 HW1 SOL 978 23.201 22.141 23.201 1.00 0.00 H +ATOM 2937 HW2 SOL 978 22.511 22.461 24.651 1.00 0.00 H +ATOM 2938 OW SOL 979 1.631 20.761 29.741 1.00 0.00 O +ATOM 2939 HW1 SOL 979 2.151 20.111 30.291 1.00 0.00 H +ATOM 2940 HW2 SOL 979 1.141 21.391 30.351 1.00 0.00 H +ATOM 2941 OW SOL 980 28.631 18.961 30.161 1.00 0.00 O +ATOM 2942 HW1 SOL 980 28.001 18.241 29.851 1.00 0.00 H +ATOM 2943 HW2 SOL 980 29.561 18.601 30.161 1.00 0.00 H +ATOM 2944 OW SOL 981 26.321 0.691 21.631 1.00 0.00 O +ATOM 2945 HW1 SOL 981 25.861 -0.179 21.801 1.00 0.00 H +ATOM 2946 HW2 SOL 981 27.231 0.661 22.041 1.00 0.00 H +ATOM 2947 OW SOL 982 0.911 19.141 20.301 1.00 0.00 O +ATOM 2948 HW1 SOL 982 1.261 18.731 19.461 1.00 0.00 H +ATOM 2949 HW2 SOL 982 0.011 18.761 20.501 1.00 0.00 H +ATOM 2950 OW SOL 983 0.391 23.151 25.531 1.00 0.00 O +ATOM 2951 HW1 SOL 983 -0.199 23.951 25.571 1.00 0.00 H +ATOM 2952 HW2 SOL 983 0.541 22.801 26.461 1.00 0.00 H +ATOM 2953 OW SOL 984 19.011 29.391 21.621 1.00 0.00 O +ATOM 2954 HW1 SOL 984 20.001 29.281 21.531 1.00 0.00 H +ATOM 2955 HW2 SOL 984 18.611 28.531 21.941 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_interface/input.in b/examples/latte_interface/input.in new file mode 100644 index 00000000..2197b802 --- /dev/null +++ b/examples/latte_interface/input.in @@ -0,0 +1,27 @@ +#Input file for SEDACS + +Verbosity= True +Threshold= 1.0E-7 +#CoordsFile= coords_1299.pdb +CoordsFile= wat.xyz +#CoordsFile= algo.xyz +#CoordsFile= coords_2955.pdb +#CoordsFile= coords_100.pdb +#CoordsFile= coords_1032.pdb +#CoordsFile= water_128.xyz +GraphThreshold= 0.01 +MaxDeg= 500 #Max graph degree +Rcut= 3.0 #Radius cutoff +PartitionType= Metis +#PartitionType= Regular +#PartitionType= MinCut +NumParts= 1 +SCFTol= 1.0E-1 +Overlap= True +ElectronicTemperature= 1000 +MuCalculationType= #FromParts, Dynamical, None +Orbitals= {"H":1,"O":4} #This has to be know for each engine +NumAdaptiveIter= 100 #Number of graph adaptive iterations +Engine= {"Name":"LATTE","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/python/","Executable":"/home/cnegre/","RhoSolverMethod":"Diag","Accelerator":"No","AcceleratorPath":"/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/nvda"} #The name of the external code +#Engine= {"Name":"ProxyAFortran","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/fortran/","Executable":"/home/cnegre/"} #The name of the external code + diff --git a/examples/latte_interface/latte.in b/examples/latte_interface/latte.in new file mode 100644 index 00000000..c40439d2 --- /dev/null +++ b/examples/latte_interface/latte.in @@ -0,0 +1,57 @@ + +#General controls +CONTROL{ + XCONTROL= 1 + BASISTYPE= NONORTHO + DEBUGON= 0 + FERMIM= 6 + CGORLIB= 1 CGTOL= 1.0e-6 + KBT= 0.0 + NORECS= 1 + PARAMPATH= '../../parameters/latte/TBparam/' + ENTROPYKIND= 1 + PPOTON= 1 VDWON= 0 + SPINON= 0 SPINTOL= 1.0e-4 + ELECTRO= 1 ELECMETH= 0 ELEC_ETOL= 0.001 ELEC_QTOL= 1.0e-4 + COULACC= 1.0e-6 COULCUT= -500.0 COULR1= 500.0 + MAXSCF= 1 + BREAKTOL= 1.0E-12 MINSP2ITER= 22 SP2CONV= REL + FULLQCONV= 0 QITER= 0 + QMIX= 0.25 SPINMIX= 0.25 MDMIX= 0.25 + ORDERNMOL= 0 + SPARSEON= 0 THRESHOLDON= 1 NUMTHRESH= 1.0e-6 FILLINSTOP= 100 BLKSZ= 4 + MSPARSE= 3000 + LCNON= 0 LCNITER= 4 CHTOL= 0.01 + SKIN= 1.0 + RELAX= 0 RELAXTYPE= SD MAXITER= 100 RLXFTOL= 0.00001 + MDON= 1 + PBCON= 1 + RESTART= 0 + CHARGE= 0 + XBO= 1 + XBODISON= 1 + XBODISORDER= 5 + NGPU= 2 + KON= 0 + COMPFORCE= 1 + DOSFIT= 0 INTS2FIT= 1 BETA= 1000.0 NFITSTEP= 5000 QFIT= 0 MCSIGMA= 0.2 + PPFITON= 0 + ALLFITON= 0 + PPSTEP= 500 BISTEP= 500 PP2FIT= 2 BINT2FIT= 6 + PPBETA= 1000.0 PPSIGMA= 0.01 PPNMOL= 10 PPNGEOM= 200 + PARREP= 0 + ER= 1.0 + VERBOSE= 3 + DOKERNEL= F + KBT= 0.086 +} + +#Controls for QMD +MDCONTROL{ + MAXITER= -1 +} + +MIXER{ + Verbose= 10 +} + diff --git a/examples/latte_interface/main.py b/examples/latte_interface/main.py new file mode 100644 index 00000000..7dbb357d --- /dev/null +++ b/examples/latte_interface/main.py @@ -0,0 +1,36 @@ +"""Main sedacs prototype driver to perform a +graph-based addaptive construction of the density +matrix together with a full self-consistent charge +optimization""" + +import sys + +import numpy as np +from sedacs.driver.graph_adaptive_scf import get_adaptiveSCFDM +from sedacs.driver.init import get_args, init +from sedacs.charges import get_charges +import sedacs.globals as gl + +# Pass arguments from comand line +args = get_args() + +# Initialize sedacs + +np.set_printoptions(threshold=sys.maxsize) + +# Initialize sdc parameters +sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init(args) + +sdc.verb = True + +mu = 0 +# Perform a graph-adaptive calculation of the density matrix +graphDH,sy.charges,mu,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu) + + +#sy.energy,sy.forces = get_energy_and_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH) + + + + + diff --git a/examples/latte_interface/vars b/examples/latte_interface/vars new file mode 100644 index 00000000..2460ca37 --- /dev/null +++ b/examples/latte_interface/vars @@ -0,0 +1,21 @@ +#!/bin/bash +THIS_PATH=`pwd` +export PYTHONPATH="" +MOD_PATH=$THIS_PATH/../../src/sedacs/ +MOD_PATH1=$THIS_PATH/../../src/ +MOD_PATH2=$THIS_PATH/../../src/sedacs/driver +PROXYA_FORTRAN_PATH=$THIS_PATH/../../proxies/fortran/build/ +PROXYA_PYTHON_FILES=$THIS_PATH/../../proxies/python/ +PROXYA_PYTHON_FOLDER=$THIS_PATH/../../ +#PROGRESS_PATH=$HOME/qmd-progress/install/lib64/ +#BML_PATH=$HOME/bml/install/lib64/ +export PROXYA_FORTRAN_PATH=$PROXYA_FORTRAN_PATH +export PROXYA_PYTHON_PATH=$PROXYA_PYTHON_PATH +export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$MOD_PATH1:$MOD_PATH2:$PROGRESS_PATH:$BML_PATH:$PROXYA_PYTHON_FOLDER:$PROXYA_PYTHON_FILES:$PROXYA_FORTRAN_PATH +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROGRESS_PATH:$BML_PATH +export PYTHONWARNINGS="ignore:Unverified HTTPS request" + +GPU_PATH=$THIS_PATH/../../src/sedacs/gpu +echo $GPU_PATH +export PYTHONPATH=$PYTHONPATH:$GPU_PATH + diff --git a/examples/latte_interface/wat.pdb b/examples/latte_interface/wat.pdb new file mode 100644 index 00000000..034d516a --- /dev/null +++ b/examples/latte_interface/wat.pdb @@ -0,0 +1,9 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 50.459 50.459 50.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.749 -0.000 0.442 0.00 0.00 H +ATOM 2 O MOL 1 0.000 0.020 -0.165 0.00 0.00 O +ATOM 3 H MOL 1 -0.749 -0.000 0.442 0.00 0.00 H +TER +END diff --git a/examples/latte_interface/wat.xyz b/examples/latte_interface/wat.xyz new file mode 100644 index 00000000..1f469a46 --- /dev/null +++ b/examples/latte_interface/wat.xyz @@ -0,0 +1,5 @@ +3 +Lattice="110.00 0.0 0.0 0.0 110.00 0.0 0.0 0.0 110.00" +H 0.7493682 0.0000000 0.4424329 +O 0.0000000 0.0000000 -0.1653507 +H -0.7493682 0.0000000 0.4424329 diff --git a/examples/latte_interface/water_128.xyz b/examples/latte_interface/water_128.xyz new file mode 100644 index 00000000..ddf850a9 --- /dev/null +++ b/examples/latte_interface/water_128.xyz @@ -0,0 +1,386 @@ +384 +Lattice="15.66 0.0 0.0 0.0 15.66 0.0 0.0 0.0 15.66" +H 1.4821741580963135 14.427353858947754 2.953700065612793 +O 1.6885966062545776 15.210265159606934 2.3970494270324707 +H 2.3674094676971436 14.887577056884766 1.7750413417816162 +H 1.725602626800537 1.2087194919586182 10.28447151184082 +O 1.457163691520691 0.2813889980316162 10.563945770263672 +H 1.375484585762024 0.24449187517166138 11.546887397766113 +H 12.558568954467773 14.682812690734863 9.085963249206543 +O 13.374778747558594 15.202472686767578 8.868748664855957 +H 14.192708969116211 14.738236427307129 9.219833374023438 +H 6.220971584320068 10.90986442565918 3.922910690307617 +O 5.395566463470459 11.367801666259766 3.851719856262207 +H 5.097456455230713 11.388015747070312 2.87663197517395 +H 13.928208351135254 6.038353443145752 1.3187469244003296 +O 14.39126968383789 6.452458381652832 0.5244671106338501 +H 14.677336692810059 5.6653947830200195 15.641419410705566 +H 11.000219345092773 1.4569547176361084 0.45885026454925537 +O 11.63747501373291 2.104846715927124 0.8563565611839294 +H 12.253790855407715 1.5968525409698486 1.4643044471740723 +H 8.34492301940918 10.484837532043457 4.09354305267334 +O 7.658782958984375 9.694025039672852 4.098236560821533 +H 8.161250114440918 8.91158390045166 4.3958234786987305 +H 15.37078857421875 9.183189392089844 11.81903076171875 +O 0.6639226675033569 9.312712669372559 11.556085586547852 +H 1.1555242538452148 8.781630516052246 12.177814483642578 +H 2.469231367111206 4.930058479309082 6.316625118255615 +O 1.8953945636749268 5.428220272064209 6.90617036819458 +H 1.317298173904419 4.663173198699951 7.2908854484558105 +H 4.391626834869385 1.8281409740447998 2.7765512466430664 +O 5.01270055770874 1.8962875604629517 2.043304443359375 +H 4.4229350090026855 2.101100444793701 1.224356770515442 +H 11.354153633117676 9.732658386230469 1.4163808822631836 +O 12.010466575622559 10.312472343444824 1.0070639848709106 +H 12.736639022827148 9.787837982177734 0.45557060837745667 +H 15.223688125610352 4.653311729431152 13.862953186035156 +O 14.768438339233398 4.34467887878418 14.679522514343262 +H 13.97741413116455 3.8146629333496094 14.375483512878418 +H 2.5933477878570557 2.2602338790893555 4.078963756561279 +O 3.5907583236694336 1.9742355346679688 4.357860565185547 +H 3.4221041202545166 1.4155670404434204 5.144217491149902 +H 11.827882766723633 5.23652458190918 12.129922866821289 +O 11.420333862304688 4.348351001739502 12.450085639953613 +H 11.13693618774414 3.948350667953491 11.59998893737793 +H 3.122493267059326 14.13240909576416 15.377690315246582 +O 3.406907320022583 13.9873685836792 0.637580156326294 +H 4.268272399902344 14.468565940856934 0.7348317503929138 +H 11.982939720153809 3.2170681953430176 6.133591651916504 +O 12.74484920501709 3.6578142642974854 6.557803630828857 +H 12.507513046264648 4.57366418838501 6.91209077835083 +H 4.577542304992676 5.402759075164795 0.7480008006095886 +O 3.8300294876098633 5.114811420440674 0.15346001088619232 +H 3.705512046813965 5.906427383422852 15.198246002197266 +H 4.8761677742004395 2.076591730117798 14.366914749145508 +O 5.596246242523193 1.586893081665039 13.9247465133667 +H 5.811666965484619 2.142857551574707 13.113996505737305 +H 13.377649307250977 1.042777180671692 9.423595428466797 +O 13.151018142700195 1.8292531967163086 10.050421714782715 +H 13.835417747497559 2.495191812515259 9.988792419433594 +H 7.997742176055908 11.266412734985352 9.060665130615234 +O 8.366767883300781 10.735424995422363 8.289185523986816 +H 7.682319641113281 10.126465797424316 8.000984191894531 +H 6.61982536315918 5.436073303222656 1.7336512804031372 +O 5.908255577087402 6.083886623382568 1.5545637607574463 +H 5.400964736938477 6.177191257476807 2.360203504562378 +H 13.306570053100586 8.240872383117676 12.238951683044434 +O 13.812541961669922 8.967954635620117 12.561972618103027 +H 13.299116134643555 9.732105255126953 12.134977340698242 +H 13.150106430053711 10.962871551513672 2.506638765335083 +O 13.738313674926758 11.23777961730957 3.2231998443603516 +H 14.14203929901123 12.027764320373535 2.7478020191192627 +H 9.468901634216309 8.692893028259277 11.753732681274414 +O 9.996575355529785 8.272689819335938 11.04357624053955 +H 9.358142852783203 7.589511394500732 10.609314918518066 +H 9.184500694274902 12.010608673095703 3.185051918029785 +O 9.332493782043457 11.644781112670898 4.082911014556885 +H 10.308004379272461 11.81727123260498 4.252378463745117 +H 14.13718318939209 3.084084987640381 6.320530414581299 +O 15.026741027832031 2.7198779582977295 6.185760021209717 +H 15.581278800964355 2.8094310760498047 7.003511428833008 +H 1.805783987045288 13.039594650268555 13.465221405029297 +O 1.2811273336410522 12.223275184631348 13.247485160827637 +H 0.8052940368652344 11.954380989074707 14.096330642700195 +H 8.574115753173828 12.27851676940918 1.1447495222091675 +O 9.307392120361328 12.729674339294434 1.5993788242340088 +H 8.992727279663086 13.581256866455078 1.8648567199707031 +H 0.4504242539405823 2.9571290016174316 4.610954761505127 +O 1.1356279850006104 2.80627703666687 3.858980894088745 +H 0.6570261716842651 2.2529356479644775 3.161118984222412 +H 2.2259984016418457 1.135374665260315 7.197758197784424 +O 2.8197834491729736 0.5862197875976562 6.640344619750977 +H 3.361316680908203 0.13465867936611176 7.2745137214660645 +H 2.7605855464935303 3.5155222415924072 10.508090019226074 +O 2.7270185947418213 2.7197012901306152 9.998039245605469 +H 3.6602747440338135 2.449582576751709 9.736455917358398 +H 5.481457233428955 0.6800147891044617 1.2360972166061401 +O 5.735907077789307 15.55340576171875 0.6875582933425903 +H 5.908614158630371 0.24427083134651184 15.490666389465332 +H 6.483280658721924 6.651552677154541 12.702972412109375 +O 6.861117839813232 5.836682319641113 12.391767501831055 +H 7.664957046508789 5.7625226974487305 13.000656127929688 +H 5.648747444152832 3.2264184951782227 8.506119728088379 +O 5.52994966506958 2.848599910736084 9.409486770629883 +H 6.039980888366699 2.0285658836364746 9.292366981506348 +H 12.85450553894043 6.765137195587158 10.680105209350586 +O 12.331360816955566 6.957432270050049 11.530010223388672 +H 11.486471176147461 7.264204025268555 11.158045768737793 +H 7.362239837646484 9.154353141784668 0.3254317045211792 +O 7.498302459716797 9.510848999023438 15.109041213989258 +H 8.419239044189453 9.094351768493652 14.665138244628906 +H 1.5374337434768677 4.2605109214782715 2.7824814319610596 +O 1.6234899759292603 5.16341495513916 2.2621734142303467 +H 2.4345974922180176 5.093528747558594 1.753399133682251 +H 13.98061466217041 13.565018653869629 0.982430636882782 +O 13.24919319152832 14.127765655517578 0.6269434690475464 +H 12.569368362426758 13.48637866973877 0.3310380280017853 +H 3.5146663188934326 10.071371078491211 1.0377812385559082 +O 2.739107131958008 9.517007827758789 0.8543626070022583 +H 2.8032007217407227 8.92596435546875 1.6306871175765991 +H 3.2404215335845947 9.397064208984375 7.563103199005127 +O 3.697007656097412 10.221046447753906 7.237059116363525 +H 3.5571937561035156 10.893165588378906 7.9507975578308105 +H 9.887673377990723 12.222174644470215 12.364692687988281 +O 9.317317962646484 13.004202842712402 11.984381675720215 +H 9.826249122619629 13.767129898071289 12.294698715209961 +H 14.60256576538086 1.0523858070373535 6.485602855682373 +O 14.413382530212402 0.06270215660333633 6.496177673339844 +H 14.147909164428711 15.534577369689941 7.447587966918945 +H 13.379937171936035 6.094424724578857 8.554449081420898 +O 13.894918441772461 6.2347235679626465 9.342596054077148 +H 14.61241626739502 6.858521938323975 9.085838317871094 +H 8.004314422607422 12.405964851379395 11.07300090789795 +O 7.369335651397705 12.221914291381836 10.350719451904297 +H 6.828718185424805 13.049220085144043 10.023193359375 +H 6.5086822509765625 14.756935119628906 4.994861602783203 +O 6.839446544647217 15.60968017578125 4.6459126472473145 +H 6.100698471069336 0.509876012802124 4.77648401260376 +H 1.814298391342163 7.485466480255127 14.199212074279785 +O 0.9792758822441101 7.4431376457214355 13.722976684570312 +H 0.34630855917930603 7.4032135009765625 14.47954273223877 +H 6.28085994720459 13.820106506347656 13.516830444335938 +O 6.905226230621338 13.168272972106934 13.857548713684082 +H 7.748592376708984 13.196846961975098 13.40528678894043 +H 2.5069146156311035 11.916142463684082 9.840462684631348 +O 2.6829140186309814 12.13232135772705 8.878107070922852 +H 1.8113011121749878 12.242073059082031 8.437335968017578 +H 14.037789344787598 9.845786094665527 4.642851829528809 +O 13.800369262695312 9.396403312683105 5.5100417137146 +H 14.389450073242188 8.535675048828125 5.423510551452637 +H 12.178966522216797 3.552061080932617 13.457749366760254 +O 12.67518424987793 2.939744710922241 14.132843971252441 +H 12.050117492675781 2.740718126296997 14.851271629333496 +H 6.341159820556641 4.153588771820068 12.246420860290527 +O 5.721994876861572 3.38653564453125 12.11013412475586 +H 5.833896160125732 3.1198267936706543 11.189043045043945 +H 0.4187822639942169 6.928407669067383 5.925801753997803 +O 15.306794166564941 7.189908027648926 5.43982458114624 +H 0.07627714425325394 7.3125996589660645 4.559133529663086 +H 15.205296516418457 13.601235389709473 10.856249809265137 +O 15.426885604858398 14.0115385055542 9.955629348754883 +H 0.4404774010181427 14.725579261779785 10.123786926269531 +H 7.781744480133057 6.341546058654785 10.87021255493164 +O 8.193033218383789 6.693912982940674 10.09223461151123 +H 7.419920921325684 6.874934673309326 9.521349906921387 +H 4.713289260864258 13.532459259033203 7.1375813484191895 +O 4.18504524230957 13.934209823608398 7.856135368347168 +H 3.663506269454956 13.236863136291504 8.294808387756348 +H 1.4324342012405396 7.933252811431885 8.537219047546387 +O 2.39997935295105 7.775256156921387 8.192770004272461 +H 2.2801403999328613 6.949921607971191 7.6617207527160645 +H 0.5963254570960999 6.013045310974121 12.672981262207031 +O 0.5425719022750854 4.989353179931641 12.51000690460205 +H 1.4733445644378662 4.74129056930542 12.26429271697998 +H 5.787660598754883 12.561777114868164 4.9811110496521 +O 5.850313663482666 13.304183006286621 5.696791172027588 +H 6.695471286773682 13.148829460144043 6.1641845703125 +H 9.32719898223877 8.223834991455078 1.8639791011810303 +O 10.29822063446045 8.110273361206055 1.9925719499588013 +H 10.310250282287598 7.87868595123291 2.945894479751587 +H 0.277807354927063 3.5526158809661865 8.722700119018555 +O 0.9846296906471252 3.210406541824341 8.203073501586914 +H 1.7031030654907227 3.0266921520233154 8.867362976074219 +H 2.8105833530426025 2.196861982345581 15.392070770263672 +O 3.735032796859741 2.4994215965270996 15.570079803466797 +H 3.644773006439209 3.4426615238189697 0.03853387013077736 +H 14.682604789733887 1.0238474607467651 2.0653231143951416 +O 15.566673278808594 1.3636430501937866 1.7907549142837524 +H 0.5717520117759705 0.6591038703918457 1.8086328506469727 +H 11.107076644897461 8.861739158630371 7.134167671203613 +O 11.434098243713379 8.342004776000977 6.366227149963379 +H 12.278743743896484 8.585103988647461 6.036701679229736 +H 6.849724292755127 2.226242780685425 14.659040451049805 +O 7.6959028244018555 2.413717269897461 15.109258651733398 +H 8.172039031982422 3.1463210582733154 14.650622367858887 +H 4.415694236755371 12.286710739135742 1.0233668088912964 +O 4.88289213180542 11.490494728088379 1.3367034196853638 +H 5.81308126449585 11.642242431640625 0.9043989777565002 +H 10.558619499206543 9.060455322265625 9.619710922241211 +O 10.549599647521973 9.386129379272461 8.682696342468262 +H 9.6725492477417 9.819774627685547 8.593550682067871 +H 6.1465864181518555 15.147404670715332 9.628643035888672 +O 5.529297351837158 14.445521354675293 9.938332557678223 +H 4.890136241912842 14.265419006347656 9.203654289245605 +H 12.137746810913086 14.339106559753418 4.88058614730835 +O 12.554288864135742 15.224326133728027 4.790942668914795 +H 13.392069816589355 15.262238502502441 5.262670993804932 +H 12.538585662841797 4.795741558074951 2.6958494186401367 +O 13.156197547912598 5.574193000793457 2.774204730987549 +H 13.542095184326172 5.429687976837158 3.6601510047912598 +H 1.6302706003189087 14.983660697937012 5.979812145233154 +O 0.8948200941085815 14.330414772033691 6.0626373291015625 +H 0.1337418407201767 14.884979248046875 6.267165660858154 +H 4.088843822479248 7.9247822761535645 14.16343879699707 +O 3.351106643676758 7.655316352844238 14.735418319702148 +H 3.2007994651794434 8.391205787658691 15.35331916809082 +H 0.15970730781555176 12.594325065612793 2.4045615196228027 +O 15.217007637023926 12.903790473937988 1.7151750326156616 +H 15.467392921447754 12.415807723999023 0.8731029033660889 +H 10.299698829650879 7.86765193939209 5.2782793045043945 +O 9.465031623840332 7.6437177658081055 4.793709754943848 +H 9.516728401184082 6.686868667602539 4.577350616455078 +H 11.606966972351074 11.700885772705078 0.35497593879699707 +O 11.372387886047363 12.519648551940918 15.574257850646973 +H 10.634315490722656 12.839116096496582 0.46611565351486206 +H 8.778069496154785 1.2632012367248535 15.487536430358887 +O 9.388166427612305 0.5421920418739319 0.13583745062351227 +H 9.037282943725586 0.09930628538131714 0.9319953322410583 +H 6.16838264465332 5.261773586273193 7.558151721954346 +O 6.098697662353516 4.416169166564941 7.145912170410156 +H 7.055895805358887 4.16866397857666 7.010154724121094 +H 7.392298221588135 10.838863372802734 15.570189476013184 +O 7.205356597900391 11.764328956604004 0.33388379216194153 +H 7.023780345916748 12.40236759185791 15.264869689941406 +H 8.928775787353516 4.274104595184326 5.8341803550720215 +O 8.753131866455078 3.6826674938201904 6.5963945388793945 +H 8.974727630615234 2.730682373046875 6.358644008636475 +H 0.35756778717041016 3.3287155628204346 15.077012062072754 +O 0.9291011691093445 2.5445761680603027 15.223231315612793 +H 0.5748293399810791 2.0781967639923096 0.3547714650630951 +H 4.015512466430664 3.467869758605957 4.926387310028076 +O 4.089820861816406 4.415233612060547 5.229217529296875 +H 4.887458801269531 4.509295463562012 5.778048038482666 +H 5.291957855224609 14.813364028930664 11.435693740844727 +O 5.140069007873535 14.953418731689453 12.421006202697754 +H 5.216044902801514 0.23042252659797668 12.654684066772461 +H 13.444220542907715 11.729223251342773 11.851582527160645 +O 12.642805099487305 11.136754989624023 11.598742485046387 +H 12.548523902893066 11.20355224609375 10.628812789916992 +H 9.697056770324707 15.593395233154297 14.027965545654297 +O 10.087967872619629 15.423428535461426 13.162454605102539 +H 11.05064868927002 0.002158439252525568 13.155196189880371 +H 2.523853063583374 11.595932006835938 12.188504219055176 +O 2.7947349548339844 11.257299423217773 11.32616901397705 +H 2.0624139308929443 10.607105255126953 11.156081199645996 +H 13.958531379699707 8.130409240722656 15.528944969177246 +O 13.822677612304688 9.02670955657959 15.227170944213867 +H 13.791452407836914 9.062285423278809 14.228338241577148 +H 10.27184772491455 9.424518585205078 13.943780899047852 +O 9.732276916503906 8.618180274963379 14.051572799682617 +H 10.166350364685059 8.033967971801758 14.658818244934082 +H 8.461220741271973 12.057075500488281 7.043845176696777 +O 8.419132232666016 12.80543041229248 6.415385723114014 +H 8.736284255981445 12.338397979736328 5.5919036865234375 +H 8.171420097351074 0.7793318033218384 5.426231861114502 +O 8.820952415466309 1.2351326942443848 6.013558864593506 +H 9.01926326751709 0.6126450300216675 6.739671230316162 +H 2.0820090770721436 7.869522571563721 3.1253793239593506 +O 2.9208269119262695 8.372122764587402 3.1731083393096924 +H 2.627509355545044 9.106399536132812 3.720787525177002 +H 11.650372505187988 10.628031730651855 8.698492050170898 +O 12.256834030151367 11.429168701171875 8.799505233764648 +H 13.083629608154297 11.129518508911133 8.284788131713867 +H 13.960386276245117 14.537196159362793 14.816256523132324 +O 14.3788480758667 14.84691047668457 13.965582847595215 +H 13.691018104553223 15.364837646484375 13.521903038024902 +H 11.58198356628418 1.196730613708496 5.081545829772949 +O 11.163005828857422 2.0494470596313477 5.276447772979736 +H 10.318563461303711 1.797735571861267 5.718932151794434 +H 6.0017476081848145 10.59385871887207 10.80034065246582 +O 5.272309303283691 10.05134105682373 11.150882720947266 +H 4.443428039550781 10.651139259338379 11.057957649230957 +H 12.516849517822266 11.899116516113281 4.271182060241699 +O 11.869437217712402 12.347843170166016 4.853531837463379 +H 12.166669845581055 12.171024322509766 5.7557244300842285 +H 15.470584869384766 4.516737461090088 11.073837280273438 +O 15.1124849319458 4.111335277557373 10.25562858581543 +H 14.591557502746582 4.877866744995117 9.938982963562012 +H 15.495829582214355 12.599084854125977 12.530135154724121 +O 14.549777030944824 12.876575469970703 12.166041374206543 +H 14.274829864501953 13.484247207641602 12.92894172668457 +H 4.544622421264648 5.858673572540283 4.278730869293213 +O 4.853733062744141 6.651581287384033 3.80159854888916 +H 4.038316249847412 7.112107276916504 3.6127209663391113 +H 11.086899757385254 2.9105334281921387 3.527799129486084 +O 11.044354438781738 3.5479931831359863 2.813129425048828 +H 11.100714683532715 3.017974376678467 2.005096435546875 +H 11.167326927185059 5.955437660217285 0.33261048793792725 +O 10.39560604095459 6.435065746307373 0.020402710884809494 +H 10.094603538513184 6.954756259918213 0.794249415397644 +H 5.193816661834717 9.804295539855957 7.193893909454346 +O 6.119728088378906 9.39712905883789 7.226724624633789 +H 6.320915699005127 9.148200988769531 6.31579065322876 +H 10.59584903717041 3.775369882583618 9.694656372070312 +O 10.687355041503906 2.999478340148926 10.27226734161377 +H 11.493496894836426 2.6317555904388428 9.933670043945312 +H 9.679096221923828 4.952756404876709 13.074913024902344 +O 8.934259414672852 4.986400127410889 13.691017150878906 +H 9.434240341186523 5.47733211517334 14.371708869934082 +H 3.9072349071502686 4.0586981773376465 11.940484046936035 +O 3.154937267303467 4.696625709533691 12.053990364074707 +H 3.5881435871124268 5.517663955688477 11.802338600158691 +H 0.2335490584373474 0.01581624709069729 13.774118423461914 +O 0.980350911617279 0.5342038869857788 13.378776550292969 +H 0.9922274947166443 1.4501113891601562 13.837281227111816 +H 12.65897274017334 0.9930011630058289 11.683954238891602 +O 12.707582473754883 0.764843225479126 12.696332931518555 +H 12.694315910339355 1.5772038698196411 13.278538703918457 +H 10.812484741210938 11.850899696350098 14.067712783813477 +O 10.624994277954102 11.294839859008789 13.30173397064209 +H 11.430129051208496 11.36072826385498 12.707429885864258 +H 7.020813941955566 7.331269264221191 1.747533917427063 +O 7.554996013641357 8.1338529586792 1.842114806175232 +H 7.4181599617004395 8.49007797241211 2.763763666152954 +H 11.144770622253418 5.892538547515869 8.100217819213867 +O 12.011418342590332 6.053420543670654 7.622436046600342 +H 11.807604789733887 6.768427848815918 7.026505947113037 +H 0.804131269454956 13.10036849975586 4.533726215362549 +O 1.1628715991973877 12.663919448852539 3.6855170726776123 +H 1.7346456050872803 11.923086166381836 3.9333012104034424 +H 9.218413352966309 1.9028451442718506 10.826943397521973 +O 8.582201957702637 1.300583004951477 11.322752952575684 +H 9.201321601867676 0.7191085815429688 11.809184074401855 +H 3.442178726196289 14.570088386535645 13.23493766784668 +O 2.64837646484375 14.339696884155273 13.757745742797852 +H 2.056213617324829 15.07002067565918 13.468094825744629 +H 6.184440612792969 8.607916831970215 14.012269973754883 +O 5.613175392150879 8.24959659576416 13.366471290588379 +H 5.421210289001465 8.999065399169922 12.734549522399902 +H 14.156079292297363 10.09754753112793 6.937656879425049 +O 14.381294250488281 10.39493465423584 7.833716869354248 +H 15.031318664550781 11.204416275024414 7.830630302429199 +H 9.186308860778809 5.373661041259766 9.201058387756348 +O 9.884927749633789 4.853215217590332 8.791373252868652 +H 9.495500564575195 4.389050006866455 7.994511127471924 +H 7.909711837768555 0.8771836757659912 10.073674201965332 +O 7.3992815017700195 0.40500327944755554 9.375271797180176 +H 8.047890663146973 0.01646227203309536 8.824193954467773 +H 4.144155025482178 7.798429012298584 11.0037202835083 +O 3.6634180545806885 7.110377311706543 10.5337553024292 +H 3.0318245887756348 7.595344543457031 9.977286338806152 +H 11.543298721313477 12.845231056213379 9.526606559753418 +O 11.121271133422852 13.702033042907715 9.871810913085938 +H 10.621376991271973 13.381515502929688 10.645342826843262 +H 7.287951469421387 15.405527114868164 1.4838590621948242 +O 8.058247566223145 15.133753776550293 2.1102092266082764 +H 7.733454704284668 15.314888954162598 3.0118229389190674 +H 5.935088634490967 7.812267303466797 7.968081951141357 +O 6.042677879333496 6.951498031616211 8.45356559753418 +H 5.2108025550842285 6.850614070892334 8.959635734558105 +H 15.26892375946045 9.244001388549805 8.84305191040039 +O 0.033080607652664185 8.36771297454834 9.159706115722656 +H 0.16065479815006256 8.65696907043457 10.071883201599121 +H 15.44448471069336 7.283434867858887 2.2880680561065674 +O 0.4308568835258484 7.290805816650391 2.960726737976074 +H 0.8542476892471313 6.4178080558776855 2.8072118759155273 +H 6.653284549713135 3.0818610191345215 2.4921748638153076 +O 7.361125946044922 3.674710988998413 2.2265164852142334 +H 7.656304359436035 3.247504234313965 1.4033161401748657 +H 13.179733276367188 15.35033893585205 1.7865592241287231 +O 13.136012077331543 0.4361955523490906 2.404041290283203 +H 13.092921257019043 15.597688674926758 3.281696081161499 +H 3.2176342010498047 10.340422630310059 5.482553958892822 +O 2.859381914138794 10.761625289916992 4.600158214569092 +H 3.671846389770508 10.996495246887207 4.227005958557129 +H 9.0103178024292 14.254643440246582 7.299729824066162 +O 9.379074096679688 15.032605171203613 7.842066287994385 +H 9.993480682373047 14.663202285766602 8.487648963928223 +H 1.057732105255127 10.423288345336914 0.49331533908843994 +O 0.2989242374897003 10.900001525878906 0.0640338882803917 +H 15.468161582946777 10.141322135925293 15.32434368133545 +H 0.5501918792724609 13.092039108276367 7.281371593475342 +O 0.34184548258781433 12.450984001159668 7.994649887084961 +H 0.06924410164356232 13.057560920715332 8.765048027038574 +H 9.83470630645752 4.528668403625488 3.769052028656006 +O 9.009892463684082 4.8917107582092285 4.168781280517578 +H 8.33976936340332 4.487730026245117 3.5564870834350586 diff --git a/examples/latte_interface_bomd/coords_100.pdb b/examples/latte_interface_bomd/coords_100.pdb new file mode 100644 index 00000000..63234eda --- /dev/null +++ b/examples/latte_interface_bomd/coords_100.pdb @@ -0,0 +1,306 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 15.459 15.459 15.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.024 -0.035 0.000 0.00 0.00 H +ATOM 2 O MOL 1 0.965 0.020 0.000 0.00 0.00 O +ATOM 3 H MOL 1 1.141 -0.907 0.000 0.00 0.00 H +ATOM 4 H MOL 1 1.462 1.513 1.709 0.00 0.00 H +ATOM 5 O MOL 1 2.404 1.568 1.709 0.00 0.00 O +ATOM 6 H MOL 1 2.579 0.641 1.709 0.00 0.00 H +ATOM 7 H MOL 1 2.820 2.865 3.165 0.00 0.00 H +ATOM 8 O MOL 1 3.761 2.919 3.165 0.00 0.00 O +ATOM 9 H MOL 1 3.937 1.993 3.165 0.00 0.00 H +ATOM 10 H MOL 1 4.153 4.495 4.880 0.00 0.00 H +ATOM 11 O MOL 1 5.095 4.549 4.880 0.00 0.00 O +ATOM 12 H MOL 1 5.270 3.623 4.880 0.00 0.00 H +ATOM 13 H MOL 1 6.507 6.886 7.361 0.00 0.00 H +ATOM 14 O MOL 1 7.449 6.940 7.361 0.00 0.00 O +ATOM 15 H MOL 1 7.624 6.013 7.361 0.00 0.00 H +ATOM 16 H MOL 1 8.157 8.371 9.279 0.00 0.00 H +ATOM 17 O MOL 1 9.098 8.425 9.279 0.00 0.00 O +ATOM 18 H MOL 1 9.273 7.498 9.279 0.00 0.00 H +ATOM 19 H MOL 1 9.844 10.492 11.575 0.00 0.00 H +ATOM 20 O MOL 1 10.786 10.546 11.575 0.00 0.00 O +ATOM 21 H MOL 1 10.961 9.619 11.575 0.00 0.00 H +ATOM 22 H MOL 1 13.862 1.975 4.386 0.00 0.00 H +ATOM 23 O MOL 1 14.804 2.029 4.386 0.00 0.00 O +ATOM 24 H MOL 1 14.979 1.102 4.386 0.00 0.00 H +ATOM 25 H MOL 1 6.255 9.846 11.439 0.00 0.00 H +ATOM 26 O MOL 1 7.196 9.900 11.439 0.00 0.00 O +ATOM 27 H MOL 1 7.371 8.973 11.439 0.00 0.00 H +ATOM 28 H MOL 1 0.905 3.897 6.882 0.00 0.00 H +ATOM 29 O MOL 1 1.846 3.951 6.882 0.00 0.00 O +ATOM 30 H MOL 1 2.021 3.024 6.882 0.00 0.00 H +ATOM 31 H MOL 1 11.955 14.153 5.458 0.00 0.00 H +ATOM 32 O MOL 1 12.896 14.207 5.458 0.00 0.00 O +ATOM 33 H MOL 1 13.072 13.281 5.458 0.00 0.00 H +ATOM 34 H MOL 1 9.388 13.982 6.497 0.00 0.00 H +ATOM 35 O MOL 1 10.330 14.036 6.497 0.00 0.00 O +ATOM 36 H MOL 1 10.505 13.110 6.497 0.00 0.00 H +ATOM 37 H MOL 1 9.916 3.729 8.798 0.00 0.00 H +ATOM 38 O MOL 1 10.857 3.783 8.798 0.00 0.00 O +ATOM 39 H MOL 1 11.033 2.857 8.798 0.00 0.00 H +ATOM 40 H MOL 1 1.645 10.849 1.718 0.00 0.00 H +ATOM 41 O MOL 1 2.586 10.904 1.718 0.00 0.00 O +ATOM 42 H MOL 1 2.761 9.977 1.718 0.00 0.00 H +ATOM 43 H MOL 1 13.668 5.798 2.502 0.00 0.00 H +ATOM 44 O MOL 1 14.610 5.852 2.502 0.00 0.00 O +ATOM 45 H MOL 1 14.785 4.925 2.502 0.00 0.00 H +ATOM 46 H MOL 1 0.434 8.566 11.170 0.00 0.00 H +ATOM 47 O MOL 1 1.376 8.620 11.170 0.00 0.00 O +ATOM 48 H MOL 1 1.551 7.693 11.170 0.00 0.00 H +ATOM 49 H MOL 1 8.236 3.228 1.102 0.00 0.00 H +ATOM 50 O MOL 1 9.177 3.283 1.102 0.00 0.00 O +ATOM 51 H MOL 1 9.352 2.356 1.102 0.00 0.00 H +ATOM 52 H MOL 1 14.171 2.786 10.963 0.00 0.00 H +ATOM 53 O MOL 1 15.112 2.840 10.963 0.00 0.00 O +ATOM 54 H MOL 1 15.287 1.913 10.963 0.00 0.00 H +ATOM 55 H MOL 1 10.024 12.300 0.152 0.00 0.00 H +ATOM 56 O MOL 1 10.966 12.354 0.152 0.00 0.00 O +ATOM 57 H MOL 1 11.141 11.428 0.152 0.00 0.00 H +ATOM 58 H MOL 1 11.444 7.694 1.210 0.00 0.00 H +ATOM 59 O MOL 1 12.386 7.748 1.210 0.00 0.00 O +ATOM 60 H MOL 1 12.561 6.822 1.210 0.00 0.00 H +ATOM 61 H MOL 1 5.914 9.892 5.228 0.00 0.00 H +ATOM 62 O MOL 1 6.855 9.947 5.228 0.00 0.00 O +ATOM 63 H MOL 1 7.030 9.020 5.228 0.00 0.00 H +ATOM 64 H MOL 1 11.015 2.278 3.209 0.00 0.00 H +ATOM 65 O MOL 1 11.957 2.332 3.209 0.00 0.00 O +ATOM 66 H MOL 1 12.132 1.406 3.209 0.00 0.00 H +ATOM 67 H MOL 1 5.157 14.137 9.690 0.00 0.00 H +ATOM 68 O MOL 1 6.099 14.192 9.690 0.00 0.00 O +ATOM 69 H MOL 1 6.274 13.265 9.690 0.00 0.00 H +ATOM 70 H MOL 1 13.014 10.851 2.149 0.00 0.00 H +ATOM 71 O MOL 1 13.956 10.906 2.149 0.00 0.00 O +ATOM 72 H MOL 1 14.131 9.979 2.149 0.00 0.00 H +ATOM 73 H MOL 1 6.432 7.342 4.083 0.00 0.00 H +ATOM 74 O MOL 1 7.373 7.396 4.083 0.00 0.00 O +ATOM 75 H MOL 1 7.548 6.469 4.083 0.00 0.00 H +ATOM 76 H MOL 1 13.237 7.650 6.098 0.00 0.00 H +ATOM 77 O MOL 1 14.178 7.704 6.098 0.00 0.00 O +ATOM 78 H MOL 1 14.353 6.777 6.098 0.00 0.00 H +ATOM 79 H MOL 1 8.056 0.377 3.941 0.00 0.00 H +ATOM 80 O MOL 1 8.997 0.431 3.941 0.00 0.00 O +ATOM 81 H MOL 1 9.172 -0.495 3.941 0.00 0.00 H +ATOM 82 H MOL 1 4.396 9.364 7.094 0.00 0.00 H +ATOM 83 O MOL 1 5.337 9.418 7.094 0.00 0.00 O +ATOM 84 H MOL 1 5.512 8.491 7.094 0.00 0.00 H +ATOM 85 H MOL 1 5.060 0.593 11.823 0.00 0.00 H +ATOM 86 O MOL 1 6.002 0.647 11.823 0.00 0.00 O +ATOM 87 H MOL 1 6.177 -0.280 11.823 0.00 0.00 H +ATOM 88 H MOL 1 10.805 13.676 1.929 0.00 0.00 H +ATOM 89 O MOL 1 11.747 13.730 1.929 0.00 0.00 O +ATOM 90 H MOL 1 11.922 12.804 1.929 0.00 0.00 H +ATOM 91 H MOL 1 10.422 5.195 5.779 0.00 0.00 H +ATOM 92 O MOL 1 11.364 5.250 5.779 0.00 0.00 O +ATOM 93 H MOL 1 11.539 4.323 5.779 0.00 0.00 H +ATOM 94 H MOL 1 2.609 5.311 0.365 0.00 0.00 H +ATOM 95 O MOL 1 3.551 5.365 0.365 0.00 0.00 O +ATOM 96 H MOL 1 3.726 4.438 0.365 0.00 0.00 H +ATOM 97 H MOL 1 0.247 12.838 7.622 0.00 0.00 H +ATOM 98 O MOL 1 1.189 12.892 7.622 0.00 0.00 O +ATOM 99 H MOL 1 1.364 11.966 7.622 0.00 0.00 H +ATOM 100 H MOL 1 0.400 4.030 12.734 0.00 0.00 H +ATOM 101 O MOL 1 1.342 4.084 12.734 0.00 0.00 O +ATOM 102 H MOL 1 1.517 3.158 12.734 0.00 0.00 H +ATOM 103 H MOL 1 6.344 11.570 0.306 0.00 0.00 H +ATOM 104 O MOL 1 7.286 11.624 0.306 0.00 0.00 O +ATOM 105 H MOL 1 7.461 10.698 0.306 0.00 0.00 H +ATOM 106 H MOL 1 1.457 8.882 5.810 0.00 0.00 H +ATOM 107 O MOL 1 2.399 8.937 5.810 0.00 0.00 O +ATOM 108 H MOL 1 2.574 8.010 5.810 0.00 0.00 H +ATOM 109 H MOL 1 1.246 12.939 10.266 0.00 0.00 H +ATOM 110 O MOL 1 2.187 12.993 10.266 0.00 0.00 O +ATOM 111 H MOL 1 2.362 12.067 10.266 0.00 0.00 H +ATOM 112 H MOL 1 5.844 10.735 2.510 0.00 0.00 H +ATOM 113 O MOL 1 6.786 10.789 2.510 0.00 0.00 O +ATOM 114 H MOL 1 6.961 9.862 2.510 0.00 0.00 H +ATOM 115 H MOL 1 9.752 5.415 11.518 0.00 0.00 H +ATOM 116 O MOL 1 10.694 5.470 11.518 0.00 0.00 O +ATOM 117 H MOL 1 10.869 4.543 11.518 0.00 0.00 H +ATOM 118 H MOL 1 10.062 11.535 7.714 0.00 0.00 H +ATOM 119 O MOL 1 11.004 11.590 7.714 0.00 0.00 O +ATOM 120 H MOL 1 11.179 10.663 7.714 0.00 0.00 H +ATOM 121 H MOL 1 11.140 0.576 13.274 0.00 0.00 H +ATOM 122 O MOL 1 12.081 0.630 13.274 0.00 0.00 O +ATOM 123 H MOL 1 12.256 -0.297 13.274 0.00 0.00 H +ATOM 124 H MOL 1 8.664 2.794 6.440 0.00 0.00 H +ATOM 125 O MOL 1 9.606 2.848 6.440 0.00 0.00 O +ATOM 126 H MOL 1 9.781 1.921 6.440 0.00 0.00 H +ATOM 127 H MOL 1 1.908 5.146 9.029 0.00 0.00 H +ATOM 128 O MOL 1 2.849 5.201 9.029 0.00 0.00 O +ATOM 129 H MOL 1 3.024 4.274 9.029 0.00 0.00 H +ATOM 130 H MOL 1 12.294 7.322 11.253 0.00 0.00 H +ATOM 131 O MOL 1 13.235 7.377 11.253 0.00 0.00 O +ATOM 132 H MOL 1 13.410 6.450 11.253 0.00 0.00 H +ATOM 133 H MOL 1 11.098 6.253 8.089 0.00 0.00 H +ATOM 134 O MOL 1 12.039 6.307 8.089 0.00 0.00 O +ATOM 135 H MOL 1 12.214 5.381 8.089 0.00 0.00 H +ATOM 136 H MOL 1 4.497 3.412 10.233 0.00 0.00 H +ATOM 137 O MOL 1 5.438 3.466 10.233 0.00 0.00 O +ATOM 138 H MOL 1 5.613 2.539 10.233 0.00 0.00 H +ATOM 139 H MOL 1 12.642 9.031 8.163 0.00 0.00 H +ATOM 140 O MOL 1 13.584 9.085 8.163 0.00 0.00 O +ATOM 141 H MOL 1 13.759 8.159 8.163 0.00 0.00 H +ATOM 142 H MOL 1 1.618 12.178 5.523 0.00 0.00 H +ATOM 143 O MOL 1 2.560 12.233 5.523 0.00 0.00 O +ATOM 144 H MOL 1 2.735 11.306 5.523 0.00 0.00 H +ATOM 145 H MOL 1 11.030 2.396 11.405 0.00 0.00 H +ATOM 146 O MOL 1 11.971 2.450 11.405 0.00 0.00 O +ATOM 147 H MOL 1 12.146 1.524 11.405 0.00 0.00 H +ATOM 148 H MOL 1 13.962 8.475 13.187 0.00 0.00 H +ATOM 149 O MOL 1 14.903 8.529 13.187 0.00 0.00 O +ATOM 150 H MOL 1 15.078 7.602 13.187 0.00 0.00 H +ATOM 151 H MOL 1 9.462 8.027 5.394 0.00 0.00 H +ATOM 152 O MOL 1 10.404 8.081 5.394 0.00 0.00 O +ATOM 153 H MOL 1 10.579 7.155 5.394 0.00 0.00 H +ATOM 154 H MOL 1 8.529 8.120 2.400 0.00 0.00 H +ATOM 155 O MOL 1 9.471 8.175 2.400 0.00 0.00 O +ATOM 156 H MOL 1 9.646 7.248 2.400 0.00 0.00 H +ATOM 157 H MOL 1 8.139 0.978 12.304 0.00 0.00 H +ATOM 158 O MOL 1 9.081 1.033 12.304 0.00 0.00 O +ATOM 159 H MOL 1 9.256 0.106 12.304 0.00 0.00 H +ATOM 160 H MOL 1 1.628 12.028 12.490 0.00 0.00 H +ATOM 161 O MOL 1 2.569 12.082 12.490 0.00 0.00 O +ATOM 162 H MOL 1 2.744 11.155 12.490 0.00 0.00 H +ATOM 163 H MOL 1 6.188 3.476 7.931 0.00 0.00 H +ATOM 164 O MOL 1 7.129 3.530 7.931 0.00 0.00 O +ATOM 165 H MOL 1 7.305 2.604 7.931 0.00 0.00 H +ATOM 166 H MOL 1 11.865 12.623 9.604 0.00 0.00 H +ATOM 167 O MOL 1 12.807 12.677 9.604 0.00 0.00 O +ATOM 168 H MOL 1 12.982 11.750 9.604 0.00 0.00 H +ATOM 169 H MOL 1 9.083 5.793 0.741 0.00 0.00 H +ATOM 170 O MOL 1 10.025 5.847 0.741 0.00 0.00 O +ATOM 171 H MOL 1 10.200 4.921 0.741 0.00 0.00 H +ATOM 172 H MOL 1 13.001 1.894 6.496 0.00 0.00 H +ATOM 173 O MOL 1 13.942 1.949 6.496 0.00 0.00 O +ATOM 174 H MOL 1 14.117 1.022 6.496 0.00 0.00 H +ATOM 175 H MOL 1 1.513 8.921 9.234 0.00 0.00 H +ATOM 176 O MOL 1 2.454 8.975 9.234 0.00 0.00 O +ATOM 177 H MOL 1 2.629 8.049 9.234 0.00 0.00 H +ATOM 178 H MOL 1 5.013 8.716 0.609 0.00 0.00 H +ATOM 179 O MOL 1 5.954 8.770 0.609 0.00 0.00 O +ATOM 180 H MOL 1 6.129 7.843 0.609 0.00 0.00 H +ATOM 181 H MOL 1 6.661 3.635 13.318 0.00 0.00 H +ATOM 182 O MOL 1 7.602 3.690 13.318 0.00 0.00 O +ATOM 183 H MOL 1 7.777 2.763 13.318 0.00 0.00 H +ATOM 184 H MOL 1 5.109 3.641 1.722 0.00 0.00 H +ATOM 185 O MOL 1 6.050 3.696 1.722 0.00 0.00 O +ATOM 186 H MOL 1 6.225 2.769 1.722 0.00 0.00 H +ATOM 187 H MOL 1 6.461 0.702 0.842 0.00 0.00 H +ATOM 188 O MOL 1 7.402 0.757 0.842 0.00 0.00 O +ATOM 189 H MOL 1 7.577 -0.170 0.842 0.00 0.00 H +ATOM 190 H MOL 1 3.083 7.592 2.472 0.00 0.00 H +ATOM 191 O MOL 1 4.025 7.646 2.472 0.00 0.00 O +ATOM 192 H MOL 1 4.200 6.720 2.472 0.00 0.00 H +ATOM 193 H MOL 1 8.638 14.297 9.461 0.00 0.00 H +ATOM 194 O MOL 1 9.579 14.352 9.461 0.00 0.00 O +ATOM 195 H MOL 1 9.754 13.425 9.461 0.00 0.00 H +ATOM 196 H MOL 1 4.773 13.629 6.292 0.00 0.00 H +ATOM 197 O MOL 1 5.714 13.684 6.292 0.00 0.00 O +ATOM 198 H MOL 1 5.889 12.757 6.292 0.00 0.00 H +ATOM 199 H MOL 1 7.047 3.198 3.702 0.00 0.00 H +ATOM 200 O MOL 1 7.989 3.252 3.702 0.00 0.00 O +ATOM 201 H MOL 1 8.164 2.326 3.702 0.00 0.00 H +ATOM 202 H MOL 1 2.094 0.204 8.780 0.00 0.00 H +ATOM 203 O MOL 1 3.035 0.258 8.780 0.00 0.00 O +ATOM 204 H MOL 1 3.210 -0.669 8.780 0.00 0.00 H +ATOM 205 H MOL 1 6.427 6.710 13.409 0.00 0.00 H +ATOM 206 O MOL 1 7.368 6.765 13.409 0.00 0.00 O +ATOM 207 H MOL 1 7.543 5.838 13.409 0.00 0.00 H +ATOM 208 H MOL 1 4.534 6.437 9.463 0.00 0.00 H +ATOM 209 O MOL 1 5.476 6.491 9.463 0.00 0.00 O +ATOM 210 H MOL 1 5.651 5.565 9.463 0.00 0.00 H +ATOM 211 H MOL 1 2.755 13.902 4.044 0.00 0.00 H +ATOM 212 O MOL 1 3.697 13.957 4.044 0.00 0.00 O +ATOM 213 H MOL 1 3.872 13.030 4.044 0.00 0.00 H +ATOM 214 H MOL 1 3.647 9.025 13.044 0.00 0.00 H +ATOM 215 O MOL 1 4.589 9.080 13.044 0.00 0.00 O +ATOM 216 H MOL 1 4.764 8.153 13.044 0.00 0.00 H +ATOM 217 H MOL 1 2.475 1.170 14.119 0.00 0.00 H +ATOM 218 O MOL 1 3.416 1.224 14.119 0.00 0.00 O +ATOM 219 H MOL 1 3.592 0.298 14.119 0.00 0.00 H +ATOM 220 H MOL 1 9.573 10.933 2.915 0.00 0.00 H +ATOM 221 O MOL 1 10.514 10.988 2.915 0.00 0.00 O +ATOM 222 H MOL 1 10.689 10.061 2.915 0.00 0.00 H +ATOM 223 H MOL 1 6.960 10.953 7.307 0.00 0.00 H +ATOM 224 O MOL 1 7.901 11.007 7.307 0.00 0.00 O +ATOM 225 H MOL 1 8.076 10.080 7.307 0.00 0.00 H +ATOM 226 H MOL 1 12.713 4.501 0.595 0.00 0.00 H +ATOM 227 O MOL 1 13.655 4.555 0.595 0.00 0.00 O +ATOM 228 H MOL 1 13.830 3.628 0.595 0.00 0.00 H +ATOM 229 H MOL 1 13.212 11.633 13.218 0.00 0.00 H +ATOM 230 O MOL 1 14.154 11.687 13.218 0.00 0.00 O +ATOM 231 H MOL 1 14.329 10.761 13.218 0.00 0.00 H +ATOM 232 H MOL 1 11.861 13.431 11.502 0.00 0.00 H +ATOM 233 O MOL 1 12.803 13.485 11.502 0.00 0.00 O +ATOM 234 H MOL 1 12.978 12.558 11.502 0.00 0.00 H +ATOM 235 H MOL 1 9.400 8.430 13.259 0.00 0.00 H +ATOM 236 O MOL 1 10.342 8.485 13.259 0.00 0.00 O +ATOM 237 H MOL 1 10.517 7.558 13.259 0.00 0.00 H +ATOM 238 H MOL 1 2.820 1.799 5.389 0.00 0.00 H +ATOM 239 O MOL 1 3.762 1.854 5.389 0.00 0.00 O +ATOM 240 H MOL 1 3.937 0.927 5.389 0.00 0.00 H +ATOM 241 H MOL 1 9.302 11.302 5.371 0.00 0.00 H +ATOM 242 O MOL 1 10.244 11.357 5.371 0.00 0.00 O +ATOM 243 H MOL 1 10.419 10.430 5.371 0.00 0.00 H +ATOM 244 H MOL 1 7.076 12.436 12.400 0.00 0.00 H +ATOM 245 O MOL 1 8.017 12.491 12.400 0.00 0.00 O +ATOM 246 H MOL 1 8.192 11.564 12.400 0.00 0.00 H +ATOM 247 H MOL 1 0.564 8.190 0.846 0.00 0.00 H +ATOM 248 O MOL 1 1.505 8.245 0.846 0.00 0.00 O +ATOM 249 H MOL 1 1.680 7.318 0.846 0.00 0.00 H +ATOM 250 H MOL 1 7.010 11.136 9.638 0.00 0.00 H +ATOM 251 O MOL 1 7.952 11.191 9.638 0.00 0.00 O +ATOM 252 H MOL 1 8.127 10.264 9.638 0.00 0.00 H +ATOM 253 H MOL 1 9.268 5.723 3.606 0.00 0.00 H +ATOM 254 O MOL 1 10.209 5.777 3.606 0.00 0.00 O +ATOM 255 H MOL 1 10.384 4.850 3.606 0.00 0.00 H +ATOM 256 H MOL 1 13.390 10.203 4.472 0.00 0.00 H +ATOM 257 O MOL 1 14.332 10.257 4.472 0.00 0.00 O +ATOM 258 H MOL 1 14.507 9.330 4.472 0.00 0.00 H +ATOM 259 H MOL 1 3.876 5.191 11.945 0.00 0.00 H +ATOM 260 O MOL 1 4.818 5.246 11.945 0.00 0.00 O +ATOM 261 H MOL 1 4.993 4.319 11.945 0.00 0.00 H +ATOM 262 H MOL 1 6.226 6.828 11.264 0.00 0.00 H +ATOM 263 O MOL 1 7.167 6.882 11.264 0.00 0.00 O +ATOM 264 H MOL 1 7.342 5.955 11.264 0.00 0.00 H +ATOM 265 H MOL 1 3.202 9.766 3.900 0.00 0.00 H +ATOM 266 O MOL 1 4.143 9.821 3.900 0.00 0.00 O +ATOM 267 H MOL 1 4.318 8.894 3.900 0.00 0.00 H +ATOM 268 H MOL 1 12.942 5.592 4.532 0.00 0.00 H +ATOM 269 O MOL 1 13.884 5.646 4.532 0.00 0.00 O +ATOM 270 H MOL 1 14.059 4.719 4.532 0.00 0.00 H +ATOM 271 H MOL 1 4.341 9.628 9.004 0.00 0.00 H +ATOM 272 O MOL 1 5.282 9.682 9.004 0.00 0.00 O +ATOM 273 H MOL 1 5.458 8.755 9.004 0.00 0.00 H +ATOM 274 H MOL 1 13.274 13.142 3.549 0.00 0.00 H +ATOM 275 O MOL 1 14.216 13.197 3.549 0.00 0.00 O +ATOM 276 H MOL 1 14.391 12.270 3.549 0.00 0.00 H +ATOM 277 H MOL 1 3.276 6.152 7.287 0.00 0.00 H +ATOM 278 O MOL 1 4.217 6.206 7.287 0.00 0.00 O +ATOM 279 H MOL 1 4.392 5.279 7.287 0.00 0.00 H +ATOM 280 H MOL 1 6.608 12.279 4.127 0.00 0.00 H +ATOM 281 O MOL 1 7.550 12.333 4.127 0.00 0.00 O +ATOM 282 H MOL 1 7.725 11.406 4.127 0.00 0.00 H +ATOM 283 H MOL 1 14.089 2.765 8.432 0.00 0.00 H +ATOM 284 O MOL 1 15.031 2.819 8.432 0.00 0.00 O +ATOM 285 H MOL 1 15.206 1.892 8.432 0.00 0.00 H +ATOM 286 H MOL 1 12.247 0.859 8.664 0.00 0.00 H +ATOM 287 O MOL 1 13.188 0.913 8.664 0.00 0.00 O +ATOM 288 H MOL 1 13.363 -0.014 8.664 0.00 0.00 H +ATOM 289 H MOL 1 4.467 13.517 1.951 0.00 0.00 H +ATOM 290 O MOL 1 5.409 13.571 1.951 0.00 0.00 O +ATOM 291 H MOL 1 5.584 12.645 1.951 0.00 0.00 H +ATOM 292 H MOL 1 14.342 0.329 12.432 0.00 0.00 H +ATOM 293 O MOL 1 15.283 0.384 12.432 0.00 0.00 O +ATOM 294 H MOL 1 15.459 -0.543 12.432 0.00 0.00 H +ATOM 295 H MOL 1 11.322 2.305 0.943 0.00 0.00 H +ATOM 296 O MOL 1 12.263 2.360 0.943 0.00 0.00 O +ATOM 297 H MOL 1 12.438 1.433 0.943 0.00 0.00 H +ATOM 298 H MOL 1 7.319 4.026 10.612 0.00 0.00 H +ATOM 299 O MOL 1 8.261 4.081 10.612 0.00 0.00 O +ATOM 300 H MOL 1 8.436 3.154 10.612 0.00 0.00 H +TER +END diff --git a/examples/latte_interface_bomd/coords_100_2.pdb b/examples/latte_interface_bomd/coords_100_2.pdb new file mode 100644 index 00000000..955e3539 --- /dev/null +++ b/examples/latte_interface_bomd/coords_100_2.pdb @@ -0,0 +1,306 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 25.459 25.459 25.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.024 -0.035 0.000 0.00 0.00 H +ATOM 2 O MOL 1 0.965 0.020 0.000 0.00 0.00 O +ATOM 3 H MOL 1 1.141 -0.907 0.000 0.00 0.00 H +ATOM 4 H MOL 1 1.462 1.513 1.709 0.00 0.00 H +ATOM 5 O MOL 1 2.404 1.568 1.709 0.00 0.00 O +ATOM 6 H MOL 1 2.579 0.641 1.709 0.00 0.00 H +ATOM 7 H MOL 1 2.820 2.865 3.165 0.00 0.00 H +ATOM 8 O MOL 1 3.761 2.919 3.165 0.00 0.00 O +ATOM 9 H MOL 1 3.937 1.993 3.165 0.00 0.00 H +ATOM 10 H MOL 1 4.153 4.495 4.880 0.00 0.00 H +ATOM 11 O MOL 1 5.095 4.549 4.880 0.00 0.00 O +ATOM 12 H MOL 1 5.270 3.623 4.880 0.00 0.00 H +ATOM 13 H MOL 1 6.507 6.886 7.361 0.00 0.00 H +ATOM 14 O MOL 1 7.449 6.940 7.361 0.00 0.00 O +ATOM 15 H MOL 1 7.624 6.013 7.361 0.00 0.00 H +ATOM 16 H MOL 1 8.157 8.371 9.279 0.00 0.00 H +ATOM 17 O MOL 1 9.098 8.425 9.279 0.00 0.00 O +ATOM 18 H MOL 1 9.273 7.498 9.279 0.00 0.00 H +ATOM 19 H MOL 1 9.844 10.492 11.575 0.00 0.00 H +ATOM 20 O MOL 1 10.786 10.546 11.575 0.00 0.00 O +ATOM 21 H MOL 1 10.961 9.619 11.575 0.00 0.00 H +ATOM 22 H MOL 1 13.862 1.975 4.386 0.00 0.00 H +ATOM 23 O MOL 1 14.804 2.029 4.386 0.00 0.00 O +ATOM 24 H MOL 1 14.979 1.102 4.386 0.00 0.00 H +ATOM 25 H MOL 1 6.255 9.846 11.439 0.00 0.00 H +ATOM 26 O MOL 1 7.196 9.900 11.439 0.00 0.00 O +ATOM 27 H MOL 1 7.371 8.973 11.439 0.00 0.00 H +ATOM 28 H MOL 1 0.905 3.897 6.882 0.00 0.00 H +ATOM 29 O MOL 1 1.846 3.951 6.882 0.00 0.00 O +ATOM 30 H MOL 1 2.021 3.024 6.882 0.00 0.00 H +ATOM 31 H MOL 1 11.955 14.153 5.458 0.00 0.00 H +ATOM 32 O MOL 1 12.896 14.207 5.458 0.00 0.00 O +ATOM 33 H MOL 1 13.072 13.281 5.458 0.00 0.00 H +ATOM 34 H MOL 1 9.388 13.982 6.497 0.00 0.00 H +ATOM 35 O MOL 1 10.330 14.036 6.497 0.00 0.00 O +ATOM 36 H MOL 1 10.505 13.110 6.497 0.00 0.00 H +ATOM 37 H MOL 1 9.916 3.729 8.798 0.00 0.00 H +ATOM 38 O MOL 1 10.857 3.783 8.798 0.00 0.00 O +ATOM 39 H MOL 1 11.033 2.857 8.798 0.00 0.00 H +ATOM 40 H MOL 1 1.645 10.849 1.718 0.00 0.00 H +ATOM 41 O MOL 1 2.586 10.904 1.718 0.00 0.00 O +ATOM 42 H MOL 1 2.761 9.977 1.718 0.00 0.00 H +ATOM 43 H MOL 1 13.668 5.798 2.502 0.00 0.00 H +ATOM 44 O MOL 1 14.610 5.852 2.502 0.00 0.00 O +ATOM 45 H MOL 1 14.785 4.925 2.502 0.00 0.00 H +ATOM 46 H MOL 1 0.434 8.566 11.170 0.00 0.00 H +ATOM 47 O MOL 1 1.376 8.620 11.170 0.00 0.00 O +ATOM 48 H MOL 1 1.551 7.693 11.170 0.00 0.00 H +ATOM 49 H MOL 1 8.236 3.228 1.102 0.00 0.00 H +ATOM 50 O MOL 1 9.177 3.283 1.102 0.00 0.00 O +ATOM 51 H MOL 1 9.352 2.356 1.102 0.00 0.00 H +ATOM 52 H MOL 1 14.171 2.786 10.963 0.00 0.00 H +ATOM 53 O MOL 1 15.112 2.840 10.963 0.00 0.00 O +ATOM 54 H MOL 1 15.287 1.913 10.963 0.00 0.00 H +ATOM 55 H MOL 1 10.024 12.300 0.152 0.00 0.00 H +ATOM 56 O MOL 1 10.966 12.354 0.152 0.00 0.00 O +ATOM 57 H MOL 1 11.141 11.428 0.152 0.00 0.00 H +ATOM 58 H MOL 1 11.444 7.694 1.210 0.00 0.00 H +ATOM 59 O MOL 1 12.386 7.748 1.210 0.00 0.00 O +ATOM 60 H MOL 1 12.561 6.822 1.210 0.00 0.00 H +ATOM 61 H MOL 1 5.914 9.892 5.228 0.00 0.00 H +ATOM 62 O MOL 1 6.855 9.947 5.228 0.00 0.00 O +ATOM 63 H MOL 1 7.030 9.020 5.228 0.00 0.00 H +ATOM 64 H MOL 1 11.015 2.278 3.209 0.00 0.00 H +ATOM 65 O MOL 1 11.957 2.332 3.209 0.00 0.00 O +ATOM 66 H MOL 1 12.132 1.406 3.209 0.00 0.00 H +ATOM 67 H MOL 1 5.157 14.137 9.690 0.00 0.00 H +ATOM 68 O MOL 1 6.099 14.192 9.690 0.00 0.00 O +ATOM 69 H MOL 1 6.274 13.265 9.690 0.00 0.00 H +ATOM 70 H MOL 1 13.014 10.851 2.149 0.00 0.00 H +ATOM 71 O MOL 1 13.956 10.906 2.149 0.00 0.00 O +ATOM 72 H MOL 1 14.131 9.979 2.149 0.00 0.00 H +ATOM 73 H MOL 1 6.432 7.342 4.083 0.00 0.00 H +ATOM 74 O MOL 1 7.373 7.396 4.083 0.00 0.00 O +ATOM 75 H MOL 1 7.548 6.469 4.083 0.00 0.00 H +ATOM 76 H MOL 1 13.237 7.650 6.098 0.00 0.00 H +ATOM 77 O MOL 1 14.178 7.704 6.098 0.00 0.00 O +ATOM 78 H MOL 1 14.353 6.777 6.098 0.00 0.00 H +ATOM 79 H MOL 1 8.056 0.377 3.941 0.00 0.00 H +ATOM 80 O MOL 1 8.997 0.431 3.941 0.00 0.00 O +ATOM 81 H MOL 1 9.172 -0.495 3.941 0.00 0.00 H +ATOM 82 H MOL 1 4.396 9.364 7.094 0.00 0.00 H +ATOM 83 O MOL 1 5.337 9.418 7.094 0.00 0.00 O +ATOM 84 H MOL 1 5.512 8.491 7.094 0.00 0.00 H +ATOM 85 H MOL 1 5.060 0.593 11.823 0.00 0.00 H +ATOM 86 O MOL 1 6.002 0.647 11.823 0.00 0.00 O +ATOM 87 H MOL 1 6.177 -0.280 11.823 0.00 0.00 H +ATOM 88 H MOL 1 10.805 13.676 1.929 0.00 0.00 H +ATOM 89 O MOL 1 11.747 13.730 1.929 0.00 0.00 O +ATOM 90 H MOL 1 11.922 12.804 1.929 0.00 0.00 H +ATOM 91 H MOL 1 10.422 5.195 5.779 0.00 0.00 H +ATOM 92 O MOL 1 11.364 5.250 5.779 0.00 0.00 O +ATOM 93 H MOL 1 11.539 4.323 5.779 0.00 0.00 H +ATOM 94 H MOL 1 2.609 5.311 0.365 0.00 0.00 H +ATOM 95 O MOL 1 3.551 5.365 0.365 0.00 0.00 O +ATOM 96 H MOL 1 3.726 4.438 0.365 0.00 0.00 H +ATOM 97 H MOL 1 0.247 12.838 7.622 0.00 0.00 H +ATOM 98 O MOL 1 1.189 12.892 7.622 0.00 0.00 O +ATOM 99 H MOL 1 1.364 11.966 7.622 0.00 0.00 H +ATOM 100 H MOL 1 0.400 4.030 12.734 0.00 0.00 H +ATOM 101 O MOL 1 1.342 4.084 12.734 0.00 0.00 O +ATOM 102 H MOL 1 1.517 3.158 12.734 0.00 0.00 H +ATOM 103 H MOL 1 6.344 11.570 0.306 0.00 0.00 H +ATOM 104 O MOL 1 7.286 11.624 0.306 0.00 0.00 O +ATOM 105 H MOL 1 7.461 10.698 0.306 0.00 0.00 H +ATOM 106 H MOL 1 1.457 8.882 5.810 0.00 0.00 H +ATOM 107 O MOL 1 2.399 8.937 5.810 0.00 0.00 O +ATOM 108 H MOL 1 2.574 8.010 5.810 0.00 0.00 H +ATOM 109 H MOL 1 1.246 12.939 10.266 0.00 0.00 H +ATOM 110 O MOL 1 2.187 12.993 10.266 0.00 0.00 O +ATOM 111 H MOL 1 2.362 12.067 10.266 0.00 0.00 H +ATOM 112 H MOL 1 5.844 10.735 2.510 0.00 0.00 H +ATOM 113 O MOL 1 6.786 10.789 2.510 0.00 0.00 O +ATOM 114 H MOL 1 6.961 9.862 2.510 0.00 0.00 H +ATOM 115 H MOL 1 9.752 5.415 11.518 0.00 0.00 H +ATOM 116 O MOL 1 10.694 5.470 11.518 0.00 0.00 O +ATOM 117 H MOL 1 10.869 4.543 11.518 0.00 0.00 H +ATOM 118 H MOL 1 10.062 11.535 7.714 0.00 0.00 H +ATOM 119 O MOL 1 11.004 11.590 7.714 0.00 0.00 O +ATOM 120 H MOL 1 11.179 10.663 7.714 0.00 0.00 H +ATOM 121 H MOL 1 11.140 0.576 13.274 0.00 0.00 H +ATOM 122 O MOL 1 12.081 0.630 13.274 0.00 0.00 O +ATOM 123 H MOL 1 12.256 -0.297 13.274 0.00 0.00 H +ATOM 124 H MOL 1 8.664 2.794 6.440 0.00 0.00 H +ATOM 125 O MOL 1 9.606 2.848 6.440 0.00 0.00 O +ATOM 126 H MOL 1 9.781 1.921 6.440 0.00 0.00 H +ATOM 127 H MOL 1 1.908 5.146 9.029 0.00 0.00 H +ATOM 128 O MOL 1 2.849 5.201 9.029 0.00 0.00 O +ATOM 129 H MOL 1 3.024 4.274 9.029 0.00 0.00 H +ATOM 130 H MOL 1 12.294 7.322 11.253 0.00 0.00 H +ATOM 131 O MOL 1 13.235 7.377 11.253 0.00 0.00 O +ATOM 132 H MOL 1 13.410 6.450 11.253 0.00 0.00 H +ATOM 133 H MOL 1 11.098 6.253 8.089 0.00 0.00 H +ATOM 134 O MOL 1 12.039 6.307 8.089 0.00 0.00 O +ATOM 135 H MOL 1 12.214 5.381 8.089 0.00 0.00 H +ATOM 136 H MOL 1 4.497 3.412 10.233 0.00 0.00 H +ATOM 137 O MOL 1 5.438 3.466 10.233 0.00 0.00 O +ATOM 138 H MOL 1 5.613 2.539 10.233 0.00 0.00 H +ATOM 139 H MOL 1 12.642 9.031 8.163 0.00 0.00 H +ATOM 140 O MOL 1 13.584 9.085 8.163 0.00 0.00 O +ATOM 141 H MOL 1 13.759 8.159 8.163 0.00 0.00 H +ATOM 142 H MOL 1 1.618 12.178 5.523 0.00 0.00 H +ATOM 143 O MOL 1 2.560 12.233 5.523 0.00 0.00 O +ATOM 144 H MOL 1 2.735 11.306 5.523 0.00 0.00 H +ATOM 145 H MOL 1 11.030 2.396 11.405 0.00 0.00 H +ATOM 146 O MOL 1 11.971 2.450 11.405 0.00 0.00 O +ATOM 147 H MOL 1 12.146 1.524 11.405 0.00 0.00 H +ATOM 148 H MOL 1 13.962 8.475 13.187 0.00 0.00 H +ATOM 149 O MOL 1 14.903 8.529 13.187 0.00 0.00 O +ATOM 150 H MOL 1 15.078 7.602 13.187 0.00 0.00 H +ATOM 151 H MOL 1 9.462 8.027 5.394 0.00 0.00 H +ATOM 152 O MOL 1 10.404 8.081 5.394 0.00 0.00 O +ATOM 153 H MOL 1 10.579 7.155 5.394 0.00 0.00 H +ATOM 154 H MOL 1 8.529 8.120 2.400 0.00 0.00 H +ATOM 155 O MOL 1 9.471 8.175 2.400 0.00 0.00 O +ATOM 156 H MOL 1 9.646 7.248 2.400 0.00 0.00 H +ATOM 157 H MOL 1 8.139 0.978 12.304 0.00 0.00 H +ATOM 158 O MOL 1 9.081 1.033 12.304 0.00 0.00 O +ATOM 159 H MOL 1 9.256 0.106 12.304 0.00 0.00 H +ATOM 160 H MOL 1 1.628 12.028 12.490 0.00 0.00 H +ATOM 161 O MOL 1 2.569 12.082 12.490 0.00 0.00 O +ATOM 162 H MOL 1 2.744 11.155 12.490 0.00 0.00 H +ATOM 163 H MOL 1 6.188 3.476 7.931 0.00 0.00 H +ATOM 164 O MOL 1 7.129 3.530 7.931 0.00 0.00 O +ATOM 165 H MOL 1 7.305 2.604 7.931 0.00 0.00 H +ATOM 166 H MOL 1 11.865 12.623 9.604 0.00 0.00 H +ATOM 167 O MOL 1 12.807 12.677 9.604 0.00 0.00 O +ATOM 168 H MOL 1 12.982 11.750 9.604 0.00 0.00 H +ATOM 169 H MOL 1 9.083 5.793 0.741 0.00 0.00 H +ATOM 170 O MOL 1 10.025 5.847 0.741 0.00 0.00 O +ATOM 171 H MOL 1 10.200 4.921 0.741 0.00 0.00 H +ATOM 172 H MOL 1 13.001 1.894 6.496 0.00 0.00 H +ATOM 173 O MOL 1 13.942 1.949 6.496 0.00 0.00 O +ATOM 174 H MOL 1 14.117 1.022 6.496 0.00 0.00 H +ATOM 175 H MOL 1 1.513 8.921 9.234 0.00 0.00 H +ATOM 176 O MOL 1 2.454 8.975 9.234 0.00 0.00 O +ATOM 177 H MOL 1 2.629 8.049 9.234 0.00 0.00 H +ATOM 178 H MOL 1 5.013 8.716 0.609 0.00 0.00 H +ATOM 179 O MOL 1 5.954 8.770 0.609 0.00 0.00 O +ATOM 180 H MOL 1 6.129 7.843 0.609 0.00 0.00 H +ATOM 181 H MOL 1 6.661 3.635 13.318 0.00 0.00 H +ATOM 182 O MOL 1 7.602 3.690 13.318 0.00 0.00 O +ATOM 183 H MOL 1 7.777 2.763 13.318 0.00 0.00 H +ATOM 184 H MOL 1 5.109 3.641 1.722 0.00 0.00 H +ATOM 185 O MOL 1 6.050 3.696 1.722 0.00 0.00 O +ATOM 186 H MOL 1 6.225 2.769 1.722 0.00 0.00 H +ATOM 187 H MOL 1 6.461 0.702 0.842 0.00 0.00 H +ATOM 188 O MOL 1 7.402 0.757 0.842 0.00 0.00 O +ATOM 189 H MOL 1 7.577 -0.170 0.842 0.00 0.00 H +ATOM 190 H MOL 1 3.083 7.592 2.472 0.00 0.00 H +ATOM 191 O MOL 1 4.025 7.646 2.472 0.00 0.00 O +ATOM 192 H MOL 1 4.200 6.720 2.472 0.00 0.00 H +ATOM 193 H MOL 1 8.638 14.297 9.461 0.00 0.00 H +ATOM 194 O MOL 1 9.579 14.352 9.461 0.00 0.00 O +ATOM 195 H MOL 1 9.754 13.425 9.461 0.00 0.00 H +ATOM 196 H MOL 1 4.773 13.629 6.292 0.00 0.00 H +ATOM 197 O MOL 1 5.714 13.684 6.292 0.00 0.00 O +ATOM 198 H MOL 1 5.889 12.757 6.292 0.00 0.00 H +ATOM 199 H MOL 1 7.047 3.198 3.702 0.00 0.00 H +ATOM 200 O MOL 1 7.989 3.252 3.702 0.00 0.00 O +ATOM 201 H MOL 1 8.164 2.326 3.702 0.00 0.00 H +ATOM 202 H MOL 1 2.094 0.204 8.780 0.00 0.00 H +ATOM 203 O MOL 1 3.035 0.258 8.780 0.00 0.00 O +ATOM 204 H MOL 1 3.210 -0.669 8.780 0.00 0.00 H +ATOM 205 H MOL 1 6.427 6.710 13.409 0.00 0.00 H +ATOM 206 O MOL 1 7.368 6.765 13.409 0.00 0.00 O +ATOM 207 H MOL 1 7.543 5.838 13.409 0.00 0.00 H +ATOM 208 H MOL 1 4.534 6.437 9.463 0.00 0.00 H +ATOM 209 O MOL 1 5.476 6.491 9.463 0.00 0.00 O +ATOM 210 H MOL 1 5.651 5.565 9.463 0.00 0.00 H +ATOM 211 H MOL 1 2.755 13.902 4.044 0.00 0.00 H +ATOM 212 O MOL 1 3.697 13.957 4.044 0.00 0.00 O +ATOM 213 H MOL 1 3.872 13.030 4.044 0.00 0.00 H +ATOM 214 H MOL 1 3.647 9.025 13.044 0.00 0.00 H +ATOM 215 O MOL 1 4.589 9.080 13.044 0.00 0.00 O +ATOM 216 H MOL 1 4.764 8.153 13.044 0.00 0.00 H +ATOM 217 H MOL 1 2.475 1.170 14.119 0.00 0.00 H +ATOM 218 O MOL 1 3.416 1.224 14.119 0.00 0.00 O +ATOM 219 H MOL 1 3.592 0.298 14.119 0.00 0.00 H +ATOM 220 H MOL 1 9.573 10.933 2.915 0.00 0.00 H +ATOM 221 O MOL 1 10.514 10.988 2.915 0.00 0.00 O +ATOM 222 H MOL 1 10.689 10.061 2.915 0.00 0.00 H +ATOM 223 H MOL 1 6.960 10.953 7.307 0.00 0.00 H +ATOM 224 O MOL 1 7.901 11.007 7.307 0.00 0.00 O +ATOM 225 H MOL 1 8.076 10.080 7.307 0.00 0.00 H +ATOM 226 H MOL 1 12.713 4.501 0.595 0.00 0.00 H +ATOM 227 O MOL 1 13.655 4.555 0.595 0.00 0.00 O +ATOM 228 H MOL 1 13.830 3.628 0.595 0.00 0.00 H +ATOM 229 H MOL 1 13.212 11.633 13.218 0.00 0.00 H +ATOM 230 O MOL 1 14.154 11.687 13.218 0.00 0.00 O +ATOM 231 H MOL 1 14.329 10.761 13.218 0.00 0.00 H +ATOM 232 H MOL 1 11.861 13.431 11.502 0.00 0.00 H +ATOM 233 O MOL 1 12.803 13.485 11.502 0.00 0.00 O +ATOM 234 H MOL 1 12.978 12.558 11.502 0.00 0.00 H +ATOM 235 H MOL 1 9.400 8.430 13.259 0.00 0.00 H +ATOM 236 O MOL 1 10.342 8.485 13.259 0.00 0.00 O +ATOM 237 H MOL 1 10.517 7.558 13.259 0.00 0.00 H +ATOM 238 H MOL 1 2.820 1.799 5.389 0.00 0.00 H +ATOM 239 O MOL 1 3.762 1.854 5.389 0.00 0.00 O +ATOM 240 H MOL 1 3.937 0.927 5.389 0.00 0.00 H +ATOM 241 H MOL 1 9.302 11.302 5.371 0.00 0.00 H +ATOM 242 O MOL 1 10.244 11.357 5.371 0.00 0.00 O +ATOM 243 H MOL 1 10.419 10.430 5.371 0.00 0.00 H +ATOM 244 H MOL 1 7.076 12.436 12.400 0.00 0.00 H +ATOM 245 O MOL 1 8.017 12.491 12.400 0.00 0.00 O +ATOM 246 H MOL 1 8.192 11.564 12.400 0.00 0.00 H +ATOM 247 H MOL 1 0.564 8.190 0.846 0.00 0.00 H +ATOM 248 O MOL 1 1.505 8.245 0.846 0.00 0.00 O +ATOM 249 H MOL 1 1.680 7.318 0.846 0.00 0.00 H +ATOM 250 H MOL 1 7.010 11.136 9.638 0.00 0.00 H +ATOM 251 O MOL 1 7.952 11.191 9.638 0.00 0.00 O +ATOM 252 H MOL 1 8.127 10.264 9.638 0.00 0.00 H +ATOM 253 H MOL 1 9.268 5.723 3.606 0.00 0.00 H +ATOM 254 O MOL 1 10.209 5.777 3.606 0.00 0.00 O +ATOM 255 H MOL 1 10.384 4.850 3.606 0.00 0.00 H +ATOM 256 H MOL 1 13.390 10.203 4.472 0.00 0.00 H +ATOM 257 O MOL 1 14.332 10.257 4.472 0.00 0.00 O +ATOM 258 H MOL 1 14.507 9.330 4.472 0.00 0.00 H +ATOM 259 H MOL 1 3.876 5.191 11.945 0.00 0.00 H +ATOM 260 O MOL 1 4.818 5.246 11.945 0.00 0.00 O +ATOM 261 H MOL 1 4.993 4.319 11.945 0.00 0.00 H +ATOM 262 H MOL 1 6.226 6.828 11.264 0.00 0.00 H +ATOM 263 O MOL 1 7.167 6.882 11.264 0.00 0.00 O +ATOM 264 H MOL 1 7.342 5.955 11.264 0.00 0.00 H +ATOM 265 H MOL 1 3.202 9.766 3.900 0.00 0.00 H +ATOM 266 O MOL 1 4.143 9.821 3.900 0.00 0.00 O +ATOM 267 H MOL 1 4.318 8.894 3.900 0.00 0.00 H +ATOM 268 H MOL 1 12.942 5.592 4.532 0.00 0.00 H +ATOM 269 O MOL 1 13.884 5.646 4.532 0.00 0.00 O +ATOM 270 H MOL 1 14.059 4.719 4.532 0.00 0.00 H +ATOM 271 H MOL 1 4.341 9.628 9.004 0.00 0.00 H +ATOM 272 O MOL 1 5.282 9.682 9.004 0.00 0.00 O +ATOM 273 H MOL 1 5.458 8.755 9.004 0.00 0.00 H +ATOM 274 H MOL 1 13.274 13.142 3.549 0.00 0.00 H +ATOM 275 O MOL 1 14.216 13.197 3.549 0.00 0.00 O +ATOM 276 H MOL 1 14.391 12.270 3.549 0.00 0.00 H +ATOM 277 H MOL 1 3.276 6.152 7.287 0.00 0.00 H +ATOM 278 O MOL 1 4.217 6.206 7.287 0.00 0.00 O +ATOM 279 H MOL 1 4.392 5.279 7.287 0.00 0.00 H +ATOM 280 H MOL 1 6.608 12.279 4.127 0.00 0.00 H +ATOM 281 O MOL 1 7.550 12.333 4.127 0.00 0.00 O +ATOM 282 H MOL 1 7.725 11.406 4.127 0.00 0.00 H +ATOM 283 H MOL 1 14.089 2.765 8.432 0.00 0.00 H +ATOM 284 O MOL 1 15.031 2.819 8.432 0.00 0.00 O +ATOM 285 H MOL 1 15.206 1.892 8.432 0.00 0.00 H +ATOM 286 H MOL 1 12.247 0.859 8.664 0.00 0.00 H +ATOM 287 O MOL 1 13.188 0.913 8.664 0.00 0.00 O +ATOM 288 H MOL 1 13.363 -0.014 8.664 0.00 0.00 H +ATOM 289 H MOL 1 4.467 13.517 1.951 0.00 0.00 H +ATOM 290 O MOL 1 5.409 13.571 1.951 0.00 0.00 O +ATOM 291 H MOL 1 5.584 12.645 1.951 0.00 0.00 H +ATOM 292 H MOL 1 14.342 0.329 12.432 0.00 0.00 H +ATOM 293 O MOL 1 15.283 0.384 12.432 0.00 0.00 O +ATOM 294 H MOL 1 15.459 -0.543 12.432 0.00 0.00 H +ATOM 295 H MOL 1 11.322 2.305 0.943 0.00 0.00 H +ATOM 296 O MOL 1 12.263 2.360 0.943 0.00 0.00 O +ATOM 297 H MOL 1 12.438 1.433 0.943 0.00 0.00 H +ATOM 298 H MOL 1 7.319 4.026 10.612 0.00 0.00 H +ATOM 299 O MOL 1 8.261 4.081 10.612 0.00 0.00 O +ATOM 300 H MOL 1 8.436 3.154 10.612 0.00 0.00 H +TER +END diff --git a/examples/latte_interface_bomd/coords_1299.pdb b/examples/latte_interface_bomd/coords_1299.pdb new file mode 100644 index 00000000..55d5d1ad --- /dev/null +++ b/examples/latte_interface_bomd/coords_1299.pdb @@ -0,0 +1,1305 @@ +TITLE Built with Packmol +REMARK Packmol generated pdb file +CRYST1 40.230 40.230 40.230 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H HOH 0 24.812 22.184 19.109 1.00 0.00 H +ATOM 2 O HOH 1 24.014 22.044 19.696 1.00 0.00 O +ATOM 3 H HOH 0 23.492 21.337 19.219 1.00 0.00 H +ATOM 4 OW SOL 1 17.915 12.852 12.888 1.00 0.00 O +ATOM 5 HW1 SOL 1 18.247 13.543 12.247 1.00 0.00 H +ATOM 6 HW2 SOL 1 17.565 12.128 12.294 1.00 0.00 H +ATOM 7 OW SOL 2 17.524 28.252 22.152 1.00 0.00 O +ATOM 8 HW1 SOL 2 17.842 29.134 21.806 1.00 0.00 H +ATOM 9 HW2 SOL 2 16.749 28.493 22.736 1.00 0.00 H +ATOM 10 OW SOL 3 18.272 22.452 8.081 1.00 0.00 O +ATOM 11 HW1 SOL 3 18.633 21.922 8.848 1.00 0.00 H +ATOM 12 HW2 SOL 3 17.651 21.814 7.625 1.00 0.00 H +ATOM 13 OW SOL 4 22.430 24.527 31.340 1.00 0.00 O +ATOM 14 HW1 SOL 4 22.675 23.743 31.910 1.00 0.00 H +ATOM 15 HW2 SOL 4 22.090 25.200 31.998 1.00 0.00 H +ATOM 16 OW SOL 5 25.090 23.960 22.405 1.00 0.00 O +ATOM 17 HW1 SOL 5 24.836 23.682 21.479 1.00 0.00 H +ATOM 18 HW2 SOL 5 26.000 23.563 22.529 1.00 0.00 H +ATOM 19 OW SOL 6 24.774 20.640 26.519 1.00 0.00 O +ATOM 20 HW1 SOL 6 24.293 19.797 26.761 1.00 0.00 H +ATOM 21 HW2 SOL 6 24.915 21.092 27.400 1.00 0.00 H +ATOM 22 OW SOL 7 26.990 22.203 21.118 1.00 0.00 O +ATOM 23 HW1 SOL 7 26.249 21.867 21.698 1.00 0.00 H +ATOM 24 HW2 SOL 7 26.681 23.114 20.845 1.00 0.00 H +ATOM 25 OW SOL 8 6.883 20.799 22.990 1.00 0.00 O +ATOM 26 HW1 SOL 8 7.731 20.467 23.403 1.00 0.00 H +ATOM 27 HW2 SOL 8 6.530 21.448 23.664 1.00 0.00 H +ATOM 28 OW SOL 9 22.196 12.513 19.542 1.00 0.00 O +ATOM 29 HW1 SOL 9 21.895 11.768 20.137 1.00 0.00 H +ATOM 30 HW2 SOL 9 22.528 13.206 20.181 1.00 0.00 H +ATOM 31 OW SOL 10 24.367 14.196 27.807 1.00 0.00 O +ATOM 32 HW1 SOL 10 24.759 13.864 26.949 1.00 0.00 H +ATOM 33 HW2 SOL 10 25.039 14.862 28.132 1.00 0.00 H +ATOM 34 OW SOL 11 9.054 23.271 16.103 1.00 0.00 O +ATOM 35 HW1 SOL 11 9.000 23.179 15.109 1.00 0.00 H +ATOM 36 HW2 SOL 11 10.012 23.068 16.307 1.00 0.00 H +ATOM 37 OW SOL 12 13.728 24.315 29.715 1.00 0.00 O +ATOM 38 HW1 SOL 12 14.398 24.828 29.178 1.00 0.00 H +ATOM 39 HW2 SOL 12 13.236 23.780 29.028 1.00 0.00 H +ATOM 40 OW SOL 13 14.471 25.164 21.554 1.00 0.00 O +ATOM 41 HW1 SOL 13 14.885 25.186 22.464 1.00 0.00 H +ATOM 42 HW2 SOL 13 13.759 25.864 21.602 1.00 0.00 H +ATOM 43 OW SOL 14 26.294 31.275 22.228 1.00 0.00 O +ATOM 44 HW1 SOL 14 26.728 31.339 23.126 1.00 0.00 H +ATOM 45 HW2 SOL 14 26.431 30.319 21.968 1.00 0.00 H +ATOM 46 OW SOL 15 26.994 11.521 25.850 1.00 0.00 O +ATOM 47 HW1 SOL 15 26.171 11.436 25.288 1.00 0.00 H +ATOM 48 HW2 SOL 15 27.117 12.509 25.940 1.00 0.00 H +ATOM 49 OW SOL 16 16.539 28.602 27.834 1.00 0.00 O +ATOM 50 HW1 SOL 16 15.693 28.079 27.733 1.00 0.00 H +ATOM 51 HW2 SOL 16 16.972 28.525 26.936 1.00 0.00 H +ATOM 52 OW SOL 17 22.819 23.562 21.747 1.00 0.00 O +ATOM 53 HW1 SOL 17 23.183 24.097 22.509 1.00 0.00 H +ATOM 54 HW2 SOL 17 22.769 22.633 22.114 1.00 0.00 H +ATOM 55 OW SOL 18 19.599 24.838 14.635 1.00 0.00 O +ATOM 56 HW1 SOL 18 20.294 25.205 14.016 1.00 0.00 H +ATOM 57 HW2 SOL 18 18.904 24.470 14.018 1.00 0.00 H +ATOM 58 OW SOL 19 11.460 21.896 29.300 1.00 0.00 O +ATOM 59 HW1 SOL 19 12.202 22.159 29.917 1.00 0.00 H +ATOM 60 HW2 SOL 19 10.878 21.312 29.867 1.00 0.00 H +ATOM 61 OW SOL 20 13.460 8.606 19.737 1.00 0.00 O +ATOM 62 HW1 SOL 20 13.490 8.653 20.735 1.00 0.00 H +ATOM 63 HW2 SOL 20 13.017 7.729 19.555 1.00 0.00 H +ATOM 64 OW SOL 21 26.689 19.633 27.144 1.00 0.00 O +ATOM 65 HW1 SOL 21 25.881 19.410 27.689 1.00 0.00 H +ATOM 66 HW2 SOL 21 27.282 20.115 27.789 1.00 0.00 H +ATOM 67 OW SOL 22 12.680 24.355 15.838 1.00 0.00 O +ATOM 68 HW1 SOL 22 12.330 25.241 16.143 1.00 0.00 H +ATOM 69 HW2 SOL 22 13.173 24.574 14.996 1.00 0.00 H +ATOM 70 OW SOL 23 17.500 25.332 29.830 1.00 0.00 O +ATOM 71 HW1 SOL 23 18.055 26.125 29.579 1.00 0.00 H +ATOM 72 HW2 SOL 23 18.141 24.567 29.772 1.00 0.00 H +ATOM 73 OW SOL 24 24.609 7.817 20.898 1.00 0.00 O +ATOM 74 HW1 SOL 24 25.282 8.251 21.495 1.00 0.00 H +ATOM 75 HW2 SOL 24 23.751 7.908 21.404 1.00 0.00 H +ATOM 76 OW SOL 25 19.438 10.285 16.542 1.00 0.00 O +ATOM 77 HW1 SOL 25 18.832 10.543 15.790 1.00 0.00 H +ATOM 78 HW2 SOL 25 18.857 9.725 17.132 1.00 0.00 H +ATOM 79 OW SOL 26 11.378 19.670 24.247 1.00 0.00 O +ATOM 80 HW1 SOL 26 12.271 19.520 24.670 1.00 0.00 H +ATOM 81 HW2 SOL 26 11.565 20.341 23.530 1.00 0.00 H +ATOM 82 OW SOL 27 19.982 33.490 17.847 1.00 0.00 O +ATOM 83 HW1 SOL 27 20.767 33.113 18.339 1.00 0.00 H +ATOM 84 HW2 SOL 27 19.790 34.344 18.330 1.00 0.00 H +ATOM 85 OW SOL 28 16.937 23.412 19.668 1.00 0.00 O +ATOM 86 HW1 SOL 28 16.821 22.419 19.661 1.00 0.00 H +ATOM 87 HW2 SOL 28 17.719 23.554 20.275 1.00 0.00 H +ATOM 88 OW SOL 29 27.579 22.373 10.254 1.00 0.00 O +ATOM 89 HW1 SOL 29 28.063 21.629 9.795 1.00 0.00 H +ATOM 90 HW2 SOL 29 26.978 22.738 9.543 1.00 0.00 H +ATOM 91 OW SOL 30 12.743 19.748 16.777 1.00 0.00 O +ATOM 92 HW1 SOL 30 12.101 19.822 16.015 1.00 0.00 H +ATOM 93 HW2 SOL 30 13.630 19.635 16.329 1.00 0.00 H +ATOM 94 OW SOL 31 22.687 17.370 21.870 1.00 0.00 O +ATOM 95 HW1 SOL 31 23.080 16.659 22.453 1.00 0.00 H +ATOM 96 HW2 SOL 31 22.590 18.152 22.485 1.00 0.00 H +ATOM 97 OW SOL 32 22.513 10.240 16.651 1.00 0.00 O +ATOM 98 HW1 SOL 32 22.192 10.135 17.592 1.00 0.00 H +ATOM 99 HW2 SOL 32 22.854 11.179 16.622 1.00 0.00 H +ATOM 100 OW SOL 33 10.472 16.762 13.933 1.00 0.00 O +ATOM 101 HW1 SOL 33 9.659 16.888 14.501 1.00 0.00 H +ATOM 102 HW2 SOL 33 10.489 15.777 13.761 1.00 0.00 H +ATOM 103 OW SOL 34 24.723 25.943 21.674 1.00 0.00 O +ATOM 104 HW1 SOL 34 23.754 25.698 21.658 1.00 0.00 H +ATOM 105 HW2 SOL 34 24.933 26.139 20.717 1.00 0.00 H +ATOM 106 OW SOL 35 8.848 23.597 22.834 1.00 0.00 O +ATOM 107 HW1 SOL 35 8.137 23.529 23.534 1.00 0.00 H +ATOM 108 HW2 SOL 35 8.911 22.667 22.471 1.00 0.00 H +ATOM 109 OW SOL 36 25.003 14.221 21.630 1.00 0.00 O +ATOM 110 HW1 SOL 36 25.360 13.898 22.506 1.00 0.00 H +ATOM 111 HW2 SOL 36 25.075 15.216 21.699 1.00 0.00 H +ATOM 112 OW SOL 37 17.024 25.204 21.412 1.00 0.00 O +ATOM 113 HW1 SOL 37 17.045 26.028 20.846 1.00 0.00 H +ATOM 114 HW2 SOL 37 16.331 24.633 20.973 1.00 0.00 H +ATOM 115 OW SOL 38 21.145 21.407 11.963 1.00 0.00 O +ATOM 116 HW1 SOL 38 20.834 22.357 11.979 1.00 0.00 H +ATOM 117 HW2 SOL 38 21.433 21.237 12.905 1.00 0.00 H +ATOM 118 OW SOL 39 22.328 19.648 17.502 1.00 0.00 O +ATOM 119 HW1 SOL 39 21.950 18.759 17.242 1.00 0.00 H +ATOM 120 HW2 SOL 39 22.819 19.945 16.683 1.00 0.00 H +ATOM 121 OW SOL 40 31.232 18.191 16.282 1.00 0.00 O +ATOM 122 HW1 SOL 40 30.255 18.039 16.436 1.00 0.00 H +ATOM 123 HW2 SOL 40 31.500 17.427 15.695 1.00 0.00 H +ATOM 124 OW SOL 41 20.472 22.025 28.044 1.00 0.00 O +ATOM 125 HW1 SOL 41 19.910 21.201 28.114 1.00 0.00 H +ATOM 126 HW2 SOL 41 21.206 21.867 28.705 1.00 0.00 H +ATOM 127 OW SOL 42 29.525 27.024 26.006 1.00 0.00 O +ATOM 128 HW1 SOL 42 29.545 26.084 25.664 1.00 0.00 H +ATOM 129 HW2 SOL 42 30.425 27.384 25.760 1.00 0.00 H +ATOM 130 OW SOL 43 12.572 19.293 19.563 1.00 0.00 O +ATOM 131 HW1 SOL 43 12.235 19.147 18.633 1.00 0.00 H +ATOM 132 HW2 SOL 43 13.127 20.121 19.486 1.00 0.00 H +ATOM 133 OW SOL 44 28.904 25.278 27.929 1.00 0.00 O +ATOM 134 HW1 SOL 44 29.793 25.123 27.500 1.00 0.00 H +ATOM 135 HW2 SOL 44 28.261 25.227 27.165 1.00 0.00 H +ATOM 136 OW SOL 45 18.890 24.136 9.158 1.00 0.00 O +ATOM 137 HW1 SOL 45 18.386 24.659 9.845 1.00 0.00 H +ATOM 138 HW2 SOL 45 19.809 24.063 9.544 1.00 0.00 H +ATOM 139 OW SOL 46 22.411 19.995 11.347 1.00 0.00 O +ATOM 140 HW1 SOL 46 22.844 19.382 10.686 1.00 0.00 H +ATOM 141 HW2 SOL 46 22.765 20.897 11.099 1.00 0.00 H +ATOM 142 OW SOL 47 15.126 24.616 8.500 1.00 0.00 O +ATOM 143 HW1 SOL 47 14.587 24.550 9.339 1.00 0.00 H +ATOM 144 HW2 SOL 47 14.440 24.578 7.774 1.00 0.00 H +ATOM 145 OW SOL 48 19.778 11.195 20.586 1.00 0.00 O +ATOM 146 HW1 SOL 48 19.350 12.051 20.295 1.00 0.00 H +ATOM 147 HW2 SOL 48 20.122 11.403 21.502 1.00 0.00 H +ATOM 148 OW SOL 49 14.611 23.092 15.349 1.00 0.00 O +ATOM 149 HW1 SOL 49 14.685 22.211 14.880 1.00 0.00 H +ATOM 150 HW2 SOL 49 15.054 22.928 16.230 1.00 0.00 H +ATOM 151 OW SOL 50 16.022 14.205 14.111 1.00 0.00 O +ATOM 152 HW1 SOL 50 15.842 15.127 14.455 1.00 0.00 H +ATOM 153 HW2 SOL 50 16.550 14.364 13.276 1.00 0.00 H +ATOM 154 OW SOL 51 30.145 24.475 24.408 1.00 0.00 O +ATOM 155 HW1 SOL 51 30.977 24.710 24.911 1.00 0.00 H +ATOM 156 HW2 SOL 51 29.480 24.281 25.129 1.00 0.00 H +ATOM 157 OW SOL 52 19.974 12.135 30.934 1.00 0.00 O +ATOM 158 HW1 SOL 52 19.765 11.696 31.808 1.00 0.00 H +ATOM 159 HW2 SOL 52 20.496 12.947 31.197 1.00 0.00 H +ATOM 160 OW SOL 53 27.407 10.681 16.793 1.00 0.00 O +ATOM 161 HW1 SOL 53 28.348 10.992 16.659 1.00 0.00 H +ATOM 162 HW2 SOL 53 27.414 9.747 16.436 1.00 0.00 H +ATOM 163 OW SOL 54 20.295 15.208 16.437 1.00 0.00 O +ATOM 164 HW1 SOL 54 20.039 14.270 16.202 1.00 0.00 H +ATOM 165 HW2 SOL 54 20.500 15.626 15.552 1.00 0.00 H +ATOM 166 OW SOL 55 20.140 14.679 26.490 1.00 0.00 O +ATOM 167 HW1 SOL 55 19.541 14.035 26.967 1.00 0.00 H +ATOM 168 HW2 SOL 55 20.592 15.175 27.231 1.00 0.00 H +ATOM 169 OW SOL 56 18.049 18.312 23.379 1.00 0.00 O +ATOM 170 HW1 SOL 56 17.709 18.188 22.447 1.00 0.00 H +ATOM 171 HW2 SOL 56 17.257 18.669 23.874 1.00 0.00 H +ATOM 172 OW SOL 57 23.087 28.689 17.079 1.00 0.00 O +ATOM 173 HW1 SOL 57 22.894 29.416 16.421 1.00 0.00 H +ATOM 174 HW2 SOL 57 22.180 28.392 17.375 1.00 0.00 H +ATOM 175 OW SOL 58 17.652 16.214 32.063 1.00 0.00 O +ATOM 176 HW1 SOL 58 17.465 16.870 31.332 1.00 0.00 H +ATOM 177 HW2 SOL 58 17.266 15.359 31.717 1.00 0.00 H +ATOM 178 OW SOL 59 10.164 21.661 24.153 1.00 0.00 O +ATOM 179 HW1 SOL 59 9.226 21.407 23.917 1.00 0.00 H +ATOM 180 HW2 SOL 59 10.548 21.978 23.286 1.00 0.00 H +ATOM 181 OW SOL 60 20.915 17.894 29.118 1.00 0.00 O +ATOM 182 HW1 SOL 60 20.640 18.563 28.429 1.00 0.00 H +ATOM 183 HW2 SOL 60 21.002 17.043 28.600 1.00 0.00 H +ATOM 184 OW SOL 61 17.367 26.246 23.017 1.00 0.00 O +ATOM 185 HW1 SOL 61 16.659 26.364 23.712 1.00 0.00 H +ATOM 186 HW2 SOL 61 18.116 25.808 23.515 1.00 0.00 H +ATOM 187 OW SOL 62 21.776 22.893 24.986 1.00 0.00 O +ATOM 188 HW1 SOL 62 21.561 22.185 24.313 1.00 0.00 H +ATOM 189 HW2 SOL 62 21.893 23.717 24.431 1.00 0.00 H +ATOM 190 OW SOL 63 25.728 14.610 30.886 1.00 0.00 O +ATOM 191 HW1 SOL 63 26.527 14.773 30.307 1.00 0.00 H +ATOM 192 HW2 SOL 63 25.225 13.898 30.398 1.00 0.00 H +ATOM 193 OW SOL 64 25.135 11.052 12.970 1.00 0.00 O +ATOM 194 HW1 SOL 64 25.032 10.506 12.139 1.00 0.00 H +ATOM 195 HW2 SOL 64 25.610 10.438 13.599 1.00 0.00 H +ATOM 196 OW SOL 65 21.134 31.228 16.691 1.00 0.00 O +ATOM 197 HW1 SOL 65 21.641 31.978 17.115 1.00 0.00 H +ATOM 198 HW2 SOL 65 20.392 31.050 17.337 1.00 0.00 H +ATOM 199 OW SOL 66 15.661 24.773 31.063 1.00 0.00 O +ATOM 200 HW1 SOL 66 15.729 24.124 30.306 1.00 0.00 H +ATOM 201 HW2 SOL 66 15.321 25.607 30.629 1.00 0.00 H +ATOM 202 OW SOL 67 25.005 27.999 10.964 1.00 0.00 O +ATOM 203 HW1 SOL 67 25.289 28.514 10.155 1.00 0.00 H +ATOM 204 HW2 SOL 67 24.617 27.159 10.584 1.00 0.00 H +ATOM 205 OW SOL 68 23.912 25.698 23.933 1.00 0.00 O +ATOM 206 HW1 SOL 68 23.423 25.068 24.535 1.00 0.00 H +ATOM 207 HW2 SOL 68 24.848 25.346 23.932 1.00 0.00 H +ATOM 208 OW SOL 69 7.050 20.594 15.260 1.00 0.00 O +ATOM 209 HW1 SOL 69 6.133 20.372 15.590 1.00 0.00 H +ATOM 210 HW2 SOL 69 7.033 21.590 15.169 1.00 0.00 H +ATOM 211 OW SOL 70 10.707 29.314 23.961 1.00 0.00 O +ATOM 212 HW1 SOL 70 10.092 28.529 24.042 1.00 0.00 H +ATOM 213 HW2 SOL 70 10.103 30.057 23.672 1.00 0.00 H +ATOM 214 OW SOL 71 20.974 26.571 12.738 1.00 0.00 O +ATOM 215 HW1 SOL 71 21.250 26.511 11.779 1.00 0.00 H +ATOM 216 HW2 SOL 71 20.503 27.452 12.792 1.00 0.00 H +ATOM 217 OW SOL 72 19.050 11.882 24.746 1.00 0.00 O +ATOM 218 HW1 SOL 72 18.512 11.125 24.374 1.00 0.00 H +ATOM 219 HW2 SOL 72 19.945 11.769 24.315 1.00 0.00 H +ATOM 220 OW SOL 73 16.829 19.778 32.330 1.00 0.00 O +ATOM 221 HW1 SOL 73 16.123 20.115 32.953 1.00 0.00 H +ATOM 222 HW2 SOL 73 17.160 20.606 31.878 1.00 0.00 H +ATOM 223 OW SOL 74 27.194 11.819 10.655 1.00 0.00 O +ATOM 224 HW1 SOL 74 27.283 11.033 11.266 1.00 0.00 H +ATOM 225 HW2 SOL 74 26.907 12.560 11.262 1.00 0.00 H +ATOM 226 OW SOL 75 9.143 26.922 18.015 1.00 0.00 O +ATOM 227 HW1 SOL 75 9.732 26.265 18.486 1.00 0.00 H +ATOM 228 HW2 SOL 75 8.240 26.494 18.047 1.00 0.00 H +ATOM 229 OW SOL 76 24.798 18.634 30.721 1.00 0.00 O +ATOM 230 HW1 SOL 76 24.248 18.074 30.101 1.00 0.00 H +ATOM 231 HW2 SOL 76 25.641 18.795 30.208 1.00 0.00 H +ATOM 232 OW SOL 77 19.713 11.078 9.455 1.00 0.00 O +ATOM 233 HW1 SOL 77 19.886 10.367 10.137 1.00 0.00 H +ATOM 234 HW2 SOL 77 19.629 11.912 10.000 1.00 0.00 H +ATOM 235 OW SOL 78 19.949 16.434 18.234 1.00 0.00 O +ATOM 236 HW1 SOL 78 20.849 16.785 17.978 1.00 0.00 H +ATOM 237 HW2 SOL 78 19.360 16.720 17.479 1.00 0.00 H +ATOM 238 OW SOL 79 26.100 20.094 24.860 1.00 0.00 O +ATOM 239 HW1 SOL 79 25.929 20.125 23.875 1.00 0.00 H +ATOM 240 HW2 SOL 79 27.079 19.902 24.923 1.00 0.00 H +ATOM 241 OW SOL 80 28.245 23.176 16.401 1.00 0.00 O +ATOM 242 HW1 SOL 80 29.089 23.075 16.928 1.00 0.00 H +ATOM 243 HW2 SOL 80 27.898 22.241 16.330 1.00 0.00 H +ATOM 244 OW SOL 81 23.429 7.658 15.115 1.00 0.00 O +ATOM 245 HW1 SOL 81 23.809 7.098 14.379 1.00 0.00 H +ATOM 246 HW2 SOL 81 22.872 8.334 14.633 1.00 0.00 H +ATOM 247 OW SOL 82 10.552 26.955 16.715 1.00 0.00 O +ATOM 248 HW1 SOL 82 10.884 27.105 15.784 1.00 0.00 H +ATOM 249 HW2 SOL 82 10.537 27.873 17.111 1.00 0.00 H +ATOM 250 OW SOL 83 16.927 19.868 15.041 1.00 0.00 O +ATOM 251 HW1 SOL 83 17.297 20.069 14.134 1.00 0.00 H +ATOM 252 HW2 SOL 83 17.447 19.066 15.335 1.00 0.00 H +ATOM 253 OW SOL 84 13.998 26.748 24.005 1.00 0.00 O +ATOM 254 HW1 SOL 84 13.596 25.972 23.519 1.00 0.00 H +ATOM 255 HW2 SOL 84 13.297 27.458 23.937 1.00 0.00 H +ATOM 256 OW SOL 85 14.352 31.295 25.838 1.00 0.00 O +ATOM 257 HW1 SOL 85 13.403 31.109 25.586 1.00 0.00 H +ATOM 258 HW2 SOL 85 14.735 31.719 25.018 1.00 0.00 H +ATOM 259 OW SOL 86 25.245 18.847 22.053 1.00 0.00 O +ATOM 260 HW1 SOL 86 24.739 19.112 22.874 1.00 0.00 H +ATOM 261 HW2 SOL 86 24.714 18.083 21.686 1.00 0.00 H +ATOM 262 OW SOL 87 18.110 19.707 19.148 1.00 0.00 O +ATOM 263 HW1 SOL 87 18.008 20.702 19.124 1.00 0.00 H +ATOM 264 HW2 SOL 87 17.670 19.405 18.303 1.00 0.00 H +ATOM 265 OW SOL 88 18.407 29.100 15.428 1.00 0.00 O +ATOM 266 HW1 SOL 88 17.629 28.693 15.907 1.00 0.00 H +ATOM 267 HW2 SOL 88 18.057 29.264 14.506 1.00 0.00 H +ATOM 268 OW SOL 89 21.496 27.940 30.924 1.00 0.00 O +ATOM 269 HW1 SOL 89 22.219 28.126 31.589 1.00 0.00 H +ATOM 270 HW2 SOL 89 21.009 27.160 31.317 1.00 0.00 H +ATOM 271 OW SOL 90 21.396 23.151 19.398 1.00 0.00 O +ATOM 272 HW1 SOL 90 22.203 22.959 18.839 1.00 0.00 H +ATOM 273 HW2 SOL 90 21.351 24.150 19.414 1.00 0.00 H +ATOM 274 OW SOL 91 32.625 27.206 21.159 1.00 0.00 O +ATOM 275 HW1 SOL 91 32.437 26.355 21.649 1.00 0.00 H +ATOM 276 HW2 SOL 91 31.757 27.700 21.202 1.00 0.00 H +ATOM 277 OW SOL 92 28.432 18.158 21.287 1.00 0.00 O +ATOM 278 HW1 SOL 92 28.045 18.046 20.373 1.00 0.00 H +ATOM 279 HW2 SOL 92 27.657 17.989 21.895 1.00 0.00 H +ATOM 280 OW SOL 93 21.854 13.532 15.062 1.00 0.00 O +ATOM 281 HW1 SOL 93 22.622 14.072 15.406 1.00 0.00 H +ATOM 282 HW2 SOL 93 21.496 13.083 15.881 1.00 0.00 H +ATOM 283 OW SOL 94 24.782 18.353 11.187 1.00 0.00 O +ATOM 284 HW1 SOL 94 25.623 17.860 10.966 1.00 0.00 H +ATOM 285 HW2 SOL 94 24.721 19.048 10.471 1.00 0.00 H +ATOM 286 OW SOL 95 18.737 27.913 27.854 1.00 0.00 O +ATOM 287 HW1 SOL 95 19.078 27.134 28.380 1.00 0.00 H +ATOM 288 HW2 SOL 95 18.398 28.541 28.555 1.00 0.00 H +ATOM 289 OW SOL 96 18.869 14.640 29.839 1.00 0.00 O +ATOM 290 HW1 SOL 96 17.889 14.819 29.925 1.00 0.00 H +ATOM 291 HW2 SOL 96 19.162 14.476 30.781 1.00 0.00 H +ATOM 292 OW SOL 97 15.633 29.145 19.667 1.00 0.00 O +ATOM 293 HW1 SOL 97 16.374 28.912 20.297 1.00 0.00 H +ATOM 294 HW2 SOL 97 14.874 29.383 20.273 1.00 0.00 H +ATOM 295 OW SOL 98 17.231 13.661 27.274 1.00 0.00 O +ATOM 296 HW1 SOL 98 17.386 14.182 28.113 1.00 0.00 H +ATOM 297 HW2 SOL 98 17.027 12.739 27.603 1.00 0.00 H +ATOM 298 OW SOL 99 22.474 9.875 11.065 1.00 0.00 O +ATOM 299 HW1 SOL 99 22.471 10.847 10.828 1.00 0.00 H +ATOM 300 HW2 SOL 99 23.197 9.495 10.488 1.00 0.00 H +ATOM 301 OW SOL 100 9.546 17.626 27.369 1.00 0.00 O +ATOM 302 HW1 SOL 100 9.197 18.507 27.050 1.00 0.00 H +ATOM 303 HW2 SOL 100 9.858 17.179 26.530 1.00 0.00 H +ATOM 304 OW SOL 101 29.435 20.599 25.289 1.00 0.00 O +ATOM 305 HW1 SOL 101 29.100 21.122 24.506 1.00 0.00 H +ATOM 306 HW2 SOL 101 29.952 19.852 24.871 1.00 0.00 H +ATOM 307 OW SOL 102 16.859 24.623 17.953 1.00 0.00 O +ATOM 308 HW1 SOL 102 16.278 24.398 17.171 1.00 0.00 H +ATOM 309 HW2 SOL 102 17.749 24.814 17.538 1.00 0.00 H +ATOM 310 OW SOL 103 22.411 17.494 8.922 1.00 0.00 O +ATOM 311 HW1 SOL 103 22.525 17.755 7.964 1.00 0.00 H +ATOM 312 HW2 SOL 103 23.034 16.721 9.033 1.00 0.00 H +ATOM 313 OW SOL 104 27.718 17.918 18.028 1.00 0.00 O +ATOM 314 HW1 SOL 104 27.794 18.719 18.621 1.00 0.00 H +ATOM 315 HW2 SOL 104 26.973 17.390 18.437 1.00 0.00 H +ATOM 316 OW SOL 105 19.428 28.867 22.791 1.00 0.00 O +ATOM 317 HW1 SOL 105 20.268 29.090 23.285 1.00 0.00 H +ATOM 318 HW2 SOL 105 18.738 28.811 23.513 1.00 0.00 H +ATOM 319 OW SOL 106 10.198 24.333 21.376 1.00 0.00 O +ATOM 320 HW1 SOL 106 10.435 23.555 21.958 1.00 0.00 H +ATOM 321 HW2 SOL 106 10.262 25.117 21.992 1.00 0.00 H +ATOM 322 OW SOL 107 22.196 18.465 31.449 1.00 0.00 O +ATOM 323 HW1 SOL 107 22.006 17.752 30.774 1.00 0.00 H +ATOM 324 HW2 SOL 107 22.312 19.289 30.895 1.00 0.00 H +ATOM 325 OW SOL 108 19.177 16.695 28.844 1.00 0.00 O +ATOM 326 HW1 SOL 108 18.541 17.348 29.254 1.00 0.00 H +ATOM 327 HW2 SOL 108 18.616 16.205 28.178 1.00 0.00 H +ATOM 328 OW SOL 109 14.256 13.056 21.586 1.00 0.00 O +ATOM 329 HW1 SOL 109 14.417 12.261 21.002 1.00 0.00 H +ATOM 330 HW2 SOL 109 13.308 13.307 21.387 1.00 0.00 H +ATOM 331 OW SOL 110 19.769 17.841 19.874 1.00 0.00 O +ATOM 332 HW1 SOL 110 20.206 17.669 20.757 1.00 0.00 H +ATOM 333 HW2 SOL 110 18.942 18.349 20.116 1.00 0.00 H +ATOM 334 OW SOL 111 19.177 24.021 24.409 1.00 0.00 O +ATOM 335 HW1 SOL 111 18.930 24.860 24.895 1.00 0.00 H +ATOM 336 HW2 SOL 111 19.348 23.365 25.144 1.00 0.00 H +ATOM 337 OW SOL 112 13.128 19.682 21.718 1.00 0.00 O +ATOM 338 HW1 SOL 112 12.916 20.560 21.288 1.00 0.00 H +ATOM 339 HW2 SOL 112 13.991 19.413 21.292 1.00 0.00 H +ATOM 340 OW SOL 113 24.265 10.766 24.493 1.00 0.00 O +ATOM 341 HW1 SOL 113 24.149 11.305 25.328 1.00 0.00 H +ATOM 342 HW2 SOL 113 24.889 10.035 24.769 1.00 0.00 H +ATOM 343 OW SOL 114 15.224 12.544 26.191 1.00 0.00 O +ATOM 344 HW1 SOL 114 14.815 12.639 25.284 1.00 0.00 H +ATOM 345 HW2 SOL 114 15.905 11.822 26.067 1.00 0.00 H +ATOM 346 OW SOL 115 16.171 28.128 25.166 1.00 0.00 O +ATOM 347 HW1 SOL 115 15.398 28.548 25.641 1.00 0.00 H +ATOM 348 HW2 SOL 115 16.066 27.153 25.360 1.00 0.00 H +ATOM 349 OW SOL 116 16.179 7.973 18.838 1.00 0.00 O +ATOM 350 HW1 SOL 116 15.811 8.610 19.516 1.00 0.00 H +ATOM 351 HW2 SOL 116 17.002 7.611 19.277 1.00 0.00 H +ATOM 352 OW SOL 117 14.860 10.741 22.956 1.00 0.00 O +ATOM 353 HW1 SOL 117 14.672 10.505 22.002 1.00 0.00 H +ATOM 354 HW2 SOL 117 14.057 11.269 23.231 1.00 0.00 H +ATOM 355 OW SOL 118 20.264 22.364 7.812 1.00 0.00 O +ATOM 356 HW1 SOL 118 20.097 22.151 6.850 1.00 0.00 H +ATOM 357 HW2 SOL 118 21.123 21.893 8.013 1.00 0.00 H +ATOM 358 OW SOL 119 14.432 13.841 28.501 1.00 0.00 O +ATOM 359 HW1 SOL 119 14.895 13.802 27.616 1.00 0.00 H +ATOM 360 HW2 SOL 119 13.754 13.108 28.445 1.00 0.00 H +ATOM 361 OW SOL 120 23.949 28.612 28.421 1.00 0.00 O +ATOM 362 HW1 SOL 120 23.700 29.051 29.285 1.00 0.00 H +ATOM 363 HW2 SOL 120 23.114 28.673 27.876 1.00 0.00 H +ATOM 364 OW SOL 121 24.860 26.234 15.593 1.00 0.00 O +ATOM 365 HW1 SOL 121 24.021 26.709 15.327 1.00 0.00 H +ATOM 366 HW2 SOL 121 24.678 25.941 16.531 1.00 0.00 H +ATOM 367 OW SOL 122 13.994 20.898 31.066 1.00 0.00 O +ATOM 368 HW1 SOL 122 14.720 21.484 30.705 1.00 0.00 H +ATOM 369 HW2 SOL 122 14.403 20.493 31.884 1.00 0.00 H +ATOM 370 OW SOL 123 19.763 31.059 19.445 1.00 0.00 O +ATOM 371 HW1 SOL 123 18.818 31.118 19.767 1.00 0.00 H +ATOM 372 HW2 SOL 123 20.274 30.793 20.262 1.00 0.00 H +ATOM 373 OW SOL 124 15.319 22.439 27.337 1.00 0.00 O +ATOM 374 HW1 SOL 124 15.956 23.111 27.716 1.00 0.00 H +ATOM 375 HW2 SOL 124 14.687 22.262 28.091 1.00 0.00 H +ATOM 376 OW SOL 125 22.320 32.061 22.179 1.00 0.00 O +ATOM 377 HW1 SOL 125 22.491 31.137 21.839 1.00 0.00 H +ATOM 378 HW2 SOL 125 22.019 32.560 21.367 1.00 0.00 H +ATOM 379 OW SOL 126 27.110 12.879 27.942 1.00 0.00 O +ATOM 380 HW1 SOL 126 26.163 12.568 27.865 1.00 0.00 H +ATOM 381 HW2 SOL 126 27.090 13.507 28.719 1.00 0.00 H +ATOM 382 OW SOL 127 9.308 20.552 15.865 1.00 0.00 O +ATOM 383 HW1 SOL 127 8.830 21.419 15.729 1.00 0.00 H +ATOM 384 HW2 SOL 127 9.870 20.716 16.675 1.00 0.00 H +ATOM 385 OW SOL 128 8.347 18.938 14.159 1.00 0.00 O +ATOM 386 HW1 SOL 128 9.293 18.804 13.864 1.00 0.00 H +ATOM 387 HW2 SOL 128 8.389 18.811 15.149 1.00 0.00 H +ATOM 388 OW SOL 129 24.213 29.125 21.625 1.00 0.00 O +ATOM 389 HW1 SOL 129 23.525 29.555 21.040 1.00 0.00 H +ATOM 390 HW2 SOL 129 25.014 29.053 21.031 1.00 0.00 H +ATOM 391 OW SOL 130 15.833 23.752 32.917 1.00 0.00 O +ATOM 392 HW1 SOL 130 14.936 24.157 32.743 1.00 0.00 H +ATOM 393 HW2 SOL 130 15.904 23.030 32.229 1.00 0.00 H +ATOM 394 OW SOL 131 16.075 23.397 13.754 1.00 0.00 O +ATOM 395 HW1 SOL 131 16.295 24.212 14.289 1.00 0.00 H +ATOM 396 HW2 SOL 131 16.944 22.904 13.705 1.00 0.00 H +ATOM 397 OW SOL 132 20.326 20.875 18.699 1.00 0.00 O +ATOM 398 HW1 SOL 132 20.765 21.712 18.372 1.00 0.00 H +ATOM 399 HW2 SOL 132 20.345 20.271 17.903 1.00 0.00 H +ATOM 400 OW SOL 133 9.929 15.192 16.898 1.00 0.00 O +ATOM 401 HW1 SOL 133 10.630 15.898 16.998 1.00 0.00 H +ATOM 402 HW2 SOL 133 9.460 15.197 17.781 1.00 0.00 H +ATOM 403 OW SOL 134 16.787 20.325 25.209 1.00 0.00 O +ATOM 404 HW1 SOL 134 16.624 20.233 26.192 1.00 0.00 H +ATOM 405 HW2 SOL 134 17.637 20.849 25.159 1.00 0.00 H +ATOM 406 OW SOL 135 17.520 21.373 23.048 1.00 0.00 O +ATOM 407 HW1 SOL 135 16.601 21.519 23.412 1.00 0.00 H +ATOM 408 HW2 SOL 135 17.589 22.039 22.305 1.00 0.00 H +ATOM 409 OW SOL 136 23.555 18.200 32.700 1.00 0.00 O +ATOM 410 HW1 SOL 136 23.865 19.126 32.915 1.00 0.00 H +ATOM 411 HW2 SOL 136 23.912 17.651 33.456 1.00 0.00 H +ATOM 412 OW SOL 137 23.805 17.377 24.654 1.00 0.00 O +ATOM 413 HW1 SOL 137 22.966 16.841 24.563 1.00 0.00 H +ATOM 414 HW2 SOL 137 24.198 17.057 25.515 1.00 0.00 H +ATOM 415 OW SOL 138 26.351 32.443 20.268 1.00 0.00 O +ATOM 416 HW1 SOL 138 25.929 32.467 19.362 1.00 0.00 H +ATOM 417 HW2 SOL 138 26.686 31.505 20.348 1.00 0.00 H +ATOM 418 OW SOL 139 29.387 20.828 17.230 1.00 0.00 O +ATOM 419 HW1 SOL 139 28.756 20.608 17.974 1.00 0.00 H +ATOM 420 HW2 SOL 139 29.627 19.934 16.852 1.00 0.00 H +ATOM 421 OW SOL 140 14.191 23.512 23.343 1.00 0.00 O +ATOM 422 HW1 SOL 140 14.176 23.411 22.348 1.00 0.00 H +ATOM 423 HW2 SOL 140 14.034 22.582 23.676 1.00 0.00 H +ATOM 424 OW SOL 141 15.756 15.625 22.699 1.00 0.00 O +ATOM 425 HW1 SOL 141 15.667 16.593 22.933 1.00 0.00 H +ATOM 426 HW2 SOL 141 15.942 15.186 23.577 1.00 0.00 H +ATOM 427 OW SOL 142 20.510 13.333 11.927 1.00 0.00 O +ATOM 428 HW1 SOL 142 20.283 14.306 11.925 1.00 0.00 H +ATOM 429 HW2 SOL 142 20.679 13.131 12.892 1.00 0.00 H +ATOM 430 OW SOL 143 24.585 21.862 22.891 1.00 0.00 O +ATOM 431 HW1 SOL 143 24.215 21.242 23.583 1.00 0.00 H +ATOM 432 HW2 SOL 143 24.284 21.457 22.027 1.00 0.00 H +ATOM 433 OW SOL 144 19.090 26.889 31.259 1.00 0.00 O +ATOM 434 HW1 SOL 144 18.787 27.543 30.565 1.00 0.00 H +ATOM 435 HW2 SOL 144 19.301 27.464 32.049 1.00 0.00 H +ATOM 436 OW SOL 145 7.500 15.159 18.426 1.00 0.00 O +ATOM 437 HW1 SOL 145 8.026 14.423 18.852 1.00 0.00 H +ATOM 438 HW2 SOL 145 7.359 15.810 19.171 1.00 0.00 H +ATOM 439 OW SOL 146 27.618 20.029 10.797 1.00 0.00 O +ATOM 440 HW1 SOL 146 28.084 19.652 9.998 1.00 0.00 H +ATOM 441 HW2 SOL 146 26.728 19.574 10.788 1.00 0.00 H +ATOM 442 OW SOL 147 11.282 12.159 12.611 1.00 0.00 O +ATOM 443 HW1 SOL 147 11.736 11.951 13.478 1.00 0.00 H +ATOM 444 HW2 SOL 147 10.338 11.869 12.764 1.00 0.00 H +ATOM 445 OW SOL 148 15.008 16.634 8.329 1.00 0.00 O +ATOM 446 HW1 SOL 148 14.565 17.240 8.990 1.00 0.00 H +ATOM 447 HW2 SOL 148 14.744 17.017 7.444 1.00 0.00 H +ATOM 448 OW SOL 149 29.329 17.460 13.545 1.00 0.00 O +ATOM 449 HW1 SOL 149 29.799 16.662 13.921 1.00 0.00 H +ATOM 450 HW2 SOL 149 29.197 18.052 14.340 1.00 0.00 H +ATOM 451 OW SOL 150 11.143 29.847 21.994 1.00 0.00 O +ATOM 452 HW1 SOL 150 11.288 29.066 21.386 1.00 0.00 H +ATOM 453 HW2 SOL 150 11.125 30.629 21.372 1.00 0.00 H +ATOM 454 OW SOL 151 12.115 21.477 18.277 1.00 0.00 O +ATOM 455 HW1 SOL 151 13.049 21.751 18.052 1.00 0.00 H +ATOM 456 HW2 SOL 151 11.688 21.338 17.383 1.00 0.00 H +ATOM 457 OW SOL 152 22.610 13.864 17.470 1.00 0.00 O +ATOM 458 HW1 SOL 152 22.705 12.875 17.359 1.00 0.00 H +ATOM 459 HW2 SOL 152 22.548 13.985 18.461 1.00 0.00 H +ATOM 460 OW SOL 153 29.100 16.537 16.520 1.00 0.00 O +ATOM 461 HW1 SOL 153 28.138 16.665 16.280 1.00 0.00 H +ATOM 462 HW2 SOL 153 29.337 15.667 16.089 1.00 0.00 H +ATOM 463 OW SOL 154 12.381 21.642 14.486 1.00 0.00 O +ATOM 464 HW1 SOL 154 13.077 20.974 14.750 1.00 0.00 H +ATOM 465 HW2 SOL 154 11.884 21.814 15.337 1.00 0.00 H +ATOM 466 OW SOL 155 31.757 13.163 21.010 1.00 0.00 O +ATOM 467 HW1 SOL 155 31.139 13.597 21.665 1.00 0.00 H +ATOM 468 HW2 SOL 155 32.466 12.758 21.587 1.00 0.00 H +ATOM 469 OW SOL 156 21.536 18.257 25.616 1.00 0.00 O +ATOM 470 HW1 SOL 156 21.932 18.565 26.481 1.00 0.00 H +ATOM 471 HW2 SOL 156 22.086 18.726 24.925 1.00 0.00 H +ATOM 472 OW SOL 157 20.543 27.375 25.907 1.00 0.00 O +ATOM 473 HW1 SOL 157 19.895 26.941 26.533 1.00 0.00 H +ATOM 474 HW2 SOL 157 21.169 27.861 26.515 1.00 0.00 H +ATOM 475 OW SOL 158 13.721 27.318 16.382 1.00 0.00 O +ATOM 476 HW1 SOL 158 12.766 27.561 16.555 1.00 0.00 H +ATOM 477 HW2 SOL 158 14.081 27.115 17.292 1.00 0.00 H +ATOM 478 OW SOL 159 11.109 14.336 28.727 1.00 0.00 O +ATOM 479 HW1 SOL 159 10.922 15.263 29.051 1.00 0.00 H +ATOM 480 HW2 SOL 159 11.994 14.116 29.138 1.00 0.00 H +ATOM 481 OW SOL 160 7.998 25.909 14.509 1.00 0.00 O +ATOM 482 HW1 SOL 160 7.826 25.064 14.002 1.00 0.00 H +ATOM 483 HW2 SOL 160 8.506 26.475 13.860 1.00 0.00 H +ATOM 484 OW SOL 161 25.404 24.209 13.944 1.00 0.00 O +ATOM 485 HW1 SOL 161 25.354 23.381 14.502 1.00 0.00 H +ATOM 486 HW2 SOL 161 26.173 24.712 14.336 1.00 0.00 H +ATOM 487 OW SOL 162 24.844 25.891 26.881 1.00 0.00 O +ATOM 488 HW1 SOL 162 25.424 25.089 27.018 1.00 0.00 H +ATOM 489 HW2 SOL 162 24.491 25.772 25.953 1.00 0.00 H +ATOM 490 OW SOL 163 14.619 20.558 23.171 1.00 0.00 O +ATOM 491 HW1 SOL 163 15.041 20.548 24.077 1.00 0.00 H +ATOM 492 HW2 SOL 163 13.641 20.481 23.366 1.00 0.00 H +ATOM 493 OW SOL 164 27.083 10.805 27.618 1.00 0.00 O +ATOM 494 HW1 SOL 164 27.958 10.356 27.439 1.00 0.00 H +ATOM 495 HW2 SOL 164 26.964 10.702 28.606 1.00 0.00 H +ATOM 496 OW SOL 165 23.957 28.645 23.912 1.00 0.00 O +ATOM 497 HW1 SOL 165 23.636 27.724 23.693 1.00 0.00 H +ATOM 498 HW2 SOL 165 24.334 28.551 24.833 1.00 0.00 H +ATOM 499 OW SOL 166 21.857 28.095 24.745 1.00 0.00 O +ATOM 500 HW1 SOL 166 21.651 27.780 23.818 1.00 0.00 H +ATOM 501 HW2 SOL 166 22.393 27.346 25.134 1.00 0.00 H +ATOM 502 OW SOL 167 14.267 8.489 17.721 1.00 0.00 O +ATOM 503 HW1 SOL 167 14.806 9.323 17.839 1.00 0.00 H +ATOM 504 HW2 SOL 167 14.352 8.289 16.745 1.00 0.00 H +ATOM 505 OW SOL 168 15.230 32.590 23.368 1.00 0.00 O +ATOM 506 HW1 SOL 168 15.697 33.435 23.630 1.00 0.00 H +ATOM 507 HW2 SOL 168 15.330 32.564 22.374 1.00 0.00 H +ATOM 508 OW SOL 169 20.692 18.024 12.789 1.00 0.00 O +ATOM 509 HW1 SOL 169 20.383 17.682 13.676 1.00 0.00 H +ATOM 510 HW2 SOL 169 21.344 17.331 12.483 1.00 0.00 H +ATOM 511 OW SOL 170 20.941 14.283 32.482 1.00 0.00 O +ATOM 512 HW1 SOL 170 20.807 15.094 31.913 1.00 0.00 H +ATOM 513 HW2 SOL 170 21.798 13.896 32.144 1.00 0.00 H +ATOM 514 OW SOL 171 20.572 24.087 21.759 1.00 0.00 O +ATOM 515 HW1 SOL 171 20.177 24.703 21.078 1.00 0.00 H +ATOM 516 HW2 SOL 171 21.047 23.401 21.209 1.00 0.00 H +ATOM 517 OW SOL 172 27.011 21.983 12.689 1.00 0.00 O +ATOM 518 HW1 SOL 172 26.589 21.796 13.576 1.00 0.00 H +ATOM 519 HW2 SOL 172 27.502 21.138 12.478 1.00 0.00 H +ATOM 520 OW SOL 173 27.873 21.492 26.173 1.00 0.00 O +ATOM 521 HW1 SOL 173 28.092 21.918 27.051 1.00 0.00 H +ATOM 522 HW2 SOL 173 26.908 21.715 26.036 1.00 0.00 H +ATOM 523 OW SOL 174 18.801 23.348 22.703 1.00 0.00 O +ATOM 524 HW1 SOL 174 18.700 24.180 22.157 1.00 0.00 H +ATOM 525 HW2 SOL 174 19.279 22.720 22.089 1.00 0.00 H +ATOM 526 OW SOL 175 28.842 13.423 18.022 1.00 0.00 O +ATOM 527 HW1 SOL 175 28.740 12.648 18.646 1.00 0.00 H +ATOM 528 HW2 SOL 175 28.519 14.202 18.559 1.00 0.00 H +ATOM 529 OW SOL 176 25.404 27.238 13.894 1.00 0.00 O +ATOM 530 HW1 SOL 176 25.057 28.141 13.642 1.00 0.00 H +ATOM 531 HW2 SOL 176 25.068 26.644 13.164 1.00 0.00 H +ATOM 532 OW SOL 177 13.648 31.004 20.523 1.00 0.00 O +ATOM 533 HW1 SOL 177 14.154 31.859 20.403 1.00 0.00 H +ATOM 534 HW2 SOL 177 13.311 30.798 19.605 1.00 0.00 H +ATOM 535 OW SOL 178 14.229 17.416 17.143 1.00 0.00 O +ATOM 536 HW1 SOL 178 13.948 16.941 16.310 1.00 0.00 H +ATOM 537 HW2 SOL 178 15.227 17.369 17.117 1.00 0.00 H +ATOM 538 OW SOL 179 15.646 10.903 29.696 1.00 0.00 O +ATOM 539 HW1 SOL 179 16.138 11.535 29.097 1.00 0.00 H +ATOM 540 HW2 SOL 179 16.141 10.966 30.562 1.00 0.00 H +ATOM 541 OW SOL 180 19.621 22.063 14.117 1.00 0.00 O +ATOM 542 HW1 SOL 180 19.137 22.720 14.695 1.00 0.00 H +ATOM 543 HW2 SOL 180 19.979 21.395 14.768 1.00 0.00 H +ATOM 544 OW SOL 181 30.397 26.314 19.886 1.00 0.00 O +ATOM 545 HW1 SOL 181 30.779 26.155 20.796 1.00 0.00 H +ATOM 546 HW2 SOL 181 30.028 25.421 19.626 1.00 0.00 H +ATOM 547 OW SOL 182 19.674 13.424 22.478 1.00 0.00 O +ATOM 548 HW1 SOL 182 18.963 12.986 21.929 1.00 0.00 H +ATOM 549 HW2 SOL 182 20.211 13.934 21.806 1.00 0.00 H +ATOM 550 OW SOL 183 18.668 14.883 20.010 1.00 0.00 O +ATOM 551 HW1 SOL 183 18.273 14.187 20.610 1.00 0.00 H +ATOM 552 HW2 SOL 183 19.045 15.557 20.645 1.00 0.00 H +ATOM 553 OW SOL 184 17.034 29.023 9.488 1.00 0.00 O +ATOM 554 HW1 SOL 184 17.506 29.166 10.358 1.00 0.00 H +ATOM 555 HW2 SOL 184 17.634 28.392 8.995 1.00 0.00 H +ATOM 556 OW SOL 185 22.961 20.786 25.713 1.00 0.00 O +ATOM 557 HW1 SOL 185 22.731 20.546 24.770 1.00 0.00 H +ATOM 558 HW2 SOL 185 22.071 20.838 26.166 1.00 0.00 H +ATOM 559 OW SOL 186 26.286 17.329 31.213 1.00 0.00 O +ATOM 560 HW1 SOL 186 26.404 17.825 32.073 1.00 0.00 H +ATOM 561 HW2 SOL 186 26.241 16.371 31.498 1.00 0.00 H +ATOM 562 OW SOL 187 27.580 14.914 14.672 1.00 0.00 O +ATOM 563 HW1 SOL 187 27.811 14.051 15.121 1.00 0.00 H +ATOM 564 HW2 SOL 187 27.719 14.720 13.701 1.00 0.00 H +ATOM 565 OW SOL 188 23.031 33.085 25.667 1.00 0.00 O +ATOM 566 HW1 SOL 188 23.825 32.541 25.398 1.00 0.00 H +ATOM 567 HW2 SOL 188 22.449 33.071 24.854 1.00 0.00 H +ATOM 568 OW SOL 189 15.597 15.370 30.674 1.00 0.00 O +ATOM 569 HW1 SOL 189 15.625 16.152 31.297 1.00 0.00 H +ATOM 570 HW2 SOL 189 15.518 14.583 31.286 1.00 0.00 H +ATOM 571 OW SOL 190 16.883 26.648 31.638 1.00 0.00 O +ATOM 572 HW1 SOL 190 16.297 26.276 32.357 1.00 0.00 H +ATOM 573 HW2 SOL 190 16.832 27.637 31.780 1.00 0.00 H +ATOM 574 OW SOL 191 19.861 24.244 32.586 1.00 0.00 O +ATOM 575 HW1 SOL 191 19.950 23.992 31.623 1.00 0.00 H +ATOM 576 HW2 SOL 191 20.144 25.202 32.606 1.00 0.00 H +ATOM 577 OW SOL 192 15.257 9.758 26.764 1.00 0.00 O +ATOM 578 HW1 SOL 192 14.827 10.581 27.136 1.00 0.00 H +ATOM 579 HW2 SOL 192 16.212 10.027 26.639 1.00 0.00 H +ATOM 580 OW SOL 193 21.738 19.826 33.281 1.00 0.00 O +ATOM 581 HW1 SOL 193 22.076 20.323 32.483 1.00 0.00 H +ATOM 582 HW2 SOL 193 20.856 20.258 33.472 1.00 0.00 H +ATOM 583 OW SOL 194 10.469 18.366 28.899 1.00 0.00 O +ATOM 584 HW1 SOL 194 11.297 18.486 28.352 1.00 0.00 H +ATOM 585 HW2 SOL 194 10.007 19.250 28.826 1.00 0.00 H +ATOM 586 OW SOL 195 19.058 31.288 28.229 1.00 0.00 O +ATOM 587 HW1 SOL 195 18.137 31.553 28.515 1.00 0.00 H +ATOM 588 HW2 SOL 195 19.157 31.712 27.329 1.00 0.00 H +ATOM 589 OW SOL 196 15.716 28.774 16.471 1.00 0.00 O +ATOM 590 HW1 SOL 196 15.871 28.372 17.373 1.00 0.00 H +ATOM 591 HW2 SOL 196 14.924 29.367 16.610 1.00 0.00 H +ATOM 592 OW SOL 197 15.165 21.070 10.861 1.00 0.00 O +ATOM 593 HW1 SOL 197 14.773 20.723 11.713 1.00 0.00 H +ATOM 594 HW2 SOL 197 14.363 21.299 10.309 1.00 0.00 H +ATOM 595 OW SOL 198 18.682 30.296 17.929 1.00 0.00 O +ATOM 596 HW1 SOL 198 18.616 30.245 16.933 1.00 0.00 H +ATOM 597 HW2 SOL 198 19.420 29.658 18.149 1.00 0.00 H +ATOM 598 OW SOL 199 25.446 15.251 13.605 1.00 0.00 O +ATOM 599 HW1 SOL 199 25.367 14.695 12.778 1.00 0.00 H +ATOM 600 HW2 SOL 199 25.061 14.668 14.320 1.00 0.00 H +ATOM 601 OW SOL 200 25.596 23.079 27.017 1.00 0.00 O +ATOM 602 HW1 SOL 200 24.713 23.143 27.480 1.00 0.00 H +ATOM 603 HW2 SOL 200 26.235 22.861 27.754 1.00 0.00 H +ATOM 604 OW SOL 201 23.494 11.771 21.543 1.00 0.00 O +ATOM 605 HW1 SOL 201 23.982 12.630 21.693 1.00 0.00 H +ATOM 606 HW2 SOL 201 24.210 11.143 21.237 1.00 0.00 H +ATOM 607 OW SOL 202 26.800 29.112 25.566 1.00 0.00 O +ATOM 608 HW1 SOL 202 26.671 30.102 25.515 1.00 0.00 H +ATOM 609 HW2 SOL 202 26.164 28.828 26.284 1.00 0.00 H +ATOM 610 OW SOL 203 26.261 24.860 10.711 1.00 0.00 O +ATOM 611 HW1 SOL 203 26.533 25.358 11.534 1.00 0.00 H +ATOM 612 HW2 SOL 203 27.110 24.432 10.402 1.00 0.00 H +ATOM 613 OW SOL 204 9.456 24.988 15.424 1.00 0.00 O +ATOM 614 HW1 SOL 204 10.300 24.942 15.958 1.00 0.00 H +ATOM 615 HW2 SOL 204 8.761 25.229 16.101 1.00 0.00 H +ATOM 616 OW SOL 205 21.383 27.255 22.046 1.00 0.00 O +ATOM 617 HW1 SOL 205 20.602 26.772 21.650 1.00 0.00 H +ATOM 618 HW2 SOL 205 22.099 26.558 22.080 1.00 0.00 H +ATOM 619 OW SOL 206 14.538 22.985 19.831 1.00 0.00 O +ATOM 620 HW1 SOL 206 13.872 23.579 20.283 1.00 0.00 H +ATOM 621 HW2 SOL 206 15.176 22.748 20.563 1.00 0.00 H +ATOM 622 OW SOL 207 12.256 23.724 21.874 1.00 0.00 O +ATOM 623 HW1 SOL 207 12.712 24.484 22.336 1.00 0.00 H +ATOM 624 HW2 SOL 207 12.160 23.034 22.592 1.00 0.00 H +ATOM 625 OW SOL 208 17.301 22.623 16.712 1.00 0.00 O +ATOM 626 HW1 SOL 208 16.786 22.266 15.933 1.00 0.00 H +ATOM 627 HW2 SOL 208 16.708 22.435 17.494 1.00 0.00 H +ATOM 628 OW SOL 209 27.289 17.023 25.562 1.00 0.00 O +ATOM 629 HW1 SOL 209 27.950 17.324 26.250 1.00 0.00 H +ATOM 630 HW2 SOL 209 26.475 16.802 26.098 1.00 0.00 H +ATOM 631 OW SOL 210 12.046 11.028 23.486 1.00 0.00 O +ATOM 632 HW1 SOL 210 12.209 11.923 23.901 1.00 0.00 H +ATOM 633 HW2 SOL 210 11.256 11.184 22.893 1.00 0.00 H +ATOM 634 OW SOL 211 12.971 23.755 12.904 1.00 0.00 O +ATOM 635 HW1 SOL 211 13.462 22.993 13.326 1.00 0.00 H +ATOM 636 HW2 SOL 211 12.946 23.511 11.935 1.00 0.00 H +ATOM 637 OW SOL 212 18.713 14.967 23.853 1.00 0.00 O +ATOM 638 HW1 SOL 212 18.097 15.333 23.155 1.00 0.00 H +ATOM 639 HW2 SOL 212 18.527 13.985 23.839 1.00 0.00 H +ATOM 640 OW SOL 213 17.844 16.429 18.517 1.00 0.00 O +ATOM 641 HW1 SOL 213 17.744 15.500 18.162 1.00 0.00 H +ATOM 642 HW2 SOL 213 16.981 16.870 18.271 1.00 0.00 H +ATOM 643 OW SOL 214 26.348 27.255 19.389 1.00 0.00 O +ATOM 644 HW1 SOL 214 26.764 27.895 18.744 1.00 0.00 H +ATOM 645 HW2 SOL 214 26.129 27.826 20.180 1.00 0.00 H +ATOM 646 OW SOL 215 19.468 25.203 11.319 1.00 0.00 O +ATOM 647 HW1 SOL 215 19.836 25.775 10.587 1.00 0.00 H +ATOM 648 HW2 SOL 215 20.233 24.606 11.560 1.00 0.00 H +ATOM 649 OW SOL 216 24.482 16.998 15.713 1.00 0.00 O +ATOM 650 HW1 SOL 216 23.782 16.352 15.411 1.00 0.00 H +ATOM 651 HW2 SOL 216 23.957 17.723 16.159 1.00 0.00 H +ATOM 652 OW SOL 217 22.863 24.643 26.438 1.00 0.00 O +ATOM 653 HW1 SOL 217 23.205 23.713 26.305 1.00 0.00 H +ATOM 654 HW2 SOL 217 23.295 24.934 27.291 1.00 0.00 H +ATOM 655 OW SOL 218 16.581 23.137 9.018 1.00 0.00 O +ATOM 656 HW1 SOL 218 15.746 22.632 9.233 1.00 0.00 H +ATOM 657 HW2 SOL 218 16.633 23.826 9.740 1.00 0.00 H +ATOM 658 OW SOL 219 12.098 27.383 14.371 1.00 0.00 O +ATOM 659 HW1 SOL 219 11.253 27.822 14.067 1.00 0.00 H +ATOM 660 HW2 SOL 219 12.162 26.569 13.793 1.00 0.00 H +ATOM 661 OW SOL 220 18.497 10.087 28.018 1.00 0.00 O +ATOM 662 HW1 SOL 220 19.198 10.734 28.318 1.00 0.00 H +ATOM 663 HW2 SOL 220 17.867 10.652 27.485 1.00 0.00 H +ATOM 664 OW SOL 221 23.758 24.161 29.453 1.00 0.00 O +ATOM 665 HW1 SOL 221 24.089 23.218 29.494 1.00 0.00 H +ATOM 666 HW2 SOL 221 24.587 24.695 29.288 1.00 0.00 H +ATOM 667 OW SOL 222 21.864 13.608 29.368 1.00 0.00 O +ATOM 668 HW1 SOL 222 21.386 12.750 29.559 1.00 0.00 H +ATOM 669 HW2 SOL 222 21.214 14.121 28.809 1.00 0.00 H +ATOM 670 OW SOL 223 29.881 27.987 21.278 1.00 0.00 O +ATOM 671 HW1 SOL 223 30.280 28.463 22.060 1.00 0.00 H +ATOM 672 HW2 SOL 223 28.896 28.064 21.433 1.00 0.00 H +ATOM 673 OW SOL 224 14.384 27.766 12.575 1.00 0.00 O +ATOM 674 HW1 SOL 224 13.656 27.745 13.259 1.00 0.00 H +ATOM 675 HW2 SOL 224 15.210 27.928 13.114 1.00 0.00 H +ATOM 676 OW SOL 225 17.381 25.415 12.307 1.00 0.00 O +ATOM 677 HW1 SOL 225 16.685 25.906 11.784 1.00 0.00 H +ATOM 678 HW2 SOL 225 17.361 24.493 11.919 1.00 0.00 H +ATOM 679 OW SOL 226 18.771 26.327 16.968 1.00 0.00 O +ATOM 680 HW1 SOL 226 19.165 26.197 17.878 1.00 0.00 H +ATOM 681 HW2 SOL 226 19.149 25.570 16.436 1.00 0.00 H +ATOM 682 OW SOL 227 26.894 25.793 22.690 1.00 0.00 O +ATOM 683 HW1 SOL 227 27.095 26.573 23.283 1.00 0.00 H +ATOM 684 HW2 SOL 227 26.892 25.014 23.317 1.00 0.00 H +ATOM 685 OW SOL 228 29.615 14.551 22.456 1.00 0.00 O +ATOM 686 HW1 SOL 228 29.405 13.573 22.445 1.00 0.00 H +ATOM 687 HW2 SOL 228 29.346 14.860 21.544 1.00 0.00 H +ATOM 688 OW SOL 229 14.566 25.605 27.425 1.00 0.00 O +ATOM 689 HW1 SOL 229 14.245 25.596 26.478 1.00 0.00 H +ATOM 690 HW2 SOL 229 15.214 24.844 27.462 1.00 0.00 H +ATOM 691 OW SOL 230 20.391 25.772 30.067 1.00 0.00 O +ATOM 692 HW1 SOL 230 21.375 25.748 29.888 1.00 0.00 H +ATOM 693 HW2 SOL 230 20.078 24.864 29.790 1.00 0.00 H +ATOM 694 OW SOL 231 23.233 14.897 21.299 1.00 0.00 O +ATOM 695 HW1 SOL 231 22.260 14.863 21.070 1.00 0.00 H +ATOM 696 HW2 SOL 231 23.269 14.533 22.230 1.00 0.00 H +ATOM 697 OW SOL 232 13.951 14.271 26.024 1.00 0.00 O +ATOM 698 HW1 SOL 232 13.866 15.163 26.468 1.00 0.00 H +ATOM 699 HW2 SOL 232 13.345 13.682 26.559 1.00 0.00 H +ATOM 700 OW SOL 233 28.373 27.959 24.651 1.00 0.00 O +ATOM 701 HW1 SOL 233 27.950 28.614 24.025 1.00 0.00 H +ATOM 702 HW2 SOL 233 28.738 27.253 24.044 1.00 0.00 H +ATOM 703 OW SOL 234 25.500 16.383 23.895 1.00 0.00 O +ATOM 704 HW1 SOL 234 25.500 17.138 23.239 1.00 0.00 H +ATOM 705 HW2 SOL 234 24.639 15.909 23.710 1.00 0.00 H +ATOM 706 OW SOL 235 28.002 12.440 13.022 1.00 0.00 O +ATOM 707 HW1 SOL 235 28.815 12.998 12.852 1.00 0.00 H +ATOM 708 HW2 SOL 235 28.343 11.502 12.958 1.00 0.00 H +ATOM 709 OW SOL 236 18.282 22.984 28.431 1.00 0.00 O +ATOM 710 HW1 SOL 236 17.839 22.956 27.535 1.00 0.00 H +ATOM 711 HW2 SOL 236 17.744 22.345 28.980 1.00 0.00 H +ATOM 712 OW SOL 237 15.334 10.807 19.052 1.00 0.00 O +ATOM 713 HW1 SOL 237 16.230 10.739 18.613 1.00 0.00 H +ATOM 714 HW2 SOL 237 15.543 10.729 20.027 1.00 0.00 H +ATOM 715 OW SOL 238 26.453 20.193 17.035 1.00 0.00 O +ATOM 716 HW1 SOL 238 27.285 19.738 16.718 1.00 0.00 H +ATOM 717 HW2 SOL 238 26.145 20.706 16.234 1.00 0.00 H +ATOM 718 OW SOL 239 10.845 27.204 26.439 1.00 0.00 O +ATOM 719 HW1 SOL 239 11.492 26.526 26.787 1.00 0.00 H +ATOM 720 HW2 SOL 239 10.226 27.356 27.209 1.00 0.00 H +ATOM 721 OW SOL 240 23.318 20.552 29.910 1.00 0.00 O +ATOM 722 HW1 SOL 240 23.322 19.973 29.095 1.00 0.00 H +ATOM 723 HW2 SOL 240 24.208 20.374 30.330 1.00 0.00 H +ATOM 724 OW SOL 241 12.360 11.799 19.506 1.00 0.00 O +ATOM 725 HW1 SOL 241 11.587 12.232 19.969 1.00 0.00 H +ATOM 726 HW2 SOL 241 12.913 11.439 20.258 1.00 0.00 H +ATOM 727 OW SOL 242 10.015 16.482 23.582 1.00 0.00 O +ATOM 728 HW1 SOL 242 9.278 17.021 23.174 1.00 0.00 H +ATOM 729 HW2 SOL 242 10.842 16.856 23.162 1.00 0.00 H +ATOM 730 OW SOL 243 24.378 12.205 18.326 1.00 0.00 O +ATOM 731 HW1 SOL 243 24.260 11.939 19.283 1.00 0.00 H +ATOM 732 HW2 SOL 243 24.465 11.331 17.848 1.00 0.00 H +ATOM 733 OW SOL 244 27.338 13.664 23.454 1.00 0.00 O +ATOM 734 HW1 SOL 244 28.230 13.837 23.870 1.00 0.00 H +ATOM 735 HW2 SOL 244 27.455 13.969 22.509 1.00 0.00 H +ATOM 736 OW SOL 245 16.940 13.384 31.601 1.00 0.00 O +ATOM 737 HW1 SOL 245 17.109 13.112 30.654 1.00 0.00 H +ATOM 738 HW2 SOL 245 17.669 12.928 32.111 1.00 0.00 H +ATOM 739 OW SOL 246 32.005 13.657 23.624 1.00 0.00 O +ATOM 740 HW1 SOL 246 32.257 13.911 24.558 1.00 0.00 H +ATOM 741 HW2 SOL 246 31.963 14.533 23.145 1.00 0.00 H +ATOM 742 OW SOL 247 28.888 16.640 31.052 1.00 0.00 O +ATOM 743 HW1 SOL 247 28.877 16.525 30.058 1.00 0.00 H +ATOM 744 HW2 SOL 247 28.475 17.540 31.190 1.00 0.00 H +ATOM 745 OW SOL 248 30.517 21.634 27.971 1.00 0.00 O +ATOM 746 HW1 SOL 248 30.413 20.686 27.671 1.00 0.00 H +ATOM 747 HW2 SOL 248 29.614 21.868 28.330 1.00 0.00 H +ATOM 748 OW SOL 249 29.278 25.405 14.874 1.00 0.00 O +ATOM 749 HW1 SOL 249 30.211 25.764 14.901 1.00 0.00 H +ATOM 750 HW2 SOL 249 28.781 25.992 15.513 1.00 0.00 H +ATOM 751 OW SOL 250 28.968 21.899 14.796 1.00 0.00 O +ATOM 752 HW1 SOL 250 28.346 22.644 14.559 1.00 0.00 H +ATOM 753 HW2 SOL 250 28.495 21.082 14.467 1.00 0.00 H +ATOM 754 OW SOL 251 14.191 11.981 16.094 1.00 0.00 O +ATOM 755 HW1 SOL 251 14.407 12.074 15.122 1.00 0.00 H +ATOM 756 HW2 SOL 251 14.275 10.999 16.261 1.00 0.00 H +ATOM 757 OW SOL 252 17.788 32.955 15.832 1.00 0.00 O +ATOM 758 HW1 SOL 252 17.315 32.902 14.953 1.00 0.00 H +ATOM 759 HW2 SOL 252 18.279 33.824 15.785 1.00 0.00 H +ATOM 760 OW SOL 253 14.053 32.614 18.037 1.00 0.00 O +ATOM 761 HW1 SOL 253 14.707 32.156 18.638 1.00 0.00 H +ATOM 762 HW2 SOL 253 13.297 32.849 18.647 1.00 0.00 H +ATOM 763 OW SOL 254 15.162 6.761 17.608 1.00 0.00 O +ATOM 764 HW1 SOL 254 16.124 6.787 17.336 1.00 0.00 H +ATOM 765 HW2 SOL 254 15.183 6.326 18.508 1.00 0.00 H +ATOM 766 OW SOL 255 23.403 24.435 19.289 1.00 0.00 O +ATOM 767 HW1 SOL 255 22.966 24.938 20.034 1.00 0.00 H +ATOM 768 HW2 SOL 255 24.203 24.019 19.721 1.00 0.00 H +ATOM 769 OW SOL 256 11.933 18.281 8.865 1.00 0.00 O +ATOM 770 HW1 SOL 256 12.169 18.288 7.894 1.00 0.00 H +ATOM 771 HW2 SOL 256 11.288 17.520 8.945 1.00 0.00 H +ATOM 772 OW SOL 257 17.352 17.223 12.875 1.00 0.00 O +ATOM 773 HW1 SOL 257 17.075 17.788 12.098 1.00 0.00 H +ATOM 774 HW2 SOL 257 16.594 16.579 12.980 1.00 0.00 H +ATOM 775 OW SOL 258 20.845 31.014 24.506 1.00 0.00 O +ATOM 776 HW1 SOL 258 21.494 30.971 23.747 1.00 0.00 H +ATOM 777 HW2 SOL 258 21.299 31.607 25.171 1.00 0.00 H +ATOM 778 OW SOL 259 16.173 30.639 14.579 1.00 0.00 O +ATOM 779 HW1 SOL 259 17.087 31.003 14.755 1.00 0.00 H +ATOM 780 HW2 SOL 259 15.597 31.456 14.545 1.00 0.00 H +ATOM 781 OW SOL 260 26.861 14.882 24.781 1.00 0.00 O +ATOM 782 HW1 SOL 260 27.331 15.619 24.295 1.00 0.00 H +ATOM 783 HW2 SOL 260 27.066 15.066 25.742 1.00 0.00 H +ATOM 784 OW SOL 261 20.147 18.767 8.642 1.00 0.00 O +ATOM 785 HW1 SOL 261 19.932 18.177 7.865 1.00 0.00 H +ATOM 786 HW2 SOL 261 19.754 18.282 9.423 1.00 0.00 H +ATOM 787 OW SOL 262 16.330 11.853 15.027 1.00 0.00 O +ATOM 788 HW1 SOL 262 16.561 11.180 15.729 1.00 0.00 H +ATOM 789 HW2 SOL 262 16.187 12.696 15.546 1.00 0.00 H +ATOM 790 OW SOL 263 19.998 14.127 14.342 1.00 0.00 O +ATOM 791 HW1 SOL 263 19.093 13.932 13.964 1.00 0.00 H +ATOM 792 HW2 SOL 263 20.377 14.802 13.709 1.00 0.00 H +ATOM 793 OW SOL 264 15.286 6.974 21.690 1.00 0.00 O +ATOM 794 HW1 SOL 264 14.490 6.733 21.134 1.00 0.00 H +ATOM 795 HW2 SOL 264 15.987 7.198 21.013 1.00 0.00 H +ATOM 796 OW SOL 265 22.572 20.878 22.776 1.00 0.00 O +ATOM 797 HW1 SOL 265 22.895 20.110 22.224 1.00 0.00 H +ATOM 798 HW2 SOL 265 21.659 21.062 22.413 1.00 0.00 H +ATOM 799 OW SOL 266 13.021 22.353 8.271 1.00 0.00 O +ATOM 800 HW1 SOL 266 13.103 21.539 7.695 1.00 0.00 H +ATOM 801 HW2 SOL 266 12.965 23.103 7.612 1.00 0.00 H +ATOM 802 OW SOL 267 29.306 12.539 20.816 1.00 0.00 O +ATOM 803 HW1 SOL 267 29.850 13.011 20.123 1.00 0.00 H +ATOM 804 HW2 SOL 267 29.587 11.583 20.726 1.00 0.00 H +ATOM 805 OW SOL 268 27.591 8.306 19.715 1.00 0.00 O +ATOM 806 HW1 SOL 268 26.981 8.960 20.162 1.00 0.00 H +ATOM 807 HW2 SOL 268 28.102 7.902 20.473 1.00 0.00 H +ATOM 808 OW SOL 269 14.625 19.150 27.877 1.00 0.00 O +ATOM 809 HW1 SOL 269 14.905 19.901 28.474 1.00 0.00 H +ATOM 810 HW2 SOL 269 14.485 18.387 28.507 1.00 0.00 H +ATOM 811 OW SOL 270 15.053 18.138 11.940 1.00 0.00 O +ATOM 812 HW1 SOL 270 14.083 18.294 12.126 1.00 0.00 H +ATOM 813 HW2 SOL 270 15.179 18.501 11.017 1.00 0.00 H +ATOM 814 OW SOL 271 20.480 10.066 25.281 1.00 0.00 O +ATOM 815 HW1 SOL 271 20.492 10.653 26.090 1.00 0.00 H +ATOM 816 HW2 SOL 271 20.115 9.200 25.622 1.00 0.00 H +ATOM 817 OW SOL 272 16.687 16.821 21.152 1.00 0.00 O +ATOM 818 HW1 SOL 272 17.392 17.113 20.506 1.00 0.00 H +ATOM 819 HW2 SOL 272 16.033 16.326 20.580 1.00 0.00 H +ATOM 820 OW SOL 273 20.496 9.997 18.857 1.00 0.00 O +ATOM 821 HW1 SOL 273 19.529 9.992 19.113 1.00 0.00 H +ATOM 822 HW2 SOL 273 20.580 10.799 18.267 1.00 0.00 H +ATOM 823 OW SOL 274 25.891 27.591 29.791 1.00 0.00 O +ATOM 824 HW1 SOL 274 25.008 27.972 30.067 1.00 0.00 H +ATOM 825 HW2 SOL 274 26.443 27.649 30.622 1.00 0.00 H +ATOM 826 OW SOL 275 10.510 26.690 23.469 1.00 0.00 O +ATOM 827 HW1 SOL 275 9.710 26.679 24.068 1.00 0.00 H +ATOM 828 HW2 SOL 275 11.238 27.046 24.054 1.00 0.00 H +ATOM 829 OW SOL 276 25.856 13.235 20.210 1.00 0.00 O +ATOM 830 HW1 SOL 276 26.425 12.798 19.514 1.00 0.00 H +ATOM 831 HW2 SOL 276 25.294 13.876 19.686 1.00 0.00 H +ATOM 832 OW SOL 277 10.188 21.626 13.254 1.00 0.00 O +ATOM 833 HW1 SOL 277 10.108 20.717 12.847 1.00 0.00 H +ATOM 834 HW2 SOL 277 10.441 21.439 14.203 1.00 0.00 H +ATOM 835 OW SOL 278 13.376 16.662 19.239 1.00 0.00 O +ATOM 836 HW1 SOL 278 12.555 16.358 18.757 1.00 0.00 H +ATOM 837 HW2 SOL 278 13.509 17.597 18.911 1.00 0.00 H +ATOM 838 OW SOL 279 19.716 33.214 25.227 1.00 0.00 O +ATOM 839 HW1 SOL 279 20.555 33.286 25.766 1.00 0.00 H +ATOM 840 HW2 SOL 279 18.992 33.211 25.917 1.00 0.00 H +ATOM 841 OW SOL 280 21.318 16.043 23.168 1.00 0.00 O +ATOM 842 HW1 SOL 280 20.740 15.644 22.456 1.00 0.00 H +ATOM 843 HW2 SOL 280 21.291 15.365 23.902 1.00 0.00 H +ATOM 844 OW SOL 281 29.072 25.241 18.007 1.00 0.00 O +ATOM 845 HW1 SOL 281 29.017 24.363 18.482 1.00 0.00 H +ATOM 846 HW2 SOL 281 28.392 25.159 17.279 1.00 0.00 H +ATOM 847 OW SOL 282 16.906 12.470 24.437 1.00 0.00 O +ATOM 848 HW1 SOL 282 16.760 13.426 24.688 1.00 0.00 H +ATOM 849 HW2 SOL 282 17.418 12.526 23.580 1.00 0.00 H +ATOM 850 OW SOL 283 11.005 16.545 20.975 1.00 0.00 O +ATOM 851 HW1 SOL 283 11.185 17.280 20.321 1.00 0.00 H +ATOM 852 HW2 SOL 283 11.645 15.826 20.704 1.00 0.00 H +ATOM 853 OW SOL 284 19.808 19.268 16.414 1.00 0.00 O +ATOM 854 HW1 SOL 284 18.955 18.964 16.838 1.00 0.00 H +ATOM 855 HW2 SOL 284 19.515 19.632 15.530 1.00 0.00 H +ATOM 856 OW SOL 285 19.928 17.083 32.305 1.00 0.00 O +ATOM 857 HW1 SOL 285 19.062 17.537 32.093 1.00 0.00 H +ATOM 858 HW2 SOL 285 20.282 16.821 31.407 1.00 0.00 H +ATOM 859 OW SOL 286 21.167 10.656 13.563 1.00 0.00 O +ATOM 860 HW1 SOL 286 22.068 10.422 13.199 1.00 0.00 H +ATOM 861 HW2 SOL 286 20.751 11.196 12.831 1.00 0.00 H +ATOM 862 OW SOL 287 25.467 23.335 16.932 1.00 0.00 O +ATOM 863 HW1 SOL 287 25.022 24.043 16.383 1.00 0.00 H +ATOM 864 HW2 SOL 287 25.864 22.722 16.249 1.00 0.00 H +ATOM 865 OW SOL 288 11.779 10.659 26.429 1.00 0.00 O +ATOM 866 HW1 SOL 288 11.727 9.775 25.964 1.00 0.00 H +ATOM 867 HW2 SOL 288 11.701 11.322 25.684 1.00 0.00 H +ATOM 868 OW SOL 289 20.631 25.552 23.948 1.00 0.00 O +ATOM 869 HW1 SOL 289 20.171 26.439 23.917 1.00 0.00 H +ATOM 870 HW2 SOL 289 21.576 25.768 23.702 1.00 0.00 H +ATOM 871 OW SOL 290 31.043 16.337 17.275 1.00 0.00 O +ATOM 872 HW1 SOL 290 31.810 15.800 17.627 1.00 0.00 H +ATOM 873 HW2 SOL 290 30.548 16.609 18.100 1.00 0.00 H +ATOM 874 OW SOL 291 12.491 25.394 18.555 1.00 0.00 O +ATOM 875 HW1 SOL 291 11.721 25.934 18.215 1.00 0.00 H +ATOM 876 HW2 SOL 291 12.354 24.497 18.136 1.00 0.00 H +ATOM 877 OW SOL 292 25.292 13.571 16.035 1.00 0.00 O +ATOM 878 HW1 SOL 292 25.055 12.601 16.090 1.00 0.00 H +ATOM 879 HW2 SOL 292 24.754 13.987 16.769 1.00 0.00 H +ATOM 880 OW SOL 293 9.792 18.248 17.146 1.00 0.00 O +ATOM 881 HW1 SOL 293 10.249 17.869 17.951 1.00 0.00 H +ATOM 882 HW2 SOL 293 9.494 17.438 16.641 1.00 0.00 H +ATOM 883 OW SOL 294 17.876 26.066 14.738 1.00 0.00 O +ATOM 884 HW1 SOL 294 18.251 26.859 15.218 1.00 0.00 H +ATOM 885 HW2 SOL 294 17.107 26.444 14.222 1.00 0.00 H +ATOM 886 OW SOL 295 13.351 26.592 29.897 1.00 0.00 O +ATOM 887 HW1 SOL 295 13.162 26.831 30.850 1.00 0.00 H +ATOM 888 HW2 SOL 295 12.534 26.092 29.613 1.00 0.00 H +ATOM 889 OW SOL 296 12.037 28.641 18.185 1.00 0.00 O +ATOM 890 HW1 SOL 296 12.138 29.311 18.919 1.00 0.00 H +ATOM 891 HW2 SOL 296 11.798 27.798 18.666 1.00 0.00 H +ATOM 892 OW SOL 297 13.949 14.903 14.018 1.00 0.00 O +ATOM 893 HW1 SOL 297 13.391 14.944 14.846 1.00 0.00 H +ATOM 894 HW2 SOL 297 13.286 15.029 13.280 1.00 0.00 H +ATOM 895 OW SOL 298 24.441 9.774 18.896 1.00 0.00 O +ATOM 896 HW1 SOL 298 24.484 8.795 18.698 1.00 0.00 H +ATOM 897 HW2 SOL 298 23.461 9.959 18.959 1.00 0.00 H +ATOM 898 OW SOL 299 24.825 20.625 13.710 1.00 0.00 O +ATOM 899 HW1 SOL 299 24.699 19.834 13.111 1.00 0.00 H +ATOM 900 HW2 SOL 299 24.759 21.405 13.087 1.00 0.00 H +ATOM 901 OW SOL 300 30.311 15.797 23.908 1.00 0.00 O +ATOM 902 HW1 SOL 300 30.013 16.347 23.128 1.00 0.00 H +ATOM 903 HW2 SOL 300 31.248 16.106 24.070 1.00 0.00 H +ATOM 904 OW SOL 301 14.689 25.210 19.062 1.00 0.00 O +ATOM 905 HW1 SOL 301 14.868 24.486 18.395 1.00 0.00 H +ATOM 906 HW2 SOL 301 15.310 25.943 18.787 1.00 0.00 H +ATOM 907 OW SOL 302 25.131 30.384 14.211 1.00 0.00 O +ATOM 908 HW1 SOL 302 25.229 30.043 15.146 1.00 0.00 H +ATOM 909 HW2 SOL 302 24.835 31.331 14.335 1.00 0.00 H +ATOM 910 OW SOL 303 26.817 28.630 15.931 1.00 0.00 O +ATOM 911 HW1 SOL 303 26.854 29.598 16.177 1.00 0.00 H +ATOM 912 HW2 SOL 303 27.762 28.323 16.039 1.00 0.00 H +ATOM 913 OW SOL 304 25.870 28.779 23.498 1.00 0.00 O +ATOM 914 HW1 SOL 304 26.007 28.035 24.152 1.00 0.00 H +ATOM 915 HW2 SOL 304 26.345 28.462 22.677 1.00 0.00 H +ATOM 916 OW SOL 305 21.224 20.028 20.919 1.00 0.00 O +ATOM 917 HW1 SOL 305 20.868 19.663 20.059 1.00 0.00 H +ATOM 918 HW2 SOL 305 21.455 19.210 21.445 1.00 0.00 H +ATOM 919 OW SOL 306 23.951 18.581 19.460 1.00 0.00 O +ATOM 920 HW1 SOL 306 24.755 18.081 19.139 1.00 0.00 H +ATOM 921 HW2 SOL 306 23.703 19.155 18.679 1.00 0.00 H +ATOM 922 OW SOL 307 14.745 23.638 10.984 1.00 0.00 O +ATOM 923 HW1 SOL 307 14.721 24.346 11.689 1.00 0.00 H +ATOM 924 HW2 SOL 307 14.730 22.785 11.506 1.00 0.00 H +ATOM 925 OW SOL 308 20.995 28.107 28.584 1.00 0.00 O +ATOM 926 HW1 SOL 308 21.030 29.030 28.201 1.00 0.00 H +ATOM 927 HW2 SOL 308 20.408 28.206 29.388 1.00 0.00 H +ATOM 928 OW SOL 309 21.468 30.225 29.577 1.00 0.00 O +ATOM 929 HW1 SOL 309 22.120 30.435 28.848 1.00 0.00 H +ATOM 930 HW2 SOL 309 20.824 30.989 29.546 1.00 0.00 H +ATOM 931 OW SOL 310 24.896 27.982 17.390 1.00 0.00 O +ATOM 932 HW1 SOL 310 25.409 28.790 17.677 1.00 0.00 H +ATOM 933 HW2 SOL 310 24.781 28.112 16.405 1.00 0.00 H +ATOM 934 OW SOL 311 10.694 13.902 19.257 1.00 0.00 O +ATOM 935 HW1 SOL 311 9.883 14.455 19.452 1.00 0.00 H +ATOM 936 HW2 SOL 311 11.300 14.094 20.029 1.00 0.00 H +ATOM 937 OW SOL 312 12.486 10.419 18.077 1.00 0.00 O +ATOM 938 HW1 SOL 312 11.824 11.058 17.686 1.00 0.00 H +ATOM 939 HW2 SOL 312 12.027 10.075 18.896 1.00 0.00 H +ATOM 940 OW SOL 313 21.726 12.250 26.675 1.00 0.00 O +ATOM 941 HW1 SOL 313 21.308 12.626 25.848 1.00 0.00 H +ATOM 942 HW2 SOL 313 21.836 13.048 27.268 1.00 0.00 H +ATOM 943 OW SOL 314 20.056 23.431 18.133 1.00 0.00 O +ATOM 944 HW1 SOL 314 19.555 24.081 17.561 1.00 0.00 H +ATOM 945 HW2 SOL 314 19.366 23.106 18.780 1.00 0.00 H +ATOM 946 OW SOL 315 8.353 22.549 12.108 1.00 0.00 O +ATOM 947 HW1 SOL 315 7.981 23.298 12.656 1.00 0.00 H +ATOM 948 HW2 SOL 315 8.381 21.780 12.747 1.00 0.00 H +ATOM 949 OW SOL 316 23.066 24.865 12.477 1.00 0.00 O +ATOM 950 HW1 SOL 316 23.923 24.801 11.966 1.00 0.00 H +ATOM 951 HW2 SOL 316 22.364 24.788 11.770 1.00 0.00 H +ATOM 952 OW SOL 317 21.609 21.802 31.335 1.00 0.00 O +ATOM 953 HW1 SOL 317 20.981 21.226 30.812 1.00 0.00 H +ATOM 954 HW2 SOL 317 22.229 22.167 30.639 1.00 0.00 H +ATOM 955 OW SOL 318 11.152 12.741 16.477 1.00 0.00 O +ATOM 956 HW1 SOL 318 10.489 13.482 16.374 1.00 0.00 H +ATOM 957 HW2 SOL 318 11.749 12.847 15.682 1.00 0.00 H +ATOM 958 OW SOL 319 16.479 19.355 30.032 1.00 0.00 O +ATOM 959 HW1 SOL 319 15.718 19.991 30.156 1.00 0.00 H +ATOM 960 HW2 SOL 319 17.195 19.922 29.624 1.00 0.00 H +ATOM 961 OW SOL 320 16.511 25.983 28.210 1.00 0.00 O +ATOM 962 HW1 SOL 320 15.788 26.358 28.790 1.00 0.00 H +ATOM 963 HW2 SOL 320 17.095 26.773 28.022 1.00 0.00 H +ATOM 964 OW SOL 321 11.555 9.180 21.060 1.00 0.00 O +ATOM 965 HW1 SOL 321 11.639 8.600 21.869 1.00 0.00 H +ATOM 966 HW2 SOL 321 12.093 9.990 21.293 1.00 0.00 H +ATOM 967 OW SOL 322 29.258 22.693 23.080 1.00 0.00 O +ATOM 968 HW1 SOL 322 28.713 23.180 23.763 1.00 0.00 H +ATOM 969 HW2 SOL 322 28.812 22.924 22.215 1.00 0.00 H +ATOM 970 OW SOL 323 15.293 7.604 25.247 1.00 0.00 O +ATOM 971 HW1 SOL 323 15.848 8.208 24.676 1.00 0.00 H +ATOM 972 HW2 SOL 323 14.580 7.280 24.626 1.00 0.00 H +ATOM 973 OW SOL 324 16.703 32.803 18.354 1.00 0.00 O +ATOM 974 HW1 SOL 324 16.126 33.380 18.931 1.00 0.00 H +ATOM 975 HW2 SOL 324 17.349 32.396 18.999 1.00 0.00 H +ATOM 976 OW SOL 325 13.842 12.645 18.127 1.00 0.00 O +ATOM 977 HW1 SOL 325 14.323 13.243 17.486 1.00 0.00 H +ATOM 978 HW2 SOL 325 12.897 12.662 17.801 1.00 0.00 H +ATOM 979 OW SOL 326 14.556 13.983 8.009 1.00 0.00 O +ATOM 980 HW1 SOL 326 14.206 14.169 8.926 1.00 0.00 H +ATOM 981 HW2 SOL 326 14.445 14.854 7.532 1.00 0.00 H +ATOM 982 OW SOL 327 27.488 22.281 18.419 1.00 0.00 O +ATOM 983 HW1 SOL 327 26.914 22.997 18.815 1.00 0.00 H +ATOM 984 HW2 SOL 327 27.033 21.434 18.693 1.00 0.00 H +ATOM 985 OW SOL 328 20.380 31.224 13.120 1.00 0.00 O +ATOM 986 HW1 SOL 328 20.139 30.588 13.853 1.00 0.00 H +ATOM 987 HW2 SOL 328 20.743 32.019 13.608 1.00 0.00 H +ATOM 988 OW SOL 329 28.233 19.659 23.418 1.00 0.00 O +ATOM 989 HW1 SOL 329 27.999 19.815 22.459 1.00 0.00 H +ATOM 990 HW2 SOL 329 28.599 18.729 23.424 1.00 0.00 H +ATOM 991 OW SOL 330 27.613 9.786 25.228 1.00 0.00 O +ATOM 992 HW1 SOL 330 28.516 9.582 25.605 1.00 0.00 H +ATOM 993 HW2 SOL 330 27.816 10.233 24.357 1.00 0.00 H +ATOM 994 OW SOL 331 26.953 11.666 23.287 1.00 0.00 O +ATOM 995 HW1 SOL 331 27.240 10.967 22.632 1.00 0.00 H +ATOM 996 HW2 SOL 331 26.091 12.004 22.908 1.00 0.00 H +ATOM 997 OW SOL 332 17.325 7.120 22.392 1.00 0.00 O +ATOM 998 HW1 SOL 332 17.426 8.040 22.770 1.00 0.00 H +ATOM 999 HW2 SOL 332 17.048 6.571 23.181 1.00 0.00 H +ATOM 1000 OW SOL 333 11.304 17.823 11.869 1.00 0.00 O +ATOM 1001 HW1 SOL 333 11.740 18.013 12.749 1.00 0.00 H +ATOM 1002 HW2 SOL 333 10.327 17.871 12.075 1.00 0.00 H +ATOM 1003 OW SOL 334 30.392 14.897 18.837 1.00 0.00 O +ATOM 1004 HW1 SOL 334 30.071 15.409 19.634 1.00 0.00 H +ATOM 1005 HW2 SOL 334 31.097 14.295 19.212 1.00 0.00 H +ATOM 1006 OW SOL 335 20.738 13.693 19.175 1.00 0.00 O +ATOM 1007 HW1 SOL 335 19.925 13.716 18.593 1.00 0.00 H +ATOM 1008 HW2 SOL 335 20.469 14.225 19.977 1.00 0.00 H +ATOM 1009 OW SOL 336 22.146 8.872 20.606 1.00 0.00 O +ATOM 1010 HW1 SOL 336 22.323 8.101 19.994 1.00 0.00 H +ATOM 1011 HW2 SOL 336 21.919 9.621 19.984 1.00 0.00 H +ATOM 1012 OW SOL 337 17.898 29.877 12.282 1.00 0.00 O +ATOM 1013 HW1 SOL 337 18.653 29.401 12.733 1.00 0.00 H +ATOM 1014 HW2 SOL 337 17.369 30.254 13.042 1.00 0.00 H +ATOM 1015 OW SOL 338 9.579 23.791 27.081 1.00 0.00 O +ATOM 1016 HW1 SOL 338 9.173 24.458 27.705 1.00 0.00 H +ATOM 1017 HW2 SOL 338 8.955 23.789 26.299 1.00 0.00 H +ATOM 1018 OW SOL 339 18.804 7.349 14.881 1.00 0.00 O +ATOM 1019 HW1 SOL 339 18.160 6.979 15.551 1.00 0.00 H +ATOM 1020 HW2 SOL 339 19.408 7.927 15.429 1.00 0.00 H +ATOM 1021 OW SOL 340 17.958 31.886 24.386 1.00 0.00 O +ATOM 1022 HW1 SOL 340 18.675 31.220 24.183 1.00 0.00 H +ATOM 1023 HW2 SOL 340 18.213 32.682 23.837 1.00 0.00 H +ATOM 1024 OW SOL 341 25.496 25.147 30.905 1.00 0.00 O +ATOM 1025 HW1 SOL 341 25.379 25.434 31.855 1.00 0.00 H +ATOM 1026 HW2 SOL 341 26.139 25.816 30.533 1.00 0.00 H +ATOM 1027 OW SOL 342 22.647 25.090 16.394 1.00 0.00 O +ATOM 1028 HW1 SOL 342 22.824 25.814 17.061 1.00 0.00 H +ATOM 1029 HW2 SOL 342 22.426 25.589 15.557 1.00 0.00 H +ATOM 1030 OW SOL 343 7.347 20.812 17.781 1.00 0.00 O +ATOM 1031 HW1 SOL 343 7.132 20.349 18.640 1.00 0.00 H +ATOM 1032 HW2 SOL 343 7.366 20.070 17.111 1.00 0.00 H +ATOM 1033 OW SOL 344 15.251 10.366 24.890 1.00 0.00 O +ATOM 1034 HW1 SOL 344 14.474 9.836 24.551 1.00 0.00 H +ATOM 1035 HW2 SOL 344 16.010 10.071 24.309 1.00 0.00 H +ATOM 1036 OW SOL 345 13.711 29.075 24.741 1.00 0.00 O +ATOM 1037 HW1 SOL 345 12.999 28.666 25.312 1.00 0.00 H +ATOM 1038 HW2 SOL 345 13.198 29.521 24.008 1.00 0.00 H +ATOM 1039 OW SOL 346 12.199 23.930 24.988 1.00 0.00 O +ATOM 1040 HW1 SOL 346 12.707 23.203 25.448 1.00 0.00 H +ATOM 1041 HW2 SOL 346 12.905 24.433 24.490 1.00 0.00 H +ATOM 1042 OW SOL 347 30.271 18.583 18.904 1.00 0.00 O +ATOM 1043 HW1 SOL 347 29.513 19.052 19.356 1.00 0.00 H +ATOM 1044 HW2 SOL 347 30.661 18.013 19.627 1.00 0.00 H +ATOM 1045 OW SOL 348 18.452 13.467 15.734 1.00 0.00 O +ATOM 1046 HW1 SOL 348 18.745 13.009 16.573 1.00 0.00 H +ATOM 1047 HW2 SOL 348 18.019 14.306 16.061 1.00 0.00 H +ATOM 1048 OW SOL 349 27.608 25.406 21.006 1.00 0.00 O +ATOM 1049 HW1 SOL 349 28.239 25.387 20.230 1.00 0.00 H +ATOM 1050 HW2 SOL 349 26.879 26.019 20.703 1.00 0.00 H +ATOM 1051 OW SOL 350 29.293 13.162 26.803 1.00 0.00 O +ATOM 1052 HW1 SOL 350 28.984 12.418 27.395 1.00 0.00 H +ATOM 1053 HW2 SOL 350 28.454 13.670 26.605 1.00 0.00 H +ATOM 1054 OW SOL 351 25.367 16.306 20.113 1.00 0.00 O +ATOM 1055 HW1 SOL 351 25.891 17.140 20.287 1.00 0.00 H +ATOM 1056 HW2 SOL 351 24.438 16.548 20.392 1.00 0.00 H +ATOM 1057 OW SOL 352 30.822 27.105 23.424 1.00 0.00 O +ATOM 1058 HW1 SOL 352 31.202 27.871 23.943 1.00 0.00 H +ATOM 1059 HW2 SOL 352 30.581 26.439 24.130 1.00 0.00 H +ATOM 1060 OW SOL 353 23.941 14.747 25.295 1.00 0.00 O +ATOM 1061 HW1 SOL 353 24.843 15.162 25.416 1.00 0.00 H +ATOM 1062 HW2 SOL 353 23.374 15.211 25.975 1.00 0.00 H +ATOM 1063 OW SOL 354 13.604 17.251 21.190 1.00 0.00 O +ATOM 1064 HW1 SOL 354 12.826 17.862 21.334 1.00 0.00 H +ATOM 1065 HW2 SOL 354 13.569 16.634 21.976 1.00 0.00 H +ATOM 1066 OW SOL 355 18.949 7.925 24.760 1.00 0.00 O +ATOM 1067 HW1 SOL 355 19.061 8.403 23.889 1.00 0.00 H +ATOM 1068 HW2 SOL 355 17.959 7.917 24.900 1.00 0.00 H +ATOM 1069 OW SOL 356 8.916 14.706 23.338 1.00 0.00 O +ATOM 1070 HW1 SOL 356 9.277 14.271 24.163 1.00 0.00 H +ATOM 1071 HW2 SOL 356 8.325 15.430 23.693 1.00 0.00 H +ATOM 1072 OW SOL 357 26.796 12.444 17.183 1.00 0.00 O +ATOM 1073 HW1 SOL 357 27.461 12.928 16.616 1.00 0.00 H +ATOM 1074 HW2 SOL 357 26.186 13.168 17.503 1.00 0.00 H +ATOM 1075 OW SOL 358 13.234 9.422 15.555 1.00 0.00 O +ATOM 1076 HW1 SOL 358 12.639 9.431 16.359 1.00 0.00 H +ATOM 1077 HW2 SOL 358 12.597 9.516 14.790 1.00 0.00 H +ATOM 1078 OW SOL 359 16.066 17.405 24.928 1.00 0.00 O +ATOM 1079 HW1 SOL 359 15.432 17.970 24.400 1.00 0.00 H +ATOM 1080 HW2 SOL 359 15.787 17.561 25.875 1.00 0.00 H +ATOM 1081 OW SOL 360 18.659 24.815 26.775 1.00 0.00 O +ATOM 1082 HW1 SOL 360 19.219 24.209 27.339 1.00 0.00 H +ATOM 1083 HW2 SOL 360 18.065 25.272 27.437 1.00 0.00 H +ATOM 1084 OW SOL 361 10.600 13.243 25.686 1.00 0.00 O +ATOM 1085 HW1 SOL 361 11.333 13.874 25.432 1.00 0.00 H +ATOM 1086 HW2 SOL 361 10.318 12.846 24.812 1.00 0.00 H +ATOM 1087 OW SOL 362 10.012 29.575 16.524 1.00 0.00 O +ATOM 1088 HW1 SOL 362 9.500 29.086 15.818 1.00 0.00 H +ATOM 1089 HW2 SOL 362 10.877 29.798 16.075 1.00 0.00 H +ATOM 1090 OW SOL 363 23.586 27.355 19.055 1.00 0.00 O +ATOM 1091 HW1 SOL 363 24.502 26.964 18.967 1.00 0.00 H +ATOM 1092 HW2 SOL 363 23.752 28.341 19.077 1.00 0.00 H +ATOM 1093 OW SOL 364 9.635 19.206 24.800 1.00 0.00 O +ATOM 1094 HW1 SOL 364 9.097 19.827 25.370 1.00 0.00 H +ATOM 1095 HW2 SOL 364 10.251 18.762 25.452 1.00 0.00 H +ATOM 1096 OW SOL 365 14.658 26.293 14.899 1.00 0.00 O +ATOM 1097 HW1 SOL 365 14.872 25.976 13.975 1.00 0.00 H +ATOM 1098 HW2 SOL 365 15.201 27.127 14.994 1.00 0.00 H +ATOM 1099 OW SOL 366 13.759 14.754 20.145 1.00 0.00 O +ATOM 1100 HW1 SOL 366 13.554 14.035 19.482 1.00 0.00 H +ATOM 1101 HW2 SOL 366 14.756 14.731 20.219 1.00 0.00 H +ATOM 1102 OW SOL 367 12.001 14.814 10.866 1.00 0.00 O +ATOM 1103 HW1 SOL 367 12.869 14.379 10.626 1.00 0.00 H +ATOM 1104 HW2 SOL 367 11.604 15.053 9.980 1.00 0.00 H +ATOM 1105 OW SOL 368 18.668 20.118 8.220 1.00 0.00 O +ATOM 1106 HW1 SOL 368 17.814 20.193 8.735 1.00 0.00 H +ATOM 1107 HW2 SOL 368 18.404 19.611 7.399 1.00 0.00 H +ATOM 1108 OW SOL 369 23.926 13.005 24.371 1.00 0.00 O +ATOM 1109 HW1 SOL 369 23.334 13.133 23.575 1.00 0.00 H +ATOM 1110 HW2 SOL 369 24.838 12.905 23.974 1.00 0.00 H +ATOM 1111 OW SOL 370 23.517 7.462 17.110 1.00 0.00 O +ATOM 1112 HW1 SOL 370 24.488 7.690 17.189 1.00 0.00 H +ATOM 1113 HW2 SOL 370 23.088 8.336 16.880 1.00 0.00 H +ATOM 1114 OW SOL 371 26.357 18.637 14.769 1.00 0.00 O +ATOM 1115 HW1 SOL 371 26.316 19.578 14.433 1.00 0.00 H +ATOM 1116 HW2 SOL 371 27.258 18.319 14.472 1.00 0.00 H +ATOM 1117 OW SOL 372 21.116 28.517 20.056 1.00 0.00 O +ATOM 1118 HW1 SOL 372 20.534 27.824 19.631 1.00 0.00 H +ATOM 1119 HW2 SOL 372 21.533 28.985 19.277 1.00 0.00 H +ATOM 1120 OW SOL 373 27.604 11.145 20.199 1.00 0.00 O +ATOM 1121 HW1 SOL 373 27.072 11.634 20.889 1.00 0.00 H +ATOM 1122 HW2 SOL 373 28.093 10.450 20.726 1.00 0.00 H +ATOM 1123 OW SOL 374 11.692 16.705 31.095 1.00 0.00 O +ATOM 1124 HW1 SOL 374 10.808 16.892 30.666 1.00 0.00 H +ATOM 1125 HW2 SOL 374 12.254 16.366 30.340 1.00 0.00 H +ATOM 1126 OW SOL 375 17.350 29.821 30.443 1.00 0.00 O +ATOM 1127 HW1 SOL 375 17.988 29.961 29.686 1.00 0.00 H +ATOM 1128 HW2 SOL 375 17.740 29.048 30.941 1.00 0.00 H +ATOM 1129 OW SOL 376 16.689 13.349 21.122 1.00 0.00 O +ATOM 1130 HW1 SOL 376 16.772 12.656 21.838 1.00 0.00 H +ATOM 1131 HW2 SOL 376 16.237 14.113 21.584 1.00 0.00 H +ATOM 1132 OW SOL 377 15.870 18.012 32.581 1.00 0.00 O +ATOM 1133 HW1 SOL 377 15.987 18.011 31.588 1.00 0.00 H +ATOM 1134 HW2 SOL 377 16.784 17.796 32.926 1.00 0.00 H +ATOM 1135 OW SOL 378 18.304 16.070 15.111 1.00 0.00 O +ATOM 1136 HW1 SOL 378 18.299 17.006 14.760 1.00 0.00 H +ATOM 1137 HW2 SOL 378 17.907 15.536 14.364 1.00 0.00 H +ATOM 1138 OW SOL 379 18.903 20.198 10.486 1.00 0.00 O +ATOM 1139 HW1 SOL 379 19.030 19.297 10.901 1.00 0.00 H +ATOM 1140 HW2 SOL 379 19.667 20.733 10.846 1.00 0.00 H +ATOM 1141 OW SOL 380 22.502 15.710 17.837 1.00 0.00 O +ATOM 1142 HW1 SOL 380 22.313 15.970 18.784 1.00 0.00 H +ATOM 1143 HW2 SOL 380 22.606 16.588 17.368 1.00 0.00 H +ATOM 1144 OW SOL 381 29.683 30.062 19.831 1.00 0.00 O +ATOM 1145 HW1 SOL 381 29.674 29.784 20.792 1.00 0.00 H +ATOM 1146 HW2 SOL 381 28.829 30.570 19.724 1.00 0.00 H +ATOM 1147 OW SOL 382 26.170 27.205 27.204 1.00 0.00 O +ATOM 1148 HW1 SOL 382 26.836 26.494 27.429 1.00 0.00 H +ATOM 1149 HW2 SOL 382 25.555 27.210 27.993 1.00 0.00 H +ATOM 1150 OW SOL 383 16.106 13.386 18.542 1.00 0.00 O +ATOM 1151 HW1 SOL 383 16.962 13.868 18.728 1.00 0.00 H +ATOM 1152 HW2 SOL 383 15.997 12.785 19.334 1.00 0.00 H +ATOM 1153 OW SOL 384 18.518 21.201 17.289 1.00 0.00 O +ATOM 1154 HW1 SOL 384 18.236 20.768 16.433 1.00 0.00 H +ATOM 1155 HW2 SOL 384 19.194 21.879 17.000 1.00 0.00 H +ATOM 1156 OW SOL 385 27.338 17.916 28.534 1.00 0.00 O +ATOM 1157 HW1 SOL 385 27.345 17.201 29.232 1.00 0.00 H +ATOM 1158 HW2 SOL 385 27.179 18.754 29.056 1.00 0.00 H +ATOM 1159 OW SOL 386 22.872 26.440 9.393 1.00 0.00 O +ATOM 1160 HW1 SOL 386 22.770 25.847 10.192 1.00 0.00 H +ATOM 1161 HW2 SOL 386 22.487 27.312 9.696 1.00 0.00 H +ATOM 1162 OW SOL 387 26.300 16.482 16.316 1.00 0.00 O +ATOM 1163 HW1 SOL 387 25.677 16.528 17.097 1.00 0.00 H +ATOM 1164 HW2 SOL 387 25.909 15.761 15.744 1.00 0.00 H +ATOM 1165 OW SOL 388 25.715 22.803 30.761 1.00 0.00 O +ATOM 1166 HW1 SOL 388 26.272 21.975 30.708 1.00 0.00 H +ATOM 1167 HW2 SOL 388 26.349 23.531 30.501 1.00 0.00 H +ATOM 1168 OW SOL 389 24.335 9.089 13.169 1.00 0.00 O +ATOM 1169 HW1 SOL 389 24.710 8.808 14.052 1.00 0.00 H +ATOM 1170 HW2 SOL 389 24.584 8.337 12.558 1.00 0.00 H +ATOM 1171 OW SOL 390 19.492 13.050 28.693 1.00 0.00 O +ATOM 1172 HW1 SOL 390 18.690 12.532 28.990 1.00 0.00 H +ATOM 1173 HW2 SOL 390 19.954 12.428 28.062 1.00 0.00 H +ATOM 1174 OW SOL 391 15.319 18.192 20.811 1.00 0.00 O +ATOM 1175 HW1 SOL 391 15.078 18.658 19.960 1.00 0.00 H +ATOM 1176 HW2 SOL 391 16.106 18.708 21.148 1.00 0.00 H +ATOM 1177 OW SOL 392 10.011 10.867 21.045 1.00 0.00 O +ATOM 1178 HW1 SOL 392 10.224 10.284 20.261 1.00 0.00 H +ATOM 1179 HW2 SOL 392 9.590 11.674 20.630 1.00 0.00 H +ATOM 1180 OW SOL 393 29.350 11.459 25.227 1.00 0.00 O +ATOM 1181 HW1 SOL 393 30.300 11.760 25.311 1.00 0.00 H +ATOM 1182 HW2 SOL 393 29.123 11.659 24.275 1.00 0.00 H +ATOM 1183 OW SOL 394 12.469 18.947 30.412 1.00 0.00 O +ATOM 1184 HW1 SOL 394 11.739 19.586 30.172 1.00 0.00 H +ATOM 1185 HW2 SOL 394 12.924 18.769 29.540 1.00 0.00 H +ATOM 1186 OW SOL 395 27.922 15.175 20.298 1.00 0.00 O +ATOM 1187 HW1 SOL 395 27.229 15.856 20.059 1.00 0.00 H +ATOM 1188 HW2 SOL 395 27.389 14.420 20.680 1.00 0.00 H +ATOM 1189 OW SOL 396 16.812 9.336 28.303 1.00 0.00 O +ATOM 1190 HW1 SOL 396 16.960 9.171 29.278 1.00 0.00 H +ATOM 1191 HW2 SOL 396 16.286 8.540 28.006 1.00 0.00 H +ATOM 1192 OW SOL 397 15.418 29.692 28.828 1.00 0.00 O +ATOM 1193 HW1 SOL 397 16.073 30.447 28.800 1.00 0.00 H +ATOM 1194 HW2 SOL 397 15.156 29.643 29.792 1.00 0.00 H +ATOM 1195 OW SOL 398 27.811 30.191 14.603 1.00 0.00 O +ATOM 1196 HW1 SOL 398 27.420 31.110 14.628 1.00 0.00 H +ATOM 1197 HW2 SOL 398 27.684 29.906 13.653 1.00 0.00 H +ATOM 1198 OW SOL 399 11.736 20.569 9.793 1.00 0.00 O +ATOM 1199 HW1 SOL 399 11.736 20.456 8.800 1.00 0.00 H +ATOM 1200 HW2 SOL 399 10.834 20.237 10.069 1.00 0.00 H +ATOM 1201 OW SOL 400 15.485 14.225 11.483 1.00 0.00 O +ATOM 1202 HW1 SOL 400 15.008 14.268 10.605 1.00 0.00 H +ATOM 1203 HW2 SOL 400 16.443 14.371 11.237 1.00 0.00 H +ATOM 1204 OW SOL 401 12.709 30.471 13.919 1.00 0.00 O +ATOM 1205 HW1 SOL 401 11.788 30.503 14.307 1.00 0.00 H +ATOM 1206 HW2 SOL 401 13.084 29.615 14.272 1.00 0.00 H +ATOM 1207 OW SOL 402 31.111 20.994 19.932 1.00 0.00 O +ATOM 1208 HW1 SOL 402 31.576 21.475 20.675 1.00 0.00 H +ATOM 1209 HW2 SOL 402 30.467 20.394 20.407 1.00 0.00 H +ATOM 1210 OW SOL 403 24.062 30.747 23.377 1.00 0.00 O +ATOM 1211 HW1 SOL 403 24.332 31.552 23.905 1.00 0.00 H +ATOM 1212 HW2 SOL 403 24.483 30.900 22.483 1.00 0.00 H +ATOM 1213 OW SOL 404 18.431 11.951 18.140 1.00 0.00 O +ATOM 1214 HW1 SOL 404 17.742 11.640 17.485 1.00 0.00 H +ATOM 1215 HW2 SOL 404 17.895 12.194 18.948 1.00 0.00 H +ATOM 1216 OW SOL 405 16.283 31.157 26.623 1.00 0.00 O +ATOM 1217 HW1 SOL 405 16.910 31.868 26.305 1.00 0.00 H +ATOM 1218 HW2 SOL 405 16.305 30.478 25.890 1.00 0.00 H +ATOM 1219 OW SOL 406 18.803 21.710 12.232 1.00 0.00 O +ATOM 1220 HW1 SOL 406 18.994 22.675 12.415 1.00 0.00 H +ATOM 1221 HW2 SOL 406 17.880 21.581 12.593 1.00 0.00 H +ATOM 1222 OW SOL 407 11.286 24.629 11.978 1.00 0.00 O +ATOM 1223 HW1 SOL 407 10.390 25.020 12.189 1.00 0.00 H +ATOM 1224 HW2 SOL 407 11.927 25.339 12.271 1.00 0.00 H +ATOM 1225 OW SOL 408 25.149 18.535 17.370 1.00 0.00 O +ATOM 1226 HW1 SOL 408 25.862 18.381 16.686 1.00 0.00 H +ATOM 1227 HW2 SOL 408 24.761 19.420 17.110 1.00 0.00 H +ATOM 1228 OW SOL 409 19.328 20.068 13.042 1.00 0.00 O +ATOM 1229 HW1 SOL 409 18.576 19.495 12.717 1.00 0.00 H +ATOM 1230 HW2 SOL 409 19.812 19.477 13.687 1.00 0.00 H +ATOM 1231 OW SOL 410 21.237 25.471 27.521 1.00 0.00 O +ATOM 1232 HW1 SOL 410 21.435 24.646 28.050 1.00 0.00 H +ATOM 1233 HW2 SOL 410 20.625 25.992 28.116 1.00 0.00 H +ATOM 1234 OW SOL 411 12.074 20.398 27.067 1.00 0.00 O +ATOM 1235 HW1 SOL 411 12.603 19.796 27.664 1.00 0.00 H +ATOM 1236 HW2 SOL 411 11.489 20.905 27.700 1.00 0.00 H +ATOM 1237 OW SOL 412 13.812 21.589 25.906 1.00 0.00 O +ATOM 1238 HW1 SOL 412 12.974 21.098 25.669 1.00 0.00 H +ATOM 1239 HW2 SOL 412 14.451 20.860 26.151 1.00 0.00 H +ATOM 1240 OW SOL 413 25.688 30.704 27.010 1.00 0.00 O +ATOM 1241 HW1 SOL 413 25.097 30.864 26.221 1.00 0.00 H +ATOM 1242 HW2 SOL 413 25.225 31.186 27.754 1.00 0.00 H +ATOM 1243 OW SOL 414 13.208 18.032 32.434 1.00 0.00 O +ATOM 1244 HW1 SOL 414 14.078 18.249 31.993 1.00 0.00 H +ATOM 1245 HW2 SOL 414 12.655 18.852 32.282 1.00 0.00 H +ATOM 1246 OW SOL 415 7.108 16.434 22.080 1.00 0.00 O +ATOM 1247 HW1 SOL 415 7.484 17.358 22.011 1.00 0.00 H +ATOM 1248 HW2 SOL 415 7.761 15.875 21.567 1.00 0.00 H +ATOM 1249 OW SOL 416 14.774 20.761 17.474 1.00 0.00 O +ATOM 1250 HW1 SOL 416 14.703 19.946 18.048 1.00 0.00 H +ATOM 1251 HW2 SOL 416 15.365 20.469 16.722 1.00 0.00 H +ATOM 1252 OW SOL 417 25.788 20.505 20.425 1.00 0.00 O +ATOM 1253 HW1 SOL 417 24.806 20.348 20.318 1.00 0.00 H +ATOM 1254 HW2 SOL 417 26.199 19.650 20.108 1.00 0.00 H +ATOM 1255 OW SOL 418 9.167 20.054 18.678 1.00 0.00 O +ATOM 1256 HW1 SOL 418 8.771 19.152 18.849 1.00 0.00 H +ATOM 1257 HW2 SOL 418 10.121 19.854 18.456 1.00 0.00 H +ATOM 1258 OW SOL 419 9.447 26.979 21.497 1.00 0.00 O +ATOM 1259 HW1 SOL 419 9.976 26.656 20.713 1.00 0.00 H +ATOM 1260 HW2 SOL 419 8.504 26.750 21.255 1.00 0.00 H +ATOM 1261 OW SOL 420 18.650 8.256 26.647 1.00 0.00 O +ATOM 1262 HW1 SOL 420 19.333 8.559 27.311 1.00 0.00 H +ATOM 1263 HW2 SOL 420 18.178 9.099 26.392 1.00 0.00 H +ATOM 1264 OW SOL 421 15.908 15.453 17.743 1.00 0.00 O +ATOM 1265 HW1 SOL 421 15.775 14.632 17.188 1.00 0.00 H +ATOM 1266 HW2 SOL 421 15.282 15.322 18.512 1.00 0.00 H +ATOM 1267 OW SOL 422 11.188 23.471 19.185 1.00 0.00 O +ATOM 1268 HW1 SOL 422 11.046 23.246 18.221 1.00 0.00 H +ATOM 1269 HW2 SOL 422 10.980 22.615 19.659 1.00 0.00 H +ATOM 1270 OW SOL 423 29.510 25.440 22.026 1.00 0.00 O +ATOM 1271 HW1 SOL 423 28.759 25.853 22.540 1.00 0.00 H +ATOM 1272 HW2 SOL 423 29.659 24.566 22.487 1.00 0.00 H +ATOM 1273 OW SOL 424 15.725 17.515 14.579 1.00 0.00 O +ATOM 1274 HW1 SOL 424 15.688 18.487 14.813 1.00 0.00 H +ATOM 1275 HW2 SOL 424 16.285 17.119 15.307 1.00 0.00 H +ATOM 1276 OW SOL 425 18.623 29.156 26.325 1.00 0.00 O +ATOM 1277 HW1 SOL 425 18.714 29.852 25.612 1.00 0.00 H +ATOM 1278 HW2 SOL 425 18.470 28.311 25.812 1.00 0.00 H +ATOM 1279 OW SOL 426 21.211 9.001 15.334 1.00 0.00 O +ATOM 1280 HW1 SOL 426 20.960 8.753 14.399 1.00 0.00 H +ATOM 1281 HW2 SOL 426 21.147 9.998 15.339 1.00 0.00 H +ATOM 1282 OW SOL 427 19.904 17.241 23.554 1.00 0.00 O +ATOM 1283 HW1 SOL 427 19.290 16.757 22.932 1.00 0.00 H +ATOM 1284 HW2 SOL 427 19.962 16.637 24.348 1.00 0.00 H +ATOM 1285 OW SOL 428 21.748 11.771 22.640 1.00 0.00 O +ATOM 1286 HW1 SOL 428 21.852 12.618 22.120 1.00 0.00 H +ATOM 1287 HW2 SOL 428 21.788 12.072 23.593 1.00 0.00 H +ATOM 1288 OW SOL 429 24.392 10.424 15.644 1.00 0.00 O +ATOM 1289 HW1 SOL 429 25.310 10.820 15.617 1.00 0.00 H +ATOM 1290 HW2 SOL 429 23.962 10.771 14.811 1.00 0.00 H +ATOM 1291 OW SOL 430 10.495 24.796 24.754 1.00 0.00 O +ATOM 1292 HW1 SOL 430 9.585 25.143 24.981 1.00 0.00 H +ATOM 1293 HW2 SOL 430 11.113 25.458 25.178 1.00 0.00 H +ATOM 1294 OW SOL 431 25.149 15.809 11.203 1.00 0.00 O +ATOM 1295 HW1 SOL 431 24.365 15.298 10.851 1.00 0.00 H +ATOM 1296 HW2 SOL 431 24.776 16.298 11.992 1.00 0.00 H +ATOM 1297 OW SOL 432 22.707 30.090 25.598 1.00 0.00 O +ATOM 1298 HW1 SOL 432 22.038 29.827 26.292 1.00 0.00 H +ATOM 1299 HW2 SOL 432 23.157 30.890 25.995 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_interface_bomd/coords_2955.pdb b/examples/latte_interface_bomd/coords_2955.pdb new file mode 100644 index 00000000..04974ee5 --- /dev/null +++ b/examples/latte_interface_bomd/coords_2955.pdb @@ -0,0 +1,2961 @@ +TITLE my_single_water.xyz +REMARK THIS IS A SIMULATION BOX +CRYST1 31.230 31.230 31.230 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H HOH 0 15.009 16.295 15.615 1.00 0.00 H +ATOM 2 O HOH 1 15.427 15.434 15.615 1.00 0.00 O +ATOM 3 H HOH 0 16.408 15.115 15.615 1.00 0.00 H +ATOM 4 OW SOL 1 5.690 12.751 11.651 1.00 0.00 O +ATOM 5 HW1 SOL 1 4.760 12.681 11.281 1.00 0.00 H +ATOM 6 HW2 SOL 1 5.800 13.641 12.091 1.00 0.00 H +ATOM 7 OW SOL 2 15.551 15.111 7.030 1.00 0.00 O +ATOM 8 HW1 SOL 2 14.981 14.951 7.840 1.00 0.00 H +ATOM 9 HW2 SOL 2 14.961 15.211 6.230 1.00 0.00 H +ATOM 10 OW SOL 3 17.431 6.180 8.560 1.00 0.00 O +ATOM 11 HW1 SOL 3 17.761 7.120 8.560 1.00 0.00 H +ATOM 12 HW2 SOL 3 17.941 5.640 9.220 1.00 0.00 H +ATOM 13 OW SOL 4 11.351 7.030 7.170 1.00 0.00 O +ATOM 14 HW1 SOL 4 11.921 7.810 6.920 1.00 0.00 H +ATOM 15 HW2 SOL 4 10.751 7.290 7.930 1.00 0.00 H +ATOM 16 OW SOL 5 17.551 6.070 2.310 1.00 0.00 O +ATOM 17 HW1 SOL 5 17.431 5.940 1.320 1.00 0.00 H +ATOM 18 HW2 SOL 5 17.251 5.260 2.800 1.00 0.00 H +ATOM 19 OW SOL 6 7.680 11.441 10.231 1.00 0.00 O +ATOM 20 HW1 SOL 6 6.900 11.611 10.831 1.00 0.00 H +ATOM 21 HW2 SOL 6 8.020 12.311 9.871 1.00 0.00 H +ATOM 22 OW SOL 7 8.500 7.980 18.231 1.00 0.00 O +ATOM 23 HW1 SOL 7 8.460 8.740 18.881 1.00 0.00 H +ATOM 24 HW2 SOL 7 8.720 8.340 17.321 1.00 0.00 H +ATOM 25 OW SOL 8 6.850 10.121 6.650 1.00 0.00 O +ATOM 26 HW1 SOL 8 7.540 9.961 7.350 1.00 0.00 H +ATOM 27 HW2 SOL 8 6.120 10.691 7.030 1.00 0.00 H +ATOM 28 OW SOL 9 6.860 11.611 18.031 1.00 0.00 O +ATOM 29 HW1 SOL 9 7.460 12.401 18.171 1.00 0.00 H +ATOM 30 HW2 SOL 9 6.000 11.921 17.621 1.00 0.00 H +ATOM 31 OW SOL 10 14.601 15.051 13.391 1.00 0.00 O +ATOM 32 HW1 SOL 10 14.841 15.991 13.651 1.00 0.00 H +ATOM 33 HW2 SOL 10 14.441 14.511 14.211 1.00 0.00 H +ATOM 34 OW SOL 11 4.380 3.920 14.991 1.00 0.00 O +ATOM 35 HW1 SOL 11 5.200 3.360 15.081 1.00 0.00 H +ATOM 36 HW2 SOL 11 3.570 3.340 15.031 1.00 0.00 H +ATOM 37 OW SOL 12 16.031 4.470 7.370 1.00 0.00 O +ATOM 38 HW1 SOL 12 15.291 4.930 6.870 1.00 0.00 H +ATOM 39 HW2 SOL 12 16.541 5.150 7.900 1.00 0.00 H +ATOM 40 OW SOL 13 11.271 13.411 16.901 1.00 0.00 O +ATOM 41 HW1 SOL 13 11.741 13.411 17.781 1.00 0.00 H +ATOM 42 HW2 SOL 13 10.791 12.541 16.791 1.00 0.00 H +ATOM 43 OW SOL 14 2.400 10.911 8.860 1.00 0.00 O +ATOM 44 HW1 SOL 14 2.540 10.071 9.380 1.00 0.00 H +ATOM 45 HW2 SOL 14 1.850 11.551 9.410 1.00 0.00 H +ATOM 46 OW SOL 15 6.200 17.861 14.391 1.00 0.00 O +ATOM 47 HW1 SOL 15 5.280 17.691 14.741 1.00 0.00 H +ATOM 48 HW2 SOL 15 6.480 18.781 14.651 1.00 0.00 H +ATOM 49 OW SOL 16 6.060 9.641 1.230 1.00 0.00 O +ATOM 50 HW1 SOL 16 6.130 10.481 0.690 1.00 0.00 H +ATOM 51 HW2 SOL 16 6.520 9.771 2.110 1.00 0.00 H +ATOM 52 OW SOL 17 15.941 1.140 14.801 1.00 0.00 O +ATOM 53 HW1 SOL 17 15.761 1.810 14.081 1.00 0.00 H +ATOM 54 HW2 SOL 17 15.911 1.600 15.691 1.00 0.00 H +ATOM 55 OW SOL 18 1.220 6.430 5.630 1.00 0.00 O +ATOM 56 HW1 SOL 18 0.770 5.550 5.800 1.00 0.00 H +ATOM 57 HW2 SOL 18 1.210 6.970 6.470 1.00 0.00 H +ATOM 58 OW SOL 19 18.421 17.671 3.590 1.00 0.00 O +ATOM 59 HW1 SOL 19 18.961 17.381 4.390 1.00 0.00 H +ATOM 60 HW2 SOL 19 18.721 18.571 3.300 1.00 0.00 H +ATOM 61 OW SOL 20 16.891 9.220 6.120 1.00 0.00 O +ATOM 62 HW1 SOL 20 17.841 8.930 6.200 1.00 0.00 H +ATOM 63 HW2 SOL 20 16.811 9.870 5.370 1.00 0.00 H +ATOM 64 OW SOL 21 16.411 11.081 4.320 1.00 0.00 O +ATOM 65 HW1 SOL 21 17.271 11.101 3.800 1.00 0.00 H +ATOM 66 HW2 SOL 21 16.551 11.551 5.200 1.00 0.00 H +ATOM 67 OW SOL 22 1.130 7.370 15.971 1.00 0.00 O +ATOM 68 HW1 SOL 22 2.010 7.240 16.421 1.00 0.00 H +ATOM 69 HW2 SOL 22 1.000 8.340 15.751 1.00 0.00 H +ATOM 70 OW SOL 23 6.130 13.651 7.260 1.00 0.00 O +ATOM 71 HW1 SOL 23 5.640 12.781 7.350 1.00 0.00 H +ATOM 72 HW2 SOL 23 5.900 14.081 6.390 1.00 0.00 H +ATOM 73 OW SOL 24 12.931 12.281 14.231 1.00 0.00 O +ATOM 74 HW1 SOL 24 13.301 11.551 13.651 1.00 0.00 H +ATOM 75 HW2 SOL 24 13.451 12.331 15.081 1.00 0.00 H +ATOM 76 OW SOL 25 8.090 0.040 5.020 1.00 0.00 O +ATOM 77 HW1 SOL 25 8.490 0.950 4.930 1.00 0.00 H +ATOM 78 HW2 SOL 25 7.090 0.120 5.080 1.00 0.00 H +ATOM 79 OW SOL 26 15.251 9.991 1.900 1.00 0.00 O +ATOM 80 HW1 SOL 26 14.621 9.231 2.030 1.00 0.00 H +ATOM 81 HW2 SOL 26 15.731 10.171 2.760 1.00 0.00 H +ATOM 82 OW SOL 27 11.871 17.921 16.161 1.00 0.00 O +ATOM 83 HW1 SOL 27 12.111 18.521 15.401 1.00 0.00 H +ATOM 84 HW2 SOL 27 11.941 16.971 15.861 1.00 0.00 H +ATOM 85 OW SOL 28 3.170 2.510 18.011 1.00 0.00 O +ATOM 86 HW1 SOL 28 3.880 3.220 18.071 1.00 0.00 H +ATOM 87 HW2 SOL 28 2.290 2.900 18.291 1.00 0.00 H +ATOM 88 OW SOL 29 14.661 14.171 9.531 1.00 0.00 O +ATOM 89 HW1 SOL 29 14.071 14.231 10.331 1.00 0.00 H +ATOM 90 HW2 SOL 29 14.511 13.291 9.071 1.00 0.00 H +ATOM 91 OW SOL 30 16.671 17.141 5.720 1.00 0.00 O +ATOM 92 HW1 SOL 30 16.261 16.911 4.840 1.00 0.00 H +ATOM 93 HW2 SOL 30 16.491 16.401 6.370 1.00 0.00 H +ATOM 94 OW SOL 31 5.980 7.290 2.700 1.00 0.00 O +ATOM 95 HW1 SOL 31 6.220 7.980 2.020 1.00 0.00 H +ATOM 96 HW2 SOL 31 5.200 7.620 3.240 1.00 0.00 H +ATOM 97 OW SOL 32 12.811 3.450 9.441 1.00 0.00 O +ATOM 98 HW1 SOL 32 11.951 2.950 9.311 1.00 0.00 H +ATOM 99 HW2 SOL 32 13.431 2.910 10.001 1.00 0.00 H +ATOM 100 OW SOL 33 15.761 16.621 3.070 1.00 0.00 O +ATOM 101 HW1 SOL 33 16.651 17.081 3.100 1.00 0.00 H +ATOM 102 HW2 SOL 33 15.551 16.381 2.120 1.00 0.00 H +ATOM 103 OW SOL 34 8.070 6.050 14.651 1.00 0.00 O +ATOM 104 HW1 SOL 34 7.600 6.020 15.541 1.00 0.00 H +ATOM 105 HW2 SOL 34 7.560 5.500 13.991 1.00 0.00 H +ATOM 106 OW SOL 35 13.941 4.690 16.741 1.00 0.00 O +ATOM 107 HW1 SOL 35 13.741 5.120 17.621 1.00 0.00 H +ATOM 108 HW2 SOL 35 14.721 4.070 16.831 1.00 0.00 H +ATOM 109 OW SOL 36 9.731 8.900 15.721 1.00 0.00 O +ATOM 110 HW1 SOL 36 10.191 8.060 15.431 1.00 0.00 H +ATOM 111 HW2 SOL 36 9.171 9.240 14.971 1.00 0.00 H +ATOM 112 OW SOL 37 9.911 4.100 12.421 1.00 0.00 O +ATOM 113 HW1 SOL 37 9.141 4.440 12.961 1.00 0.00 H +ATOM 114 HW2 SOL 37 9.571 3.590 11.631 1.00 0.00 H +ATOM 115 OW SOL 38 10.411 7.010 4.290 1.00 0.00 O +ATOM 116 HW1 SOL 38 10.671 6.970 5.250 1.00 0.00 H +ATOM 117 HW2 SOL 38 9.561 6.500 4.150 1.00 0.00 H +ATOM 118 OW SOL 39 8.650 3.480 1.950 1.00 0.00 O +ATOM 119 HW1 SOL 39 9.240 4.110 1.460 1.00 0.00 H +ATOM 120 HW2 SOL 39 8.840 2.540 1.660 1.00 0.00 H +ATOM 121 OW SOL 40 17.191 5.850 18.311 1.00 0.00 O +ATOM 122 HW1 SOL 40 16.931 6.740 17.951 1.00 0.00 H +ATOM 123 HW2 SOL 40 17.171 5.170 17.581 1.00 0.00 H +ATOM 124 OW SOL 41 13.621 11.441 5.450 1.00 0.00 O +ATOM 125 HW1 SOL 41 14.451 11.151 4.970 1.00 0.00 H +ATOM 126 HW2 SOL 41 13.131 12.111 4.890 1.00 0.00 H +ATOM 127 OW SOL 42 5.500 1.960 8.850 1.00 0.00 O +ATOM 128 HW1 SOL 42 5.450 1.910 9.850 1.00 0.00 H +ATOM 129 HW2 SOL 42 5.520 2.920 8.560 1.00 0.00 H +ATOM 130 OW SOL 43 10.081 14.561 4.770 1.00 0.00 O +ATOM 131 HW1 SOL 43 9.621 15.281 4.250 1.00 0.00 H +ATOM 132 HW2 SOL 43 10.041 14.761 5.750 1.00 0.00 H +ATOM 133 OW SOL 44 3.510 18.011 8.530 1.00 0.00 O +ATOM 134 HW1 SOL 44 4.010 17.151 8.590 1.00 0.00 H +ATOM 135 HW2 SOL 44 4.160 18.781 8.500 1.00 0.00 H +ATOM 136 OW SOL 45 17.951 10.661 8.730 1.00 0.00 O +ATOM 137 HW1 SOL 45 17.331 10.511 7.970 1.00 0.00 H +ATOM 138 HW2 SOL 45 17.431 10.771 9.580 1.00 0.00 H +ATOM 139 OW SOL 46 12.271 15.501 15.061 1.00 0.00 O +ATOM 140 HW1 SOL 46 12.331 14.731 15.701 1.00 0.00 H +ATOM 141 HW2 SOL 46 11.751 15.241 14.261 1.00 0.00 H +ATOM 142 OW SOL 47 3.210 9.431 2.420 1.00 0.00 O +ATOM 143 HW1 SOL 47 4.030 9.821 2.000 1.00 0.00 H +ATOM 144 HW2 SOL 47 2.940 8.611 1.930 1.00 0.00 H +ATOM 145 OW SOL 48 14.581 7.350 7.280 1.00 0.00 O +ATOM 146 HW1 SOL 48 14.531 6.700 8.030 1.00 0.00 H +ATOM 147 HW2 SOL 48 15.381 7.940 7.410 1.00 0.00 H +ATOM 148 OW SOL 49 4.610 12.661 17.271 1.00 0.00 O +ATOM 149 HW1 SOL 49 4.110 12.671 16.411 1.00 0.00 H +ATOM 150 HW2 SOL 49 3.980 12.481 18.031 1.00 0.00 H +ATOM 151 OW SOL 50 11.111 17.761 2.370 1.00 0.00 O +ATOM 152 HW1 SOL 50 10.511 17.141 2.870 1.00 0.00 H +ATOM 153 HW2 SOL 50 11.421 17.321 1.520 1.00 0.00 H +ATOM 154 OW SOL 51 2.020 2.850 14.981 1.00 0.00 O +ATOM 155 HW1 SOL 51 1.220 3.450 14.851 1.00 0.00 H +ATOM 156 HW2 SOL 51 1.920 2.360 15.841 1.00 0.00 H +ATOM 157 OW SOL 52 16.321 13.771 0.810 1.00 0.00 O +ATOM 158 HW1 SOL 52 16.001 14.711 0.710 1.00 0.00 H +ATOM 159 HW2 SOL 52 15.561 13.141 0.690 1.00 0.00 H +ATOM 160 OW SOL 53 4.640 17.431 3.230 1.00 0.00 O +ATOM 161 HW1 SOL 53 4.970 17.821 4.090 1.00 0.00 H +ATOM 162 HW2 SOL 53 5.400 17.361 2.580 1.00 0.00 H +ATOM 163 OW SOL 54 14.001 1.070 4.260 1.00 0.00 O +ATOM 164 HW1 SOL 54 13.761 0.700 3.360 1.00 0.00 H +ATOM 165 HW2 SOL 54 14.991 1.230 4.300 1.00 0.00 H +ATOM 166 OW SOL 55 2.490 17.851 12.411 1.00 0.00 O +ATOM 167 HW1 SOL 55 3.060 17.201 12.911 1.00 0.00 H +ATOM 168 HW2 SOL 55 2.330 17.521 11.481 1.00 0.00 H +ATOM 169 OW SOL 56 9.401 16.981 9.040 1.00 0.00 O +ATOM 170 HW1 SOL 56 10.201 16.411 9.250 1.00 0.00 H +ATOM 171 HW2 SOL 56 8.911 16.581 8.270 1.00 0.00 H +ATOM 172 OW SOL 57 3.820 7.000 4.800 1.00 0.00 O +ATOM 173 HW1 SOL 57 4.270 6.100 4.770 1.00 0.00 H +ATOM 174 HW2 SOL 57 2.880 6.890 5.130 1.00 0.00 H +ATOM 175 OW SOL 58 15.471 2.220 17.291 1.00 0.00 O +ATOM 176 HW1 SOL 58 15.421 2.590 18.211 1.00 0.00 H +ATOM 177 HW2 SOL 58 14.751 1.530 17.171 1.00 0.00 H +ATOM 178 OW SOL 59 6.140 1.220 1.170 1.00 0.00 O +ATOM 179 HW1 SOL 59 7.120 1.000 1.240 1.00 0.00 H +ATOM 180 HW2 SOL 59 5.830 1.050 0.240 1.00 0.00 H +ATOM 181 OW SOL 60 7.810 2.640 17.491 1.00 0.00 O +ATOM 182 HW1 SOL 60 8.480 2.030 17.921 1.00 0.00 H +ATOM 183 HW2 SOL 60 7.080 2.830 18.141 1.00 0.00 H +ATOM 184 OW SOL 61 8.880 15.141 11.951 1.00 0.00 O +ATOM 185 HW1 SOL 61 8.650 14.891 11.011 1.00 0.00 H +ATOM 186 HW2 SOL 61 9.490 14.451 12.341 1.00 0.00 H +ATOM 187 OW SOL 62 13.511 5.900 14.331 1.00 0.00 O +ATOM 188 HW1 SOL 62 13.791 5.470 15.181 1.00 0.00 H +ATOM 189 HW2 SOL 62 13.761 6.860 14.341 1.00 0.00 H +ATOM 190 OW SOL 63 8.030 14.021 9.240 1.00 0.00 O +ATOM 191 HW1 SOL 63 8.930 14.161 8.820 1.00 0.00 H +ATOM 192 HW2 SOL 63 7.320 14.041 8.530 1.00 0.00 H +ATOM 193 OW SOL 64 9.220 5.030 8.990 1.00 0.00 O +ATOM 194 HW1 SOL 64 8.970 4.940 8.030 1.00 0.00 H +ATOM 195 HW2 SOL 64 9.700 4.210 9.300 1.00 0.00 H +ATOM 196 OW SOL 65 5.390 0.640 5.120 1.00 0.00 O +ATOM 197 HW1 SOL 65 4.580 0.650 5.700 1.00 0.00 H +ATOM 198 HW2 SOL 65 5.420 1.470 4.570 1.00 0.00 H +ATOM 199 OW SOL 66 14.341 11.881 0.410 1.00 0.00 O +ATOM 200 HW1 SOL 66 14.661 11.121 0.980 1.00 0.00 H +ATOM 201 HW2 SOL 66 13.421 12.151 0.710 1.00 0.00 H +ATOM 202 OW SOL 67 2.970 0.350 1.710 1.00 0.00 O +ATOM 203 HW1 SOL 67 3.460 1.190 1.500 1.00 0.00 H +ATOM 204 HW2 SOL 67 3.590 -0.300 2.160 1.00 0.00 H +ATOM 205 OW SOL 68 9.351 2.360 4.800 1.00 0.00 O +ATOM 206 HW1 SOL 68 8.871 2.770 4.020 1.00 0.00 H +ATOM 207 HW2 SOL 68 10.341 2.340 4.610 1.00 0.00 H +ATOM 208 OW SOL 69 10.761 6.830 14.641 1.00 0.00 O +ATOM 209 HW1 SOL 69 9.961 6.220 14.671 1.00 0.00 H +ATOM 210 HW2 SOL 69 11.571 6.300 14.401 1.00 0.00 H +ATOM 211 OW SOL 70 12.271 15.701 7.930 1.00 0.00 O +ATOM 212 HW1 SOL 70 12.481 16.441 7.280 1.00 0.00 H +ATOM 213 HW2 SOL 70 12.951 15.701 8.660 1.00 0.00 H +ATOM 214 OW SOL 71 4.590 11.521 7.410 1.00 0.00 O +ATOM 215 HW1 SOL 71 3.880 11.251 8.060 1.00 0.00 H +ATOM 216 HW2 SOL 71 4.330 11.241 6.480 1.00 0.00 H +ATOM 217 OW SOL 72 12.711 17.971 5.910 1.00 0.00 O +ATOM 218 HW1 SOL 72 13.151 18.611 5.270 1.00 0.00 H +ATOM 219 HW2 SOL 72 12.211 18.491 6.610 1.00 0.00 H +ATOM 220 OW SOL 73 10.321 5.490 0.160 1.00 0.00 O +ATOM 221 HW1 SOL 73 9.911 6.310 -0.230 1.00 0.00 H +ATOM 222 HW2 SOL 73 10.961 5.750 0.890 1.00 0.00 H +ATOM 223 OW SOL 74 5.610 2.220 11.471 1.00 0.00 O +ATOM 224 HW1 SOL 74 5.990 1.380 11.841 1.00 0.00 H +ATOM 225 HW2 SOL 74 4.730 2.410 11.911 1.00 0.00 H +ATOM 226 OW SOL 75 8.660 4.540 6.420 1.00 0.00 O +ATOM 227 HW1 SOL 75 8.340 5.260 5.800 1.00 0.00 H +ATOM 228 HW2 SOL 75 8.900 3.730 5.890 1.00 0.00 H +ATOM 229 OW SOL 76 10.171 0.390 7.530 1.00 0.00 O +ATOM 230 HW1 SOL 76 9.451 0.440 6.840 1.00 0.00 H +ATOM 231 HW2 SOL 76 9.931 -0.300 8.220 1.00 0.00 H +ATOM 232 OW SOL 77 14.291 11.731 8.670 1.00 0.00 O +ATOM 233 HW1 SOL 77 13.741 10.891 8.600 1.00 0.00 H +ATOM 234 HW2 SOL 77 14.551 12.021 7.750 1.00 0.00 H +ATOM 235 OW SOL 78 14.661 5.900 9.921 1.00 0.00 O +ATOM 236 HW1 SOL 78 14.361 4.950 9.991 1.00 0.00 H +ATOM 237 HW2 SOL 78 15.391 6.060 10.581 1.00 0.00 H +ATOM 238 OW SOL 79 18.571 8.330 3.770 1.00 0.00 O +ATOM 239 HW1 SOL 79 18.991 7.690 4.410 1.00 0.00 H +ATOM 240 HW2 SOL 79 18.191 7.820 2.990 1.00 0.00 H +ATOM 241 OW SOL 80 4.880 13.851 1.740 1.00 0.00 O +ATOM 242 HW1 SOL 80 4.010 13.701 2.210 1.00 0.00 H +ATOM 243 HW2 SOL 80 4.710 14.111 0.790 1.00 0.00 H +ATOM 244 OW SOL 81 16.641 12.801 6.570 1.00 0.00 O +ATOM 245 HW1 SOL 81 17.631 12.881 6.710 1.00 0.00 H +ATOM 246 HW2 SOL 81 16.191 13.641 6.880 1.00 0.00 H +ATOM 247 OW SOL 82 13.901 5.750 0.780 1.00 0.00 O +ATOM 248 HW1 SOL 82 13.361 5.540 1.590 1.00 0.00 H +ATOM 249 HW2 SOL 82 14.811 5.340 0.870 1.00 0.00 H +ATOM 250 OW SOL 83 5.270 2.560 3.280 1.00 0.00 O +ATOM 251 HW1 SOL 83 5.540 1.970 2.530 1.00 0.00 H +ATOM 252 HW2 SOL 83 5.270 3.510 2.970 1.00 0.00 H +ATOM 253 OW SOL 84 17.541 12.231 15.881 1.00 0.00 O +ATOM 254 HW1 SOL 84 18.451 11.841 15.751 1.00 0.00 H +ATOM 255 HW2 SOL 84 17.621 13.191 16.121 1.00 0.00 H +ATOM 256 OW SOL 85 10.641 13.471 13.401 1.00 0.00 O +ATOM 257 HW1 SOL 85 9.841 13.241 13.951 1.00 0.00 H +ATOM 258 HW2 SOL 85 11.471 13.211 13.891 1.00 0.00 H +ATOM 259 OW SOL 86 11.111 11.951 11.001 1.00 0.00 O +ATOM 260 HW1 SOL 86 10.711 12.391 11.811 1.00 0.00 H +ATOM 261 HW2 SOL 86 10.701 12.321 10.171 1.00 0.00 H +ATOM 262 OW SOL 87 16.381 10.991 10.791 1.00 0.00 O +ATOM 263 HW1 SOL 87 16.431 11.801 11.381 1.00 0.00 H +ATOM 264 HW2 SOL 87 15.521 11.011 10.281 1.00 0.00 H +ATOM 265 OW SOL 88 9.150 0.890 14.021 1.00 0.00 O +ATOM 266 HW1 SOL 88 9.400 0.690 13.071 1.00 0.00 H +ATOM 267 HW2 SOL 88 9.870 1.450 14.441 1.00 0.00 H +ATOM 268 OW SOL 89 9.801 11.161 17.191 1.00 0.00 O +ATOM 269 HW1 SOL 89 8.811 11.221 17.291 1.00 0.00 H +ATOM 270 HW2 SOL 89 10.031 10.361 16.631 1.00 0.00 H +ATOM 271 OW SOL 90 7.050 10.501 3.680 1.00 0.00 O +ATOM 272 HW1 SOL 90 6.910 10.571 4.670 1.00 0.00 H +ATOM 273 HW2 SOL 90 7.890 9.991 3.500 1.00 0.00 H +ATOM 274 OW SOL 91 4.100 8.130 12.511 1.00 0.00 O +ATOM 275 HW1 SOL 91 4.960 8.250 13.011 1.00 0.00 H +ATOM 276 HW2 SOL 91 3.680 7.260 12.781 1.00 0.00 H +ATOM 277 OW SOL 92 12.741 3.860 12.621 1.00 0.00 O +ATOM 278 HW1 SOL 92 12.951 4.600 13.261 1.00 0.00 H +ATOM 279 HW2 SOL 92 11.851 4.030 12.191 1.00 0.00 H +ATOM 280 OW SOL 93 0.640 15.641 13.311 1.00 0.00 O +ATOM 281 HW1 SOL 93 0.180 16.461 12.971 1.00 0.00 H +ATOM 282 HW2 SOL 93 1.620 15.831 13.401 1.00 0.00 H +ATOM 283 OW SOL 94 3.670 11.001 5.010 1.00 0.00 O +ATOM 284 HW1 SOL 94 3.600 11.831 4.450 1.00 0.00 H +ATOM 285 HW2 SOL 94 3.710 10.201 4.410 1.00 0.00 H +ATOM 286 OW SOL 95 5.660 5.370 8.650 1.00 0.00 O +ATOM 287 HW1 SOL 95 5.780 6.030 7.910 1.00 0.00 H +ATOM 288 HW2 SOL 95 6.120 5.710 9.480 1.00 0.00 H +ATOM 289 OW SOL 96 12.521 13.481 3.880 1.00 0.00 O +ATOM 290 HW1 SOL 96 13.021 14.251 4.280 1.00 0.00 H +ATOM 291 HW2 SOL 96 11.571 13.501 4.200 1.00 0.00 H +ATOM 292 OW SOL 97 12.721 14.451 11.421 1.00 0.00 O +ATOM 293 HW1 SOL 97 13.191 14.581 12.291 1.00 0.00 H +ATOM 294 HW2 SOL 97 12.061 13.711 11.511 1.00 0.00 H +ATOM 295 OW SOL 98 15.821 6.390 4.720 1.00 0.00 O +ATOM 296 HW1 SOL 98 15.511 7.000 5.450 1.00 0.00 H +ATOM 297 HW2 SOL 98 16.321 6.910 4.030 1.00 0.00 H +ATOM 298 OW SOL 99 3.540 15.101 13.291 1.00 0.00 O +ATOM 299 HW1 SOL 99 3.330 14.661 12.421 1.00 0.00 H +ATOM 300 HW2 SOL 99 4.510 15.361 13.321 1.00 0.00 H +ATOM 301 OW SOL 100 4.020 7.510 15.981 1.00 0.00 O +ATOM 302 HW1 SOL 100 4.700 8.060 15.511 1.00 0.00 H +ATOM 303 HW2 SOL 100 4.420 6.630 16.251 1.00 0.00 H +ATOM 304 OW SOL 101 15.871 7.790 16.701 1.00 0.00 O +ATOM 305 HW1 SOL 101 14.951 8.170 16.651 1.00 0.00 H +ATOM 306 HW2 SOL 101 16.471 8.260 16.051 1.00 0.00 H +ATOM 307 OW SOL 102 10.131 1.050 17.701 1.00 0.00 O +ATOM 308 HW1 SOL 102 10.191 1.900 17.181 1.00 0.00 H +ATOM 309 HW2 SOL 102 10.451 0.290 17.131 1.00 0.00 H +ATOM 310 OW SOL 103 5.040 0.500 17.401 1.00 0.00 O +ATOM 311 HW1 SOL 103 4.620 -0.070 16.701 1.00 0.00 H +ATOM 312 HW2 SOL 103 4.380 1.190 17.721 1.00 0.00 H +ATOM 313 OW SOL 104 5.730 8.700 10.291 1.00 0.00 O +ATOM 314 HW1 SOL 104 6.170 9.590 10.201 1.00 0.00 H +ATOM 315 HW2 SOL 104 5.100 8.700 11.061 1.00 0.00 H +ATOM 316 OW SOL 105 13.601 8.620 10.451 1.00 0.00 O +ATOM 317 HW1 SOL 105 12.851 8.620 9.791 1.00 0.00 H +ATOM 318 HW2 SOL 105 13.971 7.700 10.541 1.00 0.00 H +ATOM 319 OW SOL 106 12.091 5.250 2.750 1.00 0.00 O +ATOM 320 HW1 SOL 106 12.221 4.410 3.290 1.00 0.00 H +ATOM 321 HW2 SOL 106 11.801 5.990 3.350 1.00 0.00 H +ATOM 322 OW SOL 107 0.370 13.101 12.821 1.00 0.00 O +ATOM 323 HW1 SOL 107 0.900 12.611 13.501 1.00 0.00 H +ATOM 324 HW2 SOL 107 0.590 14.081 12.871 1.00 0.00 H +ATOM 325 OW SOL 108 7.320 6.340 10.641 1.00 0.00 O +ATOM 326 HW1 SOL 108 7.910 6.080 9.881 1.00 0.00 H +ATOM 327 HW2 SOL 108 7.040 7.300 10.531 1.00 0.00 H +ATOM 328 OW SOL 109 17.281 9.351 18.541 1.00 0.00 O +ATOM 329 HW1 SOL 109 16.821 9.281 17.651 1.00 0.00 H +ATOM 330 HW2 SOL 109 16.661 9.791 19.201 1.00 0.00 H +ATOM 331 OW SOL 110 3.070 0.630 6.180 1.00 0.00 O +ATOM 332 HW1 SOL 110 2.960 1.570 6.510 1.00 0.00 H +ATOM 333 HW2 SOL 110 3.020 0.000 6.950 1.00 0.00 H +ATOM 334 OW SOL 111 16.221 3.670 3.740 1.00 0.00 O +ATOM 335 HW1 SOL 111 16.241 2.910 4.380 1.00 0.00 H +ATOM 336 HW2 SOL 111 15.741 4.440 4.140 1.00 0.00 H +ATOM 337 OW SOL 112 10.231 7.660 9.661 1.00 0.00 O +ATOM 338 HW1 SOL 112 10.381 7.870 10.621 1.00 0.00 H +ATOM 339 HW2 SOL 112 9.931 6.710 9.571 1.00 0.00 H +ATOM 340 OW SOL 113 9.801 15.731 17.001 1.00 0.00 O +ATOM 341 HW1 SOL 113 9.601 16.171 16.121 1.00 0.00 H +ATOM 342 HW2 SOL 113 10.191 14.821 16.841 1.00 0.00 H +ATOM 343 OW SOL 114 18.591 15.181 16.051 1.00 0.00 O +ATOM 344 HW1 SOL 114 18.731 15.451 15.101 1.00 0.00 H +ATOM 345 HW2 SOL 114 19.421 15.401 16.581 1.00 0.00 H +ATOM 346 OW SOL 115 3.500 8.980 18.041 1.00 0.00 O +ATOM 347 HW1 SOL 115 4.260 9.420 18.521 1.00 0.00 H +ATOM 348 HW2 SOL 115 3.850 8.510 17.221 1.00 0.00 H +ATOM 349 OW SOL 116 15.401 2.740 1.250 1.00 0.00 O +ATOM 350 HW1 SOL 116 14.791 1.990 1.480 1.00 0.00 H +ATOM 351 HW2 SOL 116 15.621 3.260 2.080 1.00 0.00 H +ATOM 352 OW SOL 117 13.031 8.380 0.420 1.00 0.00 O +ATOM 353 HW1 SOL 117 13.371 7.450 0.570 1.00 0.00 H +ATOM 354 HW2 SOL 117 13.211 8.650 -0.530 1.00 0.00 H +ATOM 355 OW SOL 118 10.681 13.331 8.490 1.00 0.00 O +ATOM 356 HW1 SOL 118 10.751 12.491 7.940 1.00 0.00 H +ATOM 357 HW2 SOL 118 11.301 14.021 8.130 1.00 0.00 H +ATOM 358 OW SOL 119 3.190 8.100 9.491 1.00 0.00 O +ATOM 359 HW1 SOL 119 4.120 8.460 9.541 1.00 0.00 H +ATOM 360 HW2 SOL 119 3.130 7.250 10.011 1.00 0.00 H +ATOM 361 OW SOL 120 3.390 5.090 10.061 1.00 0.00 O +ATOM 362 HW1 SOL 120 2.870 4.260 9.891 1.00 0.00 H +ATOM 363 HW2 SOL 120 4.160 5.140 9.421 1.00 0.00 H +ATOM 364 OW SOL 121 11.381 3.800 16.781 1.00 0.00 O +ATOM 365 HW1 SOL 121 10.931 4.430 17.421 1.00 0.00 H +ATOM 366 HW2 SOL 121 12.311 4.110 16.611 1.00 0.00 H +ATOM 367 OW SOL 122 11.601 2.070 14.771 1.00 0.00 O +ATOM 368 HW1 SOL 122 11.601 2.710 15.541 1.00 0.00 H +ATOM 369 HW2 SOL 122 11.881 2.550 13.941 1.00 0.00 H +ATOM 370 OW SOL 123 0.880 18.011 9.270 1.00 0.00 O +ATOM 371 HW1 SOL 123 0.460 17.151 9.000 1.00 0.00 H +ATOM 372 HW2 SOL 123 1.820 18.041 8.930 1.00 0.00 H +ATOM 373 OW SOL 124 5.040 15.681 9.100 1.00 0.00 O +ATOM 374 HW1 SOL 124 5.700 16.421 9.190 1.00 0.00 H +ATOM 375 HW2 SOL 124 5.480 14.891 8.680 1.00 0.00 H +ATOM 376 OW SOL 125 10.021 7.960 12.381 1.00 0.00 O +ATOM 377 HW1 SOL 125 10.431 7.640 13.241 1.00 0.00 H +ATOM 378 HW2 SOL 125 9.061 7.690 12.351 1.00 0.00 H +ATOM 379 OW SOL 126 0.400 5.440 11.141 1.00 0.00 O +ATOM 380 HW1 SOL 126 1.250 5.110 10.731 1.00 0.00 H +ATOM 381 HW2 SOL 126 0.530 5.590 12.121 1.00 0.00 H +ATOM 382 OW SOL 127 1.890 5.200 17.221 1.00 0.00 O +ATOM 383 HW1 SOL 127 2.480 4.800 16.521 1.00 0.00 H +ATOM 384 HW2 SOL 127 1.310 5.910 16.811 1.00 0.00 H +ATOM 385 OW SOL 128 13.691 9.501 16.601 1.00 0.00 O +ATOM 386 HW1 SOL 128 14.081 10.391 16.801 1.00 0.00 H +ATOM 387 HW2 SOL 128 13.791 9.301 15.631 1.00 0.00 H +ATOM 388 OW SOL 129 8.150 5.720 3.250 1.00 0.00 O +ATOM 389 HW1 SOL 129 8.220 4.830 2.790 1.00 0.00 H +ATOM 390 HW2 SOL 129 7.210 6.060 3.170 1.00 0.00 H +ATOM 391 OW SOL 130 16.571 6.040 12.061 1.00 0.00 O +ATOM 392 HW1 SOL 130 16.191 5.350 12.681 1.00 0.00 H +ATOM 393 HW2 SOL 130 17.391 5.680 11.621 1.00 0.00 H +ATOM 394 OW SOL 131 2.520 15.641 17.441 1.00 0.00 O +ATOM 395 HW1 SOL 131 2.220 16.211 18.201 1.00 0.00 H +ATOM 396 HW2 SOL 131 2.450 14.671 17.701 1.00 0.00 H +ATOM 397 OW SOL 132 6.710 4.640 12.691 1.00 0.00 O +ATOM 398 HW1 SOL 132 6.370 3.750 12.391 1.00 0.00 H +ATOM 399 HW2 SOL 132 6.970 5.180 11.891 1.00 0.00 H +ATOM 400 OW SOL 133 9.300 16.781 14.651 1.00 0.00 O +ATOM 401 HW1 SOL 133 9.060 16.601 13.701 1.00 0.00 H +ATOM 402 HW2 SOL 133 9.600 17.721 14.751 1.00 0.00 H +ATOM 403 OW SOL 134 4.730 5.000 1.910 1.00 0.00 O +ATOM 404 HW1 SOL 134 5.340 5.800 1.950 1.00 0.00 H +ATOM 405 HW2 SOL 134 3.780 5.310 1.980 1.00 0.00 H +ATOM 406 OW SOL 135 1.590 11.371 14.661 1.00 0.00 O +ATOM 407 HW1 SOL 135 1.810 10.761 15.421 1.00 0.00 H +ATOM 408 HW2 SOL 135 1.690 10.881 13.801 1.00 0.00 H +ATOM 409 OW SOL 136 13.471 10.591 12.341 1.00 0.00 O +ATOM 410 HW1 SOL 136 13.711 9.961 11.601 1.00 0.00 H +ATOM 411 HW2 SOL 136 12.571 10.991 12.161 1.00 0.00 H +ATOM 412 OW SOL 137 13.021 8.550 3.090 1.00 0.00 O +ATOM 413 HW1 SOL 137 12.161 8.240 3.510 1.00 0.00 H +ATOM 414 HW2 SOL 137 12.981 8.410 2.100 1.00 0.00 H +ATOM 415 OW SOL 138 17.591 17.471 11.541 1.00 0.00 O +ATOM 416 HW1 SOL 138 18.201 17.771 10.811 1.00 0.00 H +ATOM 417 HW2 SOL 138 17.211 16.581 11.321 1.00 0.00 H +ATOM 418 OW SOL 139 12.521 17.311 11.281 1.00 0.00 O +ATOM 419 HW1 SOL 139 13.361 17.361 10.741 1.00 0.00 H +ATOM 420 HW2 SOL 139 12.291 16.351 11.461 1.00 0.00 H +ATOM 421 OW SOL 140 0.830 12.581 10.221 1.00 0.00 O +ATOM 422 HW1 SOL 140 0.780 12.571 11.221 1.00 0.00 H +ATOM 423 HW2 SOL 140 0.000 12.171 9.841 1.00 0.00 H +ATOM 424 OW SOL 141 6.880 16.621 17.161 1.00 0.00 O +ATOM 425 HW1 SOL 141 6.320 17.431 17.251 1.00 0.00 H +ATOM 426 HW2 SOL 141 7.400 16.661 16.301 1.00 0.00 H +ATOM 427 OW SOL 142 9.030 0.860 1.330 1.00 0.00 O +ATOM 428 HW1 SOL 142 9.540 0.870 0.470 1.00 0.00 H +ATOM 429 HW2 SOL 142 9.590 0.440 2.040 1.00 0.00 H +ATOM 430 OW SOL 143 17.261 1.350 5.230 1.00 0.00 O +ATOM 431 HW1 SOL 143 17.991 1.180 4.560 1.00 0.00 H +ATOM 432 HW2 SOL 143 16.951 0.480 5.610 1.00 0.00 H +ATOM 433 OW SOL 144 13.881 15.731 4.770 1.00 0.00 O +ATOM 434 HW1 SOL 144 14.551 15.851 4.030 1.00 0.00 H +ATOM 435 HW2 SOL 144 13.481 16.621 5.000 1.00 0.00 H +ATOM 436 OW SOL 145 12.801 9.270 6.720 1.00 0.00 O +ATOM 437 HW1 SOL 145 13.401 8.460 6.740 1.00 0.00 H +ATOM 438 HW2 SOL 145 13.201 9.960 6.120 1.00 0.00 H +ATOM 439 OW SOL 146 8.300 12.731 14.221 1.00 0.00 O +ATOM 440 HW1 SOL 146 8.250 13.061 15.171 1.00 0.00 H +ATOM 441 HW2 SOL 146 7.440 12.921 13.761 1.00 0.00 H +ATOM 442 OW SOL 147 6.720 16.161 1.540 1.00 0.00 O +ATOM 443 HW1 SOL 147 6.810 16.261 0.550 1.00 0.00 H +ATOM 444 HW2 SOL 147 6.320 15.271 1.750 1.00 0.00 H +ATOM 445 OW SOL 148 16.501 17.201 13.941 1.00 0.00 O +ATOM 446 HW1 SOL 148 17.031 17.301 13.101 1.00 0.00 H +ATOM 447 HW2 SOL 148 16.231 18.101 14.281 1.00 0.00 H +ATOM 448 OW SOL 149 2.630 3.260 7.200 1.00 0.00 O +ATOM 449 HW1 SOL 149 1.840 3.770 6.860 1.00 0.00 H +ATOM 450 HW2 SOL 149 2.540 3.110 8.180 1.00 0.00 H +ATOM 451 OW SOL 150 11.941 16.121 0.310 1.00 0.00 O +ATOM 452 HW1 SOL 150 12.001 15.191 0.680 1.00 0.00 H +ATOM 453 HW2 SOL 150 11.351 16.121 -0.490 1.00 0.00 H +ATOM 454 OW SOL 151 8.220 10.021 13.721 1.00 0.00 O +ATOM 455 HW1 SOL 151 8.620 10.011 12.801 1.00 0.00 H +ATOM 456 HW2 SOL 151 8.320 10.941 14.121 1.00 0.00 H +ATOM 457 OW SOL 152 9.160 9.100 2.910 1.00 0.00 O +ATOM 458 HW1 SOL 152 9.790 9.480 2.230 1.00 0.00 H +ATOM 459 HW2 SOL 152 9.560 8.270 3.300 1.00 0.00 H +ATOM 460 OW SOL 153 15.041 16.071 0.440 1.00 0.00 O +ATOM 461 HW1 SOL 153 14.121 16.441 0.510 1.00 0.00 H +ATOM 462 HW2 SOL 153 15.421 16.271 -0.460 1.00 0.00 H +ATOM 463 OW SOL 154 3.720 12.881 14.901 1.00 0.00 O +ATOM 464 HW1 SOL 154 3.590 13.811 14.561 1.00 0.00 H +ATOM 465 HW2 SOL 154 2.880 12.361 14.771 1.00 0.00 H +ATOM 466 OW SOL 155 16.141 12.921 12.891 1.00 0.00 O +ATOM 467 HW1 SOL 155 16.741 12.951 13.691 1.00 0.00 H +ATOM 468 HW2 SOL 155 15.391 13.561 13.021 1.00 0.00 H +ATOM 469 OW SOL 156 10.391 10.981 6.960 1.00 0.00 O +ATOM 470 HW1 SOL 156 9.691 10.511 7.500 1.00 0.00 H +ATOM 471 HW2 SOL 156 10.981 10.301 6.530 1.00 0.00 H +ATOM 472 OW SOL 157 10.141 2.360 9.711 1.00 0.00 O +ATOM 473 HW1 SOL 157 10.061 2.000 8.781 1.00 0.00 H +ATOM 474 HW2 SOL 157 10.121 1.600 10.361 1.00 0.00 H +ATOM 475 OW SOL 158 5.900 14.871 4.910 1.00 0.00 O +ATOM 476 HW1 SOL 158 6.320 14.291 4.210 1.00 0.00 H +ATOM 477 HW2 SOL 158 5.460 15.661 4.470 1.00 0.00 H +ATOM 478 OW SOL 159 17.091 3.850 13.811 1.00 0.00 O +ATOM 479 HW1 SOL 159 17.821 4.540 13.851 1.00 0.00 H +ATOM 480 HW2 SOL 159 17.371 3.100 13.221 1.00 0.00 H +ATOM 481 OW SOL 160 2.550 13.481 2.900 1.00 0.00 O +ATOM 482 HW1 SOL 160 1.590 13.491 2.630 1.00 0.00 H +ATOM 483 HW2 SOL 160 2.670 14.011 3.740 1.00 0.00 H +ATOM 484 OW SOL 161 6.720 2.030 14.891 1.00 0.00 O +ATOM 485 HW1 SOL 161 7.620 1.870 14.491 1.00 0.00 H +ATOM 486 HW2 SOL 161 6.800 2.080 15.881 1.00 0.00 H +ATOM 487 OW SOL 162 14.401 8.560 13.981 1.00 0.00 O +ATOM 488 HW1 SOL 162 13.831 9.080 13.351 1.00 0.00 H +ATOM 489 HW2 SOL 162 15.361 8.680 13.741 1.00 0.00 H +ATOM 490 OW SOL 163 11.831 13.351 1.190 1.00 0.00 O +ATOM 491 HW1 SOL 163 10.841 13.241 1.210 1.00 0.00 H +ATOM 492 HW2 SOL 163 12.171 13.501 2.120 1.00 0.00 H +ATOM 493 OW SOL 164 6.130 8.420 14.311 1.00 0.00 O +ATOM 494 HW1 SOL 164 6.690 9.230 14.141 1.00 0.00 H +ATOM 495 HW2 SOL 164 6.720 7.620 14.341 1.00 0.00 H +ATOM 496 OW SOL 165 14.931 17.671 9.591 1.00 0.00 O +ATOM 497 HW1 SOL 165 15.261 18.311 8.901 1.00 0.00 H +ATOM 498 HW2 SOL 165 15.591 17.611 10.341 1.00 0.00 H +ATOM 499 OW SOL 166 7.160 5.650 17.081 1.00 0.00 O +ATOM 500 HW1 SOL 166 7.350 6.300 17.821 1.00 0.00 H +ATOM 501 HW2 SOL 166 7.760 4.850 17.171 1.00 0.00 H +ATOM 502 OW SOL 167 14.501 12.201 16.331 1.00 0.00 O +ATOM 503 HW1 SOL 167 14.411 12.101 17.321 1.00 0.00 H +ATOM 504 HW2 SOL 167 15.461 12.131 16.071 1.00 0.00 H +ATOM 505 OW SOL 168 3.900 17.411 15.601 1.00 0.00 O +ATOM 506 HW1 SOL 168 2.990 17.821 15.581 1.00 0.00 H +ATOM 507 HW2 SOL 168 3.830 16.471 15.921 1.00 0.00 H +ATOM 508 OW SOL 169 16.741 8.830 12.541 1.00 0.00 O +ATOM 509 HW1 SOL 169 16.471 7.940 12.171 1.00 0.00 H +ATOM 510 HW2 SOL 169 16.751 9.510 11.811 1.00 0.00 H +ATOM 511 OW SOL 170 12.251 3.250 4.490 1.00 0.00 O +ATOM 512 HW1 SOL 170 12.901 2.510 4.380 1.00 0.00 H +ATOM 513 HW2 SOL 170 12.451 3.750 5.330 1.00 0.00 H +ATOM 514 OW SOL 171 5.940 7.450 6.520 1.00 0.00 O +ATOM 515 HW1 SOL 171 6.440 8.300 6.330 1.00 0.00 H +ATOM 516 HW2 SOL 171 5.060 7.470 6.040 1.00 0.00 H +ATOM 517 OW SOL 172 17.771 3.420 16.421 1.00 0.00 O +ATOM 518 HW1 SOL 172 17.601 3.730 15.481 1.00 0.00 H +ATOM 519 HW2 SOL 172 16.931 3.050 16.801 1.00 0.00 H +ATOM 520 OW SOL 173 17.301 9.341 15.171 1.00 0.00 O +ATOM 521 HW1 SOL 173 17.681 10.251 15.321 1.00 0.00 H +ATOM 522 HW2 SOL 173 17.221 9.171 14.181 1.00 0.00 H +ATOM 523 OW SOL 174 8.590 13.741 0.160 1.00 0.00 O +ATOM 524 HW1 SOL 174 8.130 13.891 1.040 1.00 0.00 H +ATOM 525 HW2 SOL 174 9.030 14.591 -0.140 1.00 0.00 H +ATOM 526 OW SOL 175 6.610 17.901 9.531 1.00 0.00 O +ATOM 527 HW1 SOL 175 6.150 18.781 9.401 1.00 0.00 H +ATOM 528 HW2 SOL 175 7.600 18.021 9.461 1.00 0.00 H +ATOM 529 OW SOL 176 14.081 18.511 17.201 1.00 0.00 O +ATOM 530 HW1 SOL 176 13.121 18.401 16.931 1.00 0.00 H +ATOM 531 HW2 SOL 176 14.641 17.841 16.721 1.00 0.00 H +ATOM 532 OW SOL 177 8.590 9.561 8.610 1.00 0.00 O +ATOM 533 HW1 SOL 177 9.130 8.871 9.090 1.00 0.00 H +ATOM 534 HW2 SOL 177 8.270 10.251 9.270 1.00 0.00 H +ATOM 535 OW SOL 178 10.831 9.841 0.870 1.00 0.00 O +ATOM 536 HW1 SOL 178 10.601 10.371 0.050 1.00 0.00 H +ATOM 537 HW2 SOL 178 11.641 9.281 0.680 1.00 0.00 H +ATOM 538 OW SOL 179 18.611 15.691 8.510 1.00 0.00 O +ATOM 539 HW1 SOL 179 17.901 15.571 7.810 1.00 0.00 H +ATOM 540 HW2 SOL 179 18.621 14.901 9.110 1.00 0.00 H +ATOM 541 OW SOL 180 0.790 12.401 6.530 1.00 0.00 O +ATOM 542 HW1 SOL 180 0.780 11.931 7.410 1.00 0.00 H +ATOM 543 HW2 SOL 180 1.610 12.121 6.020 1.00 0.00 H +ATOM 544 OW SOL 181 6.720 13.911 16.241 1.00 0.00 O +ATOM 545 HW1 SOL 181 5.940 13.411 16.621 1.00 0.00 H +ATOM 546 HW2 SOL 181 6.690 14.861 16.551 1.00 0.00 H +ATOM 547 OW SOL 182 4.280 4.240 5.200 1.00 0.00 O +ATOM 548 HW1 SOL 182 4.580 3.520 4.580 1.00 0.00 H +ATOM 549 HW2 SOL 182 3.890 3.840 6.030 1.00 0.00 H +ATOM 550 OW SOL 183 17.051 14.871 11.041 1.00 0.00 O +ATOM 551 HW1 SOL 183 16.121 14.621 10.771 1.00 0.00 H +ATOM 552 HW2 SOL 183 17.311 14.371 11.861 1.00 0.00 H +ATOM 553 OW SOL 184 3.170 5.470 12.801 1.00 0.00 O +ATOM 554 HW1 SOL 184 3.550 4.880 13.521 1.00 0.00 H +ATOM 555 HW2 SOL 184 3.570 5.210 11.921 1.00 0.00 H +ATOM 556 OW SOL 185 8.120 15.861 6.870 1.00 0.00 O +ATOM 557 HW1 SOL 185 8.440 15.961 5.930 1.00 0.00 H +ATOM 558 HW2 SOL 185 7.330 15.241 6.890 1.00 0.00 H +ATOM 559 OW SOL 186 14.241 2.140 11.121 1.00 0.00 O +ATOM 560 HW1 SOL 186 14.761 1.490 11.671 1.00 0.00 H +ATOM 561 HW2 SOL 186 13.751 2.770 11.731 1.00 0.00 H +ATOM 562 OW SOL 187 10.011 0.340 11.541 1.00 0.00 O +ATOM 563 HW1 SOL 187 9.381 -0.380 11.231 1.00 0.00 H +ATOM 564 HW2 SOL 187 10.941 -0.020 11.541 1.00 0.00 H +ATOM 565 OW SOL 188 7.700 13.301 3.010 1.00 0.00 O +ATOM 566 HW1 SOL 188 7.240 12.431 3.180 1.00 0.00 H +ATOM 567 HW2 SOL 188 8.610 13.271 3.420 1.00 0.00 H +ATOM 568 OW SOL 189 6.180 15.671 12.841 1.00 0.00 O +ATOM 569 HW1 SOL 189 6.130 16.491 13.411 1.00 0.00 H +ATOM 570 HW2 SOL 189 7.070 15.641 12.391 1.00 0.00 H +ATOM 571 OW SOL 190 13.521 0.520 1.680 1.00 0.00 O +ATOM 572 HW1 SOL 190 13.871 0.110 0.840 1.00 0.00 H +ATOM 573 HW2 SOL 190 12.621 0.140 1.880 1.00 0.00 H +ATOM 574 OW SOL 191 13.001 4.530 6.910 1.00 0.00 O +ATOM 575 HW1 SOL 191 12.411 5.330 6.950 1.00 0.00 H +ATOM 576 HW2 SOL 191 13.151 4.180 7.840 1.00 0.00 H +ATOM 577 OW SOL 192 15.931 2.210 8.820 1.00 0.00 O +ATOM 578 HW1 SOL 192 15.091 2.200 9.360 1.00 0.00 H +ATOM 579 HW2 SOL 192 15.951 3.040 8.260 1.00 0.00 H +ATOM 580 OW SOL 193 0.390 10.771 3.000 1.00 0.00 O +ATOM 581 HW1 SOL 193 1.380 10.661 2.910 1.00 0.00 H +ATOM 582 HW2 SOL 193 -0.010 9.911 3.320 1.00 0.00 H +ATOM 583 OW SOL 194 8.750 16.461 3.370 1.00 0.00 O +ATOM 584 HW1 SOL 194 7.980 16.111 2.830 1.00 0.00 H +ATOM 585 HW2 SOL 194 8.430 17.171 3.990 1.00 0.00 H +ATOM 586 OW SOL 195 5.690 12.751 30.271 1.00 0.00 O +ATOM 587 HW1 SOL 195 4.760 12.681 29.901 1.00 0.00 H +ATOM 588 HW2 SOL 195 5.800 13.641 30.711 1.00 0.00 H +ATOM 589 OW SOL 196 15.551 15.111 25.651 1.00 0.00 O +ATOM 590 HW1 SOL 196 14.981 14.951 26.461 1.00 0.00 H +ATOM 591 HW2 SOL 196 14.961 15.211 24.851 1.00 0.00 H +ATOM 592 OW SOL 197 17.431 6.180 27.181 1.00 0.00 O +ATOM 593 HW1 SOL 197 17.761 7.120 27.181 1.00 0.00 H +ATOM 594 HW2 SOL 197 17.941 5.640 27.841 1.00 0.00 H +ATOM 595 OW SOL 198 11.351 7.030 25.791 1.00 0.00 O +ATOM 596 HW1 SOL 198 11.921 7.810 25.541 1.00 0.00 H +ATOM 597 HW2 SOL 198 10.751 7.290 26.551 1.00 0.00 H +ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O +ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H +ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H +ATOM 601 OW SOL 200 7.680 11.441 28.851 1.00 0.00 O +ATOM 602 HW1 SOL 200 6.900 11.611 29.451 1.00 0.00 H +ATOM 603 HW2 SOL 200 8.020 12.311 28.491 1.00 0.00 H +ATOM 604 OW SOL 201 6.850 10.121 25.271 1.00 0.00 O +ATOM 605 HW1 SOL 201 7.540 9.961 25.971 1.00 0.00 H +ATOM 606 HW2 SOL 201 6.120 10.691 25.651 1.00 0.00 H +ATOM 607 OW SOL 202 2.400 10.911 27.481 1.00 0.00 O +ATOM 608 HW1 SOL 202 2.540 10.071 28.001 1.00 0.00 H +ATOM 609 HW2 SOL 202 1.850 11.551 28.031 1.00 0.00 H +ATOM 610 OW SOL 203 6.060 9.641 19.851 1.00 0.00 O +ATOM 611 HW1 SOL 203 6.130 10.481 19.311 1.00 0.00 H +ATOM 612 HW2 SOL 203 6.520 9.771 20.731 1.00 0.00 H +ATOM 613 OW SOL 204 1.220 6.430 24.251 1.00 0.00 O +ATOM 614 HW1 SOL 204 0.770 5.550 24.421 1.00 0.00 H +ATOM 615 HW2 SOL 204 1.210 6.970 25.091 1.00 0.00 H +ATOM 616 OW SOL 205 18.421 17.671 22.211 1.00 0.00 O +ATOM 617 HW1 SOL 205 18.961 17.381 23.011 1.00 0.00 H +ATOM 618 HW2 SOL 205 18.721 18.571 21.921 1.00 0.00 H +ATOM 619 OW SOL 206 16.891 9.220 24.741 1.00 0.00 O +ATOM 620 HW1 SOL 206 17.841 8.930 24.821 1.00 0.00 H +ATOM 621 HW2 SOL 206 16.811 9.870 23.991 1.00 0.00 H +ATOM 622 OW SOL 207 16.411 11.081 22.941 1.00 0.00 O +ATOM 623 HW1 SOL 207 17.271 11.101 22.421 1.00 0.00 H +ATOM 624 HW2 SOL 207 16.551 11.551 23.821 1.00 0.00 H +ATOM 625 OW SOL 208 6.130 13.651 25.881 1.00 0.00 O +ATOM 626 HW1 SOL 208 5.640 12.781 25.971 1.00 0.00 H +ATOM 627 HW2 SOL 208 5.900 14.081 25.011 1.00 0.00 H +ATOM 628 OW SOL 209 8.090 0.040 23.641 1.00 0.00 O +ATOM 629 HW1 SOL 209 8.490 0.950 23.551 1.00 0.00 H +ATOM 630 HW2 SOL 209 7.090 0.120 23.701 1.00 0.00 H +ATOM 631 OW SOL 210 1.970 9.761 0.031 1.00 0.00 O +ATOM 632 HW1 SOL 210 2.860 9.311 -0.109 1.00 0.00 H +ATOM 633 HW2 SOL 210 1.240 9.111 -0.159 1.00 0.00 H +ATOM 634 OW SOL 211 15.251 9.991 20.521 1.00 0.00 O +ATOM 635 HW1 SOL 211 14.621 9.231 20.651 1.00 0.00 H +ATOM 636 HW2 SOL 211 15.731 10.171 21.381 1.00 0.00 H +ATOM 637 OW SOL 212 14.661 14.171 28.151 1.00 0.00 O +ATOM 638 HW1 SOL 212 14.071 14.231 28.951 1.00 0.00 H +ATOM 639 HW2 SOL 212 14.511 13.291 27.691 1.00 0.00 H +ATOM 640 OW SOL 213 16.671 17.141 24.341 1.00 0.00 O +ATOM 641 HW1 SOL 213 16.261 16.911 23.461 1.00 0.00 H +ATOM 642 HW2 SOL 213 16.491 16.401 24.991 1.00 0.00 H +ATOM 643 OW SOL 214 5.980 7.290 21.321 1.00 0.00 O +ATOM 644 HW1 SOL 214 6.220 7.980 20.641 1.00 0.00 H +ATOM 645 HW2 SOL 214 5.200 7.620 21.861 1.00 0.00 H +ATOM 646 OW SOL 215 12.811 3.450 28.061 1.00 0.00 O +ATOM 647 HW1 SOL 215 11.951 2.950 27.931 1.00 0.00 H +ATOM 648 HW2 SOL 215 13.431 2.910 28.621 1.00 0.00 H +ATOM 649 OW SOL 216 15.761 16.621 21.691 1.00 0.00 O +ATOM 650 HW1 SOL 216 16.651 17.081 21.721 1.00 0.00 H +ATOM 651 HW2 SOL 216 15.551 16.381 20.741 1.00 0.00 H +ATOM 652 OW SOL 217 10.411 7.010 22.911 1.00 0.00 O +ATOM 653 HW1 SOL 217 10.671 6.970 23.871 1.00 0.00 H +ATOM 654 HW2 SOL 217 9.561 6.500 22.771 1.00 0.00 H +ATOM 655 OW SOL 218 8.650 3.480 20.571 1.00 0.00 O +ATOM 656 HW1 SOL 218 9.240 4.110 20.081 1.00 0.00 H +ATOM 657 HW2 SOL 218 8.840 2.540 20.281 1.00 0.00 H +ATOM 658 OW SOL 219 13.621 11.441 24.071 1.00 0.00 O +ATOM 659 HW1 SOL 219 14.451 11.151 23.591 1.00 0.00 H +ATOM 660 HW2 SOL 219 13.131 12.111 23.511 1.00 0.00 H +ATOM 661 OW SOL 220 5.500 1.960 27.471 1.00 0.00 O +ATOM 662 HW1 SOL 220 5.450 1.910 28.471 1.00 0.00 H +ATOM 663 HW2 SOL 220 5.520 2.920 27.181 1.00 0.00 H +ATOM 664 OW SOL 221 10.081 14.561 23.391 1.00 0.00 O +ATOM 665 HW1 SOL 221 9.621 15.281 22.871 1.00 0.00 H +ATOM 666 HW2 SOL 221 10.041 14.761 24.371 1.00 0.00 H +ATOM 667 OW SOL 222 3.510 18.011 27.151 1.00 0.00 O +ATOM 668 HW1 SOL 222 4.010 17.151 27.211 1.00 0.00 H +ATOM 669 HW2 SOL 222 4.160 18.781 27.121 1.00 0.00 H +ATOM 670 OW SOL 223 17.951 10.661 27.351 1.00 0.00 O +ATOM 671 HW1 SOL 223 17.331 10.511 26.591 1.00 0.00 H +ATOM 672 HW2 SOL 223 17.431 10.771 28.201 1.00 0.00 H +ATOM 673 OW SOL 224 3.210 9.431 21.041 1.00 0.00 O +ATOM 674 HW1 SOL 224 4.030 9.821 20.621 1.00 0.00 H +ATOM 675 HW2 SOL 224 2.940 8.611 20.551 1.00 0.00 H +ATOM 676 OW SOL 225 14.581 7.350 25.901 1.00 0.00 O +ATOM 677 HW1 SOL 225 14.531 6.700 26.651 1.00 0.00 H +ATOM 678 HW2 SOL 225 15.381 7.940 26.031 1.00 0.00 H +ATOM 679 OW SOL 226 11.111 17.761 20.991 1.00 0.00 O +ATOM 680 HW1 SOL 226 10.511 17.141 21.491 1.00 0.00 H +ATOM 681 HW2 SOL 226 11.421 17.321 20.141 1.00 0.00 H +ATOM 682 OW SOL 227 16.321 13.771 19.431 1.00 0.00 O +ATOM 683 HW1 SOL 227 16.001 14.711 19.331 1.00 0.00 H +ATOM 684 HW2 SOL 227 15.561 13.141 19.311 1.00 0.00 H +ATOM 685 OW SOL 228 4.640 17.431 21.851 1.00 0.00 O +ATOM 686 HW1 SOL 228 4.970 17.821 22.711 1.00 0.00 H +ATOM 687 HW2 SOL 228 5.400 17.361 21.201 1.00 0.00 H +ATOM 688 OW SOL 229 14.001 1.070 22.881 1.00 0.00 O +ATOM 689 HW1 SOL 229 13.761 0.700 21.981 1.00 0.00 H +ATOM 690 HW2 SOL 229 14.991 1.230 22.921 1.00 0.00 H +ATOM 691 OW SOL 230 2.490 17.851 31.031 1.00 0.00 O +ATOM 692 HW1 SOL 230 3.060 17.201 31.531 1.00 0.00 H +ATOM 693 HW2 SOL 230 2.330 17.521 30.101 1.00 0.00 H +ATOM 694 OW SOL 231 9.401 16.981 27.661 1.00 0.00 O +ATOM 695 HW1 SOL 231 10.201 16.411 27.871 1.00 0.00 H +ATOM 696 HW2 SOL 231 8.911 16.581 26.891 1.00 0.00 H +ATOM 697 OW SOL 232 3.820 7.000 23.421 1.00 0.00 O +ATOM 698 HW1 SOL 232 4.270 6.100 23.391 1.00 0.00 H +ATOM 699 HW2 SOL 232 2.880 6.890 23.751 1.00 0.00 H +ATOM 700 OW SOL 233 6.140 1.220 19.791 1.00 0.00 O +ATOM 701 HW1 SOL 233 7.120 1.000 19.861 1.00 0.00 H +ATOM 702 HW2 SOL 233 5.830 1.050 18.861 1.00 0.00 H +ATOM 703 OW SOL 234 8.030 14.021 27.861 1.00 0.00 O +ATOM 704 HW1 SOL 234 8.930 14.161 27.441 1.00 0.00 H +ATOM 705 HW2 SOL 234 7.320 14.041 27.151 1.00 0.00 H +ATOM 706 OW SOL 235 9.220 5.030 27.611 1.00 0.00 O +ATOM 707 HW1 SOL 235 8.970 4.940 26.651 1.00 0.00 H +ATOM 708 HW2 SOL 235 9.700 4.210 27.921 1.00 0.00 H +ATOM 709 OW SOL 236 5.390 0.640 23.741 1.00 0.00 O +ATOM 710 HW1 SOL 236 4.580 0.650 24.321 1.00 0.00 H +ATOM 711 HW2 SOL 236 5.420 1.470 23.191 1.00 0.00 H +ATOM 712 OW SOL 237 14.341 11.881 19.031 1.00 0.00 O +ATOM 713 HW1 SOL 237 14.661 11.121 19.601 1.00 0.00 H +ATOM 714 HW2 SOL 237 13.421 12.151 19.331 1.00 0.00 H +ATOM 715 OW SOL 238 2.970 0.350 20.331 1.00 0.00 O +ATOM 716 HW1 SOL 238 3.460 1.190 20.121 1.00 0.00 H +ATOM 717 HW2 SOL 238 3.590 -0.300 20.781 1.00 0.00 H +ATOM 718 OW SOL 239 9.351 2.360 23.421 1.00 0.00 O +ATOM 719 HW1 SOL 239 8.871 2.770 22.641 1.00 0.00 H +ATOM 720 HW2 SOL 239 10.341 2.340 23.231 1.00 0.00 H +ATOM 721 OW SOL 240 12.271 15.701 26.551 1.00 0.00 O +ATOM 722 HW1 SOL 240 12.481 16.441 25.901 1.00 0.00 H +ATOM 723 HW2 SOL 240 12.951 15.701 27.281 1.00 0.00 H +ATOM 724 OW SOL 241 4.590 11.521 26.031 1.00 0.00 O +ATOM 725 HW1 SOL 241 3.880 11.251 26.681 1.00 0.00 H +ATOM 726 HW2 SOL 241 4.330 11.241 25.101 1.00 0.00 H +ATOM 727 OW SOL 242 12.711 17.971 24.531 1.00 0.00 O +ATOM 728 HW1 SOL 242 13.151 18.611 23.891 1.00 0.00 H +ATOM 729 HW2 SOL 242 12.211 18.491 25.231 1.00 0.00 H +ATOM 730 OW SOL 243 10.321 5.490 18.781 1.00 0.00 O +ATOM 731 HW1 SOL 243 9.911 6.310 18.391 1.00 0.00 H +ATOM 732 HW2 SOL 243 10.961 5.750 19.511 1.00 0.00 H +ATOM 733 OW SOL 244 8.660 4.540 25.041 1.00 0.00 O +ATOM 734 HW1 SOL 244 8.340 5.260 24.421 1.00 0.00 H +ATOM 735 HW2 SOL 244 8.900 3.730 24.511 1.00 0.00 H +ATOM 736 OW SOL 245 10.171 0.390 26.151 1.00 0.00 O +ATOM 737 HW1 SOL 245 9.451 0.440 25.461 1.00 0.00 H +ATOM 738 HW2 SOL 245 9.931 -0.300 26.841 1.00 0.00 H +ATOM 739 OW SOL 246 14.291 11.731 27.291 1.00 0.00 O +ATOM 740 HW1 SOL 246 13.741 10.891 27.221 1.00 0.00 H +ATOM 741 HW2 SOL 246 14.551 12.021 26.371 1.00 0.00 H +ATOM 742 OW SOL 247 14.661 5.900 28.541 1.00 0.00 O +ATOM 743 HW1 SOL 247 14.361 4.950 28.611 1.00 0.00 H +ATOM 744 HW2 SOL 247 15.391 6.060 29.201 1.00 0.00 H +ATOM 745 OW SOL 248 18.571 8.330 22.391 1.00 0.00 O +ATOM 746 HW1 SOL 248 18.991 7.690 23.031 1.00 0.00 H +ATOM 747 HW2 SOL 248 18.191 7.820 21.611 1.00 0.00 H +ATOM 748 OW SOL 249 4.880 13.851 20.361 1.00 0.00 O +ATOM 749 HW1 SOL 249 4.010 13.701 20.831 1.00 0.00 H +ATOM 750 HW2 SOL 249 4.710 14.111 19.411 1.00 0.00 H +ATOM 751 OW SOL 250 16.641 12.801 25.191 1.00 0.00 O +ATOM 752 HW1 SOL 250 17.631 12.881 25.331 1.00 0.00 H +ATOM 753 HW2 SOL 250 16.191 13.641 25.501 1.00 0.00 H +ATOM 754 OW SOL 251 13.901 5.750 19.401 1.00 0.00 O +ATOM 755 HW1 SOL 251 13.361 5.540 20.211 1.00 0.00 H +ATOM 756 HW2 SOL 251 14.811 5.340 19.491 1.00 0.00 H +ATOM 757 OW SOL 252 5.270 2.560 21.901 1.00 0.00 O +ATOM 758 HW1 SOL 252 5.540 1.970 21.151 1.00 0.00 H +ATOM 759 HW2 SOL 252 5.270 3.510 21.591 1.00 0.00 H +ATOM 760 OW SOL 253 11.111 11.951 29.621 1.00 0.00 O +ATOM 761 HW1 SOL 253 10.711 12.391 30.431 1.00 0.00 H +ATOM 762 HW2 SOL 253 10.701 12.321 28.791 1.00 0.00 H +ATOM 763 OW SOL 254 16.381 10.991 29.411 1.00 0.00 O +ATOM 764 HW1 SOL 254 16.431 11.801 30.001 1.00 0.00 H +ATOM 765 HW2 SOL 254 15.521 11.011 28.901 1.00 0.00 H +ATOM 766 OW SOL 255 7.050 10.501 22.301 1.00 0.00 O +ATOM 767 HW1 SOL 255 6.910 10.571 23.291 1.00 0.00 H +ATOM 768 HW2 SOL 255 7.890 9.991 22.121 1.00 0.00 H +ATOM 769 OW SOL 256 4.100 8.130 31.131 1.00 0.00 O +ATOM 770 HW1 SOL 256 4.960 8.250 31.631 1.00 0.00 H +ATOM 771 HW2 SOL 256 3.680 7.260 31.401 1.00 0.00 H +ATOM 772 OW SOL 257 3.670 11.001 23.631 1.00 0.00 O +ATOM 773 HW1 SOL 257 3.600 11.831 23.071 1.00 0.00 H +ATOM 774 HW2 SOL 257 3.710 10.201 23.031 1.00 0.00 H +ATOM 775 OW SOL 258 5.660 5.370 27.271 1.00 0.00 O +ATOM 776 HW1 SOL 258 5.780 6.030 26.531 1.00 0.00 H +ATOM 777 HW2 SOL 258 6.120 5.710 28.101 1.00 0.00 H +ATOM 778 OW SOL 259 12.521 13.481 22.501 1.00 0.00 O +ATOM 779 HW1 SOL 259 13.021 14.251 22.901 1.00 0.00 H +ATOM 780 HW2 SOL 259 11.571 13.501 22.821 1.00 0.00 H +ATOM 781 OW SOL 260 12.721 14.451 30.041 1.00 0.00 O +ATOM 782 HW1 SOL 260 13.191 14.581 30.911 1.00 0.00 H +ATOM 783 HW2 SOL 260 12.061 13.711 30.131 1.00 0.00 H +ATOM 784 OW SOL 261 15.821 6.390 23.341 1.00 0.00 O +ATOM 785 HW1 SOL 261 15.511 7.000 24.071 1.00 0.00 H +ATOM 786 HW2 SOL 261 16.321 6.910 22.651 1.00 0.00 H +ATOM 787 OW SOL 262 5.730 8.700 28.911 1.00 0.00 O +ATOM 788 HW1 SOL 262 6.170 9.590 28.821 1.00 0.00 H +ATOM 789 HW2 SOL 262 5.100 8.700 29.681 1.00 0.00 H +ATOM 790 OW SOL 263 13.601 8.620 29.071 1.00 0.00 O +ATOM 791 HW1 SOL 263 12.851 8.620 28.411 1.00 0.00 H +ATOM 792 HW2 SOL 263 13.971 7.700 29.161 1.00 0.00 H +ATOM 793 OW SOL 264 12.091 5.250 21.371 1.00 0.00 O +ATOM 794 HW1 SOL 264 12.221 4.410 21.911 1.00 0.00 H +ATOM 795 HW2 SOL 264 11.801 5.990 21.971 1.00 0.00 H +ATOM 796 OW SOL 265 7.320 6.340 29.261 1.00 0.00 O +ATOM 797 HW1 SOL 265 7.910 6.080 28.501 1.00 0.00 H +ATOM 798 HW2 SOL 265 7.040 7.300 29.151 1.00 0.00 H +ATOM 799 OW SOL 266 3.070 0.630 24.801 1.00 0.00 O +ATOM 800 HW1 SOL 266 2.960 1.570 25.131 1.00 0.00 H +ATOM 801 HW2 SOL 266 3.020 0.000 25.571 1.00 0.00 H +ATOM 802 OW SOL 267 16.221 3.670 22.361 1.00 0.00 O +ATOM 803 HW1 SOL 267 16.241 2.910 23.001 1.00 0.00 H +ATOM 804 HW2 SOL 267 15.741 4.440 22.761 1.00 0.00 H +ATOM 805 OW SOL 268 10.231 7.660 28.281 1.00 0.00 O +ATOM 806 HW1 SOL 268 10.381 7.870 29.241 1.00 0.00 H +ATOM 807 HW2 SOL 268 9.931 6.710 28.191 1.00 0.00 H +ATOM 808 OW SOL 269 15.401 2.740 19.871 1.00 0.00 O +ATOM 809 HW1 SOL 269 14.791 1.990 20.101 1.00 0.00 H +ATOM 810 HW2 SOL 269 15.621 3.260 20.701 1.00 0.00 H +ATOM 811 OW SOL 270 13.031 8.380 19.041 1.00 0.00 O +ATOM 812 HW1 SOL 270 13.371 7.450 19.191 1.00 0.00 H +ATOM 813 HW2 SOL 270 13.211 8.650 18.091 1.00 0.00 H +ATOM 814 OW SOL 271 10.681 13.331 27.111 1.00 0.00 O +ATOM 815 HW1 SOL 271 10.751 12.491 26.561 1.00 0.00 H +ATOM 816 HW2 SOL 271 11.301 14.021 26.751 1.00 0.00 H +ATOM 817 OW SOL 272 3.190 8.100 28.111 1.00 0.00 O +ATOM 818 HW1 SOL 272 4.120 8.460 28.161 1.00 0.00 H +ATOM 819 HW2 SOL 272 3.130 7.250 28.631 1.00 0.00 H +ATOM 820 OW SOL 273 3.390 5.090 28.681 1.00 0.00 O +ATOM 821 HW1 SOL 273 2.870 4.260 28.511 1.00 0.00 H +ATOM 822 HW2 SOL 273 4.160 5.140 28.041 1.00 0.00 H +ATOM 823 OW SOL 274 0.880 18.011 27.891 1.00 0.00 O +ATOM 824 HW1 SOL 274 0.460 17.151 27.621 1.00 0.00 H +ATOM 825 HW2 SOL 274 1.820 18.041 27.551 1.00 0.00 H +ATOM 826 OW SOL 275 5.040 15.681 27.721 1.00 0.00 O +ATOM 827 HW1 SOL 275 5.700 16.421 27.811 1.00 0.00 H +ATOM 828 HW2 SOL 275 5.480 14.891 27.301 1.00 0.00 H +ATOM 829 OW SOL 276 10.021 7.960 31.001 1.00 0.00 O +ATOM 830 HW1 SOL 276 10.431 7.640 31.861 1.00 0.00 H +ATOM 831 HW2 SOL 276 9.061 7.690 30.971 1.00 0.00 H +ATOM 832 OW SOL 277 0.400 5.440 29.761 1.00 0.00 O +ATOM 833 HW1 SOL 277 1.250 5.110 29.351 1.00 0.00 H +ATOM 834 HW2 SOL 277 0.530 5.590 30.741 1.00 0.00 H +ATOM 835 OW SOL 278 8.150 5.720 21.871 1.00 0.00 O +ATOM 836 HW1 SOL 278 8.220 4.830 21.411 1.00 0.00 H +ATOM 837 HW2 SOL 278 7.210 6.060 21.791 1.00 0.00 H +ATOM 838 OW SOL 279 16.571 6.040 30.681 1.00 0.00 O +ATOM 839 HW1 SOL 279 16.191 5.350 31.301 1.00 0.00 H +ATOM 840 HW2 SOL 279 17.391 5.680 30.241 1.00 0.00 H +ATOM 841 OW SOL 280 6.710 4.640 0.081 1.00 0.00 O +ATOM 842 HW1 SOL 280 6.370 3.750 -0.219 1.00 0.00 H +ATOM 843 HW2 SOL 280 6.970 5.180 -0.719 1.00 0.00 H +ATOM 844 OW SOL 281 4.730 5.000 20.531 1.00 0.00 O +ATOM 845 HW1 SOL 281 5.340 5.800 20.571 1.00 0.00 H +ATOM 846 HW2 SOL 281 3.780 5.310 20.601 1.00 0.00 H +ATOM 847 OW SOL 282 13.021 8.550 21.711 1.00 0.00 O +ATOM 848 HW1 SOL 282 12.161 8.240 22.131 1.00 0.00 H +ATOM 849 HW2 SOL 282 12.981 8.410 20.721 1.00 0.00 H +ATOM 850 OW SOL 283 17.591 17.471 30.161 1.00 0.00 O +ATOM 851 HW1 SOL 283 18.201 17.771 29.431 1.00 0.00 H +ATOM 852 HW2 SOL 283 17.211 16.581 29.941 1.00 0.00 H +ATOM 853 OW SOL 284 0.830 12.581 28.841 1.00 0.00 O +ATOM 854 HW1 SOL 284 0.780 12.571 29.841 1.00 0.00 H +ATOM 855 HW2 SOL 284 0.000 12.171 28.461 1.00 0.00 H +ATOM 856 OW SOL 285 17.261 1.350 23.851 1.00 0.00 O +ATOM 857 HW1 SOL 285 17.991 1.180 23.181 1.00 0.00 H +ATOM 858 HW2 SOL 285 16.951 0.480 24.231 1.00 0.00 H +ATOM 859 OW SOL 286 13.881 15.731 23.391 1.00 0.00 O +ATOM 860 HW1 SOL 286 14.551 15.851 22.651 1.00 0.00 H +ATOM 861 HW2 SOL 286 13.481 16.621 23.621 1.00 0.00 H +ATOM 862 OW SOL 287 12.801 9.270 25.341 1.00 0.00 O +ATOM 863 HW1 SOL 287 13.401 8.460 25.361 1.00 0.00 H +ATOM 864 HW2 SOL 287 13.201 9.960 24.741 1.00 0.00 H +ATOM 865 OW SOL 288 6.720 16.161 20.161 1.00 0.00 O +ATOM 866 HW1 SOL 288 6.810 16.261 19.171 1.00 0.00 H +ATOM 867 HW2 SOL 288 6.320 15.271 20.371 1.00 0.00 H +ATOM 868 OW SOL 289 2.630 3.260 25.821 1.00 0.00 O +ATOM 869 HW1 SOL 289 1.840 3.770 25.481 1.00 0.00 H +ATOM 870 HW2 SOL 289 2.540 3.110 26.801 1.00 0.00 H +ATOM 871 OW SOL 290 11.941 16.121 18.931 1.00 0.00 O +ATOM 872 HW1 SOL 290 12.001 15.191 19.301 1.00 0.00 H +ATOM 873 HW2 SOL 290 11.351 16.121 18.131 1.00 0.00 H +ATOM 874 OW SOL 291 8.220 10.021 1.111 1.00 0.00 O +ATOM 875 HW1 SOL 291 8.620 10.011 0.191 1.00 0.00 H +ATOM 876 HW2 SOL 291 8.320 10.941 1.511 1.00 0.00 H +ATOM 877 OW SOL 292 9.160 9.100 21.531 1.00 0.00 O +ATOM 878 HW1 SOL 292 9.790 9.480 20.851 1.00 0.00 H +ATOM 879 HW2 SOL 292 9.560 8.270 21.921 1.00 0.00 H +ATOM 880 OW SOL 293 15.041 16.071 19.061 1.00 0.00 O +ATOM 881 HW1 SOL 293 14.121 16.441 19.131 1.00 0.00 H +ATOM 882 HW2 SOL 293 15.421 16.271 18.161 1.00 0.00 H +ATOM 883 OW SOL 294 10.391 10.981 25.581 1.00 0.00 O +ATOM 884 HW1 SOL 294 9.691 10.511 26.121 1.00 0.00 H +ATOM 885 HW2 SOL 294 10.981 10.301 25.151 1.00 0.00 H +ATOM 886 OW SOL 295 10.141 2.360 28.331 1.00 0.00 O +ATOM 887 HW1 SOL 295 10.061 2.000 27.401 1.00 0.00 H +ATOM 888 HW2 SOL 295 10.121 1.600 28.981 1.00 0.00 H +ATOM 889 OW SOL 296 5.900 14.871 23.531 1.00 0.00 O +ATOM 890 HW1 SOL 296 6.320 14.291 22.831 1.00 0.00 H +ATOM 891 HW2 SOL 296 5.460 15.661 23.091 1.00 0.00 H +ATOM 892 OW SOL 297 17.091 3.850 1.201 1.00 0.00 O +ATOM 893 HW1 SOL 297 17.821 4.540 1.241 1.00 0.00 H +ATOM 894 HW2 SOL 297 17.371 3.100 0.611 1.00 0.00 H +ATOM 895 OW SOL 298 2.550 13.481 21.521 1.00 0.00 O +ATOM 896 HW1 SOL 298 1.590 13.491 21.251 1.00 0.00 H +ATOM 897 HW2 SOL 298 2.670 14.011 22.361 1.00 0.00 H +ATOM 898 OW SOL 299 0.750 3.450 18.951 1.00 0.00 O +ATOM 899 HW1 SOL 299 -0.170 3.170 18.661 1.00 0.00 H +ATOM 900 HW2 SOL 299 1.060 4.220 18.391 1.00 0.00 H +ATOM 901 OW SOL 300 11.831 13.351 19.811 1.00 0.00 O +ATOM 902 HW1 SOL 300 10.841 13.241 19.831 1.00 0.00 H +ATOM 903 HW2 SOL 300 12.171 13.501 20.741 1.00 0.00 H +ATOM 904 OW SOL 301 14.931 17.671 28.211 1.00 0.00 O +ATOM 905 HW1 SOL 301 15.261 18.311 27.521 1.00 0.00 H +ATOM 906 HW2 SOL 301 15.591 17.611 28.961 1.00 0.00 H +ATOM 907 OW SOL 302 16.741 8.830 31.161 1.00 0.00 O +ATOM 908 HW1 SOL 302 16.471 7.940 30.791 1.00 0.00 H +ATOM 909 HW2 SOL 302 16.751 9.510 30.431 1.00 0.00 H +ATOM 910 OW SOL 303 12.251 3.250 23.111 1.00 0.00 O +ATOM 911 HW1 SOL 303 12.901 2.510 23.001 1.00 0.00 H +ATOM 912 HW2 SOL 303 12.451 3.750 23.951 1.00 0.00 H +ATOM 913 OW SOL 304 5.940 7.450 25.141 1.00 0.00 O +ATOM 914 HW1 SOL 304 6.440 8.300 24.951 1.00 0.00 H +ATOM 915 HW2 SOL 304 5.060 7.470 24.661 1.00 0.00 H +ATOM 916 OW SOL 305 8.590 13.741 18.781 1.00 0.00 O +ATOM 917 HW1 SOL 305 8.130 13.891 19.661 1.00 0.00 H +ATOM 918 HW2 SOL 305 9.030 14.591 18.481 1.00 0.00 H +ATOM 919 OW SOL 306 6.610 17.901 28.151 1.00 0.00 O +ATOM 920 HW1 SOL 306 6.150 18.781 28.021 1.00 0.00 H +ATOM 921 HW2 SOL 306 7.600 18.021 28.081 1.00 0.00 H +ATOM 922 OW SOL 307 8.590 9.561 27.231 1.00 0.00 O +ATOM 923 HW1 SOL 307 9.130 8.871 27.711 1.00 0.00 H +ATOM 924 HW2 SOL 307 8.270 10.251 27.891 1.00 0.00 H +ATOM 925 OW SOL 308 10.831 9.841 19.491 1.00 0.00 O +ATOM 926 HW1 SOL 308 10.601 10.371 18.671 1.00 0.00 H +ATOM 927 HW2 SOL 308 11.641 9.281 19.301 1.00 0.00 H +ATOM 928 OW SOL 309 18.611 15.691 27.131 1.00 0.00 O +ATOM 929 HW1 SOL 309 17.901 15.571 26.431 1.00 0.00 H +ATOM 930 HW2 SOL 309 18.621 14.901 27.731 1.00 0.00 H +ATOM 931 OW SOL 310 0.790 12.401 25.151 1.00 0.00 O +ATOM 932 HW1 SOL 310 0.780 11.931 26.031 1.00 0.00 H +ATOM 933 HW2 SOL 310 1.610 12.121 24.641 1.00 0.00 H +ATOM 934 OW SOL 311 4.280 4.240 23.821 1.00 0.00 O +ATOM 935 HW1 SOL 311 4.580 3.520 23.201 1.00 0.00 H +ATOM 936 HW2 SOL 311 3.890 3.840 24.651 1.00 0.00 H +ATOM 937 OW SOL 312 17.051 14.871 29.661 1.00 0.00 O +ATOM 938 HW1 SOL 312 16.121 14.621 29.391 1.00 0.00 H +ATOM 939 HW2 SOL 312 17.311 14.371 30.481 1.00 0.00 H +ATOM 940 OW SOL 313 8.120 15.861 25.491 1.00 0.00 O +ATOM 941 HW1 SOL 313 8.440 15.961 24.551 1.00 0.00 H +ATOM 942 HW2 SOL 313 7.330 15.241 25.511 1.00 0.00 H +ATOM 943 OW SOL 314 14.241 2.140 29.741 1.00 0.00 O +ATOM 944 HW1 SOL 314 14.761 1.490 30.291 1.00 0.00 H +ATOM 945 HW2 SOL 314 13.751 2.770 30.351 1.00 0.00 H +ATOM 946 OW SOL 315 10.011 0.340 30.161 1.00 0.00 O +ATOM 947 HW1 SOL 315 9.381 -0.380 29.851 1.00 0.00 H +ATOM 948 HW2 SOL 315 10.941 -0.020 30.161 1.00 0.00 H +ATOM 949 OW SOL 316 7.700 13.301 21.631 1.00 0.00 O +ATOM 950 HW1 SOL 316 7.240 12.431 21.801 1.00 0.00 H +ATOM 951 HW2 SOL 316 8.610 13.271 22.041 1.00 0.00 H +ATOM 952 OW SOL 317 13.521 0.520 20.301 1.00 0.00 O +ATOM 953 HW1 SOL 317 13.871 0.110 19.461 1.00 0.00 H +ATOM 954 HW2 SOL 317 12.621 0.140 20.501 1.00 0.00 H +ATOM 955 OW SOL 318 13.001 4.530 25.531 1.00 0.00 O +ATOM 956 HW1 SOL 318 12.411 5.330 25.571 1.00 0.00 H +ATOM 957 HW2 SOL 318 13.151 4.180 26.461 1.00 0.00 H +ATOM 958 OW SOL 319 15.931 2.210 27.441 1.00 0.00 O +ATOM 959 HW1 SOL 319 15.091 2.200 27.981 1.00 0.00 H +ATOM 960 HW2 SOL 319 15.951 3.040 26.881 1.00 0.00 H +ATOM 961 OW SOL 320 0.390 10.771 21.621 1.00 0.00 O +ATOM 962 HW1 SOL 320 1.380 10.661 21.531 1.00 0.00 H +ATOM 963 HW2 SOL 320 -0.010 9.911 21.941 1.00 0.00 H +ATOM 964 OW SOL 321 8.750 16.461 21.991 1.00 0.00 O +ATOM 965 HW1 SOL 321 7.980 16.111 21.451 1.00 0.00 H +ATOM 966 HW2 SOL 321 8.430 17.171 22.611 1.00 0.00 H +ATOM 967 OW SOL 322 17.431 24.801 8.560 1.00 0.00 O +ATOM 968 HW1 SOL 322 17.761 25.741 8.560 1.00 0.00 H +ATOM 969 HW2 SOL 322 17.941 24.261 9.220 1.00 0.00 H +ATOM 970 OW SOL 323 11.351 25.651 7.170 1.00 0.00 O +ATOM 971 HW1 SOL 323 11.921 26.431 6.920 1.00 0.00 H +ATOM 972 HW2 SOL 323 10.751 25.911 7.930 1.00 0.00 H +ATOM 973 OW SOL 324 17.551 24.691 2.310 1.00 0.00 O +ATOM 974 HW1 SOL 324 17.431 24.561 1.320 1.00 0.00 H +ATOM 975 HW2 SOL 324 17.251 23.881 2.800 1.00 0.00 H +ATOM 976 OW SOL 325 7.680 30.061 10.231 1.00 0.00 O +ATOM 977 HW1 SOL 325 6.900 30.231 10.831 1.00 0.00 H +ATOM 978 HW2 SOL 325 8.020 30.931 9.871 1.00 0.00 H +ATOM 979 OW SOL 326 8.500 26.601 18.231 1.00 0.00 O +ATOM 980 HW1 SOL 326 8.460 27.361 18.881 1.00 0.00 H +ATOM 981 HW2 SOL 326 8.720 26.961 17.321 1.00 0.00 H +ATOM 982 OW SOL 327 6.850 28.741 6.650 1.00 0.00 O +ATOM 983 HW1 SOL 327 7.540 28.581 7.350 1.00 0.00 H +ATOM 984 HW2 SOL 327 6.120 29.311 7.030 1.00 0.00 H +ATOM 985 OW SOL 328 4.380 22.541 14.991 1.00 0.00 O +ATOM 986 HW1 SOL 328 5.200 21.981 15.081 1.00 0.00 H +ATOM 987 HW2 SOL 328 3.570 21.961 15.031 1.00 0.00 H +ATOM 988 OW SOL 329 16.031 23.091 7.370 1.00 0.00 O +ATOM 989 HW1 SOL 329 15.291 23.551 6.870 1.00 0.00 H +ATOM 990 HW2 SOL 329 16.541 23.771 7.900 1.00 0.00 H +ATOM 991 OW SOL 330 2.400 29.531 8.860 1.00 0.00 O +ATOM 992 HW1 SOL 330 2.540 28.691 9.380 1.00 0.00 H +ATOM 993 HW2 SOL 330 1.850 30.171 9.410 1.00 0.00 H +ATOM 994 OW SOL 331 6.060 28.261 1.230 1.00 0.00 O +ATOM 995 HW1 SOL 331 6.130 29.101 0.690 1.00 0.00 H +ATOM 996 HW2 SOL 331 6.520 28.391 2.110 1.00 0.00 H +ATOM 997 OW SOL 332 15.941 19.761 14.801 1.00 0.00 O +ATOM 998 HW1 SOL 332 15.761 20.431 14.081 1.00 0.00 H +ATOM 999 HW2 SOL 332 15.911 20.221 15.691 1.00 0.00 H +ATOM 1000 OW SOL 333 1.220 25.051 5.630 1.00 0.00 O +ATOM 1001 HW1 SOL 333 0.770 24.171 5.800 1.00 0.00 H +ATOM 1002 HW2 SOL 333 1.210 25.591 6.470 1.00 0.00 H +ATOM 1003 OW SOL 334 16.891 27.841 6.120 1.00 0.00 O +ATOM 1004 HW1 SOL 334 17.841 27.551 6.200 1.00 0.00 H +ATOM 1005 HW2 SOL 334 16.811 28.491 5.370 1.00 0.00 H +ATOM 1006 OW SOL 335 16.411 29.701 4.320 1.00 0.00 O +ATOM 1007 HW1 SOL 335 17.271 29.721 3.800 1.00 0.00 H +ATOM 1008 HW2 SOL 335 16.551 30.171 5.200 1.00 0.00 H +ATOM 1009 OW SOL 336 1.130 25.991 15.971 1.00 0.00 O +ATOM 1010 HW1 SOL 336 2.010 25.861 16.421 1.00 0.00 H +ATOM 1011 HW2 SOL 336 1.000 26.961 15.751 1.00 0.00 H +ATOM 1012 OW SOL 337 6.130 1.041 7.260 1.00 0.00 O +ATOM 1013 HW1 SOL 337 5.640 0.171 7.350 1.00 0.00 H +ATOM 1014 HW2 SOL 337 5.900 1.471 6.390 1.00 0.00 H +ATOM 1015 OW SOL 338 12.931 30.901 14.231 1.00 0.00 O +ATOM 1016 HW1 SOL 338 13.301 30.171 13.651 1.00 0.00 H +ATOM 1017 HW2 SOL 338 13.451 30.951 15.081 1.00 0.00 H +ATOM 1018 OW SOL 339 8.090 18.661 5.020 1.00 0.00 O +ATOM 1019 HW1 SOL 339 8.490 19.571 4.930 1.00 0.00 H +ATOM 1020 HW2 SOL 339 7.090 18.741 5.080 1.00 0.00 H +ATOM 1021 OW SOL 340 15.251 28.611 1.900 1.00 0.00 O +ATOM 1022 HW1 SOL 340 14.621 27.851 2.030 1.00 0.00 H +ATOM 1023 HW2 SOL 340 15.731 28.791 2.760 1.00 0.00 H +ATOM 1024 OW SOL 341 3.170 21.131 18.011 1.00 0.00 O +ATOM 1025 HW1 SOL 341 3.880 21.841 18.071 1.00 0.00 H +ATOM 1026 HW2 SOL 341 2.290 21.521 18.291 1.00 0.00 H +ATOM 1027 OW SOL 342 5.980 25.911 2.700 1.00 0.00 O +ATOM 1028 HW1 SOL 342 6.220 26.601 2.020 1.00 0.00 H +ATOM 1029 HW2 SOL 342 5.200 26.241 3.240 1.00 0.00 H +ATOM 1030 OW SOL 343 12.811 22.071 9.441 1.00 0.00 O +ATOM 1031 HW1 SOL 343 11.951 21.571 9.311 1.00 0.00 H +ATOM 1032 HW2 SOL 343 13.431 21.531 10.001 1.00 0.00 H +ATOM 1033 OW SOL 344 8.070 24.671 14.651 1.00 0.00 O +ATOM 1034 HW1 SOL 344 7.600 24.641 15.541 1.00 0.00 H +ATOM 1035 HW2 SOL 344 7.560 24.121 13.991 1.00 0.00 H +ATOM 1036 OW SOL 345 13.941 23.311 16.741 1.00 0.00 O +ATOM 1037 HW1 SOL 345 13.741 23.741 17.621 1.00 0.00 H +ATOM 1038 HW2 SOL 345 14.721 22.691 16.831 1.00 0.00 H +ATOM 1039 OW SOL 346 9.731 27.521 15.721 1.00 0.00 O +ATOM 1040 HW1 SOL 346 10.191 26.681 15.431 1.00 0.00 H +ATOM 1041 HW2 SOL 346 9.171 27.861 14.971 1.00 0.00 H +ATOM 1042 OW SOL 347 9.911 22.721 12.421 1.00 0.00 O +ATOM 1043 HW1 SOL 347 9.141 23.061 12.961 1.00 0.00 H +ATOM 1044 HW2 SOL 347 9.571 22.211 11.631 1.00 0.00 H +ATOM 1045 OW SOL 348 10.411 25.631 4.290 1.00 0.00 O +ATOM 1046 HW1 SOL 348 10.671 25.591 5.250 1.00 0.00 H +ATOM 1047 HW2 SOL 348 9.561 25.121 4.150 1.00 0.00 H +ATOM 1048 OW SOL 349 8.650 22.101 1.950 1.00 0.00 O +ATOM 1049 HW1 SOL 349 9.240 22.731 1.460 1.00 0.00 H +ATOM 1050 HW2 SOL 349 8.840 21.161 1.660 1.00 0.00 H +ATOM 1051 OW SOL 350 17.191 24.471 18.311 1.00 0.00 O +ATOM 1052 HW1 SOL 350 16.931 25.361 17.951 1.00 0.00 H +ATOM 1053 HW2 SOL 350 17.171 23.791 17.581 1.00 0.00 H +ATOM 1054 OW SOL 351 13.621 30.061 5.450 1.00 0.00 O +ATOM 1055 HW1 SOL 351 14.451 29.771 4.970 1.00 0.00 H +ATOM 1056 HW2 SOL 351 13.131 30.731 4.890 1.00 0.00 H +ATOM 1057 OW SOL 352 5.500 20.581 8.850 1.00 0.00 O +ATOM 1058 HW1 SOL 352 5.450 20.531 9.850 1.00 0.00 H +ATOM 1059 HW2 SOL 352 5.520 21.541 8.560 1.00 0.00 H +ATOM 1060 OW SOL 353 17.951 29.281 8.730 1.00 0.00 O +ATOM 1061 HW1 SOL 353 17.331 29.131 7.970 1.00 0.00 H +ATOM 1062 HW2 SOL 353 17.431 29.391 9.580 1.00 0.00 H +ATOM 1063 OW SOL 354 3.210 28.051 2.420 1.00 0.00 O +ATOM 1064 HW1 SOL 354 4.030 28.441 2.000 1.00 0.00 H +ATOM 1065 HW2 SOL 354 2.940 27.231 1.930 1.00 0.00 H +ATOM 1066 OW SOL 355 14.581 25.971 7.280 1.00 0.00 O +ATOM 1067 HW1 SOL 355 14.531 25.321 8.030 1.00 0.00 H +ATOM 1068 HW2 SOL 355 15.381 26.561 7.410 1.00 0.00 H +ATOM 1069 OW SOL 356 2.020 21.471 14.981 1.00 0.00 O +ATOM 1070 HW1 SOL 356 1.220 22.071 14.851 1.00 0.00 H +ATOM 1071 HW2 SOL 356 1.920 20.981 15.841 1.00 0.00 H +ATOM 1072 OW SOL 357 14.001 19.691 4.260 1.00 0.00 O +ATOM 1073 HW1 SOL 357 13.761 19.321 3.360 1.00 0.00 H +ATOM 1074 HW2 SOL 357 14.991 19.851 4.300 1.00 0.00 H +ATOM 1075 OW SOL 358 3.820 25.621 4.800 1.00 0.00 O +ATOM 1076 HW1 SOL 358 4.270 24.721 4.770 1.00 0.00 H +ATOM 1077 HW2 SOL 358 2.880 25.511 5.130 1.00 0.00 H +ATOM 1078 OW SOL 359 15.471 20.841 17.291 1.00 0.00 O +ATOM 1079 HW1 SOL 359 15.421 21.211 18.211 1.00 0.00 H +ATOM 1080 HW2 SOL 359 14.751 20.151 17.171 1.00 0.00 H +ATOM 1081 OW SOL 360 6.140 19.841 1.170 1.00 0.00 O +ATOM 1082 HW1 SOL 360 7.120 19.621 1.240 1.00 0.00 H +ATOM 1083 HW2 SOL 360 5.830 19.671 0.240 1.00 0.00 H +ATOM 1084 OW SOL 361 7.810 21.261 17.491 1.00 0.00 O +ATOM 1085 HW1 SOL 361 8.480 20.651 17.921 1.00 0.00 H +ATOM 1086 HW2 SOL 361 7.080 21.451 18.141 1.00 0.00 H +ATOM 1087 OW SOL 362 13.511 24.521 14.331 1.00 0.00 O +ATOM 1088 HW1 SOL 362 13.791 24.091 15.181 1.00 0.00 H +ATOM 1089 HW2 SOL 362 13.761 25.481 14.341 1.00 0.00 H +ATOM 1090 OW SOL 363 9.220 23.651 8.990 1.00 0.00 O +ATOM 1091 HW1 SOL 363 8.970 23.561 8.030 1.00 0.00 H +ATOM 1092 HW2 SOL 363 9.700 22.831 9.300 1.00 0.00 H +ATOM 1093 OW SOL 364 5.390 19.261 5.120 1.00 0.00 O +ATOM 1094 HW1 SOL 364 4.580 19.271 5.700 1.00 0.00 H +ATOM 1095 HW2 SOL 364 5.420 20.091 4.570 1.00 0.00 H +ATOM 1096 OW SOL 365 2.970 18.971 1.710 1.00 0.00 O +ATOM 1097 HW1 SOL 365 3.460 19.811 1.500 1.00 0.00 H +ATOM 1098 HW2 SOL 365 3.590 18.321 2.160 1.00 0.00 H +ATOM 1099 OW SOL 366 9.351 20.981 4.800 1.00 0.00 O +ATOM 1100 HW1 SOL 366 8.871 21.391 4.020 1.00 0.00 H +ATOM 1101 HW2 SOL 366 10.341 20.961 4.610 1.00 0.00 H +ATOM 1102 OW SOL 367 10.761 25.451 14.641 1.00 0.00 O +ATOM 1103 HW1 SOL 367 9.961 24.841 14.671 1.00 0.00 H +ATOM 1104 HW2 SOL 367 11.571 24.921 14.401 1.00 0.00 H +ATOM 1105 OW SOL 368 4.590 30.141 7.410 1.00 0.00 O +ATOM 1106 HW1 SOL 368 3.880 29.871 8.060 1.00 0.00 H +ATOM 1107 HW2 SOL 368 4.330 29.861 6.480 1.00 0.00 H +ATOM 1108 OW SOL 369 10.321 24.111 0.160 1.00 0.00 O +ATOM 1109 HW1 SOL 369 9.911 24.931 -0.230 1.00 0.00 H +ATOM 1110 HW2 SOL 369 10.961 24.371 0.890 1.00 0.00 H +ATOM 1111 OW SOL 370 5.610 20.841 11.471 1.00 0.00 O +ATOM 1112 HW1 SOL 370 5.990 20.001 11.841 1.00 0.00 H +ATOM 1113 HW2 SOL 370 4.730 21.031 11.911 1.00 0.00 H +ATOM 1114 OW SOL 371 8.660 23.161 6.420 1.00 0.00 O +ATOM 1115 HW1 SOL 371 8.340 23.881 5.800 1.00 0.00 H +ATOM 1116 HW2 SOL 371 8.900 22.351 5.890 1.00 0.00 H +ATOM 1117 OW SOL 372 10.171 19.011 7.530 1.00 0.00 O +ATOM 1118 HW1 SOL 372 9.451 19.061 6.840 1.00 0.00 H +ATOM 1119 HW2 SOL 372 9.931 18.321 8.220 1.00 0.00 H +ATOM 1120 OW SOL 373 14.291 30.351 8.670 1.00 0.00 O +ATOM 1121 HW1 SOL 373 13.741 29.511 8.600 1.00 0.00 H +ATOM 1122 HW2 SOL 373 14.551 30.641 7.750 1.00 0.00 H +ATOM 1123 OW SOL 374 14.661 24.521 9.921 1.00 0.00 O +ATOM 1124 HW1 SOL 374 14.361 23.571 9.991 1.00 0.00 H +ATOM 1125 HW2 SOL 374 15.391 24.681 10.581 1.00 0.00 H +ATOM 1126 OW SOL 375 18.571 26.951 3.770 1.00 0.00 O +ATOM 1127 HW1 SOL 375 18.991 26.311 4.410 1.00 0.00 H +ATOM 1128 HW2 SOL 375 18.191 26.441 2.990 1.00 0.00 H +ATOM 1129 OW SOL 376 13.901 24.371 0.780 1.00 0.00 O +ATOM 1130 HW1 SOL 376 13.361 24.161 1.590 1.00 0.00 H +ATOM 1131 HW2 SOL 376 14.811 23.961 0.870 1.00 0.00 H +ATOM 1132 OW SOL 377 5.270 21.181 3.280 1.00 0.00 O +ATOM 1133 HW1 SOL 377 5.540 20.591 2.530 1.00 0.00 H +ATOM 1134 HW2 SOL 377 5.270 22.131 2.970 1.00 0.00 H +ATOM 1135 OW SOL 378 17.541 30.851 15.881 1.00 0.00 O +ATOM 1136 HW1 SOL 378 18.451 30.461 15.751 1.00 0.00 H +ATOM 1137 HW2 SOL 378 17.621 31.811 16.121 1.00 0.00 H +ATOM 1138 OW SOL 379 16.381 29.611 10.791 1.00 0.00 O +ATOM 1139 HW1 SOL 379 16.431 30.421 11.381 1.00 0.00 H +ATOM 1140 HW2 SOL 379 15.521 29.631 10.281 1.00 0.00 H +ATOM 1141 OW SOL 380 9.150 19.511 14.021 1.00 0.00 O +ATOM 1142 HW1 SOL 380 9.400 19.311 13.071 1.00 0.00 H +ATOM 1143 HW2 SOL 380 9.870 20.071 14.441 1.00 0.00 H +ATOM 1144 OW SOL 381 9.801 29.781 17.191 1.00 0.00 O +ATOM 1145 HW1 SOL 381 8.811 29.841 17.291 1.00 0.00 H +ATOM 1146 HW2 SOL 381 10.031 28.981 16.631 1.00 0.00 H +ATOM 1147 OW SOL 382 7.050 29.121 3.680 1.00 0.00 O +ATOM 1148 HW1 SOL 382 6.910 29.191 4.670 1.00 0.00 H +ATOM 1149 HW2 SOL 382 7.890 28.611 3.500 1.00 0.00 H +ATOM 1150 OW SOL 383 4.100 26.751 12.511 1.00 0.00 O +ATOM 1151 HW1 SOL 383 4.960 26.871 13.011 1.00 0.00 H +ATOM 1152 HW2 SOL 383 3.680 25.881 12.781 1.00 0.00 H +ATOM 1153 OW SOL 384 12.741 22.481 12.621 1.00 0.00 O +ATOM 1154 HW1 SOL 384 12.951 23.221 13.261 1.00 0.00 H +ATOM 1155 HW2 SOL 384 11.851 22.651 12.191 1.00 0.00 H +ATOM 1156 OW SOL 385 3.670 29.621 5.010 1.00 0.00 O +ATOM 1157 HW1 SOL 385 3.600 30.451 4.450 1.00 0.00 H +ATOM 1158 HW2 SOL 385 3.710 28.821 4.410 1.00 0.00 H +ATOM 1159 OW SOL 386 5.660 23.991 8.650 1.00 0.00 O +ATOM 1160 HW1 SOL 386 5.780 24.651 7.910 1.00 0.00 H +ATOM 1161 HW2 SOL 386 6.120 24.331 9.480 1.00 0.00 H +ATOM 1162 OW SOL 387 15.821 25.011 4.720 1.00 0.00 O +ATOM 1163 HW1 SOL 387 15.511 25.621 5.450 1.00 0.00 H +ATOM 1164 HW2 SOL 387 16.321 25.531 4.030 1.00 0.00 H +ATOM 1165 OW SOL 388 4.020 26.131 15.981 1.00 0.00 O +ATOM 1166 HW1 SOL 388 4.700 26.681 15.511 1.00 0.00 H +ATOM 1167 HW2 SOL 388 4.420 25.251 16.251 1.00 0.00 H +ATOM 1168 OW SOL 389 15.871 26.411 16.701 1.00 0.00 O +ATOM 1169 HW1 SOL 389 14.951 26.791 16.651 1.00 0.00 H +ATOM 1170 HW2 SOL 389 16.471 26.881 16.051 1.00 0.00 H +ATOM 1171 OW SOL 390 10.131 19.671 17.701 1.00 0.00 O +ATOM 1172 HW1 SOL 390 10.191 20.521 17.181 1.00 0.00 H +ATOM 1173 HW2 SOL 390 10.451 18.911 17.131 1.00 0.00 H +ATOM 1174 OW SOL 391 5.040 19.121 17.401 1.00 0.00 O +ATOM 1175 HW1 SOL 391 4.620 18.551 16.701 1.00 0.00 H +ATOM 1176 HW2 SOL 391 4.380 19.811 17.721 1.00 0.00 H +ATOM 1177 OW SOL 392 5.730 27.321 10.291 1.00 0.00 O +ATOM 1178 HW1 SOL 392 6.170 28.211 10.201 1.00 0.00 H +ATOM 1179 HW2 SOL 392 5.100 27.321 11.061 1.00 0.00 H +ATOM 1180 OW SOL 393 13.601 27.241 10.451 1.00 0.00 O +ATOM 1181 HW1 SOL 393 12.851 27.241 9.791 1.00 0.00 H +ATOM 1182 HW2 SOL 393 13.971 26.321 10.541 1.00 0.00 H +ATOM 1183 OW SOL 394 12.091 23.871 2.750 1.00 0.00 O +ATOM 1184 HW1 SOL 394 12.221 23.031 3.290 1.00 0.00 H +ATOM 1185 HW2 SOL 394 11.801 24.611 3.350 1.00 0.00 H +ATOM 1186 OW SOL 395 0.370 0.491 12.821 1.00 0.00 O +ATOM 1187 HW1 SOL 395 0.900 0.001 13.501 1.00 0.00 H +ATOM 1188 HW2 SOL 395 0.590 1.471 12.871 1.00 0.00 H +ATOM 1189 OW SOL 396 7.320 24.961 10.641 1.00 0.00 O +ATOM 1190 HW1 SOL 396 7.910 24.701 9.881 1.00 0.00 H +ATOM 1191 HW2 SOL 396 7.040 25.921 10.531 1.00 0.00 H +ATOM 1192 OW SOL 397 17.281 27.971 18.541 1.00 0.00 O +ATOM 1193 HW1 SOL 397 16.821 27.901 17.651 1.00 0.00 H +ATOM 1194 HW2 SOL 397 16.661 28.411 19.201 1.00 0.00 H +ATOM 1195 OW SOL 398 3.070 19.251 6.180 1.00 0.00 O +ATOM 1196 HW1 SOL 398 2.960 20.191 6.510 1.00 0.00 H +ATOM 1197 HW2 SOL 398 3.020 18.621 6.950 1.00 0.00 H +ATOM 1198 OW SOL 399 16.221 22.291 3.740 1.00 0.00 O +ATOM 1199 HW1 SOL 399 16.241 21.531 4.380 1.00 0.00 H +ATOM 1200 HW2 SOL 399 15.741 23.061 4.140 1.00 0.00 H +ATOM 1201 OW SOL 400 10.231 26.281 9.661 1.00 0.00 O +ATOM 1202 HW1 SOL 400 10.381 26.491 10.621 1.00 0.00 H +ATOM 1203 HW2 SOL 400 9.931 25.331 9.571 1.00 0.00 H +ATOM 1204 OW SOL 401 3.500 27.601 18.041 1.00 0.00 O +ATOM 1205 HW1 SOL 401 4.260 28.041 18.521 1.00 0.00 H +ATOM 1206 HW2 SOL 401 3.850 27.131 17.221 1.00 0.00 H +ATOM 1207 OW SOL 402 15.401 21.361 1.250 1.00 0.00 O +ATOM 1208 HW1 SOL 402 14.791 20.611 1.480 1.00 0.00 H +ATOM 1209 HW2 SOL 402 15.621 21.881 2.080 1.00 0.00 H +ATOM 1210 OW SOL 403 13.031 27.001 0.420 1.00 0.00 O +ATOM 1211 HW1 SOL 403 13.371 26.071 0.570 1.00 0.00 H +ATOM 1212 HW2 SOL 403 13.211 27.271 -0.530 1.00 0.00 H +ATOM 1213 OW SOL 404 3.190 26.721 9.491 1.00 0.00 O +ATOM 1214 HW1 SOL 404 4.120 27.081 9.541 1.00 0.00 H +ATOM 1215 HW2 SOL 404 3.130 25.871 10.011 1.00 0.00 H +ATOM 1216 OW SOL 405 3.390 23.711 10.061 1.00 0.00 O +ATOM 1217 HW1 SOL 405 2.870 22.881 9.891 1.00 0.00 H +ATOM 1218 HW2 SOL 405 4.160 23.761 9.421 1.00 0.00 H +ATOM 1219 OW SOL 406 11.381 22.421 16.781 1.00 0.00 O +ATOM 1220 HW1 SOL 406 10.931 23.051 17.421 1.00 0.00 H +ATOM 1221 HW2 SOL 406 12.311 22.731 16.611 1.00 0.00 H +ATOM 1222 OW SOL 407 11.601 20.691 14.771 1.00 0.00 O +ATOM 1223 HW1 SOL 407 11.601 21.331 15.541 1.00 0.00 H +ATOM 1224 HW2 SOL 407 11.881 21.171 13.941 1.00 0.00 H +ATOM 1225 OW SOL 408 10.021 26.581 12.381 1.00 0.00 O +ATOM 1226 HW1 SOL 408 10.431 26.261 13.241 1.00 0.00 H +ATOM 1227 HW2 SOL 408 9.061 26.311 12.351 1.00 0.00 H +ATOM 1228 OW SOL 409 0.400 24.061 11.141 1.00 0.00 O +ATOM 1229 HW1 SOL 409 1.250 23.731 10.731 1.00 0.00 H +ATOM 1230 HW2 SOL 409 0.530 24.211 12.121 1.00 0.00 H +ATOM 1231 OW SOL 410 1.890 23.821 17.221 1.00 0.00 O +ATOM 1232 HW1 SOL 410 2.480 23.421 16.521 1.00 0.00 H +ATOM 1233 HW2 SOL 410 1.310 24.531 16.811 1.00 0.00 H +ATOM 1234 OW SOL 411 13.691 28.121 16.601 1.00 0.00 O +ATOM 1235 HW1 SOL 411 14.081 29.011 16.801 1.00 0.00 H +ATOM 1236 HW2 SOL 411 13.791 27.921 15.631 1.00 0.00 H +ATOM 1237 OW SOL 412 8.150 24.341 3.250 1.00 0.00 O +ATOM 1238 HW1 SOL 412 8.220 23.451 2.790 1.00 0.00 H +ATOM 1239 HW2 SOL 412 7.210 24.681 3.170 1.00 0.00 H +ATOM 1240 OW SOL 413 16.571 24.661 12.061 1.00 0.00 O +ATOM 1241 HW1 SOL 413 16.191 23.971 12.681 1.00 0.00 H +ATOM 1242 HW2 SOL 413 17.391 24.301 11.621 1.00 0.00 H +ATOM 1243 OW SOL 414 6.710 23.261 12.691 1.00 0.00 O +ATOM 1244 HW1 SOL 414 6.370 22.371 12.391 1.00 0.00 H +ATOM 1245 HW2 SOL 414 6.970 23.801 11.891 1.00 0.00 H +ATOM 1246 OW SOL 415 4.730 23.621 1.910 1.00 0.00 O +ATOM 1247 HW1 SOL 415 5.340 24.421 1.950 1.00 0.00 H +ATOM 1248 HW2 SOL 415 3.780 23.931 1.980 1.00 0.00 H +ATOM 1249 OW SOL 416 1.590 29.991 14.661 1.00 0.00 O +ATOM 1250 HW1 SOL 416 1.810 29.381 15.421 1.00 0.00 H +ATOM 1251 HW2 SOL 416 1.690 29.501 13.801 1.00 0.00 H +ATOM 1252 OW SOL 417 13.471 29.211 12.341 1.00 0.00 O +ATOM 1253 HW1 SOL 417 13.711 28.581 11.601 1.00 0.00 H +ATOM 1254 HW2 SOL 417 12.571 29.611 12.161 1.00 0.00 H +ATOM 1255 OW SOL 418 13.021 27.171 3.090 1.00 0.00 O +ATOM 1256 HW1 SOL 418 12.161 26.861 3.510 1.00 0.00 H +ATOM 1257 HW2 SOL 418 12.981 27.031 2.100 1.00 0.00 H +ATOM 1258 OW SOL 419 0.830 31.201 10.221 1.00 0.00 O +ATOM 1259 HW1 SOL 419 0.780 31.191 11.221 1.00 0.00 H +ATOM 1260 HW2 SOL 419 0.000 30.791 9.841 1.00 0.00 H +ATOM 1261 OW SOL 420 9.030 19.481 1.330 1.00 0.00 O +ATOM 1262 HW1 SOL 420 9.540 19.491 0.470 1.00 0.00 H +ATOM 1263 HW2 SOL 420 9.590 19.061 2.040 1.00 0.00 H +ATOM 1264 OW SOL 421 17.261 19.971 5.230 1.00 0.00 O +ATOM 1265 HW1 SOL 421 17.991 19.801 4.560 1.00 0.00 H +ATOM 1266 HW2 SOL 421 16.951 19.101 5.610 1.00 0.00 H +ATOM 1267 OW SOL 422 12.801 27.891 6.720 1.00 0.00 O +ATOM 1268 HW1 SOL 422 13.401 27.081 6.740 1.00 0.00 H +ATOM 1269 HW2 SOL 422 13.201 28.581 6.120 1.00 0.00 H +ATOM 1270 OW SOL 423 18.411 20.371 9.631 1.00 0.00 O +ATOM 1271 HW1 SOL 423 18.801 19.521 9.271 1.00 0.00 H +ATOM 1272 HW2 SOL 423 17.431 20.391 9.441 1.00 0.00 H +ATOM 1273 OW SOL 424 2.630 21.881 7.200 1.00 0.00 O +ATOM 1274 HW1 SOL 424 1.840 22.391 6.860 1.00 0.00 H +ATOM 1275 HW2 SOL 424 2.540 21.731 8.180 1.00 0.00 H +ATOM 1276 OW SOL 425 8.220 28.641 13.721 1.00 0.00 O +ATOM 1277 HW1 SOL 425 8.620 28.631 12.801 1.00 0.00 H +ATOM 1278 HW2 SOL 425 8.320 29.561 14.121 1.00 0.00 H +ATOM 1279 OW SOL 426 9.160 27.721 2.910 1.00 0.00 O +ATOM 1280 HW1 SOL 426 9.790 28.101 2.230 1.00 0.00 H +ATOM 1281 HW2 SOL 426 9.560 26.891 3.300 1.00 0.00 H +ATOM 1282 OW SOL 427 3.720 0.271 14.901 1.00 0.00 O +ATOM 1283 HW1 SOL 427 3.590 1.201 14.561 1.00 0.00 H +ATOM 1284 HW2 SOL 427 2.880 -0.249 14.771 1.00 0.00 H +ATOM 1285 OW SOL 428 16.141 0.311 12.891 1.00 0.00 O +ATOM 1286 HW1 SOL 428 16.741 0.341 13.691 1.00 0.00 H +ATOM 1287 HW2 SOL 428 15.391 0.951 13.021 1.00 0.00 H +ATOM 1288 OW SOL 429 10.391 29.601 6.960 1.00 0.00 O +ATOM 1289 HW1 SOL 429 9.691 29.131 7.500 1.00 0.00 H +ATOM 1290 HW2 SOL 429 10.981 28.921 6.530 1.00 0.00 H +ATOM 1291 OW SOL 430 10.141 20.981 9.711 1.00 0.00 O +ATOM 1292 HW1 SOL 430 10.061 20.621 8.781 1.00 0.00 H +ATOM 1293 HW2 SOL 430 10.121 20.221 10.361 1.00 0.00 H +ATOM 1294 OW SOL 431 17.091 22.471 13.811 1.00 0.00 O +ATOM 1295 HW1 SOL 431 17.821 23.161 13.851 1.00 0.00 H +ATOM 1296 HW2 SOL 431 17.371 21.721 13.221 1.00 0.00 H +ATOM 1297 OW SOL 432 6.720 20.651 14.891 1.00 0.00 O +ATOM 1298 HW1 SOL 432 7.620 20.491 14.491 1.00 0.00 H +ATOM 1299 HW2 SOL 432 6.800 20.701 15.881 1.00 0.00 H +ATOM 1300 OW SOL 433 14.401 27.181 13.981 1.00 0.00 O +ATOM 1301 HW1 SOL 433 13.831 27.701 13.351 1.00 0.00 H +ATOM 1302 HW2 SOL 433 15.361 27.301 13.741 1.00 0.00 H +ATOM 1303 OW SOL 434 6.130 27.041 14.311 1.00 0.00 O +ATOM 1304 HW1 SOL 434 6.690 27.851 14.141 1.00 0.00 H +ATOM 1305 HW2 SOL 434 6.720 26.241 14.341 1.00 0.00 H +ATOM 1306 OW SOL 435 7.160 24.271 17.081 1.00 0.00 O +ATOM 1307 HW1 SOL 435 7.350 24.921 17.821 1.00 0.00 H +ATOM 1308 HW2 SOL 435 7.760 23.471 17.171 1.00 0.00 H +ATOM 1309 OW SOL 436 14.501 30.821 16.331 1.00 0.00 O +ATOM 1310 HW1 SOL 436 14.411 30.721 17.321 1.00 0.00 H +ATOM 1311 HW2 SOL 436 15.461 30.751 16.071 1.00 0.00 H +ATOM 1312 OW SOL 437 16.741 27.451 12.541 1.00 0.00 O +ATOM 1313 HW1 SOL 437 16.471 26.561 12.171 1.00 0.00 H +ATOM 1314 HW2 SOL 437 16.751 28.131 11.811 1.00 0.00 H +ATOM 1315 OW SOL 438 12.251 21.871 4.490 1.00 0.00 O +ATOM 1316 HW1 SOL 438 12.901 21.131 4.380 1.00 0.00 H +ATOM 1317 HW2 SOL 438 12.451 22.371 5.330 1.00 0.00 H +ATOM 1318 OW SOL 439 5.940 26.071 6.520 1.00 0.00 O +ATOM 1319 HW1 SOL 439 6.440 26.921 6.330 1.00 0.00 H +ATOM 1320 HW2 SOL 439 5.060 26.091 6.040 1.00 0.00 H +ATOM 1321 OW SOL 440 17.771 22.041 16.421 1.00 0.00 O +ATOM 1322 HW1 SOL 440 17.601 22.351 15.481 1.00 0.00 H +ATOM 1323 HW2 SOL 440 16.931 21.671 16.801 1.00 0.00 H +ATOM 1324 OW SOL 441 17.301 27.961 15.171 1.00 0.00 O +ATOM 1325 HW1 SOL 441 17.681 28.871 15.321 1.00 0.00 H +ATOM 1326 HW2 SOL 441 17.221 27.791 14.181 1.00 0.00 H +ATOM 1327 OW SOL 442 8.590 28.181 8.610 1.00 0.00 O +ATOM 1328 HW1 SOL 442 9.130 27.491 9.090 1.00 0.00 H +ATOM 1329 HW2 SOL 442 8.270 28.871 9.270 1.00 0.00 H +ATOM 1330 OW SOL 443 10.831 28.461 0.870 1.00 0.00 O +ATOM 1331 HW1 SOL 443 10.601 28.991 0.050 1.00 0.00 H +ATOM 1332 HW2 SOL 443 11.641 27.901 0.680 1.00 0.00 H +ATOM 1333 OW SOL 444 0.790 31.021 6.530 1.00 0.00 O +ATOM 1334 HW1 SOL 444 0.780 30.551 7.410 1.00 0.00 H +ATOM 1335 HW2 SOL 444 1.610 30.741 6.020 1.00 0.00 H +ATOM 1336 OW SOL 445 18.241 20.541 12.271 1.00 0.00 O +ATOM 1337 HW1 SOL 445 18.201 19.641 12.711 1.00 0.00 H +ATOM 1338 HW2 SOL 445 18.271 20.431 11.281 1.00 0.00 H +ATOM 1339 OW SOL 446 4.280 22.861 5.200 1.00 0.00 O +ATOM 1340 HW1 SOL 446 4.580 22.141 4.580 1.00 0.00 H +ATOM 1341 HW2 SOL 446 3.890 22.461 6.030 1.00 0.00 H +ATOM 1342 OW SOL 447 3.170 24.091 12.801 1.00 0.00 O +ATOM 1343 HW1 SOL 447 3.550 23.501 13.521 1.00 0.00 H +ATOM 1344 HW2 SOL 447 3.570 23.831 11.921 1.00 0.00 H +ATOM 1345 OW SOL 448 14.241 20.761 11.121 1.00 0.00 O +ATOM 1346 HW1 SOL 448 14.761 20.111 11.671 1.00 0.00 H +ATOM 1347 HW2 SOL 448 13.751 21.391 11.731 1.00 0.00 H +ATOM 1348 OW SOL 449 10.011 18.961 11.541 1.00 0.00 O +ATOM 1349 HW1 SOL 449 9.381 18.241 11.231 1.00 0.00 H +ATOM 1350 HW2 SOL 449 10.941 18.601 11.541 1.00 0.00 H +ATOM 1351 OW SOL 450 7.700 0.691 3.010 1.00 0.00 O +ATOM 1352 HW1 SOL 450 7.240 -0.179 3.180 1.00 0.00 H +ATOM 1353 HW2 SOL 450 8.610 0.661 3.420 1.00 0.00 H +ATOM 1354 OW SOL 451 13.521 19.141 1.680 1.00 0.00 O +ATOM 1355 HW1 SOL 451 13.871 18.731 0.840 1.00 0.00 H +ATOM 1356 HW2 SOL 451 12.621 18.761 1.880 1.00 0.00 H +ATOM 1357 OW SOL 452 13.001 23.151 6.910 1.00 0.00 O +ATOM 1358 HW1 SOL 452 12.411 23.951 6.950 1.00 0.00 H +ATOM 1359 HW2 SOL 452 13.151 22.801 7.840 1.00 0.00 H +ATOM 1360 OW SOL 453 15.931 20.831 8.820 1.00 0.00 O +ATOM 1361 HW1 SOL 453 15.091 20.821 9.360 1.00 0.00 H +ATOM 1362 HW2 SOL 453 15.951 21.661 8.260 1.00 0.00 H +ATOM 1363 OW SOL 454 0.390 29.391 3.000 1.00 0.00 O +ATOM 1364 HW1 SOL 454 1.380 29.281 2.910 1.00 0.00 H +ATOM 1365 HW2 SOL 454 -0.010 28.531 3.320 1.00 0.00 H +ATOM 1366 OW SOL 455 17.431 24.801 27.181 1.00 0.00 O +ATOM 1367 HW1 SOL 455 17.761 25.741 27.181 1.00 0.00 H +ATOM 1368 HW2 SOL 455 17.941 24.261 27.841 1.00 0.00 H +ATOM 1369 OW SOL 456 11.351 25.651 25.791 1.00 0.00 O +ATOM 1370 HW1 SOL 456 11.921 26.431 25.541 1.00 0.00 H +ATOM 1371 HW2 SOL 456 10.751 25.911 26.551 1.00 0.00 H +ATOM 1372 OW SOL 457 17.551 24.691 20.931 1.00 0.00 O +ATOM 1373 HW1 SOL 457 17.431 24.561 19.941 1.00 0.00 H +ATOM 1374 HW2 SOL 457 17.251 23.881 21.421 1.00 0.00 H +ATOM 1375 OW SOL 458 7.680 30.061 28.851 1.00 0.00 O +ATOM 1376 HW1 SOL 458 6.900 30.231 29.451 1.00 0.00 H +ATOM 1377 HW2 SOL 458 8.020 30.931 28.491 1.00 0.00 H +ATOM 1378 OW SOL 459 6.850 28.741 25.271 1.00 0.00 O +ATOM 1379 HW1 SOL 459 7.540 28.581 25.971 1.00 0.00 H +ATOM 1380 HW2 SOL 459 6.120 29.311 25.651 1.00 0.00 H +ATOM 1381 OW SOL 460 2.400 29.531 27.481 1.00 0.00 O +ATOM 1382 HW1 SOL 460 2.540 28.691 28.001 1.00 0.00 H +ATOM 1383 HW2 SOL 460 1.850 30.171 28.031 1.00 0.00 H +ATOM 1384 OW SOL 461 6.060 28.261 19.851 1.00 0.00 O +ATOM 1385 HW1 SOL 461 6.130 29.101 19.311 1.00 0.00 H +ATOM 1386 HW2 SOL 461 6.520 28.391 20.731 1.00 0.00 H +ATOM 1387 OW SOL 462 1.220 25.051 24.251 1.00 0.00 O +ATOM 1388 HW1 SOL 462 0.770 24.171 24.421 1.00 0.00 H +ATOM 1389 HW2 SOL 462 1.210 25.591 25.091 1.00 0.00 H +ATOM 1390 OW SOL 463 16.891 27.841 24.741 1.00 0.00 O +ATOM 1391 HW1 SOL 463 17.841 27.551 24.821 1.00 0.00 H +ATOM 1392 HW2 SOL 463 16.811 28.491 23.991 1.00 0.00 H +ATOM 1393 OW SOL 464 16.411 29.701 22.941 1.00 0.00 O +ATOM 1394 HW1 SOL 464 17.271 29.721 22.421 1.00 0.00 H +ATOM 1395 HW2 SOL 464 16.551 30.171 23.821 1.00 0.00 H +ATOM 1396 OW SOL 465 6.130 1.041 25.881 1.00 0.00 O +ATOM 1397 HW1 SOL 465 5.640 0.171 25.971 1.00 0.00 H +ATOM 1398 HW2 SOL 465 5.900 1.471 25.011 1.00 0.00 H +ATOM 1399 OW SOL 466 8.090 18.661 23.641 1.00 0.00 O +ATOM 1400 HW1 SOL 466 8.490 19.571 23.551 1.00 0.00 H +ATOM 1401 HW2 SOL 466 7.090 18.741 23.701 1.00 0.00 H +ATOM 1402 OW SOL 467 15.251 28.611 20.521 1.00 0.00 O +ATOM 1403 HW1 SOL 467 14.621 27.851 20.651 1.00 0.00 H +ATOM 1404 HW2 SOL 467 15.731 28.791 21.381 1.00 0.00 H +ATOM 1405 OW SOL 468 5.980 25.911 21.321 1.00 0.00 O +ATOM 1406 HW1 SOL 468 6.220 26.601 20.641 1.00 0.00 H +ATOM 1407 HW2 SOL 468 5.200 26.241 21.861 1.00 0.00 H +ATOM 1408 OW SOL 469 12.811 22.071 28.061 1.00 0.00 O +ATOM 1409 HW1 SOL 469 11.951 21.571 27.931 1.00 0.00 H +ATOM 1410 HW2 SOL 469 13.431 21.531 28.621 1.00 0.00 H +ATOM 1411 OW SOL 470 10.411 25.631 22.911 1.00 0.00 O +ATOM 1412 HW1 SOL 470 10.671 25.591 23.871 1.00 0.00 H +ATOM 1413 HW2 SOL 470 9.561 25.121 22.771 1.00 0.00 H +ATOM 1414 OW SOL 471 8.650 22.101 20.571 1.00 0.00 O +ATOM 1415 HW1 SOL 471 9.240 22.731 20.081 1.00 0.00 H +ATOM 1416 HW2 SOL 471 8.840 21.161 20.281 1.00 0.00 H +ATOM 1417 OW SOL 472 13.621 30.061 24.071 1.00 0.00 O +ATOM 1418 HW1 SOL 472 14.451 29.771 23.591 1.00 0.00 H +ATOM 1419 HW2 SOL 472 13.131 30.731 23.511 1.00 0.00 H +ATOM 1420 OW SOL 473 5.500 20.581 27.471 1.00 0.00 O +ATOM 1421 HW1 SOL 473 5.450 20.531 28.471 1.00 0.00 H +ATOM 1422 HW2 SOL 473 5.520 21.541 27.181 1.00 0.00 H +ATOM 1423 OW SOL 474 17.951 29.281 27.351 1.00 0.00 O +ATOM 1424 HW1 SOL 474 17.331 29.131 26.591 1.00 0.00 H +ATOM 1425 HW2 SOL 474 17.431 29.391 28.201 1.00 0.00 H +ATOM 1426 OW SOL 475 3.210 28.051 21.041 1.00 0.00 O +ATOM 1427 HW1 SOL 475 4.030 28.441 20.621 1.00 0.00 H +ATOM 1428 HW2 SOL 475 2.940 27.231 20.551 1.00 0.00 H +ATOM 1429 OW SOL 476 14.581 25.971 25.901 1.00 0.00 O +ATOM 1430 HW1 SOL 476 14.531 25.321 26.651 1.00 0.00 H +ATOM 1431 HW2 SOL 476 15.381 26.561 26.031 1.00 0.00 H +ATOM 1432 OW SOL 477 14.001 19.691 22.881 1.00 0.00 O +ATOM 1433 HW1 SOL 477 13.761 19.321 21.981 1.00 0.00 H +ATOM 1434 HW2 SOL 477 14.991 19.851 22.921 1.00 0.00 H +ATOM 1435 OW SOL 478 3.820 25.621 23.421 1.00 0.00 O +ATOM 1436 HW1 SOL 478 4.270 24.721 23.391 1.00 0.00 H +ATOM 1437 HW2 SOL 478 2.880 25.511 23.751 1.00 0.00 H +ATOM 1438 OW SOL 479 6.140 19.841 19.791 1.00 0.00 O +ATOM 1439 HW1 SOL 479 7.120 19.621 19.861 1.00 0.00 H +ATOM 1440 HW2 SOL 479 5.830 19.671 18.861 1.00 0.00 H +ATOM 1441 OW SOL 480 9.220 23.651 27.611 1.00 0.00 O +ATOM 1442 HW1 SOL 480 8.970 23.561 26.651 1.00 0.00 H +ATOM 1443 HW2 SOL 480 9.700 22.831 27.921 1.00 0.00 H +ATOM 1444 OW SOL 481 5.390 19.261 23.741 1.00 0.00 O +ATOM 1445 HW1 SOL 481 4.580 19.271 24.321 1.00 0.00 H +ATOM 1446 HW2 SOL 481 5.420 20.091 23.191 1.00 0.00 H +ATOM 1447 OW SOL 482 2.970 18.971 20.331 1.00 0.00 O +ATOM 1448 HW1 SOL 482 3.460 19.811 20.121 1.00 0.00 H +ATOM 1449 HW2 SOL 482 3.590 18.321 20.781 1.00 0.00 H +ATOM 1450 OW SOL 483 9.351 20.981 23.421 1.00 0.00 O +ATOM 1451 HW1 SOL 483 8.871 21.391 22.641 1.00 0.00 H +ATOM 1452 HW2 SOL 483 10.341 20.961 23.231 1.00 0.00 H +ATOM 1453 OW SOL 484 4.590 30.141 26.031 1.00 0.00 O +ATOM 1454 HW1 SOL 484 3.880 29.871 26.681 1.00 0.00 H +ATOM 1455 HW2 SOL 484 4.330 29.861 25.101 1.00 0.00 H +ATOM 1456 OW SOL 485 10.321 24.111 18.781 1.00 0.00 O +ATOM 1457 HW1 SOL 485 9.911 24.931 18.391 1.00 0.00 H +ATOM 1458 HW2 SOL 485 10.961 24.371 19.511 1.00 0.00 H +ATOM 1459 OW SOL 486 8.660 23.161 25.041 1.00 0.00 O +ATOM 1460 HW1 SOL 486 8.340 23.881 24.421 1.00 0.00 H +ATOM 1461 HW2 SOL 486 8.900 22.351 24.511 1.00 0.00 H +ATOM 1462 OW SOL 487 10.171 19.011 26.151 1.00 0.00 O +ATOM 1463 HW1 SOL 487 9.451 19.061 25.461 1.00 0.00 H +ATOM 1464 HW2 SOL 487 9.931 18.321 26.841 1.00 0.00 H +ATOM 1465 OW SOL 488 14.291 30.351 27.291 1.00 0.00 O +ATOM 1466 HW1 SOL 488 13.741 29.511 27.221 1.00 0.00 H +ATOM 1467 HW2 SOL 488 14.551 30.641 26.371 1.00 0.00 H +ATOM 1468 OW SOL 489 14.661 24.521 28.541 1.00 0.00 O +ATOM 1469 HW1 SOL 489 14.361 23.571 28.611 1.00 0.00 H +ATOM 1470 HW2 SOL 489 15.391 24.681 29.201 1.00 0.00 H +ATOM 1471 OW SOL 490 18.571 26.951 22.391 1.00 0.00 O +ATOM 1472 HW1 SOL 490 18.991 26.311 23.031 1.00 0.00 H +ATOM 1473 HW2 SOL 490 18.191 26.441 21.611 1.00 0.00 H +ATOM 1474 OW SOL 491 13.901 24.371 19.401 1.00 0.00 O +ATOM 1475 HW1 SOL 491 13.361 24.161 20.211 1.00 0.00 H +ATOM 1476 HW2 SOL 491 14.811 23.961 19.491 1.00 0.00 H +ATOM 1477 OW SOL 492 5.270 21.181 21.901 1.00 0.00 O +ATOM 1478 HW1 SOL 492 5.540 20.591 21.151 1.00 0.00 H +ATOM 1479 HW2 SOL 492 5.270 22.131 21.591 1.00 0.00 H +ATOM 1480 OW SOL 493 16.381 29.611 29.411 1.00 0.00 O +ATOM 1481 HW1 SOL 493 16.431 30.421 30.001 1.00 0.00 H +ATOM 1482 HW2 SOL 493 15.521 29.631 28.901 1.00 0.00 H +ATOM 1483 OW SOL 494 7.050 29.121 22.301 1.00 0.00 O +ATOM 1484 HW1 SOL 494 6.910 29.191 23.291 1.00 0.00 H +ATOM 1485 HW2 SOL 494 7.890 28.611 22.121 1.00 0.00 H +ATOM 1486 OW SOL 495 4.100 26.751 31.131 1.00 0.00 O +ATOM 1487 HW1 SOL 495 4.960 26.871 31.631 1.00 0.00 H +ATOM 1488 HW2 SOL 495 3.680 25.881 31.401 1.00 0.00 H +ATOM 1489 OW SOL 496 3.670 29.621 23.631 1.00 0.00 O +ATOM 1490 HW1 SOL 496 3.600 30.451 23.071 1.00 0.00 H +ATOM 1491 HW2 SOL 496 3.710 28.821 23.031 1.00 0.00 H +ATOM 1492 OW SOL 497 5.660 23.991 27.271 1.00 0.00 O +ATOM 1493 HW1 SOL 497 5.780 24.651 26.531 1.00 0.00 H +ATOM 1494 HW2 SOL 497 6.120 24.331 28.101 1.00 0.00 H +ATOM 1495 OW SOL 498 15.821 25.011 23.341 1.00 0.00 O +ATOM 1496 HW1 SOL 498 15.511 25.621 24.071 1.00 0.00 H +ATOM 1497 HW2 SOL 498 16.321 25.531 22.651 1.00 0.00 H +ATOM 1498 OW SOL 499 5.730 27.321 28.911 1.00 0.00 O +ATOM 1499 HW1 SOL 499 6.170 28.211 28.821 1.00 0.00 H +ATOM 1500 HW2 SOL 499 5.100 27.321 29.681 1.00 0.00 H +ATOM 1501 OW SOL 500 13.601 27.241 29.071 1.00 0.00 O +ATOM 1502 HW1 SOL 500 12.851 27.241 28.411 1.00 0.00 H +ATOM 1503 HW2 SOL 500 13.971 26.321 29.161 1.00 0.00 H +ATOM 1504 OW SOL 501 12.091 23.871 21.371 1.00 0.00 O +ATOM 1505 HW1 SOL 501 12.221 23.031 21.911 1.00 0.00 H +ATOM 1506 HW2 SOL 501 11.801 24.611 21.971 1.00 0.00 H +ATOM 1507 OW SOL 502 0.370 0.491 0.211 1.00 0.00 O +ATOM 1508 HW1 SOL 502 0.900 0.001 0.891 1.00 0.00 H +ATOM 1509 HW2 SOL 502 0.590 1.471 0.261 1.00 0.00 H +ATOM 1510 OW SOL 503 7.320 24.961 29.261 1.00 0.00 O +ATOM 1511 HW1 SOL 503 7.910 24.701 28.501 1.00 0.00 H +ATOM 1512 HW2 SOL 503 7.040 25.921 29.151 1.00 0.00 H +ATOM 1513 OW SOL 504 3.070 19.251 24.801 1.00 0.00 O +ATOM 1514 HW1 SOL 504 2.960 20.191 25.131 1.00 0.00 H +ATOM 1515 HW2 SOL 504 3.020 18.621 25.571 1.00 0.00 H +ATOM 1516 OW SOL 505 16.221 22.291 22.361 1.00 0.00 O +ATOM 1517 HW1 SOL 505 16.241 21.531 23.001 1.00 0.00 H +ATOM 1518 HW2 SOL 505 15.741 23.061 22.761 1.00 0.00 H +ATOM 1519 OW SOL 506 10.231 26.281 28.281 1.00 0.00 O +ATOM 1520 HW1 SOL 506 10.381 26.491 29.241 1.00 0.00 H +ATOM 1521 HW2 SOL 506 9.931 25.331 28.191 1.00 0.00 H +ATOM 1522 OW SOL 507 15.401 21.361 19.871 1.00 0.00 O +ATOM 1523 HW1 SOL 507 14.791 20.611 20.101 1.00 0.00 H +ATOM 1524 HW2 SOL 507 15.621 21.881 20.701 1.00 0.00 H +ATOM 1525 OW SOL 508 13.031 27.001 19.041 1.00 0.00 O +ATOM 1526 HW1 SOL 508 13.371 26.071 19.191 1.00 0.00 H +ATOM 1527 HW2 SOL 508 13.211 27.271 18.091 1.00 0.00 H +ATOM 1528 OW SOL 509 3.190 26.721 28.111 1.00 0.00 O +ATOM 1529 HW1 SOL 509 4.120 27.081 28.161 1.00 0.00 H +ATOM 1530 HW2 SOL 509 3.130 25.871 28.631 1.00 0.00 H +ATOM 1531 OW SOL 510 3.390 23.711 28.681 1.00 0.00 O +ATOM 1532 HW1 SOL 510 2.870 22.881 28.511 1.00 0.00 H +ATOM 1533 HW2 SOL 510 4.160 23.761 28.041 1.00 0.00 H +ATOM 1534 OW SOL 511 10.021 26.581 31.001 1.00 0.00 O +ATOM 1535 HW1 SOL 511 10.431 26.261 31.861 1.00 0.00 H +ATOM 1536 HW2 SOL 511 9.061 26.311 30.971 1.00 0.00 H +ATOM 1537 OW SOL 512 0.400 24.061 29.761 1.00 0.00 O +ATOM 1538 HW1 SOL 512 1.250 23.731 29.351 1.00 0.00 H +ATOM 1539 HW2 SOL 512 0.530 24.211 30.741 1.00 0.00 H +ATOM 1540 OW SOL 513 8.150 24.341 21.871 1.00 0.00 O +ATOM 1541 HW1 SOL 513 8.220 23.451 21.411 1.00 0.00 H +ATOM 1542 HW2 SOL 513 7.210 24.681 21.791 1.00 0.00 H +ATOM 1543 OW SOL 514 16.571 24.661 30.681 1.00 0.00 O +ATOM 1544 HW1 SOL 514 16.191 23.971 31.301 1.00 0.00 H +ATOM 1545 HW2 SOL 514 17.391 24.301 30.241 1.00 0.00 H +ATOM 1546 OW SOL 515 6.710 23.261 0.081 1.00 0.00 O +ATOM 1547 HW1 SOL 515 6.370 22.371 -0.219 1.00 0.00 H +ATOM 1548 HW2 SOL 515 6.970 23.801 -0.719 1.00 0.00 H +ATOM 1549 OW SOL 516 4.730 23.621 20.531 1.00 0.00 O +ATOM 1550 HW1 SOL 516 5.340 24.421 20.571 1.00 0.00 H +ATOM 1551 HW2 SOL 516 3.780 23.931 20.601 1.00 0.00 H +ATOM 1552 OW SOL 517 13.471 29.211 30.961 1.00 0.00 O +ATOM 1553 HW1 SOL 517 13.711 28.581 30.221 1.00 0.00 H +ATOM 1554 HW2 SOL 517 12.571 29.611 30.781 1.00 0.00 H +ATOM 1555 OW SOL 518 13.021 27.171 21.711 1.00 0.00 O +ATOM 1556 HW1 SOL 518 12.161 26.861 22.131 1.00 0.00 H +ATOM 1557 HW2 SOL 518 12.981 27.031 20.721 1.00 0.00 H +ATOM 1558 OW SOL 519 0.830 31.201 28.841 1.00 0.00 O +ATOM 1559 HW1 SOL 519 0.780 31.191 29.841 1.00 0.00 H +ATOM 1560 HW2 SOL 519 0.000 30.791 28.461 1.00 0.00 H +ATOM 1561 OW SOL 520 9.030 19.481 19.951 1.00 0.00 O +ATOM 1562 HW1 SOL 520 9.540 19.491 19.091 1.00 0.00 H +ATOM 1563 HW2 SOL 520 9.590 19.061 20.661 1.00 0.00 H +ATOM 1564 OW SOL 521 17.261 19.971 23.851 1.00 0.00 O +ATOM 1565 HW1 SOL 521 17.991 19.801 23.181 1.00 0.00 H +ATOM 1566 HW2 SOL 521 16.951 19.101 24.231 1.00 0.00 H +ATOM 1567 OW SOL 522 12.801 27.891 25.341 1.00 0.00 O +ATOM 1568 HW1 SOL 522 13.401 27.081 25.361 1.00 0.00 H +ATOM 1569 HW2 SOL 522 13.201 28.581 24.741 1.00 0.00 H +ATOM 1570 OW SOL 523 18.411 20.371 28.251 1.00 0.00 O +ATOM 1571 HW1 SOL 523 18.801 19.521 27.891 1.00 0.00 H +ATOM 1572 HW2 SOL 523 17.431 20.391 28.061 1.00 0.00 H +ATOM 1573 OW SOL 524 2.630 21.881 25.821 1.00 0.00 O +ATOM 1574 HW1 SOL 524 1.840 22.391 25.481 1.00 0.00 H +ATOM 1575 HW2 SOL 524 2.540 21.731 26.801 1.00 0.00 H +ATOM 1576 OW SOL 525 8.220 28.641 1.111 1.00 0.00 O +ATOM 1577 HW1 SOL 525 8.620 28.631 0.191 1.00 0.00 H +ATOM 1578 HW2 SOL 525 8.320 29.561 1.511 1.00 0.00 H +ATOM 1579 OW SOL 526 9.160 27.721 21.531 1.00 0.00 O +ATOM 1580 HW1 SOL 526 9.790 28.101 20.851 1.00 0.00 H +ATOM 1581 HW2 SOL 526 9.560 26.891 21.921 1.00 0.00 H +ATOM 1582 OW SOL 527 16.141 0.311 0.281 1.00 0.00 O +ATOM 1583 HW1 SOL 527 16.741 0.341 1.081 1.00 0.00 H +ATOM 1584 HW2 SOL 527 15.391 0.951 0.411 1.00 0.00 H +ATOM 1585 OW SOL 528 10.391 29.601 25.581 1.00 0.00 O +ATOM 1586 HW1 SOL 528 9.691 29.131 26.121 1.00 0.00 H +ATOM 1587 HW2 SOL 528 10.981 28.921 25.151 1.00 0.00 H +ATOM 1588 OW SOL 529 10.141 20.981 28.331 1.00 0.00 O +ATOM 1589 HW1 SOL 529 10.061 20.621 27.401 1.00 0.00 H +ATOM 1590 HW2 SOL 529 10.121 20.221 28.981 1.00 0.00 H +ATOM 1591 OW SOL 530 17.091 22.471 1.201 1.00 0.00 O +ATOM 1592 HW1 SOL 530 17.821 23.161 1.241 1.00 0.00 H +ATOM 1593 HW2 SOL 530 17.371 21.721 0.611 1.00 0.00 H +ATOM 1594 OW SOL 531 0.750 22.071 18.951 1.00 0.00 O +ATOM 1595 HW1 SOL 531 -0.170 21.791 18.661 1.00 0.00 H +ATOM 1596 HW2 SOL 531 1.060 22.841 18.391 1.00 0.00 H +ATOM 1597 OW SOL 532 16.741 27.451 31.161 1.00 0.00 O +ATOM 1598 HW1 SOL 532 16.471 26.561 30.791 1.00 0.00 H +ATOM 1599 HW2 SOL 532 16.751 28.131 30.431 1.00 0.00 H +ATOM 1600 OW SOL 533 12.251 21.871 23.111 1.00 0.00 O +ATOM 1601 HW1 SOL 533 12.901 21.131 23.001 1.00 0.00 H +ATOM 1602 HW2 SOL 533 12.451 22.371 23.951 1.00 0.00 H +ATOM 1603 OW SOL 534 5.940 26.071 25.141 1.00 0.00 O +ATOM 1604 HW1 SOL 534 6.440 26.921 24.951 1.00 0.00 H +ATOM 1605 HW2 SOL 534 5.060 26.091 24.661 1.00 0.00 H +ATOM 1606 OW SOL 535 8.590 28.181 27.231 1.00 0.00 O +ATOM 1607 HW1 SOL 535 9.130 27.491 27.711 1.00 0.00 H +ATOM 1608 HW2 SOL 535 8.270 28.871 27.891 1.00 0.00 H +ATOM 1609 OW SOL 536 10.831 28.461 19.491 1.00 0.00 O +ATOM 1610 HW1 SOL 536 10.601 28.991 18.671 1.00 0.00 H +ATOM 1611 HW2 SOL 536 11.641 27.901 19.301 1.00 0.00 H +ATOM 1612 OW SOL 537 0.790 31.021 25.151 1.00 0.00 O +ATOM 1613 HW1 SOL 537 0.780 30.551 26.031 1.00 0.00 H +ATOM 1614 HW2 SOL 537 1.610 30.741 24.641 1.00 0.00 H +ATOM 1615 OW SOL 538 18.241 20.541 30.891 1.00 0.00 O +ATOM 1616 HW1 SOL 538 18.201 19.641 31.331 1.00 0.00 H +ATOM 1617 HW2 SOL 538 18.271 20.431 29.901 1.00 0.00 H +ATOM 1618 OW SOL 539 4.280 22.861 23.821 1.00 0.00 O +ATOM 1619 HW1 SOL 539 4.580 22.141 23.201 1.00 0.00 H +ATOM 1620 HW2 SOL 539 3.890 22.461 24.651 1.00 0.00 H +ATOM 1621 OW SOL 540 14.241 20.761 29.741 1.00 0.00 O +ATOM 1622 HW1 SOL 540 14.761 20.111 30.291 1.00 0.00 H +ATOM 1623 HW2 SOL 540 13.751 21.391 30.351 1.00 0.00 H +ATOM 1624 OW SOL 541 10.011 18.961 30.161 1.00 0.00 O +ATOM 1625 HW1 SOL 541 9.381 18.241 29.851 1.00 0.00 H +ATOM 1626 HW2 SOL 541 10.941 18.601 30.161 1.00 0.00 H +ATOM 1627 OW SOL 542 7.700 0.691 21.631 1.00 0.00 O +ATOM 1628 HW1 SOL 542 7.240 -0.179 21.801 1.00 0.00 H +ATOM 1629 HW2 SOL 542 8.610 0.661 22.041 1.00 0.00 H +ATOM 1630 OW SOL 543 13.521 19.141 20.301 1.00 0.00 O +ATOM 1631 HW1 SOL 543 13.871 18.731 19.461 1.00 0.00 H +ATOM 1632 HW2 SOL 543 12.621 18.761 20.501 1.00 0.00 H +ATOM 1633 OW SOL 544 13.001 23.151 25.531 1.00 0.00 O +ATOM 1634 HW1 SOL 544 12.411 23.951 25.571 1.00 0.00 H +ATOM 1635 HW2 SOL 544 13.151 22.801 26.461 1.00 0.00 H +ATOM 1636 OW SOL 545 15.931 20.831 27.441 1.00 0.00 O +ATOM 1637 HW1 SOL 545 15.091 20.821 27.981 1.00 0.00 H +ATOM 1638 HW2 SOL 545 15.951 21.661 26.881 1.00 0.00 H +ATOM 1639 OW SOL 546 0.390 29.391 21.621 1.00 0.00 O +ATOM 1640 HW1 SOL 546 1.380 29.281 21.531 1.00 0.00 H +ATOM 1641 HW2 SOL 546 -0.010 28.531 21.941 1.00 0.00 H +ATOM 1642 OW SOL 547 20.921 6.280 1.130 1.00 0.00 O +ATOM 1643 HW1 SOL 547 19.991 6.260 1.500 1.00 0.00 H +ATOM 1644 HW2 SOL 547 20.931 5.890 0.210 1.00 0.00 H +ATOM 1645 OW SOL 548 20.871 2.750 9.961 1.00 0.00 O +ATOM 1646 HW1 SOL 548 21.221 2.580 10.881 1.00 0.00 H +ATOM 1647 HW2 SOL 548 19.991 2.300 9.841 1.00 0.00 H +ATOM 1648 OW SOL 549 18.811 3.680 6.470 1.00 0.00 O +ATOM 1649 HW1 SOL 549 17.991 4.110 6.860 1.00 0.00 H +ATOM 1650 HW2 SOL 549 18.531 2.950 5.840 1.00 0.00 H +ATOM 1651 OW SOL 550 24.311 12.751 11.651 1.00 0.00 O +ATOM 1652 HW1 SOL 550 23.381 12.681 11.281 1.00 0.00 H +ATOM 1653 HW2 SOL 550 24.421 13.641 12.091 1.00 0.00 H +ATOM 1654 OW SOL 551 29.971 7.030 7.170 1.00 0.00 O +ATOM 1655 HW1 SOL 551 30.541 7.810 6.920 1.00 0.00 H +ATOM 1656 HW2 SOL 551 29.371 7.290 7.930 1.00 0.00 H +ATOM 1657 OW SOL 552 26.301 11.441 10.231 1.00 0.00 O +ATOM 1658 HW1 SOL 552 25.521 11.611 10.831 1.00 0.00 H +ATOM 1659 HW2 SOL 552 26.641 12.311 9.871 1.00 0.00 H +ATOM 1660 OW SOL 553 27.121 7.980 18.231 1.00 0.00 O +ATOM 1661 HW1 SOL 553 27.081 8.740 18.881 1.00 0.00 H +ATOM 1662 HW2 SOL 553 27.341 8.340 17.321 1.00 0.00 H +ATOM 1663 OW SOL 554 25.471 10.121 6.650 1.00 0.00 O +ATOM 1664 HW1 SOL 554 26.161 9.961 7.350 1.00 0.00 H +ATOM 1665 HW2 SOL 554 24.741 10.691 7.030 1.00 0.00 H +ATOM 1666 OW SOL 555 25.481 11.611 18.031 1.00 0.00 O +ATOM 1667 HW1 SOL 555 26.081 12.401 18.171 1.00 0.00 H +ATOM 1668 HW2 SOL 555 24.621 11.921 17.621 1.00 0.00 H +ATOM 1669 OW SOL 556 21.971 14.351 10.611 1.00 0.00 O +ATOM 1670 HW1 SOL 556 21.191 14.041 10.081 1.00 0.00 H +ATOM 1671 HW2 SOL 556 22.551 14.931 10.041 1.00 0.00 H +ATOM 1672 OW SOL 557 23.001 3.920 14.991 1.00 0.00 O +ATOM 1673 HW1 SOL 557 23.821 3.360 15.081 1.00 0.00 H +ATOM 1674 HW2 SOL 557 22.191 3.340 15.031 1.00 0.00 H +ATOM 1675 OW SOL 558 20.931 17.131 4.830 1.00 0.00 O +ATOM 1676 HW1 SOL 558 21.271 17.901 5.370 1.00 0.00 H +ATOM 1677 HW2 SOL 558 21.371 17.131 3.930 1.00 0.00 H +ATOM 1678 OW SOL 559 29.891 13.411 16.901 1.00 0.00 O +ATOM 1679 HW1 SOL 559 30.361 13.411 17.781 1.00 0.00 H +ATOM 1680 HW2 SOL 559 29.411 12.541 16.791 1.00 0.00 H +ATOM 1681 OW SOL 560 20.921 14.341 5.380 1.00 0.00 O +ATOM 1682 HW1 SOL 560 20.661 15.301 5.380 1.00 0.00 H +ATOM 1683 HW2 SOL 560 20.211 13.801 5.830 1.00 0.00 H +ATOM 1684 OW SOL 561 21.021 10.911 8.860 1.00 0.00 O +ATOM 1685 HW1 SOL 561 21.161 10.071 9.380 1.00 0.00 H +ATOM 1686 HW2 SOL 561 20.471 11.551 9.410 1.00 0.00 H +ATOM 1687 OW SOL 562 24.821 17.861 14.391 1.00 0.00 O +ATOM 1688 HW1 SOL 562 23.901 17.691 14.741 1.00 0.00 H +ATOM 1689 HW2 SOL 562 25.101 18.781 14.651 1.00 0.00 H +ATOM 1690 OW SOL 563 24.681 9.641 1.230 1.00 0.00 O +ATOM 1691 HW1 SOL 563 24.751 10.481 0.690 1.00 0.00 H +ATOM 1692 HW2 SOL 563 25.141 9.771 2.110 1.00 0.00 H +ATOM 1693 OW SOL 564 19.841 6.430 5.630 1.00 0.00 O +ATOM 1694 HW1 SOL 564 19.391 5.550 5.800 1.00 0.00 H +ATOM 1695 HW2 SOL 564 19.831 6.970 6.470 1.00 0.00 H +ATOM 1696 OW SOL 565 18.891 15.961 1.170 1.00 0.00 O +ATOM 1697 HW1 SOL 565 18.701 15.001 1.380 1.00 0.00 H +ATOM 1698 HW2 SOL 565 18.561 16.541 1.920 1.00 0.00 H +ATOM 1699 OW SOL 566 19.751 7.370 15.971 1.00 0.00 O +ATOM 1700 HW1 SOL 566 20.631 7.240 16.421 1.00 0.00 H +ATOM 1701 HW2 SOL 566 19.621 8.340 15.751 1.00 0.00 H +ATOM 1702 OW SOL 567 24.751 13.651 7.260 1.00 0.00 O +ATOM 1703 HW1 SOL 567 24.261 12.781 7.350 1.00 0.00 H +ATOM 1704 HW2 SOL 567 24.521 14.081 6.390 1.00 0.00 H +ATOM 1705 OW SOL 568 26.711 0.040 5.020 1.00 0.00 O +ATOM 1706 HW1 SOL 568 27.111 0.950 4.930 1.00 0.00 H +ATOM 1707 HW2 SOL 568 25.711 0.120 5.080 1.00 0.00 H +ATOM 1708 OW SOL 569 20.591 9.761 12.641 1.00 0.00 O +ATOM 1709 HW1 SOL 569 21.481 9.311 12.501 1.00 0.00 H +ATOM 1710 HW2 SOL 569 19.861 9.111 12.451 1.00 0.00 H +ATOM 1711 OW SOL 570 21.791 2.510 18.011 1.00 0.00 O +ATOM 1712 HW1 SOL 570 22.501 3.220 18.071 1.00 0.00 H +ATOM 1713 HW2 SOL 570 20.911 2.900 18.291 1.00 0.00 H +ATOM 1714 OW SOL 571 2.051 14.171 9.531 1.00 0.00 O +ATOM 1715 HW1 SOL 571 1.461 14.231 10.331 1.00 0.00 H +ATOM 1716 HW2 SOL 571 1.901 13.291 9.071 1.00 0.00 H +ATOM 1717 OW SOL 572 24.601 7.290 2.700 1.00 0.00 O +ATOM 1718 HW1 SOL 572 24.841 7.980 2.020 1.00 0.00 H +ATOM 1719 HW2 SOL 572 23.821 7.620 3.240 1.00 0.00 H +ATOM 1720 OW SOL 573 0.201 3.450 9.441 1.00 0.00 O +ATOM 1721 HW1 SOL 573 -0.659 2.950 9.311 1.00 0.00 H +ATOM 1722 HW2 SOL 573 0.821 2.910 10.001 1.00 0.00 H +ATOM 1723 OW SOL 574 26.691 6.050 14.651 1.00 0.00 O +ATOM 1724 HW1 SOL 574 26.221 6.020 15.541 1.00 0.00 H +ATOM 1725 HW2 SOL 574 26.181 5.500 13.991 1.00 0.00 H +ATOM 1726 OW SOL 575 28.351 8.900 15.721 1.00 0.00 O +ATOM 1727 HW1 SOL 575 28.811 8.060 15.431 1.00 0.00 H +ATOM 1728 HW2 SOL 575 27.791 9.240 14.971 1.00 0.00 H +ATOM 1729 OW SOL 576 28.531 4.100 12.421 1.00 0.00 O +ATOM 1730 HW1 SOL 576 27.761 4.440 12.961 1.00 0.00 H +ATOM 1731 HW2 SOL 576 28.191 3.590 11.631 1.00 0.00 H +ATOM 1732 OW SOL 577 29.031 7.010 4.290 1.00 0.00 O +ATOM 1733 HW1 SOL 577 29.291 6.970 5.250 1.00 0.00 H +ATOM 1734 HW2 SOL 577 28.181 6.500 4.150 1.00 0.00 H +ATOM 1735 OW SOL 578 19.381 8.110 7.890 1.00 0.00 O +ATOM 1736 HW1 SOL 578 20.371 7.990 7.980 1.00 0.00 H +ATOM 1737 HW2 SOL 578 19.141 9.060 8.100 1.00 0.00 H +ATOM 1738 OW SOL 579 19.921 18.211 15.711 1.00 0.00 O +ATOM 1739 HW1 SOL 579 19.821 18.061 16.701 1.00 0.00 H +ATOM 1740 HW2 SOL 579 19.061 18.571 15.351 1.00 0.00 H +ATOM 1741 OW SOL 580 27.271 3.480 1.950 1.00 0.00 O +ATOM 1742 HW1 SOL 580 27.861 4.110 1.460 1.00 0.00 H +ATOM 1743 HW2 SOL 580 27.461 2.540 1.660 1.00 0.00 H +ATOM 1744 OW SOL 581 24.121 1.960 8.850 1.00 0.00 O +ATOM 1745 HW1 SOL 581 24.071 1.910 9.850 1.00 0.00 H +ATOM 1746 HW2 SOL 581 24.141 2.920 8.560 1.00 0.00 H +ATOM 1747 OW SOL 582 28.701 14.561 4.770 1.00 0.00 O +ATOM 1748 HW1 SOL 582 28.241 15.281 4.250 1.00 0.00 H +ATOM 1749 HW2 SOL 582 28.661 14.761 5.750 1.00 0.00 H +ATOM 1750 OW SOL 583 22.131 18.011 8.530 1.00 0.00 O +ATOM 1751 HW1 SOL 583 22.631 17.151 8.590 1.00 0.00 H +ATOM 1752 HW2 SOL 583 22.781 18.781 8.500 1.00 0.00 H +ATOM 1753 OW SOL 584 30.891 15.501 15.061 1.00 0.00 O +ATOM 1754 HW1 SOL 584 30.951 14.731 15.701 1.00 0.00 H +ATOM 1755 HW2 SOL 584 30.371 15.241 14.261 1.00 0.00 H +ATOM 1756 OW SOL 585 21.831 9.431 2.420 1.00 0.00 O +ATOM 1757 HW1 SOL 585 22.651 9.821 2.000 1.00 0.00 H +ATOM 1758 HW2 SOL 585 21.561 8.611 1.930 1.00 0.00 H +ATOM 1759 OW SOL 586 23.231 12.661 17.271 1.00 0.00 O +ATOM 1760 HW1 SOL 586 22.731 12.671 16.411 1.00 0.00 H +ATOM 1761 HW2 SOL 586 22.601 12.481 18.031 1.00 0.00 H +ATOM 1762 OW SOL 587 29.731 17.761 2.370 1.00 0.00 O +ATOM 1763 HW1 SOL 587 29.131 17.141 2.870 1.00 0.00 H +ATOM 1764 HW2 SOL 587 30.041 17.321 1.520 1.00 0.00 H +ATOM 1765 OW SOL 588 20.641 2.850 14.981 1.00 0.00 O +ATOM 1766 HW1 SOL 588 19.841 3.450 14.851 1.00 0.00 H +ATOM 1767 HW2 SOL 588 20.541 2.360 15.841 1.00 0.00 H +ATOM 1768 OW SOL 589 23.261 17.431 3.230 1.00 0.00 O +ATOM 1769 HW1 SOL 589 23.591 17.821 4.090 1.00 0.00 H +ATOM 1770 HW2 SOL 589 24.021 17.361 2.580 1.00 0.00 H +ATOM 1771 OW SOL 590 21.111 17.851 12.411 1.00 0.00 O +ATOM 1772 HW1 SOL 590 21.681 17.201 12.911 1.00 0.00 H +ATOM 1773 HW2 SOL 590 20.951 17.521 11.481 1.00 0.00 H +ATOM 1774 OW SOL 591 28.021 16.981 9.040 1.00 0.00 O +ATOM 1775 HW1 SOL 591 28.821 16.411 9.250 1.00 0.00 H +ATOM 1776 HW2 SOL 591 27.531 16.581 8.270 1.00 0.00 H +ATOM 1777 OW SOL 592 22.441 7.000 4.800 1.00 0.00 O +ATOM 1778 HW1 SOL 592 22.891 6.100 4.770 1.00 0.00 H +ATOM 1779 HW2 SOL 592 21.501 6.890 5.130 1.00 0.00 H +ATOM 1780 OW SOL 593 24.761 1.220 1.170 1.00 0.00 O +ATOM 1781 HW1 SOL 593 25.741 1.000 1.240 1.00 0.00 H +ATOM 1782 HW2 SOL 593 24.451 1.050 0.240 1.00 0.00 H +ATOM 1783 OW SOL 594 26.431 2.640 17.491 1.00 0.00 O +ATOM 1784 HW1 SOL 594 27.101 2.030 17.921 1.00 0.00 H +ATOM 1785 HW2 SOL 594 25.701 2.830 18.141 1.00 0.00 H +ATOM 1786 OW SOL 595 27.501 15.141 11.951 1.00 0.00 O +ATOM 1787 HW1 SOL 595 27.271 14.891 11.011 1.00 0.00 H +ATOM 1788 HW2 SOL 595 28.111 14.451 12.341 1.00 0.00 H +ATOM 1789 OW SOL 596 26.651 14.021 9.240 1.00 0.00 O +ATOM 1790 HW1 SOL 596 27.551 14.161 8.820 1.00 0.00 H +ATOM 1791 HW2 SOL 596 25.941 14.041 8.530 1.00 0.00 H +ATOM 1792 OW SOL 597 27.841 5.030 8.990 1.00 0.00 O +ATOM 1793 HW1 SOL 597 27.591 4.940 8.030 1.00 0.00 H +ATOM 1794 HW2 SOL 597 28.321 4.210 9.300 1.00 0.00 H +ATOM 1795 OW SOL 598 24.011 0.640 5.120 1.00 0.00 O +ATOM 1796 HW1 SOL 598 23.201 0.650 5.700 1.00 0.00 H +ATOM 1797 HW2 SOL 598 24.041 1.470 4.570 1.00 0.00 H +ATOM 1798 OW SOL 599 1.731 11.881 0.410 1.00 0.00 O +ATOM 1799 HW1 SOL 599 2.051 11.121 0.980 1.00 0.00 H +ATOM 1800 HW2 SOL 599 0.811 12.151 0.710 1.00 0.00 H +ATOM 1801 OW SOL 600 21.591 0.350 1.710 1.00 0.00 O +ATOM 1802 HW1 SOL 600 22.081 1.190 1.500 1.00 0.00 H +ATOM 1803 HW2 SOL 600 22.211 -0.300 2.160 1.00 0.00 H +ATOM 1804 OW SOL 601 27.971 2.360 4.800 1.00 0.00 O +ATOM 1805 HW1 SOL 601 27.491 2.770 4.020 1.00 0.00 H +ATOM 1806 HW2 SOL 601 28.961 2.340 4.610 1.00 0.00 H +ATOM 1807 OW SOL 602 29.381 6.830 14.641 1.00 0.00 O +ATOM 1808 HW1 SOL 602 28.581 6.220 14.671 1.00 0.00 H +ATOM 1809 HW2 SOL 602 30.191 6.300 14.401 1.00 0.00 H +ATOM 1810 OW SOL 603 30.891 15.701 7.930 1.00 0.00 O +ATOM 1811 HW1 SOL 603 31.101 16.441 7.280 1.00 0.00 H +ATOM 1812 HW2 SOL 603 31.571 15.701 8.660 1.00 0.00 H +ATOM 1813 OW SOL 604 23.211 11.521 7.410 1.00 0.00 O +ATOM 1814 HW1 SOL 604 22.501 11.251 8.060 1.00 0.00 H +ATOM 1815 HW2 SOL 604 22.951 11.241 6.480 1.00 0.00 H +ATOM 1816 OW SOL 605 0.101 17.971 5.910 1.00 0.00 O +ATOM 1817 HW1 SOL 605 0.541 18.611 5.270 1.00 0.00 H +ATOM 1818 HW2 SOL 605 -0.399 18.491 6.610 1.00 0.00 H +ATOM 1819 OW SOL 606 28.941 5.490 0.160 1.00 0.00 O +ATOM 1820 HW1 SOL 606 28.531 6.310 -0.230 1.00 0.00 H +ATOM 1821 HW2 SOL 606 29.581 5.750 0.890 1.00 0.00 H +ATOM 1822 OW SOL 607 19.401 5.560 13.861 1.00 0.00 O +ATOM 1823 HW1 SOL 607 20.321 5.550 13.451 1.00 0.00 H +ATOM 1824 HW2 SOL 607 19.341 6.300 14.531 1.00 0.00 H +ATOM 1825 OW SOL 608 24.231 2.220 11.471 1.00 0.00 O +ATOM 1826 HW1 SOL 608 24.611 1.380 11.841 1.00 0.00 H +ATOM 1827 HW2 SOL 608 23.351 2.410 11.911 1.00 0.00 H +ATOM 1828 OW SOL 609 27.281 4.540 6.420 1.00 0.00 O +ATOM 1829 HW1 SOL 609 26.961 5.260 5.800 1.00 0.00 H +ATOM 1830 HW2 SOL 609 27.521 3.730 5.890 1.00 0.00 H +ATOM 1831 OW SOL 610 28.791 0.390 7.530 1.00 0.00 O +ATOM 1832 HW1 SOL 610 28.071 0.440 6.840 1.00 0.00 H +ATOM 1833 HW2 SOL 610 28.551 -0.300 8.220 1.00 0.00 H +ATOM 1834 OW SOL 611 23.501 13.851 1.740 1.00 0.00 O +ATOM 1835 HW1 SOL 611 22.631 13.701 2.210 1.00 0.00 H +ATOM 1836 HW2 SOL 611 23.331 14.111 0.790 1.00 0.00 H +ATOM 1837 OW SOL 612 23.891 2.560 3.280 1.00 0.00 O +ATOM 1838 HW1 SOL 612 24.161 1.970 2.530 1.00 0.00 H +ATOM 1839 HW2 SOL 612 23.891 3.510 2.970 1.00 0.00 H +ATOM 1840 OW SOL 613 29.261 13.471 13.401 1.00 0.00 O +ATOM 1841 HW1 SOL 613 28.461 13.241 13.951 1.00 0.00 H +ATOM 1842 HW2 SOL 613 30.091 13.211 13.891 1.00 0.00 H +ATOM 1843 OW SOL 614 29.731 11.951 11.001 1.00 0.00 O +ATOM 1844 HW1 SOL 614 29.331 12.391 11.811 1.00 0.00 H +ATOM 1845 HW2 SOL 614 29.321 12.321 10.171 1.00 0.00 H +ATOM 1846 OW SOL 615 27.771 0.890 14.021 1.00 0.00 O +ATOM 1847 HW1 SOL 615 28.021 0.690 13.071 1.00 0.00 H +ATOM 1848 HW2 SOL 615 28.491 1.450 14.441 1.00 0.00 H +ATOM 1849 OW SOL 616 28.421 11.161 17.191 1.00 0.00 O +ATOM 1850 HW1 SOL 616 27.431 11.221 17.291 1.00 0.00 H +ATOM 1851 HW2 SOL 616 28.651 10.361 16.631 1.00 0.00 H +ATOM 1852 OW SOL 617 25.671 10.501 3.680 1.00 0.00 O +ATOM 1853 HW1 SOL 617 25.531 10.571 4.670 1.00 0.00 H +ATOM 1854 HW2 SOL 617 26.511 9.991 3.500 1.00 0.00 H +ATOM 1855 OW SOL 618 22.721 8.130 12.511 1.00 0.00 O +ATOM 1856 HW1 SOL 618 23.581 8.250 13.011 1.00 0.00 H +ATOM 1857 HW2 SOL 618 22.301 7.260 12.781 1.00 0.00 H +ATOM 1858 OW SOL 619 0.131 3.860 12.621 1.00 0.00 O +ATOM 1859 HW1 SOL 619 0.341 4.600 13.261 1.00 0.00 H +ATOM 1860 HW2 SOL 619 -0.759 4.030 12.191 1.00 0.00 H +ATOM 1861 OW SOL 620 19.261 15.641 13.311 1.00 0.00 O +ATOM 1862 HW1 SOL 620 18.801 16.461 12.971 1.00 0.00 H +ATOM 1863 HW2 SOL 620 20.241 15.831 13.401 1.00 0.00 H +ATOM 1864 OW SOL 621 22.291 11.001 5.010 1.00 0.00 O +ATOM 1865 HW1 SOL 621 22.221 11.831 4.450 1.00 0.00 H +ATOM 1866 HW2 SOL 621 22.331 10.201 4.410 1.00 0.00 H +ATOM 1867 OW SOL 622 24.281 5.370 8.650 1.00 0.00 O +ATOM 1868 HW1 SOL 622 24.401 6.030 7.910 1.00 0.00 H +ATOM 1869 HW2 SOL 622 24.741 5.710 9.480 1.00 0.00 H +ATOM 1870 OW SOL 623 31.141 13.481 3.880 1.00 0.00 O +ATOM 1871 HW1 SOL 623 31.641 14.251 4.280 1.00 0.00 H +ATOM 1872 HW2 SOL 623 30.191 13.501 4.200 1.00 0.00 H +ATOM 1873 OW SOL 624 22.161 15.101 13.291 1.00 0.00 O +ATOM 1874 HW1 SOL 624 21.951 14.661 12.421 1.00 0.00 H +ATOM 1875 HW2 SOL 624 23.131 15.361 13.321 1.00 0.00 H +ATOM 1876 OW SOL 625 22.641 7.510 15.981 1.00 0.00 O +ATOM 1877 HW1 SOL 625 23.321 8.060 15.511 1.00 0.00 H +ATOM 1878 HW2 SOL 625 23.041 6.630 16.251 1.00 0.00 H +ATOM 1879 OW SOL 626 28.751 1.050 17.701 1.00 0.00 O +ATOM 1880 HW1 SOL 626 28.811 1.900 17.181 1.00 0.00 H +ATOM 1881 HW2 SOL 626 29.071 0.290 17.131 1.00 0.00 H +ATOM 1882 OW SOL 627 23.661 0.500 17.401 1.00 0.00 O +ATOM 1883 HW1 SOL 627 23.241 -0.070 16.701 1.00 0.00 H +ATOM 1884 HW2 SOL 627 23.001 1.190 17.721 1.00 0.00 H +ATOM 1885 OW SOL 628 24.351 8.700 10.291 1.00 0.00 O +ATOM 1886 HW1 SOL 628 24.791 9.590 10.201 1.00 0.00 H +ATOM 1887 HW2 SOL 628 23.721 8.700 11.061 1.00 0.00 H +ATOM 1888 OW SOL 629 0.991 8.620 10.451 1.00 0.00 O +ATOM 1889 HW1 SOL 629 0.241 8.620 9.791 1.00 0.00 H +ATOM 1890 HW2 SOL 629 1.361 7.700 10.541 1.00 0.00 H +ATOM 1891 OW SOL 630 30.711 5.250 2.750 1.00 0.00 O +ATOM 1892 HW1 SOL 630 30.841 4.410 3.290 1.00 0.00 H +ATOM 1893 HW2 SOL 630 30.421 5.990 3.350 1.00 0.00 H +ATOM 1894 OW SOL 631 21.691 2.130 12.311 1.00 0.00 O +ATOM 1895 HW1 SOL 631 21.461 2.500 13.211 1.00 0.00 H +ATOM 1896 HW2 SOL 631 21.391 1.180 12.251 1.00 0.00 H +ATOM 1897 OW SOL 632 18.991 13.101 12.821 1.00 0.00 O +ATOM 1898 HW1 SOL 632 19.521 12.611 13.501 1.00 0.00 H +ATOM 1899 HW2 SOL 632 19.211 14.081 12.871 1.00 0.00 H +ATOM 1900 OW SOL 633 25.941 6.340 10.641 1.00 0.00 O +ATOM 1901 HW1 SOL 633 26.531 6.080 9.881 1.00 0.00 H +ATOM 1902 HW2 SOL 633 25.661 7.300 10.531 1.00 0.00 H +ATOM 1903 OW SOL 634 21.691 0.630 6.180 1.00 0.00 O +ATOM 1904 HW1 SOL 634 21.581 1.570 6.510 1.00 0.00 H +ATOM 1905 HW2 SOL 634 21.641 0.000 6.950 1.00 0.00 H +ATOM 1906 OW SOL 635 28.851 7.660 9.661 1.00 0.00 O +ATOM 1907 HW1 SOL 635 29.001 7.870 10.621 1.00 0.00 H +ATOM 1908 HW2 SOL 635 28.551 6.710 9.571 1.00 0.00 H +ATOM 1909 OW SOL 636 28.421 15.731 17.001 1.00 0.00 O +ATOM 1910 HW1 SOL 636 28.221 16.171 16.121 1.00 0.00 H +ATOM 1911 HW2 SOL 636 28.811 14.821 16.841 1.00 0.00 H +ATOM 1912 OW SOL 637 22.121 8.980 18.041 1.00 0.00 O +ATOM 1913 HW1 SOL 637 22.881 9.420 18.521 1.00 0.00 H +ATOM 1914 HW2 SOL 637 22.471 8.510 17.221 1.00 0.00 H +ATOM 1915 OW SOL 638 29.301 13.331 8.490 1.00 0.00 O +ATOM 1916 HW1 SOL 638 29.371 12.491 7.940 1.00 0.00 H +ATOM 1917 HW2 SOL 638 29.921 14.021 8.130 1.00 0.00 H +ATOM 1918 OW SOL 639 21.811 8.100 9.491 1.00 0.00 O +ATOM 1919 HW1 SOL 639 22.741 8.460 9.541 1.00 0.00 H +ATOM 1920 HW2 SOL 639 21.751 7.250 10.011 1.00 0.00 H +ATOM 1921 OW SOL 640 22.011 5.090 10.061 1.00 0.00 O +ATOM 1922 HW1 SOL 640 21.491 4.260 9.891 1.00 0.00 H +ATOM 1923 HW2 SOL 640 22.781 5.140 9.421 1.00 0.00 H +ATOM 1924 OW SOL 641 30.001 3.800 16.781 1.00 0.00 O +ATOM 1925 HW1 SOL 641 29.551 4.430 17.421 1.00 0.00 H +ATOM 1926 HW2 SOL 641 30.931 4.110 16.611 1.00 0.00 H +ATOM 1927 OW SOL 642 30.221 2.070 14.771 1.00 0.00 O +ATOM 1928 HW1 SOL 642 30.221 2.710 15.541 1.00 0.00 H +ATOM 1929 HW2 SOL 642 30.501 2.550 13.941 1.00 0.00 H +ATOM 1930 OW SOL 643 18.701 13.261 2.000 1.00 0.00 O +ATOM 1931 HW1 SOL 643 17.771 13.471 1.690 1.00 0.00 H +ATOM 1932 HW2 SOL 643 18.801 12.271 2.130 1.00 0.00 H +ATOM 1933 OW SOL 644 19.501 18.011 9.270 1.00 0.00 O +ATOM 1934 HW1 SOL 644 19.081 17.151 9.000 1.00 0.00 H +ATOM 1935 HW2 SOL 644 20.441 18.041 8.930 1.00 0.00 H +ATOM 1936 OW SOL 645 23.661 15.681 9.100 1.00 0.00 O +ATOM 1937 HW1 SOL 645 24.321 16.421 9.190 1.00 0.00 H +ATOM 1938 HW2 SOL 645 24.101 14.891 8.680 1.00 0.00 H +ATOM 1939 OW SOL 646 28.641 7.960 12.381 1.00 0.00 O +ATOM 1940 HW1 SOL 646 29.051 7.640 13.241 1.00 0.00 H +ATOM 1941 HW2 SOL 646 27.681 7.690 12.351 1.00 0.00 H +ATOM 1942 OW SOL 647 19.021 5.440 11.141 1.00 0.00 O +ATOM 1943 HW1 SOL 647 19.871 5.110 10.731 1.00 0.00 H +ATOM 1944 HW2 SOL 647 19.151 5.590 12.121 1.00 0.00 H +ATOM 1945 OW SOL 648 20.511 5.200 17.221 1.00 0.00 O +ATOM 1946 HW1 SOL 648 21.101 4.800 16.521 1.00 0.00 H +ATOM 1947 HW2 SOL 648 19.931 5.910 16.811 1.00 0.00 H +ATOM 1948 OW SOL 649 26.771 5.720 3.250 1.00 0.00 O +ATOM 1949 HW1 SOL 649 26.841 4.830 2.790 1.00 0.00 H +ATOM 1950 HW2 SOL 649 25.831 6.060 3.170 1.00 0.00 H +ATOM 1951 OW SOL 650 21.141 15.641 17.441 1.00 0.00 O +ATOM 1952 HW1 SOL 650 20.841 16.211 18.201 1.00 0.00 H +ATOM 1953 HW2 SOL 650 21.071 14.671 17.701 1.00 0.00 H +ATOM 1954 OW SOL 651 25.331 4.640 12.691 1.00 0.00 O +ATOM 1955 HW1 SOL 651 24.991 3.750 12.391 1.00 0.00 H +ATOM 1956 HW2 SOL 651 25.591 5.180 11.891 1.00 0.00 H +ATOM 1957 OW SOL 652 27.921 16.781 14.651 1.00 0.00 O +ATOM 1958 HW1 SOL 652 27.681 16.601 13.701 1.00 0.00 H +ATOM 1959 HW2 SOL 652 28.221 17.721 14.751 1.00 0.00 H +ATOM 1960 OW SOL 653 23.351 5.000 1.910 1.00 0.00 O +ATOM 1961 HW1 SOL 653 23.961 5.800 1.950 1.00 0.00 H +ATOM 1962 HW2 SOL 653 22.401 5.310 1.980 1.00 0.00 H +ATOM 1963 OW SOL 654 20.211 11.371 14.661 1.00 0.00 O +ATOM 1964 HW1 SOL 654 20.431 10.761 15.421 1.00 0.00 H +ATOM 1965 HW2 SOL 654 20.311 10.881 13.801 1.00 0.00 H +ATOM 1966 OW SOL 655 0.861 10.591 12.341 1.00 0.00 O +ATOM 1967 HW1 SOL 655 1.101 9.961 11.601 1.00 0.00 H +ATOM 1968 HW2 SOL 655 -0.039 10.991 12.161 1.00 0.00 H +ATOM 1969 OW SOL 656 31.141 17.311 11.281 1.00 0.00 O +ATOM 1970 HW1 SOL 656 31.981 17.361 10.741 1.00 0.00 H +ATOM 1971 HW2 SOL 656 30.911 16.351 11.461 1.00 0.00 H +ATOM 1972 OW SOL 657 19.451 12.581 10.221 1.00 0.00 O +ATOM 1973 HW1 SOL 657 19.401 12.571 11.221 1.00 0.00 H +ATOM 1974 HW2 SOL 657 18.621 12.171 9.841 1.00 0.00 H +ATOM 1975 OW SOL 658 25.501 16.621 17.161 1.00 0.00 O +ATOM 1976 HW1 SOL 658 24.941 17.431 17.251 1.00 0.00 H +ATOM 1977 HW2 SOL 658 26.021 16.661 16.301 1.00 0.00 H +ATOM 1978 OW SOL 659 27.651 0.860 1.330 1.00 0.00 O +ATOM 1979 HW1 SOL 659 28.161 0.870 0.470 1.00 0.00 H +ATOM 1980 HW2 SOL 659 28.211 0.440 2.040 1.00 0.00 H +ATOM 1981 OW SOL 660 1.271 15.731 4.770 1.00 0.00 O +ATOM 1982 HW1 SOL 660 1.941 15.851 4.030 1.00 0.00 H +ATOM 1983 HW2 SOL 660 0.871 16.621 5.000 1.00 0.00 H +ATOM 1984 OW SOL 661 19.921 17.941 18.511 1.00 0.00 O +ATOM 1985 HW1 SOL 661 19.511 17.201 19.041 1.00 0.00 H +ATOM 1986 HW2 SOL 661 20.561 18.451 19.091 1.00 0.00 H +ATOM 1987 OW SOL 662 0.191 9.270 6.720 1.00 0.00 O +ATOM 1988 HW1 SOL 662 0.791 8.460 6.740 1.00 0.00 H +ATOM 1989 HW2 SOL 662 0.591 9.960 6.120 1.00 0.00 H +ATOM 1990 OW SOL 663 26.921 12.731 14.221 1.00 0.00 O +ATOM 1991 HW1 SOL 663 26.871 13.061 15.171 1.00 0.00 H +ATOM 1992 HW2 SOL 663 26.061 12.921 13.761 1.00 0.00 H +ATOM 1993 OW SOL 664 25.341 16.161 1.540 1.00 0.00 O +ATOM 1994 HW1 SOL 664 25.431 16.261 0.550 1.00 0.00 H +ATOM 1995 HW2 SOL 664 24.941 15.271 1.750 1.00 0.00 H +ATOM 1996 OW SOL 665 21.251 3.260 7.200 1.00 0.00 O +ATOM 1997 HW1 SOL 665 20.461 3.770 6.860 1.00 0.00 H +ATOM 1998 HW2 SOL 665 21.161 3.110 8.180 1.00 0.00 H +ATOM 1999 OW SOL 666 30.561 16.121 0.310 1.00 0.00 O +ATOM 2000 HW1 SOL 666 30.621 15.191 0.680 1.00 0.00 H +ATOM 2001 HW2 SOL 666 29.971 16.121 -0.490 1.00 0.00 H +ATOM 2002 OW SOL 667 26.841 10.021 13.721 1.00 0.00 O +ATOM 2003 HW1 SOL 667 27.241 10.011 12.801 1.00 0.00 H +ATOM 2004 HW2 SOL 667 26.941 10.941 14.121 1.00 0.00 H +ATOM 2005 OW SOL 668 27.781 9.100 2.910 1.00 0.00 O +ATOM 2006 HW1 SOL 668 28.411 9.480 2.230 1.00 0.00 H +ATOM 2007 HW2 SOL 668 28.181 8.270 3.300 1.00 0.00 H +ATOM 2008 OW SOL 669 22.341 12.881 14.901 1.00 0.00 O +ATOM 2009 HW1 SOL 669 22.211 13.811 14.561 1.00 0.00 H +ATOM 2010 HW2 SOL 669 21.501 12.361 14.771 1.00 0.00 H +ATOM 2011 OW SOL 670 29.011 10.981 6.960 1.00 0.00 O +ATOM 2012 HW1 SOL 670 28.311 10.511 7.500 1.00 0.00 H +ATOM 2013 HW2 SOL 670 29.601 10.301 6.530 1.00 0.00 H +ATOM 2014 OW SOL 671 28.761 2.360 9.711 1.00 0.00 O +ATOM 2015 HW1 SOL 671 28.681 2.000 8.781 1.00 0.00 H +ATOM 2016 HW2 SOL 671 28.741 1.600 10.361 1.00 0.00 H +ATOM 2017 OW SOL 672 24.521 14.871 4.910 1.00 0.00 O +ATOM 2018 HW1 SOL 672 24.941 14.291 4.210 1.00 0.00 H +ATOM 2019 HW2 SOL 672 24.081 15.661 4.470 1.00 0.00 H +ATOM 2020 OW SOL 673 21.171 13.481 2.900 1.00 0.00 O +ATOM 2021 HW1 SOL 673 20.211 13.491 2.630 1.00 0.00 H +ATOM 2022 HW2 SOL 673 21.291 14.011 3.740 1.00 0.00 H +ATOM 2023 OW SOL 674 19.671 10.131 17.261 1.00 0.00 O +ATOM 2024 HW1 SOL 674 18.901 9.801 17.801 1.00 0.00 H +ATOM 2025 HW2 SOL 674 20.521 9.831 17.681 1.00 0.00 H +ATOM 2026 OW SOL 675 25.341 2.030 14.891 1.00 0.00 O +ATOM 2027 HW1 SOL 675 26.241 1.870 14.491 1.00 0.00 H +ATOM 2028 HW2 SOL 675 25.421 2.080 15.881 1.00 0.00 H +ATOM 2029 OW SOL 676 19.341 1.660 3.180 1.00 0.00 O +ATOM 2030 HW1 SOL 676 19.171 2.490 2.640 1.00 0.00 H +ATOM 2031 HW2 SOL 676 20.241 1.290 2.960 1.00 0.00 H +ATOM 2032 OW SOL 677 30.451 13.351 1.190 1.00 0.00 O +ATOM 2033 HW1 SOL 677 29.461 13.241 1.210 1.00 0.00 H +ATOM 2034 HW2 SOL 677 30.791 13.501 2.120 1.00 0.00 H +ATOM 2035 OW SOL 678 24.751 8.420 14.311 1.00 0.00 O +ATOM 2036 HW1 SOL 678 25.311 9.230 14.141 1.00 0.00 H +ATOM 2037 HW2 SOL 678 25.341 7.620 14.341 1.00 0.00 H +ATOM 2038 OW SOL 679 25.781 5.650 17.081 1.00 0.00 O +ATOM 2039 HW1 SOL 679 25.971 6.300 17.821 1.00 0.00 H +ATOM 2040 HW2 SOL 679 26.381 4.850 17.171 1.00 0.00 H +ATOM 2041 OW SOL 680 22.521 17.411 15.601 1.00 0.00 O +ATOM 2042 HW1 SOL 680 21.611 17.821 15.581 1.00 0.00 H +ATOM 2043 HW2 SOL 680 22.451 16.471 15.921 1.00 0.00 H +ATOM 2044 OW SOL 681 30.871 3.250 4.490 1.00 0.00 O +ATOM 2045 HW1 SOL 681 31.521 2.510 4.380 1.00 0.00 H +ATOM 2046 HW2 SOL 681 31.071 3.750 5.330 1.00 0.00 H +ATOM 2047 OW SOL 682 24.561 7.450 6.520 1.00 0.00 O +ATOM 2048 HW1 SOL 682 25.061 8.300 6.330 1.00 0.00 H +ATOM 2049 HW2 SOL 682 23.681 7.470 6.040 1.00 0.00 H +ATOM 2050 OW SOL 683 27.211 13.741 0.160 1.00 0.00 O +ATOM 2051 HW1 SOL 683 26.751 13.891 1.040 1.00 0.00 H +ATOM 2052 HW2 SOL 683 27.651 14.591 -0.140 1.00 0.00 H +ATOM 2053 OW SOL 684 25.231 17.901 9.531 1.00 0.00 O +ATOM 2054 HW1 SOL 684 24.771 18.781 9.401 1.00 0.00 H +ATOM 2055 HW2 SOL 684 26.221 18.021 9.461 1.00 0.00 H +ATOM 2056 OW SOL 685 1.471 18.511 17.201 1.00 0.00 O +ATOM 2057 HW1 SOL 685 0.511 18.401 16.931 1.00 0.00 H +ATOM 2058 HW2 SOL 685 2.031 17.841 16.721 1.00 0.00 H +ATOM 2059 OW SOL 686 27.211 9.561 8.610 1.00 0.00 O +ATOM 2060 HW1 SOL 686 27.751 8.871 9.090 1.00 0.00 H +ATOM 2061 HW2 SOL 686 26.891 10.251 9.270 1.00 0.00 H +ATOM 2062 OW SOL 687 29.451 9.841 0.870 1.00 0.00 O +ATOM 2063 HW1 SOL 687 29.221 10.371 0.050 1.00 0.00 H +ATOM 2064 HW2 SOL 687 30.261 9.281 0.680 1.00 0.00 H +ATOM 2065 OW SOL 688 20.831 13.141 18.441 1.00 0.00 O +ATOM 2066 HW1 SOL 688 20.181 12.411 18.231 1.00 0.00 H +ATOM 2067 HW2 SOL 688 20.871 13.281 19.421 1.00 0.00 H +ATOM 2068 OW SOL 689 19.411 12.401 6.530 1.00 0.00 O +ATOM 2069 HW1 SOL 689 19.401 11.931 7.410 1.00 0.00 H +ATOM 2070 HW2 SOL 689 20.231 12.121 6.020 1.00 0.00 H +ATOM 2071 OW SOL 690 25.341 13.911 16.241 1.00 0.00 O +ATOM 2072 HW1 SOL 690 24.561 13.411 16.621 1.00 0.00 H +ATOM 2073 HW2 SOL 690 25.311 14.861 16.551 1.00 0.00 H +ATOM 2074 OW SOL 691 22.901 4.240 5.200 1.00 0.00 O +ATOM 2075 HW1 SOL 691 23.201 3.520 4.580 1.00 0.00 H +ATOM 2076 HW2 SOL 691 22.511 3.840 6.030 1.00 0.00 H +ATOM 2077 OW SOL 692 21.791 5.470 12.801 1.00 0.00 O +ATOM 2078 HW1 SOL 692 22.171 4.880 13.521 1.00 0.00 H +ATOM 2079 HW2 SOL 692 22.191 5.210 11.921 1.00 0.00 H +ATOM 2080 OW SOL 693 26.741 15.861 6.870 1.00 0.00 O +ATOM 2081 HW1 SOL 693 27.061 15.961 5.930 1.00 0.00 H +ATOM 2082 HW2 SOL 693 25.951 15.241 6.890 1.00 0.00 H +ATOM 2083 OW SOL 694 1.631 2.140 11.121 1.00 0.00 O +ATOM 2084 HW1 SOL 694 2.151 1.490 11.671 1.00 0.00 H +ATOM 2085 HW2 SOL 694 1.141 2.770 11.731 1.00 0.00 H +ATOM 2086 OW SOL 695 28.631 0.340 11.541 1.00 0.00 O +ATOM 2087 HW1 SOL 695 28.001 -0.380 11.231 1.00 0.00 H +ATOM 2088 HW2 SOL 695 29.561 -0.020 11.541 1.00 0.00 H +ATOM 2089 OW SOL 696 26.321 13.301 3.010 1.00 0.00 O +ATOM 2090 HW1 SOL 696 25.861 12.431 3.180 1.00 0.00 H +ATOM 2091 HW2 SOL 696 27.231 13.271 3.420 1.00 0.00 H +ATOM 2092 OW SOL 697 24.801 15.671 12.841 1.00 0.00 O +ATOM 2093 HW1 SOL 697 24.751 16.491 13.411 1.00 0.00 H +ATOM 2094 HW2 SOL 697 25.691 15.641 12.391 1.00 0.00 H +ATOM 2095 OW SOL 698 0.391 4.530 6.910 1.00 0.00 O +ATOM 2096 HW1 SOL 698 -0.199 5.330 6.950 1.00 0.00 H +ATOM 2097 HW2 SOL 698 0.541 4.180 7.840 1.00 0.00 H +ATOM 2098 OW SOL 699 19.011 10.771 3.000 1.00 0.00 O +ATOM 2099 HW1 SOL 699 20.001 10.661 2.910 1.00 0.00 H +ATOM 2100 HW2 SOL 699 18.611 9.911 3.320 1.00 0.00 H +ATOM 2101 OW SOL 700 27.371 16.461 3.370 1.00 0.00 O +ATOM 2102 HW1 SOL 700 26.601 16.111 2.830 1.00 0.00 H +ATOM 2103 HW2 SOL 700 27.051 17.171 3.990 1.00 0.00 H +ATOM 2104 OW SOL 701 20.921 6.280 19.751 1.00 0.00 O +ATOM 2105 HW1 SOL 701 19.991 6.260 20.121 1.00 0.00 H +ATOM 2106 HW2 SOL 701 20.931 5.890 18.831 1.00 0.00 H +ATOM 2107 OW SOL 702 20.871 2.750 28.581 1.00 0.00 O +ATOM 2108 HW1 SOL 702 21.221 2.580 29.501 1.00 0.00 H +ATOM 2109 HW2 SOL 702 19.991 2.300 28.461 1.00 0.00 H +ATOM 2110 OW SOL 703 18.811 3.680 25.091 1.00 0.00 O +ATOM 2111 HW1 SOL 703 17.991 4.110 25.481 1.00 0.00 H +ATOM 2112 HW2 SOL 703 18.531 2.950 24.461 1.00 0.00 H +ATOM 2113 OW SOL 704 24.311 12.751 30.271 1.00 0.00 O +ATOM 2114 HW1 SOL 704 23.381 12.681 29.901 1.00 0.00 H +ATOM 2115 HW2 SOL 704 24.421 13.641 30.711 1.00 0.00 H +ATOM 2116 OW SOL 705 29.971 7.030 25.791 1.00 0.00 O +ATOM 2117 HW1 SOL 705 30.541 7.810 25.541 1.00 0.00 H +ATOM 2118 HW2 SOL 705 29.371 7.290 26.551 1.00 0.00 H +ATOM 2119 OW SOL 706 26.301 11.441 28.851 1.00 0.00 O +ATOM 2120 HW1 SOL 706 25.521 11.611 29.451 1.00 0.00 H +ATOM 2121 HW2 SOL 706 26.641 12.311 28.491 1.00 0.00 H +ATOM 2122 OW SOL 707 25.471 10.121 25.271 1.00 0.00 O +ATOM 2123 HW1 SOL 707 26.161 9.961 25.971 1.00 0.00 H +ATOM 2124 HW2 SOL 707 24.741 10.691 25.651 1.00 0.00 H +ATOM 2125 OW SOL 708 21.971 14.351 29.231 1.00 0.00 O +ATOM 2126 HW1 SOL 708 21.191 14.041 28.701 1.00 0.00 H +ATOM 2127 HW2 SOL 708 22.551 14.931 28.661 1.00 0.00 H +ATOM 2128 OW SOL 709 1.991 15.051 0.781 1.00 0.00 O +ATOM 2129 HW1 SOL 709 2.231 15.991 1.041 1.00 0.00 H +ATOM 2130 HW2 SOL 709 1.831 14.511 1.601 1.00 0.00 H +ATOM 2131 OW SOL 710 20.931 17.131 23.451 1.00 0.00 O +ATOM 2132 HW1 SOL 710 21.271 17.901 23.991 1.00 0.00 H +ATOM 2133 HW2 SOL 710 21.371 17.131 22.551 1.00 0.00 H +ATOM 2134 OW SOL 711 20.921 14.341 24.001 1.00 0.00 O +ATOM 2135 HW1 SOL 711 20.661 15.301 24.001 1.00 0.00 H +ATOM 2136 HW2 SOL 711 20.211 13.801 24.451 1.00 0.00 H +ATOM 2137 OW SOL 712 21.021 10.911 27.481 1.00 0.00 O +ATOM 2138 HW1 SOL 712 21.161 10.071 28.001 1.00 0.00 H +ATOM 2139 HW2 SOL 712 20.471 11.551 28.031 1.00 0.00 H +ATOM 2140 OW SOL 713 24.681 9.641 19.851 1.00 0.00 O +ATOM 2141 HW1 SOL 713 24.751 10.481 19.311 1.00 0.00 H +ATOM 2142 HW2 SOL 713 25.141 9.771 20.731 1.00 0.00 H +ATOM 2143 OW SOL 714 19.841 6.430 24.251 1.00 0.00 O +ATOM 2144 HW1 SOL 714 19.391 5.550 24.421 1.00 0.00 H +ATOM 2145 HW2 SOL 714 19.831 6.970 25.091 1.00 0.00 H +ATOM 2146 OW SOL 715 18.891 15.961 19.791 1.00 0.00 O +ATOM 2147 HW1 SOL 715 18.701 15.001 20.001 1.00 0.00 H +ATOM 2148 HW2 SOL 715 18.561 16.541 20.541 1.00 0.00 H +ATOM 2149 OW SOL 716 24.751 13.651 25.881 1.00 0.00 O +ATOM 2150 HW1 SOL 716 24.261 12.781 25.971 1.00 0.00 H +ATOM 2151 HW2 SOL 716 24.521 14.081 25.011 1.00 0.00 H +ATOM 2152 OW SOL 717 26.711 0.040 23.641 1.00 0.00 O +ATOM 2153 HW1 SOL 717 27.111 0.950 23.551 1.00 0.00 H +ATOM 2154 HW2 SOL 717 25.711 0.120 23.701 1.00 0.00 H +ATOM 2155 OW SOL 718 20.591 9.761 0.031 1.00 0.00 O +ATOM 2156 HW1 SOL 718 21.481 9.311 -0.109 1.00 0.00 H +ATOM 2157 HW2 SOL 718 19.861 9.111 -0.159 1.00 0.00 H +ATOM 2158 OW SOL 719 2.051 14.171 28.151 1.00 0.00 O +ATOM 2159 HW1 SOL 719 1.461 14.231 28.951 1.00 0.00 H +ATOM 2160 HW2 SOL 719 1.901 13.291 27.691 1.00 0.00 H +ATOM 2161 OW SOL 720 24.601 7.290 21.321 1.00 0.00 O +ATOM 2162 HW1 SOL 720 24.841 7.980 20.641 1.00 0.00 H +ATOM 2163 HW2 SOL 720 23.821 7.620 21.861 1.00 0.00 H +ATOM 2164 OW SOL 721 0.201 3.450 28.061 1.00 0.00 O +ATOM 2165 HW1 SOL 721 -0.659 2.950 27.931 1.00 0.00 H +ATOM 2166 HW2 SOL 721 0.821 2.910 28.621 1.00 0.00 H +ATOM 2167 OW SOL 722 29.031 7.010 22.911 1.00 0.00 O +ATOM 2168 HW1 SOL 722 29.291 6.970 23.871 1.00 0.00 H +ATOM 2169 HW2 SOL 722 28.181 6.500 22.771 1.00 0.00 H +ATOM 2170 OW SOL 723 19.381 8.110 26.511 1.00 0.00 O +ATOM 2171 HW1 SOL 723 20.371 7.990 26.601 1.00 0.00 H +ATOM 2172 HW2 SOL 723 19.141 9.060 26.721 1.00 0.00 H +ATOM 2173 OW SOL 724 27.271 3.480 20.571 1.00 0.00 O +ATOM 2174 HW1 SOL 724 27.861 4.110 20.081 1.00 0.00 H +ATOM 2175 HW2 SOL 724 27.461 2.540 20.281 1.00 0.00 H +ATOM 2176 OW SOL 725 24.121 1.960 27.471 1.00 0.00 O +ATOM 2177 HW1 SOL 725 24.071 1.910 28.471 1.00 0.00 H +ATOM 2178 HW2 SOL 725 24.141 2.920 27.181 1.00 0.00 H +ATOM 2179 OW SOL 726 28.701 14.561 23.391 1.00 0.00 O +ATOM 2180 HW1 SOL 726 28.241 15.281 22.871 1.00 0.00 H +ATOM 2181 HW2 SOL 726 28.661 14.761 24.371 1.00 0.00 H +ATOM 2182 OW SOL 727 22.131 18.011 27.151 1.00 0.00 O +ATOM 2183 HW1 SOL 727 22.631 17.151 27.211 1.00 0.00 H +ATOM 2184 HW2 SOL 727 22.781 18.781 27.121 1.00 0.00 H +ATOM 2185 OW SOL 728 21.831 9.431 21.041 1.00 0.00 O +ATOM 2186 HW1 SOL 728 22.651 9.821 20.621 1.00 0.00 H +ATOM 2187 HW2 SOL 728 21.561 8.611 20.551 1.00 0.00 H +ATOM 2188 OW SOL 729 29.731 17.761 20.991 1.00 0.00 O +ATOM 2189 HW1 SOL 729 29.131 17.141 21.491 1.00 0.00 H +ATOM 2190 HW2 SOL 729 30.041 17.321 20.141 1.00 0.00 H +ATOM 2191 OW SOL 730 23.261 17.431 21.851 1.00 0.00 O +ATOM 2192 HW1 SOL 730 23.591 17.821 22.711 1.00 0.00 H +ATOM 2193 HW2 SOL 730 24.021 17.361 21.201 1.00 0.00 H +ATOM 2194 OW SOL 731 21.111 17.851 31.031 1.00 0.00 O +ATOM 2195 HW1 SOL 731 21.681 17.201 31.531 1.00 0.00 H +ATOM 2196 HW2 SOL 731 20.951 17.521 30.101 1.00 0.00 H +ATOM 2197 OW SOL 732 28.021 16.981 27.661 1.00 0.00 O +ATOM 2198 HW1 SOL 732 28.821 16.411 27.871 1.00 0.00 H +ATOM 2199 HW2 SOL 732 27.531 16.581 26.891 1.00 0.00 H +ATOM 2200 OW SOL 733 22.441 7.000 23.421 1.00 0.00 O +ATOM 2201 HW1 SOL 733 22.891 6.100 23.391 1.00 0.00 H +ATOM 2202 HW2 SOL 733 21.501 6.890 23.751 1.00 0.00 H +ATOM 2203 OW SOL 734 24.761 1.220 19.791 1.00 0.00 O +ATOM 2204 HW1 SOL 734 25.741 1.000 19.861 1.00 0.00 H +ATOM 2205 HW2 SOL 734 24.451 1.050 18.861 1.00 0.00 H +ATOM 2206 OW SOL 735 0.901 5.900 1.721 1.00 0.00 O +ATOM 2207 HW1 SOL 735 1.181 5.470 2.571 1.00 0.00 H +ATOM 2208 HW2 SOL 735 1.151 6.860 1.731 1.00 0.00 H +ATOM 2209 OW SOL 736 26.651 14.021 27.861 1.00 0.00 O +ATOM 2210 HW1 SOL 736 27.551 14.161 27.441 1.00 0.00 H +ATOM 2211 HW2 SOL 736 25.941 14.041 27.151 1.00 0.00 H +ATOM 2212 OW SOL 737 27.841 5.030 27.611 1.00 0.00 O +ATOM 2213 HW1 SOL 737 27.591 4.940 26.651 1.00 0.00 H +ATOM 2214 HW2 SOL 737 28.321 4.210 27.921 1.00 0.00 H +ATOM 2215 OW SOL 738 24.011 0.640 23.741 1.00 0.00 O +ATOM 2216 HW1 SOL 738 23.201 0.650 24.321 1.00 0.00 H +ATOM 2217 HW2 SOL 738 24.041 1.470 23.191 1.00 0.00 H +ATOM 2218 OW SOL 739 1.731 11.881 19.031 1.00 0.00 O +ATOM 2219 HW1 SOL 739 2.051 11.121 19.601 1.00 0.00 H +ATOM 2220 HW2 SOL 739 0.811 12.151 19.331 1.00 0.00 H +ATOM 2221 OW SOL 740 21.591 0.350 20.331 1.00 0.00 O +ATOM 2222 HW1 SOL 740 22.081 1.190 20.121 1.00 0.00 H +ATOM 2223 HW2 SOL 740 22.211 -0.300 20.781 1.00 0.00 H +ATOM 2224 OW SOL 741 27.971 2.360 23.421 1.00 0.00 O +ATOM 2225 HW1 SOL 741 27.491 2.770 22.641 1.00 0.00 H +ATOM 2226 HW2 SOL 741 28.961 2.340 23.231 1.00 0.00 H +ATOM 2227 OW SOL 742 30.891 15.701 26.551 1.00 0.00 O +ATOM 2228 HW1 SOL 742 31.101 16.441 25.901 1.00 0.00 H +ATOM 2229 HW2 SOL 742 31.571 15.701 27.281 1.00 0.00 H +ATOM 2230 OW SOL 743 23.211 11.521 26.031 1.00 0.00 O +ATOM 2231 HW1 SOL 743 22.501 11.251 26.681 1.00 0.00 H +ATOM 2232 HW2 SOL 743 22.951 11.241 25.101 1.00 0.00 H +ATOM 2233 OW SOL 744 0.101 17.971 24.531 1.00 0.00 O +ATOM 2234 HW1 SOL 744 0.541 18.611 23.891 1.00 0.00 H +ATOM 2235 HW2 SOL 744 -0.399 18.491 25.231 1.00 0.00 H +ATOM 2236 OW SOL 745 28.941 5.490 18.781 1.00 0.00 O +ATOM 2237 HW1 SOL 745 28.531 6.310 18.391 1.00 0.00 H +ATOM 2238 HW2 SOL 745 29.581 5.750 19.511 1.00 0.00 H +ATOM 2239 OW SOL 746 27.281 4.540 25.041 1.00 0.00 O +ATOM 2240 HW1 SOL 746 26.961 5.260 24.421 1.00 0.00 H +ATOM 2241 HW2 SOL 746 27.521 3.730 24.511 1.00 0.00 H +ATOM 2242 OW SOL 747 28.791 0.390 26.151 1.00 0.00 O +ATOM 2243 HW1 SOL 747 28.071 0.440 25.461 1.00 0.00 H +ATOM 2244 HW2 SOL 747 28.551 -0.300 26.841 1.00 0.00 H +ATOM 2245 OW SOL 748 23.501 13.851 20.361 1.00 0.00 O +ATOM 2246 HW1 SOL 748 22.631 13.701 20.831 1.00 0.00 H +ATOM 2247 HW2 SOL 748 23.331 14.111 19.411 1.00 0.00 H +ATOM 2248 OW SOL 749 1.291 5.750 19.401 1.00 0.00 O +ATOM 2249 HW1 SOL 749 0.751 5.540 20.211 1.00 0.00 H +ATOM 2250 HW2 SOL 749 2.201 5.340 19.491 1.00 0.00 H +ATOM 2251 OW SOL 750 23.891 2.560 21.901 1.00 0.00 O +ATOM 2252 HW1 SOL 750 24.161 1.970 21.151 1.00 0.00 H +ATOM 2253 HW2 SOL 750 23.891 3.510 21.591 1.00 0.00 H +ATOM 2254 OW SOL 751 29.731 11.951 29.621 1.00 0.00 O +ATOM 2255 HW1 SOL 751 29.331 12.391 30.431 1.00 0.00 H +ATOM 2256 HW2 SOL 751 29.321 12.321 28.791 1.00 0.00 H +ATOM 2257 OW SOL 752 25.671 10.501 22.301 1.00 0.00 O +ATOM 2258 HW1 SOL 752 25.531 10.571 23.291 1.00 0.00 H +ATOM 2259 HW2 SOL 752 26.511 9.991 22.121 1.00 0.00 H +ATOM 2260 OW SOL 753 22.721 8.130 31.131 1.00 0.00 O +ATOM 2261 HW1 SOL 753 23.581 8.250 31.631 1.00 0.00 H +ATOM 2262 HW2 SOL 753 22.301 7.260 31.401 1.00 0.00 H +ATOM 2263 OW SOL 754 0.131 3.860 0.011 1.00 0.00 O +ATOM 2264 HW1 SOL 754 0.341 4.600 0.651 1.00 0.00 H +ATOM 2265 HW2 SOL 754 -0.759 4.030 -0.419 1.00 0.00 H +ATOM 2266 OW SOL 755 22.291 11.001 23.631 1.00 0.00 O +ATOM 2267 HW1 SOL 755 22.221 11.831 23.071 1.00 0.00 H +ATOM 2268 HW2 SOL 755 22.331 10.201 23.031 1.00 0.00 H +ATOM 2269 OW SOL 756 24.281 5.370 27.271 1.00 0.00 O +ATOM 2270 HW1 SOL 756 24.401 6.030 26.531 1.00 0.00 H +ATOM 2271 HW2 SOL 756 24.741 5.710 28.101 1.00 0.00 H +ATOM 2272 OW SOL 757 31.141 13.481 22.501 1.00 0.00 O +ATOM 2273 HW1 SOL 757 31.641 14.251 22.901 1.00 0.00 H +ATOM 2274 HW2 SOL 757 30.191 13.501 22.821 1.00 0.00 H +ATOM 2275 OW SOL 758 0.111 14.451 30.041 1.00 0.00 O +ATOM 2276 HW1 SOL 758 0.581 14.581 30.911 1.00 0.00 H +ATOM 2277 HW2 SOL 758 -0.549 13.711 30.131 1.00 0.00 H +ATOM 2278 OW SOL 759 24.351 8.700 28.911 1.00 0.00 O +ATOM 2279 HW1 SOL 759 24.791 9.590 28.821 1.00 0.00 H +ATOM 2280 HW2 SOL 759 23.721 8.700 29.681 1.00 0.00 H +ATOM 2281 OW SOL 760 0.991 8.620 29.071 1.00 0.00 O +ATOM 2282 HW1 SOL 760 0.241 8.620 28.411 1.00 0.00 H +ATOM 2283 HW2 SOL 760 1.361 7.700 29.161 1.00 0.00 H +ATOM 2284 OW SOL 761 30.711 5.250 21.371 1.00 0.00 O +ATOM 2285 HW1 SOL 761 30.841 4.410 21.911 1.00 0.00 H +ATOM 2286 HW2 SOL 761 30.421 5.990 21.971 1.00 0.00 H +ATOM 2287 OW SOL 762 21.691 2.130 30.931 1.00 0.00 O +ATOM 2288 HW1 SOL 762 21.461 2.500 31.831 1.00 0.00 H +ATOM 2289 HW2 SOL 762 21.391 1.180 30.871 1.00 0.00 H +ATOM 2290 OW SOL 763 25.941 6.340 29.261 1.00 0.00 O +ATOM 2291 HW1 SOL 763 26.531 6.080 28.501 1.00 0.00 H +ATOM 2292 HW2 SOL 763 25.661 7.300 29.151 1.00 0.00 H +ATOM 2293 OW SOL 764 21.691 0.630 24.801 1.00 0.00 O +ATOM 2294 HW1 SOL 764 21.581 1.570 25.131 1.00 0.00 H +ATOM 2295 HW2 SOL 764 21.641 0.000 25.571 1.00 0.00 H +ATOM 2296 OW SOL 765 28.851 7.660 28.281 1.00 0.00 O +ATOM 2297 HW1 SOL 765 29.001 7.870 29.241 1.00 0.00 H +ATOM 2298 HW2 SOL 765 28.551 6.710 28.191 1.00 0.00 H +ATOM 2299 OW SOL 766 0.421 8.380 19.041 1.00 0.00 O +ATOM 2300 HW1 SOL 766 0.761 7.450 19.191 1.00 0.00 H +ATOM 2301 HW2 SOL 766 0.601 8.650 18.091 1.00 0.00 H +ATOM 2302 OW SOL 767 29.301 13.331 27.111 1.00 0.00 O +ATOM 2303 HW1 SOL 767 29.371 12.491 26.561 1.00 0.00 H +ATOM 2304 HW2 SOL 767 29.921 14.021 26.751 1.00 0.00 H +ATOM 2305 OW SOL 768 21.811 8.100 28.111 1.00 0.00 O +ATOM 2306 HW1 SOL 768 22.741 8.460 28.161 1.00 0.00 H +ATOM 2307 HW2 SOL 768 21.751 7.250 28.631 1.00 0.00 H +ATOM 2308 OW SOL 769 22.011 5.090 28.681 1.00 0.00 O +ATOM 2309 HW1 SOL 769 21.491 4.260 28.511 1.00 0.00 H +ATOM 2310 HW2 SOL 769 22.781 5.140 28.041 1.00 0.00 H +ATOM 2311 OW SOL 770 18.701 13.261 20.621 1.00 0.00 O +ATOM 2312 HW1 SOL 770 17.771 13.471 20.311 1.00 0.00 H +ATOM 2313 HW2 SOL 770 18.801 12.271 20.751 1.00 0.00 H +ATOM 2314 OW SOL 771 19.501 18.011 27.891 1.00 0.00 O +ATOM 2315 HW1 SOL 771 19.081 17.151 27.621 1.00 0.00 H +ATOM 2316 HW2 SOL 771 20.441 18.041 27.551 1.00 0.00 H +ATOM 2317 OW SOL 772 23.661 15.681 27.721 1.00 0.00 O +ATOM 2318 HW1 SOL 772 24.321 16.421 27.811 1.00 0.00 H +ATOM 2319 HW2 SOL 772 24.101 14.891 27.301 1.00 0.00 H +ATOM 2320 OW SOL 773 28.641 7.960 31.001 1.00 0.00 O +ATOM 2321 HW1 SOL 773 29.051 7.640 31.861 1.00 0.00 H +ATOM 2322 HW2 SOL 773 27.681 7.690 30.971 1.00 0.00 H +ATOM 2323 OW SOL 774 19.021 5.440 29.761 1.00 0.00 O +ATOM 2324 HW1 SOL 774 19.871 5.110 29.351 1.00 0.00 H +ATOM 2325 HW2 SOL 774 19.151 5.590 30.741 1.00 0.00 H +ATOM 2326 OW SOL 775 26.771 5.720 21.871 1.00 0.00 O +ATOM 2327 HW1 SOL 775 26.841 4.830 21.411 1.00 0.00 H +ATOM 2328 HW2 SOL 775 25.831 6.060 21.791 1.00 0.00 H +ATOM 2329 OW SOL 776 25.331 4.640 0.081 1.00 0.00 O +ATOM 2330 HW1 SOL 776 24.991 3.750 -0.219 1.00 0.00 H +ATOM 2331 HW2 SOL 776 25.591 5.180 -0.719 1.00 0.00 H +ATOM 2332 OW SOL 777 23.351 5.000 20.531 1.00 0.00 O +ATOM 2333 HW1 SOL 777 23.961 5.800 20.571 1.00 0.00 H +ATOM 2334 HW2 SOL 777 22.401 5.310 20.601 1.00 0.00 H +ATOM 2335 OW SOL 778 19.451 12.581 28.841 1.00 0.00 O +ATOM 2336 HW1 SOL 778 19.401 12.571 29.841 1.00 0.00 H +ATOM 2337 HW2 SOL 778 18.621 12.171 28.461 1.00 0.00 H +ATOM 2338 OW SOL 779 1.271 15.731 23.391 1.00 0.00 O +ATOM 2339 HW1 SOL 779 1.941 15.851 22.651 1.00 0.00 H +ATOM 2340 HW2 SOL 779 0.871 16.621 23.621 1.00 0.00 H +ATOM 2341 OW SOL 780 0.191 9.270 25.341 1.00 0.00 O +ATOM 2342 HW1 SOL 780 0.791 8.460 25.361 1.00 0.00 H +ATOM 2343 HW2 SOL 780 0.591 9.960 24.741 1.00 0.00 H +ATOM 2344 OW SOL 781 25.341 16.161 20.161 1.00 0.00 O +ATOM 2345 HW1 SOL 781 25.431 16.261 19.171 1.00 0.00 H +ATOM 2346 HW2 SOL 781 24.941 15.271 20.371 1.00 0.00 H +ATOM 2347 OW SOL 782 21.251 3.260 25.821 1.00 0.00 O +ATOM 2348 HW1 SOL 782 20.461 3.770 25.481 1.00 0.00 H +ATOM 2349 HW2 SOL 782 21.161 3.110 26.801 1.00 0.00 H +ATOM 2350 OW SOL 783 30.561 16.121 18.931 1.00 0.00 O +ATOM 2351 HW1 SOL 783 30.621 15.191 19.301 1.00 0.00 H +ATOM 2352 HW2 SOL 783 29.971 16.121 18.131 1.00 0.00 H +ATOM 2353 OW SOL 784 26.841 10.021 1.111 1.00 0.00 O +ATOM 2354 HW1 SOL 784 27.241 10.011 0.191 1.00 0.00 H +ATOM 2355 HW2 SOL 784 26.941 10.941 1.511 1.00 0.00 H +ATOM 2356 OW SOL 785 27.781 9.100 21.531 1.00 0.00 O +ATOM 2357 HW1 SOL 785 28.411 9.480 20.851 1.00 0.00 H +ATOM 2358 HW2 SOL 785 28.181 8.270 21.921 1.00 0.00 H +ATOM 2359 OW SOL 786 29.011 10.981 25.581 1.00 0.00 O +ATOM 2360 HW1 SOL 786 28.311 10.511 26.121 1.00 0.00 H +ATOM 2361 HW2 SOL 786 29.601 10.301 25.151 1.00 0.00 H +ATOM 2362 OW SOL 787 28.761 2.360 28.331 1.00 0.00 O +ATOM 2363 HW1 SOL 787 28.681 2.000 27.401 1.00 0.00 H +ATOM 2364 HW2 SOL 787 28.741 1.600 28.981 1.00 0.00 H +ATOM 2365 OW SOL 788 24.521 14.871 23.531 1.00 0.00 O +ATOM 2366 HW1 SOL 788 24.941 14.291 22.831 1.00 0.00 H +ATOM 2367 HW2 SOL 788 24.081 15.661 23.091 1.00 0.00 H +ATOM 2368 OW SOL 789 21.171 13.481 21.521 1.00 0.00 O +ATOM 2369 HW1 SOL 789 20.211 13.491 21.251 1.00 0.00 H +ATOM 2370 HW2 SOL 789 21.291 14.011 22.361 1.00 0.00 H +ATOM 2371 OW SOL 790 19.371 3.450 18.951 1.00 0.00 O +ATOM 2372 HW1 SOL 790 18.451 3.170 18.661 1.00 0.00 H +ATOM 2373 HW2 SOL 790 19.681 4.220 18.391 1.00 0.00 H +ATOM 2374 OW SOL 791 19.341 1.660 21.801 1.00 0.00 O +ATOM 2375 HW1 SOL 791 19.171 2.490 21.261 1.00 0.00 H +ATOM 2376 HW2 SOL 791 20.241 1.290 21.581 1.00 0.00 H +ATOM 2377 OW SOL 792 30.451 13.351 19.811 1.00 0.00 O +ATOM 2378 HW1 SOL 792 29.461 13.241 19.831 1.00 0.00 H +ATOM 2379 HW2 SOL 792 30.791 13.501 20.741 1.00 0.00 H +ATOM 2380 OW SOL 793 30.871 3.250 23.111 1.00 0.00 O +ATOM 2381 HW1 SOL 793 31.521 2.510 23.001 1.00 0.00 H +ATOM 2382 HW2 SOL 793 31.071 3.750 23.951 1.00 0.00 H +ATOM 2383 OW SOL 794 24.561 7.450 25.141 1.00 0.00 O +ATOM 2384 HW1 SOL 794 25.061 8.300 24.951 1.00 0.00 H +ATOM 2385 HW2 SOL 794 23.681 7.470 24.661 1.00 0.00 H +ATOM 2386 OW SOL 795 27.211 13.741 18.781 1.00 0.00 O +ATOM 2387 HW1 SOL 795 26.751 13.891 19.661 1.00 0.00 H +ATOM 2388 HW2 SOL 795 27.651 14.591 18.481 1.00 0.00 H +ATOM 2389 OW SOL 796 25.231 17.901 28.151 1.00 0.00 O +ATOM 2390 HW1 SOL 796 24.771 18.781 28.021 1.00 0.00 H +ATOM 2391 HW2 SOL 796 26.221 18.021 28.081 1.00 0.00 H +ATOM 2392 OW SOL 797 27.211 9.561 27.231 1.00 0.00 O +ATOM 2393 HW1 SOL 797 27.751 8.871 27.711 1.00 0.00 H +ATOM 2394 HW2 SOL 797 26.891 10.251 27.891 1.00 0.00 H +ATOM 2395 OW SOL 798 29.451 9.841 19.491 1.00 0.00 O +ATOM 2396 HW1 SOL 798 29.221 10.371 18.671 1.00 0.00 H +ATOM 2397 HW2 SOL 798 30.261 9.281 19.301 1.00 0.00 H +ATOM 2398 OW SOL 799 19.411 12.401 25.151 1.00 0.00 O +ATOM 2399 HW1 SOL 799 19.401 11.931 26.031 1.00 0.00 H +ATOM 2400 HW2 SOL 799 20.231 12.121 24.641 1.00 0.00 H +ATOM 2401 OW SOL 800 22.901 4.240 23.821 1.00 0.00 O +ATOM 2402 HW1 SOL 800 23.201 3.520 23.201 1.00 0.00 H +ATOM 2403 HW2 SOL 800 22.511 3.840 24.651 1.00 0.00 H +ATOM 2404 OW SOL 801 26.741 15.861 25.491 1.00 0.00 O +ATOM 2405 HW1 SOL 801 27.061 15.961 24.551 1.00 0.00 H +ATOM 2406 HW2 SOL 801 25.951 15.241 25.511 1.00 0.00 H +ATOM 2407 OW SOL 802 1.631 2.140 29.741 1.00 0.00 O +ATOM 2408 HW1 SOL 802 2.151 1.490 30.291 1.00 0.00 H +ATOM 2409 HW2 SOL 802 1.141 2.770 30.351 1.00 0.00 H +ATOM 2410 OW SOL 803 28.631 0.340 30.161 1.00 0.00 O +ATOM 2411 HW1 SOL 803 28.001 -0.380 29.851 1.00 0.00 H +ATOM 2412 HW2 SOL 803 29.561 -0.020 30.161 1.00 0.00 H +ATOM 2413 OW SOL 804 26.321 13.301 21.631 1.00 0.00 O +ATOM 2414 HW1 SOL 804 25.861 12.431 21.801 1.00 0.00 H +ATOM 2415 HW2 SOL 804 27.231 13.271 22.041 1.00 0.00 H +ATOM 2416 OW SOL 805 0.911 0.520 20.301 1.00 0.00 O +ATOM 2417 HW1 SOL 805 1.261 0.110 19.461 1.00 0.00 H +ATOM 2418 HW2 SOL 805 0.011 0.140 20.501 1.00 0.00 H +ATOM 2419 OW SOL 806 0.391 4.530 25.531 1.00 0.00 O +ATOM 2420 HW1 SOL 806 -0.199 5.330 25.571 1.00 0.00 H +ATOM 2421 HW2 SOL 806 0.541 4.180 26.461 1.00 0.00 H +ATOM 2422 OW SOL 807 19.011 10.771 21.621 1.00 0.00 O +ATOM 2423 HW1 SOL 807 20.001 10.661 21.531 1.00 0.00 H +ATOM 2424 HW2 SOL 807 18.611 9.911 21.941 1.00 0.00 H +ATOM 2425 OW SOL 808 27.371 16.461 21.991 1.00 0.00 O +ATOM 2426 HW1 SOL 808 26.601 16.111 21.451 1.00 0.00 H +ATOM 2427 HW2 SOL 808 27.051 17.171 22.611 1.00 0.00 H +ATOM 2428 OW SOL 809 20.921 24.901 1.130 1.00 0.00 O +ATOM 2429 HW1 SOL 809 19.991 24.881 1.500 1.00 0.00 H +ATOM 2430 HW2 SOL 809 20.931 24.511 0.210 1.00 0.00 H +ATOM 2431 OW SOL 810 20.871 21.371 9.961 1.00 0.00 O +ATOM 2432 HW1 SOL 810 21.221 21.201 10.881 1.00 0.00 H +ATOM 2433 HW2 SOL 810 19.991 20.921 9.841 1.00 0.00 H +ATOM 2434 OW SOL 811 18.811 22.301 6.470 1.00 0.00 O +ATOM 2435 HW1 SOL 811 17.991 22.731 6.860 1.00 0.00 H +ATOM 2436 HW2 SOL 811 18.531 21.571 5.840 1.00 0.00 H +ATOM 2437 OW SOL 812 29.971 25.651 7.170 1.00 0.00 O +ATOM 2438 HW1 SOL 812 30.541 26.431 6.920 1.00 0.00 H +ATOM 2439 HW2 SOL 812 29.371 25.911 7.930 1.00 0.00 H +ATOM 2440 OW SOL 813 26.301 30.061 10.231 1.00 0.00 O +ATOM 2441 HW1 SOL 813 25.521 30.231 10.831 1.00 0.00 H +ATOM 2442 HW2 SOL 813 26.641 30.931 9.871 1.00 0.00 H +ATOM 2443 OW SOL 814 27.121 26.601 18.231 1.00 0.00 O +ATOM 2444 HW1 SOL 814 27.081 27.361 18.881 1.00 0.00 H +ATOM 2445 HW2 SOL 814 27.341 26.961 17.321 1.00 0.00 H +ATOM 2446 OW SOL 815 25.471 28.741 6.650 1.00 0.00 O +ATOM 2447 HW1 SOL 815 26.161 28.581 7.350 1.00 0.00 H +ATOM 2448 HW2 SOL 815 24.741 29.311 7.030 1.00 0.00 H +ATOM 2449 OW SOL 816 23.001 22.541 14.991 1.00 0.00 O +ATOM 2450 HW1 SOL 816 23.821 21.981 15.081 1.00 0.00 H +ATOM 2451 HW2 SOL 816 22.191 21.961 15.031 1.00 0.00 H +ATOM 2452 OW SOL 817 21.021 29.531 8.860 1.00 0.00 O +ATOM 2453 HW1 SOL 817 21.161 28.691 9.380 1.00 0.00 H +ATOM 2454 HW2 SOL 817 20.471 30.171 9.410 1.00 0.00 H +ATOM 2455 OW SOL 818 24.681 28.261 1.230 1.00 0.00 O +ATOM 2456 HW1 SOL 818 24.751 29.101 0.690 1.00 0.00 H +ATOM 2457 HW2 SOL 818 25.141 28.391 2.110 1.00 0.00 H +ATOM 2458 OW SOL 819 19.841 25.051 5.630 1.00 0.00 O +ATOM 2459 HW1 SOL 819 19.391 24.171 5.800 1.00 0.00 H +ATOM 2460 HW2 SOL 819 19.831 25.591 6.470 1.00 0.00 H +ATOM 2461 OW SOL 820 19.751 25.991 15.971 1.00 0.00 O +ATOM 2462 HW1 SOL 820 20.631 25.861 16.421 1.00 0.00 H +ATOM 2463 HW2 SOL 820 19.621 26.961 15.751 1.00 0.00 H +ATOM 2464 OW SOL 821 24.751 1.041 7.260 1.00 0.00 O +ATOM 2465 HW1 SOL 821 24.261 0.171 7.350 1.00 0.00 H +ATOM 2466 HW2 SOL 821 24.521 1.471 6.390 1.00 0.00 H +ATOM 2467 OW SOL 822 26.711 18.661 5.020 1.00 0.00 O +ATOM 2468 HW1 SOL 822 27.111 19.571 4.930 1.00 0.00 H +ATOM 2469 HW2 SOL 822 25.711 18.741 5.080 1.00 0.00 H +ATOM 2470 OW SOL 823 20.591 28.381 12.641 1.00 0.00 O +ATOM 2471 HW1 SOL 823 21.481 27.931 12.501 1.00 0.00 H +ATOM 2472 HW2 SOL 823 19.861 27.731 12.451 1.00 0.00 H +ATOM 2473 OW SOL 824 21.791 21.131 18.011 1.00 0.00 O +ATOM 2474 HW1 SOL 824 22.501 21.841 18.071 1.00 0.00 H +ATOM 2475 HW2 SOL 824 20.911 21.521 18.291 1.00 0.00 H +ATOM 2476 OW SOL 825 24.601 25.911 2.700 1.00 0.00 O +ATOM 2477 HW1 SOL 825 24.841 26.601 2.020 1.00 0.00 H +ATOM 2478 HW2 SOL 825 23.821 26.241 3.240 1.00 0.00 H +ATOM 2479 OW SOL 826 0.201 22.071 9.441 1.00 0.00 O +ATOM 2480 HW1 SOL 826 -0.659 21.571 9.311 1.00 0.00 H +ATOM 2481 HW2 SOL 826 0.821 21.531 10.001 1.00 0.00 H +ATOM 2482 OW SOL 827 26.691 24.671 14.651 1.00 0.00 O +ATOM 2483 HW1 SOL 827 26.221 24.641 15.541 1.00 0.00 H +ATOM 2484 HW2 SOL 827 26.181 24.121 13.991 1.00 0.00 H +ATOM 2485 OW SOL 828 28.351 27.521 15.721 1.00 0.00 O +ATOM 2486 HW1 SOL 828 28.811 26.681 15.431 1.00 0.00 H +ATOM 2487 HW2 SOL 828 27.791 27.861 14.971 1.00 0.00 H +ATOM 2488 OW SOL 829 28.531 22.721 12.421 1.00 0.00 O +ATOM 2489 HW1 SOL 829 27.761 23.061 12.961 1.00 0.00 H +ATOM 2490 HW2 SOL 829 28.191 22.211 11.631 1.00 0.00 H +ATOM 2491 OW SOL 830 29.031 25.631 4.290 1.00 0.00 O +ATOM 2492 HW1 SOL 830 29.291 25.591 5.250 1.00 0.00 H +ATOM 2493 HW2 SOL 830 28.181 25.121 4.150 1.00 0.00 H +ATOM 2494 OW SOL 831 19.381 26.731 7.890 1.00 0.00 O +ATOM 2495 HW1 SOL 831 20.371 26.611 7.980 1.00 0.00 H +ATOM 2496 HW2 SOL 831 19.141 27.681 8.100 1.00 0.00 H +ATOM 2497 OW SOL 832 27.271 22.101 1.950 1.00 0.00 O +ATOM 2498 HW1 SOL 832 27.861 22.731 1.460 1.00 0.00 H +ATOM 2499 HW2 SOL 832 27.461 21.161 1.660 1.00 0.00 H +ATOM 2500 OW SOL 833 24.121 20.581 8.850 1.00 0.00 O +ATOM 2501 HW1 SOL 833 24.071 20.531 9.850 1.00 0.00 H +ATOM 2502 HW2 SOL 833 24.141 21.541 8.560 1.00 0.00 H +ATOM 2503 OW SOL 834 21.831 28.051 2.420 1.00 0.00 O +ATOM 2504 HW1 SOL 834 22.651 28.441 2.000 1.00 0.00 H +ATOM 2505 HW2 SOL 834 21.561 27.231 1.930 1.00 0.00 H +ATOM 2506 OW SOL 835 20.641 21.471 14.981 1.00 0.00 O +ATOM 2507 HW1 SOL 835 19.841 22.071 14.851 1.00 0.00 H +ATOM 2508 HW2 SOL 835 20.541 20.981 15.841 1.00 0.00 H +ATOM 2509 OW SOL 836 22.441 25.621 4.800 1.00 0.00 O +ATOM 2510 HW1 SOL 836 22.891 24.721 4.770 1.00 0.00 H +ATOM 2511 HW2 SOL 836 21.501 25.511 5.130 1.00 0.00 H +ATOM 2512 OW SOL 837 24.761 19.841 1.170 1.00 0.00 O +ATOM 2513 HW1 SOL 837 25.741 19.621 1.240 1.00 0.00 H +ATOM 2514 HW2 SOL 837 24.451 19.671 0.240 1.00 0.00 H +ATOM 2515 OW SOL 838 26.431 21.261 17.491 1.00 0.00 O +ATOM 2516 HW1 SOL 838 27.101 20.651 17.921 1.00 0.00 H +ATOM 2517 HW2 SOL 838 25.701 21.451 18.141 1.00 0.00 H +ATOM 2518 OW SOL 839 27.841 23.651 8.990 1.00 0.00 O +ATOM 2519 HW1 SOL 839 27.591 23.561 8.030 1.00 0.00 H +ATOM 2520 HW2 SOL 839 28.321 22.831 9.300 1.00 0.00 H +ATOM 2521 OW SOL 840 24.011 19.261 5.120 1.00 0.00 O +ATOM 2522 HW1 SOL 840 23.201 19.271 5.700 1.00 0.00 H +ATOM 2523 HW2 SOL 840 24.041 20.091 4.570 1.00 0.00 H +ATOM 2524 OW SOL 841 21.591 18.971 1.710 1.00 0.00 O +ATOM 2525 HW1 SOL 841 22.081 19.811 1.500 1.00 0.00 H +ATOM 2526 HW2 SOL 841 22.211 18.321 2.160 1.00 0.00 H +ATOM 2527 OW SOL 842 27.971 20.981 4.800 1.00 0.00 O +ATOM 2528 HW1 SOL 842 27.491 21.391 4.020 1.00 0.00 H +ATOM 2529 HW2 SOL 842 28.961 20.961 4.610 1.00 0.00 H +ATOM 2530 OW SOL 843 29.381 25.451 14.641 1.00 0.00 O +ATOM 2531 HW1 SOL 843 28.581 24.841 14.671 1.00 0.00 H +ATOM 2532 HW2 SOL 843 30.191 24.921 14.401 1.00 0.00 H +ATOM 2533 OW SOL 844 23.211 30.141 7.410 1.00 0.00 O +ATOM 2534 HW1 SOL 844 22.501 29.871 8.060 1.00 0.00 H +ATOM 2535 HW2 SOL 844 22.951 29.861 6.480 1.00 0.00 H +ATOM 2536 OW SOL 845 28.941 24.111 0.160 1.00 0.00 O +ATOM 2537 HW1 SOL 845 28.531 24.931 -0.230 1.00 0.00 H +ATOM 2538 HW2 SOL 845 29.581 24.371 0.890 1.00 0.00 H +ATOM 2539 OW SOL 846 19.401 24.181 13.861 1.00 0.00 O +ATOM 2540 HW1 SOL 846 20.321 24.171 13.451 1.00 0.00 H +ATOM 2541 HW2 SOL 846 19.341 24.921 14.531 1.00 0.00 H +ATOM 2542 OW SOL 847 24.231 20.841 11.471 1.00 0.00 O +ATOM 2543 HW1 SOL 847 24.611 20.001 11.841 1.00 0.00 H +ATOM 2544 HW2 SOL 847 23.351 21.031 11.911 1.00 0.00 H +ATOM 2545 OW SOL 848 27.281 23.161 6.420 1.00 0.00 O +ATOM 2546 HW1 SOL 848 26.961 23.881 5.800 1.00 0.00 H +ATOM 2547 HW2 SOL 848 27.521 22.351 5.890 1.00 0.00 H +ATOM 2548 OW SOL 849 28.791 19.011 7.530 1.00 0.00 O +ATOM 2549 HW1 SOL 849 28.071 19.061 6.840 1.00 0.00 H +ATOM 2550 HW2 SOL 849 28.551 18.321 8.220 1.00 0.00 H +ATOM 2551 OW SOL 850 23.891 21.181 3.280 1.00 0.00 O +ATOM 2552 HW1 SOL 850 24.161 20.591 2.530 1.00 0.00 H +ATOM 2553 HW2 SOL 850 23.891 22.131 2.970 1.00 0.00 H +ATOM 2554 OW SOL 851 27.771 19.511 14.021 1.00 0.00 O +ATOM 2555 HW1 SOL 851 28.021 19.311 13.071 1.00 0.00 H +ATOM 2556 HW2 SOL 851 28.491 20.071 14.441 1.00 0.00 H +ATOM 2557 OW SOL 852 28.421 29.781 17.191 1.00 0.00 O +ATOM 2558 HW1 SOL 852 27.431 29.841 17.291 1.00 0.00 H +ATOM 2559 HW2 SOL 852 28.651 28.981 16.631 1.00 0.00 H +ATOM 2560 OW SOL 853 25.671 29.121 3.680 1.00 0.00 O +ATOM 2561 HW1 SOL 853 25.531 29.191 4.670 1.00 0.00 H +ATOM 2562 HW2 SOL 853 26.511 28.611 3.500 1.00 0.00 H +ATOM 2563 OW SOL 854 22.721 26.751 12.511 1.00 0.00 O +ATOM 2564 HW1 SOL 854 23.581 26.871 13.011 1.00 0.00 H +ATOM 2565 HW2 SOL 854 22.301 25.881 12.781 1.00 0.00 H +ATOM 2566 OW SOL 855 0.131 22.481 12.621 1.00 0.00 O +ATOM 2567 HW1 SOL 855 0.341 23.221 13.261 1.00 0.00 H +ATOM 2568 HW2 SOL 855 -0.759 22.651 12.191 1.00 0.00 H +ATOM 2569 OW SOL 856 22.291 29.621 5.010 1.00 0.00 O +ATOM 2570 HW1 SOL 856 22.221 30.451 4.450 1.00 0.00 H +ATOM 2571 HW2 SOL 856 22.331 28.821 4.410 1.00 0.00 H +ATOM 2572 OW SOL 857 24.281 23.991 8.650 1.00 0.00 O +ATOM 2573 HW1 SOL 857 24.401 24.651 7.910 1.00 0.00 H +ATOM 2574 HW2 SOL 857 24.741 24.331 9.480 1.00 0.00 H +ATOM 2575 OW SOL 858 22.641 26.131 15.981 1.00 0.00 O +ATOM 2576 HW1 SOL 858 23.321 26.681 15.511 1.00 0.00 H +ATOM 2577 HW2 SOL 858 23.041 25.251 16.251 1.00 0.00 H +ATOM 2578 OW SOL 859 28.751 19.671 17.701 1.00 0.00 O +ATOM 2579 HW1 SOL 859 28.811 20.521 17.181 1.00 0.00 H +ATOM 2580 HW2 SOL 859 29.071 18.911 17.131 1.00 0.00 H +ATOM 2581 OW SOL 860 23.661 19.121 17.401 1.00 0.00 O +ATOM 2582 HW1 SOL 860 23.241 18.551 16.701 1.00 0.00 H +ATOM 2583 HW2 SOL 860 23.001 19.811 17.721 1.00 0.00 H +ATOM 2584 OW SOL 861 24.351 27.321 10.291 1.00 0.00 O +ATOM 2585 HW1 SOL 861 24.791 28.211 10.201 1.00 0.00 H +ATOM 2586 HW2 SOL 861 23.721 27.321 11.061 1.00 0.00 H +ATOM 2587 OW SOL 862 0.991 27.241 10.451 1.00 0.00 O +ATOM 2588 HW1 SOL 862 0.241 27.241 9.791 1.00 0.00 H +ATOM 2589 HW2 SOL 862 1.361 26.321 10.541 1.00 0.00 H +ATOM 2590 OW SOL 863 30.711 23.871 2.750 1.00 0.00 O +ATOM 2591 HW1 SOL 863 30.841 23.031 3.290 1.00 0.00 H +ATOM 2592 HW2 SOL 863 30.421 24.611 3.350 1.00 0.00 H +ATOM 2593 OW SOL 864 21.691 20.751 12.311 1.00 0.00 O +ATOM 2594 HW1 SOL 864 21.461 21.121 13.211 1.00 0.00 H +ATOM 2595 HW2 SOL 864 21.391 19.801 12.251 1.00 0.00 H +ATOM 2596 OW SOL 865 18.991 0.491 12.821 1.00 0.00 O +ATOM 2597 HW1 SOL 865 19.521 0.001 13.501 1.00 0.00 H +ATOM 2598 HW2 SOL 865 19.211 1.471 12.871 1.00 0.00 H +ATOM 2599 OW SOL 866 25.941 24.961 10.641 1.00 0.00 O +ATOM 2600 HW1 SOL 866 26.531 24.701 9.881 1.00 0.00 H +ATOM 2601 HW2 SOL 866 25.661 25.921 10.531 1.00 0.00 H +ATOM 2602 OW SOL 867 21.691 19.251 6.180 1.00 0.00 O +ATOM 2603 HW1 SOL 867 21.581 20.191 6.510 1.00 0.00 H +ATOM 2604 HW2 SOL 867 21.641 18.621 6.950 1.00 0.00 H +ATOM 2605 OW SOL 868 28.851 26.281 9.661 1.00 0.00 O +ATOM 2606 HW1 SOL 868 29.001 26.491 10.621 1.00 0.00 H +ATOM 2607 HW2 SOL 868 28.551 25.331 9.571 1.00 0.00 H +ATOM 2608 OW SOL 869 22.121 27.601 18.041 1.00 0.00 O +ATOM 2609 HW1 SOL 869 22.881 28.041 18.521 1.00 0.00 H +ATOM 2610 HW2 SOL 869 22.471 27.131 17.221 1.00 0.00 H +ATOM 2611 OW SOL 870 21.811 26.721 9.491 1.00 0.00 O +ATOM 2612 HW1 SOL 870 22.741 27.081 9.541 1.00 0.00 H +ATOM 2613 HW2 SOL 870 21.751 25.871 10.011 1.00 0.00 H +ATOM 2614 OW SOL 871 22.011 23.711 10.061 1.00 0.00 O +ATOM 2615 HW1 SOL 871 21.491 22.881 9.891 1.00 0.00 H +ATOM 2616 HW2 SOL 871 22.781 23.761 9.421 1.00 0.00 H +ATOM 2617 OW SOL 872 23.731 22.771 18.081 1.00 0.00 O +ATOM 2618 HW1 SOL 872 23.551 23.221 18.961 1.00 0.00 H +ATOM 2619 HW2 SOL 872 24.151 23.421 17.451 1.00 0.00 H +ATOM 2620 OW SOL 873 30.001 22.421 16.781 1.00 0.00 O +ATOM 2621 HW1 SOL 873 29.551 23.051 17.421 1.00 0.00 H +ATOM 2622 HW2 SOL 873 30.931 22.731 16.611 1.00 0.00 H +ATOM 2623 OW SOL 874 30.221 20.691 14.771 1.00 0.00 O +ATOM 2624 HW1 SOL 874 30.221 21.331 15.541 1.00 0.00 H +ATOM 2625 HW2 SOL 874 30.501 21.171 13.941 1.00 0.00 H +ATOM 2626 OW SOL 875 28.641 26.581 12.381 1.00 0.00 O +ATOM 2627 HW1 SOL 875 29.051 26.261 13.241 1.00 0.00 H +ATOM 2628 HW2 SOL 875 27.681 26.311 12.351 1.00 0.00 H +ATOM 2629 OW SOL 876 19.021 24.061 11.141 1.00 0.00 O +ATOM 2630 HW1 SOL 876 19.871 23.731 10.731 1.00 0.00 H +ATOM 2631 HW2 SOL 876 19.151 24.211 12.121 1.00 0.00 H +ATOM 2632 OW SOL 877 20.511 23.821 17.221 1.00 0.00 O +ATOM 2633 HW1 SOL 877 21.101 23.421 16.521 1.00 0.00 H +ATOM 2634 HW2 SOL 877 19.931 24.531 16.811 1.00 0.00 H +ATOM 2635 OW SOL 878 26.771 24.341 3.250 1.00 0.00 O +ATOM 2636 HW1 SOL 878 26.841 23.451 2.790 1.00 0.00 H +ATOM 2637 HW2 SOL 878 25.831 24.681 3.170 1.00 0.00 H +ATOM 2638 OW SOL 879 25.331 23.261 12.691 1.00 0.00 O +ATOM 2639 HW1 SOL 879 24.991 22.371 12.391 1.00 0.00 H +ATOM 2640 HW2 SOL 879 25.591 23.801 11.891 1.00 0.00 H +ATOM 2641 OW SOL 880 23.351 23.621 1.910 1.00 0.00 O +ATOM 2642 HW1 SOL 880 23.961 24.421 1.950 1.00 0.00 H +ATOM 2643 HW2 SOL 880 22.401 23.931 1.980 1.00 0.00 H +ATOM 2644 OW SOL 881 20.211 29.991 14.661 1.00 0.00 O +ATOM 2645 HW1 SOL 881 20.431 29.381 15.421 1.00 0.00 H +ATOM 2646 HW2 SOL 881 20.311 29.501 13.801 1.00 0.00 H +ATOM 2647 OW SOL 882 0.861 29.211 12.341 1.00 0.00 O +ATOM 2648 HW1 SOL 882 1.101 28.581 11.601 1.00 0.00 H +ATOM 2649 HW2 SOL 882 -0.039 29.611 12.161 1.00 0.00 H +ATOM 2650 OW SOL 883 19.451 31.201 10.221 1.00 0.00 O +ATOM 2651 HW1 SOL 883 19.401 31.191 11.221 1.00 0.00 H +ATOM 2652 HW2 SOL 883 18.621 30.791 9.841 1.00 0.00 H +ATOM 2653 OW SOL 884 27.651 19.481 1.330 1.00 0.00 O +ATOM 2654 HW1 SOL 884 28.161 19.491 0.470 1.00 0.00 H +ATOM 2655 HW2 SOL 884 28.211 19.061 2.040 1.00 0.00 H +ATOM 2656 OW SOL 885 0.191 27.891 6.720 1.00 0.00 O +ATOM 2657 HW1 SOL 885 0.791 27.081 6.740 1.00 0.00 H +ATOM 2658 HW2 SOL 885 0.591 28.581 6.120 1.00 0.00 H +ATOM 2659 OW SOL 886 21.251 21.881 7.200 1.00 0.00 O +ATOM 2660 HW1 SOL 886 20.461 22.391 6.860 1.00 0.00 H +ATOM 2661 HW2 SOL 886 21.161 21.731 8.180 1.00 0.00 H +ATOM 2662 OW SOL 887 26.841 28.641 13.721 1.00 0.00 O +ATOM 2663 HW1 SOL 887 27.241 28.631 12.801 1.00 0.00 H +ATOM 2664 HW2 SOL 887 26.941 29.561 14.121 1.00 0.00 H +ATOM 2665 OW SOL 888 27.781 27.721 2.910 1.00 0.00 O +ATOM 2666 HW1 SOL 888 28.411 28.101 2.230 1.00 0.00 H +ATOM 2667 HW2 SOL 888 28.181 26.891 3.300 1.00 0.00 H +ATOM 2668 OW SOL 889 22.341 0.271 14.901 1.00 0.00 O +ATOM 2669 HW1 SOL 889 22.211 1.201 14.561 1.00 0.00 H +ATOM 2670 HW2 SOL 889 21.501 -0.249 14.771 1.00 0.00 H +ATOM 2671 OW SOL 890 29.011 29.601 6.960 1.00 0.00 O +ATOM 2672 HW1 SOL 890 28.311 29.131 7.500 1.00 0.00 H +ATOM 2673 HW2 SOL 890 29.601 28.921 6.530 1.00 0.00 H +ATOM 2674 OW SOL 891 28.761 20.981 9.711 1.00 0.00 O +ATOM 2675 HW1 SOL 891 28.681 20.621 8.781 1.00 0.00 H +ATOM 2676 HW2 SOL 891 28.741 20.221 10.361 1.00 0.00 H +ATOM 2677 OW SOL 892 19.671 28.751 17.261 1.00 0.00 O +ATOM 2678 HW1 SOL 892 18.901 28.421 17.801 1.00 0.00 H +ATOM 2679 HW2 SOL 892 20.521 28.451 17.681 1.00 0.00 H +ATOM 2680 OW SOL 893 25.341 20.651 14.891 1.00 0.00 O +ATOM 2681 HW1 SOL 893 26.241 20.491 14.491 1.00 0.00 H +ATOM 2682 HW2 SOL 893 25.421 20.701 15.881 1.00 0.00 H +ATOM 2683 OW SOL 894 19.341 20.281 3.180 1.00 0.00 O +ATOM 2684 HW1 SOL 894 19.171 21.111 2.640 1.00 0.00 H +ATOM 2685 HW2 SOL 894 20.241 19.911 2.960 1.00 0.00 H +ATOM 2686 OW SOL 895 24.751 27.041 14.311 1.00 0.00 O +ATOM 2687 HW1 SOL 895 25.311 27.851 14.141 1.00 0.00 H +ATOM 2688 HW2 SOL 895 25.341 26.241 14.341 1.00 0.00 H +ATOM 2689 OW SOL 896 25.781 24.271 17.081 1.00 0.00 O +ATOM 2690 HW1 SOL 896 25.971 24.921 17.821 1.00 0.00 H +ATOM 2691 HW2 SOL 896 26.381 23.471 17.171 1.00 0.00 H +ATOM 2692 OW SOL 897 30.871 21.871 4.490 1.00 0.00 O +ATOM 2693 HW1 SOL 897 31.521 21.131 4.380 1.00 0.00 H +ATOM 2694 HW2 SOL 897 31.071 22.371 5.330 1.00 0.00 H +ATOM 2695 OW SOL 898 24.561 26.071 6.520 1.00 0.00 O +ATOM 2696 HW1 SOL 898 25.061 26.921 6.330 1.00 0.00 H +ATOM 2697 HW2 SOL 898 23.681 26.091 6.040 1.00 0.00 H +ATOM 2698 OW SOL 899 27.211 28.181 8.610 1.00 0.00 O +ATOM 2699 HW1 SOL 899 27.751 27.491 9.090 1.00 0.00 H +ATOM 2700 HW2 SOL 899 26.891 28.871 9.270 1.00 0.00 H +ATOM 2701 OW SOL 900 29.451 28.461 0.870 1.00 0.00 O +ATOM 2702 HW1 SOL 900 29.221 28.991 0.050 1.00 0.00 H +ATOM 2703 HW2 SOL 900 30.261 27.901 0.680 1.00 0.00 H +ATOM 2704 OW SOL 901 19.411 31.021 6.530 1.00 0.00 O +ATOM 2705 HW1 SOL 901 19.401 30.551 7.410 1.00 0.00 H +ATOM 2706 HW2 SOL 901 20.231 30.741 6.020 1.00 0.00 H +ATOM 2707 OW SOL 902 22.901 22.861 5.200 1.00 0.00 O +ATOM 2708 HW1 SOL 902 23.201 22.141 4.580 1.00 0.00 H +ATOM 2709 HW2 SOL 902 22.511 22.461 6.030 1.00 0.00 H +ATOM 2710 OW SOL 903 21.791 24.091 12.801 1.00 0.00 O +ATOM 2711 HW1 SOL 903 22.171 23.501 13.521 1.00 0.00 H +ATOM 2712 HW2 SOL 903 22.191 23.831 11.921 1.00 0.00 H +ATOM 2713 OW SOL 904 1.631 20.761 11.121 1.00 0.00 O +ATOM 2714 HW1 SOL 904 2.151 20.111 11.671 1.00 0.00 H +ATOM 2715 HW2 SOL 904 1.141 21.391 11.731 1.00 0.00 H +ATOM 2716 OW SOL 905 28.631 18.961 11.541 1.00 0.00 O +ATOM 2717 HW1 SOL 905 28.001 18.241 11.231 1.00 0.00 H +ATOM 2718 HW2 SOL 905 29.561 18.601 11.541 1.00 0.00 H +ATOM 2719 OW SOL 906 26.321 0.691 3.010 1.00 0.00 O +ATOM 2720 HW1 SOL 906 25.861 -0.179 3.180 1.00 0.00 H +ATOM 2721 HW2 SOL 906 27.231 0.661 3.420 1.00 0.00 H +ATOM 2722 OW SOL 907 0.911 19.141 1.680 1.00 0.00 O +ATOM 2723 HW1 SOL 907 1.261 18.731 0.840 1.00 0.00 H +ATOM 2724 HW2 SOL 907 0.011 18.761 1.880 1.00 0.00 H +ATOM 2725 OW SOL 908 0.391 23.151 6.910 1.00 0.00 O +ATOM 2726 HW1 SOL 908 -0.199 23.951 6.950 1.00 0.00 H +ATOM 2727 HW2 SOL 908 0.541 22.801 7.840 1.00 0.00 H +ATOM 2728 OW SOL 909 19.011 29.391 3.000 1.00 0.00 O +ATOM 2729 HW1 SOL 909 20.001 29.281 2.910 1.00 0.00 H +ATOM 2730 HW2 SOL 909 18.611 28.531 3.320 1.00 0.00 H +ATOM 2731 OW SOL 910 20.921 24.901 19.751 1.00 0.00 O +ATOM 2732 HW1 SOL 910 19.991 24.881 20.121 1.00 0.00 H +ATOM 2733 HW2 SOL 910 20.931 24.511 18.831 1.00 0.00 H +ATOM 2734 OW SOL 911 20.871 21.371 28.581 1.00 0.00 O +ATOM 2735 HW1 SOL 911 21.221 21.201 29.501 1.00 0.00 H +ATOM 2736 HW2 SOL 911 19.991 20.921 28.461 1.00 0.00 H +ATOM 2737 OW SOL 912 18.811 22.301 25.091 1.00 0.00 O +ATOM 2738 HW1 SOL 912 17.991 22.731 25.481 1.00 0.00 H +ATOM 2739 HW2 SOL 912 18.531 21.571 24.461 1.00 0.00 H +ATOM 2740 OW SOL 913 29.971 25.651 25.791 1.00 0.00 O +ATOM 2741 HW1 SOL 913 30.541 26.431 25.541 1.00 0.00 H +ATOM 2742 HW2 SOL 913 29.371 25.911 26.551 1.00 0.00 H +ATOM 2743 OW SOL 914 26.301 30.061 28.851 1.00 0.00 O +ATOM 2744 HW1 SOL 914 25.521 30.231 29.451 1.00 0.00 H +ATOM 2745 HW2 SOL 914 26.641 30.931 28.491 1.00 0.00 H +ATOM 2746 OW SOL 915 25.471 28.741 25.271 1.00 0.00 O +ATOM 2747 HW1 SOL 915 26.161 28.581 25.971 1.00 0.00 H +ATOM 2748 HW2 SOL 915 24.741 29.311 25.651 1.00 0.00 H +ATOM 2749 OW SOL 916 21.021 29.531 27.481 1.00 0.00 O +ATOM 2750 HW1 SOL 916 21.161 28.691 28.001 1.00 0.00 H +ATOM 2751 HW2 SOL 916 20.471 30.171 28.031 1.00 0.00 H +ATOM 2752 OW SOL 917 24.681 28.261 19.851 1.00 0.00 O +ATOM 2753 HW1 SOL 917 24.751 29.101 19.311 1.00 0.00 H +ATOM 2754 HW2 SOL 917 25.141 28.391 20.731 1.00 0.00 H +ATOM 2755 OW SOL 918 19.841 25.051 24.251 1.00 0.00 O +ATOM 2756 HW1 SOL 918 19.391 24.171 24.421 1.00 0.00 H +ATOM 2757 HW2 SOL 918 19.831 25.591 25.091 1.00 0.00 H +ATOM 2758 OW SOL 919 24.751 1.041 25.881 1.00 0.00 O +ATOM 2759 HW1 SOL 919 24.261 0.171 25.971 1.00 0.00 H +ATOM 2760 HW2 SOL 919 24.521 1.471 25.011 1.00 0.00 H +ATOM 2761 OW SOL 920 26.711 18.661 23.641 1.00 0.00 O +ATOM 2762 HW1 SOL 920 27.111 19.571 23.551 1.00 0.00 H +ATOM 2763 HW2 SOL 920 25.711 18.741 23.701 1.00 0.00 H +ATOM 2764 OW SOL 921 20.591 28.381 0.031 1.00 0.00 O +ATOM 2765 HW1 SOL 921 21.481 27.931 -0.109 1.00 0.00 H +ATOM 2766 HW2 SOL 921 19.861 27.731 -0.159 1.00 0.00 H +ATOM 2767 OW SOL 922 24.601 25.911 21.321 1.00 0.00 O +ATOM 2768 HW1 SOL 922 24.841 26.601 20.641 1.00 0.00 H +ATOM 2769 HW2 SOL 922 23.821 26.241 21.861 1.00 0.00 H +ATOM 2770 OW SOL 923 0.201 22.071 28.061 1.00 0.00 O +ATOM 2771 HW1 SOL 923 -0.659 21.571 27.931 1.00 0.00 H +ATOM 2772 HW2 SOL 923 0.821 21.531 28.621 1.00 0.00 H +ATOM 2773 OW SOL 924 29.031 25.631 22.911 1.00 0.00 O +ATOM 2774 HW1 SOL 924 29.291 25.591 23.871 1.00 0.00 H +ATOM 2775 HW2 SOL 924 28.181 25.121 22.771 1.00 0.00 H +ATOM 2776 OW SOL 925 19.381 26.731 26.511 1.00 0.00 O +ATOM 2777 HW1 SOL 925 20.371 26.611 26.601 1.00 0.00 H +ATOM 2778 HW2 SOL 925 19.141 27.681 26.721 1.00 0.00 H +ATOM 2779 OW SOL 926 27.271 22.101 20.571 1.00 0.00 O +ATOM 2780 HW1 SOL 926 27.861 22.731 20.081 1.00 0.00 H +ATOM 2781 HW2 SOL 926 27.461 21.161 20.281 1.00 0.00 H +ATOM 2782 OW SOL 927 24.121 20.581 27.471 1.00 0.00 O +ATOM 2783 HW1 SOL 927 24.071 20.531 28.471 1.00 0.00 H +ATOM 2784 HW2 SOL 927 24.141 21.541 27.181 1.00 0.00 H +ATOM 2785 OW SOL 928 21.831 28.051 21.041 1.00 0.00 O +ATOM 2786 HW1 SOL 928 22.651 28.441 20.621 1.00 0.00 H +ATOM 2787 HW2 SOL 928 21.561 27.231 20.551 1.00 0.00 H +ATOM 2788 OW SOL 929 22.441 25.621 23.421 1.00 0.00 O +ATOM 2789 HW1 SOL 929 22.891 24.721 23.391 1.00 0.00 H +ATOM 2790 HW2 SOL 929 21.501 25.511 23.751 1.00 0.00 H +ATOM 2791 OW SOL 930 24.761 19.841 19.791 1.00 0.00 O +ATOM 2792 HW1 SOL 930 25.741 19.621 19.861 1.00 0.00 H +ATOM 2793 HW2 SOL 930 24.451 19.671 18.861 1.00 0.00 H +ATOM 2794 OW SOL 931 0.901 24.521 1.721 1.00 0.00 O +ATOM 2795 HW1 SOL 931 1.181 24.091 2.571 1.00 0.00 H +ATOM 2796 HW2 SOL 931 1.151 25.481 1.731 1.00 0.00 H +ATOM 2797 OW SOL 932 27.841 23.651 27.611 1.00 0.00 O +ATOM 2798 HW1 SOL 932 27.591 23.561 26.651 1.00 0.00 H +ATOM 2799 HW2 SOL 932 28.321 22.831 27.921 1.00 0.00 H +ATOM 2800 OW SOL 933 24.011 19.261 23.741 1.00 0.00 O +ATOM 2801 HW1 SOL 933 23.201 19.271 24.321 1.00 0.00 H +ATOM 2802 HW2 SOL 933 24.041 20.091 23.191 1.00 0.00 H +ATOM 2803 OW SOL 934 21.591 18.971 20.331 1.00 0.00 O +ATOM 2804 HW1 SOL 934 22.081 19.811 20.121 1.00 0.00 H +ATOM 2805 HW2 SOL 934 22.211 18.321 20.781 1.00 0.00 H +ATOM 2806 OW SOL 935 27.971 20.981 23.421 1.00 0.00 O +ATOM 2807 HW1 SOL 935 27.491 21.391 22.641 1.00 0.00 H +ATOM 2808 HW2 SOL 935 28.961 20.961 23.231 1.00 0.00 H +ATOM 2809 OW SOL 936 23.211 30.141 26.031 1.00 0.00 O +ATOM 2810 HW1 SOL 936 22.501 29.871 26.681 1.00 0.00 H +ATOM 2811 HW2 SOL 936 22.951 29.861 25.101 1.00 0.00 H +ATOM 2812 OW SOL 937 28.941 24.111 18.781 1.00 0.00 O +ATOM 2813 HW1 SOL 937 28.531 24.931 18.391 1.00 0.00 H +ATOM 2814 HW2 SOL 937 29.581 24.371 19.511 1.00 0.00 H +ATOM 2815 OW SOL 938 27.281 23.161 25.041 1.00 0.00 O +ATOM 2816 HW1 SOL 938 26.961 23.881 24.421 1.00 0.00 H +ATOM 2817 HW2 SOL 938 27.521 22.351 24.511 1.00 0.00 H +ATOM 2818 OW SOL 939 28.791 19.011 26.151 1.00 0.00 O +ATOM 2819 HW1 SOL 939 28.071 19.061 25.461 1.00 0.00 H +ATOM 2820 HW2 SOL 939 28.551 18.321 26.841 1.00 0.00 H +ATOM 2821 OW SOL 940 1.291 24.371 19.401 1.00 0.00 O +ATOM 2822 HW1 SOL 940 0.751 24.161 20.211 1.00 0.00 H +ATOM 2823 HW2 SOL 940 2.201 23.961 19.491 1.00 0.00 H +ATOM 2824 OW SOL 941 23.891 21.181 21.901 1.00 0.00 O +ATOM 2825 HW1 SOL 941 24.161 20.591 21.151 1.00 0.00 H +ATOM 2826 HW2 SOL 941 23.891 22.131 21.591 1.00 0.00 H +ATOM 2827 OW SOL 942 25.671 29.121 22.301 1.00 0.00 O +ATOM 2828 HW1 SOL 942 25.531 29.191 23.291 1.00 0.00 H +ATOM 2829 HW2 SOL 942 26.511 28.611 22.121 1.00 0.00 H +ATOM 2830 OW SOL 943 22.721 26.751 31.131 1.00 0.00 O +ATOM 2831 HW1 SOL 943 23.581 26.871 31.631 1.00 0.00 H +ATOM 2832 HW2 SOL 943 22.301 25.881 31.401 1.00 0.00 H +ATOM 2833 OW SOL 944 0.131 22.481 0.011 1.00 0.00 O +ATOM 2834 HW1 SOL 944 0.341 23.221 0.651 1.00 0.00 H +ATOM 2835 HW2 SOL 944 -0.759 22.651 -0.419 1.00 0.00 H +ATOM 2836 OW SOL 945 22.291 29.621 23.631 1.00 0.00 O +ATOM 2837 HW1 SOL 945 22.221 30.451 23.071 1.00 0.00 H +ATOM 2838 HW2 SOL 945 22.331 28.821 23.031 1.00 0.00 H +ATOM 2839 OW SOL 946 24.281 23.991 27.271 1.00 0.00 O +ATOM 2840 HW1 SOL 946 24.401 24.651 26.531 1.00 0.00 H +ATOM 2841 HW2 SOL 946 24.741 24.331 28.101 1.00 0.00 H +ATOM 2842 OW SOL 947 24.351 27.321 28.911 1.00 0.00 O +ATOM 2843 HW1 SOL 947 24.791 28.211 28.821 1.00 0.00 H +ATOM 2844 HW2 SOL 947 23.721 27.321 29.681 1.00 0.00 H +ATOM 2845 OW SOL 948 0.991 27.241 29.071 1.00 0.00 O +ATOM 2846 HW1 SOL 948 0.241 27.241 28.411 1.00 0.00 H +ATOM 2847 HW2 SOL 948 1.361 26.321 29.161 1.00 0.00 H +ATOM 2848 OW SOL 949 30.711 23.871 21.371 1.00 0.00 O +ATOM 2849 HW1 SOL 949 30.841 23.031 21.911 1.00 0.00 H +ATOM 2850 HW2 SOL 949 30.421 24.611 21.971 1.00 0.00 H +ATOM 2851 OW SOL 950 21.691 20.751 30.931 1.00 0.00 O +ATOM 2852 HW1 SOL 950 21.461 21.121 31.831 1.00 0.00 H +ATOM 2853 HW2 SOL 950 21.391 19.801 30.871 1.00 0.00 H +ATOM 2854 OW SOL 951 18.991 0.491 0.211 1.00 0.00 O +ATOM 2855 HW1 SOL 951 19.521 0.001 0.891 1.00 0.00 H +ATOM 2856 HW2 SOL 951 19.211 1.471 0.261 1.00 0.00 H +ATOM 2857 OW SOL 952 25.941 24.961 29.261 1.00 0.00 O +ATOM 2858 HW1 SOL 952 26.531 24.701 28.501 1.00 0.00 H +ATOM 2859 HW2 SOL 952 25.661 25.921 29.151 1.00 0.00 H +ATOM 2860 OW SOL 953 21.691 19.251 24.801 1.00 0.00 O +ATOM 2861 HW1 SOL 953 21.581 20.191 25.131 1.00 0.00 H +ATOM 2862 HW2 SOL 953 21.641 18.621 25.571 1.00 0.00 H +ATOM 2863 OW SOL 954 28.851 26.281 28.281 1.00 0.00 O +ATOM 2864 HW1 SOL 954 29.001 26.491 29.241 1.00 0.00 H +ATOM 2865 HW2 SOL 954 28.551 25.331 28.191 1.00 0.00 H +ATOM 2866 OW SOL 955 0.421 27.001 19.041 1.00 0.00 O +ATOM 2867 HW1 SOL 955 0.761 26.071 19.191 1.00 0.00 H +ATOM 2868 HW2 SOL 955 0.601 27.271 18.091 1.00 0.00 H +ATOM 2869 OW SOL 956 21.811 26.721 28.111 1.00 0.00 O +ATOM 2870 HW1 SOL 956 22.741 27.081 28.161 1.00 0.00 H +ATOM 2871 HW2 SOL 956 21.751 25.871 28.631 1.00 0.00 H +ATOM 2872 OW SOL 957 22.011 23.711 28.681 1.00 0.00 O +ATOM 2873 HW1 SOL 957 21.491 22.881 28.511 1.00 0.00 H +ATOM 2874 HW2 SOL 957 22.781 23.761 28.041 1.00 0.00 H +ATOM 2875 OW SOL 958 28.641 26.581 31.001 1.00 0.00 O +ATOM 2876 HW1 SOL 958 29.051 26.261 31.861 1.00 0.00 H +ATOM 2877 HW2 SOL 958 27.681 26.311 30.971 1.00 0.00 H +ATOM 2878 OW SOL 959 19.021 24.061 29.761 1.00 0.00 O +ATOM 2879 HW1 SOL 959 19.871 23.731 29.351 1.00 0.00 H +ATOM 2880 HW2 SOL 959 19.151 24.211 30.741 1.00 0.00 H +ATOM 2881 OW SOL 960 26.771 24.341 21.871 1.00 0.00 O +ATOM 2882 HW1 SOL 960 26.841 23.451 21.411 1.00 0.00 H +ATOM 2883 HW2 SOL 960 25.831 24.681 21.791 1.00 0.00 H +ATOM 2884 OW SOL 961 25.331 23.261 0.081 1.00 0.00 O +ATOM 2885 HW1 SOL 961 24.991 22.371 -0.219 1.00 0.00 H +ATOM 2886 HW2 SOL 961 25.591 23.801 -0.719 1.00 0.00 H +ATOM 2887 OW SOL 962 23.351 23.621 20.531 1.00 0.00 O +ATOM 2888 HW1 SOL 962 23.961 24.421 20.571 1.00 0.00 H +ATOM 2889 HW2 SOL 962 22.401 23.931 20.601 1.00 0.00 H +ATOM 2890 OW SOL 963 0.861 29.211 30.961 1.00 0.00 O +ATOM 2891 HW1 SOL 963 1.101 28.581 30.221 1.00 0.00 H +ATOM 2892 HW2 SOL 963 -0.039 29.611 30.781 1.00 0.00 H +ATOM 2893 OW SOL 964 19.451 31.201 28.841 1.00 0.00 O +ATOM 2894 HW1 SOL 964 19.401 31.191 29.841 1.00 0.00 H +ATOM 2895 HW2 SOL 964 18.621 30.791 28.461 1.00 0.00 H +ATOM 2896 OW SOL 965 0.191 27.891 25.341 1.00 0.00 O +ATOM 2897 HW1 SOL 965 0.791 27.081 25.361 1.00 0.00 H +ATOM 2898 HW2 SOL 965 0.591 28.581 24.741 1.00 0.00 H +ATOM 2899 OW SOL 966 21.251 21.881 25.821 1.00 0.00 O +ATOM 2900 HW1 SOL 966 20.461 22.391 25.481 1.00 0.00 H +ATOM 2901 HW2 SOL 966 21.161 21.731 26.801 1.00 0.00 H +ATOM 2902 OW SOL 967 26.841 28.641 1.111 1.00 0.00 O +ATOM 2903 HW1 SOL 967 27.241 28.631 0.191 1.00 0.00 H +ATOM 2904 HW2 SOL 967 26.941 29.561 1.511 1.00 0.00 H +ATOM 2905 OW SOL 968 27.781 27.721 21.531 1.00 0.00 O +ATOM 2906 HW1 SOL 968 28.411 28.101 20.851 1.00 0.00 H +ATOM 2907 HW2 SOL 968 28.181 26.891 21.921 1.00 0.00 H +ATOM 2908 OW SOL 969 29.011 29.601 25.581 1.00 0.00 O +ATOM 2909 HW1 SOL 969 28.311 29.131 26.121 1.00 0.00 H +ATOM 2910 HW2 SOL 969 29.601 28.921 25.151 1.00 0.00 H +ATOM 2911 OW SOL 970 28.761 20.981 28.331 1.00 0.00 O +ATOM 2912 HW1 SOL 970 28.681 20.621 27.401 1.00 0.00 H +ATOM 2913 HW2 SOL 970 28.741 20.221 28.981 1.00 0.00 H +ATOM 2914 OW SOL 971 19.371 22.071 18.951 1.00 0.00 O +ATOM 2915 HW1 SOL 971 18.451 21.791 18.661 1.00 0.00 H +ATOM 2916 HW2 SOL 971 19.681 22.841 18.391 1.00 0.00 H +ATOM 2917 OW SOL 972 19.341 20.281 21.801 1.00 0.00 O +ATOM 2918 HW1 SOL 972 19.171 21.111 21.261 1.00 0.00 H +ATOM 2919 HW2 SOL 972 20.241 19.911 21.581 1.00 0.00 H +ATOM 2920 OW SOL 973 30.871 21.871 23.111 1.00 0.00 O +ATOM 2921 HW1 SOL 973 31.521 21.131 23.001 1.00 0.00 H +ATOM 2922 HW2 SOL 973 31.071 22.371 23.951 1.00 0.00 H +ATOM 2923 OW SOL 974 24.561 26.071 25.141 1.00 0.00 O +ATOM 2924 HW1 SOL 974 25.061 26.921 24.951 1.00 0.00 H +ATOM 2925 HW2 SOL 974 23.681 26.091 24.661 1.00 0.00 H +ATOM 2926 OW SOL 975 27.211 28.181 27.231 1.00 0.00 O +ATOM 2927 HW1 SOL 975 27.751 27.491 27.711 1.00 0.00 H +ATOM 2928 HW2 SOL 975 26.891 28.871 27.891 1.00 0.00 H +ATOM 2929 OW SOL 976 29.451 28.461 19.491 1.00 0.00 O +ATOM 2930 HW1 SOL 976 29.221 28.991 18.671 1.00 0.00 H +ATOM 2931 HW2 SOL 976 30.261 27.901 19.301 1.00 0.00 H +ATOM 2932 OW SOL 977 19.411 31.021 25.151 1.00 0.00 O +ATOM 2933 HW1 SOL 977 19.401 30.551 26.031 1.00 0.00 H +ATOM 2934 HW2 SOL 977 20.231 30.741 24.641 1.00 0.00 H +ATOM 2935 OW SOL 978 22.901 22.861 23.821 1.00 0.00 O +ATOM 2936 HW1 SOL 978 23.201 22.141 23.201 1.00 0.00 H +ATOM 2937 HW2 SOL 978 22.511 22.461 24.651 1.00 0.00 H +ATOM 2938 OW SOL 979 1.631 20.761 29.741 1.00 0.00 O +ATOM 2939 HW1 SOL 979 2.151 20.111 30.291 1.00 0.00 H +ATOM 2940 HW2 SOL 979 1.141 21.391 30.351 1.00 0.00 H +ATOM 2941 OW SOL 980 28.631 18.961 30.161 1.00 0.00 O +ATOM 2942 HW1 SOL 980 28.001 18.241 29.851 1.00 0.00 H +ATOM 2943 HW2 SOL 980 29.561 18.601 30.161 1.00 0.00 H +ATOM 2944 OW SOL 981 26.321 0.691 21.631 1.00 0.00 O +ATOM 2945 HW1 SOL 981 25.861 -0.179 21.801 1.00 0.00 H +ATOM 2946 HW2 SOL 981 27.231 0.661 22.041 1.00 0.00 H +ATOM 2947 OW SOL 982 0.911 19.141 20.301 1.00 0.00 O +ATOM 2948 HW1 SOL 982 1.261 18.731 19.461 1.00 0.00 H +ATOM 2949 HW2 SOL 982 0.011 18.761 20.501 1.00 0.00 H +ATOM 2950 OW SOL 983 0.391 23.151 25.531 1.00 0.00 O +ATOM 2951 HW1 SOL 983 -0.199 23.951 25.571 1.00 0.00 H +ATOM 2952 HW2 SOL 983 0.541 22.801 26.461 1.00 0.00 H +ATOM 2953 OW SOL 984 19.011 29.391 21.621 1.00 0.00 O +ATOM 2954 HW1 SOL 984 20.001 29.281 21.531 1.00 0.00 H +ATOM 2955 HW2 SOL 984 18.611 28.531 21.941 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_interface_bomd/input.in b/examples/latte_interface_bomd/input.in new file mode 100644 index 00000000..9ece3820 --- /dev/null +++ b/examples/latte_interface_bomd/input.in @@ -0,0 +1,26 @@ +#Input file for SEDACS + +Verbosity= True +Threshold= 1.0E-7 +CoordsFile= coords_1299.pdb +#CoordsFile= wat2.xyz +#CoordsFile= algo.xyz +#CoordsFile= coords_2955.pdb +#CoordsFile= coords_100.pdb +#CoordsFile= water_128.xyz +GraphThreshold= 0.01 +MaxDeg= 500 #Max graph degree +Rcut= 3.0 #Radius cutoff +PartitionType= Metis +#PartitionType= Regular +#PartitionType= MinCut +NumParts= 4 +SCFTol= 1.0E-6 +Overlap= True +ElectronicTemperature= 1000 +MuCalculationType= #FromParts, Dynamical, None +Orbitals= {"H":1,"O":4} #This has to be know for each engine +NumAdaptiveIter= 100 #Number of graph adaptive iterations +Engine= {"Name":"LATTE","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/python/","Executable":"/home/cnegre/","RhoSolverMethod":"Diag","Accelerator":"No","AcceleratorPath":"/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/nvda"} #The name of the external code +#Engine= {"Name":"ProxyAFortran","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/fortran/","Executable":"/home/cnegre/"} #The name of the external code + diff --git a/examples/latte_interface_bomd/latte.in b/examples/latte_interface_bomd/latte.in new file mode 100644 index 00000000..30ec28a4 --- /dev/null +++ b/examples/latte_interface_bomd/latte.in @@ -0,0 +1,79 @@ +LATTE INPUT FILE +================ +#This input file resumes the content of MDcontroller and TBparam/control.in +#The parser will only read it if it's present inside the running folder. +#In case this file is not present Latte will read the two files as original. +#The order of the kewords is not important in this file. +#To get a full description of these keywords please see: +## https://github.com/lanl/LATTE/blob/master/Manual/LATTE_manual.pdf + +#General controls +CONTROL{ + XCONTROL= 1 + BASISTYPE= NONORTHO + PARAMPATH= '../../parameters/latte/TBparam/' + KBT= 0.0 + VERBOSE= 3 + ENTROPYKIND= 1 + SPINON= 0 SPINTOL= 1.0e-4 + ELECTRO= 1 ELECMETH= 0 ELEC_QTOL= 1.0e-5 + PBCON= 1 + MAXSCF= 1 + BREAKTOL= 1.0E-6 MINSP2ITER= 22 SP2CONV= REL + FULLQCONV= 0 QITER= 0 + QMIX= 0.1 SPINMIX= 0.25 MDMIX= 0.25 + SPARSEON= 0 THRESHOLDON= 1 NUMTHRESH= 1.0e-5 FILLINSTOP= 100 BLKSZ= 4 + MSPARSE= 1000 + RELAX= 0 RELAXTYPE= SD MAXITER= 100000 RLXFTOL= 0.0000001 + SKIN= 1.0 + CHARGE= 0 + XBO= 1 + XBODISON= 1 + XBODISORDER= 5 + KON= 0 + DOKERNEL= F + KERNELSCHEME= 2 + NORECS= 3 + SAVEKERNEL= T + READKERNEL= F + DOKERNEL= F + KBT= 0.086 +} + +#Controls for QMD (if using lammps MAXITER must be set to -1) +MDCONTROL{ + MAXITER= -1 + WRTFREQ= 1 + RSFREQ= 100000 + RSLEVEL= 0 +} + +MIXER{ + MixerType= Linear + Verbose= 3 + MPulay= 10 + MixCoeff= 0.25 + MixerON= T + } + + SP2{ + MDim= -1 + MinSP2Iter= 10 + MaxSP2Iter= 100 + Verbose= 10 + NumThresh= 1.0e-5 + SP2Tol= 1.0E-006 + SP2Conv= REL + Flavor= Alg2 + BMLType= Dense + } + + ZSP{ + MDim= -1 + Verbose= 10 + NumthreshI= 1.0e-8 + NumthreshF= 1.0e-5 + BMLType= Dense + ZSP= F + } + diff --git a/examples/latte_interface_bomd/regularbomd.py b/examples/latte_interface_bomd/regularbomd.py new file mode 100644 index 00000000..e248c386 --- /dev/null +++ b/examples/latte_interface_bomd/regularbomd.py @@ -0,0 +1,130 @@ +import sys +import argparse +import math +import torch +import numpy as np +import gc +#import os +torch.set_default_dtype(torch.float64) + +#### +from sedacs.driver.init import init, get_args +from sedacs.driver.graph_adaptive_scf import get_adaptiveSCFDM +from sedacs.driver.graph_adaptive_sp_energy_forces import get_sp_energy_forces +#### +# Global Constants +## @brief number of timesteps +MD_Iter = 100000 +## @brief coversion factor from mass*velocity^2 to kinetic energy +MVV2KE = 166.0538782 / 1.602176487 +## @brief size of the timestep +dt = 1.00 +## @brief conversion factor from kinetic energy to temperature +KE2T = 1.0 / 0.000086173435 +## @brief conversion factor from force to velocity +F2V = 0.01602176487 / 1.660548782 + +def main(): + """! main program""" + # Set random seed + torch.manual_seed(137) + np.random.seed(137) + # Open files to write down information during MD simulation + MD_xyz = open("MD.xyz", "w") + Energy_dat = open("Energy.dat", "w") + # Pass arguments from comand line + args = get_args() + # Initialize sedacs + np.set_printoptions(threshold=sys.maxsize) + # Initialize sdc parameters + sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init(args) + sdc.verb = False#True + mu = 0.0 + + element_type = torch.tensor(sy.types) + symbols = np.array(sy.symbols)[sy.types] + Hubbard_U = np.where(symbols == 'H', 12.054683, 0.0) + np.where(symbols == 'O', 11.876141, 0.0) + Mnuc = np.where(symbols == 'H', 1.0, 0.0) + np.where(symbols == 'O', 16.0, 0.0) + Hubbard_U = torch.tensor(Hubbard_U) + Mnuc = torch.tensor(Mnuc) + # Perform a graph-adaptive calculation of the density matrix + graphDH,sy.charges,mu,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu) + graphDH,sy.charges,EPOT,FTOT,mu,parts,subSysOnRank = get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu) + LBox = torch.tensor([sy.latticeVectors[0][0], sy.latticeVectors[1][1], sy.latticeVectors[2][2]]) + coords = torch.tensor(sy.coords) +# coords = sy.coords + 55.0 + q = torch.tensor(sy.charges) + Nr_atoms = sy.nats + EPOT = torch.tensor(EPOT) + FTOT = torch.tensor(FTOT) + + # Initialize velocities + V = 0 * coords.clone().detach() + #V = torch.sqrt(300 / KE2T / MVV2KE / Mnuc).unsqueeze(1) * torch.randn_like(coords) +# COM_V = torch.sum(V.T * Mnuc, axis=1) / Mnuc.sum() +# V = V - COM_V +# with torch.no_grad(): +# total_angular_momentum = torch.cross(coords, V * Mnuc.unsqueeze(1), axis=1).sum(axis=0) +# COM = torch.sum(coords * Mnuc.unsqueeze(1), axis=0) / Mnuc.sum() +# r = coords - COM +# V = V - torch.cross(total_angular_momentum.unsqueeze(0) / Mnuc.sum(), r, axis=1) / (r * r).sum(axis=1).unsqueeze(1) + # Record unwrapped coordsinates + unwrap_coords = coords.clone().detach().double() + + # MAIN MD LOOP {dR2(0)/dt2: V(0)->V(1/2); dn2(0)/dt2: n(0)->n(1); V(1/2): R(0)->R(1); dR2(1)/dt2: V(1/2)->V(1)} + for MD_step in range(MD_Iter): + # Calculate kinetic energy from particle velocities + EKIN = torch.sum(0.5 * MVV2KE * torch.dot(Mnuc, torch.sum(V**2, dim=1))) + # Calculate temperature from kinetic energy + Temperature = (2.0 / 3.0) * KE2T * EKIN / Nr_atoms + ETOT = EKIN.item() + EPOT + # Current time + Time = (MD_step) * dt + print( + f"Time = {Time:<16.8f} Etotal = {ETOT:<16.8f} Temperature = {Temperature:<16.8f}") + + # dR2(0)/dt2: V(0)->V(1/2) + V = V + 0.5 * dt * F2V * FTOT / Mnuc.unsqueeze(1) #- 0.2 * V + # Here we record the time, temperature, and charges. Note that the last term, q, would be constant if not solving exact charges during MD + with torch.no_grad(): + Energy_dat.write( + f"{Time/1000:<16.8f} {ETOT:<16.16f} {Temperature:<16.8f} {EKIN.item():<16.16f} {EPOT.item():<16.16f}\n" + ) + + # Here we dump the MD trajectory + if (Time % 50) == 49: + #MD_xyz.write(f'## MD_step= {MD_step}\n') + MD_xyz.write(f"{Nr_atoms}\n\n") + for I in range(Nr_atoms): + MD_xyz.write(f"{element_type[I].item()} {sy.coords[I, 0].item()} {sy.coords[I, 1].item()} {sy.coords[I, 2].item()} {n[I].item()} {qx[I].item()} {qqx[I].item()} {qqqx[I].item()} {q[I].item()}\n") + MD_xyz.flush() + Energy_dat.flush() + gc.collect() + torch.cuda.empty_cache() + + # Update positions with full Verlet step for R + disp = dt * V + #disp = FTOT / torch.max(FTOT) * 0.001 + coords = coords + disp # + dt * V + with torch.no_grad(): + unwrap_coords = unwrap_coords + disp + # Reset sy.coordsinates within the periodic box + coords = coords - LBox * torch.floor(coords / LBox) + + sy.coords = coords.numpy() + # Perform a graph-adaptive calculation of the density matrix + graphDH,sy.charges,mu,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu) + graphDH,sy.charges,EPOT,FTOT,mu,parts,subSysOnRank = get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu) + sy.coords = torch.tensor(sy.coords) + EPOT = torch.tensor(EPOT) + FTOT = torch.tensor(FTOT) + + V = V + 0.5 * dt * F2V * FTOT / Mnuc.unsqueeze(1) #- 0.01 * V + + MD_xyz.close() + Energy_dat.close() + + +if __name__ == "__main__": + print('start') + main() diff --git a/examples/latte_interface_bomd/vars b/examples/latte_interface_bomd/vars new file mode 100644 index 00000000..c6116796 --- /dev/null +++ b/examples/latte_interface_bomd/vars @@ -0,0 +1,21 @@ +#!/bin/bash +THIS_PATH=`pwd` +export PYTHONPATH="" +MOD_PATH=$THIS_PATH/../../src/sedacs/ +MOD_PATH1=$THIS_PATH/../../src/ +MOD_PATH2=$THIS_PATH/../../src/sedacs/driver +PROXYA_FORTRAN_PATH=$THIS_PATH/../../proxies/fortran/build/ +PROXYA_PYTHON_FILES=$THIS_PATH/../../proxies/python/ +PROXYA_PYTHON_FOLDER=$THIS_PATH/../../ +PROGRESS_PATH=$HOME/qmd-progress/install/lib64/ +BML_PATH=$HOME/bml/install/lib64/ +export PROXYA_FORTRAN_PATH=$PROXYA_FORTRAN_PATH +export PROXYA_PYTHON_PATH=$PROXYA_PYTHON_PATH +export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$MOD_PATH1:$MOD_PATH2:$PROGRESS_PATH:$BML_PATH:$PROXYA_PYTHON_FOLDER:$PROXYA_PYTHON_FILES:$PROXYA_FORTRAN_PATH +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROGRESS_PATH:$BML_PATH +export PYTHONWARNINGS="ignore:Unverified HTTPS request" + +GPU_PATH=$THIS_PATH/../../src/sedacs/gpu +echo $GPU_PATH +export PYTHONPATH=$PYTHONPATH:$GPU_PATH + diff --git a/examples/latte_interface_bomd/wat.pdb b/examples/latte_interface_bomd/wat.pdb new file mode 100644 index 00000000..034d516a --- /dev/null +++ b/examples/latte_interface_bomd/wat.pdb @@ -0,0 +1,9 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 50.459 50.459 50.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.749 -0.000 0.442 0.00 0.00 H +ATOM 2 O MOL 1 0.000 0.020 -0.165 0.00 0.00 O +ATOM 3 H MOL 1 -0.749 -0.000 0.442 0.00 0.00 H +TER +END diff --git a/examples/latte_interface_bomd/wat.xyz b/examples/latte_interface_bomd/wat.xyz new file mode 100644 index 00000000..1f469a46 --- /dev/null +++ b/examples/latte_interface_bomd/wat.xyz @@ -0,0 +1,5 @@ +3 +Lattice="110.00 0.0 0.0 0.0 110.00 0.0 0.0 0.0 110.00" +H 0.7493682 0.0000000 0.4424329 +O 0.0000000 0.0000000 -0.1653507 +H -0.7493682 0.0000000 0.4424329 diff --git a/examples/latte_interface_bomd/water_128.xyz b/examples/latte_interface_bomd/water_128.xyz new file mode 100644 index 00000000..ddf850a9 --- /dev/null +++ b/examples/latte_interface_bomd/water_128.xyz @@ -0,0 +1,386 @@ +384 +Lattice="15.66 0.0 0.0 0.0 15.66 0.0 0.0 0.0 15.66" +H 1.4821741580963135 14.427353858947754 2.953700065612793 +O 1.6885966062545776 15.210265159606934 2.3970494270324707 +H 2.3674094676971436 14.887577056884766 1.7750413417816162 +H 1.725602626800537 1.2087194919586182 10.28447151184082 +O 1.457163691520691 0.2813889980316162 10.563945770263672 +H 1.375484585762024 0.24449187517166138 11.546887397766113 +H 12.558568954467773 14.682812690734863 9.085963249206543 +O 13.374778747558594 15.202472686767578 8.868748664855957 +H 14.192708969116211 14.738236427307129 9.219833374023438 +H 6.220971584320068 10.90986442565918 3.922910690307617 +O 5.395566463470459 11.367801666259766 3.851719856262207 +H 5.097456455230713 11.388015747070312 2.87663197517395 +H 13.928208351135254 6.038353443145752 1.3187469244003296 +O 14.39126968383789 6.452458381652832 0.5244671106338501 +H 14.677336692810059 5.6653947830200195 15.641419410705566 +H 11.000219345092773 1.4569547176361084 0.45885026454925537 +O 11.63747501373291 2.104846715927124 0.8563565611839294 +H 12.253790855407715 1.5968525409698486 1.4643044471740723 +H 8.34492301940918 10.484837532043457 4.09354305267334 +O 7.658782958984375 9.694025039672852 4.098236560821533 +H 8.161250114440918 8.91158390045166 4.3958234786987305 +H 15.37078857421875 9.183189392089844 11.81903076171875 +O 0.6639226675033569 9.312712669372559 11.556085586547852 +H 1.1555242538452148 8.781630516052246 12.177814483642578 +H 2.469231367111206 4.930058479309082 6.316625118255615 +O 1.8953945636749268 5.428220272064209 6.90617036819458 +H 1.317298173904419 4.663173198699951 7.2908854484558105 +H 4.391626834869385 1.8281409740447998 2.7765512466430664 +O 5.01270055770874 1.8962875604629517 2.043304443359375 +H 4.4229350090026855 2.101100444793701 1.224356770515442 +H 11.354153633117676 9.732658386230469 1.4163808822631836 +O 12.010466575622559 10.312472343444824 1.0070639848709106 +H 12.736639022827148 9.787837982177734 0.45557060837745667 +H 15.223688125610352 4.653311729431152 13.862953186035156 +O 14.768438339233398 4.34467887878418 14.679522514343262 +H 13.97741413116455 3.8146629333496094 14.375483512878418 +H 2.5933477878570557 2.2602338790893555 4.078963756561279 +O 3.5907583236694336 1.9742355346679688 4.357860565185547 +H 3.4221041202545166 1.4155670404434204 5.144217491149902 +H 11.827882766723633 5.23652458190918 12.129922866821289 +O 11.420333862304688 4.348351001739502 12.450085639953613 +H 11.13693618774414 3.948350667953491 11.59998893737793 +H 3.122493267059326 14.13240909576416 15.377690315246582 +O 3.406907320022583 13.9873685836792 0.637580156326294 +H 4.268272399902344 14.468565940856934 0.7348317503929138 +H 11.982939720153809 3.2170681953430176 6.133591651916504 +O 12.74484920501709 3.6578142642974854 6.557803630828857 +H 12.507513046264648 4.57366418838501 6.91209077835083 +H 4.577542304992676 5.402759075164795 0.7480008006095886 +O 3.8300294876098633 5.114811420440674 0.15346001088619232 +H 3.705512046813965 5.906427383422852 15.198246002197266 +H 4.8761677742004395 2.076591730117798 14.366914749145508 +O 5.596246242523193 1.586893081665039 13.9247465133667 +H 5.811666965484619 2.142857551574707 13.113996505737305 +H 13.377649307250977 1.042777180671692 9.423595428466797 +O 13.151018142700195 1.8292531967163086 10.050421714782715 +H 13.835417747497559 2.495191812515259 9.988792419433594 +H 7.997742176055908 11.266412734985352 9.060665130615234 +O 8.366767883300781 10.735424995422363 8.289185523986816 +H 7.682319641113281 10.126465797424316 8.000984191894531 +H 6.61982536315918 5.436073303222656 1.7336512804031372 +O 5.908255577087402 6.083886623382568 1.5545637607574463 +H 5.400964736938477 6.177191257476807 2.360203504562378 +H 13.306570053100586 8.240872383117676 12.238951683044434 +O 13.812541961669922 8.967954635620117 12.561972618103027 +H 13.299116134643555 9.732105255126953 12.134977340698242 +H 13.150106430053711 10.962871551513672 2.506638765335083 +O 13.738313674926758 11.23777961730957 3.2231998443603516 +H 14.14203929901123 12.027764320373535 2.7478020191192627 +H 9.468901634216309 8.692893028259277 11.753732681274414 +O 9.996575355529785 8.272689819335938 11.04357624053955 +H 9.358142852783203 7.589511394500732 10.609314918518066 +H 9.184500694274902 12.010608673095703 3.185051918029785 +O 9.332493782043457 11.644781112670898 4.082911014556885 +H 10.308004379272461 11.81727123260498 4.252378463745117 +H 14.13718318939209 3.084084987640381 6.320530414581299 +O 15.026741027832031 2.7198779582977295 6.185760021209717 +H 15.581278800964355 2.8094310760498047 7.003511428833008 +H 1.805783987045288 13.039594650268555 13.465221405029297 +O 1.2811273336410522 12.223275184631348 13.247485160827637 +H 0.8052940368652344 11.954380989074707 14.096330642700195 +H 8.574115753173828 12.27851676940918 1.1447495222091675 +O 9.307392120361328 12.729674339294434 1.5993788242340088 +H 8.992727279663086 13.581256866455078 1.8648567199707031 +H 0.4504242539405823 2.9571290016174316 4.610954761505127 +O 1.1356279850006104 2.80627703666687 3.858980894088745 +H 0.6570261716842651 2.2529356479644775 3.161118984222412 +H 2.2259984016418457 1.135374665260315 7.197758197784424 +O 2.8197834491729736 0.5862197875976562 6.640344619750977 +H 3.361316680908203 0.13465867936611176 7.2745137214660645 +H 2.7605855464935303 3.5155222415924072 10.508090019226074 +O 2.7270185947418213 2.7197012901306152 9.998039245605469 +H 3.6602747440338135 2.449582576751709 9.736455917358398 +H 5.481457233428955 0.6800147891044617 1.2360972166061401 +O 5.735907077789307 15.55340576171875 0.6875582933425903 +H 5.908614158630371 0.24427083134651184 15.490666389465332 +H 6.483280658721924 6.651552677154541 12.702972412109375 +O 6.861117839813232 5.836682319641113 12.391767501831055 +H 7.664957046508789 5.7625226974487305 13.000656127929688 +H 5.648747444152832 3.2264184951782227 8.506119728088379 +O 5.52994966506958 2.848599910736084 9.409486770629883 +H 6.039980888366699 2.0285658836364746 9.292366981506348 +H 12.85450553894043 6.765137195587158 10.680105209350586 +O 12.331360816955566 6.957432270050049 11.530010223388672 +H 11.486471176147461 7.264204025268555 11.158045768737793 +H 7.362239837646484 9.154353141784668 0.3254317045211792 +O 7.498302459716797 9.510848999023438 15.109041213989258 +H 8.419239044189453 9.094351768493652 14.665138244628906 +H 1.5374337434768677 4.2605109214782715 2.7824814319610596 +O 1.6234899759292603 5.16341495513916 2.2621734142303467 +H 2.4345974922180176 5.093528747558594 1.753399133682251 +H 13.98061466217041 13.565018653869629 0.982430636882782 +O 13.24919319152832 14.127765655517578 0.6269434690475464 +H 12.569368362426758 13.48637866973877 0.3310380280017853 +H 3.5146663188934326 10.071371078491211 1.0377812385559082 +O 2.739107131958008 9.517007827758789 0.8543626070022583 +H 2.8032007217407227 8.92596435546875 1.6306871175765991 +H 3.2404215335845947 9.397064208984375 7.563103199005127 +O 3.697007656097412 10.221046447753906 7.237059116363525 +H 3.5571937561035156 10.893165588378906 7.9507975578308105 +H 9.887673377990723 12.222174644470215 12.364692687988281 +O 9.317317962646484 13.004202842712402 11.984381675720215 +H 9.826249122619629 13.767129898071289 12.294698715209961 +H 14.60256576538086 1.0523858070373535 6.485602855682373 +O 14.413382530212402 0.06270215660333633 6.496177673339844 +H 14.147909164428711 15.534577369689941 7.447587966918945 +H 13.379937171936035 6.094424724578857 8.554449081420898 +O 13.894918441772461 6.2347235679626465 9.342596054077148 +H 14.61241626739502 6.858521938323975 9.085838317871094 +H 8.004314422607422 12.405964851379395 11.07300090789795 +O 7.369335651397705 12.221914291381836 10.350719451904297 +H 6.828718185424805 13.049220085144043 10.023193359375 +H 6.5086822509765625 14.756935119628906 4.994861602783203 +O 6.839446544647217 15.60968017578125 4.6459126472473145 +H 6.100698471069336 0.509876012802124 4.77648401260376 +H 1.814298391342163 7.485466480255127 14.199212074279785 +O 0.9792758822441101 7.4431376457214355 13.722976684570312 +H 0.34630855917930603 7.4032135009765625 14.47954273223877 +H 6.28085994720459 13.820106506347656 13.516830444335938 +O 6.905226230621338 13.168272972106934 13.857548713684082 +H 7.748592376708984 13.196846961975098 13.40528678894043 +H 2.5069146156311035 11.916142463684082 9.840462684631348 +O 2.6829140186309814 12.13232135772705 8.878107070922852 +H 1.8113011121749878 12.242073059082031 8.437335968017578 +H 14.037789344787598 9.845786094665527 4.642851829528809 +O 13.800369262695312 9.396403312683105 5.5100417137146 +H 14.389450073242188 8.535675048828125 5.423510551452637 +H 12.178966522216797 3.552061080932617 13.457749366760254 +O 12.67518424987793 2.939744710922241 14.132843971252441 +H 12.050117492675781 2.740718126296997 14.851271629333496 +H 6.341159820556641 4.153588771820068 12.246420860290527 +O 5.721994876861572 3.38653564453125 12.11013412475586 +H 5.833896160125732 3.1198267936706543 11.189043045043945 +H 0.4187822639942169 6.928407669067383 5.925801753997803 +O 15.306794166564941 7.189908027648926 5.43982458114624 +H 0.07627714425325394 7.3125996589660645 4.559133529663086 +H 15.205296516418457 13.601235389709473 10.856249809265137 +O 15.426885604858398 14.0115385055542 9.955629348754883 +H 0.4404774010181427 14.725579261779785 10.123786926269531 +H 7.781744480133057 6.341546058654785 10.87021255493164 +O 8.193033218383789 6.693912982940674 10.09223461151123 +H 7.419920921325684 6.874934673309326 9.521349906921387 +H 4.713289260864258 13.532459259033203 7.1375813484191895 +O 4.18504524230957 13.934209823608398 7.856135368347168 +H 3.663506269454956 13.236863136291504 8.294808387756348 +H 1.4324342012405396 7.933252811431885 8.537219047546387 +O 2.39997935295105 7.775256156921387 8.192770004272461 +H 2.2801403999328613 6.949921607971191 7.6617207527160645 +H 0.5963254570960999 6.013045310974121 12.672981262207031 +O 0.5425719022750854 4.989353179931641 12.51000690460205 +H 1.4733445644378662 4.74129056930542 12.26429271697998 +H 5.787660598754883 12.561777114868164 4.9811110496521 +O 5.850313663482666 13.304183006286621 5.696791172027588 +H 6.695471286773682 13.148829460144043 6.1641845703125 +H 9.32719898223877 8.223834991455078 1.8639791011810303 +O 10.29822063446045 8.110273361206055 1.9925719499588013 +H 10.310250282287598 7.87868595123291 2.945894479751587 +H 0.277807354927063 3.5526158809661865 8.722700119018555 +O 0.9846296906471252 3.210406541824341 8.203073501586914 +H 1.7031030654907227 3.0266921520233154 8.867362976074219 +H 2.8105833530426025 2.196861982345581 15.392070770263672 +O 3.735032796859741 2.4994215965270996 15.570079803466797 +H 3.644773006439209 3.4426615238189697 0.03853387013077736 +H 14.682604789733887 1.0238474607467651 2.0653231143951416 +O 15.566673278808594 1.3636430501937866 1.7907549142837524 +H 0.5717520117759705 0.6591038703918457 1.8086328506469727 +H 11.107076644897461 8.861739158630371 7.134167671203613 +O 11.434098243713379 8.342004776000977 6.366227149963379 +H 12.278743743896484 8.585103988647461 6.036701679229736 +H 6.849724292755127 2.226242780685425 14.659040451049805 +O 7.6959028244018555 2.413717269897461 15.109258651733398 +H 8.172039031982422 3.1463210582733154 14.650622367858887 +H 4.415694236755371 12.286710739135742 1.0233668088912964 +O 4.88289213180542 11.490494728088379 1.3367034196853638 +H 5.81308126449585 11.642242431640625 0.9043989777565002 +H 10.558619499206543 9.060455322265625 9.619710922241211 +O 10.549599647521973 9.386129379272461 8.682696342468262 +H 9.6725492477417 9.819774627685547 8.593550682067871 +H 6.1465864181518555 15.147404670715332 9.628643035888672 +O 5.529297351837158 14.445521354675293 9.938332557678223 +H 4.890136241912842 14.265419006347656 9.203654289245605 +H 12.137746810913086 14.339106559753418 4.88058614730835 +O 12.554288864135742 15.224326133728027 4.790942668914795 +H 13.392069816589355 15.262238502502441 5.262670993804932 +H 12.538585662841797 4.795741558074951 2.6958494186401367 +O 13.156197547912598 5.574193000793457 2.774204730987549 +H 13.542095184326172 5.429687976837158 3.6601510047912598 +H 1.6302706003189087 14.983660697937012 5.979812145233154 +O 0.8948200941085815 14.330414772033691 6.0626373291015625 +H 0.1337418407201767 14.884979248046875 6.267165660858154 +H 4.088843822479248 7.9247822761535645 14.16343879699707 +O 3.351106643676758 7.655316352844238 14.735418319702148 +H 3.2007994651794434 8.391205787658691 15.35331916809082 +H 0.15970730781555176 12.594325065612793 2.4045615196228027 +O 15.217007637023926 12.903790473937988 1.7151750326156616 +H 15.467392921447754 12.415807723999023 0.8731029033660889 +H 10.299698829650879 7.86765193939209 5.2782793045043945 +O 9.465031623840332 7.6437177658081055 4.793709754943848 +H 9.516728401184082 6.686868667602539 4.577350616455078 +H 11.606966972351074 11.700885772705078 0.35497593879699707 +O 11.372387886047363 12.519648551940918 15.574257850646973 +H 10.634315490722656 12.839116096496582 0.46611565351486206 +H 8.778069496154785 1.2632012367248535 15.487536430358887 +O 9.388166427612305 0.5421920418739319 0.13583745062351227 +H 9.037282943725586 0.09930628538131714 0.9319953322410583 +H 6.16838264465332 5.261773586273193 7.558151721954346 +O 6.098697662353516 4.416169166564941 7.145912170410156 +H 7.055895805358887 4.16866397857666 7.010154724121094 +H 7.392298221588135 10.838863372802734 15.570189476013184 +O 7.205356597900391 11.764328956604004 0.33388379216194153 +H 7.023780345916748 12.40236759185791 15.264869689941406 +H 8.928775787353516 4.274104595184326 5.8341803550720215 +O 8.753131866455078 3.6826674938201904 6.5963945388793945 +H 8.974727630615234 2.730682373046875 6.358644008636475 +H 0.35756778717041016 3.3287155628204346 15.077012062072754 +O 0.9291011691093445 2.5445761680603027 15.223231315612793 +H 0.5748293399810791 2.0781967639923096 0.3547714650630951 +H 4.015512466430664 3.467869758605957 4.926387310028076 +O 4.089820861816406 4.415233612060547 5.229217529296875 +H 4.887458801269531 4.509295463562012 5.778048038482666 +H 5.291957855224609 14.813364028930664 11.435693740844727 +O 5.140069007873535 14.953418731689453 12.421006202697754 +H 5.216044902801514 0.23042252659797668 12.654684066772461 +H 13.444220542907715 11.729223251342773 11.851582527160645 +O 12.642805099487305 11.136754989624023 11.598742485046387 +H 12.548523902893066 11.20355224609375 10.628812789916992 +H 9.697056770324707 15.593395233154297 14.027965545654297 +O 10.087967872619629 15.423428535461426 13.162454605102539 +H 11.05064868927002 0.002158439252525568 13.155196189880371 +H 2.523853063583374 11.595932006835938 12.188504219055176 +O 2.7947349548339844 11.257299423217773 11.32616901397705 +H 2.0624139308929443 10.607105255126953 11.156081199645996 +H 13.958531379699707 8.130409240722656 15.528944969177246 +O 13.822677612304688 9.02670955657959 15.227170944213867 +H 13.791452407836914 9.062285423278809 14.228338241577148 +H 10.27184772491455 9.424518585205078 13.943780899047852 +O 9.732276916503906 8.618180274963379 14.051572799682617 +H 10.166350364685059 8.033967971801758 14.658818244934082 +H 8.461220741271973 12.057075500488281 7.043845176696777 +O 8.419132232666016 12.80543041229248 6.415385723114014 +H 8.736284255981445 12.338397979736328 5.5919036865234375 +H 8.171420097351074 0.7793318033218384 5.426231861114502 +O 8.820952415466309 1.2351326942443848 6.013558864593506 +H 9.01926326751709 0.6126450300216675 6.739671230316162 +H 2.0820090770721436 7.869522571563721 3.1253793239593506 +O 2.9208269119262695 8.372122764587402 3.1731083393096924 +H 2.627509355545044 9.106399536132812 3.720787525177002 +H 11.650372505187988 10.628031730651855 8.698492050170898 +O 12.256834030151367 11.429168701171875 8.799505233764648 +H 13.083629608154297 11.129518508911133 8.284788131713867 +H 13.960386276245117 14.537196159362793 14.816256523132324 +O 14.3788480758667 14.84691047668457 13.965582847595215 +H 13.691018104553223 15.364837646484375 13.521903038024902 +H 11.58198356628418 1.196730613708496 5.081545829772949 +O 11.163005828857422 2.0494470596313477 5.276447772979736 +H 10.318563461303711 1.797735571861267 5.718932151794434 +H 6.0017476081848145 10.59385871887207 10.80034065246582 +O 5.272309303283691 10.05134105682373 11.150882720947266 +H 4.443428039550781 10.651139259338379 11.057957649230957 +H 12.516849517822266 11.899116516113281 4.271182060241699 +O 11.869437217712402 12.347843170166016 4.853531837463379 +H 12.166669845581055 12.171024322509766 5.7557244300842285 +H 15.470584869384766 4.516737461090088 11.073837280273438 +O 15.1124849319458 4.111335277557373 10.25562858581543 +H 14.591557502746582 4.877866744995117 9.938982963562012 +H 15.495829582214355 12.599084854125977 12.530135154724121 +O 14.549777030944824 12.876575469970703 12.166041374206543 +H 14.274829864501953 13.484247207641602 12.92894172668457 +H 4.544622421264648 5.858673572540283 4.278730869293213 +O 4.853733062744141 6.651581287384033 3.80159854888916 +H 4.038316249847412 7.112107276916504 3.6127209663391113 +H 11.086899757385254 2.9105334281921387 3.527799129486084 +O 11.044354438781738 3.5479931831359863 2.813129425048828 +H 11.100714683532715 3.017974376678467 2.005096435546875 +H 11.167326927185059 5.955437660217285 0.33261048793792725 +O 10.39560604095459 6.435065746307373 0.020402710884809494 +H 10.094603538513184 6.954756259918213 0.794249415397644 +H 5.193816661834717 9.804295539855957 7.193893909454346 +O 6.119728088378906 9.39712905883789 7.226724624633789 +H 6.320915699005127 9.148200988769531 6.31579065322876 +H 10.59584903717041 3.775369882583618 9.694656372070312 +O 10.687355041503906 2.999478340148926 10.27226734161377 +H 11.493496894836426 2.6317555904388428 9.933670043945312 +H 9.679096221923828 4.952756404876709 13.074913024902344 +O 8.934259414672852 4.986400127410889 13.691017150878906 +H 9.434240341186523 5.47733211517334 14.371708869934082 +H 3.9072349071502686 4.0586981773376465 11.940484046936035 +O 3.154937267303467 4.696625709533691 12.053990364074707 +H 3.5881435871124268 5.517663955688477 11.802338600158691 +H 0.2335490584373474 0.01581624709069729 13.774118423461914 +O 0.980350911617279 0.5342038869857788 13.378776550292969 +H 0.9922274947166443 1.4501113891601562 13.837281227111816 +H 12.65897274017334 0.9930011630058289 11.683954238891602 +O 12.707582473754883 0.764843225479126 12.696332931518555 +H 12.694315910339355 1.5772038698196411 13.278538703918457 +H 10.812484741210938 11.850899696350098 14.067712783813477 +O 10.624994277954102 11.294839859008789 13.30173397064209 +H 11.430129051208496 11.36072826385498 12.707429885864258 +H 7.020813941955566 7.331269264221191 1.747533917427063 +O 7.554996013641357 8.1338529586792 1.842114806175232 +H 7.4181599617004395 8.49007797241211 2.763763666152954 +H 11.144770622253418 5.892538547515869 8.100217819213867 +O 12.011418342590332 6.053420543670654 7.622436046600342 +H 11.807604789733887 6.768427848815918 7.026505947113037 +H 0.804131269454956 13.10036849975586 4.533726215362549 +O 1.1628715991973877 12.663919448852539 3.6855170726776123 +H 1.7346456050872803 11.923086166381836 3.9333012104034424 +H 9.218413352966309 1.9028451442718506 10.826943397521973 +O 8.582201957702637 1.300583004951477 11.322752952575684 +H 9.201321601867676 0.7191085815429688 11.809184074401855 +H 3.442178726196289 14.570088386535645 13.23493766784668 +O 2.64837646484375 14.339696884155273 13.757745742797852 +H 2.056213617324829 15.07002067565918 13.468094825744629 +H 6.184440612792969 8.607916831970215 14.012269973754883 +O 5.613175392150879 8.24959659576416 13.366471290588379 +H 5.421210289001465 8.999065399169922 12.734549522399902 +H 14.156079292297363 10.09754753112793 6.937656879425049 +O 14.381294250488281 10.39493465423584 7.833716869354248 +H 15.031318664550781 11.204416275024414 7.830630302429199 +H 9.186308860778809 5.373661041259766 9.201058387756348 +O 9.884927749633789 4.853215217590332 8.791373252868652 +H 9.495500564575195 4.389050006866455 7.994511127471924 +H 7.909711837768555 0.8771836757659912 10.073674201965332 +O 7.3992815017700195 0.40500327944755554 9.375271797180176 +H 8.047890663146973 0.01646227203309536 8.824193954467773 +H 4.144155025482178 7.798429012298584 11.0037202835083 +O 3.6634180545806885 7.110377311706543 10.5337553024292 +H 3.0318245887756348 7.595344543457031 9.977286338806152 +H 11.543298721313477 12.845231056213379 9.526606559753418 +O 11.121271133422852 13.702033042907715 9.871810913085938 +H 10.621376991271973 13.381515502929688 10.645342826843262 +H 7.287951469421387 15.405527114868164 1.4838590621948242 +O 8.058247566223145 15.133753776550293 2.1102092266082764 +H 7.733454704284668 15.314888954162598 3.0118229389190674 +H 5.935088634490967 7.812267303466797 7.968081951141357 +O 6.042677879333496 6.951498031616211 8.45356559753418 +H 5.2108025550842285 6.850614070892334 8.959635734558105 +H 15.26892375946045 9.244001388549805 8.84305191040039 +O 0.033080607652664185 8.36771297454834 9.159706115722656 +H 0.16065479815006256 8.65696907043457 10.071883201599121 +H 15.44448471069336 7.283434867858887 2.2880680561065674 +O 0.4308568835258484 7.290805816650391 2.960726737976074 +H 0.8542476892471313 6.4178080558776855 2.8072118759155273 +H 6.653284549713135 3.0818610191345215 2.4921748638153076 +O 7.361125946044922 3.674710988998413 2.2265164852142334 +H 7.656304359436035 3.247504234313965 1.4033161401748657 +H 13.179733276367188 15.35033893585205 1.7865592241287231 +O 13.136012077331543 0.4361955523490906 2.404041290283203 +H 13.092921257019043 15.597688674926758 3.281696081161499 +H 3.2176342010498047 10.340422630310059 5.482553958892822 +O 2.859381914138794 10.761625289916992 4.600158214569092 +H 3.671846389770508 10.996495246887207 4.227005958557129 +H 9.0103178024292 14.254643440246582 7.299729824066162 +O 9.379074096679688 15.032605171203613 7.842066287994385 +H 9.993480682373047 14.663202285766602 8.487648963928223 +H 1.057732105255127 10.423288345336914 0.49331533908843994 +O 0.2989242374897003 10.900001525878906 0.0640338882803917 +H 15.468161582946777 10.141322135925293 15.32434368133545 +H 0.5501918792724609 13.092039108276367 7.281371593475342 +O 0.34184548258781433 12.450984001159668 7.994649887084961 +H 0.06924410164356232 13.057560920715332 8.765048027038574 +H 9.83470630645752 4.528668403625488 3.769052028656006 +O 9.009892463684082 4.8917107582092285 4.168781280517578 +H 8.33976936340332 4.487730026245117 3.5564870834350586 diff --git a/examples/latte_interface_energy_forces/coords_100.pdb b/examples/latte_interface_energy_forces/coords_100.pdb new file mode 100644 index 00000000..63234eda --- /dev/null +++ b/examples/latte_interface_energy_forces/coords_100.pdb @@ -0,0 +1,306 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 15.459 15.459 15.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.024 -0.035 0.000 0.00 0.00 H +ATOM 2 O MOL 1 0.965 0.020 0.000 0.00 0.00 O +ATOM 3 H MOL 1 1.141 -0.907 0.000 0.00 0.00 H +ATOM 4 H MOL 1 1.462 1.513 1.709 0.00 0.00 H +ATOM 5 O MOL 1 2.404 1.568 1.709 0.00 0.00 O +ATOM 6 H MOL 1 2.579 0.641 1.709 0.00 0.00 H +ATOM 7 H MOL 1 2.820 2.865 3.165 0.00 0.00 H +ATOM 8 O MOL 1 3.761 2.919 3.165 0.00 0.00 O +ATOM 9 H MOL 1 3.937 1.993 3.165 0.00 0.00 H +ATOM 10 H MOL 1 4.153 4.495 4.880 0.00 0.00 H +ATOM 11 O MOL 1 5.095 4.549 4.880 0.00 0.00 O +ATOM 12 H MOL 1 5.270 3.623 4.880 0.00 0.00 H +ATOM 13 H MOL 1 6.507 6.886 7.361 0.00 0.00 H +ATOM 14 O MOL 1 7.449 6.940 7.361 0.00 0.00 O +ATOM 15 H MOL 1 7.624 6.013 7.361 0.00 0.00 H +ATOM 16 H MOL 1 8.157 8.371 9.279 0.00 0.00 H +ATOM 17 O MOL 1 9.098 8.425 9.279 0.00 0.00 O +ATOM 18 H MOL 1 9.273 7.498 9.279 0.00 0.00 H +ATOM 19 H MOL 1 9.844 10.492 11.575 0.00 0.00 H +ATOM 20 O MOL 1 10.786 10.546 11.575 0.00 0.00 O +ATOM 21 H MOL 1 10.961 9.619 11.575 0.00 0.00 H +ATOM 22 H MOL 1 13.862 1.975 4.386 0.00 0.00 H +ATOM 23 O MOL 1 14.804 2.029 4.386 0.00 0.00 O +ATOM 24 H MOL 1 14.979 1.102 4.386 0.00 0.00 H +ATOM 25 H MOL 1 6.255 9.846 11.439 0.00 0.00 H +ATOM 26 O MOL 1 7.196 9.900 11.439 0.00 0.00 O +ATOM 27 H MOL 1 7.371 8.973 11.439 0.00 0.00 H +ATOM 28 H MOL 1 0.905 3.897 6.882 0.00 0.00 H +ATOM 29 O MOL 1 1.846 3.951 6.882 0.00 0.00 O +ATOM 30 H MOL 1 2.021 3.024 6.882 0.00 0.00 H +ATOM 31 H MOL 1 11.955 14.153 5.458 0.00 0.00 H +ATOM 32 O MOL 1 12.896 14.207 5.458 0.00 0.00 O +ATOM 33 H MOL 1 13.072 13.281 5.458 0.00 0.00 H +ATOM 34 H MOL 1 9.388 13.982 6.497 0.00 0.00 H +ATOM 35 O MOL 1 10.330 14.036 6.497 0.00 0.00 O +ATOM 36 H MOL 1 10.505 13.110 6.497 0.00 0.00 H +ATOM 37 H MOL 1 9.916 3.729 8.798 0.00 0.00 H +ATOM 38 O MOL 1 10.857 3.783 8.798 0.00 0.00 O +ATOM 39 H MOL 1 11.033 2.857 8.798 0.00 0.00 H +ATOM 40 H MOL 1 1.645 10.849 1.718 0.00 0.00 H +ATOM 41 O MOL 1 2.586 10.904 1.718 0.00 0.00 O +ATOM 42 H MOL 1 2.761 9.977 1.718 0.00 0.00 H +ATOM 43 H MOL 1 13.668 5.798 2.502 0.00 0.00 H +ATOM 44 O MOL 1 14.610 5.852 2.502 0.00 0.00 O +ATOM 45 H MOL 1 14.785 4.925 2.502 0.00 0.00 H +ATOM 46 H MOL 1 0.434 8.566 11.170 0.00 0.00 H +ATOM 47 O MOL 1 1.376 8.620 11.170 0.00 0.00 O +ATOM 48 H MOL 1 1.551 7.693 11.170 0.00 0.00 H +ATOM 49 H MOL 1 8.236 3.228 1.102 0.00 0.00 H +ATOM 50 O MOL 1 9.177 3.283 1.102 0.00 0.00 O +ATOM 51 H MOL 1 9.352 2.356 1.102 0.00 0.00 H +ATOM 52 H MOL 1 14.171 2.786 10.963 0.00 0.00 H +ATOM 53 O MOL 1 15.112 2.840 10.963 0.00 0.00 O +ATOM 54 H MOL 1 15.287 1.913 10.963 0.00 0.00 H +ATOM 55 H MOL 1 10.024 12.300 0.152 0.00 0.00 H +ATOM 56 O MOL 1 10.966 12.354 0.152 0.00 0.00 O +ATOM 57 H MOL 1 11.141 11.428 0.152 0.00 0.00 H +ATOM 58 H MOL 1 11.444 7.694 1.210 0.00 0.00 H +ATOM 59 O MOL 1 12.386 7.748 1.210 0.00 0.00 O +ATOM 60 H MOL 1 12.561 6.822 1.210 0.00 0.00 H +ATOM 61 H MOL 1 5.914 9.892 5.228 0.00 0.00 H +ATOM 62 O MOL 1 6.855 9.947 5.228 0.00 0.00 O +ATOM 63 H MOL 1 7.030 9.020 5.228 0.00 0.00 H +ATOM 64 H MOL 1 11.015 2.278 3.209 0.00 0.00 H +ATOM 65 O MOL 1 11.957 2.332 3.209 0.00 0.00 O +ATOM 66 H MOL 1 12.132 1.406 3.209 0.00 0.00 H +ATOM 67 H MOL 1 5.157 14.137 9.690 0.00 0.00 H +ATOM 68 O MOL 1 6.099 14.192 9.690 0.00 0.00 O +ATOM 69 H MOL 1 6.274 13.265 9.690 0.00 0.00 H +ATOM 70 H MOL 1 13.014 10.851 2.149 0.00 0.00 H +ATOM 71 O MOL 1 13.956 10.906 2.149 0.00 0.00 O +ATOM 72 H MOL 1 14.131 9.979 2.149 0.00 0.00 H +ATOM 73 H MOL 1 6.432 7.342 4.083 0.00 0.00 H +ATOM 74 O MOL 1 7.373 7.396 4.083 0.00 0.00 O +ATOM 75 H MOL 1 7.548 6.469 4.083 0.00 0.00 H +ATOM 76 H MOL 1 13.237 7.650 6.098 0.00 0.00 H +ATOM 77 O MOL 1 14.178 7.704 6.098 0.00 0.00 O +ATOM 78 H MOL 1 14.353 6.777 6.098 0.00 0.00 H +ATOM 79 H MOL 1 8.056 0.377 3.941 0.00 0.00 H +ATOM 80 O MOL 1 8.997 0.431 3.941 0.00 0.00 O +ATOM 81 H MOL 1 9.172 -0.495 3.941 0.00 0.00 H +ATOM 82 H MOL 1 4.396 9.364 7.094 0.00 0.00 H +ATOM 83 O MOL 1 5.337 9.418 7.094 0.00 0.00 O +ATOM 84 H MOL 1 5.512 8.491 7.094 0.00 0.00 H +ATOM 85 H MOL 1 5.060 0.593 11.823 0.00 0.00 H +ATOM 86 O MOL 1 6.002 0.647 11.823 0.00 0.00 O +ATOM 87 H MOL 1 6.177 -0.280 11.823 0.00 0.00 H +ATOM 88 H MOL 1 10.805 13.676 1.929 0.00 0.00 H +ATOM 89 O MOL 1 11.747 13.730 1.929 0.00 0.00 O +ATOM 90 H MOL 1 11.922 12.804 1.929 0.00 0.00 H +ATOM 91 H MOL 1 10.422 5.195 5.779 0.00 0.00 H +ATOM 92 O MOL 1 11.364 5.250 5.779 0.00 0.00 O +ATOM 93 H MOL 1 11.539 4.323 5.779 0.00 0.00 H +ATOM 94 H MOL 1 2.609 5.311 0.365 0.00 0.00 H +ATOM 95 O MOL 1 3.551 5.365 0.365 0.00 0.00 O +ATOM 96 H MOL 1 3.726 4.438 0.365 0.00 0.00 H +ATOM 97 H MOL 1 0.247 12.838 7.622 0.00 0.00 H +ATOM 98 O MOL 1 1.189 12.892 7.622 0.00 0.00 O +ATOM 99 H MOL 1 1.364 11.966 7.622 0.00 0.00 H +ATOM 100 H MOL 1 0.400 4.030 12.734 0.00 0.00 H +ATOM 101 O MOL 1 1.342 4.084 12.734 0.00 0.00 O +ATOM 102 H MOL 1 1.517 3.158 12.734 0.00 0.00 H +ATOM 103 H MOL 1 6.344 11.570 0.306 0.00 0.00 H +ATOM 104 O MOL 1 7.286 11.624 0.306 0.00 0.00 O +ATOM 105 H MOL 1 7.461 10.698 0.306 0.00 0.00 H +ATOM 106 H MOL 1 1.457 8.882 5.810 0.00 0.00 H +ATOM 107 O MOL 1 2.399 8.937 5.810 0.00 0.00 O +ATOM 108 H MOL 1 2.574 8.010 5.810 0.00 0.00 H +ATOM 109 H MOL 1 1.246 12.939 10.266 0.00 0.00 H +ATOM 110 O MOL 1 2.187 12.993 10.266 0.00 0.00 O +ATOM 111 H MOL 1 2.362 12.067 10.266 0.00 0.00 H +ATOM 112 H MOL 1 5.844 10.735 2.510 0.00 0.00 H +ATOM 113 O MOL 1 6.786 10.789 2.510 0.00 0.00 O +ATOM 114 H MOL 1 6.961 9.862 2.510 0.00 0.00 H +ATOM 115 H MOL 1 9.752 5.415 11.518 0.00 0.00 H +ATOM 116 O MOL 1 10.694 5.470 11.518 0.00 0.00 O +ATOM 117 H MOL 1 10.869 4.543 11.518 0.00 0.00 H +ATOM 118 H MOL 1 10.062 11.535 7.714 0.00 0.00 H +ATOM 119 O MOL 1 11.004 11.590 7.714 0.00 0.00 O +ATOM 120 H MOL 1 11.179 10.663 7.714 0.00 0.00 H +ATOM 121 H MOL 1 11.140 0.576 13.274 0.00 0.00 H +ATOM 122 O MOL 1 12.081 0.630 13.274 0.00 0.00 O +ATOM 123 H MOL 1 12.256 -0.297 13.274 0.00 0.00 H +ATOM 124 H MOL 1 8.664 2.794 6.440 0.00 0.00 H +ATOM 125 O MOL 1 9.606 2.848 6.440 0.00 0.00 O +ATOM 126 H MOL 1 9.781 1.921 6.440 0.00 0.00 H +ATOM 127 H MOL 1 1.908 5.146 9.029 0.00 0.00 H +ATOM 128 O MOL 1 2.849 5.201 9.029 0.00 0.00 O +ATOM 129 H MOL 1 3.024 4.274 9.029 0.00 0.00 H +ATOM 130 H MOL 1 12.294 7.322 11.253 0.00 0.00 H +ATOM 131 O MOL 1 13.235 7.377 11.253 0.00 0.00 O +ATOM 132 H MOL 1 13.410 6.450 11.253 0.00 0.00 H +ATOM 133 H MOL 1 11.098 6.253 8.089 0.00 0.00 H +ATOM 134 O MOL 1 12.039 6.307 8.089 0.00 0.00 O +ATOM 135 H MOL 1 12.214 5.381 8.089 0.00 0.00 H +ATOM 136 H MOL 1 4.497 3.412 10.233 0.00 0.00 H +ATOM 137 O MOL 1 5.438 3.466 10.233 0.00 0.00 O +ATOM 138 H MOL 1 5.613 2.539 10.233 0.00 0.00 H +ATOM 139 H MOL 1 12.642 9.031 8.163 0.00 0.00 H +ATOM 140 O MOL 1 13.584 9.085 8.163 0.00 0.00 O +ATOM 141 H MOL 1 13.759 8.159 8.163 0.00 0.00 H +ATOM 142 H MOL 1 1.618 12.178 5.523 0.00 0.00 H +ATOM 143 O MOL 1 2.560 12.233 5.523 0.00 0.00 O +ATOM 144 H MOL 1 2.735 11.306 5.523 0.00 0.00 H +ATOM 145 H MOL 1 11.030 2.396 11.405 0.00 0.00 H +ATOM 146 O MOL 1 11.971 2.450 11.405 0.00 0.00 O +ATOM 147 H MOL 1 12.146 1.524 11.405 0.00 0.00 H +ATOM 148 H MOL 1 13.962 8.475 13.187 0.00 0.00 H +ATOM 149 O MOL 1 14.903 8.529 13.187 0.00 0.00 O +ATOM 150 H MOL 1 15.078 7.602 13.187 0.00 0.00 H +ATOM 151 H MOL 1 9.462 8.027 5.394 0.00 0.00 H +ATOM 152 O MOL 1 10.404 8.081 5.394 0.00 0.00 O +ATOM 153 H MOL 1 10.579 7.155 5.394 0.00 0.00 H +ATOM 154 H MOL 1 8.529 8.120 2.400 0.00 0.00 H +ATOM 155 O MOL 1 9.471 8.175 2.400 0.00 0.00 O +ATOM 156 H MOL 1 9.646 7.248 2.400 0.00 0.00 H +ATOM 157 H MOL 1 8.139 0.978 12.304 0.00 0.00 H +ATOM 158 O MOL 1 9.081 1.033 12.304 0.00 0.00 O +ATOM 159 H MOL 1 9.256 0.106 12.304 0.00 0.00 H +ATOM 160 H MOL 1 1.628 12.028 12.490 0.00 0.00 H +ATOM 161 O MOL 1 2.569 12.082 12.490 0.00 0.00 O +ATOM 162 H MOL 1 2.744 11.155 12.490 0.00 0.00 H +ATOM 163 H MOL 1 6.188 3.476 7.931 0.00 0.00 H +ATOM 164 O MOL 1 7.129 3.530 7.931 0.00 0.00 O +ATOM 165 H MOL 1 7.305 2.604 7.931 0.00 0.00 H +ATOM 166 H MOL 1 11.865 12.623 9.604 0.00 0.00 H +ATOM 167 O MOL 1 12.807 12.677 9.604 0.00 0.00 O +ATOM 168 H MOL 1 12.982 11.750 9.604 0.00 0.00 H +ATOM 169 H MOL 1 9.083 5.793 0.741 0.00 0.00 H +ATOM 170 O MOL 1 10.025 5.847 0.741 0.00 0.00 O +ATOM 171 H MOL 1 10.200 4.921 0.741 0.00 0.00 H +ATOM 172 H MOL 1 13.001 1.894 6.496 0.00 0.00 H +ATOM 173 O MOL 1 13.942 1.949 6.496 0.00 0.00 O +ATOM 174 H MOL 1 14.117 1.022 6.496 0.00 0.00 H +ATOM 175 H MOL 1 1.513 8.921 9.234 0.00 0.00 H +ATOM 176 O MOL 1 2.454 8.975 9.234 0.00 0.00 O +ATOM 177 H MOL 1 2.629 8.049 9.234 0.00 0.00 H +ATOM 178 H MOL 1 5.013 8.716 0.609 0.00 0.00 H +ATOM 179 O MOL 1 5.954 8.770 0.609 0.00 0.00 O +ATOM 180 H MOL 1 6.129 7.843 0.609 0.00 0.00 H +ATOM 181 H MOL 1 6.661 3.635 13.318 0.00 0.00 H +ATOM 182 O MOL 1 7.602 3.690 13.318 0.00 0.00 O +ATOM 183 H MOL 1 7.777 2.763 13.318 0.00 0.00 H +ATOM 184 H MOL 1 5.109 3.641 1.722 0.00 0.00 H +ATOM 185 O MOL 1 6.050 3.696 1.722 0.00 0.00 O +ATOM 186 H MOL 1 6.225 2.769 1.722 0.00 0.00 H +ATOM 187 H MOL 1 6.461 0.702 0.842 0.00 0.00 H +ATOM 188 O MOL 1 7.402 0.757 0.842 0.00 0.00 O +ATOM 189 H MOL 1 7.577 -0.170 0.842 0.00 0.00 H +ATOM 190 H MOL 1 3.083 7.592 2.472 0.00 0.00 H +ATOM 191 O MOL 1 4.025 7.646 2.472 0.00 0.00 O +ATOM 192 H MOL 1 4.200 6.720 2.472 0.00 0.00 H +ATOM 193 H MOL 1 8.638 14.297 9.461 0.00 0.00 H +ATOM 194 O MOL 1 9.579 14.352 9.461 0.00 0.00 O +ATOM 195 H MOL 1 9.754 13.425 9.461 0.00 0.00 H +ATOM 196 H MOL 1 4.773 13.629 6.292 0.00 0.00 H +ATOM 197 O MOL 1 5.714 13.684 6.292 0.00 0.00 O +ATOM 198 H MOL 1 5.889 12.757 6.292 0.00 0.00 H +ATOM 199 H MOL 1 7.047 3.198 3.702 0.00 0.00 H +ATOM 200 O MOL 1 7.989 3.252 3.702 0.00 0.00 O +ATOM 201 H MOL 1 8.164 2.326 3.702 0.00 0.00 H +ATOM 202 H MOL 1 2.094 0.204 8.780 0.00 0.00 H +ATOM 203 O MOL 1 3.035 0.258 8.780 0.00 0.00 O +ATOM 204 H MOL 1 3.210 -0.669 8.780 0.00 0.00 H +ATOM 205 H MOL 1 6.427 6.710 13.409 0.00 0.00 H +ATOM 206 O MOL 1 7.368 6.765 13.409 0.00 0.00 O +ATOM 207 H MOL 1 7.543 5.838 13.409 0.00 0.00 H +ATOM 208 H MOL 1 4.534 6.437 9.463 0.00 0.00 H +ATOM 209 O MOL 1 5.476 6.491 9.463 0.00 0.00 O +ATOM 210 H MOL 1 5.651 5.565 9.463 0.00 0.00 H +ATOM 211 H MOL 1 2.755 13.902 4.044 0.00 0.00 H +ATOM 212 O MOL 1 3.697 13.957 4.044 0.00 0.00 O +ATOM 213 H MOL 1 3.872 13.030 4.044 0.00 0.00 H +ATOM 214 H MOL 1 3.647 9.025 13.044 0.00 0.00 H +ATOM 215 O MOL 1 4.589 9.080 13.044 0.00 0.00 O +ATOM 216 H MOL 1 4.764 8.153 13.044 0.00 0.00 H +ATOM 217 H MOL 1 2.475 1.170 14.119 0.00 0.00 H +ATOM 218 O MOL 1 3.416 1.224 14.119 0.00 0.00 O +ATOM 219 H MOL 1 3.592 0.298 14.119 0.00 0.00 H +ATOM 220 H MOL 1 9.573 10.933 2.915 0.00 0.00 H +ATOM 221 O MOL 1 10.514 10.988 2.915 0.00 0.00 O +ATOM 222 H MOL 1 10.689 10.061 2.915 0.00 0.00 H +ATOM 223 H MOL 1 6.960 10.953 7.307 0.00 0.00 H +ATOM 224 O MOL 1 7.901 11.007 7.307 0.00 0.00 O +ATOM 225 H MOL 1 8.076 10.080 7.307 0.00 0.00 H +ATOM 226 H MOL 1 12.713 4.501 0.595 0.00 0.00 H +ATOM 227 O MOL 1 13.655 4.555 0.595 0.00 0.00 O +ATOM 228 H MOL 1 13.830 3.628 0.595 0.00 0.00 H +ATOM 229 H MOL 1 13.212 11.633 13.218 0.00 0.00 H +ATOM 230 O MOL 1 14.154 11.687 13.218 0.00 0.00 O +ATOM 231 H MOL 1 14.329 10.761 13.218 0.00 0.00 H +ATOM 232 H MOL 1 11.861 13.431 11.502 0.00 0.00 H +ATOM 233 O MOL 1 12.803 13.485 11.502 0.00 0.00 O +ATOM 234 H MOL 1 12.978 12.558 11.502 0.00 0.00 H +ATOM 235 H MOL 1 9.400 8.430 13.259 0.00 0.00 H +ATOM 236 O MOL 1 10.342 8.485 13.259 0.00 0.00 O +ATOM 237 H MOL 1 10.517 7.558 13.259 0.00 0.00 H +ATOM 238 H MOL 1 2.820 1.799 5.389 0.00 0.00 H +ATOM 239 O MOL 1 3.762 1.854 5.389 0.00 0.00 O +ATOM 240 H MOL 1 3.937 0.927 5.389 0.00 0.00 H +ATOM 241 H MOL 1 9.302 11.302 5.371 0.00 0.00 H +ATOM 242 O MOL 1 10.244 11.357 5.371 0.00 0.00 O +ATOM 243 H MOL 1 10.419 10.430 5.371 0.00 0.00 H +ATOM 244 H MOL 1 7.076 12.436 12.400 0.00 0.00 H +ATOM 245 O MOL 1 8.017 12.491 12.400 0.00 0.00 O +ATOM 246 H MOL 1 8.192 11.564 12.400 0.00 0.00 H +ATOM 247 H MOL 1 0.564 8.190 0.846 0.00 0.00 H +ATOM 248 O MOL 1 1.505 8.245 0.846 0.00 0.00 O +ATOM 249 H MOL 1 1.680 7.318 0.846 0.00 0.00 H +ATOM 250 H MOL 1 7.010 11.136 9.638 0.00 0.00 H +ATOM 251 O MOL 1 7.952 11.191 9.638 0.00 0.00 O +ATOM 252 H MOL 1 8.127 10.264 9.638 0.00 0.00 H +ATOM 253 H MOL 1 9.268 5.723 3.606 0.00 0.00 H +ATOM 254 O MOL 1 10.209 5.777 3.606 0.00 0.00 O +ATOM 255 H MOL 1 10.384 4.850 3.606 0.00 0.00 H +ATOM 256 H MOL 1 13.390 10.203 4.472 0.00 0.00 H +ATOM 257 O MOL 1 14.332 10.257 4.472 0.00 0.00 O +ATOM 258 H MOL 1 14.507 9.330 4.472 0.00 0.00 H +ATOM 259 H MOL 1 3.876 5.191 11.945 0.00 0.00 H +ATOM 260 O MOL 1 4.818 5.246 11.945 0.00 0.00 O +ATOM 261 H MOL 1 4.993 4.319 11.945 0.00 0.00 H +ATOM 262 H MOL 1 6.226 6.828 11.264 0.00 0.00 H +ATOM 263 O MOL 1 7.167 6.882 11.264 0.00 0.00 O +ATOM 264 H MOL 1 7.342 5.955 11.264 0.00 0.00 H +ATOM 265 H MOL 1 3.202 9.766 3.900 0.00 0.00 H +ATOM 266 O MOL 1 4.143 9.821 3.900 0.00 0.00 O +ATOM 267 H MOL 1 4.318 8.894 3.900 0.00 0.00 H +ATOM 268 H MOL 1 12.942 5.592 4.532 0.00 0.00 H +ATOM 269 O MOL 1 13.884 5.646 4.532 0.00 0.00 O +ATOM 270 H MOL 1 14.059 4.719 4.532 0.00 0.00 H +ATOM 271 H MOL 1 4.341 9.628 9.004 0.00 0.00 H +ATOM 272 O MOL 1 5.282 9.682 9.004 0.00 0.00 O +ATOM 273 H MOL 1 5.458 8.755 9.004 0.00 0.00 H +ATOM 274 H MOL 1 13.274 13.142 3.549 0.00 0.00 H +ATOM 275 O MOL 1 14.216 13.197 3.549 0.00 0.00 O +ATOM 276 H MOL 1 14.391 12.270 3.549 0.00 0.00 H +ATOM 277 H MOL 1 3.276 6.152 7.287 0.00 0.00 H +ATOM 278 O MOL 1 4.217 6.206 7.287 0.00 0.00 O +ATOM 279 H MOL 1 4.392 5.279 7.287 0.00 0.00 H +ATOM 280 H MOL 1 6.608 12.279 4.127 0.00 0.00 H +ATOM 281 O MOL 1 7.550 12.333 4.127 0.00 0.00 O +ATOM 282 H MOL 1 7.725 11.406 4.127 0.00 0.00 H +ATOM 283 H MOL 1 14.089 2.765 8.432 0.00 0.00 H +ATOM 284 O MOL 1 15.031 2.819 8.432 0.00 0.00 O +ATOM 285 H MOL 1 15.206 1.892 8.432 0.00 0.00 H +ATOM 286 H MOL 1 12.247 0.859 8.664 0.00 0.00 H +ATOM 287 O MOL 1 13.188 0.913 8.664 0.00 0.00 O +ATOM 288 H MOL 1 13.363 -0.014 8.664 0.00 0.00 H +ATOM 289 H MOL 1 4.467 13.517 1.951 0.00 0.00 H +ATOM 290 O MOL 1 5.409 13.571 1.951 0.00 0.00 O +ATOM 291 H MOL 1 5.584 12.645 1.951 0.00 0.00 H +ATOM 292 H MOL 1 14.342 0.329 12.432 0.00 0.00 H +ATOM 293 O MOL 1 15.283 0.384 12.432 0.00 0.00 O +ATOM 294 H MOL 1 15.459 -0.543 12.432 0.00 0.00 H +ATOM 295 H MOL 1 11.322 2.305 0.943 0.00 0.00 H +ATOM 296 O MOL 1 12.263 2.360 0.943 0.00 0.00 O +ATOM 297 H MOL 1 12.438 1.433 0.943 0.00 0.00 H +ATOM 298 H MOL 1 7.319 4.026 10.612 0.00 0.00 H +ATOM 299 O MOL 1 8.261 4.081 10.612 0.00 0.00 O +ATOM 300 H MOL 1 8.436 3.154 10.612 0.00 0.00 H +TER +END diff --git a/examples/latte_interface_energy_forces/coords_1299.pdb b/examples/latte_interface_energy_forces/coords_1299.pdb new file mode 100644 index 00000000..55d5d1ad --- /dev/null +++ b/examples/latte_interface_energy_forces/coords_1299.pdb @@ -0,0 +1,1305 @@ +TITLE Built with Packmol +REMARK Packmol generated pdb file +CRYST1 40.230 40.230 40.230 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H HOH 0 24.812 22.184 19.109 1.00 0.00 H +ATOM 2 O HOH 1 24.014 22.044 19.696 1.00 0.00 O +ATOM 3 H HOH 0 23.492 21.337 19.219 1.00 0.00 H +ATOM 4 OW SOL 1 17.915 12.852 12.888 1.00 0.00 O +ATOM 5 HW1 SOL 1 18.247 13.543 12.247 1.00 0.00 H +ATOM 6 HW2 SOL 1 17.565 12.128 12.294 1.00 0.00 H +ATOM 7 OW SOL 2 17.524 28.252 22.152 1.00 0.00 O +ATOM 8 HW1 SOL 2 17.842 29.134 21.806 1.00 0.00 H +ATOM 9 HW2 SOL 2 16.749 28.493 22.736 1.00 0.00 H +ATOM 10 OW SOL 3 18.272 22.452 8.081 1.00 0.00 O +ATOM 11 HW1 SOL 3 18.633 21.922 8.848 1.00 0.00 H +ATOM 12 HW2 SOL 3 17.651 21.814 7.625 1.00 0.00 H +ATOM 13 OW SOL 4 22.430 24.527 31.340 1.00 0.00 O +ATOM 14 HW1 SOL 4 22.675 23.743 31.910 1.00 0.00 H +ATOM 15 HW2 SOL 4 22.090 25.200 31.998 1.00 0.00 H +ATOM 16 OW SOL 5 25.090 23.960 22.405 1.00 0.00 O +ATOM 17 HW1 SOL 5 24.836 23.682 21.479 1.00 0.00 H +ATOM 18 HW2 SOL 5 26.000 23.563 22.529 1.00 0.00 H +ATOM 19 OW SOL 6 24.774 20.640 26.519 1.00 0.00 O +ATOM 20 HW1 SOL 6 24.293 19.797 26.761 1.00 0.00 H +ATOM 21 HW2 SOL 6 24.915 21.092 27.400 1.00 0.00 H +ATOM 22 OW SOL 7 26.990 22.203 21.118 1.00 0.00 O +ATOM 23 HW1 SOL 7 26.249 21.867 21.698 1.00 0.00 H +ATOM 24 HW2 SOL 7 26.681 23.114 20.845 1.00 0.00 H +ATOM 25 OW SOL 8 6.883 20.799 22.990 1.00 0.00 O +ATOM 26 HW1 SOL 8 7.731 20.467 23.403 1.00 0.00 H +ATOM 27 HW2 SOL 8 6.530 21.448 23.664 1.00 0.00 H +ATOM 28 OW SOL 9 22.196 12.513 19.542 1.00 0.00 O +ATOM 29 HW1 SOL 9 21.895 11.768 20.137 1.00 0.00 H +ATOM 30 HW2 SOL 9 22.528 13.206 20.181 1.00 0.00 H +ATOM 31 OW SOL 10 24.367 14.196 27.807 1.00 0.00 O +ATOM 32 HW1 SOL 10 24.759 13.864 26.949 1.00 0.00 H +ATOM 33 HW2 SOL 10 25.039 14.862 28.132 1.00 0.00 H +ATOM 34 OW SOL 11 9.054 23.271 16.103 1.00 0.00 O +ATOM 35 HW1 SOL 11 9.000 23.179 15.109 1.00 0.00 H +ATOM 36 HW2 SOL 11 10.012 23.068 16.307 1.00 0.00 H +ATOM 37 OW SOL 12 13.728 24.315 29.715 1.00 0.00 O +ATOM 38 HW1 SOL 12 14.398 24.828 29.178 1.00 0.00 H +ATOM 39 HW2 SOL 12 13.236 23.780 29.028 1.00 0.00 H +ATOM 40 OW SOL 13 14.471 25.164 21.554 1.00 0.00 O +ATOM 41 HW1 SOL 13 14.885 25.186 22.464 1.00 0.00 H +ATOM 42 HW2 SOL 13 13.759 25.864 21.602 1.00 0.00 H +ATOM 43 OW SOL 14 26.294 31.275 22.228 1.00 0.00 O +ATOM 44 HW1 SOL 14 26.728 31.339 23.126 1.00 0.00 H +ATOM 45 HW2 SOL 14 26.431 30.319 21.968 1.00 0.00 H +ATOM 46 OW SOL 15 26.994 11.521 25.850 1.00 0.00 O +ATOM 47 HW1 SOL 15 26.171 11.436 25.288 1.00 0.00 H +ATOM 48 HW2 SOL 15 27.117 12.509 25.940 1.00 0.00 H +ATOM 49 OW SOL 16 16.539 28.602 27.834 1.00 0.00 O +ATOM 50 HW1 SOL 16 15.693 28.079 27.733 1.00 0.00 H +ATOM 51 HW2 SOL 16 16.972 28.525 26.936 1.00 0.00 H +ATOM 52 OW SOL 17 22.819 23.562 21.747 1.00 0.00 O +ATOM 53 HW1 SOL 17 23.183 24.097 22.509 1.00 0.00 H +ATOM 54 HW2 SOL 17 22.769 22.633 22.114 1.00 0.00 H +ATOM 55 OW SOL 18 19.599 24.838 14.635 1.00 0.00 O +ATOM 56 HW1 SOL 18 20.294 25.205 14.016 1.00 0.00 H +ATOM 57 HW2 SOL 18 18.904 24.470 14.018 1.00 0.00 H +ATOM 58 OW SOL 19 11.460 21.896 29.300 1.00 0.00 O +ATOM 59 HW1 SOL 19 12.202 22.159 29.917 1.00 0.00 H +ATOM 60 HW2 SOL 19 10.878 21.312 29.867 1.00 0.00 H +ATOM 61 OW SOL 20 13.460 8.606 19.737 1.00 0.00 O +ATOM 62 HW1 SOL 20 13.490 8.653 20.735 1.00 0.00 H +ATOM 63 HW2 SOL 20 13.017 7.729 19.555 1.00 0.00 H +ATOM 64 OW SOL 21 26.689 19.633 27.144 1.00 0.00 O +ATOM 65 HW1 SOL 21 25.881 19.410 27.689 1.00 0.00 H +ATOM 66 HW2 SOL 21 27.282 20.115 27.789 1.00 0.00 H +ATOM 67 OW SOL 22 12.680 24.355 15.838 1.00 0.00 O +ATOM 68 HW1 SOL 22 12.330 25.241 16.143 1.00 0.00 H +ATOM 69 HW2 SOL 22 13.173 24.574 14.996 1.00 0.00 H +ATOM 70 OW SOL 23 17.500 25.332 29.830 1.00 0.00 O +ATOM 71 HW1 SOL 23 18.055 26.125 29.579 1.00 0.00 H +ATOM 72 HW2 SOL 23 18.141 24.567 29.772 1.00 0.00 H +ATOM 73 OW SOL 24 24.609 7.817 20.898 1.00 0.00 O +ATOM 74 HW1 SOL 24 25.282 8.251 21.495 1.00 0.00 H +ATOM 75 HW2 SOL 24 23.751 7.908 21.404 1.00 0.00 H +ATOM 76 OW SOL 25 19.438 10.285 16.542 1.00 0.00 O +ATOM 77 HW1 SOL 25 18.832 10.543 15.790 1.00 0.00 H +ATOM 78 HW2 SOL 25 18.857 9.725 17.132 1.00 0.00 H +ATOM 79 OW SOL 26 11.378 19.670 24.247 1.00 0.00 O +ATOM 80 HW1 SOL 26 12.271 19.520 24.670 1.00 0.00 H +ATOM 81 HW2 SOL 26 11.565 20.341 23.530 1.00 0.00 H +ATOM 82 OW SOL 27 19.982 33.490 17.847 1.00 0.00 O +ATOM 83 HW1 SOL 27 20.767 33.113 18.339 1.00 0.00 H +ATOM 84 HW2 SOL 27 19.790 34.344 18.330 1.00 0.00 H +ATOM 85 OW SOL 28 16.937 23.412 19.668 1.00 0.00 O +ATOM 86 HW1 SOL 28 16.821 22.419 19.661 1.00 0.00 H +ATOM 87 HW2 SOL 28 17.719 23.554 20.275 1.00 0.00 H +ATOM 88 OW SOL 29 27.579 22.373 10.254 1.00 0.00 O +ATOM 89 HW1 SOL 29 28.063 21.629 9.795 1.00 0.00 H +ATOM 90 HW2 SOL 29 26.978 22.738 9.543 1.00 0.00 H +ATOM 91 OW SOL 30 12.743 19.748 16.777 1.00 0.00 O +ATOM 92 HW1 SOL 30 12.101 19.822 16.015 1.00 0.00 H +ATOM 93 HW2 SOL 30 13.630 19.635 16.329 1.00 0.00 H +ATOM 94 OW SOL 31 22.687 17.370 21.870 1.00 0.00 O +ATOM 95 HW1 SOL 31 23.080 16.659 22.453 1.00 0.00 H +ATOM 96 HW2 SOL 31 22.590 18.152 22.485 1.00 0.00 H +ATOM 97 OW SOL 32 22.513 10.240 16.651 1.00 0.00 O +ATOM 98 HW1 SOL 32 22.192 10.135 17.592 1.00 0.00 H +ATOM 99 HW2 SOL 32 22.854 11.179 16.622 1.00 0.00 H +ATOM 100 OW SOL 33 10.472 16.762 13.933 1.00 0.00 O +ATOM 101 HW1 SOL 33 9.659 16.888 14.501 1.00 0.00 H +ATOM 102 HW2 SOL 33 10.489 15.777 13.761 1.00 0.00 H +ATOM 103 OW SOL 34 24.723 25.943 21.674 1.00 0.00 O +ATOM 104 HW1 SOL 34 23.754 25.698 21.658 1.00 0.00 H +ATOM 105 HW2 SOL 34 24.933 26.139 20.717 1.00 0.00 H +ATOM 106 OW SOL 35 8.848 23.597 22.834 1.00 0.00 O +ATOM 107 HW1 SOL 35 8.137 23.529 23.534 1.00 0.00 H +ATOM 108 HW2 SOL 35 8.911 22.667 22.471 1.00 0.00 H +ATOM 109 OW SOL 36 25.003 14.221 21.630 1.00 0.00 O +ATOM 110 HW1 SOL 36 25.360 13.898 22.506 1.00 0.00 H +ATOM 111 HW2 SOL 36 25.075 15.216 21.699 1.00 0.00 H +ATOM 112 OW SOL 37 17.024 25.204 21.412 1.00 0.00 O +ATOM 113 HW1 SOL 37 17.045 26.028 20.846 1.00 0.00 H +ATOM 114 HW2 SOL 37 16.331 24.633 20.973 1.00 0.00 H +ATOM 115 OW SOL 38 21.145 21.407 11.963 1.00 0.00 O +ATOM 116 HW1 SOL 38 20.834 22.357 11.979 1.00 0.00 H +ATOM 117 HW2 SOL 38 21.433 21.237 12.905 1.00 0.00 H +ATOM 118 OW SOL 39 22.328 19.648 17.502 1.00 0.00 O +ATOM 119 HW1 SOL 39 21.950 18.759 17.242 1.00 0.00 H +ATOM 120 HW2 SOL 39 22.819 19.945 16.683 1.00 0.00 H +ATOM 121 OW SOL 40 31.232 18.191 16.282 1.00 0.00 O +ATOM 122 HW1 SOL 40 30.255 18.039 16.436 1.00 0.00 H +ATOM 123 HW2 SOL 40 31.500 17.427 15.695 1.00 0.00 H +ATOM 124 OW SOL 41 20.472 22.025 28.044 1.00 0.00 O +ATOM 125 HW1 SOL 41 19.910 21.201 28.114 1.00 0.00 H +ATOM 126 HW2 SOL 41 21.206 21.867 28.705 1.00 0.00 H +ATOM 127 OW SOL 42 29.525 27.024 26.006 1.00 0.00 O +ATOM 128 HW1 SOL 42 29.545 26.084 25.664 1.00 0.00 H +ATOM 129 HW2 SOL 42 30.425 27.384 25.760 1.00 0.00 H +ATOM 130 OW SOL 43 12.572 19.293 19.563 1.00 0.00 O +ATOM 131 HW1 SOL 43 12.235 19.147 18.633 1.00 0.00 H +ATOM 132 HW2 SOL 43 13.127 20.121 19.486 1.00 0.00 H +ATOM 133 OW SOL 44 28.904 25.278 27.929 1.00 0.00 O +ATOM 134 HW1 SOL 44 29.793 25.123 27.500 1.00 0.00 H +ATOM 135 HW2 SOL 44 28.261 25.227 27.165 1.00 0.00 H +ATOM 136 OW SOL 45 18.890 24.136 9.158 1.00 0.00 O +ATOM 137 HW1 SOL 45 18.386 24.659 9.845 1.00 0.00 H +ATOM 138 HW2 SOL 45 19.809 24.063 9.544 1.00 0.00 H +ATOM 139 OW SOL 46 22.411 19.995 11.347 1.00 0.00 O +ATOM 140 HW1 SOL 46 22.844 19.382 10.686 1.00 0.00 H +ATOM 141 HW2 SOL 46 22.765 20.897 11.099 1.00 0.00 H +ATOM 142 OW SOL 47 15.126 24.616 8.500 1.00 0.00 O +ATOM 143 HW1 SOL 47 14.587 24.550 9.339 1.00 0.00 H +ATOM 144 HW2 SOL 47 14.440 24.578 7.774 1.00 0.00 H +ATOM 145 OW SOL 48 19.778 11.195 20.586 1.00 0.00 O +ATOM 146 HW1 SOL 48 19.350 12.051 20.295 1.00 0.00 H +ATOM 147 HW2 SOL 48 20.122 11.403 21.502 1.00 0.00 H +ATOM 148 OW SOL 49 14.611 23.092 15.349 1.00 0.00 O +ATOM 149 HW1 SOL 49 14.685 22.211 14.880 1.00 0.00 H +ATOM 150 HW2 SOL 49 15.054 22.928 16.230 1.00 0.00 H +ATOM 151 OW SOL 50 16.022 14.205 14.111 1.00 0.00 O +ATOM 152 HW1 SOL 50 15.842 15.127 14.455 1.00 0.00 H +ATOM 153 HW2 SOL 50 16.550 14.364 13.276 1.00 0.00 H +ATOM 154 OW SOL 51 30.145 24.475 24.408 1.00 0.00 O +ATOM 155 HW1 SOL 51 30.977 24.710 24.911 1.00 0.00 H +ATOM 156 HW2 SOL 51 29.480 24.281 25.129 1.00 0.00 H +ATOM 157 OW SOL 52 19.974 12.135 30.934 1.00 0.00 O +ATOM 158 HW1 SOL 52 19.765 11.696 31.808 1.00 0.00 H +ATOM 159 HW2 SOL 52 20.496 12.947 31.197 1.00 0.00 H +ATOM 160 OW SOL 53 27.407 10.681 16.793 1.00 0.00 O +ATOM 161 HW1 SOL 53 28.348 10.992 16.659 1.00 0.00 H +ATOM 162 HW2 SOL 53 27.414 9.747 16.436 1.00 0.00 H +ATOM 163 OW SOL 54 20.295 15.208 16.437 1.00 0.00 O +ATOM 164 HW1 SOL 54 20.039 14.270 16.202 1.00 0.00 H +ATOM 165 HW2 SOL 54 20.500 15.626 15.552 1.00 0.00 H +ATOM 166 OW SOL 55 20.140 14.679 26.490 1.00 0.00 O +ATOM 167 HW1 SOL 55 19.541 14.035 26.967 1.00 0.00 H +ATOM 168 HW2 SOL 55 20.592 15.175 27.231 1.00 0.00 H +ATOM 169 OW SOL 56 18.049 18.312 23.379 1.00 0.00 O +ATOM 170 HW1 SOL 56 17.709 18.188 22.447 1.00 0.00 H +ATOM 171 HW2 SOL 56 17.257 18.669 23.874 1.00 0.00 H +ATOM 172 OW SOL 57 23.087 28.689 17.079 1.00 0.00 O +ATOM 173 HW1 SOL 57 22.894 29.416 16.421 1.00 0.00 H +ATOM 174 HW2 SOL 57 22.180 28.392 17.375 1.00 0.00 H +ATOM 175 OW SOL 58 17.652 16.214 32.063 1.00 0.00 O +ATOM 176 HW1 SOL 58 17.465 16.870 31.332 1.00 0.00 H +ATOM 177 HW2 SOL 58 17.266 15.359 31.717 1.00 0.00 H +ATOM 178 OW SOL 59 10.164 21.661 24.153 1.00 0.00 O +ATOM 179 HW1 SOL 59 9.226 21.407 23.917 1.00 0.00 H +ATOM 180 HW2 SOL 59 10.548 21.978 23.286 1.00 0.00 H +ATOM 181 OW SOL 60 20.915 17.894 29.118 1.00 0.00 O +ATOM 182 HW1 SOL 60 20.640 18.563 28.429 1.00 0.00 H +ATOM 183 HW2 SOL 60 21.002 17.043 28.600 1.00 0.00 H +ATOM 184 OW SOL 61 17.367 26.246 23.017 1.00 0.00 O +ATOM 185 HW1 SOL 61 16.659 26.364 23.712 1.00 0.00 H +ATOM 186 HW2 SOL 61 18.116 25.808 23.515 1.00 0.00 H +ATOM 187 OW SOL 62 21.776 22.893 24.986 1.00 0.00 O +ATOM 188 HW1 SOL 62 21.561 22.185 24.313 1.00 0.00 H +ATOM 189 HW2 SOL 62 21.893 23.717 24.431 1.00 0.00 H +ATOM 190 OW SOL 63 25.728 14.610 30.886 1.00 0.00 O +ATOM 191 HW1 SOL 63 26.527 14.773 30.307 1.00 0.00 H +ATOM 192 HW2 SOL 63 25.225 13.898 30.398 1.00 0.00 H +ATOM 193 OW SOL 64 25.135 11.052 12.970 1.00 0.00 O +ATOM 194 HW1 SOL 64 25.032 10.506 12.139 1.00 0.00 H +ATOM 195 HW2 SOL 64 25.610 10.438 13.599 1.00 0.00 H +ATOM 196 OW SOL 65 21.134 31.228 16.691 1.00 0.00 O +ATOM 197 HW1 SOL 65 21.641 31.978 17.115 1.00 0.00 H +ATOM 198 HW2 SOL 65 20.392 31.050 17.337 1.00 0.00 H +ATOM 199 OW SOL 66 15.661 24.773 31.063 1.00 0.00 O +ATOM 200 HW1 SOL 66 15.729 24.124 30.306 1.00 0.00 H +ATOM 201 HW2 SOL 66 15.321 25.607 30.629 1.00 0.00 H +ATOM 202 OW SOL 67 25.005 27.999 10.964 1.00 0.00 O +ATOM 203 HW1 SOL 67 25.289 28.514 10.155 1.00 0.00 H +ATOM 204 HW2 SOL 67 24.617 27.159 10.584 1.00 0.00 H +ATOM 205 OW SOL 68 23.912 25.698 23.933 1.00 0.00 O +ATOM 206 HW1 SOL 68 23.423 25.068 24.535 1.00 0.00 H +ATOM 207 HW2 SOL 68 24.848 25.346 23.932 1.00 0.00 H +ATOM 208 OW SOL 69 7.050 20.594 15.260 1.00 0.00 O +ATOM 209 HW1 SOL 69 6.133 20.372 15.590 1.00 0.00 H +ATOM 210 HW2 SOL 69 7.033 21.590 15.169 1.00 0.00 H +ATOM 211 OW SOL 70 10.707 29.314 23.961 1.00 0.00 O +ATOM 212 HW1 SOL 70 10.092 28.529 24.042 1.00 0.00 H +ATOM 213 HW2 SOL 70 10.103 30.057 23.672 1.00 0.00 H +ATOM 214 OW SOL 71 20.974 26.571 12.738 1.00 0.00 O +ATOM 215 HW1 SOL 71 21.250 26.511 11.779 1.00 0.00 H +ATOM 216 HW2 SOL 71 20.503 27.452 12.792 1.00 0.00 H +ATOM 217 OW SOL 72 19.050 11.882 24.746 1.00 0.00 O +ATOM 218 HW1 SOL 72 18.512 11.125 24.374 1.00 0.00 H +ATOM 219 HW2 SOL 72 19.945 11.769 24.315 1.00 0.00 H +ATOM 220 OW SOL 73 16.829 19.778 32.330 1.00 0.00 O +ATOM 221 HW1 SOL 73 16.123 20.115 32.953 1.00 0.00 H +ATOM 222 HW2 SOL 73 17.160 20.606 31.878 1.00 0.00 H +ATOM 223 OW SOL 74 27.194 11.819 10.655 1.00 0.00 O +ATOM 224 HW1 SOL 74 27.283 11.033 11.266 1.00 0.00 H +ATOM 225 HW2 SOL 74 26.907 12.560 11.262 1.00 0.00 H +ATOM 226 OW SOL 75 9.143 26.922 18.015 1.00 0.00 O +ATOM 227 HW1 SOL 75 9.732 26.265 18.486 1.00 0.00 H +ATOM 228 HW2 SOL 75 8.240 26.494 18.047 1.00 0.00 H +ATOM 229 OW SOL 76 24.798 18.634 30.721 1.00 0.00 O +ATOM 230 HW1 SOL 76 24.248 18.074 30.101 1.00 0.00 H +ATOM 231 HW2 SOL 76 25.641 18.795 30.208 1.00 0.00 H +ATOM 232 OW SOL 77 19.713 11.078 9.455 1.00 0.00 O +ATOM 233 HW1 SOL 77 19.886 10.367 10.137 1.00 0.00 H +ATOM 234 HW2 SOL 77 19.629 11.912 10.000 1.00 0.00 H +ATOM 235 OW SOL 78 19.949 16.434 18.234 1.00 0.00 O +ATOM 236 HW1 SOL 78 20.849 16.785 17.978 1.00 0.00 H +ATOM 237 HW2 SOL 78 19.360 16.720 17.479 1.00 0.00 H +ATOM 238 OW SOL 79 26.100 20.094 24.860 1.00 0.00 O +ATOM 239 HW1 SOL 79 25.929 20.125 23.875 1.00 0.00 H +ATOM 240 HW2 SOL 79 27.079 19.902 24.923 1.00 0.00 H +ATOM 241 OW SOL 80 28.245 23.176 16.401 1.00 0.00 O +ATOM 242 HW1 SOL 80 29.089 23.075 16.928 1.00 0.00 H +ATOM 243 HW2 SOL 80 27.898 22.241 16.330 1.00 0.00 H +ATOM 244 OW SOL 81 23.429 7.658 15.115 1.00 0.00 O +ATOM 245 HW1 SOL 81 23.809 7.098 14.379 1.00 0.00 H +ATOM 246 HW2 SOL 81 22.872 8.334 14.633 1.00 0.00 H +ATOM 247 OW SOL 82 10.552 26.955 16.715 1.00 0.00 O +ATOM 248 HW1 SOL 82 10.884 27.105 15.784 1.00 0.00 H +ATOM 249 HW2 SOL 82 10.537 27.873 17.111 1.00 0.00 H +ATOM 250 OW SOL 83 16.927 19.868 15.041 1.00 0.00 O +ATOM 251 HW1 SOL 83 17.297 20.069 14.134 1.00 0.00 H +ATOM 252 HW2 SOL 83 17.447 19.066 15.335 1.00 0.00 H +ATOM 253 OW SOL 84 13.998 26.748 24.005 1.00 0.00 O +ATOM 254 HW1 SOL 84 13.596 25.972 23.519 1.00 0.00 H +ATOM 255 HW2 SOL 84 13.297 27.458 23.937 1.00 0.00 H +ATOM 256 OW SOL 85 14.352 31.295 25.838 1.00 0.00 O +ATOM 257 HW1 SOL 85 13.403 31.109 25.586 1.00 0.00 H +ATOM 258 HW2 SOL 85 14.735 31.719 25.018 1.00 0.00 H +ATOM 259 OW SOL 86 25.245 18.847 22.053 1.00 0.00 O +ATOM 260 HW1 SOL 86 24.739 19.112 22.874 1.00 0.00 H +ATOM 261 HW2 SOL 86 24.714 18.083 21.686 1.00 0.00 H +ATOM 262 OW SOL 87 18.110 19.707 19.148 1.00 0.00 O +ATOM 263 HW1 SOL 87 18.008 20.702 19.124 1.00 0.00 H +ATOM 264 HW2 SOL 87 17.670 19.405 18.303 1.00 0.00 H +ATOM 265 OW SOL 88 18.407 29.100 15.428 1.00 0.00 O +ATOM 266 HW1 SOL 88 17.629 28.693 15.907 1.00 0.00 H +ATOM 267 HW2 SOL 88 18.057 29.264 14.506 1.00 0.00 H +ATOM 268 OW SOL 89 21.496 27.940 30.924 1.00 0.00 O +ATOM 269 HW1 SOL 89 22.219 28.126 31.589 1.00 0.00 H +ATOM 270 HW2 SOL 89 21.009 27.160 31.317 1.00 0.00 H +ATOM 271 OW SOL 90 21.396 23.151 19.398 1.00 0.00 O +ATOM 272 HW1 SOL 90 22.203 22.959 18.839 1.00 0.00 H +ATOM 273 HW2 SOL 90 21.351 24.150 19.414 1.00 0.00 H +ATOM 274 OW SOL 91 32.625 27.206 21.159 1.00 0.00 O +ATOM 275 HW1 SOL 91 32.437 26.355 21.649 1.00 0.00 H +ATOM 276 HW2 SOL 91 31.757 27.700 21.202 1.00 0.00 H +ATOM 277 OW SOL 92 28.432 18.158 21.287 1.00 0.00 O +ATOM 278 HW1 SOL 92 28.045 18.046 20.373 1.00 0.00 H +ATOM 279 HW2 SOL 92 27.657 17.989 21.895 1.00 0.00 H +ATOM 280 OW SOL 93 21.854 13.532 15.062 1.00 0.00 O +ATOM 281 HW1 SOL 93 22.622 14.072 15.406 1.00 0.00 H +ATOM 282 HW2 SOL 93 21.496 13.083 15.881 1.00 0.00 H +ATOM 283 OW SOL 94 24.782 18.353 11.187 1.00 0.00 O +ATOM 284 HW1 SOL 94 25.623 17.860 10.966 1.00 0.00 H +ATOM 285 HW2 SOL 94 24.721 19.048 10.471 1.00 0.00 H +ATOM 286 OW SOL 95 18.737 27.913 27.854 1.00 0.00 O +ATOM 287 HW1 SOL 95 19.078 27.134 28.380 1.00 0.00 H +ATOM 288 HW2 SOL 95 18.398 28.541 28.555 1.00 0.00 H +ATOM 289 OW SOL 96 18.869 14.640 29.839 1.00 0.00 O +ATOM 290 HW1 SOL 96 17.889 14.819 29.925 1.00 0.00 H +ATOM 291 HW2 SOL 96 19.162 14.476 30.781 1.00 0.00 H +ATOM 292 OW SOL 97 15.633 29.145 19.667 1.00 0.00 O +ATOM 293 HW1 SOL 97 16.374 28.912 20.297 1.00 0.00 H +ATOM 294 HW2 SOL 97 14.874 29.383 20.273 1.00 0.00 H +ATOM 295 OW SOL 98 17.231 13.661 27.274 1.00 0.00 O +ATOM 296 HW1 SOL 98 17.386 14.182 28.113 1.00 0.00 H +ATOM 297 HW2 SOL 98 17.027 12.739 27.603 1.00 0.00 H +ATOM 298 OW SOL 99 22.474 9.875 11.065 1.00 0.00 O +ATOM 299 HW1 SOL 99 22.471 10.847 10.828 1.00 0.00 H +ATOM 300 HW2 SOL 99 23.197 9.495 10.488 1.00 0.00 H +ATOM 301 OW SOL 100 9.546 17.626 27.369 1.00 0.00 O +ATOM 302 HW1 SOL 100 9.197 18.507 27.050 1.00 0.00 H +ATOM 303 HW2 SOL 100 9.858 17.179 26.530 1.00 0.00 H +ATOM 304 OW SOL 101 29.435 20.599 25.289 1.00 0.00 O +ATOM 305 HW1 SOL 101 29.100 21.122 24.506 1.00 0.00 H +ATOM 306 HW2 SOL 101 29.952 19.852 24.871 1.00 0.00 H +ATOM 307 OW SOL 102 16.859 24.623 17.953 1.00 0.00 O +ATOM 308 HW1 SOL 102 16.278 24.398 17.171 1.00 0.00 H +ATOM 309 HW2 SOL 102 17.749 24.814 17.538 1.00 0.00 H +ATOM 310 OW SOL 103 22.411 17.494 8.922 1.00 0.00 O +ATOM 311 HW1 SOL 103 22.525 17.755 7.964 1.00 0.00 H +ATOM 312 HW2 SOL 103 23.034 16.721 9.033 1.00 0.00 H +ATOM 313 OW SOL 104 27.718 17.918 18.028 1.00 0.00 O +ATOM 314 HW1 SOL 104 27.794 18.719 18.621 1.00 0.00 H +ATOM 315 HW2 SOL 104 26.973 17.390 18.437 1.00 0.00 H +ATOM 316 OW SOL 105 19.428 28.867 22.791 1.00 0.00 O +ATOM 317 HW1 SOL 105 20.268 29.090 23.285 1.00 0.00 H +ATOM 318 HW2 SOL 105 18.738 28.811 23.513 1.00 0.00 H +ATOM 319 OW SOL 106 10.198 24.333 21.376 1.00 0.00 O +ATOM 320 HW1 SOL 106 10.435 23.555 21.958 1.00 0.00 H +ATOM 321 HW2 SOL 106 10.262 25.117 21.992 1.00 0.00 H +ATOM 322 OW SOL 107 22.196 18.465 31.449 1.00 0.00 O +ATOM 323 HW1 SOL 107 22.006 17.752 30.774 1.00 0.00 H +ATOM 324 HW2 SOL 107 22.312 19.289 30.895 1.00 0.00 H +ATOM 325 OW SOL 108 19.177 16.695 28.844 1.00 0.00 O +ATOM 326 HW1 SOL 108 18.541 17.348 29.254 1.00 0.00 H +ATOM 327 HW2 SOL 108 18.616 16.205 28.178 1.00 0.00 H +ATOM 328 OW SOL 109 14.256 13.056 21.586 1.00 0.00 O +ATOM 329 HW1 SOL 109 14.417 12.261 21.002 1.00 0.00 H +ATOM 330 HW2 SOL 109 13.308 13.307 21.387 1.00 0.00 H +ATOM 331 OW SOL 110 19.769 17.841 19.874 1.00 0.00 O +ATOM 332 HW1 SOL 110 20.206 17.669 20.757 1.00 0.00 H +ATOM 333 HW2 SOL 110 18.942 18.349 20.116 1.00 0.00 H +ATOM 334 OW SOL 111 19.177 24.021 24.409 1.00 0.00 O +ATOM 335 HW1 SOL 111 18.930 24.860 24.895 1.00 0.00 H +ATOM 336 HW2 SOL 111 19.348 23.365 25.144 1.00 0.00 H +ATOM 337 OW SOL 112 13.128 19.682 21.718 1.00 0.00 O +ATOM 338 HW1 SOL 112 12.916 20.560 21.288 1.00 0.00 H +ATOM 339 HW2 SOL 112 13.991 19.413 21.292 1.00 0.00 H +ATOM 340 OW SOL 113 24.265 10.766 24.493 1.00 0.00 O +ATOM 341 HW1 SOL 113 24.149 11.305 25.328 1.00 0.00 H +ATOM 342 HW2 SOL 113 24.889 10.035 24.769 1.00 0.00 H +ATOM 343 OW SOL 114 15.224 12.544 26.191 1.00 0.00 O +ATOM 344 HW1 SOL 114 14.815 12.639 25.284 1.00 0.00 H +ATOM 345 HW2 SOL 114 15.905 11.822 26.067 1.00 0.00 H +ATOM 346 OW SOL 115 16.171 28.128 25.166 1.00 0.00 O +ATOM 347 HW1 SOL 115 15.398 28.548 25.641 1.00 0.00 H +ATOM 348 HW2 SOL 115 16.066 27.153 25.360 1.00 0.00 H +ATOM 349 OW SOL 116 16.179 7.973 18.838 1.00 0.00 O +ATOM 350 HW1 SOL 116 15.811 8.610 19.516 1.00 0.00 H +ATOM 351 HW2 SOL 116 17.002 7.611 19.277 1.00 0.00 H +ATOM 352 OW SOL 117 14.860 10.741 22.956 1.00 0.00 O +ATOM 353 HW1 SOL 117 14.672 10.505 22.002 1.00 0.00 H +ATOM 354 HW2 SOL 117 14.057 11.269 23.231 1.00 0.00 H +ATOM 355 OW SOL 118 20.264 22.364 7.812 1.00 0.00 O +ATOM 356 HW1 SOL 118 20.097 22.151 6.850 1.00 0.00 H +ATOM 357 HW2 SOL 118 21.123 21.893 8.013 1.00 0.00 H +ATOM 358 OW SOL 119 14.432 13.841 28.501 1.00 0.00 O +ATOM 359 HW1 SOL 119 14.895 13.802 27.616 1.00 0.00 H +ATOM 360 HW2 SOL 119 13.754 13.108 28.445 1.00 0.00 H +ATOM 361 OW SOL 120 23.949 28.612 28.421 1.00 0.00 O +ATOM 362 HW1 SOL 120 23.700 29.051 29.285 1.00 0.00 H +ATOM 363 HW2 SOL 120 23.114 28.673 27.876 1.00 0.00 H +ATOM 364 OW SOL 121 24.860 26.234 15.593 1.00 0.00 O +ATOM 365 HW1 SOL 121 24.021 26.709 15.327 1.00 0.00 H +ATOM 366 HW2 SOL 121 24.678 25.941 16.531 1.00 0.00 H +ATOM 367 OW SOL 122 13.994 20.898 31.066 1.00 0.00 O +ATOM 368 HW1 SOL 122 14.720 21.484 30.705 1.00 0.00 H +ATOM 369 HW2 SOL 122 14.403 20.493 31.884 1.00 0.00 H +ATOM 370 OW SOL 123 19.763 31.059 19.445 1.00 0.00 O +ATOM 371 HW1 SOL 123 18.818 31.118 19.767 1.00 0.00 H +ATOM 372 HW2 SOL 123 20.274 30.793 20.262 1.00 0.00 H +ATOM 373 OW SOL 124 15.319 22.439 27.337 1.00 0.00 O +ATOM 374 HW1 SOL 124 15.956 23.111 27.716 1.00 0.00 H +ATOM 375 HW2 SOL 124 14.687 22.262 28.091 1.00 0.00 H +ATOM 376 OW SOL 125 22.320 32.061 22.179 1.00 0.00 O +ATOM 377 HW1 SOL 125 22.491 31.137 21.839 1.00 0.00 H +ATOM 378 HW2 SOL 125 22.019 32.560 21.367 1.00 0.00 H +ATOM 379 OW SOL 126 27.110 12.879 27.942 1.00 0.00 O +ATOM 380 HW1 SOL 126 26.163 12.568 27.865 1.00 0.00 H +ATOM 381 HW2 SOL 126 27.090 13.507 28.719 1.00 0.00 H +ATOM 382 OW SOL 127 9.308 20.552 15.865 1.00 0.00 O +ATOM 383 HW1 SOL 127 8.830 21.419 15.729 1.00 0.00 H +ATOM 384 HW2 SOL 127 9.870 20.716 16.675 1.00 0.00 H +ATOM 385 OW SOL 128 8.347 18.938 14.159 1.00 0.00 O +ATOM 386 HW1 SOL 128 9.293 18.804 13.864 1.00 0.00 H +ATOM 387 HW2 SOL 128 8.389 18.811 15.149 1.00 0.00 H +ATOM 388 OW SOL 129 24.213 29.125 21.625 1.00 0.00 O +ATOM 389 HW1 SOL 129 23.525 29.555 21.040 1.00 0.00 H +ATOM 390 HW2 SOL 129 25.014 29.053 21.031 1.00 0.00 H +ATOM 391 OW SOL 130 15.833 23.752 32.917 1.00 0.00 O +ATOM 392 HW1 SOL 130 14.936 24.157 32.743 1.00 0.00 H +ATOM 393 HW2 SOL 130 15.904 23.030 32.229 1.00 0.00 H +ATOM 394 OW SOL 131 16.075 23.397 13.754 1.00 0.00 O +ATOM 395 HW1 SOL 131 16.295 24.212 14.289 1.00 0.00 H +ATOM 396 HW2 SOL 131 16.944 22.904 13.705 1.00 0.00 H +ATOM 397 OW SOL 132 20.326 20.875 18.699 1.00 0.00 O +ATOM 398 HW1 SOL 132 20.765 21.712 18.372 1.00 0.00 H +ATOM 399 HW2 SOL 132 20.345 20.271 17.903 1.00 0.00 H +ATOM 400 OW SOL 133 9.929 15.192 16.898 1.00 0.00 O +ATOM 401 HW1 SOL 133 10.630 15.898 16.998 1.00 0.00 H +ATOM 402 HW2 SOL 133 9.460 15.197 17.781 1.00 0.00 H +ATOM 403 OW SOL 134 16.787 20.325 25.209 1.00 0.00 O +ATOM 404 HW1 SOL 134 16.624 20.233 26.192 1.00 0.00 H +ATOM 405 HW2 SOL 134 17.637 20.849 25.159 1.00 0.00 H +ATOM 406 OW SOL 135 17.520 21.373 23.048 1.00 0.00 O +ATOM 407 HW1 SOL 135 16.601 21.519 23.412 1.00 0.00 H +ATOM 408 HW2 SOL 135 17.589 22.039 22.305 1.00 0.00 H +ATOM 409 OW SOL 136 23.555 18.200 32.700 1.00 0.00 O +ATOM 410 HW1 SOL 136 23.865 19.126 32.915 1.00 0.00 H +ATOM 411 HW2 SOL 136 23.912 17.651 33.456 1.00 0.00 H +ATOM 412 OW SOL 137 23.805 17.377 24.654 1.00 0.00 O +ATOM 413 HW1 SOL 137 22.966 16.841 24.563 1.00 0.00 H +ATOM 414 HW2 SOL 137 24.198 17.057 25.515 1.00 0.00 H +ATOM 415 OW SOL 138 26.351 32.443 20.268 1.00 0.00 O +ATOM 416 HW1 SOL 138 25.929 32.467 19.362 1.00 0.00 H +ATOM 417 HW2 SOL 138 26.686 31.505 20.348 1.00 0.00 H +ATOM 418 OW SOL 139 29.387 20.828 17.230 1.00 0.00 O +ATOM 419 HW1 SOL 139 28.756 20.608 17.974 1.00 0.00 H +ATOM 420 HW2 SOL 139 29.627 19.934 16.852 1.00 0.00 H +ATOM 421 OW SOL 140 14.191 23.512 23.343 1.00 0.00 O +ATOM 422 HW1 SOL 140 14.176 23.411 22.348 1.00 0.00 H +ATOM 423 HW2 SOL 140 14.034 22.582 23.676 1.00 0.00 H +ATOM 424 OW SOL 141 15.756 15.625 22.699 1.00 0.00 O +ATOM 425 HW1 SOL 141 15.667 16.593 22.933 1.00 0.00 H +ATOM 426 HW2 SOL 141 15.942 15.186 23.577 1.00 0.00 H +ATOM 427 OW SOL 142 20.510 13.333 11.927 1.00 0.00 O +ATOM 428 HW1 SOL 142 20.283 14.306 11.925 1.00 0.00 H +ATOM 429 HW2 SOL 142 20.679 13.131 12.892 1.00 0.00 H +ATOM 430 OW SOL 143 24.585 21.862 22.891 1.00 0.00 O +ATOM 431 HW1 SOL 143 24.215 21.242 23.583 1.00 0.00 H +ATOM 432 HW2 SOL 143 24.284 21.457 22.027 1.00 0.00 H +ATOM 433 OW SOL 144 19.090 26.889 31.259 1.00 0.00 O +ATOM 434 HW1 SOL 144 18.787 27.543 30.565 1.00 0.00 H +ATOM 435 HW2 SOL 144 19.301 27.464 32.049 1.00 0.00 H +ATOM 436 OW SOL 145 7.500 15.159 18.426 1.00 0.00 O +ATOM 437 HW1 SOL 145 8.026 14.423 18.852 1.00 0.00 H +ATOM 438 HW2 SOL 145 7.359 15.810 19.171 1.00 0.00 H +ATOM 439 OW SOL 146 27.618 20.029 10.797 1.00 0.00 O +ATOM 440 HW1 SOL 146 28.084 19.652 9.998 1.00 0.00 H +ATOM 441 HW2 SOL 146 26.728 19.574 10.788 1.00 0.00 H +ATOM 442 OW SOL 147 11.282 12.159 12.611 1.00 0.00 O +ATOM 443 HW1 SOL 147 11.736 11.951 13.478 1.00 0.00 H +ATOM 444 HW2 SOL 147 10.338 11.869 12.764 1.00 0.00 H +ATOM 445 OW SOL 148 15.008 16.634 8.329 1.00 0.00 O +ATOM 446 HW1 SOL 148 14.565 17.240 8.990 1.00 0.00 H +ATOM 447 HW2 SOL 148 14.744 17.017 7.444 1.00 0.00 H +ATOM 448 OW SOL 149 29.329 17.460 13.545 1.00 0.00 O +ATOM 449 HW1 SOL 149 29.799 16.662 13.921 1.00 0.00 H +ATOM 450 HW2 SOL 149 29.197 18.052 14.340 1.00 0.00 H +ATOM 451 OW SOL 150 11.143 29.847 21.994 1.00 0.00 O +ATOM 452 HW1 SOL 150 11.288 29.066 21.386 1.00 0.00 H +ATOM 453 HW2 SOL 150 11.125 30.629 21.372 1.00 0.00 H +ATOM 454 OW SOL 151 12.115 21.477 18.277 1.00 0.00 O +ATOM 455 HW1 SOL 151 13.049 21.751 18.052 1.00 0.00 H +ATOM 456 HW2 SOL 151 11.688 21.338 17.383 1.00 0.00 H +ATOM 457 OW SOL 152 22.610 13.864 17.470 1.00 0.00 O +ATOM 458 HW1 SOL 152 22.705 12.875 17.359 1.00 0.00 H +ATOM 459 HW2 SOL 152 22.548 13.985 18.461 1.00 0.00 H +ATOM 460 OW SOL 153 29.100 16.537 16.520 1.00 0.00 O +ATOM 461 HW1 SOL 153 28.138 16.665 16.280 1.00 0.00 H +ATOM 462 HW2 SOL 153 29.337 15.667 16.089 1.00 0.00 H +ATOM 463 OW SOL 154 12.381 21.642 14.486 1.00 0.00 O +ATOM 464 HW1 SOL 154 13.077 20.974 14.750 1.00 0.00 H +ATOM 465 HW2 SOL 154 11.884 21.814 15.337 1.00 0.00 H +ATOM 466 OW SOL 155 31.757 13.163 21.010 1.00 0.00 O +ATOM 467 HW1 SOL 155 31.139 13.597 21.665 1.00 0.00 H +ATOM 468 HW2 SOL 155 32.466 12.758 21.587 1.00 0.00 H +ATOM 469 OW SOL 156 21.536 18.257 25.616 1.00 0.00 O +ATOM 470 HW1 SOL 156 21.932 18.565 26.481 1.00 0.00 H +ATOM 471 HW2 SOL 156 22.086 18.726 24.925 1.00 0.00 H +ATOM 472 OW SOL 157 20.543 27.375 25.907 1.00 0.00 O +ATOM 473 HW1 SOL 157 19.895 26.941 26.533 1.00 0.00 H +ATOM 474 HW2 SOL 157 21.169 27.861 26.515 1.00 0.00 H +ATOM 475 OW SOL 158 13.721 27.318 16.382 1.00 0.00 O +ATOM 476 HW1 SOL 158 12.766 27.561 16.555 1.00 0.00 H +ATOM 477 HW2 SOL 158 14.081 27.115 17.292 1.00 0.00 H +ATOM 478 OW SOL 159 11.109 14.336 28.727 1.00 0.00 O +ATOM 479 HW1 SOL 159 10.922 15.263 29.051 1.00 0.00 H +ATOM 480 HW2 SOL 159 11.994 14.116 29.138 1.00 0.00 H +ATOM 481 OW SOL 160 7.998 25.909 14.509 1.00 0.00 O +ATOM 482 HW1 SOL 160 7.826 25.064 14.002 1.00 0.00 H +ATOM 483 HW2 SOL 160 8.506 26.475 13.860 1.00 0.00 H +ATOM 484 OW SOL 161 25.404 24.209 13.944 1.00 0.00 O +ATOM 485 HW1 SOL 161 25.354 23.381 14.502 1.00 0.00 H +ATOM 486 HW2 SOL 161 26.173 24.712 14.336 1.00 0.00 H +ATOM 487 OW SOL 162 24.844 25.891 26.881 1.00 0.00 O +ATOM 488 HW1 SOL 162 25.424 25.089 27.018 1.00 0.00 H +ATOM 489 HW2 SOL 162 24.491 25.772 25.953 1.00 0.00 H +ATOM 490 OW SOL 163 14.619 20.558 23.171 1.00 0.00 O +ATOM 491 HW1 SOL 163 15.041 20.548 24.077 1.00 0.00 H +ATOM 492 HW2 SOL 163 13.641 20.481 23.366 1.00 0.00 H +ATOM 493 OW SOL 164 27.083 10.805 27.618 1.00 0.00 O +ATOM 494 HW1 SOL 164 27.958 10.356 27.439 1.00 0.00 H +ATOM 495 HW2 SOL 164 26.964 10.702 28.606 1.00 0.00 H +ATOM 496 OW SOL 165 23.957 28.645 23.912 1.00 0.00 O +ATOM 497 HW1 SOL 165 23.636 27.724 23.693 1.00 0.00 H +ATOM 498 HW2 SOL 165 24.334 28.551 24.833 1.00 0.00 H +ATOM 499 OW SOL 166 21.857 28.095 24.745 1.00 0.00 O +ATOM 500 HW1 SOL 166 21.651 27.780 23.818 1.00 0.00 H +ATOM 501 HW2 SOL 166 22.393 27.346 25.134 1.00 0.00 H +ATOM 502 OW SOL 167 14.267 8.489 17.721 1.00 0.00 O +ATOM 503 HW1 SOL 167 14.806 9.323 17.839 1.00 0.00 H +ATOM 504 HW2 SOL 167 14.352 8.289 16.745 1.00 0.00 H +ATOM 505 OW SOL 168 15.230 32.590 23.368 1.00 0.00 O +ATOM 506 HW1 SOL 168 15.697 33.435 23.630 1.00 0.00 H +ATOM 507 HW2 SOL 168 15.330 32.564 22.374 1.00 0.00 H +ATOM 508 OW SOL 169 20.692 18.024 12.789 1.00 0.00 O +ATOM 509 HW1 SOL 169 20.383 17.682 13.676 1.00 0.00 H +ATOM 510 HW2 SOL 169 21.344 17.331 12.483 1.00 0.00 H +ATOM 511 OW SOL 170 20.941 14.283 32.482 1.00 0.00 O +ATOM 512 HW1 SOL 170 20.807 15.094 31.913 1.00 0.00 H +ATOM 513 HW2 SOL 170 21.798 13.896 32.144 1.00 0.00 H +ATOM 514 OW SOL 171 20.572 24.087 21.759 1.00 0.00 O +ATOM 515 HW1 SOL 171 20.177 24.703 21.078 1.00 0.00 H +ATOM 516 HW2 SOL 171 21.047 23.401 21.209 1.00 0.00 H +ATOM 517 OW SOL 172 27.011 21.983 12.689 1.00 0.00 O +ATOM 518 HW1 SOL 172 26.589 21.796 13.576 1.00 0.00 H +ATOM 519 HW2 SOL 172 27.502 21.138 12.478 1.00 0.00 H +ATOM 520 OW SOL 173 27.873 21.492 26.173 1.00 0.00 O +ATOM 521 HW1 SOL 173 28.092 21.918 27.051 1.00 0.00 H +ATOM 522 HW2 SOL 173 26.908 21.715 26.036 1.00 0.00 H +ATOM 523 OW SOL 174 18.801 23.348 22.703 1.00 0.00 O +ATOM 524 HW1 SOL 174 18.700 24.180 22.157 1.00 0.00 H +ATOM 525 HW2 SOL 174 19.279 22.720 22.089 1.00 0.00 H +ATOM 526 OW SOL 175 28.842 13.423 18.022 1.00 0.00 O +ATOM 527 HW1 SOL 175 28.740 12.648 18.646 1.00 0.00 H +ATOM 528 HW2 SOL 175 28.519 14.202 18.559 1.00 0.00 H +ATOM 529 OW SOL 176 25.404 27.238 13.894 1.00 0.00 O +ATOM 530 HW1 SOL 176 25.057 28.141 13.642 1.00 0.00 H +ATOM 531 HW2 SOL 176 25.068 26.644 13.164 1.00 0.00 H +ATOM 532 OW SOL 177 13.648 31.004 20.523 1.00 0.00 O +ATOM 533 HW1 SOL 177 14.154 31.859 20.403 1.00 0.00 H +ATOM 534 HW2 SOL 177 13.311 30.798 19.605 1.00 0.00 H +ATOM 535 OW SOL 178 14.229 17.416 17.143 1.00 0.00 O +ATOM 536 HW1 SOL 178 13.948 16.941 16.310 1.00 0.00 H +ATOM 537 HW2 SOL 178 15.227 17.369 17.117 1.00 0.00 H +ATOM 538 OW SOL 179 15.646 10.903 29.696 1.00 0.00 O +ATOM 539 HW1 SOL 179 16.138 11.535 29.097 1.00 0.00 H +ATOM 540 HW2 SOL 179 16.141 10.966 30.562 1.00 0.00 H +ATOM 541 OW SOL 180 19.621 22.063 14.117 1.00 0.00 O +ATOM 542 HW1 SOL 180 19.137 22.720 14.695 1.00 0.00 H +ATOM 543 HW2 SOL 180 19.979 21.395 14.768 1.00 0.00 H +ATOM 544 OW SOL 181 30.397 26.314 19.886 1.00 0.00 O +ATOM 545 HW1 SOL 181 30.779 26.155 20.796 1.00 0.00 H +ATOM 546 HW2 SOL 181 30.028 25.421 19.626 1.00 0.00 H +ATOM 547 OW SOL 182 19.674 13.424 22.478 1.00 0.00 O +ATOM 548 HW1 SOL 182 18.963 12.986 21.929 1.00 0.00 H +ATOM 549 HW2 SOL 182 20.211 13.934 21.806 1.00 0.00 H +ATOM 550 OW SOL 183 18.668 14.883 20.010 1.00 0.00 O +ATOM 551 HW1 SOL 183 18.273 14.187 20.610 1.00 0.00 H +ATOM 552 HW2 SOL 183 19.045 15.557 20.645 1.00 0.00 H +ATOM 553 OW SOL 184 17.034 29.023 9.488 1.00 0.00 O +ATOM 554 HW1 SOL 184 17.506 29.166 10.358 1.00 0.00 H +ATOM 555 HW2 SOL 184 17.634 28.392 8.995 1.00 0.00 H +ATOM 556 OW SOL 185 22.961 20.786 25.713 1.00 0.00 O +ATOM 557 HW1 SOL 185 22.731 20.546 24.770 1.00 0.00 H +ATOM 558 HW2 SOL 185 22.071 20.838 26.166 1.00 0.00 H +ATOM 559 OW SOL 186 26.286 17.329 31.213 1.00 0.00 O +ATOM 560 HW1 SOL 186 26.404 17.825 32.073 1.00 0.00 H +ATOM 561 HW2 SOL 186 26.241 16.371 31.498 1.00 0.00 H +ATOM 562 OW SOL 187 27.580 14.914 14.672 1.00 0.00 O +ATOM 563 HW1 SOL 187 27.811 14.051 15.121 1.00 0.00 H +ATOM 564 HW2 SOL 187 27.719 14.720 13.701 1.00 0.00 H +ATOM 565 OW SOL 188 23.031 33.085 25.667 1.00 0.00 O +ATOM 566 HW1 SOL 188 23.825 32.541 25.398 1.00 0.00 H +ATOM 567 HW2 SOL 188 22.449 33.071 24.854 1.00 0.00 H +ATOM 568 OW SOL 189 15.597 15.370 30.674 1.00 0.00 O +ATOM 569 HW1 SOL 189 15.625 16.152 31.297 1.00 0.00 H +ATOM 570 HW2 SOL 189 15.518 14.583 31.286 1.00 0.00 H +ATOM 571 OW SOL 190 16.883 26.648 31.638 1.00 0.00 O +ATOM 572 HW1 SOL 190 16.297 26.276 32.357 1.00 0.00 H +ATOM 573 HW2 SOL 190 16.832 27.637 31.780 1.00 0.00 H +ATOM 574 OW SOL 191 19.861 24.244 32.586 1.00 0.00 O +ATOM 575 HW1 SOL 191 19.950 23.992 31.623 1.00 0.00 H +ATOM 576 HW2 SOL 191 20.144 25.202 32.606 1.00 0.00 H +ATOM 577 OW SOL 192 15.257 9.758 26.764 1.00 0.00 O +ATOM 578 HW1 SOL 192 14.827 10.581 27.136 1.00 0.00 H +ATOM 579 HW2 SOL 192 16.212 10.027 26.639 1.00 0.00 H +ATOM 580 OW SOL 193 21.738 19.826 33.281 1.00 0.00 O +ATOM 581 HW1 SOL 193 22.076 20.323 32.483 1.00 0.00 H +ATOM 582 HW2 SOL 193 20.856 20.258 33.472 1.00 0.00 H +ATOM 583 OW SOL 194 10.469 18.366 28.899 1.00 0.00 O +ATOM 584 HW1 SOL 194 11.297 18.486 28.352 1.00 0.00 H +ATOM 585 HW2 SOL 194 10.007 19.250 28.826 1.00 0.00 H +ATOM 586 OW SOL 195 19.058 31.288 28.229 1.00 0.00 O +ATOM 587 HW1 SOL 195 18.137 31.553 28.515 1.00 0.00 H +ATOM 588 HW2 SOL 195 19.157 31.712 27.329 1.00 0.00 H +ATOM 589 OW SOL 196 15.716 28.774 16.471 1.00 0.00 O +ATOM 590 HW1 SOL 196 15.871 28.372 17.373 1.00 0.00 H +ATOM 591 HW2 SOL 196 14.924 29.367 16.610 1.00 0.00 H +ATOM 592 OW SOL 197 15.165 21.070 10.861 1.00 0.00 O +ATOM 593 HW1 SOL 197 14.773 20.723 11.713 1.00 0.00 H +ATOM 594 HW2 SOL 197 14.363 21.299 10.309 1.00 0.00 H +ATOM 595 OW SOL 198 18.682 30.296 17.929 1.00 0.00 O +ATOM 596 HW1 SOL 198 18.616 30.245 16.933 1.00 0.00 H +ATOM 597 HW2 SOL 198 19.420 29.658 18.149 1.00 0.00 H +ATOM 598 OW SOL 199 25.446 15.251 13.605 1.00 0.00 O +ATOM 599 HW1 SOL 199 25.367 14.695 12.778 1.00 0.00 H +ATOM 600 HW2 SOL 199 25.061 14.668 14.320 1.00 0.00 H +ATOM 601 OW SOL 200 25.596 23.079 27.017 1.00 0.00 O +ATOM 602 HW1 SOL 200 24.713 23.143 27.480 1.00 0.00 H +ATOM 603 HW2 SOL 200 26.235 22.861 27.754 1.00 0.00 H +ATOM 604 OW SOL 201 23.494 11.771 21.543 1.00 0.00 O +ATOM 605 HW1 SOL 201 23.982 12.630 21.693 1.00 0.00 H +ATOM 606 HW2 SOL 201 24.210 11.143 21.237 1.00 0.00 H +ATOM 607 OW SOL 202 26.800 29.112 25.566 1.00 0.00 O +ATOM 608 HW1 SOL 202 26.671 30.102 25.515 1.00 0.00 H +ATOM 609 HW2 SOL 202 26.164 28.828 26.284 1.00 0.00 H +ATOM 610 OW SOL 203 26.261 24.860 10.711 1.00 0.00 O +ATOM 611 HW1 SOL 203 26.533 25.358 11.534 1.00 0.00 H +ATOM 612 HW2 SOL 203 27.110 24.432 10.402 1.00 0.00 H +ATOM 613 OW SOL 204 9.456 24.988 15.424 1.00 0.00 O +ATOM 614 HW1 SOL 204 10.300 24.942 15.958 1.00 0.00 H +ATOM 615 HW2 SOL 204 8.761 25.229 16.101 1.00 0.00 H +ATOM 616 OW SOL 205 21.383 27.255 22.046 1.00 0.00 O +ATOM 617 HW1 SOL 205 20.602 26.772 21.650 1.00 0.00 H +ATOM 618 HW2 SOL 205 22.099 26.558 22.080 1.00 0.00 H +ATOM 619 OW SOL 206 14.538 22.985 19.831 1.00 0.00 O +ATOM 620 HW1 SOL 206 13.872 23.579 20.283 1.00 0.00 H +ATOM 621 HW2 SOL 206 15.176 22.748 20.563 1.00 0.00 H +ATOM 622 OW SOL 207 12.256 23.724 21.874 1.00 0.00 O +ATOM 623 HW1 SOL 207 12.712 24.484 22.336 1.00 0.00 H +ATOM 624 HW2 SOL 207 12.160 23.034 22.592 1.00 0.00 H +ATOM 625 OW SOL 208 17.301 22.623 16.712 1.00 0.00 O +ATOM 626 HW1 SOL 208 16.786 22.266 15.933 1.00 0.00 H +ATOM 627 HW2 SOL 208 16.708 22.435 17.494 1.00 0.00 H +ATOM 628 OW SOL 209 27.289 17.023 25.562 1.00 0.00 O +ATOM 629 HW1 SOL 209 27.950 17.324 26.250 1.00 0.00 H +ATOM 630 HW2 SOL 209 26.475 16.802 26.098 1.00 0.00 H +ATOM 631 OW SOL 210 12.046 11.028 23.486 1.00 0.00 O +ATOM 632 HW1 SOL 210 12.209 11.923 23.901 1.00 0.00 H +ATOM 633 HW2 SOL 210 11.256 11.184 22.893 1.00 0.00 H +ATOM 634 OW SOL 211 12.971 23.755 12.904 1.00 0.00 O +ATOM 635 HW1 SOL 211 13.462 22.993 13.326 1.00 0.00 H +ATOM 636 HW2 SOL 211 12.946 23.511 11.935 1.00 0.00 H +ATOM 637 OW SOL 212 18.713 14.967 23.853 1.00 0.00 O +ATOM 638 HW1 SOL 212 18.097 15.333 23.155 1.00 0.00 H +ATOM 639 HW2 SOL 212 18.527 13.985 23.839 1.00 0.00 H +ATOM 640 OW SOL 213 17.844 16.429 18.517 1.00 0.00 O +ATOM 641 HW1 SOL 213 17.744 15.500 18.162 1.00 0.00 H +ATOM 642 HW2 SOL 213 16.981 16.870 18.271 1.00 0.00 H +ATOM 643 OW SOL 214 26.348 27.255 19.389 1.00 0.00 O +ATOM 644 HW1 SOL 214 26.764 27.895 18.744 1.00 0.00 H +ATOM 645 HW2 SOL 214 26.129 27.826 20.180 1.00 0.00 H +ATOM 646 OW SOL 215 19.468 25.203 11.319 1.00 0.00 O +ATOM 647 HW1 SOL 215 19.836 25.775 10.587 1.00 0.00 H +ATOM 648 HW2 SOL 215 20.233 24.606 11.560 1.00 0.00 H +ATOM 649 OW SOL 216 24.482 16.998 15.713 1.00 0.00 O +ATOM 650 HW1 SOL 216 23.782 16.352 15.411 1.00 0.00 H +ATOM 651 HW2 SOL 216 23.957 17.723 16.159 1.00 0.00 H +ATOM 652 OW SOL 217 22.863 24.643 26.438 1.00 0.00 O +ATOM 653 HW1 SOL 217 23.205 23.713 26.305 1.00 0.00 H +ATOM 654 HW2 SOL 217 23.295 24.934 27.291 1.00 0.00 H +ATOM 655 OW SOL 218 16.581 23.137 9.018 1.00 0.00 O +ATOM 656 HW1 SOL 218 15.746 22.632 9.233 1.00 0.00 H +ATOM 657 HW2 SOL 218 16.633 23.826 9.740 1.00 0.00 H +ATOM 658 OW SOL 219 12.098 27.383 14.371 1.00 0.00 O +ATOM 659 HW1 SOL 219 11.253 27.822 14.067 1.00 0.00 H +ATOM 660 HW2 SOL 219 12.162 26.569 13.793 1.00 0.00 H +ATOM 661 OW SOL 220 18.497 10.087 28.018 1.00 0.00 O +ATOM 662 HW1 SOL 220 19.198 10.734 28.318 1.00 0.00 H +ATOM 663 HW2 SOL 220 17.867 10.652 27.485 1.00 0.00 H +ATOM 664 OW SOL 221 23.758 24.161 29.453 1.00 0.00 O +ATOM 665 HW1 SOL 221 24.089 23.218 29.494 1.00 0.00 H +ATOM 666 HW2 SOL 221 24.587 24.695 29.288 1.00 0.00 H +ATOM 667 OW SOL 222 21.864 13.608 29.368 1.00 0.00 O +ATOM 668 HW1 SOL 222 21.386 12.750 29.559 1.00 0.00 H +ATOM 669 HW2 SOL 222 21.214 14.121 28.809 1.00 0.00 H +ATOM 670 OW SOL 223 29.881 27.987 21.278 1.00 0.00 O +ATOM 671 HW1 SOL 223 30.280 28.463 22.060 1.00 0.00 H +ATOM 672 HW2 SOL 223 28.896 28.064 21.433 1.00 0.00 H +ATOM 673 OW SOL 224 14.384 27.766 12.575 1.00 0.00 O +ATOM 674 HW1 SOL 224 13.656 27.745 13.259 1.00 0.00 H +ATOM 675 HW2 SOL 224 15.210 27.928 13.114 1.00 0.00 H +ATOM 676 OW SOL 225 17.381 25.415 12.307 1.00 0.00 O +ATOM 677 HW1 SOL 225 16.685 25.906 11.784 1.00 0.00 H +ATOM 678 HW2 SOL 225 17.361 24.493 11.919 1.00 0.00 H +ATOM 679 OW SOL 226 18.771 26.327 16.968 1.00 0.00 O +ATOM 680 HW1 SOL 226 19.165 26.197 17.878 1.00 0.00 H +ATOM 681 HW2 SOL 226 19.149 25.570 16.436 1.00 0.00 H +ATOM 682 OW SOL 227 26.894 25.793 22.690 1.00 0.00 O +ATOM 683 HW1 SOL 227 27.095 26.573 23.283 1.00 0.00 H +ATOM 684 HW2 SOL 227 26.892 25.014 23.317 1.00 0.00 H +ATOM 685 OW SOL 228 29.615 14.551 22.456 1.00 0.00 O +ATOM 686 HW1 SOL 228 29.405 13.573 22.445 1.00 0.00 H +ATOM 687 HW2 SOL 228 29.346 14.860 21.544 1.00 0.00 H +ATOM 688 OW SOL 229 14.566 25.605 27.425 1.00 0.00 O +ATOM 689 HW1 SOL 229 14.245 25.596 26.478 1.00 0.00 H +ATOM 690 HW2 SOL 229 15.214 24.844 27.462 1.00 0.00 H +ATOM 691 OW SOL 230 20.391 25.772 30.067 1.00 0.00 O +ATOM 692 HW1 SOL 230 21.375 25.748 29.888 1.00 0.00 H +ATOM 693 HW2 SOL 230 20.078 24.864 29.790 1.00 0.00 H +ATOM 694 OW SOL 231 23.233 14.897 21.299 1.00 0.00 O +ATOM 695 HW1 SOL 231 22.260 14.863 21.070 1.00 0.00 H +ATOM 696 HW2 SOL 231 23.269 14.533 22.230 1.00 0.00 H +ATOM 697 OW SOL 232 13.951 14.271 26.024 1.00 0.00 O +ATOM 698 HW1 SOL 232 13.866 15.163 26.468 1.00 0.00 H +ATOM 699 HW2 SOL 232 13.345 13.682 26.559 1.00 0.00 H +ATOM 700 OW SOL 233 28.373 27.959 24.651 1.00 0.00 O +ATOM 701 HW1 SOL 233 27.950 28.614 24.025 1.00 0.00 H +ATOM 702 HW2 SOL 233 28.738 27.253 24.044 1.00 0.00 H +ATOM 703 OW SOL 234 25.500 16.383 23.895 1.00 0.00 O +ATOM 704 HW1 SOL 234 25.500 17.138 23.239 1.00 0.00 H +ATOM 705 HW2 SOL 234 24.639 15.909 23.710 1.00 0.00 H +ATOM 706 OW SOL 235 28.002 12.440 13.022 1.00 0.00 O +ATOM 707 HW1 SOL 235 28.815 12.998 12.852 1.00 0.00 H +ATOM 708 HW2 SOL 235 28.343 11.502 12.958 1.00 0.00 H +ATOM 709 OW SOL 236 18.282 22.984 28.431 1.00 0.00 O +ATOM 710 HW1 SOL 236 17.839 22.956 27.535 1.00 0.00 H +ATOM 711 HW2 SOL 236 17.744 22.345 28.980 1.00 0.00 H +ATOM 712 OW SOL 237 15.334 10.807 19.052 1.00 0.00 O +ATOM 713 HW1 SOL 237 16.230 10.739 18.613 1.00 0.00 H +ATOM 714 HW2 SOL 237 15.543 10.729 20.027 1.00 0.00 H +ATOM 715 OW SOL 238 26.453 20.193 17.035 1.00 0.00 O +ATOM 716 HW1 SOL 238 27.285 19.738 16.718 1.00 0.00 H +ATOM 717 HW2 SOL 238 26.145 20.706 16.234 1.00 0.00 H +ATOM 718 OW SOL 239 10.845 27.204 26.439 1.00 0.00 O +ATOM 719 HW1 SOL 239 11.492 26.526 26.787 1.00 0.00 H +ATOM 720 HW2 SOL 239 10.226 27.356 27.209 1.00 0.00 H +ATOM 721 OW SOL 240 23.318 20.552 29.910 1.00 0.00 O +ATOM 722 HW1 SOL 240 23.322 19.973 29.095 1.00 0.00 H +ATOM 723 HW2 SOL 240 24.208 20.374 30.330 1.00 0.00 H +ATOM 724 OW SOL 241 12.360 11.799 19.506 1.00 0.00 O +ATOM 725 HW1 SOL 241 11.587 12.232 19.969 1.00 0.00 H +ATOM 726 HW2 SOL 241 12.913 11.439 20.258 1.00 0.00 H +ATOM 727 OW SOL 242 10.015 16.482 23.582 1.00 0.00 O +ATOM 728 HW1 SOL 242 9.278 17.021 23.174 1.00 0.00 H +ATOM 729 HW2 SOL 242 10.842 16.856 23.162 1.00 0.00 H +ATOM 730 OW SOL 243 24.378 12.205 18.326 1.00 0.00 O +ATOM 731 HW1 SOL 243 24.260 11.939 19.283 1.00 0.00 H +ATOM 732 HW2 SOL 243 24.465 11.331 17.848 1.00 0.00 H +ATOM 733 OW SOL 244 27.338 13.664 23.454 1.00 0.00 O +ATOM 734 HW1 SOL 244 28.230 13.837 23.870 1.00 0.00 H +ATOM 735 HW2 SOL 244 27.455 13.969 22.509 1.00 0.00 H +ATOM 736 OW SOL 245 16.940 13.384 31.601 1.00 0.00 O +ATOM 737 HW1 SOL 245 17.109 13.112 30.654 1.00 0.00 H +ATOM 738 HW2 SOL 245 17.669 12.928 32.111 1.00 0.00 H +ATOM 739 OW SOL 246 32.005 13.657 23.624 1.00 0.00 O +ATOM 740 HW1 SOL 246 32.257 13.911 24.558 1.00 0.00 H +ATOM 741 HW2 SOL 246 31.963 14.533 23.145 1.00 0.00 H +ATOM 742 OW SOL 247 28.888 16.640 31.052 1.00 0.00 O +ATOM 743 HW1 SOL 247 28.877 16.525 30.058 1.00 0.00 H +ATOM 744 HW2 SOL 247 28.475 17.540 31.190 1.00 0.00 H +ATOM 745 OW SOL 248 30.517 21.634 27.971 1.00 0.00 O +ATOM 746 HW1 SOL 248 30.413 20.686 27.671 1.00 0.00 H +ATOM 747 HW2 SOL 248 29.614 21.868 28.330 1.00 0.00 H +ATOM 748 OW SOL 249 29.278 25.405 14.874 1.00 0.00 O +ATOM 749 HW1 SOL 249 30.211 25.764 14.901 1.00 0.00 H +ATOM 750 HW2 SOL 249 28.781 25.992 15.513 1.00 0.00 H +ATOM 751 OW SOL 250 28.968 21.899 14.796 1.00 0.00 O +ATOM 752 HW1 SOL 250 28.346 22.644 14.559 1.00 0.00 H +ATOM 753 HW2 SOL 250 28.495 21.082 14.467 1.00 0.00 H +ATOM 754 OW SOL 251 14.191 11.981 16.094 1.00 0.00 O +ATOM 755 HW1 SOL 251 14.407 12.074 15.122 1.00 0.00 H +ATOM 756 HW2 SOL 251 14.275 10.999 16.261 1.00 0.00 H +ATOM 757 OW SOL 252 17.788 32.955 15.832 1.00 0.00 O +ATOM 758 HW1 SOL 252 17.315 32.902 14.953 1.00 0.00 H +ATOM 759 HW2 SOL 252 18.279 33.824 15.785 1.00 0.00 H +ATOM 760 OW SOL 253 14.053 32.614 18.037 1.00 0.00 O +ATOM 761 HW1 SOL 253 14.707 32.156 18.638 1.00 0.00 H +ATOM 762 HW2 SOL 253 13.297 32.849 18.647 1.00 0.00 H +ATOM 763 OW SOL 254 15.162 6.761 17.608 1.00 0.00 O +ATOM 764 HW1 SOL 254 16.124 6.787 17.336 1.00 0.00 H +ATOM 765 HW2 SOL 254 15.183 6.326 18.508 1.00 0.00 H +ATOM 766 OW SOL 255 23.403 24.435 19.289 1.00 0.00 O +ATOM 767 HW1 SOL 255 22.966 24.938 20.034 1.00 0.00 H +ATOM 768 HW2 SOL 255 24.203 24.019 19.721 1.00 0.00 H +ATOM 769 OW SOL 256 11.933 18.281 8.865 1.00 0.00 O +ATOM 770 HW1 SOL 256 12.169 18.288 7.894 1.00 0.00 H +ATOM 771 HW2 SOL 256 11.288 17.520 8.945 1.00 0.00 H +ATOM 772 OW SOL 257 17.352 17.223 12.875 1.00 0.00 O +ATOM 773 HW1 SOL 257 17.075 17.788 12.098 1.00 0.00 H +ATOM 774 HW2 SOL 257 16.594 16.579 12.980 1.00 0.00 H +ATOM 775 OW SOL 258 20.845 31.014 24.506 1.00 0.00 O +ATOM 776 HW1 SOL 258 21.494 30.971 23.747 1.00 0.00 H +ATOM 777 HW2 SOL 258 21.299 31.607 25.171 1.00 0.00 H +ATOM 778 OW SOL 259 16.173 30.639 14.579 1.00 0.00 O +ATOM 779 HW1 SOL 259 17.087 31.003 14.755 1.00 0.00 H +ATOM 780 HW2 SOL 259 15.597 31.456 14.545 1.00 0.00 H +ATOM 781 OW SOL 260 26.861 14.882 24.781 1.00 0.00 O +ATOM 782 HW1 SOL 260 27.331 15.619 24.295 1.00 0.00 H +ATOM 783 HW2 SOL 260 27.066 15.066 25.742 1.00 0.00 H +ATOM 784 OW SOL 261 20.147 18.767 8.642 1.00 0.00 O +ATOM 785 HW1 SOL 261 19.932 18.177 7.865 1.00 0.00 H +ATOM 786 HW2 SOL 261 19.754 18.282 9.423 1.00 0.00 H +ATOM 787 OW SOL 262 16.330 11.853 15.027 1.00 0.00 O +ATOM 788 HW1 SOL 262 16.561 11.180 15.729 1.00 0.00 H +ATOM 789 HW2 SOL 262 16.187 12.696 15.546 1.00 0.00 H +ATOM 790 OW SOL 263 19.998 14.127 14.342 1.00 0.00 O +ATOM 791 HW1 SOL 263 19.093 13.932 13.964 1.00 0.00 H +ATOM 792 HW2 SOL 263 20.377 14.802 13.709 1.00 0.00 H +ATOM 793 OW SOL 264 15.286 6.974 21.690 1.00 0.00 O +ATOM 794 HW1 SOL 264 14.490 6.733 21.134 1.00 0.00 H +ATOM 795 HW2 SOL 264 15.987 7.198 21.013 1.00 0.00 H +ATOM 796 OW SOL 265 22.572 20.878 22.776 1.00 0.00 O +ATOM 797 HW1 SOL 265 22.895 20.110 22.224 1.00 0.00 H +ATOM 798 HW2 SOL 265 21.659 21.062 22.413 1.00 0.00 H +ATOM 799 OW SOL 266 13.021 22.353 8.271 1.00 0.00 O +ATOM 800 HW1 SOL 266 13.103 21.539 7.695 1.00 0.00 H +ATOM 801 HW2 SOL 266 12.965 23.103 7.612 1.00 0.00 H +ATOM 802 OW SOL 267 29.306 12.539 20.816 1.00 0.00 O +ATOM 803 HW1 SOL 267 29.850 13.011 20.123 1.00 0.00 H +ATOM 804 HW2 SOL 267 29.587 11.583 20.726 1.00 0.00 H +ATOM 805 OW SOL 268 27.591 8.306 19.715 1.00 0.00 O +ATOM 806 HW1 SOL 268 26.981 8.960 20.162 1.00 0.00 H +ATOM 807 HW2 SOL 268 28.102 7.902 20.473 1.00 0.00 H +ATOM 808 OW SOL 269 14.625 19.150 27.877 1.00 0.00 O +ATOM 809 HW1 SOL 269 14.905 19.901 28.474 1.00 0.00 H +ATOM 810 HW2 SOL 269 14.485 18.387 28.507 1.00 0.00 H +ATOM 811 OW SOL 270 15.053 18.138 11.940 1.00 0.00 O +ATOM 812 HW1 SOL 270 14.083 18.294 12.126 1.00 0.00 H +ATOM 813 HW2 SOL 270 15.179 18.501 11.017 1.00 0.00 H +ATOM 814 OW SOL 271 20.480 10.066 25.281 1.00 0.00 O +ATOM 815 HW1 SOL 271 20.492 10.653 26.090 1.00 0.00 H +ATOM 816 HW2 SOL 271 20.115 9.200 25.622 1.00 0.00 H +ATOM 817 OW SOL 272 16.687 16.821 21.152 1.00 0.00 O +ATOM 818 HW1 SOL 272 17.392 17.113 20.506 1.00 0.00 H +ATOM 819 HW2 SOL 272 16.033 16.326 20.580 1.00 0.00 H +ATOM 820 OW SOL 273 20.496 9.997 18.857 1.00 0.00 O +ATOM 821 HW1 SOL 273 19.529 9.992 19.113 1.00 0.00 H +ATOM 822 HW2 SOL 273 20.580 10.799 18.267 1.00 0.00 H +ATOM 823 OW SOL 274 25.891 27.591 29.791 1.00 0.00 O +ATOM 824 HW1 SOL 274 25.008 27.972 30.067 1.00 0.00 H +ATOM 825 HW2 SOL 274 26.443 27.649 30.622 1.00 0.00 H +ATOM 826 OW SOL 275 10.510 26.690 23.469 1.00 0.00 O +ATOM 827 HW1 SOL 275 9.710 26.679 24.068 1.00 0.00 H +ATOM 828 HW2 SOL 275 11.238 27.046 24.054 1.00 0.00 H +ATOM 829 OW SOL 276 25.856 13.235 20.210 1.00 0.00 O +ATOM 830 HW1 SOL 276 26.425 12.798 19.514 1.00 0.00 H +ATOM 831 HW2 SOL 276 25.294 13.876 19.686 1.00 0.00 H +ATOM 832 OW SOL 277 10.188 21.626 13.254 1.00 0.00 O +ATOM 833 HW1 SOL 277 10.108 20.717 12.847 1.00 0.00 H +ATOM 834 HW2 SOL 277 10.441 21.439 14.203 1.00 0.00 H +ATOM 835 OW SOL 278 13.376 16.662 19.239 1.00 0.00 O +ATOM 836 HW1 SOL 278 12.555 16.358 18.757 1.00 0.00 H +ATOM 837 HW2 SOL 278 13.509 17.597 18.911 1.00 0.00 H +ATOM 838 OW SOL 279 19.716 33.214 25.227 1.00 0.00 O +ATOM 839 HW1 SOL 279 20.555 33.286 25.766 1.00 0.00 H +ATOM 840 HW2 SOL 279 18.992 33.211 25.917 1.00 0.00 H +ATOM 841 OW SOL 280 21.318 16.043 23.168 1.00 0.00 O +ATOM 842 HW1 SOL 280 20.740 15.644 22.456 1.00 0.00 H +ATOM 843 HW2 SOL 280 21.291 15.365 23.902 1.00 0.00 H +ATOM 844 OW SOL 281 29.072 25.241 18.007 1.00 0.00 O +ATOM 845 HW1 SOL 281 29.017 24.363 18.482 1.00 0.00 H +ATOM 846 HW2 SOL 281 28.392 25.159 17.279 1.00 0.00 H +ATOM 847 OW SOL 282 16.906 12.470 24.437 1.00 0.00 O +ATOM 848 HW1 SOL 282 16.760 13.426 24.688 1.00 0.00 H +ATOM 849 HW2 SOL 282 17.418 12.526 23.580 1.00 0.00 H +ATOM 850 OW SOL 283 11.005 16.545 20.975 1.00 0.00 O +ATOM 851 HW1 SOL 283 11.185 17.280 20.321 1.00 0.00 H +ATOM 852 HW2 SOL 283 11.645 15.826 20.704 1.00 0.00 H +ATOM 853 OW SOL 284 19.808 19.268 16.414 1.00 0.00 O +ATOM 854 HW1 SOL 284 18.955 18.964 16.838 1.00 0.00 H +ATOM 855 HW2 SOL 284 19.515 19.632 15.530 1.00 0.00 H +ATOM 856 OW SOL 285 19.928 17.083 32.305 1.00 0.00 O +ATOM 857 HW1 SOL 285 19.062 17.537 32.093 1.00 0.00 H +ATOM 858 HW2 SOL 285 20.282 16.821 31.407 1.00 0.00 H +ATOM 859 OW SOL 286 21.167 10.656 13.563 1.00 0.00 O +ATOM 860 HW1 SOL 286 22.068 10.422 13.199 1.00 0.00 H +ATOM 861 HW2 SOL 286 20.751 11.196 12.831 1.00 0.00 H +ATOM 862 OW SOL 287 25.467 23.335 16.932 1.00 0.00 O +ATOM 863 HW1 SOL 287 25.022 24.043 16.383 1.00 0.00 H +ATOM 864 HW2 SOL 287 25.864 22.722 16.249 1.00 0.00 H +ATOM 865 OW SOL 288 11.779 10.659 26.429 1.00 0.00 O +ATOM 866 HW1 SOL 288 11.727 9.775 25.964 1.00 0.00 H +ATOM 867 HW2 SOL 288 11.701 11.322 25.684 1.00 0.00 H +ATOM 868 OW SOL 289 20.631 25.552 23.948 1.00 0.00 O +ATOM 869 HW1 SOL 289 20.171 26.439 23.917 1.00 0.00 H +ATOM 870 HW2 SOL 289 21.576 25.768 23.702 1.00 0.00 H +ATOM 871 OW SOL 290 31.043 16.337 17.275 1.00 0.00 O +ATOM 872 HW1 SOL 290 31.810 15.800 17.627 1.00 0.00 H +ATOM 873 HW2 SOL 290 30.548 16.609 18.100 1.00 0.00 H +ATOM 874 OW SOL 291 12.491 25.394 18.555 1.00 0.00 O +ATOM 875 HW1 SOL 291 11.721 25.934 18.215 1.00 0.00 H +ATOM 876 HW2 SOL 291 12.354 24.497 18.136 1.00 0.00 H +ATOM 877 OW SOL 292 25.292 13.571 16.035 1.00 0.00 O +ATOM 878 HW1 SOL 292 25.055 12.601 16.090 1.00 0.00 H +ATOM 879 HW2 SOL 292 24.754 13.987 16.769 1.00 0.00 H +ATOM 880 OW SOL 293 9.792 18.248 17.146 1.00 0.00 O +ATOM 881 HW1 SOL 293 10.249 17.869 17.951 1.00 0.00 H +ATOM 882 HW2 SOL 293 9.494 17.438 16.641 1.00 0.00 H +ATOM 883 OW SOL 294 17.876 26.066 14.738 1.00 0.00 O +ATOM 884 HW1 SOL 294 18.251 26.859 15.218 1.00 0.00 H +ATOM 885 HW2 SOL 294 17.107 26.444 14.222 1.00 0.00 H +ATOM 886 OW SOL 295 13.351 26.592 29.897 1.00 0.00 O +ATOM 887 HW1 SOL 295 13.162 26.831 30.850 1.00 0.00 H +ATOM 888 HW2 SOL 295 12.534 26.092 29.613 1.00 0.00 H +ATOM 889 OW SOL 296 12.037 28.641 18.185 1.00 0.00 O +ATOM 890 HW1 SOL 296 12.138 29.311 18.919 1.00 0.00 H +ATOM 891 HW2 SOL 296 11.798 27.798 18.666 1.00 0.00 H +ATOM 892 OW SOL 297 13.949 14.903 14.018 1.00 0.00 O +ATOM 893 HW1 SOL 297 13.391 14.944 14.846 1.00 0.00 H +ATOM 894 HW2 SOL 297 13.286 15.029 13.280 1.00 0.00 H +ATOM 895 OW SOL 298 24.441 9.774 18.896 1.00 0.00 O +ATOM 896 HW1 SOL 298 24.484 8.795 18.698 1.00 0.00 H +ATOM 897 HW2 SOL 298 23.461 9.959 18.959 1.00 0.00 H +ATOM 898 OW SOL 299 24.825 20.625 13.710 1.00 0.00 O +ATOM 899 HW1 SOL 299 24.699 19.834 13.111 1.00 0.00 H +ATOM 900 HW2 SOL 299 24.759 21.405 13.087 1.00 0.00 H +ATOM 901 OW SOL 300 30.311 15.797 23.908 1.00 0.00 O +ATOM 902 HW1 SOL 300 30.013 16.347 23.128 1.00 0.00 H +ATOM 903 HW2 SOL 300 31.248 16.106 24.070 1.00 0.00 H +ATOM 904 OW SOL 301 14.689 25.210 19.062 1.00 0.00 O +ATOM 905 HW1 SOL 301 14.868 24.486 18.395 1.00 0.00 H +ATOM 906 HW2 SOL 301 15.310 25.943 18.787 1.00 0.00 H +ATOM 907 OW SOL 302 25.131 30.384 14.211 1.00 0.00 O +ATOM 908 HW1 SOL 302 25.229 30.043 15.146 1.00 0.00 H +ATOM 909 HW2 SOL 302 24.835 31.331 14.335 1.00 0.00 H +ATOM 910 OW SOL 303 26.817 28.630 15.931 1.00 0.00 O +ATOM 911 HW1 SOL 303 26.854 29.598 16.177 1.00 0.00 H +ATOM 912 HW2 SOL 303 27.762 28.323 16.039 1.00 0.00 H +ATOM 913 OW SOL 304 25.870 28.779 23.498 1.00 0.00 O +ATOM 914 HW1 SOL 304 26.007 28.035 24.152 1.00 0.00 H +ATOM 915 HW2 SOL 304 26.345 28.462 22.677 1.00 0.00 H +ATOM 916 OW SOL 305 21.224 20.028 20.919 1.00 0.00 O +ATOM 917 HW1 SOL 305 20.868 19.663 20.059 1.00 0.00 H +ATOM 918 HW2 SOL 305 21.455 19.210 21.445 1.00 0.00 H +ATOM 919 OW SOL 306 23.951 18.581 19.460 1.00 0.00 O +ATOM 920 HW1 SOL 306 24.755 18.081 19.139 1.00 0.00 H +ATOM 921 HW2 SOL 306 23.703 19.155 18.679 1.00 0.00 H +ATOM 922 OW SOL 307 14.745 23.638 10.984 1.00 0.00 O +ATOM 923 HW1 SOL 307 14.721 24.346 11.689 1.00 0.00 H +ATOM 924 HW2 SOL 307 14.730 22.785 11.506 1.00 0.00 H +ATOM 925 OW SOL 308 20.995 28.107 28.584 1.00 0.00 O +ATOM 926 HW1 SOL 308 21.030 29.030 28.201 1.00 0.00 H +ATOM 927 HW2 SOL 308 20.408 28.206 29.388 1.00 0.00 H +ATOM 928 OW SOL 309 21.468 30.225 29.577 1.00 0.00 O +ATOM 929 HW1 SOL 309 22.120 30.435 28.848 1.00 0.00 H +ATOM 930 HW2 SOL 309 20.824 30.989 29.546 1.00 0.00 H +ATOM 931 OW SOL 310 24.896 27.982 17.390 1.00 0.00 O +ATOM 932 HW1 SOL 310 25.409 28.790 17.677 1.00 0.00 H +ATOM 933 HW2 SOL 310 24.781 28.112 16.405 1.00 0.00 H +ATOM 934 OW SOL 311 10.694 13.902 19.257 1.00 0.00 O +ATOM 935 HW1 SOL 311 9.883 14.455 19.452 1.00 0.00 H +ATOM 936 HW2 SOL 311 11.300 14.094 20.029 1.00 0.00 H +ATOM 937 OW SOL 312 12.486 10.419 18.077 1.00 0.00 O +ATOM 938 HW1 SOL 312 11.824 11.058 17.686 1.00 0.00 H +ATOM 939 HW2 SOL 312 12.027 10.075 18.896 1.00 0.00 H +ATOM 940 OW SOL 313 21.726 12.250 26.675 1.00 0.00 O +ATOM 941 HW1 SOL 313 21.308 12.626 25.848 1.00 0.00 H +ATOM 942 HW2 SOL 313 21.836 13.048 27.268 1.00 0.00 H +ATOM 943 OW SOL 314 20.056 23.431 18.133 1.00 0.00 O +ATOM 944 HW1 SOL 314 19.555 24.081 17.561 1.00 0.00 H +ATOM 945 HW2 SOL 314 19.366 23.106 18.780 1.00 0.00 H +ATOM 946 OW SOL 315 8.353 22.549 12.108 1.00 0.00 O +ATOM 947 HW1 SOL 315 7.981 23.298 12.656 1.00 0.00 H +ATOM 948 HW2 SOL 315 8.381 21.780 12.747 1.00 0.00 H +ATOM 949 OW SOL 316 23.066 24.865 12.477 1.00 0.00 O +ATOM 950 HW1 SOL 316 23.923 24.801 11.966 1.00 0.00 H +ATOM 951 HW2 SOL 316 22.364 24.788 11.770 1.00 0.00 H +ATOM 952 OW SOL 317 21.609 21.802 31.335 1.00 0.00 O +ATOM 953 HW1 SOL 317 20.981 21.226 30.812 1.00 0.00 H +ATOM 954 HW2 SOL 317 22.229 22.167 30.639 1.00 0.00 H +ATOM 955 OW SOL 318 11.152 12.741 16.477 1.00 0.00 O +ATOM 956 HW1 SOL 318 10.489 13.482 16.374 1.00 0.00 H +ATOM 957 HW2 SOL 318 11.749 12.847 15.682 1.00 0.00 H +ATOM 958 OW SOL 319 16.479 19.355 30.032 1.00 0.00 O +ATOM 959 HW1 SOL 319 15.718 19.991 30.156 1.00 0.00 H +ATOM 960 HW2 SOL 319 17.195 19.922 29.624 1.00 0.00 H +ATOM 961 OW SOL 320 16.511 25.983 28.210 1.00 0.00 O +ATOM 962 HW1 SOL 320 15.788 26.358 28.790 1.00 0.00 H +ATOM 963 HW2 SOL 320 17.095 26.773 28.022 1.00 0.00 H +ATOM 964 OW SOL 321 11.555 9.180 21.060 1.00 0.00 O +ATOM 965 HW1 SOL 321 11.639 8.600 21.869 1.00 0.00 H +ATOM 966 HW2 SOL 321 12.093 9.990 21.293 1.00 0.00 H +ATOM 967 OW SOL 322 29.258 22.693 23.080 1.00 0.00 O +ATOM 968 HW1 SOL 322 28.713 23.180 23.763 1.00 0.00 H +ATOM 969 HW2 SOL 322 28.812 22.924 22.215 1.00 0.00 H +ATOM 970 OW SOL 323 15.293 7.604 25.247 1.00 0.00 O +ATOM 971 HW1 SOL 323 15.848 8.208 24.676 1.00 0.00 H +ATOM 972 HW2 SOL 323 14.580 7.280 24.626 1.00 0.00 H +ATOM 973 OW SOL 324 16.703 32.803 18.354 1.00 0.00 O +ATOM 974 HW1 SOL 324 16.126 33.380 18.931 1.00 0.00 H +ATOM 975 HW2 SOL 324 17.349 32.396 18.999 1.00 0.00 H +ATOM 976 OW SOL 325 13.842 12.645 18.127 1.00 0.00 O +ATOM 977 HW1 SOL 325 14.323 13.243 17.486 1.00 0.00 H +ATOM 978 HW2 SOL 325 12.897 12.662 17.801 1.00 0.00 H +ATOM 979 OW SOL 326 14.556 13.983 8.009 1.00 0.00 O +ATOM 980 HW1 SOL 326 14.206 14.169 8.926 1.00 0.00 H +ATOM 981 HW2 SOL 326 14.445 14.854 7.532 1.00 0.00 H +ATOM 982 OW SOL 327 27.488 22.281 18.419 1.00 0.00 O +ATOM 983 HW1 SOL 327 26.914 22.997 18.815 1.00 0.00 H +ATOM 984 HW2 SOL 327 27.033 21.434 18.693 1.00 0.00 H +ATOM 985 OW SOL 328 20.380 31.224 13.120 1.00 0.00 O +ATOM 986 HW1 SOL 328 20.139 30.588 13.853 1.00 0.00 H +ATOM 987 HW2 SOL 328 20.743 32.019 13.608 1.00 0.00 H +ATOM 988 OW SOL 329 28.233 19.659 23.418 1.00 0.00 O +ATOM 989 HW1 SOL 329 27.999 19.815 22.459 1.00 0.00 H +ATOM 990 HW2 SOL 329 28.599 18.729 23.424 1.00 0.00 H +ATOM 991 OW SOL 330 27.613 9.786 25.228 1.00 0.00 O +ATOM 992 HW1 SOL 330 28.516 9.582 25.605 1.00 0.00 H +ATOM 993 HW2 SOL 330 27.816 10.233 24.357 1.00 0.00 H +ATOM 994 OW SOL 331 26.953 11.666 23.287 1.00 0.00 O +ATOM 995 HW1 SOL 331 27.240 10.967 22.632 1.00 0.00 H +ATOM 996 HW2 SOL 331 26.091 12.004 22.908 1.00 0.00 H +ATOM 997 OW SOL 332 17.325 7.120 22.392 1.00 0.00 O +ATOM 998 HW1 SOL 332 17.426 8.040 22.770 1.00 0.00 H +ATOM 999 HW2 SOL 332 17.048 6.571 23.181 1.00 0.00 H +ATOM 1000 OW SOL 333 11.304 17.823 11.869 1.00 0.00 O +ATOM 1001 HW1 SOL 333 11.740 18.013 12.749 1.00 0.00 H +ATOM 1002 HW2 SOL 333 10.327 17.871 12.075 1.00 0.00 H +ATOM 1003 OW SOL 334 30.392 14.897 18.837 1.00 0.00 O +ATOM 1004 HW1 SOL 334 30.071 15.409 19.634 1.00 0.00 H +ATOM 1005 HW2 SOL 334 31.097 14.295 19.212 1.00 0.00 H +ATOM 1006 OW SOL 335 20.738 13.693 19.175 1.00 0.00 O +ATOM 1007 HW1 SOL 335 19.925 13.716 18.593 1.00 0.00 H +ATOM 1008 HW2 SOL 335 20.469 14.225 19.977 1.00 0.00 H +ATOM 1009 OW SOL 336 22.146 8.872 20.606 1.00 0.00 O +ATOM 1010 HW1 SOL 336 22.323 8.101 19.994 1.00 0.00 H +ATOM 1011 HW2 SOL 336 21.919 9.621 19.984 1.00 0.00 H +ATOM 1012 OW SOL 337 17.898 29.877 12.282 1.00 0.00 O +ATOM 1013 HW1 SOL 337 18.653 29.401 12.733 1.00 0.00 H +ATOM 1014 HW2 SOL 337 17.369 30.254 13.042 1.00 0.00 H +ATOM 1015 OW SOL 338 9.579 23.791 27.081 1.00 0.00 O +ATOM 1016 HW1 SOL 338 9.173 24.458 27.705 1.00 0.00 H +ATOM 1017 HW2 SOL 338 8.955 23.789 26.299 1.00 0.00 H +ATOM 1018 OW SOL 339 18.804 7.349 14.881 1.00 0.00 O +ATOM 1019 HW1 SOL 339 18.160 6.979 15.551 1.00 0.00 H +ATOM 1020 HW2 SOL 339 19.408 7.927 15.429 1.00 0.00 H +ATOM 1021 OW SOL 340 17.958 31.886 24.386 1.00 0.00 O +ATOM 1022 HW1 SOL 340 18.675 31.220 24.183 1.00 0.00 H +ATOM 1023 HW2 SOL 340 18.213 32.682 23.837 1.00 0.00 H +ATOM 1024 OW SOL 341 25.496 25.147 30.905 1.00 0.00 O +ATOM 1025 HW1 SOL 341 25.379 25.434 31.855 1.00 0.00 H +ATOM 1026 HW2 SOL 341 26.139 25.816 30.533 1.00 0.00 H +ATOM 1027 OW SOL 342 22.647 25.090 16.394 1.00 0.00 O +ATOM 1028 HW1 SOL 342 22.824 25.814 17.061 1.00 0.00 H +ATOM 1029 HW2 SOL 342 22.426 25.589 15.557 1.00 0.00 H +ATOM 1030 OW SOL 343 7.347 20.812 17.781 1.00 0.00 O +ATOM 1031 HW1 SOL 343 7.132 20.349 18.640 1.00 0.00 H +ATOM 1032 HW2 SOL 343 7.366 20.070 17.111 1.00 0.00 H +ATOM 1033 OW SOL 344 15.251 10.366 24.890 1.00 0.00 O +ATOM 1034 HW1 SOL 344 14.474 9.836 24.551 1.00 0.00 H +ATOM 1035 HW2 SOL 344 16.010 10.071 24.309 1.00 0.00 H +ATOM 1036 OW SOL 345 13.711 29.075 24.741 1.00 0.00 O +ATOM 1037 HW1 SOL 345 12.999 28.666 25.312 1.00 0.00 H +ATOM 1038 HW2 SOL 345 13.198 29.521 24.008 1.00 0.00 H +ATOM 1039 OW SOL 346 12.199 23.930 24.988 1.00 0.00 O +ATOM 1040 HW1 SOL 346 12.707 23.203 25.448 1.00 0.00 H +ATOM 1041 HW2 SOL 346 12.905 24.433 24.490 1.00 0.00 H +ATOM 1042 OW SOL 347 30.271 18.583 18.904 1.00 0.00 O +ATOM 1043 HW1 SOL 347 29.513 19.052 19.356 1.00 0.00 H +ATOM 1044 HW2 SOL 347 30.661 18.013 19.627 1.00 0.00 H +ATOM 1045 OW SOL 348 18.452 13.467 15.734 1.00 0.00 O +ATOM 1046 HW1 SOL 348 18.745 13.009 16.573 1.00 0.00 H +ATOM 1047 HW2 SOL 348 18.019 14.306 16.061 1.00 0.00 H +ATOM 1048 OW SOL 349 27.608 25.406 21.006 1.00 0.00 O +ATOM 1049 HW1 SOL 349 28.239 25.387 20.230 1.00 0.00 H +ATOM 1050 HW2 SOL 349 26.879 26.019 20.703 1.00 0.00 H +ATOM 1051 OW SOL 350 29.293 13.162 26.803 1.00 0.00 O +ATOM 1052 HW1 SOL 350 28.984 12.418 27.395 1.00 0.00 H +ATOM 1053 HW2 SOL 350 28.454 13.670 26.605 1.00 0.00 H +ATOM 1054 OW SOL 351 25.367 16.306 20.113 1.00 0.00 O +ATOM 1055 HW1 SOL 351 25.891 17.140 20.287 1.00 0.00 H +ATOM 1056 HW2 SOL 351 24.438 16.548 20.392 1.00 0.00 H +ATOM 1057 OW SOL 352 30.822 27.105 23.424 1.00 0.00 O +ATOM 1058 HW1 SOL 352 31.202 27.871 23.943 1.00 0.00 H +ATOM 1059 HW2 SOL 352 30.581 26.439 24.130 1.00 0.00 H +ATOM 1060 OW SOL 353 23.941 14.747 25.295 1.00 0.00 O +ATOM 1061 HW1 SOL 353 24.843 15.162 25.416 1.00 0.00 H +ATOM 1062 HW2 SOL 353 23.374 15.211 25.975 1.00 0.00 H +ATOM 1063 OW SOL 354 13.604 17.251 21.190 1.00 0.00 O +ATOM 1064 HW1 SOL 354 12.826 17.862 21.334 1.00 0.00 H +ATOM 1065 HW2 SOL 354 13.569 16.634 21.976 1.00 0.00 H +ATOM 1066 OW SOL 355 18.949 7.925 24.760 1.00 0.00 O +ATOM 1067 HW1 SOL 355 19.061 8.403 23.889 1.00 0.00 H +ATOM 1068 HW2 SOL 355 17.959 7.917 24.900 1.00 0.00 H +ATOM 1069 OW SOL 356 8.916 14.706 23.338 1.00 0.00 O +ATOM 1070 HW1 SOL 356 9.277 14.271 24.163 1.00 0.00 H +ATOM 1071 HW2 SOL 356 8.325 15.430 23.693 1.00 0.00 H +ATOM 1072 OW SOL 357 26.796 12.444 17.183 1.00 0.00 O +ATOM 1073 HW1 SOL 357 27.461 12.928 16.616 1.00 0.00 H +ATOM 1074 HW2 SOL 357 26.186 13.168 17.503 1.00 0.00 H +ATOM 1075 OW SOL 358 13.234 9.422 15.555 1.00 0.00 O +ATOM 1076 HW1 SOL 358 12.639 9.431 16.359 1.00 0.00 H +ATOM 1077 HW2 SOL 358 12.597 9.516 14.790 1.00 0.00 H +ATOM 1078 OW SOL 359 16.066 17.405 24.928 1.00 0.00 O +ATOM 1079 HW1 SOL 359 15.432 17.970 24.400 1.00 0.00 H +ATOM 1080 HW2 SOL 359 15.787 17.561 25.875 1.00 0.00 H +ATOM 1081 OW SOL 360 18.659 24.815 26.775 1.00 0.00 O +ATOM 1082 HW1 SOL 360 19.219 24.209 27.339 1.00 0.00 H +ATOM 1083 HW2 SOL 360 18.065 25.272 27.437 1.00 0.00 H +ATOM 1084 OW SOL 361 10.600 13.243 25.686 1.00 0.00 O +ATOM 1085 HW1 SOL 361 11.333 13.874 25.432 1.00 0.00 H +ATOM 1086 HW2 SOL 361 10.318 12.846 24.812 1.00 0.00 H +ATOM 1087 OW SOL 362 10.012 29.575 16.524 1.00 0.00 O +ATOM 1088 HW1 SOL 362 9.500 29.086 15.818 1.00 0.00 H +ATOM 1089 HW2 SOL 362 10.877 29.798 16.075 1.00 0.00 H +ATOM 1090 OW SOL 363 23.586 27.355 19.055 1.00 0.00 O +ATOM 1091 HW1 SOL 363 24.502 26.964 18.967 1.00 0.00 H +ATOM 1092 HW2 SOL 363 23.752 28.341 19.077 1.00 0.00 H +ATOM 1093 OW SOL 364 9.635 19.206 24.800 1.00 0.00 O +ATOM 1094 HW1 SOL 364 9.097 19.827 25.370 1.00 0.00 H +ATOM 1095 HW2 SOL 364 10.251 18.762 25.452 1.00 0.00 H +ATOM 1096 OW SOL 365 14.658 26.293 14.899 1.00 0.00 O +ATOM 1097 HW1 SOL 365 14.872 25.976 13.975 1.00 0.00 H +ATOM 1098 HW2 SOL 365 15.201 27.127 14.994 1.00 0.00 H +ATOM 1099 OW SOL 366 13.759 14.754 20.145 1.00 0.00 O +ATOM 1100 HW1 SOL 366 13.554 14.035 19.482 1.00 0.00 H +ATOM 1101 HW2 SOL 366 14.756 14.731 20.219 1.00 0.00 H +ATOM 1102 OW SOL 367 12.001 14.814 10.866 1.00 0.00 O +ATOM 1103 HW1 SOL 367 12.869 14.379 10.626 1.00 0.00 H +ATOM 1104 HW2 SOL 367 11.604 15.053 9.980 1.00 0.00 H +ATOM 1105 OW SOL 368 18.668 20.118 8.220 1.00 0.00 O +ATOM 1106 HW1 SOL 368 17.814 20.193 8.735 1.00 0.00 H +ATOM 1107 HW2 SOL 368 18.404 19.611 7.399 1.00 0.00 H +ATOM 1108 OW SOL 369 23.926 13.005 24.371 1.00 0.00 O +ATOM 1109 HW1 SOL 369 23.334 13.133 23.575 1.00 0.00 H +ATOM 1110 HW2 SOL 369 24.838 12.905 23.974 1.00 0.00 H +ATOM 1111 OW SOL 370 23.517 7.462 17.110 1.00 0.00 O +ATOM 1112 HW1 SOL 370 24.488 7.690 17.189 1.00 0.00 H +ATOM 1113 HW2 SOL 370 23.088 8.336 16.880 1.00 0.00 H +ATOM 1114 OW SOL 371 26.357 18.637 14.769 1.00 0.00 O +ATOM 1115 HW1 SOL 371 26.316 19.578 14.433 1.00 0.00 H +ATOM 1116 HW2 SOL 371 27.258 18.319 14.472 1.00 0.00 H +ATOM 1117 OW SOL 372 21.116 28.517 20.056 1.00 0.00 O +ATOM 1118 HW1 SOL 372 20.534 27.824 19.631 1.00 0.00 H +ATOM 1119 HW2 SOL 372 21.533 28.985 19.277 1.00 0.00 H +ATOM 1120 OW SOL 373 27.604 11.145 20.199 1.00 0.00 O +ATOM 1121 HW1 SOL 373 27.072 11.634 20.889 1.00 0.00 H +ATOM 1122 HW2 SOL 373 28.093 10.450 20.726 1.00 0.00 H +ATOM 1123 OW SOL 374 11.692 16.705 31.095 1.00 0.00 O +ATOM 1124 HW1 SOL 374 10.808 16.892 30.666 1.00 0.00 H +ATOM 1125 HW2 SOL 374 12.254 16.366 30.340 1.00 0.00 H +ATOM 1126 OW SOL 375 17.350 29.821 30.443 1.00 0.00 O +ATOM 1127 HW1 SOL 375 17.988 29.961 29.686 1.00 0.00 H +ATOM 1128 HW2 SOL 375 17.740 29.048 30.941 1.00 0.00 H +ATOM 1129 OW SOL 376 16.689 13.349 21.122 1.00 0.00 O +ATOM 1130 HW1 SOL 376 16.772 12.656 21.838 1.00 0.00 H +ATOM 1131 HW2 SOL 376 16.237 14.113 21.584 1.00 0.00 H +ATOM 1132 OW SOL 377 15.870 18.012 32.581 1.00 0.00 O +ATOM 1133 HW1 SOL 377 15.987 18.011 31.588 1.00 0.00 H +ATOM 1134 HW2 SOL 377 16.784 17.796 32.926 1.00 0.00 H +ATOM 1135 OW SOL 378 18.304 16.070 15.111 1.00 0.00 O +ATOM 1136 HW1 SOL 378 18.299 17.006 14.760 1.00 0.00 H +ATOM 1137 HW2 SOL 378 17.907 15.536 14.364 1.00 0.00 H +ATOM 1138 OW SOL 379 18.903 20.198 10.486 1.00 0.00 O +ATOM 1139 HW1 SOL 379 19.030 19.297 10.901 1.00 0.00 H +ATOM 1140 HW2 SOL 379 19.667 20.733 10.846 1.00 0.00 H +ATOM 1141 OW SOL 380 22.502 15.710 17.837 1.00 0.00 O +ATOM 1142 HW1 SOL 380 22.313 15.970 18.784 1.00 0.00 H +ATOM 1143 HW2 SOL 380 22.606 16.588 17.368 1.00 0.00 H +ATOM 1144 OW SOL 381 29.683 30.062 19.831 1.00 0.00 O +ATOM 1145 HW1 SOL 381 29.674 29.784 20.792 1.00 0.00 H +ATOM 1146 HW2 SOL 381 28.829 30.570 19.724 1.00 0.00 H +ATOM 1147 OW SOL 382 26.170 27.205 27.204 1.00 0.00 O +ATOM 1148 HW1 SOL 382 26.836 26.494 27.429 1.00 0.00 H +ATOM 1149 HW2 SOL 382 25.555 27.210 27.993 1.00 0.00 H +ATOM 1150 OW SOL 383 16.106 13.386 18.542 1.00 0.00 O +ATOM 1151 HW1 SOL 383 16.962 13.868 18.728 1.00 0.00 H +ATOM 1152 HW2 SOL 383 15.997 12.785 19.334 1.00 0.00 H +ATOM 1153 OW SOL 384 18.518 21.201 17.289 1.00 0.00 O +ATOM 1154 HW1 SOL 384 18.236 20.768 16.433 1.00 0.00 H +ATOM 1155 HW2 SOL 384 19.194 21.879 17.000 1.00 0.00 H +ATOM 1156 OW SOL 385 27.338 17.916 28.534 1.00 0.00 O +ATOM 1157 HW1 SOL 385 27.345 17.201 29.232 1.00 0.00 H +ATOM 1158 HW2 SOL 385 27.179 18.754 29.056 1.00 0.00 H +ATOM 1159 OW SOL 386 22.872 26.440 9.393 1.00 0.00 O +ATOM 1160 HW1 SOL 386 22.770 25.847 10.192 1.00 0.00 H +ATOM 1161 HW2 SOL 386 22.487 27.312 9.696 1.00 0.00 H +ATOM 1162 OW SOL 387 26.300 16.482 16.316 1.00 0.00 O +ATOM 1163 HW1 SOL 387 25.677 16.528 17.097 1.00 0.00 H +ATOM 1164 HW2 SOL 387 25.909 15.761 15.744 1.00 0.00 H +ATOM 1165 OW SOL 388 25.715 22.803 30.761 1.00 0.00 O +ATOM 1166 HW1 SOL 388 26.272 21.975 30.708 1.00 0.00 H +ATOM 1167 HW2 SOL 388 26.349 23.531 30.501 1.00 0.00 H +ATOM 1168 OW SOL 389 24.335 9.089 13.169 1.00 0.00 O +ATOM 1169 HW1 SOL 389 24.710 8.808 14.052 1.00 0.00 H +ATOM 1170 HW2 SOL 389 24.584 8.337 12.558 1.00 0.00 H +ATOM 1171 OW SOL 390 19.492 13.050 28.693 1.00 0.00 O +ATOM 1172 HW1 SOL 390 18.690 12.532 28.990 1.00 0.00 H +ATOM 1173 HW2 SOL 390 19.954 12.428 28.062 1.00 0.00 H +ATOM 1174 OW SOL 391 15.319 18.192 20.811 1.00 0.00 O +ATOM 1175 HW1 SOL 391 15.078 18.658 19.960 1.00 0.00 H +ATOM 1176 HW2 SOL 391 16.106 18.708 21.148 1.00 0.00 H +ATOM 1177 OW SOL 392 10.011 10.867 21.045 1.00 0.00 O +ATOM 1178 HW1 SOL 392 10.224 10.284 20.261 1.00 0.00 H +ATOM 1179 HW2 SOL 392 9.590 11.674 20.630 1.00 0.00 H +ATOM 1180 OW SOL 393 29.350 11.459 25.227 1.00 0.00 O +ATOM 1181 HW1 SOL 393 30.300 11.760 25.311 1.00 0.00 H +ATOM 1182 HW2 SOL 393 29.123 11.659 24.275 1.00 0.00 H +ATOM 1183 OW SOL 394 12.469 18.947 30.412 1.00 0.00 O +ATOM 1184 HW1 SOL 394 11.739 19.586 30.172 1.00 0.00 H +ATOM 1185 HW2 SOL 394 12.924 18.769 29.540 1.00 0.00 H +ATOM 1186 OW SOL 395 27.922 15.175 20.298 1.00 0.00 O +ATOM 1187 HW1 SOL 395 27.229 15.856 20.059 1.00 0.00 H +ATOM 1188 HW2 SOL 395 27.389 14.420 20.680 1.00 0.00 H +ATOM 1189 OW SOL 396 16.812 9.336 28.303 1.00 0.00 O +ATOM 1190 HW1 SOL 396 16.960 9.171 29.278 1.00 0.00 H +ATOM 1191 HW2 SOL 396 16.286 8.540 28.006 1.00 0.00 H +ATOM 1192 OW SOL 397 15.418 29.692 28.828 1.00 0.00 O +ATOM 1193 HW1 SOL 397 16.073 30.447 28.800 1.00 0.00 H +ATOM 1194 HW2 SOL 397 15.156 29.643 29.792 1.00 0.00 H +ATOM 1195 OW SOL 398 27.811 30.191 14.603 1.00 0.00 O +ATOM 1196 HW1 SOL 398 27.420 31.110 14.628 1.00 0.00 H +ATOM 1197 HW2 SOL 398 27.684 29.906 13.653 1.00 0.00 H +ATOM 1198 OW SOL 399 11.736 20.569 9.793 1.00 0.00 O +ATOM 1199 HW1 SOL 399 11.736 20.456 8.800 1.00 0.00 H +ATOM 1200 HW2 SOL 399 10.834 20.237 10.069 1.00 0.00 H +ATOM 1201 OW SOL 400 15.485 14.225 11.483 1.00 0.00 O +ATOM 1202 HW1 SOL 400 15.008 14.268 10.605 1.00 0.00 H +ATOM 1203 HW2 SOL 400 16.443 14.371 11.237 1.00 0.00 H +ATOM 1204 OW SOL 401 12.709 30.471 13.919 1.00 0.00 O +ATOM 1205 HW1 SOL 401 11.788 30.503 14.307 1.00 0.00 H +ATOM 1206 HW2 SOL 401 13.084 29.615 14.272 1.00 0.00 H +ATOM 1207 OW SOL 402 31.111 20.994 19.932 1.00 0.00 O +ATOM 1208 HW1 SOL 402 31.576 21.475 20.675 1.00 0.00 H +ATOM 1209 HW2 SOL 402 30.467 20.394 20.407 1.00 0.00 H +ATOM 1210 OW SOL 403 24.062 30.747 23.377 1.00 0.00 O +ATOM 1211 HW1 SOL 403 24.332 31.552 23.905 1.00 0.00 H +ATOM 1212 HW2 SOL 403 24.483 30.900 22.483 1.00 0.00 H +ATOM 1213 OW SOL 404 18.431 11.951 18.140 1.00 0.00 O +ATOM 1214 HW1 SOL 404 17.742 11.640 17.485 1.00 0.00 H +ATOM 1215 HW2 SOL 404 17.895 12.194 18.948 1.00 0.00 H +ATOM 1216 OW SOL 405 16.283 31.157 26.623 1.00 0.00 O +ATOM 1217 HW1 SOL 405 16.910 31.868 26.305 1.00 0.00 H +ATOM 1218 HW2 SOL 405 16.305 30.478 25.890 1.00 0.00 H +ATOM 1219 OW SOL 406 18.803 21.710 12.232 1.00 0.00 O +ATOM 1220 HW1 SOL 406 18.994 22.675 12.415 1.00 0.00 H +ATOM 1221 HW2 SOL 406 17.880 21.581 12.593 1.00 0.00 H +ATOM 1222 OW SOL 407 11.286 24.629 11.978 1.00 0.00 O +ATOM 1223 HW1 SOL 407 10.390 25.020 12.189 1.00 0.00 H +ATOM 1224 HW2 SOL 407 11.927 25.339 12.271 1.00 0.00 H +ATOM 1225 OW SOL 408 25.149 18.535 17.370 1.00 0.00 O +ATOM 1226 HW1 SOL 408 25.862 18.381 16.686 1.00 0.00 H +ATOM 1227 HW2 SOL 408 24.761 19.420 17.110 1.00 0.00 H +ATOM 1228 OW SOL 409 19.328 20.068 13.042 1.00 0.00 O +ATOM 1229 HW1 SOL 409 18.576 19.495 12.717 1.00 0.00 H +ATOM 1230 HW2 SOL 409 19.812 19.477 13.687 1.00 0.00 H +ATOM 1231 OW SOL 410 21.237 25.471 27.521 1.00 0.00 O +ATOM 1232 HW1 SOL 410 21.435 24.646 28.050 1.00 0.00 H +ATOM 1233 HW2 SOL 410 20.625 25.992 28.116 1.00 0.00 H +ATOM 1234 OW SOL 411 12.074 20.398 27.067 1.00 0.00 O +ATOM 1235 HW1 SOL 411 12.603 19.796 27.664 1.00 0.00 H +ATOM 1236 HW2 SOL 411 11.489 20.905 27.700 1.00 0.00 H +ATOM 1237 OW SOL 412 13.812 21.589 25.906 1.00 0.00 O +ATOM 1238 HW1 SOL 412 12.974 21.098 25.669 1.00 0.00 H +ATOM 1239 HW2 SOL 412 14.451 20.860 26.151 1.00 0.00 H +ATOM 1240 OW SOL 413 25.688 30.704 27.010 1.00 0.00 O +ATOM 1241 HW1 SOL 413 25.097 30.864 26.221 1.00 0.00 H +ATOM 1242 HW2 SOL 413 25.225 31.186 27.754 1.00 0.00 H +ATOM 1243 OW SOL 414 13.208 18.032 32.434 1.00 0.00 O +ATOM 1244 HW1 SOL 414 14.078 18.249 31.993 1.00 0.00 H +ATOM 1245 HW2 SOL 414 12.655 18.852 32.282 1.00 0.00 H +ATOM 1246 OW SOL 415 7.108 16.434 22.080 1.00 0.00 O +ATOM 1247 HW1 SOL 415 7.484 17.358 22.011 1.00 0.00 H +ATOM 1248 HW2 SOL 415 7.761 15.875 21.567 1.00 0.00 H +ATOM 1249 OW SOL 416 14.774 20.761 17.474 1.00 0.00 O +ATOM 1250 HW1 SOL 416 14.703 19.946 18.048 1.00 0.00 H +ATOM 1251 HW2 SOL 416 15.365 20.469 16.722 1.00 0.00 H +ATOM 1252 OW SOL 417 25.788 20.505 20.425 1.00 0.00 O +ATOM 1253 HW1 SOL 417 24.806 20.348 20.318 1.00 0.00 H +ATOM 1254 HW2 SOL 417 26.199 19.650 20.108 1.00 0.00 H +ATOM 1255 OW SOL 418 9.167 20.054 18.678 1.00 0.00 O +ATOM 1256 HW1 SOL 418 8.771 19.152 18.849 1.00 0.00 H +ATOM 1257 HW2 SOL 418 10.121 19.854 18.456 1.00 0.00 H +ATOM 1258 OW SOL 419 9.447 26.979 21.497 1.00 0.00 O +ATOM 1259 HW1 SOL 419 9.976 26.656 20.713 1.00 0.00 H +ATOM 1260 HW2 SOL 419 8.504 26.750 21.255 1.00 0.00 H +ATOM 1261 OW SOL 420 18.650 8.256 26.647 1.00 0.00 O +ATOM 1262 HW1 SOL 420 19.333 8.559 27.311 1.00 0.00 H +ATOM 1263 HW2 SOL 420 18.178 9.099 26.392 1.00 0.00 H +ATOM 1264 OW SOL 421 15.908 15.453 17.743 1.00 0.00 O +ATOM 1265 HW1 SOL 421 15.775 14.632 17.188 1.00 0.00 H +ATOM 1266 HW2 SOL 421 15.282 15.322 18.512 1.00 0.00 H +ATOM 1267 OW SOL 422 11.188 23.471 19.185 1.00 0.00 O +ATOM 1268 HW1 SOL 422 11.046 23.246 18.221 1.00 0.00 H +ATOM 1269 HW2 SOL 422 10.980 22.615 19.659 1.00 0.00 H +ATOM 1270 OW SOL 423 29.510 25.440 22.026 1.00 0.00 O +ATOM 1271 HW1 SOL 423 28.759 25.853 22.540 1.00 0.00 H +ATOM 1272 HW2 SOL 423 29.659 24.566 22.487 1.00 0.00 H +ATOM 1273 OW SOL 424 15.725 17.515 14.579 1.00 0.00 O +ATOM 1274 HW1 SOL 424 15.688 18.487 14.813 1.00 0.00 H +ATOM 1275 HW2 SOL 424 16.285 17.119 15.307 1.00 0.00 H +ATOM 1276 OW SOL 425 18.623 29.156 26.325 1.00 0.00 O +ATOM 1277 HW1 SOL 425 18.714 29.852 25.612 1.00 0.00 H +ATOM 1278 HW2 SOL 425 18.470 28.311 25.812 1.00 0.00 H +ATOM 1279 OW SOL 426 21.211 9.001 15.334 1.00 0.00 O +ATOM 1280 HW1 SOL 426 20.960 8.753 14.399 1.00 0.00 H +ATOM 1281 HW2 SOL 426 21.147 9.998 15.339 1.00 0.00 H +ATOM 1282 OW SOL 427 19.904 17.241 23.554 1.00 0.00 O +ATOM 1283 HW1 SOL 427 19.290 16.757 22.932 1.00 0.00 H +ATOM 1284 HW2 SOL 427 19.962 16.637 24.348 1.00 0.00 H +ATOM 1285 OW SOL 428 21.748 11.771 22.640 1.00 0.00 O +ATOM 1286 HW1 SOL 428 21.852 12.618 22.120 1.00 0.00 H +ATOM 1287 HW2 SOL 428 21.788 12.072 23.593 1.00 0.00 H +ATOM 1288 OW SOL 429 24.392 10.424 15.644 1.00 0.00 O +ATOM 1289 HW1 SOL 429 25.310 10.820 15.617 1.00 0.00 H +ATOM 1290 HW2 SOL 429 23.962 10.771 14.811 1.00 0.00 H +ATOM 1291 OW SOL 430 10.495 24.796 24.754 1.00 0.00 O +ATOM 1292 HW1 SOL 430 9.585 25.143 24.981 1.00 0.00 H +ATOM 1293 HW2 SOL 430 11.113 25.458 25.178 1.00 0.00 H +ATOM 1294 OW SOL 431 25.149 15.809 11.203 1.00 0.00 O +ATOM 1295 HW1 SOL 431 24.365 15.298 10.851 1.00 0.00 H +ATOM 1296 HW2 SOL 431 24.776 16.298 11.992 1.00 0.00 H +ATOM 1297 OW SOL 432 22.707 30.090 25.598 1.00 0.00 O +ATOM 1298 HW1 SOL 432 22.038 29.827 26.292 1.00 0.00 H +ATOM 1299 HW2 SOL 432 23.157 30.890 25.995 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_interface_energy_forces/coords_2955.pdb b/examples/latte_interface_energy_forces/coords_2955.pdb new file mode 100644 index 00000000..04974ee5 --- /dev/null +++ b/examples/latte_interface_energy_forces/coords_2955.pdb @@ -0,0 +1,2961 @@ +TITLE my_single_water.xyz +REMARK THIS IS A SIMULATION BOX +CRYST1 31.230 31.230 31.230 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H HOH 0 15.009 16.295 15.615 1.00 0.00 H +ATOM 2 O HOH 1 15.427 15.434 15.615 1.00 0.00 O +ATOM 3 H HOH 0 16.408 15.115 15.615 1.00 0.00 H +ATOM 4 OW SOL 1 5.690 12.751 11.651 1.00 0.00 O +ATOM 5 HW1 SOL 1 4.760 12.681 11.281 1.00 0.00 H +ATOM 6 HW2 SOL 1 5.800 13.641 12.091 1.00 0.00 H +ATOM 7 OW SOL 2 15.551 15.111 7.030 1.00 0.00 O +ATOM 8 HW1 SOL 2 14.981 14.951 7.840 1.00 0.00 H +ATOM 9 HW2 SOL 2 14.961 15.211 6.230 1.00 0.00 H +ATOM 10 OW SOL 3 17.431 6.180 8.560 1.00 0.00 O +ATOM 11 HW1 SOL 3 17.761 7.120 8.560 1.00 0.00 H +ATOM 12 HW2 SOL 3 17.941 5.640 9.220 1.00 0.00 H +ATOM 13 OW SOL 4 11.351 7.030 7.170 1.00 0.00 O +ATOM 14 HW1 SOL 4 11.921 7.810 6.920 1.00 0.00 H +ATOM 15 HW2 SOL 4 10.751 7.290 7.930 1.00 0.00 H +ATOM 16 OW SOL 5 17.551 6.070 2.310 1.00 0.00 O +ATOM 17 HW1 SOL 5 17.431 5.940 1.320 1.00 0.00 H +ATOM 18 HW2 SOL 5 17.251 5.260 2.800 1.00 0.00 H +ATOM 19 OW SOL 6 7.680 11.441 10.231 1.00 0.00 O +ATOM 20 HW1 SOL 6 6.900 11.611 10.831 1.00 0.00 H +ATOM 21 HW2 SOL 6 8.020 12.311 9.871 1.00 0.00 H +ATOM 22 OW SOL 7 8.500 7.980 18.231 1.00 0.00 O +ATOM 23 HW1 SOL 7 8.460 8.740 18.881 1.00 0.00 H +ATOM 24 HW2 SOL 7 8.720 8.340 17.321 1.00 0.00 H +ATOM 25 OW SOL 8 6.850 10.121 6.650 1.00 0.00 O +ATOM 26 HW1 SOL 8 7.540 9.961 7.350 1.00 0.00 H +ATOM 27 HW2 SOL 8 6.120 10.691 7.030 1.00 0.00 H +ATOM 28 OW SOL 9 6.860 11.611 18.031 1.00 0.00 O +ATOM 29 HW1 SOL 9 7.460 12.401 18.171 1.00 0.00 H +ATOM 30 HW2 SOL 9 6.000 11.921 17.621 1.00 0.00 H +ATOM 31 OW SOL 10 14.601 15.051 13.391 1.00 0.00 O +ATOM 32 HW1 SOL 10 14.841 15.991 13.651 1.00 0.00 H +ATOM 33 HW2 SOL 10 14.441 14.511 14.211 1.00 0.00 H +ATOM 34 OW SOL 11 4.380 3.920 14.991 1.00 0.00 O +ATOM 35 HW1 SOL 11 5.200 3.360 15.081 1.00 0.00 H +ATOM 36 HW2 SOL 11 3.570 3.340 15.031 1.00 0.00 H +ATOM 37 OW SOL 12 16.031 4.470 7.370 1.00 0.00 O +ATOM 38 HW1 SOL 12 15.291 4.930 6.870 1.00 0.00 H +ATOM 39 HW2 SOL 12 16.541 5.150 7.900 1.00 0.00 H +ATOM 40 OW SOL 13 11.271 13.411 16.901 1.00 0.00 O +ATOM 41 HW1 SOL 13 11.741 13.411 17.781 1.00 0.00 H +ATOM 42 HW2 SOL 13 10.791 12.541 16.791 1.00 0.00 H +ATOM 43 OW SOL 14 2.400 10.911 8.860 1.00 0.00 O +ATOM 44 HW1 SOL 14 2.540 10.071 9.380 1.00 0.00 H +ATOM 45 HW2 SOL 14 1.850 11.551 9.410 1.00 0.00 H +ATOM 46 OW SOL 15 6.200 17.861 14.391 1.00 0.00 O +ATOM 47 HW1 SOL 15 5.280 17.691 14.741 1.00 0.00 H +ATOM 48 HW2 SOL 15 6.480 18.781 14.651 1.00 0.00 H +ATOM 49 OW SOL 16 6.060 9.641 1.230 1.00 0.00 O +ATOM 50 HW1 SOL 16 6.130 10.481 0.690 1.00 0.00 H +ATOM 51 HW2 SOL 16 6.520 9.771 2.110 1.00 0.00 H +ATOM 52 OW SOL 17 15.941 1.140 14.801 1.00 0.00 O +ATOM 53 HW1 SOL 17 15.761 1.810 14.081 1.00 0.00 H +ATOM 54 HW2 SOL 17 15.911 1.600 15.691 1.00 0.00 H +ATOM 55 OW SOL 18 1.220 6.430 5.630 1.00 0.00 O +ATOM 56 HW1 SOL 18 0.770 5.550 5.800 1.00 0.00 H +ATOM 57 HW2 SOL 18 1.210 6.970 6.470 1.00 0.00 H +ATOM 58 OW SOL 19 18.421 17.671 3.590 1.00 0.00 O +ATOM 59 HW1 SOL 19 18.961 17.381 4.390 1.00 0.00 H +ATOM 60 HW2 SOL 19 18.721 18.571 3.300 1.00 0.00 H +ATOM 61 OW SOL 20 16.891 9.220 6.120 1.00 0.00 O +ATOM 62 HW1 SOL 20 17.841 8.930 6.200 1.00 0.00 H +ATOM 63 HW2 SOL 20 16.811 9.870 5.370 1.00 0.00 H +ATOM 64 OW SOL 21 16.411 11.081 4.320 1.00 0.00 O +ATOM 65 HW1 SOL 21 17.271 11.101 3.800 1.00 0.00 H +ATOM 66 HW2 SOL 21 16.551 11.551 5.200 1.00 0.00 H +ATOM 67 OW SOL 22 1.130 7.370 15.971 1.00 0.00 O +ATOM 68 HW1 SOL 22 2.010 7.240 16.421 1.00 0.00 H +ATOM 69 HW2 SOL 22 1.000 8.340 15.751 1.00 0.00 H +ATOM 70 OW SOL 23 6.130 13.651 7.260 1.00 0.00 O +ATOM 71 HW1 SOL 23 5.640 12.781 7.350 1.00 0.00 H +ATOM 72 HW2 SOL 23 5.900 14.081 6.390 1.00 0.00 H +ATOM 73 OW SOL 24 12.931 12.281 14.231 1.00 0.00 O +ATOM 74 HW1 SOL 24 13.301 11.551 13.651 1.00 0.00 H +ATOM 75 HW2 SOL 24 13.451 12.331 15.081 1.00 0.00 H +ATOM 76 OW SOL 25 8.090 0.040 5.020 1.00 0.00 O +ATOM 77 HW1 SOL 25 8.490 0.950 4.930 1.00 0.00 H +ATOM 78 HW2 SOL 25 7.090 0.120 5.080 1.00 0.00 H +ATOM 79 OW SOL 26 15.251 9.991 1.900 1.00 0.00 O +ATOM 80 HW1 SOL 26 14.621 9.231 2.030 1.00 0.00 H +ATOM 81 HW2 SOL 26 15.731 10.171 2.760 1.00 0.00 H +ATOM 82 OW SOL 27 11.871 17.921 16.161 1.00 0.00 O +ATOM 83 HW1 SOL 27 12.111 18.521 15.401 1.00 0.00 H +ATOM 84 HW2 SOL 27 11.941 16.971 15.861 1.00 0.00 H +ATOM 85 OW SOL 28 3.170 2.510 18.011 1.00 0.00 O +ATOM 86 HW1 SOL 28 3.880 3.220 18.071 1.00 0.00 H +ATOM 87 HW2 SOL 28 2.290 2.900 18.291 1.00 0.00 H +ATOM 88 OW SOL 29 14.661 14.171 9.531 1.00 0.00 O +ATOM 89 HW1 SOL 29 14.071 14.231 10.331 1.00 0.00 H +ATOM 90 HW2 SOL 29 14.511 13.291 9.071 1.00 0.00 H +ATOM 91 OW SOL 30 16.671 17.141 5.720 1.00 0.00 O +ATOM 92 HW1 SOL 30 16.261 16.911 4.840 1.00 0.00 H +ATOM 93 HW2 SOL 30 16.491 16.401 6.370 1.00 0.00 H +ATOM 94 OW SOL 31 5.980 7.290 2.700 1.00 0.00 O +ATOM 95 HW1 SOL 31 6.220 7.980 2.020 1.00 0.00 H +ATOM 96 HW2 SOL 31 5.200 7.620 3.240 1.00 0.00 H +ATOM 97 OW SOL 32 12.811 3.450 9.441 1.00 0.00 O +ATOM 98 HW1 SOL 32 11.951 2.950 9.311 1.00 0.00 H +ATOM 99 HW2 SOL 32 13.431 2.910 10.001 1.00 0.00 H +ATOM 100 OW SOL 33 15.761 16.621 3.070 1.00 0.00 O +ATOM 101 HW1 SOL 33 16.651 17.081 3.100 1.00 0.00 H +ATOM 102 HW2 SOL 33 15.551 16.381 2.120 1.00 0.00 H +ATOM 103 OW SOL 34 8.070 6.050 14.651 1.00 0.00 O +ATOM 104 HW1 SOL 34 7.600 6.020 15.541 1.00 0.00 H +ATOM 105 HW2 SOL 34 7.560 5.500 13.991 1.00 0.00 H +ATOM 106 OW SOL 35 13.941 4.690 16.741 1.00 0.00 O +ATOM 107 HW1 SOL 35 13.741 5.120 17.621 1.00 0.00 H +ATOM 108 HW2 SOL 35 14.721 4.070 16.831 1.00 0.00 H +ATOM 109 OW SOL 36 9.731 8.900 15.721 1.00 0.00 O +ATOM 110 HW1 SOL 36 10.191 8.060 15.431 1.00 0.00 H +ATOM 111 HW2 SOL 36 9.171 9.240 14.971 1.00 0.00 H +ATOM 112 OW SOL 37 9.911 4.100 12.421 1.00 0.00 O +ATOM 113 HW1 SOL 37 9.141 4.440 12.961 1.00 0.00 H +ATOM 114 HW2 SOL 37 9.571 3.590 11.631 1.00 0.00 H +ATOM 115 OW SOL 38 10.411 7.010 4.290 1.00 0.00 O +ATOM 116 HW1 SOL 38 10.671 6.970 5.250 1.00 0.00 H +ATOM 117 HW2 SOL 38 9.561 6.500 4.150 1.00 0.00 H +ATOM 118 OW SOL 39 8.650 3.480 1.950 1.00 0.00 O +ATOM 119 HW1 SOL 39 9.240 4.110 1.460 1.00 0.00 H +ATOM 120 HW2 SOL 39 8.840 2.540 1.660 1.00 0.00 H +ATOM 121 OW SOL 40 17.191 5.850 18.311 1.00 0.00 O +ATOM 122 HW1 SOL 40 16.931 6.740 17.951 1.00 0.00 H +ATOM 123 HW2 SOL 40 17.171 5.170 17.581 1.00 0.00 H +ATOM 124 OW SOL 41 13.621 11.441 5.450 1.00 0.00 O +ATOM 125 HW1 SOL 41 14.451 11.151 4.970 1.00 0.00 H +ATOM 126 HW2 SOL 41 13.131 12.111 4.890 1.00 0.00 H +ATOM 127 OW SOL 42 5.500 1.960 8.850 1.00 0.00 O +ATOM 128 HW1 SOL 42 5.450 1.910 9.850 1.00 0.00 H +ATOM 129 HW2 SOL 42 5.520 2.920 8.560 1.00 0.00 H +ATOM 130 OW SOL 43 10.081 14.561 4.770 1.00 0.00 O +ATOM 131 HW1 SOL 43 9.621 15.281 4.250 1.00 0.00 H +ATOM 132 HW2 SOL 43 10.041 14.761 5.750 1.00 0.00 H +ATOM 133 OW SOL 44 3.510 18.011 8.530 1.00 0.00 O +ATOM 134 HW1 SOL 44 4.010 17.151 8.590 1.00 0.00 H +ATOM 135 HW2 SOL 44 4.160 18.781 8.500 1.00 0.00 H +ATOM 136 OW SOL 45 17.951 10.661 8.730 1.00 0.00 O +ATOM 137 HW1 SOL 45 17.331 10.511 7.970 1.00 0.00 H +ATOM 138 HW2 SOL 45 17.431 10.771 9.580 1.00 0.00 H +ATOM 139 OW SOL 46 12.271 15.501 15.061 1.00 0.00 O +ATOM 140 HW1 SOL 46 12.331 14.731 15.701 1.00 0.00 H +ATOM 141 HW2 SOL 46 11.751 15.241 14.261 1.00 0.00 H +ATOM 142 OW SOL 47 3.210 9.431 2.420 1.00 0.00 O +ATOM 143 HW1 SOL 47 4.030 9.821 2.000 1.00 0.00 H +ATOM 144 HW2 SOL 47 2.940 8.611 1.930 1.00 0.00 H +ATOM 145 OW SOL 48 14.581 7.350 7.280 1.00 0.00 O +ATOM 146 HW1 SOL 48 14.531 6.700 8.030 1.00 0.00 H +ATOM 147 HW2 SOL 48 15.381 7.940 7.410 1.00 0.00 H +ATOM 148 OW SOL 49 4.610 12.661 17.271 1.00 0.00 O +ATOM 149 HW1 SOL 49 4.110 12.671 16.411 1.00 0.00 H +ATOM 150 HW2 SOL 49 3.980 12.481 18.031 1.00 0.00 H +ATOM 151 OW SOL 50 11.111 17.761 2.370 1.00 0.00 O +ATOM 152 HW1 SOL 50 10.511 17.141 2.870 1.00 0.00 H +ATOM 153 HW2 SOL 50 11.421 17.321 1.520 1.00 0.00 H +ATOM 154 OW SOL 51 2.020 2.850 14.981 1.00 0.00 O +ATOM 155 HW1 SOL 51 1.220 3.450 14.851 1.00 0.00 H +ATOM 156 HW2 SOL 51 1.920 2.360 15.841 1.00 0.00 H +ATOM 157 OW SOL 52 16.321 13.771 0.810 1.00 0.00 O +ATOM 158 HW1 SOL 52 16.001 14.711 0.710 1.00 0.00 H +ATOM 159 HW2 SOL 52 15.561 13.141 0.690 1.00 0.00 H +ATOM 160 OW SOL 53 4.640 17.431 3.230 1.00 0.00 O +ATOM 161 HW1 SOL 53 4.970 17.821 4.090 1.00 0.00 H +ATOM 162 HW2 SOL 53 5.400 17.361 2.580 1.00 0.00 H +ATOM 163 OW SOL 54 14.001 1.070 4.260 1.00 0.00 O +ATOM 164 HW1 SOL 54 13.761 0.700 3.360 1.00 0.00 H +ATOM 165 HW2 SOL 54 14.991 1.230 4.300 1.00 0.00 H +ATOM 166 OW SOL 55 2.490 17.851 12.411 1.00 0.00 O +ATOM 167 HW1 SOL 55 3.060 17.201 12.911 1.00 0.00 H +ATOM 168 HW2 SOL 55 2.330 17.521 11.481 1.00 0.00 H +ATOM 169 OW SOL 56 9.401 16.981 9.040 1.00 0.00 O +ATOM 170 HW1 SOL 56 10.201 16.411 9.250 1.00 0.00 H +ATOM 171 HW2 SOL 56 8.911 16.581 8.270 1.00 0.00 H +ATOM 172 OW SOL 57 3.820 7.000 4.800 1.00 0.00 O +ATOM 173 HW1 SOL 57 4.270 6.100 4.770 1.00 0.00 H +ATOM 174 HW2 SOL 57 2.880 6.890 5.130 1.00 0.00 H +ATOM 175 OW SOL 58 15.471 2.220 17.291 1.00 0.00 O +ATOM 176 HW1 SOL 58 15.421 2.590 18.211 1.00 0.00 H +ATOM 177 HW2 SOL 58 14.751 1.530 17.171 1.00 0.00 H +ATOM 178 OW SOL 59 6.140 1.220 1.170 1.00 0.00 O +ATOM 179 HW1 SOL 59 7.120 1.000 1.240 1.00 0.00 H +ATOM 180 HW2 SOL 59 5.830 1.050 0.240 1.00 0.00 H +ATOM 181 OW SOL 60 7.810 2.640 17.491 1.00 0.00 O +ATOM 182 HW1 SOL 60 8.480 2.030 17.921 1.00 0.00 H +ATOM 183 HW2 SOL 60 7.080 2.830 18.141 1.00 0.00 H +ATOM 184 OW SOL 61 8.880 15.141 11.951 1.00 0.00 O +ATOM 185 HW1 SOL 61 8.650 14.891 11.011 1.00 0.00 H +ATOM 186 HW2 SOL 61 9.490 14.451 12.341 1.00 0.00 H +ATOM 187 OW SOL 62 13.511 5.900 14.331 1.00 0.00 O +ATOM 188 HW1 SOL 62 13.791 5.470 15.181 1.00 0.00 H +ATOM 189 HW2 SOL 62 13.761 6.860 14.341 1.00 0.00 H +ATOM 190 OW SOL 63 8.030 14.021 9.240 1.00 0.00 O +ATOM 191 HW1 SOL 63 8.930 14.161 8.820 1.00 0.00 H +ATOM 192 HW2 SOL 63 7.320 14.041 8.530 1.00 0.00 H +ATOM 193 OW SOL 64 9.220 5.030 8.990 1.00 0.00 O +ATOM 194 HW1 SOL 64 8.970 4.940 8.030 1.00 0.00 H +ATOM 195 HW2 SOL 64 9.700 4.210 9.300 1.00 0.00 H +ATOM 196 OW SOL 65 5.390 0.640 5.120 1.00 0.00 O +ATOM 197 HW1 SOL 65 4.580 0.650 5.700 1.00 0.00 H +ATOM 198 HW2 SOL 65 5.420 1.470 4.570 1.00 0.00 H +ATOM 199 OW SOL 66 14.341 11.881 0.410 1.00 0.00 O +ATOM 200 HW1 SOL 66 14.661 11.121 0.980 1.00 0.00 H +ATOM 201 HW2 SOL 66 13.421 12.151 0.710 1.00 0.00 H +ATOM 202 OW SOL 67 2.970 0.350 1.710 1.00 0.00 O +ATOM 203 HW1 SOL 67 3.460 1.190 1.500 1.00 0.00 H +ATOM 204 HW2 SOL 67 3.590 -0.300 2.160 1.00 0.00 H +ATOM 205 OW SOL 68 9.351 2.360 4.800 1.00 0.00 O +ATOM 206 HW1 SOL 68 8.871 2.770 4.020 1.00 0.00 H +ATOM 207 HW2 SOL 68 10.341 2.340 4.610 1.00 0.00 H +ATOM 208 OW SOL 69 10.761 6.830 14.641 1.00 0.00 O +ATOM 209 HW1 SOL 69 9.961 6.220 14.671 1.00 0.00 H +ATOM 210 HW2 SOL 69 11.571 6.300 14.401 1.00 0.00 H +ATOM 211 OW SOL 70 12.271 15.701 7.930 1.00 0.00 O +ATOM 212 HW1 SOL 70 12.481 16.441 7.280 1.00 0.00 H +ATOM 213 HW2 SOL 70 12.951 15.701 8.660 1.00 0.00 H +ATOM 214 OW SOL 71 4.590 11.521 7.410 1.00 0.00 O +ATOM 215 HW1 SOL 71 3.880 11.251 8.060 1.00 0.00 H +ATOM 216 HW2 SOL 71 4.330 11.241 6.480 1.00 0.00 H +ATOM 217 OW SOL 72 12.711 17.971 5.910 1.00 0.00 O +ATOM 218 HW1 SOL 72 13.151 18.611 5.270 1.00 0.00 H +ATOM 219 HW2 SOL 72 12.211 18.491 6.610 1.00 0.00 H +ATOM 220 OW SOL 73 10.321 5.490 0.160 1.00 0.00 O +ATOM 221 HW1 SOL 73 9.911 6.310 -0.230 1.00 0.00 H +ATOM 222 HW2 SOL 73 10.961 5.750 0.890 1.00 0.00 H +ATOM 223 OW SOL 74 5.610 2.220 11.471 1.00 0.00 O +ATOM 224 HW1 SOL 74 5.990 1.380 11.841 1.00 0.00 H +ATOM 225 HW2 SOL 74 4.730 2.410 11.911 1.00 0.00 H +ATOM 226 OW SOL 75 8.660 4.540 6.420 1.00 0.00 O +ATOM 227 HW1 SOL 75 8.340 5.260 5.800 1.00 0.00 H +ATOM 228 HW2 SOL 75 8.900 3.730 5.890 1.00 0.00 H +ATOM 229 OW SOL 76 10.171 0.390 7.530 1.00 0.00 O +ATOM 230 HW1 SOL 76 9.451 0.440 6.840 1.00 0.00 H +ATOM 231 HW2 SOL 76 9.931 -0.300 8.220 1.00 0.00 H +ATOM 232 OW SOL 77 14.291 11.731 8.670 1.00 0.00 O +ATOM 233 HW1 SOL 77 13.741 10.891 8.600 1.00 0.00 H +ATOM 234 HW2 SOL 77 14.551 12.021 7.750 1.00 0.00 H +ATOM 235 OW SOL 78 14.661 5.900 9.921 1.00 0.00 O +ATOM 236 HW1 SOL 78 14.361 4.950 9.991 1.00 0.00 H +ATOM 237 HW2 SOL 78 15.391 6.060 10.581 1.00 0.00 H +ATOM 238 OW SOL 79 18.571 8.330 3.770 1.00 0.00 O +ATOM 239 HW1 SOL 79 18.991 7.690 4.410 1.00 0.00 H +ATOM 240 HW2 SOL 79 18.191 7.820 2.990 1.00 0.00 H +ATOM 241 OW SOL 80 4.880 13.851 1.740 1.00 0.00 O +ATOM 242 HW1 SOL 80 4.010 13.701 2.210 1.00 0.00 H +ATOM 243 HW2 SOL 80 4.710 14.111 0.790 1.00 0.00 H +ATOM 244 OW SOL 81 16.641 12.801 6.570 1.00 0.00 O +ATOM 245 HW1 SOL 81 17.631 12.881 6.710 1.00 0.00 H +ATOM 246 HW2 SOL 81 16.191 13.641 6.880 1.00 0.00 H +ATOM 247 OW SOL 82 13.901 5.750 0.780 1.00 0.00 O +ATOM 248 HW1 SOL 82 13.361 5.540 1.590 1.00 0.00 H +ATOM 249 HW2 SOL 82 14.811 5.340 0.870 1.00 0.00 H +ATOM 250 OW SOL 83 5.270 2.560 3.280 1.00 0.00 O +ATOM 251 HW1 SOL 83 5.540 1.970 2.530 1.00 0.00 H +ATOM 252 HW2 SOL 83 5.270 3.510 2.970 1.00 0.00 H +ATOM 253 OW SOL 84 17.541 12.231 15.881 1.00 0.00 O +ATOM 254 HW1 SOL 84 18.451 11.841 15.751 1.00 0.00 H +ATOM 255 HW2 SOL 84 17.621 13.191 16.121 1.00 0.00 H +ATOM 256 OW SOL 85 10.641 13.471 13.401 1.00 0.00 O +ATOM 257 HW1 SOL 85 9.841 13.241 13.951 1.00 0.00 H +ATOM 258 HW2 SOL 85 11.471 13.211 13.891 1.00 0.00 H +ATOM 259 OW SOL 86 11.111 11.951 11.001 1.00 0.00 O +ATOM 260 HW1 SOL 86 10.711 12.391 11.811 1.00 0.00 H +ATOM 261 HW2 SOL 86 10.701 12.321 10.171 1.00 0.00 H +ATOM 262 OW SOL 87 16.381 10.991 10.791 1.00 0.00 O +ATOM 263 HW1 SOL 87 16.431 11.801 11.381 1.00 0.00 H +ATOM 264 HW2 SOL 87 15.521 11.011 10.281 1.00 0.00 H +ATOM 265 OW SOL 88 9.150 0.890 14.021 1.00 0.00 O +ATOM 266 HW1 SOL 88 9.400 0.690 13.071 1.00 0.00 H +ATOM 267 HW2 SOL 88 9.870 1.450 14.441 1.00 0.00 H +ATOM 268 OW SOL 89 9.801 11.161 17.191 1.00 0.00 O +ATOM 269 HW1 SOL 89 8.811 11.221 17.291 1.00 0.00 H +ATOM 270 HW2 SOL 89 10.031 10.361 16.631 1.00 0.00 H +ATOM 271 OW SOL 90 7.050 10.501 3.680 1.00 0.00 O +ATOM 272 HW1 SOL 90 6.910 10.571 4.670 1.00 0.00 H +ATOM 273 HW2 SOL 90 7.890 9.991 3.500 1.00 0.00 H +ATOM 274 OW SOL 91 4.100 8.130 12.511 1.00 0.00 O +ATOM 275 HW1 SOL 91 4.960 8.250 13.011 1.00 0.00 H +ATOM 276 HW2 SOL 91 3.680 7.260 12.781 1.00 0.00 H +ATOM 277 OW SOL 92 12.741 3.860 12.621 1.00 0.00 O +ATOM 278 HW1 SOL 92 12.951 4.600 13.261 1.00 0.00 H +ATOM 279 HW2 SOL 92 11.851 4.030 12.191 1.00 0.00 H +ATOM 280 OW SOL 93 0.640 15.641 13.311 1.00 0.00 O +ATOM 281 HW1 SOL 93 0.180 16.461 12.971 1.00 0.00 H +ATOM 282 HW2 SOL 93 1.620 15.831 13.401 1.00 0.00 H +ATOM 283 OW SOL 94 3.670 11.001 5.010 1.00 0.00 O +ATOM 284 HW1 SOL 94 3.600 11.831 4.450 1.00 0.00 H +ATOM 285 HW2 SOL 94 3.710 10.201 4.410 1.00 0.00 H +ATOM 286 OW SOL 95 5.660 5.370 8.650 1.00 0.00 O +ATOM 287 HW1 SOL 95 5.780 6.030 7.910 1.00 0.00 H +ATOM 288 HW2 SOL 95 6.120 5.710 9.480 1.00 0.00 H +ATOM 289 OW SOL 96 12.521 13.481 3.880 1.00 0.00 O +ATOM 290 HW1 SOL 96 13.021 14.251 4.280 1.00 0.00 H +ATOM 291 HW2 SOL 96 11.571 13.501 4.200 1.00 0.00 H +ATOM 292 OW SOL 97 12.721 14.451 11.421 1.00 0.00 O +ATOM 293 HW1 SOL 97 13.191 14.581 12.291 1.00 0.00 H +ATOM 294 HW2 SOL 97 12.061 13.711 11.511 1.00 0.00 H +ATOM 295 OW SOL 98 15.821 6.390 4.720 1.00 0.00 O +ATOM 296 HW1 SOL 98 15.511 7.000 5.450 1.00 0.00 H +ATOM 297 HW2 SOL 98 16.321 6.910 4.030 1.00 0.00 H +ATOM 298 OW SOL 99 3.540 15.101 13.291 1.00 0.00 O +ATOM 299 HW1 SOL 99 3.330 14.661 12.421 1.00 0.00 H +ATOM 300 HW2 SOL 99 4.510 15.361 13.321 1.00 0.00 H +ATOM 301 OW SOL 100 4.020 7.510 15.981 1.00 0.00 O +ATOM 302 HW1 SOL 100 4.700 8.060 15.511 1.00 0.00 H +ATOM 303 HW2 SOL 100 4.420 6.630 16.251 1.00 0.00 H +ATOM 304 OW SOL 101 15.871 7.790 16.701 1.00 0.00 O +ATOM 305 HW1 SOL 101 14.951 8.170 16.651 1.00 0.00 H +ATOM 306 HW2 SOL 101 16.471 8.260 16.051 1.00 0.00 H +ATOM 307 OW SOL 102 10.131 1.050 17.701 1.00 0.00 O +ATOM 308 HW1 SOL 102 10.191 1.900 17.181 1.00 0.00 H +ATOM 309 HW2 SOL 102 10.451 0.290 17.131 1.00 0.00 H +ATOM 310 OW SOL 103 5.040 0.500 17.401 1.00 0.00 O +ATOM 311 HW1 SOL 103 4.620 -0.070 16.701 1.00 0.00 H +ATOM 312 HW2 SOL 103 4.380 1.190 17.721 1.00 0.00 H +ATOM 313 OW SOL 104 5.730 8.700 10.291 1.00 0.00 O +ATOM 314 HW1 SOL 104 6.170 9.590 10.201 1.00 0.00 H +ATOM 315 HW2 SOL 104 5.100 8.700 11.061 1.00 0.00 H +ATOM 316 OW SOL 105 13.601 8.620 10.451 1.00 0.00 O +ATOM 317 HW1 SOL 105 12.851 8.620 9.791 1.00 0.00 H +ATOM 318 HW2 SOL 105 13.971 7.700 10.541 1.00 0.00 H +ATOM 319 OW SOL 106 12.091 5.250 2.750 1.00 0.00 O +ATOM 320 HW1 SOL 106 12.221 4.410 3.290 1.00 0.00 H +ATOM 321 HW2 SOL 106 11.801 5.990 3.350 1.00 0.00 H +ATOM 322 OW SOL 107 0.370 13.101 12.821 1.00 0.00 O +ATOM 323 HW1 SOL 107 0.900 12.611 13.501 1.00 0.00 H +ATOM 324 HW2 SOL 107 0.590 14.081 12.871 1.00 0.00 H +ATOM 325 OW SOL 108 7.320 6.340 10.641 1.00 0.00 O +ATOM 326 HW1 SOL 108 7.910 6.080 9.881 1.00 0.00 H +ATOM 327 HW2 SOL 108 7.040 7.300 10.531 1.00 0.00 H +ATOM 328 OW SOL 109 17.281 9.351 18.541 1.00 0.00 O +ATOM 329 HW1 SOL 109 16.821 9.281 17.651 1.00 0.00 H +ATOM 330 HW2 SOL 109 16.661 9.791 19.201 1.00 0.00 H +ATOM 331 OW SOL 110 3.070 0.630 6.180 1.00 0.00 O +ATOM 332 HW1 SOL 110 2.960 1.570 6.510 1.00 0.00 H +ATOM 333 HW2 SOL 110 3.020 0.000 6.950 1.00 0.00 H +ATOM 334 OW SOL 111 16.221 3.670 3.740 1.00 0.00 O +ATOM 335 HW1 SOL 111 16.241 2.910 4.380 1.00 0.00 H +ATOM 336 HW2 SOL 111 15.741 4.440 4.140 1.00 0.00 H +ATOM 337 OW SOL 112 10.231 7.660 9.661 1.00 0.00 O +ATOM 338 HW1 SOL 112 10.381 7.870 10.621 1.00 0.00 H +ATOM 339 HW2 SOL 112 9.931 6.710 9.571 1.00 0.00 H +ATOM 340 OW SOL 113 9.801 15.731 17.001 1.00 0.00 O +ATOM 341 HW1 SOL 113 9.601 16.171 16.121 1.00 0.00 H +ATOM 342 HW2 SOL 113 10.191 14.821 16.841 1.00 0.00 H +ATOM 343 OW SOL 114 18.591 15.181 16.051 1.00 0.00 O +ATOM 344 HW1 SOL 114 18.731 15.451 15.101 1.00 0.00 H +ATOM 345 HW2 SOL 114 19.421 15.401 16.581 1.00 0.00 H +ATOM 346 OW SOL 115 3.500 8.980 18.041 1.00 0.00 O +ATOM 347 HW1 SOL 115 4.260 9.420 18.521 1.00 0.00 H +ATOM 348 HW2 SOL 115 3.850 8.510 17.221 1.00 0.00 H +ATOM 349 OW SOL 116 15.401 2.740 1.250 1.00 0.00 O +ATOM 350 HW1 SOL 116 14.791 1.990 1.480 1.00 0.00 H +ATOM 351 HW2 SOL 116 15.621 3.260 2.080 1.00 0.00 H +ATOM 352 OW SOL 117 13.031 8.380 0.420 1.00 0.00 O +ATOM 353 HW1 SOL 117 13.371 7.450 0.570 1.00 0.00 H +ATOM 354 HW2 SOL 117 13.211 8.650 -0.530 1.00 0.00 H +ATOM 355 OW SOL 118 10.681 13.331 8.490 1.00 0.00 O +ATOM 356 HW1 SOL 118 10.751 12.491 7.940 1.00 0.00 H +ATOM 357 HW2 SOL 118 11.301 14.021 8.130 1.00 0.00 H +ATOM 358 OW SOL 119 3.190 8.100 9.491 1.00 0.00 O +ATOM 359 HW1 SOL 119 4.120 8.460 9.541 1.00 0.00 H +ATOM 360 HW2 SOL 119 3.130 7.250 10.011 1.00 0.00 H +ATOM 361 OW SOL 120 3.390 5.090 10.061 1.00 0.00 O +ATOM 362 HW1 SOL 120 2.870 4.260 9.891 1.00 0.00 H +ATOM 363 HW2 SOL 120 4.160 5.140 9.421 1.00 0.00 H +ATOM 364 OW SOL 121 11.381 3.800 16.781 1.00 0.00 O +ATOM 365 HW1 SOL 121 10.931 4.430 17.421 1.00 0.00 H +ATOM 366 HW2 SOL 121 12.311 4.110 16.611 1.00 0.00 H +ATOM 367 OW SOL 122 11.601 2.070 14.771 1.00 0.00 O +ATOM 368 HW1 SOL 122 11.601 2.710 15.541 1.00 0.00 H +ATOM 369 HW2 SOL 122 11.881 2.550 13.941 1.00 0.00 H +ATOM 370 OW SOL 123 0.880 18.011 9.270 1.00 0.00 O +ATOM 371 HW1 SOL 123 0.460 17.151 9.000 1.00 0.00 H +ATOM 372 HW2 SOL 123 1.820 18.041 8.930 1.00 0.00 H +ATOM 373 OW SOL 124 5.040 15.681 9.100 1.00 0.00 O +ATOM 374 HW1 SOL 124 5.700 16.421 9.190 1.00 0.00 H +ATOM 375 HW2 SOL 124 5.480 14.891 8.680 1.00 0.00 H +ATOM 376 OW SOL 125 10.021 7.960 12.381 1.00 0.00 O +ATOM 377 HW1 SOL 125 10.431 7.640 13.241 1.00 0.00 H +ATOM 378 HW2 SOL 125 9.061 7.690 12.351 1.00 0.00 H +ATOM 379 OW SOL 126 0.400 5.440 11.141 1.00 0.00 O +ATOM 380 HW1 SOL 126 1.250 5.110 10.731 1.00 0.00 H +ATOM 381 HW2 SOL 126 0.530 5.590 12.121 1.00 0.00 H +ATOM 382 OW SOL 127 1.890 5.200 17.221 1.00 0.00 O +ATOM 383 HW1 SOL 127 2.480 4.800 16.521 1.00 0.00 H +ATOM 384 HW2 SOL 127 1.310 5.910 16.811 1.00 0.00 H +ATOM 385 OW SOL 128 13.691 9.501 16.601 1.00 0.00 O +ATOM 386 HW1 SOL 128 14.081 10.391 16.801 1.00 0.00 H +ATOM 387 HW2 SOL 128 13.791 9.301 15.631 1.00 0.00 H +ATOM 388 OW SOL 129 8.150 5.720 3.250 1.00 0.00 O +ATOM 389 HW1 SOL 129 8.220 4.830 2.790 1.00 0.00 H +ATOM 390 HW2 SOL 129 7.210 6.060 3.170 1.00 0.00 H +ATOM 391 OW SOL 130 16.571 6.040 12.061 1.00 0.00 O +ATOM 392 HW1 SOL 130 16.191 5.350 12.681 1.00 0.00 H +ATOM 393 HW2 SOL 130 17.391 5.680 11.621 1.00 0.00 H +ATOM 394 OW SOL 131 2.520 15.641 17.441 1.00 0.00 O +ATOM 395 HW1 SOL 131 2.220 16.211 18.201 1.00 0.00 H +ATOM 396 HW2 SOL 131 2.450 14.671 17.701 1.00 0.00 H +ATOM 397 OW SOL 132 6.710 4.640 12.691 1.00 0.00 O +ATOM 398 HW1 SOL 132 6.370 3.750 12.391 1.00 0.00 H +ATOM 399 HW2 SOL 132 6.970 5.180 11.891 1.00 0.00 H +ATOM 400 OW SOL 133 9.300 16.781 14.651 1.00 0.00 O +ATOM 401 HW1 SOL 133 9.060 16.601 13.701 1.00 0.00 H +ATOM 402 HW2 SOL 133 9.600 17.721 14.751 1.00 0.00 H +ATOM 403 OW SOL 134 4.730 5.000 1.910 1.00 0.00 O +ATOM 404 HW1 SOL 134 5.340 5.800 1.950 1.00 0.00 H +ATOM 405 HW2 SOL 134 3.780 5.310 1.980 1.00 0.00 H +ATOM 406 OW SOL 135 1.590 11.371 14.661 1.00 0.00 O +ATOM 407 HW1 SOL 135 1.810 10.761 15.421 1.00 0.00 H +ATOM 408 HW2 SOL 135 1.690 10.881 13.801 1.00 0.00 H +ATOM 409 OW SOL 136 13.471 10.591 12.341 1.00 0.00 O +ATOM 410 HW1 SOL 136 13.711 9.961 11.601 1.00 0.00 H +ATOM 411 HW2 SOL 136 12.571 10.991 12.161 1.00 0.00 H +ATOM 412 OW SOL 137 13.021 8.550 3.090 1.00 0.00 O +ATOM 413 HW1 SOL 137 12.161 8.240 3.510 1.00 0.00 H +ATOM 414 HW2 SOL 137 12.981 8.410 2.100 1.00 0.00 H +ATOM 415 OW SOL 138 17.591 17.471 11.541 1.00 0.00 O +ATOM 416 HW1 SOL 138 18.201 17.771 10.811 1.00 0.00 H +ATOM 417 HW2 SOL 138 17.211 16.581 11.321 1.00 0.00 H +ATOM 418 OW SOL 139 12.521 17.311 11.281 1.00 0.00 O +ATOM 419 HW1 SOL 139 13.361 17.361 10.741 1.00 0.00 H +ATOM 420 HW2 SOL 139 12.291 16.351 11.461 1.00 0.00 H +ATOM 421 OW SOL 140 0.830 12.581 10.221 1.00 0.00 O +ATOM 422 HW1 SOL 140 0.780 12.571 11.221 1.00 0.00 H +ATOM 423 HW2 SOL 140 0.000 12.171 9.841 1.00 0.00 H +ATOM 424 OW SOL 141 6.880 16.621 17.161 1.00 0.00 O +ATOM 425 HW1 SOL 141 6.320 17.431 17.251 1.00 0.00 H +ATOM 426 HW2 SOL 141 7.400 16.661 16.301 1.00 0.00 H +ATOM 427 OW SOL 142 9.030 0.860 1.330 1.00 0.00 O +ATOM 428 HW1 SOL 142 9.540 0.870 0.470 1.00 0.00 H +ATOM 429 HW2 SOL 142 9.590 0.440 2.040 1.00 0.00 H +ATOM 430 OW SOL 143 17.261 1.350 5.230 1.00 0.00 O +ATOM 431 HW1 SOL 143 17.991 1.180 4.560 1.00 0.00 H +ATOM 432 HW2 SOL 143 16.951 0.480 5.610 1.00 0.00 H +ATOM 433 OW SOL 144 13.881 15.731 4.770 1.00 0.00 O +ATOM 434 HW1 SOL 144 14.551 15.851 4.030 1.00 0.00 H +ATOM 435 HW2 SOL 144 13.481 16.621 5.000 1.00 0.00 H +ATOM 436 OW SOL 145 12.801 9.270 6.720 1.00 0.00 O +ATOM 437 HW1 SOL 145 13.401 8.460 6.740 1.00 0.00 H +ATOM 438 HW2 SOL 145 13.201 9.960 6.120 1.00 0.00 H +ATOM 439 OW SOL 146 8.300 12.731 14.221 1.00 0.00 O +ATOM 440 HW1 SOL 146 8.250 13.061 15.171 1.00 0.00 H +ATOM 441 HW2 SOL 146 7.440 12.921 13.761 1.00 0.00 H +ATOM 442 OW SOL 147 6.720 16.161 1.540 1.00 0.00 O +ATOM 443 HW1 SOL 147 6.810 16.261 0.550 1.00 0.00 H +ATOM 444 HW2 SOL 147 6.320 15.271 1.750 1.00 0.00 H +ATOM 445 OW SOL 148 16.501 17.201 13.941 1.00 0.00 O +ATOM 446 HW1 SOL 148 17.031 17.301 13.101 1.00 0.00 H +ATOM 447 HW2 SOL 148 16.231 18.101 14.281 1.00 0.00 H +ATOM 448 OW SOL 149 2.630 3.260 7.200 1.00 0.00 O +ATOM 449 HW1 SOL 149 1.840 3.770 6.860 1.00 0.00 H +ATOM 450 HW2 SOL 149 2.540 3.110 8.180 1.00 0.00 H +ATOM 451 OW SOL 150 11.941 16.121 0.310 1.00 0.00 O +ATOM 452 HW1 SOL 150 12.001 15.191 0.680 1.00 0.00 H +ATOM 453 HW2 SOL 150 11.351 16.121 -0.490 1.00 0.00 H +ATOM 454 OW SOL 151 8.220 10.021 13.721 1.00 0.00 O +ATOM 455 HW1 SOL 151 8.620 10.011 12.801 1.00 0.00 H +ATOM 456 HW2 SOL 151 8.320 10.941 14.121 1.00 0.00 H +ATOM 457 OW SOL 152 9.160 9.100 2.910 1.00 0.00 O +ATOM 458 HW1 SOL 152 9.790 9.480 2.230 1.00 0.00 H +ATOM 459 HW2 SOL 152 9.560 8.270 3.300 1.00 0.00 H +ATOM 460 OW SOL 153 15.041 16.071 0.440 1.00 0.00 O +ATOM 461 HW1 SOL 153 14.121 16.441 0.510 1.00 0.00 H +ATOM 462 HW2 SOL 153 15.421 16.271 -0.460 1.00 0.00 H +ATOM 463 OW SOL 154 3.720 12.881 14.901 1.00 0.00 O +ATOM 464 HW1 SOL 154 3.590 13.811 14.561 1.00 0.00 H +ATOM 465 HW2 SOL 154 2.880 12.361 14.771 1.00 0.00 H +ATOM 466 OW SOL 155 16.141 12.921 12.891 1.00 0.00 O +ATOM 467 HW1 SOL 155 16.741 12.951 13.691 1.00 0.00 H +ATOM 468 HW2 SOL 155 15.391 13.561 13.021 1.00 0.00 H +ATOM 469 OW SOL 156 10.391 10.981 6.960 1.00 0.00 O +ATOM 470 HW1 SOL 156 9.691 10.511 7.500 1.00 0.00 H +ATOM 471 HW2 SOL 156 10.981 10.301 6.530 1.00 0.00 H +ATOM 472 OW SOL 157 10.141 2.360 9.711 1.00 0.00 O +ATOM 473 HW1 SOL 157 10.061 2.000 8.781 1.00 0.00 H +ATOM 474 HW2 SOL 157 10.121 1.600 10.361 1.00 0.00 H +ATOM 475 OW SOL 158 5.900 14.871 4.910 1.00 0.00 O +ATOM 476 HW1 SOL 158 6.320 14.291 4.210 1.00 0.00 H +ATOM 477 HW2 SOL 158 5.460 15.661 4.470 1.00 0.00 H +ATOM 478 OW SOL 159 17.091 3.850 13.811 1.00 0.00 O +ATOM 479 HW1 SOL 159 17.821 4.540 13.851 1.00 0.00 H +ATOM 480 HW2 SOL 159 17.371 3.100 13.221 1.00 0.00 H +ATOM 481 OW SOL 160 2.550 13.481 2.900 1.00 0.00 O +ATOM 482 HW1 SOL 160 1.590 13.491 2.630 1.00 0.00 H +ATOM 483 HW2 SOL 160 2.670 14.011 3.740 1.00 0.00 H +ATOM 484 OW SOL 161 6.720 2.030 14.891 1.00 0.00 O +ATOM 485 HW1 SOL 161 7.620 1.870 14.491 1.00 0.00 H +ATOM 486 HW2 SOL 161 6.800 2.080 15.881 1.00 0.00 H +ATOM 487 OW SOL 162 14.401 8.560 13.981 1.00 0.00 O +ATOM 488 HW1 SOL 162 13.831 9.080 13.351 1.00 0.00 H +ATOM 489 HW2 SOL 162 15.361 8.680 13.741 1.00 0.00 H +ATOM 490 OW SOL 163 11.831 13.351 1.190 1.00 0.00 O +ATOM 491 HW1 SOL 163 10.841 13.241 1.210 1.00 0.00 H +ATOM 492 HW2 SOL 163 12.171 13.501 2.120 1.00 0.00 H +ATOM 493 OW SOL 164 6.130 8.420 14.311 1.00 0.00 O +ATOM 494 HW1 SOL 164 6.690 9.230 14.141 1.00 0.00 H +ATOM 495 HW2 SOL 164 6.720 7.620 14.341 1.00 0.00 H +ATOM 496 OW SOL 165 14.931 17.671 9.591 1.00 0.00 O +ATOM 497 HW1 SOL 165 15.261 18.311 8.901 1.00 0.00 H +ATOM 498 HW2 SOL 165 15.591 17.611 10.341 1.00 0.00 H +ATOM 499 OW SOL 166 7.160 5.650 17.081 1.00 0.00 O +ATOM 500 HW1 SOL 166 7.350 6.300 17.821 1.00 0.00 H +ATOM 501 HW2 SOL 166 7.760 4.850 17.171 1.00 0.00 H +ATOM 502 OW SOL 167 14.501 12.201 16.331 1.00 0.00 O +ATOM 503 HW1 SOL 167 14.411 12.101 17.321 1.00 0.00 H +ATOM 504 HW2 SOL 167 15.461 12.131 16.071 1.00 0.00 H +ATOM 505 OW SOL 168 3.900 17.411 15.601 1.00 0.00 O +ATOM 506 HW1 SOL 168 2.990 17.821 15.581 1.00 0.00 H +ATOM 507 HW2 SOL 168 3.830 16.471 15.921 1.00 0.00 H +ATOM 508 OW SOL 169 16.741 8.830 12.541 1.00 0.00 O +ATOM 509 HW1 SOL 169 16.471 7.940 12.171 1.00 0.00 H +ATOM 510 HW2 SOL 169 16.751 9.510 11.811 1.00 0.00 H +ATOM 511 OW SOL 170 12.251 3.250 4.490 1.00 0.00 O +ATOM 512 HW1 SOL 170 12.901 2.510 4.380 1.00 0.00 H +ATOM 513 HW2 SOL 170 12.451 3.750 5.330 1.00 0.00 H +ATOM 514 OW SOL 171 5.940 7.450 6.520 1.00 0.00 O +ATOM 515 HW1 SOL 171 6.440 8.300 6.330 1.00 0.00 H +ATOM 516 HW2 SOL 171 5.060 7.470 6.040 1.00 0.00 H +ATOM 517 OW SOL 172 17.771 3.420 16.421 1.00 0.00 O +ATOM 518 HW1 SOL 172 17.601 3.730 15.481 1.00 0.00 H +ATOM 519 HW2 SOL 172 16.931 3.050 16.801 1.00 0.00 H +ATOM 520 OW SOL 173 17.301 9.341 15.171 1.00 0.00 O +ATOM 521 HW1 SOL 173 17.681 10.251 15.321 1.00 0.00 H +ATOM 522 HW2 SOL 173 17.221 9.171 14.181 1.00 0.00 H +ATOM 523 OW SOL 174 8.590 13.741 0.160 1.00 0.00 O +ATOM 524 HW1 SOL 174 8.130 13.891 1.040 1.00 0.00 H +ATOM 525 HW2 SOL 174 9.030 14.591 -0.140 1.00 0.00 H +ATOM 526 OW SOL 175 6.610 17.901 9.531 1.00 0.00 O +ATOM 527 HW1 SOL 175 6.150 18.781 9.401 1.00 0.00 H +ATOM 528 HW2 SOL 175 7.600 18.021 9.461 1.00 0.00 H +ATOM 529 OW SOL 176 14.081 18.511 17.201 1.00 0.00 O +ATOM 530 HW1 SOL 176 13.121 18.401 16.931 1.00 0.00 H +ATOM 531 HW2 SOL 176 14.641 17.841 16.721 1.00 0.00 H +ATOM 532 OW SOL 177 8.590 9.561 8.610 1.00 0.00 O +ATOM 533 HW1 SOL 177 9.130 8.871 9.090 1.00 0.00 H +ATOM 534 HW2 SOL 177 8.270 10.251 9.270 1.00 0.00 H +ATOM 535 OW SOL 178 10.831 9.841 0.870 1.00 0.00 O +ATOM 536 HW1 SOL 178 10.601 10.371 0.050 1.00 0.00 H +ATOM 537 HW2 SOL 178 11.641 9.281 0.680 1.00 0.00 H +ATOM 538 OW SOL 179 18.611 15.691 8.510 1.00 0.00 O +ATOM 539 HW1 SOL 179 17.901 15.571 7.810 1.00 0.00 H +ATOM 540 HW2 SOL 179 18.621 14.901 9.110 1.00 0.00 H +ATOM 541 OW SOL 180 0.790 12.401 6.530 1.00 0.00 O +ATOM 542 HW1 SOL 180 0.780 11.931 7.410 1.00 0.00 H +ATOM 543 HW2 SOL 180 1.610 12.121 6.020 1.00 0.00 H +ATOM 544 OW SOL 181 6.720 13.911 16.241 1.00 0.00 O +ATOM 545 HW1 SOL 181 5.940 13.411 16.621 1.00 0.00 H +ATOM 546 HW2 SOL 181 6.690 14.861 16.551 1.00 0.00 H +ATOM 547 OW SOL 182 4.280 4.240 5.200 1.00 0.00 O +ATOM 548 HW1 SOL 182 4.580 3.520 4.580 1.00 0.00 H +ATOM 549 HW2 SOL 182 3.890 3.840 6.030 1.00 0.00 H +ATOM 550 OW SOL 183 17.051 14.871 11.041 1.00 0.00 O +ATOM 551 HW1 SOL 183 16.121 14.621 10.771 1.00 0.00 H +ATOM 552 HW2 SOL 183 17.311 14.371 11.861 1.00 0.00 H +ATOM 553 OW SOL 184 3.170 5.470 12.801 1.00 0.00 O +ATOM 554 HW1 SOL 184 3.550 4.880 13.521 1.00 0.00 H +ATOM 555 HW2 SOL 184 3.570 5.210 11.921 1.00 0.00 H +ATOM 556 OW SOL 185 8.120 15.861 6.870 1.00 0.00 O +ATOM 557 HW1 SOL 185 8.440 15.961 5.930 1.00 0.00 H +ATOM 558 HW2 SOL 185 7.330 15.241 6.890 1.00 0.00 H +ATOM 559 OW SOL 186 14.241 2.140 11.121 1.00 0.00 O +ATOM 560 HW1 SOL 186 14.761 1.490 11.671 1.00 0.00 H +ATOM 561 HW2 SOL 186 13.751 2.770 11.731 1.00 0.00 H +ATOM 562 OW SOL 187 10.011 0.340 11.541 1.00 0.00 O +ATOM 563 HW1 SOL 187 9.381 -0.380 11.231 1.00 0.00 H +ATOM 564 HW2 SOL 187 10.941 -0.020 11.541 1.00 0.00 H +ATOM 565 OW SOL 188 7.700 13.301 3.010 1.00 0.00 O +ATOM 566 HW1 SOL 188 7.240 12.431 3.180 1.00 0.00 H +ATOM 567 HW2 SOL 188 8.610 13.271 3.420 1.00 0.00 H +ATOM 568 OW SOL 189 6.180 15.671 12.841 1.00 0.00 O +ATOM 569 HW1 SOL 189 6.130 16.491 13.411 1.00 0.00 H +ATOM 570 HW2 SOL 189 7.070 15.641 12.391 1.00 0.00 H +ATOM 571 OW SOL 190 13.521 0.520 1.680 1.00 0.00 O +ATOM 572 HW1 SOL 190 13.871 0.110 0.840 1.00 0.00 H +ATOM 573 HW2 SOL 190 12.621 0.140 1.880 1.00 0.00 H +ATOM 574 OW SOL 191 13.001 4.530 6.910 1.00 0.00 O +ATOM 575 HW1 SOL 191 12.411 5.330 6.950 1.00 0.00 H +ATOM 576 HW2 SOL 191 13.151 4.180 7.840 1.00 0.00 H +ATOM 577 OW SOL 192 15.931 2.210 8.820 1.00 0.00 O +ATOM 578 HW1 SOL 192 15.091 2.200 9.360 1.00 0.00 H +ATOM 579 HW2 SOL 192 15.951 3.040 8.260 1.00 0.00 H +ATOM 580 OW SOL 193 0.390 10.771 3.000 1.00 0.00 O +ATOM 581 HW1 SOL 193 1.380 10.661 2.910 1.00 0.00 H +ATOM 582 HW2 SOL 193 -0.010 9.911 3.320 1.00 0.00 H +ATOM 583 OW SOL 194 8.750 16.461 3.370 1.00 0.00 O +ATOM 584 HW1 SOL 194 7.980 16.111 2.830 1.00 0.00 H +ATOM 585 HW2 SOL 194 8.430 17.171 3.990 1.00 0.00 H +ATOM 586 OW SOL 195 5.690 12.751 30.271 1.00 0.00 O +ATOM 587 HW1 SOL 195 4.760 12.681 29.901 1.00 0.00 H +ATOM 588 HW2 SOL 195 5.800 13.641 30.711 1.00 0.00 H +ATOM 589 OW SOL 196 15.551 15.111 25.651 1.00 0.00 O +ATOM 590 HW1 SOL 196 14.981 14.951 26.461 1.00 0.00 H +ATOM 591 HW2 SOL 196 14.961 15.211 24.851 1.00 0.00 H +ATOM 592 OW SOL 197 17.431 6.180 27.181 1.00 0.00 O +ATOM 593 HW1 SOL 197 17.761 7.120 27.181 1.00 0.00 H +ATOM 594 HW2 SOL 197 17.941 5.640 27.841 1.00 0.00 H +ATOM 595 OW SOL 198 11.351 7.030 25.791 1.00 0.00 O +ATOM 596 HW1 SOL 198 11.921 7.810 25.541 1.00 0.00 H +ATOM 597 HW2 SOL 198 10.751 7.290 26.551 1.00 0.00 H +ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O +ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H +ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H +ATOM 601 OW SOL 200 7.680 11.441 28.851 1.00 0.00 O +ATOM 602 HW1 SOL 200 6.900 11.611 29.451 1.00 0.00 H +ATOM 603 HW2 SOL 200 8.020 12.311 28.491 1.00 0.00 H +ATOM 604 OW SOL 201 6.850 10.121 25.271 1.00 0.00 O +ATOM 605 HW1 SOL 201 7.540 9.961 25.971 1.00 0.00 H +ATOM 606 HW2 SOL 201 6.120 10.691 25.651 1.00 0.00 H +ATOM 607 OW SOL 202 2.400 10.911 27.481 1.00 0.00 O +ATOM 608 HW1 SOL 202 2.540 10.071 28.001 1.00 0.00 H +ATOM 609 HW2 SOL 202 1.850 11.551 28.031 1.00 0.00 H +ATOM 610 OW SOL 203 6.060 9.641 19.851 1.00 0.00 O +ATOM 611 HW1 SOL 203 6.130 10.481 19.311 1.00 0.00 H +ATOM 612 HW2 SOL 203 6.520 9.771 20.731 1.00 0.00 H +ATOM 613 OW SOL 204 1.220 6.430 24.251 1.00 0.00 O +ATOM 614 HW1 SOL 204 0.770 5.550 24.421 1.00 0.00 H +ATOM 615 HW2 SOL 204 1.210 6.970 25.091 1.00 0.00 H +ATOM 616 OW SOL 205 18.421 17.671 22.211 1.00 0.00 O +ATOM 617 HW1 SOL 205 18.961 17.381 23.011 1.00 0.00 H +ATOM 618 HW2 SOL 205 18.721 18.571 21.921 1.00 0.00 H +ATOM 619 OW SOL 206 16.891 9.220 24.741 1.00 0.00 O +ATOM 620 HW1 SOL 206 17.841 8.930 24.821 1.00 0.00 H +ATOM 621 HW2 SOL 206 16.811 9.870 23.991 1.00 0.00 H +ATOM 622 OW SOL 207 16.411 11.081 22.941 1.00 0.00 O +ATOM 623 HW1 SOL 207 17.271 11.101 22.421 1.00 0.00 H +ATOM 624 HW2 SOL 207 16.551 11.551 23.821 1.00 0.00 H +ATOM 625 OW SOL 208 6.130 13.651 25.881 1.00 0.00 O +ATOM 626 HW1 SOL 208 5.640 12.781 25.971 1.00 0.00 H +ATOM 627 HW2 SOL 208 5.900 14.081 25.011 1.00 0.00 H +ATOM 628 OW SOL 209 8.090 0.040 23.641 1.00 0.00 O +ATOM 629 HW1 SOL 209 8.490 0.950 23.551 1.00 0.00 H +ATOM 630 HW2 SOL 209 7.090 0.120 23.701 1.00 0.00 H +ATOM 631 OW SOL 210 1.970 9.761 0.031 1.00 0.00 O +ATOM 632 HW1 SOL 210 2.860 9.311 -0.109 1.00 0.00 H +ATOM 633 HW2 SOL 210 1.240 9.111 -0.159 1.00 0.00 H +ATOM 634 OW SOL 211 15.251 9.991 20.521 1.00 0.00 O +ATOM 635 HW1 SOL 211 14.621 9.231 20.651 1.00 0.00 H +ATOM 636 HW2 SOL 211 15.731 10.171 21.381 1.00 0.00 H +ATOM 637 OW SOL 212 14.661 14.171 28.151 1.00 0.00 O +ATOM 638 HW1 SOL 212 14.071 14.231 28.951 1.00 0.00 H +ATOM 639 HW2 SOL 212 14.511 13.291 27.691 1.00 0.00 H +ATOM 640 OW SOL 213 16.671 17.141 24.341 1.00 0.00 O +ATOM 641 HW1 SOL 213 16.261 16.911 23.461 1.00 0.00 H +ATOM 642 HW2 SOL 213 16.491 16.401 24.991 1.00 0.00 H +ATOM 643 OW SOL 214 5.980 7.290 21.321 1.00 0.00 O +ATOM 644 HW1 SOL 214 6.220 7.980 20.641 1.00 0.00 H +ATOM 645 HW2 SOL 214 5.200 7.620 21.861 1.00 0.00 H +ATOM 646 OW SOL 215 12.811 3.450 28.061 1.00 0.00 O +ATOM 647 HW1 SOL 215 11.951 2.950 27.931 1.00 0.00 H +ATOM 648 HW2 SOL 215 13.431 2.910 28.621 1.00 0.00 H +ATOM 649 OW SOL 216 15.761 16.621 21.691 1.00 0.00 O +ATOM 650 HW1 SOL 216 16.651 17.081 21.721 1.00 0.00 H +ATOM 651 HW2 SOL 216 15.551 16.381 20.741 1.00 0.00 H +ATOM 652 OW SOL 217 10.411 7.010 22.911 1.00 0.00 O +ATOM 653 HW1 SOL 217 10.671 6.970 23.871 1.00 0.00 H +ATOM 654 HW2 SOL 217 9.561 6.500 22.771 1.00 0.00 H +ATOM 655 OW SOL 218 8.650 3.480 20.571 1.00 0.00 O +ATOM 656 HW1 SOL 218 9.240 4.110 20.081 1.00 0.00 H +ATOM 657 HW2 SOL 218 8.840 2.540 20.281 1.00 0.00 H +ATOM 658 OW SOL 219 13.621 11.441 24.071 1.00 0.00 O +ATOM 659 HW1 SOL 219 14.451 11.151 23.591 1.00 0.00 H +ATOM 660 HW2 SOL 219 13.131 12.111 23.511 1.00 0.00 H +ATOM 661 OW SOL 220 5.500 1.960 27.471 1.00 0.00 O +ATOM 662 HW1 SOL 220 5.450 1.910 28.471 1.00 0.00 H +ATOM 663 HW2 SOL 220 5.520 2.920 27.181 1.00 0.00 H +ATOM 664 OW SOL 221 10.081 14.561 23.391 1.00 0.00 O +ATOM 665 HW1 SOL 221 9.621 15.281 22.871 1.00 0.00 H +ATOM 666 HW2 SOL 221 10.041 14.761 24.371 1.00 0.00 H +ATOM 667 OW SOL 222 3.510 18.011 27.151 1.00 0.00 O +ATOM 668 HW1 SOL 222 4.010 17.151 27.211 1.00 0.00 H +ATOM 669 HW2 SOL 222 4.160 18.781 27.121 1.00 0.00 H +ATOM 670 OW SOL 223 17.951 10.661 27.351 1.00 0.00 O +ATOM 671 HW1 SOL 223 17.331 10.511 26.591 1.00 0.00 H +ATOM 672 HW2 SOL 223 17.431 10.771 28.201 1.00 0.00 H +ATOM 673 OW SOL 224 3.210 9.431 21.041 1.00 0.00 O +ATOM 674 HW1 SOL 224 4.030 9.821 20.621 1.00 0.00 H +ATOM 675 HW2 SOL 224 2.940 8.611 20.551 1.00 0.00 H +ATOM 676 OW SOL 225 14.581 7.350 25.901 1.00 0.00 O +ATOM 677 HW1 SOL 225 14.531 6.700 26.651 1.00 0.00 H +ATOM 678 HW2 SOL 225 15.381 7.940 26.031 1.00 0.00 H +ATOM 679 OW SOL 226 11.111 17.761 20.991 1.00 0.00 O +ATOM 680 HW1 SOL 226 10.511 17.141 21.491 1.00 0.00 H +ATOM 681 HW2 SOL 226 11.421 17.321 20.141 1.00 0.00 H +ATOM 682 OW SOL 227 16.321 13.771 19.431 1.00 0.00 O +ATOM 683 HW1 SOL 227 16.001 14.711 19.331 1.00 0.00 H +ATOM 684 HW2 SOL 227 15.561 13.141 19.311 1.00 0.00 H +ATOM 685 OW SOL 228 4.640 17.431 21.851 1.00 0.00 O +ATOM 686 HW1 SOL 228 4.970 17.821 22.711 1.00 0.00 H +ATOM 687 HW2 SOL 228 5.400 17.361 21.201 1.00 0.00 H +ATOM 688 OW SOL 229 14.001 1.070 22.881 1.00 0.00 O +ATOM 689 HW1 SOL 229 13.761 0.700 21.981 1.00 0.00 H +ATOM 690 HW2 SOL 229 14.991 1.230 22.921 1.00 0.00 H +ATOM 691 OW SOL 230 2.490 17.851 31.031 1.00 0.00 O +ATOM 692 HW1 SOL 230 3.060 17.201 31.531 1.00 0.00 H +ATOM 693 HW2 SOL 230 2.330 17.521 30.101 1.00 0.00 H +ATOM 694 OW SOL 231 9.401 16.981 27.661 1.00 0.00 O +ATOM 695 HW1 SOL 231 10.201 16.411 27.871 1.00 0.00 H +ATOM 696 HW2 SOL 231 8.911 16.581 26.891 1.00 0.00 H +ATOM 697 OW SOL 232 3.820 7.000 23.421 1.00 0.00 O +ATOM 698 HW1 SOL 232 4.270 6.100 23.391 1.00 0.00 H +ATOM 699 HW2 SOL 232 2.880 6.890 23.751 1.00 0.00 H +ATOM 700 OW SOL 233 6.140 1.220 19.791 1.00 0.00 O +ATOM 701 HW1 SOL 233 7.120 1.000 19.861 1.00 0.00 H +ATOM 702 HW2 SOL 233 5.830 1.050 18.861 1.00 0.00 H +ATOM 703 OW SOL 234 8.030 14.021 27.861 1.00 0.00 O +ATOM 704 HW1 SOL 234 8.930 14.161 27.441 1.00 0.00 H +ATOM 705 HW2 SOL 234 7.320 14.041 27.151 1.00 0.00 H +ATOM 706 OW SOL 235 9.220 5.030 27.611 1.00 0.00 O +ATOM 707 HW1 SOL 235 8.970 4.940 26.651 1.00 0.00 H +ATOM 708 HW2 SOL 235 9.700 4.210 27.921 1.00 0.00 H +ATOM 709 OW SOL 236 5.390 0.640 23.741 1.00 0.00 O +ATOM 710 HW1 SOL 236 4.580 0.650 24.321 1.00 0.00 H +ATOM 711 HW2 SOL 236 5.420 1.470 23.191 1.00 0.00 H +ATOM 712 OW SOL 237 14.341 11.881 19.031 1.00 0.00 O +ATOM 713 HW1 SOL 237 14.661 11.121 19.601 1.00 0.00 H +ATOM 714 HW2 SOL 237 13.421 12.151 19.331 1.00 0.00 H +ATOM 715 OW SOL 238 2.970 0.350 20.331 1.00 0.00 O +ATOM 716 HW1 SOL 238 3.460 1.190 20.121 1.00 0.00 H +ATOM 717 HW2 SOL 238 3.590 -0.300 20.781 1.00 0.00 H +ATOM 718 OW SOL 239 9.351 2.360 23.421 1.00 0.00 O +ATOM 719 HW1 SOL 239 8.871 2.770 22.641 1.00 0.00 H +ATOM 720 HW2 SOL 239 10.341 2.340 23.231 1.00 0.00 H +ATOM 721 OW SOL 240 12.271 15.701 26.551 1.00 0.00 O +ATOM 722 HW1 SOL 240 12.481 16.441 25.901 1.00 0.00 H +ATOM 723 HW2 SOL 240 12.951 15.701 27.281 1.00 0.00 H +ATOM 724 OW SOL 241 4.590 11.521 26.031 1.00 0.00 O +ATOM 725 HW1 SOL 241 3.880 11.251 26.681 1.00 0.00 H +ATOM 726 HW2 SOL 241 4.330 11.241 25.101 1.00 0.00 H +ATOM 727 OW SOL 242 12.711 17.971 24.531 1.00 0.00 O +ATOM 728 HW1 SOL 242 13.151 18.611 23.891 1.00 0.00 H +ATOM 729 HW2 SOL 242 12.211 18.491 25.231 1.00 0.00 H +ATOM 730 OW SOL 243 10.321 5.490 18.781 1.00 0.00 O +ATOM 731 HW1 SOL 243 9.911 6.310 18.391 1.00 0.00 H +ATOM 732 HW2 SOL 243 10.961 5.750 19.511 1.00 0.00 H +ATOM 733 OW SOL 244 8.660 4.540 25.041 1.00 0.00 O +ATOM 734 HW1 SOL 244 8.340 5.260 24.421 1.00 0.00 H +ATOM 735 HW2 SOL 244 8.900 3.730 24.511 1.00 0.00 H +ATOM 736 OW SOL 245 10.171 0.390 26.151 1.00 0.00 O +ATOM 737 HW1 SOL 245 9.451 0.440 25.461 1.00 0.00 H +ATOM 738 HW2 SOL 245 9.931 -0.300 26.841 1.00 0.00 H +ATOM 739 OW SOL 246 14.291 11.731 27.291 1.00 0.00 O +ATOM 740 HW1 SOL 246 13.741 10.891 27.221 1.00 0.00 H +ATOM 741 HW2 SOL 246 14.551 12.021 26.371 1.00 0.00 H +ATOM 742 OW SOL 247 14.661 5.900 28.541 1.00 0.00 O +ATOM 743 HW1 SOL 247 14.361 4.950 28.611 1.00 0.00 H +ATOM 744 HW2 SOL 247 15.391 6.060 29.201 1.00 0.00 H +ATOM 745 OW SOL 248 18.571 8.330 22.391 1.00 0.00 O +ATOM 746 HW1 SOL 248 18.991 7.690 23.031 1.00 0.00 H +ATOM 747 HW2 SOL 248 18.191 7.820 21.611 1.00 0.00 H +ATOM 748 OW SOL 249 4.880 13.851 20.361 1.00 0.00 O +ATOM 749 HW1 SOL 249 4.010 13.701 20.831 1.00 0.00 H +ATOM 750 HW2 SOL 249 4.710 14.111 19.411 1.00 0.00 H +ATOM 751 OW SOL 250 16.641 12.801 25.191 1.00 0.00 O +ATOM 752 HW1 SOL 250 17.631 12.881 25.331 1.00 0.00 H +ATOM 753 HW2 SOL 250 16.191 13.641 25.501 1.00 0.00 H +ATOM 754 OW SOL 251 13.901 5.750 19.401 1.00 0.00 O +ATOM 755 HW1 SOL 251 13.361 5.540 20.211 1.00 0.00 H +ATOM 756 HW2 SOL 251 14.811 5.340 19.491 1.00 0.00 H +ATOM 757 OW SOL 252 5.270 2.560 21.901 1.00 0.00 O +ATOM 758 HW1 SOL 252 5.540 1.970 21.151 1.00 0.00 H +ATOM 759 HW2 SOL 252 5.270 3.510 21.591 1.00 0.00 H +ATOM 760 OW SOL 253 11.111 11.951 29.621 1.00 0.00 O +ATOM 761 HW1 SOL 253 10.711 12.391 30.431 1.00 0.00 H +ATOM 762 HW2 SOL 253 10.701 12.321 28.791 1.00 0.00 H +ATOM 763 OW SOL 254 16.381 10.991 29.411 1.00 0.00 O +ATOM 764 HW1 SOL 254 16.431 11.801 30.001 1.00 0.00 H +ATOM 765 HW2 SOL 254 15.521 11.011 28.901 1.00 0.00 H +ATOM 766 OW SOL 255 7.050 10.501 22.301 1.00 0.00 O +ATOM 767 HW1 SOL 255 6.910 10.571 23.291 1.00 0.00 H +ATOM 768 HW2 SOL 255 7.890 9.991 22.121 1.00 0.00 H +ATOM 769 OW SOL 256 4.100 8.130 31.131 1.00 0.00 O +ATOM 770 HW1 SOL 256 4.960 8.250 31.631 1.00 0.00 H +ATOM 771 HW2 SOL 256 3.680 7.260 31.401 1.00 0.00 H +ATOM 772 OW SOL 257 3.670 11.001 23.631 1.00 0.00 O +ATOM 773 HW1 SOL 257 3.600 11.831 23.071 1.00 0.00 H +ATOM 774 HW2 SOL 257 3.710 10.201 23.031 1.00 0.00 H +ATOM 775 OW SOL 258 5.660 5.370 27.271 1.00 0.00 O +ATOM 776 HW1 SOL 258 5.780 6.030 26.531 1.00 0.00 H +ATOM 777 HW2 SOL 258 6.120 5.710 28.101 1.00 0.00 H +ATOM 778 OW SOL 259 12.521 13.481 22.501 1.00 0.00 O +ATOM 779 HW1 SOL 259 13.021 14.251 22.901 1.00 0.00 H +ATOM 780 HW2 SOL 259 11.571 13.501 22.821 1.00 0.00 H +ATOM 781 OW SOL 260 12.721 14.451 30.041 1.00 0.00 O +ATOM 782 HW1 SOL 260 13.191 14.581 30.911 1.00 0.00 H +ATOM 783 HW2 SOL 260 12.061 13.711 30.131 1.00 0.00 H +ATOM 784 OW SOL 261 15.821 6.390 23.341 1.00 0.00 O +ATOM 785 HW1 SOL 261 15.511 7.000 24.071 1.00 0.00 H +ATOM 786 HW2 SOL 261 16.321 6.910 22.651 1.00 0.00 H +ATOM 787 OW SOL 262 5.730 8.700 28.911 1.00 0.00 O +ATOM 788 HW1 SOL 262 6.170 9.590 28.821 1.00 0.00 H +ATOM 789 HW2 SOL 262 5.100 8.700 29.681 1.00 0.00 H +ATOM 790 OW SOL 263 13.601 8.620 29.071 1.00 0.00 O +ATOM 791 HW1 SOL 263 12.851 8.620 28.411 1.00 0.00 H +ATOM 792 HW2 SOL 263 13.971 7.700 29.161 1.00 0.00 H +ATOM 793 OW SOL 264 12.091 5.250 21.371 1.00 0.00 O +ATOM 794 HW1 SOL 264 12.221 4.410 21.911 1.00 0.00 H +ATOM 795 HW2 SOL 264 11.801 5.990 21.971 1.00 0.00 H +ATOM 796 OW SOL 265 7.320 6.340 29.261 1.00 0.00 O +ATOM 797 HW1 SOL 265 7.910 6.080 28.501 1.00 0.00 H +ATOM 798 HW2 SOL 265 7.040 7.300 29.151 1.00 0.00 H +ATOM 799 OW SOL 266 3.070 0.630 24.801 1.00 0.00 O +ATOM 800 HW1 SOL 266 2.960 1.570 25.131 1.00 0.00 H +ATOM 801 HW2 SOL 266 3.020 0.000 25.571 1.00 0.00 H +ATOM 802 OW SOL 267 16.221 3.670 22.361 1.00 0.00 O +ATOM 803 HW1 SOL 267 16.241 2.910 23.001 1.00 0.00 H +ATOM 804 HW2 SOL 267 15.741 4.440 22.761 1.00 0.00 H +ATOM 805 OW SOL 268 10.231 7.660 28.281 1.00 0.00 O +ATOM 806 HW1 SOL 268 10.381 7.870 29.241 1.00 0.00 H +ATOM 807 HW2 SOL 268 9.931 6.710 28.191 1.00 0.00 H +ATOM 808 OW SOL 269 15.401 2.740 19.871 1.00 0.00 O +ATOM 809 HW1 SOL 269 14.791 1.990 20.101 1.00 0.00 H +ATOM 810 HW2 SOL 269 15.621 3.260 20.701 1.00 0.00 H +ATOM 811 OW SOL 270 13.031 8.380 19.041 1.00 0.00 O +ATOM 812 HW1 SOL 270 13.371 7.450 19.191 1.00 0.00 H +ATOM 813 HW2 SOL 270 13.211 8.650 18.091 1.00 0.00 H +ATOM 814 OW SOL 271 10.681 13.331 27.111 1.00 0.00 O +ATOM 815 HW1 SOL 271 10.751 12.491 26.561 1.00 0.00 H +ATOM 816 HW2 SOL 271 11.301 14.021 26.751 1.00 0.00 H +ATOM 817 OW SOL 272 3.190 8.100 28.111 1.00 0.00 O +ATOM 818 HW1 SOL 272 4.120 8.460 28.161 1.00 0.00 H +ATOM 819 HW2 SOL 272 3.130 7.250 28.631 1.00 0.00 H +ATOM 820 OW SOL 273 3.390 5.090 28.681 1.00 0.00 O +ATOM 821 HW1 SOL 273 2.870 4.260 28.511 1.00 0.00 H +ATOM 822 HW2 SOL 273 4.160 5.140 28.041 1.00 0.00 H +ATOM 823 OW SOL 274 0.880 18.011 27.891 1.00 0.00 O +ATOM 824 HW1 SOL 274 0.460 17.151 27.621 1.00 0.00 H +ATOM 825 HW2 SOL 274 1.820 18.041 27.551 1.00 0.00 H +ATOM 826 OW SOL 275 5.040 15.681 27.721 1.00 0.00 O +ATOM 827 HW1 SOL 275 5.700 16.421 27.811 1.00 0.00 H +ATOM 828 HW2 SOL 275 5.480 14.891 27.301 1.00 0.00 H +ATOM 829 OW SOL 276 10.021 7.960 31.001 1.00 0.00 O +ATOM 830 HW1 SOL 276 10.431 7.640 31.861 1.00 0.00 H +ATOM 831 HW2 SOL 276 9.061 7.690 30.971 1.00 0.00 H +ATOM 832 OW SOL 277 0.400 5.440 29.761 1.00 0.00 O +ATOM 833 HW1 SOL 277 1.250 5.110 29.351 1.00 0.00 H +ATOM 834 HW2 SOL 277 0.530 5.590 30.741 1.00 0.00 H +ATOM 835 OW SOL 278 8.150 5.720 21.871 1.00 0.00 O +ATOM 836 HW1 SOL 278 8.220 4.830 21.411 1.00 0.00 H +ATOM 837 HW2 SOL 278 7.210 6.060 21.791 1.00 0.00 H +ATOM 838 OW SOL 279 16.571 6.040 30.681 1.00 0.00 O +ATOM 839 HW1 SOL 279 16.191 5.350 31.301 1.00 0.00 H +ATOM 840 HW2 SOL 279 17.391 5.680 30.241 1.00 0.00 H +ATOM 841 OW SOL 280 6.710 4.640 0.081 1.00 0.00 O +ATOM 842 HW1 SOL 280 6.370 3.750 -0.219 1.00 0.00 H +ATOM 843 HW2 SOL 280 6.970 5.180 -0.719 1.00 0.00 H +ATOM 844 OW SOL 281 4.730 5.000 20.531 1.00 0.00 O +ATOM 845 HW1 SOL 281 5.340 5.800 20.571 1.00 0.00 H +ATOM 846 HW2 SOL 281 3.780 5.310 20.601 1.00 0.00 H +ATOM 847 OW SOL 282 13.021 8.550 21.711 1.00 0.00 O +ATOM 848 HW1 SOL 282 12.161 8.240 22.131 1.00 0.00 H +ATOM 849 HW2 SOL 282 12.981 8.410 20.721 1.00 0.00 H +ATOM 850 OW SOL 283 17.591 17.471 30.161 1.00 0.00 O +ATOM 851 HW1 SOL 283 18.201 17.771 29.431 1.00 0.00 H +ATOM 852 HW2 SOL 283 17.211 16.581 29.941 1.00 0.00 H +ATOM 853 OW SOL 284 0.830 12.581 28.841 1.00 0.00 O +ATOM 854 HW1 SOL 284 0.780 12.571 29.841 1.00 0.00 H +ATOM 855 HW2 SOL 284 0.000 12.171 28.461 1.00 0.00 H +ATOM 856 OW SOL 285 17.261 1.350 23.851 1.00 0.00 O +ATOM 857 HW1 SOL 285 17.991 1.180 23.181 1.00 0.00 H +ATOM 858 HW2 SOL 285 16.951 0.480 24.231 1.00 0.00 H +ATOM 859 OW SOL 286 13.881 15.731 23.391 1.00 0.00 O +ATOM 860 HW1 SOL 286 14.551 15.851 22.651 1.00 0.00 H +ATOM 861 HW2 SOL 286 13.481 16.621 23.621 1.00 0.00 H +ATOM 862 OW SOL 287 12.801 9.270 25.341 1.00 0.00 O +ATOM 863 HW1 SOL 287 13.401 8.460 25.361 1.00 0.00 H +ATOM 864 HW2 SOL 287 13.201 9.960 24.741 1.00 0.00 H +ATOM 865 OW SOL 288 6.720 16.161 20.161 1.00 0.00 O +ATOM 866 HW1 SOL 288 6.810 16.261 19.171 1.00 0.00 H +ATOM 867 HW2 SOL 288 6.320 15.271 20.371 1.00 0.00 H +ATOM 868 OW SOL 289 2.630 3.260 25.821 1.00 0.00 O +ATOM 869 HW1 SOL 289 1.840 3.770 25.481 1.00 0.00 H +ATOM 870 HW2 SOL 289 2.540 3.110 26.801 1.00 0.00 H +ATOM 871 OW SOL 290 11.941 16.121 18.931 1.00 0.00 O +ATOM 872 HW1 SOL 290 12.001 15.191 19.301 1.00 0.00 H +ATOM 873 HW2 SOL 290 11.351 16.121 18.131 1.00 0.00 H +ATOM 874 OW SOL 291 8.220 10.021 1.111 1.00 0.00 O +ATOM 875 HW1 SOL 291 8.620 10.011 0.191 1.00 0.00 H +ATOM 876 HW2 SOL 291 8.320 10.941 1.511 1.00 0.00 H +ATOM 877 OW SOL 292 9.160 9.100 21.531 1.00 0.00 O +ATOM 878 HW1 SOL 292 9.790 9.480 20.851 1.00 0.00 H +ATOM 879 HW2 SOL 292 9.560 8.270 21.921 1.00 0.00 H +ATOM 880 OW SOL 293 15.041 16.071 19.061 1.00 0.00 O +ATOM 881 HW1 SOL 293 14.121 16.441 19.131 1.00 0.00 H +ATOM 882 HW2 SOL 293 15.421 16.271 18.161 1.00 0.00 H +ATOM 883 OW SOL 294 10.391 10.981 25.581 1.00 0.00 O +ATOM 884 HW1 SOL 294 9.691 10.511 26.121 1.00 0.00 H +ATOM 885 HW2 SOL 294 10.981 10.301 25.151 1.00 0.00 H +ATOM 886 OW SOL 295 10.141 2.360 28.331 1.00 0.00 O +ATOM 887 HW1 SOL 295 10.061 2.000 27.401 1.00 0.00 H +ATOM 888 HW2 SOL 295 10.121 1.600 28.981 1.00 0.00 H +ATOM 889 OW SOL 296 5.900 14.871 23.531 1.00 0.00 O +ATOM 890 HW1 SOL 296 6.320 14.291 22.831 1.00 0.00 H +ATOM 891 HW2 SOL 296 5.460 15.661 23.091 1.00 0.00 H +ATOM 892 OW SOL 297 17.091 3.850 1.201 1.00 0.00 O +ATOM 893 HW1 SOL 297 17.821 4.540 1.241 1.00 0.00 H +ATOM 894 HW2 SOL 297 17.371 3.100 0.611 1.00 0.00 H +ATOM 895 OW SOL 298 2.550 13.481 21.521 1.00 0.00 O +ATOM 896 HW1 SOL 298 1.590 13.491 21.251 1.00 0.00 H +ATOM 897 HW2 SOL 298 2.670 14.011 22.361 1.00 0.00 H +ATOM 898 OW SOL 299 0.750 3.450 18.951 1.00 0.00 O +ATOM 899 HW1 SOL 299 -0.170 3.170 18.661 1.00 0.00 H +ATOM 900 HW2 SOL 299 1.060 4.220 18.391 1.00 0.00 H +ATOM 901 OW SOL 300 11.831 13.351 19.811 1.00 0.00 O +ATOM 902 HW1 SOL 300 10.841 13.241 19.831 1.00 0.00 H +ATOM 903 HW2 SOL 300 12.171 13.501 20.741 1.00 0.00 H +ATOM 904 OW SOL 301 14.931 17.671 28.211 1.00 0.00 O +ATOM 905 HW1 SOL 301 15.261 18.311 27.521 1.00 0.00 H +ATOM 906 HW2 SOL 301 15.591 17.611 28.961 1.00 0.00 H +ATOM 907 OW SOL 302 16.741 8.830 31.161 1.00 0.00 O +ATOM 908 HW1 SOL 302 16.471 7.940 30.791 1.00 0.00 H +ATOM 909 HW2 SOL 302 16.751 9.510 30.431 1.00 0.00 H +ATOM 910 OW SOL 303 12.251 3.250 23.111 1.00 0.00 O +ATOM 911 HW1 SOL 303 12.901 2.510 23.001 1.00 0.00 H +ATOM 912 HW2 SOL 303 12.451 3.750 23.951 1.00 0.00 H +ATOM 913 OW SOL 304 5.940 7.450 25.141 1.00 0.00 O +ATOM 914 HW1 SOL 304 6.440 8.300 24.951 1.00 0.00 H +ATOM 915 HW2 SOL 304 5.060 7.470 24.661 1.00 0.00 H +ATOM 916 OW SOL 305 8.590 13.741 18.781 1.00 0.00 O +ATOM 917 HW1 SOL 305 8.130 13.891 19.661 1.00 0.00 H +ATOM 918 HW2 SOL 305 9.030 14.591 18.481 1.00 0.00 H +ATOM 919 OW SOL 306 6.610 17.901 28.151 1.00 0.00 O +ATOM 920 HW1 SOL 306 6.150 18.781 28.021 1.00 0.00 H +ATOM 921 HW2 SOL 306 7.600 18.021 28.081 1.00 0.00 H +ATOM 922 OW SOL 307 8.590 9.561 27.231 1.00 0.00 O +ATOM 923 HW1 SOL 307 9.130 8.871 27.711 1.00 0.00 H +ATOM 924 HW2 SOL 307 8.270 10.251 27.891 1.00 0.00 H +ATOM 925 OW SOL 308 10.831 9.841 19.491 1.00 0.00 O +ATOM 926 HW1 SOL 308 10.601 10.371 18.671 1.00 0.00 H +ATOM 927 HW2 SOL 308 11.641 9.281 19.301 1.00 0.00 H +ATOM 928 OW SOL 309 18.611 15.691 27.131 1.00 0.00 O +ATOM 929 HW1 SOL 309 17.901 15.571 26.431 1.00 0.00 H +ATOM 930 HW2 SOL 309 18.621 14.901 27.731 1.00 0.00 H +ATOM 931 OW SOL 310 0.790 12.401 25.151 1.00 0.00 O +ATOM 932 HW1 SOL 310 0.780 11.931 26.031 1.00 0.00 H +ATOM 933 HW2 SOL 310 1.610 12.121 24.641 1.00 0.00 H +ATOM 934 OW SOL 311 4.280 4.240 23.821 1.00 0.00 O +ATOM 935 HW1 SOL 311 4.580 3.520 23.201 1.00 0.00 H +ATOM 936 HW2 SOL 311 3.890 3.840 24.651 1.00 0.00 H +ATOM 937 OW SOL 312 17.051 14.871 29.661 1.00 0.00 O +ATOM 938 HW1 SOL 312 16.121 14.621 29.391 1.00 0.00 H +ATOM 939 HW2 SOL 312 17.311 14.371 30.481 1.00 0.00 H +ATOM 940 OW SOL 313 8.120 15.861 25.491 1.00 0.00 O +ATOM 941 HW1 SOL 313 8.440 15.961 24.551 1.00 0.00 H +ATOM 942 HW2 SOL 313 7.330 15.241 25.511 1.00 0.00 H +ATOM 943 OW SOL 314 14.241 2.140 29.741 1.00 0.00 O +ATOM 944 HW1 SOL 314 14.761 1.490 30.291 1.00 0.00 H +ATOM 945 HW2 SOL 314 13.751 2.770 30.351 1.00 0.00 H +ATOM 946 OW SOL 315 10.011 0.340 30.161 1.00 0.00 O +ATOM 947 HW1 SOL 315 9.381 -0.380 29.851 1.00 0.00 H +ATOM 948 HW2 SOL 315 10.941 -0.020 30.161 1.00 0.00 H +ATOM 949 OW SOL 316 7.700 13.301 21.631 1.00 0.00 O +ATOM 950 HW1 SOL 316 7.240 12.431 21.801 1.00 0.00 H +ATOM 951 HW2 SOL 316 8.610 13.271 22.041 1.00 0.00 H +ATOM 952 OW SOL 317 13.521 0.520 20.301 1.00 0.00 O +ATOM 953 HW1 SOL 317 13.871 0.110 19.461 1.00 0.00 H +ATOM 954 HW2 SOL 317 12.621 0.140 20.501 1.00 0.00 H +ATOM 955 OW SOL 318 13.001 4.530 25.531 1.00 0.00 O +ATOM 956 HW1 SOL 318 12.411 5.330 25.571 1.00 0.00 H +ATOM 957 HW2 SOL 318 13.151 4.180 26.461 1.00 0.00 H +ATOM 958 OW SOL 319 15.931 2.210 27.441 1.00 0.00 O +ATOM 959 HW1 SOL 319 15.091 2.200 27.981 1.00 0.00 H +ATOM 960 HW2 SOL 319 15.951 3.040 26.881 1.00 0.00 H +ATOM 961 OW SOL 320 0.390 10.771 21.621 1.00 0.00 O +ATOM 962 HW1 SOL 320 1.380 10.661 21.531 1.00 0.00 H +ATOM 963 HW2 SOL 320 -0.010 9.911 21.941 1.00 0.00 H +ATOM 964 OW SOL 321 8.750 16.461 21.991 1.00 0.00 O +ATOM 965 HW1 SOL 321 7.980 16.111 21.451 1.00 0.00 H +ATOM 966 HW2 SOL 321 8.430 17.171 22.611 1.00 0.00 H +ATOM 967 OW SOL 322 17.431 24.801 8.560 1.00 0.00 O +ATOM 968 HW1 SOL 322 17.761 25.741 8.560 1.00 0.00 H +ATOM 969 HW2 SOL 322 17.941 24.261 9.220 1.00 0.00 H +ATOM 970 OW SOL 323 11.351 25.651 7.170 1.00 0.00 O +ATOM 971 HW1 SOL 323 11.921 26.431 6.920 1.00 0.00 H +ATOM 972 HW2 SOL 323 10.751 25.911 7.930 1.00 0.00 H +ATOM 973 OW SOL 324 17.551 24.691 2.310 1.00 0.00 O +ATOM 974 HW1 SOL 324 17.431 24.561 1.320 1.00 0.00 H +ATOM 975 HW2 SOL 324 17.251 23.881 2.800 1.00 0.00 H +ATOM 976 OW SOL 325 7.680 30.061 10.231 1.00 0.00 O +ATOM 977 HW1 SOL 325 6.900 30.231 10.831 1.00 0.00 H +ATOM 978 HW2 SOL 325 8.020 30.931 9.871 1.00 0.00 H +ATOM 979 OW SOL 326 8.500 26.601 18.231 1.00 0.00 O +ATOM 980 HW1 SOL 326 8.460 27.361 18.881 1.00 0.00 H +ATOM 981 HW2 SOL 326 8.720 26.961 17.321 1.00 0.00 H +ATOM 982 OW SOL 327 6.850 28.741 6.650 1.00 0.00 O +ATOM 983 HW1 SOL 327 7.540 28.581 7.350 1.00 0.00 H +ATOM 984 HW2 SOL 327 6.120 29.311 7.030 1.00 0.00 H +ATOM 985 OW SOL 328 4.380 22.541 14.991 1.00 0.00 O +ATOM 986 HW1 SOL 328 5.200 21.981 15.081 1.00 0.00 H +ATOM 987 HW2 SOL 328 3.570 21.961 15.031 1.00 0.00 H +ATOM 988 OW SOL 329 16.031 23.091 7.370 1.00 0.00 O +ATOM 989 HW1 SOL 329 15.291 23.551 6.870 1.00 0.00 H +ATOM 990 HW2 SOL 329 16.541 23.771 7.900 1.00 0.00 H +ATOM 991 OW SOL 330 2.400 29.531 8.860 1.00 0.00 O +ATOM 992 HW1 SOL 330 2.540 28.691 9.380 1.00 0.00 H +ATOM 993 HW2 SOL 330 1.850 30.171 9.410 1.00 0.00 H +ATOM 994 OW SOL 331 6.060 28.261 1.230 1.00 0.00 O +ATOM 995 HW1 SOL 331 6.130 29.101 0.690 1.00 0.00 H +ATOM 996 HW2 SOL 331 6.520 28.391 2.110 1.00 0.00 H +ATOM 997 OW SOL 332 15.941 19.761 14.801 1.00 0.00 O +ATOM 998 HW1 SOL 332 15.761 20.431 14.081 1.00 0.00 H +ATOM 999 HW2 SOL 332 15.911 20.221 15.691 1.00 0.00 H +ATOM 1000 OW SOL 333 1.220 25.051 5.630 1.00 0.00 O +ATOM 1001 HW1 SOL 333 0.770 24.171 5.800 1.00 0.00 H +ATOM 1002 HW2 SOL 333 1.210 25.591 6.470 1.00 0.00 H +ATOM 1003 OW SOL 334 16.891 27.841 6.120 1.00 0.00 O +ATOM 1004 HW1 SOL 334 17.841 27.551 6.200 1.00 0.00 H +ATOM 1005 HW2 SOL 334 16.811 28.491 5.370 1.00 0.00 H +ATOM 1006 OW SOL 335 16.411 29.701 4.320 1.00 0.00 O +ATOM 1007 HW1 SOL 335 17.271 29.721 3.800 1.00 0.00 H +ATOM 1008 HW2 SOL 335 16.551 30.171 5.200 1.00 0.00 H +ATOM 1009 OW SOL 336 1.130 25.991 15.971 1.00 0.00 O +ATOM 1010 HW1 SOL 336 2.010 25.861 16.421 1.00 0.00 H +ATOM 1011 HW2 SOL 336 1.000 26.961 15.751 1.00 0.00 H +ATOM 1012 OW SOL 337 6.130 1.041 7.260 1.00 0.00 O +ATOM 1013 HW1 SOL 337 5.640 0.171 7.350 1.00 0.00 H +ATOM 1014 HW2 SOL 337 5.900 1.471 6.390 1.00 0.00 H +ATOM 1015 OW SOL 338 12.931 30.901 14.231 1.00 0.00 O +ATOM 1016 HW1 SOL 338 13.301 30.171 13.651 1.00 0.00 H +ATOM 1017 HW2 SOL 338 13.451 30.951 15.081 1.00 0.00 H +ATOM 1018 OW SOL 339 8.090 18.661 5.020 1.00 0.00 O +ATOM 1019 HW1 SOL 339 8.490 19.571 4.930 1.00 0.00 H +ATOM 1020 HW2 SOL 339 7.090 18.741 5.080 1.00 0.00 H +ATOM 1021 OW SOL 340 15.251 28.611 1.900 1.00 0.00 O +ATOM 1022 HW1 SOL 340 14.621 27.851 2.030 1.00 0.00 H +ATOM 1023 HW2 SOL 340 15.731 28.791 2.760 1.00 0.00 H +ATOM 1024 OW SOL 341 3.170 21.131 18.011 1.00 0.00 O +ATOM 1025 HW1 SOL 341 3.880 21.841 18.071 1.00 0.00 H +ATOM 1026 HW2 SOL 341 2.290 21.521 18.291 1.00 0.00 H +ATOM 1027 OW SOL 342 5.980 25.911 2.700 1.00 0.00 O +ATOM 1028 HW1 SOL 342 6.220 26.601 2.020 1.00 0.00 H +ATOM 1029 HW2 SOL 342 5.200 26.241 3.240 1.00 0.00 H +ATOM 1030 OW SOL 343 12.811 22.071 9.441 1.00 0.00 O +ATOM 1031 HW1 SOL 343 11.951 21.571 9.311 1.00 0.00 H +ATOM 1032 HW2 SOL 343 13.431 21.531 10.001 1.00 0.00 H +ATOM 1033 OW SOL 344 8.070 24.671 14.651 1.00 0.00 O +ATOM 1034 HW1 SOL 344 7.600 24.641 15.541 1.00 0.00 H +ATOM 1035 HW2 SOL 344 7.560 24.121 13.991 1.00 0.00 H +ATOM 1036 OW SOL 345 13.941 23.311 16.741 1.00 0.00 O +ATOM 1037 HW1 SOL 345 13.741 23.741 17.621 1.00 0.00 H +ATOM 1038 HW2 SOL 345 14.721 22.691 16.831 1.00 0.00 H +ATOM 1039 OW SOL 346 9.731 27.521 15.721 1.00 0.00 O +ATOM 1040 HW1 SOL 346 10.191 26.681 15.431 1.00 0.00 H +ATOM 1041 HW2 SOL 346 9.171 27.861 14.971 1.00 0.00 H +ATOM 1042 OW SOL 347 9.911 22.721 12.421 1.00 0.00 O +ATOM 1043 HW1 SOL 347 9.141 23.061 12.961 1.00 0.00 H +ATOM 1044 HW2 SOL 347 9.571 22.211 11.631 1.00 0.00 H +ATOM 1045 OW SOL 348 10.411 25.631 4.290 1.00 0.00 O +ATOM 1046 HW1 SOL 348 10.671 25.591 5.250 1.00 0.00 H +ATOM 1047 HW2 SOL 348 9.561 25.121 4.150 1.00 0.00 H +ATOM 1048 OW SOL 349 8.650 22.101 1.950 1.00 0.00 O +ATOM 1049 HW1 SOL 349 9.240 22.731 1.460 1.00 0.00 H +ATOM 1050 HW2 SOL 349 8.840 21.161 1.660 1.00 0.00 H +ATOM 1051 OW SOL 350 17.191 24.471 18.311 1.00 0.00 O +ATOM 1052 HW1 SOL 350 16.931 25.361 17.951 1.00 0.00 H +ATOM 1053 HW2 SOL 350 17.171 23.791 17.581 1.00 0.00 H +ATOM 1054 OW SOL 351 13.621 30.061 5.450 1.00 0.00 O +ATOM 1055 HW1 SOL 351 14.451 29.771 4.970 1.00 0.00 H +ATOM 1056 HW2 SOL 351 13.131 30.731 4.890 1.00 0.00 H +ATOM 1057 OW SOL 352 5.500 20.581 8.850 1.00 0.00 O +ATOM 1058 HW1 SOL 352 5.450 20.531 9.850 1.00 0.00 H +ATOM 1059 HW2 SOL 352 5.520 21.541 8.560 1.00 0.00 H +ATOM 1060 OW SOL 353 17.951 29.281 8.730 1.00 0.00 O +ATOM 1061 HW1 SOL 353 17.331 29.131 7.970 1.00 0.00 H +ATOM 1062 HW2 SOL 353 17.431 29.391 9.580 1.00 0.00 H +ATOM 1063 OW SOL 354 3.210 28.051 2.420 1.00 0.00 O +ATOM 1064 HW1 SOL 354 4.030 28.441 2.000 1.00 0.00 H +ATOM 1065 HW2 SOL 354 2.940 27.231 1.930 1.00 0.00 H +ATOM 1066 OW SOL 355 14.581 25.971 7.280 1.00 0.00 O +ATOM 1067 HW1 SOL 355 14.531 25.321 8.030 1.00 0.00 H +ATOM 1068 HW2 SOL 355 15.381 26.561 7.410 1.00 0.00 H +ATOM 1069 OW SOL 356 2.020 21.471 14.981 1.00 0.00 O +ATOM 1070 HW1 SOL 356 1.220 22.071 14.851 1.00 0.00 H +ATOM 1071 HW2 SOL 356 1.920 20.981 15.841 1.00 0.00 H +ATOM 1072 OW SOL 357 14.001 19.691 4.260 1.00 0.00 O +ATOM 1073 HW1 SOL 357 13.761 19.321 3.360 1.00 0.00 H +ATOM 1074 HW2 SOL 357 14.991 19.851 4.300 1.00 0.00 H +ATOM 1075 OW SOL 358 3.820 25.621 4.800 1.00 0.00 O +ATOM 1076 HW1 SOL 358 4.270 24.721 4.770 1.00 0.00 H +ATOM 1077 HW2 SOL 358 2.880 25.511 5.130 1.00 0.00 H +ATOM 1078 OW SOL 359 15.471 20.841 17.291 1.00 0.00 O +ATOM 1079 HW1 SOL 359 15.421 21.211 18.211 1.00 0.00 H +ATOM 1080 HW2 SOL 359 14.751 20.151 17.171 1.00 0.00 H +ATOM 1081 OW SOL 360 6.140 19.841 1.170 1.00 0.00 O +ATOM 1082 HW1 SOL 360 7.120 19.621 1.240 1.00 0.00 H +ATOM 1083 HW2 SOL 360 5.830 19.671 0.240 1.00 0.00 H +ATOM 1084 OW SOL 361 7.810 21.261 17.491 1.00 0.00 O +ATOM 1085 HW1 SOL 361 8.480 20.651 17.921 1.00 0.00 H +ATOM 1086 HW2 SOL 361 7.080 21.451 18.141 1.00 0.00 H +ATOM 1087 OW SOL 362 13.511 24.521 14.331 1.00 0.00 O +ATOM 1088 HW1 SOL 362 13.791 24.091 15.181 1.00 0.00 H +ATOM 1089 HW2 SOL 362 13.761 25.481 14.341 1.00 0.00 H +ATOM 1090 OW SOL 363 9.220 23.651 8.990 1.00 0.00 O +ATOM 1091 HW1 SOL 363 8.970 23.561 8.030 1.00 0.00 H +ATOM 1092 HW2 SOL 363 9.700 22.831 9.300 1.00 0.00 H +ATOM 1093 OW SOL 364 5.390 19.261 5.120 1.00 0.00 O +ATOM 1094 HW1 SOL 364 4.580 19.271 5.700 1.00 0.00 H +ATOM 1095 HW2 SOL 364 5.420 20.091 4.570 1.00 0.00 H +ATOM 1096 OW SOL 365 2.970 18.971 1.710 1.00 0.00 O +ATOM 1097 HW1 SOL 365 3.460 19.811 1.500 1.00 0.00 H +ATOM 1098 HW2 SOL 365 3.590 18.321 2.160 1.00 0.00 H +ATOM 1099 OW SOL 366 9.351 20.981 4.800 1.00 0.00 O +ATOM 1100 HW1 SOL 366 8.871 21.391 4.020 1.00 0.00 H +ATOM 1101 HW2 SOL 366 10.341 20.961 4.610 1.00 0.00 H +ATOM 1102 OW SOL 367 10.761 25.451 14.641 1.00 0.00 O +ATOM 1103 HW1 SOL 367 9.961 24.841 14.671 1.00 0.00 H +ATOM 1104 HW2 SOL 367 11.571 24.921 14.401 1.00 0.00 H +ATOM 1105 OW SOL 368 4.590 30.141 7.410 1.00 0.00 O +ATOM 1106 HW1 SOL 368 3.880 29.871 8.060 1.00 0.00 H +ATOM 1107 HW2 SOL 368 4.330 29.861 6.480 1.00 0.00 H +ATOM 1108 OW SOL 369 10.321 24.111 0.160 1.00 0.00 O +ATOM 1109 HW1 SOL 369 9.911 24.931 -0.230 1.00 0.00 H +ATOM 1110 HW2 SOL 369 10.961 24.371 0.890 1.00 0.00 H +ATOM 1111 OW SOL 370 5.610 20.841 11.471 1.00 0.00 O +ATOM 1112 HW1 SOL 370 5.990 20.001 11.841 1.00 0.00 H +ATOM 1113 HW2 SOL 370 4.730 21.031 11.911 1.00 0.00 H +ATOM 1114 OW SOL 371 8.660 23.161 6.420 1.00 0.00 O +ATOM 1115 HW1 SOL 371 8.340 23.881 5.800 1.00 0.00 H +ATOM 1116 HW2 SOL 371 8.900 22.351 5.890 1.00 0.00 H +ATOM 1117 OW SOL 372 10.171 19.011 7.530 1.00 0.00 O +ATOM 1118 HW1 SOL 372 9.451 19.061 6.840 1.00 0.00 H +ATOM 1119 HW2 SOL 372 9.931 18.321 8.220 1.00 0.00 H +ATOM 1120 OW SOL 373 14.291 30.351 8.670 1.00 0.00 O +ATOM 1121 HW1 SOL 373 13.741 29.511 8.600 1.00 0.00 H +ATOM 1122 HW2 SOL 373 14.551 30.641 7.750 1.00 0.00 H +ATOM 1123 OW SOL 374 14.661 24.521 9.921 1.00 0.00 O +ATOM 1124 HW1 SOL 374 14.361 23.571 9.991 1.00 0.00 H +ATOM 1125 HW2 SOL 374 15.391 24.681 10.581 1.00 0.00 H +ATOM 1126 OW SOL 375 18.571 26.951 3.770 1.00 0.00 O +ATOM 1127 HW1 SOL 375 18.991 26.311 4.410 1.00 0.00 H +ATOM 1128 HW2 SOL 375 18.191 26.441 2.990 1.00 0.00 H +ATOM 1129 OW SOL 376 13.901 24.371 0.780 1.00 0.00 O +ATOM 1130 HW1 SOL 376 13.361 24.161 1.590 1.00 0.00 H +ATOM 1131 HW2 SOL 376 14.811 23.961 0.870 1.00 0.00 H +ATOM 1132 OW SOL 377 5.270 21.181 3.280 1.00 0.00 O +ATOM 1133 HW1 SOL 377 5.540 20.591 2.530 1.00 0.00 H +ATOM 1134 HW2 SOL 377 5.270 22.131 2.970 1.00 0.00 H +ATOM 1135 OW SOL 378 17.541 30.851 15.881 1.00 0.00 O +ATOM 1136 HW1 SOL 378 18.451 30.461 15.751 1.00 0.00 H +ATOM 1137 HW2 SOL 378 17.621 31.811 16.121 1.00 0.00 H +ATOM 1138 OW SOL 379 16.381 29.611 10.791 1.00 0.00 O +ATOM 1139 HW1 SOL 379 16.431 30.421 11.381 1.00 0.00 H +ATOM 1140 HW2 SOL 379 15.521 29.631 10.281 1.00 0.00 H +ATOM 1141 OW SOL 380 9.150 19.511 14.021 1.00 0.00 O +ATOM 1142 HW1 SOL 380 9.400 19.311 13.071 1.00 0.00 H +ATOM 1143 HW2 SOL 380 9.870 20.071 14.441 1.00 0.00 H +ATOM 1144 OW SOL 381 9.801 29.781 17.191 1.00 0.00 O +ATOM 1145 HW1 SOL 381 8.811 29.841 17.291 1.00 0.00 H +ATOM 1146 HW2 SOL 381 10.031 28.981 16.631 1.00 0.00 H +ATOM 1147 OW SOL 382 7.050 29.121 3.680 1.00 0.00 O +ATOM 1148 HW1 SOL 382 6.910 29.191 4.670 1.00 0.00 H +ATOM 1149 HW2 SOL 382 7.890 28.611 3.500 1.00 0.00 H +ATOM 1150 OW SOL 383 4.100 26.751 12.511 1.00 0.00 O +ATOM 1151 HW1 SOL 383 4.960 26.871 13.011 1.00 0.00 H +ATOM 1152 HW2 SOL 383 3.680 25.881 12.781 1.00 0.00 H +ATOM 1153 OW SOL 384 12.741 22.481 12.621 1.00 0.00 O +ATOM 1154 HW1 SOL 384 12.951 23.221 13.261 1.00 0.00 H +ATOM 1155 HW2 SOL 384 11.851 22.651 12.191 1.00 0.00 H +ATOM 1156 OW SOL 385 3.670 29.621 5.010 1.00 0.00 O +ATOM 1157 HW1 SOL 385 3.600 30.451 4.450 1.00 0.00 H +ATOM 1158 HW2 SOL 385 3.710 28.821 4.410 1.00 0.00 H +ATOM 1159 OW SOL 386 5.660 23.991 8.650 1.00 0.00 O +ATOM 1160 HW1 SOL 386 5.780 24.651 7.910 1.00 0.00 H +ATOM 1161 HW2 SOL 386 6.120 24.331 9.480 1.00 0.00 H +ATOM 1162 OW SOL 387 15.821 25.011 4.720 1.00 0.00 O +ATOM 1163 HW1 SOL 387 15.511 25.621 5.450 1.00 0.00 H +ATOM 1164 HW2 SOL 387 16.321 25.531 4.030 1.00 0.00 H +ATOM 1165 OW SOL 388 4.020 26.131 15.981 1.00 0.00 O +ATOM 1166 HW1 SOL 388 4.700 26.681 15.511 1.00 0.00 H +ATOM 1167 HW2 SOL 388 4.420 25.251 16.251 1.00 0.00 H +ATOM 1168 OW SOL 389 15.871 26.411 16.701 1.00 0.00 O +ATOM 1169 HW1 SOL 389 14.951 26.791 16.651 1.00 0.00 H +ATOM 1170 HW2 SOL 389 16.471 26.881 16.051 1.00 0.00 H +ATOM 1171 OW SOL 390 10.131 19.671 17.701 1.00 0.00 O +ATOM 1172 HW1 SOL 390 10.191 20.521 17.181 1.00 0.00 H +ATOM 1173 HW2 SOL 390 10.451 18.911 17.131 1.00 0.00 H +ATOM 1174 OW SOL 391 5.040 19.121 17.401 1.00 0.00 O +ATOM 1175 HW1 SOL 391 4.620 18.551 16.701 1.00 0.00 H +ATOM 1176 HW2 SOL 391 4.380 19.811 17.721 1.00 0.00 H +ATOM 1177 OW SOL 392 5.730 27.321 10.291 1.00 0.00 O +ATOM 1178 HW1 SOL 392 6.170 28.211 10.201 1.00 0.00 H +ATOM 1179 HW2 SOL 392 5.100 27.321 11.061 1.00 0.00 H +ATOM 1180 OW SOL 393 13.601 27.241 10.451 1.00 0.00 O +ATOM 1181 HW1 SOL 393 12.851 27.241 9.791 1.00 0.00 H +ATOM 1182 HW2 SOL 393 13.971 26.321 10.541 1.00 0.00 H +ATOM 1183 OW SOL 394 12.091 23.871 2.750 1.00 0.00 O +ATOM 1184 HW1 SOL 394 12.221 23.031 3.290 1.00 0.00 H +ATOM 1185 HW2 SOL 394 11.801 24.611 3.350 1.00 0.00 H +ATOM 1186 OW SOL 395 0.370 0.491 12.821 1.00 0.00 O +ATOM 1187 HW1 SOL 395 0.900 0.001 13.501 1.00 0.00 H +ATOM 1188 HW2 SOL 395 0.590 1.471 12.871 1.00 0.00 H +ATOM 1189 OW SOL 396 7.320 24.961 10.641 1.00 0.00 O +ATOM 1190 HW1 SOL 396 7.910 24.701 9.881 1.00 0.00 H +ATOM 1191 HW2 SOL 396 7.040 25.921 10.531 1.00 0.00 H +ATOM 1192 OW SOL 397 17.281 27.971 18.541 1.00 0.00 O +ATOM 1193 HW1 SOL 397 16.821 27.901 17.651 1.00 0.00 H +ATOM 1194 HW2 SOL 397 16.661 28.411 19.201 1.00 0.00 H +ATOM 1195 OW SOL 398 3.070 19.251 6.180 1.00 0.00 O +ATOM 1196 HW1 SOL 398 2.960 20.191 6.510 1.00 0.00 H +ATOM 1197 HW2 SOL 398 3.020 18.621 6.950 1.00 0.00 H +ATOM 1198 OW SOL 399 16.221 22.291 3.740 1.00 0.00 O +ATOM 1199 HW1 SOL 399 16.241 21.531 4.380 1.00 0.00 H +ATOM 1200 HW2 SOL 399 15.741 23.061 4.140 1.00 0.00 H +ATOM 1201 OW SOL 400 10.231 26.281 9.661 1.00 0.00 O +ATOM 1202 HW1 SOL 400 10.381 26.491 10.621 1.00 0.00 H +ATOM 1203 HW2 SOL 400 9.931 25.331 9.571 1.00 0.00 H +ATOM 1204 OW SOL 401 3.500 27.601 18.041 1.00 0.00 O +ATOM 1205 HW1 SOL 401 4.260 28.041 18.521 1.00 0.00 H +ATOM 1206 HW2 SOL 401 3.850 27.131 17.221 1.00 0.00 H +ATOM 1207 OW SOL 402 15.401 21.361 1.250 1.00 0.00 O +ATOM 1208 HW1 SOL 402 14.791 20.611 1.480 1.00 0.00 H +ATOM 1209 HW2 SOL 402 15.621 21.881 2.080 1.00 0.00 H +ATOM 1210 OW SOL 403 13.031 27.001 0.420 1.00 0.00 O +ATOM 1211 HW1 SOL 403 13.371 26.071 0.570 1.00 0.00 H +ATOM 1212 HW2 SOL 403 13.211 27.271 -0.530 1.00 0.00 H +ATOM 1213 OW SOL 404 3.190 26.721 9.491 1.00 0.00 O +ATOM 1214 HW1 SOL 404 4.120 27.081 9.541 1.00 0.00 H +ATOM 1215 HW2 SOL 404 3.130 25.871 10.011 1.00 0.00 H +ATOM 1216 OW SOL 405 3.390 23.711 10.061 1.00 0.00 O +ATOM 1217 HW1 SOL 405 2.870 22.881 9.891 1.00 0.00 H +ATOM 1218 HW2 SOL 405 4.160 23.761 9.421 1.00 0.00 H +ATOM 1219 OW SOL 406 11.381 22.421 16.781 1.00 0.00 O +ATOM 1220 HW1 SOL 406 10.931 23.051 17.421 1.00 0.00 H +ATOM 1221 HW2 SOL 406 12.311 22.731 16.611 1.00 0.00 H +ATOM 1222 OW SOL 407 11.601 20.691 14.771 1.00 0.00 O +ATOM 1223 HW1 SOL 407 11.601 21.331 15.541 1.00 0.00 H +ATOM 1224 HW2 SOL 407 11.881 21.171 13.941 1.00 0.00 H +ATOM 1225 OW SOL 408 10.021 26.581 12.381 1.00 0.00 O +ATOM 1226 HW1 SOL 408 10.431 26.261 13.241 1.00 0.00 H +ATOM 1227 HW2 SOL 408 9.061 26.311 12.351 1.00 0.00 H +ATOM 1228 OW SOL 409 0.400 24.061 11.141 1.00 0.00 O +ATOM 1229 HW1 SOL 409 1.250 23.731 10.731 1.00 0.00 H +ATOM 1230 HW2 SOL 409 0.530 24.211 12.121 1.00 0.00 H +ATOM 1231 OW SOL 410 1.890 23.821 17.221 1.00 0.00 O +ATOM 1232 HW1 SOL 410 2.480 23.421 16.521 1.00 0.00 H +ATOM 1233 HW2 SOL 410 1.310 24.531 16.811 1.00 0.00 H +ATOM 1234 OW SOL 411 13.691 28.121 16.601 1.00 0.00 O +ATOM 1235 HW1 SOL 411 14.081 29.011 16.801 1.00 0.00 H +ATOM 1236 HW2 SOL 411 13.791 27.921 15.631 1.00 0.00 H +ATOM 1237 OW SOL 412 8.150 24.341 3.250 1.00 0.00 O +ATOM 1238 HW1 SOL 412 8.220 23.451 2.790 1.00 0.00 H +ATOM 1239 HW2 SOL 412 7.210 24.681 3.170 1.00 0.00 H +ATOM 1240 OW SOL 413 16.571 24.661 12.061 1.00 0.00 O +ATOM 1241 HW1 SOL 413 16.191 23.971 12.681 1.00 0.00 H +ATOM 1242 HW2 SOL 413 17.391 24.301 11.621 1.00 0.00 H +ATOM 1243 OW SOL 414 6.710 23.261 12.691 1.00 0.00 O +ATOM 1244 HW1 SOL 414 6.370 22.371 12.391 1.00 0.00 H +ATOM 1245 HW2 SOL 414 6.970 23.801 11.891 1.00 0.00 H +ATOM 1246 OW SOL 415 4.730 23.621 1.910 1.00 0.00 O +ATOM 1247 HW1 SOL 415 5.340 24.421 1.950 1.00 0.00 H +ATOM 1248 HW2 SOL 415 3.780 23.931 1.980 1.00 0.00 H +ATOM 1249 OW SOL 416 1.590 29.991 14.661 1.00 0.00 O +ATOM 1250 HW1 SOL 416 1.810 29.381 15.421 1.00 0.00 H +ATOM 1251 HW2 SOL 416 1.690 29.501 13.801 1.00 0.00 H +ATOM 1252 OW SOL 417 13.471 29.211 12.341 1.00 0.00 O +ATOM 1253 HW1 SOL 417 13.711 28.581 11.601 1.00 0.00 H +ATOM 1254 HW2 SOL 417 12.571 29.611 12.161 1.00 0.00 H +ATOM 1255 OW SOL 418 13.021 27.171 3.090 1.00 0.00 O +ATOM 1256 HW1 SOL 418 12.161 26.861 3.510 1.00 0.00 H +ATOM 1257 HW2 SOL 418 12.981 27.031 2.100 1.00 0.00 H +ATOM 1258 OW SOL 419 0.830 31.201 10.221 1.00 0.00 O +ATOM 1259 HW1 SOL 419 0.780 31.191 11.221 1.00 0.00 H +ATOM 1260 HW2 SOL 419 0.000 30.791 9.841 1.00 0.00 H +ATOM 1261 OW SOL 420 9.030 19.481 1.330 1.00 0.00 O +ATOM 1262 HW1 SOL 420 9.540 19.491 0.470 1.00 0.00 H +ATOM 1263 HW2 SOL 420 9.590 19.061 2.040 1.00 0.00 H +ATOM 1264 OW SOL 421 17.261 19.971 5.230 1.00 0.00 O +ATOM 1265 HW1 SOL 421 17.991 19.801 4.560 1.00 0.00 H +ATOM 1266 HW2 SOL 421 16.951 19.101 5.610 1.00 0.00 H +ATOM 1267 OW SOL 422 12.801 27.891 6.720 1.00 0.00 O +ATOM 1268 HW1 SOL 422 13.401 27.081 6.740 1.00 0.00 H +ATOM 1269 HW2 SOL 422 13.201 28.581 6.120 1.00 0.00 H +ATOM 1270 OW SOL 423 18.411 20.371 9.631 1.00 0.00 O +ATOM 1271 HW1 SOL 423 18.801 19.521 9.271 1.00 0.00 H +ATOM 1272 HW2 SOL 423 17.431 20.391 9.441 1.00 0.00 H +ATOM 1273 OW SOL 424 2.630 21.881 7.200 1.00 0.00 O +ATOM 1274 HW1 SOL 424 1.840 22.391 6.860 1.00 0.00 H +ATOM 1275 HW2 SOL 424 2.540 21.731 8.180 1.00 0.00 H +ATOM 1276 OW SOL 425 8.220 28.641 13.721 1.00 0.00 O +ATOM 1277 HW1 SOL 425 8.620 28.631 12.801 1.00 0.00 H +ATOM 1278 HW2 SOL 425 8.320 29.561 14.121 1.00 0.00 H +ATOM 1279 OW SOL 426 9.160 27.721 2.910 1.00 0.00 O +ATOM 1280 HW1 SOL 426 9.790 28.101 2.230 1.00 0.00 H +ATOM 1281 HW2 SOL 426 9.560 26.891 3.300 1.00 0.00 H +ATOM 1282 OW SOL 427 3.720 0.271 14.901 1.00 0.00 O +ATOM 1283 HW1 SOL 427 3.590 1.201 14.561 1.00 0.00 H +ATOM 1284 HW2 SOL 427 2.880 -0.249 14.771 1.00 0.00 H +ATOM 1285 OW SOL 428 16.141 0.311 12.891 1.00 0.00 O +ATOM 1286 HW1 SOL 428 16.741 0.341 13.691 1.00 0.00 H +ATOM 1287 HW2 SOL 428 15.391 0.951 13.021 1.00 0.00 H +ATOM 1288 OW SOL 429 10.391 29.601 6.960 1.00 0.00 O +ATOM 1289 HW1 SOL 429 9.691 29.131 7.500 1.00 0.00 H +ATOM 1290 HW2 SOL 429 10.981 28.921 6.530 1.00 0.00 H +ATOM 1291 OW SOL 430 10.141 20.981 9.711 1.00 0.00 O +ATOM 1292 HW1 SOL 430 10.061 20.621 8.781 1.00 0.00 H +ATOM 1293 HW2 SOL 430 10.121 20.221 10.361 1.00 0.00 H +ATOM 1294 OW SOL 431 17.091 22.471 13.811 1.00 0.00 O +ATOM 1295 HW1 SOL 431 17.821 23.161 13.851 1.00 0.00 H +ATOM 1296 HW2 SOL 431 17.371 21.721 13.221 1.00 0.00 H +ATOM 1297 OW SOL 432 6.720 20.651 14.891 1.00 0.00 O +ATOM 1298 HW1 SOL 432 7.620 20.491 14.491 1.00 0.00 H +ATOM 1299 HW2 SOL 432 6.800 20.701 15.881 1.00 0.00 H +ATOM 1300 OW SOL 433 14.401 27.181 13.981 1.00 0.00 O +ATOM 1301 HW1 SOL 433 13.831 27.701 13.351 1.00 0.00 H +ATOM 1302 HW2 SOL 433 15.361 27.301 13.741 1.00 0.00 H +ATOM 1303 OW SOL 434 6.130 27.041 14.311 1.00 0.00 O +ATOM 1304 HW1 SOL 434 6.690 27.851 14.141 1.00 0.00 H +ATOM 1305 HW2 SOL 434 6.720 26.241 14.341 1.00 0.00 H +ATOM 1306 OW SOL 435 7.160 24.271 17.081 1.00 0.00 O +ATOM 1307 HW1 SOL 435 7.350 24.921 17.821 1.00 0.00 H +ATOM 1308 HW2 SOL 435 7.760 23.471 17.171 1.00 0.00 H +ATOM 1309 OW SOL 436 14.501 30.821 16.331 1.00 0.00 O +ATOM 1310 HW1 SOL 436 14.411 30.721 17.321 1.00 0.00 H +ATOM 1311 HW2 SOL 436 15.461 30.751 16.071 1.00 0.00 H +ATOM 1312 OW SOL 437 16.741 27.451 12.541 1.00 0.00 O +ATOM 1313 HW1 SOL 437 16.471 26.561 12.171 1.00 0.00 H +ATOM 1314 HW2 SOL 437 16.751 28.131 11.811 1.00 0.00 H +ATOM 1315 OW SOL 438 12.251 21.871 4.490 1.00 0.00 O +ATOM 1316 HW1 SOL 438 12.901 21.131 4.380 1.00 0.00 H +ATOM 1317 HW2 SOL 438 12.451 22.371 5.330 1.00 0.00 H +ATOM 1318 OW SOL 439 5.940 26.071 6.520 1.00 0.00 O +ATOM 1319 HW1 SOL 439 6.440 26.921 6.330 1.00 0.00 H +ATOM 1320 HW2 SOL 439 5.060 26.091 6.040 1.00 0.00 H +ATOM 1321 OW SOL 440 17.771 22.041 16.421 1.00 0.00 O +ATOM 1322 HW1 SOL 440 17.601 22.351 15.481 1.00 0.00 H +ATOM 1323 HW2 SOL 440 16.931 21.671 16.801 1.00 0.00 H +ATOM 1324 OW SOL 441 17.301 27.961 15.171 1.00 0.00 O +ATOM 1325 HW1 SOL 441 17.681 28.871 15.321 1.00 0.00 H +ATOM 1326 HW2 SOL 441 17.221 27.791 14.181 1.00 0.00 H +ATOM 1327 OW SOL 442 8.590 28.181 8.610 1.00 0.00 O +ATOM 1328 HW1 SOL 442 9.130 27.491 9.090 1.00 0.00 H +ATOM 1329 HW2 SOL 442 8.270 28.871 9.270 1.00 0.00 H +ATOM 1330 OW SOL 443 10.831 28.461 0.870 1.00 0.00 O +ATOM 1331 HW1 SOL 443 10.601 28.991 0.050 1.00 0.00 H +ATOM 1332 HW2 SOL 443 11.641 27.901 0.680 1.00 0.00 H +ATOM 1333 OW SOL 444 0.790 31.021 6.530 1.00 0.00 O +ATOM 1334 HW1 SOL 444 0.780 30.551 7.410 1.00 0.00 H +ATOM 1335 HW2 SOL 444 1.610 30.741 6.020 1.00 0.00 H +ATOM 1336 OW SOL 445 18.241 20.541 12.271 1.00 0.00 O +ATOM 1337 HW1 SOL 445 18.201 19.641 12.711 1.00 0.00 H +ATOM 1338 HW2 SOL 445 18.271 20.431 11.281 1.00 0.00 H +ATOM 1339 OW SOL 446 4.280 22.861 5.200 1.00 0.00 O +ATOM 1340 HW1 SOL 446 4.580 22.141 4.580 1.00 0.00 H +ATOM 1341 HW2 SOL 446 3.890 22.461 6.030 1.00 0.00 H +ATOM 1342 OW SOL 447 3.170 24.091 12.801 1.00 0.00 O +ATOM 1343 HW1 SOL 447 3.550 23.501 13.521 1.00 0.00 H +ATOM 1344 HW2 SOL 447 3.570 23.831 11.921 1.00 0.00 H +ATOM 1345 OW SOL 448 14.241 20.761 11.121 1.00 0.00 O +ATOM 1346 HW1 SOL 448 14.761 20.111 11.671 1.00 0.00 H +ATOM 1347 HW2 SOL 448 13.751 21.391 11.731 1.00 0.00 H +ATOM 1348 OW SOL 449 10.011 18.961 11.541 1.00 0.00 O +ATOM 1349 HW1 SOL 449 9.381 18.241 11.231 1.00 0.00 H +ATOM 1350 HW2 SOL 449 10.941 18.601 11.541 1.00 0.00 H +ATOM 1351 OW SOL 450 7.700 0.691 3.010 1.00 0.00 O +ATOM 1352 HW1 SOL 450 7.240 -0.179 3.180 1.00 0.00 H +ATOM 1353 HW2 SOL 450 8.610 0.661 3.420 1.00 0.00 H +ATOM 1354 OW SOL 451 13.521 19.141 1.680 1.00 0.00 O +ATOM 1355 HW1 SOL 451 13.871 18.731 0.840 1.00 0.00 H +ATOM 1356 HW2 SOL 451 12.621 18.761 1.880 1.00 0.00 H +ATOM 1357 OW SOL 452 13.001 23.151 6.910 1.00 0.00 O +ATOM 1358 HW1 SOL 452 12.411 23.951 6.950 1.00 0.00 H +ATOM 1359 HW2 SOL 452 13.151 22.801 7.840 1.00 0.00 H +ATOM 1360 OW SOL 453 15.931 20.831 8.820 1.00 0.00 O +ATOM 1361 HW1 SOL 453 15.091 20.821 9.360 1.00 0.00 H +ATOM 1362 HW2 SOL 453 15.951 21.661 8.260 1.00 0.00 H +ATOM 1363 OW SOL 454 0.390 29.391 3.000 1.00 0.00 O +ATOM 1364 HW1 SOL 454 1.380 29.281 2.910 1.00 0.00 H +ATOM 1365 HW2 SOL 454 -0.010 28.531 3.320 1.00 0.00 H +ATOM 1366 OW SOL 455 17.431 24.801 27.181 1.00 0.00 O +ATOM 1367 HW1 SOL 455 17.761 25.741 27.181 1.00 0.00 H +ATOM 1368 HW2 SOL 455 17.941 24.261 27.841 1.00 0.00 H +ATOM 1369 OW SOL 456 11.351 25.651 25.791 1.00 0.00 O +ATOM 1370 HW1 SOL 456 11.921 26.431 25.541 1.00 0.00 H +ATOM 1371 HW2 SOL 456 10.751 25.911 26.551 1.00 0.00 H +ATOM 1372 OW SOL 457 17.551 24.691 20.931 1.00 0.00 O +ATOM 1373 HW1 SOL 457 17.431 24.561 19.941 1.00 0.00 H +ATOM 1374 HW2 SOL 457 17.251 23.881 21.421 1.00 0.00 H +ATOM 1375 OW SOL 458 7.680 30.061 28.851 1.00 0.00 O +ATOM 1376 HW1 SOL 458 6.900 30.231 29.451 1.00 0.00 H +ATOM 1377 HW2 SOL 458 8.020 30.931 28.491 1.00 0.00 H +ATOM 1378 OW SOL 459 6.850 28.741 25.271 1.00 0.00 O +ATOM 1379 HW1 SOL 459 7.540 28.581 25.971 1.00 0.00 H +ATOM 1380 HW2 SOL 459 6.120 29.311 25.651 1.00 0.00 H +ATOM 1381 OW SOL 460 2.400 29.531 27.481 1.00 0.00 O +ATOM 1382 HW1 SOL 460 2.540 28.691 28.001 1.00 0.00 H +ATOM 1383 HW2 SOL 460 1.850 30.171 28.031 1.00 0.00 H +ATOM 1384 OW SOL 461 6.060 28.261 19.851 1.00 0.00 O +ATOM 1385 HW1 SOL 461 6.130 29.101 19.311 1.00 0.00 H +ATOM 1386 HW2 SOL 461 6.520 28.391 20.731 1.00 0.00 H +ATOM 1387 OW SOL 462 1.220 25.051 24.251 1.00 0.00 O +ATOM 1388 HW1 SOL 462 0.770 24.171 24.421 1.00 0.00 H +ATOM 1389 HW2 SOL 462 1.210 25.591 25.091 1.00 0.00 H +ATOM 1390 OW SOL 463 16.891 27.841 24.741 1.00 0.00 O +ATOM 1391 HW1 SOL 463 17.841 27.551 24.821 1.00 0.00 H +ATOM 1392 HW2 SOL 463 16.811 28.491 23.991 1.00 0.00 H +ATOM 1393 OW SOL 464 16.411 29.701 22.941 1.00 0.00 O +ATOM 1394 HW1 SOL 464 17.271 29.721 22.421 1.00 0.00 H +ATOM 1395 HW2 SOL 464 16.551 30.171 23.821 1.00 0.00 H +ATOM 1396 OW SOL 465 6.130 1.041 25.881 1.00 0.00 O +ATOM 1397 HW1 SOL 465 5.640 0.171 25.971 1.00 0.00 H +ATOM 1398 HW2 SOL 465 5.900 1.471 25.011 1.00 0.00 H +ATOM 1399 OW SOL 466 8.090 18.661 23.641 1.00 0.00 O +ATOM 1400 HW1 SOL 466 8.490 19.571 23.551 1.00 0.00 H +ATOM 1401 HW2 SOL 466 7.090 18.741 23.701 1.00 0.00 H +ATOM 1402 OW SOL 467 15.251 28.611 20.521 1.00 0.00 O +ATOM 1403 HW1 SOL 467 14.621 27.851 20.651 1.00 0.00 H +ATOM 1404 HW2 SOL 467 15.731 28.791 21.381 1.00 0.00 H +ATOM 1405 OW SOL 468 5.980 25.911 21.321 1.00 0.00 O +ATOM 1406 HW1 SOL 468 6.220 26.601 20.641 1.00 0.00 H +ATOM 1407 HW2 SOL 468 5.200 26.241 21.861 1.00 0.00 H +ATOM 1408 OW SOL 469 12.811 22.071 28.061 1.00 0.00 O +ATOM 1409 HW1 SOL 469 11.951 21.571 27.931 1.00 0.00 H +ATOM 1410 HW2 SOL 469 13.431 21.531 28.621 1.00 0.00 H +ATOM 1411 OW SOL 470 10.411 25.631 22.911 1.00 0.00 O +ATOM 1412 HW1 SOL 470 10.671 25.591 23.871 1.00 0.00 H +ATOM 1413 HW2 SOL 470 9.561 25.121 22.771 1.00 0.00 H +ATOM 1414 OW SOL 471 8.650 22.101 20.571 1.00 0.00 O +ATOM 1415 HW1 SOL 471 9.240 22.731 20.081 1.00 0.00 H +ATOM 1416 HW2 SOL 471 8.840 21.161 20.281 1.00 0.00 H +ATOM 1417 OW SOL 472 13.621 30.061 24.071 1.00 0.00 O +ATOM 1418 HW1 SOL 472 14.451 29.771 23.591 1.00 0.00 H +ATOM 1419 HW2 SOL 472 13.131 30.731 23.511 1.00 0.00 H +ATOM 1420 OW SOL 473 5.500 20.581 27.471 1.00 0.00 O +ATOM 1421 HW1 SOL 473 5.450 20.531 28.471 1.00 0.00 H +ATOM 1422 HW2 SOL 473 5.520 21.541 27.181 1.00 0.00 H +ATOM 1423 OW SOL 474 17.951 29.281 27.351 1.00 0.00 O +ATOM 1424 HW1 SOL 474 17.331 29.131 26.591 1.00 0.00 H +ATOM 1425 HW2 SOL 474 17.431 29.391 28.201 1.00 0.00 H +ATOM 1426 OW SOL 475 3.210 28.051 21.041 1.00 0.00 O +ATOM 1427 HW1 SOL 475 4.030 28.441 20.621 1.00 0.00 H +ATOM 1428 HW2 SOL 475 2.940 27.231 20.551 1.00 0.00 H +ATOM 1429 OW SOL 476 14.581 25.971 25.901 1.00 0.00 O +ATOM 1430 HW1 SOL 476 14.531 25.321 26.651 1.00 0.00 H +ATOM 1431 HW2 SOL 476 15.381 26.561 26.031 1.00 0.00 H +ATOM 1432 OW SOL 477 14.001 19.691 22.881 1.00 0.00 O +ATOM 1433 HW1 SOL 477 13.761 19.321 21.981 1.00 0.00 H +ATOM 1434 HW2 SOL 477 14.991 19.851 22.921 1.00 0.00 H +ATOM 1435 OW SOL 478 3.820 25.621 23.421 1.00 0.00 O +ATOM 1436 HW1 SOL 478 4.270 24.721 23.391 1.00 0.00 H +ATOM 1437 HW2 SOL 478 2.880 25.511 23.751 1.00 0.00 H +ATOM 1438 OW SOL 479 6.140 19.841 19.791 1.00 0.00 O +ATOM 1439 HW1 SOL 479 7.120 19.621 19.861 1.00 0.00 H +ATOM 1440 HW2 SOL 479 5.830 19.671 18.861 1.00 0.00 H +ATOM 1441 OW SOL 480 9.220 23.651 27.611 1.00 0.00 O +ATOM 1442 HW1 SOL 480 8.970 23.561 26.651 1.00 0.00 H +ATOM 1443 HW2 SOL 480 9.700 22.831 27.921 1.00 0.00 H +ATOM 1444 OW SOL 481 5.390 19.261 23.741 1.00 0.00 O +ATOM 1445 HW1 SOL 481 4.580 19.271 24.321 1.00 0.00 H +ATOM 1446 HW2 SOL 481 5.420 20.091 23.191 1.00 0.00 H +ATOM 1447 OW SOL 482 2.970 18.971 20.331 1.00 0.00 O +ATOM 1448 HW1 SOL 482 3.460 19.811 20.121 1.00 0.00 H +ATOM 1449 HW2 SOL 482 3.590 18.321 20.781 1.00 0.00 H +ATOM 1450 OW SOL 483 9.351 20.981 23.421 1.00 0.00 O +ATOM 1451 HW1 SOL 483 8.871 21.391 22.641 1.00 0.00 H +ATOM 1452 HW2 SOL 483 10.341 20.961 23.231 1.00 0.00 H +ATOM 1453 OW SOL 484 4.590 30.141 26.031 1.00 0.00 O +ATOM 1454 HW1 SOL 484 3.880 29.871 26.681 1.00 0.00 H +ATOM 1455 HW2 SOL 484 4.330 29.861 25.101 1.00 0.00 H +ATOM 1456 OW SOL 485 10.321 24.111 18.781 1.00 0.00 O +ATOM 1457 HW1 SOL 485 9.911 24.931 18.391 1.00 0.00 H +ATOM 1458 HW2 SOL 485 10.961 24.371 19.511 1.00 0.00 H +ATOM 1459 OW SOL 486 8.660 23.161 25.041 1.00 0.00 O +ATOM 1460 HW1 SOL 486 8.340 23.881 24.421 1.00 0.00 H +ATOM 1461 HW2 SOL 486 8.900 22.351 24.511 1.00 0.00 H +ATOM 1462 OW SOL 487 10.171 19.011 26.151 1.00 0.00 O +ATOM 1463 HW1 SOL 487 9.451 19.061 25.461 1.00 0.00 H +ATOM 1464 HW2 SOL 487 9.931 18.321 26.841 1.00 0.00 H +ATOM 1465 OW SOL 488 14.291 30.351 27.291 1.00 0.00 O +ATOM 1466 HW1 SOL 488 13.741 29.511 27.221 1.00 0.00 H +ATOM 1467 HW2 SOL 488 14.551 30.641 26.371 1.00 0.00 H +ATOM 1468 OW SOL 489 14.661 24.521 28.541 1.00 0.00 O +ATOM 1469 HW1 SOL 489 14.361 23.571 28.611 1.00 0.00 H +ATOM 1470 HW2 SOL 489 15.391 24.681 29.201 1.00 0.00 H +ATOM 1471 OW SOL 490 18.571 26.951 22.391 1.00 0.00 O +ATOM 1472 HW1 SOL 490 18.991 26.311 23.031 1.00 0.00 H +ATOM 1473 HW2 SOL 490 18.191 26.441 21.611 1.00 0.00 H +ATOM 1474 OW SOL 491 13.901 24.371 19.401 1.00 0.00 O +ATOM 1475 HW1 SOL 491 13.361 24.161 20.211 1.00 0.00 H +ATOM 1476 HW2 SOL 491 14.811 23.961 19.491 1.00 0.00 H +ATOM 1477 OW SOL 492 5.270 21.181 21.901 1.00 0.00 O +ATOM 1478 HW1 SOL 492 5.540 20.591 21.151 1.00 0.00 H +ATOM 1479 HW2 SOL 492 5.270 22.131 21.591 1.00 0.00 H +ATOM 1480 OW SOL 493 16.381 29.611 29.411 1.00 0.00 O +ATOM 1481 HW1 SOL 493 16.431 30.421 30.001 1.00 0.00 H +ATOM 1482 HW2 SOL 493 15.521 29.631 28.901 1.00 0.00 H +ATOM 1483 OW SOL 494 7.050 29.121 22.301 1.00 0.00 O +ATOM 1484 HW1 SOL 494 6.910 29.191 23.291 1.00 0.00 H +ATOM 1485 HW2 SOL 494 7.890 28.611 22.121 1.00 0.00 H +ATOM 1486 OW SOL 495 4.100 26.751 31.131 1.00 0.00 O +ATOM 1487 HW1 SOL 495 4.960 26.871 31.631 1.00 0.00 H +ATOM 1488 HW2 SOL 495 3.680 25.881 31.401 1.00 0.00 H +ATOM 1489 OW SOL 496 3.670 29.621 23.631 1.00 0.00 O +ATOM 1490 HW1 SOL 496 3.600 30.451 23.071 1.00 0.00 H +ATOM 1491 HW2 SOL 496 3.710 28.821 23.031 1.00 0.00 H +ATOM 1492 OW SOL 497 5.660 23.991 27.271 1.00 0.00 O +ATOM 1493 HW1 SOL 497 5.780 24.651 26.531 1.00 0.00 H +ATOM 1494 HW2 SOL 497 6.120 24.331 28.101 1.00 0.00 H +ATOM 1495 OW SOL 498 15.821 25.011 23.341 1.00 0.00 O +ATOM 1496 HW1 SOL 498 15.511 25.621 24.071 1.00 0.00 H +ATOM 1497 HW2 SOL 498 16.321 25.531 22.651 1.00 0.00 H +ATOM 1498 OW SOL 499 5.730 27.321 28.911 1.00 0.00 O +ATOM 1499 HW1 SOL 499 6.170 28.211 28.821 1.00 0.00 H +ATOM 1500 HW2 SOL 499 5.100 27.321 29.681 1.00 0.00 H +ATOM 1501 OW SOL 500 13.601 27.241 29.071 1.00 0.00 O +ATOM 1502 HW1 SOL 500 12.851 27.241 28.411 1.00 0.00 H +ATOM 1503 HW2 SOL 500 13.971 26.321 29.161 1.00 0.00 H +ATOM 1504 OW SOL 501 12.091 23.871 21.371 1.00 0.00 O +ATOM 1505 HW1 SOL 501 12.221 23.031 21.911 1.00 0.00 H +ATOM 1506 HW2 SOL 501 11.801 24.611 21.971 1.00 0.00 H +ATOM 1507 OW SOL 502 0.370 0.491 0.211 1.00 0.00 O +ATOM 1508 HW1 SOL 502 0.900 0.001 0.891 1.00 0.00 H +ATOM 1509 HW2 SOL 502 0.590 1.471 0.261 1.00 0.00 H +ATOM 1510 OW SOL 503 7.320 24.961 29.261 1.00 0.00 O +ATOM 1511 HW1 SOL 503 7.910 24.701 28.501 1.00 0.00 H +ATOM 1512 HW2 SOL 503 7.040 25.921 29.151 1.00 0.00 H +ATOM 1513 OW SOL 504 3.070 19.251 24.801 1.00 0.00 O +ATOM 1514 HW1 SOL 504 2.960 20.191 25.131 1.00 0.00 H +ATOM 1515 HW2 SOL 504 3.020 18.621 25.571 1.00 0.00 H +ATOM 1516 OW SOL 505 16.221 22.291 22.361 1.00 0.00 O +ATOM 1517 HW1 SOL 505 16.241 21.531 23.001 1.00 0.00 H +ATOM 1518 HW2 SOL 505 15.741 23.061 22.761 1.00 0.00 H +ATOM 1519 OW SOL 506 10.231 26.281 28.281 1.00 0.00 O +ATOM 1520 HW1 SOL 506 10.381 26.491 29.241 1.00 0.00 H +ATOM 1521 HW2 SOL 506 9.931 25.331 28.191 1.00 0.00 H +ATOM 1522 OW SOL 507 15.401 21.361 19.871 1.00 0.00 O +ATOM 1523 HW1 SOL 507 14.791 20.611 20.101 1.00 0.00 H +ATOM 1524 HW2 SOL 507 15.621 21.881 20.701 1.00 0.00 H +ATOM 1525 OW SOL 508 13.031 27.001 19.041 1.00 0.00 O +ATOM 1526 HW1 SOL 508 13.371 26.071 19.191 1.00 0.00 H +ATOM 1527 HW2 SOL 508 13.211 27.271 18.091 1.00 0.00 H +ATOM 1528 OW SOL 509 3.190 26.721 28.111 1.00 0.00 O +ATOM 1529 HW1 SOL 509 4.120 27.081 28.161 1.00 0.00 H +ATOM 1530 HW2 SOL 509 3.130 25.871 28.631 1.00 0.00 H +ATOM 1531 OW SOL 510 3.390 23.711 28.681 1.00 0.00 O +ATOM 1532 HW1 SOL 510 2.870 22.881 28.511 1.00 0.00 H +ATOM 1533 HW2 SOL 510 4.160 23.761 28.041 1.00 0.00 H +ATOM 1534 OW SOL 511 10.021 26.581 31.001 1.00 0.00 O +ATOM 1535 HW1 SOL 511 10.431 26.261 31.861 1.00 0.00 H +ATOM 1536 HW2 SOL 511 9.061 26.311 30.971 1.00 0.00 H +ATOM 1537 OW SOL 512 0.400 24.061 29.761 1.00 0.00 O +ATOM 1538 HW1 SOL 512 1.250 23.731 29.351 1.00 0.00 H +ATOM 1539 HW2 SOL 512 0.530 24.211 30.741 1.00 0.00 H +ATOM 1540 OW SOL 513 8.150 24.341 21.871 1.00 0.00 O +ATOM 1541 HW1 SOL 513 8.220 23.451 21.411 1.00 0.00 H +ATOM 1542 HW2 SOL 513 7.210 24.681 21.791 1.00 0.00 H +ATOM 1543 OW SOL 514 16.571 24.661 30.681 1.00 0.00 O +ATOM 1544 HW1 SOL 514 16.191 23.971 31.301 1.00 0.00 H +ATOM 1545 HW2 SOL 514 17.391 24.301 30.241 1.00 0.00 H +ATOM 1546 OW SOL 515 6.710 23.261 0.081 1.00 0.00 O +ATOM 1547 HW1 SOL 515 6.370 22.371 -0.219 1.00 0.00 H +ATOM 1548 HW2 SOL 515 6.970 23.801 -0.719 1.00 0.00 H +ATOM 1549 OW SOL 516 4.730 23.621 20.531 1.00 0.00 O +ATOM 1550 HW1 SOL 516 5.340 24.421 20.571 1.00 0.00 H +ATOM 1551 HW2 SOL 516 3.780 23.931 20.601 1.00 0.00 H +ATOM 1552 OW SOL 517 13.471 29.211 30.961 1.00 0.00 O +ATOM 1553 HW1 SOL 517 13.711 28.581 30.221 1.00 0.00 H +ATOM 1554 HW2 SOL 517 12.571 29.611 30.781 1.00 0.00 H +ATOM 1555 OW SOL 518 13.021 27.171 21.711 1.00 0.00 O +ATOM 1556 HW1 SOL 518 12.161 26.861 22.131 1.00 0.00 H +ATOM 1557 HW2 SOL 518 12.981 27.031 20.721 1.00 0.00 H +ATOM 1558 OW SOL 519 0.830 31.201 28.841 1.00 0.00 O +ATOM 1559 HW1 SOL 519 0.780 31.191 29.841 1.00 0.00 H +ATOM 1560 HW2 SOL 519 0.000 30.791 28.461 1.00 0.00 H +ATOM 1561 OW SOL 520 9.030 19.481 19.951 1.00 0.00 O +ATOM 1562 HW1 SOL 520 9.540 19.491 19.091 1.00 0.00 H +ATOM 1563 HW2 SOL 520 9.590 19.061 20.661 1.00 0.00 H +ATOM 1564 OW SOL 521 17.261 19.971 23.851 1.00 0.00 O +ATOM 1565 HW1 SOL 521 17.991 19.801 23.181 1.00 0.00 H +ATOM 1566 HW2 SOL 521 16.951 19.101 24.231 1.00 0.00 H +ATOM 1567 OW SOL 522 12.801 27.891 25.341 1.00 0.00 O +ATOM 1568 HW1 SOL 522 13.401 27.081 25.361 1.00 0.00 H +ATOM 1569 HW2 SOL 522 13.201 28.581 24.741 1.00 0.00 H +ATOM 1570 OW SOL 523 18.411 20.371 28.251 1.00 0.00 O +ATOM 1571 HW1 SOL 523 18.801 19.521 27.891 1.00 0.00 H +ATOM 1572 HW2 SOL 523 17.431 20.391 28.061 1.00 0.00 H +ATOM 1573 OW SOL 524 2.630 21.881 25.821 1.00 0.00 O +ATOM 1574 HW1 SOL 524 1.840 22.391 25.481 1.00 0.00 H +ATOM 1575 HW2 SOL 524 2.540 21.731 26.801 1.00 0.00 H +ATOM 1576 OW SOL 525 8.220 28.641 1.111 1.00 0.00 O +ATOM 1577 HW1 SOL 525 8.620 28.631 0.191 1.00 0.00 H +ATOM 1578 HW2 SOL 525 8.320 29.561 1.511 1.00 0.00 H +ATOM 1579 OW SOL 526 9.160 27.721 21.531 1.00 0.00 O +ATOM 1580 HW1 SOL 526 9.790 28.101 20.851 1.00 0.00 H +ATOM 1581 HW2 SOL 526 9.560 26.891 21.921 1.00 0.00 H +ATOM 1582 OW SOL 527 16.141 0.311 0.281 1.00 0.00 O +ATOM 1583 HW1 SOL 527 16.741 0.341 1.081 1.00 0.00 H +ATOM 1584 HW2 SOL 527 15.391 0.951 0.411 1.00 0.00 H +ATOM 1585 OW SOL 528 10.391 29.601 25.581 1.00 0.00 O +ATOM 1586 HW1 SOL 528 9.691 29.131 26.121 1.00 0.00 H +ATOM 1587 HW2 SOL 528 10.981 28.921 25.151 1.00 0.00 H +ATOM 1588 OW SOL 529 10.141 20.981 28.331 1.00 0.00 O +ATOM 1589 HW1 SOL 529 10.061 20.621 27.401 1.00 0.00 H +ATOM 1590 HW2 SOL 529 10.121 20.221 28.981 1.00 0.00 H +ATOM 1591 OW SOL 530 17.091 22.471 1.201 1.00 0.00 O +ATOM 1592 HW1 SOL 530 17.821 23.161 1.241 1.00 0.00 H +ATOM 1593 HW2 SOL 530 17.371 21.721 0.611 1.00 0.00 H +ATOM 1594 OW SOL 531 0.750 22.071 18.951 1.00 0.00 O +ATOM 1595 HW1 SOL 531 -0.170 21.791 18.661 1.00 0.00 H +ATOM 1596 HW2 SOL 531 1.060 22.841 18.391 1.00 0.00 H +ATOM 1597 OW SOL 532 16.741 27.451 31.161 1.00 0.00 O +ATOM 1598 HW1 SOL 532 16.471 26.561 30.791 1.00 0.00 H +ATOM 1599 HW2 SOL 532 16.751 28.131 30.431 1.00 0.00 H +ATOM 1600 OW SOL 533 12.251 21.871 23.111 1.00 0.00 O +ATOM 1601 HW1 SOL 533 12.901 21.131 23.001 1.00 0.00 H +ATOM 1602 HW2 SOL 533 12.451 22.371 23.951 1.00 0.00 H +ATOM 1603 OW SOL 534 5.940 26.071 25.141 1.00 0.00 O +ATOM 1604 HW1 SOL 534 6.440 26.921 24.951 1.00 0.00 H +ATOM 1605 HW2 SOL 534 5.060 26.091 24.661 1.00 0.00 H +ATOM 1606 OW SOL 535 8.590 28.181 27.231 1.00 0.00 O +ATOM 1607 HW1 SOL 535 9.130 27.491 27.711 1.00 0.00 H +ATOM 1608 HW2 SOL 535 8.270 28.871 27.891 1.00 0.00 H +ATOM 1609 OW SOL 536 10.831 28.461 19.491 1.00 0.00 O +ATOM 1610 HW1 SOL 536 10.601 28.991 18.671 1.00 0.00 H +ATOM 1611 HW2 SOL 536 11.641 27.901 19.301 1.00 0.00 H +ATOM 1612 OW SOL 537 0.790 31.021 25.151 1.00 0.00 O +ATOM 1613 HW1 SOL 537 0.780 30.551 26.031 1.00 0.00 H +ATOM 1614 HW2 SOL 537 1.610 30.741 24.641 1.00 0.00 H +ATOM 1615 OW SOL 538 18.241 20.541 30.891 1.00 0.00 O +ATOM 1616 HW1 SOL 538 18.201 19.641 31.331 1.00 0.00 H +ATOM 1617 HW2 SOL 538 18.271 20.431 29.901 1.00 0.00 H +ATOM 1618 OW SOL 539 4.280 22.861 23.821 1.00 0.00 O +ATOM 1619 HW1 SOL 539 4.580 22.141 23.201 1.00 0.00 H +ATOM 1620 HW2 SOL 539 3.890 22.461 24.651 1.00 0.00 H +ATOM 1621 OW SOL 540 14.241 20.761 29.741 1.00 0.00 O +ATOM 1622 HW1 SOL 540 14.761 20.111 30.291 1.00 0.00 H +ATOM 1623 HW2 SOL 540 13.751 21.391 30.351 1.00 0.00 H +ATOM 1624 OW SOL 541 10.011 18.961 30.161 1.00 0.00 O +ATOM 1625 HW1 SOL 541 9.381 18.241 29.851 1.00 0.00 H +ATOM 1626 HW2 SOL 541 10.941 18.601 30.161 1.00 0.00 H +ATOM 1627 OW SOL 542 7.700 0.691 21.631 1.00 0.00 O +ATOM 1628 HW1 SOL 542 7.240 -0.179 21.801 1.00 0.00 H +ATOM 1629 HW2 SOL 542 8.610 0.661 22.041 1.00 0.00 H +ATOM 1630 OW SOL 543 13.521 19.141 20.301 1.00 0.00 O +ATOM 1631 HW1 SOL 543 13.871 18.731 19.461 1.00 0.00 H +ATOM 1632 HW2 SOL 543 12.621 18.761 20.501 1.00 0.00 H +ATOM 1633 OW SOL 544 13.001 23.151 25.531 1.00 0.00 O +ATOM 1634 HW1 SOL 544 12.411 23.951 25.571 1.00 0.00 H +ATOM 1635 HW2 SOL 544 13.151 22.801 26.461 1.00 0.00 H +ATOM 1636 OW SOL 545 15.931 20.831 27.441 1.00 0.00 O +ATOM 1637 HW1 SOL 545 15.091 20.821 27.981 1.00 0.00 H +ATOM 1638 HW2 SOL 545 15.951 21.661 26.881 1.00 0.00 H +ATOM 1639 OW SOL 546 0.390 29.391 21.621 1.00 0.00 O +ATOM 1640 HW1 SOL 546 1.380 29.281 21.531 1.00 0.00 H +ATOM 1641 HW2 SOL 546 -0.010 28.531 21.941 1.00 0.00 H +ATOM 1642 OW SOL 547 20.921 6.280 1.130 1.00 0.00 O +ATOM 1643 HW1 SOL 547 19.991 6.260 1.500 1.00 0.00 H +ATOM 1644 HW2 SOL 547 20.931 5.890 0.210 1.00 0.00 H +ATOM 1645 OW SOL 548 20.871 2.750 9.961 1.00 0.00 O +ATOM 1646 HW1 SOL 548 21.221 2.580 10.881 1.00 0.00 H +ATOM 1647 HW2 SOL 548 19.991 2.300 9.841 1.00 0.00 H +ATOM 1648 OW SOL 549 18.811 3.680 6.470 1.00 0.00 O +ATOM 1649 HW1 SOL 549 17.991 4.110 6.860 1.00 0.00 H +ATOM 1650 HW2 SOL 549 18.531 2.950 5.840 1.00 0.00 H +ATOM 1651 OW SOL 550 24.311 12.751 11.651 1.00 0.00 O +ATOM 1652 HW1 SOL 550 23.381 12.681 11.281 1.00 0.00 H +ATOM 1653 HW2 SOL 550 24.421 13.641 12.091 1.00 0.00 H +ATOM 1654 OW SOL 551 29.971 7.030 7.170 1.00 0.00 O +ATOM 1655 HW1 SOL 551 30.541 7.810 6.920 1.00 0.00 H +ATOM 1656 HW2 SOL 551 29.371 7.290 7.930 1.00 0.00 H +ATOM 1657 OW SOL 552 26.301 11.441 10.231 1.00 0.00 O +ATOM 1658 HW1 SOL 552 25.521 11.611 10.831 1.00 0.00 H +ATOM 1659 HW2 SOL 552 26.641 12.311 9.871 1.00 0.00 H +ATOM 1660 OW SOL 553 27.121 7.980 18.231 1.00 0.00 O +ATOM 1661 HW1 SOL 553 27.081 8.740 18.881 1.00 0.00 H +ATOM 1662 HW2 SOL 553 27.341 8.340 17.321 1.00 0.00 H +ATOM 1663 OW SOL 554 25.471 10.121 6.650 1.00 0.00 O +ATOM 1664 HW1 SOL 554 26.161 9.961 7.350 1.00 0.00 H +ATOM 1665 HW2 SOL 554 24.741 10.691 7.030 1.00 0.00 H +ATOM 1666 OW SOL 555 25.481 11.611 18.031 1.00 0.00 O +ATOM 1667 HW1 SOL 555 26.081 12.401 18.171 1.00 0.00 H +ATOM 1668 HW2 SOL 555 24.621 11.921 17.621 1.00 0.00 H +ATOM 1669 OW SOL 556 21.971 14.351 10.611 1.00 0.00 O +ATOM 1670 HW1 SOL 556 21.191 14.041 10.081 1.00 0.00 H +ATOM 1671 HW2 SOL 556 22.551 14.931 10.041 1.00 0.00 H +ATOM 1672 OW SOL 557 23.001 3.920 14.991 1.00 0.00 O +ATOM 1673 HW1 SOL 557 23.821 3.360 15.081 1.00 0.00 H +ATOM 1674 HW2 SOL 557 22.191 3.340 15.031 1.00 0.00 H +ATOM 1675 OW SOL 558 20.931 17.131 4.830 1.00 0.00 O +ATOM 1676 HW1 SOL 558 21.271 17.901 5.370 1.00 0.00 H +ATOM 1677 HW2 SOL 558 21.371 17.131 3.930 1.00 0.00 H +ATOM 1678 OW SOL 559 29.891 13.411 16.901 1.00 0.00 O +ATOM 1679 HW1 SOL 559 30.361 13.411 17.781 1.00 0.00 H +ATOM 1680 HW2 SOL 559 29.411 12.541 16.791 1.00 0.00 H +ATOM 1681 OW SOL 560 20.921 14.341 5.380 1.00 0.00 O +ATOM 1682 HW1 SOL 560 20.661 15.301 5.380 1.00 0.00 H +ATOM 1683 HW2 SOL 560 20.211 13.801 5.830 1.00 0.00 H +ATOM 1684 OW SOL 561 21.021 10.911 8.860 1.00 0.00 O +ATOM 1685 HW1 SOL 561 21.161 10.071 9.380 1.00 0.00 H +ATOM 1686 HW2 SOL 561 20.471 11.551 9.410 1.00 0.00 H +ATOM 1687 OW SOL 562 24.821 17.861 14.391 1.00 0.00 O +ATOM 1688 HW1 SOL 562 23.901 17.691 14.741 1.00 0.00 H +ATOM 1689 HW2 SOL 562 25.101 18.781 14.651 1.00 0.00 H +ATOM 1690 OW SOL 563 24.681 9.641 1.230 1.00 0.00 O +ATOM 1691 HW1 SOL 563 24.751 10.481 0.690 1.00 0.00 H +ATOM 1692 HW2 SOL 563 25.141 9.771 2.110 1.00 0.00 H +ATOM 1693 OW SOL 564 19.841 6.430 5.630 1.00 0.00 O +ATOM 1694 HW1 SOL 564 19.391 5.550 5.800 1.00 0.00 H +ATOM 1695 HW2 SOL 564 19.831 6.970 6.470 1.00 0.00 H +ATOM 1696 OW SOL 565 18.891 15.961 1.170 1.00 0.00 O +ATOM 1697 HW1 SOL 565 18.701 15.001 1.380 1.00 0.00 H +ATOM 1698 HW2 SOL 565 18.561 16.541 1.920 1.00 0.00 H +ATOM 1699 OW SOL 566 19.751 7.370 15.971 1.00 0.00 O +ATOM 1700 HW1 SOL 566 20.631 7.240 16.421 1.00 0.00 H +ATOM 1701 HW2 SOL 566 19.621 8.340 15.751 1.00 0.00 H +ATOM 1702 OW SOL 567 24.751 13.651 7.260 1.00 0.00 O +ATOM 1703 HW1 SOL 567 24.261 12.781 7.350 1.00 0.00 H +ATOM 1704 HW2 SOL 567 24.521 14.081 6.390 1.00 0.00 H +ATOM 1705 OW SOL 568 26.711 0.040 5.020 1.00 0.00 O +ATOM 1706 HW1 SOL 568 27.111 0.950 4.930 1.00 0.00 H +ATOM 1707 HW2 SOL 568 25.711 0.120 5.080 1.00 0.00 H +ATOM 1708 OW SOL 569 20.591 9.761 12.641 1.00 0.00 O +ATOM 1709 HW1 SOL 569 21.481 9.311 12.501 1.00 0.00 H +ATOM 1710 HW2 SOL 569 19.861 9.111 12.451 1.00 0.00 H +ATOM 1711 OW SOL 570 21.791 2.510 18.011 1.00 0.00 O +ATOM 1712 HW1 SOL 570 22.501 3.220 18.071 1.00 0.00 H +ATOM 1713 HW2 SOL 570 20.911 2.900 18.291 1.00 0.00 H +ATOM 1714 OW SOL 571 2.051 14.171 9.531 1.00 0.00 O +ATOM 1715 HW1 SOL 571 1.461 14.231 10.331 1.00 0.00 H +ATOM 1716 HW2 SOL 571 1.901 13.291 9.071 1.00 0.00 H +ATOM 1717 OW SOL 572 24.601 7.290 2.700 1.00 0.00 O +ATOM 1718 HW1 SOL 572 24.841 7.980 2.020 1.00 0.00 H +ATOM 1719 HW2 SOL 572 23.821 7.620 3.240 1.00 0.00 H +ATOM 1720 OW SOL 573 0.201 3.450 9.441 1.00 0.00 O +ATOM 1721 HW1 SOL 573 -0.659 2.950 9.311 1.00 0.00 H +ATOM 1722 HW2 SOL 573 0.821 2.910 10.001 1.00 0.00 H +ATOM 1723 OW SOL 574 26.691 6.050 14.651 1.00 0.00 O +ATOM 1724 HW1 SOL 574 26.221 6.020 15.541 1.00 0.00 H +ATOM 1725 HW2 SOL 574 26.181 5.500 13.991 1.00 0.00 H +ATOM 1726 OW SOL 575 28.351 8.900 15.721 1.00 0.00 O +ATOM 1727 HW1 SOL 575 28.811 8.060 15.431 1.00 0.00 H +ATOM 1728 HW2 SOL 575 27.791 9.240 14.971 1.00 0.00 H +ATOM 1729 OW SOL 576 28.531 4.100 12.421 1.00 0.00 O +ATOM 1730 HW1 SOL 576 27.761 4.440 12.961 1.00 0.00 H +ATOM 1731 HW2 SOL 576 28.191 3.590 11.631 1.00 0.00 H +ATOM 1732 OW SOL 577 29.031 7.010 4.290 1.00 0.00 O +ATOM 1733 HW1 SOL 577 29.291 6.970 5.250 1.00 0.00 H +ATOM 1734 HW2 SOL 577 28.181 6.500 4.150 1.00 0.00 H +ATOM 1735 OW SOL 578 19.381 8.110 7.890 1.00 0.00 O +ATOM 1736 HW1 SOL 578 20.371 7.990 7.980 1.00 0.00 H +ATOM 1737 HW2 SOL 578 19.141 9.060 8.100 1.00 0.00 H +ATOM 1738 OW SOL 579 19.921 18.211 15.711 1.00 0.00 O +ATOM 1739 HW1 SOL 579 19.821 18.061 16.701 1.00 0.00 H +ATOM 1740 HW2 SOL 579 19.061 18.571 15.351 1.00 0.00 H +ATOM 1741 OW SOL 580 27.271 3.480 1.950 1.00 0.00 O +ATOM 1742 HW1 SOL 580 27.861 4.110 1.460 1.00 0.00 H +ATOM 1743 HW2 SOL 580 27.461 2.540 1.660 1.00 0.00 H +ATOM 1744 OW SOL 581 24.121 1.960 8.850 1.00 0.00 O +ATOM 1745 HW1 SOL 581 24.071 1.910 9.850 1.00 0.00 H +ATOM 1746 HW2 SOL 581 24.141 2.920 8.560 1.00 0.00 H +ATOM 1747 OW SOL 582 28.701 14.561 4.770 1.00 0.00 O +ATOM 1748 HW1 SOL 582 28.241 15.281 4.250 1.00 0.00 H +ATOM 1749 HW2 SOL 582 28.661 14.761 5.750 1.00 0.00 H +ATOM 1750 OW SOL 583 22.131 18.011 8.530 1.00 0.00 O +ATOM 1751 HW1 SOL 583 22.631 17.151 8.590 1.00 0.00 H +ATOM 1752 HW2 SOL 583 22.781 18.781 8.500 1.00 0.00 H +ATOM 1753 OW SOL 584 30.891 15.501 15.061 1.00 0.00 O +ATOM 1754 HW1 SOL 584 30.951 14.731 15.701 1.00 0.00 H +ATOM 1755 HW2 SOL 584 30.371 15.241 14.261 1.00 0.00 H +ATOM 1756 OW SOL 585 21.831 9.431 2.420 1.00 0.00 O +ATOM 1757 HW1 SOL 585 22.651 9.821 2.000 1.00 0.00 H +ATOM 1758 HW2 SOL 585 21.561 8.611 1.930 1.00 0.00 H +ATOM 1759 OW SOL 586 23.231 12.661 17.271 1.00 0.00 O +ATOM 1760 HW1 SOL 586 22.731 12.671 16.411 1.00 0.00 H +ATOM 1761 HW2 SOL 586 22.601 12.481 18.031 1.00 0.00 H +ATOM 1762 OW SOL 587 29.731 17.761 2.370 1.00 0.00 O +ATOM 1763 HW1 SOL 587 29.131 17.141 2.870 1.00 0.00 H +ATOM 1764 HW2 SOL 587 30.041 17.321 1.520 1.00 0.00 H +ATOM 1765 OW SOL 588 20.641 2.850 14.981 1.00 0.00 O +ATOM 1766 HW1 SOL 588 19.841 3.450 14.851 1.00 0.00 H +ATOM 1767 HW2 SOL 588 20.541 2.360 15.841 1.00 0.00 H +ATOM 1768 OW SOL 589 23.261 17.431 3.230 1.00 0.00 O +ATOM 1769 HW1 SOL 589 23.591 17.821 4.090 1.00 0.00 H +ATOM 1770 HW2 SOL 589 24.021 17.361 2.580 1.00 0.00 H +ATOM 1771 OW SOL 590 21.111 17.851 12.411 1.00 0.00 O +ATOM 1772 HW1 SOL 590 21.681 17.201 12.911 1.00 0.00 H +ATOM 1773 HW2 SOL 590 20.951 17.521 11.481 1.00 0.00 H +ATOM 1774 OW SOL 591 28.021 16.981 9.040 1.00 0.00 O +ATOM 1775 HW1 SOL 591 28.821 16.411 9.250 1.00 0.00 H +ATOM 1776 HW2 SOL 591 27.531 16.581 8.270 1.00 0.00 H +ATOM 1777 OW SOL 592 22.441 7.000 4.800 1.00 0.00 O +ATOM 1778 HW1 SOL 592 22.891 6.100 4.770 1.00 0.00 H +ATOM 1779 HW2 SOL 592 21.501 6.890 5.130 1.00 0.00 H +ATOM 1780 OW SOL 593 24.761 1.220 1.170 1.00 0.00 O +ATOM 1781 HW1 SOL 593 25.741 1.000 1.240 1.00 0.00 H +ATOM 1782 HW2 SOL 593 24.451 1.050 0.240 1.00 0.00 H +ATOM 1783 OW SOL 594 26.431 2.640 17.491 1.00 0.00 O +ATOM 1784 HW1 SOL 594 27.101 2.030 17.921 1.00 0.00 H +ATOM 1785 HW2 SOL 594 25.701 2.830 18.141 1.00 0.00 H +ATOM 1786 OW SOL 595 27.501 15.141 11.951 1.00 0.00 O +ATOM 1787 HW1 SOL 595 27.271 14.891 11.011 1.00 0.00 H +ATOM 1788 HW2 SOL 595 28.111 14.451 12.341 1.00 0.00 H +ATOM 1789 OW SOL 596 26.651 14.021 9.240 1.00 0.00 O +ATOM 1790 HW1 SOL 596 27.551 14.161 8.820 1.00 0.00 H +ATOM 1791 HW2 SOL 596 25.941 14.041 8.530 1.00 0.00 H +ATOM 1792 OW SOL 597 27.841 5.030 8.990 1.00 0.00 O +ATOM 1793 HW1 SOL 597 27.591 4.940 8.030 1.00 0.00 H +ATOM 1794 HW2 SOL 597 28.321 4.210 9.300 1.00 0.00 H +ATOM 1795 OW SOL 598 24.011 0.640 5.120 1.00 0.00 O +ATOM 1796 HW1 SOL 598 23.201 0.650 5.700 1.00 0.00 H +ATOM 1797 HW2 SOL 598 24.041 1.470 4.570 1.00 0.00 H +ATOM 1798 OW SOL 599 1.731 11.881 0.410 1.00 0.00 O +ATOM 1799 HW1 SOL 599 2.051 11.121 0.980 1.00 0.00 H +ATOM 1800 HW2 SOL 599 0.811 12.151 0.710 1.00 0.00 H +ATOM 1801 OW SOL 600 21.591 0.350 1.710 1.00 0.00 O +ATOM 1802 HW1 SOL 600 22.081 1.190 1.500 1.00 0.00 H +ATOM 1803 HW2 SOL 600 22.211 -0.300 2.160 1.00 0.00 H +ATOM 1804 OW SOL 601 27.971 2.360 4.800 1.00 0.00 O +ATOM 1805 HW1 SOL 601 27.491 2.770 4.020 1.00 0.00 H +ATOM 1806 HW2 SOL 601 28.961 2.340 4.610 1.00 0.00 H +ATOM 1807 OW SOL 602 29.381 6.830 14.641 1.00 0.00 O +ATOM 1808 HW1 SOL 602 28.581 6.220 14.671 1.00 0.00 H +ATOM 1809 HW2 SOL 602 30.191 6.300 14.401 1.00 0.00 H +ATOM 1810 OW SOL 603 30.891 15.701 7.930 1.00 0.00 O +ATOM 1811 HW1 SOL 603 31.101 16.441 7.280 1.00 0.00 H +ATOM 1812 HW2 SOL 603 31.571 15.701 8.660 1.00 0.00 H +ATOM 1813 OW SOL 604 23.211 11.521 7.410 1.00 0.00 O +ATOM 1814 HW1 SOL 604 22.501 11.251 8.060 1.00 0.00 H +ATOM 1815 HW2 SOL 604 22.951 11.241 6.480 1.00 0.00 H +ATOM 1816 OW SOL 605 0.101 17.971 5.910 1.00 0.00 O +ATOM 1817 HW1 SOL 605 0.541 18.611 5.270 1.00 0.00 H +ATOM 1818 HW2 SOL 605 -0.399 18.491 6.610 1.00 0.00 H +ATOM 1819 OW SOL 606 28.941 5.490 0.160 1.00 0.00 O +ATOM 1820 HW1 SOL 606 28.531 6.310 -0.230 1.00 0.00 H +ATOM 1821 HW2 SOL 606 29.581 5.750 0.890 1.00 0.00 H +ATOM 1822 OW SOL 607 19.401 5.560 13.861 1.00 0.00 O +ATOM 1823 HW1 SOL 607 20.321 5.550 13.451 1.00 0.00 H +ATOM 1824 HW2 SOL 607 19.341 6.300 14.531 1.00 0.00 H +ATOM 1825 OW SOL 608 24.231 2.220 11.471 1.00 0.00 O +ATOM 1826 HW1 SOL 608 24.611 1.380 11.841 1.00 0.00 H +ATOM 1827 HW2 SOL 608 23.351 2.410 11.911 1.00 0.00 H +ATOM 1828 OW SOL 609 27.281 4.540 6.420 1.00 0.00 O +ATOM 1829 HW1 SOL 609 26.961 5.260 5.800 1.00 0.00 H +ATOM 1830 HW2 SOL 609 27.521 3.730 5.890 1.00 0.00 H +ATOM 1831 OW SOL 610 28.791 0.390 7.530 1.00 0.00 O +ATOM 1832 HW1 SOL 610 28.071 0.440 6.840 1.00 0.00 H +ATOM 1833 HW2 SOL 610 28.551 -0.300 8.220 1.00 0.00 H +ATOM 1834 OW SOL 611 23.501 13.851 1.740 1.00 0.00 O +ATOM 1835 HW1 SOL 611 22.631 13.701 2.210 1.00 0.00 H +ATOM 1836 HW2 SOL 611 23.331 14.111 0.790 1.00 0.00 H +ATOM 1837 OW SOL 612 23.891 2.560 3.280 1.00 0.00 O +ATOM 1838 HW1 SOL 612 24.161 1.970 2.530 1.00 0.00 H +ATOM 1839 HW2 SOL 612 23.891 3.510 2.970 1.00 0.00 H +ATOM 1840 OW SOL 613 29.261 13.471 13.401 1.00 0.00 O +ATOM 1841 HW1 SOL 613 28.461 13.241 13.951 1.00 0.00 H +ATOM 1842 HW2 SOL 613 30.091 13.211 13.891 1.00 0.00 H +ATOM 1843 OW SOL 614 29.731 11.951 11.001 1.00 0.00 O +ATOM 1844 HW1 SOL 614 29.331 12.391 11.811 1.00 0.00 H +ATOM 1845 HW2 SOL 614 29.321 12.321 10.171 1.00 0.00 H +ATOM 1846 OW SOL 615 27.771 0.890 14.021 1.00 0.00 O +ATOM 1847 HW1 SOL 615 28.021 0.690 13.071 1.00 0.00 H +ATOM 1848 HW2 SOL 615 28.491 1.450 14.441 1.00 0.00 H +ATOM 1849 OW SOL 616 28.421 11.161 17.191 1.00 0.00 O +ATOM 1850 HW1 SOL 616 27.431 11.221 17.291 1.00 0.00 H +ATOM 1851 HW2 SOL 616 28.651 10.361 16.631 1.00 0.00 H +ATOM 1852 OW SOL 617 25.671 10.501 3.680 1.00 0.00 O +ATOM 1853 HW1 SOL 617 25.531 10.571 4.670 1.00 0.00 H +ATOM 1854 HW2 SOL 617 26.511 9.991 3.500 1.00 0.00 H +ATOM 1855 OW SOL 618 22.721 8.130 12.511 1.00 0.00 O +ATOM 1856 HW1 SOL 618 23.581 8.250 13.011 1.00 0.00 H +ATOM 1857 HW2 SOL 618 22.301 7.260 12.781 1.00 0.00 H +ATOM 1858 OW SOL 619 0.131 3.860 12.621 1.00 0.00 O +ATOM 1859 HW1 SOL 619 0.341 4.600 13.261 1.00 0.00 H +ATOM 1860 HW2 SOL 619 -0.759 4.030 12.191 1.00 0.00 H +ATOM 1861 OW SOL 620 19.261 15.641 13.311 1.00 0.00 O +ATOM 1862 HW1 SOL 620 18.801 16.461 12.971 1.00 0.00 H +ATOM 1863 HW2 SOL 620 20.241 15.831 13.401 1.00 0.00 H +ATOM 1864 OW SOL 621 22.291 11.001 5.010 1.00 0.00 O +ATOM 1865 HW1 SOL 621 22.221 11.831 4.450 1.00 0.00 H +ATOM 1866 HW2 SOL 621 22.331 10.201 4.410 1.00 0.00 H +ATOM 1867 OW SOL 622 24.281 5.370 8.650 1.00 0.00 O +ATOM 1868 HW1 SOL 622 24.401 6.030 7.910 1.00 0.00 H +ATOM 1869 HW2 SOL 622 24.741 5.710 9.480 1.00 0.00 H +ATOM 1870 OW SOL 623 31.141 13.481 3.880 1.00 0.00 O +ATOM 1871 HW1 SOL 623 31.641 14.251 4.280 1.00 0.00 H +ATOM 1872 HW2 SOL 623 30.191 13.501 4.200 1.00 0.00 H +ATOM 1873 OW SOL 624 22.161 15.101 13.291 1.00 0.00 O +ATOM 1874 HW1 SOL 624 21.951 14.661 12.421 1.00 0.00 H +ATOM 1875 HW2 SOL 624 23.131 15.361 13.321 1.00 0.00 H +ATOM 1876 OW SOL 625 22.641 7.510 15.981 1.00 0.00 O +ATOM 1877 HW1 SOL 625 23.321 8.060 15.511 1.00 0.00 H +ATOM 1878 HW2 SOL 625 23.041 6.630 16.251 1.00 0.00 H +ATOM 1879 OW SOL 626 28.751 1.050 17.701 1.00 0.00 O +ATOM 1880 HW1 SOL 626 28.811 1.900 17.181 1.00 0.00 H +ATOM 1881 HW2 SOL 626 29.071 0.290 17.131 1.00 0.00 H +ATOM 1882 OW SOL 627 23.661 0.500 17.401 1.00 0.00 O +ATOM 1883 HW1 SOL 627 23.241 -0.070 16.701 1.00 0.00 H +ATOM 1884 HW2 SOL 627 23.001 1.190 17.721 1.00 0.00 H +ATOM 1885 OW SOL 628 24.351 8.700 10.291 1.00 0.00 O +ATOM 1886 HW1 SOL 628 24.791 9.590 10.201 1.00 0.00 H +ATOM 1887 HW2 SOL 628 23.721 8.700 11.061 1.00 0.00 H +ATOM 1888 OW SOL 629 0.991 8.620 10.451 1.00 0.00 O +ATOM 1889 HW1 SOL 629 0.241 8.620 9.791 1.00 0.00 H +ATOM 1890 HW2 SOL 629 1.361 7.700 10.541 1.00 0.00 H +ATOM 1891 OW SOL 630 30.711 5.250 2.750 1.00 0.00 O +ATOM 1892 HW1 SOL 630 30.841 4.410 3.290 1.00 0.00 H +ATOM 1893 HW2 SOL 630 30.421 5.990 3.350 1.00 0.00 H +ATOM 1894 OW SOL 631 21.691 2.130 12.311 1.00 0.00 O +ATOM 1895 HW1 SOL 631 21.461 2.500 13.211 1.00 0.00 H +ATOM 1896 HW2 SOL 631 21.391 1.180 12.251 1.00 0.00 H +ATOM 1897 OW SOL 632 18.991 13.101 12.821 1.00 0.00 O +ATOM 1898 HW1 SOL 632 19.521 12.611 13.501 1.00 0.00 H +ATOM 1899 HW2 SOL 632 19.211 14.081 12.871 1.00 0.00 H +ATOM 1900 OW SOL 633 25.941 6.340 10.641 1.00 0.00 O +ATOM 1901 HW1 SOL 633 26.531 6.080 9.881 1.00 0.00 H +ATOM 1902 HW2 SOL 633 25.661 7.300 10.531 1.00 0.00 H +ATOM 1903 OW SOL 634 21.691 0.630 6.180 1.00 0.00 O +ATOM 1904 HW1 SOL 634 21.581 1.570 6.510 1.00 0.00 H +ATOM 1905 HW2 SOL 634 21.641 0.000 6.950 1.00 0.00 H +ATOM 1906 OW SOL 635 28.851 7.660 9.661 1.00 0.00 O +ATOM 1907 HW1 SOL 635 29.001 7.870 10.621 1.00 0.00 H +ATOM 1908 HW2 SOL 635 28.551 6.710 9.571 1.00 0.00 H +ATOM 1909 OW SOL 636 28.421 15.731 17.001 1.00 0.00 O +ATOM 1910 HW1 SOL 636 28.221 16.171 16.121 1.00 0.00 H +ATOM 1911 HW2 SOL 636 28.811 14.821 16.841 1.00 0.00 H +ATOM 1912 OW SOL 637 22.121 8.980 18.041 1.00 0.00 O +ATOM 1913 HW1 SOL 637 22.881 9.420 18.521 1.00 0.00 H +ATOM 1914 HW2 SOL 637 22.471 8.510 17.221 1.00 0.00 H +ATOM 1915 OW SOL 638 29.301 13.331 8.490 1.00 0.00 O +ATOM 1916 HW1 SOL 638 29.371 12.491 7.940 1.00 0.00 H +ATOM 1917 HW2 SOL 638 29.921 14.021 8.130 1.00 0.00 H +ATOM 1918 OW SOL 639 21.811 8.100 9.491 1.00 0.00 O +ATOM 1919 HW1 SOL 639 22.741 8.460 9.541 1.00 0.00 H +ATOM 1920 HW2 SOL 639 21.751 7.250 10.011 1.00 0.00 H +ATOM 1921 OW SOL 640 22.011 5.090 10.061 1.00 0.00 O +ATOM 1922 HW1 SOL 640 21.491 4.260 9.891 1.00 0.00 H +ATOM 1923 HW2 SOL 640 22.781 5.140 9.421 1.00 0.00 H +ATOM 1924 OW SOL 641 30.001 3.800 16.781 1.00 0.00 O +ATOM 1925 HW1 SOL 641 29.551 4.430 17.421 1.00 0.00 H +ATOM 1926 HW2 SOL 641 30.931 4.110 16.611 1.00 0.00 H +ATOM 1927 OW SOL 642 30.221 2.070 14.771 1.00 0.00 O +ATOM 1928 HW1 SOL 642 30.221 2.710 15.541 1.00 0.00 H +ATOM 1929 HW2 SOL 642 30.501 2.550 13.941 1.00 0.00 H +ATOM 1930 OW SOL 643 18.701 13.261 2.000 1.00 0.00 O +ATOM 1931 HW1 SOL 643 17.771 13.471 1.690 1.00 0.00 H +ATOM 1932 HW2 SOL 643 18.801 12.271 2.130 1.00 0.00 H +ATOM 1933 OW SOL 644 19.501 18.011 9.270 1.00 0.00 O +ATOM 1934 HW1 SOL 644 19.081 17.151 9.000 1.00 0.00 H +ATOM 1935 HW2 SOL 644 20.441 18.041 8.930 1.00 0.00 H +ATOM 1936 OW SOL 645 23.661 15.681 9.100 1.00 0.00 O +ATOM 1937 HW1 SOL 645 24.321 16.421 9.190 1.00 0.00 H +ATOM 1938 HW2 SOL 645 24.101 14.891 8.680 1.00 0.00 H +ATOM 1939 OW SOL 646 28.641 7.960 12.381 1.00 0.00 O +ATOM 1940 HW1 SOL 646 29.051 7.640 13.241 1.00 0.00 H +ATOM 1941 HW2 SOL 646 27.681 7.690 12.351 1.00 0.00 H +ATOM 1942 OW SOL 647 19.021 5.440 11.141 1.00 0.00 O +ATOM 1943 HW1 SOL 647 19.871 5.110 10.731 1.00 0.00 H +ATOM 1944 HW2 SOL 647 19.151 5.590 12.121 1.00 0.00 H +ATOM 1945 OW SOL 648 20.511 5.200 17.221 1.00 0.00 O +ATOM 1946 HW1 SOL 648 21.101 4.800 16.521 1.00 0.00 H +ATOM 1947 HW2 SOL 648 19.931 5.910 16.811 1.00 0.00 H +ATOM 1948 OW SOL 649 26.771 5.720 3.250 1.00 0.00 O +ATOM 1949 HW1 SOL 649 26.841 4.830 2.790 1.00 0.00 H +ATOM 1950 HW2 SOL 649 25.831 6.060 3.170 1.00 0.00 H +ATOM 1951 OW SOL 650 21.141 15.641 17.441 1.00 0.00 O +ATOM 1952 HW1 SOL 650 20.841 16.211 18.201 1.00 0.00 H +ATOM 1953 HW2 SOL 650 21.071 14.671 17.701 1.00 0.00 H +ATOM 1954 OW SOL 651 25.331 4.640 12.691 1.00 0.00 O +ATOM 1955 HW1 SOL 651 24.991 3.750 12.391 1.00 0.00 H +ATOM 1956 HW2 SOL 651 25.591 5.180 11.891 1.00 0.00 H +ATOM 1957 OW SOL 652 27.921 16.781 14.651 1.00 0.00 O +ATOM 1958 HW1 SOL 652 27.681 16.601 13.701 1.00 0.00 H +ATOM 1959 HW2 SOL 652 28.221 17.721 14.751 1.00 0.00 H +ATOM 1960 OW SOL 653 23.351 5.000 1.910 1.00 0.00 O +ATOM 1961 HW1 SOL 653 23.961 5.800 1.950 1.00 0.00 H +ATOM 1962 HW2 SOL 653 22.401 5.310 1.980 1.00 0.00 H +ATOM 1963 OW SOL 654 20.211 11.371 14.661 1.00 0.00 O +ATOM 1964 HW1 SOL 654 20.431 10.761 15.421 1.00 0.00 H +ATOM 1965 HW2 SOL 654 20.311 10.881 13.801 1.00 0.00 H +ATOM 1966 OW SOL 655 0.861 10.591 12.341 1.00 0.00 O +ATOM 1967 HW1 SOL 655 1.101 9.961 11.601 1.00 0.00 H +ATOM 1968 HW2 SOL 655 -0.039 10.991 12.161 1.00 0.00 H +ATOM 1969 OW SOL 656 31.141 17.311 11.281 1.00 0.00 O +ATOM 1970 HW1 SOL 656 31.981 17.361 10.741 1.00 0.00 H +ATOM 1971 HW2 SOL 656 30.911 16.351 11.461 1.00 0.00 H +ATOM 1972 OW SOL 657 19.451 12.581 10.221 1.00 0.00 O +ATOM 1973 HW1 SOL 657 19.401 12.571 11.221 1.00 0.00 H +ATOM 1974 HW2 SOL 657 18.621 12.171 9.841 1.00 0.00 H +ATOM 1975 OW SOL 658 25.501 16.621 17.161 1.00 0.00 O +ATOM 1976 HW1 SOL 658 24.941 17.431 17.251 1.00 0.00 H +ATOM 1977 HW2 SOL 658 26.021 16.661 16.301 1.00 0.00 H +ATOM 1978 OW SOL 659 27.651 0.860 1.330 1.00 0.00 O +ATOM 1979 HW1 SOL 659 28.161 0.870 0.470 1.00 0.00 H +ATOM 1980 HW2 SOL 659 28.211 0.440 2.040 1.00 0.00 H +ATOM 1981 OW SOL 660 1.271 15.731 4.770 1.00 0.00 O +ATOM 1982 HW1 SOL 660 1.941 15.851 4.030 1.00 0.00 H +ATOM 1983 HW2 SOL 660 0.871 16.621 5.000 1.00 0.00 H +ATOM 1984 OW SOL 661 19.921 17.941 18.511 1.00 0.00 O +ATOM 1985 HW1 SOL 661 19.511 17.201 19.041 1.00 0.00 H +ATOM 1986 HW2 SOL 661 20.561 18.451 19.091 1.00 0.00 H +ATOM 1987 OW SOL 662 0.191 9.270 6.720 1.00 0.00 O +ATOM 1988 HW1 SOL 662 0.791 8.460 6.740 1.00 0.00 H +ATOM 1989 HW2 SOL 662 0.591 9.960 6.120 1.00 0.00 H +ATOM 1990 OW SOL 663 26.921 12.731 14.221 1.00 0.00 O +ATOM 1991 HW1 SOL 663 26.871 13.061 15.171 1.00 0.00 H +ATOM 1992 HW2 SOL 663 26.061 12.921 13.761 1.00 0.00 H +ATOM 1993 OW SOL 664 25.341 16.161 1.540 1.00 0.00 O +ATOM 1994 HW1 SOL 664 25.431 16.261 0.550 1.00 0.00 H +ATOM 1995 HW2 SOL 664 24.941 15.271 1.750 1.00 0.00 H +ATOM 1996 OW SOL 665 21.251 3.260 7.200 1.00 0.00 O +ATOM 1997 HW1 SOL 665 20.461 3.770 6.860 1.00 0.00 H +ATOM 1998 HW2 SOL 665 21.161 3.110 8.180 1.00 0.00 H +ATOM 1999 OW SOL 666 30.561 16.121 0.310 1.00 0.00 O +ATOM 2000 HW1 SOL 666 30.621 15.191 0.680 1.00 0.00 H +ATOM 2001 HW2 SOL 666 29.971 16.121 -0.490 1.00 0.00 H +ATOM 2002 OW SOL 667 26.841 10.021 13.721 1.00 0.00 O +ATOM 2003 HW1 SOL 667 27.241 10.011 12.801 1.00 0.00 H +ATOM 2004 HW2 SOL 667 26.941 10.941 14.121 1.00 0.00 H +ATOM 2005 OW SOL 668 27.781 9.100 2.910 1.00 0.00 O +ATOM 2006 HW1 SOL 668 28.411 9.480 2.230 1.00 0.00 H +ATOM 2007 HW2 SOL 668 28.181 8.270 3.300 1.00 0.00 H +ATOM 2008 OW SOL 669 22.341 12.881 14.901 1.00 0.00 O +ATOM 2009 HW1 SOL 669 22.211 13.811 14.561 1.00 0.00 H +ATOM 2010 HW2 SOL 669 21.501 12.361 14.771 1.00 0.00 H +ATOM 2011 OW SOL 670 29.011 10.981 6.960 1.00 0.00 O +ATOM 2012 HW1 SOL 670 28.311 10.511 7.500 1.00 0.00 H +ATOM 2013 HW2 SOL 670 29.601 10.301 6.530 1.00 0.00 H +ATOM 2014 OW SOL 671 28.761 2.360 9.711 1.00 0.00 O +ATOM 2015 HW1 SOL 671 28.681 2.000 8.781 1.00 0.00 H +ATOM 2016 HW2 SOL 671 28.741 1.600 10.361 1.00 0.00 H +ATOM 2017 OW SOL 672 24.521 14.871 4.910 1.00 0.00 O +ATOM 2018 HW1 SOL 672 24.941 14.291 4.210 1.00 0.00 H +ATOM 2019 HW2 SOL 672 24.081 15.661 4.470 1.00 0.00 H +ATOM 2020 OW SOL 673 21.171 13.481 2.900 1.00 0.00 O +ATOM 2021 HW1 SOL 673 20.211 13.491 2.630 1.00 0.00 H +ATOM 2022 HW2 SOL 673 21.291 14.011 3.740 1.00 0.00 H +ATOM 2023 OW SOL 674 19.671 10.131 17.261 1.00 0.00 O +ATOM 2024 HW1 SOL 674 18.901 9.801 17.801 1.00 0.00 H +ATOM 2025 HW2 SOL 674 20.521 9.831 17.681 1.00 0.00 H +ATOM 2026 OW SOL 675 25.341 2.030 14.891 1.00 0.00 O +ATOM 2027 HW1 SOL 675 26.241 1.870 14.491 1.00 0.00 H +ATOM 2028 HW2 SOL 675 25.421 2.080 15.881 1.00 0.00 H +ATOM 2029 OW SOL 676 19.341 1.660 3.180 1.00 0.00 O +ATOM 2030 HW1 SOL 676 19.171 2.490 2.640 1.00 0.00 H +ATOM 2031 HW2 SOL 676 20.241 1.290 2.960 1.00 0.00 H +ATOM 2032 OW SOL 677 30.451 13.351 1.190 1.00 0.00 O +ATOM 2033 HW1 SOL 677 29.461 13.241 1.210 1.00 0.00 H +ATOM 2034 HW2 SOL 677 30.791 13.501 2.120 1.00 0.00 H +ATOM 2035 OW SOL 678 24.751 8.420 14.311 1.00 0.00 O +ATOM 2036 HW1 SOL 678 25.311 9.230 14.141 1.00 0.00 H +ATOM 2037 HW2 SOL 678 25.341 7.620 14.341 1.00 0.00 H +ATOM 2038 OW SOL 679 25.781 5.650 17.081 1.00 0.00 O +ATOM 2039 HW1 SOL 679 25.971 6.300 17.821 1.00 0.00 H +ATOM 2040 HW2 SOL 679 26.381 4.850 17.171 1.00 0.00 H +ATOM 2041 OW SOL 680 22.521 17.411 15.601 1.00 0.00 O +ATOM 2042 HW1 SOL 680 21.611 17.821 15.581 1.00 0.00 H +ATOM 2043 HW2 SOL 680 22.451 16.471 15.921 1.00 0.00 H +ATOM 2044 OW SOL 681 30.871 3.250 4.490 1.00 0.00 O +ATOM 2045 HW1 SOL 681 31.521 2.510 4.380 1.00 0.00 H +ATOM 2046 HW2 SOL 681 31.071 3.750 5.330 1.00 0.00 H +ATOM 2047 OW SOL 682 24.561 7.450 6.520 1.00 0.00 O +ATOM 2048 HW1 SOL 682 25.061 8.300 6.330 1.00 0.00 H +ATOM 2049 HW2 SOL 682 23.681 7.470 6.040 1.00 0.00 H +ATOM 2050 OW SOL 683 27.211 13.741 0.160 1.00 0.00 O +ATOM 2051 HW1 SOL 683 26.751 13.891 1.040 1.00 0.00 H +ATOM 2052 HW2 SOL 683 27.651 14.591 -0.140 1.00 0.00 H +ATOM 2053 OW SOL 684 25.231 17.901 9.531 1.00 0.00 O +ATOM 2054 HW1 SOL 684 24.771 18.781 9.401 1.00 0.00 H +ATOM 2055 HW2 SOL 684 26.221 18.021 9.461 1.00 0.00 H +ATOM 2056 OW SOL 685 1.471 18.511 17.201 1.00 0.00 O +ATOM 2057 HW1 SOL 685 0.511 18.401 16.931 1.00 0.00 H +ATOM 2058 HW2 SOL 685 2.031 17.841 16.721 1.00 0.00 H +ATOM 2059 OW SOL 686 27.211 9.561 8.610 1.00 0.00 O +ATOM 2060 HW1 SOL 686 27.751 8.871 9.090 1.00 0.00 H +ATOM 2061 HW2 SOL 686 26.891 10.251 9.270 1.00 0.00 H +ATOM 2062 OW SOL 687 29.451 9.841 0.870 1.00 0.00 O +ATOM 2063 HW1 SOL 687 29.221 10.371 0.050 1.00 0.00 H +ATOM 2064 HW2 SOL 687 30.261 9.281 0.680 1.00 0.00 H +ATOM 2065 OW SOL 688 20.831 13.141 18.441 1.00 0.00 O +ATOM 2066 HW1 SOL 688 20.181 12.411 18.231 1.00 0.00 H +ATOM 2067 HW2 SOL 688 20.871 13.281 19.421 1.00 0.00 H +ATOM 2068 OW SOL 689 19.411 12.401 6.530 1.00 0.00 O +ATOM 2069 HW1 SOL 689 19.401 11.931 7.410 1.00 0.00 H +ATOM 2070 HW2 SOL 689 20.231 12.121 6.020 1.00 0.00 H +ATOM 2071 OW SOL 690 25.341 13.911 16.241 1.00 0.00 O +ATOM 2072 HW1 SOL 690 24.561 13.411 16.621 1.00 0.00 H +ATOM 2073 HW2 SOL 690 25.311 14.861 16.551 1.00 0.00 H +ATOM 2074 OW SOL 691 22.901 4.240 5.200 1.00 0.00 O +ATOM 2075 HW1 SOL 691 23.201 3.520 4.580 1.00 0.00 H +ATOM 2076 HW2 SOL 691 22.511 3.840 6.030 1.00 0.00 H +ATOM 2077 OW SOL 692 21.791 5.470 12.801 1.00 0.00 O +ATOM 2078 HW1 SOL 692 22.171 4.880 13.521 1.00 0.00 H +ATOM 2079 HW2 SOL 692 22.191 5.210 11.921 1.00 0.00 H +ATOM 2080 OW SOL 693 26.741 15.861 6.870 1.00 0.00 O +ATOM 2081 HW1 SOL 693 27.061 15.961 5.930 1.00 0.00 H +ATOM 2082 HW2 SOL 693 25.951 15.241 6.890 1.00 0.00 H +ATOM 2083 OW SOL 694 1.631 2.140 11.121 1.00 0.00 O +ATOM 2084 HW1 SOL 694 2.151 1.490 11.671 1.00 0.00 H +ATOM 2085 HW2 SOL 694 1.141 2.770 11.731 1.00 0.00 H +ATOM 2086 OW SOL 695 28.631 0.340 11.541 1.00 0.00 O +ATOM 2087 HW1 SOL 695 28.001 -0.380 11.231 1.00 0.00 H +ATOM 2088 HW2 SOL 695 29.561 -0.020 11.541 1.00 0.00 H +ATOM 2089 OW SOL 696 26.321 13.301 3.010 1.00 0.00 O +ATOM 2090 HW1 SOL 696 25.861 12.431 3.180 1.00 0.00 H +ATOM 2091 HW2 SOL 696 27.231 13.271 3.420 1.00 0.00 H +ATOM 2092 OW SOL 697 24.801 15.671 12.841 1.00 0.00 O +ATOM 2093 HW1 SOL 697 24.751 16.491 13.411 1.00 0.00 H +ATOM 2094 HW2 SOL 697 25.691 15.641 12.391 1.00 0.00 H +ATOM 2095 OW SOL 698 0.391 4.530 6.910 1.00 0.00 O +ATOM 2096 HW1 SOL 698 -0.199 5.330 6.950 1.00 0.00 H +ATOM 2097 HW2 SOL 698 0.541 4.180 7.840 1.00 0.00 H +ATOM 2098 OW SOL 699 19.011 10.771 3.000 1.00 0.00 O +ATOM 2099 HW1 SOL 699 20.001 10.661 2.910 1.00 0.00 H +ATOM 2100 HW2 SOL 699 18.611 9.911 3.320 1.00 0.00 H +ATOM 2101 OW SOL 700 27.371 16.461 3.370 1.00 0.00 O +ATOM 2102 HW1 SOL 700 26.601 16.111 2.830 1.00 0.00 H +ATOM 2103 HW2 SOL 700 27.051 17.171 3.990 1.00 0.00 H +ATOM 2104 OW SOL 701 20.921 6.280 19.751 1.00 0.00 O +ATOM 2105 HW1 SOL 701 19.991 6.260 20.121 1.00 0.00 H +ATOM 2106 HW2 SOL 701 20.931 5.890 18.831 1.00 0.00 H +ATOM 2107 OW SOL 702 20.871 2.750 28.581 1.00 0.00 O +ATOM 2108 HW1 SOL 702 21.221 2.580 29.501 1.00 0.00 H +ATOM 2109 HW2 SOL 702 19.991 2.300 28.461 1.00 0.00 H +ATOM 2110 OW SOL 703 18.811 3.680 25.091 1.00 0.00 O +ATOM 2111 HW1 SOL 703 17.991 4.110 25.481 1.00 0.00 H +ATOM 2112 HW2 SOL 703 18.531 2.950 24.461 1.00 0.00 H +ATOM 2113 OW SOL 704 24.311 12.751 30.271 1.00 0.00 O +ATOM 2114 HW1 SOL 704 23.381 12.681 29.901 1.00 0.00 H +ATOM 2115 HW2 SOL 704 24.421 13.641 30.711 1.00 0.00 H +ATOM 2116 OW SOL 705 29.971 7.030 25.791 1.00 0.00 O +ATOM 2117 HW1 SOL 705 30.541 7.810 25.541 1.00 0.00 H +ATOM 2118 HW2 SOL 705 29.371 7.290 26.551 1.00 0.00 H +ATOM 2119 OW SOL 706 26.301 11.441 28.851 1.00 0.00 O +ATOM 2120 HW1 SOL 706 25.521 11.611 29.451 1.00 0.00 H +ATOM 2121 HW2 SOL 706 26.641 12.311 28.491 1.00 0.00 H +ATOM 2122 OW SOL 707 25.471 10.121 25.271 1.00 0.00 O +ATOM 2123 HW1 SOL 707 26.161 9.961 25.971 1.00 0.00 H +ATOM 2124 HW2 SOL 707 24.741 10.691 25.651 1.00 0.00 H +ATOM 2125 OW SOL 708 21.971 14.351 29.231 1.00 0.00 O +ATOM 2126 HW1 SOL 708 21.191 14.041 28.701 1.00 0.00 H +ATOM 2127 HW2 SOL 708 22.551 14.931 28.661 1.00 0.00 H +ATOM 2128 OW SOL 709 1.991 15.051 0.781 1.00 0.00 O +ATOM 2129 HW1 SOL 709 2.231 15.991 1.041 1.00 0.00 H +ATOM 2130 HW2 SOL 709 1.831 14.511 1.601 1.00 0.00 H +ATOM 2131 OW SOL 710 20.931 17.131 23.451 1.00 0.00 O +ATOM 2132 HW1 SOL 710 21.271 17.901 23.991 1.00 0.00 H +ATOM 2133 HW2 SOL 710 21.371 17.131 22.551 1.00 0.00 H +ATOM 2134 OW SOL 711 20.921 14.341 24.001 1.00 0.00 O +ATOM 2135 HW1 SOL 711 20.661 15.301 24.001 1.00 0.00 H +ATOM 2136 HW2 SOL 711 20.211 13.801 24.451 1.00 0.00 H +ATOM 2137 OW SOL 712 21.021 10.911 27.481 1.00 0.00 O +ATOM 2138 HW1 SOL 712 21.161 10.071 28.001 1.00 0.00 H +ATOM 2139 HW2 SOL 712 20.471 11.551 28.031 1.00 0.00 H +ATOM 2140 OW SOL 713 24.681 9.641 19.851 1.00 0.00 O +ATOM 2141 HW1 SOL 713 24.751 10.481 19.311 1.00 0.00 H +ATOM 2142 HW2 SOL 713 25.141 9.771 20.731 1.00 0.00 H +ATOM 2143 OW SOL 714 19.841 6.430 24.251 1.00 0.00 O +ATOM 2144 HW1 SOL 714 19.391 5.550 24.421 1.00 0.00 H +ATOM 2145 HW2 SOL 714 19.831 6.970 25.091 1.00 0.00 H +ATOM 2146 OW SOL 715 18.891 15.961 19.791 1.00 0.00 O +ATOM 2147 HW1 SOL 715 18.701 15.001 20.001 1.00 0.00 H +ATOM 2148 HW2 SOL 715 18.561 16.541 20.541 1.00 0.00 H +ATOM 2149 OW SOL 716 24.751 13.651 25.881 1.00 0.00 O +ATOM 2150 HW1 SOL 716 24.261 12.781 25.971 1.00 0.00 H +ATOM 2151 HW2 SOL 716 24.521 14.081 25.011 1.00 0.00 H +ATOM 2152 OW SOL 717 26.711 0.040 23.641 1.00 0.00 O +ATOM 2153 HW1 SOL 717 27.111 0.950 23.551 1.00 0.00 H +ATOM 2154 HW2 SOL 717 25.711 0.120 23.701 1.00 0.00 H +ATOM 2155 OW SOL 718 20.591 9.761 0.031 1.00 0.00 O +ATOM 2156 HW1 SOL 718 21.481 9.311 -0.109 1.00 0.00 H +ATOM 2157 HW2 SOL 718 19.861 9.111 -0.159 1.00 0.00 H +ATOM 2158 OW SOL 719 2.051 14.171 28.151 1.00 0.00 O +ATOM 2159 HW1 SOL 719 1.461 14.231 28.951 1.00 0.00 H +ATOM 2160 HW2 SOL 719 1.901 13.291 27.691 1.00 0.00 H +ATOM 2161 OW SOL 720 24.601 7.290 21.321 1.00 0.00 O +ATOM 2162 HW1 SOL 720 24.841 7.980 20.641 1.00 0.00 H +ATOM 2163 HW2 SOL 720 23.821 7.620 21.861 1.00 0.00 H +ATOM 2164 OW SOL 721 0.201 3.450 28.061 1.00 0.00 O +ATOM 2165 HW1 SOL 721 -0.659 2.950 27.931 1.00 0.00 H +ATOM 2166 HW2 SOL 721 0.821 2.910 28.621 1.00 0.00 H +ATOM 2167 OW SOL 722 29.031 7.010 22.911 1.00 0.00 O +ATOM 2168 HW1 SOL 722 29.291 6.970 23.871 1.00 0.00 H +ATOM 2169 HW2 SOL 722 28.181 6.500 22.771 1.00 0.00 H +ATOM 2170 OW SOL 723 19.381 8.110 26.511 1.00 0.00 O +ATOM 2171 HW1 SOL 723 20.371 7.990 26.601 1.00 0.00 H +ATOM 2172 HW2 SOL 723 19.141 9.060 26.721 1.00 0.00 H +ATOM 2173 OW SOL 724 27.271 3.480 20.571 1.00 0.00 O +ATOM 2174 HW1 SOL 724 27.861 4.110 20.081 1.00 0.00 H +ATOM 2175 HW2 SOL 724 27.461 2.540 20.281 1.00 0.00 H +ATOM 2176 OW SOL 725 24.121 1.960 27.471 1.00 0.00 O +ATOM 2177 HW1 SOL 725 24.071 1.910 28.471 1.00 0.00 H +ATOM 2178 HW2 SOL 725 24.141 2.920 27.181 1.00 0.00 H +ATOM 2179 OW SOL 726 28.701 14.561 23.391 1.00 0.00 O +ATOM 2180 HW1 SOL 726 28.241 15.281 22.871 1.00 0.00 H +ATOM 2181 HW2 SOL 726 28.661 14.761 24.371 1.00 0.00 H +ATOM 2182 OW SOL 727 22.131 18.011 27.151 1.00 0.00 O +ATOM 2183 HW1 SOL 727 22.631 17.151 27.211 1.00 0.00 H +ATOM 2184 HW2 SOL 727 22.781 18.781 27.121 1.00 0.00 H +ATOM 2185 OW SOL 728 21.831 9.431 21.041 1.00 0.00 O +ATOM 2186 HW1 SOL 728 22.651 9.821 20.621 1.00 0.00 H +ATOM 2187 HW2 SOL 728 21.561 8.611 20.551 1.00 0.00 H +ATOM 2188 OW SOL 729 29.731 17.761 20.991 1.00 0.00 O +ATOM 2189 HW1 SOL 729 29.131 17.141 21.491 1.00 0.00 H +ATOM 2190 HW2 SOL 729 30.041 17.321 20.141 1.00 0.00 H +ATOM 2191 OW SOL 730 23.261 17.431 21.851 1.00 0.00 O +ATOM 2192 HW1 SOL 730 23.591 17.821 22.711 1.00 0.00 H +ATOM 2193 HW2 SOL 730 24.021 17.361 21.201 1.00 0.00 H +ATOM 2194 OW SOL 731 21.111 17.851 31.031 1.00 0.00 O +ATOM 2195 HW1 SOL 731 21.681 17.201 31.531 1.00 0.00 H +ATOM 2196 HW2 SOL 731 20.951 17.521 30.101 1.00 0.00 H +ATOM 2197 OW SOL 732 28.021 16.981 27.661 1.00 0.00 O +ATOM 2198 HW1 SOL 732 28.821 16.411 27.871 1.00 0.00 H +ATOM 2199 HW2 SOL 732 27.531 16.581 26.891 1.00 0.00 H +ATOM 2200 OW SOL 733 22.441 7.000 23.421 1.00 0.00 O +ATOM 2201 HW1 SOL 733 22.891 6.100 23.391 1.00 0.00 H +ATOM 2202 HW2 SOL 733 21.501 6.890 23.751 1.00 0.00 H +ATOM 2203 OW SOL 734 24.761 1.220 19.791 1.00 0.00 O +ATOM 2204 HW1 SOL 734 25.741 1.000 19.861 1.00 0.00 H +ATOM 2205 HW2 SOL 734 24.451 1.050 18.861 1.00 0.00 H +ATOM 2206 OW SOL 735 0.901 5.900 1.721 1.00 0.00 O +ATOM 2207 HW1 SOL 735 1.181 5.470 2.571 1.00 0.00 H +ATOM 2208 HW2 SOL 735 1.151 6.860 1.731 1.00 0.00 H +ATOM 2209 OW SOL 736 26.651 14.021 27.861 1.00 0.00 O +ATOM 2210 HW1 SOL 736 27.551 14.161 27.441 1.00 0.00 H +ATOM 2211 HW2 SOL 736 25.941 14.041 27.151 1.00 0.00 H +ATOM 2212 OW SOL 737 27.841 5.030 27.611 1.00 0.00 O +ATOM 2213 HW1 SOL 737 27.591 4.940 26.651 1.00 0.00 H +ATOM 2214 HW2 SOL 737 28.321 4.210 27.921 1.00 0.00 H +ATOM 2215 OW SOL 738 24.011 0.640 23.741 1.00 0.00 O +ATOM 2216 HW1 SOL 738 23.201 0.650 24.321 1.00 0.00 H +ATOM 2217 HW2 SOL 738 24.041 1.470 23.191 1.00 0.00 H +ATOM 2218 OW SOL 739 1.731 11.881 19.031 1.00 0.00 O +ATOM 2219 HW1 SOL 739 2.051 11.121 19.601 1.00 0.00 H +ATOM 2220 HW2 SOL 739 0.811 12.151 19.331 1.00 0.00 H +ATOM 2221 OW SOL 740 21.591 0.350 20.331 1.00 0.00 O +ATOM 2222 HW1 SOL 740 22.081 1.190 20.121 1.00 0.00 H +ATOM 2223 HW2 SOL 740 22.211 -0.300 20.781 1.00 0.00 H +ATOM 2224 OW SOL 741 27.971 2.360 23.421 1.00 0.00 O +ATOM 2225 HW1 SOL 741 27.491 2.770 22.641 1.00 0.00 H +ATOM 2226 HW2 SOL 741 28.961 2.340 23.231 1.00 0.00 H +ATOM 2227 OW SOL 742 30.891 15.701 26.551 1.00 0.00 O +ATOM 2228 HW1 SOL 742 31.101 16.441 25.901 1.00 0.00 H +ATOM 2229 HW2 SOL 742 31.571 15.701 27.281 1.00 0.00 H +ATOM 2230 OW SOL 743 23.211 11.521 26.031 1.00 0.00 O +ATOM 2231 HW1 SOL 743 22.501 11.251 26.681 1.00 0.00 H +ATOM 2232 HW2 SOL 743 22.951 11.241 25.101 1.00 0.00 H +ATOM 2233 OW SOL 744 0.101 17.971 24.531 1.00 0.00 O +ATOM 2234 HW1 SOL 744 0.541 18.611 23.891 1.00 0.00 H +ATOM 2235 HW2 SOL 744 -0.399 18.491 25.231 1.00 0.00 H +ATOM 2236 OW SOL 745 28.941 5.490 18.781 1.00 0.00 O +ATOM 2237 HW1 SOL 745 28.531 6.310 18.391 1.00 0.00 H +ATOM 2238 HW2 SOL 745 29.581 5.750 19.511 1.00 0.00 H +ATOM 2239 OW SOL 746 27.281 4.540 25.041 1.00 0.00 O +ATOM 2240 HW1 SOL 746 26.961 5.260 24.421 1.00 0.00 H +ATOM 2241 HW2 SOL 746 27.521 3.730 24.511 1.00 0.00 H +ATOM 2242 OW SOL 747 28.791 0.390 26.151 1.00 0.00 O +ATOM 2243 HW1 SOL 747 28.071 0.440 25.461 1.00 0.00 H +ATOM 2244 HW2 SOL 747 28.551 -0.300 26.841 1.00 0.00 H +ATOM 2245 OW SOL 748 23.501 13.851 20.361 1.00 0.00 O +ATOM 2246 HW1 SOL 748 22.631 13.701 20.831 1.00 0.00 H +ATOM 2247 HW2 SOL 748 23.331 14.111 19.411 1.00 0.00 H +ATOM 2248 OW SOL 749 1.291 5.750 19.401 1.00 0.00 O +ATOM 2249 HW1 SOL 749 0.751 5.540 20.211 1.00 0.00 H +ATOM 2250 HW2 SOL 749 2.201 5.340 19.491 1.00 0.00 H +ATOM 2251 OW SOL 750 23.891 2.560 21.901 1.00 0.00 O +ATOM 2252 HW1 SOL 750 24.161 1.970 21.151 1.00 0.00 H +ATOM 2253 HW2 SOL 750 23.891 3.510 21.591 1.00 0.00 H +ATOM 2254 OW SOL 751 29.731 11.951 29.621 1.00 0.00 O +ATOM 2255 HW1 SOL 751 29.331 12.391 30.431 1.00 0.00 H +ATOM 2256 HW2 SOL 751 29.321 12.321 28.791 1.00 0.00 H +ATOM 2257 OW SOL 752 25.671 10.501 22.301 1.00 0.00 O +ATOM 2258 HW1 SOL 752 25.531 10.571 23.291 1.00 0.00 H +ATOM 2259 HW2 SOL 752 26.511 9.991 22.121 1.00 0.00 H +ATOM 2260 OW SOL 753 22.721 8.130 31.131 1.00 0.00 O +ATOM 2261 HW1 SOL 753 23.581 8.250 31.631 1.00 0.00 H +ATOM 2262 HW2 SOL 753 22.301 7.260 31.401 1.00 0.00 H +ATOM 2263 OW SOL 754 0.131 3.860 0.011 1.00 0.00 O +ATOM 2264 HW1 SOL 754 0.341 4.600 0.651 1.00 0.00 H +ATOM 2265 HW2 SOL 754 -0.759 4.030 -0.419 1.00 0.00 H +ATOM 2266 OW SOL 755 22.291 11.001 23.631 1.00 0.00 O +ATOM 2267 HW1 SOL 755 22.221 11.831 23.071 1.00 0.00 H +ATOM 2268 HW2 SOL 755 22.331 10.201 23.031 1.00 0.00 H +ATOM 2269 OW SOL 756 24.281 5.370 27.271 1.00 0.00 O +ATOM 2270 HW1 SOL 756 24.401 6.030 26.531 1.00 0.00 H +ATOM 2271 HW2 SOL 756 24.741 5.710 28.101 1.00 0.00 H +ATOM 2272 OW SOL 757 31.141 13.481 22.501 1.00 0.00 O +ATOM 2273 HW1 SOL 757 31.641 14.251 22.901 1.00 0.00 H +ATOM 2274 HW2 SOL 757 30.191 13.501 22.821 1.00 0.00 H +ATOM 2275 OW SOL 758 0.111 14.451 30.041 1.00 0.00 O +ATOM 2276 HW1 SOL 758 0.581 14.581 30.911 1.00 0.00 H +ATOM 2277 HW2 SOL 758 -0.549 13.711 30.131 1.00 0.00 H +ATOM 2278 OW SOL 759 24.351 8.700 28.911 1.00 0.00 O +ATOM 2279 HW1 SOL 759 24.791 9.590 28.821 1.00 0.00 H +ATOM 2280 HW2 SOL 759 23.721 8.700 29.681 1.00 0.00 H +ATOM 2281 OW SOL 760 0.991 8.620 29.071 1.00 0.00 O +ATOM 2282 HW1 SOL 760 0.241 8.620 28.411 1.00 0.00 H +ATOM 2283 HW2 SOL 760 1.361 7.700 29.161 1.00 0.00 H +ATOM 2284 OW SOL 761 30.711 5.250 21.371 1.00 0.00 O +ATOM 2285 HW1 SOL 761 30.841 4.410 21.911 1.00 0.00 H +ATOM 2286 HW2 SOL 761 30.421 5.990 21.971 1.00 0.00 H +ATOM 2287 OW SOL 762 21.691 2.130 30.931 1.00 0.00 O +ATOM 2288 HW1 SOL 762 21.461 2.500 31.831 1.00 0.00 H +ATOM 2289 HW2 SOL 762 21.391 1.180 30.871 1.00 0.00 H +ATOM 2290 OW SOL 763 25.941 6.340 29.261 1.00 0.00 O +ATOM 2291 HW1 SOL 763 26.531 6.080 28.501 1.00 0.00 H +ATOM 2292 HW2 SOL 763 25.661 7.300 29.151 1.00 0.00 H +ATOM 2293 OW SOL 764 21.691 0.630 24.801 1.00 0.00 O +ATOM 2294 HW1 SOL 764 21.581 1.570 25.131 1.00 0.00 H +ATOM 2295 HW2 SOL 764 21.641 0.000 25.571 1.00 0.00 H +ATOM 2296 OW SOL 765 28.851 7.660 28.281 1.00 0.00 O +ATOM 2297 HW1 SOL 765 29.001 7.870 29.241 1.00 0.00 H +ATOM 2298 HW2 SOL 765 28.551 6.710 28.191 1.00 0.00 H +ATOM 2299 OW SOL 766 0.421 8.380 19.041 1.00 0.00 O +ATOM 2300 HW1 SOL 766 0.761 7.450 19.191 1.00 0.00 H +ATOM 2301 HW2 SOL 766 0.601 8.650 18.091 1.00 0.00 H +ATOM 2302 OW SOL 767 29.301 13.331 27.111 1.00 0.00 O +ATOM 2303 HW1 SOL 767 29.371 12.491 26.561 1.00 0.00 H +ATOM 2304 HW2 SOL 767 29.921 14.021 26.751 1.00 0.00 H +ATOM 2305 OW SOL 768 21.811 8.100 28.111 1.00 0.00 O +ATOM 2306 HW1 SOL 768 22.741 8.460 28.161 1.00 0.00 H +ATOM 2307 HW2 SOL 768 21.751 7.250 28.631 1.00 0.00 H +ATOM 2308 OW SOL 769 22.011 5.090 28.681 1.00 0.00 O +ATOM 2309 HW1 SOL 769 21.491 4.260 28.511 1.00 0.00 H +ATOM 2310 HW2 SOL 769 22.781 5.140 28.041 1.00 0.00 H +ATOM 2311 OW SOL 770 18.701 13.261 20.621 1.00 0.00 O +ATOM 2312 HW1 SOL 770 17.771 13.471 20.311 1.00 0.00 H +ATOM 2313 HW2 SOL 770 18.801 12.271 20.751 1.00 0.00 H +ATOM 2314 OW SOL 771 19.501 18.011 27.891 1.00 0.00 O +ATOM 2315 HW1 SOL 771 19.081 17.151 27.621 1.00 0.00 H +ATOM 2316 HW2 SOL 771 20.441 18.041 27.551 1.00 0.00 H +ATOM 2317 OW SOL 772 23.661 15.681 27.721 1.00 0.00 O +ATOM 2318 HW1 SOL 772 24.321 16.421 27.811 1.00 0.00 H +ATOM 2319 HW2 SOL 772 24.101 14.891 27.301 1.00 0.00 H +ATOM 2320 OW SOL 773 28.641 7.960 31.001 1.00 0.00 O +ATOM 2321 HW1 SOL 773 29.051 7.640 31.861 1.00 0.00 H +ATOM 2322 HW2 SOL 773 27.681 7.690 30.971 1.00 0.00 H +ATOM 2323 OW SOL 774 19.021 5.440 29.761 1.00 0.00 O +ATOM 2324 HW1 SOL 774 19.871 5.110 29.351 1.00 0.00 H +ATOM 2325 HW2 SOL 774 19.151 5.590 30.741 1.00 0.00 H +ATOM 2326 OW SOL 775 26.771 5.720 21.871 1.00 0.00 O +ATOM 2327 HW1 SOL 775 26.841 4.830 21.411 1.00 0.00 H +ATOM 2328 HW2 SOL 775 25.831 6.060 21.791 1.00 0.00 H +ATOM 2329 OW SOL 776 25.331 4.640 0.081 1.00 0.00 O +ATOM 2330 HW1 SOL 776 24.991 3.750 -0.219 1.00 0.00 H +ATOM 2331 HW2 SOL 776 25.591 5.180 -0.719 1.00 0.00 H +ATOM 2332 OW SOL 777 23.351 5.000 20.531 1.00 0.00 O +ATOM 2333 HW1 SOL 777 23.961 5.800 20.571 1.00 0.00 H +ATOM 2334 HW2 SOL 777 22.401 5.310 20.601 1.00 0.00 H +ATOM 2335 OW SOL 778 19.451 12.581 28.841 1.00 0.00 O +ATOM 2336 HW1 SOL 778 19.401 12.571 29.841 1.00 0.00 H +ATOM 2337 HW2 SOL 778 18.621 12.171 28.461 1.00 0.00 H +ATOM 2338 OW SOL 779 1.271 15.731 23.391 1.00 0.00 O +ATOM 2339 HW1 SOL 779 1.941 15.851 22.651 1.00 0.00 H +ATOM 2340 HW2 SOL 779 0.871 16.621 23.621 1.00 0.00 H +ATOM 2341 OW SOL 780 0.191 9.270 25.341 1.00 0.00 O +ATOM 2342 HW1 SOL 780 0.791 8.460 25.361 1.00 0.00 H +ATOM 2343 HW2 SOL 780 0.591 9.960 24.741 1.00 0.00 H +ATOM 2344 OW SOL 781 25.341 16.161 20.161 1.00 0.00 O +ATOM 2345 HW1 SOL 781 25.431 16.261 19.171 1.00 0.00 H +ATOM 2346 HW2 SOL 781 24.941 15.271 20.371 1.00 0.00 H +ATOM 2347 OW SOL 782 21.251 3.260 25.821 1.00 0.00 O +ATOM 2348 HW1 SOL 782 20.461 3.770 25.481 1.00 0.00 H +ATOM 2349 HW2 SOL 782 21.161 3.110 26.801 1.00 0.00 H +ATOM 2350 OW SOL 783 30.561 16.121 18.931 1.00 0.00 O +ATOM 2351 HW1 SOL 783 30.621 15.191 19.301 1.00 0.00 H +ATOM 2352 HW2 SOL 783 29.971 16.121 18.131 1.00 0.00 H +ATOM 2353 OW SOL 784 26.841 10.021 1.111 1.00 0.00 O +ATOM 2354 HW1 SOL 784 27.241 10.011 0.191 1.00 0.00 H +ATOM 2355 HW2 SOL 784 26.941 10.941 1.511 1.00 0.00 H +ATOM 2356 OW SOL 785 27.781 9.100 21.531 1.00 0.00 O +ATOM 2357 HW1 SOL 785 28.411 9.480 20.851 1.00 0.00 H +ATOM 2358 HW2 SOL 785 28.181 8.270 21.921 1.00 0.00 H +ATOM 2359 OW SOL 786 29.011 10.981 25.581 1.00 0.00 O +ATOM 2360 HW1 SOL 786 28.311 10.511 26.121 1.00 0.00 H +ATOM 2361 HW2 SOL 786 29.601 10.301 25.151 1.00 0.00 H +ATOM 2362 OW SOL 787 28.761 2.360 28.331 1.00 0.00 O +ATOM 2363 HW1 SOL 787 28.681 2.000 27.401 1.00 0.00 H +ATOM 2364 HW2 SOL 787 28.741 1.600 28.981 1.00 0.00 H +ATOM 2365 OW SOL 788 24.521 14.871 23.531 1.00 0.00 O +ATOM 2366 HW1 SOL 788 24.941 14.291 22.831 1.00 0.00 H +ATOM 2367 HW2 SOL 788 24.081 15.661 23.091 1.00 0.00 H +ATOM 2368 OW SOL 789 21.171 13.481 21.521 1.00 0.00 O +ATOM 2369 HW1 SOL 789 20.211 13.491 21.251 1.00 0.00 H +ATOM 2370 HW2 SOL 789 21.291 14.011 22.361 1.00 0.00 H +ATOM 2371 OW SOL 790 19.371 3.450 18.951 1.00 0.00 O +ATOM 2372 HW1 SOL 790 18.451 3.170 18.661 1.00 0.00 H +ATOM 2373 HW2 SOL 790 19.681 4.220 18.391 1.00 0.00 H +ATOM 2374 OW SOL 791 19.341 1.660 21.801 1.00 0.00 O +ATOM 2375 HW1 SOL 791 19.171 2.490 21.261 1.00 0.00 H +ATOM 2376 HW2 SOL 791 20.241 1.290 21.581 1.00 0.00 H +ATOM 2377 OW SOL 792 30.451 13.351 19.811 1.00 0.00 O +ATOM 2378 HW1 SOL 792 29.461 13.241 19.831 1.00 0.00 H +ATOM 2379 HW2 SOL 792 30.791 13.501 20.741 1.00 0.00 H +ATOM 2380 OW SOL 793 30.871 3.250 23.111 1.00 0.00 O +ATOM 2381 HW1 SOL 793 31.521 2.510 23.001 1.00 0.00 H +ATOM 2382 HW2 SOL 793 31.071 3.750 23.951 1.00 0.00 H +ATOM 2383 OW SOL 794 24.561 7.450 25.141 1.00 0.00 O +ATOM 2384 HW1 SOL 794 25.061 8.300 24.951 1.00 0.00 H +ATOM 2385 HW2 SOL 794 23.681 7.470 24.661 1.00 0.00 H +ATOM 2386 OW SOL 795 27.211 13.741 18.781 1.00 0.00 O +ATOM 2387 HW1 SOL 795 26.751 13.891 19.661 1.00 0.00 H +ATOM 2388 HW2 SOL 795 27.651 14.591 18.481 1.00 0.00 H +ATOM 2389 OW SOL 796 25.231 17.901 28.151 1.00 0.00 O +ATOM 2390 HW1 SOL 796 24.771 18.781 28.021 1.00 0.00 H +ATOM 2391 HW2 SOL 796 26.221 18.021 28.081 1.00 0.00 H +ATOM 2392 OW SOL 797 27.211 9.561 27.231 1.00 0.00 O +ATOM 2393 HW1 SOL 797 27.751 8.871 27.711 1.00 0.00 H +ATOM 2394 HW2 SOL 797 26.891 10.251 27.891 1.00 0.00 H +ATOM 2395 OW SOL 798 29.451 9.841 19.491 1.00 0.00 O +ATOM 2396 HW1 SOL 798 29.221 10.371 18.671 1.00 0.00 H +ATOM 2397 HW2 SOL 798 30.261 9.281 19.301 1.00 0.00 H +ATOM 2398 OW SOL 799 19.411 12.401 25.151 1.00 0.00 O +ATOM 2399 HW1 SOL 799 19.401 11.931 26.031 1.00 0.00 H +ATOM 2400 HW2 SOL 799 20.231 12.121 24.641 1.00 0.00 H +ATOM 2401 OW SOL 800 22.901 4.240 23.821 1.00 0.00 O +ATOM 2402 HW1 SOL 800 23.201 3.520 23.201 1.00 0.00 H +ATOM 2403 HW2 SOL 800 22.511 3.840 24.651 1.00 0.00 H +ATOM 2404 OW SOL 801 26.741 15.861 25.491 1.00 0.00 O +ATOM 2405 HW1 SOL 801 27.061 15.961 24.551 1.00 0.00 H +ATOM 2406 HW2 SOL 801 25.951 15.241 25.511 1.00 0.00 H +ATOM 2407 OW SOL 802 1.631 2.140 29.741 1.00 0.00 O +ATOM 2408 HW1 SOL 802 2.151 1.490 30.291 1.00 0.00 H +ATOM 2409 HW2 SOL 802 1.141 2.770 30.351 1.00 0.00 H +ATOM 2410 OW SOL 803 28.631 0.340 30.161 1.00 0.00 O +ATOM 2411 HW1 SOL 803 28.001 -0.380 29.851 1.00 0.00 H +ATOM 2412 HW2 SOL 803 29.561 -0.020 30.161 1.00 0.00 H +ATOM 2413 OW SOL 804 26.321 13.301 21.631 1.00 0.00 O +ATOM 2414 HW1 SOL 804 25.861 12.431 21.801 1.00 0.00 H +ATOM 2415 HW2 SOL 804 27.231 13.271 22.041 1.00 0.00 H +ATOM 2416 OW SOL 805 0.911 0.520 20.301 1.00 0.00 O +ATOM 2417 HW1 SOL 805 1.261 0.110 19.461 1.00 0.00 H +ATOM 2418 HW2 SOL 805 0.011 0.140 20.501 1.00 0.00 H +ATOM 2419 OW SOL 806 0.391 4.530 25.531 1.00 0.00 O +ATOM 2420 HW1 SOL 806 -0.199 5.330 25.571 1.00 0.00 H +ATOM 2421 HW2 SOL 806 0.541 4.180 26.461 1.00 0.00 H +ATOM 2422 OW SOL 807 19.011 10.771 21.621 1.00 0.00 O +ATOM 2423 HW1 SOL 807 20.001 10.661 21.531 1.00 0.00 H +ATOM 2424 HW2 SOL 807 18.611 9.911 21.941 1.00 0.00 H +ATOM 2425 OW SOL 808 27.371 16.461 21.991 1.00 0.00 O +ATOM 2426 HW1 SOL 808 26.601 16.111 21.451 1.00 0.00 H +ATOM 2427 HW2 SOL 808 27.051 17.171 22.611 1.00 0.00 H +ATOM 2428 OW SOL 809 20.921 24.901 1.130 1.00 0.00 O +ATOM 2429 HW1 SOL 809 19.991 24.881 1.500 1.00 0.00 H +ATOM 2430 HW2 SOL 809 20.931 24.511 0.210 1.00 0.00 H +ATOM 2431 OW SOL 810 20.871 21.371 9.961 1.00 0.00 O +ATOM 2432 HW1 SOL 810 21.221 21.201 10.881 1.00 0.00 H +ATOM 2433 HW2 SOL 810 19.991 20.921 9.841 1.00 0.00 H +ATOM 2434 OW SOL 811 18.811 22.301 6.470 1.00 0.00 O +ATOM 2435 HW1 SOL 811 17.991 22.731 6.860 1.00 0.00 H +ATOM 2436 HW2 SOL 811 18.531 21.571 5.840 1.00 0.00 H +ATOM 2437 OW SOL 812 29.971 25.651 7.170 1.00 0.00 O +ATOM 2438 HW1 SOL 812 30.541 26.431 6.920 1.00 0.00 H +ATOM 2439 HW2 SOL 812 29.371 25.911 7.930 1.00 0.00 H +ATOM 2440 OW SOL 813 26.301 30.061 10.231 1.00 0.00 O +ATOM 2441 HW1 SOL 813 25.521 30.231 10.831 1.00 0.00 H +ATOM 2442 HW2 SOL 813 26.641 30.931 9.871 1.00 0.00 H +ATOM 2443 OW SOL 814 27.121 26.601 18.231 1.00 0.00 O +ATOM 2444 HW1 SOL 814 27.081 27.361 18.881 1.00 0.00 H +ATOM 2445 HW2 SOL 814 27.341 26.961 17.321 1.00 0.00 H +ATOM 2446 OW SOL 815 25.471 28.741 6.650 1.00 0.00 O +ATOM 2447 HW1 SOL 815 26.161 28.581 7.350 1.00 0.00 H +ATOM 2448 HW2 SOL 815 24.741 29.311 7.030 1.00 0.00 H +ATOM 2449 OW SOL 816 23.001 22.541 14.991 1.00 0.00 O +ATOM 2450 HW1 SOL 816 23.821 21.981 15.081 1.00 0.00 H +ATOM 2451 HW2 SOL 816 22.191 21.961 15.031 1.00 0.00 H +ATOM 2452 OW SOL 817 21.021 29.531 8.860 1.00 0.00 O +ATOM 2453 HW1 SOL 817 21.161 28.691 9.380 1.00 0.00 H +ATOM 2454 HW2 SOL 817 20.471 30.171 9.410 1.00 0.00 H +ATOM 2455 OW SOL 818 24.681 28.261 1.230 1.00 0.00 O +ATOM 2456 HW1 SOL 818 24.751 29.101 0.690 1.00 0.00 H +ATOM 2457 HW2 SOL 818 25.141 28.391 2.110 1.00 0.00 H +ATOM 2458 OW SOL 819 19.841 25.051 5.630 1.00 0.00 O +ATOM 2459 HW1 SOL 819 19.391 24.171 5.800 1.00 0.00 H +ATOM 2460 HW2 SOL 819 19.831 25.591 6.470 1.00 0.00 H +ATOM 2461 OW SOL 820 19.751 25.991 15.971 1.00 0.00 O +ATOM 2462 HW1 SOL 820 20.631 25.861 16.421 1.00 0.00 H +ATOM 2463 HW2 SOL 820 19.621 26.961 15.751 1.00 0.00 H +ATOM 2464 OW SOL 821 24.751 1.041 7.260 1.00 0.00 O +ATOM 2465 HW1 SOL 821 24.261 0.171 7.350 1.00 0.00 H +ATOM 2466 HW2 SOL 821 24.521 1.471 6.390 1.00 0.00 H +ATOM 2467 OW SOL 822 26.711 18.661 5.020 1.00 0.00 O +ATOM 2468 HW1 SOL 822 27.111 19.571 4.930 1.00 0.00 H +ATOM 2469 HW2 SOL 822 25.711 18.741 5.080 1.00 0.00 H +ATOM 2470 OW SOL 823 20.591 28.381 12.641 1.00 0.00 O +ATOM 2471 HW1 SOL 823 21.481 27.931 12.501 1.00 0.00 H +ATOM 2472 HW2 SOL 823 19.861 27.731 12.451 1.00 0.00 H +ATOM 2473 OW SOL 824 21.791 21.131 18.011 1.00 0.00 O +ATOM 2474 HW1 SOL 824 22.501 21.841 18.071 1.00 0.00 H +ATOM 2475 HW2 SOL 824 20.911 21.521 18.291 1.00 0.00 H +ATOM 2476 OW SOL 825 24.601 25.911 2.700 1.00 0.00 O +ATOM 2477 HW1 SOL 825 24.841 26.601 2.020 1.00 0.00 H +ATOM 2478 HW2 SOL 825 23.821 26.241 3.240 1.00 0.00 H +ATOM 2479 OW SOL 826 0.201 22.071 9.441 1.00 0.00 O +ATOM 2480 HW1 SOL 826 -0.659 21.571 9.311 1.00 0.00 H +ATOM 2481 HW2 SOL 826 0.821 21.531 10.001 1.00 0.00 H +ATOM 2482 OW SOL 827 26.691 24.671 14.651 1.00 0.00 O +ATOM 2483 HW1 SOL 827 26.221 24.641 15.541 1.00 0.00 H +ATOM 2484 HW2 SOL 827 26.181 24.121 13.991 1.00 0.00 H +ATOM 2485 OW SOL 828 28.351 27.521 15.721 1.00 0.00 O +ATOM 2486 HW1 SOL 828 28.811 26.681 15.431 1.00 0.00 H +ATOM 2487 HW2 SOL 828 27.791 27.861 14.971 1.00 0.00 H +ATOM 2488 OW SOL 829 28.531 22.721 12.421 1.00 0.00 O +ATOM 2489 HW1 SOL 829 27.761 23.061 12.961 1.00 0.00 H +ATOM 2490 HW2 SOL 829 28.191 22.211 11.631 1.00 0.00 H +ATOM 2491 OW SOL 830 29.031 25.631 4.290 1.00 0.00 O +ATOM 2492 HW1 SOL 830 29.291 25.591 5.250 1.00 0.00 H +ATOM 2493 HW2 SOL 830 28.181 25.121 4.150 1.00 0.00 H +ATOM 2494 OW SOL 831 19.381 26.731 7.890 1.00 0.00 O +ATOM 2495 HW1 SOL 831 20.371 26.611 7.980 1.00 0.00 H +ATOM 2496 HW2 SOL 831 19.141 27.681 8.100 1.00 0.00 H +ATOM 2497 OW SOL 832 27.271 22.101 1.950 1.00 0.00 O +ATOM 2498 HW1 SOL 832 27.861 22.731 1.460 1.00 0.00 H +ATOM 2499 HW2 SOL 832 27.461 21.161 1.660 1.00 0.00 H +ATOM 2500 OW SOL 833 24.121 20.581 8.850 1.00 0.00 O +ATOM 2501 HW1 SOL 833 24.071 20.531 9.850 1.00 0.00 H +ATOM 2502 HW2 SOL 833 24.141 21.541 8.560 1.00 0.00 H +ATOM 2503 OW SOL 834 21.831 28.051 2.420 1.00 0.00 O +ATOM 2504 HW1 SOL 834 22.651 28.441 2.000 1.00 0.00 H +ATOM 2505 HW2 SOL 834 21.561 27.231 1.930 1.00 0.00 H +ATOM 2506 OW SOL 835 20.641 21.471 14.981 1.00 0.00 O +ATOM 2507 HW1 SOL 835 19.841 22.071 14.851 1.00 0.00 H +ATOM 2508 HW2 SOL 835 20.541 20.981 15.841 1.00 0.00 H +ATOM 2509 OW SOL 836 22.441 25.621 4.800 1.00 0.00 O +ATOM 2510 HW1 SOL 836 22.891 24.721 4.770 1.00 0.00 H +ATOM 2511 HW2 SOL 836 21.501 25.511 5.130 1.00 0.00 H +ATOM 2512 OW SOL 837 24.761 19.841 1.170 1.00 0.00 O +ATOM 2513 HW1 SOL 837 25.741 19.621 1.240 1.00 0.00 H +ATOM 2514 HW2 SOL 837 24.451 19.671 0.240 1.00 0.00 H +ATOM 2515 OW SOL 838 26.431 21.261 17.491 1.00 0.00 O +ATOM 2516 HW1 SOL 838 27.101 20.651 17.921 1.00 0.00 H +ATOM 2517 HW2 SOL 838 25.701 21.451 18.141 1.00 0.00 H +ATOM 2518 OW SOL 839 27.841 23.651 8.990 1.00 0.00 O +ATOM 2519 HW1 SOL 839 27.591 23.561 8.030 1.00 0.00 H +ATOM 2520 HW2 SOL 839 28.321 22.831 9.300 1.00 0.00 H +ATOM 2521 OW SOL 840 24.011 19.261 5.120 1.00 0.00 O +ATOM 2522 HW1 SOL 840 23.201 19.271 5.700 1.00 0.00 H +ATOM 2523 HW2 SOL 840 24.041 20.091 4.570 1.00 0.00 H +ATOM 2524 OW SOL 841 21.591 18.971 1.710 1.00 0.00 O +ATOM 2525 HW1 SOL 841 22.081 19.811 1.500 1.00 0.00 H +ATOM 2526 HW2 SOL 841 22.211 18.321 2.160 1.00 0.00 H +ATOM 2527 OW SOL 842 27.971 20.981 4.800 1.00 0.00 O +ATOM 2528 HW1 SOL 842 27.491 21.391 4.020 1.00 0.00 H +ATOM 2529 HW2 SOL 842 28.961 20.961 4.610 1.00 0.00 H +ATOM 2530 OW SOL 843 29.381 25.451 14.641 1.00 0.00 O +ATOM 2531 HW1 SOL 843 28.581 24.841 14.671 1.00 0.00 H +ATOM 2532 HW2 SOL 843 30.191 24.921 14.401 1.00 0.00 H +ATOM 2533 OW SOL 844 23.211 30.141 7.410 1.00 0.00 O +ATOM 2534 HW1 SOL 844 22.501 29.871 8.060 1.00 0.00 H +ATOM 2535 HW2 SOL 844 22.951 29.861 6.480 1.00 0.00 H +ATOM 2536 OW SOL 845 28.941 24.111 0.160 1.00 0.00 O +ATOM 2537 HW1 SOL 845 28.531 24.931 -0.230 1.00 0.00 H +ATOM 2538 HW2 SOL 845 29.581 24.371 0.890 1.00 0.00 H +ATOM 2539 OW SOL 846 19.401 24.181 13.861 1.00 0.00 O +ATOM 2540 HW1 SOL 846 20.321 24.171 13.451 1.00 0.00 H +ATOM 2541 HW2 SOL 846 19.341 24.921 14.531 1.00 0.00 H +ATOM 2542 OW SOL 847 24.231 20.841 11.471 1.00 0.00 O +ATOM 2543 HW1 SOL 847 24.611 20.001 11.841 1.00 0.00 H +ATOM 2544 HW2 SOL 847 23.351 21.031 11.911 1.00 0.00 H +ATOM 2545 OW SOL 848 27.281 23.161 6.420 1.00 0.00 O +ATOM 2546 HW1 SOL 848 26.961 23.881 5.800 1.00 0.00 H +ATOM 2547 HW2 SOL 848 27.521 22.351 5.890 1.00 0.00 H +ATOM 2548 OW SOL 849 28.791 19.011 7.530 1.00 0.00 O +ATOM 2549 HW1 SOL 849 28.071 19.061 6.840 1.00 0.00 H +ATOM 2550 HW2 SOL 849 28.551 18.321 8.220 1.00 0.00 H +ATOM 2551 OW SOL 850 23.891 21.181 3.280 1.00 0.00 O +ATOM 2552 HW1 SOL 850 24.161 20.591 2.530 1.00 0.00 H +ATOM 2553 HW2 SOL 850 23.891 22.131 2.970 1.00 0.00 H +ATOM 2554 OW SOL 851 27.771 19.511 14.021 1.00 0.00 O +ATOM 2555 HW1 SOL 851 28.021 19.311 13.071 1.00 0.00 H +ATOM 2556 HW2 SOL 851 28.491 20.071 14.441 1.00 0.00 H +ATOM 2557 OW SOL 852 28.421 29.781 17.191 1.00 0.00 O +ATOM 2558 HW1 SOL 852 27.431 29.841 17.291 1.00 0.00 H +ATOM 2559 HW2 SOL 852 28.651 28.981 16.631 1.00 0.00 H +ATOM 2560 OW SOL 853 25.671 29.121 3.680 1.00 0.00 O +ATOM 2561 HW1 SOL 853 25.531 29.191 4.670 1.00 0.00 H +ATOM 2562 HW2 SOL 853 26.511 28.611 3.500 1.00 0.00 H +ATOM 2563 OW SOL 854 22.721 26.751 12.511 1.00 0.00 O +ATOM 2564 HW1 SOL 854 23.581 26.871 13.011 1.00 0.00 H +ATOM 2565 HW2 SOL 854 22.301 25.881 12.781 1.00 0.00 H +ATOM 2566 OW SOL 855 0.131 22.481 12.621 1.00 0.00 O +ATOM 2567 HW1 SOL 855 0.341 23.221 13.261 1.00 0.00 H +ATOM 2568 HW2 SOL 855 -0.759 22.651 12.191 1.00 0.00 H +ATOM 2569 OW SOL 856 22.291 29.621 5.010 1.00 0.00 O +ATOM 2570 HW1 SOL 856 22.221 30.451 4.450 1.00 0.00 H +ATOM 2571 HW2 SOL 856 22.331 28.821 4.410 1.00 0.00 H +ATOM 2572 OW SOL 857 24.281 23.991 8.650 1.00 0.00 O +ATOM 2573 HW1 SOL 857 24.401 24.651 7.910 1.00 0.00 H +ATOM 2574 HW2 SOL 857 24.741 24.331 9.480 1.00 0.00 H +ATOM 2575 OW SOL 858 22.641 26.131 15.981 1.00 0.00 O +ATOM 2576 HW1 SOL 858 23.321 26.681 15.511 1.00 0.00 H +ATOM 2577 HW2 SOL 858 23.041 25.251 16.251 1.00 0.00 H +ATOM 2578 OW SOL 859 28.751 19.671 17.701 1.00 0.00 O +ATOM 2579 HW1 SOL 859 28.811 20.521 17.181 1.00 0.00 H +ATOM 2580 HW2 SOL 859 29.071 18.911 17.131 1.00 0.00 H +ATOM 2581 OW SOL 860 23.661 19.121 17.401 1.00 0.00 O +ATOM 2582 HW1 SOL 860 23.241 18.551 16.701 1.00 0.00 H +ATOM 2583 HW2 SOL 860 23.001 19.811 17.721 1.00 0.00 H +ATOM 2584 OW SOL 861 24.351 27.321 10.291 1.00 0.00 O +ATOM 2585 HW1 SOL 861 24.791 28.211 10.201 1.00 0.00 H +ATOM 2586 HW2 SOL 861 23.721 27.321 11.061 1.00 0.00 H +ATOM 2587 OW SOL 862 0.991 27.241 10.451 1.00 0.00 O +ATOM 2588 HW1 SOL 862 0.241 27.241 9.791 1.00 0.00 H +ATOM 2589 HW2 SOL 862 1.361 26.321 10.541 1.00 0.00 H +ATOM 2590 OW SOL 863 30.711 23.871 2.750 1.00 0.00 O +ATOM 2591 HW1 SOL 863 30.841 23.031 3.290 1.00 0.00 H +ATOM 2592 HW2 SOL 863 30.421 24.611 3.350 1.00 0.00 H +ATOM 2593 OW SOL 864 21.691 20.751 12.311 1.00 0.00 O +ATOM 2594 HW1 SOL 864 21.461 21.121 13.211 1.00 0.00 H +ATOM 2595 HW2 SOL 864 21.391 19.801 12.251 1.00 0.00 H +ATOM 2596 OW SOL 865 18.991 0.491 12.821 1.00 0.00 O +ATOM 2597 HW1 SOL 865 19.521 0.001 13.501 1.00 0.00 H +ATOM 2598 HW2 SOL 865 19.211 1.471 12.871 1.00 0.00 H +ATOM 2599 OW SOL 866 25.941 24.961 10.641 1.00 0.00 O +ATOM 2600 HW1 SOL 866 26.531 24.701 9.881 1.00 0.00 H +ATOM 2601 HW2 SOL 866 25.661 25.921 10.531 1.00 0.00 H +ATOM 2602 OW SOL 867 21.691 19.251 6.180 1.00 0.00 O +ATOM 2603 HW1 SOL 867 21.581 20.191 6.510 1.00 0.00 H +ATOM 2604 HW2 SOL 867 21.641 18.621 6.950 1.00 0.00 H +ATOM 2605 OW SOL 868 28.851 26.281 9.661 1.00 0.00 O +ATOM 2606 HW1 SOL 868 29.001 26.491 10.621 1.00 0.00 H +ATOM 2607 HW2 SOL 868 28.551 25.331 9.571 1.00 0.00 H +ATOM 2608 OW SOL 869 22.121 27.601 18.041 1.00 0.00 O +ATOM 2609 HW1 SOL 869 22.881 28.041 18.521 1.00 0.00 H +ATOM 2610 HW2 SOL 869 22.471 27.131 17.221 1.00 0.00 H +ATOM 2611 OW SOL 870 21.811 26.721 9.491 1.00 0.00 O +ATOM 2612 HW1 SOL 870 22.741 27.081 9.541 1.00 0.00 H +ATOM 2613 HW2 SOL 870 21.751 25.871 10.011 1.00 0.00 H +ATOM 2614 OW SOL 871 22.011 23.711 10.061 1.00 0.00 O +ATOM 2615 HW1 SOL 871 21.491 22.881 9.891 1.00 0.00 H +ATOM 2616 HW2 SOL 871 22.781 23.761 9.421 1.00 0.00 H +ATOM 2617 OW SOL 872 23.731 22.771 18.081 1.00 0.00 O +ATOM 2618 HW1 SOL 872 23.551 23.221 18.961 1.00 0.00 H +ATOM 2619 HW2 SOL 872 24.151 23.421 17.451 1.00 0.00 H +ATOM 2620 OW SOL 873 30.001 22.421 16.781 1.00 0.00 O +ATOM 2621 HW1 SOL 873 29.551 23.051 17.421 1.00 0.00 H +ATOM 2622 HW2 SOL 873 30.931 22.731 16.611 1.00 0.00 H +ATOM 2623 OW SOL 874 30.221 20.691 14.771 1.00 0.00 O +ATOM 2624 HW1 SOL 874 30.221 21.331 15.541 1.00 0.00 H +ATOM 2625 HW2 SOL 874 30.501 21.171 13.941 1.00 0.00 H +ATOM 2626 OW SOL 875 28.641 26.581 12.381 1.00 0.00 O +ATOM 2627 HW1 SOL 875 29.051 26.261 13.241 1.00 0.00 H +ATOM 2628 HW2 SOL 875 27.681 26.311 12.351 1.00 0.00 H +ATOM 2629 OW SOL 876 19.021 24.061 11.141 1.00 0.00 O +ATOM 2630 HW1 SOL 876 19.871 23.731 10.731 1.00 0.00 H +ATOM 2631 HW2 SOL 876 19.151 24.211 12.121 1.00 0.00 H +ATOM 2632 OW SOL 877 20.511 23.821 17.221 1.00 0.00 O +ATOM 2633 HW1 SOL 877 21.101 23.421 16.521 1.00 0.00 H +ATOM 2634 HW2 SOL 877 19.931 24.531 16.811 1.00 0.00 H +ATOM 2635 OW SOL 878 26.771 24.341 3.250 1.00 0.00 O +ATOM 2636 HW1 SOL 878 26.841 23.451 2.790 1.00 0.00 H +ATOM 2637 HW2 SOL 878 25.831 24.681 3.170 1.00 0.00 H +ATOM 2638 OW SOL 879 25.331 23.261 12.691 1.00 0.00 O +ATOM 2639 HW1 SOL 879 24.991 22.371 12.391 1.00 0.00 H +ATOM 2640 HW2 SOL 879 25.591 23.801 11.891 1.00 0.00 H +ATOM 2641 OW SOL 880 23.351 23.621 1.910 1.00 0.00 O +ATOM 2642 HW1 SOL 880 23.961 24.421 1.950 1.00 0.00 H +ATOM 2643 HW2 SOL 880 22.401 23.931 1.980 1.00 0.00 H +ATOM 2644 OW SOL 881 20.211 29.991 14.661 1.00 0.00 O +ATOM 2645 HW1 SOL 881 20.431 29.381 15.421 1.00 0.00 H +ATOM 2646 HW2 SOL 881 20.311 29.501 13.801 1.00 0.00 H +ATOM 2647 OW SOL 882 0.861 29.211 12.341 1.00 0.00 O +ATOM 2648 HW1 SOL 882 1.101 28.581 11.601 1.00 0.00 H +ATOM 2649 HW2 SOL 882 -0.039 29.611 12.161 1.00 0.00 H +ATOM 2650 OW SOL 883 19.451 31.201 10.221 1.00 0.00 O +ATOM 2651 HW1 SOL 883 19.401 31.191 11.221 1.00 0.00 H +ATOM 2652 HW2 SOL 883 18.621 30.791 9.841 1.00 0.00 H +ATOM 2653 OW SOL 884 27.651 19.481 1.330 1.00 0.00 O +ATOM 2654 HW1 SOL 884 28.161 19.491 0.470 1.00 0.00 H +ATOM 2655 HW2 SOL 884 28.211 19.061 2.040 1.00 0.00 H +ATOM 2656 OW SOL 885 0.191 27.891 6.720 1.00 0.00 O +ATOM 2657 HW1 SOL 885 0.791 27.081 6.740 1.00 0.00 H +ATOM 2658 HW2 SOL 885 0.591 28.581 6.120 1.00 0.00 H +ATOM 2659 OW SOL 886 21.251 21.881 7.200 1.00 0.00 O +ATOM 2660 HW1 SOL 886 20.461 22.391 6.860 1.00 0.00 H +ATOM 2661 HW2 SOL 886 21.161 21.731 8.180 1.00 0.00 H +ATOM 2662 OW SOL 887 26.841 28.641 13.721 1.00 0.00 O +ATOM 2663 HW1 SOL 887 27.241 28.631 12.801 1.00 0.00 H +ATOM 2664 HW2 SOL 887 26.941 29.561 14.121 1.00 0.00 H +ATOM 2665 OW SOL 888 27.781 27.721 2.910 1.00 0.00 O +ATOM 2666 HW1 SOL 888 28.411 28.101 2.230 1.00 0.00 H +ATOM 2667 HW2 SOL 888 28.181 26.891 3.300 1.00 0.00 H +ATOM 2668 OW SOL 889 22.341 0.271 14.901 1.00 0.00 O +ATOM 2669 HW1 SOL 889 22.211 1.201 14.561 1.00 0.00 H +ATOM 2670 HW2 SOL 889 21.501 -0.249 14.771 1.00 0.00 H +ATOM 2671 OW SOL 890 29.011 29.601 6.960 1.00 0.00 O +ATOM 2672 HW1 SOL 890 28.311 29.131 7.500 1.00 0.00 H +ATOM 2673 HW2 SOL 890 29.601 28.921 6.530 1.00 0.00 H +ATOM 2674 OW SOL 891 28.761 20.981 9.711 1.00 0.00 O +ATOM 2675 HW1 SOL 891 28.681 20.621 8.781 1.00 0.00 H +ATOM 2676 HW2 SOL 891 28.741 20.221 10.361 1.00 0.00 H +ATOM 2677 OW SOL 892 19.671 28.751 17.261 1.00 0.00 O +ATOM 2678 HW1 SOL 892 18.901 28.421 17.801 1.00 0.00 H +ATOM 2679 HW2 SOL 892 20.521 28.451 17.681 1.00 0.00 H +ATOM 2680 OW SOL 893 25.341 20.651 14.891 1.00 0.00 O +ATOM 2681 HW1 SOL 893 26.241 20.491 14.491 1.00 0.00 H +ATOM 2682 HW2 SOL 893 25.421 20.701 15.881 1.00 0.00 H +ATOM 2683 OW SOL 894 19.341 20.281 3.180 1.00 0.00 O +ATOM 2684 HW1 SOL 894 19.171 21.111 2.640 1.00 0.00 H +ATOM 2685 HW2 SOL 894 20.241 19.911 2.960 1.00 0.00 H +ATOM 2686 OW SOL 895 24.751 27.041 14.311 1.00 0.00 O +ATOM 2687 HW1 SOL 895 25.311 27.851 14.141 1.00 0.00 H +ATOM 2688 HW2 SOL 895 25.341 26.241 14.341 1.00 0.00 H +ATOM 2689 OW SOL 896 25.781 24.271 17.081 1.00 0.00 O +ATOM 2690 HW1 SOL 896 25.971 24.921 17.821 1.00 0.00 H +ATOM 2691 HW2 SOL 896 26.381 23.471 17.171 1.00 0.00 H +ATOM 2692 OW SOL 897 30.871 21.871 4.490 1.00 0.00 O +ATOM 2693 HW1 SOL 897 31.521 21.131 4.380 1.00 0.00 H +ATOM 2694 HW2 SOL 897 31.071 22.371 5.330 1.00 0.00 H +ATOM 2695 OW SOL 898 24.561 26.071 6.520 1.00 0.00 O +ATOM 2696 HW1 SOL 898 25.061 26.921 6.330 1.00 0.00 H +ATOM 2697 HW2 SOL 898 23.681 26.091 6.040 1.00 0.00 H +ATOM 2698 OW SOL 899 27.211 28.181 8.610 1.00 0.00 O +ATOM 2699 HW1 SOL 899 27.751 27.491 9.090 1.00 0.00 H +ATOM 2700 HW2 SOL 899 26.891 28.871 9.270 1.00 0.00 H +ATOM 2701 OW SOL 900 29.451 28.461 0.870 1.00 0.00 O +ATOM 2702 HW1 SOL 900 29.221 28.991 0.050 1.00 0.00 H +ATOM 2703 HW2 SOL 900 30.261 27.901 0.680 1.00 0.00 H +ATOM 2704 OW SOL 901 19.411 31.021 6.530 1.00 0.00 O +ATOM 2705 HW1 SOL 901 19.401 30.551 7.410 1.00 0.00 H +ATOM 2706 HW2 SOL 901 20.231 30.741 6.020 1.00 0.00 H +ATOM 2707 OW SOL 902 22.901 22.861 5.200 1.00 0.00 O +ATOM 2708 HW1 SOL 902 23.201 22.141 4.580 1.00 0.00 H +ATOM 2709 HW2 SOL 902 22.511 22.461 6.030 1.00 0.00 H +ATOM 2710 OW SOL 903 21.791 24.091 12.801 1.00 0.00 O +ATOM 2711 HW1 SOL 903 22.171 23.501 13.521 1.00 0.00 H +ATOM 2712 HW2 SOL 903 22.191 23.831 11.921 1.00 0.00 H +ATOM 2713 OW SOL 904 1.631 20.761 11.121 1.00 0.00 O +ATOM 2714 HW1 SOL 904 2.151 20.111 11.671 1.00 0.00 H +ATOM 2715 HW2 SOL 904 1.141 21.391 11.731 1.00 0.00 H +ATOM 2716 OW SOL 905 28.631 18.961 11.541 1.00 0.00 O +ATOM 2717 HW1 SOL 905 28.001 18.241 11.231 1.00 0.00 H +ATOM 2718 HW2 SOL 905 29.561 18.601 11.541 1.00 0.00 H +ATOM 2719 OW SOL 906 26.321 0.691 3.010 1.00 0.00 O +ATOM 2720 HW1 SOL 906 25.861 -0.179 3.180 1.00 0.00 H +ATOM 2721 HW2 SOL 906 27.231 0.661 3.420 1.00 0.00 H +ATOM 2722 OW SOL 907 0.911 19.141 1.680 1.00 0.00 O +ATOM 2723 HW1 SOL 907 1.261 18.731 0.840 1.00 0.00 H +ATOM 2724 HW2 SOL 907 0.011 18.761 1.880 1.00 0.00 H +ATOM 2725 OW SOL 908 0.391 23.151 6.910 1.00 0.00 O +ATOM 2726 HW1 SOL 908 -0.199 23.951 6.950 1.00 0.00 H +ATOM 2727 HW2 SOL 908 0.541 22.801 7.840 1.00 0.00 H +ATOM 2728 OW SOL 909 19.011 29.391 3.000 1.00 0.00 O +ATOM 2729 HW1 SOL 909 20.001 29.281 2.910 1.00 0.00 H +ATOM 2730 HW2 SOL 909 18.611 28.531 3.320 1.00 0.00 H +ATOM 2731 OW SOL 910 20.921 24.901 19.751 1.00 0.00 O +ATOM 2732 HW1 SOL 910 19.991 24.881 20.121 1.00 0.00 H +ATOM 2733 HW2 SOL 910 20.931 24.511 18.831 1.00 0.00 H +ATOM 2734 OW SOL 911 20.871 21.371 28.581 1.00 0.00 O +ATOM 2735 HW1 SOL 911 21.221 21.201 29.501 1.00 0.00 H +ATOM 2736 HW2 SOL 911 19.991 20.921 28.461 1.00 0.00 H +ATOM 2737 OW SOL 912 18.811 22.301 25.091 1.00 0.00 O +ATOM 2738 HW1 SOL 912 17.991 22.731 25.481 1.00 0.00 H +ATOM 2739 HW2 SOL 912 18.531 21.571 24.461 1.00 0.00 H +ATOM 2740 OW SOL 913 29.971 25.651 25.791 1.00 0.00 O +ATOM 2741 HW1 SOL 913 30.541 26.431 25.541 1.00 0.00 H +ATOM 2742 HW2 SOL 913 29.371 25.911 26.551 1.00 0.00 H +ATOM 2743 OW SOL 914 26.301 30.061 28.851 1.00 0.00 O +ATOM 2744 HW1 SOL 914 25.521 30.231 29.451 1.00 0.00 H +ATOM 2745 HW2 SOL 914 26.641 30.931 28.491 1.00 0.00 H +ATOM 2746 OW SOL 915 25.471 28.741 25.271 1.00 0.00 O +ATOM 2747 HW1 SOL 915 26.161 28.581 25.971 1.00 0.00 H +ATOM 2748 HW2 SOL 915 24.741 29.311 25.651 1.00 0.00 H +ATOM 2749 OW SOL 916 21.021 29.531 27.481 1.00 0.00 O +ATOM 2750 HW1 SOL 916 21.161 28.691 28.001 1.00 0.00 H +ATOM 2751 HW2 SOL 916 20.471 30.171 28.031 1.00 0.00 H +ATOM 2752 OW SOL 917 24.681 28.261 19.851 1.00 0.00 O +ATOM 2753 HW1 SOL 917 24.751 29.101 19.311 1.00 0.00 H +ATOM 2754 HW2 SOL 917 25.141 28.391 20.731 1.00 0.00 H +ATOM 2755 OW SOL 918 19.841 25.051 24.251 1.00 0.00 O +ATOM 2756 HW1 SOL 918 19.391 24.171 24.421 1.00 0.00 H +ATOM 2757 HW2 SOL 918 19.831 25.591 25.091 1.00 0.00 H +ATOM 2758 OW SOL 919 24.751 1.041 25.881 1.00 0.00 O +ATOM 2759 HW1 SOL 919 24.261 0.171 25.971 1.00 0.00 H +ATOM 2760 HW2 SOL 919 24.521 1.471 25.011 1.00 0.00 H +ATOM 2761 OW SOL 920 26.711 18.661 23.641 1.00 0.00 O +ATOM 2762 HW1 SOL 920 27.111 19.571 23.551 1.00 0.00 H +ATOM 2763 HW2 SOL 920 25.711 18.741 23.701 1.00 0.00 H +ATOM 2764 OW SOL 921 20.591 28.381 0.031 1.00 0.00 O +ATOM 2765 HW1 SOL 921 21.481 27.931 -0.109 1.00 0.00 H +ATOM 2766 HW2 SOL 921 19.861 27.731 -0.159 1.00 0.00 H +ATOM 2767 OW SOL 922 24.601 25.911 21.321 1.00 0.00 O +ATOM 2768 HW1 SOL 922 24.841 26.601 20.641 1.00 0.00 H +ATOM 2769 HW2 SOL 922 23.821 26.241 21.861 1.00 0.00 H +ATOM 2770 OW SOL 923 0.201 22.071 28.061 1.00 0.00 O +ATOM 2771 HW1 SOL 923 -0.659 21.571 27.931 1.00 0.00 H +ATOM 2772 HW2 SOL 923 0.821 21.531 28.621 1.00 0.00 H +ATOM 2773 OW SOL 924 29.031 25.631 22.911 1.00 0.00 O +ATOM 2774 HW1 SOL 924 29.291 25.591 23.871 1.00 0.00 H +ATOM 2775 HW2 SOL 924 28.181 25.121 22.771 1.00 0.00 H +ATOM 2776 OW SOL 925 19.381 26.731 26.511 1.00 0.00 O +ATOM 2777 HW1 SOL 925 20.371 26.611 26.601 1.00 0.00 H +ATOM 2778 HW2 SOL 925 19.141 27.681 26.721 1.00 0.00 H +ATOM 2779 OW SOL 926 27.271 22.101 20.571 1.00 0.00 O +ATOM 2780 HW1 SOL 926 27.861 22.731 20.081 1.00 0.00 H +ATOM 2781 HW2 SOL 926 27.461 21.161 20.281 1.00 0.00 H +ATOM 2782 OW SOL 927 24.121 20.581 27.471 1.00 0.00 O +ATOM 2783 HW1 SOL 927 24.071 20.531 28.471 1.00 0.00 H +ATOM 2784 HW2 SOL 927 24.141 21.541 27.181 1.00 0.00 H +ATOM 2785 OW SOL 928 21.831 28.051 21.041 1.00 0.00 O +ATOM 2786 HW1 SOL 928 22.651 28.441 20.621 1.00 0.00 H +ATOM 2787 HW2 SOL 928 21.561 27.231 20.551 1.00 0.00 H +ATOM 2788 OW SOL 929 22.441 25.621 23.421 1.00 0.00 O +ATOM 2789 HW1 SOL 929 22.891 24.721 23.391 1.00 0.00 H +ATOM 2790 HW2 SOL 929 21.501 25.511 23.751 1.00 0.00 H +ATOM 2791 OW SOL 930 24.761 19.841 19.791 1.00 0.00 O +ATOM 2792 HW1 SOL 930 25.741 19.621 19.861 1.00 0.00 H +ATOM 2793 HW2 SOL 930 24.451 19.671 18.861 1.00 0.00 H +ATOM 2794 OW SOL 931 0.901 24.521 1.721 1.00 0.00 O +ATOM 2795 HW1 SOL 931 1.181 24.091 2.571 1.00 0.00 H +ATOM 2796 HW2 SOL 931 1.151 25.481 1.731 1.00 0.00 H +ATOM 2797 OW SOL 932 27.841 23.651 27.611 1.00 0.00 O +ATOM 2798 HW1 SOL 932 27.591 23.561 26.651 1.00 0.00 H +ATOM 2799 HW2 SOL 932 28.321 22.831 27.921 1.00 0.00 H +ATOM 2800 OW SOL 933 24.011 19.261 23.741 1.00 0.00 O +ATOM 2801 HW1 SOL 933 23.201 19.271 24.321 1.00 0.00 H +ATOM 2802 HW2 SOL 933 24.041 20.091 23.191 1.00 0.00 H +ATOM 2803 OW SOL 934 21.591 18.971 20.331 1.00 0.00 O +ATOM 2804 HW1 SOL 934 22.081 19.811 20.121 1.00 0.00 H +ATOM 2805 HW2 SOL 934 22.211 18.321 20.781 1.00 0.00 H +ATOM 2806 OW SOL 935 27.971 20.981 23.421 1.00 0.00 O +ATOM 2807 HW1 SOL 935 27.491 21.391 22.641 1.00 0.00 H +ATOM 2808 HW2 SOL 935 28.961 20.961 23.231 1.00 0.00 H +ATOM 2809 OW SOL 936 23.211 30.141 26.031 1.00 0.00 O +ATOM 2810 HW1 SOL 936 22.501 29.871 26.681 1.00 0.00 H +ATOM 2811 HW2 SOL 936 22.951 29.861 25.101 1.00 0.00 H +ATOM 2812 OW SOL 937 28.941 24.111 18.781 1.00 0.00 O +ATOM 2813 HW1 SOL 937 28.531 24.931 18.391 1.00 0.00 H +ATOM 2814 HW2 SOL 937 29.581 24.371 19.511 1.00 0.00 H +ATOM 2815 OW SOL 938 27.281 23.161 25.041 1.00 0.00 O +ATOM 2816 HW1 SOL 938 26.961 23.881 24.421 1.00 0.00 H +ATOM 2817 HW2 SOL 938 27.521 22.351 24.511 1.00 0.00 H +ATOM 2818 OW SOL 939 28.791 19.011 26.151 1.00 0.00 O +ATOM 2819 HW1 SOL 939 28.071 19.061 25.461 1.00 0.00 H +ATOM 2820 HW2 SOL 939 28.551 18.321 26.841 1.00 0.00 H +ATOM 2821 OW SOL 940 1.291 24.371 19.401 1.00 0.00 O +ATOM 2822 HW1 SOL 940 0.751 24.161 20.211 1.00 0.00 H +ATOM 2823 HW2 SOL 940 2.201 23.961 19.491 1.00 0.00 H +ATOM 2824 OW SOL 941 23.891 21.181 21.901 1.00 0.00 O +ATOM 2825 HW1 SOL 941 24.161 20.591 21.151 1.00 0.00 H +ATOM 2826 HW2 SOL 941 23.891 22.131 21.591 1.00 0.00 H +ATOM 2827 OW SOL 942 25.671 29.121 22.301 1.00 0.00 O +ATOM 2828 HW1 SOL 942 25.531 29.191 23.291 1.00 0.00 H +ATOM 2829 HW2 SOL 942 26.511 28.611 22.121 1.00 0.00 H +ATOM 2830 OW SOL 943 22.721 26.751 31.131 1.00 0.00 O +ATOM 2831 HW1 SOL 943 23.581 26.871 31.631 1.00 0.00 H +ATOM 2832 HW2 SOL 943 22.301 25.881 31.401 1.00 0.00 H +ATOM 2833 OW SOL 944 0.131 22.481 0.011 1.00 0.00 O +ATOM 2834 HW1 SOL 944 0.341 23.221 0.651 1.00 0.00 H +ATOM 2835 HW2 SOL 944 -0.759 22.651 -0.419 1.00 0.00 H +ATOM 2836 OW SOL 945 22.291 29.621 23.631 1.00 0.00 O +ATOM 2837 HW1 SOL 945 22.221 30.451 23.071 1.00 0.00 H +ATOM 2838 HW2 SOL 945 22.331 28.821 23.031 1.00 0.00 H +ATOM 2839 OW SOL 946 24.281 23.991 27.271 1.00 0.00 O +ATOM 2840 HW1 SOL 946 24.401 24.651 26.531 1.00 0.00 H +ATOM 2841 HW2 SOL 946 24.741 24.331 28.101 1.00 0.00 H +ATOM 2842 OW SOL 947 24.351 27.321 28.911 1.00 0.00 O +ATOM 2843 HW1 SOL 947 24.791 28.211 28.821 1.00 0.00 H +ATOM 2844 HW2 SOL 947 23.721 27.321 29.681 1.00 0.00 H +ATOM 2845 OW SOL 948 0.991 27.241 29.071 1.00 0.00 O +ATOM 2846 HW1 SOL 948 0.241 27.241 28.411 1.00 0.00 H +ATOM 2847 HW2 SOL 948 1.361 26.321 29.161 1.00 0.00 H +ATOM 2848 OW SOL 949 30.711 23.871 21.371 1.00 0.00 O +ATOM 2849 HW1 SOL 949 30.841 23.031 21.911 1.00 0.00 H +ATOM 2850 HW2 SOL 949 30.421 24.611 21.971 1.00 0.00 H +ATOM 2851 OW SOL 950 21.691 20.751 30.931 1.00 0.00 O +ATOM 2852 HW1 SOL 950 21.461 21.121 31.831 1.00 0.00 H +ATOM 2853 HW2 SOL 950 21.391 19.801 30.871 1.00 0.00 H +ATOM 2854 OW SOL 951 18.991 0.491 0.211 1.00 0.00 O +ATOM 2855 HW1 SOL 951 19.521 0.001 0.891 1.00 0.00 H +ATOM 2856 HW2 SOL 951 19.211 1.471 0.261 1.00 0.00 H +ATOM 2857 OW SOL 952 25.941 24.961 29.261 1.00 0.00 O +ATOM 2858 HW1 SOL 952 26.531 24.701 28.501 1.00 0.00 H +ATOM 2859 HW2 SOL 952 25.661 25.921 29.151 1.00 0.00 H +ATOM 2860 OW SOL 953 21.691 19.251 24.801 1.00 0.00 O +ATOM 2861 HW1 SOL 953 21.581 20.191 25.131 1.00 0.00 H +ATOM 2862 HW2 SOL 953 21.641 18.621 25.571 1.00 0.00 H +ATOM 2863 OW SOL 954 28.851 26.281 28.281 1.00 0.00 O +ATOM 2864 HW1 SOL 954 29.001 26.491 29.241 1.00 0.00 H +ATOM 2865 HW2 SOL 954 28.551 25.331 28.191 1.00 0.00 H +ATOM 2866 OW SOL 955 0.421 27.001 19.041 1.00 0.00 O +ATOM 2867 HW1 SOL 955 0.761 26.071 19.191 1.00 0.00 H +ATOM 2868 HW2 SOL 955 0.601 27.271 18.091 1.00 0.00 H +ATOM 2869 OW SOL 956 21.811 26.721 28.111 1.00 0.00 O +ATOM 2870 HW1 SOL 956 22.741 27.081 28.161 1.00 0.00 H +ATOM 2871 HW2 SOL 956 21.751 25.871 28.631 1.00 0.00 H +ATOM 2872 OW SOL 957 22.011 23.711 28.681 1.00 0.00 O +ATOM 2873 HW1 SOL 957 21.491 22.881 28.511 1.00 0.00 H +ATOM 2874 HW2 SOL 957 22.781 23.761 28.041 1.00 0.00 H +ATOM 2875 OW SOL 958 28.641 26.581 31.001 1.00 0.00 O +ATOM 2876 HW1 SOL 958 29.051 26.261 31.861 1.00 0.00 H +ATOM 2877 HW2 SOL 958 27.681 26.311 30.971 1.00 0.00 H +ATOM 2878 OW SOL 959 19.021 24.061 29.761 1.00 0.00 O +ATOM 2879 HW1 SOL 959 19.871 23.731 29.351 1.00 0.00 H +ATOM 2880 HW2 SOL 959 19.151 24.211 30.741 1.00 0.00 H +ATOM 2881 OW SOL 960 26.771 24.341 21.871 1.00 0.00 O +ATOM 2882 HW1 SOL 960 26.841 23.451 21.411 1.00 0.00 H +ATOM 2883 HW2 SOL 960 25.831 24.681 21.791 1.00 0.00 H +ATOM 2884 OW SOL 961 25.331 23.261 0.081 1.00 0.00 O +ATOM 2885 HW1 SOL 961 24.991 22.371 -0.219 1.00 0.00 H +ATOM 2886 HW2 SOL 961 25.591 23.801 -0.719 1.00 0.00 H +ATOM 2887 OW SOL 962 23.351 23.621 20.531 1.00 0.00 O +ATOM 2888 HW1 SOL 962 23.961 24.421 20.571 1.00 0.00 H +ATOM 2889 HW2 SOL 962 22.401 23.931 20.601 1.00 0.00 H +ATOM 2890 OW SOL 963 0.861 29.211 30.961 1.00 0.00 O +ATOM 2891 HW1 SOL 963 1.101 28.581 30.221 1.00 0.00 H +ATOM 2892 HW2 SOL 963 -0.039 29.611 30.781 1.00 0.00 H +ATOM 2893 OW SOL 964 19.451 31.201 28.841 1.00 0.00 O +ATOM 2894 HW1 SOL 964 19.401 31.191 29.841 1.00 0.00 H +ATOM 2895 HW2 SOL 964 18.621 30.791 28.461 1.00 0.00 H +ATOM 2896 OW SOL 965 0.191 27.891 25.341 1.00 0.00 O +ATOM 2897 HW1 SOL 965 0.791 27.081 25.361 1.00 0.00 H +ATOM 2898 HW2 SOL 965 0.591 28.581 24.741 1.00 0.00 H +ATOM 2899 OW SOL 966 21.251 21.881 25.821 1.00 0.00 O +ATOM 2900 HW1 SOL 966 20.461 22.391 25.481 1.00 0.00 H +ATOM 2901 HW2 SOL 966 21.161 21.731 26.801 1.00 0.00 H +ATOM 2902 OW SOL 967 26.841 28.641 1.111 1.00 0.00 O +ATOM 2903 HW1 SOL 967 27.241 28.631 0.191 1.00 0.00 H +ATOM 2904 HW2 SOL 967 26.941 29.561 1.511 1.00 0.00 H +ATOM 2905 OW SOL 968 27.781 27.721 21.531 1.00 0.00 O +ATOM 2906 HW1 SOL 968 28.411 28.101 20.851 1.00 0.00 H +ATOM 2907 HW2 SOL 968 28.181 26.891 21.921 1.00 0.00 H +ATOM 2908 OW SOL 969 29.011 29.601 25.581 1.00 0.00 O +ATOM 2909 HW1 SOL 969 28.311 29.131 26.121 1.00 0.00 H +ATOM 2910 HW2 SOL 969 29.601 28.921 25.151 1.00 0.00 H +ATOM 2911 OW SOL 970 28.761 20.981 28.331 1.00 0.00 O +ATOM 2912 HW1 SOL 970 28.681 20.621 27.401 1.00 0.00 H +ATOM 2913 HW2 SOL 970 28.741 20.221 28.981 1.00 0.00 H +ATOM 2914 OW SOL 971 19.371 22.071 18.951 1.00 0.00 O +ATOM 2915 HW1 SOL 971 18.451 21.791 18.661 1.00 0.00 H +ATOM 2916 HW2 SOL 971 19.681 22.841 18.391 1.00 0.00 H +ATOM 2917 OW SOL 972 19.341 20.281 21.801 1.00 0.00 O +ATOM 2918 HW1 SOL 972 19.171 21.111 21.261 1.00 0.00 H +ATOM 2919 HW2 SOL 972 20.241 19.911 21.581 1.00 0.00 H +ATOM 2920 OW SOL 973 30.871 21.871 23.111 1.00 0.00 O +ATOM 2921 HW1 SOL 973 31.521 21.131 23.001 1.00 0.00 H +ATOM 2922 HW2 SOL 973 31.071 22.371 23.951 1.00 0.00 H +ATOM 2923 OW SOL 974 24.561 26.071 25.141 1.00 0.00 O +ATOM 2924 HW1 SOL 974 25.061 26.921 24.951 1.00 0.00 H +ATOM 2925 HW2 SOL 974 23.681 26.091 24.661 1.00 0.00 H +ATOM 2926 OW SOL 975 27.211 28.181 27.231 1.00 0.00 O +ATOM 2927 HW1 SOL 975 27.751 27.491 27.711 1.00 0.00 H +ATOM 2928 HW2 SOL 975 26.891 28.871 27.891 1.00 0.00 H +ATOM 2929 OW SOL 976 29.451 28.461 19.491 1.00 0.00 O +ATOM 2930 HW1 SOL 976 29.221 28.991 18.671 1.00 0.00 H +ATOM 2931 HW2 SOL 976 30.261 27.901 19.301 1.00 0.00 H +ATOM 2932 OW SOL 977 19.411 31.021 25.151 1.00 0.00 O +ATOM 2933 HW1 SOL 977 19.401 30.551 26.031 1.00 0.00 H +ATOM 2934 HW2 SOL 977 20.231 30.741 24.641 1.00 0.00 H +ATOM 2935 OW SOL 978 22.901 22.861 23.821 1.00 0.00 O +ATOM 2936 HW1 SOL 978 23.201 22.141 23.201 1.00 0.00 H +ATOM 2937 HW2 SOL 978 22.511 22.461 24.651 1.00 0.00 H +ATOM 2938 OW SOL 979 1.631 20.761 29.741 1.00 0.00 O +ATOM 2939 HW1 SOL 979 2.151 20.111 30.291 1.00 0.00 H +ATOM 2940 HW2 SOL 979 1.141 21.391 30.351 1.00 0.00 H +ATOM 2941 OW SOL 980 28.631 18.961 30.161 1.00 0.00 O +ATOM 2942 HW1 SOL 980 28.001 18.241 29.851 1.00 0.00 H +ATOM 2943 HW2 SOL 980 29.561 18.601 30.161 1.00 0.00 H +ATOM 2944 OW SOL 981 26.321 0.691 21.631 1.00 0.00 O +ATOM 2945 HW1 SOL 981 25.861 -0.179 21.801 1.00 0.00 H +ATOM 2946 HW2 SOL 981 27.231 0.661 22.041 1.00 0.00 H +ATOM 2947 OW SOL 982 0.911 19.141 20.301 1.00 0.00 O +ATOM 2948 HW1 SOL 982 1.261 18.731 19.461 1.00 0.00 H +ATOM 2949 HW2 SOL 982 0.011 18.761 20.501 1.00 0.00 H +ATOM 2950 OW SOL 983 0.391 23.151 25.531 1.00 0.00 O +ATOM 2951 HW1 SOL 983 -0.199 23.951 25.571 1.00 0.00 H +ATOM 2952 HW2 SOL 983 0.541 22.801 26.461 1.00 0.00 H +ATOM 2953 OW SOL 984 19.011 29.391 21.621 1.00 0.00 O +ATOM 2954 HW1 SOL 984 20.001 29.281 21.531 1.00 0.00 H +ATOM 2955 HW2 SOL 984 18.611 28.531 21.941 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_interface_energy_forces/input.in b/examples/latte_interface_energy_forces/input.in new file mode 100644 index 00000000..cdcdf9d2 --- /dev/null +++ b/examples/latte_interface_energy_forces/input.in @@ -0,0 +1,26 @@ +#Input file for SEDACS + +Verbosity= True +Threshold= 1.0E-7 +#CoordsFile= coords_1299.pdb +CoordsFile= wat2.xyz +#CoordsFile= algo.xyz +#CoordsFile= coords_2955.pdb +#CoordsFile= coords_100.pdb +#CoordsFile= water_128.xyz +GraphThreshold= 0.01 +MaxDeg= 500 #Max graph degree +Rcut= 3.0 #Radius cutoff +PartitionType= Metis +#PartitionType= Regular +#PartitionType= MinCut +NumParts= 1 +SCFTol= 1.0E-6 +Overlap= True +ElectronicTemperature= 1000 +MuCalculationType= #FromParts, Dynamical, None +Orbitals= {"H":1,"O":4} #This has to be know for each engine +NumAdaptiveIter= 100 #Number of graph adaptive iterations +Engine= {"Name":"LATTE","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/python/","Executable":"/home/cnegre/","RhoSolverMethod":"Diag","Accelerator":"No","AcceleratorPath":"/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/nvda"} #The name of the external code +#Engine= {"Name":"ProxyAFortran","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/fortran/","Executable":"/home/cnegre/"} #The name of the external code + diff --git a/examples/latte_interface_energy_forces/latte.in b/examples/latte_interface_energy_forces/latte.in new file mode 100644 index 00000000..99342abb --- /dev/null +++ b/examples/latte_interface_energy_forces/latte.in @@ -0,0 +1,57 @@ + +#General controls +CONTROL{ + XCONTROL= 1 + BASISTYPE= NONORTHO + DEBUGON= 0 + FERMIM= 6 + CGORLIB= 1 CGTOL= 1.0e-6 + KBT= 0.0 + NORECS= 1 + PARAMPATH= '../../parameters/latte/TBparam/' + ENTROPYKIND= 1 + PPOTON= 1 VDWON= 0 + SPINON= 0 SPINTOL= 1.0e-4 + ELECTRO= 1 ELECMETH= 0 ELEC_ETOL= 0.001 ELEC_QTOL= 1.0e-4 + COULACC= 1.0e-6 COULCUT= -500.0 COULR1= 500.0 + MAXSCF= 1 + BREAKTOL= 1.0E-12 MINSP2ITER= 22 SP2CONV= REL + FULLQCONV= 0 QITER= 0 + QMIX= 0.25 SPINMIX= 0.25 MDMIX= 0.25 + ORDERNMOL= 0 + SPARSEON= 0 THRESHOLDON= 1 NUMTHRESH= 1.0e-6 FILLINSTOP= 100 BLKSZ= 4 + MSPARSE= 3000 + LCNON= 0 LCNITER= 4 CHTOL= 0.01 + SKIN= 1.0 + RELAX= 0 RELAXTYPE= SD MAXITER= 100 RLXFTOL= 0.00001 + MDON= 1 + PBCON= 1 + RESTART= 0 + CHARGE= 0 + XBO= 1 + XBODISON= 1 + XBODISORDER= 5 + NGPU= 2 + KON= 0 + COMPFORCE= 1 + DOSFIT= 0 INTS2FIT= 1 BETA= 1000.0 NFITSTEP= 5000 QFIT= 0 MCSIGMA= 0.2 + PPFITON= 0 + ALLFITON= 0 + PPSTEP= 500 BISTEP= 500 PP2FIT= 2 BINT2FIT= 6 + PPBETA= 1000.0 PPSIGMA= 0.01 PPNMOL= 10 PPNGEOM= 200 + PARREP= 0 + ER= 1.0 + VERBOSE= 3 + DOKERNEL= F + KBT= 0.086 +} + +#Controls for QMD +MDCONTROL{ + MAXITER= -1 +} + +MIXER{ + Verbose= 10 +} + diff --git a/examples/latte_interface_energy_forces/main.py b/examples/latte_interface_energy_forces/main.py new file mode 100644 index 00000000..106abc40 --- /dev/null +++ b/examples/latte_interface_energy_forces/main.py @@ -0,0 +1,34 @@ +"""Main sedacs prototype driver to perform a +graph-based addaptive construction of the density +matrix together with a full self-consistent charge +optimization""" + +import sys + +import numpy as np +from sedacs.driver.graph_adaptive_scf import get_adaptiveSCFDM +from sedacs.driver.graph_adaptive_sp_energy_forces import get_sp_energy_forces +from sedacs.driver.init import get_args, init +from sedacs.charges import get_charges +import sedacs.globals as gl + +# Pass arguments from comand line +args = get_args() + +# Initialize sedacs + +np.set_printoptions(threshold=sys.maxsize) + +# Initialize sdc parameters +sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init(args) + +sdc.verb = True + +# Perform a graph-adaptive calculation of the density matrix +mu = 0.0 +graphDH,sy.charges,mu,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu) + +graphDH,sy.charges,EPOT,FTOT,mu,parts,subSysOnRank = get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu) + +print("total energy:", EPOT) +print("forces:", FTOT) diff --git a/examples/latte_interface_energy_forces/vars b/examples/latte_interface_energy_forces/vars new file mode 100644 index 00000000..c6116796 --- /dev/null +++ b/examples/latte_interface_energy_forces/vars @@ -0,0 +1,21 @@ +#!/bin/bash +THIS_PATH=`pwd` +export PYTHONPATH="" +MOD_PATH=$THIS_PATH/../../src/sedacs/ +MOD_PATH1=$THIS_PATH/../../src/ +MOD_PATH2=$THIS_PATH/../../src/sedacs/driver +PROXYA_FORTRAN_PATH=$THIS_PATH/../../proxies/fortran/build/ +PROXYA_PYTHON_FILES=$THIS_PATH/../../proxies/python/ +PROXYA_PYTHON_FOLDER=$THIS_PATH/../../ +PROGRESS_PATH=$HOME/qmd-progress/install/lib64/ +BML_PATH=$HOME/bml/install/lib64/ +export PROXYA_FORTRAN_PATH=$PROXYA_FORTRAN_PATH +export PROXYA_PYTHON_PATH=$PROXYA_PYTHON_PATH +export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$MOD_PATH1:$MOD_PATH2:$PROGRESS_PATH:$BML_PATH:$PROXYA_PYTHON_FOLDER:$PROXYA_PYTHON_FILES:$PROXYA_FORTRAN_PATH +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROGRESS_PATH:$BML_PATH +export PYTHONWARNINGS="ignore:Unverified HTTPS request" + +GPU_PATH=$THIS_PATH/../../src/sedacs/gpu +echo $GPU_PATH +export PYTHONPATH=$PYTHONPATH:$GPU_PATH + diff --git a/examples/latte_interface_energy_forces/wat.pdb b/examples/latte_interface_energy_forces/wat.pdb new file mode 100644 index 00000000..034d516a --- /dev/null +++ b/examples/latte_interface_energy_forces/wat.pdb @@ -0,0 +1,9 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 50.459 50.459 50.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.749 -0.000 0.442 0.00 0.00 H +ATOM 2 O MOL 1 0.000 0.020 -0.165 0.00 0.00 O +ATOM 3 H MOL 1 -0.749 -0.000 0.442 0.00 0.00 H +TER +END diff --git a/examples/latte_interface_energy_forces/wat.xyz b/examples/latte_interface_energy_forces/wat.xyz new file mode 100644 index 00000000..1f469a46 --- /dev/null +++ b/examples/latte_interface_energy_forces/wat.xyz @@ -0,0 +1,5 @@ +3 +Lattice="110.00 0.0 0.0 0.0 110.00 0.0 0.0 0.0 110.00" +H 0.7493682 0.0000000 0.4424329 +O 0.0000000 0.0000000 -0.1653507 +H -0.7493682 0.0000000 0.4424329 diff --git a/examples/latte_interface_energy_forces/water_128.xyz b/examples/latte_interface_energy_forces/water_128.xyz new file mode 100644 index 00000000..ddf850a9 --- /dev/null +++ b/examples/latte_interface_energy_forces/water_128.xyz @@ -0,0 +1,386 @@ +384 +Lattice="15.66 0.0 0.0 0.0 15.66 0.0 0.0 0.0 15.66" +H 1.4821741580963135 14.427353858947754 2.953700065612793 +O 1.6885966062545776 15.210265159606934 2.3970494270324707 +H 2.3674094676971436 14.887577056884766 1.7750413417816162 +H 1.725602626800537 1.2087194919586182 10.28447151184082 +O 1.457163691520691 0.2813889980316162 10.563945770263672 +H 1.375484585762024 0.24449187517166138 11.546887397766113 +H 12.558568954467773 14.682812690734863 9.085963249206543 +O 13.374778747558594 15.202472686767578 8.868748664855957 +H 14.192708969116211 14.738236427307129 9.219833374023438 +H 6.220971584320068 10.90986442565918 3.922910690307617 +O 5.395566463470459 11.367801666259766 3.851719856262207 +H 5.097456455230713 11.388015747070312 2.87663197517395 +H 13.928208351135254 6.038353443145752 1.3187469244003296 +O 14.39126968383789 6.452458381652832 0.5244671106338501 +H 14.677336692810059 5.6653947830200195 15.641419410705566 +H 11.000219345092773 1.4569547176361084 0.45885026454925537 +O 11.63747501373291 2.104846715927124 0.8563565611839294 +H 12.253790855407715 1.5968525409698486 1.4643044471740723 +H 8.34492301940918 10.484837532043457 4.09354305267334 +O 7.658782958984375 9.694025039672852 4.098236560821533 +H 8.161250114440918 8.91158390045166 4.3958234786987305 +H 15.37078857421875 9.183189392089844 11.81903076171875 +O 0.6639226675033569 9.312712669372559 11.556085586547852 +H 1.1555242538452148 8.781630516052246 12.177814483642578 +H 2.469231367111206 4.930058479309082 6.316625118255615 +O 1.8953945636749268 5.428220272064209 6.90617036819458 +H 1.317298173904419 4.663173198699951 7.2908854484558105 +H 4.391626834869385 1.8281409740447998 2.7765512466430664 +O 5.01270055770874 1.8962875604629517 2.043304443359375 +H 4.4229350090026855 2.101100444793701 1.224356770515442 +H 11.354153633117676 9.732658386230469 1.4163808822631836 +O 12.010466575622559 10.312472343444824 1.0070639848709106 +H 12.736639022827148 9.787837982177734 0.45557060837745667 +H 15.223688125610352 4.653311729431152 13.862953186035156 +O 14.768438339233398 4.34467887878418 14.679522514343262 +H 13.97741413116455 3.8146629333496094 14.375483512878418 +H 2.5933477878570557 2.2602338790893555 4.078963756561279 +O 3.5907583236694336 1.9742355346679688 4.357860565185547 +H 3.4221041202545166 1.4155670404434204 5.144217491149902 +H 11.827882766723633 5.23652458190918 12.129922866821289 +O 11.420333862304688 4.348351001739502 12.450085639953613 +H 11.13693618774414 3.948350667953491 11.59998893737793 +H 3.122493267059326 14.13240909576416 15.377690315246582 +O 3.406907320022583 13.9873685836792 0.637580156326294 +H 4.268272399902344 14.468565940856934 0.7348317503929138 +H 11.982939720153809 3.2170681953430176 6.133591651916504 +O 12.74484920501709 3.6578142642974854 6.557803630828857 +H 12.507513046264648 4.57366418838501 6.91209077835083 +H 4.577542304992676 5.402759075164795 0.7480008006095886 +O 3.8300294876098633 5.114811420440674 0.15346001088619232 +H 3.705512046813965 5.906427383422852 15.198246002197266 +H 4.8761677742004395 2.076591730117798 14.366914749145508 +O 5.596246242523193 1.586893081665039 13.9247465133667 +H 5.811666965484619 2.142857551574707 13.113996505737305 +H 13.377649307250977 1.042777180671692 9.423595428466797 +O 13.151018142700195 1.8292531967163086 10.050421714782715 +H 13.835417747497559 2.495191812515259 9.988792419433594 +H 7.997742176055908 11.266412734985352 9.060665130615234 +O 8.366767883300781 10.735424995422363 8.289185523986816 +H 7.682319641113281 10.126465797424316 8.000984191894531 +H 6.61982536315918 5.436073303222656 1.7336512804031372 +O 5.908255577087402 6.083886623382568 1.5545637607574463 +H 5.400964736938477 6.177191257476807 2.360203504562378 +H 13.306570053100586 8.240872383117676 12.238951683044434 +O 13.812541961669922 8.967954635620117 12.561972618103027 +H 13.299116134643555 9.732105255126953 12.134977340698242 +H 13.150106430053711 10.962871551513672 2.506638765335083 +O 13.738313674926758 11.23777961730957 3.2231998443603516 +H 14.14203929901123 12.027764320373535 2.7478020191192627 +H 9.468901634216309 8.692893028259277 11.753732681274414 +O 9.996575355529785 8.272689819335938 11.04357624053955 +H 9.358142852783203 7.589511394500732 10.609314918518066 +H 9.184500694274902 12.010608673095703 3.185051918029785 +O 9.332493782043457 11.644781112670898 4.082911014556885 +H 10.308004379272461 11.81727123260498 4.252378463745117 +H 14.13718318939209 3.084084987640381 6.320530414581299 +O 15.026741027832031 2.7198779582977295 6.185760021209717 +H 15.581278800964355 2.8094310760498047 7.003511428833008 +H 1.805783987045288 13.039594650268555 13.465221405029297 +O 1.2811273336410522 12.223275184631348 13.247485160827637 +H 0.8052940368652344 11.954380989074707 14.096330642700195 +H 8.574115753173828 12.27851676940918 1.1447495222091675 +O 9.307392120361328 12.729674339294434 1.5993788242340088 +H 8.992727279663086 13.581256866455078 1.8648567199707031 +H 0.4504242539405823 2.9571290016174316 4.610954761505127 +O 1.1356279850006104 2.80627703666687 3.858980894088745 +H 0.6570261716842651 2.2529356479644775 3.161118984222412 +H 2.2259984016418457 1.135374665260315 7.197758197784424 +O 2.8197834491729736 0.5862197875976562 6.640344619750977 +H 3.361316680908203 0.13465867936611176 7.2745137214660645 +H 2.7605855464935303 3.5155222415924072 10.508090019226074 +O 2.7270185947418213 2.7197012901306152 9.998039245605469 +H 3.6602747440338135 2.449582576751709 9.736455917358398 +H 5.481457233428955 0.6800147891044617 1.2360972166061401 +O 5.735907077789307 15.55340576171875 0.6875582933425903 +H 5.908614158630371 0.24427083134651184 15.490666389465332 +H 6.483280658721924 6.651552677154541 12.702972412109375 +O 6.861117839813232 5.836682319641113 12.391767501831055 +H 7.664957046508789 5.7625226974487305 13.000656127929688 +H 5.648747444152832 3.2264184951782227 8.506119728088379 +O 5.52994966506958 2.848599910736084 9.409486770629883 +H 6.039980888366699 2.0285658836364746 9.292366981506348 +H 12.85450553894043 6.765137195587158 10.680105209350586 +O 12.331360816955566 6.957432270050049 11.530010223388672 +H 11.486471176147461 7.264204025268555 11.158045768737793 +H 7.362239837646484 9.154353141784668 0.3254317045211792 +O 7.498302459716797 9.510848999023438 15.109041213989258 +H 8.419239044189453 9.094351768493652 14.665138244628906 +H 1.5374337434768677 4.2605109214782715 2.7824814319610596 +O 1.6234899759292603 5.16341495513916 2.2621734142303467 +H 2.4345974922180176 5.093528747558594 1.753399133682251 +H 13.98061466217041 13.565018653869629 0.982430636882782 +O 13.24919319152832 14.127765655517578 0.6269434690475464 +H 12.569368362426758 13.48637866973877 0.3310380280017853 +H 3.5146663188934326 10.071371078491211 1.0377812385559082 +O 2.739107131958008 9.517007827758789 0.8543626070022583 +H 2.8032007217407227 8.92596435546875 1.6306871175765991 +H 3.2404215335845947 9.397064208984375 7.563103199005127 +O 3.697007656097412 10.221046447753906 7.237059116363525 +H 3.5571937561035156 10.893165588378906 7.9507975578308105 +H 9.887673377990723 12.222174644470215 12.364692687988281 +O 9.317317962646484 13.004202842712402 11.984381675720215 +H 9.826249122619629 13.767129898071289 12.294698715209961 +H 14.60256576538086 1.0523858070373535 6.485602855682373 +O 14.413382530212402 0.06270215660333633 6.496177673339844 +H 14.147909164428711 15.534577369689941 7.447587966918945 +H 13.379937171936035 6.094424724578857 8.554449081420898 +O 13.894918441772461 6.2347235679626465 9.342596054077148 +H 14.61241626739502 6.858521938323975 9.085838317871094 +H 8.004314422607422 12.405964851379395 11.07300090789795 +O 7.369335651397705 12.221914291381836 10.350719451904297 +H 6.828718185424805 13.049220085144043 10.023193359375 +H 6.5086822509765625 14.756935119628906 4.994861602783203 +O 6.839446544647217 15.60968017578125 4.6459126472473145 +H 6.100698471069336 0.509876012802124 4.77648401260376 +H 1.814298391342163 7.485466480255127 14.199212074279785 +O 0.9792758822441101 7.4431376457214355 13.722976684570312 +H 0.34630855917930603 7.4032135009765625 14.47954273223877 +H 6.28085994720459 13.820106506347656 13.516830444335938 +O 6.905226230621338 13.168272972106934 13.857548713684082 +H 7.748592376708984 13.196846961975098 13.40528678894043 +H 2.5069146156311035 11.916142463684082 9.840462684631348 +O 2.6829140186309814 12.13232135772705 8.878107070922852 +H 1.8113011121749878 12.242073059082031 8.437335968017578 +H 14.037789344787598 9.845786094665527 4.642851829528809 +O 13.800369262695312 9.396403312683105 5.5100417137146 +H 14.389450073242188 8.535675048828125 5.423510551452637 +H 12.178966522216797 3.552061080932617 13.457749366760254 +O 12.67518424987793 2.939744710922241 14.132843971252441 +H 12.050117492675781 2.740718126296997 14.851271629333496 +H 6.341159820556641 4.153588771820068 12.246420860290527 +O 5.721994876861572 3.38653564453125 12.11013412475586 +H 5.833896160125732 3.1198267936706543 11.189043045043945 +H 0.4187822639942169 6.928407669067383 5.925801753997803 +O 15.306794166564941 7.189908027648926 5.43982458114624 +H 0.07627714425325394 7.3125996589660645 4.559133529663086 +H 15.205296516418457 13.601235389709473 10.856249809265137 +O 15.426885604858398 14.0115385055542 9.955629348754883 +H 0.4404774010181427 14.725579261779785 10.123786926269531 +H 7.781744480133057 6.341546058654785 10.87021255493164 +O 8.193033218383789 6.693912982940674 10.09223461151123 +H 7.419920921325684 6.874934673309326 9.521349906921387 +H 4.713289260864258 13.532459259033203 7.1375813484191895 +O 4.18504524230957 13.934209823608398 7.856135368347168 +H 3.663506269454956 13.236863136291504 8.294808387756348 +H 1.4324342012405396 7.933252811431885 8.537219047546387 +O 2.39997935295105 7.775256156921387 8.192770004272461 +H 2.2801403999328613 6.949921607971191 7.6617207527160645 +H 0.5963254570960999 6.013045310974121 12.672981262207031 +O 0.5425719022750854 4.989353179931641 12.51000690460205 +H 1.4733445644378662 4.74129056930542 12.26429271697998 +H 5.787660598754883 12.561777114868164 4.9811110496521 +O 5.850313663482666 13.304183006286621 5.696791172027588 +H 6.695471286773682 13.148829460144043 6.1641845703125 +H 9.32719898223877 8.223834991455078 1.8639791011810303 +O 10.29822063446045 8.110273361206055 1.9925719499588013 +H 10.310250282287598 7.87868595123291 2.945894479751587 +H 0.277807354927063 3.5526158809661865 8.722700119018555 +O 0.9846296906471252 3.210406541824341 8.203073501586914 +H 1.7031030654907227 3.0266921520233154 8.867362976074219 +H 2.8105833530426025 2.196861982345581 15.392070770263672 +O 3.735032796859741 2.4994215965270996 15.570079803466797 +H 3.644773006439209 3.4426615238189697 0.03853387013077736 +H 14.682604789733887 1.0238474607467651 2.0653231143951416 +O 15.566673278808594 1.3636430501937866 1.7907549142837524 +H 0.5717520117759705 0.6591038703918457 1.8086328506469727 +H 11.107076644897461 8.861739158630371 7.134167671203613 +O 11.434098243713379 8.342004776000977 6.366227149963379 +H 12.278743743896484 8.585103988647461 6.036701679229736 +H 6.849724292755127 2.226242780685425 14.659040451049805 +O 7.6959028244018555 2.413717269897461 15.109258651733398 +H 8.172039031982422 3.1463210582733154 14.650622367858887 +H 4.415694236755371 12.286710739135742 1.0233668088912964 +O 4.88289213180542 11.490494728088379 1.3367034196853638 +H 5.81308126449585 11.642242431640625 0.9043989777565002 +H 10.558619499206543 9.060455322265625 9.619710922241211 +O 10.549599647521973 9.386129379272461 8.682696342468262 +H 9.6725492477417 9.819774627685547 8.593550682067871 +H 6.1465864181518555 15.147404670715332 9.628643035888672 +O 5.529297351837158 14.445521354675293 9.938332557678223 +H 4.890136241912842 14.265419006347656 9.203654289245605 +H 12.137746810913086 14.339106559753418 4.88058614730835 +O 12.554288864135742 15.224326133728027 4.790942668914795 +H 13.392069816589355 15.262238502502441 5.262670993804932 +H 12.538585662841797 4.795741558074951 2.6958494186401367 +O 13.156197547912598 5.574193000793457 2.774204730987549 +H 13.542095184326172 5.429687976837158 3.6601510047912598 +H 1.6302706003189087 14.983660697937012 5.979812145233154 +O 0.8948200941085815 14.330414772033691 6.0626373291015625 +H 0.1337418407201767 14.884979248046875 6.267165660858154 +H 4.088843822479248 7.9247822761535645 14.16343879699707 +O 3.351106643676758 7.655316352844238 14.735418319702148 +H 3.2007994651794434 8.391205787658691 15.35331916809082 +H 0.15970730781555176 12.594325065612793 2.4045615196228027 +O 15.217007637023926 12.903790473937988 1.7151750326156616 +H 15.467392921447754 12.415807723999023 0.8731029033660889 +H 10.299698829650879 7.86765193939209 5.2782793045043945 +O 9.465031623840332 7.6437177658081055 4.793709754943848 +H 9.516728401184082 6.686868667602539 4.577350616455078 +H 11.606966972351074 11.700885772705078 0.35497593879699707 +O 11.372387886047363 12.519648551940918 15.574257850646973 +H 10.634315490722656 12.839116096496582 0.46611565351486206 +H 8.778069496154785 1.2632012367248535 15.487536430358887 +O 9.388166427612305 0.5421920418739319 0.13583745062351227 +H 9.037282943725586 0.09930628538131714 0.9319953322410583 +H 6.16838264465332 5.261773586273193 7.558151721954346 +O 6.098697662353516 4.416169166564941 7.145912170410156 +H 7.055895805358887 4.16866397857666 7.010154724121094 +H 7.392298221588135 10.838863372802734 15.570189476013184 +O 7.205356597900391 11.764328956604004 0.33388379216194153 +H 7.023780345916748 12.40236759185791 15.264869689941406 +H 8.928775787353516 4.274104595184326 5.8341803550720215 +O 8.753131866455078 3.6826674938201904 6.5963945388793945 +H 8.974727630615234 2.730682373046875 6.358644008636475 +H 0.35756778717041016 3.3287155628204346 15.077012062072754 +O 0.9291011691093445 2.5445761680603027 15.223231315612793 +H 0.5748293399810791 2.0781967639923096 0.3547714650630951 +H 4.015512466430664 3.467869758605957 4.926387310028076 +O 4.089820861816406 4.415233612060547 5.229217529296875 +H 4.887458801269531 4.509295463562012 5.778048038482666 +H 5.291957855224609 14.813364028930664 11.435693740844727 +O 5.140069007873535 14.953418731689453 12.421006202697754 +H 5.216044902801514 0.23042252659797668 12.654684066772461 +H 13.444220542907715 11.729223251342773 11.851582527160645 +O 12.642805099487305 11.136754989624023 11.598742485046387 +H 12.548523902893066 11.20355224609375 10.628812789916992 +H 9.697056770324707 15.593395233154297 14.027965545654297 +O 10.087967872619629 15.423428535461426 13.162454605102539 +H 11.05064868927002 0.002158439252525568 13.155196189880371 +H 2.523853063583374 11.595932006835938 12.188504219055176 +O 2.7947349548339844 11.257299423217773 11.32616901397705 +H 2.0624139308929443 10.607105255126953 11.156081199645996 +H 13.958531379699707 8.130409240722656 15.528944969177246 +O 13.822677612304688 9.02670955657959 15.227170944213867 +H 13.791452407836914 9.062285423278809 14.228338241577148 +H 10.27184772491455 9.424518585205078 13.943780899047852 +O 9.732276916503906 8.618180274963379 14.051572799682617 +H 10.166350364685059 8.033967971801758 14.658818244934082 +H 8.461220741271973 12.057075500488281 7.043845176696777 +O 8.419132232666016 12.80543041229248 6.415385723114014 +H 8.736284255981445 12.338397979736328 5.5919036865234375 +H 8.171420097351074 0.7793318033218384 5.426231861114502 +O 8.820952415466309 1.2351326942443848 6.013558864593506 +H 9.01926326751709 0.6126450300216675 6.739671230316162 +H 2.0820090770721436 7.869522571563721 3.1253793239593506 +O 2.9208269119262695 8.372122764587402 3.1731083393096924 +H 2.627509355545044 9.106399536132812 3.720787525177002 +H 11.650372505187988 10.628031730651855 8.698492050170898 +O 12.256834030151367 11.429168701171875 8.799505233764648 +H 13.083629608154297 11.129518508911133 8.284788131713867 +H 13.960386276245117 14.537196159362793 14.816256523132324 +O 14.3788480758667 14.84691047668457 13.965582847595215 +H 13.691018104553223 15.364837646484375 13.521903038024902 +H 11.58198356628418 1.196730613708496 5.081545829772949 +O 11.163005828857422 2.0494470596313477 5.276447772979736 +H 10.318563461303711 1.797735571861267 5.718932151794434 +H 6.0017476081848145 10.59385871887207 10.80034065246582 +O 5.272309303283691 10.05134105682373 11.150882720947266 +H 4.443428039550781 10.651139259338379 11.057957649230957 +H 12.516849517822266 11.899116516113281 4.271182060241699 +O 11.869437217712402 12.347843170166016 4.853531837463379 +H 12.166669845581055 12.171024322509766 5.7557244300842285 +H 15.470584869384766 4.516737461090088 11.073837280273438 +O 15.1124849319458 4.111335277557373 10.25562858581543 +H 14.591557502746582 4.877866744995117 9.938982963562012 +H 15.495829582214355 12.599084854125977 12.530135154724121 +O 14.549777030944824 12.876575469970703 12.166041374206543 +H 14.274829864501953 13.484247207641602 12.92894172668457 +H 4.544622421264648 5.858673572540283 4.278730869293213 +O 4.853733062744141 6.651581287384033 3.80159854888916 +H 4.038316249847412 7.112107276916504 3.6127209663391113 +H 11.086899757385254 2.9105334281921387 3.527799129486084 +O 11.044354438781738 3.5479931831359863 2.813129425048828 +H 11.100714683532715 3.017974376678467 2.005096435546875 +H 11.167326927185059 5.955437660217285 0.33261048793792725 +O 10.39560604095459 6.435065746307373 0.020402710884809494 +H 10.094603538513184 6.954756259918213 0.794249415397644 +H 5.193816661834717 9.804295539855957 7.193893909454346 +O 6.119728088378906 9.39712905883789 7.226724624633789 +H 6.320915699005127 9.148200988769531 6.31579065322876 +H 10.59584903717041 3.775369882583618 9.694656372070312 +O 10.687355041503906 2.999478340148926 10.27226734161377 +H 11.493496894836426 2.6317555904388428 9.933670043945312 +H 9.679096221923828 4.952756404876709 13.074913024902344 +O 8.934259414672852 4.986400127410889 13.691017150878906 +H 9.434240341186523 5.47733211517334 14.371708869934082 +H 3.9072349071502686 4.0586981773376465 11.940484046936035 +O 3.154937267303467 4.696625709533691 12.053990364074707 +H 3.5881435871124268 5.517663955688477 11.802338600158691 +H 0.2335490584373474 0.01581624709069729 13.774118423461914 +O 0.980350911617279 0.5342038869857788 13.378776550292969 +H 0.9922274947166443 1.4501113891601562 13.837281227111816 +H 12.65897274017334 0.9930011630058289 11.683954238891602 +O 12.707582473754883 0.764843225479126 12.696332931518555 +H 12.694315910339355 1.5772038698196411 13.278538703918457 +H 10.812484741210938 11.850899696350098 14.067712783813477 +O 10.624994277954102 11.294839859008789 13.30173397064209 +H 11.430129051208496 11.36072826385498 12.707429885864258 +H 7.020813941955566 7.331269264221191 1.747533917427063 +O 7.554996013641357 8.1338529586792 1.842114806175232 +H 7.4181599617004395 8.49007797241211 2.763763666152954 +H 11.144770622253418 5.892538547515869 8.100217819213867 +O 12.011418342590332 6.053420543670654 7.622436046600342 +H 11.807604789733887 6.768427848815918 7.026505947113037 +H 0.804131269454956 13.10036849975586 4.533726215362549 +O 1.1628715991973877 12.663919448852539 3.6855170726776123 +H 1.7346456050872803 11.923086166381836 3.9333012104034424 +H 9.218413352966309 1.9028451442718506 10.826943397521973 +O 8.582201957702637 1.300583004951477 11.322752952575684 +H 9.201321601867676 0.7191085815429688 11.809184074401855 +H 3.442178726196289 14.570088386535645 13.23493766784668 +O 2.64837646484375 14.339696884155273 13.757745742797852 +H 2.056213617324829 15.07002067565918 13.468094825744629 +H 6.184440612792969 8.607916831970215 14.012269973754883 +O 5.613175392150879 8.24959659576416 13.366471290588379 +H 5.421210289001465 8.999065399169922 12.734549522399902 +H 14.156079292297363 10.09754753112793 6.937656879425049 +O 14.381294250488281 10.39493465423584 7.833716869354248 +H 15.031318664550781 11.204416275024414 7.830630302429199 +H 9.186308860778809 5.373661041259766 9.201058387756348 +O 9.884927749633789 4.853215217590332 8.791373252868652 +H 9.495500564575195 4.389050006866455 7.994511127471924 +H 7.909711837768555 0.8771836757659912 10.073674201965332 +O 7.3992815017700195 0.40500327944755554 9.375271797180176 +H 8.047890663146973 0.01646227203309536 8.824193954467773 +H 4.144155025482178 7.798429012298584 11.0037202835083 +O 3.6634180545806885 7.110377311706543 10.5337553024292 +H 3.0318245887756348 7.595344543457031 9.977286338806152 +H 11.543298721313477 12.845231056213379 9.526606559753418 +O 11.121271133422852 13.702033042907715 9.871810913085938 +H 10.621376991271973 13.381515502929688 10.645342826843262 +H 7.287951469421387 15.405527114868164 1.4838590621948242 +O 8.058247566223145 15.133753776550293 2.1102092266082764 +H 7.733454704284668 15.314888954162598 3.0118229389190674 +H 5.935088634490967 7.812267303466797 7.968081951141357 +O 6.042677879333496 6.951498031616211 8.45356559753418 +H 5.2108025550842285 6.850614070892334 8.959635734558105 +H 15.26892375946045 9.244001388549805 8.84305191040039 +O 0.033080607652664185 8.36771297454834 9.159706115722656 +H 0.16065479815006256 8.65696907043457 10.071883201599121 +H 15.44448471069336 7.283434867858887 2.2880680561065674 +O 0.4308568835258484 7.290805816650391 2.960726737976074 +H 0.8542476892471313 6.4178080558776855 2.8072118759155273 +H 6.653284549713135 3.0818610191345215 2.4921748638153076 +O 7.361125946044922 3.674710988998413 2.2265164852142334 +H 7.656304359436035 3.247504234313965 1.4033161401748657 +H 13.179733276367188 15.35033893585205 1.7865592241287231 +O 13.136012077331543 0.4361955523490906 2.404041290283203 +H 13.092921257019043 15.597688674926758 3.281696081161499 +H 3.2176342010498047 10.340422630310059 5.482553958892822 +O 2.859381914138794 10.761625289916992 4.600158214569092 +H 3.671846389770508 10.996495246887207 4.227005958557129 +H 9.0103178024292 14.254643440246582 7.299729824066162 +O 9.379074096679688 15.032605171203613 7.842066287994385 +H 9.993480682373047 14.663202285766602 8.487648963928223 +H 1.057732105255127 10.423288345336914 0.49331533908843994 +O 0.2989242374897003 10.900001525878906 0.0640338882803917 +H 15.468161582946777 10.141322135925293 15.32434368133545 +H 0.5501918792724609 13.092039108276367 7.281371593475342 +O 0.34184548258781433 12.450984001159668 7.994649887084961 +H 0.06924410164356232 13.057560920715332 8.765048027038574 +H 9.83470630645752 4.528668403625488 3.769052028656006 +O 9.009892463684082 4.8917107582092285 4.168781280517578 +H 8.33976936340332 4.487730026245117 3.5564870834350586 diff --git a/examples/latte_scf/coords_100.pdb b/examples/latte_scf/coords_100.pdb new file mode 100644 index 00000000..63234eda --- /dev/null +++ b/examples/latte_scf/coords_100.pdb @@ -0,0 +1,306 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 15.459 15.459 15.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.024 -0.035 0.000 0.00 0.00 H +ATOM 2 O MOL 1 0.965 0.020 0.000 0.00 0.00 O +ATOM 3 H MOL 1 1.141 -0.907 0.000 0.00 0.00 H +ATOM 4 H MOL 1 1.462 1.513 1.709 0.00 0.00 H +ATOM 5 O MOL 1 2.404 1.568 1.709 0.00 0.00 O +ATOM 6 H MOL 1 2.579 0.641 1.709 0.00 0.00 H +ATOM 7 H MOL 1 2.820 2.865 3.165 0.00 0.00 H +ATOM 8 O MOL 1 3.761 2.919 3.165 0.00 0.00 O +ATOM 9 H MOL 1 3.937 1.993 3.165 0.00 0.00 H +ATOM 10 H MOL 1 4.153 4.495 4.880 0.00 0.00 H +ATOM 11 O MOL 1 5.095 4.549 4.880 0.00 0.00 O +ATOM 12 H MOL 1 5.270 3.623 4.880 0.00 0.00 H +ATOM 13 H MOL 1 6.507 6.886 7.361 0.00 0.00 H +ATOM 14 O MOL 1 7.449 6.940 7.361 0.00 0.00 O +ATOM 15 H MOL 1 7.624 6.013 7.361 0.00 0.00 H +ATOM 16 H MOL 1 8.157 8.371 9.279 0.00 0.00 H +ATOM 17 O MOL 1 9.098 8.425 9.279 0.00 0.00 O +ATOM 18 H MOL 1 9.273 7.498 9.279 0.00 0.00 H +ATOM 19 H MOL 1 9.844 10.492 11.575 0.00 0.00 H +ATOM 20 O MOL 1 10.786 10.546 11.575 0.00 0.00 O +ATOM 21 H MOL 1 10.961 9.619 11.575 0.00 0.00 H +ATOM 22 H MOL 1 13.862 1.975 4.386 0.00 0.00 H +ATOM 23 O MOL 1 14.804 2.029 4.386 0.00 0.00 O +ATOM 24 H MOL 1 14.979 1.102 4.386 0.00 0.00 H +ATOM 25 H MOL 1 6.255 9.846 11.439 0.00 0.00 H +ATOM 26 O MOL 1 7.196 9.900 11.439 0.00 0.00 O +ATOM 27 H MOL 1 7.371 8.973 11.439 0.00 0.00 H +ATOM 28 H MOL 1 0.905 3.897 6.882 0.00 0.00 H +ATOM 29 O MOL 1 1.846 3.951 6.882 0.00 0.00 O +ATOM 30 H MOL 1 2.021 3.024 6.882 0.00 0.00 H +ATOM 31 H MOL 1 11.955 14.153 5.458 0.00 0.00 H +ATOM 32 O MOL 1 12.896 14.207 5.458 0.00 0.00 O +ATOM 33 H MOL 1 13.072 13.281 5.458 0.00 0.00 H +ATOM 34 H MOL 1 9.388 13.982 6.497 0.00 0.00 H +ATOM 35 O MOL 1 10.330 14.036 6.497 0.00 0.00 O +ATOM 36 H MOL 1 10.505 13.110 6.497 0.00 0.00 H +ATOM 37 H MOL 1 9.916 3.729 8.798 0.00 0.00 H +ATOM 38 O MOL 1 10.857 3.783 8.798 0.00 0.00 O +ATOM 39 H MOL 1 11.033 2.857 8.798 0.00 0.00 H +ATOM 40 H MOL 1 1.645 10.849 1.718 0.00 0.00 H +ATOM 41 O MOL 1 2.586 10.904 1.718 0.00 0.00 O +ATOM 42 H MOL 1 2.761 9.977 1.718 0.00 0.00 H +ATOM 43 H MOL 1 13.668 5.798 2.502 0.00 0.00 H +ATOM 44 O MOL 1 14.610 5.852 2.502 0.00 0.00 O +ATOM 45 H MOL 1 14.785 4.925 2.502 0.00 0.00 H +ATOM 46 H MOL 1 0.434 8.566 11.170 0.00 0.00 H +ATOM 47 O MOL 1 1.376 8.620 11.170 0.00 0.00 O +ATOM 48 H MOL 1 1.551 7.693 11.170 0.00 0.00 H +ATOM 49 H MOL 1 8.236 3.228 1.102 0.00 0.00 H +ATOM 50 O MOL 1 9.177 3.283 1.102 0.00 0.00 O +ATOM 51 H MOL 1 9.352 2.356 1.102 0.00 0.00 H +ATOM 52 H MOL 1 14.171 2.786 10.963 0.00 0.00 H +ATOM 53 O MOL 1 15.112 2.840 10.963 0.00 0.00 O +ATOM 54 H MOL 1 15.287 1.913 10.963 0.00 0.00 H +ATOM 55 H MOL 1 10.024 12.300 0.152 0.00 0.00 H +ATOM 56 O MOL 1 10.966 12.354 0.152 0.00 0.00 O +ATOM 57 H MOL 1 11.141 11.428 0.152 0.00 0.00 H +ATOM 58 H MOL 1 11.444 7.694 1.210 0.00 0.00 H +ATOM 59 O MOL 1 12.386 7.748 1.210 0.00 0.00 O +ATOM 60 H MOL 1 12.561 6.822 1.210 0.00 0.00 H +ATOM 61 H MOL 1 5.914 9.892 5.228 0.00 0.00 H +ATOM 62 O MOL 1 6.855 9.947 5.228 0.00 0.00 O +ATOM 63 H MOL 1 7.030 9.020 5.228 0.00 0.00 H +ATOM 64 H MOL 1 11.015 2.278 3.209 0.00 0.00 H +ATOM 65 O MOL 1 11.957 2.332 3.209 0.00 0.00 O +ATOM 66 H MOL 1 12.132 1.406 3.209 0.00 0.00 H +ATOM 67 H MOL 1 5.157 14.137 9.690 0.00 0.00 H +ATOM 68 O MOL 1 6.099 14.192 9.690 0.00 0.00 O +ATOM 69 H MOL 1 6.274 13.265 9.690 0.00 0.00 H +ATOM 70 H MOL 1 13.014 10.851 2.149 0.00 0.00 H +ATOM 71 O MOL 1 13.956 10.906 2.149 0.00 0.00 O +ATOM 72 H MOL 1 14.131 9.979 2.149 0.00 0.00 H +ATOM 73 H MOL 1 6.432 7.342 4.083 0.00 0.00 H +ATOM 74 O MOL 1 7.373 7.396 4.083 0.00 0.00 O +ATOM 75 H MOL 1 7.548 6.469 4.083 0.00 0.00 H +ATOM 76 H MOL 1 13.237 7.650 6.098 0.00 0.00 H +ATOM 77 O MOL 1 14.178 7.704 6.098 0.00 0.00 O +ATOM 78 H MOL 1 14.353 6.777 6.098 0.00 0.00 H +ATOM 79 H MOL 1 8.056 0.377 3.941 0.00 0.00 H +ATOM 80 O MOL 1 8.997 0.431 3.941 0.00 0.00 O +ATOM 81 H MOL 1 9.172 -0.495 3.941 0.00 0.00 H +ATOM 82 H MOL 1 4.396 9.364 7.094 0.00 0.00 H +ATOM 83 O MOL 1 5.337 9.418 7.094 0.00 0.00 O +ATOM 84 H MOL 1 5.512 8.491 7.094 0.00 0.00 H +ATOM 85 H MOL 1 5.060 0.593 11.823 0.00 0.00 H +ATOM 86 O MOL 1 6.002 0.647 11.823 0.00 0.00 O +ATOM 87 H MOL 1 6.177 -0.280 11.823 0.00 0.00 H +ATOM 88 H MOL 1 10.805 13.676 1.929 0.00 0.00 H +ATOM 89 O MOL 1 11.747 13.730 1.929 0.00 0.00 O +ATOM 90 H MOL 1 11.922 12.804 1.929 0.00 0.00 H +ATOM 91 H MOL 1 10.422 5.195 5.779 0.00 0.00 H +ATOM 92 O MOL 1 11.364 5.250 5.779 0.00 0.00 O +ATOM 93 H MOL 1 11.539 4.323 5.779 0.00 0.00 H +ATOM 94 H MOL 1 2.609 5.311 0.365 0.00 0.00 H +ATOM 95 O MOL 1 3.551 5.365 0.365 0.00 0.00 O +ATOM 96 H MOL 1 3.726 4.438 0.365 0.00 0.00 H +ATOM 97 H MOL 1 0.247 12.838 7.622 0.00 0.00 H +ATOM 98 O MOL 1 1.189 12.892 7.622 0.00 0.00 O +ATOM 99 H MOL 1 1.364 11.966 7.622 0.00 0.00 H +ATOM 100 H MOL 1 0.400 4.030 12.734 0.00 0.00 H +ATOM 101 O MOL 1 1.342 4.084 12.734 0.00 0.00 O +ATOM 102 H MOL 1 1.517 3.158 12.734 0.00 0.00 H +ATOM 103 H MOL 1 6.344 11.570 0.306 0.00 0.00 H +ATOM 104 O MOL 1 7.286 11.624 0.306 0.00 0.00 O +ATOM 105 H MOL 1 7.461 10.698 0.306 0.00 0.00 H +ATOM 106 H MOL 1 1.457 8.882 5.810 0.00 0.00 H +ATOM 107 O MOL 1 2.399 8.937 5.810 0.00 0.00 O +ATOM 108 H MOL 1 2.574 8.010 5.810 0.00 0.00 H +ATOM 109 H MOL 1 1.246 12.939 10.266 0.00 0.00 H +ATOM 110 O MOL 1 2.187 12.993 10.266 0.00 0.00 O +ATOM 111 H MOL 1 2.362 12.067 10.266 0.00 0.00 H +ATOM 112 H MOL 1 5.844 10.735 2.510 0.00 0.00 H +ATOM 113 O MOL 1 6.786 10.789 2.510 0.00 0.00 O +ATOM 114 H MOL 1 6.961 9.862 2.510 0.00 0.00 H +ATOM 115 H MOL 1 9.752 5.415 11.518 0.00 0.00 H +ATOM 116 O MOL 1 10.694 5.470 11.518 0.00 0.00 O +ATOM 117 H MOL 1 10.869 4.543 11.518 0.00 0.00 H +ATOM 118 H MOL 1 10.062 11.535 7.714 0.00 0.00 H +ATOM 119 O MOL 1 11.004 11.590 7.714 0.00 0.00 O +ATOM 120 H MOL 1 11.179 10.663 7.714 0.00 0.00 H +ATOM 121 H MOL 1 11.140 0.576 13.274 0.00 0.00 H +ATOM 122 O MOL 1 12.081 0.630 13.274 0.00 0.00 O +ATOM 123 H MOL 1 12.256 -0.297 13.274 0.00 0.00 H +ATOM 124 H MOL 1 8.664 2.794 6.440 0.00 0.00 H +ATOM 125 O MOL 1 9.606 2.848 6.440 0.00 0.00 O +ATOM 126 H MOL 1 9.781 1.921 6.440 0.00 0.00 H +ATOM 127 H MOL 1 1.908 5.146 9.029 0.00 0.00 H +ATOM 128 O MOL 1 2.849 5.201 9.029 0.00 0.00 O +ATOM 129 H MOL 1 3.024 4.274 9.029 0.00 0.00 H +ATOM 130 H MOL 1 12.294 7.322 11.253 0.00 0.00 H +ATOM 131 O MOL 1 13.235 7.377 11.253 0.00 0.00 O +ATOM 132 H MOL 1 13.410 6.450 11.253 0.00 0.00 H +ATOM 133 H MOL 1 11.098 6.253 8.089 0.00 0.00 H +ATOM 134 O MOL 1 12.039 6.307 8.089 0.00 0.00 O +ATOM 135 H MOL 1 12.214 5.381 8.089 0.00 0.00 H +ATOM 136 H MOL 1 4.497 3.412 10.233 0.00 0.00 H +ATOM 137 O MOL 1 5.438 3.466 10.233 0.00 0.00 O +ATOM 138 H MOL 1 5.613 2.539 10.233 0.00 0.00 H +ATOM 139 H MOL 1 12.642 9.031 8.163 0.00 0.00 H +ATOM 140 O MOL 1 13.584 9.085 8.163 0.00 0.00 O +ATOM 141 H MOL 1 13.759 8.159 8.163 0.00 0.00 H +ATOM 142 H MOL 1 1.618 12.178 5.523 0.00 0.00 H +ATOM 143 O MOL 1 2.560 12.233 5.523 0.00 0.00 O +ATOM 144 H MOL 1 2.735 11.306 5.523 0.00 0.00 H +ATOM 145 H MOL 1 11.030 2.396 11.405 0.00 0.00 H +ATOM 146 O MOL 1 11.971 2.450 11.405 0.00 0.00 O +ATOM 147 H MOL 1 12.146 1.524 11.405 0.00 0.00 H +ATOM 148 H MOL 1 13.962 8.475 13.187 0.00 0.00 H +ATOM 149 O MOL 1 14.903 8.529 13.187 0.00 0.00 O +ATOM 150 H MOL 1 15.078 7.602 13.187 0.00 0.00 H +ATOM 151 H MOL 1 9.462 8.027 5.394 0.00 0.00 H +ATOM 152 O MOL 1 10.404 8.081 5.394 0.00 0.00 O +ATOM 153 H MOL 1 10.579 7.155 5.394 0.00 0.00 H +ATOM 154 H MOL 1 8.529 8.120 2.400 0.00 0.00 H +ATOM 155 O MOL 1 9.471 8.175 2.400 0.00 0.00 O +ATOM 156 H MOL 1 9.646 7.248 2.400 0.00 0.00 H +ATOM 157 H MOL 1 8.139 0.978 12.304 0.00 0.00 H +ATOM 158 O MOL 1 9.081 1.033 12.304 0.00 0.00 O +ATOM 159 H MOL 1 9.256 0.106 12.304 0.00 0.00 H +ATOM 160 H MOL 1 1.628 12.028 12.490 0.00 0.00 H +ATOM 161 O MOL 1 2.569 12.082 12.490 0.00 0.00 O +ATOM 162 H MOL 1 2.744 11.155 12.490 0.00 0.00 H +ATOM 163 H MOL 1 6.188 3.476 7.931 0.00 0.00 H +ATOM 164 O MOL 1 7.129 3.530 7.931 0.00 0.00 O +ATOM 165 H MOL 1 7.305 2.604 7.931 0.00 0.00 H +ATOM 166 H MOL 1 11.865 12.623 9.604 0.00 0.00 H +ATOM 167 O MOL 1 12.807 12.677 9.604 0.00 0.00 O +ATOM 168 H MOL 1 12.982 11.750 9.604 0.00 0.00 H +ATOM 169 H MOL 1 9.083 5.793 0.741 0.00 0.00 H +ATOM 170 O MOL 1 10.025 5.847 0.741 0.00 0.00 O +ATOM 171 H MOL 1 10.200 4.921 0.741 0.00 0.00 H +ATOM 172 H MOL 1 13.001 1.894 6.496 0.00 0.00 H +ATOM 173 O MOL 1 13.942 1.949 6.496 0.00 0.00 O +ATOM 174 H MOL 1 14.117 1.022 6.496 0.00 0.00 H +ATOM 175 H MOL 1 1.513 8.921 9.234 0.00 0.00 H +ATOM 176 O MOL 1 2.454 8.975 9.234 0.00 0.00 O +ATOM 177 H MOL 1 2.629 8.049 9.234 0.00 0.00 H +ATOM 178 H MOL 1 5.013 8.716 0.609 0.00 0.00 H +ATOM 179 O MOL 1 5.954 8.770 0.609 0.00 0.00 O +ATOM 180 H MOL 1 6.129 7.843 0.609 0.00 0.00 H +ATOM 181 H MOL 1 6.661 3.635 13.318 0.00 0.00 H +ATOM 182 O MOL 1 7.602 3.690 13.318 0.00 0.00 O +ATOM 183 H MOL 1 7.777 2.763 13.318 0.00 0.00 H +ATOM 184 H MOL 1 5.109 3.641 1.722 0.00 0.00 H +ATOM 185 O MOL 1 6.050 3.696 1.722 0.00 0.00 O +ATOM 186 H MOL 1 6.225 2.769 1.722 0.00 0.00 H +ATOM 187 H MOL 1 6.461 0.702 0.842 0.00 0.00 H +ATOM 188 O MOL 1 7.402 0.757 0.842 0.00 0.00 O +ATOM 189 H MOL 1 7.577 -0.170 0.842 0.00 0.00 H +ATOM 190 H MOL 1 3.083 7.592 2.472 0.00 0.00 H +ATOM 191 O MOL 1 4.025 7.646 2.472 0.00 0.00 O +ATOM 192 H MOL 1 4.200 6.720 2.472 0.00 0.00 H +ATOM 193 H MOL 1 8.638 14.297 9.461 0.00 0.00 H +ATOM 194 O MOL 1 9.579 14.352 9.461 0.00 0.00 O +ATOM 195 H MOL 1 9.754 13.425 9.461 0.00 0.00 H +ATOM 196 H MOL 1 4.773 13.629 6.292 0.00 0.00 H +ATOM 197 O MOL 1 5.714 13.684 6.292 0.00 0.00 O +ATOM 198 H MOL 1 5.889 12.757 6.292 0.00 0.00 H +ATOM 199 H MOL 1 7.047 3.198 3.702 0.00 0.00 H +ATOM 200 O MOL 1 7.989 3.252 3.702 0.00 0.00 O +ATOM 201 H MOL 1 8.164 2.326 3.702 0.00 0.00 H +ATOM 202 H MOL 1 2.094 0.204 8.780 0.00 0.00 H +ATOM 203 O MOL 1 3.035 0.258 8.780 0.00 0.00 O +ATOM 204 H MOL 1 3.210 -0.669 8.780 0.00 0.00 H +ATOM 205 H MOL 1 6.427 6.710 13.409 0.00 0.00 H +ATOM 206 O MOL 1 7.368 6.765 13.409 0.00 0.00 O +ATOM 207 H MOL 1 7.543 5.838 13.409 0.00 0.00 H +ATOM 208 H MOL 1 4.534 6.437 9.463 0.00 0.00 H +ATOM 209 O MOL 1 5.476 6.491 9.463 0.00 0.00 O +ATOM 210 H MOL 1 5.651 5.565 9.463 0.00 0.00 H +ATOM 211 H MOL 1 2.755 13.902 4.044 0.00 0.00 H +ATOM 212 O MOL 1 3.697 13.957 4.044 0.00 0.00 O +ATOM 213 H MOL 1 3.872 13.030 4.044 0.00 0.00 H +ATOM 214 H MOL 1 3.647 9.025 13.044 0.00 0.00 H +ATOM 215 O MOL 1 4.589 9.080 13.044 0.00 0.00 O +ATOM 216 H MOL 1 4.764 8.153 13.044 0.00 0.00 H +ATOM 217 H MOL 1 2.475 1.170 14.119 0.00 0.00 H +ATOM 218 O MOL 1 3.416 1.224 14.119 0.00 0.00 O +ATOM 219 H MOL 1 3.592 0.298 14.119 0.00 0.00 H +ATOM 220 H MOL 1 9.573 10.933 2.915 0.00 0.00 H +ATOM 221 O MOL 1 10.514 10.988 2.915 0.00 0.00 O +ATOM 222 H MOL 1 10.689 10.061 2.915 0.00 0.00 H +ATOM 223 H MOL 1 6.960 10.953 7.307 0.00 0.00 H +ATOM 224 O MOL 1 7.901 11.007 7.307 0.00 0.00 O +ATOM 225 H MOL 1 8.076 10.080 7.307 0.00 0.00 H +ATOM 226 H MOL 1 12.713 4.501 0.595 0.00 0.00 H +ATOM 227 O MOL 1 13.655 4.555 0.595 0.00 0.00 O +ATOM 228 H MOL 1 13.830 3.628 0.595 0.00 0.00 H +ATOM 229 H MOL 1 13.212 11.633 13.218 0.00 0.00 H +ATOM 230 O MOL 1 14.154 11.687 13.218 0.00 0.00 O +ATOM 231 H MOL 1 14.329 10.761 13.218 0.00 0.00 H +ATOM 232 H MOL 1 11.861 13.431 11.502 0.00 0.00 H +ATOM 233 O MOL 1 12.803 13.485 11.502 0.00 0.00 O +ATOM 234 H MOL 1 12.978 12.558 11.502 0.00 0.00 H +ATOM 235 H MOL 1 9.400 8.430 13.259 0.00 0.00 H +ATOM 236 O MOL 1 10.342 8.485 13.259 0.00 0.00 O +ATOM 237 H MOL 1 10.517 7.558 13.259 0.00 0.00 H +ATOM 238 H MOL 1 2.820 1.799 5.389 0.00 0.00 H +ATOM 239 O MOL 1 3.762 1.854 5.389 0.00 0.00 O +ATOM 240 H MOL 1 3.937 0.927 5.389 0.00 0.00 H +ATOM 241 H MOL 1 9.302 11.302 5.371 0.00 0.00 H +ATOM 242 O MOL 1 10.244 11.357 5.371 0.00 0.00 O +ATOM 243 H MOL 1 10.419 10.430 5.371 0.00 0.00 H +ATOM 244 H MOL 1 7.076 12.436 12.400 0.00 0.00 H +ATOM 245 O MOL 1 8.017 12.491 12.400 0.00 0.00 O +ATOM 246 H MOL 1 8.192 11.564 12.400 0.00 0.00 H +ATOM 247 H MOL 1 0.564 8.190 0.846 0.00 0.00 H +ATOM 248 O MOL 1 1.505 8.245 0.846 0.00 0.00 O +ATOM 249 H MOL 1 1.680 7.318 0.846 0.00 0.00 H +ATOM 250 H MOL 1 7.010 11.136 9.638 0.00 0.00 H +ATOM 251 O MOL 1 7.952 11.191 9.638 0.00 0.00 O +ATOM 252 H MOL 1 8.127 10.264 9.638 0.00 0.00 H +ATOM 253 H MOL 1 9.268 5.723 3.606 0.00 0.00 H +ATOM 254 O MOL 1 10.209 5.777 3.606 0.00 0.00 O +ATOM 255 H MOL 1 10.384 4.850 3.606 0.00 0.00 H +ATOM 256 H MOL 1 13.390 10.203 4.472 0.00 0.00 H +ATOM 257 O MOL 1 14.332 10.257 4.472 0.00 0.00 O +ATOM 258 H MOL 1 14.507 9.330 4.472 0.00 0.00 H +ATOM 259 H MOL 1 3.876 5.191 11.945 0.00 0.00 H +ATOM 260 O MOL 1 4.818 5.246 11.945 0.00 0.00 O +ATOM 261 H MOL 1 4.993 4.319 11.945 0.00 0.00 H +ATOM 262 H MOL 1 6.226 6.828 11.264 0.00 0.00 H +ATOM 263 O MOL 1 7.167 6.882 11.264 0.00 0.00 O +ATOM 264 H MOL 1 7.342 5.955 11.264 0.00 0.00 H +ATOM 265 H MOL 1 3.202 9.766 3.900 0.00 0.00 H +ATOM 266 O MOL 1 4.143 9.821 3.900 0.00 0.00 O +ATOM 267 H MOL 1 4.318 8.894 3.900 0.00 0.00 H +ATOM 268 H MOL 1 12.942 5.592 4.532 0.00 0.00 H +ATOM 269 O MOL 1 13.884 5.646 4.532 0.00 0.00 O +ATOM 270 H MOL 1 14.059 4.719 4.532 0.00 0.00 H +ATOM 271 H MOL 1 4.341 9.628 9.004 0.00 0.00 H +ATOM 272 O MOL 1 5.282 9.682 9.004 0.00 0.00 O +ATOM 273 H MOL 1 5.458 8.755 9.004 0.00 0.00 H +ATOM 274 H MOL 1 13.274 13.142 3.549 0.00 0.00 H +ATOM 275 O MOL 1 14.216 13.197 3.549 0.00 0.00 O +ATOM 276 H MOL 1 14.391 12.270 3.549 0.00 0.00 H +ATOM 277 H MOL 1 3.276 6.152 7.287 0.00 0.00 H +ATOM 278 O MOL 1 4.217 6.206 7.287 0.00 0.00 O +ATOM 279 H MOL 1 4.392 5.279 7.287 0.00 0.00 H +ATOM 280 H MOL 1 6.608 12.279 4.127 0.00 0.00 H +ATOM 281 O MOL 1 7.550 12.333 4.127 0.00 0.00 O +ATOM 282 H MOL 1 7.725 11.406 4.127 0.00 0.00 H +ATOM 283 H MOL 1 14.089 2.765 8.432 0.00 0.00 H +ATOM 284 O MOL 1 15.031 2.819 8.432 0.00 0.00 O +ATOM 285 H MOL 1 15.206 1.892 8.432 0.00 0.00 H +ATOM 286 H MOL 1 12.247 0.859 8.664 0.00 0.00 H +ATOM 287 O MOL 1 13.188 0.913 8.664 0.00 0.00 O +ATOM 288 H MOL 1 13.363 -0.014 8.664 0.00 0.00 H +ATOM 289 H MOL 1 4.467 13.517 1.951 0.00 0.00 H +ATOM 290 O MOL 1 5.409 13.571 1.951 0.00 0.00 O +ATOM 291 H MOL 1 5.584 12.645 1.951 0.00 0.00 H +ATOM 292 H MOL 1 14.342 0.329 12.432 0.00 0.00 H +ATOM 293 O MOL 1 15.283 0.384 12.432 0.00 0.00 O +ATOM 294 H MOL 1 15.459 -0.543 12.432 0.00 0.00 H +ATOM 295 H MOL 1 11.322 2.305 0.943 0.00 0.00 H +ATOM 296 O MOL 1 12.263 2.360 0.943 0.00 0.00 O +ATOM 297 H MOL 1 12.438 1.433 0.943 0.00 0.00 H +ATOM 298 H MOL 1 7.319 4.026 10.612 0.00 0.00 H +ATOM 299 O MOL 1 8.261 4.081 10.612 0.00 0.00 O +ATOM 300 H MOL 1 8.436 3.154 10.612 0.00 0.00 H +TER +END diff --git a/examples/latte_scf/coords_1032.pdb b/examples/latte_scf/coords_1032.pdb new file mode 100644 index 00000000..549a703b --- /dev/null +++ b/examples/latte_scf/coords_1032.pdb @@ -0,0 +1,1038 @@ +TITLE my_single_water.xyz +REMARK THIS IS A SIMULATION BOX +CRYST1 21.830 21.830 21.830 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 O HOH 1 10.727 10.734 10.915 1.00 0.00 O +ATOM 2 H HOH 0 10.309 11.595 10.915 1.00 0.00 H +ATOM 3 H HOH 0 11.708 10.415 10.915 1.00 0.00 H +ATOM 4 OW SOL 1 2.250 2.750 9.961 1.00 0.00 O +ATOM 5 HW1 SOL 1 2.600 2.580 10.881 1.00 0.00 H +ATOM 6 HW2 SOL 1 1.370 2.300 9.841 1.00 0.00 H +ATOM 7 OW SOL 2 5.690 12.751 11.651 1.00 0.00 O +ATOM 8 HW1 SOL 2 4.760 12.681 11.281 1.00 0.00 H +ATOM 9 HW2 SOL 2 5.800 13.641 12.091 1.00 0.00 H +ATOM 10 OW SOL 3 15.551 15.111 7.030 1.00 0.00 O +ATOM 11 HW1 SOL 3 14.981 14.951 7.840 1.00 0.00 H +ATOM 12 HW2 SOL 3 14.961 15.211 6.230 1.00 0.00 H +ATOM 13 OW SOL 4 17.431 6.180 8.560 1.00 0.00 O +ATOM 14 HW1 SOL 4 17.761 7.120 8.560 1.00 0.00 H +ATOM 15 HW2 SOL 4 17.941 5.640 9.220 1.00 0.00 H +ATOM 16 OW SOL 5 11.351 7.030 7.170 1.00 0.00 O +ATOM 17 HW1 SOL 5 11.921 7.810 6.920 1.00 0.00 H +ATOM 18 HW2 SOL 5 10.751 7.290 7.930 1.00 0.00 H +ATOM 19 OW SOL 6 17.551 6.070 2.310 1.00 0.00 O +ATOM 20 HW1 SOL 6 17.431 5.940 1.320 1.00 0.00 H +ATOM 21 HW2 SOL 6 17.251 5.260 2.800 1.00 0.00 H +ATOM 22 OW SOL 7 7.680 11.441 10.231 1.00 0.00 O +ATOM 23 HW1 SOL 7 6.900 11.611 10.831 1.00 0.00 H +ATOM 24 HW2 SOL 7 8.020 12.311 9.871 1.00 0.00 H +ATOM 25 OW SOL 8 8.500 7.980 18.231 1.00 0.00 O +ATOM 26 HW1 SOL 8 8.460 8.740 18.881 1.00 0.00 H +ATOM 27 HW2 SOL 8 8.720 8.340 17.321 1.00 0.00 H +ATOM 28 OW SOL 9 6.850 10.121 6.650 1.00 0.00 O +ATOM 29 HW1 SOL 9 7.540 9.961 7.350 1.00 0.00 H +ATOM 30 HW2 SOL 9 6.120 10.691 7.030 1.00 0.00 H +ATOM 31 OW SOL 10 6.860 11.611 18.031 1.00 0.00 O +ATOM 32 HW1 SOL 10 7.460 12.401 18.171 1.00 0.00 H +ATOM 33 HW2 SOL 10 6.000 11.921 17.621 1.00 0.00 H +ATOM 34 OW SOL 11 3.350 14.351 10.611 1.00 0.00 O +ATOM 35 HW1 SOL 11 2.570 14.041 10.081 1.00 0.00 H +ATOM 36 HW2 SOL 11 3.930 14.931 10.041 1.00 0.00 H +ATOM 37 OW SOL 12 14.601 15.051 13.391 1.00 0.00 O +ATOM 38 HW1 SOL 12 14.841 15.991 13.651 1.00 0.00 H +ATOM 39 HW2 SOL 12 14.441 14.511 14.211 1.00 0.00 H +ATOM 40 OW SOL 13 4.380 3.920 14.991 1.00 0.00 O +ATOM 41 HW1 SOL 13 5.200 3.360 15.081 1.00 0.00 H +ATOM 42 HW2 SOL 13 3.570 3.340 15.031 1.00 0.00 H +ATOM 43 OW SOL 14 2.310 17.131 4.830 1.00 0.00 O +ATOM 44 HW1 SOL 14 2.650 17.901 5.370 1.00 0.00 H +ATOM 45 HW2 SOL 14 2.750 17.131 3.930 1.00 0.00 H +ATOM 46 OW SOL 15 11.271 13.411 16.901 1.00 0.00 O +ATOM 47 HW1 SOL 15 11.741 13.411 17.781 1.00 0.00 H +ATOM 48 HW2 SOL 15 10.791 12.541 16.791 1.00 0.00 H +ATOM 49 OW SOL 16 2.300 14.341 5.380 1.00 0.00 O +ATOM 50 HW1 SOL 16 2.040 15.301 5.380 1.00 0.00 H +ATOM 51 HW2 SOL 16 1.590 13.801 5.830 1.00 0.00 H +ATOM 52 OW SOL 17 2.400 10.911 8.860 1.00 0.00 O +ATOM 53 HW1 SOL 17 2.540 10.071 9.380 1.00 0.00 H +ATOM 54 HW2 SOL 17 1.850 11.551 9.410 1.00 0.00 H +ATOM 55 OW SOL 18 6.200 17.861 14.391 1.00 0.00 O +ATOM 56 HW1 SOL 18 5.280 17.691 14.741 1.00 0.00 H +ATOM 57 HW2 SOL 18 6.480 18.781 14.651 1.00 0.00 H +ATOM 58 OW SOL 19 6.060 9.641 1.230 1.00 0.00 O +ATOM 59 HW1 SOL 19 6.130 10.481 0.690 1.00 0.00 H +ATOM 60 HW2 SOL 19 6.520 9.771 2.110 1.00 0.00 H +ATOM 61 OW SOL 20 15.941 1.140 14.801 1.00 0.00 O +ATOM 62 HW1 SOL 20 15.761 1.810 14.081 1.00 0.00 H +ATOM 63 HW2 SOL 20 15.911 1.600 15.691 1.00 0.00 H +ATOM 64 OW SOL 21 18.421 17.671 3.590 1.00 0.00 O +ATOM 65 HW1 SOL 21 18.961 17.381 4.390 1.00 0.00 H +ATOM 66 HW2 SOL 21 18.721 18.571 3.300 1.00 0.00 H +ATOM 67 OW SOL 22 16.891 9.220 6.120 1.00 0.00 O +ATOM 68 HW1 SOL 22 17.841 8.930 6.200 1.00 0.00 H +ATOM 69 HW2 SOL 22 16.811 9.870 5.370 1.00 0.00 H +ATOM 70 OW SOL 23 16.411 11.081 4.320 1.00 0.00 O +ATOM 71 HW1 SOL 23 17.271 11.101 3.800 1.00 0.00 H +ATOM 72 HW2 SOL 23 16.551 11.551 5.200 1.00 0.00 H +ATOM 73 OW SOL 24 1.130 7.370 15.971 1.00 0.00 O +ATOM 74 HW1 SOL 24 2.010 7.240 16.421 1.00 0.00 H +ATOM 75 HW2 SOL 24 1.000 8.340 15.751 1.00 0.00 H +ATOM 76 OW SOL 25 6.130 13.651 7.260 1.00 0.00 O +ATOM 77 HW1 SOL 25 5.640 12.781 7.350 1.00 0.00 H +ATOM 78 HW2 SOL 25 5.900 14.081 6.390 1.00 0.00 H +ATOM 79 OW SOL 26 12.931 12.281 14.231 1.00 0.00 O +ATOM 80 HW1 SOL 26 13.301 11.551 13.651 1.00 0.00 H +ATOM 81 HW2 SOL 26 13.451 12.331 15.081 1.00 0.00 H +ATOM 82 OW SOL 27 8.090 0.040 5.020 1.00 0.00 O +ATOM 83 HW1 SOL 27 8.490 0.950 4.930 1.00 0.00 H +ATOM 84 HW2 SOL 27 7.090 0.120 5.080 1.00 0.00 H +ATOM 85 OW SOL 28 15.251 9.991 1.900 1.00 0.00 O +ATOM 86 HW1 SOL 28 14.621 9.231 2.030 1.00 0.00 H +ATOM 87 HW2 SOL 28 15.731 10.171 2.760 1.00 0.00 H +ATOM 88 OW SOL 29 11.871 17.921 16.161 1.00 0.00 O +ATOM 89 HW1 SOL 29 12.111 18.521 15.401 1.00 0.00 H +ATOM 90 HW2 SOL 29 11.941 16.971 15.861 1.00 0.00 H +ATOM 91 OW SOL 30 3.170 2.510 18.011 1.00 0.00 O +ATOM 92 HW1 SOL 30 3.880 3.220 18.071 1.00 0.00 H +ATOM 93 HW2 SOL 30 2.290 2.900 18.291 1.00 0.00 H +ATOM 94 OW SOL 31 14.661 14.171 9.531 1.00 0.00 O +ATOM 95 HW1 SOL 31 14.071 14.231 10.331 1.00 0.00 H +ATOM 96 HW2 SOL 31 14.511 13.291 9.071 1.00 0.00 H +ATOM 97 OW SOL 32 16.671 17.141 5.720 1.00 0.00 O +ATOM 98 HW1 SOL 32 16.261 16.911 4.840 1.00 0.00 H +ATOM 99 HW2 SOL 32 16.491 16.401 6.370 1.00 0.00 H +ATOM 100 OW SOL 33 5.980 7.290 2.700 1.00 0.00 O +ATOM 101 HW1 SOL 33 6.220 7.980 2.020 1.00 0.00 H +ATOM 102 HW2 SOL 33 5.200 7.620 3.240 1.00 0.00 H +ATOM 103 OW SOL 34 12.811 3.450 9.441 1.00 0.00 O +ATOM 104 HW1 SOL 34 11.951 2.950 9.311 1.00 0.00 H +ATOM 105 HW2 SOL 34 13.431 2.910 10.001 1.00 0.00 H +ATOM 106 OW SOL 35 15.761 16.621 3.070 1.00 0.00 O +ATOM 107 HW1 SOL 35 16.651 17.081 3.100 1.00 0.00 H +ATOM 108 HW2 SOL 35 15.551 16.381 2.120 1.00 0.00 H +ATOM 109 OW SOL 36 8.070 6.050 14.651 1.00 0.00 O +ATOM 110 HW1 SOL 36 7.600 6.020 15.541 1.00 0.00 H +ATOM 111 HW2 SOL 36 7.560 5.500 13.991 1.00 0.00 H +ATOM 112 OW SOL 37 13.941 4.690 16.741 1.00 0.00 O +ATOM 113 HW1 SOL 37 13.741 5.120 17.621 1.00 0.00 H +ATOM 114 HW2 SOL 37 14.721 4.070 16.831 1.00 0.00 H +ATOM 115 OW SOL 38 9.731 8.900 15.721 1.00 0.00 O +ATOM 116 HW1 SOL 38 10.191 8.060 15.431 1.00 0.00 H +ATOM 117 HW2 SOL 38 9.171 9.240 14.971 1.00 0.00 H +ATOM 118 OW SOL 39 9.911 4.100 12.421 1.00 0.00 O +ATOM 119 HW1 SOL 39 9.141 4.440 12.961 1.00 0.00 H +ATOM 120 HW2 SOL 39 9.571 3.590 11.631 1.00 0.00 H +ATOM 121 OW SOL 40 10.411 7.010 4.290 1.00 0.00 O +ATOM 122 HW1 SOL 40 10.671 6.970 5.250 1.00 0.00 H +ATOM 123 HW2 SOL 40 9.561 6.500 4.150 1.00 0.00 H +ATOM 124 OW SOL 41 0.760 8.110 7.890 1.00 0.00 O +ATOM 125 HW1 SOL 41 1.750 7.990 7.980 1.00 0.00 H +ATOM 126 HW2 SOL 41 0.520 9.060 8.100 1.00 0.00 H +ATOM 127 OW SOL 42 8.650 3.480 1.950 1.00 0.00 O +ATOM 128 HW1 SOL 42 9.240 4.110 1.460 1.00 0.00 H +ATOM 129 HW2 SOL 42 8.840 2.540 1.660 1.00 0.00 H +ATOM 130 OW SOL 43 17.191 5.850 18.311 1.00 0.00 O +ATOM 131 HW1 SOL 43 16.931 6.740 17.951 1.00 0.00 H +ATOM 132 HW2 SOL 43 17.171 5.170 17.581 1.00 0.00 H +ATOM 133 OW SOL 44 13.621 11.441 5.450 1.00 0.00 O +ATOM 134 HW1 SOL 44 14.451 11.151 4.970 1.00 0.00 H +ATOM 135 HW2 SOL 44 13.131 12.111 4.890 1.00 0.00 H +ATOM 136 OW SOL 45 5.500 1.960 8.850 1.00 0.00 O +ATOM 137 HW1 SOL 45 5.450 1.910 9.850 1.00 0.00 H +ATOM 138 HW2 SOL 45 5.520 2.920 8.560 1.00 0.00 H +ATOM 139 OW SOL 46 10.081 14.561 4.770 1.00 0.00 O +ATOM 140 HW1 SOL 46 9.621 15.281 4.250 1.00 0.00 H +ATOM 141 HW2 SOL 46 10.041 14.761 5.750 1.00 0.00 H +ATOM 142 OW SOL 47 3.510 18.011 8.530 1.00 0.00 O +ATOM 143 HW1 SOL 47 4.010 17.151 8.590 1.00 0.00 H +ATOM 144 HW2 SOL 47 4.160 18.781 8.500 1.00 0.00 H +ATOM 145 OW SOL 48 17.951 10.661 8.730 1.00 0.00 O +ATOM 146 HW1 SOL 48 17.331 10.511 7.970 1.00 0.00 H +ATOM 147 HW2 SOL 48 17.431 10.771 9.580 1.00 0.00 H +ATOM 148 OW SOL 49 12.271 15.501 15.061 1.00 0.00 O +ATOM 149 HW1 SOL 49 12.331 14.731 15.701 1.00 0.00 H +ATOM 150 HW2 SOL 49 11.751 15.241 14.261 1.00 0.00 H +ATOM 151 OW SOL 50 3.210 9.431 2.420 1.00 0.00 O +ATOM 152 HW1 SOL 50 4.030 9.821 2.000 1.00 0.00 H +ATOM 153 HW2 SOL 50 2.940 8.611 1.930 1.00 0.00 H +ATOM 154 OW SOL 51 14.581 7.350 7.280 1.00 0.00 O +ATOM 155 HW1 SOL 51 14.531 6.700 8.030 1.00 0.00 H +ATOM 156 HW2 SOL 51 15.381 7.940 7.410 1.00 0.00 H +ATOM 157 OW SOL 52 4.610 12.661 17.271 1.00 0.00 O +ATOM 158 HW1 SOL 52 4.110 12.671 16.411 1.00 0.00 H +ATOM 159 HW2 SOL 52 3.980 12.481 18.031 1.00 0.00 H +ATOM 160 OW SOL 53 11.111 17.761 2.370 1.00 0.00 O +ATOM 161 HW1 SOL 53 10.511 17.141 2.870 1.00 0.00 H +ATOM 162 HW2 SOL 53 11.421 17.321 1.520 1.00 0.00 H +ATOM 163 OW SOL 54 2.020 2.850 14.981 1.00 0.00 O +ATOM 164 HW1 SOL 54 1.220 3.450 14.851 1.00 0.00 H +ATOM 165 HW2 SOL 54 1.920 2.360 15.841 1.00 0.00 H +ATOM 166 OW SOL 55 16.321 13.771 0.810 1.00 0.00 O +ATOM 167 HW1 SOL 55 16.001 14.711 0.710 1.00 0.00 H +ATOM 168 HW2 SOL 55 15.561 13.141 0.690 1.00 0.00 H +ATOM 169 OW SOL 56 4.640 17.431 3.230 1.00 0.00 O +ATOM 170 HW1 SOL 56 4.970 17.821 4.090 1.00 0.00 H +ATOM 171 HW2 SOL 56 5.400 17.361 2.580 1.00 0.00 H +ATOM 172 OW SOL 57 14.001 1.070 4.260 1.00 0.00 O +ATOM 173 HW1 SOL 57 13.761 0.700 3.360 1.00 0.00 H +ATOM 174 HW2 SOL 57 14.991 1.230 4.300 1.00 0.00 H +ATOM 175 OW SOL 58 2.490 17.851 12.411 1.00 0.00 O +ATOM 176 HW1 SOL 58 3.060 17.201 12.911 1.00 0.00 H +ATOM 177 HW2 SOL 58 2.330 17.521 11.481 1.00 0.00 H +ATOM 178 OW SOL 59 9.401 16.981 9.040 1.00 0.00 O +ATOM 179 HW1 SOL 59 10.201 16.411 9.250 1.00 0.00 H +ATOM 180 HW2 SOL 59 8.911 16.581 8.270 1.00 0.00 H +ATOM 181 OW SOL 60 3.820 7.000 4.800 1.00 0.00 O +ATOM 182 HW1 SOL 60 4.270 6.100 4.770 1.00 0.00 H +ATOM 183 HW2 SOL 60 2.880 6.890 5.130 1.00 0.00 H +ATOM 184 OW SOL 61 15.471 2.220 17.291 1.00 0.00 O +ATOM 185 HW1 SOL 61 15.421 2.590 18.211 1.00 0.00 H +ATOM 186 HW2 SOL 61 14.751 1.530 17.171 1.00 0.00 H +ATOM 187 OW SOL 62 6.140 1.220 1.170 1.00 0.00 O +ATOM 188 HW1 SOL 62 7.120 1.000 1.240 1.00 0.00 H +ATOM 189 HW2 SOL 62 5.830 1.050 0.240 1.00 0.00 H +ATOM 190 OW SOL 63 7.810 2.640 17.491 1.00 0.00 O +ATOM 191 HW1 SOL 63 8.480 2.030 17.921 1.00 0.00 H +ATOM 192 HW2 SOL 63 7.080 2.830 18.141 1.00 0.00 H +ATOM 193 OW SOL 64 8.880 15.141 11.951 1.00 0.00 O +ATOM 194 HW1 SOL 64 8.650 14.891 11.011 1.00 0.00 H +ATOM 195 HW2 SOL 64 9.490 14.451 12.341 1.00 0.00 H +ATOM 196 OW SOL 65 13.511 5.900 14.331 1.00 0.00 O +ATOM 197 HW1 SOL 65 13.791 5.470 15.181 1.00 0.00 H +ATOM 198 HW2 SOL 65 13.761 6.860 14.341 1.00 0.00 H +ATOM 199 OW SOL 66 8.030 14.021 9.240 1.00 0.00 O +ATOM 200 HW1 SOL 66 8.930 14.161 8.820 1.00 0.00 H +ATOM 201 HW2 SOL 66 7.320 14.041 8.530 1.00 0.00 H +ATOM 202 OW SOL 67 9.220 5.030 8.990 1.00 0.00 O +ATOM 203 HW1 SOL 67 8.970 4.940 8.030 1.00 0.00 H +ATOM 204 HW2 SOL 67 9.700 4.210 9.300 1.00 0.00 H +ATOM 205 OW SOL 68 5.390 0.640 5.120 1.00 0.00 O +ATOM 206 HW1 SOL 68 4.580 0.650 5.700 1.00 0.00 H +ATOM 207 HW2 SOL 68 5.420 1.470 4.570 1.00 0.00 H +ATOM 208 OW SOL 69 14.341 11.881 0.410 1.00 0.00 O +ATOM 209 HW1 SOL 69 14.661 11.121 0.980 1.00 0.00 H +ATOM 210 HW2 SOL 69 13.421 12.151 0.710 1.00 0.00 H +ATOM 211 OW SOL 70 9.351 2.360 4.800 1.00 0.00 O +ATOM 212 HW1 SOL 70 8.871 2.770 4.020 1.00 0.00 H +ATOM 213 HW2 SOL 70 10.341 2.340 4.610 1.00 0.00 H +ATOM 214 OW SOL 71 10.761 6.830 14.641 1.00 0.00 O +ATOM 215 HW1 SOL 71 9.961 6.220 14.671 1.00 0.00 H +ATOM 216 HW2 SOL 71 11.571 6.300 14.401 1.00 0.00 H +ATOM 217 OW SOL 72 12.271 15.701 7.930 1.00 0.00 O +ATOM 218 HW1 SOL 72 12.481 16.441 7.280 1.00 0.00 H +ATOM 219 HW2 SOL 72 12.951 15.701 8.660 1.00 0.00 H +ATOM 220 OW SOL 73 4.590 11.521 7.410 1.00 0.00 O +ATOM 221 HW1 SOL 73 3.880 11.251 8.060 1.00 0.00 H +ATOM 222 HW2 SOL 73 4.330 11.241 6.480 1.00 0.00 H +ATOM 223 OW SOL 74 12.711 17.971 5.910 1.00 0.00 O +ATOM 224 HW1 SOL 74 13.151 18.611 5.270 1.00 0.00 H +ATOM 225 HW2 SOL 74 12.211 18.491 6.610 1.00 0.00 H +ATOM 226 OW SOL 75 10.321 5.490 0.160 1.00 0.00 O +ATOM 227 HW1 SOL 75 9.911 6.310 -0.230 1.00 0.00 H +ATOM 228 HW2 SOL 75 10.961 5.750 0.890 1.00 0.00 H +ATOM 229 OW SOL 76 5.610 2.220 11.471 1.00 0.00 O +ATOM 230 HW1 SOL 76 5.990 1.380 11.841 1.00 0.00 H +ATOM 231 HW2 SOL 76 4.730 2.410 11.911 1.00 0.00 H +ATOM 232 OW SOL 77 8.660 4.540 6.420 1.00 0.00 O +ATOM 233 HW1 SOL 77 8.340 5.260 5.800 1.00 0.00 H +ATOM 234 HW2 SOL 77 8.900 3.730 5.890 1.00 0.00 H +ATOM 235 OW SOL 78 10.171 0.390 7.530 1.00 0.00 O +ATOM 236 HW1 SOL 78 9.451 0.440 6.840 1.00 0.00 H +ATOM 237 HW2 SOL 78 9.931 -0.300 8.220 1.00 0.00 H +ATOM 238 OW SOL 79 14.291 11.731 8.670 1.00 0.00 O +ATOM 239 HW1 SOL 79 13.741 10.891 8.600 1.00 0.00 H +ATOM 240 HW2 SOL 79 14.551 12.021 7.750 1.00 0.00 H +ATOM 241 OW SOL 80 14.661 5.900 9.921 1.00 0.00 O +ATOM 242 HW1 SOL 80 14.361 4.950 9.991 1.00 0.00 H +ATOM 243 HW2 SOL 80 15.391 6.060 10.581 1.00 0.00 H +ATOM 244 OW SOL 81 18.571 8.330 3.770 1.00 0.00 O +ATOM 245 HW1 SOL 81 18.991 7.690 4.410 1.00 0.00 H +ATOM 246 HW2 SOL 81 18.191 7.820 2.990 1.00 0.00 H +ATOM 247 OW SOL 82 4.880 13.851 1.740 1.00 0.00 O +ATOM 248 HW1 SOL 82 4.010 13.701 2.210 1.00 0.00 H +ATOM 249 HW2 SOL 82 4.710 14.111 0.790 1.00 0.00 H +ATOM 250 OW SOL 83 16.641 12.801 6.570 1.00 0.00 O +ATOM 251 HW1 SOL 83 17.631 12.881 6.710 1.00 0.00 H +ATOM 252 HW2 SOL 83 16.191 13.641 6.880 1.00 0.00 H +ATOM 253 OW SOL 84 13.901 5.750 0.780 1.00 0.00 O +ATOM 254 HW1 SOL 84 13.361 5.540 1.590 1.00 0.00 H +ATOM 255 HW2 SOL 84 14.811 5.340 0.870 1.00 0.00 H +ATOM 256 OW SOL 85 5.270 2.560 3.280 1.00 0.00 O +ATOM 257 HW1 SOL 85 5.540 1.970 2.530 1.00 0.00 H +ATOM 258 HW2 SOL 85 5.270 3.510 2.970 1.00 0.00 H +ATOM 259 OW SOL 86 17.541 12.231 15.881 1.00 0.00 O +ATOM 260 HW1 SOL 86 18.451 11.841 15.751 1.00 0.00 H +ATOM 261 HW2 SOL 86 17.621 13.191 16.121 1.00 0.00 H +ATOM 262 OW SOL 87 10.641 13.471 13.401 1.00 0.00 O +ATOM 263 HW1 SOL 87 9.841 13.241 13.951 1.00 0.00 H +ATOM 264 HW2 SOL 87 11.471 13.211 13.891 1.00 0.00 H +ATOM 265 OW SOL 88 15.921 16.291 16.251 1.00 0.00 O +ATOM 266 HW1 SOL 88 16.191 16.631 15.351 1.00 0.00 H +ATOM 267 HW2 SOL 88 16.711 15.911 16.711 1.00 0.00 H +ATOM 268 OW SOL 89 16.381 10.991 10.791 1.00 0.00 O +ATOM 269 HW1 SOL 89 16.431 11.801 11.381 1.00 0.00 H +ATOM 270 HW2 SOL 89 15.521 11.011 10.281 1.00 0.00 H +ATOM 271 OW SOL 90 9.150 0.890 14.021 1.00 0.00 O +ATOM 272 HW1 SOL 90 9.400 0.690 13.071 1.00 0.00 H +ATOM 273 HW2 SOL 90 9.870 1.450 14.441 1.00 0.00 H +ATOM 274 OW SOL 91 9.801 11.161 17.191 1.00 0.00 O +ATOM 275 HW1 SOL 91 8.811 11.221 17.291 1.00 0.00 H +ATOM 276 HW2 SOL 91 10.031 10.361 16.631 1.00 0.00 H +ATOM 277 OW SOL 92 7.050 10.501 3.680 1.00 0.00 O +ATOM 278 HW1 SOL 92 6.910 10.571 4.670 1.00 0.00 H +ATOM 279 HW2 SOL 92 7.890 9.991 3.500 1.00 0.00 H +ATOM 280 OW SOL 93 4.100 8.130 12.511 1.00 0.00 O +ATOM 281 HW1 SOL 93 4.960 8.250 13.011 1.00 0.00 H +ATOM 282 HW2 SOL 93 3.680 7.260 12.781 1.00 0.00 H +ATOM 283 OW SOL 94 12.741 3.860 12.621 1.00 0.00 O +ATOM 284 HW1 SOL 94 12.951 4.600 13.261 1.00 0.00 H +ATOM 285 HW2 SOL 94 11.851 4.030 12.191 1.00 0.00 H +ATOM 286 OW SOL 95 0.640 15.641 13.311 1.00 0.00 O +ATOM 287 HW1 SOL 95 0.180 16.461 12.971 1.00 0.00 H +ATOM 288 HW2 SOL 95 1.620 15.831 13.401 1.00 0.00 H +ATOM 289 OW SOL 96 3.670 11.001 5.010 1.00 0.00 O +ATOM 290 HW1 SOL 96 3.600 11.831 4.450 1.00 0.00 H +ATOM 291 HW2 SOL 96 3.710 10.201 4.410 1.00 0.00 H +ATOM 292 OW SOL 97 5.660 5.370 8.650 1.00 0.00 O +ATOM 293 HW1 SOL 97 5.780 6.030 7.910 1.00 0.00 H +ATOM 294 HW2 SOL 97 6.120 5.710 9.480 1.00 0.00 H +ATOM 295 OW SOL 98 12.521 13.481 3.880 1.00 0.00 O +ATOM 296 HW1 SOL 98 13.021 14.251 4.280 1.00 0.00 H +ATOM 297 HW2 SOL 98 11.571 13.501 4.200 1.00 0.00 H +ATOM 298 OW SOL 99 12.721 14.451 11.421 1.00 0.00 O +ATOM 299 HW1 SOL 99 13.191 14.581 12.291 1.00 0.00 H +ATOM 300 HW2 SOL 99 12.061 13.711 11.511 1.00 0.00 H +ATOM 301 OW SOL 100 15.821 6.390 4.720 1.00 0.00 O +ATOM 302 HW1 SOL 100 15.511 7.000 5.450 1.00 0.00 H +ATOM 303 HW2 SOL 100 16.321 6.910 4.030 1.00 0.00 H +ATOM 304 OW SOL 101 3.540 15.101 13.291 1.00 0.00 O +ATOM 305 HW1 SOL 101 3.330 14.661 12.421 1.00 0.00 H +ATOM 306 HW2 SOL 101 4.510 15.361 13.321 1.00 0.00 H +ATOM 307 OW SOL 102 4.020 7.510 15.981 1.00 0.00 O +ATOM 308 HW1 SOL 102 4.700 8.060 15.511 1.00 0.00 H +ATOM 309 HW2 SOL 102 4.420 6.630 16.251 1.00 0.00 H +ATOM 310 OW SOL 103 15.871 7.790 16.701 1.00 0.00 O +ATOM 311 HW1 SOL 103 14.951 8.170 16.651 1.00 0.00 H +ATOM 312 HW2 SOL 103 16.471 8.260 16.051 1.00 0.00 H +ATOM 313 OW SOL 104 10.131 1.050 17.701 1.00 0.00 O +ATOM 314 HW1 SOL 104 10.191 1.900 17.181 1.00 0.00 H +ATOM 315 HW2 SOL 104 10.451 0.290 17.131 1.00 0.00 H +ATOM 316 OW SOL 105 5.040 0.500 17.401 1.00 0.00 O +ATOM 317 HW1 SOL 105 4.620 -0.070 16.701 1.00 0.00 H +ATOM 318 HW2 SOL 105 4.380 1.190 17.721 1.00 0.00 H +ATOM 319 OW SOL 106 5.730 8.700 10.291 1.00 0.00 O +ATOM 320 HW1 SOL 106 6.170 9.590 10.201 1.00 0.00 H +ATOM 321 HW2 SOL 106 5.100 8.700 11.061 1.00 0.00 H +ATOM 322 OW SOL 107 13.601 8.620 10.451 1.00 0.00 O +ATOM 323 HW1 SOL 107 12.851 8.620 9.791 1.00 0.00 H +ATOM 324 HW2 SOL 107 13.971 7.700 10.541 1.00 0.00 H +ATOM 325 OW SOL 108 12.091 5.250 2.750 1.00 0.00 O +ATOM 326 HW1 SOL 108 12.221 4.410 3.290 1.00 0.00 H +ATOM 327 HW2 SOL 108 11.801 5.990 3.350 1.00 0.00 H +ATOM 328 OW SOL 109 3.070 2.130 12.311 1.00 0.00 O +ATOM 329 HW1 SOL 109 2.840 2.500 13.211 1.00 0.00 H +ATOM 330 HW2 SOL 109 2.770 1.180 12.251 1.00 0.00 H +ATOM 331 OW SOL 110 7.320 6.340 10.641 1.00 0.00 O +ATOM 332 HW1 SOL 110 7.910 6.080 9.881 1.00 0.00 H +ATOM 333 HW2 SOL 110 7.040 7.300 10.531 1.00 0.00 H +ATOM 334 OW SOL 111 17.281 9.351 18.541 1.00 0.00 O +ATOM 335 HW1 SOL 111 16.821 9.281 17.651 1.00 0.00 H +ATOM 336 HW2 SOL 111 16.661 9.791 19.201 1.00 0.00 H +ATOM 337 OW SOL 112 3.070 0.630 6.180 1.00 0.00 O +ATOM 338 HW1 SOL 112 2.960 1.570 6.510 1.00 0.00 H +ATOM 339 HW2 SOL 112 3.020 0.000 6.950 1.00 0.00 H +ATOM 340 OW SOL 113 16.221 3.670 3.740 1.00 0.00 O +ATOM 341 HW1 SOL 113 16.241 2.910 4.380 1.00 0.00 H +ATOM 342 HW2 SOL 113 15.741 4.440 4.140 1.00 0.00 H +ATOM 343 OW SOL 114 10.231 7.660 9.661 1.00 0.00 O +ATOM 344 HW1 SOL 114 10.381 7.870 10.621 1.00 0.00 H +ATOM 345 HW2 SOL 114 9.931 6.710 9.571 1.00 0.00 H +ATOM 346 OW SOL 115 9.801 15.731 17.001 1.00 0.00 O +ATOM 347 HW1 SOL 115 9.601 16.171 16.121 1.00 0.00 H +ATOM 348 HW2 SOL 115 10.191 14.821 16.841 1.00 0.00 H +ATOM 349 OW SOL 116 18.591 15.181 16.051 1.00 0.00 O +ATOM 350 HW1 SOL 116 18.731 15.451 15.101 1.00 0.00 H +ATOM 351 HW2 SOL 116 19.421 15.401 16.581 1.00 0.00 H +ATOM 352 OW SOL 117 3.500 8.980 18.041 1.00 0.00 O +ATOM 353 HW1 SOL 117 4.260 9.420 18.521 1.00 0.00 H +ATOM 354 HW2 SOL 117 3.850 8.510 17.221 1.00 0.00 H +ATOM 355 OW SOL 118 15.401 2.740 1.250 1.00 0.00 O +ATOM 356 HW1 SOL 118 14.791 1.990 1.480 1.00 0.00 H +ATOM 357 HW2 SOL 118 15.621 3.260 2.080 1.00 0.00 H +ATOM 358 OW SOL 119 13.031 8.380 0.420 1.00 0.00 O +ATOM 359 HW1 SOL 119 13.371 7.450 0.570 1.00 0.00 H +ATOM 360 HW2 SOL 119 13.211 8.650 -0.530 1.00 0.00 H +ATOM 361 OW SOL 120 10.681 13.331 8.490 1.00 0.00 O +ATOM 362 HW1 SOL 120 10.751 12.491 7.940 1.00 0.00 H +ATOM 363 HW2 SOL 120 11.301 14.021 8.130 1.00 0.00 H +ATOM 364 OW SOL 121 3.190 8.100 9.491 1.00 0.00 O +ATOM 365 HW1 SOL 121 4.120 8.460 9.541 1.00 0.00 H +ATOM 366 HW2 SOL 121 3.130 7.250 10.011 1.00 0.00 H +ATOM 367 OW SOL 122 3.390 5.090 10.061 1.00 0.00 O +ATOM 368 HW1 SOL 122 2.870 4.260 9.891 1.00 0.00 H +ATOM 369 HW2 SOL 122 4.160 5.140 9.421 1.00 0.00 H +ATOM 370 OW SOL 123 11.381 3.800 16.781 1.00 0.00 O +ATOM 371 HW1 SOL 123 10.931 4.430 17.421 1.00 0.00 H +ATOM 372 HW2 SOL 123 12.311 4.110 16.611 1.00 0.00 H +ATOM 373 OW SOL 124 11.601 2.070 14.771 1.00 0.00 O +ATOM 374 HW1 SOL 124 11.601 2.710 15.541 1.00 0.00 H +ATOM 375 HW2 SOL 124 11.881 2.550 13.941 1.00 0.00 H +ATOM 376 OW SOL 125 0.880 18.011 9.270 1.00 0.00 O +ATOM 377 HW1 SOL 125 0.460 17.151 9.000 1.00 0.00 H +ATOM 378 HW2 SOL 125 1.820 18.041 8.930 1.00 0.00 H +ATOM 379 OW SOL 126 5.040 15.681 9.100 1.00 0.00 O +ATOM 380 HW1 SOL 126 5.700 16.421 9.190 1.00 0.00 H +ATOM 381 HW2 SOL 126 5.480 14.891 8.680 1.00 0.00 H +ATOM 382 OW SOL 127 10.021 7.960 12.381 1.00 0.00 O +ATOM 383 HW1 SOL 127 10.431 7.640 13.241 1.00 0.00 H +ATOM 384 HW2 SOL 127 9.061 7.690 12.351 1.00 0.00 H +ATOM 385 OW SOL 128 1.890 5.200 17.221 1.00 0.00 O +ATOM 386 HW1 SOL 128 2.480 4.800 16.521 1.00 0.00 H +ATOM 387 HW2 SOL 128 1.310 5.910 16.811 1.00 0.00 H +ATOM 388 OW SOL 129 13.691 9.501 16.601 1.00 0.00 O +ATOM 389 HW1 SOL 129 14.081 10.391 16.801 1.00 0.00 H +ATOM 390 HW2 SOL 129 13.791 9.301 15.631 1.00 0.00 H +ATOM 391 OW SOL 130 8.150 5.720 3.250 1.00 0.00 O +ATOM 392 HW1 SOL 130 8.220 4.830 2.790 1.00 0.00 H +ATOM 393 HW2 SOL 130 7.210 6.060 3.170 1.00 0.00 H +ATOM 394 OW SOL 131 16.571 6.040 12.061 1.00 0.00 O +ATOM 395 HW1 SOL 131 16.191 5.350 12.681 1.00 0.00 H +ATOM 396 HW2 SOL 131 17.391 5.680 11.621 1.00 0.00 H +ATOM 397 OW SOL 132 2.520 15.641 17.441 1.00 0.00 O +ATOM 398 HW1 SOL 132 2.220 16.211 18.201 1.00 0.00 H +ATOM 399 HW2 SOL 132 2.450 14.671 17.701 1.00 0.00 H +ATOM 400 OW SOL 133 6.710 4.640 12.691 1.00 0.00 O +ATOM 401 HW1 SOL 133 6.370 3.750 12.391 1.00 0.00 H +ATOM 402 HW2 SOL 133 6.970 5.180 11.891 1.00 0.00 H +ATOM 403 OW SOL 134 9.300 16.781 14.651 1.00 0.00 O +ATOM 404 HW1 SOL 134 9.060 16.601 13.701 1.00 0.00 H +ATOM 405 HW2 SOL 134 9.600 17.721 14.751 1.00 0.00 H +ATOM 406 OW SOL 135 4.730 5.000 1.910 1.00 0.00 O +ATOM 407 HW1 SOL 135 5.340 5.800 1.950 1.00 0.00 H +ATOM 408 HW2 SOL 135 3.780 5.310 1.980 1.00 0.00 H +ATOM 409 OW SOL 136 1.590 11.371 14.661 1.00 0.00 O +ATOM 410 HW1 SOL 136 1.810 10.761 15.421 1.00 0.00 H +ATOM 411 HW2 SOL 136 1.690 10.881 13.801 1.00 0.00 H +ATOM 412 OW SOL 137 13.471 10.591 12.341 1.00 0.00 O +ATOM 413 HW1 SOL 137 13.711 9.961 11.601 1.00 0.00 H +ATOM 414 HW2 SOL 137 12.571 10.991 12.161 1.00 0.00 H +ATOM 415 OW SOL 138 13.021 8.550 3.090 1.00 0.00 O +ATOM 416 HW1 SOL 138 12.161 8.240 3.510 1.00 0.00 H +ATOM 417 HW2 SOL 138 12.981 8.410 2.100 1.00 0.00 H +ATOM 418 OW SOL 139 17.591 17.471 11.541 1.00 0.00 O +ATOM 419 HW1 SOL 139 18.201 17.771 10.811 1.00 0.00 H +ATOM 420 HW2 SOL 139 17.211 16.581 11.321 1.00 0.00 H +ATOM 421 OW SOL 140 12.521 17.311 11.281 1.00 0.00 O +ATOM 422 HW1 SOL 140 13.361 17.361 10.741 1.00 0.00 H +ATOM 423 HW2 SOL 140 12.291 16.351 11.461 1.00 0.00 H +ATOM 424 OW SOL 141 0.830 12.581 10.221 1.00 0.00 O +ATOM 425 HW1 SOL 141 0.780 12.571 11.221 1.00 0.00 H +ATOM 426 HW2 SOL 141 0.000 12.171 9.841 1.00 0.00 H +ATOM 427 OW SOL 142 6.880 16.621 17.161 1.00 0.00 O +ATOM 428 HW1 SOL 142 6.320 17.431 17.251 1.00 0.00 H +ATOM 429 HW2 SOL 142 7.400 16.661 16.301 1.00 0.00 H +ATOM 430 OW SOL 143 9.030 0.860 1.330 1.00 0.00 O +ATOM 431 HW1 SOL 143 9.540 0.870 0.470 1.00 0.00 H +ATOM 432 HW2 SOL 143 9.590 0.440 2.040 1.00 0.00 H +ATOM 433 OW SOL 144 17.261 1.350 5.230 1.00 0.00 O +ATOM 434 HW1 SOL 144 17.991 1.180 4.560 1.00 0.00 H +ATOM 435 HW2 SOL 144 16.951 0.480 5.610 1.00 0.00 H +ATOM 436 OW SOL 145 13.881 15.731 4.770 1.00 0.00 O +ATOM 437 HW1 SOL 145 14.551 15.851 4.030 1.00 0.00 H +ATOM 438 HW2 SOL 145 13.481 16.621 5.000 1.00 0.00 H +ATOM 439 OW SOL 146 12.801 9.270 6.720 1.00 0.00 O +ATOM 440 HW1 SOL 146 13.401 8.460 6.740 1.00 0.00 H +ATOM 441 HW2 SOL 146 13.201 9.960 6.120 1.00 0.00 H +ATOM 442 OW SOL 147 8.300 12.731 14.221 1.00 0.00 O +ATOM 443 HW1 SOL 147 8.250 13.061 15.171 1.00 0.00 H +ATOM 444 HW2 SOL 147 7.440 12.921 13.761 1.00 0.00 H +ATOM 445 OW SOL 148 6.720 16.161 1.540 1.00 0.00 O +ATOM 446 HW1 SOL 148 6.810 16.261 0.550 1.00 0.00 H +ATOM 447 HW2 SOL 148 6.320 15.271 1.750 1.00 0.00 H +ATOM 448 OW SOL 149 16.501 17.201 13.941 1.00 0.00 O +ATOM 449 HW1 SOL 149 17.031 17.301 13.101 1.00 0.00 H +ATOM 450 HW2 SOL 149 16.231 18.101 14.281 1.00 0.00 H +ATOM 451 OW SOL 150 18.411 1.750 9.631 1.00 0.00 O +ATOM 452 HW1 SOL 150 18.801 0.900 9.271 1.00 0.00 H +ATOM 453 HW2 SOL 150 17.431 1.770 9.441 1.00 0.00 H +ATOM 454 OW SOL 151 2.630 3.260 7.200 1.00 0.00 O +ATOM 455 HW1 SOL 151 1.840 3.770 6.860 1.00 0.00 H +ATOM 456 HW2 SOL 151 2.540 3.110 8.180 1.00 0.00 H +ATOM 457 OW SOL 152 11.941 16.121 0.310 1.00 0.00 O +ATOM 458 HW1 SOL 152 12.001 15.191 0.680 1.00 0.00 H +ATOM 459 HW2 SOL 152 11.351 16.121 -0.490 1.00 0.00 H +ATOM 460 OW SOL 153 8.220 10.021 13.721 1.00 0.00 O +ATOM 461 HW1 SOL 153 8.620 10.011 12.801 1.00 0.00 H +ATOM 462 HW2 SOL 153 8.320 10.941 14.121 1.00 0.00 H +ATOM 463 OW SOL 154 9.160 9.100 2.910 1.00 0.00 O +ATOM 464 HW1 SOL 154 9.790 9.480 2.230 1.00 0.00 H +ATOM 465 HW2 SOL 154 9.560 8.270 3.300 1.00 0.00 H +ATOM 466 OW SOL 155 15.041 16.071 0.440 1.00 0.00 O +ATOM 467 HW1 SOL 155 14.121 16.441 0.510 1.00 0.00 H +ATOM 468 HW2 SOL 155 15.421 16.271 -0.460 1.00 0.00 H +ATOM 469 OW SOL 156 3.720 12.881 14.901 1.00 0.00 O +ATOM 470 HW1 SOL 156 3.590 13.811 14.561 1.00 0.00 H +ATOM 471 HW2 SOL 156 2.880 12.361 14.771 1.00 0.00 H +ATOM 472 OW SOL 157 16.141 12.921 12.891 1.00 0.00 O +ATOM 473 HW1 SOL 157 16.741 12.951 13.691 1.00 0.00 H +ATOM 474 HW2 SOL 157 15.391 13.561 13.021 1.00 0.00 H +ATOM 475 OW SOL 158 10.391 10.981 6.960 1.00 0.00 O +ATOM 476 HW1 SOL 158 9.691 10.511 7.500 1.00 0.00 H +ATOM 477 HW2 SOL 158 10.981 10.301 6.530 1.00 0.00 H +ATOM 478 OW SOL 159 10.141 2.360 9.711 1.00 0.00 O +ATOM 479 HW1 SOL 159 10.061 2.000 8.781 1.00 0.00 H +ATOM 480 HW2 SOL 159 10.121 1.600 10.361 1.00 0.00 H +ATOM 481 OW SOL 160 5.900 14.871 4.910 1.00 0.00 O +ATOM 482 HW1 SOL 160 6.320 14.291 4.210 1.00 0.00 H +ATOM 483 HW2 SOL 160 5.460 15.661 4.470 1.00 0.00 H +ATOM 484 OW SOL 161 17.091 3.850 13.811 1.00 0.00 O +ATOM 485 HW1 SOL 161 17.821 4.540 13.851 1.00 0.00 H +ATOM 486 HW2 SOL 161 17.371 3.100 13.221 1.00 0.00 H +ATOM 487 OW SOL 162 2.550 13.481 2.900 1.00 0.00 O +ATOM 488 HW1 SOL 162 1.590 13.491 2.630 1.00 0.00 H +ATOM 489 HW2 SOL 162 2.670 14.011 3.740 1.00 0.00 H +ATOM 490 OW SOL 163 1.050 10.131 17.261 1.00 0.00 O +ATOM 491 HW1 SOL 163 0.280 9.801 17.801 1.00 0.00 H +ATOM 492 HW2 SOL 163 1.900 9.831 17.681 1.00 0.00 H +ATOM 493 OW SOL 164 6.720 2.030 14.891 1.00 0.00 O +ATOM 494 HW1 SOL 164 7.620 1.870 14.491 1.00 0.00 H +ATOM 495 HW2 SOL 164 6.800 2.080 15.881 1.00 0.00 H +ATOM 496 OW SOL 165 14.401 8.560 13.981 1.00 0.00 O +ATOM 497 HW1 SOL 165 13.831 9.080 13.351 1.00 0.00 H +ATOM 498 HW2 SOL 165 15.361 8.680 13.741 1.00 0.00 H +ATOM 499 OW SOL 166 11.831 13.351 1.190 1.00 0.00 O +ATOM 500 HW1 SOL 166 10.841 13.241 1.210 1.00 0.00 H +ATOM 501 HW2 SOL 166 12.171 13.501 2.120 1.00 0.00 H +ATOM 502 OW SOL 167 6.130 8.420 14.311 1.00 0.00 O +ATOM 503 HW1 SOL 167 6.690 9.230 14.141 1.00 0.00 H +ATOM 504 HW2 SOL 167 6.720 7.620 14.341 1.00 0.00 H +ATOM 505 OW SOL 168 14.931 17.671 9.591 1.00 0.00 O +ATOM 506 HW1 SOL 168 15.261 18.311 8.901 1.00 0.00 H +ATOM 507 HW2 SOL 168 15.591 17.611 10.341 1.00 0.00 H +ATOM 508 OW SOL 169 7.160 5.650 17.081 1.00 0.00 O +ATOM 509 HW1 SOL 169 7.350 6.300 17.821 1.00 0.00 H +ATOM 510 HW2 SOL 169 7.760 4.850 17.171 1.00 0.00 H +ATOM 511 OW SOL 170 14.501 12.201 16.331 1.00 0.00 O +ATOM 512 HW1 SOL 170 14.411 12.101 17.321 1.00 0.00 H +ATOM 513 HW2 SOL 170 15.461 12.131 16.071 1.00 0.00 H +ATOM 514 OW SOL 171 3.900 17.411 15.601 1.00 0.00 O +ATOM 515 HW1 SOL 171 2.990 17.821 15.581 1.00 0.00 H +ATOM 516 HW2 SOL 171 3.830 16.471 15.921 1.00 0.00 H +ATOM 517 OW SOL 172 16.741 8.830 12.541 1.00 0.00 O +ATOM 518 HW1 SOL 172 16.471 7.940 12.171 1.00 0.00 H +ATOM 519 HW2 SOL 172 16.751 9.510 11.811 1.00 0.00 H +ATOM 520 OW SOL 173 12.251 3.250 4.490 1.00 0.00 O +ATOM 521 HW1 SOL 173 12.901 2.510 4.380 1.00 0.00 H +ATOM 522 HW2 SOL 173 12.451 3.750 5.330 1.00 0.00 H +ATOM 523 OW SOL 174 5.940 7.450 6.520 1.00 0.00 O +ATOM 524 HW1 SOL 174 6.440 8.300 6.330 1.00 0.00 H +ATOM 525 HW2 SOL 174 5.060 7.470 6.040 1.00 0.00 H +ATOM 526 OW SOL 175 17.771 3.420 16.421 1.00 0.00 O +ATOM 527 HW1 SOL 175 17.601 3.730 15.481 1.00 0.00 H +ATOM 528 HW2 SOL 175 16.931 3.050 16.801 1.00 0.00 H +ATOM 529 OW SOL 176 17.301 9.341 15.171 1.00 0.00 O +ATOM 530 HW1 SOL 176 17.681 10.251 15.321 1.00 0.00 H +ATOM 531 HW2 SOL 176 17.221 9.171 14.181 1.00 0.00 H +ATOM 532 OW SOL 177 8.590 13.741 0.160 1.00 0.00 O +ATOM 533 HW1 SOL 177 8.130 13.891 1.040 1.00 0.00 H +ATOM 534 HW2 SOL 177 9.030 14.591 -0.140 1.00 0.00 H +ATOM 535 OW SOL 178 6.610 17.901 9.531 1.00 0.00 O +ATOM 536 HW1 SOL 178 6.150 18.781 9.401 1.00 0.00 H +ATOM 537 HW2 SOL 178 7.600 18.021 9.461 1.00 0.00 H +ATOM 538 OW SOL 179 8.590 9.561 8.610 1.00 0.00 O +ATOM 539 HW1 SOL 179 9.130 8.871 9.090 1.00 0.00 H +ATOM 540 HW2 SOL 179 8.270 10.251 9.270 1.00 0.00 H +ATOM 541 OW SOL 180 10.831 9.841 0.870 1.00 0.00 O +ATOM 542 HW1 SOL 180 10.601 10.371 0.050 1.00 0.00 H +ATOM 543 HW2 SOL 180 11.641 9.281 0.680 1.00 0.00 H +ATOM 544 OW SOL 181 18.611 15.691 8.510 1.00 0.00 O +ATOM 545 HW1 SOL 181 17.901 15.571 7.810 1.00 0.00 H +ATOM 546 HW2 SOL 181 18.621 14.901 9.110 1.00 0.00 H +ATOM 547 OW SOL 182 2.210 13.141 18.441 1.00 0.00 O +ATOM 548 HW1 SOL 182 1.560 12.411 18.231 1.00 0.00 H +ATOM 549 HW2 SOL 182 2.250 13.281 19.421 1.00 0.00 H +ATOM 550 OW SOL 183 0.790 12.401 6.530 1.00 0.00 O +ATOM 551 HW1 SOL 183 0.780 11.931 7.410 1.00 0.00 H +ATOM 552 HW2 SOL 183 1.610 12.121 6.020 1.00 0.00 H +ATOM 553 OW SOL 184 6.720 13.911 16.241 1.00 0.00 O +ATOM 554 HW1 SOL 184 5.940 13.411 16.621 1.00 0.00 H +ATOM 555 HW2 SOL 184 6.690 14.861 16.551 1.00 0.00 H +ATOM 556 OW SOL 185 18.241 1.920 12.271 1.00 0.00 O +ATOM 557 HW1 SOL 185 18.201 1.020 12.711 1.00 0.00 H +ATOM 558 HW2 SOL 185 18.271 1.810 11.281 1.00 0.00 H +ATOM 559 OW SOL 186 4.280 4.240 5.200 1.00 0.00 O +ATOM 560 HW1 SOL 186 4.580 3.520 4.580 1.00 0.00 H +ATOM 561 HW2 SOL 186 3.890 3.840 6.030 1.00 0.00 H +ATOM 562 OW SOL 187 17.051 14.871 11.041 1.00 0.00 O +ATOM 563 HW1 SOL 187 16.121 14.621 10.771 1.00 0.00 H +ATOM 564 HW2 SOL 187 17.311 14.371 11.861 1.00 0.00 H +ATOM 565 OW SOL 188 3.170 5.470 12.801 1.00 0.00 O +ATOM 566 HW1 SOL 188 3.550 4.880 13.521 1.00 0.00 H +ATOM 567 HW2 SOL 188 3.570 5.210 11.921 1.00 0.00 H +ATOM 568 OW SOL 189 8.120 15.861 6.870 1.00 0.00 O +ATOM 569 HW1 SOL 189 8.440 15.961 5.930 1.00 0.00 H +ATOM 570 HW2 SOL 189 7.330 15.241 6.890 1.00 0.00 H +ATOM 571 OW SOL 190 14.241 2.140 11.121 1.00 0.00 O +ATOM 572 HW1 SOL 190 14.761 1.490 11.671 1.00 0.00 H +ATOM 573 HW2 SOL 190 13.751 2.770 11.731 1.00 0.00 H +ATOM 574 OW SOL 191 10.011 0.340 11.541 1.00 0.00 O +ATOM 575 HW1 SOL 191 9.381 -0.380 11.231 1.00 0.00 H +ATOM 576 HW2 SOL 191 10.941 -0.020 11.541 1.00 0.00 H +ATOM 577 OW SOL 192 7.700 13.301 3.010 1.00 0.00 O +ATOM 578 HW1 SOL 192 7.240 12.431 3.180 1.00 0.00 H +ATOM 579 HW2 SOL 192 8.610 13.271 3.420 1.00 0.00 H +ATOM 580 OW SOL 193 6.180 15.671 12.841 1.00 0.00 O +ATOM 581 HW1 SOL 193 6.130 16.491 13.411 1.00 0.00 H +ATOM 582 HW2 SOL 193 7.070 15.641 12.391 1.00 0.00 H +ATOM 583 OW SOL 194 13.521 0.520 1.680 1.00 0.00 O +ATOM 584 HW1 SOL 194 13.871 0.110 0.840 1.00 0.00 H +ATOM 585 HW2 SOL 194 12.621 0.140 1.880 1.00 0.00 H +ATOM 586 OW SOL 195 13.001 4.530 6.910 1.00 0.00 O +ATOM 587 HW1 SOL 195 12.411 5.330 6.950 1.00 0.00 H +ATOM 588 HW2 SOL 195 13.151 4.180 7.840 1.00 0.00 H +ATOM 589 OW SOL 196 15.931 2.210 8.820 1.00 0.00 O +ATOM 590 HW1 SOL 196 15.091 2.200 9.360 1.00 0.00 H +ATOM 591 HW2 SOL 196 15.951 3.040 8.260 1.00 0.00 H +ATOM 592 OW SOL 197 0.390 10.771 3.000 1.00 0.00 O +ATOM 593 HW1 SOL 197 1.380 10.661 2.910 1.00 0.00 H +ATOM 594 HW2 SOL 197 -0.010 9.911 3.320 1.00 0.00 H +ATOM 595 OW SOL 198 8.750 16.461 3.370 1.00 0.00 O +ATOM 596 HW1 SOL 198 7.980 16.111 2.830 1.00 0.00 H +ATOM 597 HW2 SOL 198 8.430 17.171 3.990 1.00 0.00 H +ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O +ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H +ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H +ATOM 601 OW SOL 200 6.060 9.641 19.851 1.00 0.00 O +ATOM 602 HW1 SOL 200 6.130 10.481 19.311 1.00 0.00 H +ATOM 603 HW2 SOL 200 6.520 9.771 20.731 1.00 0.00 H +ATOM 604 OW SOL 201 18.421 17.671 0.381 1.00 0.00 O +ATOM 605 HW1 SOL 201 18.961 17.381 1.181 1.00 0.00 H +ATOM 606 HW2 SOL 201 18.721 18.571 0.091 1.00 0.00 H +ATOM 607 OW SOL 202 0.270 15.961 19.791 1.00 0.00 O +ATOM 608 HW1 SOL 202 0.080 15.001 20.001 1.00 0.00 H +ATOM 609 HW2 SOL 202 -0.060 16.541 20.541 1.00 0.00 H +ATOM 610 OW SOL 203 16.411 11.081 1.111 1.00 0.00 O +ATOM 611 HW1 SOL 203 17.271 11.101 0.591 1.00 0.00 H +ATOM 612 HW2 SOL 203 16.551 11.551 1.991 1.00 0.00 H +ATOM 613 OW SOL 204 15.251 9.991 20.521 1.00 0.00 O +ATOM 614 HW1 SOL 204 14.621 9.231 20.651 1.00 0.00 H +ATOM 615 HW2 SOL 204 15.731 10.171 21.381 1.00 0.00 H +ATOM 616 OW SOL 205 5.980 7.290 21.321 1.00 0.00 O +ATOM 617 HW1 SOL 205 6.220 7.980 20.641 1.00 0.00 H +ATOM 618 HW2 SOL 205 5.200 7.620 21.861 1.00 0.00 H +ATOM 619 OW SOL 206 8.650 3.480 20.571 1.00 0.00 O +ATOM 620 HW1 SOL 206 9.240 4.110 20.081 1.00 0.00 H +ATOM 621 HW2 SOL 206 8.840 2.540 20.281 1.00 0.00 H +ATOM 622 OW SOL 207 10.081 14.561 1.561 1.00 0.00 O +ATOM 623 HW1 SOL 207 9.621 15.281 1.041 1.00 0.00 H +ATOM 624 HW2 SOL 207 10.041 14.761 2.541 1.00 0.00 H +ATOM 625 OW SOL 208 3.210 9.431 21.041 1.00 0.00 O +ATOM 626 HW1 SOL 208 4.030 9.821 20.621 1.00 0.00 H +ATOM 627 HW2 SOL 208 2.940 8.611 20.551 1.00 0.00 H +ATOM 628 OW SOL 209 16.321 13.771 19.431 1.00 0.00 O +ATOM 629 HW1 SOL 209 16.001 14.711 19.331 1.00 0.00 H +ATOM 630 HW2 SOL 209 15.561 13.141 19.311 1.00 0.00 H +ATOM 631 OW SOL 210 4.640 17.431 0.021 1.00 0.00 O +ATOM 632 HW1 SOL 210 4.970 17.821 0.881 1.00 0.00 H +ATOM 633 HW2 SOL 210 5.400 17.361 -0.629 1.00 0.00 H +ATOM 634 OW SOL 211 6.140 1.220 19.791 1.00 0.00 O +ATOM 635 HW1 SOL 211 7.120 1.000 19.861 1.00 0.00 H +ATOM 636 HW2 SOL 211 5.830 1.050 18.861 1.00 0.00 H +ATOM 637 OW SOL 212 14.341 11.881 19.031 1.00 0.00 O +ATOM 638 HW1 SOL 212 14.661 11.121 19.601 1.00 0.00 H +ATOM 639 HW2 SOL 212 13.421 12.151 19.331 1.00 0.00 H +ATOM 640 OW SOL 213 2.970 0.350 20.331 1.00 0.00 O +ATOM 641 HW1 SOL 213 3.460 1.190 20.121 1.00 0.00 H +ATOM 642 HW2 SOL 213 3.590 -0.300 20.781 1.00 0.00 H +ATOM 643 OW SOL 214 10.321 5.490 18.781 1.00 0.00 O +ATOM 644 HW1 SOL 214 9.911 6.310 18.391 1.00 0.00 H +ATOM 645 HW2 SOL 214 10.961 5.750 19.511 1.00 0.00 H +ATOM 646 OW SOL 215 18.571 8.330 0.561 1.00 0.00 O +ATOM 647 HW1 SOL 215 18.991 7.690 1.201 1.00 0.00 H +ATOM 648 HW2 SOL 215 18.191 7.820 -0.219 1.00 0.00 H +ATOM 649 OW SOL 216 4.880 13.851 20.361 1.00 0.00 O +ATOM 650 HW1 SOL 216 4.010 13.701 20.831 1.00 0.00 H +ATOM 651 HW2 SOL 216 4.710 14.111 19.411 1.00 0.00 H +ATOM 652 OW SOL 217 13.901 5.750 19.401 1.00 0.00 O +ATOM 653 HW1 SOL 217 13.361 5.540 20.211 1.00 0.00 H +ATOM 654 HW2 SOL 217 14.811 5.340 19.491 1.00 0.00 H +ATOM 655 OW SOL 218 15.821 6.390 1.511 1.00 0.00 O +ATOM 656 HW1 SOL 218 15.511 7.000 2.241 1.00 0.00 H +ATOM 657 HW2 SOL 218 16.321 6.910 0.821 1.00 0.00 H +ATOM 658 OW SOL 219 15.401 2.740 19.871 1.00 0.00 O +ATOM 659 HW1 SOL 219 14.791 1.990 20.101 1.00 0.00 H +ATOM 660 HW2 SOL 219 15.621 3.260 20.701 1.00 0.00 H +ATOM 661 OW SOL 220 13.031 8.380 19.041 1.00 0.00 O +ATOM 662 HW1 SOL 220 13.371 7.450 19.191 1.00 0.00 H +ATOM 663 HW2 SOL 220 13.211 8.650 18.091 1.00 0.00 H +ATOM 664 OW SOL 221 8.150 5.720 0.041 1.00 0.00 O +ATOM 665 HW1 SOL 221 8.220 4.830 -0.419 1.00 0.00 H +ATOM 666 HW2 SOL 221 7.210 6.060 -0.039 1.00 0.00 H +ATOM 667 OW SOL 222 4.730 5.000 20.531 1.00 0.00 O +ATOM 668 HW1 SOL 222 5.340 5.800 20.571 1.00 0.00 H +ATOM 669 HW2 SOL 222 3.780 5.310 20.601 1.00 0.00 H +ATOM 670 OW SOL 223 17.261 1.350 2.021 1.00 0.00 O +ATOM 671 HW1 SOL 223 17.991 1.180 1.351 1.00 0.00 H +ATOM 672 HW2 SOL 223 16.951 0.480 2.401 1.00 0.00 H +ATOM 673 OW SOL 224 6.720 16.161 20.161 1.00 0.00 O +ATOM 674 HW1 SOL 224 6.810 16.261 19.171 1.00 0.00 H +ATOM 675 HW2 SOL 224 6.320 15.271 20.371 1.00 0.00 H +ATOM 676 OW SOL 225 11.941 16.121 18.931 1.00 0.00 O +ATOM 677 HW1 SOL 225 12.001 15.191 19.301 1.00 0.00 H +ATOM 678 HW2 SOL 225 11.351 16.121 18.131 1.00 0.00 H +ATOM 679 OW SOL 226 9.160 9.100 21.531 1.00 0.00 O +ATOM 680 HW1 SOL 226 9.790 9.480 20.851 1.00 0.00 H +ATOM 681 HW2 SOL 226 9.560 8.270 21.921 1.00 0.00 H +ATOM 682 OW SOL 227 15.041 16.071 19.061 1.00 0.00 O +ATOM 683 HW1 SOL 227 14.121 16.441 19.131 1.00 0.00 H +ATOM 684 HW2 SOL 227 15.421 16.271 18.161 1.00 0.00 H +ATOM 685 OW SOL 228 2.550 13.481 21.521 1.00 0.00 O +ATOM 686 HW1 SOL 228 1.590 13.491 21.251 1.00 0.00 H +ATOM 687 HW2 SOL 228 2.670 14.011 22.361 1.00 0.00 H +ATOM 688 OW SOL 229 0.750 3.450 18.951 1.00 0.00 O +ATOM 689 HW1 SOL 229 -0.170 3.170 18.661 1.00 0.00 H +ATOM 690 HW2 SOL 229 1.060 4.220 18.391 1.00 0.00 H +ATOM 691 OW SOL 230 11.831 13.351 19.811 1.00 0.00 O +ATOM 692 HW1 SOL 230 10.841 13.241 19.831 1.00 0.00 H +ATOM 693 HW2 SOL 230 12.171 13.501 20.741 1.00 0.00 H +ATOM 694 OW SOL 231 8.590 13.741 18.781 1.00 0.00 O +ATOM 695 HW1 SOL 231 8.130 13.891 19.661 1.00 0.00 H +ATOM 696 HW2 SOL 231 9.030 14.591 18.481 1.00 0.00 H +ATOM 697 OW SOL 232 10.831 9.841 19.491 1.00 0.00 O +ATOM 698 HW1 SOL 232 10.601 10.371 18.671 1.00 0.00 H +ATOM 699 HW2 SOL 232 11.641 9.281 19.301 1.00 0.00 H +ATOM 700 OW SOL 233 13.521 0.520 20.301 1.00 0.00 O +ATOM 701 HW1 SOL 233 13.871 0.110 19.461 1.00 0.00 H +ATOM 702 HW2 SOL 233 12.621 0.140 20.501 1.00 0.00 H +ATOM 703 OW SOL 234 0.390 10.771 21.621 1.00 0.00 O +ATOM 704 HW1 SOL 234 1.380 10.661 21.531 1.00 0.00 H +ATOM 705 HW2 SOL 234 -0.010 9.911 21.941 1.00 0.00 H +ATOM 706 OW SOL 235 8.750 16.461 0.161 1.00 0.00 O +ATOM 707 HW1 SOL 235 7.980 16.111 -0.379 1.00 0.00 H +ATOM 708 HW2 SOL 235 8.430 17.171 0.781 1.00 0.00 H +ATOM 709 OW SOL 236 4.380 0.711 14.991 1.00 0.00 O +ATOM 710 HW1 SOL 236 5.200 0.151 15.081 1.00 0.00 H +ATOM 711 HW2 SOL 236 3.570 0.131 15.031 1.00 0.00 H +ATOM 712 OW SOL 237 15.941 19.761 14.801 1.00 0.00 O +ATOM 713 HW1 SOL 237 15.761 20.431 14.081 1.00 0.00 H +ATOM 714 HW2 SOL 237 15.911 20.221 15.691 1.00 0.00 H +ATOM 715 OW SOL 238 8.090 18.661 5.020 1.00 0.00 O +ATOM 716 HW1 SOL 238 8.490 19.571 4.930 1.00 0.00 H +ATOM 717 HW2 SOL 238 7.090 18.741 5.080 1.00 0.00 H +ATOM 718 OW SOL 239 12.811 0.241 9.441 1.00 0.00 O +ATOM 719 HW1 SOL 239 11.951 -0.259 9.311 1.00 0.00 H +ATOM 720 HW2 SOL 239 13.431 -0.299 10.001 1.00 0.00 H +ATOM 721 OW SOL 240 5.500 20.581 8.850 1.00 0.00 O +ATOM 722 HW1 SOL 240 5.450 20.531 9.850 1.00 0.00 H +ATOM 723 HW2 SOL 240 5.520 21.541 8.560 1.00 0.00 H +ATOM 724 OW SOL 241 2.020 21.471 14.981 1.00 0.00 O +ATOM 725 HW1 SOL 241 1.220 22.071 14.851 1.00 0.00 H +ATOM 726 HW2 SOL 241 1.920 20.981 15.841 1.00 0.00 H +ATOM 727 OW SOL 242 14.001 19.691 4.260 1.00 0.00 O +ATOM 728 HW1 SOL 242 13.761 19.321 3.360 1.00 0.00 H +ATOM 729 HW2 SOL 242 14.991 19.851 4.300 1.00 0.00 H +ATOM 730 OW SOL 243 15.471 20.841 17.291 1.00 0.00 O +ATOM 731 HW1 SOL 243 15.421 21.211 18.211 1.00 0.00 H +ATOM 732 HW2 SOL 243 14.751 20.151 17.171 1.00 0.00 H +ATOM 733 OW SOL 244 6.140 19.841 1.170 1.00 0.00 O +ATOM 734 HW1 SOL 244 7.120 19.621 1.240 1.00 0.00 H +ATOM 735 HW2 SOL 244 5.830 19.671 0.240 1.00 0.00 H +ATOM 736 OW SOL 245 7.810 21.261 17.491 1.00 0.00 O +ATOM 737 HW1 SOL 245 8.480 20.651 17.921 1.00 0.00 H +ATOM 738 HW2 SOL 245 7.080 21.451 18.141 1.00 0.00 H +ATOM 739 OW SOL 246 5.390 19.261 5.120 1.00 0.00 O +ATOM 740 HW1 SOL 246 4.580 19.271 5.700 1.00 0.00 H +ATOM 741 HW2 SOL 246 5.420 20.091 4.570 1.00 0.00 H +ATOM 742 OW SOL 247 5.610 20.841 11.471 1.00 0.00 O +ATOM 743 HW1 SOL 247 5.990 20.001 11.841 1.00 0.00 H +ATOM 744 HW2 SOL 247 4.730 21.031 11.911 1.00 0.00 H +ATOM 745 OW SOL 248 10.171 19.011 7.530 1.00 0.00 O +ATOM 746 HW1 SOL 248 9.451 19.061 6.840 1.00 0.00 H +ATOM 747 HW2 SOL 248 9.931 18.321 8.220 1.00 0.00 H +ATOM 748 OW SOL 249 5.270 21.181 3.280 1.00 0.00 O +ATOM 749 HW1 SOL 249 5.540 20.591 2.530 1.00 0.00 H +ATOM 750 HW2 SOL 249 5.270 22.131 2.970 1.00 0.00 H +ATOM 751 OW SOL 250 9.150 19.511 14.021 1.00 0.00 O +ATOM 752 HW1 SOL 250 9.400 19.311 13.071 1.00 0.00 H +ATOM 753 HW2 SOL 250 9.870 20.071 14.441 1.00 0.00 H +ATOM 754 OW SOL 251 12.741 0.651 12.621 1.00 0.00 O +ATOM 755 HW1 SOL 251 12.951 1.391 13.261 1.00 0.00 H +ATOM 756 HW2 SOL 251 11.851 0.821 12.191 1.00 0.00 H +ATOM 757 OW SOL 252 10.131 19.671 17.701 1.00 0.00 O +ATOM 758 HW1 SOL 252 10.191 20.521 17.181 1.00 0.00 H +ATOM 759 HW2 SOL 252 10.451 18.911 17.131 1.00 0.00 H +ATOM 760 OW SOL 253 5.040 19.121 17.401 1.00 0.00 O +ATOM 761 HW1 SOL 253 4.620 18.551 16.701 1.00 0.00 H +ATOM 762 HW2 SOL 253 4.380 19.811 17.721 1.00 0.00 H +ATOM 763 OW SOL 254 3.070 20.751 12.311 1.00 0.00 O +ATOM 764 HW1 SOL 254 2.840 21.121 13.211 1.00 0.00 H +ATOM 765 HW2 SOL 254 2.770 19.801 12.251 1.00 0.00 H +ATOM 766 OW SOL 255 3.070 19.251 6.180 1.00 0.00 O +ATOM 767 HW1 SOL 255 2.960 20.191 6.510 1.00 0.00 H +ATOM 768 HW2 SOL 255 3.020 18.621 6.950 1.00 0.00 H +ATOM 769 OW SOL 256 15.401 21.361 1.250 1.00 0.00 O +ATOM 770 HW1 SOL 256 14.791 20.611 1.480 1.00 0.00 H +ATOM 771 HW2 SOL 256 15.621 21.881 2.080 1.00 0.00 H +ATOM 772 OW SOL 257 11.601 20.691 14.771 1.00 0.00 O +ATOM 773 HW1 SOL 257 11.601 21.331 15.541 1.00 0.00 H +ATOM 774 HW2 SOL 257 11.881 21.171 13.941 1.00 0.00 H +ATOM 775 OW SOL 258 9.030 19.481 1.330 1.00 0.00 O +ATOM 776 HW1 SOL 258 9.540 19.491 0.470 1.00 0.00 H +ATOM 777 HW2 SOL 258 9.590 19.061 2.040 1.00 0.00 H +ATOM 778 OW SOL 259 17.261 19.971 5.230 1.00 0.00 O +ATOM 779 HW1 SOL 259 17.991 19.801 4.560 1.00 0.00 H +ATOM 780 HW2 SOL 259 16.951 19.101 5.610 1.00 0.00 H +ATOM 781 OW SOL 260 18.411 20.371 9.631 1.00 0.00 O +ATOM 782 HW1 SOL 260 18.801 19.521 9.271 1.00 0.00 H +ATOM 783 HW2 SOL 260 17.431 20.391 9.441 1.00 0.00 H +ATOM 784 OW SOL 261 6.720 20.651 14.891 1.00 0.00 O +ATOM 785 HW1 SOL 261 7.620 20.491 14.491 1.00 0.00 H +ATOM 786 HW2 SOL 261 6.800 20.701 15.881 1.00 0.00 H +ATOM 787 OW SOL 262 12.251 0.041 4.490 1.00 0.00 O +ATOM 788 HW1 SOL 262 12.901 -0.699 4.380 1.00 0.00 H +ATOM 789 HW2 SOL 262 12.451 0.541 5.330 1.00 0.00 H +ATOM 790 OW SOL 263 17.771 0.211 16.421 1.00 0.00 O +ATOM 791 HW1 SOL 263 17.601 0.521 15.481 1.00 0.00 H +ATOM 792 HW2 SOL 263 16.931 -0.159 16.801 1.00 0.00 H +ATOM 793 OW SOL 264 18.241 20.541 12.271 1.00 0.00 O +ATOM 794 HW1 SOL 264 18.201 19.641 12.711 1.00 0.00 H +ATOM 795 HW2 SOL 264 18.271 20.431 11.281 1.00 0.00 H +ATOM 796 OW SOL 265 14.241 20.761 11.121 1.00 0.00 O +ATOM 797 HW1 SOL 265 14.761 20.111 11.671 1.00 0.00 H +ATOM 798 HW2 SOL 265 13.751 21.391 11.731 1.00 0.00 H +ATOM 799 OW SOL 266 10.011 18.961 11.541 1.00 0.00 O +ATOM 800 HW1 SOL 266 9.381 18.241 11.231 1.00 0.00 H +ATOM 801 HW2 SOL 266 10.941 18.601 11.541 1.00 0.00 H +ATOM 802 OW SOL 267 13.521 19.141 1.680 1.00 0.00 O +ATOM 803 HW1 SOL 267 13.871 18.731 0.840 1.00 0.00 H +ATOM 804 HW2 SOL 267 12.621 18.761 1.880 1.00 0.00 H +ATOM 805 OW SOL 268 13.001 1.321 6.910 1.00 0.00 O +ATOM 806 HW1 SOL 268 12.411 2.121 6.950 1.00 0.00 H +ATOM 807 HW2 SOL 268 13.151 0.971 7.840 1.00 0.00 H +ATOM 808 OW SOL 269 15.931 20.831 8.820 1.00 0.00 O +ATOM 809 HW1 SOL 269 15.091 20.821 9.360 1.00 0.00 H +ATOM 810 HW2 SOL 269 15.951 21.661 8.260 1.00 0.00 H +ATOM 811 OW SOL 270 8.650 0.271 20.571 1.00 0.00 O +ATOM 812 HW1 SOL 270 9.240 0.901 20.081 1.00 0.00 H +ATOM 813 HW2 SOL 270 8.840 -0.669 20.281 1.00 0.00 H +ATOM 814 OW SOL 271 6.140 19.841 19.791 1.00 0.00 O +ATOM 815 HW1 SOL 271 7.120 19.621 19.861 1.00 0.00 H +ATOM 816 HW2 SOL 271 5.830 19.671 18.861 1.00 0.00 H +ATOM 817 OW SOL 272 2.970 18.971 20.331 1.00 0.00 O +ATOM 818 HW1 SOL 272 3.460 19.811 20.121 1.00 0.00 H +ATOM 819 HW2 SOL 272 3.590 18.321 20.781 1.00 0.00 H +ATOM 820 OW SOL 273 15.401 21.361 19.871 1.00 0.00 O +ATOM 821 HW1 SOL 273 14.791 20.611 20.101 1.00 0.00 H +ATOM 822 HW2 SOL 273 15.621 21.881 20.701 1.00 0.00 H +ATOM 823 OW SOL 274 17.261 19.971 2.021 1.00 0.00 O +ATOM 824 HW1 SOL 274 17.991 19.801 1.351 1.00 0.00 H +ATOM 825 HW2 SOL 274 16.951 19.101 2.401 1.00 0.00 H +ATOM 826 OW SOL 275 0.750 0.241 18.951 1.00 0.00 O +ATOM 827 HW1 SOL 275 -0.170 -0.039 18.661 1.00 0.00 H +ATOM 828 HW2 SOL 275 1.060 1.011 18.391 1.00 0.00 H +ATOM 829 OW SOL 276 13.521 19.141 20.301 1.00 0.00 O +ATOM 830 HW1 SOL 276 13.871 18.731 19.461 1.00 0.00 H +ATOM 831 HW2 SOL 276 12.621 18.761 20.501 1.00 0.00 H +ATOM 832 OW SOL 277 20.921 6.280 1.130 1.00 0.00 O +ATOM 833 HW1 SOL 277 19.991 6.260 1.500 1.00 0.00 H +ATOM 834 HW2 SOL 277 20.931 5.890 0.210 1.00 0.00 H +ATOM 835 OW SOL 278 20.871 2.750 9.961 1.00 0.00 O +ATOM 836 HW1 SOL 278 21.221 2.580 10.881 1.00 0.00 H +ATOM 837 HW2 SOL 278 19.991 2.300 9.841 1.00 0.00 H +ATOM 838 OW SOL 279 18.811 3.680 6.470 1.00 0.00 O +ATOM 839 HW1 SOL 279 17.991 4.110 6.860 1.00 0.00 H +ATOM 840 HW2 SOL 279 18.531 2.950 5.840 1.00 0.00 H +ATOM 841 OW SOL 280 0.141 14.351 10.611 1.00 0.00 O +ATOM 842 HW1 SOL 280 -0.639 14.041 10.081 1.00 0.00 H +ATOM 843 HW2 SOL 280 0.721 14.931 10.041 1.00 0.00 H +ATOM 844 OW SOL 281 20.931 17.131 4.830 1.00 0.00 O +ATOM 845 HW1 SOL 281 21.271 17.901 5.370 1.00 0.00 H +ATOM 846 HW2 SOL 281 21.371 17.131 3.930 1.00 0.00 H +ATOM 847 OW SOL 282 20.921 14.341 5.380 1.00 0.00 O +ATOM 848 HW1 SOL 282 20.661 15.301 5.380 1.00 0.00 H +ATOM 849 HW2 SOL 282 20.211 13.801 5.830 1.00 0.00 H +ATOM 850 OW SOL 283 21.021 10.911 8.860 1.00 0.00 O +ATOM 851 HW1 SOL 283 21.161 10.071 9.380 1.00 0.00 H +ATOM 852 HW2 SOL 283 20.471 11.551 9.410 1.00 0.00 H +ATOM 853 OW SOL 284 19.841 6.430 5.630 1.00 0.00 O +ATOM 854 HW1 SOL 284 19.391 5.550 5.800 1.00 0.00 H +ATOM 855 HW2 SOL 284 19.831 6.970 6.470 1.00 0.00 H +ATOM 856 OW SOL 285 19.751 7.370 15.971 1.00 0.00 O +ATOM 857 HW1 SOL 285 20.631 7.240 16.421 1.00 0.00 H +ATOM 858 HW2 SOL 285 19.621 8.340 15.751 1.00 0.00 H +ATOM 859 OW SOL 286 20.591 9.761 12.641 1.00 0.00 O +ATOM 860 HW1 SOL 286 21.481 9.311 12.501 1.00 0.00 H +ATOM 861 HW2 SOL 286 19.861 9.111 12.451 1.00 0.00 H +ATOM 862 OW SOL 287 19.381 8.110 7.890 1.00 0.00 O +ATOM 863 HW1 SOL 287 20.371 7.990 7.980 1.00 0.00 H +ATOM 864 HW2 SOL 287 19.141 9.060 8.100 1.00 0.00 H +ATOM 865 OW SOL 288 19.921 18.211 15.711 1.00 0.00 O +ATOM 866 HW1 SOL 288 19.821 18.061 16.701 1.00 0.00 H +ATOM 867 HW2 SOL 288 19.061 18.571 15.351 1.00 0.00 H +ATOM 868 OW SOL 289 20.641 2.850 14.981 1.00 0.00 O +ATOM 869 HW1 SOL 289 19.841 3.450 14.851 1.00 0.00 H +ATOM 870 HW2 SOL 289 20.541 2.360 15.841 1.00 0.00 H +ATOM 871 OW SOL 290 0.611 7.000 4.800 1.00 0.00 O +ATOM 872 HW1 SOL 290 1.061 6.100 4.770 1.00 0.00 H +ATOM 873 HW2 SOL 290 -0.329 6.890 5.130 1.00 0.00 H +ATOM 874 OW SOL 291 19.401 5.560 13.861 1.00 0.00 O +ATOM 875 HW1 SOL 291 20.321 5.550 13.451 1.00 0.00 H +ATOM 876 HW2 SOL 291 19.341 6.300 14.531 1.00 0.00 H +ATOM 877 OW SOL 292 0.891 8.130 12.511 1.00 0.00 O +ATOM 878 HW1 SOL 292 1.751 8.250 13.011 1.00 0.00 H +ATOM 879 HW2 SOL 292 0.471 7.260 12.781 1.00 0.00 H +ATOM 880 OW SOL 293 19.261 15.641 13.311 1.00 0.00 O +ATOM 881 HW1 SOL 293 18.801 16.461 12.971 1.00 0.00 H +ATOM 882 HW2 SOL 293 20.241 15.831 13.401 1.00 0.00 H +ATOM 883 OW SOL 294 21.691 2.130 12.311 1.00 0.00 O +ATOM 884 HW1 SOL 294 21.461 2.500 13.211 1.00 0.00 H +ATOM 885 HW2 SOL 294 21.391 1.180 12.251 1.00 0.00 H +ATOM 886 OW SOL 295 18.991 13.101 12.821 1.00 0.00 O +ATOM 887 HW1 SOL 295 19.521 12.611 13.501 1.00 0.00 H +ATOM 888 HW2 SOL 295 19.211 14.081 12.871 1.00 0.00 H +ATOM 889 OW SOL 296 21.811 8.100 9.491 1.00 0.00 O +ATOM 890 HW1 SOL 296 22.741 8.460 9.541 1.00 0.00 H +ATOM 891 HW2 SOL 296 21.751 7.250 10.011 1.00 0.00 H +ATOM 892 OW SOL 297 18.701 13.261 2.000 1.00 0.00 O +ATOM 893 HW1 SOL 297 17.771 13.471 1.690 1.00 0.00 H +ATOM 894 HW2 SOL 297 18.801 12.271 2.130 1.00 0.00 H +ATOM 895 OW SOL 298 19.501 18.011 9.270 1.00 0.00 O +ATOM 896 HW1 SOL 298 19.081 17.151 9.000 1.00 0.00 H +ATOM 897 HW2 SOL 298 20.441 18.041 8.930 1.00 0.00 H +ATOM 898 OW SOL 299 1.831 15.681 9.100 1.00 0.00 O +ATOM 899 HW1 SOL 299 2.491 16.421 9.190 1.00 0.00 H +ATOM 900 HW2 SOL 299 2.271 14.891 8.680 1.00 0.00 H +ATOM 901 OW SOL 300 19.021 5.440 11.141 1.00 0.00 O +ATOM 902 HW1 SOL 300 19.871 5.110 10.731 1.00 0.00 H +ATOM 903 HW2 SOL 300 19.151 5.590 12.121 1.00 0.00 H +ATOM 904 OW SOL 301 20.511 5.200 17.221 1.00 0.00 O +ATOM 905 HW1 SOL 301 21.101 4.800 16.521 1.00 0.00 H +ATOM 906 HW2 SOL 301 19.931 5.910 16.811 1.00 0.00 H +ATOM 907 OW SOL 302 21.141 15.641 17.441 1.00 0.00 O +ATOM 908 HW1 SOL 302 20.841 16.211 18.201 1.00 0.00 H +ATOM 909 HW2 SOL 302 21.071 14.671 17.701 1.00 0.00 H +ATOM 910 OW SOL 303 1.521 5.000 1.910 1.00 0.00 O +ATOM 911 HW1 SOL 303 2.131 5.800 1.950 1.00 0.00 H +ATOM 912 HW2 SOL 303 0.571 5.310 1.980 1.00 0.00 H +ATOM 913 OW SOL 304 20.211 11.371 14.661 1.00 0.00 O +ATOM 914 HW1 SOL 304 20.431 10.761 15.421 1.00 0.00 H +ATOM 915 HW2 SOL 304 20.311 10.881 13.801 1.00 0.00 H +ATOM 916 OW SOL 305 19.451 12.581 10.221 1.00 0.00 O +ATOM 917 HW1 SOL 305 19.401 12.571 11.221 1.00 0.00 H +ATOM 918 HW2 SOL 305 18.621 12.171 9.841 1.00 0.00 H +ATOM 919 OW SOL 306 19.921 17.941 18.511 1.00 0.00 O +ATOM 920 HW1 SOL 306 19.511 17.201 19.041 1.00 0.00 H +ATOM 921 HW2 SOL 306 20.561 18.451 19.091 1.00 0.00 H +ATOM 922 OW SOL 307 21.251 3.260 7.200 1.00 0.00 O +ATOM 923 HW1 SOL 307 20.461 3.770 6.860 1.00 0.00 H +ATOM 924 HW2 SOL 307 21.161 3.110 8.180 1.00 0.00 H +ATOM 925 OW SOL 308 0.511 12.881 14.901 1.00 0.00 O +ATOM 926 HW1 SOL 308 0.381 13.811 14.561 1.00 0.00 H +ATOM 927 HW2 SOL 308 -0.329 12.361 14.771 1.00 0.00 H +ATOM 928 OW SOL 309 21.171 13.481 2.900 1.00 0.00 O +ATOM 929 HW1 SOL 309 20.211 13.491 2.630 1.00 0.00 H +ATOM 930 HW2 SOL 309 21.291 14.011 3.740 1.00 0.00 H +ATOM 931 OW SOL 310 19.671 10.131 17.261 1.00 0.00 O +ATOM 932 HW1 SOL 310 18.901 9.801 17.801 1.00 0.00 H +ATOM 933 HW2 SOL 310 20.521 9.831 17.681 1.00 0.00 H +ATOM 934 OW SOL 311 19.371 3.450 0.330 1.00 0.00 O +ATOM 935 HW1 SOL 311 18.451 3.170 0.040 1.00 0.00 H +ATOM 936 HW2 SOL 311 19.681 4.220 -0.230 1.00 0.00 H +ATOM 937 OW SOL 312 19.341 1.660 3.180 1.00 0.00 O +ATOM 938 HW1 SOL 312 19.171 2.490 2.640 1.00 0.00 H +ATOM 939 HW2 SOL 312 20.241 1.290 2.960 1.00 0.00 H +ATOM 940 OW SOL 313 0.691 17.411 15.601 1.00 0.00 O +ATOM 941 HW1 SOL 313 -0.219 17.821 15.581 1.00 0.00 H +ATOM 942 HW2 SOL 313 0.621 16.471 15.921 1.00 0.00 H +ATOM 943 OW SOL 314 19.411 12.401 6.530 1.00 0.00 O +ATOM 944 HW1 SOL 314 19.401 11.931 7.410 1.00 0.00 H +ATOM 945 HW2 SOL 314 20.231 12.121 6.020 1.00 0.00 H +ATOM 946 OW SOL 315 1.071 4.240 5.200 1.00 0.00 O +ATOM 947 HW1 SOL 315 1.371 3.520 4.580 1.00 0.00 H +ATOM 948 HW2 SOL 315 0.681 3.840 6.030 1.00 0.00 H +ATOM 949 OW SOL 316 21.791 5.470 12.801 1.00 0.00 O +ATOM 950 HW1 SOL 316 22.171 4.880 13.521 1.00 0.00 H +ATOM 951 HW2 SOL 316 22.191 5.210 11.921 1.00 0.00 H +ATOM 952 OW SOL 317 19.011 10.771 3.000 1.00 0.00 O +ATOM 953 HW1 SOL 317 20.001 10.661 2.910 1.00 0.00 H +ATOM 954 HW2 SOL 317 18.611 9.911 3.320 1.00 0.00 H +ATOM 955 OW SOL 318 20.921 6.280 19.751 1.00 0.00 O +ATOM 956 HW1 SOL 318 19.991 6.260 20.121 1.00 0.00 H +ATOM 957 HW2 SOL 318 20.931 5.890 18.831 1.00 0.00 H +ATOM 958 OW SOL 319 20.931 17.131 1.621 1.00 0.00 O +ATOM 959 HW1 SOL 319 21.271 17.901 2.161 1.00 0.00 H +ATOM 960 HW2 SOL 319 21.371 17.131 0.721 1.00 0.00 H +ATOM 961 OW SOL 320 18.891 15.961 19.791 1.00 0.00 O +ATOM 962 HW1 SOL 320 18.701 15.001 20.001 1.00 0.00 H +ATOM 963 HW2 SOL 320 18.561 16.541 20.541 1.00 0.00 H +ATOM 964 OW SOL 321 1.431 17.431 0.021 1.00 0.00 O +ATOM 965 HW1 SOL 321 1.761 17.821 0.881 1.00 0.00 H +ATOM 966 HW2 SOL 321 2.191 17.361 -0.629 1.00 0.00 H +ATOM 967 OW SOL 322 2.181 0.640 1.911 1.00 0.00 O +ATOM 968 HW1 SOL 322 1.371 0.650 2.491 1.00 0.00 H +ATOM 969 HW2 SOL 322 2.211 1.470 1.361 1.00 0.00 H +ATOM 970 OW SOL 323 2.061 2.560 0.071 1.00 0.00 O +ATOM 971 HW1 SOL 323 2.331 1.970 -0.679 1.00 0.00 H +ATOM 972 HW2 SOL 323 2.061 3.510 -0.239 1.00 0.00 H +ATOM 973 OW SOL 324 18.701 13.261 20.621 1.00 0.00 O +ATOM 974 HW1 SOL 324 17.771 13.471 20.311 1.00 0.00 H +ATOM 975 HW2 SOL 324 18.801 12.271 20.751 1.00 0.00 H +ATOM 976 OW SOL 325 1.521 5.000 20.531 1.00 0.00 O +ATOM 977 HW1 SOL 325 2.131 5.800 20.571 1.00 0.00 H +ATOM 978 HW2 SOL 325 0.571 5.310 20.601 1.00 0.00 H +ATOM 979 OW SOL 326 21.171 13.481 21.521 1.00 0.00 O +ATOM 980 HW1 SOL 326 20.211 13.491 21.251 1.00 0.00 H +ATOM 981 HW2 SOL 326 21.291 14.011 22.361 1.00 0.00 H +ATOM 982 OW SOL 327 19.371 3.450 18.951 1.00 0.00 O +ATOM 983 HW1 SOL 327 18.451 3.170 18.661 1.00 0.00 H +ATOM 984 HW2 SOL 327 19.681 4.220 18.391 1.00 0.00 H +ATOM 985 OW SOL 328 19.011 10.771 21.621 1.00 0.00 O +ATOM 986 HW1 SOL 328 20.001 10.661 21.531 1.00 0.00 H +ATOM 987 HW2 SOL 328 18.611 9.911 21.941 1.00 0.00 H +ATOM 988 OW SOL 329 20.871 21.371 9.961 1.00 0.00 O +ATOM 989 HW1 SOL 329 21.221 21.201 10.881 1.00 0.00 H +ATOM 990 HW2 SOL 329 19.991 20.921 9.841 1.00 0.00 H +ATOM 991 OW SOL 330 18.811 0.471 6.470 1.00 0.00 O +ATOM 992 HW1 SOL 330 17.991 0.901 6.860 1.00 0.00 H +ATOM 993 HW2 SOL 330 18.531 -0.259 5.840 1.00 0.00 H +ATOM 994 OW SOL 331 2.291 20.581 8.850 1.00 0.00 O +ATOM 995 HW1 SOL 331 2.241 20.531 9.850 1.00 0.00 H +ATOM 996 HW2 SOL 331 2.311 21.541 8.560 1.00 0.00 H +ATOM 997 OW SOL 332 20.641 21.471 14.981 1.00 0.00 O +ATOM 998 HW1 SOL 332 19.841 22.071 14.851 1.00 0.00 H +ATOM 999 HW2 SOL 332 20.541 20.981 15.841 1.00 0.00 H +ATOM 1000 OW SOL 333 1.831 19.121 17.401 1.00 0.00 O +ATOM 1001 HW1 SOL 333 1.411 18.551 16.701 1.00 0.00 H +ATOM 1002 HW2 SOL 333 1.171 19.811 17.721 1.00 0.00 H +ATOM 1003 OW SOL 334 21.691 20.751 12.311 1.00 0.00 O +ATOM 1004 HW1 SOL 334 21.461 21.121 13.211 1.00 0.00 H +ATOM 1005 HW2 SOL 334 21.391 19.801 12.251 1.00 0.00 H +ATOM 1006 OW SOL 335 21.691 19.251 6.180 1.00 0.00 O +ATOM 1007 HW1 SOL 335 21.581 20.191 6.510 1.00 0.00 H +ATOM 1008 HW2 SOL 335 21.641 18.621 6.950 1.00 0.00 H +ATOM 1009 OW SOL 336 21.251 0.051 7.200 1.00 0.00 O +ATOM 1010 HW1 SOL 336 20.461 0.561 6.860 1.00 0.00 H +ATOM 1011 HW2 SOL 336 21.161 -0.099 8.180 1.00 0.00 H +ATOM 1012 OW SOL 337 19.371 0.241 0.330 1.00 0.00 O +ATOM 1013 HW1 SOL 337 18.451 -0.039 0.040 1.00 0.00 H +ATOM 1014 HW2 SOL 337 19.681 1.011 -0.230 1.00 0.00 H +ATOM 1015 OW SOL 338 19.341 20.281 3.180 1.00 0.00 O +ATOM 1016 HW1 SOL 338 19.171 21.111 2.640 1.00 0.00 H +ATOM 1017 HW2 SOL 338 20.241 19.911 2.960 1.00 0.00 H +ATOM 1018 OW SOL 339 1.071 1.031 5.200 1.00 0.00 O +ATOM 1019 HW1 SOL 339 1.371 0.311 4.580 1.00 0.00 H +ATOM 1020 HW2 SOL 339 0.681 0.631 6.030 1.00 0.00 H +ATOM 1021 OW SOL 340 2.181 19.261 1.911 1.00 0.00 O +ATOM 1022 HW1 SOL 340 1.371 19.271 2.491 1.00 0.00 H +ATOM 1023 HW2 SOL 340 2.211 20.091 1.361 1.00 0.00 H +ATOM 1024 OW SOL 341 21.591 18.971 20.331 1.00 0.00 O +ATOM 1025 HW1 SOL 341 22.081 19.811 20.121 1.00 0.00 H +ATOM 1026 HW2 SOL 341 22.211 18.321 20.781 1.00 0.00 H +ATOM 1027 OW SOL 342 2.061 21.181 0.071 1.00 0.00 O +ATOM 1028 HW1 SOL 342 2.331 20.591 -0.679 1.00 0.00 H +ATOM 1029 HW2 SOL 342 2.061 22.131 -0.239 1.00 0.00 H +ATOM 1030 OW SOL 343 19.371 0.241 18.951 1.00 0.00 O +ATOM 1031 HW1 SOL 343 18.451 -0.039 18.661 1.00 0.00 H +ATOM 1032 HW2 SOL 343 19.681 1.011 18.391 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_scf/coords_1299.pdb b/examples/latte_scf/coords_1299.pdb new file mode 100644 index 00000000..55d5d1ad --- /dev/null +++ b/examples/latte_scf/coords_1299.pdb @@ -0,0 +1,1305 @@ +TITLE Built with Packmol +REMARK Packmol generated pdb file +CRYST1 40.230 40.230 40.230 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H HOH 0 24.812 22.184 19.109 1.00 0.00 H +ATOM 2 O HOH 1 24.014 22.044 19.696 1.00 0.00 O +ATOM 3 H HOH 0 23.492 21.337 19.219 1.00 0.00 H +ATOM 4 OW SOL 1 17.915 12.852 12.888 1.00 0.00 O +ATOM 5 HW1 SOL 1 18.247 13.543 12.247 1.00 0.00 H +ATOM 6 HW2 SOL 1 17.565 12.128 12.294 1.00 0.00 H +ATOM 7 OW SOL 2 17.524 28.252 22.152 1.00 0.00 O +ATOM 8 HW1 SOL 2 17.842 29.134 21.806 1.00 0.00 H +ATOM 9 HW2 SOL 2 16.749 28.493 22.736 1.00 0.00 H +ATOM 10 OW SOL 3 18.272 22.452 8.081 1.00 0.00 O +ATOM 11 HW1 SOL 3 18.633 21.922 8.848 1.00 0.00 H +ATOM 12 HW2 SOL 3 17.651 21.814 7.625 1.00 0.00 H +ATOM 13 OW SOL 4 22.430 24.527 31.340 1.00 0.00 O +ATOM 14 HW1 SOL 4 22.675 23.743 31.910 1.00 0.00 H +ATOM 15 HW2 SOL 4 22.090 25.200 31.998 1.00 0.00 H +ATOM 16 OW SOL 5 25.090 23.960 22.405 1.00 0.00 O +ATOM 17 HW1 SOL 5 24.836 23.682 21.479 1.00 0.00 H +ATOM 18 HW2 SOL 5 26.000 23.563 22.529 1.00 0.00 H +ATOM 19 OW SOL 6 24.774 20.640 26.519 1.00 0.00 O +ATOM 20 HW1 SOL 6 24.293 19.797 26.761 1.00 0.00 H +ATOM 21 HW2 SOL 6 24.915 21.092 27.400 1.00 0.00 H +ATOM 22 OW SOL 7 26.990 22.203 21.118 1.00 0.00 O +ATOM 23 HW1 SOL 7 26.249 21.867 21.698 1.00 0.00 H +ATOM 24 HW2 SOL 7 26.681 23.114 20.845 1.00 0.00 H +ATOM 25 OW SOL 8 6.883 20.799 22.990 1.00 0.00 O +ATOM 26 HW1 SOL 8 7.731 20.467 23.403 1.00 0.00 H +ATOM 27 HW2 SOL 8 6.530 21.448 23.664 1.00 0.00 H +ATOM 28 OW SOL 9 22.196 12.513 19.542 1.00 0.00 O +ATOM 29 HW1 SOL 9 21.895 11.768 20.137 1.00 0.00 H +ATOM 30 HW2 SOL 9 22.528 13.206 20.181 1.00 0.00 H +ATOM 31 OW SOL 10 24.367 14.196 27.807 1.00 0.00 O +ATOM 32 HW1 SOL 10 24.759 13.864 26.949 1.00 0.00 H +ATOM 33 HW2 SOL 10 25.039 14.862 28.132 1.00 0.00 H +ATOM 34 OW SOL 11 9.054 23.271 16.103 1.00 0.00 O +ATOM 35 HW1 SOL 11 9.000 23.179 15.109 1.00 0.00 H +ATOM 36 HW2 SOL 11 10.012 23.068 16.307 1.00 0.00 H +ATOM 37 OW SOL 12 13.728 24.315 29.715 1.00 0.00 O +ATOM 38 HW1 SOL 12 14.398 24.828 29.178 1.00 0.00 H +ATOM 39 HW2 SOL 12 13.236 23.780 29.028 1.00 0.00 H +ATOM 40 OW SOL 13 14.471 25.164 21.554 1.00 0.00 O +ATOM 41 HW1 SOL 13 14.885 25.186 22.464 1.00 0.00 H +ATOM 42 HW2 SOL 13 13.759 25.864 21.602 1.00 0.00 H +ATOM 43 OW SOL 14 26.294 31.275 22.228 1.00 0.00 O +ATOM 44 HW1 SOL 14 26.728 31.339 23.126 1.00 0.00 H +ATOM 45 HW2 SOL 14 26.431 30.319 21.968 1.00 0.00 H +ATOM 46 OW SOL 15 26.994 11.521 25.850 1.00 0.00 O +ATOM 47 HW1 SOL 15 26.171 11.436 25.288 1.00 0.00 H +ATOM 48 HW2 SOL 15 27.117 12.509 25.940 1.00 0.00 H +ATOM 49 OW SOL 16 16.539 28.602 27.834 1.00 0.00 O +ATOM 50 HW1 SOL 16 15.693 28.079 27.733 1.00 0.00 H +ATOM 51 HW2 SOL 16 16.972 28.525 26.936 1.00 0.00 H +ATOM 52 OW SOL 17 22.819 23.562 21.747 1.00 0.00 O +ATOM 53 HW1 SOL 17 23.183 24.097 22.509 1.00 0.00 H +ATOM 54 HW2 SOL 17 22.769 22.633 22.114 1.00 0.00 H +ATOM 55 OW SOL 18 19.599 24.838 14.635 1.00 0.00 O +ATOM 56 HW1 SOL 18 20.294 25.205 14.016 1.00 0.00 H +ATOM 57 HW2 SOL 18 18.904 24.470 14.018 1.00 0.00 H +ATOM 58 OW SOL 19 11.460 21.896 29.300 1.00 0.00 O +ATOM 59 HW1 SOL 19 12.202 22.159 29.917 1.00 0.00 H +ATOM 60 HW2 SOL 19 10.878 21.312 29.867 1.00 0.00 H +ATOM 61 OW SOL 20 13.460 8.606 19.737 1.00 0.00 O +ATOM 62 HW1 SOL 20 13.490 8.653 20.735 1.00 0.00 H +ATOM 63 HW2 SOL 20 13.017 7.729 19.555 1.00 0.00 H +ATOM 64 OW SOL 21 26.689 19.633 27.144 1.00 0.00 O +ATOM 65 HW1 SOL 21 25.881 19.410 27.689 1.00 0.00 H +ATOM 66 HW2 SOL 21 27.282 20.115 27.789 1.00 0.00 H +ATOM 67 OW SOL 22 12.680 24.355 15.838 1.00 0.00 O +ATOM 68 HW1 SOL 22 12.330 25.241 16.143 1.00 0.00 H +ATOM 69 HW2 SOL 22 13.173 24.574 14.996 1.00 0.00 H +ATOM 70 OW SOL 23 17.500 25.332 29.830 1.00 0.00 O +ATOM 71 HW1 SOL 23 18.055 26.125 29.579 1.00 0.00 H +ATOM 72 HW2 SOL 23 18.141 24.567 29.772 1.00 0.00 H +ATOM 73 OW SOL 24 24.609 7.817 20.898 1.00 0.00 O +ATOM 74 HW1 SOL 24 25.282 8.251 21.495 1.00 0.00 H +ATOM 75 HW2 SOL 24 23.751 7.908 21.404 1.00 0.00 H +ATOM 76 OW SOL 25 19.438 10.285 16.542 1.00 0.00 O +ATOM 77 HW1 SOL 25 18.832 10.543 15.790 1.00 0.00 H +ATOM 78 HW2 SOL 25 18.857 9.725 17.132 1.00 0.00 H +ATOM 79 OW SOL 26 11.378 19.670 24.247 1.00 0.00 O +ATOM 80 HW1 SOL 26 12.271 19.520 24.670 1.00 0.00 H +ATOM 81 HW2 SOL 26 11.565 20.341 23.530 1.00 0.00 H +ATOM 82 OW SOL 27 19.982 33.490 17.847 1.00 0.00 O +ATOM 83 HW1 SOL 27 20.767 33.113 18.339 1.00 0.00 H +ATOM 84 HW2 SOL 27 19.790 34.344 18.330 1.00 0.00 H +ATOM 85 OW SOL 28 16.937 23.412 19.668 1.00 0.00 O +ATOM 86 HW1 SOL 28 16.821 22.419 19.661 1.00 0.00 H +ATOM 87 HW2 SOL 28 17.719 23.554 20.275 1.00 0.00 H +ATOM 88 OW SOL 29 27.579 22.373 10.254 1.00 0.00 O +ATOM 89 HW1 SOL 29 28.063 21.629 9.795 1.00 0.00 H +ATOM 90 HW2 SOL 29 26.978 22.738 9.543 1.00 0.00 H +ATOM 91 OW SOL 30 12.743 19.748 16.777 1.00 0.00 O +ATOM 92 HW1 SOL 30 12.101 19.822 16.015 1.00 0.00 H +ATOM 93 HW2 SOL 30 13.630 19.635 16.329 1.00 0.00 H +ATOM 94 OW SOL 31 22.687 17.370 21.870 1.00 0.00 O +ATOM 95 HW1 SOL 31 23.080 16.659 22.453 1.00 0.00 H +ATOM 96 HW2 SOL 31 22.590 18.152 22.485 1.00 0.00 H +ATOM 97 OW SOL 32 22.513 10.240 16.651 1.00 0.00 O +ATOM 98 HW1 SOL 32 22.192 10.135 17.592 1.00 0.00 H +ATOM 99 HW2 SOL 32 22.854 11.179 16.622 1.00 0.00 H +ATOM 100 OW SOL 33 10.472 16.762 13.933 1.00 0.00 O +ATOM 101 HW1 SOL 33 9.659 16.888 14.501 1.00 0.00 H +ATOM 102 HW2 SOL 33 10.489 15.777 13.761 1.00 0.00 H +ATOM 103 OW SOL 34 24.723 25.943 21.674 1.00 0.00 O +ATOM 104 HW1 SOL 34 23.754 25.698 21.658 1.00 0.00 H +ATOM 105 HW2 SOL 34 24.933 26.139 20.717 1.00 0.00 H +ATOM 106 OW SOL 35 8.848 23.597 22.834 1.00 0.00 O +ATOM 107 HW1 SOL 35 8.137 23.529 23.534 1.00 0.00 H +ATOM 108 HW2 SOL 35 8.911 22.667 22.471 1.00 0.00 H +ATOM 109 OW SOL 36 25.003 14.221 21.630 1.00 0.00 O +ATOM 110 HW1 SOL 36 25.360 13.898 22.506 1.00 0.00 H +ATOM 111 HW2 SOL 36 25.075 15.216 21.699 1.00 0.00 H +ATOM 112 OW SOL 37 17.024 25.204 21.412 1.00 0.00 O +ATOM 113 HW1 SOL 37 17.045 26.028 20.846 1.00 0.00 H +ATOM 114 HW2 SOL 37 16.331 24.633 20.973 1.00 0.00 H +ATOM 115 OW SOL 38 21.145 21.407 11.963 1.00 0.00 O +ATOM 116 HW1 SOL 38 20.834 22.357 11.979 1.00 0.00 H +ATOM 117 HW2 SOL 38 21.433 21.237 12.905 1.00 0.00 H +ATOM 118 OW SOL 39 22.328 19.648 17.502 1.00 0.00 O +ATOM 119 HW1 SOL 39 21.950 18.759 17.242 1.00 0.00 H +ATOM 120 HW2 SOL 39 22.819 19.945 16.683 1.00 0.00 H +ATOM 121 OW SOL 40 31.232 18.191 16.282 1.00 0.00 O +ATOM 122 HW1 SOL 40 30.255 18.039 16.436 1.00 0.00 H +ATOM 123 HW2 SOL 40 31.500 17.427 15.695 1.00 0.00 H +ATOM 124 OW SOL 41 20.472 22.025 28.044 1.00 0.00 O +ATOM 125 HW1 SOL 41 19.910 21.201 28.114 1.00 0.00 H +ATOM 126 HW2 SOL 41 21.206 21.867 28.705 1.00 0.00 H +ATOM 127 OW SOL 42 29.525 27.024 26.006 1.00 0.00 O +ATOM 128 HW1 SOL 42 29.545 26.084 25.664 1.00 0.00 H +ATOM 129 HW2 SOL 42 30.425 27.384 25.760 1.00 0.00 H +ATOM 130 OW SOL 43 12.572 19.293 19.563 1.00 0.00 O +ATOM 131 HW1 SOL 43 12.235 19.147 18.633 1.00 0.00 H +ATOM 132 HW2 SOL 43 13.127 20.121 19.486 1.00 0.00 H +ATOM 133 OW SOL 44 28.904 25.278 27.929 1.00 0.00 O +ATOM 134 HW1 SOL 44 29.793 25.123 27.500 1.00 0.00 H +ATOM 135 HW2 SOL 44 28.261 25.227 27.165 1.00 0.00 H +ATOM 136 OW SOL 45 18.890 24.136 9.158 1.00 0.00 O +ATOM 137 HW1 SOL 45 18.386 24.659 9.845 1.00 0.00 H +ATOM 138 HW2 SOL 45 19.809 24.063 9.544 1.00 0.00 H +ATOM 139 OW SOL 46 22.411 19.995 11.347 1.00 0.00 O +ATOM 140 HW1 SOL 46 22.844 19.382 10.686 1.00 0.00 H +ATOM 141 HW2 SOL 46 22.765 20.897 11.099 1.00 0.00 H +ATOM 142 OW SOL 47 15.126 24.616 8.500 1.00 0.00 O +ATOM 143 HW1 SOL 47 14.587 24.550 9.339 1.00 0.00 H +ATOM 144 HW2 SOL 47 14.440 24.578 7.774 1.00 0.00 H +ATOM 145 OW SOL 48 19.778 11.195 20.586 1.00 0.00 O +ATOM 146 HW1 SOL 48 19.350 12.051 20.295 1.00 0.00 H +ATOM 147 HW2 SOL 48 20.122 11.403 21.502 1.00 0.00 H +ATOM 148 OW SOL 49 14.611 23.092 15.349 1.00 0.00 O +ATOM 149 HW1 SOL 49 14.685 22.211 14.880 1.00 0.00 H +ATOM 150 HW2 SOL 49 15.054 22.928 16.230 1.00 0.00 H +ATOM 151 OW SOL 50 16.022 14.205 14.111 1.00 0.00 O +ATOM 152 HW1 SOL 50 15.842 15.127 14.455 1.00 0.00 H +ATOM 153 HW2 SOL 50 16.550 14.364 13.276 1.00 0.00 H +ATOM 154 OW SOL 51 30.145 24.475 24.408 1.00 0.00 O +ATOM 155 HW1 SOL 51 30.977 24.710 24.911 1.00 0.00 H +ATOM 156 HW2 SOL 51 29.480 24.281 25.129 1.00 0.00 H +ATOM 157 OW SOL 52 19.974 12.135 30.934 1.00 0.00 O +ATOM 158 HW1 SOL 52 19.765 11.696 31.808 1.00 0.00 H +ATOM 159 HW2 SOL 52 20.496 12.947 31.197 1.00 0.00 H +ATOM 160 OW SOL 53 27.407 10.681 16.793 1.00 0.00 O +ATOM 161 HW1 SOL 53 28.348 10.992 16.659 1.00 0.00 H +ATOM 162 HW2 SOL 53 27.414 9.747 16.436 1.00 0.00 H +ATOM 163 OW SOL 54 20.295 15.208 16.437 1.00 0.00 O +ATOM 164 HW1 SOL 54 20.039 14.270 16.202 1.00 0.00 H +ATOM 165 HW2 SOL 54 20.500 15.626 15.552 1.00 0.00 H +ATOM 166 OW SOL 55 20.140 14.679 26.490 1.00 0.00 O +ATOM 167 HW1 SOL 55 19.541 14.035 26.967 1.00 0.00 H +ATOM 168 HW2 SOL 55 20.592 15.175 27.231 1.00 0.00 H +ATOM 169 OW SOL 56 18.049 18.312 23.379 1.00 0.00 O +ATOM 170 HW1 SOL 56 17.709 18.188 22.447 1.00 0.00 H +ATOM 171 HW2 SOL 56 17.257 18.669 23.874 1.00 0.00 H +ATOM 172 OW SOL 57 23.087 28.689 17.079 1.00 0.00 O +ATOM 173 HW1 SOL 57 22.894 29.416 16.421 1.00 0.00 H +ATOM 174 HW2 SOL 57 22.180 28.392 17.375 1.00 0.00 H +ATOM 175 OW SOL 58 17.652 16.214 32.063 1.00 0.00 O +ATOM 176 HW1 SOL 58 17.465 16.870 31.332 1.00 0.00 H +ATOM 177 HW2 SOL 58 17.266 15.359 31.717 1.00 0.00 H +ATOM 178 OW SOL 59 10.164 21.661 24.153 1.00 0.00 O +ATOM 179 HW1 SOL 59 9.226 21.407 23.917 1.00 0.00 H +ATOM 180 HW2 SOL 59 10.548 21.978 23.286 1.00 0.00 H +ATOM 181 OW SOL 60 20.915 17.894 29.118 1.00 0.00 O +ATOM 182 HW1 SOL 60 20.640 18.563 28.429 1.00 0.00 H +ATOM 183 HW2 SOL 60 21.002 17.043 28.600 1.00 0.00 H +ATOM 184 OW SOL 61 17.367 26.246 23.017 1.00 0.00 O +ATOM 185 HW1 SOL 61 16.659 26.364 23.712 1.00 0.00 H +ATOM 186 HW2 SOL 61 18.116 25.808 23.515 1.00 0.00 H +ATOM 187 OW SOL 62 21.776 22.893 24.986 1.00 0.00 O +ATOM 188 HW1 SOL 62 21.561 22.185 24.313 1.00 0.00 H +ATOM 189 HW2 SOL 62 21.893 23.717 24.431 1.00 0.00 H +ATOM 190 OW SOL 63 25.728 14.610 30.886 1.00 0.00 O +ATOM 191 HW1 SOL 63 26.527 14.773 30.307 1.00 0.00 H +ATOM 192 HW2 SOL 63 25.225 13.898 30.398 1.00 0.00 H +ATOM 193 OW SOL 64 25.135 11.052 12.970 1.00 0.00 O +ATOM 194 HW1 SOL 64 25.032 10.506 12.139 1.00 0.00 H +ATOM 195 HW2 SOL 64 25.610 10.438 13.599 1.00 0.00 H +ATOM 196 OW SOL 65 21.134 31.228 16.691 1.00 0.00 O +ATOM 197 HW1 SOL 65 21.641 31.978 17.115 1.00 0.00 H +ATOM 198 HW2 SOL 65 20.392 31.050 17.337 1.00 0.00 H +ATOM 199 OW SOL 66 15.661 24.773 31.063 1.00 0.00 O +ATOM 200 HW1 SOL 66 15.729 24.124 30.306 1.00 0.00 H +ATOM 201 HW2 SOL 66 15.321 25.607 30.629 1.00 0.00 H +ATOM 202 OW SOL 67 25.005 27.999 10.964 1.00 0.00 O +ATOM 203 HW1 SOL 67 25.289 28.514 10.155 1.00 0.00 H +ATOM 204 HW2 SOL 67 24.617 27.159 10.584 1.00 0.00 H +ATOM 205 OW SOL 68 23.912 25.698 23.933 1.00 0.00 O +ATOM 206 HW1 SOL 68 23.423 25.068 24.535 1.00 0.00 H +ATOM 207 HW2 SOL 68 24.848 25.346 23.932 1.00 0.00 H +ATOM 208 OW SOL 69 7.050 20.594 15.260 1.00 0.00 O +ATOM 209 HW1 SOL 69 6.133 20.372 15.590 1.00 0.00 H +ATOM 210 HW2 SOL 69 7.033 21.590 15.169 1.00 0.00 H +ATOM 211 OW SOL 70 10.707 29.314 23.961 1.00 0.00 O +ATOM 212 HW1 SOL 70 10.092 28.529 24.042 1.00 0.00 H +ATOM 213 HW2 SOL 70 10.103 30.057 23.672 1.00 0.00 H +ATOM 214 OW SOL 71 20.974 26.571 12.738 1.00 0.00 O +ATOM 215 HW1 SOL 71 21.250 26.511 11.779 1.00 0.00 H +ATOM 216 HW2 SOL 71 20.503 27.452 12.792 1.00 0.00 H +ATOM 217 OW SOL 72 19.050 11.882 24.746 1.00 0.00 O +ATOM 218 HW1 SOL 72 18.512 11.125 24.374 1.00 0.00 H +ATOM 219 HW2 SOL 72 19.945 11.769 24.315 1.00 0.00 H +ATOM 220 OW SOL 73 16.829 19.778 32.330 1.00 0.00 O +ATOM 221 HW1 SOL 73 16.123 20.115 32.953 1.00 0.00 H +ATOM 222 HW2 SOL 73 17.160 20.606 31.878 1.00 0.00 H +ATOM 223 OW SOL 74 27.194 11.819 10.655 1.00 0.00 O +ATOM 224 HW1 SOL 74 27.283 11.033 11.266 1.00 0.00 H +ATOM 225 HW2 SOL 74 26.907 12.560 11.262 1.00 0.00 H +ATOM 226 OW SOL 75 9.143 26.922 18.015 1.00 0.00 O +ATOM 227 HW1 SOL 75 9.732 26.265 18.486 1.00 0.00 H +ATOM 228 HW2 SOL 75 8.240 26.494 18.047 1.00 0.00 H +ATOM 229 OW SOL 76 24.798 18.634 30.721 1.00 0.00 O +ATOM 230 HW1 SOL 76 24.248 18.074 30.101 1.00 0.00 H +ATOM 231 HW2 SOL 76 25.641 18.795 30.208 1.00 0.00 H +ATOM 232 OW SOL 77 19.713 11.078 9.455 1.00 0.00 O +ATOM 233 HW1 SOL 77 19.886 10.367 10.137 1.00 0.00 H +ATOM 234 HW2 SOL 77 19.629 11.912 10.000 1.00 0.00 H +ATOM 235 OW SOL 78 19.949 16.434 18.234 1.00 0.00 O +ATOM 236 HW1 SOL 78 20.849 16.785 17.978 1.00 0.00 H +ATOM 237 HW2 SOL 78 19.360 16.720 17.479 1.00 0.00 H +ATOM 238 OW SOL 79 26.100 20.094 24.860 1.00 0.00 O +ATOM 239 HW1 SOL 79 25.929 20.125 23.875 1.00 0.00 H +ATOM 240 HW2 SOL 79 27.079 19.902 24.923 1.00 0.00 H +ATOM 241 OW SOL 80 28.245 23.176 16.401 1.00 0.00 O +ATOM 242 HW1 SOL 80 29.089 23.075 16.928 1.00 0.00 H +ATOM 243 HW2 SOL 80 27.898 22.241 16.330 1.00 0.00 H +ATOM 244 OW SOL 81 23.429 7.658 15.115 1.00 0.00 O +ATOM 245 HW1 SOL 81 23.809 7.098 14.379 1.00 0.00 H +ATOM 246 HW2 SOL 81 22.872 8.334 14.633 1.00 0.00 H +ATOM 247 OW SOL 82 10.552 26.955 16.715 1.00 0.00 O +ATOM 248 HW1 SOL 82 10.884 27.105 15.784 1.00 0.00 H +ATOM 249 HW2 SOL 82 10.537 27.873 17.111 1.00 0.00 H +ATOM 250 OW SOL 83 16.927 19.868 15.041 1.00 0.00 O +ATOM 251 HW1 SOL 83 17.297 20.069 14.134 1.00 0.00 H +ATOM 252 HW2 SOL 83 17.447 19.066 15.335 1.00 0.00 H +ATOM 253 OW SOL 84 13.998 26.748 24.005 1.00 0.00 O +ATOM 254 HW1 SOL 84 13.596 25.972 23.519 1.00 0.00 H +ATOM 255 HW2 SOL 84 13.297 27.458 23.937 1.00 0.00 H +ATOM 256 OW SOL 85 14.352 31.295 25.838 1.00 0.00 O +ATOM 257 HW1 SOL 85 13.403 31.109 25.586 1.00 0.00 H +ATOM 258 HW2 SOL 85 14.735 31.719 25.018 1.00 0.00 H +ATOM 259 OW SOL 86 25.245 18.847 22.053 1.00 0.00 O +ATOM 260 HW1 SOL 86 24.739 19.112 22.874 1.00 0.00 H +ATOM 261 HW2 SOL 86 24.714 18.083 21.686 1.00 0.00 H +ATOM 262 OW SOL 87 18.110 19.707 19.148 1.00 0.00 O +ATOM 263 HW1 SOL 87 18.008 20.702 19.124 1.00 0.00 H +ATOM 264 HW2 SOL 87 17.670 19.405 18.303 1.00 0.00 H +ATOM 265 OW SOL 88 18.407 29.100 15.428 1.00 0.00 O +ATOM 266 HW1 SOL 88 17.629 28.693 15.907 1.00 0.00 H +ATOM 267 HW2 SOL 88 18.057 29.264 14.506 1.00 0.00 H +ATOM 268 OW SOL 89 21.496 27.940 30.924 1.00 0.00 O +ATOM 269 HW1 SOL 89 22.219 28.126 31.589 1.00 0.00 H +ATOM 270 HW2 SOL 89 21.009 27.160 31.317 1.00 0.00 H +ATOM 271 OW SOL 90 21.396 23.151 19.398 1.00 0.00 O +ATOM 272 HW1 SOL 90 22.203 22.959 18.839 1.00 0.00 H +ATOM 273 HW2 SOL 90 21.351 24.150 19.414 1.00 0.00 H +ATOM 274 OW SOL 91 32.625 27.206 21.159 1.00 0.00 O +ATOM 275 HW1 SOL 91 32.437 26.355 21.649 1.00 0.00 H +ATOM 276 HW2 SOL 91 31.757 27.700 21.202 1.00 0.00 H +ATOM 277 OW SOL 92 28.432 18.158 21.287 1.00 0.00 O +ATOM 278 HW1 SOL 92 28.045 18.046 20.373 1.00 0.00 H +ATOM 279 HW2 SOL 92 27.657 17.989 21.895 1.00 0.00 H +ATOM 280 OW SOL 93 21.854 13.532 15.062 1.00 0.00 O +ATOM 281 HW1 SOL 93 22.622 14.072 15.406 1.00 0.00 H +ATOM 282 HW2 SOL 93 21.496 13.083 15.881 1.00 0.00 H +ATOM 283 OW SOL 94 24.782 18.353 11.187 1.00 0.00 O +ATOM 284 HW1 SOL 94 25.623 17.860 10.966 1.00 0.00 H +ATOM 285 HW2 SOL 94 24.721 19.048 10.471 1.00 0.00 H +ATOM 286 OW SOL 95 18.737 27.913 27.854 1.00 0.00 O +ATOM 287 HW1 SOL 95 19.078 27.134 28.380 1.00 0.00 H +ATOM 288 HW2 SOL 95 18.398 28.541 28.555 1.00 0.00 H +ATOM 289 OW SOL 96 18.869 14.640 29.839 1.00 0.00 O +ATOM 290 HW1 SOL 96 17.889 14.819 29.925 1.00 0.00 H +ATOM 291 HW2 SOL 96 19.162 14.476 30.781 1.00 0.00 H +ATOM 292 OW SOL 97 15.633 29.145 19.667 1.00 0.00 O +ATOM 293 HW1 SOL 97 16.374 28.912 20.297 1.00 0.00 H +ATOM 294 HW2 SOL 97 14.874 29.383 20.273 1.00 0.00 H +ATOM 295 OW SOL 98 17.231 13.661 27.274 1.00 0.00 O +ATOM 296 HW1 SOL 98 17.386 14.182 28.113 1.00 0.00 H +ATOM 297 HW2 SOL 98 17.027 12.739 27.603 1.00 0.00 H +ATOM 298 OW SOL 99 22.474 9.875 11.065 1.00 0.00 O +ATOM 299 HW1 SOL 99 22.471 10.847 10.828 1.00 0.00 H +ATOM 300 HW2 SOL 99 23.197 9.495 10.488 1.00 0.00 H +ATOM 301 OW SOL 100 9.546 17.626 27.369 1.00 0.00 O +ATOM 302 HW1 SOL 100 9.197 18.507 27.050 1.00 0.00 H +ATOM 303 HW2 SOL 100 9.858 17.179 26.530 1.00 0.00 H +ATOM 304 OW SOL 101 29.435 20.599 25.289 1.00 0.00 O +ATOM 305 HW1 SOL 101 29.100 21.122 24.506 1.00 0.00 H +ATOM 306 HW2 SOL 101 29.952 19.852 24.871 1.00 0.00 H +ATOM 307 OW SOL 102 16.859 24.623 17.953 1.00 0.00 O +ATOM 308 HW1 SOL 102 16.278 24.398 17.171 1.00 0.00 H +ATOM 309 HW2 SOL 102 17.749 24.814 17.538 1.00 0.00 H +ATOM 310 OW SOL 103 22.411 17.494 8.922 1.00 0.00 O +ATOM 311 HW1 SOL 103 22.525 17.755 7.964 1.00 0.00 H +ATOM 312 HW2 SOL 103 23.034 16.721 9.033 1.00 0.00 H +ATOM 313 OW SOL 104 27.718 17.918 18.028 1.00 0.00 O +ATOM 314 HW1 SOL 104 27.794 18.719 18.621 1.00 0.00 H +ATOM 315 HW2 SOL 104 26.973 17.390 18.437 1.00 0.00 H +ATOM 316 OW SOL 105 19.428 28.867 22.791 1.00 0.00 O +ATOM 317 HW1 SOL 105 20.268 29.090 23.285 1.00 0.00 H +ATOM 318 HW2 SOL 105 18.738 28.811 23.513 1.00 0.00 H +ATOM 319 OW SOL 106 10.198 24.333 21.376 1.00 0.00 O +ATOM 320 HW1 SOL 106 10.435 23.555 21.958 1.00 0.00 H +ATOM 321 HW2 SOL 106 10.262 25.117 21.992 1.00 0.00 H +ATOM 322 OW SOL 107 22.196 18.465 31.449 1.00 0.00 O +ATOM 323 HW1 SOL 107 22.006 17.752 30.774 1.00 0.00 H +ATOM 324 HW2 SOL 107 22.312 19.289 30.895 1.00 0.00 H +ATOM 325 OW SOL 108 19.177 16.695 28.844 1.00 0.00 O +ATOM 326 HW1 SOL 108 18.541 17.348 29.254 1.00 0.00 H +ATOM 327 HW2 SOL 108 18.616 16.205 28.178 1.00 0.00 H +ATOM 328 OW SOL 109 14.256 13.056 21.586 1.00 0.00 O +ATOM 329 HW1 SOL 109 14.417 12.261 21.002 1.00 0.00 H +ATOM 330 HW2 SOL 109 13.308 13.307 21.387 1.00 0.00 H +ATOM 331 OW SOL 110 19.769 17.841 19.874 1.00 0.00 O +ATOM 332 HW1 SOL 110 20.206 17.669 20.757 1.00 0.00 H +ATOM 333 HW2 SOL 110 18.942 18.349 20.116 1.00 0.00 H +ATOM 334 OW SOL 111 19.177 24.021 24.409 1.00 0.00 O +ATOM 335 HW1 SOL 111 18.930 24.860 24.895 1.00 0.00 H +ATOM 336 HW2 SOL 111 19.348 23.365 25.144 1.00 0.00 H +ATOM 337 OW SOL 112 13.128 19.682 21.718 1.00 0.00 O +ATOM 338 HW1 SOL 112 12.916 20.560 21.288 1.00 0.00 H +ATOM 339 HW2 SOL 112 13.991 19.413 21.292 1.00 0.00 H +ATOM 340 OW SOL 113 24.265 10.766 24.493 1.00 0.00 O +ATOM 341 HW1 SOL 113 24.149 11.305 25.328 1.00 0.00 H +ATOM 342 HW2 SOL 113 24.889 10.035 24.769 1.00 0.00 H +ATOM 343 OW SOL 114 15.224 12.544 26.191 1.00 0.00 O +ATOM 344 HW1 SOL 114 14.815 12.639 25.284 1.00 0.00 H +ATOM 345 HW2 SOL 114 15.905 11.822 26.067 1.00 0.00 H +ATOM 346 OW SOL 115 16.171 28.128 25.166 1.00 0.00 O +ATOM 347 HW1 SOL 115 15.398 28.548 25.641 1.00 0.00 H +ATOM 348 HW2 SOL 115 16.066 27.153 25.360 1.00 0.00 H +ATOM 349 OW SOL 116 16.179 7.973 18.838 1.00 0.00 O +ATOM 350 HW1 SOL 116 15.811 8.610 19.516 1.00 0.00 H +ATOM 351 HW2 SOL 116 17.002 7.611 19.277 1.00 0.00 H +ATOM 352 OW SOL 117 14.860 10.741 22.956 1.00 0.00 O +ATOM 353 HW1 SOL 117 14.672 10.505 22.002 1.00 0.00 H +ATOM 354 HW2 SOL 117 14.057 11.269 23.231 1.00 0.00 H +ATOM 355 OW SOL 118 20.264 22.364 7.812 1.00 0.00 O +ATOM 356 HW1 SOL 118 20.097 22.151 6.850 1.00 0.00 H +ATOM 357 HW2 SOL 118 21.123 21.893 8.013 1.00 0.00 H +ATOM 358 OW SOL 119 14.432 13.841 28.501 1.00 0.00 O +ATOM 359 HW1 SOL 119 14.895 13.802 27.616 1.00 0.00 H +ATOM 360 HW2 SOL 119 13.754 13.108 28.445 1.00 0.00 H +ATOM 361 OW SOL 120 23.949 28.612 28.421 1.00 0.00 O +ATOM 362 HW1 SOL 120 23.700 29.051 29.285 1.00 0.00 H +ATOM 363 HW2 SOL 120 23.114 28.673 27.876 1.00 0.00 H +ATOM 364 OW SOL 121 24.860 26.234 15.593 1.00 0.00 O +ATOM 365 HW1 SOL 121 24.021 26.709 15.327 1.00 0.00 H +ATOM 366 HW2 SOL 121 24.678 25.941 16.531 1.00 0.00 H +ATOM 367 OW SOL 122 13.994 20.898 31.066 1.00 0.00 O +ATOM 368 HW1 SOL 122 14.720 21.484 30.705 1.00 0.00 H +ATOM 369 HW2 SOL 122 14.403 20.493 31.884 1.00 0.00 H +ATOM 370 OW SOL 123 19.763 31.059 19.445 1.00 0.00 O +ATOM 371 HW1 SOL 123 18.818 31.118 19.767 1.00 0.00 H +ATOM 372 HW2 SOL 123 20.274 30.793 20.262 1.00 0.00 H +ATOM 373 OW SOL 124 15.319 22.439 27.337 1.00 0.00 O +ATOM 374 HW1 SOL 124 15.956 23.111 27.716 1.00 0.00 H +ATOM 375 HW2 SOL 124 14.687 22.262 28.091 1.00 0.00 H +ATOM 376 OW SOL 125 22.320 32.061 22.179 1.00 0.00 O +ATOM 377 HW1 SOL 125 22.491 31.137 21.839 1.00 0.00 H +ATOM 378 HW2 SOL 125 22.019 32.560 21.367 1.00 0.00 H +ATOM 379 OW SOL 126 27.110 12.879 27.942 1.00 0.00 O +ATOM 380 HW1 SOL 126 26.163 12.568 27.865 1.00 0.00 H +ATOM 381 HW2 SOL 126 27.090 13.507 28.719 1.00 0.00 H +ATOM 382 OW SOL 127 9.308 20.552 15.865 1.00 0.00 O +ATOM 383 HW1 SOL 127 8.830 21.419 15.729 1.00 0.00 H +ATOM 384 HW2 SOL 127 9.870 20.716 16.675 1.00 0.00 H +ATOM 385 OW SOL 128 8.347 18.938 14.159 1.00 0.00 O +ATOM 386 HW1 SOL 128 9.293 18.804 13.864 1.00 0.00 H +ATOM 387 HW2 SOL 128 8.389 18.811 15.149 1.00 0.00 H +ATOM 388 OW SOL 129 24.213 29.125 21.625 1.00 0.00 O +ATOM 389 HW1 SOL 129 23.525 29.555 21.040 1.00 0.00 H +ATOM 390 HW2 SOL 129 25.014 29.053 21.031 1.00 0.00 H +ATOM 391 OW SOL 130 15.833 23.752 32.917 1.00 0.00 O +ATOM 392 HW1 SOL 130 14.936 24.157 32.743 1.00 0.00 H +ATOM 393 HW2 SOL 130 15.904 23.030 32.229 1.00 0.00 H +ATOM 394 OW SOL 131 16.075 23.397 13.754 1.00 0.00 O +ATOM 395 HW1 SOL 131 16.295 24.212 14.289 1.00 0.00 H +ATOM 396 HW2 SOL 131 16.944 22.904 13.705 1.00 0.00 H +ATOM 397 OW SOL 132 20.326 20.875 18.699 1.00 0.00 O +ATOM 398 HW1 SOL 132 20.765 21.712 18.372 1.00 0.00 H +ATOM 399 HW2 SOL 132 20.345 20.271 17.903 1.00 0.00 H +ATOM 400 OW SOL 133 9.929 15.192 16.898 1.00 0.00 O +ATOM 401 HW1 SOL 133 10.630 15.898 16.998 1.00 0.00 H +ATOM 402 HW2 SOL 133 9.460 15.197 17.781 1.00 0.00 H +ATOM 403 OW SOL 134 16.787 20.325 25.209 1.00 0.00 O +ATOM 404 HW1 SOL 134 16.624 20.233 26.192 1.00 0.00 H +ATOM 405 HW2 SOL 134 17.637 20.849 25.159 1.00 0.00 H +ATOM 406 OW SOL 135 17.520 21.373 23.048 1.00 0.00 O +ATOM 407 HW1 SOL 135 16.601 21.519 23.412 1.00 0.00 H +ATOM 408 HW2 SOL 135 17.589 22.039 22.305 1.00 0.00 H +ATOM 409 OW SOL 136 23.555 18.200 32.700 1.00 0.00 O +ATOM 410 HW1 SOL 136 23.865 19.126 32.915 1.00 0.00 H +ATOM 411 HW2 SOL 136 23.912 17.651 33.456 1.00 0.00 H +ATOM 412 OW SOL 137 23.805 17.377 24.654 1.00 0.00 O +ATOM 413 HW1 SOL 137 22.966 16.841 24.563 1.00 0.00 H +ATOM 414 HW2 SOL 137 24.198 17.057 25.515 1.00 0.00 H +ATOM 415 OW SOL 138 26.351 32.443 20.268 1.00 0.00 O +ATOM 416 HW1 SOL 138 25.929 32.467 19.362 1.00 0.00 H +ATOM 417 HW2 SOL 138 26.686 31.505 20.348 1.00 0.00 H +ATOM 418 OW SOL 139 29.387 20.828 17.230 1.00 0.00 O +ATOM 419 HW1 SOL 139 28.756 20.608 17.974 1.00 0.00 H +ATOM 420 HW2 SOL 139 29.627 19.934 16.852 1.00 0.00 H +ATOM 421 OW SOL 140 14.191 23.512 23.343 1.00 0.00 O +ATOM 422 HW1 SOL 140 14.176 23.411 22.348 1.00 0.00 H +ATOM 423 HW2 SOL 140 14.034 22.582 23.676 1.00 0.00 H +ATOM 424 OW SOL 141 15.756 15.625 22.699 1.00 0.00 O +ATOM 425 HW1 SOL 141 15.667 16.593 22.933 1.00 0.00 H +ATOM 426 HW2 SOL 141 15.942 15.186 23.577 1.00 0.00 H +ATOM 427 OW SOL 142 20.510 13.333 11.927 1.00 0.00 O +ATOM 428 HW1 SOL 142 20.283 14.306 11.925 1.00 0.00 H +ATOM 429 HW2 SOL 142 20.679 13.131 12.892 1.00 0.00 H +ATOM 430 OW SOL 143 24.585 21.862 22.891 1.00 0.00 O +ATOM 431 HW1 SOL 143 24.215 21.242 23.583 1.00 0.00 H +ATOM 432 HW2 SOL 143 24.284 21.457 22.027 1.00 0.00 H +ATOM 433 OW SOL 144 19.090 26.889 31.259 1.00 0.00 O +ATOM 434 HW1 SOL 144 18.787 27.543 30.565 1.00 0.00 H +ATOM 435 HW2 SOL 144 19.301 27.464 32.049 1.00 0.00 H +ATOM 436 OW SOL 145 7.500 15.159 18.426 1.00 0.00 O +ATOM 437 HW1 SOL 145 8.026 14.423 18.852 1.00 0.00 H +ATOM 438 HW2 SOL 145 7.359 15.810 19.171 1.00 0.00 H +ATOM 439 OW SOL 146 27.618 20.029 10.797 1.00 0.00 O +ATOM 440 HW1 SOL 146 28.084 19.652 9.998 1.00 0.00 H +ATOM 441 HW2 SOL 146 26.728 19.574 10.788 1.00 0.00 H +ATOM 442 OW SOL 147 11.282 12.159 12.611 1.00 0.00 O +ATOM 443 HW1 SOL 147 11.736 11.951 13.478 1.00 0.00 H +ATOM 444 HW2 SOL 147 10.338 11.869 12.764 1.00 0.00 H +ATOM 445 OW SOL 148 15.008 16.634 8.329 1.00 0.00 O +ATOM 446 HW1 SOL 148 14.565 17.240 8.990 1.00 0.00 H +ATOM 447 HW2 SOL 148 14.744 17.017 7.444 1.00 0.00 H +ATOM 448 OW SOL 149 29.329 17.460 13.545 1.00 0.00 O +ATOM 449 HW1 SOL 149 29.799 16.662 13.921 1.00 0.00 H +ATOM 450 HW2 SOL 149 29.197 18.052 14.340 1.00 0.00 H +ATOM 451 OW SOL 150 11.143 29.847 21.994 1.00 0.00 O +ATOM 452 HW1 SOL 150 11.288 29.066 21.386 1.00 0.00 H +ATOM 453 HW2 SOL 150 11.125 30.629 21.372 1.00 0.00 H +ATOM 454 OW SOL 151 12.115 21.477 18.277 1.00 0.00 O +ATOM 455 HW1 SOL 151 13.049 21.751 18.052 1.00 0.00 H +ATOM 456 HW2 SOL 151 11.688 21.338 17.383 1.00 0.00 H +ATOM 457 OW SOL 152 22.610 13.864 17.470 1.00 0.00 O +ATOM 458 HW1 SOL 152 22.705 12.875 17.359 1.00 0.00 H +ATOM 459 HW2 SOL 152 22.548 13.985 18.461 1.00 0.00 H +ATOM 460 OW SOL 153 29.100 16.537 16.520 1.00 0.00 O +ATOM 461 HW1 SOL 153 28.138 16.665 16.280 1.00 0.00 H +ATOM 462 HW2 SOL 153 29.337 15.667 16.089 1.00 0.00 H +ATOM 463 OW SOL 154 12.381 21.642 14.486 1.00 0.00 O +ATOM 464 HW1 SOL 154 13.077 20.974 14.750 1.00 0.00 H +ATOM 465 HW2 SOL 154 11.884 21.814 15.337 1.00 0.00 H +ATOM 466 OW SOL 155 31.757 13.163 21.010 1.00 0.00 O +ATOM 467 HW1 SOL 155 31.139 13.597 21.665 1.00 0.00 H +ATOM 468 HW2 SOL 155 32.466 12.758 21.587 1.00 0.00 H +ATOM 469 OW SOL 156 21.536 18.257 25.616 1.00 0.00 O +ATOM 470 HW1 SOL 156 21.932 18.565 26.481 1.00 0.00 H +ATOM 471 HW2 SOL 156 22.086 18.726 24.925 1.00 0.00 H +ATOM 472 OW SOL 157 20.543 27.375 25.907 1.00 0.00 O +ATOM 473 HW1 SOL 157 19.895 26.941 26.533 1.00 0.00 H +ATOM 474 HW2 SOL 157 21.169 27.861 26.515 1.00 0.00 H +ATOM 475 OW SOL 158 13.721 27.318 16.382 1.00 0.00 O +ATOM 476 HW1 SOL 158 12.766 27.561 16.555 1.00 0.00 H +ATOM 477 HW2 SOL 158 14.081 27.115 17.292 1.00 0.00 H +ATOM 478 OW SOL 159 11.109 14.336 28.727 1.00 0.00 O +ATOM 479 HW1 SOL 159 10.922 15.263 29.051 1.00 0.00 H +ATOM 480 HW2 SOL 159 11.994 14.116 29.138 1.00 0.00 H +ATOM 481 OW SOL 160 7.998 25.909 14.509 1.00 0.00 O +ATOM 482 HW1 SOL 160 7.826 25.064 14.002 1.00 0.00 H +ATOM 483 HW2 SOL 160 8.506 26.475 13.860 1.00 0.00 H +ATOM 484 OW SOL 161 25.404 24.209 13.944 1.00 0.00 O +ATOM 485 HW1 SOL 161 25.354 23.381 14.502 1.00 0.00 H +ATOM 486 HW2 SOL 161 26.173 24.712 14.336 1.00 0.00 H +ATOM 487 OW SOL 162 24.844 25.891 26.881 1.00 0.00 O +ATOM 488 HW1 SOL 162 25.424 25.089 27.018 1.00 0.00 H +ATOM 489 HW2 SOL 162 24.491 25.772 25.953 1.00 0.00 H +ATOM 490 OW SOL 163 14.619 20.558 23.171 1.00 0.00 O +ATOM 491 HW1 SOL 163 15.041 20.548 24.077 1.00 0.00 H +ATOM 492 HW2 SOL 163 13.641 20.481 23.366 1.00 0.00 H +ATOM 493 OW SOL 164 27.083 10.805 27.618 1.00 0.00 O +ATOM 494 HW1 SOL 164 27.958 10.356 27.439 1.00 0.00 H +ATOM 495 HW2 SOL 164 26.964 10.702 28.606 1.00 0.00 H +ATOM 496 OW SOL 165 23.957 28.645 23.912 1.00 0.00 O +ATOM 497 HW1 SOL 165 23.636 27.724 23.693 1.00 0.00 H +ATOM 498 HW2 SOL 165 24.334 28.551 24.833 1.00 0.00 H +ATOM 499 OW SOL 166 21.857 28.095 24.745 1.00 0.00 O +ATOM 500 HW1 SOL 166 21.651 27.780 23.818 1.00 0.00 H +ATOM 501 HW2 SOL 166 22.393 27.346 25.134 1.00 0.00 H +ATOM 502 OW SOL 167 14.267 8.489 17.721 1.00 0.00 O +ATOM 503 HW1 SOL 167 14.806 9.323 17.839 1.00 0.00 H +ATOM 504 HW2 SOL 167 14.352 8.289 16.745 1.00 0.00 H +ATOM 505 OW SOL 168 15.230 32.590 23.368 1.00 0.00 O +ATOM 506 HW1 SOL 168 15.697 33.435 23.630 1.00 0.00 H +ATOM 507 HW2 SOL 168 15.330 32.564 22.374 1.00 0.00 H +ATOM 508 OW SOL 169 20.692 18.024 12.789 1.00 0.00 O +ATOM 509 HW1 SOL 169 20.383 17.682 13.676 1.00 0.00 H +ATOM 510 HW2 SOL 169 21.344 17.331 12.483 1.00 0.00 H +ATOM 511 OW SOL 170 20.941 14.283 32.482 1.00 0.00 O +ATOM 512 HW1 SOL 170 20.807 15.094 31.913 1.00 0.00 H +ATOM 513 HW2 SOL 170 21.798 13.896 32.144 1.00 0.00 H +ATOM 514 OW SOL 171 20.572 24.087 21.759 1.00 0.00 O +ATOM 515 HW1 SOL 171 20.177 24.703 21.078 1.00 0.00 H +ATOM 516 HW2 SOL 171 21.047 23.401 21.209 1.00 0.00 H +ATOM 517 OW SOL 172 27.011 21.983 12.689 1.00 0.00 O +ATOM 518 HW1 SOL 172 26.589 21.796 13.576 1.00 0.00 H +ATOM 519 HW2 SOL 172 27.502 21.138 12.478 1.00 0.00 H +ATOM 520 OW SOL 173 27.873 21.492 26.173 1.00 0.00 O +ATOM 521 HW1 SOL 173 28.092 21.918 27.051 1.00 0.00 H +ATOM 522 HW2 SOL 173 26.908 21.715 26.036 1.00 0.00 H +ATOM 523 OW SOL 174 18.801 23.348 22.703 1.00 0.00 O +ATOM 524 HW1 SOL 174 18.700 24.180 22.157 1.00 0.00 H +ATOM 525 HW2 SOL 174 19.279 22.720 22.089 1.00 0.00 H +ATOM 526 OW SOL 175 28.842 13.423 18.022 1.00 0.00 O +ATOM 527 HW1 SOL 175 28.740 12.648 18.646 1.00 0.00 H +ATOM 528 HW2 SOL 175 28.519 14.202 18.559 1.00 0.00 H +ATOM 529 OW SOL 176 25.404 27.238 13.894 1.00 0.00 O +ATOM 530 HW1 SOL 176 25.057 28.141 13.642 1.00 0.00 H +ATOM 531 HW2 SOL 176 25.068 26.644 13.164 1.00 0.00 H +ATOM 532 OW SOL 177 13.648 31.004 20.523 1.00 0.00 O +ATOM 533 HW1 SOL 177 14.154 31.859 20.403 1.00 0.00 H +ATOM 534 HW2 SOL 177 13.311 30.798 19.605 1.00 0.00 H +ATOM 535 OW SOL 178 14.229 17.416 17.143 1.00 0.00 O +ATOM 536 HW1 SOL 178 13.948 16.941 16.310 1.00 0.00 H +ATOM 537 HW2 SOL 178 15.227 17.369 17.117 1.00 0.00 H +ATOM 538 OW SOL 179 15.646 10.903 29.696 1.00 0.00 O +ATOM 539 HW1 SOL 179 16.138 11.535 29.097 1.00 0.00 H +ATOM 540 HW2 SOL 179 16.141 10.966 30.562 1.00 0.00 H +ATOM 541 OW SOL 180 19.621 22.063 14.117 1.00 0.00 O +ATOM 542 HW1 SOL 180 19.137 22.720 14.695 1.00 0.00 H +ATOM 543 HW2 SOL 180 19.979 21.395 14.768 1.00 0.00 H +ATOM 544 OW SOL 181 30.397 26.314 19.886 1.00 0.00 O +ATOM 545 HW1 SOL 181 30.779 26.155 20.796 1.00 0.00 H +ATOM 546 HW2 SOL 181 30.028 25.421 19.626 1.00 0.00 H +ATOM 547 OW SOL 182 19.674 13.424 22.478 1.00 0.00 O +ATOM 548 HW1 SOL 182 18.963 12.986 21.929 1.00 0.00 H +ATOM 549 HW2 SOL 182 20.211 13.934 21.806 1.00 0.00 H +ATOM 550 OW SOL 183 18.668 14.883 20.010 1.00 0.00 O +ATOM 551 HW1 SOL 183 18.273 14.187 20.610 1.00 0.00 H +ATOM 552 HW2 SOL 183 19.045 15.557 20.645 1.00 0.00 H +ATOM 553 OW SOL 184 17.034 29.023 9.488 1.00 0.00 O +ATOM 554 HW1 SOL 184 17.506 29.166 10.358 1.00 0.00 H +ATOM 555 HW2 SOL 184 17.634 28.392 8.995 1.00 0.00 H +ATOM 556 OW SOL 185 22.961 20.786 25.713 1.00 0.00 O +ATOM 557 HW1 SOL 185 22.731 20.546 24.770 1.00 0.00 H +ATOM 558 HW2 SOL 185 22.071 20.838 26.166 1.00 0.00 H +ATOM 559 OW SOL 186 26.286 17.329 31.213 1.00 0.00 O +ATOM 560 HW1 SOL 186 26.404 17.825 32.073 1.00 0.00 H +ATOM 561 HW2 SOL 186 26.241 16.371 31.498 1.00 0.00 H +ATOM 562 OW SOL 187 27.580 14.914 14.672 1.00 0.00 O +ATOM 563 HW1 SOL 187 27.811 14.051 15.121 1.00 0.00 H +ATOM 564 HW2 SOL 187 27.719 14.720 13.701 1.00 0.00 H +ATOM 565 OW SOL 188 23.031 33.085 25.667 1.00 0.00 O +ATOM 566 HW1 SOL 188 23.825 32.541 25.398 1.00 0.00 H +ATOM 567 HW2 SOL 188 22.449 33.071 24.854 1.00 0.00 H +ATOM 568 OW SOL 189 15.597 15.370 30.674 1.00 0.00 O +ATOM 569 HW1 SOL 189 15.625 16.152 31.297 1.00 0.00 H +ATOM 570 HW2 SOL 189 15.518 14.583 31.286 1.00 0.00 H +ATOM 571 OW SOL 190 16.883 26.648 31.638 1.00 0.00 O +ATOM 572 HW1 SOL 190 16.297 26.276 32.357 1.00 0.00 H +ATOM 573 HW2 SOL 190 16.832 27.637 31.780 1.00 0.00 H +ATOM 574 OW SOL 191 19.861 24.244 32.586 1.00 0.00 O +ATOM 575 HW1 SOL 191 19.950 23.992 31.623 1.00 0.00 H +ATOM 576 HW2 SOL 191 20.144 25.202 32.606 1.00 0.00 H +ATOM 577 OW SOL 192 15.257 9.758 26.764 1.00 0.00 O +ATOM 578 HW1 SOL 192 14.827 10.581 27.136 1.00 0.00 H +ATOM 579 HW2 SOL 192 16.212 10.027 26.639 1.00 0.00 H +ATOM 580 OW SOL 193 21.738 19.826 33.281 1.00 0.00 O +ATOM 581 HW1 SOL 193 22.076 20.323 32.483 1.00 0.00 H +ATOM 582 HW2 SOL 193 20.856 20.258 33.472 1.00 0.00 H +ATOM 583 OW SOL 194 10.469 18.366 28.899 1.00 0.00 O +ATOM 584 HW1 SOL 194 11.297 18.486 28.352 1.00 0.00 H +ATOM 585 HW2 SOL 194 10.007 19.250 28.826 1.00 0.00 H +ATOM 586 OW SOL 195 19.058 31.288 28.229 1.00 0.00 O +ATOM 587 HW1 SOL 195 18.137 31.553 28.515 1.00 0.00 H +ATOM 588 HW2 SOL 195 19.157 31.712 27.329 1.00 0.00 H +ATOM 589 OW SOL 196 15.716 28.774 16.471 1.00 0.00 O +ATOM 590 HW1 SOL 196 15.871 28.372 17.373 1.00 0.00 H +ATOM 591 HW2 SOL 196 14.924 29.367 16.610 1.00 0.00 H +ATOM 592 OW SOL 197 15.165 21.070 10.861 1.00 0.00 O +ATOM 593 HW1 SOL 197 14.773 20.723 11.713 1.00 0.00 H +ATOM 594 HW2 SOL 197 14.363 21.299 10.309 1.00 0.00 H +ATOM 595 OW SOL 198 18.682 30.296 17.929 1.00 0.00 O +ATOM 596 HW1 SOL 198 18.616 30.245 16.933 1.00 0.00 H +ATOM 597 HW2 SOL 198 19.420 29.658 18.149 1.00 0.00 H +ATOM 598 OW SOL 199 25.446 15.251 13.605 1.00 0.00 O +ATOM 599 HW1 SOL 199 25.367 14.695 12.778 1.00 0.00 H +ATOM 600 HW2 SOL 199 25.061 14.668 14.320 1.00 0.00 H +ATOM 601 OW SOL 200 25.596 23.079 27.017 1.00 0.00 O +ATOM 602 HW1 SOL 200 24.713 23.143 27.480 1.00 0.00 H +ATOM 603 HW2 SOL 200 26.235 22.861 27.754 1.00 0.00 H +ATOM 604 OW SOL 201 23.494 11.771 21.543 1.00 0.00 O +ATOM 605 HW1 SOL 201 23.982 12.630 21.693 1.00 0.00 H +ATOM 606 HW2 SOL 201 24.210 11.143 21.237 1.00 0.00 H +ATOM 607 OW SOL 202 26.800 29.112 25.566 1.00 0.00 O +ATOM 608 HW1 SOL 202 26.671 30.102 25.515 1.00 0.00 H +ATOM 609 HW2 SOL 202 26.164 28.828 26.284 1.00 0.00 H +ATOM 610 OW SOL 203 26.261 24.860 10.711 1.00 0.00 O +ATOM 611 HW1 SOL 203 26.533 25.358 11.534 1.00 0.00 H +ATOM 612 HW2 SOL 203 27.110 24.432 10.402 1.00 0.00 H +ATOM 613 OW SOL 204 9.456 24.988 15.424 1.00 0.00 O +ATOM 614 HW1 SOL 204 10.300 24.942 15.958 1.00 0.00 H +ATOM 615 HW2 SOL 204 8.761 25.229 16.101 1.00 0.00 H +ATOM 616 OW SOL 205 21.383 27.255 22.046 1.00 0.00 O +ATOM 617 HW1 SOL 205 20.602 26.772 21.650 1.00 0.00 H +ATOM 618 HW2 SOL 205 22.099 26.558 22.080 1.00 0.00 H +ATOM 619 OW SOL 206 14.538 22.985 19.831 1.00 0.00 O +ATOM 620 HW1 SOL 206 13.872 23.579 20.283 1.00 0.00 H +ATOM 621 HW2 SOL 206 15.176 22.748 20.563 1.00 0.00 H +ATOM 622 OW SOL 207 12.256 23.724 21.874 1.00 0.00 O +ATOM 623 HW1 SOL 207 12.712 24.484 22.336 1.00 0.00 H +ATOM 624 HW2 SOL 207 12.160 23.034 22.592 1.00 0.00 H +ATOM 625 OW SOL 208 17.301 22.623 16.712 1.00 0.00 O +ATOM 626 HW1 SOL 208 16.786 22.266 15.933 1.00 0.00 H +ATOM 627 HW2 SOL 208 16.708 22.435 17.494 1.00 0.00 H +ATOM 628 OW SOL 209 27.289 17.023 25.562 1.00 0.00 O +ATOM 629 HW1 SOL 209 27.950 17.324 26.250 1.00 0.00 H +ATOM 630 HW2 SOL 209 26.475 16.802 26.098 1.00 0.00 H +ATOM 631 OW SOL 210 12.046 11.028 23.486 1.00 0.00 O +ATOM 632 HW1 SOL 210 12.209 11.923 23.901 1.00 0.00 H +ATOM 633 HW2 SOL 210 11.256 11.184 22.893 1.00 0.00 H +ATOM 634 OW SOL 211 12.971 23.755 12.904 1.00 0.00 O +ATOM 635 HW1 SOL 211 13.462 22.993 13.326 1.00 0.00 H +ATOM 636 HW2 SOL 211 12.946 23.511 11.935 1.00 0.00 H +ATOM 637 OW SOL 212 18.713 14.967 23.853 1.00 0.00 O +ATOM 638 HW1 SOL 212 18.097 15.333 23.155 1.00 0.00 H +ATOM 639 HW2 SOL 212 18.527 13.985 23.839 1.00 0.00 H +ATOM 640 OW SOL 213 17.844 16.429 18.517 1.00 0.00 O +ATOM 641 HW1 SOL 213 17.744 15.500 18.162 1.00 0.00 H +ATOM 642 HW2 SOL 213 16.981 16.870 18.271 1.00 0.00 H +ATOM 643 OW SOL 214 26.348 27.255 19.389 1.00 0.00 O +ATOM 644 HW1 SOL 214 26.764 27.895 18.744 1.00 0.00 H +ATOM 645 HW2 SOL 214 26.129 27.826 20.180 1.00 0.00 H +ATOM 646 OW SOL 215 19.468 25.203 11.319 1.00 0.00 O +ATOM 647 HW1 SOL 215 19.836 25.775 10.587 1.00 0.00 H +ATOM 648 HW2 SOL 215 20.233 24.606 11.560 1.00 0.00 H +ATOM 649 OW SOL 216 24.482 16.998 15.713 1.00 0.00 O +ATOM 650 HW1 SOL 216 23.782 16.352 15.411 1.00 0.00 H +ATOM 651 HW2 SOL 216 23.957 17.723 16.159 1.00 0.00 H +ATOM 652 OW SOL 217 22.863 24.643 26.438 1.00 0.00 O +ATOM 653 HW1 SOL 217 23.205 23.713 26.305 1.00 0.00 H +ATOM 654 HW2 SOL 217 23.295 24.934 27.291 1.00 0.00 H +ATOM 655 OW SOL 218 16.581 23.137 9.018 1.00 0.00 O +ATOM 656 HW1 SOL 218 15.746 22.632 9.233 1.00 0.00 H +ATOM 657 HW2 SOL 218 16.633 23.826 9.740 1.00 0.00 H +ATOM 658 OW SOL 219 12.098 27.383 14.371 1.00 0.00 O +ATOM 659 HW1 SOL 219 11.253 27.822 14.067 1.00 0.00 H +ATOM 660 HW2 SOL 219 12.162 26.569 13.793 1.00 0.00 H +ATOM 661 OW SOL 220 18.497 10.087 28.018 1.00 0.00 O +ATOM 662 HW1 SOL 220 19.198 10.734 28.318 1.00 0.00 H +ATOM 663 HW2 SOL 220 17.867 10.652 27.485 1.00 0.00 H +ATOM 664 OW SOL 221 23.758 24.161 29.453 1.00 0.00 O +ATOM 665 HW1 SOL 221 24.089 23.218 29.494 1.00 0.00 H +ATOM 666 HW2 SOL 221 24.587 24.695 29.288 1.00 0.00 H +ATOM 667 OW SOL 222 21.864 13.608 29.368 1.00 0.00 O +ATOM 668 HW1 SOL 222 21.386 12.750 29.559 1.00 0.00 H +ATOM 669 HW2 SOL 222 21.214 14.121 28.809 1.00 0.00 H +ATOM 670 OW SOL 223 29.881 27.987 21.278 1.00 0.00 O +ATOM 671 HW1 SOL 223 30.280 28.463 22.060 1.00 0.00 H +ATOM 672 HW2 SOL 223 28.896 28.064 21.433 1.00 0.00 H +ATOM 673 OW SOL 224 14.384 27.766 12.575 1.00 0.00 O +ATOM 674 HW1 SOL 224 13.656 27.745 13.259 1.00 0.00 H +ATOM 675 HW2 SOL 224 15.210 27.928 13.114 1.00 0.00 H +ATOM 676 OW SOL 225 17.381 25.415 12.307 1.00 0.00 O +ATOM 677 HW1 SOL 225 16.685 25.906 11.784 1.00 0.00 H +ATOM 678 HW2 SOL 225 17.361 24.493 11.919 1.00 0.00 H +ATOM 679 OW SOL 226 18.771 26.327 16.968 1.00 0.00 O +ATOM 680 HW1 SOL 226 19.165 26.197 17.878 1.00 0.00 H +ATOM 681 HW2 SOL 226 19.149 25.570 16.436 1.00 0.00 H +ATOM 682 OW SOL 227 26.894 25.793 22.690 1.00 0.00 O +ATOM 683 HW1 SOL 227 27.095 26.573 23.283 1.00 0.00 H +ATOM 684 HW2 SOL 227 26.892 25.014 23.317 1.00 0.00 H +ATOM 685 OW SOL 228 29.615 14.551 22.456 1.00 0.00 O +ATOM 686 HW1 SOL 228 29.405 13.573 22.445 1.00 0.00 H +ATOM 687 HW2 SOL 228 29.346 14.860 21.544 1.00 0.00 H +ATOM 688 OW SOL 229 14.566 25.605 27.425 1.00 0.00 O +ATOM 689 HW1 SOL 229 14.245 25.596 26.478 1.00 0.00 H +ATOM 690 HW2 SOL 229 15.214 24.844 27.462 1.00 0.00 H +ATOM 691 OW SOL 230 20.391 25.772 30.067 1.00 0.00 O +ATOM 692 HW1 SOL 230 21.375 25.748 29.888 1.00 0.00 H +ATOM 693 HW2 SOL 230 20.078 24.864 29.790 1.00 0.00 H +ATOM 694 OW SOL 231 23.233 14.897 21.299 1.00 0.00 O +ATOM 695 HW1 SOL 231 22.260 14.863 21.070 1.00 0.00 H +ATOM 696 HW2 SOL 231 23.269 14.533 22.230 1.00 0.00 H +ATOM 697 OW SOL 232 13.951 14.271 26.024 1.00 0.00 O +ATOM 698 HW1 SOL 232 13.866 15.163 26.468 1.00 0.00 H +ATOM 699 HW2 SOL 232 13.345 13.682 26.559 1.00 0.00 H +ATOM 700 OW SOL 233 28.373 27.959 24.651 1.00 0.00 O +ATOM 701 HW1 SOL 233 27.950 28.614 24.025 1.00 0.00 H +ATOM 702 HW2 SOL 233 28.738 27.253 24.044 1.00 0.00 H +ATOM 703 OW SOL 234 25.500 16.383 23.895 1.00 0.00 O +ATOM 704 HW1 SOL 234 25.500 17.138 23.239 1.00 0.00 H +ATOM 705 HW2 SOL 234 24.639 15.909 23.710 1.00 0.00 H +ATOM 706 OW SOL 235 28.002 12.440 13.022 1.00 0.00 O +ATOM 707 HW1 SOL 235 28.815 12.998 12.852 1.00 0.00 H +ATOM 708 HW2 SOL 235 28.343 11.502 12.958 1.00 0.00 H +ATOM 709 OW SOL 236 18.282 22.984 28.431 1.00 0.00 O +ATOM 710 HW1 SOL 236 17.839 22.956 27.535 1.00 0.00 H +ATOM 711 HW2 SOL 236 17.744 22.345 28.980 1.00 0.00 H +ATOM 712 OW SOL 237 15.334 10.807 19.052 1.00 0.00 O +ATOM 713 HW1 SOL 237 16.230 10.739 18.613 1.00 0.00 H +ATOM 714 HW2 SOL 237 15.543 10.729 20.027 1.00 0.00 H +ATOM 715 OW SOL 238 26.453 20.193 17.035 1.00 0.00 O +ATOM 716 HW1 SOL 238 27.285 19.738 16.718 1.00 0.00 H +ATOM 717 HW2 SOL 238 26.145 20.706 16.234 1.00 0.00 H +ATOM 718 OW SOL 239 10.845 27.204 26.439 1.00 0.00 O +ATOM 719 HW1 SOL 239 11.492 26.526 26.787 1.00 0.00 H +ATOM 720 HW2 SOL 239 10.226 27.356 27.209 1.00 0.00 H +ATOM 721 OW SOL 240 23.318 20.552 29.910 1.00 0.00 O +ATOM 722 HW1 SOL 240 23.322 19.973 29.095 1.00 0.00 H +ATOM 723 HW2 SOL 240 24.208 20.374 30.330 1.00 0.00 H +ATOM 724 OW SOL 241 12.360 11.799 19.506 1.00 0.00 O +ATOM 725 HW1 SOL 241 11.587 12.232 19.969 1.00 0.00 H +ATOM 726 HW2 SOL 241 12.913 11.439 20.258 1.00 0.00 H +ATOM 727 OW SOL 242 10.015 16.482 23.582 1.00 0.00 O +ATOM 728 HW1 SOL 242 9.278 17.021 23.174 1.00 0.00 H +ATOM 729 HW2 SOL 242 10.842 16.856 23.162 1.00 0.00 H +ATOM 730 OW SOL 243 24.378 12.205 18.326 1.00 0.00 O +ATOM 731 HW1 SOL 243 24.260 11.939 19.283 1.00 0.00 H +ATOM 732 HW2 SOL 243 24.465 11.331 17.848 1.00 0.00 H +ATOM 733 OW SOL 244 27.338 13.664 23.454 1.00 0.00 O +ATOM 734 HW1 SOL 244 28.230 13.837 23.870 1.00 0.00 H +ATOM 735 HW2 SOL 244 27.455 13.969 22.509 1.00 0.00 H +ATOM 736 OW SOL 245 16.940 13.384 31.601 1.00 0.00 O +ATOM 737 HW1 SOL 245 17.109 13.112 30.654 1.00 0.00 H +ATOM 738 HW2 SOL 245 17.669 12.928 32.111 1.00 0.00 H +ATOM 739 OW SOL 246 32.005 13.657 23.624 1.00 0.00 O +ATOM 740 HW1 SOL 246 32.257 13.911 24.558 1.00 0.00 H +ATOM 741 HW2 SOL 246 31.963 14.533 23.145 1.00 0.00 H +ATOM 742 OW SOL 247 28.888 16.640 31.052 1.00 0.00 O +ATOM 743 HW1 SOL 247 28.877 16.525 30.058 1.00 0.00 H +ATOM 744 HW2 SOL 247 28.475 17.540 31.190 1.00 0.00 H +ATOM 745 OW SOL 248 30.517 21.634 27.971 1.00 0.00 O +ATOM 746 HW1 SOL 248 30.413 20.686 27.671 1.00 0.00 H +ATOM 747 HW2 SOL 248 29.614 21.868 28.330 1.00 0.00 H +ATOM 748 OW SOL 249 29.278 25.405 14.874 1.00 0.00 O +ATOM 749 HW1 SOL 249 30.211 25.764 14.901 1.00 0.00 H +ATOM 750 HW2 SOL 249 28.781 25.992 15.513 1.00 0.00 H +ATOM 751 OW SOL 250 28.968 21.899 14.796 1.00 0.00 O +ATOM 752 HW1 SOL 250 28.346 22.644 14.559 1.00 0.00 H +ATOM 753 HW2 SOL 250 28.495 21.082 14.467 1.00 0.00 H +ATOM 754 OW SOL 251 14.191 11.981 16.094 1.00 0.00 O +ATOM 755 HW1 SOL 251 14.407 12.074 15.122 1.00 0.00 H +ATOM 756 HW2 SOL 251 14.275 10.999 16.261 1.00 0.00 H +ATOM 757 OW SOL 252 17.788 32.955 15.832 1.00 0.00 O +ATOM 758 HW1 SOL 252 17.315 32.902 14.953 1.00 0.00 H +ATOM 759 HW2 SOL 252 18.279 33.824 15.785 1.00 0.00 H +ATOM 760 OW SOL 253 14.053 32.614 18.037 1.00 0.00 O +ATOM 761 HW1 SOL 253 14.707 32.156 18.638 1.00 0.00 H +ATOM 762 HW2 SOL 253 13.297 32.849 18.647 1.00 0.00 H +ATOM 763 OW SOL 254 15.162 6.761 17.608 1.00 0.00 O +ATOM 764 HW1 SOL 254 16.124 6.787 17.336 1.00 0.00 H +ATOM 765 HW2 SOL 254 15.183 6.326 18.508 1.00 0.00 H +ATOM 766 OW SOL 255 23.403 24.435 19.289 1.00 0.00 O +ATOM 767 HW1 SOL 255 22.966 24.938 20.034 1.00 0.00 H +ATOM 768 HW2 SOL 255 24.203 24.019 19.721 1.00 0.00 H +ATOM 769 OW SOL 256 11.933 18.281 8.865 1.00 0.00 O +ATOM 770 HW1 SOL 256 12.169 18.288 7.894 1.00 0.00 H +ATOM 771 HW2 SOL 256 11.288 17.520 8.945 1.00 0.00 H +ATOM 772 OW SOL 257 17.352 17.223 12.875 1.00 0.00 O +ATOM 773 HW1 SOL 257 17.075 17.788 12.098 1.00 0.00 H +ATOM 774 HW2 SOL 257 16.594 16.579 12.980 1.00 0.00 H +ATOM 775 OW SOL 258 20.845 31.014 24.506 1.00 0.00 O +ATOM 776 HW1 SOL 258 21.494 30.971 23.747 1.00 0.00 H +ATOM 777 HW2 SOL 258 21.299 31.607 25.171 1.00 0.00 H +ATOM 778 OW SOL 259 16.173 30.639 14.579 1.00 0.00 O +ATOM 779 HW1 SOL 259 17.087 31.003 14.755 1.00 0.00 H +ATOM 780 HW2 SOL 259 15.597 31.456 14.545 1.00 0.00 H +ATOM 781 OW SOL 260 26.861 14.882 24.781 1.00 0.00 O +ATOM 782 HW1 SOL 260 27.331 15.619 24.295 1.00 0.00 H +ATOM 783 HW2 SOL 260 27.066 15.066 25.742 1.00 0.00 H +ATOM 784 OW SOL 261 20.147 18.767 8.642 1.00 0.00 O +ATOM 785 HW1 SOL 261 19.932 18.177 7.865 1.00 0.00 H +ATOM 786 HW2 SOL 261 19.754 18.282 9.423 1.00 0.00 H +ATOM 787 OW SOL 262 16.330 11.853 15.027 1.00 0.00 O +ATOM 788 HW1 SOL 262 16.561 11.180 15.729 1.00 0.00 H +ATOM 789 HW2 SOL 262 16.187 12.696 15.546 1.00 0.00 H +ATOM 790 OW SOL 263 19.998 14.127 14.342 1.00 0.00 O +ATOM 791 HW1 SOL 263 19.093 13.932 13.964 1.00 0.00 H +ATOM 792 HW2 SOL 263 20.377 14.802 13.709 1.00 0.00 H +ATOM 793 OW SOL 264 15.286 6.974 21.690 1.00 0.00 O +ATOM 794 HW1 SOL 264 14.490 6.733 21.134 1.00 0.00 H +ATOM 795 HW2 SOL 264 15.987 7.198 21.013 1.00 0.00 H +ATOM 796 OW SOL 265 22.572 20.878 22.776 1.00 0.00 O +ATOM 797 HW1 SOL 265 22.895 20.110 22.224 1.00 0.00 H +ATOM 798 HW2 SOL 265 21.659 21.062 22.413 1.00 0.00 H +ATOM 799 OW SOL 266 13.021 22.353 8.271 1.00 0.00 O +ATOM 800 HW1 SOL 266 13.103 21.539 7.695 1.00 0.00 H +ATOM 801 HW2 SOL 266 12.965 23.103 7.612 1.00 0.00 H +ATOM 802 OW SOL 267 29.306 12.539 20.816 1.00 0.00 O +ATOM 803 HW1 SOL 267 29.850 13.011 20.123 1.00 0.00 H +ATOM 804 HW2 SOL 267 29.587 11.583 20.726 1.00 0.00 H +ATOM 805 OW SOL 268 27.591 8.306 19.715 1.00 0.00 O +ATOM 806 HW1 SOL 268 26.981 8.960 20.162 1.00 0.00 H +ATOM 807 HW2 SOL 268 28.102 7.902 20.473 1.00 0.00 H +ATOM 808 OW SOL 269 14.625 19.150 27.877 1.00 0.00 O +ATOM 809 HW1 SOL 269 14.905 19.901 28.474 1.00 0.00 H +ATOM 810 HW2 SOL 269 14.485 18.387 28.507 1.00 0.00 H +ATOM 811 OW SOL 270 15.053 18.138 11.940 1.00 0.00 O +ATOM 812 HW1 SOL 270 14.083 18.294 12.126 1.00 0.00 H +ATOM 813 HW2 SOL 270 15.179 18.501 11.017 1.00 0.00 H +ATOM 814 OW SOL 271 20.480 10.066 25.281 1.00 0.00 O +ATOM 815 HW1 SOL 271 20.492 10.653 26.090 1.00 0.00 H +ATOM 816 HW2 SOL 271 20.115 9.200 25.622 1.00 0.00 H +ATOM 817 OW SOL 272 16.687 16.821 21.152 1.00 0.00 O +ATOM 818 HW1 SOL 272 17.392 17.113 20.506 1.00 0.00 H +ATOM 819 HW2 SOL 272 16.033 16.326 20.580 1.00 0.00 H +ATOM 820 OW SOL 273 20.496 9.997 18.857 1.00 0.00 O +ATOM 821 HW1 SOL 273 19.529 9.992 19.113 1.00 0.00 H +ATOM 822 HW2 SOL 273 20.580 10.799 18.267 1.00 0.00 H +ATOM 823 OW SOL 274 25.891 27.591 29.791 1.00 0.00 O +ATOM 824 HW1 SOL 274 25.008 27.972 30.067 1.00 0.00 H +ATOM 825 HW2 SOL 274 26.443 27.649 30.622 1.00 0.00 H +ATOM 826 OW SOL 275 10.510 26.690 23.469 1.00 0.00 O +ATOM 827 HW1 SOL 275 9.710 26.679 24.068 1.00 0.00 H +ATOM 828 HW2 SOL 275 11.238 27.046 24.054 1.00 0.00 H +ATOM 829 OW SOL 276 25.856 13.235 20.210 1.00 0.00 O +ATOM 830 HW1 SOL 276 26.425 12.798 19.514 1.00 0.00 H +ATOM 831 HW2 SOL 276 25.294 13.876 19.686 1.00 0.00 H +ATOM 832 OW SOL 277 10.188 21.626 13.254 1.00 0.00 O +ATOM 833 HW1 SOL 277 10.108 20.717 12.847 1.00 0.00 H +ATOM 834 HW2 SOL 277 10.441 21.439 14.203 1.00 0.00 H +ATOM 835 OW SOL 278 13.376 16.662 19.239 1.00 0.00 O +ATOM 836 HW1 SOL 278 12.555 16.358 18.757 1.00 0.00 H +ATOM 837 HW2 SOL 278 13.509 17.597 18.911 1.00 0.00 H +ATOM 838 OW SOL 279 19.716 33.214 25.227 1.00 0.00 O +ATOM 839 HW1 SOL 279 20.555 33.286 25.766 1.00 0.00 H +ATOM 840 HW2 SOL 279 18.992 33.211 25.917 1.00 0.00 H +ATOM 841 OW SOL 280 21.318 16.043 23.168 1.00 0.00 O +ATOM 842 HW1 SOL 280 20.740 15.644 22.456 1.00 0.00 H +ATOM 843 HW2 SOL 280 21.291 15.365 23.902 1.00 0.00 H +ATOM 844 OW SOL 281 29.072 25.241 18.007 1.00 0.00 O +ATOM 845 HW1 SOL 281 29.017 24.363 18.482 1.00 0.00 H +ATOM 846 HW2 SOL 281 28.392 25.159 17.279 1.00 0.00 H +ATOM 847 OW SOL 282 16.906 12.470 24.437 1.00 0.00 O +ATOM 848 HW1 SOL 282 16.760 13.426 24.688 1.00 0.00 H +ATOM 849 HW2 SOL 282 17.418 12.526 23.580 1.00 0.00 H +ATOM 850 OW SOL 283 11.005 16.545 20.975 1.00 0.00 O +ATOM 851 HW1 SOL 283 11.185 17.280 20.321 1.00 0.00 H +ATOM 852 HW2 SOL 283 11.645 15.826 20.704 1.00 0.00 H +ATOM 853 OW SOL 284 19.808 19.268 16.414 1.00 0.00 O +ATOM 854 HW1 SOL 284 18.955 18.964 16.838 1.00 0.00 H +ATOM 855 HW2 SOL 284 19.515 19.632 15.530 1.00 0.00 H +ATOM 856 OW SOL 285 19.928 17.083 32.305 1.00 0.00 O +ATOM 857 HW1 SOL 285 19.062 17.537 32.093 1.00 0.00 H +ATOM 858 HW2 SOL 285 20.282 16.821 31.407 1.00 0.00 H +ATOM 859 OW SOL 286 21.167 10.656 13.563 1.00 0.00 O +ATOM 860 HW1 SOL 286 22.068 10.422 13.199 1.00 0.00 H +ATOM 861 HW2 SOL 286 20.751 11.196 12.831 1.00 0.00 H +ATOM 862 OW SOL 287 25.467 23.335 16.932 1.00 0.00 O +ATOM 863 HW1 SOL 287 25.022 24.043 16.383 1.00 0.00 H +ATOM 864 HW2 SOL 287 25.864 22.722 16.249 1.00 0.00 H +ATOM 865 OW SOL 288 11.779 10.659 26.429 1.00 0.00 O +ATOM 866 HW1 SOL 288 11.727 9.775 25.964 1.00 0.00 H +ATOM 867 HW2 SOL 288 11.701 11.322 25.684 1.00 0.00 H +ATOM 868 OW SOL 289 20.631 25.552 23.948 1.00 0.00 O +ATOM 869 HW1 SOL 289 20.171 26.439 23.917 1.00 0.00 H +ATOM 870 HW2 SOL 289 21.576 25.768 23.702 1.00 0.00 H +ATOM 871 OW SOL 290 31.043 16.337 17.275 1.00 0.00 O +ATOM 872 HW1 SOL 290 31.810 15.800 17.627 1.00 0.00 H +ATOM 873 HW2 SOL 290 30.548 16.609 18.100 1.00 0.00 H +ATOM 874 OW SOL 291 12.491 25.394 18.555 1.00 0.00 O +ATOM 875 HW1 SOL 291 11.721 25.934 18.215 1.00 0.00 H +ATOM 876 HW2 SOL 291 12.354 24.497 18.136 1.00 0.00 H +ATOM 877 OW SOL 292 25.292 13.571 16.035 1.00 0.00 O +ATOM 878 HW1 SOL 292 25.055 12.601 16.090 1.00 0.00 H +ATOM 879 HW2 SOL 292 24.754 13.987 16.769 1.00 0.00 H +ATOM 880 OW SOL 293 9.792 18.248 17.146 1.00 0.00 O +ATOM 881 HW1 SOL 293 10.249 17.869 17.951 1.00 0.00 H +ATOM 882 HW2 SOL 293 9.494 17.438 16.641 1.00 0.00 H +ATOM 883 OW SOL 294 17.876 26.066 14.738 1.00 0.00 O +ATOM 884 HW1 SOL 294 18.251 26.859 15.218 1.00 0.00 H +ATOM 885 HW2 SOL 294 17.107 26.444 14.222 1.00 0.00 H +ATOM 886 OW SOL 295 13.351 26.592 29.897 1.00 0.00 O +ATOM 887 HW1 SOL 295 13.162 26.831 30.850 1.00 0.00 H +ATOM 888 HW2 SOL 295 12.534 26.092 29.613 1.00 0.00 H +ATOM 889 OW SOL 296 12.037 28.641 18.185 1.00 0.00 O +ATOM 890 HW1 SOL 296 12.138 29.311 18.919 1.00 0.00 H +ATOM 891 HW2 SOL 296 11.798 27.798 18.666 1.00 0.00 H +ATOM 892 OW SOL 297 13.949 14.903 14.018 1.00 0.00 O +ATOM 893 HW1 SOL 297 13.391 14.944 14.846 1.00 0.00 H +ATOM 894 HW2 SOL 297 13.286 15.029 13.280 1.00 0.00 H +ATOM 895 OW SOL 298 24.441 9.774 18.896 1.00 0.00 O +ATOM 896 HW1 SOL 298 24.484 8.795 18.698 1.00 0.00 H +ATOM 897 HW2 SOL 298 23.461 9.959 18.959 1.00 0.00 H +ATOM 898 OW SOL 299 24.825 20.625 13.710 1.00 0.00 O +ATOM 899 HW1 SOL 299 24.699 19.834 13.111 1.00 0.00 H +ATOM 900 HW2 SOL 299 24.759 21.405 13.087 1.00 0.00 H +ATOM 901 OW SOL 300 30.311 15.797 23.908 1.00 0.00 O +ATOM 902 HW1 SOL 300 30.013 16.347 23.128 1.00 0.00 H +ATOM 903 HW2 SOL 300 31.248 16.106 24.070 1.00 0.00 H +ATOM 904 OW SOL 301 14.689 25.210 19.062 1.00 0.00 O +ATOM 905 HW1 SOL 301 14.868 24.486 18.395 1.00 0.00 H +ATOM 906 HW2 SOL 301 15.310 25.943 18.787 1.00 0.00 H +ATOM 907 OW SOL 302 25.131 30.384 14.211 1.00 0.00 O +ATOM 908 HW1 SOL 302 25.229 30.043 15.146 1.00 0.00 H +ATOM 909 HW2 SOL 302 24.835 31.331 14.335 1.00 0.00 H +ATOM 910 OW SOL 303 26.817 28.630 15.931 1.00 0.00 O +ATOM 911 HW1 SOL 303 26.854 29.598 16.177 1.00 0.00 H +ATOM 912 HW2 SOL 303 27.762 28.323 16.039 1.00 0.00 H +ATOM 913 OW SOL 304 25.870 28.779 23.498 1.00 0.00 O +ATOM 914 HW1 SOL 304 26.007 28.035 24.152 1.00 0.00 H +ATOM 915 HW2 SOL 304 26.345 28.462 22.677 1.00 0.00 H +ATOM 916 OW SOL 305 21.224 20.028 20.919 1.00 0.00 O +ATOM 917 HW1 SOL 305 20.868 19.663 20.059 1.00 0.00 H +ATOM 918 HW2 SOL 305 21.455 19.210 21.445 1.00 0.00 H +ATOM 919 OW SOL 306 23.951 18.581 19.460 1.00 0.00 O +ATOM 920 HW1 SOL 306 24.755 18.081 19.139 1.00 0.00 H +ATOM 921 HW2 SOL 306 23.703 19.155 18.679 1.00 0.00 H +ATOM 922 OW SOL 307 14.745 23.638 10.984 1.00 0.00 O +ATOM 923 HW1 SOL 307 14.721 24.346 11.689 1.00 0.00 H +ATOM 924 HW2 SOL 307 14.730 22.785 11.506 1.00 0.00 H +ATOM 925 OW SOL 308 20.995 28.107 28.584 1.00 0.00 O +ATOM 926 HW1 SOL 308 21.030 29.030 28.201 1.00 0.00 H +ATOM 927 HW2 SOL 308 20.408 28.206 29.388 1.00 0.00 H +ATOM 928 OW SOL 309 21.468 30.225 29.577 1.00 0.00 O +ATOM 929 HW1 SOL 309 22.120 30.435 28.848 1.00 0.00 H +ATOM 930 HW2 SOL 309 20.824 30.989 29.546 1.00 0.00 H +ATOM 931 OW SOL 310 24.896 27.982 17.390 1.00 0.00 O +ATOM 932 HW1 SOL 310 25.409 28.790 17.677 1.00 0.00 H +ATOM 933 HW2 SOL 310 24.781 28.112 16.405 1.00 0.00 H +ATOM 934 OW SOL 311 10.694 13.902 19.257 1.00 0.00 O +ATOM 935 HW1 SOL 311 9.883 14.455 19.452 1.00 0.00 H +ATOM 936 HW2 SOL 311 11.300 14.094 20.029 1.00 0.00 H +ATOM 937 OW SOL 312 12.486 10.419 18.077 1.00 0.00 O +ATOM 938 HW1 SOL 312 11.824 11.058 17.686 1.00 0.00 H +ATOM 939 HW2 SOL 312 12.027 10.075 18.896 1.00 0.00 H +ATOM 940 OW SOL 313 21.726 12.250 26.675 1.00 0.00 O +ATOM 941 HW1 SOL 313 21.308 12.626 25.848 1.00 0.00 H +ATOM 942 HW2 SOL 313 21.836 13.048 27.268 1.00 0.00 H +ATOM 943 OW SOL 314 20.056 23.431 18.133 1.00 0.00 O +ATOM 944 HW1 SOL 314 19.555 24.081 17.561 1.00 0.00 H +ATOM 945 HW2 SOL 314 19.366 23.106 18.780 1.00 0.00 H +ATOM 946 OW SOL 315 8.353 22.549 12.108 1.00 0.00 O +ATOM 947 HW1 SOL 315 7.981 23.298 12.656 1.00 0.00 H +ATOM 948 HW2 SOL 315 8.381 21.780 12.747 1.00 0.00 H +ATOM 949 OW SOL 316 23.066 24.865 12.477 1.00 0.00 O +ATOM 950 HW1 SOL 316 23.923 24.801 11.966 1.00 0.00 H +ATOM 951 HW2 SOL 316 22.364 24.788 11.770 1.00 0.00 H +ATOM 952 OW SOL 317 21.609 21.802 31.335 1.00 0.00 O +ATOM 953 HW1 SOL 317 20.981 21.226 30.812 1.00 0.00 H +ATOM 954 HW2 SOL 317 22.229 22.167 30.639 1.00 0.00 H +ATOM 955 OW SOL 318 11.152 12.741 16.477 1.00 0.00 O +ATOM 956 HW1 SOL 318 10.489 13.482 16.374 1.00 0.00 H +ATOM 957 HW2 SOL 318 11.749 12.847 15.682 1.00 0.00 H +ATOM 958 OW SOL 319 16.479 19.355 30.032 1.00 0.00 O +ATOM 959 HW1 SOL 319 15.718 19.991 30.156 1.00 0.00 H +ATOM 960 HW2 SOL 319 17.195 19.922 29.624 1.00 0.00 H +ATOM 961 OW SOL 320 16.511 25.983 28.210 1.00 0.00 O +ATOM 962 HW1 SOL 320 15.788 26.358 28.790 1.00 0.00 H +ATOM 963 HW2 SOL 320 17.095 26.773 28.022 1.00 0.00 H +ATOM 964 OW SOL 321 11.555 9.180 21.060 1.00 0.00 O +ATOM 965 HW1 SOL 321 11.639 8.600 21.869 1.00 0.00 H +ATOM 966 HW2 SOL 321 12.093 9.990 21.293 1.00 0.00 H +ATOM 967 OW SOL 322 29.258 22.693 23.080 1.00 0.00 O +ATOM 968 HW1 SOL 322 28.713 23.180 23.763 1.00 0.00 H +ATOM 969 HW2 SOL 322 28.812 22.924 22.215 1.00 0.00 H +ATOM 970 OW SOL 323 15.293 7.604 25.247 1.00 0.00 O +ATOM 971 HW1 SOL 323 15.848 8.208 24.676 1.00 0.00 H +ATOM 972 HW2 SOL 323 14.580 7.280 24.626 1.00 0.00 H +ATOM 973 OW SOL 324 16.703 32.803 18.354 1.00 0.00 O +ATOM 974 HW1 SOL 324 16.126 33.380 18.931 1.00 0.00 H +ATOM 975 HW2 SOL 324 17.349 32.396 18.999 1.00 0.00 H +ATOM 976 OW SOL 325 13.842 12.645 18.127 1.00 0.00 O +ATOM 977 HW1 SOL 325 14.323 13.243 17.486 1.00 0.00 H +ATOM 978 HW2 SOL 325 12.897 12.662 17.801 1.00 0.00 H +ATOM 979 OW SOL 326 14.556 13.983 8.009 1.00 0.00 O +ATOM 980 HW1 SOL 326 14.206 14.169 8.926 1.00 0.00 H +ATOM 981 HW2 SOL 326 14.445 14.854 7.532 1.00 0.00 H +ATOM 982 OW SOL 327 27.488 22.281 18.419 1.00 0.00 O +ATOM 983 HW1 SOL 327 26.914 22.997 18.815 1.00 0.00 H +ATOM 984 HW2 SOL 327 27.033 21.434 18.693 1.00 0.00 H +ATOM 985 OW SOL 328 20.380 31.224 13.120 1.00 0.00 O +ATOM 986 HW1 SOL 328 20.139 30.588 13.853 1.00 0.00 H +ATOM 987 HW2 SOL 328 20.743 32.019 13.608 1.00 0.00 H +ATOM 988 OW SOL 329 28.233 19.659 23.418 1.00 0.00 O +ATOM 989 HW1 SOL 329 27.999 19.815 22.459 1.00 0.00 H +ATOM 990 HW2 SOL 329 28.599 18.729 23.424 1.00 0.00 H +ATOM 991 OW SOL 330 27.613 9.786 25.228 1.00 0.00 O +ATOM 992 HW1 SOL 330 28.516 9.582 25.605 1.00 0.00 H +ATOM 993 HW2 SOL 330 27.816 10.233 24.357 1.00 0.00 H +ATOM 994 OW SOL 331 26.953 11.666 23.287 1.00 0.00 O +ATOM 995 HW1 SOL 331 27.240 10.967 22.632 1.00 0.00 H +ATOM 996 HW2 SOL 331 26.091 12.004 22.908 1.00 0.00 H +ATOM 997 OW SOL 332 17.325 7.120 22.392 1.00 0.00 O +ATOM 998 HW1 SOL 332 17.426 8.040 22.770 1.00 0.00 H +ATOM 999 HW2 SOL 332 17.048 6.571 23.181 1.00 0.00 H +ATOM 1000 OW SOL 333 11.304 17.823 11.869 1.00 0.00 O +ATOM 1001 HW1 SOL 333 11.740 18.013 12.749 1.00 0.00 H +ATOM 1002 HW2 SOL 333 10.327 17.871 12.075 1.00 0.00 H +ATOM 1003 OW SOL 334 30.392 14.897 18.837 1.00 0.00 O +ATOM 1004 HW1 SOL 334 30.071 15.409 19.634 1.00 0.00 H +ATOM 1005 HW2 SOL 334 31.097 14.295 19.212 1.00 0.00 H +ATOM 1006 OW SOL 335 20.738 13.693 19.175 1.00 0.00 O +ATOM 1007 HW1 SOL 335 19.925 13.716 18.593 1.00 0.00 H +ATOM 1008 HW2 SOL 335 20.469 14.225 19.977 1.00 0.00 H +ATOM 1009 OW SOL 336 22.146 8.872 20.606 1.00 0.00 O +ATOM 1010 HW1 SOL 336 22.323 8.101 19.994 1.00 0.00 H +ATOM 1011 HW2 SOL 336 21.919 9.621 19.984 1.00 0.00 H +ATOM 1012 OW SOL 337 17.898 29.877 12.282 1.00 0.00 O +ATOM 1013 HW1 SOL 337 18.653 29.401 12.733 1.00 0.00 H +ATOM 1014 HW2 SOL 337 17.369 30.254 13.042 1.00 0.00 H +ATOM 1015 OW SOL 338 9.579 23.791 27.081 1.00 0.00 O +ATOM 1016 HW1 SOL 338 9.173 24.458 27.705 1.00 0.00 H +ATOM 1017 HW2 SOL 338 8.955 23.789 26.299 1.00 0.00 H +ATOM 1018 OW SOL 339 18.804 7.349 14.881 1.00 0.00 O +ATOM 1019 HW1 SOL 339 18.160 6.979 15.551 1.00 0.00 H +ATOM 1020 HW2 SOL 339 19.408 7.927 15.429 1.00 0.00 H +ATOM 1021 OW SOL 340 17.958 31.886 24.386 1.00 0.00 O +ATOM 1022 HW1 SOL 340 18.675 31.220 24.183 1.00 0.00 H +ATOM 1023 HW2 SOL 340 18.213 32.682 23.837 1.00 0.00 H +ATOM 1024 OW SOL 341 25.496 25.147 30.905 1.00 0.00 O +ATOM 1025 HW1 SOL 341 25.379 25.434 31.855 1.00 0.00 H +ATOM 1026 HW2 SOL 341 26.139 25.816 30.533 1.00 0.00 H +ATOM 1027 OW SOL 342 22.647 25.090 16.394 1.00 0.00 O +ATOM 1028 HW1 SOL 342 22.824 25.814 17.061 1.00 0.00 H +ATOM 1029 HW2 SOL 342 22.426 25.589 15.557 1.00 0.00 H +ATOM 1030 OW SOL 343 7.347 20.812 17.781 1.00 0.00 O +ATOM 1031 HW1 SOL 343 7.132 20.349 18.640 1.00 0.00 H +ATOM 1032 HW2 SOL 343 7.366 20.070 17.111 1.00 0.00 H +ATOM 1033 OW SOL 344 15.251 10.366 24.890 1.00 0.00 O +ATOM 1034 HW1 SOL 344 14.474 9.836 24.551 1.00 0.00 H +ATOM 1035 HW2 SOL 344 16.010 10.071 24.309 1.00 0.00 H +ATOM 1036 OW SOL 345 13.711 29.075 24.741 1.00 0.00 O +ATOM 1037 HW1 SOL 345 12.999 28.666 25.312 1.00 0.00 H +ATOM 1038 HW2 SOL 345 13.198 29.521 24.008 1.00 0.00 H +ATOM 1039 OW SOL 346 12.199 23.930 24.988 1.00 0.00 O +ATOM 1040 HW1 SOL 346 12.707 23.203 25.448 1.00 0.00 H +ATOM 1041 HW2 SOL 346 12.905 24.433 24.490 1.00 0.00 H +ATOM 1042 OW SOL 347 30.271 18.583 18.904 1.00 0.00 O +ATOM 1043 HW1 SOL 347 29.513 19.052 19.356 1.00 0.00 H +ATOM 1044 HW2 SOL 347 30.661 18.013 19.627 1.00 0.00 H +ATOM 1045 OW SOL 348 18.452 13.467 15.734 1.00 0.00 O +ATOM 1046 HW1 SOL 348 18.745 13.009 16.573 1.00 0.00 H +ATOM 1047 HW2 SOL 348 18.019 14.306 16.061 1.00 0.00 H +ATOM 1048 OW SOL 349 27.608 25.406 21.006 1.00 0.00 O +ATOM 1049 HW1 SOL 349 28.239 25.387 20.230 1.00 0.00 H +ATOM 1050 HW2 SOL 349 26.879 26.019 20.703 1.00 0.00 H +ATOM 1051 OW SOL 350 29.293 13.162 26.803 1.00 0.00 O +ATOM 1052 HW1 SOL 350 28.984 12.418 27.395 1.00 0.00 H +ATOM 1053 HW2 SOL 350 28.454 13.670 26.605 1.00 0.00 H +ATOM 1054 OW SOL 351 25.367 16.306 20.113 1.00 0.00 O +ATOM 1055 HW1 SOL 351 25.891 17.140 20.287 1.00 0.00 H +ATOM 1056 HW2 SOL 351 24.438 16.548 20.392 1.00 0.00 H +ATOM 1057 OW SOL 352 30.822 27.105 23.424 1.00 0.00 O +ATOM 1058 HW1 SOL 352 31.202 27.871 23.943 1.00 0.00 H +ATOM 1059 HW2 SOL 352 30.581 26.439 24.130 1.00 0.00 H +ATOM 1060 OW SOL 353 23.941 14.747 25.295 1.00 0.00 O +ATOM 1061 HW1 SOL 353 24.843 15.162 25.416 1.00 0.00 H +ATOM 1062 HW2 SOL 353 23.374 15.211 25.975 1.00 0.00 H +ATOM 1063 OW SOL 354 13.604 17.251 21.190 1.00 0.00 O +ATOM 1064 HW1 SOL 354 12.826 17.862 21.334 1.00 0.00 H +ATOM 1065 HW2 SOL 354 13.569 16.634 21.976 1.00 0.00 H +ATOM 1066 OW SOL 355 18.949 7.925 24.760 1.00 0.00 O +ATOM 1067 HW1 SOL 355 19.061 8.403 23.889 1.00 0.00 H +ATOM 1068 HW2 SOL 355 17.959 7.917 24.900 1.00 0.00 H +ATOM 1069 OW SOL 356 8.916 14.706 23.338 1.00 0.00 O +ATOM 1070 HW1 SOL 356 9.277 14.271 24.163 1.00 0.00 H +ATOM 1071 HW2 SOL 356 8.325 15.430 23.693 1.00 0.00 H +ATOM 1072 OW SOL 357 26.796 12.444 17.183 1.00 0.00 O +ATOM 1073 HW1 SOL 357 27.461 12.928 16.616 1.00 0.00 H +ATOM 1074 HW2 SOL 357 26.186 13.168 17.503 1.00 0.00 H +ATOM 1075 OW SOL 358 13.234 9.422 15.555 1.00 0.00 O +ATOM 1076 HW1 SOL 358 12.639 9.431 16.359 1.00 0.00 H +ATOM 1077 HW2 SOL 358 12.597 9.516 14.790 1.00 0.00 H +ATOM 1078 OW SOL 359 16.066 17.405 24.928 1.00 0.00 O +ATOM 1079 HW1 SOL 359 15.432 17.970 24.400 1.00 0.00 H +ATOM 1080 HW2 SOL 359 15.787 17.561 25.875 1.00 0.00 H +ATOM 1081 OW SOL 360 18.659 24.815 26.775 1.00 0.00 O +ATOM 1082 HW1 SOL 360 19.219 24.209 27.339 1.00 0.00 H +ATOM 1083 HW2 SOL 360 18.065 25.272 27.437 1.00 0.00 H +ATOM 1084 OW SOL 361 10.600 13.243 25.686 1.00 0.00 O +ATOM 1085 HW1 SOL 361 11.333 13.874 25.432 1.00 0.00 H +ATOM 1086 HW2 SOL 361 10.318 12.846 24.812 1.00 0.00 H +ATOM 1087 OW SOL 362 10.012 29.575 16.524 1.00 0.00 O +ATOM 1088 HW1 SOL 362 9.500 29.086 15.818 1.00 0.00 H +ATOM 1089 HW2 SOL 362 10.877 29.798 16.075 1.00 0.00 H +ATOM 1090 OW SOL 363 23.586 27.355 19.055 1.00 0.00 O +ATOM 1091 HW1 SOL 363 24.502 26.964 18.967 1.00 0.00 H +ATOM 1092 HW2 SOL 363 23.752 28.341 19.077 1.00 0.00 H +ATOM 1093 OW SOL 364 9.635 19.206 24.800 1.00 0.00 O +ATOM 1094 HW1 SOL 364 9.097 19.827 25.370 1.00 0.00 H +ATOM 1095 HW2 SOL 364 10.251 18.762 25.452 1.00 0.00 H +ATOM 1096 OW SOL 365 14.658 26.293 14.899 1.00 0.00 O +ATOM 1097 HW1 SOL 365 14.872 25.976 13.975 1.00 0.00 H +ATOM 1098 HW2 SOL 365 15.201 27.127 14.994 1.00 0.00 H +ATOM 1099 OW SOL 366 13.759 14.754 20.145 1.00 0.00 O +ATOM 1100 HW1 SOL 366 13.554 14.035 19.482 1.00 0.00 H +ATOM 1101 HW2 SOL 366 14.756 14.731 20.219 1.00 0.00 H +ATOM 1102 OW SOL 367 12.001 14.814 10.866 1.00 0.00 O +ATOM 1103 HW1 SOL 367 12.869 14.379 10.626 1.00 0.00 H +ATOM 1104 HW2 SOL 367 11.604 15.053 9.980 1.00 0.00 H +ATOM 1105 OW SOL 368 18.668 20.118 8.220 1.00 0.00 O +ATOM 1106 HW1 SOL 368 17.814 20.193 8.735 1.00 0.00 H +ATOM 1107 HW2 SOL 368 18.404 19.611 7.399 1.00 0.00 H +ATOM 1108 OW SOL 369 23.926 13.005 24.371 1.00 0.00 O +ATOM 1109 HW1 SOL 369 23.334 13.133 23.575 1.00 0.00 H +ATOM 1110 HW2 SOL 369 24.838 12.905 23.974 1.00 0.00 H +ATOM 1111 OW SOL 370 23.517 7.462 17.110 1.00 0.00 O +ATOM 1112 HW1 SOL 370 24.488 7.690 17.189 1.00 0.00 H +ATOM 1113 HW2 SOL 370 23.088 8.336 16.880 1.00 0.00 H +ATOM 1114 OW SOL 371 26.357 18.637 14.769 1.00 0.00 O +ATOM 1115 HW1 SOL 371 26.316 19.578 14.433 1.00 0.00 H +ATOM 1116 HW2 SOL 371 27.258 18.319 14.472 1.00 0.00 H +ATOM 1117 OW SOL 372 21.116 28.517 20.056 1.00 0.00 O +ATOM 1118 HW1 SOL 372 20.534 27.824 19.631 1.00 0.00 H +ATOM 1119 HW2 SOL 372 21.533 28.985 19.277 1.00 0.00 H +ATOM 1120 OW SOL 373 27.604 11.145 20.199 1.00 0.00 O +ATOM 1121 HW1 SOL 373 27.072 11.634 20.889 1.00 0.00 H +ATOM 1122 HW2 SOL 373 28.093 10.450 20.726 1.00 0.00 H +ATOM 1123 OW SOL 374 11.692 16.705 31.095 1.00 0.00 O +ATOM 1124 HW1 SOL 374 10.808 16.892 30.666 1.00 0.00 H +ATOM 1125 HW2 SOL 374 12.254 16.366 30.340 1.00 0.00 H +ATOM 1126 OW SOL 375 17.350 29.821 30.443 1.00 0.00 O +ATOM 1127 HW1 SOL 375 17.988 29.961 29.686 1.00 0.00 H +ATOM 1128 HW2 SOL 375 17.740 29.048 30.941 1.00 0.00 H +ATOM 1129 OW SOL 376 16.689 13.349 21.122 1.00 0.00 O +ATOM 1130 HW1 SOL 376 16.772 12.656 21.838 1.00 0.00 H +ATOM 1131 HW2 SOL 376 16.237 14.113 21.584 1.00 0.00 H +ATOM 1132 OW SOL 377 15.870 18.012 32.581 1.00 0.00 O +ATOM 1133 HW1 SOL 377 15.987 18.011 31.588 1.00 0.00 H +ATOM 1134 HW2 SOL 377 16.784 17.796 32.926 1.00 0.00 H +ATOM 1135 OW SOL 378 18.304 16.070 15.111 1.00 0.00 O +ATOM 1136 HW1 SOL 378 18.299 17.006 14.760 1.00 0.00 H +ATOM 1137 HW2 SOL 378 17.907 15.536 14.364 1.00 0.00 H +ATOM 1138 OW SOL 379 18.903 20.198 10.486 1.00 0.00 O +ATOM 1139 HW1 SOL 379 19.030 19.297 10.901 1.00 0.00 H +ATOM 1140 HW2 SOL 379 19.667 20.733 10.846 1.00 0.00 H +ATOM 1141 OW SOL 380 22.502 15.710 17.837 1.00 0.00 O +ATOM 1142 HW1 SOL 380 22.313 15.970 18.784 1.00 0.00 H +ATOM 1143 HW2 SOL 380 22.606 16.588 17.368 1.00 0.00 H +ATOM 1144 OW SOL 381 29.683 30.062 19.831 1.00 0.00 O +ATOM 1145 HW1 SOL 381 29.674 29.784 20.792 1.00 0.00 H +ATOM 1146 HW2 SOL 381 28.829 30.570 19.724 1.00 0.00 H +ATOM 1147 OW SOL 382 26.170 27.205 27.204 1.00 0.00 O +ATOM 1148 HW1 SOL 382 26.836 26.494 27.429 1.00 0.00 H +ATOM 1149 HW2 SOL 382 25.555 27.210 27.993 1.00 0.00 H +ATOM 1150 OW SOL 383 16.106 13.386 18.542 1.00 0.00 O +ATOM 1151 HW1 SOL 383 16.962 13.868 18.728 1.00 0.00 H +ATOM 1152 HW2 SOL 383 15.997 12.785 19.334 1.00 0.00 H +ATOM 1153 OW SOL 384 18.518 21.201 17.289 1.00 0.00 O +ATOM 1154 HW1 SOL 384 18.236 20.768 16.433 1.00 0.00 H +ATOM 1155 HW2 SOL 384 19.194 21.879 17.000 1.00 0.00 H +ATOM 1156 OW SOL 385 27.338 17.916 28.534 1.00 0.00 O +ATOM 1157 HW1 SOL 385 27.345 17.201 29.232 1.00 0.00 H +ATOM 1158 HW2 SOL 385 27.179 18.754 29.056 1.00 0.00 H +ATOM 1159 OW SOL 386 22.872 26.440 9.393 1.00 0.00 O +ATOM 1160 HW1 SOL 386 22.770 25.847 10.192 1.00 0.00 H +ATOM 1161 HW2 SOL 386 22.487 27.312 9.696 1.00 0.00 H +ATOM 1162 OW SOL 387 26.300 16.482 16.316 1.00 0.00 O +ATOM 1163 HW1 SOL 387 25.677 16.528 17.097 1.00 0.00 H +ATOM 1164 HW2 SOL 387 25.909 15.761 15.744 1.00 0.00 H +ATOM 1165 OW SOL 388 25.715 22.803 30.761 1.00 0.00 O +ATOM 1166 HW1 SOL 388 26.272 21.975 30.708 1.00 0.00 H +ATOM 1167 HW2 SOL 388 26.349 23.531 30.501 1.00 0.00 H +ATOM 1168 OW SOL 389 24.335 9.089 13.169 1.00 0.00 O +ATOM 1169 HW1 SOL 389 24.710 8.808 14.052 1.00 0.00 H +ATOM 1170 HW2 SOL 389 24.584 8.337 12.558 1.00 0.00 H +ATOM 1171 OW SOL 390 19.492 13.050 28.693 1.00 0.00 O +ATOM 1172 HW1 SOL 390 18.690 12.532 28.990 1.00 0.00 H +ATOM 1173 HW2 SOL 390 19.954 12.428 28.062 1.00 0.00 H +ATOM 1174 OW SOL 391 15.319 18.192 20.811 1.00 0.00 O +ATOM 1175 HW1 SOL 391 15.078 18.658 19.960 1.00 0.00 H +ATOM 1176 HW2 SOL 391 16.106 18.708 21.148 1.00 0.00 H +ATOM 1177 OW SOL 392 10.011 10.867 21.045 1.00 0.00 O +ATOM 1178 HW1 SOL 392 10.224 10.284 20.261 1.00 0.00 H +ATOM 1179 HW2 SOL 392 9.590 11.674 20.630 1.00 0.00 H +ATOM 1180 OW SOL 393 29.350 11.459 25.227 1.00 0.00 O +ATOM 1181 HW1 SOL 393 30.300 11.760 25.311 1.00 0.00 H +ATOM 1182 HW2 SOL 393 29.123 11.659 24.275 1.00 0.00 H +ATOM 1183 OW SOL 394 12.469 18.947 30.412 1.00 0.00 O +ATOM 1184 HW1 SOL 394 11.739 19.586 30.172 1.00 0.00 H +ATOM 1185 HW2 SOL 394 12.924 18.769 29.540 1.00 0.00 H +ATOM 1186 OW SOL 395 27.922 15.175 20.298 1.00 0.00 O +ATOM 1187 HW1 SOL 395 27.229 15.856 20.059 1.00 0.00 H +ATOM 1188 HW2 SOL 395 27.389 14.420 20.680 1.00 0.00 H +ATOM 1189 OW SOL 396 16.812 9.336 28.303 1.00 0.00 O +ATOM 1190 HW1 SOL 396 16.960 9.171 29.278 1.00 0.00 H +ATOM 1191 HW2 SOL 396 16.286 8.540 28.006 1.00 0.00 H +ATOM 1192 OW SOL 397 15.418 29.692 28.828 1.00 0.00 O +ATOM 1193 HW1 SOL 397 16.073 30.447 28.800 1.00 0.00 H +ATOM 1194 HW2 SOL 397 15.156 29.643 29.792 1.00 0.00 H +ATOM 1195 OW SOL 398 27.811 30.191 14.603 1.00 0.00 O +ATOM 1196 HW1 SOL 398 27.420 31.110 14.628 1.00 0.00 H +ATOM 1197 HW2 SOL 398 27.684 29.906 13.653 1.00 0.00 H +ATOM 1198 OW SOL 399 11.736 20.569 9.793 1.00 0.00 O +ATOM 1199 HW1 SOL 399 11.736 20.456 8.800 1.00 0.00 H +ATOM 1200 HW2 SOL 399 10.834 20.237 10.069 1.00 0.00 H +ATOM 1201 OW SOL 400 15.485 14.225 11.483 1.00 0.00 O +ATOM 1202 HW1 SOL 400 15.008 14.268 10.605 1.00 0.00 H +ATOM 1203 HW2 SOL 400 16.443 14.371 11.237 1.00 0.00 H +ATOM 1204 OW SOL 401 12.709 30.471 13.919 1.00 0.00 O +ATOM 1205 HW1 SOL 401 11.788 30.503 14.307 1.00 0.00 H +ATOM 1206 HW2 SOL 401 13.084 29.615 14.272 1.00 0.00 H +ATOM 1207 OW SOL 402 31.111 20.994 19.932 1.00 0.00 O +ATOM 1208 HW1 SOL 402 31.576 21.475 20.675 1.00 0.00 H +ATOM 1209 HW2 SOL 402 30.467 20.394 20.407 1.00 0.00 H +ATOM 1210 OW SOL 403 24.062 30.747 23.377 1.00 0.00 O +ATOM 1211 HW1 SOL 403 24.332 31.552 23.905 1.00 0.00 H +ATOM 1212 HW2 SOL 403 24.483 30.900 22.483 1.00 0.00 H +ATOM 1213 OW SOL 404 18.431 11.951 18.140 1.00 0.00 O +ATOM 1214 HW1 SOL 404 17.742 11.640 17.485 1.00 0.00 H +ATOM 1215 HW2 SOL 404 17.895 12.194 18.948 1.00 0.00 H +ATOM 1216 OW SOL 405 16.283 31.157 26.623 1.00 0.00 O +ATOM 1217 HW1 SOL 405 16.910 31.868 26.305 1.00 0.00 H +ATOM 1218 HW2 SOL 405 16.305 30.478 25.890 1.00 0.00 H +ATOM 1219 OW SOL 406 18.803 21.710 12.232 1.00 0.00 O +ATOM 1220 HW1 SOL 406 18.994 22.675 12.415 1.00 0.00 H +ATOM 1221 HW2 SOL 406 17.880 21.581 12.593 1.00 0.00 H +ATOM 1222 OW SOL 407 11.286 24.629 11.978 1.00 0.00 O +ATOM 1223 HW1 SOL 407 10.390 25.020 12.189 1.00 0.00 H +ATOM 1224 HW2 SOL 407 11.927 25.339 12.271 1.00 0.00 H +ATOM 1225 OW SOL 408 25.149 18.535 17.370 1.00 0.00 O +ATOM 1226 HW1 SOL 408 25.862 18.381 16.686 1.00 0.00 H +ATOM 1227 HW2 SOL 408 24.761 19.420 17.110 1.00 0.00 H +ATOM 1228 OW SOL 409 19.328 20.068 13.042 1.00 0.00 O +ATOM 1229 HW1 SOL 409 18.576 19.495 12.717 1.00 0.00 H +ATOM 1230 HW2 SOL 409 19.812 19.477 13.687 1.00 0.00 H +ATOM 1231 OW SOL 410 21.237 25.471 27.521 1.00 0.00 O +ATOM 1232 HW1 SOL 410 21.435 24.646 28.050 1.00 0.00 H +ATOM 1233 HW2 SOL 410 20.625 25.992 28.116 1.00 0.00 H +ATOM 1234 OW SOL 411 12.074 20.398 27.067 1.00 0.00 O +ATOM 1235 HW1 SOL 411 12.603 19.796 27.664 1.00 0.00 H +ATOM 1236 HW2 SOL 411 11.489 20.905 27.700 1.00 0.00 H +ATOM 1237 OW SOL 412 13.812 21.589 25.906 1.00 0.00 O +ATOM 1238 HW1 SOL 412 12.974 21.098 25.669 1.00 0.00 H +ATOM 1239 HW2 SOL 412 14.451 20.860 26.151 1.00 0.00 H +ATOM 1240 OW SOL 413 25.688 30.704 27.010 1.00 0.00 O +ATOM 1241 HW1 SOL 413 25.097 30.864 26.221 1.00 0.00 H +ATOM 1242 HW2 SOL 413 25.225 31.186 27.754 1.00 0.00 H +ATOM 1243 OW SOL 414 13.208 18.032 32.434 1.00 0.00 O +ATOM 1244 HW1 SOL 414 14.078 18.249 31.993 1.00 0.00 H +ATOM 1245 HW2 SOL 414 12.655 18.852 32.282 1.00 0.00 H +ATOM 1246 OW SOL 415 7.108 16.434 22.080 1.00 0.00 O +ATOM 1247 HW1 SOL 415 7.484 17.358 22.011 1.00 0.00 H +ATOM 1248 HW2 SOL 415 7.761 15.875 21.567 1.00 0.00 H +ATOM 1249 OW SOL 416 14.774 20.761 17.474 1.00 0.00 O +ATOM 1250 HW1 SOL 416 14.703 19.946 18.048 1.00 0.00 H +ATOM 1251 HW2 SOL 416 15.365 20.469 16.722 1.00 0.00 H +ATOM 1252 OW SOL 417 25.788 20.505 20.425 1.00 0.00 O +ATOM 1253 HW1 SOL 417 24.806 20.348 20.318 1.00 0.00 H +ATOM 1254 HW2 SOL 417 26.199 19.650 20.108 1.00 0.00 H +ATOM 1255 OW SOL 418 9.167 20.054 18.678 1.00 0.00 O +ATOM 1256 HW1 SOL 418 8.771 19.152 18.849 1.00 0.00 H +ATOM 1257 HW2 SOL 418 10.121 19.854 18.456 1.00 0.00 H +ATOM 1258 OW SOL 419 9.447 26.979 21.497 1.00 0.00 O +ATOM 1259 HW1 SOL 419 9.976 26.656 20.713 1.00 0.00 H +ATOM 1260 HW2 SOL 419 8.504 26.750 21.255 1.00 0.00 H +ATOM 1261 OW SOL 420 18.650 8.256 26.647 1.00 0.00 O +ATOM 1262 HW1 SOL 420 19.333 8.559 27.311 1.00 0.00 H +ATOM 1263 HW2 SOL 420 18.178 9.099 26.392 1.00 0.00 H +ATOM 1264 OW SOL 421 15.908 15.453 17.743 1.00 0.00 O +ATOM 1265 HW1 SOL 421 15.775 14.632 17.188 1.00 0.00 H +ATOM 1266 HW2 SOL 421 15.282 15.322 18.512 1.00 0.00 H +ATOM 1267 OW SOL 422 11.188 23.471 19.185 1.00 0.00 O +ATOM 1268 HW1 SOL 422 11.046 23.246 18.221 1.00 0.00 H +ATOM 1269 HW2 SOL 422 10.980 22.615 19.659 1.00 0.00 H +ATOM 1270 OW SOL 423 29.510 25.440 22.026 1.00 0.00 O +ATOM 1271 HW1 SOL 423 28.759 25.853 22.540 1.00 0.00 H +ATOM 1272 HW2 SOL 423 29.659 24.566 22.487 1.00 0.00 H +ATOM 1273 OW SOL 424 15.725 17.515 14.579 1.00 0.00 O +ATOM 1274 HW1 SOL 424 15.688 18.487 14.813 1.00 0.00 H +ATOM 1275 HW2 SOL 424 16.285 17.119 15.307 1.00 0.00 H +ATOM 1276 OW SOL 425 18.623 29.156 26.325 1.00 0.00 O +ATOM 1277 HW1 SOL 425 18.714 29.852 25.612 1.00 0.00 H +ATOM 1278 HW2 SOL 425 18.470 28.311 25.812 1.00 0.00 H +ATOM 1279 OW SOL 426 21.211 9.001 15.334 1.00 0.00 O +ATOM 1280 HW1 SOL 426 20.960 8.753 14.399 1.00 0.00 H +ATOM 1281 HW2 SOL 426 21.147 9.998 15.339 1.00 0.00 H +ATOM 1282 OW SOL 427 19.904 17.241 23.554 1.00 0.00 O +ATOM 1283 HW1 SOL 427 19.290 16.757 22.932 1.00 0.00 H +ATOM 1284 HW2 SOL 427 19.962 16.637 24.348 1.00 0.00 H +ATOM 1285 OW SOL 428 21.748 11.771 22.640 1.00 0.00 O +ATOM 1286 HW1 SOL 428 21.852 12.618 22.120 1.00 0.00 H +ATOM 1287 HW2 SOL 428 21.788 12.072 23.593 1.00 0.00 H +ATOM 1288 OW SOL 429 24.392 10.424 15.644 1.00 0.00 O +ATOM 1289 HW1 SOL 429 25.310 10.820 15.617 1.00 0.00 H +ATOM 1290 HW2 SOL 429 23.962 10.771 14.811 1.00 0.00 H +ATOM 1291 OW SOL 430 10.495 24.796 24.754 1.00 0.00 O +ATOM 1292 HW1 SOL 430 9.585 25.143 24.981 1.00 0.00 H +ATOM 1293 HW2 SOL 430 11.113 25.458 25.178 1.00 0.00 H +ATOM 1294 OW SOL 431 25.149 15.809 11.203 1.00 0.00 O +ATOM 1295 HW1 SOL 431 24.365 15.298 10.851 1.00 0.00 H +ATOM 1296 HW2 SOL 431 24.776 16.298 11.992 1.00 0.00 H +ATOM 1297 OW SOL 432 22.707 30.090 25.598 1.00 0.00 O +ATOM 1298 HW1 SOL 432 22.038 29.827 26.292 1.00 0.00 H +ATOM 1299 HW2 SOL 432 23.157 30.890 25.995 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_scf/coords_2955.pdb b/examples/latte_scf/coords_2955.pdb new file mode 100644 index 00000000..04974ee5 --- /dev/null +++ b/examples/latte_scf/coords_2955.pdb @@ -0,0 +1,2961 @@ +TITLE my_single_water.xyz +REMARK THIS IS A SIMULATION BOX +CRYST1 31.230 31.230 31.230 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H HOH 0 15.009 16.295 15.615 1.00 0.00 H +ATOM 2 O HOH 1 15.427 15.434 15.615 1.00 0.00 O +ATOM 3 H HOH 0 16.408 15.115 15.615 1.00 0.00 H +ATOM 4 OW SOL 1 5.690 12.751 11.651 1.00 0.00 O +ATOM 5 HW1 SOL 1 4.760 12.681 11.281 1.00 0.00 H +ATOM 6 HW2 SOL 1 5.800 13.641 12.091 1.00 0.00 H +ATOM 7 OW SOL 2 15.551 15.111 7.030 1.00 0.00 O +ATOM 8 HW1 SOL 2 14.981 14.951 7.840 1.00 0.00 H +ATOM 9 HW2 SOL 2 14.961 15.211 6.230 1.00 0.00 H +ATOM 10 OW SOL 3 17.431 6.180 8.560 1.00 0.00 O +ATOM 11 HW1 SOL 3 17.761 7.120 8.560 1.00 0.00 H +ATOM 12 HW2 SOL 3 17.941 5.640 9.220 1.00 0.00 H +ATOM 13 OW SOL 4 11.351 7.030 7.170 1.00 0.00 O +ATOM 14 HW1 SOL 4 11.921 7.810 6.920 1.00 0.00 H +ATOM 15 HW2 SOL 4 10.751 7.290 7.930 1.00 0.00 H +ATOM 16 OW SOL 5 17.551 6.070 2.310 1.00 0.00 O +ATOM 17 HW1 SOL 5 17.431 5.940 1.320 1.00 0.00 H +ATOM 18 HW2 SOL 5 17.251 5.260 2.800 1.00 0.00 H +ATOM 19 OW SOL 6 7.680 11.441 10.231 1.00 0.00 O +ATOM 20 HW1 SOL 6 6.900 11.611 10.831 1.00 0.00 H +ATOM 21 HW2 SOL 6 8.020 12.311 9.871 1.00 0.00 H +ATOM 22 OW SOL 7 8.500 7.980 18.231 1.00 0.00 O +ATOM 23 HW1 SOL 7 8.460 8.740 18.881 1.00 0.00 H +ATOM 24 HW2 SOL 7 8.720 8.340 17.321 1.00 0.00 H +ATOM 25 OW SOL 8 6.850 10.121 6.650 1.00 0.00 O +ATOM 26 HW1 SOL 8 7.540 9.961 7.350 1.00 0.00 H +ATOM 27 HW2 SOL 8 6.120 10.691 7.030 1.00 0.00 H +ATOM 28 OW SOL 9 6.860 11.611 18.031 1.00 0.00 O +ATOM 29 HW1 SOL 9 7.460 12.401 18.171 1.00 0.00 H +ATOM 30 HW2 SOL 9 6.000 11.921 17.621 1.00 0.00 H +ATOM 31 OW SOL 10 14.601 15.051 13.391 1.00 0.00 O +ATOM 32 HW1 SOL 10 14.841 15.991 13.651 1.00 0.00 H +ATOM 33 HW2 SOL 10 14.441 14.511 14.211 1.00 0.00 H +ATOM 34 OW SOL 11 4.380 3.920 14.991 1.00 0.00 O +ATOM 35 HW1 SOL 11 5.200 3.360 15.081 1.00 0.00 H +ATOM 36 HW2 SOL 11 3.570 3.340 15.031 1.00 0.00 H +ATOM 37 OW SOL 12 16.031 4.470 7.370 1.00 0.00 O +ATOM 38 HW1 SOL 12 15.291 4.930 6.870 1.00 0.00 H +ATOM 39 HW2 SOL 12 16.541 5.150 7.900 1.00 0.00 H +ATOM 40 OW SOL 13 11.271 13.411 16.901 1.00 0.00 O +ATOM 41 HW1 SOL 13 11.741 13.411 17.781 1.00 0.00 H +ATOM 42 HW2 SOL 13 10.791 12.541 16.791 1.00 0.00 H +ATOM 43 OW SOL 14 2.400 10.911 8.860 1.00 0.00 O +ATOM 44 HW1 SOL 14 2.540 10.071 9.380 1.00 0.00 H +ATOM 45 HW2 SOL 14 1.850 11.551 9.410 1.00 0.00 H +ATOM 46 OW SOL 15 6.200 17.861 14.391 1.00 0.00 O +ATOM 47 HW1 SOL 15 5.280 17.691 14.741 1.00 0.00 H +ATOM 48 HW2 SOL 15 6.480 18.781 14.651 1.00 0.00 H +ATOM 49 OW SOL 16 6.060 9.641 1.230 1.00 0.00 O +ATOM 50 HW1 SOL 16 6.130 10.481 0.690 1.00 0.00 H +ATOM 51 HW2 SOL 16 6.520 9.771 2.110 1.00 0.00 H +ATOM 52 OW SOL 17 15.941 1.140 14.801 1.00 0.00 O +ATOM 53 HW1 SOL 17 15.761 1.810 14.081 1.00 0.00 H +ATOM 54 HW2 SOL 17 15.911 1.600 15.691 1.00 0.00 H +ATOM 55 OW SOL 18 1.220 6.430 5.630 1.00 0.00 O +ATOM 56 HW1 SOL 18 0.770 5.550 5.800 1.00 0.00 H +ATOM 57 HW2 SOL 18 1.210 6.970 6.470 1.00 0.00 H +ATOM 58 OW SOL 19 18.421 17.671 3.590 1.00 0.00 O +ATOM 59 HW1 SOL 19 18.961 17.381 4.390 1.00 0.00 H +ATOM 60 HW2 SOL 19 18.721 18.571 3.300 1.00 0.00 H +ATOM 61 OW SOL 20 16.891 9.220 6.120 1.00 0.00 O +ATOM 62 HW1 SOL 20 17.841 8.930 6.200 1.00 0.00 H +ATOM 63 HW2 SOL 20 16.811 9.870 5.370 1.00 0.00 H +ATOM 64 OW SOL 21 16.411 11.081 4.320 1.00 0.00 O +ATOM 65 HW1 SOL 21 17.271 11.101 3.800 1.00 0.00 H +ATOM 66 HW2 SOL 21 16.551 11.551 5.200 1.00 0.00 H +ATOM 67 OW SOL 22 1.130 7.370 15.971 1.00 0.00 O +ATOM 68 HW1 SOL 22 2.010 7.240 16.421 1.00 0.00 H +ATOM 69 HW2 SOL 22 1.000 8.340 15.751 1.00 0.00 H +ATOM 70 OW SOL 23 6.130 13.651 7.260 1.00 0.00 O +ATOM 71 HW1 SOL 23 5.640 12.781 7.350 1.00 0.00 H +ATOM 72 HW2 SOL 23 5.900 14.081 6.390 1.00 0.00 H +ATOM 73 OW SOL 24 12.931 12.281 14.231 1.00 0.00 O +ATOM 74 HW1 SOL 24 13.301 11.551 13.651 1.00 0.00 H +ATOM 75 HW2 SOL 24 13.451 12.331 15.081 1.00 0.00 H +ATOM 76 OW SOL 25 8.090 0.040 5.020 1.00 0.00 O +ATOM 77 HW1 SOL 25 8.490 0.950 4.930 1.00 0.00 H +ATOM 78 HW2 SOL 25 7.090 0.120 5.080 1.00 0.00 H +ATOM 79 OW SOL 26 15.251 9.991 1.900 1.00 0.00 O +ATOM 80 HW1 SOL 26 14.621 9.231 2.030 1.00 0.00 H +ATOM 81 HW2 SOL 26 15.731 10.171 2.760 1.00 0.00 H +ATOM 82 OW SOL 27 11.871 17.921 16.161 1.00 0.00 O +ATOM 83 HW1 SOL 27 12.111 18.521 15.401 1.00 0.00 H +ATOM 84 HW2 SOL 27 11.941 16.971 15.861 1.00 0.00 H +ATOM 85 OW SOL 28 3.170 2.510 18.011 1.00 0.00 O +ATOM 86 HW1 SOL 28 3.880 3.220 18.071 1.00 0.00 H +ATOM 87 HW2 SOL 28 2.290 2.900 18.291 1.00 0.00 H +ATOM 88 OW SOL 29 14.661 14.171 9.531 1.00 0.00 O +ATOM 89 HW1 SOL 29 14.071 14.231 10.331 1.00 0.00 H +ATOM 90 HW2 SOL 29 14.511 13.291 9.071 1.00 0.00 H +ATOM 91 OW SOL 30 16.671 17.141 5.720 1.00 0.00 O +ATOM 92 HW1 SOL 30 16.261 16.911 4.840 1.00 0.00 H +ATOM 93 HW2 SOL 30 16.491 16.401 6.370 1.00 0.00 H +ATOM 94 OW SOL 31 5.980 7.290 2.700 1.00 0.00 O +ATOM 95 HW1 SOL 31 6.220 7.980 2.020 1.00 0.00 H +ATOM 96 HW2 SOL 31 5.200 7.620 3.240 1.00 0.00 H +ATOM 97 OW SOL 32 12.811 3.450 9.441 1.00 0.00 O +ATOM 98 HW1 SOL 32 11.951 2.950 9.311 1.00 0.00 H +ATOM 99 HW2 SOL 32 13.431 2.910 10.001 1.00 0.00 H +ATOM 100 OW SOL 33 15.761 16.621 3.070 1.00 0.00 O +ATOM 101 HW1 SOL 33 16.651 17.081 3.100 1.00 0.00 H +ATOM 102 HW2 SOL 33 15.551 16.381 2.120 1.00 0.00 H +ATOM 103 OW SOL 34 8.070 6.050 14.651 1.00 0.00 O +ATOM 104 HW1 SOL 34 7.600 6.020 15.541 1.00 0.00 H +ATOM 105 HW2 SOL 34 7.560 5.500 13.991 1.00 0.00 H +ATOM 106 OW SOL 35 13.941 4.690 16.741 1.00 0.00 O +ATOM 107 HW1 SOL 35 13.741 5.120 17.621 1.00 0.00 H +ATOM 108 HW2 SOL 35 14.721 4.070 16.831 1.00 0.00 H +ATOM 109 OW SOL 36 9.731 8.900 15.721 1.00 0.00 O +ATOM 110 HW1 SOL 36 10.191 8.060 15.431 1.00 0.00 H +ATOM 111 HW2 SOL 36 9.171 9.240 14.971 1.00 0.00 H +ATOM 112 OW SOL 37 9.911 4.100 12.421 1.00 0.00 O +ATOM 113 HW1 SOL 37 9.141 4.440 12.961 1.00 0.00 H +ATOM 114 HW2 SOL 37 9.571 3.590 11.631 1.00 0.00 H +ATOM 115 OW SOL 38 10.411 7.010 4.290 1.00 0.00 O +ATOM 116 HW1 SOL 38 10.671 6.970 5.250 1.00 0.00 H +ATOM 117 HW2 SOL 38 9.561 6.500 4.150 1.00 0.00 H +ATOM 118 OW SOL 39 8.650 3.480 1.950 1.00 0.00 O +ATOM 119 HW1 SOL 39 9.240 4.110 1.460 1.00 0.00 H +ATOM 120 HW2 SOL 39 8.840 2.540 1.660 1.00 0.00 H +ATOM 121 OW SOL 40 17.191 5.850 18.311 1.00 0.00 O +ATOM 122 HW1 SOL 40 16.931 6.740 17.951 1.00 0.00 H +ATOM 123 HW2 SOL 40 17.171 5.170 17.581 1.00 0.00 H +ATOM 124 OW SOL 41 13.621 11.441 5.450 1.00 0.00 O +ATOM 125 HW1 SOL 41 14.451 11.151 4.970 1.00 0.00 H +ATOM 126 HW2 SOL 41 13.131 12.111 4.890 1.00 0.00 H +ATOM 127 OW SOL 42 5.500 1.960 8.850 1.00 0.00 O +ATOM 128 HW1 SOL 42 5.450 1.910 9.850 1.00 0.00 H +ATOM 129 HW2 SOL 42 5.520 2.920 8.560 1.00 0.00 H +ATOM 130 OW SOL 43 10.081 14.561 4.770 1.00 0.00 O +ATOM 131 HW1 SOL 43 9.621 15.281 4.250 1.00 0.00 H +ATOM 132 HW2 SOL 43 10.041 14.761 5.750 1.00 0.00 H +ATOM 133 OW SOL 44 3.510 18.011 8.530 1.00 0.00 O +ATOM 134 HW1 SOL 44 4.010 17.151 8.590 1.00 0.00 H +ATOM 135 HW2 SOL 44 4.160 18.781 8.500 1.00 0.00 H +ATOM 136 OW SOL 45 17.951 10.661 8.730 1.00 0.00 O +ATOM 137 HW1 SOL 45 17.331 10.511 7.970 1.00 0.00 H +ATOM 138 HW2 SOL 45 17.431 10.771 9.580 1.00 0.00 H +ATOM 139 OW SOL 46 12.271 15.501 15.061 1.00 0.00 O +ATOM 140 HW1 SOL 46 12.331 14.731 15.701 1.00 0.00 H +ATOM 141 HW2 SOL 46 11.751 15.241 14.261 1.00 0.00 H +ATOM 142 OW SOL 47 3.210 9.431 2.420 1.00 0.00 O +ATOM 143 HW1 SOL 47 4.030 9.821 2.000 1.00 0.00 H +ATOM 144 HW2 SOL 47 2.940 8.611 1.930 1.00 0.00 H +ATOM 145 OW SOL 48 14.581 7.350 7.280 1.00 0.00 O +ATOM 146 HW1 SOL 48 14.531 6.700 8.030 1.00 0.00 H +ATOM 147 HW2 SOL 48 15.381 7.940 7.410 1.00 0.00 H +ATOM 148 OW SOL 49 4.610 12.661 17.271 1.00 0.00 O +ATOM 149 HW1 SOL 49 4.110 12.671 16.411 1.00 0.00 H +ATOM 150 HW2 SOL 49 3.980 12.481 18.031 1.00 0.00 H +ATOM 151 OW SOL 50 11.111 17.761 2.370 1.00 0.00 O +ATOM 152 HW1 SOL 50 10.511 17.141 2.870 1.00 0.00 H +ATOM 153 HW2 SOL 50 11.421 17.321 1.520 1.00 0.00 H +ATOM 154 OW SOL 51 2.020 2.850 14.981 1.00 0.00 O +ATOM 155 HW1 SOL 51 1.220 3.450 14.851 1.00 0.00 H +ATOM 156 HW2 SOL 51 1.920 2.360 15.841 1.00 0.00 H +ATOM 157 OW SOL 52 16.321 13.771 0.810 1.00 0.00 O +ATOM 158 HW1 SOL 52 16.001 14.711 0.710 1.00 0.00 H +ATOM 159 HW2 SOL 52 15.561 13.141 0.690 1.00 0.00 H +ATOM 160 OW SOL 53 4.640 17.431 3.230 1.00 0.00 O +ATOM 161 HW1 SOL 53 4.970 17.821 4.090 1.00 0.00 H +ATOM 162 HW2 SOL 53 5.400 17.361 2.580 1.00 0.00 H +ATOM 163 OW SOL 54 14.001 1.070 4.260 1.00 0.00 O +ATOM 164 HW1 SOL 54 13.761 0.700 3.360 1.00 0.00 H +ATOM 165 HW2 SOL 54 14.991 1.230 4.300 1.00 0.00 H +ATOM 166 OW SOL 55 2.490 17.851 12.411 1.00 0.00 O +ATOM 167 HW1 SOL 55 3.060 17.201 12.911 1.00 0.00 H +ATOM 168 HW2 SOL 55 2.330 17.521 11.481 1.00 0.00 H +ATOM 169 OW SOL 56 9.401 16.981 9.040 1.00 0.00 O +ATOM 170 HW1 SOL 56 10.201 16.411 9.250 1.00 0.00 H +ATOM 171 HW2 SOL 56 8.911 16.581 8.270 1.00 0.00 H +ATOM 172 OW SOL 57 3.820 7.000 4.800 1.00 0.00 O +ATOM 173 HW1 SOL 57 4.270 6.100 4.770 1.00 0.00 H +ATOM 174 HW2 SOL 57 2.880 6.890 5.130 1.00 0.00 H +ATOM 175 OW SOL 58 15.471 2.220 17.291 1.00 0.00 O +ATOM 176 HW1 SOL 58 15.421 2.590 18.211 1.00 0.00 H +ATOM 177 HW2 SOL 58 14.751 1.530 17.171 1.00 0.00 H +ATOM 178 OW SOL 59 6.140 1.220 1.170 1.00 0.00 O +ATOM 179 HW1 SOL 59 7.120 1.000 1.240 1.00 0.00 H +ATOM 180 HW2 SOL 59 5.830 1.050 0.240 1.00 0.00 H +ATOM 181 OW SOL 60 7.810 2.640 17.491 1.00 0.00 O +ATOM 182 HW1 SOL 60 8.480 2.030 17.921 1.00 0.00 H +ATOM 183 HW2 SOL 60 7.080 2.830 18.141 1.00 0.00 H +ATOM 184 OW SOL 61 8.880 15.141 11.951 1.00 0.00 O +ATOM 185 HW1 SOL 61 8.650 14.891 11.011 1.00 0.00 H +ATOM 186 HW2 SOL 61 9.490 14.451 12.341 1.00 0.00 H +ATOM 187 OW SOL 62 13.511 5.900 14.331 1.00 0.00 O +ATOM 188 HW1 SOL 62 13.791 5.470 15.181 1.00 0.00 H +ATOM 189 HW2 SOL 62 13.761 6.860 14.341 1.00 0.00 H +ATOM 190 OW SOL 63 8.030 14.021 9.240 1.00 0.00 O +ATOM 191 HW1 SOL 63 8.930 14.161 8.820 1.00 0.00 H +ATOM 192 HW2 SOL 63 7.320 14.041 8.530 1.00 0.00 H +ATOM 193 OW SOL 64 9.220 5.030 8.990 1.00 0.00 O +ATOM 194 HW1 SOL 64 8.970 4.940 8.030 1.00 0.00 H +ATOM 195 HW2 SOL 64 9.700 4.210 9.300 1.00 0.00 H +ATOM 196 OW SOL 65 5.390 0.640 5.120 1.00 0.00 O +ATOM 197 HW1 SOL 65 4.580 0.650 5.700 1.00 0.00 H +ATOM 198 HW2 SOL 65 5.420 1.470 4.570 1.00 0.00 H +ATOM 199 OW SOL 66 14.341 11.881 0.410 1.00 0.00 O +ATOM 200 HW1 SOL 66 14.661 11.121 0.980 1.00 0.00 H +ATOM 201 HW2 SOL 66 13.421 12.151 0.710 1.00 0.00 H +ATOM 202 OW SOL 67 2.970 0.350 1.710 1.00 0.00 O +ATOM 203 HW1 SOL 67 3.460 1.190 1.500 1.00 0.00 H +ATOM 204 HW2 SOL 67 3.590 -0.300 2.160 1.00 0.00 H +ATOM 205 OW SOL 68 9.351 2.360 4.800 1.00 0.00 O +ATOM 206 HW1 SOL 68 8.871 2.770 4.020 1.00 0.00 H +ATOM 207 HW2 SOL 68 10.341 2.340 4.610 1.00 0.00 H +ATOM 208 OW SOL 69 10.761 6.830 14.641 1.00 0.00 O +ATOM 209 HW1 SOL 69 9.961 6.220 14.671 1.00 0.00 H +ATOM 210 HW2 SOL 69 11.571 6.300 14.401 1.00 0.00 H +ATOM 211 OW SOL 70 12.271 15.701 7.930 1.00 0.00 O +ATOM 212 HW1 SOL 70 12.481 16.441 7.280 1.00 0.00 H +ATOM 213 HW2 SOL 70 12.951 15.701 8.660 1.00 0.00 H +ATOM 214 OW SOL 71 4.590 11.521 7.410 1.00 0.00 O +ATOM 215 HW1 SOL 71 3.880 11.251 8.060 1.00 0.00 H +ATOM 216 HW2 SOL 71 4.330 11.241 6.480 1.00 0.00 H +ATOM 217 OW SOL 72 12.711 17.971 5.910 1.00 0.00 O +ATOM 218 HW1 SOL 72 13.151 18.611 5.270 1.00 0.00 H +ATOM 219 HW2 SOL 72 12.211 18.491 6.610 1.00 0.00 H +ATOM 220 OW SOL 73 10.321 5.490 0.160 1.00 0.00 O +ATOM 221 HW1 SOL 73 9.911 6.310 -0.230 1.00 0.00 H +ATOM 222 HW2 SOL 73 10.961 5.750 0.890 1.00 0.00 H +ATOM 223 OW SOL 74 5.610 2.220 11.471 1.00 0.00 O +ATOM 224 HW1 SOL 74 5.990 1.380 11.841 1.00 0.00 H +ATOM 225 HW2 SOL 74 4.730 2.410 11.911 1.00 0.00 H +ATOM 226 OW SOL 75 8.660 4.540 6.420 1.00 0.00 O +ATOM 227 HW1 SOL 75 8.340 5.260 5.800 1.00 0.00 H +ATOM 228 HW2 SOL 75 8.900 3.730 5.890 1.00 0.00 H +ATOM 229 OW SOL 76 10.171 0.390 7.530 1.00 0.00 O +ATOM 230 HW1 SOL 76 9.451 0.440 6.840 1.00 0.00 H +ATOM 231 HW2 SOL 76 9.931 -0.300 8.220 1.00 0.00 H +ATOM 232 OW SOL 77 14.291 11.731 8.670 1.00 0.00 O +ATOM 233 HW1 SOL 77 13.741 10.891 8.600 1.00 0.00 H +ATOM 234 HW2 SOL 77 14.551 12.021 7.750 1.00 0.00 H +ATOM 235 OW SOL 78 14.661 5.900 9.921 1.00 0.00 O +ATOM 236 HW1 SOL 78 14.361 4.950 9.991 1.00 0.00 H +ATOM 237 HW2 SOL 78 15.391 6.060 10.581 1.00 0.00 H +ATOM 238 OW SOL 79 18.571 8.330 3.770 1.00 0.00 O +ATOM 239 HW1 SOL 79 18.991 7.690 4.410 1.00 0.00 H +ATOM 240 HW2 SOL 79 18.191 7.820 2.990 1.00 0.00 H +ATOM 241 OW SOL 80 4.880 13.851 1.740 1.00 0.00 O +ATOM 242 HW1 SOL 80 4.010 13.701 2.210 1.00 0.00 H +ATOM 243 HW2 SOL 80 4.710 14.111 0.790 1.00 0.00 H +ATOM 244 OW SOL 81 16.641 12.801 6.570 1.00 0.00 O +ATOM 245 HW1 SOL 81 17.631 12.881 6.710 1.00 0.00 H +ATOM 246 HW2 SOL 81 16.191 13.641 6.880 1.00 0.00 H +ATOM 247 OW SOL 82 13.901 5.750 0.780 1.00 0.00 O +ATOM 248 HW1 SOL 82 13.361 5.540 1.590 1.00 0.00 H +ATOM 249 HW2 SOL 82 14.811 5.340 0.870 1.00 0.00 H +ATOM 250 OW SOL 83 5.270 2.560 3.280 1.00 0.00 O +ATOM 251 HW1 SOL 83 5.540 1.970 2.530 1.00 0.00 H +ATOM 252 HW2 SOL 83 5.270 3.510 2.970 1.00 0.00 H +ATOM 253 OW SOL 84 17.541 12.231 15.881 1.00 0.00 O +ATOM 254 HW1 SOL 84 18.451 11.841 15.751 1.00 0.00 H +ATOM 255 HW2 SOL 84 17.621 13.191 16.121 1.00 0.00 H +ATOM 256 OW SOL 85 10.641 13.471 13.401 1.00 0.00 O +ATOM 257 HW1 SOL 85 9.841 13.241 13.951 1.00 0.00 H +ATOM 258 HW2 SOL 85 11.471 13.211 13.891 1.00 0.00 H +ATOM 259 OW SOL 86 11.111 11.951 11.001 1.00 0.00 O +ATOM 260 HW1 SOL 86 10.711 12.391 11.811 1.00 0.00 H +ATOM 261 HW2 SOL 86 10.701 12.321 10.171 1.00 0.00 H +ATOM 262 OW SOL 87 16.381 10.991 10.791 1.00 0.00 O +ATOM 263 HW1 SOL 87 16.431 11.801 11.381 1.00 0.00 H +ATOM 264 HW2 SOL 87 15.521 11.011 10.281 1.00 0.00 H +ATOM 265 OW SOL 88 9.150 0.890 14.021 1.00 0.00 O +ATOM 266 HW1 SOL 88 9.400 0.690 13.071 1.00 0.00 H +ATOM 267 HW2 SOL 88 9.870 1.450 14.441 1.00 0.00 H +ATOM 268 OW SOL 89 9.801 11.161 17.191 1.00 0.00 O +ATOM 269 HW1 SOL 89 8.811 11.221 17.291 1.00 0.00 H +ATOM 270 HW2 SOL 89 10.031 10.361 16.631 1.00 0.00 H +ATOM 271 OW SOL 90 7.050 10.501 3.680 1.00 0.00 O +ATOM 272 HW1 SOL 90 6.910 10.571 4.670 1.00 0.00 H +ATOM 273 HW2 SOL 90 7.890 9.991 3.500 1.00 0.00 H +ATOM 274 OW SOL 91 4.100 8.130 12.511 1.00 0.00 O +ATOM 275 HW1 SOL 91 4.960 8.250 13.011 1.00 0.00 H +ATOM 276 HW2 SOL 91 3.680 7.260 12.781 1.00 0.00 H +ATOM 277 OW SOL 92 12.741 3.860 12.621 1.00 0.00 O +ATOM 278 HW1 SOL 92 12.951 4.600 13.261 1.00 0.00 H +ATOM 279 HW2 SOL 92 11.851 4.030 12.191 1.00 0.00 H +ATOM 280 OW SOL 93 0.640 15.641 13.311 1.00 0.00 O +ATOM 281 HW1 SOL 93 0.180 16.461 12.971 1.00 0.00 H +ATOM 282 HW2 SOL 93 1.620 15.831 13.401 1.00 0.00 H +ATOM 283 OW SOL 94 3.670 11.001 5.010 1.00 0.00 O +ATOM 284 HW1 SOL 94 3.600 11.831 4.450 1.00 0.00 H +ATOM 285 HW2 SOL 94 3.710 10.201 4.410 1.00 0.00 H +ATOM 286 OW SOL 95 5.660 5.370 8.650 1.00 0.00 O +ATOM 287 HW1 SOL 95 5.780 6.030 7.910 1.00 0.00 H +ATOM 288 HW2 SOL 95 6.120 5.710 9.480 1.00 0.00 H +ATOM 289 OW SOL 96 12.521 13.481 3.880 1.00 0.00 O +ATOM 290 HW1 SOL 96 13.021 14.251 4.280 1.00 0.00 H +ATOM 291 HW2 SOL 96 11.571 13.501 4.200 1.00 0.00 H +ATOM 292 OW SOL 97 12.721 14.451 11.421 1.00 0.00 O +ATOM 293 HW1 SOL 97 13.191 14.581 12.291 1.00 0.00 H +ATOM 294 HW2 SOL 97 12.061 13.711 11.511 1.00 0.00 H +ATOM 295 OW SOL 98 15.821 6.390 4.720 1.00 0.00 O +ATOM 296 HW1 SOL 98 15.511 7.000 5.450 1.00 0.00 H +ATOM 297 HW2 SOL 98 16.321 6.910 4.030 1.00 0.00 H +ATOM 298 OW SOL 99 3.540 15.101 13.291 1.00 0.00 O +ATOM 299 HW1 SOL 99 3.330 14.661 12.421 1.00 0.00 H +ATOM 300 HW2 SOL 99 4.510 15.361 13.321 1.00 0.00 H +ATOM 301 OW SOL 100 4.020 7.510 15.981 1.00 0.00 O +ATOM 302 HW1 SOL 100 4.700 8.060 15.511 1.00 0.00 H +ATOM 303 HW2 SOL 100 4.420 6.630 16.251 1.00 0.00 H +ATOM 304 OW SOL 101 15.871 7.790 16.701 1.00 0.00 O +ATOM 305 HW1 SOL 101 14.951 8.170 16.651 1.00 0.00 H +ATOM 306 HW2 SOL 101 16.471 8.260 16.051 1.00 0.00 H +ATOM 307 OW SOL 102 10.131 1.050 17.701 1.00 0.00 O +ATOM 308 HW1 SOL 102 10.191 1.900 17.181 1.00 0.00 H +ATOM 309 HW2 SOL 102 10.451 0.290 17.131 1.00 0.00 H +ATOM 310 OW SOL 103 5.040 0.500 17.401 1.00 0.00 O +ATOM 311 HW1 SOL 103 4.620 -0.070 16.701 1.00 0.00 H +ATOM 312 HW2 SOL 103 4.380 1.190 17.721 1.00 0.00 H +ATOM 313 OW SOL 104 5.730 8.700 10.291 1.00 0.00 O +ATOM 314 HW1 SOL 104 6.170 9.590 10.201 1.00 0.00 H +ATOM 315 HW2 SOL 104 5.100 8.700 11.061 1.00 0.00 H +ATOM 316 OW SOL 105 13.601 8.620 10.451 1.00 0.00 O +ATOM 317 HW1 SOL 105 12.851 8.620 9.791 1.00 0.00 H +ATOM 318 HW2 SOL 105 13.971 7.700 10.541 1.00 0.00 H +ATOM 319 OW SOL 106 12.091 5.250 2.750 1.00 0.00 O +ATOM 320 HW1 SOL 106 12.221 4.410 3.290 1.00 0.00 H +ATOM 321 HW2 SOL 106 11.801 5.990 3.350 1.00 0.00 H +ATOM 322 OW SOL 107 0.370 13.101 12.821 1.00 0.00 O +ATOM 323 HW1 SOL 107 0.900 12.611 13.501 1.00 0.00 H +ATOM 324 HW2 SOL 107 0.590 14.081 12.871 1.00 0.00 H +ATOM 325 OW SOL 108 7.320 6.340 10.641 1.00 0.00 O +ATOM 326 HW1 SOL 108 7.910 6.080 9.881 1.00 0.00 H +ATOM 327 HW2 SOL 108 7.040 7.300 10.531 1.00 0.00 H +ATOM 328 OW SOL 109 17.281 9.351 18.541 1.00 0.00 O +ATOM 329 HW1 SOL 109 16.821 9.281 17.651 1.00 0.00 H +ATOM 330 HW2 SOL 109 16.661 9.791 19.201 1.00 0.00 H +ATOM 331 OW SOL 110 3.070 0.630 6.180 1.00 0.00 O +ATOM 332 HW1 SOL 110 2.960 1.570 6.510 1.00 0.00 H +ATOM 333 HW2 SOL 110 3.020 0.000 6.950 1.00 0.00 H +ATOM 334 OW SOL 111 16.221 3.670 3.740 1.00 0.00 O +ATOM 335 HW1 SOL 111 16.241 2.910 4.380 1.00 0.00 H +ATOM 336 HW2 SOL 111 15.741 4.440 4.140 1.00 0.00 H +ATOM 337 OW SOL 112 10.231 7.660 9.661 1.00 0.00 O +ATOM 338 HW1 SOL 112 10.381 7.870 10.621 1.00 0.00 H +ATOM 339 HW2 SOL 112 9.931 6.710 9.571 1.00 0.00 H +ATOM 340 OW SOL 113 9.801 15.731 17.001 1.00 0.00 O +ATOM 341 HW1 SOL 113 9.601 16.171 16.121 1.00 0.00 H +ATOM 342 HW2 SOL 113 10.191 14.821 16.841 1.00 0.00 H +ATOM 343 OW SOL 114 18.591 15.181 16.051 1.00 0.00 O +ATOM 344 HW1 SOL 114 18.731 15.451 15.101 1.00 0.00 H +ATOM 345 HW2 SOL 114 19.421 15.401 16.581 1.00 0.00 H +ATOM 346 OW SOL 115 3.500 8.980 18.041 1.00 0.00 O +ATOM 347 HW1 SOL 115 4.260 9.420 18.521 1.00 0.00 H +ATOM 348 HW2 SOL 115 3.850 8.510 17.221 1.00 0.00 H +ATOM 349 OW SOL 116 15.401 2.740 1.250 1.00 0.00 O +ATOM 350 HW1 SOL 116 14.791 1.990 1.480 1.00 0.00 H +ATOM 351 HW2 SOL 116 15.621 3.260 2.080 1.00 0.00 H +ATOM 352 OW SOL 117 13.031 8.380 0.420 1.00 0.00 O +ATOM 353 HW1 SOL 117 13.371 7.450 0.570 1.00 0.00 H +ATOM 354 HW2 SOL 117 13.211 8.650 -0.530 1.00 0.00 H +ATOM 355 OW SOL 118 10.681 13.331 8.490 1.00 0.00 O +ATOM 356 HW1 SOL 118 10.751 12.491 7.940 1.00 0.00 H +ATOM 357 HW2 SOL 118 11.301 14.021 8.130 1.00 0.00 H +ATOM 358 OW SOL 119 3.190 8.100 9.491 1.00 0.00 O +ATOM 359 HW1 SOL 119 4.120 8.460 9.541 1.00 0.00 H +ATOM 360 HW2 SOL 119 3.130 7.250 10.011 1.00 0.00 H +ATOM 361 OW SOL 120 3.390 5.090 10.061 1.00 0.00 O +ATOM 362 HW1 SOL 120 2.870 4.260 9.891 1.00 0.00 H +ATOM 363 HW2 SOL 120 4.160 5.140 9.421 1.00 0.00 H +ATOM 364 OW SOL 121 11.381 3.800 16.781 1.00 0.00 O +ATOM 365 HW1 SOL 121 10.931 4.430 17.421 1.00 0.00 H +ATOM 366 HW2 SOL 121 12.311 4.110 16.611 1.00 0.00 H +ATOM 367 OW SOL 122 11.601 2.070 14.771 1.00 0.00 O +ATOM 368 HW1 SOL 122 11.601 2.710 15.541 1.00 0.00 H +ATOM 369 HW2 SOL 122 11.881 2.550 13.941 1.00 0.00 H +ATOM 370 OW SOL 123 0.880 18.011 9.270 1.00 0.00 O +ATOM 371 HW1 SOL 123 0.460 17.151 9.000 1.00 0.00 H +ATOM 372 HW2 SOL 123 1.820 18.041 8.930 1.00 0.00 H +ATOM 373 OW SOL 124 5.040 15.681 9.100 1.00 0.00 O +ATOM 374 HW1 SOL 124 5.700 16.421 9.190 1.00 0.00 H +ATOM 375 HW2 SOL 124 5.480 14.891 8.680 1.00 0.00 H +ATOM 376 OW SOL 125 10.021 7.960 12.381 1.00 0.00 O +ATOM 377 HW1 SOL 125 10.431 7.640 13.241 1.00 0.00 H +ATOM 378 HW2 SOL 125 9.061 7.690 12.351 1.00 0.00 H +ATOM 379 OW SOL 126 0.400 5.440 11.141 1.00 0.00 O +ATOM 380 HW1 SOL 126 1.250 5.110 10.731 1.00 0.00 H +ATOM 381 HW2 SOL 126 0.530 5.590 12.121 1.00 0.00 H +ATOM 382 OW SOL 127 1.890 5.200 17.221 1.00 0.00 O +ATOM 383 HW1 SOL 127 2.480 4.800 16.521 1.00 0.00 H +ATOM 384 HW2 SOL 127 1.310 5.910 16.811 1.00 0.00 H +ATOM 385 OW SOL 128 13.691 9.501 16.601 1.00 0.00 O +ATOM 386 HW1 SOL 128 14.081 10.391 16.801 1.00 0.00 H +ATOM 387 HW2 SOL 128 13.791 9.301 15.631 1.00 0.00 H +ATOM 388 OW SOL 129 8.150 5.720 3.250 1.00 0.00 O +ATOM 389 HW1 SOL 129 8.220 4.830 2.790 1.00 0.00 H +ATOM 390 HW2 SOL 129 7.210 6.060 3.170 1.00 0.00 H +ATOM 391 OW SOL 130 16.571 6.040 12.061 1.00 0.00 O +ATOM 392 HW1 SOL 130 16.191 5.350 12.681 1.00 0.00 H +ATOM 393 HW2 SOL 130 17.391 5.680 11.621 1.00 0.00 H +ATOM 394 OW SOL 131 2.520 15.641 17.441 1.00 0.00 O +ATOM 395 HW1 SOL 131 2.220 16.211 18.201 1.00 0.00 H +ATOM 396 HW2 SOL 131 2.450 14.671 17.701 1.00 0.00 H +ATOM 397 OW SOL 132 6.710 4.640 12.691 1.00 0.00 O +ATOM 398 HW1 SOL 132 6.370 3.750 12.391 1.00 0.00 H +ATOM 399 HW2 SOL 132 6.970 5.180 11.891 1.00 0.00 H +ATOM 400 OW SOL 133 9.300 16.781 14.651 1.00 0.00 O +ATOM 401 HW1 SOL 133 9.060 16.601 13.701 1.00 0.00 H +ATOM 402 HW2 SOL 133 9.600 17.721 14.751 1.00 0.00 H +ATOM 403 OW SOL 134 4.730 5.000 1.910 1.00 0.00 O +ATOM 404 HW1 SOL 134 5.340 5.800 1.950 1.00 0.00 H +ATOM 405 HW2 SOL 134 3.780 5.310 1.980 1.00 0.00 H +ATOM 406 OW SOL 135 1.590 11.371 14.661 1.00 0.00 O +ATOM 407 HW1 SOL 135 1.810 10.761 15.421 1.00 0.00 H +ATOM 408 HW2 SOL 135 1.690 10.881 13.801 1.00 0.00 H +ATOM 409 OW SOL 136 13.471 10.591 12.341 1.00 0.00 O +ATOM 410 HW1 SOL 136 13.711 9.961 11.601 1.00 0.00 H +ATOM 411 HW2 SOL 136 12.571 10.991 12.161 1.00 0.00 H +ATOM 412 OW SOL 137 13.021 8.550 3.090 1.00 0.00 O +ATOM 413 HW1 SOL 137 12.161 8.240 3.510 1.00 0.00 H +ATOM 414 HW2 SOL 137 12.981 8.410 2.100 1.00 0.00 H +ATOM 415 OW SOL 138 17.591 17.471 11.541 1.00 0.00 O +ATOM 416 HW1 SOL 138 18.201 17.771 10.811 1.00 0.00 H +ATOM 417 HW2 SOL 138 17.211 16.581 11.321 1.00 0.00 H +ATOM 418 OW SOL 139 12.521 17.311 11.281 1.00 0.00 O +ATOM 419 HW1 SOL 139 13.361 17.361 10.741 1.00 0.00 H +ATOM 420 HW2 SOL 139 12.291 16.351 11.461 1.00 0.00 H +ATOM 421 OW SOL 140 0.830 12.581 10.221 1.00 0.00 O +ATOM 422 HW1 SOL 140 0.780 12.571 11.221 1.00 0.00 H +ATOM 423 HW2 SOL 140 0.000 12.171 9.841 1.00 0.00 H +ATOM 424 OW SOL 141 6.880 16.621 17.161 1.00 0.00 O +ATOM 425 HW1 SOL 141 6.320 17.431 17.251 1.00 0.00 H +ATOM 426 HW2 SOL 141 7.400 16.661 16.301 1.00 0.00 H +ATOM 427 OW SOL 142 9.030 0.860 1.330 1.00 0.00 O +ATOM 428 HW1 SOL 142 9.540 0.870 0.470 1.00 0.00 H +ATOM 429 HW2 SOL 142 9.590 0.440 2.040 1.00 0.00 H +ATOM 430 OW SOL 143 17.261 1.350 5.230 1.00 0.00 O +ATOM 431 HW1 SOL 143 17.991 1.180 4.560 1.00 0.00 H +ATOM 432 HW2 SOL 143 16.951 0.480 5.610 1.00 0.00 H +ATOM 433 OW SOL 144 13.881 15.731 4.770 1.00 0.00 O +ATOM 434 HW1 SOL 144 14.551 15.851 4.030 1.00 0.00 H +ATOM 435 HW2 SOL 144 13.481 16.621 5.000 1.00 0.00 H +ATOM 436 OW SOL 145 12.801 9.270 6.720 1.00 0.00 O +ATOM 437 HW1 SOL 145 13.401 8.460 6.740 1.00 0.00 H +ATOM 438 HW2 SOL 145 13.201 9.960 6.120 1.00 0.00 H +ATOM 439 OW SOL 146 8.300 12.731 14.221 1.00 0.00 O +ATOM 440 HW1 SOL 146 8.250 13.061 15.171 1.00 0.00 H +ATOM 441 HW2 SOL 146 7.440 12.921 13.761 1.00 0.00 H +ATOM 442 OW SOL 147 6.720 16.161 1.540 1.00 0.00 O +ATOM 443 HW1 SOL 147 6.810 16.261 0.550 1.00 0.00 H +ATOM 444 HW2 SOL 147 6.320 15.271 1.750 1.00 0.00 H +ATOM 445 OW SOL 148 16.501 17.201 13.941 1.00 0.00 O +ATOM 446 HW1 SOL 148 17.031 17.301 13.101 1.00 0.00 H +ATOM 447 HW2 SOL 148 16.231 18.101 14.281 1.00 0.00 H +ATOM 448 OW SOL 149 2.630 3.260 7.200 1.00 0.00 O +ATOM 449 HW1 SOL 149 1.840 3.770 6.860 1.00 0.00 H +ATOM 450 HW2 SOL 149 2.540 3.110 8.180 1.00 0.00 H +ATOM 451 OW SOL 150 11.941 16.121 0.310 1.00 0.00 O +ATOM 452 HW1 SOL 150 12.001 15.191 0.680 1.00 0.00 H +ATOM 453 HW2 SOL 150 11.351 16.121 -0.490 1.00 0.00 H +ATOM 454 OW SOL 151 8.220 10.021 13.721 1.00 0.00 O +ATOM 455 HW1 SOL 151 8.620 10.011 12.801 1.00 0.00 H +ATOM 456 HW2 SOL 151 8.320 10.941 14.121 1.00 0.00 H +ATOM 457 OW SOL 152 9.160 9.100 2.910 1.00 0.00 O +ATOM 458 HW1 SOL 152 9.790 9.480 2.230 1.00 0.00 H +ATOM 459 HW2 SOL 152 9.560 8.270 3.300 1.00 0.00 H +ATOM 460 OW SOL 153 15.041 16.071 0.440 1.00 0.00 O +ATOM 461 HW1 SOL 153 14.121 16.441 0.510 1.00 0.00 H +ATOM 462 HW2 SOL 153 15.421 16.271 -0.460 1.00 0.00 H +ATOM 463 OW SOL 154 3.720 12.881 14.901 1.00 0.00 O +ATOM 464 HW1 SOL 154 3.590 13.811 14.561 1.00 0.00 H +ATOM 465 HW2 SOL 154 2.880 12.361 14.771 1.00 0.00 H +ATOM 466 OW SOL 155 16.141 12.921 12.891 1.00 0.00 O +ATOM 467 HW1 SOL 155 16.741 12.951 13.691 1.00 0.00 H +ATOM 468 HW2 SOL 155 15.391 13.561 13.021 1.00 0.00 H +ATOM 469 OW SOL 156 10.391 10.981 6.960 1.00 0.00 O +ATOM 470 HW1 SOL 156 9.691 10.511 7.500 1.00 0.00 H +ATOM 471 HW2 SOL 156 10.981 10.301 6.530 1.00 0.00 H +ATOM 472 OW SOL 157 10.141 2.360 9.711 1.00 0.00 O +ATOM 473 HW1 SOL 157 10.061 2.000 8.781 1.00 0.00 H +ATOM 474 HW2 SOL 157 10.121 1.600 10.361 1.00 0.00 H +ATOM 475 OW SOL 158 5.900 14.871 4.910 1.00 0.00 O +ATOM 476 HW1 SOL 158 6.320 14.291 4.210 1.00 0.00 H +ATOM 477 HW2 SOL 158 5.460 15.661 4.470 1.00 0.00 H +ATOM 478 OW SOL 159 17.091 3.850 13.811 1.00 0.00 O +ATOM 479 HW1 SOL 159 17.821 4.540 13.851 1.00 0.00 H +ATOM 480 HW2 SOL 159 17.371 3.100 13.221 1.00 0.00 H +ATOM 481 OW SOL 160 2.550 13.481 2.900 1.00 0.00 O +ATOM 482 HW1 SOL 160 1.590 13.491 2.630 1.00 0.00 H +ATOM 483 HW2 SOL 160 2.670 14.011 3.740 1.00 0.00 H +ATOM 484 OW SOL 161 6.720 2.030 14.891 1.00 0.00 O +ATOM 485 HW1 SOL 161 7.620 1.870 14.491 1.00 0.00 H +ATOM 486 HW2 SOL 161 6.800 2.080 15.881 1.00 0.00 H +ATOM 487 OW SOL 162 14.401 8.560 13.981 1.00 0.00 O +ATOM 488 HW1 SOL 162 13.831 9.080 13.351 1.00 0.00 H +ATOM 489 HW2 SOL 162 15.361 8.680 13.741 1.00 0.00 H +ATOM 490 OW SOL 163 11.831 13.351 1.190 1.00 0.00 O +ATOM 491 HW1 SOL 163 10.841 13.241 1.210 1.00 0.00 H +ATOM 492 HW2 SOL 163 12.171 13.501 2.120 1.00 0.00 H +ATOM 493 OW SOL 164 6.130 8.420 14.311 1.00 0.00 O +ATOM 494 HW1 SOL 164 6.690 9.230 14.141 1.00 0.00 H +ATOM 495 HW2 SOL 164 6.720 7.620 14.341 1.00 0.00 H +ATOM 496 OW SOL 165 14.931 17.671 9.591 1.00 0.00 O +ATOM 497 HW1 SOL 165 15.261 18.311 8.901 1.00 0.00 H +ATOM 498 HW2 SOL 165 15.591 17.611 10.341 1.00 0.00 H +ATOM 499 OW SOL 166 7.160 5.650 17.081 1.00 0.00 O +ATOM 500 HW1 SOL 166 7.350 6.300 17.821 1.00 0.00 H +ATOM 501 HW2 SOL 166 7.760 4.850 17.171 1.00 0.00 H +ATOM 502 OW SOL 167 14.501 12.201 16.331 1.00 0.00 O +ATOM 503 HW1 SOL 167 14.411 12.101 17.321 1.00 0.00 H +ATOM 504 HW2 SOL 167 15.461 12.131 16.071 1.00 0.00 H +ATOM 505 OW SOL 168 3.900 17.411 15.601 1.00 0.00 O +ATOM 506 HW1 SOL 168 2.990 17.821 15.581 1.00 0.00 H +ATOM 507 HW2 SOL 168 3.830 16.471 15.921 1.00 0.00 H +ATOM 508 OW SOL 169 16.741 8.830 12.541 1.00 0.00 O +ATOM 509 HW1 SOL 169 16.471 7.940 12.171 1.00 0.00 H +ATOM 510 HW2 SOL 169 16.751 9.510 11.811 1.00 0.00 H +ATOM 511 OW SOL 170 12.251 3.250 4.490 1.00 0.00 O +ATOM 512 HW1 SOL 170 12.901 2.510 4.380 1.00 0.00 H +ATOM 513 HW2 SOL 170 12.451 3.750 5.330 1.00 0.00 H +ATOM 514 OW SOL 171 5.940 7.450 6.520 1.00 0.00 O +ATOM 515 HW1 SOL 171 6.440 8.300 6.330 1.00 0.00 H +ATOM 516 HW2 SOL 171 5.060 7.470 6.040 1.00 0.00 H +ATOM 517 OW SOL 172 17.771 3.420 16.421 1.00 0.00 O +ATOM 518 HW1 SOL 172 17.601 3.730 15.481 1.00 0.00 H +ATOM 519 HW2 SOL 172 16.931 3.050 16.801 1.00 0.00 H +ATOM 520 OW SOL 173 17.301 9.341 15.171 1.00 0.00 O +ATOM 521 HW1 SOL 173 17.681 10.251 15.321 1.00 0.00 H +ATOM 522 HW2 SOL 173 17.221 9.171 14.181 1.00 0.00 H +ATOM 523 OW SOL 174 8.590 13.741 0.160 1.00 0.00 O +ATOM 524 HW1 SOL 174 8.130 13.891 1.040 1.00 0.00 H +ATOM 525 HW2 SOL 174 9.030 14.591 -0.140 1.00 0.00 H +ATOM 526 OW SOL 175 6.610 17.901 9.531 1.00 0.00 O +ATOM 527 HW1 SOL 175 6.150 18.781 9.401 1.00 0.00 H +ATOM 528 HW2 SOL 175 7.600 18.021 9.461 1.00 0.00 H +ATOM 529 OW SOL 176 14.081 18.511 17.201 1.00 0.00 O +ATOM 530 HW1 SOL 176 13.121 18.401 16.931 1.00 0.00 H +ATOM 531 HW2 SOL 176 14.641 17.841 16.721 1.00 0.00 H +ATOM 532 OW SOL 177 8.590 9.561 8.610 1.00 0.00 O +ATOM 533 HW1 SOL 177 9.130 8.871 9.090 1.00 0.00 H +ATOM 534 HW2 SOL 177 8.270 10.251 9.270 1.00 0.00 H +ATOM 535 OW SOL 178 10.831 9.841 0.870 1.00 0.00 O +ATOM 536 HW1 SOL 178 10.601 10.371 0.050 1.00 0.00 H +ATOM 537 HW2 SOL 178 11.641 9.281 0.680 1.00 0.00 H +ATOM 538 OW SOL 179 18.611 15.691 8.510 1.00 0.00 O +ATOM 539 HW1 SOL 179 17.901 15.571 7.810 1.00 0.00 H +ATOM 540 HW2 SOL 179 18.621 14.901 9.110 1.00 0.00 H +ATOM 541 OW SOL 180 0.790 12.401 6.530 1.00 0.00 O +ATOM 542 HW1 SOL 180 0.780 11.931 7.410 1.00 0.00 H +ATOM 543 HW2 SOL 180 1.610 12.121 6.020 1.00 0.00 H +ATOM 544 OW SOL 181 6.720 13.911 16.241 1.00 0.00 O +ATOM 545 HW1 SOL 181 5.940 13.411 16.621 1.00 0.00 H +ATOM 546 HW2 SOL 181 6.690 14.861 16.551 1.00 0.00 H +ATOM 547 OW SOL 182 4.280 4.240 5.200 1.00 0.00 O +ATOM 548 HW1 SOL 182 4.580 3.520 4.580 1.00 0.00 H +ATOM 549 HW2 SOL 182 3.890 3.840 6.030 1.00 0.00 H +ATOM 550 OW SOL 183 17.051 14.871 11.041 1.00 0.00 O +ATOM 551 HW1 SOL 183 16.121 14.621 10.771 1.00 0.00 H +ATOM 552 HW2 SOL 183 17.311 14.371 11.861 1.00 0.00 H +ATOM 553 OW SOL 184 3.170 5.470 12.801 1.00 0.00 O +ATOM 554 HW1 SOL 184 3.550 4.880 13.521 1.00 0.00 H +ATOM 555 HW2 SOL 184 3.570 5.210 11.921 1.00 0.00 H +ATOM 556 OW SOL 185 8.120 15.861 6.870 1.00 0.00 O +ATOM 557 HW1 SOL 185 8.440 15.961 5.930 1.00 0.00 H +ATOM 558 HW2 SOL 185 7.330 15.241 6.890 1.00 0.00 H +ATOM 559 OW SOL 186 14.241 2.140 11.121 1.00 0.00 O +ATOM 560 HW1 SOL 186 14.761 1.490 11.671 1.00 0.00 H +ATOM 561 HW2 SOL 186 13.751 2.770 11.731 1.00 0.00 H +ATOM 562 OW SOL 187 10.011 0.340 11.541 1.00 0.00 O +ATOM 563 HW1 SOL 187 9.381 -0.380 11.231 1.00 0.00 H +ATOM 564 HW2 SOL 187 10.941 -0.020 11.541 1.00 0.00 H +ATOM 565 OW SOL 188 7.700 13.301 3.010 1.00 0.00 O +ATOM 566 HW1 SOL 188 7.240 12.431 3.180 1.00 0.00 H +ATOM 567 HW2 SOL 188 8.610 13.271 3.420 1.00 0.00 H +ATOM 568 OW SOL 189 6.180 15.671 12.841 1.00 0.00 O +ATOM 569 HW1 SOL 189 6.130 16.491 13.411 1.00 0.00 H +ATOM 570 HW2 SOL 189 7.070 15.641 12.391 1.00 0.00 H +ATOM 571 OW SOL 190 13.521 0.520 1.680 1.00 0.00 O +ATOM 572 HW1 SOL 190 13.871 0.110 0.840 1.00 0.00 H +ATOM 573 HW2 SOL 190 12.621 0.140 1.880 1.00 0.00 H +ATOM 574 OW SOL 191 13.001 4.530 6.910 1.00 0.00 O +ATOM 575 HW1 SOL 191 12.411 5.330 6.950 1.00 0.00 H +ATOM 576 HW2 SOL 191 13.151 4.180 7.840 1.00 0.00 H +ATOM 577 OW SOL 192 15.931 2.210 8.820 1.00 0.00 O +ATOM 578 HW1 SOL 192 15.091 2.200 9.360 1.00 0.00 H +ATOM 579 HW2 SOL 192 15.951 3.040 8.260 1.00 0.00 H +ATOM 580 OW SOL 193 0.390 10.771 3.000 1.00 0.00 O +ATOM 581 HW1 SOL 193 1.380 10.661 2.910 1.00 0.00 H +ATOM 582 HW2 SOL 193 -0.010 9.911 3.320 1.00 0.00 H +ATOM 583 OW SOL 194 8.750 16.461 3.370 1.00 0.00 O +ATOM 584 HW1 SOL 194 7.980 16.111 2.830 1.00 0.00 H +ATOM 585 HW2 SOL 194 8.430 17.171 3.990 1.00 0.00 H +ATOM 586 OW SOL 195 5.690 12.751 30.271 1.00 0.00 O +ATOM 587 HW1 SOL 195 4.760 12.681 29.901 1.00 0.00 H +ATOM 588 HW2 SOL 195 5.800 13.641 30.711 1.00 0.00 H +ATOM 589 OW SOL 196 15.551 15.111 25.651 1.00 0.00 O +ATOM 590 HW1 SOL 196 14.981 14.951 26.461 1.00 0.00 H +ATOM 591 HW2 SOL 196 14.961 15.211 24.851 1.00 0.00 H +ATOM 592 OW SOL 197 17.431 6.180 27.181 1.00 0.00 O +ATOM 593 HW1 SOL 197 17.761 7.120 27.181 1.00 0.00 H +ATOM 594 HW2 SOL 197 17.941 5.640 27.841 1.00 0.00 H +ATOM 595 OW SOL 198 11.351 7.030 25.791 1.00 0.00 O +ATOM 596 HW1 SOL 198 11.921 7.810 25.541 1.00 0.00 H +ATOM 597 HW2 SOL 198 10.751 7.290 26.551 1.00 0.00 H +ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O +ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H +ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H +ATOM 601 OW SOL 200 7.680 11.441 28.851 1.00 0.00 O +ATOM 602 HW1 SOL 200 6.900 11.611 29.451 1.00 0.00 H +ATOM 603 HW2 SOL 200 8.020 12.311 28.491 1.00 0.00 H +ATOM 604 OW SOL 201 6.850 10.121 25.271 1.00 0.00 O +ATOM 605 HW1 SOL 201 7.540 9.961 25.971 1.00 0.00 H +ATOM 606 HW2 SOL 201 6.120 10.691 25.651 1.00 0.00 H +ATOM 607 OW SOL 202 2.400 10.911 27.481 1.00 0.00 O +ATOM 608 HW1 SOL 202 2.540 10.071 28.001 1.00 0.00 H +ATOM 609 HW2 SOL 202 1.850 11.551 28.031 1.00 0.00 H +ATOM 610 OW SOL 203 6.060 9.641 19.851 1.00 0.00 O +ATOM 611 HW1 SOL 203 6.130 10.481 19.311 1.00 0.00 H +ATOM 612 HW2 SOL 203 6.520 9.771 20.731 1.00 0.00 H +ATOM 613 OW SOL 204 1.220 6.430 24.251 1.00 0.00 O +ATOM 614 HW1 SOL 204 0.770 5.550 24.421 1.00 0.00 H +ATOM 615 HW2 SOL 204 1.210 6.970 25.091 1.00 0.00 H +ATOM 616 OW SOL 205 18.421 17.671 22.211 1.00 0.00 O +ATOM 617 HW1 SOL 205 18.961 17.381 23.011 1.00 0.00 H +ATOM 618 HW2 SOL 205 18.721 18.571 21.921 1.00 0.00 H +ATOM 619 OW SOL 206 16.891 9.220 24.741 1.00 0.00 O +ATOM 620 HW1 SOL 206 17.841 8.930 24.821 1.00 0.00 H +ATOM 621 HW2 SOL 206 16.811 9.870 23.991 1.00 0.00 H +ATOM 622 OW SOL 207 16.411 11.081 22.941 1.00 0.00 O +ATOM 623 HW1 SOL 207 17.271 11.101 22.421 1.00 0.00 H +ATOM 624 HW2 SOL 207 16.551 11.551 23.821 1.00 0.00 H +ATOM 625 OW SOL 208 6.130 13.651 25.881 1.00 0.00 O +ATOM 626 HW1 SOL 208 5.640 12.781 25.971 1.00 0.00 H +ATOM 627 HW2 SOL 208 5.900 14.081 25.011 1.00 0.00 H +ATOM 628 OW SOL 209 8.090 0.040 23.641 1.00 0.00 O +ATOM 629 HW1 SOL 209 8.490 0.950 23.551 1.00 0.00 H +ATOM 630 HW2 SOL 209 7.090 0.120 23.701 1.00 0.00 H +ATOM 631 OW SOL 210 1.970 9.761 0.031 1.00 0.00 O +ATOM 632 HW1 SOL 210 2.860 9.311 -0.109 1.00 0.00 H +ATOM 633 HW2 SOL 210 1.240 9.111 -0.159 1.00 0.00 H +ATOM 634 OW SOL 211 15.251 9.991 20.521 1.00 0.00 O +ATOM 635 HW1 SOL 211 14.621 9.231 20.651 1.00 0.00 H +ATOM 636 HW2 SOL 211 15.731 10.171 21.381 1.00 0.00 H +ATOM 637 OW SOL 212 14.661 14.171 28.151 1.00 0.00 O +ATOM 638 HW1 SOL 212 14.071 14.231 28.951 1.00 0.00 H +ATOM 639 HW2 SOL 212 14.511 13.291 27.691 1.00 0.00 H +ATOM 640 OW SOL 213 16.671 17.141 24.341 1.00 0.00 O +ATOM 641 HW1 SOL 213 16.261 16.911 23.461 1.00 0.00 H +ATOM 642 HW2 SOL 213 16.491 16.401 24.991 1.00 0.00 H +ATOM 643 OW SOL 214 5.980 7.290 21.321 1.00 0.00 O +ATOM 644 HW1 SOL 214 6.220 7.980 20.641 1.00 0.00 H +ATOM 645 HW2 SOL 214 5.200 7.620 21.861 1.00 0.00 H +ATOM 646 OW SOL 215 12.811 3.450 28.061 1.00 0.00 O +ATOM 647 HW1 SOL 215 11.951 2.950 27.931 1.00 0.00 H +ATOM 648 HW2 SOL 215 13.431 2.910 28.621 1.00 0.00 H +ATOM 649 OW SOL 216 15.761 16.621 21.691 1.00 0.00 O +ATOM 650 HW1 SOL 216 16.651 17.081 21.721 1.00 0.00 H +ATOM 651 HW2 SOL 216 15.551 16.381 20.741 1.00 0.00 H +ATOM 652 OW SOL 217 10.411 7.010 22.911 1.00 0.00 O +ATOM 653 HW1 SOL 217 10.671 6.970 23.871 1.00 0.00 H +ATOM 654 HW2 SOL 217 9.561 6.500 22.771 1.00 0.00 H +ATOM 655 OW SOL 218 8.650 3.480 20.571 1.00 0.00 O +ATOM 656 HW1 SOL 218 9.240 4.110 20.081 1.00 0.00 H +ATOM 657 HW2 SOL 218 8.840 2.540 20.281 1.00 0.00 H +ATOM 658 OW SOL 219 13.621 11.441 24.071 1.00 0.00 O +ATOM 659 HW1 SOL 219 14.451 11.151 23.591 1.00 0.00 H +ATOM 660 HW2 SOL 219 13.131 12.111 23.511 1.00 0.00 H +ATOM 661 OW SOL 220 5.500 1.960 27.471 1.00 0.00 O +ATOM 662 HW1 SOL 220 5.450 1.910 28.471 1.00 0.00 H +ATOM 663 HW2 SOL 220 5.520 2.920 27.181 1.00 0.00 H +ATOM 664 OW SOL 221 10.081 14.561 23.391 1.00 0.00 O +ATOM 665 HW1 SOL 221 9.621 15.281 22.871 1.00 0.00 H +ATOM 666 HW2 SOL 221 10.041 14.761 24.371 1.00 0.00 H +ATOM 667 OW SOL 222 3.510 18.011 27.151 1.00 0.00 O +ATOM 668 HW1 SOL 222 4.010 17.151 27.211 1.00 0.00 H +ATOM 669 HW2 SOL 222 4.160 18.781 27.121 1.00 0.00 H +ATOM 670 OW SOL 223 17.951 10.661 27.351 1.00 0.00 O +ATOM 671 HW1 SOL 223 17.331 10.511 26.591 1.00 0.00 H +ATOM 672 HW2 SOL 223 17.431 10.771 28.201 1.00 0.00 H +ATOM 673 OW SOL 224 3.210 9.431 21.041 1.00 0.00 O +ATOM 674 HW1 SOL 224 4.030 9.821 20.621 1.00 0.00 H +ATOM 675 HW2 SOL 224 2.940 8.611 20.551 1.00 0.00 H +ATOM 676 OW SOL 225 14.581 7.350 25.901 1.00 0.00 O +ATOM 677 HW1 SOL 225 14.531 6.700 26.651 1.00 0.00 H +ATOM 678 HW2 SOL 225 15.381 7.940 26.031 1.00 0.00 H +ATOM 679 OW SOL 226 11.111 17.761 20.991 1.00 0.00 O +ATOM 680 HW1 SOL 226 10.511 17.141 21.491 1.00 0.00 H +ATOM 681 HW2 SOL 226 11.421 17.321 20.141 1.00 0.00 H +ATOM 682 OW SOL 227 16.321 13.771 19.431 1.00 0.00 O +ATOM 683 HW1 SOL 227 16.001 14.711 19.331 1.00 0.00 H +ATOM 684 HW2 SOL 227 15.561 13.141 19.311 1.00 0.00 H +ATOM 685 OW SOL 228 4.640 17.431 21.851 1.00 0.00 O +ATOM 686 HW1 SOL 228 4.970 17.821 22.711 1.00 0.00 H +ATOM 687 HW2 SOL 228 5.400 17.361 21.201 1.00 0.00 H +ATOM 688 OW SOL 229 14.001 1.070 22.881 1.00 0.00 O +ATOM 689 HW1 SOL 229 13.761 0.700 21.981 1.00 0.00 H +ATOM 690 HW2 SOL 229 14.991 1.230 22.921 1.00 0.00 H +ATOM 691 OW SOL 230 2.490 17.851 31.031 1.00 0.00 O +ATOM 692 HW1 SOL 230 3.060 17.201 31.531 1.00 0.00 H +ATOM 693 HW2 SOL 230 2.330 17.521 30.101 1.00 0.00 H +ATOM 694 OW SOL 231 9.401 16.981 27.661 1.00 0.00 O +ATOM 695 HW1 SOL 231 10.201 16.411 27.871 1.00 0.00 H +ATOM 696 HW2 SOL 231 8.911 16.581 26.891 1.00 0.00 H +ATOM 697 OW SOL 232 3.820 7.000 23.421 1.00 0.00 O +ATOM 698 HW1 SOL 232 4.270 6.100 23.391 1.00 0.00 H +ATOM 699 HW2 SOL 232 2.880 6.890 23.751 1.00 0.00 H +ATOM 700 OW SOL 233 6.140 1.220 19.791 1.00 0.00 O +ATOM 701 HW1 SOL 233 7.120 1.000 19.861 1.00 0.00 H +ATOM 702 HW2 SOL 233 5.830 1.050 18.861 1.00 0.00 H +ATOM 703 OW SOL 234 8.030 14.021 27.861 1.00 0.00 O +ATOM 704 HW1 SOL 234 8.930 14.161 27.441 1.00 0.00 H +ATOM 705 HW2 SOL 234 7.320 14.041 27.151 1.00 0.00 H +ATOM 706 OW SOL 235 9.220 5.030 27.611 1.00 0.00 O +ATOM 707 HW1 SOL 235 8.970 4.940 26.651 1.00 0.00 H +ATOM 708 HW2 SOL 235 9.700 4.210 27.921 1.00 0.00 H +ATOM 709 OW SOL 236 5.390 0.640 23.741 1.00 0.00 O +ATOM 710 HW1 SOL 236 4.580 0.650 24.321 1.00 0.00 H +ATOM 711 HW2 SOL 236 5.420 1.470 23.191 1.00 0.00 H +ATOM 712 OW SOL 237 14.341 11.881 19.031 1.00 0.00 O +ATOM 713 HW1 SOL 237 14.661 11.121 19.601 1.00 0.00 H +ATOM 714 HW2 SOL 237 13.421 12.151 19.331 1.00 0.00 H +ATOM 715 OW SOL 238 2.970 0.350 20.331 1.00 0.00 O +ATOM 716 HW1 SOL 238 3.460 1.190 20.121 1.00 0.00 H +ATOM 717 HW2 SOL 238 3.590 -0.300 20.781 1.00 0.00 H +ATOM 718 OW SOL 239 9.351 2.360 23.421 1.00 0.00 O +ATOM 719 HW1 SOL 239 8.871 2.770 22.641 1.00 0.00 H +ATOM 720 HW2 SOL 239 10.341 2.340 23.231 1.00 0.00 H +ATOM 721 OW SOL 240 12.271 15.701 26.551 1.00 0.00 O +ATOM 722 HW1 SOL 240 12.481 16.441 25.901 1.00 0.00 H +ATOM 723 HW2 SOL 240 12.951 15.701 27.281 1.00 0.00 H +ATOM 724 OW SOL 241 4.590 11.521 26.031 1.00 0.00 O +ATOM 725 HW1 SOL 241 3.880 11.251 26.681 1.00 0.00 H +ATOM 726 HW2 SOL 241 4.330 11.241 25.101 1.00 0.00 H +ATOM 727 OW SOL 242 12.711 17.971 24.531 1.00 0.00 O +ATOM 728 HW1 SOL 242 13.151 18.611 23.891 1.00 0.00 H +ATOM 729 HW2 SOL 242 12.211 18.491 25.231 1.00 0.00 H +ATOM 730 OW SOL 243 10.321 5.490 18.781 1.00 0.00 O +ATOM 731 HW1 SOL 243 9.911 6.310 18.391 1.00 0.00 H +ATOM 732 HW2 SOL 243 10.961 5.750 19.511 1.00 0.00 H +ATOM 733 OW SOL 244 8.660 4.540 25.041 1.00 0.00 O +ATOM 734 HW1 SOL 244 8.340 5.260 24.421 1.00 0.00 H +ATOM 735 HW2 SOL 244 8.900 3.730 24.511 1.00 0.00 H +ATOM 736 OW SOL 245 10.171 0.390 26.151 1.00 0.00 O +ATOM 737 HW1 SOL 245 9.451 0.440 25.461 1.00 0.00 H +ATOM 738 HW2 SOL 245 9.931 -0.300 26.841 1.00 0.00 H +ATOM 739 OW SOL 246 14.291 11.731 27.291 1.00 0.00 O +ATOM 740 HW1 SOL 246 13.741 10.891 27.221 1.00 0.00 H +ATOM 741 HW2 SOL 246 14.551 12.021 26.371 1.00 0.00 H +ATOM 742 OW SOL 247 14.661 5.900 28.541 1.00 0.00 O +ATOM 743 HW1 SOL 247 14.361 4.950 28.611 1.00 0.00 H +ATOM 744 HW2 SOL 247 15.391 6.060 29.201 1.00 0.00 H +ATOM 745 OW SOL 248 18.571 8.330 22.391 1.00 0.00 O +ATOM 746 HW1 SOL 248 18.991 7.690 23.031 1.00 0.00 H +ATOM 747 HW2 SOL 248 18.191 7.820 21.611 1.00 0.00 H +ATOM 748 OW SOL 249 4.880 13.851 20.361 1.00 0.00 O +ATOM 749 HW1 SOL 249 4.010 13.701 20.831 1.00 0.00 H +ATOM 750 HW2 SOL 249 4.710 14.111 19.411 1.00 0.00 H +ATOM 751 OW SOL 250 16.641 12.801 25.191 1.00 0.00 O +ATOM 752 HW1 SOL 250 17.631 12.881 25.331 1.00 0.00 H +ATOM 753 HW2 SOL 250 16.191 13.641 25.501 1.00 0.00 H +ATOM 754 OW SOL 251 13.901 5.750 19.401 1.00 0.00 O +ATOM 755 HW1 SOL 251 13.361 5.540 20.211 1.00 0.00 H +ATOM 756 HW2 SOL 251 14.811 5.340 19.491 1.00 0.00 H +ATOM 757 OW SOL 252 5.270 2.560 21.901 1.00 0.00 O +ATOM 758 HW1 SOL 252 5.540 1.970 21.151 1.00 0.00 H +ATOM 759 HW2 SOL 252 5.270 3.510 21.591 1.00 0.00 H +ATOM 760 OW SOL 253 11.111 11.951 29.621 1.00 0.00 O +ATOM 761 HW1 SOL 253 10.711 12.391 30.431 1.00 0.00 H +ATOM 762 HW2 SOL 253 10.701 12.321 28.791 1.00 0.00 H +ATOM 763 OW SOL 254 16.381 10.991 29.411 1.00 0.00 O +ATOM 764 HW1 SOL 254 16.431 11.801 30.001 1.00 0.00 H +ATOM 765 HW2 SOL 254 15.521 11.011 28.901 1.00 0.00 H +ATOM 766 OW SOL 255 7.050 10.501 22.301 1.00 0.00 O +ATOM 767 HW1 SOL 255 6.910 10.571 23.291 1.00 0.00 H +ATOM 768 HW2 SOL 255 7.890 9.991 22.121 1.00 0.00 H +ATOM 769 OW SOL 256 4.100 8.130 31.131 1.00 0.00 O +ATOM 770 HW1 SOL 256 4.960 8.250 31.631 1.00 0.00 H +ATOM 771 HW2 SOL 256 3.680 7.260 31.401 1.00 0.00 H +ATOM 772 OW SOL 257 3.670 11.001 23.631 1.00 0.00 O +ATOM 773 HW1 SOL 257 3.600 11.831 23.071 1.00 0.00 H +ATOM 774 HW2 SOL 257 3.710 10.201 23.031 1.00 0.00 H +ATOM 775 OW SOL 258 5.660 5.370 27.271 1.00 0.00 O +ATOM 776 HW1 SOL 258 5.780 6.030 26.531 1.00 0.00 H +ATOM 777 HW2 SOL 258 6.120 5.710 28.101 1.00 0.00 H +ATOM 778 OW SOL 259 12.521 13.481 22.501 1.00 0.00 O +ATOM 779 HW1 SOL 259 13.021 14.251 22.901 1.00 0.00 H +ATOM 780 HW2 SOL 259 11.571 13.501 22.821 1.00 0.00 H +ATOM 781 OW SOL 260 12.721 14.451 30.041 1.00 0.00 O +ATOM 782 HW1 SOL 260 13.191 14.581 30.911 1.00 0.00 H +ATOM 783 HW2 SOL 260 12.061 13.711 30.131 1.00 0.00 H +ATOM 784 OW SOL 261 15.821 6.390 23.341 1.00 0.00 O +ATOM 785 HW1 SOL 261 15.511 7.000 24.071 1.00 0.00 H +ATOM 786 HW2 SOL 261 16.321 6.910 22.651 1.00 0.00 H +ATOM 787 OW SOL 262 5.730 8.700 28.911 1.00 0.00 O +ATOM 788 HW1 SOL 262 6.170 9.590 28.821 1.00 0.00 H +ATOM 789 HW2 SOL 262 5.100 8.700 29.681 1.00 0.00 H +ATOM 790 OW SOL 263 13.601 8.620 29.071 1.00 0.00 O +ATOM 791 HW1 SOL 263 12.851 8.620 28.411 1.00 0.00 H +ATOM 792 HW2 SOL 263 13.971 7.700 29.161 1.00 0.00 H +ATOM 793 OW SOL 264 12.091 5.250 21.371 1.00 0.00 O +ATOM 794 HW1 SOL 264 12.221 4.410 21.911 1.00 0.00 H +ATOM 795 HW2 SOL 264 11.801 5.990 21.971 1.00 0.00 H +ATOM 796 OW SOL 265 7.320 6.340 29.261 1.00 0.00 O +ATOM 797 HW1 SOL 265 7.910 6.080 28.501 1.00 0.00 H +ATOM 798 HW2 SOL 265 7.040 7.300 29.151 1.00 0.00 H +ATOM 799 OW SOL 266 3.070 0.630 24.801 1.00 0.00 O +ATOM 800 HW1 SOL 266 2.960 1.570 25.131 1.00 0.00 H +ATOM 801 HW2 SOL 266 3.020 0.000 25.571 1.00 0.00 H +ATOM 802 OW SOL 267 16.221 3.670 22.361 1.00 0.00 O +ATOM 803 HW1 SOL 267 16.241 2.910 23.001 1.00 0.00 H +ATOM 804 HW2 SOL 267 15.741 4.440 22.761 1.00 0.00 H +ATOM 805 OW SOL 268 10.231 7.660 28.281 1.00 0.00 O +ATOM 806 HW1 SOL 268 10.381 7.870 29.241 1.00 0.00 H +ATOM 807 HW2 SOL 268 9.931 6.710 28.191 1.00 0.00 H +ATOM 808 OW SOL 269 15.401 2.740 19.871 1.00 0.00 O +ATOM 809 HW1 SOL 269 14.791 1.990 20.101 1.00 0.00 H +ATOM 810 HW2 SOL 269 15.621 3.260 20.701 1.00 0.00 H +ATOM 811 OW SOL 270 13.031 8.380 19.041 1.00 0.00 O +ATOM 812 HW1 SOL 270 13.371 7.450 19.191 1.00 0.00 H +ATOM 813 HW2 SOL 270 13.211 8.650 18.091 1.00 0.00 H +ATOM 814 OW SOL 271 10.681 13.331 27.111 1.00 0.00 O +ATOM 815 HW1 SOL 271 10.751 12.491 26.561 1.00 0.00 H +ATOM 816 HW2 SOL 271 11.301 14.021 26.751 1.00 0.00 H +ATOM 817 OW SOL 272 3.190 8.100 28.111 1.00 0.00 O +ATOM 818 HW1 SOL 272 4.120 8.460 28.161 1.00 0.00 H +ATOM 819 HW2 SOL 272 3.130 7.250 28.631 1.00 0.00 H +ATOM 820 OW SOL 273 3.390 5.090 28.681 1.00 0.00 O +ATOM 821 HW1 SOL 273 2.870 4.260 28.511 1.00 0.00 H +ATOM 822 HW2 SOL 273 4.160 5.140 28.041 1.00 0.00 H +ATOM 823 OW SOL 274 0.880 18.011 27.891 1.00 0.00 O +ATOM 824 HW1 SOL 274 0.460 17.151 27.621 1.00 0.00 H +ATOM 825 HW2 SOL 274 1.820 18.041 27.551 1.00 0.00 H +ATOM 826 OW SOL 275 5.040 15.681 27.721 1.00 0.00 O +ATOM 827 HW1 SOL 275 5.700 16.421 27.811 1.00 0.00 H +ATOM 828 HW2 SOL 275 5.480 14.891 27.301 1.00 0.00 H +ATOM 829 OW SOL 276 10.021 7.960 31.001 1.00 0.00 O +ATOM 830 HW1 SOL 276 10.431 7.640 31.861 1.00 0.00 H +ATOM 831 HW2 SOL 276 9.061 7.690 30.971 1.00 0.00 H +ATOM 832 OW SOL 277 0.400 5.440 29.761 1.00 0.00 O +ATOM 833 HW1 SOL 277 1.250 5.110 29.351 1.00 0.00 H +ATOM 834 HW2 SOL 277 0.530 5.590 30.741 1.00 0.00 H +ATOM 835 OW SOL 278 8.150 5.720 21.871 1.00 0.00 O +ATOM 836 HW1 SOL 278 8.220 4.830 21.411 1.00 0.00 H +ATOM 837 HW2 SOL 278 7.210 6.060 21.791 1.00 0.00 H +ATOM 838 OW SOL 279 16.571 6.040 30.681 1.00 0.00 O +ATOM 839 HW1 SOL 279 16.191 5.350 31.301 1.00 0.00 H +ATOM 840 HW2 SOL 279 17.391 5.680 30.241 1.00 0.00 H +ATOM 841 OW SOL 280 6.710 4.640 0.081 1.00 0.00 O +ATOM 842 HW1 SOL 280 6.370 3.750 -0.219 1.00 0.00 H +ATOM 843 HW2 SOL 280 6.970 5.180 -0.719 1.00 0.00 H +ATOM 844 OW SOL 281 4.730 5.000 20.531 1.00 0.00 O +ATOM 845 HW1 SOL 281 5.340 5.800 20.571 1.00 0.00 H +ATOM 846 HW2 SOL 281 3.780 5.310 20.601 1.00 0.00 H +ATOM 847 OW SOL 282 13.021 8.550 21.711 1.00 0.00 O +ATOM 848 HW1 SOL 282 12.161 8.240 22.131 1.00 0.00 H +ATOM 849 HW2 SOL 282 12.981 8.410 20.721 1.00 0.00 H +ATOM 850 OW SOL 283 17.591 17.471 30.161 1.00 0.00 O +ATOM 851 HW1 SOL 283 18.201 17.771 29.431 1.00 0.00 H +ATOM 852 HW2 SOL 283 17.211 16.581 29.941 1.00 0.00 H +ATOM 853 OW SOL 284 0.830 12.581 28.841 1.00 0.00 O +ATOM 854 HW1 SOL 284 0.780 12.571 29.841 1.00 0.00 H +ATOM 855 HW2 SOL 284 0.000 12.171 28.461 1.00 0.00 H +ATOM 856 OW SOL 285 17.261 1.350 23.851 1.00 0.00 O +ATOM 857 HW1 SOL 285 17.991 1.180 23.181 1.00 0.00 H +ATOM 858 HW2 SOL 285 16.951 0.480 24.231 1.00 0.00 H +ATOM 859 OW SOL 286 13.881 15.731 23.391 1.00 0.00 O +ATOM 860 HW1 SOL 286 14.551 15.851 22.651 1.00 0.00 H +ATOM 861 HW2 SOL 286 13.481 16.621 23.621 1.00 0.00 H +ATOM 862 OW SOL 287 12.801 9.270 25.341 1.00 0.00 O +ATOM 863 HW1 SOL 287 13.401 8.460 25.361 1.00 0.00 H +ATOM 864 HW2 SOL 287 13.201 9.960 24.741 1.00 0.00 H +ATOM 865 OW SOL 288 6.720 16.161 20.161 1.00 0.00 O +ATOM 866 HW1 SOL 288 6.810 16.261 19.171 1.00 0.00 H +ATOM 867 HW2 SOL 288 6.320 15.271 20.371 1.00 0.00 H +ATOM 868 OW SOL 289 2.630 3.260 25.821 1.00 0.00 O +ATOM 869 HW1 SOL 289 1.840 3.770 25.481 1.00 0.00 H +ATOM 870 HW2 SOL 289 2.540 3.110 26.801 1.00 0.00 H +ATOM 871 OW SOL 290 11.941 16.121 18.931 1.00 0.00 O +ATOM 872 HW1 SOL 290 12.001 15.191 19.301 1.00 0.00 H +ATOM 873 HW2 SOL 290 11.351 16.121 18.131 1.00 0.00 H +ATOM 874 OW SOL 291 8.220 10.021 1.111 1.00 0.00 O +ATOM 875 HW1 SOL 291 8.620 10.011 0.191 1.00 0.00 H +ATOM 876 HW2 SOL 291 8.320 10.941 1.511 1.00 0.00 H +ATOM 877 OW SOL 292 9.160 9.100 21.531 1.00 0.00 O +ATOM 878 HW1 SOL 292 9.790 9.480 20.851 1.00 0.00 H +ATOM 879 HW2 SOL 292 9.560 8.270 21.921 1.00 0.00 H +ATOM 880 OW SOL 293 15.041 16.071 19.061 1.00 0.00 O +ATOM 881 HW1 SOL 293 14.121 16.441 19.131 1.00 0.00 H +ATOM 882 HW2 SOL 293 15.421 16.271 18.161 1.00 0.00 H +ATOM 883 OW SOL 294 10.391 10.981 25.581 1.00 0.00 O +ATOM 884 HW1 SOL 294 9.691 10.511 26.121 1.00 0.00 H +ATOM 885 HW2 SOL 294 10.981 10.301 25.151 1.00 0.00 H +ATOM 886 OW SOL 295 10.141 2.360 28.331 1.00 0.00 O +ATOM 887 HW1 SOL 295 10.061 2.000 27.401 1.00 0.00 H +ATOM 888 HW2 SOL 295 10.121 1.600 28.981 1.00 0.00 H +ATOM 889 OW SOL 296 5.900 14.871 23.531 1.00 0.00 O +ATOM 890 HW1 SOL 296 6.320 14.291 22.831 1.00 0.00 H +ATOM 891 HW2 SOL 296 5.460 15.661 23.091 1.00 0.00 H +ATOM 892 OW SOL 297 17.091 3.850 1.201 1.00 0.00 O +ATOM 893 HW1 SOL 297 17.821 4.540 1.241 1.00 0.00 H +ATOM 894 HW2 SOL 297 17.371 3.100 0.611 1.00 0.00 H +ATOM 895 OW SOL 298 2.550 13.481 21.521 1.00 0.00 O +ATOM 896 HW1 SOL 298 1.590 13.491 21.251 1.00 0.00 H +ATOM 897 HW2 SOL 298 2.670 14.011 22.361 1.00 0.00 H +ATOM 898 OW SOL 299 0.750 3.450 18.951 1.00 0.00 O +ATOM 899 HW1 SOL 299 -0.170 3.170 18.661 1.00 0.00 H +ATOM 900 HW2 SOL 299 1.060 4.220 18.391 1.00 0.00 H +ATOM 901 OW SOL 300 11.831 13.351 19.811 1.00 0.00 O +ATOM 902 HW1 SOL 300 10.841 13.241 19.831 1.00 0.00 H +ATOM 903 HW2 SOL 300 12.171 13.501 20.741 1.00 0.00 H +ATOM 904 OW SOL 301 14.931 17.671 28.211 1.00 0.00 O +ATOM 905 HW1 SOL 301 15.261 18.311 27.521 1.00 0.00 H +ATOM 906 HW2 SOL 301 15.591 17.611 28.961 1.00 0.00 H +ATOM 907 OW SOL 302 16.741 8.830 31.161 1.00 0.00 O +ATOM 908 HW1 SOL 302 16.471 7.940 30.791 1.00 0.00 H +ATOM 909 HW2 SOL 302 16.751 9.510 30.431 1.00 0.00 H +ATOM 910 OW SOL 303 12.251 3.250 23.111 1.00 0.00 O +ATOM 911 HW1 SOL 303 12.901 2.510 23.001 1.00 0.00 H +ATOM 912 HW2 SOL 303 12.451 3.750 23.951 1.00 0.00 H +ATOM 913 OW SOL 304 5.940 7.450 25.141 1.00 0.00 O +ATOM 914 HW1 SOL 304 6.440 8.300 24.951 1.00 0.00 H +ATOM 915 HW2 SOL 304 5.060 7.470 24.661 1.00 0.00 H +ATOM 916 OW SOL 305 8.590 13.741 18.781 1.00 0.00 O +ATOM 917 HW1 SOL 305 8.130 13.891 19.661 1.00 0.00 H +ATOM 918 HW2 SOL 305 9.030 14.591 18.481 1.00 0.00 H +ATOM 919 OW SOL 306 6.610 17.901 28.151 1.00 0.00 O +ATOM 920 HW1 SOL 306 6.150 18.781 28.021 1.00 0.00 H +ATOM 921 HW2 SOL 306 7.600 18.021 28.081 1.00 0.00 H +ATOM 922 OW SOL 307 8.590 9.561 27.231 1.00 0.00 O +ATOM 923 HW1 SOL 307 9.130 8.871 27.711 1.00 0.00 H +ATOM 924 HW2 SOL 307 8.270 10.251 27.891 1.00 0.00 H +ATOM 925 OW SOL 308 10.831 9.841 19.491 1.00 0.00 O +ATOM 926 HW1 SOL 308 10.601 10.371 18.671 1.00 0.00 H +ATOM 927 HW2 SOL 308 11.641 9.281 19.301 1.00 0.00 H +ATOM 928 OW SOL 309 18.611 15.691 27.131 1.00 0.00 O +ATOM 929 HW1 SOL 309 17.901 15.571 26.431 1.00 0.00 H +ATOM 930 HW2 SOL 309 18.621 14.901 27.731 1.00 0.00 H +ATOM 931 OW SOL 310 0.790 12.401 25.151 1.00 0.00 O +ATOM 932 HW1 SOL 310 0.780 11.931 26.031 1.00 0.00 H +ATOM 933 HW2 SOL 310 1.610 12.121 24.641 1.00 0.00 H +ATOM 934 OW SOL 311 4.280 4.240 23.821 1.00 0.00 O +ATOM 935 HW1 SOL 311 4.580 3.520 23.201 1.00 0.00 H +ATOM 936 HW2 SOL 311 3.890 3.840 24.651 1.00 0.00 H +ATOM 937 OW SOL 312 17.051 14.871 29.661 1.00 0.00 O +ATOM 938 HW1 SOL 312 16.121 14.621 29.391 1.00 0.00 H +ATOM 939 HW2 SOL 312 17.311 14.371 30.481 1.00 0.00 H +ATOM 940 OW SOL 313 8.120 15.861 25.491 1.00 0.00 O +ATOM 941 HW1 SOL 313 8.440 15.961 24.551 1.00 0.00 H +ATOM 942 HW2 SOL 313 7.330 15.241 25.511 1.00 0.00 H +ATOM 943 OW SOL 314 14.241 2.140 29.741 1.00 0.00 O +ATOM 944 HW1 SOL 314 14.761 1.490 30.291 1.00 0.00 H +ATOM 945 HW2 SOL 314 13.751 2.770 30.351 1.00 0.00 H +ATOM 946 OW SOL 315 10.011 0.340 30.161 1.00 0.00 O +ATOM 947 HW1 SOL 315 9.381 -0.380 29.851 1.00 0.00 H +ATOM 948 HW2 SOL 315 10.941 -0.020 30.161 1.00 0.00 H +ATOM 949 OW SOL 316 7.700 13.301 21.631 1.00 0.00 O +ATOM 950 HW1 SOL 316 7.240 12.431 21.801 1.00 0.00 H +ATOM 951 HW2 SOL 316 8.610 13.271 22.041 1.00 0.00 H +ATOM 952 OW SOL 317 13.521 0.520 20.301 1.00 0.00 O +ATOM 953 HW1 SOL 317 13.871 0.110 19.461 1.00 0.00 H +ATOM 954 HW2 SOL 317 12.621 0.140 20.501 1.00 0.00 H +ATOM 955 OW SOL 318 13.001 4.530 25.531 1.00 0.00 O +ATOM 956 HW1 SOL 318 12.411 5.330 25.571 1.00 0.00 H +ATOM 957 HW2 SOL 318 13.151 4.180 26.461 1.00 0.00 H +ATOM 958 OW SOL 319 15.931 2.210 27.441 1.00 0.00 O +ATOM 959 HW1 SOL 319 15.091 2.200 27.981 1.00 0.00 H +ATOM 960 HW2 SOL 319 15.951 3.040 26.881 1.00 0.00 H +ATOM 961 OW SOL 320 0.390 10.771 21.621 1.00 0.00 O +ATOM 962 HW1 SOL 320 1.380 10.661 21.531 1.00 0.00 H +ATOM 963 HW2 SOL 320 -0.010 9.911 21.941 1.00 0.00 H +ATOM 964 OW SOL 321 8.750 16.461 21.991 1.00 0.00 O +ATOM 965 HW1 SOL 321 7.980 16.111 21.451 1.00 0.00 H +ATOM 966 HW2 SOL 321 8.430 17.171 22.611 1.00 0.00 H +ATOM 967 OW SOL 322 17.431 24.801 8.560 1.00 0.00 O +ATOM 968 HW1 SOL 322 17.761 25.741 8.560 1.00 0.00 H +ATOM 969 HW2 SOL 322 17.941 24.261 9.220 1.00 0.00 H +ATOM 970 OW SOL 323 11.351 25.651 7.170 1.00 0.00 O +ATOM 971 HW1 SOL 323 11.921 26.431 6.920 1.00 0.00 H +ATOM 972 HW2 SOL 323 10.751 25.911 7.930 1.00 0.00 H +ATOM 973 OW SOL 324 17.551 24.691 2.310 1.00 0.00 O +ATOM 974 HW1 SOL 324 17.431 24.561 1.320 1.00 0.00 H +ATOM 975 HW2 SOL 324 17.251 23.881 2.800 1.00 0.00 H +ATOM 976 OW SOL 325 7.680 30.061 10.231 1.00 0.00 O +ATOM 977 HW1 SOL 325 6.900 30.231 10.831 1.00 0.00 H +ATOM 978 HW2 SOL 325 8.020 30.931 9.871 1.00 0.00 H +ATOM 979 OW SOL 326 8.500 26.601 18.231 1.00 0.00 O +ATOM 980 HW1 SOL 326 8.460 27.361 18.881 1.00 0.00 H +ATOM 981 HW2 SOL 326 8.720 26.961 17.321 1.00 0.00 H +ATOM 982 OW SOL 327 6.850 28.741 6.650 1.00 0.00 O +ATOM 983 HW1 SOL 327 7.540 28.581 7.350 1.00 0.00 H +ATOM 984 HW2 SOL 327 6.120 29.311 7.030 1.00 0.00 H +ATOM 985 OW SOL 328 4.380 22.541 14.991 1.00 0.00 O +ATOM 986 HW1 SOL 328 5.200 21.981 15.081 1.00 0.00 H +ATOM 987 HW2 SOL 328 3.570 21.961 15.031 1.00 0.00 H +ATOM 988 OW SOL 329 16.031 23.091 7.370 1.00 0.00 O +ATOM 989 HW1 SOL 329 15.291 23.551 6.870 1.00 0.00 H +ATOM 990 HW2 SOL 329 16.541 23.771 7.900 1.00 0.00 H +ATOM 991 OW SOL 330 2.400 29.531 8.860 1.00 0.00 O +ATOM 992 HW1 SOL 330 2.540 28.691 9.380 1.00 0.00 H +ATOM 993 HW2 SOL 330 1.850 30.171 9.410 1.00 0.00 H +ATOM 994 OW SOL 331 6.060 28.261 1.230 1.00 0.00 O +ATOM 995 HW1 SOL 331 6.130 29.101 0.690 1.00 0.00 H +ATOM 996 HW2 SOL 331 6.520 28.391 2.110 1.00 0.00 H +ATOM 997 OW SOL 332 15.941 19.761 14.801 1.00 0.00 O +ATOM 998 HW1 SOL 332 15.761 20.431 14.081 1.00 0.00 H +ATOM 999 HW2 SOL 332 15.911 20.221 15.691 1.00 0.00 H +ATOM 1000 OW SOL 333 1.220 25.051 5.630 1.00 0.00 O +ATOM 1001 HW1 SOL 333 0.770 24.171 5.800 1.00 0.00 H +ATOM 1002 HW2 SOL 333 1.210 25.591 6.470 1.00 0.00 H +ATOM 1003 OW SOL 334 16.891 27.841 6.120 1.00 0.00 O +ATOM 1004 HW1 SOL 334 17.841 27.551 6.200 1.00 0.00 H +ATOM 1005 HW2 SOL 334 16.811 28.491 5.370 1.00 0.00 H +ATOM 1006 OW SOL 335 16.411 29.701 4.320 1.00 0.00 O +ATOM 1007 HW1 SOL 335 17.271 29.721 3.800 1.00 0.00 H +ATOM 1008 HW2 SOL 335 16.551 30.171 5.200 1.00 0.00 H +ATOM 1009 OW SOL 336 1.130 25.991 15.971 1.00 0.00 O +ATOM 1010 HW1 SOL 336 2.010 25.861 16.421 1.00 0.00 H +ATOM 1011 HW2 SOL 336 1.000 26.961 15.751 1.00 0.00 H +ATOM 1012 OW SOL 337 6.130 1.041 7.260 1.00 0.00 O +ATOM 1013 HW1 SOL 337 5.640 0.171 7.350 1.00 0.00 H +ATOM 1014 HW2 SOL 337 5.900 1.471 6.390 1.00 0.00 H +ATOM 1015 OW SOL 338 12.931 30.901 14.231 1.00 0.00 O +ATOM 1016 HW1 SOL 338 13.301 30.171 13.651 1.00 0.00 H +ATOM 1017 HW2 SOL 338 13.451 30.951 15.081 1.00 0.00 H +ATOM 1018 OW SOL 339 8.090 18.661 5.020 1.00 0.00 O +ATOM 1019 HW1 SOL 339 8.490 19.571 4.930 1.00 0.00 H +ATOM 1020 HW2 SOL 339 7.090 18.741 5.080 1.00 0.00 H +ATOM 1021 OW SOL 340 15.251 28.611 1.900 1.00 0.00 O +ATOM 1022 HW1 SOL 340 14.621 27.851 2.030 1.00 0.00 H +ATOM 1023 HW2 SOL 340 15.731 28.791 2.760 1.00 0.00 H +ATOM 1024 OW SOL 341 3.170 21.131 18.011 1.00 0.00 O +ATOM 1025 HW1 SOL 341 3.880 21.841 18.071 1.00 0.00 H +ATOM 1026 HW2 SOL 341 2.290 21.521 18.291 1.00 0.00 H +ATOM 1027 OW SOL 342 5.980 25.911 2.700 1.00 0.00 O +ATOM 1028 HW1 SOL 342 6.220 26.601 2.020 1.00 0.00 H +ATOM 1029 HW2 SOL 342 5.200 26.241 3.240 1.00 0.00 H +ATOM 1030 OW SOL 343 12.811 22.071 9.441 1.00 0.00 O +ATOM 1031 HW1 SOL 343 11.951 21.571 9.311 1.00 0.00 H +ATOM 1032 HW2 SOL 343 13.431 21.531 10.001 1.00 0.00 H +ATOM 1033 OW SOL 344 8.070 24.671 14.651 1.00 0.00 O +ATOM 1034 HW1 SOL 344 7.600 24.641 15.541 1.00 0.00 H +ATOM 1035 HW2 SOL 344 7.560 24.121 13.991 1.00 0.00 H +ATOM 1036 OW SOL 345 13.941 23.311 16.741 1.00 0.00 O +ATOM 1037 HW1 SOL 345 13.741 23.741 17.621 1.00 0.00 H +ATOM 1038 HW2 SOL 345 14.721 22.691 16.831 1.00 0.00 H +ATOM 1039 OW SOL 346 9.731 27.521 15.721 1.00 0.00 O +ATOM 1040 HW1 SOL 346 10.191 26.681 15.431 1.00 0.00 H +ATOM 1041 HW2 SOL 346 9.171 27.861 14.971 1.00 0.00 H +ATOM 1042 OW SOL 347 9.911 22.721 12.421 1.00 0.00 O +ATOM 1043 HW1 SOL 347 9.141 23.061 12.961 1.00 0.00 H +ATOM 1044 HW2 SOL 347 9.571 22.211 11.631 1.00 0.00 H +ATOM 1045 OW SOL 348 10.411 25.631 4.290 1.00 0.00 O +ATOM 1046 HW1 SOL 348 10.671 25.591 5.250 1.00 0.00 H +ATOM 1047 HW2 SOL 348 9.561 25.121 4.150 1.00 0.00 H +ATOM 1048 OW SOL 349 8.650 22.101 1.950 1.00 0.00 O +ATOM 1049 HW1 SOL 349 9.240 22.731 1.460 1.00 0.00 H +ATOM 1050 HW2 SOL 349 8.840 21.161 1.660 1.00 0.00 H +ATOM 1051 OW SOL 350 17.191 24.471 18.311 1.00 0.00 O +ATOM 1052 HW1 SOL 350 16.931 25.361 17.951 1.00 0.00 H +ATOM 1053 HW2 SOL 350 17.171 23.791 17.581 1.00 0.00 H +ATOM 1054 OW SOL 351 13.621 30.061 5.450 1.00 0.00 O +ATOM 1055 HW1 SOL 351 14.451 29.771 4.970 1.00 0.00 H +ATOM 1056 HW2 SOL 351 13.131 30.731 4.890 1.00 0.00 H +ATOM 1057 OW SOL 352 5.500 20.581 8.850 1.00 0.00 O +ATOM 1058 HW1 SOL 352 5.450 20.531 9.850 1.00 0.00 H +ATOM 1059 HW2 SOL 352 5.520 21.541 8.560 1.00 0.00 H +ATOM 1060 OW SOL 353 17.951 29.281 8.730 1.00 0.00 O +ATOM 1061 HW1 SOL 353 17.331 29.131 7.970 1.00 0.00 H +ATOM 1062 HW2 SOL 353 17.431 29.391 9.580 1.00 0.00 H +ATOM 1063 OW SOL 354 3.210 28.051 2.420 1.00 0.00 O +ATOM 1064 HW1 SOL 354 4.030 28.441 2.000 1.00 0.00 H +ATOM 1065 HW2 SOL 354 2.940 27.231 1.930 1.00 0.00 H +ATOM 1066 OW SOL 355 14.581 25.971 7.280 1.00 0.00 O +ATOM 1067 HW1 SOL 355 14.531 25.321 8.030 1.00 0.00 H +ATOM 1068 HW2 SOL 355 15.381 26.561 7.410 1.00 0.00 H +ATOM 1069 OW SOL 356 2.020 21.471 14.981 1.00 0.00 O +ATOM 1070 HW1 SOL 356 1.220 22.071 14.851 1.00 0.00 H +ATOM 1071 HW2 SOL 356 1.920 20.981 15.841 1.00 0.00 H +ATOM 1072 OW SOL 357 14.001 19.691 4.260 1.00 0.00 O +ATOM 1073 HW1 SOL 357 13.761 19.321 3.360 1.00 0.00 H +ATOM 1074 HW2 SOL 357 14.991 19.851 4.300 1.00 0.00 H +ATOM 1075 OW SOL 358 3.820 25.621 4.800 1.00 0.00 O +ATOM 1076 HW1 SOL 358 4.270 24.721 4.770 1.00 0.00 H +ATOM 1077 HW2 SOL 358 2.880 25.511 5.130 1.00 0.00 H +ATOM 1078 OW SOL 359 15.471 20.841 17.291 1.00 0.00 O +ATOM 1079 HW1 SOL 359 15.421 21.211 18.211 1.00 0.00 H +ATOM 1080 HW2 SOL 359 14.751 20.151 17.171 1.00 0.00 H +ATOM 1081 OW SOL 360 6.140 19.841 1.170 1.00 0.00 O +ATOM 1082 HW1 SOL 360 7.120 19.621 1.240 1.00 0.00 H +ATOM 1083 HW2 SOL 360 5.830 19.671 0.240 1.00 0.00 H +ATOM 1084 OW SOL 361 7.810 21.261 17.491 1.00 0.00 O +ATOM 1085 HW1 SOL 361 8.480 20.651 17.921 1.00 0.00 H +ATOM 1086 HW2 SOL 361 7.080 21.451 18.141 1.00 0.00 H +ATOM 1087 OW SOL 362 13.511 24.521 14.331 1.00 0.00 O +ATOM 1088 HW1 SOL 362 13.791 24.091 15.181 1.00 0.00 H +ATOM 1089 HW2 SOL 362 13.761 25.481 14.341 1.00 0.00 H +ATOM 1090 OW SOL 363 9.220 23.651 8.990 1.00 0.00 O +ATOM 1091 HW1 SOL 363 8.970 23.561 8.030 1.00 0.00 H +ATOM 1092 HW2 SOL 363 9.700 22.831 9.300 1.00 0.00 H +ATOM 1093 OW SOL 364 5.390 19.261 5.120 1.00 0.00 O +ATOM 1094 HW1 SOL 364 4.580 19.271 5.700 1.00 0.00 H +ATOM 1095 HW2 SOL 364 5.420 20.091 4.570 1.00 0.00 H +ATOM 1096 OW SOL 365 2.970 18.971 1.710 1.00 0.00 O +ATOM 1097 HW1 SOL 365 3.460 19.811 1.500 1.00 0.00 H +ATOM 1098 HW2 SOL 365 3.590 18.321 2.160 1.00 0.00 H +ATOM 1099 OW SOL 366 9.351 20.981 4.800 1.00 0.00 O +ATOM 1100 HW1 SOL 366 8.871 21.391 4.020 1.00 0.00 H +ATOM 1101 HW2 SOL 366 10.341 20.961 4.610 1.00 0.00 H +ATOM 1102 OW SOL 367 10.761 25.451 14.641 1.00 0.00 O +ATOM 1103 HW1 SOL 367 9.961 24.841 14.671 1.00 0.00 H +ATOM 1104 HW2 SOL 367 11.571 24.921 14.401 1.00 0.00 H +ATOM 1105 OW SOL 368 4.590 30.141 7.410 1.00 0.00 O +ATOM 1106 HW1 SOL 368 3.880 29.871 8.060 1.00 0.00 H +ATOM 1107 HW2 SOL 368 4.330 29.861 6.480 1.00 0.00 H +ATOM 1108 OW SOL 369 10.321 24.111 0.160 1.00 0.00 O +ATOM 1109 HW1 SOL 369 9.911 24.931 -0.230 1.00 0.00 H +ATOM 1110 HW2 SOL 369 10.961 24.371 0.890 1.00 0.00 H +ATOM 1111 OW SOL 370 5.610 20.841 11.471 1.00 0.00 O +ATOM 1112 HW1 SOL 370 5.990 20.001 11.841 1.00 0.00 H +ATOM 1113 HW2 SOL 370 4.730 21.031 11.911 1.00 0.00 H +ATOM 1114 OW SOL 371 8.660 23.161 6.420 1.00 0.00 O +ATOM 1115 HW1 SOL 371 8.340 23.881 5.800 1.00 0.00 H +ATOM 1116 HW2 SOL 371 8.900 22.351 5.890 1.00 0.00 H +ATOM 1117 OW SOL 372 10.171 19.011 7.530 1.00 0.00 O +ATOM 1118 HW1 SOL 372 9.451 19.061 6.840 1.00 0.00 H +ATOM 1119 HW2 SOL 372 9.931 18.321 8.220 1.00 0.00 H +ATOM 1120 OW SOL 373 14.291 30.351 8.670 1.00 0.00 O +ATOM 1121 HW1 SOL 373 13.741 29.511 8.600 1.00 0.00 H +ATOM 1122 HW2 SOL 373 14.551 30.641 7.750 1.00 0.00 H +ATOM 1123 OW SOL 374 14.661 24.521 9.921 1.00 0.00 O +ATOM 1124 HW1 SOL 374 14.361 23.571 9.991 1.00 0.00 H +ATOM 1125 HW2 SOL 374 15.391 24.681 10.581 1.00 0.00 H +ATOM 1126 OW SOL 375 18.571 26.951 3.770 1.00 0.00 O +ATOM 1127 HW1 SOL 375 18.991 26.311 4.410 1.00 0.00 H +ATOM 1128 HW2 SOL 375 18.191 26.441 2.990 1.00 0.00 H +ATOM 1129 OW SOL 376 13.901 24.371 0.780 1.00 0.00 O +ATOM 1130 HW1 SOL 376 13.361 24.161 1.590 1.00 0.00 H +ATOM 1131 HW2 SOL 376 14.811 23.961 0.870 1.00 0.00 H +ATOM 1132 OW SOL 377 5.270 21.181 3.280 1.00 0.00 O +ATOM 1133 HW1 SOL 377 5.540 20.591 2.530 1.00 0.00 H +ATOM 1134 HW2 SOL 377 5.270 22.131 2.970 1.00 0.00 H +ATOM 1135 OW SOL 378 17.541 30.851 15.881 1.00 0.00 O +ATOM 1136 HW1 SOL 378 18.451 30.461 15.751 1.00 0.00 H +ATOM 1137 HW2 SOL 378 17.621 31.811 16.121 1.00 0.00 H +ATOM 1138 OW SOL 379 16.381 29.611 10.791 1.00 0.00 O +ATOM 1139 HW1 SOL 379 16.431 30.421 11.381 1.00 0.00 H +ATOM 1140 HW2 SOL 379 15.521 29.631 10.281 1.00 0.00 H +ATOM 1141 OW SOL 380 9.150 19.511 14.021 1.00 0.00 O +ATOM 1142 HW1 SOL 380 9.400 19.311 13.071 1.00 0.00 H +ATOM 1143 HW2 SOL 380 9.870 20.071 14.441 1.00 0.00 H +ATOM 1144 OW SOL 381 9.801 29.781 17.191 1.00 0.00 O +ATOM 1145 HW1 SOL 381 8.811 29.841 17.291 1.00 0.00 H +ATOM 1146 HW2 SOL 381 10.031 28.981 16.631 1.00 0.00 H +ATOM 1147 OW SOL 382 7.050 29.121 3.680 1.00 0.00 O +ATOM 1148 HW1 SOL 382 6.910 29.191 4.670 1.00 0.00 H +ATOM 1149 HW2 SOL 382 7.890 28.611 3.500 1.00 0.00 H +ATOM 1150 OW SOL 383 4.100 26.751 12.511 1.00 0.00 O +ATOM 1151 HW1 SOL 383 4.960 26.871 13.011 1.00 0.00 H +ATOM 1152 HW2 SOL 383 3.680 25.881 12.781 1.00 0.00 H +ATOM 1153 OW SOL 384 12.741 22.481 12.621 1.00 0.00 O +ATOM 1154 HW1 SOL 384 12.951 23.221 13.261 1.00 0.00 H +ATOM 1155 HW2 SOL 384 11.851 22.651 12.191 1.00 0.00 H +ATOM 1156 OW SOL 385 3.670 29.621 5.010 1.00 0.00 O +ATOM 1157 HW1 SOL 385 3.600 30.451 4.450 1.00 0.00 H +ATOM 1158 HW2 SOL 385 3.710 28.821 4.410 1.00 0.00 H +ATOM 1159 OW SOL 386 5.660 23.991 8.650 1.00 0.00 O +ATOM 1160 HW1 SOL 386 5.780 24.651 7.910 1.00 0.00 H +ATOM 1161 HW2 SOL 386 6.120 24.331 9.480 1.00 0.00 H +ATOM 1162 OW SOL 387 15.821 25.011 4.720 1.00 0.00 O +ATOM 1163 HW1 SOL 387 15.511 25.621 5.450 1.00 0.00 H +ATOM 1164 HW2 SOL 387 16.321 25.531 4.030 1.00 0.00 H +ATOM 1165 OW SOL 388 4.020 26.131 15.981 1.00 0.00 O +ATOM 1166 HW1 SOL 388 4.700 26.681 15.511 1.00 0.00 H +ATOM 1167 HW2 SOL 388 4.420 25.251 16.251 1.00 0.00 H +ATOM 1168 OW SOL 389 15.871 26.411 16.701 1.00 0.00 O +ATOM 1169 HW1 SOL 389 14.951 26.791 16.651 1.00 0.00 H +ATOM 1170 HW2 SOL 389 16.471 26.881 16.051 1.00 0.00 H +ATOM 1171 OW SOL 390 10.131 19.671 17.701 1.00 0.00 O +ATOM 1172 HW1 SOL 390 10.191 20.521 17.181 1.00 0.00 H +ATOM 1173 HW2 SOL 390 10.451 18.911 17.131 1.00 0.00 H +ATOM 1174 OW SOL 391 5.040 19.121 17.401 1.00 0.00 O +ATOM 1175 HW1 SOL 391 4.620 18.551 16.701 1.00 0.00 H +ATOM 1176 HW2 SOL 391 4.380 19.811 17.721 1.00 0.00 H +ATOM 1177 OW SOL 392 5.730 27.321 10.291 1.00 0.00 O +ATOM 1178 HW1 SOL 392 6.170 28.211 10.201 1.00 0.00 H +ATOM 1179 HW2 SOL 392 5.100 27.321 11.061 1.00 0.00 H +ATOM 1180 OW SOL 393 13.601 27.241 10.451 1.00 0.00 O +ATOM 1181 HW1 SOL 393 12.851 27.241 9.791 1.00 0.00 H +ATOM 1182 HW2 SOL 393 13.971 26.321 10.541 1.00 0.00 H +ATOM 1183 OW SOL 394 12.091 23.871 2.750 1.00 0.00 O +ATOM 1184 HW1 SOL 394 12.221 23.031 3.290 1.00 0.00 H +ATOM 1185 HW2 SOL 394 11.801 24.611 3.350 1.00 0.00 H +ATOM 1186 OW SOL 395 0.370 0.491 12.821 1.00 0.00 O +ATOM 1187 HW1 SOL 395 0.900 0.001 13.501 1.00 0.00 H +ATOM 1188 HW2 SOL 395 0.590 1.471 12.871 1.00 0.00 H +ATOM 1189 OW SOL 396 7.320 24.961 10.641 1.00 0.00 O +ATOM 1190 HW1 SOL 396 7.910 24.701 9.881 1.00 0.00 H +ATOM 1191 HW2 SOL 396 7.040 25.921 10.531 1.00 0.00 H +ATOM 1192 OW SOL 397 17.281 27.971 18.541 1.00 0.00 O +ATOM 1193 HW1 SOL 397 16.821 27.901 17.651 1.00 0.00 H +ATOM 1194 HW2 SOL 397 16.661 28.411 19.201 1.00 0.00 H +ATOM 1195 OW SOL 398 3.070 19.251 6.180 1.00 0.00 O +ATOM 1196 HW1 SOL 398 2.960 20.191 6.510 1.00 0.00 H +ATOM 1197 HW2 SOL 398 3.020 18.621 6.950 1.00 0.00 H +ATOM 1198 OW SOL 399 16.221 22.291 3.740 1.00 0.00 O +ATOM 1199 HW1 SOL 399 16.241 21.531 4.380 1.00 0.00 H +ATOM 1200 HW2 SOL 399 15.741 23.061 4.140 1.00 0.00 H +ATOM 1201 OW SOL 400 10.231 26.281 9.661 1.00 0.00 O +ATOM 1202 HW1 SOL 400 10.381 26.491 10.621 1.00 0.00 H +ATOM 1203 HW2 SOL 400 9.931 25.331 9.571 1.00 0.00 H +ATOM 1204 OW SOL 401 3.500 27.601 18.041 1.00 0.00 O +ATOM 1205 HW1 SOL 401 4.260 28.041 18.521 1.00 0.00 H +ATOM 1206 HW2 SOL 401 3.850 27.131 17.221 1.00 0.00 H +ATOM 1207 OW SOL 402 15.401 21.361 1.250 1.00 0.00 O +ATOM 1208 HW1 SOL 402 14.791 20.611 1.480 1.00 0.00 H +ATOM 1209 HW2 SOL 402 15.621 21.881 2.080 1.00 0.00 H +ATOM 1210 OW SOL 403 13.031 27.001 0.420 1.00 0.00 O +ATOM 1211 HW1 SOL 403 13.371 26.071 0.570 1.00 0.00 H +ATOM 1212 HW2 SOL 403 13.211 27.271 -0.530 1.00 0.00 H +ATOM 1213 OW SOL 404 3.190 26.721 9.491 1.00 0.00 O +ATOM 1214 HW1 SOL 404 4.120 27.081 9.541 1.00 0.00 H +ATOM 1215 HW2 SOL 404 3.130 25.871 10.011 1.00 0.00 H +ATOM 1216 OW SOL 405 3.390 23.711 10.061 1.00 0.00 O +ATOM 1217 HW1 SOL 405 2.870 22.881 9.891 1.00 0.00 H +ATOM 1218 HW2 SOL 405 4.160 23.761 9.421 1.00 0.00 H +ATOM 1219 OW SOL 406 11.381 22.421 16.781 1.00 0.00 O +ATOM 1220 HW1 SOL 406 10.931 23.051 17.421 1.00 0.00 H +ATOM 1221 HW2 SOL 406 12.311 22.731 16.611 1.00 0.00 H +ATOM 1222 OW SOL 407 11.601 20.691 14.771 1.00 0.00 O +ATOM 1223 HW1 SOL 407 11.601 21.331 15.541 1.00 0.00 H +ATOM 1224 HW2 SOL 407 11.881 21.171 13.941 1.00 0.00 H +ATOM 1225 OW SOL 408 10.021 26.581 12.381 1.00 0.00 O +ATOM 1226 HW1 SOL 408 10.431 26.261 13.241 1.00 0.00 H +ATOM 1227 HW2 SOL 408 9.061 26.311 12.351 1.00 0.00 H +ATOM 1228 OW SOL 409 0.400 24.061 11.141 1.00 0.00 O +ATOM 1229 HW1 SOL 409 1.250 23.731 10.731 1.00 0.00 H +ATOM 1230 HW2 SOL 409 0.530 24.211 12.121 1.00 0.00 H +ATOM 1231 OW SOL 410 1.890 23.821 17.221 1.00 0.00 O +ATOM 1232 HW1 SOL 410 2.480 23.421 16.521 1.00 0.00 H +ATOM 1233 HW2 SOL 410 1.310 24.531 16.811 1.00 0.00 H +ATOM 1234 OW SOL 411 13.691 28.121 16.601 1.00 0.00 O +ATOM 1235 HW1 SOL 411 14.081 29.011 16.801 1.00 0.00 H +ATOM 1236 HW2 SOL 411 13.791 27.921 15.631 1.00 0.00 H +ATOM 1237 OW SOL 412 8.150 24.341 3.250 1.00 0.00 O +ATOM 1238 HW1 SOL 412 8.220 23.451 2.790 1.00 0.00 H +ATOM 1239 HW2 SOL 412 7.210 24.681 3.170 1.00 0.00 H +ATOM 1240 OW SOL 413 16.571 24.661 12.061 1.00 0.00 O +ATOM 1241 HW1 SOL 413 16.191 23.971 12.681 1.00 0.00 H +ATOM 1242 HW2 SOL 413 17.391 24.301 11.621 1.00 0.00 H +ATOM 1243 OW SOL 414 6.710 23.261 12.691 1.00 0.00 O +ATOM 1244 HW1 SOL 414 6.370 22.371 12.391 1.00 0.00 H +ATOM 1245 HW2 SOL 414 6.970 23.801 11.891 1.00 0.00 H +ATOM 1246 OW SOL 415 4.730 23.621 1.910 1.00 0.00 O +ATOM 1247 HW1 SOL 415 5.340 24.421 1.950 1.00 0.00 H +ATOM 1248 HW2 SOL 415 3.780 23.931 1.980 1.00 0.00 H +ATOM 1249 OW SOL 416 1.590 29.991 14.661 1.00 0.00 O +ATOM 1250 HW1 SOL 416 1.810 29.381 15.421 1.00 0.00 H +ATOM 1251 HW2 SOL 416 1.690 29.501 13.801 1.00 0.00 H +ATOM 1252 OW SOL 417 13.471 29.211 12.341 1.00 0.00 O +ATOM 1253 HW1 SOL 417 13.711 28.581 11.601 1.00 0.00 H +ATOM 1254 HW2 SOL 417 12.571 29.611 12.161 1.00 0.00 H +ATOM 1255 OW SOL 418 13.021 27.171 3.090 1.00 0.00 O +ATOM 1256 HW1 SOL 418 12.161 26.861 3.510 1.00 0.00 H +ATOM 1257 HW2 SOL 418 12.981 27.031 2.100 1.00 0.00 H +ATOM 1258 OW SOL 419 0.830 31.201 10.221 1.00 0.00 O +ATOM 1259 HW1 SOL 419 0.780 31.191 11.221 1.00 0.00 H +ATOM 1260 HW2 SOL 419 0.000 30.791 9.841 1.00 0.00 H +ATOM 1261 OW SOL 420 9.030 19.481 1.330 1.00 0.00 O +ATOM 1262 HW1 SOL 420 9.540 19.491 0.470 1.00 0.00 H +ATOM 1263 HW2 SOL 420 9.590 19.061 2.040 1.00 0.00 H +ATOM 1264 OW SOL 421 17.261 19.971 5.230 1.00 0.00 O +ATOM 1265 HW1 SOL 421 17.991 19.801 4.560 1.00 0.00 H +ATOM 1266 HW2 SOL 421 16.951 19.101 5.610 1.00 0.00 H +ATOM 1267 OW SOL 422 12.801 27.891 6.720 1.00 0.00 O +ATOM 1268 HW1 SOL 422 13.401 27.081 6.740 1.00 0.00 H +ATOM 1269 HW2 SOL 422 13.201 28.581 6.120 1.00 0.00 H +ATOM 1270 OW SOL 423 18.411 20.371 9.631 1.00 0.00 O +ATOM 1271 HW1 SOL 423 18.801 19.521 9.271 1.00 0.00 H +ATOM 1272 HW2 SOL 423 17.431 20.391 9.441 1.00 0.00 H +ATOM 1273 OW SOL 424 2.630 21.881 7.200 1.00 0.00 O +ATOM 1274 HW1 SOL 424 1.840 22.391 6.860 1.00 0.00 H +ATOM 1275 HW2 SOL 424 2.540 21.731 8.180 1.00 0.00 H +ATOM 1276 OW SOL 425 8.220 28.641 13.721 1.00 0.00 O +ATOM 1277 HW1 SOL 425 8.620 28.631 12.801 1.00 0.00 H +ATOM 1278 HW2 SOL 425 8.320 29.561 14.121 1.00 0.00 H +ATOM 1279 OW SOL 426 9.160 27.721 2.910 1.00 0.00 O +ATOM 1280 HW1 SOL 426 9.790 28.101 2.230 1.00 0.00 H +ATOM 1281 HW2 SOL 426 9.560 26.891 3.300 1.00 0.00 H +ATOM 1282 OW SOL 427 3.720 0.271 14.901 1.00 0.00 O +ATOM 1283 HW1 SOL 427 3.590 1.201 14.561 1.00 0.00 H +ATOM 1284 HW2 SOL 427 2.880 -0.249 14.771 1.00 0.00 H +ATOM 1285 OW SOL 428 16.141 0.311 12.891 1.00 0.00 O +ATOM 1286 HW1 SOL 428 16.741 0.341 13.691 1.00 0.00 H +ATOM 1287 HW2 SOL 428 15.391 0.951 13.021 1.00 0.00 H +ATOM 1288 OW SOL 429 10.391 29.601 6.960 1.00 0.00 O +ATOM 1289 HW1 SOL 429 9.691 29.131 7.500 1.00 0.00 H +ATOM 1290 HW2 SOL 429 10.981 28.921 6.530 1.00 0.00 H +ATOM 1291 OW SOL 430 10.141 20.981 9.711 1.00 0.00 O +ATOM 1292 HW1 SOL 430 10.061 20.621 8.781 1.00 0.00 H +ATOM 1293 HW2 SOL 430 10.121 20.221 10.361 1.00 0.00 H +ATOM 1294 OW SOL 431 17.091 22.471 13.811 1.00 0.00 O +ATOM 1295 HW1 SOL 431 17.821 23.161 13.851 1.00 0.00 H +ATOM 1296 HW2 SOL 431 17.371 21.721 13.221 1.00 0.00 H +ATOM 1297 OW SOL 432 6.720 20.651 14.891 1.00 0.00 O +ATOM 1298 HW1 SOL 432 7.620 20.491 14.491 1.00 0.00 H +ATOM 1299 HW2 SOL 432 6.800 20.701 15.881 1.00 0.00 H +ATOM 1300 OW SOL 433 14.401 27.181 13.981 1.00 0.00 O +ATOM 1301 HW1 SOL 433 13.831 27.701 13.351 1.00 0.00 H +ATOM 1302 HW2 SOL 433 15.361 27.301 13.741 1.00 0.00 H +ATOM 1303 OW SOL 434 6.130 27.041 14.311 1.00 0.00 O +ATOM 1304 HW1 SOL 434 6.690 27.851 14.141 1.00 0.00 H +ATOM 1305 HW2 SOL 434 6.720 26.241 14.341 1.00 0.00 H +ATOM 1306 OW SOL 435 7.160 24.271 17.081 1.00 0.00 O +ATOM 1307 HW1 SOL 435 7.350 24.921 17.821 1.00 0.00 H +ATOM 1308 HW2 SOL 435 7.760 23.471 17.171 1.00 0.00 H +ATOM 1309 OW SOL 436 14.501 30.821 16.331 1.00 0.00 O +ATOM 1310 HW1 SOL 436 14.411 30.721 17.321 1.00 0.00 H +ATOM 1311 HW2 SOL 436 15.461 30.751 16.071 1.00 0.00 H +ATOM 1312 OW SOL 437 16.741 27.451 12.541 1.00 0.00 O +ATOM 1313 HW1 SOL 437 16.471 26.561 12.171 1.00 0.00 H +ATOM 1314 HW2 SOL 437 16.751 28.131 11.811 1.00 0.00 H +ATOM 1315 OW SOL 438 12.251 21.871 4.490 1.00 0.00 O +ATOM 1316 HW1 SOL 438 12.901 21.131 4.380 1.00 0.00 H +ATOM 1317 HW2 SOL 438 12.451 22.371 5.330 1.00 0.00 H +ATOM 1318 OW SOL 439 5.940 26.071 6.520 1.00 0.00 O +ATOM 1319 HW1 SOL 439 6.440 26.921 6.330 1.00 0.00 H +ATOM 1320 HW2 SOL 439 5.060 26.091 6.040 1.00 0.00 H +ATOM 1321 OW SOL 440 17.771 22.041 16.421 1.00 0.00 O +ATOM 1322 HW1 SOL 440 17.601 22.351 15.481 1.00 0.00 H +ATOM 1323 HW2 SOL 440 16.931 21.671 16.801 1.00 0.00 H +ATOM 1324 OW SOL 441 17.301 27.961 15.171 1.00 0.00 O +ATOM 1325 HW1 SOL 441 17.681 28.871 15.321 1.00 0.00 H +ATOM 1326 HW2 SOL 441 17.221 27.791 14.181 1.00 0.00 H +ATOM 1327 OW SOL 442 8.590 28.181 8.610 1.00 0.00 O +ATOM 1328 HW1 SOL 442 9.130 27.491 9.090 1.00 0.00 H +ATOM 1329 HW2 SOL 442 8.270 28.871 9.270 1.00 0.00 H +ATOM 1330 OW SOL 443 10.831 28.461 0.870 1.00 0.00 O +ATOM 1331 HW1 SOL 443 10.601 28.991 0.050 1.00 0.00 H +ATOM 1332 HW2 SOL 443 11.641 27.901 0.680 1.00 0.00 H +ATOM 1333 OW SOL 444 0.790 31.021 6.530 1.00 0.00 O +ATOM 1334 HW1 SOL 444 0.780 30.551 7.410 1.00 0.00 H +ATOM 1335 HW2 SOL 444 1.610 30.741 6.020 1.00 0.00 H +ATOM 1336 OW SOL 445 18.241 20.541 12.271 1.00 0.00 O +ATOM 1337 HW1 SOL 445 18.201 19.641 12.711 1.00 0.00 H +ATOM 1338 HW2 SOL 445 18.271 20.431 11.281 1.00 0.00 H +ATOM 1339 OW SOL 446 4.280 22.861 5.200 1.00 0.00 O +ATOM 1340 HW1 SOL 446 4.580 22.141 4.580 1.00 0.00 H +ATOM 1341 HW2 SOL 446 3.890 22.461 6.030 1.00 0.00 H +ATOM 1342 OW SOL 447 3.170 24.091 12.801 1.00 0.00 O +ATOM 1343 HW1 SOL 447 3.550 23.501 13.521 1.00 0.00 H +ATOM 1344 HW2 SOL 447 3.570 23.831 11.921 1.00 0.00 H +ATOM 1345 OW SOL 448 14.241 20.761 11.121 1.00 0.00 O +ATOM 1346 HW1 SOL 448 14.761 20.111 11.671 1.00 0.00 H +ATOM 1347 HW2 SOL 448 13.751 21.391 11.731 1.00 0.00 H +ATOM 1348 OW SOL 449 10.011 18.961 11.541 1.00 0.00 O +ATOM 1349 HW1 SOL 449 9.381 18.241 11.231 1.00 0.00 H +ATOM 1350 HW2 SOL 449 10.941 18.601 11.541 1.00 0.00 H +ATOM 1351 OW SOL 450 7.700 0.691 3.010 1.00 0.00 O +ATOM 1352 HW1 SOL 450 7.240 -0.179 3.180 1.00 0.00 H +ATOM 1353 HW2 SOL 450 8.610 0.661 3.420 1.00 0.00 H +ATOM 1354 OW SOL 451 13.521 19.141 1.680 1.00 0.00 O +ATOM 1355 HW1 SOL 451 13.871 18.731 0.840 1.00 0.00 H +ATOM 1356 HW2 SOL 451 12.621 18.761 1.880 1.00 0.00 H +ATOM 1357 OW SOL 452 13.001 23.151 6.910 1.00 0.00 O +ATOM 1358 HW1 SOL 452 12.411 23.951 6.950 1.00 0.00 H +ATOM 1359 HW2 SOL 452 13.151 22.801 7.840 1.00 0.00 H +ATOM 1360 OW SOL 453 15.931 20.831 8.820 1.00 0.00 O +ATOM 1361 HW1 SOL 453 15.091 20.821 9.360 1.00 0.00 H +ATOM 1362 HW2 SOL 453 15.951 21.661 8.260 1.00 0.00 H +ATOM 1363 OW SOL 454 0.390 29.391 3.000 1.00 0.00 O +ATOM 1364 HW1 SOL 454 1.380 29.281 2.910 1.00 0.00 H +ATOM 1365 HW2 SOL 454 -0.010 28.531 3.320 1.00 0.00 H +ATOM 1366 OW SOL 455 17.431 24.801 27.181 1.00 0.00 O +ATOM 1367 HW1 SOL 455 17.761 25.741 27.181 1.00 0.00 H +ATOM 1368 HW2 SOL 455 17.941 24.261 27.841 1.00 0.00 H +ATOM 1369 OW SOL 456 11.351 25.651 25.791 1.00 0.00 O +ATOM 1370 HW1 SOL 456 11.921 26.431 25.541 1.00 0.00 H +ATOM 1371 HW2 SOL 456 10.751 25.911 26.551 1.00 0.00 H +ATOM 1372 OW SOL 457 17.551 24.691 20.931 1.00 0.00 O +ATOM 1373 HW1 SOL 457 17.431 24.561 19.941 1.00 0.00 H +ATOM 1374 HW2 SOL 457 17.251 23.881 21.421 1.00 0.00 H +ATOM 1375 OW SOL 458 7.680 30.061 28.851 1.00 0.00 O +ATOM 1376 HW1 SOL 458 6.900 30.231 29.451 1.00 0.00 H +ATOM 1377 HW2 SOL 458 8.020 30.931 28.491 1.00 0.00 H +ATOM 1378 OW SOL 459 6.850 28.741 25.271 1.00 0.00 O +ATOM 1379 HW1 SOL 459 7.540 28.581 25.971 1.00 0.00 H +ATOM 1380 HW2 SOL 459 6.120 29.311 25.651 1.00 0.00 H +ATOM 1381 OW SOL 460 2.400 29.531 27.481 1.00 0.00 O +ATOM 1382 HW1 SOL 460 2.540 28.691 28.001 1.00 0.00 H +ATOM 1383 HW2 SOL 460 1.850 30.171 28.031 1.00 0.00 H +ATOM 1384 OW SOL 461 6.060 28.261 19.851 1.00 0.00 O +ATOM 1385 HW1 SOL 461 6.130 29.101 19.311 1.00 0.00 H +ATOM 1386 HW2 SOL 461 6.520 28.391 20.731 1.00 0.00 H +ATOM 1387 OW SOL 462 1.220 25.051 24.251 1.00 0.00 O +ATOM 1388 HW1 SOL 462 0.770 24.171 24.421 1.00 0.00 H +ATOM 1389 HW2 SOL 462 1.210 25.591 25.091 1.00 0.00 H +ATOM 1390 OW SOL 463 16.891 27.841 24.741 1.00 0.00 O +ATOM 1391 HW1 SOL 463 17.841 27.551 24.821 1.00 0.00 H +ATOM 1392 HW2 SOL 463 16.811 28.491 23.991 1.00 0.00 H +ATOM 1393 OW SOL 464 16.411 29.701 22.941 1.00 0.00 O +ATOM 1394 HW1 SOL 464 17.271 29.721 22.421 1.00 0.00 H +ATOM 1395 HW2 SOL 464 16.551 30.171 23.821 1.00 0.00 H +ATOM 1396 OW SOL 465 6.130 1.041 25.881 1.00 0.00 O +ATOM 1397 HW1 SOL 465 5.640 0.171 25.971 1.00 0.00 H +ATOM 1398 HW2 SOL 465 5.900 1.471 25.011 1.00 0.00 H +ATOM 1399 OW SOL 466 8.090 18.661 23.641 1.00 0.00 O +ATOM 1400 HW1 SOL 466 8.490 19.571 23.551 1.00 0.00 H +ATOM 1401 HW2 SOL 466 7.090 18.741 23.701 1.00 0.00 H +ATOM 1402 OW SOL 467 15.251 28.611 20.521 1.00 0.00 O +ATOM 1403 HW1 SOL 467 14.621 27.851 20.651 1.00 0.00 H +ATOM 1404 HW2 SOL 467 15.731 28.791 21.381 1.00 0.00 H +ATOM 1405 OW SOL 468 5.980 25.911 21.321 1.00 0.00 O +ATOM 1406 HW1 SOL 468 6.220 26.601 20.641 1.00 0.00 H +ATOM 1407 HW2 SOL 468 5.200 26.241 21.861 1.00 0.00 H +ATOM 1408 OW SOL 469 12.811 22.071 28.061 1.00 0.00 O +ATOM 1409 HW1 SOL 469 11.951 21.571 27.931 1.00 0.00 H +ATOM 1410 HW2 SOL 469 13.431 21.531 28.621 1.00 0.00 H +ATOM 1411 OW SOL 470 10.411 25.631 22.911 1.00 0.00 O +ATOM 1412 HW1 SOL 470 10.671 25.591 23.871 1.00 0.00 H +ATOM 1413 HW2 SOL 470 9.561 25.121 22.771 1.00 0.00 H +ATOM 1414 OW SOL 471 8.650 22.101 20.571 1.00 0.00 O +ATOM 1415 HW1 SOL 471 9.240 22.731 20.081 1.00 0.00 H +ATOM 1416 HW2 SOL 471 8.840 21.161 20.281 1.00 0.00 H +ATOM 1417 OW SOL 472 13.621 30.061 24.071 1.00 0.00 O +ATOM 1418 HW1 SOL 472 14.451 29.771 23.591 1.00 0.00 H +ATOM 1419 HW2 SOL 472 13.131 30.731 23.511 1.00 0.00 H +ATOM 1420 OW SOL 473 5.500 20.581 27.471 1.00 0.00 O +ATOM 1421 HW1 SOL 473 5.450 20.531 28.471 1.00 0.00 H +ATOM 1422 HW2 SOL 473 5.520 21.541 27.181 1.00 0.00 H +ATOM 1423 OW SOL 474 17.951 29.281 27.351 1.00 0.00 O +ATOM 1424 HW1 SOL 474 17.331 29.131 26.591 1.00 0.00 H +ATOM 1425 HW2 SOL 474 17.431 29.391 28.201 1.00 0.00 H +ATOM 1426 OW SOL 475 3.210 28.051 21.041 1.00 0.00 O +ATOM 1427 HW1 SOL 475 4.030 28.441 20.621 1.00 0.00 H +ATOM 1428 HW2 SOL 475 2.940 27.231 20.551 1.00 0.00 H +ATOM 1429 OW SOL 476 14.581 25.971 25.901 1.00 0.00 O +ATOM 1430 HW1 SOL 476 14.531 25.321 26.651 1.00 0.00 H +ATOM 1431 HW2 SOL 476 15.381 26.561 26.031 1.00 0.00 H +ATOM 1432 OW SOL 477 14.001 19.691 22.881 1.00 0.00 O +ATOM 1433 HW1 SOL 477 13.761 19.321 21.981 1.00 0.00 H +ATOM 1434 HW2 SOL 477 14.991 19.851 22.921 1.00 0.00 H +ATOM 1435 OW SOL 478 3.820 25.621 23.421 1.00 0.00 O +ATOM 1436 HW1 SOL 478 4.270 24.721 23.391 1.00 0.00 H +ATOM 1437 HW2 SOL 478 2.880 25.511 23.751 1.00 0.00 H +ATOM 1438 OW SOL 479 6.140 19.841 19.791 1.00 0.00 O +ATOM 1439 HW1 SOL 479 7.120 19.621 19.861 1.00 0.00 H +ATOM 1440 HW2 SOL 479 5.830 19.671 18.861 1.00 0.00 H +ATOM 1441 OW SOL 480 9.220 23.651 27.611 1.00 0.00 O +ATOM 1442 HW1 SOL 480 8.970 23.561 26.651 1.00 0.00 H +ATOM 1443 HW2 SOL 480 9.700 22.831 27.921 1.00 0.00 H +ATOM 1444 OW SOL 481 5.390 19.261 23.741 1.00 0.00 O +ATOM 1445 HW1 SOL 481 4.580 19.271 24.321 1.00 0.00 H +ATOM 1446 HW2 SOL 481 5.420 20.091 23.191 1.00 0.00 H +ATOM 1447 OW SOL 482 2.970 18.971 20.331 1.00 0.00 O +ATOM 1448 HW1 SOL 482 3.460 19.811 20.121 1.00 0.00 H +ATOM 1449 HW2 SOL 482 3.590 18.321 20.781 1.00 0.00 H +ATOM 1450 OW SOL 483 9.351 20.981 23.421 1.00 0.00 O +ATOM 1451 HW1 SOL 483 8.871 21.391 22.641 1.00 0.00 H +ATOM 1452 HW2 SOL 483 10.341 20.961 23.231 1.00 0.00 H +ATOM 1453 OW SOL 484 4.590 30.141 26.031 1.00 0.00 O +ATOM 1454 HW1 SOL 484 3.880 29.871 26.681 1.00 0.00 H +ATOM 1455 HW2 SOL 484 4.330 29.861 25.101 1.00 0.00 H +ATOM 1456 OW SOL 485 10.321 24.111 18.781 1.00 0.00 O +ATOM 1457 HW1 SOL 485 9.911 24.931 18.391 1.00 0.00 H +ATOM 1458 HW2 SOL 485 10.961 24.371 19.511 1.00 0.00 H +ATOM 1459 OW SOL 486 8.660 23.161 25.041 1.00 0.00 O +ATOM 1460 HW1 SOL 486 8.340 23.881 24.421 1.00 0.00 H +ATOM 1461 HW2 SOL 486 8.900 22.351 24.511 1.00 0.00 H +ATOM 1462 OW SOL 487 10.171 19.011 26.151 1.00 0.00 O +ATOM 1463 HW1 SOL 487 9.451 19.061 25.461 1.00 0.00 H +ATOM 1464 HW2 SOL 487 9.931 18.321 26.841 1.00 0.00 H +ATOM 1465 OW SOL 488 14.291 30.351 27.291 1.00 0.00 O +ATOM 1466 HW1 SOL 488 13.741 29.511 27.221 1.00 0.00 H +ATOM 1467 HW2 SOL 488 14.551 30.641 26.371 1.00 0.00 H +ATOM 1468 OW SOL 489 14.661 24.521 28.541 1.00 0.00 O +ATOM 1469 HW1 SOL 489 14.361 23.571 28.611 1.00 0.00 H +ATOM 1470 HW2 SOL 489 15.391 24.681 29.201 1.00 0.00 H +ATOM 1471 OW SOL 490 18.571 26.951 22.391 1.00 0.00 O +ATOM 1472 HW1 SOL 490 18.991 26.311 23.031 1.00 0.00 H +ATOM 1473 HW2 SOL 490 18.191 26.441 21.611 1.00 0.00 H +ATOM 1474 OW SOL 491 13.901 24.371 19.401 1.00 0.00 O +ATOM 1475 HW1 SOL 491 13.361 24.161 20.211 1.00 0.00 H +ATOM 1476 HW2 SOL 491 14.811 23.961 19.491 1.00 0.00 H +ATOM 1477 OW SOL 492 5.270 21.181 21.901 1.00 0.00 O +ATOM 1478 HW1 SOL 492 5.540 20.591 21.151 1.00 0.00 H +ATOM 1479 HW2 SOL 492 5.270 22.131 21.591 1.00 0.00 H +ATOM 1480 OW SOL 493 16.381 29.611 29.411 1.00 0.00 O +ATOM 1481 HW1 SOL 493 16.431 30.421 30.001 1.00 0.00 H +ATOM 1482 HW2 SOL 493 15.521 29.631 28.901 1.00 0.00 H +ATOM 1483 OW SOL 494 7.050 29.121 22.301 1.00 0.00 O +ATOM 1484 HW1 SOL 494 6.910 29.191 23.291 1.00 0.00 H +ATOM 1485 HW2 SOL 494 7.890 28.611 22.121 1.00 0.00 H +ATOM 1486 OW SOL 495 4.100 26.751 31.131 1.00 0.00 O +ATOM 1487 HW1 SOL 495 4.960 26.871 31.631 1.00 0.00 H +ATOM 1488 HW2 SOL 495 3.680 25.881 31.401 1.00 0.00 H +ATOM 1489 OW SOL 496 3.670 29.621 23.631 1.00 0.00 O +ATOM 1490 HW1 SOL 496 3.600 30.451 23.071 1.00 0.00 H +ATOM 1491 HW2 SOL 496 3.710 28.821 23.031 1.00 0.00 H +ATOM 1492 OW SOL 497 5.660 23.991 27.271 1.00 0.00 O +ATOM 1493 HW1 SOL 497 5.780 24.651 26.531 1.00 0.00 H +ATOM 1494 HW2 SOL 497 6.120 24.331 28.101 1.00 0.00 H +ATOM 1495 OW SOL 498 15.821 25.011 23.341 1.00 0.00 O +ATOM 1496 HW1 SOL 498 15.511 25.621 24.071 1.00 0.00 H +ATOM 1497 HW2 SOL 498 16.321 25.531 22.651 1.00 0.00 H +ATOM 1498 OW SOL 499 5.730 27.321 28.911 1.00 0.00 O +ATOM 1499 HW1 SOL 499 6.170 28.211 28.821 1.00 0.00 H +ATOM 1500 HW2 SOL 499 5.100 27.321 29.681 1.00 0.00 H +ATOM 1501 OW SOL 500 13.601 27.241 29.071 1.00 0.00 O +ATOM 1502 HW1 SOL 500 12.851 27.241 28.411 1.00 0.00 H +ATOM 1503 HW2 SOL 500 13.971 26.321 29.161 1.00 0.00 H +ATOM 1504 OW SOL 501 12.091 23.871 21.371 1.00 0.00 O +ATOM 1505 HW1 SOL 501 12.221 23.031 21.911 1.00 0.00 H +ATOM 1506 HW2 SOL 501 11.801 24.611 21.971 1.00 0.00 H +ATOM 1507 OW SOL 502 0.370 0.491 0.211 1.00 0.00 O +ATOM 1508 HW1 SOL 502 0.900 0.001 0.891 1.00 0.00 H +ATOM 1509 HW2 SOL 502 0.590 1.471 0.261 1.00 0.00 H +ATOM 1510 OW SOL 503 7.320 24.961 29.261 1.00 0.00 O +ATOM 1511 HW1 SOL 503 7.910 24.701 28.501 1.00 0.00 H +ATOM 1512 HW2 SOL 503 7.040 25.921 29.151 1.00 0.00 H +ATOM 1513 OW SOL 504 3.070 19.251 24.801 1.00 0.00 O +ATOM 1514 HW1 SOL 504 2.960 20.191 25.131 1.00 0.00 H +ATOM 1515 HW2 SOL 504 3.020 18.621 25.571 1.00 0.00 H +ATOM 1516 OW SOL 505 16.221 22.291 22.361 1.00 0.00 O +ATOM 1517 HW1 SOL 505 16.241 21.531 23.001 1.00 0.00 H +ATOM 1518 HW2 SOL 505 15.741 23.061 22.761 1.00 0.00 H +ATOM 1519 OW SOL 506 10.231 26.281 28.281 1.00 0.00 O +ATOM 1520 HW1 SOL 506 10.381 26.491 29.241 1.00 0.00 H +ATOM 1521 HW2 SOL 506 9.931 25.331 28.191 1.00 0.00 H +ATOM 1522 OW SOL 507 15.401 21.361 19.871 1.00 0.00 O +ATOM 1523 HW1 SOL 507 14.791 20.611 20.101 1.00 0.00 H +ATOM 1524 HW2 SOL 507 15.621 21.881 20.701 1.00 0.00 H +ATOM 1525 OW SOL 508 13.031 27.001 19.041 1.00 0.00 O +ATOM 1526 HW1 SOL 508 13.371 26.071 19.191 1.00 0.00 H +ATOM 1527 HW2 SOL 508 13.211 27.271 18.091 1.00 0.00 H +ATOM 1528 OW SOL 509 3.190 26.721 28.111 1.00 0.00 O +ATOM 1529 HW1 SOL 509 4.120 27.081 28.161 1.00 0.00 H +ATOM 1530 HW2 SOL 509 3.130 25.871 28.631 1.00 0.00 H +ATOM 1531 OW SOL 510 3.390 23.711 28.681 1.00 0.00 O +ATOM 1532 HW1 SOL 510 2.870 22.881 28.511 1.00 0.00 H +ATOM 1533 HW2 SOL 510 4.160 23.761 28.041 1.00 0.00 H +ATOM 1534 OW SOL 511 10.021 26.581 31.001 1.00 0.00 O +ATOM 1535 HW1 SOL 511 10.431 26.261 31.861 1.00 0.00 H +ATOM 1536 HW2 SOL 511 9.061 26.311 30.971 1.00 0.00 H +ATOM 1537 OW SOL 512 0.400 24.061 29.761 1.00 0.00 O +ATOM 1538 HW1 SOL 512 1.250 23.731 29.351 1.00 0.00 H +ATOM 1539 HW2 SOL 512 0.530 24.211 30.741 1.00 0.00 H +ATOM 1540 OW SOL 513 8.150 24.341 21.871 1.00 0.00 O +ATOM 1541 HW1 SOL 513 8.220 23.451 21.411 1.00 0.00 H +ATOM 1542 HW2 SOL 513 7.210 24.681 21.791 1.00 0.00 H +ATOM 1543 OW SOL 514 16.571 24.661 30.681 1.00 0.00 O +ATOM 1544 HW1 SOL 514 16.191 23.971 31.301 1.00 0.00 H +ATOM 1545 HW2 SOL 514 17.391 24.301 30.241 1.00 0.00 H +ATOM 1546 OW SOL 515 6.710 23.261 0.081 1.00 0.00 O +ATOM 1547 HW1 SOL 515 6.370 22.371 -0.219 1.00 0.00 H +ATOM 1548 HW2 SOL 515 6.970 23.801 -0.719 1.00 0.00 H +ATOM 1549 OW SOL 516 4.730 23.621 20.531 1.00 0.00 O +ATOM 1550 HW1 SOL 516 5.340 24.421 20.571 1.00 0.00 H +ATOM 1551 HW2 SOL 516 3.780 23.931 20.601 1.00 0.00 H +ATOM 1552 OW SOL 517 13.471 29.211 30.961 1.00 0.00 O +ATOM 1553 HW1 SOL 517 13.711 28.581 30.221 1.00 0.00 H +ATOM 1554 HW2 SOL 517 12.571 29.611 30.781 1.00 0.00 H +ATOM 1555 OW SOL 518 13.021 27.171 21.711 1.00 0.00 O +ATOM 1556 HW1 SOL 518 12.161 26.861 22.131 1.00 0.00 H +ATOM 1557 HW2 SOL 518 12.981 27.031 20.721 1.00 0.00 H +ATOM 1558 OW SOL 519 0.830 31.201 28.841 1.00 0.00 O +ATOM 1559 HW1 SOL 519 0.780 31.191 29.841 1.00 0.00 H +ATOM 1560 HW2 SOL 519 0.000 30.791 28.461 1.00 0.00 H +ATOM 1561 OW SOL 520 9.030 19.481 19.951 1.00 0.00 O +ATOM 1562 HW1 SOL 520 9.540 19.491 19.091 1.00 0.00 H +ATOM 1563 HW2 SOL 520 9.590 19.061 20.661 1.00 0.00 H +ATOM 1564 OW SOL 521 17.261 19.971 23.851 1.00 0.00 O +ATOM 1565 HW1 SOL 521 17.991 19.801 23.181 1.00 0.00 H +ATOM 1566 HW2 SOL 521 16.951 19.101 24.231 1.00 0.00 H +ATOM 1567 OW SOL 522 12.801 27.891 25.341 1.00 0.00 O +ATOM 1568 HW1 SOL 522 13.401 27.081 25.361 1.00 0.00 H +ATOM 1569 HW2 SOL 522 13.201 28.581 24.741 1.00 0.00 H +ATOM 1570 OW SOL 523 18.411 20.371 28.251 1.00 0.00 O +ATOM 1571 HW1 SOL 523 18.801 19.521 27.891 1.00 0.00 H +ATOM 1572 HW2 SOL 523 17.431 20.391 28.061 1.00 0.00 H +ATOM 1573 OW SOL 524 2.630 21.881 25.821 1.00 0.00 O +ATOM 1574 HW1 SOL 524 1.840 22.391 25.481 1.00 0.00 H +ATOM 1575 HW2 SOL 524 2.540 21.731 26.801 1.00 0.00 H +ATOM 1576 OW SOL 525 8.220 28.641 1.111 1.00 0.00 O +ATOM 1577 HW1 SOL 525 8.620 28.631 0.191 1.00 0.00 H +ATOM 1578 HW2 SOL 525 8.320 29.561 1.511 1.00 0.00 H +ATOM 1579 OW SOL 526 9.160 27.721 21.531 1.00 0.00 O +ATOM 1580 HW1 SOL 526 9.790 28.101 20.851 1.00 0.00 H +ATOM 1581 HW2 SOL 526 9.560 26.891 21.921 1.00 0.00 H +ATOM 1582 OW SOL 527 16.141 0.311 0.281 1.00 0.00 O +ATOM 1583 HW1 SOL 527 16.741 0.341 1.081 1.00 0.00 H +ATOM 1584 HW2 SOL 527 15.391 0.951 0.411 1.00 0.00 H +ATOM 1585 OW SOL 528 10.391 29.601 25.581 1.00 0.00 O +ATOM 1586 HW1 SOL 528 9.691 29.131 26.121 1.00 0.00 H +ATOM 1587 HW2 SOL 528 10.981 28.921 25.151 1.00 0.00 H +ATOM 1588 OW SOL 529 10.141 20.981 28.331 1.00 0.00 O +ATOM 1589 HW1 SOL 529 10.061 20.621 27.401 1.00 0.00 H +ATOM 1590 HW2 SOL 529 10.121 20.221 28.981 1.00 0.00 H +ATOM 1591 OW SOL 530 17.091 22.471 1.201 1.00 0.00 O +ATOM 1592 HW1 SOL 530 17.821 23.161 1.241 1.00 0.00 H +ATOM 1593 HW2 SOL 530 17.371 21.721 0.611 1.00 0.00 H +ATOM 1594 OW SOL 531 0.750 22.071 18.951 1.00 0.00 O +ATOM 1595 HW1 SOL 531 -0.170 21.791 18.661 1.00 0.00 H +ATOM 1596 HW2 SOL 531 1.060 22.841 18.391 1.00 0.00 H +ATOM 1597 OW SOL 532 16.741 27.451 31.161 1.00 0.00 O +ATOM 1598 HW1 SOL 532 16.471 26.561 30.791 1.00 0.00 H +ATOM 1599 HW2 SOL 532 16.751 28.131 30.431 1.00 0.00 H +ATOM 1600 OW SOL 533 12.251 21.871 23.111 1.00 0.00 O +ATOM 1601 HW1 SOL 533 12.901 21.131 23.001 1.00 0.00 H +ATOM 1602 HW2 SOL 533 12.451 22.371 23.951 1.00 0.00 H +ATOM 1603 OW SOL 534 5.940 26.071 25.141 1.00 0.00 O +ATOM 1604 HW1 SOL 534 6.440 26.921 24.951 1.00 0.00 H +ATOM 1605 HW2 SOL 534 5.060 26.091 24.661 1.00 0.00 H +ATOM 1606 OW SOL 535 8.590 28.181 27.231 1.00 0.00 O +ATOM 1607 HW1 SOL 535 9.130 27.491 27.711 1.00 0.00 H +ATOM 1608 HW2 SOL 535 8.270 28.871 27.891 1.00 0.00 H +ATOM 1609 OW SOL 536 10.831 28.461 19.491 1.00 0.00 O +ATOM 1610 HW1 SOL 536 10.601 28.991 18.671 1.00 0.00 H +ATOM 1611 HW2 SOL 536 11.641 27.901 19.301 1.00 0.00 H +ATOM 1612 OW SOL 537 0.790 31.021 25.151 1.00 0.00 O +ATOM 1613 HW1 SOL 537 0.780 30.551 26.031 1.00 0.00 H +ATOM 1614 HW2 SOL 537 1.610 30.741 24.641 1.00 0.00 H +ATOM 1615 OW SOL 538 18.241 20.541 30.891 1.00 0.00 O +ATOM 1616 HW1 SOL 538 18.201 19.641 31.331 1.00 0.00 H +ATOM 1617 HW2 SOL 538 18.271 20.431 29.901 1.00 0.00 H +ATOM 1618 OW SOL 539 4.280 22.861 23.821 1.00 0.00 O +ATOM 1619 HW1 SOL 539 4.580 22.141 23.201 1.00 0.00 H +ATOM 1620 HW2 SOL 539 3.890 22.461 24.651 1.00 0.00 H +ATOM 1621 OW SOL 540 14.241 20.761 29.741 1.00 0.00 O +ATOM 1622 HW1 SOL 540 14.761 20.111 30.291 1.00 0.00 H +ATOM 1623 HW2 SOL 540 13.751 21.391 30.351 1.00 0.00 H +ATOM 1624 OW SOL 541 10.011 18.961 30.161 1.00 0.00 O +ATOM 1625 HW1 SOL 541 9.381 18.241 29.851 1.00 0.00 H +ATOM 1626 HW2 SOL 541 10.941 18.601 30.161 1.00 0.00 H +ATOM 1627 OW SOL 542 7.700 0.691 21.631 1.00 0.00 O +ATOM 1628 HW1 SOL 542 7.240 -0.179 21.801 1.00 0.00 H +ATOM 1629 HW2 SOL 542 8.610 0.661 22.041 1.00 0.00 H +ATOM 1630 OW SOL 543 13.521 19.141 20.301 1.00 0.00 O +ATOM 1631 HW1 SOL 543 13.871 18.731 19.461 1.00 0.00 H +ATOM 1632 HW2 SOL 543 12.621 18.761 20.501 1.00 0.00 H +ATOM 1633 OW SOL 544 13.001 23.151 25.531 1.00 0.00 O +ATOM 1634 HW1 SOL 544 12.411 23.951 25.571 1.00 0.00 H +ATOM 1635 HW2 SOL 544 13.151 22.801 26.461 1.00 0.00 H +ATOM 1636 OW SOL 545 15.931 20.831 27.441 1.00 0.00 O +ATOM 1637 HW1 SOL 545 15.091 20.821 27.981 1.00 0.00 H +ATOM 1638 HW2 SOL 545 15.951 21.661 26.881 1.00 0.00 H +ATOM 1639 OW SOL 546 0.390 29.391 21.621 1.00 0.00 O +ATOM 1640 HW1 SOL 546 1.380 29.281 21.531 1.00 0.00 H +ATOM 1641 HW2 SOL 546 -0.010 28.531 21.941 1.00 0.00 H +ATOM 1642 OW SOL 547 20.921 6.280 1.130 1.00 0.00 O +ATOM 1643 HW1 SOL 547 19.991 6.260 1.500 1.00 0.00 H +ATOM 1644 HW2 SOL 547 20.931 5.890 0.210 1.00 0.00 H +ATOM 1645 OW SOL 548 20.871 2.750 9.961 1.00 0.00 O +ATOM 1646 HW1 SOL 548 21.221 2.580 10.881 1.00 0.00 H +ATOM 1647 HW2 SOL 548 19.991 2.300 9.841 1.00 0.00 H +ATOM 1648 OW SOL 549 18.811 3.680 6.470 1.00 0.00 O +ATOM 1649 HW1 SOL 549 17.991 4.110 6.860 1.00 0.00 H +ATOM 1650 HW2 SOL 549 18.531 2.950 5.840 1.00 0.00 H +ATOM 1651 OW SOL 550 24.311 12.751 11.651 1.00 0.00 O +ATOM 1652 HW1 SOL 550 23.381 12.681 11.281 1.00 0.00 H +ATOM 1653 HW2 SOL 550 24.421 13.641 12.091 1.00 0.00 H +ATOM 1654 OW SOL 551 29.971 7.030 7.170 1.00 0.00 O +ATOM 1655 HW1 SOL 551 30.541 7.810 6.920 1.00 0.00 H +ATOM 1656 HW2 SOL 551 29.371 7.290 7.930 1.00 0.00 H +ATOM 1657 OW SOL 552 26.301 11.441 10.231 1.00 0.00 O +ATOM 1658 HW1 SOL 552 25.521 11.611 10.831 1.00 0.00 H +ATOM 1659 HW2 SOL 552 26.641 12.311 9.871 1.00 0.00 H +ATOM 1660 OW SOL 553 27.121 7.980 18.231 1.00 0.00 O +ATOM 1661 HW1 SOL 553 27.081 8.740 18.881 1.00 0.00 H +ATOM 1662 HW2 SOL 553 27.341 8.340 17.321 1.00 0.00 H +ATOM 1663 OW SOL 554 25.471 10.121 6.650 1.00 0.00 O +ATOM 1664 HW1 SOL 554 26.161 9.961 7.350 1.00 0.00 H +ATOM 1665 HW2 SOL 554 24.741 10.691 7.030 1.00 0.00 H +ATOM 1666 OW SOL 555 25.481 11.611 18.031 1.00 0.00 O +ATOM 1667 HW1 SOL 555 26.081 12.401 18.171 1.00 0.00 H +ATOM 1668 HW2 SOL 555 24.621 11.921 17.621 1.00 0.00 H +ATOM 1669 OW SOL 556 21.971 14.351 10.611 1.00 0.00 O +ATOM 1670 HW1 SOL 556 21.191 14.041 10.081 1.00 0.00 H +ATOM 1671 HW2 SOL 556 22.551 14.931 10.041 1.00 0.00 H +ATOM 1672 OW SOL 557 23.001 3.920 14.991 1.00 0.00 O +ATOM 1673 HW1 SOL 557 23.821 3.360 15.081 1.00 0.00 H +ATOM 1674 HW2 SOL 557 22.191 3.340 15.031 1.00 0.00 H +ATOM 1675 OW SOL 558 20.931 17.131 4.830 1.00 0.00 O +ATOM 1676 HW1 SOL 558 21.271 17.901 5.370 1.00 0.00 H +ATOM 1677 HW2 SOL 558 21.371 17.131 3.930 1.00 0.00 H +ATOM 1678 OW SOL 559 29.891 13.411 16.901 1.00 0.00 O +ATOM 1679 HW1 SOL 559 30.361 13.411 17.781 1.00 0.00 H +ATOM 1680 HW2 SOL 559 29.411 12.541 16.791 1.00 0.00 H +ATOM 1681 OW SOL 560 20.921 14.341 5.380 1.00 0.00 O +ATOM 1682 HW1 SOL 560 20.661 15.301 5.380 1.00 0.00 H +ATOM 1683 HW2 SOL 560 20.211 13.801 5.830 1.00 0.00 H +ATOM 1684 OW SOL 561 21.021 10.911 8.860 1.00 0.00 O +ATOM 1685 HW1 SOL 561 21.161 10.071 9.380 1.00 0.00 H +ATOM 1686 HW2 SOL 561 20.471 11.551 9.410 1.00 0.00 H +ATOM 1687 OW SOL 562 24.821 17.861 14.391 1.00 0.00 O +ATOM 1688 HW1 SOL 562 23.901 17.691 14.741 1.00 0.00 H +ATOM 1689 HW2 SOL 562 25.101 18.781 14.651 1.00 0.00 H +ATOM 1690 OW SOL 563 24.681 9.641 1.230 1.00 0.00 O +ATOM 1691 HW1 SOL 563 24.751 10.481 0.690 1.00 0.00 H +ATOM 1692 HW2 SOL 563 25.141 9.771 2.110 1.00 0.00 H +ATOM 1693 OW SOL 564 19.841 6.430 5.630 1.00 0.00 O +ATOM 1694 HW1 SOL 564 19.391 5.550 5.800 1.00 0.00 H +ATOM 1695 HW2 SOL 564 19.831 6.970 6.470 1.00 0.00 H +ATOM 1696 OW SOL 565 18.891 15.961 1.170 1.00 0.00 O +ATOM 1697 HW1 SOL 565 18.701 15.001 1.380 1.00 0.00 H +ATOM 1698 HW2 SOL 565 18.561 16.541 1.920 1.00 0.00 H +ATOM 1699 OW SOL 566 19.751 7.370 15.971 1.00 0.00 O +ATOM 1700 HW1 SOL 566 20.631 7.240 16.421 1.00 0.00 H +ATOM 1701 HW2 SOL 566 19.621 8.340 15.751 1.00 0.00 H +ATOM 1702 OW SOL 567 24.751 13.651 7.260 1.00 0.00 O +ATOM 1703 HW1 SOL 567 24.261 12.781 7.350 1.00 0.00 H +ATOM 1704 HW2 SOL 567 24.521 14.081 6.390 1.00 0.00 H +ATOM 1705 OW SOL 568 26.711 0.040 5.020 1.00 0.00 O +ATOM 1706 HW1 SOL 568 27.111 0.950 4.930 1.00 0.00 H +ATOM 1707 HW2 SOL 568 25.711 0.120 5.080 1.00 0.00 H +ATOM 1708 OW SOL 569 20.591 9.761 12.641 1.00 0.00 O +ATOM 1709 HW1 SOL 569 21.481 9.311 12.501 1.00 0.00 H +ATOM 1710 HW2 SOL 569 19.861 9.111 12.451 1.00 0.00 H +ATOM 1711 OW SOL 570 21.791 2.510 18.011 1.00 0.00 O +ATOM 1712 HW1 SOL 570 22.501 3.220 18.071 1.00 0.00 H +ATOM 1713 HW2 SOL 570 20.911 2.900 18.291 1.00 0.00 H +ATOM 1714 OW SOL 571 2.051 14.171 9.531 1.00 0.00 O +ATOM 1715 HW1 SOL 571 1.461 14.231 10.331 1.00 0.00 H +ATOM 1716 HW2 SOL 571 1.901 13.291 9.071 1.00 0.00 H +ATOM 1717 OW SOL 572 24.601 7.290 2.700 1.00 0.00 O +ATOM 1718 HW1 SOL 572 24.841 7.980 2.020 1.00 0.00 H +ATOM 1719 HW2 SOL 572 23.821 7.620 3.240 1.00 0.00 H +ATOM 1720 OW SOL 573 0.201 3.450 9.441 1.00 0.00 O +ATOM 1721 HW1 SOL 573 -0.659 2.950 9.311 1.00 0.00 H +ATOM 1722 HW2 SOL 573 0.821 2.910 10.001 1.00 0.00 H +ATOM 1723 OW SOL 574 26.691 6.050 14.651 1.00 0.00 O +ATOM 1724 HW1 SOL 574 26.221 6.020 15.541 1.00 0.00 H +ATOM 1725 HW2 SOL 574 26.181 5.500 13.991 1.00 0.00 H +ATOM 1726 OW SOL 575 28.351 8.900 15.721 1.00 0.00 O +ATOM 1727 HW1 SOL 575 28.811 8.060 15.431 1.00 0.00 H +ATOM 1728 HW2 SOL 575 27.791 9.240 14.971 1.00 0.00 H +ATOM 1729 OW SOL 576 28.531 4.100 12.421 1.00 0.00 O +ATOM 1730 HW1 SOL 576 27.761 4.440 12.961 1.00 0.00 H +ATOM 1731 HW2 SOL 576 28.191 3.590 11.631 1.00 0.00 H +ATOM 1732 OW SOL 577 29.031 7.010 4.290 1.00 0.00 O +ATOM 1733 HW1 SOL 577 29.291 6.970 5.250 1.00 0.00 H +ATOM 1734 HW2 SOL 577 28.181 6.500 4.150 1.00 0.00 H +ATOM 1735 OW SOL 578 19.381 8.110 7.890 1.00 0.00 O +ATOM 1736 HW1 SOL 578 20.371 7.990 7.980 1.00 0.00 H +ATOM 1737 HW2 SOL 578 19.141 9.060 8.100 1.00 0.00 H +ATOM 1738 OW SOL 579 19.921 18.211 15.711 1.00 0.00 O +ATOM 1739 HW1 SOL 579 19.821 18.061 16.701 1.00 0.00 H +ATOM 1740 HW2 SOL 579 19.061 18.571 15.351 1.00 0.00 H +ATOM 1741 OW SOL 580 27.271 3.480 1.950 1.00 0.00 O +ATOM 1742 HW1 SOL 580 27.861 4.110 1.460 1.00 0.00 H +ATOM 1743 HW2 SOL 580 27.461 2.540 1.660 1.00 0.00 H +ATOM 1744 OW SOL 581 24.121 1.960 8.850 1.00 0.00 O +ATOM 1745 HW1 SOL 581 24.071 1.910 9.850 1.00 0.00 H +ATOM 1746 HW2 SOL 581 24.141 2.920 8.560 1.00 0.00 H +ATOM 1747 OW SOL 582 28.701 14.561 4.770 1.00 0.00 O +ATOM 1748 HW1 SOL 582 28.241 15.281 4.250 1.00 0.00 H +ATOM 1749 HW2 SOL 582 28.661 14.761 5.750 1.00 0.00 H +ATOM 1750 OW SOL 583 22.131 18.011 8.530 1.00 0.00 O +ATOM 1751 HW1 SOL 583 22.631 17.151 8.590 1.00 0.00 H +ATOM 1752 HW2 SOL 583 22.781 18.781 8.500 1.00 0.00 H +ATOM 1753 OW SOL 584 30.891 15.501 15.061 1.00 0.00 O +ATOM 1754 HW1 SOL 584 30.951 14.731 15.701 1.00 0.00 H +ATOM 1755 HW2 SOL 584 30.371 15.241 14.261 1.00 0.00 H +ATOM 1756 OW SOL 585 21.831 9.431 2.420 1.00 0.00 O +ATOM 1757 HW1 SOL 585 22.651 9.821 2.000 1.00 0.00 H +ATOM 1758 HW2 SOL 585 21.561 8.611 1.930 1.00 0.00 H +ATOM 1759 OW SOL 586 23.231 12.661 17.271 1.00 0.00 O +ATOM 1760 HW1 SOL 586 22.731 12.671 16.411 1.00 0.00 H +ATOM 1761 HW2 SOL 586 22.601 12.481 18.031 1.00 0.00 H +ATOM 1762 OW SOL 587 29.731 17.761 2.370 1.00 0.00 O +ATOM 1763 HW1 SOL 587 29.131 17.141 2.870 1.00 0.00 H +ATOM 1764 HW2 SOL 587 30.041 17.321 1.520 1.00 0.00 H +ATOM 1765 OW SOL 588 20.641 2.850 14.981 1.00 0.00 O +ATOM 1766 HW1 SOL 588 19.841 3.450 14.851 1.00 0.00 H +ATOM 1767 HW2 SOL 588 20.541 2.360 15.841 1.00 0.00 H +ATOM 1768 OW SOL 589 23.261 17.431 3.230 1.00 0.00 O +ATOM 1769 HW1 SOL 589 23.591 17.821 4.090 1.00 0.00 H +ATOM 1770 HW2 SOL 589 24.021 17.361 2.580 1.00 0.00 H +ATOM 1771 OW SOL 590 21.111 17.851 12.411 1.00 0.00 O +ATOM 1772 HW1 SOL 590 21.681 17.201 12.911 1.00 0.00 H +ATOM 1773 HW2 SOL 590 20.951 17.521 11.481 1.00 0.00 H +ATOM 1774 OW SOL 591 28.021 16.981 9.040 1.00 0.00 O +ATOM 1775 HW1 SOL 591 28.821 16.411 9.250 1.00 0.00 H +ATOM 1776 HW2 SOL 591 27.531 16.581 8.270 1.00 0.00 H +ATOM 1777 OW SOL 592 22.441 7.000 4.800 1.00 0.00 O +ATOM 1778 HW1 SOL 592 22.891 6.100 4.770 1.00 0.00 H +ATOM 1779 HW2 SOL 592 21.501 6.890 5.130 1.00 0.00 H +ATOM 1780 OW SOL 593 24.761 1.220 1.170 1.00 0.00 O +ATOM 1781 HW1 SOL 593 25.741 1.000 1.240 1.00 0.00 H +ATOM 1782 HW2 SOL 593 24.451 1.050 0.240 1.00 0.00 H +ATOM 1783 OW SOL 594 26.431 2.640 17.491 1.00 0.00 O +ATOM 1784 HW1 SOL 594 27.101 2.030 17.921 1.00 0.00 H +ATOM 1785 HW2 SOL 594 25.701 2.830 18.141 1.00 0.00 H +ATOM 1786 OW SOL 595 27.501 15.141 11.951 1.00 0.00 O +ATOM 1787 HW1 SOL 595 27.271 14.891 11.011 1.00 0.00 H +ATOM 1788 HW2 SOL 595 28.111 14.451 12.341 1.00 0.00 H +ATOM 1789 OW SOL 596 26.651 14.021 9.240 1.00 0.00 O +ATOM 1790 HW1 SOL 596 27.551 14.161 8.820 1.00 0.00 H +ATOM 1791 HW2 SOL 596 25.941 14.041 8.530 1.00 0.00 H +ATOM 1792 OW SOL 597 27.841 5.030 8.990 1.00 0.00 O +ATOM 1793 HW1 SOL 597 27.591 4.940 8.030 1.00 0.00 H +ATOM 1794 HW2 SOL 597 28.321 4.210 9.300 1.00 0.00 H +ATOM 1795 OW SOL 598 24.011 0.640 5.120 1.00 0.00 O +ATOM 1796 HW1 SOL 598 23.201 0.650 5.700 1.00 0.00 H +ATOM 1797 HW2 SOL 598 24.041 1.470 4.570 1.00 0.00 H +ATOM 1798 OW SOL 599 1.731 11.881 0.410 1.00 0.00 O +ATOM 1799 HW1 SOL 599 2.051 11.121 0.980 1.00 0.00 H +ATOM 1800 HW2 SOL 599 0.811 12.151 0.710 1.00 0.00 H +ATOM 1801 OW SOL 600 21.591 0.350 1.710 1.00 0.00 O +ATOM 1802 HW1 SOL 600 22.081 1.190 1.500 1.00 0.00 H +ATOM 1803 HW2 SOL 600 22.211 -0.300 2.160 1.00 0.00 H +ATOM 1804 OW SOL 601 27.971 2.360 4.800 1.00 0.00 O +ATOM 1805 HW1 SOL 601 27.491 2.770 4.020 1.00 0.00 H +ATOM 1806 HW2 SOL 601 28.961 2.340 4.610 1.00 0.00 H +ATOM 1807 OW SOL 602 29.381 6.830 14.641 1.00 0.00 O +ATOM 1808 HW1 SOL 602 28.581 6.220 14.671 1.00 0.00 H +ATOM 1809 HW2 SOL 602 30.191 6.300 14.401 1.00 0.00 H +ATOM 1810 OW SOL 603 30.891 15.701 7.930 1.00 0.00 O +ATOM 1811 HW1 SOL 603 31.101 16.441 7.280 1.00 0.00 H +ATOM 1812 HW2 SOL 603 31.571 15.701 8.660 1.00 0.00 H +ATOM 1813 OW SOL 604 23.211 11.521 7.410 1.00 0.00 O +ATOM 1814 HW1 SOL 604 22.501 11.251 8.060 1.00 0.00 H +ATOM 1815 HW2 SOL 604 22.951 11.241 6.480 1.00 0.00 H +ATOM 1816 OW SOL 605 0.101 17.971 5.910 1.00 0.00 O +ATOM 1817 HW1 SOL 605 0.541 18.611 5.270 1.00 0.00 H +ATOM 1818 HW2 SOL 605 -0.399 18.491 6.610 1.00 0.00 H +ATOM 1819 OW SOL 606 28.941 5.490 0.160 1.00 0.00 O +ATOM 1820 HW1 SOL 606 28.531 6.310 -0.230 1.00 0.00 H +ATOM 1821 HW2 SOL 606 29.581 5.750 0.890 1.00 0.00 H +ATOM 1822 OW SOL 607 19.401 5.560 13.861 1.00 0.00 O +ATOM 1823 HW1 SOL 607 20.321 5.550 13.451 1.00 0.00 H +ATOM 1824 HW2 SOL 607 19.341 6.300 14.531 1.00 0.00 H +ATOM 1825 OW SOL 608 24.231 2.220 11.471 1.00 0.00 O +ATOM 1826 HW1 SOL 608 24.611 1.380 11.841 1.00 0.00 H +ATOM 1827 HW2 SOL 608 23.351 2.410 11.911 1.00 0.00 H +ATOM 1828 OW SOL 609 27.281 4.540 6.420 1.00 0.00 O +ATOM 1829 HW1 SOL 609 26.961 5.260 5.800 1.00 0.00 H +ATOM 1830 HW2 SOL 609 27.521 3.730 5.890 1.00 0.00 H +ATOM 1831 OW SOL 610 28.791 0.390 7.530 1.00 0.00 O +ATOM 1832 HW1 SOL 610 28.071 0.440 6.840 1.00 0.00 H +ATOM 1833 HW2 SOL 610 28.551 -0.300 8.220 1.00 0.00 H +ATOM 1834 OW SOL 611 23.501 13.851 1.740 1.00 0.00 O +ATOM 1835 HW1 SOL 611 22.631 13.701 2.210 1.00 0.00 H +ATOM 1836 HW2 SOL 611 23.331 14.111 0.790 1.00 0.00 H +ATOM 1837 OW SOL 612 23.891 2.560 3.280 1.00 0.00 O +ATOM 1838 HW1 SOL 612 24.161 1.970 2.530 1.00 0.00 H +ATOM 1839 HW2 SOL 612 23.891 3.510 2.970 1.00 0.00 H +ATOM 1840 OW SOL 613 29.261 13.471 13.401 1.00 0.00 O +ATOM 1841 HW1 SOL 613 28.461 13.241 13.951 1.00 0.00 H +ATOM 1842 HW2 SOL 613 30.091 13.211 13.891 1.00 0.00 H +ATOM 1843 OW SOL 614 29.731 11.951 11.001 1.00 0.00 O +ATOM 1844 HW1 SOL 614 29.331 12.391 11.811 1.00 0.00 H +ATOM 1845 HW2 SOL 614 29.321 12.321 10.171 1.00 0.00 H +ATOM 1846 OW SOL 615 27.771 0.890 14.021 1.00 0.00 O +ATOM 1847 HW1 SOL 615 28.021 0.690 13.071 1.00 0.00 H +ATOM 1848 HW2 SOL 615 28.491 1.450 14.441 1.00 0.00 H +ATOM 1849 OW SOL 616 28.421 11.161 17.191 1.00 0.00 O +ATOM 1850 HW1 SOL 616 27.431 11.221 17.291 1.00 0.00 H +ATOM 1851 HW2 SOL 616 28.651 10.361 16.631 1.00 0.00 H +ATOM 1852 OW SOL 617 25.671 10.501 3.680 1.00 0.00 O +ATOM 1853 HW1 SOL 617 25.531 10.571 4.670 1.00 0.00 H +ATOM 1854 HW2 SOL 617 26.511 9.991 3.500 1.00 0.00 H +ATOM 1855 OW SOL 618 22.721 8.130 12.511 1.00 0.00 O +ATOM 1856 HW1 SOL 618 23.581 8.250 13.011 1.00 0.00 H +ATOM 1857 HW2 SOL 618 22.301 7.260 12.781 1.00 0.00 H +ATOM 1858 OW SOL 619 0.131 3.860 12.621 1.00 0.00 O +ATOM 1859 HW1 SOL 619 0.341 4.600 13.261 1.00 0.00 H +ATOM 1860 HW2 SOL 619 -0.759 4.030 12.191 1.00 0.00 H +ATOM 1861 OW SOL 620 19.261 15.641 13.311 1.00 0.00 O +ATOM 1862 HW1 SOL 620 18.801 16.461 12.971 1.00 0.00 H +ATOM 1863 HW2 SOL 620 20.241 15.831 13.401 1.00 0.00 H +ATOM 1864 OW SOL 621 22.291 11.001 5.010 1.00 0.00 O +ATOM 1865 HW1 SOL 621 22.221 11.831 4.450 1.00 0.00 H +ATOM 1866 HW2 SOL 621 22.331 10.201 4.410 1.00 0.00 H +ATOM 1867 OW SOL 622 24.281 5.370 8.650 1.00 0.00 O +ATOM 1868 HW1 SOL 622 24.401 6.030 7.910 1.00 0.00 H +ATOM 1869 HW2 SOL 622 24.741 5.710 9.480 1.00 0.00 H +ATOM 1870 OW SOL 623 31.141 13.481 3.880 1.00 0.00 O +ATOM 1871 HW1 SOL 623 31.641 14.251 4.280 1.00 0.00 H +ATOM 1872 HW2 SOL 623 30.191 13.501 4.200 1.00 0.00 H +ATOM 1873 OW SOL 624 22.161 15.101 13.291 1.00 0.00 O +ATOM 1874 HW1 SOL 624 21.951 14.661 12.421 1.00 0.00 H +ATOM 1875 HW2 SOL 624 23.131 15.361 13.321 1.00 0.00 H +ATOM 1876 OW SOL 625 22.641 7.510 15.981 1.00 0.00 O +ATOM 1877 HW1 SOL 625 23.321 8.060 15.511 1.00 0.00 H +ATOM 1878 HW2 SOL 625 23.041 6.630 16.251 1.00 0.00 H +ATOM 1879 OW SOL 626 28.751 1.050 17.701 1.00 0.00 O +ATOM 1880 HW1 SOL 626 28.811 1.900 17.181 1.00 0.00 H +ATOM 1881 HW2 SOL 626 29.071 0.290 17.131 1.00 0.00 H +ATOM 1882 OW SOL 627 23.661 0.500 17.401 1.00 0.00 O +ATOM 1883 HW1 SOL 627 23.241 -0.070 16.701 1.00 0.00 H +ATOM 1884 HW2 SOL 627 23.001 1.190 17.721 1.00 0.00 H +ATOM 1885 OW SOL 628 24.351 8.700 10.291 1.00 0.00 O +ATOM 1886 HW1 SOL 628 24.791 9.590 10.201 1.00 0.00 H +ATOM 1887 HW2 SOL 628 23.721 8.700 11.061 1.00 0.00 H +ATOM 1888 OW SOL 629 0.991 8.620 10.451 1.00 0.00 O +ATOM 1889 HW1 SOL 629 0.241 8.620 9.791 1.00 0.00 H +ATOM 1890 HW2 SOL 629 1.361 7.700 10.541 1.00 0.00 H +ATOM 1891 OW SOL 630 30.711 5.250 2.750 1.00 0.00 O +ATOM 1892 HW1 SOL 630 30.841 4.410 3.290 1.00 0.00 H +ATOM 1893 HW2 SOL 630 30.421 5.990 3.350 1.00 0.00 H +ATOM 1894 OW SOL 631 21.691 2.130 12.311 1.00 0.00 O +ATOM 1895 HW1 SOL 631 21.461 2.500 13.211 1.00 0.00 H +ATOM 1896 HW2 SOL 631 21.391 1.180 12.251 1.00 0.00 H +ATOM 1897 OW SOL 632 18.991 13.101 12.821 1.00 0.00 O +ATOM 1898 HW1 SOL 632 19.521 12.611 13.501 1.00 0.00 H +ATOM 1899 HW2 SOL 632 19.211 14.081 12.871 1.00 0.00 H +ATOM 1900 OW SOL 633 25.941 6.340 10.641 1.00 0.00 O +ATOM 1901 HW1 SOL 633 26.531 6.080 9.881 1.00 0.00 H +ATOM 1902 HW2 SOL 633 25.661 7.300 10.531 1.00 0.00 H +ATOM 1903 OW SOL 634 21.691 0.630 6.180 1.00 0.00 O +ATOM 1904 HW1 SOL 634 21.581 1.570 6.510 1.00 0.00 H +ATOM 1905 HW2 SOL 634 21.641 0.000 6.950 1.00 0.00 H +ATOM 1906 OW SOL 635 28.851 7.660 9.661 1.00 0.00 O +ATOM 1907 HW1 SOL 635 29.001 7.870 10.621 1.00 0.00 H +ATOM 1908 HW2 SOL 635 28.551 6.710 9.571 1.00 0.00 H +ATOM 1909 OW SOL 636 28.421 15.731 17.001 1.00 0.00 O +ATOM 1910 HW1 SOL 636 28.221 16.171 16.121 1.00 0.00 H +ATOM 1911 HW2 SOL 636 28.811 14.821 16.841 1.00 0.00 H +ATOM 1912 OW SOL 637 22.121 8.980 18.041 1.00 0.00 O +ATOM 1913 HW1 SOL 637 22.881 9.420 18.521 1.00 0.00 H +ATOM 1914 HW2 SOL 637 22.471 8.510 17.221 1.00 0.00 H +ATOM 1915 OW SOL 638 29.301 13.331 8.490 1.00 0.00 O +ATOM 1916 HW1 SOL 638 29.371 12.491 7.940 1.00 0.00 H +ATOM 1917 HW2 SOL 638 29.921 14.021 8.130 1.00 0.00 H +ATOM 1918 OW SOL 639 21.811 8.100 9.491 1.00 0.00 O +ATOM 1919 HW1 SOL 639 22.741 8.460 9.541 1.00 0.00 H +ATOM 1920 HW2 SOL 639 21.751 7.250 10.011 1.00 0.00 H +ATOM 1921 OW SOL 640 22.011 5.090 10.061 1.00 0.00 O +ATOM 1922 HW1 SOL 640 21.491 4.260 9.891 1.00 0.00 H +ATOM 1923 HW2 SOL 640 22.781 5.140 9.421 1.00 0.00 H +ATOM 1924 OW SOL 641 30.001 3.800 16.781 1.00 0.00 O +ATOM 1925 HW1 SOL 641 29.551 4.430 17.421 1.00 0.00 H +ATOM 1926 HW2 SOL 641 30.931 4.110 16.611 1.00 0.00 H +ATOM 1927 OW SOL 642 30.221 2.070 14.771 1.00 0.00 O +ATOM 1928 HW1 SOL 642 30.221 2.710 15.541 1.00 0.00 H +ATOM 1929 HW2 SOL 642 30.501 2.550 13.941 1.00 0.00 H +ATOM 1930 OW SOL 643 18.701 13.261 2.000 1.00 0.00 O +ATOM 1931 HW1 SOL 643 17.771 13.471 1.690 1.00 0.00 H +ATOM 1932 HW2 SOL 643 18.801 12.271 2.130 1.00 0.00 H +ATOM 1933 OW SOL 644 19.501 18.011 9.270 1.00 0.00 O +ATOM 1934 HW1 SOL 644 19.081 17.151 9.000 1.00 0.00 H +ATOM 1935 HW2 SOL 644 20.441 18.041 8.930 1.00 0.00 H +ATOM 1936 OW SOL 645 23.661 15.681 9.100 1.00 0.00 O +ATOM 1937 HW1 SOL 645 24.321 16.421 9.190 1.00 0.00 H +ATOM 1938 HW2 SOL 645 24.101 14.891 8.680 1.00 0.00 H +ATOM 1939 OW SOL 646 28.641 7.960 12.381 1.00 0.00 O +ATOM 1940 HW1 SOL 646 29.051 7.640 13.241 1.00 0.00 H +ATOM 1941 HW2 SOL 646 27.681 7.690 12.351 1.00 0.00 H +ATOM 1942 OW SOL 647 19.021 5.440 11.141 1.00 0.00 O +ATOM 1943 HW1 SOL 647 19.871 5.110 10.731 1.00 0.00 H +ATOM 1944 HW2 SOL 647 19.151 5.590 12.121 1.00 0.00 H +ATOM 1945 OW SOL 648 20.511 5.200 17.221 1.00 0.00 O +ATOM 1946 HW1 SOL 648 21.101 4.800 16.521 1.00 0.00 H +ATOM 1947 HW2 SOL 648 19.931 5.910 16.811 1.00 0.00 H +ATOM 1948 OW SOL 649 26.771 5.720 3.250 1.00 0.00 O +ATOM 1949 HW1 SOL 649 26.841 4.830 2.790 1.00 0.00 H +ATOM 1950 HW2 SOL 649 25.831 6.060 3.170 1.00 0.00 H +ATOM 1951 OW SOL 650 21.141 15.641 17.441 1.00 0.00 O +ATOM 1952 HW1 SOL 650 20.841 16.211 18.201 1.00 0.00 H +ATOM 1953 HW2 SOL 650 21.071 14.671 17.701 1.00 0.00 H +ATOM 1954 OW SOL 651 25.331 4.640 12.691 1.00 0.00 O +ATOM 1955 HW1 SOL 651 24.991 3.750 12.391 1.00 0.00 H +ATOM 1956 HW2 SOL 651 25.591 5.180 11.891 1.00 0.00 H +ATOM 1957 OW SOL 652 27.921 16.781 14.651 1.00 0.00 O +ATOM 1958 HW1 SOL 652 27.681 16.601 13.701 1.00 0.00 H +ATOM 1959 HW2 SOL 652 28.221 17.721 14.751 1.00 0.00 H +ATOM 1960 OW SOL 653 23.351 5.000 1.910 1.00 0.00 O +ATOM 1961 HW1 SOL 653 23.961 5.800 1.950 1.00 0.00 H +ATOM 1962 HW2 SOL 653 22.401 5.310 1.980 1.00 0.00 H +ATOM 1963 OW SOL 654 20.211 11.371 14.661 1.00 0.00 O +ATOM 1964 HW1 SOL 654 20.431 10.761 15.421 1.00 0.00 H +ATOM 1965 HW2 SOL 654 20.311 10.881 13.801 1.00 0.00 H +ATOM 1966 OW SOL 655 0.861 10.591 12.341 1.00 0.00 O +ATOM 1967 HW1 SOL 655 1.101 9.961 11.601 1.00 0.00 H +ATOM 1968 HW2 SOL 655 -0.039 10.991 12.161 1.00 0.00 H +ATOM 1969 OW SOL 656 31.141 17.311 11.281 1.00 0.00 O +ATOM 1970 HW1 SOL 656 31.981 17.361 10.741 1.00 0.00 H +ATOM 1971 HW2 SOL 656 30.911 16.351 11.461 1.00 0.00 H +ATOM 1972 OW SOL 657 19.451 12.581 10.221 1.00 0.00 O +ATOM 1973 HW1 SOL 657 19.401 12.571 11.221 1.00 0.00 H +ATOM 1974 HW2 SOL 657 18.621 12.171 9.841 1.00 0.00 H +ATOM 1975 OW SOL 658 25.501 16.621 17.161 1.00 0.00 O +ATOM 1976 HW1 SOL 658 24.941 17.431 17.251 1.00 0.00 H +ATOM 1977 HW2 SOL 658 26.021 16.661 16.301 1.00 0.00 H +ATOM 1978 OW SOL 659 27.651 0.860 1.330 1.00 0.00 O +ATOM 1979 HW1 SOL 659 28.161 0.870 0.470 1.00 0.00 H +ATOM 1980 HW2 SOL 659 28.211 0.440 2.040 1.00 0.00 H +ATOM 1981 OW SOL 660 1.271 15.731 4.770 1.00 0.00 O +ATOM 1982 HW1 SOL 660 1.941 15.851 4.030 1.00 0.00 H +ATOM 1983 HW2 SOL 660 0.871 16.621 5.000 1.00 0.00 H +ATOM 1984 OW SOL 661 19.921 17.941 18.511 1.00 0.00 O +ATOM 1985 HW1 SOL 661 19.511 17.201 19.041 1.00 0.00 H +ATOM 1986 HW2 SOL 661 20.561 18.451 19.091 1.00 0.00 H +ATOM 1987 OW SOL 662 0.191 9.270 6.720 1.00 0.00 O +ATOM 1988 HW1 SOL 662 0.791 8.460 6.740 1.00 0.00 H +ATOM 1989 HW2 SOL 662 0.591 9.960 6.120 1.00 0.00 H +ATOM 1990 OW SOL 663 26.921 12.731 14.221 1.00 0.00 O +ATOM 1991 HW1 SOL 663 26.871 13.061 15.171 1.00 0.00 H +ATOM 1992 HW2 SOL 663 26.061 12.921 13.761 1.00 0.00 H +ATOM 1993 OW SOL 664 25.341 16.161 1.540 1.00 0.00 O +ATOM 1994 HW1 SOL 664 25.431 16.261 0.550 1.00 0.00 H +ATOM 1995 HW2 SOL 664 24.941 15.271 1.750 1.00 0.00 H +ATOM 1996 OW SOL 665 21.251 3.260 7.200 1.00 0.00 O +ATOM 1997 HW1 SOL 665 20.461 3.770 6.860 1.00 0.00 H +ATOM 1998 HW2 SOL 665 21.161 3.110 8.180 1.00 0.00 H +ATOM 1999 OW SOL 666 30.561 16.121 0.310 1.00 0.00 O +ATOM 2000 HW1 SOL 666 30.621 15.191 0.680 1.00 0.00 H +ATOM 2001 HW2 SOL 666 29.971 16.121 -0.490 1.00 0.00 H +ATOM 2002 OW SOL 667 26.841 10.021 13.721 1.00 0.00 O +ATOM 2003 HW1 SOL 667 27.241 10.011 12.801 1.00 0.00 H +ATOM 2004 HW2 SOL 667 26.941 10.941 14.121 1.00 0.00 H +ATOM 2005 OW SOL 668 27.781 9.100 2.910 1.00 0.00 O +ATOM 2006 HW1 SOL 668 28.411 9.480 2.230 1.00 0.00 H +ATOM 2007 HW2 SOL 668 28.181 8.270 3.300 1.00 0.00 H +ATOM 2008 OW SOL 669 22.341 12.881 14.901 1.00 0.00 O +ATOM 2009 HW1 SOL 669 22.211 13.811 14.561 1.00 0.00 H +ATOM 2010 HW2 SOL 669 21.501 12.361 14.771 1.00 0.00 H +ATOM 2011 OW SOL 670 29.011 10.981 6.960 1.00 0.00 O +ATOM 2012 HW1 SOL 670 28.311 10.511 7.500 1.00 0.00 H +ATOM 2013 HW2 SOL 670 29.601 10.301 6.530 1.00 0.00 H +ATOM 2014 OW SOL 671 28.761 2.360 9.711 1.00 0.00 O +ATOM 2015 HW1 SOL 671 28.681 2.000 8.781 1.00 0.00 H +ATOM 2016 HW2 SOL 671 28.741 1.600 10.361 1.00 0.00 H +ATOM 2017 OW SOL 672 24.521 14.871 4.910 1.00 0.00 O +ATOM 2018 HW1 SOL 672 24.941 14.291 4.210 1.00 0.00 H +ATOM 2019 HW2 SOL 672 24.081 15.661 4.470 1.00 0.00 H +ATOM 2020 OW SOL 673 21.171 13.481 2.900 1.00 0.00 O +ATOM 2021 HW1 SOL 673 20.211 13.491 2.630 1.00 0.00 H +ATOM 2022 HW2 SOL 673 21.291 14.011 3.740 1.00 0.00 H +ATOM 2023 OW SOL 674 19.671 10.131 17.261 1.00 0.00 O +ATOM 2024 HW1 SOL 674 18.901 9.801 17.801 1.00 0.00 H +ATOM 2025 HW2 SOL 674 20.521 9.831 17.681 1.00 0.00 H +ATOM 2026 OW SOL 675 25.341 2.030 14.891 1.00 0.00 O +ATOM 2027 HW1 SOL 675 26.241 1.870 14.491 1.00 0.00 H +ATOM 2028 HW2 SOL 675 25.421 2.080 15.881 1.00 0.00 H +ATOM 2029 OW SOL 676 19.341 1.660 3.180 1.00 0.00 O +ATOM 2030 HW1 SOL 676 19.171 2.490 2.640 1.00 0.00 H +ATOM 2031 HW2 SOL 676 20.241 1.290 2.960 1.00 0.00 H +ATOM 2032 OW SOL 677 30.451 13.351 1.190 1.00 0.00 O +ATOM 2033 HW1 SOL 677 29.461 13.241 1.210 1.00 0.00 H +ATOM 2034 HW2 SOL 677 30.791 13.501 2.120 1.00 0.00 H +ATOM 2035 OW SOL 678 24.751 8.420 14.311 1.00 0.00 O +ATOM 2036 HW1 SOL 678 25.311 9.230 14.141 1.00 0.00 H +ATOM 2037 HW2 SOL 678 25.341 7.620 14.341 1.00 0.00 H +ATOM 2038 OW SOL 679 25.781 5.650 17.081 1.00 0.00 O +ATOM 2039 HW1 SOL 679 25.971 6.300 17.821 1.00 0.00 H +ATOM 2040 HW2 SOL 679 26.381 4.850 17.171 1.00 0.00 H +ATOM 2041 OW SOL 680 22.521 17.411 15.601 1.00 0.00 O +ATOM 2042 HW1 SOL 680 21.611 17.821 15.581 1.00 0.00 H +ATOM 2043 HW2 SOL 680 22.451 16.471 15.921 1.00 0.00 H +ATOM 2044 OW SOL 681 30.871 3.250 4.490 1.00 0.00 O +ATOM 2045 HW1 SOL 681 31.521 2.510 4.380 1.00 0.00 H +ATOM 2046 HW2 SOL 681 31.071 3.750 5.330 1.00 0.00 H +ATOM 2047 OW SOL 682 24.561 7.450 6.520 1.00 0.00 O +ATOM 2048 HW1 SOL 682 25.061 8.300 6.330 1.00 0.00 H +ATOM 2049 HW2 SOL 682 23.681 7.470 6.040 1.00 0.00 H +ATOM 2050 OW SOL 683 27.211 13.741 0.160 1.00 0.00 O +ATOM 2051 HW1 SOL 683 26.751 13.891 1.040 1.00 0.00 H +ATOM 2052 HW2 SOL 683 27.651 14.591 -0.140 1.00 0.00 H +ATOM 2053 OW SOL 684 25.231 17.901 9.531 1.00 0.00 O +ATOM 2054 HW1 SOL 684 24.771 18.781 9.401 1.00 0.00 H +ATOM 2055 HW2 SOL 684 26.221 18.021 9.461 1.00 0.00 H +ATOM 2056 OW SOL 685 1.471 18.511 17.201 1.00 0.00 O +ATOM 2057 HW1 SOL 685 0.511 18.401 16.931 1.00 0.00 H +ATOM 2058 HW2 SOL 685 2.031 17.841 16.721 1.00 0.00 H +ATOM 2059 OW SOL 686 27.211 9.561 8.610 1.00 0.00 O +ATOM 2060 HW1 SOL 686 27.751 8.871 9.090 1.00 0.00 H +ATOM 2061 HW2 SOL 686 26.891 10.251 9.270 1.00 0.00 H +ATOM 2062 OW SOL 687 29.451 9.841 0.870 1.00 0.00 O +ATOM 2063 HW1 SOL 687 29.221 10.371 0.050 1.00 0.00 H +ATOM 2064 HW2 SOL 687 30.261 9.281 0.680 1.00 0.00 H +ATOM 2065 OW SOL 688 20.831 13.141 18.441 1.00 0.00 O +ATOM 2066 HW1 SOL 688 20.181 12.411 18.231 1.00 0.00 H +ATOM 2067 HW2 SOL 688 20.871 13.281 19.421 1.00 0.00 H +ATOM 2068 OW SOL 689 19.411 12.401 6.530 1.00 0.00 O +ATOM 2069 HW1 SOL 689 19.401 11.931 7.410 1.00 0.00 H +ATOM 2070 HW2 SOL 689 20.231 12.121 6.020 1.00 0.00 H +ATOM 2071 OW SOL 690 25.341 13.911 16.241 1.00 0.00 O +ATOM 2072 HW1 SOL 690 24.561 13.411 16.621 1.00 0.00 H +ATOM 2073 HW2 SOL 690 25.311 14.861 16.551 1.00 0.00 H +ATOM 2074 OW SOL 691 22.901 4.240 5.200 1.00 0.00 O +ATOM 2075 HW1 SOL 691 23.201 3.520 4.580 1.00 0.00 H +ATOM 2076 HW2 SOL 691 22.511 3.840 6.030 1.00 0.00 H +ATOM 2077 OW SOL 692 21.791 5.470 12.801 1.00 0.00 O +ATOM 2078 HW1 SOL 692 22.171 4.880 13.521 1.00 0.00 H +ATOM 2079 HW2 SOL 692 22.191 5.210 11.921 1.00 0.00 H +ATOM 2080 OW SOL 693 26.741 15.861 6.870 1.00 0.00 O +ATOM 2081 HW1 SOL 693 27.061 15.961 5.930 1.00 0.00 H +ATOM 2082 HW2 SOL 693 25.951 15.241 6.890 1.00 0.00 H +ATOM 2083 OW SOL 694 1.631 2.140 11.121 1.00 0.00 O +ATOM 2084 HW1 SOL 694 2.151 1.490 11.671 1.00 0.00 H +ATOM 2085 HW2 SOL 694 1.141 2.770 11.731 1.00 0.00 H +ATOM 2086 OW SOL 695 28.631 0.340 11.541 1.00 0.00 O +ATOM 2087 HW1 SOL 695 28.001 -0.380 11.231 1.00 0.00 H +ATOM 2088 HW2 SOL 695 29.561 -0.020 11.541 1.00 0.00 H +ATOM 2089 OW SOL 696 26.321 13.301 3.010 1.00 0.00 O +ATOM 2090 HW1 SOL 696 25.861 12.431 3.180 1.00 0.00 H +ATOM 2091 HW2 SOL 696 27.231 13.271 3.420 1.00 0.00 H +ATOM 2092 OW SOL 697 24.801 15.671 12.841 1.00 0.00 O +ATOM 2093 HW1 SOL 697 24.751 16.491 13.411 1.00 0.00 H +ATOM 2094 HW2 SOL 697 25.691 15.641 12.391 1.00 0.00 H +ATOM 2095 OW SOL 698 0.391 4.530 6.910 1.00 0.00 O +ATOM 2096 HW1 SOL 698 -0.199 5.330 6.950 1.00 0.00 H +ATOM 2097 HW2 SOL 698 0.541 4.180 7.840 1.00 0.00 H +ATOM 2098 OW SOL 699 19.011 10.771 3.000 1.00 0.00 O +ATOM 2099 HW1 SOL 699 20.001 10.661 2.910 1.00 0.00 H +ATOM 2100 HW2 SOL 699 18.611 9.911 3.320 1.00 0.00 H +ATOM 2101 OW SOL 700 27.371 16.461 3.370 1.00 0.00 O +ATOM 2102 HW1 SOL 700 26.601 16.111 2.830 1.00 0.00 H +ATOM 2103 HW2 SOL 700 27.051 17.171 3.990 1.00 0.00 H +ATOM 2104 OW SOL 701 20.921 6.280 19.751 1.00 0.00 O +ATOM 2105 HW1 SOL 701 19.991 6.260 20.121 1.00 0.00 H +ATOM 2106 HW2 SOL 701 20.931 5.890 18.831 1.00 0.00 H +ATOM 2107 OW SOL 702 20.871 2.750 28.581 1.00 0.00 O +ATOM 2108 HW1 SOL 702 21.221 2.580 29.501 1.00 0.00 H +ATOM 2109 HW2 SOL 702 19.991 2.300 28.461 1.00 0.00 H +ATOM 2110 OW SOL 703 18.811 3.680 25.091 1.00 0.00 O +ATOM 2111 HW1 SOL 703 17.991 4.110 25.481 1.00 0.00 H +ATOM 2112 HW2 SOL 703 18.531 2.950 24.461 1.00 0.00 H +ATOM 2113 OW SOL 704 24.311 12.751 30.271 1.00 0.00 O +ATOM 2114 HW1 SOL 704 23.381 12.681 29.901 1.00 0.00 H +ATOM 2115 HW2 SOL 704 24.421 13.641 30.711 1.00 0.00 H +ATOM 2116 OW SOL 705 29.971 7.030 25.791 1.00 0.00 O +ATOM 2117 HW1 SOL 705 30.541 7.810 25.541 1.00 0.00 H +ATOM 2118 HW2 SOL 705 29.371 7.290 26.551 1.00 0.00 H +ATOM 2119 OW SOL 706 26.301 11.441 28.851 1.00 0.00 O +ATOM 2120 HW1 SOL 706 25.521 11.611 29.451 1.00 0.00 H +ATOM 2121 HW2 SOL 706 26.641 12.311 28.491 1.00 0.00 H +ATOM 2122 OW SOL 707 25.471 10.121 25.271 1.00 0.00 O +ATOM 2123 HW1 SOL 707 26.161 9.961 25.971 1.00 0.00 H +ATOM 2124 HW2 SOL 707 24.741 10.691 25.651 1.00 0.00 H +ATOM 2125 OW SOL 708 21.971 14.351 29.231 1.00 0.00 O +ATOM 2126 HW1 SOL 708 21.191 14.041 28.701 1.00 0.00 H +ATOM 2127 HW2 SOL 708 22.551 14.931 28.661 1.00 0.00 H +ATOM 2128 OW SOL 709 1.991 15.051 0.781 1.00 0.00 O +ATOM 2129 HW1 SOL 709 2.231 15.991 1.041 1.00 0.00 H +ATOM 2130 HW2 SOL 709 1.831 14.511 1.601 1.00 0.00 H +ATOM 2131 OW SOL 710 20.931 17.131 23.451 1.00 0.00 O +ATOM 2132 HW1 SOL 710 21.271 17.901 23.991 1.00 0.00 H +ATOM 2133 HW2 SOL 710 21.371 17.131 22.551 1.00 0.00 H +ATOM 2134 OW SOL 711 20.921 14.341 24.001 1.00 0.00 O +ATOM 2135 HW1 SOL 711 20.661 15.301 24.001 1.00 0.00 H +ATOM 2136 HW2 SOL 711 20.211 13.801 24.451 1.00 0.00 H +ATOM 2137 OW SOL 712 21.021 10.911 27.481 1.00 0.00 O +ATOM 2138 HW1 SOL 712 21.161 10.071 28.001 1.00 0.00 H +ATOM 2139 HW2 SOL 712 20.471 11.551 28.031 1.00 0.00 H +ATOM 2140 OW SOL 713 24.681 9.641 19.851 1.00 0.00 O +ATOM 2141 HW1 SOL 713 24.751 10.481 19.311 1.00 0.00 H +ATOM 2142 HW2 SOL 713 25.141 9.771 20.731 1.00 0.00 H +ATOM 2143 OW SOL 714 19.841 6.430 24.251 1.00 0.00 O +ATOM 2144 HW1 SOL 714 19.391 5.550 24.421 1.00 0.00 H +ATOM 2145 HW2 SOL 714 19.831 6.970 25.091 1.00 0.00 H +ATOM 2146 OW SOL 715 18.891 15.961 19.791 1.00 0.00 O +ATOM 2147 HW1 SOL 715 18.701 15.001 20.001 1.00 0.00 H +ATOM 2148 HW2 SOL 715 18.561 16.541 20.541 1.00 0.00 H +ATOM 2149 OW SOL 716 24.751 13.651 25.881 1.00 0.00 O +ATOM 2150 HW1 SOL 716 24.261 12.781 25.971 1.00 0.00 H +ATOM 2151 HW2 SOL 716 24.521 14.081 25.011 1.00 0.00 H +ATOM 2152 OW SOL 717 26.711 0.040 23.641 1.00 0.00 O +ATOM 2153 HW1 SOL 717 27.111 0.950 23.551 1.00 0.00 H +ATOM 2154 HW2 SOL 717 25.711 0.120 23.701 1.00 0.00 H +ATOM 2155 OW SOL 718 20.591 9.761 0.031 1.00 0.00 O +ATOM 2156 HW1 SOL 718 21.481 9.311 -0.109 1.00 0.00 H +ATOM 2157 HW2 SOL 718 19.861 9.111 -0.159 1.00 0.00 H +ATOM 2158 OW SOL 719 2.051 14.171 28.151 1.00 0.00 O +ATOM 2159 HW1 SOL 719 1.461 14.231 28.951 1.00 0.00 H +ATOM 2160 HW2 SOL 719 1.901 13.291 27.691 1.00 0.00 H +ATOM 2161 OW SOL 720 24.601 7.290 21.321 1.00 0.00 O +ATOM 2162 HW1 SOL 720 24.841 7.980 20.641 1.00 0.00 H +ATOM 2163 HW2 SOL 720 23.821 7.620 21.861 1.00 0.00 H +ATOM 2164 OW SOL 721 0.201 3.450 28.061 1.00 0.00 O +ATOM 2165 HW1 SOL 721 -0.659 2.950 27.931 1.00 0.00 H +ATOM 2166 HW2 SOL 721 0.821 2.910 28.621 1.00 0.00 H +ATOM 2167 OW SOL 722 29.031 7.010 22.911 1.00 0.00 O +ATOM 2168 HW1 SOL 722 29.291 6.970 23.871 1.00 0.00 H +ATOM 2169 HW2 SOL 722 28.181 6.500 22.771 1.00 0.00 H +ATOM 2170 OW SOL 723 19.381 8.110 26.511 1.00 0.00 O +ATOM 2171 HW1 SOL 723 20.371 7.990 26.601 1.00 0.00 H +ATOM 2172 HW2 SOL 723 19.141 9.060 26.721 1.00 0.00 H +ATOM 2173 OW SOL 724 27.271 3.480 20.571 1.00 0.00 O +ATOM 2174 HW1 SOL 724 27.861 4.110 20.081 1.00 0.00 H +ATOM 2175 HW2 SOL 724 27.461 2.540 20.281 1.00 0.00 H +ATOM 2176 OW SOL 725 24.121 1.960 27.471 1.00 0.00 O +ATOM 2177 HW1 SOL 725 24.071 1.910 28.471 1.00 0.00 H +ATOM 2178 HW2 SOL 725 24.141 2.920 27.181 1.00 0.00 H +ATOM 2179 OW SOL 726 28.701 14.561 23.391 1.00 0.00 O +ATOM 2180 HW1 SOL 726 28.241 15.281 22.871 1.00 0.00 H +ATOM 2181 HW2 SOL 726 28.661 14.761 24.371 1.00 0.00 H +ATOM 2182 OW SOL 727 22.131 18.011 27.151 1.00 0.00 O +ATOM 2183 HW1 SOL 727 22.631 17.151 27.211 1.00 0.00 H +ATOM 2184 HW2 SOL 727 22.781 18.781 27.121 1.00 0.00 H +ATOM 2185 OW SOL 728 21.831 9.431 21.041 1.00 0.00 O +ATOM 2186 HW1 SOL 728 22.651 9.821 20.621 1.00 0.00 H +ATOM 2187 HW2 SOL 728 21.561 8.611 20.551 1.00 0.00 H +ATOM 2188 OW SOL 729 29.731 17.761 20.991 1.00 0.00 O +ATOM 2189 HW1 SOL 729 29.131 17.141 21.491 1.00 0.00 H +ATOM 2190 HW2 SOL 729 30.041 17.321 20.141 1.00 0.00 H +ATOM 2191 OW SOL 730 23.261 17.431 21.851 1.00 0.00 O +ATOM 2192 HW1 SOL 730 23.591 17.821 22.711 1.00 0.00 H +ATOM 2193 HW2 SOL 730 24.021 17.361 21.201 1.00 0.00 H +ATOM 2194 OW SOL 731 21.111 17.851 31.031 1.00 0.00 O +ATOM 2195 HW1 SOL 731 21.681 17.201 31.531 1.00 0.00 H +ATOM 2196 HW2 SOL 731 20.951 17.521 30.101 1.00 0.00 H +ATOM 2197 OW SOL 732 28.021 16.981 27.661 1.00 0.00 O +ATOM 2198 HW1 SOL 732 28.821 16.411 27.871 1.00 0.00 H +ATOM 2199 HW2 SOL 732 27.531 16.581 26.891 1.00 0.00 H +ATOM 2200 OW SOL 733 22.441 7.000 23.421 1.00 0.00 O +ATOM 2201 HW1 SOL 733 22.891 6.100 23.391 1.00 0.00 H +ATOM 2202 HW2 SOL 733 21.501 6.890 23.751 1.00 0.00 H +ATOM 2203 OW SOL 734 24.761 1.220 19.791 1.00 0.00 O +ATOM 2204 HW1 SOL 734 25.741 1.000 19.861 1.00 0.00 H +ATOM 2205 HW2 SOL 734 24.451 1.050 18.861 1.00 0.00 H +ATOM 2206 OW SOL 735 0.901 5.900 1.721 1.00 0.00 O +ATOM 2207 HW1 SOL 735 1.181 5.470 2.571 1.00 0.00 H +ATOM 2208 HW2 SOL 735 1.151 6.860 1.731 1.00 0.00 H +ATOM 2209 OW SOL 736 26.651 14.021 27.861 1.00 0.00 O +ATOM 2210 HW1 SOL 736 27.551 14.161 27.441 1.00 0.00 H +ATOM 2211 HW2 SOL 736 25.941 14.041 27.151 1.00 0.00 H +ATOM 2212 OW SOL 737 27.841 5.030 27.611 1.00 0.00 O +ATOM 2213 HW1 SOL 737 27.591 4.940 26.651 1.00 0.00 H +ATOM 2214 HW2 SOL 737 28.321 4.210 27.921 1.00 0.00 H +ATOM 2215 OW SOL 738 24.011 0.640 23.741 1.00 0.00 O +ATOM 2216 HW1 SOL 738 23.201 0.650 24.321 1.00 0.00 H +ATOM 2217 HW2 SOL 738 24.041 1.470 23.191 1.00 0.00 H +ATOM 2218 OW SOL 739 1.731 11.881 19.031 1.00 0.00 O +ATOM 2219 HW1 SOL 739 2.051 11.121 19.601 1.00 0.00 H +ATOM 2220 HW2 SOL 739 0.811 12.151 19.331 1.00 0.00 H +ATOM 2221 OW SOL 740 21.591 0.350 20.331 1.00 0.00 O +ATOM 2222 HW1 SOL 740 22.081 1.190 20.121 1.00 0.00 H +ATOM 2223 HW2 SOL 740 22.211 -0.300 20.781 1.00 0.00 H +ATOM 2224 OW SOL 741 27.971 2.360 23.421 1.00 0.00 O +ATOM 2225 HW1 SOL 741 27.491 2.770 22.641 1.00 0.00 H +ATOM 2226 HW2 SOL 741 28.961 2.340 23.231 1.00 0.00 H +ATOM 2227 OW SOL 742 30.891 15.701 26.551 1.00 0.00 O +ATOM 2228 HW1 SOL 742 31.101 16.441 25.901 1.00 0.00 H +ATOM 2229 HW2 SOL 742 31.571 15.701 27.281 1.00 0.00 H +ATOM 2230 OW SOL 743 23.211 11.521 26.031 1.00 0.00 O +ATOM 2231 HW1 SOL 743 22.501 11.251 26.681 1.00 0.00 H +ATOM 2232 HW2 SOL 743 22.951 11.241 25.101 1.00 0.00 H +ATOM 2233 OW SOL 744 0.101 17.971 24.531 1.00 0.00 O +ATOM 2234 HW1 SOL 744 0.541 18.611 23.891 1.00 0.00 H +ATOM 2235 HW2 SOL 744 -0.399 18.491 25.231 1.00 0.00 H +ATOM 2236 OW SOL 745 28.941 5.490 18.781 1.00 0.00 O +ATOM 2237 HW1 SOL 745 28.531 6.310 18.391 1.00 0.00 H +ATOM 2238 HW2 SOL 745 29.581 5.750 19.511 1.00 0.00 H +ATOM 2239 OW SOL 746 27.281 4.540 25.041 1.00 0.00 O +ATOM 2240 HW1 SOL 746 26.961 5.260 24.421 1.00 0.00 H +ATOM 2241 HW2 SOL 746 27.521 3.730 24.511 1.00 0.00 H +ATOM 2242 OW SOL 747 28.791 0.390 26.151 1.00 0.00 O +ATOM 2243 HW1 SOL 747 28.071 0.440 25.461 1.00 0.00 H +ATOM 2244 HW2 SOL 747 28.551 -0.300 26.841 1.00 0.00 H +ATOM 2245 OW SOL 748 23.501 13.851 20.361 1.00 0.00 O +ATOM 2246 HW1 SOL 748 22.631 13.701 20.831 1.00 0.00 H +ATOM 2247 HW2 SOL 748 23.331 14.111 19.411 1.00 0.00 H +ATOM 2248 OW SOL 749 1.291 5.750 19.401 1.00 0.00 O +ATOM 2249 HW1 SOL 749 0.751 5.540 20.211 1.00 0.00 H +ATOM 2250 HW2 SOL 749 2.201 5.340 19.491 1.00 0.00 H +ATOM 2251 OW SOL 750 23.891 2.560 21.901 1.00 0.00 O +ATOM 2252 HW1 SOL 750 24.161 1.970 21.151 1.00 0.00 H +ATOM 2253 HW2 SOL 750 23.891 3.510 21.591 1.00 0.00 H +ATOM 2254 OW SOL 751 29.731 11.951 29.621 1.00 0.00 O +ATOM 2255 HW1 SOL 751 29.331 12.391 30.431 1.00 0.00 H +ATOM 2256 HW2 SOL 751 29.321 12.321 28.791 1.00 0.00 H +ATOM 2257 OW SOL 752 25.671 10.501 22.301 1.00 0.00 O +ATOM 2258 HW1 SOL 752 25.531 10.571 23.291 1.00 0.00 H +ATOM 2259 HW2 SOL 752 26.511 9.991 22.121 1.00 0.00 H +ATOM 2260 OW SOL 753 22.721 8.130 31.131 1.00 0.00 O +ATOM 2261 HW1 SOL 753 23.581 8.250 31.631 1.00 0.00 H +ATOM 2262 HW2 SOL 753 22.301 7.260 31.401 1.00 0.00 H +ATOM 2263 OW SOL 754 0.131 3.860 0.011 1.00 0.00 O +ATOM 2264 HW1 SOL 754 0.341 4.600 0.651 1.00 0.00 H +ATOM 2265 HW2 SOL 754 -0.759 4.030 -0.419 1.00 0.00 H +ATOM 2266 OW SOL 755 22.291 11.001 23.631 1.00 0.00 O +ATOM 2267 HW1 SOL 755 22.221 11.831 23.071 1.00 0.00 H +ATOM 2268 HW2 SOL 755 22.331 10.201 23.031 1.00 0.00 H +ATOM 2269 OW SOL 756 24.281 5.370 27.271 1.00 0.00 O +ATOM 2270 HW1 SOL 756 24.401 6.030 26.531 1.00 0.00 H +ATOM 2271 HW2 SOL 756 24.741 5.710 28.101 1.00 0.00 H +ATOM 2272 OW SOL 757 31.141 13.481 22.501 1.00 0.00 O +ATOM 2273 HW1 SOL 757 31.641 14.251 22.901 1.00 0.00 H +ATOM 2274 HW2 SOL 757 30.191 13.501 22.821 1.00 0.00 H +ATOM 2275 OW SOL 758 0.111 14.451 30.041 1.00 0.00 O +ATOM 2276 HW1 SOL 758 0.581 14.581 30.911 1.00 0.00 H +ATOM 2277 HW2 SOL 758 -0.549 13.711 30.131 1.00 0.00 H +ATOM 2278 OW SOL 759 24.351 8.700 28.911 1.00 0.00 O +ATOM 2279 HW1 SOL 759 24.791 9.590 28.821 1.00 0.00 H +ATOM 2280 HW2 SOL 759 23.721 8.700 29.681 1.00 0.00 H +ATOM 2281 OW SOL 760 0.991 8.620 29.071 1.00 0.00 O +ATOM 2282 HW1 SOL 760 0.241 8.620 28.411 1.00 0.00 H +ATOM 2283 HW2 SOL 760 1.361 7.700 29.161 1.00 0.00 H +ATOM 2284 OW SOL 761 30.711 5.250 21.371 1.00 0.00 O +ATOM 2285 HW1 SOL 761 30.841 4.410 21.911 1.00 0.00 H +ATOM 2286 HW2 SOL 761 30.421 5.990 21.971 1.00 0.00 H +ATOM 2287 OW SOL 762 21.691 2.130 30.931 1.00 0.00 O +ATOM 2288 HW1 SOL 762 21.461 2.500 31.831 1.00 0.00 H +ATOM 2289 HW2 SOL 762 21.391 1.180 30.871 1.00 0.00 H +ATOM 2290 OW SOL 763 25.941 6.340 29.261 1.00 0.00 O +ATOM 2291 HW1 SOL 763 26.531 6.080 28.501 1.00 0.00 H +ATOM 2292 HW2 SOL 763 25.661 7.300 29.151 1.00 0.00 H +ATOM 2293 OW SOL 764 21.691 0.630 24.801 1.00 0.00 O +ATOM 2294 HW1 SOL 764 21.581 1.570 25.131 1.00 0.00 H +ATOM 2295 HW2 SOL 764 21.641 0.000 25.571 1.00 0.00 H +ATOM 2296 OW SOL 765 28.851 7.660 28.281 1.00 0.00 O +ATOM 2297 HW1 SOL 765 29.001 7.870 29.241 1.00 0.00 H +ATOM 2298 HW2 SOL 765 28.551 6.710 28.191 1.00 0.00 H +ATOM 2299 OW SOL 766 0.421 8.380 19.041 1.00 0.00 O +ATOM 2300 HW1 SOL 766 0.761 7.450 19.191 1.00 0.00 H +ATOM 2301 HW2 SOL 766 0.601 8.650 18.091 1.00 0.00 H +ATOM 2302 OW SOL 767 29.301 13.331 27.111 1.00 0.00 O +ATOM 2303 HW1 SOL 767 29.371 12.491 26.561 1.00 0.00 H +ATOM 2304 HW2 SOL 767 29.921 14.021 26.751 1.00 0.00 H +ATOM 2305 OW SOL 768 21.811 8.100 28.111 1.00 0.00 O +ATOM 2306 HW1 SOL 768 22.741 8.460 28.161 1.00 0.00 H +ATOM 2307 HW2 SOL 768 21.751 7.250 28.631 1.00 0.00 H +ATOM 2308 OW SOL 769 22.011 5.090 28.681 1.00 0.00 O +ATOM 2309 HW1 SOL 769 21.491 4.260 28.511 1.00 0.00 H +ATOM 2310 HW2 SOL 769 22.781 5.140 28.041 1.00 0.00 H +ATOM 2311 OW SOL 770 18.701 13.261 20.621 1.00 0.00 O +ATOM 2312 HW1 SOL 770 17.771 13.471 20.311 1.00 0.00 H +ATOM 2313 HW2 SOL 770 18.801 12.271 20.751 1.00 0.00 H +ATOM 2314 OW SOL 771 19.501 18.011 27.891 1.00 0.00 O +ATOM 2315 HW1 SOL 771 19.081 17.151 27.621 1.00 0.00 H +ATOM 2316 HW2 SOL 771 20.441 18.041 27.551 1.00 0.00 H +ATOM 2317 OW SOL 772 23.661 15.681 27.721 1.00 0.00 O +ATOM 2318 HW1 SOL 772 24.321 16.421 27.811 1.00 0.00 H +ATOM 2319 HW2 SOL 772 24.101 14.891 27.301 1.00 0.00 H +ATOM 2320 OW SOL 773 28.641 7.960 31.001 1.00 0.00 O +ATOM 2321 HW1 SOL 773 29.051 7.640 31.861 1.00 0.00 H +ATOM 2322 HW2 SOL 773 27.681 7.690 30.971 1.00 0.00 H +ATOM 2323 OW SOL 774 19.021 5.440 29.761 1.00 0.00 O +ATOM 2324 HW1 SOL 774 19.871 5.110 29.351 1.00 0.00 H +ATOM 2325 HW2 SOL 774 19.151 5.590 30.741 1.00 0.00 H +ATOM 2326 OW SOL 775 26.771 5.720 21.871 1.00 0.00 O +ATOM 2327 HW1 SOL 775 26.841 4.830 21.411 1.00 0.00 H +ATOM 2328 HW2 SOL 775 25.831 6.060 21.791 1.00 0.00 H +ATOM 2329 OW SOL 776 25.331 4.640 0.081 1.00 0.00 O +ATOM 2330 HW1 SOL 776 24.991 3.750 -0.219 1.00 0.00 H +ATOM 2331 HW2 SOL 776 25.591 5.180 -0.719 1.00 0.00 H +ATOM 2332 OW SOL 777 23.351 5.000 20.531 1.00 0.00 O +ATOM 2333 HW1 SOL 777 23.961 5.800 20.571 1.00 0.00 H +ATOM 2334 HW2 SOL 777 22.401 5.310 20.601 1.00 0.00 H +ATOM 2335 OW SOL 778 19.451 12.581 28.841 1.00 0.00 O +ATOM 2336 HW1 SOL 778 19.401 12.571 29.841 1.00 0.00 H +ATOM 2337 HW2 SOL 778 18.621 12.171 28.461 1.00 0.00 H +ATOM 2338 OW SOL 779 1.271 15.731 23.391 1.00 0.00 O +ATOM 2339 HW1 SOL 779 1.941 15.851 22.651 1.00 0.00 H +ATOM 2340 HW2 SOL 779 0.871 16.621 23.621 1.00 0.00 H +ATOM 2341 OW SOL 780 0.191 9.270 25.341 1.00 0.00 O +ATOM 2342 HW1 SOL 780 0.791 8.460 25.361 1.00 0.00 H +ATOM 2343 HW2 SOL 780 0.591 9.960 24.741 1.00 0.00 H +ATOM 2344 OW SOL 781 25.341 16.161 20.161 1.00 0.00 O +ATOM 2345 HW1 SOL 781 25.431 16.261 19.171 1.00 0.00 H +ATOM 2346 HW2 SOL 781 24.941 15.271 20.371 1.00 0.00 H +ATOM 2347 OW SOL 782 21.251 3.260 25.821 1.00 0.00 O +ATOM 2348 HW1 SOL 782 20.461 3.770 25.481 1.00 0.00 H +ATOM 2349 HW2 SOL 782 21.161 3.110 26.801 1.00 0.00 H +ATOM 2350 OW SOL 783 30.561 16.121 18.931 1.00 0.00 O +ATOM 2351 HW1 SOL 783 30.621 15.191 19.301 1.00 0.00 H +ATOM 2352 HW2 SOL 783 29.971 16.121 18.131 1.00 0.00 H +ATOM 2353 OW SOL 784 26.841 10.021 1.111 1.00 0.00 O +ATOM 2354 HW1 SOL 784 27.241 10.011 0.191 1.00 0.00 H +ATOM 2355 HW2 SOL 784 26.941 10.941 1.511 1.00 0.00 H +ATOM 2356 OW SOL 785 27.781 9.100 21.531 1.00 0.00 O +ATOM 2357 HW1 SOL 785 28.411 9.480 20.851 1.00 0.00 H +ATOM 2358 HW2 SOL 785 28.181 8.270 21.921 1.00 0.00 H +ATOM 2359 OW SOL 786 29.011 10.981 25.581 1.00 0.00 O +ATOM 2360 HW1 SOL 786 28.311 10.511 26.121 1.00 0.00 H +ATOM 2361 HW2 SOL 786 29.601 10.301 25.151 1.00 0.00 H +ATOM 2362 OW SOL 787 28.761 2.360 28.331 1.00 0.00 O +ATOM 2363 HW1 SOL 787 28.681 2.000 27.401 1.00 0.00 H +ATOM 2364 HW2 SOL 787 28.741 1.600 28.981 1.00 0.00 H +ATOM 2365 OW SOL 788 24.521 14.871 23.531 1.00 0.00 O +ATOM 2366 HW1 SOL 788 24.941 14.291 22.831 1.00 0.00 H +ATOM 2367 HW2 SOL 788 24.081 15.661 23.091 1.00 0.00 H +ATOM 2368 OW SOL 789 21.171 13.481 21.521 1.00 0.00 O +ATOM 2369 HW1 SOL 789 20.211 13.491 21.251 1.00 0.00 H +ATOM 2370 HW2 SOL 789 21.291 14.011 22.361 1.00 0.00 H +ATOM 2371 OW SOL 790 19.371 3.450 18.951 1.00 0.00 O +ATOM 2372 HW1 SOL 790 18.451 3.170 18.661 1.00 0.00 H +ATOM 2373 HW2 SOL 790 19.681 4.220 18.391 1.00 0.00 H +ATOM 2374 OW SOL 791 19.341 1.660 21.801 1.00 0.00 O +ATOM 2375 HW1 SOL 791 19.171 2.490 21.261 1.00 0.00 H +ATOM 2376 HW2 SOL 791 20.241 1.290 21.581 1.00 0.00 H +ATOM 2377 OW SOL 792 30.451 13.351 19.811 1.00 0.00 O +ATOM 2378 HW1 SOL 792 29.461 13.241 19.831 1.00 0.00 H +ATOM 2379 HW2 SOL 792 30.791 13.501 20.741 1.00 0.00 H +ATOM 2380 OW SOL 793 30.871 3.250 23.111 1.00 0.00 O +ATOM 2381 HW1 SOL 793 31.521 2.510 23.001 1.00 0.00 H +ATOM 2382 HW2 SOL 793 31.071 3.750 23.951 1.00 0.00 H +ATOM 2383 OW SOL 794 24.561 7.450 25.141 1.00 0.00 O +ATOM 2384 HW1 SOL 794 25.061 8.300 24.951 1.00 0.00 H +ATOM 2385 HW2 SOL 794 23.681 7.470 24.661 1.00 0.00 H +ATOM 2386 OW SOL 795 27.211 13.741 18.781 1.00 0.00 O +ATOM 2387 HW1 SOL 795 26.751 13.891 19.661 1.00 0.00 H +ATOM 2388 HW2 SOL 795 27.651 14.591 18.481 1.00 0.00 H +ATOM 2389 OW SOL 796 25.231 17.901 28.151 1.00 0.00 O +ATOM 2390 HW1 SOL 796 24.771 18.781 28.021 1.00 0.00 H +ATOM 2391 HW2 SOL 796 26.221 18.021 28.081 1.00 0.00 H +ATOM 2392 OW SOL 797 27.211 9.561 27.231 1.00 0.00 O +ATOM 2393 HW1 SOL 797 27.751 8.871 27.711 1.00 0.00 H +ATOM 2394 HW2 SOL 797 26.891 10.251 27.891 1.00 0.00 H +ATOM 2395 OW SOL 798 29.451 9.841 19.491 1.00 0.00 O +ATOM 2396 HW1 SOL 798 29.221 10.371 18.671 1.00 0.00 H +ATOM 2397 HW2 SOL 798 30.261 9.281 19.301 1.00 0.00 H +ATOM 2398 OW SOL 799 19.411 12.401 25.151 1.00 0.00 O +ATOM 2399 HW1 SOL 799 19.401 11.931 26.031 1.00 0.00 H +ATOM 2400 HW2 SOL 799 20.231 12.121 24.641 1.00 0.00 H +ATOM 2401 OW SOL 800 22.901 4.240 23.821 1.00 0.00 O +ATOM 2402 HW1 SOL 800 23.201 3.520 23.201 1.00 0.00 H +ATOM 2403 HW2 SOL 800 22.511 3.840 24.651 1.00 0.00 H +ATOM 2404 OW SOL 801 26.741 15.861 25.491 1.00 0.00 O +ATOM 2405 HW1 SOL 801 27.061 15.961 24.551 1.00 0.00 H +ATOM 2406 HW2 SOL 801 25.951 15.241 25.511 1.00 0.00 H +ATOM 2407 OW SOL 802 1.631 2.140 29.741 1.00 0.00 O +ATOM 2408 HW1 SOL 802 2.151 1.490 30.291 1.00 0.00 H +ATOM 2409 HW2 SOL 802 1.141 2.770 30.351 1.00 0.00 H +ATOM 2410 OW SOL 803 28.631 0.340 30.161 1.00 0.00 O +ATOM 2411 HW1 SOL 803 28.001 -0.380 29.851 1.00 0.00 H +ATOM 2412 HW2 SOL 803 29.561 -0.020 30.161 1.00 0.00 H +ATOM 2413 OW SOL 804 26.321 13.301 21.631 1.00 0.00 O +ATOM 2414 HW1 SOL 804 25.861 12.431 21.801 1.00 0.00 H +ATOM 2415 HW2 SOL 804 27.231 13.271 22.041 1.00 0.00 H +ATOM 2416 OW SOL 805 0.911 0.520 20.301 1.00 0.00 O +ATOM 2417 HW1 SOL 805 1.261 0.110 19.461 1.00 0.00 H +ATOM 2418 HW2 SOL 805 0.011 0.140 20.501 1.00 0.00 H +ATOM 2419 OW SOL 806 0.391 4.530 25.531 1.00 0.00 O +ATOM 2420 HW1 SOL 806 -0.199 5.330 25.571 1.00 0.00 H +ATOM 2421 HW2 SOL 806 0.541 4.180 26.461 1.00 0.00 H +ATOM 2422 OW SOL 807 19.011 10.771 21.621 1.00 0.00 O +ATOM 2423 HW1 SOL 807 20.001 10.661 21.531 1.00 0.00 H +ATOM 2424 HW2 SOL 807 18.611 9.911 21.941 1.00 0.00 H +ATOM 2425 OW SOL 808 27.371 16.461 21.991 1.00 0.00 O +ATOM 2426 HW1 SOL 808 26.601 16.111 21.451 1.00 0.00 H +ATOM 2427 HW2 SOL 808 27.051 17.171 22.611 1.00 0.00 H +ATOM 2428 OW SOL 809 20.921 24.901 1.130 1.00 0.00 O +ATOM 2429 HW1 SOL 809 19.991 24.881 1.500 1.00 0.00 H +ATOM 2430 HW2 SOL 809 20.931 24.511 0.210 1.00 0.00 H +ATOM 2431 OW SOL 810 20.871 21.371 9.961 1.00 0.00 O +ATOM 2432 HW1 SOL 810 21.221 21.201 10.881 1.00 0.00 H +ATOM 2433 HW2 SOL 810 19.991 20.921 9.841 1.00 0.00 H +ATOM 2434 OW SOL 811 18.811 22.301 6.470 1.00 0.00 O +ATOM 2435 HW1 SOL 811 17.991 22.731 6.860 1.00 0.00 H +ATOM 2436 HW2 SOL 811 18.531 21.571 5.840 1.00 0.00 H +ATOM 2437 OW SOL 812 29.971 25.651 7.170 1.00 0.00 O +ATOM 2438 HW1 SOL 812 30.541 26.431 6.920 1.00 0.00 H +ATOM 2439 HW2 SOL 812 29.371 25.911 7.930 1.00 0.00 H +ATOM 2440 OW SOL 813 26.301 30.061 10.231 1.00 0.00 O +ATOM 2441 HW1 SOL 813 25.521 30.231 10.831 1.00 0.00 H +ATOM 2442 HW2 SOL 813 26.641 30.931 9.871 1.00 0.00 H +ATOM 2443 OW SOL 814 27.121 26.601 18.231 1.00 0.00 O +ATOM 2444 HW1 SOL 814 27.081 27.361 18.881 1.00 0.00 H +ATOM 2445 HW2 SOL 814 27.341 26.961 17.321 1.00 0.00 H +ATOM 2446 OW SOL 815 25.471 28.741 6.650 1.00 0.00 O +ATOM 2447 HW1 SOL 815 26.161 28.581 7.350 1.00 0.00 H +ATOM 2448 HW2 SOL 815 24.741 29.311 7.030 1.00 0.00 H +ATOM 2449 OW SOL 816 23.001 22.541 14.991 1.00 0.00 O +ATOM 2450 HW1 SOL 816 23.821 21.981 15.081 1.00 0.00 H +ATOM 2451 HW2 SOL 816 22.191 21.961 15.031 1.00 0.00 H +ATOM 2452 OW SOL 817 21.021 29.531 8.860 1.00 0.00 O +ATOM 2453 HW1 SOL 817 21.161 28.691 9.380 1.00 0.00 H +ATOM 2454 HW2 SOL 817 20.471 30.171 9.410 1.00 0.00 H +ATOM 2455 OW SOL 818 24.681 28.261 1.230 1.00 0.00 O +ATOM 2456 HW1 SOL 818 24.751 29.101 0.690 1.00 0.00 H +ATOM 2457 HW2 SOL 818 25.141 28.391 2.110 1.00 0.00 H +ATOM 2458 OW SOL 819 19.841 25.051 5.630 1.00 0.00 O +ATOM 2459 HW1 SOL 819 19.391 24.171 5.800 1.00 0.00 H +ATOM 2460 HW2 SOL 819 19.831 25.591 6.470 1.00 0.00 H +ATOM 2461 OW SOL 820 19.751 25.991 15.971 1.00 0.00 O +ATOM 2462 HW1 SOL 820 20.631 25.861 16.421 1.00 0.00 H +ATOM 2463 HW2 SOL 820 19.621 26.961 15.751 1.00 0.00 H +ATOM 2464 OW SOL 821 24.751 1.041 7.260 1.00 0.00 O +ATOM 2465 HW1 SOL 821 24.261 0.171 7.350 1.00 0.00 H +ATOM 2466 HW2 SOL 821 24.521 1.471 6.390 1.00 0.00 H +ATOM 2467 OW SOL 822 26.711 18.661 5.020 1.00 0.00 O +ATOM 2468 HW1 SOL 822 27.111 19.571 4.930 1.00 0.00 H +ATOM 2469 HW2 SOL 822 25.711 18.741 5.080 1.00 0.00 H +ATOM 2470 OW SOL 823 20.591 28.381 12.641 1.00 0.00 O +ATOM 2471 HW1 SOL 823 21.481 27.931 12.501 1.00 0.00 H +ATOM 2472 HW2 SOL 823 19.861 27.731 12.451 1.00 0.00 H +ATOM 2473 OW SOL 824 21.791 21.131 18.011 1.00 0.00 O +ATOM 2474 HW1 SOL 824 22.501 21.841 18.071 1.00 0.00 H +ATOM 2475 HW2 SOL 824 20.911 21.521 18.291 1.00 0.00 H +ATOM 2476 OW SOL 825 24.601 25.911 2.700 1.00 0.00 O +ATOM 2477 HW1 SOL 825 24.841 26.601 2.020 1.00 0.00 H +ATOM 2478 HW2 SOL 825 23.821 26.241 3.240 1.00 0.00 H +ATOM 2479 OW SOL 826 0.201 22.071 9.441 1.00 0.00 O +ATOM 2480 HW1 SOL 826 -0.659 21.571 9.311 1.00 0.00 H +ATOM 2481 HW2 SOL 826 0.821 21.531 10.001 1.00 0.00 H +ATOM 2482 OW SOL 827 26.691 24.671 14.651 1.00 0.00 O +ATOM 2483 HW1 SOL 827 26.221 24.641 15.541 1.00 0.00 H +ATOM 2484 HW2 SOL 827 26.181 24.121 13.991 1.00 0.00 H +ATOM 2485 OW SOL 828 28.351 27.521 15.721 1.00 0.00 O +ATOM 2486 HW1 SOL 828 28.811 26.681 15.431 1.00 0.00 H +ATOM 2487 HW2 SOL 828 27.791 27.861 14.971 1.00 0.00 H +ATOM 2488 OW SOL 829 28.531 22.721 12.421 1.00 0.00 O +ATOM 2489 HW1 SOL 829 27.761 23.061 12.961 1.00 0.00 H +ATOM 2490 HW2 SOL 829 28.191 22.211 11.631 1.00 0.00 H +ATOM 2491 OW SOL 830 29.031 25.631 4.290 1.00 0.00 O +ATOM 2492 HW1 SOL 830 29.291 25.591 5.250 1.00 0.00 H +ATOM 2493 HW2 SOL 830 28.181 25.121 4.150 1.00 0.00 H +ATOM 2494 OW SOL 831 19.381 26.731 7.890 1.00 0.00 O +ATOM 2495 HW1 SOL 831 20.371 26.611 7.980 1.00 0.00 H +ATOM 2496 HW2 SOL 831 19.141 27.681 8.100 1.00 0.00 H +ATOM 2497 OW SOL 832 27.271 22.101 1.950 1.00 0.00 O +ATOM 2498 HW1 SOL 832 27.861 22.731 1.460 1.00 0.00 H +ATOM 2499 HW2 SOL 832 27.461 21.161 1.660 1.00 0.00 H +ATOM 2500 OW SOL 833 24.121 20.581 8.850 1.00 0.00 O +ATOM 2501 HW1 SOL 833 24.071 20.531 9.850 1.00 0.00 H +ATOM 2502 HW2 SOL 833 24.141 21.541 8.560 1.00 0.00 H +ATOM 2503 OW SOL 834 21.831 28.051 2.420 1.00 0.00 O +ATOM 2504 HW1 SOL 834 22.651 28.441 2.000 1.00 0.00 H +ATOM 2505 HW2 SOL 834 21.561 27.231 1.930 1.00 0.00 H +ATOM 2506 OW SOL 835 20.641 21.471 14.981 1.00 0.00 O +ATOM 2507 HW1 SOL 835 19.841 22.071 14.851 1.00 0.00 H +ATOM 2508 HW2 SOL 835 20.541 20.981 15.841 1.00 0.00 H +ATOM 2509 OW SOL 836 22.441 25.621 4.800 1.00 0.00 O +ATOM 2510 HW1 SOL 836 22.891 24.721 4.770 1.00 0.00 H +ATOM 2511 HW2 SOL 836 21.501 25.511 5.130 1.00 0.00 H +ATOM 2512 OW SOL 837 24.761 19.841 1.170 1.00 0.00 O +ATOM 2513 HW1 SOL 837 25.741 19.621 1.240 1.00 0.00 H +ATOM 2514 HW2 SOL 837 24.451 19.671 0.240 1.00 0.00 H +ATOM 2515 OW SOL 838 26.431 21.261 17.491 1.00 0.00 O +ATOM 2516 HW1 SOL 838 27.101 20.651 17.921 1.00 0.00 H +ATOM 2517 HW2 SOL 838 25.701 21.451 18.141 1.00 0.00 H +ATOM 2518 OW SOL 839 27.841 23.651 8.990 1.00 0.00 O +ATOM 2519 HW1 SOL 839 27.591 23.561 8.030 1.00 0.00 H +ATOM 2520 HW2 SOL 839 28.321 22.831 9.300 1.00 0.00 H +ATOM 2521 OW SOL 840 24.011 19.261 5.120 1.00 0.00 O +ATOM 2522 HW1 SOL 840 23.201 19.271 5.700 1.00 0.00 H +ATOM 2523 HW2 SOL 840 24.041 20.091 4.570 1.00 0.00 H +ATOM 2524 OW SOL 841 21.591 18.971 1.710 1.00 0.00 O +ATOM 2525 HW1 SOL 841 22.081 19.811 1.500 1.00 0.00 H +ATOM 2526 HW2 SOL 841 22.211 18.321 2.160 1.00 0.00 H +ATOM 2527 OW SOL 842 27.971 20.981 4.800 1.00 0.00 O +ATOM 2528 HW1 SOL 842 27.491 21.391 4.020 1.00 0.00 H +ATOM 2529 HW2 SOL 842 28.961 20.961 4.610 1.00 0.00 H +ATOM 2530 OW SOL 843 29.381 25.451 14.641 1.00 0.00 O +ATOM 2531 HW1 SOL 843 28.581 24.841 14.671 1.00 0.00 H +ATOM 2532 HW2 SOL 843 30.191 24.921 14.401 1.00 0.00 H +ATOM 2533 OW SOL 844 23.211 30.141 7.410 1.00 0.00 O +ATOM 2534 HW1 SOL 844 22.501 29.871 8.060 1.00 0.00 H +ATOM 2535 HW2 SOL 844 22.951 29.861 6.480 1.00 0.00 H +ATOM 2536 OW SOL 845 28.941 24.111 0.160 1.00 0.00 O +ATOM 2537 HW1 SOL 845 28.531 24.931 -0.230 1.00 0.00 H +ATOM 2538 HW2 SOL 845 29.581 24.371 0.890 1.00 0.00 H +ATOM 2539 OW SOL 846 19.401 24.181 13.861 1.00 0.00 O +ATOM 2540 HW1 SOL 846 20.321 24.171 13.451 1.00 0.00 H +ATOM 2541 HW2 SOL 846 19.341 24.921 14.531 1.00 0.00 H +ATOM 2542 OW SOL 847 24.231 20.841 11.471 1.00 0.00 O +ATOM 2543 HW1 SOL 847 24.611 20.001 11.841 1.00 0.00 H +ATOM 2544 HW2 SOL 847 23.351 21.031 11.911 1.00 0.00 H +ATOM 2545 OW SOL 848 27.281 23.161 6.420 1.00 0.00 O +ATOM 2546 HW1 SOL 848 26.961 23.881 5.800 1.00 0.00 H +ATOM 2547 HW2 SOL 848 27.521 22.351 5.890 1.00 0.00 H +ATOM 2548 OW SOL 849 28.791 19.011 7.530 1.00 0.00 O +ATOM 2549 HW1 SOL 849 28.071 19.061 6.840 1.00 0.00 H +ATOM 2550 HW2 SOL 849 28.551 18.321 8.220 1.00 0.00 H +ATOM 2551 OW SOL 850 23.891 21.181 3.280 1.00 0.00 O +ATOM 2552 HW1 SOL 850 24.161 20.591 2.530 1.00 0.00 H +ATOM 2553 HW2 SOL 850 23.891 22.131 2.970 1.00 0.00 H +ATOM 2554 OW SOL 851 27.771 19.511 14.021 1.00 0.00 O +ATOM 2555 HW1 SOL 851 28.021 19.311 13.071 1.00 0.00 H +ATOM 2556 HW2 SOL 851 28.491 20.071 14.441 1.00 0.00 H +ATOM 2557 OW SOL 852 28.421 29.781 17.191 1.00 0.00 O +ATOM 2558 HW1 SOL 852 27.431 29.841 17.291 1.00 0.00 H +ATOM 2559 HW2 SOL 852 28.651 28.981 16.631 1.00 0.00 H +ATOM 2560 OW SOL 853 25.671 29.121 3.680 1.00 0.00 O +ATOM 2561 HW1 SOL 853 25.531 29.191 4.670 1.00 0.00 H +ATOM 2562 HW2 SOL 853 26.511 28.611 3.500 1.00 0.00 H +ATOM 2563 OW SOL 854 22.721 26.751 12.511 1.00 0.00 O +ATOM 2564 HW1 SOL 854 23.581 26.871 13.011 1.00 0.00 H +ATOM 2565 HW2 SOL 854 22.301 25.881 12.781 1.00 0.00 H +ATOM 2566 OW SOL 855 0.131 22.481 12.621 1.00 0.00 O +ATOM 2567 HW1 SOL 855 0.341 23.221 13.261 1.00 0.00 H +ATOM 2568 HW2 SOL 855 -0.759 22.651 12.191 1.00 0.00 H +ATOM 2569 OW SOL 856 22.291 29.621 5.010 1.00 0.00 O +ATOM 2570 HW1 SOL 856 22.221 30.451 4.450 1.00 0.00 H +ATOM 2571 HW2 SOL 856 22.331 28.821 4.410 1.00 0.00 H +ATOM 2572 OW SOL 857 24.281 23.991 8.650 1.00 0.00 O +ATOM 2573 HW1 SOL 857 24.401 24.651 7.910 1.00 0.00 H +ATOM 2574 HW2 SOL 857 24.741 24.331 9.480 1.00 0.00 H +ATOM 2575 OW SOL 858 22.641 26.131 15.981 1.00 0.00 O +ATOM 2576 HW1 SOL 858 23.321 26.681 15.511 1.00 0.00 H +ATOM 2577 HW2 SOL 858 23.041 25.251 16.251 1.00 0.00 H +ATOM 2578 OW SOL 859 28.751 19.671 17.701 1.00 0.00 O +ATOM 2579 HW1 SOL 859 28.811 20.521 17.181 1.00 0.00 H +ATOM 2580 HW2 SOL 859 29.071 18.911 17.131 1.00 0.00 H +ATOM 2581 OW SOL 860 23.661 19.121 17.401 1.00 0.00 O +ATOM 2582 HW1 SOL 860 23.241 18.551 16.701 1.00 0.00 H +ATOM 2583 HW2 SOL 860 23.001 19.811 17.721 1.00 0.00 H +ATOM 2584 OW SOL 861 24.351 27.321 10.291 1.00 0.00 O +ATOM 2585 HW1 SOL 861 24.791 28.211 10.201 1.00 0.00 H +ATOM 2586 HW2 SOL 861 23.721 27.321 11.061 1.00 0.00 H +ATOM 2587 OW SOL 862 0.991 27.241 10.451 1.00 0.00 O +ATOM 2588 HW1 SOL 862 0.241 27.241 9.791 1.00 0.00 H +ATOM 2589 HW2 SOL 862 1.361 26.321 10.541 1.00 0.00 H +ATOM 2590 OW SOL 863 30.711 23.871 2.750 1.00 0.00 O +ATOM 2591 HW1 SOL 863 30.841 23.031 3.290 1.00 0.00 H +ATOM 2592 HW2 SOL 863 30.421 24.611 3.350 1.00 0.00 H +ATOM 2593 OW SOL 864 21.691 20.751 12.311 1.00 0.00 O +ATOM 2594 HW1 SOL 864 21.461 21.121 13.211 1.00 0.00 H +ATOM 2595 HW2 SOL 864 21.391 19.801 12.251 1.00 0.00 H +ATOM 2596 OW SOL 865 18.991 0.491 12.821 1.00 0.00 O +ATOM 2597 HW1 SOL 865 19.521 0.001 13.501 1.00 0.00 H +ATOM 2598 HW2 SOL 865 19.211 1.471 12.871 1.00 0.00 H +ATOM 2599 OW SOL 866 25.941 24.961 10.641 1.00 0.00 O +ATOM 2600 HW1 SOL 866 26.531 24.701 9.881 1.00 0.00 H +ATOM 2601 HW2 SOL 866 25.661 25.921 10.531 1.00 0.00 H +ATOM 2602 OW SOL 867 21.691 19.251 6.180 1.00 0.00 O +ATOM 2603 HW1 SOL 867 21.581 20.191 6.510 1.00 0.00 H +ATOM 2604 HW2 SOL 867 21.641 18.621 6.950 1.00 0.00 H +ATOM 2605 OW SOL 868 28.851 26.281 9.661 1.00 0.00 O +ATOM 2606 HW1 SOL 868 29.001 26.491 10.621 1.00 0.00 H +ATOM 2607 HW2 SOL 868 28.551 25.331 9.571 1.00 0.00 H +ATOM 2608 OW SOL 869 22.121 27.601 18.041 1.00 0.00 O +ATOM 2609 HW1 SOL 869 22.881 28.041 18.521 1.00 0.00 H +ATOM 2610 HW2 SOL 869 22.471 27.131 17.221 1.00 0.00 H +ATOM 2611 OW SOL 870 21.811 26.721 9.491 1.00 0.00 O +ATOM 2612 HW1 SOL 870 22.741 27.081 9.541 1.00 0.00 H +ATOM 2613 HW2 SOL 870 21.751 25.871 10.011 1.00 0.00 H +ATOM 2614 OW SOL 871 22.011 23.711 10.061 1.00 0.00 O +ATOM 2615 HW1 SOL 871 21.491 22.881 9.891 1.00 0.00 H +ATOM 2616 HW2 SOL 871 22.781 23.761 9.421 1.00 0.00 H +ATOM 2617 OW SOL 872 23.731 22.771 18.081 1.00 0.00 O +ATOM 2618 HW1 SOL 872 23.551 23.221 18.961 1.00 0.00 H +ATOM 2619 HW2 SOL 872 24.151 23.421 17.451 1.00 0.00 H +ATOM 2620 OW SOL 873 30.001 22.421 16.781 1.00 0.00 O +ATOM 2621 HW1 SOL 873 29.551 23.051 17.421 1.00 0.00 H +ATOM 2622 HW2 SOL 873 30.931 22.731 16.611 1.00 0.00 H +ATOM 2623 OW SOL 874 30.221 20.691 14.771 1.00 0.00 O +ATOM 2624 HW1 SOL 874 30.221 21.331 15.541 1.00 0.00 H +ATOM 2625 HW2 SOL 874 30.501 21.171 13.941 1.00 0.00 H +ATOM 2626 OW SOL 875 28.641 26.581 12.381 1.00 0.00 O +ATOM 2627 HW1 SOL 875 29.051 26.261 13.241 1.00 0.00 H +ATOM 2628 HW2 SOL 875 27.681 26.311 12.351 1.00 0.00 H +ATOM 2629 OW SOL 876 19.021 24.061 11.141 1.00 0.00 O +ATOM 2630 HW1 SOL 876 19.871 23.731 10.731 1.00 0.00 H +ATOM 2631 HW2 SOL 876 19.151 24.211 12.121 1.00 0.00 H +ATOM 2632 OW SOL 877 20.511 23.821 17.221 1.00 0.00 O +ATOM 2633 HW1 SOL 877 21.101 23.421 16.521 1.00 0.00 H +ATOM 2634 HW2 SOL 877 19.931 24.531 16.811 1.00 0.00 H +ATOM 2635 OW SOL 878 26.771 24.341 3.250 1.00 0.00 O +ATOM 2636 HW1 SOL 878 26.841 23.451 2.790 1.00 0.00 H +ATOM 2637 HW2 SOL 878 25.831 24.681 3.170 1.00 0.00 H +ATOM 2638 OW SOL 879 25.331 23.261 12.691 1.00 0.00 O +ATOM 2639 HW1 SOL 879 24.991 22.371 12.391 1.00 0.00 H +ATOM 2640 HW2 SOL 879 25.591 23.801 11.891 1.00 0.00 H +ATOM 2641 OW SOL 880 23.351 23.621 1.910 1.00 0.00 O +ATOM 2642 HW1 SOL 880 23.961 24.421 1.950 1.00 0.00 H +ATOM 2643 HW2 SOL 880 22.401 23.931 1.980 1.00 0.00 H +ATOM 2644 OW SOL 881 20.211 29.991 14.661 1.00 0.00 O +ATOM 2645 HW1 SOL 881 20.431 29.381 15.421 1.00 0.00 H +ATOM 2646 HW2 SOL 881 20.311 29.501 13.801 1.00 0.00 H +ATOM 2647 OW SOL 882 0.861 29.211 12.341 1.00 0.00 O +ATOM 2648 HW1 SOL 882 1.101 28.581 11.601 1.00 0.00 H +ATOM 2649 HW2 SOL 882 -0.039 29.611 12.161 1.00 0.00 H +ATOM 2650 OW SOL 883 19.451 31.201 10.221 1.00 0.00 O +ATOM 2651 HW1 SOL 883 19.401 31.191 11.221 1.00 0.00 H +ATOM 2652 HW2 SOL 883 18.621 30.791 9.841 1.00 0.00 H +ATOM 2653 OW SOL 884 27.651 19.481 1.330 1.00 0.00 O +ATOM 2654 HW1 SOL 884 28.161 19.491 0.470 1.00 0.00 H +ATOM 2655 HW2 SOL 884 28.211 19.061 2.040 1.00 0.00 H +ATOM 2656 OW SOL 885 0.191 27.891 6.720 1.00 0.00 O +ATOM 2657 HW1 SOL 885 0.791 27.081 6.740 1.00 0.00 H +ATOM 2658 HW2 SOL 885 0.591 28.581 6.120 1.00 0.00 H +ATOM 2659 OW SOL 886 21.251 21.881 7.200 1.00 0.00 O +ATOM 2660 HW1 SOL 886 20.461 22.391 6.860 1.00 0.00 H +ATOM 2661 HW2 SOL 886 21.161 21.731 8.180 1.00 0.00 H +ATOM 2662 OW SOL 887 26.841 28.641 13.721 1.00 0.00 O +ATOM 2663 HW1 SOL 887 27.241 28.631 12.801 1.00 0.00 H +ATOM 2664 HW2 SOL 887 26.941 29.561 14.121 1.00 0.00 H +ATOM 2665 OW SOL 888 27.781 27.721 2.910 1.00 0.00 O +ATOM 2666 HW1 SOL 888 28.411 28.101 2.230 1.00 0.00 H +ATOM 2667 HW2 SOL 888 28.181 26.891 3.300 1.00 0.00 H +ATOM 2668 OW SOL 889 22.341 0.271 14.901 1.00 0.00 O +ATOM 2669 HW1 SOL 889 22.211 1.201 14.561 1.00 0.00 H +ATOM 2670 HW2 SOL 889 21.501 -0.249 14.771 1.00 0.00 H +ATOM 2671 OW SOL 890 29.011 29.601 6.960 1.00 0.00 O +ATOM 2672 HW1 SOL 890 28.311 29.131 7.500 1.00 0.00 H +ATOM 2673 HW2 SOL 890 29.601 28.921 6.530 1.00 0.00 H +ATOM 2674 OW SOL 891 28.761 20.981 9.711 1.00 0.00 O +ATOM 2675 HW1 SOL 891 28.681 20.621 8.781 1.00 0.00 H +ATOM 2676 HW2 SOL 891 28.741 20.221 10.361 1.00 0.00 H +ATOM 2677 OW SOL 892 19.671 28.751 17.261 1.00 0.00 O +ATOM 2678 HW1 SOL 892 18.901 28.421 17.801 1.00 0.00 H +ATOM 2679 HW2 SOL 892 20.521 28.451 17.681 1.00 0.00 H +ATOM 2680 OW SOL 893 25.341 20.651 14.891 1.00 0.00 O +ATOM 2681 HW1 SOL 893 26.241 20.491 14.491 1.00 0.00 H +ATOM 2682 HW2 SOL 893 25.421 20.701 15.881 1.00 0.00 H +ATOM 2683 OW SOL 894 19.341 20.281 3.180 1.00 0.00 O +ATOM 2684 HW1 SOL 894 19.171 21.111 2.640 1.00 0.00 H +ATOM 2685 HW2 SOL 894 20.241 19.911 2.960 1.00 0.00 H +ATOM 2686 OW SOL 895 24.751 27.041 14.311 1.00 0.00 O +ATOM 2687 HW1 SOL 895 25.311 27.851 14.141 1.00 0.00 H +ATOM 2688 HW2 SOL 895 25.341 26.241 14.341 1.00 0.00 H +ATOM 2689 OW SOL 896 25.781 24.271 17.081 1.00 0.00 O +ATOM 2690 HW1 SOL 896 25.971 24.921 17.821 1.00 0.00 H +ATOM 2691 HW2 SOL 896 26.381 23.471 17.171 1.00 0.00 H +ATOM 2692 OW SOL 897 30.871 21.871 4.490 1.00 0.00 O +ATOM 2693 HW1 SOL 897 31.521 21.131 4.380 1.00 0.00 H +ATOM 2694 HW2 SOL 897 31.071 22.371 5.330 1.00 0.00 H +ATOM 2695 OW SOL 898 24.561 26.071 6.520 1.00 0.00 O +ATOM 2696 HW1 SOL 898 25.061 26.921 6.330 1.00 0.00 H +ATOM 2697 HW2 SOL 898 23.681 26.091 6.040 1.00 0.00 H +ATOM 2698 OW SOL 899 27.211 28.181 8.610 1.00 0.00 O +ATOM 2699 HW1 SOL 899 27.751 27.491 9.090 1.00 0.00 H +ATOM 2700 HW2 SOL 899 26.891 28.871 9.270 1.00 0.00 H +ATOM 2701 OW SOL 900 29.451 28.461 0.870 1.00 0.00 O +ATOM 2702 HW1 SOL 900 29.221 28.991 0.050 1.00 0.00 H +ATOM 2703 HW2 SOL 900 30.261 27.901 0.680 1.00 0.00 H +ATOM 2704 OW SOL 901 19.411 31.021 6.530 1.00 0.00 O +ATOM 2705 HW1 SOL 901 19.401 30.551 7.410 1.00 0.00 H +ATOM 2706 HW2 SOL 901 20.231 30.741 6.020 1.00 0.00 H +ATOM 2707 OW SOL 902 22.901 22.861 5.200 1.00 0.00 O +ATOM 2708 HW1 SOL 902 23.201 22.141 4.580 1.00 0.00 H +ATOM 2709 HW2 SOL 902 22.511 22.461 6.030 1.00 0.00 H +ATOM 2710 OW SOL 903 21.791 24.091 12.801 1.00 0.00 O +ATOM 2711 HW1 SOL 903 22.171 23.501 13.521 1.00 0.00 H +ATOM 2712 HW2 SOL 903 22.191 23.831 11.921 1.00 0.00 H +ATOM 2713 OW SOL 904 1.631 20.761 11.121 1.00 0.00 O +ATOM 2714 HW1 SOL 904 2.151 20.111 11.671 1.00 0.00 H +ATOM 2715 HW2 SOL 904 1.141 21.391 11.731 1.00 0.00 H +ATOM 2716 OW SOL 905 28.631 18.961 11.541 1.00 0.00 O +ATOM 2717 HW1 SOL 905 28.001 18.241 11.231 1.00 0.00 H +ATOM 2718 HW2 SOL 905 29.561 18.601 11.541 1.00 0.00 H +ATOM 2719 OW SOL 906 26.321 0.691 3.010 1.00 0.00 O +ATOM 2720 HW1 SOL 906 25.861 -0.179 3.180 1.00 0.00 H +ATOM 2721 HW2 SOL 906 27.231 0.661 3.420 1.00 0.00 H +ATOM 2722 OW SOL 907 0.911 19.141 1.680 1.00 0.00 O +ATOM 2723 HW1 SOL 907 1.261 18.731 0.840 1.00 0.00 H +ATOM 2724 HW2 SOL 907 0.011 18.761 1.880 1.00 0.00 H +ATOM 2725 OW SOL 908 0.391 23.151 6.910 1.00 0.00 O +ATOM 2726 HW1 SOL 908 -0.199 23.951 6.950 1.00 0.00 H +ATOM 2727 HW2 SOL 908 0.541 22.801 7.840 1.00 0.00 H +ATOM 2728 OW SOL 909 19.011 29.391 3.000 1.00 0.00 O +ATOM 2729 HW1 SOL 909 20.001 29.281 2.910 1.00 0.00 H +ATOM 2730 HW2 SOL 909 18.611 28.531 3.320 1.00 0.00 H +ATOM 2731 OW SOL 910 20.921 24.901 19.751 1.00 0.00 O +ATOM 2732 HW1 SOL 910 19.991 24.881 20.121 1.00 0.00 H +ATOM 2733 HW2 SOL 910 20.931 24.511 18.831 1.00 0.00 H +ATOM 2734 OW SOL 911 20.871 21.371 28.581 1.00 0.00 O +ATOM 2735 HW1 SOL 911 21.221 21.201 29.501 1.00 0.00 H +ATOM 2736 HW2 SOL 911 19.991 20.921 28.461 1.00 0.00 H +ATOM 2737 OW SOL 912 18.811 22.301 25.091 1.00 0.00 O +ATOM 2738 HW1 SOL 912 17.991 22.731 25.481 1.00 0.00 H +ATOM 2739 HW2 SOL 912 18.531 21.571 24.461 1.00 0.00 H +ATOM 2740 OW SOL 913 29.971 25.651 25.791 1.00 0.00 O +ATOM 2741 HW1 SOL 913 30.541 26.431 25.541 1.00 0.00 H +ATOM 2742 HW2 SOL 913 29.371 25.911 26.551 1.00 0.00 H +ATOM 2743 OW SOL 914 26.301 30.061 28.851 1.00 0.00 O +ATOM 2744 HW1 SOL 914 25.521 30.231 29.451 1.00 0.00 H +ATOM 2745 HW2 SOL 914 26.641 30.931 28.491 1.00 0.00 H +ATOM 2746 OW SOL 915 25.471 28.741 25.271 1.00 0.00 O +ATOM 2747 HW1 SOL 915 26.161 28.581 25.971 1.00 0.00 H +ATOM 2748 HW2 SOL 915 24.741 29.311 25.651 1.00 0.00 H +ATOM 2749 OW SOL 916 21.021 29.531 27.481 1.00 0.00 O +ATOM 2750 HW1 SOL 916 21.161 28.691 28.001 1.00 0.00 H +ATOM 2751 HW2 SOL 916 20.471 30.171 28.031 1.00 0.00 H +ATOM 2752 OW SOL 917 24.681 28.261 19.851 1.00 0.00 O +ATOM 2753 HW1 SOL 917 24.751 29.101 19.311 1.00 0.00 H +ATOM 2754 HW2 SOL 917 25.141 28.391 20.731 1.00 0.00 H +ATOM 2755 OW SOL 918 19.841 25.051 24.251 1.00 0.00 O +ATOM 2756 HW1 SOL 918 19.391 24.171 24.421 1.00 0.00 H +ATOM 2757 HW2 SOL 918 19.831 25.591 25.091 1.00 0.00 H +ATOM 2758 OW SOL 919 24.751 1.041 25.881 1.00 0.00 O +ATOM 2759 HW1 SOL 919 24.261 0.171 25.971 1.00 0.00 H +ATOM 2760 HW2 SOL 919 24.521 1.471 25.011 1.00 0.00 H +ATOM 2761 OW SOL 920 26.711 18.661 23.641 1.00 0.00 O +ATOM 2762 HW1 SOL 920 27.111 19.571 23.551 1.00 0.00 H +ATOM 2763 HW2 SOL 920 25.711 18.741 23.701 1.00 0.00 H +ATOM 2764 OW SOL 921 20.591 28.381 0.031 1.00 0.00 O +ATOM 2765 HW1 SOL 921 21.481 27.931 -0.109 1.00 0.00 H +ATOM 2766 HW2 SOL 921 19.861 27.731 -0.159 1.00 0.00 H +ATOM 2767 OW SOL 922 24.601 25.911 21.321 1.00 0.00 O +ATOM 2768 HW1 SOL 922 24.841 26.601 20.641 1.00 0.00 H +ATOM 2769 HW2 SOL 922 23.821 26.241 21.861 1.00 0.00 H +ATOM 2770 OW SOL 923 0.201 22.071 28.061 1.00 0.00 O +ATOM 2771 HW1 SOL 923 -0.659 21.571 27.931 1.00 0.00 H +ATOM 2772 HW2 SOL 923 0.821 21.531 28.621 1.00 0.00 H +ATOM 2773 OW SOL 924 29.031 25.631 22.911 1.00 0.00 O +ATOM 2774 HW1 SOL 924 29.291 25.591 23.871 1.00 0.00 H +ATOM 2775 HW2 SOL 924 28.181 25.121 22.771 1.00 0.00 H +ATOM 2776 OW SOL 925 19.381 26.731 26.511 1.00 0.00 O +ATOM 2777 HW1 SOL 925 20.371 26.611 26.601 1.00 0.00 H +ATOM 2778 HW2 SOL 925 19.141 27.681 26.721 1.00 0.00 H +ATOM 2779 OW SOL 926 27.271 22.101 20.571 1.00 0.00 O +ATOM 2780 HW1 SOL 926 27.861 22.731 20.081 1.00 0.00 H +ATOM 2781 HW2 SOL 926 27.461 21.161 20.281 1.00 0.00 H +ATOM 2782 OW SOL 927 24.121 20.581 27.471 1.00 0.00 O +ATOM 2783 HW1 SOL 927 24.071 20.531 28.471 1.00 0.00 H +ATOM 2784 HW2 SOL 927 24.141 21.541 27.181 1.00 0.00 H +ATOM 2785 OW SOL 928 21.831 28.051 21.041 1.00 0.00 O +ATOM 2786 HW1 SOL 928 22.651 28.441 20.621 1.00 0.00 H +ATOM 2787 HW2 SOL 928 21.561 27.231 20.551 1.00 0.00 H +ATOM 2788 OW SOL 929 22.441 25.621 23.421 1.00 0.00 O +ATOM 2789 HW1 SOL 929 22.891 24.721 23.391 1.00 0.00 H +ATOM 2790 HW2 SOL 929 21.501 25.511 23.751 1.00 0.00 H +ATOM 2791 OW SOL 930 24.761 19.841 19.791 1.00 0.00 O +ATOM 2792 HW1 SOL 930 25.741 19.621 19.861 1.00 0.00 H +ATOM 2793 HW2 SOL 930 24.451 19.671 18.861 1.00 0.00 H +ATOM 2794 OW SOL 931 0.901 24.521 1.721 1.00 0.00 O +ATOM 2795 HW1 SOL 931 1.181 24.091 2.571 1.00 0.00 H +ATOM 2796 HW2 SOL 931 1.151 25.481 1.731 1.00 0.00 H +ATOM 2797 OW SOL 932 27.841 23.651 27.611 1.00 0.00 O +ATOM 2798 HW1 SOL 932 27.591 23.561 26.651 1.00 0.00 H +ATOM 2799 HW2 SOL 932 28.321 22.831 27.921 1.00 0.00 H +ATOM 2800 OW SOL 933 24.011 19.261 23.741 1.00 0.00 O +ATOM 2801 HW1 SOL 933 23.201 19.271 24.321 1.00 0.00 H +ATOM 2802 HW2 SOL 933 24.041 20.091 23.191 1.00 0.00 H +ATOM 2803 OW SOL 934 21.591 18.971 20.331 1.00 0.00 O +ATOM 2804 HW1 SOL 934 22.081 19.811 20.121 1.00 0.00 H +ATOM 2805 HW2 SOL 934 22.211 18.321 20.781 1.00 0.00 H +ATOM 2806 OW SOL 935 27.971 20.981 23.421 1.00 0.00 O +ATOM 2807 HW1 SOL 935 27.491 21.391 22.641 1.00 0.00 H +ATOM 2808 HW2 SOL 935 28.961 20.961 23.231 1.00 0.00 H +ATOM 2809 OW SOL 936 23.211 30.141 26.031 1.00 0.00 O +ATOM 2810 HW1 SOL 936 22.501 29.871 26.681 1.00 0.00 H +ATOM 2811 HW2 SOL 936 22.951 29.861 25.101 1.00 0.00 H +ATOM 2812 OW SOL 937 28.941 24.111 18.781 1.00 0.00 O +ATOM 2813 HW1 SOL 937 28.531 24.931 18.391 1.00 0.00 H +ATOM 2814 HW2 SOL 937 29.581 24.371 19.511 1.00 0.00 H +ATOM 2815 OW SOL 938 27.281 23.161 25.041 1.00 0.00 O +ATOM 2816 HW1 SOL 938 26.961 23.881 24.421 1.00 0.00 H +ATOM 2817 HW2 SOL 938 27.521 22.351 24.511 1.00 0.00 H +ATOM 2818 OW SOL 939 28.791 19.011 26.151 1.00 0.00 O +ATOM 2819 HW1 SOL 939 28.071 19.061 25.461 1.00 0.00 H +ATOM 2820 HW2 SOL 939 28.551 18.321 26.841 1.00 0.00 H +ATOM 2821 OW SOL 940 1.291 24.371 19.401 1.00 0.00 O +ATOM 2822 HW1 SOL 940 0.751 24.161 20.211 1.00 0.00 H +ATOM 2823 HW2 SOL 940 2.201 23.961 19.491 1.00 0.00 H +ATOM 2824 OW SOL 941 23.891 21.181 21.901 1.00 0.00 O +ATOM 2825 HW1 SOL 941 24.161 20.591 21.151 1.00 0.00 H +ATOM 2826 HW2 SOL 941 23.891 22.131 21.591 1.00 0.00 H +ATOM 2827 OW SOL 942 25.671 29.121 22.301 1.00 0.00 O +ATOM 2828 HW1 SOL 942 25.531 29.191 23.291 1.00 0.00 H +ATOM 2829 HW2 SOL 942 26.511 28.611 22.121 1.00 0.00 H +ATOM 2830 OW SOL 943 22.721 26.751 31.131 1.00 0.00 O +ATOM 2831 HW1 SOL 943 23.581 26.871 31.631 1.00 0.00 H +ATOM 2832 HW2 SOL 943 22.301 25.881 31.401 1.00 0.00 H +ATOM 2833 OW SOL 944 0.131 22.481 0.011 1.00 0.00 O +ATOM 2834 HW1 SOL 944 0.341 23.221 0.651 1.00 0.00 H +ATOM 2835 HW2 SOL 944 -0.759 22.651 -0.419 1.00 0.00 H +ATOM 2836 OW SOL 945 22.291 29.621 23.631 1.00 0.00 O +ATOM 2837 HW1 SOL 945 22.221 30.451 23.071 1.00 0.00 H +ATOM 2838 HW2 SOL 945 22.331 28.821 23.031 1.00 0.00 H +ATOM 2839 OW SOL 946 24.281 23.991 27.271 1.00 0.00 O +ATOM 2840 HW1 SOL 946 24.401 24.651 26.531 1.00 0.00 H +ATOM 2841 HW2 SOL 946 24.741 24.331 28.101 1.00 0.00 H +ATOM 2842 OW SOL 947 24.351 27.321 28.911 1.00 0.00 O +ATOM 2843 HW1 SOL 947 24.791 28.211 28.821 1.00 0.00 H +ATOM 2844 HW2 SOL 947 23.721 27.321 29.681 1.00 0.00 H +ATOM 2845 OW SOL 948 0.991 27.241 29.071 1.00 0.00 O +ATOM 2846 HW1 SOL 948 0.241 27.241 28.411 1.00 0.00 H +ATOM 2847 HW2 SOL 948 1.361 26.321 29.161 1.00 0.00 H +ATOM 2848 OW SOL 949 30.711 23.871 21.371 1.00 0.00 O +ATOM 2849 HW1 SOL 949 30.841 23.031 21.911 1.00 0.00 H +ATOM 2850 HW2 SOL 949 30.421 24.611 21.971 1.00 0.00 H +ATOM 2851 OW SOL 950 21.691 20.751 30.931 1.00 0.00 O +ATOM 2852 HW1 SOL 950 21.461 21.121 31.831 1.00 0.00 H +ATOM 2853 HW2 SOL 950 21.391 19.801 30.871 1.00 0.00 H +ATOM 2854 OW SOL 951 18.991 0.491 0.211 1.00 0.00 O +ATOM 2855 HW1 SOL 951 19.521 0.001 0.891 1.00 0.00 H +ATOM 2856 HW2 SOL 951 19.211 1.471 0.261 1.00 0.00 H +ATOM 2857 OW SOL 952 25.941 24.961 29.261 1.00 0.00 O +ATOM 2858 HW1 SOL 952 26.531 24.701 28.501 1.00 0.00 H +ATOM 2859 HW2 SOL 952 25.661 25.921 29.151 1.00 0.00 H +ATOM 2860 OW SOL 953 21.691 19.251 24.801 1.00 0.00 O +ATOM 2861 HW1 SOL 953 21.581 20.191 25.131 1.00 0.00 H +ATOM 2862 HW2 SOL 953 21.641 18.621 25.571 1.00 0.00 H +ATOM 2863 OW SOL 954 28.851 26.281 28.281 1.00 0.00 O +ATOM 2864 HW1 SOL 954 29.001 26.491 29.241 1.00 0.00 H +ATOM 2865 HW2 SOL 954 28.551 25.331 28.191 1.00 0.00 H +ATOM 2866 OW SOL 955 0.421 27.001 19.041 1.00 0.00 O +ATOM 2867 HW1 SOL 955 0.761 26.071 19.191 1.00 0.00 H +ATOM 2868 HW2 SOL 955 0.601 27.271 18.091 1.00 0.00 H +ATOM 2869 OW SOL 956 21.811 26.721 28.111 1.00 0.00 O +ATOM 2870 HW1 SOL 956 22.741 27.081 28.161 1.00 0.00 H +ATOM 2871 HW2 SOL 956 21.751 25.871 28.631 1.00 0.00 H +ATOM 2872 OW SOL 957 22.011 23.711 28.681 1.00 0.00 O +ATOM 2873 HW1 SOL 957 21.491 22.881 28.511 1.00 0.00 H +ATOM 2874 HW2 SOL 957 22.781 23.761 28.041 1.00 0.00 H +ATOM 2875 OW SOL 958 28.641 26.581 31.001 1.00 0.00 O +ATOM 2876 HW1 SOL 958 29.051 26.261 31.861 1.00 0.00 H +ATOM 2877 HW2 SOL 958 27.681 26.311 30.971 1.00 0.00 H +ATOM 2878 OW SOL 959 19.021 24.061 29.761 1.00 0.00 O +ATOM 2879 HW1 SOL 959 19.871 23.731 29.351 1.00 0.00 H +ATOM 2880 HW2 SOL 959 19.151 24.211 30.741 1.00 0.00 H +ATOM 2881 OW SOL 960 26.771 24.341 21.871 1.00 0.00 O +ATOM 2882 HW1 SOL 960 26.841 23.451 21.411 1.00 0.00 H +ATOM 2883 HW2 SOL 960 25.831 24.681 21.791 1.00 0.00 H +ATOM 2884 OW SOL 961 25.331 23.261 0.081 1.00 0.00 O +ATOM 2885 HW1 SOL 961 24.991 22.371 -0.219 1.00 0.00 H +ATOM 2886 HW2 SOL 961 25.591 23.801 -0.719 1.00 0.00 H +ATOM 2887 OW SOL 962 23.351 23.621 20.531 1.00 0.00 O +ATOM 2888 HW1 SOL 962 23.961 24.421 20.571 1.00 0.00 H +ATOM 2889 HW2 SOL 962 22.401 23.931 20.601 1.00 0.00 H +ATOM 2890 OW SOL 963 0.861 29.211 30.961 1.00 0.00 O +ATOM 2891 HW1 SOL 963 1.101 28.581 30.221 1.00 0.00 H +ATOM 2892 HW2 SOL 963 -0.039 29.611 30.781 1.00 0.00 H +ATOM 2893 OW SOL 964 19.451 31.201 28.841 1.00 0.00 O +ATOM 2894 HW1 SOL 964 19.401 31.191 29.841 1.00 0.00 H +ATOM 2895 HW2 SOL 964 18.621 30.791 28.461 1.00 0.00 H +ATOM 2896 OW SOL 965 0.191 27.891 25.341 1.00 0.00 O +ATOM 2897 HW1 SOL 965 0.791 27.081 25.361 1.00 0.00 H +ATOM 2898 HW2 SOL 965 0.591 28.581 24.741 1.00 0.00 H +ATOM 2899 OW SOL 966 21.251 21.881 25.821 1.00 0.00 O +ATOM 2900 HW1 SOL 966 20.461 22.391 25.481 1.00 0.00 H +ATOM 2901 HW2 SOL 966 21.161 21.731 26.801 1.00 0.00 H +ATOM 2902 OW SOL 967 26.841 28.641 1.111 1.00 0.00 O +ATOM 2903 HW1 SOL 967 27.241 28.631 0.191 1.00 0.00 H +ATOM 2904 HW2 SOL 967 26.941 29.561 1.511 1.00 0.00 H +ATOM 2905 OW SOL 968 27.781 27.721 21.531 1.00 0.00 O +ATOM 2906 HW1 SOL 968 28.411 28.101 20.851 1.00 0.00 H +ATOM 2907 HW2 SOL 968 28.181 26.891 21.921 1.00 0.00 H +ATOM 2908 OW SOL 969 29.011 29.601 25.581 1.00 0.00 O +ATOM 2909 HW1 SOL 969 28.311 29.131 26.121 1.00 0.00 H +ATOM 2910 HW2 SOL 969 29.601 28.921 25.151 1.00 0.00 H +ATOM 2911 OW SOL 970 28.761 20.981 28.331 1.00 0.00 O +ATOM 2912 HW1 SOL 970 28.681 20.621 27.401 1.00 0.00 H +ATOM 2913 HW2 SOL 970 28.741 20.221 28.981 1.00 0.00 H +ATOM 2914 OW SOL 971 19.371 22.071 18.951 1.00 0.00 O +ATOM 2915 HW1 SOL 971 18.451 21.791 18.661 1.00 0.00 H +ATOM 2916 HW2 SOL 971 19.681 22.841 18.391 1.00 0.00 H +ATOM 2917 OW SOL 972 19.341 20.281 21.801 1.00 0.00 O +ATOM 2918 HW1 SOL 972 19.171 21.111 21.261 1.00 0.00 H +ATOM 2919 HW2 SOL 972 20.241 19.911 21.581 1.00 0.00 H +ATOM 2920 OW SOL 973 30.871 21.871 23.111 1.00 0.00 O +ATOM 2921 HW1 SOL 973 31.521 21.131 23.001 1.00 0.00 H +ATOM 2922 HW2 SOL 973 31.071 22.371 23.951 1.00 0.00 H +ATOM 2923 OW SOL 974 24.561 26.071 25.141 1.00 0.00 O +ATOM 2924 HW1 SOL 974 25.061 26.921 24.951 1.00 0.00 H +ATOM 2925 HW2 SOL 974 23.681 26.091 24.661 1.00 0.00 H +ATOM 2926 OW SOL 975 27.211 28.181 27.231 1.00 0.00 O +ATOM 2927 HW1 SOL 975 27.751 27.491 27.711 1.00 0.00 H +ATOM 2928 HW2 SOL 975 26.891 28.871 27.891 1.00 0.00 H +ATOM 2929 OW SOL 976 29.451 28.461 19.491 1.00 0.00 O +ATOM 2930 HW1 SOL 976 29.221 28.991 18.671 1.00 0.00 H +ATOM 2931 HW2 SOL 976 30.261 27.901 19.301 1.00 0.00 H +ATOM 2932 OW SOL 977 19.411 31.021 25.151 1.00 0.00 O +ATOM 2933 HW1 SOL 977 19.401 30.551 26.031 1.00 0.00 H +ATOM 2934 HW2 SOL 977 20.231 30.741 24.641 1.00 0.00 H +ATOM 2935 OW SOL 978 22.901 22.861 23.821 1.00 0.00 O +ATOM 2936 HW1 SOL 978 23.201 22.141 23.201 1.00 0.00 H +ATOM 2937 HW2 SOL 978 22.511 22.461 24.651 1.00 0.00 H +ATOM 2938 OW SOL 979 1.631 20.761 29.741 1.00 0.00 O +ATOM 2939 HW1 SOL 979 2.151 20.111 30.291 1.00 0.00 H +ATOM 2940 HW2 SOL 979 1.141 21.391 30.351 1.00 0.00 H +ATOM 2941 OW SOL 980 28.631 18.961 30.161 1.00 0.00 O +ATOM 2942 HW1 SOL 980 28.001 18.241 29.851 1.00 0.00 H +ATOM 2943 HW2 SOL 980 29.561 18.601 30.161 1.00 0.00 H +ATOM 2944 OW SOL 981 26.321 0.691 21.631 1.00 0.00 O +ATOM 2945 HW1 SOL 981 25.861 -0.179 21.801 1.00 0.00 H +ATOM 2946 HW2 SOL 981 27.231 0.661 22.041 1.00 0.00 H +ATOM 2947 OW SOL 982 0.911 19.141 20.301 1.00 0.00 O +ATOM 2948 HW1 SOL 982 1.261 18.731 19.461 1.00 0.00 H +ATOM 2949 HW2 SOL 982 0.011 18.761 20.501 1.00 0.00 H +ATOM 2950 OW SOL 983 0.391 23.151 25.531 1.00 0.00 O +ATOM 2951 HW1 SOL 983 -0.199 23.951 25.571 1.00 0.00 H +ATOM 2952 HW2 SOL 983 0.541 22.801 26.461 1.00 0.00 H +ATOM 2953 OW SOL 984 19.011 29.391 21.621 1.00 0.00 O +ATOM 2954 HW1 SOL 984 20.001 29.281 21.531 1.00 0.00 H +ATOM 2955 HW2 SOL 984 18.611 28.531 21.941 1.00 0.00 H +TER +ENDMDL diff --git a/examples/latte_scf/input.in b/examples/latte_scf/input.in new file mode 100644 index 00000000..21150808 --- /dev/null +++ b/examples/latte_scf/input.in @@ -0,0 +1,27 @@ +#Input file for SEDACS + +Verbosity= True +Threshold= 1.0E-7 +#CoordsFile= coords_1299.pdb +CoordsFile= wat2.xyz +#CoordsFile= algo.xyz +#CoordsFile= coords_2955.pdb +#CoordsFile= coords_100.pdb +#CoordsFile= coords_1032.pdb +#CoordsFile= water_128.xyz +GraphThreshold= 0.01 +MaxDeg= 500 #Max graph degree +Rcut= 3.0 #Radius cutoff +PartitionType= Metis +#PartitionType= Regular +#PartitionType= MinCut +NumParts= 1 +SCFTol= 1.0E-1 +Overlap= True +ElectronicTemperature= 1000 +MuCalculationType= #FromParts, Dynamical, None +Orbitals= {"H":1,"O":4} #This has to be know for each engine +NumAdaptiveIter= 100 #Number of graph adaptive iterations +Engine= {"Name":"LATTE","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/python/","Executable":"/home/cnegre/","RhoSolverMethod":"Diag","Accelerator":"No","AcceleratorPath":"/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/nvda"} #The name of the external code +#Engine= {"Name":"ProxyAFortran","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/fortran/","Executable":"/home/cnegre/"} #The name of the external code + diff --git a/examples/latte_scf/latte.in b/examples/latte_scf/latte.in new file mode 100644 index 00000000..5b48bfad --- /dev/null +++ b/examples/latte_scf/latte.in @@ -0,0 +1,80 @@ +LATTE INPUT FILE +================ +#This input file resumes the content of MDcontroller and TBparam/control.in +#The parser will only read it if it's present inside the running folder. +#In case this file is not present Latte will read the two files as original. +#The order of the kewords is not important in this file. +#To get a full description of these keywords please see: +## https://github.com/lanl/LATTE/blob/master/Manual/LATTE_manual.pdf + +#General controls +CONTROL{ + XCONTROL= 1 + BASISTYPE= NONORTHO + PARAMPATH= '../../parameters/latte/TBparam/' + KBT= 0.0 + VERBOSE= 3 + ENTROPYKIND= 1 + SPINON= 0 SPINTOL= 1.0e-4 + ELECTRO= 1 ELECMETH= 0 ELEC_QTOL= 1.0e-5 + PBCON= 1 + MAXSCF= 100 + BREAKTOL= 1.0E-6 MINSP2ITER= 22 SP2CONV= REL + FULLQCONV= 0 QITER= 0 + QMIX= 0.1 SPINMIX= 0.25 MDMIX= 0.25 + SPARSEON= 0 THRESHOLDON= 1 NUMTHRESH= 1.0e-5 FILLINSTOP= 100 BLKSZ= 4 + MSPARSE= 1000 + RELAX= 0 RELAXTYPE= SD MAXITER= -1 RLXFTOL= 0.0000001 + SKIN= 1.0 + CHARGE= 0 + XBO= 1 + XBODISON= 1 + XBODISORDER= 5 + KON= 0 + DOKERNEL= F + KERNELSCHEME= 2 + NORECS= 3 + SAVEKERNEL= T + READKERNEL= F + DOKERNEL= F + KBT= 0.086 + SCLTYPE= TABLE +} + +#Controls for QMD (if using lammps MAXITER must be set to -1) +MDCONTROL{ + MAXITER= -1 + WRTFREQ= 1 + RSFREQ= 100000 + RSLEVEL= 0 +} + +MIXER{ + MixerType= Linear + Verbose= 3 + MPulay= 10 + MixCoeff= 0.05 + MixerON= T + } + + SP2{ + MDim= -1 + MinSP2Iter= 10 + MaxSP2Iter= 100 + Verbose= 10 + NumThresh= 1.0e-5 + SP2Tol= 1.0E-006 + SP2Conv= REL + Flavor= Alg2 + BMLType= Dense + } + + ZSP{ + MDim= -1 + Verbose= 10 + NumthreshI= 1.0e-8 + NumthreshF= 1.0e-5 + BMLType= Dense + ZSP= F + } + diff --git a/examples/latte_scf/main.py b/examples/latte_scf/main.py new file mode 100644 index 00000000..02cc04b8 --- /dev/null +++ b/examples/latte_scf/main.py @@ -0,0 +1,35 @@ +"""Main sedacs prototype driver to perform a +graph-based addaptive construction of the density +matrix together with a full self-consistent charge +optimization""" + +import sys + +import numpy as np +from sedacs.driver.latte_scf import get_adaptiveSCFDM +from sedacs.driver.init import get_args, init +from sedacs.charges import get_charges +import sedacs.globals as gl + +# Pass arguments from comand line +args = get_args() + +# Initialize sedacs + +np.set_printoptions(threshold=sys.maxsize) + +# Initialize sdc parameters +sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init(args) + +sdc.verb = True + +mu = 0 +# Perform a graph-adaptive calculation of the density matrix +sy.charges,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL) + +#sy.energy,sy.forces = get_energy_and_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH) + + + + + diff --git a/examples/latte_scf/vars b/examples/latte_scf/vars new file mode 100644 index 00000000..c6116796 --- /dev/null +++ b/examples/latte_scf/vars @@ -0,0 +1,21 @@ +#!/bin/bash +THIS_PATH=`pwd` +export PYTHONPATH="" +MOD_PATH=$THIS_PATH/../../src/sedacs/ +MOD_PATH1=$THIS_PATH/../../src/ +MOD_PATH2=$THIS_PATH/../../src/sedacs/driver +PROXYA_FORTRAN_PATH=$THIS_PATH/../../proxies/fortran/build/ +PROXYA_PYTHON_FILES=$THIS_PATH/../../proxies/python/ +PROXYA_PYTHON_FOLDER=$THIS_PATH/../../ +PROGRESS_PATH=$HOME/qmd-progress/install/lib64/ +BML_PATH=$HOME/bml/install/lib64/ +export PROXYA_FORTRAN_PATH=$PROXYA_FORTRAN_PATH +export PROXYA_PYTHON_PATH=$PROXYA_PYTHON_PATH +export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$MOD_PATH1:$MOD_PATH2:$PROGRESS_PATH:$BML_PATH:$PROXYA_PYTHON_FOLDER:$PROXYA_PYTHON_FILES:$PROXYA_FORTRAN_PATH +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROGRESS_PATH:$BML_PATH +export PYTHONWARNINGS="ignore:Unverified HTTPS request" + +GPU_PATH=$THIS_PATH/../../src/sedacs/gpu +echo $GPU_PATH +export PYTHONPATH=$PYTHONPATH:$GPU_PATH + diff --git a/examples/latte_scf/wat.pdb b/examples/latte_scf/wat.pdb new file mode 100644 index 00000000..034d516a --- /dev/null +++ b/examples/latte_scf/wat.pdb @@ -0,0 +1,9 @@ +REMARK Generated by PROGRESS library +TITLE coords_100.pdb +CRYST1 50.459 50.459 50.459 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 H MOL 1 0.749 -0.000 0.442 0.00 0.00 H +ATOM 2 O MOL 1 0.000 0.020 -0.165 0.00 0.00 O +ATOM 3 H MOL 1 -0.749 -0.000 0.442 0.00 0.00 H +TER +END diff --git a/examples/latte_scf/wat.xyz b/examples/latte_scf/wat.xyz new file mode 100644 index 00000000..4c90a4d4 --- /dev/null +++ b/examples/latte_scf/wat.xyz @@ -0,0 +1,5 @@ +3 +Lattice="10.00 0.0 0.0 0.0 10.00 0.0 0.0 0.0 10.00" +H 0.7493682 0.0000000 0.4424329 +O 0.0000000 0.0000000 -0.1653507 +H -0.7493682 0.0000000 0.4424329 diff --git a/examples/latte_scf/wat2.xyz b/examples/latte_scf/wat2.xyz new file mode 100644 index 00000000..4eda9feb --- /dev/null +++ b/examples/latte_scf/wat2.xyz @@ -0,0 +1,8 @@ +6 +Lattice="110.00 0.0 0.0 0.0 110.00 0.0 0.0 0.0 110.00" +H 50.7493682 50.0000000 50.4424329 +O 50.0000000 50.0000000 49.8346493 +H 49.2506318 50.0000000 50.4424329 +H 10.7493682 10.0000000 10.4424329 +O 10.0000000 10.0000000 9.8346493 +H 9.2506318 10.0000000 10.4424329 diff --git a/examples/latte_scf/water_128.xyz b/examples/latte_scf/water_128.xyz new file mode 100644 index 00000000..ddf850a9 --- /dev/null +++ b/examples/latte_scf/water_128.xyz @@ -0,0 +1,386 @@ +384 +Lattice="15.66 0.0 0.0 0.0 15.66 0.0 0.0 0.0 15.66" +H 1.4821741580963135 14.427353858947754 2.953700065612793 +O 1.6885966062545776 15.210265159606934 2.3970494270324707 +H 2.3674094676971436 14.887577056884766 1.7750413417816162 +H 1.725602626800537 1.2087194919586182 10.28447151184082 +O 1.457163691520691 0.2813889980316162 10.563945770263672 +H 1.375484585762024 0.24449187517166138 11.546887397766113 +H 12.558568954467773 14.682812690734863 9.085963249206543 +O 13.374778747558594 15.202472686767578 8.868748664855957 +H 14.192708969116211 14.738236427307129 9.219833374023438 +H 6.220971584320068 10.90986442565918 3.922910690307617 +O 5.395566463470459 11.367801666259766 3.851719856262207 +H 5.097456455230713 11.388015747070312 2.87663197517395 +H 13.928208351135254 6.038353443145752 1.3187469244003296 +O 14.39126968383789 6.452458381652832 0.5244671106338501 +H 14.677336692810059 5.6653947830200195 15.641419410705566 +H 11.000219345092773 1.4569547176361084 0.45885026454925537 +O 11.63747501373291 2.104846715927124 0.8563565611839294 +H 12.253790855407715 1.5968525409698486 1.4643044471740723 +H 8.34492301940918 10.484837532043457 4.09354305267334 +O 7.658782958984375 9.694025039672852 4.098236560821533 +H 8.161250114440918 8.91158390045166 4.3958234786987305 +H 15.37078857421875 9.183189392089844 11.81903076171875 +O 0.6639226675033569 9.312712669372559 11.556085586547852 +H 1.1555242538452148 8.781630516052246 12.177814483642578 +H 2.469231367111206 4.930058479309082 6.316625118255615 +O 1.8953945636749268 5.428220272064209 6.90617036819458 +H 1.317298173904419 4.663173198699951 7.2908854484558105 +H 4.391626834869385 1.8281409740447998 2.7765512466430664 +O 5.01270055770874 1.8962875604629517 2.043304443359375 +H 4.4229350090026855 2.101100444793701 1.224356770515442 +H 11.354153633117676 9.732658386230469 1.4163808822631836 +O 12.010466575622559 10.312472343444824 1.0070639848709106 +H 12.736639022827148 9.787837982177734 0.45557060837745667 +H 15.223688125610352 4.653311729431152 13.862953186035156 +O 14.768438339233398 4.34467887878418 14.679522514343262 +H 13.97741413116455 3.8146629333496094 14.375483512878418 +H 2.5933477878570557 2.2602338790893555 4.078963756561279 +O 3.5907583236694336 1.9742355346679688 4.357860565185547 +H 3.4221041202545166 1.4155670404434204 5.144217491149902 +H 11.827882766723633 5.23652458190918 12.129922866821289 +O 11.420333862304688 4.348351001739502 12.450085639953613 +H 11.13693618774414 3.948350667953491 11.59998893737793 +H 3.122493267059326 14.13240909576416 15.377690315246582 +O 3.406907320022583 13.9873685836792 0.637580156326294 +H 4.268272399902344 14.468565940856934 0.7348317503929138 +H 11.982939720153809 3.2170681953430176 6.133591651916504 +O 12.74484920501709 3.6578142642974854 6.557803630828857 +H 12.507513046264648 4.57366418838501 6.91209077835083 +H 4.577542304992676 5.402759075164795 0.7480008006095886 +O 3.8300294876098633 5.114811420440674 0.15346001088619232 +H 3.705512046813965 5.906427383422852 15.198246002197266 +H 4.8761677742004395 2.076591730117798 14.366914749145508 +O 5.596246242523193 1.586893081665039 13.9247465133667 +H 5.811666965484619 2.142857551574707 13.113996505737305 +H 13.377649307250977 1.042777180671692 9.423595428466797 +O 13.151018142700195 1.8292531967163086 10.050421714782715 +H 13.835417747497559 2.495191812515259 9.988792419433594 +H 7.997742176055908 11.266412734985352 9.060665130615234 +O 8.366767883300781 10.735424995422363 8.289185523986816 +H 7.682319641113281 10.126465797424316 8.000984191894531 +H 6.61982536315918 5.436073303222656 1.7336512804031372 +O 5.908255577087402 6.083886623382568 1.5545637607574463 +H 5.400964736938477 6.177191257476807 2.360203504562378 +H 13.306570053100586 8.240872383117676 12.238951683044434 +O 13.812541961669922 8.967954635620117 12.561972618103027 +H 13.299116134643555 9.732105255126953 12.134977340698242 +H 13.150106430053711 10.962871551513672 2.506638765335083 +O 13.738313674926758 11.23777961730957 3.2231998443603516 +H 14.14203929901123 12.027764320373535 2.7478020191192627 +H 9.468901634216309 8.692893028259277 11.753732681274414 +O 9.996575355529785 8.272689819335938 11.04357624053955 +H 9.358142852783203 7.589511394500732 10.609314918518066 +H 9.184500694274902 12.010608673095703 3.185051918029785 +O 9.332493782043457 11.644781112670898 4.082911014556885 +H 10.308004379272461 11.81727123260498 4.252378463745117 +H 14.13718318939209 3.084084987640381 6.320530414581299 +O 15.026741027832031 2.7198779582977295 6.185760021209717 +H 15.581278800964355 2.8094310760498047 7.003511428833008 +H 1.805783987045288 13.039594650268555 13.465221405029297 +O 1.2811273336410522 12.223275184631348 13.247485160827637 +H 0.8052940368652344 11.954380989074707 14.096330642700195 +H 8.574115753173828 12.27851676940918 1.1447495222091675 +O 9.307392120361328 12.729674339294434 1.5993788242340088 +H 8.992727279663086 13.581256866455078 1.8648567199707031 +H 0.4504242539405823 2.9571290016174316 4.610954761505127 +O 1.1356279850006104 2.80627703666687 3.858980894088745 +H 0.6570261716842651 2.2529356479644775 3.161118984222412 +H 2.2259984016418457 1.135374665260315 7.197758197784424 +O 2.8197834491729736 0.5862197875976562 6.640344619750977 +H 3.361316680908203 0.13465867936611176 7.2745137214660645 +H 2.7605855464935303 3.5155222415924072 10.508090019226074 +O 2.7270185947418213 2.7197012901306152 9.998039245605469 +H 3.6602747440338135 2.449582576751709 9.736455917358398 +H 5.481457233428955 0.6800147891044617 1.2360972166061401 +O 5.735907077789307 15.55340576171875 0.6875582933425903 +H 5.908614158630371 0.24427083134651184 15.490666389465332 +H 6.483280658721924 6.651552677154541 12.702972412109375 +O 6.861117839813232 5.836682319641113 12.391767501831055 +H 7.664957046508789 5.7625226974487305 13.000656127929688 +H 5.648747444152832 3.2264184951782227 8.506119728088379 +O 5.52994966506958 2.848599910736084 9.409486770629883 +H 6.039980888366699 2.0285658836364746 9.292366981506348 +H 12.85450553894043 6.765137195587158 10.680105209350586 +O 12.331360816955566 6.957432270050049 11.530010223388672 +H 11.486471176147461 7.264204025268555 11.158045768737793 +H 7.362239837646484 9.154353141784668 0.3254317045211792 +O 7.498302459716797 9.510848999023438 15.109041213989258 +H 8.419239044189453 9.094351768493652 14.665138244628906 +H 1.5374337434768677 4.2605109214782715 2.7824814319610596 +O 1.6234899759292603 5.16341495513916 2.2621734142303467 +H 2.4345974922180176 5.093528747558594 1.753399133682251 +H 13.98061466217041 13.565018653869629 0.982430636882782 +O 13.24919319152832 14.127765655517578 0.6269434690475464 +H 12.569368362426758 13.48637866973877 0.3310380280017853 +H 3.5146663188934326 10.071371078491211 1.0377812385559082 +O 2.739107131958008 9.517007827758789 0.8543626070022583 +H 2.8032007217407227 8.92596435546875 1.6306871175765991 +H 3.2404215335845947 9.397064208984375 7.563103199005127 +O 3.697007656097412 10.221046447753906 7.237059116363525 +H 3.5571937561035156 10.893165588378906 7.9507975578308105 +H 9.887673377990723 12.222174644470215 12.364692687988281 +O 9.317317962646484 13.004202842712402 11.984381675720215 +H 9.826249122619629 13.767129898071289 12.294698715209961 +H 14.60256576538086 1.0523858070373535 6.485602855682373 +O 14.413382530212402 0.06270215660333633 6.496177673339844 +H 14.147909164428711 15.534577369689941 7.447587966918945 +H 13.379937171936035 6.094424724578857 8.554449081420898 +O 13.894918441772461 6.2347235679626465 9.342596054077148 +H 14.61241626739502 6.858521938323975 9.085838317871094 +H 8.004314422607422 12.405964851379395 11.07300090789795 +O 7.369335651397705 12.221914291381836 10.350719451904297 +H 6.828718185424805 13.049220085144043 10.023193359375 +H 6.5086822509765625 14.756935119628906 4.994861602783203 +O 6.839446544647217 15.60968017578125 4.6459126472473145 +H 6.100698471069336 0.509876012802124 4.77648401260376 +H 1.814298391342163 7.485466480255127 14.199212074279785 +O 0.9792758822441101 7.4431376457214355 13.722976684570312 +H 0.34630855917930603 7.4032135009765625 14.47954273223877 +H 6.28085994720459 13.820106506347656 13.516830444335938 +O 6.905226230621338 13.168272972106934 13.857548713684082 +H 7.748592376708984 13.196846961975098 13.40528678894043 +H 2.5069146156311035 11.916142463684082 9.840462684631348 +O 2.6829140186309814 12.13232135772705 8.878107070922852 +H 1.8113011121749878 12.242073059082031 8.437335968017578 +H 14.037789344787598 9.845786094665527 4.642851829528809 +O 13.800369262695312 9.396403312683105 5.5100417137146 +H 14.389450073242188 8.535675048828125 5.423510551452637 +H 12.178966522216797 3.552061080932617 13.457749366760254 +O 12.67518424987793 2.939744710922241 14.132843971252441 +H 12.050117492675781 2.740718126296997 14.851271629333496 +H 6.341159820556641 4.153588771820068 12.246420860290527 +O 5.721994876861572 3.38653564453125 12.11013412475586 +H 5.833896160125732 3.1198267936706543 11.189043045043945 +H 0.4187822639942169 6.928407669067383 5.925801753997803 +O 15.306794166564941 7.189908027648926 5.43982458114624 +H 0.07627714425325394 7.3125996589660645 4.559133529663086 +H 15.205296516418457 13.601235389709473 10.856249809265137 +O 15.426885604858398 14.0115385055542 9.955629348754883 +H 0.4404774010181427 14.725579261779785 10.123786926269531 +H 7.781744480133057 6.341546058654785 10.87021255493164 +O 8.193033218383789 6.693912982940674 10.09223461151123 +H 7.419920921325684 6.874934673309326 9.521349906921387 +H 4.713289260864258 13.532459259033203 7.1375813484191895 +O 4.18504524230957 13.934209823608398 7.856135368347168 +H 3.663506269454956 13.236863136291504 8.294808387756348 +H 1.4324342012405396 7.933252811431885 8.537219047546387 +O 2.39997935295105 7.775256156921387 8.192770004272461 +H 2.2801403999328613 6.949921607971191 7.6617207527160645 +H 0.5963254570960999 6.013045310974121 12.672981262207031 +O 0.5425719022750854 4.989353179931641 12.51000690460205 +H 1.4733445644378662 4.74129056930542 12.26429271697998 +H 5.787660598754883 12.561777114868164 4.9811110496521 +O 5.850313663482666 13.304183006286621 5.696791172027588 +H 6.695471286773682 13.148829460144043 6.1641845703125 +H 9.32719898223877 8.223834991455078 1.8639791011810303 +O 10.29822063446045 8.110273361206055 1.9925719499588013 +H 10.310250282287598 7.87868595123291 2.945894479751587 +H 0.277807354927063 3.5526158809661865 8.722700119018555 +O 0.9846296906471252 3.210406541824341 8.203073501586914 +H 1.7031030654907227 3.0266921520233154 8.867362976074219 +H 2.8105833530426025 2.196861982345581 15.392070770263672 +O 3.735032796859741 2.4994215965270996 15.570079803466797 +H 3.644773006439209 3.4426615238189697 0.03853387013077736 +H 14.682604789733887 1.0238474607467651 2.0653231143951416 +O 15.566673278808594 1.3636430501937866 1.7907549142837524 +H 0.5717520117759705 0.6591038703918457 1.8086328506469727 +H 11.107076644897461 8.861739158630371 7.134167671203613 +O 11.434098243713379 8.342004776000977 6.366227149963379 +H 12.278743743896484 8.585103988647461 6.036701679229736 +H 6.849724292755127 2.226242780685425 14.659040451049805 +O 7.6959028244018555 2.413717269897461 15.109258651733398 +H 8.172039031982422 3.1463210582733154 14.650622367858887 +H 4.415694236755371 12.286710739135742 1.0233668088912964 +O 4.88289213180542 11.490494728088379 1.3367034196853638 +H 5.81308126449585 11.642242431640625 0.9043989777565002 +H 10.558619499206543 9.060455322265625 9.619710922241211 +O 10.549599647521973 9.386129379272461 8.682696342468262 +H 9.6725492477417 9.819774627685547 8.593550682067871 +H 6.1465864181518555 15.147404670715332 9.628643035888672 +O 5.529297351837158 14.445521354675293 9.938332557678223 +H 4.890136241912842 14.265419006347656 9.203654289245605 +H 12.137746810913086 14.339106559753418 4.88058614730835 +O 12.554288864135742 15.224326133728027 4.790942668914795 +H 13.392069816589355 15.262238502502441 5.262670993804932 +H 12.538585662841797 4.795741558074951 2.6958494186401367 +O 13.156197547912598 5.574193000793457 2.774204730987549 +H 13.542095184326172 5.429687976837158 3.6601510047912598 +H 1.6302706003189087 14.983660697937012 5.979812145233154 +O 0.8948200941085815 14.330414772033691 6.0626373291015625 +H 0.1337418407201767 14.884979248046875 6.267165660858154 +H 4.088843822479248 7.9247822761535645 14.16343879699707 +O 3.351106643676758 7.655316352844238 14.735418319702148 +H 3.2007994651794434 8.391205787658691 15.35331916809082 +H 0.15970730781555176 12.594325065612793 2.4045615196228027 +O 15.217007637023926 12.903790473937988 1.7151750326156616 +H 15.467392921447754 12.415807723999023 0.8731029033660889 +H 10.299698829650879 7.86765193939209 5.2782793045043945 +O 9.465031623840332 7.6437177658081055 4.793709754943848 +H 9.516728401184082 6.686868667602539 4.577350616455078 +H 11.606966972351074 11.700885772705078 0.35497593879699707 +O 11.372387886047363 12.519648551940918 15.574257850646973 +H 10.634315490722656 12.839116096496582 0.46611565351486206 +H 8.778069496154785 1.2632012367248535 15.487536430358887 +O 9.388166427612305 0.5421920418739319 0.13583745062351227 +H 9.037282943725586 0.09930628538131714 0.9319953322410583 +H 6.16838264465332 5.261773586273193 7.558151721954346 +O 6.098697662353516 4.416169166564941 7.145912170410156 +H 7.055895805358887 4.16866397857666 7.010154724121094 +H 7.392298221588135 10.838863372802734 15.570189476013184 +O 7.205356597900391 11.764328956604004 0.33388379216194153 +H 7.023780345916748 12.40236759185791 15.264869689941406 +H 8.928775787353516 4.274104595184326 5.8341803550720215 +O 8.753131866455078 3.6826674938201904 6.5963945388793945 +H 8.974727630615234 2.730682373046875 6.358644008636475 +H 0.35756778717041016 3.3287155628204346 15.077012062072754 +O 0.9291011691093445 2.5445761680603027 15.223231315612793 +H 0.5748293399810791 2.0781967639923096 0.3547714650630951 +H 4.015512466430664 3.467869758605957 4.926387310028076 +O 4.089820861816406 4.415233612060547 5.229217529296875 +H 4.887458801269531 4.509295463562012 5.778048038482666 +H 5.291957855224609 14.813364028930664 11.435693740844727 +O 5.140069007873535 14.953418731689453 12.421006202697754 +H 5.216044902801514 0.23042252659797668 12.654684066772461 +H 13.444220542907715 11.729223251342773 11.851582527160645 +O 12.642805099487305 11.136754989624023 11.598742485046387 +H 12.548523902893066 11.20355224609375 10.628812789916992 +H 9.697056770324707 15.593395233154297 14.027965545654297 +O 10.087967872619629 15.423428535461426 13.162454605102539 +H 11.05064868927002 0.002158439252525568 13.155196189880371 +H 2.523853063583374 11.595932006835938 12.188504219055176 +O 2.7947349548339844 11.257299423217773 11.32616901397705 +H 2.0624139308929443 10.607105255126953 11.156081199645996 +H 13.958531379699707 8.130409240722656 15.528944969177246 +O 13.822677612304688 9.02670955657959 15.227170944213867 +H 13.791452407836914 9.062285423278809 14.228338241577148 +H 10.27184772491455 9.424518585205078 13.943780899047852 +O 9.732276916503906 8.618180274963379 14.051572799682617 +H 10.166350364685059 8.033967971801758 14.658818244934082 +H 8.461220741271973 12.057075500488281 7.043845176696777 +O 8.419132232666016 12.80543041229248 6.415385723114014 +H 8.736284255981445 12.338397979736328 5.5919036865234375 +H 8.171420097351074 0.7793318033218384 5.426231861114502 +O 8.820952415466309 1.2351326942443848 6.013558864593506 +H 9.01926326751709 0.6126450300216675 6.739671230316162 +H 2.0820090770721436 7.869522571563721 3.1253793239593506 +O 2.9208269119262695 8.372122764587402 3.1731083393096924 +H 2.627509355545044 9.106399536132812 3.720787525177002 +H 11.650372505187988 10.628031730651855 8.698492050170898 +O 12.256834030151367 11.429168701171875 8.799505233764648 +H 13.083629608154297 11.129518508911133 8.284788131713867 +H 13.960386276245117 14.537196159362793 14.816256523132324 +O 14.3788480758667 14.84691047668457 13.965582847595215 +H 13.691018104553223 15.364837646484375 13.521903038024902 +H 11.58198356628418 1.196730613708496 5.081545829772949 +O 11.163005828857422 2.0494470596313477 5.276447772979736 +H 10.318563461303711 1.797735571861267 5.718932151794434 +H 6.0017476081848145 10.59385871887207 10.80034065246582 +O 5.272309303283691 10.05134105682373 11.150882720947266 +H 4.443428039550781 10.651139259338379 11.057957649230957 +H 12.516849517822266 11.899116516113281 4.271182060241699 +O 11.869437217712402 12.347843170166016 4.853531837463379 +H 12.166669845581055 12.171024322509766 5.7557244300842285 +H 15.470584869384766 4.516737461090088 11.073837280273438 +O 15.1124849319458 4.111335277557373 10.25562858581543 +H 14.591557502746582 4.877866744995117 9.938982963562012 +H 15.495829582214355 12.599084854125977 12.530135154724121 +O 14.549777030944824 12.876575469970703 12.166041374206543 +H 14.274829864501953 13.484247207641602 12.92894172668457 +H 4.544622421264648 5.858673572540283 4.278730869293213 +O 4.853733062744141 6.651581287384033 3.80159854888916 +H 4.038316249847412 7.112107276916504 3.6127209663391113 +H 11.086899757385254 2.9105334281921387 3.527799129486084 +O 11.044354438781738 3.5479931831359863 2.813129425048828 +H 11.100714683532715 3.017974376678467 2.005096435546875 +H 11.167326927185059 5.955437660217285 0.33261048793792725 +O 10.39560604095459 6.435065746307373 0.020402710884809494 +H 10.094603538513184 6.954756259918213 0.794249415397644 +H 5.193816661834717 9.804295539855957 7.193893909454346 +O 6.119728088378906 9.39712905883789 7.226724624633789 +H 6.320915699005127 9.148200988769531 6.31579065322876 +H 10.59584903717041 3.775369882583618 9.694656372070312 +O 10.687355041503906 2.999478340148926 10.27226734161377 +H 11.493496894836426 2.6317555904388428 9.933670043945312 +H 9.679096221923828 4.952756404876709 13.074913024902344 +O 8.934259414672852 4.986400127410889 13.691017150878906 +H 9.434240341186523 5.47733211517334 14.371708869934082 +H 3.9072349071502686 4.0586981773376465 11.940484046936035 +O 3.154937267303467 4.696625709533691 12.053990364074707 +H 3.5881435871124268 5.517663955688477 11.802338600158691 +H 0.2335490584373474 0.01581624709069729 13.774118423461914 +O 0.980350911617279 0.5342038869857788 13.378776550292969 +H 0.9922274947166443 1.4501113891601562 13.837281227111816 +H 12.65897274017334 0.9930011630058289 11.683954238891602 +O 12.707582473754883 0.764843225479126 12.696332931518555 +H 12.694315910339355 1.5772038698196411 13.278538703918457 +H 10.812484741210938 11.850899696350098 14.067712783813477 +O 10.624994277954102 11.294839859008789 13.30173397064209 +H 11.430129051208496 11.36072826385498 12.707429885864258 +H 7.020813941955566 7.331269264221191 1.747533917427063 +O 7.554996013641357 8.1338529586792 1.842114806175232 +H 7.4181599617004395 8.49007797241211 2.763763666152954 +H 11.144770622253418 5.892538547515869 8.100217819213867 +O 12.011418342590332 6.053420543670654 7.622436046600342 +H 11.807604789733887 6.768427848815918 7.026505947113037 +H 0.804131269454956 13.10036849975586 4.533726215362549 +O 1.1628715991973877 12.663919448852539 3.6855170726776123 +H 1.7346456050872803 11.923086166381836 3.9333012104034424 +H 9.218413352966309 1.9028451442718506 10.826943397521973 +O 8.582201957702637 1.300583004951477 11.322752952575684 +H 9.201321601867676 0.7191085815429688 11.809184074401855 +H 3.442178726196289 14.570088386535645 13.23493766784668 +O 2.64837646484375 14.339696884155273 13.757745742797852 +H 2.056213617324829 15.07002067565918 13.468094825744629 +H 6.184440612792969 8.607916831970215 14.012269973754883 +O 5.613175392150879 8.24959659576416 13.366471290588379 +H 5.421210289001465 8.999065399169922 12.734549522399902 +H 14.156079292297363 10.09754753112793 6.937656879425049 +O 14.381294250488281 10.39493465423584 7.833716869354248 +H 15.031318664550781 11.204416275024414 7.830630302429199 +H 9.186308860778809 5.373661041259766 9.201058387756348 +O 9.884927749633789 4.853215217590332 8.791373252868652 +H 9.495500564575195 4.389050006866455 7.994511127471924 +H 7.909711837768555 0.8771836757659912 10.073674201965332 +O 7.3992815017700195 0.40500327944755554 9.375271797180176 +H 8.047890663146973 0.01646227203309536 8.824193954467773 +H 4.144155025482178 7.798429012298584 11.0037202835083 +O 3.6634180545806885 7.110377311706543 10.5337553024292 +H 3.0318245887756348 7.595344543457031 9.977286338806152 +H 11.543298721313477 12.845231056213379 9.526606559753418 +O 11.121271133422852 13.702033042907715 9.871810913085938 +H 10.621376991271973 13.381515502929688 10.645342826843262 +H 7.287951469421387 15.405527114868164 1.4838590621948242 +O 8.058247566223145 15.133753776550293 2.1102092266082764 +H 7.733454704284668 15.314888954162598 3.0118229389190674 +H 5.935088634490967 7.812267303466797 7.968081951141357 +O 6.042677879333496 6.951498031616211 8.45356559753418 +H 5.2108025550842285 6.850614070892334 8.959635734558105 +H 15.26892375946045 9.244001388549805 8.84305191040039 +O 0.033080607652664185 8.36771297454834 9.159706115722656 +H 0.16065479815006256 8.65696907043457 10.071883201599121 +H 15.44448471069336 7.283434867858887 2.2880680561065674 +O 0.4308568835258484 7.290805816650391 2.960726737976074 +H 0.8542476892471313 6.4178080558776855 2.8072118759155273 +H 6.653284549713135 3.0818610191345215 2.4921748638153076 +O 7.361125946044922 3.674710988998413 2.2265164852142334 +H 7.656304359436035 3.247504234313965 1.4033161401748657 +H 13.179733276367188 15.35033893585205 1.7865592241287231 +O 13.136012077331543 0.4361955523490906 2.404041290283203 +H 13.092921257019043 15.597688674926758 3.281696081161499 +H 3.2176342010498047 10.340422630310059 5.482553958892822 +O 2.859381914138794 10.761625289916992 4.600158214569092 +H 3.671846389770508 10.996495246887207 4.227005958557129 +H 9.0103178024292 14.254643440246582 7.299729824066162 +O 9.379074096679688 15.032605171203613 7.842066287994385 +H 9.993480682373047 14.663202285766602 8.487648963928223 +H 1.057732105255127 10.423288345336914 0.49331533908843994 +O 0.2989242374897003 10.900001525878906 0.0640338882803917 +H 15.468161582946777 10.141322135925293 15.32434368133545 +H 0.5501918792724609 13.092039108276367 7.281371593475342 +O 0.34184548258781433 12.450984001159668 7.994649887084961 +H 0.06924410164356232 13.057560920715332 8.765048027038574 +H 9.83470630645752 4.528668403625488 3.769052028656006 +O 9.009892463684082 4.8917107582092285 4.168781280517578 +H 8.33976936340332 4.487730026245117 3.5564870834350586 diff --git a/parameters/dftb/sdc_siesta.py b/parameters/dftb/sdc_siesta.py new file mode 100644 index 00000000..1355fc0b --- /dev/null +++ b/parameters/dftb/sdc_siesta.py @@ -0,0 +1,330 @@ +import numpy as np +import io, sys, os + +atomic_numbers = { + "H": 1, "He": 2, "Li": 3, "Be": 4, "B": 5, + "C": 6, "N": 7, "O": 8, "F": 9, "Ne": 10, + "Na": 11, "Mg": 12, "Al": 13, "Si": 14, "P": 15, + "S": 16, "Cl": 17, "Ar": 18, "K": 19, "Ca": 20, + "Sc": 21, "Ti": 22, "V": 23, "Cr": 24, "Mn": 25, + "Fe": 26, "Co": 27, "Ni": 28, "Cu": 29, "Zn": 30, + "Ga": 31, "Ge": 32, "As": 33, "Se": 34, "Br": 35, + "Kr": 36, "Rb": 37, "Sr": 38, "Y": 39, "Zr": 40, + "Nb": 41, "Mo": 42, "Tc": 43, "Ru": 44, "Rh": 45, + "Pd": 46, "Ag": 47, "Cd": 48, "In": 49, "Sn": 50, + "Sb": 51, "Te": 52, "I": 53, "Xe": 54, "Cs": 55, + "Ba": 56, "La": 57, "Ce": 58, "Pr": 59, "Nd": 60, + "Pm": 61, "Sm": 62, "Eu": 63, "Gd": 64, "Tb": 65, + "Dy": 66, "Ho": 67, "Er": 68, "Tm": 69, "Yb": 70, + "Lu": 71, "Hf": 72, "Ta": 73, "W": 74, "Re": 75, + "Os": 76, "Ir": 77, "Pt": 78, "Au": 79, "Hg": 80, + "Tl": 81, "Pb": 82, "Bi": 83, "Po": 84, "At": 85, + "Rn": 86, "Fr": 87, "Ra": 88, "Ac": 89, "Th": 90, + "Pa": 91, "U": 92, "Np": 93, "Pu": 94, "Am": 95, + "Cm": 96, "Bk": 97, "Cf": 98, "Es": 99, "Fm": 100 +} + +atomic_masses = { + "H": 1.008, "He": 4.0026, "Li": 6.94, "Be": 9.0122, "B": 10.81, + "C": 12.011, "N": 14.007, "O": 15.999, "F": 18.998, "Ne": 20.180, + "Na": 22.990, "Mg": 24.305, "Al": 26.982, "Si": 28.085, "P": 30.974, + "S": 32.06, "Cl": 35.45, "Ar": 39.948, "K": 39.098, "Ca": 40.078, + "Sc": 44.956, "Ti": 47.867, "V": 50.942, "Cr": 51.996, "Mn": 54.938, + "Fe": 55.845, "Co": 58.933, "Ni": 58.693, "Cu": 63.546, "Zn": 65.38, + "Ga": 69.723, "Ge": 72.63, "As": 74.922, "Se": 78.971, "Br": 79.904, + "Kr": 83.798, "Rb": 85.468, "Sr": 87.62, "Y": 88.906, "Zr": 91.224, + "Nb": 92.906, "Mo": 95.95, "Tc": 98, "Ru": 101.07, "Rh": 102.91, + "Pd": 106.42, "Ag": 107.87, "Cd": 112.41, "In": 114.82, "Sn": 118.71, + "Sb": 121.76, "Te": 127.6, "I": 126.9, "Xe": 131.29, "Cs": 132.91, + "Ba": 137.33, "La": 138.91, "Ce": 140.12, "Pr": 140.91, "Nd": 144.24, + "Pm": 145, "Sm": 150.36, "Eu": 151.96, "Gd": 157.25, "Tb": 158.93, + "Dy": 162.5, "Ho": 164.93, "Er": 167.26, "Tm": 168.93, "Yb": 173.05, + "Lu": 174.97, "Hf": 178.49, "Ta": 180.95, "W": 183.84, "Re": 186.21, + "Os": 190.23, "Ir": 192.22, "Pt": 195.08, "Au": 196.97, "Hg": 200.59, + "Tl": 204.38, "Pb": 207.2, "Bi": 208.98, "Po": 209, "At": 210, "Rn": 222, + "Fr": 223, "Ra": 226, "Ac": 227, "Th": 232.04, "Pa": 231.04, "U": 238.03, + "Np": 237, "Pu": 244, "Am": 243, "Cm": 247, "Bk": 247, "Cf": 251, "Es": 252, + "Fm": 257 +} + +UNIT_LENGTH = 'Ang' +UNIT_ENERGY = 'Ry' + + +def read_xyz_file(input_file): + species, coord = [], [] + + # Open input file for reading + with open(input_file, 'r') as infile: + # Read number of atoms + num_atoms = int(infile.readline().strip()) + # Skip blank line + infile.readline() + + # Process each line containing atom coordinates + for i in range(int(num_atoms)): + # Split line into atom species, x, y, z coordinates + line = infile.readline() + l = line.split() + atom_specie, x, y, z = l[0], l[1], l[2], l[3] + species.append(atom_specie) + coord.append([float(x), float(y), float(z)]) + return species, coord + + +def get_siesta_default_params(): + params = { + 'SystemName': 'molecule', + 'SystemLabel': 'molecule', + 'NumberOfAtoms': '8', + 'NumberOfSpecies': '3', + 'ChemicalSpeciesLabel': [], + 'LatticeConstant': '1.0 Ang', + 'LatticeVectors': [], + 'XC.functional': 'GGA', + 'XC.authors': 'PBE', + 'MeshCutoff': '1500 Ry', + 'MaxSCFIterations': '180', + 'DM.NumberPulay': '5', + 'DM.MixingWeight': '0.15', + 'DM.Tolerance': '1.d-4', + 'DM.UseSaveDM': 'T', + 'UseSaveData': 'T', + 'SolutionMethod': 'diagon', + 'ElectronicTemperature': '1 K', + 'SaveHS': 'F', + 'LongOutput': 'T', + 'WriteCoorStep': 'T', + 'WriteEigenvalues': 'T', + 'WriteCoorXmol': 'T', + 'WriteMullikenPop': '1', + 'AtomicCoordinatesFormat': 'Ang', + # 'MD.TypeOfRun': 'FC', + # 'BornCharge': 'T', + # 'MD.FCDispl': '0.01 bohr', + # 'PolarizationGrids': [], + 'MD.NumCGsteps': '0', + 'MD.MaxForceTol': '0.01 eV/Ang', + 'MD.VariableCell': 'F', + 'MD.MaxStressTol': '1 GPa', + 'WriteMDXmol': 'T', + 'kgrid_Monkhorst_Pack': [[1, 0, 0, 0.0], [0, 1, 0, 0.0], [0, 0, 1, 0.0]], + 'BandLinesScale': 'ReciprocalLatticeVectors', + 'Eigenvectors': 'T', + 'Diag.ParallelOverK': 'F', + 'WriteKbands': 'F', + 'BandLines': [['1', '0.0', '0.0', '0.0']], + '%block AtomicCoordinatesAndAtomicSpecies <': 'siesta.dat', + 'Slab.DipoleCorrection': 'False' + } + return params + + +def write_block(name, block): + """ + Generates a siesta block and returns text. + + """ + lines = [f'\n%block {name}'] + for row in block: + data = ' '.join(str(r) + '\t' for r in row) + lines.append(f' {data}') + lines.append(f'%endblock {name}' + '\n') + return '\n'.join(lines) + '\n' + + +def generate_text(param, filename='input.fdf', folder='./'): + """ + Generates a text file from the given parameters. + + :param param: Dictionary containing SIESTA parameters. + :param filename: Name of the file to write the parameters to (default is 'input.fdf'). + :param folder: Folder path where the file will be saved (default is current directory). + """ + buffer = io.StringIO() + for key, value in param.items(): + if isinstance(value, list): + buffer.write(write_block(key, value)) + else: + buffer.write(f"{key}\t{value}\n") + with open(folder + filename, 'w') as f: + f.write(buffer.getvalue()) + buffer.close() + + +def write_coordinates(output_file_name, species, coordinates, folder='./'): + with open(folder + output_file_name, 'w') as outfile: + for specie, coords in zip(species, coordinates): + outfile.write(f"{coords[0]:>8}\t{coords[1]:>8}\t{coords[2]:>8}\t" + f"{species_list.index(specie) + 1}\t{atomic_masses[specie]:>8}\n") + + +def compose_basic_params_and_blocks(input_file): + """ + Reads an XYZ file to extract atomic species and coordinates, computes lattice vectors, + and updates SIESTA parameters accordingly. + + :param input_file: Path to the XYZ file. + :return: Tuple containing species, coordinates, and species list. + """ + try: + # Extract species and coordinates from the XYZ file + species, coordinates = read_xyz_file(input_file) + + # Create a list of unique species + species_list = list(set(species)) + + block_ChemicalSpeciesLabel = [[str(i + 1), str(atomic_numbers[sp]), sp] for i, sp in enumerate(species_list)] + min_max = [round(max(np.array(coordinates).T[i]) - min(np.array(coordinates).T[i])) for i in range(3)] + block_latticeVectors = [ + [min_max[0] + 20, 0.0, 0.0], + [0.0, min_max[1] + 20, 0.0], + [0.0, 0.0, min_max[2] + 20] + ] + + # Update SIESTA parameters + siesta_params['NumberOfAtoms'] = len(coordinates) + siesta_params['NumberOfSpecies'] = len(species_list) + siesta_params['ChemicalSpeciesLabel'] = block_ChemicalSpeciesLabel + siesta_params['LatticeVectors'] = block_latticeVectors + + return species, coordinates, species_list + + except Exception as e: + print(f"Error processing xyz file, {e}") + sys.exit(0) + + +def composed_block_ExternalElectricField(efield_coord, efield_strenght): + """ + Composes the ExternalElectricField block for SIESTA input files based on the specified coordinate and strength. + + :param efield_coord: Coordinate axis ('x', 'y', or 'z') along which the electric field is applied. + :param efield_strength: Strength of the electric field in V/Angstrom. + :return: List representing the ExternalElectricField block for the specified axis and strength. + """ + if efield_coord == 'x': + return [[efield_strenght, 0.0, 0.0, 'V/Ang']] + elif efield_coord == 'y': + return [[0.0, efield_strenght, 0.0, 'V/Ang']] + elif efield_coord == 'z': + return [[0.0, 0.0, efield_strenght, 'V/Ang']] + else: + print("Problem composing block_ExternalElectricField") + print("Exiting") + sys.exit(0) + + +def copy_pseudopotentials_from_directory(elements, subfolder_name_orig, subfolder_name_dest): + import shutil + # Check if the subfolder_name_orig exits and is a valid path + if subfolder_name_orig is None: + print(subfolder_name_orig + " folder is not set.") + exit(1) + elif not os.path.exists(subfolder_name_orig): + print(f"Path '{subfolder_name_orig}' specified in subfolder_name_orig does not exist.") + exit(1) + + # Check if the subfolder_name_dest exits and is a valid path + if subfolder_name_dest is None: + print(subfolder_name_dest + " folder is not set.") + exit(1) + elif not os.path.exists(subfolder_name_orig): + print(f"Path '{subfolder_name_dest}' specified in subfolder_name_dest does not exist.") + exit(1) + + try: + # Copy the file from source_path to destination_path + for elem in elements: + shutil.copy(subfolder_name_orig + '/' + elem + '.psf', subfolder_name_dest) + # print("File copied successfully!") + except Exception as e: + print("An error occurred while copying the file:", e) + + +# def copy_pseudopotentials_from_environmental_variable(elements, subfolder_name): +# import shutil +# # Get the path from the environmental variable +# source_path = os.getenv('SIESTA_PSEUDOPOTENTIALS') +# +# # Check if the environmental variable is set and contains a valid path +# if source_path is None: +# print("Environmental variable SOURCE_PATH is not set.") +# exit(1) +# elif not os.path.exists(source_path): +# print(f"Path '{source_path}' specified in SOURCE_PATH does not exist.") +# exit(1) +# +# try: +# # Copy the file from source_path to destination_path +# for elem in elements: +# shutil.copy(source_path + '/' + elem + '.psf', subfolder_name) +# # print("File copied successfully!") +# except Exception as e: +# print("An error occurred while copying the file:", e) + + +def create_efield_folders(efields, species, subfolder_name_orig ): + """ + Creates directories for different electric field configurations and generates necessary SIESTA input files. + + :param efields: List of electric field strengths to be applied. + :param species: List of atomic species involved in the simulation. + :param subfolder_name_orig: folder from where pseudopotential will be copied + :return: List of created folder names. + """ + folder_list = [] + + for efield_strength in efields: + for efield_coord in ('x', 'y', 'z'): + # Construct the subfolder name + subfolder_name = base_folder+'/'+input_file.split('/')[-1][:-4] + '_E_' + str(efield_strength) + efield_coord + '/' + print("Creating", subfolder_name) + + # Add the subfolder name to the list + folder_list.append(subfolder_name) + + # Create the directory + os.makedirs(subfolder_name, exist_ok=True) + + # Update SIESTA parameters + siesta_params['Slab.DipoleCorrection'] = 'True' + siesta_params['ExternalElectricField'] = composed_block_ExternalElectricField(efield_coord, efield_strength) + + # Write SIESTA input file and coordinates file + generate_text(siesta_params, folder=subfolder_name) + write_coordinates('siesta.dat', species, coordinates, folder=subfolder_name) + + # Copy pseudopotential files for each species + for specie in species: + copy_pseudopotentials_from_directory(specie, subfolder_name_orig=subfolder_name_orig, + subfolder_name_dest=subfolder_name) + + return folder_list + + +pseudopot_dir = "../files/pseudopotentials/" +# Define SIESTA parameters +siesta_params = get_siesta_default_params() +input_file = sys.argv[1] +base_folder= input_file.split('/')[-1][:-4] +os.makedirs(base_folder, exist_ok=True) + +species, coordinates, species_list = compose_basic_params_and_blocks(input_file) +efields = [0.01, 0.02, -0.01, -0.02] +create_efield_folders(efields, species, pseudopot_dir) + +# FILE_LIST=all.dat +# while IFS= read -r file_name; do python /home/alopezb/lanl/materials/DWave/bethe/bethe.py/sdc_siesta.py molecules_c40_xyz/$file_name ; done < "$FILE_LIST" + + + + +# Generate the Bash for loop +# bash_for_loop = "" +# for folder_name in folder_list: +# bash_for_loop += f"cd {folder_name} && command_to_execute && cd ..\n" +# +# print(bash_for_loop) +# block_PolarizationGrids = [[20, 4, 4, 'yes'], [4, 20, 4, 'yes'], [4, 4, 20, 'yes']] +# siesta_params['PolarizationGrids'] = block_PolarizationGrids diff --git a/parameters/dftb/sdc_sqlite.py b/parameters/dftb/sdc_sqlite.py new file mode 100644 index 00000000..c16d198a --- /dev/null +++ b/parameters/dftb/sdc_sqlite.py @@ -0,0 +1,670 @@ +import sqlite3, os +import sys + +import numpy as np + + +# Function to execute an SQL query and return results avoiding duplicating code. +def execute_query(db_name, query, params=None): + """ + Execute a SQL query on the database. + + Args: + db_name (str): The name of the SQLite database. + query (str): The SQL query to execute. + params (tuple, optional): Parameters to pass to the query. + + Returns: + list: The result of the query. + """ + conn = None + try: + conn = sqlite3.connect(db_name) + c = conn.cursor() + + if params: + c.execute(query, params) + else: + c.execute(query) + + result = c.fetchall() if c.description else None + return result + except sqlite3.Error as e: + print("Error executing query:", e) + return None + finally: + if conn: + conn.close() + + +def get_column_names(table_name, db_name): + query = f"PRAGMA table_info({table_name})" + columns = execute_query(db_name, query) + + # Extract column names from the fetched data + column_names = [column[1] for column in columns] + return column_names + + +# Function to get column names for all tables in the database +def get_all_table_column_names(db_name): + conn = None + try: + conn = sqlite3.connect(db_name) + c = conn.cursor() + + # Get table names in the database + c.execute("SELECT name FROM sqlite_master WHERE type='table'") + table_names = c.fetchall() + + table_column_names = {} + + # Iterate over table names and get column names for each table + for table in table_names: + table_name = table[0] + # column_names = get_column_names(table_name, db_name) #instead of opening a new conn + + c.execute(f"PRAGMA table_info({table_name})") + columns = c.fetchall() + column_names = [column[1] for column in columns] # Extract column names from the fetched data + table_column_names[table_name] = column_names + + conn.close() + + return table_column_names + except sqlite3.Error as e: + print("Error get_all_table_column_names function", e) + return None + finally: + if conn: + conn.close() + + +# Function to extract dipole (in Debye) from output.txt using grep +def extract_dipole(file_path): + import subprocess + output = subprocess.getoutput(' grep dipol ' + file_path + ' |head -1') + return tuple(map(float, output.split()[-3:])) + + +# Function to extract dipole moments +def get_all_dipole_moments(db_name): + """ + Retrieve all dipole moments from the database. + + Returns: + numpy.ndarray: An array containing all dipole moments stored in the database. + """ + query = "SELECT dipole_x, dipole_y, dipole_z FROM Molecule" + dipole_data = execute_query(db_name, query) + if dipole_data: + return np.array(dipole_data) + else: + return np.array([]) + + +# Function to read atomic positions and species from molecule.xyz +def read_xyz(file_path): + with open(file_path, 'r') as file: + lines = file.readlines() + num_atoms = int(lines[0]) + atomic_data = [line.split() for line in lines[2:]] + species = [data[0] for data in atomic_data] + atomic_positions = [list(map(float, data[1:])) for data in atomic_data] + return num_atoms, species, atomic_positions + + +# Function to read Born charges from molecule.BC file +def read_born_charges(file_path): + try: + with open(file_path, 'r') as file: + next(file) # Skip the first line + bq = [list(map(float, line.split())) for line in file] + born_charges = [bq[i:i + 3] for i in range(0, len(bq), 3)] + return born_charges + except Exception as e: + print("Error reading born charges:", e) + return None + + +# Function to read forces from molecule.FA file +def read_forces(file_path): + with open(file_path, 'r') as file: + num_atoms = int(next(file)) # Read the number of atoms + forces = [tuple(map(float, line.split()[1:])) for line in file] + return forces + + +# Function to create a SQLite3 database and insert data +def create_database(db_name, folders): + conn = sqlite3.connect(db_name) + c = conn.cursor() + + # Create tables + c.execute('''CREATE TABLE IF NOT EXISTS Molecule ( + id INTEGER PRIMARY KEY, + name TEXT, + num_atoms INTEGER, + dipole_x REAL, + dipole_y REAL, + dipole_z REAL)''') + + c.execute('''CREATE TABLE IF NOT EXISTS Atom ( + id INTEGER PRIMARY KEY, + molecule_id INTEGER, + atom_number INTEGER, + species TEXT, + x REAL, + y REAL, + z REAL, + force_x REAL, + force_y REAL, + force_z REAL, + born_charge_xx REAL, + born_charge_xy REAL, + born_charge_xz REAL, + born_charge_yx REAL, + born_charge_yy REAL, + born_charge_yz REAL, + born_charge_zx REAL, + born_charge_zy REAL, + born_charge_zz REAL, + FOREIGN KEY(molecule_id) REFERENCES Molecule(id))''') + + # Insert data + for folder in folders: + molecule_name = folder.split('_')[1] + print(molecule_name) + xyz_file = os.path.join(folder, 'molecule.xyz') + born_charges_file = os.path.join(folder, 'molecule.BC') + forces_file = os.path.join(folder, 'molecule.FA') + output_file = os.path.join(folder, 'output.txt') + try: + + # Extract data + num_atoms, species, atomic_positions = read_xyz(xyz_file) + # born_charges = np.reshape(read_born_charges(born_charges_file), (num_atoms, 9)) + born_charges = read_born_charges(born_charges_file) + forces = read_forces(forces_file) + dipole = extract_dipole(output_file) + + # Insert into Molecule table + c.execute("INSERT INTO Molecule (name, num_atoms, dipole_x, dipole_y, dipole_z) VALUES (?, ?, ?, ?, ?)", + (molecule_name, num_atoms, dipole[0], dipole[1], dipole[2])) + molecule_id = c.lastrowid + + for i, (species_info, atom_position, born_charge, force) in enumerate( + zip(species, atomic_positions, born_charges, forces), 1): + c.execute( + "INSERT INTO Atom (molecule_id, atom_number, species, x, y, z, force_x, force_y, force_z, " + "born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz," + "born_charge_zx,born_charge_zy,born_charge_zz) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " + "?, ?, ?, ?)", + (molecule_id, i, species_info, atom_position[0], atom_position[1], atom_position[2], + force[0], force[1], force[2], born_charge[0][0], born_charge[0][1], born_charge[0][2], + born_charge[1][0], born_charge[1][1], born_charge[1][2], born_charge[2][0], born_charge[2][1], + born_charge[2][2])) + + # print(atomic_positions) + # Insert into Atom table + # for i, (species_info, atom_position, born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz, born_charge_zx,born_charge_zy,born_charge_zz, force) in enumerate( + # zip(species, atomic_positions, born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz, born_charge_zx,born_charge_zy,born_charge_zz, forces), 1): + # c.execute( + # "INSERT INTO Atom (molecule_id, atom_number, species, x, y, z, force_x, force_y, force_z, " + # "born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz," + # "born_charge_zx,born_charge_zy,born_charge_zz) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " + # "?, ?, ?, ?)", + # (molecule_id, i, species_info, atom_position[0], atom_position[1], atom_position[2], + # force[0], force[1], force[2], born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz,born_charge_zx,born_charge_zy,born_charge_zz)) + except Exception as e: + print(f"Error processing folder {folder}: {e}") + + conn.commit() + conn.close() + + +# Generic function to extract data from a specific molecule +def extract_data_from_molecule(db_name, molecule_name, query, *args): + """ + Extract data related to a specific molecule from the database. + + Args: + db_name (str): The name of the SQLite database. + molecule_name (str): The name of the molecule. + query (str): The SQL query to execute. + *args: Additional arguments to pass to the query. + + Returns: + tuple or list: The fetched data from the database. + """ + try: + data = execute_query(db_name, query, (molecule_name,) + args) + return data + except sqlite3.Error as e: + print("Error accessing database:", e) + + +def extract_atomic_positions_of_molecule(db_name, molecule_name): + """ + Extract atomic positions of all atoms in a specific molecule from the database. + + Args: + db_name (str): The name of the SQLite database. + molecule_name (str): The name of the molecule. + + Returns: + list: A list containing atomic positions for all atoms in the molecule. + """ + positions_query = ("SELECT x, y, z FROM Atom " + "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id WHERE Molecule.name=?") + + positions_data = execute_query(db_name, positions_query, (molecule_name,)) + if positions_data: + return positions_data + else: + return [] + + +# Function to extract born charges for all atoms in a specific molecule +def extract_born_charges_of_molecule1(db_name, molecule_name): + """ + Extract born charges for all atoms in a specific molecule from the database. + + Args: + db_name (str): The name of the SQLite database. + molecule_name (str): The name of the molecule. + + Returns: + list: A list containing born charges for all atoms in the molecule. + """ + + # Get molecule ID + q1 = "SELECT id FROM Molecule WHERE name=?", (molecule_name,) + molecule_id = execute_query(db_name, q1, (molecule_name,)) + q1 = "SELECT num_atoms FROM Molecule WHERE id=?", (molecule_id,) + num_atoms = execute_query(db_name, q1, (molecule_name,)) + + born_charges_data = execute_query(db_name, born_charges_query, (molecule_name,)) + if born_charges_data: + return born_charges_data + else: + return [] + + +def extract_born_charges_of_molecule(db_name, molecule_name): + """ + Extract born charges for all atoms in a specific molecule from the database. + + Args: + db_name (str): The name of the SQLite database. + molecule_name (str): The name of the molecule. + + Returns: + list: A list containing born charges for all atoms in the molecule. + """ + born_charges_query = ("SELECT born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy," + "born_charge_yz, born_charge_zx,born_charge_zy,born_charge_zz FROM Atom " + "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id WHERE Molecule.name=?") + + born_charges_data = execute_query(db_name, born_charges_query, (molecule_name,)) + if born_charges_data: + return born_charges_data + else: + return [] + + +# regression_testing function +def regression_testing(): + db_name = 'molecules.db' + molecule_name = '5' + + # Example usage: Retrieve dipole moment from a specific molecule + dipole_query = "SELECT dipole_x, dipole_y, dipole_z FROM Molecule WHERE name=?" + dipole_data = extract_data_from_molecule(db_name, molecule_name, dipole_query) + print(f"Dipole moment of molecule {molecule_name}: {dipole_data}") + + # Example usage: Retrieve forces from a specific atom in a specific molecule + atom_number = 1 + forces_query = ("SELECT force_x, force_y, force_z FROM Atom INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " + "WHERE Molecule.name=? AND Atom.atom_number=?") + forces_data = extract_data_from_molecule(db_name, molecule_name, forces_query, atom_number) + print(f"Forces on atom {atom_number} in molecule {molecule_name}: {forces_data}") + + # Retrieve atomic position of a specific atom in a specific molecule + position_query = ("SELECT x, y, z FROM Atom INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " + "WHERE Molecule.name=? AND Atom.atom_number=?") + position_data = extract_data_from_molecule(db_name, molecule_name, position_query, atom_number) + print(f"Atomic position of atom {atom_number} in molecule {molecule_name}: {position_data}") + + # Retrieve all atomic positions in a specific molecule + positions_data = extract_atomic_positions_of_molecule(db_name, molecule_name) + print(f"Atomic positions of all atoms in molecule {molecule_name}: {positions_data}") + + # Retrieve all born_charges in a specific molecule + born_charges_data = extract_born_charges_of_molecule(db_name, molecule_name) + print(f"Born_charges of all atoms in molecule {molecule_name}: {born_charges_data}") + + # retriev bond lengths for a given molecule + bond_lengths_matrix = calculate_bond_lengths_for_molecule(db_name, "2") + print("Bond Lengths Matrix:") + for v in bond_lengths_matrix: print(v) + + # Calculate statistics of all mag. mom. aligned along z + dipole_moments = get_all_dipole_moments(db_name) + rotated_dipoles = rotate_dipoles_to_z_axis(dipole_moments) + analyze_dipole_moments(rotated_dipoles, db_name) + + # Get info about the column name of a table (Atom) + d = get_column_names("Atom", db_name) + for v in d: print(v) + + # Get info about a molecule + d = extract_molecule_data(db_name, "2") + for v in d: print(v, d[v]) + + +def analyze_dipole_moments(dipoles, db_name): + dipole_array = get_all_dipole_moments(db_name) + + # Calculate statistics + dipole_mean = np.mean(dipole_array, axis=0) + dipole_median = np.median(dipole_array, axis=0) + dipole_std = np.std(dipole_array, axis=0) + # dipole_mean, dipole_median, dipole_std = analyze_dipole_moments(db_name) + print("Dipole moment statistics:") + print("Mean:", dipole_mean) + print("Median:", dipole_median) + print("Standard Deviation:", dipole_std) + + +# Function to calculate bond lengths between pairs of atoms +def calculate_bond_lengths(positions): + num_atoms = len(positions) + bond_lengths = [] + + for i in range(num_atoms): + for j in range(i + 1, num_atoms): + distance = np.linalg.norm(positions[i] - positions[j]) + bond_lengths.append((i, j, distance)) + + return bond_lengths + + +# Function to extract positions of atoms for each molecule from the database +def extract_positions_for_molecule(db_name, molecule_name): + """ + Extract atomic positions for a specific molecule from the database. + + Args: + db_name (str): The name of the SQLite database. + molecule_name (str): The name of the molecule. + + Returns: + numpy.ndarray: Array containing atomic positions for the molecule. + """ + query = ("SELECT x, y, z FROM Atom " + "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " + "WHERE Molecule.name=?") + positions = execute_query(db_name, query, (molecule_name,)) + return np.array(positions) + + +# Function to calculate bond lengths for each molecule +def calculate_bond_lengths_for_molecule(db_name, molecule_name): + # Extract positions of atoms for the molecule + positions = extract_positions_for_molecule(db_name, molecule_name) + # Calculate bond lengths + return calculate_bond_lengths(positions) + + +# Function to calculate bond angles between sets of three atoms +def calculate_bond_angles(positions): + num_atoms = len(positions) + bond_angles = [] + + for i in range(num_atoms): + for j in range(num_atoms): + for k in range(num_atoms): + if i != j and i != k and j != k: + vec_ij = positions[i] - positions[j] + vec_kj = positions[k] - positions[j] + angle = np.arccos(np.dot(vec_ij, vec_kj) / (np.linalg.norm(vec_ij) * np.linalg.norm(vec_kj))) + bond_angles.append((i, j, k, np.degrees(angle))) + + return bond_angles + + +# Function to calculate dihedral angles between sets of four atoms +def calculate_dihedral_angles(positions): + num_atoms = len(positions) + dihedral_angles = [] + + for i in range(num_atoms): + for j in range(num_atoms): + for k in range(num_atoms): + for l in range(num_atoms): + if len({i, j, k, l}) == 4: # Ensure all atoms are distinct + vec_ij = positions[i] - positions[j] + vec_jk = positions[j] - positions[k] + vec_kl = positions[k] - positions[l] + + normal_ijk = np.cross(vec_ij, vec_jk) + normal_jkl = np.cross(vec_jk, vec_kl) + + angle = np.arccos(np.dot(normal_ijk, normal_jkl) / + (np.linalg.norm(normal_ijk) * np.linalg.norm(normal_jkl))) + + # Determine sign of the angle based on the sign of the dot product + sign = np.sign(np.dot(normal_ijk, vec_kl)) + + dihedral_angle = np.degrees(angle) * sign + dihedral_angles.append((i, j, k, l, dihedral_angle)) + + return dihedral_angles + + +# Function to extract data from a molecule folder +def extract_molecule_data(db_name, molecule_name): + """ + Extract data for a molecule from the database. + + Args: + db_name (str): The name of the SQLite database. + molecule_name (str): The name of the molecule to extract data for. + + Returns: + dict: A dictionary containing information about the molecule, including its name, atomic positions, + Born charges, and dipole moment. + """ + # Extract molecule name from folder name + molecule_data = {'name': molecule_name} + + # Define SQL queries + atom_query = ("SELECT species, x, y, z FROM Atom " + "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " + "WHERE Molecule.name=?") + born_charge_query = ("SELECT born_charge_x, born_charge_y, born_charge_z FROM Atom " + "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " + "WHERE Molecule.name=?") + dipole_query = "SELECT dipole_x, dipole_y, dipole_z FROM Molecule WHERE name=?" + + # Execute SQL queries + atom_records = execute_query(db_name, atom_query, (molecule_name,)) + born_charge_records = execute_query(db_name, born_charge_query, (molecule_name,)) + dipole_record = execute_query(db_name, dipole_query, (molecule_name,)) + + # Process fetched data + atoms = [{'species': record[0], 'x': record[1], 'y': record[2], 'z': record[3]} for record in atom_records] + dipole = {'x': dipole_record[0][0], 'y': dipole_record[0][1], 'z': dipole_record[0][2]} if dipole_record else None + born_charges = [{'x': record[0], 'y': record[1], 'z': record[2]} for record in born_charge_records] + + # Populate molecule_data dictionary + molecule_data['atoms'] = atoms + molecule_data['born_charges'] = born_charges + molecule_data['dipole'] = dipole + + return molecule_data + + +def insert_new_molecule_data(db_name, molecule_name, num_atoms, dipole, atomic_positions, species, born_charges, + forces): + conn = sqlite3.connect(db_name) + c = conn.cursor() + + try: + # Insert into Molecule table + c.execute("INSERT INTO Molecule (name, num_atoms, dipole_x, dipole_y, dipole_z) VALUES (?, ?, ?, ?, ?)", + (molecule_name, num_atoms, dipole[0], dipole[1], dipole[2])) + molecule_id = c.lastrowid + + # Insert into Atom table + for i, (species_info, atom_position, born_charge, force) in enumerate( + zip(species, atomic_positions, born_charges, forces), 1): + c.execute( + "INSERT INTO Atom (molecule_id, atom_number, species, x, y, z, force_x, force_y, force_z, " + "born_charge_xx, born_charge_xy, born_charge_xz, born_charge_yx, born_charge_yy, born_charge_yz, " + "born_charge_zx, born_charge_zy, born_charge_zz) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + (molecule_id, i, species_info, atom_position[0], atom_position[1], atom_position[2], + force[0], force[1], force[2], born_charge[0][0], born_charge[0][1], born_charge[0][2], + born_charge[1][0], born_charge[1][1], born_charge[1][2], born_charge[2][0], born_charge[2][1], + born_charge[2][2])) + + conn.commit() + print(f"Data for molecule '{molecule_name}' inserted successfully!") + except Exception as e: + conn.rollback() + print(f"Error inserting data for molecule '{molecule_name}': {e}") + finally: + conn.close() + + +# Function to check if a molecule exists in the database +def molecule_exists_in_database(db_name, molecule_name): + """ + Check if a molecule exists in the database. + + Args: + db_name (str): The name of the SQLite database. + molecule_name (str): The name of the molecule to check. + + Returns: + bool: True if the molecule exists in the database, False otherwise. + """ + query = "SELECT COUNT(*) FROM Molecule WHERE name=?" + result = execute_query(db_name, query, (molecule_name,)) + count = result[0][0] if result else 0 + return count > 0 + + +def print_table_column_names(): + table_column_names = get_all_table_column_names(db_name) + for table_name, column_names in table_column_names.items(): + print(f"Table: {table_name}") + print("Columns:", column_names) + + +def rotate_dipoles_to_z_axis(dipole_moments): + rotated_dipoles = [] + + for dipole in dipole_moments: + # Compute magnitude of dipole moment + magnitude = np.linalg.norm(dipole) + + # Find largest component and corresponding index + max_index = np.argmax(np.abs(dipole)) + + # Compute rotation angle + if max_index == 0: # x-component is largest + angle = np.arctan2(dipole[1], dipole[0]) + elif max_index == 1: # y-component is largest + angle = np.arctan2(dipole[0], dipole[1]) - np.pi / 2 + else: # z-component is largest, no rotation needed + angle = 0 + + # Create rotation matrix + rotation_matrix = np.array([[np.cos(angle), -np.sin(angle), 0], + [np.sin(angle), np.cos(angle), 0], + [0, 0, 1]]) + + # Rotate dipole moment + rotated_dipole = np.dot(rotation_matrix, dipole / magnitude) * magnitude + rotated_dipoles.append(rotated_dipole) + + return rotated_dipoles + + +def compute_born_charges_from_FA_files(prefix, field, force_filename, print_charges=0): + # Define directories + dirsp = [prefix + str(field) + 'x', prefix + str(field) + 'y', prefix + str(field) + 'z'] + dirsm = [prefix + str(field * -1) + 'x', prefix + str(field * -1) + 'y', prefix + str(field * -1) + 'z'] + # Read forces from files + forces_pos = [read_forces(v + '/' + force_filename) for v in dirsp] + forces_minus = [read_forces(v + "/" + force_filename) for v in dirsm] + charges = [] + for j in range(len(forces_minus[0])): + charges_atomk = [] + # Compute charges for each atom + for k in range(3): + charges_atomk.append([(forces_pos[i][j][k] - forces_minus[i][j][k]) / (2 * field) for i in range(3)]) + if print_charges: print( + '{:,d}\t {:,.3f}\t {:,.3f}\t {:,.3f} '.format(j+1, charges_atomk[k][0], charges_atomk[k][1], + charges_atomk[k][2])) + if print_charges: print('') + charges.append(charges_atomk) + return charges + + +def compute_born_charges_from_FA_files_highOrder(prefix, field1, field2, force_filename, print_charges=0): + # Define directories + dirsp1 = [prefix + str(field1) + 'x', prefix + str(field1) + 'y', prefix + str(field1) + 'z'] + dirsm1 = [prefix + str(field1 * -1) + 'x', prefix + str(field1 * -1) + 'y', prefix + str(field1 * -1) + 'z'] + dirsp2 = [prefix + str(field2) + 'x', prefix + str(field2) + 'y', prefix + str(field2) + 'z'] + dirsm2 = [prefix + str(field2 * -1) + 'x', prefix + str(field2 * -1) + 'y', prefix + str(field2 * -1) + 'z'] + + # Read forces from files + forces_pos1 = [read_forces(v + '/' + force_filename) for v in dirsp1] + forces_minus1 = [read_forces(v + "/" + force_filename) for v in dirsm1] + forces_pos2 = [read_forces(v + '/' + force_filename) for v in dirsp2] + forces_minus2 = [read_forces(v + "/" + force_filename) for v in dirsm2] + + charges = [] + for j in range(len(forces_minus1[0])): + charges_atomk = [] + # Compute charges for each atom + for k in range(3): + charges_atomk.append([(-1.0 / 12 * forces_pos2[i][j][k] + 2.0 / 3 * forces_pos1[i][j][k] - 2.0 / 3 * + forces_minus1[i][j][k] + 1.0 / 12 * forces_minus2[i][j][k]) / (1 * field1) for i in + range(3)]) + if print_charges: print( + '{:,d}\t {:,.3f}\t {:,.3f}\t {:,.3f} '.format(j+1, charges_atomk[k][0], charges_atomk[k][1], + charges_atomk[k][2])) + if print_charges: print('') + charges.append(charges_atomk) + return charges + + +if __name__ == "__main__": + db_name = 'molecules2.db' + # molecule_folders = [f for f in os.listdir('.') if os.path.isdir(f) and f.startswith('molecule_')] + # molecule_folders = ["molecule_149"] + # create_database(db_name, molecule_folders) + # regression_testing() + # d = extract_born_charges_of_molecule(db_name, "149") + # print(d) + # print(extract_molecule_data(db_name,"2")) + # print_table_column_names() + + # TEST: + # insert_new_molecule_data(db_name, molecule_name, num_atoms, dipole, atomic_positions, species, born_charges, forces) + # insert_new_molecule_data( + # update_database_with_new_molecules(db_name, molecule_folders) + # bond_angles = calculate_bond_angles(positions) + # dihedral_angles = calculate_dihedral_angles(positions) + # prefix = "C100-C1-10_E_" + # prefix = "C40-C1-4_E_" + prefix = "molecule_E_" + field1, field2 = 0.01, 0.02 + force_file_name = 'molecule.FA' + + charges = compute_born_charges_from_FA_files(prefix, field2, force_file_name, print_charges=1) + # charges = compute_born_charges_from_FA_files_highOrder(prefix, field1, field2, force_file_name, print_charges=1) diff --git a/parameters/gpmd_interface_example/H2O.pdb b/parameters/gpmd_interface_example/H2O.pdb new file mode 100644 index 00000000..c7a2b2c5 --- /dev/null +++ b/parameters/gpmd_interface_example/H2O.pdb @@ -0,0 +1,9 @@ +REMARK Generated by PROGRESS library +TITLE H2Oc.pdb +CRYST1 100.530 100.530 100.530 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 O HOH 1 50.077 50.084 50.265 0.00 0.00 O +ATOM 2 H HOH 0 49.659 50.945 50.265 0.00 0.00 H +ATOM 3 H HOH 0 51.058 49.765 50.265 0.00 0.00 H +TER +END diff --git a/parameters/gpmd_interface_example/README.md b/parameters/gpmd_interface_example/README.md new file mode 100644 index 00000000..f6a65751 --- /dev/null +++ b/parameters/gpmd_interface_example/README.md @@ -0,0 +1,15 @@ +Example of GPMD code call from python +===================================== + + +Instructions: + + - Clone BML and PROGRESS repositories by using the `clone_all_codes.sh` script. + - Use the scripts to build BML (`buil_bml.sh`) followed by PROGRESS (`build_progress.sh`). + + + - Run as follows: + + mpirun -np python main_mpi.py + + diff --git a/parameters/gpmd_interface_example/build_bml.sh b/parameters/gpmd_interface_example/build_bml.sh new file mode 100644 index 00000000..e2719e52 --- /dev/null +++ b/parameters/gpmd_interface_example/build_bml.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Make sure all the paths are correct + + +MY_PATH=$(pwd) +export CC=${CC:=gcc} +export FC=${FC:=gfortran} +export CXX=${CXX:=g++} +export MAGMA_ROOT=${MAGMA_ROOT:="${HOME}/magma"} +export BLAS_VENDOR=${BLAS_VENDOR:=OpenBLAS} +export BML_OPENMP=${BML_OPENMP:=yes} +export BML_CUDA=${BML_CUDA:=no} +export BML_MAGMA=${BML_MAGMA:=no} +export BML_CUSOLVER=${BML_CUSOLVER:=no} +export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:=yes} +export INSTALL_DIR=${INSTALL_DIR:="${MY_PATH}/bml/install"} +export BML_TESTING=${BML_TESTING:=yes} +export CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:=Release} +export EXTRA_CFLAGS=${EXTRA_CFLAGS:="-g -O0 -lm -fPIC"} +export EXTRA_LINK_FLAGS=${EXTRA_LINK_FLAGS:="-lm -fPIC "} + +cd bml; ./build.sh configure; cd build; make -j; make install cd $MY_PATH diff --git a/parameters/gpmd_interface_example/build_cmake.sh b/parameters/gpmd_interface_example/build_cmake.sh new file mode 100644 index 00000000..5744591a --- /dev/null +++ b/parameters/gpmd_interface_example/build_cmake.sh @@ -0,0 +1,30 @@ +THIS_PATH=`pwd` +METIS_LIB="$HOME/metis-5.1.0/build/Linux-x86_64/libmetis" +METIS_INC="$HOME/metis-5.1.0/build/Linux-x86_64/include" +PROGRESS_LIB="$THIS_PATH/qmd-progress/install/" +PROGRESS_INC="$THIS_PATH/qmd-progress/install/include" +BML_LIB="$THIS_PATH/bml/install/" +BML_INC="$THIS_PATH/bml/install/include" +cd ./qmd-progress/examples/gpmdk/ +rm -rf build +mkdir build +cd build + +# cmake using specified flags: +# Update the -L flag in "-DEXTRA_FCFLAGS" to point to the location of metis and GKlib libraries +# Update the "-DCMAKE_PREFIX_PATH" locations to point to the "install" directories of bml and qmd-progress as well as the general location of metis and GKlib +#cmake -DCMAKE_Fortran_COMPILER="gfortran" -DPROGRESS_MPI="no" \ +# -DEXTRA_FCFLAGS="-Wall -Wunused -fopenmp -lm -fPIC -g -O0 -fcheck=all --check=bounds -lbml -lbml_fortran -L$BML_LIB/lib64 -L$METIS_LIB -lprogress -L$PROGRESS_LIB/lib64 -lmetis -I$METIS_INC -I$PROGRESS_INC -I$BML_INC -lm -fPIC" \ +# -DLIB="yes" -DLATTE="no" -DLATTE_PREC="DOUBLE" -DLATTE_DIR="/home/cnegre/LATTE/" \ +# -DCMAKE_PREFIX_PATH="$PROGRESS_LIB;$PROGRESS_INC;$BML_LIB;$BML_INC;$METIS_LIB;$METIS_INC" ../src/ +#make + +cmake -DCMAKE_Fortran_COMPILER="gfortran" -DPROGRESS_MPI="no" \ + -DEXTRA_FCFLAGS="-Wall -Wunused -fopenmp -lm -fPIC -g -O0 -fcheck=all --check=bounds -lmetis -lm -fPIC" \ + -DLIB="yes" -DLATTE="no" -DLATTE_PREC="DOUBLE" -DLATTE_DIR="" \ + -DCMAKE_PREFIX_PATH="$PROGRESS_LIB;$PROGRESS_INC;$BML_LIB;$BML_INC;$METIS_LIB;$METIS_INC" ../src/ +make + + + + diff --git a/parameters/gpmd_interface_example/build_progress.sh b/parameters/gpmd_interface_example/build_progress.sh new file mode 100644 index 00000000..114d8bf0 --- /dev/null +++ b/parameters/gpmd_interface_example/build_progress.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Make sure all the paths are correct + + +rm -r build +rm -r install + +# Set METIS and BML Library locations +METIS_LIB="$HOME/metis-5.1.0/build/Linux-x86_64/libmetis" +METIS_INC="$HOME/metis-5.1.0/build/Linux-x86_64/include" + +MY_PATH=`pwd` + +BML_LIB="$MY_PATH/bml/install" + +cd qmd-progress + +export CC=${CC:=gcc} +export FC=${FC:=gfortran} +#export FC=${FC:=/usr/bin/mpif90} +export CXX=${CXX:=g++} +export PROGRESS_OPENMP=${PROGRESS_OPENMP:=yes} +export INSTALL_DIR=${INSTALL_DIR:="${MY_PATH}/qmd-progress/install"} +export PROGRESS_GRAPHLIB=${PROGRESS_GRAPHLIB:=no} +export PROGRESS_TESTING=${PROGRESS_TESTING:=yes} +export PROGRESS_MPI=${PROGRESS_MPI:=no} +export PROGRESS_BENCHMARKS=${PROGRESS_BENCHMARKS:=yes} +export CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:=Release} +export PROGRESS_EXAMPLES=${PROGRESS_EXAMPLES:=no} +export CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH:=$BML_LIB} +export BML_PREFIX_PATH=${BML_PREFIX_PATH:=$BML_LIB} +export EXTRA_FCFLAGS=${EXTRA_FCFLAGS:="-g -O0 -lm -fPIC"} +export EXTRA_LINK_FLAGS=${EXTRA_LINK_FLAGS:="-lm -fPIC"} +export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:=yes} +./build.sh configure ; cd build ; make install + + diff --git a/parameters/gpmd_interface_example/clone_all_codes.sh b/parameters/gpmd_interface_example/clone_all_codes.sh new file mode 100644 index 00000000..5c81511f --- /dev/null +++ b/parameters/gpmd_interface_example/clone_all_codes.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e +rm -rf bml; git clone -b hackathon git@github.com:lanl/bml.git +rm -rf qmd-progress; git clone -b hackathon git@github.com:lanl/qmd-progress.git + diff --git a/parameters/gpmd_interface_example/main_bch_dspl.py b/parameters/gpmd_interface_example/main_bch_dspl.py new file mode 100644 index 00000000..6fbd0c44 --- /dev/null +++ b/parameters/gpmd_interface_example/main_bch_dspl.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 + +import numpy as np +from sedacs.system import * +from sedacs.file_io import * +from sedacs.periodic_table import PeriodicTable +import ctypes as ct +import os +import scipy.linalg as sp +from gpmd import * + + +def get_displ_born_charges(latticeVectors,symbols,atomTypes,coordsIn,verb): + + nats = len(atomTypes) + bornDispl = np.zeros((nats,3,3)) + dspl = 1.0E-5 + field = np.zeros((3)) + coords = np.copy(coordsIn) + err,charges_out,forces_out,dipole_saved, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) + for j in range(nats): + coords[j,0] = coordsIn[j,0] + dspl + err,charges_out,forces_out,dipole_out_p, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) + coords[j,0] = coordsIn[j,0] - 2*dspl + err,charges_out,forces_out,dipole_out_m, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) + bornDispl[j,:,0] = (dipole_out_p - dipole_out_m)/(2*dspl) + coords[j,0] = coordsIn[j,0] + dspl + + for j in range(nats): + coords[j,1] = coordsIn[j,1] + dspl + err,charges_out,forces_out,dipole_out_p,energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) + coords[j,1] = coordsIn[j,1] - 2*dspl + err,charges_out,forces_out,dipole_out_m, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) + coords[j,1] = coordsIn[j,1] + dspl + bornDispl[j,:,1] = (dipole_out_p - dipole_out_m)/(2*dspl) + for j in range(nats): + coords[j,2] = coordsIn[j,2] + dspl + err,charges_out,forces_out,dipole_out_p, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) + coords[j,2] = coordsIn[j,2] - 2*dspl + err,charges_out,forces_out,dipole_out_m, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) + coords[j,2] = coordsIn[j,2] + dspl + bornDispl[j,:,2] = (dipole_out_p - dipole_out_m)/(2*dspl) + + + bchMat = np.zeros((3,3)) + bornCharges = np.zeros((nats)) + for i in range(len(bornDispl[:,0,0])): + bchMat[:,:] = bornDispl[i,:,:] + E,Q = sp.eigh(bchMat) + bornCharges[i] = sum(E)/3.0 + + return bornCharges, bornDispl + + + +############################### +## Main starts here +############################### + +#****************************** +#Check forces with no Field +#****************************** +verb = 0 +#Load the coordinates and atom types +latticeVectors,symbols,atomTypes,coords0 = read_pdb_file("H2O.pdb",lib="None",verb=True) + +nats = len(atomTypes) +dspl = 0.00001 +field = np.zeros((3)) +field[0] = 0.0 + +#Get forces at coords0 +err,charges_out,forces0,dipole_out, energyp = gpmd(latticeVectors,symbols,atomTypes,coords0,field,verb) + +coordsP = np.copy(coords0) +coordsP[0,0] = coords0[0,0] + dspl +err,charges_out_pl,forces_out_pl,dipole_out, energyp = gpmd(latticeVectors,symbols,atomTypes,coordsP,field,verb) + +coordsM = np.copy(coords0) +coordsM[0,0] = coords0[0,0] - dspl +err,charges_out_pl,forces_out_pl,dipole_out, energym = gpmd(latticeVectors,symbols,atomTypes,coordsM,field,verb) + +print("Check: dE/dx,F",(energyp - energym)/(2*dspl),forces0[0,0]) +exit(0) +#****************************** +#Compute Born Charges using displacements +#****************************** + +bornChDiag,bornChargesDspl = get_displ_born_charges(latticeVectors,symbols,atomTypes,coords0,verb) + +for j in range(len(atomTypes)): + print("Atom index",j,"","Mulliquen Charges:",charges_out[j]) + print("Born Charges:\n",bornChargesDspl[j,:,:]) + + +exit(0) diff --git a/parameters/gpmd_interface_example/main_mpi.py b/parameters/gpmd_interface_example/main_mpi.py new file mode 100644 index 00000000..c8d7f46c --- /dev/null +++ b/parameters/gpmd_interface_example/main_mpi.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import numpy as np +from sedacs.system import * +from sedacs.file_io import * +from sedacs.periodic_table import PeriodicTable +import ctypes as ct +import os +import scipy.linalg as sp +from gpmd import * +from sedacs.mpi import collect_and_sum_matrices + +MPI = None +try: + from mpi4py import MPI + + is_mpi_available = True +except ImportError: + is_mpi_available = False + + +############################### +## Main starts here +############################### + +if is_mpi_available: + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + numranks = comm.Get_size() +else: + comm = None + rank = 0 + numranks = 1 + +#Folders with different set of params +folderName = "run"+str(rank) +my_path = os.getcwd() +new_path = my_path+"/"+folderName +os.chdir(new_path) +verb = 0 + +#Load the coordinates and atom types +latticeVectors,symbols,atomTypes,coords0 = read_coords_file("H2O.pdb",lib="None",verb=True) + +field = np.zeros((3)) + +#Get forces at coords0 with the params from folder "rank" +err,charges_out,forces0,dipole_out, energyp = gpmd(latticeVectors,symbols,atomTypes,coords0,field,verb) + diff --git a/parameters/gpmd_interface_example/main_optim_params.py b/parameters/gpmd_interface_example/main_optim_params.py new file mode 100644 index 00000000..cb23b66a --- /dev/null +++ b/parameters/gpmd_interface_example/main_optim_params.py @@ -0,0 +1,612 @@ +#!/usr/bin/env python3 +import sys + +import numpy as np +from sedacs.system import * +from sedacs.periodic_table import PeriodicTable +# from sdc_system import * +# from sdc_ptable import ptable +import ctypes as ct +import os +import scipy.linalg as sp +import sedacs.file_io as fileio +from scipy.optimize import minimize +from scipy import optimize +from gpmd import * +from datetime import datetime + + +#Run GPMD and get the total energy. +def get_energy(coords_in,lattiveVectors,atomTypes,symbols): + field = np.zeros((3)) + coords = coords_in.reshape(len(atomTypes),3) + err, charges_out, forces_saved, dipole_out, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) + with open("traj.xyz", 'a+') as line_file: + line_file.write((str(len(atomTypes))+ "\n")) + line_file.write(("t=")+"\n") + for i in range(len(atomTypes)): + line_file.write((symbols[atomTypes[i]] + " " + str(coords[i,0]) + " " + str(coords[i,1]) + " " + str(coords[i,2]) + "\n")) + + with open("energ.dat", 'a+') as line_file: + line_file.write(str(energy) + "\n") + + return energy + +def optimize_coordinates(lattiveVectors,types,symbols,coords,method='CG',parampath='/tmp',iterations=100,tol=0.01): + + coordsv = coords.reshape(-1) + result = minimize(get_energy, coordsv, args=(lattiveVectors,atomTypes,symbols), + method=method, jac=None, hess=None, hessp=None, + bounds=bounds, constraints=(), tol=0.001, callback=None, options={'maxiter': 100}) + +# bounds = np.zeros((len(coordsv), 2)) +# bounds[:, 0] = coordsv[:] +# bounds[:, 1] = coordsv[:] +# bounds[:, 0] = bounds[:, 0] - 5.1 +# bounds[:, 1] = bounds[:, 1] + 5.1 + +# dual_annealing(get_energy,bounds, args=(lattiveVectors,atomTypes,symbols), maxiter=1000, initial_temp=10.0, restart_temp_ratio=2e-05, visit=2.62, accept=-5.0, maxfun=10000000.0, seed=None, no_local_search=False, callback=None, x0=None) + +# result = optimize.anneal(get_energy, coordsv, args=(lattiveVectors,atomTypes,symbols), schedule='boltzmann', +# full_output=True, maxiter=500, lower=-10, +# upper=10, dwell=250, disp=True) + + return result.x + +def read_electfile_to_dict(filename): + with open(filename, 'r') as file: + file.readline() + lines = file.readlines() + + # Extract the headers (column names) + headers = lines[0].split() + + # Find the index where the second set of repeated headers starts (after the third column) + all_headers = headers + # Initialize a list to store all the dictionaries + dict_list = [] + + # Process the remaining lines to create dictionaries + for line in lines[1:]: + values = line.split() + + # Create a dictionary using headers as keys + # Convert numerical values (from the 4th column onward) to floats + data_dict = {all_headers[i]: (values[i] if i < 2 else float(values[i])) + for i in range(len(all_headers))} + + # Add the dictionary to the list + dict_list.append(data_dict) + + return dict_list + + +def read_ppotfile_to_dict(filename): + with open(filename, 'r') as file: + file.readline() + lines = file.readlines() + + # Extract the headers (column names) + headers = lines[0].split() + + # Find the index where the second set of repeated headers starts (after the third column) + all_headers = headers + # Initialize a list to store all the dictionaries + dict_list = [] + + # Process the remaining lines to create dictionaries + for line in lines[1:]: + values = line.split() + + # Create a dictionary using headers as keys + # Convert numerical values (from the 4th column onward) to floats + data_dict = {all_headers[i]: (values[i] if i < 2 else float(values[i])) + for i in range(len(all_headers))} + + # Add the dictionary to the list + dict_list.append(data_dict) + + return dict_list + + +def read_file_to_dict(filename): + with open(filename, 'r') as file: + file.readline() + lines = file.readlines() + + # Extract the headers (column names) + headers = lines[0].split() + + # Find the index where the second set of repeated headers starts (after the third column) + num_first_headers = 3 + first_set = headers[num_first_headers:num_first_headers + 8] # First set of H0, B1, etc. + second_set = [header + "_2" for header in first_set] # Rename second set + + # Combine the first 3 headers, first set of H0, B1, ..., and second set + all_headers = headers[:num_first_headers] + first_set + second_set + + # Initialize a list to store all the dictionaries + dict_list = [] + + # Process the remaining lines to create dictionaries + for line in lines[1:]: + values = line.split() + + # Create a dictionary using headers as keys + # Convert numerical values (from the 4th column onward) to floats + data_dict = {all_headers[i]: (values[i] if i < num_first_headers else float(values[i])) + for i in range(len(all_headers))} + + # Add the dictionary to the list + dict_list.append(data_dict) + + return dict_list + + +def get_dipole(coords, charges): + dipole = np.zeros(3) + + for i in range(len(charges)): + dipole[0] = dipole[0] + charges[i] * coords[i, 0] + dipole[1] = dipole[1] + charges[i] * coords[i, 1] + dipole[2] = dipole[2] + charges[i] * coords[i, 2] + + +def get_field_born_charges(latticeVectors, symbols, atomTypes, coords, verb): + field = np.zeros(3) + err, charges_out, forces_saved, dipole_out, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) + nats = len(atomTypes) + bornField = np.zeros((nats, 3, 3)) + for i in range(3): + field = np.zeros(3) + field[i] = -1.0E-4 + err, charges_out, forces_out, dipole_out, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) + bornField[:, :, i] = (forces_out - forces_saved) / np.linalg.norm(field) + + field = np.zeros(3) + field[i] = 1.0E-4 + err, charges_out, forces_out, dipole_out, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) + bornField[:, :, i] = (forces_out - forces_saved) / np.linalg.norm(field) + + bchMat = np.zeros((3, 3)) + bornCharges = np.zeros((nats)) + for i in range(len(bornField[:, 0, 0])): + bchMat[:, :] = bornField[i, :, :] + E, Q = sp.eigh(bchMat) + bornCharges[i] = sum(E) / 3.0 + + return bornCharges + + +def get_displ_born_charges(latticeVectors, symbols, atomTypes, coordsIn, verb): + nats = len(atomTypes) + bornDispl = np.zeros((nats, 3, 3)) + dspl = 1.0E-5 + field = np.zeros(3) + coords = np.copy(coordsIn) + err, charges_out, forces_out, dipole_saved, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) + + # X-coords + for j in range(nats): + coords[j, 0] = coordsIn[j, 0] + dspl + err, charges_out, forces_out, dipole_out_p, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, + verb) + coords[j, 0] = coordsIn[j, 0] - dspl + err, charges_out, forces_out, dipole_out_m, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, + verb) + bornDispl[j, :, 0] = (dipole_out_p - dipole_out_m) / (2 * dspl) + + # Y-coords + for j in range(nats): + coords[j, 1] = coordsIn[j, 1] + dspl + err, charges_out, forces_out, dipole_out_p, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, + verb) + coords[j, 1] = coordsIn[j, 1] - dspl + err, charges_out, forces_out, dipole_out_m, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, + verb) + bornDispl[j, :, 1] = (dipole_out_p - dipole_out_m) / (2 * dspl) + + # Z-coords + for j in range(nats): + coords[j, 2] = coordsIn[j, 2] + dspl + err, charges_out, forces_out, dipole_out_p, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, + verb) + coords[j, 2] = coordsIn[j, 2] - dspl + err, charges_out, forces_out, dipole_out_m, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, + verb) + bornDispl[j, :, 2] = (dipole_out_p - dipole_out_m) / (2 * dspl) + + bchMat = np.zeros((3, 3)) + bornCharges = np.zeros((nats)) + for i in range(len(bornDispl[:, 0, 0])): + bchMat[:, :] = bornDispl[i, :, :] + E, Q = sp.eigh(bchMat) + bornCharges[i] = sum(E) / 3.0 + + return bornCharges, bornDispl + + +def get_forces_siesta(fname): + forces_siesta = [] + with open(fname) as f: + numlines = int(f.readline()) + for i in range(numlines): + l = f.readline().split() + forces_siesta.append([float(l[1]), float(l[2]), float(l[3])]) + forces_siesta = np.array(forces_siesta) + return forces_siesta + +#params_names, ppotparams_names,forces_siesta, all_integrals_SS,all_ppots +#params_values, params_names, forces_siesta, all_integrals + +def cost_function(params_names, ppotparams_names,forces_siesta, all_integrals_SS,all_ppots): + modif_CC_all_integrals(params_values, params_names, all_integrals) + modif_ppots(ppot_values, ppot_names, all_ppots) + modif_elect(elect_values, elect_names, all_elect) + err, charges, gpmd_forces, dipole, energy = gpmd(latticeVectors, symbols, atomTypes, coords0, field, verb) + sum_sq = [] + for gp, si in zip(forces_siesta, gpmd_forces): + sum_sq.append(np.linalg.norm(gp - si)) + total=sum( v*v for v in sum_sq) + print("total_cost", total) + # sys.exit() + return total + + +def cost_function2(all_values, int_names, ppot_names, elect_names, all_integrals, all_ppots, all_elect, + forces_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list + ): + nstr = len(coords_list) + nint = len(all_integrals) * len(int_names) + npp = len(all_ppots) * len(ppot_names) + nel = len(all_elect) * len(elect_names) + + int_values = [] * nint + ppot_values = [] * npp + elect_values = [] * nel + int_values[:] = all_values[0:nint] + ppot_values[:] = all_values[nint:nint + npp] + elect_values[:] = all_values[nint + npp:nint + npp + nel] + + modif_CC_all_integrals(int_values, params_names, all_integrals) + modif_ppots(ppot_values, ppot_names, all_ppots) + modif_elect(elect_values, elect_names, all_elect) + + nats = len(atomTypes_list[0]) + buffg = np.zeros((3 * nats)) + buffs = np.zeros((3 * nats)) + diffs_total = np.zeros((3 * nstr * nats)) + forcess = np.zeros((3 * nstr * nats)) + forcesg = np.zeros((3 * nstr * nats)) + + for istr in range(nstr): + nats = len(atomTypes_list[istr]) + latticeVectors = latticeVectors_list[istr] + symbols = symbols_list[istr] + atomTypes = atomTypes_list[istr] + coords0 = coords_list[istr] + forces_siesta = forces_siesta_list[istr] + + err, charges, gpmd_forces, dipole, energy = gpmd(latticeVectors, symbols, atomTypes, coords0, field, verb) + + for i in range(nats): + buffs[i * 3 + 0] = gpmd_forces[i, 0] + buffs[i * 3 + 1] = gpmd_forces[i, 1] + buffs[i * 3 + 2] = gpmd_forces[i, 2] + + buffg[i * 3 + 0] = forces_siesta[i, 0] + buffg[i * 3 + 1] = forces_siesta[i, 1] + buffg[i * 3 + 2] = forces_siesta[i, 2] + + forcess[istr * nats * 3:(istr + 1) * nats * 3] = buffs[:] + forcesg[istr * nats * 3:(istr + 1) * nats * 3] = buffg[:] + + diffs_total[:] = abs(forcess[:] - forcesg[:]) + + cost = (np.linalg.norm(diffs_total)) ** 2 + # print("gpmd",gpmd_forces) + # print("siesta",forces_siesta) + # print("reldif",(forces_siesta-gpmd_forces)/forces_siesta) + # exit(0) + + f = open("correl.dat", 'w') + for i in range(len(forcess)): + print(forcess[i], forcesg[i], file=f) + f.close() + f = open("correlP.dat", 'w') + cont = 0 + for i in range(nstr): + for j in range(nats): + for k in range(3): + if (symbols_list[0][atomTypes_list[0][j]] == "P"): + print(forcess[cont], forcesg[cont], file=f) + cont = cont + 1 + f.close() + + maxval = np.max(diffs_total) + maxindex = np.argmax(diffs_total) + cost_per_atom = np.sqrt(cost / (nats * nstr)) + mean_force = np.sqrt(sum(abs(forcess)) / (nats * nstr)) + print_cost(cost_per_atom, maxindex, maxval, mean_force) + + + #Save the result if there is a very good min + if(cost_per_atom < 0.9): + dt = datetime.now() + ts = datetime.timestamp(dt) + cmd = "cp -r ./TBparams " + "TBparams"+ts + os.system(cmd) + exit(0) + return cost + + +def print_cost(total, index, maxval, mean_force): + with open("cost.dat", 'a+') as line_file: + line_file.write(str(total) + "\n") + with open("index.dat", 'a+') as line_file: + line_file.write(str(index) + " " + str(maxval) + " " + str(mean_force) + "\n") + + +def modif_CC_all_integrals(params_values, params_names, all_integrals): + name_pos = {'H0': 3, 'B1': 4, 'B2': 5, 'B3': 6, 'B4': 7, 'B5': 8, 'R1': 9, 'Rcut': 10, 'H0_2': 11, 'B1_2': 12, + 'B2_2': 13, 'B3_2': 14, 'B4_2': 15, 'B5_2': 16, 'R1_2': 17, 'Rcut_2': 18} + + fname_bondints = "TBparams/bondints.nonortho_reference" + all_lines = [] + with open(fname_bondints, 'r') as fi: + numlines = int(fi.readline().split(" ")[1]) + header = fi.readline() + all_lines.append(f"Noints= {numlines}\n") + all_lines.append(header) + for _ in range(numlines): + line_spl = fi.readline().split() + element1, element2, k_ind = line_spl[0], line_spl[1], line_spl[2] + for index, d in enumerate(all_integrals): + if d.get('Element1') == element1 and d.get('Element2') == element2 and d.get('Kind') == k_ind: + for indx, name in enumerate(params_names): + line_spl[name_pos[name]] = str(params_values[index * len(params_names) + indx])[:18] + with open("lines.dat", 'a+') as line_file: + line_file.write((" ".join(map(str, line_spl)) + "\n")) + break + all_lines.append(" ".join(map(str, line_spl)) + "\n") + + with open("TBparams/bondints.nonortho", 'w') as fo: + fo.writelines(all_lines) + # sys.exit() + + +def modif_ppots(params_values, params_names, all_ppots): + name_pos = {'A0': 2, 'A1': 3, 'A2': 4, 'A3': 5, 'A4': 6, 'A5': 7, 'A6': 8, 'C': 9, 'R1': 10, 'Rcut': 11} + fname_ppot = "TBparams/ppots.nonortho_reference" + all_lines = [] + with open(fname_ppot, 'r') as fi: + numlines = int(fi.readline().split(" ")[1]) + header = fi.readline() + all_lines.append(f"Nopps= {numlines}\n") + all_lines.append(header) + for _ in range(numlines): + line_spl = fi.readline().split() + element1, element2 = line_spl[0], line_spl[1] + for index, d in enumerate(all_ppots): + print(d.get('Ele1'), element1) + if d.get('Ele1') == element1 and d.get('Ele2') == element2: + for indx, name in enumerate(params_names): + print(line_spl) + print(index, indx, len(params_names)) + print(params_values) + line_spl[name_pos[name]] = str(params_values[index * len(params_names) + indx])[:12] + with open("linesp.dat", 'a+') as line_file: + line_file.write((" ".join(map(str, line_spl)) + "\n")) + break + all_lines.append(" ".join(map(str, line_spl)) + "\n") + + with open("TBparams/ppots.nonortho", 'w') as fo: + fo.writelines(all_lines) + + +def modif_elect(params_values, params_names, all_elect): + name_pos = {'Es': 3, 'Ep': 4, 'Ed': 5, 'Ef': 6, 'HubbardU': 8, 'Wss': 9, 'Wpp': 10, 'Wdd': 11, 'Wff': 12} + fname_elect = "TBparams/electrons_reference.dat" + all_lines = [] + with open(fname_elect, 'r') as fi: + numlines = int(fi.readline().split()[1]) + header = fi.readline() + all_lines.append(f"Noelem= {numlines}\n") + all_lines.append(header) + for _ in range(numlines): + line_spl = fi.readline().split() + element1 = line_spl[0] + for index, d in enumerate(all_elect): + if d.get('Element') == element1: + for indx, name in enumerate(params_names): + print(line_spl) + print(index, indx, len(params_names)) + print(params_values) + line_spl[name_pos[name]] = str(params_values[index * len(params_names) + indx])[:12] + with open("linese.dat", 'a+') as line_file: + line_file.write((" ".join(map(str, line_spl)) + "\n")) + break + all_lines.append(" ".join(map(str, line_spl)) + "\n") + + with open("TBparams/electrons.dat", 'w') as fo: + fo.writelines(all_lines) + + +def extract_and_create_bounds(integrals, params_names): + result = [] + for key in params_names: + if key in integrals: + value = integrals[key] + lower_bound = value * 0.7 + upper_bound = value * 1.9 + result.append((min(lower_bound, upper_bound), max(lower_bound, upper_bound))) + return result + + +def extract_and_create_guess(integrals, params_names): + result = [] + for key in params_names: + if key in integrals: + value = integrals[key] + result.append(value) + return result + + +def get_atom_atoms_kind(atom1, atom2, kind): + for d0 in all_dicts: + if d0['Element1'] == atom1 and d0['Element2'] == atom2 and d0['Kind'] == kind: + return d0 + + +def get_atom_atoms_for_ppot(atom1, atom2, all_dicts_ppot): + for d0 in all_dicts_ppot: + if d0['Ele1'] == atom1 and d0['Ele2'] == atom2: + return d0 + + +def get_atom_for_elect(atom, all_dicts_elect): + for d0 in all_dicts_elect: + if d0['Element'] == atom: + return d0 + + +############################### +## Main starts here +############################### +from scipy.optimize import differential_evolution + +# Read all the parameters files +all_dicts = read_file_to_dict('TBparams/bondints.nonortho_reference') +all_dicts_ppot = read_ppotfile_to_dict('TBparams/ppots.nonortho_reference') +all_dicts_elect = read_electfile_to_dict('TBparams/electrons_reference.dat') + +number_of_structures = 1 +field = [0, 0, 0] +verb = 0 + +forces_siesta_list = [] +coords_list = [] +latticeVectors_list = [] +symbols_list = [] +atomTypes_list = [] + +# Read the structures into lists +for i in range(number_of_structures): + fname = "phosphorus_forces_positions/forces_0" + str(i) + "_phosph.FA" + forces_siesta = get_forces_siesta(fname) + coord_files = "phosphorus_forces_positions/coordinates_0" + str(i) + "_phosph.xyz" + latticeVectors, symbols, atomTypes, coords0 = fileio.read_xyz_file(coord_files, lib="None", verb=verb) + latticeVectors[:] = 0.0 + latticeVectors[0,0] = 28.00 + latticeVectors[1,1] = 29.00 + latticeVectors[2,2] = 35.00 + forces_siesta_list.append(forces_siesta) + coords_list.append(coords0) + latticeVectors_list.append(latticeVectors) + symbols_list.append(symbols) + atomTypes_list.append(atomTypes) + +atom_atom_kind = {'PP': ('P', 'P', ('sss', 'sps', 'pps', 'ppp')), + 'CC': ('C', 'C', ('sss', 'sps', 'pps', 'ppp')), + 'OO': ('O', 'O', ('sss', 'sps', 'pps', 'ppp')), + 'NN': ('N', 'N', ('sss', 'sps', 'pps', 'ppp')), + 'PO': ('P', 'O', ('sss', 'sps', 'pps', 'ppp')), + 'OP': ('O', 'P', ['sps']), + 'PN': ('P', 'N', ('sss', 'sps', 'pps', 'ppp')), + 'NP': ('N', 'P', ['sps']), + 'PC': ('P', 'C', ('sss', 'sps', 'pps', 'ppp')), + 'CP': ('C', 'P', ('sss', 'sps', 'pps', 'ppp')), + 'CN': ('C', 'N', ('sss', 'sps', 'pps', 'ppp')), + 'NC': ('N', 'C', ['sps']), + 'HP': ('H', 'P', ('sss', 'sps')), + 'HC': ('H', 'C', ('sss', 'sps'))} + +wished = ['PP', 'PO', 'OP', 'PC', 'PN', 'NP', 'HP'] +all_integrals_SS = [] +for elms in wished: + val = atom_atom_kind[elms] + for v in val[2]: + all_integrals_SS.append(get_atom_atoms_kind(val[0], val[1], v)) + +wished_ppots = [('P', 'P'), ('P', 'O'), ('P', 'C'), ('P', 'N'), ('P', 'H')] +all_ppots = [get_atom_atoms_for_ppot(elms[0], elms[1], all_dicts_ppot) for elms in wished_ppots] +dic_elect_P = get_atom_for_elect('P', all_dicts_elect) + +all_elect = [dic_elect_P] + +params_names = ['H0', 'B1', 'B2', 'H0_2', 'H0_2', 'B1_2', 'B2_2', 'B3_2', 'B4_2'] +ppotparams_names = ['A0', 'A1', 'A2'] +electparams_names = ['Es', 'Ep', 'HubbardU'] + +# params_names = ['H0', 'B1', 'B2']#'B1_2', "B2_2"]#, "B3_2", "B4_2", "B5_2"] +bounds = [v for integrals in all_integrals_SS for v in extract_and_create_bounds(integrals, params_names)] +guess = [v for integrals in all_integrals_SS for v in extract_and_create_guess(integrals, params_names)] +pguess = [v for ppots in all_ppots for v in extract_and_create_guess(ppots, ppotparams_names)] +eguess = [v for elect in all_elect for v in extract_and_create_guess(elect, electparams_names)] + +all_guess = guess + pguess + eguess # Merging lists + +all_guess_v = np.zeros(len(all_guess)) +all_guess_v[:] = all_guess[:] + +bounds = np.zeros((len(all_guess), 2)) +bounds[:, 0] = all_guess[:] +bounds[:, 1] = all_guess[:] +bounds[:, 0] = bounds[:, 0] - 0.5*abs(bounds[:, 0]) +bounds[:, 1] = bounds[:, 1] + 0.5*abs(bounds[:, 1]) + +# guess = [-8.0, -1, -0.5 , -0.5 , -0.5, -0.5, -0.5, -0.5, -0.5] +cost_ref = cost_function2(all_guess_v, params_names, ppotparams_names, electparams_names, all_integrals_SS, all_ppots, + all_elect, forces_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list + ) + + +optimize = False +if(optimize): + latticeVectors = latticeVectors_list[0] + symbols = symbols_list[0] + atomTypes = atomTypes_list[0] + coords0 = coords_list[0] + coords_new = optimize_coordinates(latticeVectors,atomTypes,symbols,coords0,method='BFGS',parampath='/tmp',iterations=100,tol=0.01) + + write_xyz_coordinates("opt_str.xyz", coords_new, atoTypes, symbols) + +method = "Diff" +if(method == "Anneal"): + result = dual_annealing(cost_function2,bounds, args=( + params_names, ppotparams_names, + electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list + ), maxiter=1000, initial_temp=10.0, restart_temp_ratio=2e-05, visit=2.62, accept=-5.0, maxfun=10000000.0, seed=None, no_local_search=False, callback=None, x0=None) +elif(method == "Diff"): + result = differential_evolution(cost_function2, bounds=bounds, args=( + params_names, ppotparams_names, + electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list + ), maxiter=3, recombination=0.1, mutation=0.1, tol=0.01, popsize=15, disp=True) +else: + result = minimize(cost_function2, all_guess, args=(params_names, ppotparams_names, + electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list), method='Nelder-Mead', jac=None, hess=None, hessp=None, + bounds=bounds, constraints=(), tol=0.001, callback=None, options={'maxiter': 6000}) + + +exit(0) + diff --git a/parameters/gpmd_interface_example/main_optim_params_parallel.py b/parameters/gpmd_interface_example/main_optim_params_parallel.py new file mode 100644 index 00000000..f94cb17c --- /dev/null +++ b/parameters/gpmd_interface_example/main_optim_params_parallel.py @@ -0,0 +1,882 @@ +#!/usr/bin/env python3 +import sys + +import numpy as np +from sedacs.system import * +from sedacs.periodic_table import PeriodicTable +# from sdc_system import * +# from sdc_ptable import ptable +import ctypes as ct +import os +import scipy.linalg as sp +import sedacs.file_io as fileio +from scipy.optimize import minimize +from scipy import optimize +from gpmd import * +from datetime import datetime +from concurrent.futures import ProcessPoolExecutor + +# !/usr/bin/env python3 + +import sys +import numpy as np +from sedacs.system import * +from sedacs.periodic_table import PeriodicTable +import ctypes as ct +import os +import scipy.linalg as sp +from scipy.optimize import minimize +from scipy import optimize +from gpmd import * +from datetime import datetime +from concurrent.futures import ProcessPoolExecutor + + +def get_energy(coords_in, lattice_vectors, atom_types, symbols): + """ + Calculate the total energy for a given molecular configuration. + + Args: + coords_in (np.ndarray): Flattened atomic coordinates. + lattice_vectors (np.ndarray): Lattice vectors defining the simulation box. + atom_types (list): List of atomic types. + symbols (list): List of atomic symbols. + + Returns: + float: Total energy of the configuration. + """ + field = np.zeros(3) + coords = coords_in.reshape(len(atom_types), 3) + err, charges_out, forces_saved, dipole_out, energy = gpmd( + lattice_vectors, symbols, atom_types, coords, field, verb + ) + + # Write trajectory to file + with open("traj.xyz", 'a+') as traj_file: + traj_file.write(f"{len(atom_types)}\n") + traj_file.write("t=\n") + for i, atom in enumerate(atom_types): + traj_file.write(f"{symbols[atom]} {coords[i, 0]} {coords[i, 1]} {coords[i, 2]}\n") + + # Write energy to file + with open("energ.dat", 'a+') as energy_file: + energy_file.write(f"{energy}\n") + + return energy + + +def optimize_coordinates(lattice_vectors, atom_types, symbols, coords, method='CG', iterations=100, tol=0.01): + """ + Optimize atomic coordinates to minimize energy. + + Args: + lattice_vectors (np.ndarray): Lattice vectors defining the simulation box. + atom_types (list): List of atomic types. + symbols (list): List of atomic symbols. + coords (np.ndarray): Initial atomic coordinates. + method (str): Optimization method (default is 'CG'). + iterations (int): Maximum number of iterations. + tol (float): Tolerance for convergence. + + Returns: + np.ndarray: Optimized atomic coordinates. + """ + coordsv = coords.reshape(-1) + result = minimize( + get_energy, coordsv, args=(lattice_vectors, atom_types, symbols), + method=method, tol=tol, options={'maxiter': iterations} + ) + return result.x + + +def read_file_to_dict(filename): + """ + Parse a structured file into a list of dictionaries. + + Args: + filename (str): File path to read. + + Returns: + list[dict]: List of dictionaries containing parsed data. + """ + with open(filename, 'r') as file: + file.readline() + lines = file.readlines() + + # Extract headers from the file + headers = lines[0].split() + num_headers = 3 + first_set = headers[num_headers:num_headers + 8] + second_set = [f"{header}_2" for header in first_set] + all_headers = headers[:num_headers] + first_set + second_set + + # Parse lines into dictionaries + dict_list = [] + for line in lines[1:]: + values = line.split() + data_dict = {all_headers[i]: (values[i] if i < num_headers else float(values[i])) + for i in range(len(all_headers))} + dict_list.append(data_dict) + + return dict_list + + +def get_dipole(coords, charges): + """ + Calculate the dipole moment. + + Args: + coords (np.ndarray): Atomic coordinates. + charges (np.ndarray): Atomic charges. + + Returns: + np.ndarray: Dipole moment vector. + """ + dipole = np.zeros(3) + for i, charge in enumerate(charges): + dipole += charge * coords[i] + return dipole + + +def get_field_born_charges(lattice_vectors, symbols, atom_types, coords, verb): + """ + Compute Born effective charges using the field method. + + Args: + lattice_vectors (np.ndarray): Lattice vectors defining the simulation box. + symbols (list): List of atomic symbols. + atom_types (list): List of atomic types. + coords (np.ndarray): Atomic coordinates. + verb (int): Verbosity level. + + Returns: + np.ndarray: Born effective charges. + """ + # Initialize variables + field = np.zeros(3) + err, charges_out, forces_saved, dipole_out, energy = gpmd( + lattice_vectors, symbols, atom_types, coords, field, verb + ) + nats = len(atom_types) + born_field = np.zeros((nats, 3, 3)) + + # Compute forces with perturbed fields + for i in range(3): + for delta in [-1e-4, 1e-4]: + field[i] = delta + err, charges_out, forces_out, dipole_out, energy = gpmd( + lattice_vectors, symbols, atom_types, coords, field, verb + ) + born_field[:, :, i] += (forces_out - forces_saved) / np.linalg.norm(field) + + # Calculate average Born charges + born_charges = [sum(sp.eigh(born_field[i])[0]) / 3 for i in range(nats)] + return np.array(born_charges) + + +def read_ppotfile_to_dict(filename): + """ + Parse a pseudopotential file into a list of dictionaries. + + Args: + filename (str): File path to read. + + Returns: + list[dict]: List of dictionaries containing pseudopotential data. + """ + with open(filename, 'r') as file: + file.readline() + lines = file.readlines() + + # Extract the headers (column names) + headers = lines[0].split() + + # Find the index where the second set of repeated headers starts (after the third column) + all_headers = headers + # Initialize a list to store all the dictionaries + dict_list = [] + + # Process the remaining lines to create dictionaries + for line in lines[1:]: + values = line.split() + + # Create a dictionary using headers as keys + # Convert numerical values (from the 4th column onward) to floats + data_dict = {all_headers[i]: (values[i] if i < 2 else float(values[i])) + for i in range(len(all_headers))} + + # Add the dictionary to the list + dict_list.append(data_dict) + + return dict_list + + +def get_displ_born_charges(lattice_vectors, symbols, atom_types, coords_in, verb): + """ + Compute Born effective charges using the displacement method. + + Args: + lattice_vectors (np.ndarray): Lattice vectors defining the simulation box. + symbols (list): List of atomic symbols. + atom_types (list): List of atomic types. + coords_in (np.ndarray): Initial atomic coordinates. + verb (int): Verbosity level. + + Returns: + tuple: (Born effective charges, displacement matrix). + """ + nats = len(atom_types) + born_displ = np.zeros((nats, 3, 3)) + dspl = 1.0E-5 + field = np.zeros(3) + coords = np.copy(coords_in) + + # Calculate dipole for initial configuration + _, _, _, dipole_saved, _ = gpmd(lattice_vectors, symbols, atom_types, coords, field, verb) + + # Perturb coordinates and compute dipole differences + for dim in range(3): # Iterate over X, Y, Z + for j in range(nats): + for delta in [-dspl, dspl]: + coords[j, dim] += delta + _, _, _, dipole_out, _ = gpmd(lattice_vectors, symbols, atom_types, coords, field, verb) + sign = 1 if delta > 0 else -1 + born_displ[j, :, dim] += sign * dipole_out + coords[j, dim] -= delta + + # Average Born charges + born_charges = [sum(sp.eigh(born_displ[i])[0]) / 3 for i in range(nats)] + return np.array(born_charges), born_displ + + +def get_forces_siesta(filename): + """ + Read atomic forces from a SIESTA output file. + + Args: + filename (str): Path to the forces file. + + Returns: + np.ndarray: Array of atomic forces. + """ + with open(filename, 'r') as file: + num_lines = int(file.readline().strip()) + forces = [list(map(float, file.readline().split()[1:])) for _ in range(num_lines)] + return np.array(forces) + + +def cost_function(params_values, params_names, forces_siesta, all_integrals): + """ + Calculate the cost function for optimization by comparing GPMD and SIESTA forces. + + Args: + params_values (list): List of parameter values to modify. + params_names (list): Names of the parameters. + forces_siesta (np.ndarray): Reference forces from SIESTA. + all_integrals (list): List of integrals data for modification. + + Returns: + float: Total cost as the sum of squared differences between forces. + """ + modif_CC_all_integrals(params_values, params_names, all_integrals) + _, _, gpmd_forces, _, _ = gpmd(latticeVectors, symbols, atomTypes, coords0, field, verb) + + # Compute sum of squared differences + total_cost = sum(np.linalg.norm(gp - si) ** 2 for gp, si in zip(gpmd_forces, forces_siesta)) + print(f"Total Cost: {total_cost}") + return total_cost + + +def modif_CC_all_integrals(params_values, params_names, all_integrals): + """ + Modify bond integrals based on the provided parameters. + + Args: + params_values (list): List of parameter values. + params_names (list): Names of the parameters. + all_integrals (list): List of integrals data. + """ + name_pos = {'H0': 3, 'B1': 4, 'B2': 5, 'B3': 6, 'B4': 7, 'B5': 8, 'R1': 9, 'Rcut': 10, 'H0_2': 11, 'B1_2': 12, + 'B2_2': 13, 'B3_2': 14, 'B4_2': 15, 'B5_2': 16, 'R1_2': 17, 'Rcut_2': 18} + + fname_bondints = "TBparams/bondints.nonortho_reference" + all_lines = [] + with open(fname_bondints, 'r') as file: + num_lines = int(file.readline().split()[1]) + header = file.readline() + all_lines.append(f"Noints= {num_lines}\n") + all_lines.append(header) + + for _ in range(num_lines): + line_spl = file.readline().split() + element1, element2, k_ind = line_spl[:3] + for idx, d in enumerate(all_integrals): + if d.get('Element1') == element1 and d.get('Element2') == element2 and d.get('Kind') == k_ind: + for p_idx, name in enumerate(params_names): + line_spl[name_pos[name]] = f"{params_values[idx * len(params_names) + p_idx]:.8f}" + break + all_lines.append(" ".join(line_spl) + "\n") + + # Write modified bond integrals to a new file + with open("TBparams/bondints.nonortho", 'w') as output_file: + output_file.writelines(all_lines) + + +def extract_and_create_bounds(integrals, params_names): + """ + Generate bounds for parameters based on their values in the integrals data. + + Args: + integrals (dict): Dictionary of integral data. + params_names (list): List of parameter names. + + Returns: + list[tuple]: Bounds for each parameter as (lower_bound, upper_bound). + """ + result = [] + for key in params_names: + if key in integrals: + value = integrals[key] + lower_bound = value * 0.7 + upper_bound = value * 1.9 + result.append((lower_bound, upper_bound)) + return result + + +def extract_and_create_guess(integrals, params_names): + """ + Generate initial guesses for parameters based on their values in the integrals data. + + Args: + integrals (dict): Dictionary of integral data. + params_names (list): List of parameter names. + + Returns: + list[float]: Initial guesses for each parameter. + """ + return [integrals[key] for key in params_names if key in integrals] + + +def print_cost(total, index, maxval, mean_force): + """ + Save the cost metrics to output files. + + Args: + total (float): Total cost. + index (int): Index of the maximum cost contributor. + maxval (float): Maximum value of the cost component. + mean_force (float): Mean force magnitude. + """ + with open("cost.dat", 'a+') as cost_file: + cost_file.write(f"{total}\n") + with open("index.dat", 'a+') as index_file: + index_file.write(f"{index} {maxval} {mean_force}\n") + + +def read_electfile_to_dict(filename): + """ + Parse an electron configuration file into a list of dictionaries. + + Args: + filename (str): Path to the electron configuration file. + + Returns: + list[dict]: List of dictionaries containing electron configuration data. + """ + with open(filename, 'r') as file: + file.readline() + lines = file.readlines() + + # Extract the headers (column names) + # Extract the headers (column names) + headers = lines[0].split() + + # Find the index where the second set of repeated headers starts (after the third column) + all_headers = headers + # Initialize a list to store all the dictionaries + dict_list = [] + + # Process the remaining lines to create dictionaries + for line in lines[1:]: + values = line.split() + + # Create a dictionary using headers as keys + # Convert numerical values (from the 4th column onward) to floats + data_dict = {all_headers[i]: (values[i] if i < 2 else float(values[i])) + for i in range(len(all_headers))} + + # Add the dictionary to the list + dict_list.append(data_dict) + + return dict_list + + +def cost_function2_old(all_values, int_names, ppot_names, elect_names, all_integrals, all_ppots, all_elect, + forces_siesta_list, energies_siesta_list, coords_list, lattice_vectors_list, symbols_list, + atom_types_list): + """ + Calculate the cost function for optimization across multiple structures. + + Args: + all_values (list): Flattened list of all parameter values (integrals, pseudopotentials, electrons). + ... + + Returns: + float: Total cost combining forces and energies. + """ + nstr = len(coords_list) + nint = len(all_integrals) * len(int_names) + npp = len(all_ppots) * len(ppot_names) + nel = len(all_elect) * len(elect_names) + + int_values = [] * nint + ppot_values = [] * npp + elect_values = [] * nel + int_values[:] = all_values[0:nint] + ppot_values[:] = all_values[nint:nint + npp] + elect_values[:] = all_values[nint + npp:nint + npp + nel] + + modif_CC_all_integrals(int_values, params_names, all_integrals) + modif_ppots(ppot_values, ppot_names, all_ppots) + modif_elect(elect_values, elect_names, all_elect) + + nats = len(atomTypes_list[0]) + buffg = np.zeros(3 * nats) + buffs = np.zeros(3 * nats) + diffs_total = np.zeros(3 * nstr * nats) + forcess = np.zeros(3 * nstr * nats) + forcesg = np.zeros(3 * nstr * nats) + + energies_gpmd = np.zeros(nstr) + + ################### Start parallel execution ################### + + futures_lst = [] + with ProcessPoolExecutor(max_workers=7) as exe: + for istr in range(nstr): + nats = len(atomTypes_list[istr]) + latticeVectors = latticeVectors_list[istr] + symbols = symbols_list[istr] + atomTypes = atomTypes_list[istr] + coords0 = coords_list[istr] + forces_siesta = forces_siesta_list[istr] + + futures_lst.append(exe.submit(gpmd, latticeVectors, symbols, atomTypes, coords0, field, verb)) + + for future in futures_lst: + err, charges, gpmd_forces, dipole, energy = future.result() + + for i in range(nats): + for i in range(nats): + # assign all three components at once using slicing + buffs[i * 3:(i + 1) * 3] = gpmd_forces[i] + buffg[i * 3:(i + 1) * 3] = forces_siesta[i] + + forcess[istr * nats * 3:(istr + 1) * nats * 3] = buffs[:] + forcesg[istr * nats * 3:(istr + 1) * nats * 3] = buffg[:] + print("ENERGY", istr, energy) + + energies_gpmd[istr] = energy + + ################### End parallel execution ################### + + diffs_total[:] = abs(forcess[:] - forcesg[:]) + + energies_gpmd[:] = energies_gpmd[:] - energies_gpmd[0] + diffs_energ = np.zeros((nstr)) + diffs_energ[:] = abs(energies_siesta_list[:] - energies_gpmd[:]) + cost_energ = (np.linalg.norm(diffs_energ)) ** 2 + + cost = (np.linalg.norm(diffs_total)) ** 2 + cost = cost + 100 * cost_energ + if (np.isnan(cost)): cost = 10000000.0 + # print("gpmd",gpmd_forces) + # print("siesta",forces_siesta) + # print("reldif",(forces_siesta-gpmd_forces)/forces_siesta) + # exit(0) + + f = open("correl.dat", 'w') + for i in range(len(forcess)): + print(forcess[i], forcesg[i], file=f) + f.close() + f = open("correlP.dat", 'w') + cont = 0 + for i in range(nstr): + for j in range(nats): + for k in range(3): + if (symbols_list[0][atomTypes_list[0][j]] == "P"): + print(forcess[cont], forcesg[cont], file=f) + cont = cont + 1 + f.close() + + maxval = np.max(diffs_total) + maxindex = np.argmax(diffs_total) + cost_per_atom = np.sqrt(cost / (nats * nstr)) + mean_force = np.sqrt(sum(abs(forcess)) / (nats * nstr)) + print_cost(cost_per_atom, maxindex, maxval, mean_force) + + # Save the result if there is a very good min + if (cost_per_atom < 0.1): + dt = datetime.now() + ts = datetime.timestamp(dt) + cmd = "cp -r ./TBparams " + "TBparams" + str(ts) + os.system(cmd) + exit(0) + + return cost + + +def cost_function2(all_values, int_names, ppot_names, elect_names, all_integrals, all_ppots, all_elect, + forces_siesta_list, energies_siesta_list, coords_list, lattice_vectors_list, symbols_list, + atom_types_list): + """ + Calculate the cost function for optimization across multiple structures. + + Args: + all_values (list): Flattened list of all parameter values (integrals, pseudopotentials, electrons). + ... + + Returns: + float: Total cost combining forces and energies. + """ + # Extract parameter groups + n_int = len(all_integrals) * len(int_names) + n_pp = len(all_ppots) * len(ppot_names) + n_el = len(all_elect) * len(elect_names) + + int_values = all_values[:n_int] + ppot_values = all_values[n_int:n_int + n_pp] + elect_values = all_values[n_int + n_pp:n_int + n_pp + n_el] + + # Update parameters + modif_CC_all_integrals(int_values, int_names, all_integrals) + modif_ppots(ppot_values, ppot_names, all_ppots) + modif_elect(elect_values, elect_names, all_elect) + + n_structures = len(coords_list) + total_force_diffs = [] + energies_gpmd = np.zeros(n_structures) + + # Buffers to store forces and diffs + forces_gpmd_all = np.zeros((n_structures, len(forces_siesta_list[0]), 3)) + forces_siesta_all = np.zeros_like(forces_gpmd_all) + + # Parallel evaluation of structures + with ProcessPoolExecutor(max_workers=2) as executor: + futures = [] + for i in range(len(coords_list)): + futures.append( + executor.submit( + gpmd, + lattice_vectors_list[i], + symbols_list[i], + atom_types_list[i], + coords_list[i], + np.zeros(3), # Field is zero by default + verb, + ) + ) + + for i, future in enumerate(futures): + err, charges, gpmd_forces, dipole, energy = future.result() + + # Store forces for correlation file + forces_gpmd_all[i] = gpmd_forces + forces_siesta_all[i] = forces_siesta_list[i] + + # Compute energy differences + energies_gpmd[i] = energy + + # Compute force differences for cost + total_force_diffs.extend(np.linalg.norm(gpmd_forces - forces_siesta_list[i], axis=1)) + + # Compute energy and force costs + diffs_energ = np.abs(energies_siesta_list - energies_gpmd) + energy_cost = np.linalg.norm(diffs_energ) ** 2 + + force_cost = np.linalg.norm(total_force_diffs) ** 2 + + # Weight energy cost more heavily + total_cost = force_cost + 100 * energy_cost + + # Handle NaN or infinity in the cost + if np.isnan(total_cost) or np.isinf(total_cost): + total_cost = 1e7 + + # Update correlation files + with open("correl.dat", 'w') as correl_file: + for i in range(n_structures): + for j in range(len(forces_siesta_list[i])): + correl_file.write(f"{forces_gpmd_all[i, j, 0]} {forces_siesta_all[i, j, 0]}\n") + + with open("correlP.dat", 'w') as correlp_file: + for i in range(n_structures): + for j in range(len(atom_types_list[i])): + if symbols_list[0][atom_types_list[0][j]] == "P": + correlp_file.write(f"{forces_gpmd_all[i, j, 0]} {forces_siesta_all[i, j, 0]}\n") + + # Print useful metrics + max_diff = np.max(total_force_diffs) + max_diff_index = np.argmax(total_force_diffs) + cost_per_atom = np.sqrt(force_cost / (n_structures * len(atom_types_list[0]))) + mean_force = np.mean(np.linalg.norm(forces_gpmd_all, axis=2)) + + print_cost(cost_per_atom, max_diff_index, max_diff, mean_force) + + # Save good results for potential future use + if cost_per_atom < 0.1: + timestamp = datetime.now().strftime("%Y%m%d%H%M%S") + os.system(f"cp -r ./TBparams ./TBparams_{timestamp}") + + return total_cost + + +def modif_ppots(params_values, params_names, all_ppots): + """ + Modify pseudopotential parameters based on the provided values. + + Args: + params_values (list): List of pseudopotential parameter values. + params_names (list): List of pseudopotential parameter names. + all_ppots (list): List of pseudopotential data. + """ + name_pos = {'A0': 2, 'A1': 3, 'A2': 4, 'A3': 5, 'A4': 6, 'A5': 7, 'C': 9, 'R1': 10, 'Rcut': 11} + fname_ppot = "TBparams/ppots.nonortho_reference" + + all_lines = [] + with open(fname_ppot, 'r') as file: + num_lines = int(file.readline().split()[1]) + header = file.readline() + all_lines.append(f"Nopps= {num_lines}\n") + all_lines.append(header) + + for _ in range(num_lines): + line_spl = file.readline().split() + element1, element2 = line_spl[:2] + for index, ppot in enumerate(all_ppots): + if ppot['Ele1'] == element1 and ppot['Ele2'] == element2: + for p_idx, name in enumerate(params_names): + line_spl[name_pos[name]] = f"{params_values[index * len(params_names) + p_idx]:.8f}" + break + all_lines.append(" ".join(line_spl) + "\n") + + with open("TBparams/ppots.nonortho", 'w') as file: + file.writelines(all_lines) + + +def modif_elect(params_values, params_names, all_elect): + """ + Modify electron configuration parameters based on the provided values. + + Args: + params_values (list): List of electron parameter values. + params_names (list): List of electron parameter names. + all_elect (list): List of electron configuration data. + """ + name_pos = {'Es': 3, 'Ep': 4, 'Ed': 5, 'Ef': 6, 'HubbardU': 8, 'Wss': 9, 'Wpp': 10, 'Wdd': 11, 'Wff': 12} + fname_elect = "TBparams/electrons_reference.dat" + + all_lines = [] + with open(fname_elect, 'r') as file: + num_lines = int(file.readline().split()[1]) + header = file.readline() + all_lines.append(f"Noelem= {num_lines}\n") + all_lines.append(header) + + for _ in range(num_lines): + line_spl = file.readline().split() + element = line_spl[0] + for index, elect in enumerate(all_elect): + if elect['Element'] == element: + for p_idx, name in enumerate(params_names): + line_spl[name_pos[name]] = f"{params_values[index * len(params_names) + p_idx]:.8f}" + break + all_lines.append(" ".join(line_spl) + "\n") + + with open("TBparams/electrons.dat", 'w') as file: + file.writelines(all_lines) + + +def get_atom_atoms_kind(atom1, atom2, kind): + for d0 in all_dicts: + if d0['Element1'] == atom1 and d0['Element2'] == atom2 and d0['Kind'] == kind: + return d0 + + +def get_atom_atoms_for_ppot(atom1, atom2, all_dicts_ppot): + for d0 in all_dicts_ppot: + if d0['Ele1'] == atom1 and d0['Ele2'] == atom2: + return d0 + + +def get_atom_for_elect(atom, all_dicts_elect): + for d0 in all_dicts_elect: + if d0['Element'] == atom: + return d0 + + +############################### +## Main starts here +############################### +from scipy.optimize import differential_evolution + +# Read all the parameters files +all_dicts = read_file_to_dict('TBparams/bondints.nonortho_reference') +all_dicts_ppot = read_ppotfile_to_dict('TBparams/ppots.nonortho_reference') +all_dicts_elect = read_electfile_to_dict('TBparams/electrons_reference.dat') + +number_of_structures = 31 +field = [0, 0, 0] +verb = 0 + +forces_siesta_list = [] +energies_siesta_list = np.zeros(number_of_structures) +coords_list = [] +latticeVectors_list = [] +symbols_list = [] +atomTypes_list = [] + +# Read the structures into lists +for i in range(number_of_structures): + + # For water, crashes + #fname = "forces_positions_h2o/h2o_" + str(i) + ".FA" + #forces_siesta = get_forces_siesta(fname) + #coord_files = "forces_positions_h2o/coordinates_" + str(i) + ".xyz" + #latticeVectors, symbols, atomTypes, coords0 = fileio.read_xyz_file(coord_files, lib="None", verb=verb) + #energ_files = "forces_positions_h2o/energy_" + str(i) + ".dat" + + # Fullerenes + prefix_list=["C44-D2-85_E_0.01x", "C44-C1-62_E_0.01x", "C44-Cs-11_E_0.01x", "C44-C2-81_E_0.01x", "C44-C1-64_E_0.01x", "C44-C2-87_E_0.01x", "C44-D2-2_E_0.01x", "C44-D3d-38_E_0.01x", "C44-Cs-28_E_0.01x", "C44-C1-59_E_0.01x", "C44-Cs-70_E_0.01x", "C44-D2-75_E_0.01x", "C44-C2-44_E_0.01x", "C44-Cs-84_E_0.01x", "C44-C2-34_E_0.01x", "C44-D3-35_E_0.01x", "C44-C1-60_E_0.01x", "C44-D2-24_E_0.01x", "C44-C1-58_E_0.01x", "C44-D3-80_E_0.01x", "C44-Cs-71_E_0.01x", "C44-C1-47_E_0.01x", "C44-C1-65_E_0.01x", "C44-C2-79_E_0.01x", "C44-C2-76_E_0.01x", "C44-C1-67_E_0.01x", "C44-C1-63_E_0.01x", "C44-Cs-54_E_0.01x", "C44-C2-74_E_0.01x", "C44-D3d-3_E_0.01x", "C44-Cs-33_E_0.01x"] + fnames = ["fullerenes/"+ prefix + ".FA" for prefix in prefix_list] + forces_siesta = get_forces_siesta(fnames[i]) + + all_coord_files = ["fullerenes/"+ prefix + ".xyz" for prefix in prefix_list] + latticeVectors, symbols, atomTypes, coords0 = fileio.read_xyz_file(all_coord_files[i], lib="None", verb=verb) + all_energ_files = ["fullerenes/energy_"+ prefix + ".dat" for prefix in prefix_list] + energ_files=all_energ_files[i] + + #fname = "forces_positions/forces_0" + str(i) + ".FA" + #forces_siesta = get_forces_siesta(fname) + #coord_files = "forces_positions/coordinates_0" + str(i) + ".xyz" + #latticeVectors, symbols, atomTypes, coords0 = fileio.read_xyz_file(coord_files, lib="None", verb=verb) + #energ_files = "forces_positions/energies_0" + str(i) + ".EN" + + with open(energ_files, 'r') as f: + energies_siesta_list = [float(lines.split()[0]) for lines in f] + + latticeVectors = np.diag([20.00, 20.00, 20.00]) + forces_siesta_list.append(forces_siesta) + coords_list.append(coords0) + latticeVectors_list.append(latticeVectors) + symbols_list.append(symbols) + atomTypes_list.append(atomTypes) + + +atom_atom_kind = {'PP': ('P', 'P', ('sss', 'sps', 'pps', 'ppp')), + 'CC': ('C', 'C', ('sss', 'sps', 'pps', 'ppp')), + 'OO': ('O', 'O', ('sss', 'sps', 'pps', 'ppp')), + 'NN': ('N', 'N', ('sss', 'sps', 'pps', 'ppp')), + 'PO': ('P', 'O', ('sss', 'sps', 'pps', 'ppp')), + 'OP': ('O', 'P', ['sps']), + 'PN': ('P', 'N', ('sss', 'sps', 'pps', 'ppp')), + 'NP': ('N', 'P', ['sps']), + 'PC': ('P', 'C', ('sss', 'sps', 'pps', 'ppp')), + 'CP': ('C', 'P', ('sss', 'sps', 'pps', 'ppp')), + 'CN': ('C', 'N', ('sss', 'sps', 'pps', 'ppp')), + 'CO': ('C', 'O', ('sss', 'sps', 'pps', 'ppp')), + 'OC': ('O', 'C', ['sps']), + 'NC': ('N', 'C', ['sps']), + 'HP': ('H', 'P', ('sss', 'sps')), + 'HO': ('H', 'O', ('sss', 'sps')), + 'HH': ('H', 'H', ['sss']), + 'HC': ('H', 'C', ('sss', 'sps'))} + +wished = ['CC']# , 'CO', 'OC', 'OO', 'HC', 'HO', 'HH'] +all_integrals_SS = [] +for elms in wished: + val = atom_atom_kind[elms] + for v in val[2]: + all_integrals_SS.append(get_atom_atoms_kind(val[0], val[1], v)) + +wished_ppots = [('C', 'C')]#, ('C', 'C'), ('H', 'H'), ('C', 'O'), ('C', 'H'), ('O', 'H')] +all_ppots = [get_atom_atoms_for_ppot(elms[0], elms[1], all_dicts_ppot) for elms in wished_ppots] +dic_elect_H = get_atom_for_elect('H', all_dicts_elect) +dic_elect_C = get_atom_for_elect('C', all_dicts_elect) +dic_elect_O = get_atom_for_elect('O', all_dicts_elect) + +all_elect = [dic_elect_O, dic_elect_C, dic_elect_H] + +params_names = ['H0', 'B1', 'B2', 'H0_2', 'H0_2', 'B1_2', 'B2_2', 'B3_2', 'B4_2'] +ppotparams_names = ['A0', 'A1', 'A2'] +electparams_names = ['Es', 'Ep', 'HubbardU'] + +# params_names = ['H0', 'B1', 'B2']#'B1_2', "B2_2"]#, "B3_2", "B4_2", "B5_2"] +bounds = [v for integrals in all_integrals_SS for v in extract_and_create_bounds(integrals, params_names)] +guess = [v for integrals in all_integrals_SS for v in extract_and_create_guess(integrals, params_names)] +pguess = [v for ppots in all_ppots for v in extract_and_create_guess(ppots, ppotparams_names)] +eguess = [v for elect in all_elect for v in extract_and_create_guess(elect, electparams_names)] + +all_guess = guess + pguess + eguess # Merging lists + +all_guess_v = np.zeros(len(all_guess)) +all_guess_v[:] = all_guess[:] + +bounds = np.zeros((len(all_guess), 2)) +bounds[:, 0] = all_guess[:] +bounds[:, 1] = all_guess[:] +bounds[:, 0] = bounds[:, 0] - 0.5 * abs(bounds[:, 0]) +bounds[:, 1] = bounds[:, 1] + 0.5 * abs(bounds[:, 1]) + +# guess = [-8.0, -1, -0.5 , -0.5 , -0.5, -0.5, -0.5, -0.5, -0.5] +cost_ref = cost_function2(all_guess_v, params_names, ppotparams_names, electparams_names, all_integrals_SS, all_ppots, + all_elect, forces_siesta_list, energies_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list + ) + +optimize = False +if (optimize): + latticeVectors = latticeVectors_list[0] + symbols = symbols_list[0] + atomTypes = atomTypes_list[0] + coords0 = coords_list[0] + coords_new = optimize_coordinates(latticeVectors, atomTypes, symbols, coords0, method='BFGS', parampath='/tmp', + iterations=100, tol=0.01) + write_xyz_coordinates("opt_str.xyz", coords_new, atoTypes, symbols) + +method = "Else" +if method == "Anneal": + result = dual_annealing(cost_function2, bounds, args=( + params_names, ppotparams_names, + electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list + ), maxiter=1000, initial_temp=10.0, restart_temp_ratio=2e-05, visit=2.62, accept=-5.0, maxfun=10000000.0, seed=None, + no_local_search=False, callback=None, x0=None) +elif method == "Diff": + result = differential_evolution(cost_function2, bounds=bounds, args=( + params_names, ppotparams_names, + electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, energies_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list + ), maxiter=3, recombination=0.1, mutation=0.1, tol=0.01, popsize=15, disp=True) +else: + result = minimize(cost_function2, all_guess, args=(params_names, ppotparams_names, + electparams_names, all_integrals_SS, all_ppots, all_elect, + forces_siesta_list, energies_siesta_list, + coords_list, + latticeVectors_list, + symbols_list, + atomTypes_list), method='Nelder-Mead', jac=None, hess=None, + hessp=None, + bounds=bounds, constraints=(), tol=0.0001, callback=None, options={'maxiter': 600000}) + +exit(0) + diff --git a/parameters/gpmd_interface_example/vars b/parameters/gpmd_interface_example/vars new file mode 100644 index 00000000..af1a2f06 --- /dev/null +++ b/parameters/gpmd_interface_example/vars @@ -0,0 +1,11 @@ +#!/bin/bash +THIS_PATH=`pwd` + +export SEDACS_PATH=$HOME/sedacs/src/ +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$THIS_PATH/qmd-progress/install/lib64 +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$THIS_PATH/bml/install/lib64 +GPMD_PATH=$THIS_PATH/qmg-progress/examples/gpmdk/build/ +export GPMD_PATH=$THIS_PATH/qmd-progress/examples/gpmdk/build/ +export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$GPMD_PATH:$LD_LIBRARY_PATH:$SEDACS_PATH +export PYTHONWARNINGS="ignore:Unverified HTTPS request" + diff --git a/parameters/latte/TBparam/2016_parameters_previous_version/bondints.nonortho b/parameters/latte/TBparam/2016_parameters_previous_version/bondints.nonortho new file mode 100644 index 00000000..8c1eee76 --- /dev/null +++ b/parameters/latte/TBparam/2016_parameters_previous_version/bondints.nonortho @@ -0,0 +1,36 @@ +Noints= 34 +Element1 Element2 Kind H0 B1 B2 B3 B4 B5 R1 Rcut H0 B1 B2 B3 B4 B5 R1 Rcut +N O sss -11.430028 -2.257346 -1.152844 0.000000 0.000000 1.200000 3.500000 4.000000 0.340064 -1.703613 -0.622348 0.036738 -0.040158 1.200000 3.500000 4.000000 +N O sps 11.597479 -1.382001 -0.765170 0.000000 0.000000 1.200000 3.500000 4.000000 -0.370946 -1.040947 -0.931097 0.252441 -0.115450 1.200000 3.500000 4.000000 +O N sps 12.143744 -0.822913 -0.676127 0.000000 0.000000 1.200000 3.500000 4.000000 -0.420014 -1.107918 -0.905594 0.188424 -0.088365 1.200000 3.500000 4.000000 +N O pps 9.465191 -1.082032 -0.769214 0.000000 0.000000 1.200000 3.500000 4.000000 -0.314073 0.499050 -2.914288 2.067657 -0.738439 1.200000 3.500000 4.000000 +N O ppp -4.676789 -2.171480 -0.288002 0.000000 0.000000 1.200000 3.500000 4.000000 0.223937 -1.991867 -0.537630 -0.081270 -0.004130 1.200000 3.500000 4.000000 +C O sss -14.369472 -2.077439 -0.875471 0.000000 0.000000 1.200000 3.500000 4.000000 0.375339 -1.547372 -0.642492 0.020614 -0.026699 1.200000 3.500000 4.000000 +C O sps 9.576296 -1.156217 -0.494803 0.000000 0.000000 1.200000 3.500000 4.000000 -0.373027 -0.776043 -1.019920 0.257539 -0.102838 1.200000 3.500000 4.000000 +O C sps 14.037374 -1.192632 -0.654572 0.000000 0.000000 1.200000 3.500000 4.000000 -0.458068 -1.035067 -0.937868 0.190562 -0.077841 1.200000 3.500000 4.000000 +C O pps 9.331152 -0.718120 -0.822100 0.000000 0.000000 1.200000 3.500000 4.000000 -0.322293 0.795473 -3.476601 2.589965 -0.897800 1.200000 3.500000 4.000000 +C O ppp -5.334367 -2.263939 -0.204910 0.000000 0.000000 1.200000 3.500000 4.000000 0.244570 -1.922717 -0.573671 -0.057280 -0.004108 1.200000 3.500000 4.000000 +C N sss -7.010061 -1.730597 -0.575559 0.000000 0.000000 1.500000 3.500000 4.000000 0.263438 -1.754525 -0.584215 -0.007801 -0.021729 1.500000 3.500000 4.000000 +C N sps 7.543283 -1.293768 -0.624363 0.000000 0.000000 1.500000 3.500000 4.000000 -0.326609 -1.197485 -0.807786 0.134891 -0.084373 1.500000 3.500000 4.000000 +N C sps 9.090970 -1.494255 -0.616711 0.000000 0.000000 1.500000 3.500000 4.000000 -0.337943 -1.335442 -0.769693 0.119373 -0.079493 1.500000 3.500000 4.000000 +C N pps 6.892240 -0.931920 -0.769164 0.000000 0.000000 1.500000 3.500000 4.000000 -0.350240 -0.467439 -1.849316 1.854403 -0.988471 1.500000 3.500000 4.000000 +C N ppp -2.903346 -2.149349 -0.253006 0.000000 0.000000 1.500000 3.500000 4.000000 0.158424 -2.114409 -0.582346 -0.051076 -0.006183 1.500000 3.500000 4.000000 +C C sss -9.404207 -1.363297 -0.507128 0.000000 0.000000 1.400000 3.500000 4.000000 0.346977 -1.519820 -0.570812 -0.013518 -0.015829 1.400000 3.500000 4.000000 +C C sps 8.662429 -1.047410 -0.661999 0.000000 0.000000 1.400000 3.500000 4.000000 -0.400467 -0.984048 -0.853949 0.157178 -0.073381 1.400000 3.500000 4.000000 +C C pps 6.811512 -0.552299 -0.776890 0.000000 0.000000 1.400000 3.500000 4.000000 -0.382417 0.102889 -2.786680 2.646356 -1.134320 1.400000 3.500000 4.000000 +C C ppp -3.550127 -1.925572 -0.132715 0.000000 0.000000 1.400000 3.500000 4.000000 0.214357 -1.948923 -0.578323 -0.034356 -0.007257 1.400000 3.500000 4.000000 +H C sss -9.072577 -1.393093 -0.430611 0.000000 0.000000 1.100000 3.500000 4.000000 0.416003 -1.459596 -0.654874 0.009140 -0.012658 1.100000 3.500000 4.000000 +H C sps 8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000 -0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000 +H H sss -9.340000 -1.145903 -0.391777 0.000000 0.000000 0.750000 3.500000 4.000000 0.575007 -1.391261 -0.778831 0.080209 -0.017759 0.750000 3.500000 4.000000 +O O sss -12.737687 -1.851608 -0.666621 0.000000 0.000000 1.200000 3.500000 4.000000 0.296445 -1.911896 -0.663451 0.038054 -0.046608 1.200000 3.500000 4.000000 +O O sps 13.683050 -1.684554 -0.468349 0.000000 0.000000 1.200000 3.500000 4.000000 -0.362143 -1.285274 -0.939591 0.204641 -0.106438 1.200000 3.500000 4.000000 +O O pps 9.460772 -1.211748 -0.581016 0.000000 0.000000 1.200000 3.500000 4.000000 -0.312044 0.121814 -2.519352 1.681266 -0.644566 1.200000 3.500000 4.000000 +O O ppp -4.494595 -2.709223 -0.284124 0.000000 0.000000 1.200000 3.500000 4.000000 0.193010 -2.168462 -0.580629 -0.105104 0.004891 1.200000 3.500000 4.000000 +H O sss -12.230931 -1.808632 -0.421164 0.000000 0.000000 1.000000 3.500000 4.000000 0.404725 -1.702546 -0.707938 0.074904 -0.039922 1.000000 3.500000 4.000000 +H O sps 9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000 -0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000 +N N sss -7.710330 -2.365312 -0.525527 0.000000 0.000000 1.500000 3.500000 4.000000 0.231654 -1.879002 -0.572765 -0.004579 -0.031106 1.500000 3.500000 4.000000 +N N sps 8.222314 -1.612118 -0.690081 0.000000 0.000000 1.500000 3.500000 4.000000 -0.305271 -1.385158 -0.751032 0.114531 -0.090839 1.500000 3.500000 4.000000 +N N pps 7.178570 -1.176467 -0.571049 0.000000 0.000000 1.500000 3.500000 4.000000 -0.324668 -0.547805 -1.638658 1.495168 -0.827868 1.500000 3.500000 4.000000 +N N ppp -2.829344 -2.408049 -0.387709 0.000000 0.000000 1.500000 3.500000 4.000000 0.142909 -2.162036 -0.571942 -0.071640 -0.004682 1.500000 3.500000 4.000000 +H N sss -12.095890 -1.519057 -0.277247 0.000000 0.000000 1.000000 3.500000 4.000000 0.446693 -1.500463 -0.657448 0.065741 -0.037004 1.000000 3.500000 4.000000 +H N sps 9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000 -0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000 diff --git a/parameters/latte/TBparam/2016_parameters_previous_version/ppots.nonortho b/parameters/latte/TBparam/2016_parameters_previous_version/ppots.nonortho new file mode 100644 index 00000000..1b9b66c0 --- /dev/null +++ b/parameters/latte/TBparam/2016_parameters_previous_version/ppots.nonortho @@ -0,0 +1,12 @@ +Nopps= 10 +Ele1 Ele2 A0 A1 A2 A3 A4 A5 A6 C R1 Rcut +N O 13.182426 20.050322 -46.806321 38.206953 -12.319656 0.000000 0.000000 0.000000 1.600000 1.700000 +C N 88.953762 10.294988 -27.706877 22.101434 -6.836438 0.000000 0.000000 0.000000 1.600000 1.700000 +C O 0.944093 30.116337 -59.608215 45.107654 -13.178839 0.000000 0.000000 0.000000 1.600000 1.700000 +C H 104.889589 3.971095 -23.823043 26.408093 -11.317522 0.000000 0.000000 0.000000 1.200000 1.300000 +C C 3.962931 24.467772 -51.156024 39.031644 -11.342979 0.000000 0.000000 0.000000 1.600000 1.700000 +H H 38.512100 3.887860 -37.769100 57.083500 -34.512200 0.000000 0.000000 0.000000 0.900000 1.000000 +N N 43.228899 15.004605 -36.621777 29.234888 -8.912743 0.000000 0.000000 0.000000 1.600000 1.700000 +N H 0.625470 28.081241 -63.414297 53.286361 -17.352234 0.000000 0.000000 0.000000 1.300000 1.400000 +O O 10.999870 19.303033 -45.747853 37.946431 -11.935755 0.000000 0.000000 0.000000 1.500000 1.600000 +O H 0.481176 33.175383 -81.158683 74.935408 -26.792315 0.000000 0.000000 0.000000 1.200000 1.300000 diff --git a/parameters/latte/TBparam/JCTC-2017.params/bondints.nonortho b/parameters/latte/TBparam/JCTC-2017.params/bondints.nonortho new file mode 100644 index 00000000..f032b13a --- /dev/null +++ b/parameters/latte/TBparam/JCTC-2017.params/bondints.nonortho @@ -0,0 +1,36 @@ +Noints= 34 +E1 E2 Kind H0 B1 B2 B3 B4 R0 R1 Rcut H0 B1 B2 B3 B4 R0 R1 Rcut + N O sss -9.360078 -1.293118 -0.379415 0.000000 0.000000 1.200000 3.500000 4.000000 0.340064 -1.703613 -0.622348 0.036738 -0.040158 1.200000 3.500000 4.000000 + N O sps 10.309052 -0.981652 -0.828497 0.000000 0.000000 1.200000 3.500000 4.000000 -0.370946 -1.040947 -0.931097 0.252441 -0.115450 1.200000 3.500000 4.000000 + O N sps 10.723048 -0.454312 -0.916563 0.000000 0.000000 1.200000 3.500000 4.000000 -0.420014 -1.107918 -0.905594 0.188424 -0.088365 1.200000 3.500000 4.000000 + N O pps 9.259131 -0.734112 -1.023762 0.000000 0.000000 1.200000 3.500000 4.000000 -0.314073 0.499050 -2.914288 2.067657 -0.738439 1.200000 3.500000 4.000000 + N O ppp -4.532623 -1.999631 -0.286275 0.000000 0.000000 1.200000 3.500000 4.000000 0.223937 -1.991867 -0.537630 -0.081270 -0.004130 1.200000 3.500000 4.000000 + C N sss -7.409712 -1.940942 -0.219762 0.000000 0.000000 1.500000 3.500000 4.000000 0.263438 -1.754525 -0.584215 -0.007801 -0.021729 1.500000 3.500000 4.000000 + C N sps 7.501761 -1.211169 -0.373905 0.000000 0.000000 1.500000 3.500000 4.000000 -0.326609 -1.197485 -0.807786 0.134891 -0.084373 1.500000 3.500000 4.000000 + N C sps 8.697591 -1.267240 -0.178484 0.000000 0.000000 1.500000 3.500000 4.000000 -0.337943 -1.335442 -0.769693 0.119373 -0.079493 1.500000 3.500000 4.000000 + C N pps 6.954600 -1.188456 -0.808043 0.000000 0.000000 1.500000 3.500000 4.000000 -0.350240 -0.467439 -1.849316 1.854403 -0.988471 1.500000 3.500000 4.000000 + C N ppp -2.921605 -2.203548 -0.409424 0.000000 0.000000 1.500000 3.500000 4.000000 0.158424 -2.114409 -0.582346 -0.051076 -0.006183 1.500000 3.500000 4.000000 + C O sss -13.986685 -1.931973 -0.432011 0.000000 0.000000 1.200000 3.500000 4.000000 0.375339 -1.547372 -0.642492 0.020614 -0.026699 1.200000 3.500000 4.000000 + C O sps 10.718738 -1.389459 -0.182128 0.000000 0.000000 1.200000 3.500000 4.000000 -0.373027 -0.776043 -1.019920 0.257539 -0.102838 1.200000 3.500000 4.000000 + O C sps 14.194791 -1.371650 -0.248285 0.000000 0.000000 1.200000 3.500000 4.000000 -0.458068 -1.035067 -0.937868 0.190562 -0.077841 1.200000 3.500000 4.000000 + C O pps 8.622023 -0.557144 -0.938551 0.000000 0.000000 1.200000 3.500000 4.000000 -0.322293 0.795473 -3.476601 2.589965 -0.897800 1.200000 3.500000 4.000000 + C O ppp -5.327397 -2.190160 -0.089303 0.000000 0.000000 1.200000 3.500000 4.000000 0.244570 -1.922717 -0.573671 -0.057280 -0.004108 1.200000 3.500000 4.000000 + N N sss -7.165811 -2.348869 -0.541905 0.000000 0.000000 1.500000 3.500000 4.000000 0.231654 -1.879002 -0.572765 -0.004579 -0.031106 1.500000 3.500000 4.000000 + N N sps 8.212268 -1.499123 -0.526440 0.000000 0.000000 1.500000 3.500000 4.000000 -0.305271 -1.385158 -0.751032 0.114531 -0.090839 1.500000 3.500000 4.000000 + N N pps 7.102331 -1.252366 -0.552533 0.000000 0.000000 1.500000 3.500000 4.000000 -0.324668 -0.547805 -1.638658 1.495168 -0.827868 1.500000 3.500000 4.000000 + N N ppp -2.828938 -2.376886 -0.560898 0.000000 0.000000 1.500000 3.500000 4.000000 0.142909 -2.162036 -0.571942 -0.071640 -0.004682 1.500000 3.500000 4.000000 + O O sss -14.387756 -2.244278 -1.645605 0.000000 0.000000 1.200000 3.500000 4.000000 0.296445 -1.911896 -0.663451 0.038054 -0.046608 1.200000 3.500000 4.000000 + O O sps 13.699127 -1.602358 -0.114474 0.000000 0.000000 1.200000 3.500000 4.000000 -0.362143 -1.285274 -0.939591 0.204641 -0.106438 1.200000 3.500000 4.000000 + O O pps 9.235469 -1.131474 -0.924535 0.000000 0.000000 1.200000 3.500000 4.000000 -0.312044 0.121814 -2.519352 1.681266 -0.644566 1.200000 3.500000 4.000000 + O O ppp -4.526526 -2.487174 -0.201464 0.000000 0.000000 1.200000 3.500000 4.000000 0.193010 -2.168462 -0.580629 -0.105104 0.004891 1.200000 3.500000 4.000000 + H O sss -12.189103 -1.800097 -0.325933 0.000000 0.000000 1.000000 3.500000 4.000000 0.404725 -1.702546 -0.707938 0.074904 -0.039922 1.000000 3.500000 4.000000 + H O sps 9.518733 -1.333235 -0.393710 0.000000 0.000000 1.000000 3.500000 4.000000 -0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000 + H N sss -12.631030 -1.585597 -0.250969 0.000000 0.000000 1.000000 3.500000 4.000000 0.446693 -1.500463 -0.657448 0.065741 -0.037004 1.000000 3.500000 4.000000 + H N sps 9.837852 -1.234850 -0.324283 0.000000 0.000000 1.000000 3.500000 4.000000 -0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000 + C C sss -9.197237 -1.607050 -0.535057 0.000000 0.000000 1.400000 3.500000 4.000000 0.346977 -1.519820 -0.570812 -0.013518 -0.015829 1.400000 3.500000 4.000000 + C C sps 8.562436 -0.980182 -0.646929 0.000000 0.000000 1.400000 3.500000 4.000000 -0.400467 -0.984048 -0.853949 0.157178 -0.073381 1.400000 3.500000 4.000000 + C C pps 6.614756 -0.528591 -0.951460 0.000000 0.000000 1.400000 3.500000 4.000000 -0.382417 0.102889 -2.786680 2.646356 -1.134320 1.400000 3.500000 4.000000 + C C ppp -3.678302 -1.881668 -0.255951 0.000000 0.000000 1.400000 3.500000 4.000000 0.214357 -1.948923 -0.578323 -0.034356 -0.007257 1.400000 3.500000 4.000000 + H C sss -9.235812 -1.372683 -0.408433 0.000000 0.000000 1.100000 3.500000 4.000000 0.416003 -1.459596 -0.654874 0.009140 -0.012658 1.100000 3.500000 4.000000 + H C sps 8.104851 -0.936099 -0.626219 0.000000 0.000000 1.100000 3.500000 4.000000 -0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000 + H H sss -9.400000 -1.145903 -0.391777 0.000000 0.000000 0.750000 3.500000 4.000000 0.575007 -1.391261 -0.778831 0.080209 -0.017759 0.750000 3.500000 4.000000 diff --git a/parameters/latte/TBparam/JCTC-2017.params/ppots.nonortho b/parameters/latte/TBparam/JCTC-2017.params/ppots.nonortho new file mode 100644 index 00000000..e88b4c98 --- /dev/null +++ b/parameters/latte/TBparam/JCTC-2017.params/ppots.nonortho @@ -0,0 +1,12 @@ +Nopps= 10 +E1 E2 A0 A1 A2 A3 A4 R0 X C R1 Rcut + N O 14.005908 19.769009 -46.607006 38.399015 -12.656658 0.000000 0.000000 0.000000 1.600000 1.700000 + C N 98.283078 10.289077 -27.709052 22.099235 -6.7964620 0.000000 0.000000 0.000000 1.600000 1.700000 + N N 40.335850 14.958977 -36.644093 29.219613 -8.9187830 0.000000 0.000000 0.000000 1.600000 1.700000 + C O 0.916287 30.115416 -59.612502 45.114207 -13.200384 0.000000 0.000000 0.000000 1.500000 1.600000 + N H 0.664002 28.086622 -63.415978 53.301425 -17.343446 0.000000 0.000000 0.000000 1.300000 1.400000 + O O 11.833452 19.281518 -45.763767 37.924165 -12.006535 0.000000 0.000000 0.000000 1.500000 1.600000 + O H 0.484351 33.176296 -81.154354 74.931992 -26.796460 0.000000 0.000000 0.000000 1.200000 1.300000 + C H 1.094168 28.606497 -71.558353 65.967464 -23.372892 0.000000 0.000000 0.000000 1.200000 1.300000 + C C 3.927770 24.439989 -51.156433 39.032536 -11.321277 0.000000 0.000000 0.000000 1.600000 1.700000 + H H 8.194700 16.371100 -75.246500 106.703000 -59.105700 0.000000 0.000000 0.000000 0.800000 0.900000 diff --git a/parameters/latte/TBparam/README.md b/parameters/latte/TBparam/README.md new file mode 100644 index 00000000..f500a60c --- /dev/null +++ b/parameters/latte/TBparam/README.md @@ -0,0 +1,8 @@ +LATTE TB PARAMETERS +=================== + +This folder contains the most recently (September 2017) updated TB +parameter for the LATTE code. Please cite: + + +We keep the previous (2016) version in case they are needed. diff --git a/parameters/latte/TBparam/bondints.nonortho b/parameters/latte/TBparam/bondints.nonortho new file mode 100644 index 00000000..5a4554b3 --- /dev/null +++ b/parameters/latte/TBparam/bondints.nonortho @@ -0,0 +1,41 @@ +Noints= 39 +Element1 Element2 Kind H0 B1 B2 B3 B4 B5 R1 Rcut H0 B1 B2 B3 B4 B5 R1 Rcut +N O sss -9.360078 -1.293118 -0.379415 0.000000 0.000000 1.200000 3.500000 4.000000 0.340064 -1.703613 -0.622348 0.036738 -0.040158 1.200000 3.500000 4.000000 +N O sps 10.309052 -0.981652 -0.828497 0.000000 0.000000 1.200000 3.500000 4.000000 -0.370946 -1.040947 -0.931097 0.252441 -0.115450 1.200000 3.500000 4.000000 +O N sps 10.723048 -0.454312 -0.916563 0.000000 0.000000 1.200000 3.500000 4.000000 -0.420014 -1.107918 -0.905594 0.188424 -0.088365 1.200000 3.500000 4.000000 +N O pps 9.259131 -0.734112 -1.023762 0.000000 0.000000 1.200000 3.500000 4.000000 -0.314073 0.499050 -2.914288 2.067657 -0.738439 1.200000 3.500000 4.000000 +N O ppp -4.532623 -1.999631 -0.286275 0.000000 0.000000 1.200000 3.500000 4.000000 0.223937 -1.991867 -0.537630 -0.081270 -0.004130 1.200000 3.500000 4.000000 +C N sss -7.409712 -1.940942 -0.219762 0.000000 0.000000 1.500000 3.500000 4.000000 0.263438 -1.754525 -0.584215 -0.007801 -0.021729 1.500000 3.500000 4.000000 +C N sps 7.501761 -1.211169 -0.373905 0.000000 0.000000 1.500000 3.500000 4.000000 -0.326609 -1.197485 -0.807786 0.134891 -0.084373 1.500000 3.500000 4.000000 +N C sps 8.697591 -1.267240 -0.178484 0.000000 0.000000 1.500000 3.500000 4.000000 -0.337943 -1.335442 -0.769693 0.119373 -0.079493 1.500000 3.500000 4.000000 +C N pps 6.954600 -1.188456 -0.808043 0.000000 0.000000 1.500000 3.500000 4.000000 -0.350240 -0.467439 -1.849316 1.854403 -0.988471 1.500000 3.500000 4.000000 +C N ppp -2.921605 -2.203548 -0.409424 0.000000 0.000000 1.500000 3.500000 4.000000 0.158424 -2.114409 -0.582346 -0.051076 -0.006183 1.500000 3.500000 4.000000 +C O sss -13.986685 -1.931973 -0.432011 0.000000 0.000000 1.200000 3.500000 4.000000 0.375339 -1.547372 -0.642492 0.020614 -0.026699 1.200000 3.500000 4.000000 +C O sps 10.718738 -1.389459 -0.182128 0.000000 0.000000 1.200000 3.500000 4.000000 -0.373027 -0.776043 -1.019920 0.257539 -0.102838 1.200000 3.500000 4.000000 +O C sps 14.194791 -1.371650 -0.248285 0.000000 0.000000 1.200000 3.500000 4.000000 -0.458068 -1.035067 -0.937868 0.190562 -0.077841 1.200000 3.500000 4.000000 +C O pps 8.622023 -0.557144 -0.938551 0.000000 0.000000 1.200000 3.500000 4.000000 -0.322293 0.795473 -3.476601 2.589965 -0.897800 1.200000 3.500000 4.000000 +C O ppp -5.327397 -2.190160 -0.089303 0.000000 0.000000 1.200000 3.500000 4.000000 0.244570 -1.922717 -0.573671 -0.057280 -0.004108 1.200000 3.500000 4.000000 +N N sss -7.165811 -2.348869 -0.541905 0.000000 0.000000 1.500000 3.500000 4.000000 0.231654 -1.879002 -0.572765 -0.004579 -0.031106 1.500000 3.500000 4.000000 +N N sps 8.212268 -1.499123 -0.526440 0.000000 0.000000 1.500000 3.500000 4.000000 -0.305271 -1.385158 -0.751032 0.114531 -0.090839 1.500000 3.500000 4.000000 +N N pps 7.102331 -1.252366 -0.552533 0.000000 0.000000 1.500000 3.500000 4.000000 -0.324668 -0.547805 -1.638658 1.495168 -0.827868 1.500000 3.500000 4.000000 +N N ppp -2.828938 -2.376886 -0.560898 0.000000 0.000000 1.500000 3.500000 4.000000 0.142909 -2.162036 -0.571942 -0.071640 -0.004682 1.500000 3.500000 4.000000 +O O sss -14.387756 -2.244278 -1.645605 0.000000 0.000000 1.200000 3.500000 4.000000 0.296445 -1.911896 -0.663451 0.038054 -0.046608 1.200000 3.500000 4.000000 +O O sps 13.699127 -1.602358 -0.114474 0.000000 0.000000 1.200000 3.500000 4.000000 -0.362143 -1.285274 -0.939591 0.204641 -0.106438 1.200000 3.500000 4.000000 +O O pps 9.235469 -1.131474 -0.924535 0.000000 0.000000 1.200000 3.500000 4.000000 -0.312044 0.121814 -2.519352 1.681266 -0.644566 1.200000 3.500000 4.000000 +O O ppp -4.526526 -2.487174 -0.201464 0.000000 0.000000 1.200000 3.500000 4.000000 0.193010 -2.168462 -0.580629 -0.105104 0.004891 1.200000 3.500000 4.000000 +H O sss -12.189103 -1.800097 -0.325933 0.000000 0.000000 1.000000 3.500000 4.000000 0.404725 -1.702546 -0.707938 0.074904 -0.039922 1.000000 3.500000 4.000000 +H O sps 9.518733 -1.333235 -0.393710 0.000000 0.000000 1.000000 3.500000 4.000000 -0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000 +H N sss -12.631030 -1.585597 -0.250969 0.000000 0.000000 1.000000 3.500000 4.000000 0.446693 -1.500463 -0.657448 0.065741 -0.037004 1.000000 3.500000 4.000000 +H N sps 9.837852 -1.234850 -0.324283 0.000000 0.000000 1.000000 3.500000 4.000000 -0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000 +C C sss -9.197237 -1.607050 -0.535057 0.000000 0.000000 1.400000 3.500000 4.000000 0.346977 -1.519820 -0.570812 -0.013518 -0.015829 1.400000 3.500000 4.000000 +C C sps 8.562436 -0.980182 -0.646929 0.000000 0.000000 1.400000 3.500000 4.000000 -0.400467 -0.984048 -0.853949 0.157178 -0.073381 1.400000 3.500000 4.000000 +C C pps 6.614756 -0.528591 -0.951460 0.000000 0.000000 1.400000 3.500000 4.000000 -0.382417 0.102889 -2.786680 2.646356 -1.134320 1.400000 3.500000 4.000000 +C C ppp -3.678302 -1.881668 -0.255951 0.000000 0.000000 1.400000 3.500000 4.000000 0.214357 -1.948923 -0.578323 -0.034356 -0.007257 1.400000 3.500000 4.000000 +H C sss -9.235812 -1.372683 -0.408433 0.000000 0.000000 1.100000 3.500000 4.000000 0.416003 -1.459596 -0.654874 0.009140 -0.012658 1.100000 3.500000 4.000000 +H C sps 8.104851 -0.936099 -0.626219 0.000000 0.000000 1.100000 3.500000 4.000000 -0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000 +H H sss -9.400000 -1.145903 -0.391777 0.000000 0.000000 0.750000 3.500000 4.000000 0.575007 -1.391261 -0.778831 0.080209 -0.017759 0.750000 3.500000 4.000000 +W W sss -2.63332044 -0.71100562 -0.27081645 0.03306840 -0.00393097 2.73 6.00 7.00 0.28895119 -0.91180491 -0.22236240 0.00062879 0.00223537 2.73 6.00 7.00 +W W sds -1.48671751 -0.42509143 -0.65004572 0.29520069 -0.06194951 2.73 6.00 7.00 0.14376383 -0.45157088 -0.59271709 0.18666281 -0.03366047 2.73 6.00 7.00 +W W dds -1.70672948 -1.10134419 -0.01972556 -0.04301193 0.00482517 2.73 6.00 7.00 0.11587117 -0.53362062 -0.52285554 0.14742450 -0.02563750 2.73 6.00 7.00 +W W ddp 1.41731714 -1.52300320 -0.03534115 -0.03114721 0.00393409 2.73 6.00 7.00 -0.11180069 -1.33376345 -0.26519523 0.05629322 -0.01154228 2.73 6.00 7.00 +W W ddd -0.32269993 -1.97500297 -0.00061059 -0.03674107 0.00594063 2.73 6.00 7.00 0.02602319 -1.93947083 -0.12231373 0.00539735 -0.00134363 2.73 6.00 7.00 diff --git a/parameters/latte/TBparam/bondints.nonortho.MgO b/parameters/latte/TBparam/bondints.nonortho.MgO new file mode 100644 index 00000000..97c30e92 --- /dev/null +++ b/parameters/latte/TBparam/bondints.nonortho.MgO @@ -0,0 +1,15 @@ +Noints= 13 +Element1 Element2 Kind H0 B1 B2 B3 B4 B5 R1 Rcut H0 B1 B2 B3 B4 B5 R1 Rcut +Mg O sss -3.885040 -1.095411 -0.308908 0.000000 0.000000 2.100000 4.500000 5.000000 0.163246 -1.634481 -0.465299 0.007980 -0.005456 2.100000 4.500000 5.000000 +Mg O sps 3.257643 -0.809926 -0.583932 0.000000 0.000000 2.100000 4.500000 5.000000 -0.207921 -1.010467 -0.615044 0.085237 -0.025786 2.100000 4.500000 5.000000 +O Mg sps 6.334109 -1.119474 -0.522146 0.000000 0.000000 2.100000 4.500000 5.000000 -0.285538 -1.359364 -0.542213 0.028240 -0.009651 2.100000 4.500000 5.000000 +Mg O pps 3.900000 -0.319598 -0.566728 0.000000 0.000000 2.100000 4.500000 5.000000 -0.293470 -0.490891 -0.979695 0.343956 -0.101020 2.100000 4.500000 5.000000 +Mg O ppp -1.600468 -1.215227 -0.504211 0.000000 0.000000 2.100000 4.500000 5.000000 0.107439 -1.771784 -0.406930 -0.008818 -0.002532 2.100000 4.500000 5.000000 +O O sss -0.187226 -2.804196 -0.206021 0.000000 0.000000 3.000000 4.000000 4.500000 0.004175 -3.168261 -0.410265 -0.009208 -0.003209 3.000000 4.000000 4.500000 +O O sps 0.250386 -2.758224 -0.190035 0.000000 0.000000 3.000000 4.000000 4.500000 -0.011937 -2.833561 -0.453975 0.002132 -0.005233 3.000000 4.000000 4.500000 +O O pps 0.630000 -2.460285 -0.551395 0.000000 0.000000 3.000000 4.000000 4.500000 -0.029311 -2.401574 -0.514549 0.021335 -0.018280 3.000000 4.000000 4.500000 +O O ppp -0.079467 -1.145889 -0.568659 0.000000 0.000000 3.000000 4.000000 4.500000 0.003565 -3.074917 -0.411792 -0.019138 -0.004444 3.000000 4.000000 4.500000 +Mg Mg sss -1.085595 -2.411351 -0.259300 0.000000 0.000000 3.000000 5.000000 5.500000 0.092218 -1.749673 -0.404651 -0.026072 -0.004081 3.000000 5.000000 5.500000 +Mg Mg sps 2.957829 -0.979745 -0.831253 0.000000 0.000000 3.000000 5.000000 5.500000 -0.161646 -1.493878 -0.456394 -0.008598 -0.007994 3.000000 5.000000 5.500000 +Mg Mg pps 1.251837 -0.462676 -0.534420 0.000000 0.000000 3.000000 5.000000 5.500000 -0.263833 -1.171096 -0.561298 0.045827 -0.022300 3.000000 5.000000 5.500000 +Mg Mg ppp -0.241662 -1.508045 -0.673016 0.000000 0.000000 3.000000 5.000000 5.500000 0.051909 -2.027203 -0.386320 -0.024555 -0.007992 3.000000 5.000000 5.500000 diff --git a/parameters/latte/TBparam/bondints.table.UO2 b/parameters/latte/TBparam/bondints.table.UO2 new file mode 100644 index 00000000..568da2e1 --- /dev/null +++ b/parameters/latte/TBparam/bondints.table.UO2 @@ -0,0 +1,1384 @@ + Noint= 31 + U U sss + 41 + 0.200000 0.973630 -13.481772 + 0.400000 0.905246 -9.285695 + 0.600000 0.815561 -5.700568 + 0.800000 0.720128 -3.638461 + 1.000000 0.626372 -2.259606 + 1.200000 0.539222 -0.690625 + 1.400000 0.465205 0.886193 + 1.600000 0.409379 1.909940 + 1.800000 0.371935 2.226708 + 2.000000 0.348779 2.018758 + 2.200000 0.334046 1.537389 + 2.400000 0.322274 0.977243 + 2.600000 0.309551 0.454593 + 2.800000 0.293753 0.023837 + 3.000000 0.274257 -0.299434 + 3.200000 0.251463 -0.520282 + 3.400000 0.226336 -0.653073 + 3.600000 0.200053 -0.715306 + 3.800000 0.173759 -0.724313 + 4.000000 0.148430 -0.695686 + 4.200000 0.124813 -0.642542 + 4.400000 0.103404 -0.575439 + 4.600000 0.084476 -0.502431 + 4.800000 0.068108 -0.429314 + 5.000000 0.054233 -0.360034 + 5.200000 0.042683 -0.297012 + 5.400000 0.033225 -0.241474 + 5.600000 0.025597 -0.193772 + 5.800000 0.019528 -0.153663 + 6.000000 0.014762 -0.120574 + 6.200000 0.011062 -0.093662 + 6.400000 0.008222 -0.072083 + 6.600000 0.006064 -0.054994 + 6.800000 0.004439 -0.041579 + 7.000000 0.003227 -0.031184 + 7.200000 0.002330 -0.023211 + 7.400000 0.001672 -0.017116 + 7.600000 0.001192 -0.012544 + 7.800000 0.000845 -0.009116 + 8.000000 0.000595 -0.006585 + 8.200000 0.000417 -0.004735 + U U sds + 41 + 0.200000 0.022161 -0.601725 + 0.400000 0.080839 -1.954431 + 0.600000 0.158617 -3.304442 + 0.800000 0.237074 -4.696440 + 1.000000 0.299366 -6.346158 + 1.200000 0.330251 -7.701557 + 1.400000 0.321177 -7.981671 + 1.600000 0.275261 -7.135532 + 1.800000 0.204834 -5.656322 + 2.000000 0.125124 -4.049000 + 2.200000 0.049131 -2.620810 + 2.400000 -0.014734 -1.492027 + 2.600000 -0.062731 -0.668121 + 2.800000 -0.094664 -0.103893 + 3.000000 -0.112462 0.258073 + 3.200000 -0.119006 0.470730 + 3.400000 -0.117323 0.577643 + 3.600000 -0.110136 0.612664 + 3.800000 -0.099666 0.601018 + 4.000000 -0.087603 0.560963 + 4.200000 -0.075151 0.505370 + 4.400000 -0.063123 0.443001 + 4.600000 -0.052022 0.379708 + 4.800000 -0.042125 0.319217 + 5.000000 -0.033546 0.263760 + 5.200000 -0.026288 0.214562 + 5.400000 -0.020279 0.172030 + 5.600000 -0.015401 0.136084 + 5.800000 -0.011515 0.106288 + 6.000000 -0.008474 0.082015 + 6.200000 -0.006136 0.062532 + 6.400000 -0.004369 0.047130 + 6.600000 -0.003056 0.035103 + 6.800000 -0.002097 0.025824 + 7.000000 -0.001409 0.018749 + 7.200000 -0.000924 0.013442 + 7.400000 -0.000590 0.009470 + 7.600000 -0.000364 0.006585 + 7.800000 -0.000214 0.004490 + 8.000000 -0.000119 0.002993 + 8.200000 -0.000059 0.001959 + U U sfs + 41 + 0.200000 -0.003937 0.870030 + 0.400000 -0.023290 5.974477 + 0.600000 -0.033328 11.280453 + 0.800000 0.005382 7.777123 + 1.000000 0.076242 -0.225365 + 1.200000 0.135783 -4.880335 + 1.400000 0.163305 -5.746174 + 1.600000 0.160579 -4.877831 + 1.800000 0.138299 -3.592393 + 2.000000 0.107396 -2.442195 + 2.200000 0.075589 -1.572111 + 2.400000 0.047240 -0.961895 + 2.600000 0.024253 -0.550867 + 2.800000 0.006980 -0.281665 + 3.000000 -0.005074 -0.109635 + 3.200000 -0.012777 -0.002939 + 3.400000 -0.017085 0.060219 + 3.600000 -0.018890 0.094505 + 3.800000 -0.018950 0.109961 + 4.000000 -0.017873 0.113335 + 4.200000 -0.016121 0.109226 + 4.400000 -0.014030 0.100764 + 4.600000 -0.011839 0.090015 + 4.800000 -0.009708 0.078342 + 5.000000 -0.007739 0.066641 + 5.200000 -0.005993 0.055538 + 5.400000 -0.004497 0.045361 + 5.600000 -0.003255 0.036327 + 5.800000 -0.002255 0.028545 + 6.000000 -0.001475 0.021987 + 6.200000 -0.000886 0.016572 + 6.400000 -0.000458 0.012191 + 6.600000 -0.000160 0.008735 + 6.800000 0.000036 0.006041 + 7.000000 0.000155 0.004027 + 7.200000 0.000217 0.002503 + 7.400000 0.000241 0.001442 + 7.600000 0.000239 0.000680 + 7.800000 0.000222 0.000190 + 8.000000 0.000197 -0.000136 + 8.200000 0.000168 -0.000299 + U U dds + 41 + 0.200000 0.933466 -13.792010 + 0.400000 0.755673 -10.373143 + 0.600000 0.518162 -6.496528 + 0.800000 0.279066 -2.871699 + 1.000000 0.087823 -0.177990 + 1.200000 -0.026300 0.914874 + 1.400000 -0.061496 0.576174 + 1.600000 -0.037957 -0.401586 + 1.800000 0.015895 -1.353032 + 2.000000 0.074996 -1.985451 + 2.200000 0.123217 -2.273838 + 2.400000 0.153743 -2.307743 + 2.600000 0.166575 -2.189075 + 2.800000 0.165377 -1.992146 + 3.000000 0.154925 -1.761529 + 3.200000 0.139553 -1.522640 + 3.400000 0.122459 -1.290691 + 3.600000 0.105622 -1.075584 + 3.800000 0.090032 -0.883527 + 4.000000 0.076032 -0.717537 + 4.200000 0.063623 -0.577943 + 4.400000 0.052682 -0.462920 + 4.600000 0.043078 -0.369340 + 4.800000 0.034710 -0.293611 + 5.000000 0.027505 -0.232385 + 5.200000 0.021401 -0.182724 + 5.400000 0.016329 -0.142452 + 5.600000 0.012204 -0.109825 + 5.800000 0.008924 -0.083593 + 6.000000 0.006375 -0.062722 + 6.200000 0.004440 -0.046341 + 6.400000 0.003005 -0.033715 + 6.600000 0.001967 -0.024109 + 6.800000 0.001234 -0.016980 + 7.000000 0.000732 -0.011728 + 7.200000 0.000397 -0.007919 + 7.400000 0.000183 -0.005225 + 7.600000 0.000052 -0.003347 + 7.800000 -0.000022 -0.002041 + 8.000000 -0.000059 -0.001170 + 8.200000 -0.000073 -0.000599 + U U ddp + 41 + 0.200000 0.945037 -14.031333 + 0.400000 0.792702 -10.949126 + 0.600000 0.574275 -7.092430 + 0.800000 0.328110 -3.159296 + 1.000000 0.091035 0.414402 + 1.200000 -0.107590 3.157718 + 1.400000 -0.250743 4.778700 + 1.600000 -0.335226 5.360180 + 1.800000 -0.368552 5.216314 + 2.000000 -0.363731 4.677937 + 2.200000 -0.334652 3.988727 + 2.400000 -0.293167 3.292605 + 2.600000 -0.247912 2.659015 + 2.800000 -0.204324 2.113209 + 3.000000 -0.165268 1.658343 + 3.200000 -0.131830 1.287752 + 3.400000 -0.104024 0.991148 + 3.600000 -0.081324 0.757238 + 3.800000 -0.063009 0.575058 + 4.000000 -0.048354 0.434566 + 4.200000 -0.036711 0.326945 + 4.400000 -0.027532 0.244902 + 4.600000 -0.020366 0.182534 + 4.800000 -0.014836 0.135213 + 5.000000 -0.010627 0.099376 + 5.200000 -0.007473 0.072382 + 5.400000 -0.005148 0.052164 + 5.600000 -0.003467 0.037116 + 5.800000 -0.002275 0.026069 + 6.000000 -0.001447 0.018041 + 6.200000 -0.000885 0.012272 + 6.400000 -0.000513 0.008218 + 6.600000 -0.000274 0.005388 + 6.800000 -0.000127 0.003429 + 7.000000 -0.000040 0.002122 + 7.200000 0.000008 0.001279 + 7.400000 0.000031 0.000707 + 7.600000 0.000039 0.000354 + 7.800000 0.000039 0.000136 + 8.000000 0.000035 0.000027 + 8.200000 0.000029 -0.000054 + U U ddd + 41 + 0.200000 0.981528 -14.836056 + 0.400000 0.928701 -13.713668 + 0.600000 0.848277 -12.153231 + 0.800000 0.749182 -10.387674 + 1.000000 0.640833 -8.569246 + 1.200000 0.531959 -6.823990 + 1.400000 0.429662 -5.264451 + 1.600000 0.338744 -3.959964 + 1.800000 0.261588 -2.924707 + 2.000000 0.198557 -2.133454 + 2.200000 0.148627 -1.543675 + 2.400000 0.110030 -1.110905 + 2.600000 0.080752 -0.796341 + 2.800000 0.058854 -0.569045 + 3.000000 0.042640 -0.405531 + 3.200000 0.030721 -0.288277 + 3.400000 0.022003 -0.204439 + 3.600000 0.015655 -0.144656 + 3.800000 0.011050 -0.102124 + 4.000000 0.007727 -0.071865 + 4.200000 0.005345 -0.050395 + 4.400000 0.003650 -0.035157 + 4.600000 0.002457 -0.024381 + 4.800000 0.001626 -0.016789 + 5.000000 0.001056 -0.011456 + 5.200000 0.000670 -0.007728 + 5.400000 0.000414 -0.005170 + 5.600000 0.000247 -0.003401 + 5.800000 0.000140 -0.002204 + 6.000000 0.000075 -0.001388 + 6.200000 0.000035 -0.000871 + 6.400000 0.000013 -0.000517 + 6.600000 0.000001 -0.000299 + 6.800000 -0.000005 -0.000163 + 7.000000 -0.000007 -0.000082 + 7.200000 -0.000007 -0.000027 + 7.400000 -0.000007 -0.000000 + 7.600000 -0.000006 0.000000 + 7.800000 -0.000004 0.000000 + 8.000000 -0.000003 0.000027 + 8.200000 -0.000002 0.000027 + U U dfs + 41 + 0.200000 0.137098 -1.402611 + 0.400000 0.247788 -6.615061 + 0.600000 0.279720 -7.816416 + 0.800000 0.226858 -3.282346 + 1.000000 0.146357 -0.403164 + 1.200000 0.084350 -0.560391 + 1.400000 0.053279 -1.527457 + 1.600000 0.046982 -2.203251 + 1.800000 0.053392 -2.411963 + 2.000000 0.062641 -2.271824 + 2.200000 0.069340 -1.959138 + 2.400000 0.071548 -1.605934 + 2.600000 0.069349 -1.280350 + 2.800000 0.063819 -1.007393 + 3.000000 0.056365 -0.789457 + 3.200000 0.048293 -0.619005 + 3.400000 0.040563 -0.486023 + 3.600000 0.033716 -0.381803 + 3.800000 0.027931 -0.299706 + 4.000000 0.023146 -0.234916 + 4.200000 0.019189 -0.183895 + 4.400000 0.015869 -0.143839 + 4.600000 0.013029 -0.112492 + 4.800000 0.010565 -0.088002 + 5.000000 0.008419 -0.068790 + 5.200000 0.006563 -0.053579 + 5.400000 0.004982 -0.041470 + 5.600000 0.003666 -0.031756 + 5.800000 0.002600 -0.023973 + 6.000000 0.001761 -0.017769 + 6.200000 0.001123 -0.012844 + 6.400000 0.000653 -0.009061 + 6.600000 0.000322 -0.006150 + 6.800000 0.000100 -0.004027 + 7.000000 -0.000041 -0.002476 + 7.200000 -0.000122 -0.001388 + 7.400000 -0.000161 -0.000653 + 7.600000 -0.000172 -0.000163 + 7.800000 -0.000166 0.000136 + 8.000000 -0.000150 0.000299 + 8.200000 -0.000130 0.000381 + U U dfp + 41 + 0.200000 0.129678 -1.173954 + 0.400000 0.240683 -6.405071 + 0.600000 0.290651 -10.264896 + 0.800000 0.253958 -7.514941 + 1.000000 0.157434 -1.786291 + 1.200000 0.048064 2.345023 + 1.400000 -0.042349 4.086497 + 1.600000 -0.101850 4.283834 + 1.800000 -0.131663 3.769457 + 2.000000 -0.138964 3.048410 + 2.200000 -0.131868 2.361050 + 2.400000 -0.117111 1.790237 + 2.600000 -0.099467 1.345032 + 2.800000 -0.081915 1.007610 + 3.000000 -0.066051 0.754681 + 3.200000 -0.052515 0.565398 + 3.400000 -0.041363 0.423491 + 3.600000 -0.032351 0.316958 + 3.800000 -0.025132 0.236875 + 4.000000 -0.019364 0.176711 + 4.200000 -0.014758 0.131513 + 4.400000 -0.011086 0.097580 + 4.600000 -0.008176 0.072110 + 4.800000 -0.005893 0.052926 + 5.000000 -0.004130 0.038504 + 5.200000 -0.002794 0.027674 + 5.400000 -0.001806 0.019565 + 5.600000 -0.001096 0.013551 + 5.800000 -0.000601 0.009143 + 6.000000 -0.000270 0.005959 + 6.200000 -0.000060 0.003728 + 6.400000 0.000064 0.002150 + 6.600000 0.000129 0.001116 + 6.800000 0.000155 0.000435 + 7.000000 0.000157 0.000027 + 7.200000 0.000145 -0.000190 + 7.400000 0.000127 -0.000327 + 7.600000 0.000106 -0.000354 + 7.800000 0.000086 -0.000354 + 8.000000 0.000068 -0.000327 + 8.200000 0.000052 -0.000299 + U U dfd + 41 + 0.200000 0.103199 -0.467873 + 0.400000 0.200426 -3.037008 + 0.600000 0.277278 -6.659197 + 0.800000 0.318290 -8.702120 + 1.000000 0.320612 -8.427856 + 1.200000 0.294098 -6.889379 + 1.400000 0.252201 -5.136394 + 1.600000 0.205899 -3.646135 + 1.800000 0.162120 -2.525108 + 2.000000 0.124271 -1.731079 + 2.200000 0.093381 -1.184757 + 2.400000 0.069143 -0.813076 + 2.600000 0.050642 -0.560473 + 2.800000 0.036793 -0.388089 + 3.000000 0.026560 -0.269692 + 3.200000 0.019062 -0.187867 + 3.400000 0.013593 -0.130996 + 3.600000 0.009614 -0.091321 + 3.800000 0.006728 -0.063566 + 4.000000 0.004641 -0.044110 + 4.200000 0.003142 -0.030477 + 4.400000 0.002075 -0.020898 + 4.600000 0.001327 -0.014177 + 4.800000 0.000811 -0.009497 + 5.000000 0.000464 -0.006231 + 5.200000 0.000238 -0.004000 + 5.400000 0.000096 -0.002476 + 5.600000 0.000012 -0.001469 + 5.800000 -0.000034 -0.000789 + 6.000000 -0.000055 -0.000381 + 6.200000 -0.000061 -0.000136 + 6.400000 -0.000059 0.000027 + 6.600000 -0.000053 0.000109 + 6.800000 -0.000044 0.000136 + 7.000000 -0.000036 0.000136 + 7.200000 -0.000028 0.000136 + 7.400000 -0.000022 0.000109 + 7.600000 -0.000016 0.000109 + 7.800000 -0.000012 0.000082 + 8.000000 -0.000009 0.000054 + 8.200000 -0.000006 0.000054 + U U ffs + 41 + 0.200000 0.659293 -60.675758 + 0.400000 0.148619 18.325916 + 0.600000 -0.088447 23.668518 + 0.800000 -0.159180 22.353010 + 1.000000 -0.162554 19.533558 + 1.200000 -0.148785 14.650311 + 1.400000 -0.134169 10.343946 + 1.600000 -0.115162 7.067151 + 1.800000 -0.094916 4.713937 + 2.000000 -0.077591 3.148139 + 2.200000 -0.063852 2.122134 + 2.400000 -0.052774 1.436190 + 2.600000 -0.043475 0.979311 + 2.800000 -0.035466 0.676176 + 3.000000 -0.028535 0.472662 + 3.200000 -0.022612 0.334210 + 3.400000 -0.017683 0.239161 + 3.600000 -0.013725 0.173228 + 3.800000 -0.010660 0.126832 + 4.000000 -0.008351 0.093743 + 4.200000 -0.006631 0.069852 + 4.400000 -0.005338 0.052382 + 4.600000 -0.004336 0.039538 + 4.800000 -0.003527 0.029987 + 5.000000 -0.002848 0.022830 + 5.200000 -0.002265 0.017415 + 5.400000 -0.001761 0.013279 + 5.600000 -0.001330 0.010095 + 5.800000 -0.000968 0.007592 + 6.000000 -0.000673 0.005633 + 6.200000 -0.000441 0.004109 + 6.400000 -0.000263 0.002912 + 6.600000 -0.000134 0.002014 + 6.800000 -0.000044 0.001333 + 7.000000 0.000015 0.000816 + 7.200000 0.000050 0.000463 + 7.400000 0.000068 0.000218 + 7.600000 0.000074 0.000027 + 7.800000 0.000072 -0.000054 + 8.000000 0.000066 -0.000136 + 8.200000 0.000057 -0.000163 + U U ffp + 41 + 0.200000 0.683341 -65.715149 + 0.400000 0.187996 12.289723 + 0.600000 -0.014600 1.811653 + 0.800000 -0.013061 -18.100716 + 1.000000 0.038428 -20.159691 + 1.200000 0.082625 -15.719637 + 1.400000 0.101842 -10.912392 + 1.600000 0.102347 -7.196867 + 1.800000 0.094552 -4.672848 + 2.000000 0.083597 -3.042614 + 2.200000 0.071467 -1.994105 + 2.400000 0.059309 -1.320052 + 2.600000 0.047980 -0.886302 + 2.800000 0.038033 -0.604202 + 3.000000 0.029710 -0.417912 + 3.200000 0.023012 -0.293067 + 3.400000 0.017775 -0.208113 + 3.600000 0.013752 -0.149363 + 3.800000 0.010675 -0.108138 + 4.000000 0.008304 -0.078804 + 4.200000 0.006447 -0.057688 + 4.400000 0.004970 -0.042341 + 4.600000 0.003780 -0.031075 + 4.800000 0.002819 -0.022776 + 5.000000 0.002048 -0.016599 + 5.200000 0.001438 -0.012000 + 5.400000 0.000967 -0.008572 + 5.600000 0.000613 -0.006014 + 5.800000 0.000355 -0.004109 + 6.000000 0.000175 -0.002721 + 6.200000 0.000055 -0.001714 + 6.400000 -0.000019 -0.001007 + 6.600000 -0.000061 -0.000517 + 6.800000 -0.000081 -0.000218 + 7.000000 -0.000086 -0.000000 + 7.200000 -0.000081 0.000109 + 7.400000 -0.000072 0.000190 + 7.600000 -0.000061 0.000218 + 7.800000 -0.000050 0.000218 + 8.000000 -0.000039 0.000190 + 8.200000 -0.000030 0.000190 + U U ffd + 41 + 0.200000 0.760862 -82.462662 + 0.400000 0.288524 9.356961 + 0.600000 -0.064386 44.436466 + 0.800000 -0.221551 38.073299 + 1.000000 -0.256077 24.563637 + 1.200000 -0.233604 14.619725 + 1.400000 -0.192327 8.526116 + 1.600000 -0.150744 4.993507 + 1.800000 -0.115075 2.972544 + 2.000000 -0.086300 1.804822 + 2.200000 -0.063835 1.118333 + 2.400000 -0.046721 0.707387 + 2.600000 -0.033939 0.456280 + 2.800000 -0.024539 0.299489 + 3.000000 -0.017702 0.199514 + 3.200000 -0.012757 0.134588 + 3.400000 -0.009186 0.091648 + 3.600000 -0.006598 0.062858 + 3.800000 -0.004713 0.043293 + 4.000000 -0.003334 0.029878 + 4.200000 -0.002323 0.020572 + 4.400000 -0.001584 0.014123 + 4.600000 -0.001048 0.009633 + 4.800000 -0.000665 0.006476 + 5.000000 -0.000398 0.004272 + 5.200000 -0.000216 0.002776 + 5.400000 -0.000097 0.001714 + 5.600000 -0.000023 0.001007 + 5.800000 0.000019 0.000544 + 6.000000 0.000041 0.000245 + 6.200000 0.000049 0.000054 + 6.400000 0.000049 -0.000054 + 6.600000 0.000045 -0.000109 + 6.800000 0.000038 -0.000136 + 7.000000 0.000031 -0.000136 + 7.200000 0.000025 -0.000136 + 7.400000 0.000019 -0.000109 + 7.600000 0.000014 -0.000082 + 7.800000 0.000010 -0.000082 + 8.000000 0.000007 -0.000054 + 8.200000 0.000005 -0.000054 + U U fff + 41 + 0.200000 0.916759 -119.867676 + 0.400000 0.721484 -76.854179 + 0.600000 0.512559 -40.516853 + 0.800000 0.345240 -19.656771 + 1.000000 0.227030 -9.486324 + 1.200000 0.147917 -4.698781 + 1.400000 0.096284 -2.411010 + 1.600000 0.062851 -1.284160 + 1.800000 0.041164 -0.708721 + 2.000000 0.027035 -0.403899 + 2.200000 0.017797 -0.236821 + 2.400000 0.011741 -0.142343 + 2.600000 0.007760 -0.087321 + 2.800000 0.005135 -0.054477 + 3.000000 0.003397 -0.034450 + 3.200000 0.002241 -0.021960 + 3.400000 0.001470 -0.014095 + 3.600000 0.000953 -0.009061 + 3.800000 0.000608 -0.005823 + 4.000000 0.000378 -0.003728 + 4.200000 0.000227 -0.002367 + 4.400000 0.000129 -0.001469 + 4.600000 0.000066 -0.000898 + 4.800000 0.000028 -0.000517 + 5.000000 0.000006 -0.000299 + 5.200000 -0.000005 -0.000136 + 5.400000 -0.000011 -0.000054 + 5.600000 -0.000012 -0.000000 + 5.800000 -0.000012 0.000027 + 6.000000 -0.000011 0.000027 + 6.200000 -0.000009 0.000027 + 6.400000 -0.000007 0.000027 + 6.600000 -0.000005 0.000027 + 6.800000 -0.000004 0.000027 + 7.000000 -0.000003 0.000027 + 7.200000 -0.000002 0.000027 + 7.400000 -0.000001 0.000000 + 7.600000 -0.000001 0.000000 + 7.800000 -0.000001 0.000000 + 8.000000 -0.000000 0.000000 + 8.200000 -0.000000 0.000000 + U O sps + 41 + 0.200000 -0.081028 -3.609182 + 0.400000 -0.175119 -1.297194 + 0.600000 -0.262822 6.570135 + 0.800000 -0.298702 11.691507 + 1.000000 -0.267298 11.129674 + 1.200000 -0.190575 7.953343 + 1.400000 -0.099131 4.649283 + 1.600000 -0.015156 2.098705 + 1.800000 0.050281 0.391191 + 2.000000 0.094418 -0.637291 + 2.200000 0.119252 -1.184729 + 2.400000 0.128795 -1.415863 + 2.600000 0.127376 -1.451265 + 2.800000 0.118811 -1.373087 + 3.000000 0.106134 -1.234962 + 3.200000 0.091603 -1.071203 + 3.400000 0.076812 -0.903309 + 3.600000 0.062815 -0.744259 + 3.800000 0.050236 -0.601099 + 4.000000 0.039379 -0.477043 + 4.200000 0.030311 -0.372687 + 4.400000 0.022947 -0.287080 + 4.600000 0.017110 -0.218290 + 4.800000 0.012581 -0.164057 + 5.000000 0.009133 -0.121961 + 5.200000 0.006551 -0.089743 + 5.400000 0.004648 -0.065389 + 5.600000 0.003265 -0.047185 + 5.800000 0.002271 -0.033742 + 6.000000 0.001566 -0.023892 + 6.200000 0.001071 -0.016762 + 6.400000 0.000727 -0.011674 + 6.600000 0.000489 -0.008055 + 6.800000 0.000327 -0.005497 + 7.000000 0.000217 -0.003728 + 7.200000 0.000143 -0.002503 + 7.400000 0.000094 -0.001687 + 7.600000 0.000061 -0.001116 + 7.800000 0.000040 -0.000735 + 8.000000 0.000025 -0.000490 + 8.200000 0.000016 -0.000327 + O U sss + 41 + 0.200000 0.170900 -14.319828 + 0.400000 0.117497 -12.109938 + 0.600000 0.040273 -8.871211 + 0.800000 -0.047750 -5.362766 + 1.000000 -0.134671 -1.264921 + 1.200000 -0.206754 2.532128 + 1.400000 -0.254072 5.128802 + 1.600000 -0.274500 6.413071 + 1.800000 -0.271978 6.689783 + 2.000000 -0.253126 6.328334 + 2.200000 -0.224687 5.628376 + 2.400000 -0.192192 4.796061 + 2.600000 -0.159558 3.958359 + 2.800000 -0.129209 3.185202 + 3.000000 -0.102417 2.509407 + 3.200000 -0.079659 1.941043 + 3.400000 -0.060909 1.477034 + 3.600000 -0.045851 1.107422 + 3.800000 -0.034022 0.819117 + 4.000000 -0.024912 0.598378 + 4.200000 -0.018018 0.432144 + 4.400000 -0.012884 0.308849 + 4.600000 -0.009117 0.218589 + 4.800000 -0.006389 0.153363 + 5.000000 -0.004438 0.106750 + 5.200000 -0.003057 0.073743 + 5.400000 -0.002089 0.050586 + 5.600000 -0.001418 0.034477 + 5.800000 -0.000955 0.023347 + 6.000000 -0.000639 0.015701 + 6.200000 -0.000425 0.010504 + 6.400000 -0.000281 0.006993 + 6.600000 -0.000184 0.004599 + 6.800000 -0.000120 0.003020 + 7.000000 -0.000078 0.001986 + 7.200000 -0.000050 0.001279 + 7.400000 -0.000032 0.000816 + 7.600000 -0.000020 0.000517 + 7.800000 -0.000013 0.000327 + 8.000000 -0.000008 0.000218 + 8.200000 -0.000005 0.000136 + O U sds + 41 + 0.200000 0.034091 -1.727814 + 0.400000 0.123457 -5.618144 + 0.600000 0.239193 -9.723662 + 0.800000 0.352672 -13.713178 + 1.000000 0.438085 -16.622265 + 1.200000 0.479155 -17.410852 + 1.400000 0.475420 -16.342014 + 1.600000 0.437724 -14.216426 + 1.800000 0.380550 -11.735944 + 2.000000 0.316740 -9.343002 + 2.200000 0.255212 -7.252705 + 2.400000 0.200847 -5.532075 + 2.600000 0.155429 -4.168322 + 2.800000 0.118832 -3.113799 + 3.000000 0.089992 -2.310981 + 3.200000 0.067553 -1.705147 + 3.400000 0.050220 -1.249846 + 3.600000 0.036898 -0.908316 + 3.800000 0.026721 -0.652611 + 4.000000 0.019014 -0.461995 + 4.200000 0.013250 -0.321067 + 4.400000 0.009011 -0.218181 + 4.600000 0.005954 -0.144302 + 4.800000 0.003802 -0.092410 + 5.000000 0.002326 -0.056845 + 5.200000 0.001345 -0.033171 + 5.400000 0.000716 -0.017960 + 5.600000 0.000330 -0.008599 + 5.800000 0.000105 -0.003129 + 6.000000 -0.000014 -0.000163 + 6.200000 -0.000070 0.001279 + 6.400000 -0.000089 0.001796 + 6.600000 -0.000087 0.001823 + 6.800000 -0.000076 0.001633 + 7.000000 -0.000062 0.001361 + 7.200000 -0.000048 0.001061 + 7.400000 -0.000036 0.000816 + 7.600000 -0.000026 0.000599 + 7.800000 -0.000019 0.000435 + 8.000000 -0.000013 0.000299 + 8.200000 -0.000009 0.000218 + O U sfs + 41 + 0.200000 -0.004504 3.639251 + 0.400000 0.002153 7.829695 + 0.600000 0.062598 -2.039058 + 0.800000 0.140809 -10.984039 + 1.000000 0.192876 -12.985926 + 1.200000 0.210819 -11.582335 + 1.400000 0.202639 -9.294538 + 1.600000 0.179471 -7.121791 + 1.800000 0.150411 -5.339228 + 2.000000 0.121245 -3.956644 + 2.200000 0.095070 -2.911482 + 2.400000 0.073125 -2.131794 + 2.600000 0.055502 -1.555158 + 2.800000 0.041714 -1.131041 + 3.000000 0.031081 -0.819770 + 3.200000 0.022940 -0.591140 + 3.400000 0.016722 -0.422702 + 3.600000 0.011977 -0.298210 + 3.800000 0.008367 -0.205990 + 4.000000 0.005638 -0.137853 + 4.200000 0.003605 -0.087893 + 4.400000 0.002124 -0.051919 + 4.600000 0.001078 -0.026667 + 4.800000 0.000371 -0.009687 + 5.000000 -0.000077 0.001116 + 5.200000 -0.000335 0.007347 + 5.400000 -0.000459 0.010395 + 5.600000 -0.000494 0.011320 + 5.800000 -0.000474 0.010912 + 6.000000 -0.000424 0.009769 + 6.200000 -0.000361 0.008327 + 6.400000 -0.000295 0.006803 + 6.600000 -0.000234 0.005415 + 6.800000 -0.000181 0.004191 + 7.000000 -0.000137 0.003157 + 7.200000 -0.000101 0.002340 + 7.400000 -0.000073 0.001714 + 7.600000 -0.000052 0.001225 + 7.800000 -0.000037 0.000871 + 8.000000 -0.000025 0.000599 + 8.200000 -0.000017 0.000408 + O U pds + 41 + 0.200000 -0.210747 4.960146 + 0.400000 -0.369565 10.821940 + 0.600000 -0.422798 12.536040 + 0.800000 -0.358605 8.011277 + 1.000000 -0.222761 2.039248 + 1.200000 -0.073248 -2.201755 + 1.400000 0.051327 -4.367836 + 1.600000 0.135588 -5.045943 + 1.800000 0.180497 -4.879573 + 2.000000 0.194828 -4.327807 + 2.200000 0.189000 -3.656122 + 2.400000 0.171909 -2.997797 + 2.600000 0.149925 -2.411010 + 2.800000 0.127028 -1.914512 + 3.000000 0.105388 -1.507565 + 3.200000 0.085987 -1.180511 + 3.400000 0.069133 -0.920398 + 3.600000 0.054794 -0.714272 + 3.800000 0.042794 -0.550922 + 4.000000 0.032904 -0.421423 + 4.200000 0.024881 -0.318972 + 4.400000 0.018482 -0.238453 + 4.600000 0.013470 -0.175786 + 4.800000 0.009619 -0.127676 + 5.000000 0.006717 -0.091294 + 5.200000 0.004577 -0.064219 + 5.400000 0.003032 -0.044436 + 5.600000 0.001943 -0.030205 + 5.800000 0.001195 -0.020109 + 6.000000 0.000696 -0.013089 + 6.200000 0.000374 -0.008272 + 6.400000 0.000175 -0.005034 + 6.600000 0.000058 -0.002912 + 6.800000 -0.000006 -0.001551 + 7.000000 -0.000036 -0.000707 + 7.200000 -0.000046 -0.000218 + 7.400000 -0.000046 0.000054 + 7.600000 -0.000040 0.000163 + 7.800000 -0.000033 0.000218 + 8.000000 -0.000026 0.000218 + 8.200000 -0.000019 0.000190 + O U pdp + 41 + 0.200000 -0.186039 4.081599 + 0.400000 -0.350140 8.919756 + 0.600000 -0.468132 13.007260 + 0.800000 -0.523947 14.336891 + 1.000000 -0.521024 13.167480 + 1.200000 -0.476667 10.878949 + 1.400000 -0.410532 8.459122 + 1.600000 -0.338224 6.350076 + 1.800000 -0.269655 4.671379 + 2.000000 -0.209821 3.397450 + 2.200000 -0.160327 2.455365 + 2.400000 -0.120829 1.768359 + 2.600000 -0.090067 1.271125 + 2.800000 -0.066506 0.912507 + 3.000000 -0.048672 0.654135 + 3.200000 -0.035294 0.467927 + 3.400000 -0.025337 0.333557 + 3.600000 -0.017987 0.236576 + 3.800000 -0.012609 0.166615 + 4.000000 -0.008715 0.116329 + 4.200000 -0.005929 0.080382 + 4.400000 -0.003962 0.054913 + 4.600000 -0.002595 0.037007 + 4.800000 -0.001660 0.024599 + 5.000000 -0.001033 0.016082 + 5.200000 -0.000620 0.010340 + 5.400000 -0.000356 0.006504 + 5.600000 -0.000192 0.004000 + 5.800000 -0.000093 0.002367 + 6.000000 -0.000036 0.001333 + 6.200000 -0.000006 0.000707 + 6.400000 0.000009 0.000327 + 6.600000 0.000014 0.000109 + 6.800000 0.000015 0.000000 + 7.000000 0.000014 -0.000054 + 7.200000 0.000011 -0.000054 + 7.400000 0.000009 -0.000082 + 7.600000 0.000007 -0.000054 + 7.800000 0.000005 -0.000054 + 8.000000 0.000003 -0.000027 + 8.200000 0.000002 -0.000027 + O U pfs + 41 + 0.200000 -0.103704 20.141975 + 0.400000 -0.220177 22.880150 + 0.600000 -0.204407 3.098724 + 0.800000 -0.124257 -6.818765 + 1.000000 -0.040006 -8.603887 + 1.200000 0.021892 -7.508792 + 1.400000 0.058226 -5.830475 + 1.600000 0.075795 -4.350366 + 1.800000 0.080623 -3.213202 + 2.000000 0.077273 -2.369105 + 2.200000 0.069575 -1.751216 + 2.400000 0.060320 -1.300731 + 2.600000 0.051100 -0.970793 + 2.800000 0.042625 -0.728068 + 3.000000 0.035127 -0.548745 + 3.200000 0.028634 -0.415409 + 3.400000 0.023083 -0.315489 + 3.600000 0.018381 -0.239977 + 3.800000 0.014428 -0.182343 + 4.000000 0.011131 -0.137935 + 4.200000 0.008409 -0.103376 + 4.400000 0.006192 -0.076382 + 4.600000 0.004420 -0.055348 + 4.800000 0.003033 -0.039103 + 5.000000 0.001976 -0.026749 + 5.200000 0.001194 -0.017551 + 5.400000 0.000636 -0.010857 + 5.600000 0.000256 -0.006150 + 5.800000 0.000012 -0.002939 + 6.000000 -0.000132 -0.000871 + 6.200000 -0.000206 0.000408 + 6.400000 -0.000232 0.001088 + 6.600000 -0.000228 0.001415 + 6.800000 -0.000208 0.001497 + 7.000000 -0.000179 0.001442 + 7.200000 -0.000148 0.001279 + 7.400000 -0.000118 0.001116 + 7.600000 -0.000092 0.000925 + 7.800000 -0.000070 0.000735 + 8.000000 -0.000052 0.000571 + 8.200000 -0.000038 0.000463 + O U pfp + 41 + 0.200000 -0.092997 19.462997 + 0.400000 -0.257123 40.423004 + 0.600000 -0.352219 37.320580 + 0.800000 -0.366117 26.212185 + 1.000000 -0.332564 16.977890 + 1.200000 -0.279901 10.797968 + 1.400000 -0.225242 6.907692 + 1.600000 -0.176177 4.484409 + 1.800000 -0.135082 2.957660 + 2.000000 -0.102111 1.979138 + 2.200000 -0.076427 1.341358 + 2.400000 -0.056792 0.918792 + 2.600000 -0.041934 0.634651 + 2.800000 -0.030753 0.441097 + 3.000000 -0.022368 0.307734 + 3.200000 -0.016102 0.214943 + 3.400000 -0.011440 0.149799 + 3.600000 -0.007992 0.103811 + 3.800000 -0.005464 0.071239 + 4.000000 -0.003632 0.048137 + 4.200000 -0.002325 0.031837 + 4.400000 -0.001410 0.020436 + 4.600000 -0.000788 0.012572 + 4.800000 -0.000378 0.007265 + 5.000000 -0.000120 0.003782 + 5.200000 0.000032 0.001578 + 5.400000 0.000113 0.000245 + 5.600000 0.000147 -0.000490 + 5.800000 0.000152 -0.000844 + 6.000000 0.000141 -0.000980 + 6.200000 0.000123 -0.000952 + 6.400000 0.000102 -0.000871 + 6.600000 0.000082 -0.000735 + 6.800000 0.000064 -0.000626 + 7.000000 0.000048 -0.000490 + 7.200000 0.000036 -0.000381 + 7.400000 0.000026 -0.000299 + 7.600000 0.000019 -0.000218 + 7.800000 0.000013 -0.000163 + 8.000000 0.000009 -0.000109 + 8.200000 0.000006 -0.000082 + O O sss + 41 + 0.200000 0.958688 -54.251423 + 0.400000 0.859209 -43.960049 + 0.600000 0.726042 -36.262791 + 0.800000 0.576621 -27.594984 + 1.000000 0.432757 -19.517530 + 1.200000 0.310392 -13.189658 + 1.400000 0.215180 -8.669303 + 1.600000 0.145583 -5.599967 + 1.800000 0.096886 -3.578651 + 2.000000 0.063781 -2.272096 + 2.200000 0.041650 -1.436162 + 2.400000 0.026982 -0.903853 + 2.600000 0.017310 -0.565697 + 2.800000 0.010971 -0.351462 + 3.000000 0.006855 -0.216385 + 3.200000 0.004217 -0.131785 + 3.400000 0.002553 -0.079321 + 3.600000 0.001522 -0.047130 + 3.800000 0.000893 -0.027674 + 4.000000 0.000517 -0.016055 + 4.200000 0.000295 -0.009225 + 4.400000 0.000167 -0.005252 + 4.600000 0.000093 -0.002966 + 4.800000 0.000051 -0.001660 + 5.000000 0.000028 -0.000925 + 5.200000 0.000015 -0.000517 + 5.400000 0.000008 -0.000272 + 5.600000 0.000004 -0.000163 + 5.800000 0.000002 -0.000082 + 6.000000 0.000001 -0.000054 + 6.200000 0.000000 -0.000027 + 6.400000 0.000000 -0.000000 + 6.600000 0.000000 -0.000000 + 6.800000 0.000000 -0.000000 + 7.000000 0.000000 -0.000000 + 7.200000 0.000000 -0.000000 + 7.400000 0.000000 -0.000000 + 7.600000 0.000000 -0.000000 + 7.800000 0.000000 -0.000000 + 8.000000 0.000000 -0.000000 + 8.200000 0.000000 -0.000000 + O O sps + 41 + 0.200000 -0.216672 4.835708 + 0.400000 -0.409855 20.885174 + 0.600000 -0.514459 26.644245 + 0.800000 -0.522813 24.105368 + 1.000000 -0.469341 19.150475 + 1.200000 -0.389656 14.362849 + 1.400000 -0.307120 10.459485 + 1.600000 -0.233607 7.485335 + 1.800000 -0.173360 5.294846 + 2.000000 -0.126362 3.711878 + 2.200000 -0.090734 2.579993 + 2.400000 -0.064181 1.775842 + 2.600000 -0.044652 1.208104 + 2.800000 -0.030496 0.810654 + 3.000000 -0.020418 0.535792 + 3.200000 -0.013395 0.348496 + 3.400000 -0.008613 0.222997 + 3.600000 -0.005433 0.140438 + 3.800000 -0.003366 0.087131 + 4.000000 -0.002051 0.053334 + 4.200000 -0.001231 0.032273 + 4.400000 -0.000727 0.019347 + 4.600000 -0.000424 0.011510 + 4.800000 -0.000243 0.006803 + 5.000000 -0.000138 0.003973 + 5.200000 -0.000077 0.002313 + 5.400000 -0.000042 0.001333 + 5.600000 -0.000022 0.000762 + 5.800000 -0.000012 0.000408 + 6.000000 -0.000006 0.000218 + 6.200000 -0.000003 0.000136 + 6.400000 -0.000002 0.000054 + 6.600000 -0.000001 0.000027 + 6.800000 -0.000000 0.000027 + 7.000000 -0.000000 0.000000 + 7.200000 -0.000000 0.000000 + 7.400000 -0.000000 0.000000 + 7.600000 -0.000000 0.000000 + 7.800000 -0.000000 0.000000 + 8.000000 -0.000000 0.000000 + 8.200000 -0.000000 0.000000 + O O pps + 41 + 0.200000 0.810245 -38.687759 + 0.400000 0.434115 -1.439482 + 0.600000 0.106783 11.660568 + 0.800000 -0.103006 13.405526 + 1.000000 -0.209362 11.679997 + 1.200000 -0.245979 9.364471 + 1.400000 -0.241882 7.264270 + 1.600000 -0.217430 5.542660 + 1.800000 -0.185661 4.189792 + 2.000000 -0.153628 3.150126 + 2.200000 -0.124280 2.358383 + 2.400000 -0.098472 1.756277 + 2.600000 -0.076321 1.298119 + 2.800000 -0.057758 0.950086 + 3.000000 -0.042636 0.687305 + 3.200000 -0.030699 0.490921 + 3.400000 -0.021579 0.346020 + 3.600000 -0.014826 0.240658 + 3.800000 -0.009970 0.165228 + 4.000000 -0.006571 0.112056 + 4.200000 -0.004248 0.075158 + 4.400000 -0.002696 0.049878 + 4.600000 -0.001679 0.032735 + 4.800000 -0.001026 0.021252 + 5.000000 -0.000615 0.013606 + 5.200000 -0.000361 0.008572 + 5.400000 -0.000207 0.005333 + 5.600000 -0.000117 0.003238 + 5.800000 -0.000064 0.001932 + 6.000000 -0.000034 0.001116 + 6.200000 -0.000018 0.000626 + 6.400000 -0.000009 0.000354 + 6.600000 -0.000005 0.000190 + 6.800000 -0.000002 0.000109 + 7.000000 -0.000001 0.000054 + 7.200000 -0.000000 0.000027 + 7.400000 -0.000000 0.000000 + 7.600000 -0.000000 0.000000 + 7.800000 -0.000000 0.000000 + 8.000000 -0.000000 0.000000 + 8.200000 -0.000000 0.000000 + O O ppp + 41 + 0.200000 0.933601 -59.591030 + 0.400000 0.779375 -38.370396 + 0.600000 0.606754 -23.314306 + 0.800000 0.453081 -14.195335 + 1.000000 0.329780 -8.805034 + 1.200000 0.236128 -5.571069 + 1.400000 0.167202 -3.583359 + 1.600000 0.117463 -2.333975 + 1.800000 0.081992 -1.534096 + 2.000000 0.056843 -1.014277 + 2.200000 0.039068 -0.672339 + 2.400000 0.026557 -0.445478 + 2.600000 0.017814 -0.294264 + 2.800000 0.011774 -0.193391 + 3.000000 0.007662 -0.126288 + 3.200000 0.004907 -0.081852 + 3.400000 0.003093 -0.052627 + 3.600000 0.001920 -0.033579 + 3.800000 0.001174 -0.021252 + 4.000000 0.000707 -0.013334 + 4.200000 0.000419 -0.008299 + 4.400000 0.000245 -0.005116 + 4.600000 0.000141 -0.003102 + 4.800000 0.000079 -0.001878 + 5.000000 0.000044 -0.001116 + 5.200000 0.000024 -0.000653 + 5.400000 0.000013 -0.000381 + 5.600000 0.000007 -0.000218 + 5.800000 0.000003 -0.000109 + 6.000000 0.000002 -0.000054 + 6.200000 0.000001 -0.000027 + 6.400000 0.000000 -0.000027 + 6.600000 0.000000 -0.000000 + 6.800000 0.000000 -0.000000 + 7.000000 0.000000 -0.000000 + 7.200000 0.000000 -0.000000 + 7.400000 0.000000 -0.000000 + 7.600000 0.000000 -0.000000 + 7.800000 0.000000 -0.000000 + 8.000000 0.000000 -0.000000 + 8.200000 0.000000 -0.000000 + H O sss + 49 + 0.100000 0.963416 -37.918114 + 0.200000 0.939954 -37.308414 + 0.300000 0.900370 -35.253494 + 0.400000 0.846085 -31.976643 + 0.500000 0.780387 -28.225119 + 0.600000 0.707474 -24.519854 + 0.700000 0.631487 -21.083872 + 0.800000 0.555947 -17.988304 + 0.900000 0.483539 -15.245042 + 1.000000 0.416117 -12.842794 + 1.100000 0.354797 -10.759790 + 1.200000 0.300095 -8.969390 + 1.300000 0.252071 -7.442750 + 1.400000 0.210466 -6.150508 + 1.500000 0.174820 -5.063739 + 1.600000 0.144562 -4.155151 + 1.700000 0.119079 -3.399437 + 1.800000 0.097761 -2.773820 + 1.900000 0.080033 -2.258137 + 2.000000 0.065366 -1.834728 + 2.100000 0.053286 -1.488327 + 2.200000 0.043377 -1.205873 + 2.300000 0.035278 -0.976263 + 2.400000 0.028676 -0.790110 + 2.500000 0.023309 -0.639468 + 2.600000 0.018953 -0.517805 + 2.700000 0.015422 -0.419654 + 2.800000 0.012561 -0.340496 + 2.900000 0.010244 -0.276658 + 3.000000 0.008366 -0.225174 + 3.100000 0.006842 -0.183541 + 3.200000 0.005603 -0.149880 + 3.300000 0.004595 -0.122560 + 3.400000 0.003772 -0.100356 + 3.500000 0.003099 -0.082260 + 3.600000 0.002547 -0.067484 + 3.700000 0.002093 -0.055375 + 3.800000 0.001719 -0.045443 + 3.900000 0.001411 -0.037252 + 4.000000 0.001157 -0.030504 + 4.100000 0.000946 -0.024953 + 4.200000 0.000772 -0.020354 + 4.300000 0.000628 -0.016572 + 4.400000 0.000509 -0.013442 + 4.500000 0.000410 -0.010857 + 4.600000 0.000329 -0.008708 + 4.700000 0.000262 -0.006966 + 4.800000 0.000207 -0.005497 + 4.900000 0.000162 -0.004327 + H O sps + 49 + 0.100000 -0.150325 5.746473 + 0.200000 -0.283669 10.419023 + 0.300000 -0.389279 13.083316 + 0.400000 -0.463716 14.121457 + 0.500000 -0.508482 14.148642 + 0.600000 -0.527605 13.554808 + 0.700000 -0.526091 12.599334 + 0.800000 -0.509043 11.470252 + 0.900000 -0.481152 10.292870 + 1.000000 -0.446438 9.141149 + 1.100000 -0.408136 8.054679 + 1.200000 -0.368692 7.052919 + 1.300000 -0.329847 6.143759 + 1.400000 -0.292750 5.328424 + 1.500000 -0.258094 4.604030 + 1.600000 -0.226242 3.965271 + 1.700000 -0.197327 3.405478 + 1.800000 -0.171338 2.917360 + 1.900000 -0.148167 2.493624 + 2.000000 -0.127654 2.127168 + 2.100000 -0.109604 1.811299 + 2.200000 -0.093812 1.539865 + 2.300000 -0.080066 1.307235 + 2.400000 -0.068158 1.108347 + 2.500000 -0.057886 0.938657 + 2.600000 -0.049063 0.794164 + 2.700000 -0.041512 0.671305 + 2.800000 -0.035071 0.567004 + 2.900000 -0.029595 0.478512 + 3.000000 -0.024951 0.403572 + 3.100000 -0.021024 0.340115 + 3.200000 -0.017709 0.286454 + 3.300000 -0.014917 0.241093 + 3.400000 -0.012569 0.202806 + 3.500000 -0.010595 0.170507 + 3.600000 -0.008939 0.143295 + 3.700000 -0.007548 0.120383 + 3.800000 -0.006381 0.101118 + 3.900000 -0.005401 0.084927 + 4.000000 -0.004577 0.071348 + 4.100000 -0.003884 0.059974 + 4.200000 -0.003300 0.050450 + 4.300000 -0.002807 0.042477 + 4.400000 -0.002391 0.035837 + 4.500000 -0.002037 0.030341 + 4.600000 -0.001737 0.025796 + 4.700000 -0.001482 0.022123 + 4.800000 -0.001265 0.019130 + 4.900000 -0.001079 0.016708 + H H sss + 51 + 0.100000 0.988129 -16.296545 + 0.200000 0.954100 -15.312119 + 0.300000 0.901931 -14.104914 + 0.400000 0.836648 -12.870822 + 0.500000 0.763234 -11.670963 + 0.600000 0.686109 -10.522643 + 0.700000 0.608902 -9.430623 + 0.800000 0.534388 -8.395583 + 0.900000 0.464512 -7.418994 + 1.000000 0.400479 -6.504855 + 1.100000 0.342878 -5.658689 + 1.200000 0.291832 -4.885777 + 1.300000 0.247136 -4.189492 + 1.400000 0.208376 -3.570624 + 1.500000 0.175031 -3.027294 + 1.600000 0.146534 -2.555449 + 1.700000 0.122319 -2.149318 + 1.800000 0.101849 -1.802292 + 1.900000 0.084626 -1.507402 + 2.000000 0.070198 -1.257874 + 2.100000 0.058161 -1.047502 + 2.200000 0.048157 -0.870601 + 2.300000 0.039869 -0.722299 + 2.400000 0.033023 -0.598270 + 2.500000 0.027378 -0.494839 + 2.600000 0.022730 -0.408851 + 2.700000 0.018905 -0.337557 + 2.800000 0.015755 -0.278617 + 2.900000 0.013159 -0.230018 + 3.000000 0.011014 -0.189990 + 3.100000 0.009237 -0.157119 + 3.200000 0.007761 -0.130070 + 3.300000 0.006530 -0.107866 + 3.400000 0.005501 -0.089607 + 3.500000 0.004636 -0.074559 + 3.600000 0.003908 -0.062124 + 3.700000 0.003292 -0.051838 + 3.800000 0.002771 -0.043321 + 3.900000 0.002330 -0.036218 + 4.000000 0.001954 -0.030286 + 4.100000 0.001636 -0.025334 + 4.200000 0.001365 -0.021170 + 4.300000 0.001135 -0.017687 + 4.400000 0.000940 -0.014721 + 4.500000 0.000775 -0.012245 + 4.600000 0.000635 -0.010150 + 4.700000 0.000518 -0.008408 + 4.800000 0.000419 -0.006912 + 4.900000 0.000337 -0.005796 + 5.000000 0.000268 -0.004735 + 5.100000 0.000211 -0.003837 + H U sss + 49 + 0.100000 -0.141569 6.770193 + 0.200000 -0.133044 6.963857 + 0.300000 -0.118215 7.224704 + 0.400000 -0.096332 7.381878 + 0.500000 -0.066964 7.249521 + 0.600000 -0.030586 6.716260 + 0.700000 0.011196 5.802556 + 0.800000 0.055917 4.635541 + 0.900000 0.100798 3.372879 + 1.000000 0.143256 2.144992 + 1.100000 0.181232 1.035284 + 1.200000 0.213306 0.085280 + 1.300000 0.238701 -0.692639 + 1.400000 0.257190 -1.303589 + 1.500000 0.268990 -1.762264 + 1.600000 0.274634 -2.087712 + 1.700000 0.274855 -2.300451 + 1.800000 0.270489 -2.420344 + 1.900000 0.262393 -2.465651 + 2.000000 0.251395 -2.452481 + 2.100000 0.238254 -2.394575 + 2.200000 0.223640 -2.303553 + 2.300000 0.208131 -2.188938 + 2.400000 0.192208 -2.058568 + 2.500000 0.176264 -1.918702 + 2.600000 0.160610 -1.774346 + 2.700000 0.145486 -1.629472 + 2.800000 0.131069 -1.487021 + 2.900000 0.117485 -1.349331 + 3.000000 0.104812 -1.217955 + 3.100000 0.093095 -1.094061 + 3.200000 0.082348 -0.978331 + 3.300000 0.072561 -0.871145 + 3.400000 0.063705 -0.772613 + 3.500000 0.055742 -0.682625 + 3.600000 0.048618 -0.600991 + 3.700000 0.042279 -0.527329 + 3.800000 0.036664 -0.461206 + 3.900000 0.031711 -0.402184 + 4.000000 0.027359 -0.349694 + 4.100000 0.023551 -0.303271 + 4.200000 0.020228 -0.262427 + 4.300000 0.017339 -0.226644 + 4.400000 0.014834 -0.195541 + 4.500000 0.012667 -0.168711 + 4.600000 0.010798 -0.145826 + 4.700000 0.009190 -0.126615 + 4.800000 0.007809 -0.110778 + 4.900000 0.006625 -0.097716 + H U sds + 49 + 0.100000 -0.008113 0.100165 + 0.200000 -0.031995 0.424334 + 0.300000 -0.070225 1.021624 + 0.400000 -0.120280 1.901260 + 0.500000 -0.178432 2.983728 + 0.600000 -0.240000 4.116919 + 0.700000 -0.300040 5.138870 + 0.800000 -0.354161 5.940191 + 0.900000 -0.399089 6.482432 + 1.000000 -0.432859 6.778601 + 1.100000 -0.454733 6.866221 + 1.200000 -0.464976 6.789431 + 1.300000 -0.464600 6.589673 + 1.400000 -0.455103 6.302184 + 1.500000 -0.438230 5.955293 + 1.600000 -0.415774 5.571286 + 1.700000 -0.389437 5.167279 + 1.800000 -0.360733 4.756360 + 1.900000 -0.330937 4.348407 + 2.000000 -0.301072 3.950848 + 2.100000 -0.271924 3.569181 + 2.200000 -0.244060 3.207379 + 2.300000 -0.217863 2.868080 + 2.400000 -0.193567 2.553054 + 2.500000 -0.171282 2.263062 + 2.600000 -0.151031 1.998268 + 2.700000 -0.132766 1.758264 + 2.800000 -0.116397 1.542096 + 2.900000 -0.101800 1.348624 + 3.000000 -0.088837 1.176348 + 3.100000 -0.077362 1.023692 + 3.200000 -0.067231 0.888996 + 3.300000 -0.058305 0.770572 + 3.400000 -0.050453 0.666761 + 3.500000 -0.043558 0.575983 + 3.600000 -0.037511 0.496771 + 3.700000 -0.032215 0.427736 + 3.800000 -0.027586 0.367707 + 3.900000 -0.023547 0.315489 + 4.000000 -0.020030 0.270182 + 4.100000 -0.016976 0.230834 + 4.200000 -0.014331 0.196738 + 4.300000 -0.012048 0.167241 + 4.400000 -0.010083 0.141744 + 4.500000 -0.008400 0.119785 + 4.600000 -0.006964 0.100927 + 4.700000 -0.005744 0.084927 + 4.800000 -0.004711 0.071484 + 4.900000 -0.003843 0.060355 + H U sfs + 49 + 0.100000 -0.001895 0.224902 + 0.200000 -0.013519 1.639295 + 0.300000 -0.038176 4.378693 + 0.400000 -0.072176 7.207535 + 0.500000 -0.109097 8.968192 + 0.600000 -0.143707 9.490597 + 0.700000 -0.172979 9.170401 + 0.800000 -0.195415 8.422659 + 0.900000 -0.210409 7.522261 + 1.000000 -0.218070 6.620203 + 1.100000 -0.219138 5.783562 + 1.200000 -0.214784 5.032474 + 1.300000 -0.206330 4.367482 + 1.400000 -0.195031 3.783716 + 1.500000 -0.181954 3.275434 + 1.600000 -0.167943 2.835916 + 1.700000 -0.153632 2.457542 + 1.800000 -0.139481 2.132148 + 1.900000 -0.125807 1.852088 + 2.000000 -0.112819 1.610533 + 2.100000 -0.100647 1.401631 + 2.200000 -0.089362 1.220376 + 2.300000 -0.078995 1.062686 + 2.400000 -0.069548 0.925051 + 2.500000 -0.061002 0.804668 + 2.600000 -0.053321 0.699142 + 2.700000 -0.046459 0.606569 + 2.800000 -0.040359 0.525370 + 2.900000 -0.034963 0.454240 + 3.000000 -0.030206 0.392007 + 3.100000 -0.026027 0.337639 + 3.200000 -0.022363 0.290291 + 3.300000 -0.019157 0.249093 + 3.400000 -0.016356 0.213337 + 3.500000 -0.013910 0.182343 + 3.600000 -0.011776 0.155513 + 3.700000 -0.009917 0.132329 + 3.800000 -0.008299 0.112247 + 3.900000 -0.006894 0.094913 + 4.000000 -0.005677 0.079920 + 4.100000 -0.004626 0.066940 + 4.200000 -0.003721 0.055674 + 4.300000 -0.002948 0.045906 + 4.400000 -0.002290 0.037361 + 4.500000 -0.001734 0.029905 + 4.600000 -0.001269 0.023293 + 4.700000 -0.000883 0.017442 + 4.800000 -0.000567 0.012300 + 4.900000 -0.000312 0.007973 diff --git a/parameters/latte/TBparam/electrons.dat b/parameters/latte/TBparam/electrons.dat new file mode 100644 index 00000000..9946312c --- /dev/null +++ b/parameters/latte/TBparam/electrons.dat @@ -0,0 +1,7 @@ +Noelem= 5 +Element basis Numel Es Ep Ed Ef Mass HubbardU Wss Wpp Wdd Wff +N sp 5.000000 -18.556500 -7.062500 0.000000 0.000000 14.006700 17.372900 0.000000 -0.693400 0.000000 0.000000 +O sp 6.000000 -23.937700 -9.003500 0.000000 0.000000 15.999400 11.876141 0.000000 -0.7576500 0.000000 0.000000 +H s 1.000000 -6.483500 0.000000 0.000000 0.000000 1.007900 12.054683 -2.23400 0.000000 0.000000 0.000000 +C sp 4.000000 -13.719900 -5.254100 0.000000 0.000000 12.010000 14.240811 0.000000 -0.6181000 0.000000 0.000000 +W sd 6.0 -4.05 0.0 -2.12 0.0 183.84 7.048 0.0 0.0 0.0 0.0 diff --git a/parameters/latte/TBparam/electrons.dat.MgO b/parameters/latte/TBparam/electrons.dat.MgO new file mode 100644 index 00000000..8b525d52 --- /dev/null +++ b/parameters/latte/TBparam/electrons.dat.MgO @@ -0,0 +1,4 @@ +Noelem= 2 +Element basis Numel Es Ep Ed Ef Mass HubbardU Wss Wpp Wdd Wff +Mg sp 2.000000 -4.644200 -1.266700 0.000000 0.000000 24.305000 7.640000 0.000000 0.000000 0.000000 0.000000 +O sp 6.000000 -23.937700 -9.003500 0.000000 0.000000 15.999400 12.150000 0.000000 -0.757700 0.000000 0.000000 diff --git a/parameters/latte/TBparam/electrons.dat.UO2 b/parameters/latte/TBparam/electrons.dat.UO2 new file mode 100644 index 00000000..4e535dd8 --- /dev/null +++ b/parameters/latte/TBparam/electrons.dat.UO2 @@ -0,0 +1,15 @@ +Noelem= 2 +Element basis Numel Es Ep Ed Ef Mass HubbardU Wss Wpp Wdd Wff +U sdf 6.0 -4.08 0.0 0.816 -0.586 238.0 9.0 0.0 0.0 0.0 0.0 +O sp 6.0 -23.77 -8.85 0.0 0.0 16.0 12.2 0.0 0.0 0.0 0.0 + + +W spd 6.0 -4.52 0.53 -2.91 0.0 183.84 7.048 0.0 0.0 0.0 0.0 +Mo sd 6.0 -3.29 0.0 -1.98 0.0 95.95 6.48 0.0 0.0 0.0 0.0 +S sp 6.0 -14.00 -3.97 0.0 0.0 32.06 8.28 0.0 -0.4278 0.0 0.0 + + +N sp 5.000000 -18.543798 -7.862407 0.000000 0.000000 14.006700 17.053958 0.000000 -0.6934 0.000000 0.000000 +H s 1.000000 -6.237968 0.000000 0.000000 0.000000 1.007900 13.684855 -2.23400 0.000000 0.000000 0.000000 +C sp 4.000000 -13.736556 -4.748938 0.000000 0.000000 12.010000 10.522540 0.000000 -0.618100 0.000000 0.000000 +O sp 6.000000 -23.833752 -9.645001 0.000000 0.000000 15.999400 14.443874 0.000000 -0.757650 0.000000 0.000000 diff --git a/parameters/latte/TBparam/ppots.dftb b/parameters/latte/TBparam/ppots.dftb new file mode 100644 index 00000000..99d01500 --- /dev/null +++ b/parameters/latte/TBparam/ppots.dftb @@ -0,0 +1,108 @@ + 1 +W W + 9 + 0.90481322 39.49413137 + 1.59811663 24.02787755 + 2.04735575 7.40466958 + 2.54070604 0.64482480 + 3.08021908 -0.31217725 + 3.18906100 -0.30168166 + 3.66349505 -0.14402738 + 4.45966008 -0.01473094 + 5.17238300 0.00000000 + + 9 + 0.87151336 37.95058968 + 1.62298466 24.89513361 + 2.08037740 7.65231187 + 2.51492328 0.88389693 + 2.97389107 -0.40398961 + 3.39637068 -0.36853895 + 3.72279239 -0.13866961 + 4.40583287 -0.01343095 + 5.30849415 0.00000000 + + + 10 + 0.89540323 86.03688813 + 1.72504517 23.61969641 + 2.04360832 9.33505212 + 2.42181678 2.29493261 + 2.73753529 0.59764115 + 3.51039358 -0.04009676 + 4.36113031 -0.19290903 + 5.00090601 -0.20369024 + 6.01409162 -0.06128725 + 6.37766532 0.00000000 + + 10 + 1.05116925 100.0 + 1.69657948 21.92392905 + 2.05316096 9.08898885 + 2.40820340 2.42561631 + 2.73703182 0.60248220 + 3.45730327 -0.04227791 + 4.41436208 -0.20942571 + 4.94599363 -0.20288118 + 6.02939429 -0.06681373 + 6.36595068 0.00000000 + + + 14 + 0.83201539 153.83932221 + 1.54643678 38.30617961 + 2.04182072 7.66270499 + 2.50488041 0.98900093 + 2.94088123 -0.00474403 + 3.51054401 -0.07248393 + 3.74895133 -0.04659513 + 4.70111091 -0.04527290 + 4.97287125 -0.05142556 + 5.22956881 -0.04889401 + 5.92499530 -0.04254946 + 6.44851147 -0.02732796 + 6.88903047 -0.01034371 + 7.57322088 0.00000000 + + +1 +W W + 10 + 0.90707749 41.41730935 + 1.70075081 21.50882168 + 2.05156986 8.16855416 + 2.41350302 2.30142131 + 2.79279596 0.72455522 + 4.00847248 -0.03826262 + 4.26283719 -0.18480640 + 4.71475303 -0.18596351 + 5.82084898 -0.08240228 + 6.06315342 0.00000000 + + + 10 + 0.92038934 29.35962838 + 1.71245092 20.32026205 + 2.05811471 8.32571729 + 2.41763223 2.26862299 + 2.75155102 0.61209815 + 3.36215321 -0.04570458 + 4.39288108 -0.23242134 + 4.86381525 -0.20264521 + 5.82685650 -0.06814883 + 6.65234145 0.00000000 + +12 + + 1.0000000000000000 30.715694928332759 + 1.5000000000000000 15.828593400316056 + 2.0000000000000000 6.9707459987102096 + 2.5000000000000000 2.4687602496965586 + 3.0000000000000000 0.65069016871250862 + 3.5000000000000000 -4.7877838125490957E-002 + 4.0000000000000000 -0.35070784900122520 + 4.5000000000000000 -0.38578064885048291 + 5.0000000000000000 -0.26587698680174976 + 5.5000000000000000 -0.10377761198351210 + 6.0000000000000000 -9.8313589927874860E-003 + 6.5000000000000000 0.0000000000000000 diff --git a/parameters/latte/TBparam/ppots.dftb.MgO b/parameters/latte/TBparam/ppots.dftb.MgO new file mode 100644 index 00000000..27fdf16d --- /dev/null +++ b/parameters/latte/TBparam/ppots.dftb.MgO @@ -0,0 +1,512 @@ + 3 + Mg O + 501 + 1.0000000000000000 17.081622478678916 + 1.0109999999999999 16.787936559529367 + 1.0220000000000000 16.498460873730025 + 1.0329999999999999 16.213160193693156 + 1.0440000000000000 15.931999291830977 + 1.0549999999999999 15.654942940556092 + 1.0660000000000001 15.381955912280587 + 1.0770000000000000 15.113002979416928 + 1.0880000000000001 14.848048914377411 + 1.0990000000000000 14.587058489574472 + 1.1100000000000001 14.329996477420243 + 1.1210000000000000 14.076827650327267 + 1.1320000000000001 13.827516780707757 + 1.1430000000000000 13.582028640974112 + 1.1539999999999999 13.340328003538611 + 1.1650000000000000 13.102379640813663 + 1.1759999999999999 12.868148325211571 + 1.1870000000000001 12.637598829144675 + 1.1980000000000000 12.410695925025248 + 1.2090000000000001 12.187404385265783 + 1.2200000000000000 11.967688982278418 + 1.2310000000000001 11.751514488475603 + 1.2420000000000000 11.538845676269686 + 1.2530000000000001 11.329647318072970 + 1.2640000000000000 11.123884186297811 + 1.2749999999999999 10.921521053356560 + 1.2860000000000000 10.722522691661460 + 1.2969999999999999 10.526853873625019 + 1.3080000000000001 10.334479371659430 + 1.3190000000000000 10.145363958177080 + 1.3300000000000001 9.9594724055902546 + 1.3410000000000000 9.7767694863113874 + 1.3519999999999999 9.5972199727527538 + 1.3630000000000000 9.4207886373266749 + 1.3740000000000001 9.2474402524455606 + 1.3850000000000000 9.0771395905216608 + 1.3959999999999999 8.9098514239673730 + 1.4070000000000000 8.7455405251950076 + 1.4179999999999999 8.5841716666168910 + 1.4290000000000000 8.4257096206454083 + 1.4399999999999999 8.2701191596928432 + 1.4510000000000001 8.1173650561715842 + 1.4620000000000000 7.9674120824939232 + 1.4729999999999999 7.8202250110721820 + 1.4840000000000000 7.6757686143187609 + 1.4950000000000001 7.5340076646459382 + 1.5060000000000000 7.3949069344661007 + 1.5169999999999999 7.2584311961915846 + 1.5280000000000000 7.1245452222346657 + 1.5390000000000001 6.9932137850077174 + 1.5500000000000000 6.8644016569231034 + 1.5609999999999999 6.7380736103931245 + 1.5720000000000001 6.6141944178301095 + 1.5830000000000000 6.4927288516464516 + 1.5939999999999999 6.3736416842544283 + 1.6050000000000000 6.2568976880664042 + 1.6160000000000001 6.1424616354947164 + 1.6270000000000000 6.0302982989517151 + 1.6379999999999999 5.9203724508496816 + 1.6490000000000000 5.8126488636009990 + 1.6600000000000001 5.7070923096179982 + 1.6710000000000000 5.6036675613130189 + 1.6819999999999999 5.5023393910983902 + 1.6930000000000001 5.4030725713864474 + 1.7040000000000000 5.3058318745895496 + 1.7149999999999999 5.2105820731199950 + 1.7260000000000000 5.1172879393901551 + 1.7370000000000001 5.0259142458123316 + 1.7480000000000000 4.9364257647989067 + 1.7589999999999999 4.8487872687621953 + 1.7700000000000000 4.7629635301145221 + 1.7810000000000001 4.6789193212682383 + 1.7920000000000000 4.5966194146356560 + 1.8029999999999999 4.5160285826291640 + 1.8140000000000001 4.4371115976610565 + 1.8250000000000000 4.3598332321436812 + 1.8359999999999999 4.2841582584894011 + 1.8470000000000000 4.2100514491104626 + 1.8580000000000001 4.1374775764193341 + 1.8690000000000000 4.0664014128282586 + 1.8799999999999999 3.9967877307496376 + 1.8910000000000000 3.9286013025957041 + 1.9020000000000001 3.8618069007789200 + 1.9130000000000000 3.7963692977115246 + 1.9239999999999999 3.7322532658059298 + 1.9350000000000001 3.6694235774744319 + 1.9460000000000000 3.6078450051293629 + 1.9569999999999999 3.5474823211830757 + 1.9680000000000000 3.4883002980478954 + 1.9790000000000001 3.4302637081361844 + 1.9900000000000000 3.3733373238602642 + 2.0009999999999999 3.3174859176324372 + 2.0120000000000000 3.2626742618651043 + 2.0229999999999997 3.2088671289705539 + 2.0339999999999998 3.1560292913611319 + 2.0449999999999999 3.1041255214492054 + 2.0560000000000000 3.0531205916470592 + 2.0670000000000002 3.0029792743670898 + 2.0780000000000003 2.9536663420216049 + 2.0890000000000000 2.9051465670229200 + 2.1000000000000001 2.8573847217834101 + 2.1109999999999998 2.8103473658907170 + 2.1219999999999999 2.7640082076338204 + 2.1330000000000000 2.7183427424770277 + 2.1440000000000001 2.6733264658846410 + 2.1550000000000002 2.6289348733209343 + 2.1659999999999999 2.5851434602502708 + 2.1770000000000000 2.5419277221369008 + 2.1879999999999997 2.4992631544451709 + 2.1989999999999998 2.4571252526393370 + 2.2100000000000000 2.4154895121837394 + 2.2210000000000001 2.3743314285426500 + 2.2320000000000002 2.3336264971803979 + 2.2430000000000003 2.2933502135612840 + 2.2540000000000000 2.2534780731495831 + 2.2649999999999997 2.2139855714096490 + 2.2759999999999998 2.1748482038057482 + 2.2869999999999999 2.1360414658021778 + 2.2980000000000000 2.0975408528632693 + 2.3090000000000002 2.0593218604533083 + 2.3200000000000003 2.0213599840365903 + 2.3310000000000000 1.9836307190774316 + 2.3420000000000001 1.9461095610401289 + 2.3529999999999998 1.9087720053890165 + 2.3639999999999999 1.8715935475883387 + 2.3750000000000000 1.8345496831024264 + 2.3860000000000001 1.7976159073955951 + 2.3970000000000002 1.7607677159321393 + 2.4079999999999999 1.7239825508333195 + 2.4190000000000000 1.6872561459520277 + 2.4299999999999997 1.6505942573828292 + 2.4409999999999998 1.6140027438760134 + 2.4520000000000000 1.5774874641818983 + 2.4630000000000001 1.5410542770507796 + 2.4740000000000002 1.5047090412329525 + 2.4850000000000003 1.4684576154787077 + 2.4960000000000000 1.4323058585383623 + 2.5069999999999997 1.3962596291621876 + 2.5179999999999998 1.3603247861005028 + 2.5289999999999999 1.3245071881036097 + 2.5400000000000000 1.2888126939218019 + 2.5510000000000002 1.2532471623053609 + 2.5620000000000003 1.2178164520046006 + 2.5730000000000000 1.1825264217698270 + 2.5840000000000001 1.1473829303513390 + 2.5949999999999998 1.1123918364994250 + 2.6059999999999999 1.0775589989643868 + 2.6170000000000000 1.0428902764965227 + 2.6280000000000001 1.0083915278461364 + 2.6390000000000002 0.97406861176351289 + 2.6499999999999999 0.93992738699896416 + 2.6610000000000000 0.90597371230279278 + 2.6719999999999997 0.87221344642530263 + 2.6829999999999998 0.83865244811675588 + 2.6940000000000000 0.80529657612748162 + 2.7050000000000001 0.77215168920777821 + 2.7160000000000002 0.73922364610794500 + 2.7270000000000003 0.70651830557827811 + 2.7380000000000000 0.67404152636906944 + 2.7490000000000001 0.64179916723062025 + 2.7599999999999998 0.60979708691323431 + 2.7709999999999999 0.57804114416721153 + 2.7820000000000000 0.54653719774284271 + 2.7930000000000001 0.51529110639043407 + 2.8040000000000003 0.48430872886028087 + 2.8149999999999999 0.45359592390268400 + 2.8260000000000001 0.42315855026793975 + 2.8369999999999997 0.39300246670635108 + 2.8479999999999999 0.36313353196820891 + 2.8590000000000000 0.33355760480382129 + 2.8700000000000001 0.30428054396348642 + 2.8810000000000002 0.27530820819749502 + 2.8919999999999999 0.24664645625615242 + 2.9030000000000000 0.21830124155889266 + 2.9139999999999997 0.19028776003790038 + 2.9249999999999998 0.16263807626301280 + 2.9359999999999999 0.13538605001139953 + 2.9470000000000001 0.10856554106021392 + 2.9580000000000002 8.2210409186643088E-002 + 2.9690000000000003 5.6354514167833110E-002 + 2.9800000000000000 3.1031715780969582E-002 + 2.9910000000000001 6.2758738032134371E-003 + 3.0019999999999998 -1.7879202056505748E-002 + 3.0129999999999999 -4.1413251803954228E-002 + 3.0240000000000000 -6.4337833804954808E-002 + 3.0350000000000001 -8.6669068892816781E-002 + 3.0459999999999998 -0.10842307790080094 + 3.0569999999999999 -0.12961598166220287 + 3.0680000000000001 -0.15026390101030859 + 3.0790000000000002 -0.17038295677839230 + 3.0899999999999999 -0.18998926979974864 + 3.1010000000000000 -0.20909896090765751 + 3.1120000000000001 -0.22772815093539833 + 3.1230000000000002 -0.24589296071626088 + 3.1339999999999999 -0.26360951108353847 + 3.1450000000000000 -0.28089392287049608 + 3.1560000000000001 -0.29776231691043220 + 3.1669999999999998 -0.31423081403661540 + 3.1779999999999999 -0.33031553508235506 + 3.1890000000000001 -0.34603260088091198 + 3.2000000000000002 -0.36139813226557194 + 3.2109999999999999 -0.37642825006963898 + 3.2220000000000000 -0.39113907512637697 + 3.2330000000000001 -0.40554672826907728 + 3.2440000000000002 -0.41966733033102682 + 3.2549999999999999 -0.43351677106381536 + 3.2660000000000000 -0.44710429246084477 + 3.2770000000000001 -0.46043165131728797 + 3.2879999999999998 -0.47350020511914637 + 3.2989999999999999 -0.48631131135242428 + 3.3100000000000001 -0.49886632750311000 + 3.3210000000000002 -0.51116661105721706 + 3.3319999999999999 -0.52321351950074124 + 3.3430000000000000 -0.53500841031968027 + 3.3540000000000001 -0.54655264100003798 + 3.3650000000000002 -0.55784756902781896 + 3.3759999999999999 -0.56889455188901550 + 3.3870000000000000 -0.57969494706963398 + 3.3980000000000001 -0.59025011205567379 + 3.4089999999999998 -0.60056140433313265 + 3.4199999999999999 -0.61063018138801461 + 3.4310000000000000 -0.62045780070632173 + 3.4420000000000002 -0.63004561977404838 + 3.4529999999999998 -0.63939499607720274 + 3.4640000000000000 -0.64850728710177952 + 3.4750000000000001 -0.65738385033378033 + 3.4860000000000002 -0.66602604325920567 + 3.4969999999999999 -0.67443522336406603 + 3.5080000000000000 -0.68261274813434714 + 3.5190000000000001 -0.69055997505605637 + 3.5299999999999998 -0.69827826161519579 + 3.5409999999999999 -0.70576896529776367 + 3.5520000000000000 -0.71303344358976284 + 3.5630000000000002 -0.72007305397718779 + 3.5739999999999998 -0.72688915394604825 + 3.5850000000000000 -0.73348310098233904 + 3.5960000000000001 -0.73985625257206011 + 3.6070000000000002 -0.74600996620121907 + 3.6179999999999999 -0.75194559935580596 + 3.6290000000000000 -0.75766450952183118 + 3.6400000000000001 -0.76316805418529288 + 3.6509999999999998 -0.76845759083218412 + 3.6619999999999999 -0.77353447694851574 + 3.6730000000000000 -0.77840007002028266 + 3.6840000000000002 -0.78305572753348873 + 3.6949999999999998 -0.78750280697413222 + 3.7060000000000000 -0.79174266582821262 + 3.7170000000000001 -0.79577666158173599 + 3.7280000000000002 -0.79960615172069527 + 3.7389999999999999 -0.80323249373109840 + 3.7500000000000000 -0.80665704509894165 + 3.7610000000000001 -0.80988116331022697 + 3.7719999999999998 -0.81290620585095397 + 3.7829999999999999 -0.81573353020712713 + 3.7940000000000000 -0.81836449386473875 + 3.8050000000000002 -0.82080045430979820 + 3.8159999999999998 -0.82304276902830453 + 3.8270000000000000 -0.82509279550625492 + 3.8380000000000001 -0.82695189122965118 + 3.8490000000000002 -0.82862141368449460 + 3.8599999999999999 -0.83010272035678601 + 3.8710000000000000 -0.83139716873252634 + 3.8820000000000001 -0.83250611629771309 + 3.8929999999999998 -0.83343092053835388 + 3.9039999999999999 -0.83417293894043998 + 3.9150000000000000 -0.83473352898998232 + 3.9260000000000002 -0.83511404817297175 + 3.9369999999999998 -0.83531585397541730 + 3.9480000000000000 -0.83534030388331182 + 3.9590000000000001 -0.83518875538266146 + 3.9700000000000002 -0.83486256595946529 + 3.9809999999999999 -0.83436309309972312 + 3.9920000000000000 -0.83369169428943701 + 4.0030000000000001 -0.83284972701460691 + 4.0139999999999993 -0.83183854876123242 + 4.0250000000000004 -0.83065951701531593 + 4.0359999999999996 -0.82931398926285782 + 4.0470000000000006 -0.82780332298985837 + 4.0579999999999998 -0.82612887568231685 + 4.0690000000000000 -0.82429200482623532 + 4.0800000000000001 -0.82229406790761617 + 4.0910000000000002 -0.82013642241245588 + 4.1020000000000003 -0.81782042582675951 + 4.1129999999999995 -0.81534743563652390 + 4.1240000000000006 -0.81271880932775176 + 4.1349999999999998 -0.80993590438644358 + 4.1459999999999999 -0.80700007829859965 + 4.1570000000000000 -0.80391268855021969 + 4.1680000000000001 -0.80067509262730630 + 4.1790000000000003 -0.79728864801585853 + 4.1899999999999995 -0.79375471220187865 + 4.2010000000000005 -0.79007464267136585 + 4.2119999999999997 -0.78624979691032093 + 4.2229999999999999 -0.78228153240474485 + 4.2340000000000000 -0.77817120664063899 + 4.2450000000000001 -0.77392017710400240 + 4.2560000000000002 -0.76952986062813733 + 4.2669999999999995 -0.76500278653350806 + 4.2780000000000005 -0.76034247216325035 + 4.2889999999999997 -0.75555246920500463 + 4.2999999999999998 -0.75063632934641511 + 4.3109999999999999 -0.74559760427512256 + 4.3220000000000001 -0.74043984567876842 + 4.3330000000000002 -0.73516660524499433 + 4.3439999999999994 -0.72978143466144252 + 4.3550000000000004 -0.72428788561575352 + 4.3659999999999997 -0.71868950979557100 + 4.3769999999999998 -0.71298985888853483 + 4.3879999999999999 -0.70719248458228812 + 4.3990000000000000 -0.70130093856447051 + 4.4100000000000001 -0.69531877252272611 + 4.4209999999999994 -0.68924953814469558 + 4.4320000000000004 -0.68309678711801902 + 4.4429999999999996 -0.67686407113034130 + 4.4540000000000006 -0.67055494186930131 + 4.4649999999999999 -0.66417295102254248 + 4.4760000000000000 -0.65772165027770590 + 4.4870000000000001 -0.65120459132243314 + 4.4980000000000002 -0.64462532584436594 + 4.5090000000000003 -0.63798740553114641 + 4.5199999999999996 -0.63129438207041610 + 4.5310000000000006 -0.62454980714981545 + 4.5419999999999998 -0.61775723245698844 + 4.5529999999999999 -0.61092020967957472 + 4.5640000000000001 -0.60404229050521696 + 4.5750000000000002 -0.59712702662155670 + 4.5860000000000003 -0.59017796971623560 + 4.5969999999999995 -0.58319867147689586 + 4.6080000000000005 -0.57619268359117748 + 4.6189999999999998 -0.56916355774672456 + 4.6299999999999999 -0.56211484563117742 + 4.6410000000000000 -0.55505009893217738 + 4.6520000000000001 -0.54797286933736689 + 4.6630000000000003 -0.54088670853438725 + 4.6739999999999995 -0.53379516821088135 + 4.6850000000000005 -0.52670180005448797 + 4.6959999999999997 -0.51961015575285241 + 4.7069999999999999 -0.51252378699361367 + 4.7180000000000000 -0.50544624546441486 + 4.7290000000000001 -0.49838108285289701 + 4.7400000000000002 -0.49133185084670206 + 4.7509999999999994 -0.48430210055451955 + 4.7620000000000005 -0.47729438497079257 + 4.7729999999999997 -0.47030821122045530 + 4.7839999999999998 -0.46334250747585970 + 4.7949999999999999 -0.45639620190936053 + 4.8060000000000000 -0.44946822269331127 + 4.8170000000000002 -0.44255749800006616 + 4.8279999999999994 -0.43566295600197963 + 4.8390000000000004 -0.42878352487140325 + 4.8499999999999996 -0.42191813278069384 + 4.8610000000000007 -0.41506570790220276 + 4.8719999999999999 -0.40822517840828604 + 4.8830000000000000 -0.40139547247129609 + 4.8940000000000001 -0.39457551826358711 + 4.9049999999999994 -0.38776424395751380 + 4.9160000000000004 -0.38096057772542802 + 4.9269999999999996 -0.37416344773968618 + 4.9380000000000006 -0.36737178217263966 + 4.9489999999999998 -0.36058450919664475 + 4.9600000000000000 -0.35380055698405344 + 4.9710000000000001 -0.34701885370722041 + 4.9820000000000002 -0.34023832753849959 + 4.9930000000000003 -0.33345790665024455 + 5.0039999999999996 -0.32667659038854957 + 5.0149999999999997 -0.31989684670724028 + 5.0259999999999998 -0.31312610348014541 + 5.0369999999999999 -0.30637217002785611 + 5.0480000000000000 -0.29964285567096316 + 5.0590000000000002 -0.29294596973005776 + 5.0700000000000003 -0.28628932152573078 + 5.0810000000000004 -0.27968072037857328 + 5.0919999999999996 -0.27312797560917668 + 5.1029999999999998 -0.26663889653813100 + 5.1139999999999999 -0.26022129248602771 + 5.1250000000000000 -0.25388297277345767 + 5.1360000000000001 -0.24763174672101221 + 5.1470000000000002 -0.24147542364928198 + 5.1580000000000004 -0.23542181287885824 + 5.1689999999999996 -0.22947872373033215 + 5.1799999999999997 -0.22365396552429401 + 5.1909999999999998 -0.21795534758133514 + 5.2020000000000000 -0.21239067922204652 + 5.2130000000000001 -0.20696776976701922 + 5.2240000000000002 -0.20169442853684427 + 5.2350000000000003 -0.19657846485211250 + 5.2460000000000004 -0.19162768803341504 + 5.2569999999999997 -0.18684922917465704 + 5.2679999999999998 -0.18224140044548526 + 5.2789999999999999 -0.17779634670057934 + 5.2900000000000000 -0.17350608624503283 + 5.3010000000000002 -0.16936263738393917 + 5.3120000000000003 -0.16535801842239189 + 5.3230000000000004 -0.16148424766548453 + 5.3339999999999996 -0.15773334341831083 + 5.3449999999999998 -0.15409732398596376 + 5.3559999999999999 -0.15056820767353707 + 5.3670000000000000 -0.14713801278612429 + 5.3780000000000001 -0.14379875762881889 + 5.3890000000000002 -0.14054246050671446 + 5.4000000000000004 -0.13736113972490438 + 5.4109999999999996 -0.13424681358848251 + 5.4219999999999997 -0.13119150040254179 + 5.4329999999999998 -0.12818721847217598 + 5.4440000000000000 -0.12522598610247862 + 5.4550000000000001 -0.12229982159854320 + 5.4660000000000002 -0.11940074326546318 + 5.4770000000000003 -0.11652076940833213 + 5.4880000000000004 -0.11365191833224352 + 5.4989999999999997 -0.11078620834229105 + 5.5099999999999998 -0.10791704308756675 + 5.5209999999999999 -0.10504511451194143 + 5.5320000000000000 -0.10217350289233981 + 5.5430000000000001 -9.9305289891030657E-002 + 5.5540000000000003 -9.6443557170282690E-002 + 5.5650000000000004 -9.3591386392364681E-002 + 5.5759999999999996 -9.0751859219545580E-002 + 5.5869999999999997 -8.7928057314093658E-002 + 5.5979999999999999 -8.5123062338277877E-002 + 5.6090000000000000 -8.2339955954366995E-002 + 5.6200000000000001 -7.9581819824629751E-002 + 5.6310000000000002 -7.6851735611334876E-002 + 5.6420000000000003 -7.4152784976751110E-002 + 5.6529999999999996 -7.1488049583147389E-002 + 5.6639999999999997 -6.8860611092792054E-002 + 5.6749999999999998 -6.6273551167954026E-002 + 5.6859999999999999 -6.3729951470902060E-002 + 5.6970000000000001 -6.1232893663904907E-002 + 5.7080000000000002 -5.8785459409231286E-002 + 5.7190000000000003 -5.6390730369149954E-002 + 5.7300000000000004 -5.4051788205929610E-002 + 5.7409999999999997 -5.1771714581839226E-002 + 5.7519999999999998 -4.9553587124841925E-002 + 5.7629999999999999 -4.7399391679055644E-002 + 5.7740000000000000 -4.5308550287641018E-002 + 5.7850000000000001 -4.3280117367696970E-002 + 5.7960000000000003 -4.1313147336322437E-002 + 5.8070000000000004 -3.9406694610616341E-002 + 5.8179999999999996 -3.7559813607677767E-002 + 5.8289999999999997 -3.5771558744605345E-002 + 5.8399999999999999 -3.4040984438498165E-002 + 5.8510000000000000 -3.2367145106455136E-002 + 5.8620000000000001 -3.0749095165575214E-002 + 5.8730000000000002 -2.9185889032957310E-002 + 5.8840000000000003 -2.7676581125700369E-002 + 5.8949999999999996 -2.6220225860903425E-002 + 5.9059999999999997 -2.4815877655665182E-002 + 5.9169999999999998 -2.3462590927084685E-002 + 5.9279999999999999 -2.2159420092260872E-002 + 5.9390000000000001 -2.0905419568292661E-002 + 5.9500000000000002 -1.9699643772278997E-002 + 5.9610000000000003 -1.8541147121318800E-002 + 5.9720000000000004 -1.7428984032511002E-002 + 5.9829999999999997 -1.6362208922954629E-002 + 5.9939999999999998 -1.5339876209748422E-002 + 6.0049999999999999 -1.4361040309991411E-002 + 6.0160000000000000 -1.3424755640782524E-002 + 6.0270000000000001 -1.2530076619220690E-002 + 6.0380000000000003 -1.1676057662404843E-002 + 6.0490000000000004 -1.0861753187433909E-002 + 6.0599999999999996 -1.0086217611406883E-002 + 6.0709999999999997 -9.3485053514225681E-003 + 6.0819999999999999 -8.6476708245799630E-003 + 6.0930000000000000 -7.9827684479779927E-003 + 6.1040000000000001 -7.3528526387155926E-003 + 6.1150000000000002 -6.7569778138916910E-003 + 6.1260000000000003 -6.1941983906052189E-003 + 6.1369999999999996 -5.6635687859551472E-003 + 6.1479999999999997 -5.1641434170403245E-003 + 6.1589999999999998 -4.6949767009597208E-003 + 6.1699999999999999 -4.2551230548122706E-003 + 6.1810000000000000 -3.8436368956969017E-003 + 6.1920000000000002 -3.4595726407125461E-003 + 6.2030000000000003 -3.1019847069581339E-003 + 6.2140000000000004 -2.7699275115325959E-003 + 6.2249999999999996 -2.4624554715348863E-003 + 6.2359999999999998 -2.1786230040638866E-003 + 6.2469999999999999 -1.9174845262185528E-003 + 6.2580000000000000 -1.6780944550978155E-003 + 6.2690000000000001 -1.4595072078006054E-003 + 6.2800000000000002 -1.2607772014258526E-003 + 6.2910000000000004 -1.0809588530724884E-003 + 6.3019999999999996 -9.1910657983945525E-004 + 6.3129999999999997 -7.7427479882565789E-004 + 6.3239999999999998 -6.4551792713004057E-004 + 6.3350000000000000 -5.3189038185153382E-004 + 6.3460000000000001 -4.3244658008906827E-004 + 6.3570000000000002 -3.4624093894157449E-004 + 6.3680000000000003 -2.7232787550798311E-004 + 6.3789999999999996 -2.0976180688722925E-004 + 6.3899999999999997 -1.5759715017823350E-004 + 6.4009999999999998 -1.1488832247993191E-004 + 6.4119999999999999 -8.0689740891255071E-005 + 6.4230000000000000 -5.4055822511133533E-005 + 6.4340000000000002 -3.4040984438497889E-005 + 6.4450000000000003 -1.9699643772278710E-005 + 6.4560000000000004 -1.0086217611406577E-005 + 6.4669999999999996 -4.2551230548124072E-006 + 6.4779999999999998 -1.2607772014258986E-006 + 6.4889999999999999 -1.5759715017823732E-007 + 6.5000000000000000 0.0000000000000000 + Mg Mg + 2 + 1.0 0.0 + 6.0 0.0 + O O + 2 + 1.0 0.0 + 6.0 0.0 diff --git a/parameters/latte/TBparam/ppots.dftb.UO2 b/parameters/latte/TBparam/ppots.dftb.UO2 new file mode 100644 index 00000000..59ba0a04 --- /dev/null +++ b/parameters/latte/TBparam/ppots.dftb.UO2 @@ -0,0 +1,178 @@ +3 +U O +101 + 1.0000000000000000 53.452052832272599 + 1.0520000000000000 48.423668742582244 + 1.1040000000000001 43.721445018814535 + 1.1560000000000001 39.334296276283553 + 1.2080000000000000 35.251137130303420 + 1.2600000000000000 31.460882196188166 + 1.3120000000000001 27.952446089251964 + 1.3639999999999999 24.714743424808852 + 1.4159999999999999 21.736688818172937 + 1.4680000000000000 19.007196884658306 + 1.5200000000000000 16.515182239579076 + 1.5720000000000001 14.249559498249329 + 1.6240000000000001 12.199243275983154 + 1.6760000000000002 10.353148188094648 + 1.7280000000000000 8.7001888498979163 + 1.7800000000000000 7.2292798767070447 + 1.8320000000000001 5.9293358838361092 + 1.8839999999999999 4.7892714865992376 + 1.9359999999999999 3.7980013003104953 + 1.9880000000000000 2.9444399402839894 + 2.0400000000000000 2.2175020218338095 + 2.0920000000000001 1.6061021602740548 + 2.1440000000000001 1.0991549709188142 + 2.1960000000000002 0.68557506908218180 + 2.2480000000000002 0.35427707007825704 + 2.2999999999999998 9.4175589221130632E-002 + 2.3520000000000003 -0.10581475817510910 + 2.4039999999999999 -0.25677935679635860 + 2.4560000000000000 -0.36980359132853102 + 2.5080000000000000 -0.45596679597127698 + 2.5600000000000001 -0.52381995798172376 + 2.6120000000000001 -0.57548542297431915 + 2.6640000000000001 -0.61207888691334400 + 2.7160000000000002 -0.63471604576307783 + 2.7679999999999998 -0.64451259548780349 + 2.8200000000000003 -0.64258423205180126 + 2.8719999999999999 -0.63004665141935134 + 2.9240000000000004 -0.60801554955473625 + 2.9760000000000000 -0.57760662242223493 + 3.0280000000000000 -0.53993556598613002 + 3.0800000000000001 -0.49611807621070214 + 3.1320000000000001 -0.44726984906023193 + 3.1840000000000002 -0.39450658049900023 + 3.2359999999999998 -0.33894396649128961 + 3.2880000000000003 -0.28169770300137842 + 3.3399999999999999 -0.22388348599354982 + 3.3920000000000003 -0.16661701143208349 + 3.4440000000000000 -0.11101397528126161 + 3.4960000000000004 -5.8190073505363524E-002 + 3.5480000000000000 -9.2610020686722198E-003 + 3.6000000000000001 3.4657543064533058E-002 + 3.6519999999999997 7.2695102245010301E-002 + 3.7040000000000002 0.10496216108368017 + 3.7560000000000002 0.13181444150650151 + 3.8080000000000003 0.15360766543943441 + 3.8599999999999999 0.17069755480843840 + 3.9119999999999999 0.18343983153947352 + 3.9640000000000004 0.19219021755849935 + 4.0160000000000000 0.19730443479147558 + 4.0679999999999996 0.19913820516436204 + 4.1200000000000001 0.19804725060311840 + 4.1719999999999997 0.19438729303370450 + 4.2240000000000002 0.18851405438207983 + 4.2759999999999998 0.18078325657420447 + 4.3280000000000003 0.17155062153603778 + 4.3799999999999999 0.16117187119353987 + 4.4320000000000004 0.15000272747267010 + 4.4840000000000000 0.13839891229938861 + 4.5359999999999996 0.12671614759965491 + 4.5880000000000001 0.11531015529942858 + 4.6400000000000006 0.10450791010072910 + 4.6920000000000002 9.4401608127654982E-002 + 4.7439999999999998 8.4968801575229971E-002 + 4.7960000000000003 7.6186266463431560E-002 + 4.8480000000000008 6.8030778812237541E-002 + 4.9000000000000004 6.0479114641625663E-002 + 4.9520000000000000 5.3508049971573365E-002 + 5.0040000000000004 4.7094360822058187E-002 + 5.0560000000000000 4.1214823213057958E-002 + 5.1080000000000005 3.5846213164550077E-002 + 5.1600000000000001 3.0965306696512353E-002 + 5.2119999999999997 2.6548879828922314E-002 + 5.2640000000000002 2.2573708581757501E-002 + 5.3159999999999998 1.9016568974995669E-002 + 5.3680000000000003 1.5854237028614312E-002 + 5.4199999999999999 1.3063488762591162E-002 + 5.4719999999999995 1.0621100196903764E-002 + 5.5240000000000000 8.5038473515297100E-003 + 5.5760000000000005 6.6885062464466568E-003 + 5.6280000000000001 5.1518529016322447E-003 + 5.6799999999999997 3.8706633370640541E-003 + 5.7320000000000002 2.8217135727196876E-003 + 5.7840000000000007 1.9817796285767830E-003 + 5.8360000000000003 1.3276375246129659E-003 + 5.8879999999999999 8.3606328080583568E-004 + 5.9400000000000004 4.8383291713300426E-004 + 5.9920000000000009 2.4772245357209625E-004 + 6.0440000000000005 1.0450791010072858E-004 + 6.0960000000000001 3.0965306696512431E-005 + 6.1480000000000006 3.8706633370639547E-006 + 6.2000000000000002 0.0000000000000000 + O O + 20 + 0.59999999999999998 29923.073152218909 + 0.70000000000000007 4662.8666204588562 + 0.80000000000000004 849.06541460837946 + 0.90000000000000002 174.94775568214448 + 1.0000000000000000 39.499570511324919 + 1.1000000000000001 9.4630438308109763 + 1.2000000000000002 2.3294935751104737 + 1.3000000000000003 0.57058726754144162 + 1.4000000000000001 0.13466360499250576 + 1.5000000000000002 2.9654028763683022E-002 + 1.6000000000000001 5.9001110666872716E-003 + 1.7000000000000002 1.0271110256853976E-003 + 1.8000000000000003 1.5149315970664778E-004 + 1.9000000000000001 1.8332630772941197E-005 + 2.0000000000000000 1.7625863466525047E-006 + 2.1000000000000001 1.3037897449239816E-007 + 2.2000000000000002 7.1851191723432173E-009 + 2.3000000000000003 2.8567178835137876E-010 + 2.4000000000000004 7.9349720447872060E-012 + 2.5000000000000004 1.4910967552225071E-013 + U U + 50 + 0.10000000000000001 74348.981230147430 + 0.20000000000000001 40311.628875481227 + 0.30000000000000004 22512.215747793147 + 0.40000000000000002 12931.185562052075 + 0.50000000000000000 7629.3983056130000 + 0.59999999999999998 4617.1471175675460 + 0.70000000000000007 2862.1227331610016 + 0.80000000000000004 1814.8199558215895 + 0.90000000000000002 1175.4637167411634 + 1.0000000000000000 776.63138285251296 + 1.1000000000000001 522.69735907852555 + 1.2000000000000002 357.86149706462436 + 1.3000000000000003 248.89064787141209 + 1.4000000000000001 175.60252392080037 + 1.5000000000000002 125.51081146835013 + 1.6000000000000001 90.752660563379663 + 1.7000000000000002 66.292603562046978 + 1.8000000000000003 48.853749739571974 + 1.9000000000000001 36.270829284225563 + 2.0000000000000000 27.092149160250134 + 2.1000000000000001 20.330846347361575 + 2.2000000000000002 15.307107145388191 + 2.3000000000000003 11.546652254529212 + 2.4000000000000004 8.7145303726582952 + 2.5000000000000004 6.5713781993663156 + 2.6000000000000001 4.9441671799982290 + 2.7000000000000002 3.7064118746112378 + 2.8000000000000003 2.7646343058611356 + 2.9000000000000004 2.0490135318783476 + 3.0000000000000004 1.5068662861359490 + 3.1000000000000001 1.0980623443850352 + 3.2000000000000002 0.79177413418881881 + 3.3000000000000003 0.56415350027012756 + 3.4000000000000004 0.39665649152896415 + 3.5000000000000004 0.27482281511443302 + 3.6000000000000001 0.18737497023545538 + 3.7000000000000002 0.12554244470464804 + 3.8000000000000003 8.2544745767756542E-002 + 3.9000000000000004 5.3187278866042048E-002 + 4.0000000000000000 3.3538623216095062E-002 + 4.0999999999999996 2.0668142493140005E-002 + 4.2000000000000002 1.2430141080200409E-002 + 4.2999999999999998 7.2856566327403139E-003 + 4.3999999999999995 4.1560332011683883E-003 + 4.5000000000000000 2.3041281035584126E-003 + 4.5999999999999996 1.2397986929553748E-003 + 4.7000000000000002 6.4656516755885957E-004 + 4.7999999999999998 3.2635453161844339E-004 + 4.9000000000000004 1.5921458192287997E-004 + 5.0000000000000000 7.4970692168027886E-005 diff --git a/parameters/latte/TBparam/ppots.nonortho b/parameters/latte/TBparam/ppots.nonortho new file mode 100644 index 00000000..6d0f8061 --- /dev/null +++ b/parameters/latte/TBparam/ppots.nonortho @@ -0,0 +1,12 @@ +Nopps= 10 +Ele1 Ele2 A0 A1 A2 A3 A4 A5 A6 C R1 Rcut +C C 3.927770 24.439989 -51.156433 39.032536 -11.321277 0.000000 0.000000 0.000000 1.600000 1.700000 +N O 14.005908 19.769009 -46.607006 38.399015 -12.656658 0.000000 0.000000 0.000000 1.600000 1.700000 +C N 98.283078 10.289077 -27.709052 22.099235 -6.796462 0.000000 0.000000 0.000000 1.600000 1.700000 +N N 40.335850 14.958977 -36.644093 29.219613 -8.918783 0.000000 0.000000 0.000000 1.600000 1.700000 +C O 0.916287 30.115416 -59.612502 45.114207 -13.200384 0.000000 0.000000 0.000000 1.500000 1.600000 +O O 11.833452 19.281518 -45.763767 37.924165 -12.006535 0.000000 0.000000 0.000000 1.500000 1.600000 +N H 0.664002 28.086622 -63.415978 53.301425 -17.343446 0.000000 0.000000 0.000000 1.300000 1.400000 +O H 0.484351 33.176296 -81.154354 74.931992 -26.796460 0.000000 0.000000 0.000000 1.200000 1.300000 +C H 1.094168 28.606497 -71.558353 65.967464 -23.372892 0.000000 0.000000 0.000000 1.200000 1.300000 +H H 8.194700 16.371100 -75.246500 106.703000 -59.105700 0.000000 0.000000 0.000000 0.800000 0.900000 diff --git a/proxies/c/README.md b/proxies/c/README.md new file mode 100644 index 00000000..d0f81a09 --- /dev/null +++ b/proxies/c/README.md @@ -0,0 +1 @@ +Placeholder for C version of proxy_a code diff --git a/proxies/c/build.sh b/proxies/c/build.sh new file mode 100644 index 00000000..540edab0 --- /dev/null +++ b/proxies/c/build.sh @@ -0,0 +1,2 @@ +gcc-mp-12 -c proxy_a_lib.c -I/opt/local/include +gcc-mp-12 proxy_a.c -o proxy_a proxy_a_lib.o -L/opt/local/lib -lopenblas diff --git a/proxies/c/proxy_a.c b/proxies/c/proxy_a.c new file mode 100644 index 00000000..b5f5d81a --- /dev/null +++ b/proxies/c/proxy_a.c @@ -0,0 +1,48 @@ +#include "proxy_a.h" + +int main(int argc, char *argv[]) +{ + double + *coords = NULL, + *H = NULL, + *D = NULL; + + int + *types, + nats, + nocc, + i, + j; + + nats = 2; + + coords = (double *)malloc(3*nats*sizeof(double)); + get_random_coordinates(nats,coords); + + for (i=0; i < nats; i++) { + printf("%30.18g\n",coords[3*i]); + } + types = (int *)malloc(nats*sizeof(int)); + for (i = 0; i < nats; i++) types[i] = 1; + + H = (double *)malloc(nats*nats*sizeof(double)); + get_hamiltonian(nats,coords, types, H, true); + printf("Hamiltonian matrix\n"); + for (i = 0; i < nats; i++) { + size_t ofst = nats * i; + for (j = 0; j < nats; j++) { + printf("%g\n",H[ofst + j]); + } + } + + D = (double *)malloc(nats*nats*sizeof(double)); + nocc = (int)((double)nats/2.0); + get_densityMatrix(nats,H, nocc, D, true); + printf("Density matrix:\n"); + for (i = 0; i < nats; i++) { + size_t ofst = nats * i; + for (j = 0; j < nats; j++) { + printf("%g\n",D[ofst + j]); + } + } +} diff --git a/proxies/c/proxy_a.h b/proxies/c/proxy_a.h new file mode 100644 index 00000000..a0368baf --- /dev/null +++ b/proxies/c/proxy_a.h @@ -0,0 +1,14 @@ +#ifndef PROXY_A_H +#define PROXY_A_H + +#include +#include +#include +#include +#include + +int get_random_coordinates(int nats, double *coords); +int get_hamiltonian(int nats, double *coords, int *atomTypes, double *H, bool verb); +int get_densityMatrix(int nats, double *H, int Nocc, double *D, bool verb); + +#endif diff --git a/proxies/c/proxy_a_lib.c b/proxies/c/proxy_a_lib.c new file mode 100644 index 00000000..e5a4ed6d --- /dev/null +++ b/proxies/c/proxy_a_lib.c @@ -0,0 +1,253 @@ +/* + proxy_a_lib.c + + A prototype engine that: + - Reads the total number of atoms + - Constructs a set of random coordinates + - Constructs a simple Hamiltonian + - Computes the Density matrix from the Hamiltonian + + Translated from C to Fortran by Michael E. Wall, LANL + +*/ + +#include "proxy_a.h" +#include "lapack.h" + +/* + Simple random number generator + This is important in order to compare across codes + written in different languages. + + To initialize: + \verbatim + myRand = rand(123) + \endverbatim + where the argument of rand is the seed. + + To get a random number between "low" and "high": + \verbatim + rnd = myRand.get_rand(low,high) + \endverbatim +*/ + +double proxy_rand(double low, double high, int seed,bool init) +{ + static int + stat, + a = 321, + b = 231, + c = 13; + + double + w, + rnd; + + int + place; + + if (init) { + stat = seed * 1000; + rnd = 0.0;; + } + else { + w = high - low; + place = a * stat; + place = (int)(place/b); + rnd = ((double)(place % c))/((double)c); + place = rnd * 1000000; + stat = place; + rnd = low + w*rnd; + } + + return(rnd); +} + +/* + Generating random coordinates + @brief Creates a system of size "nats = Number of atoms" with coordindates having + a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. + + @param nats The total number of atoms + @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] +*/ + +int get_random_coordinates(int nats, double *coords) +{ + int + *seedin, + ssize, + length, + atomsCounter, + i, + j, + k; + + double + rnd, + latticeParam; + + length = (int)(pow((double)nats,1./3.)) + 1; + latticeParam = 2.0; + atomsCounter = 0; + rnd = proxy_rand(0.,0.,111,true); // set the random number seed + for (i = 0; i < length; i++) { + for (j = 0; j < length; j++) { + for (k = 0; k < length; k++) { + atomsCounter = atomsCounter + 1; + size_t ofst = (atomsCounter - 1) * 3; + if (atomsCounter > nats) break; + rnd = proxy_rand(-1.,1.,0,false); + coords[ofst + 0] = i * latticeParam + rnd; + printf("%lg\n",coords[ofst + 0]); + rnd = proxy_rand(-1.,1.,0,false); + coords[ofst + 1] = j * latticeParam + rnd; + rnd = proxy_rand(-1.,1.,0,false); + coords[ofst + 2] = k * latticeParam + rnd; + } + } + } + return(0); +} + +/* + Computes a Hamiltonian based on a single "s-like" orbitals per atom. + @author Anders Niklasson + @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances + \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. + + @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] + @param types Index type for each atom in the system. Type for first atom = type[0] (not used yet) + @return H 2D numpy array of Hamiltonian elements + @param verb Verbosity. If True is passed, information is printed. +*/ + +int get_hamiltonian(int nats, double *coords, int *atomTypes, double *H, bool verb) +{ + int + *N, + Nocc, + m, + n, + hdim, + i, + j, + k, + cnt; + + double + *xx, + a, + c, + x, + b, + d, + y, + tmp, + dvec[3], + dist2, + eps, + decay_min; + + hdim = nats; + Nocc = (int)((double)hdim/4.0); + eps = 1.0e-9; + decay_min = 0.1; + m = 78; + a = 3.817632; c = 0.816371; x = 1.029769; n = 13; + b = 1.927947; d = 3.386142; y = 2.135545; + if (H == NULL) { + perror("get_hamiltonian requires allocated H\n"); + exit(1); + } + if (verb) printf("Constructing a simple Hamiltonian for the full system\n"); + cnt = 0; + for (i = 0; i < hdim; i++) { + size_t iofst = i * 3; + x = fmod((a * x + c), (double)m); + y = fmod((b * y + d), (double)n); + for (j = i; j < hdim; j++) { + size_t jofst = j * 3; + dist2 = 0.0; + for (k = 0; k < 3; k++) { + dvec[k] = coords[iofst + k] - coords[jofst + k]; + dist2 += dvec[k]*dvec[k]; + } + tmp = (x/(double)m) * exp(-(y/(double)n + decay_min)*dist2); + H[i*nats + j] = tmp; + H[j*nats + i] = tmp; + } + } + return(0); +} +/* + Computes the Density matrix from a given Hamiltonian. + @author Anders Niklasson + @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ + \f[ \rho = \sum^{nocc} v_k v_k^T \f] + where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ + + @param H Hamiltonian mtrix + @param Nocc Number of occupied orbitals + @param verb Verbosity. If True is passed, information is printed. + + @return D Density matrix + +*/ + +int get_densityMatrix(int nats, double *H, int Nocc, double *D, bool verb) +{ + double + *Q, + *E, + mu, + *work; + + int + info, + lwork, + i, + j, + k, + hdim, + homoIndex, + lumoIndex; + + char + jobz = 'V', + uplo = 'U'; + + if (verb) printf("Computing the Density matrix"); + + hdim = nats; + lwork = 3*hdim - 1; + + Q = (double *)malloc(hdim*hdim*sizeof(double)); + work = (double *)malloc(lwork*sizeof(double)); + E = (double *)malloc(hdim*sizeof(double)); + memcpy(Q,H,hdim*hdim*sizeof(double)); + LAPACK_dsyev(&jobz,&uplo,&hdim,Q,&hdim,E,work,&lwork,&info); + if (verb) { + printf("Eigenvalues:\n"); + for (i = 0; i < hdim; i++) { + printf("%g\n",E[i]); + } + homoIndex = Nocc; + lumoIndex = Nocc + 1; + mu = 0.5*(E[homoIndex] + E[lumoIndex]); + memset(D,0,hdim*hdim*sizeof(double)); + for (i = 0; i < hdim; i++) { + size_t iofst = i * hdim; + for (j = 0; j < hdim; j++) { + size_t jofst = j * hdim; + for (k = 0; k < hdim; k++) { + if (E[k] < mu) { + D[iofst + j] = D[iofst + j] + Q[iofst + k]*Q[jofst + k]; + } + } + } + } + if (verb) printf("Chemical potential = %g\n",mu); + return(0); + } +} diff --git a/proxies/fortran/CMakeLists.txt b/proxies/fortran/CMakeLists.txt new file mode 100644 index 00000000..0c81ac04 --- /dev/null +++ b/proxies/fortran/CMakeLists.txt @@ -0,0 +1,107 @@ +cmake_minimum_required(VERSION 3.10.0) +project(appendix C CXX Fortran) + +set(dir ${CMAKE_CURRENT_SOURCE_DIR}/build/) +set(CMAKE_BUILD_DIRECTORY ${dir}) +set(CMAKE_CURRENT_BINARY_DIR ${dir}) + +include(FindPkgConfig) + +find_package(BML CONFIG QUIET) +pkg_check_modules(BML REQUIRED bml) +list(APPEND LINK_LIBRARIES BML::bml) +list(APPEND LINK_LIBRARIES ${BML_LDFLAGS}) +message(STATUS "Found bml: ${BML_LDFLAGS}") + +find_package(PROGRESS CONFIG QUIET) +pkg_check_modules(PROGRESS REQUIRED progress) +message(STATUS "Found progress: ${PROGRESS_LDFLAGS}") +list(APPEND LINK_LIBRARIES ${PROGRESS_LDFLAGS}) + +find_library(FOUND_METIS metis) + if(NOT FOUND_METIS) + message(FATAL_ERROR "Could not find metis library") + endif() + message(STATUS "Found metis: ${FOUND_METIS}") + add_definitions(-DDO_GRAPHLIB) + list(APPEND LINK_LIBRARIES ${FOUND_METIS}) + + get_filename_component(METIS_LIB ${FOUND_METIS} DIRECTORY) + list(APPEND LINK_LIBRARIES "-L/${METIS_LIB} -lmetis") + +if(PROGRESS_MPI) + message(STATUS "Will build with MPI") + add_definitions(-DDO_MPI) +endif() + +if(PROGRESS) + message(STATUS "Will build with MPI") + add_definitions(-DUSEPROGRESS) +endif() + +if(SANITY_CHECK) + message(STATUS "Will build with SANITY CHECK") + add_definitions(-DSANITY_CHECK) +endif() + +message(STATUS "Extra FC Flags ${EXTRA_FCFLAGS}") + +if(DEFINED EXTRA_FCFLAGS) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${EXTRA_FCFLAGS}") +endif() + + +if(LIB) + list(APPEND SHAREDLIB "-fPIC -shared") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${EXTRA_FCFLAGS} ${SHAREDLIB}") +endif() + +message(STATUS "Project sources = " ${PROJECT_SOURCE_DIR} ) +include_directories(${CMAKE_BINARY_DIR}/) +include_directories(${BML_INCLUDEDIR}) +include_directories(${PROGRESS_INCLUDEDIR}) + +list( + APPEND common_sources +"proxy_a_lib.F90" +"proxy_a_mod.F90" + ) + + +function(progress_appendix myappendix main_and_srcs) +list(GET main_and_srcs 0 main) +include_directories(${PROGRESS_INCLUDEDIR}) +add_executable(${myappendix} ${main} ${common_sources} ${extras}) +target_sources(${myappendix} PRIVATE ${ARGN}) +target_link_libraries(${myappendix} PUBLIC + ${LINK_LIBRARIES}) + set_target_properties(${myappendix} + PROPERTIES + LINK_FLAGS "") + #add_subdirectory(hamiltonian) +endfunction(progress_appendix) + +function(progress_appendix_library myappendix main_and_srcs) +list(GET main_and_srcs 0 main) +include_directories(${PROGRESS_INCLUDEDIR}) +add_library(${myappendix} SHARED ${main} ${common_sources} ${extras}) +target_sources(${myappendix} PRIVATE ${ARGN}) +target_link_libraries(${myappendix} PUBLIC + ${LINK_LIBRARIES}) + set_target_properties(${myappendix} + PROPERTIES + LINK_FLAGS "") +endfunction(progress_appendix_library) + +if(LIB) + progress_appendix_library( proxya_fortran proxy_a_lib.F90 proxy_a_mod.F90 ) + #progress_appendix( gpmd_a gpmd_secuential.F90 gpmdcov_lib_mod.F90) +else() + progress_appendix( proxya proxy_a.F90 ) +endif() + +SET(DESTINATION ${PROJECT_BINARY_DIR}) +install(FILES ${CMAKE_BINARY_DIR}/progress.pc + DESTINATION ${PROJECT_BINARY_DIR}) + +SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) diff --git a/proxies/fortran/compile.sh b/proxies/fortran/compile.sh new file mode 100644 index 00000000..65bce240 --- /dev/null +++ b/proxies/fortran/compile.sh @@ -0,0 +1 @@ +gfortran proxy_a_mod.F90 proxy_a.F90 -o proxy_a -llapack -lblas diff --git a/proxies/fortran/compile_with_cmake.sh b/proxies/fortran/compile_with_cmake.sh new file mode 100644 index 00000000..97624cd6 --- /dev/null +++ b/proxies/fortran/compile_with_cmake.sh @@ -0,0 +1,24 @@ +# Remove the build directory and create a new one +rm -rf build +mkdir build +# Move into the build directory +cd build +METIS_LIB="$HOME/metis-5.1.0/build/Linux-x86_64/libmetis" +METIS_INC="$HOME/metis-5.1.0/build/Linux-x86_64/include" +PROGRESS_LIB="$HOME/qmd-progress/install/" +PROGRESS_INC="$HOME/qmd-progress/install/include" +BML_LIB="$HOME/bml/install/" +BML_INC="$HOME/bml/install/include" + + +cmake -DPROGRESS="yes" -DCMAKE_Fortran_COMPILER="gfortran" -DPROGRESS_MPI="no" \ + -DEXTRA_FCFLAGS="-Wall -Wunused -fopenmp -lm -fPIC -g -O0 -fcheck=all --check=bounds -lmetis -lm -fPIC" \ + -DLIB="yes" -DLATTE_PREC="DOUBLE" \ + -DCMAKE_PREFIX_PATH="$PROGRESS_LIB;$PROGRESS_INC;$BML_LIB;$BML_INC;$METIS_LIB;$METIS_INC" ../ +make + +cp libproxya_fortran.so proxya_fortran.so + + + + diff --git a/proxies/fortran/proxy_a.F90 b/proxies/fortran/proxy_a.F90 new file mode 100644 index 00000000..41286a94 --- /dev/null +++ b/proxies/fortran/proxy_a.F90 @@ -0,0 +1,31 @@ +program proxy_a + use proxy_a_mod + implicit none + real(dp),allocatable :: coords(:,:) + integer,allocatable :: types(:) + real(dp), allocatable :: H(:,:),D(:,:) + integer :: nats,nocc,i,j + + nats = 2 + + call get_random_coordinates(nats,coords) + do i = 1,nats + write(*,*)coords(1,i) + enddo + allocate(types(nats)); types = 1 + allocate(H(nats,nats)) + call get_hamiltonian(coords,types,H,.true.) + write(*,*)"Hamiltonian matrix" + do i=1,nats + do j=1,nats + write(*,*)H(i,j) + enddo + enddo + + allocate(D(nats,nats)) + nocc = int(real(nats,dp)/2.0_dp) + call get_densityMatrix(H,nocc,D,.true.) + write(*,*)"Density matrix=",D + +end program proxy_a + diff --git a/proxies/fortran/proxy_a_lib.F90 b/proxies/fortran/proxy_a_lib.F90 new file mode 100644 index 00000000..9723abbf --- /dev/null +++ b/proxies/fortran/proxy_a_lib.F90 @@ -0,0 +1,113 @@ +!> Library interface +!! \brief This file is used to interface to python via iso_c_binding +!! library. + +!> Get Hamiltonian +!! \brief General fortran proxy function to get the Hamiltonian +!! \param nats Number of atoms +!! \param norbs Number of atoms +!! \param coords_in Positions for all the atoms +!! \param atomTypes Atom types indices for every atom in the system +!! \param H_out Hamiltonian matrix +!! \param S_out Overlap matrix +!! \param verb_in Verbosity level +!! +function proxya_get_hamiltonian(nats,norbs,coords_in,atomTypes_in,H_out,S_out,verb_in) & + & result(err) bind(c, name='proxya_get_hamiltonian') + use iso_c_binding, only: c_char, c_double, c_int, c_bool + use proxy_a_mod + implicit none + integer(c_int), intent(in), value :: nats + integer(c_int), intent(in), value :: norbs + real(c_double), intent(in) :: coords_in(3*nats) + integer(c_int), intent(in) :: atomTypes_in(nats) + logical(c_bool), intent(in), value :: verb_in + logical(c_bool) :: err + real(c_double), intent(inout) :: H_out(norbs,norbs) + real(c_double), intent(inout) :: S_out(norbs,norbs) + + real(dp), allocatable :: coords(:,:) + integer, allocatable :: atomTypes(:) + integer :: i + real(dp), allocatable :: H(:,:) + real(dp), allocatable :: S(:,:) + logical :: verb + + err = .true. + + allocate(coords(3,nats)) !indices will need to be flipped + allocate(atomTypes(nats)) + allocate(H(norbs,norbs)) + allocate(S(norbs,norbs)) + + !Note that arrays appear in another order. We need to rearange + !the data. This is because of the column mayor (in python) vs. + !row mayor in fortran. + do i = 1, nats + coords(1,i) = coords_in((i-1)*3 + 1) + coords(2,i) = coords_in((i-1)*3 + 2) + coords(3,i) = coords_in((i-1)*3 + 3) + enddo + + atomTypes = atomTypes_in + + !A workaround to avoid fortran to c (one bit) boolean issues + if(verb_in .eqv. (1 == 1))then + verb = .true. + else + verb = .false. + endif + + call get_hamiltonian(coords,atomTypes,H,S,verb) + + H_out = H + S_out = S + + err = .false. + +end function proxya_get_hamiltonian + + +!> Get density matrix +!! \brief General fortran proxy function to get the density matrix +!! \param norbs Number of atoms +!! \param nocc Number of occupied orbitals +!! \param ham_in Hamiltonian matrix input +!! \param D_out Density matrix output +!! \param verb_in Verbosity level +!! +function proxya_get_density_matrix(norbs,nocc,ham_in,D_out,verb_in) & + & result(err) bind(c, name='proxya_get_density_matrix') + use iso_c_binding, only: c_char, c_double, c_int, c_bool + use proxy_a_mod + implicit none + integer(c_int), intent(in), value :: norbs + integer(c_int), intent(in), value :: nocc + real(c_double), intent(in) :: ham_in(norbs*norbs) + logical(c_bool), intent(in), value :: verb_in + logical(c_bool) :: err + real(c_double), intent(inout) :: D_out(norbs*norbs) + + real(dp), allocatable :: coords(:,:) + integer, allocatable :: atomTypes(:) + integer :: i + real(dp), allocatable :: D(:,:) + real(dp), allocatable :: ham(:,:) + logical :: verb + + err = .true. + + allocate(D(norbs,norbs)) + allocate(ham(norbs,norbs)) + !From flatt to matrix + do i = 1,norbs + ham(i,:) = ham_in(((i-1)*norbs + 1):i*norbs) + enddo + + call get_densityMatrix(ham,Nocc,D,verb) + !From matrix to faltt + do i = 1,norbs + D_out(((i-1)*norbs + 1):i*norbs) = D(i,:) + enddo + +end function proxya_get_density_matrix diff --git a/proxies/fortran/proxy_a_mod.F90 b/proxies/fortran/proxy_a_mod.F90 new file mode 100644 index 00000000..bf9ed999 --- /dev/null +++ b/proxies/fortran/proxy_a_mod.F90 @@ -0,0 +1,232 @@ +!!> proxy code a +!! A prototype engine that: +!! - Reads the total number of atoms +!! - Constructs a set of random coordinates +!! - Constructs a simple Hamiltonian +!! - Computes the Density matrix from the Hamiltonian +!! +module proxy_a_mod + + implicit none + + integer, parameter :: dp = kind(1.0D0) !Precision + public :: get_random_coordinates, get_densityMatrix + +!!> Simple random number generator +!! This is important in order to compare across codes +!! written in different languages. +!! +!! To initialize: +!! \verbatim +!! myRand = rand(123) +!! \endverbatim +!! where the argument of rand is the seed. +!! +!! To get a random number between "low" and "high": +!! \verbatim +!! rnd = myRand.get_rand(low,high) +!! \endverbatim +!! +type, public :: rand + integer :: a = 321 + integer :: b = 231 + integer :: c = 13 + integer :: seed + integer :: stat + contains + procedure :: init => rand_init + procedure :: get_rand => rand_get_rand +end type rand +contains + + subroutine rand_init(self,seed) + implicit none + class(rand), intent(inout) :: self + integer, intent(in) :: seed + self%seed = seed + self%stat = seed*1000 + end subroutine rand_init + + function rand_get_rand(self,low,high) result(rnd) + implicit none + class(rand), intent(inout) :: self + real(dp) :: w + real(dp) :: rnd + real(dp), intent(in) :: low, high + integer :: place + w = high - low + place = self%a*self%stat + place = int(place/self%b) + rnd = real(mod(place,self%c))/real(self%c) + place = rnd*1000000 + self%stat = place + rnd = low + w*rnd + end function rand_get_rand + + + !!> Generating random coordinates + !! @brief Creates a system of size "nats = Number of atoms" with coordindates having + !! a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. + !! + !! @param nats The total number of atoms + !! @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] + !! + subroutine get_random_coordinates(nats,coords) + implicit none + integer :: nats,ssize,length,atomsCounter + integer :: i,j,k + integer, allocatable :: seedin(:) + real(dp), allocatable :: coords(:,:) + real(dp) :: rnd,latticeParam + type(rand) :: myrand + !Get random coordinates + length = int(real(nats)**(1.0/3.0)) + 1 + allocate(coords(3,nats)) + latticeParam = 2.0 + atomsCounter = 0 + call myrand%init(111) + do i = 1,length + do j = 1,length + do k = 1,length + atomsCounter = atomsCounter + 1 + if(atomsCounter > nats) exit + rnd = myrand%get_rand(-1.0_dp,1.0_dp) + coords(1,atomsCounter) = (i-1)*latticeParam + rnd + write(*,*)coords(1,atomsCounter) + rnd = myrand%get_rand(-1.0_dp,1.0_dp) + coords(2,atomsCounter) = (j-1)*latticeParam + rnd + rnd = myrand%get_rand(-1.0_dp,1.0_dp) + coords(3,atomsCounter) = (k-1)*latticeParam + rnd + enddo + enddo + enddo + return + end subroutine get_random_coordinates + + !! Computes a Hamiltonian based on a single "s-like" orbitals per atom. + ! @author Anders Niklasson + ! @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances + ! \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. + ! + ! @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] + ! @param types Index type for each atom in the system. Type for first atom = type[0] (not used yet) + ! @return H 2D numpy array of Hamiltonian elements + ! @param verb Verbosity. If True is passed, information is printed. + ! + subroutine get_hamiltonian(coords,atomTypes,H,S,verb) + implicit none + integer :: n,Nocc,m,hdim + logical, intent(in) :: verb + real(dp), allocatable :: xx(:) + real(dp), allocatable, intent(in) :: coords(:,:) + integer, allocatable, intent(in) :: atomTypes(:) + real(dp), allocatable, intent(out) :: H(:,:) + real(dp), allocatable, intent(out) :: S(:,:) + real(dp) :: a,c,x,b,d,y,tmp,dist,eps,decay_min + integer :: i,j,k,cnt + + hdim = size(coords,dim=2); Nocc = int(real(hdim)/4.0); eps = 1e-9; decay_min = 0.1; m = 78; + a = 3.817632; c = 0.816371; x = 1.029769; n = 13; + b = 1.927947; d = 3.386142; y = 2.135545; + if(.not. allocated(H)) allocate(H(hdim,hdim)) + if(verb) write(*,*)"Constructing a simple Hamiltonian for the full system" + cnt = 0 + do i = 1,hdim + x = mod((a*x+c),real(m)) + y = mod((b*y+d),real(n)) + do j = i,hdim + dist = norm2(coords(:,i)-coords(:,j)) + tmp = (x/real(m))*exp(-(y/real(n) + decay_min)*dist**2) + H(i,j) = tmp + H(j,i) = tmp + enddo + enddo + return + end subroutine get_hamiltonian + + !!> Computes the Density matrix from a given Hamiltonian. + !! @author Anders Niklasson + !! @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ + !! \f[ \rho = \sum^{nocc} v_k v_k^T \f] + !! where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ + !! + !! @param H Hamiltonian mtrix + !! @param Nocc Number of occupied orbitals + !! @param verb Verbosity. If True is passed, information is printed. + !! + !! @return D Density matrix + !! + subroutine get_densityMatrix(H,Nocc,D,verb) +#ifdef USEPROGRESS + use bml + use prg_densitymatrix_mod +#endif + + implicit none + integer :: Nocc + logical, intent(in) :: verb + real(dp), allocatable, intent(in) :: H(:,:) + real(dp), allocatable, intent(out) :: D(:,:) + real(dp), allocatable :: Q(:,:), E(:),tmpmat(:,:),f(:,:) + real(dp) :: mu + integer :: info, lwork,i,j,k,norbs,homoIndex,lumoIndex + real(dp), allocatable :: work(:) + real(dp) :: bndfil + character(LEN=1), parameter :: jobz = 'V', uplo = 'U' + +#ifdef USEPROGRESS + type(bml_matrix_t) :: D_bml,H_bml +#endif + if(verb) write(*,*)"Computing the Density matrix" + + norbs = size(H,dim=1) + +#ifdef USEPROGRESS + bndfil = real(nocc)/real(norbs) + call bml_zero_matrix(bml_matrix_dense,bml_element_real,& + &dp,norbs,norbs,D_bml) + call bml_zero_matrix(bml_matrix_dense,bml_element_real,& + &dp,norbs,norbs,H_bml) + call bml_import_from_dense(bml_matrix_dense,H,H_bml,0.0_dp,norbs) + call prg_build_density_t0(H_bml,D_bml,0.0_dp,bndfil,E) + call bml_export_to_dense(D_bml,D) + call bml_deallocate(D_bml) + call bml_deallocate(H_bml) +#else + lwork = 3*norbs - 1 + allocate(Q(norbs,norbs)) + allocate(work(lwork)) + allocate(E(norbs)) + Q = H + call dsyev(jobz,uplo,norbs,Q,norbs,E,work,lwork,info) + if(verb)write(*,*)"Eigenvalues",E + homoIndex = Nocc + lumoIndex = Nocc + 1 + mu = 0.5*(E(homoIndex) + E(lumoIndex)) + allocate(D(norbs,norbs)) + allocate(f(norbs,norbs)) + allocate(tmpmat(norbs,norbs)) + D = 0.0_dp + f = 0.0_dp + + do i = 1,norbs + if (E(i) < mu) then + f(i,i) = 1.0_dp + endif + enddo + + CALL DGEMM('N', 'N', norbs, norbs, norbs, 1.0_dp, & + tmpmat, norbs, Q, norbs, 0.0_dp, f, norbs) !Q*f + CALL DGEMM('N', 'T', norbs, norbs, norbs, 1.0_dp, & + tmpmat, norbs, Q, norbs, 0.0_dp, D, norbs) !(Q*f)*Qt + +#endif + + return + + end subroutine get_densityMatrix + + +end module proxy_a_mod + + diff --git a/proxies/matlab/AtomicDensityMatrix.m b/proxies/matlab/AtomicDensityMatrix.m new file mode 100644 index 00000000..3b54d659 --- /dev/null +++ b/proxies/matlab/AtomicDensityMatrix.m @@ -0,0 +1,36 @@ +function [D_atomic] = AtomicDensityMatrix(Nr_atoms,H_INDEX_START,H_INDEX_END,HDIM,Znuc); + +D_atomic = zeros(1,HDIM); + +INDEX = 0; +for I = 1:Nr_atoms + N_orb = H_INDEX_END(I)-H_INDEX_START(I) + 1; + if N_orb == 1 + INDEX = INDEX + 1; + D_atomic(INDEX) = Znuc(I); + else + if Znuc(I) <= 2 + INDEX = INDEX + 1; + D_atomic(INDEX) = Znuc(I); + + INDEX = INDEX + 1; + D_atomic(INDEX) = 0; + INDEX = INDEX + 1; + D_atomic(INDEX) = 0; + INDEX = INDEX + 1; + D_atomic(INDEX) = 0; + + else + INDEX = INDEX + 1; + D_atomic(INDEX) = 2; + + INDEX = INDEX + 1; + OCC = (Znuc(I)-2)/3; + D_atomic(INDEX) = OCC; + INDEX = INDEX + 1; + D_atomic(INDEX) = OCC; + INDEX = INDEX + 1; + D_atomic(INDEX) = OCC; + end + end +end diff --git a/proxies/matlab/BondIntegral.m b/proxies/matlab/BondIntegral.m new file mode 100644 index 00000000..af89ff07 --- /dev/null +++ b/proxies/matlab/BondIntegral.m @@ -0,0 +1,18 @@ +function h = BondIntegral(dR,f) + +%%% dR: distance between atoms +%%% f: paramters/coefficeints for the bond integral + + if (dR <= f(7)) + RMOD = dR - f(6); + POLYNOM = RMOD*(f(2) + RMOD*(f(3) + RMOD*(f(4) + f(5)*RMOD))); + X = exp(POLYNOM); + elseif (dR > f(7)) & (dR < f(8)) + RMINUSR1 = dR - f(7); + X = f(9) + RMINUSR1*(f(10) + RMINUSR1*(f(11) + RMINUSR1*(f(12) + RMINUSR1*(f(13) + RMINUSR1*f(14))))); + else + X = 0; + end + h = f(1)*X; + + diff --git a/proxies/matlab/COORD.m b/proxies/matlab/COORD.m new file mode 100644 index 00000000..996dec8b --- /dev/null +++ b/proxies/matlab/COORD.m @@ -0,0 +1,51 @@ +C 4.420001 4.520000 4.580000 +H 3.952899 3.984296 3.748600 +H 5.071440 5.306013 4.187320 +H 5.011723 3.820633 5.177613 +H 3.643938 4.969059 5.206467 +C 8.306417 8.922489 11.058251 +H 7.865654 8.396639 10.200538 +H 8.992247 9.727094 10.639195 +H 8.904344 8.233497 11.656443 +H 7.543664 9.375350 11.675742 +C 6.610673 10.624374 6.001819 +H 6.160123 10.106479 5.151284 +H 7.268551 11.425549 5.588731 +H 7.221693 9.947533 6.581240 +H 5.823319 11.071655 6.587968 +C 9.366899 6.173791 5.081823 +H 8.933342 5.638478 4.223453 +H 10.058373 6.941235 4.689739 +H 9.968428 5.474563 5.664468 +H 8.613620 6.610354 5.691975 +C 9.478122 12.338314 9.397453 +H 9.018586 11.787411 8.593005 +H 10.173401 13.102222 9.043487 +H 10.104399 11.631090 9.991622 +H 8.723496 12.779712 10.032465 +C 12.611055 8.972684 9.821024 +H 12.157151 8.430239 8.991073 +H 13.272277 9.726794 9.406545 +H 13.215367 8.258123 10.422758 +H 11.851780 9.389042 10.460303 +C 5.504395 5.739892 10.170246 +H 4.984621 5.201157 9.328596 +H 6.132797 6.531114 9.786514 +H 6.033806 5.041772 10.791585 +H 4.701655 6.239441 10.792016 +C 10.749151 9.799286 5.751812 +H 10.273222 9.228897 4.965396 +H 11.415380 10.553758 5.355932 +H 11.355674 9.087793 6.356916 +H 9.991911 10.216903 6.404219 +C 6.563228 7.033042 6.958737 +H 6.129016 6.519083 6.097352 +H 7.207507 7.808931 6.574565 +H 7.165189 6.313190 7.581883 +H 5.799429 7.501422 7.567627 +C 12.912482 12.239536 7.755493 +H 12.460887 11.708290 6.915681 +H 13.592325 13.037021 7.373497 +H 13.532606 11.558002 8.323343 +H 12.185690 12.735960 8.374372 +~ diff --git a/proxies/matlab/CoulombMatrix.m b/proxies/matlab/CoulombMatrix.m new file mode 100644 index 00000000..c0bf4ccc --- /dev/null +++ b/proxies/matlab/CoulombMatrix.m @@ -0,0 +1,16 @@ +function [CC] = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nr_atoms,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); + + dq_J = zeros(1,Nr_atoms); + CC = zeros(Nr_atoms); + Coulomb_Pot_k = 0; + for J = 1:Nr_atoms + dq_J(J) = 1; + for I = 1:Nr_atoms + [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); + end + [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); + Coulomb_Pot_dq_J = Coulomb_Pot_Real+Coulomb_Pot_k; + CC(:,J) = Coulomb_Pot_dq_J; + dq_J(J) = 0; + end +% CC = 0.5*(CC+CC'); diff --git a/proxies/matlab/DM_Fermi.m b/proxies/matlab/DM_Fermi.m new file mode 100644 index 00000000..4e7aebf1 --- /dev/null +++ b/proxies/matlab/DM_Fermi.m @@ -0,0 +1,37 @@ + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + function [P0,mu0] = DM_Fermi(H0,T,mu_0,Ne,m,eps,MaxIt) + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + N = max(size(H0)); + I = eye(N); + mu0 = mu_0; + OccErr = 1; + Cnt = 0; + while OccErr > eps + %kB = 6.33366256e-6; % Ry/K; + %kB = 3.166811429e-6; % Ha/K; + kB = 8.61739e-5; % eV/K; + beta = 1/(kB*T); % Temp in Kelvin + cnst = 2^(-2-m)*beta; + P0 = 0.5*I - cnst*(H0-mu0*I); + for i = 1:m + P02 = P0*P0; + ID0 = inv(2*(P02-P0) + I); + P_0 = ID0*P02; + P0 = P_0; + end + TrdPdmu = trace(beta*P0*(I-P0)); + if abs(TrdPdmu) > 1e-8 + mu0 = mu0 + (Ne - trace(P0))/TrdPdmu; + OccErr = abs(trace(P0)-Ne); + else + OccErr = 0; + end + Cnt = Cnt + 1; + if (Cnt >= MaxIt) + OccErr; + OccErr = 0; + Cnt = MaxIt; + end + end + % Adjust occupation + P0 = P0 + ((Ne - trace(P0))/TrdPdmu)*beta*P0*(I-P0); diff --git a/proxies/matlab/DM_PRT_Fermi.m b/proxies/matlab/DM_PRT_Fermi.m new file mode 100644 index 00000000..dea0e2c0 --- /dev/null +++ b/proxies/matlab/DM_PRT_Fermi.m @@ -0,0 +1,43 @@ + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + function [P0,P1,mu0,mu1] = DM_PRT_Fermi(H0,H1,T,mu_0,mu1,Ne,m,eps,MaxIt) + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + N = max(size(H0)); + I = eye(N); mu_1_start = mu1; + mu0 = mu_0; mu1 = mu1; % Intial guess + OccErr = 1; + Cnt = 0; + while OccErr > eps + %kB = 6.33366256e-6; % Ry/K; + %kB = 3.166811429e-6; % Ha/K; + kB = 8.61739e-5; % eV/K; + beta = 1/(kB*T); % Temp in Kelvin + cnst = 2^(-2-m)*beta; + P0 = 0.5*I - cnst*(H0-mu0*I); + P1 = -cnst*(H1-mu1*I); + for i = 1:m + % hh = sort(real(eig(P0))); + P02 = P0*P0; + DX1 = P0*P1+P1*P0; + ID0 = inv(2*(P02-P0) + I); + P_0 = ID0*P02; + P_1 = ID0*(DX1+2*(P1-DX1)*P_0); + P0 = P_0; P1 = P_1; + end + TrdPdmu = trace(beta*P0*(I-P0)); + if abs(TrdPdmu) > 1e-9 + mu0 = mu0 + (Ne - trace(P0))/TrdPdmu; + mu1 = mu1 + (0 - trace(P1))/TrdPdmu; + OccErr = abs(trace(P0+P1)-Ne); + else + OccErr = 0; + end + Cnt = Cnt + 1; + if (Cnt >= MaxIt) + OccErr; + OccErr = 0; + Cnt = MaxIt; + end + end + % Adjust occupation + P0 = P0 + ((Ne - trace(P0))/TrdPdmu)*beta*P0*(I-P0); + P1 = P1 - trace(P1)*I/N; diff --git a/proxies/matlab/DensityMatrix.m b/proxies/matlab/DensityMatrix.m new file mode 100644 index 00000000..50c3b0d3 --- /dev/null +++ b/proxies/matlab/DensityMatrix.m @@ -0,0 +1,13 @@ +function [D,mu] = DensityMatrix(H,nocc) + +N = max(size(H)); +[Q,E] = eig(H); +e = sort(diag(E)); +mu = 0.5*(e(nocc)+e(nocc+1)); +D = zeros(N); +for i = 1:N + if e(i) < mu + D = D + Q(:,i)*Q(:,i)'; + end +end + diff --git a/proxies/matlab/DensityMatrixPRT.m b/proxies/matlab/DensityMatrixPRT.m new file mode 100644 index 00000000..c3cde2cd --- /dev/null +++ b/proxies/matlab/DensityMatrixPRT.m @@ -0,0 +1,34 @@ +function [D,D1] = DensityMatrixPRT(H0,H1,nocc) + +N = max(size(H0)); +[Q,E] = eig(H0); +e = diag(E); +mu = 0.5*(e(nocc)+e(nocc+1)); +D = zeros(N); +for i = 1:N + if e(i) < mu + D = D + Q(:,i)*Q(:,i)'; + end +end + +Q1 = 0*Q; +for i = 1:N + if e(i) < mu + for j = 1:N + H1Tmp = (Q(:,j)'*H1*Q(:,i)/(e(i) -e(j))); + if j ~= i + Q1(:,i) = Q1(:,i) + H1Tmp*Q(:,j); + end + end + end +end +D1 = Q1*Q' + Q*Q1'; % Calculated using Rayleigh Schrodinger Pertrubations theory + +% OccErr1 = trace(D1)-0 +% IdErr1 = norm(D1*D+D*D1-D1) +% ComErr1 = norm(D1*H0-H0*D1 + D*H1-H1*D) +% pause + + + + diff --git a/proxies/matlab/Energy.m b/proxies/matlab/Energy.m new file mode 100644 index 00000000..7389f4f0 --- /dev/null +++ b/proxies/matlab/Energy.m @@ -0,0 +1,34 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Total energy calculation % +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,U,Efield,D0,C,D,q,Rx,Ry,Rz,f,Te); + +%% E = 2*trace(H0*(D-D0)) + 0.5*sum_ij{i!=j} (qi*Cij*qj) + 0.5*sum_i qi^2*Ui - Efield*mu - 2*Te*S_ent +%% dipole = mu(:) = sum_i qi*R(i,:); qi = 2*(D_ii-D0_ii) + + +kB = 8.61739e-5; % eV/K; +N = max(size(q)); +D0 = diag(D0); +Eband0 = 2*trace(H0*(D-D0)); % Single-particle/band energy + +Ecoul = 0.5*q'*C*q; % Coulomb energy +for i = 1:N + Ecoul = Ecoul + 0.5*q(i)*U(i)*q(i); +end + +Edipole = 0; +for i = 1:N + Edipole = Edipole - q(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); % External-field-Dipole interaction energy +end + +S_ent = 0; eps = 1e-9 +for i = 1:N + if (f(i) < 1-eps) & (f(i) > eps) + S_ent = - kB*(f(i)*log(f(i)) + (1-f(i))*log(1-f(i))); + end +end + +Etot = Eband0 + Ecoul + Edipole - 2*Te*S_ent; % Total energy + + diff --git a/proxies/matlab/Energy_save_00.m b/proxies/matlab/Energy_save_00.m new file mode 100644 index 00000000..7389f4f0 --- /dev/null +++ b/proxies/matlab/Energy_save_00.m @@ -0,0 +1,34 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Total energy calculation % +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,U,Efield,D0,C,D,q,Rx,Ry,Rz,f,Te); + +%% E = 2*trace(H0*(D-D0)) + 0.5*sum_ij{i!=j} (qi*Cij*qj) + 0.5*sum_i qi^2*Ui - Efield*mu - 2*Te*S_ent +%% dipole = mu(:) = sum_i qi*R(i,:); qi = 2*(D_ii-D0_ii) + + +kB = 8.61739e-5; % eV/K; +N = max(size(q)); +D0 = diag(D0); +Eband0 = 2*trace(H0*(D-D0)); % Single-particle/band energy + +Ecoul = 0.5*q'*C*q; % Coulomb energy +for i = 1:N + Ecoul = Ecoul + 0.5*q(i)*U(i)*q(i); +end + +Edipole = 0; +for i = 1:N + Edipole = Edipole - q(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); % External-field-Dipole interaction energy +end + +S_ent = 0; eps = 1e-9 +for i = 1:N + if (f(i) < 1-eps) & (f(i) > eps) + S_ent = - kB*(f(i)*log(f(i)) + (1-f(i))*log(1-f(i))); + end +end + +Etot = Eband0 + Ecoul + Edipole - 2*Te*S_ent; % Total energy + + diff --git a/proxies/matlab/Ewald_Real_Space.m b/proxies/matlab/Ewald_Real_Space.m new file mode 100644 index 00000000..7eccbfa0 --- /dev/null +++ b/proxies/matlab/Ewald_Real_Space.m @@ -0,0 +1,97 @@ +function [COULOMBV,FCOUL] = Ewald_Real_Space(I,RX,RY,RZ,LBox,DELTAQ,U,Element_Type,Nr_atoms,COULACC,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType) + +ccnt = 0; +COULVOL = LBox(1)*LBox(2)*LBox(3); +SQRTX = sqrt(-log(COULACC)); +CALPHA = sqrt(pi)*((TIMERATIO*Nr_atoms/(COULVOL^2))^(1/6)); +COULCUT = SQRTX/CALPHA; +CALPHA2 = CALPHA*CALPHA; +if (COULCUT > 50) + COULCUT = 50; + CALPHA = SQRTX/COULCUT; +end +COULCUT2 = COULCUT*COULCUT; +CALPHA2 = CALPHA*CALPHA; + +RELPERM = 1; +KECONST = 14.3996437701414*RELPERM; +TFACT = 16.0/(5.0*KECONST); + +SQRTPI = sqrt(pi); + +FCOUL = zeros(3,1); +COULOMBV = 0; + +TI = TFACT*U(I); +TI2 = TI*TI; +TI3 = TI2*TI; +TI4 = TI2*TI2; +TI6 = TI4*TI2; + +SSA = TI; +SSB = TI3/48; +SSC = 3*TI2/16; +SSD = 11*TI/16; +SSE = 1; + +Ra = [RX(I),RY(I),RZ(I)]; + +for nnI = 1:nrnnlist(I) + Rb(1) = nnRx(I,nnI); + Rb(2) = nnRy(I,nnI); + Rb(3) = nnRz(I,nnI); + J = nnType(I,nnI); + + Rab = Rb-Ra; % OBS b - a !!! + dR = norm(Rab); + MAGR = dR; + MAGR2 = dR*dR; + + if (dR <= COULCUT) & (dR > 1e-12) + + TJ = TFACT*U(J); + DC = Rab/dR; + + %! Using Numerical Recipes ERFC + Z = abs(CALPHA*MAGR); + NUMREP_ERFC = erfc(Z); + + CA = NUMREP_ERFC/MAGR; + COULOMBV = COULOMBV + DELTAQ(J)*CA; + ccnt = ccnt + 1; + TEST(ccnt) = DELTAQ(J)*CA; + CA = CA + 2*CALPHA*exp( -CALPHA2*MAGR2 )/SQRTPI; + FORCE = -KECONST*DELTAQ(I)*DELTAQ(J)*CA/MAGR; + EXPTI = exp(-TI*MAGR ); + + if Element_Type(I) == Element_Type(J) + COULOMBV = COULOMBV - DELTAQ(J)*EXPTI*(SSB*MAGR2 + SSC*MAGR + SSD + SSE/MAGR); + ccnt = ccnt + 1; + TEST(ccnt) = - DELTAQ(J)*EXPTI*(SSB*MAGR2 + SSC*MAGR + SSD + SSE/MAGR); + FORCE = FORCE + (KECONST*DELTAQ(I)*DELTAQ(J)*EXPTI)*((SSE/MAGR2 - 2*SSB*MAGR - SSC) + SSA*(SSB*MAGR2 + SSC*MAGR + SSD + SSE/MAGR)); + else + TJ2 = TJ*TJ; + TJ3 = TJ2*TJ; + TJ4 = TJ2*TJ2; + TJ6 = TJ4*TJ2; + EXPTJ = exp( -TJ*MAGR ); + TI2MTJ2 = TI2 - TJ2; + TJ2MTI2 = -TI2MTJ2; + SA = TI; + SB = TJ4*TI/(2 * TI2MTJ2 * TI2MTJ2); + SC = (TJ6 - 3*TJ4*TI2)/(TI2MTJ2 * TI2MTJ2 * TI2MTJ2); + SD = TJ; + SE = TI4*TJ/(2 * TJ2MTI2 * TJ2MTI2); + SF = (TI6 - 3*TI4*TJ2)/(TJ2MTI2 * TJ2MTI2 * TJ2MTI2); + + COULOMBV = COULOMBV - (DELTAQ(J)*(EXPTI*(SB - (SC/MAGR)) + EXPTJ*(SE - (SF/MAGR)))); + FORCE = FORCE + KECONST*DELTAQ(I)*DELTAQ(J)*((EXPTI*(SA*(SB - (SC/MAGR)) - (SC/MAGR2))) + (EXPTJ*(SD*(SE - (SF/MAGR)) - (SF/MAGR2)))); + end + + FCOUL(1) = FCOUL(1) + DC(1)*FORCE; + FCOUL(2) = FCOUL(2) + DC(2)*FORCE; + FCOUL(3) = FCOUL(3) + DC(3)*FORCE; + end +end +COULOMBV = KECONST * COULOMBV; + diff --git a/proxies/matlab/Ewald_k_Space.m b/proxies/matlab/Ewald_k_Space.m new file mode 100644 index 00000000..e8a8d1b2 --- /dev/null +++ b/proxies/matlab/Ewald_k_Space.m @@ -0,0 +1,108 @@ +function [COULOMBV,FCOUL] = Ewald_k_Space(RX,RY,RZ,LBox,DELTAQ,Nr_atoms,COULACC,TIMERATIO) + +COULVOL = LBox(1)*LBox(2)*LBox(3); + +SQRTX = sqrt(-log(COULACC)); +CALPHA = sqrt(pi)*((TIMERATIO*Nr_atoms/(COULVOL^2))^(1/6)); +COULCUT = SQRTX/CALPHA; +CALPHA2 = CALPHA*CALPHA; +if (COULCUT > 50) + COULCUT = 50; + CALPHA = SQRTX/COULCUT; +end +COULCUT2 = COULCUT*COULCUT; +KCUTOFF = 2*CALPHA*SQRTX; +KCUTOFF2 = KCUTOFF*KCUTOFF; +CALPHA2 = CALPHA*CALPHA; +FOURCALPHA2 = 4*CALPHA2; +RECIPVECS = zeros(3,3); +RECIPVECS(1,1) = 2*pi/LBox(1); +RECIPVECS(2,2) = 2*pi/LBox(2); +RECIPVECS(3,3) = 2*pi/LBox(3); +LMAX = floor(KCUTOFF / sqrt(RECIPVECS(1,1)*RECIPVECS(1,1))); +MMAX = floor(KCUTOFF / sqrt(RECIPVECS(2,2)*RECIPVECS(2,2))); +NMAX = floor(KCUTOFF / sqrt(RECIPVECS(3,3)*RECIPVECS(3,3))); + +RELPERM = 1; +KECONST = 14.3996437701414*RELPERM; + +SQRTPI = sqrt(pi); + +FCOUL = zeros(3,Nr_atoms); +COULOMBV = zeros(1,Nr_atoms); +SINLIST = zeros(Nr_atoms); +COSLIST = zeros(Nr_atoms); +%CR = R'; + +for L = 0:LMAX + + if L == 0 + MMIN = 0; + else + MMIN = -MMAX; + end + + L11 = L*RECIPVECS(1,1); + L12 = L*RECIPVECS(1,2); + L13 = L*RECIPVECS(1,3); + + for M = MMIN:MMAX + + NMIN = -NMAX; + + if (L == 0) & (M == 0) + NMIN = 1; + end + + M21 = L11 + M*RECIPVECS(2,1); + M22 = L12 + M*RECIPVECS(2,2); + M23 = L13 + M*RECIPVECS(2,3); + + for N = NMIN:NMAX + K(1) = M21 + N*RECIPVECS(3,1); + K(2) = M22 + N*RECIPVECS(3,2); + K(3) = M23 + N*RECIPVECS(3,3); + K2 = K(1)*K(1) + K(2)*K(2) + K(3)*K(3); + if K2 <= KCUTOFF2 + PREFACTOR = 8*pi*exp(-K2/(4*CALPHA2))/(COULVOL*K2); + PREVIR = (2/K2) + (2/(4*CALPHA2)); + + COSSUM = 0; + SINSUM = 0; + + %! Doing the sin and cos sums + + for I = 1:Nr_atoms + %DOT = K(1)*CR(1,I) + K(2)*CR(2,I) + K(3)*CR(3,I); + DOT = K(1)*RX(I) + K(2)*RY(I) + K(3)*RZ(I); + %! We re-use these in the next loop... + SINLIST(I) = sin(DOT); + COSLIST(I) = cos(DOT); + COSSUM = COSSUM + DELTAQ(I)*COSLIST(I); + SINSUM = SINSUM + DELTAQ(I)*SINLIST(I); + end + COSSUM2 = COSSUM*COSSUM; + SINSUM2 = SINSUM*SINSUM; + + %! Add up energy and force contributions + + KEPREF = KECONST*PREFACTOR; + for I = 1:Nr_atoms + COULOMBV(I) = COULOMBV(I) + KEPREF*(COSLIST(I)*COSSUM + SINLIST(I)*SINSUM); + FORCE = KEPREF * DELTAQ(I)*(SINLIST(I)*COSSUM - COSLIST(I)*SINSUM); + FCOUL(1,I) = FCOUL(1,I) + FORCE*K(1); + FCOUL(2,I) = FCOUL(2,I) + FORCE*K(2); + FCOUL(3,I) = FCOUL(3,I) + FORCE*K(3); + end + + KEPREF = KEPREF * (COSSUM2 + SINSUM2); + + end + end + end +end + +%! Point self energy +CORRFACT = 2*KECONST*CALPHA/SQRTPI; +COULOMBV = COULOMBV - CORRFACT*DELTAQ; + diff --git a/proxies/matlab/Forces.m b/proxies/matlab/Forces.m new file mode 100644 index 00000000..d595c873 --- /dev/null +++ b/proxies/matlab/Forces.m @@ -0,0 +1,109 @@ +function [Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,U,q,Rx,Ry,Rz,Nats,H_INDEX_START,H_INDEX_END) + +HDIM = max(size(H0)); +Fcoul = zeros(3,Nats); +for i = 1:Nats + Fcoul(1,i) = -q(i)*q(:)'*dCx(:,i); + Fcoul(2,i) = -q(i)*q(:)'*dCy(:,i); + Fcoul(3,i) = -q(i)*q(:)'*dCz(:,i); +end + +Fband0 = zeros(3,Nats); +for i = 1:Nats % Slater-Koster Force SKForce from Tr[D*dH0/dR] + I_A = H_INDEX_START(i); + I_B = H_INDEX_END(i); + Xtmp = dHx(I_A:I_B,:)*D(:,I_A:I_B); + Ytmp = dHy(I_A:I_B,:)*D(:,I_A:I_B); + Ztmp = dHz(I_A:I_B,:)*D(:,I_A:I_B); + Fband0(1,i) = -2*2*trace(Xtmp); + Fband0(2,i) = -2*2*trace(Ytmp); + Fband0(3,i) = -2*2*trace(Ztmp); +end + +FSdipole = zeros(3,Nats); +for k = 1:Nats % Slater-Koster Force SKForce from Tr[D*dH0/dR] + k_a = H_INDEX_START(k); + k_b = H_INDEX_END(k); + d_Sx = zeros(HDIM); + d_Sx(:,k_a:k_b) = dSx(:,k_a:k_b); d_Sx(k_a:k_b,:) = dSx(:,k_a:k_b)'; + d_Sy = zeros(HDIM); + d_Sy(:,k_a:k_b) = dSy(:,k_a:k_b); d_Sy(k_a:k_b,:) = dSy(:,k_a:k_b)'; + d_Sz = zeros(HDIM); + d_Sz(:,k_a:k_b) = dSz(:,k_a:k_b); d_Sz(k_a:k_b,:) = dSz(:,k_a:k_b)'; + + dqi_dRkX = zeros(Nats,1); dqi_dRkY = zeros(Nats,1); dqi_dRkZ = zeros(Nats,1); + for i = 1:Nats + if i == k + dqi_dRkX(i) = -2*trace(D(k_a:k_b,:)*dSx(:,k_a:k_b)); + dqi_dRkY(i) = -2*trace(D(k_a:k_b,:)*dSy(:,k_a:k_b)); + dqi_dRkZ(i) = -2*trace(D(k_a:k_b,:)*dSz(:,k_a:k_b)); + else + i_a = H_INDEX_START(i); i_b = H_INDEX_END(i); + dqi_dRkX(i) = -2*trace(dSx(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); + dqi_dRkY(i) = -2*trace(dSy(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); + dqi_dRkZ(i) = -2*trace(dSz(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); + end + FSdipole(1,k) = FSdipole(1,k) - dqi_dRkX(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); + FSdipole(2,k) = FSdipole(2,k) - dqi_dRkY(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); + FSdipole(3,k) = FSdipole(3,k) - dqi_dRkZ(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); + end + if k == 1 + dqK = dqi_dRkX; + dQi_dRkx = dqK(:) + end +end + +Fdipole = zeros(3,Nats); +for i = 1:Nats + Fdipole(1,i) = q(i)*Efield(1); % Forces from External field-dipole interaction + Fdipole(2,i) = q(i)*Efield(2); % Forces from External field-dipole interaction + Fdipole(3,i) = q(i)*Efield(3); % Forces from External field-dipole interaction +end + +Z = S^(-1/2); +SIHD = 2*2*Z*Z'*H*D; % Pulay Force FPUL from 2Tr[ZZ'HD*dS/dR] +FPulay = zeros(3,Nats); +for i = 1:Nats + I_A = H_INDEX_START(i); + I_B = H_INDEX_END(i); + Xtmp = dSx(I_A:I_B,:)*SIHD(:,I_A:I_B); + Ytmp = dSy(I_A:I_B,:)*SIHD(:,I_A:I_B); + Ztmp = dSz(I_A:I_B,:)*SIHD(:,I_A:I_B); + FPulay(1,i) = trace(Xtmp); + FPulay(2,i) = trace(Ytmp); + FPulay(3,i) = trace(Ztmp); +end + +CoulPot = C*q; % Factor of 2 or 1/2 or +/- +FScoul = zeros(3,Nats); % Coulomb force FSCOUL from nonorthogonality +dDSX = zeros(HDIM,1); +dDSY = zeros(HDIM,1); +dDSZ = zeros(HDIM,1); +for Ia = 1:Nats % Derivatives Ra + Ia_A = H_INDEX_START(Ia); + Ia_B = H_INDEX_END(Ia); + for iq = 1:HDIM + dDSX(iq) = D(iq,Ia_A:Ia_B)*dSx(Ia_A:Ia_B,iq); + dDSY(iq) = D(iq,Ia_A:Ia_B)*dSy(Ia_A:Ia_B,iq); + dDSZ(iq) = D(iq,Ia_A:Ia_B)*dSz(Ia_A:Ia_B,iq); + end + for iq = Ia_A:Ia_B + dDSX(iq) = dDSX(iq) + D(iq,:)*dSx(iq,:)'; + dDSY(iq) = dDSY(iq) + D(iq,:)*dSy(iq,:)'; + dDSZ(iq) = dDSZ(iq) + D(iq,:)*dSz(iq,:)'; + end + for j = 1:Nats % Get the Mulliken charges for all atoms + j_a = H_INDEX_START(j); + j_b = H_INDEX_END(j); + dQLxdR = sum(dDSX(j_a:j_b)); % Derivative with respect to Ia of charge on atom j + dQLydR = sum(dDSY(j_a:j_b)); + dQLzdR = sum(dDSZ(j_a:j_b)); + FScoul(1,Ia) = FScoul(1,Ia) - dQLxdR*(U(j)*q(j) + CoulPot(j)); + FScoul(2,Ia) = FScoul(2,Ia) - dQLydR*(U(j)*q(j) + CoulPot(j)); + FScoul(3,Ia) = FScoul(3,Ia) - dQLzdR*(U(j)*q(j) + CoulPot(j)); + end + +end +FScoul = 2*FScoul; + +Ftot = Fband0 + Fcoul + Fdipole + FPulay + FScoul + FSdipole; % Collected total force diff --git a/proxies/matlab/Forces_save_00.m b/proxies/matlab/Forces_save_00.m new file mode 100644 index 00000000..812f56dd --- /dev/null +++ b/proxies/matlab/Forces_save_00.m @@ -0,0 +1,108 @@ +function [Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,U,q,Rx,Ry,Rz,Nats,H_INDEX_START,H_INDEX_END) + +HDIM = max(size(H0)); +Fcoul = zeros(3,Nats); +for i = 1:Nats + Fcoul(1,i) = -q(i)*q(:)'*dCx(:,i); + Fcoul(2,i) = -q(i)*q(:)'*dCy(:,i); + Fcoul(3,i) = -q(i)*q(:)'*dCz(:,i); +end + +Fband0 = zeros(3,Nats); +for i = 1:Nats % Slater-Koster Force SKForce from Tr[D*dH0/dR] + I_A = H_INDEX_START(i); + I_B = H_INDEX_END(i); + Xtmp = dHx(I_A:I_B,:)*D(:,I_A:I_B); + Ytmp = dHy(I_A:I_B,:)*D(:,I_A:I_B); + Ztmp = dHz(I_A:I_B,:)*D(:,I_A:I_B); + Fband0(1,i) = -2*2*trace(Xtmp); + Fband0(2,i) = -2*2*trace(Ytmp); + Fband0(3,i) = -2*2*trace(Ztmp); +end + +FSdipole = zeros(3,Nats); +for k = 1:Nats % Slater-Koster Force SKForce from Tr[D*dH0/dR] + k_a = H_INDEX_START(k); + k_b = H_INDEX_END(k); + d_Sx = zeros(HDIM); + d_Sx(:,k_a:k_b) = dSx(:,k_a:k_b); d_Sx(k_a:k_b,:) = dSx(:,k_a:k_b)'; + d_Sy = zeros(HDIM); + d_Sy(:,k_a:k_b) = dSy(:,k_a:k_b); d_Sy(k_a:k_b,:) = dSy(:,k_a:k_b)'; + d_Sz = zeros(HDIM); + d_Sz(:,k_a:k_b) = dSz(:,k_a:k_b); d_Sz(k_a:k_b,:) = dSz(:,k_a:k_b)'; + + dqi_dRkX = zeros(Nats,1); dqi_dRkY = zeros(Nats,1); dqi_dRkZ = zeros(Nats,1); + for i = 1:Nats + if i == k + dqi_dRkX(i) = 2*trace(D(k_a:k_b,:)*dSx(:,k_a:k_b)); + dqi_dRkY(i) = 2*trace(D(k_a:k_b,:)*dSy(:,k_a:k_b)); + dqi_dRkZ(i) = 2*trace(D(k_a:k_b,:)*dSz(:,k_a:k_b)); + else + i_a = H_INDEX_START(i); i_b = H_INDEX_END(i); + dqi_dRkX(i) = 2*trace(dSx(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); + dqi_dRkY(i) = 2*trace(dSy(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); + dqi_dRkZ(i) = 2*trace(dSz(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); + end + FSdipole(1,k) = FSdipole(1,k) - dqi_dRkX(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); + FSdipole(2,k) = FSdipole(2,k) - dqi_dRkY(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); + FSdipole(3,k) = FSdipole(3,k) - dqi_dRkZ(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); + end + if k == 1 + check = dqi_dRkX(1:10)' + end +end + +Fdipole = zeros(3,Nats); +for i = 1:Nats + Fdipole(1,i) = q(i)*Efield(1); % Forces from External field-dipole interaction + Fdipole(2,i) = q(i)*Efield(2); % Forces from External field-dipole interaction + Fdipole(3,i) = q(i)*Efield(3); % Forces from External field-dipole interaction +end + +Z = S^(-1/2); +SIHD = 2*2*Z*Z'*H*D; % Pulay Force FPUL from 2Tr[ZZ'HD*dS/dR] +FPulay = zeros(3,Nats); +for i = 1:Nats + I_A = H_INDEX_START(i); + I_B = H_INDEX_END(i); + Xtmp = dSx(I_A:I_B,:)*SIHD(:,I_A:I_B); + Ytmp = dSy(I_A:I_B,:)*SIHD(:,I_A:I_B); + Ztmp = dSz(I_A:I_B,:)*SIHD(:,I_A:I_B); + FPulay(1,i) = trace(Xtmp); + FPulay(2,i) = trace(Ytmp); + FPulay(3,i) = trace(Ztmp); +end + +CoulPot = C*q; % Factor of 2 or 1/2 or +/- +FScoul = zeros(3,Nats); % Coulomb force FSCOUL from nonorthogonality +dDSX = zeros(HDIM,1); +dDSY = zeros(HDIM,1); +dDSZ = zeros(HDIM,1); +for Ia = 1:Nats % Derivatives Ra + Ia_A = H_INDEX_START(Ia); + Ia_B = H_INDEX_END(Ia); + for iq = 1:HDIM + dDSX(iq) = D(iq,Ia_A:Ia_B)*dSx(Ia_A:Ia_B,iq); + dDSY(iq) = D(iq,Ia_A:Ia_B)*dSy(Ia_A:Ia_B,iq); + dDSZ(iq) = D(iq,Ia_A:Ia_B)*dSz(Ia_A:Ia_B,iq); + end + for iq = Ia_A:Ia_B + dDSX(iq) = dDSX(iq) + D(iq,:)*dSx(iq,:)'; + dDSY(iq) = dDSY(iq) + D(iq,:)*dSy(iq,:)'; + dDSZ(iq) = dDSZ(iq) + D(iq,:)*dSz(iq,:)'; + end + for j = 1:Nats % Get the Mulliken charges for all atoms + j_a = H_INDEX_START(j); + j_b = H_INDEX_END(j); + dQLxdR = sum(dDSX(j_a:j_b)); % Derivative with respect to Ia of charge on atom j + dQLydR = sum(dDSY(j_a:j_b)); + dQLzdR = sum(dDSZ(j_a:j_b)); + FScoul(1,Ia) = FScoul(1,Ia) - dQLxdR*(U(j)*q(j) + CoulPot(j)); + FScoul(2,Ia) = FScoul(2,Ia) - dQLydR*(U(j)*q(j) + CoulPot(j)); + FScoul(3,Ia) = FScoul(3,Ia) - dQLzdR*(U(j)*q(j) + CoulPot(j)); + end + +end +FScoul = 2*FScoul; + +Ftot = Fband0 + Fcoul + Fdipole + FPulay + FScoul + FSdipole; % Collected total force diff --git a/proxies/matlab/Get_q.m b/proxies/matlab/Get_q.m new file mode 100644 index 00000000..852e3dba --- /dev/null +++ b/proxies/matlab/Get_q.m @@ -0,0 +1,9 @@ +function [q] = Get_q(D,S,H_Index_Start,H_Index_End,Znuc,Nats) + +Z = S^(-1/2); +DS = 2*diag(D*S); +q = zeros(Nats,1); +for i = 1:Nats + q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); +end + diff --git a/proxies/matlab/GetdC.m b/proxies/matlab/GetdC.m new file mode 100644 index 00000000..c068cc1d --- /dev/null +++ b/proxies/matlab/GetdC.m @@ -0,0 +1,86 @@ +function [dCx,dCy,dCz] = GetdC(Nr_atoms,dh,Coulomb_acc,Rcut,TIMERATIO,HDIM,Hubbard_U,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox) + + dq_J = zeros(1,Nr_atoms); Nats = Nr_atoms; + dCx = zeros(Nr_atoms); dCy = zeros(Nr_atoms); dCz = zeros(Nr_atoms); + Coulomb_Pot_k = 0; + RX0 = RX; RY0 = RY; RZ0 = RZ; + + for J = 1:Nr_atoms + + dq_J = 0*dq_J; + dq_J(J) = 1; + + RX(J) = RX0(J) + dh; + [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); + for I = 1:Nr_atoms + [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); + end + [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); + Coulomb_Pot_p = Coulomb_Pot_Real + Coulomb_Pot_k; + RX = RX0; + + RX(J) = RX0(J) - dh; + [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); + for I = 1:Nr_atoms + [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); + end + [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); + Coulomb_Pot_m = Coulomb_Pot_Real + Coulomb_Pot_k; + RX = RX0; + + dCx(:,J) = (Coulomb_Pot_p - Coulomb_Pot_m)/(2*dh); + +%%%% +%RX0 = RX; +%RX(J) = RX0(J) + dh; +%Cp = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nr_atoms,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); +%RX = RX0; +% +%RX(J) = RX0(J) - dh; +%Cm = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nr_atoms,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); +%RX = RX0; +%dC_x = (Cp-Cm)/(2*dh); +%%%% + + RY = RY0; RY(J) = RY0(J) + dh; + [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); + for I = 1:Nr_atoms + [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); + end + [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); + Coulomb_Pot_p = Coulomb_Pot_Real + Coulomb_Pot_k; + RY = RY0; + + RY(J) = RY0(J) - dh; + [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); + for I = 1:Nr_atoms + [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); + end + [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); + Coulomb_Pot_m = Coulomb_Pot_Real + Coulomb_Pot_k; + RY = RY0; + + dCy(:,J) = (Coulomb_Pot_p - Coulomb_Pot_m)/(2*dh); + + RZ(J) = RZ0(J) + dh; + [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); + for I = 1:Nr_atoms + [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); + end + [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); + Coulomb_Pot_p = Coulomb_Pot_Real + Coulomb_Pot_k; + RZ = RZ0; + + RZ(J) = RZ0(J) - dh; + [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); + for I = 1:Nr_atoms + [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); + end + [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); + Coulomb_Pot_m = Coulomb_Pot_Real + Coulomb_Pot_k; + RZ = RZ0; + + dCz(:,J) = (Coulomb_Pot_p - Coulomb_Pot_m)/(2*dh); + + dq_J(J) = 0; + end diff --git a/proxies/matlab/GetdH.m b/proxies/matlab/GetdH.m new file mode 100644 index 00000000..c86abcd6 --- /dev/null +++ b/proxies/matlab/GetdH.m @@ -0,0 +1,38 @@ +function [dH0x,dH0y,dH0z] = GetdH(Nr_atoms,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox,nrnnlist,nnRx,nnRy,nnRz,nnType) + +dH0x = zeros(HDIM,HDIM); dH0y = zeros(HDIM,HDIM); dH0z = zeros(HDIM,HDIM); +for I = 1:Nr_atoms + Type_pair(1) = Element_Type(I); + Rax_p = [RX(I)+dx,RY(I),RZ(I)]; Rax_m = [RX(I)-dx,RY(I),RZ(I)]; + Ray_p = [RX(I),RY(I)+dx,RZ(I)]; Ray_m = [RX(I),RY(I)-dx,RZ(I)]; + Raz_p = [RX(I),RY(I),RZ(I)+dx]; Raz_m = [RX(I),RY(I),RZ(I)-dx]; + IDim = H_INDEX_END(I)-H_INDEX_START(I)+1; + for J = 1:nrnnlist(I) + IJ = nnType(I,J); + if IJ ~= I + Type_pair(2) = Element_Type(IJ); + Rb = [nnRx(I,J),nnRy(I,J),nnRz(I,J)]; + JDim = H_INDEX_END(IJ)-H_INDEX_START(IJ)+1; + + [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,Es,Ep,U] = LoadBondIntegralParameters_H(Type_pair); % Used in BondIntegral(dR,fxx_xx) + diagonal(1:2) = [Es,Ep]; + dh0x_p = Slater_Koster_Pair(Rax_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + dh0x_m = Slater_Koster_Pair(Rax_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + dh0y_p = Slater_Koster_Pair(Ray_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + dh0y_m = Slater_Koster_Pair(Ray_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + dh0z_p = Slater_Koster_Pair(Raz_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + dh0z_m = Slater_Koster_Pair(Raz_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + + for II = 1:IDim + II_H = H_INDEX_START(I) + II - 1; + for JJ = 1:JDim + JJ_H = H_INDEX_START(IJ) + JJ - 1; + dH0x(II_H,JJ_H) = dH0x(II_H,JJ_H) + (dh0x_p(II,JJ)-dh0x_m(II,JJ))/(2*dx); + dH0y(II_H,JJ_H) = dH0y(II_H,JJ_H) + (dh0y_p(II,JJ)-dh0y_m(II,JJ))/(2*dx); + dH0z(II_H,JJ_H) = dH0z(II_H,JJ_H) + (dh0z_p(II,JJ)-dh0z_m(II,JJ))/(2*dx); + end + end + + end + end +end diff --git a/proxies/matlab/GetdS.m b/proxies/matlab/GetdS.m new file mode 100644 index 00000000..7564e558 --- /dev/null +++ b/proxies/matlab/GetdS.m @@ -0,0 +1,37 @@ +function [dSx,dSy,dSz] = GetdS(Nr_atoms,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox,nrnnlist,nnRx,nnRy,nnRz,nnType) + +dSx = zeros(HDIM,HDIM); dSy = zeros(HDIM,HDIM); dSz = zeros(HDIM,HDIM); +for I = 1:Nr_atoms + Type_pair(1) = Element_Type(I); + Rax_p = [RX(I)+dx,RY(I),RZ(I)]; Rax_m = [RX(I)-dx,RY(I),RZ(I)]; + Ray_p = [RX(I),RY(I)+dx,RZ(I)]; Ray_m = [RX(I),RY(I)-dx,RZ(I)]; + Raz_p = [RX(I),RY(I),RZ(I)+dx]; Raz_m = [RX(I),RY(I),RZ(I)-dx]; + IDim = H_INDEX_END(I)-H_INDEX_START(I)+1; + for J = 1:nrnnlist(I) + IJ = nnType(I,J) ; + if IJ ~= I + Type_pair(2) = Element_Type(IJ); + Rb = [nnRx(I,J),nnRy(I,J),nnRz(I,J)]; + JDim = H_INDEX_END(IJ)-H_INDEX_START(IJ)+1; + diagonal(1:2) = [1,1]; + [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi] = LoadBondIntegralParameters_S(Type_pair); + ds0x_p = Slater_Koster_Pair(Rax_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + ds0x_m = Slater_Koster_Pair(Rax_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + ds0y_p = Slater_Koster_Pair(Ray_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + ds0y_m = Slater_Koster_Pair(Ray_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + ds0z_p = Slater_Koster_Pair(Raz_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + ds0z_m = Slater_Koster_Pair(Raz_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + for II = 1:IDim + II_S = H_INDEX_START(I) + II - 1; + for JJ = 1:JDim + JJ_S = H_INDEX_START(IJ) + JJ - 1; + dSx(II_S,JJ_S) = dSx(II_S,JJ_S) + (ds0x_p(II,JJ)-ds0x_m(II,JJ))/(2*dx); + dSy(II_S,JJ_S) = dSy(II_S,JJ_S) + (ds0y_p(II,JJ)-ds0y_m(II,JJ))/(2*dx); + dSz(II_S,JJ_S) = dSz(II_S,JJ_S) + (ds0z_p(II,JJ)-ds0z_m(II,JJ))/(2*dx); + end + end + + end + end +end + diff --git a/proxies/matlab/H0_and_S.m b/proxies/matlab/H0_and_S.m new file mode 100644 index 00000000..0eb19a4d --- /dev/null +++ b/proxies/matlab/H0_and_S.m @@ -0,0 +1,95 @@ +function [H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nr_atoms,nrnnlist,nnRx,nnRy,nnRz,nnType) + +%TYPE = A.textdata(:); +%RX = A.data(:,1); RY = A.data(:,2); RZ = A.data(:,3); +CNT = 1; +for i = 1:Nr_atoms + if char(TYPE(i)) == 'H' + H_INDEX_START(i) = CNT; + NrOrb(i) = 1; % a single s orbital + CNT = CNT+1; + H_INDEX_END(i) = CNT-1; + Znuc(i) = 1; % For hydrogen + Mnuc(i) = 1.0079; + else + H_INDEX_START(i) = CNT; + NrOrb(i) = 4; % one 1 + three p orbitals + CNT = CNT+4; + H_INDEX_END(i) = CNT-1; + if char(TYPE(i)) == 'O' + Znuc(i) = 6; % For oxygen + Mnuc(i) = 15.9994; + end + if char(TYPE(i)) == 'C' + Znuc(i) = 4; % For oxygen + Mnuc(i) = 12.01; + end + if char(TYPE(i)) == 'N' + Znuc(i) = 5; % For oxygen + Mnuc(i) = 14.0067; + end + end + Element_Type(i) = char(TYPE(i)); +end +HDIM = CNT-1; + +H0 = zeros(HDIM,HDIM); % Charge independent H0! +for I = 1:Nr_atoms + + Type_pair(1) = Element_Type(I); + Ra = [RX(I),RY(I),RZ(I)]; + IDim = H_INDEX_END(I)-H_INDEX_START(I)+1; + for J = 1:nrnnlist(I) + Type_pair(2) = Element_Type(nnType(I,J)); + Rb = [nnRx(I,J),nnRy(I,J),nnRz(I,J)]; + JDim = H_INDEX_END(nnType(I,J))-H_INDEX_START(nnType(I,J))+1; +% Hamiltonian block for a-b atom pair + [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,Es,Ep,U] = LoadBondIntegralParameters_H(Type_pair); % Used in BondIntegral(dR,fxx_xx); + if I == nnType(I,J) + Hubbard_U(I) = U; + end + diagonal(1:2) = [Es,Ep]; + h0 = Slater_Koster_Pair(Ra,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + for II = 1:IDim + II_H = H_INDEX_START(I) + II - 1; + for JJ = 1:JDim + JJ_H = H_INDEX_START(nnType(I,J)) + JJ - 1; + H0(II_H,JJ_H) = h0(II,JJ) ; + H0(JJ_H,II_H) = h0(II,JJ); + end + end + end + +end +H0 = 0.5*(H0+H0'); + +S = zeros(HDIM,HDIM); +for I = 1:Nr_atoms + Type_pair(1) = Element_Type(I); + Ra = [RX(I),RY(I),RZ(I)]; + IDim = H_INDEX_END(I)-H_INDEX_START(I)+1; + + for J = 1:nrnnlist(I) + Type_pair(2) = Element_Type(nnType(I,J)); + Rb = [nnRx(I,J),nnRy(I,J),nnRz(I,J)]; + JDim = H_INDEX_END(nnType(I,J))-H_INDEX_START(nnType(I,J))+1; +% Overlap block for a-b atom pair + [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi] = LoadBondIntegralParameters_S(Type_pair); + diagonal(1:2) = [1,1]; + s0 = Slater_Koster_Pair(Ra,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); + for II = 1:IDim + II_S = H_INDEX_START(I) + II - 1; + for JJ = 1:JDim + JJ_S = H_INDEX_START(nnType(I,J)) + JJ - 1; + S(II_S,JJ_S) = s0(II,JJ); + S(JJ_S,II_S) = s0(II,JJ); + end + end + end +end +S = 0.5*(S+S'); + +D0 = AtomicDensityMatrix(Nr_atoms,H_INDEX_START,H_INDEX_END,HDIM,Znuc); +D0 = D0/2; + + diff --git a/proxies/matlab/LoadBondIntegralParameters_H.m b/proxies/matlab/LoadBondIntegralParameters_H.m new file mode 100644 index 00000000..809ac2bc --- /dev/null +++ b/proxies/matlab/LoadBondIntegralParameters_H.m @@ -0,0 +1,261 @@ +function [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,Es,Ep,U] = LoadBondIntegralParameters_H(TYPE_PAIR) + +TYPE_a = TYPE_PAIR(1); +TYPE_b = TYPE_PAIR(2); + +if TYPE_a == 'H' + if TYPE_b == 'H' +% fss_sigma(1:8) = [-9.340000 -1.145903 -0.391777 0.000000 0.000000 0.750000 3.500000 4.000000]; + fss_sigma(1:8) = [-9.400000D0,-1.145903D0,-0.391777D0,0.000D0,0.000D0,0.750D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fps_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; +% Es = -6.35; % E_s +% Ep = 0; +% U = 12.85; % U for H + Es = -6.4835; % E_s + Ep = 0.0; + U = 12.054683; % U for H + elseif TYPE_b == 'C' +% fss_sigma(1:8) = [-9.072577 -1.393093 -0.430611 0.000000 0.000000 1.100000 3.500000 4.000000]; +% fsp_sigma(1:8) = [8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000]; +% fps_sigma(1:8) = [8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000]; + + fss_sigma(1:8) = [-9.235812D0,-1.372683D0,-0.408433D0,0.0000D0,0.0000D0,1.1000D0,3.5000D0,4.0000D0]; + fsp_sigma(1:8) = [8.104851D0,-0.936099D0,-0.626219D0,0.0000D0,0.0000D0,1.1000D0,3.5000D0,4.0000D0]; + fps_sigma(1:8) = [8.104851D0,-0.936099D0,-0.626219D0,0.0000D0,0.0000D0,1.1000D0,3.5000D0,4.0000D0]; + + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'O' +% fss_sigma(1:8) = [-12.230931 -1.808632 -0.421164 0.000000 0.000000 1.000000 3.500000 4.000000]; +% fsp_sigma(1:8) = [9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000]; +% fps_sigma(1:8) = [9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000]; + + fss_sigma(1:8) = [-12.189103D0,-1.800097D0,-0.325933D0,0.0000D0,0.0000D0,1.0000D0,3.5000D0,4.0000D0]; + fsp_sigma(1:8) = [9.518733D0,-1.333235D0,-0.393710D0,0.0000D0,0.0000D0,1.0000D0,3.5000D0,4.0000D0]; + fps_sigma(1:8) = [9.518733D0,-1.333235D0,-0.393710D0,0.0000D0,0.0000D0,1.0000D0,3.5000D0,4.0000D0]; + + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'N' +% fss_sigma(1:8) = [-12.095890 -1.519057 -0.277247 0.000000 0.000000 1.000000 3.500000 4.000000]; +% fsp_sigma(1:8) = [9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000]; +% fps_sigma(1:8) = [9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000]; + + fss_sigma(1:8) = [-12.631030D0,-1.585597D0,-0.250969D0,0.000D0,0.0000D0,1.000D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [9.837852D0,-1.234850D0,-0.324283D0,0.000D0,0.0000D0,1.000D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [9.837852D0,-1.234850D0,-0.324283D0,0.000D0,0.0000D0,1.000D0,3.500D0,4.000D0]; + + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + Es = 0; Ep = 0; U = 0; + end +elseif TYPE_a == 'C' + if TYPE_b == 'H' +% fss_sigma(1:8) = [-9.072577 -1.393093 -0.430611 0.000000 0.000000 1.100000 3.500000 4.000000]; +% fsp_sigma(1:8) = [8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000]; +% fps_sigma(1:8) = [8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000]; + + fss_sigma(1:8) = [-9.235812D0,-1.372683D0,-0.408433D0,0.000D0,0.000D0,1.100D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [8.104851D0,-0.936099D0,-0.626219D0,0.000D0,0.000D0,1.100D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [8.104851D0,-0.936099D0,-0.626219D0,0.000D0,0.000D0,1.100D0,3.500D0,4.000D0]; + + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'C' +% fss_sigma(1:8) = [-9.404207 -1.363297 -0.507128 0.000000 0.000000 1.400000 3.500000 4.000000]; +% fsp_sigma(1:8) = [8.662429 -1.047410 -0.661999 0.000000 0.000000 1.400000 3.500000 4.000000]; +% fps_sigma(1:8) = [8.662429 -1.047410 -0.661999 0.000000 0.000000 1.400000 3.500000 4.000000]; +% fpp_sigma(1:8) = [6.811512 -0.552299 -0.776890 0.000000 0.000000 1.400000 3.500000 4.000000]; +% fpp_pi(1:8) = [-3.550127 -1.925572 -0.132715 0.000000 0.000000 1.400000 3.500000 4.000000]; + + fss_sigma(1:8) = [-9.197237D0,-1.607050D0,-0.535057D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [8.562436D0,-0.980182D0,-0.646929D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [8.562436D0,-0.980182D0,-0.646929D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; + fpp_sigma(1:8) = [6.614756D0,-0.528591D0,-0.951460D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; + fpp_pi(1:8) = [-3.678302D0,-1.881668D0,-0.255951D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; + +% Es = -13.75; % E_s +% Ep = -5.28; % E_p +% U = 10.000; % U for C + + Es = -13.7199; % E_s + Ep = -5.2541; % E_p + U = 14.240811; % U for C + + elseif TYPE_b == 'O' +% fss_sigma(1:8) = [-14.369472 -2.077439 -0.875471 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fsp_sigma(1:8) = [9.576296 -1.156217 -0.494803 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fps_sigma(1:8) = [14.037374 -1.192632 -0.654572 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_sigma(1:8) = [9.331152 -0.718120 -0.822100 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_pi(1:8) = [-5.334367 -2.263939 -0.204910 0.000000 0.000000 1.200000 3.500000 4.000000]; + + fss_sigma(1:8) = [-13.986685D0,-1.931973D0,-0.432011D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [10.718738D0,-1.389459D0,-0.182128D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [14.194791D0,-1.371650D0,-0.248285D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fpp_sigma(1:8) = [8.622023D0,-0.557144D0,-0.938551D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fpp_pi(1:8) = [-5.327397D0,-2.190160D0,-0.089303D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'N' +% fss_sigma(1:8) = [-7.010061 -1.730597 -0.575559 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fsp_sigma(1:8) = [7.543283 -1.293768 -0.624363 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fps_sigma(1:8) = [9.090970 -1.494255 -0.616711 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fpp_sigma(1:8) = [6.892240 -0.931920 -0.769164 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fpp_pi(1:8) = [-2.903346 -2.149349 -0.253006 0.000000 0.000000 1.500000 3.500000 4.000000]; + + fss_sigma(1:8) = [-7.409712D0,-1.940942D0,-0.219762D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [7.501761D0,-1.211169D0,-0.373905D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [8.697591D0,-1.267240D0,-0.178484D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + fpp_sigma(1:8) = [6.954600D0,-1.188456D0,-0.808043D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + fpp_pi(1:8) = [-2.921605D0,-2.203548D0,-0.409424D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + + Es = 0; Ep = 0; U = 0; + end +elseif TYPE_a == 'O' + if TYPE_b == 'H' +% fss_sigma(1:8) = [-12.230931 -1.808632 -0.421164 0.000000 0.000000 1.000000 3.500000 4.000000]; +% fsp_sigma(1:8) = [9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000]; +% fps_sigma(1:8) = [9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000]; + + fss_sigma(1:8) = [-12.189103D0,-1.800097D0,-0.325933D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [9.518733D0,-1.333235D0,-0.393710D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [9.518733D0,-1.333235D0,-0.393710D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; + + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'C' +% fss_sigma(1:8) = [-14.369472 -2.077439 -0.875471 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fsp_sigma(1:8) = [14.037374 -1.192632 -0.654572 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fps_sigma(1:8) = [9.576296 -1.156217 -0.494803 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_sigma(1:8) = [9.331152 -0.718120 -0.822100 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_pi(1:8) = [-5.334367 -2.263939 -0.204910 0.000000 0.000000 1.200000 3.500000 4.000000]; + + fss_sigma(1:8) = [-13.986685D0,-1.931973D0,-0.432011D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [14.194791D0,-1.371650D0,-0.248285D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [10.718738D0,-1.389459D0,-0.182128D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fpp_sigma(1:8) = [8.622023D0,-0.557144D0,-0.938551D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fpp_pi(1:8) = [-5.327397D0,-2.190160D0,-0.089303D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'O' +% fss_sigma(1:8) = [-12.737687 -1.851608 -0.666621 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fsp_sigma(1:8) = [13.683050 -1.684554 -0.468349 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fps_sigma(1:8) = [13.683050 -1.684554 -0.468349 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_sigma(1:8) = [9.460772 -1.211748 -0.581016 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_pi(1:8) = [-4.494595 -2.709223 -0.284124 0.000000 0.000000 1.200000 3.500000 4.000000]; + + fss_sigma(1:8) = [-14.387756D0,-2.244278D0,-1.645605D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + fsp_sigma(1:8) = [13.699127D0,-1.602358D0,-0.114474D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + fps_sigma(1:8) = [13.699127D0,-1.602358D0,-0.114474D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + fpp_sigma(1:8) = [9.235469D0,-1.131474D0,-0.924535D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + fpp_pi(1:8) = [ -4.526526D0,-2.487174D0,-0.201464D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + +% Es = -23.96; % E_s +% Ep = -9.02; % E_p +% U = 12.15; % U for O + + Es = -23.9377; % E_s + Ep = -9.0035; % E_p + U = 11.8761410; % U for O + + elseif TYPE_b == 'N' +% fss_sigma(1:8) = [-11.430028 -2.257346 -1.152844 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fsp_sigma(1:8) = [12.143744 -0.822913 -0.676127 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fps_sigma(1:8) = [11.597479 -1.382001 -0.765170 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_sigma(1:8) = [9.465191 -1.082032 -0.769214 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_pi(1:8) = [-4.676789 -2.171480 -0.288002 0.000000 0.000000 1.200000 3.500000 4.000000]; + + fss_sigma(1:8) = [-9.360078D0,-1.293118D0,-0.379415D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [10.723048D0,-0.454312D0,-0.916563D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [10.309052D0,-0.981652D0,-0.828497D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fpp_sigma(1:8) = [9.259131D0,-0.734112D0,-1.023762D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + fpp_pi(1:8) = [-4.532623D0,-1.999631D0,-0.286275D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; + + Es = 0; Ep = 0; U = 0; + end +elseif TYPE_a == 'N' + if TYPE_b == 'H' +% fss_sigma(1:8) = [-12.095890 -1.519057 -0.277247 0.000000 0.000000 1.000000 3.500000 4.000000]; +% fsp_sigma(1:8) = [9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000]; +% fps_sigma(1:8) = [9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000]; + + fss_sigma(1:8) = [-12.631030D0,-1.585597D0,-0.250969D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [9.837852D0,-1.234850D0,-0.324283D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [9.837852D0,-1.234850D0,-0.324283D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; + + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'C' +% fss_sigma(1:8) = [-7.010061 -1.730597 -0.575559 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fsp_sigma(1:8) = [9.090970 -1.494255 -0.616711 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fps_sigma(1:8) = [7.543283 -1.293768 -0.624363 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fpp_sigma(1:8) = [6.892240 -0.931920 -0.769164 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fpp_pi(1:8) = [-2.903346 -2.149349 -0.253006 0.000000 0.000000 1.500000 3.500000 4.000000]; + + fss_sigma(1:8) = [-7.409712D0,-1.940942D0,-0.219762D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + fsp_sigma(1:8) = [8.697591D0,-1.267240D0,-0.178484D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + fps_sigma(1:8) = [7.501761D0,-1.211169D0,-0.373905D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + fpp_sigma(1:8) = [6.954600D0,-1.188456D0,-0.808043D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + fpp_pi(1:8) = [-2.921605D0,-2.203548D0,-0.409424D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; + + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'O' +% fss_sigma(1:8) = [-11.430028 -2.257346 -1.152844 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fsp_sigma(1:8) = [11.597479 -1.382001 -0.765170 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fps_sigma(1:8) = [12.143744 -0.822913 -0.676127 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_sigma(1:8) = [9.465191 -1.082032 -0.769214 0.000000 0.000000 1.200000 3.500000 4.000000]; +% fpp_pi(1:8) = [-4.676789 -2.171480 -0.288002 0.000000 0.000000 1.200000 3.500000 4.000000]; + + fss_sigma(1:8) = [-9.360078D0,-1.293118D0,-0.379415D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + fsp_sigma(1:8) = [10.309052D0,-0.981652D0,-0.828497D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + fps_sigma(1:8) = [10.723048D0,-0.454312D0,-0.916563D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + fpp_sigma(1:8) = [9.259131D0,-0.734112D0,-1.023762D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + fpp_pi(1:8) = [-4.532623D0,-1.999631D0,-0.286275D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; + + Es = 0; Ep = 0; U = 0; + elseif TYPE_b == 'N' +% fss_sigma(1:8) = [-7.710330 -2.365312 -0.525527 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fsp_sigma(1:8) = [8.222314 -1.612118 -0.690081 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fps_sigma(1:8) = [8.222314 -1.612118 -0.690081 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fpp_sigma(1:8) = [7.178570 -1.176467 -0.571049 0.000000 0.000000 1.500000 3.500000 4.000000]; +% fpp_pi(1:8) = [-2.829344 -2.408049 -0.387709 0.000000 0.000000 1.500000 3.500000 4.000000]; + + fss_sigma(1:8) = [-7.165811D0,-2.348869D0,-0.541905D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; + fsp_sigma(1:8) = [8.212268D0,-1.499123D0,-0.526440D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; + fps_sigma(1:8) = [8.212268D0,-1.499123D0,-0.526440D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; + fpp_sigma(1:8) = [7.102331D0,-1.252366D0,-0.552533D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; + fpp_pi(1:8) = [-2.828938D0,-2.376886D0,-0.560898D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; + +% Es = -18.58; % E_s +% Ep = -7.09; % E_p +% U = 15.93; % U for N + + Es = -18.5565; + Ep = -7.0625; + U = 17.3729; + + end +else + Es = 0; Ep = 0; U = 0; + fss_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fss_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fsp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fps_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; +end + +% Maybe better to pre-calculate? +fss_sigma = ScaleTail(fss_sigma); +fsp_sigma = ScaleTail(fsp_sigma); +fps_sigma = ScaleTail(fps_sigma); +fpp_sigma = ScaleTail(fpp_sigma); +fpp_pi = ScaleTail(fpp_pi); diff --git a/proxies/matlab/LoadBondIntegralParameters_S.m b/proxies/matlab/LoadBondIntegralParameters_S.m new file mode 100644 index 00000000..34e57efb --- /dev/null +++ b/proxies/matlab/LoadBondIntegralParameters_S.m @@ -0,0 +1,123 @@ +function [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi] = LoadBondIntegralParameters_S(Type_pair) + +Type_a = Type_pair(1); +Type_b = Type_pair(2); + +if Type_a == 'H' + if Type_b == 'H' + fss_sigma(1:8) = [0.575007 -1.391261 -0.778831 0.080209 -0.017759 0.750000 3.500000 4.000000]; + fsp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fps_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + elseif Type_b == 'C' + fss_sigma(1:8) = [0.416003 -1.459596 -0.654874 0.009140 -0.012658 1.100000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + elseif Type_b == 'O' + fss_sigma(1:8) = [0.404725 -1.702546 -0.707938 0.074904 -0.039922 1.000000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + elseif Type_b == 'N' + fss_sigma(1:8) = [0.446693 -1.500463 -0.657448 0.065741 -0.037004 1.000000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + end +elseif Type_a == 'C' + if Type_b == 'H' + fss_sigma(1:8) = [0.416003 -1.459596 -0.654874 0.009140 -0.012658 1.100000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + elseif Type_b == 'C' + fss_sigma(1:8) = [0.346977 -1.519820 -0.570812 -0.013518 -0.015829 1.400000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.400467 -0.984048 -0.853949 0.157178 -0.073381 1.400000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.400467 -0.984048 -0.853949 0.157178 -0.073381 1.400000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.382417 0.102889 -2.786680 2.646356 -1.134320 1.400000 3.500000 4.000000]; + fpp_pi(1:8) = [0.214357 -1.948923 -0.578323 -0.034356 -0.007257 1.400000 3.500000 4.000000]; + elseif Type_b == 'O' + fss_sigma(1:8) = [0.375339 -1.547372 -0.642492 0.020614 -0.026699 1.200000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.373027 -0.776043 -1.019920 0.257539 -0.102838 1.200000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.458068 -1.035067 -0.937868 0.190562 -0.077841 1.200000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.322293 0.795473 -3.476601 2.589965 -0.897800 1.200000 3.500000 4.000000]; + fpp_pi(1:8) = [0.244570 -1.922717 -0.573671 -0.057280 -0.004108 1.200000 3.500000 4.000000]; + elseif Type_b == 'N' + fss_sigma(1:8) = [0.263438 -1.754525 -0.584215 -0.007801 -0.021729 1.500000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.326609 -1.197485 -0.807786 0.134891 -0.084373 1.500000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.337943 -1.335442 -0.769693 0.119373 -0.079493 1.500000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.350240 -0.467439 -1.849316 1.854403 -0.988471 1.500000 3.500000 4.000000]; + fpp_pi(1:8) = [0.158424 -2.114409 -0.582346 -0.051076 -0.006183 1.500000 3.500000 4.000000]; + end +elseif Type_a == 'O' + if Type_b == 'H' + fss_sigma(1:8) = [0.404725 -1.702546 -0.707938 0.074904 -0.039922 1.000000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + elseif Type_b == 'C' + fss_sigma(1:8) = [0.375339 -1.547372 -0.642492 0.020614 -0.026699 1.200000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.458068 -1.035067 -0.937868 0.190562 -0.077841 1.200000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.373027 -0.776043 -1.019920 0.257539 -0.102838 1.200000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.322293 0.795473 -3.476601 2.589965 -0.897800 1.200000 3.500000 4.000000]; + fpp_pi(1:8) = [0.244570 -1.922717 -0.573671 -0.057280 -0.004108 1.200000 3.500000 4.000000]; + elseif Type_b == 'O' + fss_sigma(1:8) = [0.296445 -1.911896 -0.663451 0.038054 -0.046608 1.200000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.362143 -1.285274 -0.939591 0.204641 -0.106438 1.200000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.362143 -1.285274 -0.939591 0.204641 -0.106438 1.200000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.312044 0.121814 -2.519352 1.681266 -0.644566 1.200000 3.500000 4.000000]; + fpp_pi(1:8) = [0.193010 -2.168462 -0.580629 -0.105104 0.004891 1.200000 3.500000 4.000000]; + elseif Type_b == 'N' + fss_sigma(1:8) = [0.340064 -1.703613 -0.622348 0.036738 -0.040158 1.200000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.420014 -1.107918 -0.905594 0.188424 -0.088365 1.200000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.370946 -1.040947 -0.931097 0.252441 -0.115450 1.200000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.314073 0.499050 -2.914288 2.067657 -0.738439 1.200000 3.500000 4.000000]; + fpp_pi(1:8) = [0.223937 -1.991867 -0.537630 -0.081270 -0.004130 1.200000 3.500000 4.000000]; + end +elseif Type_a == 'N' + if Type_b == 'H' + fss_sigma(1:8) = [0.446693 -1.500463 -0.657448 0.065741 -0.037004 1.000000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; + elseif Type_b == 'C' + fss_sigma(1:8) = [0.263438 -1.754525 -0.584215 -0.007801 -0.021729 1.500000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.337943 -1.335442 -0.769693 0.119373 -0.079493 1.500000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.326609 -1.197485 -0.807786 0.134891 -0.084373 1.500000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.350240 -0.467439 -1.849316 1.854403 -0.988471 1.500000 3.500000 4.000000]; + fpp_pi(1:8) = [0.158424 -2.114409 -0.582346 -0.051076 -0.006183 1.500000 3.500000 4.000000]; + elseif Type_b == 'O' + fss_sigma(1:8) = [0.340064 -1.703613 -0.622348 0.036738 -0.040158 1.200000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.370946 -1.040947 -0.931097 0.252441 -0.115450 1.200000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.420014 -1.107918 -0.905594 0.188424 -0.088365 1.200000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.314073 0.499050 -2.914288 2.067657 -0.738439 1.200000 3.500000 4.000000]; + fpp_pi(1:8) = [0.223937 -1.991867 -0.537630 -0.081270 -0.004130 1.200000 3.500000 4.000000]; + elseif Type_b == 'N' + fss_sigma(1:8) = [0.231654 -1.879002 -0.572765 -0.004579 -0.031106 1.500000 3.500000 4.000000]; + fsp_sigma(1:8) = [-0.305271 -1.385158 -0.751032 0.114531 -0.090839 1.500000 3.500000 4.000000]; + fps_sigma(1:8) = [-0.305271 -1.385158 -0.751032 0.114531 -0.090839 1.500000 3.500000 4.000000]; + fpp_sigma(1:8) = [-0.324668 -0.547805 -1.638658 1.495168 -0.827868 1.500000 3.500000 4.000000]; + fpp_pi(1:8) = [0.142909 -2.162036 -0.571942 -0.071640 -0.004682 1.500000 3.500000 4.000000]; + end +else + fss_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fsp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fps_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; + fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; +end + +% Maybe better to pre-calculate? +fss_sigma = ScaleTail(fss_sigma); +fsp_sigma = ScaleTail(fsp_sigma); +fps_sigma = ScaleTail(fps_sigma); +fpp_sigma = ScaleTail(fpp_sigma); +fpp_pi = ScaleTail(fpp_pi); diff --git a/proxies/matlab/Main.m b/proxies/matlab/Main.m new file mode 100644 index 00000000..59a05a5c --- /dev/null +++ b/proxies/matlab/Main.m @@ -0,0 +1,145 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% SCF-TB - PROXY APPLICATION % +% A.M.N. Niklasson, T1, LANL % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Total Energy: % +% E = 2Tr[H0(D-D0)] + (1/2)sum_{ij} q_i C_{ij} q_j - Efield*dipole % +% dipole = sum_i R_{i} q_i % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +clear; + +% Initial data, load atoms and coordinates, etc +%Nats = 50; % Number of atoms +%Nocc = 40; % Nr of electrons / 2 +Nats = 5; % Number of atoms +Nocc = 4; % Nr of electrons / 2 +Efield = 0*0.1*[0.90,0.0,-.00]'; %%% DOES NOT GIVE CRRECT FORCES FOR Efield > 0 +Te = 100 % Some electronic temperature +A = importdata('COORD.dat'); +TYPE = A.textdata(:); +RX = A.data(:,1); RY = A.data(:,2); RZ = A.data(:,3); +%LBox(1) = 14; LBox(2) = 14; LBox(3) = 14 % PBC +LBox(1) = 5; LBox(2) = 5; LBox(3) = 5 % PBC + +% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,4.0,Nats); +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats,nrnnlist,nnRx,nnRy,nnRz,nnType); +HDIM = max(size(H0)); +Z = S^(-1/2); +Z0 = Z; S0 = S; +Rcut = 10.42; Coulomb_acc = 10e-7; TIMERATIO = 10; + +% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); + +% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] +[H,Hcoul,Hdipole,D,Dorth,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); + +[Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +Eneries = [Etot,Eband0,Ecoul,Edipole,S_ent] +ZI = S^(1/2); +DO = ZI*D*ZI'; + +dx = 0.0001; +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,4.0,Nats); +[dSx,dSy,dSz] = GetdS(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox,nrnnlist,nnRx,nnRy,nnRz,nnType); +[dHx,dHy,dHz] = GetdH(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox,nrnnlist,nnRx,nnRy,nnRz,nnType); +[dCx,dCy,dCz] = GetdC(Nats,dx,Coulomb_acc,Rcut,TIMERATIO,HDIM,Hubbard_U,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); + +[Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,Hubbard_U,q,RX,RY,RZ,Nats,H_INDEX_START,H_INDEX_END); + +Force_1 = Ftot(1,:) +Force_2 = Ftot(2,:) +Force_2 = Ftot(3,:) +pause + +RX0 = RX; +%%%%%%%% FINITE DIFF FORCE + +DD = D; +q0 = Get_q(DD,S,H_INDEX_START,H_INDEX_END,Znuc,Nats); +CC = C; RX0 = RX; RY0 = RY; RZ0 = RZ; HH0 = H0; HH = H; + +RX = RX0; RX(1) = RX0(1) + 0.0001; + +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,4.0,Nats); +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats,nrnnlist,nnRx,nnRy,nnRz,nnType); Z = S^(-1/2); +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); +[H,Hcoul,Hdipole,D,Dorth,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); +%[Etot_p,Eband0_p,Ecoul_p,Edipole_p,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,DD,q0,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +[Etot_p,Eband0_p,Ecoul_p,Edipole_p,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +q_p = q; H_p = H; D_p = D; +q0_p = Get_q(DD,S,H_INDEX_START,H_INDEX_END,Znuc,Nats); + +RX = RX0; RX(1) = RX0(1) - 0.0001; +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,4.0,Nats); +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats,nrnnlist,nnRx,nnRy,nnRz,nnType); Z = S^(-1/2); +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); +[H,Hcoul,Hdipole,D,Dorth,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); +%[Etot_m,Eband0_m,Ecoul_m,Edipole_m,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,DD,q0,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +[Etot_m,Eband0_m,Ecoul_m,Edipole_m,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +q_m = q; H_m = H; D_m = D; +q0_m = Get_q(DD,S,H_INDEX_START,H_INDEX_END,Znuc,Nats); +RX = RX0; + +% Fixed charges d_ETOT = -0.241562399168060; +% Flexible charges d_ETOT = 0.164765711758719 +% Diff = -0.406328110926779 +d_ETOT = (Etot_p - Etot_m)/.0002 +F_analytic = Ftot(1,1) % = -0.214411998896872 with flexible D +ForceSum = Fcoul + Fband0 + Fdipole; % Correct for fixed D = DD and q = q0 +Force_without_FS = ForceSum(1,1) % = d_ETOT Correct for fixed D = DD and q = q0 +DipoleForce = Fdipole(1,1) +COmpare_Dipole_f = (Edipole_p - Edipole_m)/.0002 % = Fdipole(1,1) Correct for fixed D and q +f_Pul = FPulay(1,1) +fs_coul = FScoul(1,1) +fs_dip = FSdipole(1,1) +d_q = (q0_p - q0_m)/.0002; +fsForce = 0; +for i = 1:Nats + fsForce = fsForce + d_q(i)*(RX(i)*Efield(1) + RY(i)*Efield(2) + RZ(i)*Efield(3)); +end +fsForce % = FSdipole(1,1) Always correct + +%[Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,Hubbard_U,q,RX,RY,RZ,Nats,H_INDEX_START,H_INDEX_END); + +d_EBand0 = (Eband0_p-Eband0_m)/.0002 + +d_EBand = (2*trace(H_p*(D_p-diag(D0))) - 2*trace(H_m*(D_m-diag(D0))))/.0002 + +d_EDipole = (Edipole_p - Edipole_m)/.0002 +d_Ecoul = (Ecoul_p-Ecoul_m)/.0002 + +band0 = Fband0(1,1) +F_total = Ftot(1,1) +F_diople = Fdipole(1,1) + FSdipole(1,1) +FS_dipole = FSdipole(1,1) +F_coul = Fcoul(1,1) + FScoul(1,1) +FS_coul = FScoul(1,1) +F_pul = FPulay(1,1) +HEJ = 1 +pause + +RX = RX0; RX(1) = RX0(1) + 0.0001; +Edipole_p = 0; +for i = 1:Nats + Edipole_p = Edipole_p - q0(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy +end +RX = RX0; RX(1) = RX0(1) - 0.0001; +Edipole_m = 0; +for i = 1:Nats + Edipole_m = Edipole_m - q0(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy +end +d_FDipole = (Edipole_p - Edipole_m)/.0002 + +dq_dr = (q_p - q_m)/.0002; +d_Edipole_m = 0; +for i = 1:Nats + d_Edipole_m = d_Edipole_m - dq_dr(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy +end +d_EDipole = d_Edipole_m + +F11 = Fband0(1,1) + Fcoul(1,1) + FPulay(1,1) + FScoul(1,1) diff --git a/proxies/matlab/Main_save_00.m b/proxies/matlab/Main_save_00.m new file mode 100644 index 00000000..49895e91 --- /dev/null +++ b/proxies/matlab/Main_save_00.m @@ -0,0 +1,85 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% SCF-TB - PROXY APPLICATION % +% A.M.N. Niklasson, T1, LANL % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Total Energy: % +% E = 2Tr[H0(D-D0)] + (1/2)sum_{ij} q_i C_{ij} q_j - Efield*dipole % +% dipole = sum_i R_{i} q_i % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +clear; + +% Initial data, load atoms and coordinates, etc +Nats = 50; % Number of atoms +Nocc = 40; % Nr of electrons / 2 +Efield = 1*[-0.40,0.3,-0.31]'; +Te = 100 % Some electronic temperature +A = importdata('COORD.dat'); +TYPE = A.textdata(:); +RX = A.data(:,1); RY = A.data(:,2); RZ = A.data(:,3); +LBox(1) = 14; LBox(2) = 14; LBox(3) = 14 % PBC + +% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); +Z = S^(-1/2); +Z0 = Z; S0 = S; +HDIM = max(size(H0)); +Rcut = 10.42; Coulomb_acc = 10e-7; TIMERATIO = 10; + +% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); + +% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] +[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); +[Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent + +%%%%%%%% Num Test Forces + +%%%%%%%%%%%%%%%%%%%%%%%% + +dx = 0.0001; +[dSx,dSy,dSz] = GetdS(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); +[dHx,dHy,dHz] = GetdH(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); +[dCx,dCy,dCz] = GetdC(Nats,dx,Coulomb_acc,Rcut,TIMERATIO,HDIM,Hubbard_U,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); + +[Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,Hubbard_U,q,RX,RY,RZ,Nats,H_INDEX_START,H_INDEX_END); + +% Zero Field +% Ftot(1,3) = -2.640524966084072 +% q(1:3)' = 0.299074107847914 -0.075231905026516 -0.074189178585703 + +Force_11 = Ftot(1,1) + +RX0 = RX; +%%%%%%%% FINITE DIFF FORCE +RX = RX0; RX(1) = RX0(1) + 0.0001; +% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); +Z = S^(-1/2); + +% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); + +% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] +[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); +[Etot_p,Eband0,Ecoul,Edipole_p,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +Edipole_p + +RX = RX0; RX(1) = RX0(1) - 0.0001; +% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); +Z = S^(-1/2); + +% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); + +% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] +[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); +[Etot_m,Eband0,Ecoul,Edipole_m,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +Edipole_m + +dETOT = (Etot_p - Etot_m)/.0002 +%dFDipole = (Edipole_p - Edipole_m)/.0002 + diff --git a/proxies/matlab/Main_save_01.m b/proxies/matlab/Main_save_01.m new file mode 100644 index 00000000..2b31add7 --- /dev/null +++ b/proxies/matlab/Main_save_01.m @@ -0,0 +1,110 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% SCF-TB - PROXY APPLICATION % +% A.M.N. Niklasson, T1, LANL % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Total Energy: % +% E = 2Tr[H0(D-D0)] + (1/2)sum_{ij} q_i C_{ij} q_j - Efield*dipole % +% dipole = sum_i R_{i} q_i % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +clear; + +% Initial data, load atoms and coordinates, etc +Nats = 50; % Number of atoms +Nocc = 40; % Nr of electrons / 2 +Efield = 0.0*[0.90,0.0,-.00]'; +Te = 100 % Some electronic temperature +A = importdata('COORD.dat'); +TYPE = A.textdata(:); +RX = A.data(:,1); RY = A.data(:,2); RZ = A.data(:,3); +LBox(1) = 14; LBox(2) = 14; LBox(3) = 14 % PBC + +% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); +HDIM = max(size(H0)); +Z = S^(-1/2); +Z0 = Z; S0 = S; +Rcut = 10.42; Coulomb_acc = 10e-7; TIMERATIO = 10; + +% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); + +% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] +[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); +[Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent + +dx = 0.0001; +[dSx,dSy,dSz] = GetdS(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); +[dHx,dHy,dHz] = GetdH(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); +[dCx,dCy,dCz] = GetdC(Nats,dx,Coulomb_acc,Rcut,TIMERATIO,HDIM,Hubbard_U,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); + +[Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,Hubbard_U,q,RX,RY,RZ,Nats,H_INDEX_START,H_INDEX_END); + +Force_11 = Ftot(1,1) + +RX0 = RX; +%%%%%%%% FINITE DIFF FORCE + +DD = D; +q0 = Get_q(DD,S,H_INDEX_START,H_INDEX_END,Znuc,Nats); +CC = C; RX0 = RX; RY0 = RY; RZ0 = RZ; HH0 = H0; HH = H; + +RX = RX0; RX(1) = RX0(1) + 0.0001; +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); + +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); +[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); +[Etot_p,Eband0_p,Ecoul_p,Edipole_p,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +q_p = q; H_p = H; D_p = D; + +RX = RX0; RX(1) = RX0(1) - 0.0001; +[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); + +[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); +C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); +[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); +[Etot_m,Eband0_m,Ecoul_m,Edipole_m,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent +q_m = q; H_m = H; D_m = D; + +d_ETOT = (Etot_p - Etot_m)/.0002 +Ftot(1,1) + +pause +d_EBand0 = (Eband0_p-Eband0_m)/.0002 + +d_EBand = (2*trace(H_p*(D_p-diag(D0))) - 2*trace(H_m*(D_m-diag(D0))))/.0002 + +d_EDipole = (Edipole_p - Edipole_m)/.0002 +d_Ecoul = (Ecoul_p-Ecoul_m)/.0002 + +band0 = Fband0(1,1) +F_total = Ftot(1,1) +F_diople = Fdipole(1,1) + FSdipole(1,1) +FS_dipole = FSdipole(1,1) +F_coul = Fcoul(1,1) + FScoul(1,1) +FS_coul = FScoul(1,1) +F_pul = FPulay(1,1) +HEJ = 1 +pause + +RX = RX0; RX(1) = RX0(1) + 0.0001; +Edipole_p = 0; +for i = 1:Nats + Edipole_p = Edipole_p - q0(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy +end +RX = RX0; RX(1) = RX0(1) - 0.0001; +Edipole_m = 0; +for i = 1:Nats + Edipole_m = Edipole_m - q0(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy +end +d_FDipole = (Edipole_p - Edipole_m)/.0002 + +dq_dr = (q_p - q_m)/.0002; +d_Edipole_m = 0; +for i = 1:Nats + d_Edipole_m = d_Edipole_m - dq_dr(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy +end +d_EDipole = d_Edipole_m + +F11 = Fband0(1,1) + Fcoul(1,1) + FPulay(1,1) + FScoul(1,1) diff --git a/proxies/matlab/PBC_Coulomb.m b/proxies/matlab/PBC_Coulomb.m new file mode 100644 index 00000000..be9bcbc0 --- /dev/null +++ b/proxies/matlab/PBC_Coulomb.m @@ -0,0 +1,11 @@ +function [C] = PBC_Coulomb(R,L,N,U) + +C = zeros(N); +for i = 1:N + C(i,i) = U(i); + for j = i+1:N + Dist2 = min([(R(i)-R(j))^2,(R(i)-R(j)+L)^2,(R(i)-R(j)-L)^2]); + %C(i,j) = (U(i)+U(j))*exp(-4*sqrt(Dist2)); C(j,i) = C(i,j); + C(i,j) = (U(i)+U(j))*exp(-1*sqrt(Dist2)); C(j,i) = C(i,j); + end +end diff --git a/proxies/matlab/PBC_CoulombPot.m b/proxies/matlab/PBC_CoulombPot.m new file mode 100644 index 00000000..95f09977 --- /dev/null +++ b/proxies/matlab/PBC_CoulombPot.m @@ -0,0 +1,29 @@ +function [Vcoul,dVcoul] = PBC_CoulombPot(q,C,U) + + N = max(size(q)); + Vcoul = zeros(N,1); + dVcoul = zeros(N,N); + for i = 1:N + for j = 1:N + if i~=j + Vcoul(i) = Vcoul(i) + q(j)/norm(R(i)-R(j)); + else + Vcoul(i) = Vcoul(i) + q(i)*U(i); + end + end + end + + for k = 1:N + for i = 1:N + for j = 1:N + if j~=i + if i==k + dVcoul(i,k) = dVcoul(i,k) - q(j)*(R(i)-R(j))/(norm(R(i)-R(j))^3); + end + if j==k + dVcoul(i,k) = dVcoul(i,k) + q(j)*(R(i)-R(j))/(norm(R(i)-R(j))^3); + end + end + end + end + end diff --git a/proxies/matlab/PBC_Energy.m b/proxies/matlab/PBC_Energy.m new file mode 100644 index 00000000..8557eeb8 --- /dev/null +++ b/proxies/matlab/PBC_Energy.m @@ -0,0 +1,30 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Total energy calculation % +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [Etot,Eband0,Ecoul,Edipole,S_ent] = PBC_Energy(H0,Efield,D0,C,D,q,R,Te); + +%% E = 2*trace(H0*(D-D0)) + 0.5*sum_ij{i!=j} (qi*Cij*qj) + 0.5*sum_i qi^2*Ui - Efield*mu +%% dipole = mu(:) = sum_i qi*R(i,:); qi = 2*(D_ii-D0_ii) + +kB = 8.61739e-5; % eV/K; +N = max(size(q)); +Eband0 = 2*trace(H0*(D-D0)); % Single-particle/band energy + +Ecoul = 0.5*q'*C*q; % Coulomb energy + +Edipole = 0; +for i = 1:N + Edipole = Edipole - q(i)*R(i)*Efield; % External-field-Dipole interaction energy +end + +f = eig(D); +S_ent = 0; eps = 1e-9 +for i = 1:N + if (f(i) < 1-eps) & (f(i) > eps) + S_ent = - kB*(f(i)*log(f(i)) + (1-f(i))*log(1-f(i))); + end +end + +Etot = Eband0 + Ecoul + Edipole - 2*Te*S_ent; % Total energy + + diff --git a/proxies/matlab/PBC_Forces.m b/proxies/matlab/PBC_Forces.m new file mode 100644 index 00000000..8aeb7c19 --- /dev/null +++ b/proxies/matlab/PBC_Forces.m @@ -0,0 +1,36 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Calcualte total forces and some matrix derivatives % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [Ftot,dHdR,dCdR] = PBC_Forces(H0,Efield,D0,C,D,q,R,L,U,Rnd); + +N = max(size(q)); + +dHdR = 0*H0; +R0 = R; dR = 0.0001; +dEband0_dR = zeros(N,1); +dEcoul_dR = zeros(N,1); + +for i = 1:N + Rp = R0; + Rp(i,1) = Rp(i,1) + dR; % Finite difference forward displacement + Hp = PBC_Hamiltonian(Rp,L,N,Rnd); + Cp = PBC_Coulomb(Rp,L,N,U); + Rm = R0; + Rm(i,1) = Rm(i,1) - dR; % Finite difference backward displacement + Hm = PBC_Hamiltonian(Rm,L,N,Rnd); + Cm = PBC_Coulomb(Rm,L,N,U); + dHdR(:,i) = (Hp(:,i) - Hm(:,i))/(2*dR); %% H0 derivative collected columnwise. In reality dHdR = dHdR + dHdR' + dCdR(:,i) = (Cp(:,i) - Cm(:,i))/(2*dR); %% C derivative collected columnwise. In reality dCdR = dCdR + dCdR' +end %% Otherwise use q(:)'*dCdR(:,i), which is calculated in regular Ewald + +for i = 1:N % force contributions from band energy 2Tr[H(D-D0)] and Coulomb/Hartree energy (1/2) sum_{ij} q_i C_{ij}q_j + dEband0_dR(i) = 2*2*(D(i,:)-D0(i,:))*dHdR(:,i); + dEcoul_dR(i) = q(i)*q(:)'*dCdR(:,i); +end + +Fdipole = zeros(N,1); +for i = 1:N + Fdipole(i) = -q(i)*Efield; % Forces from External field-dipole interaction +end + +Ftot = - dEband0_dR - dEcoul_dR - Fdipole; % Collected total force diff --git a/proxies/matlab/PBC_Hamiltonian.m b/proxies/matlab/PBC_Hamiltonian.m new file mode 100644 index 00000000..4d85b51b --- /dev/null +++ b/proxies/matlab/PBC_Hamiltonian.m @@ -0,0 +1,12 @@ +function [H0] = PBC_Hamiltonian(R,L,N,Rnd) + +av = sum(Rnd)/N; +H0 = zeros(N); +for i = 1:N + H0(i,i) = 1*(Rnd(i)-av); + for j = i+1:N + Dist2 = min([(R(i)-R(j))^2,(R(i)-R(j)+L)^2,(R(i)-R(j)-L)^2]); + %H0(i,j) = (Rnd(i)+Rnd(j))*exp(-3*Dist2); H0(j,i) = H0(i,j); + H0(i,j) = (Rnd(i)+Rnd(j))*exp(-1*Dist2); H0(j,i) = H0(i,j); + end +end diff --git a/proxies/matlab/PBC_SCF.m b/proxies/matlab/PBC_SCF.m new file mode 100644 index 00000000..e33d93d7 --- /dev/null +++ b/proxies/matlab/PBC_SCF.m @@ -0,0 +1,21 @@ +function [H,Hcoul,Hdipole,D,q] = PBC_SCF(H0,Efield,D0,C,q,R,nocc,Te) + +N = max(size(H0)); +q_new = q; q_old = 0*q; +it = 0; res = 1; +Vdipole = zeros(N,1); +h = sort(eig(H0)); +mu0 = 0.5*(h(nocc)+h(nocc+1)); mu1 = 0; +while res > 1e-10 + it = it + 1; + Hdipole = diag(-R*Efield); + Hcoul = diag(C*q_new); + H = H0 + Hcoul + Hdipole; +% DA = DensityMatrix(H,nocc); % 2*trace(D) = Ne = 2*nocc + [D,mu0] = DM_Fermi(H,Te,mu0,nocc,16,1e-9,50); + q_old = q_new; + q = 2*diag(D-D0); + q_new = 0.2*q + (1-0.2)*q_old; + res = norm(q-q_old); +end + diff --git a/proxies/matlab/PBC_SCF_PRT.m b/proxies/matlab/PBC_SCF_PRT.m new file mode 100644 index 00000000..fe97eba4 --- /dev/null +++ b/proxies/matlab/PBC_SCF_PRT.m @@ -0,0 +1,43 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% SCF linear response calculation with respect to perturbation H1 % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [H,H_1,Hcoul,Hdipole,D,D1,q] = PBC_SCF_PRT(H0,H1,C,Efield,D0,U,q,R,mu0,nocc,Te) + +mu1 = 0; +N = max(size(H0)); +q_new = q; q_old = 0*q; % Initial guess +q1 = 0*q; q1_new = q1; q1_old = q1; % Initial guess +Vdipole = zeros(N,1); + +it = 0; +while norm(q-q_old)+norm(q1-q1_old) > 1e-9 % Continue until convergence + it = it + 1; + + V1coul = C*q1_new; % Linear response in Coulomb/Hartree potential + + Vcoul = C*q_new; % Coulomb/Hartree potential + Hcoul = diag(Vcoul); % Hamiltonian from the linear response in Coulomb/Hartree potential + Hdipole = diag(-R*Efield); % Hamiltonian from external field dipole interaction + + H_1 = H1 + diag(V1coul); % Total net linear response Hamiltonian + H = H0 + Hcoul + Hdipole; % Total 0th-order Hamiltonian +% [D,D1] = DensityMatrixPRT(H,H_1,nocc); % 2*trace(D) = Ne = 2*nocc, D = density matrix, D1 = response density matrix + [D,D1,mu0,mu1] = DM_PRT_Fermi(H,H_1,Te,mu0,mu1,nocc,16,1e-9,20); +% Occ_Err = trace(D)-nocc +% OccErr1 = trace(D1)-0 +% IdErr = norm(D*D-D) +% IdErr1 = norm(D1*D+D*D1-D1) +% ComErr = norm(D*H-H*D) +% ComErr1 = norm(D1*H-H*D1 + D*H_1-H_1*D) + + q1_old = q1_new; + q1 = 2*diag(D1); + q1_new = 0.1*q1 + (1-0.1)*q1_old; % Simple linear mixing + + q_old = q_new; + q = 2*diag(D-D0); + q_new = 0.1*q + (1-0.1)*q_old; % Simple linear mixing + Res = norm(q-q_old) +norm(q1-q1_old) ; + %pause +end + diff --git a/proxies/matlab/PBC_SCF_PRT_0.m b/proxies/matlab/PBC_SCF_PRT_0.m new file mode 100644 index 00000000..fc92aa7c --- /dev/null +++ b/proxies/matlab/PBC_SCF_PRT_0.m @@ -0,0 +1,42 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% SCF linear response calculation with respect to perturbation H1 % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [H,H_1,Hcoul,Hdipole,D,D1,q] = PBC_SCF_PRT_0(H0,H1,C,Efield,D0,U,q,R,nocc) + +N = max(size(H0)); +q_new = q; q_old = 0*q; % Initial guess +q1 = 0*q; q1_new = q1; q1_old = q1; % Initial guess +Vdipole = zeros(N,1); + +it = 0; +while norm(q-q_old)+norm(q1-q1_old) > 1e-9 % Continue until convergence + it = it + 1; + + V1coul = C*q1_new; % Linear response in Coulomb/Hartree potential + + Vcoul = C*q_new; % Coulomb/Hartree potential + Hcoul = diag(Vcoul); % Hamiltonian from the linear response in Coulomb/Hartree potential + Hdipole = diag(-R*Efield); % Hamiltonian from external field dipole interaction + + H_1 = H1 + diag(V1coul); % Total net linear response Hamiltonian + H = H0 + Hcoul + Hdipole; % Total 0th-order Hamiltonian + [D,D1] = DensityMatrixPRT(H,H_1,nocc); % 2*trace(D) = Ne = 2*nocc, D = density matrix, D1 = response density matrix +% OccErr = trace(D)-nocc +% OccErr1 = trace(D1)-0 +% IdErr = norm(D*D-D) +% IdErr1 = norm(D1*D+D*D1-D1) +% ComErr = norm(D*H-H*D) +% ComErr1 = norm(D1*H-H*D1 + D*H_1-H_1*D) +% pause + + + + q1_old = q1_new; + q1 = 2*diag(D1); + q1_new = 0.1*q1 + (1-0.1)*q1_old; % Simple linear mixing + + q_old = q_new; + q = 2*diag(D-D0); + q_new = 0.1*q + (1-0.1)*q_old; % Simple linear mixing +end + diff --git a/proxies/matlab/PBC_SCF_PRT_X.m b/proxies/matlab/PBC_SCF_PRT_X.m new file mode 100644 index 00000000..f05bd922 --- /dev/null +++ b/proxies/matlab/PBC_SCF_PRT_X.m @@ -0,0 +1,48 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% SCF linear response calculation with respect to atomic displacements % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [H,H_1,Hcoul,Hdipole,dVcoul,D,D1,q] = PBC_SCF_PRT_X(H0,dHdR,C,dCdR,Efield,D0,U,q,R,mu0,nocc,k,Te) + +N = max(size(H0)); +q_new = q; q_old = 0*q; +q1 = 0*q; q1_new = q1; q1_old = q1; +Vdipole = zeros(N,1); +mu1 = 0; + +H1 = zeros(N); +H1(:,k) = dHdR(:,k); +H1 = H1 + H1'; + +it = 0; +while norm(q-q_old)+norm(q1-q1_old) > 1e-9 + it = it + 1; + + V1coul = C*q1_new; % Linear response in Hartree/Coulomb potential from charge response due to dsiplacement + + dVcoul = dCdR(:,k)*q_new(k); % Linear response in Hartree/Coulomb potential from displacement only + dVcoul(k) = dVcoul(k) + q_new'*dCdR(:,k); % Combined total linear response in Hartree/Coulomb energy from displacement + + Vcoul = C*q_new; % Coulomb/Hartree potential + Hcoul = diag(Vcoul); % Coulomb/Hartree Hamiltonian + Hdipole = diag(-R*Efield); % Hamiltonian from external field-dipole interaction + dR = 0*R; dR(k) = 1; + + H_1 = H1 + diag(V1coul) + diag(dVcoul) + diag(-dR*Efield); % Linear response Hamiltonian + H = H0 + Hcoul + Hdipole; % Total ground-state Kohn-Sham Hamiltonian +% [D,D1] = DensityMatrixPRT(H,H_1,nocc); % 2*trace(D) = Ne = 2*nocc, D = density matrix, D1 = response density matrix +% Occ1 = trace(D1) + [D,D1,mu0,mu1] = DM_PRT_Fermi(H,H_1,Te,mu0,mu1,nocc,16,1e-9,20); +% Occ2 = trace(D1) +% IdFel = norm(D*D-D) +% norm(q-q_old)+norm(q1-q1_old) +% pause + + q1_old = q1_new; + q1 = 2*diag(D1); % Linear response in atom-projected charges + q1_new = 0.1*q1 + (1-0.1)*q1_old; % Simple linear mixing + + q_old = q_new; + q = 2*diag(D-D0); % Atomic charges + q_new = 0.1*q + (1-0.1)*q_old; % Simple linear mixing +end + diff --git a/proxies/matlab/PBC_main.m b/proxies/matlab/PBC_main.m new file mode 100644 index 00000000..3c85308e --- /dev/null +++ b/proxies/matlab/PBC_main.m @@ -0,0 +1,101 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Dual Susceptibility approach to calculate Born-Effective charges % +% 1-dimensional DFTB example with periodic boundary conditions % +% A.M.N. Niklasson, T1, LANL % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Todo: Implement in DFTB/LATTE, which includes % +% 0) Extenson from 1D to 3D with x,y, and z % +% 1) Extension to fractional occupation Te > 0, Done! % +% 2) Extension to general non-orthonormal basis sets % +% 3) If possible, do Periodic Boundary Conditions correctly, % +% without results depending on the edges in Hdipole, Correct!% +% 4) Implement response calculation with AI hardware/GPU % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Total Energy: % +% E = 2Tr[H0(D-D0)] + (1/2)sum_{ij} q_i C_{ij} q_j - Efield*dipole % +% dipole = sum_i R_{i} q_i, half filled, 1 basis-function/atom % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +clear; +N = 20; % N > 2 % Number of atoms and basis functions +Te = 50000 % Some electronic temperature +Efield = 0.0000; % External field +/- dEfield give the BEQ from force derivative +atoms = [1:N]; % Atomic positions +R0 = atoms; +atoms = [N-1:N,1:N-2]; % Atomic positions shifted cyclically => same BEQ but shifted +SEED = atoms; Rnd = (sin(2.4+3*SEED(:).^3-sin(pi*SEED(:)/N))); % "Randomized" seed for models +Rnd2 = (10 + 1*(sin(12+3.3*SEED(:).^5-sin(pi*SEED(:))))); % "Randomized" seed for models +R = atoms'; L = N; %R = R + 3.3; +U = Rnd2; +D0 = eye(N)/2; nocc = N/2; % Atomic denity matrix +H0 = PBC_Hamiltonian(R,L,N,Rnd); C = PBC_Coulomb(R,L,N,U); % Hamiltonian H0 and Coulomb matrix C, toy models + +n = N; M = 1; % M is the number of unit cells +Rtmp = R; Rndtmp = Rnd; Rndtmp2 = Rnd2; +for i = 1:M + R((i-1)*n+1:i*n) = (i-1)*L + Rtmp(1:n); + Rnd((i-1)*n+1:i*n) = Rndtmp(1:n); + Rnd2((i-1)*n+1:i*n) = Rndtmp2(1:n); +end +N = n*M; L = N; nocc = N/2; D0 = eye(N)/2; +U = Rnd2; +H0 = PBC_Hamiltonian(R,L,N,Rnd); C = PBC_Coulomb(R,L,N,U); % Hamiltonian H0 and Coulomb matrix C, toy models + +[D,mu0] = DensityMatrix(H0,nocc); q = 2*(diag(D-D0)); % Density matrix and first initial charge guess +[D,mu0] = DM_Fermi(H0,Te,mu0,nocc,16,1e-9,100); +[H,Hcoul,Hdipole,D,q] = PBC_SCF(H0,Efield,D0,C,q,R,nocc,Te); % Self-consistent optimization + +[Etot,Eband0,Ecoul,Edipole,S_ent] = PBC_Energy(H0,Efield,D0,C,D,q,R,Te); % Energy calculation - 2*Te*S_ent +[Ftot,dHdR,dCdR] = PBC_Forces(H0,Efield,D0,C,D,q,R,L,U,Rnd); % Forces and H0 and C derviative matrices (column wise) + +A = diag(R0); % Position operator +a_dipole = 2*trace(A*(D-D0)) % Dipole +alt_a_dipole = R'*q +pause + +%%% Calculate response in dipole with respect to atomic displacement, i.e. where d_dipole/dR_k = d^2_E//(dRk dEfield) +%%%% Use direct perturbation with respect to displacement, calculated sepconsistently as in DF-PRT +for k = 1:N + [H,H_1,Hcoul,Hdipole,dVcoul,D,D1,q] = PBC_SCF_PRT_X(H0,dHdR,C,dCdR,Efield,D0,U,q,R,mu0,nocc,k,Te); % N number of SCF_PRT, one for each k!!! +% ![H,H_1,Hcoul,Hdipole,dVcoul,D,D1,q] = PBC_SCF_PRT_X(H0,dHdR,C,dCdR,Efield,D0,U,q,R0,mu0,nocc,k,Te); % N number of SCF_PRT, one for each k!!! +q1 = diag(D1); +[k,q(1:10)']; +[k,q1(1:10)']; + + dA = 0*A; dA(k,k) = 1; + dadR(k) = 2*trace(A*D1) + 2*trace(dA*(D-D0)); % d_dipole/dR_k = d^2_E//(dRk dEfield) = 2*R'*q1 + 2*q(k); + Same = [dadR(k) ,2*R0*q1 + q(k)]; +end +a_dipole = R'*q +a_dipole_R0 = R0*q + +%% Use dual SCF susceptibility approach to DF-PRT with respect to dipole observable A +%% Susceptibility for dipole observable -> XA +A0 = A; +Q = eye(N)-D; +%[H,H_1,Hcoul,Hdipole,D,XA,q] = PBC_SCF_PRT(H0,A,C,Efield,D0,U,q,R,mu0,nocc,Te); % Only one SCF_PRT using the dual susceptibility approach!!! +[H,H_1,Hcoul,Hdipole,D,XA,q] = PBC_SCF_PRT(H0,A,C,Efield,D0,U,q,R0,mu0,nocc,Te); % Only one SCF_PRT using the dual susceptibility approach!!! +%[H,H_1,Hcoul,Hdipole,D,XA,q] = PBC_SCF_PRT_0(H0,A,C,Efield,D0,U,q,R,nocc); % At Te = 0 + +for k = 1:N %% Calculate dipole response using XA susceptibility + dA = 0*A; dA(k,k) = 1; + dVcoul = zeros(N,1); dR = zeros(N,1); dR(k) = 1; + dH = zeros(N); + dH(:,k) = dHdR(:,k); + dH = dH + dH'; + + dVcoul = dCdR(:,k)*q(k); dVcoul(k) = dVcoul(k) + q'*dCdR(:,k); + dH = dH + diag(dVcoul) + diag(-dR*Efield); + + da_dR(k) = 2*trace(XA*dH) + 2*trace(dA*(D-D0)); % d_dipole/dR_k = d^2_E//(dRk dEfield) from susceptibility calculation +end + +a_dipole = 2*trace(A*(D-D0)) % Still the same! + +% Check equivalence between the direct DF-PRT approach and the dual susceptibility formulation +Reldiff = norm(dadR-da_dR)/norm(dadR) +%q' +mm = 2 +dadR +da_dR +%da_dR(n*(mm-1)+1:mm*n) +%da_dR(n*mm+1:(mm+1)*n) diff --git a/proxies/matlab/SCF.m b/proxies/matlab/SCF.m new file mode 100644 index 00000000..2cb606ea --- /dev/null +++ b/proxies/matlab/SCF.m @@ -0,0 +1,50 @@ +function [H,Hcoul,Hdipole,D,Dorth,q,f] = SCF(H0,S,Efield,C,Rx,Ry,Rz,H_Index_Start,H_Index_End,nocc,U,Znuc,Nats,Te) + +N = max(size(H0)); +it = 0; Res = 1; +Z = S^(-1/2); +h = sort(eig(Z'*H0*Z)); +mu0 = 0.5*(h(nocc)+h(nocc+1)); +[D,mu0] = DM_Fermi(Z'*H0*Z,Te,mu0,nocc,16,1e-9,50); +D = Z*D*Z'; +DS = 2*diag(D*S); +q = zeros(Nats,1); +for i = 1:Nats + q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); +end + +while Res > 1e-10 + it = it + 1; + Dipole = diag(-Rx*Efield(1)-Ry*Efield(2)-Rz*Efield(3)); + Hdipole = zeros(N); + CoulPot = C*q; + + Hcoul = zeros(N); + for i = 1:Nats + for j = H_Index_Start(i):H_Index_End(i) + Hdipole(j,j) = Dipole(i); + Hcoul(j,j) = U(i)*q(i) + CoulPot(i); + end + end + + Hcoul = 0.5*Hcoul*S + 0.5*S*Hcoul; + Hdipole = 0.5*Hdipole*S + 0.5*S*Hdipole; + H = H0 + Hcoul + Hdipole; + + [Dorth,mu0] = DM_Fermi(Z'*H*Z,Te,mu0,nocc,16,1e-9,50); + + D = Z*Dorth*Z'; + q_old = q; + + DS = 2*diag(D*S); + for i = 1:Nats + q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); + end + + Res = norm(q-q_old); + + q = q_old + 0.2*(q-q_old); + +end +f = eig(0.5*(Dorth+Dorth')); + diff --git a/proxies/matlab/SCF_save_00.m b/proxies/matlab/SCF_save_00.m new file mode 100644 index 00000000..7dc14a23 --- /dev/null +++ b/proxies/matlab/SCF_save_00.m @@ -0,0 +1,50 @@ +function [H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,Rx,Ry,Rz,H_Index_Start,H_Index_End,nocc,U,Znuc,Nats,Te) + +N = max(size(H0)); +it = 0; Res = 1; +Z = S^(-1/2); +h = sort(eig(Z'*H0*Z)); +mu0 = 0.5*(h(nocc)+h(nocc+1)); +[D,mu0] = DM_Fermi(Z'*H0*Z,Te,mu0,nocc,16,1e-9,50); +D = Z*D*Z'; +DS = 2*diag(D*S); +q = zeros(Nats,1); +for i = 1:Nats + q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); +end + +while Res > 1e-10 + it = it + 1; + Dipole = diag(-Rx*Efield(1)-Ry*Efield(2)-Rz*Efield(3)); + Hdipole = zeros(N); + CoulPot = C*q; + + Hcoul = zeros(N); + for i = 1:Nats + for j = H_Index_Start(i):H_Index_End(i) + Hdipole(j,j) = Dipole(i); + Hcoul(j,j) = U(i)*q(i) + CoulPot(i); + end + end + + Hcoul = 0.5*Hcoul*S + 0.5*S*Hcoul; + Hdipole = 0.5*Hdipole*S + 0.5*S*Hdipole; + H = H0 + Hcoul + Hdipole; + + [Dorth,mu0] = DM_Fermi(Z'*H*Z,Te,mu0,nocc,16,1e-9,50); + + D = Z*Dorth*Z'; + q_old = q; + + DS = 2*diag(D*S); + for i = 1:Nats + q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); + end + + Res = norm(q-q_old); + + q = q_old + 0.2*(q-q_old); + +end +f = eig(0.5*(Dorth+Dorth')); + diff --git a/proxies/matlab/ScaleTail.m b/proxies/matlab/ScaleTail.m new file mode 100644 index 00000000..51d1ff17 --- /dev/null +++ b/proxies/matlab/ScaleTail.m @@ -0,0 +1,26 @@ +function A = ScaleTail(A) +if abs(A(1)) < 1e-12 + A(9:14) = 0; +else + R1 = A(7); + RCUT = A(8); + R1SQ = R1*R1; + RMOD = R1 - A(6); + POLYNOM = RMOD*(A(2) + RMOD*(A(3) + RMOD*(A(4) + A(5)*RMOD))); + SCL_R1 = exp(POLYNOM); + DELTA = RCUT - R1; +%! Now we're using a 6th order polynomial: fitted to value, first, +%! and second derivatives at R1 and R_cut + A(9) = SCL_R1; + RMOD = R1 - A(6); + DPOLY = A(2) + 2*A(3)*RMOD + 3*A(4)*RMOD*RMOD + 4*A(5)*RMOD*RMOD*RMOD; + A(10) = DPOLY*SCL_R1; + DDPOLY = 2*A(3) + 6*A(4)*RMOD + 12*A(5)*RMOD*RMOD; + A(11) = (DPOLY*DPOLY + DDPOLY)*SCL_R1/2; + DELTA2 = DELTA*DELTA; + DELTA3 = DELTA2*DELTA; + DELTA4 = DELTA3*DELTA; + A(12) = (-1/DELTA3)*(3*A(11)*DELTA2 + 6*A(10)*DELTA + 10*A(9)); + A(13) = (1/DELTA4)*(3*A(11)*DELTA2 + 8*A(10)*DELTA + 15*A(9)); + A(14) = (-1/(10*DELTA3))*(6*A(13)*DELTA2 + 3*A(12)*DELTA + A(11)); +end diff --git a/proxies/matlab/Slater_Koster_Block.m b/proxies/matlab/Slater_Koster_Block.m new file mode 100644 index 00000000..29542302 --- /dev/null +++ b/proxies/matlab/Slater_Koster_Block.m @@ -0,0 +1,104 @@ +function x0 = Slater_Koster_Block(IDim,JDim,Ra,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal) + +%%% Standard Slater-Koster sp-parameterization for an atomic block between a pair of atoms +%%% IDim, JDim: dimensions of the output block, e.g. 1 x 4 for H-O or 4 x 4 for O-O, or 4 x 1 for O-H +%%% Ra, Rb: are the vectors of the positions of the two atoms +%%% LBox: Periodic boundary conditions, i.e. length of box in x, y, z (cubic box only) +%%% Type_pair(1 or 2): Character of the type of each atom in the pair, e.g. 'H' for hydrogen of 'O' for oxygen +%%% fss_sigma, ... , fpp_pi: paramters for the bond integrals +%%% diagonal(1 or 2): atomic energies Es and Ep or diagonal elements of the overlap i.e. diagonal = 1 + + +atom_type_a = Type_pair(1); atom_type_b = Type_pair(2); +x0 = zeros(IDim,JDim); +RXb = Rb(1); RYb = Rb(2); RZb = Rb(3); + +for nr_shift_X = -1:1 % Periodic BC shifts in X, Y and Z. Costs a lot extra! +for nr_shift_Y = -1:1 +for nr_shift_Z = -1:1 + + Rb(1) = RXb + nr_shift_X*LBox(1); % Shifts for PBC + Rb(2) = RYb + nr_shift_Y*LBox(2); + Rb(3) = RZb + nr_shift_Z*LBox(3); + Rab = Rb-Ra; % OBS b - a !!! + dR = norm(Rab); + + if dR < 1e-12 % same position and thus the same type atom_type_a = atom_type_b, Ra = Rb + if atom_type_a == 'H' % s atom 1 x 1 + x0(1,1) = x0(1,1) + diagonal(1); % diagonal(1) = Es for atoms, = 1 for overlap + else % sp atom 4 x 4 Diagonal Only + x0(1,1) = x0(1,1) + diagonal(1); % diagonal(1) = Es for atoms, = 1 for overlap + x0(2,2) = x0(2,2) + diagonal(2); % diagonal(2) = Ep for atoms, = 1 for overlap + x0(3,3) = x0(3,3) + diagonal(2); + x0(4,4) = x0(4,4) + diagonal(2); + end + else + L = Rab(1)/dR; % Direction cosines + M = Rab(2)/dR; + N = Rab(3)/dR; + + if atom_type_a == 'H' + if atom_type_b == 'H' % s-s overlap 1 x 1 block + HSSS = BondIntegral(dR,fss_sigma); % Calculate the s-s bond integral + x0(1,1) = x0(1,1) + HSSS; + else % s-sp overlap 1 x 4 block + HSSS = BondIntegral(dR,fss_sigma); + HSPS = BondIntegral(dR,fsp_sigma); + x0(1,1) = x0(1,1) + HSSS; + x0(1,2) = x0(1,2) + L*HSPS; + x0(1,3) = x0(1,3) + M*HSPS; + x0(1,4) = x0(1,4) + N*HSPS; + end + else + if atom_type_b == 'H' % sp-s overlap 4 x 1 block + HSSS = BondIntegral(dR,fss_sigma); + HSPS = BondIntegral(dR,fsp_sigma); + x0(1,1) = x0(1,1) + HSSS; + x0(2,1) = x0(2,1) - L*HSPS; + x0(3,1) = x0(3,1) - M*HSPS; + x0(4,1) = x0(4,1) - N*HSPS; + else % sp-sp overlap + HSSS = BondIntegral(dR,fss_sigma); + HSPS = BondIntegral(dR,fsp_sigma); + HPSS = BondIntegral(dR,fps_sigma); + HPPS = BondIntegral(dR,fpp_sigma); + HPPP = BondIntegral(dR,fpp_pi); + + PPSMPP = HPPS - HPPP; + PXPX = HPPP + L*L*PPSMPP; + PXPY = L*M*PPSMPP; + PXPZ = L*N*PPSMPP; + PYPX = M*L*PPSMPP; + PYPY = HPPP + M*M*PPSMPP; + PYPZ = M*N*PPSMPP; + PZPX = N*L*PPSMPP; + PZPY = N*M*PPSMPP; + PZPZ = HPPP + N*N*PPSMPP; + + x0(1,1) = x0(1,1) + HSSS; + x0(1,2) = x0(1,2) + L*HSPS; % or 0 + x0(1,3) = x0(1,3) + M*HSPS; % or 0 + x0(1,4) = x0(1,4) + N*HSPS; % or 0 + + x0(2,1) = x0(2,1) - L*HPSS; % or 0 + + x0(2,2) = x0(2,2) + PXPX; + x0(2,3) = x0(2,3) + PXPY; + x0(2,4) = x0(2,4) + PXPZ; + + x0(3,1) = x0(3,1) - M*HPSS; % or 0 + + x0(3,2) = x0(3,2) + PYPX; + x0(3,3) = x0(3,3) + PYPY; + x0(3,4) = x0(3,4) + PYPZ; + x0(4,1) = x0(4,1) - N*HPSS; % or 0 + x0(4,2) = x0(4,2) + PZPX; + x0(4,3) = x0(4,3) + PZPY; + x0(4,4) = x0(4,4) + PZPZ; + end + end + end +end +end +end + diff --git a/proxies/matlab/Slater_Koster_Pair.m b/proxies/matlab/Slater_Koster_Pair.m new file mode 100644 index 00000000..c0f69c3d --- /dev/null +++ b/proxies/matlab/Slater_Koster_Pair.m @@ -0,0 +1,94 @@ +function x0 = Slater_Koster_Block(Ra,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal) + +%%% Standard Slater-Koster sp-parameterization for an atomic block between a pair of atoms +%%% IDim, JDim: dimensions of the output block, e.g. 1 x 4 for H-O or 4 x 4 for O-O, or 4 x 1 for O-H +%%% Ra, Rb: are the vectors of the positions of the two atoms +%%% LBox: Periodic boundary conditions, i.e. length of box in x, y, z (cubic box only) +%%% Type_pair(1 or 2): Character of the type of each atom in the pair, e.g. 'H' for hydrogen of 'O' for oxygen +%%% fss_sigma, ... , fpp_pi: paramters for the bond integrals +%%% diagonal(1 or 2): atomic energies Es and Ep or diagonal elements of the overlap i.e. diagonal = 1 + + +atom_type_a = Type_pair(1); atom_type_b = Type_pair(2); +x0 = zeros(4); +RXb = Rb(1); RYb = Rb(2); RZb = Rb(3); + + Rab = Rb-Ra; % OBS b - a !!! + dR = norm(Rab); + + if dR < 1e-10 % same position and thus the same type atom_type_a = atom_type_b, Ra = Rb + if atom_type_a == 'H' % s atom 1 x 1 + x0(1,1) = x0(1,1) + diagonal(1); % diagonal(1) = Es for atoms, = 1 for overlap + else % sp atom 4 x 4 Diagonal Only + x0(1,1) = x0(1,1) + diagonal(1); % diagonal(1) = Es for atoms, = 1 for overlap + x0(2,2) = x0(2,2) + diagonal(2); % diagonal(2) = Ep for atoms, = 1 for overlap + x0(3,3) = x0(3,3) + diagonal(2); + x0(4,4) = x0(4,4) + diagonal(2); + end + else + L = Rab(1)/dR; % Direction cosines + M = Rab(2)/dR; + N = Rab(3)/dR; + + if atom_type_a == 'H' + if atom_type_b == 'H' % s-s overlap 1 x 1 block + HSSS = BondIntegral(dR,fss_sigma); % Calculate the s-s bond integral + x0(1,1) = x0(1,1) + HSSS; + else % s-sp overlap 1 x 4 block + HSSS = BondIntegral(dR,fss_sigma); + HSPS = BondIntegral(dR,fsp_sigma); + x0(1,1) = x0(1,1) + HSSS; + x0(1,2) = x0(1,2) + L*HSPS; + x0(1,3) = x0(1,3) + M*HSPS; + x0(1,4) = x0(1,4) + N*HSPS; + end + else + if atom_type_b == 'H' % sp-s overlap 4 x 1 block + HSSS = BondIntegral(dR,fss_sigma); + HSPS = BondIntegral(dR,fsp_sigma); + x0(1,1) = x0(1,1) + HSSS; + x0(2,1) = x0(2,1) - L*HSPS; + x0(3,1) = x0(3,1) - M*HSPS; + x0(4,1) = x0(4,1) - N*HSPS; + else % sp-sp overlap + HSSS = BondIntegral(dR,fss_sigma); + HSPS = BondIntegral(dR,fsp_sigma); + HPSS = BondIntegral(dR,fps_sigma); + HPPS = BondIntegral(dR,fpp_sigma); + HPPP = BondIntegral(dR,fpp_pi); + + PPSMPP = HPPS - HPPP; + PXPX = HPPP + L*L*PPSMPP; + PXPY = L*M*PPSMPP; + PXPZ = L*N*PPSMPP; + PYPX = M*L*PPSMPP; + PYPY = HPPP + M*M*PPSMPP; + PYPZ = M*N*PPSMPP; + PZPX = N*L*PPSMPP; + PZPY = N*M*PPSMPP; + PZPZ = HPPP + N*N*PPSMPP; + + x0(1,1) = x0(1,1) + HSSS; + x0(1,2) = x0(1,2) + L*HSPS; % or 0 + x0(1,3) = x0(1,3) + M*HSPS; % or 0 + x0(1,4) = x0(1,4) + N*HSPS; % or 0 + + x0(2,1) = x0(2,1) - L*HPSS; % or 0 + + x0(2,2) = x0(2,2) + PXPX; + x0(2,3) = x0(2,3) + PXPY; + x0(2,4) = x0(2,4) + PXPZ; + + x0(3,1) = x0(3,1) - M*HPSS; % or 0 + + x0(3,2) = x0(3,2) + PYPX; + x0(3,3) = x0(3,3) + PYPY; + x0(3,4) = x0(3,4) + PYPZ; + x0(4,1) = x0(4,1) - N*HPSS; % or 0 + x0(4,2) = x0(4,2) + PZPX; + x0(4,3) = x0(4,3) + PZPY; + x0(4,4) = x0(4,4) + PZPZ; + end + end + end + diff --git a/proxies/matlab/Thresh.m b/proxies/matlab/Thresh.m new file mode 100644 index 00000000..fd05b2d5 --- /dev/null +++ b/proxies/matlab/Thresh.m @@ -0,0 +1,10 @@ +function [X] = Thresh(X,eps); + +N = max(size(X)); +for i = 1:N +for j = 1:N + if abs(X(i,j)) < eps + X(i,j) = 0; + end +end +end diff --git a/proxies/matlab/nearestneighborlist.m b/proxies/matlab/nearestneighborlist.m new file mode 100644 index 00000000..97d40ce4 --- /dev/null +++ b/proxies/matlab/nearestneighborlist.m @@ -0,0 +1,67 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Simple N^2 brute force nearest neighborlist % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(Rx,Ry,Rz,LBox,Rcut,N) + +% Rx, Ry, Rz are the coordinates of atoms +% LBox dimensions of peridic BC +% N number of atoms +% nrnnlist(I): number of atoms within distance of Rcut from atom I including atoms in the skin +% nndist(I,J): distance between atom I(in box) and J (including atoms in the skin) +% nnRx(I,J): x-coordinte of neighbor J to I within RCut (including atoms in the skin) +% nnRy(I,J): y-coordinte of neighbor J to I within RCut (including atoms in the skin) +% nnRz(I,J): z-coordinte of neighbor J to I within RCut (including atoms in the skin) +% nnType(I,J): The neighbor J of I corresponds to some translated atom number in the box that we need to keep track of +% nnStruct(I,J): The neigbors J to I within Rcut that are all within the box (not in the skin). +% nrnnStruct(I): Number of neigbors to I within Rcut that are all within the box (not in the skin). + +Lx = LBox(1); Ly = LBox(2); Lz = LBox(3); % Dimensions of periodic BC +nx = floor(Lx/Rcut); ny = floor(Ly/Rcut); nz = floor(Lz/Rcut); % Division into # cell boxes: nx, ny, nz + +nndist = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); % Allocation of memory, not optimized! +nnRx = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); % Make sure the fastes allocation for Forstran is used, e.g. (N,1) instead of (1,N) or the opposite! +nnRy = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); +nnRz = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); +type = zeros(10*N); +nnType = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); +nnStruct = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); +nrnnStruct = zeros(N,1); +nrnnlist = zeros(N,1); + +% Simple N^2 brute force nearest neighborlist + for i = 1:N + cnt = 0; + tmp = zeros(N,1); + for m = 1:N + for j = -1:1 + for k = -1:1 + for l = -1:1 + Tx = Rx(m)+j*Lx; % Search all neigbors within a single translation (multiple translations could be necessary for small systems! + Ty = Ry(m)+k*Ly; + Tz = Rz(m)+l*Lz; + dist = norm([Rx(i),Ry(i),Rz(i)]-[Tx,Ty,Tz]); +% if (dist < Rcut) & (dist > 1e-12) % Neighbors within Rcut inlcuidng translated atoms in the "skin" + if (dist < Rcut) % Neighbors within Rcut inlcuidng translated atoms in the "skin" + cnt = cnt + 1; + nndist(i,cnt) = dist; + nnRx(i,cnt) = Tx; + nnRy(i,cnt) = Ty; + nnRz(i,cnt) = Tz; + nnType(i,cnt) = m; % Neigbor is number of original ordering number m in the box that might have been stranslated to the skin + tmp(m) = m; + end + end + end + end + end + nrnnlist(i) = cnt; + cnt2 = 0; + for ss = 1:N + if tmp(ss) > 0 % Includes only neighbors in the box within Rcut (without the skin) + cnt2 = cnt2 + 1; + nnStruct(i,cnt2) = ss; + end + end + nrnnStruct(i) = cnt2; + end + diff --git a/proxies/python/aosa_hamiltonian.py b/proxies/python/aosa_hamiltonian.py new file mode 100644 index 00000000..b8a82897 --- /dev/null +++ b/proxies/python/aosa_hamiltonian.py @@ -0,0 +1,130 @@ +"""AOSA and LATTE - prototype hamiltonian elements +Atomic orbital spherical approximation + - Reads the total number of atoms + - Constructs a set of random coordinates + - Constructs a simple Hamiltonian + - Computes the hamiltonian derivatives +""" + +import os +import sys + +import numpy as np +import scipy.linalg as sp +import sedacs.driver +#import sedacs.interface_modules +from sedacs.dev.io import src_path + +try: + import ctypes + + # import gpulibInterface as gpu + + gpuLib = True + arch = "nvda" + pwd = os.getcwd() + + if arch == "nvda": + print("loading nvidia...") + lib = ctypes.CDLL(str((src_path() / "gpu/nvda/libnvda.so").absolute())) + if arch == "amd": + lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) + +except: + gpuLib = False + + +__all__ = [ + "AOSA_Parameters", + "AOSA_Parameter", + "get_integral", + "get_integral_v1", +] + +class AOSA_Parameter: + def __init__(self,symbol,orb,filePath): + self.symbol = symbol + self.orbType = orb + parFile = open(filePath,"r") + count = 0 + symbFound = False + orbFound = False + for line in parFile: + info = line.split() + if(len(info) >= 1): + print(info) + if(info[0] == "Element="): + if(info[1] == symbol): + norbs = int(info[3]) + symbFound = True + print(info[1],symbol,symbFound) + if(symbFound and info[3] == orb): + print(info[5]) + orbFound = True + self.onsite = float(info[5]) + self.u = float(info[7]) + self.nl = int(info[9]) + self.kappas = np.zeros((self.nl)) + self.ds = np.zeros((self.nl,3)) + self.gammas = np.zeros((self.nl,4)) + if(symbFound and orbFound and info[0] == "LobeIndex="): + self.kappas[count] = float(info[3]) + self.ds[count,0] = float(info[5]) + self.ds[count,1] = float(info[6]) + self.ds[count,2] = float(info[7]) + + self.gammas[count,0] = float(info[9]) + self.gammas[count,1] = float(info[10]) + self.gammas[count,2] = float(info[11]) + self.gammas[count,3] = float(info[12]) + + count = count + 1 + + if(count == self.nl): + break + + + +def get_integral(coordsI,symbolI,orbI,coordsJ,symbolJ,orbJ): + + parI = AOSA_Parameters(symbolI,orbI) + parJ = AOSA_Parameters(symbolJ,orbJ) + + RIJ = coordsJ - coordsI + #Expo + inte = 0.0 + for li in range(parI.nl): + for lj in range(parJ.nl): + sn = np.sign(parI.kappas[li])*np.sign(parJ.kappas[lj]) + kappaIJ = sn*(abs(parI.kappas[li]) + abs(parJ.kappas[lj]))/2 + gammaIJ = (parI.gammas[li,0] + parI.gammas[li,0])/2 + dIJ = RIJ + parJ.ds[lj,:] - parI.ds[li,:] + #dIJ = np.dot(RIJ,parJ.ds[lj,:]) + parJ.ds[lj,:] - parI.ds[li,:] + inte = inte + kappaIJ*np.exp(gammaIJ*np.linalg.norm(dIJ)) + + sval = inte + hval = inte*(parI.onsite + parJ.onsite)/2 + + return hval, sval + + + +def get_integral_v1(coordsI,coordsJ,parI,parJ): + + RIJ = coordsJ - coordsI + #Expo + inte = 0.0 + for li in range(parI.nl): + for lj in range(parJ.nl): + sn = np.sign(parI.kappas[li])*np.sign(parJ.kappas[lj]) + kappaIJ = sn*(abs(parI.kappas[li]) + abs(parJ.kappas[lj]))/2 + gammaIJ = (parI.gammas[li,0] + parJ.gammas[lj,0])/2 + dIJ = RIJ + parJ.ds[lj,:] - parI.ds[li,:] + inte = inte + kappaIJ*np.exp(gammaIJ*np.linalg.norm(dIJ)) + + sval = inte + hval = inte*(parI.onsite + parJ.onsite)/2 + + return hval, sval + + diff --git a/proxies/python/chemical_potential.py b/proxies/python/chemical_potential.py new file mode 100644 index 00000000..4aed1810 --- /dev/null +++ b/proxies/python/chemical_potential.py @@ -0,0 +1,211 @@ +"""Chemical potential. This module will handle functions +related to the computation of chemical potential or Fermi +""" + +import os +import sys + +import numpy as np +import scipy.linalg as sp +import sedacs.driver +from sedacs.dev.io import src_path +from hamiltonian_elements import * +from sedacs.file_io import read_coords_file, write_xyz_coordinates +from dnnprt import * +from proxy_global import * +from hamiltonian_random import get_random_hamiltonian +from hamiltonian_random import get_random_coordinates +from hamiltonian_random import RandomNumberGenerator + + +__all__ = [ + "get_mu", + "fermi_dirac", +] + + +## Fermi-Dirac function +# @brief Get the Fermi-Dirac distribution probabilities given a set +# of energy values +# @param mu Chemical potential +# @param energy Energy value/s +# @param etemp Electronic temperature [K] +# @param kB Boltzman constant (default is in eV/K) +# +def fermi_dirac(mu, energy, temp, kB=8.61739e-5): + ''' + Get Fermi probability distributions (values are between 0 and 1) + ''' + fermi = 1/(1 + np.exp((energy - mu)/(kB*temp))) + + return fermi + + +## Comput the chemical potential +# @brief Get the chemical potential from a set of eigenvalues and their weights +# coputed from a partial trace over a "subsytem". It first uses a Newton-Raphson (NR) +# scheme. It then applies a bisection method if NR does not converge +# @param mu0 Initial guess of mu. If set to None, it will use (HOMO+LUMO)/2. +# @param evals Eigenvalues of the system +# @param etemp Electronicn temperature +# @param nocc Number of occupied orbitals (This is typically coputed from the total +# number of electrons) +# @param dvals Weights computed from a partial trace. If set to None, weights are set to 1.0. +# @param kB Boltzman constant (default is in eV/K) +# @param verb Verbosity switch +# +def get_mu(mu0, evals, etemp, nocc, dvals=None, kB=8.61739e-5, verb=False): + + if(verb): + print('\nCalculating mu ...,') + + a = 1.0 + nmax = 30 + tol = 1.0E-10 + + HOMO = evals[int(nocc)] + LUMO = evals[int(nocc) + 1] + mu = 0.5*(LUMO + HOMO) + norbs = len(evals) + notConverged = False + if(dvals is None): + dvals = np.ones((norbs)) + for i in range(nmax+1): + fermi = fermi_dirac(mu, evals, temp) + occ = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) + occErr = abs(occ - nocc) + dFermiDmu = (1/(kB*temp))*fermi*(1.0-fermi)*dvals + occ_prime = np.sum([dFermiDmu[i]*dvals[i] for i in range(norbs)]) + mu = mu + a*(nocc - occ)/occ_prime + if abs(occErr) < tol: + break + elif(abs(mu) > 1.0E10): + print('WARNING: Newton-Raphson did not converge (will try bisection) Occupation error = ', occErr) + notConverged = True + break + if verb: + print('N-R iteration (i,mu,occ,occErr)', i, mu, occ, occErr) + if(i == nmax): + print('WARNING: Newton-Raphson did not converge (will try bisection) Occupation error = ', occErr) + notConverged = True + + if(notConverged): + muMin = np.min(evals) + muMax = np.max(evals) + mu = muMin + step = abs(muMax-muMin) + Ft1 = 0.0 + Ft2 = 0.0 + prod = 0.0 + + #Sum of the occupations + fermi = fermi_dirac(mu, evals, temp) + ft1 = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) + ft1 = ft1 - nocc + + for i in range(1000001): + if(i == 1000000): + print("Bisection method in gpmdcov_musearch_bisec not converging ...") + exit(0) + if(mu > muMax + 1.0 or mu < muMin - 1.0): + print("Bisection method is diverging") + print("muMin=",muMin,"muMax=",muMax) + print(evals) + exit(0) + + if(abs(ft1) < tol): #tolerance control + occErr = ft2 + break + mu = mu + step + + ft2 = 0.0 + + #New sum of the occupations + fermi = fermi_dirac(mu, evals, temp) + ft2 = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) + + ft2 = ft2 - nocc + + #Product to see the change in sign. + prod = ft2*ft1 + if(prod < 0): + mu = mu - step + step = step / 2.0 #If the root is inside we shorten the step. + else: + ft1 = ft2 #If not, Ef moves forward. + if verb: + print('Bisection iteration (i,mu,occ,occErr);', i, mu, occ, ft2) + + print('Final mu, error:', mu, occErr) + + return mu + +## Estimates mu from a matrix using the Girshgorin centers +# @brief It will use the diagonal elements as an approximation +# for eigenvalues. +# @param ham Hamiltonian matrix +# @param etemp Electroninc temperature +# @param nocc Number of occupied states +# @param kB Boltzman constante (default is in units of eV/K) +# @param verb Vorbosity switch +# +def estimate_mu(ham,etemp,nocc,kB=8.61739e-5,verb=False): + diag = np.sort(np.diagonal(ham)) + if(verb): + print("Estimating the chemical potential from diagonal elements ... \n") + mu0 = 0.5*(np.max(diag) + np.min(diag)) + print("diag",diag) + print("Mu0",mu0) + mu = get_mu(mu0,diag,etemp,nocc,kB=kB,dvals=None,verb=True) + + return mu + + +if __name__ == "__main__": + + n = len(sys.argv) + + if n == 1: + print("Give the total number of elements. Example:\n") + print("proxy_a 100\n") + sys.exit(0) + else: + norbs = int(sys.argv[1]) + + verb = True + + #Build random coordinates + coords = get_random_coordinates(norbs) + + #Build random Hamiltonian (Anders' version) + ham = get_random_hamiltonian(coords) + + print("\n Hamiltonan:") + print(ham) + + nocc = 0.5*norbs + etemp = 10000 + + #Scale the diagonal elements + scalingFactor = 1.0 + for i in range(norbs): + ham[i,i] = scalingFactor*ham[i,i] + + #Estimate mu from the diagonal elements of H + muEst = estimate_mu(ham,etemp,nocc,kB=8.61739e-5) + print("\n Estimated mu:",muEst) + + #Get eigenvalues and eigenvectors + evals, evects = sp.eigh(ham) + + #Compute exact mu + mu0 = 0.0 + muReal = get_mu(mu0,evals,etemp,nocc,dvals=None,verb=True) + print("\n Exact mu:",muEst) + + print("\n Realative error of mu estimation",abs((muReal - muEst)/muReal)) + + + + + diff --git a/proxies/python/coordinates.py b/proxies/python/coordinates.py new file mode 100644 index 00000000..05a4f04b --- /dev/null +++ b/proxies/python/coordinates.py @@ -0,0 +1,58 @@ +"""coordinates +This code is only used to guide implemetations and understand which are the +basic elements needed to interface with the sedacs driver. +""" + +import os +import sys +import numpy as np +from random_numbers import RandomNumberGenerator + +__all__ = [ + "get_random_coordinates", +] + + +## Generating random coordinates +# @brief Creates a system of size "nats = Number of atoms" with coordindates having +# a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. +# This funtion is only used for testing purposes. +# @param nats The total number of atoms +# @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] +# +def get_random_coordinates(nats): + """Get random coordinates""" + length = int(nats ** (1 / 3)) + 1 + coords = np.zeros((nats, 3)) + latticeParam = 2.0 + atomsCounter = -1 + myrand = RandomNumberGenerator(111) + for i in range(length): + for j in range(length): + for k in range(length): + atomsCounter = atomsCounter + 1 + if atomsCounter >= nats: + break + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 0] = i * latticeParam + rnd + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 1] = j * latticeParam + rnd + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 2] = k * latticeParam + rnd + return coords + + +if __name__ == "__main__": + n = len(sys.argv) + if n == 1: + print("Give the total number of atoms. Example:\n") + print("python coordinates.py 100\n") + sys.exit(0) + else: + nats = int(sys.argv[1]) + + verb = True + + coords = get_random_coordinates(nats) + + print("Coordinates:",coords) diff --git a/proxies/python/density_matrix.py b/proxies/python/density_matrix.py new file mode 100644 index 00000000..9f3c174f --- /dev/null +++ b/proxies/python/density_matrix.py @@ -0,0 +1,309 @@ +"""density_matrix +Computes the Density matrix from a given Hamiltonian +This code is only used to guide implemetations and understand which are the +basic elements needed to interface with the sedacs driver. +""" + +import os +import sys + +import numpy as np +import scipy.linalg as sp +from hamiltonian_elements import * +from dnnprt import * +from proxy_global import * +from coordinates import get_random_coordinates +from hamiltonian_random import get_random_hamiltonian +from proxies.python.hamiltonian import get_hamiltonian_proxy +from chemical_potential import fermi_dirac, get_mu +from nonortho import get_xmat +import gpuLibInterface as gpu +from init_proxy import init_proxy_accelerators +from proxy_global import bring_ham_list, bring_dm_list, bring_cublas_handle_list, bring_stream_list + +try: + import ctypes + + + gpuLib = True + arch = "nvda" + pwd = os.getcwd() + + if arch == "nvda": + print("loading nvidia...") + lib = ctypes.CDLL("/home/finkeljo/sedacs-gpmdsp2/src/sedacs/gpu/nvda/libnvda.so") + if arch == "amd": + lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) + +except: + gpuLib = False + +import ctypes + + + +__all__ = [ + "get_density_matrix_proxy", + "get_density_matrix_gpu", +] + + +## Computes the Density matrix from a given Hamiltonian. +# @author Anders Niklasson +# @brief This will create a Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# +# @param ham Hamiltonian matrix +# @param nocc Number of occupied orbitals +# @param core_size Number of atoms in the cores. +# @param method Type of algorithm used to compute DM +# @param accel Type of accelerator/special device used to compute DM. Default is No and +# will only use numpy. +# @param mu Chemical potential. If set to none, the calculation will use nocc +# @param etemp Electronic temperature +# @param overlap Overlap matrix +# @param verb Verbosity. If True is passed, information is printed. +# +# @return rho Density matrix +# +def get_density_matrix_proxy(ham, nocc, norbsInCore=None, method="Diag", accel="No", mu=None, etemp=0.0, overlap=None, full_data=False, verb=False, lib=None): + """Calcualtion of the full density matrix from H""" + if verb: + print("Computing the Density matrix") + + norbs = len(ham[:, 0]) + ham_orth = np.zeros((norbs, norbs)) + if overlap is not None: + # Get the inverse overlap factor + zmat = get_xmat(overlap, method="Diag", accel="No", verb=False) + + # Orthogonalize Hamiltonian + ham_orth = np.matmul(np.matmul(np.transpose(zmat), ham), zmat) + else: + ham_orth[:, :] = ham[:, :] + + if method == "Diag" and accel == "No": + evals, evects = sp.eigh(ham_orth) + print("evals",evals) + homoIndex = nocc - 1 + lumoIndex = nocc + + #If mu is not set we set mu HOMO+LUMO/2 + if (mu is None): + mu = 0.5 * (evals[homoIndex] + evals[lumoIndex]) + else: + pass + + if verb: + print("Chemical potential = ", mu) + + rho = np.zeros((norbs, norbs)) + if verb: + print("Eigenvalues of H:", evals) + + #If the electronic temperature is 0 + if(etemp < 1.0E-10): + for i in range(norbs): + if evals[i] < mu: + rho = rho + np.outer(evects[:, i], evects[:, i]) + else: + #mu = get_mu(mu, evals, etemp, nocc, dvals=None, kB=8.61739e-5, verb=False) + fvals = np.zeros((norbs)) + fvals = fermi_dirac(mu, evals, etemp, kB=8.61739e-5) + for i in range(norbs): + if evals[i] < mu: + rho = rho + fvals[i]*np.outer(evects[:, i], evects[:, i]) + + elif method == "SP2" and accel == "No": + #rho = dnnprt(ham_orth, norbs, nocc, H1=None, refi=False) + #rho = movingmu_sp2(ham,mu=mu,thresh=0.0,miniter=5,maxiter=50,sp2conv=1.0E-6,idemtol=1.0E-6,verb=True) + #rho = golden_sp2(ham,mu=mu,thresh=0.0,miniter=5,maxiter=50,sp2conv=1.0E-6,idemtol=1.0E-6,verb=True) + rho = sp2_basic(ham,nocc,thresh=0.0,minsp2iter=5,maxsp2iter=30,sp2conv=1.0E-5,idemtol=1.0E-5,verb=True) + + elif method == "SP2" and accel == "TC": + + accel_lib = bring_accel_lib() + + #print("--------set stream in python--------------") + #stream=gpu.set_stream(accel_lib); + #print(id(stream),stream) + + + + #print("\n") + #print("--------init cublas handle in python--------------") + #cublas_handle = gpu.cublasInit(accel_lib) + #print(id(cublas_handle),cublas_handle) + + cublas_handle_list=bring_cublas_handle_list() + streams_list = bring_stream_list() + dev_list = bring_dev_list() + d_ham = dev_list[0] + d_dm = dev_list[1] + + test_handle = cublas_handle_list[0] + test_stream = streams_list[0] + + # determine size + size_of_double = 8 #bytes + matSize = norbs * norbs * size_of_double + + size_of_float = 4 #bytes + matSize_f = norbs * norbs * size_of_float + + pinned_ham = dev_list[10] + pinned_dm = dev_list[11] + #gpu.memcpyHtoH(pinned_ham, ham, matSize, accel_lib) + #gpu.memcpyHtoD(d_ham, pinned_ham, matSize, accel_lib) + gpu.memcpyHtoD(d_ham, ham, matSize, accel_lib) + #e,v = np.linalg.eigh(ham) + #print(e) + rho=np.empty((norbs,norbs)) + print("device is = ", gpu.get_device(accel_lib)) + #ham = d_ham_list[0] + #dm = d_dm_list[0] + + + gpu.dmDNNSP2(dev_list,norbs,nocc,test_handle,test_stream,accel_lib) + + #gpu.dmGoldenSP2(d_ham_list[0],d_dm_list[0],norbs,mu,cublas_handle,accel_lib) + gpu.memcpyDtoH(rho, d_dm, matSize, accel_lib) + #gpu.memcpyDtoH(pinned_dm, d_dm_list[0], matSize, accel_lib) + #gpu.memcpyDtoH(pinned_dm, d_dm, matSize, accel_lib) + #gpu.memcpyHpinnedtoH(rho, pinned_dm, matSize, accel_lib) + #e1,v1 = np.linalg.eigh(rho) + + #gpu.dmMovingMuSP2(d_ham_list[0],d_dm_list[0],norbs,mu,cublas_handle,accel_lib) + #gpu.memcpyDtoH(rho, d_dm_list[0], matSize, accel_lib) + #e2,v2 = np.linalg.eigh(rho) + #for i in range(0,norbs): + # print(e1[i],e2[i]) + #exit() + #rho = sp2_basic(ham,nocc,thresh=0.0,minsp2iter=5,maxsp2iter=30,sp2conv=1.0E-5,idemtol=1.0E-5,verb=True) + + elif method == "SP2" and accel == "PBML": + print("No method yet") + else: + print("The combination of method and accelerator is unknown") + exit(0) + + if(overlap is not None): + rho = np.matmul(np.matmul(zmat,rho),np.transpose(zmat)) + + print(norbs) + dvals = np.zeros((norbs)) + if(method == "Diag"): + if (overlap is not None): + overTimesEvects = np.dot(overlap,evects) + else: + overTimesEvects = evects + for i in range(norbs): + #dvals = np.append(dvals, np.inner(evects[:norbsInCore,i],overTimesEvects[:norbsInCore,i])) + dvals[i] = np.inner(evects[:norbsInCore,i],overTimesEvects[:norbsInCore,i]) + else: + if(norbsInCore is not None): + dvals[:] = norbsInCore/norbs + else: + dvals[:] = 1.0 + + evals = np.zeros(norbs) + evals = np.diag(ham_orth) #We estimate the eigenvaluse from the Girshgorin centers + + + #print("Ham\n",ham_orth) + #print("Mu",mu) + #print("DM\n") + diagonal = np.diag(rho) + #print("tr",np.trace(rho)) + #print("NOCC",nocc,norbs) + #for i in range(norbs): + # print(diagonal[i]) + + #evals, evects = sp.eigh(rho) + if(full_data): + return rho, evals, dvals + else: + return rho + + + +## Computes the Density matrix from a given Hamiltonian. +# @author Josh Finkelstein +# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# using GPU/AI accelerator library +# +# @param H Hamiltonian matrix +# @param Nocc Number of occupied orbitals +# @param verb Verbosity. If True is passed, information is printed. +# +# @return D Density matrix +# +def get_density_matrix_gpu(H, N, Nocc, lib, verb=False): + """Calcualted the full density matrix from H""" + if verb: + print("Computing the Density matrix using GPU/AI accel library") + + # init DM + D = np.zeros((N, N)) + kbt = 0.1 + + # get DM from cusolver diag + #dm = gpu.dmDNNSP2(H,D,N,Nocc,lib) + # dm = gpu.dmCheby(H,D,N,Nocc,kbt,lib) + print("Density matrix=", D) + # dm = gpu.dmDiag(H,D,N,Nocc,kbt,lib) + # print("Density matrix=",dm) + #dm = gpu.dmMLSP2(H, D, N, Nocc, lib) + return D + + +if __name__ == "__main__": + n = len(sys.argv) + if n == 1: + print("Give the name of the algorithm and the total number of atoms. Example:\n") + print("density_matrix get_density_matrix_proxy 100\n") + sys.exit(0) + else: + algo = str(sys.argv[1]) + nats = int(sys.argv[2]) + + verb = True + coords = get_random_coordinates(nats) + atomTypes = np.zeros((nats),dtype=int) + symbols = []*nats + symbols[:] = "H" + + filename = "aosa_parameters.dat" + bas_per_atom = [1] + tbparams = read_tbparams(filename, symbols, bas_per_atom) + + nvtx.push_range("get hamiltonian proxy",color="blue", domain="get proxy h") + ham, over = get_hamiltonian_proxy(coords, atomTypes, symbols, get_overlap=True) + nvtx.pop_range(domain="get proxy h") + if (gpuLib == True): + ## + size_of_double = 8 # bytes + matSize = nats * nats * size_of_double + # cublas_handle = gpu.cublasInit(lib) + + #if (eng.accel == "TC"): + init_proxy_accelerators(1,4096) + + ## async copy of ham from host to device + gpu.memcpyHtoD(dev_list[0], ham, matSize, lib) + + + + + + if(algo == "get_density_matrix_proxy"): + occ = int(float(nats) / 2.0) + rho1 = get_density_matrix_proxy(ham, occ, method="SP2") + print(lib) + rho2 = get_density_matrix_proxy(ham, occ, method="SP2", accel="TC",d_ham=d_ham,d_dm=d_dm,lib=lib) + print("Density matrix=", rho1) + print("Density matrix=", rho2) + diff --git a/proxies/python/dnnprt.py b/proxies/python/dnnprt.py new file mode 100644 index 00000000..ae8d554a --- /dev/null +++ b/proxies/python/dnnprt.py @@ -0,0 +1,279 @@ +#!/usr/bin/env python +import numpy as np +import os, sys, argparse, time + + +def gershgorin(M): + # find eigenvalue estimates of the matrix M from the Gershgorin circle theorem + min_e = 0 + max_e = 0 + + for i in range(0, np.shape(M)[0]): + e = M[i, i] # Gershgorin eigenvalue circle center + r = 0 + + for j in range(0, np.shape(M)[0]): # compute sum of abs. val of components in row i + r += np.abs(M[i, j]) + + r -= np.abs(e) # Gershgorin eigenvalue circle radius + + # update min and max eigenvalues as you loop over rows + if e - r < min_e: + min_e = e - r + elif e + r > max_e: + max_e = e + r + + return (min_e, max_e) + + +def dual_half(S): + # Calculation of X^2 as defined in equation (15). Note that precision in numpy is closed under alegbraic operations when of the same data type and inherits the precision of the highest precision operand when not of the same data type. + S0 = np.half(S) + S1 = np.single(np.half(S - S0)) + S0S0 = np.single(np.matmul(S0, S0)) + S0S1 = np.matmul(S0, S1) + X = S0S0 + (S0S1 + np.transpose(S0S1)) + return X + +##SP2 method. +# @param h_bml Input Hamiltonian matrix +# @param rho_bml Output density matrix +# @param threshold Threshold for sparse matrix algebra +# @param bndfil Bond +# @param minsp2iter Minimum sp2 iterations +# @param maxsp2iter Maximum SP2 iterations +# @param sp2conv Convergence type +# @param idemtol Idempotency tolerance +# @param verbose A verbosity level +def sp2_basic(ham,occ,thresh=0.0,minsp2iter=5,maxsp2iter=30,sp2conv=1.0E-5,idemtol=1.0E-5,verb=False): + + hdim = len(ham[:,0]) + + # Normalize + emin, emax = gershgorin(ham) + rho = np.zeros((hdim,hdim)) + rho[:,:] = ham[:,:] + ident = np.diag(np.ones(hdim)) + rho[:,:] = (emax * ident[:,:] - ham[:,:]) / (emax - emin) + + # X2 <- X + for i in range(maxsp2iter): + + trx = np.trace(rho) + + #X2 <- X * X + X2 = np.dot(rho, rho) + + trx2 = np.trace(X2) + + #Trace reduction + if(verb): print("sp2iter", iter, occ, trx, abs(occ-trx)) + + if(trx - occ <= 0.0): + + #X <- 2 * X - X2 + rho = 2*rho - X2 + + trx = 2.0 * trx - trx2 + + else: + + #X <- X2 + rho[:,:] = X2[:,:] + + trx = trx2 + + + if(abs(occ-trx) < idemtol and i > minsp2iter): + break + + if(iter == maxsp2iter): + print("sp2 purification is not converging: stop!") + raise 1 + + + #rho = 2.0 * rho + + print("Rho inside",rho) + return rho + + + +#### DEEP-NN FORMULATION OF THE RECURSIVE SP2 FERMI-OPERATOR EXPANSION SCHEME +def dnnprt(H0, N, Nocc, H1=None, refi=False): + """ + Compute density matrix and first order response to perturbation, H1, in the + Hamiltonian, H0. Implementation mimics mixed precision solver. + + Inputs: + ------ + + H0: Hamiltonian matrix + H1: Perturbation to H0 + N: Matrix size + Nocc: Occupation number + dm_only: Compute density matrix only (True/False) + refi: Compute fp64 refinement (True/False) + + """ + np.set_printoptions(precision=15) + + dm_only = True + if H1 is not None: + dm_only = False + + #### INITIALIZE + eps = 1e-16 # Small value, but such that +/- eps is finite in single precision + Csp2 = 4.5 # Convergence criterion as derived by Emanuel + sgn = 0 # Initial value of sgn + I = np.eye(N) # Identity matrix + maxlayer = 100 # Maximum number of layers + v_sgn = np.zeros(maxlayer) # Keeps track of binary in-place learning choices + idemp_err = np.zeros(maxlayer) # Local error estimate + if dm_only == False: + idemp_err_1 = np.zeros(maxlayer) # Local error estimate + + #### CHOSE POST-PROCESSING ACTIVATION FUNCTION REFINEMENT OR NOT + Refinement = True # Or False + + #### LOAD HAMILTONIAN AS INPUT LAYER + X0 = H0 # Initial input layer + if not dm_only: + X1 = H1 + + #### 'EXACT' SOLUTION FOR COMPARISION ONLY + # e, v = np.linalg.eig(H0 + H1) # Diagonlize H as a brute force comparision + # e = np.sort(e) # Sort eigenvalues in increasing order + # E0 = np.sum(e[0:Nocc]) # Sum over the lowest Nocc states using absurd indexing + + #### INITIAL IN-PLACE LEARNING FOR FIRST LAYER + (hN, h1) = gershgorin(X0) # Alternatively, obtain eigenvalue estimates using Gersgorin circle theorem + W0 = -1 / (hN - h1) # Weight (scalar) + B0 = (hN / (hN - h1)) * I # Bias (diagonal matrix) + + #### INITIAL LINEAR TRANSFORM + S0 = W0 * X0 + B0 + S0 = np.single(S0) # Store in single precision + TrS0 = np.trace(S0) # Keep track of occupation + + if dm_only == False: + S1 = W0 * X1 + S1 = np.single(S1) # Store in single precision + TrS1 = np.trace(S1) # Keep track of occupation + + start = time.time() + #### COMPUTATIONAL DEEP LAYERS + for layer in range(maxlayer): + """ SP2 """ + #### ACTIVATION FUNCTION FROM TWO DUAL HALF-PRECISION MATRIX-MATRIX MULTIPLICATIONS + X0_h = np.single( + np.half(S0) + ) # First half-precision repsentation of X, single used to allow single accumulation + X0_l = np.single( + np.half(S0 - X0_h) + ) # Second half-precision repsentation of X, single used to allow single accumulation + X0_hh = np.single(np.matmul(X0_h, X0_h)) # Half-precision multiplication with single accumulation + X0_hl = np.single(np.matmul(X0_h, X0_l)) # Half-precision multiplication with single accumulation + X0_lh = np.transpose(X0_hl) # Use the matrix symmetry of X0 and X1 from the symmetry of S + X0 = np.single(X0_hh + X0_hl + X0_lh) # Additions in single precision + TrX0 = np.trace(X0) # Approximate occupation + print("TrX0",TrX0) + """""" """""" + + """ response """ + if dm_only == False: + #### ACTIVATION FUNCTION FROM TWO DUAL HALF-PRECISION MATRIX-MATRIX MULTIPLICATIONS + X1_h = np.single( + np.half(S1) + ) # First half-precision repsentation of X, single used to allow single accumulation + X1_l = np.single( + np.half(S1 - X1_h) + ) # Second half-precision repsentation of X, single used to allow single accumulation + X0X1_hh = np.single(np.matmul(X0_h, X1_h)) # Half-precision multiplication with single accumulation + X0X1_hl = np.single(np.matmul(X1_h, X0_l)) # Half-precision multiplication with single accumulation + X0X1_lh = np.single(np.matmul(X1_h, X0_l)) # Use the matrix symmetry of X0 and X1 from the symmetry of S + X0X1 = np.single(X0X1_hh + X0X1_hl + X0X1_lh) # Additions in single precision + X1X0 = np.transpose(X0X1) + X1 = np.single(X0X1 + X1X0) + TrX1 = np.trace(X1) # Approximate occupation + """""" """""" + + #### ERROR ESTIMATE OF IDEMPOTENCY + idemp_err[layer] = TrS0 - TrX0 # Error estimate for in-place learning and convergence control + + if dm_only == False: + idemp_err_1[layer] = TrS1 - TrX1 # Error estimate for in-place learning and convergence control + print( + layer, "Idemp error estimate:" + str(idemp_err_1[layer]) + ) # Can reach 0 exactely in low precision arithmetics + + #### LEARNING THROUGH A BINARY ON-THE-FLY IN-PLACE ERROR MINIMIZATION, WHERE sgn = (+/-)*1 + sgn = np.sign(np.abs(2 * TrS0 - TrX0 - Nocc) - np.abs(TrX0 - Nocc) - sgn * eps) + v_sgn[layer] = sgn # Vector with the sgn to keep track + W = sgn # Weight function + B = (1 - sgn) * S0 # Bias function + + #### LINEAR TRANSFORM + S0 = W * X0 + B # Affine linear transform, apply weight and bias + if dm_only == False: + S1 = W * X1 + (1 - W) * S1 # Affine linear transform, apply weight and bias + + #### KEEP TRACK OF THE NEW OCCUPATION + TrS0 = W * TrX0 + (1 - sgn) * TrS0 # Update trace + if dm_only == False: + TrS1 = W * TrX1 + (1 - sgn) * TrS1 # Update trace + + #### CONVERGENCE TEST + if idemp_err[layer] <= 0: + break + if ( + layer > 1 + and v_sgn[layer - 1] != v_sgn[layer - 2] + and idemp_err[layer] >= Csp2 * idemp_err[layer - 2] * idemp_err[layer - 2] + ): + break + + #### POST-PROCESSING REFINEMENT STEP + if refi == True: + #### WITH ACTIVATION FUNCTION REFINEMENT, f(X) = 2*X^2 - X^4, IN DOUBLE PRECISION + X = np.double(S) + X = 2 * X - np.matmul(X, X) + TrS = np.trace(X) + X = np.double(np.matmul(X, X)) + TrX = np.trace(X) + idemp_err[layer + 1] = TrS - TrX + print(layer + 1, "Refined error estimate = " + str(idemp_err[layer + 1])) + num_deep_layers = layer + 1 # +1 to account for the last refinement layer + D = X # Output layer estimate of density matrix + else: + #### WITHOUT ACTIVATION FUNCTION REFINEMENT, f(X) = X # Or, alternativley use half-precision multiplications + num_deep_layers = layer + D0 = np.double(S0) # Output layer estimate of density matrix D + if dm_only == False: + D1 = np.double(S1) # Output layer estimate of density matrix D + + end = time.time() + flops = 2 * N * N * N * num_deep_layers / (end - start) + print(str(end - start) + " sec") + print("FLOPS = " + str(flops / 1e12) + " teraflops") + + #### DOUBLE PRECISION ERROR ESTIMATES OF THE CONVERGED DENSITY MATRIX D + occ_err = np.abs(np.trace(D0) - Nocc) # Occupation Error + D02 = np.matmul(D0, D0) # Matrix square (for error analysis only!) + idem_err = np.abs(np.trace(D02) - np.trace(D0)) # Error estimate, Tr(X2-X) + idem_err_2_norm = np.linalg.norm(D02 - D0) # Idempotency Error in 2-norm + comm_err = np.linalg.norm(np.matmul(D0, H0) - np.matmul(H0, D0)) # Commutation error + energy = np.trace(-np.matmul(D0, H0)) # Band-energy + # energy_err = np.abs(energy - E0) # Band-energy error + + if not dm_only: + energy_1 = np.trace(np.matmul(D0, H1)) + energy_2 = 0.5 * np.trace(np.matmul(D1, H1)) + else: + energy_1 = None + energy_2 = None + + if dm_only: + return D0 + else: + return D0, D1 diff --git a/proxies/python/energy_and_forces.py b/proxies/python/energy_and_forces.py new file mode 100644 index 00000000..c9bd205e --- /dev/null +++ b/proxies/python/energy_and_forces.py @@ -0,0 +1,664 @@ +"""proxy code a +A prototype engine code that: + - Computes TB + coulombic forces + - Coputes band and coulombic energies +This code is only used to guide implemetations and understand which are the +basic elements needed to interface with the sedacs driver. +""" + +import os +import sys + +import numpy as np +import scipy.linalg as sp +import sedacs.driver +from sedacs.dev.io import src_path +from proxies.python.hamiltonian_elements import * +from sedacs.file_io import read_coords_file, write_xyz_coordinates +from proxies.python.dnnprt import * +from proxies.python.proxy_global import * + +__all__ = [ + "get_random_coordinates", + "get_hamiltonian_proxy", + "get_density_matrix_proxy", + "get_density_matrix_gpu", + "get_charges_proxy", + "get_tb_forces_proxy", + "get_ppot_energy_expo_proxy", + "init_proxy_proxy", + "get_ppot_forces_expo_proxy", + "build_coul_ham_proxy", +] + + +## Simple random number generator +# This is important in order to compare across codes +# written in different languages. +# +# To initialize: +# \verbatim +# myRand = rand(123) +# \endverbatim +# where the argument of rand is the seed. +# +# To get a random number between "low" and "high": +# \verbatim +# rnd = myRand.get_rand(low,high) +# \endverbatim +# +class RandomNumberGenerator: + """To generate random numbers.""" + + def __init__(self, seed): + self.a = 321 + self.b = 231 + self.c = 13 + self.seed = seed + self.status = seed * 1000 + + def generate(self, low, high): + """Get a random real number in between low and high.""" + w = high - low + place = self.a * self.status + place = int(place / self.b) + rand = (place % self.c) / self.c + place = int(rand * 1000000) + self.status = place + rand = low + w * rand + + return rand + + +## Generating random coordinates +# @brief Creates a system of size "nats = Number of atoms" with coordindates having +# a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. +# This funtion is only used for testing purposes. +# @param nats The total number of atoms +# @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] +# +def get_random_coordinates(nats): + """Get random coordinates""" + length = int(nats ** (1 / 3)) + 1 + coords = np.zeros((nats, 3)) + latticeParam = 2.0 + atomsCounter = -1 + myrand = RandomNumberGenerator(111) + for i in range(length): + for j in range(length): + for k in range(length): + atomsCounter = atomsCounter + 1 + if atomsCounter >= nats: + break + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 0] = i * latticeParam + rnd + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 1] = j * latticeParam + rnd + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 2] = k * latticeParam + rnd + return coords + +## Initialize proxy code +# @brief We will read all the parameters needed for the +# guest or proxy code to run. Every guest code will need to +# set up an initialization function and save parameters that +# need to be read from file only once. Bond integral parameter, +# pair potential, etc. will be stored in memory by the guest code. +# +def init_proxy_proxy(symbols,bas_per_atom): + #Some codes will have their own input file + #read_proxy_input_file() + #Read pair potentials + read_ppots("ppots.dat",symbols) + print_ppots() + #Read tb parameters + filename = "aosa_parameters.dat" + read_tbparams(filename, symbols, bas_per_atom) + + +## Computes a Hamiltonian based on exponential decay of orbital couplings. +# @author Anders Niklasson +# @brief Computes a hamiltonian based on exponential decays. +# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# @param atomTypes Index type for each atom in the system. Type for first atom = type[0] (not used yet) +# @param symbols Symbols for every atom type +# @param verb Verbosity. If True is passed, information is printed +# @para get_overlap If overlap needs to be returned +# @return ham 2D array of Hamiltonian elements +# +def get_hamiltonian_proxy(coords, atomTypes, symbols, verb=False, get_overlap=False): + """Constructs a simple tight-binding Hamiltonian""" + + # Internal periodic table for the code + symbols_internal = np.array(["Bl", "H", "C", "N", "O", "P"], dtype=str) + numel_internal = np.zeros(len(symbols_internal), dtype=int) + numel_internal[:] = 0, 1, 4, 5, 6, 5 + bas_per_atom = np.zeros(len(symbols_internal), dtype=int) + bas_per_atom[:] = 0, 1, 4, 4, 4, 4 + spOrbTypes = ["s", "px", "py", "pz"] + sOrbTypes = ["s"] + + nats = len(coords[:, 0]) + + # Map symbols to indices in symbols_internal + symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} + + # Translate `symbols` to `symbols_internal` indices + mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) + + # Convert atomTypes to `symbols_internal` indices + atom_internal_indices = mapped_indices[atomTypes] + + + # Sum the corresponding values in bas_per_atom and numel_internal + norbs = np.sum(bas_per_atom[atom_internal_indices]) + numel = np.sum(numel_internal[atom_internal_indices]) + + ham = np.zeros((norbs, norbs)) + if get_overlap: + over = np.zeros((norbs, norbs)) + if verb: + print("Constructing a simple Hamiltonian for the full system") + + colsh = 0 + rowsh = 0 + tbparams = bring_tbparams() + for i in range(0, nats): + for ii in range(bas_per_atom[atom_internal_indices[i]]): + colsh = rowsh + parI = tbparams[atomTypes[i]][ii] + for j in range(i, nats): + if i == j: + llimit = ii + else: + llimit = 0 + for jj in range(llimit,bas_per_atom[atom_internal_indices[j]]): + parJ = tbparams[atomTypes[j]][jj] + hval, sval = get_integral_v1(coords[i],coords[j],parI,parJ) + if(get_overlap): + over[rowsh,colsh] = sval + over[colsh,rowsh] = sval + + ham[rowsh, colsh] = hval + ham[colsh, rowsh] = hval + colsh = colsh + 1 + rowsh = rowsh + 1 + + if get_overlap: + return ham, over + else: + return ham + + +sedacs.driver.get_hamiltonian = get_hamiltonian_proxy + + +## Estimates mu from a matrix using the Girshgorin centers +# @brief It will use the diegonal elements as an approximation +# for eigenvalues. +def estimate_mu(ham,elec_temp,kb): + + diag = ham.np.diagonal(ham) + + +## Add coulombic potentials to the Hamiltonian +# @param ham0 No-SCF Hamiltonian +# @param vcouls Coulombic potentials for every atomic site +# @pparam orbital_based If set to True, coulombic potentials for every orbitals will be +# expected. +# @param hindex will give the orbital index for each atom +# The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1` +# @param overlap Overlap matrix for nonorthogonal formulations. +# @param verb Verbosity switch. +# +def build_coul_ham_proxy(ham0, vcouls, types, charges, orbital_based, hindex, overlap=None, verb=False): + norbs = len(ham0[:, 0]) + vcouls_orbs = np.zeros((norbs), dtype=float) # Expanded coulombic potentials + nats = len(hindex[:]) - 1 + + tbparams = bring_tbparams() + + if orbital_based: + error_at("build_coul_ham", "Orbital-based coulombic potential not implemented") + else: + for i in range(nats): + for ii in range(hindex[i], hindex[i + 1]): + k = ii - hindex[i] + vcouls_orbs[ii] = vcouls[i] + tbparams[types[i]][k].u * charges[i] + if overlap is None: + ham = ham0 + np.diag(vcouls_orbs) + else: + vmat = np.diag(vcouls_orbs) + ham = ham0 + 0.5 * (np.dot(overlap, vmat) + np.dot(vmat, overlap)) + return ham + + +sedacs.driver.build_coul_ham = build_coul_ham_proxy + + +## Computes the Density matrix from a given Hamiltonian. +# @author Anders Niklasson +# @brief This will create a Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# +# @param ham Hamiltonian matrix +# @param nocc Number of occupied orbitals +# @param method Type of algorithm used to compute DM +# @param accel Type of accelerator/special device used to compute DM. Default is No and +# will only use numpy. +# @param mu Chemical potential. If set to none, the calculation will use nocc +# @param elect_temp Electronic temperature +# @param overlap Overlap matrix +# @param verb Verbosity. If True is passed, information is printed. +# +# @return rho Density matrix +# +def get_density_matrix_proxy(ham, nocc, method="Diag", accel="No", mu=None, elect_temp=0.0, overlap=None, verb=False): + """Calcualtion of the full density matrix from H""" + if verb: + print("Computing the Density matrix") + + norbs = len(ham[:, 0]) + ham_orth = np.zeros((norbs, norbs)) + if overlap is not None: + # Get the inverse overlap factor + zmat = get_xmat(overlap, method="Diag", accel="No", verbose=False) + + # Orthogonalize Hamiltonian + ham_orth = np.matmul(np.matmul(np.transpose(zmat), ham), zmat) + else: + ham_orth[:, :] = ham[:, :] + + if method == "Diag" and accel == "No": + evals, evects = sp.eigh(ham_orth) + homoIndex = nocc - 1 + lumoIndex = nocc + mu = 0.5 * (evals[homoIndex] + evals[lumoIndex]) + rho = np.zeros((norbs, norbs)) + if verb: + print("Eigenvalues of H:", evals) + for i in range(norbs): + if evals[i] < mu: + rho = rho + np.outer(evects[:, i], evects[:, i]) + if verb: + print("Chemical potential = ", mu) + elif method == "SP2" and accel == "No": + rho = dnnprt(ham_orth, norbs, nocc, H1=None, refi=False) + print("No method yet") + elif method == "SP2" and accel == "PBML": + print("No method yet") + else: + print("The combination of method and accelerator is unknown") + exit(0) + + if(overlap is not None): + rho = np.matmul(np.matmul(zmat,rho),np.transpose(zmat)) + + return rho + + +sedacs.driver.get_density_matrix = get_density_matrix_proxy + + +## Computes the finite temperature density matrix (DRAFT) +# @todo Write this routine. +def get_density_matrix_T(H, Nocc, Tel, mu0, coreSize, core_ham_dim, S=None, verb=False): + kB = 8.61739e-5 # eV/K, kB = 6.33366256e-6 Ry/K, kB = 3.166811429e-6 Ha/K, #kB = 3.166811429e-6 #Ha/K + if verb: + print("Computing the renormalized Density matrix") + + if S is not None: + E_val, Q = scipy.linalg.eigh(H) ### need S? not ones with S $$$ + else: + E_val, Q = np.linalg.eigh(H) + N = len(H[:, 0]) + + # print('Q\n', Q[:,0]) + + homoIndex = Nocc - 1 + lumoIndex = Nocc + print("HOMO, LUMO:", E_val[homoIndex], E_val[lumoIndex]) + mu_test = 0.5 * (E_val[homoIndex] + E_val[lumoIndex]) # don't need it + print( + N, + Nocc, + ) + print("!!!! mu test:\n", mu_test) + + # use mu0 as a guess + + OccErr = 1.0 + beta = 1.0 / (kB * Tel) + f = np.array([]) + for i in range(N): + f_i = 1 / (np.exp(beta * (E_val[i] - mu0)) + 1) # save fi to f + f = np.append(f, f_i) + # Occ = Occ + f_i*E_occ[i,k] + + D = sum(np.outer(Q[:, i], Q[:, i] * f[i]) for i in range(Nocc)) * 2 + # np.savetxt('co2_32_dm.txt',D) + + # rho = Q@f_vector@Q.T + # or + # rho_ij = SUM_k Q_ik * f_kk * Q_jk + + print("core_ham_dim", core_ham_dim) + dVals = np.array([]) + for i in range(N): + dVals = np.append(dVals, np.inner(Q[:core_ham_dim, i], Q[:core_ham_dim, i])) + + return D, E_val, dVals + + +## Computes the Density matrix from a given Hamiltonian. +# @author Josh Finkelstein +# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# using GPU/AI accelerator library +# +# @param H Hamiltonian matrix +# @param Nocc Number of occupied orbitals +# @param verb Verbosity. If True is passed, information is printed. +# +# @return D Density matrix +# +def get_density_matrix_gpu(H, N, Nocc, lib, verb=False): + """Calcualted the full density matrix from H""" + if verb: + print("Computing the Density matrix using GPU/AI accel library") + + # init DM + D = np.zeros((N, N)) + kbt = 0.1 + + # get DM from cusolver diag + # dm = gpu.dmDNNSP2(H,D,N,Nocc,lib) + # dm = gpu.dmCheby(H,D,N,Nocc,kbt,lib) + print("Density matrix=", D) + # dm = gpu.dmDiag(H,D,N,Nocc,kbt,lib) + # print("Density matrix=",dm) + dm = gpu.dmMLSP2(H, D, N, Nocc, lib) + return D + +## Inverse overlap factorization +# @brief Constructs inverse overlap factors given the overlap matrix +# @param over Overlap matrix +# @param method If a particular needs to be used +# @param accel If an accelerater (hardwar/library/programing model) is used. +# @verb Verbosity switch +## +def get_xmat(over,method="Diag",accel="No",verb=False): + + if(verbose): + print("In get_xmat ...") + + hdim = len(over[0,:]) + if(method == "Diag" and accel == "No"): + e,v = sp.eigh(over) + s = 1./np.sqrt(e) + zmat = np.zeros((hdim,hdim)) + for i in range(hdim): + zmat[i, :] = s[i] * v[:, i] + zmat = np.matmul(v, zmat) + elif method == "Cholesky": + pass + else: + print("ERROR: Method not implemented") + exit(0) + + if verbose: + print("\nZmat Matrix") + print(zmat) + + return zmat + +## Get charges (Mulliken) +# @brief gets the Mulliken charges based on rho +# @param density_matrix Density matrix +def get_charges_proxy(density_matrix,ncores,hindex,overlap=None,verb=False): + if(verb): + status_at("get_charges","Getting charges from density matrix") + + charges = np.zeros((ncores)) + + if overlap is None: + fullDiag = np.diag(density_matrix) + for i in range(ncores): + for ii in range(hindex[i], hindex[i + 1]): + charges[i] = charges[i] + (1.0 - 2.0 * fullDiag[ii]) + else: # S x D + aux = np.dot(overlap, density_matrix) + fullDiag = np.diag(aux) + for i in range(ncores): + for ii in range(hindex[i], hindex[i + 1]): + charges[i] = charges[i] + (1.0 - 2.0 * fullDiag[ii]) + + if verb: + msg = "Total Charge for part= " + str(sum(charges)) + status_at("get_charges", msg) + + return charges + + +## Get TB forces +# \brief Get TB and Coulombic forces from the Hamiltonian, Density matrix +# and charges. +# \param ham Hamiltonian Matrix +# \param rho Density Matrix +# \param field External field +# \param coords Coordinates +# \param atomTypes Atomic types +# \param Symbols Atomic symbols for every type. +## +def get_tb_forces_proxy(ham, rho, charges, field, coords, atomTypes, symbols): + nats = len(coords[:, 0]) + forces = np.zeros((nats, 3)) + forces_coul = np.zeros((nats, 3)) + forces_field = np.zeros((nats, 3)) + forces_band = np.zeros((nats, 3)) + dl = 0.0001 + coordsp = np.zeros((nats, 3)) + coordsm = np.zeros((nats, 3)) + ham = get_hamiltonian_proxy(coords, atomTypes, symbols, verb=False) + vaux = np.ones((nats)) + vaux[:] = 0.5 + rho0 = np.diag(vaux) + + for i in range(len(ham[:, 0])): + # Band Forces from tr(rho dH/dr) + for k in range(3): + coordsp[:, :] = coords[:, :] + coordsp[i, k] = coords[i, k] + dl + hamp = get_hamiltonian_proxy(coordsp, atomTypes, symbols, verb=False) + # Hmu = get_pert(field,coordsp,nats) + # Hp[:,:] = Hp[:,:] + Hmu[:,:] + + coordsm[:, :] = coords[:, :] + coordsm[i, k] = coords[i, k] - dl + hamm = get_hamiltonian_proxy(coordsm, atomTypes, symbols, verb=False) + # Hmu = get_pert(field,coordsm,nats) + # Hm[:,:] = Hm[:,:] + Hmu[:,:] + + dHdx = (hamp - hamm) / (2 * dl) + aux = 2 * np.matmul(rho - rho0, dHdx) + forces_band[i, k] = np.trace(aux) + print("dHdx", dHdx) + + return forces_band + + +def get_ppot_forces_expo_proxy(coords, types): + nats = len(coords[:, 0]) + forces = np.zeros((nats, 3)) + direction = np.zeros(3) + ppots_in = bring_ppots() + ppots = np.zeros((4)) + for i in range(nats): + for j in range(nats): + if i != j: + ii = types[i] + jj = types[j] + ppots[:] = ppots_in[ii, jj, :] + direction = coords[i, :] - coords[j, :] + d = np.linalg.norm(direction) + direction = direction / d + arg = ppots[0] + ppots[1] * d + ppots[2] * d**2 + ppots[3] * d**3 + argPrime = ppots[1] + 2 * ppots[2] * d + 3 * ppots[3] * d**2 + forces[i, :] = -direction * argPrime * (np.exp(arg)) + print(forces[i, :]) + + return forces + + +def get_ppot_energy_expo_proxy(coords, types): + nats = len(coords[:, 0]) + forces = np.zeros((nats, 3)) + direction = np.zeros(3) + energy = 0.0 + ppots_in = bring_ppots() + ppot = np.zeros((4)) + for i in range(nats): + for j in range(nats): + if i != j: + ii = types[i] + jj = types[j] + ppot[:] = ppots_in[ii, jj, :] + direction = coords[i, :] - coords[j, :] + d = np.linalg.norm(direction) + arg = ppot[0] + ppot[1] * d + ppot[2] * d**2 + ppot[3] * d**3 + energy = energy + np.exp(arg) + + return energy + + +## Get band energy +# @brief Get the band energy from the density matrix and the non-SCF Hamiltonian +# @param ham0 Non-scf Hamiltonian matrix +# @param rho0 Atomized density matrix +# @param rho Density matrix +# @return energy Band energy +def get_band_energy(ham0,rho0,rho): + + energy = 2*np.trace(np.dot(ham0,(rho-rho0))) # Single-particle/band energy + return energy + +## Get the electronic free energy +# @brief This computed from the entropy of the Fermi distribution +# @param fvals A vector containing the Fermi function for every eigenenergy +# @param kB Boltzan constant (default is in eV/K) +# @param elect_temp Electronic temperature +# +def get_electron_entropy_energy(fvals,kB=8.61739e-5,elec_temp=0): + if(elec_temp > 1.0E-10): + entropy = 0.0 + tol = 1.0E-9 + entropy = -kB*np.sum( fvals[:]*np.log10(fvals[:]) + (1.0 - fvals[:])*np.log10(1.0 - fvals[:]) ) + else: + entropy = 0.0 + energy = -2.0*elec_temp*entropy + return energy + + +## Get pair potential forces +# \brief We will use a simple LJ +# \param coords +# +def get_ppot_forces_LJ(coords): + # Following Levine + # VLJ = epsilon*( (a/d)^12 - 2*(b/d)^6 ) + # FLJ = espilon*( -12*( (a**12)/(d**13) ) - 12*( (b**6)/(d**7) ) ) + epsilon = 0.1 + a = 1.0 + b = 1.0 + nats = len(coords[:, 0]) + forces = np.zeros((nats, 3)) + direction = np.zeros(3) + for i in range(nats): + for j in range(nats): + if i != j: + direction = coords[i, :] - coords[j, :] + d = np.linalg.norm(direction) + direction = direction / d + forces[i, :] = -direction * epsilon * (-12 * ((a**12) / (d**13)) + 12 * ((b**6) / (d**7))) + + return forces + + +def get_ppot_energy(coords): + epsilon = 0.1 + a = 1.0 + b = 1.0 + nats = len(coords[:, 0]) + direction = np.zeros(3) + energy = 0 + for i in range(nats): + for j in range(nats): + if i != j: + direction = coords[i, :] - coords[j, :] + d = np.linalg.norm(direction) + energy = energy + epsilon * ((a / d) ** 12 - 2 * (b / d) ** 6) + + energy = energy / 2.0 + + return energy + + +if __name__ == "__main__": + n = len(sys.argv) + if n == 1: + print("Give the total number of atoms. Example:\n") + print("proxy_a 100\n") + sys.exit(0) + else: + nats = int(sys.argv[1]) + + verb = True + # coords = get_random_coordinates(nats) + # atomTypes = np.zeros((nats),dtype=int) + # symbols = []*nats + # symbols[:] = "H" + latticeVectors, symbols, atomTypes, coords = read_coords_file("methane.xyz", lib="None", verb=True) + read_ppots("ppots.dat", symbols) + print_ppots() + + bas_per_atom = [4, 1] + filename = "aosa_parameters.dat" + tbparams = read_tbparams(filename, symbols, bas_per_atom) + print("tbparam", tbparams[0].symbol) + exit(0) + + ham, over = get_hamiltonian_proxy(coords, atomTypes, symbols, get_overlap=True) + + with np.printoptions(precision=3, suppress=True): + print(ham) + print(over) + exit(0) + gpuLibIn = False ## need to pass from input file or command line + occ = int(float(nats) / 2.0) # Get the total occupied orbitals + + if gpuLibIn == False: + print("Using CPU for DM construction. Consider installing accelerator library...") + rho = get_density_matrix_proxy(ham, occ) + npart = len(coords[:, 0]) + hindex = np.arange(npart + 1, dtype=int) + field = np.zeros(3) + charges = get_charges_proxy(rho, npart, hindex, overlap=None, verb=False) + eforces = get_tb_forces(ham, rho, charges, field, coords, atomTypes, symbols) + nforces = get_ppot_forces(coords) + + # eenergy = get_tb_energy() + nenergy = get_ppot_energy(coords) + + coords[0, 0] = coords[0, 0] + 0.001 + nenergyp = get_ppot_energy(coords) + + print((nenergyp - nenergy) / 0.001, nforces[0, 0]) + exit(0) + + print(nforces) + exit(0) + print("Hamiltonian matrix=", ham) + print("Density matrix=", rho) + print("Forces=", forces) diff --git a/proxies/python/evals_dvals.py b/proxies/python/evals_dvals.py new file mode 100644 index 00000000..44ffbd59 --- /dev/null +++ b/proxies/python/evals_dvals.py @@ -0,0 +1,77 @@ +"""density_matrix +Computes the Density matrix from a given Hamiltonian +This code is only used to guide implemetations and understand which are the +basic elements needed to interface with the sedacs driver. +""" + +import numpy as np +import scipy.linalg as sp +from nonortho import get_xmat + + +__all__ = [ + "get_evals_dvals_proxy", +] + + +## Computes the Evals and Dvals from a given Hamiltonian. +# @author Anders Niklasson +# @brief This will create a Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# +# @param ham Hamiltonian matrix +# @param nocc Number of occupied orbitals +# @param core_size Number of atoms in the cores. +# @param method Type of algorithm used to compute DM +# @param accel Type of accelerator/special device used to compute DM. Default is No and +# will only use numpy. +# @param mu Chemical potential. If set to none, the calculation will use nocc +# @param etemp Electronic temperature +# @param overlap Overlap matrix +# @param verb Verbosity. If True is passed, information is printed. +# +# @return rho Density matrix +# +def get_evals_dvals_proxy(ham, nocc, norbsInCore=None, method="Diag", accel="No", mu=None, etemp=0.0, overlap=None, full_data=False, verb=False, lib=None): + """Calcualtion of the evals and dvals from H""" + if verb: + print("Computing Evals and Dvals") + + norbs = len(ham[:, 0]) + ham_orth = np.zeros((norbs, norbs)) + if overlap is not None: + # Get the inverse overlap factor + zmat = get_xmat(overlap, method="Diag", accel="No", verb=False) + + # Orthogonalize Hamiltonian + ham_orth = np.matmul(np.matmul(np.transpose(zmat), ham), zmat) + else: + ham_orth[:, :] = ham[:, :] + + dvals = np.zeros((norbs)) + if(method == "Diag"): + evals, evects = sp.eigh(ham_orth) + + if verb: + print("Eigenvalues of H:", evals) + + if (overlap is not None): + #overTimesEvects = np.dot(overlap,evects) + overTimesEvects = evects + else: + overTimesEvects = evects + for i in range(norbs): + dvals[i] = np.inner(evects[:norbsInCore,i],overTimesEvects[:norbsInCore,i]) + else: + if(norbsInCore is not None): + dvals[:] = norbsInCore/norbs + else: + dvals[:] = 1.0 + + evals = np.zeros(norbs) + evals = np.diag(ham_orth) #We estimate the eigenvaluse from the Girshgorin centers + + + return evals, dvals + diff --git a/proxies/python/first_level.py b/proxies/python/first_level.py new file mode 100644 index 00000000..7d6759bd --- /dev/null +++ b/proxies/python/first_level.py @@ -0,0 +1,441 @@ +"""proxy code a +A prototype engine that: + - Reads the total number of atoms + - Constructs a set of random coordinates + - Constructs a simple Hamiltonian + - Computes the Density matrix from the Hamiltonian + - Computes atomic Mulliken charges + - Computes TB + coulombic forces +""" + +import os +import sys + +import numpy as np +import scipy.linalg as sp +import sedacs.driver +import sedacs.interface_modules +from sedacs.dev.io import src_path + +try: + import ctypes + + # import gpulibInterface as gpu + + gpuLib = True + arch = "nvda" + pwd = os.getcwd() + + if arch == "nvda": + print("loading nvidia...") + lib = ctypes.CDLL(str((src_path() / "gpu/nvda/libnvda.so").absolute())) + if arch == "amd": + lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) + +except: + gpuLib = False + + +__all__ = [ + "RandomNumberGenerator", + "get_random_coordinates", + "get_hamiltonian_proxy", + "get_density_matrix_proxy", + "get_density_matrix_gpu", + "get_charges_proxy", + "get_forces_proxy", +] + + +## Simple random number generator +# This is important in order to compare across codes +# written in different languages. +# +# To initialize: +# \verbatim +# myRand = rand(123) +# \endverbatim +# where the argument of rand is the seed. +# +# To get a random number between "low" and "high": +# \verbatim +# rnd = myRand.get_rand(low,high) +# \endverbatim +# +class RandomNumberGenerator: + """To generate random numbers.""" + + def __init__(self, seed): + self.a = 321 + self.b = 231 + self.c = 13 + self.seed = seed + self.status = seed * 1000 + + def generate(self, low, high): + """Get a random real number in between low and high.""" + w = high - low + place = self.a * self.status + place = int(place / self.b) + rand = (place % self.c) / self.c + place = int(rand * 1000000) + self.status = place + rand = low + w * rand + + return rand + + +## Generating random coordinates +# @brief Creates a system of size "nats = Number of atoms" with coordindates having +# a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. +# +# @param nats The total number of atoms +# @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] +# +def get_random_coordinates(nats): + """Get random coordinates""" + length = int(nats ** (1 / 3)) + 1 + coords = np.zeros((nats, 3)) + latticeParam = 2.0 + atomsCounter = -1 + myrand = RandomNumberGenerator(111) + for i in range(length): + for j in range(length): + for k in range(length): + atomsCounter = atomsCounter + 1 + if atomsCounter >= nats: + break + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 0] = i * latticeParam + rnd + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 1] = j * latticeParam + rnd + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 2] = k * latticeParam + rnd + return coords + + +## Computes a Hamiltonian based on exponential decay of orbital couplings. +# @author Anders Niklasson +# @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances +# \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. +# +# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# @param atomTypes Index type for each atom in the system. Type for first atom = type[0] (not used yet) +# @param symbols Symbols for every atom type. +# @param verb Verbosity. If True is passed, information is printed +# @return ham 2D numpy array of Hamiltonian elements +# +def get_hamiltonian_proxy(coords, atomTypes, symbols, verb=False, get_overlap=False): + """Construct simple toy s-Hamiltonian""" + + + #Internal periodic table for the code + symbols_internal = np.array([ "Bl" , + "H" , "He" , + "Li" , "Be" , "B" , "C" , "N" , "O" , "F" , \ + ], dtype=str) + numel_internal = np.zeros(len(symbols_internal),dtype=int) + numel_internal[:] = 0, \ + 1 , 2 , \ + 1 , 2 , 3 , 4 , 5 , 6 , 7 , + + bas_per_atom = np.zeros(len(symbols_internal),dtype=int) + bas_per_atom[:] = 0, \ + 1 , 1 ,\ + 4 , 4, 4, 4 , 4, 4, 4, + + + nats = len(coords[:,0]) + numel = 0 + + # Map symbols to indices in symbols_internal + symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} + + # Translate `symbols` to `symbols_internal` indices + mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) + + # Convert atomTypes to `symbols_internal` indices + atom_internal_indices = mapped_indices[atomTypes] + + # Sum the corresponding values in bas_per_atom and numel_internal + norbs = np.sum(bas_per_atom[atom_internal_indices]) + numel = np.sum(numel_internal[atom_internal_indices]) + + + nocc = int(numel/2.0) + eps = 1e-9 + decay_min = 0.1 + m = 78 + a = 3.817632 + c = 0.816371 + x = 1.029769 + n = 13 + b = 1.927947 + d = 3.386142 + y = 2.135545 + ham = np.zeros((norbs, norbs)) + if(get_overlap): + over = np.zeros((norbs, norbs)) + if verb: + print("Constructing a simple Hamiltonian for the full system") + colsh = 0 + rowsh = 0 + for i in range(0, nats): + for ii in range(bas_per_atom[atom_internal_indices[i]]): + x = (a * x + c) % m # Hamiltonian parameters + y = (b * y + d) % n + colsh = 0 + for j in range(i, nats): + for jj in range(bas_per_atom[atom_internal_indices[j]]): + dist = np.linalg.norm(coords[i, :] - coords[j, :]) + tmp = np.exp(-(y / n + decay_min) * (dist**2)) + if(get_overlap): + over[rowsh,colsh] = tmp + over[colsh,rowsh] = tmp + + tmp = (x/m)*tmp + ham[rowsh, colsh] = tmp + ham[colsh, rowsh] = tmp + colsh = colsh + 1 + rowsh = rowsh + 1 + if(get_overlap): + return ham, over + else: + return ham + +sedacs.driver.get_hamiltonian = get_hamiltonian_proxy + +## Computes the Density matrix from a given Hamiltonian. +# @author Anders Niklasson +# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# +# @param ham Hamiltonian matrix +# @param nocc Number of occupied orbitals +# @param verb Verbosity. If True is passed, information is printed. +# +# @return rho Density matrix +# +def get_density_matrix_proxy(ham, nocc, verb=False): + """Calcualted the full density matrix from H""" + if verb: + print("Computing the Density matrix") + E, Q = sp.eigh(ham) + norbs = len(ham[:, 0]) + homoIndex = nocc - 1 + lumoIndex = nocc + mu = 0.5 * (E[homoIndex] + E[lumoIndex]) + rho = np.zeros((norbs, norbs)) + if verb: + print("Eigenvalues of H:", E) + for i in range(norbs): + if E[i] < mu: + rho = rho + np.outer(Q[:, i], Q[:, i]) + if verb: + print("Chemical potential = ", mu) + return rho + + +sedacs.driver.get_density_matrix = get_density_matrix_proxy + + +## Computes the finite temperature density matrix +# \param +def get_density_matrix_T(H, Nocc, Tel, mu0, coreSize, core_ham_dim, S=None, verb=False): + + kB = 8.61739e-5 # eV/K, kB = 6.33366256e-6 Ry/K, kB = 3.166811429e-6 Ha/K, #kB = 3.166811429e-6 #Ha/K + if(verb): print("Computing the renormalized Density matrix") + + if S is not None: + E_val,Q = scipy.linalg.eigh(H) ### need S? not ones with S $$$ + else: + E_val,Q = np.linalg.eigh(H) + N = len(H[:,0]) + + #print('Q\n', Q[:,0]) + + homoIndex = Nocc - 1 + lumoIndex = Nocc + print('HOMO, LUMO:', E_val[homoIndex], E_val[lumoIndex]) + mu_test = 0.5*(E_val[homoIndex] + E_val[lumoIndex]) #don't need it + print(N, Nocc,) + print('!!!! mu test:\n', mu_test) + + # use mu0 as a guess + + OccErr = 1.0 + beta = 1./(kB*Tel) + f = np.array([]) + for i in range(N): + f_i = 1/(np.exp(beta*(E_val[i] - mu0)) + 1) # save fi to f + f = np.append(f,f_i) + #Occ = Occ + f_i*E_occ[i,k] + + + D = sum(np.outer(Q[:, i],Q[:, i]*f[i]) for i in range(Nocc))*2 + #np.savetxt('co2_32_dm.txt',D) + + + # rho = Q@f_vector@Q.T + # or + # rho_ij = SUM_k Q_ik * f_kk * Q_jk + + + print('core_ham_dim', core_ham_dim) + dVals = np.array([]) + for i in range(N): + dVals = np.append(dVals, np.inner(Q[:core_ham_dim,i],Q[:core_ham_dim, i])) + + return D, E_val, dVals + + +## Computes the Density matrix from a given Hamiltonian. +# @author Josh Finkelstein +# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# using GPU/AI accelerator library +# +# @param H Hamiltonian matrix +# @param Nocc Number of occupied orbitals +# @param verb Verbosity. If True is passed, information is printed. +# +# @return D Density matrix +# +def get_density_matrix_gpu(H, N, Nocc, lib, verb=False): + """Calcualted the full density matrix from H""" + if verb: + print("Computing the Density matrix using GPU/AI accel library") + + # init DM + D = np.zeros((N, N)) + kbt = 0.1 + + # get DM from cusolver diag + # dm = gpu.dmDNNSP2(H,D,N,Nocc,lib) + # dm = gpu.dmCheby(H,D,N,Nocc,kbt,lib) + print("Density matrix=", D) + # dm = gpu.dmDiag(H,D,N,Nocc,kbt,lib) + # print("Density matrix=",dm) + dm = gpu.dmMLSP2(H, D, N, Nocc, lib) + return D + +def get_charges_proxy(density_matrix,ncores,hindex,overlap=None,verb=False): + if(verb): + status_at("get_charges","Getting charges from density matrix") + + fullDiag = np.diag(density_matrix) + charges = np.zeros((ncores)) + + if(overlap is None): + for i in range(ncores): + for ii in range(hindex[i],hindex[i+1]): + charges[i] = charges[i] + (1.0 - fullDiag[ii]) + else: + pass + + if(verb): + msg = "Total Charge for part= " + str(sum(charges)) + status_at("get_charges",msg) + + return charges + + +## Get TB forces +# \brief Get TB and Coulombic forces from the Hamiltonian, Density matrix +# and charges. +# \param ham Hamiltonian Matrix +# \param rho Density Matrix +# \param field External field +# \param coords Coordinates +# \param atomTypes Atomic types +# \param Symbols Atomic symbols for every type. +## +def get_tb_forces(ham, rho, charges, field, coords, atomTypes,symbols): + + nats = len(coords[:,0]) + forces = np.zeros((nats,3)) + forces_coul = np.zeros((nats,3)) + forces_field = np.zeros((nats,3)) + forces_band = np.zeros((nats,3)) + dl = 0.0001 + coordsp = np.zeros((nats,3)) + coordsm = np.zeros((nats,3)) + ham = get_hamiltonian_proxy(coords,atomTypes,symbols,verb=False) + vaux = np.ones((nats)) + vaux[:] = 0.5 + rho0 = np.diag(vaux) + + for i in range(len(ham[:,0])): + + #Band Forces from tr(rho dH/dr) + for k in range(3): + coordsp[:,:] = coords[:,:] + coordsp[i,k] = coords[i,k] + dl + hamp = get_hamiltonian_proxy(coordsp,atomTypes,symbols,verb=False) + #Hmu = get_pert(field,coordsp,nats) + #Hp[:,:] = Hp[:,:] + Hmu[:,:] + + coordsm[:,:] = coords[:,:] + coordsm[i,k] = coords[i,k] - dl + hamm = get_hamiltonian_proxy(coordsm,atomTypes,symbols,verb=False) + #Hmu = get_pert(field,coordsm,nats) + #Hm[:,:] = Hm[:,:] + Hmu[:,:] + + dHdx = (hamp - hamm)/(2*dl) + aux = 2*np.matmul(rho-rho0,dHdx) + forces_band[i,k] = np.trace(aux) + print("dHdx",dHdx) + + #Coulombic Forces + for j in range(len(ham[:,0])): + if(i != j): + distance = np.linalg.norm(coords[i,:] - coords[j,:]) + direction = (coords[i,:] - coords[j,:])/distance + #F_coul[i,:] = F_coul[i,:] - (14.3996437701414*1.0*direction*q[i]*q[j])/(distance**2) + forces_coul[i,:] = forces_coul[i,:] - (1.0*direction*charges[i]*charges[j])/(distance**2) + + #Field forces + #forces_field[i,:] = forces_field[i,:] + field*charges[i] + + forces[:,:] = - ( forces_band[:,:] + forces_coul[:,:] + forces_field[:,:]) + return forces + + +## Main program for proxy a +# \brief It will read the number of atoms, contruct +# a set of random coordinates and give back a Density matrix. +# +if __name__ == "__main__": + n = len(sys.argv) + if n == 1: + print("Give the total number of atoms. Example:\n") + print("proxy_a 100\n") + sys.exit(0) + else: + nats = int(sys.argv[1]) + + verb = True + coords = get_random_coordinates(nats) + atomTypes = np.zeros((nats),dtype=int) + symbols = []*nats + symbols[:] = "H" + + ham = get_hamiltonian_proxy(coords,atomTypes,symbols) + + gpuLibIn = False ## need to pass from input file or command line + occ = int(float(nats) / 2.0) # Get the total occupied orbitals + + if gpuLibIn == False: + print("Using CPU for DM construction. Consider installing accelerator library...") + rho = get_density_matrix_proxy(ham, occ) + npart = len(coords[:,0]) + hindex = np.arange(npart+1,dtype=int) + field = np.zeros(3) + charges = get_charges_proxy(rho,npart,hindex,overlap=None,verb=False) + forces = get_tb_forces(ham, rho, charges, field, coords, atomTypes,symbols) + print("Hamiltonian matrix=",ham) + print("Density matrix=",rho) + print("Forces=",forces) + diff --git a/proxies/python/first_level_gpu.py b/proxies/python/first_level_gpu.py new file mode 100644 index 00000000..297d6b41 --- /dev/null +++ b/proxies/python/first_level_gpu.py @@ -0,0 +1,303 @@ +"""proxy code a +A prototype engine that: + - Reads the total number of atoms + - Constructs a set of random coordinates + - Constructs a simple Hamiltonian + - Computes the Density matrix from the Hamiltonian +""" + +import ctypes +import sys + +import numpy as np +import scipy.linalg as sp +from juliacall import Main as jl + +import sedacs.driver +import sedacs.gpu as gpu +import sedacs.interface_modules +from sedacs.dev.io import src_path +from sedacs.gpu.library import Library + +gpuLib = True +arch = "nvda" + +if arch == "nvda": + print("loading nvidia...") + lib = Library(src_path() / "gpu/nvda/libnvda.so").as_dll() +if arch == "amd": + lib = Library(src_path() / "gpu/amd/libamd.so").as_dll() + + +## Simple random number generator +# This is important in order to compare across codes +# written in different languages. +# +# To initialize: +# \verbatim +# myRand = rand(123) +# \endverbatim +# where the argument of rand is the seed. +# +# To get a random number between "low" and "high": +# \verbatim +# rnd = myRand.get_rand(low,high) +# \endverbatim +# +class rand: + """To generate random numbers.""" + + def __init__(self, seed): + self.a = 321 + self.b = 231 + self.c = 13 + self.seed = seed + self.status = seed * 1000 + + def get_rand(self, low, high): + """Get a random real number in between low and high.""" + w = high - low + place = self.a * self.status + place = int(place / self.b) + rand = (place % self.c) / self.c + place = int(rand * 1000000) + self.status = place + rand = low + w * rand + + return rand + + +## Generating random coordinates +# @brief Creates a system of size "nats = Number of atoms" with coordindates having +# a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. +# +# @param nats The total number of atoms +# @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] +# +def get_random_coordinates(nats): + """Get random coordinates""" + length = int(nats ** (1 / 3)) + 1 + coords = np.zeros((nats, 3)) + latticeParam = 2.0 + atomsCounter = -1 + myrand = rand(111) + for i in range(length): + for j in range(length): + for k in range(length): + atomsCounter = atomsCounter + 1 + if atomsCounter >= nats: + break + rnd = myrand.get_rand(-1.0, 1.0) + coords[atomsCounter, 0] = i * latticeParam + rnd + rnd = myrand.get_rand(-1.0, 1.0) + coords[atomsCounter, 1] = j * latticeParam + rnd + rnd = myrand.get_rand(-1.0, 1.0) + coords[atomsCounter, 2] = k * latticeParam + rnd + return coords + + +## Computes a Hamiltonian based on a single "s-like" orbitals per atom. +# @author Anders Niklasson +# @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances +# \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. +# +# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# @param types Index type for each atom in the system. Type for first atom = type[0] (not used yet) +# @return H 2D numpy array of Hamiltonian elements +# @param verb Verbosity. If True is passed, information is printed +# +def proxyA_get_hamiltonian(coords, atomTypes=np.zeros((1), dtype=int), verb=False): + """Construct simple toy s-Hamiltonian""" + N = len(coords[:, 1]) + Nocc = int(N / 4) + eps = 1e-9 + decay_min = 0.1 + m = 78 + a = 3.817632 + c = 0.816371 + x = 1.029769 + n = 13 + b = 1.927947 + d = 3.386142 + y = 2.135545 + H = np.zeros((N, N)) + if verb: + print("Constructing a simple Hamiltonian for the full system") + cnt = 0 + for i in range(0, N): + x = (a * x + c) % m # Hamiltonian parameters + y = (b * y + d) % n + for j in range(i, N): + dist = np.linalg.norm(coords[i, :] - coords[j, :]) + tmp = (x / m) * np.exp(-(y / n + decay_min) * (dist**2)) + H[i, j] = tmp + H[j, i] = tmp + return H + + +## Computes the Density matrix from a given Hamiltonian. +# @author Anders Niklasson +# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# +# @param H Hamiltonian matrix +# @param Nocc Number of occupied orbitals +# @param verb Verbosity. If True is passed, information is printed. +# +# @return D Density matrix +# +def get_densityMatrix(H, Nocc, verb=False): + """Calcualted the full density matrix from H""" + if verb: + print("Computing the Density matrix") + E, Q = sp.eigh(H) + N = len(H[:, 0]) + homoIndex = Nocc - 1 + lumoIndex = Nocc + mu = 0.5 * (E[homoIndex] + E[lumoIndex]) + D = np.zeros((N, N)) + if verb: + print("Eigenvalues of H:", E) + for i in range(N): + if E[i] < mu: + D = D + np.outer(Q[:, i], Q[:, i]) + if verb: + print("Chemical potential = ", mu) + return D + + +## Computes the Density matrix from a given Hamiltonian. +# @author Josh Finkelstein +# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ +# \f[ \rho = \sum^{nocc} v_k v_k^T \f] +# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ +# using GPU/AI accelerator library +# +# @param H Hamiltonian matrix +# @param Nocc Number of occupied orbitals +# @param verb Verbosity. If True is passed, information is printed. +# +# @return D Density matrix +# +def get_densityMatrix_response_accel(H, P, D, R, N, Nocc, handle, lib, verb=False): + """Calcualte the full density matrix and its response to pertubation P in H""" + if verb: + print("Computing the Density matrix using GPU/AI accel library") + + # get DM from PRT + time = gpu.dmDNNPRT(H, P, D, R, N, Nocc, handle, lib) + return time + + +def get_densityMatrix_accel(H, D, N, Nocc, handle, lib, verb=False): + """Calcualted the full density matrix from H""" + if verb: + print("Computing the Density matrix using GPU/AI accel library") + + # init DM + # D = np.zeros((N,N)) + kbt = 0.001 + + # get DM from cusolver diag + # time = gpu.dmDNNSP2(H, D, N, Nocc, handle, lib) + # dm = gpu.dmCheby(H,D,N,Nocc,kbt,lib) + # print("Density matrix=",D) + # time = gpu.dmDiag(H,D,N,Nocc,kbt,lib) + # print("Density matrix=",dm) + time = gpu.dmMLSP2(H, D, N, Nocc, lib) + return time + + +## Main program for proxy a +# \brief It will read the number of atoms, contruct +# a set of random coordinates and give back a Density matrix. +# +if __name__ == "__main__": + nats = 512 + + coords = get_random_coordinates(nats) + + # H = proxyA_get_hamiltonian(coords) + jl.seval("using Pkg") + jl.seval('Pkg.activate("./GeneralizedSP2/examples")') + jl.seval(""" + using Distributions + using GershgorinDiscs + using GeneralizedSP2 + using LinearAlgebra + using ToyHamiltonians + using DelimitedFiles + set_isapprox_rtol(1e-13) + β = 1.25 # Physical + μ = 150 # Physical + sys_size = 512 + dist = LogUniform(100, 200) + Λ = rand(EigvalsSampler(dist), sys_size) + V = rand(EigvecsSampler(dist), sys_size, sys_size) + H = Hamiltonian(Eigen(Λ, V)) + savemodel("H.npy", H) + 𝚲 = eigvals(H) # Must be all reals + emin, emax = floor(minimum(𝚲)), ceil(maximum(𝚲)) + open("minmax.txt", "w") do f + write(f, string(emin) * "\n") + write(f, string(emax) * "\n") + end + H_scaled = rescale_one_zero(emin, emax)(H) + savemodel("H_scaled.npy", H_scaled) + """) + H = np.ascontiguousarray(np.load("H.npy"), dtype=np.float64) + + # Allocate dm + D = np.zeros((nats, nats)) + + P = np.zeros((nats, nats)) + R = np.zeros((nats, nats)) + + gpuLibIn = True ## need to pass from input file or command line + occ = int(float(nats) / 2.0) # Get the total occupied orbitals + + for i in range(10): + if gpuLibIn == False: + print("Using CPU for DM construction. Consider installing accelerator library...") + Dcpu = get_densityMatrix(H, occ) + break + + elif gpuLibIn == True: + if gpuLib == False: + print("No accelerator library found. Consider installing or change input.") + + ## allocate some gpu mem + size_of_double = 8 # bytes + matSize = nats * nats * size_of_double + cublas_handle = gpu.cublasInit(lib) + + d_ham = gpu.dev_alloc(matSize, lib) + d_prt = gpu.dev_alloc(matSize, lib) + d_dm = gpu.dev_alloc(matSize, lib) + d_rsp = gpu.dev_alloc(matSize, lib) + + ## copy ham from host to device + gpu.memcpyHtoD(d_ham, H, matSize, lib) + + ## copy ham from host to device + gpu.memcpyHtoD(d_prt, P, matSize, lib) + + print("iteration ", i) + timer = get_densityMatrix_accel(d_ham, d_dm, nats, occ, cublas_handle, lib) + # timer = get_densityMatrix_response_accel(d_ham, d_prt, d_dm, d_rsp, nats, occ, cublas_handle, lib) + print(f"python time = {timer:0.10f} seconds") + print("=========================") + + ## copy dm from device to host + size_of_double = 8 # bytes + matSize = nats * nats * size_of_double + gpu.memcpyDtoH(D, d_dm, matSize, lib) + + # print(D) + with open("cuda.npy", "wb") as f: + np.save(f, D) + gpu.dev_free(d_dm, lib) + gpu.dev_free(d_ham, lib) + gpu.dev_free(d_prt, lib) + gpu.dev_free(d_rsp, lib) diff --git a/proxies/python/hamiltonian.py b/proxies/python/hamiltonian.py new file mode 100644 index 00000000..ac431895 --- /dev/null +++ b/proxies/python/hamiltonian.py @@ -0,0 +1,182 @@ +"""hamiltonian +A prototype engine code that: + - Constructs different Hamiltonians +This code is only used to guide implemetations and understand which are the +basic elements needed to interface with the sedacs driver. +""" + +import os +import sys + +import numpy as np +import sedacs.driver +from sedacs.dev.io import src_path +import scipy.linalg as sp +from hamiltonian_elements import * +from dnnprt import * +from proxies.python.proxy_global import * + +try: + import ctypes + + # import gpulibInterface as gpu + + gpuLib = True + arch = "nvda" + pwd = os.getcwd() + + if arch == "nvda": + print("loading nvidia...") + lib = ctypes.CDLL(str((src_path() / "gpu/nvda/libnvda.so").absolute())) + if arch == "amd": + lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) + +except: + gpuLib = False + + +__all__ = [ + "get_hamiltonian_proxy", + "get_random_hamiltonian", + "build_coul_ham_proxy" +] + + +## Computes a Hamiltonian based on exponential decay of orbital couplings. +# @author Anders Niklasson +# @brief Computes a hamiltonian based on exponential decays. +# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# @param atomTypes Index type for each atom in the system. Type for first atom = type[0] (not used yet) +# @param symbols Symbols for every atom type +# @param verb Verbosity. If True is passed, information is printed +# @para get_overlap If overlap needs to be returned +# @return ham 2D array of Hamiltonian elements +# +def get_hamiltonian_proxy(coords, atomTypes, symbols, verb=False, get_overlap=False): + """Constructs a simple tight-binding Hamiltonian""" + + # Internal periodic table for the code + symbols_internal = np.array(["Bl", "H", "C", "N", "O", "P"], dtype=str) + numel_internal = np.zeros(len(symbols_internal), dtype=int) + numel_internal[:] = 0, 1, 4, 5, 6, 5 + bas_per_atom = np.zeros(len(symbols_internal), dtype=int) + bas_per_atom[:] = 0, 1, 4, 4, 4, 4 + spOrbTypes = ["s", "px", "py", "pz"] + sOrbTypes = ["s"] + + nats = len(coords[:, 0]) + + # Map symbols to indices in symbols_internal + symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} + + # Translate `symbols` to `symbols_internal` indices + mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) + + # Convert atomTypes to `symbols_internal` indices + atom_internal_indices = mapped_indices[atomTypes] + + + # Sum the corresponding values in bas_per_atom and numel_internal + norbs = np.sum(bas_per_atom[atom_internal_indices]) + numel = np.sum(numel_internal[atom_internal_indices]) + + ham = np.zeros((norbs, norbs)) + if get_overlap: + over = np.zeros((norbs, norbs)) + if verb: + print("Constructing a simple Hamiltonian for the full system") + + colsh = 0 + rowsh = 0 + tbparams = bring_tbparams() + breakpoint() + for i in range(0, nats): + for ii in range(bas_per_atom[atom_internal_indices[i]]): + colsh = rowsh + parI = tbparams[atomTypes[i]][ii] + for j in range(i, nats): + if i == j: + llimit = ii + else: + llimit = 0 + for jj in range(llimit,bas_per_atom[atom_internal_indices[j]]): + parJ = tbparams[atomTypes[j]][jj] + hval, sval = get_integral_v1(coords[i],coords[j],parI,parJ) + if(get_overlap): + over[rowsh,colsh] = sval + over[colsh,rowsh] = sval + + ham[rowsh, colsh] = hval + ham[colsh, rowsh] = hval + colsh = colsh + 1 + rowsh = rowsh + 1 + + if get_overlap: + return ham, over + else: + return ham + + +sedacs.driver.get_hamiltonian = get_hamiltonian_proxy + +## Add coulombic potentials to the Hamiltonian +# @param ham0 No-SCF Hamiltonian +# @param vcouls Coulombic potentials for every atomic site +# @pparam orbital_based If set to True, coulombic potentials for every orbitals will be +# expected. +# @param hindex will give the orbital index for each atom +# The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1` +# @param overlap Overlap matrix for nonorthogonal formulations. +# @param verb Verbosity switch. +# +def build_coul_ham_proxy(ham0, vcouls, types, charges, orbital_based, hindex, overlap=None, verb=False): + norbs = len(ham0[:, 0]) + vcouls_orbs = np.zeros((norbs), dtype=float) # Expanded coulombic potentials + nats = len(hindex[:]) - 1 + + tbparams = bring_tbparams() + + if orbital_based: + error_at("build_coul_ham", "Orbital-based coulombic potential not implemented") + else: + for i in range(nats): + for ii in range(hindex[i], hindex[i + 1]): + k = ii - hindex[i] + vcouls_orbs[ii] = vcouls[i] + tbparams[types[i]][k].u * charges[i] + if overlap is None: + ham = ham0 + np.diag(vcouls_orbs) + else: + vmat = np.diag(vcouls_orbs) + ham = ham0 + 0.5 * (np.dot(overlap, vmat) + np.dot(vmat, overlap)) + return ham + + +## Computes a Hamiltonian based on a single "s-like" orbitals per atom. +# @author Anders Niklasson +# @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances +# \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. +# +# @param ndim Size of the Hamiltonian matrix +# @param verb Verbosity. If True is passed, information is printed +# @return H 2D numpy array of Hamiltonian elements +# +def get_random_hamiltonian(coords,verb=False): + """Construct simple toy s-Hamiltonian """ + norbs = len(coords[:,0]) + eps = 1e-9; decay_min = 0.1; m = 78; + a = 3.817632; c = 0.816371; x = 1.029769; n = 13; + b = 1.927947; d = 3.386142; y = 2.135545; + ham = np.zeros((norbs,norbs)) + if(verb): print("Constructing a simple Hamiltonian for the full system") + cnt = 0 + for i in range(0,norbs): + x = (a*x+c)%m #Hamiltonian parameters + y = (b*y+d)%n + for j in range(i,norbs): + dist = np.linalg.norm(coords[i,:]-coords[j,:]) + tmp = (x/m)*np.exp(-(y/n + decay_min)*(dist**2)) + ham[i,j] = tmp + ham[j,i] = tmp + ham[i,i] = x*y + return ham + diff --git a/proxies/python/hamiltonian_elements.py b/proxies/python/hamiltonian_elements.py new file mode 100644 index 00000000..c1cf3e07 --- /dev/null +++ b/proxies/python/hamiltonian_elements.py @@ -0,0 +1,309 @@ +"""AOSA and LATTE - prototype hamiltonian elements +Atomic orbital spherical approximation + - Reads the total number of atoms + - Constructs a set of random coordinates + - Constructs a simple Hamiltonian + - Computes the hamiltonian derivatives +""" + +import os +import sys + +import numpy as np +import scipy.linalg as sp +#import sedacs.driver +#import sedacs.interface_modules +#from sedacs.dev.io import src_path + +try: + import ctypes + + # import gpulibInterface as gpu + + gpuLib = True + arch = "nvda" + pwd = os.getcwd() + + if arch == "nvda": + print("loading nvidia...") + lib = ctypes.CDLL(str((src_path() / "gpu/nvda/libnvda.so").absolute())) + if arch == "amd": + lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) + +except: + gpuLib = False + + +__all__ = [ + "AOSA_Parameter", + "get_integral", + "get_integral_v1", +] + +class AOSA_Parameter: + def __init__(self,symbol,orb,filePath): + self.symbol = symbol + self.orbType = orb + parFile = open(filePath,"r") + count = 0 + symbFound = False + orbFound = False + for line in parFile: + info = line.split() + if(len(info) >= 1): + print(info) + if(info[0] == "Element="): + if(info[1] == symbol): + norbs = int(info[3]) + symbFound = True + print(info[1],symbol,symbFound) + if(symbFound and info[3] == orb): + print(info[5]) + orbFound = True + self.onsite = float(info[5]) + self.u = float(info[7]) + self.nl = int(info[9]) + self.kappas = np.zeros((self.nl)) + self.ds = np.zeros((self.nl,3)) + self.gammas = np.zeros((self.nl,4)) + if(symbFound and orbFound and info[0] == "LobeIndex="): + self.kappas[count] = float(info[3]) + self.ds[count,0] = float(info[5]) + self.ds[count,1] = float(info[6]) + self.ds[count,2] = float(info[7]) + + self.gammas[count,0] = float(info[9]) + self.gammas[count,1] = float(info[10]) + self.gammas[count,2] = float(info[11]) + self.gammas[count,3] = float(info[12]) + + count = count + 1 + + if(count == self.nl): + break + + + +def get_integral(coordsI,symbolI,orbI,coordsJ,symbolJ,orbJ): + + parI = AOSA_Parameters(symbolI,orbI) + parJ = AOSA_Parameters(symbolJ,orbJ) + + RIJ = coordsJ - coordsI + #Expo + inte = 0.0 + for li in range(parI.nl): + for lj in range(parJ.nl): + sn = np.sign(parI.kappas[li])*np.sign(parJ.kappas[lj]) + kappaIJ = sn*(abs(parI.kappas[li]) + abs(parJ.kappas[lj]))/2 + gammaIJ = (parI.gammas[li,0] + parI.gammas[li,0])/2 + dIJ = RIJ + parJ.ds[lj,:] - parI.ds[li,:] + #dIJ = np.dot(RIJ,parJ.ds[lj,:]) + parJ.ds[lj,:] - parI.ds[li,:] + inte = inte + kappaIJ*np.exp(gammaIJ*np.linalg.norm(dIJ)) + + sval = inte + hval = inte*(parI.onsite + parJ.onsite)/2 + + return hval, sval + + + +def get_integral_v1(coordsI,coordsJ,parI,parJ): + + RIJ = coordsJ - coordsI + #Expo + inte = 0.0 + for li in range(parI.nl): + for lj in range(parJ.nl): + sn = np.sign(parI.kappas[li])*np.sign(parJ.kappas[lj]) + kappaIJ = sn*(abs(parI.kappas[li]) + abs(parJ.kappas[lj]))/2 + gammaIJ = (parI.gammas[li,0] + parJ.gammas[lj,0])/2 + dIJ = RIJ + parJ.ds[lj,:] - parI.ds[li,:] + inte = inte + kappaIJ*np.exp(gammaIJ*np.linalg.norm(dIJ)) + + sval = inte + hval = inte*(parI.onsite + parJ.onsite)/2 + + return hval, sval + + +def LoadBondIntegralParameters_H(TYPE_PAIR): + + TYPE_a = TYPE_PAIR[0] + TYPE_b = TYPE_PAIR[1] + + fss_sigma = np.zeros((8)) + fsp_sigma = np.zeros((8)) + fps_sigma = np.zeros((8)) + fpp_sigma = np.zeros((8)) + fpp_pi = np.zeros((8)) + + if TYPE_a == 'H': + if TYPE_b == 'H': + fss_sigma[0:8] = [-9.400000,-1.145903,-0.391777,0.000,0.000,0.750,3.500,4.000] + fsp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fps_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_pi[0:8] = [0,0,0,0,0,0,0,0] + Es = -6.4835 + Ep = 0.0 + U = 12.054683 + elif TYPE_b == 'C': + fss_sigma[0:8] = [-9.235812,-1.372683,-0.408433,0.0000,0.0000,1.1000,3.5000,4.000 ] + fsp_sigma[0:8] = [8.104851 ,-0.936099 ,-0.626219 ,0.000 ,0.000 ,1.100 ,3.500 ,4.000 ] + fps_sigma[0:8] = [8.104851 ,-0.936099 ,-0.626219 ,0.000 ,0.000 ,1.100 ,3.500 ,4.000 ] + fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_pi[0:8] = [0,0,0,0,0,0,0,0] + Es = 0; Ep = 0; U = 0 + elif TYPE_b == 'O': + fss_sigma[0:8] = [-12.189103 ,-1.800097 ,-0.325933 ,0.000 ,0.000 ,1.000 ,3.500 ,4.000 ] + fsp_sigma[0:8] = [9.518733 ,-1.333235 ,-0.39371 ,0.000 ,0.000 ,1.000 ,3.500 ,4.000 ] + fps_sigma[0:8] = [9.518733 ,-1.333235 ,-0.39371 ,0.000 ,0.000 ,1.000 ,3.500 ,4.000 ] + fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_pi[0:8] = [0,0,0,0,0,0,0,0] + Es = 0; Ep = 0; U = 0 + elif TYPE_b == 'N': + fss_sigma[0:8] = [-12.63103 ,-1.585597 ,-0.250969 ,0.00 ,0.000 ,1.00 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [9.837852 ,-1.23485 ,-0.324283 ,0.00 ,0.000 ,1.00 ,3.50 ,4.00 ] + fps_sigma[0:8] = [9.837852 ,-1.23485 ,-0.324283 ,0.00 ,0.000 ,1.00 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_pi[0:8] = [0,0,0,0,0,0,0,0] + Es = 0; Ep = 0; U = 0 + elif TYPE_a == 'C': + if TYPE_b == 'H': + fss_sigma[0:8] = [-9.235812 ,-1.372683 ,-0.408433 ,0.00 ,0.00 ,1.10 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [8.104851 ,-0.936099 ,-0.626219 ,0.00 ,0.00 ,1.10 ,3.50 ,4.00 ] + fps_sigma[0:8] = [8.104851 ,-0.936099 ,-0.626219 ,0.00 ,0.00 ,1.10 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_pi[0:8] = [0,0,0,0,0,0,0,0] + Es = 0; Ep = 0; U = 0 + elif TYPE_b == 'C': + fss_sigma[0:8] = [-9.197237 ,-1.60705 ,-0.535057 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [8.562436 ,-0.980182 ,-0.646929 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] + fps_sigma[0:8] = [8.562436 ,-0.980182 ,-0.646929 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [6.614756 ,-0.528591 ,-0.95146 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] + fpp_pi[0:8] = [-3.678302 ,-1.881668 ,-0.255951 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] + Es = -13.7199 + Ep = -5.2541 + U = 14.240811 + elif TYPE_b == 'O': + fss_sigma[0:8] = [-13.986685 ,-1.931973 ,-0.432011 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [10.718738 ,-1.389459 ,-0.182128 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fps_sigma[0:8] = [14.194791 ,-1.37165 ,-0.248285 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [8.622023 ,-0.557144 ,-0.938551 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fpp_pi[0:8] = [-5.327397 ,-2.19016 ,-0.089303 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + Es = 0; Ep = 0; U = 0; + elif TYPE_b == 'N': + fss_sigma[0:8] = [-7.409712 ,-1.940942 ,-0.219762 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [7.501761 ,-1.211169 ,-0.373905 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + fps_sigma[0:8] = [8.697591 ,-1.26724 ,-0.178484 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [6.95460 ,-1.188456 ,-0.808043 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + fpp_pi[0:8] = [-2.921605 ,-2.203548 ,-0.409424 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + Es = 0; Ep = 0; U = 0 + elif TYPE_a == 'O': + if TYPE_b == 'H': + fss_sigma[0:8] = [-12.189103 ,-1.800097 ,-0.325933 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [9.518733 ,-1.333235 ,-0.39371 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] + fps_sigma[0:8] = [9.518733 ,-1.333235 ,-0.39371 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_pi[0:8] = [0,0,0,0,0,0,0,0] + Es = 0; Ep = 0; U = 0 + elif TYPE_b == 'C': + fss_sigma[0:8] = [-13.986685 ,-1.931973 ,-0.432011 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [14.194791 ,-1.37165 ,-0.248285 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fps_sigma[0:8] = [10.718738 ,-1.389459 ,-0.182128 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [8.622023 ,-0.557144 ,-0.938551 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fpp_pi[0:8] = [-5.327397 ,-2.19016 ,-0.089303 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + Es = 0; Ep = 0; U = 0 + elif TYPE_b == 'O': + fss_sigma[0:8] = [-14.387756 ,-2.244278 ,-1.645605 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + fsp_sigma[0:8] = [13.699127 ,-1.602358 ,-0.114474 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + fps_sigma[0:8] = [13.699127 ,-1.602358 ,-0.114474 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + fpp_sigma[0:8] = [9.235469 ,-1.131474 ,-0.924535 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + fpp_pi[0:8] = [ -4.526526 ,-2.487174 ,-0.201464 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + Es = -23.9377 + Ep = -9.0035 + U = 11.8761410 + elif TYPE_b == 'N': + fss_sigma[0:8] = [-9.360078 ,-1.293118 ,-0.379415 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [10.723048 ,-0.454312 ,-0.916563 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fps_sigma[0:8] = [10.309052 ,-0.981652 ,-0.828497 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [9.259131 ,-0.734112 ,-1.023762 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + fpp_pi[0:8] = [-4.532623 ,-1.999631 ,-0.286275 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] + Es = 0; Ep = 0; U = 0 + elif TYPE_a == 'N': + if TYPE_b == 'H': + fss_sigma[0:8] = [-12.63103 ,-1.585597 ,-0.250969 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [9.837852 ,-1.23485 ,-0.324283 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] + fps_sigma[0:8] = [9.837852 ,-1.23485 ,-0.324283 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_pi[0:8] = [0,0,0,0,0,0,0,0] + Es = 0; Ep = 0; U = 0 + elif TYPE_b == 'C': + fss_sigma[0:8] = [-7.409712 ,-1.940942 ,-0.219762 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + fsp_sigma[0:8] = [8.697591 ,-1.26724 ,-0.178484 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + fps_sigma[0:8] = [7.501761 ,-1.211169 ,-0.373905 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + fpp_sigma[0:8] = [6.95460 ,-1.188456 ,-0.808043 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + fpp_pi[0:8] = [-2.921605 ,-2.203548 ,-0.409424 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] + Es = 0; Ep = 0; U = 0 + elif TYPE_b == 'O': + fss_sigma[0:8] = [-9.360078 ,-1.293118 ,-0.379415 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + fsp_sigma[0:8] = [10.309052 ,-0.981652 ,-0.828497 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + fps_sigma[0:8] = [10.723048 ,-0.454312 ,-0.916563 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + fpp_sigma[0:8] = [9.259131 ,-0.734112 ,-1.023762 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + fpp_pi[0:8] = [-4.532623 ,-1.999631 ,-0.286275 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] + Es = 0; Ep = 0; U = 0 + elif TYPE_b == 'N': + fss_sigma[0:8] = [-7.165811 ,-2.348869 ,-0.541905 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] + fsp_sigma[0:8] = [8.212268 ,-1.499123 ,-0.52644 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] + fps_sigma[0:8] = [8.212268 ,-1.499123 ,-0.52644 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] + fpp_sigma[0:8] = [7.102331 ,-1.252366 ,-0.552533 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] + fpp_pi[0:8] = [-2.828938 ,-2.376886 ,-0.560898 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] + Es = -18.5565 + Ep = -7.0625 + U = 17.3729 + else: + Es = 0; Ep = 0; U = 0 + fss_sigma[0:8] = [0,0,0,0,0,0,0,0] + fss_sigma[0:8] = [0,0,0,0,0,0,0,0] + fsp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fps_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] + fpp_pi[0:8] = [0,0,0,0,0,0,0,0] + + #Maybe better to pre-calculate? + fss_sigma = ScaleTail(fss_sigma) + fsp_sigma = ScaleTail(fsp_sigma) + fps_sigma = ScaleTail(fps_sigma) + fpp_sigma = ScaleTail(fpp_sigma) + fpp_pi = ScaleTail(fpp_pi) + + return fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,Es,Ep,U + + +def ScaleTail(A): + if abs(A[0]) < 1e-12: + A[8:13] = 0; + else: + R1 = A[6] + RCUT = A[7] + R1SQ = R1*R1 + RMOD = R1 - A[5] + POLYNOM = RMOD*(A[1] + RMOD*(A[2] + RMOD*(A[3] + A[4]*RMOD))) + SCL_R1 = exp(POLYNOM) + DELTA = RCUT - R1 + # Now we're using a 6th order polynomial: fitted to value, first, + # and second derivatives at R1 and R_cut + A[8] = SCL_R1 + RMOD = R1 - A[5] + DPOLY = A[1] + 2*A[2]*RMOD + 3*A[3]*RMOD*RMOD + 4*A[4]*RMOD*RMOD*RMOD + A[9] = DPOLY*SCL_R1 + DDPOLY = 2*A[2] + 6*A[3]*RMOD + 12*A[4]*RMOD*RMOD + A[10] = (DPOLY*DPOLY + DDPOLY)*SCL_R1/2 + DELTA2 = DELTA*DELTA + DELTA3 = DELTA2*DELTA + DELTA4 = DELTA3*DELTA + A[11] = (-1/DELTA3)*(3*A[10]*DELTA2 + 6*A[9]*DELTA + 10*A[8]) + A[12] = (1/DELTA4)*(3*A[10]*DELTA2 + 8*A[9]*DELTA + 15*A[8]) + A[13] = (-1/(10*DELTA3))*(6*A[12]*DELTA2 + 3*A[11]*DELTA + A[10]) + diff --git a/proxies/python/hamiltonian_random.py b/proxies/python/hamiltonian_random.py new file mode 100644 index 00000000..5acc2ac8 --- /dev/null +++ b/proxies/python/hamiltonian_random.py @@ -0,0 +1,57 @@ +"""random number generator +This code is only used to guide implemetations and understand which are the +basic elements needed to interface with the sedacs driver. +""" + +import numpy as np +import sys +from random_numbers import RandomNumberGenerator +from coordinates import get_random_coordinates + + +## Computes a Hamiltonian based on a single "s-like" orbitals per atom. +# @author Anders Niklasson +# @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances +# \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. +# +# @param ndim Size of the Hamiltonian matrix +# @param verb Verbosity. If True is passed, information is printed +# @return H 2D numpy array of Hamiltonian elements +# +def get_random_hamiltonian(coords,verb=False): + """Construct simple toy s-Hamiltonian """ + norbs = len(coords[:,0]) + eps = 1e-9; decay_min = 0.1; m = 78; + a = 3.817632; c = 0.816371; x = 1.029769; n = 13; + b = 1.927947; d = 3.386142; y = 2.135545; + ham = np.zeros((norbs,norbs)) + if(verb): print("Constructing a simple Hamiltonian for the full system") + cnt = 0 + for i in range(0,norbs): + x = (a*x+c)%m #Hamiltonian parameters + y = (b*y+d)%n + for j in range(i,norbs): + dist = np.linalg.norm(coords[i,:]-coords[j,:]) + tmp = (x/m)*np.exp(-(y/n + decay_min)*(dist**2)) + ham[i,j] = tmp + ham[j,i] = tmp + ham[i,i] = x*y + return ham + + +if __name__ == "__main__": + n = len(sys.argv) + if n == 1: + print("Give the total number of atoms/orbitals. Example:\n") + print("python hamiltonian_random.py 100\n") + sys.exit(0) + else: + nats = int(sys.argv[1]) + + verb = True + + coords = get_random_coordinates(nats) + ham = get_random_hamiltonian(coords,verb=verb) + + print("Hamiltonian:",ham) + diff --git a/proxies/python/init_proxy.py b/proxies/python/init_proxy.py new file mode 100644 index 00000000..245ca5f1 --- /dev/null +++ b/proxies/python/init_proxy.py @@ -0,0 +1,106 @@ +"""Init proxy +This code is only used to guide implemetations and understand which are the +basic elements needed to interface with the sedacs driver. +""" + +import os +import sys +from sedacs.dev.io import src_path +import scipy.linalg as sp +import numpy as np +from proxies.python.proxy_global import read_ppots, bring_ppots, print_ppots, read_tbparams +from proxies.python.proxy_global import bring_ham_list, bring_dm_list, touch_ham_list, touch_dm_list, bring_accel_lib, touch_accel_lib +from proxies.python.proxy_global import bring_cublas_handle_list, bring_stream_list, touch_cublas_handle_list, touch_stream_list +from proxies.python.proxy_global import bring_dev_list, touch_dev_list +import ctypes + +__all__ = [ + "init_proxy_proxy","init_proxy_accelerators" +] + + +## Initialize proxy code +# @brief We will read all the parameters needed for the +# guest or proxy code to run. Every guest code will need to +# set up an initialization function and save parameters that +# need to be read from file only once. Bond integral parameter, +# pair potential, etc. will be stored in memory by the guest code. +# +def init_proxy_proxy(symbols,bas_per_atom): + + # We should really have this be defined in the engine or something, it's hard to follow where + # these things are intended to be happening. + + + #Some codes will have their own input file + #read_proxy_input_file() + #Read pair potentials + read_ppots("ppots.dat",symbols) # Not sure what this is but it probably isn't intended to be hardcoded. + print_ppots() + #Read tb parameters + filename = "aosa_parameters.dat" + read_tbparams(filename, symbols, bas_per_atom) + +def init_proxy_accelerators(nparts,norbs,rank,full_accel_path): + + try: + import ctypes + gpuLib = True + arch = "nvda" + pwd = os.getcwd() + + if arch == "nvda": + print("loading nvidia...") + lib = ctypes.CDLL("/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/nvda/libnvda.so") + if arch == "amd": + lib = ctypes.CDLL("/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/amd/libamd.so") + + import gpuLibInterface as gpu + + except: + gpuLib = False + + #set devices based on rank + num_devices=2 #num devices per node + gpu.set_device(rank%num_devices,lib) + + touch_accel_lib(full_accel_path) + accel_lib=bring_accel_lib() + + size_of_double = 8 #bytes + size_of_float = 4 #bytes + size_of_half = 2 #bytes + matSize = norbs * norbs * size_of_double + matSize_f = norbs * norbs * size_of_float + matSize_h = norbs * norbs * size_of_half + + # initialize global list storing ham and dm device vars + touch_cublas_handle_list() + touch_stream_list() + touch_dev_list() + + cublas_handle_list=bring_cublas_handle_list() + stream_list=bring_stream_list() + dev_list=bring_dev_list() + + print("CALLING GPU DEVALLOC!!---------------------") + for i in range(0,1): + print("Allocating device mem, handles and streams ...") + cublas_handle_list.append(gpu.cublasInit(accel_lib)) + stream_list.append(gpu.set_stream(accel_lib)) + + + # if sp2 + for i in range(0,3): + print("Allocating device mem, handles and streams ...") + dev_list.append(gpu.dev_alloc(matSize, lib)) + for i in range(3,8): + print("Allocating device mem, handles and streams ...") + dev_list.append(gpu.dev_alloc(matSize_f, lib)) + for i in range(8,10): + print("Allocating device mem, handles and streams ...") + dev_list.append(gpu.dev_alloc(matSize_h, lib)) + for i in range(10,12): + print("Allocating pinned mem ...") + dev_list.append(gpu.host_alloc_pinned(matSize, lib)) + diff --git a/proxies/python/nonortho.py b/proxies/python/nonortho.py new file mode 100644 index 00000000..98aee9bf --- /dev/null +++ b/proxies/python/nonortho.py @@ -0,0 +1,35 @@ +import numpy as np +import scipy.linalg as sp + +## Inverse overlap factorization +# @brief Constructs inverse overlap factors given the overlap matrix +# @param over Overlap matrix +# @param method If a particular needs to be used +# @param accel If an accelerater (hardwar/library/programing model) is used. +# @verb Verbosity switch +## +def get_xmat(over,method="Diag",accel="No",verb=False): + + if(verb): + print("In get_xmat ...") + + hdim = len(over[0,:]) + if(method == "Diag" and accel == "No"): + e,v = sp.eigh(over) + s = 1./np.sqrt(e) + zmat = np.zeros((hdim,hdim)) + for i in range(hdim): + zmat[i, :] = s[i] * v[:, i] + zmat = np.matmul(v, zmat) + elif method == "Cholesky": + pass + else: + print("ERROR: Method not implemented") + exit(0) + + if verb: + print("\nZmat Matrix") + print(zmat) + + return zmat + diff --git a/proxies/python/proxy_global.py b/proxies/python/proxy_global.py new file mode 100644 index 00000000..0201e56f --- /dev/null +++ b/proxies/python/proxy_global.py @@ -0,0 +1,106 @@ +#Set some global variables such +#as the parameters that are needed +#throughout the code + +import numpy as np +from proxies.python.hamiltonian_elements import AOSA_Parameter +import ctypes + +ppots = None +tbparams = None +d_ham_list = None +d_dm_list = None + +def read_ppots(filename,symbols): + myfile = open(filename,"r") + global ppots + ppots = np.zeros((len(symbols),len(symbols),4)) + + for lines in myfile: + info = lines.split() + if(len(info) > 1): + pairI = info[0] + pairJ = info[1] + for i in range(len(symbols)): + for j in range(len(symbols)): + if(symbols[i] == pairI and symbols[j] == pairJ): + for k in range(2,len(info)): + ppots[i,j,k-2] = float(info[k]) + ppots[j,i,:] = ppots[i,j,:] + + + +def print_ppots(): + print(ppots) + +def bring_ppots(): + return ppots + +def bring_cublas_handle_list(): + return cublas_handle_list + +def bring_stream_list(): + return stream_list + +def bring_ham_list(): + return d_ham_list + +def bring_dm_list(): + return d_dm_list + +def bring_dev_list(): + return dev_list + +def touch_cublas_handle_list(): + global cublas_handle_list + cublas_handle_list=[] + +def touch_stream_list(): + global stream_list + stream_list=[] + +def touch_ham_list(): + global d_ham_list + d_ham_list=[] + +def touch_dm_list(): + global d_dm_list + d_dm_list=[] + +def touch_dev_list(): + global dev_list + dev_list=[] + +def touch_accel_lib(full_path): + global accel_lib + #lib = ctypes.CDLL("/home/finkeljo/sedacs-gpmdsp2/src/sedacs/gpu/nvda/libnvda.so") + accel_lib = ctypes.CDLL(str(full_path)+"/libnvda.so") + +def bring_accel_lib(): + return accel_lib + +def read_tbparams(filename,symbols,bas_per_atom): + + ntypes = len(symbols) + + global tbparams + + tbparams = [None]*ntypes + sOrbTypes = ["s"] + spOrbTypes = ["s","px","py","pz"] + + for i in range(ntypes): + sublist = [None]*bas_per_atom[i] + for j in range(bas_per_atom[i]): + if(bas_per_atom[i] == 1): + orbTypes = sOrbTypes + elif(bas_per_atom[i] == 4): + orbTypes = spOrbTypes + param = AOSA_Parameter(symbols[i],orbTypes[j],filename) + sublist[j] = param + tbparams[i] = sublist + + +def bring_tbparams(): + return tbparams + diff --git a/proxies/python/random_numbers.py b/proxies/python/random_numbers.py new file mode 100644 index 00000000..487b3b35 --- /dev/null +++ b/proxies/python/random_numbers.py @@ -0,0 +1,69 @@ +"""random number generator +This code is only used to guide implemetations and understand which are the +basic elements needed to interface with the sedacs driver. +""" + +import os +import sys + +__all__ = [ + "RandomNumberGenerator", +] + + +## Simple random number generator +# This is important in order to compare across codes +# written in different languages. +# +# To initialize: +# \verbatim +# myRand = rand(123) +# \endverbatim +# where the argument of rand is the seed. +# +# To get a random number between "low" and "high": +# \verbatim +# rnd = myRand.get_rand(low,high) +# \endverbatim +# +class RandomNumberGenerator: + """To generate random numbers.""" + + def __init__(self, seed): + self.a = 321 + self.b = 231 + self.c = 13 + self.seed = seed + self.status = seed * 1000 + + def generate(self, low, high): + """Get a random real number in between low and high.""" + w = high - low + place = self.a * self.status + place = int(place / self.b) + rand = (place % self.c) / self.c + place = int(rand * 1000000) + self.status = place + rand = low + w * rand + + return rand + + +if __name__ == "__main__": + n = len(sys.argv) + if n == 1: + print("Give the total number of vector elements. Example:\n") + print("python random.py 100\n") + sys.exit(0) + else: + nel = int(sys.argv[1]) + + verb = True + + rnd = RandomNumberGenerator(1234) + + for i in range(nel): + print(i,rnd.generate(0,1)) + + + diff --git a/proxies/vars b/proxies/vars new file mode 100644 index 00000000..51759b63 --- /dev/null +++ b/proxies/vars @@ -0,0 +1,11 @@ +#!/bin/bash +THIS_PATH=`pwd` +MOD_PATH=$THIS_PATH/../mods +LATTE_PATH=$THIS_PATH/../latte +PROXYA_PATH=$THIS_PATH/python_proxy +export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$LATTE_PATH:$PROXYA_PATH +export PYTHONWARNINGS="ignore:Unverified HTTPS request" + +GPU_PATH=$THIS_PATH/../src/sedacs/gpu +export PYTHONPATH=$PYTHONPATH:$GPU_PATH + diff --git a/src/sedacs/__init__.py b/src/sedacs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/sedacs/charges.py b/src/sedacs/charges.py new file mode 100644 index 00000000..ab00850f --- /dev/null +++ b/src/sedacs/charges.py @@ -0,0 +1,115 @@ +""" +charges.py +==================================== +Some functions to compute charges + +So far: Initital "get_charges" and "collect_charges" +for nonorthogonal TB +""" + +import numpy as np +from sedacs.message import * + +__all__ = ["get_charges", "collect_charges"] + + +def get_charges(rho, znuc, types, part, hindex, over=None, verb=False): + """ + This function will return the point Mulliken populations + for every atom in the system. + + Parameters + ---------- + rho : numpy 2D array + A 2D numpy array containing the elements of the Density matrix. + znuc : int + Number of valence electrons for every atom type. + types : list of int + Type index for every atom in the system. + part : list + Atom indices within the part (only cores). + hindex : list + Begining and ending of every index for atomic orbital block. + Atom i will have its orbitals indexed in between (hindex[i],hindex[i+1]) + over : numpy 2D array + A 2D numpy array containing the elements of the Overlap matrix. + verb : bool + If set to True information is printed. + + Returns + ------- + 2D numpy array + A vector containing the Mulliquen charges is returned. + + Notes + ----- + A vectorized version of this routine is needed. + """ + ncores = len(part) + if verb: + status_at("get_charges", "Getting charges from density matrix") + + fullDiag = np.diag(rho) + charges = np.zeros((ncores)) + + nel = sum(znuc[types[:]]) + trRho = 0.0 + if over is None: + for i in range(ncores): + for ii in range(hindex[i], hindex[i + 1]): + charges[i] = charges[i] + fullDiag[ii] + charges[i] = 2.0 * charges[i] - znuc[types[i]] + else: # S x D + aux = np.dot(over, rho) + fullDiag = np.diag(aux) + for i in range(ncores): + charges[i] = 0.0 + for ii in range(hindex[i], hindex[i + 1]): + charges[i] = charges[i] + fullDiag[ii] + trRho = trRho + fullDiag[ii] + charges[i] = 2.0 * charges[i] - znuc[types[i]] + if verb: + msg = "Total Charge for part= " + str(sum(charges)) + status_at("get_charges", msg) + + return charges + + +def collect_charges(chargesOnRank, charges, part, nats, verb=False): + """ + Collects the charges from multiple system parts at a given MPI rank + + Given a vector representing the charges of a particular subsystem, + denoted as charges, the values will be appropriately mapped to + the charge vector that corresponds to the entire system, referred to as + ``chargesOnRank``, by utilizing the information within the vector denoted as + part. + + Parameters + ---------- + chargesOnRank : 1D numpy array + Full charge vetor on every rank. + charges : 1D numpy array + Charges to be collected. + part : list + List of atom indices in the part. + nats : int + Number of total atoms in the system. + + Returns + ------- + 1D numpy array + Returns the same vector chargesOnRank with the + added charges of the part + + """ + if verb: + status_at("collect_charges", "Collecting charges") + + if chargesOnRank is None: + chargesOnRank = np.zeros((nats)) + + for i in range(len(part)): + chargesOnRank[part[i]] = charges[i] + + return chargesOnRank diff --git a/src/sedacs/chemical_potential.py b/src/sedacs/chemical_potential.py new file mode 100644 index 00000000..4d3467c5 --- /dev/null +++ b/src/sedacs/chemical_potential.py @@ -0,0 +1,216 @@ +"""Chemical potential. This module will handle functions +related to the computation of chemical potential or Fermi +""" + +import os +import sys + +import numpy as np +import scipy.linalg as sp +import sedacs.driver +from sedacs.dev.io import src_path +from hamiltonian_elements import * +from sedacs.file_io import read_coords_file, write_xyz_coordinates +from dnnprt import * +from proxy_global import * +from hamiltonian_random import get_random_hamiltonian +from hamiltonian_random import get_random_coordinates +from hamiltonian_random import RandomNumberGenerator + + +__all__ = [ + "get_mu", + "fermi_dirac", +] + + +## Fermi-Dirac function +# @brief Get the Fermi-Dirac distribution probabilities given a set +# of energy values +# @param mu Chemical potential +# @param energy Energy value/s +# @param etemp Electronic temperature [K] +# @param kB Boltzman constant (default is in eV/K) +# +def fermi_dirac(mu, energy, temp, kB=8.61739e-5): + ''' + Get Fermi probability distributions (values are between 0 and 1) + ''' + fermi = np.where((energy - mu)/(kB*temp) < 100, 1/(1 + np.exp((energy - mu)/(kB*temp))), 0.0) + + return fermi + + +## Comput the chemical potential +# @brief Get the chemical potential from a set of eigenvalues and their weights +# coputed from a partial trace over a "subsytem". It first uses a Newton-Raphson (NR) +# scheme. It then applies a bisection method if NR does not converge +# @param mu0 Initial guess of mu. If set to None, it will use (HOMO+LUMO)/2. +# @param evals Eigenvalues of the system +# @param etemp Electronicn temperature +# @param nocc Number of occupied orbitals (This is typically coputed from the total +# number of electrons) +# @param dvals Weights computed from a partial trace. If set to None, weights are set to 1.0. +# @param kB Boltzman constant (default is in eV/K) +# @param verb Verbosity switch +# +def get_mu(mu0, evals, etemp, nocc, dvals=None, kB=8.61739e-5, verb=False): + + if(verb): + print('\nCalculating mu ...,') + + a = 1.0 + nmax = 30 + tol = 1.0E-10 + + #HOMO = evals[int(nocc)] + #LUMO = evals[int(nocc) + 1] + #mu = 0.5*(LUMO + HOMO) + #mu = 0.5 * (np.min(evals) + np.max(evals)) + #mu = np.min(evals) + mu = mu0 + norbs = len(evals) + notConverged = False + if(dvals is None): + dvals = np.ones((norbs)) + for i in range(nmax+1): + fermi = fermi_dirac(mu, evals, etemp) + occ = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) + occErr = abs(occ - nocc) + if abs(occErr) < tol: + break + dFermiDmu = (1/(kB*etemp))*fermi*(1.0-fermi)*dvals + occ_prime = np.sum(dFermiDmu[:norbs]*dvals[:norbs]) + mu = mu + a*(nocc - occ)/occ_prime + if(abs(mu) > 1.0E10): + print('WARNING: Newton-Raphson did not converge (will try bisection) Occupation error = ', occErr) + notConverged = True + break + if verb: + print('N-R iteration (i,mu,occ,occErr)', i, mu, occ, occErr) + if(i == nmax): + print('WARNING: Newton-Raphson did not converge (will try bisection) Occupation error = ', occErr) + notConverged = True + + if(notConverged): + etemp = 10000 + muMin = np.min(evals) + muMax = np.max(evals) + mu = muMin + #mu = muMax + step = abs(muMax-muMin) + Ft1 = 0.0 + Ft2 = 0.0 + prod = 0.0 + + #Sum of the occupations + fermi = fermi_dirac(mu, evals, etemp) + ft1 = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) + ft1 = ft1 - nocc + + for i in range(1000001): + if(i == 1000000): + print("Bisection method in gpmdcov_musearch_bisec not converging ...") + exit(0) + if(mu > muMax + 1.0 or mu < muMin - 1.0): + print("Bisection method is diverging") + print("muMin=",muMin,"muMax=",muMax) + print(evals) + exit(0) + + if(abs(ft1) < tol): #tolerance control + occErr = ft2 + break + mu = mu + step + + ft2 = 0.0 + + #New sum of the occupations + fermi = fermi_dirac(mu, evals, etemp) + ft2 = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) + occ = ft2 + ft2 = ft2 - nocc + + #Product to see the change in sign. + prod = ft2*ft1 + if(prod < 0): + mu = mu - step + step = step / 2.0 #If the root is inside we shorten the step. + else: + ft1 = ft2 #If not, Ef moves forward. + if verb: + print('Bisection iteration (i,mu,occ,occErr);', i, mu, occ, ft2) + + print('Final mu, error:', mu, occErr) + + return mu + +## Estimates mu from a matrix using the Girshgorin centers +# @brief It will use the diagonal elements as an approximation +# for eigenvalues. +# @param ham Hamiltonian matrix +# @param etemp Electroninc temperature +# @param nocc Number of occupied states +# @param kB Boltzman constante (default is in units of eV/K) +# @param verb Vorbosity switch +# +def estimate_mu(ham,etemp,nocc,kB=8.61739e-5,verb=False): + diag = np.sort(np.diagonal(ham)) + if(verb): + print("Estimating the chemical potential from diagonal elements ... \n") + mu0 = 0.5*(np.max(diag) + np.min(diag)) + print("diag",diag) + print("Mu0",mu0) + mu = get_mu(mu0,diag,etemp,nocc,kB=kB,dvals=None,verb=True) + + return mu + + +if __name__ == "__main__": + + n = len(sys.argv) + + if n == 1: + print("Give the total number of elements. Example:\n") + print("proxy_a 100\n") + sys.exit(0) + else: + norbs = int(sys.argv[1]) + + verb = True + + #Build random coordinates + coords = get_random_coordinates(norbs) + + #Build random Hamiltonian (Anders' version) + ham = get_random_hamiltonian(coords) + + print("\n Hamiltonan:") + print(ham) + + nocc = 0.5*norbs + etemp = 10000 + + #Scale the diagonal elements + scalingFactor = 1.0 + for i in range(norbs): + ham[i,i] = scalingFactor*ham[i,i] + + #Estimate mu from the diagonal elements of H + muEst = estimate_mu(ham,etemp,nocc,kB=8.61739e-5) + print("\n Estimated mu:",muEst) + + #Get eigenvalues and eigenvectors + evals, evects = sp.eigh(ham) + + #Compute exact mu + mu0 = 0.0 + muReal = get_mu(mu0,evals,etemp,nocc,dvals=None,verb=True) + print("\n Exact mu:",muEst) + + print("\n Realative error of mu estimation",abs((muReal - muEst)/muReal)) + + + + + diff --git a/src/sedacs/coulombic.py b/src/sedacs/coulombic.py new file mode 100644 index 00000000..7c664a0a --- /dev/null +++ b/src/sedacs/coulombic.py @@ -0,0 +1,190 @@ +"""coulombic +Some functions to copute Coulombic interactions + +So far: get_coulvs and build_coul_ham +""" + +from sedacs.message import * +from sedacs.periodic_table import PeriodicTable +from sedacs.interface_modules import build_coul_ham_module +from sedacs.ewald import ewald_self_energy, calculate_PME_ewald +from sedacs.ewald import init_PME_data, calculate_alpha_and_num_grids, CONV_FACTOR +from sedacs.neighbor_list import NeighborState +import numpy as np +import torch + +try: + from mpi4py import MPI + mpiLib = True +except ImportError as e: + mpiLib = False +from multiprocessing import Pool + +if mpiLib: + from sedacs.mpi import * +import time + +__all__ = [ + "get_coulvs","get_PME_coulvs","build_coul_ham","get_coulombic_forces" +] + +## Get short-range (non periodic) Coulombic potentials +# @param charges Excess electronic ocupation (this is the negative of the charge vector) +# @param coords Atomic positions +# @param unit_facto Unit factor to account for proper units. +# @param verb Verbosity level. +# +def get_coulvs(charges,coords,atomtypes,latticeVectors,unit_factor=14.3996437701414,verb=False): + + nats = len(charges) + coulvs = np.zeros(nats) + alpha = 0.4 + for i in range(nats): + for j in range(nats): + if(i != j): + for nx in range(-1,2): + for ny in range(-1,2): + for nz in range(-1,2): + translation = nx * latticeVectors[0, :] + ny * latticeVectors[1, :] + nz * latticeVectors[2, :] + distance = np.linalg.norm(coords[j,:] - coords[i,:] + translation) + erf = torch.erf(alpha * torch.Tensor([distance])) + coulvs[i] = coulvs[i] + erf * (unit_factor*charges[j])/(distance) + else: #We do not know how Hubbard Us are treated bu guest codes + #coulvs[i] = coulvs[i] + hubbard[types[i]]*q[i] + if atomtypes[i] == 1: +# coulvs[i] = coulvs[i] #+ 5.876141*charges[i] + coulvs[i] = coulvs[i] + 11.876141*charges[i] + elif atomtypes[i] == 0: + #coulvs[i] = coulvs[i] #+ 6.054683*charges[i] + coulvs[i] = coulvs[i] + 12.054683*charges[i] + + + return coulvs + +@torch.compile(dynamic=True) +def calculate_dist_dips(pos_T, long_nbr_state): + disps = long_nbr_state.calculate_displacement(pos_T) + dists = torch.norm(disps, dim=0) + nbr_inds = torch.where((dists > long_nbr_state.cutoff) | (dists == 0.0), -1, long_nbr_state.nbr_inds) + dists = torch.where(dists == 0, 1, dists) + + return disps, dists, nbr_inds + +## Get Periodic Coulombic potentials +# @param charges Excess electronic occupation (this is the negative of the charge vector) +# @param coords Atomic positions +# @param unit_facto Unit factor to account for proper units. +# @param verb Verbosity level. +# +def get_PME_coulvs(charges_np,hubbard_u_np,coords_np,atomtypes_np,lattice_vecs_np,calculate_forces=0): + np_dtype = np.float64 + dtype = torch.float64 + device = "cuda" + # NOTE: cutoff <= 0.5 * min(box lengths) + # so if box lengths are [10.0, 10.0, 10.0], cutoff shuold be at most 5.0. + # because of the minumum image convention. + + cutoff = 5.0 # real space cutoff + if cutoff > lattice_vecs_np[0][0]: + cutoff = float(lattice_vecs_np[0][0]) / 2 + buffer = 1.0 # buffer room + t_err = 5e-4 # force error + PME_order = 6 + + lattice_vecs = torch.from_numpy(lattice_vecs_np).to(device).to(dtype) + lattice_lengths = torch.norm(lattice_vecs, dim=1) + coords = torch.from_numpy(coords_np).to(device).to(dtype) +# coords = coords - lattice_lengths * torch.floor(coords / lattice_lengths) + charges = torch.from_numpy(charges_np).to(device).to(dtype) + hubbard_u = torch.from_numpy(hubbard_u_np).to(device).to(dtype) + atomtypes = torch.from_numpy(atomtypes_np).to(device).to(torch.int) + + # init PME grid size and related data + alpha, grid_dimensions = calculate_alpha_and_num_grids(lattice_vecs_np, cutoff, t_err) + PME_data = init_PME_data(grid_dimensions, lattice_vecs, alpha, PME_order) + + # coords_T: [3, N], coords: [N, 3] + coords_T = coords.T.contiguous() + + nbr_state = NeighborState(coords_T, lattice_vecs, None, cutoff, is_dense=True, buffer=buffer) + + disps, dists, nbr_inds = calculate_dist_dips(coords_T, nbr_state) +# breakpoint() + # When this is first run, torch.compile might give bunch of warnings about complex numbers + # and overall tuning process, they are safe to ignore + ewald_e, forces, coulvs = calculate_PME_ewald(coords, charges, lattice_vecs, + nbr_inds, disps, dists, + alpha, + cutoff, + PME_data, hubbard_u, atomtypes, calculate_forces = calculate_forces, calculate_dq = 1, screening = 1) + + # unit conversio and adding self energy (needed for energy conservation) + # self_energy, self_energy_dq = ewald_self_energy(charges, alpha, calculate_dq = 1) + # ewald_e = (ewald_e + self_energy) * CONV_FACTOR + ewald_e = ewald_e + 0.5 * torch.sum( hubbard_u * charges**2) + # coulvs = (coulvs + self_energy_dq) * CONV_FACTOR + coulvs = coulvs + hubbard_u * charges + ewald_e = ewald_e.double().cpu().detach().numpy() + coulvs = coulvs.double().cpu().numpy() + if calculate_forces: + return coulvs, ewald_e, forces.double().cpu().numpy() #* CONV_FACTOR + else: + return coulvs, ewald_e + +## Add coulombic potentials to the Hamiltonian +# @param ham0 No-SCF Hamiltonian +# @param vcouls Coulombic potentials for every atomic site +# @pparam orbital_based If set to True, coulombic potentials for every orbitals will be +# expected. +# @param hindex will give the orbital index for each atom +# The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1` +# @param overlap Overlap matrix for nonorthogonal formulations. +# @param verb Verbosity switch. +# +def build_coul_ham(engine,ham0,vcouls,types,charges,orbital_based,hindex,overlap=None,verb=False): + # Call the proper interface + # If there is no interface, one should write its own Hamiltonian + if engine.interface == "None": + raise ValueError("ERROR!!! - Write your own coulombic Hamiltonian.") + # Tight interface using modules or an external code compiled as a library + elif engine.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + ham = build_coul_ham_module(engine,ham0,vcouls,types,charges,orbital_based,hindex,overlap=overlap,verb=False) + # Using any available library. + elif engine.interface == "MDI": + raise NotImplemented("MDI interface not implemented yet") + # Using unix sockets to interface the codes + elif engine.interface == "Socket": + raise NotImplemented("Sockets not implemented yet") + # Using files as a form of communication and transfering data. + elif engine.interface == "File": + raise NotImplemented("File interface not implemented yet") + else: + raise ValueError(f"ERROR!!!: Interface type not recognized: '{engine.interface}'. " + + f"Use any of the following: Module,File,Socket,MDI") + + + return ham + + +def get_coulombic_forces(charges,coords,atomTypes,symbols,factor=14.39964377014,field=None): + nats = len(charges) + forces_coul = np.zeros((nats,3)) + forces_field = np.zeros((nats,3)) + forces = np.zeros((nats,3)) + for i in range(nats): + #Coulombic Forces + for j in range(nats): + if(i != j): + distance = np.linalg.norm(coords[i,:] - coords[j,:]) + direction = (coords[i,:] - coords[j,:])/distance + forces_coul[i,:] = forces_coul[i,:] - (factor*direction*charges[i]*charges[j])/(distance**2) + + #Field forces + if(field is not None): + forces_field[i,:] = forces_field[i,:] + field*charges[i] + forces = forces_field + forces_coul + else: + forces = forces_coul + + return forces diff --git a/src/sedacs/density_matrix_renorm.py b/src/sedacs/density_matrix_renorm.py new file mode 100644 index 00000000..66320c20 --- /dev/null +++ b/src/sedacs/density_matrix_renorm.py @@ -0,0 +1,48 @@ +"""Density matrix +Routines to build a density matrix. Typically +this will be done interfacing with an engine. + +""" + +import sys + +from sedacs.interface_modules import get_density_matrix_modules +from sedacs.interface_pyseqm import get_densityMatrix_renormalized_pyseqm +import torch +try: + import seqm; PYSEQM = True + from seqm.seqm_functions.pack import pack +except: PYSEQM = False + + +__all__ = ["get_density_matrix"] + + +## Build the density matrix. +# @brief This will build a density matrix. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param nocc Number of occupied states +# @param ham Hamiltonian matrix +# @verbose Verbosity +# +def get_density_matrix_renorm(sdc, eng, Tel, mu0, P_contr, graph_for_pairs, + eVals, Q, NH_Nh_Hs, core_indices_in_sub_expandedm, verbose=False): + if eng.interface == "None": + print("ERROR!!! - Write your own Hamiltonian") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + rho = get_density_matrix_modules(eng, ham, verb=False) + elif eng.interface == "PySEQM": + if(PYSEQM == False): + print("ERROR: No PySEQM installed") + exit() + rho = get_densityMatrix_renormalized_pyseqm(sdc, eVals, Q, Tel, mu0, NH_Nh_Hs) + maxDif = None + sumDif = None + + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + exit() + return rho, maxDif, sumDif diff --git a/src/sedacs/dev/__init__.py b/src/sedacs/dev/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/sedacs/dev/io.py b/src/sedacs/dev/io.py new file mode 100644 index 00000000..32a626df --- /dev/null +++ b/src/sedacs/dev/io.py @@ -0,0 +1,40 @@ +import importlib.util +import os.path +from pathlib import Path + +__all__ = ["project_path", "src_path", "bindeps_path", "data_path", "plots_path", "examples_path"] + + +def locate_package(package_name): + spec = importlib.util.find_spec(package_name) + if spec and spec.origin: + # Get the path to the package + package_path = spec.origin + # Get the directory containing the package + installation_path = os.path.dirname(package_path) + return Path(installation_path) + raise ModuleNotFoundError(f"Package `{package_name}` not found.") + + +def src_path(): + return locate_package("sedacs") + + +def project_path(): + return src_path().parent.parent + + +def data_path(): + return project_path() / "data/" + + +def plots_path(): + return project_path() / "plots/" + + +def examples_path(): + return project_path() / "examples/" + + +def bindeps_path(): + return project_path() / "bindeps/" diff --git a/src/sedacs/driver/__init__.py b/src/sedacs/driver/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/sedacs/driver/classical.py b/src/sedacs/driver/classical.py new file mode 100644 index 00000000..03f90c25 --- /dev/null +++ b/src/sedacs/driver/classical.py @@ -0,0 +1,47 @@ +import numpy as np + +from proxies.python.first_level import get_random_coordinates +from sedacs.force_fields import get_classical_forces +from sedacs.integrate import do_timestep +from sedacs.periodic_table import PeriodicTable + +__all__ = ["do_MD"] + + +def do_MD(init_coords, types, symbols, latticeVectors, nl, nlTrX, nlTrY, nlTrZ, init_vels, dt, num_steps, gamma=0.1): + nats = len(init_coords[:, 0]) + init_coords = get_random_coordinates(nats) + for i in range(2): + symbols[i] = "C" + p = PeriodicTable() + atomicnumbers = np.zeros(nats, dtype=int) + for i in range(nats): + atomicnumbers[i] = p.get_atomic_number(symbols[types[i]]) + masses = p.mass[atomicnumbers[:]] + + masses3d = np.zeros((nats, 3)) + masses3d[:, 0] = masses[:] + masses3d[:, 1] = masses[:] + masses3d[:, 2] = masses[:] + + masses3d[:, :] = 40.0 + + print("doing MD...") + coords = init_coords + vels = init_vels + gamma = 0.1 + + myFile = open("traj.xyz", "w") + for i in range(0, num_steps): + forces = get_classical_forces( + coords, types, symbols, latticeVectors, nl, nlTrX, nlTrY, nlTrZ, "HarmonicAll", verb=False + ) + + coords, vels = do_timestep(coords, vels, forces, masses3d, gamma, dt) + if i % 100 == 0: + print(nats, file=myFile) + print("frame", i, file=myFile) + for j in range(nats): + print(symbols[types[j]], coords[j, 0], coords[j, 1], coords[j, 2], file=myFile) + + print(coords[0, :]) diff --git a/src/sedacs/driver/energy_and_forces.py b/src/sedacs/driver/energy_and_forces.py new file mode 100644 index 00000000..99663c38 --- /dev/null +++ b/src/sedacs/driver/energy_and_forces.py @@ -0,0 +1,164 @@ +"""Graph adaptive self-consistenf charge solver""" + +import time + +from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph +from sedacs.graph_partition import get_coreHaloIndices, graph_partition +from sedacs.hamiltonian import get_hamiltonian +from sedacs.density_matrix import get_density_matrix +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.mpi import collect_and_sum_matrices +from sedacs.system import System, extract_subsystem, get_hindex +from sedacs.coulombic import get_coulvs, build_coul_ham, get_coulombic_forces +from sedacs.charges import get_charges, collect_charges +from sedacs.tbforces import get_tb_forces +from sedacs.message import status_at, error_at, warning_at +from sedacs.mixer import diis_mix +import numpy as np +try: + from mpi4py import MPI + is_mpi_available = True +except ModuleNotFoundError: + is_mpi_available = False + +__all__ = ["get_occ_singlePoint", "get_adaptiveSCFDM_force"] + + +## Single point calculation +# @brief Construct a connectivity graph based on constructing density matrices +# of parts of the system. +# +def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex): + # computing DM for core+halo part + # + partsPerRank = int(sdc.nparts / numranks) + partIndex1 = rank * partsPerRank + partIndex2 = (rank + 1) * partsPerRank + graphOnRank = None + chargesOnRank = None + for partIndex in range(partIndex1, partIndex2): + print("Rank, part", rank, partIndex) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + tic = time.perf_counter() + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + toc = time.perf_counter() + print("Time for extract_subsystem", toc - tic, "(s)") + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates( + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + ) + tic = time.perf_counter() + + #ham0, over = get_hamiltonian(eng, subSy.coords, subSy.types, subSy.symbols, verbose=False, get_overlap=True) + ham0 = get_hamiltonian(eng, subSy.coords, subSy.types, subSy.symbols, verbose=False, get_overlap=False) + + #Get some electronic structure elements for the sybsystem + #This could eventually be computed in the engine if no basis set is + #provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + + #ham = build_coul_ham(ham0,sy.coulvs[partsCoreHalo[partIndex]],False,subSy.hindex,overlap=over,verb=True) + ham = build_coul_ham(ham0,sy.coulvs[partsCoreHalo[partIndex]],False,subSy.hindex,overlap=None,verb=True) + + toc = time.perf_counter() + print("Time for get_hamiltonian", toc - tic, "(s)") + norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + tic = time.perf_counter() + #rho = get_density_matrix(eng,ham,nocc=nocc,mu=None,elect_temp=0.0,overlap=over,verb=False) + rho = get_density_matrix(eng,ham,nocc=nocc,mu=None,elect_temp=0.0,overlap=None,verb=False) + #chargesInPart = get_charges(rho,subSy.znuc,subSy.types,parts[partIndex],subSy.hindex,over=over,verb=True) + chargesInPart = get_charges(rho,subSy.znuc,subSy.types,parts[partIndex],subSy.hindex,over=None,verb=True) + print("TotalCharge in part",partIndex,sum(chargesInPart)) + print("Charges in part",chargesInPart) + + toc = time.perf_counter() + print("Time to get_densityMatrix", toc - tic, "(s)") + # Building a graph from DMs + graphOnRank = collect_graph_from_rho( + graphOnRank, rho, sdc.gthresh, sy.nats, sdc.maxDeg, parts[partIndex], hindex + ) + + chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) + + + if (is_mpi_available and numranks > 1): + fullGraphRho = collect_and_sum_matrices(graphOnRank, rank, numranks, comm) + fullCharges = collect_and_sum_vector() + comm.Barrier() + else: + fullGraphRho = graphOnRank + fullCharges = chargesOnRank + + return fullGraphRho, fullCharges + + +def get_adaptiveSCFDM_force(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): + fullGraph = graphNL + + #Iitial guess for the excess ocupation vector. This is the negative of + #the charge! + charges = np.zeros(sy.nats) + chargesOld = np.zeros(sy.nats) + chargesIn = None + chargesOld = None + chargesOut = None + for gscf in range(sdc.numAdaptIter): + msg = "Graph-adaptive iteration" + str(gscf) + status_at("get_adaptiveSCFDM",msg) + # Partition the graph + parts = graph_partition(fullGraph, sdc.partitionType, sdc.nparts, False) + njumps = 1 + partsCoreHalo = [] + numCores = [] + print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) + partsCoreHalo.append(coreHalo) + numCores.append(nc) + print("coreHalo for part", i, "=", coreHalo) + + sy.coulvs = get_coulvs(charges,sy.coords) + #print(sy.coulvs) + + fullGraphRho,charges = get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex) + + scfError, charges, chargesOld, chargesIn, chargesOut = diis_mix(charges,chargesOld,chargesIn,chargesOut,gscf,False) + + fullGraph = add_graphs(fullGraphRho, graphNL) + print("Charges",charges) + print("ChargesOld",chargesOld) + print("SCF ERR =",scfError) + print("TotalCharge",sum(charges)) + print("All variables",dir()) + + if(scfError < sdc.scfTol): + status_at("get_adaptiveSCFDM","SCF converged with SCF error = "+str(scfError)) + break + + if(gscf == sdc.numAdaptIter - 1): + warning_at("get_adaptiveSCFDM","SCF did not converged ... ") + + #Get forces after SCF convergence. + + #Coulombic forces will be computed for the whole system + forces = get_coulombic_forces(charges,sy.coords,sy.types,sy.symbols,factor=14.39964377014,field=None) + forces = forces[:,:] + forces_tb[:,:] + print(forces) + exit(0) + + + + AtToPrint = 0 + + subSy = System(fullGraphRho[AtToPrint, 0]) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] + ) + + if rank == 0: + write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) diff --git a/src/sedacs/driver/graph_adaptive.py b/src/sedacs/driver/graph_adaptive.py new file mode 100644 index 00000000..d751616e --- /dev/null +++ b/src/sedacs/driver/graph_adaptive.py @@ -0,0 +1,1158 @@ +"""Graph adaptive self-consistenf charge solver""" +import warnings +warnings.simplefilter("ignore", FutureWarning) +import os +os.environ["PYTHONWARNINGS"] = "ignore:Unverified HTTPS request" +import time +import torch +print('num_threads',torch.get_num_threads()) +from sedacs.density_matrix import get_density_matrix, get_initDM, get_dmErrs, get_dmTrace +from sedacs.density_matrix_renorm import get_density_matrix_renorm +from sedacs.energy import get_eNuc, get_eTot +from sedacs.molSysData import get_molSysData +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.graph_partition import get_coreHaloIndices, graph_partition, get_coreHaloIndicesPYSEQM + +from sedacs.hamiltonian import get_hamiltonian +from sedacs.density_matrix import get_density_matrix +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.mpi import collect_and_sum_matrices +from sedacs.system import System, extract_subsystem, get_hindex +from sedacs.coulombic import get_coulvs, build_coul_ham +from sedacs.charges import get_charges, collect_charges +from sedacs.message import status_at, error_at, warning_at +from sedacs.mixer import diis_mix, linear_mix +import numpy as np +from sedacs.evals import get_eVals +from sedacs.chemical_potential import get_mu +from sedacs.graph import get_initial_graph, update_dm_contraction, get_ch_graph, get_maskd, collect_graph_from_rho, collect_graph_from_rho_PYSEQM, add_graphs, print_graph, add_mult_graphs +from sedacs.interface_pyseqm import get_coreHalo_ham_inds, get_diag_guess_pyseqm, pyseqmObjects, get_molecule_pyseqm +import itertools +import sys +import psutil +import pickle +import socket +import copy +from seqm.seqm_functions.pack import pack +import gc +import numpy as np +try: + from mpi4py import MPI + is_mpi_available = True +except ModuleNotFoundError: + is_mpi_available = False +__all__ = ["get_occ_singlePoint", "get_adaptiveSCFDM"] + +# @brief Construct a connectivity graph based on constructing density matrices of parts of the system. +def get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, gpu_comm, parts, partsCoreHalo, sy, hindex, mu0, + molecule_whole, P_contr, graph_for_pairs, graph_maskd): + ''' + Function calculates CH hamiltonians (ham), then eVals and dVals on each rank of gpu_comm. + Then it gathers everything on global rank 0, computes chemical potential mu0. + sdc: + eng: + partsPerGPU: number of CH processed by one rank. + partsPerNode: number of CH processed on one node. + node_id: + node_rank: local rank on a node. E.g., for [0,1,2,3] [4,5,6,7], global rank 4 is local rank 0. + rank: global rank + gpu_comm: global communicator for ranks with GPU. + If on CPU, all ranks are involved. gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) == node_numranks, gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) <= node_numranks, gpu_comm is different form master comm. For example, 8 ranks on two nodes [0,1,2,3] and [4,5,6,7] with 2 GPUs per node. In that case, only ranks [0,1] and [4,5] are involved. They, however, become [0,1] [2,3] within gpu_comm. + parts: list of cores + partsCoreHalo: list of core+halo + sy: + hindex: + mu0: chemical potential + molecule_whole: pyseqm molecule object + P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) + graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size + graph_maskd: diagonal mask for P_contr + ''' + ### Instead of this: + # partIndex1 = rank * partsPerRank + # partIndex2 = (rank + 1) * partsPerRank + ### we do this because there might be fewer GPUs per node than ranks per node. + partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode + partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode + + if sdc.UHF: # open shell + dValOnRank = np.empty((2, 0)) + eValOnRank = np.empty((2, 0)) # this will store flattened eVals for all CH. 1d np array. + else: # closed shell + dValOnRank = np.array([]) # this will store flattened dVals for all CH. 1d np array. For mu0 + eValOnRank = np.array([]) # this will store flattened eVals for all CH. 1d np array. + eValOnRank_list = [] # this will store eVals arranged per CH. List of 1D torch tensors. For mu0 and later for dm + dValOnRank_list = [] # this will store dVals arranged per CH. List of 1D torch tensors. For mu0 and later for dm + Q_list = [] # Eigenvectors for each part + Nocc_list = [] # Number of occupied orbitals for each part. It's not used in thermal HF but lets keep this option. + core_indices_in_sub_expanded_list = [] # Indices of core hamiltonian in core+halo hamiltonian. Might be useful when core and halo atoms are shuffled to stay sorted, like in PySEQM. + NH_Nh_Hs_list = [] # list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham, nocc] + EELEC = 0.0 # this will sum electronic energy of CHs on the current rank + for partIndex in range(partIndex1, partIndex2): + ticHam = time.perf_counter() + #print("\n Rank, part", rank, partIndex) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + + subSyCore = System(len(parts[partIndex])) + subSyCore.symbols = sy.symbols + subSyCore.coords,subSyCore.types = extract_subsystem(sy.coords,sy.types,sy.symbols,parts[partIndex]) + + if sdc.writeGeom: + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates("subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols) + partCoreFileName = "CoreSubSy"+str(rank)+"_"+str(partIndex)+".pdb" + write_pdb_coordinates(partCoreFileName,subSyCore.coords,subSyCore.types,subSyCore.symbols) + write_xyz_coordinates("CoreSubSy"+str(rank)+"_"+str(partIndex)+".xyz",subSyCore.coords,subSyCore.types,subSyCore.symbols) + + + core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub = \ + get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy, device=P_contr.device) + + # Get CH hamiltonian. If on GPU, temporarily redefine molecule_whole on GPU (its faster than transfering) and send P_contr to GPU. + # The idea is to have P_contr in shared memory on each node, then update in parallel on node 0. + # If initialized on GPU, then we'll need to transfer it back into shared memory CPU to update in parallel. Ideally, this needs to be fixed. + ham_timing = {} + if sdc.scfDevice == 'cuda': + device = 'cuda:{}'.format(node_rank) + tmp_molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + ham, eElec = get_hamiltonian(sdc, eng, subSy.coords, subSy.types, subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P_contr.to(device), graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, verbose=False) + del tmp_molecule_whole + else: + device = 'cpu' + ham, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], molecule_whole, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, verbose=False) + EELEC += eElec + + + #print("TOT {:>8.3f} (s)".format(time.perf_counter() - tic)) + + # Get eVals, dVals + tic = time.perf_counter() + norbs = subSy.nats + occ = int(float(norbs) / 2.0) # Get the total occupied orbitals. Not used. + coreSize = len(parts[partIndex]) + eVals, dVals, Q, NH_Nh_Hs = get_eVals(eng, sdc, sy, ham, subSy.coords, subSy.symbols, subSy.types, sdc.Tel, mu0, + core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub, + coreSize, subSy, subSyCore, parts[partIndex], partsCoreHalo[partIndex], verbose=False) + del ham + + if sdc.UHF: + dValOnRank = np.append(dValOnRank, dVals, axis=1) + eValOnRank = np.append(eValOnRank, eVals.cpu().numpy(), axis=1) + else: + dValOnRank = np.append(dValOnRank, dVals) + eValOnRank = np.append(eValOnRank, eVals.cpu().numpy()) + eValOnRank_list.append(eVals.cpu()) + dValOnRank_list.append(dVals) + Q_list.append(Q.cpu()) + core_indices_in_sub_expanded_list.append(core_indices_in_sub_expanded) + NH_Nh_Hs_list.append(NH_Nh_Hs) + Nocc_list.append(occ) + #print("| t eVals/dVals {:>9.4f} (s)".format(time.perf_counter() - tic)) + ham_timing['eVals/dVals'] = time.perf_counter() - tic + ham_timing['TOT'] = time.perf_counter() - ticHam + #ham_timing_formatted = {key: f"{value:8.3f}" for key, value in ham_timing.items()} + formatted_string = " | ".join(f"{key} {value:8.3f}" for key, value in ham_timing.items()) + print('Rank', rank, 'part', partIndex, ':', formatted_string) + + + ########## + ########## + tic = time.perf_counter() + if rank != 0: + gpu_comm.send(Q_list, dest=0, tag=0) + else: + Q_LIST = [Q_list] + for i in range(1, gpu_comm.Get_size()): + Q_LIST.append(gpu_comm.recv(source=i, tag=0)) + print("Time Q_LIST send/recv {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + # tic = time.perf_counter() + # torch.save(Q_list, 'Q/Q_list_{}.pt'.format(rank)) #### oldR + # print("Time to save Q_list {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + + tic = time.perf_counter() + full_dVals = None + full_eVals = None + eValOnRank_size = np.array(eValOnRank.shape[-1], dtype=int) + eValOnRank_SIZES = None + recvcounts = None + if rank == 0: + eValOnRank_SIZES = np.empty(gpu_comm.Get_size(), dtype=int) + + gpu_comm.Gather(eValOnRank_size, eValOnRank_SIZES, root=0) + if rank == 0: + if sdc.UHF: + full_dVals = np.empty((2, np.sum(eValOnRank_SIZES)), dtype=eValOnRank.dtype) + recvcounts = [2 * size for size in eValOnRank_SIZES] + else: + full_dVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) + full_eVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) #### oldR + + if sdc.UHF: + dValOnRank_flat = dValOnRank.flatten() + gpu_comm.Gatherv( + sendbuf=dValOnRank_flat, # Flattened 1D send buffer + recvbuf=(full_dVals, recvcounts), + root=0) + else: + gpu_comm.Gatherv(dValOnRank, [full_dVals, eValOnRank_SIZES], root=0) + gpu_comm.Gatherv(eValOnRank, [full_eVals, eValOnRank_SIZES], root=0) #### oldR + + eVal_LIST = gpu_comm.gather(eValOnRank_list, root=0) + dVal_LIST = gpu_comm.gather(dValOnRank_list, root=0) + NH_Nh_Hs_LIST = gpu_comm.gather(NH_Nh_Hs_list, root=0) + core_indices_in_sub_expanded_LIST = gpu_comm.gather(core_indices_in_sub_expanded_list, root=0) + Nocc_LIST = gpu_comm.gather(Nocc_list, root=0) + + ####### + ####### + if rank == 0: + # Q_LIST = [] + # for i in range(gpu_comm.Get_size()): + # Q_LIST.append(torch.load('Q/Q_list_{}.pt'.format(i))) + + # Flatten the nested list of lists into a single list of tensors. One tensor per CH. + eVal_LIST = list(itertools.chain(*eVal_LIST)) + dVal_LIST = list(itertools.chain(*dVal_LIST)) + Q_LIST = list(itertools.chain(*Q_LIST)) + NH_Nh_Hs_LIST = list(itertools.chain(*NH_Nh_Hs_LIST)) + core_indices_in_sub_expanded_LIST = list(itertools.chain(*core_indices_in_sub_expanded_LIST)) + Nocc_LIST = list(itertools.chain(*Nocc_LIST)) + else: + Q_LIST = None + if node_rank == 0: print("| t commLists {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + if rank == 0: + tic = time.perf_counter() + ####### + ####### + mu0 = get_mu(mu0, full_dVals, full_eVals, sdc.Tel, sy.numel/2) #### oldR + + #mu0 = get_mu(mu0, np.concatenate(dVal_LIST, axis = -1), torch.cat(eVal_LIST, dim = -1), sdc.Tel, sy.nocc) # chemical potential calculation + print("Time mu0 {:>9.4f} (s)".format(time.perf_counter() - tic)) + + return EELEC, eVal_LIST, Q_LIST, NH_Nh_Hs_LIST, core_indices_in_sub_expanded_LIST, Nocc_LIST, mu0 + + +## Single point calculation +# @brief Construct a connectivity graph based on constructing density matrices of parts of the system. +def get_singlePoint_charges(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, gpu_comm, parts, partsCoreHalo, sy, hindex,gscf, mu0, + molecule_whole, P_contr, graph_for_pairs, graph_maskd): + ''' + Function calculates CH hamiltonians (ham), then eVals and dVals on each rank of gpu_comm. + Then it gathers everything on global rank 0, computes chemical potential mu0. + sdc: + eng: + partsPerGPU: number of CH processed by one rank. + partsPerNode: number of CH processed on one node. + node_id: + node_rank: local rank on a node. E.g., for [0,1,2,3] [4,5,6,7], global rank 4 is local rank 0. + rank: global rank + gpu_comm: global communicator for ranks with GPU. + If on CPU, all ranks are involved. gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) == node_numranks, gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) <= node_numranks, gpu_comm is different form master comm. For example, 8 ranks on two nodes [0,1,2,3] and [4,5,6,7] with 2 GPUs per node. In that case, only ranks [0,1] and [4,5] are involved. They, however, become [0,1] [2,3] within gpu_comm. + parts: list of cores + partsCoreHalo: list of core+halo + sy: + hindex: + mu0: chemical potential + molecule_whole: pyseqm molecule object + P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) + graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size + graph_maskd: diagonal mask for P_contr + ''' + ### Instead of this: + # partIndex1 = rank * partsPerRank + # partIndex2 = (rank + 1) * partsPerRank + ### we do this because there might be fewer GPUs per node than ranks per node. + partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode + partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode + + if sdc.UHF: # open shell + dValOnRank = np.empty((2, 0)) + eValOnRank = np.empty((2, 0)) # this will store flattened eVals for all CH. 1d np array. + else: # closed shell + dValOnRank = np.array([]) # this will store flattened dVals for all CH. 1d np array. For mu0 + eValOnRank = np.array([]) # this will store flattened eVals for all CH. 1d np array. + eValOnRank_list = [] # this will store eVals arranged per CH. List of 1D torch tensors. For mu0 and later for dm + dValOnRank_list = [] # this will store dVals arranged per CH. List of 1D torch tensors. For mu0 and later for dm + Q_list = [] # Eigenvectors for each part + Nocc_list = [] # Number of occupied orbitals for each part. It's not used in thermal HF but lets keep this option. + core_indices_in_sub_expanded_list = [] # Indices of core hamiltonian in core+halo hamiltonian. Might be useful when core and halo atoms are shuffled to stay sorted, like in PySEQM. + NH_Nh_Hs_list = [] # list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham, nocc] + EELEC = 0.0 # this will sum electronic energy of CHs on the current rank + chargesOnRank = None + subSysOnRank = [] + + for partIndex in range(partIndex1, partIndex2): + ticHam = time.perf_counter() + #print("\n Rank, part", rank, partIndex) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + if(gscf == 0): + subSy.charges = np.zeros(len(subSy.types)) + + subSyCore = System(len(parts[partIndex])) + subSyCore.symbols = sy.symbols + subSyCore.coords,subSyCore.types = extract_subsystem(sy.coords,sy.types,sy.symbols,parts[partIndex]) + + if sdc.writeGeom: + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates("subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols) + partCoreFileName = "CoreSubSy"+str(rank)+"_"+str(partIndex)+".pdb" + write_pdb_coordinates(partCoreFileName,subSyCore.coords,subSyCore.types,subSyCore.symbols) + write_xyz_coordinates("CoreSubSy"+str(rank)+"_"+str(partIndex)+".xyz",subSyCore.coords,subSyCore.types,subSyCore.symbols) + + + core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub = \ + get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy, device=P_contr.device) + + # Get CH hamiltonian. If on GPU, temporarily redefine molecule_whole on GPU (its faster than transfering) and send P_contr to GPU. + # The idea is to have P_contr in shared memory on each node, then update in parallel on node 0. + # If initialized on GPU, then we'll need to transfer it back into shared memory CPU to update in parallel. Ideally, this needs to be fixed. + ham_timing = {} + if sdc.scfDevice == 'cuda': + device = 'cuda:{}'.format(node_rank) + tmp_molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + ham, eElec = get_hamiltonian(sdc, eng, subSy.coords, subSy.types, subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P_contr.to(device), graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, verbose=False) + del tmp_molecule_whole + else: + device = 'cpu' + ham, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], molecule_whole, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, verbose=False) + EELEC += eElec + + + #print("TOT {:>8.3f} (s)".format(time.perf_counter() - tic)) + + # Get eVals, dVals + tic = time.perf_counter() + norbs = subSy.nats + occ = int(float(norbs) / 2.0) # Get the total occupied orbitals. Not used. + coreSize = len(parts[partIndex]) + eVals, dVals, Q, NH_Nh_Hs = get_eVals(eng, sdc, sy, ham, subSy.coords, subSy.symbols, subSy.types, sdc.Tel, mu0, + core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub, + coreSize, subSy, subSyCore, parts[partIndex], partsCoreHalo[partIndex], verbose=False) + del ham + + if sdc.UHF: + dValOnRank = np.append(dValOnRank, dVals, axis=1) + eValOnRank = np.append(eValOnRank, eVals.cpu().numpy(), axis=1) + else: + dValOnRank = np.append(dValOnRank, dVals) + eValOnRank = np.append(eValOnRank, eVals.cpu().numpy()) + eValOnRank_list.append(eVals.cpu()) + dValOnRank_list.append(dVals) + Q_list.append(Q.cpu()) + core_indices_in_sub_expanded_list.append(core_indices_in_sub_expanded) + NH_Nh_Hs_list.append(NH_Nh_Hs) + Nocc_list.append(occ) + #print("| t eVals/dVals {:>9.4f} (s)".format(time.perf_counter() - tic)) + ham_timing['eVals/dVals'] = time.perf_counter() - tic + ham_timing['TOT'] = time.perf_counter() - ticHam + #ham_timing_formatted = {key: f"{value:8.3f}" for key, value in ham_timing.items()} + formatted_string = " | ".join(f"{key} {value:8.3f}" for key, value in ham_timing.items()) + print('Rank', rank, 'part', partIndex, ':', formatted_string) + + + ########## + ########## + tic = time.perf_counter() + if rank != 0: + gpu_comm.send(Q_list, dest=0, tag=0) + else: + Q_LIST = [Q_list] + for i in range(1, gpu_comm.Get_size()): + Q_LIST.append(gpu_comm.recv(source=i, tag=0)) + print("Time Q_LIST send/recv {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + # tic = time.perf_counter() + # torch.save(Q_list, 'Q/Q_list_{}.pt'.format(rank)) #### oldR + # print("Time to save Q_list {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + + tic = time.perf_counter() + full_dVals = None + full_eVals = None + eValOnRank_size = np.array(eValOnRank.shape[-1], dtype=int) + eValOnRank_SIZES = None + recvcounts = None + if rank == 0: + eValOnRank_SIZES = np.empty(gpu_comm.Get_size(), dtype=int) + + gpu_comm.Gather(eValOnRank_size, eValOnRank_SIZES, root=0) + if rank == 0: + if sdc.UHF: + full_dVals = np.empty((2, np.sum(eValOnRank_SIZES)), dtype=eValOnRank.dtype) + recvcounts = [2 * size for size in eValOnRank_SIZES] + else: + full_dVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) + full_eVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) #### oldR + + if sdc.UHF: + dValOnRank_flat = dValOnRank.flatten() + gpu_comm.Gatherv( + sendbuf=dValOnRank_flat, # Flattened 1D send buffer + recvbuf=(full_dVals, recvcounts), + root=0) + else: + gpu_comm.Gatherv(dValOnRank, [full_dVals, eValOnRank_SIZES], root=0) + gpu_comm.Gatherv(eValOnRank, [full_eVals, eValOnRank_SIZES], root=0) #### oldR + + eVal_LIST = gpu_comm.gather(eValOnRank_list, root=0) + dVal_LIST = gpu_comm.gather(dValOnRank_list, root=0) + NH_Nh_Hs_LIST = gpu_comm.gather(NH_Nh_Hs_list, root=0) + core_indices_in_sub_expanded_LIST = gpu_comm.gather(core_indices_in_sub_expanded_list, root=0) + Nocc_LIST = gpu_comm.gather(Nocc_list, root=0) + + ####### + ####### + if rank == 0: + # Q_LIST = [] + # for i in range(gpu_comm.Get_size()): + # Q_LIST.append(torch.load('Q/Q_list_{}.pt'.format(i))) + + # Flatten the nested list of lists into a single list of tensors. One tensor per CH. + eVal_LIST = list(itertools.chain(*eVal_LIST)) + dVal_LIST = list(itertools.chain(*dVal_LIST)) + Q_LIST = list(itertools.chain(*Q_LIST)) + NH_Nh_Hs_LIST = list(itertools.chain(*NH_Nh_Hs_LIST)) + core_indices_in_sub_expanded_LIST = list(itertools.chain(*core_indices_in_sub_expanded_LIST)) + Nocc_LIST = list(itertools.chain(*Nocc_LIST)) + else: + Q_LIST = None + if node_rank == 0: print("| t commLists {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + if rank == 0: + tic = time.perf_counter() + ####### + ####### + mu0 = get_mu(mu0, full_dVals, full_eVals, sdc.Tel, sy.numel/2) #### oldR + + #mu0 = get_mu(mu0, np.concatenate(dVal_LIST, axis = -1), torch.cat(eVal_LIST, dim = -1), sdc.Tel, sy.nocc) # chemical potential calculation + print("Time mu0 {:>9.4f} (s)".format(time.perf_counter() - tic)) + + return EELEC, eVal_LIST, Q_LIST, NH_Nh_Hs_LIST, core_indices_in_sub_expanded_LIST, Nocc_LIST, mu0 + +def get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, P, P_contr, graph_for_pairs, graph_maskd): + ''' + Function calculates forces on ALL atoms via backprop through an electronic energy a CH. Updates forces in-place. + Electronic energy is obtained from a "rectangular" hamiltonian. + sdc: + eng: + partsPerGPU: number of CH processed by one rank. + partsPerNode: number of CH processed on one node. + node_id: + node_rank: local rank on a node. E.g., for [0,1,2,3] [4,5,6,7], global rank 4 is local rank 0. + rank: global rank + If on CPU, all ranks are involved. gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) == node_numranks, gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) <= node_numranks, gpu_comm is different form master comm. For example, 8 ranks on two nodes [0,1,2,3] and [4,5,6,7] with 2 GPUs per node. In that case, only ranks [0,1] and [4,5] are involved. They, however, become [0,1] [2,3] within gpu_comm. + parts: list of cores + partsCoreHalo: list of core+halo + sy: + hindex: + forces: array of atomic forces (n_atoms, 3) + molecule_whole: pyseqm molecule object + P: legacy, none + P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) + graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size + graph_maskd: diagonal mask for P_contr + ''' + partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode + partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode + EELEC = 0.0 + for partIndex in range(partIndex1, partIndex2): + #print("Rank, part", rank, partIndex) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + + _, core_indices_in_sub_expanded, _ = \ + get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy) + + tic = time.perf_counter() + ham_timing = {} + tmp_molecule_whole = copy.deepcopy(molecule_whole) + if sdc.doForces: + tmp_molecule_whole.coordinates.requires_grad_(True) + f, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, doForces = True, verbose=False) + del tmp_molecule_whole + + forces += f + EELEC += eElec + #print("EelecCH {:>7.3f} eV |".format(eElec.item()), end=" ") + ham_timing['TOT'] = time.perf_counter() - tic + formatted_string = " | ".join(f"{key} {value:8.3f}" for key, value in ham_timing.items()) + print('Rank', rank, 'part', partIndex, ':', formatted_string, "|| EelecCH {:>7.3f} eV ||".format(eElec.item())) + del eElec, subSy, f + #print("TOT", time.perf_counter() - tic, "(s)") + return EELEC + +def get_singlePointDM(sdc, eng, rank, node_numranks, node_comm, parts, partsCoreHalo, sy, hindex, mu0, P_contr, graph_for_pairs, + eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list): + ''' + Function updates P_contr with core columns of CH dm. This is done in parallel on ALL local ranks of node 0. On CPU. That's slow. + sdc: + eng: + rank: global rank + node_numranks: nomber of ranks on a node (loca ranks) + node_comm: local comminicator on a node + parts: list of cores + partsCoreHalo: list of core+halo + sy: + hindex: orbital index for each atom in the system + mu0: chemical potential + P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) + graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size + eValOnRank_list: eigenvalues of CHs. Here, for all CHs. + Q_list: eigenvectors of CHs. Here, only those used by this rank are present. + NH_Nh_Hs_list: list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham]. Here, for all CHs. + core_indices_in_sub_expanded_list: indices of core columns in CH. E.g., CH[i] contains atoms [0,1,2,3], core atoms are [1,3], 4 AOs per atom. Then, core_indices_in_sub_expanded_list[i] is [4,5,6,7, 12,13,14,15]. + ''' + if rank == 0: print("eElec: {:>10.8f} | \u0394E| {:>10.8f}".format(sdc.EelecNew, abs(sdc.EelecNew - sdc.EelecOld)),) + sdc.EelecOld = sdc.EelecNew + + partsPerRank = int(sdc.nparts / node_numranks) + partIndex1 = rank * partsPerRank + partIndex2 = (rank + 1) * partsPerRank + graphOnRank = None + + maxDifList = [] + sumDifTot = 0 + P_contr_maxDifList = [] + P_contr_sumDifTot = 0 + for partIndex, i in zip(range(partIndex1,partIndex2), range(partsPerRank)): + # this will calculate the DM in subsys and update the whole DM + # rho_ren is a dm contructed with electronic temperature. Its shaped into 4x4 blocks, even for hydrogen atoms, as required by pyseqm + rho_ren, maxDif, sumDif = get_density_matrix_renorm(sdc, eng, sdc.Tel, mu0, P_contr, graph_for_pairs, + eValOnRank_list[partIndex], Q_list[i], NH_Nh_Hs_list[partIndex], core_indices_in_sub_expanded_list[partIndex]) + indices_in_sub = np.linspace(0,len(partsCoreHalo[partIndex])-1, len(partsCoreHalo[partIndex]), dtype = eng.np_int_dt) # indices for CH dm. [0:n_atoms] + core_indices_in_sub = indices_in_sub[np.isin(partsCoreHalo[partIndex], parts[partIndex])] # core column blocks in CH dm (assuming its shaped as [n_atoms, n_atoms, 4, 4]) + P_contr_maxDif = [] + P_contr_sumDif = 0 + if sdc.UHF: # open shell + ### vectorized. Faster for larger cores. + max_len = graph_for_pairs[parts[partIndex][0]][0] + + TMP1 = P_contr[:, :max_len,parts[partIndex]] # get part of P_contr that corresponds to cores of current CH + TMP2 = rho_ren.reshape((1, 2, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ + .transpose(3,4).reshape(2, (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4).transpose(3,4).transpose(1,2)[:,:,core_indices_in_sub] # get core column blocks of CH + P_contr_maxDif.append(torch.max(torch.abs(TMP1 - TMP2)).cpu().numpy()) # max difference in dm elements + P_contr_sumDif += torch.sum(torch.abs(TMP1 - TMP2)).cpu().numpy() # sum of abs differences between new and old dm. + P_contr[:,:max_len,parts[partIndex]] = (1-sdc.alpha)*TMP1 + sdc.alpha * TMP2 # update dm + + rho_ren = pack(rho_ren[0]+rho_ren[1], NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1]) # packing rho_ren from 4x4 blocks into normal form based on number of AOs per atom. + + else: + ### vectorized. Faster for larger cores. + max_len = graph_for_pairs[parts[partIndex][0]][0] + TMP1 = P_contr[:max_len,parts[partIndex]] # get part of P_contr that corresponds to cores of current CH + TMP2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1], 4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ + .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4).transpose(2,3).transpose(0,1)[:,core_indices_in_sub] # get core column blocks of CH + + # print(TMP1, TMP2) + # np.save("TMP1_mergeattempt.npy", TMP1) + # np.save("TMP2_mergeattempt.npy", TMP2) + # exit(1) + P_contr_maxDif.append(torch.max(torch.abs(TMP1 - TMP2)).cpu().numpy()) # max difference in dm elements + P_contr_sumDif += torch.sum(torch.abs(TMP1 - TMP2)).cpu().numpy() # sum of abs differences between new and old dm. + P_contr[:max_len,parts[partIndex]] = (1-sdc.alpha)*TMP1 + sdc.alpha * TMP2 # update dm + + ### Loop. Faster for many small cores (?). + # for i in range(len(parts[partIndex])): + # tmp1 = P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] + # tmp2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ + # .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4)[core_indices_in_sub[i]].transpose(1,2) + + # P_contr_maxDif.append(torch.max(torch.abs(tmp1 - tmp2)).cpu().numpy()) + # P_contr_sumDif += torch.sum(torch.abs(tmp1 - tmp2)).cpu().numpy() + # P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] = (1-sdc.alpha)*tmp1 + sdc.alpha*tmp2 + # del tmp1, tmp2 + + rho_ren = pack(rho_ren, NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1]) # packing rho_ren from 4x4 blocks into normal form based on number of AOs per atom. + + + P_contr_maxDif = max(P_contr_maxDif) + P_contr_maxDifList.append(P_contr_maxDif) + P_contr_sumDifTot += P_contr_sumDif + maxDifList.append(maxDif) + try: + sumDifTot += sumDif + except: + sumDifTot += 0 + graphOnRank = collect_graph_from_rho_PYSEQM(graphOnRank, rho_ren, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex], hindex, verb=False) # get connectivity graph for the dm of current CH + del rho_ren + + print('HERE_DM_1') + print(" MAX |\u0394DM_ij|: {:>10.7f} at SubSy {:>5d}".format(max(P_contr_maxDifList), np.argmax(P_contr_maxDifList))) + print(" \u03A3 |\u0394DM_ij|: {:>10.7f}".format(P_contr_sumDifTot)) + return graphOnRank + +def print_memory_usage(rank, node_rank, message): + process = psutil.Process() + mem_info = process.memory_info() + print(f"{message} | Rank: {rank}, Node Rank: {node_rank}, Memory Usage: {mem_info.rss / (1024 ** 2):.2f} MB") +def tensor_size(tensor): + return tensor.element_size() * tensor.nelement() / (1024 ** 2) +# Collect all tensors in the current environment +def get_tensors(): + for obj in gc.get_objects(): + try: + if torch.is_tensor(obj): + yield obj + except Exception as e: + pass +def print_attribute_sizes(obj): + for attr in dir(obj): + # Skip private or callable attributes + if attr.startswith("_") or callable(getattr(obj, attr)): + continue + attribute = getattr(obj, attr) + size_bytes = attribute.nbytes if isinstance(attribute, np.ndarray) else attribute.element_size() * attribute.nelement() if isinstance(attribute, torch.Tensor) else sys.getsizeof(attribute) + size_mb = size_bytes / (1024 ** 2) # Convert bytes to MB + print(f"{attr}: {size_mb:.2f} MB") + + +def get_adaptiveDM_PYSEQM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): + ''' + The main driver function. It initializes supplementary comms, dm, graphs, performs scf cycle with graph and dm updates, and then computes forces. + sdc: + eng: + comm: master communicator + rank: global rank + numranks: number of global ranks + sy: + hindex: orbital index for each atom in the system + graphNL: initial connectivity graph + ''' + t_INIT = time.perf_counter() # time for scf initialization + tic = time.perf_counter() + sdc.EelecOld = 0.0 + + + eng.use_pyseqm_lt = False # flag for using pyseqm "large tensors", e.g. ij vectors, masks, etc. These are extremely large for large systems. + # If False, pyseqm won't compute them and sedacs will coumpute only necessary subparts. + sdc.use_pyseqm_lt = eng.use_pyseqm_lt + + eng.reconstruct_dm = False # Flag for reconstructing the whole dm. For debug purposes only. + sdc.reconstruct_dm = eng.reconstruct_dm + + ### SETUP COMMS ### + node_comm = comm.Split_type(MPI.COMM_TYPE_SHARED) # local communicator for ranks on a node + node_rank = node_comm.Get_rank() # Local rank on a node + node_numranks = node_comm.Get_size() # Communicator size on a node + + node_name = socket.gethostname() + node_names = comm.allgather(node_name) + + unique_nodes = list(set(node_names)) + num_nodes = len(unique_nodes) # Total number of unique nodes + node_id = int(rank/node_numranks) + + # Get primary ranks on each node. E.g. when running 16 ranks on two nodes, these are ranks 0 and 8. + primary_rank = None + if node_rank == 0: + primary_rank = rank # Global rank of the primary rank on each node + # Gather the primary ranks from each node + primary_ranks = comm.allgather(primary_rank) + primary_ranks = [r for r in primary_ranks if r is not None] # Filter out None values + color = 0 if rank in primary_ranks else MPI.UNDEFINED + primary_comm = comm.Split(color=color, key=rank) # Communicator for primary ranks + + device = 'cpu' + if sdc.scfDevice == 'cuda' and sdc.numGPU == -1: + num_gpus = torch.cuda.device_count() + elif sdc.scfDevice == 'cuda': + num_gpus = sdc.numGPU + else: + num_gpus = node_numranks + + if num_gpus > node_numranks: + num_gpus = node_numranks + + color = 0 if node_rank < num_gpus else MPI.UNDEFINED + gpu_comm = comm.Split(color=color, key=rank) # global communicator for ranks with GPU. Identical to comm if running on CPU. + partsPerGPU = int(sdc.nparts / (num_gpus*num_nodes)) # assume all nodes have same number of GPUs! + partsPerNode = int(sdc.nparts / num_nodes) # How many CH are processed by each node. + + gpu_global_rank = None + if node_rank < num_gpus: + gpu_global_rank = rank # Global rank of the primary rank on each node + + # Gather the primary ranks from each node + gpu_global_ranks = comm.allgather(gpu_global_rank) + gpu_global_ranks = [r for r in gpu_global_ranks if r is not None] # Filter out None values + ### END SETUP COMMS ### + + # Some data type info for numpy and torch. Double precision is necessary for pyseqm. + if torch.get_default_dtype() == torch.float32: + eng.torch_dt = torch.float32 + sdc.torch_dt = eng.torch_dt + + eng.torch_int_dt = torch.int32 + sdc.torch_int_dt = eng.torch_int_dt + + eng.np_dt = np.float32 + sdc.np_dt = eng.np_dt + + eng.np_int_dt = np.int32 + sdc.np_int_dt = eng.np_int_dt + else: + eng.torch_dt = torch.float64 + sdc.torch_dt = eng.torch_dt + + eng.torch_int_dt = torch.int64 + sdc.torch_int_dt = eng.torch_int_dt + + eng.np_dt = np.float64 + sdc.np_dt = eng.np_dt + + eng.np_int_dt = np.int64 + sdc.np_int_dt = eng.np_int_dt + + fullGraph = graphNL.copy() + + # get pyseqm molecule object + tic = time.perf_counter() + with torch.no_grad(): + molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + #print_attribute_sizes(molSysData.molecule_whole) + if rank == 0: print("Time to init molSysData {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + ### Initialization for SCF ### + # Things that are calculated on each primary rank of each node. + if node_rank == 0: + tic = time.perf_counter() + if rank == 0: print('Computing cores.') + parts = graph_partition(sdc, eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, sdc.verb) # cores + if rank == 0: print("Time to compute cores {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + if rank == 0: print('Loading the molecule and parameters.') + + partsCoreHalo = [] + if rank == 0: + print('\n|||| Adaptive iter:', 0, '||||') + print("Core and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc = get_coreHaloIndicesPYSEQM(eng, parts[i], fullGraph, sdc.numJumps, sdc, sy) # halos + partsCoreHalo.append(coreHalo) + if sdc.verb: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print(' N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) + print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) # Graph where new_graph_for_pairs[i] is a CH in which atom i is a core atom. new_graph_for_pairs[i][0] is the size of CH. + graph_for_pairs = new_graph_for_pairs # Here, same as new_graph_for_pairs + graph_maskd = get_maskd(sdc, sy, graph_for_pairs) # mask for diagonal block in contracted dm + print("Time to init mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + if sdc.UHF: + P_contr = torch.zeros(2, sy.nats*sdc.maxDeg,4,4, dtype=eng.torch_dt, device=device) # contracted density matrix + P_contr[:,graph_maskd] = 0.5*get_diag_guess_pyseqm(molecule_whole, sy) # diagonal initial guess + #P_contr = P_contr * torch.tensor([sy.nocc_alpha/(sy.numel/2), sy.nocc_beta/(sy.numel/2)], device = device).view(2, 1, 1, 1) + P_contr = P_contr.reshape(2, sy.nats, sdc.maxDeg, 4,4).transpose(1,2) # (2, n_atoms, max_deg, 4, 4). A rectangle of 4x4 square blocks. + P_contr_size = P_contr.size() + P_contr_nbytes = P_contr.numel() * P_contr.element_size() + else: + P_contr = torch.zeros(sy.nats*sdc.maxDeg,4,4, dtype=eng.torch_dt, device=device) # contracted density matrix + P_contr[graph_maskd] = get_diag_guess_pyseqm(molecule_whole, sy) # diagonal initial guess + P_contr = P_contr.reshape(sy.nats, sdc.maxDeg, 4,4).transpose(0,1) # (n_atoms, max_deg, 4, 4). A rectangle of 4x4 square blocks. + P_contr_size = P_contr.size() + P_contr_nbytes = P_contr.numel() * P_contr.element_size() + print("Time to init DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + # graphNL = collect_graph_from_rho(None, sdc.overlap_whole, sdc.gthreshinit, sy.nats, sdc.maxDeg, [i for i in range(0,sy.nats)],hindex) + del graphNL + else: + parts = None + sdc.nparts = None + + fullGraph = None + coreHalo = None + partsCoreHalo = None + + new_graph_for_pairs = None + graph_for_pairs = None + graph_maskd = None + + P_contr = None + P_contr_size = None + P_contr_nbytes = 0 + + tic = time.perf_counter() + parts = node_comm.bcast(parts, root=0) + sdc.nparts = node_comm.bcast(sdc.nparts, root=0) + if rank == 0: print("BCST1 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + # P_contr is in shared memory between ranks on one node but each node has its own copy. + P_contr_size = node_comm.bcast(P_contr_size, root=0) + P_contr_win = MPI.Win.Allocate_shared(P_contr_nbytes, torch.tensor(0, dtype=eng.torch_dt).element_size(), comm=node_comm) # 8 is the size of torch.float64 + P_contr_buf, P_contr_itemsize = P_contr_win.Shared_query(0) + P_contr_ary = np.ndarray(buffer=P_contr_buf, dtype=eng.np_dt, shape=(P_contr_size)) + if node_rank == 0: + P_contr_ary[:] = P_contr.cpu().numpy() + comm.Barrier() + del P_contr + P_contr = torch.from_numpy(P_contr_ary).to(device) + if rank == 0: print("BCST2 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + fullGraph = node_comm.bcast(fullGraph, root=0) + coreHalo = node_comm.bcast(coreHalo, root=0) + partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) + graph_maskd = node_comm.bcast(graph_maskd, root=0) + graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) + if rank == 0: print("BCST3 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + print("Time to init bcast and share DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + if rank == 0: + print("Time INIT {:>7.2f} (s)".format(time.perf_counter() - t_INIT)) + ### END Initialization for SCF ### + + ### SCF cycle ### + mu0 = -5.5 # initial guess for chemical potential + if sdc.UHF: + mu0 = np.array([mu0+0.1, mu0-0.1]) + mu0 = np.array([-1.3, -5.5]) + + for gsc in range(sdc.numAdaptIter): + if rank == 0: print('\n\n|||| Adaptive iter:', gsc, '||||') + #print_memory_usage(rank, node_rank, "Memory usage") + TIC_iter = time.perf_counter() + tic = time.perf_counter() + if node_rank == 0: # broadcasts dm from root rank (assuming its rank 0 on node 0) to primary ranks on other nodes. E.g. for ranks arranged as {node0:[0,1,2,3] node1:[4,5,6,7]}, dm is broadcates from 0 to 4. One of the major bottlenecks. + primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) + if rank == 0: print("Time to bcast DM_cpu_np {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + tic = time.perf_counter() + if gsc > 0: # lots of things have been done during initialization, so at iteration 0 we can proceed right to get_singlePoint + if node_rank == 0: # halos, dm contraction, and graphs are performed on primary ranks of each node and then broadcasted locally to other ranks + ### HALOS CALC ### + tic = time.perf_counter() + partsCoreHalo = [] + if rank == 0:print("Core and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc, nch = get_coreHaloIndices(parts[i], fullGraph, sdc.numJumps, eng=eng) + partsCoreHalo.append(coreHalo) + if sdc.verb and rank == 0: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print(' N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) + if rank == 0: print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic)) + ### END HALOS CALC ### + + tic = time.perf_counter() + new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) # Graph where new_graph_for_pairs[i] is a CH in which atom i is a core atom. new_graph_for_pairs[i][0] is the size of CH. + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + # torch.save(P_contr, 'P.pt') + # exit() + update_dm_contraction(sdc, sy, P_contr, graph_for_pairs, new_graph_for_pairs, device) # update dm contraction based on new_graph_for_pairs + graph_for_pairs = new_graph_for_pairs # reset graph_for_pairs + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + graph_maskd = get_maskd(sdc, sy, graph_for_pairs) # get diagonal mask of contracted dm + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + else: + coreHalo = None + partsCoreHalo = None + graph_for_pairs = None + graph_maskd = None + + tic = time.perf_counter() + coreHalo = node_comm.bcast(coreHalo, root=0) + partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) + graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) + graph_maskd = node_comm.bcast(graph_maskd, root=0) + if node_rank == 0: print("Time to bcast DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + # Single point part. For efficiency, the PySEQM dm needs to be reshaped in 4x4 blocks. + global_Eelec = np.zeros(1, dtype=np.float64) # this will sum electronic energy from CHs on ranks, giving total Eelec + if eng.interface == "PySEQM": + with torch.no_grad(): + if node_rank < num_gpus: # This condition is for GPU jobs only because sometimes there are fewer GPUs per node than ranks per nodes. + # We want more ranks per node because dm update always happens on CPU, on node 0, in parallel. + eElec, eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ + get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, gpu_comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, + P_contr, graph_for_pairs, graph_maskd) + gpu_comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) + + else: + eElec, eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = 0, None, None, None, None, None, None + comm.Barrier() + else: + raise ValueError(f"ERROR!!!: Interface type not recognized: '{eng.interface}'. " + + f"Use any of the following: Module,File,Socket,MDI") + if gsc==0 and sdc.UHF: + print('sym break') + for I in range(len(Q_list)): + orb_idx = NH_Nh_Hs_list[I][3][0] + Q_list[I][0,:,orb_idx] = 0.9*Q_list[I][0,:,orb_idx-1] + 0.1*Q_list[I][0,:,orb_idx] + sdc.EelecNew = global_Eelec[0] + #torch.cuda.synchronize() + if rank == 0: print("Time to get_singlePoint {:>7.2f} (s)".format(time.perf_counter() - tic)) + + if sdc.restartLoad: # If True, these files will be read and used instead as default initial guess. + sdc.restartLoad = False + if node_rank == 0: + P_contr[:] = torch.load('P_contr.pt') + with open('parts.pkl','rb') as f: + parts = pickle.load(f) + with open('partsCoreHalo.pkl','rb') as f: + partsCoreHalo = pickle.load(f) + with open('fullGraph.pkl','rb') as f: + fullGraph = pickle.load(f) + mu0 = np.load('mu0.npy') + graph_for_pairs = np.load('graph_for_pairs.npy') + graph_maskd = np.load('graph_maskd.npy') + if rank == 0: + eValOnRank_list = torch.load('eValOnRank_list.pt') + Q_list = torch.load('Q_list.pt') + NH_Nh_Hs_list = torch.load('NH_Nh_Hs_list.pt') + core_indices_in_sub_expanded_list = torch.load('core_indices_in_sub_expanded_list.pt') + Nocc_list = torch.load('Nocc_list.pt') + + if rank == 0 and sdc.restartSave: # Save for future restart. Slows things down significantly. + torch.save(eValOnRank_list, 'eValOnRank_list.pt') + torch.save(Q_list, 'Q_list.pt') + torch.save(NH_Nh_Hs_list, 'NH_Nh_Hs_list.pt') + torch.save(core_indices_in_sub_expanded_list, 'core_indices_in_sub_expanded_list.pt') + torch.save(Nocc_list, 'Nocc_list.pt') + torch.save(P_contr, 'P_contr.pt') + with open('parts.pkl', 'wb') as f: + pickle.dump(parts, f) + with open('partsCoreHalo.pkl', 'wb') as f: + pickle.dump(partsCoreHalo, f) + with open('fullGraph.pkl', 'wb') as f: + pickle.dump(fullGraph, f) + np.save('mu0', mu0) + np.save('graph_for_pairs', graph_for_pairs) + np.save('graph_maskd', graph_maskd) + + if rank == 0: # this defines what part of density matrix will be updated by each rank on node 0. + tic = time.perf_counter() + partsPerRank = int(sdc.nparts / node_numranks) + partIndex1 = 0 * partsPerRank + partIndex2 = (0 + 1) * partsPerRank + Q_list_on_rank = Q_list[partIndex1:partIndex2] # Root rank processes its own part + for r in range(1, node_numranks): + partIndex1 = r * partsPerRank + partIndex2 = (r + 1) * partsPerRank + # Send only the necessary slice to each rank + node_comm.send(Q_list[partIndex1:partIndex2], dest=r, tag=0) + print("Time send Q_list slice {:>7.2f} (s)".format(time.perf_counter() - tic)) + + if rank < node_numranks and rank != 0: + Q_list_on_rank = node_comm.recv(source=0, tag=0) + + if rank < node_numranks: + tic = time.perf_counter() + ### BCAST DATA across ranks on node 0 ### + eValOnRank_list = node_comm.bcast(eValOnRank_list, root=0) + NH_Nh_Hs_list = node_comm.bcast(NH_Nh_Hs_list, root=0) + core_indices_in_sub_expanded_list = node_comm.bcast(core_indices_in_sub_expanded_list, root=0) + Nocc_list = node_comm.bcast(Nocc_list, root=0) + mu0 = node_comm.bcast(mu0, root=0) + node_comm.Barrier() + ### END BCAST DATA ### + + with torch.no_grad(): # dm update and the graph from dm + fullGraphRho = get_singlePointDM(sdc, eng, rank, node_numranks, node_comm, parts, partsCoreHalo, sy, hindex, mu0, P_contr, graph_for_pairs, + eValOnRank_list, Q_list_on_rank, NH_Nh_Hs_list, core_indices_in_sub_expanded_list) + if rank == 0: print("Time to updt DM {:>7.2f} (s)".format(time.perf_counter() - tic)) + node_comm.Barrier() + + tic = time.perf_counter() + fullGraphRho_LIST = node_comm.gather(fullGraphRho, root=0) # get dm-derived graphs from each rank + if rank == 0: + fullGraphRho_LIST.append(fullGraph) # adds the graph we got on the previous iteration. Note, when doing SCF, the graph keeps growing, no nodes from previous iterations are removed. + fullGraph = add_mult_graphs(fullGraphRho_LIST) # adds together the list of graphs + print("Time to add graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + del fullGraphRho + + if rank == 0: + tic = time.perf_counter() + if sdc.UHF: + trace = torch.sum(P_contr.transpose(1,2).reshape(2, molecule_whole.molsize*(len(graph_for_pairs[0])-1), 4,4)[:, graph_maskd].diagonal(dim1=-2, dim2=-1), dim=(1,2)) + print("DM TRACE: {:>10.8f}, {:>10.8f}".format(trace[0], trace[1])) + else: + trace = torch.sum(P_contr.transpose(0,1).reshape(molecule_whole.molsize*(len(graph_for_pairs[0])-1), 4,4)[graph_maskd].diagonal(dim1=-2, dim2=-1)) + print("DM TRACE: {:>10.7f}".format(trace)) + print("Time to get trace {:>7.2f} (s)".format(time.perf_counter() - tic)) + else: + fullGraph = None + + tic = time.perf_counter() + fullGraph = comm.bcast(fullGraph, root=0) # bcast the new graph across ALL ranks + if rank == 0: print("Time to bcast fullGraph {:>7.2f} (s)".format(time.perf_counter() - tic)) + del eValOnRank_list, Q_list, NH_Nh_Hs_list, Nocc_list + torch.cuda.empty_cache() + + # Function to calculate tensor size in megabytes (MB) + # if rank == 0: + # # Sort tensors by size and print them + # tensors = list(get_tensors()) + # tensors.sort(key=lambda x: tensor_size(x), reverse=True) + # print("Top memory-consuming tensors:") + # for tensor in tensors: + # if tensor_size(tensor) > 0.1: + # print(f"Tensor size: {tensor_size(tensor):.2f} MB | Shape: {tensor.shape} | Dtype: {tensor.dtype}") + if rank == 0: print("t Iter {:>8.2f} (s)".format(time.perf_counter() - TIC_iter)) + ### END SCF cycle ### + + ### FORCES CALC ### + tic_F_INIT = time.perf_counter() + if node_rank < num_gpus: + if node_rank == 0: # broadcasts dm from root rank (assuming its rank 0 on node 0) to primary ranks on other nodes. E.g. for ranks arranged as {node0:[0,1,2,3] node1:[4,5,6,7]}, dm is broadcates from 0 to 4. One of the major bottlenecks. + primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) + forces = np.zeros((sy.coords.shape)) + partsCoreHalo = [] + if rank == 0: print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc, nch = get_coreHaloIndices(parts[i], fullGraph, sdc.numJumps, eng=eng) + partsCoreHalo.append(coreHalo) + if sdc.verb: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) + + tic = time.perf_counter() + new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + update_dm_contraction(sdc, sy, P_contr, graph_for_pairs, new_graph_for_pairs, device) + graph_for_pairs = new_graph_for_pairs + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + graph_maskd = get_maskd(sdc, sy, graph_for_pairs) + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + else: + forces = None + partsCoreHalo = None + new_graph_for_pairs = None + graph_for_pairs = None + graph_maskd = None + + if sdc.scfDevice == 'cuda': + device = 'cuda:{}'.format(node_rank) + else: + device = 'cpu' + + molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + forces = gpu_comm.bcast(forces, root=0) + partsCoreHalo = gpu_comm.bcast(partsCoreHalo, root=0) + gpu_comm.Barrier() + graph_for_pairs = gpu_comm.bcast(graph_for_pairs, root=0) + new_graph_for_pairs = gpu_comm.bcast(new_graph_for_pairs, root=0) + graph_maskd = gpu_comm.bcast(graph_maskd, root=0) + if rank == 0: + forces[:] = .0 + gpu_comm.Barrier() + if rank == 0: print("Time init forces {:>8.2f} (s)".format(time.perf_counter() - tic_F_INIT)) + + tic = time.perf_counter() + if eng.interface == "PySEQM": + if sdc.doForces: + eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, + None, P_contr.to(device), graph_for_pairs, graph_maskd) + else: + with torch.no_grad(): + eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, + None, P_contr.to(device), graph_for_pairs, graph_maskd) + global_Eelec = np.zeros(1, dtype=np.float64) + gpu_comm.Barrier() + gpu_comm.Allreduce(MPI.IN_PLACE, forces, op=MPI.SUM) + gpu_comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) #primary_comm + if rank == 0: + print("Time to get electron forces {:>8.2f} (s)".format(time.perf_counter() - tic)) + print("eElec: {:>10.12f}".format(global_Eelec[0]),) + + # Nuclear energy and forces. For now, done on one cpu/gpu, for the whole system at once (pyseqm style). Hence, do_large_tensors = True. Needs to be fixed. + if rank == 0: + molSysData = pyseqmObjects(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = True, device=device) #object with whatever initial parameters and tensors + tic = time.perf_counter() + eNucAB = get_eNuc(eng, molSysData) + eTot, eNuc = get_eTot(eng, molSysData, eNucAB, 0) + print("Enuc: {:>10.12f}".format(eNuc),) + L = eNuc.sum() + L.backward() + forceNuc = -molSysData.molecule_whole.coordinates.grad.detach() + molSysData.molecule_whole.coordinates.grad.zero_() + print("Time to get nuclear forces {:>8.2f} (s)".format(time.perf_counter() - tic)) + np.save('forces', (forces+forceNuc.cpu().numpy()[0]), ) + ### END FORCES CALC ### + + +def get_adaptiveDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): + + if eng.interface=="PySEQM": + get_adaptiveDM_PYSEQM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL) + return + + fullGraph = graphNL + + #Iitial guess for the excess ocupation vector. This is the negative of + #the charge! + charges = np.zeros(sy.nats) + chargesOld = np.zeros(sy.nats) + chargesIn = None + chargesOld = None + chargesOut = None + for gscf in range(sdc.numAdaptIter): + msg = "Graph-adaptive iteration" + str(gscf) + status_at("get_adaptiveSCFDM",msg) + # Partition the graph + parts = graph_partition(fullGraph, sdc.partitionType, sdc.nparts, False) + njumps = 1 + partsCoreHalo = [] + numCores = [] + print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) + partsCoreHalo.append(coreHalo) + numCores.append(nc) + print("coreHalo for part", i, "=", coreHalo) + + + fullGraphRho,charges,subSysOnRank = get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex,gscf) + + print("Collected charges",charges) + + fullGraph = add_graphs(fullGraphRho, graphNL) + for i in range(sy.nats): + print("Charges:",i,sy.symbols[sy.types[i]],charges[i]) + print("SCF ERR =",scfError) + print("TotalCharge",sum(charges)) + + if(scfError < sdc.scfTol): + status_at("get_adaptiveSCFDM","SCF converged with SCF error = "+str(scfError)) + break + + if(gscf == sdc.numAdaptIter - 1): + warning_at("get_adaptiveSCFDM","SCF did not converged ... ") + + AtToPrint = 0 + + subSy = System(fullGraphRho[AtToPrint, 0]) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] + ) + + if rank == 0: + write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) + + return fullGraph,charges,parts,subSysOnRank diff --git a/src/sedacs/driver/graph_adaptive_MASTER.py b/src/sedacs/driver/graph_adaptive_MASTER.py new file mode 100644 index 00000000..9c9f06bf --- /dev/null +++ b/src/sedacs/driver/graph_adaptive_MASTER.py @@ -0,0 +1,876 @@ +"""Graph adaptive solver""" +import warnings +warnings.simplefilter("ignore", FutureWarning) +import os +os.environ["PYTHONWARNINGS"] = "ignore:Unverified HTTPS request" +import time +import torch +print('num_threads',torch.get_num_threads()) +from sedacs.density_matrix import get_density_matrix, get_initDM, get_dmErrs, get_dmTrace +from sedacs.density_matrix_renorm import get_density_matrix_renorm +from sedacs.energy import get_eNuc, get_eTot +from sedacs.molSysData import get_molSysData +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.graph_partition import get_coreHaloIndices, graph_partition +from sedacs.hamiltonian import get_hamiltonian +from sedacs.mpi import collect_and_sum_matrices +from sedacs.system import System, extract_subsystem +from sedacs.evals import get_eVals +from sedacs.chemical_potential import get_mu +from sedacs.graph import get_initial_graph, update_dm_contraction, get_ch_graph, get_maskd, collect_graph_from_rho, add_graphs, print_graph, add_mult_graphs +from sedacs.interface_pyseqm import get_coreHalo_ham_inds, get_diag_guess_pyseqm, pyseqmObjects, get_molecule_pyseqm +import itertools +import sys +import psutil +import pickle +import socket +import copy +from seqm.seqm_functions.pack import pack +import gc +import numpy as np +try: + from mpi4py import MPI + is_mpi_available = True +except ModuleNotFoundError: + is_mpi_available = False +__all__ = ["get_singlePoint", "get_adaptiveDM"] + +## Single point calculation +# @brief Construct a connectivity graph based on constructing density matrices of parts of the system. +def get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, gpu_comm, parts, partsCoreHalo, sy, hindex, mu0, + molecule_whole, P_contr, graph_for_pairs, graph_maskd): + ''' + Function calculates CH hamiltonians (ham), then eVals and dVals on each rank of gpu_comm. + Then it gathers everything on global rank 0, computes chemical potential mu0. + sdc: + eng: + partsPerGPU: number of CH processed by one rank. + partsPerNode: number of CH processed on one node. + node_id: + node_rank: local rank on a node. E.g., for [0,1,2,3] [4,5,6,7], global rank 4 is local rank 0. + rank: global rank + gpu_comm: global communicator for ranks with GPU. + If on CPU, all ranks are involved. gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) == node_numranks, gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) <= node_numranks, gpu_comm is different form master comm. For example, 8 ranks on two nodes [0,1,2,3] and [4,5,6,7] with 2 GPUs per node. In that case, only ranks [0,1] and [4,5] are involved. They, however, become [0,1] [2,3] within gpu_comm. + parts: list of cores + partsCoreHalo: list of core+halo + sy: + hindex: + mu0: chemical potential + molecule_whole: pyseqm molecule object + P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) + graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size + graph_maskd: diagonal mask for P_contr + ''' + ### Instead of this: + # partIndex1 = rank * partsPerRank + # partIndex2 = (rank + 1) * partsPerRank + ### we do this because there might be fewer GPUs per node than ranks per node. + partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode + partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode + + if sdc.UHF: # open shell + dValOnRank = np.empty((2, 0)) + eValOnRank = np.empty((2, 0)) # this will store flattened eVals for all CH. 1d np array. + else: # closed shell + dValOnRank = np.array([]) # this will store flattened dVals for all CH. 1d np array. For mu0 + eValOnRank = np.array([]) # this will store flattened eVals for all CH. 1d np array. + eValOnRank_list = [] # this will store eVals arranged per CH. List of 1D torch tensors. For mu0 and later for dm + dValOnRank_list = [] # this will store dVals arranged per CH. List of 1D torch tensors. For mu0 and later for dm + Q_list = [] # Eigenvectors for each part + Nocc_list = [] # Number of occupied orbitals for each part. It's not used in thermal HF but lets keep this option. + core_indices_in_sub_expanded_list = [] # Indices of core hamiltonian in core+halo hamiltonian. Might be useful when core and halo atoms are shuffled to stay sorted, like in PySEQM. + NH_Nh_Hs_list = [] # list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham, nocc] + EELEC = 0.0 # this will sum electronic energy of CHs on the current rank + for partIndex in range(partIndex1, partIndex2): + ticHam = time.perf_counter() + #print("\n Rank, part", rank, partIndex) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + + subSyCore = System(len(parts[partIndex])) + subSyCore.symbols = sy.symbols + subSyCore.coords,subSyCore.types = extract_subsystem(sy.coords,sy.types,sy.symbols,parts[partIndex]) + + if sdc.writeGeom: + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates("subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols) + partCoreFileName = "CoreSubSy"+str(rank)+"_"+str(partIndex)+".pdb" + write_pdb_coordinates(partCoreFileName,subSyCore.coords,subSyCore.types,subSyCore.symbols) + write_xyz_coordinates("CoreSubSy"+str(rank)+"_"+str(partIndex)+".xyz",subSyCore.coords,subSyCore.types,subSyCore.symbols) + + + core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub = \ + get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy, device=P_contr.device) + + # Get CH hamiltonian. If on GPU, temporarily redefine molecule_whole on GPU (its faster than transfering) and send P_contr to GPU. + # The idea is to have P_contr in shared memory on each node, then update in parallel on node 0. + # If initialized on GPU, then we'll need to transfer it back into shared memory CPU to update in parallel. Ideally, this needs to be fixed. + ham_timing = {} + if sdc.scfDevice == 'cuda': + device = 'cuda:{}'.format(node_rank) + tmp_molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + ham, eElec = get_hamiltonian(sdc, eng, subSy.coords, subSy.types, subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P_contr.to(device), graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, verbose=False) + del tmp_molecule_whole + else: + device = 'cpu' + ham, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], molecule_whole, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, verbose=False) + EELEC += eElec + + + #print("TOT {:>8.3f} (s)".format(time.perf_counter() - tic)) + + # Get eVals, dVals + tic = time.perf_counter() + norbs = subSy.nats + occ = int(float(norbs) / 2.0) # Get the total occupied orbitals. Not used. + coreSize = len(parts[partIndex]) + eVals, dVals, Q, NH_Nh_Hs = get_eVals(eng, sdc, sy, ham, subSy.coords, subSy.symbols, subSy.types, sdc.Tel, mu0, + core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub, + coreSize, subSy, subSyCore, parts[partIndex], partsCoreHalo[partIndex], verbose=False) + del ham + + if sdc.UHF: + dValOnRank = np.append(dValOnRank, dVals, axis=1) + eValOnRank = np.append(eValOnRank, eVals.cpu().numpy(), axis=1) + else: + dValOnRank = np.append(dValOnRank, dVals) + eValOnRank = np.append(eValOnRank, eVals.cpu().numpy()) + eValOnRank_list.append(eVals.cpu()) + dValOnRank_list.append(dVals) + Q_list.append(Q.cpu()) + core_indices_in_sub_expanded_list.append(core_indices_in_sub_expanded) + NH_Nh_Hs_list.append(NH_Nh_Hs) + Nocc_list.append(occ) + #print("| t eVals/dVals {:>9.4f} (s)".format(time.perf_counter() - tic)) + ham_timing['eVals/dVals'] = time.perf_counter() - tic + ham_timing['TOT'] = time.perf_counter() - ticHam + #ham_timing_formatted = {key: f"{value:8.3f}" for key, value in ham_timing.items()} + formatted_string = " | ".join(f"{key} {value:8.3f}" for key, value in ham_timing.items()) + print('Rank', rank, 'part', partIndex, ':', formatted_string) + + + ########## + ########## + # tic = time.perf_counter() + # if rank != 0: + # gpu_comm.send(Q_list, dest=0, tag=0) + # else: + # Q_LIST = [Q_list] + # for i in range(1, gpu_comm.Get_size()): + # Q_LIST.append(gpu_comm.recv(source=i, tag=0)) + # print("Time Q_LIST send/recv {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + torch.save(Q_list, 'Q/Q_list_{}.pt'.format(rank)) #### oldR + print("Time to save Q_list {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + + tic = time.perf_counter() + full_dVals = None + full_eVals = None + eValOnRank_size = np.array(eValOnRank.shape[-1], dtype=int) + eValOnRank_SIZES = None + recvcounts = None + if rank == 0: + eValOnRank_SIZES = np.empty(gpu_comm.Get_size(), dtype=int) + + gpu_comm.Gather(eValOnRank_size, eValOnRank_SIZES, root=0) + if rank == 0: + if sdc.UHF: + full_dVals = np.empty((2, np.sum(eValOnRank_SIZES)), dtype=eValOnRank.dtype) + recvcounts = [2 * size for size in eValOnRank_SIZES] + else: + full_dVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) + full_eVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) #### oldR + + if sdc.UHF: + dValOnRank_flat = dValOnRank.flatten() + gpu_comm.Gatherv( + sendbuf=dValOnRank_flat, # Flattened 1D send buffer + recvbuf=(full_dVals, recvcounts), + root=0) + else: + gpu_comm.Gatherv(dValOnRank, [full_dVals, eValOnRank_SIZES], root=0) + gpu_comm.Gatherv(eValOnRank, [full_eVals, eValOnRank_SIZES], root=0) #### oldR + + eVal_LIST = gpu_comm.gather(eValOnRank_list, root=0) + dVal_LIST = gpu_comm.gather(dValOnRank_list, root=0) + NH_Nh_Hs_LIST = gpu_comm.gather(NH_Nh_Hs_list, root=0) + core_indices_in_sub_expanded_LIST = gpu_comm.gather(core_indices_in_sub_expanded_list, root=0) + Nocc_LIST = gpu_comm.gather(Nocc_list, root=0) + + ####### + ####### + if rank == 0: + Q_LIST = [] + for i in range(gpu_comm.Get_size()): + Q_LIST.append(torch.load('Q/Q_list_{}.pt'.format(i))) + + # Flatten the nested list of lists into a single list of tensors. One tensor per CH. + eVal_LIST = list(itertools.chain(*eVal_LIST)) + dVal_LIST = list(itertools.chain(*dVal_LIST)) + Q_LIST = list(itertools.chain(*Q_LIST)) + NH_Nh_Hs_LIST = list(itertools.chain(*NH_Nh_Hs_LIST)) + core_indices_in_sub_expanded_LIST = list(itertools.chain(*core_indices_in_sub_expanded_LIST)) + Nocc_LIST = list(itertools.chain(*Nocc_LIST)) + else: + Q_LIST = None + if node_rank == 0: print("| t commLists {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + + if rank == 0: + tic = time.perf_counter() + ####### + ####### + mu0 = get_mu(mu0, full_dVals, full_eVals, sdc.Tel, sy.numel/2) #### oldR + + #mu0 = get_mu(mu0, np.concatenate(dVal_LIST, axis = -1), torch.cat(eVal_LIST, dim = -1), sdc.Tel, sy.nocc) # chemical potential calculation + print("Time mu0 {:>9.4f} (s)".format(time.perf_counter() - tic)) + + return EELEC, eVal_LIST, Q_LIST, NH_Nh_Hs_LIST, core_indices_in_sub_expanded_LIST, Nocc_LIST, mu0 + +def get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, P, P_contr, graph_for_pairs, graph_maskd): + ''' + Function calculates forces on ALL atoms via backprop through an electronic energy a CH. Updates forces in-place. + Electronic energy is obtained from a "rectangular" hamiltonian. + sdc: + eng: + partsPerGPU: number of CH processed by one rank. + partsPerNode: number of CH processed on one node. + node_id: + node_rank: local rank on a node. E.g., for [0,1,2,3] [4,5,6,7], global rank 4 is local rank 0. + rank: global rank + If on CPU, all ranks are involved. gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) == node_numranks, gpu_comm is identical to master comm. + If on GPU and num_gpus (per node) <= node_numranks, gpu_comm is different form master comm. For example, 8 ranks on two nodes [0,1,2,3] and [4,5,6,7] with 2 GPUs per node. In that case, only ranks [0,1] and [4,5] are involved. They, however, become [0,1] [2,3] within gpu_comm. + parts: list of cores + partsCoreHalo: list of core+halo + sy: + hindex: + forces: array of atomic forces (n_atoms, 3) + molecule_whole: pyseqm molecule object + P: legacy, none + P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) + graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size + graph_maskd: diagonal mask for P_contr + ''' + partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode + partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode + EELEC = 0.0 + for partIndex in range(partIndex1, partIndex2): + #print("Rank, part", rank, partIndex) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + + _, core_indices_in_sub_expanded, _ = \ + get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy) + + tic = time.perf_counter() + ham_timing = {} + tmp_molecule_whole = copy.deepcopy(molecule_whole) + if sdc.doForces: + tmp_molecule_whole.coordinates.requires_grad_(True) + f, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, doForces = True, verbose=False) + del tmp_molecule_whole + + forces += f + EELEC += eElec + #print("EelecCH {:>7.3f} eV |".format(eElec.item()), end=" ") + ham_timing['TOT'] = time.perf_counter() - tic + formatted_string = " | ".join(f"{key} {value:8.3f}" for key, value in ham_timing.items()) + print('Rank', rank, 'part', partIndex, ':', formatted_string, "|| EelecCH {:>7.3f} eV ||".format(eElec.item())) + del eElec, subSy, f + #print("TOT", time.perf_counter() - tic, "(s)") + return EELEC + +def get_singlePointDM(sdc, eng, rank, node_numranks, node_comm, parts, partsCoreHalo, sy, hindex, mu0, P_contr, graph_for_pairs, + eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list): + ''' + Function updates P_contr with core columns of CH dm. This is done in parallel on ALL local ranks of node 0. On CPU. That's slow. + sdc: + eng: + rank: global rank + node_numranks: nomber of ranks on a node (loca ranks) + node_comm: local comminicator on a node + parts: list of cores + partsCoreHalo: list of core+halo + sy: + hindex: orbital index for each atom in the system + mu0: chemical potential + P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) + graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size + eValOnRank_list: eigenvalues of CHs. Here, for all CHs. + Q_list: eigenvectors of CHs. Here, only those used by this rank are present. + NH_Nh_Hs_list: list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham]. Here, for all CHs. + core_indices_in_sub_expanded_list: indices of core columns in CH. E.g., CH[i] contains atoms [0,1,2,3], core atoms are [1,3], 4 AOs per atom. Then, core_indices_in_sub_expanded_list[i] is [4,5,6,7, 12,13,14,15]. + ''' + if rank == 0: print("eElec: {:>10.8f} | \u0394E| {:>10.8f}".format(sdc.EelecNew, abs(sdc.EelecNew - sdc.EelecOld)),) + sdc.EelecOld = sdc.EelecNew + + partsPerRank = int(sdc.nparts / node_numranks) + partIndex1 = rank * partsPerRank + partIndex2 = (rank + 1) * partsPerRank + graphOnRank = None + + maxDifList = [] + sumDifTot = 0 + P_contr_maxDifList = [] + P_contr_sumDifTot = 0 + for partIndex, i in zip(range(partIndex1,partIndex2), range(partsPerRank)): + # this will calculate the DM in subsys and update the whole DM + # rho_ren is a dm contructed with electronic temperature. Its shaped into 4x4 blocks, even for hydrogen atoms, as required by pyseqm + rho_ren, maxDif, sumDif = get_density_matrix_renorm(sdc, eng, sdc.Tel, mu0, P_contr, graph_for_pairs, + eValOnRank_list[partIndex], Q_list[i], NH_Nh_Hs_list[partIndex], core_indices_in_sub_expanded_list[partIndex]) + indices_in_sub = np.linspace(0,len(partsCoreHalo[partIndex])-1, len(partsCoreHalo[partIndex]), dtype = eng.np_int_dt) # indices for CH dm. [0:n_atoms] + core_indices_in_sub = indices_in_sub[np.isin(partsCoreHalo[partIndex], parts[partIndex])] # core column blocks in CH dm (assuming its shaped as [n_atoms, n_atoms, 4, 4]) + P_contr_maxDif = [] + P_contr_sumDif = 0 + if sdc.UHF: # open shell + ### vectorized. Faster for larger cores. + max_len = graph_for_pairs[parts[partIndex][0]][0] + + TMP1 = P_contr[:, :max_len,parts[partIndex]] # get part of P_contr that corresponds to cores of current CH + TMP2 = rho_ren.reshape((1, 2, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ + .transpose(3,4).reshape(2, (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4).transpose(3,4).transpose(1,2)[:,:,core_indices_in_sub] # get core column blocks of CH + P_contr_maxDif.append(torch.max(torch.abs(TMP1 - TMP2)).cpu().numpy()) # max difference in dm elements + P_contr_sumDif += torch.sum(torch.abs(TMP1 - TMP2)).cpu().numpy() # sum of abs differences between new and old dm. + P_contr[:,:max_len,parts[partIndex]] = (1-sdc.alpha)*TMP1 + sdc.alpha * TMP2 # update dm + + rho_ren = pack(rho_ren[0]+rho_ren[1], NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1]) # packing rho_ren from 4x4 blocks into normal form based on number of AOs per atom. + + else: + ### vectorized. Faster for larger cores. + max_len = graph_for_pairs[parts[partIndex][0]][0] + TMP1 = P_contr[:max_len,parts[partIndex]] # get part of P_contr that corresponds to cores of current CH + TMP2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1], 4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ + .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4).transpose(2,3).transpose(0,1)[:,core_indices_in_sub] # get core column blocks of CH + P_contr_maxDif.append(torch.max(torch.abs(TMP1 - TMP2)).cpu().numpy()) # max difference in dm elements + P_contr_sumDif += torch.sum(torch.abs(TMP1 - TMP2)).cpu().numpy() # sum of abs differences between new and old dm. + P_contr[:max_len,parts[partIndex]] = (1-sdc.alpha)*TMP1 + sdc.alpha * TMP2 # update dm + + ### Loop. Faster for many small cores (?). + # for i in range(len(parts[partIndex])): + # tmp1 = P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] + # tmp2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ + # .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4)[core_indices_in_sub[i]].transpose(1,2) + + # P_contr_maxDif.append(torch.max(torch.abs(tmp1 - tmp2)).cpu().numpy()) + # P_contr_sumDif += torch.sum(torch.abs(tmp1 - tmp2)).cpu().numpy() + # P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] = (1-sdc.alpha)*tmp1 + sdc.alpha*tmp2 + # del tmp1, tmp2 + + rho_ren = pack(rho_ren, NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1]) # packing rho_ren from 4x4 blocks into normal form based on number of AOs per atom. + + + P_contr_maxDif = max(P_contr_maxDif) + P_contr_maxDifList.append(P_contr_maxDif) + P_contr_sumDifTot += P_contr_sumDif + maxDifList.append(maxDif) + try: + sumDifTot += sumDif + except: + sumDifTot += 0 + graphOnRank = collect_graph_from_rho(graphOnRank, rho_ren, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex], hindex, verb=False) # get connectivity graph for the dm of current CH + del rho_ren + + print('HERE_DM_1') + print(" MAX |\u0394DM_ij|: {:>10.7f} at SubSy {:>5d}".format(max(P_contr_maxDifList), np.argmax(P_contr_maxDifList))) + print(" \u03A3 |\u0394DM_ij|: {:>10.7f}".format(P_contr_sumDifTot)) + return graphOnRank + +def print_memory_usage(rank, node_rank, message): + process = psutil.Process() + mem_info = process.memory_info() + print(f"{message} | Rank: {rank}, Node Rank: {node_rank}, Memory Usage: {mem_info.rss / (1024 ** 2):.2f} MB") +def tensor_size(tensor): + return tensor.element_size() * tensor.nelement() / (1024 ** 2) +# Collect all tensors in the current environment +def get_tensors(): + for obj in gc.get_objects(): + try: + if torch.is_tensor(obj): + yield obj + except Exception as e: + pass +def print_attribute_sizes(obj): + for attr in dir(obj): + # Skip private or callable attributes + if attr.startswith("_") or callable(getattr(obj, attr)): + continue + attribute = getattr(obj, attr) + size_bytes = attribute.nbytes if isinstance(attribute, np.ndarray) else attribute.element_size() * attribute.nelement() if isinstance(attribute, torch.Tensor) else sys.getsizeof(attribute) + size_mb = size_bytes / (1024 ** 2) # Convert bytes to MB + print(f"{attr}: {size_mb:.2f} MB") + + +def get_adaptiveDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): + ''' + The main driver function. It initializes supplementary comms, dm, graphs, performs scf cycle with graph and dm updates, and then computes forces. + sdc: + eng: + comm: master communicator + rank: global rank + numranks: number of global ranks + sy: + hindex: orbital index for each atom in the system + graphNL: initial connectivity graph + ''' + t_INIT = time.perf_counter() # time for scf initialization + tic = time.perf_counter() + sdc.EelecOld = 0.0 + + eng.use_pyseqm_lt = False # flag for using pyseqm "large tensors", e.g. ij vectors, masks, etc. These are extremely large for large systems. + # If False, pyseqm won't compute them and sedacs will coumpute only necessary subparts. + sdc.use_pyseqm_lt = eng.use_pyseqm_lt + + eng.reconstruct_dm = False # Flag for reconstructing the whole dm. For debug purposes only. + sdc.reconstruct_dm = eng.reconstruct_dm + + ### SETUP COMMS ### + node_comm = comm.Split_type(MPI.COMM_TYPE_SHARED) # local communicator for ranks on a node + node_rank = node_comm.Get_rank() # Local rank on a node + node_numranks = node_comm.Get_size() # Communicator size on a node + + node_name = socket.gethostname() + node_names = comm.allgather(node_name) + + unique_nodes = list(set(node_names)) + num_nodes = len(unique_nodes) # Total number of unique nodes + node_id = int(rank/node_numranks) + + # Get primary ranks on each node. E.g. when running 16 ranks on two nodes, these are ranks 0 and 8. + primary_rank = None + if node_rank == 0: + primary_rank = rank # Global rank of the primary rank on each node + # Gather the primary ranks from each node + primary_ranks = comm.allgather(primary_rank) + primary_ranks = [r for r in primary_ranks if r is not None] # Filter out None values + color = 0 if rank in primary_ranks else MPI.UNDEFINED + primary_comm = comm.Split(color=color, key=rank) # Communicator for primary ranks + + device = 'cpu' + if sdc.scfDevice == 'cuda' and sdc.numGPU == -1: + num_gpus = torch.cuda.device_count() + elif sdc.scfDevice == 'cuda': + num_gpus = sdc.numGPU + else: + num_gpus = node_numranks + + if num_gpus > node_numranks: + num_gpus = node_numranks + + color = 0 if node_rank < num_gpus else MPI.UNDEFINED + gpu_comm = comm.Split(color=color, key=rank) # global communicator for ranks with GPU. Identical to comm if running on CPU. + partsPerGPU = int(sdc.nparts / (num_gpus*num_nodes)) # assume all nodes have same number of GPUs! + partsPerNode = int(sdc.nparts / num_nodes) # How many CH are processed by each node. + + gpu_global_rank = None + if node_rank < num_gpus: + gpu_global_rank = rank # Global rank of the primary rank on each node + + # Gather the primary ranks from each node + gpu_global_ranks = comm.allgather(gpu_global_rank) + gpu_global_ranks = [r for r in gpu_global_ranks if r is not None] # Filter out None values + ### END SETUP COMMS ### + + # Some data type info for numpy and torch. Double precision is necessary for pyseqm. + if torch.get_default_dtype() == torch.float32: + eng.torch_dt = torch.float32 + sdc.torch_dt = eng.torch_dt + + eng.torch_int_dt = torch.int32 + sdc.torch_int_dt = eng.torch_int_dt + + eng.np_dt = np.float32 + sdc.np_dt = eng.np_dt + + eng.np_int_dt = np.int32 + sdc.np_int_dt = eng.np_int_dt + else: + eng.torch_dt = torch.float64 + sdc.torch_dt = eng.torch_dt + + eng.torch_int_dt = torch.int64 + sdc.torch_int_dt = eng.torch_int_dt + + eng.np_dt = np.float64 + sdc.np_dt = eng.np_dt + + eng.np_int_dt = np.int64 + sdc.np_int_dt = eng.np_int_dt + + fullGraph = graphNL.copy() + + # get pyseqm molecule object + tic = time.perf_counter() + with torch.no_grad(): + molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + #print_attribute_sizes(molSysData.molecule_whole) + if rank == 0: print("Time to init molSysData {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + ### Initialization for SCF ### + # Things that are calculated on each primary rank of each node. + if node_rank == 0: + tic = time.perf_counter() + if rank == 0: print('Computing cores.') + parts = graph_partition(eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, sdc.verb) # cores + if rank == 0: print("Time to compute cores {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + if rank == 0: print('Loading the molecule and parameters.') + + partsCoreHalo = [] + if rank == 0: + print('\n|||| Adaptive iter:', 0, '||||') + print("Core and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, sdc.numJumps, sdc, sy) # halos + partsCoreHalo.append(coreHalo) + if sdc.verb: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print(' N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) + print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) # Graph where new_graph_for_pairs[i] is a CH in which atom i is a core atom. new_graph_for_pairs[i][0] is the size of CH. + graph_for_pairs = new_graph_for_pairs # Here, same as new_graph_for_pairs + graph_maskd = get_maskd(sdc, sy, graph_for_pairs) # mask for diagonal block in contracted dm + print("Time to init mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + if sdc.UHF: + P_contr = torch.zeros(2, sy.nats*sdc.maxDeg,4,4, dtype=eng.torch_dt, device=device) # contracted density matrix + P_contr[:,graph_maskd] = 0.5*get_diag_guess_pyseqm(molecule_whole, sy) # diagonal initial guess + #P_contr = P_contr * torch.tensor([sy.nocc_alpha/(sy.numel/2), sy.nocc_beta/(sy.numel/2)], device = device).view(2, 1, 1, 1) + P_contr = P_contr.reshape(2, sy.nats, sdc.maxDeg, 4,4).transpose(1,2) # (2, n_atoms, max_deg, 4, 4). A rectangle of 4x4 square blocks. + P_contr_size = P_contr.size() + P_contr_nbytes = P_contr.numel() * P_contr.element_size() + else: + P_contr = torch.zeros(sy.nats*sdc.maxDeg,4,4, dtype=eng.torch_dt, device=device) # contracted density matrix + P_contr[graph_maskd] = get_diag_guess_pyseqm(molecule_whole, sy) # diagonal initial guess + P_contr = P_contr.reshape(sy.nats, sdc.maxDeg, 4,4).transpose(0,1) # (n_atoms, max_deg, 4, 4). A rectangle of 4x4 square blocks. + P_contr_size = P_contr.size() + P_contr_nbytes = P_contr.numel() * P_contr.element_size() + print("Time to init DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + # graphNL = collect_graph_from_rho(None, sdc.overlap_whole, sdc.gthreshinit, sy.nats, sdc.maxDeg, [i for i in range(0,sy.nats)],hindex) + del graphNL + else: + parts = None + sdc.nparts = None + + fullGraph = None + coreHalo = None + partsCoreHalo = None + + new_graph_for_pairs = None + graph_for_pairs = None + graph_maskd = None + + P_contr = None + P_contr_size = None + P_contr_nbytes = 0 + + tic = time.perf_counter() + parts = node_comm.bcast(parts, root=0) + sdc.nparts = node_comm.bcast(sdc.nparts, root=0) + if rank == 0: print("BCST1 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + # P_contr is in shared memory between ranks on one node but each node has its own copy. + P_contr_size = node_comm.bcast(P_contr_size, root=0) + P_contr_win = MPI.Win.Allocate_shared(P_contr_nbytes, torch.tensor(0, dtype=eng.torch_dt).element_size(), comm=node_comm) # 8 is the size of torch.float64 + P_contr_buf, P_contr_itemsize = P_contr_win.Shared_query(0) + P_contr_ary = np.ndarray(buffer=P_contr_buf, dtype=eng.np_dt, shape=(P_contr_size)) + if node_rank == 0: + P_contr_ary[:] = P_contr.cpu().numpy() + comm.Barrier() + del P_contr + P_contr = torch.from_numpy(P_contr_ary).to(device) + if rank == 0: print("BCST2 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + fullGraph = node_comm.bcast(fullGraph, root=0) + coreHalo = node_comm.bcast(coreHalo, root=0) + partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) + graph_maskd = node_comm.bcast(graph_maskd, root=0) + graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) + if rank == 0: print("BCST3 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + print("Time to init bcast and share DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + if rank == 0: + print("Time INIT {:>7.2f} (s)".format(time.perf_counter() - t_INIT)) + ### END Initialization for SCF ### + + ### SCF cycle ### + mu0 = -5.5 # initial guess for chemical potential + if sdc.UHF: + mu0 = np.array([mu0+0.1, mu0-0.1]) + mu0 = np.array([-1.3, -5.5]) + + for gsc in range(sdc.numAdaptIter): + if rank == 0: print('\n\n|||| Adaptive iter:', gsc, '||||') + #print_memory_usage(rank, node_rank, "Memory usage") + TIC_iter = time.perf_counter() + tic = time.perf_counter() + if node_rank == 0: # broadcasts dm from root rank (assuming its rank 0 on node 0) to primary ranks on other nodes. E.g. for ranks arranged as {node0:[0,1,2,3] node1:[4,5,6,7]}, dm is broadcates from 0 to 4. One of the major bottlenecks. + primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) + if rank == 0: print("Time to bcast DM_cpu_np {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + tic = time.perf_counter() + if gsc > 0: # lots of things have been done during initialization, so at iteration 0 we can proceed right to get_singlePoint + if node_rank == 0: # halos, dm contraction, and graphs are performed on primary ranks of each node and then broadcasted locally to other ranks + ### HALOS CALC ### + tic = time.perf_counter() + partsCoreHalo = [] + if rank == 0:print("Core and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, sdc.numJumps, sdc, sy) + partsCoreHalo.append(coreHalo) + if sdc.verb and rank == 0: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print(' N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) + if rank == 0: print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic)) + ### END HALOS CALC ### + + tic = time.perf_counter() + new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) # Graph where new_graph_for_pairs[i] is a CH in which atom i is a core atom. new_graph_for_pairs[i][0] is the size of CH. + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + # torch.save(P_contr, 'P.pt') + # exit() + update_dm_contraction(sdc, sy, P_contr, graph_for_pairs, new_graph_for_pairs, device) # update dm contraction based on new_graph_for_pairs + graph_for_pairs = new_graph_for_pairs # reset graph_for_pairs + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + graph_maskd = get_maskd(sdc, sy, graph_for_pairs) # get diagonal mask of contracted dm + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + else: + coreHalo = None + partsCoreHalo = None + graph_for_pairs = None + graph_maskd = None + + tic = time.perf_counter() + coreHalo = node_comm.bcast(coreHalo, root=0) + partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) + graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) + graph_maskd = node_comm.bcast(graph_maskd, root=0) + if node_rank == 0: print("Time to bcast DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + # Single point part. For efficiency, the PySEQM dm needs to be reshaped in 4x4 blocks. + global_Eelec = np.zeros(1, dtype=np.float64) # this will sum electronic energy from CHs on ranks, giving total Eelec + if eng.interface == "PySEQM": + with torch.no_grad(): + if node_rank < num_gpus: # This condition is for GPU jobs only because sometimes there are fewer GPUs per node than ranks per nodes. + # We want more ranks per node because dm update always happens on CPU, on node 0, in parallel. + eElec, eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ + get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, gpu_comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, + P_contr, graph_for_pairs, graph_maskd) + gpu_comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) + else: + eElec, eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = 0, None, None, None, None, None, None + comm.Barrier() + else: + raise ValueError(f"ERROR!!!: Interface type not recognized: '{eng.interface}'. " + + f"Use any of the following: Module,File,Socket,MDI") + if gsc==0 and sdc.UHF: + print('sym break') + for I in range(len(Q_list)): + orb_idx = NH_Nh_Hs_list[I][3][0] + Q_list[I][0,:,orb_idx] = 0.9*Q_list[I][0,:,orb_idx-1] + 0.1*Q_list[I][0,:,orb_idx] + sdc.EelecNew = global_Eelec[0] + #torch.cuda.synchronize() + if rank == 0: print("Time to get_singlePoint {:>7.2f} (s)".format(time.perf_counter() - tic)) + + if sdc.restartLoad: # If True, these files will be read and used instead as default initial guess. + sdc.restartLoad = False + if node_rank == 0: + P_contr[:] = torch.load('P_contr.pt') + with open('parts.pkl','rb') as f: + parts = pickle.load(f) + with open('partsCoreHalo.pkl','rb') as f: + partsCoreHalo = pickle.load(f) + with open('fullGraph.pkl','rb') as f: + fullGraph = pickle.load(f) + mu0 = np.load('mu0.npy') + graph_for_pairs = np.load('graph_for_pairs.npy') + graph_maskd = np.load('graph_maskd.npy') + if rank == 0: + eValOnRank_list = torch.load('eValOnRank_list.pt') + Q_list = torch.load('Q_list.pt') + NH_Nh_Hs_list = torch.load('NH_Nh_Hs_list.pt') + core_indices_in_sub_expanded_list = torch.load('core_indices_in_sub_expanded_list.pt') + Nocc_list = torch.load('Nocc_list.pt') + + if rank == 0 and sdc.restartSave: # Save for future restart. Slows things down significantly. + torch.save(eValOnRank_list, 'eValOnRank_list.pt') + torch.save(Q_list, 'Q_list.pt') + torch.save(NH_Nh_Hs_list, 'NH_Nh_Hs_list.pt') + torch.save(core_indices_in_sub_expanded_list, 'core_indices_in_sub_expanded_list.pt') + torch.save(Nocc_list, 'Nocc_list.pt') + torch.save(P_contr, 'P_contr.pt') + with open('parts.pkl', 'wb') as f: + pickle.dump(parts, f) + with open('partsCoreHalo.pkl', 'wb') as f: + pickle.dump(partsCoreHalo, f) + with open('fullGraph.pkl', 'wb') as f: + pickle.dump(fullGraph, f) + np.save('mu0', mu0) + np.save('graph_for_pairs', graph_for_pairs) + np.save('graph_maskd', graph_maskd) + + if rank == 0: # this defines what part of density matrix will be updated by each rank on node 0. + tic = time.perf_counter() + partsPerRank = int(sdc.nparts / node_numranks) + partIndex1 = 0 * partsPerRank + partIndex2 = (0 + 1) * partsPerRank + Q_list_on_rank = Q_list[partIndex1:partIndex2] # Root rank processes its own part + for r in range(1, node_numranks): + partIndex1 = r * partsPerRank + partIndex2 = (r + 1) * partsPerRank + # Send only the necessary slice to each rank + node_comm.send(Q_list[partIndex1:partIndex2], dest=r, tag=0) + print("Time send Q_list slice {:>7.2f} (s)".format(time.perf_counter() - tic)) + + if rank < node_numranks and rank != 0: + Q_list_on_rank = node_comm.recv(source=0, tag=0) + + if rank < node_numranks: + tic = time.perf_counter() + ### BCAST DATA across ranks on node 0 ### + eValOnRank_list = node_comm.bcast(eValOnRank_list, root=0) + NH_Nh_Hs_list = node_comm.bcast(NH_Nh_Hs_list, root=0) + core_indices_in_sub_expanded_list = node_comm.bcast(core_indices_in_sub_expanded_list, root=0) + Nocc_list = node_comm.bcast(Nocc_list, root=0) + mu0 = node_comm.bcast(mu0, root=0) + node_comm.Barrier() + ### END BCAST DATA ### + + with torch.no_grad(): # dm update and the graph from dm + fullGraphRho = get_singlePointDM(sdc, eng, rank, node_numranks, node_comm, parts, partsCoreHalo, sy, hindex, mu0, P_contr, graph_for_pairs, + eValOnRank_list, Q_list_on_rank, NH_Nh_Hs_list, core_indices_in_sub_expanded_list) + if rank == 0: print("Time to updt DM {:>7.2f} (s)".format(time.perf_counter() - tic)) + node_comm.Barrier() + + tic = time.perf_counter() + fullGraphRho_LIST = node_comm.gather(fullGraphRho, root=0) # get dm-derived graphs from each rank + if rank == 0: + fullGraphRho_LIST.append(fullGraph) # adds the graph we got on the previous iteration. Note, when doing SCF, the graph keeps growing, no nodes from previous iterations are removed. + fullGraph = add_mult_graphs(fullGraphRho_LIST) # adds together the list of graphs + print("Time to add graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + del fullGraphRho + + if rank == 0: + tic = time.perf_counter() + if sdc.UHF: + trace = torch.sum(P_contr.transpose(1,2).reshape(2, molecule_whole.molsize*(len(graph_for_pairs[0])-1), 4,4)[:, graph_maskd].diagonal(dim1=-2, dim2=-1), dim=(1,2)) + print("DM TRACE: {:>10.8f}, {:>10.8f}".format(trace[0], trace[1])) + else: + trace = torch.sum(P_contr.transpose(0,1).reshape(molecule_whole.molsize*(len(graph_for_pairs[0])-1), 4,4)[graph_maskd].diagonal(dim1=-2, dim2=-1)) + print("DM TRACE: {:>10.7f}".format(trace)) + print("Time to get trace {:>7.2f} (s)".format(time.perf_counter() - tic)) + else: + fullGraph = None + + tic = time.perf_counter() + fullGraph = comm.bcast(fullGraph, root=0) # bcast the new graph across ALL ranks + if rank == 0: print("Time to bcast fullGraph {:>7.2f} (s)".format(time.perf_counter() - tic)) + del eValOnRank_list, Q_list, NH_Nh_Hs_list, Nocc_list + torch.cuda.empty_cache() + + # Function to calculate tensor size in megabytes (MB) + # if rank == 0: + # # Sort tensors by size and print them + # tensors = list(get_tensors()) + # tensors.sort(key=lambda x: tensor_size(x), reverse=True) + # print("Top memory-consuming tensors:") + # for tensor in tensors: + # if tensor_size(tensor) > 0.1: + # print(f"Tensor size: {tensor_size(tensor):.2f} MB | Shape: {tensor.shape} | Dtype: {tensor.dtype}") + if rank == 0: print("t Iter {:>8.2f} (s)".format(time.perf_counter() - TIC_iter)) + ### END SCF cycle ### + + ### FORCES CALC ### + tic_F_INIT = time.perf_counter() + if node_rank < num_gpus: + if node_rank == 0: # broadcasts dm from root rank (assuming its rank 0 on node 0) to primary ranks on other nodes. E.g. for ranks arranged as {node0:[0,1,2,3] node1:[4,5,6,7]}, dm is broadcates from 0 to 4. One of the major bottlenecks. + primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) + forces = np.zeros((sy.coords.shape)) + partsCoreHalo = [] + if rank == 0: print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, sdc.numJumps, sdc, sy) + partsCoreHalo.append(coreHalo) + if sdc.verb: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) + + tic = time.perf_counter() + new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + update_dm_contraction(sdc, sy, P_contr, graph_for_pairs, new_graph_for_pairs, device) + graph_for_pairs = new_graph_for_pairs + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + graph_maskd = get_maskd(sdc, sy, graph_for_pairs) + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + else: + forces = None + partsCoreHalo = None + new_graph_for_pairs = None + graph_for_pairs = None + graph_maskd = None + + if sdc.scfDevice == 'cuda': + device = 'cuda:{}'.format(node_rank) + else: + device = 'cpu' + + molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + forces = gpu_comm.bcast(forces, root=0) + partsCoreHalo = gpu_comm.bcast(partsCoreHalo, root=0) + gpu_comm.Barrier() + graph_for_pairs = gpu_comm.bcast(graph_for_pairs, root=0) + new_graph_for_pairs = gpu_comm.bcast(new_graph_for_pairs, root=0) + graph_maskd = gpu_comm.bcast(graph_maskd, root=0) + if rank == 0: + forces[:] = .0 + gpu_comm.Barrier() + if rank == 0: print("Time init forces {:>8.2f} (s)".format(time.perf_counter() - tic_F_INIT)) + + tic = time.perf_counter() + if eng.interface == "PySEQM": + if sdc.doForces: + eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, + None, P_contr.to(device), graph_for_pairs, graph_maskd) + else: + with torch.no_grad(): + eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, + None, P_contr.to(device), graph_for_pairs, graph_maskd) + global_Eelec = np.zeros(1, dtype=np.float64) + gpu_comm.Barrier() + gpu_comm.Allreduce(MPI.IN_PLACE, forces, op=MPI.SUM) + gpu_comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) #primary_comm + if rank == 0: + print("Time to get electron forces {:>8.2f} (s)".format(time.perf_counter() - tic)) + print("eElec: {:>10.12f}".format(global_Eelec[0]),) + + # Nuclear energy and forces. For now, done on one cpu/gpu, for the whole system at once (pyseqm style). Hence, do_large_tensors = True. Needs to be fixed. + if rank == 0: + molSysData = pyseqmObjects(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = True, device=device) #object with whatever initial parameters and tensors + tic = time.perf_counter() + eNucAB = get_eNuc(eng, molSysData) + eTot, eNuc = get_eTot(eng, molSysData, eNucAB, 0) + print("Enuc: {:>10.12f}".format(eNuc),) + L = eNuc.sum() + L.backward() + forceNuc = -molSysData.molecule_whole.coordinates.grad.detach() + molSysData.molecule_whole.coordinates.grad.zero_() + print("Time to get nuclear forces {:>8.2f} (s)".format(time.perf_counter() - tic)) + np.save('forces', (forces+forceNuc.cpu().numpy()[0]), ) + ### END FORCES CALC ### diff --git a/src/sedacs/driver/graph_adaptive_scf.py b/src/sedacs/driver/graph_adaptive_scf.py new file mode 100644 index 00000000..b8d497fe --- /dev/null +++ b/src/sedacs/driver/graph_adaptive_scf.py @@ -0,0 +1,266 @@ +"""Graph adaptive self-consistenf charge solver""" + +import time + +from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph +from sedacs.graph_partition import get_coreHaloIndices, graph_partition +from sedacs.sdc_hamiltonian import get_hamiltonian +from sedacs.sdc_density_matrix import get_density_matrix +from sedacs.sdc_evals_dvals import get_evals_dvals +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.mpi import collect_and_sum_matrices, collect_and_sum_vectors_float, collect_and_concatenate_vectors +from sedacs.system import System, extract_subsystem, get_hindex +from sedacs.coulombic import get_coulvs, get_PME_coulvs, build_coul_ham +from sedacs.charges import get_charges, collect_charges +from sedacs.evals_dvals import collect_evals, collect_dvals +from sedacs.message import status_at, error_at, warning_at +from sedacs.mixer import diis_mix, linear_mix +from sedacs.chemical_potential import get_mu +import numpy as np + +try: + from mpi4py import MPI + is_mpi_available = True +except ModuleNotFoundError: + is_mpi_available = False + +__all__ = ["get_singlePoint_charges", "get_adaptiveSCFDM"] + + +def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu=0.0): + # computing DM for core+halo part + # + partsPerRank = int(sdc.nparts / numranks) + partIndex1 = rank * partsPerRank + partIndex2 = (rank + 1) * partsPerRank + graphOnRank = None + chargesOnRank = None + evalsOnRank = None + dvalsOnRank = None + subSysOnRank = [] + ham_list = [None] * partsPerRank + over_list = [None] * partsPerRank + + for partIndex in range(partIndex1, partIndex2): + idx = partIndex - partIndex1 + numberOfCoreAtoms = len(parts[partIndex]) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + tic = time.perf_counter() + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.ncores = len(parts[partIndex]) + if(gscf == 0): + subSy.charges = np.zeros(len(subSy.types)) + toc = time.perf_counter() + print("Time for extract_subsystem", toc - tic, "(s)") + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates( + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + ) + tic = time.perf_counter() + + #Get some electronic structure elements for the sybsystem + #This could eventually be computed in the engine if no basis set is + #provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + + norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + if(sdc.over): + # eng.name = "LATTE" + ham0, over = get_hamiltonian(eng, partIndex, sdc.nparts, norbs, sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols, verbose=sdc.verb, get_overlap=True, newsystem=True) + #eng.name = "ProxyAPython" + else: + ham0 = get_hamiltonian(eng, partIndex, sdc.nparts, norbs, sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols, verbose=sdc.verb, get_overlap=False, newsystem=True) + over_list[idx] = over + # ham = ham0 + tmpArray = np.zeros(numberOfCoreAtoms) + tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] + + norbsInCore = int(np.sum(tmpArray)) + + print("Number of orbitals in the core =",norbsInCore) +# print("ham0:", ham0) + # if gscf == 0: + if(sdc.over): + ham = build_coul_ham(eng,ham0,sy.coulvs[partsCoreHalo[partIndex]],subSy.types,subSy.charges,False,subSy.hindex,overlap=over,verb=True) + else: + ham = build_coul_ham(eng,ham0,sy.coulvs[partsCoreHalo[partIndex]],subSy.types,subSy.charges,False,subSy.hindex,overlap=None,verb=True) + ham_list[idx] = ham + toc = time.perf_counter() + print("Time for get_hamiltonian", toc - tic, "(s)") + #norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + + tic = time.perf_counter() + evalsInPart, dvalsInPart = get_evals_dvals(eng,partIndex,sdc.nparts,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=True,newsystem=False) + #breakpoint() + toc = time.perf_counter() + print("Time for get_evals_dvals", toc - tic, "(s)") + + # subSy.latticeVectors = sy.latticeVectors + # if(sdc.over): + # rho, evalsInPart, dvalsInPart = get_density_matrix(eng,subSy,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,mu=mu,etemp=sdc.etemp,overlap=over,full_data=True,verb=False) + # else: + # rho, evals, dvals = get_density_matrix(eng,subSy,ham,nocc=nocc,norbsInCore=norbsInCore,mu=None,etemp=sdc.etemp,overlap=None,full_data=True,verb=False, newsystem=False) + + evalsOnRank = collect_evals(evalsOnRank,evalsInPart,verb=True) + dvalsOnRank = collect_dvals(dvalsOnRank,dvalsInPart,verb=True) + + if (is_mpi_available and numranks > 1): + fullEvals = collect_and_concatenate_vectors(evalsOnRank, comm) + fullDvals = collect_and_concatenate_vectors(dvalsOnRank, comm) + comm.Barrier() + else: + fullEvals = evalsOnRank + fullDvals = dvalsOnRank + + mu = get_mu(mu, fullEvals, sdc.etemp, int(sy.numel/2), dvals=fullDvals, kB=8.61739e-5, verb=True) + + for partIndex in range(partIndex1, partIndex2): + idx = partIndex - partIndex1 + numberOfCoreAtoms = len(parts[partIndex]) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + tic = time.perf_counter() + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.ncores = len(parts[partIndex]) + ham = ham_list[idx] + over = over_list[idx] + if(gscf == 0): + subSy.charges = np.zeros(len(subSy.types)) + toc = time.perf_counter() + print("Time for extract_subsystem", toc - tic, "(s)") + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates( + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + ) + tic = time.perf_counter() + + #Get some electronic structure elements for the sybsystem + #This could eventually be computed in the engine if no basis set is + #provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + + norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + tmpArray = np.zeros(numberOfCoreAtoms) + tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] + + norbsInCore = np.sum(tmpArray) + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + subSy.latticeVectors = sy.latticeVectors + + tic = time.perf_counter() + + if eng.name == "LATTE": + rho, chargesInPart = get_density_matrix(eng,partIndex,sdc.nparts,norbs,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=True,newsystem=True,keepmem=True) + else: + rho = get_density_matrix(eng,partIndex,sdc.nparts,norbs,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=True) + + if(sdc.over): + chargesInPart = get_charges(rho,subSy.znuc,subSy.types,parts[partIndex],subSy.hindex,over=over_list[partIndex],verb=True) + else: + chargesInPart = get_charges(rho,subSy.znuc,subSy.types,parts[partIndex],subSy.hindex,over=None,verb=True) + + chargesInPart = chargesInPart[:len(parts[partIndex])] + subSy.charges = chargesInPart + + #Save the subsystems list for returning them + subSysOnRank.append(subSy) + + print("TotalCharge in part",partIndex,sum(chargesInPart)) + print("Charges in part",chargesInPart) + + toc = time.perf_counter() + print("Time to get_densityMatrix and get_charges", toc - tic, "(s)") + # Building a graph from DMs + graphOnRank = collect_graph_from_rho( + graphOnRank, rho, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex],len(parts[partIndex]), hindex + ) + + chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) + + if (is_mpi_available and numranks > 1): + fullGraphRho = collect_and_sum_matrices(graphOnRank, rank, numranks, comm) + fullCharges = collect_and_sum_vectors_float(chargesOnRank, rank, numranks, comm) + comm.Barrier() + else: + fullGraphRho = graphOnRank + fullCharges = chargesOnRank + + # print_graph(fullGraphRho) + return fullGraphRho, fullCharges, fullEvals, fullDvals, subSysOnRank, mu + + +def get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu): + fullGraph = graphNL + + #Iitial guess for the excess ocupation vector. This is the negative of + #the charge! + charges = sy.charges +# charges = np.zeros(sy.nats) + chargesOld = None + chargesIn = None + chargesOld = None + chargesOut = None +# mu = -0.0 + sdc.etemp = 1000 + # Partition the graph + parts = graph_partition(sdc, eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, True) + njumps = 2 + partsCoreHalo = [] + numCores = [] + for gscf in range(sdc.numAdaptIter): + msg = "Graph-adaptive iteration" + str(gscf) + status_at("get_adaptiveSCFDM",msg) + #print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) + partsCoreHalo.append(coreHalo) + numCores.append(nc) + print("core,halo size:", i, "=", nc, nh) + # print("coreHalo for part", i, "=", coreHalo) + symbols = np.array(sy.symbols)[sy.types] + hubbard_u = np.where(symbols == 'H', 12.054683, 0.0) + np.where(symbols == 'O', 11.876141, 0.0) + if gscf == 0 and sum(charges == 0) != 0: + sy.coulvs = np.zeros(len(charges)) + else: + sy.coulvs, ewald_e = get_PME_coulvs(charges, hubbard_u, sy.coords, sy.types, sy.latticeVectors) + + fullGraphRho,charges,evals,dvals,subSysOnRank,mu = get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex,gscf,mu) + print("Collected charges",charges) + + scfError, charges, chargesOld, chargesIn, chargesOut = diis_mix(charges,chargesOld,chargesIn,chargesOut,gscf,verb=True) + #scfError,charges,chargesOld = linear_mix(0.25,charges,chargesOld,gscf) + #if gscf == 0: + # scfError = sy.numel + + #print_graph(fullGraphRho) + + fullGraph = add_graphs(fullGraphRho, graphNL) + for i in range(sy.nats): + print("Charges:",i,sy.symbols[sy.types[i]],charges[i]) + print("SCF ERR =",scfError) + print("TotalCharge",sum(charges)) + + if(scfError < sdc.scfTol): + status_at("get_adaptiveSCFDM","SCF converged with SCF error = "+str(scfError)) + break + + if(gscf == sdc.numAdaptIter - 1): + warning_at("get_adaptiveSCFDM","SCF did not converged ... ") + + AtToPrint = 0 + + subSy = System(fullGraphRho[AtToPrint, 0]) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] + ) + + if rank == 0: + write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) + + return fullGraph,charges,mu,parts,subSysOnRank diff --git a/src/sedacs/driver/graph_adaptive_scf_energy_forces.py b/src/sedacs/driver/graph_adaptive_scf_energy_forces.py new file mode 100644 index 00000000..01ad98b1 --- /dev/null +++ b/src/sedacs/driver/graph_adaptive_scf_energy_forces.py @@ -0,0 +1,263 @@ +"""Graph adaptive self-consistenf charge solver""" + +import time + +from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph +from sedacs.graph_partition import get_coreHaloIndices, graph_partition +from sedacs.sdc_hamiltonian import get_hamiltonian +from sedacs.sdc_density_matrix import get_density_matrix +from sedacs.sdc_energy_forces import get_energy_forces +from sedacs.sdc_evals_dvals import get_evals_dvals +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.mpi import collect_and_sum_matrices, collect_and_sum_vectors_float, collect_and_concatenate_vectors +from sedacs.system import System, extract_subsystem, get_hindex +from sedacs.coulombic import get_coulvs, get_PME_coulvs, build_coul_ham +from sedacs.charges import get_charges, collect_charges +from sedacs.evals_dvals import collect_evals, collect_dvals +from sedacs.energy_forces import collect_energy, collect_forces +from sedacs.message import status_at, error_at, warning_at +from sedacs.mixer import diis_mix, linear_mix +from sedacs.chemical_potential import get_mu +import numpy as np + +try: + from mpi4py import MPI + is_mpi_available = True +except ModuleNotFoundError: + is_mpi_available = False + +__all__ = ["get_occ_singlePoint", "get_adaptiveSCFDM"] + + +## Single point calculation +# @brief Construct a connectivity graph based on constructing density matrices +# of parts of the system. +# +def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu=0.0): + # computing DM for core+halo part + # + partsPerRank = int(sdc.nparts / numranks) + partIndex1 = rank * partsPerRank + partIndex2 = (rank + 1) * partsPerRank + graphOnRank = None + chargesOnRank = None + evalsOnRank = None + dvalsOnRank = None + energyOnRank = None + forcesOnRank = None + subSysOnRank = [] + + for partIndex in range(partIndex1, partIndex2): +# print("Rank, part", rank, partIndex) + numberOfCoreAtoms = len(parts[partIndex]) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + tic = time.perf_counter() + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.ncores = len(parts[partIndex]) + if(gscf == 0): + subSy.charges = np.zeros(len(subSy.types)) + toc = time.perf_counter() + print("Time for extract_subsystem", toc - tic, "(s)") + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates( + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + ) + tic = time.perf_counter() + + #Get some electronic structure elements for the sybsystem + #This could eventually be computed in the engine if no basis set is + #provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + ham, over = get_hamiltonian(eng, partIndex, sdc.nparts, norbs, sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols, verbose=sdc.verb, get_overlap=True, newsystem=True) + + tmpArray = np.zeros(numberOfCoreAtoms) + tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] + + norbsInCore = np.sum(tmpArray) + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + print("Number of orbitals in the core =",norbsInCore) + + toc = time.perf_counter() + print("Time for get_hamiltonian", toc - tic, "(s)") + + tic = time.perf_counter() + evalsInPart, dvalsInPart = get_evals_dvals(eng,partIndex,sdc.nparts,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=sdc.verb,newsystem=False) + toc = time.perf_counter() + print("Time for get_evals_dvals", toc - tic, "(s)") + + evalsOnRank = collect_evals(evalsOnRank,evalsInPart,verb=True) + dvalsOnRank = collect_dvals(dvalsOnRank,dvalsInPart,verb=True) + + if (is_mpi_available and numranks > 1): + fullEvals = collect_and_concatenate_vectors(evalsOnRank, comm) + fullDvals = collect_and_concatenate_vectors(dvalsOnRank, comm) + comm.Barrier() + else: + fullEvals = evalsOnRank + fullDvals = dvalsOnRank + + mu = get_mu(mu, fullEvals, sdc.etemp, int(sy.numel/2), dvals=fullDvals, kB=8.61739e-5, verb=True) + + for partIndex in range(partIndex1, partIndex2): +# print("Rank, part", rank, partIndex) + numberOfCoreAtoms = len(parts[partIndex]) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + tic = time.perf_counter() + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.ncores = len(parts[partIndex]) + if(gscf == 0): + subSy.charges = np.zeros(len(subSy.types)) + toc = time.perf_counter() + print("Time for extract_subsystem", toc - tic, "(s)") + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates( + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + ) + tic = time.perf_counter() + + #Get some electronic structure elements for the sybsystem + #This could eventually be computed in the engine if no basis set is + #provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + tmpArray = np.zeros(numberOfCoreAtoms) + tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] + + norbsInCore = int(np.sum(tmpArray)) + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + subSy.latticeVectors = sy.latticeVectors + tic = time.perf_counter() + + rho, chargesInPart = get_density_matrix(eng,partIndex,sdc.nparts,norbs,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=sdc.verb,newsystem=True,keepmem=True) + + energyInPart, forcesInPart = get_energy_forces(eng,partIndex,sdc.nparts,norbs,ham,sy.latticeVectors,subSy.coords,subSy.types,subSy.symbols,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,numberOfCoreAtoms=numberOfCoreAtoms,mu=mu,etemp=sdc.etemp,verb=sdc.verb,newsystem=False,keepmem=False) + + chargesInPart = chargesInPart[:len(parts[partIndex])] + subSy.charges = chargesInPart + + forcesInPart = forcesInPart[:len(parts[partIndex])] + + #Save the subsystems list for returning them + subSysOnRank.append(subSy) + + print("TotalCharge in part",partIndex,sum(chargesInPart)) + print("Charges in part",chargesInPart) + + toc = time.perf_counter() + print("Time to get_densityMatrix", toc - tic, "(s)") + # Building a graph from DMs + graphOnRank = collect_graph_from_rho( + graphOnRank, rho, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex],len(parts[partIndex]), hindex + ) + + chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) + energyOnRank = collect_energy(energyOnRank,energyInPart,verb=True) + forcesOnRank = collect_forces(forcesOnRank,forcesInPart,parts[partIndex],sy.nats,verb=True) + + if (is_mpi_available and numranks > 1): + fullGraphRho = collect_and_sum_matrices(graphOnRank, rank, numranks, comm) + fullCharges = collect_and_sum_vectors_float(chargesOnRank, rank, numranks, comm) + fullEnergy = collect_and_sum_vectors_float(energyOnRank, rank, numranks, comm) + fullForces = collect_and_sum_matrices(forcesOnRank, rank, numranks, comm) + comm.Barrier() + else: + fullGraphRho = graphOnRank + fullCharges = chargesOnRank + fullEnergy = energyOnRank + fullForces = forcesOnRank + + print_graph(fullGraphRho) + return fullGraphRho, fullCharges, fullEvals, fullDvals, fullEnergy[0], fullForces, subSysOnRank, mu + + +def get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu): + fullGraph = graphNL + + #Initial guess for the excess ocupation vector. This is the negative of + #the charge! + #charges = np.zeros(sy.nats) + #charges = sy.charges + chargesOld = np.zeros(sy.nats) + chargesIn = None + chargesOld = None + chargesOut = None + sdc.etemp = 1000 + for gscf in range(sdc.numAdaptIter): + msg = "Graph-adaptive iteration" + str(gscf) + status_at("get_adaptiveSCFDM",msg) + # Partition the graph + parts = graph_partition(fullGraph, sdc.partitionType, sdc.nparts, True) + njumps = 2 + partsCoreHalo = [] + numCores = [] + + #print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) + partsCoreHalo.append(coreHalo) + numCores.append(nc) + print("core,halo size:", i, "=", nc, nh) + # print("coreHalo for part", i, "=", coreHalo) + + symbols = np.array(sy.symbols)[sy.types] + hubbard_u = np.where(symbols == 'H', 12.054683, 0.0) + np.where(symbols == 'O', 11.876141, 0.0) + #if gscf == 0: + if np.sum(sy.charges == 0) == sy.nats: + sy.coulvs = np.zeros(len(sy.charges)) + ecoul = 0.0 + fcoul = np.zeros([len(sy.charges), 3]) + else: + sy.coulvs, ecoul, fcoul = get_PME_coulvs(sy.charges, hubbard_u, sy.coords, sy.types, sy.latticeVectors, calculate_forces=1) + fullGraphRho,sy.charges,evals,dvals,energy,forces,subSysOnRank,mu = get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu) + energy = energy - ecoul +# fcoul = fcoul * ((2*sy.charges - olddeltaq) / olddeltaq)[:,None] + forces = forces + fcoul +# with open('ecoul.log', 'a') as f: +# f.write(f'energy: {energy}, ecoul: {ecoul}\n') +# f.write(f'{ecoul}\n') +# f.write(f'forces: {forces}\n') +# f.write(f'fcoul: {fcoul}\n') +# f.write(f'sy.coulvs: {sy.coulvs}\n') + print("Collected charges",sy.charges) + + scfError, sy.charges, chargesOld, chargesIn, chargesOut = diis_mix(sy.charges,chargesOld,chargesIn,chargesOut,gscf,verb=True) + #scfError,charges,chargesOld = linear_mix(0.25,charges,chargesOld,gscf) + + #print_graph(fullGraphRho) + + + fullGraph = add_graphs(fullGraphRho, graphNL) + for i in range(sy.nats): + print("Charges:",i,sy.symbols[sy.types[i]],sy.charges[i]) + print("SCF ERR =",scfError) + print("TotalCharge",sum(sy.charges)) + + if(scfError < sdc.scfTol): + status_at("get_adaptiveSCFDM","SCF converged with SCF error = "+str(scfError)) + with open('ecoul.log', 'a') as f: + f.write(f'{ecoul}\n') + break + + if(gscf == sdc.numAdaptIter - 1): + warning_at("get_adaptiveSCFDM","SCF did not converged ... ") + + AtToPrint = 0 + + subSy = System(fullGraphRho[AtToPrint, 0]) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] + ) + + if rank == 0: + write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) + + return fullGraph,sy.charges,energy,forces,mu,parts,subSysOnRank + + diff --git a/src/sedacs/driver/graph_adaptive_sp_energy_forces.py b/src/sedacs/driver/graph_adaptive_sp_energy_forces.py new file mode 100644 index 00000000..363c3137 --- /dev/null +++ b/src/sedacs/driver/graph_adaptive_sp_energy_forces.py @@ -0,0 +1,219 @@ +"""Graph adaptive self-consistenf charge solver""" + +import time + +from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph +from sedacs.graph_partition import get_coreHaloIndices, graph_partition +from sedacs.sdc_hamiltonian import get_hamiltonian +from sedacs.sdc_density_matrix import get_density_matrix +from sedacs.sdc_energy_forces import get_energy_forces +from sedacs.sdc_evals_dvals import get_evals_dvals +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.mpi import collect_and_sum_matrices, collect_and_sum_vectors_float, collect_and_concatenate_vectors +from sedacs.system import System, extract_subsystem, get_hindex +from sedacs.coulombic import get_coulvs, get_PME_coulvs, build_coul_ham +from sedacs.charges import get_charges, collect_charges +from sedacs.evals_dvals import collect_evals, collect_dvals +from sedacs.energy_forces import collect_energy, collect_forces +from sedacs.message import status_at, error_at, warning_at +from sedacs.mixer import diis_mix, linear_mix +from sedacs.chemical_potential import get_mu +import numpy as np + +try: + from mpi4py import MPI + is_mpi_available = True +except ModuleNotFoundError: + is_mpi_available = False + +__all__ = ["get_occ_singlePoint", "get_adaptiveSCFDM"] + + +## Single point calculation +# @brief Construct a connectivity graph based on constructing density matrices +# of parts of the system. +# +def get_singlePoint_energy_forces(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu=0.0): + # computing DM for core+halo part + # + partsPerRank = int(sdc.nparts / numranks) + partIndex1 = rank * partsPerRank + partIndex2 = (rank + 1) * partsPerRank + graphOnRank = None + chargesOnRank = None + evalsOnRank = None + dvalsOnRank = None + energyOnRank = None + forcesOnRank = None + subSysOnRank = [] + + for partIndex in range(partIndex1, partIndex2): +# print("Rank, part", rank, partIndex) + numberOfCoreAtoms = len(parts[partIndex]) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + tic = time.perf_counter() + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.ncores = len(parts[partIndex]) + if(gscf == 0): + subSy.charges = np.zeros(len(subSy.types)) + toc = time.perf_counter() + print("Time for extract_subsystem", toc - tic, "(s)") + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates( + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + ) + tic = time.perf_counter() + + #Get some electronic structure elements for the sybsystem + #This could eventually be computed in the engine if no basis set is + #provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + ham, over = get_hamiltonian(eng, partIndex, sdc.nparts, norbs, sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols, verbose=sdc.verb, get_overlap=True, newsystem=True) + + tmpArray = np.zeros(numberOfCoreAtoms) + tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] + + norbsInCore = np.sum(tmpArray) + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + print("Number of orbitals in the core =",norbsInCore) + + toc = time.perf_counter() + print("Time for get_hamiltonian", toc - tic, "(s)") + + tic = time.perf_counter() + evalsInPart, dvalsInPart = get_evals_dvals(eng,partIndex,sdc.nparts,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=sdc.verb,newsystem=False) + toc = time.perf_counter() + print("Time for get_evals_dvals", toc - tic, "(s)") + + evalsOnRank = collect_evals(evalsOnRank,evalsInPart,verb=True) + dvalsOnRank = collect_dvals(dvalsOnRank,dvalsInPart,verb=True) + + if (is_mpi_available and numranks > 1): + fullEvals = collect_and_concatenate_vectors(evalsOnRank, comm) + fullDvals = collect_and_concatenate_vectors(dvalsOnRank, comm) + comm.Barrier() + else: + fullEvals = evalsOnRank + fullDvals = dvalsOnRank + + mu = get_mu(mu, fullEvals, sdc.etemp, int(sy.numel/2), dvals=fullDvals, kB=8.61739e-5, verb=True) + + for partIndex in range(partIndex1, partIndex2): +# print("Rank, part", rank, partIndex) + numberOfCoreAtoms = len(parts[partIndex]) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + tic = time.perf_counter() + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.ncores = len(parts[partIndex]) + if(gscf == 0): + subSy.charges = np.zeros(len(subSy.types)) + toc = time.perf_counter() + print("Time for extract_subsystem", toc - tic, "(s)") + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates( + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + ) + tic = time.perf_counter() + + #Get some electronic structure elements for the sybsystem + #This could eventually be computed in the engine if no basis set is + #provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + tmpArray = np.zeros(numberOfCoreAtoms) + tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] + + norbsInCore = int(np.sum(tmpArray)) + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + subSy.latticeVectors = sy.latticeVectors + tic = time.perf_counter() + rho, chargesInPart = get_density_matrix(eng,partIndex,sdc.nparts,norbs,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=sdc.verb,newsystem=True,keepmem=True) + + energyInPart, forcesInPart = get_energy_forces(eng,partIndex,sdc.nparts,norbs,ham,sy.latticeVectors,subSy.coords,subSy.types,subSy.symbols,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,numberOfCoreAtoms=numberOfCoreAtoms,mu=mu,etemp=sdc.etemp,verb=sdc.verb,newsystem=False,keepmem=False) + + chargesInPart = chargesInPart[:len(parts[partIndex])] + subSy.charges = chargesInPart + + forcesInPart = forcesInPart[:len(parts[partIndex])] + + #Save the subsystems list for returning them + subSysOnRank.append(subSy) + + print("TotalCharge in part",partIndex,sum(chargesInPart)) + print("Charges in part",chargesInPart) + + toc = time.perf_counter() + print("Time to get_densityMatrix", toc - tic, "(s)") + # Building a graph from DMs + graphOnRank = collect_graph_from_rho( + graphOnRank, rho, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex],len(parts[partIndex]), hindex + ) + + chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) + energyOnRank = collect_energy(energyOnRank,energyInPart,verb=True) + forcesOnRank = collect_forces(forcesOnRank,forcesInPart,parts[partIndex],sy.nats,verb=True) + + if (is_mpi_available and numranks > 1): + fullGraphRho = collect_and_sum_matrices(graphOnRank, rank, numranks, comm) + fullCharges = collect_and_sum_vectors_float(chargesOnRank, rank, numranks, comm) + fullEnergy = collect_and_sum_vectors_float(energyOnRank, rank, numranks, comm) + fullForces = collect_and_sum_matrices(forcesOnRank, rank, numranks, comm) + comm.Barrier() + else: + fullGraphRho = graphOnRank + fullCharges = chargesOnRank + fullEnergy = energyOnRank + fullForces = forcesOnRank + + print_graph(fullGraphRho) + return fullGraphRho, fullCharges, fullEvals, fullDvals, fullEnergy[0], fullForces, subSysOnRank, mu + + +def get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu): + fullGraph = graphNL + + sdc.etemp = 1000 + gscf = 0 + # Partition the graph + parts = graph_partition(fullGraph, sdc.partitionType, sdc.nparts, True) + njumps = 2 + partsCoreHalo = [] + numCores = [] + + #print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) + partsCoreHalo.append(coreHalo) + numCores.append(nc) + print("core,halo size:", i, "=", nc, nh) + # print("coreHalo for part", i, "=", coreHalo) + + symbols = np.array(sy.symbols)[sy.types] + hubbard_u = np.where(symbols == 'H', 12.054683, 0.0) + np.where(symbols == 'O', 11.876141, 0.0) + sy.coulvs, ecoul, fcoul = get_PME_coulvs(sy.charges, hubbard_u, sy.coords, sy.types, sy.latticeVectors, calculate_forces=1) + fullGraphRho,sy.charges,evals,dvals,energy,forces,subSysOnRank,mu = get_singlePoint_energy_forces(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu) + energy = energy - ecoul + forces = forces + fcoul + + fullGraph = add_graphs(fullGraphRho, graphNL) + + AtToPrint = 0 + + subSy = System(fullGraphRho[AtToPrint, 0]) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] + ) + + if rank == 0: + write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) + + return fullGraph,sy.charges,energy,forces,mu,parts,subSysOnRank + + diff --git a/src/sedacs/driver/init.py b/src/sedacs/driver/init.py new file mode 100644 index 00000000..a56e3b95 --- /dev/null +++ b/src/sedacs/driver/init.py @@ -0,0 +1,215 @@ +"""Initialize sedac driver""" + +import argparse +import time + +import numpy as np + +from sedacs.engine import Engine +from sedacs.file_io import read_coords_file, write_xyz_coordinates +from sedacs.graph import get_initial_graph +from sedacs.parser import Input +from sedacs.interface_modules import get_ppot_energy_expo, init_proxy +from sedacs.system import System, build_nlist, extract_subsystem, get_hindex, build_nlist_small +from sedacs.overlap import get_overlap +from sedacs.graph import collect_graph_from_rho + +#from seqm.seqm_functions.pack import pack +import sedacs.globals +import os + + +MPI = None +try: + from mpi4py import MPI + + is_mpi_available = True +except ImportError: + is_mpi_available = False +#torch = None +import torch +try: + + from sedacs.torch import build_nlist_torch + + is_torch_available = True +except ImportError: + is_torch_available = False + +is_torch_available = False + + +__all__ = ["available_device", "init"] + + +def available_device(): + if is_torch_available: + if torch.cuda.is_available(): + print("Using CUDA") + return torch.device("cuda") + + if torch.backends.mps.is_available(): + print("Using MPS") + return torch.device("mps") + + print("Using CPU") + return torch.device("cpu") + + raise Exception("Pytorch is not available!") + + +## Getting arguments +# @brief This will get some arguments from command line. WARNING!!! This makes the code depending +# on the argparse library... +# @return args The argparse object (https://docs.python.org/3/library/argparse.html) +# +def get_args(): + parser = argparse.ArgumentParser(description="Test driver for sedacs") + parser.add_argument("--use-torch", help="Use pytorch", required=False, action="store_true") + parser.add_argument("--input-file", help="Specify input file", required=False, type=str, default="input.in") + + args = parser.parse_args() + if args.use_torch: + args.device = available_device() + + return args + + +## Initialize the driver +# @brief This will initialize all the input variables needed by the driver +# @param args The argparse object (https://docs.python.org/3/library/argparse.html) +# @return sdc SEDACS input variables. Example: sdc.threshold : Threshold vlue for the matrices. +# These variables are read from the input file. +# @return comm MPI communicator +# @return rank Current rank (= 0 if MPI is off) +# @return numranks Number of ranks (= 1 if MPI is off) +# @return sy System object (see `/mods/sdc_system.py`) +# @return hindex hindex Orbital index for each atom in the system +# @return fullGraph Initial atomic connectivity graph +# @return nl Neighbor list `nl[i,0]` = total number of neighbors. +# `nl[i,1:nl[i,0]]` = neigbors of i. Self neighbor i to i is not included explicitly. +# +def init(args): + if is_mpi_available: + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + numranks = comm.Get_size() + else: + comm = None + rank = 0 + numranks = 1 + if rank == 0: + # Initialize the code by reading the input file + sdc = Input(args.input_file, verb=True) + + # Initialize the engine (quantum chemistry code) + eng = Engine(rank) + eng.name = sdc.engine["Name"] + eng.path = sdc.engine["Path"] + eng.run = sdc.engine["Executable"] + eng.interface = sdc.engine["InterfaceType"] + + eng.method = sdc.engine.get("RhoSolverMethod", None) + eng.accel = sdc.engine.get("Accelerator", None) + + # Read the coordinates + sy = System(1) + sy.latticeVectors, sy.symbols, sy.types, sy.coords = read_coords_file(sdc.coordsFileName, lib="None", verb=True) + sy.nats = len(sy.coords[:, 0]) + sy.vels = np.zeros((sy.nats, 3)) + sy.charges = np.zeros(sy.nats) + + # Get hindex (the orbital index for each atom in the system) + sy.norbs, sy.orbs, hindex, sy.numel, sy.znuc = get_hindex(sdc.orbs, sy.symbols, sy.types) + if eng.interface == "PySEQM": sy.numel = int(sy.numel/2) + sy.numel -= sdc.charge + if sdc.UHF: + sy.nocc_alpha = sy.numel/2. + (sdc.mult-1)/2. + sy.nocc_beta = sy.numel/2. - (sdc.mult-1)/2. + if ((sy.nocc_alpha%1 != 0) or (sy.nocc_beta%1 != 0)): + raise ValueError("Invalid charge/multiplicity combination!") + else: + sy.nocc_alpha = np.int64(sy.nocc_alpha) + sy.nocc_beta = np.int64(sy.nocc_beta) + sy.nocc = np.array([sy.nocc_alpha,sy.nocc_beta], dtype=np.int64) + else: + sy.nocc = sy.numel/2 + if (sy.nocc%1 != 0): + raise ValueError("Odd number of electron in a closed shell!") + else: + sy.nocc = np.int64(sy.nocc) + + else: + sdc = None + eng = None + sy = None + hindex = None + sdc = comm.bcast(sdc, root=0) + eng = comm.bcast(eng, root=0) + sy = comm.bcast(sy, root=0) + hindex = comm.bcast(hindex, root=0) + + tic = time.perf_counter() + if(sy.nats > 100): + if args.use_torch: + nl = build_nlist_torch(sy.coords, sy.latticeVectors, sdc.rcut, rank=rank, numranks=numranks, verb=False) + else: + nl, nlTrX, nlTrY, nlTrZ = build_nlist( + sy.coords, sy.latticeVectors, sdc.rcut, api="old", rank=rank, numranks=numranks, verb=False + ) + # nl,nlTrX,nlTrY,nlTrZ = build_nlist_integer(sy.coords,sy.latticeVectors,sdc.rcut,rank=rank,numranks=numranks,verb=False) + if is_mpi_available: + comm.Barrier() + + toc = time.perf_counter() + if rank == 0: print("Time for build_nlist", toc - tic, "(s)") + if rank == 0: + with open("neighborinfo.txt", "w") as of: + for kk in range(sy.nats): + print( + "Neighs (x-coords) of {} = ".format(kk), + nl[kk, 1 : nl[kk, 0]], + "(", + sy.coords[nl[kk, 1 : nl[kk, 0]], 0], + ")", + file=of, + ) + else: + nl, nlTrX, nlTrY, nlTrZ = build_nlist_small( + sy.coords, sy.latticeVectors, sdc.rcut, rank=rank, numranks=numranks, verb=False + ) + + # Get initial graph (from a neighbor list) + if rank == 0: + print('!!!!') + if sdc.InitGraphType == "OverlapM": + print('Creating overlap matrix for initial graph.') + tic = time.perf_counter() + + sdc.overlap_whole = get_overlap(eng, sy.coords, sy.symbols, sy.types, hindex) + #torch.save(sdc.overlap_whole, 'overlap_whole.pt') + #sdc.overlap_whole = torch.load('overlap_whole.pt') + + print("Time to get overlap", time.perf_counter() - tic,"(s)") + graphOnRank = None + print('Creating initial graph.') + tic = time.perf_counter() + graphNL = collect_graph_from_rho(graphOnRank, sdc.overlap_whole, sdc.gthreshinit, sy.nats, sdc.maxDeg, [i for i in range(0,sy.nats)],hindex) + print("Time to compute graph", time.perf_counter() - tic,"(s)") + #del sdc.overlap_whole + + else: + graphNL = get_initial_graph(sy.coords, nl, sdc.rcut, sdc.maxDeg, True) + else: + graphNL = None + + #comm.Barrier() + graphNL = comm.bcast(graphNL, root=0) + fullGraph = np.zeros((sy.nats, sdc.maxDeg + 1), dtype=int) + fullGraph[:, :] = graphNL[:, :] + + #Initialize proxy/guest code + init_proxy(sy.symbols,sy.orbs) + eng.up = True + + return sdc, eng, comm, rank, numranks, sy, hindex, fullGraph, nl, nlTrX, nlTrY, nlTrZ diff --git a/src/sedacs/driver/latte_scf.py b/src/sedacs/driver/latte_scf.py new file mode 100644 index 00000000..296799fc --- /dev/null +++ b/src/sedacs/driver/latte_scf.py @@ -0,0 +1,131 @@ +"""Graph adaptive self-consistenf charge solver""" + +import time + +from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph +from sedacs.graph_partition import get_coreHaloIndices, graph_partition +from sedacs.interface_modules import call_latte_modules +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.mpi import collect_and_sum_matrices, collect_and_sum_vectors_float, collect_and_concatenate_vectors +from sedacs.system import System, extract_subsystem, get_hindex +from sedacs.coulombic import get_coulvs, get_PME_coulvs, build_coul_ham +from sedacs.charges import get_charges, collect_charges +from sedacs.evals_dvals import collect_evals, collect_dvals +from sedacs.message import status_at, error_at, warning_at +from sedacs.mixer import diis_mix, linear_mix +import numpy as np + +try: + from mpi4py import MPI + is_mpi_available = True +except ModuleNotFoundError: + is_mpi_available = False + +__all__ = ["get_occ_singlePoint", "get_adaptiveSCFDM"] + +## Single point calculation +# @brief Construct a connectivity graph based on constructing density matrices +# of parts of the system. +# +def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex): + # computing DM for core+halo part + # + partsPerRank = int(sdc.nparts / numranks) + partIndex1 = rank * partsPerRank + partIndex2 = (rank + 1) * partsPerRank + graphOnRank = None + chargesOnRank = None + evalsOnRank = None + dvalsOnRank = None + subSysOnRank = [] + + for partIndex in range(partIndex1, partIndex2): +# print("Rank, part", rank, partIndex) + numberOfCoreAtoms = len(parts[partIndex]) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + tic = time.perf_counter() + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.ncores = len(parts[partIndex]) + subSy.charges = np.zeros(len(subSy.types)) + toc = time.perf_counter() + #print("Time for extract_subsystem", toc - tic, "(s)") + partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + write_xyz_coordinates( + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + ) + tic = time.perf_counter() + + #Get some electronic structure elements for the sybsystem + #This could eventually be computed in the engine if no basis set is + #provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian + tmpArray = np.zeros(numberOfCoreAtoms) + tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] + + norbsInCore = np.sum(tmpArray) + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + #print("Number of orbitals in the core =",norbsInCore) + + subSy.latticeVectors = sy.latticeVectors + chargesInPart = call_latte_modules(eng,subSy,verb=True,newsystem=True) + chargesInPart = chargesInPart[:len(parts[partIndex])] + subSy.charges = chargesInPart + + #Save the subsystems list for returning them + subSysOnRank.append(subSy) + + print("TotalCharge in part",partIndex,sum(chargesInPart)) + print("Charges in part",chargesInPart) + + + chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) + + if (is_mpi_available and numranks > 1): + fullCharges = collect_and_sum_vectors_float(chargesOnRank, rank, numranks, comm) + comm.Barrier() + else: + fullCharges = chargesOnRank + + return fullCharges, subSysOnRank + + +def get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): + fullGraph = graphNL + + #Iitial guess for the excess ocupation vector. This is the negative of + #the charge! + charges = np.zeros(sy.nats) + chargesOld = np.zeros(sy.nats) + chargesIn = None + chargesOld = None + chargesOut = None + sdc.etemp = 1000 + + parts = graph_partition(fullGraph, sdc.partitionType, sdc.nparts, True) + njumps = 2 + partsCoreHalo = [] + numCores = [] + + #print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) + partsCoreHalo.append(coreHalo) + numCores.append(nc) + #print("core,halo size:", i, "=", nc, nh) + + symbols = np.array(sy.symbols)[sy.types] + + charges,subSysOnRank = get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex) + + print("Collected charges",charges) + + #print_graph(fullGraphRho) + + for i in range(sy.nats): + print("Charges:",i,sy.symbols[sy.types[i]],charges[i]) + print("TotalCharge",sum(charges)) + + return charges,parts,subSysOnRank diff --git a/src/sedacs/driver/old_t.py b/src/sedacs/driver/old_t.py new file mode 100644 index 00000000..48b3f38d --- /dev/null +++ b/src/sedacs/driver/old_t.py @@ -0,0 +1,922 @@ +"""Graph adaptive solver""" + +import time +import torch +print('num_threads',torch.get_num_threads()) +#torch.set_num_threads(20) + +from sedacs.density_matrix import get_density_matrix, get_initDM, get_dmErrs, get_dmTrace +from sedacs.density_matrix_renorm import get_density_matrix_renorm +from sedacs.energy import get_eElec, get_eNuc, get_eTot +from sedacs.forces import get_forces +from sedacs.molSysData import get_molSysData +from sedacs.fock import get_fock +from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates +from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph, add_mult_graphs +from sedacs.graph_partition import get_coreHaloIndices, graph_partition +from sedacs.hamiltonian import get_hamiltonian, get_force +from sedacs.mpi import collect_and_sum_matrices +from sedacs.system import System, extract_subsystem +from sedacs.evals import get_eVals +from sedacs.chemical_potential import get_mu +from sedacs.graph import get_initial_graph +from sedacs.overlap import get_overlap +from sedacs.interface_pyseqm import get_coreHalo_ham_inds, get_diag_guess_pyseqm, ParamContainer, pyseqmObjects, get_molecule_pyseqm +import itertools +import sys +import psutil +import pickle +import socket +import copy + +from seqm.seqm_functions.pack import pack + +import gc + +import numpy as np + +try: + from mpi4py import MPI + + is_mpi_available = True +except ModuleNotFoundError: + is_mpi_available = False + +is_mpi_available = False + +mpiOnDebugFlag = True + + +__all__ = ["get_singlePoint", "get_adaptiveDM"] + +## Single point calculation +# @brief Construct a connectivity graph based on constructing density matrices +# of parts of the system. +# +def get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, numranks, comm, gpu_global_comm, parts, partsCoreHalo, sy, hindex, mu0, + molecule_whole, P, P_contr, graph_for_pairs, graph_maskd): + # computing DM for core+halo part + partsPerRank = int(sdc.nparts / numranks) + # partIndex1 = rank * partsPerRank + # partIndex2 = (rank + 1) * partsPerRank + partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode #+ node_id * num_nodes + partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode #+ node_id * num_nodes + + + graphOnRank = None + dValOnRank = np.array([]) + eValOnRank = np.array([]) + eValOnRank_list = [] + Q_list = [] # Eigenvectors for each part + I_list = [] # Indices for updating the columns in total DM + I_halo_list = [] # indices of coreHalo in whole + Nocc_list = [] # Number of occupied orbitals for each part + core_indices_in_sub_expanded_list = [] # Indices of core hamiltonian in core+halo hamiltonian. Might be useful when core and halo atoms are shuffled, like in PySEQM. + NH_Nh_Hs_list = [] # list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham] + Tel = sdc.Tel + + for partIndex in range(partIndex1, partIndex2): + tic = time.perf_counter() + print("\n Rank, part", rank, partIndex) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + #partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" + #write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) + #write_xyz_coordinates("subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols) + + subSyCore = System(len(parts[partIndex])) + subSyCore.symbols = sy.symbols + subSyCore.coords,subSyCore.types = extract_subsystem(sy.coords,sy.types,sy.symbols,parts[partIndex]) + #partCoreFileName = "CoreSubSy"+str(rank)+"_"+str(partIndex)+".pdb" + #write_pdb_coordinates(partCoreFileName,subSyCore.coords,subSyCore.types,subSyCore.symbols) + #write_xyz_coordinates("CoreSubSy"+str(rank)+"_"+str(partIndex)+".xyz",subSyCore.coords,subSyCore.types,subSyCore.symbols) + + if sdc.scfDevice == 'cuda': + device = 'cuda:{}'.format(node_rank) + tmp_molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + ham = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P, P_contr.to(device), graph_for_pairs, graph_maskd, None, + verbose=False) + del tmp_molecule_whole + else: + device = 'cpu' + ham = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], molecule_whole, P, P_contr, graph_for_pairs, graph_maskd, None, + verbose=False) + print("TOT {:>8.3f} (s)".format(time.perf_counter() - tic)) + + tic = time.perf_counter() + norbs = subSy.nats + occ = int(float(norbs) / 2.0) # Get the total occupied orbitals + coreSize = len(parts[partIndex]) + eVals, dVals, Q, NH_Nh_Hs, I, I_halo, core_indices_in_sub_expanded = get_eVals(eng, sdc, sy, occ, ham, subSy.coords, subSy.symbols, subSy.types, Tel, mu0, + coreSize, subSy, subSyCore, parts[partIndex], partsCoreHalo[partIndex], + verbose=False) + + del ham + + dValOnRank = np.append(dValOnRank, dVals) + eValOnRank = np.append(eValOnRank, eVals.cpu().numpy()) + + eValOnRank_list.append(eVals.cpu()) + Q_list.append(Q.cpu()#.to(torch.float32) + ) + I_list.append(I) + I_halo_list.append(I_halo) + core_indices_in_sub_expanded_list.append(core_indices_in_sub_expanded) + NH_Nh_Hs_list.append(NH_Nh_Hs) + Nocc_list.append(occ) + + print("| t eVals/dVals {:>9.4f} (s)".format(time.perf_counter() - tic)) + + + tic = time.perf_counter() + torch.save(Q_list, 'Q/Q_list_{}.pt'.format(rank)) + print("Time to save Q_list {:>9.4f} (s)".format(time.perf_counter() - tic)) + + tic = time.perf_counter() + full_dVals = None + full_eVals = None + eValOnRank_size = np.array(len(eValOnRank), dtype=int) + eValOnRank_SIZES = None + + if mpiOnDebugFlag: + if rank == 0: + eValOnRank_SIZES = np.empty(gpu_global_comm.Get_size(), dtype=int) + + gpu_global_comm.Gather(eValOnRank_size, eValOnRank_SIZES, root=0) + if rank == 0: + full_dVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) + full_eVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) + + gpu_global_comm.Gatherv(dValOnRank, [full_dVals, eValOnRank_SIZES], root=0) + gpu_global_comm.Gatherv(eValOnRank, [full_eVals, eValOnRank_SIZES], root=0) + eVal_LIST = gpu_global_comm.gather(eValOnRank_list, root=0) + #Q_LIST = comm.gather(Q_list, root=0) + NH_Nh_Hs_LIST = gpu_global_comm.gather(NH_Nh_Hs_list, root=0) + I_LIST = gpu_global_comm.gather(I_list, root=0) + I_halo_LIST = gpu_global_comm.gather(I_halo_list, root=0) + core_indices_in_sub_expanded_LIST = gpu_global_comm.gather(core_indices_in_sub_expanded_list, root=0) + Nocc_LIST = gpu_global_comm.gather(Nocc_list, root=0) + + if rank == 0: + + Q_LIST = [] + for i in range(numranks): + Q_LIST.append(torch.load('Q/Q_list_{}.pt'.format(i))) + + # Flatten the nested list of lists into a single list of tensors + eVal_LIST = list(itertools.chain(*eVal_LIST)) + Q_LIST = list(itertools.chain(*Q_LIST)) + NH_Nh_Hs_LIST = list(itertools.chain(*NH_Nh_Hs_LIST)) + I_LIST = list(itertools.chain(*I_LIST)) + I_halo_LIST = list(itertools.chain(*I_halo_LIST)) + core_indices_in_sub_expanded_LIST = list(itertools.chain(*core_indices_in_sub_expanded_LIST)) + Nocc_LIST = list(itertools.chain(*Nocc_LIST)) + else: + Q_LIST = None + + + if node_rank == 0: print("| t commLists {:>9.4f} (s)".format(time.perf_counter() - tic), rank) + if rank == 0: + mu0 = get_mu(mu0, full_dVals, full_eVals, Tel, sy.numel/2) + + return eVal_LIST, Q_LIST, NH_Nh_Hs_LIST, I_LIST, I_halo_LIST, core_indices_in_sub_expanded_LIST, Nocc_LIST, mu0 + +def get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, P, P_contr, graph_for_pairs, graph_maskd): + # partsPerRank = int(sdc.nparts / numranks) + # partIndex1 = rank * partsPerRank + # partIndex2 = (rank + 1) * partsPerRank + partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode #+ node_id * num_nodes + partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode #+ node_id * num_nodes + + EELEC = 0.0 + for partIndex in range(partIndex1, partIndex2): + print("Rank, part", rank, partIndex) + subSy = System(len(partsCoreHalo[partIndex])) + subSy.symbols = sy.symbols + subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + + _, core_indices_in_sub_expanded, _, _, _ = \ + get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy) + + tic = time.perf_counter() + tmp_molecule_whole = copy.deepcopy(molSysData.molecule_whole) + if sdc.doForces: + tmp_molecule_whole.coordinates.requires_grad_(True) + + # get_force + # get_hamiltonian + f, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, + parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, doForces = True, + verbose=False) + del tmp_molecule_whole + # if mpiOnDebugFlag: + # comm.Allreduce(f, forces, op=MPI.SUM) + # else: + # forces += f + + forces += f + EELEC += eElec + print("EelecCH {:>7.3f} |".format(eElec.item()), end=" ") + del eElec, subSy, f + print("TOT", time.perf_counter() - tic, "(s)") + #print("eElec_SUM: {:>10.7f}".format(EELEC),) + return EELEC + +def get_singlePointDM(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, mu0, dm, P_contr, graph_for_pairs, + eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list): + + partsPerRank = int(sdc.nparts / numranks) + partIndex1 = rank * partsPerRank + partIndex2 = (rank + 1) * partsPerRank + graphOnRank = None + + Tel = sdc.Tel + maxDifList = [] + sumDifTot = 0 + P_contr_maxDifList = [] + P_contr_sumDifTot = 0 + + for partIndex in range(partIndex1,partIndex2): + #tic = time.perf_counter() + # this will calculate the DM in subsys and update the whole DM + rho_ren, maxDif, sumDif = get_density_matrix_renorm(eng, Tel, mu0, dm, P_contr, graph_for_pairs, + eValOnRank_list[partIndex], Q_list[partIndex].to(torch.float64), NH_Nh_Hs_list[partIndex], I_list[partIndex], core_indices_in_sub_expanded_list[partIndex], Nocc_list[partIndex]) + + indices_in_sub = np.linspace(0,len(partsCoreHalo[partIndex])-1, len(partsCoreHalo[partIndex]), dtype = eng.np_int_dt) + core_indices_in_sub = indices_in_sub[np.isin(partsCoreHalo[partIndex], parts[partIndex])] + + #print("t DM1 {:>8.3f} (s)".format(time.perf_counter() - tic)) + alpha = sdc.alpha + P_contr_maxDif = [] + P_contr_sumDif = 0 + + ### vectorized loop. Faster for larger cores. + max_len = graph_for_pairs[parts[partIndex][0]][0] + TMP1 = P_contr[:max_len,parts[partIndex]]#.clone() + TMP2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ + .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4).transpose(2,3).transpose(0,1)[:,core_indices_in_sub]#.clone() + P_contr_maxDif.append(torch.max(torch.abs(TMP1 - TMP2)).cpu().numpy()) + P_contr_sumDif += torch.sum(torch.abs(TMP1 - TMP2)).cpu().numpy() + P_contr[:max_len,parts[partIndex]] = (1-alpha)*TMP1 + alpha * TMP2 + + # for i in range(len(parts[partIndex])): + # tmp1 = P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] + # tmp2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ + # .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4)[core_indices_in_sub[i]].transpose(1,2) + + # P_contr_maxDif.append(torch.max(torch.abs(tmp1 - tmp2)).cpu().numpy()) + # P_contr_sumDif += torch.sum(torch.abs(tmp1 - tmp2)).cpu().numpy() + # P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] = (1-alpha)*tmp1 + alpha*tmp2 + # del tmp1, tmp2 + + rho_ren = pack(rho_ren, NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1]) + + P_contr_maxDif = max(P_contr_maxDif) + P_contr_maxDifList.append(P_contr_maxDif) + P_contr_sumDifTot += P_contr_sumDif + + maxDifList.append(maxDif) + try: + sumDifTot += sumDif + except: + sumDifTot += 0 + graphOnRank = collect_graph_from_rho(graphOnRank, rho_ren, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex], hindex, verb=False) + # graphOnRank = collect_graph_from_rho(graphOnRank, + # pack(dm[:,I_halo_list[partIndex][0], I_halo_list[partIndex][1]], NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1])[0], + # sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex], hindex, verb=False) + del rho_ren + + print('HERE_DM_1') + if eng.reconstruct_dm: + print(" MAX |\u0394DM_ij|: {:>10.7f} at SubSy {:>5d}".format(max(maxDifList), np.argmax(maxDifList))) + print(" \u03A3 |\u0394DM_ij|: {:>10.7f}".format(sumDifTot)) + + print(" MAX |\u0394DM_ij|: {:>10.7f} at SubSy {:>5d}".format(max(P_contr_maxDifList), np.argmax(P_contr_maxDifList))) + print(" \u03A3 |\u0394DM_ij|: {:>10.7f}".format(P_contr_sumDifTot)) + + + return graphOnRank + +def print_memory_usage(rank, node_rank, message): + process = psutil.Process() + mem_info = process.memory_info() + print(f"{message} | Rank: {rank}, Node Rank: {node_rank}, Memory Usage: {mem_info.rss / (1024 ** 2):.2f} MB") +def tensor_size(tensor): + return tensor.element_size() * tensor.nelement() / (1024 ** 2) +# Collect all tensors in the current environment +def get_tensors(): + for obj in gc.get_objects(): + try: + if torch.is_tensor(obj): + yield obj + except Exception as e: + pass + +def print_attribute_sizes(obj): + for attr in dir(obj): + # Skip private or callable attributes + if attr.startswith("_") or callable(getattr(obj, attr)): + continue + attribute = getattr(obj, attr) + size_bytes = attribute.nbytes if isinstance(attribute, np.ndarray) else attribute.element_size() * attribute.nelement() if isinstance(attribute, torch.Tensor) else sys.getsizeof(attribute) + size_mb = size_bytes / (1024 ** 2) # Convert bytes to MB + print(f"{attr}: {size_mb:.2f} MB") + +class MyClass: + def __init__(self, data): + self.data = data + + def __repr__(self): + return f"MyClass(data={self.data})" + + +def get_adaptiveDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): + t_INIT = time.perf_counter() + tic = time.perf_counter() + eng.use_pyseqm_lt = False + sdc.use_pyseqm_lt = eng.use_pyseqm_lt + + eng.reconstruct_dm = False + sdc.reconstruct_dm = eng.reconstruct_dm + + node_comm = comm.Split_type(MPI.COMM_TYPE_SHARED) # local communicator on a node + node_rank = node_comm.Get_rank() # Rank within the node + node_numranks = node_comm.Get_size() + + node_name = socket.gethostname() + node_names = comm.allgather(node_name) + + unique_nodes = list(set(node_names)) + num_nodes = len(unique_nodes) # Total number of unique nodes + node_id = int(rank/node_numranks) + + primary_rank = None + if node_rank == 0: + primary_rank = rank # Global rank of the primary rank on each node + + # Gather the primary ranks from each node + primary_ranks = comm.allgather(primary_rank) + primary_ranks = [r for r in primary_ranks if r is not None] # Filter out None values + + color = 0 if rank in primary_ranks else MPI.UNDEFINED + primary_comm = comm.Split(color=color, key=rank) + + device = 'cpu' + + if sdc.fDevice == 'cuda' and sdc.numGPU == -1: + num_gpus = torch.cuda.device_count() + elif sdc.fDevice == 'cuda': + num_gpus = sdc.numGPU + else: + num_gpus = node_numranks + + if num_gpus > node_numranks: + num_gpus = node_numranks + + color = 0 if node_rank < num_gpus else MPI.UNDEFINED + gpu_comm = comm.Split(color=color, key=rank) # comm for local GPUs. Identical to node_comm if running on CPU. + partsPerGPU = int(sdc.nparts / (num_gpus*num_nodes)) # assume all nodes have same number of GPUs + partsPerNode = int(sdc.nparts / num_nodes) + + color = 0 if node_rank < num_gpus else MPI.UNDEFINED + gpu_global_comm = comm.Split(color=color, key=rank) # global communicator for ranks with GPU. Identical to comm if running on CPU. + #gpu_global_rank = gpu_global_comm.Get_rank() # Rank within the node + #gpu_global_numranks = gpu_global_comm.Get_size() + + #print('gpu_global_rank', gpu_global_rank, gpu_global_numranks) + + + + if torch.get_default_dtype() == torch.float32: + eng.torch_dt = torch.float32 + sdc.torch_dt = eng.torch_dt + + eng.torch_int_dt = torch.int32 + sdc.torch_int_dt = eng.torch_int_dt + + eng.np_dt = np.float32 + sdc.np_dt = eng.np_dt + + eng.np_int_dt = np.int32 + sdc.np_int_dt = eng.np_int_dt + else: + eng.torch_dt = torch.float64 + sdc.torch_dt = eng.torch_dt + + eng.torch_int_dt = torch.int64 + sdc.torch_int_dt = eng.torch_int_dt + + eng.np_dt = np.float64 + sdc.np_dt = eng.np_dt + + eng.np_int_dt = np.int64 + sdc.np_int_dt = eng.np_int_dt + + njumps = sdc.numJumps + + tic = time.perf_counter() + fullGraph = graphNL.copy() + + with torch.no_grad(): + molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] + + #print_attribute_sizes(molSysData.molecule_whole) + if rank == 0: print("Time to init molSysData {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + if node_rank == 0: + tic = time.perf_counter() + print('Computing cores.') + parts = graph_partition(eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, sdc.verb) + print("Time to compute cores {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + print('Loading the molecule and parameters.') + if eng.reconstruct_dm: + dm = get_initDM(eng, sdc, sy.coords, sy.symbols, sy.types, molecule_whole)#.share_memory_() + dm_size = dm.size() + nbytes = dm.numel() * dm.element_size() + + partsCoreHalo = [] + if rank == 0: + print('\n\n|||| Adaptive iter:', 0, '||||') + print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, njumps, sdc, sy) + partsCoreHalo.append(coreHalo) + if sdc.verb: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo)), '\n') + print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + new_graph_for_pairs = np.array(fullGraph.copy()) + for i in range(sy.nats): + for sublist_idx in range(sdc.nparts): + if i in parts[sublist_idx]: + new_graph_for_pairs[i, 0] = len(partsCoreHalo[sublist_idx]) + new_graph_for_pairs[i, 1:new_graph_for_pairs[i][0]+1] = partsCoreHalo[sublist_idx] + break + + graph_for_pairs = new_graph_for_pairs + graph_maskd = [] + counter = 0 + for j in range(sy.nats): + for i in graph_for_pairs[j][1:graph_for_pairs[j][0]+1]: + if i==j: + graph_maskd.append(counter) + counter +=1 + counter += int(sdc.maxDeg - graph_for_pairs[j][0]) + print("Time to init mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + P_contr = torch.zeros(sy.nats*sdc.maxDeg,4,4, dtype=eng.torch_dt, device=device) # density matrix + P_contr[graph_maskd] = get_diag_guess_pyseqm(molecule_whole, sy) + P_contr = P_contr.reshape(sy.nats, sdc.maxDeg, 4,4).transpose(0,1) + graph_maskd = np.array(graph_maskd) + P_contr_size = P_contr.size() + P_contr_nbytes = P_contr.numel() * P_contr.element_size() + + print("Time to init DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + # graphNL = collect_graph_from_rho(None, sdc.overlap_whole, sdc.gthreshinit, sy.nats, sdc.maxDeg, [i for i in range(0,sy.nats)],hindex) + del graphNL + else: + parts = None + sdc.nparts = None + if eng.reconstruct_dm: + dm = None + dm_size = None + nbytes = 0 + + fullGraph = None + coreHalo = None + partsCoreHalo = None + + new_graph_for_pairs = None + graph_for_pairs = None + graph_maskd = None + + P_contr = None + P_contr_size = None + P_contr_nbytes = 0 + + if mpiOnDebugFlag: + tic = time.perf_counter() + parts = node_comm.bcast(parts, root=0) + sdc.nparts = node_comm.bcast(sdc.nparts, root=0) + if rank == 0: print("BCST1 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + + tic = time.perf_counter() + if eng.reconstruct_dm: + dm_size = comm.bcast(dm_size, root=0) + win = MPI.Win.Allocate_shared(nbytes, torch.tensor(0, dtype=eng.torch_dt).element_size(), comm=comm) # 8 is the size of torch.float64 + buf, itemsize = win.Shared_query(0) + #assert itemsize == MPI.DOUBLE.Get_size() + ary = np.ndarray(buffer=buf, dtype=eng.np_dt, shape=(dm_size)) + if rank == 0: + ary[:] = dm.numpy() + del dm + dm = torch.from_numpy(ary) + print(ary.shape) + print(dm.shape) + + P_contr_size = node_comm.bcast(P_contr_size, root=0) + P_contr_win = MPI.Win.Allocate_shared(P_contr_nbytes, torch.tensor(0, dtype=eng.torch_dt).element_size(), comm=node_comm) # 8 is the size of torch.float64 + P_contr_buf, P_contr_itemsize = P_contr_win.Shared_query(0) + #assert P_contr_itemsize == MPI.DOUBLE.Get_size() + P_contr_ary = np.ndarray(buffer=P_contr_buf, dtype=eng.np_dt, shape=(P_contr_size)) + if node_rank == 0: + P_contr_ary[:] = P_contr.cpu().numpy() + comm.Barrier() + + del P_contr + P_contr = torch.from_numpy(P_contr_ary).to(device) + if rank == 0: print("BCST2 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + tic = time.perf_counter() + fullGraph = node_comm.bcast(fullGraph, root=0) + coreHalo = node_comm.bcast(coreHalo, root=0) + partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) + #new_graph_for_pairs = node_comm.bcast(new_graph_for_pairs, root=0) + graph_maskd = node_comm.bcast(graph_maskd, root=0) + graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) + if rank == 0: print("BCST3 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + print("Time to init bcast and share DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + if rank == 0: + print("Time INIT {:>7.2f} (s)".format(time.perf_counter() - t_INIT)) + + + dmOld = None + mu0 = -5.5 + for gsc in range(sdc.numAdaptIter): + if rank == 0: print('\n\n|||| Adaptive iter:', gsc, '||||') + #print_memory_usage(rank, node_rank, "Memory usage") + TIC_iter = time.perf_counter() + tic = time.perf_counter() + if node_rank == 0: + primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) + if rank == 0:print("Time to bcast DM_cpu_np {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + # Partition the graph + tic = time.perf_counter() + if gsc > 0: + + if node_rank == 0: + tic = time.perf_counter() + partsCoreHalo = [] + if rank == 0:print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, njumps, sdc, sy) + partsCoreHalo.append(coreHalo) + if sdc.verb and rank == 0: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo)), '\n') + + if rank == 0: print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic)) + + tic = time.perf_counter() + new_graph_for_pairs = np.array(fullGraph.copy()) + for i in range(sy.nats): + for sublist_idx in range(sdc.nparts): + if i in parts[sublist_idx]: + new_graph_for_pairs[i, 0] = len(partsCoreHalo[sublist_idx]) + new_graph_for_pairs[i, 1:new_graph_for_pairs[i][0]+1] = partsCoreHalo[sublist_idx] + break + + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + #### THIS IS BAD. NEEDS TO BE FIXEd $$$ + P_contr_new = torch.zeros_like(P_contr, device=device) + for i in range(sy.nats): + tmp1 = graph_for_pairs[i][1:graph_for_pairs[i][0]+1] + tmp2 = new_graph_for_pairs[i][1:new_graph_for_pairs[i][0]+1] + pos = np.searchsorted(tmp1, tmp2) + # Ensure the indices are within bounds + pos = np.clip(pos, a_min=0, a_max=len(tmp1) - 1) + # Check if the positions are valid and match + mask_isin_n_in_o = (pos < len(tmp1)) & (tmp1[pos] == tmp2) + #print('isin',(np.isin(tmp2, tmp1) == mask_isin_n_in_o).all()) + + pos = np.searchsorted(tmp2, tmp1) + # Ensure the indices are within bounds + #pos = np.clip(pos, max=len(tmp2) - 1) + # Check if the positions are valid and match + mask_isin_o_in_n = (pos < len(tmp2)) & (tmp2[pos] == tmp1) + #print('PC', (np.isin(tmp1, tmp2) == mask_isin_o_in_n).all()) + + P_contr_new[:,i][ :new_graph_for_pairs[i][0] ][ mask_isin_n_in_o ] = \ + P_contr[:,i][:graph_for_pairs[i][0]][ mask_isin_o_in_n ] + P_contr[:] = P_contr_new[:] + del P_contr_new + + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + tic = time.perf_counter() + graph_for_pairs = new_graph_for_pairs + # Initialize an array to hold graph_maskd values + graph_maskd = [] + # Track the position counter across rows in a vectorized way + counter = 0 + for j in range(sy.nats): + # Get neighbors for node j from graph_for_pairs + neighbors = graph_for_pairs[j][1:graph_for_pairs[j][0] + 1] + # Find positions where `i == j` (self-loops) in the neighbors list + mask = np.where(neighbors == j)[0] + # Calculate the absolute position for masked values and store them + graph_maskd.extend(counter + mask) + # Update the counter for the next row, adding the degree difference + counter += len(neighbors) + int(sdc.maxDeg - graph_for_pairs[j][0]) + # Convert graph_maskd to a NumPy array + graph_maskd = np.array(graph_maskd) + + if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + else: + coreHalo = None + partsCoreHalo = None + graph_for_pairs = None + #new_graph_for_pairs = None + graph_maskd = None + + tic = time.perf_counter() + if mpiOnDebugFlag: + coreHalo = node_comm.bcast(coreHalo, root=0) + partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) + graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) + #new_graph_for_pairs = node_comm.bcast(new_graph_for_pairs, root=0) + graph_maskd = node_comm.bcast(graph_maskd, root=0) + if node_rank == 0: print("Time to bcast DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) + + + tic = time.perf_counter() + # for efficiency, the PySEQM dm needs to be reshaped in 4x4 blocks. + if eng.interface == "PySEQM": + with torch.no_grad(): + if eng.reconstruct_dm: + eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ + get_singlePoint(sdc, eng, rank, node_rank, numranks, comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, + dm.reshape((molecule_whole.nmol, molecule_whole.molsize,4, molecule_whole.molsize,4)) \ + .transpose(2,3).reshape(molecule_whole.nmol*molecule_whole.molsize*molecule_whole.molsize,4,4), P_contr, graph_for_pairs, graph_maskd) + else: + if node_rank < num_gpus: + eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ + get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, numranks, comm, gpu_global_comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, + None, P_contr, graph_for_pairs, graph_maskd) + else: + eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = None, None, None, None, None, None, None, None + + if mpiOnDebugFlag: comm.Barrier() + else: + eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ + get_singlePoint(sdc, eng, rank, node_rank, numranks, comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, dm) + + + if rank == 0: print("Time to get_singlePoint {:>7.2f} (s)".format(time.perf_counter() - tic)) + + if sdc.restartLoad: + sdc.restartLoad = False + if node_rank == 0: + P_contr[:] = torch.load('P_contr.pt') + with open('parts.pkl','rb') as f: + parts = pickle.load(f) + with open('partsCoreHalo.pkl','rb') as f: + partsCoreHalo = pickle.load(f) + with open('fullGraph.pkl','rb') as f: + fullGraph = pickle.load(f) + mu0 = np.load('mu0.npy') + graph_for_pairs = np.load('graph_for_pairs.npy') + graph_maskd = np.load('graph_maskd.npy') + if rank == 0: + eValOnRank_list = torch.load('eValOnRank_list.pt') + Q_list = torch.load('Q_list.pt') + NH_Nh_Hs_list = torch.load('NH_Nh_Hs_list.pt') + I_list = torch.load('I_list.pt') + I_halo_list = torch.load('I_halo_list.pt') + core_indices_in_sub_expanded_list = torch.load('core_indices_in_sub_expanded_list.pt') + Nocc_list = torch.load('Nocc_list.pt') + + + if rank == 0 and sdc.restartSave: + torch.save(eValOnRank_list, 'eValOnRank_list.pt') + torch.save(Q_list, 'Q_list.pt') + torch.save(NH_Nh_Hs_list, 'NH_Nh_Hs_list.pt') + torch.save(I_list, 'I_list.pt') + torch.save(I_halo_list, 'I_halo_list.pt') + torch.save(core_indices_in_sub_expanded_list, 'core_indices_in_sub_expanded_list.pt') + torch.save(Nocc_list, 'Nocc_list.pt') + torch.save(P_contr, 'P_contr.pt') + with open('parts.pkl', 'wb') as f: + pickle.dump(parts, f) + with open('partsCoreHalo.pkl', 'wb') as f: + pickle.dump(partsCoreHalo, f) + with open('fullGraph.pkl', 'wb') as f: + pickle.dump(fullGraph, f) + np.save('mu0', mu0) + np.save('graph_for_pairs', graph_for_pairs) + np.save('graph_maskd', graph_maskd) + + + #if rank == 0: + if rank < node_numranks: + tic = time.perf_counter() + eValOnRank_list = node_comm.bcast(eValOnRank_list, root=0) + Q_list = node_comm.bcast(Q_list, root=0) + NH_Nh_Hs_list = node_comm.bcast(NH_Nh_Hs_list, root=0) + I_list = node_comm.bcast(I_list, root=0) + I_halo_list = node_comm.bcast(I_halo_list, root=0) + core_indices_in_sub_expanded_list = node_comm.bcast(core_indices_in_sub_expanded_list, root=0) + Nocc_list = node_comm.bcast(Nocc_list, root=0) + mu0 = node_comm.bcast(mu0, root=0) + + + + + + with torch.no_grad(): + if eng.reconstruct_dm: + fullGraphRho = get_singlePointDM(sdc, eng, rank, 1, comm, parts, partsCoreHalo, sy, hindex, mu0, dm, P_contr, graph_for_pairs, + eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list) + else: + fullGraphRho = get_singlePointDM(sdc, eng, rank, node_numranks, node_comm, parts, partsCoreHalo, sy, hindex, mu0, None, P_contr, graph_for_pairs, + eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list) + + + ########### GATHER fullGraphRho ########### + + #np.save( 'graphs/fullGraphRho_{}'.format(rank), fullGraphRho,) + + if rank == 0: print("Time to updt DM {:>7.2f} (s)".format(time.perf_counter() - tic)) + + node_comm.Barrier() + + tic = time.perf_counter() + fullGraphRho_LIST = node_comm.gather(fullGraphRho, root=0) + if rank == 0: + + # fullGraphRho_LIST = [] + # for i in range(node_numranks): + # fullGraphRho_LIST.append(np.load('graphs/fullGraphRho_{}.npy'.format(i))) + + fullGraphRho_LIST.append(fullGraph) + fullGraph = add_mult_graphs(fullGraphRho_LIST) + print("Time to add graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) + #fullGraph = add_graphs(fullGraph, fullGraphRho, ) + del fullGraphRho + + + if eng.reconstruct_dm: + trace = get_dmTrace(eng, dm) + print("DM TRACE: {:>10.7f}".format(trace)) + if rank == 0: + tic = time.perf_counter() + trace = torch.sum(P_contr.transpose(0,1).reshape(molecule_whole.molsize*(len(graph_for_pairs[0])-1), 4,4)[graph_maskd].diagonal(dim1=-2, dim2=-1)) + print("DM TRACE: {:>10.7f}".format(trace)) + print("Time to get trace {:>7.2f} (s)".format(time.perf_counter() - tic)) + + else: + fullGraph = None + + if mpiOnDebugFlag: + tic = time.perf_counter() + #comm.Barrier() + fullGraph = comm.bcast(fullGraph, root=0) + if rank == 0: print("Time to bcast fullGraph {:>7.2f} (s)".format(time.perf_counter() - tic)) + + del eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, Nocc_list + torch.cuda.empty_cache() + + # Function to calculate tensor size in megabytes (MB) + # if rank == 0: + # # Sort tensors by size and print them + # tensors = list(get_tensors()) + # tensors.sort(key=lambda x: tensor_size(x), reverse=True) + # print("Top memory-consuming tensors:") + # for tensor in tensors: + # if tensor_size(tensor) > 0.1: + # print(f"Tensor size: {tensor_size(tensor):.2f} MB | Shape: {tensor.shape} | Dtype: {tensor.dtype}") + + if rank == 0: print("t Iter {:>8.2f} (s)".format(time.perf_counter() - TIC_iter)) + + ### forces calculation ### + tic = time.perf_counter() + if node_rank < num_gpus: + if node_rank == 0: + primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) + forces = np.zeros((sy.coords.shape)) + partsCoreHalo = [] + if rank == 0: print("\nCore and halos indices for every part:") + for i in range(sdc.nparts): + coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, njumps, sdc, sy) + partsCoreHalo.append(coreHalo) + if sdc.verb: print("coreHalo for part", i, "=", coreHalo) + if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo)), '\n') + + new_graph_for_pairs = np.array(fullGraph.copy()) + for i in range(sy.nats): + for sublist_idx in range(sdc.nparts): + if i in parts[sublist_idx]: + new_graph_for_pairs[i, 0] = len(partsCoreHalo[sublist_idx]) + new_graph_for_pairs[i, 1:new_graph_for_pairs[i][0]+1] = partsCoreHalo[sublist_idx] + break + + #### THIS IS BAD. NEEDS TO BE FIXEd $$$ + P_contr_new = torch.zeros_like(P_contr, device=device) + for i in range(len(new_graph_for_pairs)): + P_contr_new[:,i][ :new_graph_for_pairs[i][0] ][ np.isin(new_graph_for_pairs[i][1:new_graph_for_pairs[i][0]+1], graph_for_pairs[i][1:graph_for_pairs[i][0]+1]) ] = \ + P_contr[:,i][:graph_for_pairs[i][0]][ np.isin(graph_for_pairs[i][1:graph_for_pairs[i][0]+1], new_graph_for_pairs[i][1:new_graph_for_pairs[i][0]+1]) ] + P_contr[:] = P_contr_new[:] + del P_contr_new + + graph_for_pairs = new_graph_for_pairs + graph_maskd = [] + counter = 0 + for j in range(len(graph_for_pairs)): + sub_counter = 0 + for i in graph_for_pairs[j][1:graph_for_pairs[j][0]+1]: + if i==j: + graph_maskd.append(counter) + counter +=1 + sub_counter += 1 + counter += int(sdc.maxDeg - graph_for_pairs[j][0]) + else: + forces = None + partsCoreHalo = None + new_graph_for_pairs = None + graph_for_pairs = None + graph_maskd = None + + if sdc.fDevice == 'cuda': + device = 'cuda:{}'.format(node_rank) + else: + device = 'cpu' + + molSysData = pyseqmObjects(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device) #object with whatever initial parameters and tensors + #molSysData.molecule_whole.coordinates.requires_grad_(True) + + if mpiOnDebugFlag: + forces = gpu_comm.bcast(forces, root=0) + print('HERE1') + partsCoreHalo = gpu_comm.bcast(partsCoreHalo, root=0) + gpu_comm.Barrier() + graph_for_pairs = gpu_comm.bcast(graph_for_pairs, root=0) + new_graph_for_pairs = gpu_comm.bcast(new_graph_for_pairs, root=0) + graph_maskd = gpu_comm.bcast(graph_maskd, root=0) + + if rank == 0: + forces[:] = .0 + gpu_comm.Barrier() + else: + forces = np.zeros((sy.coords.shape)) + + if rank == 0: print("Time init forces {:>8.2f} (s)".format(time.perf_counter() - tic)) + + tic = time.perf_counter() + if eng.interface == "PySEQM": + if eng.reconstruct_dm: + eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, + dm.reshape((molSysData.molecule_whole.nmol, molSysData.molecule_whole.molsize,4, molSysData.molecule_whole.molsize,4)) \ + .transpose(2,3).reshape(molSysData.molecule_whole.nmol*molSysData.molecule_whole.molsize*molSysData.molecule_whole.molsize,4,4),P_contr, graph_for_pairs, graph_maskd) + else: + if sdc.doForces: + eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, num_gpus, gpu_comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, + None, P_contr.to(device), graph_for_pairs, graph_maskd) + else: + with torch.no_grad(): + eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, num_gpus, gpu_comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, + None, P_contr.to(device), graph_for_pairs, graph_maskd) + + if mpiOnDebugFlag: + global_Eelec = np.zeros(1, dtype=np.float64) + gpu_comm.Barrier() + gpu_comm.Allreduce(MPI.IN_PLACE, forces, op=MPI.SUM) + #eElec_LIST = gpu_comm.gather(eElec, root=0) + #comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) + gpu_comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) #primary_comm + else: + eElec_LIST = eElec + else: + get_singlePointForces(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, dm) + if rank == 0: print("Time to get electron forces {:>8.2f} (s)".format(time.perf_counter() - tic)) + + if rank == 0: + del molSysData + molSysData = pyseqmObjects(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = True, device=device) #object with whatever initial parameters and tensors + + if mpiOnDebugFlag: + print("eElec: {:>10.12f}".format(global_Eelec[0]),) + else: + print("eElec: {:>10.12f}".format(eElec[0]),) + + tic = time.perf_counter() + eNucAB = get_eNuc(eng, molSysData) + eTot, eNuc = get_eTot(eng, molSysData, eNucAB, 0) + print("Enuc: {:>10.12f}".format(eNuc),) + L = eNuc.sum() + L.backward() + forceNuc = -molSysData.molecule_whole.coordinates.grad.detach() + molSysData.molecule_whole.coordinates.grad.zero_() + print("Time to get nuclear forces {:>8.2f} (s)".format(time.perf_counter() - tic)) + #print(forceNuc) + np.save('forces_test.np', (forces+forceNuc.cpu().numpy()[0]), ) + #np.save('forces_test.np', (forces), ) diff --git a/src/sedacs/energy.py b/src/sedacs/energy.py new file mode 100644 index 00000000..1d46b4dc --- /dev/null +++ b/src/sedacs/energy.py @@ -0,0 +1,70 @@ +from sedacs.interface_pyseqm import get_nucAB_energy_pyseqm, get_total_energy_pyseqm +import torch + +__all__ = ["get_fock"] + + +def get_eNuc(eng, obj): + if eng.interface == "None": + print("ERROR!!! - Write your own Fock") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + print("ERROR!!! - Write your own Fock") + exit() + elif eng.interface == "PySEQM": + alpha = obj.molecule_whole.parameters['alpha'] + K = torch.stack(( obj.molecule_whole.parameters['Gaussian1_K'], + obj.molecule_whole.parameters['Gaussian2_K'], + obj.molecule_whole.parameters['Gaussian3_K'], + obj.molecule_whole.parameters['Gaussian4_K']),dim=1) + + L = torch.stack(( obj.molecule_whole.parameters['Gaussian1_L'], + obj.molecule_whole.parameters['Gaussian2_L'], + obj.molecule_whole.parameters['Gaussian3_L'], + obj.molecule_whole.parameters['Gaussian4_L']),dim=1) + + M = torch.stack(( obj.molecule_whole.parameters['Gaussian1_M'], + obj.molecule_whole.parameters['Gaussian2_M'], + obj.molecule_whole.parameters['Gaussian3_M'], + obj.molecule_whole.parameters['Gaussian4_M']),dim=1) + parnuc = (alpha, K, L, M) + ev = 27.21 + if 'g_ss_nuc' in obj.molecule_whole.parameters: + g = obj.molecule_whole.parameters['g_ss_nuc'] + rho0a = 0.5 * ev / g[obj.molecule_whole.idxi] + rho0b = 0.5 * ev / g[obj.molecule_whole.idxj] + gam = ev / torch.sqrt(obj.molecule_whole.rij**2 + (rho0a + rho0b)**2) + else: + #print('w',obj.w_whole[...,0,0].shape) + #gam = obj.w_whole[...,0,0] + gam = obj.w_ssss + return get_nucAB_energy_pyseqm(obj.molecule_whole.Z, obj.molecule_whole.const, obj.molecule_whole.nmol, obj.molecule_whole.ni, obj.molecule_whole.nj, + obj.molecule_whole.idxi, obj.molecule_whole.idxj, obj.molecule_whole.rij, \ + obj.rho0xi_whole, obj.rho0xj_whole, obj.molecule_whole.alp, obj.molecule_whole.chi, + gam, obj.molecule_whole.method, parnuc) + + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + exit() + return rho + +def get_eTot(eng, obj, eNucAB, eElec): + if eng.interface == "None": + print("ERROR!!! - Write your own Fock") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + print("ERROR!!! - Write your own Fock") + exit() + elif eng.interface == "PySEQM": + eTot, eNuc = get_total_energy_pyseqm(obj.molecule_whole.nmol, obj.molecule_whole.pair_molid, eNucAB, eElec) + return eTot[0], eNuc[0] + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + exit() + return rho + + diff --git a/src/sedacs/energy_forces.py b/src/sedacs/energy_forces.py new file mode 100644 index 00000000..506c9404 --- /dev/null +++ b/src/sedacs/energy_forces.py @@ -0,0 +1,48 @@ +"""Energy and forces +Some functions to compute energy and forces + +So far: Initital "collect_forces" +for nonorthogonal TB" +""" + +import numpy as np +from sedacs.message import * + +__all__ = ["collect_energy","collect_forces"] + + +## Collect energy at the current rank +# @param energyOnRank Energy on every rank. +# @param energy Energy to be collected. +# +def collect_energy(energyOnRank,energy,verb=False): + if(verb): + status_at("collect_energy","Collecting energy") + + if(energyOnRank is None): + energyOnRank = np.zeros((1)) + + energyOnRank[0] += energy + + return energyOnRank + + +## Collect forces at the current rank +# @param forcesOnRank Full force matrix on every rank. +# @param forces Forces to be collected. +# @param part list of atom indices in the part. +# @param nats Number of total atoms on the rank +# +def collect_forces(forcesOnRank,forces,part,nats,verb=False): + if(verb): + status_at("collect_forces","Collecting forces") + + if(forcesOnRank is None): + forcesOnRank = np.zeros((nats, 3)) + + for i in range(len(part)): + forcesOnRank[part[i]] = forces[i] + + return forcesOnRank + + diff --git a/src/sedacs/engine.py b/src/sedacs/engine.py new file mode 100644 index 00000000..ca16bef2 --- /dev/null +++ b/src/sedacs/engine.py @@ -0,0 +1,37 @@ +"""engine +This module will be used to store information about the code +we will be interfacing to. + +""" + +__all__ = ["Engine"] + + +## Engine type +# @brief This will contain the information that sedacs needs +# in order to use an external quantum chemistry code. +# +class Engine: + """A prototype for the engine type.""" + + def __init__(self, idIn): + ## Name of the engine + self.name = "ProxyA" + ## Interface type + self.interface = "None" + ## Engine path files. Used to interchange data + self.path = "/tmp/engine" + ## Engine ID. A number to identify which MPI rank is the engine executed from. + self.id = idIn + ## Engine execution file absolute path + self.run = "/home/engine/engine.py" + ## Engine status. A logical variable to check the status of the engine. + self.up = False + ## Method or specific density matrix solver + self.method = "Diag" + ## Accelerator (library or specific computer architecture) + self.accel = "No" + + + + diff --git a/src/sedacs/evals.py b/src/sedacs/evals.py new file mode 100644 index 00000000..32056dc9 --- /dev/null +++ b/src/sedacs/evals.py @@ -0,0 +1,68 @@ +"""eVals dVals +Routines to build eVals and dVals. Typically +this will be done interfacing with an engine. + +""" + +import sys + +from sedacs.interface_modules import get_density_matrix_modules +from sedacs.interface_pyseqm import get_molecule_pyseqm, get_coreHalo_ham_inds, get_eVals_pyseqm +import numpy as np +import torch + +__all__ = ["get_eVals"] + + +## Build the density matrix. +# @brief This will build a density matrix. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param nocc Number of occupied states +# @param ham Hamiltonian matrix +# @verbose Verbosity +# +def get_eVals(eng, sdc, sy, ham, coords, symbols, types, Tel, mu0, + core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub, + coreSize, subSy, subSyCore, + partIndex, partCoreHaloIndex, verbose): + if eng.interface == "None": + print("ERROR!!! - Write your own Hamiltonian") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + print('TBD') + exit() + elif eng.interface == "PySEQM": + symbols_internal = np.array([ "Bl" , + "H" , "He", + "Li", "Be", "B" , "C" , "N" , "O" , "F" , "Ne", \ + "Na", "Mg", "Al", "Si", "P" , "S" , "Cl", "Ar", + ], dtype=str) + numel_internal = np.zeros(len(symbols_internal),dtype=int) + numel_internal[:] = 0, \ + 1 , 2, \ + 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, \ + 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, + + bas_per_atom = np.zeros(len(symbols_internal),dtype=int) + bas_per_atom[:] = 0, \ + 1 , 1 ,\ + 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ + 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ + + molecule_sub, occ = get_molecule_pyseqm(sdc, coords, symbols, types, do_large_tensors=False) + + core_ham_dim_list = [torch.arange(s, e) for s, e in zip(hindex_sub[core_indices_in_sub], hindex_sub[core_indices_in_sub + 1])] + core_indices_in_sub_expanded_packed = torch.cat(core_ham_dim_list).to(ham.device) + + # the difference between core_indices_in_sub_expanded and core_indices_in_sub_expanded_packed is that + # core_indices_in_sub_expanded is core indices of core+halo hamiltonian in 4x4 blocks form (pyseqm format) + # core_indices_in_sub_expanded_packed is core indices of core+halo hamiltonian in normal form corresponding to the number of AOs per atom. We need this one for parsing eigenvectors. + + eVals, dVals, Q = get_eVals_pyseqm(sdc, ham, occ, core_indices_in_sub_expanded_packed, molecule=molecule_sub, verb=False) + # We will call proxyA directly as it will be loaded as a module. + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + exit() + return eVals, dVals, Q, [molecule_sub.nHeavy, molecule_sub.nHydro, ham.shape[-1], molecule_sub.nocc] diff --git a/src/sedacs/evals_dvals.py b/src/sedacs/evals_dvals.py new file mode 100644 index 00000000..93808cff --- /dev/null +++ b/src/sedacs/evals_dvals.py @@ -0,0 +1,71 @@ +""" +evals_dvals.py +==================================== +Some functions to compute evals and dvals + +So far: Initital "collect_evals" and "collect_dvals" +for nonorthogonal TB +""" + +import numpy as np +from sedacs.message import * + +__all__ = ["collect_evals", "collect_dvals"] + + +def collect_evals(evalsOnRank, evals, verb=False): + """ + The function will collect eigenvalues (evals) from each core+halo part at the current rank. + + Paremeters + ---------- + evalsOnRank : numpy 1D array + A 1D numpy array containing the eigenvalues at the current rank. + evals : numpy 1D array + A 1D numpy array containing the eigenvalues to be collected from each core+halo part. + verb : bool, optional + If set to True information is printed. + + Returns + ------- + evalsOnRank : numpy 1D array + A 1D numpy array containing the eigenvalues at the current rank. + """ + if verb: + status_at("collect_evals", "Collecting evals") + + if evalsOnRank is None: + evalsOnRank = evals + else: + evalsOnRank = np.append(evalsOnRank, evals) + + return evalsOnRank + + +def collect_dvals(dvalsOnRank, dvals, verb=False): + """ + The function will collect the contributions (dvals) from each core+halo part to the eigenvectors of the full system at the current rank. + + Paremeters + ---------- + dvalsOnRank : numpy 1D array + A 1D numpy array containing the dvals at the current rank. + dvals : numpy 1D array + A 1D numpy array containing the dvals to be collected from each core+halo part. + verb : bool, optional + If set to True information is printed. + + Returns + ------- + dvalsOnRank : numpy 1D array + A 1D numpy array containing the dvals at the current rank. + """ + if verb: + status_at("collect_dvals", "Collecting dvals") + + if dvalsOnRank is None: + dvalsOnRank = dvals + else: + dvalsOnRank = np.append(dvalsOnRank, dvals) + + return dvalsOnRank diff --git a/src/sedacs/ewald/PME_torch.py b/src/sedacs/ewald/PME_torch.py index 4c8e13b8..9eb8942e 100644 --- a/src/sedacs/ewald/PME_torch.py +++ b/src/sedacs/ewald/PME_torch.py @@ -1,6 +1,6 @@ import torch import math -from sedacs.ewald import ewald_real, CONV_FACTOR, ewald_self_energy +from sedacs.ewald import ewald_real, CONV_FACTOR, ewald_self_energy, ewald_real_screening from typing import Optional, Tuple, List, Union def b(m, order=4): @@ -141,8 +141,11 @@ def calculate_PME_ewald( alpha: float, cutoff: float, PME_init_data: Tuple[Union[List, Tuple], torch.Tensor, torch.Tensor, int], - calculate_forces: int, - calculate_dq: int = 0 + hubbard_u: torch.Tensor = None, + atomtypes: torch.Tensor = None, + calculate_forces: int = 0, + calculate_dq: int = 0, + screening: int = 0 ) -> Tuple[float, Optional[torch.Tensor], Optional[torch.Tensor]]: """ Computes the total Ewald sum energy using Particle Mesh Ewald (PME). @@ -191,10 +194,20 @@ def calculate_PME_ewald( dq = None forces = None - my_e_real, my_f_real, my_dq_real = ewald_real(nbr_inds, nbr_disp_vecs, - nbr_dists, charges, alpha, - cutoff, - calculate_forces, calculate_dq) + if screening: + my_e_real, my_f_real, my_dq_real = ewald_real_screening(nbr_inds, nbr_disp_vecs, + nbr_dists, charges, hubbard_u, atomtypes, alpha, + cutoff, + calculate_forces, calculate_dq) + + if my_f_real is not None and my_f_real.device.type == 'cuda': + my_f_real = my_f_real.T.contiguous() + + else: + my_e_real, my_f_real, my_dq_real = ewald_real(nbr_inds, nbr_disp_vecs, + nbr_dists, charges, alpha, + cutoff, + calculate_forces, calculate_dq) if calculate_dq: charges.grad = None charges.requires_grad = True diff --git a/src/sedacs/ewald/__init__.py b/src/sedacs/ewald/__init__.py index 43ae6ef9..490a01f5 100644 --- a/src/sedacs/ewald/__init__.py +++ b/src/sedacs/ewald/__init__.py @@ -28,6 +28,7 @@ ewald_energy = impl.ewald_energy ewald_energy_torch = torch_impl.ewald_energy ewald_real = impl.ewald_real +ewald_real_screening = impl.ewald_real_screening ewald_real_torch = torch_impl.ewald_real ewald_kspace_part1 = impl.ewald_kspace_part1 ewald_kspace_part2 = impl.ewald_kspace_part2 diff --git a/src/sedacs/ewald/charge_solver.py b/src/sedacs/ewald/charge_solver.py new file mode 100644 index 00000000..6404f0c4 --- /dev/null +++ b/src/sedacs/ewald/charge_solver.py @@ -0,0 +1,86 @@ +from sedacs.ewald import ewald_energy +from sedacs.ewald import CONV_FACTOR +import numpy as np +import matplotlib.pyplot as plt +import torch +from scipy.sparse.linalg import LinearOperator, cg, gmres +from typing import Callable, Optional, Tuple + +__all__ = ["QEQ_solver"] + +def QEQ_solver( + positions: torch.Tensor, + ewald_vec_func: Callable[[torch.Tensor], torch.Tensor], + b: np.ndarray, + h_u: np.ndarray, + init_charges: Optional[np.ndarray] = None, + A_inv: Optional[np.ndarray] = None, + rtol: float = 1e-5, + maxiter: int = 100 +) -> Tuple[torch.Tensor, int]: + """ + Solve the QEq (Charge Equilibration) equations using the GMRES solver. + + This function solves the system for atomic partial charges that minimize + electrostatic energy using an iterative linear solver. + + Args: + positions (torch.Tensor): Atomic positions tensor ([3, N]). + ewald_vec_func (Callable[[torch.Tensor], torch.Tensor]): Function computing Ewald vector. + b (np.ndarray): Negative electronegativity values and total charge constraint. + h_u (np.ndarray): Hardness values. + init_charges (Optional[np.ndarray], optional): Initial charge guess. Defaults to None. + A_inv (Optional[np.ndarray], optional): 1/diag(matrix), for jacobi preconditioner. Defaults to None. + rtol (float, optional): Relative tolerance for convergence. Defaults to 1e-5. + maxiter (int, optional): Maximum number of solver iterations. Defaults to 100. + + Returns: + Tuple[torch.Tensor, int]: Computed charges and iteration count. + """ + dtype = positions.dtype + device = positions.device + np_dtype = np.float32 + if dtype == torch.float64: + np_dtype = np.float64 + + N = positions.shape[1] + res = np.zeros(N+1, dtype=np_dtype) + iter_cnt = 0 + def mv(x): + nonlocal res, iter_cnt + iter_cnt += 1 + q = x[:-1] + elect = x[-1] + total_ch = np.sum(q) + charges = torch.from_numpy(q).type(dtype).to(device) + dq = ewald_vec_func(charges) + dq = dq.cpu().numpy() + res[:-1] = dq + elect + h_u * q + res[-1] = total_ch + return res + ''' + #TODO: Torch based solver is needed to not do data transfer between CPU and GPU. + #The torch based CG solver is already available but not GMRES. + res_torch = torch.zeros(N+1, dtype=dtype, device=device) + def mv_torch(x): + nonlocal res_torch + q = x[:-1] + elect = x[-1] + total_ch = mixed_precision_sum(q) + dq = ewald_vec_func(q) + res_torch[:-1] = dq + elect + h_u * q + res_torch[-1] = total_ch + return res_torch + ''' + + A = LinearOperator((N+1,N+1), matvec=mv) + if init_charges is not None: + init_charges = np.concatenate((init_charges, np.array([0.0]))) + + M = None + if A_inv is not None: + M = LinearOperator((N+1,N+1), matvec=lambda x: A_inv * x) + x, exit_code = gmres(A, b, x0=init_charges, rtol=rtol, maxiter=maxiter, M=M) + if exit_code > 0: + print(f"[WARNING] No QEQ convergence after {exit_code} iterations") + return torch.from_numpy(x).to(dtype).to(device), iter_cnt \ No newline at end of file diff --git a/src/sedacs/ewald/ewald_torch.py b/src/sedacs/ewald/ewald_torch.py index e6c8ae73..e2ce4aa8 100644 --- a/src/sedacs/ewald/ewald_torch.py +++ b/src/sedacs/ewald/ewald_torch.py @@ -4,7 +4,7 @@ import time from typing import Optional, Tuple from .util import CONV_FACTOR - + @torch.compile def ewald_real( nbr_inds: torch.Tensor, @@ -71,6 +71,122 @@ def ewald_real( return torch.sum(res) / 2.0, f, de_dq +@torch.compile +def ewald_real_screening(my_start_ind, my_lcl_N, nbr_inds, nbr_diff_vecs, nbr_dists, charges, hubbard_u, atomtypes, + alpha: float, cutoff: float, calculate_forces: int, + calculate_dq: int): + ''' + Calculates real part of the ewald sum + + Inputs: + my_inds: Integer Tensor with shape [n,], n is the number of local atoms. + Stores the local atom indices. + nbr_inds: FP Tensor with shape [n,K], K is the max number of neighbors per atom. + Stores the neighbor indices within certain cutoff. + nbr_diff_vecs: FP Tensor with shape [3,n,K]. + Stores the displacement vectors + charges: FP Tensor with shape [N,], N is the total number of atoms + Charge per atom. + alpha: float + cutoff: float + calculate_forces: int. + Returns forces if set to 1, else returns None as forces + calculate_dq: int. + Returns de/dq if set to 1, else returns None + Output: + Energy: float + forces: FP Tensor with shape [3, n] + dq: FP Tensor with shape [n,] + + TODO: If an atom is close to its image, we need to handle it carefully. + ''' + # TODO: finalize DUMMY_ATOM_IND + KECONST = 14.3996437701414 + device = nbr_dists.device + dtype = nbr_dists.dtype + + one = torch.tensor(1.0, dtype=dtype, device=device) + zero = torch.tensor(0.0, dtype=dtype, device=device) + + DUMMY_NBR_IND = -1 + # symbols = torch.Tensor(sy.symbols)[atomtypes] + mask = ((nbr_inds != DUMMY_NBR_IND) & (nbr_dists <= cutoff)) + same_element_mask = mask & (atomtypes.unsqueeze(1) == atomtypes[nbr_inds]) # (Nr_atoms, Max_Nr_Neigh) + different_element_mask = mask & ~same_element_mask + + TFACT = 16.0 / (5.0 * KECONST) + #TI = TFACT * U.unsqueeze(1) * mask # (Nr_atoms, Max_Nr_Neigh) + TI = torch.where(mask, TFACT * hubbard_u.unsqueeze(1) * mask, one) + TI2 = TI * TI + TI3 = TI2 * TI + TI4 = TI2 * TI2 + TI6 = TI4 * TI2 + + SSA = TI + SSB = TI3 / 48.0 + SSC = 3.0 * TI2 / 16.0 + SSD = 11.0 * TI / 16.0 + SSE = 1.0 + + MAGR = torch.where(mask, nbr_dists, one) + MAGR2 = MAGR * MAGR + Z = abs(alpha * MAGR) + NUMREP_ERFC = torch.special.erfc(Z) + + J0 = torch.where(mask, NUMREP_ERFC / MAGR, zero) + + EXPTI = torch.exp(-TI * MAGR) + + J0[same_element_mask] = J0[same_element_mask] - (EXPTI * \ + (SSB * MAGR2 + SSC * MAGR + SSD + SSE / MAGR))[same_element_mask] + + #TJ = TFACT * U[nbr_inds] * different_element_mask # (Nr_atoms, Max_Nr_Neigh) + TJ = torch.where(different_element_mask, TFACT * hubbard_u[nbr_inds] * different_element_mask, one) + TJ2 = TJ * TJ + TJ4 = TJ2 * TJ2 + TJ6 = TJ4 * TJ2 + EXPTJ = torch.exp(-TJ * MAGR) + TI2MTJ2 = TI2 - TJ2 + TI2MTJ2 = torch.where(different_element_mask, TI2MTJ2, one) + SA = TI + SB = EXPTI * TJ4 * TI / 2.0 / TI2MTJ2 / TI2MTJ2 + SC = EXPTI * (TJ6 - 3.0 * TJ4 * TI2) / TI2MTJ2 / TI2MTJ2 / TI2MTJ2 + SD = TJ + SE = EXPTJ * TI4 * TJ / 2.0 / TI2MTJ2 / TI2MTJ2 + SF = EXPTJ * (-(TI6 - 3.0 * TI4 * TJ2)) / TI2MTJ2 / TI2MTJ2 / TI2MTJ2 + J0[different_element_mask] = J0[different_element_mask] - (1.0 * (SB - SC / MAGR) + \ + 1.0 * (SE - SF / MAGR))[different_element_mask] + + energy = charges[my_start_ind:my_start_ind+my_lcl_N, None] * J0 * charges[nbr_inds] + + if calculate_forces: + nbr_diff_vecs = torch.transpose(nbr_diff_vecs, 0, 2).contiguous() + nbr_diff_vecs = torch.transpose(nbr_diff_vecs, 0, 1).contiguous() + alpha2 = alpha * alpha + DC = torch.where(mask.unsqueeze(2), nbr_diff_vecs / nbr_dists.unsqueeze(2), zero) + CA = torch.where(mask, NUMREP_ERFC / MAGR, zero) + CA = CA + 2.0 * alpha * torch.exp(-alpha2 * MAGR2) / math.sqrt(math.pi) + FORCE = -torch.sum((charges[my_start_ind:my_start_ind+my_lcl_N, None] * charges[nbr_inds] * \ + torch.where(mask, CA / MAGR, zero)).unsqueeze(2) * \ + DC * mask.unsqueeze(2), dim=1) + + FORCE = FORCE + torch.sum(((charges[my_start_ind:my_start_ind+my_lcl_N, None] * charges[nbr_inds] * EXPTI) * \ + ((torch.where(same_element_mask, SSE / MAGR2, zero) - 2.0 * SSB * MAGR - SSC) \ + + SSA * (SSB * MAGR2 + SSC * MAGR + SSD + torch.where(same_element_mask, SSE / MAGR, zero)))).unsqueeze(2) * \ + DC * same_element_mask.unsqueeze(2), dim=1) + FORCE = FORCE + torch.sum((charges[my_start_ind:my_start_ind+my_lcl_N, None] * charges[nbr_inds] * ((1.0 * (SA * (SB - torch.where(different_element_mask, SC / MAGR, zero)) - \ + torch.where(different_element_mask, SC / MAGR2, zero))) + (1.0 * (SD * (SE - torch.where(different_element_mask, SF / MAGR, zero)) - \ + torch.where(different_element_mask, SF / MAGR2, zero))))).unsqueeze(2) * DC * different_element_mask.unsqueeze(2), dim=1) + + else: + FORCE = None + + if calculate_dq: + COULOMBV = torch.sum(J0 * charges[nbr_inds], dim=1) + else: + COULOMBV = None + + return torch.sum(energy) / 2.0, FORCE, COULOMBV diff --git a/src/sedacs/ewald/ewald_triton.py b/src/sedacs/ewald/ewald_triton.py index c2c0386f..e542f0ad 100644 --- a/src/sedacs/ewald/ewald_triton.py +++ b/src/sedacs/ewald/ewald_triton.py @@ -4,6 +4,7 @@ import time from .ewald_torch import ewald_energy as torch_ewald_energy from .ewald_torch import ewald_real as torch_ewald_real +from .ewald_torch import ewald_real_screening as torch_ewald_real_screening from .ewald_torch import ewald_kspace_part1 as torch_ewald_kspace_part1 from .ewald_torch import ewald_kspace_part2 as torch_ewald_kspace_part2 from .ewald_torch import ewald_self_energy @@ -470,6 +471,143 @@ def ewald_real_space_kernel(out_en_ptr, out_f_ptr, real_energy = tl.sum(res) / 2.0 tl.atomic_add(out_en_ptr, real_energy) +@triton.jit +def ewald_real_space_screening_kernel(out_en_ptr, out_f_ptr, + out_dq_ptr, + nbrs_ptr, nbr_dists_ptr, + dx_ptr, dy_ptr, dz_ptr, + q_ptr, hubbard_u_ptr, atomtypes_ptr, + alpha: float, + cutoff: float, + N: int, M: int, + calculate_forces: tl.constexpr, + calculate_dq: tl.constexpr, + BLOCK_SIZE: tl.constexpr): + ''' + Assumes tensors to be allocated in a contiguous manner + ''' + row_idx = tl.program_id(0) + pi = 3.141592653589793 + KECONST = 14.3996437701414 + + row_stride = M + dist_start_ptr = nbr_dists_ptr + row_idx * row_stride + col_offsets = tl.arange(0, BLOCK_SIZE) + dist_ptrs = dist_start_ptr + col_offsets + my_dists = tl.load(dist_ptrs, mask=col_offsets < M, other=0.0) # will be multiplied by 0 if out of bound + nbr_start_ptr = nbrs_ptr + row_idx * row_stride + nbr_ptrs = nbr_start_ptr + col_offsets + my_nbrs = tl.load(nbr_ptrs, mask=col_offsets < M, other=N) + + atomtype = tl.load(atomtypes_ptr + row_idx, mask=row_idx < N, other=-1) + mask = (col_offsets < M) & (my_nbrs < N) & (my_nbrs != -1) & (my_dists < cutoff) + atomtypes = tl.load(atomtypes_ptr + my_nbrs, mask= mask, other=-1) + same_element_mask = mask & (atomtype == atomtypes) + different_element_mask = mask & ~same_element_mask + + nbr_qs = tl.load(q_ptr + my_nbrs, mask=mask, other=0.0) + my_q = tl.load(q_ptr + row_idx, mask=row_idx < N, other=0.0) + + TFACT = 16.0 / (5.0 * KECONST) + TI = tl.load(hubbard_u_ptr + row_idx, mask=row_idx < N, other=0.0) + #TI = TFACT * tl.where(mask, TI, 1.0) + #TI = tl.where(mask, TFACT * TI, 1.0) + TI = TFACT * TI + TI2 = TI * TI + TI3 = TI2 * TI + TI4 = TI2 * TI2 + TI6 = TI4 * TI2 + + SSA = TI + SSB = TI3 / 48.0 + SSC = 3.0 * TI2 / 16.0 + SSD = 11.0 * TI / 16.0 + SSE = 1.0 + + MAGR = tl.where(mask, my_dists, 0.0) + MAGR2 = MAGR * MAGR + Z = tl.abs(alpha * MAGR) + NUMREP_ERFC = 1.0 - tl.erf(Z) + + J0 = tl.where(mask, NUMREP_ERFC / my_dists, 0.0) + + EXPTI = tl.exp(-TI * MAGR) + + J0 = J0 - tl.where(same_element_mask, (EXPTI * \ + (SSB * MAGR2 + SSC * MAGR + SSD + SSE / MAGR)), 0.0) + + TJ = tl.load(hubbard_u_ptr + my_nbrs, mask = different_element_mask, other=0.0) + #TJ = TFACT * tl.load(hubbard_u_ptr + my_nbrs, mask = different_element_mask, other=1.0) + #TJ = tl.where(different_element_mask, TFACT * TJ, 1.0) + TJ = TFACT * TJ + TJ2 = TJ * TJ + TJ4 = TJ2 * TJ2 + TJ6 = TJ4 * TJ2 + EXPTJ = tl.exp(-TJ * MAGR) + TI2MTJ2 = TI2 - TJ2 + TI2MTJ2 = tl.where(different_element_mask, TI2MTJ2, 1.0) + SA = TI + SB = EXPTI * TJ4 * TI / 2.0 / TI2MTJ2 / TI2MTJ2 + SC = EXPTI * (TJ6 - 3.0 * TJ4 * TI2) / TI2MTJ2 / TI2MTJ2 / TI2MTJ2 + SD = TJ + SE = EXPTJ * TI4 * TJ / 2.0 / TI2MTJ2 / TI2MTJ2 + SF = EXPTJ * (-(TI6 - 3.0 * TI4 * TJ2)) / TI2MTJ2 / TI2MTJ2 / TI2MTJ2 + + J0 = J0 - tl.where(different_element_mask, (1.0 * (SB - SC / MAGR) + \ + 1.0 * (SE - SF / MAGR)), 0.0) + + energy = my_q * J0 * nbr_qs + + # Force calculation + if calculate_forces: + disp_x_ptrs = dx_ptr + row_idx * row_stride + col_offsets + disp_y_ptrs = dy_ptr + row_idx * row_stride + col_offsets + disp_z_ptrs = dz_ptr + row_idx * row_stride + col_offsets + dx_disps = tl.load(disp_x_ptrs, mask=col_offsets < M) + dy_disps = tl.load(disp_y_ptrs, mask=col_offsets < M) + dz_disps = tl.load(disp_z_ptrs, mask=col_offsets < M) + + alpha2 = alpha * alpha + DC_x = tl.where(mask, dx_disps / my_dists, 0.0) + DC_y = tl.where(mask, dy_disps / my_dists, 0.0) + DC_z = tl.where(mask, dz_disps / my_dists, 0.0) + CA = tl.where(mask, NUMREP_ERFC / MAGR, 0.0) + CA = CA + 2.0 * alpha * tl.exp(-alpha2 * MAGR2) / tl.sqrt(pi) + factor = tl.where(mask, -my_q * nbr_qs * CA / MAGR, 0.0) + + factor = factor + same_element_mask * my_q * nbr_qs * EXPTI * \ + ((tl.where(same_element_mask, SSE / MAGR2, 0.0) - 2.0 * SSB * MAGR - SSC) \ + + SSA * (SSB * MAGR2 + SSC * MAGR + SSD + tl.where(same_element_mask, SSE / MAGR, 0.0))) + + factor = factor + different_element_mask * my_q * nbr_qs * ((1.0 * (SA * (SB - tl.where(different_element_mask, SC / MAGR, 0.0)) - \ + tl.where(different_element_mask, SC / MAGR2, 0.0))) + (1.0 * (SD * (SE - tl.where(different_element_mask, SF / MAGR, 0.0)) - \ + tl.where(different_element_mask, SF / MAGR2, 0.0)))) + fx = factor * DC_x + fy = factor * DC_y + fz = factor * DC_z + + fx = tl.sum(fx) + fy = tl.sum(fy) + fz = tl.sum(fz) + + out_fx_ptrs = out_f_ptr + row_idx + out_fy_ptrs = out_f_ptr + N + row_idx + out_fz_ptrs = out_f_ptr + 2*N + row_idx + #TODO: do we really need atomic add here if the block size covers all columns? + # test this to make sure + tl.store(out_fx_ptrs, fx, mask=row_idx < N) + tl.store(out_fy_ptrs, fy, mask=row_idx < N) + tl.store(out_fz_ptrs, fz, mask=row_idx < N) + + if calculate_dq: + COULOMBV = tl.sum(J0 * nbr_qs) + out_dq_ptrs = out_dq_ptr + row_idx + tl.store(out_dq_ptrs, COULOMBV, mask=row_idx < N) + + #Energy calculation + real_energy = tl.sum(energy) / 2.0 + tl.atomic_add(out_en_ptr, real_energy) + def ewald_real( nbr_inds: torch.Tensor, nbr_diff_vecs: torch.Tensor, @@ -548,6 +686,53 @@ def ewald_real( ) return y.item(), out_f, out_dq +def ewald_real_screening(nbr_inds, nbr_diff_vecs, nbr_dists, q_vals, hubbard_u_vals, atomtypes, + alpha: float, + cutoff: float, + calculate_forces: int, + calculate_dq: int, + out_f = None, out_dq = None): + ''' + nbr_disp_vecs: 3, N, M + ''' + # call the pytorch function if the tensors are on CPU + if nbr_dists.device.type == 'cpu': + return torch_ewald_real_screening(nbr_inds, nbr_diff_vecs, nbr_dists, q_vals, + hubbard_u_vals, atomtypes, alpha, cutoff, calculate_forces, + calculate_dq) + + _, M = nbr_inds.shape + N = len(q_vals) + BLOCK_SIZE = triton.next_power_of_2(M) + if calculate_forces and out_f == None: + #out_f = torch.zeros((my_lcl_N, 3), device=nbr_dists.device).type(nbr_dists.dtype) + out_f = torch.zeros((3, N), device=nbr_dists.device).type(nbr_dists.dtype) + if calculate_dq and out_dq == None: + out_dq = torch.zeros((N, ), device=nbr_dists.device).type(nbr_dists.dtype) + y = torch.zeros((1,), device=nbr_dists.device).type(torch.float64) + ewald_real_space_screening_kernel[(N,)]( + y, + out_f, + out_dq, + nbr_inds, + nbr_dists, + nbr_diff_vecs[0], + nbr_diff_vecs[1], + nbr_diff_vecs[2], + q_vals, + hubbard_u_vals, + atomtypes, + alpha, + cutoff, + N, + M, + calculate_forces, + calculate_dq, + BLOCK_SIZE=BLOCK_SIZE + ) + + return y.to(nbr_dists.dtype).item(), out_f, out_dq + def ewald_energy( positions: torch.Tensor, cell: torch.Tensor, diff --git a/src/sedacs/file_io.py b/src/sedacs/file_io.py new file mode 100644 index 00000000..c4050f7f --- /dev/null +++ b/src/sedacs/file_io.py @@ -0,0 +1,405 @@ +import sys +import pathlib + +import numpy as np + +from sedacs.system import parameters_to_vectors + +__all__ = [ + "read_coords_file", + "read_xyz_file", + "write_xyz_coordinates", + "read_xyz_trajectory", + "read_pdb_file", + "write_pdb_coordinates", + "are_files_equivalent", +] + + +## Coordinates main reader +# @brief This will read the coodinates of a chemical system (so far only xyz and pdb +# are available). +# +def read_coords_file(fileName, lib="None", verb=True): + """coords file main parser: Reads in an xyz/pdb file with lattice informations.""" + ext = pathlib.Path(fileName).suffix + if ext == ".xyz": + read_fn = read_xyz_file + elif ext == ".pdb": + read_fn = read_pdb_file + else: + raise ValueError(f"Extension '{ext}' not recognized") + + latticeVectors, symbols, types, coords = read_fn(fileName, lib=lib, verb=False) + + return latticeVectors, symbols, types, coords + + +## xyz file parser +# Reads in an xyz file with lattice informations. +# +# Example xyz file format as follows: +# +# \verbatim +# 3 +# Lattice="10.0 0.0 0.0 0.0 10.0 0.0 0.0 0.0 10.0" +# O 0.0 0.0 0.0 +# H 1.0 0.0 1.0 +# H -1.0 0.0 1.0 +# \endverbatim +# +# @param fileName File name of the xyz file. Example: "coords.xyz" +# @param lib If using a particular library. Default is "None" +# @param verb Verbosity. If set to True will output relevant information. +# @return latticeVectors Lattice vectors. z-coordinate of the first vector = latticeVectors[0,2] +# @return symbols Symbol for each atom type. Symbol for first atom type = symbols[0] +# @return types Index type for each atom in the system. Type for first atom = type[0] +# @return coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# +# @code{.unparsed} +# NumberOfAtomTypes = len(symbols) +# NumberOfAtoms = len(coordinates[:,0]) +# @endcode +# +def read_xyz_file(fileName, lib="None", verb=True): + """xyz file parser: Reads in an xyz file with lattice informations.""" + + if lib is None or lib == "None": + latticeVectors, symbols, types, coords = read_xyz_file_nolib(fileName) + + if lib == "ase": + latticeVectors, symbols, types, coords = read_xyz_file_ase(fileName) + + if verb: + print("latticeVectors", latticeVectors) + print("symbols", symbols) + print("coords", coords) + + return latticeVectors, symbols, types, coords + +def read_xyz_file_nolib(fileName): + fileIn = open(fileName, "r") + count = -1 + latticeVectors = np.zeros((3, 3)) + symbols = [] # Symbols for each atom type + noBox = False + typesIndex = -1 + for lines in fileIn: + linesSplit = lines.split() + + # Adding an exception in case there is a blank second line + if (len(linesSplit) == 0) and (count == 0): + noBox = True + count = count + 1 + + if len(linesSplit) != 0: + count = count + 1 + if count == 0: + nats = int(linesSplit[0]) + coords = np.zeros((nats, 3)) + types = np.zeros((nats), dtype=int) + if count == 1: + latticeKey = linesSplit[0][0:8] + if (latticeKey == "Lattice=") or (latticeKey == "Lattice"): + linesSplit = lines.split('"') + if linesSplit[0] == "Lattice": + boxInfoList = linesSplit[2].split() + else: + boxInfoList = linesSplit[1].split() + # Reading the lattice vectors + latticeVectors[0, 0] = float(boxInfoList[0]) + latticeVectors[0, 1] = float(boxInfoList[1]) + latticeVectors[0, 2] = float(boxInfoList[2]) + + latticeVectors[1, 0] = float(boxInfoList[3]) + latticeVectors[1, 1] = float(boxInfoList[4]) + latticeVectors[1, 2] = float(boxInfoList[5]) + + latticeVectors[2, 0] = float(boxInfoList[6]) + latticeVectors[2, 1] = float(boxInfoList[7]) + latticeVectors[2, 2] = float(boxInfoList[8]) + + else: + noBox = True + if (count >= 2) and (count <= nats + 2): + # Reading the coordinates + coords[count - 2, 0] = float(linesSplit[1]) + coords[count - 2, 1] = float(linesSplit[2]) + coords[count - 2, 2] = float(linesSplit[3]) + newSymbol = linesSplit[0] + if not (newSymbol in symbols): + symbols.append(newSymbol) + typesIndex = typesIndex + 1 + types[count - 2] = typesIndex + else: + types[count - 2] = symbols.index(newSymbol) + fileIn.close() + if noBox: + # If there is no box we create one by taking the coordinate + # limits given by the positions of the atoms + latticeVectors[0, 0] = np.max(coords[:, 0]) - np.min(coords[:, 0]) + 5.0 + latticeVectors[1, 1] = np.max(coords[:, 1]) - np.min(coords[:, 1]) + 5.0 + latticeVectors[2, 2] = np.max(coords[:, 2]) - np.min(coords[:, 2]) + 5.0 + + return latticeVectors, symbols, types, coords + +def read_xyz_file_ase(fileName): + import ase + system = ase.io.read(fileName) + coords = system.get_positions() + symbols = [] # Symbols for each atom type + latticeVectors = np.zeros((3, 3)) + noBox = True # Ace xyz reader does not read lattice vectors (system.cell = 0) + symbolsForEachAtom = system.get_chemical_symbols() + types = np.zeros(len(symbolsForEachAtom), dtype=int) + typesIndex = -1 + count = -1 + for symb in symbolsForEachAtom: + count = count + 1 + if not (symb in symbols): + symbols.append(symb) + typesIndex = typesIndex + 1 + types[count] = typesIndex + else: + types[count] = symbols.index(symb) + return latticeVectors, symbols, types, coords + +## Write coordinates into an xyz file +# +# @param fileName File name +# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# @param types list of types for every atom in the system. +# @param symbols Symbols for every atom type +# +def write_xyz_coordinates(fileName, coords, types, symbols): + """Writes coordinates in simple pdb format""" + nats = len(coords[:, 1]) + myFileOut = open(fileName, "w") + print(nats, file=myFileOut) + print("xyz format", file=myFileOut) + for i in range(nats): + symb = symbols[types[i]] + print(symb, coords[i, 0], coords[i, 1], coords[i, 2], file=myFileOut) + + myFileOut.close() + + +## xyz trajectory parser +# Reads in an xyz file trajectory. +# +# Example xyz file format as follows: +# +# \verbatim +# 8 +# frame 0 +# Bl 0.0 0.0 0.0 0.0 +# H 1.0 2.0 3.0 0.09 +# He 2.0 4.0 6.0 0.18 +# Li 3.0 6.0 9.0 0.27 +# Be 4.0 8.0 12.0 0.36 +# B 5.0 10.0 15.0 0.44999999999999996 +# C 6.0 12.0 18.0 0.54 +# N 7.0 14.0 21.0 0.63 +# 8 +# frame 1 +# Bl 0.1 0.1 0.1 0.0 +# H 1.1 2.1 3.1 0.08 +# He 2.1 4.1 6.1 0.16 +# Li 3.1 6.1 9.1 0.24 +# Be 4.1 8.1 12.1 0.32 +# B 5.1 10.1 15.1 0.4 +# C 6.1 12.1 18.1 0.48 +# N 7.1 14.1 21.1 0.56 +# \endverbatim +# +# @param fileName File name of the xyz trajectorey. Example: "traj.xyz" +# @param lib If using a particular library. Default is "None" +# @param verb Verbosity. If set to True will output relevant information. +# @return elems Symbol for each atom type. Symbol for first atom type = symbols[0] +# @return coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# @return values Index type for each atom in the system. Values (e.g. charges) for atoms +# +def read_xyz_trajectory(fileName, lib="None", verb=True): + """trajectory file parser: Reads in an xyz trajectory file""" + with open(fileName) as f: + ext = pathlib.Path(fileName).suffix + lines = np.array(f.readlines()) + nats = int(lines[0]) + mask = np.ones(len(lines), dtype=bool) + mask[np.arange(0, len(lines), nats + 2)] = False + mask[np.arange(1, len(lines), nats + 2)] = False + lines = lines[mask] + lines = lines.tolist() + xyzc = np.loadtxt(lines, usecols=range(1, 5)).astype(float) + nframes = int(len(xyzc) / nats) + elems = np.loadtxt(lines, usecols=0, dtype="U2") + xyzc = np.reshape(xyzc, (nframes, nats, 4)) + coords = xyzc[:, :, 0:3] + values = xyzc[:, :, 3] + + return elems[:nats], coords, values + + +## Read a pdb file +# Reads in an pdb file with lattice informations. +# +# Example pdb file format as follows: +# +# \verbatim +# TITLE coords.pdb +# CRYST1 11.598 17.395 17.591 90.00 90.00 90.00 P 1 1 +# MODEL 1 +# ATOM 1 O MOL 1 0.000 0.805 -0.230 0.00 0.00 O +# ATOM 2 H MOL 1 -0.101 0.855 2.111 0.00 0.00 H +# ATOM 3 H MOL 1 0.827 -0.475 3.907 0.00 0.00 H +# TER +# END +# \endverbatim +# +# @param fileName File name of the xyz file. Example: "coords.xyz" +# @param lib If using a particular library. Default is "None" +# @param verb Verbosity. If set to True will output relevant information. +# @return latticeVectors Lattice vectors. z-coordinate of the first vector = latticeVectors[0,2] +# @return symbols Symbol for each atom type. Symbol for first atom type = symbols[0] +# @return types Index type for each atom in the system. Type for first atom = type[0] +# @return coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# +# @code{.unparsed} +# NumberOfAtomTypes = len(symbols) +# NumberOfAtoms = len(coordinates[:,0]) +# @endcode +# +# @todo Add test! +# +def read_pdb_file(fileName, lib="None", resInfo=False, verb=False): + """Reads a pdb file""" + if verb: + print("\nIn read_pdb_file...\n") + if (lib == "None") or (lib is None): + fileIn = open(fileName, "r") + count = 0 + latticeVectors = np.zeros((3, 3)) + symbols = [] # Symbols for each atom type + noBox = False + boxFlag = False + typesList = [] + coordsxList = [] + coordsyList = [] + coordszList = [] + resNames = [] + resIds = [] + typesIndex = -1 + for lines in fileIn: + linesSplit = lines.split() + if len(linesSplit) != 0: + if linesSplit[0] == "CRYST1": + boxFlag = True + paramA = float(linesSplit[1]) + paramB = float(linesSplit[2]) + paramC = float(linesSplit[3]) + paramAlpha = float(linesSplit[4]) + paramBeta = float(linesSplit[5]) + paramGamma = float(linesSplit[6]) + latticeVectors = parameters_to_vectors( + paramA, paramB, paramC, paramAlpha, paramBeta, paramGamma, latticeVectors + ) + if (linesSplit[0] == "ATOM") or (linesSplit[0] == "HETATM"): + count = count + 1 + if len(linesSplit) == 11: + newSymbol = linesSplit[10] + else: + newSymbol = linesSplit[2] + if(newSymbol[0:2] == "OW"): + newSymbol = "O" + elif(newSymbol[0:2] == "HW"): + newSymbol = "H" + if not (newSymbol in symbols): + symbols.append(newSymbol) + typesIndex = typesIndex + 1 + typesList.append(typesIndex) + else: + typesList.append(symbols.index(newSymbol)) + coordsxList.append(float(linesSplit[5])) + coordsyList.append(float(linesSplit[6])) + coordszList.append(float(linesSplit[7])) + if(resInfo): + resNames.append(linesSplit[3]) + resIds.append(int(linesSplit[4])) + fileIn.close() + if not boxFlag: + noBox = True + + coords = np.zeros((count, 3)) + for i in range(count): + coords[i, 0] = coordsxList[i] + coords[i, 1] = coordsyList[i] + coords[i, 2] = coordszList[i] + types = np.array(typesList, dtype=int) + + if noBox: + latticeVectors[0, 0] = np.max(coords[:, 0]) - np.min(coords[:, 0]) + 5.0 + latticeVectors[1, 1] = np.max(coords[:, 1]) - np.min(coords[:, 1]) + 5.0 + latticeVectors[2, 2] = np.max(coords[:, 2]) - np.min(coords[:, 2]) + 5.0 + + if(resInfo): + return latticeVectors, symbols, types, coords, resIds, resNames + else: + return latticeVectors, symbols, types, coords + + +## Write coordinates into a pdb file +# +# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# @param symbols Symbols for every atom type +# @types list of types for every atom in the system. +# +# @todo Add lattice parameters! +def write_pdb_coordinates(fileName, coords, types, symbols, molIds=np.zeros((0), dtype=int)): + """Writes coordinates in simple pdb format""" + nats = len(coords[:, 1]) + + if len(molIds) == 0: + molIds = np.zeros((nats), dtype=int) + molIds[:] = 1 + + myFileOut = open(fileName, "w") + print("TITLE ", "PDB written by SEDACS", file=myFileOut) + print( + "CRYST1 10.000 10.000 10.000 90.00 90.00 90.00 P 1 1", file=myFileOut + ) # $$$ ??? Maybe adaptive vectors ??? + print("MODEL", file=myFileOut) + for i in range(nats): + symb = symbols[types[i]] + print( + "ATOM", + "{:6d}".format(i + 1), + " " + symb, + " MOL", + "{:5d}".format(molIds[i]), + " ", + "{:05.3f}".format(coords[i, 0]), + "", + "{:05.3f}".format(coords[i, 1]), + "", + "{:05.3f}".format(coords[i, 2]), + " 1.00 0.00 ", + symb, + file=myFileOut, + ) + print("TER", file=myFileOut) + print("END", file=myFileOut) + myFileOut.close() + + +## Compare 2 files +# @brief Compare two files and report True if they are equal +# @param fileName1 Name of the first file +# @param fileName2 Name of the second file +# @return filesAreEqual True or False depending if the files are equal or not +# +def are_files_equivalent(file1, file2): + with open(file1, "r") as f1, open(file2, "r") as f2: + for line1, line2 in zip(f1, f2): + if line1.strip() != line2.strip(): + return False + return True diff --git a/src/sedacs/fock.py b/src/sedacs/fock.py new file mode 100644 index 00000000..d27f41fd --- /dev/null +++ b/src/sedacs/fock.py @@ -0,0 +1,45 @@ +from sedacs.interface_pyseqm import get_full_fock_pyseqm +import torch + +__all__ = ["get_fock"] + + +## Build the density matrix. +# @brief This will build a density matrix. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param nocc Number of occupied states +# @param ham Hamiltonian matrix +# @verbose Verbosity +# +def get_fock(eng, obj): + if eng.interface == "None": + print("ERROR!!! - Write your own Fock") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + print("ERROR!!! - Write your own Fock") + exit() + elif eng.interface == "PySEQM": + + W_whole = torch.tensor([0], device=obj.molecule_whole.nocc.device) + return get_full_fock_pyseqm(obj.molecule_whole.nmol, obj.molecule_whole.molsize, obj.molecule_whole.dm, obj.M_whole, + obj.molecule_whole.maskd, obj.molecule_whole.mask, + obj.molecule_whole.idxi, obj.molecule_whole.idxj, obj.w_whole, W_whole, + obj.molecule_whole.parameters['g_ss'], + obj.molecule_whole.parameters['g_pp'], + obj.molecule_whole.parameters['g_sp'], + obj.molecule_whole.parameters['g_p2'], + obj.molecule_whole.parameters['h_sp'], + obj.molecule_whole.method, + obj.molecule_whole.parameters['s_orb_exp_tail'], + obj.molecule_whole.parameters['p_orb_exp_tail'], + obj.molecule_whole.parameters['d_orb_exp_tail'], + obj.molecule_whole.Z, + obj.molecule_whole.parameters['F0SD'], + obj.molecule_whole.parameters['G2SD']) + + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + exit() + return rho diff --git a/src/sedacs/force_fields.py b/src/sedacs/force_fields.py new file mode 100644 index 00000000..d080b207 --- /dev/null +++ b/src/sedacs/force_fields.py @@ -0,0 +1,53 @@ +"""ffields +Some functions to create force fields/potentials + +So far: Harmonic ffields. +""" + +import numpy as np + +from sedacs.message import error_at, status_at + +__all__ = ["get_classical_forces", "harmonic_potential"] + + +def get_classical_forces(coords, types, symbols, latticeVectors, nl, nlTrX, nlTrY, nlTrZ, fFieldName, verb=False): + if verb: + status_at("get_sdc_classical_force") + if fFieldName == "HarmonicAll": + return harmonic_potential(coords, nl, nlTrX, nlTrY, nlTrZ, verb=False) + + error_at("get_sdc_classical_force", message="No valid force filed name") + + +def harmonic_potential(coords, nl, nlTrX, nlTrY, nlTrZ, verb=False): + if verb: + status_at("harmonic_potential") + + # Get the forces on each atom + nats = len(coords[:, 0]) + forces = np.zeros((nats, 3)) + dVect = np.zeros(3) + forcesIJ = np.zeros(3) + for i in range(nats): + for j in range(1, nl[i, 0] + 1): + jj = nl[i, j] + jjX = coords[jj, 0] + nlTrX[j] + jjY = coords[jj, 1] + nlTrY[j] + jjZ = coords[jj, 2] + nlTrZ[j] + + dVect[0] = coords[i, 0] - jjX + dVect[1] = coords[i, 1] - jjY + dVect[2] = coords[i, 2] - jjZ + + distance2 = dVect[0] ** 2 + dVect[1] ** 2 + dVect[2] ** 2 + distance = np.sqrt(distance2) + if distance != 0.0: + dVectVersor = dVect / distance + + forcesIJ[:] = -2 * (distance - 1.0) * dVectVersor[:] + forces[i] = forces[i] + forcesIJ + # else: + # print("WARNING") + + return forces diff --git a/src/sedacs/geometry.py b/src/sedacs/geometry.py new file mode 100644 index 00000000..4fa94dfe --- /dev/null +++ b/src/sedacs/geometry.py @@ -0,0 +1,125 @@ +import numpy as np + +## Minimum Image Convention Distances +# @brief Builds MIC interatomic distances for periodic systems. Distances in Angstrom. +# @param R torch Tensor of shape (N_atoms, 3) representing atomic positions. +# @param cell torch Tensore of shape (3,3) containging lattice parameters. +# @return R_mic Torch tensor of shape (N_atoms, N_atoms) containing minimum image distance (0 on diagonals). +def get_mic_distances(R, cell, torchLib=True): + # This can simply be extended for cases where we have skewed and/or small cells. + # Probably this can be gotten rid of for Cagri's implementation once it is in main branch. + translations = [ + [-1, -1, -1], + [-1, -1, 0], + [-1, 0, -1], + [-1, 0, 0], + [-1, 0, 1], + [-1, 1, -1], + [-1, 1, 0], + [-1, 1, 1], + [0, -1, -1], + [0, -1, 0], + [0, -1, 1], + [0, 0, -1], + [-1, -1, 1], + [0, 0, 1], + [0, 1, -1], + [0, 1, 0], + [0, 1, 1], + [1, -1, -1], + [1, -1, 0], + [1, -1, 1], + [1, 0, -1], + [1, 0, 0], + [1, 0, 1], + [1, 1, -1], + [1, 1, 0], + [1, 1, 1], + ] + + if torchLib: + import torch + + # Numpy array to hold the minimum image distances between all atoms in the simulation. + R_mic = torch.cdist(R, R) + R_comparison = torch.zeros((2, *R_mic.shape)) + R_comparison[0] = R_mic + + # Pull min distance for each element along each translation. + # This can in principle be faster for some sensible memory + # estimates that allow us to stack more translations into R_comparison. + for trans in translations: + R_shift = ( + R.clone() + trans[0] * cell[0] + trans[1] * cell[1] + trans[2] * cell[2] + ) + R_comparison[1] = torch.cdist(R, R_shift) + mics = torch.min(R_comparison, dim=0, keepdim=True).values + R_comparison[0] = mics + + return R_comparison[0] + + else: + from scipy.spatial.distance import cdist + # Numpy array to hold the minimum image distances between all atoms in the simulation. + R_mic = cdist(R, R) + R_comparison = np.zeros((2, *R_mic.shape)) + R_comparison[0] = R_mic + + # Pull min distance for each element along each translation. + # This can in principle be faster for some sensible memory + # estimates that allow us to stack more translations into R_comparison. + for trans in translations: + R_shift = ( + R.copy() + trans[0] * cell[0] + trans[1] * cell[1] + trans[2] * cell[2] + ) + R_comparison[1] = cdist(R, R_shift) + mics = np.min(R_comparison, axis=0) + R_comparison[0] = mics + + return R_comparison[0] + +## Quick Contact Map +# @brief Builds quick contact map from interatomic distances (respecting MIC). +# @param Rij: torch Tensor of shape (N_atoms, N_atoms) representing interatomic distances. +# @param cutoff: Global cutoff in angstrom for what counts as a contact. +# @param torchLib: Whether to use torch or numpy. +# @param visualize: Whether to visualize the contact map as an imshow. +# @return contact_map: nl[i,j] will give the j'th connection of i. +def get_contact_map(Rij, cutoff=1.8, torchLib=True, visualize=False): + + if torchLib: + import torch + + Rij.fill_diagonal_(cutoff + 1) + contact_map = torch.zeros_like(Rij) + mask = Rij <= cutoff + notmask = Rij > cutoff + contact_map[mask] = 1 + contact_map[notmask] = 0 + + if 0: + sz = 100 + plt.subplots(1,2) + plt.subplot(1,2,1) + plt.imshow(Rij[:sz, :sz]) + plt.subplot(1,2,2) + plt.imshow(contact_map[:sz, :sz]) + plt.show() + else: + np.fill_diagonal(Rij, cutoff+1) + contact_map = np.zeros_like(Rij) + mask = Rij <= cutoff + notmask = Rij > cutoff + contact_map[mask] = 1 + contact_map[notmask] = 0 + + if 0: + sz = 100 + plt.subplots(1,2) + plt.subplot(1,2,1) + plt.imshow(Rij[:sz, :sz]) + plt.subplot(1,2,2) + plt.imshow(contact_map[:sz, :sz]) + plt.show() + + return contact_map diff --git a/src/sedacs/globals.py b/src/sedacs/globals.py new file mode 100644 index 00000000..0d8f6103 --- /dev/null +++ b/src/sedacs/globals.py @@ -0,0 +1,7 @@ +global eng_path + +def init_eng_path(path): + global eng_path + eng_path = path + + diff --git a/src/sedacs/graph.py b/src/sedacs/graph.py new file mode 100644 index 00000000..6e871b6c --- /dev/null +++ b/src/sedacs/graph.py @@ -0,0 +1,620 @@ +"""graph +Some graph functions + +""" + +import sys + +import numpy as np +import torch + +global nxLib +try: + import networkx as nx + + nxLib = True +except ImportError as e: + nxLib = False +global pltLib +try: + import matplotlib.pyplot as plt + + pltLib = True +except: + pltLib = False + + +## Get an initial graph based on distance +# @brief This will give a graph based on distaces. Similar to +# a neighbor list. +# @param coords System coordinates +# @param nl Neighbor list `nl[i,0]` = total number of neighbors. +# `nl[i,1:nl[i,0]]` = neigbors of i. Self neighbor i to i is not included explicitly. +# @param radius Radius Cutoff to search for the neighbors +# @param maxDeg Max degrees allowed for each none +# @param verb Verbosity mode +# @return graph The graph consisting on a 2D integer numpy array. +# E.g, `graph[i,k]` is the kth neighbor of node i. NOTE: The 0 entry of +# every row is reserved to store the degree of every node. +# +def get_initial_graph(coords, nl, radius, maxDeg, verb=False): + nats = len(coords[:, 0]) + graph = np.zeros((nats, maxDeg + 1), dtype=int) + graph[:, :] = -1 + for i in range(nats): + ik = 0 + degi = 0 + for j in range(1, nl[i, 0] + 1): + jj = nl[i, j] + + distance = np.linalg.norm(coords[i, :] - coords[jj, :]) + if distance < radius: + ik = ik + 1 + if ik < maxDeg + 1: + graph[i, ik] = jj + degi = degi + 1 + # if i == 0: + # print(nl[i,j]) + else: + print("!!!WARNING: at get_initial_graph. maxDeg exceeded. Consider increasing this number") + break + + graph[i, 0] = degi # Storing the degrees + + return graph + + +## Print graph +# @brief Print the graph by showing the connection of every node. +# @param graph The graph consisting on a 2D numpy array. +# E.g, graph[i,k] is the kth neighbor of node i. NOTE: The 0 entry of +# every row is reserved to store the degree of every node. +# +def print_graph(graph): + nnodes = len(graph[:, 0]) + print("\nGraph structure:") + print("Number of nodes: ", len(graph[:, 0])) + print("Max allowed degree per node: ", len(graph[0, :])) + print("Number of edges: ", np.sum(graph[:, 0])) + print("Connections of every node i follows: ") + for i in range(nnodes): + nodesList = [] + for k in range(1, graph[i, 0] + 1): + if graph[i, k] != -1: + nodesList.append(graph[i, k]) + print(i, "(", graph[i, 0], ")", "-", nodesList) + + +## Get a networkX graph +# @param graph The graph in 2D numpy array where `graph[i,k]` is the kth neighbor +# of node i. NOTE: The 0 entry of +# every row is reserved to store the degree of every node. +# @param w The weight for the edges (tipically = 1.0) +# @return nxGraph networkX type of graph +# +def get_nx_graph(graph, w): + if nxLib == False: + sdc_error("get_nx_graph", "ERROR: Consider installing networkx") + n = len(graph[:, 0]) + m = len(graph[0, :]) + nxGraph = nx.Graph() + for i in range(0, n): + nxGraph.add_nodes_from([i, i]) + for k in range(1, graph[i, 0] + 1): + j = graph[i, k] + if (j != -1) and (j != i): + nxGraph.add_edge(i, j, weight=w) + + #print("graph", graph) + #print("nxGraph", nxGraph) + return nxGraph + + +## Get a regular graph from a nx graph. +# @brief From a networkx graph, this will construct a regular graph. +# @param nxGraph Networkx graph. +# @return graph The graph consisting on a 2D integer numpy array. +# E.g, `graph[i,k]` is the kth neighbor of node i. NOTE: The 0 entry of +# every row is reserved to store the degree of every node. +def get_graph_from_nx(nxGraph): + if nxLib == False: + sdc_error("get_nx_graph", "ERROR: Consider installing networkx") + n = nxGraph.number_of_nodes() + m = np.max(nxGraph.degree()) + graph = np.zeros((n, m + 1), dtype=int) + for i in range(n): + graph[i, 0] = nxGraph.degree()[i] + jj = 0 + for j in nxGraph.neighbors(i): + jj = jj + 1 + graph[i, jj] = j + + return graph + + +## To plot the resulting graph +# @brief Uses matplotlib to plot the nxGraph +# @param nxGraph NetworkX type of graph +# @param nodeColor The color of the nodes +# This will produce a "graph.png" file with the +# plot. +def plot_nx_graph(nxGraph, nodeColor="r"): + labels = [] + n = nxGraph.number_of_nodes() + for i in range(n): + labels.append(str(i)) + pos1 = nx.spring_layout(nxGraph, scale=100.0, weight="weight") + plt.figure(figsize=(30.0, 30.0)) + nx.draw_networkx_nodes(nxGraph, pos1, node_size=500, alpha=0.8, node_color=nodeColor) + nx.draw_networkx_edges(nxGraph, pos1, width=1, alpha=0.5, edge_color="r") + nx.draw_networkx_labels(nxGraph, pos1, font_size=16) + plt.savefig("graph.png", dpi=400) + plt.show() + + +## Collect a graph from DMs +# @brief This will build a graph from small DMs +# @param rho Density matrix. This is a 2D numpy array. +# @param nnodes Number of nodes of the full graph +# @param maxDeg Max degree parameter for the full "collected" graph +# @param indices list of nodes maping to every row and column of rho +# @param hindex A list of displacements maping every node in the full graph +# with a sequence of indices (orbitals) in the the full density matrix. +# The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1` +# @return graph The graph in 2D numpy array where `graph[i,k]` is the kth neighbor +# of node i. NOTE: The 0 entry of every row is reserved to store the degree of every node. +# +def collect_graph_from_rho_PYSEQM(graph,rho,thresh,nnodes,maxDeg,indices,hindex=None,verb=False): + + rhoDim = len(rho[:,0]) + if (graph is None): + graph = np.zeros((nnodes,maxDeg+1),dtype=np.int16) - 1 + + #print('graph', graph[11]) + nats = len(indices) + weights = np.zeros((nnodes)) + ki_ = 0 + if type(rho) is not np.ndarray: + rho = rho.numpy().astype(np.float32) + # Precompute the slice lengths for all j + slice_lengths = hindex[np.array(indices) + 1] - hindex[indices] + # Vectorize the extraction of slices from rho + cumsum_lengths = np.cumsum(np.r_[0, slice_lengths[:-1]]) + max_length = np.max(slice_lengths) + slice_indices = cumsum_lengths[:, None] + np.arange(max_length) + # Mask to avoid out-of-bounds indexing + valid_mask = slice_indices < cumsum_lengths[:, None] + slice_lengths[:, None] + valid_indices = slice_indices[valid_mask] + + for i in range(nats): + ii = indices[i] + #Recovering the connections we already have + weights[:] = 0.0 + + ### + j = np.arange(1, graph[ii,0]+1) + weights[graph[ii,j]] = thresh + + ### + ki_old = ki_ + ki_ = ki_ + hindex[ii+1] - hindex[ii] + ki_ar = np.arange(ki_old, ki_,1) + kj = 0 # Initialize kj + + flat_rho_slices = rho[ki_ar][:, kj + valid_indices] + expanded_rho_slices = np.zeros((len(ki_ar),len(slice_lengths), max_length), dtype=rho.dtype) + expanded_rho_slices[:,valid_mask] = flat_rho_slices + abs_sums = np.sum(np.abs(expanded_rho_slices)**2, axis=(0,2))**0.5 + np.add.at(weights, indices, abs_sums) + + mask = (np.arange(nnodes) != ii) & (weights >= thresh) + valid_jj_indices = np.nonzero(mask)[0] + k = len(valid_jj_indices) + if k > maxDeg: + print("!!!ERROR: Max Degree parameter is too small") + exit(0) + graph[ii, 1:k+1] = valid_jj_indices[:maxDeg] + graph[ii, 0] = k + + # if sum(abs(weights1-weights)) > 1e-14: + # np.save( "weights.npy", weights,) + # np.save( "indices.npy", indices,) + # np.save( "rho.npy", rho,) + + # print('!!!NONZERO', sum(abs(weights1-weights)), ii, ki) + # exit(0) + ### + + ## + # for j in range(1,graph[ii,0]): # $$$ what does it do? It never enters this loop + # jj = graph[ii,j] + # weights[jj] = thresh + # ## + + # # Computing the new weights by rho + # ## $$$ vectorized this ### + # for oi in range(hindex[ii],hindex[ii+1]): + # kj = 0 + # for j in range(nats): + # jj = indices[j] + # for oj in range(hindex[jj],hindex[jj+1]): + # weights[jj] = weights[jj] + abs(rho[ki,kj])#**2 + # kj = kj + 1 + # #weights[jj] = weights[jj]**0.5 + # ki = ki + 1 + # ## + + + # # Reasigning the connections to ii by the merged weights (the ones computed + # # from rho and the ones already existing. + + # ## $$$ vectorized this ### + # k = 0 + # for jj in range(nnodes): # $$$ ??? this cycle could be interrupted ??? + # if ii ==0 and (jj == 4 or jj == 7): + # print(weights[jj]) + # if((ii != jj) and (weights[jj] >= thresh)): + # k = k + 1 + # if(k >= maxDeg + 1): + # print("!!!ERROR: Max Degree parameter is too small") # $$$ any way to use a warning instead of an error ? + # exit(0) + # graph[ii,k] = jj + # if ii == 0: + # print('In graph',graph[ii][0:10]) + # if verb: + # exit(0) + # graph[ii,0] = k + + + return graph + + +## Collect a graph from DMs +# @brief This will build a graph from small DMs +# @param rho Density matrix. This is a 2D numpy array. +# @param nnodes Number of nodes of the full graph +# @param maxDeg Max degree parameter for the full "collected" graph +# @param indices list of nodes maping to every row and column of rho +# @param hindex A list of displacements maping every node in the full graph +# with a sequence of indices (orbitals) in the the full density matrix. +# The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1` +# @return graph The graph in 2D numpy array where `graph[i,k]` is the kth neighbor +# of node i. NOTE: The 0 entry of every row is reserved to store the degree of every node. +# +def collect_graph_from_rho(graph, rho, thresh, nnodes, maxDeg, indicesCoreHalos, ncores, hindex=None, verb=False): + rhoDim = len(rho[:, 0]) + if graph is None: + graph = np.zeros((nnodes, maxDeg + 1), dtype=int) + weights = np.zeros((nnodes)) + nch = len(indicesCoreHalos) + ki = 0 + + for i in range(ncores): + ii = indicesCoreHalos[i] + # Recovering the connections we already have + weights[:] = 0.0 + for j in range(1, graph[ii, 0]): + jj = graph[ii, j] + weights[jj] = thresh + + # Computing the new weights by rho + for oi in range(hindex[ii], hindex[ii + 1]): + kj = 0 + for j in range(nch): + jj = indicesCoreHalos[j] + for oj in range(hindex[jj], hindex[jj + 1]): + weights[jj] = weights[jj] + abs(rho[ki, kj]) + kj = kj + 1 + ki = ki + 1 + + # Reasigning the connections to ii by the merged weights (the ones computed + # from rho and the ones already existing. + k = 0 + for jj in range(nnodes): # $$$ ??? this cycle could be interrupted ??? + if (ii != jj) and (weights[jj] >= thresh): + k = k + 1 + if k >= maxDeg + 1: + raise ValueError(f"Max Degree parameter is too small: {maxDeg}") + graph[ii, k] = jj + + graph[ii, 0] = k + + return graph + + +## Get adjacency matrix +# @brief This will get an adyacency matrix for the graph. +# @param graph +# @para mat +def get_adjacencyMatrix(graph, mat): + print("add func") + + +## Add/merge two graph (union operation) +# @brief This will merge or add two graphs +# @param graphA Graph to be merged +# @param graphB Graph to be merged +# @return graphC Resulting graph +# +def add_graphs(graphA, graphB): + if len(graphA[:, 0]) != len(graphB[:, 0]): + print("!!!ERROR: Graphs have different number of nodes") + else: + nnodes = len(graphA[:, 0]) + maxDeg = len(graphA[0, :]) + + vectA = np.zeros((nnodes), dtype=bool) + vectB = np.zeros((nnodes), dtype=bool) + vectC = np.zeros((nnodes), dtype=bool) + + graphC = np.zeros((nnodes, maxDeg), dtype=int) + graphC[:, :] = -1 + for i in range(nnodes): + # Create a logical row from the neighbors of i in adj A + vectA[:] = False + for j in range(1, graphA[i, 0] + 1): + vectA[graphA[i, j]] = True + # Create a logical row from the neighbors of i in adj B + vectB[:] = False + for j in range(1, graphB[i, 0] + 1): + vectB[graphB[i, j]] = True + vectC[:] = vectA[:] + vectB[:] + + k = 0 + for j in range(0, nnodes): + if vectC[j]: + k = k + 1 + graphC[i, k] = j + graphC[i, 0] = k + + return graphC + +## Add/merge multiple graphs (union operation) +# @brief This will merge or add multiple graphs +# @param graphs Graphs to be merged +# @return graphC Resulting graph +# +def add_mult_graphs(graphs): + # Ensure all graphs have the same number of nodes + nnodes = graphs[0].shape[0] + maxDeg = graphs[0].shape[1] + + if not all(graph.shape[0] == nnodes for graph in graphs): + print("!!!ERROR: All graphs must have the same number of nodes") + return None + + # Initialize the result graph `graphC` with -1s + graphC = np.full((nnodes, maxDeg), -1, dtype=int) + + # Initialize a combined adjacency matrix for all graphs + adjC = np.zeros((nnodes, nnodes), dtype=bool) + + # Populate combined adjacency matrix based on input graphs + for graph in graphs: + adj = np.zeros((nnodes, nnodes), dtype=bool) + for i in range(nnodes): + adj[i, graph[i, 1:graph[i, 0] + 1]] = True + adjC = np.logical_or(adjC, adj) + + # Fill `graphC` based on the combined adjacency matrix `adjC` + for i in range(nnodes): + neighbors = np.where(adjC[i])[0] + graphC[i, 0] = len(neighbors) # Number of neighbors + if len(neighbors) > 0: + graphC[i, 1:len(neighbors) + 1] = neighbors + + return graphC +## Multiply two Adjacencies +# @brief The ij of the resulting graph will be connected +# if i in A and j in B have a common directly connected node k. +# @param graphA Initial adjacency +# @param graphB Initial adjacency +# @return graphC Multiplication result +def multiply_graphs(): + if len(graphA[:, 0]) != len(graphB[:, 0]): + print("!!!ERROR: Graphs have different number of nodes") + else: + nnodes = len(graphA[:, 0]) + maxDeg = len(graphA[0, :]) + + for i in range(nnodes): + myVect[:] = False + for j in range(1, graphA[i, 0]): + myK = graphA[i, j] # All neighbors of i by A + for k in range(1, graphB[myK, 0]): + myJ = graphB[myK, k] # All neighbors of myK by B + if i != myJ: + vectC[myJ] = True + + k = 0 + for j in range(1, nnodes): + if vectC[j]: + k = k + 1 + graphC[i, k] = j + graphC[i, 0] = k + + +# Get a small graph (>-<) +# @brief This will construct a small graph for testing purposes. +# This graph can be is trivially partitioned in two parts +# @return A 6 nodes graph that can be represented by the following +# picture: +# 0 3 +# \ / +# 1 - 4 +# / \ +# 2 5 +def get_a_small_graph(): + nnodes = 6 + graph = np.zeros((nnodes, nnodes), dtype=int) + graph[:, 0] = 1 # Every node has at least one neighbor + graph[0, 1] = 1 # Node 0 is connected to 1 + graph[1, 0] = 3 + graph[1, 1] = 0 + graph[1, 2] = 2 + graph[1, 3] = 4 # Node 1 to 0,2,4 + graph[2, 1] = 1 # Node 2 to 1 + graph[4, 0] = 3 # Node 4 to 1,3,5 + graph[4, 1] = 1 + graph[4, 2] = 3 + graph[4, 3] = 5 + graph[3, 1] = 4 # Node 3 to 4 + graph[5, 1] = 4 # Node 5 to 4 + return graph + +# Get a small graph as an adjacency matrix(>-<) +# @brief This will construct a small graph for testing purposes. +# This graph can be is trivially partitioned in two parts +# @return A 6 nodes graph that can be represented by the following +# picture: +# 0 3 +# \ / +# 1 - 4 +# / \ +# 2 5 +def get_a_small_adjacency_matrix(): + nnodes = 6 + graph = np.zeros((nnodes, nnodes), dtype=int) + + # Node 0 to 1, 5 + graph[0, 1] = 1 + graph[0, 5] = 1 + + # Node 1 to 2, 4 + graph[1, 2] = 1 + graph[1, 4] = 1 + + # Node 4 to 3, 5 + graph[4, 3] = 1 + + graph += graph.T + + return graph + +# Get a small graph as an adjacency matrix(>-<) +# @brief This will construct a random adjacency matrix wiht n_nodes. +# @param n_nodes (int): Number of nodes. +# @param density (float): Number between 0,1 represneting likelihood of +# edge connections in the random graph. +# @param degreeOnDiagonal (bool): Whether or not to put the degree +# of nodes on the diagonal. 0 if False. +# @return np.ndarray(n_nodes, n_nodes) of adjacency matrix. +def get_random_adjacency_matrix(n_nodes, density = .1, degreeOnDiagonal = False): + gRaw = np.random.random((n_nodes, n_nodes)) + gBool = ((gRaw + gRaw.T)/2) < density + gInt = gBool.astype(int) + np.fill_diagonal(gInt, 0) + + assert np.all(gInt == gInt.T) + + if degreeOnDiagonal: + diag = np.sum(gInt, axis = 0) + np.fill_diagonal(gInt, diag) + + return gInt + +# Update density matrix contraction based on the new graph of communities +# @brief. +# @param sy (obj): sedacs system of atoms. +# @param P_contr (tensor): Old density matrix. +# @param graph_for_pairs (list): old graph of communities. +# @param new_graph_for_pairs (list): new graph of communities. +def update_dm_contraction(sdc, sy, P_contr, graph_for_pairs, new_graph_for_pairs, device): + P_contr_new = torch.zeros_like(P_contr, device=device) + for i in range(sy.nats): + tmp1 = graph_for_pairs[i][1:graph_for_pairs[i][0]+1] + tmp2 = new_graph_for_pairs[i][1:new_graph_for_pairs[i][0]+1] + pos = np.searchsorted(tmp1, tmp2) + # Ensure the indices are within bounds + pos = np.clip(pos, a_min=0, a_max=len(tmp1) - 1) + # Check if the positions are valid and match + mask_isin_n_in_o = (pos < len(tmp1)) & (tmp1[pos] == tmp2) + #print('isin',(np.isin(tmp2, tmp1) == mask_isin_n_in_o).all()) + + pos = np.searchsorted(tmp2, tmp1) + # Ensure the indices are within bounds + #pos = np.clip(pos, max=len(tmp2) - 1) + # Check if the positions are valid and match + mask_isin_o_in_n = (pos < len(tmp2)) & (tmp2[pos] == tmp1) + #print('PC', (np.isin(tmp1, tmp2) == mask_isin_o_in_n).all()) + + if sdc.UHF: + P_contr_new[:,:,i][:,:new_graph_for_pairs[i][0] ][:, mask_isin_n_in_o ] = \ + P_contr[:,:,i][:,:graph_for_pairs[i][0]][:, mask_isin_o_in_n ] + else: + P_contr_new[:,i][:new_graph_for_pairs[i][0] ][ mask_isin_n_in_o ] = \ + P_contr[:,i][:graph_for_pairs[i][0]][ mask_isin_o_in_n ] + P_contr[:] = P_contr_new[:] + del P_contr_new + +# Get a graph where each atom has all atoms from its CH as its neighbors, including itself. +# @brief . +# @param sdc (obj): sedacs driver. +# @param sy (obj): sedacs system of atoms. +# @param fullGraph (list): connectivity graph. +# @param parts (list): list of cores. +# @param partsCoreHalo (list): list of cores+halos. +# @return np.ndarray(n_nodes, MaxDeg) of CH. +def get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo): + new_graph_for_pairs = np.array(fullGraph.copy()) + for i in range(sy.nats): + for sublist_idx in range(sdc.nparts): + if i in parts[sublist_idx]: + new_graph_for_pairs[i, 0] = len(partsCoreHalo[sublist_idx]) + new_graph_for_pairs[i, 1:new_graph_for_pairs[i][0]+1] = partsCoreHalo[sublist_idx] + break + return new_graph_for_pairs + +# Get a mask of diagonal blocks for contracted density matrix. +# @brief . +# @param sdc (obj): sedacs driver. +# @param sy (obj): sedacs system of atoms. +# @param new_graph_for_pairs (list): graph of communities. +# @return np.ndarray(n_atoms). +def get_maskd(sdc, sy, graph_for_pairs): + # Initialize an array to hold graph_maskd values + graph_maskd = [] + # Track the position counter across rows in a vectorized way + counter = 0 + for j in range(sy.nats): + # Get neighbors for node j from graph_for_pairs + neighbors = graph_for_pairs[j][1:graph_for_pairs[j][0] + 1] + # Find positions where `i == j` (self-loops) in the neighbors list + mask = np.where(neighbors == j)[0] + # Calculate the absolute position for masked values and store them + graph_maskd.extend(counter + mask) + # Update the counter for the next row, adding the degree difference + counter += len(neighbors) + int(sdc.maxDeg - graph_for_pairs[j][0]) + # Convert graph_maskd to a NumPy array + graph_maskd = np.array(graph_maskd) + return graph_maskd + +# @brief Convert graphs into a square adjacency matrix. +# @param graph: Input graph to be converted to square adj matrix. +# @param graphType: Input graph type. Options: +# 'sedacs': NxN, first column = node degree. Rest are node connections. +# E.g. 3rd row [3,1,5,8,0,0,0] => node3 has degree 3 and connections to +# 1, 5, 8. +# 'sklearn':NxX, array padded with -1s. Row i contains non -1 entries where +# it has edges. +# E.g. 3rd row [1,6,8,9,-1,-1,-1] => degree = 4, connections [1,6,8,9]. +def convert_to_adjacency_matrix(graph, graphType='sedacs'): + if graphType == 'sklearn': + nNodes = graph.shape[0] + adj = np.zeros((nNodes, nNodes), dtype = int) + for i in range(nNodes): + inds = graph[i]>-0.1 + adj[i,graph[i][inds]] = 1 + adj[graph[i][inds],i] = 1 + return adj + elif graphType == 'sedacs': + nNodes = graph.shape[0] + adj = np.zeros((nNodes, nNodes), dtype = int) + for i in range(nNodes): + connections = graph[i,1:1+graph[i,0]] + adj[i,connections] = 1 + adj[connections, i] = 1 + return adj + + + diff --git a/src/sedacs/graph_partition.py b/src/sedacs/graph_partition.py new file mode 100644 index 00000000..5578d170 --- /dev/null +++ b/src/sedacs/graph_partition.py @@ -0,0 +1,1397 @@ +from sedacs.geometry import get_mic_distances, get_contact_map +from sedacs.graph import * +from sedacs.file_io import ( + read_xyz_file, + write_xyz_coordinates, + write_pdb_coordinates +) +#import matplotlib.pyplot as plt +# + +import time + +try: + from sklearn.cluster import SpectralClustering + SpectralClusteringLib = True +except: SpectralClusteringLib = False + +import os +from sedacs.periodic_table import PeriodicTable + +try: + import metis + metisLib = True +except: + metisLib = False + +try: + import networkx as nx + nxLib = True +except ImportError as e: + nxLib = False + +try: + import ase.io + + aseLib = True +except: + aseLib = False + +try: + import torch + torchLib = True +except: + torchLib = False + +import numpy as np +from warnings import warn + +try: + from numba import jit +except ImportError: + # Dummy decorator if no numba. + def jit(*args, **kwargs): + return lambda f: f + warn("Numba not installed, graph partitioning will be slow for systems above ~5k atoms") + + +## +# @brief +# @param +# @return +# FIXME need to make the jit depend on numbaFlag. Couldn't figure out how to +# get that to work with the numba decorators. + +DEBUG_LEVEL = 0 # > 0 gives assert statements, > 1 gives print statements. + +## Partition +# @brief This will partition a graph based on a defined method +# @param graph Graph to be partition +# @param partitionType Method or type of partition to be used +# @param nparts Number of total parts +# @param verb Verbosity level +# @return parts Partition containing a "list of parts" where every +# part is a list of nodes +def graph_partition(sdc, eng, graph, partitionType, nparts, coords, verb=False): + if partitionType == "Regular": + parts = regular_partition(graph, nparts, verb) + elif partitionType == "Metis": + parts = metis_partition(graph, nparts, verb) + elif partitionType == "MinCut": + parts = mincut_partition(graph, nparts, verb) + elif(partitionType == "SpectralClustering"): + parts = spectral_clustering_partition(sdc, graph, nparts, coords, do_xyz=True) + + if(eng.interface == "PySEQM"): + for i in range(len(parts)): + parts[i] = sorted(parts[i]) + + return parts + + +## get_cut +# @brief Gets the cut from the node partitions and graph. +# @param nodeIPartition (np.ndarray (n_nodes)) Partition node I belongs to. +# @param graph (np.ndarray (n_nodes,n_nodes)) Dense adjacency matrix. +# @return cut (int): The cut for the partitioning scheme. +# @jit(nopython=True) +def get_cut(nodeIPartition, graph): + cut = 0 + n_nodes = graph.shape[0] + for i in range(n_nodes): + IK = nodeIPartition[i] + + # Look at the neighbors to see if they are in different part + for j in range(1, graph[i, 0] + 1): # don't get this part + + + # TODO: How is this anything but 1, or 0 if + # input graph is to be an adjacency matrix? + index = graph[i, j] + + + JK = nodeIPartition[index] + if IK != JK: + cut = cut + 1 + return cut + +## get_balancing +# @brief Compute balance from a set of partition sizes. +# @param partitionKNumNodes (np.ndarray (number of partitions)): How many +# node are in the Kth partiiton. +# @return balance (float): Balance as defined by largest/smallest part sizes. +def get_balance_from_partition_sizes(partitionKNumNodes): + balance = np.max(partitionKNumNodes)/np.min(partitionKNumNodes) + return balance + + +## get_balance_from_partitions +# @brief Compute balance from a set of partition sizes. +# @param parts (list): Unpadded least of each partition's nodes. +# @return balance (float): Balance as defined by largest/smallest part sizes. +def get_balance_from_partitions(parts): + lens = [len(part) for part in parts] + maxPartSize = max(lens) + minPartSize = min(lens) + return maxPartSize/minPartSize + +## get_balance +# @brief Compute balance from the array containing node i's current partition. +# @param nodeIPartitions (np.ndarray (n_nodes)): Each node's partition. E.g. +# nodeParititons[i] returns the partition of node i. +# @return balance (float): Balance as defined by largest/smallest part sizes. +def get_balance(nodeIPartition, k): + partsSizes = np.zeros((k), dtype=int) + for i in range(len(nodeIPartition)): + partsSizes[nodeIPartition[i]] = partsSizes[nodeIPartition[i]] + 1 + bal = np.max(partsSizes) / np.min(partsSizes) + return bal + + +## initial_partition_from_coordinates +# @brief Computes the initial partitioning of a set of nodes using positional +# info. +# @param systemFilename (str): System file name to parse for structural info. +# @param k (int): Number of partitions in the system. +# @param domainDecomp (List): Number of domains to decomp along x, y, z. +# nx*ny*nz must be divisor of k. +# @param +# @return +def _initial_partition_from_coordinates( + systemFilename, + k, + domainDecomp, + cutoff=1.8, + device="cpu", +): + + assert ( + len(domainDecomp) == 3 + and domainDecomp[0] * domainDecomp[1] * domainDecomp[2] == k + ), "Domain decomp must be [ngx, ngy, ngz] where all three are ints and ngx*ngy*ngz is a divisor of k" + + ngx, ngy, ngz = domainDecomp[0], domainDecomp[1], domainDecomp[2] + + # Extract info needed for MIC distance. + # @return latticeVectors Lattice vectors. z-coordinate of the first + # vector = latticeVectors[0,2] + # @return symbols Symbol for each atom type. Symbol for first atom + # type = symbols[0] + # @return types Index type for each atom in the system. Type for first atom + # = type[0] + # @return coords Position for every atoms. z-coordinate of + # atom 1 = coords[0,2] + + lat, syms, typs, coords = read_xyz_file(systemFilename, verb=False) + if torchLib: + R = torch.tensor(coords, device=device, dtype=torch.float32) + cell = torch.tensor(lat, device=device, dtype=torch.float32) + else: + R = np.array(coords) + cell = np.array(lat) + + n_atoms = R.shape[0] + + # Call functions in sedacs.geometry.py + R_mic = get_mic_distances(R, cell, torchLib=torchLib) + Gp = get_contact_map(R_mic, cutoff=cutoff, torchLib=torchLib) + + if torchLib: + if device == "cpu": + Gp = Gp.numpy() + RPartition = R.numpy() + cell = cell.numpy() + else: + Gp = Gp.cpu().numpy() + RPartition = R.cpu().numpy() + cell = cell.cpu().numpy() + else: + RPartition = R.copy() + + # Check that coordinates are wrapped. Orthorhombic box assumed. + if DEBUG_LEVEL > 0: + assert (R[:, 0] < cell[0, 0]).all(), "Wrap coordinates first." + assert (R[:, 1] < cell[1, 1]).all(), "Wrap coordinates first." + assert (R[:, 2] < cell[2, 2]).all(), "Wrap coordinates first." + assert (R[:, 0] >= 0).all(), "Wrap coordinates first." + assert (R[:, 1] >= 0).all(), "Wrap coordinates first." + assert (R[:, 2] >= 0).all(), "Wrap coordinates first." + + # Partition length along the domain decomps. + partition_length_x = cell[0, 0] / ngx + partition_length_y = cell[1, 1] / ngy + partition_length_z = cell[2, 2] / ngz + + # Determines the initial partition of the atoms by their location w.r.t. + # the domain decomposition. + RPartition[:, 0] = np.clip(np.floor(R[:, 0] / partition_length_x), a_min=0, a_max=k-1) + RPartition[:, 1] = np.clip(np.floor(R[:, 1] / partition_length_y), a_min=0, a_max=k-1) + RPartition[:, 2] = np.clip(np.floor(R[:, 2] / partition_length_z), a_min=0, a_max=k-1) + + # Flatten s.t. partition : R^3 -> R^1 + # Need indexing of image distances if that will be needed in the future. + nodeIPartition = ( + RPartition[:, 0] * 1 + + RPartition[:, 1] * ngx + + RPartition[:, 2] * ngx * ngy + ).astype(int) + + nNodes = n_atoms + + # BEGIN GRAPH PARTITIONING ROUTINE. + + nodeIDegree = np.sum(Gp, axis=1).astype(int) + max_node_degree = int(np.max(nodeIDegree)) + nodeIConnections = np.full((nNodes, max_node_degree), nNodes) + for i in range(nNodes): + nodeIConnections[i, : nodeIDegree[i]] = np.where(Gp[i] == 1)[0] + if DEBUG_LEVEL > 2: + print(nodeIDegree[i]) + print(np.where(Gp[i] == 1)[0]) + print(nodeIConnections[i]) + + if DEBUG_LEVEL > 1: + assert np.sum(nodeIDegree) / 2 == float( + G.number_of_edges() + ), "Edges computed from row sum don't match NetworkX" + + nodeICuts = np.zeros(nNodes, dtype=int) + partitionKNumNodes = np.zeros(k, dtype=int) + + # Populate the cuts mentioned below. + for i in range(nNodes): + iK = nodeIPartition[i] + partitionKNumNodes[iK] += 1 + for j in range(max_node_degree): + # Recall the 'empty' values are filled with nNodes + # to indice an empty connection. + if nodeIConnections[i, j] < nNodes: + if nodeIPartition[j] != iK: + nodeICuts[i] += 1 + + # One important thing here is that nothing is sparse and everything is + # padded. This may be problem for materializing large dense graphs, and + # in the future a conversion can be made from e.g. Gp -> csr, and + # mitigating some of the below arrays. + + # == Overview of the key variables tracking metrics/data in this routine == + # Gp -> Dense adjacency matrix. + # k -> Number of partitions. + # nodeIDegree -> Degree of node_i in the full graph, Gp. + # nodeIConnections -> The nodes that node i is connected to. *Padded* + # nodeIPartition -> The partition node i resides in. + # nodes_in_partition_k -> Number of nodes in partition k + # partitionKNumNodes -> Number of nodes in partition k + # nodeICuts -> Number of cuts on node i + + return ( + Gp, + k, + nodeIDegree, + nodeIPartition, + nodeIConnections, + nodeICuts, + partitionKNumNodes, + ) + + +## do_mitigate_large_partitions +# @brief Aims to mitigate large partitions by moving nodes to smaller ones. +# @param nodeIPartition (np.ndarray (nNodes)) containing node i's partition. +# @param nodeIConnections (np.ndarray (nNodes, n_max_degree)). Connections of +# node I. This is padded with the value "nNodes" +# @param cutsIK (np.ndarray (n_nodes,k)) Cuts on I if it were in partition K. +# @param partitionKNumNodes (np.ndarray (k)). Number of core nodes in K. +# @param coreHaloSize (np.ndarray (k)). Core+Halo size of partition K. +# @param top_frac_search (float): We try to pull nodes from this % of the +# largest partitions. Visual example below in docstrings. +# @param bot_frac_search (float): We try to push nodes to this % of the +# smallest partitions. Visual example below in docstrings. +# @return halos (np.ndarray shape(k, nNodes/5) Holds the halos. +def do_mitigate_large_partitions( + k, + nodeIDegree, + nodeIConnections, + nodeIPartition, + cutsIK, + partitionKNumNodes, + coreHaloSize, + top_frac_search=0.30, + bot_frac_search=0.40, +): + """ + E.g. partition sizes (core nodes): + k = 0 1 2 3 4 5 6 7 8 9 + size = 7 8 9 10 12 11 15 18 20 21 + + top_fraction_search = .2 would pick out partitions 8, 9 + bot_fraction search = .5 would pick out partitions 0, 1, 2, 3, 4 + + Meaning we'd look for swap from 8->[0,1,2,3,4] and 9->[0,1,2,3,4] + This portion scales roughly (assuming somewhat uniform paritition sizes) as top_frac*bot_frac*k^2. + """ + + indx = np.argsort(coreHaloSize)[::-1] + # indx = np.argsort(partitionKNumNodes)[::-1] + nk = int(top_frac_search * k) + nNodes = nodeIPartition.shape[0] + + # Here we're sorting the indices of core+halo size in descending order. + # E.g. the worst partition is indx[0], the best is indx[-1] + # These correspond directly to the *actual* partition index, K. + largestKs = indx[:nk] + smallestKs = indx[int((1 - bot_frac_search) * k):] + + largePartitionNodes = partitionKNumNodes[largestKs] + + # We have to be careful not to pull too many nodes from decently balanced + # partitions. Therefore we use this as a check, s.t. if large partition # + # of nodes -> under this number we breaak that loop and stop pulling nodes + # from it. + largeCutoff = np.min(largePartitionNodes) + + # The logic here is that trading nodes from large partitions to small ones + # where we reduce or even keep the cut equal is a net benefit (for + # core/core+halo sizes). + for cK in largestKs: + # cK->current partition K + cK_nodes = np.where(nodeIPartition == cK)[0] + for cK_node_i in cK_nodes: + if partitionKNumNodes[cK] < largeCutoff: + break + + # Boolean array of partitions from bot_frac_search%ile which + # either reduce or keep equal the cut on node_i. + res = 1 + bestPartition = None + for pK in smallestKs: + prop_res = cutsIK[cK_node_i, pK] - cutsIK[cK_node_i, cK] + if prop_res < res: + res = prop_res + bestPartition = pK + + # If there are any such partitions, go to one with smallest cut. + if bestPartition is not None: + + # Change the node's partition + nodeIPartition[cK_node_i] = bestPartition + + partitionKNumNodes[cK] -= 1 + partitionKNumNodes[bestPartition] += 1 + + # Actualize changes to the cut of cK_node_i's neighbors. + for j in range(nodeIDegree[cK_node_i]): + iNeighborJ = nodeIConnections[cK_node_i, j] + cutsIK[iNeighborJ, cK] += 1 + cutsIK[iNeighborJ, bestPartition] -= 1 + + # Reset the smallestKs, so that we don't pile nodes into a small partition + # and ruin the procedure. + indx = np.argsort(partitionKNumNodes)[::-1] + smallestKs = indx[int((1 - bot_frac_search) * k):] + + cut = 0 + assert ( + np.min(cutsIK) >= 0 + ), f"Cut can never be negative, but is currently as low as {np.min(cutsIK)}" + + for i in range(nNodes): + iK = nodeIPartition[i] + cut += cutsIK[i, iK] + + cut = int(cut/2) + + return cut, nodeIPartition, cutsIK, partitionKNumNodes + + +@jit(nopython=True) +def do_partition_flips( + Gp, + k, + nodeIDegree, + nodeIConnections, + nodeIPartition, + partitionKNumNodes, +): + nNodes = Gp.shape[0] + + # Precompute cuts on node i if it were in partition K. + cutsIK = np.zeros((nNodes, k), dtype=np.int32) + + for i in range(nNodes): + # Degree of i is also max number of cuts, so initialize there and + # subtract one for each neighbor in partition K. + nodeIDeg = nodeIDegree[i] + cutsIK[i, :] = nodeIDeg + + # Loop over each neigbhbor of node i. + for j in range(nodeIDeg): + neighJ = nodeIConnections[i, j] + + if DEBUG_LEVEL > 1: + assert neighJ < nNodes, "Should never be this high" + + # Node i has neighbor j in partition K. + # So if i->K then cutsIK gets decremented 1. + neighJPartition = nodeIPartition[neighJ] + + cutsIK[i, neighJPartition] -= 1 + + assert np.min(cutsIK) >= 0, "Cut should never be negative." + assert np.min(nodeIDegree) >= 0, "Degree should never be negative." + + swaps = 0 + for i in range(nNodes): + if cutsIK[i, nodeIPartition[i]] > 0: # Leave a node with no cuts alone. + for j in range(i + 1, nNodes): + + iK = nodeIPartition[i] + jK = nodeIPartition[j] + # For when nodes are not in same partition. + if iK != jK: + # jK = nodeIPartition[j] + origCutsI = cutsIK[i, iK] + origCutsJ = cutsIK[j, jK] + + newCutsI = cutsIK[i, jK] + + # Ensure unisolated nodes upon switching + if newCutsI < nodeIDegree[i]: + newCutsJ = cutsIK[j, iK] + if newCutsJ < nodeIDegree[j]: + if (newCutsI + newCutsJ) < (origCutsJ + origCutsI): + swaps += 1 + + # Update the new partitions from the swap. + nodeIPartition[i] = jK + nodeIPartition[j] = iK + + # Actualize changes to the cuts. + # i->j => i's neighbors in iK go UP 1, i's neighbors in jK go DOWN 1 + for m in range(nodeIDegree[i]): + iNeighborM = nodeIConnections[i, m] + + cutsIK[iNeighborM, iK] += 1 + cutsIK[iNeighborM, jK] -= 1 + + # Likewise, but flipped for j->i + for m in range(nodeIDegree[j]): + jNeighborM = nodeIConnections[j, m] + cutsIK[jNeighborM, iK] -= 1 + cutsIK[jNeighborM, jK] += 1 + + assert np.min( + cutsIK >= 0 + ), f"i:{i} j:{j}, iK:{iK}, jK:{jK}, i_neigh_k:{iNeighborM}, n_i_connections:{nodeIConnections[i,k]}, cuts_k_jK:{cutsIK[iNeighborM]}" + + # For when nodes are in same partition, we try to move ONLY I -> the smallest partition. + elif iK == jK: + # Find the smallest partition, sK, and check for a swap there. + iK = nodeIPartition[i] + sK = np.argmin(partitionKNumNodes) + + newCutsI = cutsIK[i, sK] + currCutsI = cutsIK[i, iK] + + # If the node is already in the smallest partition, just go do the next node and do nothing. + if sK != iK: + # Ensure unisolated nodes upon switching + if newCutsI < nodeIDegree[i]: + if newCutsI <= currCutsI: + swaps += 1 + + partitionKNumNodes[sK] += 1 + partitionKNumNodes[iK] -= 1 + + # Update the new partitions from the swap. + nodeIPartition[i] = sK + + # Actualize changes to the cuts. + # i->j => i's neighbors in iK go UP 1, i's neighbors in sK go DOWN 1 + for k in range(nodeIDegree[i]): + iNeighborM = nodeIConnections[i, k] + cutsIK[iNeighborM, iK] += 1 + cutsIK[iNeighborM, sK] -= 1 + + cut = 0 + assert ( + np.min(cutsIK) >= 0 + ), f"Cut can never be negative, but is currently as low as {np.min(cutsIK)}" + + + for i in range(nNodes): + iK = nodeIPartition[i] + cut += cutsIK[i, iK] + if cutsIK[i, iK] < 0: + raise ValueError("...") + + cut /= 2 + cut = int(cut) + + return cut, cutsIK, nodeIPartition, partitionKNumNodes, swaps + + +## get_core_halo +# @brief computes halos for th set of input core partitions. +# @param nodeIPartition (np.ndarray (nNodes)) containing node i's partition. +# @param nodeIConnections (np.ndarray (nNodes, n_max_degree)). Contains all of +# connections of node i. This is padded with the value "nNodes". +# @param nodeIDegree np.ndarray(np.ndarray (nNodes)) contaning node i's degree. +# @param k (int) number of partitions for the graph. +# @param order (int) number of jumps along the graph walk to compute halos. +# @param maxHaloFraction (float): Max fraction of total nodes the halos can be. +# This is set at a very safe 0.5, but can probably be much lower at +# ~.05 - .15 for very sparse graphs. +# @return halos (np.ndarray shape(k, nNodes/5) Holds the halo nodes for each +# partition. May want another option to deal with extremely +# dense graphs. +# @return halo_ct (np.ndarray (k)) Number of nodes in each partition's halo. +@jit(nopython=True) +def get_core_halo(nodeIPartition, nodeIConnections, nodeIDegree, k, + order=2, maxHaloFraction=.5): + + nNodes = nodeIPartition.shape[0] + + # Again these are filled with nNodes, + # extract true halos with: halos < nNodes as a mask. + halos = np.full((k, int(nNodes*maxHaloFraction)), nNodes, dtype=np.int32) + halo_ct = np.zeros(k, dtype=np.int32) + + if order == 1: + # First round of populating only the core's nearest neighbors. + for i in range(nNodes): + iK = nodeIPartition[i] + deg_i = nodeIDegree[i] + for j in range(deg_i): + node_j = nodeIConnections[i, j] + jK = nodeIPartition[node_j] + + # Checks if in core, checks if in halo + if jK != iK and node_j not in halos[iK]: + halos[iK, int(halo_ct[iK])] = node_j + halo_ct[iK] += 1 + + elif order > 1: + # First round of populating only the core's nearest neighbors. + for i in range(nNodes): + iK = nodeIPartition[i] + deg_i = nodeIDegree[i] + for j in range(deg_i): + node_j = nodeIConnections[i, j] + jK = nodeIPartition[node_j] + if jK != iK and node_j not in halos[iK]: + halos[iK, halo_ct[iK]] = node_j + halo_ct[iK] += 1 + + # Populate halo's neighbors (order - 1) times to get + # the 'order'th nearest neighbors. + for ord in range(order - 1): + # Loop over each halo + for haloK in range(k): + + curr_halo = halos[haloK] + nodes_in_curr_halo = halo_ct[haloK] + + # Loop over nodes in current halo. + for halo_node in curr_halo[:nodes_in_curr_halo]: + + # Loop over neighbors of current node. + for halo_node_neighbor in range(nodeIDegree[halo_node]): + + neigh = nodeIConnections[halo_node, halo_node_neighbor] + + # Checks that node isn't in core or already in halo. + if haloK != nodeIPartition[neigh] and neigh not in halos[haloK]: + halos[haloK, halo_ct[haloK]] = neigh + halo_ct[haloK] += 1 + return halos, halo_ct + + # Compute the core+halo sizes. + +## Get the core and halo indices +# @brief Gets the halos given a list of cores and a graph +# @param core list of cores +# @param graph Graph to extract the halos from +# @param njumps It will search the halos among the "njumps" nearest neighbors +# +def get_coreHaloIndices(eng, core,graph,njumps, *args): + coreHalo = np.array(core.copy()) + nc = len(coreHalo) + nch = nc + nnodes = len(graph[:,0]) + nx = np.zeros((nnodes),dtype=bool) + nx[:] = False # $$$ ??? what is nx ??? + nx[coreHalo] = True + #Add halos from graph + jump = 0 + jumps_done_but_looking_for_odd = False + extraAtoms = [] + while jump < njumps: + nc1 = nch + for k in range(nc1): + i = coreHalo[k] + + nxFalseMask = (nx[graph[i,1:graph[i,0]+1]] == False) + if jumps_done_but_looking_for_odd == False: + nch += np.sum(nxFalseMask) + coreHalo = np.append(coreHalo, graph[i,1:graph[i,0]+1][nxFalseMask]) + nx[graph[i,1:graph[i,0]+1]] = True + # else: + # for kk in range(1, graph[i,0]+1): + # j = graph[i,kk] + # if (nx[j] == False) and (args[0].valency[args[1].symbols[args[1].types[j]]] ) % 2 == 1: + # nch = nch + 1 + # coreHalo = np.append(coreHalo, int(j)) + # extraAtoms.append(int(j)) + # graph[core[0]][graph[core[0]][0]+1] = j + # graph[core[0]][0] += 1 + # graph[core[0]][1:graph[core[0]][0]+1] = sorted(graph[core[0]][1:graph[core[0]][0]+1]) + # print('APPENDED EXTRA', j) + # nx[j] = True + # if(eng.interface == "PySEQM"): coreHalo = sorted(coreHalo) + # return coreHalo, nc + + # if jump == njumps - 1 and args: + # num_el = 0 + # for II in range(len(coreHalo)): + # num_el += args[0].valency[args[1].symbols[args[1].types[coreHalo][II]]] + # #print('NumAt:', len(coreHalo), 'NumEl:', num_el) + # if num_el%2 != 0: + # #print('Odd NumEl:', num_el, '. Looking for an extra atom.') + # jumps_done_but_looking_for_odd = True + # jump -= 1 + + jump += 1 + + + # if not jumps_done_but_looking_for_odd: + # print('\n') + + if(eng.interface == "PySEQM"): coreHalo = sorted(coreHalo) + return coreHalo, nc + +## coords_partition +# @brief Computes refined graph partitioning from either coordinates or +# the globally thresholded graph from DM (to be added) +# @param systemFilename (str): System file name to parse for structural info. +# @param k (int): Number of partitions in the system. +# @param domainDecomp (List): Number of domains to decomp along x, y, z. +# nx*ny*nz must be divisor of k. +# @param numSwapRuns (int): Number of runs to compute node partition flips. +# @param numMitRuns (int): Number of runs to mitigate large core+halo sizes. +# @param device (str): Device for torch tensores used in spatial partitioning. +# @param cutoff (float): Cutoff for edges between nodes. Units same as coords. +# @param order (int): Number of steps along graph walk to take for halos. +# @param visualize (bool): Whether to visualize the Initial/Final node +# distributions and Core/Core+Halo sizes. +# @return partitionKCore (np.ndarray shape(k, largestCorePartition) +# @return partitionKHalo (np.ndarray shape(k, largestHaloPartition) +# @return partitionKNumCore (int): Number of nodes in the core of partition k, +# e.g. partition_k_core[k,:partition_k_num_core[k]] returns core nodes. +# @return partitionKNumHalo (int): Number of nodes in the halo of partition k, +# e.g. partition_k_halo[k,:partition_k_num_halo[k]] returns halo nodes. +def coords_partition( + systemFilename, + k, + domainDecomp, + numSwapRuns=10, + numMitRuns=10, + device="cpu", + cutoff=1.8, + order=2, + visualize=False, + verbosity=1, +): + # Carries out the initial placement of nodes into reasonable partitions. + ( + Gp, + k, + nodeIDegree, + nodeIPartition, + nodeIConnections, + nodeICuts, + partitionKNumNodes, + ) = _initial_partition_from_coordinates( + systemFilename, + k, + domainDecomp, + device="cpu", + cutoff=cutoff, + ) + p_k_nNodes0 = partitionKNumNodes.copy() + # t = time.time() + swapsTot = 0 + for i in range(numSwapRuns): + if verbosity > 0 and i == 0: + print("Beginning Flip Routine") + cut = int(np.sum(nodeICuts)/2) + balance = get_balance_from_partition_sizes(partitionKNumNodes) + relcut = cut / np.sum(nodeIDegree) + print( + f"Graph Statistics:\nIteration {i}\tcut:\t{cut}\trelcut:\t{relcut:.2f}\tbalance:\t{balance:.2f}" + ) + + if DEBUG_LEVEL > 0: + assert ( + np.sum(partitionKNumNodes) == nodeIDegree.shape[0] + ), f"Number of nodes not adding up. SumPartitionSizes:{np.sum(partitionKNumNodes)} vs Nodes:{nodeIDegree.shape[0]}" + + cut, cutsIK, nodeIPartition, partitionKNumNodes, swaps = do_partition_flips( + Gp, + k, + nodeIDegree, + nodeIConnections, + nodeIPartition, + partitionKNumNodes, + ) + assert ( + np.sum(partitionKNumNodes) == nodeIDegree.shape[0] + ), f"Number of nodes not adding up. SumPartitionSizes:{np.sum(partitionKNumNodes)} vs Nodes:{nodeIDegree.shape[0]}" + + swapsTot += swaps + + halosK, haloKNumNodes = get_core_halo( + nodeIPartition, nodeIConnections, nodeIDegree, k + ) + coreHaloSize = haloKNumNodes+partitionKNumNodes + coreHaloBalance = get_balance_from_partition_sizes(coreHaloSize) + + if verbosity > 0: + relcut = cut / np.sum(nodeIDegree) + balance = get_balance_from_partition_sizes(partitionKNumNodes) + + print( + f"Iteration {i+1}\tcut:\t{cut}\trelcut:\t{relcut:.2f}\tbalance:\t{balance:.2f}\tswaps:{swaps}\tCH-Balance:{coreHaloBalance:.2f}\t\tLargest CH:{np.max(coreHaloSize)}" + ) + + for i in range(numMitRuns): + cut, nodeIPartition, cutsIK, partitionKNumNodes = do_mitigate_large_partitions( + k, + nodeIDegree, + nodeIConnections, + nodeIPartition, + cutsIK, + partitionKNumNodes, + coreHaloSize, + ) + haloK, partitionKNumHalo = get_core_halo( + nodeIPartition, nodeIConnections, nodeIDegree, k + ) + coreHaloSize = partitionKNumHalo + partitionKNumNodes + + if verbosity > 0 and i == 0: + print("Beginning Routine to Mitigate large C+H Partitions") + relcut = cut / np.sum(nodeIDegree) + balance = get_balance_from_partition_sizes(partitionKNumNodes) + print( + f"Iteration {i+1}\tcut:\t{cut}\trelcut:\t{relcut:.2f}\tbalance:\t{balance:.2f}\tswaps:{swaps}\tCH-Balance:{coreHaloBalance:.2f}\t\tLargest CH:{np.max(coreHaloSize)}" + ) + elif verbosity > 0: + relcut = cut / np.sum(nodeIDegree) + balance = get_balance_from_partition_sizes(partitionKNumNodes) + print( + f"Iteration {i+1}\tcut:\t{cut}\trelcut:\t{relcut:.2f}\tbalance:\t{balance:.2f}\tswaps:{swaps}\tCH-Balance:{coreHaloBalance:.2f}\t\tLargest CH:{np.max(coreHaloSize)}" + ) + + if visualize: + rngmin = min([np.min(p_k_nNodes0), np.min(partitionKNumNodes)]) + rngmax = max([np.max(p_k_nNodes0), np.max(partitionKNumNodes)]) + plt.figure(figsize=(14, 8)) + plt.yticks([]) + plt.subplot(2, 2, 1) + plt.title("Initial Node Distribution") + plt.xlabel("Nodes in Partition") + plt.ylabel("Freqency") + # plt.plot(list(range(k)), p_k_nNodes0) + plt.hist( + p_k_nNodes0, + range=(rngmin, rngmax), + rwidth=0.85, + color="blue", + edgecolor="k", + ) + + plt.subplot(2, 2, 2) + plt.title("Final Node Distribution") + plt.xlabel("Nodes in Partition") + plt.ylabel("Freqency") + plt.hist( + partitionKNumNodes, + range=(rngmin, rngmax), + rwidth=0.85, + color="blue", + edgecolor="k", + ) + plt.legend() + + plt.subplot(2, 1, 2) + plt.title("Partition Sizes (Core and Core+Halo)") + plt.ylabel("Number of nodes") + plt.xlabel("Partition Number") + plt.bar(list(range(k)), coreHaloSize, label="C+H", color="red", edgecolor="k") + plt.bar( + list(range(k)), + partitionKNumNodes, + label="Core", + color="blue", + edgecolor="k", + ) + ch_max = np.max(coreHaloSize) + plt.yticks(np.arange(0, ch_max, int(ch_max) / 8)) + plt.xlim(0, k) + plt.legend() + plt.show() + + # Gather everything to return partitions/sizes. + haloK, partitionKNumHalo = get_core_halo( + nodeIPartition, nodeIConnections, nodeIDegree, k + ) + coreHaloSize = haloKNumNodes + partitionKNumNodes + + largestCorePartition = np.max(partitionKNumNodes) + largestHaloPartition = np.max(partitionKNumHalo) + partitionKCore = np.zeros((k, largestCorePartition), dtype = np.int32) + partitionKNumCore = partitionKNumNodes + + # Trim this down + partitionKHalo = haloK[:, :largestHaloPartition] + + coreKCounts = np.zeros(k, dtype=np.int32) + for i in range(nodeIPartition.shape[0]): + # Get node i partition. + iK = nodeIPartition[i] + # Put node i in partition K's list. + partitionKCore[iK,coreKCounts[iK]] = i + # Increment count in K. + coreKCounts[iK] += 1 + + return partitionKCore, partitionKHalo, partitionKNumCore, partitionKNumHalo + + + +## ========================================================== ## +## The following three functions are direct copies from the +## graph_partition.py file and completely unchanged for +## consistency's sake. + +## Metis partition +# @brief This will partition the graph according to the Metis method. +# Details about the metis method can be find in +# Metis site +# @param graph Graph to be partition +# @nparts Number of total parts +# @param verb Verbosity level +# @return parts Partition containing a "list of parts" where every +# part is a list of nodes +# +def metis_partition(graph, nparts, verb=False): + """Partitions using metis""" + if metisLib == False: + raise ImportError("Consider installing Metis library") + if nxLib == False: + raise ImportError("Consider installing Network X library") + if verb: + print("\nMetis partition:") + + nnodes = len(graph[:, 0]) + if(nparts > 1): + nxGraph = get_nx_graph(graph, 1.0) + # Metis partition metis call + # Metis returns nxParts which is a list of every's part (or "color") + # to where they belong. Node "i" belongs to "metisParts[i]" part. + edgecuts, metisParts = metis.part_graph(nxGraph, nparts) + + # The next lines will transform from metis to our partition format + parts = [] + for k in range(nparts): + parts.append([]) + for k in range(nnodes): + parts[metisParts[k]].append(k) + if verb: + for i in range(nparts): + print("part", i, "=", parts[i]) + + else: + + parts = [] + parts.append(list(range(0,nnodes))) + + # plot_graph(nxGraph) + return parts + + +## MinCut local partition optimization. +# @brief This will optimize a given partition based on a mincut algorithm. +# @param graph Graph to be partition **as adjacency matrix. +# FIXME: Make work with format in "get_a_small_graph" +# @param nparts Number of total parts +# @param verb Verbosity level +# @param numSwapRuns (int): Number of runs to flip node partitions +# @return parts Partition containing a "list of parts" where every +# part is a list of nodes +def mincut_partition(graph, nparts, verb, numSwapRuns = 20): + + #np.save('graph_for_robert.npy', graph) + #print('saved') + #exit() + #print(graph) + + nodeIDegree = np.sum(graph, axis = 0) + # Do a first partition + nNodes = len(graph[:, 0]) + parts = regular_partition(graph, nparts, verb) + + # Get part indices + nodeIPartition = get_parts_indices(parts, nNodes) + + # Evaluate the cut + cut = get_cut(nodeIPartition, graph) + + # Evaluate the balancing + bal = get_balance_from_partitions(parts) + + cutOld = 10**10 + # Precompute some needed info + max_node_degree = int(np.max(nodeIDegree)) + + nodeIConnections = np.full((nNodes, max_node_degree), nNodes) + print(nodeIConnections) + + if np.min(graph) < 0: + nodeIDegree = np.zeros(nNodes) + for i in range(nNodes): + firstNonConnection = np.where(graph[i]==-1)[0][0] + nodeIConnections[i,:firstNonConnection] = graph[i,:firstNonConnection] + nodeIDegree[i] = firstNonConnection + + else: + for i in range(nNodes): + nodeIConnections[i, : nodeIDegree[i]] = np.where(graph[i] == 1)[0] + partitionKNumNodes = np.zeros(nparts, dtype=int) + for i in range(nNodes): + iK = nodeIPartition[i] + partitionKNumNodes[iK] += 1 + + # whichPartNew = do_flips_precomp(whichPart, graph, nNodes, nparts, bal=bal) + nodeIConnections = np.full((nNodes, max_node_degree), nNodes) + for i in range(nNodes): + nodeIConnections[i, : nodeIDegree[i]] = np.where(graph[i] == 1)[0] + + for i in range(numSwapRuns): + (cut0, + cutsIK, + nodeIPartition, + partitionKNumNodes, + swaps) = do_partition_flips(graph, + nparts, + nodeIDegree, + nodeIConnections, + nodeIPartition, + partitionKNumNodes) + + cut = get_cut(nodeIPartition, graph) + bal = get_balance(nodeIPartition, nparts) + if verb: + print(f"Cut: {cut0}, Balance: {bal}") + if cut == cutOld: + break + else: + cutOld = cut + + parts = get_parts_from_indices(nodeIPartition, nparts) + + return parts + +## Spectral Clustering partition +# @brief This will partition a graph according to the Spectral Clustering method +# @param graph Graph to be partition +# @param nparts Number of total parts +# @param verb Verbosity level +# @return parts Partition containing a "list of parts" where every +# part is a list of nodes +# + +def spectral_clustering_partition(sdc, graph,nparts, coords, do_xyz, max_cluster_size=None, verb=False): + if(SpectralClusteringLib == False): + print("\n ERROR: Consider installing sklearn.cluster.SpectralClustering library \n") + exit(0) + if(verb):print("\nSpectral Clustering partition:") + + if do_xyz: # on xyz + print(' Computing spectral_clustering_partition on XYZ data.') + clustering = SpectralClustering(n_clusters=nparts, affinity="nearest_neighbors",random_state=0, + n_neighbors=sdc.SpecClustNN, n_jobs=1, n_init=10) # or 'rbf' 'nearest_neighbors' + cluster_labels = clustering.fit_predict(coords) + parts = [np.where(cluster_labels == i)[0].tolist() for i in range(nparts)] + + else: # do on graph + numNodes = graph.shape[0] # Add this line + adjacencyList = adjacency_matrix_to_graph(graph) + + # Convert adjacency list to adjacency matrix + adjacencyMatrixGraph = np.zeros((numNodes, numNodes)) + for i, neighbors in enumerate(adjacencyList): + adjacencyMatrixGraph[i, neighbors] = 1 + adjacencyMatrixGraph[neighbors, i] = 1 + + # Convert the adjacency matrix to the Laplacian matrix + laplacianMatrix = np.diag(np.sum(adjacencyMatrixGraph, axis=1)) - adjacencyMatrixGraph + + # Calculate the first `nparts` eigenvectors of the Laplacian matrix + _, eigenvectors = np.linalg.eigh(laplacianMatrix) + + # Use k-means clustering on the selected eigenvectors + clustering = SpectralClustering(n_clusters=nparts, affinity="rbf",random_state=0, + n_neighbors=10, n_jobs=32, n_init=20) # or 'rbf' 'nearest_neighbors' + cluster_labels = clustering.fit_predict(eigenvectors[:, :nparts]) + parts = [np.where(cluster_labels == i)[0].tolist() for i in range(nparts)] + + # Ensure clusters do not exceed max_cluster_size + if max_cluster_size: + parts = enforce_max_cluster_size_spectral(parts, adjacencyMatrixGraph, max_cluster_size) + + return parts + +def adjacency_matrix_to_graph(adjacency_matrix): + num_nodes = adjacency_matrix.shape[0] + adjacency_list = [adjacency_matrix[i, 1:1 + adjacency_matrix[i, 0]] for i in range(num_nodes)] + return adjacency_list + +# Function to enforce max cluster size with iterative check for the closest cluster with available space +def enforce_max_cluster_size_spectral(clusters, adjacency_matrix, max_size): + """ + Enforces a maximum cluster size by recursively applying spectral clustering + to clusters that exceed the maximum size. + """ + adjusted_clusters = [] + + for cluster in clusters: + if len(cluster) > max_size: + # Extract subgraph for the oversized cluster + subgraph = adjacency_matrix[np.ix_(cluster, cluster)] + + # Recursively apply spectral clustering to split the cluster + sub_clusters = recursive_spectral_clustering(subgraph, max_size) + + # Map sub-clusters back to original node indices + mapped_sub_clusters = [[cluster[node] for node in sub_cluster] for sub_cluster in sub_clusters] + adjusted_clusters.extend(mapped_sub_clusters) + else: + adjusted_clusters.append(cluster) + + return adjusted_clusters + +def recursive_spectral_clustering(subgraph, max_size): + """ + Recursively splits a cluster using spectral clustering until all sub-clusters are within the size limit. + """ + num_nodes = subgraph.shape[0] + if num_nodes <= max_size: + return [list(range(num_nodes))] + + # Compute the Laplacian matrix for the subgraph + laplacianMatrix = np.diag(np.sum(subgraph, axis=1)) - subgraph + + # Compute eigenvectors of the Laplacian matrix + _, eigenvectors = np.linalg.eigh(laplacianMatrix) + + # Perform Spectral Clustering + clustering = SpectralClustering(n_clusters=2, affinity="nearest_neighbors", random_state=0, n_neighbors=8, n_jobs=16, n_init=40) + cluster_labels = clustering.fit_predict(eigenvectors[:, :2]) + + # Divide nodes into two clusters + cluster1 = np.where(cluster_labels == 0)[0].tolist() + cluster2 = np.where(cluster_labels == 1)[0].tolist() + + # Recursively apply to each cluster if they exceed the max size + final_clusters = [] + if len(cluster1) > max_size: + final_clusters.extend(recursive_spectral_clustering(subgraph[np.ix_(cluster1, cluster1)], max_size)) + else: + final_clusters.append(cluster1) + + if len(cluster2) > max_size: + final_clusters.extend(recursive_spectral_clustering(subgraph[np.ix_(cluster2, cluster2)], max_size)) + else: + final_clusters.append(cluster2) + + return final_clusters + + +## Regular partition +# @brief This will partition a graph in the most +# trivial way. Partition \f$ \Pi \f$ being: +# \f[ +# \Pi = \{\{1,...k\},\{k+1,...,2k\},...,\{(n-2)(k+1),...,(n-1)k\},\{(n-1)(k+1),...,N\}\} +# \f] +# where \f$ N = \f$ total nodes, and \f$ k = E(N/n) \f$. +# @param graph Graph to be partition +# @param nparts Number of total parts +# @param verb Verbosity level +# @return parts Partition containing a "list of parts" where every +# part is a list of nodes +# +def regular_partition(graph, nparts, verb=False): + if verb: + print("\nRegular partition:") + nnodes = len(graph[:, 0]) + nnodesInPart = int(nnodes / nparts) + parts = [] + for i in range(nparts): + parti = [] + for k in range(i * nnodesInPart, (i + 1) * nnodesInPart): + parti.append(k) + parts.append(parti) + if verb: + print("part", i, "=", parti) + if nnodesInPart * nparts < nnodes: + for k in range(nnodesInPart * nparts, nnodes): + parti.append(k) + parts[nparts - 1] = parti + + return parts + +## Get the partition list from the index vector +# @param whichPart part index vector for every node +# @param nparts Number of parts +# @return part Partition list. Every element of the list +# is a list of node on every part +# +def get_parts_from_indices(whichPart, nparts): + parts = [[] for i in range(nparts)] + for i in range(len(whichPart)): + partIndex = whichPart[i] + parts[partIndex].append(i) + + return parts + + +## Write partitions (core+halo) to structure files. +# @param symbols (list): List of unique atomic symbols, +# order consistency required with types. +# @param types (arraylike): Element types +# @param coords (arraylike): Atomic positions +# @param partition_K_core (ndarray): Padded array with core partitions. +# @param parittion_K_num_core (ndarray): Number of atoms in each core partition +# @param partition_K_halo (ndarray): Padded array with halo partitions. +# @param parittion_K_num_halo (ndarray): Number of atoms in each halo partition +# @param outputType (str): xyz, pdb, traj, or pyseqm. +# @param outputFolder (str): Name for the output folder, must exist. +# @return None +def write_partitions_to_files(symbols, types, coords, + partition_K_core, partition_K_halo, + partition_K_num_core, partition_K_num_halo, + outputType="xyz", outputFolder="structures"): + + if not os.path.isdir(outputFolder): + raise ValueError(f"Folder: '{outputFolder}' does not exist to hold output.") + + numPartitions = partition_K_core.shape[0] + + all_coords = [] + all_types = [] + + for k in range(numPartitions): + coreIndices = partition_K_core[k, :partition_K_num_core[k]] + haloIndices = partition_K_halo[k, :partition_K_num_halo[k]] + partIndices = np.concat([coreIndices, haloIndices]) + + coords_k = coords[partIndices] + types_k = types[partIndices] + all_coords.append(coords_k) + all_types.append(types_k) + + if outputType == "xyz": + for k in range(numPartitions): + fileName = f"{outputFolder}/{k}.xyz" + coords_k = all_coords[k] + types_k = all_types[k] + write_xyz_coordinates(fileName, coords_k, types_k, symbols) + + elif outputType == "pdb": + for k in range(numPartitions): + fileName = f"{outputFolder}/{k}.pdb" + coords_k = all_coords[k] + types_k = all_types[k] + write_pdb_coordinates(fileName, coords_k, types_k, symbols) + + elif outputType == "traj": + try: + from ase.io.trajectory import Trajectory + from ase import Atoms + except ImportError: + raise ImportError("ASE must be installed to write to .traj files") + + traj = Trajectory(f"{outputFolder}/partitions.traj", "w") + + for k in range(numPartitions): + fileName = f"{outputFolder}/{k}.pdb" + coords_k = all_coords[k] + types_k = all_types[k] + syms_k = [symbols[i] for i in types_k] + atoms_k = Atoms(symbols=syms_k, positions=coords_k) + traj.write(atoms_k) + + elif outputType.lower() == "pyseqm": + ch_sizes = partition_K_num_core + partition_K_num_halo + pad_dim = np.max(ch_sizes) + + R = np.zeros((numPartitions, pad_dim, 3)) + Z = np.zeros((numPartitions, pad_dim)) + + pt = PeriodicTable() + for k in range(numPartitions): + Z_k = np.array([pt.get_atomic_number(symbols[i]) for i in all_types[k]]) + inds = np.argsort(Z_k)[::-1] + ch_k = len(inds) + + assert len(Z_k) == len(all_coords[k]) + R[k, :ch_k] = np.array(all_coords[k])[inds] + Z[k, :ch_k] = Z_k[inds] + + np.save(f"{outputFolder}/R.npy", R) + np.save(f"{outputFolder}/Z.npy", Z) + + + +## Get partition indices +# @brief Get a vector indicating which is the part index of a particular +# node. +# @param parts Partition containing a "list of parts" where every +# part is a list of nodes +# nnodes Number of nodes in the graph. +# +def get_parts_indices(parts, nnodes): + whichPart = np.zeros((nnodes), dtype=int) + partIndex = -1 + for part in parts: + partIndex = partIndex + 1 + for node in part: + whichPart[node] = partIndex + return whichPart + +## Get the core and halo indices +# @brief Gets the halos given a list of cores and a graph +# @param core list of cores +# @param graph Graph to extract the halos from +# @param njumps It will search the halos among the "njumps" nearest neighbors +# +def get_coreHaloIndices(core, graph, njumps, eng=None): + + # There are too many differences in how these things are computed across codes, at some point these + # need to be universalized, or we need to ship functions like this off to interface specific python files + # where the I/O is made consistent and we just have a simple function call here to handle the internal logic. + if eng is not None: + if eng.interface == "PySEQM": + print("in pyseqm block") + coreHalo = np.array(core.copy()) + nc = len(coreHalo) + nch = nc + nnodes = len(graph[:,0]) + nx = np.zeros((nnodes),dtype=bool) + nx[:] = False # $$$ ??? what is nx ??? + nx[coreHalo] = True + #Add halos from graph + jump = 0 + jumps_done_but_looking_for_odd = False + extraAtoms = [] + while jump < njumps: + nc1 = nch + for k in range(nc1): + i = coreHalo[k] + + nxFalseMask = (nx[graph[i,1:graph[i,0]+1]] == False) + if jumps_done_but_looking_for_odd == False: + nch += np.sum(nxFalseMask) + coreHalo = np.append(coreHalo, graph[i,1:graph[i,0]+1][nxFalseMask]) + nx[graph[i,1:graph[i,0]+1]] = True + jump += 1 + + coreHalo = sorted(coreHalo) + + return coreHalo, nc, nch + else: + + nc = len(core) + coreHalo = []*nc + coreHalo[:] = core[:] + nch = nc + nnodes = len(graph[:, 0]) + nx = np.zeros((nnodes), dtype=bool) + nx[:] = False # Logical mask + + for k in range(nc): + i = coreHalo[k] + if i != -1: + nx[i] = True + # Add halos from graph + for jump in range(njumps): + nc1 = nch + for k in range(nc1): + i = coreHalo[k] + degI = graph[i, 0] + for kk in range(1, degI+1): + # $$$ also this cycles needs to be interrupted when reaching -1 ??? + j = graph[i, kk] + if (not nx[j]): + nch = nch + 1 + coreHalo.append(j) + nx[j] = True + return coreHalo, nc, nch + +def get_coreHaloIndicesPYSEQM(eng, core,graph,njumps, *args): + coreHalo = np.array(core.copy()) + nc = len(coreHalo) + nch = nc + nnodes = len(graph[:,0]) + nx = np.zeros((nnodes),dtype=bool) + nx[:] = False # $$$ ??? what is nx ??? + nx[coreHalo] = True + #Add halos from graph + jump = 0 + jumps_done_but_looking_for_odd = False + extraAtoms = [] + while jump < njumps: + nc1 = nch + for k in range(nc1): + i = coreHalo[k] + + nxFalseMask = (nx[graph[i,1:graph[i,0]+1]] == False) + if jumps_done_but_looking_for_odd == False: + nch += np.sum(nxFalseMask) + coreHalo = np.append(coreHalo, graph[i,1:graph[i,0]+1][nxFalseMask]) + nx[graph[i,1:graph[i,0]+1]] = True + # else: + # for kk in range(1, graph[i,0]+1): + # j = graph[i,kk] + # if (nx[j] == False) and (args[0].valency[args[1].symbols[args[1].types[j]]] ) % 2 == 1: + # nch = nch + 1 + # coreHalo = np.append(coreHalo, int(j)) + # extraAtoms.append(int(j)) + # graph[core[0]][graph[core[0]][0]+1] = j + # graph[core[0]][0] += 1 + # graph[core[0]][1:graph[core[0]][0]+1] = sorted(graph[core[0]][1:graph[core[0]][0]+1]) + # print('APPENDED EXTRA', j) + # nx[j] = True + # if(eng.interface == "PySEQM"): coreHalo = sorted(coreHalo) + # return coreHalo, nc + + # if jump == njumps - 1 and args: + # num_el = 0 + # for II in range(len(coreHalo)): + # num_el += args[0].valency[args[1].symbols[args[1].types[coreHalo][II]]] + # #print('NumAt:', len(coreHalo), 'NumEl:', num_el) + # if num_el%2 != 0: + # #print('Odd NumEl:', num_el, '. Looking for an extra atom.') + # jumps_done_but_looking_for_odd = True + # jump -= 1 + + jump += 1 + + + # if not jumps_done_but_looking_for_odd: + # print('\n') + + if(eng.interface == "PySEQM"): coreHalo = sorted(coreHalo) + return coreHalo, nc + diff --git a/src/sedacs/integrate.py b/src/sedacs/integrate.py new file mode 100644 index 00000000..4b975f6f --- /dev/null +++ b/src/sedacs/integrate.py @@ -0,0 +1,31 @@ +"""Do MD timestep using GJF w half velocity""" + +import numpy as np + +__all__ = ["do_timestep"] + + +## Do time step integration. +# @brief +# @param +# @param +# @param +# @param +# @verb Verbosity +# +def do_timestep(coords, vels, forces, masses, gamma, dt, kT=None, verb=False): + n = np.shape(coords[:, :]) + + kT = 8.610e-5 * 300.0 + + vels[:, :] = vels[:, :] + dt * forces[:, :] / 2.0 / masses[:, :] + coords[:, :] = coords[:, :] + dt * vels[:, :] / 2.0 + + if gamma > 0 and kT is not None: + c = (1 - gamma * dt / 2.0) / (1 + gamma * dt / 2.0) + vels[:, :] = c * vels[:, :] + np.sqrt((1 - c**2) * kT / masses[:, :]) * np.random.normal(0, 1, n) + + coords[:, :] = coords[:, :] + dt * vels[:, :] / 2.0 + vels[:, :] = vels[:, :] + dt * forces[:, :] / 2.0 / masses[:, :] + + return coords, vels diff --git a/src/sedacs/interface_files.py b/src/sedacs/interface_files.py new file mode 100644 index 00000000..9bb9c9a1 --- /dev/null +++ b/src/sedacs/interface_files.py @@ -0,0 +1,120 @@ +# Import the proper engine + +import os +import subprocess +import sys + +import numpy as np + +# from sedacs.proxies.first_level import * +from sedacs.file_io import write_xyz_coordinates + +is_engine_up = False + + +__all__ = ["get_instruction", "send_instruction", "get_hamiltonian_files"] + + +## Write a matrix +# @brief Writes a numpy 2D array (a matrix) +# @param fileName Name of the file to be written +# @return mat 2D numpy array +# +def read_matrix(fileName): + mat = np.load(fileName + ".npy", allow_pickle=True) + open(fileName + ".npy", "r").close() + return mat + + +## Read instruction +# @brief Reads an instruction from the instruction file +# @param fileName Name of the instructions file +# @return instr String containing instruction +# +def get_instruction(fileName): + instrFile = open(fileName, "r") + for lines in instrFile: + instr = lines.split()[0] + instrFile.close() + return instr + + +## Send instruction +# @brief This will write an instruction into the instruction file +# @param fileName The name of the instruction file +# +def send_instruction(instruction, fileName): + if fileName is None: + fileName = "/tmp/instructions.dat" + + haveFile = os.path.exists(fileName) + + if not haveFile: + cmd = "echo NONE > " + fileName + os.system(cmd) + + # Hold the execution until START is in the file! + go = False + while not go: + instructionFile = open(fileName, "r") + for lines in instructionFile: + print(lines.split()[0]) + instruction = lines.split()[0] + instructionFile.close() + if instruction == "START": + go = True + + instructionFile = open(fileName, "w") + print("Action File", fileName, "Instruction:", instruction) + print(instruction, file=instructionFile) + instructionFile.close() + + +## Get Hamiltonian +# @brief Get a Hamiltonian using a file type of interface +# @param eng Engine object containing the description of the engine +# @param A 2D Nx3 numpy array that stores the position for every atom. +# Example: z-coordinate of atom 1 = `coords[0,2]`. It can be initialized +# as `coords = np.zeros((nats,3))` where `nats` is the number of atoms. +# @param atomTypes for each atom, e.g., the first atom is of type `atomTypes[0]`. This can be initialized as `atomTypes = np.zeros((nats),dtype=int)` +# @param symbols Symbols for each atom type, e.g, the element symbol of the first atom is `symbols[types[0]]` +# @param verb Verbosity level +# +def get_hamiltonian_files(engine, coords, atomTypes, symbols, verb): + # Write coordinates in a file + dataFileName = engine.path + "/data.dat" + instrFileName = engine.path + "/instructions.dat" + # Run the server and keep it running + if not engine.up: + cmd = engine.run + subprocess.Popen(["nohup", cmd], stdout=open("/dev/null", "w")) + + write_xyz_coordinates(dataFileName, coords, atomTypes, symbols) + # sys.exit(0) + send_instruction("GET_HAMILTONIAN", instrFileName) + + instr = get_instruction(instrFileName) + + # Hold the execution until START is in the file! + go = False + while not go: + instructionFile = open(instrFileName, "r") + for lines in instructionFile: + print(lines.split()[0]) + instruction = lines.split()[0] + instructionFile.close() + if instruction == "START": + go = True + if instruction == "STOP": + sys.exit(0) + instructionFile.close() + + print("INSTRUCTION", instr) + if go: + hamiltonian = read_matrix(dataFileName) + else: + return None # FIXME: This is not the best way to handle this! + + print(hamiltonian) + engine.up = True + return hamiltonian diff --git a/src/sedacs/interface_modules.py b/src/sedacs/interface_modules.py new file mode 100644 index 00000000..2456084b --- /dev/null +++ b/src/sedacs/interface_modules.py @@ -0,0 +1,749 @@ +import ctypes +import os + +import numpy as np +from sedacs.message import * +import sys +from sedacs.engine import Engine +from sedacs.globals import * +from sedacs.periodic_table import PeriodicTable + +# import the shared library +try: + fortlibFileName = os.environ["PROXYA_FORTRAN_PATH"] + "/proxya_fortran.so" + fortlib = True +except Exception as e: + fortlib = False + +try: + pylibFileName = os.environ["PROXYA_PYTHON_PATH"] + pylib = True +except Exception as e: + pylib = False + +# # try: +# # #fortlib = ctypes.CDLL(fortlibFileName) +# # get_hamiltonian_fortran = fortlib.proxya_get_hamiltonian +# # get_density_matrix_fortran = fortlib.proxya_get_density_matrix +# # except Exception as e: +# # fortlib = None +# # +if( (not fortlib) and (not pylib)): + print(fortlib,pylib) + error_at("interface_modules","No specific fortran or python library exists") + raise e + +# try: + # from proxies.python.first_level import get_hamiltonian_proxy + # from proxies.python.first_level import get_density_matrix_proxy +# except Exception as e: + # pythlib = None + # raise e + +try: + #from proxies.python.first_level import get_hamiltonian_proxy + #from proxies.python.first_level import get_density_matrix_proxy + + #import inspect + #print(inspect.getfile(get_density_matrix_proxy)) + from proxies.python.hamiltonian import get_hamiltonian_proxy + from proxies.python.density_matrix import get_density_matrix_proxy + from proxies.python.evals_dvals import get_evals_dvals_proxy + + #from energy_and_forces import get_ppot_energy_expo_proxy + # #from energy_and_forces import get_ppot_forces_expo_proxy + # #from energy_and_forces import get_tb_forces_proxy + from proxies.python.init_proxy import init_proxy_proxy + from proxies.python.hamiltonian import build_coul_ham_proxy +except Exception as e: + pythlib = None + raise e + + +__all__ = ["get_hamiltonian_module", "get_density_matrix_module", + "get_ppot_energy_expo", "get_ppot_forces_expo", "init_proxy", + "get_tb_forces_module","build_coul_ham_module" + ] + +#Initialize the proxy code +def init_proxy(symbols,orbs): + init_proxy_proxy(symbols,orbs) + + +def build_coul_ham_module(eng,ham0,vcouls,types,charges,orbital_based,hindex,overlap=None,verb=False): + if eng.name == "ProxyAPython": + ham = build_coul_ham_proxy(ham0,vcouls,types,charges,orbital_based,hindex,overlap=overlap,verb=False) + elif eng.name == "ProxyAFortran": + error_at("build_coul_ham_module","ProxyAFortran version not implemented yet") + elif eng.name == "ProxyAC": + error_at("build_coul_ham_module","ProxyAC version not implemented yet") + elif eng.name == "LATTE": + ham = ham0 + else: + error_at("build_coul_ham_module","No specific engine type defined") + + return ham + + +def get_hamiltonian_module(eng,partIndex,nparts,norbs,latticeVectors,coords,atomTypes,symbols,get_overlap=True,verb=False,newsystem=True, keepmem=False): + if eng.name == "ProxyAPython": + if(get_overlap): + hamiltonian, overlap = get_hamiltonian_proxy(coords,atomTypes,symbols,get_overlap=get_overlap,verb=verb) + else: + hamiltonian = get_hamiltonian_proxy(coords,atomTypes,symbols,get_overlap=get_overlap,verb=verb) + + elif eng.name == "ProxyAFortran": + nats = len(coords[:, 0]) + norbs = nats + + coords_in = np.zeros(3 * nats) # Vectorized coordinates + for i in range(nats): + coords_in[3 * i] = coords[i, 0] + coords_in[3 * i + 1] = coords[i, 1] + coords_in[3 * i + 2] = coords[i, 2] + + # Specify arguments type as a pointers + get_hamiltonian_fortran.argtypes = [ + ctypes.c_int, + ctypes.c_int, + ctypes.POINTER(ctypes.c_double), + ctypes.POINTER(ctypes.c_int), + ctypes.POINTER(ctypes.c_double), + ctypes.POINTER(ctypes.c_double), + ctypes.c_bool, + ] + # Passing a pointer to Fotran + coords_ptr = coords.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + atomTypes_ptr = atomTypes.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + hamiltonian = np.zeros((norbs, norbs)) + overlap = np.zeros((norbs, norbs)) + ham_ptr = hamiltonian.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + over_ptr = overlap.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + err = get_hamiltonian_fortran( + ctypes.c_int(nats), ctypes.c_int(norbs), coords_ptr, atomTypes_ptr, ham_ptr, over_ptr, ctypes.c_bool(verb) + ) + elif eng.name == "LATTE": + + # Import the shared library + latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + + latteLib = ctypes.CDLL(latteLibFileName) + latte_compute_f = latteLib.latte_compute + + #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + pt = PeriodicTable() + compflag = 1 + nats = len(coords[:,0]) + ncores = norbs + + # Getting atomic numbers + nTypes = len(symbols) + atomicNumbers = np.zeros((nTypes),dtype=np.int32) + atomTypes32 = np.zeros((nats),dtype=np.int32) + atomTypes32[:] = atomTypes + for i in range(len(symbols)): + atomicNumbers[i] = pt.get_atomic_number(symbols[i]) + + # Vectorizing 2D arrays for C-Fortran interoperability + coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates + forcesFlat_out = np.zeros(3 * nats) # Vectorized forces + hamFlat_out = np.zeros(norbs * norbs) # Vectorized hamiltonian + overFlat_out = np.zeros(norbs * norbs) # Vectorized overlap + dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix + evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency + dvalsFlat_out = np.zeros(norbs) # Same here + chargesFlat_out = np.zeros(nats) # Same here + energyFlat_out = np.zeros(1) # Same here + + for i in range(nats): + coordsFlat_in[3*i] = coords[i,0] + coordsFlat_in[3*i+1] = coords[i,1] + coordsFlat_in[3*i+2] = coords[i,2] + + latticeVectorsFlat = np.zeros((9)) + latticeVectorsFlat[0] = latticeVectors[0,0] + latticeVectorsFlat[1] = latticeVectors[0,1] + latticeVectorsFlat[2] = latticeVectors[0,2] + + latticeVectorsFlat[3] = latticeVectors[1,0] + latticeVectorsFlat[4] = latticeVectors[1,1] + latticeVectorsFlat[5] = latticeVectors[1,2] + + latticeVectorsFlat[6] = latticeVectors[2,0] + latticeVectorsFlat[7] = latticeVectors[2,1] + latticeVectorsFlat[8] = latticeVectors[2,2] + + vcoulsFlat = np.zeros(nats) + + # Inputs + coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + atomicNumbers_ptr = atomicNumbers.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + vcouls_ptr = vcoulsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + # Outputs + ham_ptr = hamFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + over_ptr = overFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + dm_ptr = dmFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + charges_ptr = chargesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + evals_ptr = evalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + dvals_ptr = dvalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + energy_ptr = energyFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + forces_ptr = forcesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + # Call to the fortran funtion + err = latte_compute_f( + ctypes.c_int(compflag), + ctypes.c_int(partIndex+1), + ctypes.c_int(nparts), + ctypes.c_int(norbs), + ctypes.c_int(ncores), + ctypes.c_int(nats), + ctypes.c_int(nats), + ctypes.c_int(nTypes), + ctypes.c_double(0.0), + vcouls_ptr, + coords_ptr, + latticeVectors_ptr, + atomTypes_ptr, + atomicNumbers_ptr, + ham_ptr, + over_ptr, + dm_ptr, + charges_ptr, + evals_ptr, + dvals_ptr, + energy_ptr, + forces_ptr, + ctypes.c_int(verb), + ctypes.c_int(newsystem), + ctypes.c_int(keepmem), + ) + + # Back to a 2D array for the forces + hamiltonian = np.zeros((norbs, norbs)) + overlap = np.zeros((norbs, norbs)) + + for i in range(norbs): + hamiltonian[:, i] = hamFlat_out[norbs * i : norbs + norbs * i] + overlap[:, i] = overFlat_out[norbs * i : norbs + norbs * i] + + else: + error_at("get_hamiltonian_module","No specific engine type defined") + + if(get_overlap): + return hamiltonian, overlap + else: + return hamiltonian + + +def get_evals_dvals_modules(eng,partIndex,nparts,latticeVectors,coords,atomTypes,symbols,hamiltonian,vcouls,nocc,norbsInCore=None,method="Diag",accel="No",mu=None,etemp=0.0,overlap=None,full_data=False,verb=False,newsystem=True): + if eng.name == "ProxyAPython": + evals, dvals = get_evals_dvals_proxy(hamiltonian, nocc, norbsInCore=norbsInCore, method="Diag", accel="No", mu=mu, etemp=etemp, overlap=overlap, full_data=full_data, verb=verb) + + elif eng.name == "ProxyAFortran": + error_at("get_evals_dvals_modules","Not implemented yet.") + + elif eng.name == "LATTE": + + # Import the shared library + latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + + latteLib = ctypes.CDLL(latteLibFileName) + latte_compute_f = latteLib.latte_compute + + #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + pt = PeriodicTable() + compflag = 2 + nats = len(coords[:,0]) + norbs = len(hamiltonian[:,0]) + keepmem = False + + # Getting atomic numbers + nTypes = len(symbols) + atomicNumbers = np.zeros((nTypes),dtype=np.int32) + atomTypes32 = np.zeros((nats),dtype=np.int32) + atomTypes32[:] = atomTypes + for i in range(len(symbols)): + atomicNumbers[i] = pt.get_atomic_number(symbols[i]) + + # Vectorizing 2D arrays for C-Fortran interoperability + coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates + forcesFlat_out = np.zeros(3 * nats) # Vectorized forces + hamFlat_out = np.zeros(norbs * norbs) # Vectorized hamiltonian + overFlat_out = np.zeros(norbs * norbs) # Vectorized overlap + dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix + evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency + dvalsFlat_out = np.zeros(norbs) # Same here + chargesFlat_out = np.zeros(nats) # Same here + energyFlat_out = np.zeros(1) # Same here + + for i in range(nats): + coordsFlat_in[3*i] = coords[i,0] + coordsFlat_in[3*i+1] = coords[i,1] + coordsFlat_in[3*i+2] = coords[i,2] + + latticeVectorsFlat = np.zeros((9)) + latticeVectorsFlat[0] = latticeVectors[0,0] + latticeVectorsFlat[1] = latticeVectors[0,1] + latticeVectorsFlat[2] = latticeVectors[0,2] + + latticeVectorsFlat[3] = latticeVectors[1,0] + latticeVectorsFlat[4] = latticeVectors[1,1] + latticeVectorsFlat[5] = latticeVectors[1,2] + + latticeVectorsFlat[6] = latticeVectors[2,0] + latticeVectorsFlat[7] = latticeVectors[2,1] + latticeVectorsFlat[8] = latticeVectors[2,2] + + # Inputs + coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + atomicNumbers_ptr = atomicNumbers.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + vcouls_ptr = vcouls.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + # Outputs + ham_ptr = hamFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + over_ptr = overFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + dm_ptr = dmFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + charges_ptr = chargesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + evals_ptr = evalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + dvals_ptr = dvalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + energy_ptr = energyFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + forces_ptr = forcesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + # Call to the fortran funtion + err = latte_compute_f( + ctypes.c_int(compflag), + ctypes.c_int(partIndex+1), + ctypes.c_int(nparts), + ctypes.c_int(norbs), + ctypes.c_int(int(norbsInCore)), + ctypes.c_int(nats), + ctypes.c_int(nats), + ctypes.c_int(nTypes), + ctypes.c_double(mu), + vcouls_ptr, + coords_ptr, + latticeVectors_ptr, + atomTypes_ptr, + atomicNumbers_ptr, + ham_ptr, + over_ptr, + dm_ptr, + charges_ptr, + evals_ptr, + dvals_ptr, + energy_ptr, + forces_ptr, + ctypes.c_int(verb), + ctypes.c_int(newsystem), + ctypes.c_int(keepmem), + ) + + #Back to a 2D array for the forces + evals = np.zeros((norbs)) + dvals = np.zeros((norbs)) + evals[:] = evalsFlat_out[:] + dvals[:] = dvalsFlat_out[:] + + return evals, dvals + + +def get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors,coords,atomTypes,symbols,hamiltonian,vcouls,nocc,norbsInCore=None,method="Diag",accel="No",mu=None,etemp=0.0,overlap=None,full_data=False,verb=False,newsystem=True,keepmem=False): + if eng.name == "ProxyAPython": + method = eng.method + accel = eng.accel + if(full_data): + density_matrix,evals,dvals = get_density_matrix_proxy(hamiltonian,nocc,norbsInCore=None,method=method,accel=accel,mu=mu, overlap=overlap,full_data=full_data,verb=False) + else: + density_matrix = get_density_matrix_proxy(hamiltonian,nocc,norbsInCore=None,method=method,accel=accel,mu=mu, overlap=overlap,full_data=full_data,verb=False) + elif eng.name == "ProxyAFortran": + # H needs to be flattened + norbs = len(hamiltonian[:, 0]) + ht = hamiltonian.T + # Specify arguments type as a pointers + get_density_matrix_fortran.argtypes = [ + ctypes.c_int, + ctypes.c_int, + ctypes.POINTER(ctypes.c_double), + ctypes.POINTER(ctypes.c_double), + ctypes.c_bool, + ] + # Passing a pointer to Fortran + hamiltonian_ptr = hamiltonian.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + density_matrix = np.zeros((norbs, norbs)) + density_matrix_ptr = density_matrix.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + err = get_density_matrix_fortran( + ctypes.c_int(norbs), ctypes.c_int(nocc), hamiltonian_ptr, density_matrix_ptr, ctypes.c_bool(verb) + ) + + elif eng.name == "LATTE": + + # Import the shared library + latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + + latteLib = ctypes.CDLL(latteLibFileName) + latte_compute_f = latteLib.latte_compute + + #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + pt = PeriodicTable() + compflag = 3 + nats = len(coords[:,0]) + + # Getting atomic numbers + nTypes = len(symbols) + atomicNumbers = np.zeros((nTypes),dtype=np.int32) + atomTypes32 = np.zeros((nats),dtype=np.int32) + atomTypes32[:] = atomTypes + for i in range(len(symbols)): + atomicNumbers[i] = pt.get_atomic_number(symbols[i]) + + # Vectorizing 2D arrays for C-Fortran interoperability + coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates + forcesFlat_out = np.zeros(3 * nats) # Vectorized forces + hamFlat_out = np.zeros(norbs * norbs) # Vectorized hamiltonian + overFlat_out = np.zeros(norbs * norbs) # Vectorized overlap + dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix + evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency + dvalsFlat_out = np.zeros(norbs) # Same here + chargesFlat_out = np.zeros(nats) # Same here + energyFlat_out = np.zeros(1) # Same here + + for i in range(nats): + coordsFlat_in[3*i] = coords[i,0] + coordsFlat_in[3*i+1] = coords[i,1] + coordsFlat_in[3*i+2] = coords[i,2] + + latticeVectorsFlat = np.zeros((9)) + latticeVectorsFlat[0] = latticeVectors[0,0] + latticeVectorsFlat[1] = latticeVectors[0,1] + latticeVectorsFlat[2] = latticeVectors[0,2] + + latticeVectorsFlat[3] = latticeVectors[1,0] + latticeVectorsFlat[4] = latticeVectors[1,1] + latticeVectorsFlat[5] = latticeVectors[1,2] + + latticeVectorsFlat[6] = latticeVectors[2,0] + latticeVectorsFlat[7] = latticeVectors[2,1] + latticeVectorsFlat[8] = latticeVectors[2,2] + + # Inputs + coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + atomicNumbers_ptr = atomicNumbers.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + vcouls_ptr = vcouls.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + # Outputs + ham_ptr = hamFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + over_ptr = overFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + dm_ptr = dmFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + charges_ptr = chargesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + evals_ptr = evalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + dvals_ptr = dvalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + energy_ptr = energyFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + forces_ptr = forcesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + + # Call to the fortran funtion + err = latte_compute_f( + ctypes.c_int(compflag), + ctypes.c_int(partIndex+1), + ctypes.c_int(nparts), + ctypes.c_int(norbs), + ctypes.c_int(int(norbsInCore)), + ctypes.c_int(nats), + ctypes.c_int(nats), + ctypes.c_int(nTypes), + ctypes.c_double(mu), + vcouls_ptr, + coords_ptr, + latticeVectors_ptr, + atomTypes_ptr, + atomicNumbers_ptr, + ham_ptr, + over_ptr, + dm_ptr, + charges_ptr, + evals_ptr, + dvals_ptr, + energy_ptr, + forces_ptr, + ctypes.c_int(verb), + ctypes.c_int(newsystem), + ctypes.c_int(keepmem), + ) + + + #Back to a 2D array for the forces + density_matrix = np.zeros((norbs, norbs)) + charges = np.zeros((nats)) + charges[:] = chargesFlat_out[:] + + for i in range(norbs): + density_matrix[:, i] = dmFlat_out[norbs * i : norbs + norbs * i] + + return density_matrix, charges + + else: + method = eng.method + accel = eng.accel + if(full_data): + density_matrix,evals,dvals = get_density_matrix_proxy(hamiltonian,nocc,norbsInCore=None,method=method,accel=accel,mu=mu, overlap=overlap,full_data=full_data,verb=False) + else: + density_matrix = get_density_matrix_proxy(hamiltonian,nocc,norbsInCore=None,method=method,accel=accel,mu=mu,overlap=overlap,full_data=full_data,verb=False) +# error_at("get_density_matrix_module","No specific engine type defined") + + if(full_data): + return density_matrix,evals,dvals + else: + return density_matrix + +def get_energy_forces_modules(eng,partIndex,nparts,norbs,hamiltonian,latticeVectors,coords,atomTypes,symbols,vcouls,nocc,norbsInCore=None,numberOfCoreAtoms=None,mu=None,etemp=0.0,verb=False,newsystem=True,keepmem=False): + if eng.name == "ProxyAPython": + error_at("get_energy_force_modules","Not implemented yet.") + + elif eng.name == "ProxyAFortran": + error_at("get_energy_force_modules","Not implemented yet.") + + elif eng.name == "LATTE": + + # Import the shared library + latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + + latteLib = ctypes.CDLL(latteLibFileName) + latte_compute_f = latteLib.latte_compute + + #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + pt = PeriodicTable() + compflag = 4 + nats = len(coords[:,0]) + + # Getting atomic numbers + nTypes = len(symbols) + atomicNumbers = np.zeros((nTypes),dtype=np.int32) + atomTypes32 = np.zeros((nats),dtype=np.int32) + atomTypes32[:] = atomTypes + for i in range(len(symbols)): + atomicNumbers[i] = pt.get_atomic_number(symbols[i]) + + # Vectorizing 2D arrays for C-Fortran interoperability + coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates + forcesFlat_out = np.zeros(3 * nats) # Vectorized forces + hamFlat_out = np.zeros(norbs * norbs) # Vectorized hamiltonian + overFlat_out = np.zeros(norbs * norbs) # Vectorized overlap + dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix + evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency + dvalsFlat_out = np.zeros(norbs) # Same here + chargesFlat_out = np.zeros(nats) # Same here + energyFlat_out = np.zeros(1) # Same here + + for i in range(nats): + coordsFlat_in[3*i] = coords[i,0] + coordsFlat_in[3*i+1] = coords[i,1] + coordsFlat_in[3*i+2] = coords[i,2] + + latticeVectorsFlat = np.zeros((9)) + latticeVectorsFlat[0] = latticeVectors[0,0] + latticeVectorsFlat[1] = latticeVectors[0,1] + latticeVectorsFlat[2] = latticeVectors[0,2] + + latticeVectorsFlat[3] = latticeVectors[1,0] + latticeVectorsFlat[4] = latticeVectors[1,1] + latticeVectorsFlat[5] = latticeVectors[1,2] + + latticeVectorsFlat[6] = latticeVectors[2,0] + latticeVectorsFlat[7] = latticeVectors[2,1] + latticeVectorsFlat[8] = latticeVectors[2,2] + + # Inputs + coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + atomicNumbers_ptr = atomicNumbers.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + vcouls_ptr = vcouls.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + # Outputs + ham_ptr = hamFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + over_ptr = overFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + dm_ptr = dmFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + charges_ptr = chargesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + evals_ptr = evalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + dvals_ptr = dvalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + energy_ptr = energyFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + forces_ptr = forcesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + + # Call to the fortran funtion + err = latte_compute_f( + ctypes.c_int(compflag), + ctypes.c_int(partIndex+1), + ctypes.c_int(nparts), + ctypes.c_int(norbs), + ctypes.c_int(norbsInCore), + ctypes.c_int(numberOfCoreAtoms), + ctypes.c_int(nats), + ctypes.c_int(nTypes), + ctypes.c_double(mu), + vcouls_ptr, + coords_ptr, + latticeVectors_ptr, + atomTypes_ptr, + atomicNumbers_ptr, + ham_ptr, + over_ptr, + dm_ptr, + charges_ptr, + evals_ptr, + dvals_ptr, + energy_ptr, + forces_ptr, + ctypes.c_int(verb), + ctypes.c_int(newsystem), + ctypes.c_int(keepmem), + ) + + # Back to a 2D array for the forces + forces = np.zeros((nats, 3)) + for i in range(nats): + forces[i, 0] = forcesFlat_out[i * 3 + 0] + forces[i, 1] = forcesFlat_out[i * 3 + 1] + forces[i, 2] = forcesFlat_out[i * 3 + 2] + + else: + error_at("get_energy_force_modules","No specific engine type defined") + + return energyFlat_out[0], forces + +def get_ppot_energy_expo(coords,types): + + energy = get_ppot_energy_expo_proxy(coords,types) + + return energy + + +def get_ppot_forces_expo(coords,types): + + forces = get_ppot_forces_expo_proxy(coords,types) + + return forces + + +def get_tb_forces_module(ham,rho,charges,field,coords,atomTypes,symbols,overlap=None,verb=False): + + forces = get_tb_forces_proxy(ham,rho,charges,field,coords,atomTypes,symbols,overlap=None,verb=False) + + return forces + + + +def call_latte_modules(eng,Sy,verb=False,newsystem=True): + + if eng.name == "LATTE": + + coords = Sy.coords + latticeVectors = Sy.latticeVectors + symbols = np.array(Sy.symbols)[Sy.types] + types = Sy.types + + # Import the shared library + latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + + latteLib = ctypes.CDLL(latteLibFileName) + latte_compute_f = latteLib.latte_c_bind + + #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + pt = PeriodicTable() + compflag = np.zeros(5) + nats = len(coords[:,0]) + norbs = Sy.norbs + err = True + + # Getting atomic numbers + #nTypes = len(symbols) + nTypes = len(Sy.symbols) + atomTypes32 = np.zeros((nats),dtype=np.int32) + atomTypes32[:] = Sy.types + 1 + #masses = np.where(symbols == 'H', 1.0, 0.0) + np.where(symbols == 'O', 16.0, 0.0) + masses = np.zeros(len(Sy.symbols),dtype=np.float64) + for i in range(len(Sy.symbols)): + masses[i] = pt.mass[ pt.get_atomic_number(Sy.symbols[i]) ] + + # Vectorizing 2D arrays for C-Fortran interoperability + coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates + forcesFlat_out = np.zeros((3, nats), order='F') # Vectorized forces + chargesFlat_out = np.zeros(nats) # Same here + velFlat_out = np.zeros((3, nats), order='F') + energyFlat_out = np.zeros(1) + virialFlat_out = np.zeros((6,), order='F') +# coords = coords.T +# coords = np.asfortranarray(coords) + for i in range(nats): + coordsFlat_in[3*i] = coords[i,0] + coordsFlat_in[3*i+1] = coords[i,1] + coordsFlat_in[3*i+2] = coords[i,2] + + +# latticeVectorsFlat = np.zeros((9)) + xlo = np.zeros(3) + xhi = np.zeros(3) + xhi[0] = latticeVectors[0,0] + xhi[1] = latticeVectors[1,1] + xhi[2] = latticeVectors[2,2] + #xlo[:] = -100 + #xhi[:] = 100 + xy, xz, yz = 0.0, 0.0, 0.0 + maxiter = -1 + + # Inputs + coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + #coords_ptr = coords.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + xlo_ptr = xlo.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + xhi_ptr = xhi.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + masses_ptr = masses.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + compflag_ptr = compflag.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + vel_ptr = velFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + # Outputs + charges_ptr = chargesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + forces_ptr = forcesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + energy_ptr = energyFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + virial_ptr = virialFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + # Call to the fortran funtion + latte_compute_f( + compflag_ptr, + ctypes.c_int(nats), + coords_ptr, + atomTypes_ptr, + ctypes.c_int(nTypes), + masses_ptr, + xlo_ptr, + xhi_ptr, + ctypes.c_double(xy), + ctypes.c_double(xz), + ctypes.c_double(yz), + forces_ptr, + ctypes.c_int(maxiter), + energy_ptr, + vel_ptr, + ctypes.c_double(0.5), + virial_ptr, + charges_ptr, + ctypes.c_int(1), + ctypes.c_bool(err), + ) + + + #Back to a 2D array for the forces + charges = np.zeros((nats)) + charges[:] = chargesFlat_out[:] + + return charges + + else: + error_at("call_latte_module","Not implemented yet") diff --git a/src/sedacs/interface_pyseqm.py b/src/sedacs/interface_pyseqm.py new file mode 100644 index 00000000..9708da79 --- /dev/null +++ b/src/sedacs/interface_pyseqm.py @@ -0,0 +1,701 @@ +import torch +import numpy as np +import sys +import scipy.linalg as sp +from sedacs.system import get_hindex +import sys + +try: + import seqm; PYSEQM = True + from seqm.seqm_functions.constants import Constants + from seqm.seqm_functions.make_dm_guess import make_dm_guess + from seqm.Molecule import Molecule + from seqm.ElectronicStructure import Electronic_Structure + import numpy as np + from seqm.seqm_functions.read_xyz import read_xyz + from seqm.MolecularDynamics import Geometry_Optimization_SD + from seqm.seqm_functions.fock import fock + from seqm.seqm_functions.fock_u_batch import fock_u_batch + from seqm.seqm_functions.hcore import hcore + from seqm.seqm_functions.diag import sym_eig_trunc + from seqm.seqm_functions.pack import * + from seqm.seqm_functions.energy import * + seqm.seqm_functions.scf_loop.debug=False + import torch + import time +except: PYSEQM = False + +class pyseqmObjects(torch.nn.Module): + ''' + Container for pyseqm objects + ''' + def __init__(self, sdc, coords, symbols,atomTypes, do_large_tensors=True, device='cpu'): + """ + Constructor + """ + super().__init__() + # self.M_whole, self.w_whole, self.molecule_whole, self.rho0xi_whole, self.rho0xj_whole = \ + # get_hcore_pyseqm(coords, symbols, atomTypes) + + self.M_whole, self.w_whole = None, None + self.molecule_whole = get_molecule_pyseqm(sdc, coords, symbols, atomTypes, do_large_tensors=do_large_tensors, device=device)[0].to(device) + if do_large_tensors: ### some tensors for calculating nuclear forces + self.w_ssss = torch.zeros_like(self.molecule_whole.idxi) + #print('Creating DM guess.') + #make_dm_guess(self.molecule_whole, self.molecule_whole.seqm_parameters, mix_homo_lumo=False, mix_coeff=0.3, overwrite_existing_dm=True); + ev = 27.21 + rho_0 = 0.5*ev/self.molecule_whole.parameters['g_ss'] + self.rho0xi_whole = rho_0[self.molecule_whole.idxi].clone() + self.rho0xj_whole = rho_0[self.molecule_whole.idxj].clone() + A = (self.molecule_whole.parameters['rho_core'][self.molecule_whole.idxi] != 0.000) + B = (self.molecule_whole.parameters['rho_core'][self.molecule_whole.idxj] != 0.000) + self.rho0xi_whole[A] =self.molecule_whole.parameters['rho_core'][self.molecule_whole.idxi][A] + self.rho0xj_whole[B] =self.molecule_whole.parameters['rho_core'][self.molecule_whole.idxj][B] + +def get_coreHalo_ham_inds(partIndex, partCoreHaloIndex, sdc, sy, subSy, device='cpu'): + ''' + partIndex: core indices + partCoreHaloIndex: core+halo indices + sdc: + sy: + subSy: + Function returns: + core_indices_in_sub: core indices of atoms in core+halo + core_indices_in_sub_expanded: core indices of core+halo hamiltonian in 4x4 blocks form (pyseqm format) + hindex_sub: orbital index for each atom in the CH (in CH numbering) + ''' + # generate local indexing of core+halo atoms + indices_in_sub = torch.linspace(0, len(partCoreHaloIndex) - 1, len(partCoreHaloIndex), dtype=sdc.torch_int_dt, device=device) + core_indices_in_sub = indices_in_sub[torch.isin(torch.tensor(partCoreHaloIndex, device=device), torch.tensor(partIndex, device=device))] # $$$ torch.searchsorted might be better + block_size = 4 + # Generate the expanded indices for each block + base_indices = torch.arange(block_size, dtype=sdc.torch_int_dt, device=device) # Create a base index tensor of size block_size + core_indices_in_sub_expanded = core_indices_in_sub.unsqueeze(1) * block_size + base_indices + core_indices_in_sub_expanded = core_indices_in_sub_expanded.flatten() + + norbs, norbs_for_every_type, hindex_sub, numel, numel_for_every_type = get_hindex(sdc.orbs, sdc.valency, sy.symbols, subSy.types) + hindex_sub = torch.from_numpy(hindex_sub).to(device, dtype=sdc.torch_int_dt) + return core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub + +def get_nucAB_energy_pyseqm(Z, const, nmol, ni, nj, idxi, idxj, rij, \ + rho0xi,rho0xj,alp, chi, gam, method, parnuc): + return pair_nuclear_energy(Z, const, nmol, ni, nj, idxi, idxj, rij, \ + rho0xi,rho0xj,alp, chi, gam=gam, method=method, parameters=parnuc) + +def get_total_energy_pyseqm(nmol, pair_molid, EnucAB, Eelec): + return total_energy(nmol, pair_molid, EnucAB, Eelec) + +def get_full_fock_pyseqm(nmol, molsize, P, M, maskd, mask, idxi, idxj, w, W, gss, gpp, gsp, gp2, hsp, + themethod, zetas, zetap, zetad, Z, F0SD, G2SD): + return fock(nmol, molsize, P, M, maskd, mask, idxi, idxj, w, W, gss, gpp, gsp, gp2, hsp, + themethod, zetas, zetap, zetad, Z, F0SD, G2SD) + +def get_fock_pyseqm(P, P_sub, M, w_2, block_indices, nmol, idxi, idxj, rij, parameters, maskd_sub, mask_sub): + ''' + Function returns Fock matrix for CH. In 4x4 block pyseqm format + P: diagonal dm blocks of the whole system + P_sub: subsystem dm + M: 1elec hamiltonian of subsystem + w_2: 2c2e ints. subsystem-subsystem and subsystem-outer. no outer-outer + block_indices: subsystem atom numbers + nmol: number of molecules in a batch. Always 1 in SEDACS. + idxi, idxj: unique pairs between atoms in subsystem or between an atom in subsystem and in the outer system. + rij: distances for unique pairs + parameters: seqm atomic params + maskd_sub: indices of diagonal blocks in subsystem + mask_sub: indices of off-diagonal blocks in subsystem + ''' + idx_to_idx_mapping = {value: idx for idx, value in enumerate(block_indices)} + max_key = max(idx_to_idx_mapping.keys()) + lookup_tensor = torch.zeros(max_key + 1, dtype=torch.long, device = P_sub.device) + # Populate the lookup tensor + for key, value in idx_to_idx_mapping.items(): + lookup_tensor[key] = value + max_i = idxi.max() + max_j = idxj.max() + atom_max = max(max_i,max_j) + in_block_mask = torch.zeros(atom_max+1,dtype=torch.bool, device = P_sub.device) + in_block_mask[block_indices]=True + + isini = in_block_mask[idxi]#.to(torch.bool) + where_isini = torch.nonzero(isini).squeeze() + + isinj = in_block_mask[idxj]#.to(torch.bool) + where_isinj = torch.nonzero(isinj).squeeze() + + loc_i = idxi[isini] + loc_j = idxj[isinj] + + ### first doing idxi because its sorted + # idxi_sub_ovrlp_with_rest = torch.isin(idxi, block_indices) # <- insted of this + # Searchsorted gives you the indices where the elements should be placed to maintain order. Works with idxi (sorted) but not with idxj (not sorted) + pos = torch.searchsorted(block_indices, idxi) + # Ensure the indices are within bounds + pos = torch.clamp(pos, max=len(block_indices) - 1) + # Check if the positions are valid and match + idxi_sub_ovrlp_with_rest = (pos < len(block_indices)) & (block_indices[pos] == idxi) + + ### second, doing indx i because its a sequence of sorted maxtrix triangle rows + # idxj_sub_ovrlp_with_rest = torch.isin(idxj, block_indices) # <- instead of this + # start_ind = 0 + # end_ind = len(P) - 1 + # idxj_sub_ovrlp_with_rest = torch.zeros(int((len(P)*(len(P)-1)/2)), dtype=torch.bool, device=P.device) + # tmp_j = idxj[start_ind:end_ind] + # pos = torch.searchsorted(block_indices, tmp_j) + # pos = torch.clamp(pos, max=len(block_indices) - 1) + # valid_top_row = (pos < len(block_indices)) & (block_indices[pos] == tmp_j) + # del tmp_j, pos + # for i in range(0,len(P)): ### $$$ needs vecorization + # idxj_sub_ovrlp_with_rest[start_ind:end_ind] = valid_top_row[i:] + # start_ind = end_ind + # end_ind = end_ind + len(P) - i - 2 + idxj_sub_ovrlp_with_rest = torch.isin(idxj, block_indices) + + ### Populate diagonal 1c ### + F = M.clone() + Pptot = P_sub[...,1,1]+P_sub[...,2,2]+P_sub[...,3,3] + TMP = torch.zeros_like(M) + TMP[maskd_sub,0,0] = 0.5*P_sub[maskd_sub,0,0]*parameters['g_ss'][block_indices] + Pptot[maskd_sub]*(parameters['g_sp'][block_indices]-0.5*parameters['h_sp'][block_indices]) + for i in range(1,4): + #(p,p) + TMP[maskd_sub,i,i] = P_sub[maskd_sub,0,0]*(parameters['g_sp'][block_indices]-0.5*parameters['h_sp'][block_indices]) + 0.5*P_sub[maskd_sub,i,i]*parameters['g_pp'][block_indices] \ + + (Pptot[maskd_sub] - P_sub[maskd_sub,i,i]) * (1.25*parameters['g_p2'][block_indices]-0.25*parameters['g_pp'][block_indices]) + #(s,p) = (p,s) upper triangle + TMP[maskd_sub,0,i] = P_sub[maskd_sub,0,i]*(1.5*parameters['h_sp'][block_indices] - 0.5*parameters['g_sp'][block_indices]) + #(p,p*) + for i,j in [(1,2),(1,3),(2,3)]: + TMP[maskd_sub,i,j] = P_sub[maskd_sub,i,j]* (0.75*parameters['g_pp'][block_indices] - 1.25*parameters['g_p2'][block_indices]) + + F.add_(TMP) + del TMP, Pptot + + ############################################## + ### Populate diagonal 2c ### + dtype = P.dtype + device = P.device + weight = torch.tensor([1.0, + 2.0, 1.0, + 2.0, 2.0, 1.0, + 2.0, 2.0, 2.0, 1.0],dtype=dtype, device=device).reshape((-1,10)) + + PA = (P[idxi[idxj_sub_ovrlp_with_rest]][...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)]*weight).reshape((-1,10,1)) + PB = (P[idxj[idxi_sub_ovrlp_with_rest]][...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)]*weight).reshape((-1,1,10)) + + #w_2_inj=w_2[where_isinj] + suma = torch.einsum('ijk,ijk->ik',PA,w_2[where_isinj]) + sumA = torch.zeros(torch.sum(isinj),4,4,dtype=dtype, device=device) + sumA[...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)] = suma + jjj = lookup_tensor[loc_j] + indj_of_new_diag_in_old = maskd_sub[jjj] + F.index_add_(0,indj_of_new_diag_in_old, sumA) + del PA, where_isinj, suma, jjj, loc_j, indj_of_new_diag_in_old, sumA + + #w_2_ini=w_2[where_isini] + sumb = torch.einsum('ijk,ijk->ij',PB,w_2[where_isini]) + sumB = torch.zeros(torch.sum(isini),4,4,dtype=dtype, device=device) + sumB[...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)] = sumb + iii=lookup_tensor[loc_i] + indi_of_new_diag_in_old = maskd_sub[iii] + F.index_add_(0,indi_of_new_diag_in_old, sumB) + del PB, where_isini, sumb, iii, loc_i, indi_of_new_diag_in_old, sumB + + #################################################### + ### Populate off-diagonal ### + sub_inds = idxi_sub_ovrlp_with_rest * idxj_sub_ovrlp_with_rest + + summ = torch.zeros(w_2[sub_inds].shape[0],4,4,dtype=dtype, device=device) + ind = torch.tensor([[0,1,3,6], + [1,2,4,7], + [3,4,5,8], + [6,7,8,9]],dtype=torch.int64, device=device) + + # Pp =P[mask], P_{mu \in A, lambda \in B} + Pp = -0.5*P_sub[mask_sub] #* (rij.unsqueeze(-1).unsqueeze(-1) < 2.5) #*(rij > 2.0) + w2_sub_inds=w_2[sub_inds] + + for i in range(4): + for j in range(4): + #\sum_{nu \in A} \sum_{sigma \in B} P_{nu, sigma} * (mu nu, lambda, sigma) + a1=w2_sub_inds[...,ind[i],:][...,:,ind[j]] + summ[...,i,j] = torch.einsum('ijk,ijk->i',Pp,a1)#torch.sum(Pp*a1,dim=(1,2)) + del Pp + F.index_add_(0,mask_sub,summ) + del summ + + F0 = F.reshape(nmol,len(block_indices),len(block_indices),4,4).transpose(2,3) \ + .reshape(nmol, 4*len(block_indices), 4*len(block_indices)) + F0.add_(F0.triu(1).transpose(1,2)); + return F0 + +def get_fock_pyseqm_u(P, P_sub, M, w_2, block_indices, nmol, idxi, idxj, rij, parameters, maskd_sub, mask_sub): + ''' + Function returns Fock matrix for CH. In 4x4 block pyseqm format + P: diagonal dm blocks of the whole system + P_sub: subsystem dm + M: 1elec hamiltonian of subsystem + w_2: 2c2e ints. subsystem-subsystem and subsystem-outer. no outer-outer + block_indices: subsystem atom numbers + nmol: number of molecules in a batch. Always 1 in SEDACS. + idxi, idxj: unique pairs between atoms in subsystem or between an atom in subsystem and in the outer system. + rij: distances for unique pairs + parameters: seqm atomic params + maskd_sub: indices of diagonal blocks in subsystem + mask_sub: indices of off-diagonal blocks in subsystem + ''' + idx_to_idx_mapping = {value: idx for idx, value in enumerate(block_indices)} + max_key = max(idx_to_idx_mapping.keys()) + lookup_tensor = torch.zeros(max_key + 1, dtype=torch.long, device = P_sub.device) + # Populate the lookup tensor + for key, value in idx_to_idx_mapping.items(): + lookup_tensor[key] = value + max_i = idxi.max() + max_j = idxj.max() + atom_max = max(max_i,max_j) + in_block_mask = torch.zeros(atom_max+1,dtype=torch.bool, device = P_sub.device) + in_block_mask[block_indices]=True + + isini = in_block_mask[idxi]#.to(torch.bool) + where_isini = torch.nonzero(isini).squeeze() + + isinj = in_block_mask[idxj]#.to(torch.bool) + where_isinj = torch.nonzero(isinj).squeeze() + + loc_i = idxi[isini] + loc_j = idxj[isinj] + + ### first doing idxi because its sorted + # idxi_sub_ovrlp_with_rest = torch.isin(idxi, block_indices) # <- insted of this + # Searchsorted gives you the indices where the elements should be placed to maintain order. Works with idxi (sorted) but not with idxj (not sorted) + pos = torch.searchsorted(block_indices, idxi) + # Ensure the indices are within bounds + pos = torch.clamp(pos, max=len(block_indices) - 1) + # Check if the positions are valid and match + idxi_sub_ovrlp_with_rest = (pos < len(block_indices)) & (block_indices[pos] == idxi) + + ### second, doing indx i because its a sequence of sorted maxtrix triangle rows + # idxj_sub_ovrlp_with_rest = torch.isin(idxj, block_indices) # <- instead of this + # start_ind = 0 + # end_ind = len(P) - 1 + # idxj_sub_ovrlp_with_rest = torch.zeros(int((len(P)*(len(P)-1)/2)), dtype=torch.bool, device=P.device) + # tmp_j = idxj[start_ind:end_ind] + # pos = torch.searchsorted(block_indices, tmp_j) + # pos = torch.clamp(pos, max=len(block_indices) - 1) + # valid_top_row = (pos < len(block_indices)) & (block_indices[pos] == tmp_j) + # del tmp_j, pos + # for i in range(0,len(P)): ### $$$ needs vecorization + # idxj_sub_ovrlp_with_rest[start_ind:end_ind] = valid_top_row[i:] + # start_ind = end_ind + # end_ind = end_ind + len(P) - i - 2 + idxj_sub_ovrlp_with_rest = torch.isin(idxj, block_indices) + + P_sum_ab = P_sub[0]+P_sub[1] + + PAlpha_ = P_sub + + + ### Populate diagonal 1c ### + F = M.expand(2,-1,-1,-1).clone() + Pptot = P_sum_ab[...,1,1]+P_sum_ab[...,2,2]+P_sum_ab[...,3,3] + PAlpha_ptot_ = PAlpha_[...,1,1]+PAlpha_[...,2,2]+PAlpha_[...,3,3] + #(s,s) + TMP = torch.zeros_like(F) + TMP[:,maskd_sub,0,0] = PAlpha_[[1,0]][:,maskd_sub,0,0]*parameters['g_ss'][block_indices] + Pptot[maskd_sub]*parameters['g_sp'][block_indices] - PAlpha_ptot_[:,maskd_sub]*parameters['h_sp'][block_indices] + for i in range(1,4): + #(p,p) + TMP[:,maskd_sub,i,i] = P_sum_ab[maskd_sub,0,0]*parameters['g_sp'][block_indices]-PAlpha_[:,maskd_sub,0,0]*parameters['h_sp'][block_indices] + PAlpha_[[1,0]][:,maskd_sub,i,i]*parameters['g_pp'][block_indices] \ + +(Pptot[maskd_sub]-P_sum_ab[maskd_sub,i,i])*parameters['g_p2'][block_indices] - 0.5*(PAlpha_ptot_[:,maskd_sub]-PAlpha_[:,maskd_sub,i,i])*(parameters['g_pp'][block_indices]-parameters['g_p2'][block_indices]) + + #(s,p) = (p,s) upper triangle + TMP[:,maskd_sub,0,i] = 2*P_sum_ab[maskd_sub,0,i]*parameters['h_sp'][block_indices] - PAlpha_[:,maskd_sub,0,i]*(parameters['h_sp'][block_indices]+parameters['g_sp'][block_indices]) + #(p,p*) + for i,j in [(1,2),(1,3),(2,3)]: + TMP[:,maskd_sub,i,j] = P_sum_ab[maskd_sub,i,j] * (parameters['g_pp'][block_indices] - parameters['g_p2'][block_indices]) - 0.5*PAlpha_[:,maskd_sub,i,j]*(parameters['g_pp'][block_indices] + parameters['g_p2'][block_indices]) + + F.add_(TMP) + del TMP, Pptot, PAlpha_ptot_ + + ############################################## + ### Populate diagonal 2c ### + dtype = P.dtype + device = P.device + weight = torch.tensor([1.0, + 2.0, 1.0, + 2.0, 2.0, 1.0, + 2.0, 2.0, 2.0, 1.0],dtype=dtype, device=device).reshape((-1,10)) + + PA = ((P[0]+P[1])[idxi[idxj_sub_ovrlp_with_rest]][...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)]*weight).reshape((-1,10,1)) + PB = ((P[0]+P[1])[idxj[idxi_sub_ovrlp_with_rest]][...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)]*weight).reshape((-1,1,10)) + + #w_2_inj=w_2[where_isinj] + suma = torch.sum(PA*w_2[where_isinj],dim=1) + sumA = torch.zeros(torch.sum(isinj),4,4,dtype=dtype, device=device) + sumA[...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)] = suma + jjj = lookup_tensor[loc_j] + indj_of_new_diag_in_old = maskd_sub[jjj] + F[0].index_add_(0,indj_of_new_diag_in_old, sumA) + F[1].index_add_(0,indj_of_new_diag_in_old, sumA) + del PA, where_isinj, suma, jjj, loc_j, indj_of_new_diag_in_old, sumA + + #w_2_ini=w_2[where_isini] + sumb = torch.einsum('ijk,ijk->ij',PB,w_2[where_isini]) + sumB = torch.zeros(torch.sum(isini),4,4,dtype=dtype, device=device) + sumB[...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)] = sumb + iii=lookup_tensor[loc_i] + indi_of_new_diag_in_old = maskd_sub[iii] + F[0].index_add_(0,indi_of_new_diag_in_old, sumB) + F[1].index_add_(0,indi_of_new_diag_in_old, sumB) + del PB, where_isini, sumb, iii, loc_i, indi_of_new_diag_in_old, sumB + + #################################################### + ### Populate off-diagonal ### + sub_inds = idxi_sub_ovrlp_with_rest * idxj_sub_ovrlp_with_rest + + summ = torch.zeros(2, w_2[sub_inds].shape[0],4,4,dtype=dtype, device=device) + ind = torch.tensor([[0,1,3,6], + [1,2,4,7], + [3,4,5,8], + [6,7,8,9]],dtype=torch.int64, device=device) + + # Pp =P[mask], P_{mu \in A, lambda \in B} + w2_sub_inds=w_2[sub_inds] + for i in range(4): + for j in range(4): + #\sum_{nu \in A} \sum_{sigma \in B} P_{nu, sigma} * (mu nu, lambda, sigma) + # a1=w2_sub_inds[...,ind[i],:][...,:,ind[j]] + # summ[...,i,j] = torch.einsum('ijk,ijk->i',-PAlpha_,a1)#torch.sum(Pp*a1,dim=(1,2)) + summ[...,i,j] = torch.sum(-PAlpha_[:,mask_sub]*w2_sub_inds[...,ind[i],:][...,:,ind[j]],dim=(2,3)) + + F.index_add_(1,mask_sub,summ) + del summ + + F0 = F.reshape(2, nmol, len(block_indices), len(block_indices), 4, 4) \ + .transpose(3,4) \ + .reshape(2, nmol, 4*len(block_indices), 4*len(block_indices)).transpose(0,1) + + F0.add_(F0.triu(1).transpose(2,3)) + return F0 + + +def get_hcore_pyseqm(coords,symbols,atomTypes, device='cpu', verb=False): + print('Creating Hcore.') + if(PYSEQM == False): + print("ERROR: No PySEQM installed") + symbols_internal = np.array([ "Bl" , + "H" , "He", + "Li", "Be", "B" , "C" , "N" , "O" , "F" , "Ne", \ + "Na", "Mg", "Al", "Si", "P" , "S" , "Cl", "Ar", + ], dtype=str) + numel_internal = np.zeros(len(symbols_internal),dtype=int) + numel_internal[:] = 0, \ + 1 , 2, \ + 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, \ + 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, + + bas_per_atom = np.zeros(len(symbols_internal),dtype=int) + bas_per_atom[:] = 0, \ + 1 ,1 ,\ + 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ + 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ + + # Map symbols to indices in symbols_internal + symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} + + # Translate `symbols` to `symbols_internal` indices + mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) + + # Convert atomTypes to `symbols_internal` indices + atom_internal_indices = mapped_indices[atomTypes] + + species = torch.as_tensor(np.array([atom_internal_indices,]), dtype=torch.int64, device=device) + coordinates = torch.tensor(np.array([coords,]), device=device, dtype=torch.float64) + const = Constants().to(device) + elements = [0]+sorted(set(species.reshape(-1).tolist())) + seqm_parameters = { + 'method' : 'PM6_SP', # AM1, MNDO, PM3, PM6, PM6_SP. PM6_SP is PM6 without d-orbitals. Effectively, PM6 for the first two rows of periodic table + 'scf_eps' : 1.0e-6, # unit eV, change of electric energy, as nuclear energy doesnt' change during SCF + 'scf_converger' : [0,0.8,0.93,30], # converger used for scf loop + # [0, 0.1], [0, alpha] constant mixing, P = alpha*P + (1.0-alpha)*Pnew + # [1], adaptive mixing + # [2], adaptive mixing, then pulay + 'sp2' : [False, 1.0e-5], # whether to use sp2 algorithm in scf loop, + #[True, eps] or [False], eps for SP2 conve criteria + 'elements' : elements, #[0,1,6,8], + 'learned' : [], # learned parameters name list, e.g ['U_ss'] + #'parameter_file_dir' : '../seqm/params/', # file directory for other required parameters + 'pair_outer_cutoff' : 1.0e10, # consistent with the unit on coordinates + 'eig' : True, # store orbital energies + } + molecule = Molecule(const, seqm_parameters, coordinates, species).to(device) + molecule.coordinates.requires_grad_(True) + + torch.cuda.empty_cache() + M, w, rho0xi, rho0xj = hcore(molecule) + + return M, w, molecule, rho0xi, rho0xj + +def get_molecule_pyseqm(sdc, coords, symbols, atomTypes, do_large_tensors=True, device='cpu', verb=False): + ''' + Function returns pyseqm molecule object for SEDACS + sdc: + coords: coordinates array + symbols: + atomTypes: + do_large_tensors: if False, PySEQM won't calculate large tensors like idxi, idxj, rij, xij, mask + ''' + # move to a sep file $$$ + torch.cuda.empty_cache() + """PYSEQM""" + # COHO + # symbols: (C, O, H) + # atomsTypes (0,1,2,1) + # construc dict: + if(PYSEQM == False): + print("ERROR: No PySCF installed") + + symbols_internal = np.array([ "Bl" , + "H" , "He", + "Li", "Be", "B" , "C" , "N" , "O" , "F" , "Ne", \ + "Na", "Mg", "Al", "Si", "P" , "S" , "Cl", "Ar", + ], dtype=str) + numel_internal = np.zeros(len(symbols_internal),dtype=int) + numel_internal[:] = 0, \ + 1 , 2, \ + 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, \ + 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, + + bas_per_atom = np.zeros(len(symbols_internal),dtype=int) + bas_per_atom[:] = 0, \ + 1 ,1 ,\ + 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ + 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ + + # Map symbols to indices in symbols_internal + symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} + # Translate `symbols` to `symbols_internal` indices + mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) + # Convert atomTypes to `symbols_internal` indices + atom_internal_indices = mapped_indices[atomTypes] + if sdc.torch_dt == torch.float64: + dtype_int = torch.int64 + else: + dtype_int = torch.int32 + species = torch.as_tensor(np.array([atom_internal_indices,]), dtype=dtype_int, device=device) + + if torch.is_tensor(coords): + coordinates = coords + else: + coordinates = torch.tensor(np.array([coords]), device=device, dtype=sdc.torch_dt) + + const = Constants().to(device) + elements = [0]+sorted(set(species.reshape(-1).tolist())) + seqm_parameters = { + 'method' : 'PM6_SP', # AM1, MNDO, PM3, PM6, PM6_SP. PM6_SP is PM6 without d-orbitals. Effectively, PM6 for the first two rows of periodic table + 'scf_eps' : 1.0e-6, # unit eV, change of electric energy, as nuclear energy doesnt' change during SCF + 'scf_converger' : [0,0.8,0.93,30], # converger used for scf loop + # [0, 0.1], [0, alpha] constant mixing, P = alpha*P + (1.0-alpha)*Pnew + # [1], adaptive mixing + # [2], adaptive mixing, then pulay + 'sp2' : [False, 1.0e-5], # whether to use sp2 algorithm in scf loop, + #[True, eps] or [False], eps for SP2 conve criteria + 'elements' : elements, #[0,1,6,8], + 'learned' : [], # learned parameters name list, e.g ['U_ss'] + #'parameter_file_dir' : '../seqm/params/', # file directory for other required parameters + 'pair_outer_cutoff' : 1.0e10, # consistent with the unit on coordinates + 'eig' : True, # store orbital energies + 'UHF': sdc.UHF, + } + + # Charge does not matter. Assigned to avoid internal pyseqm error. + if torch.sum(species)%2 == 0: + charges = 0 + else: + charges = -1 + + molecule = Molecule(const, seqm_parameters, coordinates, species, charges=charges, do_large_tensors=do_large_tensors).to(device) + return molecule, molecule.nocc + + +def get_eVals_pyseqm(sdc, H, Nocc, core_indices_in_sub_expanded_packed, molecule, verb=False, calcD=False): + ''' + Function returns eigenvalues, dVals, eigenvectors, list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham] + H: hamiltonian, 4x4 blocks + Nocc: number of occupied states + core_indices_in_sub_expanded_packed: core indices of core+halo hamiltonian in normal form corresponding to the number of AOs per atom + ''' + if(verb): print("Computing eVals/dVals") + + E_val, Q = sym_eig_trunc( H, molecule.nHeavy, molecule.nHydro, Nocc, eig_only=True) + Q = Q[0] + + if sdc.UHF: # open shell + N = Q.shape[-1] + dVals = torch.sum(Q[:, core_indices_in_sub_expanded_packed, :] ** 2, dim=1) + return E_val[0,:,:N], dVals.cpu().numpy(), Q + else: # closed shell + N = len(Q) + E_val = E_val[0,:N] + + #homoIndex = Nocc - 1 + #lumoIndex = Nocc + #mu_test = 0.5*(E_val[homoIndex] + E_val[lumoIndex]) #don't need it + #print(' SubSys HOMO/LUMO:', np.round(E_val[homoIndex].item(),4), np.round(E_val[lumoIndex].item(),4), end=" ") + + # rho = Q@f_vector@Q.T + # or + # rho_ij = SUM_k Q_ik * f_kk * Q_jk + dVals = torch.sum(Q[core_indices_in_sub_expanded_packed, :] ** 2, dim=0) + return E_val, dVals.cpu().numpy(), Q + + +def get_densityMatrix_renormalized_pyseqm(sdc, E_val, Q, Tel, mu0, NH_Nh_Hs): + ''' + Function returns dm corrected by fermi occupancies + E_val: eigenvalues + Q: eigenvectors + Tel: electronic temperature + mu0: chemical potential + NH_Nh_Hs: list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham] + ''' + + kB = 8.61739e-5 # eV/K, kB = 6.33366256e-6 Ry/K, kB = 3.166811429e-6 Ha/K, #kB = 3.166811429e-6 #Ha/K + beta = 1./(kB*Tel) + + + # two lines below are vectorization of this: D = 2*sum(torch.outer(Q[:, i],Q[:, i]*f[i]) for i in range(Nocc)) + if sdc.UHF: + f = (1/(torch.exp(beta*(E_val - np.expand_dims(mu0, axis=1))) + 1)).unsqueeze(1) + Q_weighted = Q * f # Broadcasting multiplication + D = Q @ Q_weighted.transpose(-2,-1) + D = unpack(D, NH_Nh_Hs[0].repeat_interleave(2), NH_Nh_Hs[1].repeat_interleave(2), NH_Nh_Hs[2]) + else: + f = 1/(torch.exp(beta*(E_val - mu0)) + 1) + Q_weighted = Q * f # Broadcasting multiplication + D = 2 * Q @ Q_weighted.T + D = unpack(D, NH_Nh_Hs[0], NH_Nh_Hs[1], NH_Nh_Hs[2]) + return D + + +def get_overlap_pyseqm(coords,symbols,atomTypes, hindex, verb=False): + '''Overlap matrix from pyseqm. Returned in a packed form (not 4x4 blocks pyseqm format)''' + + # COHO + # symbols: (C, O, H) + # atomsTypes (0,1,2,1) + # construc dict: + if(PYSEQM == False): + print("ERROR: No PySCF installed") + from seqm.seqm_functions.constants import Constants + from seqm.Molecule import Molecule + import numpy as np + from seqm.seqm_functions.pack import pack + from seqm.seqm_functions.diat_overlap_PM6_SP import diatom_overlap_matrix_PM6_SP + from seqm.seqm_functions.constants import overlap_cutoff + seqm.seqm_functions.scf_loop.debug=False + + device = torch.device('cpu') + symbols_internal = np.array([ "Bl" , + "H" , "He", + "Li", "Be", "B" , "C" , "N" , "O" , "F" , "Ne", \ + "Na", "Mg", "Al", "Si", "P" , "S" , "Cl", "Ar", + ], dtype=str) + numel_internal = np.zeros(len(symbols_internal),dtype=int) + numel_internal[:] = 0, \ + 1 , 2, \ + 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, \ + 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, + + bas_per_atom = np.zeros(len(symbols_internal),dtype=int) + bas_per_atom[:] = 0, \ + 1 ,1 ,\ + 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ + 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ + + # Map symbols to indices in symbols_internal + symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} + # Translate `symbols` to `symbols_internal` indices + mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) + # Convert atomTypes to `symbols_internal` indices + atom_internal_indices = mapped_indices[atomTypes] + # Vectorized approach to combine the arrays + combined_array = np.column_stack((atom_internal_indices[:, np.newaxis], coords)).tolist() + # Convert to the desired format + molecule_elem_coord = [[int(item[0]), tuple(item[1:])] for item in combined_array] + + + species = torch.as_tensor(np.array([np.array(atom_internal_indices)]), dtype=torch.int64, device=device) + coordinates = torch.tensor(np.array([coords]), device=device, dtype=torch.float64) + const = Constants().to(device) + elements = [0]+sorted(set(species.reshape(-1).tolist())) + seqm_parameters = { + 'method' : 'PM6_SP', # AM1, MNDO, PM3, PM6, PM6_SP. PM6_SP is PM6 without d-orbitals. Effectively, PM6 for the first two rows of periodic table + 'scf_eps' : 1.0e-6, # unit eV, change of electric energy, as nuclear energy doesnt' change during SCF + 'scf_converger' : [0,0.8,0.93,30], # converger used for scf loop + # [0, 0.1], [0, alpha] constant mixing, P = alpha*P + (1.0-alpha)*Pnew + # [1], adaptive mixing + # [2], adaptive mixing, then pulay + 'sp2' : [False, 1.0e-5], # whether to use sp2 algorithm in scf loop, + #[True, eps] or [False], eps for SP2 conve criteria + 'elements' : elements, #[0,1,6,8], + 'learned' : [], # learned parameters name list, e.g ['U_ss'] + #'parameter_file_dir' : '../seqm/params/', # file directory for other required parameters + 'pair_outer_cutoff' : 1.0e10, # consistent with the unit on coordinates + 'eig' : True # store orbital energies + } + molecule = Molecule(const, seqm_parameters, coordinates, species).to(device) + dtype = molecule.xij.dtype + device = molecule.xij.device + qn_int = molecule.const.qn_int + qnD_int = molecule.const.qnD_int + + if(molecule.method == 'PM6'): + zeta = torch.cat((molecule.parameters['zeta_s'].unsqueeze(1), molecule.parameters['zeta_p'].unsqueeze(1), molecule.parameters['zeta_d'].unsqueeze(1)),dim=1) + else: + zeta = torch.cat((molecule.parameters['zeta_s'].unsqueeze(1), molecule.parameters['zeta_p'].unsqueeze(1)),dim=1) + overlap_pairs = molecule.rij<=overlap_cutoff + + if molecule.method == 'PM6_SP': + di = torch.zeros((molecule.xij.shape[0], 4, 4),dtype=dtype, device=device) + di[overlap_pairs] = diatom_overlap_matrix_PM6_SP(molecule.ni[overlap_pairs], + molecule.nj[overlap_pairs], + molecule.xij[overlap_pairs], + molecule.rij[overlap_pairs], + zeta[molecule.idxi][overlap_pairs], + zeta[molecule.idxj][overlap_pairs], + qn_int) + + di_full = torch.zeros((molecule.nmol*molecule.molsize*molecule.molsize, 4, 4),dtype=dtype, device=device) + mask_H = molecule.Z==1 + mask_heavy = molecule.Z>1 + H_self_ovr = torch.zeros((4,4), dtype=dtype, device=device) + H_self_ovr[0,0] = 1.0 + + di_full[molecule.maskd[mask_H]] = H_self_ovr + di_full[molecule.maskd[mask_heavy]] = torch.eye(4, dtype=dtype, device=device) + di_full[molecule.mask] = di + di_full[molecule.mask_l] = di.transpose(1,2) + di_full = di_full.reshape(molecule.nmol,molecule.molsize,molecule.molsize,4,4).transpose(2,3) \ + .reshape(molecule.nmol, 4*molecule.molsize, 4*molecule.molsize) + di_full = pack(di_full, molecule.nHeavy, molecule.nHydro) + return di_full[0] + +def get_diag_guess_pyseqm(molecule, sy, verb=False): + ''' + Initial guess for dm diagonal + ''' + tore = molecule.const.tore + method = 'PM6_SP' + if method == 'PM6': + P0 = torch.zeros(sy.nats,9,9,dtype=molecule.coordinates.dtype, device=tore.device) # density matrix + P0[molecule.Z>1,0,0] = tore[molecule.Z[molecule.Z>1]]/4.0 + P0[:,1,1] = P0[:,0,0] + P0[:,2,2] = P0[:,0,0] + P0[:,3,3] = P0[:,0,0] + P0[molecule.Z==1,0,0] = 1.0 + else: + P0 = torch.zeros(sy.nats,4,4,dtype=molecule.coordinates.dtype, device=tore.device) # density matrix + P0[molecule.Z>1,0,0] = tore[molecule.Z[molecule.Z>1]]/4.0 + P0[:,1,1] = P0[:,0,0] + P0[:,2,2] = P0[:,0,0] + P0[:,3,3] = P0[:,0,0] + P0[molecule.Z==1,0,0] = 1.0 + return P0 diff --git a/src/sedacs/latte/coords.pdb b/src/sedacs/latte/coords.pdb new file mode 100644 index 00000000..30369570 --- /dev/null +++ b/src/sedacs/latte/coords.pdb @@ -0,0 +1,18 @@ +REMARK Generated by PROGRESS library +TITLE water_box.pdb +CRYST1 5.000 6.000 6.000 90.00 90.00 90.00 P 1 1 +MODEL 1 +ATOM 1 O MOL 1 -1.089 0.840 0.087 0.00 0.00 O +ATOM 2 H MOL 1 -0.379 0.620 0.678 0.00 0.00 H +ATOM 3 H MOL 1 -0.802 1.519 -0.513 0.00 0.00 H +ATOM 4 O SOL 2 6.791 5.329 8.737 0.00 0.00 O +ATOM 5 H SOL 2 6.911 5.989 7.997 0.00 0.00 H +ATOM 6 H SOL 2 7.251 5.669 9.567 0.00 0.00 H +ATOM 7 O SOL 3 1.881 3.409 0.417 0.00 0.00 O +ATOM 8 H SOL 3 0.961 3.129 0.127 0.00 0.00 H +ATOM 9 H SOL 3 2.191 4.179 -0.143 0.00 0.00 H +ATOM 10 O SOL 4 1.851 1.619 3.267 0.00 0.00 O +ATOM 11 H SOL 4 1.681 2.449 2.727 0.00 0.00 H +ATOM 12 H SOL 4 2.751 1.249 3.047 0.00 0.00 H +TER +END diff --git a/src/sedacs/latte/coords.xyz b/src/sedacs/latte/coords.xyz new file mode 100644 index 00000000..5f8f1348 --- /dev/null +++ b/src/sedacs/latte/coords.xyz @@ -0,0 +1,14 @@ + 12 +Lattice = "10.0 0.0 0.0 0.0 10.0 0.0 0.0 0.0 10.0" + O -1.08900 0.84000 0.08700 + H -0.37900 0.62000 0.67800 + H -0.80200 1.51900 -0.51300 + O 6.79100 5.32900 8.73700 + H 6.91100 5.98900 7.99700 + H 7.25100 5.66900 9.56700 + O 1.88100 3.40900 0.41700 + H 0.96100 3.12900 0.12700 + H 2.19100 4.17900 -0.14300 + O 1.85100 1.61900 3.26700 + H 1.68100 2.44900 2.72700 + H 2.75100 1.24900 3.04700 diff --git a/src/sedacs/latte/latte.py b/src/sedacs/latte/latte.py new file mode 100644 index 00000000..fdc42cb9 --- /dev/null +++ b/src/sedacs/latte/latte.py @@ -0,0 +1,1501 @@ +import os +import sys +from multiprocessing import Pool + +import numpy as np +from scipy.linalg import eigh + + +### +# @brief Constructs a Hamiltonian and Overlap for LATTE Tight-binding. +# This is a python version of bldnewH.F90 LATTE routine +# +## +def build_HS( + nats, + coords_in, + box, + elempointer, + basis, + hes, + hep, + hed, + hef, + hdim, + cutoffList, + iglMap, + tabh, + tabs, + sspl, + hspl, + lentabint, + tabr, + hcut, + scut, + verbose, +): + if verbose: + print("In build_HS ...") + + # Indexing transformation coumn mayor to row mayor + coords = np.zeros((3, nats)) + coords[0, :] = coords_in[:, 0] + coords[1, :] = coords_in[:, 1] + coords[2, :] = coords_in[:, 2] + + pi = 3.1415926535 + ham = np.zeros((hdim, hdim)) + smat = np.eye((hdim)) + mybondint = np.zeros((4)) + myoverlapint = np.zeros((4)) + + # Build diagonal elements (pre-calculated) + ham_onsite = gen_Honsite(nats, elempointer, basis, hes, hep, hed, hef, hdim, verbose) + count = 0 + for i in range(hdim): + ham[i, i] = ham_onsite[i] + + orbitalList = get_orbitalList(nats, elempointer, basis) + + matindList = get_matindlist(nats, elempointer, basis) + rij = np.zeros((3)) + for i in range(nats): + basisi = orbitalList[:, i] + indi = matindList[i] + for j in range(nats): + for ix in range(-1, 2): + tx = ix * box[0, :] + for iy in range(-1, 2): + ty = iy * box[1, :] + for iz in range(-1, 2): + tz = iz * box[2, :] + neigh = coords[:, j] + tx + ty + tz + + # print(neigh) + rij[0] = neigh[0] - coords[0, i] + rij[1] = neigh[1] - coords[1, i] + rij[2] = neigh[2] - coords[2, i] + magr2 = rij[0] * rij[0] + rij[1] * rij[1] + rij[2] * rij[2] + rcuttb = cutoffList[j, i] + + if (magr2 < rcuttb * rcuttb) and (magr2 > 1.0e-12): + magr = np.sqrt(magr2) + basisj = orbitalList[:, j] + indj = matindList[j] + magrp = np.sqrt(rij[0] * rij[0] + rij[1] * rij[1]) + if abs(rij[0]) > 1.0e-12: + if (rij[0] > 0.0) and (rij[1] >= 0.0): + phi = 0.0 + elif (rij[0] > 0.0) and (rij[1] < 0.0): + phi = 2.0 * pi + else: + phi = pi + alpha = np.arctan(rij[1] / rij[0]) + phi + elif abs(rij[1]) > 1.0e-12: + if rij[1] > 1.0e-12: + alpha = pi / 2.0 + else: + alpha = 3.0 * pi / 2.0 + else: + alpha = 0.0 + + cosbeta = rij[2] / magr + beta = np.arccos(rij[2] / magr) + + # Build matrix elements using eqns (1)-(9) in PRB 72 165107 + + # The loops over LBRA and LKET need to take into account + # the orbitals assigned to each atom, e.g., sd rather than + # spd... + ibra = indi + 1 + lbrainc = 1 + while (basisi[lbrainc - 1]) != -1: + lbra = basisi[lbrainc - 1] + lbrainc = lbrainc + 1 + for mbra in range(-lbra, lbra + 1): + # We can calculate these two outside the + # MKET loop + iket = indj + 1 + lketinc = 1 + while basisj[lketinc - 1] != -1: + lket = basisj[lketinc - 1] + lketinc = lketinc + 1 + # Precompute the integrals outside Mket loop + for mp in range(min(lbra, lket) + 1): + mybondint[mp] = univscale( + i, + j, + lbra, + lket, + mp, + magr, + tabs, + tabh, + sspl, + hspl, + iglMap, + lentabint, + tabr, + tabh, + hcut, + scut, + "H", + ) + myoverlapint[mp] = univscale( + i, + j, + lbra, + lket, + mp, + magr, + tabs, + tabh, + sspl, + hspl, + iglMap, + lentabint, + tabr, + tabh, + hcut, + scut, + "S", + ) + + for mket in range(-lket, lket + 1): + # This is the sigma bonds (mp = 0) + # Hamiltonian build + # Pre-compute the angular part so we can use it + # again later if we're building the S matrix too + myangfactor = angfactor(lbra, lket, mbra, mket, 0, alpha, cosbeta) + ham[ibra - 1, iket - 1] = ( + ham[ibra - 1, iket - 1] + myangfactor * mybondint[0] + ) + smat[ibra - 1, iket - 1] = ( + smat[ibra - 1, iket - 1] + myangfactor * myoverlapint[0] + ) + # Everything else + count = count + 1 + for mp in range(1, min(lbra, lket) + 1): + myangfactor = angfactor(lbra, lket, mbra, mket, mp, alpha, cosbeta) + ham[ibra - 1, iket - 1] = ( + ham[ibra - 1, iket - 1] + myangfactor * mybondint[mp] + ) + smat[ibra - 1, iket - 1] = ( + smat[ibra - 1, iket - 1] + myangfactor * myoverlapint[mp] + ) + + iket = iket + 1 + + ibra = ibra + 1 + + if verbose: + print("\nHamiltonian Matrix") + print(ham) + print("\nOverlap Matrix") + print(smat) + + return (smat, ham) + + +def get_hdim(nats, elempointer, basis, verbose): + if verbose: + print("\nIn get_hdim ...") + + hdim = 0 + for i in range(nats): + if basis[elempointer[i]] == "s": + numorb = 1 + elif basis[elempointer[i]] == "p": + numorb = 3 + elif basis[elempointer[i]] == "d": + numorb = 5 + elif basis[elempointer[i]] == "f": + numorb = 7 + elif basis[elempointer[i]] == "sp": + numorb = 4 + elif basis[elempointer[i]] == "sd": + numorb = 6 + elif basis[elempointer[i]] == "sf": + numorb = 8 + elif basis[elempointer[i]] == "pd": + numorb = 8 + elif basis[elempointer[i]] == "pf": + numorb = 10 + elif basis[elempointer[i]] == "df": + numorb = 12 + elif basis[elempointer[i]] == "spd": + numorb = 9 + elif basis[elempointer[i]] == "spf": + numorb = 11 + elif basis[elempointer[i]] == "sdf": + numorb = 13 + elif basis[elempointer[i]] == "pdf": + numorb = 15 + elif basis[elempointer[i]] == "spdf": + numorb = 16 + hdim = hdim + numorb + + return hdim + + +### +# @brief Get onsite Hamiltonian elements for LATTE Tight-binding. +# This is a python version of genHonsite.F90 LATTE routine +# +## +def gen_Honsite(nats, elempointer, basis, hes, hep, hed, hef, hdim, verbose): + ham_onsite = np.zeros((hdim)) + index = -1 + for i in range(nats): + k = elempointer[i] + + if basis[k] == "s": + index = index + 1 + ham_onsite[index] = hes[k] + elif basis[k] == "p": + for subi in range(3): + index = index + 1 + ham_onsite[index] = hep[k] + elif basis[k] == "d": + for subi in range(5): + index = index + 1 + ham_onsite[index] = hed[k] + elif basis[k] == "f": + for subi in range(7): + index = index + 1 + ham_onsite[index] = hef[k] + elif basis[k] == "sp": + for subi in range(4): + index = index + 1 + if subi == 0: + ham_onsite[index] = hes[k] + else: + ham_onsite[index] = hep[k] + elif basis[k] == "sd": + for subi in range(6): + index = index + 1 + if subi == 0: + ham_onsite[index] = hes[k] + else: + ham_onsite[index] = hed[k] + elif basis[k] == "sf": + for subi in range(8): + index = index + 1 + if subi == 0: + ham_onsite[index] = hes[k] + else: + ham_onsite[index] = hef[k] + elif basis[k] == "pd": + for subi in range(8): + index = index + 1 + if subi <= 2: + ham_onsite[index] = hep[k] + else: + ham_onsite[index] = hed[k] + elif basis[k] == "pf": + for subi in range(10): + index = index + 1 + if subi <= 2: + ham_onsite[index] = hep[k] + else: + ham_onsite[index] = hef[k] + elif basis[k] == "df": + for subi in range(12): + index = index + 1 + if subi <= 4: + ham_onsite[index] = hed[k] + else: + ham_onsite[index] = hef[k] + elif basis[k] == "spd": + for subi in range(9): + index = index + 1 + if subi == 0: + ham_onsite[index] = hes[k] + elif subi > 0 & subi <= 3: + ham_onsite[index] = hep[k] + else: + ham_onsite[index] = hed[k] + elif basis[k] == "spf": + for subi in range(11): + index = index + 1 + if subi == 0: + ham_onsite[index] = hes[k] + elif subi > 0 & subi <= 3: + ham_onsite[index] = hep[k] + else: + ham_onsite[index] = hef[k] + elif basis[k] == "sdf": + for subi in range(13): + index = index + 1 + if subi == 0: + ham_onsite[index] = hes[k] + elif subi > 0 & subi <= 5: + ham_onsite[index] = hed[k] + else: + ham_onsite[index] = hef[k] + elif basis[k] == "pdf": + for subi in range(15): + index = index + 1 + if subi <= 2: + ham_onsite[index] = hep[k] + elif subi > 2 & subi <= 7: + ham_onsite[index] = hed[k] + else: + ham_onsite[index] = hef[k] + elif basis[k] == "spdf": + for subi in range(16): + index = index + 1 + if subi == 0: + ham_onsite[index] = hes[k] + elif subi > 0 & subi <= 3: + ham_onsite[index] = hep[k] + elif subi > 3 & subi <= 8: + ham_onsite[index] = hed[k] + else: + ham_onsite[index] = hef[k] + return ham_onsite + + +def get_orbitalList(nats, elempointer, basis): + orbital_list = np.zeros((5, nats), dtype=int) + for i in range(nats): + if basis[elempointer[i]] == "s": + orbital_list[0, i] = 0 + orbital_list[1, i] = -1 + elif basis[elempointer[i]] == "p": + orbital_list[0, i] = 0 + orbital_list[1, i] = -1 + elif basis[elempointer[i]] == "d": + orbital_list[0, i] = 2 + orbital_list[1, i] = -1 + elif basis[elempointer[i]] == "f": + orbital_list[0, i] = 3 + orbital_list[1, i] = -1 + elif basis[elempointer[i]] == "sp": + orbital_list[0, i] = 0 + orbital_list[1, i] = 1 + orbital_list[2, i] = -1 + elif basis[elempointer[i]] == "sd": + orbital_list[0, i] = 0 + orbital_list[1, i] = 2 + orbital_list[2, i] = -1 + elif basis[elempointer[i]] == "sf": + orbital_list[0, i] = 0 + orbital_list[1, i] = 3 + orbital_list[2, i] = -1 + elif basis[elempointer[i]] == "pd": + orbital_list[0, i] = 1 + orbital_list[1, i] = 2 + orbital_list[2, i] = -1 + elif basis[elempointer[i]] == "pf": + orbital_list[0, i] = 1 + orbital_list[1, i] = 3 + orbital_list[2, i] = -1 + elif basis[elempointer[i]] == "df": + orbital_list[0, i] = 2 + orbital_list[1, i] = 3 + orbital_list[2, i] = -1 + elif basis[elempointer[i]] == "spd": + orbital_list[0, i] = 0 + orbital_list[1, i] = 1 + orbital_list[2, i] = 2 + orbital_list[3, i] = -1 + elif basis[elempointer[i]] == "spf": + orbital_list[0, i] = 0 + orbital_list[1, i] = 1 + orbital_list[2, i] = 3 + orbital_list[3, i] = -1 + elif basis[elempointer[i]] == "sdf": + orbital_list[0, i] = 0 + orbital_list[1, i] = 2 + orbital_list[2, i] = 3 + orbital_list[3, i] = -1 + elif basis[elempointer[i]] == "pdf": + orbital_list[0, i] = 1 + orbital_list[1, i] = 2 + orbital_list[2, i] = 3 + orbital_list[3, i] = -1 + elif basis[elempointer[i]] == "spdf": + orbital_list[0, i] = 0 + orbital_list[1, i] = 1 + orbital_list[2, i] = 2 + orbital_list[3, i] = 3 + orbital_list[4, i] = -1 + + return orbital_list + + +def get_matindlist(nats, elempointer, basis): + matindlist = np.zeros((nats), dtype=int) + + for i in range(nats): + indi = 0 + for j in range(i): + if basis[elempointer[j]] == "s": + numorb = 1 + elif basis[elempointer[j]] == "p": + numorb = 3 + elif basis[elempointer[j]] == "d": + numorb = 5 + elif basis[elempointer[j]] == "f": + numorb = 7 + elif basis[elempointer[j]] == "sp": + numorb = 4 + elif basis[elempointer[j]] == "sd": + numorb = 6 + elif basis[elempointer[j]] == "sf": + numorb = 8 + elif basis[elempointer[j]] == "pd": + numorb = 8 + elif basis[elempointer[j]] == "pf": + numorb = 10 + elif basis[elempointer[j]] == "df": + numorb = 12 + elif basis[elempointer[j]] == "spd": + numorb = 9 + elif basis[elempointer[j]] == "spf": + numorb = 11 + elif basis[elempointer[j]] == "sdf": + numorb = 13 + elif basis[elempointer[j]] == "pdf": + numorb = 15 + elif basis[elempointer[j]] == "spdf": + numorb = 16 + indi = indi + numorb + matindlist[i] = indi + + return matindlist + + +## ANDERS CHANGES get the net partial occupations of the fully isolated atoms +def get_znuc(atele, ele, atocc, verbose): + if verbose: + print("\nIn get_znuc ...") + + znuc = np.zeros(len(atele)) + + for i in range(len(atele)): + for j in range(len(ele)): + if atele[i] == ele[j]: + znuc[i] = atocc[j] + return znuc + + +## ANDERS CHANGES easier indexing for matrices +def get_hindex(nats, elempointer, basis, hdim, verbose): + if verbose: + print("\nIn get_hindex ...") + + matindList = get_matindlist(nats, elempointer, basis) + h_start = np.ones(nats, dtype=int) + h_stop = np.ones(nats, dtype=int) + h_start[0:nats] = matindList[0:nats] + h_stop[0 : nats - 1] = matindList[1:nats] + h_stop[nats - 1] = hdim + + return (h_start, h_stop) + + +def get_btypeInt(noint, btype, atele, ele1, ele2, nats, verbose): + if verbose: + print("\nIn get_btypeInt ...") + + lMax = 0 + mpMax = 0 + btypeInt = np.zeros((3, noint), dtype=int) + for i in range(noint): + if btype[i] == "sss": + btypeInt[0, i] = 0 + btypeInt[1, i] = 0 + btypeInt[2, i] = 0 + elif btype[i] == "sps": + btypeInt[0, i] = 0 + btypeInt[1, i] = 1 + btypeInt[2, i] = 0 + elif btype[i] == "sds": + btypeInt[0, i] = 0 + btypeInt[1, i] = 2 + btypeInt[2, i] = 0 + elif btype[i] == "sfs": + btypeInt[0, i] = 0 + btypeInt[1, i] = 3 + btypeInt[2, i] = 0 + elif btype[i] == "pps": + btypeInt[0, i] = 1 + btypeInt[1, i] = 1 + btypeInt[2, i] = 0 + elif btype[i] == "ppp": + btypeInt[0, i] = 1 + btypeInt[1, i] = 1 + btypeInt[2, i] = 1 + elif btype[i] == "pds": + btypeInt[0, i] = 1 + btypeInt[1, i] = 2 + btypeInt[2, i] = 0 + elif btype[i] == "pdp": + btypeInt[0, i] = 1 + btypeInt[1, i] = 2 + btypeInt[2, i] = 1 + elif btype[i] == "pfs": + btypeInt[0, i] = 1 + btypeInt[1, i] = 3 + btypeInt[2, i] = 0 + elif btype[i] == "pfp": + btypeInt[0, i] = 1 + btypeInt[1, i] = 3 + btypeInt[2, i] = 1 + elif btype[i] == "dds": + btypeInt[0, i] = 2 + btypeInt[1, i] = 2 + btypeInt[2, i] = 0 + elif btype[i] == "ddp": + btypeInt[0, i] = 2 + btypeInt[1, i] = 2 + btypeInt[2, i] = 1 + elif btype[i] == "ddd": + btypeInt[0, i] = 2 + btypeInt[1, i] = 2 + btypeInt[2, i] = 2 + elif btype[i] == "dfs": + btypeInt[0, i] = 2 + btypeInt[1, i] = 3 + btypeInt[2, i] = 0 + elif btype[i] == "dfp": + btypeInt[0, i] = 2 + btypeInt[1, i] = 3 + btypeInt[2, i] = 1 + elif btype[i] == "dfd": + btypeInt[0, i] = 2 + btypeInt[1, i] = 3 + btypeInt[2, i] = 2 + elif btype[i] == "ffs": + btypeInt[0, i] = 3 + btypeInt[1, i] = 3 + btypeInt[2, i] = 0 + elif btype[i] == "ffp": + btypeInt[0, i] = 3 + btypeInt[1, i] = 3 + btypeInt[2, i] = 1 + elif btype[i] == "ffd": + btypeInt[0, i] = 3 + btypeInt[1, i] = 3 + btypeInt[2, i] = 2 + elif btype[i] == "fff": + btypeInt[0, i] = 3 + btypeInt[1, i] = 3 + btypeInt[2, i] = 3 + else: + print("Warning! Missed assigning a bond type in readtb") + sys.exit(0) + + if btypeInt[1, i] > lMax: + lMax = btypeInt[1, i] + if btypeInt[2, i] > mpMax: + mpMax = btypeInt[2, i] + + return lMax, mpMax, btypeInt + + +def build_integralMap_I(noint, btype, atele, ele1, ele2, nats, lMax, mpMax, btypeInt, i): + iglMapI = np.zeros((mpMax + 1, lMax + 1, lMax + 1, nats), dtype=int) + + for j in range(nats): + for l1 in range(lMax + 1): + for l2 in range(lMax + 1): + if l1 > l2: + ip1 = l2 + ip2 = l1 + else: + ip1 = l1 + ip2 = l2 + for mp in range(min(l1, l2) + 1): + # Build basis strind from L and M values - pure hackery + if ip1 == 0: + igltype = "s" + elif ip1 == 1: + igltype = "p" + elif ip1 == 2: + igltype = "d" + elif ip1 == 3: + igltype = "f" + + if ip2 == 0: + igltype = igltype + "s" + elif ip2 == 1: + igltype = igltype + "p" + elif ip2 == 2: + igltype = igltype + "d" + elif ip2 == 3: + igltype = igltype + "f" + + if mp == 0: + igltype = igltype + "s" + elif mp == 1: + igltype = igltype + "p" + elif mp == 2: + igltype = igltype + "d" + elif mp == 3: + igltype = igltype + "f" + + # It makes a difference if our atoms are of the species or not... + + # Easier case first ATELE(I) = ATELE(J) + + if atele[i] == atele[j]: + for ic in range(noint): + if (atele[i] == ele1[ic]) and (atele[j] == ele2[ic]) and (igltype == btype[ic]): + iglMapI[mp, l2, l1, j] = ic + + else: + # Elements are different - care must be taken with p-s, s-p etc + if l1 == l2: + for ic in range(noint): + if ( + ((atele[i] == ele1[ic]) and (atele[j] == ele2[ic])) + or ((atele[i] == ele2[ic]) and (atele[j] == ele1[ic])) + ) and (igltype == btype[ic]): + # Now we've ID'ed our bond integral + iglMapI[mp, l2, l1, j] = ic + breakloop = 1 + else: # l1 ne l2 + if l1 < l2: + for ic in range(noint): + if ((atele[i] == ele1[ic]) and (atele[j] == ele2[ic])) and (igltype == btype[ic]): + # Now we've ID'ed our bond integral + iglMapI[mp, l2, l1, j] = ic + else: + for ic in range(noint): + if ((atele[i] == ele2[ic]) and (atele[j] == ele1[ic])) and (igltype == btype[ic]): + # Now we've ID'ed our bond integral + iglMapI[mp, l2, l1, j] = ic + + return iglMapI + + +def build_integralMap_parPool(noint, btype, atele, ele1, ele2, nats, verbose, parallel=1): + if verbose: + print("\nIn build_integralMap_parPool ...") + + lMax, mpMax, btypeInt = get_btypeInt(noint, btype, atele, ele1, ele2, nats, verbose) + iglMap = np.zeros((mpMax + 1, lMax + 1, lMax + 1, nats, nats), dtype=int) + + if parallel > 1: + pool = Pool(processes=parallel) + results = [ + pool.apply_async(build_integralMap_I, [noint, btype, atele, ele1, ele2, nats, lMax, mpMax, btypeInt, val]) + for val in range(0, nats) + ] + for idx, val in enumerate(results): + iglMap[:, :, :, :, idx] = val.get() + pool.close() + elif parallel == 1: + for val in range(nats): + iglMap[:, :, :, :, val] = build_integralMap_I( + noint, btype, atele, ele1, ele2, nats, lMax, mpMax, btypeInt, val + ) + + return iglMap + + +def build_integralMap(noint, btype, atele, ele1, ele2, nats, verbose): + if verbose: + print("\nIn build_integralMap ...") + + lMax = 0 + mpMax = 0 + btypeInt = np.zeros((3, noint), dtype=int) + for i in range(noint): + if btype[i] == "sss": + btypeInt[0, i] = 0 + btypeInt[1, i] = 0 + btypeInt[2, i] = 0 + elif btype[i] == "sps": + btypeInt[0, i] = 0 + btypeInt[1, i] = 1 + btypeInt[2, i] = 0 + elif btype[i] == "sds": + btypeInt[0, i] = 0 + btypeInt[1, i] = 2 + btypeInt[2, i] = 0 + elif btype[i] == "sfs": + btypeInt[0, i] = 0 + btypeInt[1, i] = 3 + btypeInt[2, i] = 0 + elif btype[i] == "pps": + btypeInt[0, i] = 1 + btypeInt[1, i] = 1 + btypeInt[2, i] = 0 + elif btype[i] == "ppp": + btypeInt[0, i] = 1 + btypeInt[1, i] = 1 + btypeInt[2, i] = 1 + elif btype[i] == "pds": + btypeInt[0, i] = 1 + btypeInt[1, i] = 2 + btypeInt[2, i] = 0 + elif btype[i] == "pdp": + btypeInt[0, i] = 1 + btypeInt[1, i] = 2 + btypeInt[2, i] = 1 + elif btype[i] == "pfs": + btypeInt[0, i] = 1 + btypeInt[1, i] = 3 + btypeInt[2, i] = 0 + elif btype[i] == "pfp": + btypeInt[0, i] = 1 + btypeInt[1, i] = 3 + btypeInt[2, i] = 1 + elif btype[i] == "dds": + btypeInt[0, i] = 2 + btypeInt[1, i] = 2 + btypeInt[2, i] = 0 + elif btype[i] == "ddp": + btypeInt[0, i] = 2 + btypeInt[1, i] = 2 + btypeInt[2, i] = 1 + elif btype[i] == "ddd": + btypeInt[0, i] = 2 + btypeInt[1, i] = 2 + btypeInt[2, i] = 2 + elif btype[i] == "dfs": + btypeInt[0, i] = 2 + btypeInt[1, i] = 3 + btypeInt[2, i] = 0 + elif btype[i] == "dfp": + btypeInt[0, i] = 2 + btypeInt[1, i] = 3 + btypeInt[2, i] = 1 + elif btype[i] == "dfd": + btypeInt[0, i] = 2 + btypeInt[1, i] = 3 + btypeInt[2, i] = 2 + elif btype[i] == "ffs": + btypeInt[0, i] = 3 + btypeInt[1, i] = 3 + btypeInt[2, i] = 0 + elif btype[i] == "ffp": + btypeInt[0, i] = 3 + btypeInt[1, i] = 3 + btypeInt[2, i] = 1 + elif btype[i] == "ffd": + btypeInt[0, i] = 3 + btypeInt[1, i] = 3 + btypeInt[2, i] = 2 + elif btype[i] == "fff": + btypeInt[0, i] = 3 + btypeInt[1, i] = 3 + btypeInt[2, i] = 3 + else: + print("Warning! Missed assigning a bond type in readtb") + sys.exit(0) + + if btypeInt[1, i] > lMax: + lMax = btypeInt[1, i] + if btypeInt[2, i] > mpMax: + mpMax = btypeInt[2, i] + + iglMap = np.zeros((mpMax + 1, lMax + 1, lMax + 1, nats, nats), dtype=int) + for i in range(nats): + for j in range(nats): + for l1 in range(lMax + 1): + for l2 in range(lMax + 1): + if l1 > l2: + ip1 = l2 + ip2 = l1 + else: + ip1 = l1 + ip2 = l2 + for mp in range(min(l1, l2) + 1): + # Build basis strind from L and M values - pure hackery + if ip1 == 0: + igltype = "s" + elif ip1 == 1: + igltype = "p" + elif ip1 == 2: + igltype = "d" + elif ip1 == 3: + igltype = "f" + + if ip2 == 0: + igltype = igltype + "s" + elif ip2 == 1: + igltype = igltype + "p" + elif ip2 == 2: + igltype = igltype + "d" + elif ip2 == 3: + igltype = igltype + "f" + + if mp == 0: + igltype = igltype + "s" + elif mp == 1: + igltype = igltype + "p" + elif mp == 2: + igltype = igltype + "d" + elif mp == 3: + igltype = igltype + "f" + + # It makes a difference if our atoms are of the species or not... + + # Easier case first ATELE(I) = ATELE(J) + + if atele[i] == atele[j]: + for ic in range(noint): + if (atele[i] == ele1[ic]) and (atele[j] == ele2[ic]) and (igltype == btype[ic]): + iglMap[mp, l2, l1, j, i] = ic + + else: + # Elements are different - care must be taken with p-s, s-p etc + if l1 == l2: + for ic in range(noint): + if ( + ((atele[i] == ele1[ic]) and (atele[j] == ele2[ic])) + or ((atele[i] == ele2[ic]) and (atele[j] == ele1[ic])) + ) and (igltype == btype[ic]): + # Now we've ID'ed our bond integral + iglMap[mp, l2, l1, j, i] = ic + breakloop = 1 + else: # l1 ne l2 + if l1 < l2: + for ic in range(noint): + if ((atele[i] == ele1[ic]) and (atele[j] == ele2[ic])) and ( + igltype == btype[ic] + ): + # Now we've ID'ed our bond integral + iglMap[mp, l2, l1, j, i] = ic + else: + for ic in range(noint): + if ((atele[i] == ele2[ic]) and (atele[j] == ele1[ic])) and ( + igltype == btype[ic] + ): + # Now we've ID'ed our bond integral + iglMap[mp, l2, l1, j, i] = ic + + return iglMap + + +def univscale(i, j, l1, l2, mp, r, tabs, tbh, sspl, hspl, iglMap, lentabint, tabr, tabh, hcut, scut, whichint): + myIntegral = iglMap[mp, l2, l1, j, i] + klo = 1 + khi = lentabint[myIntegral] + while (khi - klo) > 1: + k = (khi + klo) / 2 + if tabr[int(k), myIntegral] > r: + khi = k + else: + klo = k + khi = int(khi) + klo = int(klo) + dx = tabr[(khi), (myIntegral)] - tabr[(klo), (myIntegral)] + sa = (tabr[(khi), (myIntegral)] - r) / dx + sb = (r - tabr[(klo), (myIntegral)]) / dx + if whichint == "H": + univscale = ( + sa * tabh[klo, myIntegral] + + sb * tabh[khi, myIntegral] + + ((sa * sa * sa - sa) * hspl[klo, myIntegral] + (sb * sb * sb - sb) * hspl[khi, myIntegral]) + * (dx * dx / 6.0) + ) + if r > hcut[myIntegral]: + univscale = 0.0 + else: + univscale = ( + sa * tabs[klo, myIntegral] + + sb * tabs[khi, myIntegral] + + ((sa * sa * sa - sa) * sspl[klo, myIntegral] + (sb * sb * sb - sb) * sspl[khi, myIntegral]) + * (dx * dx / 6.0) + ) + if r > scut[myIntegral]: + univscale = 0.0 + + if (l1 > l2) and ((l1 + l2 % 2) != 0): + univscale = -1.0 * univscale + + return univscale + + +def angfactor(lbra, lket, mbra, mket, mp, alpha, cosbeta): + mytlmmp = 0.0 + wig_lbra_mbra_mp = 0.0 + wig_lket_mket_mp = 0.0 + if mp == 0: + wig_lbra_mbra_0 = wignerd(lbra, abs(mbra), 0, cosbeta) + wig_lket_mket_0 = wignerd(lket, abs(mket), 0, cosbeta) + angfactor = 2.0 * (am(mbra, alpha) * wig_lbra_mbra_0) * (am(mket, alpha) * wig_lket_mket_0) + else: + wig_lbra_mbra_mp = wignerd(lbra, abs(mbra), mp, cosbeta) + wig_lket_mket_mp = wignerd(lket, abs(mket), mp, cosbeta) + wig_lbra_mbra_negmp = wignerd(lbra, abs(mbra), -mp, cosbeta) + wig_lket_mket_negmp = wignerd(lket, abs(mket), -mp, cosbeta) + + angfactor = ( + am(mbra, alpha) + * (((-1.0) ** mp) * wig_lbra_mbra_mp + wig_lbra_mbra_negmp) + * am(mket, alpha) + * (((-1.0) ** mp) * wig_lket_mket_mp + wig_lket_mket_negmp) + ) + + if mbra == 0: + mytlmmp = 0.0 + else: + mytlmmp = bm(mbra, alpha) * (((-1.0) ** mp) * wig_lbra_mbra_mp - wig_lbra_mbra_negmp) + + if mket == 0: + mytlmmp = 0.0 + else: + mytlmmp = mytlmmp * bm(mket, alpha) * (((-1.0) ** mp) * wig_lket_mket_mp - wig_lket_mket_negmp) + angfactor = angfactor + mytlmmp + + return angfactor + + +def am(m, alpha): + am = 0.0 + if m == 0: + am = 0.707106781186548 # 1/SQRT(2) + elif m > 0: + am = ((-1) ** m) * np.cos(abs(m) * alpha) + elif m < 0: + am = ((-1) ** m) * np.sin(abs(m) * alpha) + return am + + +def bm(m, alpha): + bm = 0.0 + if m == 0: + bm = 0.0 + elif m > 0: + bm = (-((-1) ** m)) * np.sin(abs(m) * alpha) + elif m < 0: + bm = ((-1) ** m) * np.cos(abs(m) * alpha) + return bm + + +# Builds Wigner d function +# notation conforms to that in PRB 72 165107 (2005), eq. (9) +def wignerd(l, m, mp, cosbeta): + wignerd = 0.0 + if abs(mp) > l: + wignerd = 0.0 + else: + pref = ( + (((-1.0) ** (l - mp)) / ((2.0) ** l)) + * sqrtfact(l + m) + * sqrtfact(l - m) + * sqrtfact(l + mp) + * sqrtfact(l - mp) + ) + wignered = 0.0 + for k in range(max(0, -m - mp), min(l - m, l - mp) + 1): + powtmp = float(m + mp) / 2.0 + power1 = float(l - k) - powtmp + power2 = float(k) + powtmp + + wignerd = wignerd + ((-1.0) ** k) * ((1.0 - cosbeta) ** power1) * ((1.0 + cosbeta) ** power2) / float( + factorial(k) * factorial(l - m - k) * factorial(l - mp - k) * factorial(m + mp + k) + ) + + wignerd = pref * wignerd + return wignerd + + +def factorial(k): + fact = 1.0 + + if k > 0: + for l in range(1, k + 1): + fact = fact * l + + return fact + + +def sqrtfact(k): + sqrtfact = np.sqrt(factorial(k)) + + return sqrtfact + + +### +# @brief Gets the bond integral paramters of the LATTE Tight-binding. +# This is a python version of readtb.F90 LATTE routine +# +# \param bondintsFileName Name of the file containing bond integrals +# \param electronsFileName Name of the file containing atomic data +# +# @detailed Bond integrals are the distance dependent Hamiltonian elements +# \f[ +# H_{ij} = +# \f] +# and +# \f[ +# H_{ii} = U_i +# \f] +# +## +def read_bondints(electronsFileName, bondintsFileName, verbose): + if verbose: + print("In read_bondints ...") + + # Checking if the file is in the local directory + if os.path.isfile(bondintsFileName): + if verbose >= 1: + print("\nWorking with file:", os.path.abspath(bondintsFileName), " ...") + else: + sys.exit("\nI can't find bondints in this directory") + if os.path.isfile(electronsFileName): + if verbose >= 1: + print("\nWorking with file:", os.path.abspath(electronsFileName), " ...") + else: + sys.exit("\nI can't find bondints in this directory") + + myBondintsFile = open(bondintsFileName, "r") + myElectronsFile = open(electronsFileName, "r") + + count = 0 + for lines in myElectronsFile: + count = count + 1 + lines_split = lines.split() + if len(lines_split) == 0: + break + if count == 1: + noelem = int(lines_split[1]) + ele = [] + basis = [] + atocc = np.zeros((noelem)) + hes = np.zeros((noelem)) + hep = np.zeros((noelem)) + hed = np.zeros((noelem)) + hef = np.zeros((noelem)) + mass = np.zeros((noelem)) + hubbardu = np.zeros((noelem)) + if count == 2: + pass + if count >= 3: + ele.append(lines_split[0]) + basis.append(lines_split[1]) + atocc[count - 3] = float(lines_split[2]) + hes[count - 3] = float(lines_split[3]) + hep[count - 3] = float(lines_split[4]) + hed[count - 3] = float(lines_split[5]) + hef[count - 3] = float(lines_split[6]) + mass[count - 3] = float(lines_split[7]) + hubbardu[count - 3] = float(lines_split[8]) + + if verbose: + print("\nTable data") + print("Nunber of elements =", noelem) + print("Elements =", ele) + print("Basis sets =", basis) + print("Atomic occupation =", atocc) + print("Self energy s =", hes) + print("Self energy p =", hep) + print("Self energy d =", hed) + print("Self energy f =", hef) + print("Atomic masses =", mass) + print("Hubbard Us =", hubbardu) + + count = 0 + listOfLines = [] + for lines in myBondintsFile: + count = count + 1 + lines_split = lines.split() + if len(lines_split) == 0: + break + if count == 1: + noint = int(lines_split[1]) + if count >= 2: + listOfLines.append(lines_split) + + # Getting the max number of entries + maxentry = 0 + for i in range(len(listOfLines)): + if len(listOfLines[i]) == 1: + maxentry = max(maxentry, int(listOfLines[i][0])) + + tabr = np.zeros((maxentry, noint)) + tabh = np.zeros((maxentry, noint)) + tabs = np.zeros((maxentry, noint)) + lentabint = np.zeros((noint), dtype=int) + hspl = np.zeros((maxentry, noint)) + sspl = np.zeros((maxentry, noint)) + hcut = np.zeros((noint)) + scut = np.zeros((noint)) + + count = 0 + ele1 = [] + ele2 = [] + btype = [] + for i in range(noint): + ele1.append(listOfLines[count][0]) + ele2.append(listOfLines[count][1]) + btype.append(listOfLines[count][2]) + count = count + 1 + lentabint[i] = int(listOfLines[count][0]) + count = count + 1 + for j in range(lentabint[i]): + tabr[j, i] = float(listOfLines[count][0]) + tabs[j, i] = float(listOfLines[count][1]) + tabh[j, i] = float(listOfLines[count][2]) + count = count + 1 + for j in range(lentabint[i]): + if tabr[j, i] > hcut[i]: + hcut[i] = tabr[j, i] + scut[i] = hcut[i] + + paramU = np.zeros((maxentry)) + + for i in range(noint): + n = lentabint[i] - 1 + hspl[0, i] = 0.0 + paramU[0] = 0.0 + + for j in range(1, n - 1): + sig = (tabr[j, i] - tabr[j - 1, i]) / (tabr[j + 1, i] - tabr[j - 1, i]) + p = sig * hspl[j - 1, i] + 2.0 + hspl[j, i] = (sig - 1.0) / p + paramU[j] = ( + 6.0 + * ( + (tabh[j + 1, i] - tabh[j, i]) / (tabr[j + 1, i] - tabr[j, i]) + - (tabh[j, i] - tabh[j - 1, i]) / (tabr[j, i] - tabr[j - 1, i]) + ) + / (tabr[j + 1, i] - tabr[j - 1, i]) + - sig * paramU[j - 1] + ) / p + qn = 0.0 + un = 0.0 + hspl[n, i] = (un - qn * paramU[n - 1]) / (qn * hspl[n - 1, i] + 1.0) + + # 1 > 0 + # n > n-1 (range n) + # n-1 > n-2 (range n-1) + + for k in range(n - 2, 0): + hspl[k, i] = hspl[k, i] * hspl[k + 1, i] + paramU[k] + + # Now for the overlap + for i in range(noint): + n = lentabint[i] - 1 + sspl[0, i] = 0.0 + paramU[0] = 0.0 + + for j in range(1, n - 1): + sig = (tabr[j, i] - tabr[j - 1, i]) / (tabr[j + 1, i] - tabr[j - 1, i]) + p = sig * sspl[j - 1, i] + 2.0 + sspl[j, i] = (sig - 1.0) / p + paramU[j] = ( + 6.0 + * ( + (tabh[j + 1, i] - tabh[j, i]) / (tabr[j + 1, i] - tabr[j, i]) + - (tabh[j, i] - tabh[j - 1, i]) / (tabr[j, i] - tabr[j - 1, i]) + ) + / (tabr[j + 1, i] - tabr[j - 1, i]) + - sig * paramU[j - 1] + ) / p + qn = 0.0 + un = 0.0 + sspl[n, i] = (un - qn * paramU[n - 1]) / (qn * sspl[n - 1, i] + 1.0) + + # 1 > 0 + # n > n-1 (range n) + # n-1 > n-2 (range n-1) + + for k in range(n - 2, 0): + sspl[k, i] = hspl[k, i] * sspl[k + 1, i] + paramU[k] + + # New: translate the 'pp pi's to L1 L2 MP for use later + + btype_int = np.zeros((3, noint), dtype=int) + for i in range(1, noint): + if btype[i] == "sss": + btype_int[0, i] = 0 + btype_int[1, i] = 0 + btype_int[2, i] = 0 + elif btype[i] == "sps": + btype_int[0, i] = 0 + btype_int[1, i] = 0 + btype_int[2, i] = 0 + elif btype[i] == "sds": + btype_int[0, i] = 0 + btype_int[1, i] = 1 + btype_int[2, i] = 0 + elif btype[i] == "sfs": + btype_int[0, i] = 0 + btype_int[1, i] = 2 + btype_int[2, i] = 0 + elif btype[i] == "pps": + btype_int[0, i] = 0 + btype_int[1, i] = 0 + btype_int[2, i] = 0 + elif btype[i] == "ppp": + btype_int[0, i] = 0 + btype_int[1, i] = 0 + btype_int[2, i] = 0 + elif btype[i] == "pds": + btype_int[0, i] = 0 + btype_int[1, i] = 1 + btype_int[2, i] = 0 + elif btype[i] == "pdp": + btype_int[0, i] = 0 + btype_int[1, i] = 1 + btype_int[2, i] = 0 + elif btype[i] == "pfs": + btype_int[0, i] = 0 + btype_int[1, i] = 2 + btype_int[2, i] = 0 + elif btype[i] == "pfp": + btype_int[0, i] = 0 + btype_int[1, i] = 2 + btype_int[2, i] = 0 + elif btype[i] == "dds": + btype_int[0, i] = 1 + btype_int[1, i] = 1 + btype_int[2, i] = 0 + elif btype[i] == "ddp": + btype_int[0, i] = 1 + btype_int[1, i] = 1 + btype_int[2, i] = 0 + elif btype[i] == "ddd": + btype_int[0, i] = 1 + btype_int[1, i] = 1 + btype_int[2, i] = 1 + elif btype[i] == "dfs": + btype_int[0, i] = 1 + btype_int[1, i] = 2 + btype_int[2, i] = 0 + elif btype[i] == "dfp": + btype_int[0, i] = 1 + btype_int[1, i] = 2 + btype_int[2, i] = 0 + elif btype[i] == "dfd": + btype_int[0, i] = 1 + btype_int[1, i] = 2 + btype_int[2, i] = 1 + elif btype[i] == "ffs": + btype_int[0, i] = 2 + btype_int[1, i] = 2 + btype_int[2, i] = 0 + elif btype[i] == "ffp": + btype_int[0, i] = 2 + btype_int[1, i] = 2 + btype_int[2, i] = 0 + elif btype[i] == "ffd": + btype_int[0, i] = 2 + btype_int[1, i] = 2 + btype_int[2, i] = 1 + elif btype[i] == "fff": + btype_int[0, i] = 2 + btype_int[1, i] = 2 + btype_int[2, i] = 2 + else: + print("Warning! Missed assigning a bond type in readtb") + sys.exit(0) + + # return(noelem,ele,ele,basis,atocc,hes,hep,hed,hef,mass,hubbardu,btype_int,) + return ( + noelem, + ele, + ele1, + ele2, + basis, + hes, + hep, + hed, + hef, + hcut, + scut, + noint, + btype, + tabh, + tabs, + sspl, + hspl, + lentabint, + tabr, + atocc, + mass, + hubbardu, + ) + + +def get_elempointer(atele, ele, verbose): + if verbose: + print("\nIn get_elempointer ...") + + noelem = len(ele) + nats = len(atele) + + elempointer = np.zeros((nats), dtype=int) + for i in range(nats): + for j in range(noelem): + if atele[i] == ele[j]: + elempointer[i] = j + + return elempointer + + +def get_cutoffList(nats, atele, ele1, ele2, hcut, scut, noint, verbose): + if verbose: + print("\nIn get_cutoffList ...") + + cutoffList = np.zeros((nats, nats)) + + for i in range(nats): + for j in range(nats): + rcuttb = 0.0 + + for k in range(noint): + if (atele[i] == ele1[k] and atele[j] == ele2[k]) or (atele[j] == ele1[k] and atele[i] == ele2[k]): + if hcut[k] > rcuttb: + rcuttb = hcut[k] + if scut[k] > rcuttb: + rcuttb = scut[k] + + cutoffList[j, i] = rcuttb + return cutoffList + + +def get_cutoffList_I(nats, atele, ele1, ele2, hcut, scut, noint, i): + cutoffList = np.zeros((nats, nats)) + for j in range(nats): + rcuttb = 0.0 + + for k in range(noint): + if (atele[i] == ele1[k] and atele[j] == ele2[k]) or (atele[j] == ele1[k] and atele[i] == ele2[k]): + if hcut[k] > rcuttb: + rcuttb = hcut[k] + if scut[k] > rcuttb: + rcuttb = scut[k] + + cutoffList[j, i] = rcuttb + return cutoffList + + +def get_cutoffList_par(nats, atele, ele1, ele2, hcut, scut, noint, verbose): + if verbose: + print("\nIn get_cutoffList_par ...") + + cutoffList = Parallel(n_jobs=12)( + delayed(get_cutoffList_I)(nats, atele, ele1, ele2, hcut, scut, noint, i) for i in range(nats) + ) + cutoffList = sum(cutoffList) + + return cutoffList + + +def get_cutoffList_I_vect(nats, atele, ele1, ele2, hcut, scut, noint, i): + cutoffListI = np.zeros((nats)) + for j in range(nats): + rcuttb = 0.0 + for k in range(noint): + if (atele[i] == ele1[k] and atele[j] == ele2[k]) or (atele[j] == ele1[k] and atele[i] == ele2[k]): + if hcut[k] > rcuttb: + rcuttb = hcut[k] + if scut[k] > rcuttb: + rcuttb = scut[k] + + cutoffListI[j] = rcuttb + + return cutoffListI + + +def get_cutoffList_parPool(nats, atele, ele1, ele2, hcut, scut, noint, verbose, parallel=1): + if verbose: + print("\nIn get_cutoffList_parPool ...") + + cutoffList = np.zeros((nats, nats)) + if parallel > 1: + pool = Pool(processes=parallel) + results = [ + pool.apply_async(get_cutoffList_I_vect, [nats, atele, ele1, ele2, hcut, scut, noint, val]) + for val in range(0, nats) + ] + for idx, val in enumerate(results): + cutoffList[idx, :] = val.get() + pool.close() + elif parallel == 1: + for val in range(nats): + cutoffList[val, :] = get_cutoffList_I_vect(nats, atele, ele1, ele2, hcut, scut, noint, val) + + return cutoffList + + +### +# @brief Constructs inverse overlap factors given S. +# This is a python version of genX.F90 LATTE routine +# +## +def genX(smat, method, verbose): + if verbose: + print("In genX ...") + + hdim = len(smat) + if method == "Diag": + # e,v = np.linalg.eig(smat) + e, v = eigh(smat) + s = 1.0 / np.sqrt(e) + zmat = np.zeros((hdim, hdim)) + for i in range(hdim): + zmat[i, :] = s[i] * v[:, i] + zmat = np.matmul(v, zmat) + elif method == "Cholesky": + pass + else: + print("ERROR: Method not implemented") + sys.exit(0) + + if verbose: + print("\nZmat Matrix") + print(zmat) + + return zmat + + +def fermi_exp(hmat, zmat, nocc, T): + hmat_orth = np.matmul(np.matmul(np.transpose(zmat), hmat), np.transpose(zmat)) + e, C = np.linalg.eigh(hmat_orth) + mu0 = 0.5 * (e[nocc - 1] + e[nocc]) + + kB = 8.61739e-5 + beta = 1.0 / (kB * T) + hdim = len(hmat) + + OccErr = 100.0 + iter = 0 + focc = np.zeros(hdim) + while OccErr > 1e-12: # Adjusts the chemical potential for a given Fermi-Dirac + iter = iter + 1 + occ = 0.0 + docc = 0.0 + for i in range(hdim): + tmp = beta * (e[i] - mu0) + if tmp < -100: + tmp = -100.0 + if tmp > 100: + tmp = 100.0 + focc[i] = 1.0 / (np.exp(tmp) + 1.0) + occ = np.sum(focc) + docc = np.sum(beta * focc * (1.0 - focc)) + OccErr = np.absolute(nocc - occ) + print(OccErr, nocc, occ) + if np.absolute(OccErr) > 1e-10: + mu0 = mu0 + (nocc - occ) / docc + + if iter > 20: + print(" Not Converging in feri_exp OccErr = ", OccErr) + OccErr = 0.0 + + if docc > 1e-14: + focc = focc + ((nocc - occ) / docc) * beta * focc * (1.0 - focc) + + dmat = np.zeros((hdim, hdim)) + for i in range(hdim): + dmat[:, i] = C[:, i] * focc[i] + dmat = np.matmul(dmat, np.transpose(C)) + dmat = np.matmul(np.matmul(zmat, dmat), np.transpose(zmat)) + + entropy = 0.0 + for i in range(hdim): + if focc[i] > 1e-14 and focc[i] < 1.0 - 1e-14: + entropy = entropy - kB * (focc[i] * np.log(focc[i]) + (1.0 - focc[i]) * np.log(1.0 - focc[i])) + + return (dmat, focc, C, e, mu0, entropy) diff --git a/src/sedacs/latte/main_latte_call.py b/src/sedacs/latte/main_latte_call.py new file mode 100644 index 00000000..36352a45 --- /dev/null +++ b/src/sedacs/latte/main_latte_call.py @@ -0,0 +1,115 @@ +import numpy as np +from latte import * +from sedacs.system import * +from sedacs.periodic_table import * + + +## General LATTE dm API call +# This function will take coordinates and atom type and +# retreive the density matrix. +# @param box Lattice vectors. box[0,:] = first lattice vectors +# @param symbols List of elements symbols for each atom type +# @param types A list of types for every atom in the system +# @param coords Positions for every atom in the system. coords[0,2] z-coordinate of atom 0 +# @return dm Density matrix +# +def get_latte_dm(box, symbols, types, coords): + nats = len(types) # Number of atoms + atele = [] + for i in range(nats): + atele.append(symbols[types[i]]) # Element for every atom in the system + + # Read bond integrals and atomic info + ( + noelem, + ele, + ele1, + ele2, + basis, + hes, + hep, + hed, + hef, + hcut, + scut, + noint, + btype, + tabh, + tabs, + sspl, + hspl, + lentabint, + tabr, + atocc, + mass, + hubbardu, + ) = read_bondints("electrons.dat", "bondints.table", myVerb) + + # Get element pointer + elempointer = get_elempointer(atele, ele, myVerb) + + # Get the dimension of Hamiltonian + hdim = get_hdim(nats, elempointer, basis, myVerb) + + # et cutoff list + cutoffList = get_cutoffList(nats, atele, ele1, ele2, hcut, scut, noint, myVerb) + + # Get integral map + iglMap = build_integralMap(noint, btype, atele, ele1, ele2, nats, myVerb) + + # Construct the Hamiltonian and Overlap + smat, ham = build_HS( + nats, + coords, + box, + elempointer, + basis, + hes, + hep, + hed, + hef, + hdim, + cutoffList, + iglMap, + tabh, + tabs, + sspl, + hspl, + lentabint, + tabr, + hcut, + scut, + myVerb, + ) + + # Get the inverse overlap factors + zmat = genX(smat, method="Diag", verbose=True) + + # Initializing a periodic table + pt = PeriodicTable() + + # Getting number of electrons + numel = 0 + for i in range(nats): + atnum = pt.get_atomic_number(symbols[types[i]]) + numel = numel + pt.numel[atnum] + + # Getting the number of occupied states + nocc = int(numel / 2.0) + + # Getting the density matrix + T = 100.0 + dm, focc, C, e, mu0, entropy = fermi_exp(ham, zmat, nocc, T) + + return dm + + +if __name__ == "__main__": + myVerb = True + # Read coordinates from pdb file + box, symbols, types, coords = read_xyz_file("coords.xyz", lib="Ase", verb=myVerb) + + # Call latte to get the density matrix + dm = get_latte_dm(box, symbols, types, coords) + print("Density matrix =") + print(dm) diff --git a/src/sedacs/latte/vars b/src/sedacs/latte/vars new file mode 100644 index 00000000..2e631f09 --- /dev/null +++ b/src/sedacs/latte/vars @@ -0,0 +1,5 @@ +#!/bin/bash +PYLATTE_PATH=`pwd` +MOD_PATH=$PYLATTE_PATH/../ +export PYTHONPATH=$PYTHONPATH:$MOD_PATH +export PYTHONWARNINGS="ignore:Unverified HTTPS request" diff --git a/src/sedacs/message.py b/src/sedacs/message.py new file mode 100644 index 00000000..a81c5211 --- /dev/null +++ b/src/sedacs/message.py @@ -0,0 +1,35 @@ +"""Standarized messages. + +This will provide some standard messages used throughout the code +""" + +import sys + +__all__ = ["status_at", "error_at", "warning_at", "sdc_test_fail", "sdc_test_pass"] + +import warnings + +class TextColor: + green = "\033[92m" + yellow = "\033[93m" + red = "\033[91m" + normal = "\033[0m" + +def status_at(name,msg): + print(TextColor.green, "\n >>> STATUS at",name,TextColor.normal," ",msg, "...\n") + +def error_at(name, message=None): + msg = "\n" + TextColor.red + "### ERROR at:" + TextColor.normal + " " + name + " " + if message is not None: + msg += TextColor.normal + message + "\n" + raise RuntimeError(msg) + +def warning_at(name, msg): + print(TextColor.yellow, "\n !!! WARNING at", name,TextColor.normal," ",msg, "...\n") + +def sdc_test_fail(name): + print(" Test for ", name, "... " + TextColor.red + "Failed" + TextColor.normal) + +def sdc_test_pass(name): + print(" Test for ", name, "... " + TextColor.green + "Passed" + TextColor.normal) + diff --git a/src/sedacs/mixer.py b/src/sedacs/mixer.py new file mode 100644 index 00000000..01eb1966 --- /dev/null +++ b/src/sedacs/mixer.py @@ -0,0 +1,158 @@ +"""mixer +Some mixing schemes functions to accelerate SCF convergence. + +So far: linear_mix, diis_mix +""" + +from sedacs.message import * +from sedacs.periodic_table import PeriodicTable +import numpy as np + +# from sdc_out import * +try: + from mpi4py import MPI + + mpiLib = True +except ImportError as e: + mpiLib = False +from multiprocessing import Pool + +if mpiLib: + from sedacs.mpi import * +import time + +__all__ = [ + "linear_mix", + "diis_mix", +] + +## Do DIIS mixing scheme +# @param +# @param +# @param verb Verbosity level +# +def diis_mix(charges,chargesOld,chargesIn,chargesOut,iteration,verb=False): + + + mStoring = 5 + mixCoeff = 0.2 + + if(verb): + status_at("diis_mix","Performing Pulay mixing scheme ...") + + nats = len(charges) + + if(iteration == 0): + chargesOld = np.zeros((nats)) + chargesOld[:] = charges[:] + chargesIn = np.zeros((nats,mStoring)) #dqin + chargesOut = np.zeros((nats,mStoring)) + + kStoring=min(iteration,mStoring) + + if(iteration <= 0): + charges = (1.0 - mixCoeff)*chargesOld + mixCoeff*charges #Linear mixing + scfError = np.linalg.norm(charges) + if(verb): + print("SCF error =", scfError) + chargesOld[:] = charges[:] + else: + + chargesAux = np.zeros(nats) #d + chargesNewIn = np.zeros(nats) #dnew + chargesNewOut = np.zeros(nats) #dnewOut + + chargesAux[:] = charges[:] + + coeffMat = np.zeros((kStoring+1,kStoring+1)) + bVect = np.zeros((kStoring+1)) + + #Shifting the storing vectors + if(iteration <= mStoring): + chargesIn[:,iteration-1] = chargesOld[:] + chargesOut[:,iteration-1] = chargesAux[:] + + if(iteration >= mStoring + 1): + + for j in range(0,kStoring-1): + chargesIn[:,j] = chargesIn[:,j+1] + chargesOut[:,j] = chargesOut[:,j+1] + + chargesIn[:,kStoring-1] = chargesOld[:] + chargesOut[:,kStoring-1] = chargesAux[:] + + + coeffMat[:,:] = 0.0 + + for i in range(0,kStoring+1): + coeffMat[kStoring,i] = -1.0 + coeffMat[i,kStoring] = -1.0 + bVect[i] = 0 + + bVect[kStoring] = -1.0 + coeffMat[kStoring, kStoring] = 0.0 + + + for i in range (0,kStoring): + for j in range (0,kStoring): + for k in range(nats): + coeffMat[i,j] = coeffMat[i,j] + (chargesOut[k,i]-chargesIn[k,i])*(chargesOut[k,j]-chargesIn[k,j]) + + if(verb): + print("Coeffs") + print(coeffMat) + + try: + bVect = np.linalg.solve(coeffMat,bVect) + bSolved = True + except: + print('WARNING: Singular matrix in DIIS. Doing linear mixing') + bVect[:] = 1.0/(float(len(bVect))) + bSolved = False + + chargesNewIn[:] = np.zeros((nats)) + chargesNewOut[:] = np.zeros((nats)) + + + if(bSolved): + for j in range(kStoring): + chargesNewIn[:] = chargesNewIn[:] + bVect[j] * chargesIn[:,j] + chargesNewOut[:] = chargesNewOut[:] + bVect[j] * chargesOut[:,j] + else: + for j in range(kStoring): + chargesNewIn[:] = chargesIn[:,j] + chargesNewOut[:] = chargesOut[:,j] + + chargesAux = (1.0 - mixCoeff)*chargesNewIn + mixCoeff*chargesNewOut + + scfError = np.linalg.norm(charges -chargesOld) + + if(verb): + print("SCF error =", scfError) + + charges=chargesAux + + chargesOld=chargesAux + + return scfError, charges, chargesOld, chargesIn, chargesOut + +## Do linear mixing +# @param mixCoeff Mixing coefficient +# @param charges System charges +# @param chargesOld Old system charges +# @return charges Mofified system charges according to mixing scheme +# @param verb Verbosity level +# +def linear_mix(mixCoeff,charges,chargesOld,iteration): + + if(iteration == 0): + chargesOld = np.zeros(len(charges)) + chargesOld[:] = charges[:] + scfError = 1.0 + else: + charges[:] = mixCoeff*charges[:] + (1-mixCoeff)*chargesOld[:] + scfError = np.linalg.norm(charges - chargesOld) + chargesOld[:] = charges[:] + + return scfError,charges,chargesOld + diff --git a/src/sedacs/molSysData.py b/src/sedacs/molSysData.py new file mode 100644 index 00000000..9f5fac22 --- /dev/null +++ b/src/sedacs/molSysData.py @@ -0,0 +1,34 @@ +"""eVals dVals +Routines to build eVals and dVals. Typically +this will be done interfacing with an engine. + +""" + +import sys + +from sedacs.interface_pyseqm import pyseqmObjects +import numpy as np + +__all__ = ["get_eVals"] + + +## Build the density matrix. +# @brief This will build a density matrix. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param nocc Number of occupied states +# @param ham Hamiltonian matrix +# @verbose Verbosity +# +def get_molSysData(eng, sdc, coords,symbols,atomTypes, do_large_tensors=True, device='cpu'): + if eng.interface == "None": + print("ERROR!!! - Write your own Data") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + print('TBD') + exit() + elif eng.interface == "PySEQM": + return pyseqmObjects(sdc, coords,symbols,atomTypes, do_large_tensors=do_large_tensors, device=device) + + return diff --git a/src/sedacs/mpi.py b/src/sedacs/mpi.py new file mode 100644 index 00000000..3f4b924d --- /dev/null +++ b/src/sedacs/mpi.py @@ -0,0 +1,218 @@ +"""Some mpi wrappers using MPI4PY""" + +import sys + +import numpy as np + +try: + from mpi4py import MPI + + mpiLib = True +except ImportError as e: + mpiLib = False + +## Send and receive +# @brief Very simple send and receive mpi wrapper for integer numpy 2D arrays +# @param dataSend Date (2D numpy int array) to be sent +# @param fromRank The rank num from which data will be sent +# @param toRank The rank num from which data will be received +# @param rank The number for current mpi execution rank +# @param comm MPI communicator +# @return dataRecv Received data +# +def send_and_receive(dataSend, fromRank, toRank, rank, comm): + dataRecv = None + if rank == fromRank: + comm.Send(dataSend, dest=toRank, tag=0) + + elif rank == toRank: + dataRecv = np.empty((len(dataSend[:, 0]), len(dataSend[0, :])), dtype=int) + comm.Recv(dataRecv, source=fromRank, tag=0) + return dataRecv + + +## Collect matrix from chunks +# @brief This will collect a full matrix from severa "regular" chunks. +# @param chunk Matrix chunk to be collected +# @param nDim Dimension of the full matrix +# @param rowsPerChunk Number of rows in the chunk.Typically `rowsPerChunk = int(nDim/numranks)`. +# It can happen that the last chunk contains more than rowsPerChunk. Basically +# the last chunk will be used to adjust in case `nDim` is not divisible by numranks. In this case: +# the last chunk (corresponding to the last rank) will have: `nDim - rowsPerChunk*(numrank-1)` +# numbers of rows. +# @param rank The number for current mpi execution rank +# @param numranks Number of execution ranks +# @param comm MPI communicator +# +def collect_matrix_from_chunks(chunk, nDim, rowsPerChunk, rank, numranks, comm): + if not mpiLib: + raise ImportError("ERROR: Consider installing mpi4py") + + if nDim < rowsPerChunk: + raise ValueError(f"ERROR: nDim should be larger than rowsPerChunk: {nDim, rowsPerChunk}") + + maxChunkDim = nDim - (numranks - 1) * rowsPerChunk + + mDim = len(chunk[0, :]) + chunkDim = len(chunk[:, 0]) + fullMat = np.empty([nDim, mDim], dtype=int) + + # Prepare buffers + dataSend = np.empty((maxChunkDim, mDim), dtype=int) + dataRecv = np.empty((maxChunkDim, mDim), dtype=int) + dataSend[0:chunkDim, :] = chunk[0:chunkDim, :] + + # Do the "all gathers" + for i in range(numranks): + for j in range(numranks): + if i != j: + dataRecv = send_and_receive(dataSend, i, j, rank, comm) + else: + if i == rank: # If i = j and rank = i rec = send + dataRecv = dataSend + else: + dataRecv = None + if isinstance(dataRecv, type(None)): + pass + else: + if i < numranks - 1: + fullMat[i * rowsPerChunk : (i + 1) * rowsPerChunk, :] = dataRecv[0:rowsPerChunk, :] + else: + fullMat[(numranks - 1) * rowsPerChunk : nDim, :] = dataRecv[ + 0 : nDim - (numranks - 1) * rowsPerChunk, : + ] + return fullMat + + +def collect_and_sum_matrices(matOnRank, rank, numranks, comm): + if not mpiLib: + raise ImportError("ERROR: Consider installing mpi4py") + + nDim = len(matOnRank[:, 0]) + mDim = len(matOnRank[0, :]) + fullMat = np.zeros([nDim, mDim], dtype=int) + + # Prepare buffers + dataSend = np.empty((nDim, mDim), dtype=int) + dataRecv = np.empty((nDim, mDim), dtype=int) + dataSend[:, :] = matOnRank[:, :] + + # Do the "all gathers" and sum + for i in range(numranks): + for j in range(numranks): + if i != j: + dataRecv = send_and_receive(dataSend, i, j, rank, comm) + else: + if i == rank: # If i = j and rank = i rec = send + dataRecv = dataSend + else: + dataRecv = None + if isinstance(dataRecv, type(None)): + pass + else: + fullMat[:, :] = dataRecv[:, :] + fullMat[:, :] + + return fullMat + + +def collect_and_sum_vectors_float(vectOnRank, rank, numranks, comm): + + if not mpiLib: + + raise ImportError("ERROR: Consider installing mpi4py") + + nDim = len(vectOnRank) + + fullVect = np.zeros(nDim, dtype=float) + + comm.Allreduce(vectOnRank,fullVect,op=MPI.SUM) + + return fullVect + + +def collect_and_concatenate_vectors(vectOnRank, comm): + + if not MPI.Is_initialized(): + + raise ImportError("ERROR: Consider installing mpi4py") + + # Gather the sizes of each vectOnRank + local_size = len(vectOnRank) + sizes = comm.allgather(local_size) + + # Calculate the displacements for each rank + displacements = np.cumsum([0] + sizes[:-1]) + + # Create the full vector with the total size + total_size = sum(sizes) + fullVect = np.zeros(total_size, dtype=float) + + # Gather all vectors into fullVect + comm.Allgatherv(vectOnRank, [fullVect, sizes, displacements, MPI.DOUBLE]) + + return fullVect + + +def collect_matrix_from_chunks_v1(chunk, nDim, rowsPerChunk, rank, numranks, comm): + if not mpiLib: + raise ImportError("\nERROR: Consider installing mpi4py") + + if nDim < rowsPerChunk: + raise ValueError(f"ERROR: nDim should be larger than rowsPerChunk: {nDim, rowsPerChunk}") + + maxChunkDim = nDim - (numranks - 1) * rowsPerChunk + + mDim = len(chunk[0, :]) + chunkDim = len(chunk[:, 0]) + fullMat = np.empty([nDim, mDim], dtype=int) + + comm.Barrier() + + displacements = [] + for i in range(numranks): + displacements.append(i * rowsPerChunk * mDim) + + print(displacements) + + comm.Allgatherv(chunk, [fullMat, nDim * mDim, displacements, MPI.INT]) + + return fullMat + +if __name__ == "__main__": + # Small test code + n = len(sys.argv) + if n == 1: + print("Give the name of the function to be tested. Example: collect_matrix_from_chunks\n") + sys.exit(0) + else: + test = str(sys.argv[1]) + + if test == "collect_matrix_from_chunks": + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + numranks = comm.Get_size() + + row = [1, 2, 3, 4] + chunk = np.zeros((5, 4), dtype=int) + chunk[:, :] = row + chunk[:, :] = chunk[:, :] + rank + nDim = numranks * len(chunk[:, 0]) + rowsPerChunk = 5 + maxChunkDim = rowsPerChunk + + fullMat = collect_matrix_from_chunks(chunk, nDim, rowsPerChunk, rank, numranks, comm) + + if rank == 0: + print(fullMat) + + if test == "collect_and_sum_matrices": + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + numranks = comm.Get_size() + row = [0, 0, 0, 0] + mat = np.zeros((5, 4), dtype=int) + mat[:, :] = row + mat[:, :] = mat[:, :] + rank + print("Rank, mat", rank, mat) + fullMat = collect_and_sum_matrices(mat, rank, numranks, comm) + print("Full mat", fullMat) diff --git a/src/sedacs/overlap.py b/src/sedacs/overlap.py new file mode 100644 index 00000000..4e1cc3c6 --- /dev/null +++ b/src/sedacs/overlap.py @@ -0,0 +1,31 @@ +from sedacs.interface_pyseqm import get_overlap_pyseqm +import torch + +__all__ = ["get_overlap"] + + +## Build the overlap matrix. +# @brief This will build a density matrix. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param nocc Number of occupied states +# @param ham Hamiltonian matrix +# @verbose Verbosity +# +def get_overlap(eng, coords, symbols, types, hindex): + if eng.interface == "None": + print("ERROR!!! - Write your own overlap") + exit() + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + print("ERROR!!! - Write your own overlap") + exit() + elif eng.interface == "PySEQM": + + with torch.no_grad(): + return get_overlap_pyseqm(coords, symbols, types, hindex).detach().numpy() + + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + exit() + return rho diff --git a/src/sedacs/parser.py b/src/sedacs/parser.py new file mode 100644 index 00000000..c2631272 --- /dev/null +++ b/src/sedacs/parser.py @@ -0,0 +1,265 @@ +"""sdc prototype parser""" + +import sys + +import numpy as np + + +## Input reader +# @brief This will be used to store and read the values for all the +# input variables used in the code. +# +class Input: + """Simple input parser""" + + def __init__(self, fileName, verb=False): + if verb: + print("\nInput variables:") + ## Keys and values read from the input file + keyVals = self.get_all_vals(fileName) + + ## A key list for validation purposes + validKeys = [] + + ## A tag for naming files. First argument is the key, the second is + # the default. + self.tag = self.get_a_string("Tag=", "myRun", keyVals, validKeys, verb) + ## Coordinates file name + self.coordsFileName = self.get_a_string("CoordsFile=", "coords.xyz", keyVals, validKeys, verb) + ## Coordinates file name + self.InitGraphType = self.get_a_string("InitGraphType=", "regular", keyVals, validKeys, verb) + ## Coordinates file name + self.partitionType = self.get_a_string("PartitionType=", "regular", keyVals, validKeys, verb) + ## Max degree for the grpah + self.SpecClustNN = self.get_an_int("SpecClustNN=", 8, keyVals, validKeys, verb) + ## Max degree for the grpah + self.maxDeg = self.get_an_int("MaxDeg=", 100, keyVals, validKeys, verb) + ## Number of parts to perform graph partitioning + self.nparts = self.get_an_int("NumParts=", 1, keyVals, validKeys, verb) + ## Radius cutoff + self.rcut = self.get_a_real("Rcut=", 5.0, keyVals, validKeys, verb) + ## Alpha for DM mixing. DM_new = (1-alpha)*DM_old + alpha*DM_new + self.alpha = self.get_a_real("Alpha=", 0.2, keyVals, validKeys, verb) + ## A threshold read from input + self.thresh = self.get_a_real("Threshold=", 0.0, keyVals, validKeys, verb) + ## A threshold for the graph + self.gthresh = self.get_a_real("GraphThreshold=", 0.0, keyVals, validKeys, verb) + ## A threshold for the initial graph + self.gthreshinit = self.get_a_real("GraphThresholdInit=", 0.0, keyVals, validKeys, verb) + ## A field read from input + self.field = self.get_a_npFloatVect("Field=", np.zeros((3)), keyVals, validKeys, verb) + ## Number of orbitals + self.orbs = self.get_a_dict("Orbitals=", {"Bl": 1}, keyVals, validKeys, verb) + ## Valency per atom type + self.valency = self.get_a_dict("Valency=",{"Bl":1},keyVals,validKeys,verb) + ## Flag to run open shell calc + self.UHF = self.get_a_bool("UHF=", False, keyVals, validKeys, verb=False) + ## Total charge + self.charge = self.get_an_int("charge=", 0, keyVals, validKeys, verb) + ## Multiplicity + self.mult = self.get_an_int("mult=", 1, keyVals, validKeys, verb) + ## Electronic temperature + self.Tel = self.get_a_real("Tel=",0.0,keyVals,validKeys,verb) + ## do scf on cpu or gpu + self.scfDevice = self.get_a_string("scfDevice=", "cpu", keyVals, validKeys, verb) + ## Flag to do forces calculation + self.doForces = self.get_a_bool("doForces=", False, keyVals, validKeys, verb=False) + ## calculate i-j pairs via vectorization (fast but memory consuming) or via loop + self.ijMethod = self.get_a_string("ijMethod=", "Vec", keyVals, validKeys, verb) + ## Number of graph jumps + self.numJumps = self.get_an_int("numJumps=", 1, keyVals, validKeys, verb) + ## Number of adaptive graph iterations + self.numAdaptIter = self.get_an_int("NumAdaptiveIter=", 1, keyVals, validKeys, verb) + ## Flag to save some arrays for restart purposes + self.restartSave = self.get_a_bool("restartSave=", False, keyVals, validKeys, verb=False) + ## Flag to load some arrays for restart purposes + self.restartLoad = self.get_a_bool("restartLoad=", False, keyVals, validKeys, verb=False) + ## When rumming on GPU, set the number of GPUs per node manually. Use in case of inhomogeneous nodes and set the number to the minimum number of GPUs on one node. Has no effect on CPU runs. + self.numGPU = self.get_an_int("numGPU=", -1, keyVals, validKeys, verb) + ## Flag to save core and choreHalo geomatries + self.writeGeom = self.get_a_bool("writeGeom=", False, keyVals, validKeys, verb=False) + ## Engine interface type + self.engineInterfaceType = self.get_a_string("EngineInterfaceType=", "Files", keyVals, validKeys, verb) + ## Engine name + self.engineName = self.get_a_string("EngineName=", "ProxyA", keyVals, validKeys, verb) + ## Engine data + self.engine = self.get_a_dict( + "Engine=", + {"Name": "ProxyA", "InterfaceType": "Module", "Path": "/tmp/", + "Executable": "/tmp/run","RhoSolverMethod":"Diag","Accelerator":"No"}, + keyVals, + validKeys, + verb, + ) + ## Verbosity switch + self.verb = self.get_a_bool("Verbosity=", False, keyVals, validKeys, verb=True) + ##Overlap (if set to True it will do a nonortho calculation) + self.over = self.get_a_bool("Overlap=", True, keyVals, validKeys, verb=True) + ## StopAt : stop at a given point + self.stopAt = self.get_a_string("StopAt=", "", keyVals, validKeys, verb) + ## SCF tolerance - For Self-consistent charge optimization + self.scfTol = self.get_a_real("SCFTol=",0.0,keyVals, validKeys,verb) + ## Electronic temperature + self.etemp = self.get_a_real("ElectronicTemperature=",0.0,keyVals, validKeys,verb) + ## Chemical potential calculation type + self.mucalctype =self.get_a_string("MuCalculationType=","None",keyVals, validKeys,verb) + + ## Will check to make sure there are only valid key name in the input + err = self.validate_keys(keyVals, validKeys) + if err: + sys.exit(0) + + ## Check all the key names. + # @brief Will check to make sure there are only valid key name in the input + # @return keyVals A dictionary where values are list of characters after the key + # @param validKeys A list with all the valid accumulated key names + def validate_keys(self, keyVals, validKeys): + for key in keyVals.keys(): + err = True + for valid in validKeys: + if key == valid: + err = False + if err: + print("\n!!!ERROR: Invalid keyword", key) + print("\nValid keywords are the following:", validKeys) + break + + return err + + ## Get all the values in the input + # @brief Will return a dict with key:val, where val is a list + # @param fileName Name of input file + # @return keyVals A dictionary where values are list of characters after the key + # @param validKeys A list with all the valid accumulated key names + # + def get_all_vals(self, fileName): + keyVals = {} + myFile = open(fileName, "r") + for lines in myFile: + lineList = lines.split() + if len(lineList) != 0: + key = lineList[0] + firstChar = key[0] + if firstChar != "#": # Comment character + listIn = [] + # Collect everything between comments + for i in range(1, len(lineList)): + if lineList[i] != "#": + listIn.append(lineList[i]) + else: + break + keyVals.update({key: listIn}) + return keyVals + + ## Get a string + # @brief Extracts a string value from the keyVals dict + # @param key Key to search in the dictionary + # @param deafult Default value in case it is not in the dict + # @param keyVals A dictionary where values are list of characters after the key + # @param validKeys A list with all the valid accumulated key names + # + def get_a_string(self, key, default, keyVals, validKeys, verb=False): + if key in keyVals.keys(): + myString = keyVals[key][0] + else: + myString = default + if verb: + print("Input: ", key, myString) + validKeys.append(key) + return myString + + ## Get a real value + # @brief Extracts a real value from the keyVals dict + # @param key Key to search in the dictionary + # @param deafult Default value in case it is not in the dict + # @param keyVals A dictionary where values are list of characters after the key + # @param validKeys A list with all the valid accumulated key names + # + def get_a_real(self, key, default, keyVals, validKeys, verb=False): + if key in keyVals.keys(): + myReal = float(keyVals[key][0]) + else: + myReal = default + if verb: + print("Input: ", key, myReal) + validKeys.append(key) + return myReal + + ## Get an integer value + # @brief Extracts an integer value from the keyVals dict + # @param key Key to search in the dictionary + # @param deafult Default value in case it is not in the dict + # @param keyVals A dictionary where values are list of characters after the key + # @param validKeys A list with all the valid accumulated key names + # + def get_an_int(self, key, default, keyVals, validKeys, verb=False): + if key in keyVals.keys(): + myInt = int(keyVals[key][0]) + else: + myInt = default + if verb: + print("Input: ", key, myInt) + validKeys.append(key) + return myInt + + ## Get a boolean value + # @brief Extracts a boolean value from the keyVals dict + # @param key Key to search in the dictionary + # @param deafult Default value in case it is not in the dict + # @param keyVals A dictionary where values are list of characters after the key + # @param validKeys A list with all the valid accumulated key names + # + def get_a_bool(self, key, default, keyVals, validKeys, verb=False): + if key in keyVals.keys(): + if(keyVals[key][0] == "True"): + myBool = True + else: + myBool = False + else: + myBool = default + if verb: + print("Input: ", key, myBool) + validKeys.append(key) + return myBool + + ## Get a numpy vector of type float + # @brief Extracts a numpy vector value from the keyVals dict + # @param key Key to search in the dictionary + # @param deafult Default value in case it is not in the dict + # @param keyVals A dictionary where values are list of characters after the key + # @param validKeys A list with all the valid accumulated key names + # + def get_a_npFloatVect(self, key, default, keyVals, validKeys, verb=False): + if key in keyVals.keys(): + myVect = np.zeros((len(keyVals[key]))) + for i in range(len(keyVals[key])): + myVect[i] = float(keyVals[key][i]) + else: + myVect = default + if verb: + print("Input: ", key, myVect) + validKeys.append(key) + return myVect + + ## Get a dictionary + # @brief Extract a dictionary from the keyVals dict + # @param key Key to search in the dictionary + # @param deafult Default value in case it is not in the dict + # @param keyVals A dictionary where values are list of characters after the key + # @param validKeys A list with all the valid accumulated key names + # + def get_a_dict(self, key, default, keyVals, validKeys, verb=False): + if key in keyVals.keys(): + myDict = {} + myDict = eval(keyVals[key][0]) + else: + myDict = default + if verb: + print("Input: ", key, myDict) + validKeys.append(key) + return myDict + + +if __name__ == "__main__": + # Initialize the input variables + inp = Input("input.in", True) diff --git a/src/sedacs/periodic_table.py b/src/sedacs/periodic_table.py new file mode 100644 index 00000000..d2ca1a87 --- /dev/null +++ b/src/sedacs/periodic_table.py @@ -0,0 +1,1370 @@ +"""Periodic table of elements. + +This data was generated with pybabel and openbable packages +Openbabel: http://openbabel.org/dev-api/index.shtml +Pybel: https://openbabel.org/docs/dev/UseTheLibrary/Python_Pybel.html# +Other sources includes NIST: http://www.nist.gov/pml/data/ion_energy.cfm +""" + +import numpy as np + +__all__ = ["PeriodicTable", "print_element_data"] + + +class PeriodicTable: + """A simple periodic table.""" + + def __init__(self): + ## Number of atom types. Each atomic number is a type. + self.ntypes = 104 + + ## Element symbols for every atom type (atomic number) + # The Bl (Bolonium) is added to have index = atomic number + self.symbols = np.array( + [ + "Bl", + "H", + "He", + "Li", + "Be", + "B", + "C", + "N", + "O", + "F", + "Ne", + "Na", + "Mg", + "Al", + "Si", + "P", + "S", + "Cl", + "Ar", + "K", + "Ca", + "Sc", + "Ti", + "V", + "Cr", + "Mn", + "Fe", + "Co", + "Ni", + "Cu", + "Zn", + "Ga", + "Ge", + "As", + "Se", + "Br", + "Kr", + "Rb", + "Sr", + "Y", + "Zr", + "Nb", + "Mo", + "Tc", + "Ru", + "Rh", + "Pd", + "Ag", + "Cd", + "In", + "Sn", + "Sb", + "Te", + "I", + "Xe", + "Cs", + "Ba", + "La", + "Ce", + "Pr", + "Nd", + "Pm", + "Sm", + "Eu", + "Gd", + "Tb", + "Dy", + "Ho", + "Er", + "Tm", + "Yb", + "Lu", + "Hf", + "Ta", + "W", + "Re", + "Os", + "Ir", + "Pt", + "Au", + "Hg", + "Tl", + "Pb", + "Bi", + "Po", + "At", + "Rn", + "Fr", + "Ra", + "Ac", + "Th", + "Pa", + "U", + "Np", + "Pu", + "Am", + "Cm", + "Bk", + "Cf", + "Es", + "Fm", + "Md", + "No", + "Lr", + ], + dtype=str, + ) + + ## Element name + # + self.names = np.array( + [ + "Bolonium", + "Hydrogen", + "Helium", + "Lithium", + "Beryllium", + "Boron", + "Carbon", + "Nitrogen", + "Oxygen", + "Fluorine", + "Neon", + "Sodium", + "Magnesium", + "Aluminium", + "Silicon", + "Phosphorus", + "Sulfur", + "Chlorine", + "Argon", + "Potassium", + "Calcium", + "Scandium", + "Titanium", + "Vanadium", + "Chromium", + "Manganese", + "Iron", + "Cobalt", + "Nickel", + "Copper", + "Zinc", + "Gallium", + "Germanium", + "Arsenic", + "Selenium", + "Bromine", + "Krypton", + "Rubidium", + "Strontium", + "Yttrium", + "Zirconium", + "Niobium", + "Molybdenum", + "Technetium", + "Ruthenium", + "Rhodium", + "Palladium", + "Silver", + "Cadmium", + "Indium", + "Tin", + "Antimony", + "Tellurium", + "Iodine", + "Xenon", + "Caesium", + "Barium", + "Lanthanum", + "Cerium", + "Praseodymium", + "Neodymium", + "Promethium", + "Samarium", + "Europium", + "Gadolinium", + "Terbium", + "Dysprosium", + "Holmium", + "Erbium", + "Thulium", + "Ytterbium", + "Lutetium", + "Hafnium", + "Tantalum", + "Tungsten", + "Rhenium", + "Osmium", + "Iridium", + "Platinum", + "Gold", + "Mercury", + "Thallium", + "Lead", + "Bismuth", + "Polonium", + "Astatine", + "Radon", + "Francium", + "Radium", + "Actinium", + "Thorium", + "Protactinium", + "Uranium", + "Neptunium", + "Plutonium", + "Americium", + "Curium", + "Berkelium", + "Californium", + "Einsteinium", + "Fermium", + "Mendelevium", + "Nobelium", + "Lawrencium", + ], + dtype=str, + ) + + ## Element mass in atomic mass units (1.66 x 10-27 kg) + # + self.mass = np.zeros(self.ntypes) + self.mass[:] = ( + 0.000, + 1.007825032, + 4.002603254, + 7.01600455, + 9.0121822, + 11.0093054, + 12.0, + 14.003074005, + 15.99491462, + 18.99840322, + 19.992440175, + 22.989769281, + 23.9850417, + 26.98153863, + 27.976926532, + 30.97376163, + 31.972071, + 34.96885268, + 39.962383123, + 38.96370668, + 39.96259098, + 44.9559119, + 47.9479463, + 50.9439595, + 51.9405075, + 54.9380451, + 55.9349375, + 58.933195, + 57.9353429, + 62.9295975, + 63.929142, + 68.925573, + 73.921177, + 74.921596, + 79.916521, + 78.918337, + 83.911507, + 84.911789, + 87.905612, + 88.905848, + 89.904704, + 92.906378, + 97.905408, + 97.907216, + 101.904349, + 102.905504, + 105.903486, + 106.905097, + 113.903358, + 114.903878, + 119.902194, + 120.903815, + 129.906224, + 126.904473, + 131.904153, + 132.905451, + 137.905247, + 138.906353, + 139.905438, + 140.907652, + 141.907723, + 144.912749, + 151.919732, + 152.92123, + 157.924103, + 158.925346, + 163.929174, + 164.930322, + 165.930293, + 168.934213, + 173.938862, + 174.940771, + 179.94655, + 180.947995, + 183.950931, + 186.955753, + 191.96148, + 192.962926, + 194.964791, + 196.966568, + 201.970643, + 204.974427, + 207.976652, + 208.980398, + 208.98243, + 209.987148, + 222.017577, + 223.019735, + 226.025409, + 227.027752, + 232.038055, + 231.035884, + 238.050788, + 237.048173, + 244.064204, + 243.061381, + 247.070354, + 247.070307, + 251.079587, + 252.08298, + 257.095105, + 258.098431, + 259.10103, + 262.10963, + ) + + ## van der Waals radius (in Angstroms) + # + self.vdwr = np.zeros(self.ntypes) + self.vdwr[:] = ( + 0.000, + 1.1, + 1.4, + 1.81, + 1.53, + 1.92, + 1.7, + 1.55, + 1.52, + 1.47, + 1.54, + 2.27, + 1.73, + 1.84, + 2.1, + 1.8, + 1.8, + 1.75, + 1.88, + 2.75, + 2.31, + 2.3, + 2.15, + 2.05, + 2.05, + 2.05, + 2.05, + 2.0, + 2.0, + 2.0, + 2.1, + 1.87, + 2.11, + 1.85, + 1.9, + 1.83, + 2.02, + 3.03, + 2.49, + 2.4, + 2.3, + 2.15, + 2.1, + 2.05, + 2.05, + 2.0, + 2.05, + 2.1, + 2.2, + 2.2, + 1.93, + 2.17, + 2.06, + 1.98, + 2.16, + 3.43, + 2.68, + 2.5, + 2.48, + 2.47, + 2.45, + 2.43, + 2.42, + 2.4, + 2.38, + 2.37, + 2.35, + 2.33, + 2.32, + 2.3, + 2.28, + 2.27, + 2.25, + 2.2, + 2.1, + 2.05, + 2.0, + 2.0, + 2.05, + 2.1, + 2.05, + 1.96, + 2.02, + 2.07, + 1.97, + 2.02, + 2.2, + 3.48, + 2.83, + 2.0, + 2.4, + 2.0, + 2.3, + 2.0, + 2.0, + 2.0, + 2.0, + 2.0, + 2.0, + 2.0, + 2.0, + 2.0, + 2.0, + 2.0, + ) + + ## Covalent radius (in Angstroms) + # + self.covr = np.zeros(self.ntypes) + self.covr[:] = ( + 0.00, + 0.31, + 0.28, + 1.28, + 0.96, + 0.84, + 0.76, + 0.71, + 0.66, + 0.57, + 0.58, + 1.66, + 1.41, + 1.21, + 1.11, + 1.07, + 1.05, + 1.02, + 1.06, + 2.03, + 1.76, + 1.7, + 1.6, + 1.53, + 1.39, + 1.39, + 1.32, + 1.26, + 1.24, + 1.32, + 1.22, + 1.22, + 1.2, + 1.19, + 1.2, + 1.2, + 1.16, + 2.2, + 1.95, + 1.9, + 1.75, + 1.64, + 1.54, + 1.47, + 1.46, + 1.42, + 1.39, + 1.45, + 1.44, + 1.42, + 1.39, + 1.39, + 1.38, + 1.39, + 1.4, + 2.44, + 2.15, + 2.07, + 2.04, + 2.03, + 2.01, + 1.99, + 1.98, + 1.98, + 1.96, + 1.94, + 1.92, + 1.92, + 1.89, + 1.9, + 1.87, + 1.87, + 1.75, + 1.7, + 1.62, + 1.51, + 1.44, + 1.41, + 1.36, + 1.36, + 1.32, + 1.45, + 1.46, + 1.48, + 1.4, + 1.5, + 1.5, + 2.6, + 2.21, + 2.15, + 2.06, + 2.0, + 1.96, + 1.9, + 1.87, + 1.8, + 1.69, + 1.6, + 1.6, + 1.6, + 1.6, + 1.6, + 1.6, + 1.6, + ) + + ## Ionization energy (in eV) + # + self.ip = np.zeros(self.ntypes) + self.ip[:] = ( + 0.00, + 13.5984, + 24.5874, + 5.3917, + 9.3227, + 8.298, + 11.2603, + 14.5341, + 13.6181, + 17.4228, + 21.5645, + 5.1391, + 7.6462, + 5.9858, + 8.1517, + 10.4867, + 10.36, + 12.9676, + 15.7596, + 4.3407, + 6.1132, + 6.5615, + 6.8281, + 6.7462, + 6.7665, + 7.434, + 7.9024, + 7.881, + 7.6398, + 7.7264, + 9.3942, + 5.9993, + 7.8994, + 9.7886, + 9.7524, + 11.8138, + 13.9996, + 4.1771, + 5.6949, + 6.2173, + 6.6339, + 6.7589, + 7.0924, + 7.28, + 7.3605, + 7.4589, + 8.3369, + 7.5762, + 8.9938, + 5.7864, + 7.3439, + 8.6084, + 9.0096, + 10.4513, + 12.1298, + 3.8939, + 5.2117, + 5.5769, + 5.5387, + 5.473, + 5.525, + 5.582, + 5.6437, + 5.6704, + 6.1498, + 5.8638, + 5.9389, + 6.0215, + 6.1077, + 6.1843, + 6.2542, + 5.4259, + 6.8251, + 7.5496, + 7.864, + 7.8335, + 8.4382, + 8.967, + 8.9588, + 9.2255, + 10.4375, + 6.1082, + 7.4167, + 7.2855, + 8.414, + 0.0, + 10.7485, + 4.0727, + 5.2784, + 5.17, + 6.3067, + 5.89, + 6.1941, + 6.2657, + 6.026, + 5.9738, + 5.9914, + 6.1979, + 6.2817, + 6.42, + 6.5, + 6.58, + 6.65, + 4.9, + ) + + ## Electron affinity (in eV) + # + self.ea = np.zeros(self.ntypes) + self.ea[:] = ( + 0.00, + 0.75420375, + 0.0, + 0.618049, + 0.0, + 0.279723, + 1.262118, + -0.07, + 1.461112, + 3.4011887, + 0.0, + 0.547926, + 0.0, + 0.43283, + 1.389521, + 0.7465, + 2.0771029, + 3.612724, + 0.0, + 0.501459, + 0.02455, + 0.188, + 0.084, + 0.525, + 0.67584, + 0.0, + 0.151, + 0.6633, + 1.15716, + 1.23578, + 0.0, + 0.41, + 1.232712, + 0.814, + 2.02067, + 3.363588, + 0.0, + 0.485916, + 0.05206, + 0.307, + 0.426, + 0.893, + 0.7472, + 0.55, + 1.04638, + 1.14289, + 0.56214, + 1.30447, + 0.0, + 0.404, + 1.112066, + 1.047401, + 1.970875, + 3.059038, + 0.0, + 0.471626, + 0.14462, + 0.47, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.0, + 0.322, + 0.815, + 0.15, + 1.0778, + 1.56436, + 2.1251, + 2.30861, + 0.0, + 0.377, + 0.364, + 0.942363, + 1.9, + 2.8, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + ) + + ## The Pauling electronegativity for this element + # + self.en = np.zeros(self.ntypes) + self.en[:] = ( + 0.00, + 2.2, + 0.0, + 0.98, + 1.57, + 2.04, + 2.55, + 3.04, + 3.44, + 3.98, + 0.0, + 0.93, + 1.31, + 1.61, + 1.9, + 2.19, + 2.58, + 3.16, + 0.0, + 0.82, + 1.0, + 1.36, + 1.54, + 1.63, + 1.66, + 1.55, + 1.83, + 1.88, + 1.91, + 1.9, + 1.65, + 1.81, + 2.01, + 2.18, + 2.55, + 2.96, + 3.0, + 0.82, + 0.95, + 1.22, + 1.33, + 1.6, + 2.16, + 1.9, + 2.2, + 2.28, + 2.2, + 1.93, + 1.69, + 1.78, + 1.96, + 2.05, + 2.1, + 2.66, + 2.6, + 0.79, + 0.89, + 1.1, + 1.12, + 1.13, + 1.14, + 0.0, + 1.17, + 0.0, + 1.2, + 0.0, + 1.22, + 1.23, + 1.24, + 1.25, + 0.0, + 1.27, + 1.3, + 1.5, + 2.36, + 1.9, + 2.2, + 2.2, + 2.28, + 2.54, + 2.0, + 1.62, + 2.33, + 2.02, + 2.0, + 2.2, + 0.0, + 0.7, + 0.9, + 1.1, + 1.3, + 1.5, + 1.38, + 1.36, + 1.28, + 1.3, + 1.3, + 1.3, + 1.3, + 1.3, + 1.3, + 1.3, + 1.3, + 0.0, + ) + + ## The maximum expected number of bonds to this element + # + self.maxbonds = np.zeros(self.ntypes, dtype=int) + self.maxbonds[:] = ( + 0, + 1, + 0, + 1, + 2, + 4, + 4, + 4, + 2, + 1, + 0, + 1, + 2, + 6, + 6, + 6, + 6, + 1, + 0, + 1, + 2, + 6, + 6, + 6, + 6, + 8, + 6, + 6, + 6, + 6, + 6, + 3, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 3, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 12, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 3, + 4, + 3, + 2, + 1, + 0, + 1, + 2, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + ) + + ## Last shell number of electrons + # + self.numel = np.zeros(self.ntypes, dtype=int) + self.numel[:] = ( + 0, + 1, + 2, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + ) + + ## The electronic configuration + # + self.econf = np.array( + [ + "0s", + "1s", + "1s2", + "1s22s", + "1s22s2", + "1s22s22p", + "1s22s22p2", + "1s22s22p3", + "1s22s22p4", + "1s22s22p5", + "1s22s22p6", + "[Ne]3s", + "[Ne]3s2", + "[Ne]3s23p", + "[Ne]3s23p2", + "[Ne]3s23p3", + "[Ne]3s23p4", + "[Ne]3s23p5", + "[Ne]3s23p6", + "[Ar]4s", + "[Ar]4s2", + "[Ar]3d4s2", + "[Ar]3d24s2", + "[Ar]3d34s2", + "[Ar]3d54s", + "[Ar]3d54s2", + "[Ar]3d64s2", + "[Ar]3d74s2", + "[Ar]3d84s2", + "[Ar]3d104s", + "[Ar]3d104s2", + "[Ar]3d104s24p", + "[Ar]3d104s24p2", + "[Ar]3d104s24p3", + "[Ar]3d104s24p4", + "[Ar]3d104s24p5", + "[Ar]3d104s24p6", + "[Kr]5s", + "[Kr]5s2", + "[Kr]4d5s2", + "[Kr]4d25s2", + "[Kr]4d45s", + "[Kr]4d55s", + "[Kr]4d55s2", + "[Kr]4d75s", + "[Kr]4d85s", + "[Kr]4d10", + "[Kr]4d105s", + "[Kr]4d105s2", + "[Cd]5p", + "[Cd]5p2", + "[Cd]5p3", + "[Cd]5p4", + "[Cd]5p5", + "[Cd]5p6", + "[Xe]6s", + "[Xe]6s2", + "[Xe]5d6s2", + "[Xe]4f5d6s2", + "[Xe]4f36s2", + "[Xe]4f46s2", + "[Xe]4f56s2", + "[Xe]4f66s2", + "[Xe]4f76s2", + "[Xe]4f75d6s2", + "[Xe]4f96s2", + "[Xe]4f106s2", + "[Xe]4f116s2", + "[Xe]4f126s2", + "[Xe]4f136s2", + "[Xe]4f146s2", + "[Xe]4f145d6s2", + "[Xe]4f145d26s2", + "[Xe]4f145d36s2", + "[Xe]4f145d46s2", + "[Xe]4f145d56s2", + "[Xe]4f145d66s2", + "[Xe]4f145d76s2", + "[Xe]4f145d96s", + "[Xe]4f145d106s", + "[Xe]4f145d106s2", + "[Hg]6p", + "[Hg]6p2", + "[Hg]6p3", + "[Hg]6p4", + "[Hg]6p5", + "[Hg]6p6", + "[Rn]7s", + "[Rn]7s2", + "[Rn]6d7s2", + "[Rn]6d27s2", + "[Rn]5f26d7s2", + "[Rn]5f36d7s2", + "[Rn]5f46d7s2", + "[Rn]5f67s2", + "[Rn]5f77s2", + "[Rn]5f76d7s2", + "[Rn]5f97s2", + "[Rn]5f107s2", + "[Rn]5f117s2", + "[Rn]5f127s2", + "[Rn]5f137s2", + "[Rn]5f147s2", + "[Rn]5f147s27p", + ], + dtype=str, + ) + + ## "Canonical" TB electronic configuration + # + self.econftb = np.array( + [ + "s", + "s", + "s", + "s", + "s", + "sp", + "sp", + "sp", + "sp", + "sp", + "sp", + "s", + "s", + "sp", + "sp", + "sp", + "sp", + "sp", + "sp", + "s", + "s", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "s", + "s", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "spd", + "sp", + "sp", + "sp", + "sp", + "sp", + "sp", + "s", + "s", + "spd", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "sp", + "sp", + "sp", + "sp", + "sp", + "sp", + "s", + "s", + "spd", + "spd", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + "spdf", + ], + dtype=str, + ) + + + ## Get the atomic number of a paerticular element + def get_atomic_number(self, symb): + return np.where(self.symbols == symb)[0][0] + + +def print_element_data(elementSymbol): + """Prints element data""" + pt = PeriodicTable() + if elementSymbol != "Bl": + atnum = pt.get_atomic_number(elementSymbol) + print("Element name: ", pt.names[atnum]) + print("Element mass (a.u.) = ", pt.mass[atnum]) + print("Element van Der Waals radius (Ang) = ", pt.vdwr[atnum]) + print("Element covalency radius (Ang) = ", pt.covr[atnum]) + print("Element ionization potential (eV) = ", pt.ip[atnum]) + print("Element electron affinity (eV) = ", pt.ea[atnum]) + print("Element electronegativity = ", pt.en[atnum]) + print("Element max bonds = ", pt.maxbonds[atnum]) + print("Element number of electrons = ", pt.numel[atnum]) + print("Element electron configuration = ", pt.econf[atnum]) + print("Element atomic number = ", pt.get_atomic_number(elementSymbol)) diff --git a/src/sedacs/run_py.py b/src/sedacs/run_py.py new file mode 100644 index 00000000..c36d8fcd --- /dev/null +++ b/src/sedacs/run_py.py @@ -0,0 +1,11 @@ +import numpy as np +import your_module # Assuming your C++ module is compiled to Python as 'your_module' + +# Generate random matrix (M, N) +M, N = 3, 4 +matrix = np.random.rand(M, N) + +# Call C++ function to sum the elements of the matrix +result = your_module.sum_matrix(matrix) +print(f"Sum of matrix elements: {result}") + diff --git a/src/sedacs/sdc_density_matrix.py b/src/sedacs/sdc_density_matrix.py new file mode 100644 index 00000000..3af63198 --- /dev/null +++ b/src/sedacs/sdc_density_matrix.py @@ -0,0 +1,41 @@ +"""Density matrix +Routines to build a density matrix. Typically +this will be done interfacing with an engine. + +""" + +import sys + +from sedacs.interface_modules import get_density_matrix_modules + +__all__ = ["get_density_matrix"] + + +## Build the density matrix. +# @brief This will build a density matrix. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param nocc Number of occupied states +# @param ham Hamiltonian matrix +# @verb Verbosity +# +def get_density_matrix(eng,partIndex,nparts,norbs,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=None,mu=None,etemp=0.0,overlap=None,full_data=False,verb=False,newsystem=True,keepmem=False): + if eng.interface == "None": + print("ERROR!!! - Write your own Hamiltonian") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + if eng.name == "LATTE": + rho, charges = get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=norbsInCore,mu=mu,overlap=overlap,full_data=full_data,verb=verb,newsystem=newsystem,keepmem=keepmem) + elif full_data: + rho,evals,dvals = get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=norbsInCore,mu=mu,overlap=overlap,full_data=full_data,verb=verb,newsystem=newsystem,keepmem=keepmem) + else: + rho = get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=norbsInCore,mu=mu,overlap=overlap,full_data=False,verb=verb,newsystem=newsystem,keepmem=keepmem) + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + if eng.name == "LATTE": + return rho, charges + elif full_data : + return rho,evals,dvals + else: + return rho diff --git a/src/sedacs/sdc_energy_forces.py b/src/sedacs/sdc_energy_forces.py new file mode 100644 index 00000000..6a02a614 --- /dev/null +++ b/src/sedacs/sdc_energy_forces.py @@ -0,0 +1,32 @@ +"""Energy and force +Routines to calculate energy and force. Typically +this will be done interfacing with an engine. + +""" + +import sys + +from sedacs.interface_modules import get_energy_forces_modules + +__all__ = ["get_energy_forces"] + + +## Calculate the energy and force. +# @brief This will calculate energy and force. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param nocc Number of occupied states +# @param ham Hamiltonian matrix +# @verb Verbosity +# +def get_energy_forces(eng,partIndex,nparts,norbs,hamiltonian,latticeVectors,coords,atomTypes,symbols,vcouls,nocc,norbsInCore=None,numberOfCoreAtoms=None,mu=None,etemp=0.0,verb=False,newsystem=True,keepmem=False): + if eng.interface == "None": + print("ERROR!!! - Write your own Hamiltonian") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + energy, forces = get_energy_forces_modules(eng,partIndex,nparts,norbs,hamiltonian,latticeVectors,coords,atomTypes,symbols,vcouls,nocc,norbsInCore=norbsInCore,numberOfCoreAtoms=numberOfCoreAtoms,mu=mu,etemp=etemp,verb=verb,newsystem=newsystem,keepmem=keepmem) + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + + return energy, forces diff --git a/src/sedacs/sdc_evals_dvals.py b/src/sedacs/sdc_evals_dvals.py new file mode 100644 index 00000000..9cb4dd98 --- /dev/null +++ b/src/sedacs/sdc_evals_dvals.py @@ -0,0 +1,32 @@ +"""Evals and dvals +Routines to compute evals and dvals. Typically +this will be done interfacing with an engine. + +""" + +import sys + +from sedacs.interface_modules import get_evals_dvals_modules + +__all__ = ["get_evals_dvals"] + + +## Compute evals and dvals +# @brief This will compute evals and dvals. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param nocc Number of occupied states +# @param ham Hamiltonian matrix +# @verb Verbosity +# +def get_evals_dvals(eng,partIndex,nparts,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=None,mu=None,etemp=0.0,overlap=None,full_data=False,verb=False, newsystem=True): + if eng.interface == "None": + print("ERROR!!! - Write your own Hamiltonian") + + # Tight interface using modules or an external code compiled as a library + elif eng.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + evals,dvals = get_evals_dvals_modules(eng,partIndex,nparts,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=norbsInCore,mu=mu,overlap=overlap,full_data=full_data,verb=verb, newsystem=newsystem) + else: + print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + + return evals,dvals diff --git a/src/sedacs/sdc_hamiltonian.py b/src/sedacs/sdc_hamiltonian.py new file mode 100644 index 00000000..9de4fd5b --- /dev/null +++ b/src/sedacs/sdc_hamiltonian.py @@ -0,0 +1,88 @@ +"""Hamiltonian +Routines to build a Hamiltonian matrix. Typically +this will be done interfacing with an engine. + +""" + +import sys + +from sedacs.interface_files import get_hamiltonian_files +from sedacs.interface_modules import get_hamiltonian_module + +__all__ = ["get_hamiltonian"] + + +## Build the non-scf Hamiltonian matrix. +# @brief This will build a Hamiltonian matrix. Typically this will be done interfacing with an engine. +# @param eng Engine object. See sdc_engine.py for a full explanation +# @param coords Positions for every atom. z-coordinate of atom 1 = coords[0,2] +# @param types Index type for each atom in the system. Type for first atom = type[0] +# @param symbols Symbols for every atom type +# @verbose Verbosity +# +def get_hamiltonian( + engine, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + get_overlap=True, + verbose=False, + newsystem=True, + keepmem=False +): + # Call the proper interface + # If there is no interface, one should write its own Hamiltonian + if engine.interface == "None": + raise ValueError("ERROR!!! - Write your own Hamiltonian.") + # Tight interface using modules or an external code compiled as a library + elif engine.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + if get_overlap: + ham, overlap = get_hamiltonian_module( + engine, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + get_overlap=get_overlap, + verb=verbose, + newsystem=newsystem, + keepmem=keepmem + ) + return ham, overlap + else: + return get_hamiltonian_module( + engine, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + get_overlap=get_overlap, + verb=verbose, + newsystem=newsystem, + keepmem=keepmem + ) + # Using any available library. We will use MDI here. + elif engine.interface == "MDI": + raise NotImplemented("MDI interface not implemented yet") + # Using unix sockets to interface the codes + elif engine.interface == "Socket": + raise NotImplemented("Sockets not implemented yet") + # Using files as a form of communication and transfering data. + elif engine.interface == "File": + return get_hamiltonian_files(engine, coords, types, symbols, verb=verbose) + + raise ValueError( + f"ERROR!!!: Interface type not recognized: '{engine.interface}'. " + + f"Use any of the following: Module,File,Socket,MDI" + ) diff --git a/src/sedacs/src.cpp b/src/sedacs/src.cpp new file mode 100644 index 00000000..19f4fa28 --- /dev/null +++ b/src/sedacs/src.cpp @@ -0,0 +1,36 @@ +#include +#include +#include + + +// Python equivalent of import numpy as np, so that we can +// access numpy functions like np.random. Here in C++ this takes +// the form of np::random. +namespace py = pybind11; + +double sum_matrix(py::array_t marix) { + + // Access the data buffer of the NumPy array + py::buffer_info buf_info = matrix.request(); + + // Get a pointer to the + double* ptr = static_cast(buf_info.ptr); + + // Get shape of the matrix + size_t M = buf_info.shape[0]; // Rows + size_t N = buf_info.shape[1]; // Columns + + // Loop through and sum the elements + double sum = 0.0; + for (size_t i = 0; i < M; ++i) { + for (size_t j = 0; j < N; ++j) { + sum += ptr[i * N + j]; // Access element at (i, j) + } + } + return sum; +} + +PYBIND11_MODULE(your_module, m) { + m.def("sum_matrix", &sum_matrix, "Sum all elements of a matrix"); +} + diff --git a/src/sedacs/system.py b/src/sedacs/system.py new file mode 100644 index 00000000..0f670e48 --- /dev/null +++ b/src/sedacs/system.py @@ -0,0 +1,1077 @@ +"""system +Some functions to create, read, and manupulate coordinates of a chemical system + +So far: Creates random coordinates; reads and writes xyz and pdb files; +creates a neighbor list. +""" + +import sys + +import numpy as np + +global aseLib +try: + import ase1.io + + aseLib = True +except: + aseLib = False + +global mdtrajLib +try: + import mdtraj as md + + mdtrajLib = True +except: + mdtrajLib = False + +from sedacs.message import * +from sedacs.periodic_table import PeriodicTable + +# from sdc_out import * +try: + from mpi4py import MPI + + mpiLib = True +except ImportError as e: + mpiLib = False +from multiprocessing import Pool + +if mpiLib: + from sedacs.mpi import * +import time + +__all__ = [ + "System", + "Trajectory", + "RandomNumberGenerator", + "get_random_coordinates", + "parameters_to_vectors", + "vectors_to_parameters", + "coords_cart_to_frac", + "coords_frac_to_cart", + "get_volBox", + "coords_dvec_nlist", + "build_nlist", + "build_nlist_small", +] + + +## Chemical system type +# @brief To be used only when really needed! +# +class System: + """The system type.""" + + def __init__(self, nats=1): + ## Number of atoms + self.nats = nats + ## Number of core atoms + self.ncores = self.nats + ## Number of atom types + self.ntypes = 0 + ## Type for each atom, e.g., the first atom is of type "types[0]" + self.types = np.zeros(self.nats, dtype=int) + ## Coordinates for each atom, e.g., z-coordinate of the frist atom is coords[0,2] + self.coords = np.zeros((self.nats, 3), dtype=float) + ## Charged (orbital base population) for each atom + self.charges = np.zeros((self.nats), dtype=float) + ## Coordinates for each atom, e.g., z-coordinate of the frist atom is coords[0,2] + self.vels = np.zeros((self.nats, 3), dtype=float) + ## LatticeVectors. 3x3 matrix containing the lattice vectors for the simulation box. + # latticeVectors[1,:] = first lattice vector. + self.latticeVectors = np.zeros((3, 3), dtype=float) + ## Symbols for each atom type, e.g, the element symbol of the first atom is symbols[types[0]] + self.symbols = PeriodicTable().symbols[self.types] + ## Coulombic potentials + self.coulvs = np.zeros(self.nats, dtype=int) + ## Number of orbitals + self.norbs = 0 + ## Number of atomic orbital for each type + self.orbs = np.zeros(self.ntypes) + ## Number of totatal valence electrons for each type + self.znuc = np.zeros(self.ntypes) + ## Orbital indices. The orbital indices for atom i goes from `hindex[i]` to `hindex[i+1]-1` + self.hindex = None + ## Residue names/Molecule name + self.resNames = None + ## Residue/molecule id + self.resIds = None + + def extract_types_and_symbols(self,symbols_list_for_all_atoms): + """ + Returns a new list containing only the unique symbols. + """ + self.symbols = [None]*self.nats + self.types = [None]*self.nats + tmp = set() + for item in symbols_list_for_all_atoms: + if item not in tmp: + self.symbols.append(item) + tmp.add(item) + for i in range(self.nats): + for j in range(len(self.symbols)): + if(symbols_list_for_all_atoms[i] == self.symbols[j]): + self.types[i] = j + + + + def print_summary(self): + s = """nats = {nats} +ncores = {ncores} +ntypes = {ntypes} +coords[0] = {coords} +latticeVectors = {latticeVectors} +symbols = {symbols} +orbs = {orbs}""" + print( + s.format( + nats=self.nats, + ncores=self.ncores, + ntypes=self.ntypes, + coords=self.coords[0], + latticeVectors=self.latticeVectors, + symbols=self.symbols, + orbs=self.orbs, + ) + ) + + if mdtrajLib: + + def from_mdtraj(self, traj, frame_idx=0): + table, bonds = traj.topology.to_dataframe() + self.symbols = table["element"].to_numpy().tolist() + self.nats = len(self.symbols) + self.ncores = self.nats + self.ntypes = self.nats + # multiply the following two by 10. to convert to Angstroms + self.coords = 10.0 * traj.xyz[frame_idx].astype(float) + if traj.unitcell_vectors is not None: + self.latticeVectors = 10.0 * traj.unitcell_vectors[frame_idx].astype(float) + else: + import warnings + + warnings.warn( + "No unit cell information in this mdtraj trajectory. If unit cell information is desired, it can be obtained by loading a .pdb file as a trajectory." + ) + self.orbs = np.ones(self.nats, dtype=int) + + +## Trajectory type +# @brief To handle simulation results +# @param system The system description with topology info +# @param coords Coordinates at each snapshot (Angstrom) +# @param latticeVectors Simulation box vectors (Angstrom) +# @param value Generic atom value (e.g. electron population) at each time point +# @param timestep Time difference between frames, for uniform sampling (ps) +# @param time Time at each frame (ps) + + +class Trajectory: + """A prototype for the trajectory type.""" + + def __init__(self, sys=None, nats=1, nframes=1, timestep=0.00025): + if sys is None: + self.system = System(nats) + else: + self.system = sys + nats = sys.nats + self.coords = np.zeros((nframes, nats, 3), dtype=float) + self.latticeVectors = None + self.values = None + self.timestep = timestep + self.time = np.ones(nframes, dtype=float) * self.timestep + + if mdtrajLib: + + def from_mdtraj(self, traj): + self.system = System() + self.system.from_mdtraj(traj) + self.coords = 10.0 * traj.xyz.astype(float) + if traj.unitcell_vectors is not None: + self.latticeVectors = 10.0 * traj.unitcell_vectors.astype(float) + self.time = traj.time.astype(float) + if traj.n_frames >= 2: + self.timestep = traj.timestep + + def slice(self, first=0, last=None, skip=1): + if last is None: + last = len(self.coords) + self.coords = self.coords[first : last + 1 : skip] + self.time = self.time[first : last + 1 : skip] + if self.values is not None: + self.values = self.values[first : last + 1 : skip] + if self.latticeVectors is not None: + self.latticeVectors = self.latticeVectors[first : last + 1 : skip] + self.timestep = self.timestep * skip + + def load_prg_xyz(self, fname): + with open(fname) as f: + lines = np.array(f.readlines()) + nats = int(lines[0]) + if nats != self.system.nats: + raise Exception("Number of atoms must be same as that in system") + mask = np.ones(len(lines), dtype=bool) + mask[np.arange(0, len(lines), nats + 2)] = False + mask[np.arange(1, len(lines), nats + 2)] = False + lines = lines[mask] + xyzc = np.loadtxt(lines.tolist(), usecols=range(1, 5)).astype(float) + nframes = int(len(xyzc) / nats) + xyzc = np.reshape(xyzc, (nframes, nats, 4)) + self.coords = xyzc[:, :, 0:3] + self.values = xyzc[:, :, 3] + + if mdtrajLib: + + def save_xtc(self, fname): + from mdtraj.formats import XTCTrajectoryFile + + with XTCTrajectoryFile(fname, "w") as f: + if self.latticeVectors is not None: + f.write(self.coords / 10.0, box=self.latticeVectors / 10.0) + else: + f.write( + self.coords / 10.0, + box=np.repeat(self.system.latticeVectors[np.newaxis, :, :] / 10.0, len(self.coords), axis=0), + ) + + def save_dcd(self, fname): + from mdtraj.formats import DCDTrajectoryFile + + with DCDTrajectoryFile(fname, "w") as f: + if self.latticeVectors is not None: + latticeVectors = self.latticeVectors + else: + latticeVectors = np.repeat( + self.system.latticeVectors[np.newaxis, :, :] / 10.0, len(self.coords), axis=0 + ) + latticeParams = vectors_to_parameters(latticeVectors) + f.write(self.coords, cell_lengths=latticeParams[:, 0:3], cell_angles=latticeParams[:, 3:6]) + + def save_netcdf(self, fname): + from mdtraj.formats import NetCDFTrajectoryFile + + with NetCDFTrajectoryFile(fname, "w") as f: + if self.latticeVectors is not None: + latticeVectors = self.latticeVectors + else: + latticeVectors = np.repeat( + self.system.latticeVectors[np.newaxis, :, :] / 10.0, len(self.coords), axis=0 + ) + latticeParams = vectors_to_parameters(latticeVectors) + f.write(self.coords, cell_lengths=latticeParams[:, 0:3], cell_angles=latticeParams[:, 3:6]) + + +## Transforms the lattice parameters into lattice vectors. +# @param paramA a parameter +# @param paramB b parameter +# @param paramC c parameter +# @param angleAlpha Angle beween second and third lattice vectors +# @param angleBeta Angle between first and third lattice vectors +# @param angleGamma Angle between first and second lattice vectors +# @param latticeVectors 3x3 array containing the lattice vectors. +# \verbatim +# latticeVector[0,2] = z-coordinate of the first lattice vector +# \endverbatim +# @param verb Verbosity level. +# +def parameters_to_vectors(paramA, paramB, paramC, angleAlpha, angleBeta, angleGamma, latticeVectors, verb=False): + """Transforms parameters to vectors""" + + # pi = 3.1415926535897932384626433832795 + pi = np.pi + + angleAlpha = 2.0 * pi * angleAlpha / 360.0 + angleBeta = 2.0 * pi * angleBeta / 360.0 + angleGamma = 2.0 * pi * angleGamma / 360.0 + + latticeVectors[0, 0] = paramA + latticeVectors[0, 1] = 0 + latticeVectors[0, 2] = 0 + + latticeVectors[1, 0] = paramB * np.cos(angleGamma) + latticeVectors[1, 1] = paramB * np.sin(angleGamma) + latticeVectors[1, 2] = 0 + + latticeVectors[2, 0] = paramC * np.cos(angleBeta) + latticeVectors[2, 1] = paramC * (np.cos(angleAlpha) - np.cos(angleGamma) * np.cos(angleBeta)) / np.sin(angleGamma) + latticeVectors[2, 2] = np.sqrt(paramC**2 - latticeVectors[2, 0] ** 2 - latticeVectors[2, 1] ** 2) + + return latticeVectors + + +## Transforms the lattice vectors to lattice parameers +# @param latticeVectors 3x3 array containing the lattice vectors +# @param verb Verbosity level. +# +def vectors_to_parameters(Amat, verb=False): + if Amat.ndim == 3: + a = np.sqrt(np.einsum("ij,ij->i", Amat[:, 0], Amat[:, 0])) + b = np.sqrt(np.einsum("ij,ij->i", Amat[:, 1], Amat[:, 1])) + c = np.sqrt(np.einsum("ij,ij->i", Amat[:, 2], Amat[:, 2])) + adotb = np.einsum("ij,ij->i", Amat[:, 0], Amat[:, 1]) + adotc = np.einsum("ij,ij->i", Amat[:, 0], Amat[:, 2]) + bdotc = np.einsum("ij,ij->i", Amat[:, 1], Amat[:, 2]) + alpha = np.arccos(bdotc / b / c) * 180.0 / np.pi + beta = np.arccos(adotc / a / c) * 180.0 / np.pi + gamma = np.arccos(adotb / a / b) * 180.0 / np.pi + alpha[np.abs(alpha - 90.0) <= 1.0e-5] = 90.0 + beta[np.abs(alpha - 90.0) <= 1.0e-5] = 90.0 + gamma[np.abs(alpha - 90.0) <= 1.0e-5] = 90.0 + else: + a = np.sqrt(np.inner(Amat[0], Amat[0])) + b = np.sqrt(np.inner(Amat[1], Amat[1])) + c = np.sqrt(np.inner(Amat[2], Amat[2])) + adotb = np.inner(Amat[0], Amat[1]) + adotc = np.inner(Amat[0], Amat[2]) + bdotc = np.inner(Amat[1], Amat[2]) + alpha = np.arccos(bdotc / b / c) * 180.0 / np.pi + beta = np.arccos(adotc / a / c) * 180.0 / np.pi + gamma = np.arccos(adotb / a / b) * 180.0 / np.pi + if abs(alpha - 90.0) <= 1.0e-5: + alpha = 90.0 + if abs(beta - 90.0) <= 1.0e-5: + beta = 90.0 + if abs(gamma - 90.0) <= 1.0e-5: + gamma = 90.0 + return np.transpose(np.array((a, b, c, alpha, beta, gamma))) + + +## Simple random number generator +# This is important in order to compare across codes +# written in different languages. +# +# To initialize: +# \verbatim +# myRand = rand(123) +# \endverbatim +# where the argument of rand is the seed. +# +# To get a random number between "low" and "high": +# \verbatim +# rnd = myRand.get_rand(low,high) +# \endverbatim +# +class RandomNumberGenerator: + """To generate random numbers.""" + + def __init__(self, seed): + self.a = 321 + self.b = 231 + self.c = 13 + self.seed = seed + self.status = seed * 1000 + + def generate(self, low, high): + """Get a random real number in between low and high.""" + w = high - low + place = self.a * self.status + place = int(place / self.b) + rand = (place % self.c) / self.c + place = int(rand * 1000000) + self.status = place + rand = low + w * rand + + return rand + + +## Generating random coordinates +# Creates a system of size length^3 with coorindates having +# a random (-1,1) displacement from a simple cubic lattice +# with parameter 2.0 Ang. +# +# @param lenght The total number of point in x, y, and z directions. +# @return coordinates Position for every atoms. z-coordinate of atom 1 = coords[0,2] +# +# \verbatim +# NumberOfAtoms = len(coordinates[:,0]) +# \endverbatim +# +def get_random_coordinates(length): + """Get random coordinates real number in betwee low and high.""" + nats = length**3 + coords = np.zeros((nats, 3)) + latticeParam = 2.0 + atomsCounter = -1 + myrand = RandomNumberGenerator(123) + for i in range(length): + for j in range(length): + for k in range(length): + atomsCounter = atomsCounter + 1 + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 0] = i * latticeParam + rnd + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 1] = j * latticeParam + rnd + rnd = myrand.generate(-1.0, 1.0) + coords[atomsCounter, 2] = k * latticeParam + rnd + return coords + + +## Extract subsystem +# @brief Extracs a chemical subsystem (coordinates and atomic types) +# from a larger system using a set of indices. +# @param coords Position for every atom. z-coordinate of atom 1 = coords[0,2] +# @param types Index type for each atom in the system. Type for first atom = type[0] +# @param symbols Symbols for every atom type +# @param part list of index for the part to be extracted +# @return subSyCoords Subsystem atomic coordinates +# @return subSyTypes Subsystem atomic types +# +# @todo Add test! +def extract_subsystem(coords, types, symbols, part): + subSyNats = len(part) + subSyCoords = np.zeros((subSyNats, 3)) + subSyTypes = np.zeros((subSyNats), dtype=int) + for k in range(subSyNats): + i = part[k] + subSyCoords[k, :] = coords[i, :] + subSyTypes[k] = types[i] + return subSyCoords, subSyTypes + + +## Gets the volume of the simulation box +# @brief Given an array of lattice vectors, it return the box volume +# @param latticeVector Lattice vectors in an array. latice_vectors[0,2] means the z-coordinate +# of the first lattice vector. +# @return volBox Volume of the cell. +# +def get_volBox(latticeVectors, verb=False): + volBox = 0.0 + + pi = 3.14159265358979323846264338327950 + a1xa2 = np.zeros((3)) + a2xa3 = np.zeros((3)) + a3xa1 = np.zeros((3)) + + a1xa2[0] = latticeVectors[0, 1] * latticeVectors[1, 2] - latticeVectors[0, 2] * latticeVectors[1, 1] + a1xa2[1] = -latticeVectors[0, 0] * latticeVectors[1, 2] + latticeVectors[0, 2] * latticeVectors[1, 0] + a1xa2[2] = latticeVectors[0, 0] * latticeVectors[1, 1] - latticeVectors[0, 1] * latticeVectors[1, 0] + + a2xa3[0] = latticeVectors[1, 1] * latticeVectors[2, 2] - latticeVectors[1, 2] * latticeVectors[2, 1] + a2xa3[1] = -latticeVectors[1, 0] * latticeVectors[2, 2] + latticeVectors[1, 2] * latticeVectors[2, 0] + a2xa3[2] = latticeVectors[1, 0] * latticeVectors[2, 1] - latticeVectors[1, 1] * latticeVectors[2, 0] + + a3xa1[0] = latticeVectors[2, 1] * latticeVectors[0, 2] - latticeVectors[2, 2] * latticeVectors[0, 1] + a3xa1[1] = -latticeVectors[2, 0] * latticeVectors[0, 2] + latticeVectors[2, 2] * latticeVectors[0, 0] + a3xa1[2] = latticeVectors[2, 0] * latticeVectors[0, 1] - latticeVectors[2, 1] * latticeVectors[0, 0] + + # Get the volume of the cell + volBox = latticeVectors[0, 0] * a2xa3[0] + latticeVectors[0, 1] * a2xa3[1] + latticeVectors[0, 2] * a2xa3[2] + + return volBox + + +def coords_cart_to_frac(cart_coords, latticeVectors): + A_transpose = latticeVectors + A_transpose_inv = np.linalg.inv(A_transpose) + frac_coords = np.matmul(cart_coords, A_transpose_inv) + return frac_coords + + +def coords_frac_to_cart(frac_coords, latticeVectors): + A_transpose = latticeVectors + cart_coords = np.matmul(frac_coords, A_transpose) + return cart_coords + + +def coords_dvec_nlist(coords_in, nn, nl, nlTr, latticeVectors, rank=0, numranks=1, api="include_dr"): + mpiON = False + if mpiLib and (numranks > 1): + mpiON = True + + nats = len(coords_in[:, 0]) + if mpiON: + comm = MPI.COMM_WORLD + natsPerRank = int(nats / numranks) + if rank == numranks - 1: + natsInRank = nats - natsPerRank * (numranks - 1) + else: + natsInRank = natsPerRank + + if np.allclose(np.diag(np.diagonal(latticeVectors)), latticeVectors) == False: + coords = coords_cart_to_frac(coords_in, latticeVectors) + method = "nonortho" + else: + coords = coords_in + latticeLengths = np.diagonal(latticeVectors) + method = "ortho" + + dvecChunk = np.zeros([natsInRank, nl.shape[1], 3], dtype=coords.dtype) + drChunk = np.zeros([natsInRank, nl.shape[1]], dtype=coords.dtype) + dvec = np.zeros((nl.shape[0], nl.shape[1], 3), dtype=coords_in.dtype) + dr = np.zeros(nl.shape, dtype=coords_in.dtype) + for j in range(natsInRank): + i = natsPerRank * rank + j + for k in range(3): + if method == "ortho": + dvecChunk[i, 0 : nn[i], k] = (coords[i, k] - coords[nl[i, 0 : nn[i]], k]) - nlTr[ + i, 0 : nn[i], k + ] * latticeLengths[k] + else: + dvecChunk[i, 0 : nn[i], k] = (coords[i, k] - coords[nl[i, 0 : nn[i]], k]) - nlTr[i, 0 : nn[i], k] + if method == "nonortho": + dvecChunk[i, 0 : nn[i]] = coords_frac_to_cart(dvecChunk[i, 0 : nn[i]], latticeVectors) + drChunk[i, 0 : nn[i]] = np.linalg.norm(dvecChunk[i, 0 : nn[i]], axis=1) + if mpiON: + dr = collect_matrix_from_chunks(drChunk, nats, natsPerRank, rank, numranks, comm) + dvec[:, :, 0] = collect_matrix_from_chunks(dvecChunk[:, :, 0], nats, natsPerRank, rank, numranks, comm) + dvec[:, :, 1] = collect_matrix_from_chunks(dvecChunk[:, :, 1], nats, natsPerRank, rank, numranks, comm) + dvec[:, :, 2] = collect_matrix_from_chunks(dvecChunk[:, :, 2], nats, natsPerRank, rank, numranks, comm) + + else: + dr = drChunk + dvec = dvecChunk + if api == "include_dr": + return dvec, dr + else: + return dvec + + +## Neighbor list for small systems +# @brief It will bild a neighbor list using an "all to all" approach +# @param coords System coordinates. coords[7,1]: y-coordinate of atom 7. +# @param latticeVectors. Lattice vectors of the system box. latticeVectors[1,2]: z-coordinate of vector 1. +# @param nl neighbor list type: a simple 2D array indicating the neighbors of each atom. +# @param rank MPI rank +# +# @todo Add test! +def build_nlist_small(coords, latticeVectors, rcut, rank=0, numranks=1, verb=False): + if verb: + print("Building neighbor list for small systems ...") + + nats = len(coords[:,0]) + nl = np.zeros((nats,nats+1),dtype=int) + nlTrX = np.zeros((nats),dtype=int) + nlTrY = np.zeros((nats),dtype=int) + nlTrZ = np.zeros((nats),dtype=int) + + for i in range(nats): + #print(np.arange(0,i,1),np.arange(i+1,nats,1)) + + nl[i,1:i+1] = np.arange(0,i,1,dtype = int) + nl[i,i+1:nats] = np.arange(i+1,nats,1,dtype = int) + nl[i,0] = nats - 1 + + #print("nl",i,nl[i,1:nats+1]) + + return nl, nlTrX, nlTrY, nlTrZ + + +## Neighbor list +# @brief It will bild a neighbor list using an "all to all" approach +# @param coords System coordinates. coords[7,1]: y-coordinate of atom 7. +# @param latticeVectors. Lattice vectors of the system box. latticeVectors[1,2]: z-coordinate of vector 1. +# @param nl neighbor list type: a simple 2D array indicating the neighbors of each atom. +# @param rank MPI rank +# +# @todo Add test! +def build_nlist_integer(coords, latticeVectors, rcut, rank=0, numranks=1, verb=False): + if verb: + print("Building neighbor list ...") + + mpiON = False + if mpiLib and (numranks > 1): + mpiON = True + + nats = len(coords[:, 0]) + if mpiON: + comm = MPI.COMM_WORLD + natsPerRank = int(nats / numranks) + if rank == numranks - 1: + natsInRank = nats - natsPerRank * (numranks - 1) + else: + natsInRank = natsPerRank + natsInBuff = max(natsInRank, nats - natsPerRank * (numranks - 1)) + + # We will have approximatly [(4/3)*pi * rcut^3 * atomic density] number of neighbors. + # A very large atomic density could be 1 atom per (1.0 Ang)^3 = 1 atoms per Ang^3 + volBox = get_volBox(latticeVectors, verb=False) + density = 1.0 + maxneigh = np.min([int(3.14592 * (4.0 / 3.0) * density * rcut**3), nats]) + + # We assume the box is orthogonal + maxx = np.max(coords[:, 0]) + maxy = np.max(coords[:, 1]) + maxz = np.max(coords[:, 2]) + minx = np.min(coords[:, 0]) + miny = np.min(coords[:, 1]) + minz = np.min(coords[:, 2]) + + smallReal = 0.1 # To ensure the borders are contained in the limiting boxes + + # This part is for trying integer discretization of the coordinates + dr = 0.1 # Discretization param + cx = np.zeros((nats), dtype=int) + cy = np.zeros((nats), dtype=int) + cz = np.zeros((nats), dtype=int) + lx = latticeVectors[0, 0] / dr + ly = latticeVectors[1, 1] / dr + lz = latticeVectors[2, 2] / dr + for i in range(nats): + cx[i] = int(coords[i, 0] / dr) + cy[i] = int(coords[i, 1] / dr) + cz[i] = int(coords[i, 2] / dr) + + nx = int((maxx - minx) / (rcut)) + ny = int((maxy - miny) / (rcut)) + nz = int((maxz - minz) / (rcut)) + dx = (maxx - minx + smallReal) / float(nx) + dy = (maxy - miny + smallReal) / float(ny) + dz = (maxz - minz + smallReal) / float(nz) + + ix = int((maxx - minx + smallReal) / (dx)) # small box x-index of atom i + iy = int((maxy - miny + smallReal) / (dy)) # small box y-index + iz = int((maxz - minz + smallReal) / (dz)) # small box z-index + + nBox = nx * ny * nz + maxInBox = int(density * (rcut) ** 3) # Upper bound for the max number of atoms per box + inbox = np.zeros((nBox, maxInBox), dtype=int) + inbox[:, :] = -1 + totPerBox = np.zeros((nBox), dtype=int) + totPerBox[:] = -1 + boxOfI = np.zeros((nats), dtype=int) + xBox = np.zeros((nBox), dtype=int) + yBox = np.zeros((nBox), dtype=int) + zBox = np.zeros((nBox), dtype=int) + ithFromXYZ = np.zeros((nx, ny, nz), dtype=int) + + # Search for the box coordinate and index of every atom + for i in range(nats): + # Index every atom respect to the discretized position on the simulation box. + # tranlation = coords[i,:] - origin !For the general case we need to make sure coords are > 0 + ix = int((coords[i, 0] - minx) / (dx)) # small box x-index of atom i + iy = int((coords[i, 1] - miny) / (dy)) # small box y-index + iz = int((coords[i, 2] - minz) / (dz)) # small box z-index + + if ix > nx or ix < 0: + print("Error in box index") + sys.exit(0) + if iy > ny or iy < 0: + print("Error in box index") + sys.exit(0) + if iz > nz or iz < 0: + print("Error in box index") + sys.exit(0) + + ith = ix + iy * nx + iz * nx * ny # Get small box index + boxOfI[i] = ith + + # From index to box coordinates + # print("ith",ith,nBox,ix,iy,iz,nx,ny) + xBox[ith] = ix + yBox[ith] = iy + zBox[ith] = iz + + # From box coordinates to index + ithFromXYZ[ix, iy, iz] = ith + + totPerBox[ith] = totPerBox[ith] + 1 # How many per box + if totPerBox[ith] >= maxInBox: + print("Exceeding the max in box allowed") + sys.exit(0) + inbox[ith, totPerBox[ith]] = i # Who is in box ith + + for i in range(nBox): # Correcting - from indexing to + totPerBox[i] = totPerBox[i] + 1 + + rcut2 = rcut * rcut + + # For each atom we will look around to see who are its neighbors + def get_neighs_of(i, boxOfI, ithFromXYZ, inbox, latticeVectors): + nlVect = np.zeros((maxneigh), dtype=int) + nlTrVectX = np.zeros((maxneigh), dtype=int) + nlTrVectY = np.zeros((maxneigh), dtype=int) + nlTrVectZ = np.zeros((maxneigh), dtype=int) + translation = np.zeros((3)) + cnt = 0 + # Which box it beongs to + ibox = boxOfI[i] + # Look inside the box and the neighboring boxes + xBoxIbox = xBox[ibox] + yBoxIbox = yBox[ibox] + zBoxIbox = zBox[ibox] + for ix in range(-1, 2): + for iy in range(-1, 2): + for iz in range(-1, 2): + # Get neigh box coordinate + jxBox = xBoxIbox + ix + jyBox = yBoxIbox + iy + jzBox = zBoxIbox + iz + tx = 0.0 + ty = 0.0 + tz = 0.0 + tr = False + if jxBox < 0: + jxBox = nx - 1 + tx = -1 + tr = True + elif jxBox == nx: + jxBox = 0 + tx = 1 + tr = True + if jyBox < 0: + jyBox = ny - 1 + ty = -1 + tr = True + elif jyBox == ny: + jyBox = 0 + ty = 1 + tr = True + if jzBox < 0: + jzBox = nz - 1 + tz = -1 + tr = True + elif jzBox == nz: + jzBox = 0 + tz = 1 + tr = True + + # Get the neigh box index + jbox = ithFromXYZ[jxBox, jyBox, jzBox] + # if (tr): + # translation = tx*latticeVectors[0,:] + ty*latticeVectors[1,:] + tz*latticeVectors[2,:] + # else: + # translation[:] = 0.0 + + trlx = tx * lx + trly = ty * ly + trlz = tz * lz + # Now loop over the atoms in the jbox + for j in range(totPerBox[jbox]): + jj = inbox[jbox, j] # Get atoms in box j + if tr: + # coordsNeigh = coords[jj,:] + translation + cnx = cx[jj] + trlx + cny = cy[jj] + trly + cnz = cz[jj] + trlz + else: + # coordsNeigh = coords[jj,:] + cnx = cx[jj] + cny = cy[jj] + cnz = cz[jj] + + # distance = (coords[i,0] - coordsNeigh[0])**2 + \ + # (coords[i,1] - coordsNeigh[1])**2 + \ + # (coords[i,2] - coordsNeigh[2])**2 + + distance = float((cx[i] - cnx) ** 2 + (cy[i] - cny) ** 2 + (cz[i] - cnz) ** 2) * dr**2 + + if (distance < rcut2) and (distance > 1.0e-12): + cnt = cnt + 1 + nlVect[cnt] = jj # jj is a neighbor of i by some translation + nlTrVectX[cnt] = tx + nlTrVectY[cnt] = ty + nlTrVectZ[cnt] = tz + nlVect[0] = cnt + return (nlVect, nlTrVectX, nlTrVectY, nlTrVectZ) + + nlChunk = np.empty([natsInRank, maxneigh], dtype=int) + nlTrChunkX = np.empty([natsInRank, maxneigh], dtype=int) + nlTrChunkY = np.empty([natsInRank, maxneigh], dtype=int) + nlTrChunkZ = np.empty([natsInRank, maxneigh], dtype=int) + + for k in range(natsInRank): + i = natsPerRank * (rank) + k + nlVect, nlTrVectX, nlTrVectY, nlTrVectZ = get_neighs_of(i, boxOfI, ithFromXYZ, inbox, latticeVectors) + nlChunk[k, :] = nlVect[:] + nlTrChunkX[k, :] = nlTrVectX[:] + nlTrChunkY[k, :] = nlTrVectY[:] + nlTrChunkZ[k, :] = nlTrVectZ[:] + + nl = np.empty([nats, maxneigh], dtype=int) + nlTrX = np.empty([nats, maxneigh], dtype=int) + nlTrY = np.empty([nats, maxneigh], dtype=int) + nlTrZ = np.empty([nats, maxneigh], dtype=int) + + if mpiON: + nl = collect_matrix_from_chunks(nlChunk, nats, natsPerRank, rank, numranks, comm) + nlTrX = collect_matrix_from_chunks(nlTrChunkX, nats, natsPerRank, rank, numranks, comm) + nlTrY = collect_matrix_from_chunks(nlTrChunkY, nats, natsPerRank, rank, numranks, comm) + nlTrZ = collect_matrix_from_chunks(nlTrChunkZ, nats, natsPerRank, rank, numranks, comm) + else: + nl = nlChunk + nlTrX = nlTrChunkX + nlTrY = nlTrChunkY + nlTrZ = nlTrChunkZ + + return (nl, nlTrX, nlTrY, nlTrZ) + + +## Vectorized neighbor list +# @brief It will bild a neighbor list using an "all to all" approach +# @param coords System coordinates. coords[7,1]: y-coordinate of atom 7. +# @param latticeVectors. Lattice vectors of the system box. latticeVectors[1,2]: z-coordinate of vector 1. +# @param rcut Distance cutoff +# @param nl neighbor list type: a simple 2D array indicating the neighbors of each atom. +# @param rank MPI rank +# +# @todo Add test! +def build_nlist(coords_cart, latticeVectors, rcut, rank=0, numranks=1, verb=False, api="old"): + # Use fractional coords for everything before the distance cutoff + + coords = coords_cart_to_frac(coords_cart, latticeVectors) + + if verb: + print("Building neighbor list ...") + + mpiON = False + if mpiLib and (numranks > 1): + mpiON = True + + nats = len(coords[:, 0]) + if mpiON: + comm = MPI.COMM_WORLD + natsPerRank = int(nats / numranks) + if rank == numranks - 1: + natsInRank = nats - natsPerRank * (numranks - 1) + else: + natsInRank = natsPerRank + + # We will have approximatly [(4/3)*pi * rcut^3 * atomic density] number of neighbors. + # A very large atomic density could be 1 atom per (1.0 Ang)^3 = 1 atoms per Ang^3 + volBox = get_volBox(latticeVectors, verb=False) + density = 1.0 + maxneigh = np.min([int(3.14592 * (4.0 / 3.0) * density * rcut**3), nats]) + boxSize = rcut + + latticeLength = np.linalg.norm(latticeVectors, axis=1) + boxVectors = rcut * np.array([ + latticeVectors[0] / latticeLength[0], + latticeVectors[1] / latticeLength[1], + latticeVectors[2] / latticeLength[2], + ]) + + nx = int(latticeLength[0] / boxSize) + ny = int(latticeLength[1] / boxSize) + nz = int(latticeLength[2] / boxSize) + nBox = nx * ny * nz + 1 # Box Zero will be null box with no neighbors + maxInBox = int(density * get_volBox(boxVectors, verb=False)) # Upper bound for the max number of atoms per box + inbox = -np.ones((nBox, maxInBox), dtype=int) + totPerBox = -np.ones((nBox), dtype=int) + boxOfI = np.zeros((nats), dtype=int) + xBox = np.zeros((nBox), dtype=int) + yBox = np.zeros((nBox), dtype=int) + zBox = np.zeros((nBox), dtype=int) + ithFromXYZ = np.zeros((nx, ny, nz), dtype=int) # Null box (= 0) unless there are atoms + neighbox = np.zeros((nBox, 27), dtype=int) + + # Search for the box coordinate and index of every atom + + for i in range(nats): + # Index every atom respect to the discretized position on the simulation box. + ix = int(coords[i, 0] * nx) % nx # small box x-index of atom i + iy = int(coords[i, 1] * ny) % ny # small box x-index of atom i + iz = int(coords[i, 2] * nz) % nz # small box x-index of atom i + + ith = ix + iy * nx + iz * nx * ny + 1 # Get small box index, leave zero for null box + boxOfI[i] = ith + + # From index to box coordinates + xBox[ith] = ix + yBox[ith] = iy + zBox[ith] = iz + + # From box coordinates to index + ithFromXYZ[ix, iy, iz] = ith + + totPerBox[ith] = totPerBox[ith] + 1 # For now this is the atom index in the box + if totPerBox[ith] >= maxInBox: + print("Exceeding the max in box allowed") + sys.exit(0) + inbox[ith, totPerBox[ith]] = i # Who is in box ith + + for i in range(nBox): # Now this array will hold the total number of atoms in each box + totPerBox[i] = totPerBox[i] + 1 + + # For each box get a flat list of neighboring boxes (including self) + for i in range(nBox): + neighbox[i, 0] = i + j = 1 + for ix in range(-1, 2): + for iy in range(-1, 2): + for iz in range(-1, 2): + if not (ix == 0 and iy == 0 and iz == 0): + # Get neigh box coordinate + neighx = xBox[i] + ix + neighy = yBox[i] + iy + neighz = zBox[i] + iz + jxBox = neighx % nx + jyBox = neighy % ny + jzBox = neighz % nz + + # Get the neigh box index + neighbox[i, j] = ithFromXYZ[jxBox, jyBox, jzBox] + j += 1 + + # Vectorized neighbor list calc for atom i + def get_neighs_of(i, coords, neighbox, boxOfI, inbox, latticeVectors): + cnt = -1 + # Get the list of all atoms in neighboring boxes + boxneighs = inbox[neighbox[boxOfI[i]]] + # Shorten the long dimension for speedup on CPU + # Eliminate the atom itself from the neighbor list + boxneighs = boxneighs[np.logical_and(boxneighs != -1, boxneighs != i)] + # Calculate the distances to all atoms in neighboring boxes + dvec = np.zeros((len(boxneighs), 3), dtype=coords.dtype) + nlTrBoxneigh = np.zeros(dvec.shape, dtype=int) + nlVect = np.zeros(maxneigh, dtype=int) + nlTrVect = np.zeros((maxneigh, 3), dtype=int) + dvecVect = np.zeros((maxneigh, 3), dtype=coords.dtype) + drVect = np.zeros((maxneigh), dtype=coords.dtype) + for k in range(3): + # Compute the integer lattice vector translation first + dvec[:, k] = coords[i, k] - coords[boxneighs, k] + 0.5 + nlTrBoxneigh[:, k] = np.floor(dvec[:, k]) + # Now use the translation to compute the periodic displacement + dvec[:, k] = dvec[:, k] - nlTrBoxneigh[:, k] - 0.5 + dvec = coords_frac_to_cart(dvec, latticeVectors) + distance = np.linalg.norm(dvec, axis=1) + # Filter the list according to the threshold + nlSel = np.where(distance < rcut)[0] + cnt = len(nlSel) + nlVect[1 : cnt + 1] = boxneighs[nlSel] + nlTrVect[1 : cnt + 1] = nlTrBoxneigh[nlSel] + dvecVect[1 : cnt + 1] = dvec[nlSel] + drVect[1 : cnt + 1] = distance[nlSel] + nlVect[0] = cnt + nlTrVect[0] = cnt + return (nlVect, nlTrVect[:, 0], nlTrVect[:, 1], nlTrVect[:, 2], dvecVect, drVect) + + nlChunk = np.empty([natsInRank, maxneigh], dtype=int) + nlTrChunkX = np.empty([natsInRank, maxneigh], dtype=int) + nlTrChunkY = np.empty([natsInRank, maxneigh], dtype=int) + nlTrChunkZ = np.empty([natsInRank, maxneigh], dtype=int) + if api == "include_dvec": + dvecChunkX = np.empty([natsInRank, maxneigh], dtype=coords.dtype) + dvecChunkY = np.empty([natsInRank, maxneigh], dtype=coords.dtype) + dvecChunkZ = np.empty([natsInRank, maxneigh], dtype=coords.dtype) + drChunk = np.empty([natsInRank, maxneigh], dtype=coords.dtype) + + for k in range(natsInRank): + i = natsPerRank * (rank) + k + nlVect, nlTrVectX, nlTrVectY, nlTrVectZ, dvecVect, drVect = get_neighs_of( + i, coords, neighbox, boxOfI, inbox, latticeVectors + ) + nlChunk[k, :] = nlVect[:] + nlTrChunkX[k, :] = nlTrVectX[:] + nlTrChunkY[k, :] = nlTrVectY[:] + nlTrChunkZ[k, :] = nlTrVectZ[:] + if api == "include_dvec_dr": + drChunk[k, :] = drVect[:] + dvecChunkX[k, :] = dvecVect[:, 0] + dvecChunkY[k, :] = dvecVect[:, 1] + dvecChunkZ[k, :] = dvecVect[:, 2] + + # Gather the neighbor list across MPI ranks + nl = np.empty([nats, maxneigh], dtype=int) + nlTrX = np.empty([nats, maxneigh], dtype=int) + nlTrY = np.empty([nats, maxneigh], dtype=int) + nlTrZ = np.empty([nats, maxneigh], dtype=int) + if api == "include_dvec_dr": + dvecX = np.empty([nats, maxneigh], dtype=coords.dtype) + dvecY = np.empty([nats, maxneigh], dtype=coords.dtype) + dvecZ = np.empty([nats, maxneigh], dtype=coords.dtype) + dr = np.empty([nats, maxneigh], dtype=coords.dtype) + + if mpiON: + tic = time.perf_counter() + nl = collect_matrix_from_chunks(nlChunk, nats, natsPerRank, rank, numranks, comm) + nlTrX = collect_matrix_from_chunks(nlTrChunkX, nats, natsPerRank, rank, numranks, comm) + nlTrY = collect_matrix_from_chunks(nlTrChunkY, nats, natsPerRank, rank, numranks, comm) + nlTrZ = collect_matrix_from_chunks(nlTrChunkZ, nats, natsPerRank, rank, numranks, comm) + if api == "include_dvec_dr": + dr = collect_matrix_from_chunks(drChunk, nats, natsPerRank, rank, numranks, comm) + dvecX = collect_matrix_from_chunks(dvecChunkX, nats, natsPerRank, rank, numranks, comm) + dvecY = collect_matrix_from_chunks(dvecChunkY, nats, natsPerRank, rank, numranks, comm) + dvecZ = collect_matrix_from_chunks(dvecChunkZ, nats, natsPerRank, rank, numranks, comm) + + t_gather_nl = time.perf_counter() - tic + if rank == 0 and verb: + print("Time for gathering nl arrays= ", t_gather_nl, " sec") + else: + nl = nlChunk + nlTrX = nlTrChunkX + nlTrY = nlTrChunkY + nlTrZ = nlTrChunkZ + if api == "include_dvec_dr": + dr = drChunk + dvecX = dvecChunkX + dvecY = dvecChunkY + dvecZ = dvecChunkZ + + if api == "new": + return (nl[:, 0], nl[:, 1:], np.moveaxis(np.array([nlTrX[:, 1:], nlTrY[:, 1:], nlTrZ[:, 1:]]), 0, -1)) + elif api == "include_dvec_dr": + return ( + nl[:, 0], + nl[:, 1:], + np.moveaxis(np.array([nlTrX[:, 1:], nlTrY[:, 1:], nlTrZ[:, 1:]]), 0, -1), + np.moveaxis(np.array([dvecX[:, 1:], dvecY[:, 1:], dvecZ[:, 1:]]), 0, -1), + dr[:, 1:], + ) + elif api == "old": + return (nl, nlTrX, nlTrY, nlTrZ) + else: + raise_error("build_nlist", "api must be new, old, or dvec") + + +## Get hindex +# @brief hindex will give the orbital index for each atom +# in the system. +# The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1` +# @param orbs A dictionary that give the total orbitals (basis set size) +# for each atomic type. +# @param symbols Symbol for each atom type. Symbol for first atom type = symbols[0] +# @param types Index type for each atom in the system. Type for first atom = type[0] +# @return norbs Total number of orbitals +# @return hindex Orbital index for each atom in the system +# @retunn numel Total number of electrons +# +def get_hindex(orbs_for_every_symbol, symbols, types, verb=False): + nats = len(types[:]) + ntypes = len(symbols) + hindex = np.zeros((nats + 1), dtype=int) + norbs = 0 + ptable = PeriodicTable() + numel = 0 + #verb = True + + norbs_for_every_type = np.zeros((ntypes),dtype=int) + numel_for_every_type = np.zeros((ntypes),dtype=int) + cnt = 0 + for symbol in symbols: + atomic_number = ptable.get_atomic_number(symbol) + try: + norbs_for_atom = orbs_for_every_symbol[symbol] + except: + #If there is no specified basis set we default econftb in ptable + econftb = ptable.econftb[atomic_number] + if(econftb == "s"): + norbs_for_atom = 1 #1(s) + elif(econftb == "sp"): + norbs_for_atom = 4 #1(s) + 3(p) + elif(econftb == "spd"): + norbs_for_atom = 10 #2(s) + 3(p) + 5(d) + elif(econftb == "spdf"): + norbs_for_atom = 17 #2(s) + 3(p) + 5(d) + 7(f) + + msg = "No number of orbitals provided for species " + symbol \ + +", Using maxbonds in periodic table instead" + warning_at("get_hindex",msg) + + numel_for_atom = ptable.numel[atomic_number] + norbs_for_every_type[cnt] = norbs_for_atom + numel_for_every_type[cnt] = numel_for_atom + if verb: + print("type,symb,orb,valence",cnt, symbol,norbs_for_atom,numel_for_atom) + cnt += 1 + + norbs = 0 + for i in range(nats): + hindex[i] = norbs + norbs_for_atom = norbs_for_every_type[types[i]] + numel = numel + numel_for_every_type[types[i]] + norbs = norbs + norbs_for_atom + hindex[nats] = norbs + + return norbs,norbs_for_every_type,hindex,numel,numel_for_every_type diff --git a/src/sedacs/tbforce_modules.py b/src/sedacs/tbforce_modules.py new file mode 100644 index 00000000..325ce71e --- /dev/null +++ b/src/sedacs/tbforce_modules.py @@ -0,0 +1,149 @@ +import ctypes +import os + +import numpy as np +from sedacs.message import * +import sys +from sedacs.engine import Engine +from sedacs.globals import * + +# import the shared library +fortlibFileName = os.environ["PROXYA_FORTRAN_PATH"] + "/proxya_fortran.so" +pylibFileName = os.environ["PROXYA_PYTHON_PATH"] +sys.path.append(pylibFileName) + +try: + fortlib = ctypes.CDLL(fortlibFileName) + get_hamiltonian_fortran = fortlib.proxya_get_hamiltonian + get_density_matrix_fortran = fortlib.proxya_get_density_matrix +except Exception as e: + fortlib = None + raise e + +try: + from first_level import get_hamiltonian_proxy + from first_level import get_density_matrix_proxy + from first_level import get_ppot_energy_expo_proxy + from first_level import get_ppot_forces_expo_proxy + from first_level import get_tb_forces_proxy + from first_level import init_proxy_proxy +except Exception as e: + pythlib = None + raise e + + +__all__ = ["get_hamiltonian_module", "get_density_matrix_module", + "get_ppot_energy_expo", "get_ppot_forces_expo", "init_proxy", + "get_tb_forces_module" + ] + +#Initialize the proxy code +def init_proxy(symbols,orbs): + init_proxy_proxy(symbols,orbs) + + + +#def get_hamiltonian_proxy(*args, **kwargs): +# raise NotImplementedError("implement this in an external module!") + + +def get_hamiltonian_module(eng,coords,atomTypes,symbols,get_overlap=True,verb=False): + + + if eng.name == "ProxyAPython": + if(get_overlap): + hamiltonian, overlap = get_hamiltonian_proxy(coords,atomTypes,symbols,get_overlap=get_overlap,verb=verb) + else: + hamiltonian = get_hamiltonian_proxy(coords,atomTypes,symbols,get_overlap=get_overlap,verb=verb) + + + elif eng.name == "ProxyAFortran": + nats = len(coords[:, 0]) + norbs = nats + + coords_in = np.zeros(3 * nats) # Vectorized coordinates + for i in range(nats): + coords_in[3 * i] = coords[i, 0] + coords_in[3 * i + 1] = coords[i, 1] + coords_in[3 * i + 2] = coords[i, 2] + + # Specify arguments type as a pointers + get_hamiltonian_fortran.argtypes = [ + ctypes.c_int, + ctypes.c_int, + ctypes.POINTER(ctypes.c_double), + ctypes.POINTER(ctypes.c_int), + ctypes.POINTER(ctypes.c_double), + ctypes.POINTER(ctypes.c_double), + ctypes.c_bool, + ] + # Passing a pointer to Fotran + coords_ptr = coords.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + atomTypes_ptr = atomTypes.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + hamiltonian = np.zeros((norbs, norbs)) + overlap = np.zeros((norbs, norbs)) + ham_ptr = hamiltonian.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + over_ptr = overlap.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + err = get_hamiltonian_fortran( + ctypes.c_int(nats), ctypes.c_int(norbs), coords_ptr, atomTypes_ptr, ham_ptr, over_ptr, ctypes.c_bool(verb) + ) + else: + error_at("get_hamiltonian_module","No specific engine type defined") + + if(get_overlap): + return hamiltonian, overlap + else: + return hamiltonian + + +def get_density_matrix_modules(eng,hamiltonian,nocc,method="Diag",accel="No",mu=None,elect_temp=0.0,overlap=None, verb=False): + if eng.name == "ProxyAPython": + method = eng.method + accel = eng.accel + density_matrix = get_density_matrix_proxy(hamiltonian, nocc,method=method,accel=accel,mu=mu, overlap=overlap, verb=False) + elif eng.name == "ProxyAFortran": + # H needs to be flattened + norbs = len(hamiltonian[:, 0]) + ht = hamiltonian.T + # Specify arguments type as a pointers + get_density_matrix_fortran.argtypes = [ + ctypes.c_int, + ctypes.c_int, + ctypes.POINTER(ctypes.c_double), + ctypes.POINTER(ctypes.c_double), + ctypes.c_bool, + ] + # Passing a pointer to Fortran + hamiltonian_ptr = hamiltonian.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + density_matrix = np.zeros((norbs, norbs)) + density_matrix_ptr = density_matrix.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + + err = get_density_matrix_fortran( + ctypes.c_int(norbs), ctypes.c_int(nocc), hamiltonian_ptr, density_matrix_ptr, ctypes.c_bool(verb) + ) + else: + error_at("get_density_matrix_module","No specific engine type defined") + + return density_matrix + + +def get_ppot_energy_expo(coords,types): + + energy = get_ppot_energy_expo_proxy(coords,types) + + return energy + + +def get_ppot_forces_expo(coords,types): + + forces = get_ppot_forces_expo_proxy(coords,types) + + return forces + + +def get_tb_forces_module(coords,types): + + forces = get_ppot_forces_expo_proxy(coords,types) + + return forces diff --git a/src/sedacs/tbforces.py b/src/sedacs/tbforces.py new file mode 100644 index 00000000..0fcde5d6 --- /dev/null +++ b/src/sedacs/tbforces.py @@ -0,0 +1,69 @@ +#TB forces +"""TB forces +Some functions to get the TB forces + +So far: get_tb_forces +""" + +from sedacs.message import * +from sedacs.periodic_table import PeriodicTable +import numpy as np + +try: + from mpi4py import MPI + mpiLib = True +except ImportError as e: + mpiLib = False +from multiprocessing import Pool + +if mpiLib: + from sedacs.mpi import * +import time + +__all__ = [ + "get_tb_forces" +] + + +## Get TB forces +# \brief Get TB and Coulombic forces from the Hamiltonian, Density matrix +# and charges. +# \param ham Hamiltonian Matrix +# \param rho Density Matrix +# \param field External field +# \param coords Coordinates +# \param atomTypes Atomic types +# \param Symbols Atomic symbols for every type. +## +def get_tb_forces(engine,ham,rho,charges,field,coords,atomTypes,symbols,overlap=None,verb=False): + + # Call the proper interface + # If there is no interface, one could write its own tb forces + if engine.interface == "None": + raise ValueError("ERROR!!! - Write your own TB forces.") + # Tight interface using modules or an external code compiled as a library + elif engine.interface == "Module": + # We will call proxyA directly as it will be loaded as a module. + if(overlap is not None): + raise NotImplemented("TB forces with overlap not implemented in proxy code") + else: + return get_tb_forces_module(ham,rho,charges,field,coords,atomTypes,symbols,overlap=overlap,verb=verb) + # Using any available library. We will use MDI here. + elif engine.interface == "MDI": + raise NotImplemented("MDI interface not implemented yet") + # Using unix sockets to interface the codes + elif engine.interface == "Socket": + raise NotImplemented("Sockets not implemented yet") + # Using files as a form of communication and transfering data. + elif engine.interface == "File": + raise NotImplemented("Sockets not implemented yet") + else: + raise ValueError(f"ERROR!!!: Interface type not recognized: '{engine.interface}'. " + + f"Use any of the following: Module,File,Socket,MDI") + + + + return forces + + + diff --git a/src/sedacs/torch_sedacs.py b/src/sedacs/torch_sedacs.py new file mode 100644 index 00000000..820b5050 --- /dev/null +++ b/src/sedacs/torch_sedacs.py @@ -0,0 +1,261 @@ +# Pytorch kernels + +import sys +import time + +MPI = None +try: + from mpi4py import MPI + + is_mpi_available = True +except ImportError: + is_mpi_available = False + +import numpy as np +import torch +import torch.nn.functional as tf + +from sedacs.system import collect_matrix_from_chunks, get_volBox + + +## Neighbor list +# @brief It will bild a neighbor list using an "all to all" approach +# @param coords System coordinates. coords[7,1]: y-coordinate of atom 7. +# @param latticeVectors. Lattice vectors of the system box. latticeVectors[1,2]: z-coordinate of vector 1. +# @param nl neighbor list type: a simple 2D array indicating the neighbors of each atom. +# @param rank MPI rank +# +def build_nlist_torch(coords, latticeVectors, rcut, device=torch.device("cpu"), rank=0, numranks=1, verb=False): + if verb: + print("Building neighbor list ...") + + nats = len(coords[:, 0]) + if numranks > 1: + comm = MPI.COMM_WORLD + natsPerRank = int(nats / numranks) + if rank == numranks - 1: + natsInRank = nats - natsPerRank * (numranks - 1) + else: + natsInRank = natsPerRank + + # nats_left = nats % numranks + # if (rank < nats_left): + # natsInRank = natsPerRank + 1 + # else: + # natsInRank = natsPerRank + + # natsInBuff = max(natsInRank,nats - natsPerRank*(numranks - 1)) + + # We will have approximatly [(4/3)*pi * rcut^3 * atomic density] number of neighbors. + # A very large atomic density could be 1 atom per (1.0 Ang)^3 = 1 atoms per Ang^3 + volBox = get_volBox(latticeVectors, verb=False) + density = 1.0 + maxneigh = int(3.14592 * (4.0 / 3.0) * density * rcut**3) + boxSize = rcut + + # We assume the box is orthogonal + nx = int(latticeVectors[0, 0] / boxSize) + ny = int(latticeVectors[1, 1] / boxSize) + nz = int(latticeVectors[2, 2] / boxSize) + nBox = nx * ny * nz + maxInBox = int(density * (boxSize) ** 3) # Upper bound for the max number of atoms per box + inbox = np.zeros((nBox, maxInBox), dtype=int) + inbox[:, :] = -1 + totPerBox = np.zeros((nBox), dtype=int) + totPerBox[:] = -1 + boxOfI = np.zeros((nats), dtype=int) + xBox = np.zeros((nBox), dtype=int) + yBox = np.zeros((nBox), dtype=int) + zBox = np.zeros((nBox), dtype=int) + ithFromXYZ = np.zeros((nx, ny, nz), dtype=int) + neighbox = np.zeros((nBox, 27), dtype=int) + + minx = np.min(coords[:, 0]) + miny = np.min(coords[:, 1]) + minz = np.min(coords[:, 2]) + + smallReal = 0.0 + # Search for the box coordinate and index of every atom + + for i in range(nats): + # Index every atom respect to the discretized position on the simulation box. + ix = int(coords[i, 0] / boxSize) % nx # small box x-index of atom i + iy = int(coords[i, 1] / boxSize) % ny # small box x-index of atom i + iz = int(coords[i, 2] / boxSize) % nz # small box x-index of atom i + + ith = ix + iy * nx + iz * nx * ny # Get small box index + boxOfI[i] = ith + + # From index to box coordinates + xBox[ith] = ix + yBox[ith] = iy + zBox[ith] = iz + + # From box coordinates to index + ithFromXYZ[ix, iy, iz] = ith + + totPerBox[ith] = totPerBox[ith] + 1 # How many per box + if totPerBox[ith] >= maxInBox: + raise ValueError(f"Exceeding the max in box allowed: {totPerBox[ith]} >= { maxInBox}.") + inbox[ith, totPerBox[ith]] = i # Who is in box ith + + for i in range(nBox): # Correcting - from indexing to + totPerBox[i] = totPerBox[i] + 1 + + # For each box get a flat list of neighboring boxes (including self) + for i in range(nBox): + neighbox[i, 0] = i + j = 1 + for ix in range(-1, 2): + for iy in range(-1, 2): + for iz in range(-1, 2): + if not (ix == 0 and iy == 0 and iz == 0): + # Get neigh box coordinate + neighx = xBox[i] + ix + neighy = yBox[i] + iy + neighz = zBox[i] + iz + jxBox = neighx % nx + jyBox = neighy % ny + jzBox = neighz % nz + + # Get the neigh box index + neighbox[i, j] = ithFromXYZ[jxBox, jyBox, jzBox] + j += 1 + # Move arrays to device + tic = time.perf_counter() + neighbox_d = torch.tensor(neighbox, device=device) + inbox_d = torch.tensor(inbox, device=device) + boxOfI_d = torch.tensor(boxOfI, device=device) + latticeVectors_d = torch.tensor(latticeVectors.astype(np.float32), device=device) + coords_d = torch.tensor(coords.astype(np.float32), device=device) + t_copy = time.perf_counter() - tic + if rank == 0 and verb: + print("Time for copying arrays to device = ", t_copy, " sec") + + def get_neighs_of(i, coords, neighbox, boxOfI, inbox, latticeVectors): + # print("atom",i) + cnt = -1 + # Get the list of all atoms in neighboring boxes + boxneighs = inbox[neighbox[boxOfI[i]]] + # Shorten the long dimension for speedup on CPU + max_nonzero_elems = torch.max(torch.count_nonzero(boxneighs != -1, axis=1)) + boxneighs = boxneighs[:, 0:max_nonzero_elems].flatten() + # Filter and flatten the list + # boxneighs = boxneighs[np.where(boxneighs != -1)] + # Calculate the distances to all atoms in neighboring boxes + dvec = torch.zeros((len(boxneighs), 3), dtype=torch.float64) + # dvec = dvec + coords[None,None,i] + orthovec = torch.diagonal(latticeVectors) + for k in range(3): + dvec[:, k] = (coords[i, k] - coords[boxneighs, k] + orthovec[k] / 2.0) % orthovec[k] - orthovec[k] / 2.0 + distance = torch.linalg.norm(dvec, axis=1) + # Filter the list according to the threshold + nlVect = boxneighs[torch.where(distance < rcut)] + # nlVect = boxneighs[np.where(np.logical_and(distance < rcut,distance > 1.0E-12))] + nlVect = nlVect[nlVect != -1] + nlVect = nlVect[nlVect != i] + cnt = len(nlVect) + # Format and pad the list + nlVect = tf.pad(nlVect, (1, maxneigh - cnt - 1), "constant", value=0) + nlVect[0] = cnt + nlVect = nlVect.cpu().numpy() + return nlVect + + def get_neighs_of_range(i0, i1, coords, neighbox, boxOfI, inbox, latticeVectors): + # print("atom",i) + cnt = -1 + nats_this = i1 - i0 + 1 + + # Get the list of all atoms in neighboring boxes + tic = time.perf_counter() + boxneighs = inbox[neighbox[boxOfI[i0 : i1 + 1]]] + t_boxneighs = time.perf_counter() - tic + + # Shorten the long dimension for speedup on CPU + max_nonzero_elems = torch.max(torch.count_nonzero(boxneighs != -1, axis=1)) + boxneighs = boxneighs[:, 0:max_nonzero_elems] + orthovec = torch.diagonal(latticeVectors) + + # Build initial distance vector array from repeating coords rows + tic = time.perf_counter() + repeats = torch.tensor([boxneighs.shape[1] * boxneighs.shape[2]], device=device).repeat(nats_this) + dvec = torch.repeat_interleave(coords[i0 : i1 + 1], repeats, axis=0) + t_repeat_coords = time.perf_counter() - tic + + # Reshape boxneighs for vectorized distance calc + boxneighs = boxneighs.reshape(boxneighs.shape[0] * boxneighs.shape[1] * boxneighs.shape[2]) + + # Perform distance calc + tic = time.perf_counter() + for k in range(3): + dvec[:, k] = (dvec[:, k] - coords[boxneighs, k] + orthovec[k] / 2.0) % orthovec[k] - orthovec[k] / 2.0 + distance = torch.linalg.norm(dvec, axis=1) + t_distance = time.perf_counter() - tic + + # Reshape arrays to form neighbor list + boxneighs = boxneighs.reshape(nats_this, int(len(boxneighs) / nats_this)) + distance = distance.reshape(nats_this, int(len(distance) / nats_this)) + + # Build the neighbor list using a distance threshold mask + tic = time.perf_counter() + nlMask = distance < rcut + nlVect = torch.where(nlMask, boxneighs, -1) + nlVect, indices = torch.sort(nlVect, axis=1, descending=True) + nlVect = tf.pad(nlVect, (1, maxneigh - nlVect.shape[1] - 1), "constant", value=0) + nlVect[:, 0] = torch.count_nonzero(nlMask, axis=1) + t_build_nlvect = time.perf_counter() - tic + + # Copy the neighbor list back to the host + tic = time.perf_counter() + nlVect = nlVect.cpu() + t_copy_nlvect = time.perf_counter() - tic + + # Convert to a numpy array + tic = time.perf_counter() + nlVect = nlVect.numpy() + t_numpy = time.perf_counter() - tic + + if rank == 0 and verb: + print("Time for building boxneighs = ", t_boxneighs, " sec") + print("Time for repeating coords = ", t_repeat_coords, " sec") + print("Time for distance calculation = ", t_distance, " sec") + print("Time for building neighbor list vectors = ", t_build_nlvect, " sec") + print("Time for copying nlVect to host = ", t_copy_nlvect, " sec") + print("Time for converting nlVect to numpy = ", t_numpy, " sec") + + return nlVect + + # nlChunk = np.empty([natsInRank,maxneigh],dtype=int) + + # firstIdx = natsPerRank*(rank+1) + # for i in range(rank-1): + # if (i >= nats_left): + # firstIdx -= 1 + + nlChunk = get_neighs_of_range( + natsPerRank * rank, + natsPerRank * rank + natsInRank - 1, + coords_d, + neighbox_d, + boxOfI_d, + inbox_d, + latticeVectors_d, + ) + + # Gather the neighbor list + nl = np.empty([nats, maxneigh], dtype=int) + if is_mpi_available: + tic = time.perf_counter() + nl = collect_matrix_from_chunks(nlChunk, nats, natsPerRank, rank, numranks, comm) + t_gather_nl = time.perf_counter() - tic + if rank == 0 and verb: + print("Time for gathering nl = ", t_gather_nl, " sec") + else: + nl = nlChunk + + # comm.Allgather(nlChunk,nl) + # comm.Allgather(nlTrChunkX,nlTrX) + # comm.Allgather(nlTrChunkY,nlTrY) + # comm.Allgather(nlTrChunkZ,nlTrZ) + + return nl From db707ea07e89a9fc00944a0cd04d7c454c8d2817 Mon Sep 17 00:00:00 2001 From: peterli3819 Date: Tue, 15 Apr 2025 10:57:17 -0600 Subject: [PATCH 2/4] clean up the code, add more comments, and add the shadow md in latte_interface example --- .../latte_interface/{ => bomd}/coords_100.pdb | 0 .../{ => bomd}/coords_1299.pdb | 0 .../{ => bomd}/coords_2955.pdb | 0 examples/latte_interface/{ => bomd}/input.in | 6 +- .../bomd}/latte.in | 6 +- examples/latte_interface/bomd/main.py | 295 ++ .../bomd}/vars | 14 +- .../latte_interface/{ => bomd}/water_128.xyz | 0 examples/latte_interface/coords_1032.pdb | 1038 ------ examples/latte_interface/main.py | 36 - .../scf_energy_forces}/coords_100.pdb | 0 .../scf_energy_forces}/coords_1299.pdb | 0 .../scf_energy_forces}/coords_2955.pdb | 0 .../scf_energy_forces}/input.in | 3 +- .../{ => scf_energy_forces}/latte.in | 7 +- .../latte_interface/scf_energy_forces/main.py | 47 + .../scf_energy_forces}/vars | 14 +- .../scf_energy_forces}/water_128.xyz | 0 examples/latte_interface/vars | 21 - examples/latte_interface/wat.pdb | 9 - examples/latte_interface/wat.xyz | 5 - .../latte_interface_bomd/coords_100_2.pdb | 306 -- examples/latte_interface_bomd/input.in | 26 - examples/latte_interface_bomd/regularbomd.py | 130 - examples/latte_interface_bomd/wat.pdb | 9 - examples/latte_interface_bomd/wat.xyz | 5 - .../coords_100.pdb | 306 -- .../coords_1299.pdb | 1305 -------- .../coords_2955.pdb | 2961 ----------------- .../latte_interface_energy_forces/latte.in | 57 - .../latte_interface_energy_forces/main.py | 34 - .../latte_interface_energy_forces/wat.pdb | 9 - .../latte_interface_energy_forces/wat.xyz | 5 - .../water_128.xyz | 386 --- examples/latte_scf/coords_100.pdb | 306 -- examples/latte_scf/coords_1032.pdb | 1038 ------ examples/latte_scf/coords_1299.pdb | 1305 -------- examples/latte_scf/coords_2955.pdb | 2961 ----------------- examples/latte_scf/input.in | 27 - examples/latte_scf/latte.in | 80 - examples/latte_scf/main.py | 35 - examples/latte_scf/vars | 21 - examples/latte_scf/wat.pdb | 9 - examples/latte_scf/wat.xyz | 5 - examples/latte_scf/wat2.xyz | 8 - examples/latte_scf/water_128.xyz | 386 --- proxies/python/aosa_hamiltonian.py | 2 +- proxies/python/evals_dvals.py | 5 +- proxies/python/hamiltonian_elements.py | 1 + proxies/python/proxy_global.py | 1 + src/sedacs/charges.py | 13 +- src/sedacs/coulombic.py | 237 +- src/sedacs/driver/graph_adaptive_scf.py | 367 +- .../graph_adaptive_scf_energy_forces.py | 263 -- .../driver/graph_adaptive_sp_energy_forces.py | 347 +- src/sedacs/driver/init.py | 2 +- src/sedacs/energy_forces.py | 81 +- src/sedacs/evals_dvals.py | 27 +- src/sedacs/ewald/PME_torch.py | 6 +- src/sedacs/ewald/ewald_torch.py | 65 +- src/sedacs/file_io.py | 42 +- src/sedacs/graph.py | 2 +- src/sedacs/interface_modules.py | 936 ++++-- src/sedacs/mixer.py | 2 +- src/sedacs/mpi.py | 11 + src/sedacs/parser.py | 1 + src/sedacs/sdc_density_matrix.py | 172 +- src/sedacs/sdc_energy_forces.py | 116 +- src/sedacs/sdc_evals_dvals.py | 104 +- src/sedacs/sdc_hamiltonian.py | 88 +- src/sedacs/system.py | 2 +- 71 files changed, 2262 insertions(+), 13852 deletions(-) rename examples/latte_interface/{ => bomd}/coords_100.pdb (100%) rename examples/latte_interface/{ => bomd}/coords_1299.pdb (100%) rename examples/latte_interface/{ => bomd}/coords_2955.pdb (100%) rename examples/latte_interface/{ => bomd}/input.in (91%) rename examples/{latte_interface_bomd => latte_interface/bomd}/latte.in (95%) create mode 100644 examples/latte_interface/bomd/main.py rename examples/{latte_interface_bomd => latte_interface/bomd}/vars (62%) rename examples/latte_interface/{ => bomd}/water_128.xyz (100%) delete mode 100644 examples/latte_interface/coords_1032.pdb delete mode 100644 examples/latte_interface/main.py rename examples/{latte_interface_bomd => latte_interface/scf_energy_forces}/coords_100.pdb (100%) rename examples/{latte_interface_bomd => latte_interface/scf_energy_forces}/coords_1299.pdb (100%) rename examples/{latte_interface_bomd => latte_interface/scf_energy_forces}/coords_2955.pdb (100%) rename examples/{latte_interface_energy_forces => latte_interface/scf_energy_forces}/input.in (95%) rename examples/latte_interface/{ => scf_energy_forces}/latte.in (92%) create mode 100644 examples/latte_interface/scf_energy_forces/main.py rename examples/{latte_interface_energy_forces => latte_interface/scf_energy_forces}/vars (62%) rename examples/{latte_interface_bomd => latte_interface/scf_energy_forces}/water_128.xyz (100%) delete mode 100644 examples/latte_interface/vars delete mode 100644 examples/latte_interface/wat.pdb delete mode 100644 examples/latte_interface/wat.xyz delete mode 100644 examples/latte_interface_bomd/coords_100_2.pdb delete mode 100644 examples/latte_interface_bomd/input.in delete mode 100644 examples/latte_interface_bomd/regularbomd.py delete mode 100644 examples/latte_interface_bomd/wat.pdb delete mode 100644 examples/latte_interface_bomd/wat.xyz delete mode 100644 examples/latte_interface_energy_forces/coords_100.pdb delete mode 100644 examples/latte_interface_energy_forces/coords_1299.pdb delete mode 100644 examples/latte_interface_energy_forces/coords_2955.pdb delete mode 100644 examples/latte_interface_energy_forces/latte.in delete mode 100644 examples/latte_interface_energy_forces/main.py delete mode 100644 examples/latte_interface_energy_forces/wat.pdb delete mode 100644 examples/latte_interface_energy_forces/wat.xyz delete mode 100644 examples/latte_interface_energy_forces/water_128.xyz delete mode 100644 examples/latte_scf/coords_100.pdb delete mode 100644 examples/latte_scf/coords_1032.pdb delete mode 100644 examples/latte_scf/coords_1299.pdb delete mode 100644 examples/latte_scf/coords_2955.pdb delete mode 100644 examples/latte_scf/input.in delete mode 100644 examples/latte_scf/latte.in delete mode 100644 examples/latte_scf/main.py delete mode 100644 examples/latte_scf/vars delete mode 100644 examples/latte_scf/wat.pdb delete mode 100644 examples/latte_scf/wat.xyz delete mode 100644 examples/latte_scf/wat2.xyz delete mode 100644 examples/latte_scf/water_128.xyz delete mode 100644 src/sedacs/driver/graph_adaptive_scf_energy_forces.py diff --git a/examples/latte_interface/coords_100.pdb b/examples/latte_interface/bomd/coords_100.pdb similarity index 100% rename from examples/latte_interface/coords_100.pdb rename to examples/latte_interface/bomd/coords_100.pdb diff --git a/examples/latte_interface/coords_1299.pdb b/examples/latte_interface/bomd/coords_1299.pdb similarity index 100% rename from examples/latte_interface/coords_1299.pdb rename to examples/latte_interface/bomd/coords_1299.pdb diff --git a/examples/latte_interface/coords_2955.pdb b/examples/latte_interface/bomd/coords_2955.pdb similarity index 100% rename from examples/latte_interface/coords_2955.pdb rename to examples/latte_interface/bomd/coords_2955.pdb diff --git a/examples/latte_interface/input.in b/examples/latte_interface/bomd/input.in similarity index 91% rename from examples/latte_interface/input.in rename to examples/latte_interface/bomd/input.in index 2197b802..c31fc353 100644 --- a/examples/latte_interface/input.in +++ b/examples/latte_interface/bomd/input.in @@ -3,11 +3,9 @@ Verbosity= True Threshold= 1.0E-7 #CoordsFile= coords_1299.pdb -CoordsFile= wat.xyz #CoordsFile= algo.xyz #CoordsFile= coords_2955.pdb -#CoordsFile= coords_100.pdb -#CoordsFile= coords_1032.pdb +CoordsFile= coords_100.pdb #CoordsFile= water_128.xyz GraphThreshold= 0.01 MaxDeg= 500 #Max graph degree @@ -16,7 +14,7 @@ PartitionType= Metis #PartitionType= Regular #PartitionType= MinCut NumParts= 1 -SCFTol= 1.0E-1 +SCFTol= 1.0E-4 Overlap= True ElectronicTemperature= 1000 MuCalculationType= #FromParts, Dynamical, None diff --git a/examples/latte_interface_bomd/latte.in b/examples/latte_interface/bomd/latte.in similarity index 95% rename from examples/latte_interface_bomd/latte.in rename to examples/latte_interface/bomd/latte.in index 30ec28a4..4a5a59a2 100644 --- a/examples/latte_interface_bomd/latte.in +++ b/examples/latte_interface/bomd/latte.in @@ -11,7 +11,7 @@ LATTE INPUT FILE CONTROL{ XCONTROL= 1 BASISTYPE= NONORTHO - PARAMPATH= '../../parameters/latte/TBparam/' + PARAMPATH= '../../../parameters/latte/TBparam/' KBT= 0.0 VERBOSE= 3 ENTROPYKIND= 1 @@ -27,8 +27,8 @@ CONTROL{ RELAX= 0 RELAXTYPE= SD MAXITER= 100000 RLXFTOL= 0.0000001 SKIN= 1.0 CHARGE= 0 - XBO= 1 - XBODISON= 1 + XBO= 0 + XBODISON= 0 XBODISORDER= 5 KON= 0 DOKERNEL= F diff --git a/examples/latte_interface/bomd/main.py b/examples/latte_interface/bomd/main.py new file mode 100644 index 00000000..3406ec2e --- /dev/null +++ b/examples/latte_interface/bomd/main.py @@ -0,0 +1,295 @@ +""" +main.py +==================================== +This script runs a Born-Oppenheimer molecular dynamics (BOMD) simulation using the LATTE interface through SEDACS package. +User can enalbe shadow molecular dynamics simulation by setting the shadow_md flag to 1. + +""" + +import sys +import argparse +import math +import torch +import numpy as np +import gc + +torch.set_default_dtype(torch.float64) + +from sedacs.driver.init import init, available_device +from sedacs.driver.graph_adaptive_scf import get_adaptiveSCFDM +from sedacs.driver.graph_adaptive_sp_energy_forces import get_adaptive_sp_energy_forces +from sedacs.file_io import read_latte_tbparams +from sedacs.periodic_table import PeriodicTable +from mpi4py import MPI +from sedacs.system import build_nlist +from sedacs.graph import get_initial_graph + +#### +# Global Constants +# Coversion factor from mass*velocity^2 to kinetic energy +MVV2KE = 166.0538782 / 1.602176487 +# Conversion factor from kinetic energy to temperature +KE2T = 1.0 / 0.000086173435 +# Conversion factor from force to velocity +F2V = 0.01602176487 / 1.660548782 + + +def main(args): + """! main program""" + # Set random seed + torch.manual_seed(137) + np.random.seed(137) + # Set numpy printing threshold + np.set_printoptions(threshold=sys.maxsize) + # Initialize sedacs parameters + sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init( + args + ) + if rank == 0: + # Open files to write down information during MD simulation + MD_xyz = open("MD.xyz", "w") + Energy_dat = open("Energy.dat", "w") + # Set verbosity + sdc.verb = False + # Chemical potential + mu = args.mu + # Number of timesteps + MD_Iter = args.md_iter + # Size of the timestep + dt = args.dt + # System temperature + Temperature = args.temp + # If we want to run shadow md + shadow_md = args.shadow_md + # Initialize periodic table + pt = PeriodicTable() + # Get the atomic symbols for each atom in the system + element_type = np.array(sy.symbols)[sy.types] + # Load the LATTE tight-binding parameters + latte_tbparams = read_latte_tbparams( + "../../../parameters/latte/TBparam/electrons.dat" + ) + # Get the Hubbard U values for each atom in the system + Hubbard_U = [latte_tbparams[symbol]["HubbardU"] for symbol in sy.symbols] + Hubbard_U = np.array(Hubbard_U)[sy.types] + # Get the atomic masses for each atom in the system + Mnuc = [pt.mass[pt.get_atomic_number(symbol)] for symbol in sy.symbols] + Mnuc = np.array(Mnuc)[sy.types] + # Convert the hubbard u and atomic masses to a tensor + Hubbard_U = torch.tensor(Hubbard_U) + Mnuc = torch.tensor(Mnuc) + # Read the box size as a tensor + LBox = torch.tensor( + [sy.latticeVectors[0][0], sy.latticeVectors[1][1], sy.latticeVectors[2][2]] + ) + # Read the coordinates as tensors + coords = torch.tensor(sy.coords) + + # Perform a graph-adaptive calculation of the charges with SCF cycles + graphDH, sy.charges, mu, parts, subSysOnRank = get_adaptiveSCFDM( + sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu + ) + # Perform a single-point graph-adaptive calculation of the energy and forces + graphDH, charges, EPOT, FTOT, mu, parts, subSysOnRank = ( + get_adaptive_sp_energy_forces( + sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu + ) + ) + # Convert the charges to a tensor + q = torch.tensor(sy.charges) + # Read the number of atoms + Nr_atoms = sy.nats + # Convert the potential energy and forces to tensors + EPOT = torch.tensor(EPOT) + FTOT = torch.tensor(FTOT) + + # Initial BC for n, using the net Mulliken occupation per atom as extended electronic degrees of freedom + n = q + n_0 = q + n_1 = q + n_2 = q + n_3 = q + n_4 = q + n_5 = q + n_6 = q # Set all "old" n-vectors to the same at t = t0 + # Coefficients for modified Verlet integration + C0 = -14 + C1 = 36 + C2 = -27 + C3 = -2 + C4 = 12 + C5 = -6 + C6 = 1 + kappa = 1.84 + alpha = 0.0055 + + # Initialize velocities + V = torch.sqrt(Temperature / KE2T / MVV2KE / Mnuc).unsqueeze(1) * torch.randn_like( + coords + ) + # Compute and remvoe center of mass velocity + COM_V = torch.sum(V.T * Mnuc, axis=1) / Mnuc.sum() + V = V - COM_V + + # Record unwrapped coordsinates + unwrap_coords = coords.clone().detach().double() + + # MAIN MD LOOP {dR2(0)/dt2: V(0)->V(1/2); dn2(0)/dt2: n(0)->n(1); V(1/2): R(0)->R(1); dR2(1)/dt2: V(1/2)->V(1)} + for MD_step in range(MD_Iter): + # Calculate kinetic energy from particle velocities + EKIN = torch.sum(0.5 * MVV2KE * torch.dot(Mnuc, torch.sum(V**2, dim=1))) + # Calculate temperature from kinetic energy + Temperature = (2.0 / 3.0) * KE2T * EKIN / Nr_atoms + # Calculate the total energy from kinetic and potential energy + ETOT = EKIN.item() + EPOT + # Current time + Time = (MD_step) * dt + print( + f"Time = {Time:<16.8f} Etotal = {ETOT:<16.8f} Temperature = {Temperature:<16.8f}" + ) + + # dR2(0)/dt2: V(0)->V(1/2) + V = V + 0.5 * dt * F2V * FTOT / Mnuc.unsqueeze(1) # - 0.2 * V + if rank == 0: + # Here we record the time, temperature, and charges. Note that the last term, q, would be constant if not solving exact charges during MD + with torch.no_grad(): + Energy_dat.write( + f"{Time/1000:<16.8f} {ETOT:<16.16f} {Temperature:<16.8f} {EKIN.item():<16.16f} {EPOT.item():<16.16f}\n" + ) + + # Here we dump the MD trajectory + if (Time % 50) == 49: + # MD_xyz.write(f'## MD_step= {MD_step}\n') + MD_xyz.write(f"{Nr_atoms}\n\n") + for I in range(Nr_atoms): + MD_xyz.write( + f"{element_type[I].item()} {sy.coords[I, 0].item()} {sy.coords[I, 1].item()} {sy.coords[I, 2].item()} {sy.charges[I]}\n" + ) + MD_xyz.flush() + Energy_dat.flush() + + if numranks > 1 and (Time % 10) == 9: + coords_sum = torch.zeros_like(coords) + comm.Allreduce(coords, coords_sum, op=MPI.SUM) + coords = coords_sum / numranks + + # Propagating charge vector n for a better initial guess + # Or Propagating charge vector for shadow MD + n = ( + 2 * n_0 + - n_1 + + 0.8 * kappa * (q - n_0) + + alpha + * ( + C0 * n_0 + + C1 * n_1 + + C2 * n_2 + + C3 * n_3 + + C4 * n_4 + + C5 * n_5 + + C6 * n_6 + ) + ) + # breakpoint() + n_6 = n_5 + n_5 = n_4 + n_4 = n_3 + n_3 = n_2 + n_2 = n_1 + n_1 = n_0 + n_0 = n + sy.charges = n.numpy() + + # Update positions with full Verlet step for R + disp = dt * V + coords = coords + disp + with torch.no_grad(): + unwrap_coords = unwrap_coords + disp + # Reset coordinates within the periodic box + coords = coords - LBox * torch.floor(coords / LBox) + # Update sy.coords in the system object + sy.coords = coords.numpy() + # Update neighbor list + nl, nlTrX, nlTrY, nlTrZ = build_nlist( + sy.coords, + sy.latticeVectors, + sdc.rcut, + api="old", + rank=rank, + numranks=numranks, + verb=False, + ) + comm.Barrier() + # Create initial graph based on distances + if rank == 0: + graphNL = get_initial_graph(sy.coords, nl, sdc.rcut, sdc.maxDeg) + graphNL = comm.bcast(graphNL, root=0) + if not shadow_md: + # Perform a graph-adaptive calculation of the charges with SCF cycles + graphDH, sy.charges, mu, parts, subSysOnRank = get_adaptiveSCFDM( + sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu + ) + # Perform a single-point graph-adaptive calculation of the energy and forces + graphDH, sy.charges, EPOT, FTOT, mu, parts, subSysOnRank = ( + get_adaptive_sp_energy_forces( + sdc, + eng, + comm, + rank, + numranks, + sy, + hindex, + graphDH, + mu, + shadow_md=shadow_md, + ) + ) + q = torch.tensor(sy.charges) + # Convert the energy and forces to tensors + EPOT = torch.tensor(EPOT) + FTOT = torch.tensor(FTOT) + + # dR2(1)/dt2: V(1/2)->V(1) + V = V + 0.5 * dt * F2V * FTOT / Mnuc.unsqueeze(1) + + MD_xyz.close() + Energy_dat.close() + + +if __name__ == "__main__": + # Pass arguments from command line + parser = argparse.ArgumentParser( + description="Regular Born-Oppenheimer MD with sedacs" + ) + parser.add_argument( + "--use-torch", help="Use pytorch", required=False, action="store_true" + ) + parser.add_argument( + "--input-file", + help="Specify input file", + required=False, + type=str, + default="input.in", + ) + parser.add_argument( + "--md_iter", type=int, default=100000, help="Number of timesteps" + ) + parser.add_argument("--dt", type=float, default=0.5, help="Timestep size (fs)") + parser.add_argument( + "--temp", type=float, default=0.0, help="Initial system temperature (K)" + ) + parser.add_argument( + "--mu", type=float, default=0.0, help="Initial Chemical potential (eV)" + ) + parser.add_argument( + "--shadow_md", + type=int, + default=1, + help="Set to 1/0 to enable/disable shadow MD", + ) + args = parser.parse_args() + if args.use_torch: + args.device = available_device() + + print("Start running MD......") + main(args) diff --git a/examples/latte_interface_bomd/vars b/examples/latte_interface/bomd/vars similarity index 62% rename from examples/latte_interface_bomd/vars rename to examples/latte_interface/bomd/vars index c6116796..a1ab5dff 100644 --- a/examples/latte_interface_bomd/vars +++ b/examples/latte_interface/bomd/vars @@ -1,12 +1,12 @@ #!/bin/bash THIS_PATH=`pwd` export PYTHONPATH="" -MOD_PATH=$THIS_PATH/../../src/sedacs/ -MOD_PATH1=$THIS_PATH/../../src/ -MOD_PATH2=$THIS_PATH/../../src/sedacs/driver -PROXYA_FORTRAN_PATH=$THIS_PATH/../../proxies/fortran/build/ -PROXYA_PYTHON_FILES=$THIS_PATH/../../proxies/python/ -PROXYA_PYTHON_FOLDER=$THIS_PATH/../../ +MOD_PATH=$THIS_PATH/../../../src/sedacs/ +MOD_PATH1=$THIS_PATH/../../../src/ +MOD_PATH2=$THIS_PATH/../../../src/sedacs/driver +PROXYA_FORTRAN_PATH=$THIS_PATH/../../../proxies/fortran/build/ +PROXYA_PYTHON_FILES=$THIS_PATH/../../../proxies/python/ +PROXYA_PYTHON_FOLDER=$THIS_PATH/../../../ PROGRESS_PATH=$HOME/qmd-progress/install/lib64/ BML_PATH=$HOME/bml/install/lib64/ export PROXYA_FORTRAN_PATH=$PROXYA_FORTRAN_PATH @@ -15,7 +15,7 @@ export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$MOD_PATH1:$MOD_PATH2:$PROGRESS_PATH:$BM export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROGRESS_PATH:$BML_PATH export PYTHONWARNINGS="ignore:Unverified HTTPS request" -GPU_PATH=$THIS_PATH/../../src/sedacs/gpu +GPU_PATH=$THIS_PATH/../../../src/sedacs/gpu echo $GPU_PATH export PYTHONPATH=$PYTHONPATH:$GPU_PATH diff --git a/examples/latte_interface/water_128.xyz b/examples/latte_interface/bomd/water_128.xyz similarity index 100% rename from examples/latte_interface/water_128.xyz rename to examples/latte_interface/bomd/water_128.xyz diff --git a/examples/latte_interface/coords_1032.pdb b/examples/latte_interface/coords_1032.pdb deleted file mode 100644 index 549a703b..00000000 --- a/examples/latte_interface/coords_1032.pdb +++ /dev/null @@ -1,1038 +0,0 @@ -TITLE my_single_water.xyz -REMARK THIS IS A SIMULATION BOX -CRYST1 21.830 21.830 21.830 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 O HOH 1 10.727 10.734 10.915 1.00 0.00 O -ATOM 2 H HOH 0 10.309 11.595 10.915 1.00 0.00 H -ATOM 3 H HOH 0 11.708 10.415 10.915 1.00 0.00 H -ATOM 4 OW SOL 1 2.250 2.750 9.961 1.00 0.00 O -ATOM 5 HW1 SOL 1 2.600 2.580 10.881 1.00 0.00 H -ATOM 6 HW2 SOL 1 1.370 2.300 9.841 1.00 0.00 H -ATOM 7 OW SOL 2 5.690 12.751 11.651 1.00 0.00 O -ATOM 8 HW1 SOL 2 4.760 12.681 11.281 1.00 0.00 H -ATOM 9 HW2 SOL 2 5.800 13.641 12.091 1.00 0.00 H -ATOM 10 OW SOL 3 15.551 15.111 7.030 1.00 0.00 O -ATOM 11 HW1 SOL 3 14.981 14.951 7.840 1.00 0.00 H -ATOM 12 HW2 SOL 3 14.961 15.211 6.230 1.00 0.00 H -ATOM 13 OW SOL 4 17.431 6.180 8.560 1.00 0.00 O -ATOM 14 HW1 SOL 4 17.761 7.120 8.560 1.00 0.00 H -ATOM 15 HW2 SOL 4 17.941 5.640 9.220 1.00 0.00 H -ATOM 16 OW SOL 5 11.351 7.030 7.170 1.00 0.00 O -ATOM 17 HW1 SOL 5 11.921 7.810 6.920 1.00 0.00 H -ATOM 18 HW2 SOL 5 10.751 7.290 7.930 1.00 0.00 H -ATOM 19 OW SOL 6 17.551 6.070 2.310 1.00 0.00 O -ATOM 20 HW1 SOL 6 17.431 5.940 1.320 1.00 0.00 H -ATOM 21 HW2 SOL 6 17.251 5.260 2.800 1.00 0.00 H -ATOM 22 OW SOL 7 7.680 11.441 10.231 1.00 0.00 O -ATOM 23 HW1 SOL 7 6.900 11.611 10.831 1.00 0.00 H -ATOM 24 HW2 SOL 7 8.020 12.311 9.871 1.00 0.00 H -ATOM 25 OW SOL 8 8.500 7.980 18.231 1.00 0.00 O -ATOM 26 HW1 SOL 8 8.460 8.740 18.881 1.00 0.00 H -ATOM 27 HW2 SOL 8 8.720 8.340 17.321 1.00 0.00 H -ATOM 28 OW SOL 9 6.850 10.121 6.650 1.00 0.00 O -ATOM 29 HW1 SOL 9 7.540 9.961 7.350 1.00 0.00 H -ATOM 30 HW2 SOL 9 6.120 10.691 7.030 1.00 0.00 H -ATOM 31 OW SOL 10 6.860 11.611 18.031 1.00 0.00 O -ATOM 32 HW1 SOL 10 7.460 12.401 18.171 1.00 0.00 H -ATOM 33 HW2 SOL 10 6.000 11.921 17.621 1.00 0.00 H -ATOM 34 OW SOL 11 3.350 14.351 10.611 1.00 0.00 O -ATOM 35 HW1 SOL 11 2.570 14.041 10.081 1.00 0.00 H -ATOM 36 HW2 SOL 11 3.930 14.931 10.041 1.00 0.00 H -ATOM 37 OW SOL 12 14.601 15.051 13.391 1.00 0.00 O -ATOM 38 HW1 SOL 12 14.841 15.991 13.651 1.00 0.00 H -ATOM 39 HW2 SOL 12 14.441 14.511 14.211 1.00 0.00 H -ATOM 40 OW SOL 13 4.380 3.920 14.991 1.00 0.00 O -ATOM 41 HW1 SOL 13 5.200 3.360 15.081 1.00 0.00 H -ATOM 42 HW2 SOL 13 3.570 3.340 15.031 1.00 0.00 H -ATOM 43 OW SOL 14 2.310 17.131 4.830 1.00 0.00 O -ATOM 44 HW1 SOL 14 2.650 17.901 5.370 1.00 0.00 H -ATOM 45 HW2 SOL 14 2.750 17.131 3.930 1.00 0.00 H -ATOM 46 OW SOL 15 11.271 13.411 16.901 1.00 0.00 O -ATOM 47 HW1 SOL 15 11.741 13.411 17.781 1.00 0.00 H -ATOM 48 HW2 SOL 15 10.791 12.541 16.791 1.00 0.00 H -ATOM 49 OW SOL 16 2.300 14.341 5.380 1.00 0.00 O -ATOM 50 HW1 SOL 16 2.040 15.301 5.380 1.00 0.00 H -ATOM 51 HW2 SOL 16 1.590 13.801 5.830 1.00 0.00 H -ATOM 52 OW SOL 17 2.400 10.911 8.860 1.00 0.00 O -ATOM 53 HW1 SOL 17 2.540 10.071 9.380 1.00 0.00 H -ATOM 54 HW2 SOL 17 1.850 11.551 9.410 1.00 0.00 H -ATOM 55 OW SOL 18 6.200 17.861 14.391 1.00 0.00 O -ATOM 56 HW1 SOL 18 5.280 17.691 14.741 1.00 0.00 H -ATOM 57 HW2 SOL 18 6.480 18.781 14.651 1.00 0.00 H -ATOM 58 OW SOL 19 6.060 9.641 1.230 1.00 0.00 O -ATOM 59 HW1 SOL 19 6.130 10.481 0.690 1.00 0.00 H -ATOM 60 HW2 SOL 19 6.520 9.771 2.110 1.00 0.00 H -ATOM 61 OW SOL 20 15.941 1.140 14.801 1.00 0.00 O -ATOM 62 HW1 SOL 20 15.761 1.810 14.081 1.00 0.00 H -ATOM 63 HW2 SOL 20 15.911 1.600 15.691 1.00 0.00 H -ATOM 64 OW SOL 21 18.421 17.671 3.590 1.00 0.00 O -ATOM 65 HW1 SOL 21 18.961 17.381 4.390 1.00 0.00 H -ATOM 66 HW2 SOL 21 18.721 18.571 3.300 1.00 0.00 H -ATOM 67 OW SOL 22 16.891 9.220 6.120 1.00 0.00 O -ATOM 68 HW1 SOL 22 17.841 8.930 6.200 1.00 0.00 H -ATOM 69 HW2 SOL 22 16.811 9.870 5.370 1.00 0.00 H -ATOM 70 OW SOL 23 16.411 11.081 4.320 1.00 0.00 O -ATOM 71 HW1 SOL 23 17.271 11.101 3.800 1.00 0.00 H -ATOM 72 HW2 SOL 23 16.551 11.551 5.200 1.00 0.00 H -ATOM 73 OW SOL 24 1.130 7.370 15.971 1.00 0.00 O -ATOM 74 HW1 SOL 24 2.010 7.240 16.421 1.00 0.00 H -ATOM 75 HW2 SOL 24 1.000 8.340 15.751 1.00 0.00 H -ATOM 76 OW SOL 25 6.130 13.651 7.260 1.00 0.00 O -ATOM 77 HW1 SOL 25 5.640 12.781 7.350 1.00 0.00 H -ATOM 78 HW2 SOL 25 5.900 14.081 6.390 1.00 0.00 H -ATOM 79 OW SOL 26 12.931 12.281 14.231 1.00 0.00 O -ATOM 80 HW1 SOL 26 13.301 11.551 13.651 1.00 0.00 H -ATOM 81 HW2 SOL 26 13.451 12.331 15.081 1.00 0.00 H -ATOM 82 OW SOL 27 8.090 0.040 5.020 1.00 0.00 O -ATOM 83 HW1 SOL 27 8.490 0.950 4.930 1.00 0.00 H -ATOM 84 HW2 SOL 27 7.090 0.120 5.080 1.00 0.00 H -ATOM 85 OW SOL 28 15.251 9.991 1.900 1.00 0.00 O -ATOM 86 HW1 SOL 28 14.621 9.231 2.030 1.00 0.00 H -ATOM 87 HW2 SOL 28 15.731 10.171 2.760 1.00 0.00 H -ATOM 88 OW SOL 29 11.871 17.921 16.161 1.00 0.00 O -ATOM 89 HW1 SOL 29 12.111 18.521 15.401 1.00 0.00 H -ATOM 90 HW2 SOL 29 11.941 16.971 15.861 1.00 0.00 H -ATOM 91 OW SOL 30 3.170 2.510 18.011 1.00 0.00 O -ATOM 92 HW1 SOL 30 3.880 3.220 18.071 1.00 0.00 H -ATOM 93 HW2 SOL 30 2.290 2.900 18.291 1.00 0.00 H -ATOM 94 OW SOL 31 14.661 14.171 9.531 1.00 0.00 O -ATOM 95 HW1 SOL 31 14.071 14.231 10.331 1.00 0.00 H -ATOM 96 HW2 SOL 31 14.511 13.291 9.071 1.00 0.00 H -ATOM 97 OW SOL 32 16.671 17.141 5.720 1.00 0.00 O -ATOM 98 HW1 SOL 32 16.261 16.911 4.840 1.00 0.00 H -ATOM 99 HW2 SOL 32 16.491 16.401 6.370 1.00 0.00 H -ATOM 100 OW SOL 33 5.980 7.290 2.700 1.00 0.00 O -ATOM 101 HW1 SOL 33 6.220 7.980 2.020 1.00 0.00 H -ATOM 102 HW2 SOL 33 5.200 7.620 3.240 1.00 0.00 H -ATOM 103 OW SOL 34 12.811 3.450 9.441 1.00 0.00 O -ATOM 104 HW1 SOL 34 11.951 2.950 9.311 1.00 0.00 H -ATOM 105 HW2 SOL 34 13.431 2.910 10.001 1.00 0.00 H -ATOM 106 OW SOL 35 15.761 16.621 3.070 1.00 0.00 O -ATOM 107 HW1 SOL 35 16.651 17.081 3.100 1.00 0.00 H -ATOM 108 HW2 SOL 35 15.551 16.381 2.120 1.00 0.00 H -ATOM 109 OW SOL 36 8.070 6.050 14.651 1.00 0.00 O -ATOM 110 HW1 SOL 36 7.600 6.020 15.541 1.00 0.00 H -ATOM 111 HW2 SOL 36 7.560 5.500 13.991 1.00 0.00 H -ATOM 112 OW SOL 37 13.941 4.690 16.741 1.00 0.00 O -ATOM 113 HW1 SOL 37 13.741 5.120 17.621 1.00 0.00 H -ATOM 114 HW2 SOL 37 14.721 4.070 16.831 1.00 0.00 H -ATOM 115 OW SOL 38 9.731 8.900 15.721 1.00 0.00 O -ATOM 116 HW1 SOL 38 10.191 8.060 15.431 1.00 0.00 H -ATOM 117 HW2 SOL 38 9.171 9.240 14.971 1.00 0.00 H -ATOM 118 OW SOL 39 9.911 4.100 12.421 1.00 0.00 O -ATOM 119 HW1 SOL 39 9.141 4.440 12.961 1.00 0.00 H -ATOM 120 HW2 SOL 39 9.571 3.590 11.631 1.00 0.00 H -ATOM 121 OW SOL 40 10.411 7.010 4.290 1.00 0.00 O -ATOM 122 HW1 SOL 40 10.671 6.970 5.250 1.00 0.00 H -ATOM 123 HW2 SOL 40 9.561 6.500 4.150 1.00 0.00 H -ATOM 124 OW SOL 41 0.760 8.110 7.890 1.00 0.00 O -ATOM 125 HW1 SOL 41 1.750 7.990 7.980 1.00 0.00 H -ATOM 126 HW2 SOL 41 0.520 9.060 8.100 1.00 0.00 H -ATOM 127 OW SOL 42 8.650 3.480 1.950 1.00 0.00 O -ATOM 128 HW1 SOL 42 9.240 4.110 1.460 1.00 0.00 H -ATOM 129 HW2 SOL 42 8.840 2.540 1.660 1.00 0.00 H -ATOM 130 OW SOL 43 17.191 5.850 18.311 1.00 0.00 O -ATOM 131 HW1 SOL 43 16.931 6.740 17.951 1.00 0.00 H -ATOM 132 HW2 SOL 43 17.171 5.170 17.581 1.00 0.00 H -ATOM 133 OW SOL 44 13.621 11.441 5.450 1.00 0.00 O -ATOM 134 HW1 SOL 44 14.451 11.151 4.970 1.00 0.00 H -ATOM 135 HW2 SOL 44 13.131 12.111 4.890 1.00 0.00 H -ATOM 136 OW SOL 45 5.500 1.960 8.850 1.00 0.00 O -ATOM 137 HW1 SOL 45 5.450 1.910 9.850 1.00 0.00 H -ATOM 138 HW2 SOL 45 5.520 2.920 8.560 1.00 0.00 H -ATOM 139 OW SOL 46 10.081 14.561 4.770 1.00 0.00 O -ATOM 140 HW1 SOL 46 9.621 15.281 4.250 1.00 0.00 H -ATOM 141 HW2 SOL 46 10.041 14.761 5.750 1.00 0.00 H -ATOM 142 OW SOL 47 3.510 18.011 8.530 1.00 0.00 O -ATOM 143 HW1 SOL 47 4.010 17.151 8.590 1.00 0.00 H -ATOM 144 HW2 SOL 47 4.160 18.781 8.500 1.00 0.00 H -ATOM 145 OW SOL 48 17.951 10.661 8.730 1.00 0.00 O -ATOM 146 HW1 SOL 48 17.331 10.511 7.970 1.00 0.00 H -ATOM 147 HW2 SOL 48 17.431 10.771 9.580 1.00 0.00 H -ATOM 148 OW SOL 49 12.271 15.501 15.061 1.00 0.00 O -ATOM 149 HW1 SOL 49 12.331 14.731 15.701 1.00 0.00 H -ATOM 150 HW2 SOL 49 11.751 15.241 14.261 1.00 0.00 H -ATOM 151 OW SOL 50 3.210 9.431 2.420 1.00 0.00 O -ATOM 152 HW1 SOL 50 4.030 9.821 2.000 1.00 0.00 H -ATOM 153 HW2 SOL 50 2.940 8.611 1.930 1.00 0.00 H -ATOM 154 OW SOL 51 14.581 7.350 7.280 1.00 0.00 O -ATOM 155 HW1 SOL 51 14.531 6.700 8.030 1.00 0.00 H -ATOM 156 HW2 SOL 51 15.381 7.940 7.410 1.00 0.00 H -ATOM 157 OW SOL 52 4.610 12.661 17.271 1.00 0.00 O -ATOM 158 HW1 SOL 52 4.110 12.671 16.411 1.00 0.00 H -ATOM 159 HW2 SOL 52 3.980 12.481 18.031 1.00 0.00 H -ATOM 160 OW SOL 53 11.111 17.761 2.370 1.00 0.00 O -ATOM 161 HW1 SOL 53 10.511 17.141 2.870 1.00 0.00 H -ATOM 162 HW2 SOL 53 11.421 17.321 1.520 1.00 0.00 H -ATOM 163 OW SOL 54 2.020 2.850 14.981 1.00 0.00 O -ATOM 164 HW1 SOL 54 1.220 3.450 14.851 1.00 0.00 H -ATOM 165 HW2 SOL 54 1.920 2.360 15.841 1.00 0.00 H -ATOM 166 OW SOL 55 16.321 13.771 0.810 1.00 0.00 O -ATOM 167 HW1 SOL 55 16.001 14.711 0.710 1.00 0.00 H -ATOM 168 HW2 SOL 55 15.561 13.141 0.690 1.00 0.00 H -ATOM 169 OW SOL 56 4.640 17.431 3.230 1.00 0.00 O -ATOM 170 HW1 SOL 56 4.970 17.821 4.090 1.00 0.00 H -ATOM 171 HW2 SOL 56 5.400 17.361 2.580 1.00 0.00 H -ATOM 172 OW SOL 57 14.001 1.070 4.260 1.00 0.00 O -ATOM 173 HW1 SOL 57 13.761 0.700 3.360 1.00 0.00 H -ATOM 174 HW2 SOL 57 14.991 1.230 4.300 1.00 0.00 H -ATOM 175 OW SOL 58 2.490 17.851 12.411 1.00 0.00 O -ATOM 176 HW1 SOL 58 3.060 17.201 12.911 1.00 0.00 H -ATOM 177 HW2 SOL 58 2.330 17.521 11.481 1.00 0.00 H -ATOM 178 OW SOL 59 9.401 16.981 9.040 1.00 0.00 O -ATOM 179 HW1 SOL 59 10.201 16.411 9.250 1.00 0.00 H -ATOM 180 HW2 SOL 59 8.911 16.581 8.270 1.00 0.00 H -ATOM 181 OW SOL 60 3.820 7.000 4.800 1.00 0.00 O -ATOM 182 HW1 SOL 60 4.270 6.100 4.770 1.00 0.00 H -ATOM 183 HW2 SOL 60 2.880 6.890 5.130 1.00 0.00 H -ATOM 184 OW SOL 61 15.471 2.220 17.291 1.00 0.00 O -ATOM 185 HW1 SOL 61 15.421 2.590 18.211 1.00 0.00 H -ATOM 186 HW2 SOL 61 14.751 1.530 17.171 1.00 0.00 H -ATOM 187 OW SOL 62 6.140 1.220 1.170 1.00 0.00 O -ATOM 188 HW1 SOL 62 7.120 1.000 1.240 1.00 0.00 H -ATOM 189 HW2 SOL 62 5.830 1.050 0.240 1.00 0.00 H -ATOM 190 OW SOL 63 7.810 2.640 17.491 1.00 0.00 O -ATOM 191 HW1 SOL 63 8.480 2.030 17.921 1.00 0.00 H -ATOM 192 HW2 SOL 63 7.080 2.830 18.141 1.00 0.00 H -ATOM 193 OW SOL 64 8.880 15.141 11.951 1.00 0.00 O -ATOM 194 HW1 SOL 64 8.650 14.891 11.011 1.00 0.00 H -ATOM 195 HW2 SOL 64 9.490 14.451 12.341 1.00 0.00 H -ATOM 196 OW SOL 65 13.511 5.900 14.331 1.00 0.00 O -ATOM 197 HW1 SOL 65 13.791 5.470 15.181 1.00 0.00 H -ATOM 198 HW2 SOL 65 13.761 6.860 14.341 1.00 0.00 H -ATOM 199 OW SOL 66 8.030 14.021 9.240 1.00 0.00 O -ATOM 200 HW1 SOL 66 8.930 14.161 8.820 1.00 0.00 H -ATOM 201 HW2 SOL 66 7.320 14.041 8.530 1.00 0.00 H -ATOM 202 OW SOL 67 9.220 5.030 8.990 1.00 0.00 O -ATOM 203 HW1 SOL 67 8.970 4.940 8.030 1.00 0.00 H -ATOM 204 HW2 SOL 67 9.700 4.210 9.300 1.00 0.00 H -ATOM 205 OW SOL 68 5.390 0.640 5.120 1.00 0.00 O -ATOM 206 HW1 SOL 68 4.580 0.650 5.700 1.00 0.00 H -ATOM 207 HW2 SOL 68 5.420 1.470 4.570 1.00 0.00 H -ATOM 208 OW SOL 69 14.341 11.881 0.410 1.00 0.00 O -ATOM 209 HW1 SOL 69 14.661 11.121 0.980 1.00 0.00 H -ATOM 210 HW2 SOL 69 13.421 12.151 0.710 1.00 0.00 H -ATOM 211 OW SOL 70 9.351 2.360 4.800 1.00 0.00 O -ATOM 212 HW1 SOL 70 8.871 2.770 4.020 1.00 0.00 H -ATOM 213 HW2 SOL 70 10.341 2.340 4.610 1.00 0.00 H -ATOM 214 OW SOL 71 10.761 6.830 14.641 1.00 0.00 O -ATOM 215 HW1 SOL 71 9.961 6.220 14.671 1.00 0.00 H -ATOM 216 HW2 SOL 71 11.571 6.300 14.401 1.00 0.00 H -ATOM 217 OW SOL 72 12.271 15.701 7.930 1.00 0.00 O -ATOM 218 HW1 SOL 72 12.481 16.441 7.280 1.00 0.00 H -ATOM 219 HW2 SOL 72 12.951 15.701 8.660 1.00 0.00 H -ATOM 220 OW SOL 73 4.590 11.521 7.410 1.00 0.00 O -ATOM 221 HW1 SOL 73 3.880 11.251 8.060 1.00 0.00 H -ATOM 222 HW2 SOL 73 4.330 11.241 6.480 1.00 0.00 H -ATOM 223 OW SOL 74 12.711 17.971 5.910 1.00 0.00 O -ATOM 224 HW1 SOL 74 13.151 18.611 5.270 1.00 0.00 H -ATOM 225 HW2 SOL 74 12.211 18.491 6.610 1.00 0.00 H -ATOM 226 OW SOL 75 10.321 5.490 0.160 1.00 0.00 O -ATOM 227 HW1 SOL 75 9.911 6.310 -0.230 1.00 0.00 H -ATOM 228 HW2 SOL 75 10.961 5.750 0.890 1.00 0.00 H -ATOM 229 OW SOL 76 5.610 2.220 11.471 1.00 0.00 O -ATOM 230 HW1 SOL 76 5.990 1.380 11.841 1.00 0.00 H -ATOM 231 HW2 SOL 76 4.730 2.410 11.911 1.00 0.00 H -ATOM 232 OW SOL 77 8.660 4.540 6.420 1.00 0.00 O -ATOM 233 HW1 SOL 77 8.340 5.260 5.800 1.00 0.00 H -ATOM 234 HW2 SOL 77 8.900 3.730 5.890 1.00 0.00 H -ATOM 235 OW SOL 78 10.171 0.390 7.530 1.00 0.00 O -ATOM 236 HW1 SOL 78 9.451 0.440 6.840 1.00 0.00 H -ATOM 237 HW2 SOL 78 9.931 -0.300 8.220 1.00 0.00 H -ATOM 238 OW SOL 79 14.291 11.731 8.670 1.00 0.00 O -ATOM 239 HW1 SOL 79 13.741 10.891 8.600 1.00 0.00 H -ATOM 240 HW2 SOL 79 14.551 12.021 7.750 1.00 0.00 H -ATOM 241 OW SOL 80 14.661 5.900 9.921 1.00 0.00 O -ATOM 242 HW1 SOL 80 14.361 4.950 9.991 1.00 0.00 H -ATOM 243 HW2 SOL 80 15.391 6.060 10.581 1.00 0.00 H -ATOM 244 OW SOL 81 18.571 8.330 3.770 1.00 0.00 O -ATOM 245 HW1 SOL 81 18.991 7.690 4.410 1.00 0.00 H -ATOM 246 HW2 SOL 81 18.191 7.820 2.990 1.00 0.00 H -ATOM 247 OW SOL 82 4.880 13.851 1.740 1.00 0.00 O -ATOM 248 HW1 SOL 82 4.010 13.701 2.210 1.00 0.00 H -ATOM 249 HW2 SOL 82 4.710 14.111 0.790 1.00 0.00 H -ATOM 250 OW SOL 83 16.641 12.801 6.570 1.00 0.00 O -ATOM 251 HW1 SOL 83 17.631 12.881 6.710 1.00 0.00 H -ATOM 252 HW2 SOL 83 16.191 13.641 6.880 1.00 0.00 H -ATOM 253 OW SOL 84 13.901 5.750 0.780 1.00 0.00 O -ATOM 254 HW1 SOL 84 13.361 5.540 1.590 1.00 0.00 H -ATOM 255 HW2 SOL 84 14.811 5.340 0.870 1.00 0.00 H -ATOM 256 OW SOL 85 5.270 2.560 3.280 1.00 0.00 O -ATOM 257 HW1 SOL 85 5.540 1.970 2.530 1.00 0.00 H -ATOM 258 HW2 SOL 85 5.270 3.510 2.970 1.00 0.00 H -ATOM 259 OW SOL 86 17.541 12.231 15.881 1.00 0.00 O -ATOM 260 HW1 SOL 86 18.451 11.841 15.751 1.00 0.00 H -ATOM 261 HW2 SOL 86 17.621 13.191 16.121 1.00 0.00 H -ATOM 262 OW SOL 87 10.641 13.471 13.401 1.00 0.00 O -ATOM 263 HW1 SOL 87 9.841 13.241 13.951 1.00 0.00 H -ATOM 264 HW2 SOL 87 11.471 13.211 13.891 1.00 0.00 H -ATOM 265 OW SOL 88 15.921 16.291 16.251 1.00 0.00 O -ATOM 266 HW1 SOL 88 16.191 16.631 15.351 1.00 0.00 H -ATOM 267 HW2 SOL 88 16.711 15.911 16.711 1.00 0.00 H -ATOM 268 OW SOL 89 16.381 10.991 10.791 1.00 0.00 O -ATOM 269 HW1 SOL 89 16.431 11.801 11.381 1.00 0.00 H -ATOM 270 HW2 SOL 89 15.521 11.011 10.281 1.00 0.00 H -ATOM 271 OW SOL 90 9.150 0.890 14.021 1.00 0.00 O -ATOM 272 HW1 SOL 90 9.400 0.690 13.071 1.00 0.00 H -ATOM 273 HW2 SOL 90 9.870 1.450 14.441 1.00 0.00 H -ATOM 274 OW SOL 91 9.801 11.161 17.191 1.00 0.00 O -ATOM 275 HW1 SOL 91 8.811 11.221 17.291 1.00 0.00 H -ATOM 276 HW2 SOL 91 10.031 10.361 16.631 1.00 0.00 H -ATOM 277 OW SOL 92 7.050 10.501 3.680 1.00 0.00 O -ATOM 278 HW1 SOL 92 6.910 10.571 4.670 1.00 0.00 H -ATOM 279 HW2 SOL 92 7.890 9.991 3.500 1.00 0.00 H -ATOM 280 OW SOL 93 4.100 8.130 12.511 1.00 0.00 O -ATOM 281 HW1 SOL 93 4.960 8.250 13.011 1.00 0.00 H -ATOM 282 HW2 SOL 93 3.680 7.260 12.781 1.00 0.00 H -ATOM 283 OW SOL 94 12.741 3.860 12.621 1.00 0.00 O -ATOM 284 HW1 SOL 94 12.951 4.600 13.261 1.00 0.00 H -ATOM 285 HW2 SOL 94 11.851 4.030 12.191 1.00 0.00 H -ATOM 286 OW SOL 95 0.640 15.641 13.311 1.00 0.00 O -ATOM 287 HW1 SOL 95 0.180 16.461 12.971 1.00 0.00 H -ATOM 288 HW2 SOL 95 1.620 15.831 13.401 1.00 0.00 H -ATOM 289 OW SOL 96 3.670 11.001 5.010 1.00 0.00 O -ATOM 290 HW1 SOL 96 3.600 11.831 4.450 1.00 0.00 H -ATOM 291 HW2 SOL 96 3.710 10.201 4.410 1.00 0.00 H -ATOM 292 OW SOL 97 5.660 5.370 8.650 1.00 0.00 O -ATOM 293 HW1 SOL 97 5.780 6.030 7.910 1.00 0.00 H -ATOM 294 HW2 SOL 97 6.120 5.710 9.480 1.00 0.00 H -ATOM 295 OW SOL 98 12.521 13.481 3.880 1.00 0.00 O -ATOM 296 HW1 SOL 98 13.021 14.251 4.280 1.00 0.00 H -ATOM 297 HW2 SOL 98 11.571 13.501 4.200 1.00 0.00 H -ATOM 298 OW SOL 99 12.721 14.451 11.421 1.00 0.00 O -ATOM 299 HW1 SOL 99 13.191 14.581 12.291 1.00 0.00 H -ATOM 300 HW2 SOL 99 12.061 13.711 11.511 1.00 0.00 H -ATOM 301 OW SOL 100 15.821 6.390 4.720 1.00 0.00 O -ATOM 302 HW1 SOL 100 15.511 7.000 5.450 1.00 0.00 H -ATOM 303 HW2 SOL 100 16.321 6.910 4.030 1.00 0.00 H -ATOM 304 OW SOL 101 3.540 15.101 13.291 1.00 0.00 O -ATOM 305 HW1 SOL 101 3.330 14.661 12.421 1.00 0.00 H -ATOM 306 HW2 SOL 101 4.510 15.361 13.321 1.00 0.00 H -ATOM 307 OW SOL 102 4.020 7.510 15.981 1.00 0.00 O -ATOM 308 HW1 SOL 102 4.700 8.060 15.511 1.00 0.00 H -ATOM 309 HW2 SOL 102 4.420 6.630 16.251 1.00 0.00 H -ATOM 310 OW SOL 103 15.871 7.790 16.701 1.00 0.00 O -ATOM 311 HW1 SOL 103 14.951 8.170 16.651 1.00 0.00 H -ATOM 312 HW2 SOL 103 16.471 8.260 16.051 1.00 0.00 H -ATOM 313 OW SOL 104 10.131 1.050 17.701 1.00 0.00 O -ATOM 314 HW1 SOL 104 10.191 1.900 17.181 1.00 0.00 H -ATOM 315 HW2 SOL 104 10.451 0.290 17.131 1.00 0.00 H -ATOM 316 OW SOL 105 5.040 0.500 17.401 1.00 0.00 O -ATOM 317 HW1 SOL 105 4.620 -0.070 16.701 1.00 0.00 H -ATOM 318 HW2 SOL 105 4.380 1.190 17.721 1.00 0.00 H -ATOM 319 OW SOL 106 5.730 8.700 10.291 1.00 0.00 O -ATOM 320 HW1 SOL 106 6.170 9.590 10.201 1.00 0.00 H -ATOM 321 HW2 SOL 106 5.100 8.700 11.061 1.00 0.00 H -ATOM 322 OW SOL 107 13.601 8.620 10.451 1.00 0.00 O -ATOM 323 HW1 SOL 107 12.851 8.620 9.791 1.00 0.00 H -ATOM 324 HW2 SOL 107 13.971 7.700 10.541 1.00 0.00 H -ATOM 325 OW SOL 108 12.091 5.250 2.750 1.00 0.00 O -ATOM 326 HW1 SOL 108 12.221 4.410 3.290 1.00 0.00 H -ATOM 327 HW2 SOL 108 11.801 5.990 3.350 1.00 0.00 H -ATOM 328 OW SOL 109 3.070 2.130 12.311 1.00 0.00 O -ATOM 329 HW1 SOL 109 2.840 2.500 13.211 1.00 0.00 H -ATOM 330 HW2 SOL 109 2.770 1.180 12.251 1.00 0.00 H -ATOM 331 OW SOL 110 7.320 6.340 10.641 1.00 0.00 O -ATOM 332 HW1 SOL 110 7.910 6.080 9.881 1.00 0.00 H -ATOM 333 HW2 SOL 110 7.040 7.300 10.531 1.00 0.00 H -ATOM 334 OW SOL 111 17.281 9.351 18.541 1.00 0.00 O -ATOM 335 HW1 SOL 111 16.821 9.281 17.651 1.00 0.00 H -ATOM 336 HW2 SOL 111 16.661 9.791 19.201 1.00 0.00 H -ATOM 337 OW SOL 112 3.070 0.630 6.180 1.00 0.00 O -ATOM 338 HW1 SOL 112 2.960 1.570 6.510 1.00 0.00 H -ATOM 339 HW2 SOL 112 3.020 0.000 6.950 1.00 0.00 H -ATOM 340 OW SOL 113 16.221 3.670 3.740 1.00 0.00 O -ATOM 341 HW1 SOL 113 16.241 2.910 4.380 1.00 0.00 H -ATOM 342 HW2 SOL 113 15.741 4.440 4.140 1.00 0.00 H -ATOM 343 OW SOL 114 10.231 7.660 9.661 1.00 0.00 O -ATOM 344 HW1 SOL 114 10.381 7.870 10.621 1.00 0.00 H -ATOM 345 HW2 SOL 114 9.931 6.710 9.571 1.00 0.00 H -ATOM 346 OW SOL 115 9.801 15.731 17.001 1.00 0.00 O -ATOM 347 HW1 SOL 115 9.601 16.171 16.121 1.00 0.00 H -ATOM 348 HW2 SOL 115 10.191 14.821 16.841 1.00 0.00 H -ATOM 349 OW SOL 116 18.591 15.181 16.051 1.00 0.00 O -ATOM 350 HW1 SOL 116 18.731 15.451 15.101 1.00 0.00 H -ATOM 351 HW2 SOL 116 19.421 15.401 16.581 1.00 0.00 H -ATOM 352 OW SOL 117 3.500 8.980 18.041 1.00 0.00 O -ATOM 353 HW1 SOL 117 4.260 9.420 18.521 1.00 0.00 H -ATOM 354 HW2 SOL 117 3.850 8.510 17.221 1.00 0.00 H -ATOM 355 OW SOL 118 15.401 2.740 1.250 1.00 0.00 O -ATOM 356 HW1 SOL 118 14.791 1.990 1.480 1.00 0.00 H -ATOM 357 HW2 SOL 118 15.621 3.260 2.080 1.00 0.00 H -ATOM 358 OW SOL 119 13.031 8.380 0.420 1.00 0.00 O -ATOM 359 HW1 SOL 119 13.371 7.450 0.570 1.00 0.00 H -ATOM 360 HW2 SOL 119 13.211 8.650 -0.530 1.00 0.00 H -ATOM 361 OW SOL 120 10.681 13.331 8.490 1.00 0.00 O -ATOM 362 HW1 SOL 120 10.751 12.491 7.940 1.00 0.00 H -ATOM 363 HW2 SOL 120 11.301 14.021 8.130 1.00 0.00 H -ATOM 364 OW SOL 121 3.190 8.100 9.491 1.00 0.00 O -ATOM 365 HW1 SOL 121 4.120 8.460 9.541 1.00 0.00 H -ATOM 366 HW2 SOL 121 3.130 7.250 10.011 1.00 0.00 H -ATOM 367 OW SOL 122 3.390 5.090 10.061 1.00 0.00 O -ATOM 368 HW1 SOL 122 2.870 4.260 9.891 1.00 0.00 H -ATOM 369 HW2 SOL 122 4.160 5.140 9.421 1.00 0.00 H -ATOM 370 OW SOL 123 11.381 3.800 16.781 1.00 0.00 O -ATOM 371 HW1 SOL 123 10.931 4.430 17.421 1.00 0.00 H -ATOM 372 HW2 SOL 123 12.311 4.110 16.611 1.00 0.00 H -ATOM 373 OW SOL 124 11.601 2.070 14.771 1.00 0.00 O -ATOM 374 HW1 SOL 124 11.601 2.710 15.541 1.00 0.00 H -ATOM 375 HW2 SOL 124 11.881 2.550 13.941 1.00 0.00 H -ATOM 376 OW SOL 125 0.880 18.011 9.270 1.00 0.00 O -ATOM 377 HW1 SOL 125 0.460 17.151 9.000 1.00 0.00 H -ATOM 378 HW2 SOL 125 1.820 18.041 8.930 1.00 0.00 H -ATOM 379 OW SOL 126 5.040 15.681 9.100 1.00 0.00 O -ATOM 380 HW1 SOL 126 5.700 16.421 9.190 1.00 0.00 H -ATOM 381 HW2 SOL 126 5.480 14.891 8.680 1.00 0.00 H -ATOM 382 OW SOL 127 10.021 7.960 12.381 1.00 0.00 O -ATOM 383 HW1 SOL 127 10.431 7.640 13.241 1.00 0.00 H -ATOM 384 HW2 SOL 127 9.061 7.690 12.351 1.00 0.00 H -ATOM 385 OW SOL 128 1.890 5.200 17.221 1.00 0.00 O -ATOM 386 HW1 SOL 128 2.480 4.800 16.521 1.00 0.00 H -ATOM 387 HW2 SOL 128 1.310 5.910 16.811 1.00 0.00 H -ATOM 388 OW SOL 129 13.691 9.501 16.601 1.00 0.00 O -ATOM 389 HW1 SOL 129 14.081 10.391 16.801 1.00 0.00 H -ATOM 390 HW2 SOL 129 13.791 9.301 15.631 1.00 0.00 H -ATOM 391 OW SOL 130 8.150 5.720 3.250 1.00 0.00 O -ATOM 392 HW1 SOL 130 8.220 4.830 2.790 1.00 0.00 H -ATOM 393 HW2 SOL 130 7.210 6.060 3.170 1.00 0.00 H -ATOM 394 OW SOL 131 16.571 6.040 12.061 1.00 0.00 O -ATOM 395 HW1 SOL 131 16.191 5.350 12.681 1.00 0.00 H -ATOM 396 HW2 SOL 131 17.391 5.680 11.621 1.00 0.00 H -ATOM 397 OW SOL 132 2.520 15.641 17.441 1.00 0.00 O -ATOM 398 HW1 SOL 132 2.220 16.211 18.201 1.00 0.00 H -ATOM 399 HW2 SOL 132 2.450 14.671 17.701 1.00 0.00 H -ATOM 400 OW SOL 133 6.710 4.640 12.691 1.00 0.00 O -ATOM 401 HW1 SOL 133 6.370 3.750 12.391 1.00 0.00 H -ATOM 402 HW2 SOL 133 6.970 5.180 11.891 1.00 0.00 H -ATOM 403 OW SOL 134 9.300 16.781 14.651 1.00 0.00 O -ATOM 404 HW1 SOL 134 9.060 16.601 13.701 1.00 0.00 H -ATOM 405 HW2 SOL 134 9.600 17.721 14.751 1.00 0.00 H -ATOM 406 OW SOL 135 4.730 5.000 1.910 1.00 0.00 O -ATOM 407 HW1 SOL 135 5.340 5.800 1.950 1.00 0.00 H -ATOM 408 HW2 SOL 135 3.780 5.310 1.980 1.00 0.00 H -ATOM 409 OW SOL 136 1.590 11.371 14.661 1.00 0.00 O -ATOM 410 HW1 SOL 136 1.810 10.761 15.421 1.00 0.00 H -ATOM 411 HW2 SOL 136 1.690 10.881 13.801 1.00 0.00 H -ATOM 412 OW SOL 137 13.471 10.591 12.341 1.00 0.00 O -ATOM 413 HW1 SOL 137 13.711 9.961 11.601 1.00 0.00 H -ATOM 414 HW2 SOL 137 12.571 10.991 12.161 1.00 0.00 H -ATOM 415 OW SOL 138 13.021 8.550 3.090 1.00 0.00 O -ATOM 416 HW1 SOL 138 12.161 8.240 3.510 1.00 0.00 H -ATOM 417 HW2 SOL 138 12.981 8.410 2.100 1.00 0.00 H -ATOM 418 OW SOL 139 17.591 17.471 11.541 1.00 0.00 O -ATOM 419 HW1 SOL 139 18.201 17.771 10.811 1.00 0.00 H -ATOM 420 HW2 SOL 139 17.211 16.581 11.321 1.00 0.00 H -ATOM 421 OW SOL 140 12.521 17.311 11.281 1.00 0.00 O -ATOM 422 HW1 SOL 140 13.361 17.361 10.741 1.00 0.00 H -ATOM 423 HW2 SOL 140 12.291 16.351 11.461 1.00 0.00 H -ATOM 424 OW SOL 141 0.830 12.581 10.221 1.00 0.00 O -ATOM 425 HW1 SOL 141 0.780 12.571 11.221 1.00 0.00 H -ATOM 426 HW2 SOL 141 0.000 12.171 9.841 1.00 0.00 H -ATOM 427 OW SOL 142 6.880 16.621 17.161 1.00 0.00 O -ATOM 428 HW1 SOL 142 6.320 17.431 17.251 1.00 0.00 H -ATOM 429 HW2 SOL 142 7.400 16.661 16.301 1.00 0.00 H -ATOM 430 OW SOL 143 9.030 0.860 1.330 1.00 0.00 O -ATOM 431 HW1 SOL 143 9.540 0.870 0.470 1.00 0.00 H -ATOM 432 HW2 SOL 143 9.590 0.440 2.040 1.00 0.00 H -ATOM 433 OW SOL 144 17.261 1.350 5.230 1.00 0.00 O -ATOM 434 HW1 SOL 144 17.991 1.180 4.560 1.00 0.00 H -ATOM 435 HW2 SOL 144 16.951 0.480 5.610 1.00 0.00 H -ATOM 436 OW SOL 145 13.881 15.731 4.770 1.00 0.00 O -ATOM 437 HW1 SOL 145 14.551 15.851 4.030 1.00 0.00 H -ATOM 438 HW2 SOL 145 13.481 16.621 5.000 1.00 0.00 H -ATOM 439 OW SOL 146 12.801 9.270 6.720 1.00 0.00 O -ATOM 440 HW1 SOL 146 13.401 8.460 6.740 1.00 0.00 H -ATOM 441 HW2 SOL 146 13.201 9.960 6.120 1.00 0.00 H -ATOM 442 OW SOL 147 8.300 12.731 14.221 1.00 0.00 O -ATOM 443 HW1 SOL 147 8.250 13.061 15.171 1.00 0.00 H -ATOM 444 HW2 SOL 147 7.440 12.921 13.761 1.00 0.00 H -ATOM 445 OW SOL 148 6.720 16.161 1.540 1.00 0.00 O -ATOM 446 HW1 SOL 148 6.810 16.261 0.550 1.00 0.00 H -ATOM 447 HW2 SOL 148 6.320 15.271 1.750 1.00 0.00 H -ATOM 448 OW SOL 149 16.501 17.201 13.941 1.00 0.00 O -ATOM 449 HW1 SOL 149 17.031 17.301 13.101 1.00 0.00 H -ATOM 450 HW2 SOL 149 16.231 18.101 14.281 1.00 0.00 H -ATOM 451 OW SOL 150 18.411 1.750 9.631 1.00 0.00 O -ATOM 452 HW1 SOL 150 18.801 0.900 9.271 1.00 0.00 H -ATOM 453 HW2 SOL 150 17.431 1.770 9.441 1.00 0.00 H -ATOM 454 OW SOL 151 2.630 3.260 7.200 1.00 0.00 O -ATOM 455 HW1 SOL 151 1.840 3.770 6.860 1.00 0.00 H -ATOM 456 HW2 SOL 151 2.540 3.110 8.180 1.00 0.00 H -ATOM 457 OW SOL 152 11.941 16.121 0.310 1.00 0.00 O -ATOM 458 HW1 SOL 152 12.001 15.191 0.680 1.00 0.00 H -ATOM 459 HW2 SOL 152 11.351 16.121 -0.490 1.00 0.00 H -ATOM 460 OW SOL 153 8.220 10.021 13.721 1.00 0.00 O -ATOM 461 HW1 SOL 153 8.620 10.011 12.801 1.00 0.00 H -ATOM 462 HW2 SOL 153 8.320 10.941 14.121 1.00 0.00 H -ATOM 463 OW SOL 154 9.160 9.100 2.910 1.00 0.00 O -ATOM 464 HW1 SOL 154 9.790 9.480 2.230 1.00 0.00 H -ATOM 465 HW2 SOL 154 9.560 8.270 3.300 1.00 0.00 H -ATOM 466 OW SOL 155 15.041 16.071 0.440 1.00 0.00 O -ATOM 467 HW1 SOL 155 14.121 16.441 0.510 1.00 0.00 H -ATOM 468 HW2 SOL 155 15.421 16.271 -0.460 1.00 0.00 H -ATOM 469 OW SOL 156 3.720 12.881 14.901 1.00 0.00 O -ATOM 470 HW1 SOL 156 3.590 13.811 14.561 1.00 0.00 H -ATOM 471 HW2 SOL 156 2.880 12.361 14.771 1.00 0.00 H -ATOM 472 OW SOL 157 16.141 12.921 12.891 1.00 0.00 O -ATOM 473 HW1 SOL 157 16.741 12.951 13.691 1.00 0.00 H -ATOM 474 HW2 SOL 157 15.391 13.561 13.021 1.00 0.00 H -ATOM 475 OW SOL 158 10.391 10.981 6.960 1.00 0.00 O -ATOM 476 HW1 SOL 158 9.691 10.511 7.500 1.00 0.00 H -ATOM 477 HW2 SOL 158 10.981 10.301 6.530 1.00 0.00 H -ATOM 478 OW SOL 159 10.141 2.360 9.711 1.00 0.00 O -ATOM 479 HW1 SOL 159 10.061 2.000 8.781 1.00 0.00 H -ATOM 480 HW2 SOL 159 10.121 1.600 10.361 1.00 0.00 H -ATOM 481 OW SOL 160 5.900 14.871 4.910 1.00 0.00 O -ATOM 482 HW1 SOL 160 6.320 14.291 4.210 1.00 0.00 H -ATOM 483 HW2 SOL 160 5.460 15.661 4.470 1.00 0.00 H -ATOM 484 OW SOL 161 17.091 3.850 13.811 1.00 0.00 O -ATOM 485 HW1 SOL 161 17.821 4.540 13.851 1.00 0.00 H -ATOM 486 HW2 SOL 161 17.371 3.100 13.221 1.00 0.00 H -ATOM 487 OW SOL 162 2.550 13.481 2.900 1.00 0.00 O -ATOM 488 HW1 SOL 162 1.590 13.491 2.630 1.00 0.00 H -ATOM 489 HW2 SOL 162 2.670 14.011 3.740 1.00 0.00 H -ATOM 490 OW SOL 163 1.050 10.131 17.261 1.00 0.00 O -ATOM 491 HW1 SOL 163 0.280 9.801 17.801 1.00 0.00 H -ATOM 492 HW2 SOL 163 1.900 9.831 17.681 1.00 0.00 H -ATOM 493 OW SOL 164 6.720 2.030 14.891 1.00 0.00 O -ATOM 494 HW1 SOL 164 7.620 1.870 14.491 1.00 0.00 H -ATOM 495 HW2 SOL 164 6.800 2.080 15.881 1.00 0.00 H -ATOM 496 OW SOL 165 14.401 8.560 13.981 1.00 0.00 O -ATOM 497 HW1 SOL 165 13.831 9.080 13.351 1.00 0.00 H -ATOM 498 HW2 SOL 165 15.361 8.680 13.741 1.00 0.00 H -ATOM 499 OW SOL 166 11.831 13.351 1.190 1.00 0.00 O -ATOM 500 HW1 SOL 166 10.841 13.241 1.210 1.00 0.00 H -ATOM 501 HW2 SOL 166 12.171 13.501 2.120 1.00 0.00 H -ATOM 502 OW SOL 167 6.130 8.420 14.311 1.00 0.00 O -ATOM 503 HW1 SOL 167 6.690 9.230 14.141 1.00 0.00 H -ATOM 504 HW2 SOL 167 6.720 7.620 14.341 1.00 0.00 H -ATOM 505 OW SOL 168 14.931 17.671 9.591 1.00 0.00 O -ATOM 506 HW1 SOL 168 15.261 18.311 8.901 1.00 0.00 H -ATOM 507 HW2 SOL 168 15.591 17.611 10.341 1.00 0.00 H -ATOM 508 OW SOL 169 7.160 5.650 17.081 1.00 0.00 O -ATOM 509 HW1 SOL 169 7.350 6.300 17.821 1.00 0.00 H -ATOM 510 HW2 SOL 169 7.760 4.850 17.171 1.00 0.00 H -ATOM 511 OW SOL 170 14.501 12.201 16.331 1.00 0.00 O -ATOM 512 HW1 SOL 170 14.411 12.101 17.321 1.00 0.00 H -ATOM 513 HW2 SOL 170 15.461 12.131 16.071 1.00 0.00 H -ATOM 514 OW SOL 171 3.900 17.411 15.601 1.00 0.00 O -ATOM 515 HW1 SOL 171 2.990 17.821 15.581 1.00 0.00 H -ATOM 516 HW2 SOL 171 3.830 16.471 15.921 1.00 0.00 H -ATOM 517 OW SOL 172 16.741 8.830 12.541 1.00 0.00 O -ATOM 518 HW1 SOL 172 16.471 7.940 12.171 1.00 0.00 H -ATOM 519 HW2 SOL 172 16.751 9.510 11.811 1.00 0.00 H -ATOM 520 OW SOL 173 12.251 3.250 4.490 1.00 0.00 O -ATOM 521 HW1 SOL 173 12.901 2.510 4.380 1.00 0.00 H -ATOM 522 HW2 SOL 173 12.451 3.750 5.330 1.00 0.00 H -ATOM 523 OW SOL 174 5.940 7.450 6.520 1.00 0.00 O -ATOM 524 HW1 SOL 174 6.440 8.300 6.330 1.00 0.00 H -ATOM 525 HW2 SOL 174 5.060 7.470 6.040 1.00 0.00 H -ATOM 526 OW SOL 175 17.771 3.420 16.421 1.00 0.00 O -ATOM 527 HW1 SOL 175 17.601 3.730 15.481 1.00 0.00 H -ATOM 528 HW2 SOL 175 16.931 3.050 16.801 1.00 0.00 H -ATOM 529 OW SOL 176 17.301 9.341 15.171 1.00 0.00 O -ATOM 530 HW1 SOL 176 17.681 10.251 15.321 1.00 0.00 H -ATOM 531 HW2 SOL 176 17.221 9.171 14.181 1.00 0.00 H -ATOM 532 OW SOL 177 8.590 13.741 0.160 1.00 0.00 O -ATOM 533 HW1 SOL 177 8.130 13.891 1.040 1.00 0.00 H -ATOM 534 HW2 SOL 177 9.030 14.591 -0.140 1.00 0.00 H -ATOM 535 OW SOL 178 6.610 17.901 9.531 1.00 0.00 O -ATOM 536 HW1 SOL 178 6.150 18.781 9.401 1.00 0.00 H -ATOM 537 HW2 SOL 178 7.600 18.021 9.461 1.00 0.00 H -ATOM 538 OW SOL 179 8.590 9.561 8.610 1.00 0.00 O -ATOM 539 HW1 SOL 179 9.130 8.871 9.090 1.00 0.00 H -ATOM 540 HW2 SOL 179 8.270 10.251 9.270 1.00 0.00 H -ATOM 541 OW SOL 180 10.831 9.841 0.870 1.00 0.00 O -ATOM 542 HW1 SOL 180 10.601 10.371 0.050 1.00 0.00 H -ATOM 543 HW2 SOL 180 11.641 9.281 0.680 1.00 0.00 H -ATOM 544 OW SOL 181 18.611 15.691 8.510 1.00 0.00 O -ATOM 545 HW1 SOL 181 17.901 15.571 7.810 1.00 0.00 H -ATOM 546 HW2 SOL 181 18.621 14.901 9.110 1.00 0.00 H -ATOM 547 OW SOL 182 2.210 13.141 18.441 1.00 0.00 O -ATOM 548 HW1 SOL 182 1.560 12.411 18.231 1.00 0.00 H -ATOM 549 HW2 SOL 182 2.250 13.281 19.421 1.00 0.00 H -ATOM 550 OW SOL 183 0.790 12.401 6.530 1.00 0.00 O -ATOM 551 HW1 SOL 183 0.780 11.931 7.410 1.00 0.00 H -ATOM 552 HW2 SOL 183 1.610 12.121 6.020 1.00 0.00 H -ATOM 553 OW SOL 184 6.720 13.911 16.241 1.00 0.00 O -ATOM 554 HW1 SOL 184 5.940 13.411 16.621 1.00 0.00 H -ATOM 555 HW2 SOL 184 6.690 14.861 16.551 1.00 0.00 H -ATOM 556 OW SOL 185 18.241 1.920 12.271 1.00 0.00 O -ATOM 557 HW1 SOL 185 18.201 1.020 12.711 1.00 0.00 H -ATOM 558 HW2 SOL 185 18.271 1.810 11.281 1.00 0.00 H -ATOM 559 OW SOL 186 4.280 4.240 5.200 1.00 0.00 O -ATOM 560 HW1 SOL 186 4.580 3.520 4.580 1.00 0.00 H -ATOM 561 HW2 SOL 186 3.890 3.840 6.030 1.00 0.00 H -ATOM 562 OW SOL 187 17.051 14.871 11.041 1.00 0.00 O -ATOM 563 HW1 SOL 187 16.121 14.621 10.771 1.00 0.00 H -ATOM 564 HW2 SOL 187 17.311 14.371 11.861 1.00 0.00 H -ATOM 565 OW SOL 188 3.170 5.470 12.801 1.00 0.00 O -ATOM 566 HW1 SOL 188 3.550 4.880 13.521 1.00 0.00 H -ATOM 567 HW2 SOL 188 3.570 5.210 11.921 1.00 0.00 H -ATOM 568 OW SOL 189 8.120 15.861 6.870 1.00 0.00 O -ATOM 569 HW1 SOL 189 8.440 15.961 5.930 1.00 0.00 H -ATOM 570 HW2 SOL 189 7.330 15.241 6.890 1.00 0.00 H -ATOM 571 OW SOL 190 14.241 2.140 11.121 1.00 0.00 O -ATOM 572 HW1 SOL 190 14.761 1.490 11.671 1.00 0.00 H -ATOM 573 HW2 SOL 190 13.751 2.770 11.731 1.00 0.00 H -ATOM 574 OW SOL 191 10.011 0.340 11.541 1.00 0.00 O -ATOM 575 HW1 SOL 191 9.381 -0.380 11.231 1.00 0.00 H -ATOM 576 HW2 SOL 191 10.941 -0.020 11.541 1.00 0.00 H -ATOM 577 OW SOL 192 7.700 13.301 3.010 1.00 0.00 O -ATOM 578 HW1 SOL 192 7.240 12.431 3.180 1.00 0.00 H -ATOM 579 HW2 SOL 192 8.610 13.271 3.420 1.00 0.00 H -ATOM 580 OW SOL 193 6.180 15.671 12.841 1.00 0.00 O -ATOM 581 HW1 SOL 193 6.130 16.491 13.411 1.00 0.00 H -ATOM 582 HW2 SOL 193 7.070 15.641 12.391 1.00 0.00 H -ATOM 583 OW SOL 194 13.521 0.520 1.680 1.00 0.00 O -ATOM 584 HW1 SOL 194 13.871 0.110 0.840 1.00 0.00 H -ATOM 585 HW2 SOL 194 12.621 0.140 1.880 1.00 0.00 H -ATOM 586 OW SOL 195 13.001 4.530 6.910 1.00 0.00 O -ATOM 587 HW1 SOL 195 12.411 5.330 6.950 1.00 0.00 H -ATOM 588 HW2 SOL 195 13.151 4.180 7.840 1.00 0.00 H -ATOM 589 OW SOL 196 15.931 2.210 8.820 1.00 0.00 O -ATOM 590 HW1 SOL 196 15.091 2.200 9.360 1.00 0.00 H -ATOM 591 HW2 SOL 196 15.951 3.040 8.260 1.00 0.00 H -ATOM 592 OW SOL 197 0.390 10.771 3.000 1.00 0.00 O -ATOM 593 HW1 SOL 197 1.380 10.661 2.910 1.00 0.00 H -ATOM 594 HW2 SOL 197 -0.010 9.911 3.320 1.00 0.00 H -ATOM 595 OW SOL 198 8.750 16.461 3.370 1.00 0.00 O -ATOM 596 HW1 SOL 198 7.980 16.111 2.830 1.00 0.00 H -ATOM 597 HW2 SOL 198 8.430 17.171 3.990 1.00 0.00 H -ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O -ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H -ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H -ATOM 601 OW SOL 200 6.060 9.641 19.851 1.00 0.00 O -ATOM 602 HW1 SOL 200 6.130 10.481 19.311 1.00 0.00 H -ATOM 603 HW2 SOL 200 6.520 9.771 20.731 1.00 0.00 H -ATOM 604 OW SOL 201 18.421 17.671 0.381 1.00 0.00 O -ATOM 605 HW1 SOL 201 18.961 17.381 1.181 1.00 0.00 H -ATOM 606 HW2 SOL 201 18.721 18.571 0.091 1.00 0.00 H -ATOM 607 OW SOL 202 0.270 15.961 19.791 1.00 0.00 O -ATOM 608 HW1 SOL 202 0.080 15.001 20.001 1.00 0.00 H -ATOM 609 HW2 SOL 202 -0.060 16.541 20.541 1.00 0.00 H -ATOM 610 OW SOL 203 16.411 11.081 1.111 1.00 0.00 O -ATOM 611 HW1 SOL 203 17.271 11.101 0.591 1.00 0.00 H -ATOM 612 HW2 SOL 203 16.551 11.551 1.991 1.00 0.00 H -ATOM 613 OW SOL 204 15.251 9.991 20.521 1.00 0.00 O -ATOM 614 HW1 SOL 204 14.621 9.231 20.651 1.00 0.00 H -ATOM 615 HW2 SOL 204 15.731 10.171 21.381 1.00 0.00 H -ATOM 616 OW SOL 205 5.980 7.290 21.321 1.00 0.00 O -ATOM 617 HW1 SOL 205 6.220 7.980 20.641 1.00 0.00 H -ATOM 618 HW2 SOL 205 5.200 7.620 21.861 1.00 0.00 H -ATOM 619 OW SOL 206 8.650 3.480 20.571 1.00 0.00 O -ATOM 620 HW1 SOL 206 9.240 4.110 20.081 1.00 0.00 H -ATOM 621 HW2 SOL 206 8.840 2.540 20.281 1.00 0.00 H -ATOM 622 OW SOL 207 10.081 14.561 1.561 1.00 0.00 O -ATOM 623 HW1 SOL 207 9.621 15.281 1.041 1.00 0.00 H -ATOM 624 HW2 SOL 207 10.041 14.761 2.541 1.00 0.00 H -ATOM 625 OW SOL 208 3.210 9.431 21.041 1.00 0.00 O -ATOM 626 HW1 SOL 208 4.030 9.821 20.621 1.00 0.00 H -ATOM 627 HW2 SOL 208 2.940 8.611 20.551 1.00 0.00 H -ATOM 628 OW SOL 209 16.321 13.771 19.431 1.00 0.00 O -ATOM 629 HW1 SOL 209 16.001 14.711 19.331 1.00 0.00 H -ATOM 630 HW2 SOL 209 15.561 13.141 19.311 1.00 0.00 H -ATOM 631 OW SOL 210 4.640 17.431 0.021 1.00 0.00 O -ATOM 632 HW1 SOL 210 4.970 17.821 0.881 1.00 0.00 H -ATOM 633 HW2 SOL 210 5.400 17.361 -0.629 1.00 0.00 H -ATOM 634 OW SOL 211 6.140 1.220 19.791 1.00 0.00 O -ATOM 635 HW1 SOL 211 7.120 1.000 19.861 1.00 0.00 H -ATOM 636 HW2 SOL 211 5.830 1.050 18.861 1.00 0.00 H -ATOM 637 OW SOL 212 14.341 11.881 19.031 1.00 0.00 O -ATOM 638 HW1 SOL 212 14.661 11.121 19.601 1.00 0.00 H -ATOM 639 HW2 SOL 212 13.421 12.151 19.331 1.00 0.00 H -ATOM 640 OW SOL 213 2.970 0.350 20.331 1.00 0.00 O -ATOM 641 HW1 SOL 213 3.460 1.190 20.121 1.00 0.00 H -ATOM 642 HW2 SOL 213 3.590 -0.300 20.781 1.00 0.00 H -ATOM 643 OW SOL 214 10.321 5.490 18.781 1.00 0.00 O -ATOM 644 HW1 SOL 214 9.911 6.310 18.391 1.00 0.00 H -ATOM 645 HW2 SOL 214 10.961 5.750 19.511 1.00 0.00 H -ATOM 646 OW SOL 215 18.571 8.330 0.561 1.00 0.00 O -ATOM 647 HW1 SOL 215 18.991 7.690 1.201 1.00 0.00 H -ATOM 648 HW2 SOL 215 18.191 7.820 -0.219 1.00 0.00 H -ATOM 649 OW SOL 216 4.880 13.851 20.361 1.00 0.00 O -ATOM 650 HW1 SOL 216 4.010 13.701 20.831 1.00 0.00 H -ATOM 651 HW2 SOL 216 4.710 14.111 19.411 1.00 0.00 H -ATOM 652 OW SOL 217 13.901 5.750 19.401 1.00 0.00 O -ATOM 653 HW1 SOL 217 13.361 5.540 20.211 1.00 0.00 H -ATOM 654 HW2 SOL 217 14.811 5.340 19.491 1.00 0.00 H -ATOM 655 OW SOL 218 15.821 6.390 1.511 1.00 0.00 O -ATOM 656 HW1 SOL 218 15.511 7.000 2.241 1.00 0.00 H -ATOM 657 HW2 SOL 218 16.321 6.910 0.821 1.00 0.00 H -ATOM 658 OW SOL 219 15.401 2.740 19.871 1.00 0.00 O -ATOM 659 HW1 SOL 219 14.791 1.990 20.101 1.00 0.00 H -ATOM 660 HW2 SOL 219 15.621 3.260 20.701 1.00 0.00 H -ATOM 661 OW SOL 220 13.031 8.380 19.041 1.00 0.00 O -ATOM 662 HW1 SOL 220 13.371 7.450 19.191 1.00 0.00 H -ATOM 663 HW2 SOL 220 13.211 8.650 18.091 1.00 0.00 H -ATOM 664 OW SOL 221 8.150 5.720 0.041 1.00 0.00 O -ATOM 665 HW1 SOL 221 8.220 4.830 -0.419 1.00 0.00 H -ATOM 666 HW2 SOL 221 7.210 6.060 -0.039 1.00 0.00 H -ATOM 667 OW SOL 222 4.730 5.000 20.531 1.00 0.00 O -ATOM 668 HW1 SOL 222 5.340 5.800 20.571 1.00 0.00 H -ATOM 669 HW2 SOL 222 3.780 5.310 20.601 1.00 0.00 H -ATOM 670 OW SOL 223 17.261 1.350 2.021 1.00 0.00 O -ATOM 671 HW1 SOL 223 17.991 1.180 1.351 1.00 0.00 H -ATOM 672 HW2 SOL 223 16.951 0.480 2.401 1.00 0.00 H -ATOM 673 OW SOL 224 6.720 16.161 20.161 1.00 0.00 O -ATOM 674 HW1 SOL 224 6.810 16.261 19.171 1.00 0.00 H -ATOM 675 HW2 SOL 224 6.320 15.271 20.371 1.00 0.00 H -ATOM 676 OW SOL 225 11.941 16.121 18.931 1.00 0.00 O -ATOM 677 HW1 SOL 225 12.001 15.191 19.301 1.00 0.00 H -ATOM 678 HW2 SOL 225 11.351 16.121 18.131 1.00 0.00 H -ATOM 679 OW SOL 226 9.160 9.100 21.531 1.00 0.00 O -ATOM 680 HW1 SOL 226 9.790 9.480 20.851 1.00 0.00 H -ATOM 681 HW2 SOL 226 9.560 8.270 21.921 1.00 0.00 H -ATOM 682 OW SOL 227 15.041 16.071 19.061 1.00 0.00 O -ATOM 683 HW1 SOL 227 14.121 16.441 19.131 1.00 0.00 H -ATOM 684 HW2 SOL 227 15.421 16.271 18.161 1.00 0.00 H -ATOM 685 OW SOL 228 2.550 13.481 21.521 1.00 0.00 O -ATOM 686 HW1 SOL 228 1.590 13.491 21.251 1.00 0.00 H -ATOM 687 HW2 SOL 228 2.670 14.011 22.361 1.00 0.00 H -ATOM 688 OW SOL 229 0.750 3.450 18.951 1.00 0.00 O -ATOM 689 HW1 SOL 229 -0.170 3.170 18.661 1.00 0.00 H -ATOM 690 HW2 SOL 229 1.060 4.220 18.391 1.00 0.00 H -ATOM 691 OW SOL 230 11.831 13.351 19.811 1.00 0.00 O -ATOM 692 HW1 SOL 230 10.841 13.241 19.831 1.00 0.00 H -ATOM 693 HW2 SOL 230 12.171 13.501 20.741 1.00 0.00 H -ATOM 694 OW SOL 231 8.590 13.741 18.781 1.00 0.00 O -ATOM 695 HW1 SOL 231 8.130 13.891 19.661 1.00 0.00 H -ATOM 696 HW2 SOL 231 9.030 14.591 18.481 1.00 0.00 H -ATOM 697 OW SOL 232 10.831 9.841 19.491 1.00 0.00 O -ATOM 698 HW1 SOL 232 10.601 10.371 18.671 1.00 0.00 H -ATOM 699 HW2 SOL 232 11.641 9.281 19.301 1.00 0.00 H -ATOM 700 OW SOL 233 13.521 0.520 20.301 1.00 0.00 O -ATOM 701 HW1 SOL 233 13.871 0.110 19.461 1.00 0.00 H -ATOM 702 HW2 SOL 233 12.621 0.140 20.501 1.00 0.00 H -ATOM 703 OW SOL 234 0.390 10.771 21.621 1.00 0.00 O -ATOM 704 HW1 SOL 234 1.380 10.661 21.531 1.00 0.00 H -ATOM 705 HW2 SOL 234 -0.010 9.911 21.941 1.00 0.00 H -ATOM 706 OW SOL 235 8.750 16.461 0.161 1.00 0.00 O -ATOM 707 HW1 SOL 235 7.980 16.111 -0.379 1.00 0.00 H -ATOM 708 HW2 SOL 235 8.430 17.171 0.781 1.00 0.00 H -ATOM 709 OW SOL 236 4.380 0.711 14.991 1.00 0.00 O -ATOM 710 HW1 SOL 236 5.200 0.151 15.081 1.00 0.00 H -ATOM 711 HW2 SOL 236 3.570 0.131 15.031 1.00 0.00 H -ATOM 712 OW SOL 237 15.941 19.761 14.801 1.00 0.00 O -ATOM 713 HW1 SOL 237 15.761 20.431 14.081 1.00 0.00 H -ATOM 714 HW2 SOL 237 15.911 20.221 15.691 1.00 0.00 H -ATOM 715 OW SOL 238 8.090 18.661 5.020 1.00 0.00 O -ATOM 716 HW1 SOL 238 8.490 19.571 4.930 1.00 0.00 H -ATOM 717 HW2 SOL 238 7.090 18.741 5.080 1.00 0.00 H -ATOM 718 OW SOL 239 12.811 0.241 9.441 1.00 0.00 O -ATOM 719 HW1 SOL 239 11.951 -0.259 9.311 1.00 0.00 H -ATOM 720 HW2 SOL 239 13.431 -0.299 10.001 1.00 0.00 H -ATOM 721 OW SOL 240 5.500 20.581 8.850 1.00 0.00 O -ATOM 722 HW1 SOL 240 5.450 20.531 9.850 1.00 0.00 H -ATOM 723 HW2 SOL 240 5.520 21.541 8.560 1.00 0.00 H -ATOM 724 OW SOL 241 2.020 21.471 14.981 1.00 0.00 O -ATOM 725 HW1 SOL 241 1.220 22.071 14.851 1.00 0.00 H -ATOM 726 HW2 SOL 241 1.920 20.981 15.841 1.00 0.00 H -ATOM 727 OW SOL 242 14.001 19.691 4.260 1.00 0.00 O -ATOM 728 HW1 SOL 242 13.761 19.321 3.360 1.00 0.00 H -ATOM 729 HW2 SOL 242 14.991 19.851 4.300 1.00 0.00 H -ATOM 730 OW SOL 243 15.471 20.841 17.291 1.00 0.00 O -ATOM 731 HW1 SOL 243 15.421 21.211 18.211 1.00 0.00 H -ATOM 732 HW2 SOL 243 14.751 20.151 17.171 1.00 0.00 H -ATOM 733 OW SOL 244 6.140 19.841 1.170 1.00 0.00 O -ATOM 734 HW1 SOL 244 7.120 19.621 1.240 1.00 0.00 H -ATOM 735 HW2 SOL 244 5.830 19.671 0.240 1.00 0.00 H -ATOM 736 OW SOL 245 7.810 21.261 17.491 1.00 0.00 O -ATOM 737 HW1 SOL 245 8.480 20.651 17.921 1.00 0.00 H -ATOM 738 HW2 SOL 245 7.080 21.451 18.141 1.00 0.00 H -ATOM 739 OW SOL 246 5.390 19.261 5.120 1.00 0.00 O -ATOM 740 HW1 SOL 246 4.580 19.271 5.700 1.00 0.00 H -ATOM 741 HW2 SOL 246 5.420 20.091 4.570 1.00 0.00 H -ATOM 742 OW SOL 247 5.610 20.841 11.471 1.00 0.00 O -ATOM 743 HW1 SOL 247 5.990 20.001 11.841 1.00 0.00 H -ATOM 744 HW2 SOL 247 4.730 21.031 11.911 1.00 0.00 H -ATOM 745 OW SOL 248 10.171 19.011 7.530 1.00 0.00 O -ATOM 746 HW1 SOL 248 9.451 19.061 6.840 1.00 0.00 H -ATOM 747 HW2 SOL 248 9.931 18.321 8.220 1.00 0.00 H -ATOM 748 OW SOL 249 5.270 21.181 3.280 1.00 0.00 O -ATOM 749 HW1 SOL 249 5.540 20.591 2.530 1.00 0.00 H -ATOM 750 HW2 SOL 249 5.270 22.131 2.970 1.00 0.00 H -ATOM 751 OW SOL 250 9.150 19.511 14.021 1.00 0.00 O -ATOM 752 HW1 SOL 250 9.400 19.311 13.071 1.00 0.00 H -ATOM 753 HW2 SOL 250 9.870 20.071 14.441 1.00 0.00 H -ATOM 754 OW SOL 251 12.741 0.651 12.621 1.00 0.00 O -ATOM 755 HW1 SOL 251 12.951 1.391 13.261 1.00 0.00 H -ATOM 756 HW2 SOL 251 11.851 0.821 12.191 1.00 0.00 H -ATOM 757 OW SOL 252 10.131 19.671 17.701 1.00 0.00 O -ATOM 758 HW1 SOL 252 10.191 20.521 17.181 1.00 0.00 H -ATOM 759 HW2 SOL 252 10.451 18.911 17.131 1.00 0.00 H -ATOM 760 OW SOL 253 5.040 19.121 17.401 1.00 0.00 O -ATOM 761 HW1 SOL 253 4.620 18.551 16.701 1.00 0.00 H -ATOM 762 HW2 SOL 253 4.380 19.811 17.721 1.00 0.00 H -ATOM 763 OW SOL 254 3.070 20.751 12.311 1.00 0.00 O -ATOM 764 HW1 SOL 254 2.840 21.121 13.211 1.00 0.00 H -ATOM 765 HW2 SOL 254 2.770 19.801 12.251 1.00 0.00 H -ATOM 766 OW SOL 255 3.070 19.251 6.180 1.00 0.00 O -ATOM 767 HW1 SOL 255 2.960 20.191 6.510 1.00 0.00 H -ATOM 768 HW2 SOL 255 3.020 18.621 6.950 1.00 0.00 H -ATOM 769 OW SOL 256 15.401 21.361 1.250 1.00 0.00 O -ATOM 770 HW1 SOL 256 14.791 20.611 1.480 1.00 0.00 H -ATOM 771 HW2 SOL 256 15.621 21.881 2.080 1.00 0.00 H -ATOM 772 OW SOL 257 11.601 20.691 14.771 1.00 0.00 O -ATOM 773 HW1 SOL 257 11.601 21.331 15.541 1.00 0.00 H -ATOM 774 HW2 SOL 257 11.881 21.171 13.941 1.00 0.00 H -ATOM 775 OW SOL 258 9.030 19.481 1.330 1.00 0.00 O -ATOM 776 HW1 SOL 258 9.540 19.491 0.470 1.00 0.00 H -ATOM 777 HW2 SOL 258 9.590 19.061 2.040 1.00 0.00 H -ATOM 778 OW SOL 259 17.261 19.971 5.230 1.00 0.00 O -ATOM 779 HW1 SOL 259 17.991 19.801 4.560 1.00 0.00 H -ATOM 780 HW2 SOL 259 16.951 19.101 5.610 1.00 0.00 H -ATOM 781 OW SOL 260 18.411 20.371 9.631 1.00 0.00 O -ATOM 782 HW1 SOL 260 18.801 19.521 9.271 1.00 0.00 H -ATOM 783 HW2 SOL 260 17.431 20.391 9.441 1.00 0.00 H -ATOM 784 OW SOL 261 6.720 20.651 14.891 1.00 0.00 O -ATOM 785 HW1 SOL 261 7.620 20.491 14.491 1.00 0.00 H -ATOM 786 HW2 SOL 261 6.800 20.701 15.881 1.00 0.00 H -ATOM 787 OW SOL 262 12.251 0.041 4.490 1.00 0.00 O -ATOM 788 HW1 SOL 262 12.901 -0.699 4.380 1.00 0.00 H -ATOM 789 HW2 SOL 262 12.451 0.541 5.330 1.00 0.00 H -ATOM 790 OW SOL 263 17.771 0.211 16.421 1.00 0.00 O -ATOM 791 HW1 SOL 263 17.601 0.521 15.481 1.00 0.00 H -ATOM 792 HW2 SOL 263 16.931 -0.159 16.801 1.00 0.00 H -ATOM 793 OW SOL 264 18.241 20.541 12.271 1.00 0.00 O -ATOM 794 HW1 SOL 264 18.201 19.641 12.711 1.00 0.00 H -ATOM 795 HW2 SOL 264 18.271 20.431 11.281 1.00 0.00 H -ATOM 796 OW SOL 265 14.241 20.761 11.121 1.00 0.00 O -ATOM 797 HW1 SOL 265 14.761 20.111 11.671 1.00 0.00 H -ATOM 798 HW2 SOL 265 13.751 21.391 11.731 1.00 0.00 H -ATOM 799 OW SOL 266 10.011 18.961 11.541 1.00 0.00 O -ATOM 800 HW1 SOL 266 9.381 18.241 11.231 1.00 0.00 H -ATOM 801 HW2 SOL 266 10.941 18.601 11.541 1.00 0.00 H -ATOM 802 OW SOL 267 13.521 19.141 1.680 1.00 0.00 O -ATOM 803 HW1 SOL 267 13.871 18.731 0.840 1.00 0.00 H -ATOM 804 HW2 SOL 267 12.621 18.761 1.880 1.00 0.00 H -ATOM 805 OW SOL 268 13.001 1.321 6.910 1.00 0.00 O -ATOM 806 HW1 SOL 268 12.411 2.121 6.950 1.00 0.00 H -ATOM 807 HW2 SOL 268 13.151 0.971 7.840 1.00 0.00 H -ATOM 808 OW SOL 269 15.931 20.831 8.820 1.00 0.00 O -ATOM 809 HW1 SOL 269 15.091 20.821 9.360 1.00 0.00 H -ATOM 810 HW2 SOL 269 15.951 21.661 8.260 1.00 0.00 H -ATOM 811 OW SOL 270 8.650 0.271 20.571 1.00 0.00 O -ATOM 812 HW1 SOL 270 9.240 0.901 20.081 1.00 0.00 H -ATOM 813 HW2 SOL 270 8.840 -0.669 20.281 1.00 0.00 H -ATOM 814 OW SOL 271 6.140 19.841 19.791 1.00 0.00 O -ATOM 815 HW1 SOL 271 7.120 19.621 19.861 1.00 0.00 H -ATOM 816 HW2 SOL 271 5.830 19.671 18.861 1.00 0.00 H -ATOM 817 OW SOL 272 2.970 18.971 20.331 1.00 0.00 O -ATOM 818 HW1 SOL 272 3.460 19.811 20.121 1.00 0.00 H -ATOM 819 HW2 SOL 272 3.590 18.321 20.781 1.00 0.00 H -ATOM 820 OW SOL 273 15.401 21.361 19.871 1.00 0.00 O -ATOM 821 HW1 SOL 273 14.791 20.611 20.101 1.00 0.00 H -ATOM 822 HW2 SOL 273 15.621 21.881 20.701 1.00 0.00 H -ATOM 823 OW SOL 274 17.261 19.971 2.021 1.00 0.00 O -ATOM 824 HW1 SOL 274 17.991 19.801 1.351 1.00 0.00 H -ATOM 825 HW2 SOL 274 16.951 19.101 2.401 1.00 0.00 H -ATOM 826 OW SOL 275 0.750 0.241 18.951 1.00 0.00 O -ATOM 827 HW1 SOL 275 -0.170 -0.039 18.661 1.00 0.00 H -ATOM 828 HW2 SOL 275 1.060 1.011 18.391 1.00 0.00 H -ATOM 829 OW SOL 276 13.521 19.141 20.301 1.00 0.00 O -ATOM 830 HW1 SOL 276 13.871 18.731 19.461 1.00 0.00 H -ATOM 831 HW2 SOL 276 12.621 18.761 20.501 1.00 0.00 H -ATOM 832 OW SOL 277 20.921 6.280 1.130 1.00 0.00 O -ATOM 833 HW1 SOL 277 19.991 6.260 1.500 1.00 0.00 H -ATOM 834 HW2 SOL 277 20.931 5.890 0.210 1.00 0.00 H -ATOM 835 OW SOL 278 20.871 2.750 9.961 1.00 0.00 O -ATOM 836 HW1 SOL 278 21.221 2.580 10.881 1.00 0.00 H -ATOM 837 HW2 SOL 278 19.991 2.300 9.841 1.00 0.00 H -ATOM 838 OW SOL 279 18.811 3.680 6.470 1.00 0.00 O -ATOM 839 HW1 SOL 279 17.991 4.110 6.860 1.00 0.00 H -ATOM 840 HW2 SOL 279 18.531 2.950 5.840 1.00 0.00 H -ATOM 841 OW SOL 280 0.141 14.351 10.611 1.00 0.00 O -ATOM 842 HW1 SOL 280 -0.639 14.041 10.081 1.00 0.00 H -ATOM 843 HW2 SOL 280 0.721 14.931 10.041 1.00 0.00 H -ATOM 844 OW SOL 281 20.931 17.131 4.830 1.00 0.00 O -ATOM 845 HW1 SOL 281 21.271 17.901 5.370 1.00 0.00 H -ATOM 846 HW2 SOL 281 21.371 17.131 3.930 1.00 0.00 H -ATOM 847 OW SOL 282 20.921 14.341 5.380 1.00 0.00 O -ATOM 848 HW1 SOL 282 20.661 15.301 5.380 1.00 0.00 H -ATOM 849 HW2 SOL 282 20.211 13.801 5.830 1.00 0.00 H -ATOM 850 OW SOL 283 21.021 10.911 8.860 1.00 0.00 O -ATOM 851 HW1 SOL 283 21.161 10.071 9.380 1.00 0.00 H -ATOM 852 HW2 SOL 283 20.471 11.551 9.410 1.00 0.00 H -ATOM 853 OW SOL 284 19.841 6.430 5.630 1.00 0.00 O -ATOM 854 HW1 SOL 284 19.391 5.550 5.800 1.00 0.00 H -ATOM 855 HW2 SOL 284 19.831 6.970 6.470 1.00 0.00 H -ATOM 856 OW SOL 285 19.751 7.370 15.971 1.00 0.00 O -ATOM 857 HW1 SOL 285 20.631 7.240 16.421 1.00 0.00 H -ATOM 858 HW2 SOL 285 19.621 8.340 15.751 1.00 0.00 H -ATOM 859 OW SOL 286 20.591 9.761 12.641 1.00 0.00 O -ATOM 860 HW1 SOL 286 21.481 9.311 12.501 1.00 0.00 H -ATOM 861 HW2 SOL 286 19.861 9.111 12.451 1.00 0.00 H -ATOM 862 OW SOL 287 19.381 8.110 7.890 1.00 0.00 O -ATOM 863 HW1 SOL 287 20.371 7.990 7.980 1.00 0.00 H -ATOM 864 HW2 SOL 287 19.141 9.060 8.100 1.00 0.00 H -ATOM 865 OW SOL 288 19.921 18.211 15.711 1.00 0.00 O -ATOM 866 HW1 SOL 288 19.821 18.061 16.701 1.00 0.00 H -ATOM 867 HW2 SOL 288 19.061 18.571 15.351 1.00 0.00 H -ATOM 868 OW SOL 289 20.641 2.850 14.981 1.00 0.00 O -ATOM 869 HW1 SOL 289 19.841 3.450 14.851 1.00 0.00 H -ATOM 870 HW2 SOL 289 20.541 2.360 15.841 1.00 0.00 H -ATOM 871 OW SOL 290 0.611 7.000 4.800 1.00 0.00 O -ATOM 872 HW1 SOL 290 1.061 6.100 4.770 1.00 0.00 H -ATOM 873 HW2 SOL 290 -0.329 6.890 5.130 1.00 0.00 H -ATOM 874 OW SOL 291 19.401 5.560 13.861 1.00 0.00 O -ATOM 875 HW1 SOL 291 20.321 5.550 13.451 1.00 0.00 H -ATOM 876 HW2 SOL 291 19.341 6.300 14.531 1.00 0.00 H -ATOM 877 OW SOL 292 0.891 8.130 12.511 1.00 0.00 O -ATOM 878 HW1 SOL 292 1.751 8.250 13.011 1.00 0.00 H -ATOM 879 HW2 SOL 292 0.471 7.260 12.781 1.00 0.00 H -ATOM 880 OW SOL 293 19.261 15.641 13.311 1.00 0.00 O -ATOM 881 HW1 SOL 293 18.801 16.461 12.971 1.00 0.00 H -ATOM 882 HW2 SOL 293 20.241 15.831 13.401 1.00 0.00 H -ATOM 883 OW SOL 294 21.691 2.130 12.311 1.00 0.00 O -ATOM 884 HW1 SOL 294 21.461 2.500 13.211 1.00 0.00 H -ATOM 885 HW2 SOL 294 21.391 1.180 12.251 1.00 0.00 H -ATOM 886 OW SOL 295 18.991 13.101 12.821 1.00 0.00 O -ATOM 887 HW1 SOL 295 19.521 12.611 13.501 1.00 0.00 H -ATOM 888 HW2 SOL 295 19.211 14.081 12.871 1.00 0.00 H -ATOM 889 OW SOL 296 21.811 8.100 9.491 1.00 0.00 O -ATOM 890 HW1 SOL 296 22.741 8.460 9.541 1.00 0.00 H -ATOM 891 HW2 SOL 296 21.751 7.250 10.011 1.00 0.00 H -ATOM 892 OW SOL 297 18.701 13.261 2.000 1.00 0.00 O -ATOM 893 HW1 SOL 297 17.771 13.471 1.690 1.00 0.00 H -ATOM 894 HW2 SOL 297 18.801 12.271 2.130 1.00 0.00 H -ATOM 895 OW SOL 298 19.501 18.011 9.270 1.00 0.00 O -ATOM 896 HW1 SOL 298 19.081 17.151 9.000 1.00 0.00 H -ATOM 897 HW2 SOL 298 20.441 18.041 8.930 1.00 0.00 H -ATOM 898 OW SOL 299 1.831 15.681 9.100 1.00 0.00 O -ATOM 899 HW1 SOL 299 2.491 16.421 9.190 1.00 0.00 H -ATOM 900 HW2 SOL 299 2.271 14.891 8.680 1.00 0.00 H -ATOM 901 OW SOL 300 19.021 5.440 11.141 1.00 0.00 O -ATOM 902 HW1 SOL 300 19.871 5.110 10.731 1.00 0.00 H -ATOM 903 HW2 SOL 300 19.151 5.590 12.121 1.00 0.00 H -ATOM 904 OW SOL 301 20.511 5.200 17.221 1.00 0.00 O -ATOM 905 HW1 SOL 301 21.101 4.800 16.521 1.00 0.00 H -ATOM 906 HW2 SOL 301 19.931 5.910 16.811 1.00 0.00 H -ATOM 907 OW SOL 302 21.141 15.641 17.441 1.00 0.00 O -ATOM 908 HW1 SOL 302 20.841 16.211 18.201 1.00 0.00 H -ATOM 909 HW2 SOL 302 21.071 14.671 17.701 1.00 0.00 H -ATOM 910 OW SOL 303 1.521 5.000 1.910 1.00 0.00 O -ATOM 911 HW1 SOL 303 2.131 5.800 1.950 1.00 0.00 H -ATOM 912 HW2 SOL 303 0.571 5.310 1.980 1.00 0.00 H -ATOM 913 OW SOL 304 20.211 11.371 14.661 1.00 0.00 O -ATOM 914 HW1 SOL 304 20.431 10.761 15.421 1.00 0.00 H -ATOM 915 HW2 SOL 304 20.311 10.881 13.801 1.00 0.00 H -ATOM 916 OW SOL 305 19.451 12.581 10.221 1.00 0.00 O -ATOM 917 HW1 SOL 305 19.401 12.571 11.221 1.00 0.00 H -ATOM 918 HW2 SOL 305 18.621 12.171 9.841 1.00 0.00 H -ATOM 919 OW SOL 306 19.921 17.941 18.511 1.00 0.00 O -ATOM 920 HW1 SOL 306 19.511 17.201 19.041 1.00 0.00 H -ATOM 921 HW2 SOL 306 20.561 18.451 19.091 1.00 0.00 H -ATOM 922 OW SOL 307 21.251 3.260 7.200 1.00 0.00 O -ATOM 923 HW1 SOL 307 20.461 3.770 6.860 1.00 0.00 H -ATOM 924 HW2 SOL 307 21.161 3.110 8.180 1.00 0.00 H -ATOM 925 OW SOL 308 0.511 12.881 14.901 1.00 0.00 O -ATOM 926 HW1 SOL 308 0.381 13.811 14.561 1.00 0.00 H -ATOM 927 HW2 SOL 308 -0.329 12.361 14.771 1.00 0.00 H -ATOM 928 OW SOL 309 21.171 13.481 2.900 1.00 0.00 O -ATOM 929 HW1 SOL 309 20.211 13.491 2.630 1.00 0.00 H -ATOM 930 HW2 SOL 309 21.291 14.011 3.740 1.00 0.00 H -ATOM 931 OW SOL 310 19.671 10.131 17.261 1.00 0.00 O -ATOM 932 HW1 SOL 310 18.901 9.801 17.801 1.00 0.00 H -ATOM 933 HW2 SOL 310 20.521 9.831 17.681 1.00 0.00 H -ATOM 934 OW SOL 311 19.371 3.450 0.330 1.00 0.00 O -ATOM 935 HW1 SOL 311 18.451 3.170 0.040 1.00 0.00 H -ATOM 936 HW2 SOL 311 19.681 4.220 -0.230 1.00 0.00 H -ATOM 937 OW SOL 312 19.341 1.660 3.180 1.00 0.00 O -ATOM 938 HW1 SOL 312 19.171 2.490 2.640 1.00 0.00 H -ATOM 939 HW2 SOL 312 20.241 1.290 2.960 1.00 0.00 H -ATOM 940 OW SOL 313 0.691 17.411 15.601 1.00 0.00 O -ATOM 941 HW1 SOL 313 -0.219 17.821 15.581 1.00 0.00 H -ATOM 942 HW2 SOL 313 0.621 16.471 15.921 1.00 0.00 H -ATOM 943 OW SOL 314 19.411 12.401 6.530 1.00 0.00 O -ATOM 944 HW1 SOL 314 19.401 11.931 7.410 1.00 0.00 H -ATOM 945 HW2 SOL 314 20.231 12.121 6.020 1.00 0.00 H -ATOM 946 OW SOL 315 1.071 4.240 5.200 1.00 0.00 O -ATOM 947 HW1 SOL 315 1.371 3.520 4.580 1.00 0.00 H -ATOM 948 HW2 SOL 315 0.681 3.840 6.030 1.00 0.00 H -ATOM 949 OW SOL 316 21.791 5.470 12.801 1.00 0.00 O -ATOM 950 HW1 SOL 316 22.171 4.880 13.521 1.00 0.00 H -ATOM 951 HW2 SOL 316 22.191 5.210 11.921 1.00 0.00 H -ATOM 952 OW SOL 317 19.011 10.771 3.000 1.00 0.00 O -ATOM 953 HW1 SOL 317 20.001 10.661 2.910 1.00 0.00 H -ATOM 954 HW2 SOL 317 18.611 9.911 3.320 1.00 0.00 H -ATOM 955 OW SOL 318 20.921 6.280 19.751 1.00 0.00 O -ATOM 956 HW1 SOL 318 19.991 6.260 20.121 1.00 0.00 H -ATOM 957 HW2 SOL 318 20.931 5.890 18.831 1.00 0.00 H -ATOM 958 OW SOL 319 20.931 17.131 1.621 1.00 0.00 O -ATOM 959 HW1 SOL 319 21.271 17.901 2.161 1.00 0.00 H -ATOM 960 HW2 SOL 319 21.371 17.131 0.721 1.00 0.00 H -ATOM 961 OW SOL 320 18.891 15.961 19.791 1.00 0.00 O -ATOM 962 HW1 SOL 320 18.701 15.001 20.001 1.00 0.00 H -ATOM 963 HW2 SOL 320 18.561 16.541 20.541 1.00 0.00 H -ATOM 964 OW SOL 321 1.431 17.431 0.021 1.00 0.00 O -ATOM 965 HW1 SOL 321 1.761 17.821 0.881 1.00 0.00 H -ATOM 966 HW2 SOL 321 2.191 17.361 -0.629 1.00 0.00 H -ATOM 967 OW SOL 322 2.181 0.640 1.911 1.00 0.00 O -ATOM 968 HW1 SOL 322 1.371 0.650 2.491 1.00 0.00 H -ATOM 969 HW2 SOL 322 2.211 1.470 1.361 1.00 0.00 H -ATOM 970 OW SOL 323 2.061 2.560 0.071 1.00 0.00 O -ATOM 971 HW1 SOL 323 2.331 1.970 -0.679 1.00 0.00 H -ATOM 972 HW2 SOL 323 2.061 3.510 -0.239 1.00 0.00 H -ATOM 973 OW SOL 324 18.701 13.261 20.621 1.00 0.00 O -ATOM 974 HW1 SOL 324 17.771 13.471 20.311 1.00 0.00 H -ATOM 975 HW2 SOL 324 18.801 12.271 20.751 1.00 0.00 H -ATOM 976 OW SOL 325 1.521 5.000 20.531 1.00 0.00 O -ATOM 977 HW1 SOL 325 2.131 5.800 20.571 1.00 0.00 H -ATOM 978 HW2 SOL 325 0.571 5.310 20.601 1.00 0.00 H -ATOM 979 OW SOL 326 21.171 13.481 21.521 1.00 0.00 O -ATOM 980 HW1 SOL 326 20.211 13.491 21.251 1.00 0.00 H -ATOM 981 HW2 SOL 326 21.291 14.011 22.361 1.00 0.00 H -ATOM 982 OW SOL 327 19.371 3.450 18.951 1.00 0.00 O -ATOM 983 HW1 SOL 327 18.451 3.170 18.661 1.00 0.00 H -ATOM 984 HW2 SOL 327 19.681 4.220 18.391 1.00 0.00 H -ATOM 985 OW SOL 328 19.011 10.771 21.621 1.00 0.00 O -ATOM 986 HW1 SOL 328 20.001 10.661 21.531 1.00 0.00 H -ATOM 987 HW2 SOL 328 18.611 9.911 21.941 1.00 0.00 H -ATOM 988 OW SOL 329 20.871 21.371 9.961 1.00 0.00 O -ATOM 989 HW1 SOL 329 21.221 21.201 10.881 1.00 0.00 H -ATOM 990 HW2 SOL 329 19.991 20.921 9.841 1.00 0.00 H -ATOM 991 OW SOL 330 18.811 0.471 6.470 1.00 0.00 O -ATOM 992 HW1 SOL 330 17.991 0.901 6.860 1.00 0.00 H -ATOM 993 HW2 SOL 330 18.531 -0.259 5.840 1.00 0.00 H -ATOM 994 OW SOL 331 2.291 20.581 8.850 1.00 0.00 O -ATOM 995 HW1 SOL 331 2.241 20.531 9.850 1.00 0.00 H -ATOM 996 HW2 SOL 331 2.311 21.541 8.560 1.00 0.00 H -ATOM 997 OW SOL 332 20.641 21.471 14.981 1.00 0.00 O -ATOM 998 HW1 SOL 332 19.841 22.071 14.851 1.00 0.00 H -ATOM 999 HW2 SOL 332 20.541 20.981 15.841 1.00 0.00 H -ATOM 1000 OW SOL 333 1.831 19.121 17.401 1.00 0.00 O -ATOM 1001 HW1 SOL 333 1.411 18.551 16.701 1.00 0.00 H -ATOM 1002 HW2 SOL 333 1.171 19.811 17.721 1.00 0.00 H -ATOM 1003 OW SOL 334 21.691 20.751 12.311 1.00 0.00 O -ATOM 1004 HW1 SOL 334 21.461 21.121 13.211 1.00 0.00 H -ATOM 1005 HW2 SOL 334 21.391 19.801 12.251 1.00 0.00 H -ATOM 1006 OW SOL 335 21.691 19.251 6.180 1.00 0.00 O -ATOM 1007 HW1 SOL 335 21.581 20.191 6.510 1.00 0.00 H -ATOM 1008 HW2 SOL 335 21.641 18.621 6.950 1.00 0.00 H -ATOM 1009 OW SOL 336 21.251 0.051 7.200 1.00 0.00 O -ATOM 1010 HW1 SOL 336 20.461 0.561 6.860 1.00 0.00 H -ATOM 1011 HW2 SOL 336 21.161 -0.099 8.180 1.00 0.00 H -ATOM 1012 OW SOL 337 19.371 0.241 0.330 1.00 0.00 O -ATOM 1013 HW1 SOL 337 18.451 -0.039 0.040 1.00 0.00 H -ATOM 1014 HW2 SOL 337 19.681 1.011 -0.230 1.00 0.00 H -ATOM 1015 OW SOL 338 19.341 20.281 3.180 1.00 0.00 O -ATOM 1016 HW1 SOL 338 19.171 21.111 2.640 1.00 0.00 H -ATOM 1017 HW2 SOL 338 20.241 19.911 2.960 1.00 0.00 H -ATOM 1018 OW SOL 339 1.071 1.031 5.200 1.00 0.00 O -ATOM 1019 HW1 SOL 339 1.371 0.311 4.580 1.00 0.00 H -ATOM 1020 HW2 SOL 339 0.681 0.631 6.030 1.00 0.00 H -ATOM 1021 OW SOL 340 2.181 19.261 1.911 1.00 0.00 O -ATOM 1022 HW1 SOL 340 1.371 19.271 2.491 1.00 0.00 H -ATOM 1023 HW2 SOL 340 2.211 20.091 1.361 1.00 0.00 H -ATOM 1024 OW SOL 341 21.591 18.971 20.331 1.00 0.00 O -ATOM 1025 HW1 SOL 341 22.081 19.811 20.121 1.00 0.00 H -ATOM 1026 HW2 SOL 341 22.211 18.321 20.781 1.00 0.00 H -ATOM 1027 OW SOL 342 2.061 21.181 0.071 1.00 0.00 O -ATOM 1028 HW1 SOL 342 2.331 20.591 -0.679 1.00 0.00 H -ATOM 1029 HW2 SOL 342 2.061 22.131 -0.239 1.00 0.00 H -ATOM 1030 OW SOL 343 19.371 0.241 18.951 1.00 0.00 O -ATOM 1031 HW1 SOL 343 18.451 -0.039 18.661 1.00 0.00 H -ATOM 1032 HW2 SOL 343 19.681 1.011 18.391 1.00 0.00 H -TER -ENDMDL diff --git a/examples/latte_interface/main.py b/examples/latte_interface/main.py deleted file mode 100644 index 7dbb357d..00000000 --- a/examples/latte_interface/main.py +++ /dev/null @@ -1,36 +0,0 @@ -"""Main sedacs prototype driver to perform a -graph-based addaptive construction of the density -matrix together with a full self-consistent charge -optimization""" - -import sys - -import numpy as np -from sedacs.driver.graph_adaptive_scf import get_adaptiveSCFDM -from sedacs.driver.init import get_args, init -from sedacs.charges import get_charges -import sedacs.globals as gl - -# Pass arguments from comand line -args = get_args() - -# Initialize sedacs - -np.set_printoptions(threshold=sys.maxsize) - -# Initialize sdc parameters -sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init(args) - -sdc.verb = True - -mu = 0 -# Perform a graph-adaptive calculation of the density matrix -graphDH,sy.charges,mu,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu) - - -#sy.energy,sy.forces = get_energy_and_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH) - - - - - diff --git a/examples/latte_interface_bomd/coords_100.pdb b/examples/latte_interface/scf_energy_forces/coords_100.pdb similarity index 100% rename from examples/latte_interface_bomd/coords_100.pdb rename to examples/latte_interface/scf_energy_forces/coords_100.pdb diff --git a/examples/latte_interface_bomd/coords_1299.pdb b/examples/latte_interface/scf_energy_forces/coords_1299.pdb similarity index 100% rename from examples/latte_interface_bomd/coords_1299.pdb rename to examples/latte_interface/scf_energy_forces/coords_1299.pdb diff --git a/examples/latte_interface_bomd/coords_2955.pdb b/examples/latte_interface/scf_energy_forces/coords_2955.pdb similarity index 100% rename from examples/latte_interface_bomd/coords_2955.pdb rename to examples/latte_interface/scf_energy_forces/coords_2955.pdb diff --git a/examples/latte_interface_energy_forces/input.in b/examples/latte_interface/scf_energy_forces/input.in similarity index 95% rename from examples/latte_interface_energy_forces/input.in rename to examples/latte_interface/scf_energy_forces/input.in index cdcdf9d2..ed6f495f 100644 --- a/examples/latte_interface_energy_forces/input.in +++ b/examples/latte_interface/scf_energy_forces/input.in @@ -3,10 +3,9 @@ Verbosity= True Threshold= 1.0E-7 #CoordsFile= coords_1299.pdb -CoordsFile= wat2.xyz #CoordsFile= algo.xyz #CoordsFile= coords_2955.pdb -#CoordsFile= coords_100.pdb +CoordsFile= coords_100.pdb #CoordsFile= water_128.xyz GraphThreshold= 0.01 MaxDeg= 500 #Max graph degree diff --git a/examples/latte_interface/latte.in b/examples/latte_interface/scf_energy_forces/latte.in similarity index 92% rename from examples/latte_interface/latte.in rename to examples/latte_interface/scf_energy_forces/latte.in index c40439d2..6e387e42 100644 --- a/examples/latte_interface/latte.in +++ b/examples/latte_interface/scf_energy_forces/latte.in @@ -6,9 +6,8 @@ CONTROL{ DEBUGON= 0 FERMIM= 6 CGORLIB= 1 CGTOL= 1.0e-6 - KBT= 0.0 NORECS= 1 - PARAMPATH= '../../parameters/latte/TBparam/' + PARAMPATH= '../../../parameters/latte/TBparam/' ENTROPYKIND= 1 PPOTON= 1 VDWON= 0 SPINON= 0 SPINTOL= 1.0e-4 @@ -28,8 +27,8 @@ CONTROL{ PBCON= 1 RESTART= 0 CHARGE= 0 - XBO= 1 - XBODISON= 1 + XBO= 0 + XBODISON= 0 XBODISORDER= 5 NGPU= 2 KON= 0 diff --git a/examples/latte_interface/scf_energy_forces/main.py b/examples/latte_interface/scf_energy_forces/main.py new file mode 100644 index 00000000..8aa7460a --- /dev/null +++ b/examples/latte_interface/scf_energy_forces/main.py @@ -0,0 +1,47 @@ +""" +main.py +==================================== +Main sedacs prototype driver to perform a +graph-based addaptive construction of the density +matrix together with a full self-consistent charge +optimization, followed by single-point calculation +of the energy and forces. + +""" + +import sys + +import numpy as np +from sedacs.driver.graph_adaptive_scf import get_adaptiveSCFDM +from sedacs.driver.graph_adaptive_sp_energy_forces import get_adaptive_sp_energy_forces +from sedacs.driver.init import get_args, init +from sedacs.charges import get_charges +import sedacs.globals as gl + + +# Pass arguments from command line +args = get_args() + +# Initialize sedacs + +np.set_printoptions(threshold=sys.maxsize) + +# Initialize sdc parameters +sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init( + args +) + +sdc.verb = True + +# Perform a graph-adaptive calculation of the density matrix through SCF cycles +mu = 0.0 +graphDH, sy.charges, mu, parts, subSysOnRank = get_adaptiveSCFDM( + sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu +) +# Perform a single-point graph-adaptive calculation of the energy and forces +graphDH, sy.charges, energy, forces, mu, parts, subSysOnRank = get_adaptive_sp_energy_forces( + sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu +) + +print("total energy:", energy) +print("forces:", forces[0]) diff --git a/examples/latte_interface_energy_forces/vars b/examples/latte_interface/scf_energy_forces/vars similarity index 62% rename from examples/latte_interface_energy_forces/vars rename to examples/latte_interface/scf_energy_forces/vars index c6116796..a1ab5dff 100644 --- a/examples/latte_interface_energy_forces/vars +++ b/examples/latte_interface/scf_energy_forces/vars @@ -1,12 +1,12 @@ #!/bin/bash THIS_PATH=`pwd` export PYTHONPATH="" -MOD_PATH=$THIS_PATH/../../src/sedacs/ -MOD_PATH1=$THIS_PATH/../../src/ -MOD_PATH2=$THIS_PATH/../../src/sedacs/driver -PROXYA_FORTRAN_PATH=$THIS_PATH/../../proxies/fortran/build/ -PROXYA_PYTHON_FILES=$THIS_PATH/../../proxies/python/ -PROXYA_PYTHON_FOLDER=$THIS_PATH/../../ +MOD_PATH=$THIS_PATH/../../../src/sedacs/ +MOD_PATH1=$THIS_PATH/../../../src/ +MOD_PATH2=$THIS_PATH/../../../src/sedacs/driver +PROXYA_FORTRAN_PATH=$THIS_PATH/../../../proxies/fortran/build/ +PROXYA_PYTHON_FILES=$THIS_PATH/../../../proxies/python/ +PROXYA_PYTHON_FOLDER=$THIS_PATH/../../../ PROGRESS_PATH=$HOME/qmd-progress/install/lib64/ BML_PATH=$HOME/bml/install/lib64/ export PROXYA_FORTRAN_PATH=$PROXYA_FORTRAN_PATH @@ -15,7 +15,7 @@ export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$MOD_PATH1:$MOD_PATH2:$PROGRESS_PATH:$BM export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROGRESS_PATH:$BML_PATH export PYTHONWARNINGS="ignore:Unverified HTTPS request" -GPU_PATH=$THIS_PATH/../../src/sedacs/gpu +GPU_PATH=$THIS_PATH/../../../src/sedacs/gpu echo $GPU_PATH export PYTHONPATH=$PYTHONPATH:$GPU_PATH diff --git a/examples/latte_interface_bomd/water_128.xyz b/examples/latte_interface/scf_energy_forces/water_128.xyz similarity index 100% rename from examples/latte_interface_bomd/water_128.xyz rename to examples/latte_interface/scf_energy_forces/water_128.xyz diff --git a/examples/latte_interface/vars b/examples/latte_interface/vars deleted file mode 100644 index 2460ca37..00000000 --- a/examples/latte_interface/vars +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -THIS_PATH=`pwd` -export PYTHONPATH="" -MOD_PATH=$THIS_PATH/../../src/sedacs/ -MOD_PATH1=$THIS_PATH/../../src/ -MOD_PATH2=$THIS_PATH/../../src/sedacs/driver -PROXYA_FORTRAN_PATH=$THIS_PATH/../../proxies/fortran/build/ -PROXYA_PYTHON_FILES=$THIS_PATH/../../proxies/python/ -PROXYA_PYTHON_FOLDER=$THIS_PATH/../../ -#PROGRESS_PATH=$HOME/qmd-progress/install/lib64/ -#BML_PATH=$HOME/bml/install/lib64/ -export PROXYA_FORTRAN_PATH=$PROXYA_FORTRAN_PATH -export PROXYA_PYTHON_PATH=$PROXYA_PYTHON_PATH -export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$MOD_PATH1:$MOD_PATH2:$PROGRESS_PATH:$BML_PATH:$PROXYA_PYTHON_FOLDER:$PROXYA_PYTHON_FILES:$PROXYA_FORTRAN_PATH -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROGRESS_PATH:$BML_PATH -export PYTHONWARNINGS="ignore:Unverified HTTPS request" - -GPU_PATH=$THIS_PATH/../../src/sedacs/gpu -echo $GPU_PATH -export PYTHONPATH=$PYTHONPATH:$GPU_PATH - diff --git a/examples/latte_interface/wat.pdb b/examples/latte_interface/wat.pdb deleted file mode 100644 index 034d516a..00000000 --- a/examples/latte_interface/wat.pdb +++ /dev/null @@ -1,9 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE coords_100.pdb -CRYST1 50.459 50.459 50.459 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H MOL 1 0.749 -0.000 0.442 0.00 0.00 H -ATOM 2 O MOL 1 0.000 0.020 -0.165 0.00 0.00 O -ATOM 3 H MOL 1 -0.749 -0.000 0.442 0.00 0.00 H -TER -END diff --git a/examples/latte_interface/wat.xyz b/examples/latte_interface/wat.xyz deleted file mode 100644 index 1f469a46..00000000 --- a/examples/latte_interface/wat.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -Lattice="110.00 0.0 0.0 0.0 110.00 0.0 0.0 0.0 110.00" -H 0.7493682 0.0000000 0.4424329 -O 0.0000000 0.0000000 -0.1653507 -H -0.7493682 0.0000000 0.4424329 diff --git a/examples/latte_interface_bomd/coords_100_2.pdb b/examples/latte_interface_bomd/coords_100_2.pdb deleted file mode 100644 index 955e3539..00000000 --- a/examples/latte_interface_bomd/coords_100_2.pdb +++ /dev/null @@ -1,306 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE coords_100.pdb -CRYST1 25.459 25.459 25.459 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H MOL 1 0.024 -0.035 0.000 0.00 0.00 H -ATOM 2 O MOL 1 0.965 0.020 0.000 0.00 0.00 O -ATOM 3 H MOL 1 1.141 -0.907 0.000 0.00 0.00 H -ATOM 4 H MOL 1 1.462 1.513 1.709 0.00 0.00 H -ATOM 5 O MOL 1 2.404 1.568 1.709 0.00 0.00 O -ATOM 6 H MOL 1 2.579 0.641 1.709 0.00 0.00 H -ATOM 7 H MOL 1 2.820 2.865 3.165 0.00 0.00 H -ATOM 8 O MOL 1 3.761 2.919 3.165 0.00 0.00 O -ATOM 9 H MOL 1 3.937 1.993 3.165 0.00 0.00 H -ATOM 10 H MOL 1 4.153 4.495 4.880 0.00 0.00 H -ATOM 11 O MOL 1 5.095 4.549 4.880 0.00 0.00 O -ATOM 12 H MOL 1 5.270 3.623 4.880 0.00 0.00 H -ATOM 13 H MOL 1 6.507 6.886 7.361 0.00 0.00 H -ATOM 14 O MOL 1 7.449 6.940 7.361 0.00 0.00 O -ATOM 15 H MOL 1 7.624 6.013 7.361 0.00 0.00 H -ATOM 16 H MOL 1 8.157 8.371 9.279 0.00 0.00 H -ATOM 17 O MOL 1 9.098 8.425 9.279 0.00 0.00 O -ATOM 18 H MOL 1 9.273 7.498 9.279 0.00 0.00 H -ATOM 19 H MOL 1 9.844 10.492 11.575 0.00 0.00 H -ATOM 20 O MOL 1 10.786 10.546 11.575 0.00 0.00 O -ATOM 21 H MOL 1 10.961 9.619 11.575 0.00 0.00 H -ATOM 22 H MOL 1 13.862 1.975 4.386 0.00 0.00 H -ATOM 23 O MOL 1 14.804 2.029 4.386 0.00 0.00 O -ATOM 24 H MOL 1 14.979 1.102 4.386 0.00 0.00 H -ATOM 25 H MOL 1 6.255 9.846 11.439 0.00 0.00 H -ATOM 26 O MOL 1 7.196 9.900 11.439 0.00 0.00 O -ATOM 27 H MOL 1 7.371 8.973 11.439 0.00 0.00 H -ATOM 28 H MOL 1 0.905 3.897 6.882 0.00 0.00 H -ATOM 29 O MOL 1 1.846 3.951 6.882 0.00 0.00 O -ATOM 30 H MOL 1 2.021 3.024 6.882 0.00 0.00 H -ATOM 31 H MOL 1 11.955 14.153 5.458 0.00 0.00 H -ATOM 32 O MOL 1 12.896 14.207 5.458 0.00 0.00 O -ATOM 33 H MOL 1 13.072 13.281 5.458 0.00 0.00 H -ATOM 34 H MOL 1 9.388 13.982 6.497 0.00 0.00 H -ATOM 35 O MOL 1 10.330 14.036 6.497 0.00 0.00 O -ATOM 36 H MOL 1 10.505 13.110 6.497 0.00 0.00 H -ATOM 37 H MOL 1 9.916 3.729 8.798 0.00 0.00 H -ATOM 38 O MOL 1 10.857 3.783 8.798 0.00 0.00 O -ATOM 39 H MOL 1 11.033 2.857 8.798 0.00 0.00 H -ATOM 40 H MOL 1 1.645 10.849 1.718 0.00 0.00 H -ATOM 41 O MOL 1 2.586 10.904 1.718 0.00 0.00 O -ATOM 42 H MOL 1 2.761 9.977 1.718 0.00 0.00 H -ATOM 43 H MOL 1 13.668 5.798 2.502 0.00 0.00 H -ATOM 44 O MOL 1 14.610 5.852 2.502 0.00 0.00 O -ATOM 45 H MOL 1 14.785 4.925 2.502 0.00 0.00 H -ATOM 46 H MOL 1 0.434 8.566 11.170 0.00 0.00 H -ATOM 47 O MOL 1 1.376 8.620 11.170 0.00 0.00 O -ATOM 48 H MOL 1 1.551 7.693 11.170 0.00 0.00 H -ATOM 49 H MOL 1 8.236 3.228 1.102 0.00 0.00 H -ATOM 50 O MOL 1 9.177 3.283 1.102 0.00 0.00 O -ATOM 51 H MOL 1 9.352 2.356 1.102 0.00 0.00 H -ATOM 52 H MOL 1 14.171 2.786 10.963 0.00 0.00 H -ATOM 53 O MOL 1 15.112 2.840 10.963 0.00 0.00 O -ATOM 54 H MOL 1 15.287 1.913 10.963 0.00 0.00 H -ATOM 55 H MOL 1 10.024 12.300 0.152 0.00 0.00 H -ATOM 56 O MOL 1 10.966 12.354 0.152 0.00 0.00 O -ATOM 57 H MOL 1 11.141 11.428 0.152 0.00 0.00 H -ATOM 58 H MOL 1 11.444 7.694 1.210 0.00 0.00 H -ATOM 59 O MOL 1 12.386 7.748 1.210 0.00 0.00 O -ATOM 60 H MOL 1 12.561 6.822 1.210 0.00 0.00 H -ATOM 61 H MOL 1 5.914 9.892 5.228 0.00 0.00 H -ATOM 62 O MOL 1 6.855 9.947 5.228 0.00 0.00 O -ATOM 63 H MOL 1 7.030 9.020 5.228 0.00 0.00 H -ATOM 64 H MOL 1 11.015 2.278 3.209 0.00 0.00 H -ATOM 65 O MOL 1 11.957 2.332 3.209 0.00 0.00 O -ATOM 66 H MOL 1 12.132 1.406 3.209 0.00 0.00 H -ATOM 67 H MOL 1 5.157 14.137 9.690 0.00 0.00 H -ATOM 68 O MOL 1 6.099 14.192 9.690 0.00 0.00 O -ATOM 69 H MOL 1 6.274 13.265 9.690 0.00 0.00 H -ATOM 70 H MOL 1 13.014 10.851 2.149 0.00 0.00 H -ATOM 71 O MOL 1 13.956 10.906 2.149 0.00 0.00 O -ATOM 72 H MOL 1 14.131 9.979 2.149 0.00 0.00 H -ATOM 73 H MOL 1 6.432 7.342 4.083 0.00 0.00 H -ATOM 74 O MOL 1 7.373 7.396 4.083 0.00 0.00 O -ATOM 75 H MOL 1 7.548 6.469 4.083 0.00 0.00 H -ATOM 76 H MOL 1 13.237 7.650 6.098 0.00 0.00 H -ATOM 77 O MOL 1 14.178 7.704 6.098 0.00 0.00 O -ATOM 78 H MOL 1 14.353 6.777 6.098 0.00 0.00 H -ATOM 79 H MOL 1 8.056 0.377 3.941 0.00 0.00 H -ATOM 80 O MOL 1 8.997 0.431 3.941 0.00 0.00 O -ATOM 81 H MOL 1 9.172 -0.495 3.941 0.00 0.00 H -ATOM 82 H MOL 1 4.396 9.364 7.094 0.00 0.00 H -ATOM 83 O MOL 1 5.337 9.418 7.094 0.00 0.00 O -ATOM 84 H MOL 1 5.512 8.491 7.094 0.00 0.00 H -ATOM 85 H MOL 1 5.060 0.593 11.823 0.00 0.00 H -ATOM 86 O MOL 1 6.002 0.647 11.823 0.00 0.00 O -ATOM 87 H MOL 1 6.177 -0.280 11.823 0.00 0.00 H -ATOM 88 H MOL 1 10.805 13.676 1.929 0.00 0.00 H -ATOM 89 O MOL 1 11.747 13.730 1.929 0.00 0.00 O -ATOM 90 H MOL 1 11.922 12.804 1.929 0.00 0.00 H -ATOM 91 H MOL 1 10.422 5.195 5.779 0.00 0.00 H -ATOM 92 O MOL 1 11.364 5.250 5.779 0.00 0.00 O -ATOM 93 H MOL 1 11.539 4.323 5.779 0.00 0.00 H -ATOM 94 H MOL 1 2.609 5.311 0.365 0.00 0.00 H -ATOM 95 O MOL 1 3.551 5.365 0.365 0.00 0.00 O -ATOM 96 H MOL 1 3.726 4.438 0.365 0.00 0.00 H -ATOM 97 H MOL 1 0.247 12.838 7.622 0.00 0.00 H -ATOM 98 O MOL 1 1.189 12.892 7.622 0.00 0.00 O -ATOM 99 H MOL 1 1.364 11.966 7.622 0.00 0.00 H -ATOM 100 H MOL 1 0.400 4.030 12.734 0.00 0.00 H -ATOM 101 O MOL 1 1.342 4.084 12.734 0.00 0.00 O -ATOM 102 H MOL 1 1.517 3.158 12.734 0.00 0.00 H -ATOM 103 H MOL 1 6.344 11.570 0.306 0.00 0.00 H -ATOM 104 O MOL 1 7.286 11.624 0.306 0.00 0.00 O -ATOM 105 H MOL 1 7.461 10.698 0.306 0.00 0.00 H -ATOM 106 H MOL 1 1.457 8.882 5.810 0.00 0.00 H -ATOM 107 O MOL 1 2.399 8.937 5.810 0.00 0.00 O -ATOM 108 H MOL 1 2.574 8.010 5.810 0.00 0.00 H -ATOM 109 H MOL 1 1.246 12.939 10.266 0.00 0.00 H -ATOM 110 O MOL 1 2.187 12.993 10.266 0.00 0.00 O -ATOM 111 H MOL 1 2.362 12.067 10.266 0.00 0.00 H -ATOM 112 H MOL 1 5.844 10.735 2.510 0.00 0.00 H -ATOM 113 O MOL 1 6.786 10.789 2.510 0.00 0.00 O -ATOM 114 H MOL 1 6.961 9.862 2.510 0.00 0.00 H -ATOM 115 H MOL 1 9.752 5.415 11.518 0.00 0.00 H -ATOM 116 O MOL 1 10.694 5.470 11.518 0.00 0.00 O -ATOM 117 H MOL 1 10.869 4.543 11.518 0.00 0.00 H -ATOM 118 H MOL 1 10.062 11.535 7.714 0.00 0.00 H -ATOM 119 O MOL 1 11.004 11.590 7.714 0.00 0.00 O -ATOM 120 H MOL 1 11.179 10.663 7.714 0.00 0.00 H -ATOM 121 H MOL 1 11.140 0.576 13.274 0.00 0.00 H -ATOM 122 O MOL 1 12.081 0.630 13.274 0.00 0.00 O -ATOM 123 H MOL 1 12.256 -0.297 13.274 0.00 0.00 H -ATOM 124 H MOL 1 8.664 2.794 6.440 0.00 0.00 H -ATOM 125 O MOL 1 9.606 2.848 6.440 0.00 0.00 O -ATOM 126 H MOL 1 9.781 1.921 6.440 0.00 0.00 H -ATOM 127 H MOL 1 1.908 5.146 9.029 0.00 0.00 H -ATOM 128 O MOL 1 2.849 5.201 9.029 0.00 0.00 O -ATOM 129 H MOL 1 3.024 4.274 9.029 0.00 0.00 H -ATOM 130 H MOL 1 12.294 7.322 11.253 0.00 0.00 H -ATOM 131 O MOL 1 13.235 7.377 11.253 0.00 0.00 O -ATOM 132 H MOL 1 13.410 6.450 11.253 0.00 0.00 H -ATOM 133 H MOL 1 11.098 6.253 8.089 0.00 0.00 H -ATOM 134 O MOL 1 12.039 6.307 8.089 0.00 0.00 O -ATOM 135 H MOL 1 12.214 5.381 8.089 0.00 0.00 H -ATOM 136 H MOL 1 4.497 3.412 10.233 0.00 0.00 H -ATOM 137 O MOL 1 5.438 3.466 10.233 0.00 0.00 O -ATOM 138 H MOL 1 5.613 2.539 10.233 0.00 0.00 H -ATOM 139 H MOL 1 12.642 9.031 8.163 0.00 0.00 H -ATOM 140 O MOL 1 13.584 9.085 8.163 0.00 0.00 O -ATOM 141 H MOL 1 13.759 8.159 8.163 0.00 0.00 H -ATOM 142 H MOL 1 1.618 12.178 5.523 0.00 0.00 H -ATOM 143 O MOL 1 2.560 12.233 5.523 0.00 0.00 O -ATOM 144 H MOL 1 2.735 11.306 5.523 0.00 0.00 H -ATOM 145 H MOL 1 11.030 2.396 11.405 0.00 0.00 H -ATOM 146 O MOL 1 11.971 2.450 11.405 0.00 0.00 O -ATOM 147 H MOL 1 12.146 1.524 11.405 0.00 0.00 H -ATOM 148 H MOL 1 13.962 8.475 13.187 0.00 0.00 H -ATOM 149 O MOL 1 14.903 8.529 13.187 0.00 0.00 O -ATOM 150 H MOL 1 15.078 7.602 13.187 0.00 0.00 H -ATOM 151 H MOL 1 9.462 8.027 5.394 0.00 0.00 H -ATOM 152 O MOL 1 10.404 8.081 5.394 0.00 0.00 O -ATOM 153 H MOL 1 10.579 7.155 5.394 0.00 0.00 H -ATOM 154 H MOL 1 8.529 8.120 2.400 0.00 0.00 H -ATOM 155 O MOL 1 9.471 8.175 2.400 0.00 0.00 O -ATOM 156 H MOL 1 9.646 7.248 2.400 0.00 0.00 H -ATOM 157 H MOL 1 8.139 0.978 12.304 0.00 0.00 H -ATOM 158 O MOL 1 9.081 1.033 12.304 0.00 0.00 O -ATOM 159 H MOL 1 9.256 0.106 12.304 0.00 0.00 H -ATOM 160 H MOL 1 1.628 12.028 12.490 0.00 0.00 H -ATOM 161 O MOL 1 2.569 12.082 12.490 0.00 0.00 O -ATOM 162 H MOL 1 2.744 11.155 12.490 0.00 0.00 H -ATOM 163 H MOL 1 6.188 3.476 7.931 0.00 0.00 H -ATOM 164 O MOL 1 7.129 3.530 7.931 0.00 0.00 O -ATOM 165 H MOL 1 7.305 2.604 7.931 0.00 0.00 H -ATOM 166 H MOL 1 11.865 12.623 9.604 0.00 0.00 H -ATOM 167 O MOL 1 12.807 12.677 9.604 0.00 0.00 O -ATOM 168 H MOL 1 12.982 11.750 9.604 0.00 0.00 H -ATOM 169 H MOL 1 9.083 5.793 0.741 0.00 0.00 H -ATOM 170 O MOL 1 10.025 5.847 0.741 0.00 0.00 O -ATOM 171 H MOL 1 10.200 4.921 0.741 0.00 0.00 H -ATOM 172 H MOL 1 13.001 1.894 6.496 0.00 0.00 H -ATOM 173 O MOL 1 13.942 1.949 6.496 0.00 0.00 O -ATOM 174 H MOL 1 14.117 1.022 6.496 0.00 0.00 H -ATOM 175 H MOL 1 1.513 8.921 9.234 0.00 0.00 H -ATOM 176 O MOL 1 2.454 8.975 9.234 0.00 0.00 O -ATOM 177 H MOL 1 2.629 8.049 9.234 0.00 0.00 H -ATOM 178 H MOL 1 5.013 8.716 0.609 0.00 0.00 H -ATOM 179 O MOL 1 5.954 8.770 0.609 0.00 0.00 O -ATOM 180 H MOL 1 6.129 7.843 0.609 0.00 0.00 H -ATOM 181 H MOL 1 6.661 3.635 13.318 0.00 0.00 H -ATOM 182 O MOL 1 7.602 3.690 13.318 0.00 0.00 O -ATOM 183 H MOL 1 7.777 2.763 13.318 0.00 0.00 H -ATOM 184 H MOL 1 5.109 3.641 1.722 0.00 0.00 H -ATOM 185 O MOL 1 6.050 3.696 1.722 0.00 0.00 O -ATOM 186 H MOL 1 6.225 2.769 1.722 0.00 0.00 H -ATOM 187 H MOL 1 6.461 0.702 0.842 0.00 0.00 H -ATOM 188 O MOL 1 7.402 0.757 0.842 0.00 0.00 O -ATOM 189 H MOL 1 7.577 -0.170 0.842 0.00 0.00 H -ATOM 190 H MOL 1 3.083 7.592 2.472 0.00 0.00 H -ATOM 191 O MOL 1 4.025 7.646 2.472 0.00 0.00 O -ATOM 192 H MOL 1 4.200 6.720 2.472 0.00 0.00 H -ATOM 193 H MOL 1 8.638 14.297 9.461 0.00 0.00 H -ATOM 194 O MOL 1 9.579 14.352 9.461 0.00 0.00 O -ATOM 195 H MOL 1 9.754 13.425 9.461 0.00 0.00 H -ATOM 196 H MOL 1 4.773 13.629 6.292 0.00 0.00 H -ATOM 197 O MOL 1 5.714 13.684 6.292 0.00 0.00 O -ATOM 198 H MOL 1 5.889 12.757 6.292 0.00 0.00 H -ATOM 199 H MOL 1 7.047 3.198 3.702 0.00 0.00 H -ATOM 200 O MOL 1 7.989 3.252 3.702 0.00 0.00 O -ATOM 201 H MOL 1 8.164 2.326 3.702 0.00 0.00 H -ATOM 202 H MOL 1 2.094 0.204 8.780 0.00 0.00 H -ATOM 203 O MOL 1 3.035 0.258 8.780 0.00 0.00 O -ATOM 204 H MOL 1 3.210 -0.669 8.780 0.00 0.00 H -ATOM 205 H MOL 1 6.427 6.710 13.409 0.00 0.00 H -ATOM 206 O MOL 1 7.368 6.765 13.409 0.00 0.00 O -ATOM 207 H MOL 1 7.543 5.838 13.409 0.00 0.00 H -ATOM 208 H MOL 1 4.534 6.437 9.463 0.00 0.00 H -ATOM 209 O MOL 1 5.476 6.491 9.463 0.00 0.00 O -ATOM 210 H MOL 1 5.651 5.565 9.463 0.00 0.00 H -ATOM 211 H MOL 1 2.755 13.902 4.044 0.00 0.00 H -ATOM 212 O MOL 1 3.697 13.957 4.044 0.00 0.00 O -ATOM 213 H MOL 1 3.872 13.030 4.044 0.00 0.00 H -ATOM 214 H MOL 1 3.647 9.025 13.044 0.00 0.00 H -ATOM 215 O MOL 1 4.589 9.080 13.044 0.00 0.00 O -ATOM 216 H MOL 1 4.764 8.153 13.044 0.00 0.00 H -ATOM 217 H MOL 1 2.475 1.170 14.119 0.00 0.00 H -ATOM 218 O MOL 1 3.416 1.224 14.119 0.00 0.00 O -ATOM 219 H MOL 1 3.592 0.298 14.119 0.00 0.00 H -ATOM 220 H MOL 1 9.573 10.933 2.915 0.00 0.00 H -ATOM 221 O MOL 1 10.514 10.988 2.915 0.00 0.00 O -ATOM 222 H MOL 1 10.689 10.061 2.915 0.00 0.00 H -ATOM 223 H MOL 1 6.960 10.953 7.307 0.00 0.00 H -ATOM 224 O MOL 1 7.901 11.007 7.307 0.00 0.00 O -ATOM 225 H MOL 1 8.076 10.080 7.307 0.00 0.00 H -ATOM 226 H MOL 1 12.713 4.501 0.595 0.00 0.00 H -ATOM 227 O MOL 1 13.655 4.555 0.595 0.00 0.00 O -ATOM 228 H MOL 1 13.830 3.628 0.595 0.00 0.00 H -ATOM 229 H MOL 1 13.212 11.633 13.218 0.00 0.00 H -ATOM 230 O MOL 1 14.154 11.687 13.218 0.00 0.00 O -ATOM 231 H MOL 1 14.329 10.761 13.218 0.00 0.00 H -ATOM 232 H MOL 1 11.861 13.431 11.502 0.00 0.00 H -ATOM 233 O MOL 1 12.803 13.485 11.502 0.00 0.00 O -ATOM 234 H MOL 1 12.978 12.558 11.502 0.00 0.00 H -ATOM 235 H MOL 1 9.400 8.430 13.259 0.00 0.00 H -ATOM 236 O MOL 1 10.342 8.485 13.259 0.00 0.00 O -ATOM 237 H MOL 1 10.517 7.558 13.259 0.00 0.00 H -ATOM 238 H MOL 1 2.820 1.799 5.389 0.00 0.00 H -ATOM 239 O MOL 1 3.762 1.854 5.389 0.00 0.00 O -ATOM 240 H MOL 1 3.937 0.927 5.389 0.00 0.00 H -ATOM 241 H MOL 1 9.302 11.302 5.371 0.00 0.00 H -ATOM 242 O MOL 1 10.244 11.357 5.371 0.00 0.00 O -ATOM 243 H MOL 1 10.419 10.430 5.371 0.00 0.00 H -ATOM 244 H MOL 1 7.076 12.436 12.400 0.00 0.00 H -ATOM 245 O MOL 1 8.017 12.491 12.400 0.00 0.00 O -ATOM 246 H MOL 1 8.192 11.564 12.400 0.00 0.00 H -ATOM 247 H MOL 1 0.564 8.190 0.846 0.00 0.00 H -ATOM 248 O MOL 1 1.505 8.245 0.846 0.00 0.00 O -ATOM 249 H MOL 1 1.680 7.318 0.846 0.00 0.00 H -ATOM 250 H MOL 1 7.010 11.136 9.638 0.00 0.00 H -ATOM 251 O MOL 1 7.952 11.191 9.638 0.00 0.00 O -ATOM 252 H MOL 1 8.127 10.264 9.638 0.00 0.00 H -ATOM 253 H MOL 1 9.268 5.723 3.606 0.00 0.00 H -ATOM 254 O MOL 1 10.209 5.777 3.606 0.00 0.00 O -ATOM 255 H MOL 1 10.384 4.850 3.606 0.00 0.00 H -ATOM 256 H MOL 1 13.390 10.203 4.472 0.00 0.00 H -ATOM 257 O MOL 1 14.332 10.257 4.472 0.00 0.00 O -ATOM 258 H MOL 1 14.507 9.330 4.472 0.00 0.00 H -ATOM 259 H MOL 1 3.876 5.191 11.945 0.00 0.00 H -ATOM 260 O MOL 1 4.818 5.246 11.945 0.00 0.00 O -ATOM 261 H MOL 1 4.993 4.319 11.945 0.00 0.00 H -ATOM 262 H MOL 1 6.226 6.828 11.264 0.00 0.00 H -ATOM 263 O MOL 1 7.167 6.882 11.264 0.00 0.00 O -ATOM 264 H MOL 1 7.342 5.955 11.264 0.00 0.00 H -ATOM 265 H MOL 1 3.202 9.766 3.900 0.00 0.00 H -ATOM 266 O MOL 1 4.143 9.821 3.900 0.00 0.00 O -ATOM 267 H MOL 1 4.318 8.894 3.900 0.00 0.00 H -ATOM 268 H MOL 1 12.942 5.592 4.532 0.00 0.00 H -ATOM 269 O MOL 1 13.884 5.646 4.532 0.00 0.00 O -ATOM 270 H MOL 1 14.059 4.719 4.532 0.00 0.00 H -ATOM 271 H MOL 1 4.341 9.628 9.004 0.00 0.00 H -ATOM 272 O MOL 1 5.282 9.682 9.004 0.00 0.00 O -ATOM 273 H MOL 1 5.458 8.755 9.004 0.00 0.00 H -ATOM 274 H MOL 1 13.274 13.142 3.549 0.00 0.00 H -ATOM 275 O MOL 1 14.216 13.197 3.549 0.00 0.00 O -ATOM 276 H MOL 1 14.391 12.270 3.549 0.00 0.00 H -ATOM 277 H MOL 1 3.276 6.152 7.287 0.00 0.00 H -ATOM 278 O MOL 1 4.217 6.206 7.287 0.00 0.00 O -ATOM 279 H MOL 1 4.392 5.279 7.287 0.00 0.00 H -ATOM 280 H MOL 1 6.608 12.279 4.127 0.00 0.00 H -ATOM 281 O MOL 1 7.550 12.333 4.127 0.00 0.00 O -ATOM 282 H MOL 1 7.725 11.406 4.127 0.00 0.00 H -ATOM 283 H MOL 1 14.089 2.765 8.432 0.00 0.00 H -ATOM 284 O MOL 1 15.031 2.819 8.432 0.00 0.00 O -ATOM 285 H MOL 1 15.206 1.892 8.432 0.00 0.00 H -ATOM 286 H MOL 1 12.247 0.859 8.664 0.00 0.00 H -ATOM 287 O MOL 1 13.188 0.913 8.664 0.00 0.00 O -ATOM 288 H MOL 1 13.363 -0.014 8.664 0.00 0.00 H -ATOM 289 H MOL 1 4.467 13.517 1.951 0.00 0.00 H -ATOM 290 O MOL 1 5.409 13.571 1.951 0.00 0.00 O -ATOM 291 H MOL 1 5.584 12.645 1.951 0.00 0.00 H -ATOM 292 H MOL 1 14.342 0.329 12.432 0.00 0.00 H -ATOM 293 O MOL 1 15.283 0.384 12.432 0.00 0.00 O -ATOM 294 H MOL 1 15.459 -0.543 12.432 0.00 0.00 H -ATOM 295 H MOL 1 11.322 2.305 0.943 0.00 0.00 H -ATOM 296 O MOL 1 12.263 2.360 0.943 0.00 0.00 O -ATOM 297 H MOL 1 12.438 1.433 0.943 0.00 0.00 H -ATOM 298 H MOL 1 7.319 4.026 10.612 0.00 0.00 H -ATOM 299 O MOL 1 8.261 4.081 10.612 0.00 0.00 O -ATOM 300 H MOL 1 8.436 3.154 10.612 0.00 0.00 H -TER -END diff --git a/examples/latte_interface_bomd/input.in b/examples/latte_interface_bomd/input.in deleted file mode 100644 index 9ece3820..00000000 --- a/examples/latte_interface_bomd/input.in +++ /dev/null @@ -1,26 +0,0 @@ -#Input file for SEDACS - -Verbosity= True -Threshold= 1.0E-7 -CoordsFile= coords_1299.pdb -#CoordsFile= wat2.xyz -#CoordsFile= algo.xyz -#CoordsFile= coords_2955.pdb -#CoordsFile= coords_100.pdb -#CoordsFile= water_128.xyz -GraphThreshold= 0.01 -MaxDeg= 500 #Max graph degree -Rcut= 3.0 #Radius cutoff -PartitionType= Metis -#PartitionType= Regular -#PartitionType= MinCut -NumParts= 4 -SCFTol= 1.0E-6 -Overlap= True -ElectronicTemperature= 1000 -MuCalculationType= #FromParts, Dynamical, None -Orbitals= {"H":1,"O":4} #This has to be know for each engine -NumAdaptiveIter= 100 #Number of graph adaptive iterations -Engine= {"Name":"LATTE","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/python/","Executable":"/home/cnegre/","RhoSolverMethod":"Diag","Accelerator":"No","AcceleratorPath":"/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/nvda"} #The name of the external code -#Engine= {"Name":"ProxyAFortran","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/fortran/","Executable":"/home/cnegre/"} #The name of the external code - diff --git a/examples/latte_interface_bomd/regularbomd.py b/examples/latte_interface_bomd/regularbomd.py deleted file mode 100644 index e248c386..00000000 --- a/examples/latte_interface_bomd/regularbomd.py +++ /dev/null @@ -1,130 +0,0 @@ -import sys -import argparse -import math -import torch -import numpy as np -import gc -#import os -torch.set_default_dtype(torch.float64) - -#### -from sedacs.driver.init import init, get_args -from sedacs.driver.graph_adaptive_scf import get_adaptiveSCFDM -from sedacs.driver.graph_adaptive_sp_energy_forces import get_sp_energy_forces -#### -# Global Constants -## @brief number of timesteps -MD_Iter = 100000 -## @brief coversion factor from mass*velocity^2 to kinetic energy -MVV2KE = 166.0538782 / 1.602176487 -## @brief size of the timestep -dt = 1.00 -## @brief conversion factor from kinetic energy to temperature -KE2T = 1.0 / 0.000086173435 -## @brief conversion factor from force to velocity -F2V = 0.01602176487 / 1.660548782 - -def main(): - """! main program""" - # Set random seed - torch.manual_seed(137) - np.random.seed(137) - # Open files to write down information during MD simulation - MD_xyz = open("MD.xyz", "w") - Energy_dat = open("Energy.dat", "w") - # Pass arguments from comand line - args = get_args() - # Initialize sedacs - np.set_printoptions(threshold=sys.maxsize) - # Initialize sdc parameters - sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init(args) - sdc.verb = False#True - mu = 0.0 - - element_type = torch.tensor(sy.types) - symbols = np.array(sy.symbols)[sy.types] - Hubbard_U = np.where(symbols == 'H', 12.054683, 0.0) + np.where(symbols == 'O', 11.876141, 0.0) - Mnuc = np.where(symbols == 'H', 1.0, 0.0) + np.where(symbols == 'O', 16.0, 0.0) - Hubbard_U = torch.tensor(Hubbard_U) - Mnuc = torch.tensor(Mnuc) - # Perform a graph-adaptive calculation of the density matrix - graphDH,sy.charges,mu,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu) - graphDH,sy.charges,EPOT,FTOT,mu,parts,subSysOnRank = get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu) - LBox = torch.tensor([sy.latticeVectors[0][0], sy.latticeVectors[1][1], sy.latticeVectors[2][2]]) - coords = torch.tensor(sy.coords) -# coords = sy.coords + 55.0 - q = torch.tensor(sy.charges) - Nr_atoms = sy.nats - EPOT = torch.tensor(EPOT) - FTOT = torch.tensor(FTOT) - - # Initialize velocities - V = 0 * coords.clone().detach() - #V = torch.sqrt(300 / KE2T / MVV2KE / Mnuc).unsqueeze(1) * torch.randn_like(coords) -# COM_V = torch.sum(V.T * Mnuc, axis=1) / Mnuc.sum() -# V = V - COM_V -# with torch.no_grad(): -# total_angular_momentum = torch.cross(coords, V * Mnuc.unsqueeze(1), axis=1).sum(axis=0) -# COM = torch.sum(coords * Mnuc.unsqueeze(1), axis=0) / Mnuc.sum() -# r = coords - COM -# V = V - torch.cross(total_angular_momentum.unsqueeze(0) / Mnuc.sum(), r, axis=1) / (r * r).sum(axis=1).unsqueeze(1) - # Record unwrapped coordsinates - unwrap_coords = coords.clone().detach().double() - - # MAIN MD LOOP {dR2(0)/dt2: V(0)->V(1/2); dn2(0)/dt2: n(0)->n(1); V(1/2): R(0)->R(1); dR2(1)/dt2: V(1/2)->V(1)} - for MD_step in range(MD_Iter): - # Calculate kinetic energy from particle velocities - EKIN = torch.sum(0.5 * MVV2KE * torch.dot(Mnuc, torch.sum(V**2, dim=1))) - # Calculate temperature from kinetic energy - Temperature = (2.0 / 3.0) * KE2T * EKIN / Nr_atoms - ETOT = EKIN.item() + EPOT - # Current time - Time = (MD_step) * dt - print( - f"Time = {Time:<16.8f} Etotal = {ETOT:<16.8f} Temperature = {Temperature:<16.8f}") - - # dR2(0)/dt2: V(0)->V(1/2) - V = V + 0.5 * dt * F2V * FTOT / Mnuc.unsqueeze(1) #- 0.2 * V - # Here we record the time, temperature, and charges. Note that the last term, q, would be constant if not solving exact charges during MD - with torch.no_grad(): - Energy_dat.write( - f"{Time/1000:<16.8f} {ETOT:<16.16f} {Temperature:<16.8f} {EKIN.item():<16.16f} {EPOT.item():<16.16f}\n" - ) - - # Here we dump the MD trajectory - if (Time % 50) == 49: - #MD_xyz.write(f'## MD_step= {MD_step}\n') - MD_xyz.write(f"{Nr_atoms}\n\n") - for I in range(Nr_atoms): - MD_xyz.write(f"{element_type[I].item()} {sy.coords[I, 0].item()} {sy.coords[I, 1].item()} {sy.coords[I, 2].item()} {n[I].item()} {qx[I].item()} {qqx[I].item()} {qqqx[I].item()} {q[I].item()}\n") - MD_xyz.flush() - Energy_dat.flush() - gc.collect() - torch.cuda.empty_cache() - - # Update positions with full Verlet step for R - disp = dt * V - #disp = FTOT / torch.max(FTOT) * 0.001 - coords = coords + disp # + dt * V - with torch.no_grad(): - unwrap_coords = unwrap_coords + disp - # Reset sy.coordsinates within the periodic box - coords = coords - LBox * torch.floor(coords / LBox) - - sy.coords = coords.numpy() - # Perform a graph-adaptive calculation of the density matrix - graphDH,sy.charges,mu,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu) - graphDH,sy.charges,EPOT,FTOT,mu,parts,subSysOnRank = get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu) - sy.coords = torch.tensor(sy.coords) - EPOT = torch.tensor(EPOT) - FTOT = torch.tensor(FTOT) - - V = V + 0.5 * dt * F2V * FTOT / Mnuc.unsqueeze(1) #- 0.01 * V - - MD_xyz.close() - Energy_dat.close() - - -if __name__ == "__main__": - print('start') - main() diff --git a/examples/latte_interface_bomd/wat.pdb b/examples/latte_interface_bomd/wat.pdb deleted file mode 100644 index 034d516a..00000000 --- a/examples/latte_interface_bomd/wat.pdb +++ /dev/null @@ -1,9 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE coords_100.pdb -CRYST1 50.459 50.459 50.459 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H MOL 1 0.749 -0.000 0.442 0.00 0.00 H -ATOM 2 O MOL 1 0.000 0.020 -0.165 0.00 0.00 O -ATOM 3 H MOL 1 -0.749 -0.000 0.442 0.00 0.00 H -TER -END diff --git a/examples/latte_interface_bomd/wat.xyz b/examples/latte_interface_bomd/wat.xyz deleted file mode 100644 index 1f469a46..00000000 --- a/examples/latte_interface_bomd/wat.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -Lattice="110.00 0.0 0.0 0.0 110.00 0.0 0.0 0.0 110.00" -H 0.7493682 0.0000000 0.4424329 -O 0.0000000 0.0000000 -0.1653507 -H -0.7493682 0.0000000 0.4424329 diff --git a/examples/latte_interface_energy_forces/coords_100.pdb b/examples/latte_interface_energy_forces/coords_100.pdb deleted file mode 100644 index 63234eda..00000000 --- a/examples/latte_interface_energy_forces/coords_100.pdb +++ /dev/null @@ -1,306 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE coords_100.pdb -CRYST1 15.459 15.459 15.459 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H MOL 1 0.024 -0.035 0.000 0.00 0.00 H -ATOM 2 O MOL 1 0.965 0.020 0.000 0.00 0.00 O -ATOM 3 H MOL 1 1.141 -0.907 0.000 0.00 0.00 H -ATOM 4 H MOL 1 1.462 1.513 1.709 0.00 0.00 H -ATOM 5 O MOL 1 2.404 1.568 1.709 0.00 0.00 O -ATOM 6 H MOL 1 2.579 0.641 1.709 0.00 0.00 H -ATOM 7 H MOL 1 2.820 2.865 3.165 0.00 0.00 H -ATOM 8 O MOL 1 3.761 2.919 3.165 0.00 0.00 O -ATOM 9 H MOL 1 3.937 1.993 3.165 0.00 0.00 H -ATOM 10 H MOL 1 4.153 4.495 4.880 0.00 0.00 H -ATOM 11 O MOL 1 5.095 4.549 4.880 0.00 0.00 O -ATOM 12 H MOL 1 5.270 3.623 4.880 0.00 0.00 H -ATOM 13 H MOL 1 6.507 6.886 7.361 0.00 0.00 H -ATOM 14 O MOL 1 7.449 6.940 7.361 0.00 0.00 O -ATOM 15 H MOL 1 7.624 6.013 7.361 0.00 0.00 H -ATOM 16 H MOL 1 8.157 8.371 9.279 0.00 0.00 H -ATOM 17 O MOL 1 9.098 8.425 9.279 0.00 0.00 O -ATOM 18 H MOL 1 9.273 7.498 9.279 0.00 0.00 H -ATOM 19 H MOL 1 9.844 10.492 11.575 0.00 0.00 H -ATOM 20 O MOL 1 10.786 10.546 11.575 0.00 0.00 O -ATOM 21 H MOL 1 10.961 9.619 11.575 0.00 0.00 H -ATOM 22 H MOL 1 13.862 1.975 4.386 0.00 0.00 H -ATOM 23 O MOL 1 14.804 2.029 4.386 0.00 0.00 O -ATOM 24 H MOL 1 14.979 1.102 4.386 0.00 0.00 H -ATOM 25 H MOL 1 6.255 9.846 11.439 0.00 0.00 H -ATOM 26 O MOL 1 7.196 9.900 11.439 0.00 0.00 O -ATOM 27 H MOL 1 7.371 8.973 11.439 0.00 0.00 H -ATOM 28 H MOL 1 0.905 3.897 6.882 0.00 0.00 H -ATOM 29 O MOL 1 1.846 3.951 6.882 0.00 0.00 O -ATOM 30 H MOL 1 2.021 3.024 6.882 0.00 0.00 H -ATOM 31 H MOL 1 11.955 14.153 5.458 0.00 0.00 H -ATOM 32 O MOL 1 12.896 14.207 5.458 0.00 0.00 O -ATOM 33 H MOL 1 13.072 13.281 5.458 0.00 0.00 H -ATOM 34 H MOL 1 9.388 13.982 6.497 0.00 0.00 H -ATOM 35 O MOL 1 10.330 14.036 6.497 0.00 0.00 O -ATOM 36 H MOL 1 10.505 13.110 6.497 0.00 0.00 H -ATOM 37 H MOL 1 9.916 3.729 8.798 0.00 0.00 H -ATOM 38 O MOL 1 10.857 3.783 8.798 0.00 0.00 O -ATOM 39 H MOL 1 11.033 2.857 8.798 0.00 0.00 H -ATOM 40 H MOL 1 1.645 10.849 1.718 0.00 0.00 H -ATOM 41 O MOL 1 2.586 10.904 1.718 0.00 0.00 O -ATOM 42 H MOL 1 2.761 9.977 1.718 0.00 0.00 H -ATOM 43 H MOL 1 13.668 5.798 2.502 0.00 0.00 H -ATOM 44 O MOL 1 14.610 5.852 2.502 0.00 0.00 O -ATOM 45 H MOL 1 14.785 4.925 2.502 0.00 0.00 H -ATOM 46 H MOL 1 0.434 8.566 11.170 0.00 0.00 H -ATOM 47 O MOL 1 1.376 8.620 11.170 0.00 0.00 O -ATOM 48 H MOL 1 1.551 7.693 11.170 0.00 0.00 H -ATOM 49 H MOL 1 8.236 3.228 1.102 0.00 0.00 H -ATOM 50 O MOL 1 9.177 3.283 1.102 0.00 0.00 O -ATOM 51 H MOL 1 9.352 2.356 1.102 0.00 0.00 H -ATOM 52 H MOL 1 14.171 2.786 10.963 0.00 0.00 H -ATOM 53 O MOL 1 15.112 2.840 10.963 0.00 0.00 O -ATOM 54 H MOL 1 15.287 1.913 10.963 0.00 0.00 H -ATOM 55 H MOL 1 10.024 12.300 0.152 0.00 0.00 H -ATOM 56 O MOL 1 10.966 12.354 0.152 0.00 0.00 O -ATOM 57 H MOL 1 11.141 11.428 0.152 0.00 0.00 H -ATOM 58 H MOL 1 11.444 7.694 1.210 0.00 0.00 H -ATOM 59 O MOL 1 12.386 7.748 1.210 0.00 0.00 O -ATOM 60 H MOL 1 12.561 6.822 1.210 0.00 0.00 H -ATOM 61 H MOL 1 5.914 9.892 5.228 0.00 0.00 H -ATOM 62 O MOL 1 6.855 9.947 5.228 0.00 0.00 O -ATOM 63 H MOL 1 7.030 9.020 5.228 0.00 0.00 H -ATOM 64 H MOL 1 11.015 2.278 3.209 0.00 0.00 H -ATOM 65 O MOL 1 11.957 2.332 3.209 0.00 0.00 O -ATOM 66 H MOL 1 12.132 1.406 3.209 0.00 0.00 H -ATOM 67 H MOL 1 5.157 14.137 9.690 0.00 0.00 H -ATOM 68 O MOL 1 6.099 14.192 9.690 0.00 0.00 O -ATOM 69 H MOL 1 6.274 13.265 9.690 0.00 0.00 H -ATOM 70 H MOL 1 13.014 10.851 2.149 0.00 0.00 H -ATOM 71 O MOL 1 13.956 10.906 2.149 0.00 0.00 O -ATOM 72 H MOL 1 14.131 9.979 2.149 0.00 0.00 H -ATOM 73 H MOL 1 6.432 7.342 4.083 0.00 0.00 H -ATOM 74 O MOL 1 7.373 7.396 4.083 0.00 0.00 O -ATOM 75 H MOL 1 7.548 6.469 4.083 0.00 0.00 H -ATOM 76 H MOL 1 13.237 7.650 6.098 0.00 0.00 H -ATOM 77 O MOL 1 14.178 7.704 6.098 0.00 0.00 O -ATOM 78 H MOL 1 14.353 6.777 6.098 0.00 0.00 H -ATOM 79 H MOL 1 8.056 0.377 3.941 0.00 0.00 H -ATOM 80 O MOL 1 8.997 0.431 3.941 0.00 0.00 O -ATOM 81 H MOL 1 9.172 -0.495 3.941 0.00 0.00 H -ATOM 82 H MOL 1 4.396 9.364 7.094 0.00 0.00 H -ATOM 83 O MOL 1 5.337 9.418 7.094 0.00 0.00 O -ATOM 84 H MOL 1 5.512 8.491 7.094 0.00 0.00 H -ATOM 85 H MOL 1 5.060 0.593 11.823 0.00 0.00 H -ATOM 86 O MOL 1 6.002 0.647 11.823 0.00 0.00 O -ATOM 87 H MOL 1 6.177 -0.280 11.823 0.00 0.00 H -ATOM 88 H MOL 1 10.805 13.676 1.929 0.00 0.00 H -ATOM 89 O MOL 1 11.747 13.730 1.929 0.00 0.00 O -ATOM 90 H MOL 1 11.922 12.804 1.929 0.00 0.00 H -ATOM 91 H MOL 1 10.422 5.195 5.779 0.00 0.00 H -ATOM 92 O MOL 1 11.364 5.250 5.779 0.00 0.00 O -ATOM 93 H MOL 1 11.539 4.323 5.779 0.00 0.00 H -ATOM 94 H MOL 1 2.609 5.311 0.365 0.00 0.00 H -ATOM 95 O MOL 1 3.551 5.365 0.365 0.00 0.00 O -ATOM 96 H MOL 1 3.726 4.438 0.365 0.00 0.00 H -ATOM 97 H MOL 1 0.247 12.838 7.622 0.00 0.00 H -ATOM 98 O MOL 1 1.189 12.892 7.622 0.00 0.00 O -ATOM 99 H MOL 1 1.364 11.966 7.622 0.00 0.00 H -ATOM 100 H MOL 1 0.400 4.030 12.734 0.00 0.00 H -ATOM 101 O MOL 1 1.342 4.084 12.734 0.00 0.00 O -ATOM 102 H MOL 1 1.517 3.158 12.734 0.00 0.00 H -ATOM 103 H MOL 1 6.344 11.570 0.306 0.00 0.00 H -ATOM 104 O MOL 1 7.286 11.624 0.306 0.00 0.00 O -ATOM 105 H MOL 1 7.461 10.698 0.306 0.00 0.00 H -ATOM 106 H MOL 1 1.457 8.882 5.810 0.00 0.00 H -ATOM 107 O MOL 1 2.399 8.937 5.810 0.00 0.00 O -ATOM 108 H MOL 1 2.574 8.010 5.810 0.00 0.00 H -ATOM 109 H MOL 1 1.246 12.939 10.266 0.00 0.00 H -ATOM 110 O MOL 1 2.187 12.993 10.266 0.00 0.00 O -ATOM 111 H MOL 1 2.362 12.067 10.266 0.00 0.00 H -ATOM 112 H MOL 1 5.844 10.735 2.510 0.00 0.00 H -ATOM 113 O MOL 1 6.786 10.789 2.510 0.00 0.00 O -ATOM 114 H MOL 1 6.961 9.862 2.510 0.00 0.00 H -ATOM 115 H MOL 1 9.752 5.415 11.518 0.00 0.00 H -ATOM 116 O MOL 1 10.694 5.470 11.518 0.00 0.00 O -ATOM 117 H MOL 1 10.869 4.543 11.518 0.00 0.00 H -ATOM 118 H MOL 1 10.062 11.535 7.714 0.00 0.00 H -ATOM 119 O MOL 1 11.004 11.590 7.714 0.00 0.00 O -ATOM 120 H MOL 1 11.179 10.663 7.714 0.00 0.00 H -ATOM 121 H MOL 1 11.140 0.576 13.274 0.00 0.00 H -ATOM 122 O MOL 1 12.081 0.630 13.274 0.00 0.00 O -ATOM 123 H MOL 1 12.256 -0.297 13.274 0.00 0.00 H -ATOM 124 H MOL 1 8.664 2.794 6.440 0.00 0.00 H -ATOM 125 O MOL 1 9.606 2.848 6.440 0.00 0.00 O -ATOM 126 H MOL 1 9.781 1.921 6.440 0.00 0.00 H -ATOM 127 H MOL 1 1.908 5.146 9.029 0.00 0.00 H -ATOM 128 O MOL 1 2.849 5.201 9.029 0.00 0.00 O -ATOM 129 H MOL 1 3.024 4.274 9.029 0.00 0.00 H -ATOM 130 H MOL 1 12.294 7.322 11.253 0.00 0.00 H -ATOM 131 O MOL 1 13.235 7.377 11.253 0.00 0.00 O -ATOM 132 H MOL 1 13.410 6.450 11.253 0.00 0.00 H -ATOM 133 H MOL 1 11.098 6.253 8.089 0.00 0.00 H -ATOM 134 O MOL 1 12.039 6.307 8.089 0.00 0.00 O -ATOM 135 H MOL 1 12.214 5.381 8.089 0.00 0.00 H -ATOM 136 H MOL 1 4.497 3.412 10.233 0.00 0.00 H -ATOM 137 O MOL 1 5.438 3.466 10.233 0.00 0.00 O -ATOM 138 H MOL 1 5.613 2.539 10.233 0.00 0.00 H -ATOM 139 H MOL 1 12.642 9.031 8.163 0.00 0.00 H -ATOM 140 O MOL 1 13.584 9.085 8.163 0.00 0.00 O -ATOM 141 H MOL 1 13.759 8.159 8.163 0.00 0.00 H -ATOM 142 H MOL 1 1.618 12.178 5.523 0.00 0.00 H -ATOM 143 O MOL 1 2.560 12.233 5.523 0.00 0.00 O -ATOM 144 H MOL 1 2.735 11.306 5.523 0.00 0.00 H -ATOM 145 H MOL 1 11.030 2.396 11.405 0.00 0.00 H -ATOM 146 O MOL 1 11.971 2.450 11.405 0.00 0.00 O -ATOM 147 H MOL 1 12.146 1.524 11.405 0.00 0.00 H -ATOM 148 H MOL 1 13.962 8.475 13.187 0.00 0.00 H -ATOM 149 O MOL 1 14.903 8.529 13.187 0.00 0.00 O -ATOM 150 H MOL 1 15.078 7.602 13.187 0.00 0.00 H -ATOM 151 H MOL 1 9.462 8.027 5.394 0.00 0.00 H -ATOM 152 O MOL 1 10.404 8.081 5.394 0.00 0.00 O -ATOM 153 H MOL 1 10.579 7.155 5.394 0.00 0.00 H -ATOM 154 H MOL 1 8.529 8.120 2.400 0.00 0.00 H -ATOM 155 O MOL 1 9.471 8.175 2.400 0.00 0.00 O -ATOM 156 H MOL 1 9.646 7.248 2.400 0.00 0.00 H -ATOM 157 H MOL 1 8.139 0.978 12.304 0.00 0.00 H -ATOM 158 O MOL 1 9.081 1.033 12.304 0.00 0.00 O -ATOM 159 H MOL 1 9.256 0.106 12.304 0.00 0.00 H -ATOM 160 H MOL 1 1.628 12.028 12.490 0.00 0.00 H -ATOM 161 O MOL 1 2.569 12.082 12.490 0.00 0.00 O -ATOM 162 H MOL 1 2.744 11.155 12.490 0.00 0.00 H -ATOM 163 H MOL 1 6.188 3.476 7.931 0.00 0.00 H -ATOM 164 O MOL 1 7.129 3.530 7.931 0.00 0.00 O -ATOM 165 H MOL 1 7.305 2.604 7.931 0.00 0.00 H -ATOM 166 H MOL 1 11.865 12.623 9.604 0.00 0.00 H -ATOM 167 O MOL 1 12.807 12.677 9.604 0.00 0.00 O -ATOM 168 H MOL 1 12.982 11.750 9.604 0.00 0.00 H -ATOM 169 H MOL 1 9.083 5.793 0.741 0.00 0.00 H -ATOM 170 O MOL 1 10.025 5.847 0.741 0.00 0.00 O -ATOM 171 H MOL 1 10.200 4.921 0.741 0.00 0.00 H -ATOM 172 H MOL 1 13.001 1.894 6.496 0.00 0.00 H -ATOM 173 O MOL 1 13.942 1.949 6.496 0.00 0.00 O -ATOM 174 H MOL 1 14.117 1.022 6.496 0.00 0.00 H -ATOM 175 H MOL 1 1.513 8.921 9.234 0.00 0.00 H -ATOM 176 O MOL 1 2.454 8.975 9.234 0.00 0.00 O -ATOM 177 H MOL 1 2.629 8.049 9.234 0.00 0.00 H -ATOM 178 H MOL 1 5.013 8.716 0.609 0.00 0.00 H -ATOM 179 O MOL 1 5.954 8.770 0.609 0.00 0.00 O -ATOM 180 H MOL 1 6.129 7.843 0.609 0.00 0.00 H -ATOM 181 H MOL 1 6.661 3.635 13.318 0.00 0.00 H -ATOM 182 O MOL 1 7.602 3.690 13.318 0.00 0.00 O -ATOM 183 H MOL 1 7.777 2.763 13.318 0.00 0.00 H -ATOM 184 H MOL 1 5.109 3.641 1.722 0.00 0.00 H -ATOM 185 O MOL 1 6.050 3.696 1.722 0.00 0.00 O -ATOM 186 H MOL 1 6.225 2.769 1.722 0.00 0.00 H -ATOM 187 H MOL 1 6.461 0.702 0.842 0.00 0.00 H -ATOM 188 O MOL 1 7.402 0.757 0.842 0.00 0.00 O -ATOM 189 H MOL 1 7.577 -0.170 0.842 0.00 0.00 H -ATOM 190 H MOL 1 3.083 7.592 2.472 0.00 0.00 H -ATOM 191 O MOL 1 4.025 7.646 2.472 0.00 0.00 O -ATOM 192 H MOL 1 4.200 6.720 2.472 0.00 0.00 H -ATOM 193 H MOL 1 8.638 14.297 9.461 0.00 0.00 H -ATOM 194 O MOL 1 9.579 14.352 9.461 0.00 0.00 O -ATOM 195 H MOL 1 9.754 13.425 9.461 0.00 0.00 H -ATOM 196 H MOL 1 4.773 13.629 6.292 0.00 0.00 H -ATOM 197 O MOL 1 5.714 13.684 6.292 0.00 0.00 O -ATOM 198 H MOL 1 5.889 12.757 6.292 0.00 0.00 H -ATOM 199 H MOL 1 7.047 3.198 3.702 0.00 0.00 H -ATOM 200 O MOL 1 7.989 3.252 3.702 0.00 0.00 O -ATOM 201 H MOL 1 8.164 2.326 3.702 0.00 0.00 H -ATOM 202 H MOL 1 2.094 0.204 8.780 0.00 0.00 H -ATOM 203 O MOL 1 3.035 0.258 8.780 0.00 0.00 O -ATOM 204 H MOL 1 3.210 -0.669 8.780 0.00 0.00 H -ATOM 205 H MOL 1 6.427 6.710 13.409 0.00 0.00 H -ATOM 206 O MOL 1 7.368 6.765 13.409 0.00 0.00 O -ATOM 207 H MOL 1 7.543 5.838 13.409 0.00 0.00 H -ATOM 208 H MOL 1 4.534 6.437 9.463 0.00 0.00 H -ATOM 209 O MOL 1 5.476 6.491 9.463 0.00 0.00 O -ATOM 210 H MOL 1 5.651 5.565 9.463 0.00 0.00 H -ATOM 211 H MOL 1 2.755 13.902 4.044 0.00 0.00 H -ATOM 212 O MOL 1 3.697 13.957 4.044 0.00 0.00 O -ATOM 213 H MOL 1 3.872 13.030 4.044 0.00 0.00 H -ATOM 214 H MOL 1 3.647 9.025 13.044 0.00 0.00 H -ATOM 215 O MOL 1 4.589 9.080 13.044 0.00 0.00 O -ATOM 216 H MOL 1 4.764 8.153 13.044 0.00 0.00 H -ATOM 217 H MOL 1 2.475 1.170 14.119 0.00 0.00 H -ATOM 218 O MOL 1 3.416 1.224 14.119 0.00 0.00 O -ATOM 219 H MOL 1 3.592 0.298 14.119 0.00 0.00 H -ATOM 220 H MOL 1 9.573 10.933 2.915 0.00 0.00 H -ATOM 221 O MOL 1 10.514 10.988 2.915 0.00 0.00 O -ATOM 222 H MOL 1 10.689 10.061 2.915 0.00 0.00 H -ATOM 223 H MOL 1 6.960 10.953 7.307 0.00 0.00 H -ATOM 224 O MOL 1 7.901 11.007 7.307 0.00 0.00 O -ATOM 225 H MOL 1 8.076 10.080 7.307 0.00 0.00 H -ATOM 226 H MOL 1 12.713 4.501 0.595 0.00 0.00 H -ATOM 227 O MOL 1 13.655 4.555 0.595 0.00 0.00 O -ATOM 228 H MOL 1 13.830 3.628 0.595 0.00 0.00 H -ATOM 229 H MOL 1 13.212 11.633 13.218 0.00 0.00 H -ATOM 230 O MOL 1 14.154 11.687 13.218 0.00 0.00 O -ATOM 231 H MOL 1 14.329 10.761 13.218 0.00 0.00 H -ATOM 232 H MOL 1 11.861 13.431 11.502 0.00 0.00 H -ATOM 233 O MOL 1 12.803 13.485 11.502 0.00 0.00 O -ATOM 234 H MOL 1 12.978 12.558 11.502 0.00 0.00 H -ATOM 235 H MOL 1 9.400 8.430 13.259 0.00 0.00 H -ATOM 236 O MOL 1 10.342 8.485 13.259 0.00 0.00 O -ATOM 237 H MOL 1 10.517 7.558 13.259 0.00 0.00 H -ATOM 238 H MOL 1 2.820 1.799 5.389 0.00 0.00 H -ATOM 239 O MOL 1 3.762 1.854 5.389 0.00 0.00 O -ATOM 240 H MOL 1 3.937 0.927 5.389 0.00 0.00 H -ATOM 241 H MOL 1 9.302 11.302 5.371 0.00 0.00 H -ATOM 242 O MOL 1 10.244 11.357 5.371 0.00 0.00 O -ATOM 243 H MOL 1 10.419 10.430 5.371 0.00 0.00 H -ATOM 244 H MOL 1 7.076 12.436 12.400 0.00 0.00 H -ATOM 245 O MOL 1 8.017 12.491 12.400 0.00 0.00 O -ATOM 246 H MOL 1 8.192 11.564 12.400 0.00 0.00 H -ATOM 247 H MOL 1 0.564 8.190 0.846 0.00 0.00 H -ATOM 248 O MOL 1 1.505 8.245 0.846 0.00 0.00 O -ATOM 249 H MOL 1 1.680 7.318 0.846 0.00 0.00 H -ATOM 250 H MOL 1 7.010 11.136 9.638 0.00 0.00 H -ATOM 251 O MOL 1 7.952 11.191 9.638 0.00 0.00 O -ATOM 252 H MOL 1 8.127 10.264 9.638 0.00 0.00 H -ATOM 253 H MOL 1 9.268 5.723 3.606 0.00 0.00 H -ATOM 254 O MOL 1 10.209 5.777 3.606 0.00 0.00 O -ATOM 255 H MOL 1 10.384 4.850 3.606 0.00 0.00 H -ATOM 256 H MOL 1 13.390 10.203 4.472 0.00 0.00 H -ATOM 257 O MOL 1 14.332 10.257 4.472 0.00 0.00 O -ATOM 258 H MOL 1 14.507 9.330 4.472 0.00 0.00 H -ATOM 259 H MOL 1 3.876 5.191 11.945 0.00 0.00 H -ATOM 260 O MOL 1 4.818 5.246 11.945 0.00 0.00 O -ATOM 261 H MOL 1 4.993 4.319 11.945 0.00 0.00 H -ATOM 262 H MOL 1 6.226 6.828 11.264 0.00 0.00 H -ATOM 263 O MOL 1 7.167 6.882 11.264 0.00 0.00 O -ATOM 264 H MOL 1 7.342 5.955 11.264 0.00 0.00 H -ATOM 265 H MOL 1 3.202 9.766 3.900 0.00 0.00 H -ATOM 266 O MOL 1 4.143 9.821 3.900 0.00 0.00 O -ATOM 267 H MOL 1 4.318 8.894 3.900 0.00 0.00 H -ATOM 268 H MOL 1 12.942 5.592 4.532 0.00 0.00 H -ATOM 269 O MOL 1 13.884 5.646 4.532 0.00 0.00 O -ATOM 270 H MOL 1 14.059 4.719 4.532 0.00 0.00 H -ATOM 271 H MOL 1 4.341 9.628 9.004 0.00 0.00 H -ATOM 272 O MOL 1 5.282 9.682 9.004 0.00 0.00 O -ATOM 273 H MOL 1 5.458 8.755 9.004 0.00 0.00 H -ATOM 274 H MOL 1 13.274 13.142 3.549 0.00 0.00 H -ATOM 275 O MOL 1 14.216 13.197 3.549 0.00 0.00 O -ATOM 276 H MOL 1 14.391 12.270 3.549 0.00 0.00 H -ATOM 277 H MOL 1 3.276 6.152 7.287 0.00 0.00 H -ATOM 278 O MOL 1 4.217 6.206 7.287 0.00 0.00 O -ATOM 279 H MOL 1 4.392 5.279 7.287 0.00 0.00 H -ATOM 280 H MOL 1 6.608 12.279 4.127 0.00 0.00 H -ATOM 281 O MOL 1 7.550 12.333 4.127 0.00 0.00 O -ATOM 282 H MOL 1 7.725 11.406 4.127 0.00 0.00 H -ATOM 283 H MOL 1 14.089 2.765 8.432 0.00 0.00 H -ATOM 284 O MOL 1 15.031 2.819 8.432 0.00 0.00 O -ATOM 285 H MOL 1 15.206 1.892 8.432 0.00 0.00 H -ATOM 286 H MOL 1 12.247 0.859 8.664 0.00 0.00 H -ATOM 287 O MOL 1 13.188 0.913 8.664 0.00 0.00 O -ATOM 288 H MOL 1 13.363 -0.014 8.664 0.00 0.00 H -ATOM 289 H MOL 1 4.467 13.517 1.951 0.00 0.00 H -ATOM 290 O MOL 1 5.409 13.571 1.951 0.00 0.00 O -ATOM 291 H MOL 1 5.584 12.645 1.951 0.00 0.00 H -ATOM 292 H MOL 1 14.342 0.329 12.432 0.00 0.00 H -ATOM 293 O MOL 1 15.283 0.384 12.432 0.00 0.00 O -ATOM 294 H MOL 1 15.459 -0.543 12.432 0.00 0.00 H -ATOM 295 H MOL 1 11.322 2.305 0.943 0.00 0.00 H -ATOM 296 O MOL 1 12.263 2.360 0.943 0.00 0.00 O -ATOM 297 H MOL 1 12.438 1.433 0.943 0.00 0.00 H -ATOM 298 H MOL 1 7.319 4.026 10.612 0.00 0.00 H -ATOM 299 O MOL 1 8.261 4.081 10.612 0.00 0.00 O -ATOM 300 H MOL 1 8.436 3.154 10.612 0.00 0.00 H -TER -END diff --git a/examples/latte_interface_energy_forces/coords_1299.pdb b/examples/latte_interface_energy_forces/coords_1299.pdb deleted file mode 100644 index 55d5d1ad..00000000 --- a/examples/latte_interface_energy_forces/coords_1299.pdb +++ /dev/null @@ -1,1305 +0,0 @@ -TITLE Built with Packmol -REMARK Packmol generated pdb file -CRYST1 40.230 40.230 40.230 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H HOH 0 24.812 22.184 19.109 1.00 0.00 H -ATOM 2 O HOH 1 24.014 22.044 19.696 1.00 0.00 O -ATOM 3 H HOH 0 23.492 21.337 19.219 1.00 0.00 H -ATOM 4 OW SOL 1 17.915 12.852 12.888 1.00 0.00 O -ATOM 5 HW1 SOL 1 18.247 13.543 12.247 1.00 0.00 H -ATOM 6 HW2 SOL 1 17.565 12.128 12.294 1.00 0.00 H -ATOM 7 OW SOL 2 17.524 28.252 22.152 1.00 0.00 O -ATOM 8 HW1 SOL 2 17.842 29.134 21.806 1.00 0.00 H -ATOM 9 HW2 SOL 2 16.749 28.493 22.736 1.00 0.00 H -ATOM 10 OW SOL 3 18.272 22.452 8.081 1.00 0.00 O -ATOM 11 HW1 SOL 3 18.633 21.922 8.848 1.00 0.00 H -ATOM 12 HW2 SOL 3 17.651 21.814 7.625 1.00 0.00 H -ATOM 13 OW SOL 4 22.430 24.527 31.340 1.00 0.00 O -ATOM 14 HW1 SOL 4 22.675 23.743 31.910 1.00 0.00 H -ATOM 15 HW2 SOL 4 22.090 25.200 31.998 1.00 0.00 H -ATOM 16 OW SOL 5 25.090 23.960 22.405 1.00 0.00 O -ATOM 17 HW1 SOL 5 24.836 23.682 21.479 1.00 0.00 H -ATOM 18 HW2 SOL 5 26.000 23.563 22.529 1.00 0.00 H -ATOM 19 OW SOL 6 24.774 20.640 26.519 1.00 0.00 O -ATOM 20 HW1 SOL 6 24.293 19.797 26.761 1.00 0.00 H -ATOM 21 HW2 SOL 6 24.915 21.092 27.400 1.00 0.00 H -ATOM 22 OW SOL 7 26.990 22.203 21.118 1.00 0.00 O -ATOM 23 HW1 SOL 7 26.249 21.867 21.698 1.00 0.00 H -ATOM 24 HW2 SOL 7 26.681 23.114 20.845 1.00 0.00 H -ATOM 25 OW SOL 8 6.883 20.799 22.990 1.00 0.00 O -ATOM 26 HW1 SOL 8 7.731 20.467 23.403 1.00 0.00 H -ATOM 27 HW2 SOL 8 6.530 21.448 23.664 1.00 0.00 H -ATOM 28 OW SOL 9 22.196 12.513 19.542 1.00 0.00 O -ATOM 29 HW1 SOL 9 21.895 11.768 20.137 1.00 0.00 H -ATOM 30 HW2 SOL 9 22.528 13.206 20.181 1.00 0.00 H -ATOM 31 OW SOL 10 24.367 14.196 27.807 1.00 0.00 O -ATOM 32 HW1 SOL 10 24.759 13.864 26.949 1.00 0.00 H -ATOM 33 HW2 SOL 10 25.039 14.862 28.132 1.00 0.00 H -ATOM 34 OW SOL 11 9.054 23.271 16.103 1.00 0.00 O -ATOM 35 HW1 SOL 11 9.000 23.179 15.109 1.00 0.00 H -ATOM 36 HW2 SOL 11 10.012 23.068 16.307 1.00 0.00 H -ATOM 37 OW SOL 12 13.728 24.315 29.715 1.00 0.00 O -ATOM 38 HW1 SOL 12 14.398 24.828 29.178 1.00 0.00 H -ATOM 39 HW2 SOL 12 13.236 23.780 29.028 1.00 0.00 H -ATOM 40 OW SOL 13 14.471 25.164 21.554 1.00 0.00 O -ATOM 41 HW1 SOL 13 14.885 25.186 22.464 1.00 0.00 H -ATOM 42 HW2 SOL 13 13.759 25.864 21.602 1.00 0.00 H -ATOM 43 OW SOL 14 26.294 31.275 22.228 1.00 0.00 O -ATOM 44 HW1 SOL 14 26.728 31.339 23.126 1.00 0.00 H -ATOM 45 HW2 SOL 14 26.431 30.319 21.968 1.00 0.00 H -ATOM 46 OW SOL 15 26.994 11.521 25.850 1.00 0.00 O -ATOM 47 HW1 SOL 15 26.171 11.436 25.288 1.00 0.00 H -ATOM 48 HW2 SOL 15 27.117 12.509 25.940 1.00 0.00 H -ATOM 49 OW SOL 16 16.539 28.602 27.834 1.00 0.00 O -ATOM 50 HW1 SOL 16 15.693 28.079 27.733 1.00 0.00 H -ATOM 51 HW2 SOL 16 16.972 28.525 26.936 1.00 0.00 H -ATOM 52 OW SOL 17 22.819 23.562 21.747 1.00 0.00 O -ATOM 53 HW1 SOL 17 23.183 24.097 22.509 1.00 0.00 H -ATOM 54 HW2 SOL 17 22.769 22.633 22.114 1.00 0.00 H -ATOM 55 OW SOL 18 19.599 24.838 14.635 1.00 0.00 O -ATOM 56 HW1 SOL 18 20.294 25.205 14.016 1.00 0.00 H -ATOM 57 HW2 SOL 18 18.904 24.470 14.018 1.00 0.00 H -ATOM 58 OW SOL 19 11.460 21.896 29.300 1.00 0.00 O -ATOM 59 HW1 SOL 19 12.202 22.159 29.917 1.00 0.00 H -ATOM 60 HW2 SOL 19 10.878 21.312 29.867 1.00 0.00 H -ATOM 61 OW SOL 20 13.460 8.606 19.737 1.00 0.00 O -ATOM 62 HW1 SOL 20 13.490 8.653 20.735 1.00 0.00 H -ATOM 63 HW2 SOL 20 13.017 7.729 19.555 1.00 0.00 H -ATOM 64 OW SOL 21 26.689 19.633 27.144 1.00 0.00 O -ATOM 65 HW1 SOL 21 25.881 19.410 27.689 1.00 0.00 H -ATOM 66 HW2 SOL 21 27.282 20.115 27.789 1.00 0.00 H -ATOM 67 OW SOL 22 12.680 24.355 15.838 1.00 0.00 O -ATOM 68 HW1 SOL 22 12.330 25.241 16.143 1.00 0.00 H -ATOM 69 HW2 SOL 22 13.173 24.574 14.996 1.00 0.00 H -ATOM 70 OW SOL 23 17.500 25.332 29.830 1.00 0.00 O -ATOM 71 HW1 SOL 23 18.055 26.125 29.579 1.00 0.00 H -ATOM 72 HW2 SOL 23 18.141 24.567 29.772 1.00 0.00 H -ATOM 73 OW SOL 24 24.609 7.817 20.898 1.00 0.00 O -ATOM 74 HW1 SOL 24 25.282 8.251 21.495 1.00 0.00 H -ATOM 75 HW2 SOL 24 23.751 7.908 21.404 1.00 0.00 H -ATOM 76 OW SOL 25 19.438 10.285 16.542 1.00 0.00 O -ATOM 77 HW1 SOL 25 18.832 10.543 15.790 1.00 0.00 H -ATOM 78 HW2 SOL 25 18.857 9.725 17.132 1.00 0.00 H -ATOM 79 OW SOL 26 11.378 19.670 24.247 1.00 0.00 O -ATOM 80 HW1 SOL 26 12.271 19.520 24.670 1.00 0.00 H -ATOM 81 HW2 SOL 26 11.565 20.341 23.530 1.00 0.00 H -ATOM 82 OW SOL 27 19.982 33.490 17.847 1.00 0.00 O -ATOM 83 HW1 SOL 27 20.767 33.113 18.339 1.00 0.00 H -ATOM 84 HW2 SOL 27 19.790 34.344 18.330 1.00 0.00 H -ATOM 85 OW SOL 28 16.937 23.412 19.668 1.00 0.00 O -ATOM 86 HW1 SOL 28 16.821 22.419 19.661 1.00 0.00 H -ATOM 87 HW2 SOL 28 17.719 23.554 20.275 1.00 0.00 H -ATOM 88 OW SOL 29 27.579 22.373 10.254 1.00 0.00 O -ATOM 89 HW1 SOL 29 28.063 21.629 9.795 1.00 0.00 H -ATOM 90 HW2 SOL 29 26.978 22.738 9.543 1.00 0.00 H -ATOM 91 OW SOL 30 12.743 19.748 16.777 1.00 0.00 O -ATOM 92 HW1 SOL 30 12.101 19.822 16.015 1.00 0.00 H -ATOM 93 HW2 SOL 30 13.630 19.635 16.329 1.00 0.00 H -ATOM 94 OW SOL 31 22.687 17.370 21.870 1.00 0.00 O -ATOM 95 HW1 SOL 31 23.080 16.659 22.453 1.00 0.00 H -ATOM 96 HW2 SOL 31 22.590 18.152 22.485 1.00 0.00 H -ATOM 97 OW SOL 32 22.513 10.240 16.651 1.00 0.00 O -ATOM 98 HW1 SOL 32 22.192 10.135 17.592 1.00 0.00 H -ATOM 99 HW2 SOL 32 22.854 11.179 16.622 1.00 0.00 H -ATOM 100 OW SOL 33 10.472 16.762 13.933 1.00 0.00 O -ATOM 101 HW1 SOL 33 9.659 16.888 14.501 1.00 0.00 H -ATOM 102 HW2 SOL 33 10.489 15.777 13.761 1.00 0.00 H -ATOM 103 OW SOL 34 24.723 25.943 21.674 1.00 0.00 O -ATOM 104 HW1 SOL 34 23.754 25.698 21.658 1.00 0.00 H -ATOM 105 HW2 SOL 34 24.933 26.139 20.717 1.00 0.00 H -ATOM 106 OW SOL 35 8.848 23.597 22.834 1.00 0.00 O -ATOM 107 HW1 SOL 35 8.137 23.529 23.534 1.00 0.00 H -ATOM 108 HW2 SOL 35 8.911 22.667 22.471 1.00 0.00 H -ATOM 109 OW SOL 36 25.003 14.221 21.630 1.00 0.00 O -ATOM 110 HW1 SOL 36 25.360 13.898 22.506 1.00 0.00 H -ATOM 111 HW2 SOL 36 25.075 15.216 21.699 1.00 0.00 H -ATOM 112 OW SOL 37 17.024 25.204 21.412 1.00 0.00 O -ATOM 113 HW1 SOL 37 17.045 26.028 20.846 1.00 0.00 H -ATOM 114 HW2 SOL 37 16.331 24.633 20.973 1.00 0.00 H -ATOM 115 OW SOL 38 21.145 21.407 11.963 1.00 0.00 O -ATOM 116 HW1 SOL 38 20.834 22.357 11.979 1.00 0.00 H -ATOM 117 HW2 SOL 38 21.433 21.237 12.905 1.00 0.00 H -ATOM 118 OW SOL 39 22.328 19.648 17.502 1.00 0.00 O -ATOM 119 HW1 SOL 39 21.950 18.759 17.242 1.00 0.00 H -ATOM 120 HW2 SOL 39 22.819 19.945 16.683 1.00 0.00 H -ATOM 121 OW SOL 40 31.232 18.191 16.282 1.00 0.00 O -ATOM 122 HW1 SOL 40 30.255 18.039 16.436 1.00 0.00 H -ATOM 123 HW2 SOL 40 31.500 17.427 15.695 1.00 0.00 H -ATOM 124 OW SOL 41 20.472 22.025 28.044 1.00 0.00 O -ATOM 125 HW1 SOL 41 19.910 21.201 28.114 1.00 0.00 H -ATOM 126 HW2 SOL 41 21.206 21.867 28.705 1.00 0.00 H -ATOM 127 OW SOL 42 29.525 27.024 26.006 1.00 0.00 O -ATOM 128 HW1 SOL 42 29.545 26.084 25.664 1.00 0.00 H -ATOM 129 HW2 SOL 42 30.425 27.384 25.760 1.00 0.00 H -ATOM 130 OW SOL 43 12.572 19.293 19.563 1.00 0.00 O -ATOM 131 HW1 SOL 43 12.235 19.147 18.633 1.00 0.00 H -ATOM 132 HW2 SOL 43 13.127 20.121 19.486 1.00 0.00 H -ATOM 133 OW SOL 44 28.904 25.278 27.929 1.00 0.00 O -ATOM 134 HW1 SOL 44 29.793 25.123 27.500 1.00 0.00 H -ATOM 135 HW2 SOL 44 28.261 25.227 27.165 1.00 0.00 H -ATOM 136 OW SOL 45 18.890 24.136 9.158 1.00 0.00 O -ATOM 137 HW1 SOL 45 18.386 24.659 9.845 1.00 0.00 H -ATOM 138 HW2 SOL 45 19.809 24.063 9.544 1.00 0.00 H -ATOM 139 OW SOL 46 22.411 19.995 11.347 1.00 0.00 O -ATOM 140 HW1 SOL 46 22.844 19.382 10.686 1.00 0.00 H -ATOM 141 HW2 SOL 46 22.765 20.897 11.099 1.00 0.00 H -ATOM 142 OW SOL 47 15.126 24.616 8.500 1.00 0.00 O -ATOM 143 HW1 SOL 47 14.587 24.550 9.339 1.00 0.00 H -ATOM 144 HW2 SOL 47 14.440 24.578 7.774 1.00 0.00 H -ATOM 145 OW SOL 48 19.778 11.195 20.586 1.00 0.00 O -ATOM 146 HW1 SOL 48 19.350 12.051 20.295 1.00 0.00 H -ATOM 147 HW2 SOL 48 20.122 11.403 21.502 1.00 0.00 H -ATOM 148 OW SOL 49 14.611 23.092 15.349 1.00 0.00 O -ATOM 149 HW1 SOL 49 14.685 22.211 14.880 1.00 0.00 H -ATOM 150 HW2 SOL 49 15.054 22.928 16.230 1.00 0.00 H -ATOM 151 OW SOL 50 16.022 14.205 14.111 1.00 0.00 O -ATOM 152 HW1 SOL 50 15.842 15.127 14.455 1.00 0.00 H -ATOM 153 HW2 SOL 50 16.550 14.364 13.276 1.00 0.00 H -ATOM 154 OW SOL 51 30.145 24.475 24.408 1.00 0.00 O -ATOM 155 HW1 SOL 51 30.977 24.710 24.911 1.00 0.00 H -ATOM 156 HW2 SOL 51 29.480 24.281 25.129 1.00 0.00 H -ATOM 157 OW SOL 52 19.974 12.135 30.934 1.00 0.00 O -ATOM 158 HW1 SOL 52 19.765 11.696 31.808 1.00 0.00 H -ATOM 159 HW2 SOL 52 20.496 12.947 31.197 1.00 0.00 H -ATOM 160 OW SOL 53 27.407 10.681 16.793 1.00 0.00 O -ATOM 161 HW1 SOL 53 28.348 10.992 16.659 1.00 0.00 H -ATOM 162 HW2 SOL 53 27.414 9.747 16.436 1.00 0.00 H -ATOM 163 OW SOL 54 20.295 15.208 16.437 1.00 0.00 O -ATOM 164 HW1 SOL 54 20.039 14.270 16.202 1.00 0.00 H -ATOM 165 HW2 SOL 54 20.500 15.626 15.552 1.00 0.00 H -ATOM 166 OW SOL 55 20.140 14.679 26.490 1.00 0.00 O -ATOM 167 HW1 SOL 55 19.541 14.035 26.967 1.00 0.00 H -ATOM 168 HW2 SOL 55 20.592 15.175 27.231 1.00 0.00 H -ATOM 169 OW SOL 56 18.049 18.312 23.379 1.00 0.00 O -ATOM 170 HW1 SOL 56 17.709 18.188 22.447 1.00 0.00 H -ATOM 171 HW2 SOL 56 17.257 18.669 23.874 1.00 0.00 H -ATOM 172 OW SOL 57 23.087 28.689 17.079 1.00 0.00 O -ATOM 173 HW1 SOL 57 22.894 29.416 16.421 1.00 0.00 H -ATOM 174 HW2 SOL 57 22.180 28.392 17.375 1.00 0.00 H -ATOM 175 OW SOL 58 17.652 16.214 32.063 1.00 0.00 O -ATOM 176 HW1 SOL 58 17.465 16.870 31.332 1.00 0.00 H -ATOM 177 HW2 SOL 58 17.266 15.359 31.717 1.00 0.00 H -ATOM 178 OW SOL 59 10.164 21.661 24.153 1.00 0.00 O -ATOM 179 HW1 SOL 59 9.226 21.407 23.917 1.00 0.00 H -ATOM 180 HW2 SOL 59 10.548 21.978 23.286 1.00 0.00 H -ATOM 181 OW SOL 60 20.915 17.894 29.118 1.00 0.00 O -ATOM 182 HW1 SOL 60 20.640 18.563 28.429 1.00 0.00 H -ATOM 183 HW2 SOL 60 21.002 17.043 28.600 1.00 0.00 H -ATOM 184 OW SOL 61 17.367 26.246 23.017 1.00 0.00 O -ATOM 185 HW1 SOL 61 16.659 26.364 23.712 1.00 0.00 H -ATOM 186 HW2 SOL 61 18.116 25.808 23.515 1.00 0.00 H -ATOM 187 OW SOL 62 21.776 22.893 24.986 1.00 0.00 O -ATOM 188 HW1 SOL 62 21.561 22.185 24.313 1.00 0.00 H -ATOM 189 HW2 SOL 62 21.893 23.717 24.431 1.00 0.00 H -ATOM 190 OW SOL 63 25.728 14.610 30.886 1.00 0.00 O -ATOM 191 HW1 SOL 63 26.527 14.773 30.307 1.00 0.00 H -ATOM 192 HW2 SOL 63 25.225 13.898 30.398 1.00 0.00 H -ATOM 193 OW SOL 64 25.135 11.052 12.970 1.00 0.00 O -ATOM 194 HW1 SOL 64 25.032 10.506 12.139 1.00 0.00 H -ATOM 195 HW2 SOL 64 25.610 10.438 13.599 1.00 0.00 H -ATOM 196 OW SOL 65 21.134 31.228 16.691 1.00 0.00 O -ATOM 197 HW1 SOL 65 21.641 31.978 17.115 1.00 0.00 H -ATOM 198 HW2 SOL 65 20.392 31.050 17.337 1.00 0.00 H -ATOM 199 OW SOL 66 15.661 24.773 31.063 1.00 0.00 O -ATOM 200 HW1 SOL 66 15.729 24.124 30.306 1.00 0.00 H -ATOM 201 HW2 SOL 66 15.321 25.607 30.629 1.00 0.00 H -ATOM 202 OW SOL 67 25.005 27.999 10.964 1.00 0.00 O -ATOM 203 HW1 SOL 67 25.289 28.514 10.155 1.00 0.00 H -ATOM 204 HW2 SOL 67 24.617 27.159 10.584 1.00 0.00 H -ATOM 205 OW SOL 68 23.912 25.698 23.933 1.00 0.00 O -ATOM 206 HW1 SOL 68 23.423 25.068 24.535 1.00 0.00 H -ATOM 207 HW2 SOL 68 24.848 25.346 23.932 1.00 0.00 H -ATOM 208 OW SOL 69 7.050 20.594 15.260 1.00 0.00 O -ATOM 209 HW1 SOL 69 6.133 20.372 15.590 1.00 0.00 H -ATOM 210 HW2 SOL 69 7.033 21.590 15.169 1.00 0.00 H -ATOM 211 OW SOL 70 10.707 29.314 23.961 1.00 0.00 O -ATOM 212 HW1 SOL 70 10.092 28.529 24.042 1.00 0.00 H -ATOM 213 HW2 SOL 70 10.103 30.057 23.672 1.00 0.00 H -ATOM 214 OW SOL 71 20.974 26.571 12.738 1.00 0.00 O -ATOM 215 HW1 SOL 71 21.250 26.511 11.779 1.00 0.00 H -ATOM 216 HW2 SOL 71 20.503 27.452 12.792 1.00 0.00 H -ATOM 217 OW SOL 72 19.050 11.882 24.746 1.00 0.00 O -ATOM 218 HW1 SOL 72 18.512 11.125 24.374 1.00 0.00 H -ATOM 219 HW2 SOL 72 19.945 11.769 24.315 1.00 0.00 H -ATOM 220 OW SOL 73 16.829 19.778 32.330 1.00 0.00 O -ATOM 221 HW1 SOL 73 16.123 20.115 32.953 1.00 0.00 H -ATOM 222 HW2 SOL 73 17.160 20.606 31.878 1.00 0.00 H -ATOM 223 OW SOL 74 27.194 11.819 10.655 1.00 0.00 O -ATOM 224 HW1 SOL 74 27.283 11.033 11.266 1.00 0.00 H -ATOM 225 HW2 SOL 74 26.907 12.560 11.262 1.00 0.00 H -ATOM 226 OW SOL 75 9.143 26.922 18.015 1.00 0.00 O -ATOM 227 HW1 SOL 75 9.732 26.265 18.486 1.00 0.00 H -ATOM 228 HW2 SOL 75 8.240 26.494 18.047 1.00 0.00 H -ATOM 229 OW SOL 76 24.798 18.634 30.721 1.00 0.00 O -ATOM 230 HW1 SOL 76 24.248 18.074 30.101 1.00 0.00 H -ATOM 231 HW2 SOL 76 25.641 18.795 30.208 1.00 0.00 H -ATOM 232 OW SOL 77 19.713 11.078 9.455 1.00 0.00 O -ATOM 233 HW1 SOL 77 19.886 10.367 10.137 1.00 0.00 H -ATOM 234 HW2 SOL 77 19.629 11.912 10.000 1.00 0.00 H -ATOM 235 OW SOL 78 19.949 16.434 18.234 1.00 0.00 O -ATOM 236 HW1 SOL 78 20.849 16.785 17.978 1.00 0.00 H -ATOM 237 HW2 SOL 78 19.360 16.720 17.479 1.00 0.00 H -ATOM 238 OW SOL 79 26.100 20.094 24.860 1.00 0.00 O -ATOM 239 HW1 SOL 79 25.929 20.125 23.875 1.00 0.00 H -ATOM 240 HW2 SOL 79 27.079 19.902 24.923 1.00 0.00 H -ATOM 241 OW SOL 80 28.245 23.176 16.401 1.00 0.00 O -ATOM 242 HW1 SOL 80 29.089 23.075 16.928 1.00 0.00 H -ATOM 243 HW2 SOL 80 27.898 22.241 16.330 1.00 0.00 H -ATOM 244 OW SOL 81 23.429 7.658 15.115 1.00 0.00 O -ATOM 245 HW1 SOL 81 23.809 7.098 14.379 1.00 0.00 H -ATOM 246 HW2 SOL 81 22.872 8.334 14.633 1.00 0.00 H -ATOM 247 OW SOL 82 10.552 26.955 16.715 1.00 0.00 O -ATOM 248 HW1 SOL 82 10.884 27.105 15.784 1.00 0.00 H -ATOM 249 HW2 SOL 82 10.537 27.873 17.111 1.00 0.00 H -ATOM 250 OW SOL 83 16.927 19.868 15.041 1.00 0.00 O -ATOM 251 HW1 SOL 83 17.297 20.069 14.134 1.00 0.00 H -ATOM 252 HW2 SOL 83 17.447 19.066 15.335 1.00 0.00 H -ATOM 253 OW SOL 84 13.998 26.748 24.005 1.00 0.00 O -ATOM 254 HW1 SOL 84 13.596 25.972 23.519 1.00 0.00 H -ATOM 255 HW2 SOL 84 13.297 27.458 23.937 1.00 0.00 H -ATOM 256 OW SOL 85 14.352 31.295 25.838 1.00 0.00 O -ATOM 257 HW1 SOL 85 13.403 31.109 25.586 1.00 0.00 H -ATOM 258 HW2 SOL 85 14.735 31.719 25.018 1.00 0.00 H -ATOM 259 OW SOL 86 25.245 18.847 22.053 1.00 0.00 O -ATOM 260 HW1 SOL 86 24.739 19.112 22.874 1.00 0.00 H -ATOM 261 HW2 SOL 86 24.714 18.083 21.686 1.00 0.00 H -ATOM 262 OW SOL 87 18.110 19.707 19.148 1.00 0.00 O -ATOM 263 HW1 SOL 87 18.008 20.702 19.124 1.00 0.00 H -ATOM 264 HW2 SOL 87 17.670 19.405 18.303 1.00 0.00 H -ATOM 265 OW SOL 88 18.407 29.100 15.428 1.00 0.00 O -ATOM 266 HW1 SOL 88 17.629 28.693 15.907 1.00 0.00 H -ATOM 267 HW2 SOL 88 18.057 29.264 14.506 1.00 0.00 H -ATOM 268 OW SOL 89 21.496 27.940 30.924 1.00 0.00 O -ATOM 269 HW1 SOL 89 22.219 28.126 31.589 1.00 0.00 H -ATOM 270 HW2 SOL 89 21.009 27.160 31.317 1.00 0.00 H -ATOM 271 OW SOL 90 21.396 23.151 19.398 1.00 0.00 O -ATOM 272 HW1 SOL 90 22.203 22.959 18.839 1.00 0.00 H -ATOM 273 HW2 SOL 90 21.351 24.150 19.414 1.00 0.00 H -ATOM 274 OW SOL 91 32.625 27.206 21.159 1.00 0.00 O -ATOM 275 HW1 SOL 91 32.437 26.355 21.649 1.00 0.00 H -ATOM 276 HW2 SOL 91 31.757 27.700 21.202 1.00 0.00 H -ATOM 277 OW SOL 92 28.432 18.158 21.287 1.00 0.00 O -ATOM 278 HW1 SOL 92 28.045 18.046 20.373 1.00 0.00 H -ATOM 279 HW2 SOL 92 27.657 17.989 21.895 1.00 0.00 H -ATOM 280 OW SOL 93 21.854 13.532 15.062 1.00 0.00 O -ATOM 281 HW1 SOL 93 22.622 14.072 15.406 1.00 0.00 H -ATOM 282 HW2 SOL 93 21.496 13.083 15.881 1.00 0.00 H -ATOM 283 OW SOL 94 24.782 18.353 11.187 1.00 0.00 O -ATOM 284 HW1 SOL 94 25.623 17.860 10.966 1.00 0.00 H -ATOM 285 HW2 SOL 94 24.721 19.048 10.471 1.00 0.00 H -ATOM 286 OW SOL 95 18.737 27.913 27.854 1.00 0.00 O -ATOM 287 HW1 SOL 95 19.078 27.134 28.380 1.00 0.00 H -ATOM 288 HW2 SOL 95 18.398 28.541 28.555 1.00 0.00 H -ATOM 289 OW SOL 96 18.869 14.640 29.839 1.00 0.00 O -ATOM 290 HW1 SOL 96 17.889 14.819 29.925 1.00 0.00 H -ATOM 291 HW2 SOL 96 19.162 14.476 30.781 1.00 0.00 H -ATOM 292 OW SOL 97 15.633 29.145 19.667 1.00 0.00 O -ATOM 293 HW1 SOL 97 16.374 28.912 20.297 1.00 0.00 H -ATOM 294 HW2 SOL 97 14.874 29.383 20.273 1.00 0.00 H -ATOM 295 OW SOL 98 17.231 13.661 27.274 1.00 0.00 O -ATOM 296 HW1 SOL 98 17.386 14.182 28.113 1.00 0.00 H -ATOM 297 HW2 SOL 98 17.027 12.739 27.603 1.00 0.00 H -ATOM 298 OW SOL 99 22.474 9.875 11.065 1.00 0.00 O -ATOM 299 HW1 SOL 99 22.471 10.847 10.828 1.00 0.00 H -ATOM 300 HW2 SOL 99 23.197 9.495 10.488 1.00 0.00 H -ATOM 301 OW SOL 100 9.546 17.626 27.369 1.00 0.00 O -ATOM 302 HW1 SOL 100 9.197 18.507 27.050 1.00 0.00 H -ATOM 303 HW2 SOL 100 9.858 17.179 26.530 1.00 0.00 H -ATOM 304 OW SOL 101 29.435 20.599 25.289 1.00 0.00 O -ATOM 305 HW1 SOL 101 29.100 21.122 24.506 1.00 0.00 H -ATOM 306 HW2 SOL 101 29.952 19.852 24.871 1.00 0.00 H -ATOM 307 OW SOL 102 16.859 24.623 17.953 1.00 0.00 O -ATOM 308 HW1 SOL 102 16.278 24.398 17.171 1.00 0.00 H -ATOM 309 HW2 SOL 102 17.749 24.814 17.538 1.00 0.00 H -ATOM 310 OW SOL 103 22.411 17.494 8.922 1.00 0.00 O -ATOM 311 HW1 SOL 103 22.525 17.755 7.964 1.00 0.00 H -ATOM 312 HW2 SOL 103 23.034 16.721 9.033 1.00 0.00 H -ATOM 313 OW SOL 104 27.718 17.918 18.028 1.00 0.00 O -ATOM 314 HW1 SOL 104 27.794 18.719 18.621 1.00 0.00 H -ATOM 315 HW2 SOL 104 26.973 17.390 18.437 1.00 0.00 H -ATOM 316 OW SOL 105 19.428 28.867 22.791 1.00 0.00 O -ATOM 317 HW1 SOL 105 20.268 29.090 23.285 1.00 0.00 H -ATOM 318 HW2 SOL 105 18.738 28.811 23.513 1.00 0.00 H -ATOM 319 OW SOL 106 10.198 24.333 21.376 1.00 0.00 O -ATOM 320 HW1 SOL 106 10.435 23.555 21.958 1.00 0.00 H -ATOM 321 HW2 SOL 106 10.262 25.117 21.992 1.00 0.00 H -ATOM 322 OW SOL 107 22.196 18.465 31.449 1.00 0.00 O -ATOM 323 HW1 SOL 107 22.006 17.752 30.774 1.00 0.00 H -ATOM 324 HW2 SOL 107 22.312 19.289 30.895 1.00 0.00 H -ATOM 325 OW SOL 108 19.177 16.695 28.844 1.00 0.00 O -ATOM 326 HW1 SOL 108 18.541 17.348 29.254 1.00 0.00 H -ATOM 327 HW2 SOL 108 18.616 16.205 28.178 1.00 0.00 H -ATOM 328 OW SOL 109 14.256 13.056 21.586 1.00 0.00 O -ATOM 329 HW1 SOL 109 14.417 12.261 21.002 1.00 0.00 H -ATOM 330 HW2 SOL 109 13.308 13.307 21.387 1.00 0.00 H -ATOM 331 OW SOL 110 19.769 17.841 19.874 1.00 0.00 O -ATOM 332 HW1 SOL 110 20.206 17.669 20.757 1.00 0.00 H -ATOM 333 HW2 SOL 110 18.942 18.349 20.116 1.00 0.00 H -ATOM 334 OW SOL 111 19.177 24.021 24.409 1.00 0.00 O -ATOM 335 HW1 SOL 111 18.930 24.860 24.895 1.00 0.00 H -ATOM 336 HW2 SOL 111 19.348 23.365 25.144 1.00 0.00 H -ATOM 337 OW SOL 112 13.128 19.682 21.718 1.00 0.00 O -ATOM 338 HW1 SOL 112 12.916 20.560 21.288 1.00 0.00 H -ATOM 339 HW2 SOL 112 13.991 19.413 21.292 1.00 0.00 H -ATOM 340 OW SOL 113 24.265 10.766 24.493 1.00 0.00 O -ATOM 341 HW1 SOL 113 24.149 11.305 25.328 1.00 0.00 H -ATOM 342 HW2 SOL 113 24.889 10.035 24.769 1.00 0.00 H -ATOM 343 OW SOL 114 15.224 12.544 26.191 1.00 0.00 O -ATOM 344 HW1 SOL 114 14.815 12.639 25.284 1.00 0.00 H -ATOM 345 HW2 SOL 114 15.905 11.822 26.067 1.00 0.00 H -ATOM 346 OW SOL 115 16.171 28.128 25.166 1.00 0.00 O -ATOM 347 HW1 SOL 115 15.398 28.548 25.641 1.00 0.00 H -ATOM 348 HW2 SOL 115 16.066 27.153 25.360 1.00 0.00 H -ATOM 349 OW SOL 116 16.179 7.973 18.838 1.00 0.00 O -ATOM 350 HW1 SOL 116 15.811 8.610 19.516 1.00 0.00 H -ATOM 351 HW2 SOL 116 17.002 7.611 19.277 1.00 0.00 H -ATOM 352 OW SOL 117 14.860 10.741 22.956 1.00 0.00 O -ATOM 353 HW1 SOL 117 14.672 10.505 22.002 1.00 0.00 H -ATOM 354 HW2 SOL 117 14.057 11.269 23.231 1.00 0.00 H -ATOM 355 OW SOL 118 20.264 22.364 7.812 1.00 0.00 O -ATOM 356 HW1 SOL 118 20.097 22.151 6.850 1.00 0.00 H -ATOM 357 HW2 SOL 118 21.123 21.893 8.013 1.00 0.00 H -ATOM 358 OW SOL 119 14.432 13.841 28.501 1.00 0.00 O -ATOM 359 HW1 SOL 119 14.895 13.802 27.616 1.00 0.00 H -ATOM 360 HW2 SOL 119 13.754 13.108 28.445 1.00 0.00 H -ATOM 361 OW SOL 120 23.949 28.612 28.421 1.00 0.00 O -ATOM 362 HW1 SOL 120 23.700 29.051 29.285 1.00 0.00 H -ATOM 363 HW2 SOL 120 23.114 28.673 27.876 1.00 0.00 H -ATOM 364 OW SOL 121 24.860 26.234 15.593 1.00 0.00 O -ATOM 365 HW1 SOL 121 24.021 26.709 15.327 1.00 0.00 H -ATOM 366 HW2 SOL 121 24.678 25.941 16.531 1.00 0.00 H -ATOM 367 OW SOL 122 13.994 20.898 31.066 1.00 0.00 O -ATOM 368 HW1 SOL 122 14.720 21.484 30.705 1.00 0.00 H -ATOM 369 HW2 SOL 122 14.403 20.493 31.884 1.00 0.00 H -ATOM 370 OW SOL 123 19.763 31.059 19.445 1.00 0.00 O -ATOM 371 HW1 SOL 123 18.818 31.118 19.767 1.00 0.00 H -ATOM 372 HW2 SOL 123 20.274 30.793 20.262 1.00 0.00 H -ATOM 373 OW SOL 124 15.319 22.439 27.337 1.00 0.00 O -ATOM 374 HW1 SOL 124 15.956 23.111 27.716 1.00 0.00 H -ATOM 375 HW2 SOL 124 14.687 22.262 28.091 1.00 0.00 H -ATOM 376 OW SOL 125 22.320 32.061 22.179 1.00 0.00 O -ATOM 377 HW1 SOL 125 22.491 31.137 21.839 1.00 0.00 H -ATOM 378 HW2 SOL 125 22.019 32.560 21.367 1.00 0.00 H -ATOM 379 OW SOL 126 27.110 12.879 27.942 1.00 0.00 O -ATOM 380 HW1 SOL 126 26.163 12.568 27.865 1.00 0.00 H -ATOM 381 HW2 SOL 126 27.090 13.507 28.719 1.00 0.00 H -ATOM 382 OW SOL 127 9.308 20.552 15.865 1.00 0.00 O -ATOM 383 HW1 SOL 127 8.830 21.419 15.729 1.00 0.00 H -ATOM 384 HW2 SOL 127 9.870 20.716 16.675 1.00 0.00 H -ATOM 385 OW SOL 128 8.347 18.938 14.159 1.00 0.00 O -ATOM 386 HW1 SOL 128 9.293 18.804 13.864 1.00 0.00 H -ATOM 387 HW2 SOL 128 8.389 18.811 15.149 1.00 0.00 H -ATOM 388 OW SOL 129 24.213 29.125 21.625 1.00 0.00 O -ATOM 389 HW1 SOL 129 23.525 29.555 21.040 1.00 0.00 H -ATOM 390 HW2 SOL 129 25.014 29.053 21.031 1.00 0.00 H -ATOM 391 OW SOL 130 15.833 23.752 32.917 1.00 0.00 O -ATOM 392 HW1 SOL 130 14.936 24.157 32.743 1.00 0.00 H -ATOM 393 HW2 SOL 130 15.904 23.030 32.229 1.00 0.00 H -ATOM 394 OW SOL 131 16.075 23.397 13.754 1.00 0.00 O -ATOM 395 HW1 SOL 131 16.295 24.212 14.289 1.00 0.00 H -ATOM 396 HW2 SOL 131 16.944 22.904 13.705 1.00 0.00 H -ATOM 397 OW SOL 132 20.326 20.875 18.699 1.00 0.00 O -ATOM 398 HW1 SOL 132 20.765 21.712 18.372 1.00 0.00 H -ATOM 399 HW2 SOL 132 20.345 20.271 17.903 1.00 0.00 H -ATOM 400 OW SOL 133 9.929 15.192 16.898 1.00 0.00 O -ATOM 401 HW1 SOL 133 10.630 15.898 16.998 1.00 0.00 H -ATOM 402 HW2 SOL 133 9.460 15.197 17.781 1.00 0.00 H -ATOM 403 OW SOL 134 16.787 20.325 25.209 1.00 0.00 O -ATOM 404 HW1 SOL 134 16.624 20.233 26.192 1.00 0.00 H -ATOM 405 HW2 SOL 134 17.637 20.849 25.159 1.00 0.00 H -ATOM 406 OW SOL 135 17.520 21.373 23.048 1.00 0.00 O -ATOM 407 HW1 SOL 135 16.601 21.519 23.412 1.00 0.00 H -ATOM 408 HW2 SOL 135 17.589 22.039 22.305 1.00 0.00 H -ATOM 409 OW SOL 136 23.555 18.200 32.700 1.00 0.00 O -ATOM 410 HW1 SOL 136 23.865 19.126 32.915 1.00 0.00 H -ATOM 411 HW2 SOL 136 23.912 17.651 33.456 1.00 0.00 H -ATOM 412 OW SOL 137 23.805 17.377 24.654 1.00 0.00 O -ATOM 413 HW1 SOL 137 22.966 16.841 24.563 1.00 0.00 H -ATOM 414 HW2 SOL 137 24.198 17.057 25.515 1.00 0.00 H -ATOM 415 OW SOL 138 26.351 32.443 20.268 1.00 0.00 O -ATOM 416 HW1 SOL 138 25.929 32.467 19.362 1.00 0.00 H -ATOM 417 HW2 SOL 138 26.686 31.505 20.348 1.00 0.00 H -ATOM 418 OW SOL 139 29.387 20.828 17.230 1.00 0.00 O -ATOM 419 HW1 SOL 139 28.756 20.608 17.974 1.00 0.00 H -ATOM 420 HW2 SOL 139 29.627 19.934 16.852 1.00 0.00 H -ATOM 421 OW SOL 140 14.191 23.512 23.343 1.00 0.00 O -ATOM 422 HW1 SOL 140 14.176 23.411 22.348 1.00 0.00 H -ATOM 423 HW2 SOL 140 14.034 22.582 23.676 1.00 0.00 H -ATOM 424 OW SOL 141 15.756 15.625 22.699 1.00 0.00 O -ATOM 425 HW1 SOL 141 15.667 16.593 22.933 1.00 0.00 H -ATOM 426 HW2 SOL 141 15.942 15.186 23.577 1.00 0.00 H -ATOM 427 OW SOL 142 20.510 13.333 11.927 1.00 0.00 O -ATOM 428 HW1 SOL 142 20.283 14.306 11.925 1.00 0.00 H -ATOM 429 HW2 SOL 142 20.679 13.131 12.892 1.00 0.00 H -ATOM 430 OW SOL 143 24.585 21.862 22.891 1.00 0.00 O -ATOM 431 HW1 SOL 143 24.215 21.242 23.583 1.00 0.00 H -ATOM 432 HW2 SOL 143 24.284 21.457 22.027 1.00 0.00 H -ATOM 433 OW SOL 144 19.090 26.889 31.259 1.00 0.00 O -ATOM 434 HW1 SOL 144 18.787 27.543 30.565 1.00 0.00 H -ATOM 435 HW2 SOL 144 19.301 27.464 32.049 1.00 0.00 H -ATOM 436 OW SOL 145 7.500 15.159 18.426 1.00 0.00 O -ATOM 437 HW1 SOL 145 8.026 14.423 18.852 1.00 0.00 H -ATOM 438 HW2 SOL 145 7.359 15.810 19.171 1.00 0.00 H -ATOM 439 OW SOL 146 27.618 20.029 10.797 1.00 0.00 O -ATOM 440 HW1 SOL 146 28.084 19.652 9.998 1.00 0.00 H -ATOM 441 HW2 SOL 146 26.728 19.574 10.788 1.00 0.00 H -ATOM 442 OW SOL 147 11.282 12.159 12.611 1.00 0.00 O -ATOM 443 HW1 SOL 147 11.736 11.951 13.478 1.00 0.00 H -ATOM 444 HW2 SOL 147 10.338 11.869 12.764 1.00 0.00 H -ATOM 445 OW SOL 148 15.008 16.634 8.329 1.00 0.00 O -ATOM 446 HW1 SOL 148 14.565 17.240 8.990 1.00 0.00 H -ATOM 447 HW2 SOL 148 14.744 17.017 7.444 1.00 0.00 H -ATOM 448 OW SOL 149 29.329 17.460 13.545 1.00 0.00 O -ATOM 449 HW1 SOL 149 29.799 16.662 13.921 1.00 0.00 H -ATOM 450 HW2 SOL 149 29.197 18.052 14.340 1.00 0.00 H -ATOM 451 OW SOL 150 11.143 29.847 21.994 1.00 0.00 O -ATOM 452 HW1 SOL 150 11.288 29.066 21.386 1.00 0.00 H -ATOM 453 HW2 SOL 150 11.125 30.629 21.372 1.00 0.00 H -ATOM 454 OW SOL 151 12.115 21.477 18.277 1.00 0.00 O -ATOM 455 HW1 SOL 151 13.049 21.751 18.052 1.00 0.00 H -ATOM 456 HW2 SOL 151 11.688 21.338 17.383 1.00 0.00 H -ATOM 457 OW SOL 152 22.610 13.864 17.470 1.00 0.00 O -ATOM 458 HW1 SOL 152 22.705 12.875 17.359 1.00 0.00 H -ATOM 459 HW2 SOL 152 22.548 13.985 18.461 1.00 0.00 H -ATOM 460 OW SOL 153 29.100 16.537 16.520 1.00 0.00 O -ATOM 461 HW1 SOL 153 28.138 16.665 16.280 1.00 0.00 H -ATOM 462 HW2 SOL 153 29.337 15.667 16.089 1.00 0.00 H -ATOM 463 OW SOL 154 12.381 21.642 14.486 1.00 0.00 O -ATOM 464 HW1 SOL 154 13.077 20.974 14.750 1.00 0.00 H -ATOM 465 HW2 SOL 154 11.884 21.814 15.337 1.00 0.00 H -ATOM 466 OW SOL 155 31.757 13.163 21.010 1.00 0.00 O -ATOM 467 HW1 SOL 155 31.139 13.597 21.665 1.00 0.00 H -ATOM 468 HW2 SOL 155 32.466 12.758 21.587 1.00 0.00 H -ATOM 469 OW SOL 156 21.536 18.257 25.616 1.00 0.00 O -ATOM 470 HW1 SOL 156 21.932 18.565 26.481 1.00 0.00 H -ATOM 471 HW2 SOL 156 22.086 18.726 24.925 1.00 0.00 H -ATOM 472 OW SOL 157 20.543 27.375 25.907 1.00 0.00 O -ATOM 473 HW1 SOL 157 19.895 26.941 26.533 1.00 0.00 H -ATOM 474 HW2 SOL 157 21.169 27.861 26.515 1.00 0.00 H -ATOM 475 OW SOL 158 13.721 27.318 16.382 1.00 0.00 O -ATOM 476 HW1 SOL 158 12.766 27.561 16.555 1.00 0.00 H -ATOM 477 HW2 SOL 158 14.081 27.115 17.292 1.00 0.00 H -ATOM 478 OW SOL 159 11.109 14.336 28.727 1.00 0.00 O -ATOM 479 HW1 SOL 159 10.922 15.263 29.051 1.00 0.00 H -ATOM 480 HW2 SOL 159 11.994 14.116 29.138 1.00 0.00 H -ATOM 481 OW SOL 160 7.998 25.909 14.509 1.00 0.00 O -ATOM 482 HW1 SOL 160 7.826 25.064 14.002 1.00 0.00 H -ATOM 483 HW2 SOL 160 8.506 26.475 13.860 1.00 0.00 H -ATOM 484 OW SOL 161 25.404 24.209 13.944 1.00 0.00 O -ATOM 485 HW1 SOL 161 25.354 23.381 14.502 1.00 0.00 H -ATOM 486 HW2 SOL 161 26.173 24.712 14.336 1.00 0.00 H -ATOM 487 OW SOL 162 24.844 25.891 26.881 1.00 0.00 O -ATOM 488 HW1 SOL 162 25.424 25.089 27.018 1.00 0.00 H -ATOM 489 HW2 SOL 162 24.491 25.772 25.953 1.00 0.00 H -ATOM 490 OW SOL 163 14.619 20.558 23.171 1.00 0.00 O -ATOM 491 HW1 SOL 163 15.041 20.548 24.077 1.00 0.00 H -ATOM 492 HW2 SOL 163 13.641 20.481 23.366 1.00 0.00 H -ATOM 493 OW SOL 164 27.083 10.805 27.618 1.00 0.00 O -ATOM 494 HW1 SOL 164 27.958 10.356 27.439 1.00 0.00 H -ATOM 495 HW2 SOL 164 26.964 10.702 28.606 1.00 0.00 H -ATOM 496 OW SOL 165 23.957 28.645 23.912 1.00 0.00 O -ATOM 497 HW1 SOL 165 23.636 27.724 23.693 1.00 0.00 H -ATOM 498 HW2 SOL 165 24.334 28.551 24.833 1.00 0.00 H -ATOM 499 OW SOL 166 21.857 28.095 24.745 1.00 0.00 O -ATOM 500 HW1 SOL 166 21.651 27.780 23.818 1.00 0.00 H -ATOM 501 HW2 SOL 166 22.393 27.346 25.134 1.00 0.00 H -ATOM 502 OW SOL 167 14.267 8.489 17.721 1.00 0.00 O -ATOM 503 HW1 SOL 167 14.806 9.323 17.839 1.00 0.00 H -ATOM 504 HW2 SOL 167 14.352 8.289 16.745 1.00 0.00 H -ATOM 505 OW SOL 168 15.230 32.590 23.368 1.00 0.00 O -ATOM 506 HW1 SOL 168 15.697 33.435 23.630 1.00 0.00 H -ATOM 507 HW2 SOL 168 15.330 32.564 22.374 1.00 0.00 H -ATOM 508 OW SOL 169 20.692 18.024 12.789 1.00 0.00 O -ATOM 509 HW1 SOL 169 20.383 17.682 13.676 1.00 0.00 H -ATOM 510 HW2 SOL 169 21.344 17.331 12.483 1.00 0.00 H -ATOM 511 OW SOL 170 20.941 14.283 32.482 1.00 0.00 O -ATOM 512 HW1 SOL 170 20.807 15.094 31.913 1.00 0.00 H -ATOM 513 HW2 SOL 170 21.798 13.896 32.144 1.00 0.00 H -ATOM 514 OW SOL 171 20.572 24.087 21.759 1.00 0.00 O -ATOM 515 HW1 SOL 171 20.177 24.703 21.078 1.00 0.00 H -ATOM 516 HW2 SOL 171 21.047 23.401 21.209 1.00 0.00 H -ATOM 517 OW SOL 172 27.011 21.983 12.689 1.00 0.00 O -ATOM 518 HW1 SOL 172 26.589 21.796 13.576 1.00 0.00 H -ATOM 519 HW2 SOL 172 27.502 21.138 12.478 1.00 0.00 H -ATOM 520 OW SOL 173 27.873 21.492 26.173 1.00 0.00 O -ATOM 521 HW1 SOL 173 28.092 21.918 27.051 1.00 0.00 H -ATOM 522 HW2 SOL 173 26.908 21.715 26.036 1.00 0.00 H -ATOM 523 OW SOL 174 18.801 23.348 22.703 1.00 0.00 O -ATOM 524 HW1 SOL 174 18.700 24.180 22.157 1.00 0.00 H -ATOM 525 HW2 SOL 174 19.279 22.720 22.089 1.00 0.00 H -ATOM 526 OW SOL 175 28.842 13.423 18.022 1.00 0.00 O -ATOM 527 HW1 SOL 175 28.740 12.648 18.646 1.00 0.00 H -ATOM 528 HW2 SOL 175 28.519 14.202 18.559 1.00 0.00 H -ATOM 529 OW SOL 176 25.404 27.238 13.894 1.00 0.00 O -ATOM 530 HW1 SOL 176 25.057 28.141 13.642 1.00 0.00 H -ATOM 531 HW2 SOL 176 25.068 26.644 13.164 1.00 0.00 H -ATOM 532 OW SOL 177 13.648 31.004 20.523 1.00 0.00 O -ATOM 533 HW1 SOL 177 14.154 31.859 20.403 1.00 0.00 H -ATOM 534 HW2 SOL 177 13.311 30.798 19.605 1.00 0.00 H -ATOM 535 OW SOL 178 14.229 17.416 17.143 1.00 0.00 O -ATOM 536 HW1 SOL 178 13.948 16.941 16.310 1.00 0.00 H -ATOM 537 HW2 SOL 178 15.227 17.369 17.117 1.00 0.00 H -ATOM 538 OW SOL 179 15.646 10.903 29.696 1.00 0.00 O -ATOM 539 HW1 SOL 179 16.138 11.535 29.097 1.00 0.00 H -ATOM 540 HW2 SOL 179 16.141 10.966 30.562 1.00 0.00 H -ATOM 541 OW SOL 180 19.621 22.063 14.117 1.00 0.00 O -ATOM 542 HW1 SOL 180 19.137 22.720 14.695 1.00 0.00 H -ATOM 543 HW2 SOL 180 19.979 21.395 14.768 1.00 0.00 H -ATOM 544 OW SOL 181 30.397 26.314 19.886 1.00 0.00 O -ATOM 545 HW1 SOL 181 30.779 26.155 20.796 1.00 0.00 H -ATOM 546 HW2 SOL 181 30.028 25.421 19.626 1.00 0.00 H -ATOM 547 OW SOL 182 19.674 13.424 22.478 1.00 0.00 O -ATOM 548 HW1 SOL 182 18.963 12.986 21.929 1.00 0.00 H -ATOM 549 HW2 SOL 182 20.211 13.934 21.806 1.00 0.00 H -ATOM 550 OW SOL 183 18.668 14.883 20.010 1.00 0.00 O -ATOM 551 HW1 SOL 183 18.273 14.187 20.610 1.00 0.00 H -ATOM 552 HW2 SOL 183 19.045 15.557 20.645 1.00 0.00 H -ATOM 553 OW SOL 184 17.034 29.023 9.488 1.00 0.00 O -ATOM 554 HW1 SOL 184 17.506 29.166 10.358 1.00 0.00 H -ATOM 555 HW2 SOL 184 17.634 28.392 8.995 1.00 0.00 H -ATOM 556 OW SOL 185 22.961 20.786 25.713 1.00 0.00 O -ATOM 557 HW1 SOL 185 22.731 20.546 24.770 1.00 0.00 H -ATOM 558 HW2 SOL 185 22.071 20.838 26.166 1.00 0.00 H -ATOM 559 OW SOL 186 26.286 17.329 31.213 1.00 0.00 O -ATOM 560 HW1 SOL 186 26.404 17.825 32.073 1.00 0.00 H -ATOM 561 HW2 SOL 186 26.241 16.371 31.498 1.00 0.00 H -ATOM 562 OW SOL 187 27.580 14.914 14.672 1.00 0.00 O -ATOM 563 HW1 SOL 187 27.811 14.051 15.121 1.00 0.00 H -ATOM 564 HW2 SOL 187 27.719 14.720 13.701 1.00 0.00 H -ATOM 565 OW SOL 188 23.031 33.085 25.667 1.00 0.00 O -ATOM 566 HW1 SOL 188 23.825 32.541 25.398 1.00 0.00 H -ATOM 567 HW2 SOL 188 22.449 33.071 24.854 1.00 0.00 H -ATOM 568 OW SOL 189 15.597 15.370 30.674 1.00 0.00 O -ATOM 569 HW1 SOL 189 15.625 16.152 31.297 1.00 0.00 H -ATOM 570 HW2 SOL 189 15.518 14.583 31.286 1.00 0.00 H -ATOM 571 OW SOL 190 16.883 26.648 31.638 1.00 0.00 O -ATOM 572 HW1 SOL 190 16.297 26.276 32.357 1.00 0.00 H -ATOM 573 HW2 SOL 190 16.832 27.637 31.780 1.00 0.00 H -ATOM 574 OW SOL 191 19.861 24.244 32.586 1.00 0.00 O -ATOM 575 HW1 SOL 191 19.950 23.992 31.623 1.00 0.00 H -ATOM 576 HW2 SOL 191 20.144 25.202 32.606 1.00 0.00 H -ATOM 577 OW SOL 192 15.257 9.758 26.764 1.00 0.00 O -ATOM 578 HW1 SOL 192 14.827 10.581 27.136 1.00 0.00 H -ATOM 579 HW2 SOL 192 16.212 10.027 26.639 1.00 0.00 H -ATOM 580 OW SOL 193 21.738 19.826 33.281 1.00 0.00 O -ATOM 581 HW1 SOL 193 22.076 20.323 32.483 1.00 0.00 H -ATOM 582 HW2 SOL 193 20.856 20.258 33.472 1.00 0.00 H -ATOM 583 OW SOL 194 10.469 18.366 28.899 1.00 0.00 O -ATOM 584 HW1 SOL 194 11.297 18.486 28.352 1.00 0.00 H -ATOM 585 HW2 SOL 194 10.007 19.250 28.826 1.00 0.00 H -ATOM 586 OW SOL 195 19.058 31.288 28.229 1.00 0.00 O -ATOM 587 HW1 SOL 195 18.137 31.553 28.515 1.00 0.00 H -ATOM 588 HW2 SOL 195 19.157 31.712 27.329 1.00 0.00 H -ATOM 589 OW SOL 196 15.716 28.774 16.471 1.00 0.00 O -ATOM 590 HW1 SOL 196 15.871 28.372 17.373 1.00 0.00 H -ATOM 591 HW2 SOL 196 14.924 29.367 16.610 1.00 0.00 H -ATOM 592 OW SOL 197 15.165 21.070 10.861 1.00 0.00 O -ATOM 593 HW1 SOL 197 14.773 20.723 11.713 1.00 0.00 H -ATOM 594 HW2 SOL 197 14.363 21.299 10.309 1.00 0.00 H -ATOM 595 OW SOL 198 18.682 30.296 17.929 1.00 0.00 O -ATOM 596 HW1 SOL 198 18.616 30.245 16.933 1.00 0.00 H -ATOM 597 HW2 SOL 198 19.420 29.658 18.149 1.00 0.00 H -ATOM 598 OW SOL 199 25.446 15.251 13.605 1.00 0.00 O -ATOM 599 HW1 SOL 199 25.367 14.695 12.778 1.00 0.00 H -ATOM 600 HW2 SOL 199 25.061 14.668 14.320 1.00 0.00 H -ATOM 601 OW SOL 200 25.596 23.079 27.017 1.00 0.00 O -ATOM 602 HW1 SOL 200 24.713 23.143 27.480 1.00 0.00 H -ATOM 603 HW2 SOL 200 26.235 22.861 27.754 1.00 0.00 H -ATOM 604 OW SOL 201 23.494 11.771 21.543 1.00 0.00 O -ATOM 605 HW1 SOL 201 23.982 12.630 21.693 1.00 0.00 H -ATOM 606 HW2 SOL 201 24.210 11.143 21.237 1.00 0.00 H -ATOM 607 OW SOL 202 26.800 29.112 25.566 1.00 0.00 O -ATOM 608 HW1 SOL 202 26.671 30.102 25.515 1.00 0.00 H -ATOM 609 HW2 SOL 202 26.164 28.828 26.284 1.00 0.00 H -ATOM 610 OW SOL 203 26.261 24.860 10.711 1.00 0.00 O -ATOM 611 HW1 SOL 203 26.533 25.358 11.534 1.00 0.00 H -ATOM 612 HW2 SOL 203 27.110 24.432 10.402 1.00 0.00 H -ATOM 613 OW SOL 204 9.456 24.988 15.424 1.00 0.00 O -ATOM 614 HW1 SOL 204 10.300 24.942 15.958 1.00 0.00 H -ATOM 615 HW2 SOL 204 8.761 25.229 16.101 1.00 0.00 H -ATOM 616 OW SOL 205 21.383 27.255 22.046 1.00 0.00 O -ATOM 617 HW1 SOL 205 20.602 26.772 21.650 1.00 0.00 H -ATOM 618 HW2 SOL 205 22.099 26.558 22.080 1.00 0.00 H -ATOM 619 OW SOL 206 14.538 22.985 19.831 1.00 0.00 O -ATOM 620 HW1 SOL 206 13.872 23.579 20.283 1.00 0.00 H -ATOM 621 HW2 SOL 206 15.176 22.748 20.563 1.00 0.00 H -ATOM 622 OW SOL 207 12.256 23.724 21.874 1.00 0.00 O -ATOM 623 HW1 SOL 207 12.712 24.484 22.336 1.00 0.00 H -ATOM 624 HW2 SOL 207 12.160 23.034 22.592 1.00 0.00 H -ATOM 625 OW SOL 208 17.301 22.623 16.712 1.00 0.00 O -ATOM 626 HW1 SOL 208 16.786 22.266 15.933 1.00 0.00 H -ATOM 627 HW2 SOL 208 16.708 22.435 17.494 1.00 0.00 H -ATOM 628 OW SOL 209 27.289 17.023 25.562 1.00 0.00 O -ATOM 629 HW1 SOL 209 27.950 17.324 26.250 1.00 0.00 H -ATOM 630 HW2 SOL 209 26.475 16.802 26.098 1.00 0.00 H -ATOM 631 OW SOL 210 12.046 11.028 23.486 1.00 0.00 O -ATOM 632 HW1 SOL 210 12.209 11.923 23.901 1.00 0.00 H -ATOM 633 HW2 SOL 210 11.256 11.184 22.893 1.00 0.00 H -ATOM 634 OW SOL 211 12.971 23.755 12.904 1.00 0.00 O -ATOM 635 HW1 SOL 211 13.462 22.993 13.326 1.00 0.00 H -ATOM 636 HW2 SOL 211 12.946 23.511 11.935 1.00 0.00 H -ATOM 637 OW SOL 212 18.713 14.967 23.853 1.00 0.00 O -ATOM 638 HW1 SOL 212 18.097 15.333 23.155 1.00 0.00 H -ATOM 639 HW2 SOL 212 18.527 13.985 23.839 1.00 0.00 H -ATOM 640 OW SOL 213 17.844 16.429 18.517 1.00 0.00 O -ATOM 641 HW1 SOL 213 17.744 15.500 18.162 1.00 0.00 H -ATOM 642 HW2 SOL 213 16.981 16.870 18.271 1.00 0.00 H -ATOM 643 OW SOL 214 26.348 27.255 19.389 1.00 0.00 O -ATOM 644 HW1 SOL 214 26.764 27.895 18.744 1.00 0.00 H -ATOM 645 HW2 SOL 214 26.129 27.826 20.180 1.00 0.00 H -ATOM 646 OW SOL 215 19.468 25.203 11.319 1.00 0.00 O -ATOM 647 HW1 SOL 215 19.836 25.775 10.587 1.00 0.00 H -ATOM 648 HW2 SOL 215 20.233 24.606 11.560 1.00 0.00 H -ATOM 649 OW SOL 216 24.482 16.998 15.713 1.00 0.00 O -ATOM 650 HW1 SOL 216 23.782 16.352 15.411 1.00 0.00 H -ATOM 651 HW2 SOL 216 23.957 17.723 16.159 1.00 0.00 H -ATOM 652 OW SOL 217 22.863 24.643 26.438 1.00 0.00 O -ATOM 653 HW1 SOL 217 23.205 23.713 26.305 1.00 0.00 H -ATOM 654 HW2 SOL 217 23.295 24.934 27.291 1.00 0.00 H -ATOM 655 OW SOL 218 16.581 23.137 9.018 1.00 0.00 O -ATOM 656 HW1 SOL 218 15.746 22.632 9.233 1.00 0.00 H -ATOM 657 HW2 SOL 218 16.633 23.826 9.740 1.00 0.00 H -ATOM 658 OW SOL 219 12.098 27.383 14.371 1.00 0.00 O -ATOM 659 HW1 SOL 219 11.253 27.822 14.067 1.00 0.00 H -ATOM 660 HW2 SOL 219 12.162 26.569 13.793 1.00 0.00 H -ATOM 661 OW SOL 220 18.497 10.087 28.018 1.00 0.00 O -ATOM 662 HW1 SOL 220 19.198 10.734 28.318 1.00 0.00 H -ATOM 663 HW2 SOL 220 17.867 10.652 27.485 1.00 0.00 H -ATOM 664 OW SOL 221 23.758 24.161 29.453 1.00 0.00 O -ATOM 665 HW1 SOL 221 24.089 23.218 29.494 1.00 0.00 H -ATOM 666 HW2 SOL 221 24.587 24.695 29.288 1.00 0.00 H -ATOM 667 OW SOL 222 21.864 13.608 29.368 1.00 0.00 O -ATOM 668 HW1 SOL 222 21.386 12.750 29.559 1.00 0.00 H -ATOM 669 HW2 SOL 222 21.214 14.121 28.809 1.00 0.00 H -ATOM 670 OW SOL 223 29.881 27.987 21.278 1.00 0.00 O -ATOM 671 HW1 SOL 223 30.280 28.463 22.060 1.00 0.00 H -ATOM 672 HW2 SOL 223 28.896 28.064 21.433 1.00 0.00 H -ATOM 673 OW SOL 224 14.384 27.766 12.575 1.00 0.00 O -ATOM 674 HW1 SOL 224 13.656 27.745 13.259 1.00 0.00 H -ATOM 675 HW2 SOL 224 15.210 27.928 13.114 1.00 0.00 H -ATOM 676 OW SOL 225 17.381 25.415 12.307 1.00 0.00 O -ATOM 677 HW1 SOL 225 16.685 25.906 11.784 1.00 0.00 H -ATOM 678 HW2 SOL 225 17.361 24.493 11.919 1.00 0.00 H -ATOM 679 OW SOL 226 18.771 26.327 16.968 1.00 0.00 O -ATOM 680 HW1 SOL 226 19.165 26.197 17.878 1.00 0.00 H -ATOM 681 HW2 SOL 226 19.149 25.570 16.436 1.00 0.00 H -ATOM 682 OW SOL 227 26.894 25.793 22.690 1.00 0.00 O -ATOM 683 HW1 SOL 227 27.095 26.573 23.283 1.00 0.00 H -ATOM 684 HW2 SOL 227 26.892 25.014 23.317 1.00 0.00 H -ATOM 685 OW SOL 228 29.615 14.551 22.456 1.00 0.00 O -ATOM 686 HW1 SOL 228 29.405 13.573 22.445 1.00 0.00 H -ATOM 687 HW2 SOL 228 29.346 14.860 21.544 1.00 0.00 H -ATOM 688 OW SOL 229 14.566 25.605 27.425 1.00 0.00 O -ATOM 689 HW1 SOL 229 14.245 25.596 26.478 1.00 0.00 H -ATOM 690 HW2 SOL 229 15.214 24.844 27.462 1.00 0.00 H -ATOM 691 OW SOL 230 20.391 25.772 30.067 1.00 0.00 O -ATOM 692 HW1 SOL 230 21.375 25.748 29.888 1.00 0.00 H -ATOM 693 HW2 SOL 230 20.078 24.864 29.790 1.00 0.00 H -ATOM 694 OW SOL 231 23.233 14.897 21.299 1.00 0.00 O -ATOM 695 HW1 SOL 231 22.260 14.863 21.070 1.00 0.00 H -ATOM 696 HW2 SOL 231 23.269 14.533 22.230 1.00 0.00 H -ATOM 697 OW SOL 232 13.951 14.271 26.024 1.00 0.00 O -ATOM 698 HW1 SOL 232 13.866 15.163 26.468 1.00 0.00 H -ATOM 699 HW2 SOL 232 13.345 13.682 26.559 1.00 0.00 H -ATOM 700 OW SOL 233 28.373 27.959 24.651 1.00 0.00 O -ATOM 701 HW1 SOL 233 27.950 28.614 24.025 1.00 0.00 H -ATOM 702 HW2 SOL 233 28.738 27.253 24.044 1.00 0.00 H -ATOM 703 OW SOL 234 25.500 16.383 23.895 1.00 0.00 O -ATOM 704 HW1 SOL 234 25.500 17.138 23.239 1.00 0.00 H -ATOM 705 HW2 SOL 234 24.639 15.909 23.710 1.00 0.00 H -ATOM 706 OW SOL 235 28.002 12.440 13.022 1.00 0.00 O -ATOM 707 HW1 SOL 235 28.815 12.998 12.852 1.00 0.00 H -ATOM 708 HW2 SOL 235 28.343 11.502 12.958 1.00 0.00 H -ATOM 709 OW SOL 236 18.282 22.984 28.431 1.00 0.00 O -ATOM 710 HW1 SOL 236 17.839 22.956 27.535 1.00 0.00 H -ATOM 711 HW2 SOL 236 17.744 22.345 28.980 1.00 0.00 H -ATOM 712 OW SOL 237 15.334 10.807 19.052 1.00 0.00 O -ATOM 713 HW1 SOL 237 16.230 10.739 18.613 1.00 0.00 H -ATOM 714 HW2 SOL 237 15.543 10.729 20.027 1.00 0.00 H -ATOM 715 OW SOL 238 26.453 20.193 17.035 1.00 0.00 O -ATOM 716 HW1 SOL 238 27.285 19.738 16.718 1.00 0.00 H -ATOM 717 HW2 SOL 238 26.145 20.706 16.234 1.00 0.00 H -ATOM 718 OW SOL 239 10.845 27.204 26.439 1.00 0.00 O -ATOM 719 HW1 SOL 239 11.492 26.526 26.787 1.00 0.00 H -ATOM 720 HW2 SOL 239 10.226 27.356 27.209 1.00 0.00 H -ATOM 721 OW SOL 240 23.318 20.552 29.910 1.00 0.00 O -ATOM 722 HW1 SOL 240 23.322 19.973 29.095 1.00 0.00 H -ATOM 723 HW2 SOL 240 24.208 20.374 30.330 1.00 0.00 H -ATOM 724 OW SOL 241 12.360 11.799 19.506 1.00 0.00 O -ATOM 725 HW1 SOL 241 11.587 12.232 19.969 1.00 0.00 H -ATOM 726 HW2 SOL 241 12.913 11.439 20.258 1.00 0.00 H -ATOM 727 OW SOL 242 10.015 16.482 23.582 1.00 0.00 O -ATOM 728 HW1 SOL 242 9.278 17.021 23.174 1.00 0.00 H -ATOM 729 HW2 SOL 242 10.842 16.856 23.162 1.00 0.00 H -ATOM 730 OW SOL 243 24.378 12.205 18.326 1.00 0.00 O -ATOM 731 HW1 SOL 243 24.260 11.939 19.283 1.00 0.00 H -ATOM 732 HW2 SOL 243 24.465 11.331 17.848 1.00 0.00 H -ATOM 733 OW SOL 244 27.338 13.664 23.454 1.00 0.00 O -ATOM 734 HW1 SOL 244 28.230 13.837 23.870 1.00 0.00 H -ATOM 735 HW2 SOL 244 27.455 13.969 22.509 1.00 0.00 H -ATOM 736 OW SOL 245 16.940 13.384 31.601 1.00 0.00 O -ATOM 737 HW1 SOL 245 17.109 13.112 30.654 1.00 0.00 H -ATOM 738 HW2 SOL 245 17.669 12.928 32.111 1.00 0.00 H -ATOM 739 OW SOL 246 32.005 13.657 23.624 1.00 0.00 O -ATOM 740 HW1 SOL 246 32.257 13.911 24.558 1.00 0.00 H -ATOM 741 HW2 SOL 246 31.963 14.533 23.145 1.00 0.00 H -ATOM 742 OW SOL 247 28.888 16.640 31.052 1.00 0.00 O -ATOM 743 HW1 SOL 247 28.877 16.525 30.058 1.00 0.00 H -ATOM 744 HW2 SOL 247 28.475 17.540 31.190 1.00 0.00 H -ATOM 745 OW SOL 248 30.517 21.634 27.971 1.00 0.00 O -ATOM 746 HW1 SOL 248 30.413 20.686 27.671 1.00 0.00 H -ATOM 747 HW2 SOL 248 29.614 21.868 28.330 1.00 0.00 H -ATOM 748 OW SOL 249 29.278 25.405 14.874 1.00 0.00 O -ATOM 749 HW1 SOL 249 30.211 25.764 14.901 1.00 0.00 H -ATOM 750 HW2 SOL 249 28.781 25.992 15.513 1.00 0.00 H -ATOM 751 OW SOL 250 28.968 21.899 14.796 1.00 0.00 O -ATOM 752 HW1 SOL 250 28.346 22.644 14.559 1.00 0.00 H -ATOM 753 HW2 SOL 250 28.495 21.082 14.467 1.00 0.00 H -ATOM 754 OW SOL 251 14.191 11.981 16.094 1.00 0.00 O -ATOM 755 HW1 SOL 251 14.407 12.074 15.122 1.00 0.00 H -ATOM 756 HW2 SOL 251 14.275 10.999 16.261 1.00 0.00 H -ATOM 757 OW SOL 252 17.788 32.955 15.832 1.00 0.00 O -ATOM 758 HW1 SOL 252 17.315 32.902 14.953 1.00 0.00 H -ATOM 759 HW2 SOL 252 18.279 33.824 15.785 1.00 0.00 H -ATOM 760 OW SOL 253 14.053 32.614 18.037 1.00 0.00 O -ATOM 761 HW1 SOL 253 14.707 32.156 18.638 1.00 0.00 H -ATOM 762 HW2 SOL 253 13.297 32.849 18.647 1.00 0.00 H -ATOM 763 OW SOL 254 15.162 6.761 17.608 1.00 0.00 O -ATOM 764 HW1 SOL 254 16.124 6.787 17.336 1.00 0.00 H -ATOM 765 HW2 SOL 254 15.183 6.326 18.508 1.00 0.00 H -ATOM 766 OW SOL 255 23.403 24.435 19.289 1.00 0.00 O -ATOM 767 HW1 SOL 255 22.966 24.938 20.034 1.00 0.00 H -ATOM 768 HW2 SOL 255 24.203 24.019 19.721 1.00 0.00 H -ATOM 769 OW SOL 256 11.933 18.281 8.865 1.00 0.00 O -ATOM 770 HW1 SOL 256 12.169 18.288 7.894 1.00 0.00 H -ATOM 771 HW2 SOL 256 11.288 17.520 8.945 1.00 0.00 H -ATOM 772 OW SOL 257 17.352 17.223 12.875 1.00 0.00 O -ATOM 773 HW1 SOL 257 17.075 17.788 12.098 1.00 0.00 H -ATOM 774 HW2 SOL 257 16.594 16.579 12.980 1.00 0.00 H -ATOM 775 OW SOL 258 20.845 31.014 24.506 1.00 0.00 O -ATOM 776 HW1 SOL 258 21.494 30.971 23.747 1.00 0.00 H -ATOM 777 HW2 SOL 258 21.299 31.607 25.171 1.00 0.00 H -ATOM 778 OW SOL 259 16.173 30.639 14.579 1.00 0.00 O -ATOM 779 HW1 SOL 259 17.087 31.003 14.755 1.00 0.00 H -ATOM 780 HW2 SOL 259 15.597 31.456 14.545 1.00 0.00 H -ATOM 781 OW SOL 260 26.861 14.882 24.781 1.00 0.00 O -ATOM 782 HW1 SOL 260 27.331 15.619 24.295 1.00 0.00 H -ATOM 783 HW2 SOL 260 27.066 15.066 25.742 1.00 0.00 H -ATOM 784 OW SOL 261 20.147 18.767 8.642 1.00 0.00 O -ATOM 785 HW1 SOL 261 19.932 18.177 7.865 1.00 0.00 H -ATOM 786 HW2 SOL 261 19.754 18.282 9.423 1.00 0.00 H -ATOM 787 OW SOL 262 16.330 11.853 15.027 1.00 0.00 O -ATOM 788 HW1 SOL 262 16.561 11.180 15.729 1.00 0.00 H -ATOM 789 HW2 SOL 262 16.187 12.696 15.546 1.00 0.00 H -ATOM 790 OW SOL 263 19.998 14.127 14.342 1.00 0.00 O -ATOM 791 HW1 SOL 263 19.093 13.932 13.964 1.00 0.00 H -ATOM 792 HW2 SOL 263 20.377 14.802 13.709 1.00 0.00 H -ATOM 793 OW SOL 264 15.286 6.974 21.690 1.00 0.00 O -ATOM 794 HW1 SOL 264 14.490 6.733 21.134 1.00 0.00 H -ATOM 795 HW2 SOL 264 15.987 7.198 21.013 1.00 0.00 H -ATOM 796 OW SOL 265 22.572 20.878 22.776 1.00 0.00 O -ATOM 797 HW1 SOL 265 22.895 20.110 22.224 1.00 0.00 H -ATOM 798 HW2 SOL 265 21.659 21.062 22.413 1.00 0.00 H -ATOM 799 OW SOL 266 13.021 22.353 8.271 1.00 0.00 O -ATOM 800 HW1 SOL 266 13.103 21.539 7.695 1.00 0.00 H -ATOM 801 HW2 SOL 266 12.965 23.103 7.612 1.00 0.00 H -ATOM 802 OW SOL 267 29.306 12.539 20.816 1.00 0.00 O -ATOM 803 HW1 SOL 267 29.850 13.011 20.123 1.00 0.00 H -ATOM 804 HW2 SOL 267 29.587 11.583 20.726 1.00 0.00 H -ATOM 805 OW SOL 268 27.591 8.306 19.715 1.00 0.00 O -ATOM 806 HW1 SOL 268 26.981 8.960 20.162 1.00 0.00 H -ATOM 807 HW2 SOL 268 28.102 7.902 20.473 1.00 0.00 H -ATOM 808 OW SOL 269 14.625 19.150 27.877 1.00 0.00 O -ATOM 809 HW1 SOL 269 14.905 19.901 28.474 1.00 0.00 H -ATOM 810 HW2 SOL 269 14.485 18.387 28.507 1.00 0.00 H -ATOM 811 OW SOL 270 15.053 18.138 11.940 1.00 0.00 O -ATOM 812 HW1 SOL 270 14.083 18.294 12.126 1.00 0.00 H -ATOM 813 HW2 SOL 270 15.179 18.501 11.017 1.00 0.00 H -ATOM 814 OW SOL 271 20.480 10.066 25.281 1.00 0.00 O -ATOM 815 HW1 SOL 271 20.492 10.653 26.090 1.00 0.00 H -ATOM 816 HW2 SOL 271 20.115 9.200 25.622 1.00 0.00 H -ATOM 817 OW SOL 272 16.687 16.821 21.152 1.00 0.00 O -ATOM 818 HW1 SOL 272 17.392 17.113 20.506 1.00 0.00 H -ATOM 819 HW2 SOL 272 16.033 16.326 20.580 1.00 0.00 H -ATOM 820 OW SOL 273 20.496 9.997 18.857 1.00 0.00 O -ATOM 821 HW1 SOL 273 19.529 9.992 19.113 1.00 0.00 H -ATOM 822 HW2 SOL 273 20.580 10.799 18.267 1.00 0.00 H -ATOM 823 OW SOL 274 25.891 27.591 29.791 1.00 0.00 O -ATOM 824 HW1 SOL 274 25.008 27.972 30.067 1.00 0.00 H -ATOM 825 HW2 SOL 274 26.443 27.649 30.622 1.00 0.00 H -ATOM 826 OW SOL 275 10.510 26.690 23.469 1.00 0.00 O -ATOM 827 HW1 SOL 275 9.710 26.679 24.068 1.00 0.00 H -ATOM 828 HW2 SOL 275 11.238 27.046 24.054 1.00 0.00 H -ATOM 829 OW SOL 276 25.856 13.235 20.210 1.00 0.00 O -ATOM 830 HW1 SOL 276 26.425 12.798 19.514 1.00 0.00 H -ATOM 831 HW2 SOL 276 25.294 13.876 19.686 1.00 0.00 H -ATOM 832 OW SOL 277 10.188 21.626 13.254 1.00 0.00 O -ATOM 833 HW1 SOL 277 10.108 20.717 12.847 1.00 0.00 H -ATOM 834 HW2 SOL 277 10.441 21.439 14.203 1.00 0.00 H -ATOM 835 OW SOL 278 13.376 16.662 19.239 1.00 0.00 O -ATOM 836 HW1 SOL 278 12.555 16.358 18.757 1.00 0.00 H -ATOM 837 HW2 SOL 278 13.509 17.597 18.911 1.00 0.00 H -ATOM 838 OW SOL 279 19.716 33.214 25.227 1.00 0.00 O -ATOM 839 HW1 SOL 279 20.555 33.286 25.766 1.00 0.00 H -ATOM 840 HW2 SOL 279 18.992 33.211 25.917 1.00 0.00 H -ATOM 841 OW SOL 280 21.318 16.043 23.168 1.00 0.00 O -ATOM 842 HW1 SOL 280 20.740 15.644 22.456 1.00 0.00 H -ATOM 843 HW2 SOL 280 21.291 15.365 23.902 1.00 0.00 H -ATOM 844 OW SOL 281 29.072 25.241 18.007 1.00 0.00 O -ATOM 845 HW1 SOL 281 29.017 24.363 18.482 1.00 0.00 H -ATOM 846 HW2 SOL 281 28.392 25.159 17.279 1.00 0.00 H -ATOM 847 OW SOL 282 16.906 12.470 24.437 1.00 0.00 O -ATOM 848 HW1 SOL 282 16.760 13.426 24.688 1.00 0.00 H -ATOM 849 HW2 SOL 282 17.418 12.526 23.580 1.00 0.00 H -ATOM 850 OW SOL 283 11.005 16.545 20.975 1.00 0.00 O -ATOM 851 HW1 SOL 283 11.185 17.280 20.321 1.00 0.00 H -ATOM 852 HW2 SOL 283 11.645 15.826 20.704 1.00 0.00 H -ATOM 853 OW SOL 284 19.808 19.268 16.414 1.00 0.00 O -ATOM 854 HW1 SOL 284 18.955 18.964 16.838 1.00 0.00 H -ATOM 855 HW2 SOL 284 19.515 19.632 15.530 1.00 0.00 H -ATOM 856 OW SOL 285 19.928 17.083 32.305 1.00 0.00 O -ATOM 857 HW1 SOL 285 19.062 17.537 32.093 1.00 0.00 H -ATOM 858 HW2 SOL 285 20.282 16.821 31.407 1.00 0.00 H -ATOM 859 OW SOL 286 21.167 10.656 13.563 1.00 0.00 O -ATOM 860 HW1 SOL 286 22.068 10.422 13.199 1.00 0.00 H -ATOM 861 HW2 SOL 286 20.751 11.196 12.831 1.00 0.00 H -ATOM 862 OW SOL 287 25.467 23.335 16.932 1.00 0.00 O -ATOM 863 HW1 SOL 287 25.022 24.043 16.383 1.00 0.00 H -ATOM 864 HW2 SOL 287 25.864 22.722 16.249 1.00 0.00 H -ATOM 865 OW SOL 288 11.779 10.659 26.429 1.00 0.00 O -ATOM 866 HW1 SOL 288 11.727 9.775 25.964 1.00 0.00 H -ATOM 867 HW2 SOL 288 11.701 11.322 25.684 1.00 0.00 H -ATOM 868 OW SOL 289 20.631 25.552 23.948 1.00 0.00 O -ATOM 869 HW1 SOL 289 20.171 26.439 23.917 1.00 0.00 H -ATOM 870 HW2 SOL 289 21.576 25.768 23.702 1.00 0.00 H -ATOM 871 OW SOL 290 31.043 16.337 17.275 1.00 0.00 O -ATOM 872 HW1 SOL 290 31.810 15.800 17.627 1.00 0.00 H -ATOM 873 HW2 SOL 290 30.548 16.609 18.100 1.00 0.00 H -ATOM 874 OW SOL 291 12.491 25.394 18.555 1.00 0.00 O -ATOM 875 HW1 SOL 291 11.721 25.934 18.215 1.00 0.00 H -ATOM 876 HW2 SOL 291 12.354 24.497 18.136 1.00 0.00 H -ATOM 877 OW SOL 292 25.292 13.571 16.035 1.00 0.00 O -ATOM 878 HW1 SOL 292 25.055 12.601 16.090 1.00 0.00 H -ATOM 879 HW2 SOL 292 24.754 13.987 16.769 1.00 0.00 H -ATOM 880 OW SOL 293 9.792 18.248 17.146 1.00 0.00 O -ATOM 881 HW1 SOL 293 10.249 17.869 17.951 1.00 0.00 H -ATOM 882 HW2 SOL 293 9.494 17.438 16.641 1.00 0.00 H -ATOM 883 OW SOL 294 17.876 26.066 14.738 1.00 0.00 O -ATOM 884 HW1 SOL 294 18.251 26.859 15.218 1.00 0.00 H -ATOM 885 HW2 SOL 294 17.107 26.444 14.222 1.00 0.00 H -ATOM 886 OW SOL 295 13.351 26.592 29.897 1.00 0.00 O -ATOM 887 HW1 SOL 295 13.162 26.831 30.850 1.00 0.00 H -ATOM 888 HW2 SOL 295 12.534 26.092 29.613 1.00 0.00 H -ATOM 889 OW SOL 296 12.037 28.641 18.185 1.00 0.00 O -ATOM 890 HW1 SOL 296 12.138 29.311 18.919 1.00 0.00 H -ATOM 891 HW2 SOL 296 11.798 27.798 18.666 1.00 0.00 H -ATOM 892 OW SOL 297 13.949 14.903 14.018 1.00 0.00 O -ATOM 893 HW1 SOL 297 13.391 14.944 14.846 1.00 0.00 H -ATOM 894 HW2 SOL 297 13.286 15.029 13.280 1.00 0.00 H -ATOM 895 OW SOL 298 24.441 9.774 18.896 1.00 0.00 O -ATOM 896 HW1 SOL 298 24.484 8.795 18.698 1.00 0.00 H -ATOM 897 HW2 SOL 298 23.461 9.959 18.959 1.00 0.00 H -ATOM 898 OW SOL 299 24.825 20.625 13.710 1.00 0.00 O -ATOM 899 HW1 SOL 299 24.699 19.834 13.111 1.00 0.00 H -ATOM 900 HW2 SOL 299 24.759 21.405 13.087 1.00 0.00 H -ATOM 901 OW SOL 300 30.311 15.797 23.908 1.00 0.00 O -ATOM 902 HW1 SOL 300 30.013 16.347 23.128 1.00 0.00 H -ATOM 903 HW2 SOL 300 31.248 16.106 24.070 1.00 0.00 H -ATOM 904 OW SOL 301 14.689 25.210 19.062 1.00 0.00 O -ATOM 905 HW1 SOL 301 14.868 24.486 18.395 1.00 0.00 H -ATOM 906 HW2 SOL 301 15.310 25.943 18.787 1.00 0.00 H -ATOM 907 OW SOL 302 25.131 30.384 14.211 1.00 0.00 O -ATOM 908 HW1 SOL 302 25.229 30.043 15.146 1.00 0.00 H -ATOM 909 HW2 SOL 302 24.835 31.331 14.335 1.00 0.00 H -ATOM 910 OW SOL 303 26.817 28.630 15.931 1.00 0.00 O -ATOM 911 HW1 SOL 303 26.854 29.598 16.177 1.00 0.00 H -ATOM 912 HW2 SOL 303 27.762 28.323 16.039 1.00 0.00 H -ATOM 913 OW SOL 304 25.870 28.779 23.498 1.00 0.00 O -ATOM 914 HW1 SOL 304 26.007 28.035 24.152 1.00 0.00 H -ATOM 915 HW2 SOL 304 26.345 28.462 22.677 1.00 0.00 H -ATOM 916 OW SOL 305 21.224 20.028 20.919 1.00 0.00 O -ATOM 917 HW1 SOL 305 20.868 19.663 20.059 1.00 0.00 H -ATOM 918 HW2 SOL 305 21.455 19.210 21.445 1.00 0.00 H -ATOM 919 OW SOL 306 23.951 18.581 19.460 1.00 0.00 O -ATOM 920 HW1 SOL 306 24.755 18.081 19.139 1.00 0.00 H -ATOM 921 HW2 SOL 306 23.703 19.155 18.679 1.00 0.00 H -ATOM 922 OW SOL 307 14.745 23.638 10.984 1.00 0.00 O -ATOM 923 HW1 SOL 307 14.721 24.346 11.689 1.00 0.00 H -ATOM 924 HW2 SOL 307 14.730 22.785 11.506 1.00 0.00 H -ATOM 925 OW SOL 308 20.995 28.107 28.584 1.00 0.00 O -ATOM 926 HW1 SOL 308 21.030 29.030 28.201 1.00 0.00 H -ATOM 927 HW2 SOL 308 20.408 28.206 29.388 1.00 0.00 H -ATOM 928 OW SOL 309 21.468 30.225 29.577 1.00 0.00 O -ATOM 929 HW1 SOL 309 22.120 30.435 28.848 1.00 0.00 H -ATOM 930 HW2 SOL 309 20.824 30.989 29.546 1.00 0.00 H -ATOM 931 OW SOL 310 24.896 27.982 17.390 1.00 0.00 O -ATOM 932 HW1 SOL 310 25.409 28.790 17.677 1.00 0.00 H -ATOM 933 HW2 SOL 310 24.781 28.112 16.405 1.00 0.00 H -ATOM 934 OW SOL 311 10.694 13.902 19.257 1.00 0.00 O -ATOM 935 HW1 SOL 311 9.883 14.455 19.452 1.00 0.00 H -ATOM 936 HW2 SOL 311 11.300 14.094 20.029 1.00 0.00 H -ATOM 937 OW SOL 312 12.486 10.419 18.077 1.00 0.00 O -ATOM 938 HW1 SOL 312 11.824 11.058 17.686 1.00 0.00 H -ATOM 939 HW2 SOL 312 12.027 10.075 18.896 1.00 0.00 H -ATOM 940 OW SOL 313 21.726 12.250 26.675 1.00 0.00 O -ATOM 941 HW1 SOL 313 21.308 12.626 25.848 1.00 0.00 H -ATOM 942 HW2 SOL 313 21.836 13.048 27.268 1.00 0.00 H -ATOM 943 OW SOL 314 20.056 23.431 18.133 1.00 0.00 O -ATOM 944 HW1 SOL 314 19.555 24.081 17.561 1.00 0.00 H -ATOM 945 HW2 SOL 314 19.366 23.106 18.780 1.00 0.00 H -ATOM 946 OW SOL 315 8.353 22.549 12.108 1.00 0.00 O -ATOM 947 HW1 SOL 315 7.981 23.298 12.656 1.00 0.00 H -ATOM 948 HW2 SOL 315 8.381 21.780 12.747 1.00 0.00 H -ATOM 949 OW SOL 316 23.066 24.865 12.477 1.00 0.00 O -ATOM 950 HW1 SOL 316 23.923 24.801 11.966 1.00 0.00 H -ATOM 951 HW2 SOL 316 22.364 24.788 11.770 1.00 0.00 H -ATOM 952 OW SOL 317 21.609 21.802 31.335 1.00 0.00 O -ATOM 953 HW1 SOL 317 20.981 21.226 30.812 1.00 0.00 H -ATOM 954 HW2 SOL 317 22.229 22.167 30.639 1.00 0.00 H -ATOM 955 OW SOL 318 11.152 12.741 16.477 1.00 0.00 O -ATOM 956 HW1 SOL 318 10.489 13.482 16.374 1.00 0.00 H -ATOM 957 HW2 SOL 318 11.749 12.847 15.682 1.00 0.00 H -ATOM 958 OW SOL 319 16.479 19.355 30.032 1.00 0.00 O -ATOM 959 HW1 SOL 319 15.718 19.991 30.156 1.00 0.00 H -ATOM 960 HW2 SOL 319 17.195 19.922 29.624 1.00 0.00 H -ATOM 961 OW SOL 320 16.511 25.983 28.210 1.00 0.00 O -ATOM 962 HW1 SOL 320 15.788 26.358 28.790 1.00 0.00 H -ATOM 963 HW2 SOL 320 17.095 26.773 28.022 1.00 0.00 H -ATOM 964 OW SOL 321 11.555 9.180 21.060 1.00 0.00 O -ATOM 965 HW1 SOL 321 11.639 8.600 21.869 1.00 0.00 H -ATOM 966 HW2 SOL 321 12.093 9.990 21.293 1.00 0.00 H -ATOM 967 OW SOL 322 29.258 22.693 23.080 1.00 0.00 O -ATOM 968 HW1 SOL 322 28.713 23.180 23.763 1.00 0.00 H -ATOM 969 HW2 SOL 322 28.812 22.924 22.215 1.00 0.00 H -ATOM 970 OW SOL 323 15.293 7.604 25.247 1.00 0.00 O -ATOM 971 HW1 SOL 323 15.848 8.208 24.676 1.00 0.00 H -ATOM 972 HW2 SOL 323 14.580 7.280 24.626 1.00 0.00 H -ATOM 973 OW SOL 324 16.703 32.803 18.354 1.00 0.00 O -ATOM 974 HW1 SOL 324 16.126 33.380 18.931 1.00 0.00 H -ATOM 975 HW2 SOL 324 17.349 32.396 18.999 1.00 0.00 H -ATOM 976 OW SOL 325 13.842 12.645 18.127 1.00 0.00 O -ATOM 977 HW1 SOL 325 14.323 13.243 17.486 1.00 0.00 H -ATOM 978 HW2 SOL 325 12.897 12.662 17.801 1.00 0.00 H -ATOM 979 OW SOL 326 14.556 13.983 8.009 1.00 0.00 O -ATOM 980 HW1 SOL 326 14.206 14.169 8.926 1.00 0.00 H -ATOM 981 HW2 SOL 326 14.445 14.854 7.532 1.00 0.00 H -ATOM 982 OW SOL 327 27.488 22.281 18.419 1.00 0.00 O -ATOM 983 HW1 SOL 327 26.914 22.997 18.815 1.00 0.00 H -ATOM 984 HW2 SOL 327 27.033 21.434 18.693 1.00 0.00 H -ATOM 985 OW SOL 328 20.380 31.224 13.120 1.00 0.00 O -ATOM 986 HW1 SOL 328 20.139 30.588 13.853 1.00 0.00 H -ATOM 987 HW2 SOL 328 20.743 32.019 13.608 1.00 0.00 H -ATOM 988 OW SOL 329 28.233 19.659 23.418 1.00 0.00 O -ATOM 989 HW1 SOL 329 27.999 19.815 22.459 1.00 0.00 H -ATOM 990 HW2 SOL 329 28.599 18.729 23.424 1.00 0.00 H -ATOM 991 OW SOL 330 27.613 9.786 25.228 1.00 0.00 O -ATOM 992 HW1 SOL 330 28.516 9.582 25.605 1.00 0.00 H -ATOM 993 HW2 SOL 330 27.816 10.233 24.357 1.00 0.00 H -ATOM 994 OW SOL 331 26.953 11.666 23.287 1.00 0.00 O -ATOM 995 HW1 SOL 331 27.240 10.967 22.632 1.00 0.00 H -ATOM 996 HW2 SOL 331 26.091 12.004 22.908 1.00 0.00 H -ATOM 997 OW SOL 332 17.325 7.120 22.392 1.00 0.00 O -ATOM 998 HW1 SOL 332 17.426 8.040 22.770 1.00 0.00 H -ATOM 999 HW2 SOL 332 17.048 6.571 23.181 1.00 0.00 H -ATOM 1000 OW SOL 333 11.304 17.823 11.869 1.00 0.00 O -ATOM 1001 HW1 SOL 333 11.740 18.013 12.749 1.00 0.00 H -ATOM 1002 HW2 SOL 333 10.327 17.871 12.075 1.00 0.00 H -ATOM 1003 OW SOL 334 30.392 14.897 18.837 1.00 0.00 O -ATOM 1004 HW1 SOL 334 30.071 15.409 19.634 1.00 0.00 H -ATOM 1005 HW2 SOL 334 31.097 14.295 19.212 1.00 0.00 H -ATOM 1006 OW SOL 335 20.738 13.693 19.175 1.00 0.00 O -ATOM 1007 HW1 SOL 335 19.925 13.716 18.593 1.00 0.00 H -ATOM 1008 HW2 SOL 335 20.469 14.225 19.977 1.00 0.00 H -ATOM 1009 OW SOL 336 22.146 8.872 20.606 1.00 0.00 O -ATOM 1010 HW1 SOL 336 22.323 8.101 19.994 1.00 0.00 H -ATOM 1011 HW2 SOL 336 21.919 9.621 19.984 1.00 0.00 H -ATOM 1012 OW SOL 337 17.898 29.877 12.282 1.00 0.00 O -ATOM 1013 HW1 SOL 337 18.653 29.401 12.733 1.00 0.00 H -ATOM 1014 HW2 SOL 337 17.369 30.254 13.042 1.00 0.00 H -ATOM 1015 OW SOL 338 9.579 23.791 27.081 1.00 0.00 O -ATOM 1016 HW1 SOL 338 9.173 24.458 27.705 1.00 0.00 H -ATOM 1017 HW2 SOL 338 8.955 23.789 26.299 1.00 0.00 H -ATOM 1018 OW SOL 339 18.804 7.349 14.881 1.00 0.00 O -ATOM 1019 HW1 SOL 339 18.160 6.979 15.551 1.00 0.00 H -ATOM 1020 HW2 SOL 339 19.408 7.927 15.429 1.00 0.00 H -ATOM 1021 OW SOL 340 17.958 31.886 24.386 1.00 0.00 O -ATOM 1022 HW1 SOL 340 18.675 31.220 24.183 1.00 0.00 H -ATOM 1023 HW2 SOL 340 18.213 32.682 23.837 1.00 0.00 H -ATOM 1024 OW SOL 341 25.496 25.147 30.905 1.00 0.00 O -ATOM 1025 HW1 SOL 341 25.379 25.434 31.855 1.00 0.00 H -ATOM 1026 HW2 SOL 341 26.139 25.816 30.533 1.00 0.00 H -ATOM 1027 OW SOL 342 22.647 25.090 16.394 1.00 0.00 O -ATOM 1028 HW1 SOL 342 22.824 25.814 17.061 1.00 0.00 H -ATOM 1029 HW2 SOL 342 22.426 25.589 15.557 1.00 0.00 H -ATOM 1030 OW SOL 343 7.347 20.812 17.781 1.00 0.00 O -ATOM 1031 HW1 SOL 343 7.132 20.349 18.640 1.00 0.00 H -ATOM 1032 HW2 SOL 343 7.366 20.070 17.111 1.00 0.00 H -ATOM 1033 OW SOL 344 15.251 10.366 24.890 1.00 0.00 O -ATOM 1034 HW1 SOL 344 14.474 9.836 24.551 1.00 0.00 H -ATOM 1035 HW2 SOL 344 16.010 10.071 24.309 1.00 0.00 H -ATOM 1036 OW SOL 345 13.711 29.075 24.741 1.00 0.00 O -ATOM 1037 HW1 SOL 345 12.999 28.666 25.312 1.00 0.00 H -ATOM 1038 HW2 SOL 345 13.198 29.521 24.008 1.00 0.00 H -ATOM 1039 OW SOL 346 12.199 23.930 24.988 1.00 0.00 O -ATOM 1040 HW1 SOL 346 12.707 23.203 25.448 1.00 0.00 H -ATOM 1041 HW2 SOL 346 12.905 24.433 24.490 1.00 0.00 H -ATOM 1042 OW SOL 347 30.271 18.583 18.904 1.00 0.00 O -ATOM 1043 HW1 SOL 347 29.513 19.052 19.356 1.00 0.00 H -ATOM 1044 HW2 SOL 347 30.661 18.013 19.627 1.00 0.00 H -ATOM 1045 OW SOL 348 18.452 13.467 15.734 1.00 0.00 O -ATOM 1046 HW1 SOL 348 18.745 13.009 16.573 1.00 0.00 H -ATOM 1047 HW2 SOL 348 18.019 14.306 16.061 1.00 0.00 H -ATOM 1048 OW SOL 349 27.608 25.406 21.006 1.00 0.00 O -ATOM 1049 HW1 SOL 349 28.239 25.387 20.230 1.00 0.00 H -ATOM 1050 HW2 SOL 349 26.879 26.019 20.703 1.00 0.00 H -ATOM 1051 OW SOL 350 29.293 13.162 26.803 1.00 0.00 O -ATOM 1052 HW1 SOL 350 28.984 12.418 27.395 1.00 0.00 H -ATOM 1053 HW2 SOL 350 28.454 13.670 26.605 1.00 0.00 H -ATOM 1054 OW SOL 351 25.367 16.306 20.113 1.00 0.00 O -ATOM 1055 HW1 SOL 351 25.891 17.140 20.287 1.00 0.00 H -ATOM 1056 HW2 SOL 351 24.438 16.548 20.392 1.00 0.00 H -ATOM 1057 OW SOL 352 30.822 27.105 23.424 1.00 0.00 O -ATOM 1058 HW1 SOL 352 31.202 27.871 23.943 1.00 0.00 H -ATOM 1059 HW2 SOL 352 30.581 26.439 24.130 1.00 0.00 H -ATOM 1060 OW SOL 353 23.941 14.747 25.295 1.00 0.00 O -ATOM 1061 HW1 SOL 353 24.843 15.162 25.416 1.00 0.00 H -ATOM 1062 HW2 SOL 353 23.374 15.211 25.975 1.00 0.00 H -ATOM 1063 OW SOL 354 13.604 17.251 21.190 1.00 0.00 O -ATOM 1064 HW1 SOL 354 12.826 17.862 21.334 1.00 0.00 H -ATOM 1065 HW2 SOL 354 13.569 16.634 21.976 1.00 0.00 H -ATOM 1066 OW SOL 355 18.949 7.925 24.760 1.00 0.00 O -ATOM 1067 HW1 SOL 355 19.061 8.403 23.889 1.00 0.00 H -ATOM 1068 HW2 SOL 355 17.959 7.917 24.900 1.00 0.00 H -ATOM 1069 OW SOL 356 8.916 14.706 23.338 1.00 0.00 O -ATOM 1070 HW1 SOL 356 9.277 14.271 24.163 1.00 0.00 H -ATOM 1071 HW2 SOL 356 8.325 15.430 23.693 1.00 0.00 H -ATOM 1072 OW SOL 357 26.796 12.444 17.183 1.00 0.00 O -ATOM 1073 HW1 SOL 357 27.461 12.928 16.616 1.00 0.00 H -ATOM 1074 HW2 SOL 357 26.186 13.168 17.503 1.00 0.00 H -ATOM 1075 OW SOL 358 13.234 9.422 15.555 1.00 0.00 O -ATOM 1076 HW1 SOL 358 12.639 9.431 16.359 1.00 0.00 H -ATOM 1077 HW2 SOL 358 12.597 9.516 14.790 1.00 0.00 H -ATOM 1078 OW SOL 359 16.066 17.405 24.928 1.00 0.00 O -ATOM 1079 HW1 SOL 359 15.432 17.970 24.400 1.00 0.00 H -ATOM 1080 HW2 SOL 359 15.787 17.561 25.875 1.00 0.00 H -ATOM 1081 OW SOL 360 18.659 24.815 26.775 1.00 0.00 O -ATOM 1082 HW1 SOL 360 19.219 24.209 27.339 1.00 0.00 H -ATOM 1083 HW2 SOL 360 18.065 25.272 27.437 1.00 0.00 H -ATOM 1084 OW SOL 361 10.600 13.243 25.686 1.00 0.00 O -ATOM 1085 HW1 SOL 361 11.333 13.874 25.432 1.00 0.00 H -ATOM 1086 HW2 SOL 361 10.318 12.846 24.812 1.00 0.00 H -ATOM 1087 OW SOL 362 10.012 29.575 16.524 1.00 0.00 O -ATOM 1088 HW1 SOL 362 9.500 29.086 15.818 1.00 0.00 H -ATOM 1089 HW2 SOL 362 10.877 29.798 16.075 1.00 0.00 H -ATOM 1090 OW SOL 363 23.586 27.355 19.055 1.00 0.00 O -ATOM 1091 HW1 SOL 363 24.502 26.964 18.967 1.00 0.00 H -ATOM 1092 HW2 SOL 363 23.752 28.341 19.077 1.00 0.00 H -ATOM 1093 OW SOL 364 9.635 19.206 24.800 1.00 0.00 O -ATOM 1094 HW1 SOL 364 9.097 19.827 25.370 1.00 0.00 H -ATOM 1095 HW2 SOL 364 10.251 18.762 25.452 1.00 0.00 H -ATOM 1096 OW SOL 365 14.658 26.293 14.899 1.00 0.00 O -ATOM 1097 HW1 SOL 365 14.872 25.976 13.975 1.00 0.00 H -ATOM 1098 HW2 SOL 365 15.201 27.127 14.994 1.00 0.00 H -ATOM 1099 OW SOL 366 13.759 14.754 20.145 1.00 0.00 O -ATOM 1100 HW1 SOL 366 13.554 14.035 19.482 1.00 0.00 H -ATOM 1101 HW2 SOL 366 14.756 14.731 20.219 1.00 0.00 H -ATOM 1102 OW SOL 367 12.001 14.814 10.866 1.00 0.00 O -ATOM 1103 HW1 SOL 367 12.869 14.379 10.626 1.00 0.00 H -ATOM 1104 HW2 SOL 367 11.604 15.053 9.980 1.00 0.00 H -ATOM 1105 OW SOL 368 18.668 20.118 8.220 1.00 0.00 O -ATOM 1106 HW1 SOL 368 17.814 20.193 8.735 1.00 0.00 H -ATOM 1107 HW2 SOL 368 18.404 19.611 7.399 1.00 0.00 H -ATOM 1108 OW SOL 369 23.926 13.005 24.371 1.00 0.00 O -ATOM 1109 HW1 SOL 369 23.334 13.133 23.575 1.00 0.00 H -ATOM 1110 HW2 SOL 369 24.838 12.905 23.974 1.00 0.00 H -ATOM 1111 OW SOL 370 23.517 7.462 17.110 1.00 0.00 O -ATOM 1112 HW1 SOL 370 24.488 7.690 17.189 1.00 0.00 H -ATOM 1113 HW2 SOL 370 23.088 8.336 16.880 1.00 0.00 H -ATOM 1114 OW SOL 371 26.357 18.637 14.769 1.00 0.00 O -ATOM 1115 HW1 SOL 371 26.316 19.578 14.433 1.00 0.00 H -ATOM 1116 HW2 SOL 371 27.258 18.319 14.472 1.00 0.00 H -ATOM 1117 OW SOL 372 21.116 28.517 20.056 1.00 0.00 O -ATOM 1118 HW1 SOL 372 20.534 27.824 19.631 1.00 0.00 H -ATOM 1119 HW2 SOL 372 21.533 28.985 19.277 1.00 0.00 H -ATOM 1120 OW SOL 373 27.604 11.145 20.199 1.00 0.00 O -ATOM 1121 HW1 SOL 373 27.072 11.634 20.889 1.00 0.00 H -ATOM 1122 HW2 SOL 373 28.093 10.450 20.726 1.00 0.00 H -ATOM 1123 OW SOL 374 11.692 16.705 31.095 1.00 0.00 O -ATOM 1124 HW1 SOL 374 10.808 16.892 30.666 1.00 0.00 H -ATOM 1125 HW2 SOL 374 12.254 16.366 30.340 1.00 0.00 H -ATOM 1126 OW SOL 375 17.350 29.821 30.443 1.00 0.00 O -ATOM 1127 HW1 SOL 375 17.988 29.961 29.686 1.00 0.00 H -ATOM 1128 HW2 SOL 375 17.740 29.048 30.941 1.00 0.00 H -ATOM 1129 OW SOL 376 16.689 13.349 21.122 1.00 0.00 O -ATOM 1130 HW1 SOL 376 16.772 12.656 21.838 1.00 0.00 H -ATOM 1131 HW2 SOL 376 16.237 14.113 21.584 1.00 0.00 H -ATOM 1132 OW SOL 377 15.870 18.012 32.581 1.00 0.00 O -ATOM 1133 HW1 SOL 377 15.987 18.011 31.588 1.00 0.00 H -ATOM 1134 HW2 SOL 377 16.784 17.796 32.926 1.00 0.00 H -ATOM 1135 OW SOL 378 18.304 16.070 15.111 1.00 0.00 O -ATOM 1136 HW1 SOL 378 18.299 17.006 14.760 1.00 0.00 H -ATOM 1137 HW2 SOL 378 17.907 15.536 14.364 1.00 0.00 H -ATOM 1138 OW SOL 379 18.903 20.198 10.486 1.00 0.00 O -ATOM 1139 HW1 SOL 379 19.030 19.297 10.901 1.00 0.00 H -ATOM 1140 HW2 SOL 379 19.667 20.733 10.846 1.00 0.00 H -ATOM 1141 OW SOL 380 22.502 15.710 17.837 1.00 0.00 O -ATOM 1142 HW1 SOL 380 22.313 15.970 18.784 1.00 0.00 H -ATOM 1143 HW2 SOL 380 22.606 16.588 17.368 1.00 0.00 H -ATOM 1144 OW SOL 381 29.683 30.062 19.831 1.00 0.00 O -ATOM 1145 HW1 SOL 381 29.674 29.784 20.792 1.00 0.00 H -ATOM 1146 HW2 SOL 381 28.829 30.570 19.724 1.00 0.00 H -ATOM 1147 OW SOL 382 26.170 27.205 27.204 1.00 0.00 O -ATOM 1148 HW1 SOL 382 26.836 26.494 27.429 1.00 0.00 H -ATOM 1149 HW2 SOL 382 25.555 27.210 27.993 1.00 0.00 H -ATOM 1150 OW SOL 383 16.106 13.386 18.542 1.00 0.00 O -ATOM 1151 HW1 SOL 383 16.962 13.868 18.728 1.00 0.00 H -ATOM 1152 HW2 SOL 383 15.997 12.785 19.334 1.00 0.00 H -ATOM 1153 OW SOL 384 18.518 21.201 17.289 1.00 0.00 O -ATOM 1154 HW1 SOL 384 18.236 20.768 16.433 1.00 0.00 H -ATOM 1155 HW2 SOL 384 19.194 21.879 17.000 1.00 0.00 H -ATOM 1156 OW SOL 385 27.338 17.916 28.534 1.00 0.00 O -ATOM 1157 HW1 SOL 385 27.345 17.201 29.232 1.00 0.00 H -ATOM 1158 HW2 SOL 385 27.179 18.754 29.056 1.00 0.00 H -ATOM 1159 OW SOL 386 22.872 26.440 9.393 1.00 0.00 O -ATOM 1160 HW1 SOL 386 22.770 25.847 10.192 1.00 0.00 H -ATOM 1161 HW2 SOL 386 22.487 27.312 9.696 1.00 0.00 H -ATOM 1162 OW SOL 387 26.300 16.482 16.316 1.00 0.00 O -ATOM 1163 HW1 SOL 387 25.677 16.528 17.097 1.00 0.00 H -ATOM 1164 HW2 SOL 387 25.909 15.761 15.744 1.00 0.00 H -ATOM 1165 OW SOL 388 25.715 22.803 30.761 1.00 0.00 O -ATOM 1166 HW1 SOL 388 26.272 21.975 30.708 1.00 0.00 H -ATOM 1167 HW2 SOL 388 26.349 23.531 30.501 1.00 0.00 H -ATOM 1168 OW SOL 389 24.335 9.089 13.169 1.00 0.00 O -ATOM 1169 HW1 SOL 389 24.710 8.808 14.052 1.00 0.00 H -ATOM 1170 HW2 SOL 389 24.584 8.337 12.558 1.00 0.00 H -ATOM 1171 OW SOL 390 19.492 13.050 28.693 1.00 0.00 O -ATOM 1172 HW1 SOL 390 18.690 12.532 28.990 1.00 0.00 H -ATOM 1173 HW2 SOL 390 19.954 12.428 28.062 1.00 0.00 H -ATOM 1174 OW SOL 391 15.319 18.192 20.811 1.00 0.00 O -ATOM 1175 HW1 SOL 391 15.078 18.658 19.960 1.00 0.00 H -ATOM 1176 HW2 SOL 391 16.106 18.708 21.148 1.00 0.00 H -ATOM 1177 OW SOL 392 10.011 10.867 21.045 1.00 0.00 O -ATOM 1178 HW1 SOL 392 10.224 10.284 20.261 1.00 0.00 H -ATOM 1179 HW2 SOL 392 9.590 11.674 20.630 1.00 0.00 H -ATOM 1180 OW SOL 393 29.350 11.459 25.227 1.00 0.00 O -ATOM 1181 HW1 SOL 393 30.300 11.760 25.311 1.00 0.00 H -ATOM 1182 HW2 SOL 393 29.123 11.659 24.275 1.00 0.00 H -ATOM 1183 OW SOL 394 12.469 18.947 30.412 1.00 0.00 O -ATOM 1184 HW1 SOL 394 11.739 19.586 30.172 1.00 0.00 H -ATOM 1185 HW2 SOL 394 12.924 18.769 29.540 1.00 0.00 H -ATOM 1186 OW SOL 395 27.922 15.175 20.298 1.00 0.00 O -ATOM 1187 HW1 SOL 395 27.229 15.856 20.059 1.00 0.00 H -ATOM 1188 HW2 SOL 395 27.389 14.420 20.680 1.00 0.00 H -ATOM 1189 OW SOL 396 16.812 9.336 28.303 1.00 0.00 O -ATOM 1190 HW1 SOL 396 16.960 9.171 29.278 1.00 0.00 H -ATOM 1191 HW2 SOL 396 16.286 8.540 28.006 1.00 0.00 H -ATOM 1192 OW SOL 397 15.418 29.692 28.828 1.00 0.00 O -ATOM 1193 HW1 SOL 397 16.073 30.447 28.800 1.00 0.00 H -ATOM 1194 HW2 SOL 397 15.156 29.643 29.792 1.00 0.00 H -ATOM 1195 OW SOL 398 27.811 30.191 14.603 1.00 0.00 O -ATOM 1196 HW1 SOL 398 27.420 31.110 14.628 1.00 0.00 H -ATOM 1197 HW2 SOL 398 27.684 29.906 13.653 1.00 0.00 H -ATOM 1198 OW SOL 399 11.736 20.569 9.793 1.00 0.00 O -ATOM 1199 HW1 SOL 399 11.736 20.456 8.800 1.00 0.00 H -ATOM 1200 HW2 SOL 399 10.834 20.237 10.069 1.00 0.00 H -ATOM 1201 OW SOL 400 15.485 14.225 11.483 1.00 0.00 O -ATOM 1202 HW1 SOL 400 15.008 14.268 10.605 1.00 0.00 H -ATOM 1203 HW2 SOL 400 16.443 14.371 11.237 1.00 0.00 H -ATOM 1204 OW SOL 401 12.709 30.471 13.919 1.00 0.00 O -ATOM 1205 HW1 SOL 401 11.788 30.503 14.307 1.00 0.00 H -ATOM 1206 HW2 SOL 401 13.084 29.615 14.272 1.00 0.00 H -ATOM 1207 OW SOL 402 31.111 20.994 19.932 1.00 0.00 O -ATOM 1208 HW1 SOL 402 31.576 21.475 20.675 1.00 0.00 H -ATOM 1209 HW2 SOL 402 30.467 20.394 20.407 1.00 0.00 H -ATOM 1210 OW SOL 403 24.062 30.747 23.377 1.00 0.00 O -ATOM 1211 HW1 SOL 403 24.332 31.552 23.905 1.00 0.00 H -ATOM 1212 HW2 SOL 403 24.483 30.900 22.483 1.00 0.00 H -ATOM 1213 OW SOL 404 18.431 11.951 18.140 1.00 0.00 O -ATOM 1214 HW1 SOL 404 17.742 11.640 17.485 1.00 0.00 H -ATOM 1215 HW2 SOL 404 17.895 12.194 18.948 1.00 0.00 H -ATOM 1216 OW SOL 405 16.283 31.157 26.623 1.00 0.00 O -ATOM 1217 HW1 SOL 405 16.910 31.868 26.305 1.00 0.00 H -ATOM 1218 HW2 SOL 405 16.305 30.478 25.890 1.00 0.00 H -ATOM 1219 OW SOL 406 18.803 21.710 12.232 1.00 0.00 O -ATOM 1220 HW1 SOL 406 18.994 22.675 12.415 1.00 0.00 H -ATOM 1221 HW2 SOL 406 17.880 21.581 12.593 1.00 0.00 H -ATOM 1222 OW SOL 407 11.286 24.629 11.978 1.00 0.00 O -ATOM 1223 HW1 SOL 407 10.390 25.020 12.189 1.00 0.00 H -ATOM 1224 HW2 SOL 407 11.927 25.339 12.271 1.00 0.00 H -ATOM 1225 OW SOL 408 25.149 18.535 17.370 1.00 0.00 O -ATOM 1226 HW1 SOL 408 25.862 18.381 16.686 1.00 0.00 H -ATOM 1227 HW2 SOL 408 24.761 19.420 17.110 1.00 0.00 H -ATOM 1228 OW SOL 409 19.328 20.068 13.042 1.00 0.00 O -ATOM 1229 HW1 SOL 409 18.576 19.495 12.717 1.00 0.00 H -ATOM 1230 HW2 SOL 409 19.812 19.477 13.687 1.00 0.00 H -ATOM 1231 OW SOL 410 21.237 25.471 27.521 1.00 0.00 O -ATOM 1232 HW1 SOL 410 21.435 24.646 28.050 1.00 0.00 H -ATOM 1233 HW2 SOL 410 20.625 25.992 28.116 1.00 0.00 H -ATOM 1234 OW SOL 411 12.074 20.398 27.067 1.00 0.00 O -ATOM 1235 HW1 SOL 411 12.603 19.796 27.664 1.00 0.00 H -ATOM 1236 HW2 SOL 411 11.489 20.905 27.700 1.00 0.00 H -ATOM 1237 OW SOL 412 13.812 21.589 25.906 1.00 0.00 O -ATOM 1238 HW1 SOL 412 12.974 21.098 25.669 1.00 0.00 H -ATOM 1239 HW2 SOL 412 14.451 20.860 26.151 1.00 0.00 H -ATOM 1240 OW SOL 413 25.688 30.704 27.010 1.00 0.00 O -ATOM 1241 HW1 SOL 413 25.097 30.864 26.221 1.00 0.00 H -ATOM 1242 HW2 SOL 413 25.225 31.186 27.754 1.00 0.00 H -ATOM 1243 OW SOL 414 13.208 18.032 32.434 1.00 0.00 O -ATOM 1244 HW1 SOL 414 14.078 18.249 31.993 1.00 0.00 H -ATOM 1245 HW2 SOL 414 12.655 18.852 32.282 1.00 0.00 H -ATOM 1246 OW SOL 415 7.108 16.434 22.080 1.00 0.00 O -ATOM 1247 HW1 SOL 415 7.484 17.358 22.011 1.00 0.00 H -ATOM 1248 HW2 SOL 415 7.761 15.875 21.567 1.00 0.00 H -ATOM 1249 OW SOL 416 14.774 20.761 17.474 1.00 0.00 O -ATOM 1250 HW1 SOL 416 14.703 19.946 18.048 1.00 0.00 H -ATOM 1251 HW2 SOL 416 15.365 20.469 16.722 1.00 0.00 H -ATOM 1252 OW SOL 417 25.788 20.505 20.425 1.00 0.00 O -ATOM 1253 HW1 SOL 417 24.806 20.348 20.318 1.00 0.00 H -ATOM 1254 HW2 SOL 417 26.199 19.650 20.108 1.00 0.00 H -ATOM 1255 OW SOL 418 9.167 20.054 18.678 1.00 0.00 O -ATOM 1256 HW1 SOL 418 8.771 19.152 18.849 1.00 0.00 H -ATOM 1257 HW2 SOL 418 10.121 19.854 18.456 1.00 0.00 H -ATOM 1258 OW SOL 419 9.447 26.979 21.497 1.00 0.00 O -ATOM 1259 HW1 SOL 419 9.976 26.656 20.713 1.00 0.00 H -ATOM 1260 HW2 SOL 419 8.504 26.750 21.255 1.00 0.00 H -ATOM 1261 OW SOL 420 18.650 8.256 26.647 1.00 0.00 O -ATOM 1262 HW1 SOL 420 19.333 8.559 27.311 1.00 0.00 H -ATOM 1263 HW2 SOL 420 18.178 9.099 26.392 1.00 0.00 H -ATOM 1264 OW SOL 421 15.908 15.453 17.743 1.00 0.00 O -ATOM 1265 HW1 SOL 421 15.775 14.632 17.188 1.00 0.00 H -ATOM 1266 HW2 SOL 421 15.282 15.322 18.512 1.00 0.00 H -ATOM 1267 OW SOL 422 11.188 23.471 19.185 1.00 0.00 O -ATOM 1268 HW1 SOL 422 11.046 23.246 18.221 1.00 0.00 H -ATOM 1269 HW2 SOL 422 10.980 22.615 19.659 1.00 0.00 H -ATOM 1270 OW SOL 423 29.510 25.440 22.026 1.00 0.00 O -ATOM 1271 HW1 SOL 423 28.759 25.853 22.540 1.00 0.00 H -ATOM 1272 HW2 SOL 423 29.659 24.566 22.487 1.00 0.00 H -ATOM 1273 OW SOL 424 15.725 17.515 14.579 1.00 0.00 O -ATOM 1274 HW1 SOL 424 15.688 18.487 14.813 1.00 0.00 H -ATOM 1275 HW2 SOL 424 16.285 17.119 15.307 1.00 0.00 H -ATOM 1276 OW SOL 425 18.623 29.156 26.325 1.00 0.00 O -ATOM 1277 HW1 SOL 425 18.714 29.852 25.612 1.00 0.00 H -ATOM 1278 HW2 SOL 425 18.470 28.311 25.812 1.00 0.00 H -ATOM 1279 OW SOL 426 21.211 9.001 15.334 1.00 0.00 O -ATOM 1280 HW1 SOL 426 20.960 8.753 14.399 1.00 0.00 H -ATOM 1281 HW2 SOL 426 21.147 9.998 15.339 1.00 0.00 H -ATOM 1282 OW SOL 427 19.904 17.241 23.554 1.00 0.00 O -ATOM 1283 HW1 SOL 427 19.290 16.757 22.932 1.00 0.00 H -ATOM 1284 HW2 SOL 427 19.962 16.637 24.348 1.00 0.00 H -ATOM 1285 OW SOL 428 21.748 11.771 22.640 1.00 0.00 O -ATOM 1286 HW1 SOL 428 21.852 12.618 22.120 1.00 0.00 H -ATOM 1287 HW2 SOL 428 21.788 12.072 23.593 1.00 0.00 H -ATOM 1288 OW SOL 429 24.392 10.424 15.644 1.00 0.00 O -ATOM 1289 HW1 SOL 429 25.310 10.820 15.617 1.00 0.00 H -ATOM 1290 HW2 SOL 429 23.962 10.771 14.811 1.00 0.00 H -ATOM 1291 OW SOL 430 10.495 24.796 24.754 1.00 0.00 O -ATOM 1292 HW1 SOL 430 9.585 25.143 24.981 1.00 0.00 H -ATOM 1293 HW2 SOL 430 11.113 25.458 25.178 1.00 0.00 H -ATOM 1294 OW SOL 431 25.149 15.809 11.203 1.00 0.00 O -ATOM 1295 HW1 SOL 431 24.365 15.298 10.851 1.00 0.00 H -ATOM 1296 HW2 SOL 431 24.776 16.298 11.992 1.00 0.00 H -ATOM 1297 OW SOL 432 22.707 30.090 25.598 1.00 0.00 O -ATOM 1298 HW1 SOL 432 22.038 29.827 26.292 1.00 0.00 H -ATOM 1299 HW2 SOL 432 23.157 30.890 25.995 1.00 0.00 H -TER -ENDMDL diff --git a/examples/latte_interface_energy_forces/coords_2955.pdb b/examples/latte_interface_energy_forces/coords_2955.pdb deleted file mode 100644 index 04974ee5..00000000 --- a/examples/latte_interface_energy_forces/coords_2955.pdb +++ /dev/null @@ -1,2961 +0,0 @@ -TITLE my_single_water.xyz -REMARK THIS IS A SIMULATION BOX -CRYST1 31.230 31.230 31.230 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H HOH 0 15.009 16.295 15.615 1.00 0.00 H -ATOM 2 O HOH 1 15.427 15.434 15.615 1.00 0.00 O -ATOM 3 H HOH 0 16.408 15.115 15.615 1.00 0.00 H -ATOM 4 OW SOL 1 5.690 12.751 11.651 1.00 0.00 O -ATOM 5 HW1 SOL 1 4.760 12.681 11.281 1.00 0.00 H -ATOM 6 HW2 SOL 1 5.800 13.641 12.091 1.00 0.00 H -ATOM 7 OW SOL 2 15.551 15.111 7.030 1.00 0.00 O -ATOM 8 HW1 SOL 2 14.981 14.951 7.840 1.00 0.00 H -ATOM 9 HW2 SOL 2 14.961 15.211 6.230 1.00 0.00 H -ATOM 10 OW SOL 3 17.431 6.180 8.560 1.00 0.00 O -ATOM 11 HW1 SOL 3 17.761 7.120 8.560 1.00 0.00 H -ATOM 12 HW2 SOL 3 17.941 5.640 9.220 1.00 0.00 H -ATOM 13 OW SOL 4 11.351 7.030 7.170 1.00 0.00 O -ATOM 14 HW1 SOL 4 11.921 7.810 6.920 1.00 0.00 H -ATOM 15 HW2 SOL 4 10.751 7.290 7.930 1.00 0.00 H -ATOM 16 OW SOL 5 17.551 6.070 2.310 1.00 0.00 O -ATOM 17 HW1 SOL 5 17.431 5.940 1.320 1.00 0.00 H -ATOM 18 HW2 SOL 5 17.251 5.260 2.800 1.00 0.00 H -ATOM 19 OW SOL 6 7.680 11.441 10.231 1.00 0.00 O -ATOM 20 HW1 SOL 6 6.900 11.611 10.831 1.00 0.00 H -ATOM 21 HW2 SOL 6 8.020 12.311 9.871 1.00 0.00 H -ATOM 22 OW SOL 7 8.500 7.980 18.231 1.00 0.00 O -ATOM 23 HW1 SOL 7 8.460 8.740 18.881 1.00 0.00 H -ATOM 24 HW2 SOL 7 8.720 8.340 17.321 1.00 0.00 H -ATOM 25 OW SOL 8 6.850 10.121 6.650 1.00 0.00 O -ATOM 26 HW1 SOL 8 7.540 9.961 7.350 1.00 0.00 H -ATOM 27 HW2 SOL 8 6.120 10.691 7.030 1.00 0.00 H -ATOM 28 OW SOL 9 6.860 11.611 18.031 1.00 0.00 O -ATOM 29 HW1 SOL 9 7.460 12.401 18.171 1.00 0.00 H -ATOM 30 HW2 SOL 9 6.000 11.921 17.621 1.00 0.00 H -ATOM 31 OW SOL 10 14.601 15.051 13.391 1.00 0.00 O -ATOM 32 HW1 SOL 10 14.841 15.991 13.651 1.00 0.00 H -ATOM 33 HW2 SOL 10 14.441 14.511 14.211 1.00 0.00 H -ATOM 34 OW SOL 11 4.380 3.920 14.991 1.00 0.00 O -ATOM 35 HW1 SOL 11 5.200 3.360 15.081 1.00 0.00 H -ATOM 36 HW2 SOL 11 3.570 3.340 15.031 1.00 0.00 H -ATOM 37 OW SOL 12 16.031 4.470 7.370 1.00 0.00 O -ATOM 38 HW1 SOL 12 15.291 4.930 6.870 1.00 0.00 H -ATOM 39 HW2 SOL 12 16.541 5.150 7.900 1.00 0.00 H -ATOM 40 OW SOL 13 11.271 13.411 16.901 1.00 0.00 O -ATOM 41 HW1 SOL 13 11.741 13.411 17.781 1.00 0.00 H -ATOM 42 HW2 SOL 13 10.791 12.541 16.791 1.00 0.00 H -ATOM 43 OW SOL 14 2.400 10.911 8.860 1.00 0.00 O -ATOM 44 HW1 SOL 14 2.540 10.071 9.380 1.00 0.00 H -ATOM 45 HW2 SOL 14 1.850 11.551 9.410 1.00 0.00 H -ATOM 46 OW SOL 15 6.200 17.861 14.391 1.00 0.00 O -ATOM 47 HW1 SOL 15 5.280 17.691 14.741 1.00 0.00 H -ATOM 48 HW2 SOL 15 6.480 18.781 14.651 1.00 0.00 H -ATOM 49 OW SOL 16 6.060 9.641 1.230 1.00 0.00 O -ATOM 50 HW1 SOL 16 6.130 10.481 0.690 1.00 0.00 H -ATOM 51 HW2 SOL 16 6.520 9.771 2.110 1.00 0.00 H -ATOM 52 OW SOL 17 15.941 1.140 14.801 1.00 0.00 O -ATOM 53 HW1 SOL 17 15.761 1.810 14.081 1.00 0.00 H -ATOM 54 HW2 SOL 17 15.911 1.600 15.691 1.00 0.00 H -ATOM 55 OW SOL 18 1.220 6.430 5.630 1.00 0.00 O -ATOM 56 HW1 SOL 18 0.770 5.550 5.800 1.00 0.00 H -ATOM 57 HW2 SOL 18 1.210 6.970 6.470 1.00 0.00 H -ATOM 58 OW SOL 19 18.421 17.671 3.590 1.00 0.00 O -ATOM 59 HW1 SOL 19 18.961 17.381 4.390 1.00 0.00 H -ATOM 60 HW2 SOL 19 18.721 18.571 3.300 1.00 0.00 H -ATOM 61 OW SOL 20 16.891 9.220 6.120 1.00 0.00 O -ATOM 62 HW1 SOL 20 17.841 8.930 6.200 1.00 0.00 H -ATOM 63 HW2 SOL 20 16.811 9.870 5.370 1.00 0.00 H -ATOM 64 OW SOL 21 16.411 11.081 4.320 1.00 0.00 O -ATOM 65 HW1 SOL 21 17.271 11.101 3.800 1.00 0.00 H -ATOM 66 HW2 SOL 21 16.551 11.551 5.200 1.00 0.00 H -ATOM 67 OW SOL 22 1.130 7.370 15.971 1.00 0.00 O -ATOM 68 HW1 SOL 22 2.010 7.240 16.421 1.00 0.00 H -ATOM 69 HW2 SOL 22 1.000 8.340 15.751 1.00 0.00 H -ATOM 70 OW SOL 23 6.130 13.651 7.260 1.00 0.00 O -ATOM 71 HW1 SOL 23 5.640 12.781 7.350 1.00 0.00 H -ATOM 72 HW2 SOL 23 5.900 14.081 6.390 1.00 0.00 H -ATOM 73 OW SOL 24 12.931 12.281 14.231 1.00 0.00 O -ATOM 74 HW1 SOL 24 13.301 11.551 13.651 1.00 0.00 H -ATOM 75 HW2 SOL 24 13.451 12.331 15.081 1.00 0.00 H -ATOM 76 OW SOL 25 8.090 0.040 5.020 1.00 0.00 O -ATOM 77 HW1 SOL 25 8.490 0.950 4.930 1.00 0.00 H -ATOM 78 HW2 SOL 25 7.090 0.120 5.080 1.00 0.00 H -ATOM 79 OW SOL 26 15.251 9.991 1.900 1.00 0.00 O -ATOM 80 HW1 SOL 26 14.621 9.231 2.030 1.00 0.00 H -ATOM 81 HW2 SOL 26 15.731 10.171 2.760 1.00 0.00 H -ATOM 82 OW SOL 27 11.871 17.921 16.161 1.00 0.00 O -ATOM 83 HW1 SOL 27 12.111 18.521 15.401 1.00 0.00 H -ATOM 84 HW2 SOL 27 11.941 16.971 15.861 1.00 0.00 H -ATOM 85 OW SOL 28 3.170 2.510 18.011 1.00 0.00 O -ATOM 86 HW1 SOL 28 3.880 3.220 18.071 1.00 0.00 H -ATOM 87 HW2 SOL 28 2.290 2.900 18.291 1.00 0.00 H -ATOM 88 OW SOL 29 14.661 14.171 9.531 1.00 0.00 O -ATOM 89 HW1 SOL 29 14.071 14.231 10.331 1.00 0.00 H -ATOM 90 HW2 SOL 29 14.511 13.291 9.071 1.00 0.00 H -ATOM 91 OW SOL 30 16.671 17.141 5.720 1.00 0.00 O -ATOM 92 HW1 SOL 30 16.261 16.911 4.840 1.00 0.00 H -ATOM 93 HW2 SOL 30 16.491 16.401 6.370 1.00 0.00 H -ATOM 94 OW SOL 31 5.980 7.290 2.700 1.00 0.00 O -ATOM 95 HW1 SOL 31 6.220 7.980 2.020 1.00 0.00 H -ATOM 96 HW2 SOL 31 5.200 7.620 3.240 1.00 0.00 H -ATOM 97 OW SOL 32 12.811 3.450 9.441 1.00 0.00 O -ATOM 98 HW1 SOL 32 11.951 2.950 9.311 1.00 0.00 H -ATOM 99 HW2 SOL 32 13.431 2.910 10.001 1.00 0.00 H -ATOM 100 OW SOL 33 15.761 16.621 3.070 1.00 0.00 O -ATOM 101 HW1 SOL 33 16.651 17.081 3.100 1.00 0.00 H -ATOM 102 HW2 SOL 33 15.551 16.381 2.120 1.00 0.00 H -ATOM 103 OW SOL 34 8.070 6.050 14.651 1.00 0.00 O -ATOM 104 HW1 SOL 34 7.600 6.020 15.541 1.00 0.00 H -ATOM 105 HW2 SOL 34 7.560 5.500 13.991 1.00 0.00 H -ATOM 106 OW SOL 35 13.941 4.690 16.741 1.00 0.00 O -ATOM 107 HW1 SOL 35 13.741 5.120 17.621 1.00 0.00 H -ATOM 108 HW2 SOL 35 14.721 4.070 16.831 1.00 0.00 H -ATOM 109 OW SOL 36 9.731 8.900 15.721 1.00 0.00 O -ATOM 110 HW1 SOL 36 10.191 8.060 15.431 1.00 0.00 H -ATOM 111 HW2 SOL 36 9.171 9.240 14.971 1.00 0.00 H -ATOM 112 OW SOL 37 9.911 4.100 12.421 1.00 0.00 O -ATOM 113 HW1 SOL 37 9.141 4.440 12.961 1.00 0.00 H -ATOM 114 HW2 SOL 37 9.571 3.590 11.631 1.00 0.00 H -ATOM 115 OW SOL 38 10.411 7.010 4.290 1.00 0.00 O -ATOM 116 HW1 SOL 38 10.671 6.970 5.250 1.00 0.00 H -ATOM 117 HW2 SOL 38 9.561 6.500 4.150 1.00 0.00 H -ATOM 118 OW SOL 39 8.650 3.480 1.950 1.00 0.00 O -ATOM 119 HW1 SOL 39 9.240 4.110 1.460 1.00 0.00 H -ATOM 120 HW2 SOL 39 8.840 2.540 1.660 1.00 0.00 H -ATOM 121 OW SOL 40 17.191 5.850 18.311 1.00 0.00 O -ATOM 122 HW1 SOL 40 16.931 6.740 17.951 1.00 0.00 H -ATOM 123 HW2 SOL 40 17.171 5.170 17.581 1.00 0.00 H -ATOM 124 OW SOL 41 13.621 11.441 5.450 1.00 0.00 O -ATOM 125 HW1 SOL 41 14.451 11.151 4.970 1.00 0.00 H -ATOM 126 HW2 SOL 41 13.131 12.111 4.890 1.00 0.00 H -ATOM 127 OW SOL 42 5.500 1.960 8.850 1.00 0.00 O -ATOM 128 HW1 SOL 42 5.450 1.910 9.850 1.00 0.00 H -ATOM 129 HW2 SOL 42 5.520 2.920 8.560 1.00 0.00 H -ATOM 130 OW SOL 43 10.081 14.561 4.770 1.00 0.00 O -ATOM 131 HW1 SOL 43 9.621 15.281 4.250 1.00 0.00 H -ATOM 132 HW2 SOL 43 10.041 14.761 5.750 1.00 0.00 H -ATOM 133 OW SOL 44 3.510 18.011 8.530 1.00 0.00 O -ATOM 134 HW1 SOL 44 4.010 17.151 8.590 1.00 0.00 H -ATOM 135 HW2 SOL 44 4.160 18.781 8.500 1.00 0.00 H -ATOM 136 OW SOL 45 17.951 10.661 8.730 1.00 0.00 O -ATOM 137 HW1 SOL 45 17.331 10.511 7.970 1.00 0.00 H -ATOM 138 HW2 SOL 45 17.431 10.771 9.580 1.00 0.00 H -ATOM 139 OW SOL 46 12.271 15.501 15.061 1.00 0.00 O -ATOM 140 HW1 SOL 46 12.331 14.731 15.701 1.00 0.00 H -ATOM 141 HW2 SOL 46 11.751 15.241 14.261 1.00 0.00 H -ATOM 142 OW SOL 47 3.210 9.431 2.420 1.00 0.00 O -ATOM 143 HW1 SOL 47 4.030 9.821 2.000 1.00 0.00 H -ATOM 144 HW2 SOL 47 2.940 8.611 1.930 1.00 0.00 H -ATOM 145 OW SOL 48 14.581 7.350 7.280 1.00 0.00 O -ATOM 146 HW1 SOL 48 14.531 6.700 8.030 1.00 0.00 H -ATOM 147 HW2 SOL 48 15.381 7.940 7.410 1.00 0.00 H -ATOM 148 OW SOL 49 4.610 12.661 17.271 1.00 0.00 O -ATOM 149 HW1 SOL 49 4.110 12.671 16.411 1.00 0.00 H -ATOM 150 HW2 SOL 49 3.980 12.481 18.031 1.00 0.00 H -ATOM 151 OW SOL 50 11.111 17.761 2.370 1.00 0.00 O -ATOM 152 HW1 SOL 50 10.511 17.141 2.870 1.00 0.00 H -ATOM 153 HW2 SOL 50 11.421 17.321 1.520 1.00 0.00 H -ATOM 154 OW SOL 51 2.020 2.850 14.981 1.00 0.00 O -ATOM 155 HW1 SOL 51 1.220 3.450 14.851 1.00 0.00 H -ATOM 156 HW2 SOL 51 1.920 2.360 15.841 1.00 0.00 H -ATOM 157 OW SOL 52 16.321 13.771 0.810 1.00 0.00 O -ATOM 158 HW1 SOL 52 16.001 14.711 0.710 1.00 0.00 H -ATOM 159 HW2 SOL 52 15.561 13.141 0.690 1.00 0.00 H -ATOM 160 OW SOL 53 4.640 17.431 3.230 1.00 0.00 O -ATOM 161 HW1 SOL 53 4.970 17.821 4.090 1.00 0.00 H -ATOM 162 HW2 SOL 53 5.400 17.361 2.580 1.00 0.00 H -ATOM 163 OW SOL 54 14.001 1.070 4.260 1.00 0.00 O -ATOM 164 HW1 SOL 54 13.761 0.700 3.360 1.00 0.00 H -ATOM 165 HW2 SOL 54 14.991 1.230 4.300 1.00 0.00 H -ATOM 166 OW SOL 55 2.490 17.851 12.411 1.00 0.00 O -ATOM 167 HW1 SOL 55 3.060 17.201 12.911 1.00 0.00 H -ATOM 168 HW2 SOL 55 2.330 17.521 11.481 1.00 0.00 H -ATOM 169 OW SOL 56 9.401 16.981 9.040 1.00 0.00 O -ATOM 170 HW1 SOL 56 10.201 16.411 9.250 1.00 0.00 H -ATOM 171 HW2 SOL 56 8.911 16.581 8.270 1.00 0.00 H -ATOM 172 OW SOL 57 3.820 7.000 4.800 1.00 0.00 O -ATOM 173 HW1 SOL 57 4.270 6.100 4.770 1.00 0.00 H -ATOM 174 HW2 SOL 57 2.880 6.890 5.130 1.00 0.00 H -ATOM 175 OW SOL 58 15.471 2.220 17.291 1.00 0.00 O -ATOM 176 HW1 SOL 58 15.421 2.590 18.211 1.00 0.00 H -ATOM 177 HW2 SOL 58 14.751 1.530 17.171 1.00 0.00 H -ATOM 178 OW SOL 59 6.140 1.220 1.170 1.00 0.00 O -ATOM 179 HW1 SOL 59 7.120 1.000 1.240 1.00 0.00 H -ATOM 180 HW2 SOL 59 5.830 1.050 0.240 1.00 0.00 H -ATOM 181 OW SOL 60 7.810 2.640 17.491 1.00 0.00 O -ATOM 182 HW1 SOL 60 8.480 2.030 17.921 1.00 0.00 H -ATOM 183 HW2 SOL 60 7.080 2.830 18.141 1.00 0.00 H -ATOM 184 OW SOL 61 8.880 15.141 11.951 1.00 0.00 O -ATOM 185 HW1 SOL 61 8.650 14.891 11.011 1.00 0.00 H -ATOM 186 HW2 SOL 61 9.490 14.451 12.341 1.00 0.00 H -ATOM 187 OW SOL 62 13.511 5.900 14.331 1.00 0.00 O -ATOM 188 HW1 SOL 62 13.791 5.470 15.181 1.00 0.00 H -ATOM 189 HW2 SOL 62 13.761 6.860 14.341 1.00 0.00 H -ATOM 190 OW SOL 63 8.030 14.021 9.240 1.00 0.00 O -ATOM 191 HW1 SOL 63 8.930 14.161 8.820 1.00 0.00 H -ATOM 192 HW2 SOL 63 7.320 14.041 8.530 1.00 0.00 H -ATOM 193 OW SOL 64 9.220 5.030 8.990 1.00 0.00 O -ATOM 194 HW1 SOL 64 8.970 4.940 8.030 1.00 0.00 H -ATOM 195 HW2 SOL 64 9.700 4.210 9.300 1.00 0.00 H -ATOM 196 OW SOL 65 5.390 0.640 5.120 1.00 0.00 O -ATOM 197 HW1 SOL 65 4.580 0.650 5.700 1.00 0.00 H -ATOM 198 HW2 SOL 65 5.420 1.470 4.570 1.00 0.00 H -ATOM 199 OW SOL 66 14.341 11.881 0.410 1.00 0.00 O -ATOM 200 HW1 SOL 66 14.661 11.121 0.980 1.00 0.00 H -ATOM 201 HW2 SOL 66 13.421 12.151 0.710 1.00 0.00 H -ATOM 202 OW SOL 67 2.970 0.350 1.710 1.00 0.00 O -ATOM 203 HW1 SOL 67 3.460 1.190 1.500 1.00 0.00 H -ATOM 204 HW2 SOL 67 3.590 -0.300 2.160 1.00 0.00 H -ATOM 205 OW SOL 68 9.351 2.360 4.800 1.00 0.00 O -ATOM 206 HW1 SOL 68 8.871 2.770 4.020 1.00 0.00 H -ATOM 207 HW2 SOL 68 10.341 2.340 4.610 1.00 0.00 H -ATOM 208 OW SOL 69 10.761 6.830 14.641 1.00 0.00 O -ATOM 209 HW1 SOL 69 9.961 6.220 14.671 1.00 0.00 H -ATOM 210 HW2 SOL 69 11.571 6.300 14.401 1.00 0.00 H -ATOM 211 OW SOL 70 12.271 15.701 7.930 1.00 0.00 O -ATOM 212 HW1 SOL 70 12.481 16.441 7.280 1.00 0.00 H -ATOM 213 HW2 SOL 70 12.951 15.701 8.660 1.00 0.00 H -ATOM 214 OW SOL 71 4.590 11.521 7.410 1.00 0.00 O -ATOM 215 HW1 SOL 71 3.880 11.251 8.060 1.00 0.00 H -ATOM 216 HW2 SOL 71 4.330 11.241 6.480 1.00 0.00 H -ATOM 217 OW SOL 72 12.711 17.971 5.910 1.00 0.00 O -ATOM 218 HW1 SOL 72 13.151 18.611 5.270 1.00 0.00 H -ATOM 219 HW2 SOL 72 12.211 18.491 6.610 1.00 0.00 H -ATOM 220 OW SOL 73 10.321 5.490 0.160 1.00 0.00 O -ATOM 221 HW1 SOL 73 9.911 6.310 -0.230 1.00 0.00 H -ATOM 222 HW2 SOL 73 10.961 5.750 0.890 1.00 0.00 H -ATOM 223 OW SOL 74 5.610 2.220 11.471 1.00 0.00 O -ATOM 224 HW1 SOL 74 5.990 1.380 11.841 1.00 0.00 H -ATOM 225 HW2 SOL 74 4.730 2.410 11.911 1.00 0.00 H -ATOM 226 OW SOL 75 8.660 4.540 6.420 1.00 0.00 O -ATOM 227 HW1 SOL 75 8.340 5.260 5.800 1.00 0.00 H -ATOM 228 HW2 SOL 75 8.900 3.730 5.890 1.00 0.00 H -ATOM 229 OW SOL 76 10.171 0.390 7.530 1.00 0.00 O -ATOM 230 HW1 SOL 76 9.451 0.440 6.840 1.00 0.00 H -ATOM 231 HW2 SOL 76 9.931 -0.300 8.220 1.00 0.00 H -ATOM 232 OW SOL 77 14.291 11.731 8.670 1.00 0.00 O -ATOM 233 HW1 SOL 77 13.741 10.891 8.600 1.00 0.00 H -ATOM 234 HW2 SOL 77 14.551 12.021 7.750 1.00 0.00 H -ATOM 235 OW SOL 78 14.661 5.900 9.921 1.00 0.00 O -ATOM 236 HW1 SOL 78 14.361 4.950 9.991 1.00 0.00 H -ATOM 237 HW2 SOL 78 15.391 6.060 10.581 1.00 0.00 H -ATOM 238 OW SOL 79 18.571 8.330 3.770 1.00 0.00 O -ATOM 239 HW1 SOL 79 18.991 7.690 4.410 1.00 0.00 H -ATOM 240 HW2 SOL 79 18.191 7.820 2.990 1.00 0.00 H -ATOM 241 OW SOL 80 4.880 13.851 1.740 1.00 0.00 O -ATOM 242 HW1 SOL 80 4.010 13.701 2.210 1.00 0.00 H -ATOM 243 HW2 SOL 80 4.710 14.111 0.790 1.00 0.00 H -ATOM 244 OW SOL 81 16.641 12.801 6.570 1.00 0.00 O -ATOM 245 HW1 SOL 81 17.631 12.881 6.710 1.00 0.00 H -ATOM 246 HW2 SOL 81 16.191 13.641 6.880 1.00 0.00 H -ATOM 247 OW SOL 82 13.901 5.750 0.780 1.00 0.00 O -ATOM 248 HW1 SOL 82 13.361 5.540 1.590 1.00 0.00 H -ATOM 249 HW2 SOL 82 14.811 5.340 0.870 1.00 0.00 H -ATOM 250 OW SOL 83 5.270 2.560 3.280 1.00 0.00 O -ATOM 251 HW1 SOL 83 5.540 1.970 2.530 1.00 0.00 H -ATOM 252 HW2 SOL 83 5.270 3.510 2.970 1.00 0.00 H -ATOM 253 OW SOL 84 17.541 12.231 15.881 1.00 0.00 O -ATOM 254 HW1 SOL 84 18.451 11.841 15.751 1.00 0.00 H -ATOM 255 HW2 SOL 84 17.621 13.191 16.121 1.00 0.00 H -ATOM 256 OW SOL 85 10.641 13.471 13.401 1.00 0.00 O -ATOM 257 HW1 SOL 85 9.841 13.241 13.951 1.00 0.00 H -ATOM 258 HW2 SOL 85 11.471 13.211 13.891 1.00 0.00 H -ATOM 259 OW SOL 86 11.111 11.951 11.001 1.00 0.00 O -ATOM 260 HW1 SOL 86 10.711 12.391 11.811 1.00 0.00 H -ATOM 261 HW2 SOL 86 10.701 12.321 10.171 1.00 0.00 H -ATOM 262 OW SOL 87 16.381 10.991 10.791 1.00 0.00 O -ATOM 263 HW1 SOL 87 16.431 11.801 11.381 1.00 0.00 H -ATOM 264 HW2 SOL 87 15.521 11.011 10.281 1.00 0.00 H -ATOM 265 OW SOL 88 9.150 0.890 14.021 1.00 0.00 O -ATOM 266 HW1 SOL 88 9.400 0.690 13.071 1.00 0.00 H -ATOM 267 HW2 SOL 88 9.870 1.450 14.441 1.00 0.00 H -ATOM 268 OW SOL 89 9.801 11.161 17.191 1.00 0.00 O -ATOM 269 HW1 SOL 89 8.811 11.221 17.291 1.00 0.00 H -ATOM 270 HW2 SOL 89 10.031 10.361 16.631 1.00 0.00 H -ATOM 271 OW SOL 90 7.050 10.501 3.680 1.00 0.00 O -ATOM 272 HW1 SOL 90 6.910 10.571 4.670 1.00 0.00 H -ATOM 273 HW2 SOL 90 7.890 9.991 3.500 1.00 0.00 H -ATOM 274 OW SOL 91 4.100 8.130 12.511 1.00 0.00 O -ATOM 275 HW1 SOL 91 4.960 8.250 13.011 1.00 0.00 H -ATOM 276 HW2 SOL 91 3.680 7.260 12.781 1.00 0.00 H -ATOM 277 OW SOL 92 12.741 3.860 12.621 1.00 0.00 O -ATOM 278 HW1 SOL 92 12.951 4.600 13.261 1.00 0.00 H -ATOM 279 HW2 SOL 92 11.851 4.030 12.191 1.00 0.00 H -ATOM 280 OW SOL 93 0.640 15.641 13.311 1.00 0.00 O -ATOM 281 HW1 SOL 93 0.180 16.461 12.971 1.00 0.00 H -ATOM 282 HW2 SOL 93 1.620 15.831 13.401 1.00 0.00 H -ATOM 283 OW SOL 94 3.670 11.001 5.010 1.00 0.00 O -ATOM 284 HW1 SOL 94 3.600 11.831 4.450 1.00 0.00 H -ATOM 285 HW2 SOL 94 3.710 10.201 4.410 1.00 0.00 H -ATOM 286 OW SOL 95 5.660 5.370 8.650 1.00 0.00 O -ATOM 287 HW1 SOL 95 5.780 6.030 7.910 1.00 0.00 H -ATOM 288 HW2 SOL 95 6.120 5.710 9.480 1.00 0.00 H -ATOM 289 OW SOL 96 12.521 13.481 3.880 1.00 0.00 O -ATOM 290 HW1 SOL 96 13.021 14.251 4.280 1.00 0.00 H -ATOM 291 HW2 SOL 96 11.571 13.501 4.200 1.00 0.00 H -ATOM 292 OW SOL 97 12.721 14.451 11.421 1.00 0.00 O -ATOM 293 HW1 SOL 97 13.191 14.581 12.291 1.00 0.00 H -ATOM 294 HW2 SOL 97 12.061 13.711 11.511 1.00 0.00 H -ATOM 295 OW SOL 98 15.821 6.390 4.720 1.00 0.00 O -ATOM 296 HW1 SOL 98 15.511 7.000 5.450 1.00 0.00 H -ATOM 297 HW2 SOL 98 16.321 6.910 4.030 1.00 0.00 H -ATOM 298 OW SOL 99 3.540 15.101 13.291 1.00 0.00 O -ATOM 299 HW1 SOL 99 3.330 14.661 12.421 1.00 0.00 H -ATOM 300 HW2 SOL 99 4.510 15.361 13.321 1.00 0.00 H -ATOM 301 OW SOL 100 4.020 7.510 15.981 1.00 0.00 O -ATOM 302 HW1 SOL 100 4.700 8.060 15.511 1.00 0.00 H -ATOM 303 HW2 SOL 100 4.420 6.630 16.251 1.00 0.00 H -ATOM 304 OW SOL 101 15.871 7.790 16.701 1.00 0.00 O -ATOM 305 HW1 SOL 101 14.951 8.170 16.651 1.00 0.00 H -ATOM 306 HW2 SOL 101 16.471 8.260 16.051 1.00 0.00 H -ATOM 307 OW SOL 102 10.131 1.050 17.701 1.00 0.00 O -ATOM 308 HW1 SOL 102 10.191 1.900 17.181 1.00 0.00 H -ATOM 309 HW2 SOL 102 10.451 0.290 17.131 1.00 0.00 H -ATOM 310 OW SOL 103 5.040 0.500 17.401 1.00 0.00 O -ATOM 311 HW1 SOL 103 4.620 -0.070 16.701 1.00 0.00 H -ATOM 312 HW2 SOL 103 4.380 1.190 17.721 1.00 0.00 H -ATOM 313 OW SOL 104 5.730 8.700 10.291 1.00 0.00 O -ATOM 314 HW1 SOL 104 6.170 9.590 10.201 1.00 0.00 H -ATOM 315 HW2 SOL 104 5.100 8.700 11.061 1.00 0.00 H -ATOM 316 OW SOL 105 13.601 8.620 10.451 1.00 0.00 O -ATOM 317 HW1 SOL 105 12.851 8.620 9.791 1.00 0.00 H -ATOM 318 HW2 SOL 105 13.971 7.700 10.541 1.00 0.00 H -ATOM 319 OW SOL 106 12.091 5.250 2.750 1.00 0.00 O -ATOM 320 HW1 SOL 106 12.221 4.410 3.290 1.00 0.00 H -ATOM 321 HW2 SOL 106 11.801 5.990 3.350 1.00 0.00 H -ATOM 322 OW SOL 107 0.370 13.101 12.821 1.00 0.00 O -ATOM 323 HW1 SOL 107 0.900 12.611 13.501 1.00 0.00 H -ATOM 324 HW2 SOL 107 0.590 14.081 12.871 1.00 0.00 H -ATOM 325 OW SOL 108 7.320 6.340 10.641 1.00 0.00 O -ATOM 326 HW1 SOL 108 7.910 6.080 9.881 1.00 0.00 H -ATOM 327 HW2 SOL 108 7.040 7.300 10.531 1.00 0.00 H -ATOM 328 OW SOL 109 17.281 9.351 18.541 1.00 0.00 O -ATOM 329 HW1 SOL 109 16.821 9.281 17.651 1.00 0.00 H -ATOM 330 HW2 SOL 109 16.661 9.791 19.201 1.00 0.00 H -ATOM 331 OW SOL 110 3.070 0.630 6.180 1.00 0.00 O -ATOM 332 HW1 SOL 110 2.960 1.570 6.510 1.00 0.00 H -ATOM 333 HW2 SOL 110 3.020 0.000 6.950 1.00 0.00 H -ATOM 334 OW SOL 111 16.221 3.670 3.740 1.00 0.00 O -ATOM 335 HW1 SOL 111 16.241 2.910 4.380 1.00 0.00 H -ATOM 336 HW2 SOL 111 15.741 4.440 4.140 1.00 0.00 H -ATOM 337 OW SOL 112 10.231 7.660 9.661 1.00 0.00 O -ATOM 338 HW1 SOL 112 10.381 7.870 10.621 1.00 0.00 H -ATOM 339 HW2 SOL 112 9.931 6.710 9.571 1.00 0.00 H -ATOM 340 OW SOL 113 9.801 15.731 17.001 1.00 0.00 O -ATOM 341 HW1 SOL 113 9.601 16.171 16.121 1.00 0.00 H -ATOM 342 HW2 SOL 113 10.191 14.821 16.841 1.00 0.00 H -ATOM 343 OW SOL 114 18.591 15.181 16.051 1.00 0.00 O -ATOM 344 HW1 SOL 114 18.731 15.451 15.101 1.00 0.00 H -ATOM 345 HW2 SOL 114 19.421 15.401 16.581 1.00 0.00 H -ATOM 346 OW SOL 115 3.500 8.980 18.041 1.00 0.00 O -ATOM 347 HW1 SOL 115 4.260 9.420 18.521 1.00 0.00 H -ATOM 348 HW2 SOL 115 3.850 8.510 17.221 1.00 0.00 H -ATOM 349 OW SOL 116 15.401 2.740 1.250 1.00 0.00 O -ATOM 350 HW1 SOL 116 14.791 1.990 1.480 1.00 0.00 H -ATOM 351 HW2 SOL 116 15.621 3.260 2.080 1.00 0.00 H -ATOM 352 OW SOL 117 13.031 8.380 0.420 1.00 0.00 O -ATOM 353 HW1 SOL 117 13.371 7.450 0.570 1.00 0.00 H -ATOM 354 HW2 SOL 117 13.211 8.650 -0.530 1.00 0.00 H -ATOM 355 OW SOL 118 10.681 13.331 8.490 1.00 0.00 O -ATOM 356 HW1 SOL 118 10.751 12.491 7.940 1.00 0.00 H -ATOM 357 HW2 SOL 118 11.301 14.021 8.130 1.00 0.00 H -ATOM 358 OW SOL 119 3.190 8.100 9.491 1.00 0.00 O -ATOM 359 HW1 SOL 119 4.120 8.460 9.541 1.00 0.00 H -ATOM 360 HW2 SOL 119 3.130 7.250 10.011 1.00 0.00 H -ATOM 361 OW SOL 120 3.390 5.090 10.061 1.00 0.00 O -ATOM 362 HW1 SOL 120 2.870 4.260 9.891 1.00 0.00 H -ATOM 363 HW2 SOL 120 4.160 5.140 9.421 1.00 0.00 H -ATOM 364 OW SOL 121 11.381 3.800 16.781 1.00 0.00 O -ATOM 365 HW1 SOL 121 10.931 4.430 17.421 1.00 0.00 H -ATOM 366 HW2 SOL 121 12.311 4.110 16.611 1.00 0.00 H -ATOM 367 OW SOL 122 11.601 2.070 14.771 1.00 0.00 O -ATOM 368 HW1 SOL 122 11.601 2.710 15.541 1.00 0.00 H -ATOM 369 HW2 SOL 122 11.881 2.550 13.941 1.00 0.00 H -ATOM 370 OW SOL 123 0.880 18.011 9.270 1.00 0.00 O -ATOM 371 HW1 SOL 123 0.460 17.151 9.000 1.00 0.00 H -ATOM 372 HW2 SOL 123 1.820 18.041 8.930 1.00 0.00 H -ATOM 373 OW SOL 124 5.040 15.681 9.100 1.00 0.00 O -ATOM 374 HW1 SOL 124 5.700 16.421 9.190 1.00 0.00 H -ATOM 375 HW2 SOL 124 5.480 14.891 8.680 1.00 0.00 H -ATOM 376 OW SOL 125 10.021 7.960 12.381 1.00 0.00 O -ATOM 377 HW1 SOL 125 10.431 7.640 13.241 1.00 0.00 H -ATOM 378 HW2 SOL 125 9.061 7.690 12.351 1.00 0.00 H -ATOM 379 OW SOL 126 0.400 5.440 11.141 1.00 0.00 O -ATOM 380 HW1 SOL 126 1.250 5.110 10.731 1.00 0.00 H -ATOM 381 HW2 SOL 126 0.530 5.590 12.121 1.00 0.00 H -ATOM 382 OW SOL 127 1.890 5.200 17.221 1.00 0.00 O -ATOM 383 HW1 SOL 127 2.480 4.800 16.521 1.00 0.00 H -ATOM 384 HW2 SOL 127 1.310 5.910 16.811 1.00 0.00 H -ATOM 385 OW SOL 128 13.691 9.501 16.601 1.00 0.00 O -ATOM 386 HW1 SOL 128 14.081 10.391 16.801 1.00 0.00 H -ATOM 387 HW2 SOL 128 13.791 9.301 15.631 1.00 0.00 H -ATOM 388 OW SOL 129 8.150 5.720 3.250 1.00 0.00 O -ATOM 389 HW1 SOL 129 8.220 4.830 2.790 1.00 0.00 H -ATOM 390 HW2 SOL 129 7.210 6.060 3.170 1.00 0.00 H -ATOM 391 OW SOL 130 16.571 6.040 12.061 1.00 0.00 O -ATOM 392 HW1 SOL 130 16.191 5.350 12.681 1.00 0.00 H -ATOM 393 HW2 SOL 130 17.391 5.680 11.621 1.00 0.00 H -ATOM 394 OW SOL 131 2.520 15.641 17.441 1.00 0.00 O -ATOM 395 HW1 SOL 131 2.220 16.211 18.201 1.00 0.00 H -ATOM 396 HW2 SOL 131 2.450 14.671 17.701 1.00 0.00 H -ATOM 397 OW SOL 132 6.710 4.640 12.691 1.00 0.00 O -ATOM 398 HW1 SOL 132 6.370 3.750 12.391 1.00 0.00 H -ATOM 399 HW2 SOL 132 6.970 5.180 11.891 1.00 0.00 H -ATOM 400 OW SOL 133 9.300 16.781 14.651 1.00 0.00 O -ATOM 401 HW1 SOL 133 9.060 16.601 13.701 1.00 0.00 H -ATOM 402 HW2 SOL 133 9.600 17.721 14.751 1.00 0.00 H -ATOM 403 OW SOL 134 4.730 5.000 1.910 1.00 0.00 O -ATOM 404 HW1 SOL 134 5.340 5.800 1.950 1.00 0.00 H -ATOM 405 HW2 SOL 134 3.780 5.310 1.980 1.00 0.00 H -ATOM 406 OW SOL 135 1.590 11.371 14.661 1.00 0.00 O -ATOM 407 HW1 SOL 135 1.810 10.761 15.421 1.00 0.00 H -ATOM 408 HW2 SOL 135 1.690 10.881 13.801 1.00 0.00 H -ATOM 409 OW SOL 136 13.471 10.591 12.341 1.00 0.00 O -ATOM 410 HW1 SOL 136 13.711 9.961 11.601 1.00 0.00 H -ATOM 411 HW2 SOL 136 12.571 10.991 12.161 1.00 0.00 H -ATOM 412 OW SOL 137 13.021 8.550 3.090 1.00 0.00 O -ATOM 413 HW1 SOL 137 12.161 8.240 3.510 1.00 0.00 H -ATOM 414 HW2 SOL 137 12.981 8.410 2.100 1.00 0.00 H -ATOM 415 OW SOL 138 17.591 17.471 11.541 1.00 0.00 O -ATOM 416 HW1 SOL 138 18.201 17.771 10.811 1.00 0.00 H -ATOM 417 HW2 SOL 138 17.211 16.581 11.321 1.00 0.00 H -ATOM 418 OW SOL 139 12.521 17.311 11.281 1.00 0.00 O -ATOM 419 HW1 SOL 139 13.361 17.361 10.741 1.00 0.00 H -ATOM 420 HW2 SOL 139 12.291 16.351 11.461 1.00 0.00 H -ATOM 421 OW SOL 140 0.830 12.581 10.221 1.00 0.00 O -ATOM 422 HW1 SOL 140 0.780 12.571 11.221 1.00 0.00 H -ATOM 423 HW2 SOL 140 0.000 12.171 9.841 1.00 0.00 H -ATOM 424 OW SOL 141 6.880 16.621 17.161 1.00 0.00 O -ATOM 425 HW1 SOL 141 6.320 17.431 17.251 1.00 0.00 H -ATOM 426 HW2 SOL 141 7.400 16.661 16.301 1.00 0.00 H -ATOM 427 OW SOL 142 9.030 0.860 1.330 1.00 0.00 O -ATOM 428 HW1 SOL 142 9.540 0.870 0.470 1.00 0.00 H -ATOM 429 HW2 SOL 142 9.590 0.440 2.040 1.00 0.00 H -ATOM 430 OW SOL 143 17.261 1.350 5.230 1.00 0.00 O -ATOM 431 HW1 SOL 143 17.991 1.180 4.560 1.00 0.00 H -ATOM 432 HW2 SOL 143 16.951 0.480 5.610 1.00 0.00 H -ATOM 433 OW SOL 144 13.881 15.731 4.770 1.00 0.00 O -ATOM 434 HW1 SOL 144 14.551 15.851 4.030 1.00 0.00 H -ATOM 435 HW2 SOL 144 13.481 16.621 5.000 1.00 0.00 H -ATOM 436 OW SOL 145 12.801 9.270 6.720 1.00 0.00 O -ATOM 437 HW1 SOL 145 13.401 8.460 6.740 1.00 0.00 H -ATOM 438 HW2 SOL 145 13.201 9.960 6.120 1.00 0.00 H -ATOM 439 OW SOL 146 8.300 12.731 14.221 1.00 0.00 O -ATOM 440 HW1 SOL 146 8.250 13.061 15.171 1.00 0.00 H -ATOM 441 HW2 SOL 146 7.440 12.921 13.761 1.00 0.00 H -ATOM 442 OW SOL 147 6.720 16.161 1.540 1.00 0.00 O -ATOM 443 HW1 SOL 147 6.810 16.261 0.550 1.00 0.00 H -ATOM 444 HW2 SOL 147 6.320 15.271 1.750 1.00 0.00 H -ATOM 445 OW SOL 148 16.501 17.201 13.941 1.00 0.00 O -ATOM 446 HW1 SOL 148 17.031 17.301 13.101 1.00 0.00 H -ATOM 447 HW2 SOL 148 16.231 18.101 14.281 1.00 0.00 H -ATOM 448 OW SOL 149 2.630 3.260 7.200 1.00 0.00 O -ATOM 449 HW1 SOL 149 1.840 3.770 6.860 1.00 0.00 H -ATOM 450 HW2 SOL 149 2.540 3.110 8.180 1.00 0.00 H -ATOM 451 OW SOL 150 11.941 16.121 0.310 1.00 0.00 O -ATOM 452 HW1 SOL 150 12.001 15.191 0.680 1.00 0.00 H -ATOM 453 HW2 SOL 150 11.351 16.121 -0.490 1.00 0.00 H -ATOM 454 OW SOL 151 8.220 10.021 13.721 1.00 0.00 O -ATOM 455 HW1 SOL 151 8.620 10.011 12.801 1.00 0.00 H -ATOM 456 HW2 SOL 151 8.320 10.941 14.121 1.00 0.00 H -ATOM 457 OW SOL 152 9.160 9.100 2.910 1.00 0.00 O -ATOM 458 HW1 SOL 152 9.790 9.480 2.230 1.00 0.00 H -ATOM 459 HW2 SOL 152 9.560 8.270 3.300 1.00 0.00 H -ATOM 460 OW SOL 153 15.041 16.071 0.440 1.00 0.00 O -ATOM 461 HW1 SOL 153 14.121 16.441 0.510 1.00 0.00 H -ATOM 462 HW2 SOL 153 15.421 16.271 -0.460 1.00 0.00 H -ATOM 463 OW SOL 154 3.720 12.881 14.901 1.00 0.00 O -ATOM 464 HW1 SOL 154 3.590 13.811 14.561 1.00 0.00 H -ATOM 465 HW2 SOL 154 2.880 12.361 14.771 1.00 0.00 H -ATOM 466 OW SOL 155 16.141 12.921 12.891 1.00 0.00 O -ATOM 467 HW1 SOL 155 16.741 12.951 13.691 1.00 0.00 H -ATOM 468 HW2 SOL 155 15.391 13.561 13.021 1.00 0.00 H -ATOM 469 OW SOL 156 10.391 10.981 6.960 1.00 0.00 O -ATOM 470 HW1 SOL 156 9.691 10.511 7.500 1.00 0.00 H -ATOM 471 HW2 SOL 156 10.981 10.301 6.530 1.00 0.00 H -ATOM 472 OW SOL 157 10.141 2.360 9.711 1.00 0.00 O -ATOM 473 HW1 SOL 157 10.061 2.000 8.781 1.00 0.00 H -ATOM 474 HW2 SOL 157 10.121 1.600 10.361 1.00 0.00 H -ATOM 475 OW SOL 158 5.900 14.871 4.910 1.00 0.00 O -ATOM 476 HW1 SOL 158 6.320 14.291 4.210 1.00 0.00 H -ATOM 477 HW2 SOL 158 5.460 15.661 4.470 1.00 0.00 H -ATOM 478 OW SOL 159 17.091 3.850 13.811 1.00 0.00 O -ATOM 479 HW1 SOL 159 17.821 4.540 13.851 1.00 0.00 H -ATOM 480 HW2 SOL 159 17.371 3.100 13.221 1.00 0.00 H -ATOM 481 OW SOL 160 2.550 13.481 2.900 1.00 0.00 O -ATOM 482 HW1 SOL 160 1.590 13.491 2.630 1.00 0.00 H -ATOM 483 HW2 SOL 160 2.670 14.011 3.740 1.00 0.00 H -ATOM 484 OW SOL 161 6.720 2.030 14.891 1.00 0.00 O -ATOM 485 HW1 SOL 161 7.620 1.870 14.491 1.00 0.00 H -ATOM 486 HW2 SOL 161 6.800 2.080 15.881 1.00 0.00 H -ATOM 487 OW SOL 162 14.401 8.560 13.981 1.00 0.00 O -ATOM 488 HW1 SOL 162 13.831 9.080 13.351 1.00 0.00 H -ATOM 489 HW2 SOL 162 15.361 8.680 13.741 1.00 0.00 H -ATOM 490 OW SOL 163 11.831 13.351 1.190 1.00 0.00 O -ATOM 491 HW1 SOL 163 10.841 13.241 1.210 1.00 0.00 H -ATOM 492 HW2 SOL 163 12.171 13.501 2.120 1.00 0.00 H -ATOM 493 OW SOL 164 6.130 8.420 14.311 1.00 0.00 O -ATOM 494 HW1 SOL 164 6.690 9.230 14.141 1.00 0.00 H -ATOM 495 HW2 SOL 164 6.720 7.620 14.341 1.00 0.00 H -ATOM 496 OW SOL 165 14.931 17.671 9.591 1.00 0.00 O -ATOM 497 HW1 SOL 165 15.261 18.311 8.901 1.00 0.00 H -ATOM 498 HW2 SOL 165 15.591 17.611 10.341 1.00 0.00 H -ATOM 499 OW SOL 166 7.160 5.650 17.081 1.00 0.00 O -ATOM 500 HW1 SOL 166 7.350 6.300 17.821 1.00 0.00 H -ATOM 501 HW2 SOL 166 7.760 4.850 17.171 1.00 0.00 H -ATOM 502 OW SOL 167 14.501 12.201 16.331 1.00 0.00 O -ATOM 503 HW1 SOL 167 14.411 12.101 17.321 1.00 0.00 H -ATOM 504 HW2 SOL 167 15.461 12.131 16.071 1.00 0.00 H -ATOM 505 OW SOL 168 3.900 17.411 15.601 1.00 0.00 O -ATOM 506 HW1 SOL 168 2.990 17.821 15.581 1.00 0.00 H -ATOM 507 HW2 SOL 168 3.830 16.471 15.921 1.00 0.00 H -ATOM 508 OW SOL 169 16.741 8.830 12.541 1.00 0.00 O -ATOM 509 HW1 SOL 169 16.471 7.940 12.171 1.00 0.00 H -ATOM 510 HW2 SOL 169 16.751 9.510 11.811 1.00 0.00 H -ATOM 511 OW SOL 170 12.251 3.250 4.490 1.00 0.00 O -ATOM 512 HW1 SOL 170 12.901 2.510 4.380 1.00 0.00 H -ATOM 513 HW2 SOL 170 12.451 3.750 5.330 1.00 0.00 H -ATOM 514 OW SOL 171 5.940 7.450 6.520 1.00 0.00 O -ATOM 515 HW1 SOL 171 6.440 8.300 6.330 1.00 0.00 H -ATOM 516 HW2 SOL 171 5.060 7.470 6.040 1.00 0.00 H -ATOM 517 OW SOL 172 17.771 3.420 16.421 1.00 0.00 O -ATOM 518 HW1 SOL 172 17.601 3.730 15.481 1.00 0.00 H -ATOM 519 HW2 SOL 172 16.931 3.050 16.801 1.00 0.00 H -ATOM 520 OW SOL 173 17.301 9.341 15.171 1.00 0.00 O -ATOM 521 HW1 SOL 173 17.681 10.251 15.321 1.00 0.00 H -ATOM 522 HW2 SOL 173 17.221 9.171 14.181 1.00 0.00 H -ATOM 523 OW SOL 174 8.590 13.741 0.160 1.00 0.00 O -ATOM 524 HW1 SOL 174 8.130 13.891 1.040 1.00 0.00 H -ATOM 525 HW2 SOL 174 9.030 14.591 -0.140 1.00 0.00 H -ATOM 526 OW SOL 175 6.610 17.901 9.531 1.00 0.00 O -ATOM 527 HW1 SOL 175 6.150 18.781 9.401 1.00 0.00 H -ATOM 528 HW2 SOL 175 7.600 18.021 9.461 1.00 0.00 H -ATOM 529 OW SOL 176 14.081 18.511 17.201 1.00 0.00 O -ATOM 530 HW1 SOL 176 13.121 18.401 16.931 1.00 0.00 H -ATOM 531 HW2 SOL 176 14.641 17.841 16.721 1.00 0.00 H -ATOM 532 OW SOL 177 8.590 9.561 8.610 1.00 0.00 O -ATOM 533 HW1 SOL 177 9.130 8.871 9.090 1.00 0.00 H -ATOM 534 HW2 SOL 177 8.270 10.251 9.270 1.00 0.00 H -ATOM 535 OW SOL 178 10.831 9.841 0.870 1.00 0.00 O -ATOM 536 HW1 SOL 178 10.601 10.371 0.050 1.00 0.00 H -ATOM 537 HW2 SOL 178 11.641 9.281 0.680 1.00 0.00 H -ATOM 538 OW SOL 179 18.611 15.691 8.510 1.00 0.00 O -ATOM 539 HW1 SOL 179 17.901 15.571 7.810 1.00 0.00 H -ATOM 540 HW2 SOL 179 18.621 14.901 9.110 1.00 0.00 H -ATOM 541 OW SOL 180 0.790 12.401 6.530 1.00 0.00 O -ATOM 542 HW1 SOL 180 0.780 11.931 7.410 1.00 0.00 H -ATOM 543 HW2 SOL 180 1.610 12.121 6.020 1.00 0.00 H -ATOM 544 OW SOL 181 6.720 13.911 16.241 1.00 0.00 O -ATOM 545 HW1 SOL 181 5.940 13.411 16.621 1.00 0.00 H -ATOM 546 HW2 SOL 181 6.690 14.861 16.551 1.00 0.00 H -ATOM 547 OW SOL 182 4.280 4.240 5.200 1.00 0.00 O -ATOM 548 HW1 SOL 182 4.580 3.520 4.580 1.00 0.00 H -ATOM 549 HW2 SOL 182 3.890 3.840 6.030 1.00 0.00 H -ATOM 550 OW SOL 183 17.051 14.871 11.041 1.00 0.00 O -ATOM 551 HW1 SOL 183 16.121 14.621 10.771 1.00 0.00 H -ATOM 552 HW2 SOL 183 17.311 14.371 11.861 1.00 0.00 H -ATOM 553 OW SOL 184 3.170 5.470 12.801 1.00 0.00 O -ATOM 554 HW1 SOL 184 3.550 4.880 13.521 1.00 0.00 H -ATOM 555 HW2 SOL 184 3.570 5.210 11.921 1.00 0.00 H -ATOM 556 OW SOL 185 8.120 15.861 6.870 1.00 0.00 O -ATOM 557 HW1 SOL 185 8.440 15.961 5.930 1.00 0.00 H -ATOM 558 HW2 SOL 185 7.330 15.241 6.890 1.00 0.00 H -ATOM 559 OW SOL 186 14.241 2.140 11.121 1.00 0.00 O -ATOM 560 HW1 SOL 186 14.761 1.490 11.671 1.00 0.00 H -ATOM 561 HW2 SOL 186 13.751 2.770 11.731 1.00 0.00 H -ATOM 562 OW SOL 187 10.011 0.340 11.541 1.00 0.00 O -ATOM 563 HW1 SOL 187 9.381 -0.380 11.231 1.00 0.00 H -ATOM 564 HW2 SOL 187 10.941 -0.020 11.541 1.00 0.00 H -ATOM 565 OW SOL 188 7.700 13.301 3.010 1.00 0.00 O -ATOM 566 HW1 SOL 188 7.240 12.431 3.180 1.00 0.00 H -ATOM 567 HW2 SOL 188 8.610 13.271 3.420 1.00 0.00 H -ATOM 568 OW SOL 189 6.180 15.671 12.841 1.00 0.00 O -ATOM 569 HW1 SOL 189 6.130 16.491 13.411 1.00 0.00 H -ATOM 570 HW2 SOL 189 7.070 15.641 12.391 1.00 0.00 H -ATOM 571 OW SOL 190 13.521 0.520 1.680 1.00 0.00 O -ATOM 572 HW1 SOL 190 13.871 0.110 0.840 1.00 0.00 H -ATOM 573 HW2 SOL 190 12.621 0.140 1.880 1.00 0.00 H -ATOM 574 OW SOL 191 13.001 4.530 6.910 1.00 0.00 O -ATOM 575 HW1 SOL 191 12.411 5.330 6.950 1.00 0.00 H -ATOM 576 HW2 SOL 191 13.151 4.180 7.840 1.00 0.00 H -ATOM 577 OW SOL 192 15.931 2.210 8.820 1.00 0.00 O -ATOM 578 HW1 SOL 192 15.091 2.200 9.360 1.00 0.00 H -ATOM 579 HW2 SOL 192 15.951 3.040 8.260 1.00 0.00 H -ATOM 580 OW SOL 193 0.390 10.771 3.000 1.00 0.00 O -ATOM 581 HW1 SOL 193 1.380 10.661 2.910 1.00 0.00 H -ATOM 582 HW2 SOL 193 -0.010 9.911 3.320 1.00 0.00 H -ATOM 583 OW SOL 194 8.750 16.461 3.370 1.00 0.00 O -ATOM 584 HW1 SOL 194 7.980 16.111 2.830 1.00 0.00 H -ATOM 585 HW2 SOL 194 8.430 17.171 3.990 1.00 0.00 H -ATOM 586 OW SOL 195 5.690 12.751 30.271 1.00 0.00 O -ATOM 587 HW1 SOL 195 4.760 12.681 29.901 1.00 0.00 H -ATOM 588 HW2 SOL 195 5.800 13.641 30.711 1.00 0.00 H -ATOM 589 OW SOL 196 15.551 15.111 25.651 1.00 0.00 O -ATOM 590 HW1 SOL 196 14.981 14.951 26.461 1.00 0.00 H -ATOM 591 HW2 SOL 196 14.961 15.211 24.851 1.00 0.00 H -ATOM 592 OW SOL 197 17.431 6.180 27.181 1.00 0.00 O -ATOM 593 HW1 SOL 197 17.761 7.120 27.181 1.00 0.00 H -ATOM 594 HW2 SOL 197 17.941 5.640 27.841 1.00 0.00 H -ATOM 595 OW SOL 198 11.351 7.030 25.791 1.00 0.00 O -ATOM 596 HW1 SOL 198 11.921 7.810 25.541 1.00 0.00 H -ATOM 597 HW2 SOL 198 10.751 7.290 26.551 1.00 0.00 H -ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O -ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H -ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H -ATOM 601 OW SOL 200 7.680 11.441 28.851 1.00 0.00 O -ATOM 602 HW1 SOL 200 6.900 11.611 29.451 1.00 0.00 H -ATOM 603 HW2 SOL 200 8.020 12.311 28.491 1.00 0.00 H -ATOM 604 OW SOL 201 6.850 10.121 25.271 1.00 0.00 O -ATOM 605 HW1 SOL 201 7.540 9.961 25.971 1.00 0.00 H -ATOM 606 HW2 SOL 201 6.120 10.691 25.651 1.00 0.00 H -ATOM 607 OW SOL 202 2.400 10.911 27.481 1.00 0.00 O -ATOM 608 HW1 SOL 202 2.540 10.071 28.001 1.00 0.00 H -ATOM 609 HW2 SOL 202 1.850 11.551 28.031 1.00 0.00 H -ATOM 610 OW SOL 203 6.060 9.641 19.851 1.00 0.00 O -ATOM 611 HW1 SOL 203 6.130 10.481 19.311 1.00 0.00 H -ATOM 612 HW2 SOL 203 6.520 9.771 20.731 1.00 0.00 H -ATOM 613 OW SOL 204 1.220 6.430 24.251 1.00 0.00 O -ATOM 614 HW1 SOL 204 0.770 5.550 24.421 1.00 0.00 H -ATOM 615 HW2 SOL 204 1.210 6.970 25.091 1.00 0.00 H -ATOM 616 OW SOL 205 18.421 17.671 22.211 1.00 0.00 O -ATOM 617 HW1 SOL 205 18.961 17.381 23.011 1.00 0.00 H -ATOM 618 HW2 SOL 205 18.721 18.571 21.921 1.00 0.00 H -ATOM 619 OW SOL 206 16.891 9.220 24.741 1.00 0.00 O -ATOM 620 HW1 SOL 206 17.841 8.930 24.821 1.00 0.00 H -ATOM 621 HW2 SOL 206 16.811 9.870 23.991 1.00 0.00 H -ATOM 622 OW SOL 207 16.411 11.081 22.941 1.00 0.00 O -ATOM 623 HW1 SOL 207 17.271 11.101 22.421 1.00 0.00 H -ATOM 624 HW2 SOL 207 16.551 11.551 23.821 1.00 0.00 H -ATOM 625 OW SOL 208 6.130 13.651 25.881 1.00 0.00 O -ATOM 626 HW1 SOL 208 5.640 12.781 25.971 1.00 0.00 H -ATOM 627 HW2 SOL 208 5.900 14.081 25.011 1.00 0.00 H -ATOM 628 OW SOL 209 8.090 0.040 23.641 1.00 0.00 O -ATOM 629 HW1 SOL 209 8.490 0.950 23.551 1.00 0.00 H -ATOM 630 HW2 SOL 209 7.090 0.120 23.701 1.00 0.00 H -ATOM 631 OW SOL 210 1.970 9.761 0.031 1.00 0.00 O -ATOM 632 HW1 SOL 210 2.860 9.311 -0.109 1.00 0.00 H -ATOM 633 HW2 SOL 210 1.240 9.111 -0.159 1.00 0.00 H -ATOM 634 OW SOL 211 15.251 9.991 20.521 1.00 0.00 O -ATOM 635 HW1 SOL 211 14.621 9.231 20.651 1.00 0.00 H -ATOM 636 HW2 SOL 211 15.731 10.171 21.381 1.00 0.00 H -ATOM 637 OW SOL 212 14.661 14.171 28.151 1.00 0.00 O -ATOM 638 HW1 SOL 212 14.071 14.231 28.951 1.00 0.00 H -ATOM 639 HW2 SOL 212 14.511 13.291 27.691 1.00 0.00 H -ATOM 640 OW SOL 213 16.671 17.141 24.341 1.00 0.00 O -ATOM 641 HW1 SOL 213 16.261 16.911 23.461 1.00 0.00 H -ATOM 642 HW2 SOL 213 16.491 16.401 24.991 1.00 0.00 H -ATOM 643 OW SOL 214 5.980 7.290 21.321 1.00 0.00 O -ATOM 644 HW1 SOL 214 6.220 7.980 20.641 1.00 0.00 H -ATOM 645 HW2 SOL 214 5.200 7.620 21.861 1.00 0.00 H -ATOM 646 OW SOL 215 12.811 3.450 28.061 1.00 0.00 O -ATOM 647 HW1 SOL 215 11.951 2.950 27.931 1.00 0.00 H -ATOM 648 HW2 SOL 215 13.431 2.910 28.621 1.00 0.00 H -ATOM 649 OW SOL 216 15.761 16.621 21.691 1.00 0.00 O -ATOM 650 HW1 SOL 216 16.651 17.081 21.721 1.00 0.00 H -ATOM 651 HW2 SOL 216 15.551 16.381 20.741 1.00 0.00 H -ATOM 652 OW SOL 217 10.411 7.010 22.911 1.00 0.00 O -ATOM 653 HW1 SOL 217 10.671 6.970 23.871 1.00 0.00 H -ATOM 654 HW2 SOL 217 9.561 6.500 22.771 1.00 0.00 H -ATOM 655 OW SOL 218 8.650 3.480 20.571 1.00 0.00 O -ATOM 656 HW1 SOL 218 9.240 4.110 20.081 1.00 0.00 H -ATOM 657 HW2 SOL 218 8.840 2.540 20.281 1.00 0.00 H -ATOM 658 OW SOL 219 13.621 11.441 24.071 1.00 0.00 O -ATOM 659 HW1 SOL 219 14.451 11.151 23.591 1.00 0.00 H -ATOM 660 HW2 SOL 219 13.131 12.111 23.511 1.00 0.00 H -ATOM 661 OW SOL 220 5.500 1.960 27.471 1.00 0.00 O -ATOM 662 HW1 SOL 220 5.450 1.910 28.471 1.00 0.00 H -ATOM 663 HW2 SOL 220 5.520 2.920 27.181 1.00 0.00 H -ATOM 664 OW SOL 221 10.081 14.561 23.391 1.00 0.00 O -ATOM 665 HW1 SOL 221 9.621 15.281 22.871 1.00 0.00 H -ATOM 666 HW2 SOL 221 10.041 14.761 24.371 1.00 0.00 H -ATOM 667 OW SOL 222 3.510 18.011 27.151 1.00 0.00 O -ATOM 668 HW1 SOL 222 4.010 17.151 27.211 1.00 0.00 H -ATOM 669 HW2 SOL 222 4.160 18.781 27.121 1.00 0.00 H -ATOM 670 OW SOL 223 17.951 10.661 27.351 1.00 0.00 O -ATOM 671 HW1 SOL 223 17.331 10.511 26.591 1.00 0.00 H -ATOM 672 HW2 SOL 223 17.431 10.771 28.201 1.00 0.00 H -ATOM 673 OW SOL 224 3.210 9.431 21.041 1.00 0.00 O -ATOM 674 HW1 SOL 224 4.030 9.821 20.621 1.00 0.00 H -ATOM 675 HW2 SOL 224 2.940 8.611 20.551 1.00 0.00 H -ATOM 676 OW SOL 225 14.581 7.350 25.901 1.00 0.00 O -ATOM 677 HW1 SOL 225 14.531 6.700 26.651 1.00 0.00 H -ATOM 678 HW2 SOL 225 15.381 7.940 26.031 1.00 0.00 H -ATOM 679 OW SOL 226 11.111 17.761 20.991 1.00 0.00 O -ATOM 680 HW1 SOL 226 10.511 17.141 21.491 1.00 0.00 H -ATOM 681 HW2 SOL 226 11.421 17.321 20.141 1.00 0.00 H -ATOM 682 OW SOL 227 16.321 13.771 19.431 1.00 0.00 O -ATOM 683 HW1 SOL 227 16.001 14.711 19.331 1.00 0.00 H -ATOM 684 HW2 SOL 227 15.561 13.141 19.311 1.00 0.00 H -ATOM 685 OW SOL 228 4.640 17.431 21.851 1.00 0.00 O -ATOM 686 HW1 SOL 228 4.970 17.821 22.711 1.00 0.00 H -ATOM 687 HW2 SOL 228 5.400 17.361 21.201 1.00 0.00 H -ATOM 688 OW SOL 229 14.001 1.070 22.881 1.00 0.00 O -ATOM 689 HW1 SOL 229 13.761 0.700 21.981 1.00 0.00 H -ATOM 690 HW2 SOL 229 14.991 1.230 22.921 1.00 0.00 H -ATOM 691 OW SOL 230 2.490 17.851 31.031 1.00 0.00 O -ATOM 692 HW1 SOL 230 3.060 17.201 31.531 1.00 0.00 H -ATOM 693 HW2 SOL 230 2.330 17.521 30.101 1.00 0.00 H -ATOM 694 OW SOL 231 9.401 16.981 27.661 1.00 0.00 O -ATOM 695 HW1 SOL 231 10.201 16.411 27.871 1.00 0.00 H -ATOM 696 HW2 SOL 231 8.911 16.581 26.891 1.00 0.00 H -ATOM 697 OW SOL 232 3.820 7.000 23.421 1.00 0.00 O -ATOM 698 HW1 SOL 232 4.270 6.100 23.391 1.00 0.00 H -ATOM 699 HW2 SOL 232 2.880 6.890 23.751 1.00 0.00 H -ATOM 700 OW SOL 233 6.140 1.220 19.791 1.00 0.00 O -ATOM 701 HW1 SOL 233 7.120 1.000 19.861 1.00 0.00 H -ATOM 702 HW2 SOL 233 5.830 1.050 18.861 1.00 0.00 H -ATOM 703 OW SOL 234 8.030 14.021 27.861 1.00 0.00 O -ATOM 704 HW1 SOL 234 8.930 14.161 27.441 1.00 0.00 H -ATOM 705 HW2 SOL 234 7.320 14.041 27.151 1.00 0.00 H -ATOM 706 OW SOL 235 9.220 5.030 27.611 1.00 0.00 O -ATOM 707 HW1 SOL 235 8.970 4.940 26.651 1.00 0.00 H -ATOM 708 HW2 SOL 235 9.700 4.210 27.921 1.00 0.00 H -ATOM 709 OW SOL 236 5.390 0.640 23.741 1.00 0.00 O -ATOM 710 HW1 SOL 236 4.580 0.650 24.321 1.00 0.00 H -ATOM 711 HW2 SOL 236 5.420 1.470 23.191 1.00 0.00 H -ATOM 712 OW SOL 237 14.341 11.881 19.031 1.00 0.00 O -ATOM 713 HW1 SOL 237 14.661 11.121 19.601 1.00 0.00 H -ATOM 714 HW2 SOL 237 13.421 12.151 19.331 1.00 0.00 H -ATOM 715 OW SOL 238 2.970 0.350 20.331 1.00 0.00 O -ATOM 716 HW1 SOL 238 3.460 1.190 20.121 1.00 0.00 H -ATOM 717 HW2 SOL 238 3.590 -0.300 20.781 1.00 0.00 H -ATOM 718 OW SOL 239 9.351 2.360 23.421 1.00 0.00 O -ATOM 719 HW1 SOL 239 8.871 2.770 22.641 1.00 0.00 H -ATOM 720 HW2 SOL 239 10.341 2.340 23.231 1.00 0.00 H -ATOM 721 OW SOL 240 12.271 15.701 26.551 1.00 0.00 O -ATOM 722 HW1 SOL 240 12.481 16.441 25.901 1.00 0.00 H -ATOM 723 HW2 SOL 240 12.951 15.701 27.281 1.00 0.00 H -ATOM 724 OW SOL 241 4.590 11.521 26.031 1.00 0.00 O -ATOM 725 HW1 SOL 241 3.880 11.251 26.681 1.00 0.00 H -ATOM 726 HW2 SOL 241 4.330 11.241 25.101 1.00 0.00 H -ATOM 727 OW SOL 242 12.711 17.971 24.531 1.00 0.00 O -ATOM 728 HW1 SOL 242 13.151 18.611 23.891 1.00 0.00 H -ATOM 729 HW2 SOL 242 12.211 18.491 25.231 1.00 0.00 H -ATOM 730 OW SOL 243 10.321 5.490 18.781 1.00 0.00 O -ATOM 731 HW1 SOL 243 9.911 6.310 18.391 1.00 0.00 H -ATOM 732 HW2 SOL 243 10.961 5.750 19.511 1.00 0.00 H -ATOM 733 OW SOL 244 8.660 4.540 25.041 1.00 0.00 O -ATOM 734 HW1 SOL 244 8.340 5.260 24.421 1.00 0.00 H -ATOM 735 HW2 SOL 244 8.900 3.730 24.511 1.00 0.00 H -ATOM 736 OW SOL 245 10.171 0.390 26.151 1.00 0.00 O -ATOM 737 HW1 SOL 245 9.451 0.440 25.461 1.00 0.00 H -ATOM 738 HW2 SOL 245 9.931 -0.300 26.841 1.00 0.00 H -ATOM 739 OW SOL 246 14.291 11.731 27.291 1.00 0.00 O -ATOM 740 HW1 SOL 246 13.741 10.891 27.221 1.00 0.00 H -ATOM 741 HW2 SOL 246 14.551 12.021 26.371 1.00 0.00 H -ATOM 742 OW SOL 247 14.661 5.900 28.541 1.00 0.00 O -ATOM 743 HW1 SOL 247 14.361 4.950 28.611 1.00 0.00 H -ATOM 744 HW2 SOL 247 15.391 6.060 29.201 1.00 0.00 H -ATOM 745 OW SOL 248 18.571 8.330 22.391 1.00 0.00 O -ATOM 746 HW1 SOL 248 18.991 7.690 23.031 1.00 0.00 H -ATOM 747 HW2 SOL 248 18.191 7.820 21.611 1.00 0.00 H -ATOM 748 OW SOL 249 4.880 13.851 20.361 1.00 0.00 O -ATOM 749 HW1 SOL 249 4.010 13.701 20.831 1.00 0.00 H -ATOM 750 HW2 SOL 249 4.710 14.111 19.411 1.00 0.00 H -ATOM 751 OW SOL 250 16.641 12.801 25.191 1.00 0.00 O -ATOM 752 HW1 SOL 250 17.631 12.881 25.331 1.00 0.00 H -ATOM 753 HW2 SOL 250 16.191 13.641 25.501 1.00 0.00 H -ATOM 754 OW SOL 251 13.901 5.750 19.401 1.00 0.00 O -ATOM 755 HW1 SOL 251 13.361 5.540 20.211 1.00 0.00 H -ATOM 756 HW2 SOL 251 14.811 5.340 19.491 1.00 0.00 H -ATOM 757 OW SOL 252 5.270 2.560 21.901 1.00 0.00 O -ATOM 758 HW1 SOL 252 5.540 1.970 21.151 1.00 0.00 H -ATOM 759 HW2 SOL 252 5.270 3.510 21.591 1.00 0.00 H -ATOM 760 OW SOL 253 11.111 11.951 29.621 1.00 0.00 O -ATOM 761 HW1 SOL 253 10.711 12.391 30.431 1.00 0.00 H -ATOM 762 HW2 SOL 253 10.701 12.321 28.791 1.00 0.00 H -ATOM 763 OW SOL 254 16.381 10.991 29.411 1.00 0.00 O -ATOM 764 HW1 SOL 254 16.431 11.801 30.001 1.00 0.00 H -ATOM 765 HW2 SOL 254 15.521 11.011 28.901 1.00 0.00 H -ATOM 766 OW SOL 255 7.050 10.501 22.301 1.00 0.00 O -ATOM 767 HW1 SOL 255 6.910 10.571 23.291 1.00 0.00 H -ATOM 768 HW2 SOL 255 7.890 9.991 22.121 1.00 0.00 H -ATOM 769 OW SOL 256 4.100 8.130 31.131 1.00 0.00 O -ATOM 770 HW1 SOL 256 4.960 8.250 31.631 1.00 0.00 H -ATOM 771 HW2 SOL 256 3.680 7.260 31.401 1.00 0.00 H -ATOM 772 OW SOL 257 3.670 11.001 23.631 1.00 0.00 O -ATOM 773 HW1 SOL 257 3.600 11.831 23.071 1.00 0.00 H -ATOM 774 HW2 SOL 257 3.710 10.201 23.031 1.00 0.00 H -ATOM 775 OW SOL 258 5.660 5.370 27.271 1.00 0.00 O -ATOM 776 HW1 SOL 258 5.780 6.030 26.531 1.00 0.00 H -ATOM 777 HW2 SOL 258 6.120 5.710 28.101 1.00 0.00 H -ATOM 778 OW SOL 259 12.521 13.481 22.501 1.00 0.00 O -ATOM 779 HW1 SOL 259 13.021 14.251 22.901 1.00 0.00 H -ATOM 780 HW2 SOL 259 11.571 13.501 22.821 1.00 0.00 H -ATOM 781 OW SOL 260 12.721 14.451 30.041 1.00 0.00 O -ATOM 782 HW1 SOL 260 13.191 14.581 30.911 1.00 0.00 H -ATOM 783 HW2 SOL 260 12.061 13.711 30.131 1.00 0.00 H -ATOM 784 OW SOL 261 15.821 6.390 23.341 1.00 0.00 O -ATOM 785 HW1 SOL 261 15.511 7.000 24.071 1.00 0.00 H -ATOM 786 HW2 SOL 261 16.321 6.910 22.651 1.00 0.00 H -ATOM 787 OW SOL 262 5.730 8.700 28.911 1.00 0.00 O -ATOM 788 HW1 SOL 262 6.170 9.590 28.821 1.00 0.00 H -ATOM 789 HW2 SOL 262 5.100 8.700 29.681 1.00 0.00 H -ATOM 790 OW SOL 263 13.601 8.620 29.071 1.00 0.00 O -ATOM 791 HW1 SOL 263 12.851 8.620 28.411 1.00 0.00 H -ATOM 792 HW2 SOL 263 13.971 7.700 29.161 1.00 0.00 H -ATOM 793 OW SOL 264 12.091 5.250 21.371 1.00 0.00 O -ATOM 794 HW1 SOL 264 12.221 4.410 21.911 1.00 0.00 H -ATOM 795 HW2 SOL 264 11.801 5.990 21.971 1.00 0.00 H -ATOM 796 OW SOL 265 7.320 6.340 29.261 1.00 0.00 O -ATOM 797 HW1 SOL 265 7.910 6.080 28.501 1.00 0.00 H -ATOM 798 HW2 SOL 265 7.040 7.300 29.151 1.00 0.00 H -ATOM 799 OW SOL 266 3.070 0.630 24.801 1.00 0.00 O -ATOM 800 HW1 SOL 266 2.960 1.570 25.131 1.00 0.00 H -ATOM 801 HW2 SOL 266 3.020 0.000 25.571 1.00 0.00 H -ATOM 802 OW SOL 267 16.221 3.670 22.361 1.00 0.00 O -ATOM 803 HW1 SOL 267 16.241 2.910 23.001 1.00 0.00 H -ATOM 804 HW2 SOL 267 15.741 4.440 22.761 1.00 0.00 H -ATOM 805 OW SOL 268 10.231 7.660 28.281 1.00 0.00 O -ATOM 806 HW1 SOL 268 10.381 7.870 29.241 1.00 0.00 H -ATOM 807 HW2 SOL 268 9.931 6.710 28.191 1.00 0.00 H -ATOM 808 OW SOL 269 15.401 2.740 19.871 1.00 0.00 O -ATOM 809 HW1 SOL 269 14.791 1.990 20.101 1.00 0.00 H -ATOM 810 HW2 SOL 269 15.621 3.260 20.701 1.00 0.00 H -ATOM 811 OW SOL 270 13.031 8.380 19.041 1.00 0.00 O -ATOM 812 HW1 SOL 270 13.371 7.450 19.191 1.00 0.00 H -ATOM 813 HW2 SOL 270 13.211 8.650 18.091 1.00 0.00 H -ATOM 814 OW SOL 271 10.681 13.331 27.111 1.00 0.00 O -ATOM 815 HW1 SOL 271 10.751 12.491 26.561 1.00 0.00 H -ATOM 816 HW2 SOL 271 11.301 14.021 26.751 1.00 0.00 H -ATOM 817 OW SOL 272 3.190 8.100 28.111 1.00 0.00 O -ATOM 818 HW1 SOL 272 4.120 8.460 28.161 1.00 0.00 H -ATOM 819 HW2 SOL 272 3.130 7.250 28.631 1.00 0.00 H -ATOM 820 OW SOL 273 3.390 5.090 28.681 1.00 0.00 O -ATOM 821 HW1 SOL 273 2.870 4.260 28.511 1.00 0.00 H -ATOM 822 HW2 SOL 273 4.160 5.140 28.041 1.00 0.00 H -ATOM 823 OW SOL 274 0.880 18.011 27.891 1.00 0.00 O -ATOM 824 HW1 SOL 274 0.460 17.151 27.621 1.00 0.00 H -ATOM 825 HW2 SOL 274 1.820 18.041 27.551 1.00 0.00 H -ATOM 826 OW SOL 275 5.040 15.681 27.721 1.00 0.00 O -ATOM 827 HW1 SOL 275 5.700 16.421 27.811 1.00 0.00 H -ATOM 828 HW2 SOL 275 5.480 14.891 27.301 1.00 0.00 H -ATOM 829 OW SOL 276 10.021 7.960 31.001 1.00 0.00 O -ATOM 830 HW1 SOL 276 10.431 7.640 31.861 1.00 0.00 H -ATOM 831 HW2 SOL 276 9.061 7.690 30.971 1.00 0.00 H -ATOM 832 OW SOL 277 0.400 5.440 29.761 1.00 0.00 O -ATOM 833 HW1 SOL 277 1.250 5.110 29.351 1.00 0.00 H -ATOM 834 HW2 SOL 277 0.530 5.590 30.741 1.00 0.00 H -ATOM 835 OW SOL 278 8.150 5.720 21.871 1.00 0.00 O -ATOM 836 HW1 SOL 278 8.220 4.830 21.411 1.00 0.00 H -ATOM 837 HW2 SOL 278 7.210 6.060 21.791 1.00 0.00 H -ATOM 838 OW SOL 279 16.571 6.040 30.681 1.00 0.00 O -ATOM 839 HW1 SOL 279 16.191 5.350 31.301 1.00 0.00 H -ATOM 840 HW2 SOL 279 17.391 5.680 30.241 1.00 0.00 H -ATOM 841 OW SOL 280 6.710 4.640 0.081 1.00 0.00 O -ATOM 842 HW1 SOL 280 6.370 3.750 -0.219 1.00 0.00 H -ATOM 843 HW2 SOL 280 6.970 5.180 -0.719 1.00 0.00 H -ATOM 844 OW SOL 281 4.730 5.000 20.531 1.00 0.00 O -ATOM 845 HW1 SOL 281 5.340 5.800 20.571 1.00 0.00 H -ATOM 846 HW2 SOL 281 3.780 5.310 20.601 1.00 0.00 H -ATOM 847 OW SOL 282 13.021 8.550 21.711 1.00 0.00 O -ATOM 848 HW1 SOL 282 12.161 8.240 22.131 1.00 0.00 H -ATOM 849 HW2 SOL 282 12.981 8.410 20.721 1.00 0.00 H -ATOM 850 OW SOL 283 17.591 17.471 30.161 1.00 0.00 O -ATOM 851 HW1 SOL 283 18.201 17.771 29.431 1.00 0.00 H -ATOM 852 HW2 SOL 283 17.211 16.581 29.941 1.00 0.00 H -ATOM 853 OW SOL 284 0.830 12.581 28.841 1.00 0.00 O -ATOM 854 HW1 SOL 284 0.780 12.571 29.841 1.00 0.00 H -ATOM 855 HW2 SOL 284 0.000 12.171 28.461 1.00 0.00 H -ATOM 856 OW SOL 285 17.261 1.350 23.851 1.00 0.00 O -ATOM 857 HW1 SOL 285 17.991 1.180 23.181 1.00 0.00 H -ATOM 858 HW2 SOL 285 16.951 0.480 24.231 1.00 0.00 H -ATOM 859 OW SOL 286 13.881 15.731 23.391 1.00 0.00 O -ATOM 860 HW1 SOL 286 14.551 15.851 22.651 1.00 0.00 H -ATOM 861 HW2 SOL 286 13.481 16.621 23.621 1.00 0.00 H -ATOM 862 OW SOL 287 12.801 9.270 25.341 1.00 0.00 O -ATOM 863 HW1 SOL 287 13.401 8.460 25.361 1.00 0.00 H -ATOM 864 HW2 SOL 287 13.201 9.960 24.741 1.00 0.00 H -ATOM 865 OW SOL 288 6.720 16.161 20.161 1.00 0.00 O -ATOM 866 HW1 SOL 288 6.810 16.261 19.171 1.00 0.00 H -ATOM 867 HW2 SOL 288 6.320 15.271 20.371 1.00 0.00 H -ATOM 868 OW SOL 289 2.630 3.260 25.821 1.00 0.00 O -ATOM 869 HW1 SOL 289 1.840 3.770 25.481 1.00 0.00 H -ATOM 870 HW2 SOL 289 2.540 3.110 26.801 1.00 0.00 H -ATOM 871 OW SOL 290 11.941 16.121 18.931 1.00 0.00 O -ATOM 872 HW1 SOL 290 12.001 15.191 19.301 1.00 0.00 H -ATOM 873 HW2 SOL 290 11.351 16.121 18.131 1.00 0.00 H -ATOM 874 OW SOL 291 8.220 10.021 1.111 1.00 0.00 O -ATOM 875 HW1 SOL 291 8.620 10.011 0.191 1.00 0.00 H -ATOM 876 HW2 SOL 291 8.320 10.941 1.511 1.00 0.00 H -ATOM 877 OW SOL 292 9.160 9.100 21.531 1.00 0.00 O -ATOM 878 HW1 SOL 292 9.790 9.480 20.851 1.00 0.00 H -ATOM 879 HW2 SOL 292 9.560 8.270 21.921 1.00 0.00 H -ATOM 880 OW SOL 293 15.041 16.071 19.061 1.00 0.00 O -ATOM 881 HW1 SOL 293 14.121 16.441 19.131 1.00 0.00 H -ATOM 882 HW2 SOL 293 15.421 16.271 18.161 1.00 0.00 H -ATOM 883 OW SOL 294 10.391 10.981 25.581 1.00 0.00 O -ATOM 884 HW1 SOL 294 9.691 10.511 26.121 1.00 0.00 H -ATOM 885 HW2 SOL 294 10.981 10.301 25.151 1.00 0.00 H -ATOM 886 OW SOL 295 10.141 2.360 28.331 1.00 0.00 O -ATOM 887 HW1 SOL 295 10.061 2.000 27.401 1.00 0.00 H -ATOM 888 HW2 SOL 295 10.121 1.600 28.981 1.00 0.00 H -ATOM 889 OW SOL 296 5.900 14.871 23.531 1.00 0.00 O -ATOM 890 HW1 SOL 296 6.320 14.291 22.831 1.00 0.00 H -ATOM 891 HW2 SOL 296 5.460 15.661 23.091 1.00 0.00 H -ATOM 892 OW SOL 297 17.091 3.850 1.201 1.00 0.00 O -ATOM 893 HW1 SOL 297 17.821 4.540 1.241 1.00 0.00 H -ATOM 894 HW2 SOL 297 17.371 3.100 0.611 1.00 0.00 H -ATOM 895 OW SOL 298 2.550 13.481 21.521 1.00 0.00 O -ATOM 896 HW1 SOL 298 1.590 13.491 21.251 1.00 0.00 H -ATOM 897 HW2 SOL 298 2.670 14.011 22.361 1.00 0.00 H -ATOM 898 OW SOL 299 0.750 3.450 18.951 1.00 0.00 O -ATOM 899 HW1 SOL 299 -0.170 3.170 18.661 1.00 0.00 H -ATOM 900 HW2 SOL 299 1.060 4.220 18.391 1.00 0.00 H -ATOM 901 OW SOL 300 11.831 13.351 19.811 1.00 0.00 O -ATOM 902 HW1 SOL 300 10.841 13.241 19.831 1.00 0.00 H -ATOM 903 HW2 SOL 300 12.171 13.501 20.741 1.00 0.00 H -ATOM 904 OW SOL 301 14.931 17.671 28.211 1.00 0.00 O -ATOM 905 HW1 SOL 301 15.261 18.311 27.521 1.00 0.00 H -ATOM 906 HW2 SOL 301 15.591 17.611 28.961 1.00 0.00 H -ATOM 907 OW SOL 302 16.741 8.830 31.161 1.00 0.00 O -ATOM 908 HW1 SOL 302 16.471 7.940 30.791 1.00 0.00 H -ATOM 909 HW2 SOL 302 16.751 9.510 30.431 1.00 0.00 H -ATOM 910 OW SOL 303 12.251 3.250 23.111 1.00 0.00 O -ATOM 911 HW1 SOL 303 12.901 2.510 23.001 1.00 0.00 H -ATOM 912 HW2 SOL 303 12.451 3.750 23.951 1.00 0.00 H -ATOM 913 OW SOL 304 5.940 7.450 25.141 1.00 0.00 O -ATOM 914 HW1 SOL 304 6.440 8.300 24.951 1.00 0.00 H -ATOM 915 HW2 SOL 304 5.060 7.470 24.661 1.00 0.00 H -ATOM 916 OW SOL 305 8.590 13.741 18.781 1.00 0.00 O -ATOM 917 HW1 SOL 305 8.130 13.891 19.661 1.00 0.00 H -ATOM 918 HW2 SOL 305 9.030 14.591 18.481 1.00 0.00 H -ATOM 919 OW SOL 306 6.610 17.901 28.151 1.00 0.00 O -ATOM 920 HW1 SOL 306 6.150 18.781 28.021 1.00 0.00 H -ATOM 921 HW2 SOL 306 7.600 18.021 28.081 1.00 0.00 H -ATOM 922 OW SOL 307 8.590 9.561 27.231 1.00 0.00 O -ATOM 923 HW1 SOL 307 9.130 8.871 27.711 1.00 0.00 H -ATOM 924 HW2 SOL 307 8.270 10.251 27.891 1.00 0.00 H -ATOM 925 OW SOL 308 10.831 9.841 19.491 1.00 0.00 O -ATOM 926 HW1 SOL 308 10.601 10.371 18.671 1.00 0.00 H -ATOM 927 HW2 SOL 308 11.641 9.281 19.301 1.00 0.00 H -ATOM 928 OW SOL 309 18.611 15.691 27.131 1.00 0.00 O -ATOM 929 HW1 SOL 309 17.901 15.571 26.431 1.00 0.00 H -ATOM 930 HW2 SOL 309 18.621 14.901 27.731 1.00 0.00 H -ATOM 931 OW SOL 310 0.790 12.401 25.151 1.00 0.00 O -ATOM 932 HW1 SOL 310 0.780 11.931 26.031 1.00 0.00 H -ATOM 933 HW2 SOL 310 1.610 12.121 24.641 1.00 0.00 H -ATOM 934 OW SOL 311 4.280 4.240 23.821 1.00 0.00 O -ATOM 935 HW1 SOL 311 4.580 3.520 23.201 1.00 0.00 H -ATOM 936 HW2 SOL 311 3.890 3.840 24.651 1.00 0.00 H -ATOM 937 OW SOL 312 17.051 14.871 29.661 1.00 0.00 O -ATOM 938 HW1 SOL 312 16.121 14.621 29.391 1.00 0.00 H -ATOM 939 HW2 SOL 312 17.311 14.371 30.481 1.00 0.00 H -ATOM 940 OW SOL 313 8.120 15.861 25.491 1.00 0.00 O -ATOM 941 HW1 SOL 313 8.440 15.961 24.551 1.00 0.00 H -ATOM 942 HW2 SOL 313 7.330 15.241 25.511 1.00 0.00 H -ATOM 943 OW SOL 314 14.241 2.140 29.741 1.00 0.00 O -ATOM 944 HW1 SOL 314 14.761 1.490 30.291 1.00 0.00 H -ATOM 945 HW2 SOL 314 13.751 2.770 30.351 1.00 0.00 H -ATOM 946 OW SOL 315 10.011 0.340 30.161 1.00 0.00 O -ATOM 947 HW1 SOL 315 9.381 -0.380 29.851 1.00 0.00 H -ATOM 948 HW2 SOL 315 10.941 -0.020 30.161 1.00 0.00 H -ATOM 949 OW SOL 316 7.700 13.301 21.631 1.00 0.00 O -ATOM 950 HW1 SOL 316 7.240 12.431 21.801 1.00 0.00 H -ATOM 951 HW2 SOL 316 8.610 13.271 22.041 1.00 0.00 H -ATOM 952 OW SOL 317 13.521 0.520 20.301 1.00 0.00 O -ATOM 953 HW1 SOL 317 13.871 0.110 19.461 1.00 0.00 H -ATOM 954 HW2 SOL 317 12.621 0.140 20.501 1.00 0.00 H -ATOM 955 OW SOL 318 13.001 4.530 25.531 1.00 0.00 O -ATOM 956 HW1 SOL 318 12.411 5.330 25.571 1.00 0.00 H -ATOM 957 HW2 SOL 318 13.151 4.180 26.461 1.00 0.00 H -ATOM 958 OW SOL 319 15.931 2.210 27.441 1.00 0.00 O -ATOM 959 HW1 SOL 319 15.091 2.200 27.981 1.00 0.00 H -ATOM 960 HW2 SOL 319 15.951 3.040 26.881 1.00 0.00 H -ATOM 961 OW SOL 320 0.390 10.771 21.621 1.00 0.00 O -ATOM 962 HW1 SOL 320 1.380 10.661 21.531 1.00 0.00 H -ATOM 963 HW2 SOL 320 -0.010 9.911 21.941 1.00 0.00 H -ATOM 964 OW SOL 321 8.750 16.461 21.991 1.00 0.00 O -ATOM 965 HW1 SOL 321 7.980 16.111 21.451 1.00 0.00 H -ATOM 966 HW2 SOL 321 8.430 17.171 22.611 1.00 0.00 H -ATOM 967 OW SOL 322 17.431 24.801 8.560 1.00 0.00 O -ATOM 968 HW1 SOL 322 17.761 25.741 8.560 1.00 0.00 H -ATOM 969 HW2 SOL 322 17.941 24.261 9.220 1.00 0.00 H -ATOM 970 OW SOL 323 11.351 25.651 7.170 1.00 0.00 O -ATOM 971 HW1 SOL 323 11.921 26.431 6.920 1.00 0.00 H -ATOM 972 HW2 SOL 323 10.751 25.911 7.930 1.00 0.00 H -ATOM 973 OW SOL 324 17.551 24.691 2.310 1.00 0.00 O -ATOM 974 HW1 SOL 324 17.431 24.561 1.320 1.00 0.00 H -ATOM 975 HW2 SOL 324 17.251 23.881 2.800 1.00 0.00 H -ATOM 976 OW SOL 325 7.680 30.061 10.231 1.00 0.00 O -ATOM 977 HW1 SOL 325 6.900 30.231 10.831 1.00 0.00 H -ATOM 978 HW2 SOL 325 8.020 30.931 9.871 1.00 0.00 H -ATOM 979 OW SOL 326 8.500 26.601 18.231 1.00 0.00 O -ATOM 980 HW1 SOL 326 8.460 27.361 18.881 1.00 0.00 H -ATOM 981 HW2 SOL 326 8.720 26.961 17.321 1.00 0.00 H -ATOM 982 OW SOL 327 6.850 28.741 6.650 1.00 0.00 O -ATOM 983 HW1 SOL 327 7.540 28.581 7.350 1.00 0.00 H -ATOM 984 HW2 SOL 327 6.120 29.311 7.030 1.00 0.00 H -ATOM 985 OW SOL 328 4.380 22.541 14.991 1.00 0.00 O -ATOM 986 HW1 SOL 328 5.200 21.981 15.081 1.00 0.00 H -ATOM 987 HW2 SOL 328 3.570 21.961 15.031 1.00 0.00 H -ATOM 988 OW SOL 329 16.031 23.091 7.370 1.00 0.00 O -ATOM 989 HW1 SOL 329 15.291 23.551 6.870 1.00 0.00 H -ATOM 990 HW2 SOL 329 16.541 23.771 7.900 1.00 0.00 H -ATOM 991 OW SOL 330 2.400 29.531 8.860 1.00 0.00 O -ATOM 992 HW1 SOL 330 2.540 28.691 9.380 1.00 0.00 H -ATOM 993 HW2 SOL 330 1.850 30.171 9.410 1.00 0.00 H -ATOM 994 OW SOL 331 6.060 28.261 1.230 1.00 0.00 O -ATOM 995 HW1 SOL 331 6.130 29.101 0.690 1.00 0.00 H -ATOM 996 HW2 SOL 331 6.520 28.391 2.110 1.00 0.00 H -ATOM 997 OW SOL 332 15.941 19.761 14.801 1.00 0.00 O -ATOM 998 HW1 SOL 332 15.761 20.431 14.081 1.00 0.00 H -ATOM 999 HW2 SOL 332 15.911 20.221 15.691 1.00 0.00 H -ATOM 1000 OW SOL 333 1.220 25.051 5.630 1.00 0.00 O -ATOM 1001 HW1 SOL 333 0.770 24.171 5.800 1.00 0.00 H -ATOM 1002 HW2 SOL 333 1.210 25.591 6.470 1.00 0.00 H -ATOM 1003 OW SOL 334 16.891 27.841 6.120 1.00 0.00 O -ATOM 1004 HW1 SOL 334 17.841 27.551 6.200 1.00 0.00 H -ATOM 1005 HW2 SOL 334 16.811 28.491 5.370 1.00 0.00 H -ATOM 1006 OW SOL 335 16.411 29.701 4.320 1.00 0.00 O -ATOM 1007 HW1 SOL 335 17.271 29.721 3.800 1.00 0.00 H -ATOM 1008 HW2 SOL 335 16.551 30.171 5.200 1.00 0.00 H -ATOM 1009 OW SOL 336 1.130 25.991 15.971 1.00 0.00 O -ATOM 1010 HW1 SOL 336 2.010 25.861 16.421 1.00 0.00 H -ATOM 1011 HW2 SOL 336 1.000 26.961 15.751 1.00 0.00 H -ATOM 1012 OW SOL 337 6.130 1.041 7.260 1.00 0.00 O -ATOM 1013 HW1 SOL 337 5.640 0.171 7.350 1.00 0.00 H -ATOM 1014 HW2 SOL 337 5.900 1.471 6.390 1.00 0.00 H -ATOM 1015 OW SOL 338 12.931 30.901 14.231 1.00 0.00 O -ATOM 1016 HW1 SOL 338 13.301 30.171 13.651 1.00 0.00 H -ATOM 1017 HW2 SOL 338 13.451 30.951 15.081 1.00 0.00 H -ATOM 1018 OW SOL 339 8.090 18.661 5.020 1.00 0.00 O -ATOM 1019 HW1 SOL 339 8.490 19.571 4.930 1.00 0.00 H -ATOM 1020 HW2 SOL 339 7.090 18.741 5.080 1.00 0.00 H -ATOM 1021 OW SOL 340 15.251 28.611 1.900 1.00 0.00 O -ATOM 1022 HW1 SOL 340 14.621 27.851 2.030 1.00 0.00 H -ATOM 1023 HW2 SOL 340 15.731 28.791 2.760 1.00 0.00 H -ATOM 1024 OW SOL 341 3.170 21.131 18.011 1.00 0.00 O -ATOM 1025 HW1 SOL 341 3.880 21.841 18.071 1.00 0.00 H -ATOM 1026 HW2 SOL 341 2.290 21.521 18.291 1.00 0.00 H -ATOM 1027 OW SOL 342 5.980 25.911 2.700 1.00 0.00 O -ATOM 1028 HW1 SOL 342 6.220 26.601 2.020 1.00 0.00 H -ATOM 1029 HW2 SOL 342 5.200 26.241 3.240 1.00 0.00 H -ATOM 1030 OW SOL 343 12.811 22.071 9.441 1.00 0.00 O -ATOM 1031 HW1 SOL 343 11.951 21.571 9.311 1.00 0.00 H -ATOM 1032 HW2 SOL 343 13.431 21.531 10.001 1.00 0.00 H -ATOM 1033 OW SOL 344 8.070 24.671 14.651 1.00 0.00 O -ATOM 1034 HW1 SOL 344 7.600 24.641 15.541 1.00 0.00 H -ATOM 1035 HW2 SOL 344 7.560 24.121 13.991 1.00 0.00 H -ATOM 1036 OW SOL 345 13.941 23.311 16.741 1.00 0.00 O -ATOM 1037 HW1 SOL 345 13.741 23.741 17.621 1.00 0.00 H -ATOM 1038 HW2 SOL 345 14.721 22.691 16.831 1.00 0.00 H -ATOM 1039 OW SOL 346 9.731 27.521 15.721 1.00 0.00 O -ATOM 1040 HW1 SOL 346 10.191 26.681 15.431 1.00 0.00 H -ATOM 1041 HW2 SOL 346 9.171 27.861 14.971 1.00 0.00 H -ATOM 1042 OW SOL 347 9.911 22.721 12.421 1.00 0.00 O -ATOM 1043 HW1 SOL 347 9.141 23.061 12.961 1.00 0.00 H -ATOM 1044 HW2 SOL 347 9.571 22.211 11.631 1.00 0.00 H -ATOM 1045 OW SOL 348 10.411 25.631 4.290 1.00 0.00 O -ATOM 1046 HW1 SOL 348 10.671 25.591 5.250 1.00 0.00 H -ATOM 1047 HW2 SOL 348 9.561 25.121 4.150 1.00 0.00 H -ATOM 1048 OW SOL 349 8.650 22.101 1.950 1.00 0.00 O -ATOM 1049 HW1 SOL 349 9.240 22.731 1.460 1.00 0.00 H -ATOM 1050 HW2 SOL 349 8.840 21.161 1.660 1.00 0.00 H -ATOM 1051 OW SOL 350 17.191 24.471 18.311 1.00 0.00 O -ATOM 1052 HW1 SOL 350 16.931 25.361 17.951 1.00 0.00 H -ATOM 1053 HW2 SOL 350 17.171 23.791 17.581 1.00 0.00 H -ATOM 1054 OW SOL 351 13.621 30.061 5.450 1.00 0.00 O -ATOM 1055 HW1 SOL 351 14.451 29.771 4.970 1.00 0.00 H -ATOM 1056 HW2 SOL 351 13.131 30.731 4.890 1.00 0.00 H -ATOM 1057 OW SOL 352 5.500 20.581 8.850 1.00 0.00 O -ATOM 1058 HW1 SOL 352 5.450 20.531 9.850 1.00 0.00 H -ATOM 1059 HW2 SOL 352 5.520 21.541 8.560 1.00 0.00 H -ATOM 1060 OW SOL 353 17.951 29.281 8.730 1.00 0.00 O -ATOM 1061 HW1 SOL 353 17.331 29.131 7.970 1.00 0.00 H -ATOM 1062 HW2 SOL 353 17.431 29.391 9.580 1.00 0.00 H -ATOM 1063 OW SOL 354 3.210 28.051 2.420 1.00 0.00 O -ATOM 1064 HW1 SOL 354 4.030 28.441 2.000 1.00 0.00 H -ATOM 1065 HW2 SOL 354 2.940 27.231 1.930 1.00 0.00 H -ATOM 1066 OW SOL 355 14.581 25.971 7.280 1.00 0.00 O -ATOM 1067 HW1 SOL 355 14.531 25.321 8.030 1.00 0.00 H -ATOM 1068 HW2 SOL 355 15.381 26.561 7.410 1.00 0.00 H -ATOM 1069 OW SOL 356 2.020 21.471 14.981 1.00 0.00 O -ATOM 1070 HW1 SOL 356 1.220 22.071 14.851 1.00 0.00 H -ATOM 1071 HW2 SOL 356 1.920 20.981 15.841 1.00 0.00 H -ATOM 1072 OW SOL 357 14.001 19.691 4.260 1.00 0.00 O -ATOM 1073 HW1 SOL 357 13.761 19.321 3.360 1.00 0.00 H -ATOM 1074 HW2 SOL 357 14.991 19.851 4.300 1.00 0.00 H -ATOM 1075 OW SOL 358 3.820 25.621 4.800 1.00 0.00 O -ATOM 1076 HW1 SOL 358 4.270 24.721 4.770 1.00 0.00 H -ATOM 1077 HW2 SOL 358 2.880 25.511 5.130 1.00 0.00 H -ATOM 1078 OW SOL 359 15.471 20.841 17.291 1.00 0.00 O -ATOM 1079 HW1 SOL 359 15.421 21.211 18.211 1.00 0.00 H -ATOM 1080 HW2 SOL 359 14.751 20.151 17.171 1.00 0.00 H -ATOM 1081 OW SOL 360 6.140 19.841 1.170 1.00 0.00 O -ATOM 1082 HW1 SOL 360 7.120 19.621 1.240 1.00 0.00 H -ATOM 1083 HW2 SOL 360 5.830 19.671 0.240 1.00 0.00 H -ATOM 1084 OW SOL 361 7.810 21.261 17.491 1.00 0.00 O -ATOM 1085 HW1 SOL 361 8.480 20.651 17.921 1.00 0.00 H -ATOM 1086 HW2 SOL 361 7.080 21.451 18.141 1.00 0.00 H -ATOM 1087 OW SOL 362 13.511 24.521 14.331 1.00 0.00 O -ATOM 1088 HW1 SOL 362 13.791 24.091 15.181 1.00 0.00 H -ATOM 1089 HW2 SOL 362 13.761 25.481 14.341 1.00 0.00 H -ATOM 1090 OW SOL 363 9.220 23.651 8.990 1.00 0.00 O -ATOM 1091 HW1 SOL 363 8.970 23.561 8.030 1.00 0.00 H -ATOM 1092 HW2 SOL 363 9.700 22.831 9.300 1.00 0.00 H -ATOM 1093 OW SOL 364 5.390 19.261 5.120 1.00 0.00 O -ATOM 1094 HW1 SOL 364 4.580 19.271 5.700 1.00 0.00 H -ATOM 1095 HW2 SOL 364 5.420 20.091 4.570 1.00 0.00 H -ATOM 1096 OW SOL 365 2.970 18.971 1.710 1.00 0.00 O -ATOM 1097 HW1 SOL 365 3.460 19.811 1.500 1.00 0.00 H -ATOM 1098 HW2 SOL 365 3.590 18.321 2.160 1.00 0.00 H -ATOM 1099 OW SOL 366 9.351 20.981 4.800 1.00 0.00 O -ATOM 1100 HW1 SOL 366 8.871 21.391 4.020 1.00 0.00 H -ATOM 1101 HW2 SOL 366 10.341 20.961 4.610 1.00 0.00 H -ATOM 1102 OW SOL 367 10.761 25.451 14.641 1.00 0.00 O -ATOM 1103 HW1 SOL 367 9.961 24.841 14.671 1.00 0.00 H -ATOM 1104 HW2 SOL 367 11.571 24.921 14.401 1.00 0.00 H -ATOM 1105 OW SOL 368 4.590 30.141 7.410 1.00 0.00 O -ATOM 1106 HW1 SOL 368 3.880 29.871 8.060 1.00 0.00 H -ATOM 1107 HW2 SOL 368 4.330 29.861 6.480 1.00 0.00 H -ATOM 1108 OW SOL 369 10.321 24.111 0.160 1.00 0.00 O -ATOM 1109 HW1 SOL 369 9.911 24.931 -0.230 1.00 0.00 H -ATOM 1110 HW2 SOL 369 10.961 24.371 0.890 1.00 0.00 H -ATOM 1111 OW SOL 370 5.610 20.841 11.471 1.00 0.00 O -ATOM 1112 HW1 SOL 370 5.990 20.001 11.841 1.00 0.00 H -ATOM 1113 HW2 SOL 370 4.730 21.031 11.911 1.00 0.00 H -ATOM 1114 OW SOL 371 8.660 23.161 6.420 1.00 0.00 O -ATOM 1115 HW1 SOL 371 8.340 23.881 5.800 1.00 0.00 H -ATOM 1116 HW2 SOL 371 8.900 22.351 5.890 1.00 0.00 H -ATOM 1117 OW SOL 372 10.171 19.011 7.530 1.00 0.00 O -ATOM 1118 HW1 SOL 372 9.451 19.061 6.840 1.00 0.00 H -ATOM 1119 HW2 SOL 372 9.931 18.321 8.220 1.00 0.00 H -ATOM 1120 OW SOL 373 14.291 30.351 8.670 1.00 0.00 O -ATOM 1121 HW1 SOL 373 13.741 29.511 8.600 1.00 0.00 H -ATOM 1122 HW2 SOL 373 14.551 30.641 7.750 1.00 0.00 H -ATOM 1123 OW SOL 374 14.661 24.521 9.921 1.00 0.00 O -ATOM 1124 HW1 SOL 374 14.361 23.571 9.991 1.00 0.00 H -ATOM 1125 HW2 SOL 374 15.391 24.681 10.581 1.00 0.00 H -ATOM 1126 OW SOL 375 18.571 26.951 3.770 1.00 0.00 O -ATOM 1127 HW1 SOL 375 18.991 26.311 4.410 1.00 0.00 H -ATOM 1128 HW2 SOL 375 18.191 26.441 2.990 1.00 0.00 H -ATOM 1129 OW SOL 376 13.901 24.371 0.780 1.00 0.00 O -ATOM 1130 HW1 SOL 376 13.361 24.161 1.590 1.00 0.00 H -ATOM 1131 HW2 SOL 376 14.811 23.961 0.870 1.00 0.00 H -ATOM 1132 OW SOL 377 5.270 21.181 3.280 1.00 0.00 O -ATOM 1133 HW1 SOL 377 5.540 20.591 2.530 1.00 0.00 H -ATOM 1134 HW2 SOL 377 5.270 22.131 2.970 1.00 0.00 H -ATOM 1135 OW SOL 378 17.541 30.851 15.881 1.00 0.00 O -ATOM 1136 HW1 SOL 378 18.451 30.461 15.751 1.00 0.00 H -ATOM 1137 HW2 SOL 378 17.621 31.811 16.121 1.00 0.00 H -ATOM 1138 OW SOL 379 16.381 29.611 10.791 1.00 0.00 O -ATOM 1139 HW1 SOL 379 16.431 30.421 11.381 1.00 0.00 H -ATOM 1140 HW2 SOL 379 15.521 29.631 10.281 1.00 0.00 H -ATOM 1141 OW SOL 380 9.150 19.511 14.021 1.00 0.00 O -ATOM 1142 HW1 SOL 380 9.400 19.311 13.071 1.00 0.00 H -ATOM 1143 HW2 SOL 380 9.870 20.071 14.441 1.00 0.00 H -ATOM 1144 OW SOL 381 9.801 29.781 17.191 1.00 0.00 O -ATOM 1145 HW1 SOL 381 8.811 29.841 17.291 1.00 0.00 H -ATOM 1146 HW2 SOL 381 10.031 28.981 16.631 1.00 0.00 H -ATOM 1147 OW SOL 382 7.050 29.121 3.680 1.00 0.00 O -ATOM 1148 HW1 SOL 382 6.910 29.191 4.670 1.00 0.00 H -ATOM 1149 HW2 SOL 382 7.890 28.611 3.500 1.00 0.00 H -ATOM 1150 OW SOL 383 4.100 26.751 12.511 1.00 0.00 O -ATOM 1151 HW1 SOL 383 4.960 26.871 13.011 1.00 0.00 H -ATOM 1152 HW2 SOL 383 3.680 25.881 12.781 1.00 0.00 H -ATOM 1153 OW SOL 384 12.741 22.481 12.621 1.00 0.00 O -ATOM 1154 HW1 SOL 384 12.951 23.221 13.261 1.00 0.00 H -ATOM 1155 HW2 SOL 384 11.851 22.651 12.191 1.00 0.00 H -ATOM 1156 OW SOL 385 3.670 29.621 5.010 1.00 0.00 O -ATOM 1157 HW1 SOL 385 3.600 30.451 4.450 1.00 0.00 H -ATOM 1158 HW2 SOL 385 3.710 28.821 4.410 1.00 0.00 H -ATOM 1159 OW SOL 386 5.660 23.991 8.650 1.00 0.00 O -ATOM 1160 HW1 SOL 386 5.780 24.651 7.910 1.00 0.00 H -ATOM 1161 HW2 SOL 386 6.120 24.331 9.480 1.00 0.00 H -ATOM 1162 OW SOL 387 15.821 25.011 4.720 1.00 0.00 O -ATOM 1163 HW1 SOL 387 15.511 25.621 5.450 1.00 0.00 H -ATOM 1164 HW2 SOL 387 16.321 25.531 4.030 1.00 0.00 H -ATOM 1165 OW SOL 388 4.020 26.131 15.981 1.00 0.00 O -ATOM 1166 HW1 SOL 388 4.700 26.681 15.511 1.00 0.00 H -ATOM 1167 HW2 SOL 388 4.420 25.251 16.251 1.00 0.00 H -ATOM 1168 OW SOL 389 15.871 26.411 16.701 1.00 0.00 O -ATOM 1169 HW1 SOL 389 14.951 26.791 16.651 1.00 0.00 H -ATOM 1170 HW2 SOL 389 16.471 26.881 16.051 1.00 0.00 H -ATOM 1171 OW SOL 390 10.131 19.671 17.701 1.00 0.00 O -ATOM 1172 HW1 SOL 390 10.191 20.521 17.181 1.00 0.00 H -ATOM 1173 HW2 SOL 390 10.451 18.911 17.131 1.00 0.00 H -ATOM 1174 OW SOL 391 5.040 19.121 17.401 1.00 0.00 O -ATOM 1175 HW1 SOL 391 4.620 18.551 16.701 1.00 0.00 H -ATOM 1176 HW2 SOL 391 4.380 19.811 17.721 1.00 0.00 H -ATOM 1177 OW SOL 392 5.730 27.321 10.291 1.00 0.00 O -ATOM 1178 HW1 SOL 392 6.170 28.211 10.201 1.00 0.00 H -ATOM 1179 HW2 SOL 392 5.100 27.321 11.061 1.00 0.00 H -ATOM 1180 OW SOL 393 13.601 27.241 10.451 1.00 0.00 O -ATOM 1181 HW1 SOL 393 12.851 27.241 9.791 1.00 0.00 H -ATOM 1182 HW2 SOL 393 13.971 26.321 10.541 1.00 0.00 H -ATOM 1183 OW SOL 394 12.091 23.871 2.750 1.00 0.00 O -ATOM 1184 HW1 SOL 394 12.221 23.031 3.290 1.00 0.00 H -ATOM 1185 HW2 SOL 394 11.801 24.611 3.350 1.00 0.00 H -ATOM 1186 OW SOL 395 0.370 0.491 12.821 1.00 0.00 O -ATOM 1187 HW1 SOL 395 0.900 0.001 13.501 1.00 0.00 H -ATOM 1188 HW2 SOL 395 0.590 1.471 12.871 1.00 0.00 H -ATOM 1189 OW SOL 396 7.320 24.961 10.641 1.00 0.00 O -ATOM 1190 HW1 SOL 396 7.910 24.701 9.881 1.00 0.00 H -ATOM 1191 HW2 SOL 396 7.040 25.921 10.531 1.00 0.00 H -ATOM 1192 OW SOL 397 17.281 27.971 18.541 1.00 0.00 O -ATOM 1193 HW1 SOL 397 16.821 27.901 17.651 1.00 0.00 H -ATOM 1194 HW2 SOL 397 16.661 28.411 19.201 1.00 0.00 H -ATOM 1195 OW SOL 398 3.070 19.251 6.180 1.00 0.00 O -ATOM 1196 HW1 SOL 398 2.960 20.191 6.510 1.00 0.00 H -ATOM 1197 HW2 SOL 398 3.020 18.621 6.950 1.00 0.00 H -ATOM 1198 OW SOL 399 16.221 22.291 3.740 1.00 0.00 O -ATOM 1199 HW1 SOL 399 16.241 21.531 4.380 1.00 0.00 H -ATOM 1200 HW2 SOL 399 15.741 23.061 4.140 1.00 0.00 H -ATOM 1201 OW SOL 400 10.231 26.281 9.661 1.00 0.00 O -ATOM 1202 HW1 SOL 400 10.381 26.491 10.621 1.00 0.00 H -ATOM 1203 HW2 SOL 400 9.931 25.331 9.571 1.00 0.00 H -ATOM 1204 OW SOL 401 3.500 27.601 18.041 1.00 0.00 O -ATOM 1205 HW1 SOL 401 4.260 28.041 18.521 1.00 0.00 H -ATOM 1206 HW2 SOL 401 3.850 27.131 17.221 1.00 0.00 H -ATOM 1207 OW SOL 402 15.401 21.361 1.250 1.00 0.00 O -ATOM 1208 HW1 SOL 402 14.791 20.611 1.480 1.00 0.00 H -ATOM 1209 HW2 SOL 402 15.621 21.881 2.080 1.00 0.00 H -ATOM 1210 OW SOL 403 13.031 27.001 0.420 1.00 0.00 O -ATOM 1211 HW1 SOL 403 13.371 26.071 0.570 1.00 0.00 H -ATOM 1212 HW2 SOL 403 13.211 27.271 -0.530 1.00 0.00 H -ATOM 1213 OW SOL 404 3.190 26.721 9.491 1.00 0.00 O -ATOM 1214 HW1 SOL 404 4.120 27.081 9.541 1.00 0.00 H -ATOM 1215 HW2 SOL 404 3.130 25.871 10.011 1.00 0.00 H -ATOM 1216 OW SOL 405 3.390 23.711 10.061 1.00 0.00 O -ATOM 1217 HW1 SOL 405 2.870 22.881 9.891 1.00 0.00 H -ATOM 1218 HW2 SOL 405 4.160 23.761 9.421 1.00 0.00 H -ATOM 1219 OW SOL 406 11.381 22.421 16.781 1.00 0.00 O -ATOM 1220 HW1 SOL 406 10.931 23.051 17.421 1.00 0.00 H -ATOM 1221 HW2 SOL 406 12.311 22.731 16.611 1.00 0.00 H -ATOM 1222 OW SOL 407 11.601 20.691 14.771 1.00 0.00 O -ATOM 1223 HW1 SOL 407 11.601 21.331 15.541 1.00 0.00 H -ATOM 1224 HW2 SOL 407 11.881 21.171 13.941 1.00 0.00 H -ATOM 1225 OW SOL 408 10.021 26.581 12.381 1.00 0.00 O -ATOM 1226 HW1 SOL 408 10.431 26.261 13.241 1.00 0.00 H -ATOM 1227 HW2 SOL 408 9.061 26.311 12.351 1.00 0.00 H -ATOM 1228 OW SOL 409 0.400 24.061 11.141 1.00 0.00 O -ATOM 1229 HW1 SOL 409 1.250 23.731 10.731 1.00 0.00 H -ATOM 1230 HW2 SOL 409 0.530 24.211 12.121 1.00 0.00 H -ATOM 1231 OW SOL 410 1.890 23.821 17.221 1.00 0.00 O -ATOM 1232 HW1 SOL 410 2.480 23.421 16.521 1.00 0.00 H -ATOM 1233 HW2 SOL 410 1.310 24.531 16.811 1.00 0.00 H -ATOM 1234 OW SOL 411 13.691 28.121 16.601 1.00 0.00 O -ATOM 1235 HW1 SOL 411 14.081 29.011 16.801 1.00 0.00 H -ATOM 1236 HW2 SOL 411 13.791 27.921 15.631 1.00 0.00 H -ATOM 1237 OW SOL 412 8.150 24.341 3.250 1.00 0.00 O -ATOM 1238 HW1 SOL 412 8.220 23.451 2.790 1.00 0.00 H -ATOM 1239 HW2 SOL 412 7.210 24.681 3.170 1.00 0.00 H -ATOM 1240 OW SOL 413 16.571 24.661 12.061 1.00 0.00 O -ATOM 1241 HW1 SOL 413 16.191 23.971 12.681 1.00 0.00 H -ATOM 1242 HW2 SOL 413 17.391 24.301 11.621 1.00 0.00 H -ATOM 1243 OW SOL 414 6.710 23.261 12.691 1.00 0.00 O -ATOM 1244 HW1 SOL 414 6.370 22.371 12.391 1.00 0.00 H -ATOM 1245 HW2 SOL 414 6.970 23.801 11.891 1.00 0.00 H -ATOM 1246 OW SOL 415 4.730 23.621 1.910 1.00 0.00 O -ATOM 1247 HW1 SOL 415 5.340 24.421 1.950 1.00 0.00 H -ATOM 1248 HW2 SOL 415 3.780 23.931 1.980 1.00 0.00 H -ATOM 1249 OW SOL 416 1.590 29.991 14.661 1.00 0.00 O -ATOM 1250 HW1 SOL 416 1.810 29.381 15.421 1.00 0.00 H -ATOM 1251 HW2 SOL 416 1.690 29.501 13.801 1.00 0.00 H -ATOM 1252 OW SOL 417 13.471 29.211 12.341 1.00 0.00 O -ATOM 1253 HW1 SOL 417 13.711 28.581 11.601 1.00 0.00 H -ATOM 1254 HW2 SOL 417 12.571 29.611 12.161 1.00 0.00 H -ATOM 1255 OW SOL 418 13.021 27.171 3.090 1.00 0.00 O -ATOM 1256 HW1 SOL 418 12.161 26.861 3.510 1.00 0.00 H -ATOM 1257 HW2 SOL 418 12.981 27.031 2.100 1.00 0.00 H -ATOM 1258 OW SOL 419 0.830 31.201 10.221 1.00 0.00 O -ATOM 1259 HW1 SOL 419 0.780 31.191 11.221 1.00 0.00 H -ATOM 1260 HW2 SOL 419 0.000 30.791 9.841 1.00 0.00 H -ATOM 1261 OW SOL 420 9.030 19.481 1.330 1.00 0.00 O -ATOM 1262 HW1 SOL 420 9.540 19.491 0.470 1.00 0.00 H -ATOM 1263 HW2 SOL 420 9.590 19.061 2.040 1.00 0.00 H -ATOM 1264 OW SOL 421 17.261 19.971 5.230 1.00 0.00 O -ATOM 1265 HW1 SOL 421 17.991 19.801 4.560 1.00 0.00 H -ATOM 1266 HW2 SOL 421 16.951 19.101 5.610 1.00 0.00 H -ATOM 1267 OW SOL 422 12.801 27.891 6.720 1.00 0.00 O -ATOM 1268 HW1 SOL 422 13.401 27.081 6.740 1.00 0.00 H -ATOM 1269 HW2 SOL 422 13.201 28.581 6.120 1.00 0.00 H -ATOM 1270 OW SOL 423 18.411 20.371 9.631 1.00 0.00 O -ATOM 1271 HW1 SOL 423 18.801 19.521 9.271 1.00 0.00 H -ATOM 1272 HW2 SOL 423 17.431 20.391 9.441 1.00 0.00 H -ATOM 1273 OW SOL 424 2.630 21.881 7.200 1.00 0.00 O -ATOM 1274 HW1 SOL 424 1.840 22.391 6.860 1.00 0.00 H -ATOM 1275 HW2 SOL 424 2.540 21.731 8.180 1.00 0.00 H -ATOM 1276 OW SOL 425 8.220 28.641 13.721 1.00 0.00 O -ATOM 1277 HW1 SOL 425 8.620 28.631 12.801 1.00 0.00 H -ATOM 1278 HW2 SOL 425 8.320 29.561 14.121 1.00 0.00 H -ATOM 1279 OW SOL 426 9.160 27.721 2.910 1.00 0.00 O -ATOM 1280 HW1 SOL 426 9.790 28.101 2.230 1.00 0.00 H -ATOM 1281 HW2 SOL 426 9.560 26.891 3.300 1.00 0.00 H -ATOM 1282 OW SOL 427 3.720 0.271 14.901 1.00 0.00 O -ATOM 1283 HW1 SOL 427 3.590 1.201 14.561 1.00 0.00 H -ATOM 1284 HW2 SOL 427 2.880 -0.249 14.771 1.00 0.00 H -ATOM 1285 OW SOL 428 16.141 0.311 12.891 1.00 0.00 O -ATOM 1286 HW1 SOL 428 16.741 0.341 13.691 1.00 0.00 H -ATOM 1287 HW2 SOL 428 15.391 0.951 13.021 1.00 0.00 H -ATOM 1288 OW SOL 429 10.391 29.601 6.960 1.00 0.00 O -ATOM 1289 HW1 SOL 429 9.691 29.131 7.500 1.00 0.00 H -ATOM 1290 HW2 SOL 429 10.981 28.921 6.530 1.00 0.00 H -ATOM 1291 OW SOL 430 10.141 20.981 9.711 1.00 0.00 O -ATOM 1292 HW1 SOL 430 10.061 20.621 8.781 1.00 0.00 H -ATOM 1293 HW2 SOL 430 10.121 20.221 10.361 1.00 0.00 H -ATOM 1294 OW SOL 431 17.091 22.471 13.811 1.00 0.00 O -ATOM 1295 HW1 SOL 431 17.821 23.161 13.851 1.00 0.00 H -ATOM 1296 HW2 SOL 431 17.371 21.721 13.221 1.00 0.00 H -ATOM 1297 OW SOL 432 6.720 20.651 14.891 1.00 0.00 O -ATOM 1298 HW1 SOL 432 7.620 20.491 14.491 1.00 0.00 H -ATOM 1299 HW2 SOL 432 6.800 20.701 15.881 1.00 0.00 H -ATOM 1300 OW SOL 433 14.401 27.181 13.981 1.00 0.00 O -ATOM 1301 HW1 SOL 433 13.831 27.701 13.351 1.00 0.00 H -ATOM 1302 HW2 SOL 433 15.361 27.301 13.741 1.00 0.00 H -ATOM 1303 OW SOL 434 6.130 27.041 14.311 1.00 0.00 O -ATOM 1304 HW1 SOL 434 6.690 27.851 14.141 1.00 0.00 H -ATOM 1305 HW2 SOL 434 6.720 26.241 14.341 1.00 0.00 H -ATOM 1306 OW SOL 435 7.160 24.271 17.081 1.00 0.00 O -ATOM 1307 HW1 SOL 435 7.350 24.921 17.821 1.00 0.00 H -ATOM 1308 HW2 SOL 435 7.760 23.471 17.171 1.00 0.00 H -ATOM 1309 OW SOL 436 14.501 30.821 16.331 1.00 0.00 O -ATOM 1310 HW1 SOL 436 14.411 30.721 17.321 1.00 0.00 H -ATOM 1311 HW2 SOL 436 15.461 30.751 16.071 1.00 0.00 H -ATOM 1312 OW SOL 437 16.741 27.451 12.541 1.00 0.00 O -ATOM 1313 HW1 SOL 437 16.471 26.561 12.171 1.00 0.00 H -ATOM 1314 HW2 SOL 437 16.751 28.131 11.811 1.00 0.00 H -ATOM 1315 OW SOL 438 12.251 21.871 4.490 1.00 0.00 O -ATOM 1316 HW1 SOL 438 12.901 21.131 4.380 1.00 0.00 H -ATOM 1317 HW2 SOL 438 12.451 22.371 5.330 1.00 0.00 H -ATOM 1318 OW SOL 439 5.940 26.071 6.520 1.00 0.00 O -ATOM 1319 HW1 SOL 439 6.440 26.921 6.330 1.00 0.00 H -ATOM 1320 HW2 SOL 439 5.060 26.091 6.040 1.00 0.00 H -ATOM 1321 OW SOL 440 17.771 22.041 16.421 1.00 0.00 O -ATOM 1322 HW1 SOL 440 17.601 22.351 15.481 1.00 0.00 H -ATOM 1323 HW2 SOL 440 16.931 21.671 16.801 1.00 0.00 H -ATOM 1324 OW SOL 441 17.301 27.961 15.171 1.00 0.00 O -ATOM 1325 HW1 SOL 441 17.681 28.871 15.321 1.00 0.00 H -ATOM 1326 HW2 SOL 441 17.221 27.791 14.181 1.00 0.00 H -ATOM 1327 OW SOL 442 8.590 28.181 8.610 1.00 0.00 O -ATOM 1328 HW1 SOL 442 9.130 27.491 9.090 1.00 0.00 H -ATOM 1329 HW2 SOL 442 8.270 28.871 9.270 1.00 0.00 H -ATOM 1330 OW SOL 443 10.831 28.461 0.870 1.00 0.00 O -ATOM 1331 HW1 SOL 443 10.601 28.991 0.050 1.00 0.00 H -ATOM 1332 HW2 SOL 443 11.641 27.901 0.680 1.00 0.00 H -ATOM 1333 OW SOL 444 0.790 31.021 6.530 1.00 0.00 O -ATOM 1334 HW1 SOL 444 0.780 30.551 7.410 1.00 0.00 H -ATOM 1335 HW2 SOL 444 1.610 30.741 6.020 1.00 0.00 H -ATOM 1336 OW SOL 445 18.241 20.541 12.271 1.00 0.00 O -ATOM 1337 HW1 SOL 445 18.201 19.641 12.711 1.00 0.00 H -ATOM 1338 HW2 SOL 445 18.271 20.431 11.281 1.00 0.00 H -ATOM 1339 OW SOL 446 4.280 22.861 5.200 1.00 0.00 O -ATOM 1340 HW1 SOL 446 4.580 22.141 4.580 1.00 0.00 H -ATOM 1341 HW2 SOL 446 3.890 22.461 6.030 1.00 0.00 H -ATOM 1342 OW SOL 447 3.170 24.091 12.801 1.00 0.00 O -ATOM 1343 HW1 SOL 447 3.550 23.501 13.521 1.00 0.00 H -ATOM 1344 HW2 SOL 447 3.570 23.831 11.921 1.00 0.00 H -ATOM 1345 OW SOL 448 14.241 20.761 11.121 1.00 0.00 O -ATOM 1346 HW1 SOL 448 14.761 20.111 11.671 1.00 0.00 H -ATOM 1347 HW2 SOL 448 13.751 21.391 11.731 1.00 0.00 H -ATOM 1348 OW SOL 449 10.011 18.961 11.541 1.00 0.00 O -ATOM 1349 HW1 SOL 449 9.381 18.241 11.231 1.00 0.00 H -ATOM 1350 HW2 SOL 449 10.941 18.601 11.541 1.00 0.00 H -ATOM 1351 OW SOL 450 7.700 0.691 3.010 1.00 0.00 O -ATOM 1352 HW1 SOL 450 7.240 -0.179 3.180 1.00 0.00 H -ATOM 1353 HW2 SOL 450 8.610 0.661 3.420 1.00 0.00 H -ATOM 1354 OW SOL 451 13.521 19.141 1.680 1.00 0.00 O -ATOM 1355 HW1 SOL 451 13.871 18.731 0.840 1.00 0.00 H -ATOM 1356 HW2 SOL 451 12.621 18.761 1.880 1.00 0.00 H -ATOM 1357 OW SOL 452 13.001 23.151 6.910 1.00 0.00 O -ATOM 1358 HW1 SOL 452 12.411 23.951 6.950 1.00 0.00 H -ATOM 1359 HW2 SOL 452 13.151 22.801 7.840 1.00 0.00 H -ATOM 1360 OW SOL 453 15.931 20.831 8.820 1.00 0.00 O -ATOM 1361 HW1 SOL 453 15.091 20.821 9.360 1.00 0.00 H -ATOM 1362 HW2 SOL 453 15.951 21.661 8.260 1.00 0.00 H -ATOM 1363 OW SOL 454 0.390 29.391 3.000 1.00 0.00 O -ATOM 1364 HW1 SOL 454 1.380 29.281 2.910 1.00 0.00 H -ATOM 1365 HW2 SOL 454 -0.010 28.531 3.320 1.00 0.00 H -ATOM 1366 OW SOL 455 17.431 24.801 27.181 1.00 0.00 O -ATOM 1367 HW1 SOL 455 17.761 25.741 27.181 1.00 0.00 H -ATOM 1368 HW2 SOL 455 17.941 24.261 27.841 1.00 0.00 H -ATOM 1369 OW SOL 456 11.351 25.651 25.791 1.00 0.00 O -ATOM 1370 HW1 SOL 456 11.921 26.431 25.541 1.00 0.00 H -ATOM 1371 HW2 SOL 456 10.751 25.911 26.551 1.00 0.00 H -ATOM 1372 OW SOL 457 17.551 24.691 20.931 1.00 0.00 O -ATOM 1373 HW1 SOL 457 17.431 24.561 19.941 1.00 0.00 H -ATOM 1374 HW2 SOL 457 17.251 23.881 21.421 1.00 0.00 H -ATOM 1375 OW SOL 458 7.680 30.061 28.851 1.00 0.00 O -ATOM 1376 HW1 SOL 458 6.900 30.231 29.451 1.00 0.00 H -ATOM 1377 HW2 SOL 458 8.020 30.931 28.491 1.00 0.00 H -ATOM 1378 OW SOL 459 6.850 28.741 25.271 1.00 0.00 O -ATOM 1379 HW1 SOL 459 7.540 28.581 25.971 1.00 0.00 H -ATOM 1380 HW2 SOL 459 6.120 29.311 25.651 1.00 0.00 H -ATOM 1381 OW SOL 460 2.400 29.531 27.481 1.00 0.00 O -ATOM 1382 HW1 SOL 460 2.540 28.691 28.001 1.00 0.00 H -ATOM 1383 HW2 SOL 460 1.850 30.171 28.031 1.00 0.00 H -ATOM 1384 OW SOL 461 6.060 28.261 19.851 1.00 0.00 O -ATOM 1385 HW1 SOL 461 6.130 29.101 19.311 1.00 0.00 H -ATOM 1386 HW2 SOL 461 6.520 28.391 20.731 1.00 0.00 H -ATOM 1387 OW SOL 462 1.220 25.051 24.251 1.00 0.00 O -ATOM 1388 HW1 SOL 462 0.770 24.171 24.421 1.00 0.00 H -ATOM 1389 HW2 SOL 462 1.210 25.591 25.091 1.00 0.00 H -ATOM 1390 OW SOL 463 16.891 27.841 24.741 1.00 0.00 O -ATOM 1391 HW1 SOL 463 17.841 27.551 24.821 1.00 0.00 H -ATOM 1392 HW2 SOL 463 16.811 28.491 23.991 1.00 0.00 H -ATOM 1393 OW SOL 464 16.411 29.701 22.941 1.00 0.00 O -ATOM 1394 HW1 SOL 464 17.271 29.721 22.421 1.00 0.00 H -ATOM 1395 HW2 SOL 464 16.551 30.171 23.821 1.00 0.00 H -ATOM 1396 OW SOL 465 6.130 1.041 25.881 1.00 0.00 O -ATOM 1397 HW1 SOL 465 5.640 0.171 25.971 1.00 0.00 H -ATOM 1398 HW2 SOL 465 5.900 1.471 25.011 1.00 0.00 H -ATOM 1399 OW SOL 466 8.090 18.661 23.641 1.00 0.00 O -ATOM 1400 HW1 SOL 466 8.490 19.571 23.551 1.00 0.00 H -ATOM 1401 HW2 SOL 466 7.090 18.741 23.701 1.00 0.00 H -ATOM 1402 OW SOL 467 15.251 28.611 20.521 1.00 0.00 O -ATOM 1403 HW1 SOL 467 14.621 27.851 20.651 1.00 0.00 H -ATOM 1404 HW2 SOL 467 15.731 28.791 21.381 1.00 0.00 H -ATOM 1405 OW SOL 468 5.980 25.911 21.321 1.00 0.00 O -ATOM 1406 HW1 SOL 468 6.220 26.601 20.641 1.00 0.00 H -ATOM 1407 HW2 SOL 468 5.200 26.241 21.861 1.00 0.00 H -ATOM 1408 OW SOL 469 12.811 22.071 28.061 1.00 0.00 O -ATOM 1409 HW1 SOL 469 11.951 21.571 27.931 1.00 0.00 H -ATOM 1410 HW2 SOL 469 13.431 21.531 28.621 1.00 0.00 H -ATOM 1411 OW SOL 470 10.411 25.631 22.911 1.00 0.00 O -ATOM 1412 HW1 SOL 470 10.671 25.591 23.871 1.00 0.00 H -ATOM 1413 HW2 SOL 470 9.561 25.121 22.771 1.00 0.00 H -ATOM 1414 OW SOL 471 8.650 22.101 20.571 1.00 0.00 O -ATOM 1415 HW1 SOL 471 9.240 22.731 20.081 1.00 0.00 H -ATOM 1416 HW2 SOL 471 8.840 21.161 20.281 1.00 0.00 H -ATOM 1417 OW SOL 472 13.621 30.061 24.071 1.00 0.00 O -ATOM 1418 HW1 SOL 472 14.451 29.771 23.591 1.00 0.00 H -ATOM 1419 HW2 SOL 472 13.131 30.731 23.511 1.00 0.00 H -ATOM 1420 OW SOL 473 5.500 20.581 27.471 1.00 0.00 O -ATOM 1421 HW1 SOL 473 5.450 20.531 28.471 1.00 0.00 H -ATOM 1422 HW2 SOL 473 5.520 21.541 27.181 1.00 0.00 H -ATOM 1423 OW SOL 474 17.951 29.281 27.351 1.00 0.00 O -ATOM 1424 HW1 SOL 474 17.331 29.131 26.591 1.00 0.00 H -ATOM 1425 HW2 SOL 474 17.431 29.391 28.201 1.00 0.00 H -ATOM 1426 OW SOL 475 3.210 28.051 21.041 1.00 0.00 O -ATOM 1427 HW1 SOL 475 4.030 28.441 20.621 1.00 0.00 H -ATOM 1428 HW2 SOL 475 2.940 27.231 20.551 1.00 0.00 H -ATOM 1429 OW SOL 476 14.581 25.971 25.901 1.00 0.00 O -ATOM 1430 HW1 SOL 476 14.531 25.321 26.651 1.00 0.00 H -ATOM 1431 HW2 SOL 476 15.381 26.561 26.031 1.00 0.00 H -ATOM 1432 OW SOL 477 14.001 19.691 22.881 1.00 0.00 O -ATOM 1433 HW1 SOL 477 13.761 19.321 21.981 1.00 0.00 H -ATOM 1434 HW2 SOL 477 14.991 19.851 22.921 1.00 0.00 H -ATOM 1435 OW SOL 478 3.820 25.621 23.421 1.00 0.00 O -ATOM 1436 HW1 SOL 478 4.270 24.721 23.391 1.00 0.00 H -ATOM 1437 HW2 SOL 478 2.880 25.511 23.751 1.00 0.00 H -ATOM 1438 OW SOL 479 6.140 19.841 19.791 1.00 0.00 O -ATOM 1439 HW1 SOL 479 7.120 19.621 19.861 1.00 0.00 H -ATOM 1440 HW2 SOL 479 5.830 19.671 18.861 1.00 0.00 H -ATOM 1441 OW SOL 480 9.220 23.651 27.611 1.00 0.00 O -ATOM 1442 HW1 SOL 480 8.970 23.561 26.651 1.00 0.00 H -ATOM 1443 HW2 SOL 480 9.700 22.831 27.921 1.00 0.00 H -ATOM 1444 OW SOL 481 5.390 19.261 23.741 1.00 0.00 O -ATOM 1445 HW1 SOL 481 4.580 19.271 24.321 1.00 0.00 H -ATOM 1446 HW2 SOL 481 5.420 20.091 23.191 1.00 0.00 H -ATOM 1447 OW SOL 482 2.970 18.971 20.331 1.00 0.00 O -ATOM 1448 HW1 SOL 482 3.460 19.811 20.121 1.00 0.00 H -ATOM 1449 HW2 SOL 482 3.590 18.321 20.781 1.00 0.00 H -ATOM 1450 OW SOL 483 9.351 20.981 23.421 1.00 0.00 O -ATOM 1451 HW1 SOL 483 8.871 21.391 22.641 1.00 0.00 H -ATOM 1452 HW2 SOL 483 10.341 20.961 23.231 1.00 0.00 H -ATOM 1453 OW SOL 484 4.590 30.141 26.031 1.00 0.00 O -ATOM 1454 HW1 SOL 484 3.880 29.871 26.681 1.00 0.00 H -ATOM 1455 HW2 SOL 484 4.330 29.861 25.101 1.00 0.00 H -ATOM 1456 OW SOL 485 10.321 24.111 18.781 1.00 0.00 O -ATOM 1457 HW1 SOL 485 9.911 24.931 18.391 1.00 0.00 H -ATOM 1458 HW2 SOL 485 10.961 24.371 19.511 1.00 0.00 H -ATOM 1459 OW SOL 486 8.660 23.161 25.041 1.00 0.00 O -ATOM 1460 HW1 SOL 486 8.340 23.881 24.421 1.00 0.00 H -ATOM 1461 HW2 SOL 486 8.900 22.351 24.511 1.00 0.00 H -ATOM 1462 OW SOL 487 10.171 19.011 26.151 1.00 0.00 O -ATOM 1463 HW1 SOL 487 9.451 19.061 25.461 1.00 0.00 H -ATOM 1464 HW2 SOL 487 9.931 18.321 26.841 1.00 0.00 H -ATOM 1465 OW SOL 488 14.291 30.351 27.291 1.00 0.00 O -ATOM 1466 HW1 SOL 488 13.741 29.511 27.221 1.00 0.00 H -ATOM 1467 HW2 SOL 488 14.551 30.641 26.371 1.00 0.00 H -ATOM 1468 OW SOL 489 14.661 24.521 28.541 1.00 0.00 O -ATOM 1469 HW1 SOL 489 14.361 23.571 28.611 1.00 0.00 H -ATOM 1470 HW2 SOL 489 15.391 24.681 29.201 1.00 0.00 H -ATOM 1471 OW SOL 490 18.571 26.951 22.391 1.00 0.00 O -ATOM 1472 HW1 SOL 490 18.991 26.311 23.031 1.00 0.00 H -ATOM 1473 HW2 SOL 490 18.191 26.441 21.611 1.00 0.00 H -ATOM 1474 OW SOL 491 13.901 24.371 19.401 1.00 0.00 O -ATOM 1475 HW1 SOL 491 13.361 24.161 20.211 1.00 0.00 H -ATOM 1476 HW2 SOL 491 14.811 23.961 19.491 1.00 0.00 H -ATOM 1477 OW SOL 492 5.270 21.181 21.901 1.00 0.00 O -ATOM 1478 HW1 SOL 492 5.540 20.591 21.151 1.00 0.00 H -ATOM 1479 HW2 SOL 492 5.270 22.131 21.591 1.00 0.00 H -ATOM 1480 OW SOL 493 16.381 29.611 29.411 1.00 0.00 O -ATOM 1481 HW1 SOL 493 16.431 30.421 30.001 1.00 0.00 H -ATOM 1482 HW2 SOL 493 15.521 29.631 28.901 1.00 0.00 H -ATOM 1483 OW SOL 494 7.050 29.121 22.301 1.00 0.00 O -ATOM 1484 HW1 SOL 494 6.910 29.191 23.291 1.00 0.00 H -ATOM 1485 HW2 SOL 494 7.890 28.611 22.121 1.00 0.00 H -ATOM 1486 OW SOL 495 4.100 26.751 31.131 1.00 0.00 O -ATOM 1487 HW1 SOL 495 4.960 26.871 31.631 1.00 0.00 H -ATOM 1488 HW2 SOL 495 3.680 25.881 31.401 1.00 0.00 H -ATOM 1489 OW SOL 496 3.670 29.621 23.631 1.00 0.00 O -ATOM 1490 HW1 SOL 496 3.600 30.451 23.071 1.00 0.00 H -ATOM 1491 HW2 SOL 496 3.710 28.821 23.031 1.00 0.00 H -ATOM 1492 OW SOL 497 5.660 23.991 27.271 1.00 0.00 O -ATOM 1493 HW1 SOL 497 5.780 24.651 26.531 1.00 0.00 H -ATOM 1494 HW2 SOL 497 6.120 24.331 28.101 1.00 0.00 H -ATOM 1495 OW SOL 498 15.821 25.011 23.341 1.00 0.00 O -ATOM 1496 HW1 SOL 498 15.511 25.621 24.071 1.00 0.00 H -ATOM 1497 HW2 SOL 498 16.321 25.531 22.651 1.00 0.00 H -ATOM 1498 OW SOL 499 5.730 27.321 28.911 1.00 0.00 O -ATOM 1499 HW1 SOL 499 6.170 28.211 28.821 1.00 0.00 H -ATOM 1500 HW2 SOL 499 5.100 27.321 29.681 1.00 0.00 H -ATOM 1501 OW SOL 500 13.601 27.241 29.071 1.00 0.00 O -ATOM 1502 HW1 SOL 500 12.851 27.241 28.411 1.00 0.00 H -ATOM 1503 HW2 SOL 500 13.971 26.321 29.161 1.00 0.00 H -ATOM 1504 OW SOL 501 12.091 23.871 21.371 1.00 0.00 O -ATOM 1505 HW1 SOL 501 12.221 23.031 21.911 1.00 0.00 H -ATOM 1506 HW2 SOL 501 11.801 24.611 21.971 1.00 0.00 H -ATOM 1507 OW SOL 502 0.370 0.491 0.211 1.00 0.00 O -ATOM 1508 HW1 SOL 502 0.900 0.001 0.891 1.00 0.00 H -ATOM 1509 HW2 SOL 502 0.590 1.471 0.261 1.00 0.00 H -ATOM 1510 OW SOL 503 7.320 24.961 29.261 1.00 0.00 O -ATOM 1511 HW1 SOL 503 7.910 24.701 28.501 1.00 0.00 H -ATOM 1512 HW2 SOL 503 7.040 25.921 29.151 1.00 0.00 H -ATOM 1513 OW SOL 504 3.070 19.251 24.801 1.00 0.00 O -ATOM 1514 HW1 SOL 504 2.960 20.191 25.131 1.00 0.00 H -ATOM 1515 HW2 SOL 504 3.020 18.621 25.571 1.00 0.00 H -ATOM 1516 OW SOL 505 16.221 22.291 22.361 1.00 0.00 O -ATOM 1517 HW1 SOL 505 16.241 21.531 23.001 1.00 0.00 H -ATOM 1518 HW2 SOL 505 15.741 23.061 22.761 1.00 0.00 H -ATOM 1519 OW SOL 506 10.231 26.281 28.281 1.00 0.00 O -ATOM 1520 HW1 SOL 506 10.381 26.491 29.241 1.00 0.00 H -ATOM 1521 HW2 SOL 506 9.931 25.331 28.191 1.00 0.00 H -ATOM 1522 OW SOL 507 15.401 21.361 19.871 1.00 0.00 O -ATOM 1523 HW1 SOL 507 14.791 20.611 20.101 1.00 0.00 H -ATOM 1524 HW2 SOL 507 15.621 21.881 20.701 1.00 0.00 H -ATOM 1525 OW SOL 508 13.031 27.001 19.041 1.00 0.00 O -ATOM 1526 HW1 SOL 508 13.371 26.071 19.191 1.00 0.00 H -ATOM 1527 HW2 SOL 508 13.211 27.271 18.091 1.00 0.00 H -ATOM 1528 OW SOL 509 3.190 26.721 28.111 1.00 0.00 O -ATOM 1529 HW1 SOL 509 4.120 27.081 28.161 1.00 0.00 H -ATOM 1530 HW2 SOL 509 3.130 25.871 28.631 1.00 0.00 H -ATOM 1531 OW SOL 510 3.390 23.711 28.681 1.00 0.00 O -ATOM 1532 HW1 SOL 510 2.870 22.881 28.511 1.00 0.00 H -ATOM 1533 HW2 SOL 510 4.160 23.761 28.041 1.00 0.00 H -ATOM 1534 OW SOL 511 10.021 26.581 31.001 1.00 0.00 O -ATOM 1535 HW1 SOL 511 10.431 26.261 31.861 1.00 0.00 H -ATOM 1536 HW2 SOL 511 9.061 26.311 30.971 1.00 0.00 H -ATOM 1537 OW SOL 512 0.400 24.061 29.761 1.00 0.00 O -ATOM 1538 HW1 SOL 512 1.250 23.731 29.351 1.00 0.00 H -ATOM 1539 HW2 SOL 512 0.530 24.211 30.741 1.00 0.00 H -ATOM 1540 OW SOL 513 8.150 24.341 21.871 1.00 0.00 O -ATOM 1541 HW1 SOL 513 8.220 23.451 21.411 1.00 0.00 H -ATOM 1542 HW2 SOL 513 7.210 24.681 21.791 1.00 0.00 H -ATOM 1543 OW SOL 514 16.571 24.661 30.681 1.00 0.00 O -ATOM 1544 HW1 SOL 514 16.191 23.971 31.301 1.00 0.00 H -ATOM 1545 HW2 SOL 514 17.391 24.301 30.241 1.00 0.00 H -ATOM 1546 OW SOL 515 6.710 23.261 0.081 1.00 0.00 O -ATOM 1547 HW1 SOL 515 6.370 22.371 -0.219 1.00 0.00 H -ATOM 1548 HW2 SOL 515 6.970 23.801 -0.719 1.00 0.00 H -ATOM 1549 OW SOL 516 4.730 23.621 20.531 1.00 0.00 O -ATOM 1550 HW1 SOL 516 5.340 24.421 20.571 1.00 0.00 H -ATOM 1551 HW2 SOL 516 3.780 23.931 20.601 1.00 0.00 H -ATOM 1552 OW SOL 517 13.471 29.211 30.961 1.00 0.00 O -ATOM 1553 HW1 SOL 517 13.711 28.581 30.221 1.00 0.00 H -ATOM 1554 HW2 SOL 517 12.571 29.611 30.781 1.00 0.00 H -ATOM 1555 OW SOL 518 13.021 27.171 21.711 1.00 0.00 O -ATOM 1556 HW1 SOL 518 12.161 26.861 22.131 1.00 0.00 H -ATOM 1557 HW2 SOL 518 12.981 27.031 20.721 1.00 0.00 H -ATOM 1558 OW SOL 519 0.830 31.201 28.841 1.00 0.00 O -ATOM 1559 HW1 SOL 519 0.780 31.191 29.841 1.00 0.00 H -ATOM 1560 HW2 SOL 519 0.000 30.791 28.461 1.00 0.00 H -ATOM 1561 OW SOL 520 9.030 19.481 19.951 1.00 0.00 O -ATOM 1562 HW1 SOL 520 9.540 19.491 19.091 1.00 0.00 H -ATOM 1563 HW2 SOL 520 9.590 19.061 20.661 1.00 0.00 H -ATOM 1564 OW SOL 521 17.261 19.971 23.851 1.00 0.00 O -ATOM 1565 HW1 SOL 521 17.991 19.801 23.181 1.00 0.00 H -ATOM 1566 HW2 SOL 521 16.951 19.101 24.231 1.00 0.00 H -ATOM 1567 OW SOL 522 12.801 27.891 25.341 1.00 0.00 O -ATOM 1568 HW1 SOL 522 13.401 27.081 25.361 1.00 0.00 H -ATOM 1569 HW2 SOL 522 13.201 28.581 24.741 1.00 0.00 H -ATOM 1570 OW SOL 523 18.411 20.371 28.251 1.00 0.00 O -ATOM 1571 HW1 SOL 523 18.801 19.521 27.891 1.00 0.00 H -ATOM 1572 HW2 SOL 523 17.431 20.391 28.061 1.00 0.00 H -ATOM 1573 OW SOL 524 2.630 21.881 25.821 1.00 0.00 O -ATOM 1574 HW1 SOL 524 1.840 22.391 25.481 1.00 0.00 H -ATOM 1575 HW2 SOL 524 2.540 21.731 26.801 1.00 0.00 H -ATOM 1576 OW SOL 525 8.220 28.641 1.111 1.00 0.00 O -ATOM 1577 HW1 SOL 525 8.620 28.631 0.191 1.00 0.00 H -ATOM 1578 HW2 SOL 525 8.320 29.561 1.511 1.00 0.00 H -ATOM 1579 OW SOL 526 9.160 27.721 21.531 1.00 0.00 O -ATOM 1580 HW1 SOL 526 9.790 28.101 20.851 1.00 0.00 H -ATOM 1581 HW2 SOL 526 9.560 26.891 21.921 1.00 0.00 H -ATOM 1582 OW SOL 527 16.141 0.311 0.281 1.00 0.00 O -ATOM 1583 HW1 SOL 527 16.741 0.341 1.081 1.00 0.00 H -ATOM 1584 HW2 SOL 527 15.391 0.951 0.411 1.00 0.00 H -ATOM 1585 OW SOL 528 10.391 29.601 25.581 1.00 0.00 O -ATOM 1586 HW1 SOL 528 9.691 29.131 26.121 1.00 0.00 H -ATOM 1587 HW2 SOL 528 10.981 28.921 25.151 1.00 0.00 H -ATOM 1588 OW SOL 529 10.141 20.981 28.331 1.00 0.00 O -ATOM 1589 HW1 SOL 529 10.061 20.621 27.401 1.00 0.00 H -ATOM 1590 HW2 SOL 529 10.121 20.221 28.981 1.00 0.00 H -ATOM 1591 OW SOL 530 17.091 22.471 1.201 1.00 0.00 O -ATOM 1592 HW1 SOL 530 17.821 23.161 1.241 1.00 0.00 H -ATOM 1593 HW2 SOL 530 17.371 21.721 0.611 1.00 0.00 H -ATOM 1594 OW SOL 531 0.750 22.071 18.951 1.00 0.00 O -ATOM 1595 HW1 SOL 531 -0.170 21.791 18.661 1.00 0.00 H -ATOM 1596 HW2 SOL 531 1.060 22.841 18.391 1.00 0.00 H -ATOM 1597 OW SOL 532 16.741 27.451 31.161 1.00 0.00 O -ATOM 1598 HW1 SOL 532 16.471 26.561 30.791 1.00 0.00 H -ATOM 1599 HW2 SOL 532 16.751 28.131 30.431 1.00 0.00 H -ATOM 1600 OW SOL 533 12.251 21.871 23.111 1.00 0.00 O -ATOM 1601 HW1 SOL 533 12.901 21.131 23.001 1.00 0.00 H -ATOM 1602 HW2 SOL 533 12.451 22.371 23.951 1.00 0.00 H -ATOM 1603 OW SOL 534 5.940 26.071 25.141 1.00 0.00 O -ATOM 1604 HW1 SOL 534 6.440 26.921 24.951 1.00 0.00 H -ATOM 1605 HW2 SOL 534 5.060 26.091 24.661 1.00 0.00 H -ATOM 1606 OW SOL 535 8.590 28.181 27.231 1.00 0.00 O -ATOM 1607 HW1 SOL 535 9.130 27.491 27.711 1.00 0.00 H -ATOM 1608 HW2 SOL 535 8.270 28.871 27.891 1.00 0.00 H -ATOM 1609 OW SOL 536 10.831 28.461 19.491 1.00 0.00 O -ATOM 1610 HW1 SOL 536 10.601 28.991 18.671 1.00 0.00 H -ATOM 1611 HW2 SOL 536 11.641 27.901 19.301 1.00 0.00 H -ATOM 1612 OW SOL 537 0.790 31.021 25.151 1.00 0.00 O -ATOM 1613 HW1 SOL 537 0.780 30.551 26.031 1.00 0.00 H -ATOM 1614 HW2 SOL 537 1.610 30.741 24.641 1.00 0.00 H -ATOM 1615 OW SOL 538 18.241 20.541 30.891 1.00 0.00 O -ATOM 1616 HW1 SOL 538 18.201 19.641 31.331 1.00 0.00 H -ATOM 1617 HW2 SOL 538 18.271 20.431 29.901 1.00 0.00 H -ATOM 1618 OW SOL 539 4.280 22.861 23.821 1.00 0.00 O -ATOM 1619 HW1 SOL 539 4.580 22.141 23.201 1.00 0.00 H -ATOM 1620 HW2 SOL 539 3.890 22.461 24.651 1.00 0.00 H -ATOM 1621 OW SOL 540 14.241 20.761 29.741 1.00 0.00 O -ATOM 1622 HW1 SOL 540 14.761 20.111 30.291 1.00 0.00 H -ATOM 1623 HW2 SOL 540 13.751 21.391 30.351 1.00 0.00 H -ATOM 1624 OW SOL 541 10.011 18.961 30.161 1.00 0.00 O -ATOM 1625 HW1 SOL 541 9.381 18.241 29.851 1.00 0.00 H -ATOM 1626 HW2 SOL 541 10.941 18.601 30.161 1.00 0.00 H -ATOM 1627 OW SOL 542 7.700 0.691 21.631 1.00 0.00 O -ATOM 1628 HW1 SOL 542 7.240 -0.179 21.801 1.00 0.00 H -ATOM 1629 HW2 SOL 542 8.610 0.661 22.041 1.00 0.00 H -ATOM 1630 OW SOL 543 13.521 19.141 20.301 1.00 0.00 O -ATOM 1631 HW1 SOL 543 13.871 18.731 19.461 1.00 0.00 H -ATOM 1632 HW2 SOL 543 12.621 18.761 20.501 1.00 0.00 H -ATOM 1633 OW SOL 544 13.001 23.151 25.531 1.00 0.00 O -ATOM 1634 HW1 SOL 544 12.411 23.951 25.571 1.00 0.00 H -ATOM 1635 HW2 SOL 544 13.151 22.801 26.461 1.00 0.00 H -ATOM 1636 OW SOL 545 15.931 20.831 27.441 1.00 0.00 O -ATOM 1637 HW1 SOL 545 15.091 20.821 27.981 1.00 0.00 H -ATOM 1638 HW2 SOL 545 15.951 21.661 26.881 1.00 0.00 H -ATOM 1639 OW SOL 546 0.390 29.391 21.621 1.00 0.00 O -ATOM 1640 HW1 SOL 546 1.380 29.281 21.531 1.00 0.00 H -ATOM 1641 HW2 SOL 546 -0.010 28.531 21.941 1.00 0.00 H -ATOM 1642 OW SOL 547 20.921 6.280 1.130 1.00 0.00 O -ATOM 1643 HW1 SOL 547 19.991 6.260 1.500 1.00 0.00 H -ATOM 1644 HW2 SOL 547 20.931 5.890 0.210 1.00 0.00 H -ATOM 1645 OW SOL 548 20.871 2.750 9.961 1.00 0.00 O -ATOM 1646 HW1 SOL 548 21.221 2.580 10.881 1.00 0.00 H -ATOM 1647 HW2 SOL 548 19.991 2.300 9.841 1.00 0.00 H -ATOM 1648 OW SOL 549 18.811 3.680 6.470 1.00 0.00 O -ATOM 1649 HW1 SOL 549 17.991 4.110 6.860 1.00 0.00 H -ATOM 1650 HW2 SOL 549 18.531 2.950 5.840 1.00 0.00 H -ATOM 1651 OW SOL 550 24.311 12.751 11.651 1.00 0.00 O -ATOM 1652 HW1 SOL 550 23.381 12.681 11.281 1.00 0.00 H -ATOM 1653 HW2 SOL 550 24.421 13.641 12.091 1.00 0.00 H -ATOM 1654 OW SOL 551 29.971 7.030 7.170 1.00 0.00 O -ATOM 1655 HW1 SOL 551 30.541 7.810 6.920 1.00 0.00 H -ATOM 1656 HW2 SOL 551 29.371 7.290 7.930 1.00 0.00 H -ATOM 1657 OW SOL 552 26.301 11.441 10.231 1.00 0.00 O -ATOM 1658 HW1 SOL 552 25.521 11.611 10.831 1.00 0.00 H -ATOM 1659 HW2 SOL 552 26.641 12.311 9.871 1.00 0.00 H -ATOM 1660 OW SOL 553 27.121 7.980 18.231 1.00 0.00 O -ATOM 1661 HW1 SOL 553 27.081 8.740 18.881 1.00 0.00 H -ATOM 1662 HW2 SOL 553 27.341 8.340 17.321 1.00 0.00 H -ATOM 1663 OW SOL 554 25.471 10.121 6.650 1.00 0.00 O -ATOM 1664 HW1 SOL 554 26.161 9.961 7.350 1.00 0.00 H -ATOM 1665 HW2 SOL 554 24.741 10.691 7.030 1.00 0.00 H -ATOM 1666 OW SOL 555 25.481 11.611 18.031 1.00 0.00 O -ATOM 1667 HW1 SOL 555 26.081 12.401 18.171 1.00 0.00 H -ATOM 1668 HW2 SOL 555 24.621 11.921 17.621 1.00 0.00 H -ATOM 1669 OW SOL 556 21.971 14.351 10.611 1.00 0.00 O -ATOM 1670 HW1 SOL 556 21.191 14.041 10.081 1.00 0.00 H -ATOM 1671 HW2 SOL 556 22.551 14.931 10.041 1.00 0.00 H -ATOM 1672 OW SOL 557 23.001 3.920 14.991 1.00 0.00 O -ATOM 1673 HW1 SOL 557 23.821 3.360 15.081 1.00 0.00 H -ATOM 1674 HW2 SOL 557 22.191 3.340 15.031 1.00 0.00 H -ATOM 1675 OW SOL 558 20.931 17.131 4.830 1.00 0.00 O -ATOM 1676 HW1 SOL 558 21.271 17.901 5.370 1.00 0.00 H -ATOM 1677 HW2 SOL 558 21.371 17.131 3.930 1.00 0.00 H -ATOM 1678 OW SOL 559 29.891 13.411 16.901 1.00 0.00 O -ATOM 1679 HW1 SOL 559 30.361 13.411 17.781 1.00 0.00 H -ATOM 1680 HW2 SOL 559 29.411 12.541 16.791 1.00 0.00 H -ATOM 1681 OW SOL 560 20.921 14.341 5.380 1.00 0.00 O -ATOM 1682 HW1 SOL 560 20.661 15.301 5.380 1.00 0.00 H -ATOM 1683 HW2 SOL 560 20.211 13.801 5.830 1.00 0.00 H -ATOM 1684 OW SOL 561 21.021 10.911 8.860 1.00 0.00 O -ATOM 1685 HW1 SOL 561 21.161 10.071 9.380 1.00 0.00 H -ATOM 1686 HW2 SOL 561 20.471 11.551 9.410 1.00 0.00 H -ATOM 1687 OW SOL 562 24.821 17.861 14.391 1.00 0.00 O -ATOM 1688 HW1 SOL 562 23.901 17.691 14.741 1.00 0.00 H -ATOM 1689 HW2 SOL 562 25.101 18.781 14.651 1.00 0.00 H -ATOM 1690 OW SOL 563 24.681 9.641 1.230 1.00 0.00 O -ATOM 1691 HW1 SOL 563 24.751 10.481 0.690 1.00 0.00 H -ATOM 1692 HW2 SOL 563 25.141 9.771 2.110 1.00 0.00 H -ATOM 1693 OW SOL 564 19.841 6.430 5.630 1.00 0.00 O -ATOM 1694 HW1 SOL 564 19.391 5.550 5.800 1.00 0.00 H -ATOM 1695 HW2 SOL 564 19.831 6.970 6.470 1.00 0.00 H -ATOM 1696 OW SOL 565 18.891 15.961 1.170 1.00 0.00 O -ATOM 1697 HW1 SOL 565 18.701 15.001 1.380 1.00 0.00 H -ATOM 1698 HW2 SOL 565 18.561 16.541 1.920 1.00 0.00 H -ATOM 1699 OW SOL 566 19.751 7.370 15.971 1.00 0.00 O -ATOM 1700 HW1 SOL 566 20.631 7.240 16.421 1.00 0.00 H -ATOM 1701 HW2 SOL 566 19.621 8.340 15.751 1.00 0.00 H -ATOM 1702 OW SOL 567 24.751 13.651 7.260 1.00 0.00 O -ATOM 1703 HW1 SOL 567 24.261 12.781 7.350 1.00 0.00 H -ATOM 1704 HW2 SOL 567 24.521 14.081 6.390 1.00 0.00 H -ATOM 1705 OW SOL 568 26.711 0.040 5.020 1.00 0.00 O -ATOM 1706 HW1 SOL 568 27.111 0.950 4.930 1.00 0.00 H -ATOM 1707 HW2 SOL 568 25.711 0.120 5.080 1.00 0.00 H -ATOM 1708 OW SOL 569 20.591 9.761 12.641 1.00 0.00 O -ATOM 1709 HW1 SOL 569 21.481 9.311 12.501 1.00 0.00 H -ATOM 1710 HW2 SOL 569 19.861 9.111 12.451 1.00 0.00 H -ATOM 1711 OW SOL 570 21.791 2.510 18.011 1.00 0.00 O -ATOM 1712 HW1 SOL 570 22.501 3.220 18.071 1.00 0.00 H -ATOM 1713 HW2 SOL 570 20.911 2.900 18.291 1.00 0.00 H -ATOM 1714 OW SOL 571 2.051 14.171 9.531 1.00 0.00 O -ATOM 1715 HW1 SOL 571 1.461 14.231 10.331 1.00 0.00 H -ATOM 1716 HW2 SOL 571 1.901 13.291 9.071 1.00 0.00 H -ATOM 1717 OW SOL 572 24.601 7.290 2.700 1.00 0.00 O -ATOM 1718 HW1 SOL 572 24.841 7.980 2.020 1.00 0.00 H -ATOM 1719 HW2 SOL 572 23.821 7.620 3.240 1.00 0.00 H -ATOM 1720 OW SOL 573 0.201 3.450 9.441 1.00 0.00 O -ATOM 1721 HW1 SOL 573 -0.659 2.950 9.311 1.00 0.00 H -ATOM 1722 HW2 SOL 573 0.821 2.910 10.001 1.00 0.00 H -ATOM 1723 OW SOL 574 26.691 6.050 14.651 1.00 0.00 O -ATOM 1724 HW1 SOL 574 26.221 6.020 15.541 1.00 0.00 H -ATOM 1725 HW2 SOL 574 26.181 5.500 13.991 1.00 0.00 H -ATOM 1726 OW SOL 575 28.351 8.900 15.721 1.00 0.00 O -ATOM 1727 HW1 SOL 575 28.811 8.060 15.431 1.00 0.00 H -ATOM 1728 HW2 SOL 575 27.791 9.240 14.971 1.00 0.00 H -ATOM 1729 OW SOL 576 28.531 4.100 12.421 1.00 0.00 O -ATOM 1730 HW1 SOL 576 27.761 4.440 12.961 1.00 0.00 H -ATOM 1731 HW2 SOL 576 28.191 3.590 11.631 1.00 0.00 H -ATOM 1732 OW SOL 577 29.031 7.010 4.290 1.00 0.00 O -ATOM 1733 HW1 SOL 577 29.291 6.970 5.250 1.00 0.00 H -ATOM 1734 HW2 SOL 577 28.181 6.500 4.150 1.00 0.00 H -ATOM 1735 OW SOL 578 19.381 8.110 7.890 1.00 0.00 O -ATOM 1736 HW1 SOL 578 20.371 7.990 7.980 1.00 0.00 H -ATOM 1737 HW2 SOL 578 19.141 9.060 8.100 1.00 0.00 H -ATOM 1738 OW SOL 579 19.921 18.211 15.711 1.00 0.00 O -ATOM 1739 HW1 SOL 579 19.821 18.061 16.701 1.00 0.00 H -ATOM 1740 HW2 SOL 579 19.061 18.571 15.351 1.00 0.00 H -ATOM 1741 OW SOL 580 27.271 3.480 1.950 1.00 0.00 O -ATOM 1742 HW1 SOL 580 27.861 4.110 1.460 1.00 0.00 H -ATOM 1743 HW2 SOL 580 27.461 2.540 1.660 1.00 0.00 H -ATOM 1744 OW SOL 581 24.121 1.960 8.850 1.00 0.00 O -ATOM 1745 HW1 SOL 581 24.071 1.910 9.850 1.00 0.00 H -ATOM 1746 HW2 SOL 581 24.141 2.920 8.560 1.00 0.00 H -ATOM 1747 OW SOL 582 28.701 14.561 4.770 1.00 0.00 O -ATOM 1748 HW1 SOL 582 28.241 15.281 4.250 1.00 0.00 H -ATOM 1749 HW2 SOL 582 28.661 14.761 5.750 1.00 0.00 H -ATOM 1750 OW SOL 583 22.131 18.011 8.530 1.00 0.00 O -ATOM 1751 HW1 SOL 583 22.631 17.151 8.590 1.00 0.00 H -ATOM 1752 HW2 SOL 583 22.781 18.781 8.500 1.00 0.00 H -ATOM 1753 OW SOL 584 30.891 15.501 15.061 1.00 0.00 O -ATOM 1754 HW1 SOL 584 30.951 14.731 15.701 1.00 0.00 H -ATOM 1755 HW2 SOL 584 30.371 15.241 14.261 1.00 0.00 H -ATOM 1756 OW SOL 585 21.831 9.431 2.420 1.00 0.00 O -ATOM 1757 HW1 SOL 585 22.651 9.821 2.000 1.00 0.00 H -ATOM 1758 HW2 SOL 585 21.561 8.611 1.930 1.00 0.00 H -ATOM 1759 OW SOL 586 23.231 12.661 17.271 1.00 0.00 O -ATOM 1760 HW1 SOL 586 22.731 12.671 16.411 1.00 0.00 H -ATOM 1761 HW2 SOL 586 22.601 12.481 18.031 1.00 0.00 H -ATOM 1762 OW SOL 587 29.731 17.761 2.370 1.00 0.00 O -ATOM 1763 HW1 SOL 587 29.131 17.141 2.870 1.00 0.00 H -ATOM 1764 HW2 SOL 587 30.041 17.321 1.520 1.00 0.00 H -ATOM 1765 OW SOL 588 20.641 2.850 14.981 1.00 0.00 O -ATOM 1766 HW1 SOL 588 19.841 3.450 14.851 1.00 0.00 H -ATOM 1767 HW2 SOL 588 20.541 2.360 15.841 1.00 0.00 H -ATOM 1768 OW SOL 589 23.261 17.431 3.230 1.00 0.00 O -ATOM 1769 HW1 SOL 589 23.591 17.821 4.090 1.00 0.00 H -ATOM 1770 HW2 SOL 589 24.021 17.361 2.580 1.00 0.00 H -ATOM 1771 OW SOL 590 21.111 17.851 12.411 1.00 0.00 O -ATOM 1772 HW1 SOL 590 21.681 17.201 12.911 1.00 0.00 H -ATOM 1773 HW2 SOL 590 20.951 17.521 11.481 1.00 0.00 H -ATOM 1774 OW SOL 591 28.021 16.981 9.040 1.00 0.00 O -ATOM 1775 HW1 SOL 591 28.821 16.411 9.250 1.00 0.00 H -ATOM 1776 HW2 SOL 591 27.531 16.581 8.270 1.00 0.00 H -ATOM 1777 OW SOL 592 22.441 7.000 4.800 1.00 0.00 O -ATOM 1778 HW1 SOL 592 22.891 6.100 4.770 1.00 0.00 H -ATOM 1779 HW2 SOL 592 21.501 6.890 5.130 1.00 0.00 H -ATOM 1780 OW SOL 593 24.761 1.220 1.170 1.00 0.00 O -ATOM 1781 HW1 SOL 593 25.741 1.000 1.240 1.00 0.00 H -ATOM 1782 HW2 SOL 593 24.451 1.050 0.240 1.00 0.00 H -ATOM 1783 OW SOL 594 26.431 2.640 17.491 1.00 0.00 O -ATOM 1784 HW1 SOL 594 27.101 2.030 17.921 1.00 0.00 H -ATOM 1785 HW2 SOL 594 25.701 2.830 18.141 1.00 0.00 H -ATOM 1786 OW SOL 595 27.501 15.141 11.951 1.00 0.00 O -ATOM 1787 HW1 SOL 595 27.271 14.891 11.011 1.00 0.00 H -ATOM 1788 HW2 SOL 595 28.111 14.451 12.341 1.00 0.00 H -ATOM 1789 OW SOL 596 26.651 14.021 9.240 1.00 0.00 O -ATOM 1790 HW1 SOL 596 27.551 14.161 8.820 1.00 0.00 H -ATOM 1791 HW2 SOL 596 25.941 14.041 8.530 1.00 0.00 H -ATOM 1792 OW SOL 597 27.841 5.030 8.990 1.00 0.00 O -ATOM 1793 HW1 SOL 597 27.591 4.940 8.030 1.00 0.00 H -ATOM 1794 HW2 SOL 597 28.321 4.210 9.300 1.00 0.00 H -ATOM 1795 OW SOL 598 24.011 0.640 5.120 1.00 0.00 O -ATOM 1796 HW1 SOL 598 23.201 0.650 5.700 1.00 0.00 H -ATOM 1797 HW2 SOL 598 24.041 1.470 4.570 1.00 0.00 H -ATOM 1798 OW SOL 599 1.731 11.881 0.410 1.00 0.00 O -ATOM 1799 HW1 SOL 599 2.051 11.121 0.980 1.00 0.00 H -ATOM 1800 HW2 SOL 599 0.811 12.151 0.710 1.00 0.00 H -ATOM 1801 OW SOL 600 21.591 0.350 1.710 1.00 0.00 O -ATOM 1802 HW1 SOL 600 22.081 1.190 1.500 1.00 0.00 H -ATOM 1803 HW2 SOL 600 22.211 -0.300 2.160 1.00 0.00 H -ATOM 1804 OW SOL 601 27.971 2.360 4.800 1.00 0.00 O -ATOM 1805 HW1 SOL 601 27.491 2.770 4.020 1.00 0.00 H -ATOM 1806 HW2 SOL 601 28.961 2.340 4.610 1.00 0.00 H -ATOM 1807 OW SOL 602 29.381 6.830 14.641 1.00 0.00 O -ATOM 1808 HW1 SOL 602 28.581 6.220 14.671 1.00 0.00 H -ATOM 1809 HW2 SOL 602 30.191 6.300 14.401 1.00 0.00 H -ATOM 1810 OW SOL 603 30.891 15.701 7.930 1.00 0.00 O -ATOM 1811 HW1 SOL 603 31.101 16.441 7.280 1.00 0.00 H -ATOM 1812 HW2 SOL 603 31.571 15.701 8.660 1.00 0.00 H -ATOM 1813 OW SOL 604 23.211 11.521 7.410 1.00 0.00 O -ATOM 1814 HW1 SOL 604 22.501 11.251 8.060 1.00 0.00 H -ATOM 1815 HW2 SOL 604 22.951 11.241 6.480 1.00 0.00 H -ATOM 1816 OW SOL 605 0.101 17.971 5.910 1.00 0.00 O -ATOM 1817 HW1 SOL 605 0.541 18.611 5.270 1.00 0.00 H -ATOM 1818 HW2 SOL 605 -0.399 18.491 6.610 1.00 0.00 H -ATOM 1819 OW SOL 606 28.941 5.490 0.160 1.00 0.00 O -ATOM 1820 HW1 SOL 606 28.531 6.310 -0.230 1.00 0.00 H -ATOM 1821 HW2 SOL 606 29.581 5.750 0.890 1.00 0.00 H -ATOM 1822 OW SOL 607 19.401 5.560 13.861 1.00 0.00 O -ATOM 1823 HW1 SOL 607 20.321 5.550 13.451 1.00 0.00 H -ATOM 1824 HW2 SOL 607 19.341 6.300 14.531 1.00 0.00 H -ATOM 1825 OW SOL 608 24.231 2.220 11.471 1.00 0.00 O -ATOM 1826 HW1 SOL 608 24.611 1.380 11.841 1.00 0.00 H -ATOM 1827 HW2 SOL 608 23.351 2.410 11.911 1.00 0.00 H -ATOM 1828 OW SOL 609 27.281 4.540 6.420 1.00 0.00 O -ATOM 1829 HW1 SOL 609 26.961 5.260 5.800 1.00 0.00 H -ATOM 1830 HW2 SOL 609 27.521 3.730 5.890 1.00 0.00 H -ATOM 1831 OW SOL 610 28.791 0.390 7.530 1.00 0.00 O -ATOM 1832 HW1 SOL 610 28.071 0.440 6.840 1.00 0.00 H -ATOM 1833 HW2 SOL 610 28.551 -0.300 8.220 1.00 0.00 H -ATOM 1834 OW SOL 611 23.501 13.851 1.740 1.00 0.00 O -ATOM 1835 HW1 SOL 611 22.631 13.701 2.210 1.00 0.00 H -ATOM 1836 HW2 SOL 611 23.331 14.111 0.790 1.00 0.00 H -ATOM 1837 OW SOL 612 23.891 2.560 3.280 1.00 0.00 O -ATOM 1838 HW1 SOL 612 24.161 1.970 2.530 1.00 0.00 H -ATOM 1839 HW2 SOL 612 23.891 3.510 2.970 1.00 0.00 H -ATOM 1840 OW SOL 613 29.261 13.471 13.401 1.00 0.00 O -ATOM 1841 HW1 SOL 613 28.461 13.241 13.951 1.00 0.00 H -ATOM 1842 HW2 SOL 613 30.091 13.211 13.891 1.00 0.00 H -ATOM 1843 OW SOL 614 29.731 11.951 11.001 1.00 0.00 O -ATOM 1844 HW1 SOL 614 29.331 12.391 11.811 1.00 0.00 H -ATOM 1845 HW2 SOL 614 29.321 12.321 10.171 1.00 0.00 H -ATOM 1846 OW SOL 615 27.771 0.890 14.021 1.00 0.00 O -ATOM 1847 HW1 SOL 615 28.021 0.690 13.071 1.00 0.00 H -ATOM 1848 HW2 SOL 615 28.491 1.450 14.441 1.00 0.00 H -ATOM 1849 OW SOL 616 28.421 11.161 17.191 1.00 0.00 O -ATOM 1850 HW1 SOL 616 27.431 11.221 17.291 1.00 0.00 H -ATOM 1851 HW2 SOL 616 28.651 10.361 16.631 1.00 0.00 H -ATOM 1852 OW SOL 617 25.671 10.501 3.680 1.00 0.00 O -ATOM 1853 HW1 SOL 617 25.531 10.571 4.670 1.00 0.00 H -ATOM 1854 HW2 SOL 617 26.511 9.991 3.500 1.00 0.00 H -ATOM 1855 OW SOL 618 22.721 8.130 12.511 1.00 0.00 O -ATOM 1856 HW1 SOL 618 23.581 8.250 13.011 1.00 0.00 H -ATOM 1857 HW2 SOL 618 22.301 7.260 12.781 1.00 0.00 H -ATOM 1858 OW SOL 619 0.131 3.860 12.621 1.00 0.00 O -ATOM 1859 HW1 SOL 619 0.341 4.600 13.261 1.00 0.00 H -ATOM 1860 HW2 SOL 619 -0.759 4.030 12.191 1.00 0.00 H -ATOM 1861 OW SOL 620 19.261 15.641 13.311 1.00 0.00 O -ATOM 1862 HW1 SOL 620 18.801 16.461 12.971 1.00 0.00 H -ATOM 1863 HW2 SOL 620 20.241 15.831 13.401 1.00 0.00 H -ATOM 1864 OW SOL 621 22.291 11.001 5.010 1.00 0.00 O -ATOM 1865 HW1 SOL 621 22.221 11.831 4.450 1.00 0.00 H -ATOM 1866 HW2 SOL 621 22.331 10.201 4.410 1.00 0.00 H -ATOM 1867 OW SOL 622 24.281 5.370 8.650 1.00 0.00 O -ATOM 1868 HW1 SOL 622 24.401 6.030 7.910 1.00 0.00 H -ATOM 1869 HW2 SOL 622 24.741 5.710 9.480 1.00 0.00 H -ATOM 1870 OW SOL 623 31.141 13.481 3.880 1.00 0.00 O -ATOM 1871 HW1 SOL 623 31.641 14.251 4.280 1.00 0.00 H -ATOM 1872 HW2 SOL 623 30.191 13.501 4.200 1.00 0.00 H -ATOM 1873 OW SOL 624 22.161 15.101 13.291 1.00 0.00 O -ATOM 1874 HW1 SOL 624 21.951 14.661 12.421 1.00 0.00 H -ATOM 1875 HW2 SOL 624 23.131 15.361 13.321 1.00 0.00 H -ATOM 1876 OW SOL 625 22.641 7.510 15.981 1.00 0.00 O -ATOM 1877 HW1 SOL 625 23.321 8.060 15.511 1.00 0.00 H -ATOM 1878 HW2 SOL 625 23.041 6.630 16.251 1.00 0.00 H -ATOM 1879 OW SOL 626 28.751 1.050 17.701 1.00 0.00 O -ATOM 1880 HW1 SOL 626 28.811 1.900 17.181 1.00 0.00 H -ATOM 1881 HW2 SOL 626 29.071 0.290 17.131 1.00 0.00 H -ATOM 1882 OW SOL 627 23.661 0.500 17.401 1.00 0.00 O -ATOM 1883 HW1 SOL 627 23.241 -0.070 16.701 1.00 0.00 H -ATOM 1884 HW2 SOL 627 23.001 1.190 17.721 1.00 0.00 H -ATOM 1885 OW SOL 628 24.351 8.700 10.291 1.00 0.00 O -ATOM 1886 HW1 SOL 628 24.791 9.590 10.201 1.00 0.00 H -ATOM 1887 HW2 SOL 628 23.721 8.700 11.061 1.00 0.00 H -ATOM 1888 OW SOL 629 0.991 8.620 10.451 1.00 0.00 O -ATOM 1889 HW1 SOL 629 0.241 8.620 9.791 1.00 0.00 H -ATOM 1890 HW2 SOL 629 1.361 7.700 10.541 1.00 0.00 H -ATOM 1891 OW SOL 630 30.711 5.250 2.750 1.00 0.00 O -ATOM 1892 HW1 SOL 630 30.841 4.410 3.290 1.00 0.00 H -ATOM 1893 HW2 SOL 630 30.421 5.990 3.350 1.00 0.00 H -ATOM 1894 OW SOL 631 21.691 2.130 12.311 1.00 0.00 O -ATOM 1895 HW1 SOL 631 21.461 2.500 13.211 1.00 0.00 H -ATOM 1896 HW2 SOL 631 21.391 1.180 12.251 1.00 0.00 H -ATOM 1897 OW SOL 632 18.991 13.101 12.821 1.00 0.00 O -ATOM 1898 HW1 SOL 632 19.521 12.611 13.501 1.00 0.00 H -ATOM 1899 HW2 SOL 632 19.211 14.081 12.871 1.00 0.00 H -ATOM 1900 OW SOL 633 25.941 6.340 10.641 1.00 0.00 O -ATOM 1901 HW1 SOL 633 26.531 6.080 9.881 1.00 0.00 H -ATOM 1902 HW2 SOL 633 25.661 7.300 10.531 1.00 0.00 H -ATOM 1903 OW SOL 634 21.691 0.630 6.180 1.00 0.00 O -ATOM 1904 HW1 SOL 634 21.581 1.570 6.510 1.00 0.00 H -ATOM 1905 HW2 SOL 634 21.641 0.000 6.950 1.00 0.00 H -ATOM 1906 OW SOL 635 28.851 7.660 9.661 1.00 0.00 O -ATOM 1907 HW1 SOL 635 29.001 7.870 10.621 1.00 0.00 H -ATOM 1908 HW2 SOL 635 28.551 6.710 9.571 1.00 0.00 H -ATOM 1909 OW SOL 636 28.421 15.731 17.001 1.00 0.00 O -ATOM 1910 HW1 SOL 636 28.221 16.171 16.121 1.00 0.00 H -ATOM 1911 HW2 SOL 636 28.811 14.821 16.841 1.00 0.00 H -ATOM 1912 OW SOL 637 22.121 8.980 18.041 1.00 0.00 O -ATOM 1913 HW1 SOL 637 22.881 9.420 18.521 1.00 0.00 H -ATOM 1914 HW2 SOL 637 22.471 8.510 17.221 1.00 0.00 H -ATOM 1915 OW SOL 638 29.301 13.331 8.490 1.00 0.00 O -ATOM 1916 HW1 SOL 638 29.371 12.491 7.940 1.00 0.00 H -ATOM 1917 HW2 SOL 638 29.921 14.021 8.130 1.00 0.00 H -ATOM 1918 OW SOL 639 21.811 8.100 9.491 1.00 0.00 O -ATOM 1919 HW1 SOL 639 22.741 8.460 9.541 1.00 0.00 H -ATOM 1920 HW2 SOL 639 21.751 7.250 10.011 1.00 0.00 H -ATOM 1921 OW SOL 640 22.011 5.090 10.061 1.00 0.00 O -ATOM 1922 HW1 SOL 640 21.491 4.260 9.891 1.00 0.00 H -ATOM 1923 HW2 SOL 640 22.781 5.140 9.421 1.00 0.00 H -ATOM 1924 OW SOL 641 30.001 3.800 16.781 1.00 0.00 O -ATOM 1925 HW1 SOL 641 29.551 4.430 17.421 1.00 0.00 H -ATOM 1926 HW2 SOL 641 30.931 4.110 16.611 1.00 0.00 H -ATOM 1927 OW SOL 642 30.221 2.070 14.771 1.00 0.00 O -ATOM 1928 HW1 SOL 642 30.221 2.710 15.541 1.00 0.00 H -ATOM 1929 HW2 SOL 642 30.501 2.550 13.941 1.00 0.00 H -ATOM 1930 OW SOL 643 18.701 13.261 2.000 1.00 0.00 O -ATOM 1931 HW1 SOL 643 17.771 13.471 1.690 1.00 0.00 H -ATOM 1932 HW2 SOL 643 18.801 12.271 2.130 1.00 0.00 H -ATOM 1933 OW SOL 644 19.501 18.011 9.270 1.00 0.00 O -ATOM 1934 HW1 SOL 644 19.081 17.151 9.000 1.00 0.00 H -ATOM 1935 HW2 SOL 644 20.441 18.041 8.930 1.00 0.00 H -ATOM 1936 OW SOL 645 23.661 15.681 9.100 1.00 0.00 O -ATOM 1937 HW1 SOL 645 24.321 16.421 9.190 1.00 0.00 H -ATOM 1938 HW2 SOL 645 24.101 14.891 8.680 1.00 0.00 H -ATOM 1939 OW SOL 646 28.641 7.960 12.381 1.00 0.00 O -ATOM 1940 HW1 SOL 646 29.051 7.640 13.241 1.00 0.00 H -ATOM 1941 HW2 SOL 646 27.681 7.690 12.351 1.00 0.00 H -ATOM 1942 OW SOL 647 19.021 5.440 11.141 1.00 0.00 O -ATOM 1943 HW1 SOL 647 19.871 5.110 10.731 1.00 0.00 H -ATOM 1944 HW2 SOL 647 19.151 5.590 12.121 1.00 0.00 H -ATOM 1945 OW SOL 648 20.511 5.200 17.221 1.00 0.00 O -ATOM 1946 HW1 SOL 648 21.101 4.800 16.521 1.00 0.00 H -ATOM 1947 HW2 SOL 648 19.931 5.910 16.811 1.00 0.00 H -ATOM 1948 OW SOL 649 26.771 5.720 3.250 1.00 0.00 O -ATOM 1949 HW1 SOL 649 26.841 4.830 2.790 1.00 0.00 H -ATOM 1950 HW2 SOL 649 25.831 6.060 3.170 1.00 0.00 H -ATOM 1951 OW SOL 650 21.141 15.641 17.441 1.00 0.00 O -ATOM 1952 HW1 SOL 650 20.841 16.211 18.201 1.00 0.00 H -ATOM 1953 HW2 SOL 650 21.071 14.671 17.701 1.00 0.00 H -ATOM 1954 OW SOL 651 25.331 4.640 12.691 1.00 0.00 O -ATOM 1955 HW1 SOL 651 24.991 3.750 12.391 1.00 0.00 H -ATOM 1956 HW2 SOL 651 25.591 5.180 11.891 1.00 0.00 H -ATOM 1957 OW SOL 652 27.921 16.781 14.651 1.00 0.00 O -ATOM 1958 HW1 SOL 652 27.681 16.601 13.701 1.00 0.00 H -ATOM 1959 HW2 SOL 652 28.221 17.721 14.751 1.00 0.00 H -ATOM 1960 OW SOL 653 23.351 5.000 1.910 1.00 0.00 O -ATOM 1961 HW1 SOL 653 23.961 5.800 1.950 1.00 0.00 H -ATOM 1962 HW2 SOL 653 22.401 5.310 1.980 1.00 0.00 H -ATOM 1963 OW SOL 654 20.211 11.371 14.661 1.00 0.00 O -ATOM 1964 HW1 SOL 654 20.431 10.761 15.421 1.00 0.00 H -ATOM 1965 HW2 SOL 654 20.311 10.881 13.801 1.00 0.00 H -ATOM 1966 OW SOL 655 0.861 10.591 12.341 1.00 0.00 O -ATOM 1967 HW1 SOL 655 1.101 9.961 11.601 1.00 0.00 H -ATOM 1968 HW2 SOL 655 -0.039 10.991 12.161 1.00 0.00 H -ATOM 1969 OW SOL 656 31.141 17.311 11.281 1.00 0.00 O -ATOM 1970 HW1 SOL 656 31.981 17.361 10.741 1.00 0.00 H -ATOM 1971 HW2 SOL 656 30.911 16.351 11.461 1.00 0.00 H -ATOM 1972 OW SOL 657 19.451 12.581 10.221 1.00 0.00 O -ATOM 1973 HW1 SOL 657 19.401 12.571 11.221 1.00 0.00 H -ATOM 1974 HW2 SOL 657 18.621 12.171 9.841 1.00 0.00 H -ATOM 1975 OW SOL 658 25.501 16.621 17.161 1.00 0.00 O -ATOM 1976 HW1 SOL 658 24.941 17.431 17.251 1.00 0.00 H -ATOM 1977 HW2 SOL 658 26.021 16.661 16.301 1.00 0.00 H -ATOM 1978 OW SOL 659 27.651 0.860 1.330 1.00 0.00 O -ATOM 1979 HW1 SOL 659 28.161 0.870 0.470 1.00 0.00 H -ATOM 1980 HW2 SOL 659 28.211 0.440 2.040 1.00 0.00 H -ATOM 1981 OW SOL 660 1.271 15.731 4.770 1.00 0.00 O -ATOM 1982 HW1 SOL 660 1.941 15.851 4.030 1.00 0.00 H -ATOM 1983 HW2 SOL 660 0.871 16.621 5.000 1.00 0.00 H -ATOM 1984 OW SOL 661 19.921 17.941 18.511 1.00 0.00 O -ATOM 1985 HW1 SOL 661 19.511 17.201 19.041 1.00 0.00 H -ATOM 1986 HW2 SOL 661 20.561 18.451 19.091 1.00 0.00 H -ATOM 1987 OW SOL 662 0.191 9.270 6.720 1.00 0.00 O -ATOM 1988 HW1 SOL 662 0.791 8.460 6.740 1.00 0.00 H -ATOM 1989 HW2 SOL 662 0.591 9.960 6.120 1.00 0.00 H -ATOM 1990 OW SOL 663 26.921 12.731 14.221 1.00 0.00 O -ATOM 1991 HW1 SOL 663 26.871 13.061 15.171 1.00 0.00 H -ATOM 1992 HW2 SOL 663 26.061 12.921 13.761 1.00 0.00 H -ATOM 1993 OW SOL 664 25.341 16.161 1.540 1.00 0.00 O -ATOM 1994 HW1 SOL 664 25.431 16.261 0.550 1.00 0.00 H -ATOM 1995 HW2 SOL 664 24.941 15.271 1.750 1.00 0.00 H -ATOM 1996 OW SOL 665 21.251 3.260 7.200 1.00 0.00 O -ATOM 1997 HW1 SOL 665 20.461 3.770 6.860 1.00 0.00 H -ATOM 1998 HW2 SOL 665 21.161 3.110 8.180 1.00 0.00 H -ATOM 1999 OW SOL 666 30.561 16.121 0.310 1.00 0.00 O -ATOM 2000 HW1 SOL 666 30.621 15.191 0.680 1.00 0.00 H -ATOM 2001 HW2 SOL 666 29.971 16.121 -0.490 1.00 0.00 H -ATOM 2002 OW SOL 667 26.841 10.021 13.721 1.00 0.00 O -ATOM 2003 HW1 SOL 667 27.241 10.011 12.801 1.00 0.00 H -ATOM 2004 HW2 SOL 667 26.941 10.941 14.121 1.00 0.00 H -ATOM 2005 OW SOL 668 27.781 9.100 2.910 1.00 0.00 O -ATOM 2006 HW1 SOL 668 28.411 9.480 2.230 1.00 0.00 H -ATOM 2007 HW2 SOL 668 28.181 8.270 3.300 1.00 0.00 H -ATOM 2008 OW SOL 669 22.341 12.881 14.901 1.00 0.00 O -ATOM 2009 HW1 SOL 669 22.211 13.811 14.561 1.00 0.00 H -ATOM 2010 HW2 SOL 669 21.501 12.361 14.771 1.00 0.00 H -ATOM 2011 OW SOL 670 29.011 10.981 6.960 1.00 0.00 O -ATOM 2012 HW1 SOL 670 28.311 10.511 7.500 1.00 0.00 H -ATOM 2013 HW2 SOL 670 29.601 10.301 6.530 1.00 0.00 H -ATOM 2014 OW SOL 671 28.761 2.360 9.711 1.00 0.00 O -ATOM 2015 HW1 SOL 671 28.681 2.000 8.781 1.00 0.00 H -ATOM 2016 HW2 SOL 671 28.741 1.600 10.361 1.00 0.00 H -ATOM 2017 OW SOL 672 24.521 14.871 4.910 1.00 0.00 O -ATOM 2018 HW1 SOL 672 24.941 14.291 4.210 1.00 0.00 H -ATOM 2019 HW2 SOL 672 24.081 15.661 4.470 1.00 0.00 H -ATOM 2020 OW SOL 673 21.171 13.481 2.900 1.00 0.00 O -ATOM 2021 HW1 SOL 673 20.211 13.491 2.630 1.00 0.00 H -ATOM 2022 HW2 SOL 673 21.291 14.011 3.740 1.00 0.00 H -ATOM 2023 OW SOL 674 19.671 10.131 17.261 1.00 0.00 O -ATOM 2024 HW1 SOL 674 18.901 9.801 17.801 1.00 0.00 H -ATOM 2025 HW2 SOL 674 20.521 9.831 17.681 1.00 0.00 H -ATOM 2026 OW SOL 675 25.341 2.030 14.891 1.00 0.00 O -ATOM 2027 HW1 SOL 675 26.241 1.870 14.491 1.00 0.00 H -ATOM 2028 HW2 SOL 675 25.421 2.080 15.881 1.00 0.00 H -ATOM 2029 OW SOL 676 19.341 1.660 3.180 1.00 0.00 O -ATOM 2030 HW1 SOL 676 19.171 2.490 2.640 1.00 0.00 H -ATOM 2031 HW2 SOL 676 20.241 1.290 2.960 1.00 0.00 H -ATOM 2032 OW SOL 677 30.451 13.351 1.190 1.00 0.00 O -ATOM 2033 HW1 SOL 677 29.461 13.241 1.210 1.00 0.00 H -ATOM 2034 HW2 SOL 677 30.791 13.501 2.120 1.00 0.00 H -ATOM 2035 OW SOL 678 24.751 8.420 14.311 1.00 0.00 O -ATOM 2036 HW1 SOL 678 25.311 9.230 14.141 1.00 0.00 H -ATOM 2037 HW2 SOL 678 25.341 7.620 14.341 1.00 0.00 H -ATOM 2038 OW SOL 679 25.781 5.650 17.081 1.00 0.00 O -ATOM 2039 HW1 SOL 679 25.971 6.300 17.821 1.00 0.00 H -ATOM 2040 HW2 SOL 679 26.381 4.850 17.171 1.00 0.00 H -ATOM 2041 OW SOL 680 22.521 17.411 15.601 1.00 0.00 O -ATOM 2042 HW1 SOL 680 21.611 17.821 15.581 1.00 0.00 H -ATOM 2043 HW2 SOL 680 22.451 16.471 15.921 1.00 0.00 H -ATOM 2044 OW SOL 681 30.871 3.250 4.490 1.00 0.00 O -ATOM 2045 HW1 SOL 681 31.521 2.510 4.380 1.00 0.00 H -ATOM 2046 HW2 SOL 681 31.071 3.750 5.330 1.00 0.00 H -ATOM 2047 OW SOL 682 24.561 7.450 6.520 1.00 0.00 O -ATOM 2048 HW1 SOL 682 25.061 8.300 6.330 1.00 0.00 H -ATOM 2049 HW2 SOL 682 23.681 7.470 6.040 1.00 0.00 H -ATOM 2050 OW SOL 683 27.211 13.741 0.160 1.00 0.00 O -ATOM 2051 HW1 SOL 683 26.751 13.891 1.040 1.00 0.00 H -ATOM 2052 HW2 SOL 683 27.651 14.591 -0.140 1.00 0.00 H -ATOM 2053 OW SOL 684 25.231 17.901 9.531 1.00 0.00 O -ATOM 2054 HW1 SOL 684 24.771 18.781 9.401 1.00 0.00 H -ATOM 2055 HW2 SOL 684 26.221 18.021 9.461 1.00 0.00 H -ATOM 2056 OW SOL 685 1.471 18.511 17.201 1.00 0.00 O -ATOM 2057 HW1 SOL 685 0.511 18.401 16.931 1.00 0.00 H -ATOM 2058 HW2 SOL 685 2.031 17.841 16.721 1.00 0.00 H -ATOM 2059 OW SOL 686 27.211 9.561 8.610 1.00 0.00 O -ATOM 2060 HW1 SOL 686 27.751 8.871 9.090 1.00 0.00 H -ATOM 2061 HW2 SOL 686 26.891 10.251 9.270 1.00 0.00 H -ATOM 2062 OW SOL 687 29.451 9.841 0.870 1.00 0.00 O -ATOM 2063 HW1 SOL 687 29.221 10.371 0.050 1.00 0.00 H -ATOM 2064 HW2 SOL 687 30.261 9.281 0.680 1.00 0.00 H -ATOM 2065 OW SOL 688 20.831 13.141 18.441 1.00 0.00 O -ATOM 2066 HW1 SOL 688 20.181 12.411 18.231 1.00 0.00 H -ATOM 2067 HW2 SOL 688 20.871 13.281 19.421 1.00 0.00 H -ATOM 2068 OW SOL 689 19.411 12.401 6.530 1.00 0.00 O -ATOM 2069 HW1 SOL 689 19.401 11.931 7.410 1.00 0.00 H -ATOM 2070 HW2 SOL 689 20.231 12.121 6.020 1.00 0.00 H -ATOM 2071 OW SOL 690 25.341 13.911 16.241 1.00 0.00 O -ATOM 2072 HW1 SOL 690 24.561 13.411 16.621 1.00 0.00 H -ATOM 2073 HW2 SOL 690 25.311 14.861 16.551 1.00 0.00 H -ATOM 2074 OW SOL 691 22.901 4.240 5.200 1.00 0.00 O -ATOM 2075 HW1 SOL 691 23.201 3.520 4.580 1.00 0.00 H -ATOM 2076 HW2 SOL 691 22.511 3.840 6.030 1.00 0.00 H -ATOM 2077 OW SOL 692 21.791 5.470 12.801 1.00 0.00 O -ATOM 2078 HW1 SOL 692 22.171 4.880 13.521 1.00 0.00 H -ATOM 2079 HW2 SOL 692 22.191 5.210 11.921 1.00 0.00 H -ATOM 2080 OW SOL 693 26.741 15.861 6.870 1.00 0.00 O -ATOM 2081 HW1 SOL 693 27.061 15.961 5.930 1.00 0.00 H -ATOM 2082 HW2 SOL 693 25.951 15.241 6.890 1.00 0.00 H -ATOM 2083 OW SOL 694 1.631 2.140 11.121 1.00 0.00 O -ATOM 2084 HW1 SOL 694 2.151 1.490 11.671 1.00 0.00 H -ATOM 2085 HW2 SOL 694 1.141 2.770 11.731 1.00 0.00 H -ATOM 2086 OW SOL 695 28.631 0.340 11.541 1.00 0.00 O -ATOM 2087 HW1 SOL 695 28.001 -0.380 11.231 1.00 0.00 H -ATOM 2088 HW2 SOL 695 29.561 -0.020 11.541 1.00 0.00 H -ATOM 2089 OW SOL 696 26.321 13.301 3.010 1.00 0.00 O -ATOM 2090 HW1 SOL 696 25.861 12.431 3.180 1.00 0.00 H -ATOM 2091 HW2 SOL 696 27.231 13.271 3.420 1.00 0.00 H -ATOM 2092 OW SOL 697 24.801 15.671 12.841 1.00 0.00 O -ATOM 2093 HW1 SOL 697 24.751 16.491 13.411 1.00 0.00 H -ATOM 2094 HW2 SOL 697 25.691 15.641 12.391 1.00 0.00 H -ATOM 2095 OW SOL 698 0.391 4.530 6.910 1.00 0.00 O -ATOM 2096 HW1 SOL 698 -0.199 5.330 6.950 1.00 0.00 H -ATOM 2097 HW2 SOL 698 0.541 4.180 7.840 1.00 0.00 H -ATOM 2098 OW SOL 699 19.011 10.771 3.000 1.00 0.00 O -ATOM 2099 HW1 SOL 699 20.001 10.661 2.910 1.00 0.00 H -ATOM 2100 HW2 SOL 699 18.611 9.911 3.320 1.00 0.00 H -ATOM 2101 OW SOL 700 27.371 16.461 3.370 1.00 0.00 O -ATOM 2102 HW1 SOL 700 26.601 16.111 2.830 1.00 0.00 H -ATOM 2103 HW2 SOL 700 27.051 17.171 3.990 1.00 0.00 H -ATOM 2104 OW SOL 701 20.921 6.280 19.751 1.00 0.00 O -ATOM 2105 HW1 SOL 701 19.991 6.260 20.121 1.00 0.00 H -ATOM 2106 HW2 SOL 701 20.931 5.890 18.831 1.00 0.00 H -ATOM 2107 OW SOL 702 20.871 2.750 28.581 1.00 0.00 O -ATOM 2108 HW1 SOL 702 21.221 2.580 29.501 1.00 0.00 H -ATOM 2109 HW2 SOL 702 19.991 2.300 28.461 1.00 0.00 H -ATOM 2110 OW SOL 703 18.811 3.680 25.091 1.00 0.00 O -ATOM 2111 HW1 SOL 703 17.991 4.110 25.481 1.00 0.00 H -ATOM 2112 HW2 SOL 703 18.531 2.950 24.461 1.00 0.00 H -ATOM 2113 OW SOL 704 24.311 12.751 30.271 1.00 0.00 O -ATOM 2114 HW1 SOL 704 23.381 12.681 29.901 1.00 0.00 H -ATOM 2115 HW2 SOL 704 24.421 13.641 30.711 1.00 0.00 H -ATOM 2116 OW SOL 705 29.971 7.030 25.791 1.00 0.00 O -ATOM 2117 HW1 SOL 705 30.541 7.810 25.541 1.00 0.00 H -ATOM 2118 HW2 SOL 705 29.371 7.290 26.551 1.00 0.00 H -ATOM 2119 OW SOL 706 26.301 11.441 28.851 1.00 0.00 O -ATOM 2120 HW1 SOL 706 25.521 11.611 29.451 1.00 0.00 H -ATOM 2121 HW2 SOL 706 26.641 12.311 28.491 1.00 0.00 H -ATOM 2122 OW SOL 707 25.471 10.121 25.271 1.00 0.00 O -ATOM 2123 HW1 SOL 707 26.161 9.961 25.971 1.00 0.00 H -ATOM 2124 HW2 SOL 707 24.741 10.691 25.651 1.00 0.00 H -ATOM 2125 OW SOL 708 21.971 14.351 29.231 1.00 0.00 O -ATOM 2126 HW1 SOL 708 21.191 14.041 28.701 1.00 0.00 H -ATOM 2127 HW2 SOL 708 22.551 14.931 28.661 1.00 0.00 H -ATOM 2128 OW SOL 709 1.991 15.051 0.781 1.00 0.00 O -ATOM 2129 HW1 SOL 709 2.231 15.991 1.041 1.00 0.00 H -ATOM 2130 HW2 SOL 709 1.831 14.511 1.601 1.00 0.00 H -ATOM 2131 OW SOL 710 20.931 17.131 23.451 1.00 0.00 O -ATOM 2132 HW1 SOL 710 21.271 17.901 23.991 1.00 0.00 H -ATOM 2133 HW2 SOL 710 21.371 17.131 22.551 1.00 0.00 H -ATOM 2134 OW SOL 711 20.921 14.341 24.001 1.00 0.00 O -ATOM 2135 HW1 SOL 711 20.661 15.301 24.001 1.00 0.00 H -ATOM 2136 HW2 SOL 711 20.211 13.801 24.451 1.00 0.00 H -ATOM 2137 OW SOL 712 21.021 10.911 27.481 1.00 0.00 O -ATOM 2138 HW1 SOL 712 21.161 10.071 28.001 1.00 0.00 H -ATOM 2139 HW2 SOL 712 20.471 11.551 28.031 1.00 0.00 H -ATOM 2140 OW SOL 713 24.681 9.641 19.851 1.00 0.00 O -ATOM 2141 HW1 SOL 713 24.751 10.481 19.311 1.00 0.00 H -ATOM 2142 HW2 SOL 713 25.141 9.771 20.731 1.00 0.00 H -ATOM 2143 OW SOL 714 19.841 6.430 24.251 1.00 0.00 O -ATOM 2144 HW1 SOL 714 19.391 5.550 24.421 1.00 0.00 H -ATOM 2145 HW2 SOL 714 19.831 6.970 25.091 1.00 0.00 H -ATOM 2146 OW SOL 715 18.891 15.961 19.791 1.00 0.00 O -ATOM 2147 HW1 SOL 715 18.701 15.001 20.001 1.00 0.00 H -ATOM 2148 HW2 SOL 715 18.561 16.541 20.541 1.00 0.00 H -ATOM 2149 OW SOL 716 24.751 13.651 25.881 1.00 0.00 O -ATOM 2150 HW1 SOL 716 24.261 12.781 25.971 1.00 0.00 H -ATOM 2151 HW2 SOL 716 24.521 14.081 25.011 1.00 0.00 H -ATOM 2152 OW SOL 717 26.711 0.040 23.641 1.00 0.00 O -ATOM 2153 HW1 SOL 717 27.111 0.950 23.551 1.00 0.00 H -ATOM 2154 HW2 SOL 717 25.711 0.120 23.701 1.00 0.00 H -ATOM 2155 OW SOL 718 20.591 9.761 0.031 1.00 0.00 O -ATOM 2156 HW1 SOL 718 21.481 9.311 -0.109 1.00 0.00 H -ATOM 2157 HW2 SOL 718 19.861 9.111 -0.159 1.00 0.00 H -ATOM 2158 OW SOL 719 2.051 14.171 28.151 1.00 0.00 O -ATOM 2159 HW1 SOL 719 1.461 14.231 28.951 1.00 0.00 H -ATOM 2160 HW2 SOL 719 1.901 13.291 27.691 1.00 0.00 H -ATOM 2161 OW SOL 720 24.601 7.290 21.321 1.00 0.00 O -ATOM 2162 HW1 SOL 720 24.841 7.980 20.641 1.00 0.00 H -ATOM 2163 HW2 SOL 720 23.821 7.620 21.861 1.00 0.00 H -ATOM 2164 OW SOL 721 0.201 3.450 28.061 1.00 0.00 O -ATOM 2165 HW1 SOL 721 -0.659 2.950 27.931 1.00 0.00 H -ATOM 2166 HW2 SOL 721 0.821 2.910 28.621 1.00 0.00 H -ATOM 2167 OW SOL 722 29.031 7.010 22.911 1.00 0.00 O -ATOM 2168 HW1 SOL 722 29.291 6.970 23.871 1.00 0.00 H -ATOM 2169 HW2 SOL 722 28.181 6.500 22.771 1.00 0.00 H -ATOM 2170 OW SOL 723 19.381 8.110 26.511 1.00 0.00 O -ATOM 2171 HW1 SOL 723 20.371 7.990 26.601 1.00 0.00 H -ATOM 2172 HW2 SOL 723 19.141 9.060 26.721 1.00 0.00 H -ATOM 2173 OW SOL 724 27.271 3.480 20.571 1.00 0.00 O -ATOM 2174 HW1 SOL 724 27.861 4.110 20.081 1.00 0.00 H -ATOM 2175 HW2 SOL 724 27.461 2.540 20.281 1.00 0.00 H -ATOM 2176 OW SOL 725 24.121 1.960 27.471 1.00 0.00 O -ATOM 2177 HW1 SOL 725 24.071 1.910 28.471 1.00 0.00 H -ATOM 2178 HW2 SOL 725 24.141 2.920 27.181 1.00 0.00 H -ATOM 2179 OW SOL 726 28.701 14.561 23.391 1.00 0.00 O -ATOM 2180 HW1 SOL 726 28.241 15.281 22.871 1.00 0.00 H -ATOM 2181 HW2 SOL 726 28.661 14.761 24.371 1.00 0.00 H -ATOM 2182 OW SOL 727 22.131 18.011 27.151 1.00 0.00 O -ATOM 2183 HW1 SOL 727 22.631 17.151 27.211 1.00 0.00 H -ATOM 2184 HW2 SOL 727 22.781 18.781 27.121 1.00 0.00 H -ATOM 2185 OW SOL 728 21.831 9.431 21.041 1.00 0.00 O -ATOM 2186 HW1 SOL 728 22.651 9.821 20.621 1.00 0.00 H -ATOM 2187 HW2 SOL 728 21.561 8.611 20.551 1.00 0.00 H -ATOM 2188 OW SOL 729 29.731 17.761 20.991 1.00 0.00 O -ATOM 2189 HW1 SOL 729 29.131 17.141 21.491 1.00 0.00 H -ATOM 2190 HW2 SOL 729 30.041 17.321 20.141 1.00 0.00 H -ATOM 2191 OW SOL 730 23.261 17.431 21.851 1.00 0.00 O -ATOM 2192 HW1 SOL 730 23.591 17.821 22.711 1.00 0.00 H -ATOM 2193 HW2 SOL 730 24.021 17.361 21.201 1.00 0.00 H -ATOM 2194 OW SOL 731 21.111 17.851 31.031 1.00 0.00 O -ATOM 2195 HW1 SOL 731 21.681 17.201 31.531 1.00 0.00 H -ATOM 2196 HW2 SOL 731 20.951 17.521 30.101 1.00 0.00 H -ATOM 2197 OW SOL 732 28.021 16.981 27.661 1.00 0.00 O -ATOM 2198 HW1 SOL 732 28.821 16.411 27.871 1.00 0.00 H -ATOM 2199 HW2 SOL 732 27.531 16.581 26.891 1.00 0.00 H -ATOM 2200 OW SOL 733 22.441 7.000 23.421 1.00 0.00 O -ATOM 2201 HW1 SOL 733 22.891 6.100 23.391 1.00 0.00 H -ATOM 2202 HW2 SOL 733 21.501 6.890 23.751 1.00 0.00 H -ATOM 2203 OW SOL 734 24.761 1.220 19.791 1.00 0.00 O -ATOM 2204 HW1 SOL 734 25.741 1.000 19.861 1.00 0.00 H -ATOM 2205 HW2 SOL 734 24.451 1.050 18.861 1.00 0.00 H -ATOM 2206 OW SOL 735 0.901 5.900 1.721 1.00 0.00 O -ATOM 2207 HW1 SOL 735 1.181 5.470 2.571 1.00 0.00 H -ATOM 2208 HW2 SOL 735 1.151 6.860 1.731 1.00 0.00 H -ATOM 2209 OW SOL 736 26.651 14.021 27.861 1.00 0.00 O -ATOM 2210 HW1 SOL 736 27.551 14.161 27.441 1.00 0.00 H -ATOM 2211 HW2 SOL 736 25.941 14.041 27.151 1.00 0.00 H -ATOM 2212 OW SOL 737 27.841 5.030 27.611 1.00 0.00 O -ATOM 2213 HW1 SOL 737 27.591 4.940 26.651 1.00 0.00 H -ATOM 2214 HW2 SOL 737 28.321 4.210 27.921 1.00 0.00 H -ATOM 2215 OW SOL 738 24.011 0.640 23.741 1.00 0.00 O -ATOM 2216 HW1 SOL 738 23.201 0.650 24.321 1.00 0.00 H -ATOM 2217 HW2 SOL 738 24.041 1.470 23.191 1.00 0.00 H -ATOM 2218 OW SOL 739 1.731 11.881 19.031 1.00 0.00 O -ATOM 2219 HW1 SOL 739 2.051 11.121 19.601 1.00 0.00 H -ATOM 2220 HW2 SOL 739 0.811 12.151 19.331 1.00 0.00 H -ATOM 2221 OW SOL 740 21.591 0.350 20.331 1.00 0.00 O -ATOM 2222 HW1 SOL 740 22.081 1.190 20.121 1.00 0.00 H -ATOM 2223 HW2 SOL 740 22.211 -0.300 20.781 1.00 0.00 H -ATOM 2224 OW SOL 741 27.971 2.360 23.421 1.00 0.00 O -ATOM 2225 HW1 SOL 741 27.491 2.770 22.641 1.00 0.00 H -ATOM 2226 HW2 SOL 741 28.961 2.340 23.231 1.00 0.00 H -ATOM 2227 OW SOL 742 30.891 15.701 26.551 1.00 0.00 O -ATOM 2228 HW1 SOL 742 31.101 16.441 25.901 1.00 0.00 H -ATOM 2229 HW2 SOL 742 31.571 15.701 27.281 1.00 0.00 H -ATOM 2230 OW SOL 743 23.211 11.521 26.031 1.00 0.00 O -ATOM 2231 HW1 SOL 743 22.501 11.251 26.681 1.00 0.00 H -ATOM 2232 HW2 SOL 743 22.951 11.241 25.101 1.00 0.00 H -ATOM 2233 OW SOL 744 0.101 17.971 24.531 1.00 0.00 O -ATOM 2234 HW1 SOL 744 0.541 18.611 23.891 1.00 0.00 H -ATOM 2235 HW2 SOL 744 -0.399 18.491 25.231 1.00 0.00 H -ATOM 2236 OW SOL 745 28.941 5.490 18.781 1.00 0.00 O -ATOM 2237 HW1 SOL 745 28.531 6.310 18.391 1.00 0.00 H -ATOM 2238 HW2 SOL 745 29.581 5.750 19.511 1.00 0.00 H -ATOM 2239 OW SOL 746 27.281 4.540 25.041 1.00 0.00 O -ATOM 2240 HW1 SOL 746 26.961 5.260 24.421 1.00 0.00 H -ATOM 2241 HW2 SOL 746 27.521 3.730 24.511 1.00 0.00 H -ATOM 2242 OW SOL 747 28.791 0.390 26.151 1.00 0.00 O -ATOM 2243 HW1 SOL 747 28.071 0.440 25.461 1.00 0.00 H -ATOM 2244 HW2 SOL 747 28.551 -0.300 26.841 1.00 0.00 H -ATOM 2245 OW SOL 748 23.501 13.851 20.361 1.00 0.00 O -ATOM 2246 HW1 SOL 748 22.631 13.701 20.831 1.00 0.00 H -ATOM 2247 HW2 SOL 748 23.331 14.111 19.411 1.00 0.00 H -ATOM 2248 OW SOL 749 1.291 5.750 19.401 1.00 0.00 O -ATOM 2249 HW1 SOL 749 0.751 5.540 20.211 1.00 0.00 H -ATOM 2250 HW2 SOL 749 2.201 5.340 19.491 1.00 0.00 H -ATOM 2251 OW SOL 750 23.891 2.560 21.901 1.00 0.00 O -ATOM 2252 HW1 SOL 750 24.161 1.970 21.151 1.00 0.00 H -ATOM 2253 HW2 SOL 750 23.891 3.510 21.591 1.00 0.00 H -ATOM 2254 OW SOL 751 29.731 11.951 29.621 1.00 0.00 O -ATOM 2255 HW1 SOL 751 29.331 12.391 30.431 1.00 0.00 H -ATOM 2256 HW2 SOL 751 29.321 12.321 28.791 1.00 0.00 H -ATOM 2257 OW SOL 752 25.671 10.501 22.301 1.00 0.00 O -ATOM 2258 HW1 SOL 752 25.531 10.571 23.291 1.00 0.00 H -ATOM 2259 HW2 SOL 752 26.511 9.991 22.121 1.00 0.00 H -ATOM 2260 OW SOL 753 22.721 8.130 31.131 1.00 0.00 O -ATOM 2261 HW1 SOL 753 23.581 8.250 31.631 1.00 0.00 H -ATOM 2262 HW2 SOL 753 22.301 7.260 31.401 1.00 0.00 H -ATOM 2263 OW SOL 754 0.131 3.860 0.011 1.00 0.00 O -ATOM 2264 HW1 SOL 754 0.341 4.600 0.651 1.00 0.00 H -ATOM 2265 HW2 SOL 754 -0.759 4.030 -0.419 1.00 0.00 H -ATOM 2266 OW SOL 755 22.291 11.001 23.631 1.00 0.00 O -ATOM 2267 HW1 SOL 755 22.221 11.831 23.071 1.00 0.00 H -ATOM 2268 HW2 SOL 755 22.331 10.201 23.031 1.00 0.00 H -ATOM 2269 OW SOL 756 24.281 5.370 27.271 1.00 0.00 O -ATOM 2270 HW1 SOL 756 24.401 6.030 26.531 1.00 0.00 H -ATOM 2271 HW2 SOL 756 24.741 5.710 28.101 1.00 0.00 H -ATOM 2272 OW SOL 757 31.141 13.481 22.501 1.00 0.00 O -ATOM 2273 HW1 SOL 757 31.641 14.251 22.901 1.00 0.00 H -ATOM 2274 HW2 SOL 757 30.191 13.501 22.821 1.00 0.00 H -ATOM 2275 OW SOL 758 0.111 14.451 30.041 1.00 0.00 O -ATOM 2276 HW1 SOL 758 0.581 14.581 30.911 1.00 0.00 H -ATOM 2277 HW2 SOL 758 -0.549 13.711 30.131 1.00 0.00 H -ATOM 2278 OW SOL 759 24.351 8.700 28.911 1.00 0.00 O -ATOM 2279 HW1 SOL 759 24.791 9.590 28.821 1.00 0.00 H -ATOM 2280 HW2 SOL 759 23.721 8.700 29.681 1.00 0.00 H -ATOM 2281 OW SOL 760 0.991 8.620 29.071 1.00 0.00 O -ATOM 2282 HW1 SOL 760 0.241 8.620 28.411 1.00 0.00 H -ATOM 2283 HW2 SOL 760 1.361 7.700 29.161 1.00 0.00 H -ATOM 2284 OW SOL 761 30.711 5.250 21.371 1.00 0.00 O -ATOM 2285 HW1 SOL 761 30.841 4.410 21.911 1.00 0.00 H -ATOM 2286 HW2 SOL 761 30.421 5.990 21.971 1.00 0.00 H -ATOM 2287 OW SOL 762 21.691 2.130 30.931 1.00 0.00 O -ATOM 2288 HW1 SOL 762 21.461 2.500 31.831 1.00 0.00 H -ATOM 2289 HW2 SOL 762 21.391 1.180 30.871 1.00 0.00 H -ATOM 2290 OW SOL 763 25.941 6.340 29.261 1.00 0.00 O -ATOM 2291 HW1 SOL 763 26.531 6.080 28.501 1.00 0.00 H -ATOM 2292 HW2 SOL 763 25.661 7.300 29.151 1.00 0.00 H -ATOM 2293 OW SOL 764 21.691 0.630 24.801 1.00 0.00 O -ATOM 2294 HW1 SOL 764 21.581 1.570 25.131 1.00 0.00 H -ATOM 2295 HW2 SOL 764 21.641 0.000 25.571 1.00 0.00 H -ATOM 2296 OW SOL 765 28.851 7.660 28.281 1.00 0.00 O -ATOM 2297 HW1 SOL 765 29.001 7.870 29.241 1.00 0.00 H -ATOM 2298 HW2 SOL 765 28.551 6.710 28.191 1.00 0.00 H -ATOM 2299 OW SOL 766 0.421 8.380 19.041 1.00 0.00 O -ATOM 2300 HW1 SOL 766 0.761 7.450 19.191 1.00 0.00 H -ATOM 2301 HW2 SOL 766 0.601 8.650 18.091 1.00 0.00 H -ATOM 2302 OW SOL 767 29.301 13.331 27.111 1.00 0.00 O -ATOM 2303 HW1 SOL 767 29.371 12.491 26.561 1.00 0.00 H -ATOM 2304 HW2 SOL 767 29.921 14.021 26.751 1.00 0.00 H -ATOM 2305 OW SOL 768 21.811 8.100 28.111 1.00 0.00 O -ATOM 2306 HW1 SOL 768 22.741 8.460 28.161 1.00 0.00 H -ATOM 2307 HW2 SOL 768 21.751 7.250 28.631 1.00 0.00 H -ATOM 2308 OW SOL 769 22.011 5.090 28.681 1.00 0.00 O -ATOM 2309 HW1 SOL 769 21.491 4.260 28.511 1.00 0.00 H -ATOM 2310 HW2 SOL 769 22.781 5.140 28.041 1.00 0.00 H -ATOM 2311 OW SOL 770 18.701 13.261 20.621 1.00 0.00 O -ATOM 2312 HW1 SOL 770 17.771 13.471 20.311 1.00 0.00 H -ATOM 2313 HW2 SOL 770 18.801 12.271 20.751 1.00 0.00 H -ATOM 2314 OW SOL 771 19.501 18.011 27.891 1.00 0.00 O -ATOM 2315 HW1 SOL 771 19.081 17.151 27.621 1.00 0.00 H -ATOM 2316 HW2 SOL 771 20.441 18.041 27.551 1.00 0.00 H -ATOM 2317 OW SOL 772 23.661 15.681 27.721 1.00 0.00 O -ATOM 2318 HW1 SOL 772 24.321 16.421 27.811 1.00 0.00 H -ATOM 2319 HW2 SOL 772 24.101 14.891 27.301 1.00 0.00 H -ATOM 2320 OW SOL 773 28.641 7.960 31.001 1.00 0.00 O -ATOM 2321 HW1 SOL 773 29.051 7.640 31.861 1.00 0.00 H -ATOM 2322 HW2 SOL 773 27.681 7.690 30.971 1.00 0.00 H -ATOM 2323 OW SOL 774 19.021 5.440 29.761 1.00 0.00 O -ATOM 2324 HW1 SOL 774 19.871 5.110 29.351 1.00 0.00 H -ATOM 2325 HW2 SOL 774 19.151 5.590 30.741 1.00 0.00 H -ATOM 2326 OW SOL 775 26.771 5.720 21.871 1.00 0.00 O -ATOM 2327 HW1 SOL 775 26.841 4.830 21.411 1.00 0.00 H -ATOM 2328 HW2 SOL 775 25.831 6.060 21.791 1.00 0.00 H -ATOM 2329 OW SOL 776 25.331 4.640 0.081 1.00 0.00 O -ATOM 2330 HW1 SOL 776 24.991 3.750 -0.219 1.00 0.00 H -ATOM 2331 HW2 SOL 776 25.591 5.180 -0.719 1.00 0.00 H -ATOM 2332 OW SOL 777 23.351 5.000 20.531 1.00 0.00 O -ATOM 2333 HW1 SOL 777 23.961 5.800 20.571 1.00 0.00 H -ATOM 2334 HW2 SOL 777 22.401 5.310 20.601 1.00 0.00 H -ATOM 2335 OW SOL 778 19.451 12.581 28.841 1.00 0.00 O -ATOM 2336 HW1 SOL 778 19.401 12.571 29.841 1.00 0.00 H -ATOM 2337 HW2 SOL 778 18.621 12.171 28.461 1.00 0.00 H -ATOM 2338 OW SOL 779 1.271 15.731 23.391 1.00 0.00 O -ATOM 2339 HW1 SOL 779 1.941 15.851 22.651 1.00 0.00 H -ATOM 2340 HW2 SOL 779 0.871 16.621 23.621 1.00 0.00 H -ATOM 2341 OW SOL 780 0.191 9.270 25.341 1.00 0.00 O -ATOM 2342 HW1 SOL 780 0.791 8.460 25.361 1.00 0.00 H -ATOM 2343 HW2 SOL 780 0.591 9.960 24.741 1.00 0.00 H -ATOM 2344 OW SOL 781 25.341 16.161 20.161 1.00 0.00 O -ATOM 2345 HW1 SOL 781 25.431 16.261 19.171 1.00 0.00 H -ATOM 2346 HW2 SOL 781 24.941 15.271 20.371 1.00 0.00 H -ATOM 2347 OW SOL 782 21.251 3.260 25.821 1.00 0.00 O -ATOM 2348 HW1 SOL 782 20.461 3.770 25.481 1.00 0.00 H -ATOM 2349 HW2 SOL 782 21.161 3.110 26.801 1.00 0.00 H -ATOM 2350 OW SOL 783 30.561 16.121 18.931 1.00 0.00 O -ATOM 2351 HW1 SOL 783 30.621 15.191 19.301 1.00 0.00 H -ATOM 2352 HW2 SOL 783 29.971 16.121 18.131 1.00 0.00 H -ATOM 2353 OW SOL 784 26.841 10.021 1.111 1.00 0.00 O -ATOM 2354 HW1 SOL 784 27.241 10.011 0.191 1.00 0.00 H -ATOM 2355 HW2 SOL 784 26.941 10.941 1.511 1.00 0.00 H -ATOM 2356 OW SOL 785 27.781 9.100 21.531 1.00 0.00 O -ATOM 2357 HW1 SOL 785 28.411 9.480 20.851 1.00 0.00 H -ATOM 2358 HW2 SOL 785 28.181 8.270 21.921 1.00 0.00 H -ATOM 2359 OW SOL 786 29.011 10.981 25.581 1.00 0.00 O -ATOM 2360 HW1 SOL 786 28.311 10.511 26.121 1.00 0.00 H -ATOM 2361 HW2 SOL 786 29.601 10.301 25.151 1.00 0.00 H -ATOM 2362 OW SOL 787 28.761 2.360 28.331 1.00 0.00 O -ATOM 2363 HW1 SOL 787 28.681 2.000 27.401 1.00 0.00 H -ATOM 2364 HW2 SOL 787 28.741 1.600 28.981 1.00 0.00 H -ATOM 2365 OW SOL 788 24.521 14.871 23.531 1.00 0.00 O -ATOM 2366 HW1 SOL 788 24.941 14.291 22.831 1.00 0.00 H -ATOM 2367 HW2 SOL 788 24.081 15.661 23.091 1.00 0.00 H -ATOM 2368 OW SOL 789 21.171 13.481 21.521 1.00 0.00 O -ATOM 2369 HW1 SOL 789 20.211 13.491 21.251 1.00 0.00 H -ATOM 2370 HW2 SOL 789 21.291 14.011 22.361 1.00 0.00 H -ATOM 2371 OW SOL 790 19.371 3.450 18.951 1.00 0.00 O -ATOM 2372 HW1 SOL 790 18.451 3.170 18.661 1.00 0.00 H -ATOM 2373 HW2 SOL 790 19.681 4.220 18.391 1.00 0.00 H -ATOM 2374 OW SOL 791 19.341 1.660 21.801 1.00 0.00 O -ATOM 2375 HW1 SOL 791 19.171 2.490 21.261 1.00 0.00 H -ATOM 2376 HW2 SOL 791 20.241 1.290 21.581 1.00 0.00 H -ATOM 2377 OW SOL 792 30.451 13.351 19.811 1.00 0.00 O -ATOM 2378 HW1 SOL 792 29.461 13.241 19.831 1.00 0.00 H -ATOM 2379 HW2 SOL 792 30.791 13.501 20.741 1.00 0.00 H -ATOM 2380 OW SOL 793 30.871 3.250 23.111 1.00 0.00 O -ATOM 2381 HW1 SOL 793 31.521 2.510 23.001 1.00 0.00 H -ATOM 2382 HW2 SOL 793 31.071 3.750 23.951 1.00 0.00 H -ATOM 2383 OW SOL 794 24.561 7.450 25.141 1.00 0.00 O -ATOM 2384 HW1 SOL 794 25.061 8.300 24.951 1.00 0.00 H -ATOM 2385 HW2 SOL 794 23.681 7.470 24.661 1.00 0.00 H -ATOM 2386 OW SOL 795 27.211 13.741 18.781 1.00 0.00 O -ATOM 2387 HW1 SOL 795 26.751 13.891 19.661 1.00 0.00 H -ATOM 2388 HW2 SOL 795 27.651 14.591 18.481 1.00 0.00 H -ATOM 2389 OW SOL 796 25.231 17.901 28.151 1.00 0.00 O -ATOM 2390 HW1 SOL 796 24.771 18.781 28.021 1.00 0.00 H -ATOM 2391 HW2 SOL 796 26.221 18.021 28.081 1.00 0.00 H -ATOM 2392 OW SOL 797 27.211 9.561 27.231 1.00 0.00 O -ATOM 2393 HW1 SOL 797 27.751 8.871 27.711 1.00 0.00 H -ATOM 2394 HW2 SOL 797 26.891 10.251 27.891 1.00 0.00 H -ATOM 2395 OW SOL 798 29.451 9.841 19.491 1.00 0.00 O -ATOM 2396 HW1 SOL 798 29.221 10.371 18.671 1.00 0.00 H -ATOM 2397 HW2 SOL 798 30.261 9.281 19.301 1.00 0.00 H -ATOM 2398 OW SOL 799 19.411 12.401 25.151 1.00 0.00 O -ATOM 2399 HW1 SOL 799 19.401 11.931 26.031 1.00 0.00 H -ATOM 2400 HW2 SOL 799 20.231 12.121 24.641 1.00 0.00 H -ATOM 2401 OW SOL 800 22.901 4.240 23.821 1.00 0.00 O -ATOM 2402 HW1 SOL 800 23.201 3.520 23.201 1.00 0.00 H -ATOM 2403 HW2 SOL 800 22.511 3.840 24.651 1.00 0.00 H -ATOM 2404 OW SOL 801 26.741 15.861 25.491 1.00 0.00 O -ATOM 2405 HW1 SOL 801 27.061 15.961 24.551 1.00 0.00 H -ATOM 2406 HW2 SOL 801 25.951 15.241 25.511 1.00 0.00 H -ATOM 2407 OW SOL 802 1.631 2.140 29.741 1.00 0.00 O -ATOM 2408 HW1 SOL 802 2.151 1.490 30.291 1.00 0.00 H -ATOM 2409 HW2 SOL 802 1.141 2.770 30.351 1.00 0.00 H -ATOM 2410 OW SOL 803 28.631 0.340 30.161 1.00 0.00 O -ATOM 2411 HW1 SOL 803 28.001 -0.380 29.851 1.00 0.00 H -ATOM 2412 HW2 SOL 803 29.561 -0.020 30.161 1.00 0.00 H -ATOM 2413 OW SOL 804 26.321 13.301 21.631 1.00 0.00 O -ATOM 2414 HW1 SOL 804 25.861 12.431 21.801 1.00 0.00 H -ATOM 2415 HW2 SOL 804 27.231 13.271 22.041 1.00 0.00 H -ATOM 2416 OW SOL 805 0.911 0.520 20.301 1.00 0.00 O -ATOM 2417 HW1 SOL 805 1.261 0.110 19.461 1.00 0.00 H -ATOM 2418 HW2 SOL 805 0.011 0.140 20.501 1.00 0.00 H -ATOM 2419 OW SOL 806 0.391 4.530 25.531 1.00 0.00 O -ATOM 2420 HW1 SOL 806 -0.199 5.330 25.571 1.00 0.00 H -ATOM 2421 HW2 SOL 806 0.541 4.180 26.461 1.00 0.00 H -ATOM 2422 OW SOL 807 19.011 10.771 21.621 1.00 0.00 O -ATOM 2423 HW1 SOL 807 20.001 10.661 21.531 1.00 0.00 H -ATOM 2424 HW2 SOL 807 18.611 9.911 21.941 1.00 0.00 H -ATOM 2425 OW SOL 808 27.371 16.461 21.991 1.00 0.00 O -ATOM 2426 HW1 SOL 808 26.601 16.111 21.451 1.00 0.00 H -ATOM 2427 HW2 SOL 808 27.051 17.171 22.611 1.00 0.00 H -ATOM 2428 OW SOL 809 20.921 24.901 1.130 1.00 0.00 O -ATOM 2429 HW1 SOL 809 19.991 24.881 1.500 1.00 0.00 H -ATOM 2430 HW2 SOL 809 20.931 24.511 0.210 1.00 0.00 H -ATOM 2431 OW SOL 810 20.871 21.371 9.961 1.00 0.00 O -ATOM 2432 HW1 SOL 810 21.221 21.201 10.881 1.00 0.00 H -ATOM 2433 HW2 SOL 810 19.991 20.921 9.841 1.00 0.00 H -ATOM 2434 OW SOL 811 18.811 22.301 6.470 1.00 0.00 O -ATOM 2435 HW1 SOL 811 17.991 22.731 6.860 1.00 0.00 H -ATOM 2436 HW2 SOL 811 18.531 21.571 5.840 1.00 0.00 H -ATOM 2437 OW SOL 812 29.971 25.651 7.170 1.00 0.00 O -ATOM 2438 HW1 SOL 812 30.541 26.431 6.920 1.00 0.00 H -ATOM 2439 HW2 SOL 812 29.371 25.911 7.930 1.00 0.00 H -ATOM 2440 OW SOL 813 26.301 30.061 10.231 1.00 0.00 O -ATOM 2441 HW1 SOL 813 25.521 30.231 10.831 1.00 0.00 H -ATOM 2442 HW2 SOL 813 26.641 30.931 9.871 1.00 0.00 H -ATOM 2443 OW SOL 814 27.121 26.601 18.231 1.00 0.00 O -ATOM 2444 HW1 SOL 814 27.081 27.361 18.881 1.00 0.00 H -ATOM 2445 HW2 SOL 814 27.341 26.961 17.321 1.00 0.00 H -ATOM 2446 OW SOL 815 25.471 28.741 6.650 1.00 0.00 O -ATOM 2447 HW1 SOL 815 26.161 28.581 7.350 1.00 0.00 H -ATOM 2448 HW2 SOL 815 24.741 29.311 7.030 1.00 0.00 H -ATOM 2449 OW SOL 816 23.001 22.541 14.991 1.00 0.00 O -ATOM 2450 HW1 SOL 816 23.821 21.981 15.081 1.00 0.00 H -ATOM 2451 HW2 SOL 816 22.191 21.961 15.031 1.00 0.00 H -ATOM 2452 OW SOL 817 21.021 29.531 8.860 1.00 0.00 O -ATOM 2453 HW1 SOL 817 21.161 28.691 9.380 1.00 0.00 H -ATOM 2454 HW2 SOL 817 20.471 30.171 9.410 1.00 0.00 H -ATOM 2455 OW SOL 818 24.681 28.261 1.230 1.00 0.00 O -ATOM 2456 HW1 SOL 818 24.751 29.101 0.690 1.00 0.00 H -ATOM 2457 HW2 SOL 818 25.141 28.391 2.110 1.00 0.00 H -ATOM 2458 OW SOL 819 19.841 25.051 5.630 1.00 0.00 O -ATOM 2459 HW1 SOL 819 19.391 24.171 5.800 1.00 0.00 H -ATOM 2460 HW2 SOL 819 19.831 25.591 6.470 1.00 0.00 H -ATOM 2461 OW SOL 820 19.751 25.991 15.971 1.00 0.00 O -ATOM 2462 HW1 SOL 820 20.631 25.861 16.421 1.00 0.00 H -ATOM 2463 HW2 SOL 820 19.621 26.961 15.751 1.00 0.00 H -ATOM 2464 OW SOL 821 24.751 1.041 7.260 1.00 0.00 O -ATOM 2465 HW1 SOL 821 24.261 0.171 7.350 1.00 0.00 H -ATOM 2466 HW2 SOL 821 24.521 1.471 6.390 1.00 0.00 H -ATOM 2467 OW SOL 822 26.711 18.661 5.020 1.00 0.00 O -ATOM 2468 HW1 SOL 822 27.111 19.571 4.930 1.00 0.00 H -ATOM 2469 HW2 SOL 822 25.711 18.741 5.080 1.00 0.00 H -ATOM 2470 OW SOL 823 20.591 28.381 12.641 1.00 0.00 O -ATOM 2471 HW1 SOL 823 21.481 27.931 12.501 1.00 0.00 H -ATOM 2472 HW2 SOL 823 19.861 27.731 12.451 1.00 0.00 H -ATOM 2473 OW SOL 824 21.791 21.131 18.011 1.00 0.00 O -ATOM 2474 HW1 SOL 824 22.501 21.841 18.071 1.00 0.00 H -ATOM 2475 HW2 SOL 824 20.911 21.521 18.291 1.00 0.00 H -ATOM 2476 OW SOL 825 24.601 25.911 2.700 1.00 0.00 O -ATOM 2477 HW1 SOL 825 24.841 26.601 2.020 1.00 0.00 H -ATOM 2478 HW2 SOL 825 23.821 26.241 3.240 1.00 0.00 H -ATOM 2479 OW SOL 826 0.201 22.071 9.441 1.00 0.00 O -ATOM 2480 HW1 SOL 826 -0.659 21.571 9.311 1.00 0.00 H -ATOM 2481 HW2 SOL 826 0.821 21.531 10.001 1.00 0.00 H -ATOM 2482 OW SOL 827 26.691 24.671 14.651 1.00 0.00 O -ATOM 2483 HW1 SOL 827 26.221 24.641 15.541 1.00 0.00 H -ATOM 2484 HW2 SOL 827 26.181 24.121 13.991 1.00 0.00 H -ATOM 2485 OW SOL 828 28.351 27.521 15.721 1.00 0.00 O -ATOM 2486 HW1 SOL 828 28.811 26.681 15.431 1.00 0.00 H -ATOM 2487 HW2 SOL 828 27.791 27.861 14.971 1.00 0.00 H -ATOM 2488 OW SOL 829 28.531 22.721 12.421 1.00 0.00 O -ATOM 2489 HW1 SOL 829 27.761 23.061 12.961 1.00 0.00 H -ATOM 2490 HW2 SOL 829 28.191 22.211 11.631 1.00 0.00 H -ATOM 2491 OW SOL 830 29.031 25.631 4.290 1.00 0.00 O -ATOM 2492 HW1 SOL 830 29.291 25.591 5.250 1.00 0.00 H -ATOM 2493 HW2 SOL 830 28.181 25.121 4.150 1.00 0.00 H -ATOM 2494 OW SOL 831 19.381 26.731 7.890 1.00 0.00 O -ATOM 2495 HW1 SOL 831 20.371 26.611 7.980 1.00 0.00 H -ATOM 2496 HW2 SOL 831 19.141 27.681 8.100 1.00 0.00 H -ATOM 2497 OW SOL 832 27.271 22.101 1.950 1.00 0.00 O -ATOM 2498 HW1 SOL 832 27.861 22.731 1.460 1.00 0.00 H -ATOM 2499 HW2 SOL 832 27.461 21.161 1.660 1.00 0.00 H -ATOM 2500 OW SOL 833 24.121 20.581 8.850 1.00 0.00 O -ATOM 2501 HW1 SOL 833 24.071 20.531 9.850 1.00 0.00 H -ATOM 2502 HW2 SOL 833 24.141 21.541 8.560 1.00 0.00 H -ATOM 2503 OW SOL 834 21.831 28.051 2.420 1.00 0.00 O -ATOM 2504 HW1 SOL 834 22.651 28.441 2.000 1.00 0.00 H -ATOM 2505 HW2 SOL 834 21.561 27.231 1.930 1.00 0.00 H -ATOM 2506 OW SOL 835 20.641 21.471 14.981 1.00 0.00 O -ATOM 2507 HW1 SOL 835 19.841 22.071 14.851 1.00 0.00 H -ATOM 2508 HW2 SOL 835 20.541 20.981 15.841 1.00 0.00 H -ATOM 2509 OW SOL 836 22.441 25.621 4.800 1.00 0.00 O -ATOM 2510 HW1 SOL 836 22.891 24.721 4.770 1.00 0.00 H -ATOM 2511 HW2 SOL 836 21.501 25.511 5.130 1.00 0.00 H -ATOM 2512 OW SOL 837 24.761 19.841 1.170 1.00 0.00 O -ATOM 2513 HW1 SOL 837 25.741 19.621 1.240 1.00 0.00 H -ATOM 2514 HW2 SOL 837 24.451 19.671 0.240 1.00 0.00 H -ATOM 2515 OW SOL 838 26.431 21.261 17.491 1.00 0.00 O -ATOM 2516 HW1 SOL 838 27.101 20.651 17.921 1.00 0.00 H -ATOM 2517 HW2 SOL 838 25.701 21.451 18.141 1.00 0.00 H -ATOM 2518 OW SOL 839 27.841 23.651 8.990 1.00 0.00 O -ATOM 2519 HW1 SOL 839 27.591 23.561 8.030 1.00 0.00 H -ATOM 2520 HW2 SOL 839 28.321 22.831 9.300 1.00 0.00 H -ATOM 2521 OW SOL 840 24.011 19.261 5.120 1.00 0.00 O -ATOM 2522 HW1 SOL 840 23.201 19.271 5.700 1.00 0.00 H -ATOM 2523 HW2 SOL 840 24.041 20.091 4.570 1.00 0.00 H -ATOM 2524 OW SOL 841 21.591 18.971 1.710 1.00 0.00 O -ATOM 2525 HW1 SOL 841 22.081 19.811 1.500 1.00 0.00 H -ATOM 2526 HW2 SOL 841 22.211 18.321 2.160 1.00 0.00 H -ATOM 2527 OW SOL 842 27.971 20.981 4.800 1.00 0.00 O -ATOM 2528 HW1 SOL 842 27.491 21.391 4.020 1.00 0.00 H -ATOM 2529 HW2 SOL 842 28.961 20.961 4.610 1.00 0.00 H -ATOM 2530 OW SOL 843 29.381 25.451 14.641 1.00 0.00 O -ATOM 2531 HW1 SOL 843 28.581 24.841 14.671 1.00 0.00 H -ATOM 2532 HW2 SOL 843 30.191 24.921 14.401 1.00 0.00 H -ATOM 2533 OW SOL 844 23.211 30.141 7.410 1.00 0.00 O -ATOM 2534 HW1 SOL 844 22.501 29.871 8.060 1.00 0.00 H -ATOM 2535 HW2 SOL 844 22.951 29.861 6.480 1.00 0.00 H -ATOM 2536 OW SOL 845 28.941 24.111 0.160 1.00 0.00 O -ATOM 2537 HW1 SOL 845 28.531 24.931 -0.230 1.00 0.00 H -ATOM 2538 HW2 SOL 845 29.581 24.371 0.890 1.00 0.00 H -ATOM 2539 OW SOL 846 19.401 24.181 13.861 1.00 0.00 O -ATOM 2540 HW1 SOL 846 20.321 24.171 13.451 1.00 0.00 H -ATOM 2541 HW2 SOL 846 19.341 24.921 14.531 1.00 0.00 H -ATOM 2542 OW SOL 847 24.231 20.841 11.471 1.00 0.00 O -ATOM 2543 HW1 SOL 847 24.611 20.001 11.841 1.00 0.00 H -ATOM 2544 HW2 SOL 847 23.351 21.031 11.911 1.00 0.00 H -ATOM 2545 OW SOL 848 27.281 23.161 6.420 1.00 0.00 O -ATOM 2546 HW1 SOL 848 26.961 23.881 5.800 1.00 0.00 H -ATOM 2547 HW2 SOL 848 27.521 22.351 5.890 1.00 0.00 H -ATOM 2548 OW SOL 849 28.791 19.011 7.530 1.00 0.00 O -ATOM 2549 HW1 SOL 849 28.071 19.061 6.840 1.00 0.00 H -ATOM 2550 HW2 SOL 849 28.551 18.321 8.220 1.00 0.00 H -ATOM 2551 OW SOL 850 23.891 21.181 3.280 1.00 0.00 O -ATOM 2552 HW1 SOL 850 24.161 20.591 2.530 1.00 0.00 H -ATOM 2553 HW2 SOL 850 23.891 22.131 2.970 1.00 0.00 H -ATOM 2554 OW SOL 851 27.771 19.511 14.021 1.00 0.00 O -ATOM 2555 HW1 SOL 851 28.021 19.311 13.071 1.00 0.00 H -ATOM 2556 HW2 SOL 851 28.491 20.071 14.441 1.00 0.00 H -ATOM 2557 OW SOL 852 28.421 29.781 17.191 1.00 0.00 O -ATOM 2558 HW1 SOL 852 27.431 29.841 17.291 1.00 0.00 H -ATOM 2559 HW2 SOL 852 28.651 28.981 16.631 1.00 0.00 H -ATOM 2560 OW SOL 853 25.671 29.121 3.680 1.00 0.00 O -ATOM 2561 HW1 SOL 853 25.531 29.191 4.670 1.00 0.00 H -ATOM 2562 HW2 SOL 853 26.511 28.611 3.500 1.00 0.00 H -ATOM 2563 OW SOL 854 22.721 26.751 12.511 1.00 0.00 O -ATOM 2564 HW1 SOL 854 23.581 26.871 13.011 1.00 0.00 H -ATOM 2565 HW2 SOL 854 22.301 25.881 12.781 1.00 0.00 H -ATOM 2566 OW SOL 855 0.131 22.481 12.621 1.00 0.00 O -ATOM 2567 HW1 SOL 855 0.341 23.221 13.261 1.00 0.00 H -ATOM 2568 HW2 SOL 855 -0.759 22.651 12.191 1.00 0.00 H -ATOM 2569 OW SOL 856 22.291 29.621 5.010 1.00 0.00 O -ATOM 2570 HW1 SOL 856 22.221 30.451 4.450 1.00 0.00 H -ATOM 2571 HW2 SOL 856 22.331 28.821 4.410 1.00 0.00 H -ATOM 2572 OW SOL 857 24.281 23.991 8.650 1.00 0.00 O -ATOM 2573 HW1 SOL 857 24.401 24.651 7.910 1.00 0.00 H -ATOM 2574 HW2 SOL 857 24.741 24.331 9.480 1.00 0.00 H -ATOM 2575 OW SOL 858 22.641 26.131 15.981 1.00 0.00 O -ATOM 2576 HW1 SOL 858 23.321 26.681 15.511 1.00 0.00 H -ATOM 2577 HW2 SOL 858 23.041 25.251 16.251 1.00 0.00 H -ATOM 2578 OW SOL 859 28.751 19.671 17.701 1.00 0.00 O -ATOM 2579 HW1 SOL 859 28.811 20.521 17.181 1.00 0.00 H -ATOM 2580 HW2 SOL 859 29.071 18.911 17.131 1.00 0.00 H -ATOM 2581 OW SOL 860 23.661 19.121 17.401 1.00 0.00 O -ATOM 2582 HW1 SOL 860 23.241 18.551 16.701 1.00 0.00 H -ATOM 2583 HW2 SOL 860 23.001 19.811 17.721 1.00 0.00 H -ATOM 2584 OW SOL 861 24.351 27.321 10.291 1.00 0.00 O -ATOM 2585 HW1 SOL 861 24.791 28.211 10.201 1.00 0.00 H -ATOM 2586 HW2 SOL 861 23.721 27.321 11.061 1.00 0.00 H -ATOM 2587 OW SOL 862 0.991 27.241 10.451 1.00 0.00 O -ATOM 2588 HW1 SOL 862 0.241 27.241 9.791 1.00 0.00 H -ATOM 2589 HW2 SOL 862 1.361 26.321 10.541 1.00 0.00 H -ATOM 2590 OW SOL 863 30.711 23.871 2.750 1.00 0.00 O -ATOM 2591 HW1 SOL 863 30.841 23.031 3.290 1.00 0.00 H -ATOM 2592 HW2 SOL 863 30.421 24.611 3.350 1.00 0.00 H -ATOM 2593 OW SOL 864 21.691 20.751 12.311 1.00 0.00 O -ATOM 2594 HW1 SOL 864 21.461 21.121 13.211 1.00 0.00 H -ATOM 2595 HW2 SOL 864 21.391 19.801 12.251 1.00 0.00 H -ATOM 2596 OW SOL 865 18.991 0.491 12.821 1.00 0.00 O -ATOM 2597 HW1 SOL 865 19.521 0.001 13.501 1.00 0.00 H -ATOM 2598 HW2 SOL 865 19.211 1.471 12.871 1.00 0.00 H -ATOM 2599 OW SOL 866 25.941 24.961 10.641 1.00 0.00 O -ATOM 2600 HW1 SOL 866 26.531 24.701 9.881 1.00 0.00 H -ATOM 2601 HW2 SOL 866 25.661 25.921 10.531 1.00 0.00 H -ATOM 2602 OW SOL 867 21.691 19.251 6.180 1.00 0.00 O -ATOM 2603 HW1 SOL 867 21.581 20.191 6.510 1.00 0.00 H -ATOM 2604 HW2 SOL 867 21.641 18.621 6.950 1.00 0.00 H -ATOM 2605 OW SOL 868 28.851 26.281 9.661 1.00 0.00 O -ATOM 2606 HW1 SOL 868 29.001 26.491 10.621 1.00 0.00 H -ATOM 2607 HW2 SOL 868 28.551 25.331 9.571 1.00 0.00 H -ATOM 2608 OW SOL 869 22.121 27.601 18.041 1.00 0.00 O -ATOM 2609 HW1 SOL 869 22.881 28.041 18.521 1.00 0.00 H -ATOM 2610 HW2 SOL 869 22.471 27.131 17.221 1.00 0.00 H -ATOM 2611 OW SOL 870 21.811 26.721 9.491 1.00 0.00 O -ATOM 2612 HW1 SOL 870 22.741 27.081 9.541 1.00 0.00 H -ATOM 2613 HW2 SOL 870 21.751 25.871 10.011 1.00 0.00 H -ATOM 2614 OW SOL 871 22.011 23.711 10.061 1.00 0.00 O -ATOM 2615 HW1 SOL 871 21.491 22.881 9.891 1.00 0.00 H -ATOM 2616 HW2 SOL 871 22.781 23.761 9.421 1.00 0.00 H -ATOM 2617 OW SOL 872 23.731 22.771 18.081 1.00 0.00 O -ATOM 2618 HW1 SOL 872 23.551 23.221 18.961 1.00 0.00 H -ATOM 2619 HW2 SOL 872 24.151 23.421 17.451 1.00 0.00 H -ATOM 2620 OW SOL 873 30.001 22.421 16.781 1.00 0.00 O -ATOM 2621 HW1 SOL 873 29.551 23.051 17.421 1.00 0.00 H -ATOM 2622 HW2 SOL 873 30.931 22.731 16.611 1.00 0.00 H -ATOM 2623 OW SOL 874 30.221 20.691 14.771 1.00 0.00 O -ATOM 2624 HW1 SOL 874 30.221 21.331 15.541 1.00 0.00 H -ATOM 2625 HW2 SOL 874 30.501 21.171 13.941 1.00 0.00 H -ATOM 2626 OW SOL 875 28.641 26.581 12.381 1.00 0.00 O -ATOM 2627 HW1 SOL 875 29.051 26.261 13.241 1.00 0.00 H -ATOM 2628 HW2 SOL 875 27.681 26.311 12.351 1.00 0.00 H -ATOM 2629 OW SOL 876 19.021 24.061 11.141 1.00 0.00 O -ATOM 2630 HW1 SOL 876 19.871 23.731 10.731 1.00 0.00 H -ATOM 2631 HW2 SOL 876 19.151 24.211 12.121 1.00 0.00 H -ATOM 2632 OW SOL 877 20.511 23.821 17.221 1.00 0.00 O -ATOM 2633 HW1 SOL 877 21.101 23.421 16.521 1.00 0.00 H -ATOM 2634 HW2 SOL 877 19.931 24.531 16.811 1.00 0.00 H -ATOM 2635 OW SOL 878 26.771 24.341 3.250 1.00 0.00 O -ATOM 2636 HW1 SOL 878 26.841 23.451 2.790 1.00 0.00 H -ATOM 2637 HW2 SOL 878 25.831 24.681 3.170 1.00 0.00 H -ATOM 2638 OW SOL 879 25.331 23.261 12.691 1.00 0.00 O -ATOM 2639 HW1 SOL 879 24.991 22.371 12.391 1.00 0.00 H -ATOM 2640 HW2 SOL 879 25.591 23.801 11.891 1.00 0.00 H -ATOM 2641 OW SOL 880 23.351 23.621 1.910 1.00 0.00 O -ATOM 2642 HW1 SOL 880 23.961 24.421 1.950 1.00 0.00 H -ATOM 2643 HW2 SOL 880 22.401 23.931 1.980 1.00 0.00 H -ATOM 2644 OW SOL 881 20.211 29.991 14.661 1.00 0.00 O -ATOM 2645 HW1 SOL 881 20.431 29.381 15.421 1.00 0.00 H -ATOM 2646 HW2 SOL 881 20.311 29.501 13.801 1.00 0.00 H -ATOM 2647 OW SOL 882 0.861 29.211 12.341 1.00 0.00 O -ATOM 2648 HW1 SOL 882 1.101 28.581 11.601 1.00 0.00 H -ATOM 2649 HW2 SOL 882 -0.039 29.611 12.161 1.00 0.00 H -ATOM 2650 OW SOL 883 19.451 31.201 10.221 1.00 0.00 O -ATOM 2651 HW1 SOL 883 19.401 31.191 11.221 1.00 0.00 H -ATOM 2652 HW2 SOL 883 18.621 30.791 9.841 1.00 0.00 H -ATOM 2653 OW SOL 884 27.651 19.481 1.330 1.00 0.00 O -ATOM 2654 HW1 SOL 884 28.161 19.491 0.470 1.00 0.00 H -ATOM 2655 HW2 SOL 884 28.211 19.061 2.040 1.00 0.00 H -ATOM 2656 OW SOL 885 0.191 27.891 6.720 1.00 0.00 O -ATOM 2657 HW1 SOL 885 0.791 27.081 6.740 1.00 0.00 H -ATOM 2658 HW2 SOL 885 0.591 28.581 6.120 1.00 0.00 H -ATOM 2659 OW SOL 886 21.251 21.881 7.200 1.00 0.00 O -ATOM 2660 HW1 SOL 886 20.461 22.391 6.860 1.00 0.00 H -ATOM 2661 HW2 SOL 886 21.161 21.731 8.180 1.00 0.00 H -ATOM 2662 OW SOL 887 26.841 28.641 13.721 1.00 0.00 O -ATOM 2663 HW1 SOL 887 27.241 28.631 12.801 1.00 0.00 H -ATOM 2664 HW2 SOL 887 26.941 29.561 14.121 1.00 0.00 H -ATOM 2665 OW SOL 888 27.781 27.721 2.910 1.00 0.00 O -ATOM 2666 HW1 SOL 888 28.411 28.101 2.230 1.00 0.00 H -ATOM 2667 HW2 SOL 888 28.181 26.891 3.300 1.00 0.00 H -ATOM 2668 OW SOL 889 22.341 0.271 14.901 1.00 0.00 O -ATOM 2669 HW1 SOL 889 22.211 1.201 14.561 1.00 0.00 H -ATOM 2670 HW2 SOL 889 21.501 -0.249 14.771 1.00 0.00 H -ATOM 2671 OW SOL 890 29.011 29.601 6.960 1.00 0.00 O -ATOM 2672 HW1 SOL 890 28.311 29.131 7.500 1.00 0.00 H -ATOM 2673 HW2 SOL 890 29.601 28.921 6.530 1.00 0.00 H -ATOM 2674 OW SOL 891 28.761 20.981 9.711 1.00 0.00 O -ATOM 2675 HW1 SOL 891 28.681 20.621 8.781 1.00 0.00 H -ATOM 2676 HW2 SOL 891 28.741 20.221 10.361 1.00 0.00 H -ATOM 2677 OW SOL 892 19.671 28.751 17.261 1.00 0.00 O -ATOM 2678 HW1 SOL 892 18.901 28.421 17.801 1.00 0.00 H -ATOM 2679 HW2 SOL 892 20.521 28.451 17.681 1.00 0.00 H -ATOM 2680 OW SOL 893 25.341 20.651 14.891 1.00 0.00 O -ATOM 2681 HW1 SOL 893 26.241 20.491 14.491 1.00 0.00 H -ATOM 2682 HW2 SOL 893 25.421 20.701 15.881 1.00 0.00 H -ATOM 2683 OW SOL 894 19.341 20.281 3.180 1.00 0.00 O -ATOM 2684 HW1 SOL 894 19.171 21.111 2.640 1.00 0.00 H -ATOM 2685 HW2 SOL 894 20.241 19.911 2.960 1.00 0.00 H -ATOM 2686 OW SOL 895 24.751 27.041 14.311 1.00 0.00 O -ATOM 2687 HW1 SOL 895 25.311 27.851 14.141 1.00 0.00 H -ATOM 2688 HW2 SOL 895 25.341 26.241 14.341 1.00 0.00 H -ATOM 2689 OW SOL 896 25.781 24.271 17.081 1.00 0.00 O -ATOM 2690 HW1 SOL 896 25.971 24.921 17.821 1.00 0.00 H -ATOM 2691 HW2 SOL 896 26.381 23.471 17.171 1.00 0.00 H -ATOM 2692 OW SOL 897 30.871 21.871 4.490 1.00 0.00 O -ATOM 2693 HW1 SOL 897 31.521 21.131 4.380 1.00 0.00 H -ATOM 2694 HW2 SOL 897 31.071 22.371 5.330 1.00 0.00 H -ATOM 2695 OW SOL 898 24.561 26.071 6.520 1.00 0.00 O -ATOM 2696 HW1 SOL 898 25.061 26.921 6.330 1.00 0.00 H -ATOM 2697 HW2 SOL 898 23.681 26.091 6.040 1.00 0.00 H -ATOM 2698 OW SOL 899 27.211 28.181 8.610 1.00 0.00 O -ATOM 2699 HW1 SOL 899 27.751 27.491 9.090 1.00 0.00 H -ATOM 2700 HW2 SOL 899 26.891 28.871 9.270 1.00 0.00 H -ATOM 2701 OW SOL 900 29.451 28.461 0.870 1.00 0.00 O -ATOM 2702 HW1 SOL 900 29.221 28.991 0.050 1.00 0.00 H -ATOM 2703 HW2 SOL 900 30.261 27.901 0.680 1.00 0.00 H -ATOM 2704 OW SOL 901 19.411 31.021 6.530 1.00 0.00 O -ATOM 2705 HW1 SOL 901 19.401 30.551 7.410 1.00 0.00 H -ATOM 2706 HW2 SOL 901 20.231 30.741 6.020 1.00 0.00 H -ATOM 2707 OW SOL 902 22.901 22.861 5.200 1.00 0.00 O -ATOM 2708 HW1 SOL 902 23.201 22.141 4.580 1.00 0.00 H -ATOM 2709 HW2 SOL 902 22.511 22.461 6.030 1.00 0.00 H -ATOM 2710 OW SOL 903 21.791 24.091 12.801 1.00 0.00 O -ATOM 2711 HW1 SOL 903 22.171 23.501 13.521 1.00 0.00 H -ATOM 2712 HW2 SOL 903 22.191 23.831 11.921 1.00 0.00 H -ATOM 2713 OW SOL 904 1.631 20.761 11.121 1.00 0.00 O -ATOM 2714 HW1 SOL 904 2.151 20.111 11.671 1.00 0.00 H -ATOM 2715 HW2 SOL 904 1.141 21.391 11.731 1.00 0.00 H -ATOM 2716 OW SOL 905 28.631 18.961 11.541 1.00 0.00 O -ATOM 2717 HW1 SOL 905 28.001 18.241 11.231 1.00 0.00 H -ATOM 2718 HW2 SOL 905 29.561 18.601 11.541 1.00 0.00 H -ATOM 2719 OW SOL 906 26.321 0.691 3.010 1.00 0.00 O -ATOM 2720 HW1 SOL 906 25.861 -0.179 3.180 1.00 0.00 H -ATOM 2721 HW2 SOL 906 27.231 0.661 3.420 1.00 0.00 H -ATOM 2722 OW SOL 907 0.911 19.141 1.680 1.00 0.00 O -ATOM 2723 HW1 SOL 907 1.261 18.731 0.840 1.00 0.00 H -ATOM 2724 HW2 SOL 907 0.011 18.761 1.880 1.00 0.00 H -ATOM 2725 OW SOL 908 0.391 23.151 6.910 1.00 0.00 O -ATOM 2726 HW1 SOL 908 -0.199 23.951 6.950 1.00 0.00 H -ATOM 2727 HW2 SOL 908 0.541 22.801 7.840 1.00 0.00 H -ATOM 2728 OW SOL 909 19.011 29.391 3.000 1.00 0.00 O -ATOM 2729 HW1 SOL 909 20.001 29.281 2.910 1.00 0.00 H -ATOM 2730 HW2 SOL 909 18.611 28.531 3.320 1.00 0.00 H -ATOM 2731 OW SOL 910 20.921 24.901 19.751 1.00 0.00 O -ATOM 2732 HW1 SOL 910 19.991 24.881 20.121 1.00 0.00 H -ATOM 2733 HW2 SOL 910 20.931 24.511 18.831 1.00 0.00 H -ATOM 2734 OW SOL 911 20.871 21.371 28.581 1.00 0.00 O -ATOM 2735 HW1 SOL 911 21.221 21.201 29.501 1.00 0.00 H -ATOM 2736 HW2 SOL 911 19.991 20.921 28.461 1.00 0.00 H -ATOM 2737 OW SOL 912 18.811 22.301 25.091 1.00 0.00 O -ATOM 2738 HW1 SOL 912 17.991 22.731 25.481 1.00 0.00 H -ATOM 2739 HW2 SOL 912 18.531 21.571 24.461 1.00 0.00 H -ATOM 2740 OW SOL 913 29.971 25.651 25.791 1.00 0.00 O -ATOM 2741 HW1 SOL 913 30.541 26.431 25.541 1.00 0.00 H -ATOM 2742 HW2 SOL 913 29.371 25.911 26.551 1.00 0.00 H -ATOM 2743 OW SOL 914 26.301 30.061 28.851 1.00 0.00 O -ATOM 2744 HW1 SOL 914 25.521 30.231 29.451 1.00 0.00 H -ATOM 2745 HW2 SOL 914 26.641 30.931 28.491 1.00 0.00 H -ATOM 2746 OW SOL 915 25.471 28.741 25.271 1.00 0.00 O -ATOM 2747 HW1 SOL 915 26.161 28.581 25.971 1.00 0.00 H -ATOM 2748 HW2 SOL 915 24.741 29.311 25.651 1.00 0.00 H -ATOM 2749 OW SOL 916 21.021 29.531 27.481 1.00 0.00 O -ATOM 2750 HW1 SOL 916 21.161 28.691 28.001 1.00 0.00 H -ATOM 2751 HW2 SOL 916 20.471 30.171 28.031 1.00 0.00 H -ATOM 2752 OW SOL 917 24.681 28.261 19.851 1.00 0.00 O -ATOM 2753 HW1 SOL 917 24.751 29.101 19.311 1.00 0.00 H -ATOM 2754 HW2 SOL 917 25.141 28.391 20.731 1.00 0.00 H -ATOM 2755 OW SOL 918 19.841 25.051 24.251 1.00 0.00 O -ATOM 2756 HW1 SOL 918 19.391 24.171 24.421 1.00 0.00 H -ATOM 2757 HW2 SOL 918 19.831 25.591 25.091 1.00 0.00 H -ATOM 2758 OW SOL 919 24.751 1.041 25.881 1.00 0.00 O -ATOM 2759 HW1 SOL 919 24.261 0.171 25.971 1.00 0.00 H -ATOM 2760 HW2 SOL 919 24.521 1.471 25.011 1.00 0.00 H -ATOM 2761 OW SOL 920 26.711 18.661 23.641 1.00 0.00 O -ATOM 2762 HW1 SOL 920 27.111 19.571 23.551 1.00 0.00 H -ATOM 2763 HW2 SOL 920 25.711 18.741 23.701 1.00 0.00 H -ATOM 2764 OW SOL 921 20.591 28.381 0.031 1.00 0.00 O -ATOM 2765 HW1 SOL 921 21.481 27.931 -0.109 1.00 0.00 H -ATOM 2766 HW2 SOL 921 19.861 27.731 -0.159 1.00 0.00 H -ATOM 2767 OW SOL 922 24.601 25.911 21.321 1.00 0.00 O -ATOM 2768 HW1 SOL 922 24.841 26.601 20.641 1.00 0.00 H -ATOM 2769 HW2 SOL 922 23.821 26.241 21.861 1.00 0.00 H -ATOM 2770 OW SOL 923 0.201 22.071 28.061 1.00 0.00 O -ATOM 2771 HW1 SOL 923 -0.659 21.571 27.931 1.00 0.00 H -ATOM 2772 HW2 SOL 923 0.821 21.531 28.621 1.00 0.00 H -ATOM 2773 OW SOL 924 29.031 25.631 22.911 1.00 0.00 O -ATOM 2774 HW1 SOL 924 29.291 25.591 23.871 1.00 0.00 H -ATOM 2775 HW2 SOL 924 28.181 25.121 22.771 1.00 0.00 H -ATOM 2776 OW SOL 925 19.381 26.731 26.511 1.00 0.00 O -ATOM 2777 HW1 SOL 925 20.371 26.611 26.601 1.00 0.00 H -ATOM 2778 HW2 SOL 925 19.141 27.681 26.721 1.00 0.00 H -ATOM 2779 OW SOL 926 27.271 22.101 20.571 1.00 0.00 O -ATOM 2780 HW1 SOL 926 27.861 22.731 20.081 1.00 0.00 H -ATOM 2781 HW2 SOL 926 27.461 21.161 20.281 1.00 0.00 H -ATOM 2782 OW SOL 927 24.121 20.581 27.471 1.00 0.00 O -ATOM 2783 HW1 SOL 927 24.071 20.531 28.471 1.00 0.00 H -ATOM 2784 HW2 SOL 927 24.141 21.541 27.181 1.00 0.00 H -ATOM 2785 OW SOL 928 21.831 28.051 21.041 1.00 0.00 O -ATOM 2786 HW1 SOL 928 22.651 28.441 20.621 1.00 0.00 H -ATOM 2787 HW2 SOL 928 21.561 27.231 20.551 1.00 0.00 H -ATOM 2788 OW SOL 929 22.441 25.621 23.421 1.00 0.00 O -ATOM 2789 HW1 SOL 929 22.891 24.721 23.391 1.00 0.00 H -ATOM 2790 HW2 SOL 929 21.501 25.511 23.751 1.00 0.00 H -ATOM 2791 OW SOL 930 24.761 19.841 19.791 1.00 0.00 O -ATOM 2792 HW1 SOL 930 25.741 19.621 19.861 1.00 0.00 H -ATOM 2793 HW2 SOL 930 24.451 19.671 18.861 1.00 0.00 H -ATOM 2794 OW SOL 931 0.901 24.521 1.721 1.00 0.00 O -ATOM 2795 HW1 SOL 931 1.181 24.091 2.571 1.00 0.00 H -ATOM 2796 HW2 SOL 931 1.151 25.481 1.731 1.00 0.00 H -ATOM 2797 OW SOL 932 27.841 23.651 27.611 1.00 0.00 O -ATOM 2798 HW1 SOL 932 27.591 23.561 26.651 1.00 0.00 H -ATOM 2799 HW2 SOL 932 28.321 22.831 27.921 1.00 0.00 H -ATOM 2800 OW SOL 933 24.011 19.261 23.741 1.00 0.00 O -ATOM 2801 HW1 SOL 933 23.201 19.271 24.321 1.00 0.00 H -ATOM 2802 HW2 SOL 933 24.041 20.091 23.191 1.00 0.00 H -ATOM 2803 OW SOL 934 21.591 18.971 20.331 1.00 0.00 O -ATOM 2804 HW1 SOL 934 22.081 19.811 20.121 1.00 0.00 H -ATOM 2805 HW2 SOL 934 22.211 18.321 20.781 1.00 0.00 H -ATOM 2806 OW SOL 935 27.971 20.981 23.421 1.00 0.00 O -ATOM 2807 HW1 SOL 935 27.491 21.391 22.641 1.00 0.00 H -ATOM 2808 HW2 SOL 935 28.961 20.961 23.231 1.00 0.00 H -ATOM 2809 OW SOL 936 23.211 30.141 26.031 1.00 0.00 O -ATOM 2810 HW1 SOL 936 22.501 29.871 26.681 1.00 0.00 H -ATOM 2811 HW2 SOL 936 22.951 29.861 25.101 1.00 0.00 H -ATOM 2812 OW SOL 937 28.941 24.111 18.781 1.00 0.00 O -ATOM 2813 HW1 SOL 937 28.531 24.931 18.391 1.00 0.00 H -ATOM 2814 HW2 SOL 937 29.581 24.371 19.511 1.00 0.00 H -ATOM 2815 OW SOL 938 27.281 23.161 25.041 1.00 0.00 O -ATOM 2816 HW1 SOL 938 26.961 23.881 24.421 1.00 0.00 H -ATOM 2817 HW2 SOL 938 27.521 22.351 24.511 1.00 0.00 H -ATOM 2818 OW SOL 939 28.791 19.011 26.151 1.00 0.00 O -ATOM 2819 HW1 SOL 939 28.071 19.061 25.461 1.00 0.00 H -ATOM 2820 HW2 SOL 939 28.551 18.321 26.841 1.00 0.00 H -ATOM 2821 OW SOL 940 1.291 24.371 19.401 1.00 0.00 O -ATOM 2822 HW1 SOL 940 0.751 24.161 20.211 1.00 0.00 H -ATOM 2823 HW2 SOL 940 2.201 23.961 19.491 1.00 0.00 H -ATOM 2824 OW SOL 941 23.891 21.181 21.901 1.00 0.00 O -ATOM 2825 HW1 SOL 941 24.161 20.591 21.151 1.00 0.00 H -ATOM 2826 HW2 SOL 941 23.891 22.131 21.591 1.00 0.00 H -ATOM 2827 OW SOL 942 25.671 29.121 22.301 1.00 0.00 O -ATOM 2828 HW1 SOL 942 25.531 29.191 23.291 1.00 0.00 H -ATOM 2829 HW2 SOL 942 26.511 28.611 22.121 1.00 0.00 H -ATOM 2830 OW SOL 943 22.721 26.751 31.131 1.00 0.00 O -ATOM 2831 HW1 SOL 943 23.581 26.871 31.631 1.00 0.00 H -ATOM 2832 HW2 SOL 943 22.301 25.881 31.401 1.00 0.00 H -ATOM 2833 OW SOL 944 0.131 22.481 0.011 1.00 0.00 O -ATOM 2834 HW1 SOL 944 0.341 23.221 0.651 1.00 0.00 H -ATOM 2835 HW2 SOL 944 -0.759 22.651 -0.419 1.00 0.00 H -ATOM 2836 OW SOL 945 22.291 29.621 23.631 1.00 0.00 O -ATOM 2837 HW1 SOL 945 22.221 30.451 23.071 1.00 0.00 H -ATOM 2838 HW2 SOL 945 22.331 28.821 23.031 1.00 0.00 H -ATOM 2839 OW SOL 946 24.281 23.991 27.271 1.00 0.00 O -ATOM 2840 HW1 SOL 946 24.401 24.651 26.531 1.00 0.00 H -ATOM 2841 HW2 SOL 946 24.741 24.331 28.101 1.00 0.00 H -ATOM 2842 OW SOL 947 24.351 27.321 28.911 1.00 0.00 O -ATOM 2843 HW1 SOL 947 24.791 28.211 28.821 1.00 0.00 H -ATOM 2844 HW2 SOL 947 23.721 27.321 29.681 1.00 0.00 H -ATOM 2845 OW SOL 948 0.991 27.241 29.071 1.00 0.00 O -ATOM 2846 HW1 SOL 948 0.241 27.241 28.411 1.00 0.00 H -ATOM 2847 HW2 SOL 948 1.361 26.321 29.161 1.00 0.00 H -ATOM 2848 OW SOL 949 30.711 23.871 21.371 1.00 0.00 O -ATOM 2849 HW1 SOL 949 30.841 23.031 21.911 1.00 0.00 H -ATOM 2850 HW2 SOL 949 30.421 24.611 21.971 1.00 0.00 H -ATOM 2851 OW SOL 950 21.691 20.751 30.931 1.00 0.00 O -ATOM 2852 HW1 SOL 950 21.461 21.121 31.831 1.00 0.00 H -ATOM 2853 HW2 SOL 950 21.391 19.801 30.871 1.00 0.00 H -ATOM 2854 OW SOL 951 18.991 0.491 0.211 1.00 0.00 O -ATOM 2855 HW1 SOL 951 19.521 0.001 0.891 1.00 0.00 H -ATOM 2856 HW2 SOL 951 19.211 1.471 0.261 1.00 0.00 H -ATOM 2857 OW SOL 952 25.941 24.961 29.261 1.00 0.00 O -ATOM 2858 HW1 SOL 952 26.531 24.701 28.501 1.00 0.00 H -ATOM 2859 HW2 SOL 952 25.661 25.921 29.151 1.00 0.00 H -ATOM 2860 OW SOL 953 21.691 19.251 24.801 1.00 0.00 O -ATOM 2861 HW1 SOL 953 21.581 20.191 25.131 1.00 0.00 H -ATOM 2862 HW2 SOL 953 21.641 18.621 25.571 1.00 0.00 H -ATOM 2863 OW SOL 954 28.851 26.281 28.281 1.00 0.00 O -ATOM 2864 HW1 SOL 954 29.001 26.491 29.241 1.00 0.00 H -ATOM 2865 HW2 SOL 954 28.551 25.331 28.191 1.00 0.00 H -ATOM 2866 OW SOL 955 0.421 27.001 19.041 1.00 0.00 O -ATOM 2867 HW1 SOL 955 0.761 26.071 19.191 1.00 0.00 H -ATOM 2868 HW2 SOL 955 0.601 27.271 18.091 1.00 0.00 H -ATOM 2869 OW SOL 956 21.811 26.721 28.111 1.00 0.00 O -ATOM 2870 HW1 SOL 956 22.741 27.081 28.161 1.00 0.00 H -ATOM 2871 HW2 SOL 956 21.751 25.871 28.631 1.00 0.00 H -ATOM 2872 OW SOL 957 22.011 23.711 28.681 1.00 0.00 O -ATOM 2873 HW1 SOL 957 21.491 22.881 28.511 1.00 0.00 H -ATOM 2874 HW2 SOL 957 22.781 23.761 28.041 1.00 0.00 H -ATOM 2875 OW SOL 958 28.641 26.581 31.001 1.00 0.00 O -ATOM 2876 HW1 SOL 958 29.051 26.261 31.861 1.00 0.00 H -ATOM 2877 HW2 SOL 958 27.681 26.311 30.971 1.00 0.00 H -ATOM 2878 OW SOL 959 19.021 24.061 29.761 1.00 0.00 O -ATOM 2879 HW1 SOL 959 19.871 23.731 29.351 1.00 0.00 H -ATOM 2880 HW2 SOL 959 19.151 24.211 30.741 1.00 0.00 H -ATOM 2881 OW SOL 960 26.771 24.341 21.871 1.00 0.00 O -ATOM 2882 HW1 SOL 960 26.841 23.451 21.411 1.00 0.00 H -ATOM 2883 HW2 SOL 960 25.831 24.681 21.791 1.00 0.00 H -ATOM 2884 OW SOL 961 25.331 23.261 0.081 1.00 0.00 O -ATOM 2885 HW1 SOL 961 24.991 22.371 -0.219 1.00 0.00 H -ATOM 2886 HW2 SOL 961 25.591 23.801 -0.719 1.00 0.00 H -ATOM 2887 OW SOL 962 23.351 23.621 20.531 1.00 0.00 O -ATOM 2888 HW1 SOL 962 23.961 24.421 20.571 1.00 0.00 H -ATOM 2889 HW2 SOL 962 22.401 23.931 20.601 1.00 0.00 H -ATOM 2890 OW SOL 963 0.861 29.211 30.961 1.00 0.00 O -ATOM 2891 HW1 SOL 963 1.101 28.581 30.221 1.00 0.00 H -ATOM 2892 HW2 SOL 963 -0.039 29.611 30.781 1.00 0.00 H -ATOM 2893 OW SOL 964 19.451 31.201 28.841 1.00 0.00 O -ATOM 2894 HW1 SOL 964 19.401 31.191 29.841 1.00 0.00 H -ATOM 2895 HW2 SOL 964 18.621 30.791 28.461 1.00 0.00 H -ATOM 2896 OW SOL 965 0.191 27.891 25.341 1.00 0.00 O -ATOM 2897 HW1 SOL 965 0.791 27.081 25.361 1.00 0.00 H -ATOM 2898 HW2 SOL 965 0.591 28.581 24.741 1.00 0.00 H -ATOM 2899 OW SOL 966 21.251 21.881 25.821 1.00 0.00 O -ATOM 2900 HW1 SOL 966 20.461 22.391 25.481 1.00 0.00 H -ATOM 2901 HW2 SOL 966 21.161 21.731 26.801 1.00 0.00 H -ATOM 2902 OW SOL 967 26.841 28.641 1.111 1.00 0.00 O -ATOM 2903 HW1 SOL 967 27.241 28.631 0.191 1.00 0.00 H -ATOM 2904 HW2 SOL 967 26.941 29.561 1.511 1.00 0.00 H -ATOM 2905 OW SOL 968 27.781 27.721 21.531 1.00 0.00 O -ATOM 2906 HW1 SOL 968 28.411 28.101 20.851 1.00 0.00 H -ATOM 2907 HW2 SOL 968 28.181 26.891 21.921 1.00 0.00 H -ATOM 2908 OW SOL 969 29.011 29.601 25.581 1.00 0.00 O -ATOM 2909 HW1 SOL 969 28.311 29.131 26.121 1.00 0.00 H -ATOM 2910 HW2 SOL 969 29.601 28.921 25.151 1.00 0.00 H -ATOM 2911 OW SOL 970 28.761 20.981 28.331 1.00 0.00 O -ATOM 2912 HW1 SOL 970 28.681 20.621 27.401 1.00 0.00 H -ATOM 2913 HW2 SOL 970 28.741 20.221 28.981 1.00 0.00 H -ATOM 2914 OW SOL 971 19.371 22.071 18.951 1.00 0.00 O -ATOM 2915 HW1 SOL 971 18.451 21.791 18.661 1.00 0.00 H -ATOM 2916 HW2 SOL 971 19.681 22.841 18.391 1.00 0.00 H -ATOM 2917 OW SOL 972 19.341 20.281 21.801 1.00 0.00 O -ATOM 2918 HW1 SOL 972 19.171 21.111 21.261 1.00 0.00 H -ATOM 2919 HW2 SOL 972 20.241 19.911 21.581 1.00 0.00 H -ATOM 2920 OW SOL 973 30.871 21.871 23.111 1.00 0.00 O -ATOM 2921 HW1 SOL 973 31.521 21.131 23.001 1.00 0.00 H -ATOM 2922 HW2 SOL 973 31.071 22.371 23.951 1.00 0.00 H -ATOM 2923 OW SOL 974 24.561 26.071 25.141 1.00 0.00 O -ATOM 2924 HW1 SOL 974 25.061 26.921 24.951 1.00 0.00 H -ATOM 2925 HW2 SOL 974 23.681 26.091 24.661 1.00 0.00 H -ATOM 2926 OW SOL 975 27.211 28.181 27.231 1.00 0.00 O -ATOM 2927 HW1 SOL 975 27.751 27.491 27.711 1.00 0.00 H -ATOM 2928 HW2 SOL 975 26.891 28.871 27.891 1.00 0.00 H -ATOM 2929 OW SOL 976 29.451 28.461 19.491 1.00 0.00 O -ATOM 2930 HW1 SOL 976 29.221 28.991 18.671 1.00 0.00 H -ATOM 2931 HW2 SOL 976 30.261 27.901 19.301 1.00 0.00 H -ATOM 2932 OW SOL 977 19.411 31.021 25.151 1.00 0.00 O -ATOM 2933 HW1 SOL 977 19.401 30.551 26.031 1.00 0.00 H -ATOM 2934 HW2 SOL 977 20.231 30.741 24.641 1.00 0.00 H -ATOM 2935 OW SOL 978 22.901 22.861 23.821 1.00 0.00 O -ATOM 2936 HW1 SOL 978 23.201 22.141 23.201 1.00 0.00 H -ATOM 2937 HW2 SOL 978 22.511 22.461 24.651 1.00 0.00 H -ATOM 2938 OW SOL 979 1.631 20.761 29.741 1.00 0.00 O -ATOM 2939 HW1 SOL 979 2.151 20.111 30.291 1.00 0.00 H -ATOM 2940 HW2 SOL 979 1.141 21.391 30.351 1.00 0.00 H -ATOM 2941 OW SOL 980 28.631 18.961 30.161 1.00 0.00 O -ATOM 2942 HW1 SOL 980 28.001 18.241 29.851 1.00 0.00 H -ATOM 2943 HW2 SOL 980 29.561 18.601 30.161 1.00 0.00 H -ATOM 2944 OW SOL 981 26.321 0.691 21.631 1.00 0.00 O -ATOM 2945 HW1 SOL 981 25.861 -0.179 21.801 1.00 0.00 H -ATOM 2946 HW2 SOL 981 27.231 0.661 22.041 1.00 0.00 H -ATOM 2947 OW SOL 982 0.911 19.141 20.301 1.00 0.00 O -ATOM 2948 HW1 SOL 982 1.261 18.731 19.461 1.00 0.00 H -ATOM 2949 HW2 SOL 982 0.011 18.761 20.501 1.00 0.00 H -ATOM 2950 OW SOL 983 0.391 23.151 25.531 1.00 0.00 O -ATOM 2951 HW1 SOL 983 -0.199 23.951 25.571 1.00 0.00 H -ATOM 2952 HW2 SOL 983 0.541 22.801 26.461 1.00 0.00 H -ATOM 2953 OW SOL 984 19.011 29.391 21.621 1.00 0.00 O -ATOM 2954 HW1 SOL 984 20.001 29.281 21.531 1.00 0.00 H -ATOM 2955 HW2 SOL 984 18.611 28.531 21.941 1.00 0.00 H -TER -ENDMDL diff --git a/examples/latte_interface_energy_forces/latte.in b/examples/latte_interface_energy_forces/latte.in deleted file mode 100644 index 99342abb..00000000 --- a/examples/latte_interface_energy_forces/latte.in +++ /dev/null @@ -1,57 +0,0 @@ - -#General controls -CONTROL{ - XCONTROL= 1 - BASISTYPE= NONORTHO - DEBUGON= 0 - FERMIM= 6 - CGORLIB= 1 CGTOL= 1.0e-6 - KBT= 0.0 - NORECS= 1 - PARAMPATH= '../../parameters/latte/TBparam/' - ENTROPYKIND= 1 - PPOTON= 1 VDWON= 0 - SPINON= 0 SPINTOL= 1.0e-4 - ELECTRO= 1 ELECMETH= 0 ELEC_ETOL= 0.001 ELEC_QTOL= 1.0e-4 - COULACC= 1.0e-6 COULCUT= -500.0 COULR1= 500.0 - MAXSCF= 1 - BREAKTOL= 1.0E-12 MINSP2ITER= 22 SP2CONV= REL - FULLQCONV= 0 QITER= 0 - QMIX= 0.25 SPINMIX= 0.25 MDMIX= 0.25 - ORDERNMOL= 0 - SPARSEON= 0 THRESHOLDON= 1 NUMTHRESH= 1.0e-6 FILLINSTOP= 100 BLKSZ= 4 - MSPARSE= 3000 - LCNON= 0 LCNITER= 4 CHTOL= 0.01 - SKIN= 1.0 - RELAX= 0 RELAXTYPE= SD MAXITER= 100 RLXFTOL= 0.00001 - MDON= 1 - PBCON= 1 - RESTART= 0 - CHARGE= 0 - XBO= 1 - XBODISON= 1 - XBODISORDER= 5 - NGPU= 2 - KON= 0 - COMPFORCE= 1 - DOSFIT= 0 INTS2FIT= 1 BETA= 1000.0 NFITSTEP= 5000 QFIT= 0 MCSIGMA= 0.2 - PPFITON= 0 - ALLFITON= 0 - PPSTEP= 500 BISTEP= 500 PP2FIT= 2 BINT2FIT= 6 - PPBETA= 1000.0 PPSIGMA= 0.01 PPNMOL= 10 PPNGEOM= 200 - PARREP= 0 - ER= 1.0 - VERBOSE= 3 - DOKERNEL= F - KBT= 0.086 -} - -#Controls for QMD -MDCONTROL{ - MAXITER= -1 -} - -MIXER{ - Verbose= 10 -} - diff --git a/examples/latte_interface_energy_forces/main.py b/examples/latte_interface_energy_forces/main.py deleted file mode 100644 index 106abc40..00000000 --- a/examples/latte_interface_energy_forces/main.py +++ /dev/null @@ -1,34 +0,0 @@ -"""Main sedacs prototype driver to perform a -graph-based addaptive construction of the density -matrix together with a full self-consistent charge -optimization""" - -import sys - -import numpy as np -from sedacs.driver.graph_adaptive_scf import get_adaptiveSCFDM -from sedacs.driver.graph_adaptive_sp_energy_forces import get_sp_energy_forces -from sedacs.driver.init import get_args, init -from sedacs.charges import get_charges -import sedacs.globals as gl - -# Pass arguments from comand line -args = get_args() - -# Initialize sedacs - -np.set_printoptions(threshold=sys.maxsize) - -# Initialize sdc parameters -sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init(args) - -sdc.verb = True - -# Perform a graph-adaptive calculation of the density matrix -mu = 0.0 -graphDH,sy.charges,mu,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu) - -graphDH,sy.charges,EPOT,FTOT,mu,parts,subSysOnRank = get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH, mu) - -print("total energy:", EPOT) -print("forces:", FTOT) diff --git a/examples/latte_interface_energy_forces/wat.pdb b/examples/latte_interface_energy_forces/wat.pdb deleted file mode 100644 index 034d516a..00000000 --- a/examples/latte_interface_energy_forces/wat.pdb +++ /dev/null @@ -1,9 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE coords_100.pdb -CRYST1 50.459 50.459 50.459 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H MOL 1 0.749 -0.000 0.442 0.00 0.00 H -ATOM 2 O MOL 1 0.000 0.020 -0.165 0.00 0.00 O -ATOM 3 H MOL 1 -0.749 -0.000 0.442 0.00 0.00 H -TER -END diff --git a/examples/latte_interface_energy_forces/wat.xyz b/examples/latte_interface_energy_forces/wat.xyz deleted file mode 100644 index 1f469a46..00000000 --- a/examples/latte_interface_energy_forces/wat.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -Lattice="110.00 0.0 0.0 0.0 110.00 0.0 0.0 0.0 110.00" -H 0.7493682 0.0000000 0.4424329 -O 0.0000000 0.0000000 -0.1653507 -H -0.7493682 0.0000000 0.4424329 diff --git a/examples/latte_interface_energy_forces/water_128.xyz b/examples/latte_interface_energy_forces/water_128.xyz deleted file mode 100644 index ddf850a9..00000000 --- a/examples/latte_interface_energy_forces/water_128.xyz +++ /dev/null @@ -1,386 +0,0 @@ -384 -Lattice="15.66 0.0 0.0 0.0 15.66 0.0 0.0 0.0 15.66" -H 1.4821741580963135 14.427353858947754 2.953700065612793 -O 1.6885966062545776 15.210265159606934 2.3970494270324707 -H 2.3674094676971436 14.887577056884766 1.7750413417816162 -H 1.725602626800537 1.2087194919586182 10.28447151184082 -O 1.457163691520691 0.2813889980316162 10.563945770263672 -H 1.375484585762024 0.24449187517166138 11.546887397766113 -H 12.558568954467773 14.682812690734863 9.085963249206543 -O 13.374778747558594 15.202472686767578 8.868748664855957 -H 14.192708969116211 14.738236427307129 9.219833374023438 -H 6.220971584320068 10.90986442565918 3.922910690307617 -O 5.395566463470459 11.367801666259766 3.851719856262207 -H 5.097456455230713 11.388015747070312 2.87663197517395 -H 13.928208351135254 6.038353443145752 1.3187469244003296 -O 14.39126968383789 6.452458381652832 0.5244671106338501 -H 14.677336692810059 5.6653947830200195 15.641419410705566 -H 11.000219345092773 1.4569547176361084 0.45885026454925537 -O 11.63747501373291 2.104846715927124 0.8563565611839294 -H 12.253790855407715 1.5968525409698486 1.4643044471740723 -H 8.34492301940918 10.484837532043457 4.09354305267334 -O 7.658782958984375 9.694025039672852 4.098236560821533 -H 8.161250114440918 8.91158390045166 4.3958234786987305 -H 15.37078857421875 9.183189392089844 11.81903076171875 -O 0.6639226675033569 9.312712669372559 11.556085586547852 -H 1.1555242538452148 8.781630516052246 12.177814483642578 -H 2.469231367111206 4.930058479309082 6.316625118255615 -O 1.8953945636749268 5.428220272064209 6.90617036819458 -H 1.317298173904419 4.663173198699951 7.2908854484558105 -H 4.391626834869385 1.8281409740447998 2.7765512466430664 -O 5.01270055770874 1.8962875604629517 2.043304443359375 -H 4.4229350090026855 2.101100444793701 1.224356770515442 -H 11.354153633117676 9.732658386230469 1.4163808822631836 -O 12.010466575622559 10.312472343444824 1.0070639848709106 -H 12.736639022827148 9.787837982177734 0.45557060837745667 -H 15.223688125610352 4.653311729431152 13.862953186035156 -O 14.768438339233398 4.34467887878418 14.679522514343262 -H 13.97741413116455 3.8146629333496094 14.375483512878418 -H 2.5933477878570557 2.2602338790893555 4.078963756561279 -O 3.5907583236694336 1.9742355346679688 4.357860565185547 -H 3.4221041202545166 1.4155670404434204 5.144217491149902 -H 11.827882766723633 5.23652458190918 12.129922866821289 -O 11.420333862304688 4.348351001739502 12.450085639953613 -H 11.13693618774414 3.948350667953491 11.59998893737793 -H 3.122493267059326 14.13240909576416 15.377690315246582 -O 3.406907320022583 13.9873685836792 0.637580156326294 -H 4.268272399902344 14.468565940856934 0.7348317503929138 -H 11.982939720153809 3.2170681953430176 6.133591651916504 -O 12.74484920501709 3.6578142642974854 6.557803630828857 -H 12.507513046264648 4.57366418838501 6.91209077835083 -H 4.577542304992676 5.402759075164795 0.7480008006095886 -O 3.8300294876098633 5.114811420440674 0.15346001088619232 -H 3.705512046813965 5.906427383422852 15.198246002197266 -H 4.8761677742004395 2.076591730117798 14.366914749145508 -O 5.596246242523193 1.586893081665039 13.9247465133667 -H 5.811666965484619 2.142857551574707 13.113996505737305 -H 13.377649307250977 1.042777180671692 9.423595428466797 -O 13.151018142700195 1.8292531967163086 10.050421714782715 -H 13.835417747497559 2.495191812515259 9.988792419433594 -H 7.997742176055908 11.266412734985352 9.060665130615234 -O 8.366767883300781 10.735424995422363 8.289185523986816 -H 7.682319641113281 10.126465797424316 8.000984191894531 -H 6.61982536315918 5.436073303222656 1.7336512804031372 -O 5.908255577087402 6.083886623382568 1.5545637607574463 -H 5.400964736938477 6.177191257476807 2.360203504562378 -H 13.306570053100586 8.240872383117676 12.238951683044434 -O 13.812541961669922 8.967954635620117 12.561972618103027 -H 13.299116134643555 9.732105255126953 12.134977340698242 -H 13.150106430053711 10.962871551513672 2.506638765335083 -O 13.738313674926758 11.23777961730957 3.2231998443603516 -H 14.14203929901123 12.027764320373535 2.7478020191192627 -H 9.468901634216309 8.692893028259277 11.753732681274414 -O 9.996575355529785 8.272689819335938 11.04357624053955 -H 9.358142852783203 7.589511394500732 10.609314918518066 -H 9.184500694274902 12.010608673095703 3.185051918029785 -O 9.332493782043457 11.644781112670898 4.082911014556885 -H 10.308004379272461 11.81727123260498 4.252378463745117 -H 14.13718318939209 3.084084987640381 6.320530414581299 -O 15.026741027832031 2.7198779582977295 6.185760021209717 -H 15.581278800964355 2.8094310760498047 7.003511428833008 -H 1.805783987045288 13.039594650268555 13.465221405029297 -O 1.2811273336410522 12.223275184631348 13.247485160827637 -H 0.8052940368652344 11.954380989074707 14.096330642700195 -H 8.574115753173828 12.27851676940918 1.1447495222091675 -O 9.307392120361328 12.729674339294434 1.5993788242340088 -H 8.992727279663086 13.581256866455078 1.8648567199707031 -H 0.4504242539405823 2.9571290016174316 4.610954761505127 -O 1.1356279850006104 2.80627703666687 3.858980894088745 -H 0.6570261716842651 2.2529356479644775 3.161118984222412 -H 2.2259984016418457 1.135374665260315 7.197758197784424 -O 2.8197834491729736 0.5862197875976562 6.640344619750977 -H 3.361316680908203 0.13465867936611176 7.2745137214660645 -H 2.7605855464935303 3.5155222415924072 10.508090019226074 -O 2.7270185947418213 2.7197012901306152 9.998039245605469 -H 3.6602747440338135 2.449582576751709 9.736455917358398 -H 5.481457233428955 0.6800147891044617 1.2360972166061401 -O 5.735907077789307 15.55340576171875 0.6875582933425903 -H 5.908614158630371 0.24427083134651184 15.490666389465332 -H 6.483280658721924 6.651552677154541 12.702972412109375 -O 6.861117839813232 5.836682319641113 12.391767501831055 -H 7.664957046508789 5.7625226974487305 13.000656127929688 -H 5.648747444152832 3.2264184951782227 8.506119728088379 -O 5.52994966506958 2.848599910736084 9.409486770629883 -H 6.039980888366699 2.0285658836364746 9.292366981506348 -H 12.85450553894043 6.765137195587158 10.680105209350586 -O 12.331360816955566 6.957432270050049 11.530010223388672 -H 11.486471176147461 7.264204025268555 11.158045768737793 -H 7.362239837646484 9.154353141784668 0.3254317045211792 -O 7.498302459716797 9.510848999023438 15.109041213989258 -H 8.419239044189453 9.094351768493652 14.665138244628906 -H 1.5374337434768677 4.2605109214782715 2.7824814319610596 -O 1.6234899759292603 5.16341495513916 2.2621734142303467 -H 2.4345974922180176 5.093528747558594 1.753399133682251 -H 13.98061466217041 13.565018653869629 0.982430636882782 -O 13.24919319152832 14.127765655517578 0.6269434690475464 -H 12.569368362426758 13.48637866973877 0.3310380280017853 -H 3.5146663188934326 10.071371078491211 1.0377812385559082 -O 2.739107131958008 9.517007827758789 0.8543626070022583 -H 2.8032007217407227 8.92596435546875 1.6306871175765991 -H 3.2404215335845947 9.397064208984375 7.563103199005127 -O 3.697007656097412 10.221046447753906 7.237059116363525 -H 3.5571937561035156 10.893165588378906 7.9507975578308105 -H 9.887673377990723 12.222174644470215 12.364692687988281 -O 9.317317962646484 13.004202842712402 11.984381675720215 -H 9.826249122619629 13.767129898071289 12.294698715209961 -H 14.60256576538086 1.0523858070373535 6.485602855682373 -O 14.413382530212402 0.06270215660333633 6.496177673339844 -H 14.147909164428711 15.534577369689941 7.447587966918945 -H 13.379937171936035 6.094424724578857 8.554449081420898 -O 13.894918441772461 6.2347235679626465 9.342596054077148 -H 14.61241626739502 6.858521938323975 9.085838317871094 -H 8.004314422607422 12.405964851379395 11.07300090789795 -O 7.369335651397705 12.221914291381836 10.350719451904297 -H 6.828718185424805 13.049220085144043 10.023193359375 -H 6.5086822509765625 14.756935119628906 4.994861602783203 -O 6.839446544647217 15.60968017578125 4.6459126472473145 -H 6.100698471069336 0.509876012802124 4.77648401260376 -H 1.814298391342163 7.485466480255127 14.199212074279785 -O 0.9792758822441101 7.4431376457214355 13.722976684570312 -H 0.34630855917930603 7.4032135009765625 14.47954273223877 -H 6.28085994720459 13.820106506347656 13.516830444335938 -O 6.905226230621338 13.168272972106934 13.857548713684082 -H 7.748592376708984 13.196846961975098 13.40528678894043 -H 2.5069146156311035 11.916142463684082 9.840462684631348 -O 2.6829140186309814 12.13232135772705 8.878107070922852 -H 1.8113011121749878 12.242073059082031 8.437335968017578 -H 14.037789344787598 9.845786094665527 4.642851829528809 -O 13.800369262695312 9.396403312683105 5.5100417137146 -H 14.389450073242188 8.535675048828125 5.423510551452637 -H 12.178966522216797 3.552061080932617 13.457749366760254 -O 12.67518424987793 2.939744710922241 14.132843971252441 -H 12.050117492675781 2.740718126296997 14.851271629333496 -H 6.341159820556641 4.153588771820068 12.246420860290527 -O 5.721994876861572 3.38653564453125 12.11013412475586 -H 5.833896160125732 3.1198267936706543 11.189043045043945 -H 0.4187822639942169 6.928407669067383 5.925801753997803 -O 15.306794166564941 7.189908027648926 5.43982458114624 -H 0.07627714425325394 7.3125996589660645 4.559133529663086 -H 15.205296516418457 13.601235389709473 10.856249809265137 -O 15.426885604858398 14.0115385055542 9.955629348754883 -H 0.4404774010181427 14.725579261779785 10.123786926269531 -H 7.781744480133057 6.341546058654785 10.87021255493164 -O 8.193033218383789 6.693912982940674 10.09223461151123 -H 7.419920921325684 6.874934673309326 9.521349906921387 -H 4.713289260864258 13.532459259033203 7.1375813484191895 -O 4.18504524230957 13.934209823608398 7.856135368347168 -H 3.663506269454956 13.236863136291504 8.294808387756348 -H 1.4324342012405396 7.933252811431885 8.537219047546387 -O 2.39997935295105 7.775256156921387 8.192770004272461 -H 2.2801403999328613 6.949921607971191 7.6617207527160645 -H 0.5963254570960999 6.013045310974121 12.672981262207031 -O 0.5425719022750854 4.989353179931641 12.51000690460205 -H 1.4733445644378662 4.74129056930542 12.26429271697998 -H 5.787660598754883 12.561777114868164 4.9811110496521 -O 5.850313663482666 13.304183006286621 5.696791172027588 -H 6.695471286773682 13.148829460144043 6.1641845703125 -H 9.32719898223877 8.223834991455078 1.8639791011810303 -O 10.29822063446045 8.110273361206055 1.9925719499588013 -H 10.310250282287598 7.87868595123291 2.945894479751587 -H 0.277807354927063 3.5526158809661865 8.722700119018555 -O 0.9846296906471252 3.210406541824341 8.203073501586914 -H 1.7031030654907227 3.0266921520233154 8.867362976074219 -H 2.8105833530426025 2.196861982345581 15.392070770263672 -O 3.735032796859741 2.4994215965270996 15.570079803466797 -H 3.644773006439209 3.4426615238189697 0.03853387013077736 -H 14.682604789733887 1.0238474607467651 2.0653231143951416 -O 15.566673278808594 1.3636430501937866 1.7907549142837524 -H 0.5717520117759705 0.6591038703918457 1.8086328506469727 -H 11.107076644897461 8.861739158630371 7.134167671203613 -O 11.434098243713379 8.342004776000977 6.366227149963379 -H 12.278743743896484 8.585103988647461 6.036701679229736 -H 6.849724292755127 2.226242780685425 14.659040451049805 -O 7.6959028244018555 2.413717269897461 15.109258651733398 -H 8.172039031982422 3.1463210582733154 14.650622367858887 -H 4.415694236755371 12.286710739135742 1.0233668088912964 -O 4.88289213180542 11.490494728088379 1.3367034196853638 -H 5.81308126449585 11.642242431640625 0.9043989777565002 -H 10.558619499206543 9.060455322265625 9.619710922241211 -O 10.549599647521973 9.386129379272461 8.682696342468262 -H 9.6725492477417 9.819774627685547 8.593550682067871 -H 6.1465864181518555 15.147404670715332 9.628643035888672 -O 5.529297351837158 14.445521354675293 9.938332557678223 -H 4.890136241912842 14.265419006347656 9.203654289245605 -H 12.137746810913086 14.339106559753418 4.88058614730835 -O 12.554288864135742 15.224326133728027 4.790942668914795 -H 13.392069816589355 15.262238502502441 5.262670993804932 -H 12.538585662841797 4.795741558074951 2.6958494186401367 -O 13.156197547912598 5.574193000793457 2.774204730987549 -H 13.542095184326172 5.429687976837158 3.6601510047912598 -H 1.6302706003189087 14.983660697937012 5.979812145233154 -O 0.8948200941085815 14.330414772033691 6.0626373291015625 -H 0.1337418407201767 14.884979248046875 6.267165660858154 -H 4.088843822479248 7.9247822761535645 14.16343879699707 -O 3.351106643676758 7.655316352844238 14.735418319702148 -H 3.2007994651794434 8.391205787658691 15.35331916809082 -H 0.15970730781555176 12.594325065612793 2.4045615196228027 -O 15.217007637023926 12.903790473937988 1.7151750326156616 -H 15.467392921447754 12.415807723999023 0.8731029033660889 -H 10.299698829650879 7.86765193939209 5.2782793045043945 -O 9.465031623840332 7.6437177658081055 4.793709754943848 -H 9.516728401184082 6.686868667602539 4.577350616455078 -H 11.606966972351074 11.700885772705078 0.35497593879699707 -O 11.372387886047363 12.519648551940918 15.574257850646973 -H 10.634315490722656 12.839116096496582 0.46611565351486206 -H 8.778069496154785 1.2632012367248535 15.487536430358887 -O 9.388166427612305 0.5421920418739319 0.13583745062351227 -H 9.037282943725586 0.09930628538131714 0.9319953322410583 -H 6.16838264465332 5.261773586273193 7.558151721954346 -O 6.098697662353516 4.416169166564941 7.145912170410156 -H 7.055895805358887 4.16866397857666 7.010154724121094 -H 7.392298221588135 10.838863372802734 15.570189476013184 -O 7.205356597900391 11.764328956604004 0.33388379216194153 -H 7.023780345916748 12.40236759185791 15.264869689941406 -H 8.928775787353516 4.274104595184326 5.8341803550720215 -O 8.753131866455078 3.6826674938201904 6.5963945388793945 -H 8.974727630615234 2.730682373046875 6.358644008636475 -H 0.35756778717041016 3.3287155628204346 15.077012062072754 -O 0.9291011691093445 2.5445761680603027 15.223231315612793 -H 0.5748293399810791 2.0781967639923096 0.3547714650630951 -H 4.015512466430664 3.467869758605957 4.926387310028076 -O 4.089820861816406 4.415233612060547 5.229217529296875 -H 4.887458801269531 4.509295463562012 5.778048038482666 -H 5.291957855224609 14.813364028930664 11.435693740844727 -O 5.140069007873535 14.953418731689453 12.421006202697754 -H 5.216044902801514 0.23042252659797668 12.654684066772461 -H 13.444220542907715 11.729223251342773 11.851582527160645 -O 12.642805099487305 11.136754989624023 11.598742485046387 -H 12.548523902893066 11.20355224609375 10.628812789916992 -H 9.697056770324707 15.593395233154297 14.027965545654297 -O 10.087967872619629 15.423428535461426 13.162454605102539 -H 11.05064868927002 0.002158439252525568 13.155196189880371 -H 2.523853063583374 11.595932006835938 12.188504219055176 -O 2.7947349548339844 11.257299423217773 11.32616901397705 -H 2.0624139308929443 10.607105255126953 11.156081199645996 -H 13.958531379699707 8.130409240722656 15.528944969177246 -O 13.822677612304688 9.02670955657959 15.227170944213867 -H 13.791452407836914 9.062285423278809 14.228338241577148 -H 10.27184772491455 9.424518585205078 13.943780899047852 -O 9.732276916503906 8.618180274963379 14.051572799682617 -H 10.166350364685059 8.033967971801758 14.658818244934082 -H 8.461220741271973 12.057075500488281 7.043845176696777 -O 8.419132232666016 12.80543041229248 6.415385723114014 -H 8.736284255981445 12.338397979736328 5.5919036865234375 -H 8.171420097351074 0.7793318033218384 5.426231861114502 -O 8.820952415466309 1.2351326942443848 6.013558864593506 -H 9.01926326751709 0.6126450300216675 6.739671230316162 -H 2.0820090770721436 7.869522571563721 3.1253793239593506 -O 2.9208269119262695 8.372122764587402 3.1731083393096924 -H 2.627509355545044 9.106399536132812 3.720787525177002 -H 11.650372505187988 10.628031730651855 8.698492050170898 -O 12.256834030151367 11.429168701171875 8.799505233764648 -H 13.083629608154297 11.129518508911133 8.284788131713867 -H 13.960386276245117 14.537196159362793 14.816256523132324 -O 14.3788480758667 14.84691047668457 13.965582847595215 -H 13.691018104553223 15.364837646484375 13.521903038024902 -H 11.58198356628418 1.196730613708496 5.081545829772949 -O 11.163005828857422 2.0494470596313477 5.276447772979736 -H 10.318563461303711 1.797735571861267 5.718932151794434 -H 6.0017476081848145 10.59385871887207 10.80034065246582 -O 5.272309303283691 10.05134105682373 11.150882720947266 -H 4.443428039550781 10.651139259338379 11.057957649230957 -H 12.516849517822266 11.899116516113281 4.271182060241699 -O 11.869437217712402 12.347843170166016 4.853531837463379 -H 12.166669845581055 12.171024322509766 5.7557244300842285 -H 15.470584869384766 4.516737461090088 11.073837280273438 -O 15.1124849319458 4.111335277557373 10.25562858581543 -H 14.591557502746582 4.877866744995117 9.938982963562012 -H 15.495829582214355 12.599084854125977 12.530135154724121 -O 14.549777030944824 12.876575469970703 12.166041374206543 -H 14.274829864501953 13.484247207641602 12.92894172668457 -H 4.544622421264648 5.858673572540283 4.278730869293213 -O 4.853733062744141 6.651581287384033 3.80159854888916 -H 4.038316249847412 7.112107276916504 3.6127209663391113 -H 11.086899757385254 2.9105334281921387 3.527799129486084 -O 11.044354438781738 3.5479931831359863 2.813129425048828 -H 11.100714683532715 3.017974376678467 2.005096435546875 -H 11.167326927185059 5.955437660217285 0.33261048793792725 -O 10.39560604095459 6.435065746307373 0.020402710884809494 -H 10.094603538513184 6.954756259918213 0.794249415397644 -H 5.193816661834717 9.804295539855957 7.193893909454346 -O 6.119728088378906 9.39712905883789 7.226724624633789 -H 6.320915699005127 9.148200988769531 6.31579065322876 -H 10.59584903717041 3.775369882583618 9.694656372070312 -O 10.687355041503906 2.999478340148926 10.27226734161377 -H 11.493496894836426 2.6317555904388428 9.933670043945312 -H 9.679096221923828 4.952756404876709 13.074913024902344 -O 8.934259414672852 4.986400127410889 13.691017150878906 -H 9.434240341186523 5.47733211517334 14.371708869934082 -H 3.9072349071502686 4.0586981773376465 11.940484046936035 -O 3.154937267303467 4.696625709533691 12.053990364074707 -H 3.5881435871124268 5.517663955688477 11.802338600158691 -H 0.2335490584373474 0.01581624709069729 13.774118423461914 -O 0.980350911617279 0.5342038869857788 13.378776550292969 -H 0.9922274947166443 1.4501113891601562 13.837281227111816 -H 12.65897274017334 0.9930011630058289 11.683954238891602 -O 12.707582473754883 0.764843225479126 12.696332931518555 -H 12.694315910339355 1.5772038698196411 13.278538703918457 -H 10.812484741210938 11.850899696350098 14.067712783813477 -O 10.624994277954102 11.294839859008789 13.30173397064209 -H 11.430129051208496 11.36072826385498 12.707429885864258 -H 7.020813941955566 7.331269264221191 1.747533917427063 -O 7.554996013641357 8.1338529586792 1.842114806175232 -H 7.4181599617004395 8.49007797241211 2.763763666152954 -H 11.144770622253418 5.892538547515869 8.100217819213867 -O 12.011418342590332 6.053420543670654 7.622436046600342 -H 11.807604789733887 6.768427848815918 7.026505947113037 -H 0.804131269454956 13.10036849975586 4.533726215362549 -O 1.1628715991973877 12.663919448852539 3.6855170726776123 -H 1.7346456050872803 11.923086166381836 3.9333012104034424 -H 9.218413352966309 1.9028451442718506 10.826943397521973 -O 8.582201957702637 1.300583004951477 11.322752952575684 -H 9.201321601867676 0.7191085815429688 11.809184074401855 -H 3.442178726196289 14.570088386535645 13.23493766784668 -O 2.64837646484375 14.339696884155273 13.757745742797852 -H 2.056213617324829 15.07002067565918 13.468094825744629 -H 6.184440612792969 8.607916831970215 14.012269973754883 -O 5.613175392150879 8.24959659576416 13.366471290588379 -H 5.421210289001465 8.999065399169922 12.734549522399902 -H 14.156079292297363 10.09754753112793 6.937656879425049 -O 14.381294250488281 10.39493465423584 7.833716869354248 -H 15.031318664550781 11.204416275024414 7.830630302429199 -H 9.186308860778809 5.373661041259766 9.201058387756348 -O 9.884927749633789 4.853215217590332 8.791373252868652 -H 9.495500564575195 4.389050006866455 7.994511127471924 -H 7.909711837768555 0.8771836757659912 10.073674201965332 -O 7.3992815017700195 0.40500327944755554 9.375271797180176 -H 8.047890663146973 0.01646227203309536 8.824193954467773 -H 4.144155025482178 7.798429012298584 11.0037202835083 -O 3.6634180545806885 7.110377311706543 10.5337553024292 -H 3.0318245887756348 7.595344543457031 9.977286338806152 -H 11.543298721313477 12.845231056213379 9.526606559753418 -O 11.121271133422852 13.702033042907715 9.871810913085938 -H 10.621376991271973 13.381515502929688 10.645342826843262 -H 7.287951469421387 15.405527114868164 1.4838590621948242 -O 8.058247566223145 15.133753776550293 2.1102092266082764 -H 7.733454704284668 15.314888954162598 3.0118229389190674 -H 5.935088634490967 7.812267303466797 7.968081951141357 -O 6.042677879333496 6.951498031616211 8.45356559753418 -H 5.2108025550842285 6.850614070892334 8.959635734558105 -H 15.26892375946045 9.244001388549805 8.84305191040039 -O 0.033080607652664185 8.36771297454834 9.159706115722656 -H 0.16065479815006256 8.65696907043457 10.071883201599121 -H 15.44448471069336 7.283434867858887 2.2880680561065674 -O 0.4308568835258484 7.290805816650391 2.960726737976074 -H 0.8542476892471313 6.4178080558776855 2.8072118759155273 -H 6.653284549713135 3.0818610191345215 2.4921748638153076 -O 7.361125946044922 3.674710988998413 2.2265164852142334 -H 7.656304359436035 3.247504234313965 1.4033161401748657 -H 13.179733276367188 15.35033893585205 1.7865592241287231 -O 13.136012077331543 0.4361955523490906 2.404041290283203 -H 13.092921257019043 15.597688674926758 3.281696081161499 -H 3.2176342010498047 10.340422630310059 5.482553958892822 -O 2.859381914138794 10.761625289916992 4.600158214569092 -H 3.671846389770508 10.996495246887207 4.227005958557129 -H 9.0103178024292 14.254643440246582 7.299729824066162 -O 9.379074096679688 15.032605171203613 7.842066287994385 -H 9.993480682373047 14.663202285766602 8.487648963928223 -H 1.057732105255127 10.423288345336914 0.49331533908843994 -O 0.2989242374897003 10.900001525878906 0.0640338882803917 -H 15.468161582946777 10.141322135925293 15.32434368133545 -H 0.5501918792724609 13.092039108276367 7.281371593475342 -O 0.34184548258781433 12.450984001159668 7.994649887084961 -H 0.06924410164356232 13.057560920715332 8.765048027038574 -H 9.83470630645752 4.528668403625488 3.769052028656006 -O 9.009892463684082 4.8917107582092285 4.168781280517578 -H 8.33976936340332 4.487730026245117 3.5564870834350586 diff --git a/examples/latte_scf/coords_100.pdb b/examples/latte_scf/coords_100.pdb deleted file mode 100644 index 63234eda..00000000 --- a/examples/latte_scf/coords_100.pdb +++ /dev/null @@ -1,306 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE coords_100.pdb -CRYST1 15.459 15.459 15.459 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H MOL 1 0.024 -0.035 0.000 0.00 0.00 H -ATOM 2 O MOL 1 0.965 0.020 0.000 0.00 0.00 O -ATOM 3 H MOL 1 1.141 -0.907 0.000 0.00 0.00 H -ATOM 4 H MOL 1 1.462 1.513 1.709 0.00 0.00 H -ATOM 5 O MOL 1 2.404 1.568 1.709 0.00 0.00 O -ATOM 6 H MOL 1 2.579 0.641 1.709 0.00 0.00 H -ATOM 7 H MOL 1 2.820 2.865 3.165 0.00 0.00 H -ATOM 8 O MOL 1 3.761 2.919 3.165 0.00 0.00 O -ATOM 9 H MOL 1 3.937 1.993 3.165 0.00 0.00 H -ATOM 10 H MOL 1 4.153 4.495 4.880 0.00 0.00 H -ATOM 11 O MOL 1 5.095 4.549 4.880 0.00 0.00 O -ATOM 12 H MOL 1 5.270 3.623 4.880 0.00 0.00 H -ATOM 13 H MOL 1 6.507 6.886 7.361 0.00 0.00 H -ATOM 14 O MOL 1 7.449 6.940 7.361 0.00 0.00 O -ATOM 15 H MOL 1 7.624 6.013 7.361 0.00 0.00 H -ATOM 16 H MOL 1 8.157 8.371 9.279 0.00 0.00 H -ATOM 17 O MOL 1 9.098 8.425 9.279 0.00 0.00 O -ATOM 18 H MOL 1 9.273 7.498 9.279 0.00 0.00 H -ATOM 19 H MOL 1 9.844 10.492 11.575 0.00 0.00 H -ATOM 20 O MOL 1 10.786 10.546 11.575 0.00 0.00 O -ATOM 21 H MOL 1 10.961 9.619 11.575 0.00 0.00 H -ATOM 22 H MOL 1 13.862 1.975 4.386 0.00 0.00 H -ATOM 23 O MOL 1 14.804 2.029 4.386 0.00 0.00 O -ATOM 24 H MOL 1 14.979 1.102 4.386 0.00 0.00 H -ATOM 25 H MOL 1 6.255 9.846 11.439 0.00 0.00 H -ATOM 26 O MOL 1 7.196 9.900 11.439 0.00 0.00 O -ATOM 27 H MOL 1 7.371 8.973 11.439 0.00 0.00 H -ATOM 28 H MOL 1 0.905 3.897 6.882 0.00 0.00 H -ATOM 29 O MOL 1 1.846 3.951 6.882 0.00 0.00 O -ATOM 30 H MOL 1 2.021 3.024 6.882 0.00 0.00 H -ATOM 31 H MOL 1 11.955 14.153 5.458 0.00 0.00 H -ATOM 32 O MOL 1 12.896 14.207 5.458 0.00 0.00 O -ATOM 33 H MOL 1 13.072 13.281 5.458 0.00 0.00 H -ATOM 34 H MOL 1 9.388 13.982 6.497 0.00 0.00 H -ATOM 35 O MOL 1 10.330 14.036 6.497 0.00 0.00 O -ATOM 36 H MOL 1 10.505 13.110 6.497 0.00 0.00 H -ATOM 37 H MOL 1 9.916 3.729 8.798 0.00 0.00 H -ATOM 38 O MOL 1 10.857 3.783 8.798 0.00 0.00 O -ATOM 39 H MOL 1 11.033 2.857 8.798 0.00 0.00 H -ATOM 40 H MOL 1 1.645 10.849 1.718 0.00 0.00 H -ATOM 41 O MOL 1 2.586 10.904 1.718 0.00 0.00 O -ATOM 42 H MOL 1 2.761 9.977 1.718 0.00 0.00 H -ATOM 43 H MOL 1 13.668 5.798 2.502 0.00 0.00 H -ATOM 44 O MOL 1 14.610 5.852 2.502 0.00 0.00 O -ATOM 45 H MOL 1 14.785 4.925 2.502 0.00 0.00 H -ATOM 46 H MOL 1 0.434 8.566 11.170 0.00 0.00 H -ATOM 47 O MOL 1 1.376 8.620 11.170 0.00 0.00 O -ATOM 48 H MOL 1 1.551 7.693 11.170 0.00 0.00 H -ATOM 49 H MOL 1 8.236 3.228 1.102 0.00 0.00 H -ATOM 50 O MOL 1 9.177 3.283 1.102 0.00 0.00 O -ATOM 51 H MOL 1 9.352 2.356 1.102 0.00 0.00 H -ATOM 52 H MOL 1 14.171 2.786 10.963 0.00 0.00 H -ATOM 53 O MOL 1 15.112 2.840 10.963 0.00 0.00 O -ATOM 54 H MOL 1 15.287 1.913 10.963 0.00 0.00 H -ATOM 55 H MOL 1 10.024 12.300 0.152 0.00 0.00 H -ATOM 56 O MOL 1 10.966 12.354 0.152 0.00 0.00 O -ATOM 57 H MOL 1 11.141 11.428 0.152 0.00 0.00 H -ATOM 58 H MOL 1 11.444 7.694 1.210 0.00 0.00 H -ATOM 59 O MOL 1 12.386 7.748 1.210 0.00 0.00 O -ATOM 60 H MOL 1 12.561 6.822 1.210 0.00 0.00 H -ATOM 61 H MOL 1 5.914 9.892 5.228 0.00 0.00 H -ATOM 62 O MOL 1 6.855 9.947 5.228 0.00 0.00 O -ATOM 63 H MOL 1 7.030 9.020 5.228 0.00 0.00 H -ATOM 64 H MOL 1 11.015 2.278 3.209 0.00 0.00 H -ATOM 65 O MOL 1 11.957 2.332 3.209 0.00 0.00 O -ATOM 66 H MOL 1 12.132 1.406 3.209 0.00 0.00 H -ATOM 67 H MOL 1 5.157 14.137 9.690 0.00 0.00 H -ATOM 68 O MOL 1 6.099 14.192 9.690 0.00 0.00 O -ATOM 69 H MOL 1 6.274 13.265 9.690 0.00 0.00 H -ATOM 70 H MOL 1 13.014 10.851 2.149 0.00 0.00 H -ATOM 71 O MOL 1 13.956 10.906 2.149 0.00 0.00 O -ATOM 72 H MOL 1 14.131 9.979 2.149 0.00 0.00 H -ATOM 73 H MOL 1 6.432 7.342 4.083 0.00 0.00 H -ATOM 74 O MOL 1 7.373 7.396 4.083 0.00 0.00 O -ATOM 75 H MOL 1 7.548 6.469 4.083 0.00 0.00 H -ATOM 76 H MOL 1 13.237 7.650 6.098 0.00 0.00 H -ATOM 77 O MOL 1 14.178 7.704 6.098 0.00 0.00 O -ATOM 78 H MOL 1 14.353 6.777 6.098 0.00 0.00 H -ATOM 79 H MOL 1 8.056 0.377 3.941 0.00 0.00 H -ATOM 80 O MOL 1 8.997 0.431 3.941 0.00 0.00 O -ATOM 81 H MOL 1 9.172 -0.495 3.941 0.00 0.00 H -ATOM 82 H MOL 1 4.396 9.364 7.094 0.00 0.00 H -ATOM 83 O MOL 1 5.337 9.418 7.094 0.00 0.00 O -ATOM 84 H MOL 1 5.512 8.491 7.094 0.00 0.00 H -ATOM 85 H MOL 1 5.060 0.593 11.823 0.00 0.00 H -ATOM 86 O MOL 1 6.002 0.647 11.823 0.00 0.00 O -ATOM 87 H MOL 1 6.177 -0.280 11.823 0.00 0.00 H -ATOM 88 H MOL 1 10.805 13.676 1.929 0.00 0.00 H -ATOM 89 O MOL 1 11.747 13.730 1.929 0.00 0.00 O -ATOM 90 H MOL 1 11.922 12.804 1.929 0.00 0.00 H -ATOM 91 H MOL 1 10.422 5.195 5.779 0.00 0.00 H -ATOM 92 O MOL 1 11.364 5.250 5.779 0.00 0.00 O -ATOM 93 H MOL 1 11.539 4.323 5.779 0.00 0.00 H -ATOM 94 H MOL 1 2.609 5.311 0.365 0.00 0.00 H -ATOM 95 O MOL 1 3.551 5.365 0.365 0.00 0.00 O -ATOM 96 H MOL 1 3.726 4.438 0.365 0.00 0.00 H -ATOM 97 H MOL 1 0.247 12.838 7.622 0.00 0.00 H -ATOM 98 O MOL 1 1.189 12.892 7.622 0.00 0.00 O -ATOM 99 H MOL 1 1.364 11.966 7.622 0.00 0.00 H -ATOM 100 H MOL 1 0.400 4.030 12.734 0.00 0.00 H -ATOM 101 O MOL 1 1.342 4.084 12.734 0.00 0.00 O -ATOM 102 H MOL 1 1.517 3.158 12.734 0.00 0.00 H -ATOM 103 H MOL 1 6.344 11.570 0.306 0.00 0.00 H -ATOM 104 O MOL 1 7.286 11.624 0.306 0.00 0.00 O -ATOM 105 H MOL 1 7.461 10.698 0.306 0.00 0.00 H -ATOM 106 H MOL 1 1.457 8.882 5.810 0.00 0.00 H -ATOM 107 O MOL 1 2.399 8.937 5.810 0.00 0.00 O -ATOM 108 H MOL 1 2.574 8.010 5.810 0.00 0.00 H -ATOM 109 H MOL 1 1.246 12.939 10.266 0.00 0.00 H -ATOM 110 O MOL 1 2.187 12.993 10.266 0.00 0.00 O -ATOM 111 H MOL 1 2.362 12.067 10.266 0.00 0.00 H -ATOM 112 H MOL 1 5.844 10.735 2.510 0.00 0.00 H -ATOM 113 O MOL 1 6.786 10.789 2.510 0.00 0.00 O -ATOM 114 H MOL 1 6.961 9.862 2.510 0.00 0.00 H -ATOM 115 H MOL 1 9.752 5.415 11.518 0.00 0.00 H -ATOM 116 O MOL 1 10.694 5.470 11.518 0.00 0.00 O -ATOM 117 H MOL 1 10.869 4.543 11.518 0.00 0.00 H -ATOM 118 H MOL 1 10.062 11.535 7.714 0.00 0.00 H -ATOM 119 O MOL 1 11.004 11.590 7.714 0.00 0.00 O -ATOM 120 H MOL 1 11.179 10.663 7.714 0.00 0.00 H -ATOM 121 H MOL 1 11.140 0.576 13.274 0.00 0.00 H -ATOM 122 O MOL 1 12.081 0.630 13.274 0.00 0.00 O -ATOM 123 H MOL 1 12.256 -0.297 13.274 0.00 0.00 H -ATOM 124 H MOL 1 8.664 2.794 6.440 0.00 0.00 H -ATOM 125 O MOL 1 9.606 2.848 6.440 0.00 0.00 O -ATOM 126 H MOL 1 9.781 1.921 6.440 0.00 0.00 H -ATOM 127 H MOL 1 1.908 5.146 9.029 0.00 0.00 H -ATOM 128 O MOL 1 2.849 5.201 9.029 0.00 0.00 O -ATOM 129 H MOL 1 3.024 4.274 9.029 0.00 0.00 H -ATOM 130 H MOL 1 12.294 7.322 11.253 0.00 0.00 H -ATOM 131 O MOL 1 13.235 7.377 11.253 0.00 0.00 O -ATOM 132 H MOL 1 13.410 6.450 11.253 0.00 0.00 H -ATOM 133 H MOL 1 11.098 6.253 8.089 0.00 0.00 H -ATOM 134 O MOL 1 12.039 6.307 8.089 0.00 0.00 O -ATOM 135 H MOL 1 12.214 5.381 8.089 0.00 0.00 H -ATOM 136 H MOL 1 4.497 3.412 10.233 0.00 0.00 H -ATOM 137 O MOL 1 5.438 3.466 10.233 0.00 0.00 O -ATOM 138 H MOL 1 5.613 2.539 10.233 0.00 0.00 H -ATOM 139 H MOL 1 12.642 9.031 8.163 0.00 0.00 H -ATOM 140 O MOL 1 13.584 9.085 8.163 0.00 0.00 O -ATOM 141 H MOL 1 13.759 8.159 8.163 0.00 0.00 H -ATOM 142 H MOL 1 1.618 12.178 5.523 0.00 0.00 H -ATOM 143 O MOL 1 2.560 12.233 5.523 0.00 0.00 O -ATOM 144 H MOL 1 2.735 11.306 5.523 0.00 0.00 H -ATOM 145 H MOL 1 11.030 2.396 11.405 0.00 0.00 H -ATOM 146 O MOL 1 11.971 2.450 11.405 0.00 0.00 O -ATOM 147 H MOL 1 12.146 1.524 11.405 0.00 0.00 H -ATOM 148 H MOL 1 13.962 8.475 13.187 0.00 0.00 H -ATOM 149 O MOL 1 14.903 8.529 13.187 0.00 0.00 O -ATOM 150 H MOL 1 15.078 7.602 13.187 0.00 0.00 H -ATOM 151 H MOL 1 9.462 8.027 5.394 0.00 0.00 H -ATOM 152 O MOL 1 10.404 8.081 5.394 0.00 0.00 O -ATOM 153 H MOL 1 10.579 7.155 5.394 0.00 0.00 H -ATOM 154 H MOL 1 8.529 8.120 2.400 0.00 0.00 H -ATOM 155 O MOL 1 9.471 8.175 2.400 0.00 0.00 O -ATOM 156 H MOL 1 9.646 7.248 2.400 0.00 0.00 H -ATOM 157 H MOL 1 8.139 0.978 12.304 0.00 0.00 H -ATOM 158 O MOL 1 9.081 1.033 12.304 0.00 0.00 O -ATOM 159 H MOL 1 9.256 0.106 12.304 0.00 0.00 H -ATOM 160 H MOL 1 1.628 12.028 12.490 0.00 0.00 H -ATOM 161 O MOL 1 2.569 12.082 12.490 0.00 0.00 O -ATOM 162 H MOL 1 2.744 11.155 12.490 0.00 0.00 H -ATOM 163 H MOL 1 6.188 3.476 7.931 0.00 0.00 H -ATOM 164 O MOL 1 7.129 3.530 7.931 0.00 0.00 O -ATOM 165 H MOL 1 7.305 2.604 7.931 0.00 0.00 H -ATOM 166 H MOL 1 11.865 12.623 9.604 0.00 0.00 H -ATOM 167 O MOL 1 12.807 12.677 9.604 0.00 0.00 O -ATOM 168 H MOL 1 12.982 11.750 9.604 0.00 0.00 H -ATOM 169 H MOL 1 9.083 5.793 0.741 0.00 0.00 H -ATOM 170 O MOL 1 10.025 5.847 0.741 0.00 0.00 O -ATOM 171 H MOL 1 10.200 4.921 0.741 0.00 0.00 H -ATOM 172 H MOL 1 13.001 1.894 6.496 0.00 0.00 H -ATOM 173 O MOL 1 13.942 1.949 6.496 0.00 0.00 O -ATOM 174 H MOL 1 14.117 1.022 6.496 0.00 0.00 H -ATOM 175 H MOL 1 1.513 8.921 9.234 0.00 0.00 H -ATOM 176 O MOL 1 2.454 8.975 9.234 0.00 0.00 O -ATOM 177 H MOL 1 2.629 8.049 9.234 0.00 0.00 H -ATOM 178 H MOL 1 5.013 8.716 0.609 0.00 0.00 H -ATOM 179 O MOL 1 5.954 8.770 0.609 0.00 0.00 O -ATOM 180 H MOL 1 6.129 7.843 0.609 0.00 0.00 H -ATOM 181 H MOL 1 6.661 3.635 13.318 0.00 0.00 H -ATOM 182 O MOL 1 7.602 3.690 13.318 0.00 0.00 O -ATOM 183 H MOL 1 7.777 2.763 13.318 0.00 0.00 H -ATOM 184 H MOL 1 5.109 3.641 1.722 0.00 0.00 H -ATOM 185 O MOL 1 6.050 3.696 1.722 0.00 0.00 O -ATOM 186 H MOL 1 6.225 2.769 1.722 0.00 0.00 H -ATOM 187 H MOL 1 6.461 0.702 0.842 0.00 0.00 H -ATOM 188 O MOL 1 7.402 0.757 0.842 0.00 0.00 O -ATOM 189 H MOL 1 7.577 -0.170 0.842 0.00 0.00 H -ATOM 190 H MOL 1 3.083 7.592 2.472 0.00 0.00 H -ATOM 191 O MOL 1 4.025 7.646 2.472 0.00 0.00 O -ATOM 192 H MOL 1 4.200 6.720 2.472 0.00 0.00 H -ATOM 193 H MOL 1 8.638 14.297 9.461 0.00 0.00 H -ATOM 194 O MOL 1 9.579 14.352 9.461 0.00 0.00 O -ATOM 195 H MOL 1 9.754 13.425 9.461 0.00 0.00 H -ATOM 196 H MOL 1 4.773 13.629 6.292 0.00 0.00 H -ATOM 197 O MOL 1 5.714 13.684 6.292 0.00 0.00 O -ATOM 198 H MOL 1 5.889 12.757 6.292 0.00 0.00 H -ATOM 199 H MOL 1 7.047 3.198 3.702 0.00 0.00 H -ATOM 200 O MOL 1 7.989 3.252 3.702 0.00 0.00 O -ATOM 201 H MOL 1 8.164 2.326 3.702 0.00 0.00 H -ATOM 202 H MOL 1 2.094 0.204 8.780 0.00 0.00 H -ATOM 203 O MOL 1 3.035 0.258 8.780 0.00 0.00 O -ATOM 204 H MOL 1 3.210 -0.669 8.780 0.00 0.00 H -ATOM 205 H MOL 1 6.427 6.710 13.409 0.00 0.00 H -ATOM 206 O MOL 1 7.368 6.765 13.409 0.00 0.00 O -ATOM 207 H MOL 1 7.543 5.838 13.409 0.00 0.00 H -ATOM 208 H MOL 1 4.534 6.437 9.463 0.00 0.00 H -ATOM 209 O MOL 1 5.476 6.491 9.463 0.00 0.00 O -ATOM 210 H MOL 1 5.651 5.565 9.463 0.00 0.00 H -ATOM 211 H MOL 1 2.755 13.902 4.044 0.00 0.00 H -ATOM 212 O MOL 1 3.697 13.957 4.044 0.00 0.00 O -ATOM 213 H MOL 1 3.872 13.030 4.044 0.00 0.00 H -ATOM 214 H MOL 1 3.647 9.025 13.044 0.00 0.00 H -ATOM 215 O MOL 1 4.589 9.080 13.044 0.00 0.00 O -ATOM 216 H MOL 1 4.764 8.153 13.044 0.00 0.00 H -ATOM 217 H MOL 1 2.475 1.170 14.119 0.00 0.00 H -ATOM 218 O MOL 1 3.416 1.224 14.119 0.00 0.00 O -ATOM 219 H MOL 1 3.592 0.298 14.119 0.00 0.00 H -ATOM 220 H MOL 1 9.573 10.933 2.915 0.00 0.00 H -ATOM 221 O MOL 1 10.514 10.988 2.915 0.00 0.00 O -ATOM 222 H MOL 1 10.689 10.061 2.915 0.00 0.00 H -ATOM 223 H MOL 1 6.960 10.953 7.307 0.00 0.00 H -ATOM 224 O MOL 1 7.901 11.007 7.307 0.00 0.00 O -ATOM 225 H MOL 1 8.076 10.080 7.307 0.00 0.00 H -ATOM 226 H MOL 1 12.713 4.501 0.595 0.00 0.00 H -ATOM 227 O MOL 1 13.655 4.555 0.595 0.00 0.00 O -ATOM 228 H MOL 1 13.830 3.628 0.595 0.00 0.00 H -ATOM 229 H MOL 1 13.212 11.633 13.218 0.00 0.00 H -ATOM 230 O MOL 1 14.154 11.687 13.218 0.00 0.00 O -ATOM 231 H MOL 1 14.329 10.761 13.218 0.00 0.00 H -ATOM 232 H MOL 1 11.861 13.431 11.502 0.00 0.00 H -ATOM 233 O MOL 1 12.803 13.485 11.502 0.00 0.00 O -ATOM 234 H MOL 1 12.978 12.558 11.502 0.00 0.00 H -ATOM 235 H MOL 1 9.400 8.430 13.259 0.00 0.00 H -ATOM 236 O MOL 1 10.342 8.485 13.259 0.00 0.00 O -ATOM 237 H MOL 1 10.517 7.558 13.259 0.00 0.00 H -ATOM 238 H MOL 1 2.820 1.799 5.389 0.00 0.00 H -ATOM 239 O MOL 1 3.762 1.854 5.389 0.00 0.00 O -ATOM 240 H MOL 1 3.937 0.927 5.389 0.00 0.00 H -ATOM 241 H MOL 1 9.302 11.302 5.371 0.00 0.00 H -ATOM 242 O MOL 1 10.244 11.357 5.371 0.00 0.00 O -ATOM 243 H MOL 1 10.419 10.430 5.371 0.00 0.00 H -ATOM 244 H MOL 1 7.076 12.436 12.400 0.00 0.00 H -ATOM 245 O MOL 1 8.017 12.491 12.400 0.00 0.00 O -ATOM 246 H MOL 1 8.192 11.564 12.400 0.00 0.00 H -ATOM 247 H MOL 1 0.564 8.190 0.846 0.00 0.00 H -ATOM 248 O MOL 1 1.505 8.245 0.846 0.00 0.00 O -ATOM 249 H MOL 1 1.680 7.318 0.846 0.00 0.00 H -ATOM 250 H MOL 1 7.010 11.136 9.638 0.00 0.00 H -ATOM 251 O MOL 1 7.952 11.191 9.638 0.00 0.00 O -ATOM 252 H MOL 1 8.127 10.264 9.638 0.00 0.00 H -ATOM 253 H MOL 1 9.268 5.723 3.606 0.00 0.00 H -ATOM 254 O MOL 1 10.209 5.777 3.606 0.00 0.00 O -ATOM 255 H MOL 1 10.384 4.850 3.606 0.00 0.00 H -ATOM 256 H MOL 1 13.390 10.203 4.472 0.00 0.00 H -ATOM 257 O MOL 1 14.332 10.257 4.472 0.00 0.00 O -ATOM 258 H MOL 1 14.507 9.330 4.472 0.00 0.00 H -ATOM 259 H MOL 1 3.876 5.191 11.945 0.00 0.00 H -ATOM 260 O MOL 1 4.818 5.246 11.945 0.00 0.00 O -ATOM 261 H MOL 1 4.993 4.319 11.945 0.00 0.00 H -ATOM 262 H MOL 1 6.226 6.828 11.264 0.00 0.00 H -ATOM 263 O MOL 1 7.167 6.882 11.264 0.00 0.00 O -ATOM 264 H MOL 1 7.342 5.955 11.264 0.00 0.00 H -ATOM 265 H MOL 1 3.202 9.766 3.900 0.00 0.00 H -ATOM 266 O MOL 1 4.143 9.821 3.900 0.00 0.00 O -ATOM 267 H MOL 1 4.318 8.894 3.900 0.00 0.00 H -ATOM 268 H MOL 1 12.942 5.592 4.532 0.00 0.00 H -ATOM 269 O MOL 1 13.884 5.646 4.532 0.00 0.00 O -ATOM 270 H MOL 1 14.059 4.719 4.532 0.00 0.00 H -ATOM 271 H MOL 1 4.341 9.628 9.004 0.00 0.00 H -ATOM 272 O MOL 1 5.282 9.682 9.004 0.00 0.00 O -ATOM 273 H MOL 1 5.458 8.755 9.004 0.00 0.00 H -ATOM 274 H MOL 1 13.274 13.142 3.549 0.00 0.00 H -ATOM 275 O MOL 1 14.216 13.197 3.549 0.00 0.00 O -ATOM 276 H MOL 1 14.391 12.270 3.549 0.00 0.00 H -ATOM 277 H MOL 1 3.276 6.152 7.287 0.00 0.00 H -ATOM 278 O MOL 1 4.217 6.206 7.287 0.00 0.00 O -ATOM 279 H MOL 1 4.392 5.279 7.287 0.00 0.00 H -ATOM 280 H MOL 1 6.608 12.279 4.127 0.00 0.00 H -ATOM 281 O MOL 1 7.550 12.333 4.127 0.00 0.00 O -ATOM 282 H MOL 1 7.725 11.406 4.127 0.00 0.00 H -ATOM 283 H MOL 1 14.089 2.765 8.432 0.00 0.00 H -ATOM 284 O MOL 1 15.031 2.819 8.432 0.00 0.00 O -ATOM 285 H MOL 1 15.206 1.892 8.432 0.00 0.00 H -ATOM 286 H MOL 1 12.247 0.859 8.664 0.00 0.00 H -ATOM 287 O MOL 1 13.188 0.913 8.664 0.00 0.00 O -ATOM 288 H MOL 1 13.363 -0.014 8.664 0.00 0.00 H -ATOM 289 H MOL 1 4.467 13.517 1.951 0.00 0.00 H -ATOM 290 O MOL 1 5.409 13.571 1.951 0.00 0.00 O -ATOM 291 H MOL 1 5.584 12.645 1.951 0.00 0.00 H -ATOM 292 H MOL 1 14.342 0.329 12.432 0.00 0.00 H -ATOM 293 O MOL 1 15.283 0.384 12.432 0.00 0.00 O -ATOM 294 H MOL 1 15.459 -0.543 12.432 0.00 0.00 H -ATOM 295 H MOL 1 11.322 2.305 0.943 0.00 0.00 H -ATOM 296 O MOL 1 12.263 2.360 0.943 0.00 0.00 O -ATOM 297 H MOL 1 12.438 1.433 0.943 0.00 0.00 H -ATOM 298 H MOL 1 7.319 4.026 10.612 0.00 0.00 H -ATOM 299 O MOL 1 8.261 4.081 10.612 0.00 0.00 O -ATOM 300 H MOL 1 8.436 3.154 10.612 0.00 0.00 H -TER -END diff --git a/examples/latte_scf/coords_1032.pdb b/examples/latte_scf/coords_1032.pdb deleted file mode 100644 index 549a703b..00000000 --- a/examples/latte_scf/coords_1032.pdb +++ /dev/null @@ -1,1038 +0,0 @@ -TITLE my_single_water.xyz -REMARK THIS IS A SIMULATION BOX -CRYST1 21.830 21.830 21.830 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 O HOH 1 10.727 10.734 10.915 1.00 0.00 O -ATOM 2 H HOH 0 10.309 11.595 10.915 1.00 0.00 H -ATOM 3 H HOH 0 11.708 10.415 10.915 1.00 0.00 H -ATOM 4 OW SOL 1 2.250 2.750 9.961 1.00 0.00 O -ATOM 5 HW1 SOL 1 2.600 2.580 10.881 1.00 0.00 H -ATOM 6 HW2 SOL 1 1.370 2.300 9.841 1.00 0.00 H -ATOM 7 OW SOL 2 5.690 12.751 11.651 1.00 0.00 O -ATOM 8 HW1 SOL 2 4.760 12.681 11.281 1.00 0.00 H -ATOM 9 HW2 SOL 2 5.800 13.641 12.091 1.00 0.00 H -ATOM 10 OW SOL 3 15.551 15.111 7.030 1.00 0.00 O -ATOM 11 HW1 SOL 3 14.981 14.951 7.840 1.00 0.00 H -ATOM 12 HW2 SOL 3 14.961 15.211 6.230 1.00 0.00 H -ATOM 13 OW SOL 4 17.431 6.180 8.560 1.00 0.00 O -ATOM 14 HW1 SOL 4 17.761 7.120 8.560 1.00 0.00 H -ATOM 15 HW2 SOL 4 17.941 5.640 9.220 1.00 0.00 H -ATOM 16 OW SOL 5 11.351 7.030 7.170 1.00 0.00 O -ATOM 17 HW1 SOL 5 11.921 7.810 6.920 1.00 0.00 H -ATOM 18 HW2 SOL 5 10.751 7.290 7.930 1.00 0.00 H -ATOM 19 OW SOL 6 17.551 6.070 2.310 1.00 0.00 O -ATOM 20 HW1 SOL 6 17.431 5.940 1.320 1.00 0.00 H -ATOM 21 HW2 SOL 6 17.251 5.260 2.800 1.00 0.00 H -ATOM 22 OW SOL 7 7.680 11.441 10.231 1.00 0.00 O -ATOM 23 HW1 SOL 7 6.900 11.611 10.831 1.00 0.00 H -ATOM 24 HW2 SOL 7 8.020 12.311 9.871 1.00 0.00 H -ATOM 25 OW SOL 8 8.500 7.980 18.231 1.00 0.00 O -ATOM 26 HW1 SOL 8 8.460 8.740 18.881 1.00 0.00 H -ATOM 27 HW2 SOL 8 8.720 8.340 17.321 1.00 0.00 H -ATOM 28 OW SOL 9 6.850 10.121 6.650 1.00 0.00 O -ATOM 29 HW1 SOL 9 7.540 9.961 7.350 1.00 0.00 H -ATOM 30 HW2 SOL 9 6.120 10.691 7.030 1.00 0.00 H -ATOM 31 OW SOL 10 6.860 11.611 18.031 1.00 0.00 O -ATOM 32 HW1 SOL 10 7.460 12.401 18.171 1.00 0.00 H -ATOM 33 HW2 SOL 10 6.000 11.921 17.621 1.00 0.00 H -ATOM 34 OW SOL 11 3.350 14.351 10.611 1.00 0.00 O -ATOM 35 HW1 SOL 11 2.570 14.041 10.081 1.00 0.00 H -ATOM 36 HW2 SOL 11 3.930 14.931 10.041 1.00 0.00 H -ATOM 37 OW SOL 12 14.601 15.051 13.391 1.00 0.00 O -ATOM 38 HW1 SOL 12 14.841 15.991 13.651 1.00 0.00 H -ATOM 39 HW2 SOL 12 14.441 14.511 14.211 1.00 0.00 H -ATOM 40 OW SOL 13 4.380 3.920 14.991 1.00 0.00 O -ATOM 41 HW1 SOL 13 5.200 3.360 15.081 1.00 0.00 H -ATOM 42 HW2 SOL 13 3.570 3.340 15.031 1.00 0.00 H -ATOM 43 OW SOL 14 2.310 17.131 4.830 1.00 0.00 O -ATOM 44 HW1 SOL 14 2.650 17.901 5.370 1.00 0.00 H -ATOM 45 HW2 SOL 14 2.750 17.131 3.930 1.00 0.00 H -ATOM 46 OW SOL 15 11.271 13.411 16.901 1.00 0.00 O -ATOM 47 HW1 SOL 15 11.741 13.411 17.781 1.00 0.00 H -ATOM 48 HW2 SOL 15 10.791 12.541 16.791 1.00 0.00 H -ATOM 49 OW SOL 16 2.300 14.341 5.380 1.00 0.00 O -ATOM 50 HW1 SOL 16 2.040 15.301 5.380 1.00 0.00 H -ATOM 51 HW2 SOL 16 1.590 13.801 5.830 1.00 0.00 H -ATOM 52 OW SOL 17 2.400 10.911 8.860 1.00 0.00 O -ATOM 53 HW1 SOL 17 2.540 10.071 9.380 1.00 0.00 H -ATOM 54 HW2 SOL 17 1.850 11.551 9.410 1.00 0.00 H -ATOM 55 OW SOL 18 6.200 17.861 14.391 1.00 0.00 O -ATOM 56 HW1 SOL 18 5.280 17.691 14.741 1.00 0.00 H -ATOM 57 HW2 SOL 18 6.480 18.781 14.651 1.00 0.00 H -ATOM 58 OW SOL 19 6.060 9.641 1.230 1.00 0.00 O -ATOM 59 HW1 SOL 19 6.130 10.481 0.690 1.00 0.00 H -ATOM 60 HW2 SOL 19 6.520 9.771 2.110 1.00 0.00 H -ATOM 61 OW SOL 20 15.941 1.140 14.801 1.00 0.00 O -ATOM 62 HW1 SOL 20 15.761 1.810 14.081 1.00 0.00 H -ATOM 63 HW2 SOL 20 15.911 1.600 15.691 1.00 0.00 H -ATOM 64 OW SOL 21 18.421 17.671 3.590 1.00 0.00 O -ATOM 65 HW1 SOL 21 18.961 17.381 4.390 1.00 0.00 H -ATOM 66 HW2 SOL 21 18.721 18.571 3.300 1.00 0.00 H -ATOM 67 OW SOL 22 16.891 9.220 6.120 1.00 0.00 O -ATOM 68 HW1 SOL 22 17.841 8.930 6.200 1.00 0.00 H -ATOM 69 HW2 SOL 22 16.811 9.870 5.370 1.00 0.00 H -ATOM 70 OW SOL 23 16.411 11.081 4.320 1.00 0.00 O -ATOM 71 HW1 SOL 23 17.271 11.101 3.800 1.00 0.00 H -ATOM 72 HW2 SOL 23 16.551 11.551 5.200 1.00 0.00 H -ATOM 73 OW SOL 24 1.130 7.370 15.971 1.00 0.00 O -ATOM 74 HW1 SOL 24 2.010 7.240 16.421 1.00 0.00 H -ATOM 75 HW2 SOL 24 1.000 8.340 15.751 1.00 0.00 H -ATOM 76 OW SOL 25 6.130 13.651 7.260 1.00 0.00 O -ATOM 77 HW1 SOL 25 5.640 12.781 7.350 1.00 0.00 H -ATOM 78 HW2 SOL 25 5.900 14.081 6.390 1.00 0.00 H -ATOM 79 OW SOL 26 12.931 12.281 14.231 1.00 0.00 O -ATOM 80 HW1 SOL 26 13.301 11.551 13.651 1.00 0.00 H -ATOM 81 HW2 SOL 26 13.451 12.331 15.081 1.00 0.00 H -ATOM 82 OW SOL 27 8.090 0.040 5.020 1.00 0.00 O -ATOM 83 HW1 SOL 27 8.490 0.950 4.930 1.00 0.00 H -ATOM 84 HW2 SOL 27 7.090 0.120 5.080 1.00 0.00 H -ATOM 85 OW SOL 28 15.251 9.991 1.900 1.00 0.00 O -ATOM 86 HW1 SOL 28 14.621 9.231 2.030 1.00 0.00 H -ATOM 87 HW2 SOL 28 15.731 10.171 2.760 1.00 0.00 H -ATOM 88 OW SOL 29 11.871 17.921 16.161 1.00 0.00 O -ATOM 89 HW1 SOL 29 12.111 18.521 15.401 1.00 0.00 H -ATOM 90 HW2 SOL 29 11.941 16.971 15.861 1.00 0.00 H -ATOM 91 OW SOL 30 3.170 2.510 18.011 1.00 0.00 O -ATOM 92 HW1 SOL 30 3.880 3.220 18.071 1.00 0.00 H -ATOM 93 HW2 SOL 30 2.290 2.900 18.291 1.00 0.00 H -ATOM 94 OW SOL 31 14.661 14.171 9.531 1.00 0.00 O -ATOM 95 HW1 SOL 31 14.071 14.231 10.331 1.00 0.00 H -ATOM 96 HW2 SOL 31 14.511 13.291 9.071 1.00 0.00 H -ATOM 97 OW SOL 32 16.671 17.141 5.720 1.00 0.00 O -ATOM 98 HW1 SOL 32 16.261 16.911 4.840 1.00 0.00 H -ATOM 99 HW2 SOL 32 16.491 16.401 6.370 1.00 0.00 H -ATOM 100 OW SOL 33 5.980 7.290 2.700 1.00 0.00 O -ATOM 101 HW1 SOL 33 6.220 7.980 2.020 1.00 0.00 H -ATOM 102 HW2 SOL 33 5.200 7.620 3.240 1.00 0.00 H -ATOM 103 OW SOL 34 12.811 3.450 9.441 1.00 0.00 O -ATOM 104 HW1 SOL 34 11.951 2.950 9.311 1.00 0.00 H -ATOM 105 HW2 SOL 34 13.431 2.910 10.001 1.00 0.00 H -ATOM 106 OW SOL 35 15.761 16.621 3.070 1.00 0.00 O -ATOM 107 HW1 SOL 35 16.651 17.081 3.100 1.00 0.00 H -ATOM 108 HW2 SOL 35 15.551 16.381 2.120 1.00 0.00 H -ATOM 109 OW SOL 36 8.070 6.050 14.651 1.00 0.00 O -ATOM 110 HW1 SOL 36 7.600 6.020 15.541 1.00 0.00 H -ATOM 111 HW2 SOL 36 7.560 5.500 13.991 1.00 0.00 H -ATOM 112 OW SOL 37 13.941 4.690 16.741 1.00 0.00 O -ATOM 113 HW1 SOL 37 13.741 5.120 17.621 1.00 0.00 H -ATOM 114 HW2 SOL 37 14.721 4.070 16.831 1.00 0.00 H -ATOM 115 OW SOL 38 9.731 8.900 15.721 1.00 0.00 O -ATOM 116 HW1 SOL 38 10.191 8.060 15.431 1.00 0.00 H -ATOM 117 HW2 SOL 38 9.171 9.240 14.971 1.00 0.00 H -ATOM 118 OW SOL 39 9.911 4.100 12.421 1.00 0.00 O -ATOM 119 HW1 SOL 39 9.141 4.440 12.961 1.00 0.00 H -ATOM 120 HW2 SOL 39 9.571 3.590 11.631 1.00 0.00 H -ATOM 121 OW SOL 40 10.411 7.010 4.290 1.00 0.00 O -ATOM 122 HW1 SOL 40 10.671 6.970 5.250 1.00 0.00 H -ATOM 123 HW2 SOL 40 9.561 6.500 4.150 1.00 0.00 H -ATOM 124 OW SOL 41 0.760 8.110 7.890 1.00 0.00 O -ATOM 125 HW1 SOL 41 1.750 7.990 7.980 1.00 0.00 H -ATOM 126 HW2 SOL 41 0.520 9.060 8.100 1.00 0.00 H -ATOM 127 OW SOL 42 8.650 3.480 1.950 1.00 0.00 O -ATOM 128 HW1 SOL 42 9.240 4.110 1.460 1.00 0.00 H -ATOM 129 HW2 SOL 42 8.840 2.540 1.660 1.00 0.00 H -ATOM 130 OW SOL 43 17.191 5.850 18.311 1.00 0.00 O -ATOM 131 HW1 SOL 43 16.931 6.740 17.951 1.00 0.00 H -ATOM 132 HW2 SOL 43 17.171 5.170 17.581 1.00 0.00 H -ATOM 133 OW SOL 44 13.621 11.441 5.450 1.00 0.00 O -ATOM 134 HW1 SOL 44 14.451 11.151 4.970 1.00 0.00 H -ATOM 135 HW2 SOL 44 13.131 12.111 4.890 1.00 0.00 H -ATOM 136 OW SOL 45 5.500 1.960 8.850 1.00 0.00 O -ATOM 137 HW1 SOL 45 5.450 1.910 9.850 1.00 0.00 H -ATOM 138 HW2 SOL 45 5.520 2.920 8.560 1.00 0.00 H -ATOM 139 OW SOL 46 10.081 14.561 4.770 1.00 0.00 O -ATOM 140 HW1 SOL 46 9.621 15.281 4.250 1.00 0.00 H -ATOM 141 HW2 SOL 46 10.041 14.761 5.750 1.00 0.00 H -ATOM 142 OW SOL 47 3.510 18.011 8.530 1.00 0.00 O -ATOM 143 HW1 SOL 47 4.010 17.151 8.590 1.00 0.00 H -ATOM 144 HW2 SOL 47 4.160 18.781 8.500 1.00 0.00 H -ATOM 145 OW SOL 48 17.951 10.661 8.730 1.00 0.00 O -ATOM 146 HW1 SOL 48 17.331 10.511 7.970 1.00 0.00 H -ATOM 147 HW2 SOL 48 17.431 10.771 9.580 1.00 0.00 H -ATOM 148 OW SOL 49 12.271 15.501 15.061 1.00 0.00 O -ATOM 149 HW1 SOL 49 12.331 14.731 15.701 1.00 0.00 H -ATOM 150 HW2 SOL 49 11.751 15.241 14.261 1.00 0.00 H -ATOM 151 OW SOL 50 3.210 9.431 2.420 1.00 0.00 O -ATOM 152 HW1 SOL 50 4.030 9.821 2.000 1.00 0.00 H -ATOM 153 HW2 SOL 50 2.940 8.611 1.930 1.00 0.00 H -ATOM 154 OW SOL 51 14.581 7.350 7.280 1.00 0.00 O -ATOM 155 HW1 SOL 51 14.531 6.700 8.030 1.00 0.00 H -ATOM 156 HW2 SOL 51 15.381 7.940 7.410 1.00 0.00 H -ATOM 157 OW SOL 52 4.610 12.661 17.271 1.00 0.00 O -ATOM 158 HW1 SOL 52 4.110 12.671 16.411 1.00 0.00 H -ATOM 159 HW2 SOL 52 3.980 12.481 18.031 1.00 0.00 H -ATOM 160 OW SOL 53 11.111 17.761 2.370 1.00 0.00 O -ATOM 161 HW1 SOL 53 10.511 17.141 2.870 1.00 0.00 H -ATOM 162 HW2 SOL 53 11.421 17.321 1.520 1.00 0.00 H -ATOM 163 OW SOL 54 2.020 2.850 14.981 1.00 0.00 O -ATOM 164 HW1 SOL 54 1.220 3.450 14.851 1.00 0.00 H -ATOM 165 HW2 SOL 54 1.920 2.360 15.841 1.00 0.00 H -ATOM 166 OW SOL 55 16.321 13.771 0.810 1.00 0.00 O -ATOM 167 HW1 SOL 55 16.001 14.711 0.710 1.00 0.00 H -ATOM 168 HW2 SOL 55 15.561 13.141 0.690 1.00 0.00 H -ATOM 169 OW SOL 56 4.640 17.431 3.230 1.00 0.00 O -ATOM 170 HW1 SOL 56 4.970 17.821 4.090 1.00 0.00 H -ATOM 171 HW2 SOL 56 5.400 17.361 2.580 1.00 0.00 H -ATOM 172 OW SOL 57 14.001 1.070 4.260 1.00 0.00 O -ATOM 173 HW1 SOL 57 13.761 0.700 3.360 1.00 0.00 H -ATOM 174 HW2 SOL 57 14.991 1.230 4.300 1.00 0.00 H -ATOM 175 OW SOL 58 2.490 17.851 12.411 1.00 0.00 O -ATOM 176 HW1 SOL 58 3.060 17.201 12.911 1.00 0.00 H -ATOM 177 HW2 SOL 58 2.330 17.521 11.481 1.00 0.00 H -ATOM 178 OW SOL 59 9.401 16.981 9.040 1.00 0.00 O -ATOM 179 HW1 SOL 59 10.201 16.411 9.250 1.00 0.00 H -ATOM 180 HW2 SOL 59 8.911 16.581 8.270 1.00 0.00 H -ATOM 181 OW SOL 60 3.820 7.000 4.800 1.00 0.00 O -ATOM 182 HW1 SOL 60 4.270 6.100 4.770 1.00 0.00 H -ATOM 183 HW2 SOL 60 2.880 6.890 5.130 1.00 0.00 H -ATOM 184 OW SOL 61 15.471 2.220 17.291 1.00 0.00 O -ATOM 185 HW1 SOL 61 15.421 2.590 18.211 1.00 0.00 H -ATOM 186 HW2 SOL 61 14.751 1.530 17.171 1.00 0.00 H -ATOM 187 OW SOL 62 6.140 1.220 1.170 1.00 0.00 O -ATOM 188 HW1 SOL 62 7.120 1.000 1.240 1.00 0.00 H -ATOM 189 HW2 SOL 62 5.830 1.050 0.240 1.00 0.00 H -ATOM 190 OW SOL 63 7.810 2.640 17.491 1.00 0.00 O -ATOM 191 HW1 SOL 63 8.480 2.030 17.921 1.00 0.00 H -ATOM 192 HW2 SOL 63 7.080 2.830 18.141 1.00 0.00 H -ATOM 193 OW SOL 64 8.880 15.141 11.951 1.00 0.00 O -ATOM 194 HW1 SOL 64 8.650 14.891 11.011 1.00 0.00 H -ATOM 195 HW2 SOL 64 9.490 14.451 12.341 1.00 0.00 H -ATOM 196 OW SOL 65 13.511 5.900 14.331 1.00 0.00 O -ATOM 197 HW1 SOL 65 13.791 5.470 15.181 1.00 0.00 H -ATOM 198 HW2 SOL 65 13.761 6.860 14.341 1.00 0.00 H -ATOM 199 OW SOL 66 8.030 14.021 9.240 1.00 0.00 O -ATOM 200 HW1 SOL 66 8.930 14.161 8.820 1.00 0.00 H -ATOM 201 HW2 SOL 66 7.320 14.041 8.530 1.00 0.00 H -ATOM 202 OW SOL 67 9.220 5.030 8.990 1.00 0.00 O -ATOM 203 HW1 SOL 67 8.970 4.940 8.030 1.00 0.00 H -ATOM 204 HW2 SOL 67 9.700 4.210 9.300 1.00 0.00 H -ATOM 205 OW SOL 68 5.390 0.640 5.120 1.00 0.00 O -ATOM 206 HW1 SOL 68 4.580 0.650 5.700 1.00 0.00 H -ATOM 207 HW2 SOL 68 5.420 1.470 4.570 1.00 0.00 H -ATOM 208 OW SOL 69 14.341 11.881 0.410 1.00 0.00 O -ATOM 209 HW1 SOL 69 14.661 11.121 0.980 1.00 0.00 H -ATOM 210 HW2 SOL 69 13.421 12.151 0.710 1.00 0.00 H -ATOM 211 OW SOL 70 9.351 2.360 4.800 1.00 0.00 O -ATOM 212 HW1 SOL 70 8.871 2.770 4.020 1.00 0.00 H -ATOM 213 HW2 SOL 70 10.341 2.340 4.610 1.00 0.00 H -ATOM 214 OW SOL 71 10.761 6.830 14.641 1.00 0.00 O -ATOM 215 HW1 SOL 71 9.961 6.220 14.671 1.00 0.00 H -ATOM 216 HW2 SOL 71 11.571 6.300 14.401 1.00 0.00 H -ATOM 217 OW SOL 72 12.271 15.701 7.930 1.00 0.00 O -ATOM 218 HW1 SOL 72 12.481 16.441 7.280 1.00 0.00 H -ATOM 219 HW2 SOL 72 12.951 15.701 8.660 1.00 0.00 H -ATOM 220 OW SOL 73 4.590 11.521 7.410 1.00 0.00 O -ATOM 221 HW1 SOL 73 3.880 11.251 8.060 1.00 0.00 H -ATOM 222 HW2 SOL 73 4.330 11.241 6.480 1.00 0.00 H -ATOM 223 OW SOL 74 12.711 17.971 5.910 1.00 0.00 O -ATOM 224 HW1 SOL 74 13.151 18.611 5.270 1.00 0.00 H -ATOM 225 HW2 SOL 74 12.211 18.491 6.610 1.00 0.00 H -ATOM 226 OW SOL 75 10.321 5.490 0.160 1.00 0.00 O -ATOM 227 HW1 SOL 75 9.911 6.310 -0.230 1.00 0.00 H -ATOM 228 HW2 SOL 75 10.961 5.750 0.890 1.00 0.00 H -ATOM 229 OW SOL 76 5.610 2.220 11.471 1.00 0.00 O -ATOM 230 HW1 SOL 76 5.990 1.380 11.841 1.00 0.00 H -ATOM 231 HW2 SOL 76 4.730 2.410 11.911 1.00 0.00 H -ATOM 232 OW SOL 77 8.660 4.540 6.420 1.00 0.00 O -ATOM 233 HW1 SOL 77 8.340 5.260 5.800 1.00 0.00 H -ATOM 234 HW2 SOL 77 8.900 3.730 5.890 1.00 0.00 H -ATOM 235 OW SOL 78 10.171 0.390 7.530 1.00 0.00 O -ATOM 236 HW1 SOL 78 9.451 0.440 6.840 1.00 0.00 H -ATOM 237 HW2 SOL 78 9.931 -0.300 8.220 1.00 0.00 H -ATOM 238 OW SOL 79 14.291 11.731 8.670 1.00 0.00 O -ATOM 239 HW1 SOL 79 13.741 10.891 8.600 1.00 0.00 H -ATOM 240 HW2 SOL 79 14.551 12.021 7.750 1.00 0.00 H -ATOM 241 OW SOL 80 14.661 5.900 9.921 1.00 0.00 O -ATOM 242 HW1 SOL 80 14.361 4.950 9.991 1.00 0.00 H -ATOM 243 HW2 SOL 80 15.391 6.060 10.581 1.00 0.00 H -ATOM 244 OW SOL 81 18.571 8.330 3.770 1.00 0.00 O -ATOM 245 HW1 SOL 81 18.991 7.690 4.410 1.00 0.00 H -ATOM 246 HW2 SOL 81 18.191 7.820 2.990 1.00 0.00 H -ATOM 247 OW SOL 82 4.880 13.851 1.740 1.00 0.00 O -ATOM 248 HW1 SOL 82 4.010 13.701 2.210 1.00 0.00 H -ATOM 249 HW2 SOL 82 4.710 14.111 0.790 1.00 0.00 H -ATOM 250 OW SOL 83 16.641 12.801 6.570 1.00 0.00 O -ATOM 251 HW1 SOL 83 17.631 12.881 6.710 1.00 0.00 H -ATOM 252 HW2 SOL 83 16.191 13.641 6.880 1.00 0.00 H -ATOM 253 OW SOL 84 13.901 5.750 0.780 1.00 0.00 O -ATOM 254 HW1 SOL 84 13.361 5.540 1.590 1.00 0.00 H -ATOM 255 HW2 SOL 84 14.811 5.340 0.870 1.00 0.00 H -ATOM 256 OW SOL 85 5.270 2.560 3.280 1.00 0.00 O -ATOM 257 HW1 SOL 85 5.540 1.970 2.530 1.00 0.00 H -ATOM 258 HW2 SOL 85 5.270 3.510 2.970 1.00 0.00 H -ATOM 259 OW SOL 86 17.541 12.231 15.881 1.00 0.00 O -ATOM 260 HW1 SOL 86 18.451 11.841 15.751 1.00 0.00 H -ATOM 261 HW2 SOL 86 17.621 13.191 16.121 1.00 0.00 H -ATOM 262 OW SOL 87 10.641 13.471 13.401 1.00 0.00 O -ATOM 263 HW1 SOL 87 9.841 13.241 13.951 1.00 0.00 H -ATOM 264 HW2 SOL 87 11.471 13.211 13.891 1.00 0.00 H -ATOM 265 OW SOL 88 15.921 16.291 16.251 1.00 0.00 O -ATOM 266 HW1 SOL 88 16.191 16.631 15.351 1.00 0.00 H -ATOM 267 HW2 SOL 88 16.711 15.911 16.711 1.00 0.00 H -ATOM 268 OW SOL 89 16.381 10.991 10.791 1.00 0.00 O -ATOM 269 HW1 SOL 89 16.431 11.801 11.381 1.00 0.00 H -ATOM 270 HW2 SOL 89 15.521 11.011 10.281 1.00 0.00 H -ATOM 271 OW SOL 90 9.150 0.890 14.021 1.00 0.00 O -ATOM 272 HW1 SOL 90 9.400 0.690 13.071 1.00 0.00 H -ATOM 273 HW2 SOL 90 9.870 1.450 14.441 1.00 0.00 H -ATOM 274 OW SOL 91 9.801 11.161 17.191 1.00 0.00 O -ATOM 275 HW1 SOL 91 8.811 11.221 17.291 1.00 0.00 H -ATOM 276 HW2 SOL 91 10.031 10.361 16.631 1.00 0.00 H -ATOM 277 OW SOL 92 7.050 10.501 3.680 1.00 0.00 O -ATOM 278 HW1 SOL 92 6.910 10.571 4.670 1.00 0.00 H -ATOM 279 HW2 SOL 92 7.890 9.991 3.500 1.00 0.00 H -ATOM 280 OW SOL 93 4.100 8.130 12.511 1.00 0.00 O -ATOM 281 HW1 SOL 93 4.960 8.250 13.011 1.00 0.00 H -ATOM 282 HW2 SOL 93 3.680 7.260 12.781 1.00 0.00 H -ATOM 283 OW SOL 94 12.741 3.860 12.621 1.00 0.00 O -ATOM 284 HW1 SOL 94 12.951 4.600 13.261 1.00 0.00 H -ATOM 285 HW2 SOL 94 11.851 4.030 12.191 1.00 0.00 H -ATOM 286 OW SOL 95 0.640 15.641 13.311 1.00 0.00 O -ATOM 287 HW1 SOL 95 0.180 16.461 12.971 1.00 0.00 H -ATOM 288 HW2 SOL 95 1.620 15.831 13.401 1.00 0.00 H -ATOM 289 OW SOL 96 3.670 11.001 5.010 1.00 0.00 O -ATOM 290 HW1 SOL 96 3.600 11.831 4.450 1.00 0.00 H -ATOM 291 HW2 SOL 96 3.710 10.201 4.410 1.00 0.00 H -ATOM 292 OW SOL 97 5.660 5.370 8.650 1.00 0.00 O -ATOM 293 HW1 SOL 97 5.780 6.030 7.910 1.00 0.00 H -ATOM 294 HW2 SOL 97 6.120 5.710 9.480 1.00 0.00 H -ATOM 295 OW SOL 98 12.521 13.481 3.880 1.00 0.00 O -ATOM 296 HW1 SOL 98 13.021 14.251 4.280 1.00 0.00 H -ATOM 297 HW2 SOL 98 11.571 13.501 4.200 1.00 0.00 H -ATOM 298 OW SOL 99 12.721 14.451 11.421 1.00 0.00 O -ATOM 299 HW1 SOL 99 13.191 14.581 12.291 1.00 0.00 H -ATOM 300 HW2 SOL 99 12.061 13.711 11.511 1.00 0.00 H -ATOM 301 OW SOL 100 15.821 6.390 4.720 1.00 0.00 O -ATOM 302 HW1 SOL 100 15.511 7.000 5.450 1.00 0.00 H -ATOM 303 HW2 SOL 100 16.321 6.910 4.030 1.00 0.00 H -ATOM 304 OW SOL 101 3.540 15.101 13.291 1.00 0.00 O -ATOM 305 HW1 SOL 101 3.330 14.661 12.421 1.00 0.00 H -ATOM 306 HW2 SOL 101 4.510 15.361 13.321 1.00 0.00 H -ATOM 307 OW SOL 102 4.020 7.510 15.981 1.00 0.00 O -ATOM 308 HW1 SOL 102 4.700 8.060 15.511 1.00 0.00 H -ATOM 309 HW2 SOL 102 4.420 6.630 16.251 1.00 0.00 H -ATOM 310 OW SOL 103 15.871 7.790 16.701 1.00 0.00 O -ATOM 311 HW1 SOL 103 14.951 8.170 16.651 1.00 0.00 H -ATOM 312 HW2 SOL 103 16.471 8.260 16.051 1.00 0.00 H -ATOM 313 OW SOL 104 10.131 1.050 17.701 1.00 0.00 O -ATOM 314 HW1 SOL 104 10.191 1.900 17.181 1.00 0.00 H -ATOM 315 HW2 SOL 104 10.451 0.290 17.131 1.00 0.00 H -ATOM 316 OW SOL 105 5.040 0.500 17.401 1.00 0.00 O -ATOM 317 HW1 SOL 105 4.620 -0.070 16.701 1.00 0.00 H -ATOM 318 HW2 SOL 105 4.380 1.190 17.721 1.00 0.00 H -ATOM 319 OW SOL 106 5.730 8.700 10.291 1.00 0.00 O -ATOM 320 HW1 SOL 106 6.170 9.590 10.201 1.00 0.00 H -ATOM 321 HW2 SOL 106 5.100 8.700 11.061 1.00 0.00 H -ATOM 322 OW SOL 107 13.601 8.620 10.451 1.00 0.00 O -ATOM 323 HW1 SOL 107 12.851 8.620 9.791 1.00 0.00 H -ATOM 324 HW2 SOL 107 13.971 7.700 10.541 1.00 0.00 H -ATOM 325 OW SOL 108 12.091 5.250 2.750 1.00 0.00 O -ATOM 326 HW1 SOL 108 12.221 4.410 3.290 1.00 0.00 H -ATOM 327 HW2 SOL 108 11.801 5.990 3.350 1.00 0.00 H -ATOM 328 OW SOL 109 3.070 2.130 12.311 1.00 0.00 O -ATOM 329 HW1 SOL 109 2.840 2.500 13.211 1.00 0.00 H -ATOM 330 HW2 SOL 109 2.770 1.180 12.251 1.00 0.00 H -ATOM 331 OW SOL 110 7.320 6.340 10.641 1.00 0.00 O -ATOM 332 HW1 SOL 110 7.910 6.080 9.881 1.00 0.00 H -ATOM 333 HW2 SOL 110 7.040 7.300 10.531 1.00 0.00 H -ATOM 334 OW SOL 111 17.281 9.351 18.541 1.00 0.00 O -ATOM 335 HW1 SOL 111 16.821 9.281 17.651 1.00 0.00 H -ATOM 336 HW2 SOL 111 16.661 9.791 19.201 1.00 0.00 H -ATOM 337 OW SOL 112 3.070 0.630 6.180 1.00 0.00 O -ATOM 338 HW1 SOL 112 2.960 1.570 6.510 1.00 0.00 H -ATOM 339 HW2 SOL 112 3.020 0.000 6.950 1.00 0.00 H -ATOM 340 OW SOL 113 16.221 3.670 3.740 1.00 0.00 O -ATOM 341 HW1 SOL 113 16.241 2.910 4.380 1.00 0.00 H -ATOM 342 HW2 SOL 113 15.741 4.440 4.140 1.00 0.00 H -ATOM 343 OW SOL 114 10.231 7.660 9.661 1.00 0.00 O -ATOM 344 HW1 SOL 114 10.381 7.870 10.621 1.00 0.00 H -ATOM 345 HW2 SOL 114 9.931 6.710 9.571 1.00 0.00 H -ATOM 346 OW SOL 115 9.801 15.731 17.001 1.00 0.00 O -ATOM 347 HW1 SOL 115 9.601 16.171 16.121 1.00 0.00 H -ATOM 348 HW2 SOL 115 10.191 14.821 16.841 1.00 0.00 H -ATOM 349 OW SOL 116 18.591 15.181 16.051 1.00 0.00 O -ATOM 350 HW1 SOL 116 18.731 15.451 15.101 1.00 0.00 H -ATOM 351 HW2 SOL 116 19.421 15.401 16.581 1.00 0.00 H -ATOM 352 OW SOL 117 3.500 8.980 18.041 1.00 0.00 O -ATOM 353 HW1 SOL 117 4.260 9.420 18.521 1.00 0.00 H -ATOM 354 HW2 SOL 117 3.850 8.510 17.221 1.00 0.00 H -ATOM 355 OW SOL 118 15.401 2.740 1.250 1.00 0.00 O -ATOM 356 HW1 SOL 118 14.791 1.990 1.480 1.00 0.00 H -ATOM 357 HW2 SOL 118 15.621 3.260 2.080 1.00 0.00 H -ATOM 358 OW SOL 119 13.031 8.380 0.420 1.00 0.00 O -ATOM 359 HW1 SOL 119 13.371 7.450 0.570 1.00 0.00 H -ATOM 360 HW2 SOL 119 13.211 8.650 -0.530 1.00 0.00 H -ATOM 361 OW SOL 120 10.681 13.331 8.490 1.00 0.00 O -ATOM 362 HW1 SOL 120 10.751 12.491 7.940 1.00 0.00 H -ATOM 363 HW2 SOL 120 11.301 14.021 8.130 1.00 0.00 H -ATOM 364 OW SOL 121 3.190 8.100 9.491 1.00 0.00 O -ATOM 365 HW1 SOL 121 4.120 8.460 9.541 1.00 0.00 H -ATOM 366 HW2 SOL 121 3.130 7.250 10.011 1.00 0.00 H -ATOM 367 OW SOL 122 3.390 5.090 10.061 1.00 0.00 O -ATOM 368 HW1 SOL 122 2.870 4.260 9.891 1.00 0.00 H -ATOM 369 HW2 SOL 122 4.160 5.140 9.421 1.00 0.00 H -ATOM 370 OW SOL 123 11.381 3.800 16.781 1.00 0.00 O -ATOM 371 HW1 SOL 123 10.931 4.430 17.421 1.00 0.00 H -ATOM 372 HW2 SOL 123 12.311 4.110 16.611 1.00 0.00 H -ATOM 373 OW SOL 124 11.601 2.070 14.771 1.00 0.00 O -ATOM 374 HW1 SOL 124 11.601 2.710 15.541 1.00 0.00 H -ATOM 375 HW2 SOL 124 11.881 2.550 13.941 1.00 0.00 H -ATOM 376 OW SOL 125 0.880 18.011 9.270 1.00 0.00 O -ATOM 377 HW1 SOL 125 0.460 17.151 9.000 1.00 0.00 H -ATOM 378 HW2 SOL 125 1.820 18.041 8.930 1.00 0.00 H -ATOM 379 OW SOL 126 5.040 15.681 9.100 1.00 0.00 O -ATOM 380 HW1 SOL 126 5.700 16.421 9.190 1.00 0.00 H -ATOM 381 HW2 SOL 126 5.480 14.891 8.680 1.00 0.00 H -ATOM 382 OW SOL 127 10.021 7.960 12.381 1.00 0.00 O -ATOM 383 HW1 SOL 127 10.431 7.640 13.241 1.00 0.00 H -ATOM 384 HW2 SOL 127 9.061 7.690 12.351 1.00 0.00 H -ATOM 385 OW SOL 128 1.890 5.200 17.221 1.00 0.00 O -ATOM 386 HW1 SOL 128 2.480 4.800 16.521 1.00 0.00 H -ATOM 387 HW2 SOL 128 1.310 5.910 16.811 1.00 0.00 H -ATOM 388 OW SOL 129 13.691 9.501 16.601 1.00 0.00 O -ATOM 389 HW1 SOL 129 14.081 10.391 16.801 1.00 0.00 H -ATOM 390 HW2 SOL 129 13.791 9.301 15.631 1.00 0.00 H -ATOM 391 OW SOL 130 8.150 5.720 3.250 1.00 0.00 O -ATOM 392 HW1 SOL 130 8.220 4.830 2.790 1.00 0.00 H -ATOM 393 HW2 SOL 130 7.210 6.060 3.170 1.00 0.00 H -ATOM 394 OW SOL 131 16.571 6.040 12.061 1.00 0.00 O -ATOM 395 HW1 SOL 131 16.191 5.350 12.681 1.00 0.00 H -ATOM 396 HW2 SOL 131 17.391 5.680 11.621 1.00 0.00 H -ATOM 397 OW SOL 132 2.520 15.641 17.441 1.00 0.00 O -ATOM 398 HW1 SOL 132 2.220 16.211 18.201 1.00 0.00 H -ATOM 399 HW2 SOL 132 2.450 14.671 17.701 1.00 0.00 H -ATOM 400 OW SOL 133 6.710 4.640 12.691 1.00 0.00 O -ATOM 401 HW1 SOL 133 6.370 3.750 12.391 1.00 0.00 H -ATOM 402 HW2 SOL 133 6.970 5.180 11.891 1.00 0.00 H -ATOM 403 OW SOL 134 9.300 16.781 14.651 1.00 0.00 O -ATOM 404 HW1 SOL 134 9.060 16.601 13.701 1.00 0.00 H -ATOM 405 HW2 SOL 134 9.600 17.721 14.751 1.00 0.00 H -ATOM 406 OW SOL 135 4.730 5.000 1.910 1.00 0.00 O -ATOM 407 HW1 SOL 135 5.340 5.800 1.950 1.00 0.00 H -ATOM 408 HW2 SOL 135 3.780 5.310 1.980 1.00 0.00 H -ATOM 409 OW SOL 136 1.590 11.371 14.661 1.00 0.00 O -ATOM 410 HW1 SOL 136 1.810 10.761 15.421 1.00 0.00 H -ATOM 411 HW2 SOL 136 1.690 10.881 13.801 1.00 0.00 H -ATOM 412 OW SOL 137 13.471 10.591 12.341 1.00 0.00 O -ATOM 413 HW1 SOL 137 13.711 9.961 11.601 1.00 0.00 H -ATOM 414 HW2 SOL 137 12.571 10.991 12.161 1.00 0.00 H -ATOM 415 OW SOL 138 13.021 8.550 3.090 1.00 0.00 O -ATOM 416 HW1 SOL 138 12.161 8.240 3.510 1.00 0.00 H -ATOM 417 HW2 SOL 138 12.981 8.410 2.100 1.00 0.00 H -ATOM 418 OW SOL 139 17.591 17.471 11.541 1.00 0.00 O -ATOM 419 HW1 SOL 139 18.201 17.771 10.811 1.00 0.00 H -ATOM 420 HW2 SOL 139 17.211 16.581 11.321 1.00 0.00 H -ATOM 421 OW SOL 140 12.521 17.311 11.281 1.00 0.00 O -ATOM 422 HW1 SOL 140 13.361 17.361 10.741 1.00 0.00 H -ATOM 423 HW2 SOL 140 12.291 16.351 11.461 1.00 0.00 H -ATOM 424 OW SOL 141 0.830 12.581 10.221 1.00 0.00 O -ATOM 425 HW1 SOL 141 0.780 12.571 11.221 1.00 0.00 H -ATOM 426 HW2 SOL 141 0.000 12.171 9.841 1.00 0.00 H -ATOM 427 OW SOL 142 6.880 16.621 17.161 1.00 0.00 O -ATOM 428 HW1 SOL 142 6.320 17.431 17.251 1.00 0.00 H -ATOM 429 HW2 SOL 142 7.400 16.661 16.301 1.00 0.00 H -ATOM 430 OW SOL 143 9.030 0.860 1.330 1.00 0.00 O -ATOM 431 HW1 SOL 143 9.540 0.870 0.470 1.00 0.00 H -ATOM 432 HW2 SOL 143 9.590 0.440 2.040 1.00 0.00 H -ATOM 433 OW SOL 144 17.261 1.350 5.230 1.00 0.00 O -ATOM 434 HW1 SOL 144 17.991 1.180 4.560 1.00 0.00 H -ATOM 435 HW2 SOL 144 16.951 0.480 5.610 1.00 0.00 H -ATOM 436 OW SOL 145 13.881 15.731 4.770 1.00 0.00 O -ATOM 437 HW1 SOL 145 14.551 15.851 4.030 1.00 0.00 H -ATOM 438 HW2 SOL 145 13.481 16.621 5.000 1.00 0.00 H -ATOM 439 OW SOL 146 12.801 9.270 6.720 1.00 0.00 O -ATOM 440 HW1 SOL 146 13.401 8.460 6.740 1.00 0.00 H -ATOM 441 HW2 SOL 146 13.201 9.960 6.120 1.00 0.00 H -ATOM 442 OW SOL 147 8.300 12.731 14.221 1.00 0.00 O -ATOM 443 HW1 SOL 147 8.250 13.061 15.171 1.00 0.00 H -ATOM 444 HW2 SOL 147 7.440 12.921 13.761 1.00 0.00 H -ATOM 445 OW SOL 148 6.720 16.161 1.540 1.00 0.00 O -ATOM 446 HW1 SOL 148 6.810 16.261 0.550 1.00 0.00 H -ATOM 447 HW2 SOL 148 6.320 15.271 1.750 1.00 0.00 H -ATOM 448 OW SOL 149 16.501 17.201 13.941 1.00 0.00 O -ATOM 449 HW1 SOL 149 17.031 17.301 13.101 1.00 0.00 H -ATOM 450 HW2 SOL 149 16.231 18.101 14.281 1.00 0.00 H -ATOM 451 OW SOL 150 18.411 1.750 9.631 1.00 0.00 O -ATOM 452 HW1 SOL 150 18.801 0.900 9.271 1.00 0.00 H -ATOM 453 HW2 SOL 150 17.431 1.770 9.441 1.00 0.00 H -ATOM 454 OW SOL 151 2.630 3.260 7.200 1.00 0.00 O -ATOM 455 HW1 SOL 151 1.840 3.770 6.860 1.00 0.00 H -ATOM 456 HW2 SOL 151 2.540 3.110 8.180 1.00 0.00 H -ATOM 457 OW SOL 152 11.941 16.121 0.310 1.00 0.00 O -ATOM 458 HW1 SOL 152 12.001 15.191 0.680 1.00 0.00 H -ATOM 459 HW2 SOL 152 11.351 16.121 -0.490 1.00 0.00 H -ATOM 460 OW SOL 153 8.220 10.021 13.721 1.00 0.00 O -ATOM 461 HW1 SOL 153 8.620 10.011 12.801 1.00 0.00 H -ATOM 462 HW2 SOL 153 8.320 10.941 14.121 1.00 0.00 H -ATOM 463 OW SOL 154 9.160 9.100 2.910 1.00 0.00 O -ATOM 464 HW1 SOL 154 9.790 9.480 2.230 1.00 0.00 H -ATOM 465 HW2 SOL 154 9.560 8.270 3.300 1.00 0.00 H -ATOM 466 OW SOL 155 15.041 16.071 0.440 1.00 0.00 O -ATOM 467 HW1 SOL 155 14.121 16.441 0.510 1.00 0.00 H -ATOM 468 HW2 SOL 155 15.421 16.271 -0.460 1.00 0.00 H -ATOM 469 OW SOL 156 3.720 12.881 14.901 1.00 0.00 O -ATOM 470 HW1 SOL 156 3.590 13.811 14.561 1.00 0.00 H -ATOM 471 HW2 SOL 156 2.880 12.361 14.771 1.00 0.00 H -ATOM 472 OW SOL 157 16.141 12.921 12.891 1.00 0.00 O -ATOM 473 HW1 SOL 157 16.741 12.951 13.691 1.00 0.00 H -ATOM 474 HW2 SOL 157 15.391 13.561 13.021 1.00 0.00 H -ATOM 475 OW SOL 158 10.391 10.981 6.960 1.00 0.00 O -ATOM 476 HW1 SOL 158 9.691 10.511 7.500 1.00 0.00 H -ATOM 477 HW2 SOL 158 10.981 10.301 6.530 1.00 0.00 H -ATOM 478 OW SOL 159 10.141 2.360 9.711 1.00 0.00 O -ATOM 479 HW1 SOL 159 10.061 2.000 8.781 1.00 0.00 H -ATOM 480 HW2 SOL 159 10.121 1.600 10.361 1.00 0.00 H -ATOM 481 OW SOL 160 5.900 14.871 4.910 1.00 0.00 O -ATOM 482 HW1 SOL 160 6.320 14.291 4.210 1.00 0.00 H -ATOM 483 HW2 SOL 160 5.460 15.661 4.470 1.00 0.00 H -ATOM 484 OW SOL 161 17.091 3.850 13.811 1.00 0.00 O -ATOM 485 HW1 SOL 161 17.821 4.540 13.851 1.00 0.00 H -ATOM 486 HW2 SOL 161 17.371 3.100 13.221 1.00 0.00 H -ATOM 487 OW SOL 162 2.550 13.481 2.900 1.00 0.00 O -ATOM 488 HW1 SOL 162 1.590 13.491 2.630 1.00 0.00 H -ATOM 489 HW2 SOL 162 2.670 14.011 3.740 1.00 0.00 H -ATOM 490 OW SOL 163 1.050 10.131 17.261 1.00 0.00 O -ATOM 491 HW1 SOL 163 0.280 9.801 17.801 1.00 0.00 H -ATOM 492 HW2 SOL 163 1.900 9.831 17.681 1.00 0.00 H -ATOM 493 OW SOL 164 6.720 2.030 14.891 1.00 0.00 O -ATOM 494 HW1 SOL 164 7.620 1.870 14.491 1.00 0.00 H -ATOM 495 HW2 SOL 164 6.800 2.080 15.881 1.00 0.00 H -ATOM 496 OW SOL 165 14.401 8.560 13.981 1.00 0.00 O -ATOM 497 HW1 SOL 165 13.831 9.080 13.351 1.00 0.00 H -ATOM 498 HW2 SOL 165 15.361 8.680 13.741 1.00 0.00 H -ATOM 499 OW SOL 166 11.831 13.351 1.190 1.00 0.00 O -ATOM 500 HW1 SOL 166 10.841 13.241 1.210 1.00 0.00 H -ATOM 501 HW2 SOL 166 12.171 13.501 2.120 1.00 0.00 H -ATOM 502 OW SOL 167 6.130 8.420 14.311 1.00 0.00 O -ATOM 503 HW1 SOL 167 6.690 9.230 14.141 1.00 0.00 H -ATOM 504 HW2 SOL 167 6.720 7.620 14.341 1.00 0.00 H -ATOM 505 OW SOL 168 14.931 17.671 9.591 1.00 0.00 O -ATOM 506 HW1 SOL 168 15.261 18.311 8.901 1.00 0.00 H -ATOM 507 HW2 SOL 168 15.591 17.611 10.341 1.00 0.00 H -ATOM 508 OW SOL 169 7.160 5.650 17.081 1.00 0.00 O -ATOM 509 HW1 SOL 169 7.350 6.300 17.821 1.00 0.00 H -ATOM 510 HW2 SOL 169 7.760 4.850 17.171 1.00 0.00 H -ATOM 511 OW SOL 170 14.501 12.201 16.331 1.00 0.00 O -ATOM 512 HW1 SOL 170 14.411 12.101 17.321 1.00 0.00 H -ATOM 513 HW2 SOL 170 15.461 12.131 16.071 1.00 0.00 H -ATOM 514 OW SOL 171 3.900 17.411 15.601 1.00 0.00 O -ATOM 515 HW1 SOL 171 2.990 17.821 15.581 1.00 0.00 H -ATOM 516 HW2 SOL 171 3.830 16.471 15.921 1.00 0.00 H -ATOM 517 OW SOL 172 16.741 8.830 12.541 1.00 0.00 O -ATOM 518 HW1 SOL 172 16.471 7.940 12.171 1.00 0.00 H -ATOM 519 HW2 SOL 172 16.751 9.510 11.811 1.00 0.00 H -ATOM 520 OW SOL 173 12.251 3.250 4.490 1.00 0.00 O -ATOM 521 HW1 SOL 173 12.901 2.510 4.380 1.00 0.00 H -ATOM 522 HW2 SOL 173 12.451 3.750 5.330 1.00 0.00 H -ATOM 523 OW SOL 174 5.940 7.450 6.520 1.00 0.00 O -ATOM 524 HW1 SOL 174 6.440 8.300 6.330 1.00 0.00 H -ATOM 525 HW2 SOL 174 5.060 7.470 6.040 1.00 0.00 H -ATOM 526 OW SOL 175 17.771 3.420 16.421 1.00 0.00 O -ATOM 527 HW1 SOL 175 17.601 3.730 15.481 1.00 0.00 H -ATOM 528 HW2 SOL 175 16.931 3.050 16.801 1.00 0.00 H -ATOM 529 OW SOL 176 17.301 9.341 15.171 1.00 0.00 O -ATOM 530 HW1 SOL 176 17.681 10.251 15.321 1.00 0.00 H -ATOM 531 HW2 SOL 176 17.221 9.171 14.181 1.00 0.00 H -ATOM 532 OW SOL 177 8.590 13.741 0.160 1.00 0.00 O -ATOM 533 HW1 SOL 177 8.130 13.891 1.040 1.00 0.00 H -ATOM 534 HW2 SOL 177 9.030 14.591 -0.140 1.00 0.00 H -ATOM 535 OW SOL 178 6.610 17.901 9.531 1.00 0.00 O -ATOM 536 HW1 SOL 178 6.150 18.781 9.401 1.00 0.00 H -ATOM 537 HW2 SOL 178 7.600 18.021 9.461 1.00 0.00 H -ATOM 538 OW SOL 179 8.590 9.561 8.610 1.00 0.00 O -ATOM 539 HW1 SOL 179 9.130 8.871 9.090 1.00 0.00 H -ATOM 540 HW2 SOL 179 8.270 10.251 9.270 1.00 0.00 H -ATOM 541 OW SOL 180 10.831 9.841 0.870 1.00 0.00 O -ATOM 542 HW1 SOL 180 10.601 10.371 0.050 1.00 0.00 H -ATOM 543 HW2 SOL 180 11.641 9.281 0.680 1.00 0.00 H -ATOM 544 OW SOL 181 18.611 15.691 8.510 1.00 0.00 O -ATOM 545 HW1 SOL 181 17.901 15.571 7.810 1.00 0.00 H -ATOM 546 HW2 SOL 181 18.621 14.901 9.110 1.00 0.00 H -ATOM 547 OW SOL 182 2.210 13.141 18.441 1.00 0.00 O -ATOM 548 HW1 SOL 182 1.560 12.411 18.231 1.00 0.00 H -ATOM 549 HW2 SOL 182 2.250 13.281 19.421 1.00 0.00 H -ATOM 550 OW SOL 183 0.790 12.401 6.530 1.00 0.00 O -ATOM 551 HW1 SOL 183 0.780 11.931 7.410 1.00 0.00 H -ATOM 552 HW2 SOL 183 1.610 12.121 6.020 1.00 0.00 H -ATOM 553 OW SOL 184 6.720 13.911 16.241 1.00 0.00 O -ATOM 554 HW1 SOL 184 5.940 13.411 16.621 1.00 0.00 H -ATOM 555 HW2 SOL 184 6.690 14.861 16.551 1.00 0.00 H -ATOM 556 OW SOL 185 18.241 1.920 12.271 1.00 0.00 O -ATOM 557 HW1 SOL 185 18.201 1.020 12.711 1.00 0.00 H -ATOM 558 HW2 SOL 185 18.271 1.810 11.281 1.00 0.00 H -ATOM 559 OW SOL 186 4.280 4.240 5.200 1.00 0.00 O -ATOM 560 HW1 SOL 186 4.580 3.520 4.580 1.00 0.00 H -ATOM 561 HW2 SOL 186 3.890 3.840 6.030 1.00 0.00 H -ATOM 562 OW SOL 187 17.051 14.871 11.041 1.00 0.00 O -ATOM 563 HW1 SOL 187 16.121 14.621 10.771 1.00 0.00 H -ATOM 564 HW2 SOL 187 17.311 14.371 11.861 1.00 0.00 H -ATOM 565 OW SOL 188 3.170 5.470 12.801 1.00 0.00 O -ATOM 566 HW1 SOL 188 3.550 4.880 13.521 1.00 0.00 H -ATOM 567 HW2 SOL 188 3.570 5.210 11.921 1.00 0.00 H -ATOM 568 OW SOL 189 8.120 15.861 6.870 1.00 0.00 O -ATOM 569 HW1 SOL 189 8.440 15.961 5.930 1.00 0.00 H -ATOM 570 HW2 SOL 189 7.330 15.241 6.890 1.00 0.00 H -ATOM 571 OW SOL 190 14.241 2.140 11.121 1.00 0.00 O -ATOM 572 HW1 SOL 190 14.761 1.490 11.671 1.00 0.00 H -ATOM 573 HW2 SOL 190 13.751 2.770 11.731 1.00 0.00 H -ATOM 574 OW SOL 191 10.011 0.340 11.541 1.00 0.00 O -ATOM 575 HW1 SOL 191 9.381 -0.380 11.231 1.00 0.00 H -ATOM 576 HW2 SOL 191 10.941 -0.020 11.541 1.00 0.00 H -ATOM 577 OW SOL 192 7.700 13.301 3.010 1.00 0.00 O -ATOM 578 HW1 SOL 192 7.240 12.431 3.180 1.00 0.00 H -ATOM 579 HW2 SOL 192 8.610 13.271 3.420 1.00 0.00 H -ATOM 580 OW SOL 193 6.180 15.671 12.841 1.00 0.00 O -ATOM 581 HW1 SOL 193 6.130 16.491 13.411 1.00 0.00 H -ATOM 582 HW2 SOL 193 7.070 15.641 12.391 1.00 0.00 H -ATOM 583 OW SOL 194 13.521 0.520 1.680 1.00 0.00 O -ATOM 584 HW1 SOL 194 13.871 0.110 0.840 1.00 0.00 H -ATOM 585 HW2 SOL 194 12.621 0.140 1.880 1.00 0.00 H -ATOM 586 OW SOL 195 13.001 4.530 6.910 1.00 0.00 O -ATOM 587 HW1 SOL 195 12.411 5.330 6.950 1.00 0.00 H -ATOM 588 HW2 SOL 195 13.151 4.180 7.840 1.00 0.00 H -ATOM 589 OW SOL 196 15.931 2.210 8.820 1.00 0.00 O -ATOM 590 HW1 SOL 196 15.091 2.200 9.360 1.00 0.00 H -ATOM 591 HW2 SOL 196 15.951 3.040 8.260 1.00 0.00 H -ATOM 592 OW SOL 197 0.390 10.771 3.000 1.00 0.00 O -ATOM 593 HW1 SOL 197 1.380 10.661 2.910 1.00 0.00 H -ATOM 594 HW2 SOL 197 -0.010 9.911 3.320 1.00 0.00 H -ATOM 595 OW SOL 198 8.750 16.461 3.370 1.00 0.00 O -ATOM 596 HW1 SOL 198 7.980 16.111 2.830 1.00 0.00 H -ATOM 597 HW2 SOL 198 8.430 17.171 3.990 1.00 0.00 H -ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O -ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H -ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H -ATOM 601 OW SOL 200 6.060 9.641 19.851 1.00 0.00 O -ATOM 602 HW1 SOL 200 6.130 10.481 19.311 1.00 0.00 H -ATOM 603 HW2 SOL 200 6.520 9.771 20.731 1.00 0.00 H -ATOM 604 OW SOL 201 18.421 17.671 0.381 1.00 0.00 O -ATOM 605 HW1 SOL 201 18.961 17.381 1.181 1.00 0.00 H -ATOM 606 HW2 SOL 201 18.721 18.571 0.091 1.00 0.00 H -ATOM 607 OW SOL 202 0.270 15.961 19.791 1.00 0.00 O -ATOM 608 HW1 SOL 202 0.080 15.001 20.001 1.00 0.00 H -ATOM 609 HW2 SOL 202 -0.060 16.541 20.541 1.00 0.00 H -ATOM 610 OW SOL 203 16.411 11.081 1.111 1.00 0.00 O -ATOM 611 HW1 SOL 203 17.271 11.101 0.591 1.00 0.00 H -ATOM 612 HW2 SOL 203 16.551 11.551 1.991 1.00 0.00 H -ATOM 613 OW SOL 204 15.251 9.991 20.521 1.00 0.00 O -ATOM 614 HW1 SOL 204 14.621 9.231 20.651 1.00 0.00 H -ATOM 615 HW2 SOL 204 15.731 10.171 21.381 1.00 0.00 H -ATOM 616 OW SOL 205 5.980 7.290 21.321 1.00 0.00 O -ATOM 617 HW1 SOL 205 6.220 7.980 20.641 1.00 0.00 H -ATOM 618 HW2 SOL 205 5.200 7.620 21.861 1.00 0.00 H -ATOM 619 OW SOL 206 8.650 3.480 20.571 1.00 0.00 O -ATOM 620 HW1 SOL 206 9.240 4.110 20.081 1.00 0.00 H -ATOM 621 HW2 SOL 206 8.840 2.540 20.281 1.00 0.00 H -ATOM 622 OW SOL 207 10.081 14.561 1.561 1.00 0.00 O -ATOM 623 HW1 SOL 207 9.621 15.281 1.041 1.00 0.00 H -ATOM 624 HW2 SOL 207 10.041 14.761 2.541 1.00 0.00 H -ATOM 625 OW SOL 208 3.210 9.431 21.041 1.00 0.00 O -ATOM 626 HW1 SOL 208 4.030 9.821 20.621 1.00 0.00 H -ATOM 627 HW2 SOL 208 2.940 8.611 20.551 1.00 0.00 H -ATOM 628 OW SOL 209 16.321 13.771 19.431 1.00 0.00 O -ATOM 629 HW1 SOL 209 16.001 14.711 19.331 1.00 0.00 H -ATOM 630 HW2 SOL 209 15.561 13.141 19.311 1.00 0.00 H -ATOM 631 OW SOL 210 4.640 17.431 0.021 1.00 0.00 O -ATOM 632 HW1 SOL 210 4.970 17.821 0.881 1.00 0.00 H -ATOM 633 HW2 SOL 210 5.400 17.361 -0.629 1.00 0.00 H -ATOM 634 OW SOL 211 6.140 1.220 19.791 1.00 0.00 O -ATOM 635 HW1 SOL 211 7.120 1.000 19.861 1.00 0.00 H -ATOM 636 HW2 SOL 211 5.830 1.050 18.861 1.00 0.00 H -ATOM 637 OW SOL 212 14.341 11.881 19.031 1.00 0.00 O -ATOM 638 HW1 SOL 212 14.661 11.121 19.601 1.00 0.00 H -ATOM 639 HW2 SOL 212 13.421 12.151 19.331 1.00 0.00 H -ATOM 640 OW SOL 213 2.970 0.350 20.331 1.00 0.00 O -ATOM 641 HW1 SOL 213 3.460 1.190 20.121 1.00 0.00 H -ATOM 642 HW2 SOL 213 3.590 -0.300 20.781 1.00 0.00 H -ATOM 643 OW SOL 214 10.321 5.490 18.781 1.00 0.00 O -ATOM 644 HW1 SOL 214 9.911 6.310 18.391 1.00 0.00 H -ATOM 645 HW2 SOL 214 10.961 5.750 19.511 1.00 0.00 H -ATOM 646 OW SOL 215 18.571 8.330 0.561 1.00 0.00 O -ATOM 647 HW1 SOL 215 18.991 7.690 1.201 1.00 0.00 H -ATOM 648 HW2 SOL 215 18.191 7.820 -0.219 1.00 0.00 H -ATOM 649 OW SOL 216 4.880 13.851 20.361 1.00 0.00 O -ATOM 650 HW1 SOL 216 4.010 13.701 20.831 1.00 0.00 H -ATOM 651 HW2 SOL 216 4.710 14.111 19.411 1.00 0.00 H -ATOM 652 OW SOL 217 13.901 5.750 19.401 1.00 0.00 O -ATOM 653 HW1 SOL 217 13.361 5.540 20.211 1.00 0.00 H -ATOM 654 HW2 SOL 217 14.811 5.340 19.491 1.00 0.00 H -ATOM 655 OW SOL 218 15.821 6.390 1.511 1.00 0.00 O -ATOM 656 HW1 SOL 218 15.511 7.000 2.241 1.00 0.00 H -ATOM 657 HW2 SOL 218 16.321 6.910 0.821 1.00 0.00 H -ATOM 658 OW SOL 219 15.401 2.740 19.871 1.00 0.00 O -ATOM 659 HW1 SOL 219 14.791 1.990 20.101 1.00 0.00 H -ATOM 660 HW2 SOL 219 15.621 3.260 20.701 1.00 0.00 H -ATOM 661 OW SOL 220 13.031 8.380 19.041 1.00 0.00 O -ATOM 662 HW1 SOL 220 13.371 7.450 19.191 1.00 0.00 H -ATOM 663 HW2 SOL 220 13.211 8.650 18.091 1.00 0.00 H -ATOM 664 OW SOL 221 8.150 5.720 0.041 1.00 0.00 O -ATOM 665 HW1 SOL 221 8.220 4.830 -0.419 1.00 0.00 H -ATOM 666 HW2 SOL 221 7.210 6.060 -0.039 1.00 0.00 H -ATOM 667 OW SOL 222 4.730 5.000 20.531 1.00 0.00 O -ATOM 668 HW1 SOL 222 5.340 5.800 20.571 1.00 0.00 H -ATOM 669 HW2 SOL 222 3.780 5.310 20.601 1.00 0.00 H -ATOM 670 OW SOL 223 17.261 1.350 2.021 1.00 0.00 O -ATOM 671 HW1 SOL 223 17.991 1.180 1.351 1.00 0.00 H -ATOM 672 HW2 SOL 223 16.951 0.480 2.401 1.00 0.00 H -ATOM 673 OW SOL 224 6.720 16.161 20.161 1.00 0.00 O -ATOM 674 HW1 SOL 224 6.810 16.261 19.171 1.00 0.00 H -ATOM 675 HW2 SOL 224 6.320 15.271 20.371 1.00 0.00 H -ATOM 676 OW SOL 225 11.941 16.121 18.931 1.00 0.00 O -ATOM 677 HW1 SOL 225 12.001 15.191 19.301 1.00 0.00 H -ATOM 678 HW2 SOL 225 11.351 16.121 18.131 1.00 0.00 H -ATOM 679 OW SOL 226 9.160 9.100 21.531 1.00 0.00 O -ATOM 680 HW1 SOL 226 9.790 9.480 20.851 1.00 0.00 H -ATOM 681 HW2 SOL 226 9.560 8.270 21.921 1.00 0.00 H -ATOM 682 OW SOL 227 15.041 16.071 19.061 1.00 0.00 O -ATOM 683 HW1 SOL 227 14.121 16.441 19.131 1.00 0.00 H -ATOM 684 HW2 SOL 227 15.421 16.271 18.161 1.00 0.00 H -ATOM 685 OW SOL 228 2.550 13.481 21.521 1.00 0.00 O -ATOM 686 HW1 SOL 228 1.590 13.491 21.251 1.00 0.00 H -ATOM 687 HW2 SOL 228 2.670 14.011 22.361 1.00 0.00 H -ATOM 688 OW SOL 229 0.750 3.450 18.951 1.00 0.00 O -ATOM 689 HW1 SOL 229 -0.170 3.170 18.661 1.00 0.00 H -ATOM 690 HW2 SOL 229 1.060 4.220 18.391 1.00 0.00 H -ATOM 691 OW SOL 230 11.831 13.351 19.811 1.00 0.00 O -ATOM 692 HW1 SOL 230 10.841 13.241 19.831 1.00 0.00 H -ATOM 693 HW2 SOL 230 12.171 13.501 20.741 1.00 0.00 H -ATOM 694 OW SOL 231 8.590 13.741 18.781 1.00 0.00 O -ATOM 695 HW1 SOL 231 8.130 13.891 19.661 1.00 0.00 H -ATOM 696 HW2 SOL 231 9.030 14.591 18.481 1.00 0.00 H -ATOM 697 OW SOL 232 10.831 9.841 19.491 1.00 0.00 O -ATOM 698 HW1 SOL 232 10.601 10.371 18.671 1.00 0.00 H -ATOM 699 HW2 SOL 232 11.641 9.281 19.301 1.00 0.00 H -ATOM 700 OW SOL 233 13.521 0.520 20.301 1.00 0.00 O -ATOM 701 HW1 SOL 233 13.871 0.110 19.461 1.00 0.00 H -ATOM 702 HW2 SOL 233 12.621 0.140 20.501 1.00 0.00 H -ATOM 703 OW SOL 234 0.390 10.771 21.621 1.00 0.00 O -ATOM 704 HW1 SOL 234 1.380 10.661 21.531 1.00 0.00 H -ATOM 705 HW2 SOL 234 -0.010 9.911 21.941 1.00 0.00 H -ATOM 706 OW SOL 235 8.750 16.461 0.161 1.00 0.00 O -ATOM 707 HW1 SOL 235 7.980 16.111 -0.379 1.00 0.00 H -ATOM 708 HW2 SOL 235 8.430 17.171 0.781 1.00 0.00 H -ATOM 709 OW SOL 236 4.380 0.711 14.991 1.00 0.00 O -ATOM 710 HW1 SOL 236 5.200 0.151 15.081 1.00 0.00 H -ATOM 711 HW2 SOL 236 3.570 0.131 15.031 1.00 0.00 H -ATOM 712 OW SOL 237 15.941 19.761 14.801 1.00 0.00 O -ATOM 713 HW1 SOL 237 15.761 20.431 14.081 1.00 0.00 H -ATOM 714 HW2 SOL 237 15.911 20.221 15.691 1.00 0.00 H -ATOM 715 OW SOL 238 8.090 18.661 5.020 1.00 0.00 O -ATOM 716 HW1 SOL 238 8.490 19.571 4.930 1.00 0.00 H -ATOM 717 HW2 SOL 238 7.090 18.741 5.080 1.00 0.00 H -ATOM 718 OW SOL 239 12.811 0.241 9.441 1.00 0.00 O -ATOM 719 HW1 SOL 239 11.951 -0.259 9.311 1.00 0.00 H -ATOM 720 HW2 SOL 239 13.431 -0.299 10.001 1.00 0.00 H -ATOM 721 OW SOL 240 5.500 20.581 8.850 1.00 0.00 O -ATOM 722 HW1 SOL 240 5.450 20.531 9.850 1.00 0.00 H -ATOM 723 HW2 SOL 240 5.520 21.541 8.560 1.00 0.00 H -ATOM 724 OW SOL 241 2.020 21.471 14.981 1.00 0.00 O -ATOM 725 HW1 SOL 241 1.220 22.071 14.851 1.00 0.00 H -ATOM 726 HW2 SOL 241 1.920 20.981 15.841 1.00 0.00 H -ATOM 727 OW SOL 242 14.001 19.691 4.260 1.00 0.00 O -ATOM 728 HW1 SOL 242 13.761 19.321 3.360 1.00 0.00 H -ATOM 729 HW2 SOL 242 14.991 19.851 4.300 1.00 0.00 H -ATOM 730 OW SOL 243 15.471 20.841 17.291 1.00 0.00 O -ATOM 731 HW1 SOL 243 15.421 21.211 18.211 1.00 0.00 H -ATOM 732 HW2 SOL 243 14.751 20.151 17.171 1.00 0.00 H -ATOM 733 OW SOL 244 6.140 19.841 1.170 1.00 0.00 O -ATOM 734 HW1 SOL 244 7.120 19.621 1.240 1.00 0.00 H -ATOM 735 HW2 SOL 244 5.830 19.671 0.240 1.00 0.00 H -ATOM 736 OW SOL 245 7.810 21.261 17.491 1.00 0.00 O -ATOM 737 HW1 SOL 245 8.480 20.651 17.921 1.00 0.00 H -ATOM 738 HW2 SOL 245 7.080 21.451 18.141 1.00 0.00 H -ATOM 739 OW SOL 246 5.390 19.261 5.120 1.00 0.00 O -ATOM 740 HW1 SOL 246 4.580 19.271 5.700 1.00 0.00 H -ATOM 741 HW2 SOL 246 5.420 20.091 4.570 1.00 0.00 H -ATOM 742 OW SOL 247 5.610 20.841 11.471 1.00 0.00 O -ATOM 743 HW1 SOL 247 5.990 20.001 11.841 1.00 0.00 H -ATOM 744 HW2 SOL 247 4.730 21.031 11.911 1.00 0.00 H -ATOM 745 OW SOL 248 10.171 19.011 7.530 1.00 0.00 O -ATOM 746 HW1 SOL 248 9.451 19.061 6.840 1.00 0.00 H -ATOM 747 HW2 SOL 248 9.931 18.321 8.220 1.00 0.00 H -ATOM 748 OW SOL 249 5.270 21.181 3.280 1.00 0.00 O -ATOM 749 HW1 SOL 249 5.540 20.591 2.530 1.00 0.00 H -ATOM 750 HW2 SOL 249 5.270 22.131 2.970 1.00 0.00 H -ATOM 751 OW SOL 250 9.150 19.511 14.021 1.00 0.00 O -ATOM 752 HW1 SOL 250 9.400 19.311 13.071 1.00 0.00 H -ATOM 753 HW2 SOL 250 9.870 20.071 14.441 1.00 0.00 H -ATOM 754 OW SOL 251 12.741 0.651 12.621 1.00 0.00 O -ATOM 755 HW1 SOL 251 12.951 1.391 13.261 1.00 0.00 H -ATOM 756 HW2 SOL 251 11.851 0.821 12.191 1.00 0.00 H -ATOM 757 OW SOL 252 10.131 19.671 17.701 1.00 0.00 O -ATOM 758 HW1 SOL 252 10.191 20.521 17.181 1.00 0.00 H -ATOM 759 HW2 SOL 252 10.451 18.911 17.131 1.00 0.00 H -ATOM 760 OW SOL 253 5.040 19.121 17.401 1.00 0.00 O -ATOM 761 HW1 SOL 253 4.620 18.551 16.701 1.00 0.00 H -ATOM 762 HW2 SOL 253 4.380 19.811 17.721 1.00 0.00 H -ATOM 763 OW SOL 254 3.070 20.751 12.311 1.00 0.00 O -ATOM 764 HW1 SOL 254 2.840 21.121 13.211 1.00 0.00 H -ATOM 765 HW2 SOL 254 2.770 19.801 12.251 1.00 0.00 H -ATOM 766 OW SOL 255 3.070 19.251 6.180 1.00 0.00 O -ATOM 767 HW1 SOL 255 2.960 20.191 6.510 1.00 0.00 H -ATOM 768 HW2 SOL 255 3.020 18.621 6.950 1.00 0.00 H -ATOM 769 OW SOL 256 15.401 21.361 1.250 1.00 0.00 O -ATOM 770 HW1 SOL 256 14.791 20.611 1.480 1.00 0.00 H -ATOM 771 HW2 SOL 256 15.621 21.881 2.080 1.00 0.00 H -ATOM 772 OW SOL 257 11.601 20.691 14.771 1.00 0.00 O -ATOM 773 HW1 SOL 257 11.601 21.331 15.541 1.00 0.00 H -ATOM 774 HW2 SOL 257 11.881 21.171 13.941 1.00 0.00 H -ATOM 775 OW SOL 258 9.030 19.481 1.330 1.00 0.00 O -ATOM 776 HW1 SOL 258 9.540 19.491 0.470 1.00 0.00 H -ATOM 777 HW2 SOL 258 9.590 19.061 2.040 1.00 0.00 H -ATOM 778 OW SOL 259 17.261 19.971 5.230 1.00 0.00 O -ATOM 779 HW1 SOL 259 17.991 19.801 4.560 1.00 0.00 H -ATOM 780 HW2 SOL 259 16.951 19.101 5.610 1.00 0.00 H -ATOM 781 OW SOL 260 18.411 20.371 9.631 1.00 0.00 O -ATOM 782 HW1 SOL 260 18.801 19.521 9.271 1.00 0.00 H -ATOM 783 HW2 SOL 260 17.431 20.391 9.441 1.00 0.00 H -ATOM 784 OW SOL 261 6.720 20.651 14.891 1.00 0.00 O -ATOM 785 HW1 SOL 261 7.620 20.491 14.491 1.00 0.00 H -ATOM 786 HW2 SOL 261 6.800 20.701 15.881 1.00 0.00 H -ATOM 787 OW SOL 262 12.251 0.041 4.490 1.00 0.00 O -ATOM 788 HW1 SOL 262 12.901 -0.699 4.380 1.00 0.00 H -ATOM 789 HW2 SOL 262 12.451 0.541 5.330 1.00 0.00 H -ATOM 790 OW SOL 263 17.771 0.211 16.421 1.00 0.00 O -ATOM 791 HW1 SOL 263 17.601 0.521 15.481 1.00 0.00 H -ATOM 792 HW2 SOL 263 16.931 -0.159 16.801 1.00 0.00 H -ATOM 793 OW SOL 264 18.241 20.541 12.271 1.00 0.00 O -ATOM 794 HW1 SOL 264 18.201 19.641 12.711 1.00 0.00 H -ATOM 795 HW2 SOL 264 18.271 20.431 11.281 1.00 0.00 H -ATOM 796 OW SOL 265 14.241 20.761 11.121 1.00 0.00 O -ATOM 797 HW1 SOL 265 14.761 20.111 11.671 1.00 0.00 H -ATOM 798 HW2 SOL 265 13.751 21.391 11.731 1.00 0.00 H -ATOM 799 OW SOL 266 10.011 18.961 11.541 1.00 0.00 O -ATOM 800 HW1 SOL 266 9.381 18.241 11.231 1.00 0.00 H -ATOM 801 HW2 SOL 266 10.941 18.601 11.541 1.00 0.00 H -ATOM 802 OW SOL 267 13.521 19.141 1.680 1.00 0.00 O -ATOM 803 HW1 SOL 267 13.871 18.731 0.840 1.00 0.00 H -ATOM 804 HW2 SOL 267 12.621 18.761 1.880 1.00 0.00 H -ATOM 805 OW SOL 268 13.001 1.321 6.910 1.00 0.00 O -ATOM 806 HW1 SOL 268 12.411 2.121 6.950 1.00 0.00 H -ATOM 807 HW2 SOL 268 13.151 0.971 7.840 1.00 0.00 H -ATOM 808 OW SOL 269 15.931 20.831 8.820 1.00 0.00 O -ATOM 809 HW1 SOL 269 15.091 20.821 9.360 1.00 0.00 H -ATOM 810 HW2 SOL 269 15.951 21.661 8.260 1.00 0.00 H -ATOM 811 OW SOL 270 8.650 0.271 20.571 1.00 0.00 O -ATOM 812 HW1 SOL 270 9.240 0.901 20.081 1.00 0.00 H -ATOM 813 HW2 SOL 270 8.840 -0.669 20.281 1.00 0.00 H -ATOM 814 OW SOL 271 6.140 19.841 19.791 1.00 0.00 O -ATOM 815 HW1 SOL 271 7.120 19.621 19.861 1.00 0.00 H -ATOM 816 HW2 SOL 271 5.830 19.671 18.861 1.00 0.00 H -ATOM 817 OW SOL 272 2.970 18.971 20.331 1.00 0.00 O -ATOM 818 HW1 SOL 272 3.460 19.811 20.121 1.00 0.00 H -ATOM 819 HW2 SOL 272 3.590 18.321 20.781 1.00 0.00 H -ATOM 820 OW SOL 273 15.401 21.361 19.871 1.00 0.00 O -ATOM 821 HW1 SOL 273 14.791 20.611 20.101 1.00 0.00 H -ATOM 822 HW2 SOL 273 15.621 21.881 20.701 1.00 0.00 H -ATOM 823 OW SOL 274 17.261 19.971 2.021 1.00 0.00 O -ATOM 824 HW1 SOL 274 17.991 19.801 1.351 1.00 0.00 H -ATOM 825 HW2 SOL 274 16.951 19.101 2.401 1.00 0.00 H -ATOM 826 OW SOL 275 0.750 0.241 18.951 1.00 0.00 O -ATOM 827 HW1 SOL 275 -0.170 -0.039 18.661 1.00 0.00 H -ATOM 828 HW2 SOL 275 1.060 1.011 18.391 1.00 0.00 H -ATOM 829 OW SOL 276 13.521 19.141 20.301 1.00 0.00 O -ATOM 830 HW1 SOL 276 13.871 18.731 19.461 1.00 0.00 H -ATOM 831 HW2 SOL 276 12.621 18.761 20.501 1.00 0.00 H -ATOM 832 OW SOL 277 20.921 6.280 1.130 1.00 0.00 O -ATOM 833 HW1 SOL 277 19.991 6.260 1.500 1.00 0.00 H -ATOM 834 HW2 SOL 277 20.931 5.890 0.210 1.00 0.00 H -ATOM 835 OW SOL 278 20.871 2.750 9.961 1.00 0.00 O -ATOM 836 HW1 SOL 278 21.221 2.580 10.881 1.00 0.00 H -ATOM 837 HW2 SOL 278 19.991 2.300 9.841 1.00 0.00 H -ATOM 838 OW SOL 279 18.811 3.680 6.470 1.00 0.00 O -ATOM 839 HW1 SOL 279 17.991 4.110 6.860 1.00 0.00 H -ATOM 840 HW2 SOL 279 18.531 2.950 5.840 1.00 0.00 H -ATOM 841 OW SOL 280 0.141 14.351 10.611 1.00 0.00 O -ATOM 842 HW1 SOL 280 -0.639 14.041 10.081 1.00 0.00 H -ATOM 843 HW2 SOL 280 0.721 14.931 10.041 1.00 0.00 H -ATOM 844 OW SOL 281 20.931 17.131 4.830 1.00 0.00 O -ATOM 845 HW1 SOL 281 21.271 17.901 5.370 1.00 0.00 H -ATOM 846 HW2 SOL 281 21.371 17.131 3.930 1.00 0.00 H -ATOM 847 OW SOL 282 20.921 14.341 5.380 1.00 0.00 O -ATOM 848 HW1 SOL 282 20.661 15.301 5.380 1.00 0.00 H -ATOM 849 HW2 SOL 282 20.211 13.801 5.830 1.00 0.00 H -ATOM 850 OW SOL 283 21.021 10.911 8.860 1.00 0.00 O -ATOM 851 HW1 SOL 283 21.161 10.071 9.380 1.00 0.00 H -ATOM 852 HW2 SOL 283 20.471 11.551 9.410 1.00 0.00 H -ATOM 853 OW SOL 284 19.841 6.430 5.630 1.00 0.00 O -ATOM 854 HW1 SOL 284 19.391 5.550 5.800 1.00 0.00 H -ATOM 855 HW2 SOL 284 19.831 6.970 6.470 1.00 0.00 H -ATOM 856 OW SOL 285 19.751 7.370 15.971 1.00 0.00 O -ATOM 857 HW1 SOL 285 20.631 7.240 16.421 1.00 0.00 H -ATOM 858 HW2 SOL 285 19.621 8.340 15.751 1.00 0.00 H -ATOM 859 OW SOL 286 20.591 9.761 12.641 1.00 0.00 O -ATOM 860 HW1 SOL 286 21.481 9.311 12.501 1.00 0.00 H -ATOM 861 HW2 SOL 286 19.861 9.111 12.451 1.00 0.00 H -ATOM 862 OW SOL 287 19.381 8.110 7.890 1.00 0.00 O -ATOM 863 HW1 SOL 287 20.371 7.990 7.980 1.00 0.00 H -ATOM 864 HW2 SOL 287 19.141 9.060 8.100 1.00 0.00 H -ATOM 865 OW SOL 288 19.921 18.211 15.711 1.00 0.00 O -ATOM 866 HW1 SOL 288 19.821 18.061 16.701 1.00 0.00 H -ATOM 867 HW2 SOL 288 19.061 18.571 15.351 1.00 0.00 H -ATOM 868 OW SOL 289 20.641 2.850 14.981 1.00 0.00 O -ATOM 869 HW1 SOL 289 19.841 3.450 14.851 1.00 0.00 H -ATOM 870 HW2 SOL 289 20.541 2.360 15.841 1.00 0.00 H -ATOM 871 OW SOL 290 0.611 7.000 4.800 1.00 0.00 O -ATOM 872 HW1 SOL 290 1.061 6.100 4.770 1.00 0.00 H -ATOM 873 HW2 SOL 290 -0.329 6.890 5.130 1.00 0.00 H -ATOM 874 OW SOL 291 19.401 5.560 13.861 1.00 0.00 O -ATOM 875 HW1 SOL 291 20.321 5.550 13.451 1.00 0.00 H -ATOM 876 HW2 SOL 291 19.341 6.300 14.531 1.00 0.00 H -ATOM 877 OW SOL 292 0.891 8.130 12.511 1.00 0.00 O -ATOM 878 HW1 SOL 292 1.751 8.250 13.011 1.00 0.00 H -ATOM 879 HW2 SOL 292 0.471 7.260 12.781 1.00 0.00 H -ATOM 880 OW SOL 293 19.261 15.641 13.311 1.00 0.00 O -ATOM 881 HW1 SOL 293 18.801 16.461 12.971 1.00 0.00 H -ATOM 882 HW2 SOL 293 20.241 15.831 13.401 1.00 0.00 H -ATOM 883 OW SOL 294 21.691 2.130 12.311 1.00 0.00 O -ATOM 884 HW1 SOL 294 21.461 2.500 13.211 1.00 0.00 H -ATOM 885 HW2 SOL 294 21.391 1.180 12.251 1.00 0.00 H -ATOM 886 OW SOL 295 18.991 13.101 12.821 1.00 0.00 O -ATOM 887 HW1 SOL 295 19.521 12.611 13.501 1.00 0.00 H -ATOM 888 HW2 SOL 295 19.211 14.081 12.871 1.00 0.00 H -ATOM 889 OW SOL 296 21.811 8.100 9.491 1.00 0.00 O -ATOM 890 HW1 SOL 296 22.741 8.460 9.541 1.00 0.00 H -ATOM 891 HW2 SOL 296 21.751 7.250 10.011 1.00 0.00 H -ATOM 892 OW SOL 297 18.701 13.261 2.000 1.00 0.00 O -ATOM 893 HW1 SOL 297 17.771 13.471 1.690 1.00 0.00 H -ATOM 894 HW2 SOL 297 18.801 12.271 2.130 1.00 0.00 H -ATOM 895 OW SOL 298 19.501 18.011 9.270 1.00 0.00 O -ATOM 896 HW1 SOL 298 19.081 17.151 9.000 1.00 0.00 H -ATOM 897 HW2 SOL 298 20.441 18.041 8.930 1.00 0.00 H -ATOM 898 OW SOL 299 1.831 15.681 9.100 1.00 0.00 O -ATOM 899 HW1 SOL 299 2.491 16.421 9.190 1.00 0.00 H -ATOM 900 HW2 SOL 299 2.271 14.891 8.680 1.00 0.00 H -ATOM 901 OW SOL 300 19.021 5.440 11.141 1.00 0.00 O -ATOM 902 HW1 SOL 300 19.871 5.110 10.731 1.00 0.00 H -ATOM 903 HW2 SOL 300 19.151 5.590 12.121 1.00 0.00 H -ATOM 904 OW SOL 301 20.511 5.200 17.221 1.00 0.00 O -ATOM 905 HW1 SOL 301 21.101 4.800 16.521 1.00 0.00 H -ATOM 906 HW2 SOL 301 19.931 5.910 16.811 1.00 0.00 H -ATOM 907 OW SOL 302 21.141 15.641 17.441 1.00 0.00 O -ATOM 908 HW1 SOL 302 20.841 16.211 18.201 1.00 0.00 H -ATOM 909 HW2 SOL 302 21.071 14.671 17.701 1.00 0.00 H -ATOM 910 OW SOL 303 1.521 5.000 1.910 1.00 0.00 O -ATOM 911 HW1 SOL 303 2.131 5.800 1.950 1.00 0.00 H -ATOM 912 HW2 SOL 303 0.571 5.310 1.980 1.00 0.00 H -ATOM 913 OW SOL 304 20.211 11.371 14.661 1.00 0.00 O -ATOM 914 HW1 SOL 304 20.431 10.761 15.421 1.00 0.00 H -ATOM 915 HW2 SOL 304 20.311 10.881 13.801 1.00 0.00 H -ATOM 916 OW SOL 305 19.451 12.581 10.221 1.00 0.00 O -ATOM 917 HW1 SOL 305 19.401 12.571 11.221 1.00 0.00 H -ATOM 918 HW2 SOL 305 18.621 12.171 9.841 1.00 0.00 H -ATOM 919 OW SOL 306 19.921 17.941 18.511 1.00 0.00 O -ATOM 920 HW1 SOL 306 19.511 17.201 19.041 1.00 0.00 H -ATOM 921 HW2 SOL 306 20.561 18.451 19.091 1.00 0.00 H -ATOM 922 OW SOL 307 21.251 3.260 7.200 1.00 0.00 O -ATOM 923 HW1 SOL 307 20.461 3.770 6.860 1.00 0.00 H -ATOM 924 HW2 SOL 307 21.161 3.110 8.180 1.00 0.00 H -ATOM 925 OW SOL 308 0.511 12.881 14.901 1.00 0.00 O -ATOM 926 HW1 SOL 308 0.381 13.811 14.561 1.00 0.00 H -ATOM 927 HW2 SOL 308 -0.329 12.361 14.771 1.00 0.00 H -ATOM 928 OW SOL 309 21.171 13.481 2.900 1.00 0.00 O -ATOM 929 HW1 SOL 309 20.211 13.491 2.630 1.00 0.00 H -ATOM 930 HW2 SOL 309 21.291 14.011 3.740 1.00 0.00 H -ATOM 931 OW SOL 310 19.671 10.131 17.261 1.00 0.00 O -ATOM 932 HW1 SOL 310 18.901 9.801 17.801 1.00 0.00 H -ATOM 933 HW2 SOL 310 20.521 9.831 17.681 1.00 0.00 H -ATOM 934 OW SOL 311 19.371 3.450 0.330 1.00 0.00 O -ATOM 935 HW1 SOL 311 18.451 3.170 0.040 1.00 0.00 H -ATOM 936 HW2 SOL 311 19.681 4.220 -0.230 1.00 0.00 H -ATOM 937 OW SOL 312 19.341 1.660 3.180 1.00 0.00 O -ATOM 938 HW1 SOL 312 19.171 2.490 2.640 1.00 0.00 H -ATOM 939 HW2 SOL 312 20.241 1.290 2.960 1.00 0.00 H -ATOM 940 OW SOL 313 0.691 17.411 15.601 1.00 0.00 O -ATOM 941 HW1 SOL 313 -0.219 17.821 15.581 1.00 0.00 H -ATOM 942 HW2 SOL 313 0.621 16.471 15.921 1.00 0.00 H -ATOM 943 OW SOL 314 19.411 12.401 6.530 1.00 0.00 O -ATOM 944 HW1 SOL 314 19.401 11.931 7.410 1.00 0.00 H -ATOM 945 HW2 SOL 314 20.231 12.121 6.020 1.00 0.00 H -ATOM 946 OW SOL 315 1.071 4.240 5.200 1.00 0.00 O -ATOM 947 HW1 SOL 315 1.371 3.520 4.580 1.00 0.00 H -ATOM 948 HW2 SOL 315 0.681 3.840 6.030 1.00 0.00 H -ATOM 949 OW SOL 316 21.791 5.470 12.801 1.00 0.00 O -ATOM 950 HW1 SOL 316 22.171 4.880 13.521 1.00 0.00 H -ATOM 951 HW2 SOL 316 22.191 5.210 11.921 1.00 0.00 H -ATOM 952 OW SOL 317 19.011 10.771 3.000 1.00 0.00 O -ATOM 953 HW1 SOL 317 20.001 10.661 2.910 1.00 0.00 H -ATOM 954 HW2 SOL 317 18.611 9.911 3.320 1.00 0.00 H -ATOM 955 OW SOL 318 20.921 6.280 19.751 1.00 0.00 O -ATOM 956 HW1 SOL 318 19.991 6.260 20.121 1.00 0.00 H -ATOM 957 HW2 SOL 318 20.931 5.890 18.831 1.00 0.00 H -ATOM 958 OW SOL 319 20.931 17.131 1.621 1.00 0.00 O -ATOM 959 HW1 SOL 319 21.271 17.901 2.161 1.00 0.00 H -ATOM 960 HW2 SOL 319 21.371 17.131 0.721 1.00 0.00 H -ATOM 961 OW SOL 320 18.891 15.961 19.791 1.00 0.00 O -ATOM 962 HW1 SOL 320 18.701 15.001 20.001 1.00 0.00 H -ATOM 963 HW2 SOL 320 18.561 16.541 20.541 1.00 0.00 H -ATOM 964 OW SOL 321 1.431 17.431 0.021 1.00 0.00 O -ATOM 965 HW1 SOL 321 1.761 17.821 0.881 1.00 0.00 H -ATOM 966 HW2 SOL 321 2.191 17.361 -0.629 1.00 0.00 H -ATOM 967 OW SOL 322 2.181 0.640 1.911 1.00 0.00 O -ATOM 968 HW1 SOL 322 1.371 0.650 2.491 1.00 0.00 H -ATOM 969 HW2 SOL 322 2.211 1.470 1.361 1.00 0.00 H -ATOM 970 OW SOL 323 2.061 2.560 0.071 1.00 0.00 O -ATOM 971 HW1 SOL 323 2.331 1.970 -0.679 1.00 0.00 H -ATOM 972 HW2 SOL 323 2.061 3.510 -0.239 1.00 0.00 H -ATOM 973 OW SOL 324 18.701 13.261 20.621 1.00 0.00 O -ATOM 974 HW1 SOL 324 17.771 13.471 20.311 1.00 0.00 H -ATOM 975 HW2 SOL 324 18.801 12.271 20.751 1.00 0.00 H -ATOM 976 OW SOL 325 1.521 5.000 20.531 1.00 0.00 O -ATOM 977 HW1 SOL 325 2.131 5.800 20.571 1.00 0.00 H -ATOM 978 HW2 SOL 325 0.571 5.310 20.601 1.00 0.00 H -ATOM 979 OW SOL 326 21.171 13.481 21.521 1.00 0.00 O -ATOM 980 HW1 SOL 326 20.211 13.491 21.251 1.00 0.00 H -ATOM 981 HW2 SOL 326 21.291 14.011 22.361 1.00 0.00 H -ATOM 982 OW SOL 327 19.371 3.450 18.951 1.00 0.00 O -ATOM 983 HW1 SOL 327 18.451 3.170 18.661 1.00 0.00 H -ATOM 984 HW2 SOL 327 19.681 4.220 18.391 1.00 0.00 H -ATOM 985 OW SOL 328 19.011 10.771 21.621 1.00 0.00 O -ATOM 986 HW1 SOL 328 20.001 10.661 21.531 1.00 0.00 H -ATOM 987 HW2 SOL 328 18.611 9.911 21.941 1.00 0.00 H -ATOM 988 OW SOL 329 20.871 21.371 9.961 1.00 0.00 O -ATOM 989 HW1 SOL 329 21.221 21.201 10.881 1.00 0.00 H -ATOM 990 HW2 SOL 329 19.991 20.921 9.841 1.00 0.00 H -ATOM 991 OW SOL 330 18.811 0.471 6.470 1.00 0.00 O -ATOM 992 HW1 SOL 330 17.991 0.901 6.860 1.00 0.00 H -ATOM 993 HW2 SOL 330 18.531 -0.259 5.840 1.00 0.00 H -ATOM 994 OW SOL 331 2.291 20.581 8.850 1.00 0.00 O -ATOM 995 HW1 SOL 331 2.241 20.531 9.850 1.00 0.00 H -ATOM 996 HW2 SOL 331 2.311 21.541 8.560 1.00 0.00 H -ATOM 997 OW SOL 332 20.641 21.471 14.981 1.00 0.00 O -ATOM 998 HW1 SOL 332 19.841 22.071 14.851 1.00 0.00 H -ATOM 999 HW2 SOL 332 20.541 20.981 15.841 1.00 0.00 H -ATOM 1000 OW SOL 333 1.831 19.121 17.401 1.00 0.00 O -ATOM 1001 HW1 SOL 333 1.411 18.551 16.701 1.00 0.00 H -ATOM 1002 HW2 SOL 333 1.171 19.811 17.721 1.00 0.00 H -ATOM 1003 OW SOL 334 21.691 20.751 12.311 1.00 0.00 O -ATOM 1004 HW1 SOL 334 21.461 21.121 13.211 1.00 0.00 H -ATOM 1005 HW2 SOL 334 21.391 19.801 12.251 1.00 0.00 H -ATOM 1006 OW SOL 335 21.691 19.251 6.180 1.00 0.00 O -ATOM 1007 HW1 SOL 335 21.581 20.191 6.510 1.00 0.00 H -ATOM 1008 HW2 SOL 335 21.641 18.621 6.950 1.00 0.00 H -ATOM 1009 OW SOL 336 21.251 0.051 7.200 1.00 0.00 O -ATOM 1010 HW1 SOL 336 20.461 0.561 6.860 1.00 0.00 H -ATOM 1011 HW2 SOL 336 21.161 -0.099 8.180 1.00 0.00 H -ATOM 1012 OW SOL 337 19.371 0.241 0.330 1.00 0.00 O -ATOM 1013 HW1 SOL 337 18.451 -0.039 0.040 1.00 0.00 H -ATOM 1014 HW2 SOL 337 19.681 1.011 -0.230 1.00 0.00 H -ATOM 1015 OW SOL 338 19.341 20.281 3.180 1.00 0.00 O -ATOM 1016 HW1 SOL 338 19.171 21.111 2.640 1.00 0.00 H -ATOM 1017 HW2 SOL 338 20.241 19.911 2.960 1.00 0.00 H -ATOM 1018 OW SOL 339 1.071 1.031 5.200 1.00 0.00 O -ATOM 1019 HW1 SOL 339 1.371 0.311 4.580 1.00 0.00 H -ATOM 1020 HW2 SOL 339 0.681 0.631 6.030 1.00 0.00 H -ATOM 1021 OW SOL 340 2.181 19.261 1.911 1.00 0.00 O -ATOM 1022 HW1 SOL 340 1.371 19.271 2.491 1.00 0.00 H -ATOM 1023 HW2 SOL 340 2.211 20.091 1.361 1.00 0.00 H -ATOM 1024 OW SOL 341 21.591 18.971 20.331 1.00 0.00 O -ATOM 1025 HW1 SOL 341 22.081 19.811 20.121 1.00 0.00 H -ATOM 1026 HW2 SOL 341 22.211 18.321 20.781 1.00 0.00 H -ATOM 1027 OW SOL 342 2.061 21.181 0.071 1.00 0.00 O -ATOM 1028 HW1 SOL 342 2.331 20.591 -0.679 1.00 0.00 H -ATOM 1029 HW2 SOL 342 2.061 22.131 -0.239 1.00 0.00 H -ATOM 1030 OW SOL 343 19.371 0.241 18.951 1.00 0.00 O -ATOM 1031 HW1 SOL 343 18.451 -0.039 18.661 1.00 0.00 H -ATOM 1032 HW2 SOL 343 19.681 1.011 18.391 1.00 0.00 H -TER -ENDMDL diff --git a/examples/latte_scf/coords_1299.pdb b/examples/latte_scf/coords_1299.pdb deleted file mode 100644 index 55d5d1ad..00000000 --- a/examples/latte_scf/coords_1299.pdb +++ /dev/null @@ -1,1305 +0,0 @@ -TITLE Built with Packmol -REMARK Packmol generated pdb file -CRYST1 40.230 40.230 40.230 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H HOH 0 24.812 22.184 19.109 1.00 0.00 H -ATOM 2 O HOH 1 24.014 22.044 19.696 1.00 0.00 O -ATOM 3 H HOH 0 23.492 21.337 19.219 1.00 0.00 H -ATOM 4 OW SOL 1 17.915 12.852 12.888 1.00 0.00 O -ATOM 5 HW1 SOL 1 18.247 13.543 12.247 1.00 0.00 H -ATOM 6 HW2 SOL 1 17.565 12.128 12.294 1.00 0.00 H -ATOM 7 OW SOL 2 17.524 28.252 22.152 1.00 0.00 O -ATOM 8 HW1 SOL 2 17.842 29.134 21.806 1.00 0.00 H -ATOM 9 HW2 SOL 2 16.749 28.493 22.736 1.00 0.00 H -ATOM 10 OW SOL 3 18.272 22.452 8.081 1.00 0.00 O -ATOM 11 HW1 SOL 3 18.633 21.922 8.848 1.00 0.00 H -ATOM 12 HW2 SOL 3 17.651 21.814 7.625 1.00 0.00 H -ATOM 13 OW SOL 4 22.430 24.527 31.340 1.00 0.00 O -ATOM 14 HW1 SOL 4 22.675 23.743 31.910 1.00 0.00 H -ATOM 15 HW2 SOL 4 22.090 25.200 31.998 1.00 0.00 H -ATOM 16 OW SOL 5 25.090 23.960 22.405 1.00 0.00 O -ATOM 17 HW1 SOL 5 24.836 23.682 21.479 1.00 0.00 H -ATOM 18 HW2 SOL 5 26.000 23.563 22.529 1.00 0.00 H -ATOM 19 OW SOL 6 24.774 20.640 26.519 1.00 0.00 O -ATOM 20 HW1 SOL 6 24.293 19.797 26.761 1.00 0.00 H -ATOM 21 HW2 SOL 6 24.915 21.092 27.400 1.00 0.00 H -ATOM 22 OW SOL 7 26.990 22.203 21.118 1.00 0.00 O -ATOM 23 HW1 SOL 7 26.249 21.867 21.698 1.00 0.00 H -ATOM 24 HW2 SOL 7 26.681 23.114 20.845 1.00 0.00 H -ATOM 25 OW SOL 8 6.883 20.799 22.990 1.00 0.00 O -ATOM 26 HW1 SOL 8 7.731 20.467 23.403 1.00 0.00 H -ATOM 27 HW2 SOL 8 6.530 21.448 23.664 1.00 0.00 H -ATOM 28 OW SOL 9 22.196 12.513 19.542 1.00 0.00 O -ATOM 29 HW1 SOL 9 21.895 11.768 20.137 1.00 0.00 H -ATOM 30 HW2 SOL 9 22.528 13.206 20.181 1.00 0.00 H -ATOM 31 OW SOL 10 24.367 14.196 27.807 1.00 0.00 O -ATOM 32 HW1 SOL 10 24.759 13.864 26.949 1.00 0.00 H -ATOM 33 HW2 SOL 10 25.039 14.862 28.132 1.00 0.00 H -ATOM 34 OW SOL 11 9.054 23.271 16.103 1.00 0.00 O -ATOM 35 HW1 SOL 11 9.000 23.179 15.109 1.00 0.00 H -ATOM 36 HW2 SOL 11 10.012 23.068 16.307 1.00 0.00 H -ATOM 37 OW SOL 12 13.728 24.315 29.715 1.00 0.00 O -ATOM 38 HW1 SOL 12 14.398 24.828 29.178 1.00 0.00 H -ATOM 39 HW2 SOL 12 13.236 23.780 29.028 1.00 0.00 H -ATOM 40 OW SOL 13 14.471 25.164 21.554 1.00 0.00 O -ATOM 41 HW1 SOL 13 14.885 25.186 22.464 1.00 0.00 H -ATOM 42 HW2 SOL 13 13.759 25.864 21.602 1.00 0.00 H -ATOM 43 OW SOL 14 26.294 31.275 22.228 1.00 0.00 O -ATOM 44 HW1 SOL 14 26.728 31.339 23.126 1.00 0.00 H -ATOM 45 HW2 SOL 14 26.431 30.319 21.968 1.00 0.00 H -ATOM 46 OW SOL 15 26.994 11.521 25.850 1.00 0.00 O -ATOM 47 HW1 SOL 15 26.171 11.436 25.288 1.00 0.00 H -ATOM 48 HW2 SOL 15 27.117 12.509 25.940 1.00 0.00 H -ATOM 49 OW SOL 16 16.539 28.602 27.834 1.00 0.00 O -ATOM 50 HW1 SOL 16 15.693 28.079 27.733 1.00 0.00 H -ATOM 51 HW2 SOL 16 16.972 28.525 26.936 1.00 0.00 H -ATOM 52 OW SOL 17 22.819 23.562 21.747 1.00 0.00 O -ATOM 53 HW1 SOL 17 23.183 24.097 22.509 1.00 0.00 H -ATOM 54 HW2 SOL 17 22.769 22.633 22.114 1.00 0.00 H -ATOM 55 OW SOL 18 19.599 24.838 14.635 1.00 0.00 O -ATOM 56 HW1 SOL 18 20.294 25.205 14.016 1.00 0.00 H -ATOM 57 HW2 SOL 18 18.904 24.470 14.018 1.00 0.00 H -ATOM 58 OW SOL 19 11.460 21.896 29.300 1.00 0.00 O -ATOM 59 HW1 SOL 19 12.202 22.159 29.917 1.00 0.00 H -ATOM 60 HW2 SOL 19 10.878 21.312 29.867 1.00 0.00 H -ATOM 61 OW SOL 20 13.460 8.606 19.737 1.00 0.00 O -ATOM 62 HW1 SOL 20 13.490 8.653 20.735 1.00 0.00 H -ATOM 63 HW2 SOL 20 13.017 7.729 19.555 1.00 0.00 H -ATOM 64 OW SOL 21 26.689 19.633 27.144 1.00 0.00 O -ATOM 65 HW1 SOL 21 25.881 19.410 27.689 1.00 0.00 H -ATOM 66 HW2 SOL 21 27.282 20.115 27.789 1.00 0.00 H -ATOM 67 OW SOL 22 12.680 24.355 15.838 1.00 0.00 O -ATOM 68 HW1 SOL 22 12.330 25.241 16.143 1.00 0.00 H -ATOM 69 HW2 SOL 22 13.173 24.574 14.996 1.00 0.00 H -ATOM 70 OW SOL 23 17.500 25.332 29.830 1.00 0.00 O -ATOM 71 HW1 SOL 23 18.055 26.125 29.579 1.00 0.00 H -ATOM 72 HW2 SOL 23 18.141 24.567 29.772 1.00 0.00 H -ATOM 73 OW SOL 24 24.609 7.817 20.898 1.00 0.00 O -ATOM 74 HW1 SOL 24 25.282 8.251 21.495 1.00 0.00 H -ATOM 75 HW2 SOL 24 23.751 7.908 21.404 1.00 0.00 H -ATOM 76 OW SOL 25 19.438 10.285 16.542 1.00 0.00 O -ATOM 77 HW1 SOL 25 18.832 10.543 15.790 1.00 0.00 H -ATOM 78 HW2 SOL 25 18.857 9.725 17.132 1.00 0.00 H -ATOM 79 OW SOL 26 11.378 19.670 24.247 1.00 0.00 O -ATOM 80 HW1 SOL 26 12.271 19.520 24.670 1.00 0.00 H -ATOM 81 HW2 SOL 26 11.565 20.341 23.530 1.00 0.00 H -ATOM 82 OW SOL 27 19.982 33.490 17.847 1.00 0.00 O -ATOM 83 HW1 SOL 27 20.767 33.113 18.339 1.00 0.00 H -ATOM 84 HW2 SOL 27 19.790 34.344 18.330 1.00 0.00 H -ATOM 85 OW SOL 28 16.937 23.412 19.668 1.00 0.00 O -ATOM 86 HW1 SOL 28 16.821 22.419 19.661 1.00 0.00 H -ATOM 87 HW2 SOL 28 17.719 23.554 20.275 1.00 0.00 H -ATOM 88 OW SOL 29 27.579 22.373 10.254 1.00 0.00 O -ATOM 89 HW1 SOL 29 28.063 21.629 9.795 1.00 0.00 H -ATOM 90 HW2 SOL 29 26.978 22.738 9.543 1.00 0.00 H -ATOM 91 OW SOL 30 12.743 19.748 16.777 1.00 0.00 O -ATOM 92 HW1 SOL 30 12.101 19.822 16.015 1.00 0.00 H -ATOM 93 HW2 SOL 30 13.630 19.635 16.329 1.00 0.00 H -ATOM 94 OW SOL 31 22.687 17.370 21.870 1.00 0.00 O -ATOM 95 HW1 SOL 31 23.080 16.659 22.453 1.00 0.00 H -ATOM 96 HW2 SOL 31 22.590 18.152 22.485 1.00 0.00 H -ATOM 97 OW SOL 32 22.513 10.240 16.651 1.00 0.00 O -ATOM 98 HW1 SOL 32 22.192 10.135 17.592 1.00 0.00 H -ATOM 99 HW2 SOL 32 22.854 11.179 16.622 1.00 0.00 H -ATOM 100 OW SOL 33 10.472 16.762 13.933 1.00 0.00 O -ATOM 101 HW1 SOL 33 9.659 16.888 14.501 1.00 0.00 H -ATOM 102 HW2 SOL 33 10.489 15.777 13.761 1.00 0.00 H -ATOM 103 OW SOL 34 24.723 25.943 21.674 1.00 0.00 O -ATOM 104 HW1 SOL 34 23.754 25.698 21.658 1.00 0.00 H -ATOM 105 HW2 SOL 34 24.933 26.139 20.717 1.00 0.00 H -ATOM 106 OW SOL 35 8.848 23.597 22.834 1.00 0.00 O -ATOM 107 HW1 SOL 35 8.137 23.529 23.534 1.00 0.00 H -ATOM 108 HW2 SOL 35 8.911 22.667 22.471 1.00 0.00 H -ATOM 109 OW SOL 36 25.003 14.221 21.630 1.00 0.00 O -ATOM 110 HW1 SOL 36 25.360 13.898 22.506 1.00 0.00 H -ATOM 111 HW2 SOL 36 25.075 15.216 21.699 1.00 0.00 H -ATOM 112 OW SOL 37 17.024 25.204 21.412 1.00 0.00 O -ATOM 113 HW1 SOL 37 17.045 26.028 20.846 1.00 0.00 H -ATOM 114 HW2 SOL 37 16.331 24.633 20.973 1.00 0.00 H -ATOM 115 OW SOL 38 21.145 21.407 11.963 1.00 0.00 O -ATOM 116 HW1 SOL 38 20.834 22.357 11.979 1.00 0.00 H -ATOM 117 HW2 SOL 38 21.433 21.237 12.905 1.00 0.00 H -ATOM 118 OW SOL 39 22.328 19.648 17.502 1.00 0.00 O -ATOM 119 HW1 SOL 39 21.950 18.759 17.242 1.00 0.00 H -ATOM 120 HW2 SOL 39 22.819 19.945 16.683 1.00 0.00 H -ATOM 121 OW SOL 40 31.232 18.191 16.282 1.00 0.00 O -ATOM 122 HW1 SOL 40 30.255 18.039 16.436 1.00 0.00 H -ATOM 123 HW2 SOL 40 31.500 17.427 15.695 1.00 0.00 H -ATOM 124 OW SOL 41 20.472 22.025 28.044 1.00 0.00 O -ATOM 125 HW1 SOL 41 19.910 21.201 28.114 1.00 0.00 H -ATOM 126 HW2 SOL 41 21.206 21.867 28.705 1.00 0.00 H -ATOM 127 OW SOL 42 29.525 27.024 26.006 1.00 0.00 O -ATOM 128 HW1 SOL 42 29.545 26.084 25.664 1.00 0.00 H -ATOM 129 HW2 SOL 42 30.425 27.384 25.760 1.00 0.00 H -ATOM 130 OW SOL 43 12.572 19.293 19.563 1.00 0.00 O -ATOM 131 HW1 SOL 43 12.235 19.147 18.633 1.00 0.00 H -ATOM 132 HW2 SOL 43 13.127 20.121 19.486 1.00 0.00 H -ATOM 133 OW SOL 44 28.904 25.278 27.929 1.00 0.00 O -ATOM 134 HW1 SOL 44 29.793 25.123 27.500 1.00 0.00 H -ATOM 135 HW2 SOL 44 28.261 25.227 27.165 1.00 0.00 H -ATOM 136 OW SOL 45 18.890 24.136 9.158 1.00 0.00 O -ATOM 137 HW1 SOL 45 18.386 24.659 9.845 1.00 0.00 H -ATOM 138 HW2 SOL 45 19.809 24.063 9.544 1.00 0.00 H -ATOM 139 OW SOL 46 22.411 19.995 11.347 1.00 0.00 O -ATOM 140 HW1 SOL 46 22.844 19.382 10.686 1.00 0.00 H -ATOM 141 HW2 SOL 46 22.765 20.897 11.099 1.00 0.00 H -ATOM 142 OW SOL 47 15.126 24.616 8.500 1.00 0.00 O -ATOM 143 HW1 SOL 47 14.587 24.550 9.339 1.00 0.00 H -ATOM 144 HW2 SOL 47 14.440 24.578 7.774 1.00 0.00 H -ATOM 145 OW SOL 48 19.778 11.195 20.586 1.00 0.00 O -ATOM 146 HW1 SOL 48 19.350 12.051 20.295 1.00 0.00 H -ATOM 147 HW2 SOL 48 20.122 11.403 21.502 1.00 0.00 H -ATOM 148 OW SOL 49 14.611 23.092 15.349 1.00 0.00 O -ATOM 149 HW1 SOL 49 14.685 22.211 14.880 1.00 0.00 H -ATOM 150 HW2 SOL 49 15.054 22.928 16.230 1.00 0.00 H -ATOM 151 OW SOL 50 16.022 14.205 14.111 1.00 0.00 O -ATOM 152 HW1 SOL 50 15.842 15.127 14.455 1.00 0.00 H -ATOM 153 HW2 SOL 50 16.550 14.364 13.276 1.00 0.00 H -ATOM 154 OW SOL 51 30.145 24.475 24.408 1.00 0.00 O -ATOM 155 HW1 SOL 51 30.977 24.710 24.911 1.00 0.00 H -ATOM 156 HW2 SOL 51 29.480 24.281 25.129 1.00 0.00 H -ATOM 157 OW SOL 52 19.974 12.135 30.934 1.00 0.00 O -ATOM 158 HW1 SOL 52 19.765 11.696 31.808 1.00 0.00 H -ATOM 159 HW2 SOL 52 20.496 12.947 31.197 1.00 0.00 H -ATOM 160 OW SOL 53 27.407 10.681 16.793 1.00 0.00 O -ATOM 161 HW1 SOL 53 28.348 10.992 16.659 1.00 0.00 H -ATOM 162 HW2 SOL 53 27.414 9.747 16.436 1.00 0.00 H -ATOM 163 OW SOL 54 20.295 15.208 16.437 1.00 0.00 O -ATOM 164 HW1 SOL 54 20.039 14.270 16.202 1.00 0.00 H -ATOM 165 HW2 SOL 54 20.500 15.626 15.552 1.00 0.00 H -ATOM 166 OW SOL 55 20.140 14.679 26.490 1.00 0.00 O -ATOM 167 HW1 SOL 55 19.541 14.035 26.967 1.00 0.00 H -ATOM 168 HW2 SOL 55 20.592 15.175 27.231 1.00 0.00 H -ATOM 169 OW SOL 56 18.049 18.312 23.379 1.00 0.00 O -ATOM 170 HW1 SOL 56 17.709 18.188 22.447 1.00 0.00 H -ATOM 171 HW2 SOL 56 17.257 18.669 23.874 1.00 0.00 H -ATOM 172 OW SOL 57 23.087 28.689 17.079 1.00 0.00 O -ATOM 173 HW1 SOL 57 22.894 29.416 16.421 1.00 0.00 H -ATOM 174 HW2 SOL 57 22.180 28.392 17.375 1.00 0.00 H -ATOM 175 OW SOL 58 17.652 16.214 32.063 1.00 0.00 O -ATOM 176 HW1 SOL 58 17.465 16.870 31.332 1.00 0.00 H -ATOM 177 HW2 SOL 58 17.266 15.359 31.717 1.00 0.00 H -ATOM 178 OW SOL 59 10.164 21.661 24.153 1.00 0.00 O -ATOM 179 HW1 SOL 59 9.226 21.407 23.917 1.00 0.00 H -ATOM 180 HW2 SOL 59 10.548 21.978 23.286 1.00 0.00 H -ATOM 181 OW SOL 60 20.915 17.894 29.118 1.00 0.00 O -ATOM 182 HW1 SOL 60 20.640 18.563 28.429 1.00 0.00 H -ATOM 183 HW2 SOL 60 21.002 17.043 28.600 1.00 0.00 H -ATOM 184 OW SOL 61 17.367 26.246 23.017 1.00 0.00 O -ATOM 185 HW1 SOL 61 16.659 26.364 23.712 1.00 0.00 H -ATOM 186 HW2 SOL 61 18.116 25.808 23.515 1.00 0.00 H -ATOM 187 OW SOL 62 21.776 22.893 24.986 1.00 0.00 O -ATOM 188 HW1 SOL 62 21.561 22.185 24.313 1.00 0.00 H -ATOM 189 HW2 SOL 62 21.893 23.717 24.431 1.00 0.00 H -ATOM 190 OW SOL 63 25.728 14.610 30.886 1.00 0.00 O -ATOM 191 HW1 SOL 63 26.527 14.773 30.307 1.00 0.00 H -ATOM 192 HW2 SOL 63 25.225 13.898 30.398 1.00 0.00 H -ATOM 193 OW SOL 64 25.135 11.052 12.970 1.00 0.00 O -ATOM 194 HW1 SOL 64 25.032 10.506 12.139 1.00 0.00 H -ATOM 195 HW2 SOL 64 25.610 10.438 13.599 1.00 0.00 H -ATOM 196 OW SOL 65 21.134 31.228 16.691 1.00 0.00 O -ATOM 197 HW1 SOL 65 21.641 31.978 17.115 1.00 0.00 H -ATOM 198 HW2 SOL 65 20.392 31.050 17.337 1.00 0.00 H -ATOM 199 OW SOL 66 15.661 24.773 31.063 1.00 0.00 O -ATOM 200 HW1 SOL 66 15.729 24.124 30.306 1.00 0.00 H -ATOM 201 HW2 SOL 66 15.321 25.607 30.629 1.00 0.00 H -ATOM 202 OW SOL 67 25.005 27.999 10.964 1.00 0.00 O -ATOM 203 HW1 SOL 67 25.289 28.514 10.155 1.00 0.00 H -ATOM 204 HW2 SOL 67 24.617 27.159 10.584 1.00 0.00 H -ATOM 205 OW SOL 68 23.912 25.698 23.933 1.00 0.00 O -ATOM 206 HW1 SOL 68 23.423 25.068 24.535 1.00 0.00 H -ATOM 207 HW2 SOL 68 24.848 25.346 23.932 1.00 0.00 H -ATOM 208 OW SOL 69 7.050 20.594 15.260 1.00 0.00 O -ATOM 209 HW1 SOL 69 6.133 20.372 15.590 1.00 0.00 H -ATOM 210 HW2 SOL 69 7.033 21.590 15.169 1.00 0.00 H -ATOM 211 OW SOL 70 10.707 29.314 23.961 1.00 0.00 O -ATOM 212 HW1 SOL 70 10.092 28.529 24.042 1.00 0.00 H -ATOM 213 HW2 SOL 70 10.103 30.057 23.672 1.00 0.00 H -ATOM 214 OW SOL 71 20.974 26.571 12.738 1.00 0.00 O -ATOM 215 HW1 SOL 71 21.250 26.511 11.779 1.00 0.00 H -ATOM 216 HW2 SOL 71 20.503 27.452 12.792 1.00 0.00 H -ATOM 217 OW SOL 72 19.050 11.882 24.746 1.00 0.00 O -ATOM 218 HW1 SOL 72 18.512 11.125 24.374 1.00 0.00 H -ATOM 219 HW2 SOL 72 19.945 11.769 24.315 1.00 0.00 H -ATOM 220 OW SOL 73 16.829 19.778 32.330 1.00 0.00 O -ATOM 221 HW1 SOL 73 16.123 20.115 32.953 1.00 0.00 H -ATOM 222 HW2 SOL 73 17.160 20.606 31.878 1.00 0.00 H -ATOM 223 OW SOL 74 27.194 11.819 10.655 1.00 0.00 O -ATOM 224 HW1 SOL 74 27.283 11.033 11.266 1.00 0.00 H -ATOM 225 HW2 SOL 74 26.907 12.560 11.262 1.00 0.00 H -ATOM 226 OW SOL 75 9.143 26.922 18.015 1.00 0.00 O -ATOM 227 HW1 SOL 75 9.732 26.265 18.486 1.00 0.00 H -ATOM 228 HW2 SOL 75 8.240 26.494 18.047 1.00 0.00 H -ATOM 229 OW SOL 76 24.798 18.634 30.721 1.00 0.00 O -ATOM 230 HW1 SOL 76 24.248 18.074 30.101 1.00 0.00 H -ATOM 231 HW2 SOL 76 25.641 18.795 30.208 1.00 0.00 H -ATOM 232 OW SOL 77 19.713 11.078 9.455 1.00 0.00 O -ATOM 233 HW1 SOL 77 19.886 10.367 10.137 1.00 0.00 H -ATOM 234 HW2 SOL 77 19.629 11.912 10.000 1.00 0.00 H -ATOM 235 OW SOL 78 19.949 16.434 18.234 1.00 0.00 O -ATOM 236 HW1 SOL 78 20.849 16.785 17.978 1.00 0.00 H -ATOM 237 HW2 SOL 78 19.360 16.720 17.479 1.00 0.00 H -ATOM 238 OW SOL 79 26.100 20.094 24.860 1.00 0.00 O -ATOM 239 HW1 SOL 79 25.929 20.125 23.875 1.00 0.00 H -ATOM 240 HW2 SOL 79 27.079 19.902 24.923 1.00 0.00 H -ATOM 241 OW SOL 80 28.245 23.176 16.401 1.00 0.00 O -ATOM 242 HW1 SOL 80 29.089 23.075 16.928 1.00 0.00 H -ATOM 243 HW2 SOL 80 27.898 22.241 16.330 1.00 0.00 H -ATOM 244 OW SOL 81 23.429 7.658 15.115 1.00 0.00 O -ATOM 245 HW1 SOL 81 23.809 7.098 14.379 1.00 0.00 H -ATOM 246 HW2 SOL 81 22.872 8.334 14.633 1.00 0.00 H -ATOM 247 OW SOL 82 10.552 26.955 16.715 1.00 0.00 O -ATOM 248 HW1 SOL 82 10.884 27.105 15.784 1.00 0.00 H -ATOM 249 HW2 SOL 82 10.537 27.873 17.111 1.00 0.00 H -ATOM 250 OW SOL 83 16.927 19.868 15.041 1.00 0.00 O -ATOM 251 HW1 SOL 83 17.297 20.069 14.134 1.00 0.00 H -ATOM 252 HW2 SOL 83 17.447 19.066 15.335 1.00 0.00 H -ATOM 253 OW SOL 84 13.998 26.748 24.005 1.00 0.00 O -ATOM 254 HW1 SOL 84 13.596 25.972 23.519 1.00 0.00 H -ATOM 255 HW2 SOL 84 13.297 27.458 23.937 1.00 0.00 H -ATOM 256 OW SOL 85 14.352 31.295 25.838 1.00 0.00 O -ATOM 257 HW1 SOL 85 13.403 31.109 25.586 1.00 0.00 H -ATOM 258 HW2 SOL 85 14.735 31.719 25.018 1.00 0.00 H -ATOM 259 OW SOL 86 25.245 18.847 22.053 1.00 0.00 O -ATOM 260 HW1 SOL 86 24.739 19.112 22.874 1.00 0.00 H -ATOM 261 HW2 SOL 86 24.714 18.083 21.686 1.00 0.00 H -ATOM 262 OW SOL 87 18.110 19.707 19.148 1.00 0.00 O -ATOM 263 HW1 SOL 87 18.008 20.702 19.124 1.00 0.00 H -ATOM 264 HW2 SOL 87 17.670 19.405 18.303 1.00 0.00 H -ATOM 265 OW SOL 88 18.407 29.100 15.428 1.00 0.00 O -ATOM 266 HW1 SOL 88 17.629 28.693 15.907 1.00 0.00 H -ATOM 267 HW2 SOL 88 18.057 29.264 14.506 1.00 0.00 H -ATOM 268 OW SOL 89 21.496 27.940 30.924 1.00 0.00 O -ATOM 269 HW1 SOL 89 22.219 28.126 31.589 1.00 0.00 H -ATOM 270 HW2 SOL 89 21.009 27.160 31.317 1.00 0.00 H -ATOM 271 OW SOL 90 21.396 23.151 19.398 1.00 0.00 O -ATOM 272 HW1 SOL 90 22.203 22.959 18.839 1.00 0.00 H -ATOM 273 HW2 SOL 90 21.351 24.150 19.414 1.00 0.00 H -ATOM 274 OW SOL 91 32.625 27.206 21.159 1.00 0.00 O -ATOM 275 HW1 SOL 91 32.437 26.355 21.649 1.00 0.00 H -ATOM 276 HW2 SOL 91 31.757 27.700 21.202 1.00 0.00 H -ATOM 277 OW SOL 92 28.432 18.158 21.287 1.00 0.00 O -ATOM 278 HW1 SOL 92 28.045 18.046 20.373 1.00 0.00 H -ATOM 279 HW2 SOL 92 27.657 17.989 21.895 1.00 0.00 H -ATOM 280 OW SOL 93 21.854 13.532 15.062 1.00 0.00 O -ATOM 281 HW1 SOL 93 22.622 14.072 15.406 1.00 0.00 H -ATOM 282 HW2 SOL 93 21.496 13.083 15.881 1.00 0.00 H -ATOM 283 OW SOL 94 24.782 18.353 11.187 1.00 0.00 O -ATOM 284 HW1 SOL 94 25.623 17.860 10.966 1.00 0.00 H -ATOM 285 HW2 SOL 94 24.721 19.048 10.471 1.00 0.00 H -ATOM 286 OW SOL 95 18.737 27.913 27.854 1.00 0.00 O -ATOM 287 HW1 SOL 95 19.078 27.134 28.380 1.00 0.00 H -ATOM 288 HW2 SOL 95 18.398 28.541 28.555 1.00 0.00 H -ATOM 289 OW SOL 96 18.869 14.640 29.839 1.00 0.00 O -ATOM 290 HW1 SOL 96 17.889 14.819 29.925 1.00 0.00 H -ATOM 291 HW2 SOL 96 19.162 14.476 30.781 1.00 0.00 H -ATOM 292 OW SOL 97 15.633 29.145 19.667 1.00 0.00 O -ATOM 293 HW1 SOL 97 16.374 28.912 20.297 1.00 0.00 H -ATOM 294 HW2 SOL 97 14.874 29.383 20.273 1.00 0.00 H -ATOM 295 OW SOL 98 17.231 13.661 27.274 1.00 0.00 O -ATOM 296 HW1 SOL 98 17.386 14.182 28.113 1.00 0.00 H -ATOM 297 HW2 SOL 98 17.027 12.739 27.603 1.00 0.00 H -ATOM 298 OW SOL 99 22.474 9.875 11.065 1.00 0.00 O -ATOM 299 HW1 SOL 99 22.471 10.847 10.828 1.00 0.00 H -ATOM 300 HW2 SOL 99 23.197 9.495 10.488 1.00 0.00 H -ATOM 301 OW SOL 100 9.546 17.626 27.369 1.00 0.00 O -ATOM 302 HW1 SOL 100 9.197 18.507 27.050 1.00 0.00 H -ATOM 303 HW2 SOL 100 9.858 17.179 26.530 1.00 0.00 H -ATOM 304 OW SOL 101 29.435 20.599 25.289 1.00 0.00 O -ATOM 305 HW1 SOL 101 29.100 21.122 24.506 1.00 0.00 H -ATOM 306 HW2 SOL 101 29.952 19.852 24.871 1.00 0.00 H -ATOM 307 OW SOL 102 16.859 24.623 17.953 1.00 0.00 O -ATOM 308 HW1 SOL 102 16.278 24.398 17.171 1.00 0.00 H -ATOM 309 HW2 SOL 102 17.749 24.814 17.538 1.00 0.00 H -ATOM 310 OW SOL 103 22.411 17.494 8.922 1.00 0.00 O -ATOM 311 HW1 SOL 103 22.525 17.755 7.964 1.00 0.00 H -ATOM 312 HW2 SOL 103 23.034 16.721 9.033 1.00 0.00 H -ATOM 313 OW SOL 104 27.718 17.918 18.028 1.00 0.00 O -ATOM 314 HW1 SOL 104 27.794 18.719 18.621 1.00 0.00 H -ATOM 315 HW2 SOL 104 26.973 17.390 18.437 1.00 0.00 H -ATOM 316 OW SOL 105 19.428 28.867 22.791 1.00 0.00 O -ATOM 317 HW1 SOL 105 20.268 29.090 23.285 1.00 0.00 H -ATOM 318 HW2 SOL 105 18.738 28.811 23.513 1.00 0.00 H -ATOM 319 OW SOL 106 10.198 24.333 21.376 1.00 0.00 O -ATOM 320 HW1 SOL 106 10.435 23.555 21.958 1.00 0.00 H -ATOM 321 HW2 SOL 106 10.262 25.117 21.992 1.00 0.00 H -ATOM 322 OW SOL 107 22.196 18.465 31.449 1.00 0.00 O -ATOM 323 HW1 SOL 107 22.006 17.752 30.774 1.00 0.00 H -ATOM 324 HW2 SOL 107 22.312 19.289 30.895 1.00 0.00 H -ATOM 325 OW SOL 108 19.177 16.695 28.844 1.00 0.00 O -ATOM 326 HW1 SOL 108 18.541 17.348 29.254 1.00 0.00 H -ATOM 327 HW2 SOL 108 18.616 16.205 28.178 1.00 0.00 H -ATOM 328 OW SOL 109 14.256 13.056 21.586 1.00 0.00 O -ATOM 329 HW1 SOL 109 14.417 12.261 21.002 1.00 0.00 H -ATOM 330 HW2 SOL 109 13.308 13.307 21.387 1.00 0.00 H -ATOM 331 OW SOL 110 19.769 17.841 19.874 1.00 0.00 O -ATOM 332 HW1 SOL 110 20.206 17.669 20.757 1.00 0.00 H -ATOM 333 HW2 SOL 110 18.942 18.349 20.116 1.00 0.00 H -ATOM 334 OW SOL 111 19.177 24.021 24.409 1.00 0.00 O -ATOM 335 HW1 SOL 111 18.930 24.860 24.895 1.00 0.00 H -ATOM 336 HW2 SOL 111 19.348 23.365 25.144 1.00 0.00 H -ATOM 337 OW SOL 112 13.128 19.682 21.718 1.00 0.00 O -ATOM 338 HW1 SOL 112 12.916 20.560 21.288 1.00 0.00 H -ATOM 339 HW2 SOL 112 13.991 19.413 21.292 1.00 0.00 H -ATOM 340 OW SOL 113 24.265 10.766 24.493 1.00 0.00 O -ATOM 341 HW1 SOL 113 24.149 11.305 25.328 1.00 0.00 H -ATOM 342 HW2 SOL 113 24.889 10.035 24.769 1.00 0.00 H -ATOM 343 OW SOL 114 15.224 12.544 26.191 1.00 0.00 O -ATOM 344 HW1 SOL 114 14.815 12.639 25.284 1.00 0.00 H -ATOM 345 HW2 SOL 114 15.905 11.822 26.067 1.00 0.00 H -ATOM 346 OW SOL 115 16.171 28.128 25.166 1.00 0.00 O -ATOM 347 HW1 SOL 115 15.398 28.548 25.641 1.00 0.00 H -ATOM 348 HW2 SOL 115 16.066 27.153 25.360 1.00 0.00 H -ATOM 349 OW SOL 116 16.179 7.973 18.838 1.00 0.00 O -ATOM 350 HW1 SOL 116 15.811 8.610 19.516 1.00 0.00 H -ATOM 351 HW2 SOL 116 17.002 7.611 19.277 1.00 0.00 H -ATOM 352 OW SOL 117 14.860 10.741 22.956 1.00 0.00 O -ATOM 353 HW1 SOL 117 14.672 10.505 22.002 1.00 0.00 H -ATOM 354 HW2 SOL 117 14.057 11.269 23.231 1.00 0.00 H -ATOM 355 OW SOL 118 20.264 22.364 7.812 1.00 0.00 O -ATOM 356 HW1 SOL 118 20.097 22.151 6.850 1.00 0.00 H -ATOM 357 HW2 SOL 118 21.123 21.893 8.013 1.00 0.00 H -ATOM 358 OW SOL 119 14.432 13.841 28.501 1.00 0.00 O -ATOM 359 HW1 SOL 119 14.895 13.802 27.616 1.00 0.00 H -ATOM 360 HW2 SOL 119 13.754 13.108 28.445 1.00 0.00 H -ATOM 361 OW SOL 120 23.949 28.612 28.421 1.00 0.00 O -ATOM 362 HW1 SOL 120 23.700 29.051 29.285 1.00 0.00 H -ATOM 363 HW2 SOL 120 23.114 28.673 27.876 1.00 0.00 H -ATOM 364 OW SOL 121 24.860 26.234 15.593 1.00 0.00 O -ATOM 365 HW1 SOL 121 24.021 26.709 15.327 1.00 0.00 H -ATOM 366 HW2 SOL 121 24.678 25.941 16.531 1.00 0.00 H -ATOM 367 OW SOL 122 13.994 20.898 31.066 1.00 0.00 O -ATOM 368 HW1 SOL 122 14.720 21.484 30.705 1.00 0.00 H -ATOM 369 HW2 SOL 122 14.403 20.493 31.884 1.00 0.00 H -ATOM 370 OW SOL 123 19.763 31.059 19.445 1.00 0.00 O -ATOM 371 HW1 SOL 123 18.818 31.118 19.767 1.00 0.00 H -ATOM 372 HW2 SOL 123 20.274 30.793 20.262 1.00 0.00 H -ATOM 373 OW SOL 124 15.319 22.439 27.337 1.00 0.00 O -ATOM 374 HW1 SOL 124 15.956 23.111 27.716 1.00 0.00 H -ATOM 375 HW2 SOL 124 14.687 22.262 28.091 1.00 0.00 H -ATOM 376 OW SOL 125 22.320 32.061 22.179 1.00 0.00 O -ATOM 377 HW1 SOL 125 22.491 31.137 21.839 1.00 0.00 H -ATOM 378 HW2 SOL 125 22.019 32.560 21.367 1.00 0.00 H -ATOM 379 OW SOL 126 27.110 12.879 27.942 1.00 0.00 O -ATOM 380 HW1 SOL 126 26.163 12.568 27.865 1.00 0.00 H -ATOM 381 HW2 SOL 126 27.090 13.507 28.719 1.00 0.00 H -ATOM 382 OW SOL 127 9.308 20.552 15.865 1.00 0.00 O -ATOM 383 HW1 SOL 127 8.830 21.419 15.729 1.00 0.00 H -ATOM 384 HW2 SOL 127 9.870 20.716 16.675 1.00 0.00 H -ATOM 385 OW SOL 128 8.347 18.938 14.159 1.00 0.00 O -ATOM 386 HW1 SOL 128 9.293 18.804 13.864 1.00 0.00 H -ATOM 387 HW2 SOL 128 8.389 18.811 15.149 1.00 0.00 H -ATOM 388 OW SOL 129 24.213 29.125 21.625 1.00 0.00 O -ATOM 389 HW1 SOL 129 23.525 29.555 21.040 1.00 0.00 H -ATOM 390 HW2 SOL 129 25.014 29.053 21.031 1.00 0.00 H -ATOM 391 OW SOL 130 15.833 23.752 32.917 1.00 0.00 O -ATOM 392 HW1 SOL 130 14.936 24.157 32.743 1.00 0.00 H -ATOM 393 HW2 SOL 130 15.904 23.030 32.229 1.00 0.00 H -ATOM 394 OW SOL 131 16.075 23.397 13.754 1.00 0.00 O -ATOM 395 HW1 SOL 131 16.295 24.212 14.289 1.00 0.00 H -ATOM 396 HW2 SOL 131 16.944 22.904 13.705 1.00 0.00 H -ATOM 397 OW SOL 132 20.326 20.875 18.699 1.00 0.00 O -ATOM 398 HW1 SOL 132 20.765 21.712 18.372 1.00 0.00 H -ATOM 399 HW2 SOL 132 20.345 20.271 17.903 1.00 0.00 H -ATOM 400 OW SOL 133 9.929 15.192 16.898 1.00 0.00 O -ATOM 401 HW1 SOL 133 10.630 15.898 16.998 1.00 0.00 H -ATOM 402 HW2 SOL 133 9.460 15.197 17.781 1.00 0.00 H -ATOM 403 OW SOL 134 16.787 20.325 25.209 1.00 0.00 O -ATOM 404 HW1 SOL 134 16.624 20.233 26.192 1.00 0.00 H -ATOM 405 HW2 SOL 134 17.637 20.849 25.159 1.00 0.00 H -ATOM 406 OW SOL 135 17.520 21.373 23.048 1.00 0.00 O -ATOM 407 HW1 SOL 135 16.601 21.519 23.412 1.00 0.00 H -ATOM 408 HW2 SOL 135 17.589 22.039 22.305 1.00 0.00 H -ATOM 409 OW SOL 136 23.555 18.200 32.700 1.00 0.00 O -ATOM 410 HW1 SOL 136 23.865 19.126 32.915 1.00 0.00 H -ATOM 411 HW2 SOL 136 23.912 17.651 33.456 1.00 0.00 H -ATOM 412 OW SOL 137 23.805 17.377 24.654 1.00 0.00 O -ATOM 413 HW1 SOL 137 22.966 16.841 24.563 1.00 0.00 H -ATOM 414 HW2 SOL 137 24.198 17.057 25.515 1.00 0.00 H -ATOM 415 OW SOL 138 26.351 32.443 20.268 1.00 0.00 O -ATOM 416 HW1 SOL 138 25.929 32.467 19.362 1.00 0.00 H -ATOM 417 HW2 SOL 138 26.686 31.505 20.348 1.00 0.00 H -ATOM 418 OW SOL 139 29.387 20.828 17.230 1.00 0.00 O -ATOM 419 HW1 SOL 139 28.756 20.608 17.974 1.00 0.00 H -ATOM 420 HW2 SOL 139 29.627 19.934 16.852 1.00 0.00 H -ATOM 421 OW SOL 140 14.191 23.512 23.343 1.00 0.00 O -ATOM 422 HW1 SOL 140 14.176 23.411 22.348 1.00 0.00 H -ATOM 423 HW2 SOL 140 14.034 22.582 23.676 1.00 0.00 H -ATOM 424 OW SOL 141 15.756 15.625 22.699 1.00 0.00 O -ATOM 425 HW1 SOL 141 15.667 16.593 22.933 1.00 0.00 H -ATOM 426 HW2 SOL 141 15.942 15.186 23.577 1.00 0.00 H -ATOM 427 OW SOL 142 20.510 13.333 11.927 1.00 0.00 O -ATOM 428 HW1 SOL 142 20.283 14.306 11.925 1.00 0.00 H -ATOM 429 HW2 SOL 142 20.679 13.131 12.892 1.00 0.00 H -ATOM 430 OW SOL 143 24.585 21.862 22.891 1.00 0.00 O -ATOM 431 HW1 SOL 143 24.215 21.242 23.583 1.00 0.00 H -ATOM 432 HW2 SOL 143 24.284 21.457 22.027 1.00 0.00 H -ATOM 433 OW SOL 144 19.090 26.889 31.259 1.00 0.00 O -ATOM 434 HW1 SOL 144 18.787 27.543 30.565 1.00 0.00 H -ATOM 435 HW2 SOL 144 19.301 27.464 32.049 1.00 0.00 H -ATOM 436 OW SOL 145 7.500 15.159 18.426 1.00 0.00 O -ATOM 437 HW1 SOL 145 8.026 14.423 18.852 1.00 0.00 H -ATOM 438 HW2 SOL 145 7.359 15.810 19.171 1.00 0.00 H -ATOM 439 OW SOL 146 27.618 20.029 10.797 1.00 0.00 O -ATOM 440 HW1 SOL 146 28.084 19.652 9.998 1.00 0.00 H -ATOM 441 HW2 SOL 146 26.728 19.574 10.788 1.00 0.00 H -ATOM 442 OW SOL 147 11.282 12.159 12.611 1.00 0.00 O -ATOM 443 HW1 SOL 147 11.736 11.951 13.478 1.00 0.00 H -ATOM 444 HW2 SOL 147 10.338 11.869 12.764 1.00 0.00 H -ATOM 445 OW SOL 148 15.008 16.634 8.329 1.00 0.00 O -ATOM 446 HW1 SOL 148 14.565 17.240 8.990 1.00 0.00 H -ATOM 447 HW2 SOL 148 14.744 17.017 7.444 1.00 0.00 H -ATOM 448 OW SOL 149 29.329 17.460 13.545 1.00 0.00 O -ATOM 449 HW1 SOL 149 29.799 16.662 13.921 1.00 0.00 H -ATOM 450 HW2 SOL 149 29.197 18.052 14.340 1.00 0.00 H -ATOM 451 OW SOL 150 11.143 29.847 21.994 1.00 0.00 O -ATOM 452 HW1 SOL 150 11.288 29.066 21.386 1.00 0.00 H -ATOM 453 HW2 SOL 150 11.125 30.629 21.372 1.00 0.00 H -ATOM 454 OW SOL 151 12.115 21.477 18.277 1.00 0.00 O -ATOM 455 HW1 SOL 151 13.049 21.751 18.052 1.00 0.00 H -ATOM 456 HW2 SOL 151 11.688 21.338 17.383 1.00 0.00 H -ATOM 457 OW SOL 152 22.610 13.864 17.470 1.00 0.00 O -ATOM 458 HW1 SOL 152 22.705 12.875 17.359 1.00 0.00 H -ATOM 459 HW2 SOL 152 22.548 13.985 18.461 1.00 0.00 H -ATOM 460 OW SOL 153 29.100 16.537 16.520 1.00 0.00 O -ATOM 461 HW1 SOL 153 28.138 16.665 16.280 1.00 0.00 H -ATOM 462 HW2 SOL 153 29.337 15.667 16.089 1.00 0.00 H -ATOM 463 OW SOL 154 12.381 21.642 14.486 1.00 0.00 O -ATOM 464 HW1 SOL 154 13.077 20.974 14.750 1.00 0.00 H -ATOM 465 HW2 SOL 154 11.884 21.814 15.337 1.00 0.00 H -ATOM 466 OW SOL 155 31.757 13.163 21.010 1.00 0.00 O -ATOM 467 HW1 SOL 155 31.139 13.597 21.665 1.00 0.00 H -ATOM 468 HW2 SOL 155 32.466 12.758 21.587 1.00 0.00 H -ATOM 469 OW SOL 156 21.536 18.257 25.616 1.00 0.00 O -ATOM 470 HW1 SOL 156 21.932 18.565 26.481 1.00 0.00 H -ATOM 471 HW2 SOL 156 22.086 18.726 24.925 1.00 0.00 H -ATOM 472 OW SOL 157 20.543 27.375 25.907 1.00 0.00 O -ATOM 473 HW1 SOL 157 19.895 26.941 26.533 1.00 0.00 H -ATOM 474 HW2 SOL 157 21.169 27.861 26.515 1.00 0.00 H -ATOM 475 OW SOL 158 13.721 27.318 16.382 1.00 0.00 O -ATOM 476 HW1 SOL 158 12.766 27.561 16.555 1.00 0.00 H -ATOM 477 HW2 SOL 158 14.081 27.115 17.292 1.00 0.00 H -ATOM 478 OW SOL 159 11.109 14.336 28.727 1.00 0.00 O -ATOM 479 HW1 SOL 159 10.922 15.263 29.051 1.00 0.00 H -ATOM 480 HW2 SOL 159 11.994 14.116 29.138 1.00 0.00 H -ATOM 481 OW SOL 160 7.998 25.909 14.509 1.00 0.00 O -ATOM 482 HW1 SOL 160 7.826 25.064 14.002 1.00 0.00 H -ATOM 483 HW2 SOL 160 8.506 26.475 13.860 1.00 0.00 H -ATOM 484 OW SOL 161 25.404 24.209 13.944 1.00 0.00 O -ATOM 485 HW1 SOL 161 25.354 23.381 14.502 1.00 0.00 H -ATOM 486 HW2 SOL 161 26.173 24.712 14.336 1.00 0.00 H -ATOM 487 OW SOL 162 24.844 25.891 26.881 1.00 0.00 O -ATOM 488 HW1 SOL 162 25.424 25.089 27.018 1.00 0.00 H -ATOM 489 HW2 SOL 162 24.491 25.772 25.953 1.00 0.00 H -ATOM 490 OW SOL 163 14.619 20.558 23.171 1.00 0.00 O -ATOM 491 HW1 SOL 163 15.041 20.548 24.077 1.00 0.00 H -ATOM 492 HW2 SOL 163 13.641 20.481 23.366 1.00 0.00 H -ATOM 493 OW SOL 164 27.083 10.805 27.618 1.00 0.00 O -ATOM 494 HW1 SOL 164 27.958 10.356 27.439 1.00 0.00 H -ATOM 495 HW2 SOL 164 26.964 10.702 28.606 1.00 0.00 H -ATOM 496 OW SOL 165 23.957 28.645 23.912 1.00 0.00 O -ATOM 497 HW1 SOL 165 23.636 27.724 23.693 1.00 0.00 H -ATOM 498 HW2 SOL 165 24.334 28.551 24.833 1.00 0.00 H -ATOM 499 OW SOL 166 21.857 28.095 24.745 1.00 0.00 O -ATOM 500 HW1 SOL 166 21.651 27.780 23.818 1.00 0.00 H -ATOM 501 HW2 SOL 166 22.393 27.346 25.134 1.00 0.00 H -ATOM 502 OW SOL 167 14.267 8.489 17.721 1.00 0.00 O -ATOM 503 HW1 SOL 167 14.806 9.323 17.839 1.00 0.00 H -ATOM 504 HW2 SOL 167 14.352 8.289 16.745 1.00 0.00 H -ATOM 505 OW SOL 168 15.230 32.590 23.368 1.00 0.00 O -ATOM 506 HW1 SOL 168 15.697 33.435 23.630 1.00 0.00 H -ATOM 507 HW2 SOL 168 15.330 32.564 22.374 1.00 0.00 H -ATOM 508 OW SOL 169 20.692 18.024 12.789 1.00 0.00 O -ATOM 509 HW1 SOL 169 20.383 17.682 13.676 1.00 0.00 H -ATOM 510 HW2 SOL 169 21.344 17.331 12.483 1.00 0.00 H -ATOM 511 OW SOL 170 20.941 14.283 32.482 1.00 0.00 O -ATOM 512 HW1 SOL 170 20.807 15.094 31.913 1.00 0.00 H -ATOM 513 HW2 SOL 170 21.798 13.896 32.144 1.00 0.00 H -ATOM 514 OW SOL 171 20.572 24.087 21.759 1.00 0.00 O -ATOM 515 HW1 SOL 171 20.177 24.703 21.078 1.00 0.00 H -ATOM 516 HW2 SOL 171 21.047 23.401 21.209 1.00 0.00 H -ATOM 517 OW SOL 172 27.011 21.983 12.689 1.00 0.00 O -ATOM 518 HW1 SOL 172 26.589 21.796 13.576 1.00 0.00 H -ATOM 519 HW2 SOL 172 27.502 21.138 12.478 1.00 0.00 H -ATOM 520 OW SOL 173 27.873 21.492 26.173 1.00 0.00 O -ATOM 521 HW1 SOL 173 28.092 21.918 27.051 1.00 0.00 H -ATOM 522 HW2 SOL 173 26.908 21.715 26.036 1.00 0.00 H -ATOM 523 OW SOL 174 18.801 23.348 22.703 1.00 0.00 O -ATOM 524 HW1 SOL 174 18.700 24.180 22.157 1.00 0.00 H -ATOM 525 HW2 SOL 174 19.279 22.720 22.089 1.00 0.00 H -ATOM 526 OW SOL 175 28.842 13.423 18.022 1.00 0.00 O -ATOM 527 HW1 SOL 175 28.740 12.648 18.646 1.00 0.00 H -ATOM 528 HW2 SOL 175 28.519 14.202 18.559 1.00 0.00 H -ATOM 529 OW SOL 176 25.404 27.238 13.894 1.00 0.00 O -ATOM 530 HW1 SOL 176 25.057 28.141 13.642 1.00 0.00 H -ATOM 531 HW2 SOL 176 25.068 26.644 13.164 1.00 0.00 H -ATOM 532 OW SOL 177 13.648 31.004 20.523 1.00 0.00 O -ATOM 533 HW1 SOL 177 14.154 31.859 20.403 1.00 0.00 H -ATOM 534 HW2 SOL 177 13.311 30.798 19.605 1.00 0.00 H -ATOM 535 OW SOL 178 14.229 17.416 17.143 1.00 0.00 O -ATOM 536 HW1 SOL 178 13.948 16.941 16.310 1.00 0.00 H -ATOM 537 HW2 SOL 178 15.227 17.369 17.117 1.00 0.00 H -ATOM 538 OW SOL 179 15.646 10.903 29.696 1.00 0.00 O -ATOM 539 HW1 SOL 179 16.138 11.535 29.097 1.00 0.00 H -ATOM 540 HW2 SOL 179 16.141 10.966 30.562 1.00 0.00 H -ATOM 541 OW SOL 180 19.621 22.063 14.117 1.00 0.00 O -ATOM 542 HW1 SOL 180 19.137 22.720 14.695 1.00 0.00 H -ATOM 543 HW2 SOL 180 19.979 21.395 14.768 1.00 0.00 H -ATOM 544 OW SOL 181 30.397 26.314 19.886 1.00 0.00 O -ATOM 545 HW1 SOL 181 30.779 26.155 20.796 1.00 0.00 H -ATOM 546 HW2 SOL 181 30.028 25.421 19.626 1.00 0.00 H -ATOM 547 OW SOL 182 19.674 13.424 22.478 1.00 0.00 O -ATOM 548 HW1 SOL 182 18.963 12.986 21.929 1.00 0.00 H -ATOM 549 HW2 SOL 182 20.211 13.934 21.806 1.00 0.00 H -ATOM 550 OW SOL 183 18.668 14.883 20.010 1.00 0.00 O -ATOM 551 HW1 SOL 183 18.273 14.187 20.610 1.00 0.00 H -ATOM 552 HW2 SOL 183 19.045 15.557 20.645 1.00 0.00 H -ATOM 553 OW SOL 184 17.034 29.023 9.488 1.00 0.00 O -ATOM 554 HW1 SOL 184 17.506 29.166 10.358 1.00 0.00 H -ATOM 555 HW2 SOL 184 17.634 28.392 8.995 1.00 0.00 H -ATOM 556 OW SOL 185 22.961 20.786 25.713 1.00 0.00 O -ATOM 557 HW1 SOL 185 22.731 20.546 24.770 1.00 0.00 H -ATOM 558 HW2 SOL 185 22.071 20.838 26.166 1.00 0.00 H -ATOM 559 OW SOL 186 26.286 17.329 31.213 1.00 0.00 O -ATOM 560 HW1 SOL 186 26.404 17.825 32.073 1.00 0.00 H -ATOM 561 HW2 SOL 186 26.241 16.371 31.498 1.00 0.00 H -ATOM 562 OW SOL 187 27.580 14.914 14.672 1.00 0.00 O -ATOM 563 HW1 SOL 187 27.811 14.051 15.121 1.00 0.00 H -ATOM 564 HW2 SOL 187 27.719 14.720 13.701 1.00 0.00 H -ATOM 565 OW SOL 188 23.031 33.085 25.667 1.00 0.00 O -ATOM 566 HW1 SOL 188 23.825 32.541 25.398 1.00 0.00 H -ATOM 567 HW2 SOL 188 22.449 33.071 24.854 1.00 0.00 H -ATOM 568 OW SOL 189 15.597 15.370 30.674 1.00 0.00 O -ATOM 569 HW1 SOL 189 15.625 16.152 31.297 1.00 0.00 H -ATOM 570 HW2 SOL 189 15.518 14.583 31.286 1.00 0.00 H -ATOM 571 OW SOL 190 16.883 26.648 31.638 1.00 0.00 O -ATOM 572 HW1 SOL 190 16.297 26.276 32.357 1.00 0.00 H -ATOM 573 HW2 SOL 190 16.832 27.637 31.780 1.00 0.00 H -ATOM 574 OW SOL 191 19.861 24.244 32.586 1.00 0.00 O -ATOM 575 HW1 SOL 191 19.950 23.992 31.623 1.00 0.00 H -ATOM 576 HW2 SOL 191 20.144 25.202 32.606 1.00 0.00 H -ATOM 577 OW SOL 192 15.257 9.758 26.764 1.00 0.00 O -ATOM 578 HW1 SOL 192 14.827 10.581 27.136 1.00 0.00 H -ATOM 579 HW2 SOL 192 16.212 10.027 26.639 1.00 0.00 H -ATOM 580 OW SOL 193 21.738 19.826 33.281 1.00 0.00 O -ATOM 581 HW1 SOL 193 22.076 20.323 32.483 1.00 0.00 H -ATOM 582 HW2 SOL 193 20.856 20.258 33.472 1.00 0.00 H -ATOM 583 OW SOL 194 10.469 18.366 28.899 1.00 0.00 O -ATOM 584 HW1 SOL 194 11.297 18.486 28.352 1.00 0.00 H -ATOM 585 HW2 SOL 194 10.007 19.250 28.826 1.00 0.00 H -ATOM 586 OW SOL 195 19.058 31.288 28.229 1.00 0.00 O -ATOM 587 HW1 SOL 195 18.137 31.553 28.515 1.00 0.00 H -ATOM 588 HW2 SOL 195 19.157 31.712 27.329 1.00 0.00 H -ATOM 589 OW SOL 196 15.716 28.774 16.471 1.00 0.00 O -ATOM 590 HW1 SOL 196 15.871 28.372 17.373 1.00 0.00 H -ATOM 591 HW2 SOL 196 14.924 29.367 16.610 1.00 0.00 H -ATOM 592 OW SOL 197 15.165 21.070 10.861 1.00 0.00 O -ATOM 593 HW1 SOL 197 14.773 20.723 11.713 1.00 0.00 H -ATOM 594 HW2 SOL 197 14.363 21.299 10.309 1.00 0.00 H -ATOM 595 OW SOL 198 18.682 30.296 17.929 1.00 0.00 O -ATOM 596 HW1 SOL 198 18.616 30.245 16.933 1.00 0.00 H -ATOM 597 HW2 SOL 198 19.420 29.658 18.149 1.00 0.00 H -ATOM 598 OW SOL 199 25.446 15.251 13.605 1.00 0.00 O -ATOM 599 HW1 SOL 199 25.367 14.695 12.778 1.00 0.00 H -ATOM 600 HW2 SOL 199 25.061 14.668 14.320 1.00 0.00 H -ATOM 601 OW SOL 200 25.596 23.079 27.017 1.00 0.00 O -ATOM 602 HW1 SOL 200 24.713 23.143 27.480 1.00 0.00 H -ATOM 603 HW2 SOL 200 26.235 22.861 27.754 1.00 0.00 H -ATOM 604 OW SOL 201 23.494 11.771 21.543 1.00 0.00 O -ATOM 605 HW1 SOL 201 23.982 12.630 21.693 1.00 0.00 H -ATOM 606 HW2 SOL 201 24.210 11.143 21.237 1.00 0.00 H -ATOM 607 OW SOL 202 26.800 29.112 25.566 1.00 0.00 O -ATOM 608 HW1 SOL 202 26.671 30.102 25.515 1.00 0.00 H -ATOM 609 HW2 SOL 202 26.164 28.828 26.284 1.00 0.00 H -ATOM 610 OW SOL 203 26.261 24.860 10.711 1.00 0.00 O -ATOM 611 HW1 SOL 203 26.533 25.358 11.534 1.00 0.00 H -ATOM 612 HW2 SOL 203 27.110 24.432 10.402 1.00 0.00 H -ATOM 613 OW SOL 204 9.456 24.988 15.424 1.00 0.00 O -ATOM 614 HW1 SOL 204 10.300 24.942 15.958 1.00 0.00 H -ATOM 615 HW2 SOL 204 8.761 25.229 16.101 1.00 0.00 H -ATOM 616 OW SOL 205 21.383 27.255 22.046 1.00 0.00 O -ATOM 617 HW1 SOL 205 20.602 26.772 21.650 1.00 0.00 H -ATOM 618 HW2 SOL 205 22.099 26.558 22.080 1.00 0.00 H -ATOM 619 OW SOL 206 14.538 22.985 19.831 1.00 0.00 O -ATOM 620 HW1 SOL 206 13.872 23.579 20.283 1.00 0.00 H -ATOM 621 HW2 SOL 206 15.176 22.748 20.563 1.00 0.00 H -ATOM 622 OW SOL 207 12.256 23.724 21.874 1.00 0.00 O -ATOM 623 HW1 SOL 207 12.712 24.484 22.336 1.00 0.00 H -ATOM 624 HW2 SOL 207 12.160 23.034 22.592 1.00 0.00 H -ATOM 625 OW SOL 208 17.301 22.623 16.712 1.00 0.00 O -ATOM 626 HW1 SOL 208 16.786 22.266 15.933 1.00 0.00 H -ATOM 627 HW2 SOL 208 16.708 22.435 17.494 1.00 0.00 H -ATOM 628 OW SOL 209 27.289 17.023 25.562 1.00 0.00 O -ATOM 629 HW1 SOL 209 27.950 17.324 26.250 1.00 0.00 H -ATOM 630 HW2 SOL 209 26.475 16.802 26.098 1.00 0.00 H -ATOM 631 OW SOL 210 12.046 11.028 23.486 1.00 0.00 O -ATOM 632 HW1 SOL 210 12.209 11.923 23.901 1.00 0.00 H -ATOM 633 HW2 SOL 210 11.256 11.184 22.893 1.00 0.00 H -ATOM 634 OW SOL 211 12.971 23.755 12.904 1.00 0.00 O -ATOM 635 HW1 SOL 211 13.462 22.993 13.326 1.00 0.00 H -ATOM 636 HW2 SOL 211 12.946 23.511 11.935 1.00 0.00 H -ATOM 637 OW SOL 212 18.713 14.967 23.853 1.00 0.00 O -ATOM 638 HW1 SOL 212 18.097 15.333 23.155 1.00 0.00 H -ATOM 639 HW2 SOL 212 18.527 13.985 23.839 1.00 0.00 H -ATOM 640 OW SOL 213 17.844 16.429 18.517 1.00 0.00 O -ATOM 641 HW1 SOL 213 17.744 15.500 18.162 1.00 0.00 H -ATOM 642 HW2 SOL 213 16.981 16.870 18.271 1.00 0.00 H -ATOM 643 OW SOL 214 26.348 27.255 19.389 1.00 0.00 O -ATOM 644 HW1 SOL 214 26.764 27.895 18.744 1.00 0.00 H -ATOM 645 HW2 SOL 214 26.129 27.826 20.180 1.00 0.00 H -ATOM 646 OW SOL 215 19.468 25.203 11.319 1.00 0.00 O -ATOM 647 HW1 SOL 215 19.836 25.775 10.587 1.00 0.00 H -ATOM 648 HW2 SOL 215 20.233 24.606 11.560 1.00 0.00 H -ATOM 649 OW SOL 216 24.482 16.998 15.713 1.00 0.00 O -ATOM 650 HW1 SOL 216 23.782 16.352 15.411 1.00 0.00 H -ATOM 651 HW2 SOL 216 23.957 17.723 16.159 1.00 0.00 H -ATOM 652 OW SOL 217 22.863 24.643 26.438 1.00 0.00 O -ATOM 653 HW1 SOL 217 23.205 23.713 26.305 1.00 0.00 H -ATOM 654 HW2 SOL 217 23.295 24.934 27.291 1.00 0.00 H -ATOM 655 OW SOL 218 16.581 23.137 9.018 1.00 0.00 O -ATOM 656 HW1 SOL 218 15.746 22.632 9.233 1.00 0.00 H -ATOM 657 HW2 SOL 218 16.633 23.826 9.740 1.00 0.00 H -ATOM 658 OW SOL 219 12.098 27.383 14.371 1.00 0.00 O -ATOM 659 HW1 SOL 219 11.253 27.822 14.067 1.00 0.00 H -ATOM 660 HW2 SOL 219 12.162 26.569 13.793 1.00 0.00 H -ATOM 661 OW SOL 220 18.497 10.087 28.018 1.00 0.00 O -ATOM 662 HW1 SOL 220 19.198 10.734 28.318 1.00 0.00 H -ATOM 663 HW2 SOL 220 17.867 10.652 27.485 1.00 0.00 H -ATOM 664 OW SOL 221 23.758 24.161 29.453 1.00 0.00 O -ATOM 665 HW1 SOL 221 24.089 23.218 29.494 1.00 0.00 H -ATOM 666 HW2 SOL 221 24.587 24.695 29.288 1.00 0.00 H -ATOM 667 OW SOL 222 21.864 13.608 29.368 1.00 0.00 O -ATOM 668 HW1 SOL 222 21.386 12.750 29.559 1.00 0.00 H -ATOM 669 HW2 SOL 222 21.214 14.121 28.809 1.00 0.00 H -ATOM 670 OW SOL 223 29.881 27.987 21.278 1.00 0.00 O -ATOM 671 HW1 SOL 223 30.280 28.463 22.060 1.00 0.00 H -ATOM 672 HW2 SOL 223 28.896 28.064 21.433 1.00 0.00 H -ATOM 673 OW SOL 224 14.384 27.766 12.575 1.00 0.00 O -ATOM 674 HW1 SOL 224 13.656 27.745 13.259 1.00 0.00 H -ATOM 675 HW2 SOL 224 15.210 27.928 13.114 1.00 0.00 H -ATOM 676 OW SOL 225 17.381 25.415 12.307 1.00 0.00 O -ATOM 677 HW1 SOL 225 16.685 25.906 11.784 1.00 0.00 H -ATOM 678 HW2 SOL 225 17.361 24.493 11.919 1.00 0.00 H -ATOM 679 OW SOL 226 18.771 26.327 16.968 1.00 0.00 O -ATOM 680 HW1 SOL 226 19.165 26.197 17.878 1.00 0.00 H -ATOM 681 HW2 SOL 226 19.149 25.570 16.436 1.00 0.00 H -ATOM 682 OW SOL 227 26.894 25.793 22.690 1.00 0.00 O -ATOM 683 HW1 SOL 227 27.095 26.573 23.283 1.00 0.00 H -ATOM 684 HW2 SOL 227 26.892 25.014 23.317 1.00 0.00 H -ATOM 685 OW SOL 228 29.615 14.551 22.456 1.00 0.00 O -ATOM 686 HW1 SOL 228 29.405 13.573 22.445 1.00 0.00 H -ATOM 687 HW2 SOL 228 29.346 14.860 21.544 1.00 0.00 H -ATOM 688 OW SOL 229 14.566 25.605 27.425 1.00 0.00 O -ATOM 689 HW1 SOL 229 14.245 25.596 26.478 1.00 0.00 H -ATOM 690 HW2 SOL 229 15.214 24.844 27.462 1.00 0.00 H -ATOM 691 OW SOL 230 20.391 25.772 30.067 1.00 0.00 O -ATOM 692 HW1 SOL 230 21.375 25.748 29.888 1.00 0.00 H -ATOM 693 HW2 SOL 230 20.078 24.864 29.790 1.00 0.00 H -ATOM 694 OW SOL 231 23.233 14.897 21.299 1.00 0.00 O -ATOM 695 HW1 SOL 231 22.260 14.863 21.070 1.00 0.00 H -ATOM 696 HW2 SOL 231 23.269 14.533 22.230 1.00 0.00 H -ATOM 697 OW SOL 232 13.951 14.271 26.024 1.00 0.00 O -ATOM 698 HW1 SOL 232 13.866 15.163 26.468 1.00 0.00 H -ATOM 699 HW2 SOL 232 13.345 13.682 26.559 1.00 0.00 H -ATOM 700 OW SOL 233 28.373 27.959 24.651 1.00 0.00 O -ATOM 701 HW1 SOL 233 27.950 28.614 24.025 1.00 0.00 H -ATOM 702 HW2 SOL 233 28.738 27.253 24.044 1.00 0.00 H -ATOM 703 OW SOL 234 25.500 16.383 23.895 1.00 0.00 O -ATOM 704 HW1 SOL 234 25.500 17.138 23.239 1.00 0.00 H -ATOM 705 HW2 SOL 234 24.639 15.909 23.710 1.00 0.00 H -ATOM 706 OW SOL 235 28.002 12.440 13.022 1.00 0.00 O -ATOM 707 HW1 SOL 235 28.815 12.998 12.852 1.00 0.00 H -ATOM 708 HW2 SOL 235 28.343 11.502 12.958 1.00 0.00 H -ATOM 709 OW SOL 236 18.282 22.984 28.431 1.00 0.00 O -ATOM 710 HW1 SOL 236 17.839 22.956 27.535 1.00 0.00 H -ATOM 711 HW2 SOL 236 17.744 22.345 28.980 1.00 0.00 H -ATOM 712 OW SOL 237 15.334 10.807 19.052 1.00 0.00 O -ATOM 713 HW1 SOL 237 16.230 10.739 18.613 1.00 0.00 H -ATOM 714 HW2 SOL 237 15.543 10.729 20.027 1.00 0.00 H -ATOM 715 OW SOL 238 26.453 20.193 17.035 1.00 0.00 O -ATOM 716 HW1 SOL 238 27.285 19.738 16.718 1.00 0.00 H -ATOM 717 HW2 SOL 238 26.145 20.706 16.234 1.00 0.00 H -ATOM 718 OW SOL 239 10.845 27.204 26.439 1.00 0.00 O -ATOM 719 HW1 SOL 239 11.492 26.526 26.787 1.00 0.00 H -ATOM 720 HW2 SOL 239 10.226 27.356 27.209 1.00 0.00 H -ATOM 721 OW SOL 240 23.318 20.552 29.910 1.00 0.00 O -ATOM 722 HW1 SOL 240 23.322 19.973 29.095 1.00 0.00 H -ATOM 723 HW2 SOL 240 24.208 20.374 30.330 1.00 0.00 H -ATOM 724 OW SOL 241 12.360 11.799 19.506 1.00 0.00 O -ATOM 725 HW1 SOL 241 11.587 12.232 19.969 1.00 0.00 H -ATOM 726 HW2 SOL 241 12.913 11.439 20.258 1.00 0.00 H -ATOM 727 OW SOL 242 10.015 16.482 23.582 1.00 0.00 O -ATOM 728 HW1 SOL 242 9.278 17.021 23.174 1.00 0.00 H -ATOM 729 HW2 SOL 242 10.842 16.856 23.162 1.00 0.00 H -ATOM 730 OW SOL 243 24.378 12.205 18.326 1.00 0.00 O -ATOM 731 HW1 SOL 243 24.260 11.939 19.283 1.00 0.00 H -ATOM 732 HW2 SOL 243 24.465 11.331 17.848 1.00 0.00 H -ATOM 733 OW SOL 244 27.338 13.664 23.454 1.00 0.00 O -ATOM 734 HW1 SOL 244 28.230 13.837 23.870 1.00 0.00 H -ATOM 735 HW2 SOL 244 27.455 13.969 22.509 1.00 0.00 H -ATOM 736 OW SOL 245 16.940 13.384 31.601 1.00 0.00 O -ATOM 737 HW1 SOL 245 17.109 13.112 30.654 1.00 0.00 H -ATOM 738 HW2 SOL 245 17.669 12.928 32.111 1.00 0.00 H -ATOM 739 OW SOL 246 32.005 13.657 23.624 1.00 0.00 O -ATOM 740 HW1 SOL 246 32.257 13.911 24.558 1.00 0.00 H -ATOM 741 HW2 SOL 246 31.963 14.533 23.145 1.00 0.00 H -ATOM 742 OW SOL 247 28.888 16.640 31.052 1.00 0.00 O -ATOM 743 HW1 SOL 247 28.877 16.525 30.058 1.00 0.00 H -ATOM 744 HW2 SOL 247 28.475 17.540 31.190 1.00 0.00 H -ATOM 745 OW SOL 248 30.517 21.634 27.971 1.00 0.00 O -ATOM 746 HW1 SOL 248 30.413 20.686 27.671 1.00 0.00 H -ATOM 747 HW2 SOL 248 29.614 21.868 28.330 1.00 0.00 H -ATOM 748 OW SOL 249 29.278 25.405 14.874 1.00 0.00 O -ATOM 749 HW1 SOL 249 30.211 25.764 14.901 1.00 0.00 H -ATOM 750 HW2 SOL 249 28.781 25.992 15.513 1.00 0.00 H -ATOM 751 OW SOL 250 28.968 21.899 14.796 1.00 0.00 O -ATOM 752 HW1 SOL 250 28.346 22.644 14.559 1.00 0.00 H -ATOM 753 HW2 SOL 250 28.495 21.082 14.467 1.00 0.00 H -ATOM 754 OW SOL 251 14.191 11.981 16.094 1.00 0.00 O -ATOM 755 HW1 SOL 251 14.407 12.074 15.122 1.00 0.00 H -ATOM 756 HW2 SOL 251 14.275 10.999 16.261 1.00 0.00 H -ATOM 757 OW SOL 252 17.788 32.955 15.832 1.00 0.00 O -ATOM 758 HW1 SOL 252 17.315 32.902 14.953 1.00 0.00 H -ATOM 759 HW2 SOL 252 18.279 33.824 15.785 1.00 0.00 H -ATOM 760 OW SOL 253 14.053 32.614 18.037 1.00 0.00 O -ATOM 761 HW1 SOL 253 14.707 32.156 18.638 1.00 0.00 H -ATOM 762 HW2 SOL 253 13.297 32.849 18.647 1.00 0.00 H -ATOM 763 OW SOL 254 15.162 6.761 17.608 1.00 0.00 O -ATOM 764 HW1 SOL 254 16.124 6.787 17.336 1.00 0.00 H -ATOM 765 HW2 SOL 254 15.183 6.326 18.508 1.00 0.00 H -ATOM 766 OW SOL 255 23.403 24.435 19.289 1.00 0.00 O -ATOM 767 HW1 SOL 255 22.966 24.938 20.034 1.00 0.00 H -ATOM 768 HW2 SOL 255 24.203 24.019 19.721 1.00 0.00 H -ATOM 769 OW SOL 256 11.933 18.281 8.865 1.00 0.00 O -ATOM 770 HW1 SOL 256 12.169 18.288 7.894 1.00 0.00 H -ATOM 771 HW2 SOL 256 11.288 17.520 8.945 1.00 0.00 H -ATOM 772 OW SOL 257 17.352 17.223 12.875 1.00 0.00 O -ATOM 773 HW1 SOL 257 17.075 17.788 12.098 1.00 0.00 H -ATOM 774 HW2 SOL 257 16.594 16.579 12.980 1.00 0.00 H -ATOM 775 OW SOL 258 20.845 31.014 24.506 1.00 0.00 O -ATOM 776 HW1 SOL 258 21.494 30.971 23.747 1.00 0.00 H -ATOM 777 HW2 SOL 258 21.299 31.607 25.171 1.00 0.00 H -ATOM 778 OW SOL 259 16.173 30.639 14.579 1.00 0.00 O -ATOM 779 HW1 SOL 259 17.087 31.003 14.755 1.00 0.00 H -ATOM 780 HW2 SOL 259 15.597 31.456 14.545 1.00 0.00 H -ATOM 781 OW SOL 260 26.861 14.882 24.781 1.00 0.00 O -ATOM 782 HW1 SOL 260 27.331 15.619 24.295 1.00 0.00 H -ATOM 783 HW2 SOL 260 27.066 15.066 25.742 1.00 0.00 H -ATOM 784 OW SOL 261 20.147 18.767 8.642 1.00 0.00 O -ATOM 785 HW1 SOL 261 19.932 18.177 7.865 1.00 0.00 H -ATOM 786 HW2 SOL 261 19.754 18.282 9.423 1.00 0.00 H -ATOM 787 OW SOL 262 16.330 11.853 15.027 1.00 0.00 O -ATOM 788 HW1 SOL 262 16.561 11.180 15.729 1.00 0.00 H -ATOM 789 HW2 SOL 262 16.187 12.696 15.546 1.00 0.00 H -ATOM 790 OW SOL 263 19.998 14.127 14.342 1.00 0.00 O -ATOM 791 HW1 SOL 263 19.093 13.932 13.964 1.00 0.00 H -ATOM 792 HW2 SOL 263 20.377 14.802 13.709 1.00 0.00 H -ATOM 793 OW SOL 264 15.286 6.974 21.690 1.00 0.00 O -ATOM 794 HW1 SOL 264 14.490 6.733 21.134 1.00 0.00 H -ATOM 795 HW2 SOL 264 15.987 7.198 21.013 1.00 0.00 H -ATOM 796 OW SOL 265 22.572 20.878 22.776 1.00 0.00 O -ATOM 797 HW1 SOL 265 22.895 20.110 22.224 1.00 0.00 H -ATOM 798 HW2 SOL 265 21.659 21.062 22.413 1.00 0.00 H -ATOM 799 OW SOL 266 13.021 22.353 8.271 1.00 0.00 O -ATOM 800 HW1 SOL 266 13.103 21.539 7.695 1.00 0.00 H -ATOM 801 HW2 SOL 266 12.965 23.103 7.612 1.00 0.00 H -ATOM 802 OW SOL 267 29.306 12.539 20.816 1.00 0.00 O -ATOM 803 HW1 SOL 267 29.850 13.011 20.123 1.00 0.00 H -ATOM 804 HW2 SOL 267 29.587 11.583 20.726 1.00 0.00 H -ATOM 805 OW SOL 268 27.591 8.306 19.715 1.00 0.00 O -ATOM 806 HW1 SOL 268 26.981 8.960 20.162 1.00 0.00 H -ATOM 807 HW2 SOL 268 28.102 7.902 20.473 1.00 0.00 H -ATOM 808 OW SOL 269 14.625 19.150 27.877 1.00 0.00 O -ATOM 809 HW1 SOL 269 14.905 19.901 28.474 1.00 0.00 H -ATOM 810 HW2 SOL 269 14.485 18.387 28.507 1.00 0.00 H -ATOM 811 OW SOL 270 15.053 18.138 11.940 1.00 0.00 O -ATOM 812 HW1 SOL 270 14.083 18.294 12.126 1.00 0.00 H -ATOM 813 HW2 SOL 270 15.179 18.501 11.017 1.00 0.00 H -ATOM 814 OW SOL 271 20.480 10.066 25.281 1.00 0.00 O -ATOM 815 HW1 SOL 271 20.492 10.653 26.090 1.00 0.00 H -ATOM 816 HW2 SOL 271 20.115 9.200 25.622 1.00 0.00 H -ATOM 817 OW SOL 272 16.687 16.821 21.152 1.00 0.00 O -ATOM 818 HW1 SOL 272 17.392 17.113 20.506 1.00 0.00 H -ATOM 819 HW2 SOL 272 16.033 16.326 20.580 1.00 0.00 H -ATOM 820 OW SOL 273 20.496 9.997 18.857 1.00 0.00 O -ATOM 821 HW1 SOL 273 19.529 9.992 19.113 1.00 0.00 H -ATOM 822 HW2 SOL 273 20.580 10.799 18.267 1.00 0.00 H -ATOM 823 OW SOL 274 25.891 27.591 29.791 1.00 0.00 O -ATOM 824 HW1 SOL 274 25.008 27.972 30.067 1.00 0.00 H -ATOM 825 HW2 SOL 274 26.443 27.649 30.622 1.00 0.00 H -ATOM 826 OW SOL 275 10.510 26.690 23.469 1.00 0.00 O -ATOM 827 HW1 SOL 275 9.710 26.679 24.068 1.00 0.00 H -ATOM 828 HW2 SOL 275 11.238 27.046 24.054 1.00 0.00 H -ATOM 829 OW SOL 276 25.856 13.235 20.210 1.00 0.00 O -ATOM 830 HW1 SOL 276 26.425 12.798 19.514 1.00 0.00 H -ATOM 831 HW2 SOL 276 25.294 13.876 19.686 1.00 0.00 H -ATOM 832 OW SOL 277 10.188 21.626 13.254 1.00 0.00 O -ATOM 833 HW1 SOL 277 10.108 20.717 12.847 1.00 0.00 H -ATOM 834 HW2 SOL 277 10.441 21.439 14.203 1.00 0.00 H -ATOM 835 OW SOL 278 13.376 16.662 19.239 1.00 0.00 O -ATOM 836 HW1 SOL 278 12.555 16.358 18.757 1.00 0.00 H -ATOM 837 HW2 SOL 278 13.509 17.597 18.911 1.00 0.00 H -ATOM 838 OW SOL 279 19.716 33.214 25.227 1.00 0.00 O -ATOM 839 HW1 SOL 279 20.555 33.286 25.766 1.00 0.00 H -ATOM 840 HW2 SOL 279 18.992 33.211 25.917 1.00 0.00 H -ATOM 841 OW SOL 280 21.318 16.043 23.168 1.00 0.00 O -ATOM 842 HW1 SOL 280 20.740 15.644 22.456 1.00 0.00 H -ATOM 843 HW2 SOL 280 21.291 15.365 23.902 1.00 0.00 H -ATOM 844 OW SOL 281 29.072 25.241 18.007 1.00 0.00 O -ATOM 845 HW1 SOL 281 29.017 24.363 18.482 1.00 0.00 H -ATOM 846 HW2 SOL 281 28.392 25.159 17.279 1.00 0.00 H -ATOM 847 OW SOL 282 16.906 12.470 24.437 1.00 0.00 O -ATOM 848 HW1 SOL 282 16.760 13.426 24.688 1.00 0.00 H -ATOM 849 HW2 SOL 282 17.418 12.526 23.580 1.00 0.00 H -ATOM 850 OW SOL 283 11.005 16.545 20.975 1.00 0.00 O -ATOM 851 HW1 SOL 283 11.185 17.280 20.321 1.00 0.00 H -ATOM 852 HW2 SOL 283 11.645 15.826 20.704 1.00 0.00 H -ATOM 853 OW SOL 284 19.808 19.268 16.414 1.00 0.00 O -ATOM 854 HW1 SOL 284 18.955 18.964 16.838 1.00 0.00 H -ATOM 855 HW2 SOL 284 19.515 19.632 15.530 1.00 0.00 H -ATOM 856 OW SOL 285 19.928 17.083 32.305 1.00 0.00 O -ATOM 857 HW1 SOL 285 19.062 17.537 32.093 1.00 0.00 H -ATOM 858 HW2 SOL 285 20.282 16.821 31.407 1.00 0.00 H -ATOM 859 OW SOL 286 21.167 10.656 13.563 1.00 0.00 O -ATOM 860 HW1 SOL 286 22.068 10.422 13.199 1.00 0.00 H -ATOM 861 HW2 SOL 286 20.751 11.196 12.831 1.00 0.00 H -ATOM 862 OW SOL 287 25.467 23.335 16.932 1.00 0.00 O -ATOM 863 HW1 SOL 287 25.022 24.043 16.383 1.00 0.00 H -ATOM 864 HW2 SOL 287 25.864 22.722 16.249 1.00 0.00 H -ATOM 865 OW SOL 288 11.779 10.659 26.429 1.00 0.00 O -ATOM 866 HW1 SOL 288 11.727 9.775 25.964 1.00 0.00 H -ATOM 867 HW2 SOL 288 11.701 11.322 25.684 1.00 0.00 H -ATOM 868 OW SOL 289 20.631 25.552 23.948 1.00 0.00 O -ATOM 869 HW1 SOL 289 20.171 26.439 23.917 1.00 0.00 H -ATOM 870 HW2 SOL 289 21.576 25.768 23.702 1.00 0.00 H -ATOM 871 OW SOL 290 31.043 16.337 17.275 1.00 0.00 O -ATOM 872 HW1 SOL 290 31.810 15.800 17.627 1.00 0.00 H -ATOM 873 HW2 SOL 290 30.548 16.609 18.100 1.00 0.00 H -ATOM 874 OW SOL 291 12.491 25.394 18.555 1.00 0.00 O -ATOM 875 HW1 SOL 291 11.721 25.934 18.215 1.00 0.00 H -ATOM 876 HW2 SOL 291 12.354 24.497 18.136 1.00 0.00 H -ATOM 877 OW SOL 292 25.292 13.571 16.035 1.00 0.00 O -ATOM 878 HW1 SOL 292 25.055 12.601 16.090 1.00 0.00 H -ATOM 879 HW2 SOL 292 24.754 13.987 16.769 1.00 0.00 H -ATOM 880 OW SOL 293 9.792 18.248 17.146 1.00 0.00 O -ATOM 881 HW1 SOL 293 10.249 17.869 17.951 1.00 0.00 H -ATOM 882 HW2 SOL 293 9.494 17.438 16.641 1.00 0.00 H -ATOM 883 OW SOL 294 17.876 26.066 14.738 1.00 0.00 O -ATOM 884 HW1 SOL 294 18.251 26.859 15.218 1.00 0.00 H -ATOM 885 HW2 SOL 294 17.107 26.444 14.222 1.00 0.00 H -ATOM 886 OW SOL 295 13.351 26.592 29.897 1.00 0.00 O -ATOM 887 HW1 SOL 295 13.162 26.831 30.850 1.00 0.00 H -ATOM 888 HW2 SOL 295 12.534 26.092 29.613 1.00 0.00 H -ATOM 889 OW SOL 296 12.037 28.641 18.185 1.00 0.00 O -ATOM 890 HW1 SOL 296 12.138 29.311 18.919 1.00 0.00 H -ATOM 891 HW2 SOL 296 11.798 27.798 18.666 1.00 0.00 H -ATOM 892 OW SOL 297 13.949 14.903 14.018 1.00 0.00 O -ATOM 893 HW1 SOL 297 13.391 14.944 14.846 1.00 0.00 H -ATOM 894 HW2 SOL 297 13.286 15.029 13.280 1.00 0.00 H -ATOM 895 OW SOL 298 24.441 9.774 18.896 1.00 0.00 O -ATOM 896 HW1 SOL 298 24.484 8.795 18.698 1.00 0.00 H -ATOM 897 HW2 SOL 298 23.461 9.959 18.959 1.00 0.00 H -ATOM 898 OW SOL 299 24.825 20.625 13.710 1.00 0.00 O -ATOM 899 HW1 SOL 299 24.699 19.834 13.111 1.00 0.00 H -ATOM 900 HW2 SOL 299 24.759 21.405 13.087 1.00 0.00 H -ATOM 901 OW SOL 300 30.311 15.797 23.908 1.00 0.00 O -ATOM 902 HW1 SOL 300 30.013 16.347 23.128 1.00 0.00 H -ATOM 903 HW2 SOL 300 31.248 16.106 24.070 1.00 0.00 H -ATOM 904 OW SOL 301 14.689 25.210 19.062 1.00 0.00 O -ATOM 905 HW1 SOL 301 14.868 24.486 18.395 1.00 0.00 H -ATOM 906 HW2 SOL 301 15.310 25.943 18.787 1.00 0.00 H -ATOM 907 OW SOL 302 25.131 30.384 14.211 1.00 0.00 O -ATOM 908 HW1 SOL 302 25.229 30.043 15.146 1.00 0.00 H -ATOM 909 HW2 SOL 302 24.835 31.331 14.335 1.00 0.00 H -ATOM 910 OW SOL 303 26.817 28.630 15.931 1.00 0.00 O -ATOM 911 HW1 SOL 303 26.854 29.598 16.177 1.00 0.00 H -ATOM 912 HW2 SOL 303 27.762 28.323 16.039 1.00 0.00 H -ATOM 913 OW SOL 304 25.870 28.779 23.498 1.00 0.00 O -ATOM 914 HW1 SOL 304 26.007 28.035 24.152 1.00 0.00 H -ATOM 915 HW2 SOL 304 26.345 28.462 22.677 1.00 0.00 H -ATOM 916 OW SOL 305 21.224 20.028 20.919 1.00 0.00 O -ATOM 917 HW1 SOL 305 20.868 19.663 20.059 1.00 0.00 H -ATOM 918 HW2 SOL 305 21.455 19.210 21.445 1.00 0.00 H -ATOM 919 OW SOL 306 23.951 18.581 19.460 1.00 0.00 O -ATOM 920 HW1 SOL 306 24.755 18.081 19.139 1.00 0.00 H -ATOM 921 HW2 SOL 306 23.703 19.155 18.679 1.00 0.00 H -ATOM 922 OW SOL 307 14.745 23.638 10.984 1.00 0.00 O -ATOM 923 HW1 SOL 307 14.721 24.346 11.689 1.00 0.00 H -ATOM 924 HW2 SOL 307 14.730 22.785 11.506 1.00 0.00 H -ATOM 925 OW SOL 308 20.995 28.107 28.584 1.00 0.00 O -ATOM 926 HW1 SOL 308 21.030 29.030 28.201 1.00 0.00 H -ATOM 927 HW2 SOL 308 20.408 28.206 29.388 1.00 0.00 H -ATOM 928 OW SOL 309 21.468 30.225 29.577 1.00 0.00 O -ATOM 929 HW1 SOL 309 22.120 30.435 28.848 1.00 0.00 H -ATOM 930 HW2 SOL 309 20.824 30.989 29.546 1.00 0.00 H -ATOM 931 OW SOL 310 24.896 27.982 17.390 1.00 0.00 O -ATOM 932 HW1 SOL 310 25.409 28.790 17.677 1.00 0.00 H -ATOM 933 HW2 SOL 310 24.781 28.112 16.405 1.00 0.00 H -ATOM 934 OW SOL 311 10.694 13.902 19.257 1.00 0.00 O -ATOM 935 HW1 SOL 311 9.883 14.455 19.452 1.00 0.00 H -ATOM 936 HW2 SOL 311 11.300 14.094 20.029 1.00 0.00 H -ATOM 937 OW SOL 312 12.486 10.419 18.077 1.00 0.00 O -ATOM 938 HW1 SOL 312 11.824 11.058 17.686 1.00 0.00 H -ATOM 939 HW2 SOL 312 12.027 10.075 18.896 1.00 0.00 H -ATOM 940 OW SOL 313 21.726 12.250 26.675 1.00 0.00 O -ATOM 941 HW1 SOL 313 21.308 12.626 25.848 1.00 0.00 H -ATOM 942 HW2 SOL 313 21.836 13.048 27.268 1.00 0.00 H -ATOM 943 OW SOL 314 20.056 23.431 18.133 1.00 0.00 O -ATOM 944 HW1 SOL 314 19.555 24.081 17.561 1.00 0.00 H -ATOM 945 HW2 SOL 314 19.366 23.106 18.780 1.00 0.00 H -ATOM 946 OW SOL 315 8.353 22.549 12.108 1.00 0.00 O -ATOM 947 HW1 SOL 315 7.981 23.298 12.656 1.00 0.00 H -ATOM 948 HW2 SOL 315 8.381 21.780 12.747 1.00 0.00 H -ATOM 949 OW SOL 316 23.066 24.865 12.477 1.00 0.00 O -ATOM 950 HW1 SOL 316 23.923 24.801 11.966 1.00 0.00 H -ATOM 951 HW2 SOL 316 22.364 24.788 11.770 1.00 0.00 H -ATOM 952 OW SOL 317 21.609 21.802 31.335 1.00 0.00 O -ATOM 953 HW1 SOL 317 20.981 21.226 30.812 1.00 0.00 H -ATOM 954 HW2 SOL 317 22.229 22.167 30.639 1.00 0.00 H -ATOM 955 OW SOL 318 11.152 12.741 16.477 1.00 0.00 O -ATOM 956 HW1 SOL 318 10.489 13.482 16.374 1.00 0.00 H -ATOM 957 HW2 SOL 318 11.749 12.847 15.682 1.00 0.00 H -ATOM 958 OW SOL 319 16.479 19.355 30.032 1.00 0.00 O -ATOM 959 HW1 SOL 319 15.718 19.991 30.156 1.00 0.00 H -ATOM 960 HW2 SOL 319 17.195 19.922 29.624 1.00 0.00 H -ATOM 961 OW SOL 320 16.511 25.983 28.210 1.00 0.00 O -ATOM 962 HW1 SOL 320 15.788 26.358 28.790 1.00 0.00 H -ATOM 963 HW2 SOL 320 17.095 26.773 28.022 1.00 0.00 H -ATOM 964 OW SOL 321 11.555 9.180 21.060 1.00 0.00 O -ATOM 965 HW1 SOL 321 11.639 8.600 21.869 1.00 0.00 H -ATOM 966 HW2 SOL 321 12.093 9.990 21.293 1.00 0.00 H -ATOM 967 OW SOL 322 29.258 22.693 23.080 1.00 0.00 O -ATOM 968 HW1 SOL 322 28.713 23.180 23.763 1.00 0.00 H -ATOM 969 HW2 SOL 322 28.812 22.924 22.215 1.00 0.00 H -ATOM 970 OW SOL 323 15.293 7.604 25.247 1.00 0.00 O -ATOM 971 HW1 SOL 323 15.848 8.208 24.676 1.00 0.00 H -ATOM 972 HW2 SOL 323 14.580 7.280 24.626 1.00 0.00 H -ATOM 973 OW SOL 324 16.703 32.803 18.354 1.00 0.00 O -ATOM 974 HW1 SOL 324 16.126 33.380 18.931 1.00 0.00 H -ATOM 975 HW2 SOL 324 17.349 32.396 18.999 1.00 0.00 H -ATOM 976 OW SOL 325 13.842 12.645 18.127 1.00 0.00 O -ATOM 977 HW1 SOL 325 14.323 13.243 17.486 1.00 0.00 H -ATOM 978 HW2 SOL 325 12.897 12.662 17.801 1.00 0.00 H -ATOM 979 OW SOL 326 14.556 13.983 8.009 1.00 0.00 O -ATOM 980 HW1 SOL 326 14.206 14.169 8.926 1.00 0.00 H -ATOM 981 HW2 SOL 326 14.445 14.854 7.532 1.00 0.00 H -ATOM 982 OW SOL 327 27.488 22.281 18.419 1.00 0.00 O -ATOM 983 HW1 SOL 327 26.914 22.997 18.815 1.00 0.00 H -ATOM 984 HW2 SOL 327 27.033 21.434 18.693 1.00 0.00 H -ATOM 985 OW SOL 328 20.380 31.224 13.120 1.00 0.00 O -ATOM 986 HW1 SOL 328 20.139 30.588 13.853 1.00 0.00 H -ATOM 987 HW2 SOL 328 20.743 32.019 13.608 1.00 0.00 H -ATOM 988 OW SOL 329 28.233 19.659 23.418 1.00 0.00 O -ATOM 989 HW1 SOL 329 27.999 19.815 22.459 1.00 0.00 H -ATOM 990 HW2 SOL 329 28.599 18.729 23.424 1.00 0.00 H -ATOM 991 OW SOL 330 27.613 9.786 25.228 1.00 0.00 O -ATOM 992 HW1 SOL 330 28.516 9.582 25.605 1.00 0.00 H -ATOM 993 HW2 SOL 330 27.816 10.233 24.357 1.00 0.00 H -ATOM 994 OW SOL 331 26.953 11.666 23.287 1.00 0.00 O -ATOM 995 HW1 SOL 331 27.240 10.967 22.632 1.00 0.00 H -ATOM 996 HW2 SOL 331 26.091 12.004 22.908 1.00 0.00 H -ATOM 997 OW SOL 332 17.325 7.120 22.392 1.00 0.00 O -ATOM 998 HW1 SOL 332 17.426 8.040 22.770 1.00 0.00 H -ATOM 999 HW2 SOL 332 17.048 6.571 23.181 1.00 0.00 H -ATOM 1000 OW SOL 333 11.304 17.823 11.869 1.00 0.00 O -ATOM 1001 HW1 SOL 333 11.740 18.013 12.749 1.00 0.00 H -ATOM 1002 HW2 SOL 333 10.327 17.871 12.075 1.00 0.00 H -ATOM 1003 OW SOL 334 30.392 14.897 18.837 1.00 0.00 O -ATOM 1004 HW1 SOL 334 30.071 15.409 19.634 1.00 0.00 H -ATOM 1005 HW2 SOL 334 31.097 14.295 19.212 1.00 0.00 H -ATOM 1006 OW SOL 335 20.738 13.693 19.175 1.00 0.00 O -ATOM 1007 HW1 SOL 335 19.925 13.716 18.593 1.00 0.00 H -ATOM 1008 HW2 SOL 335 20.469 14.225 19.977 1.00 0.00 H -ATOM 1009 OW SOL 336 22.146 8.872 20.606 1.00 0.00 O -ATOM 1010 HW1 SOL 336 22.323 8.101 19.994 1.00 0.00 H -ATOM 1011 HW2 SOL 336 21.919 9.621 19.984 1.00 0.00 H -ATOM 1012 OW SOL 337 17.898 29.877 12.282 1.00 0.00 O -ATOM 1013 HW1 SOL 337 18.653 29.401 12.733 1.00 0.00 H -ATOM 1014 HW2 SOL 337 17.369 30.254 13.042 1.00 0.00 H -ATOM 1015 OW SOL 338 9.579 23.791 27.081 1.00 0.00 O -ATOM 1016 HW1 SOL 338 9.173 24.458 27.705 1.00 0.00 H -ATOM 1017 HW2 SOL 338 8.955 23.789 26.299 1.00 0.00 H -ATOM 1018 OW SOL 339 18.804 7.349 14.881 1.00 0.00 O -ATOM 1019 HW1 SOL 339 18.160 6.979 15.551 1.00 0.00 H -ATOM 1020 HW2 SOL 339 19.408 7.927 15.429 1.00 0.00 H -ATOM 1021 OW SOL 340 17.958 31.886 24.386 1.00 0.00 O -ATOM 1022 HW1 SOL 340 18.675 31.220 24.183 1.00 0.00 H -ATOM 1023 HW2 SOL 340 18.213 32.682 23.837 1.00 0.00 H -ATOM 1024 OW SOL 341 25.496 25.147 30.905 1.00 0.00 O -ATOM 1025 HW1 SOL 341 25.379 25.434 31.855 1.00 0.00 H -ATOM 1026 HW2 SOL 341 26.139 25.816 30.533 1.00 0.00 H -ATOM 1027 OW SOL 342 22.647 25.090 16.394 1.00 0.00 O -ATOM 1028 HW1 SOL 342 22.824 25.814 17.061 1.00 0.00 H -ATOM 1029 HW2 SOL 342 22.426 25.589 15.557 1.00 0.00 H -ATOM 1030 OW SOL 343 7.347 20.812 17.781 1.00 0.00 O -ATOM 1031 HW1 SOL 343 7.132 20.349 18.640 1.00 0.00 H -ATOM 1032 HW2 SOL 343 7.366 20.070 17.111 1.00 0.00 H -ATOM 1033 OW SOL 344 15.251 10.366 24.890 1.00 0.00 O -ATOM 1034 HW1 SOL 344 14.474 9.836 24.551 1.00 0.00 H -ATOM 1035 HW2 SOL 344 16.010 10.071 24.309 1.00 0.00 H -ATOM 1036 OW SOL 345 13.711 29.075 24.741 1.00 0.00 O -ATOM 1037 HW1 SOL 345 12.999 28.666 25.312 1.00 0.00 H -ATOM 1038 HW2 SOL 345 13.198 29.521 24.008 1.00 0.00 H -ATOM 1039 OW SOL 346 12.199 23.930 24.988 1.00 0.00 O -ATOM 1040 HW1 SOL 346 12.707 23.203 25.448 1.00 0.00 H -ATOM 1041 HW2 SOL 346 12.905 24.433 24.490 1.00 0.00 H -ATOM 1042 OW SOL 347 30.271 18.583 18.904 1.00 0.00 O -ATOM 1043 HW1 SOL 347 29.513 19.052 19.356 1.00 0.00 H -ATOM 1044 HW2 SOL 347 30.661 18.013 19.627 1.00 0.00 H -ATOM 1045 OW SOL 348 18.452 13.467 15.734 1.00 0.00 O -ATOM 1046 HW1 SOL 348 18.745 13.009 16.573 1.00 0.00 H -ATOM 1047 HW2 SOL 348 18.019 14.306 16.061 1.00 0.00 H -ATOM 1048 OW SOL 349 27.608 25.406 21.006 1.00 0.00 O -ATOM 1049 HW1 SOL 349 28.239 25.387 20.230 1.00 0.00 H -ATOM 1050 HW2 SOL 349 26.879 26.019 20.703 1.00 0.00 H -ATOM 1051 OW SOL 350 29.293 13.162 26.803 1.00 0.00 O -ATOM 1052 HW1 SOL 350 28.984 12.418 27.395 1.00 0.00 H -ATOM 1053 HW2 SOL 350 28.454 13.670 26.605 1.00 0.00 H -ATOM 1054 OW SOL 351 25.367 16.306 20.113 1.00 0.00 O -ATOM 1055 HW1 SOL 351 25.891 17.140 20.287 1.00 0.00 H -ATOM 1056 HW2 SOL 351 24.438 16.548 20.392 1.00 0.00 H -ATOM 1057 OW SOL 352 30.822 27.105 23.424 1.00 0.00 O -ATOM 1058 HW1 SOL 352 31.202 27.871 23.943 1.00 0.00 H -ATOM 1059 HW2 SOL 352 30.581 26.439 24.130 1.00 0.00 H -ATOM 1060 OW SOL 353 23.941 14.747 25.295 1.00 0.00 O -ATOM 1061 HW1 SOL 353 24.843 15.162 25.416 1.00 0.00 H -ATOM 1062 HW2 SOL 353 23.374 15.211 25.975 1.00 0.00 H -ATOM 1063 OW SOL 354 13.604 17.251 21.190 1.00 0.00 O -ATOM 1064 HW1 SOL 354 12.826 17.862 21.334 1.00 0.00 H -ATOM 1065 HW2 SOL 354 13.569 16.634 21.976 1.00 0.00 H -ATOM 1066 OW SOL 355 18.949 7.925 24.760 1.00 0.00 O -ATOM 1067 HW1 SOL 355 19.061 8.403 23.889 1.00 0.00 H -ATOM 1068 HW2 SOL 355 17.959 7.917 24.900 1.00 0.00 H -ATOM 1069 OW SOL 356 8.916 14.706 23.338 1.00 0.00 O -ATOM 1070 HW1 SOL 356 9.277 14.271 24.163 1.00 0.00 H -ATOM 1071 HW2 SOL 356 8.325 15.430 23.693 1.00 0.00 H -ATOM 1072 OW SOL 357 26.796 12.444 17.183 1.00 0.00 O -ATOM 1073 HW1 SOL 357 27.461 12.928 16.616 1.00 0.00 H -ATOM 1074 HW2 SOL 357 26.186 13.168 17.503 1.00 0.00 H -ATOM 1075 OW SOL 358 13.234 9.422 15.555 1.00 0.00 O -ATOM 1076 HW1 SOL 358 12.639 9.431 16.359 1.00 0.00 H -ATOM 1077 HW2 SOL 358 12.597 9.516 14.790 1.00 0.00 H -ATOM 1078 OW SOL 359 16.066 17.405 24.928 1.00 0.00 O -ATOM 1079 HW1 SOL 359 15.432 17.970 24.400 1.00 0.00 H -ATOM 1080 HW2 SOL 359 15.787 17.561 25.875 1.00 0.00 H -ATOM 1081 OW SOL 360 18.659 24.815 26.775 1.00 0.00 O -ATOM 1082 HW1 SOL 360 19.219 24.209 27.339 1.00 0.00 H -ATOM 1083 HW2 SOL 360 18.065 25.272 27.437 1.00 0.00 H -ATOM 1084 OW SOL 361 10.600 13.243 25.686 1.00 0.00 O -ATOM 1085 HW1 SOL 361 11.333 13.874 25.432 1.00 0.00 H -ATOM 1086 HW2 SOL 361 10.318 12.846 24.812 1.00 0.00 H -ATOM 1087 OW SOL 362 10.012 29.575 16.524 1.00 0.00 O -ATOM 1088 HW1 SOL 362 9.500 29.086 15.818 1.00 0.00 H -ATOM 1089 HW2 SOL 362 10.877 29.798 16.075 1.00 0.00 H -ATOM 1090 OW SOL 363 23.586 27.355 19.055 1.00 0.00 O -ATOM 1091 HW1 SOL 363 24.502 26.964 18.967 1.00 0.00 H -ATOM 1092 HW2 SOL 363 23.752 28.341 19.077 1.00 0.00 H -ATOM 1093 OW SOL 364 9.635 19.206 24.800 1.00 0.00 O -ATOM 1094 HW1 SOL 364 9.097 19.827 25.370 1.00 0.00 H -ATOM 1095 HW2 SOL 364 10.251 18.762 25.452 1.00 0.00 H -ATOM 1096 OW SOL 365 14.658 26.293 14.899 1.00 0.00 O -ATOM 1097 HW1 SOL 365 14.872 25.976 13.975 1.00 0.00 H -ATOM 1098 HW2 SOL 365 15.201 27.127 14.994 1.00 0.00 H -ATOM 1099 OW SOL 366 13.759 14.754 20.145 1.00 0.00 O -ATOM 1100 HW1 SOL 366 13.554 14.035 19.482 1.00 0.00 H -ATOM 1101 HW2 SOL 366 14.756 14.731 20.219 1.00 0.00 H -ATOM 1102 OW SOL 367 12.001 14.814 10.866 1.00 0.00 O -ATOM 1103 HW1 SOL 367 12.869 14.379 10.626 1.00 0.00 H -ATOM 1104 HW2 SOL 367 11.604 15.053 9.980 1.00 0.00 H -ATOM 1105 OW SOL 368 18.668 20.118 8.220 1.00 0.00 O -ATOM 1106 HW1 SOL 368 17.814 20.193 8.735 1.00 0.00 H -ATOM 1107 HW2 SOL 368 18.404 19.611 7.399 1.00 0.00 H -ATOM 1108 OW SOL 369 23.926 13.005 24.371 1.00 0.00 O -ATOM 1109 HW1 SOL 369 23.334 13.133 23.575 1.00 0.00 H -ATOM 1110 HW2 SOL 369 24.838 12.905 23.974 1.00 0.00 H -ATOM 1111 OW SOL 370 23.517 7.462 17.110 1.00 0.00 O -ATOM 1112 HW1 SOL 370 24.488 7.690 17.189 1.00 0.00 H -ATOM 1113 HW2 SOL 370 23.088 8.336 16.880 1.00 0.00 H -ATOM 1114 OW SOL 371 26.357 18.637 14.769 1.00 0.00 O -ATOM 1115 HW1 SOL 371 26.316 19.578 14.433 1.00 0.00 H -ATOM 1116 HW2 SOL 371 27.258 18.319 14.472 1.00 0.00 H -ATOM 1117 OW SOL 372 21.116 28.517 20.056 1.00 0.00 O -ATOM 1118 HW1 SOL 372 20.534 27.824 19.631 1.00 0.00 H -ATOM 1119 HW2 SOL 372 21.533 28.985 19.277 1.00 0.00 H -ATOM 1120 OW SOL 373 27.604 11.145 20.199 1.00 0.00 O -ATOM 1121 HW1 SOL 373 27.072 11.634 20.889 1.00 0.00 H -ATOM 1122 HW2 SOL 373 28.093 10.450 20.726 1.00 0.00 H -ATOM 1123 OW SOL 374 11.692 16.705 31.095 1.00 0.00 O -ATOM 1124 HW1 SOL 374 10.808 16.892 30.666 1.00 0.00 H -ATOM 1125 HW2 SOL 374 12.254 16.366 30.340 1.00 0.00 H -ATOM 1126 OW SOL 375 17.350 29.821 30.443 1.00 0.00 O -ATOM 1127 HW1 SOL 375 17.988 29.961 29.686 1.00 0.00 H -ATOM 1128 HW2 SOL 375 17.740 29.048 30.941 1.00 0.00 H -ATOM 1129 OW SOL 376 16.689 13.349 21.122 1.00 0.00 O -ATOM 1130 HW1 SOL 376 16.772 12.656 21.838 1.00 0.00 H -ATOM 1131 HW2 SOL 376 16.237 14.113 21.584 1.00 0.00 H -ATOM 1132 OW SOL 377 15.870 18.012 32.581 1.00 0.00 O -ATOM 1133 HW1 SOL 377 15.987 18.011 31.588 1.00 0.00 H -ATOM 1134 HW2 SOL 377 16.784 17.796 32.926 1.00 0.00 H -ATOM 1135 OW SOL 378 18.304 16.070 15.111 1.00 0.00 O -ATOM 1136 HW1 SOL 378 18.299 17.006 14.760 1.00 0.00 H -ATOM 1137 HW2 SOL 378 17.907 15.536 14.364 1.00 0.00 H -ATOM 1138 OW SOL 379 18.903 20.198 10.486 1.00 0.00 O -ATOM 1139 HW1 SOL 379 19.030 19.297 10.901 1.00 0.00 H -ATOM 1140 HW2 SOL 379 19.667 20.733 10.846 1.00 0.00 H -ATOM 1141 OW SOL 380 22.502 15.710 17.837 1.00 0.00 O -ATOM 1142 HW1 SOL 380 22.313 15.970 18.784 1.00 0.00 H -ATOM 1143 HW2 SOL 380 22.606 16.588 17.368 1.00 0.00 H -ATOM 1144 OW SOL 381 29.683 30.062 19.831 1.00 0.00 O -ATOM 1145 HW1 SOL 381 29.674 29.784 20.792 1.00 0.00 H -ATOM 1146 HW2 SOL 381 28.829 30.570 19.724 1.00 0.00 H -ATOM 1147 OW SOL 382 26.170 27.205 27.204 1.00 0.00 O -ATOM 1148 HW1 SOL 382 26.836 26.494 27.429 1.00 0.00 H -ATOM 1149 HW2 SOL 382 25.555 27.210 27.993 1.00 0.00 H -ATOM 1150 OW SOL 383 16.106 13.386 18.542 1.00 0.00 O -ATOM 1151 HW1 SOL 383 16.962 13.868 18.728 1.00 0.00 H -ATOM 1152 HW2 SOL 383 15.997 12.785 19.334 1.00 0.00 H -ATOM 1153 OW SOL 384 18.518 21.201 17.289 1.00 0.00 O -ATOM 1154 HW1 SOL 384 18.236 20.768 16.433 1.00 0.00 H -ATOM 1155 HW2 SOL 384 19.194 21.879 17.000 1.00 0.00 H -ATOM 1156 OW SOL 385 27.338 17.916 28.534 1.00 0.00 O -ATOM 1157 HW1 SOL 385 27.345 17.201 29.232 1.00 0.00 H -ATOM 1158 HW2 SOL 385 27.179 18.754 29.056 1.00 0.00 H -ATOM 1159 OW SOL 386 22.872 26.440 9.393 1.00 0.00 O -ATOM 1160 HW1 SOL 386 22.770 25.847 10.192 1.00 0.00 H -ATOM 1161 HW2 SOL 386 22.487 27.312 9.696 1.00 0.00 H -ATOM 1162 OW SOL 387 26.300 16.482 16.316 1.00 0.00 O -ATOM 1163 HW1 SOL 387 25.677 16.528 17.097 1.00 0.00 H -ATOM 1164 HW2 SOL 387 25.909 15.761 15.744 1.00 0.00 H -ATOM 1165 OW SOL 388 25.715 22.803 30.761 1.00 0.00 O -ATOM 1166 HW1 SOL 388 26.272 21.975 30.708 1.00 0.00 H -ATOM 1167 HW2 SOL 388 26.349 23.531 30.501 1.00 0.00 H -ATOM 1168 OW SOL 389 24.335 9.089 13.169 1.00 0.00 O -ATOM 1169 HW1 SOL 389 24.710 8.808 14.052 1.00 0.00 H -ATOM 1170 HW2 SOL 389 24.584 8.337 12.558 1.00 0.00 H -ATOM 1171 OW SOL 390 19.492 13.050 28.693 1.00 0.00 O -ATOM 1172 HW1 SOL 390 18.690 12.532 28.990 1.00 0.00 H -ATOM 1173 HW2 SOL 390 19.954 12.428 28.062 1.00 0.00 H -ATOM 1174 OW SOL 391 15.319 18.192 20.811 1.00 0.00 O -ATOM 1175 HW1 SOL 391 15.078 18.658 19.960 1.00 0.00 H -ATOM 1176 HW2 SOL 391 16.106 18.708 21.148 1.00 0.00 H -ATOM 1177 OW SOL 392 10.011 10.867 21.045 1.00 0.00 O -ATOM 1178 HW1 SOL 392 10.224 10.284 20.261 1.00 0.00 H -ATOM 1179 HW2 SOL 392 9.590 11.674 20.630 1.00 0.00 H -ATOM 1180 OW SOL 393 29.350 11.459 25.227 1.00 0.00 O -ATOM 1181 HW1 SOL 393 30.300 11.760 25.311 1.00 0.00 H -ATOM 1182 HW2 SOL 393 29.123 11.659 24.275 1.00 0.00 H -ATOM 1183 OW SOL 394 12.469 18.947 30.412 1.00 0.00 O -ATOM 1184 HW1 SOL 394 11.739 19.586 30.172 1.00 0.00 H -ATOM 1185 HW2 SOL 394 12.924 18.769 29.540 1.00 0.00 H -ATOM 1186 OW SOL 395 27.922 15.175 20.298 1.00 0.00 O -ATOM 1187 HW1 SOL 395 27.229 15.856 20.059 1.00 0.00 H -ATOM 1188 HW2 SOL 395 27.389 14.420 20.680 1.00 0.00 H -ATOM 1189 OW SOL 396 16.812 9.336 28.303 1.00 0.00 O -ATOM 1190 HW1 SOL 396 16.960 9.171 29.278 1.00 0.00 H -ATOM 1191 HW2 SOL 396 16.286 8.540 28.006 1.00 0.00 H -ATOM 1192 OW SOL 397 15.418 29.692 28.828 1.00 0.00 O -ATOM 1193 HW1 SOL 397 16.073 30.447 28.800 1.00 0.00 H -ATOM 1194 HW2 SOL 397 15.156 29.643 29.792 1.00 0.00 H -ATOM 1195 OW SOL 398 27.811 30.191 14.603 1.00 0.00 O -ATOM 1196 HW1 SOL 398 27.420 31.110 14.628 1.00 0.00 H -ATOM 1197 HW2 SOL 398 27.684 29.906 13.653 1.00 0.00 H -ATOM 1198 OW SOL 399 11.736 20.569 9.793 1.00 0.00 O -ATOM 1199 HW1 SOL 399 11.736 20.456 8.800 1.00 0.00 H -ATOM 1200 HW2 SOL 399 10.834 20.237 10.069 1.00 0.00 H -ATOM 1201 OW SOL 400 15.485 14.225 11.483 1.00 0.00 O -ATOM 1202 HW1 SOL 400 15.008 14.268 10.605 1.00 0.00 H -ATOM 1203 HW2 SOL 400 16.443 14.371 11.237 1.00 0.00 H -ATOM 1204 OW SOL 401 12.709 30.471 13.919 1.00 0.00 O -ATOM 1205 HW1 SOL 401 11.788 30.503 14.307 1.00 0.00 H -ATOM 1206 HW2 SOL 401 13.084 29.615 14.272 1.00 0.00 H -ATOM 1207 OW SOL 402 31.111 20.994 19.932 1.00 0.00 O -ATOM 1208 HW1 SOL 402 31.576 21.475 20.675 1.00 0.00 H -ATOM 1209 HW2 SOL 402 30.467 20.394 20.407 1.00 0.00 H -ATOM 1210 OW SOL 403 24.062 30.747 23.377 1.00 0.00 O -ATOM 1211 HW1 SOL 403 24.332 31.552 23.905 1.00 0.00 H -ATOM 1212 HW2 SOL 403 24.483 30.900 22.483 1.00 0.00 H -ATOM 1213 OW SOL 404 18.431 11.951 18.140 1.00 0.00 O -ATOM 1214 HW1 SOL 404 17.742 11.640 17.485 1.00 0.00 H -ATOM 1215 HW2 SOL 404 17.895 12.194 18.948 1.00 0.00 H -ATOM 1216 OW SOL 405 16.283 31.157 26.623 1.00 0.00 O -ATOM 1217 HW1 SOL 405 16.910 31.868 26.305 1.00 0.00 H -ATOM 1218 HW2 SOL 405 16.305 30.478 25.890 1.00 0.00 H -ATOM 1219 OW SOL 406 18.803 21.710 12.232 1.00 0.00 O -ATOM 1220 HW1 SOL 406 18.994 22.675 12.415 1.00 0.00 H -ATOM 1221 HW2 SOL 406 17.880 21.581 12.593 1.00 0.00 H -ATOM 1222 OW SOL 407 11.286 24.629 11.978 1.00 0.00 O -ATOM 1223 HW1 SOL 407 10.390 25.020 12.189 1.00 0.00 H -ATOM 1224 HW2 SOL 407 11.927 25.339 12.271 1.00 0.00 H -ATOM 1225 OW SOL 408 25.149 18.535 17.370 1.00 0.00 O -ATOM 1226 HW1 SOL 408 25.862 18.381 16.686 1.00 0.00 H -ATOM 1227 HW2 SOL 408 24.761 19.420 17.110 1.00 0.00 H -ATOM 1228 OW SOL 409 19.328 20.068 13.042 1.00 0.00 O -ATOM 1229 HW1 SOL 409 18.576 19.495 12.717 1.00 0.00 H -ATOM 1230 HW2 SOL 409 19.812 19.477 13.687 1.00 0.00 H -ATOM 1231 OW SOL 410 21.237 25.471 27.521 1.00 0.00 O -ATOM 1232 HW1 SOL 410 21.435 24.646 28.050 1.00 0.00 H -ATOM 1233 HW2 SOL 410 20.625 25.992 28.116 1.00 0.00 H -ATOM 1234 OW SOL 411 12.074 20.398 27.067 1.00 0.00 O -ATOM 1235 HW1 SOL 411 12.603 19.796 27.664 1.00 0.00 H -ATOM 1236 HW2 SOL 411 11.489 20.905 27.700 1.00 0.00 H -ATOM 1237 OW SOL 412 13.812 21.589 25.906 1.00 0.00 O -ATOM 1238 HW1 SOL 412 12.974 21.098 25.669 1.00 0.00 H -ATOM 1239 HW2 SOL 412 14.451 20.860 26.151 1.00 0.00 H -ATOM 1240 OW SOL 413 25.688 30.704 27.010 1.00 0.00 O -ATOM 1241 HW1 SOL 413 25.097 30.864 26.221 1.00 0.00 H -ATOM 1242 HW2 SOL 413 25.225 31.186 27.754 1.00 0.00 H -ATOM 1243 OW SOL 414 13.208 18.032 32.434 1.00 0.00 O -ATOM 1244 HW1 SOL 414 14.078 18.249 31.993 1.00 0.00 H -ATOM 1245 HW2 SOL 414 12.655 18.852 32.282 1.00 0.00 H -ATOM 1246 OW SOL 415 7.108 16.434 22.080 1.00 0.00 O -ATOM 1247 HW1 SOL 415 7.484 17.358 22.011 1.00 0.00 H -ATOM 1248 HW2 SOL 415 7.761 15.875 21.567 1.00 0.00 H -ATOM 1249 OW SOL 416 14.774 20.761 17.474 1.00 0.00 O -ATOM 1250 HW1 SOL 416 14.703 19.946 18.048 1.00 0.00 H -ATOM 1251 HW2 SOL 416 15.365 20.469 16.722 1.00 0.00 H -ATOM 1252 OW SOL 417 25.788 20.505 20.425 1.00 0.00 O -ATOM 1253 HW1 SOL 417 24.806 20.348 20.318 1.00 0.00 H -ATOM 1254 HW2 SOL 417 26.199 19.650 20.108 1.00 0.00 H -ATOM 1255 OW SOL 418 9.167 20.054 18.678 1.00 0.00 O -ATOM 1256 HW1 SOL 418 8.771 19.152 18.849 1.00 0.00 H -ATOM 1257 HW2 SOL 418 10.121 19.854 18.456 1.00 0.00 H -ATOM 1258 OW SOL 419 9.447 26.979 21.497 1.00 0.00 O -ATOM 1259 HW1 SOL 419 9.976 26.656 20.713 1.00 0.00 H -ATOM 1260 HW2 SOL 419 8.504 26.750 21.255 1.00 0.00 H -ATOM 1261 OW SOL 420 18.650 8.256 26.647 1.00 0.00 O -ATOM 1262 HW1 SOL 420 19.333 8.559 27.311 1.00 0.00 H -ATOM 1263 HW2 SOL 420 18.178 9.099 26.392 1.00 0.00 H -ATOM 1264 OW SOL 421 15.908 15.453 17.743 1.00 0.00 O -ATOM 1265 HW1 SOL 421 15.775 14.632 17.188 1.00 0.00 H -ATOM 1266 HW2 SOL 421 15.282 15.322 18.512 1.00 0.00 H -ATOM 1267 OW SOL 422 11.188 23.471 19.185 1.00 0.00 O -ATOM 1268 HW1 SOL 422 11.046 23.246 18.221 1.00 0.00 H -ATOM 1269 HW2 SOL 422 10.980 22.615 19.659 1.00 0.00 H -ATOM 1270 OW SOL 423 29.510 25.440 22.026 1.00 0.00 O -ATOM 1271 HW1 SOL 423 28.759 25.853 22.540 1.00 0.00 H -ATOM 1272 HW2 SOL 423 29.659 24.566 22.487 1.00 0.00 H -ATOM 1273 OW SOL 424 15.725 17.515 14.579 1.00 0.00 O -ATOM 1274 HW1 SOL 424 15.688 18.487 14.813 1.00 0.00 H -ATOM 1275 HW2 SOL 424 16.285 17.119 15.307 1.00 0.00 H -ATOM 1276 OW SOL 425 18.623 29.156 26.325 1.00 0.00 O -ATOM 1277 HW1 SOL 425 18.714 29.852 25.612 1.00 0.00 H -ATOM 1278 HW2 SOL 425 18.470 28.311 25.812 1.00 0.00 H -ATOM 1279 OW SOL 426 21.211 9.001 15.334 1.00 0.00 O -ATOM 1280 HW1 SOL 426 20.960 8.753 14.399 1.00 0.00 H -ATOM 1281 HW2 SOL 426 21.147 9.998 15.339 1.00 0.00 H -ATOM 1282 OW SOL 427 19.904 17.241 23.554 1.00 0.00 O -ATOM 1283 HW1 SOL 427 19.290 16.757 22.932 1.00 0.00 H -ATOM 1284 HW2 SOL 427 19.962 16.637 24.348 1.00 0.00 H -ATOM 1285 OW SOL 428 21.748 11.771 22.640 1.00 0.00 O -ATOM 1286 HW1 SOL 428 21.852 12.618 22.120 1.00 0.00 H -ATOM 1287 HW2 SOL 428 21.788 12.072 23.593 1.00 0.00 H -ATOM 1288 OW SOL 429 24.392 10.424 15.644 1.00 0.00 O -ATOM 1289 HW1 SOL 429 25.310 10.820 15.617 1.00 0.00 H -ATOM 1290 HW2 SOL 429 23.962 10.771 14.811 1.00 0.00 H -ATOM 1291 OW SOL 430 10.495 24.796 24.754 1.00 0.00 O -ATOM 1292 HW1 SOL 430 9.585 25.143 24.981 1.00 0.00 H -ATOM 1293 HW2 SOL 430 11.113 25.458 25.178 1.00 0.00 H -ATOM 1294 OW SOL 431 25.149 15.809 11.203 1.00 0.00 O -ATOM 1295 HW1 SOL 431 24.365 15.298 10.851 1.00 0.00 H -ATOM 1296 HW2 SOL 431 24.776 16.298 11.992 1.00 0.00 H -ATOM 1297 OW SOL 432 22.707 30.090 25.598 1.00 0.00 O -ATOM 1298 HW1 SOL 432 22.038 29.827 26.292 1.00 0.00 H -ATOM 1299 HW2 SOL 432 23.157 30.890 25.995 1.00 0.00 H -TER -ENDMDL diff --git a/examples/latte_scf/coords_2955.pdb b/examples/latte_scf/coords_2955.pdb deleted file mode 100644 index 04974ee5..00000000 --- a/examples/latte_scf/coords_2955.pdb +++ /dev/null @@ -1,2961 +0,0 @@ -TITLE my_single_water.xyz -REMARK THIS IS A SIMULATION BOX -CRYST1 31.230 31.230 31.230 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H HOH 0 15.009 16.295 15.615 1.00 0.00 H -ATOM 2 O HOH 1 15.427 15.434 15.615 1.00 0.00 O -ATOM 3 H HOH 0 16.408 15.115 15.615 1.00 0.00 H -ATOM 4 OW SOL 1 5.690 12.751 11.651 1.00 0.00 O -ATOM 5 HW1 SOL 1 4.760 12.681 11.281 1.00 0.00 H -ATOM 6 HW2 SOL 1 5.800 13.641 12.091 1.00 0.00 H -ATOM 7 OW SOL 2 15.551 15.111 7.030 1.00 0.00 O -ATOM 8 HW1 SOL 2 14.981 14.951 7.840 1.00 0.00 H -ATOM 9 HW2 SOL 2 14.961 15.211 6.230 1.00 0.00 H -ATOM 10 OW SOL 3 17.431 6.180 8.560 1.00 0.00 O -ATOM 11 HW1 SOL 3 17.761 7.120 8.560 1.00 0.00 H -ATOM 12 HW2 SOL 3 17.941 5.640 9.220 1.00 0.00 H -ATOM 13 OW SOL 4 11.351 7.030 7.170 1.00 0.00 O -ATOM 14 HW1 SOL 4 11.921 7.810 6.920 1.00 0.00 H -ATOM 15 HW2 SOL 4 10.751 7.290 7.930 1.00 0.00 H -ATOM 16 OW SOL 5 17.551 6.070 2.310 1.00 0.00 O -ATOM 17 HW1 SOL 5 17.431 5.940 1.320 1.00 0.00 H -ATOM 18 HW2 SOL 5 17.251 5.260 2.800 1.00 0.00 H -ATOM 19 OW SOL 6 7.680 11.441 10.231 1.00 0.00 O -ATOM 20 HW1 SOL 6 6.900 11.611 10.831 1.00 0.00 H -ATOM 21 HW2 SOL 6 8.020 12.311 9.871 1.00 0.00 H -ATOM 22 OW SOL 7 8.500 7.980 18.231 1.00 0.00 O -ATOM 23 HW1 SOL 7 8.460 8.740 18.881 1.00 0.00 H -ATOM 24 HW2 SOL 7 8.720 8.340 17.321 1.00 0.00 H -ATOM 25 OW SOL 8 6.850 10.121 6.650 1.00 0.00 O -ATOM 26 HW1 SOL 8 7.540 9.961 7.350 1.00 0.00 H -ATOM 27 HW2 SOL 8 6.120 10.691 7.030 1.00 0.00 H -ATOM 28 OW SOL 9 6.860 11.611 18.031 1.00 0.00 O -ATOM 29 HW1 SOL 9 7.460 12.401 18.171 1.00 0.00 H -ATOM 30 HW2 SOL 9 6.000 11.921 17.621 1.00 0.00 H -ATOM 31 OW SOL 10 14.601 15.051 13.391 1.00 0.00 O -ATOM 32 HW1 SOL 10 14.841 15.991 13.651 1.00 0.00 H -ATOM 33 HW2 SOL 10 14.441 14.511 14.211 1.00 0.00 H -ATOM 34 OW SOL 11 4.380 3.920 14.991 1.00 0.00 O -ATOM 35 HW1 SOL 11 5.200 3.360 15.081 1.00 0.00 H -ATOM 36 HW2 SOL 11 3.570 3.340 15.031 1.00 0.00 H -ATOM 37 OW SOL 12 16.031 4.470 7.370 1.00 0.00 O -ATOM 38 HW1 SOL 12 15.291 4.930 6.870 1.00 0.00 H -ATOM 39 HW2 SOL 12 16.541 5.150 7.900 1.00 0.00 H -ATOM 40 OW SOL 13 11.271 13.411 16.901 1.00 0.00 O -ATOM 41 HW1 SOL 13 11.741 13.411 17.781 1.00 0.00 H -ATOM 42 HW2 SOL 13 10.791 12.541 16.791 1.00 0.00 H -ATOM 43 OW SOL 14 2.400 10.911 8.860 1.00 0.00 O -ATOM 44 HW1 SOL 14 2.540 10.071 9.380 1.00 0.00 H -ATOM 45 HW2 SOL 14 1.850 11.551 9.410 1.00 0.00 H -ATOM 46 OW SOL 15 6.200 17.861 14.391 1.00 0.00 O -ATOM 47 HW1 SOL 15 5.280 17.691 14.741 1.00 0.00 H -ATOM 48 HW2 SOL 15 6.480 18.781 14.651 1.00 0.00 H -ATOM 49 OW SOL 16 6.060 9.641 1.230 1.00 0.00 O -ATOM 50 HW1 SOL 16 6.130 10.481 0.690 1.00 0.00 H -ATOM 51 HW2 SOL 16 6.520 9.771 2.110 1.00 0.00 H -ATOM 52 OW SOL 17 15.941 1.140 14.801 1.00 0.00 O -ATOM 53 HW1 SOL 17 15.761 1.810 14.081 1.00 0.00 H -ATOM 54 HW2 SOL 17 15.911 1.600 15.691 1.00 0.00 H -ATOM 55 OW SOL 18 1.220 6.430 5.630 1.00 0.00 O -ATOM 56 HW1 SOL 18 0.770 5.550 5.800 1.00 0.00 H -ATOM 57 HW2 SOL 18 1.210 6.970 6.470 1.00 0.00 H -ATOM 58 OW SOL 19 18.421 17.671 3.590 1.00 0.00 O -ATOM 59 HW1 SOL 19 18.961 17.381 4.390 1.00 0.00 H -ATOM 60 HW2 SOL 19 18.721 18.571 3.300 1.00 0.00 H -ATOM 61 OW SOL 20 16.891 9.220 6.120 1.00 0.00 O -ATOM 62 HW1 SOL 20 17.841 8.930 6.200 1.00 0.00 H -ATOM 63 HW2 SOL 20 16.811 9.870 5.370 1.00 0.00 H -ATOM 64 OW SOL 21 16.411 11.081 4.320 1.00 0.00 O -ATOM 65 HW1 SOL 21 17.271 11.101 3.800 1.00 0.00 H -ATOM 66 HW2 SOL 21 16.551 11.551 5.200 1.00 0.00 H -ATOM 67 OW SOL 22 1.130 7.370 15.971 1.00 0.00 O -ATOM 68 HW1 SOL 22 2.010 7.240 16.421 1.00 0.00 H -ATOM 69 HW2 SOL 22 1.000 8.340 15.751 1.00 0.00 H -ATOM 70 OW SOL 23 6.130 13.651 7.260 1.00 0.00 O -ATOM 71 HW1 SOL 23 5.640 12.781 7.350 1.00 0.00 H -ATOM 72 HW2 SOL 23 5.900 14.081 6.390 1.00 0.00 H -ATOM 73 OW SOL 24 12.931 12.281 14.231 1.00 0.00 O -ATOM 74 HW1 SOL 24 13.301 11.551 13.651 1.00 0.00 H -ATOM 75 HW2 SOL 24 13.451 12.331 15.081 1.00 0.00 H -ATOM 76 OW SOL 25 8.090 0.040 5.020 1.00 0.00 O -ATOM 77 HW1 SOL 25 8.490 0.950 4.930 1.00 0.00 H -ATOM 78 HW2 SOL 25 7.090 0.120 5.080 1.00 0.00 H -ATOM 79 OW SOL 26 15.251 9.991 1.900 1.00 0.00 O -ATOM 80 HW1 SOL 26 14.621 9.231 2.030 1.00 0.00 H -ATOM 81 HW2 SOL 26 15.731 10.171 2.760 1.00 0.00 H -ATOM 82 OW SOL 27 11.871 17.921 16.161 1.00 0.00 O -ATOM 83 HW1 SOL 27 12.111 18.521 15.401 1.00 0.00 H -ATOM 84 HW2 SOL 27 11.941 16.971 15.861 1.00 0.00 H -ATOM 85 OW SOL 28 3.170 2.510 18.011 1.00 0.00 O -ATOM 86 HW1 SOL 28 3.880 3.220 18.071 1.00 0.00 H -ATOM 87 HW2 SOL 28 2.290 2.900 18.291 1.00 0.00 H -ATOM 88 OW SOL 29 14.661 14.171 9.531 1.00 0.00 O -ATOM 89 HW1 SOL 29 14.071 14.231 10.331 1.00 0.00 H -ATOM 90 HW2 SOL 29 14.511 13.291 9.071 1.00 0.00 H -ATOM 91 OW SOL 30 16.671 17.141 5.720 1.00 0.00 O -ATOM 92 HW1 SOL 30 16.261 16.911 4.840 1.00 0.00 H -ATOM 93 HW2 SOL 30 16.491 16.401 6.370 1.00 0.00 H -ATOM 94 OW SOL 31 5.980 7.290 2.700 1.00 0.00 O -ATOM 95 HW1 SOL 31 6.220 7.980 2.020 1.00 0.00 H -ATOM 96 HW2 SOL 31 5.200 7.620 3.240 1.00 0.00 H -ATOM 97 OW SOL 32 12.811 3.450 9.441 1.00 0.00 O -ATOM 98 HW1 SOL 32 11.951 2.950 9.311 1.00 0.00 H -ATOM 99 HW2 SOL 32 13.431 2.910 10.001 1.00 0.00 H -ATOM 100 OW SOL 33 15.761 16.621 3.070 1.00 0.00 O -ATOM 101 HW1 SOL 33 16.651 17.081 3.100 1.00 0.00 H -ATOM 102 HW2 SOL 33 15.551 16.381 2.120 1.00 0.00 H -ATOM 103 OW SOL 34 8.070 6.050 14.651 1.00 0.00 O -ATOM 104 HW1 SOL 34 7.600 6.020 15.541 1.00 0.00 H -ATOM 105 HW2 SOL 34 7.560 5.500 13.991 1.00 0.00 H -ATOM 106 OW SOL 35 13.941 4.690 16.741 1.00 0.00 O -ATOM 107 HW1 SOL 35 13.741 5.120 17.621 1.00 0.00 H -ATOM 108 HW2 SOL 35 14.721 4.070 16.831 1.00 0.00 H -ATOM 109 OW SOL 36 9.731 8.900 15.721 1.00 0.00 O -ATOM 110 HW1 SOL 36 10.191 8.060 15.431 1.00 0.00 H -ATOM 111 HW2 SOL 36 9.171 9.240 14.971 1.00 0.00 H -ATOM 112 OW SOL 37 9.911 4.100 12.421 1.00 0.00 O -ATOM 113 HW1 SOL 37 9.141 4.440 12.961 1.00 0.00 H -ATOM 114 HW2 SOL 37 9.571 3.590 11.631 1.00 0.00 H -ATOM 115 OW SOL 38 10.411 7.010 4.290 1.00 0.00 O -ATOM 116 HW1 SOL 38 10.671 6.970 5.250 1.00 0.00 H -ATOM 117 HW2 SOL 38 9.561 6.500 4.150 1.00 0.00 H -ATOM 118 OW SOL 39 8.650 3.480 1.950 1.00 0.00 O -ATOM 119 HW1 SOL 39 9.240 4.110 1.460 1.00 0.00 H -ATOM 120 HW2 SOL 39 8.840 2.540 1.660 1.00 0.00 H -ATOM 121 OW SOL 40 17.191 5.850 18.311 1.00 0.00 O -ATOM 122 HW1 SOL 40 16.931 6.740 17.951 1.00 0.00 H -ATOM 123 HW2 SOL 40 17.171 5.170 17.581 1.00 0.00 H -ATOM 124 OW SOL 41 13.621 11.441 5.450 1.00 0.00 O -ATOM 125 HW1 SOL 41 14.451 11.151 4.970 1.00 0.00 H -ATOM 126 HW2 SOL 41 13.131 12.111 4.890 1.00 0.00 H -ATOM 127 OW SOL 42 5.500 1.960 8.850 1.00 0.00 O -ATOM 128 HW1 SOL 42 5.450 1.910 9.850 1.00 0.00 H -ATOM 129 HW2 SOL 42 5.520 2.920 8.560 1.00 0.00 H -ATOM 130 OW SOL 43 10.081 14.561 4.770 1.00 0.00 O -ATOM 131 HW1 SOL 43 9.621 15.281 4.250 1.00 0.00 H -ATOM 132 HW2 SOL 43 10.041 14.761 5.750 1.00 0.00 H -ATOM 133 OW SOL 44 3.510 18.011 8.530 1.00 0.00 O -ATOM 134 HW1 SOL 44 4.010 17.151 8.590 1.00 0.00 H -ATOM 135 HW2 SOL 44 4.160 18.781 8.500 1.00 0.00 H -ATOM 136 OW SOL 45 17.951 10.661 8.730 1.00 0.00 O -ATOM 137 HW1 SOL 45 17.331 10.511 7.970 1.00 0.00 H -ATOM 138 HW2 SOL 45 17.431 10.771 9.580 1.00 0.00 H -ATOM 139 OW SOL 46 12.271 15.501 15.061 1.00 0.00 O -ATOM 140 HW1 SOL 46 12.331 14.731 15.701 1.00 0.00 H -ATOM 141 HW2 SOL 46 11.751 15.241 14.261 1.00 0.00 H -ATOM 142 OW SOL 47 3.210 9.431 2.420 1.00 0.00 O -ATOM 143 HW1 SOL 47 4.030 9.821 2.000 1.00 0.00 H -ATOM 144 HW2 SOL 47 2.940 8.611 1.930 1.00 0.00 H -ATOM 145 OW SOL 48 14.581 7.350 7.280 1.00 0.00 O -ATOM 146 HW1 SOL 48 14.531 6.700 8.030 1.00 0.00 H -ATOM 147 HW2 SOL 48 15.381 7.940 7.410 1.00 0.00 H -ATOM 148 OW SOL 49 4.610 12.661 17.271 1.00 0.00 O -ATOM 149 HW1 SOL 49 4.110 12.671 16.411 1.00 0.00 H -ATOM 150 HW2 SOL 49 3.980 12.481 18.031 1.00 0.00 H -ATOM 151 OW SOL 50 11.111 17.761 2.370 1.00 0.00 O -ATOM 152 HW1 SOL 50 10.511 17.141 2.870 1.00 0.00 H -ATOM 153 HW2 SOL 50 11.421 17.321 1.520 1.00 0.00 H -ATOM 154 OW SOL 51 2.020 2.850 14.981 1.00 0.00 O -ATOM 155 HW1 SOL 51 1.220 3.450 14.851 1.00 0.00 H -ATOM 156 HW2 SOL 51 1.920 2.360 15.841 1.00 0.00 H -ATOM 157 OW SOL 52 16.321 13.771 0.810 1.00 0.00 O -ATOM 158 HW1 SOL 52 16.001 14.711 0.710 1.00 0.00 H -ATOM 159 HW2 SOL 52 15.561 13.141 0.690 1.00 0.00 H -ATOM 160 OW SOL 53 4.640 17.431 3.230 1.00 0.00 O -ATOM 161 HW1 SOL 53 4.970 17.821 4.090 1.00 0.00 H -ATOM 162 HW2 SOL 53 5.400 17.361 2.580 1.00 0.00 H -ATOM 163 OW SOL 54 14.001 1.070 4.260 1.00 0.00 O -ATOM 164 HW1 SOL 54 13.761 0.700 3.360 1.00 0.00 H -ATOM 165 HW2 SOL 54 14.991 1.230 4.300 1.00 0.00 H -ATOM 166 OW SOL 55 2.490 17.851 12.411 1.00 0.00 O -ATOM 167 HW1 SOL 55 3.060 17.201 12.911 1.00 0.00 H -ATOM 168 HW2 SOL 55 2.330 17.521 11.481 1.00 0.00 H -ATOM 169 OW SOL 56 9.401 16.981 9.040 1.00 0.00 O -ATOM 170 HW1 SOL 56 10.201 16.411 9.250 1.00 0.00 H -ATOM 171 HW2 SOL 56 8.911 16.581 8.270 1.00 0.00 H -ATOM 172 OW SOL 57 3.820 7.000 4.800 1.00 0.00 O -ATOM 173 HW1 SOL 57 4.270 6.100 4.770 1.00 0.00 H -ATOM 174 HW2 SOL 57 2.880 6.890 5.130 1.00 0.00 H -ATOM 175 OW SOL 58 15.471 2.220 17.291 1.00 0.00 O -ATOM 176 HW1 SOL 58 15.421 2.590 18.211 1.00 0.00 H -ATOM 177 HW2 SOL 58 14.751 1.530 17.171 1.00 0.00 H -ATOM 178 OW SOL 59 6.140 1.220 1.170 1.00 0.00 O -ATOM 179 HW1 SOL 59 7.120 1.000 1.240 1.00 0.00 H -ATOM 180 HW2 SOL 59 5.830 1.050 0.240 1.00 0.00 H -ATOM 181 OW SOL 60 7.810 2.640 17.491 1.00 0.00 O -ATOM 182 HW1 SOL 60 8.480 2.030 17.921 1.00 0.00 H -ATOM 183 HW2 SOL 60 7.080 2.830 18.141 1.00 0.00 H -ATOM 184 OW SOL 61 8.880 15.141 11.951 1.00 0.00 O -ATOM 185 HW1 SOL 61 8.650 14.891 11.011 1.00 0.00 H -ATOM 186 HW2 SOL 61 9.490 14.451 12.341 1.00 0.00 H -ATOM 187 OW SOL 62 13.511 5.900 14.331 1.00 0.00 O -ATOM 188 HW1 SOL 62 13.791 5.470 15.181 1.00 0.00 H -ATOM 189 HW2 SOL 62 13.761 6.860 14.341 1.00 0.00 H -ATOM 190 OW SOL 63 8.030 14.021 9.240 1.00 0.00 O -ATOM 191 HW1 SOL 63 8.930 14.161 8.820 1.00 0.00 H -ATOM 192 HW2 SOL 63 7.320 14.041 8.530 1.00 0.00 H -ATOM 193 OW SOL 64 9.220 5.030 8.990 1.00 0.00 O -ATOM 194 HW1 SOL 64 8.970 4.940 8.030 1.00 0.00 H -ATOM 195 HW2 SOL 64 9.700 4.210 9.300 1.00 0.00 H -ATOM 196 OW SOL 65 5.390 0.640 5.120 1.00 0.00 O -ATOM 197 HW1 SOL 65 4.580 0.650 5.700 1.00 0.00 H -ATOM 198 HW2 SOL 65 5.420 1.470 4.570 1.00 0.00 H -ATOM 199 OW SOL 66 14.341 11.881 0.410 1.00 0.00 O -ATOM 200 HW1 SOL 66 14.661 11.121 0.980 1.00 0.00 H -ATOM 201 HW2 SOL 66 13.421 12.151 0.710 1.00 0.00 H -ATOM 202 OW SOL 67 2.970 0.350 1.710 1.00 0.00 O -ATOM 203 HW1 SOL 67 3.460 1.190 1.500 1.00 0.00 H -ATOM 204 HW2 SOL 67 3.590 -0.300 2.160 1.00 0.00 H -ATOM 205 OW SOL 68 9.351 2.360 4.800 1.00 0.00 O -ATOM 206 HW1 SOL 68 8.871 2.770 4.020 1.00 0.00 H -ATOM 207 HW2 SOL 68 10.341 2.340 4.610 1.00 0.00 H -ATOM 208 OW SOL 69 10.761 6.830 14.641 1.00 0.00 O -ATOM 209 HW1 SOL 69 9.961 6.220 14.671 1.00 0.00 H -ATOM 210 HW2 SOL 69 11.571 6.300 14.401 1.00 0.00 H -ATOM 211 OW SOL 70 12.271 15.701 7.930 1.00 0.00 O -ATOM 212 HW1 SOL 70 12.481 16.441 7.280 1.00 0.00 H -ATOM 213 HW2 SOL 70 12.951 15.701 8.660 1.00 0.00 H -ATOM 214 OW SOL 71 4.590 11.521 7.410 1.00 0.00 O -ATOM 215 HW1 SOL 71 3.880 11.251 8.060 1.00 0.00 H -ATOM 216 HW2 SOL 71 4.330 11.241 6.480 1.00 0.00 H -ATOM 217 OW SOL 72 12.711 17.971 5.910 1.00 0.00 O -ATOM 218 HW1 SOL 72 13.151 18.611 5.270 1.00 0.00 H -ATOM 219 HW2 SOL 72 12.211 18.491 6.610 1.00 0.00 H -ATOM 220 OW SOL 73 10.321 5.490 0.160 1.00 0.00 O -ATOM 221 HW1 SOL 73 9.911 6.310 -0.230 1.00 0.00 H -ATOM 222 HW2 SOL 73 10.961 5.750 0.890 1.00 0.00 H -ATOM 223 OW SOL 74 5.610 2.220 11.471 1.00 0.00 O -ATOM 224 HW1 SOL 74 5.990 1.380 11.841 1.00 0.00 H -ATOM 225 HW2 SOL 74 4.730 2.410 11.911 1.00 0.00 H -ATOM 226 OW SOL 75 8.660 4.540 6.420 1.00 0.00 O -ATOM 227 HW1 SOL 75 8.340 5.260 5.800 1.00 0.00 H -ATOM 228 HW2 SOL 75 8.900 3.730 5.890 1.00 0.00 H -ATOM 229 OW SOL 76 10.171 0.390 7.530 1.00 0.00 O -ATOM 230 HW1 SOL 76 9.451 0.440 6.840 1.00 0.00 H -ATOM 231 HW2 SOL 76 9.931 -0.300 8.220 1.00 0.00 H -ATOM 232 OW SOL 77 14.291 11.731 8.670 1.00 0.00 O -ATOM 233 HW1 SOL 77 13.741 10.891 8.600 1.00 0.00 H -ATOM 234 HW2 SOL 77 14.551 12.021 7.750 1.00 0.00 H -ATOM 235 OW SOL 78 14.661 5.900 9.921 1.00 0.00 O -ATOM 236 HW1 SOL 78 14.361 4.950 9.991 1.00 0.00 H -ATOM 237 HW2 SOL 78 15.391 6.060 10.581 1.00 0.00 H -ATOM 238 OW SOL 79 18.571 8.330 3.770 1.00 0.00 O -ATOM 239 HW1 SOL 79 18.991 7.690 4.410 1.00 0.00 H -ATOM 240 HW2 SOL 79 18.191 7.820 2.990 1.00 0.00 H -ATOM 241 OW SOL 80 4.880 13.851 1.740 1.00 0.00 O -ATOM 242 HW1 SOL 80 4.010 13.701 2.210 1.00 0.00 H -ATOM 243 HW2 SOL 80 4.710 14.111 0.790 1.00 0.00 H -ATOM 244 OW SOL 81 16.641 12.801 6.570 1.00 0.00 O -ATOM 245 HW1 SOL 81 17.631 12.881 6.710 1.00 0.00 H -ATOM 246 HW2 SOL 81 16.191 13.641 6.880 1.00 0.00 H -ATOM 247 OW SOL 82 13.901 5.750 0.780 1.00 0.00 O -ATOM 248 HW1 SOL 82 13.361 5.540 1.590 1.00 0.00 H -ATOM 249 HW2 SOL 82 14.811 5.340 0.870 1.00 0.00 H -ATOM 250 OW SOL 83 5.270 2.560 3.280 1.00 0.00 O -ATOM 251 HW1 SOL 83 5.540 1.970 2.530 1.00 0.00 H -ATOM 252 HW2 SOL 83 5.270 3.510 2.970 1.00 0.00 H -ATOM 253 OW SOL 84 17.541 12.231 15.881 1.00 0.00 O -ATOM 254 HW1 SOL 84 18.451 11.841 15.751 1.00 0.00 H -ATOM 255 HW2 SOL 84 17.621 13.191 16.121 1.00 0.00 H -ATOM 256 OW SOL 85 10.641 13.471 13.401 1.00 0.00 O -ATOM 257 HW1 SOL 85 9.841 13.241 13.951 1.00 0.00 H -ATOM 258 HW2 SOL 85 11.471 13.211 13.891 1.00 0.00 H -ATOM 259 OW SOL 86 11.111 11.951 11.001 1.00 0.00 O -ATOM 260 HW1 SOL 86 10.711 12.391 11.811 1.00 0.00 H -ATOM 261 HW2 SOL 86 10.701 12.321 10.171 1.00 0.00 H -ATOM 262 OW SOL 87 16.381 10.991 10.791 1.00 0.00 O -ATOM 263 HW1 SOL 87 16.431 11.801 11.381 1.00 0.00 H -ATOM 264 HW2 SOL 87 15.521 11.011 10.281 1.00 0.00 H -ATOM 265 OW SOL 88 9.150 0.890 14.021 1.00 0.00 O -ATOM 266 HW1 SOL 88 9.400 0.690 13.071 1.00 0.00 H -ATOM 267 HW2 SOL 88 9.870 1.450 14.441 1.00 0.00 H -ATOM 268 OW SOL 89 9.801 11.161 17.191 1.00 0.00 O -ATOM 269 HW1 SOL 89 8.811 11.221 17.291 1.00 0.00 H -ATOM 270 HW2 SOL 89 10.031 10.361 16.631 1.00 0.00 H -ATOM 271 OW SOL 90 7.050 10.501 3.680 1.00 0.00 O -ATOM 272 HW1 SOL 90 6.910 10.571 4.670 1.00 0.00 H -ATOM 273 HW2 SOL 90 7.890 9.991 3.500 1.00 0.00 H -ATOM 274 OW SOL 91 4.100 8.130 12.511 1.00 0.00 O -ATOM 275 HW1 SOL 91 4.960 8.250 13.011 1.00 0.00 H -ATOM 276 HW2 SOL 91 3.680 7.260 12.781 1.00 0.00 H -ATOM 277 OW SOL 92 12.741 3.860 12.621 1.00 0.00 O -ATOM 278 HW1 SOL 92 12.951 4.600 13.261 1.00 0.00 H -ATOM 279 HW2 SOL 92 11.851 4.030 12.191 1.00 0.00 H -ATOM 280 OW SOL 93 0.640 15.641 13.311 1.00 0.00 O -ATOM 281 HW1 SOL 93 0.180 16.461 12.971 1.00 0.00 H -ATOM 282 HW2 SOL 93 1.620 15.831 13.401 1.00 0.00 H -ATOM 283 OW SOL 94 3.670 11.001 5.010 1.00 0.00 O -ATOM 284 HW1 SOL 94 3.600 11.831 4.450 1.00 0.00 H -ATOM 285 HW2 SOL 94 3.710 10.201 4.410 1.00 0.00 H -ATOM 286 OW SOL 95 5.660 5.370 8.650 1.00 0.00 O -ATOM 287 HW1 SOL 95 5.780 6.030 7.910 1.00 0.00 H -ATOM 288 HW2 SOL 95 6.120 5.710 9.480 1.00 0.00 H -ATOM 289 OW SOL 96 12.521 13.481 3.880 1.00 0.00 O -ATOM 290 HW1 SOL 96 13.021 14.251 4.280 1.00 0.00 H -ATOM 291 HW2 SOL 96 11.571 13.501 4.200 1.00 0.00 H -ATOM 292 OW SOL 97 12.721 14.451 11.421 1.00 0.00 O -ATOM 293 HW1 SOL 97 13.191 14.581 12.291 1.00 0.00 H -ATOM 294 HW2 SOL 97 12.061 13.711 11.511 1.00 0.00 H -ATOM 295 OW SOL 98 15.821 6.390 4.720 1.00 0.00 O -ATOM 296 HW1 SOL 98 15.511 7.000 5.450 1.00 0.00 H -ATOM 297 HW2 SOL 98 16.321 6.910 4.030 1.00 0.00 H -ATOM 298 OW SOL 99 3.540 15.101 13.291 1.00 0.00 O -ATOM 299 HW1 SOL 99 3.330 14.661 12.421 1.00 0.00 H -ATOM 300 HW2 SOL 99 4.510 15.361 13.321 1.00 0.00 H -ATOM 301 OW SOL 100 4.020 7.510 15.981 1.00 0.00 O -ATOM 302 HW1 SOL 100 4.700 8.060 15.511 1.00 0.00 H -ATOM 303 HW2 SOL 100 4.420 6.630 16.251 1.00 0.00 H -ATOM 304 OW SOL 101 15.871 7.790 16.701 1.00 0.00 O -ATOM 305 HW1 SOL 101 14.951 8.170 16.651 1.00 0.00 H -ATOM 306 HW2 SOL 101 16.471 8.260 16.051 1.00 0.00 H -ATOM 307 OW SOL 102 10.131 1.050 17.701 1.00 0.00 O -ATOM 308 HW1 SOL 102 10.191 1.900 17.181 1.00 0.00 H -ATOM 309 HW2 SOL 102 10.451 0.290 17.131 1.00 0.00 H -ATOM 310 OW SOL 103 5.040 0.500 17.401 1.00 0.00 O -ATOM 311 HW1 SOL 103 4.620 -0.070 16.701 1.00 0.00 H -ATOM 312 HW2 SOL 103 4.380 1.190 17.721 1.00 0.00 H -ATOM 313 OW SOL 104 5.730 8.700 10.291 1.00 0.00 O -ATOM 314 HW1 SOL 104 6.170 9.590 10.201 1.00 0.00 H -ATOM 315 HW2 SOL 104 5.100 8.700 11.061 1.00 0.00 H -ATOM 316 OW SOL 105 13.601 8.620 10.451 1.00 0.00 O -ATOM 317 HW1 SOL 105 12.851 8.620 9.791 1.00 0.00 H -ATOM 318 HW2 SOL 105 13.971 7.700 10.541 1.00 0.00 H -ATOM 319 OW SOL 106 12.091 5.250 2.750 1.00 0.00 O -ATOM 320 HW1 SOL 106 12.221 4.410 3.290 1.00 0.00 H -ATOM 321 HW2 SOL 106 11.801 5.990 3.350 1.00 0.00 H -ATOM 322 OW SOL 107 0.370 13.101 12.821 1.00 0.00 O -ATOM 323 HW1 SOL 107 0.900 12.611 13.501 1.00 0.00 H -ATOM 324 HW2 SOL 107 0.590 14.081 12.871 1.00 0.00 H -ATOM 325 OW SOL 108 7.320 6.340 10.641 1.00 0.00 O -ATOM 326 HW1 SOL 108 7.910 6.080 9.881 1.00 0.00 H -ATOM 327 HW2 SOL 108 7.040 7.300 10.531 1.00 0.00 H -ATOM 328 OW SOL 109 17.281 9.351 18.541 1.00 0.00 O -ATOM 329 HW1 SOL 109 16.821 9.281 17.651 1.00 0.00 H -ATOM 330 HW2 SOL 109 16.661 9.791 19.201 1.00 0.00 H -ATOM 331 OW SOL 110 3.070 0.630 6.180 1.00 0.00 O -ATOM 332 HW1 SOL 110 2.960 1.570 6.510 1.00 0.00 H -ATOM 333 HW2 SOL 110 3.020 0.000 6.950 1.00 0.00 H -ATOM 334 OW SOL 111 16.221 3.670 3.740 1.00 0.00 O -ATOM 335 HW1 SOL 111 16.241 2.910 4.380 1.00 0.00 H -ATOM 336 HW2 SOL 111 15.741 4.440 4.140 1.00 0.00 H -ATOM 337 OW SOL 112 10.231 7.660 9.661 1.00 0.00 O -ATOM 338 HW1 SOL 112 10.381 7.870 10.621 1.00 0.00 H -ATOM 339 HW2 SOL 112 9.931 6.710 9.571 1.00 0.00 H -ATOM 340 OW SOL 113 9.801 15.731 17.001 1.00 0.00 O -ATOM 341 HW1 SOL 113 9.601 16.171 16.121 1.00 0.00 H -ATOM 342 HW2 SOL 113 10.191 14.821 16.841 1.00 0.00 H -ATOM 343 OW SOL 114 18.591 15.181 16.051 1.00 0.00 O -ATOM 344 HW1 SOL 114 18.731 15.451 15.101 1.00 0.00 H -ATOM 345 HW2 SOL 114 19.421 15.401 16.581 1.00 0.00 H -ATOM 346 OW SOL 115 3.500 8.980 18.041 1.00 0.00 O -ATOM 347 HW1 SOL 115 4.260 9.420 18.521 1.00 0.00 H -ATOM 348 HW2 SOL 115 3.850 8.510 17.221 1.00 0.00 H -ATOM 349 OW SOL 116 15.401 2.740 1.250 1.00 0.00 O -ATOM 350 HW1 SOL 116 14.791 1.990 1.480 1.00 0.00 H -ATOM 351 HW2 SOL 116 15.621 3.260 2.080 1.00 0.00 H -ATOM 352 OW SOL 117 13.031 8.380 0.420 1.00 0.00 O -ATOM 353 HW1 SOL 117 13.371 7.450 0.570 1.00 0.00 H -ATOM 354 HW2 SOL 117 13.211 8.650 -0.530 1.00 0.00 H -ATOM 355 OW SOL 118 10.681 13.331 8.490 1.00 0.00 O -ATOM 356 HW1 SOL 118 10.751 12.491 7.940 1.00 0.00 H -ATOM 357 HW2 SOL 118 11.301 14.021 8.130 1.00 0.00 H -ATOM 358 OW SOL 119 3.190 8.100 9.491 1.00 0.00 O -ATOM 359 HW1 SOL 119 4.120 8.460 9.541 1.00 0.00 H -ATOM 360 HW2 SOL 119 3.130 7.250 10.011 1.00 0.00 H -ATOM 361 OW SOL 120 3.390 5.090 10.061 1.00 0.00 O -ATOM 362 HW1 SOL 120 2.870 4.260 9.891 1.00 0.00 H -ATOM 363 HW2 SOL 120 4.160 5.140 9.421 1.00 0.00 H -ATOM 364 OW SOL 121 11.381 3.800 16.781 1.00 0.00 O -ATOM 365 HW1 SOL 121 10.931 4.430 17.421 1.00 0.00 H -ATOM 366 HW2 SOL 121 12.311 4.110 16.611 1.00 0.00 H -ATOM 367 OW SOL 122 11.601 2.070 14.771 1.00 0.00 O -ATOM 368 HW1 SOL 122 11.601 2.710 15.541 1.00 0.00 H -ATOM 369 HW2 SOL 122 11.881 2.550 13.941 1.00 0.00 H -ATOM 370 OW SOL 123 0.880 18.011 9.270 1.00 0.00 O -ATOM 371 HW1 SOL 123 0.460 17.151 9.000 1.00 0.00 H -ATOM 372 HW2 SOL 123 1.820 18.041 8.930 1.00 0.00 H -ATOM 373 OW SOL 124 5.040 15.681 9.100 1.00 0.00 O -ATOM 374 HW1 SOL 124 5.700 16.421 9.190 1.00 0.00 H -ATOM 375 HW2 SOL 124 5.480 14.891 8.680 1.00 0.00 H -ATOM 376 OW SOL 125 10.021 7.960 12.381 1.00 0.00 O -ATOM 377 HW1 SOL 125 10.431 7.640 13.241 1.00 0.00 H -ATOM 378 HW2 SOL 125 9.061 7.690 12.351 1.00 0.00 H -ATOM 379 OW SOL 126 0.400 5.440 11.141 1.00 0.00 O -ATOM 380 HW1 SOL 126 1.250 5.110 10.731 1.00 0.00 H -ATOM 381 HW2 SOL 126 0.530 5.590 12.121 1.00 0.00 H -ATOM 382 OW SOL 127 1.890 5.200 17.221 1.00 0.00 O -ATOM 383 HW1 SOL 127 2.480 4.800 16.521 1.00 0.00 H -ATOM 384 HW2 SOL 127 1.310 5.910 16.811 1.00 0.00 H -ATOM 385 OW SOL 128 13.691 9.501 16.601 1.00 0.00 O -ATOM 386 HW1 SOL 128 14.081 10.391 16.801 1.00 0.00 H -ATOM 387 HW2 SOL 128 13.791 9.301 15.631 1.00 0.00 H -ATOM 388 OW SOL 129 8.150 5.720 3.250 1.00 0.00 O -ATOM 389 HW1 SOL 129 8.220 4.830 2.790 1.00 0.00 H -ATOM 390 HW2 SOL 129 7.210 6.060 3.170 1.00 0.00 H -ATOM 391 OW SOL 130 16.571 6.040 12.061 1.00 0.00 O -ATOM 392 HW1 SOL 130 16.191 5.350 12.681 1.00 0.00 H -ATOM 393 HW2 SOL 130 17.391 5.680 11.621 1.00 0.00 H -ATOM 394 OW SOL 131 2.520 15.641 17.441 1.00 0.00 O -ATOM 395 HW1 SOL 131 2.220 16.211 18.201 1.00 0.00 H -ATOM 396 HW2 SOL 131 2.450 14.671 17.701 1.00 0.00 H -ATOM 397 OW SOL 132 6.710 4.640 12.691 1.00 0.00 O -ATOM 398 HW1 SOL 132 6.370 3.750 12.391 1.00 0.00 H -ATOM 399 HW2 SOL 132 6.970 5.180 11.891 1.00 0.00 H -ATOM 400 OW SOL 133 9.300 16.781 14.651 1.00 0.00 O -ATOM 401 HW1 SOL 133 9.060 16.601 13.701 1.00 0.00 H -ATOM 402 HW2 SOL 133 9.600 17.721 14.751 1.00 0.00 H -ATOM 403 OW SOL 134 4.730 5.000 1.910 1.00 0.00 O -ATOM 404 HW1 SOL 134 5.340 5.800 1.950 1.00 0.00 H -ATOM 405 HW2 SOL 134 3.780 5.310 1.980 1.00 0.00 H -ATOM 406 OW SOL 135 1.590 11.371 14.661 1.00 0.00 O -ATOM 407 HW1 SOL 135 1.810 10.761 15.421 1.00 0.00 H -ATOM 408 HW2 SOL 135 1.690 10.881 13.801 1.00 0.00 H -ATOM 409 OW SOL 136 13.471 10.591 12.341 1.00 0.00 O -ATOM 410 HW1 SOL 136 13.711 9.961 11.601 1.00 0.00 H -ATOM 411 HW2 SOL 136 12.571 10.991 12.161 1.00 0.00 H -ATOM 412 OW SOL 137 13.021 8.550 3.090 1.00 0.00 O -ATOM 413 HW1 SOL 137 12.161 8.240 3.510 1.00 0.00 H -ATOM 414 HW2 SOL 137 12.981 8.410 2.100 1.00 0.00 H -ATOM 415 OW SOL 138 17.591 17.471 11.541 1.00 0.00 O -ATOM 416 HW1 SOL 138 18.201 17.771 10.811 1.00 0.00 H -ATOM 417 HW2 SOL 138 17.211 16.581 11.321 1.00 0.00 H -ATOM 418 OW SOL 139 12.521 17.311 11.281 1.00 0.00 O -ATOM 419 HW1 SOL 139 13.361 17.361 10.741 1.00 0.00 H -ATOM 420 HW2 SOL 139 12.291 16.351 11.461 1.00 0.00 H -ATOM 421 OW SOL 140 0.830 12.581 10.221 1.00 0.00 O -ATOM 422 HW1 SOL 140 0.780 12.571 11.221 1.00 0.00 H -ATOM 423 HW2 SOL 140 0.000 12.171 9.841 1.00 0.00 H -ATOM 424 OW SOL 141 6.880 16.621 17.161 1.00 0.00 O -ATOM 425 HW1 SOL 141 6.320 17.431 17.251 1.00 0.00 H -ATOM 426 HW2 SOL 141 7.400 16.661 16.301 1.00 0.00 H -ATOM 427 OW SOL 142 9.030 0.860 1.330 1.00 0.00 O -ATOM 428 HW1 SOL 142 9.540 0.870 0.470 1.00 0.00 H -ATOM 429 HW2 SOL 142 9.590 0.440 2.040 1.00 0.00 H -ATOM 430 OW SOL 143 17.261 1.350 5.230 1.00 0.00 O -ATOM 431 HW1 SOL 143 17.991 1.180 4.560 1.00 0.00 H -ATOM 432 HW2 SOL 143 16.951 0.480 5.610 1.00 0.00 H -ATOM 433 OW SOL 144 13.881 15.731 4.770 1.00 0.00 O -ATOM 434 HW1 SOL 144 14.551 15.851 4.030 1.00 0.00 H -ATOM 435 HW2 SOL 144 13.481 16.621 5.000 1.00 0.00 H -ATOM 436 OW SOL 145 12.801 9.270 6.720 1.00 0.00 O -ATOM 437 HW1 SOL 145 13.401 8.460 6.740 1.00 0.00 H -ATOM 438 HW2 SOL 145 13.201 9.960 6.120 1.00 0.00 H -ATOM 439 OW SOL 146 8.300 12.731 14.221 1.00 0.00 O -ATOM 440 HW1 SOL 146 8.250 13.061 15.171 1.00 0.00 H -ATOM 441 HW2 SOL 146 7.440 12.921 13.761 1.00 0.00 H -ATOM 442 OW SOL 147 6.720 16.161 1.540 1.00 0.00 O -ATOM 443 HW1 SOL 147 6.810 16.261 0.550 1.00 0.00 H -ATOM 444 HW2 SOL 147 6.320 15.271 1.750 1.00 0.00 H -ATOM 445 OW SOL 148 16.501 17.201 13.941 1.00 0.00 O -ATOM 446 HW1 SOL 148 17.031 17.301 13.101 1.00 0.00 H -ATOM 447 HW2 SOL 148 16.231 18.101 14.281 1.00 0.00 H -ATOM 448 OW SOL 149 2.630 3.260 7.200 1.00 0.00 O -ATOM 449 HW1 SOL 149 1.840 3.770 6.860 1.00 0.00 H -ATOM 450 HW2 SOL 149 2.540 3.110 8.180 1.00 0.00 H -ATOM 451 OW SOL 150 11.941 16.121 0.310 1.00 0.00 O -ATOM 452 HW1 SOL 150 12.001 15.191 0.680 1.00 0.00 H -ATOM 453 HW2 SOL 150 11.351 16.121 -0.490 1.00 0.00 H -ATOM 454 OW SOL 151 8.220 10.021 13.721 1.00 0.00 O -ATOM 455 HW1 SOL 151 8.620 10.011 12.801 1.00 0.00 H -ATOM 456 HW2 SOL 151 8.320 10.941 14.121 1.00 0.00 H -ATOM 457 OW SOL 152 9.160 9.100 2.910 1.00 0.00 O -ATOM 458 HW1 SOL 152 9.790 9.480 2.230 1.00 0.00 H -ATOM 459 HW2 SOL 152 9.560 8.270 3.300 1.00 0.00 H -ATOM 460 OW SOL 153 15.041 16.071 0.440 1.00 0.00 O -ATOM 461 HW1 SOL 153 14.121 16.441 0.510 1.00 0.00 H -ATOM 462 HW2 SOL 153 15.421 16.271 -0.460 1.00 0.00 H -ATOM 463 OW SOL 154 3.720 12.881 14.901 1.00 0.00 O -ATOM 464 HW1 SOL 154 3.590 13.811 14.561 1.00 0.00 H -ATOM 465 HW2 SOL 154 2.880 12.361 14.771 1.00 0.00 H -ATOM 466 OW SOL 155 16.141 12.921 12.891 1.00 0.00 O -ATOM 467 HW1 SOL 155 16.741 12.951 13.691 1.00 0.00 H -ATOM 468 HW2 SOL 155 15.391 13.561 13.021 1.00 0.00 H -ATOM 469 OW SOL 156 10.391 10.981 6.960 1.00 0.00 O -ATOM 470 HW1 SOL 156 9.691 10.511 7.500 1.00 0.00 H -ATOM 471 HW2 SOL 156 10.981 10.301 6.530 1.00 0.00 H -ATOM 472 OW SOL 157 10.141 2.360 9.711 1.00 0.00 O -ATOM 473 HW1 SOL 157 10.061 2.000 8.781 1.00 0.00 H -ATOM 474 HW2 SOL 157 10.121 1.600 10.361 1.00 0.00 H -ATOM 475 OW SOL 158 5.900 14.871 4.910 1.00 0.00 O -ATOM 476 HW1 SOL 158 6.320 14.291 4.210 1.00 0.00 H -ATOM 477 HW2 SOL 158 5.460 15.661 4.470 1.00 0.00 H -ATOM 478 OW SOL 159 17.091 3.850 13.811 1.00 0.00 O -ATOM 479 HW1 SOL 159 17.821 4.540 13.851 1.00 0.00 H -ATOM 480 HW2 SOL 159 17.371 3.100 13.221 1.00 0.00 H -ATOM 481 OW SOL 160 2.550 13.481 2.900 1.00 0.00 O -ATOM 482 HW1 SOL 160 1.590 13.491 2.630 1.00 0.00 H -ATOM 483 HW2 SOL 160 2.670 14.011 3.740 1.00 0.00 H -ATOM 484 OW SOL 161 6.720 2.030 14.891 1.00 0.00 O -ATOM 485 HW1 SOL 161 7.620 1.870 14.491 1.00 0.00 H -ATOM 486 HW2 SOL 161 6.800 2.080 15.881 1.00 0.00 H -ATOM 487 OW SOL 162 14.401 8.560 13.981 1.00 0.00 O -ATOM 488 HW1 SOL 162 13.831 9.080 13.351 1.00 0.00 H -ATOM 489 HW2 SOL 162 15.361 8.680 13.741 1.00 0.00 H -ATOM 490 OW SOL 163 11.831 13.351 1.190 1.00 0.00 O -ATOM 491 HW1 SOL 163 10.841 13.241 1.210 1.00 0.00 H -ATOM 492 HW2 SOL 163 12.171 13.501 2.120 1.00 0.00 H -ATOM 493 OW SOL 164 6.130 8.420 14.311 1.00 0.00 O -ATOM 494 HW1 SOL 164 6.690 9.230 14.141 1.00 0.00 H -ATOM 495 HW2 SOL 164 6.720 7.620 14.341 1.00 0.00 H -ATOM 496 OW SOL 165 14.931 17.671 9.591 1.00 0.00 O -ATOM 497 HW1 SOL 165 15.261 18.311 8.901 1.00 0.00 H -ATOM 498 HW2 SOL 165 15.591 17.611 10.341 1.00 0.00 H -ATOM 499 OW SOL 166 7.160 5.650 17.081 1.00 0.00 O -ATOM 500 HW1 SOL 166 7.350 6.300 17.821 1.00 0.00 H -ATOM 501 HW2 SOL 166 7.760 4.850 17.171 1.00 0.00 H -ATOM 502 OW SOL 167 14.501 12.201 16.331 1.00 0.00 O -ATOM 503 HW1 SOL 167 14.411 12.101 17.321 1.00 0.00 H -ATOM 504 HW2 SOL 167 15.461 12.131 16.071 1.00 0.00 H -ATOM 505 OW SOL 168 3.900 17.411 15.601 1.00 0.00 O -ATOM 506 HW1 SOL 168 2.990 17.821 15.581 1.00 0.00 H -ATOM 507 HW2 SOL 168 3.830 16.471 15.921 1.00 0.00 H -ATOM 508 OW SOL 169 16.741 8.830 12.541 1.00 0.00 O -ATOM 509 HW1 SOL 169 16.471 7.940 12.171 1.00 0.00 H -ATOM 510 HW2 SOL 169 16.751 9.510 11.811 1.00 0.00 H -ATOM 511 OW SOL 170 12.251 3.250 4.490 1.00 0.00 O -ATOM 512 HW1 SOL 170 12.901 2.510 4.380 1.00 0.00 H -ATOM 513 HW2 SOL 170 12.451 3.750 5.330 1.00 0.00 H -ATOM 514 OW SOL 171 5.940 7.450 6.520 1.00 0.00 O -ATOM 515 HW1 SOL 171 6.440 8.300 6.330 1.00 0.00 H -ATOM 516 HW2 SOL 171 5.060 7.470 6.040 1.00 0.00 H -ATOM 517 OW SOL 172 17.771 3.420 16.421 1.00 0.00 O -ATOM 518 HW1 SOL 172 17.601 3.730 15.481 1.00 0.00 H -ATOM 519 HW2 SOL 172 16.931 3.050 16.801 1.00 0.00 H -ATOM 520 OW SOL 173 17.301 9.341 15.171 1.00 0.00 O -ATOM 521 HW1 SOL 173 17.681 10.251 15.321 1.00 0.00 H -ATOM 522 HW2 SOL 173 17.221 9.171 14.181 1.00 0.00 H -ATOM 523 OW SOL 174 8.590 13.741 0.160 1.00 0.00 O -ATOM 524 HW1 SOL 174 8.130 13.891 1.040 1.00 0.00 H -ATOM 525 HW2 SOL 174 9.030 14.591 -0.140 1.00 0.00 H -ATOM 526 OW SOL 175 6.610 17.901 9.531 1.00 0.00 O -ATOM 527 HW1 SOL 175 6.150 18.781 9.401 1.00 0.00 H -ATOM 528 HW2 SOL 175 7.600 18.021 9.461 1.00 0.00 H -ATOM 529 OW SOL 176 14.081 18.511 17.201 1.00 0.00 O -ATOM 530 HW1 SOL 176 13.121 18.401 16.931 1.00 0.00 H -ATOM 531 HW2 SOL 176 14.641 17.841 16.721 1.00 0.00 H -ATOM 532 OW SOL 177 8.590 9.561 8.610 1.00 0.00 O -ATOM 533 HW1 SOL 177 9.130 8.871 9.090 1.00 0.00 H -ATOM 534 HW2 SOL 177 8.270 10.251 9.270 1.00 0.00 H -ATOM 535 OW SOL 178 10.831 9.841 0.870 1.00 0.00 O -ATOM 536 HW1 SOL 178 10.601 10.371 0.050 1.00 0.00 H -ATOM 537 HW2 SOL 178 11.641 9.281 0.680 1.00 0.00 H -ATOM 538 OW SOL 179 18.611 15.691 8.510 1.00 0.00 O -ATOM 539 HW1 SOL 179 17.901 15.571 7.810 1.00 0.00 H -ATOM 540 HW2 SOL 179 18.621 14.901 9.110 1.00 0.00 H -ATOM 541 OW SOL 180 0.790 12.401 6.530 1.00 0.00 O -ATOM 542 HW1 SOL 180 0.780 11.931 7.410 1.00 0.00 H -ATOM 543 HW2 SOL 180 1.610 12.121 6.020 1.00 0.00 H -ATOM 544 OW SOL 181 6.720 13.911 16.241 1.00 0.00 O -ATOM 545 HW1 SOL 181 5.940 13.411 16.621 1.00 0.00 H -ATOM 546 HW2 SOL 181 6.690 14.861 16.551 1.00 0.00 H -ATOM 547 OW SOL 182 4.280 4.240 5.200 1.00 0.00 O -ATOM 548 HW1 SOL 182 4.580 3.520 4.580 1.00 0.00 H -ATOM 549 HW2 SOL 182 3.890 3.840 6.030 1.00 0.00 H -ATOM 550 OW SOL 183 17.051 14.871 11.041 1.00 0.00 O -ATOM 551 HW1 SOL 183 16.121 14.621 10.771 1.00 0.00 H -ATOM 552 HW2 SOL 183 17.311 14.371 11.861 1.00 0.00 H -ATOM 553 OW SOL 184 3.170 5.470 12.801 1.00 0.00 O -ATOM 554 HW1 SOL 184 3.550 4.880 13.521 1.00 0.00 H -ATOM 555 HW2 SOL 184 3.570 5.210 11.921 1.00 0.00 H -ATOM 556 OW SOL 185 8.120 15.861 6.870 1.00 0.00 O -ATOM 557 HW1 SOL 185 8.440 15.961 5.930 1.00 0.00 H -ATOM 558 HW2 SOL 185 7.330 15.241 6.890 1.00 0.00 H -ATOM 559 OW SOL 186 14.241 2.140 11.121 1.00 0.00 O -ATOM 560 HW1 SOL 186 14.761 1.490 11.671 1.00 0.00 H -ATOM 561 HW2 SOL 186 13.751 2.770 11.731 1.00 0.00 H -ATOM 562 OW SOL 187 10.011 0.340 11.541 1.00 0.00 O -ATOM 563 HW1 SOL 187 9.381 -0.380 11.231 1.00 0.00 H -ATOM 564 HW2 SOL 187 10.941 -0.020 11.541 1.00 0.00 H -ATOM 565 OW SOL 188 7.700 13.301 3.010 1.00 0.00 O -ATOM 566 HW1 SOL 188 7.240 12.431 3.180 1.00 0.00 H -ATOM 567 HW2 SOL 188 8.610 13.271 3.420 1.00 0.00 H -ATOM 568 OW SOL 189 6.180 15.671 12.841 1.00 0.00 O -ATOM 569 HW1 SOL 189 6.130 16.491 13.411 1.00 0.00 H -ATOM 570 HW2 SOL 189 7.070 15.641 12.391 1.00 0.00 H -ATOM 571 OW SOL 190 13.521 0.520 1.680 1.00 0.00 O -ATOM 572 HW1 SOL 190 13.871 0.110 0.840 1.00 0.00 H -ATOM 573 HW2 SOL 190 12.621 0.140 1.880 1.00 0.00 H -ATOM 574 OW SOL 191 13.001 4.530 6.910 1.00 0.00 O -ATOM 575 HW1 SOL 191 12.411 5.330 6.950 1.00 0.00 H -ATOM 576 HW2 SOL 191 13.151 4.180 7.840 1.00 0.00 H -ATOM 577 OW SOL 192 15.931 2.210 8.820 1.00 0.00 O -ATOM 578 HW1 SOL 192 15.091 2.200 9.360 1.00 0.00 H -ATOM 579 HW2 SOL 192 15.951 3.040 8.260 1.00 0.00 H -ATOM 580 OW SOL 193 0.390 10.771 3.000 1.00 0.00 O -ATOM 581 HW1 SOL 193 1.380 10.661 2.910 1.00 0.00 H -ATOM 582 HW2 SOL 193 -0.010 9.911 3.320 1.00 0.00 H -ATOM 583 OW SOL 194 8.750 16.461 3.370 1.00 0.00 O -ATOM 584 HW1 SOL 194 7.980 16.111 2.830 1.00 0.00 H -ATOM 585 HW2 SOL 194 8.430 17.171 3.990 1.00 0.00 H -ATOM 586 OW SOL 195 5.690 12.751 30.271 1.00 0.00 O -ATOM 587 HW1 SOL 195 4.760 12.681 29.901 1.00 0.00 H -ATOM 588 HW2 SOL 195 5.800 13.641 30.711 1.00 0.00 H -ATOM 589 OW SOL 196 15.551 15.111 25.651 1.00 0.00 O -ATOM 590 HW1 SOL 196 14.981 14.951 26.461 1.00 0.00 H -ATOM 591 HW2 SOL 196 14.961 15.211 24.851 1.00 0.00 H -ATOM 592 OW SOL 197 17.431 6.180 27.181 1.00 0.00 O -ATOM 593 HW1 SOL 197 17.761 7.120 27.181 1.00 0.00 H -ATOM 594 HW2 SOL 197 17.941 5.640 27.841 1.00 0.00 H -ATOM 595 OW SOL 198 11.351 7.030 25.791 1.00 0.00 O -ATOM 596 HW1 SOL 198 11.921 7.810 25.541 1.00 0.00 H -ATOM 597 HW2 SOL 198 10.751 7.290 26.551 1.00 0.00 H -ATOM 598 OW SOL 199 17.551 6.070 20.931 1.00 0.00 O -ATOM 599 HW1 SOL 199 17.431 5.940 19.941 1.00 0.00 H -ATOM 600 HW2 SOL 199 17.251 5.260 21.421 1.00 0.00 H -ATOM 601 OW SOL 200 7.680 11.441 28.851 1.00 0.00 O -ATOM 602 HW1 SOL 200 6.900 11.611 29.451 1.00 0.00 H -ATOM 603 HW2 SOL 200 8.020 12.311 28.491 1.00 0.00 H -ATOM 604 OW SOL 201 6.850 10.121 25.271 1.00 0.00 O -ATOM 605 HW1 SOL 201 7.540 9.961 25.971 1.00 0.00 H -ATOM 606 HW2 SOL 201 6.120 10.691 25.651 1.00 0.00 H -ATOM 607 OW SOL 202 2.400 10.911 27.481 1.00 0.00 O -ATOM 608 HW1 SOL 202 2.540 10.071 28.001 1.00 0.00 H -ATOM 609 HW2 SOL 202 1.850 11.551 28.031 1.00 0.00 H -ATOM 610 OW SOL 203 6.060 9.641 19.851 1.00 0.00 O -ATOM 611 HW1 SOL 203 6.130 10.481 19.311 1.00 0.00 H -ATOM 612 HW2 SOL 203 6.520 9.771 20.731 1.00 0.00 H -ATOM 613 OW SOL 204 1.220 6.430 24.251 1.00 0.00 O -ATOM 614 HW1 SOL 204 0.770 5.550 24.421 1.00 0.00 H -ATOM 615 HW2 SOL 204 1.210 6.970 25.091 1.00 0.00 H -ATOM 616 OW SOL 205 18.421 17.671 22.211 1.00 0.00 O -ATOM 617 HW1 SOL 205 18.961 17.381 23.011 1.00 0.00 H -ATOM 618 HW2 SOL 205 18.721 18.571 21.921 1.00 0.00 H -ATOM 619 OW SOL 206 16.891 9.220 24.741 1.00 0.00 O -ATOM 620 HW1 SOL 206 17.841 8.930 24.821 1.00 0.00 H -ATOM 621 HW2 SOL 206 16.811 9.870 23.991 1.00 0.00 H -ATOM 622 OW SOL 207 16.411 11.081 22.941 1.00 0.00 O -ATOM 623 HW1 SOL 207 17.271 11.101 22.421 1.00 0.00 H -ATOM 624 HW2 SOL 207 16.551 11.551 23.821 1.00 0.00 H -ATOM 625 OW SOL 208 6.130 13.651 25.881 1.00 0.00 O -ATOM 626 HW1 SOL 208 5.640 12.781 25.971 1.00 0.00 H -ATOM 627 HW2 SOL 208 5.900 14.081 25.011 1.00 0.00 H -ATOM 628 OW SOL 209 8.090 0.040 23.641 1.00 0.00 O -ATOM 629 HW1 SOL 209 8.490 0.950 23.551 1.00 0.00 H -ATOM 630 HW2 SOL 209 7.090 0.120 23.701 1.00 0.00 H -ATOM 631 OW SOL 210 1.970 9.761 0.031 1.00 0.00 O -ATOM 632 HW1 SOL 210 2.860 9.311 -0.109 1.00 0.00 H -ATOM 633 HW2 SOL 210 1.240 9.111 -0.159 1.00 0.00 H -ATOM 634 OW SOL 211 15.251 9.991 20.521 1.00 0.00 O -ATOM 635 HW1 SOL 211 14.621 9.231 20.651 1.00 0.00 H -ATOM 636 HW2 SOL 211 15.731 10.171 21.381 1.00 0.00 H -ATOM 637 OW SOL 212 14.661 14.171 28.151 1.00 0.00 O -ATOM 638 HW1 SOL 212 14.071 14.231 28.951 1.00 0.00 H -ATOM 639 HW2 SOL 212 14.511 13.291 27.691 1.00 0.00 H -ATOM 640 OW SOL 213 16.671 17.141 24.341 1.00 0.00 O -ATOM 641 HW1 SOL 213 16.261 16.911 23.461 1.00 0.00 H -ATOM 642 HW2 SOL 213 16.491 16.401 24.991 1.00 0.00 H -ATOM 643 OW SOL 214 5.980 7.290 21.321 1.00 0.00 O -ATOM 644 HW1 SOL 214 6.220 7.980 20.641 1.00 0.00 H -ATOM 645 HW2 SOL 214 5.200 7.620 21.861 1.00 0.00 H -ATOM 646 OW SOL 215 12.811 3.450 28.061 1.00 0.00 O -ATOM 647 HW1 SOL 215 11.951 2.950 27.931 1.00 0.00 H -ATOM 648 HW2 SOL 215 13.431 2.910 28.621 1.00 0.00 H -ATOM 649 OW SOL 216 15.761 16.621 21.691 1.00 0.00 O -ATOM 650 HW1 SOL 216 16.651 17.081 21.721 1.00 0.00 H -ATOM 651 HW2 SOL 216 15.551 16.381 20.741 1.00 0.00 H -ATOM 652 OW SOL 217 10.411 7.010 22.911 1.00 0.00 O -ATOM 653 HW1 SOL 217 10.671 6.970 23.871 1.00 0.00 H -ATOM 654 HW2 SOL 217 9.561 6.500 22.771 1.00 0.00 H -ATOM 655 OW SOL 218 8.650 3.480 20.571 1.00 0.00 O -ATOM 656 HW1 SOL 218 9.240 4.110 20.081 1.00 0.00 H -ATOM 657 HW2 SOL 218 8.840 2.540 20.281 1.00 0.00 H -ATOM 658 OW SOL 219 13.621 11.441 24.071 1.00 0.00 O -ATOM 659 HW1 SOL 219 14.451 11.151 23.591 1.00 0.00 H -ATOM 660 HW2 SOL 219 13.131 12.111 23.511 1.00 0.00 H -ATOM 661 OW SOL 220 5.500 1.960 27.471 1.00 0.00 O -ATOM 662 HW1 SOL 220 5.450 1.910 28.471 1.00 0.00 H -ATOM 663 HW2 SOL 220 5.520 2.920 27.181 1.00 0.00 H -ATOM 664 OW SOL 221 10.081 14.561 23.391 1.00 0.00 O -ATOM 665 HW1 SOL 221 9.621 15.281 22.871 1.00 0.00 H -ATOM 666 HW2 SOL 221 10.041 14.761 24.371 1.00 0.00 H -ATOM 667 OW SOL 222 3.510 18.011 27.151 1.00 0.00 O -ATOM 668 HW1 SOL 222 4.010 17.151 27.211 1.00 0.00 H -ATOM 669 HW2 SOL 222 4.160 18.781 27.121 1.00 0.00 H -ATOM 670 OW SOL 223 17.951 10.661 27.351 1.00 0.00 O -ATOM 671 HW1 SOL 223 17.331 10.511 26.591 1.00 0.00 H -ATOM 672 HW2 SOL 223 17.431 10.771 28.201 1.00 0.00 H -ATOM 673 OW SOL 224 3.210 9.431 21.041 1.00 0.00 O -ATOM 674 HW1 SOL 224 4.030 9.821 20.621 1.00 0.00 H -ATOM 675 HW2 SOL 224 2.940 8.611 20.551 1.00 0.00 H -ATOM 676 OW SOL 225 14.581 7.350 25.901 1.00 0.00 O -ATOM 677 HW1 SOL 225 14.531 6.700 26.651 1.00 0.00 H -ATOM 678 HW2 SOL 225 15.381 7.940 26.031 1.00 0.00 H -ATOM 679 OW SOL 226 11.111 17.761 20.991 1.00 0.00 O -ATOM 680 HW1 SOL 226 10.511 17.141 21.491 1.00 0.00 H -ATOM 681 HW2 SOL 226 11.421 17.321 20.141 1.00 0.00 H -ATOM 682 OW SOL 227 16.321 13.771 19.431 1.00 0.00 O -ATOM 683 HW1 SOL 227 16.001 14.711 19.331 1.00 0.00 H -ATOM 684 HW2 SOL 227 15.561 13.141 19.311 1.00 0.00 H -ATOM 685 OW SOL 228 4.640 17.431 21.851 1.00 0.00 O -ATOM 686 HW1 SOL 228 4.970 17.821 22.711 1.00 0.00 H -ATOM 687 HW2 SOL 228 5.400 17.361 21.201 1.00 0.00 H -ATOM 688 OW SOL 229 14.001 1.070 22.881 1.00 0.00 O -ATOM 689 HW1 SOL 229 13.761 0.700 21.981 1.00 0.00 H -ATOM 690 HW2 SOL 229 14.991 1.230 22.921 1.00 0.00 H -ATOM 691 OW SOL 230 2.490 17.851 31.031 1.00 0.00 O -ATOM 692 HW1 SOL 230 3.060 17.201 31.531 1.00 0.00 H -ATOM 693 HW2 SOL 230 2.330 17.521 30.101 1.00 0.00 H -ATOM 694 OW SOL 231 9.401 16.981 27.661 1.00 0.00 O -ATOM 695 HW1 SOL 231 10.201 16.411 27.871 1.00 0.00 H -ATOM 696 HW2 SOL 231 8.911 16.581 26.891 1.00 0.00 H -ATOM 697 OW SOL 232 3.820 7.000 23.421 1.00 0.00 O -ATOM 698 HW1 SOL 232 4.270 6.100 23.391 1.00 0.00 H -ATOM 699 HW2 SOL 232 2.880 6.890 23.751 1.00 0.00 H -ATOM 700 OW SOL 233 6.140 1.220 19.791 1.00 0.00 O -ATOM 701 HW1 SOL 233 7.120 1.000 19.861 1.00 0.00 H -ATOM 702 HW2 SOL 233 5.830 1.050 18.861 1.00 0.00 H -ATOM 703 OW SOL 234 8.030 14.021 27.861 1.00 0.00 O -ATOM 704 HW1 SOL 234 8.930 14.161 27.441 1.00 0.00 H -ATOM 705 HW2 SOL 234 7.320 14.041 27.151 1.00 0.00 H -ATOM 706 OW SOL 235 9.220 5.030 27.611 1.00 0.00 O -ATOM 707 HW1 SOL 235 8.970 4.940 26.651 1.00 0.00 H -ATOM 708 HW2 SOL 235 9.700 4.210 27.921 1.00 0.00 H -ATOM 709 OW SOL 236 5.390 0.640 23.741 1.00 0.00 O -ATOM 710 HW1 SOL 236 4.580 0.650 24.321 1.00 0.00 H -ATOM 711 HW2 SOL 236 5.420 1.470 23.191 1.00 0.00 H -ATOM 712 OW SOL 237 14.341 11.881 19.031 1.00 0.00 O -ATOM 713 HW1 SOL 237 14.661 11.121 19.601 1.00 0.00 H -ATOM 714 HW2 SOL 237 13.421 12.151 19.331 1.00 0.00 H -ATOM 715 OW SOL 238 2.970 0.350 20.331 1.00 0.00 O -ATOM 716 HW1 SOL 238 3.460 1.190 20.121 1.00 0.00 H -ATOM 717 HW2 SOL 238 3.590 -0.300 20.781 1.00 0.00 H -ATOM 718 OW SOL 239 9.351 2.360 23.421 1.00 0.00 O -ATOM 719 HW1 SOL 239 8.871 2.770 22.641 1.00 0.00 H -ATOM 720 HW2 SOL 239 10.341 2.340 23.231 1.00 0.00 H -ATOM 721 OW SOL 240 12.271 15.701 26.551 1.00 0.00 O -ATOM 722 HW1 SOL 240 12.481 16.441 25.901 1.00 0.00 H -ATOM 723 HW2 SOL 240 12.951 15.701 27.281 1.00 0.00 H -ATOM 724 OW SOL 241 4.590 11.521 26.031 1.00 0.00 O -ATOM 725 HW1 SOL 241 3.880 11.251 26.681 1.00 0.00 H -ATOM 726 HW2 SOL 241 4.330 11.241 25.101 1.00 0.00 H -ATOM 727 OW SOL 242 12.711 17.971 24.531 1.00 0.00 O -ATOM 728 HW1 SOL 242 13.151 18.611 23.891 1.00 0.00 H -ATOM 729 HW2 SOL 242 12.211 18.491 25.231 1.00 0.00 H -ATOM 730 OW SOL 243 10.321 5.490 18.781 1.00 0.00 O -ATOM 731 HW1 SOL 243 9.911 6.310 18.391 1.00 0.00 H -ATOM 732 HW2 SOL 243 10.961 5.750 19.511 1.00 0.00 H -ATOM 733 OW SOL 244 8.660 4.540 25.041 1.00 0.00 O -ATOM 734 HW1 SOL 244 8.340 5.260 24.421 1.00 0.00 H -ATOM 735 HW2 SOL 244 8.900 3.730 24.511 1.00 0.00 H -ATOM 736 OW SOL 245 10.171 0.390 26.151 1.00 0.00 O -ATOM 737 HW1 SOL 245 9.451 0.440 25.461 1.00 0.00 H -ATOM 738 HW2 SOL 245 9.931 -0.300 26.841 1.00 0.00 H -ATOM 739 OW SOL 246 14.291 11.731 27.291 1.00 0.00 O -ATOM 740 HW1 SOL 246 13.741 10.891 27.221 1.00 0.00 H -ATOM 741 HW2 SOL 246 14.551 12.021 26.371 1.00 0.00 H -ATOM 742 OW SOL 247 14.661 5.900 28.541 1.00 0.00 O -ATOM 743 HW1 SOL 247 14.361 4.950 28.611 1.00 0.00 H -ATOM 744 HW2 SOL 247 15.391 6.060 29.201 1.00 0.00 H -ATOM 745 OW SOL 248 18.571 8.330 22.391 1.00 0.00 O -ATOM 746 HW1 SOL 248 18.991 7.690 23.031 1.00 0.00 H -ATOM 747 HW2 SOL 248 18.191 7.820 21.611 1.00 0.00 H -ATOM 748 OW SOL 249 4.880 13.851 20.361 1.00 0.00 O -ATOM 749 HW1 SOL 249 4.010 13.701 20.831 1.00 0.00 H -ATOM 750 HW2 SOL 249 4.710 14.111 19.411 1.00 0.00 H -ATOM 751 OW SOL 250 16.641 12.801 25.191 1.00 0.00 O -ATOM 752 HW1 SOL 250 17.631 12.881 25.331 1.00 0.00 H -ATOM 753 HW2 SOL 250 16.191 13.641 25.501 1.00 0.00 H -ATOM 754 OW SOL 251 13.901 5.750 19.401 1.00 0.00 O -ATOM 755 HW1 SOL 251 13.361 5.540 20.211 1.00 0.00 H -ATOM 756 HW2 SOL 251 14.811 5.340 19.491 1.00 0.00 H -ATOM 757 OW SOL 252 5.270 2.560 21.901 1.00 0.00 O -ATOM 758 HW1 SOL 252 5.540 1.970 21.151 1.00 0.00 H -ATOM 759 HW2 SOL 252 5.270 3.510 21.591 1.00 0.00 H -ATOM 760 OW SOL 253 11.111 11.951 29.621 1.00 0.00 O -ATOM 761 HW1 SOL 253 10.711 12.391 30.431 1.00 0.00 H -ATOM 762 HW2 SOL 253 10.701 12.321 28.791 1.00 0.00 H -ATOM 763 OW SOL 254 16.381 10.991 29.411 1.00 0.00 O -ATOM 764 HW1 SOL 254 16.431 11.801 30.001 1.00 0.00 H -ATOM 765 HW2 SOL 254 15.521 11.011 28.901 1.00 0.00 H -ATOM 766 OW SOL 255 7.050 10.501 22.301 1.00 0.00 O -ATOM 767 HW1 SOL 255 6.910 10.571 23.291 1.00 0.00 H -ATOM 768 HW2 SOL 255 7.890 9.991 22.121 1.00 0.00 H -ATOM 769 OW SOL 256 4.100 8.130 31.131 1.00 0.00 O -ATOM 770 HW1 SOL 256 4.960 8.250 31.631 1.00 0.00 H -ATOM 771 HW2 SOL 256 3.680 7.260 31.401 1.00 0.00 H -ATOM 772 OW SOL 257 3.670 11.001 23.631 1.00 0.00 O -ATOM 773 HW1 SOL 257 3.600 11.831 23.071 1.00 0.00 H -ATOM 774 HW2 SOL 257 3.710 10.201 23.031 1.00 0.00 H -ATOM 775 OW SOL 258 5.660 5.370 27.271 1.00 0.00 O -ATOM 776 HW1 SOL 258 5.780 6.030 26.531 1.00 0.00 H -ATOM 777 HW2 SOL 258 6.120 5.710 28.101 1.00 0.00 H -ATOM 778 OW SOL 259 12.521 13.481 22.501 1.00 0.00 O -ATOM 779 HW1 SOL 259 13.021 14.251 22.901 1.00 0.00 H -ATOM 780 HW2 SOL 259 11.571 13.501 22.821 1.00 0.00 H -ATOM 781 OW SOL 260 12.721 14.451 30.041 1.00 0.00 O -ATOM 782 HW1 SOL 260 13.191 14.581 30.911 1.00 0.00 H -ATOM 783 HW2 SOL 260 12.061 13.711 30.131 1.00 0.00 H -ATOM 784 OW SOL 261 15.821 6.390 23.341 1.00 0.00 O -ATOM 785 HW1 SOL 261 15.511 7.000 24.071 1.00 0.00 H -ATOM 786 HW2 SOL 261 16.321 6.910 22.651 1.00 0.00 H -ATOM 787 OW SOL 262 5.730 8.700 28.911 1.00 0.00 O -ATOM 788 HW1 SOL 262 6.170 9.590 28.821 1.00 0.00 H -ATOM 789 HW2 SOL 262 5.100 8.700 29.681 1.00 0.00 H -ATOM 790 OW SOL 263 13.601 8.620 29.071 1.00 0.00 O -ATOM 791 HW1 SOL 263 12.851 8.620 28.411 1.00 0.00 H -ATOM 792 HW2 SOL 263 13.971 7.700 29.161 1.00 0.00 H -ATOM 793 OW SOL 264 12.091 5.250 21.371 1.00 0.00 O -ATOM 794 HW1 SOL 264 12.221 4.410 21.911 1.00 0.00 H -ATOM 795 HW2 SOL 264 11.801 5.990 21.971 1.00 0.00 H -ATOM 796 OW SOL 265 7.320 6.340 29.261 1.00 0.00 O -ATOM 797 HW1 SOL 265 7.910 6.080 28.501 1.00 0.00 H -ATOM 798 HW2 SOL 265 7.040 7.300 29.151 1.00 0.00 H -ATOM 799 OW SOL 266 3.070 0.630 24.801 1.00 0.00 O -ATOM 800 HW1 SOL 266 2.960 1.570 25.131 1.00 0.00 H -ATOM 801 HW2 SOL 266 3.020 0.000 25.571 1.00 0.00 H -ATOM 802 OW SOL 267 16.221 3.670 22.361 1.00 0.00 O -ATOM 803 HW1 SOL 267 16.241 2.910 23.001 1.00 0.00 H -ATOM 804 HW2 SOL 267 15.741 4.440 22.761 1.00 0.00 H -ATOM 805 OW SOL 268 10.231 7.660 28.281 1.00 0.00 O -ATOM 806 HW1 SOL 268 10.381 7.870 29.241 1.00 0.00 H -ATOM 807 HW2 SOL 268 9.931 6.710 28.191 1.00 0.00 H -ATOM 808 OW SOL 269 15.401 2.740 19.871 1.00 0.00 O -ATOM 809 HW1 SOL 269 14.791 1.990 20.101 1.00 0.00 H -ATOM 810 HW2 SOL 269 15.621 3.260 20.701 1.00 0.00 H -ATOM 811 OW SOL 270 13.031 8.380 19.041 1.00 0.00 O -ATOM 812 HW1 SOL 270 13.371 7.450 19.191 1.00 0.00 H -ATOM 813 HW2 SOL 270 13.211 8.650 18.091 1.00 0.00 H -ATOM 814 OW SOL 271 10.681 13.331 27.111 1.00 0.00 O -ATOM 815 HW1 SOL 271 10.751 12.491 26.561 1.00 0.00 H -ATOM 816 HW2 SOL 271 11.301 14.021 26.751 1.00 0.00 H -ATOM 817 OW SOL 272 3.190 8.100 28.111 1.00 0.00 O -ATOM 818 HW1 SOL 272 4.120 8.460 28.161 1.00 0.00 H -ATOM 819 HW2 SOL 272 3.130 7.250 28.631 1.00 0.00 H -ATOM 820 OW SOL 273 3.390 5.090 28.681 1.00 0.00 O -ATOM 821 HW1 SOL 273 2.870 4.260 28.511 1.00 0.00 H -ATOM 822 HW2 SOL 273 4.160 5.140 28.041 1.00 0.00 H -ATOM 823 OW SOL 274 0.880 18.011 27.891 1.00 0.00 O -ATOM 824 HW1 SOL 274 0.460 17.151 27.621 1.00 0.00 H -ATOM 825 HW2 SOL 274 1.820 18.041 27.551 1.00 0.00 H -ATOM 826 OW SOL 275 5.040 15.681 27.721 1.00 0.00 O -ATOM 827 HW1 SOL 275 5.700 16.421 27.811 1.00 0.00 H -ATOM 828 HW2 SOL 275 5.480 14.891 27.301 1.00 0.00 H -ATOM 829 OW SOL 276 10.021 7.960 31.001 1.00 0.00 O -ATOM 830 HW1 SOL 276 10.431 7.640 31.861 1.00 0.00 H -ATOM 831 HW2 SOL 276 9.061 7.690 30.971 1.00 0.00 H -ATOM 832 OW SOL 277 0.400 5.440 29.761 1.00 0.00 O -ATOM 833 HW1 SOL 277 1.250 5.110 29.351 1.00 0.00 H -ATOM 834 HW2 SOL 277 0.530 5.590 30.741 1.00 0.00 H -ATOM 835 OW SOL 278 8.150 5.720 21.871 1.00 0.00 O -ATOM 836 HW1 SOL 278 8.220 4.830 21.411 1.00 0.00 H -ATOM 837 HW2 SOL 278 7.210 6.060 21.791 1.00 0.00 H -ATOM 838 OW SOL 279 16.571 6.040 30.681 1.00 0.00 O -ATOM 839 HW1 SOL 279 16.191 5.350 31.301 1.00 0.00 H -ATOM 840 HW2 SOL 279 17.391 5.680 30.241 1.00 0.00 H -ATOM 841 OW SOL 280 6.710 4.640 0.081 1.00 0.00 O -ATOM 842 HW1 SOL 280 6.370 3.750 -0.219 1.00 0.00 H -ATOM 843 HW2 SOL 280 6.970 5.180 -0.719 1.00 0.00 H -ATOM 844 OW SOL 281 4.730 5.000 20.531 1.00 0.00 O -ATOM 845 HW1 SOL 281 5.340 5.800 20.571 1.00 0.00 H -ATOM 846 HW2 SOL 281 3.780 5.310 20.601 1.00 0.00 H -ATOM 847 OW SOL 282 13.021 8.550 21.711 1.00 0.00 O -ATOM 848 HW1 SOL 282 12.161 8.240 22.131 1.00 0.00 H -ATOM 849 HW2 SOL 282 12.981 8.410 20.721 1.00 0.00 H -ATOM 850 OW SOL 283 17.591 17.471 30.161 1.00 0.00 O -ATOM 851 HW1 SOL 283 18.201 17.771 29.431 1.00 0.00 H -ATOM 852 HW2 SOL 283 17.211 16.581 29.941 1.00 0.00 H -ATOM 853 OW SOL 284 0.830 12.581 28.841 1.00 0.00 O -ATOM 854 HW1 SOL 284 0.780 12.571 29.841 1.00 0.00 H -ATOM 855 HW2 SOL 284 0.000 12.171 28.461 1.00 0.00 H -ATOM 856 OW SOL 285 17.261 1.350 23.851 1.00 0.00 O -ATOM 857 HW1 SOL 285 17.991 1.180 23.181 1.00 0.00 H -ATOM 858 HW2 SOL 285 16.951 0.480 24.231 1.00 0.00 H -ATOM 859 OW SOL 286 13.881 15.731 23.391 1.00 0.00 O -ATOM 860 HW1 SOL 286 14.551 15.851 22.651 1.00 0.00 H -ATOM 861 HW2 SOL 286 13.481 16.621 23.621 1.00 0.00 H -ATOM 862 OW SOL 287 12.801 9.270 25.341 1.00 0.00 O -ATOM 863 HW1 SOL 287 13.401 8.460 25.361 1.00 0.00 H -ATOM 864 HW2 SOL 287 13.201 9.960 24.741 1.00 0.00 H -ATOM 865 OW SOL 288 6.720 16.161 20.161 1.00 0.00 O -ATOM 866 HW1 SOL 288 6.810 16.261 19.171 1.00 0.00 H -ATOM 867 HW2 SOL 288 6.320 15.271 20.371 1.00 0.00 H -ATOM 868 OW SOL 289 2.630 3.260 25.821 1.00 0.00 O -ATOM 869 HW1 SOL 289 1.840 3.770 25.481 1.00 0.00 H -ATOM 870 HW2 SOL 289 2.540 3.110 26.801 1.00 0.00 H -ATOM 871 OW SOL 290 11.941 16.121 18.931 1.00 0.00 O -ATOM 872 HW1 SOL 290 12.001 15.191 19.301 1.00 0.00 H -ATOM 873 HW2 SOL 290 11.351 16.121 18.131 1.00 0.00 H -ATOM 874 OW SOL 291 8.220 10.021 1.111 1.00 0.00 O -ATOM 875 HW1 SOL 291 8.620 10.011 0.191 1.00 0.00 H -ATOM 876 HW2 SOL 291 8.320 10.941 1.511 1.00 0.00 H -ATOM 877 OW SOL 292 9.160 9.100 21.531 1.00 0.00 O -ATOM 878 HW1 SOL 292 9.790 9.480 20.851 1.00 0.00 H -ATOM 879 HW2 SOL 292 9.560 8.270 21.921 1.00 0.00 H -ATOM 880 OW SOL 293 15.041 16.071 19.061 1.00 0.00 O -ATOM 881 HW1 SOL 293 14.121 16.441 19.131 1.00 0.00 H -ATOM 882 HW2 SOL 293 15.421 16.271 18.161 1.00 0.00 H -ATOM 883 OW SOL 294 10.391 10.981 25.581 1.00 0.00 O -ATOM 884 HW1 SOL 294 9.691 10.511 26.121 1.00 0.00 H -ATOM 885 HW2 SOL 294 10.981 10.301 25.151 1.00 0.00 H -ATOM 886 OW SOL 295 10.141 2.360 28.331 1.00 0.00 O -ATOM 887 HW1 SOL 295 10.061 2.000 27.401 1.00 0.00 H -ATOM 888 HW2 SOL 295 10.121 1.600 28.981 1.00 0.00 H -ATOM 889 OW SOL 296 5.900 14.871 23.531 1.00 0.00 O -ATOM 890 HW1 SOL 296 6.320 14.291 22.831 1.00 0.00 H -ATOM 891 HW2 SOL 296 5.460 15.661 23.091 1.00 0.00 H -ATOM 892 OW SOL 297 17.091 3.850 1.201 1.00 0.00 O -ATOM 893 HW1 SOL 297 17.821 4.540 1.241 1.00 0.00 H -ATOM 894 HW2 SOL 297 17.371 3.100 0.611 1.00 0.00 H -ATOM 895 OW SOL 298 2.550 13.481 21.521 1.00 0.00 O -ATOM 896 HW1 SOL 298 1.590 13.491 21.251 1.00 0.00 H -ATOM 897 HW2 SOL 298 2.670 14.011 22.361 1.00 0.00 H -ATOM 898 OW SOL 299 0.750 3.450 18.951 1.00 0.00 O -ATOM 899 HW1 SOL 299 -0.170 3.170 18.661 1.00 0.00 H -ATOM 900 HW2 SOL 299 1.060 4.220 18.391 1.00 0.00 H -ATOM 901 OW SOL 300 11.831 13.351 19.811 1.00 0.00 O -ATOM 902 HW1 SOL 300 10.841 13.241 19.831 1.00 0.00 H -ATOM 903 HW2 SOL 300 12.171 13.501 20.741 1.00 0.00 H -ATOM 904 OW SOL 301 14.931 17.671 28.211 1.00 0.00 O -ATOM 905 HW1 SOL 301 15.261 18.311 27.521 1.00 0.00 H -ATOM 906 HW2 SOL 301 15.591 17.611 28.961 1.00 0.00 H -ATOM 907 OW SOL 302 16.741 8.830 31.161 1.00 0.00 O -ATOM 908 HW1 SOL 302 16.471 7.940 30.791 1.00 0.00 H -ATOM 909 HW2 SOL 302 16.751 9.510 30.431 1.00 0.00 H -ATOM 910 OW SOL 303 12.251 3.250 23.111 1.00 0.00 O -ATOM 911 HW1 SOL 303 12.901 2.510 23.001 1.00 0.00 H -ATOM 912 HW2 SOL 303 12.451 3.750 23.951 1.00 0.00 H -ATOM 913 OW SOL 304 5.940 7.450 25.141 1.00 0.00 O -ATOM 914 HW1 SOL 304 6.440 8.300 24.951 1.00 0.00 H -ATOM 915 HW2 SOL 304 5.060 7.470 24.661 1.00 0.00 H -ATOM 916 OW SOL 305 8.590 13.741 18.781 1.00 0.00 O -ATOM 917 HW1 SOL 305 8.130 13.891 19.661 1.00 0.00 H -ATOM 918 HW2 SOL 305 9.030 14.591 18.481 1.00 0.00 H -ATOM 919 OW SOL 306 6.610 17.901 28.151 1.00 0.00 O -ATOM 920 HW1 SOL 306 6.150 18.781 28.021 1.00 0.00 H -ATOM 921 HW2 SOL 306 7.600 18.021 28.081 1.00 0.00 H -ATOM 922 OW SOL 307 8.590 9.561 27.231 1.00 0.00 O -ATOM 923 HW1 SOL 307 9.130 8.871 27.711 1.00 0.00 H -ATOM 924 HW2 SOL 307 8.270 10.251 27.891 1.00 0.00 H -ATOM 925 OW SOL 308 10.831 9.841 19.491 1.00 0.00 O -ATOM 926 HW1 SOL 308 10.601 10.371 18.671 1.00 0.00 H -ATOM 927 HW2 SOL 308 11.641 9.281 19.301 1.00 0.00 H -ATOM 928 OW SOL 309 18.611 15.691 27.131 1.00 0.00 O -ATOM 929 HW1 SOL 309 17.901 15.571 26.431 1.00 0.00 H -ATOM 930 HW2 SOL 309 18.621 14.901 27.731 1.00 0.00 H -ATOM 931 OW SOL 310 0.790 12.401 25.151 1.00 0.00 O -ATOM 932 HW1 SOL 310 0.780 11.931 26.031 1.00 0.00 H -ATOM 933 HW2 SOL 310 1.610 12.121 24.641 1.00 0.00 H -ATOM 934 OW SOL 311 4.280 4.240 23.821 1.00 0.00 O -ATOM 935 HW1 SOL 311 4.580 3.520 23.201 1.00 0.00 H -ATOM 936 HW2 SOL 311 3.890 3.840 24.651 1.00 0.00 H -ATOM 937 OW SOL 312 17.051 14.871 29.661 1.00 0.00 O -ATOM 938 HW1 SOL 312 16.121 14.621 29.391 1.00 0.00 H -ATOM 939 HW2 SOL 312 17.311 14.371 30.481 1.00 0.00 H -ATOM 940 OW SOL 313 8.120 15.861 25.491 1.00 0.00 O -ATOM 941 HW1 SOL 313 8.440 15.961 24.551 1.00 0.00 H -ATOM 942 HW2 SOL 313 7.330 15.241 25.511 1.00 0.00 H -ATOM 943 OW SOL 314 14.241 2.140 29.741 1.00 0.00 O -ATOM 944 HW1 SOL 314 14.761 1.490 30.291 1.00 0.00 H -ATOM 945 HW2 SOL 314 13.751 2.770 30.351 1.00 0.00 H -ATOM 946 OW SOL 315 10.011 0.340 30.161 1.00 0.00 O -ATOM 947 HW1 SOL 315 9.381 -0.380 29.851 1.00 0.00 H -ATOM 948 HW2 SOL 315 10.941 -0.020 30.161 1.00 0.00 H -ATOM 949 OW SOL 316 7.700 13.301 21.631 1.00 0.00 O -ATOM 950 HW1 SOL 316 7.240 12.431 21.801 1.00 0.00 H -ATOM 951 HW2 SOL 316 8.610 13.271 22.041 1.00 0.00 H -ATOM 952 OW SOL 317 13.521 0.520 20.301 1.00 0.00 O -ATOM 953 HW1 SOL 317 13.871 0.110 19.461 1.00 0.00 H -ATOM 954 HW2 SOL 317 12.621 0.140 20.501 1.00 0.00 H -ATOM 955 OW SOL 318 13.001 4.530 25.531 1.00 0.00 O -ATOM 956 HW1 SOL 318 12.411 5.330 25.571 1.00 0.00 H -ATOM 957 HW2 SOL 318 13.151 4.180 26.461 1.00 0.00 H -ATOM 958 OW SOL 319 15.931 2.210 27.441 1.00 0.00 O -ATOM 959 HW1 SOL 319 15.091 2.200 27.981 1.00 0.00 H -ATOM 960 HW2 SOL 319 15.951 3.040 26.881 1.00 0.00 H -ATOM 961 OW SOL 320 0.390 10.771 21.621 1.00 0.00 O -ATOM 962 HW1 SOL 320 1.380 10.661 21.531 1.00 0.00 H -ATOM 963 HW2 SOL 320 -0.010 9.911 21.941 1.00 0.00 H -ATOM 964 OW SOL 321 8.750 16.461 21.991 1.00 0.00 O -ATOM 965 HW1 SOL 321 7.980 16.111 21.451 1.00 0.00 H -ATOM 966 HW2 SOL 321 8.430 17.171 22.611 1.00 0.00 H -ATOM 967 OW SOL 322 17.431 24.801 8.560 1.00 0.00 O -ATOM 968 HW1 SOL 322 17.761 25.741 8.560 1.00 0.00 H -ATOM 969 HW2 SOL 322 17.941 24.261 9.220 1.00 0.00 H -ATOM 970 OW SOL 323 11.351 25.651 7.170 1.00 0.00 O -ATOM 971 HW1 SOL 323 11.921 26.431 6.920 1.00 0.00 H -ATOM 972 HW2 SOL 323 10.751 25.911 7.930 1.00 0.00 H -ATOM 973 OW SOL 324 17.551 24.691 2.310 1.00 0.00 O -ATOM 974 HW1 SOL 324 17.431 24.561 1.320 1.00 0.00 H -ATOM 975 HW2 SOL 324 17.251 23.881 2.800 1.00 0.00 H -ATOM 976 OW SOL 325 7.680 30.061 10.231 1.00 0.00 O -ATOM 977 HW1 SOL 325 6.900 30.231 10.831 1.00 0.00 H -ATOM 978 HW2 SOL 325 8.020 30.931 9.871 1.00 0.00 H -ATOM 979 OW SOL 326 8.500 26.601 18.231 1.00 0.00 O -ATOM 980 HW1 SOL 326 8.460 27.361 18.881 1.00 0.00 H -ATOM 981 HW2 SOL 326 8.720 26.961 17.321 1.00 0.00 H -ATOM 982 OW SOL 327 6.850 28.741 6.650 1.00 0.00 O -ATOM 983 HW1 SOL 327 7.540 28.581 7.350 1.00 0.00 H -ATOM 984 HW2 SOL 327 6.120 29.311 7.030 1.00 0.00 H -ATOM 985 OW SOL 328 4.380 22.541 14.991 1.00 0.00 O -ATOM 986 HW1 SOL 328 5.200 21.981 15.081 1.00 0.00 H -ATOM 987 HW2 SOL 328 3.570 21.961 15.031 1.00 0.00 H -ATOM 988 OW SOL 329 16.031 23.091 7.370 1.00 0.00 O -ATOM 989 HW1 SOL 329 15.291 23.551 6.870 1.00 0.00 H -ATOM 990 HW2 SOL 329 16.541 23.771 7.900 1.00 0.00 H -ATOM 991 OW SOL 330 2.400 29.531 8.860 1.00 0.00 O -ATOM 992 HW1 SOL 330 2.540 28.691 9.380 1.00 0.00 H -ATOM 993 HW2 SOL 330 1.850 30.171 9.410 1.00 0.00 H -ATOM 994 OW SOL 331 6.060 28.261 1.230 1.00 0.00 O -ATOM 995 HW1 SOL 331 6.130 29.101 0.690 1.00 0.00 H -ATOM 996 HW2 SOL 331 6.520 28.391 2.110 1.00 0.00 H -ATOM 997 OW SOL 332 15.941 19.761 14.801 1.00 0.00 O -ATOM 998 HW1 SOL 332 15.761 20.431 14.081 1.00 0.00 H -ATOM 999 HW2 SOL 332 15.911 20.221 15.691 1.00 0.00 H -ATOM 1000 OW SOL 333 1.220 25.051 5.630 1.00 0.00 O -ATOM 1001 HW1 SOL 333 0.770 24.171 5.800 1.00 0.00 H -ATOM 1002 HW2 SOL 333 1.210 25.591 6.470 1.00 0.00 H -ATOM 1003 OW SOL 334 16.891 27.841 6.120 1.00 0.00 O -ATOM 1004 HW1 SOL 334 17.841 27.551 6.200 1.00 0.00 H -ATOM 1005 HW2 SOL 334 16.811 28.491 5.370 1.00 0.00 H -ATOM 1006 OW SOL 335 16.411 29.701 4.320 1.00 0.00 O -ATOM 1007 HW1 SOL 335 17.271 29.721 3.800 1.00 0.00 H -ATOM 1008 HW2 SOL 335 16.551 30.171 5.200 1.00 0.00 H -ATOM 1009 OW SOL 336 1.130 25.991 15.971 1.00 0.00 O -ATOM 1010 HW1 SOL 336 2.010 25.861 16.421 1.00 0.00 H -ATOM 1011 HW2 SOL 336 1.000 26.961 15.751 1.00 0.00 H -ATOM 1012 OW SOL 337 6.130 1.041 7.260 1.00 0.00 O -ATOM 1013 HW1 SOL 337 5.640 0.171 7.350 1.00 0.00 H -ATOM 1014 HW2 SOL 337 5.900 1.471 6.390 1.00 0.00 H -ATOM 1015 OW SOL 338 12.931 30.901 14.231 1.00 0.00 O -ATOM 1016 HW1 SOL 338 13.301 30.171 13.651 1.00 0.00 H -ATOM 1017 HW2 SOL 338 13.451 30.951 15.081 1.00 0.00 H -ATOM 1018 OW SOL 339 8.090 18.661 5.020 1.00 0.00 O -ATOM 1019 HW1 SOL 339 8.490 19.571 4.930 1.00 0.00 H -ATOM 1020 HW2 SOL 339 7.090 18.741 5.080 1.00 0.00 H -ATOM 1021 OW SOL 340 15.251 28.611 1.900 1.00 0.00 O -ATOM 1022 HW1 SOL 340 14.621 27.851 2.030 1.00 0.00 H -ATOM 1023 HW2 SOL 340 15.731 28.791 2.760 1.00 0.00 H -ATOM 1024 OW SOL 341 3.170 21.131 18.011 1.00 0.00 O -ATOM 1025 HW1 SOL 341 3.880 21.841 18.071 1.00 0.00 H -ATOM 1026 HW2 SOL 341 2.290 21.521 18.291 1.00 0.00 H -ATOM 1027 OW SOL 342 5.980 25.911 2.700 1.00 0.00 O -ATOM 1028 HW1 SOL 342 6.220 26.601 2.020 1.00 0.00 H -ATOM 1029 HW2 SOL 342 5.200 26.241 3.240 1.00 0.00 H -ATOM 1030 OW SOL 343 12.811 22.071 9.441 1.00 0.00 O -ATOM 1031 HW1 SOL 343 11.951 21.571 9.311 1.00 0.00 H -ATOM 1032 HW2 SOL 343 13.431 21.531 10.001 1.00 0.00 H -ATOM 1033 OW SOL 344 8.070 24.671 14.651 1.00 0.00 O -ATOM 1034 HW1 SOL 344 7.600 24.641 15.541 1.00 0.00 H -ATOM 1035 HW2 SOL 344 7.560 24.121 13.991 1.00 0.00 H -ATOM 1036 OW SOL 345 13.941 23.311 16.741 1.00 0.00 O -ATOM 1037 HW1 SOL 345 13.741 23.741 17.621 1.00 0.00 H -ATOM 1038 HW2 SOL 345 14.721 22.691 16.831 1.00 0.00 H -ATOM 1039 OW SOL 346 9.731 27.521 15.721 1.00 0.00 O -ATOM 1040 HW1 SOL 346 10.191 26.681 15.431 1.00 0.00 H -ATOM 1041 HW2 SOL 346 9.171 27.861 14.971 1.00 0.00 H -ATOM 1042 OW SOL 347 9.911 22.721 12.421 1.00 0.00 O -ATOM 1043 HW1 SOL 347 9.141 23.061 12.961 1.00 0.00 H -ATOM 1044 HW2 SOL 347 9.571 22.211 11.631 1.00 0.00 H -ATOM 1045 OW SOL 348 10.411 25.631 4.290 1.00 0.00 O -ATOM 1046 HW1 SOL 348 10.671 25.591 5.250 1.00 0.00 H -ATOM 1047 HW2 SOL 348 9.561 25.121 4.150 1.00 0.00 H -ATOM 1048 OW SOL 349 8.650 22.101 1.950 1.00 0.00 O -ATOM 1049 HW1 SOL 349 9.240 22.731 1.460 1.00 0.00 H -ATOM 1050 HW2 SOL 349 8.840 21.161 1.660 1.00 0.00 H -ATOM 1051 OW SOL 350 17.191 24.471 18.311 1.00 0.00 O -ATOM 1052 HW1 SOL 350 16.931 25.361 17.951 1.00 0.00 H -ATOM 1053 HW2 SOL 350 17.171 23.791 17.581 1.00 0.00 H -ATOM 1054 OW SOL 351 13.621 30.061 5.450 1.00 0.00 O -ATOM 1055 HW1 SOL 351 14.451 29.771 4.970 1.00 0.00 H -ATOM 1056 HW2 SOL 351 13.131 30.731 4.890 1.00 0.00 H -ATOM 1057 OW SOL 352 5.500 20.581 8.850 1.00 0.00 O -ATOM 1058 HW1 SOL 352 5.450 20.531 9.850 1.00 0.00 H -ATOM 1059 HW2 SOL 352 5.520 21.541 8.560 1.00 0.00 H -ATOM 1060 OW SOL 353 17.951 29.281 8.730 1.00 0.00 O -ATOM 1061 HW1 SOL 353 17.331 29.131 7.970 1.00 0.00 H -ATOM 1062 HW2 SOL 353 17.431 29.391 9.580 1.00 0.00 H -ATOM 1063 OW SOL 354 3.210 28.051 2.420 1.00 0.00 O -ATOM 1064 HW1 SOL 354 4.030 28.441 2.000 1.00 0.00 H -ATOM 1065 HW2 SOL 354 2.940 27.231 1.930 1.00 0.00 H -ATOM 1066 OW SOL 355 14.581 25.971 7.280 1.00 0.00 O -ATOM 1067 HW1 SOL 355 14.531 25.321 8.030 1.00 0.00 H -ATOM 1068 HW2 SOL 355 15.381 26.561 7.410 1.00 0.00 H -ATOM 1069 OW SOL 356 2.020 21.471 14.981 1.00 0.00 O -ATOM 1070 HW1 SOL 356 1.220 22.071 14.851 1.00 0.00 H -ATOM 1071 HW2 SOL 356 1.920 20.981 15.841 1.00 0.00 H -ATOM 1072 OW SOL 357 14.001 19.691 4.260 1.00 0.00 O -ATOM 1073 HW1 SOL 357 13.761 19.321 3.360 1.00 0.00 H -ATOM 1074 HW2 SOL 357 14.991 19.851 4.300 1.00 0.00 H -ATOM 1075 OW SOL 358 3.820 25.621 4.800 1.00 0.00 O -ATOM 1076 HW1 SOL 358 4.270 24.721 4.770 1.00 0.00 H -ATOM 1077 HW2 SOL 358 2.880 25.511 5.130 1.00 0.00 H -ATOM 1078 OW SOL 359 15.471 20.841 17.291 1.00 0.00 O -ATOM 1079 HW1 SOL 359 15.421 21.211 18.211 1.00 0.00 H -ATOM 1080 HW2 SOL 359 14.751 20.151 17.171 1.00 0.00 H -ATOM 1081 OW SOL 360 6.140 19.841 1.170 1.00 0.00 O -ATOM 1082 HW1 SOL 360 7.120 19.621 1.240 1.00 0.00 H -ATOM 1083 HW2 SOL 360 5.830 19.671 0.240 1.00 0.00 H -ATOM 1084 OW SOL 361 7.810 21.261 17.491 1.00 0.00 O -ATOM 1085 HW1 SOL 361 8.480 20.651 17.921 1.00 0.00 H -ATOM 1086 HW2 SOL 361 7.080 21.451 18.141 1.00 0.00 H -ATOM 1087 OW SOL 362 13.511 24.521 14.331 1.00 0.00 O -ATOM 1088 HW1 SOL 362 13.791 24.091 15.181 1.00 0.00 H -ATOM 1089 HW2 SOL 362 13.761 25.481 14.341 1.00 0.00 H -ATOM 1090 OW SOL 363 9.220 23.651 8.990 1.00 0.00 O -ATOM 1091 HW1 SOL 363 8.970 23.561 8.030 1.00 0.00 H -ATOM 1092 HW2 SOL 363 9.700 22.831 9.300 1.00 0.00 H -ATOM 1093 OW SOL 364 5.390 19.261 5.120 1.00 0.00 O -ATOM 1094 HW1 SOL 364 4.580 19.271 5.700 1.00 0.00 H -ATOM 1095 HW2 SOL 364 5.420 20.091 4.570 1.00 0.00 H -ATOM 1096 OW SOL 365 2.970 18.971 1.710 1.00 0.00 O -ATOM 1097 HW1 SOL 365 3.460 19.811 1.500 1.00 0.00 H -ATOM 1098 HW2 SOL 365 3.590 18.321 2.160 1.00 0.00 H -ATOM 1099 OW SOL 366 9.351 20.981 4.800 1.00 0.00 O -ATOM 1100 HW1 SOL 366 8.871 21.391 4.020 1.00 0.00 H -ATOM 1101 HW2 SOL 366 10.341 20.961 4.610 1.00 0.00 H -ATOM 1102 OW SOL 367 10.761 25.451 14.641 1.00 0.00 O -ATOM 1103 HW1 SOL 367 9.961 24.841 14.671 1.00 0.00 H -ATOM 1104 HW2 SOL 367 11.571 24.921 14.401 1.00 0.00 H -ATOM 1105 OW SOL 368 4.590 30.141 7.410 1.00 0.00 O -ATOM 1106 HW1 SOL 368 3.880 29.871 8.060 1.00 0.00 H -ATOM 1107 HW2 SOL 368 4.330 29.861 6.480 1.00 0.00 H -ATOM 1108 OW SOL 369 10.321 24.111 0.160 1.00 0.00 O -ATOM 1109 HW1 SOL 369 9.911 24.931 -0.230 1.00 0.00 H -ATOM 1110 HW2 SOL 369 10.961 24.371 0.890 1.00 0.00 H -ATOM 1111 OW SOL 370 5.610 20.841 11.471 1.00 0.00 O -ATOM 1112 HW1 SOL 370 5.990 20.001 11.841 1.00 0.00 H -ATOM 1113 HW2 SOL 370 4.730 21.031 11.911 1.00 0.00 H -ATOM 1114 OW SOL 371 8.660 23.161 6.420 1.00 0.00 O -ATOM 1115 HW1 SOL 371 8.340 23.881 5.800 1.00 0.00 H -ATOM 1116 HW2 SOL 371 8.900 22.351 5.890 1.00 0.00 H -ATOM 1117 OW SOL 372 10.171 19.011 7.530 1.00 0.00 O -ATOM 1118 HW1 SOL 372 9.451 19.061 6.840 1.00 0.00 H -ATOM 1119 HW2 SOL 372 9.931 18.321 8.220 1.00 0.00 H -ATOM 1120 OW SOL 373 14.291 30.351 8.670 1.00 0.00 O -ATOM 1121 HW1 SOL 373 13.741 29.511 8.600 1.00 0.00 H -ATOM 1122 HW2 SOL 373 14.551 30.641 7.750 1.00 0.00 H -ATOM 1123 OW SOL 374 14.661 24.521 9.921 1.00 0.00 O -ATOM 1124 HW1 SOL 374 14.361 23.571 9.991 1.00 0.00 H -ATOM 1125 HW2 SOL 374 15.391 24.681 10.581 1.00 0.00 H -ATOM 1126 OW SOL 375 18.571 26.951 3.770 1.00 0.00 O -ATOM 1127 HW1 SOL 375 18.991 26.311 4.410 1.00 0.00 H -ATOM 1128 HW2 SOL 375 18.191 26.441 2.990 1.00 0.00 H -ATOM 1129 OW SOL 376 13.901 24.371 0.780 1.00 0.00 O -ATOM 1130 HW1 SOL 376 13.361 24.161 1.590 1.00 0.00 H -ATOM 1131 HW2 SOL 376 14.811 23.961 0.870 1.00 0.00 H -ATOM 1132 OW SOL 377 5.270 21.181 3.280 1.00 0.00 O -ATOM 1133 HW1 SOL 377 5.540 20.591 2.530 1.00 0.00 H -ATOM 1134 HW2 SOL 377 5.270 22.131 2.970 1.00 0.00 H -ATOM 1135 OW SOL 378 17.541 30.851 15.881 1.00 0.00 O -ATOM 1136 HW1 SOL 378 18.451 30.461 15.751 1.00 0.00 H -ATOM 1137 HW2 SOL 378 17.621 31.811 16.121 1.00 0.00 H -ATOM 1138 OW SOL 379 16.381 29.611 10.791 1.00 0.00 O -ATOM 1139 HW1 SOL 379 16.431 30.421 11.381 1.00 0.00 H -ATOM 1140 HW2 SOL 379 15.521 29.631 10.281 1.00 0.00 H -ATOM 1141 OW SOL 380 9.150 19.511 14.021 1.00 0.00 O -ATOM 1142 HW1 SOL 380 9.400 19.311 13.071 1.00 0.00 H -ATOM 1143 HW2 SOL 380 9.870 20.071 14.441 1.00 0.00 H -ATOM 1144 OW SOL 381 9.801 29.781 17.191 1.00 0.00 O -ATOM 1145 HW1 SOL 381 8.811 29.841 17.291 1.00 0.00 H -ATOM 1146 HW2 SOL 381 10.031 28.981 16.631 1.00 0.00 H -ATOM 1147 OW SOL 382 7.050 29.121 3.680 1.00 0.00 O -ATOM 1148 HW1 SOL 382 6.910 29.191 4.670 1.00 0.00 H -ATOM 1149 HW2 SOL 382 7.890 28.611 3.500 1.00 0.00 H -ATOM 1150 OW SOL 383 4.100 26.751 12.511 1.00 0.00 O -ATOM 1151 HW1 SOL 383 4.960 26.871 13.011 1.00 0.00 H -ATOM 1152 HW2 SOL 383 3.680 25.881 12.781 1.00 0.00 H -ATOM 1153 OW SOL 384 12.741 22.481 12.621 1.00 0.00 O -ATOM 1154 HW1 SOL 384 12.951 23.221 13.261 1.00 0.00 H -ATOM 1155 HW2 SOL 384 11.851 22.651 12.191 1.00 0.00 H -ATOM 1156 OW SOL 385 3.670 29.621 5.010 1.00 0.00 O -ATOM 1157 HW1 SOL 385 3.600 30.451 4.450 1.00 0.00 H -ATOM 1158 HW2 SOL 385 3.710 28.821 4.410 1.00 0.00 H -ATOM 1159 OW SOL 386 5.660 23.991 8.650 1.00 0.00 O -ATOM 1160 HW1 SOL 386 5.780 24.651 7.910 1.00 0.00 H -ATOM 1161 HW2 SOL 386 6.120 24.331 9.480 1.00 0.00 H -ATOM 1162 OW SOL 387 15.821 25.011 4.720 1.00 0.00 O -ATOM 1163 HW1 SOL 387 15.511 25.621 5.450 1.00 0.00 H -ATOM 1164 HW2 SOL 387 16.321 25.531 4.030 1.00 0.00 H -ATOM 1165 OW SOL 388 4.020 26.131 15.981 1.00 0.00 O -ATOM 1166 HW1 SOL 388 4.700 26.681 15.511 1.00 0.00 H -ATOM 1167 HW2 SOL 388 4.420 25.251 16.251 1.00 0.00 H -ATOM 1168 OW SOL 389 15.871 26.411 16.701 1.00 0.00 O -ATOM 1169 HW1 SOL 389 14.951 26.791 16.651 1.00 0.00 H -ATOM 1170 HW2 SOL 389 16.471 26.881 16.051 1.00 0.00 H -ATOM 1171 OW SOL 390 10.131 19.671 17.701 1.00 0.00 O -ATOM 1172 HW1 SOL 390 10.191 20.521 17.181 1.00 0.00 H -ATOM 1173 HW2 SOL 390 10.451 18.911 17.131 1.00 0.00 H -ATOM 1174 OW SOL 391 5.040 19.121 17.401 1.00 0.00 O -ATOM 1175 HW1 SOL 391 4.620 18.551 16.701 1.00 0.00 H -ATOM 1176 HW2 SOL 391 4.380 19.811 17.721 1.00 0.00 H -ATOM 1177 OW SOL 392 5.730 27.321 10.291 1.00 0.00 O -ATOM 1178 HW1 SOL 392 6.170 28.211 10.201 1.00 0.00 H -ATOM 1179 HW2 SOL 392 5.100 27.321 11.061 1.00 0.00 H -ATOM 1180 OW SOL 393 13.601 27.241 10.451 1.00 0.00 O -ATOM 1181 HW1 SOL 393 12.851 27.241 9.791 1.00 0.00 H -ATOM 1182 HW2 SOL 393 13.971 26.321 10.541 1.00 0.00 H -ATOM 1183 OW SOL 394 12.091 23.871 2.750 1.00 0.00 O -ATOM 1184 HW1 SOL 394 12.221 23.031 3.290 1.00 0.00 H -ATOM 1185 HW2 SOL 394 11.801 24.611 3.350 1.00 0.00 H -ATOM 1186 OW SOL 395 0.370 0.491 12.821 1.00 0.00 O -ATOM 1187 HW1 SOL 395 0.900 0.001 13.501 1.00 0.00 H -ATOM 1188 HW2 SOL 395 0.590 1.471 12.871 1.00 0.00 H -ATOM 1189 OW SOL 396 7.320 24.961 10.641 1.00 0.00 O -ATOM 1190 HW1 SOL 396 7.910 24.701 9.881 1.00 0.00 H -ATOM 1191 HW2 SOL 396 7.040 25.921 10.531 1.00 0.00 H -ATOM 1192 OW SOL 397 17.281 27.971 18.541 1.00 0.00 O -ATOM 1193 HW1 SOL 397 16.821 27.901 17.651 1.00 0.00 H -ATOM 1194 HW2 SOL 397 16.661 28.411 19.201 1.00 0.00 H -ATOM 1195 OW SOL 398 3.070 19.251 6.180 1.00 0.00 O -ATOM 1196 HW1 SOL 398 2.960 20.191 6.510 1.00 0.00 H -ATOM 1197 HW2 SOL 398 3.020 18.621 6.950 1.00 0.00 H -ATOM 1198 OW SOL 399 16.221 22.291 3.740 1.00 0.00 O -ATOM 1199 HW1 SOL 399 16.241 21.531 4.380 1.00 0.00 H -ATOM 1200 HW2 SOL 399 15.741 23.061 4.140 1.00 0.00 H -ATOM 1201 OW SOL 400 10.231 26.281 9.661 1.00 0.00 O -ATOM 1202 HW1 SOL 400 10.381 26.491 10.621 1.00 0.00 H -ATOM 1203 HW2 SOL 400 9.931 25.331 9.571 1.00 0.00 H -ATOM 1204 OW SOL 401 3.500 27.601 18.041 1.00 0.00 O -ATOM 1205 HW1 SOL 401 4.260 28.041 18.521 1.00 0.00 H -ATOM 1206 HW2 SOL 401 3.850 27.131 17.221 1.00 0.00 H -ATOM 1207 OW SOL 402 15.401 21.361 1.250 1.00 0.00 O -ATOM 1208 HW1 SOL 402 14.791 20.611 1.480 1.00 0.00 H -ATOM 1209 HW2 SOL 402 15.621 21.881 2.080 1.00 0.00 H -ATOM 1210 OW SOL 403 13.031 27.001 0.420 1.00 0.00 O -ATOM 1211 HW1 SOL 403 13.371 26.071 0.570 1.00 0.00 H -ATOM 1212 HW2 SOL 403 13.211 27.271 -0.530 1.00 0.00 H -ATOM 1213 OW SOL 404 3.190 26.721 9.491 1.00 0.00 O -ATOM 1214 HW1 SOL 404 4.120 27.081 9.541 1.00 0.00 H -ATOM 1215 HW2 SOL 404 3.130 25.871 10.011 1.00 0.00 H -ATOM 1216 OW SOL 405 3.390 23.711 10.061 1.00 0.00 O -ATOM 1217 HW1 SOL 405 2.870 22.881 9.891 1.00 0.00 H -ATOM 1218 HW2 SOL 405 4.160 23.761 9.421 1.00 0.00 H -ATOM 1219 OW SOL 406 11.381 22.421 16.781 1.00 0.00 O -ATOM 1220 HW1 SOL 406 10.931 23.051 17.421 1.00 0.00 H -ATOM 1221 HW2 SOL 406 12.311 22.731 16.611 1.00 0.00 H -ATOM 1222 OW SOL 407 11.601 20.691 14.771 1.00 0.00 O -ATOM 1223 HW1 SOL 407 11.601 21.331 15.541 1.00 0.00 H -ATOM 1224 HW2 SOL 407 11.881 21.171 13.941 1.00 0.00 H -ATOM 1225 OW SOL 408 10.021 26.581 12.381 1.00 0.00 O -ATOM 1226 HW1 SOL 408 10.431 26.261 13.241 1.00 0.00 H -ATOM 1227 HW2 SOL 408 9.061 26.311 12.351 1.00 0.00 H -ATOM 1228 OW SOL 409 0.400 24.061 11.141 1.00 0.00 O -ATOM 1229 HW1 SOL 409 1.250 23.731 10.731 1.00 0.00 H -ATOM 1230 HW2 SOL 409 0.530 24.211 12.121 1.00 0.00 H -ATOM 1231 OW SOL 410 1.890 23.821 17.221 1.00 0.00 O -ATOM 1232 HW1 SOL 410 2.480 23.421 16.521 1.00 0.00 H -ATOM 1233 HW2 SOL 410 1.310 24.531 16.811 1.00 0.00 H -ATOM 1234 OW SOL 411 13.691 28.121 16.601 1.00 0.00 O -ATOM 1235 HW1 SOL 411 14.081 29.011 16.801 1.00 0.00 H -ATOM 1236 HW2 SOL 411 13.791 27.921 15.631 1.00 0.00 H -ATOM 1237 OW SOL 412 8.150 24.341 3.250 1.00 0.00 O -ATOM 1238 HW1 SOL 412 8.220 23.451 2.790 1.00 0.00 H -ATOM 1239 HW2 SOL 412 7.210 24.681 3.170 1.00 0.00 H -ATOM 1240 OW SOL 413 16.571 24.661 12.061 1.00 0.00 O -ATOM 1241 HW1 SOL 413 16.191 23.971 12.681 1.00 0.00 H -ATOM 1242 HW2 SOL 413 17.391 24.301 11.621 1.00 0.00 H -ATOM 1243 OW SOL 414 6.710 23.261 12.691 1.00 0.00 O -ATOM 1244 HW1 SOL 414 6.370 22.371 12.391 1.00 0.00 H -ATOM 1245 HW2 SOL 414 6.970 23.801 11.891 1.00 0.00 H -ATOM 1246 OW SOL 415 4.730 23.621 1.910 1.00 0.00 O -ATOM 1247 HW1 SOL 415 5.340 24.421 1.950 1.00 0.00 H -ATOM 1248 HW2 SOL 415 3.780 23.931 1.980 1.00 0.00 H -ATOM 1249 OW SOL 416 1.590 29.991 14.661 1.00 0.00 O -ATOM 1250 HW1 SOL 416 1.810 29.381 15.421 1.00 0.00 H -ATOM 1251 HW2 SOL 416 1.690 29.501 13.801 1.00 0.00 H -ATOM 1252 OW SOL 417 13.471 29.211 12.341 1.00 0.00 O -ATOM 1253 HW1 SOL 417 13.711 28.581 11.601 1.00 0.00 H -ATOM 1254 HW2 SOL 417 12.571 29.611 12.161 1.00 0.00 H -ATOM 1255 OW SOL 418 13.021 27.171 3.090 1.00 0.00 O -ATOM 1256 HW1 SOL 418 12.161 26.861 3.510 1.00 0.00 H -ATOM 1257 HW2 SOL 418 12.981 27.031 2.100 1.00 0.00 H -ATOM 1258 OW SOL 419 0.830 31.201 10.221 1.00 0.00 O -ATOM 1259 HW1 SOL 419 0.780 31.191 11.221 1.00 0.00 H -ATOM 1260 HW2 SOL 419 0.000 30.791 9.841 1.00 0.00 H -ATOM 1261 OW SOL 420 9.030 19.481 1.330 1.00 0.00 O -ATOM 1262 HW1 SOL 420 9.540 19.491 0.470 1.00 0.00 H -ATOM 1263 HW2 SOL 420 9.590 19.061 2.040 1.00 0.00 H -ATOM 1264 OW SOL 421 17.261 19.971 5.230 1.00 0.00 O -ATOM 1265 HW1 SOL 421 17.991 19.801 4.560 1.00 0.00 H -ATOM 1266 HW2 SOL 421 16.951 19.101 5.610 1.00 0.00 H -ATOM 1267 OW SOL 422 12.801 27.891 6.720 1.00 0.00 O -ATOM 1268 HW1 SOL 422 13.401 27.081 6.740 1.00 0.00 H -ATOM 1269 HW2 SOL 422 13.201 28.581 6.120 1.00 0.00 H -ATOM 1270 OW SOL 423 18.411 20.371 9.631 1.00 0.00 O -ATOM 1271 HW1 SOL 423 18.801 19.521 9.271 1.00 0.00 H -ATOM 1272 HW2 SOL 423 17.431 20.391 9.441 1.00 0.00 H -ATOM 1273 OW SOL 424 2.630 21.881 7.200 1.00 0.00 O -ATOM 1274 HW1 SOL 424 1.840 22.391 6.860 1.00 0.00 H -ATOM 1275 HW2 SOL 424 2.540 21.731 8.180 1.00 0.00 H -ATOM 1276 OW SOL 425 8.220 28.641 13.721 1.00 0.00 O -ATOM 1277 HW1 SOL 425 8.620 28.631 12.801 1.00 0.00 H -ATOM 1278 HW2 SOL 425 8.320 29.561 14.121 1.00 0.00 H -ATOM 1279 OW SOL 426 9.160 27.721 2.910 1.00 0.00 O -ATOM 1280 HW1 SOL 426 9.790 28.101 2.230 1.00 0.00 H -ATOM 1281 HW2 SOL 426 9.560 26.891 3.300 1.00 0.00 H -ATOM 1282 OW SOL 427 3.720 0.271 14.901 1.00 0.00 O -ATOM 1283 HW1 SOL 427 3.590 1.201 14.561 1.00 0.00 H -ATOM 1284 HW2 SOL 427 2.880 -0.249 14.771 1.00 0.00 H -ATOM 1285 OW SOL 428 16.141 0.311 12.891 1.00 0.00 O -ATOM 1286 HW1 SOL 428 16.741 0.341 13.691 1.00 0.00 H -ATOM 1287 HW2 SOL 428 15.391 0.951 13.021 1.00 0.00 H -ATOM 1288 OW SOL 429 10.391 29.601 6.960 1.00 0.00 O -ATOM 1289 HW1 SOL 429 9.691 29.131 7.500 1.00 0.00 H -ATOM 1290 HW2 SOL 429 10.981 28.921 6.530 1.00 0.00 H -ATOM 1291 OW SOL 430 10.141 20.981 9.711 1.00 0.00 O -ATOM 1292 HW1 SOL 430 10.061 20.621 8.781 1.00 0.00 H -ATOM 1293 HW2 SOL 430 10.121 20.221 10.361 1.00 0.00 H -ATOM 1294 OW SOL 431 17.091 22.471 13.811 1.00 0.00 O -ATOM 1295 HW1 SOL 431 17.821 23.161 13.851 1.00 0.00 H -ATOM 1296 HW2 SOL 431 17.371 21.721 13.221 1.00 0.00 H -ATOM 1297 OW SOL 432 6.720 20.651 14.891 1.00 0.00 O -ATOM 1298 HW1 SOL 432 7.620 20.491 14.491 1.00 0.00 H -ATOM 1299 HW2 SOL 432 6.800 20.701 15.881 1.00 0.00 H -ATOM 1300 OW SOL 433 14.401 27.181 13.981 1.00 0.00 O -ATOM 1301 HW1 SOL 433 13.831 27.701 13.351 1.00 0.00 H -ATOM 1302 HW2 SOL 433 15.361 27.301 13.741 1.00 0.00 H -ATOM 1303 OW SOL 434 6.130 27.041 14.311 1.00 0.00 O -ATOM 1304 HW1 SOL 434 6.690 27.851 14.141 1.00 0.00 H -ATOM 1305 HW2 SOL 434 6.720 26.241 14.341 1.00 0.00 H -ATOM 1306 OW SOL 435 7.160 24.271 17.081 1.00 0.00 O -ATOM 1307 HW1 SOL 435 7.350 24.921 17.821 1.00 0.00 H -ATOM 1308 HW2 SOL 435 7.760 23.471 17.171 1.00 0.00 H -ATOM 1309 OW SOL 436 14.501 30.821 16.331 1.00 0.00 O -ATOM 1310 HW1 SOL 436 14.411 30.721 17.321 1.00 0.00 H -ATOM 1311 HW2 SOL 436 15.461 30.751 16.071 1.00 0.00 H -ATOM 1312 OW SOL 437 16.741 27.451 12.541 1.00 0.00 O -ATOM 1313 HW1 SOL 437 16.471 26.561 12.171 1.00 0.00 H -ATOM 1314 HW2 SOL 437 16.751 28.131 11.811 1.00 0.00 H -ATOM 1315 OW SOL 438 12.251 21.871 4.490 1.00 0.00 O -ATOM 1316 HW1 SOL 438 12.901 21.131 4.380 1.00 0.00 H -ATOM 1317 HW2 SOL 438 12.451 22.371 5.330 1.00 0.00 H -ATOM 1318 OW SOL 439 5.940 26.071 6.520 1.00 0.00 O -ATOM 1319 HW1 SOL 439 6.440 26.921 6.330 1.00 0.00 H -ATOM 1320 HW2 SOL 439 5.060 26.091 6.040 1.00 0.00 H -ATOM 1321 OW SOL 440 17.771 22.041 16.421 1.00 0.00 O -ATOM 1322 HW1 SOL 440 17.601 22.351 15.481 1.00 0.00 H -ATOM 1323 HW2 SOL 440 16.931 21.671 16.801 1.00 0.00 H -ATOM 1324 OW SOL 441 17.301 27.961 15.171 1.00 0.00 O -ATOM 1325 HW1 SOL 441 17.681 28.871 15.321 1.00 0.00 H -ATOM 1326 HW2 SOL 441 17.221 27.791 14.181 1.00 0.00 H -ATOM 1327 OW SOL 442 8.590 28.181 8.610 1.00 0.00 O -ATOM 1328 HW1 SOL 442 9.130 27.491 9.090 1.00 0.00 H -ATOM 1329 HW2 SOL 442 8.270 28.871 9.270 1.00 0.00 H -ATOM 1330 OW SOL 443 10.831 28.461 0.870 1.00 0.00 O -ATOM 1331 HW1 SOL 443 10.601 28.991 0.050 1.00 0.00 H -ATOM 1332 HW2 SOL 443 11.641 27.901 0.680 1.00 0.00 H -ATOM 1333 OW SOL 444 0.790 31.021 6.530 1.00 0.00 O -ATOM 1334 HW1 SOL 444 0.780 30.551 7.410 1.00 0.00 H -ATOM 1335 HW2 SOL 444 1.610 30.741 6.020 1.00 0.00 H -ATOM 1336 OW SOL 445 18.241 20.541 12.271 1.00 0.00 O -ATOM 1337 HW1 SOL 445 18.201 19.641 12.711 1.00 0.00 H -ATOM 1338 HW2 SOL 445 18.271 20.431 11.281 1.00 0.00 H -ATOM 1339 OW SOL 446 4.280 22.861 5.200 1.00 0.00 O -ATOM 1340 HW1 SOL 446 4.580 22.141 4.580 1.00 0.00 H -ATOM 1341 HW2 SOL 446 3.890 22.461 6.030 1.00 0.00 H -ATOM 1342 OW SOL 447 3.170 24.091 12.801 1.00 0.00 O -ATOM 1343 HW1 SOL 447 3.550 23.501 13.521 1.00 0.00 H -ATOM 1344 HW2 SOL 447 3.570 23.831 11.921 1.00 0.00 H -ATOM 1345 OW SOL 448 14.241 20.761 11.121 1.00 0.00 O -ATOM 1346 HW1 SOL 448 14.761 20.111 11.671 1.00 0.00 H -ATOM 1347 HW2 SOL 448 13.751 21.391 11.731 1.00 0.00 H -ATOM 1348 OW SOL 449 10.011 18.961 11.541 1.00 0.00 O -ATOM 1349 HW1 SOL 449 9.381 18.241 11.231 1.00 0.00 H -ATOM 1350 HW2 SOL 449 10.941 18.601 11.541 1.00 0.00 H -ATOM 1351 OW SOL 450 7.700 0.691 3.010 1.00 0.00 O -ATOM 1352 HW1 SOL 450 7.240 -0.179 3.180 1.00 0.00 H -ATOM 1353 HW2 SOL 450 8.610 0.661 3.420 1.00 0.00 H -ATOM 1354 OW SOL 451 13.521 19.141 1.680 1.00 0.00 O -ATOM 1355 HW1 SOL 451 13.871 18.731 0.840 1.00 0.00 H -ATOM 1356 HW2 SOL 451 12.621 18.761 1.880 1.00 0.00 H -ATOM 1357 OW SOL 452 13.001 23.151 6.910 1.00 0.00 O -ATOM 1358 HW1 SOL 452 12.411 23.951 6.950 1.00 0.00 H -ATOM 1359 HW2 SOL 452 13.151 22.801 7.840 1.00 0.00 H -ATOM 1360 OW SOL 453 15.931 20.831 8.820 1.00 0.00 O -ATOM 1361 HW1 SOL 453 15.091 20.821 9.360 1.00 0.00 H -ATOM 1362 HW2 SOL 453 15.951 21.661 8.260 1.00 0.00 H -ATOM 1363 OW SOL 454 0.390 29.391 3.000 1.00 0.00 O -ATOM 1364 HW1 SOL 454 1.380 29.281 2.910 1.00 0.00 H -ATOM 1365 HW2 SOL 454 -0.010 28.531 3.320 1.00 0.00 H -ATOM 1366 OW SOL 455 17.431 24.801 27.181 1.00 0.00 O -ATOM 1367 HW1 SOL 455 17.761 25.741 27.181 1.00 0.00 H -ATOM 1368 HW2 SOL 455 17.941 24.261 27.841 1.00 0.00 H -ATOM 1369 OW SOL 456 11.351 25.651 25.791 1.00 0.00 O -ATOM 1370 HW1 SOL 456 11.921 26.431 25.541 1.00 0.00 H -ATOM 1371 HW2 SOL 456 10.751 25.911 26.551 1.00 0.00 H -ATOM 1372 OW SOL 457 17.551 24.691 20.931 1.00 0.00 O -ATOM 1373 HW1 SOL 457 17.431 24.561 19.941 1.00 0.00 H -ATOM 1374 HW2 SOL 457 17.251 23.881 21.421 1.00 0.00 H -ATOM 1375 OW SOL 458 7.680 30.061 28.851 1.00 0.00 O -ATOM 1376 HW1 SOL 458 6.900 30.231 29.451 1.00 0.00 H -ATOM 1377 HW2 SOL 458 8.020 30.931 28.491 1.00 0.00 H -ATOM 1378 OW SOL 459 6.850 28.741 25.271 1.00 0.00 O -ATOM 1379 HW1 SOL 459 7.540 28.581 25.971 1.00 0.00 H -ATOM 1380 HW2 SOL 459 6.120 29.311 25.651 1.00 0.00 H -ATOM 1381 OW SOL 460 2.400 29.531 27.481 1.00 0.00 O -ATOM 1382 HW1 SOL 460 2.540 28.691 28.001 1.00 0.00 H -ATOM 1383 HW2 SOL 460 1.850 30.171 28.031 1.00 0.00 H -ATOM 1384 OW SOL 461 6.060 28.261 19.851 1.00 0.00 O -ATOM 1385 HW1 SOL 461 6.130 29.101 19.311 1.00 0.00 H -ATOM 1386 HW2 SOL 461 6.520 28.391 20.731 1.00 0.00 H -ATOM 1387 OW SOL 462 1.220 25.051 24.251 1.00 0.00 O -ATOM 1388 HW1 SOL 462 0.770 24.171 24.421 1.00 0.00 H -ATOM 1389 HW2 SOL 462 1.210 25.591 25.091 1.00 0.00 H -ATOM 1390 OW SOL 463 16.891 27.841 24.741 1.00 0.00 O -ATOM 1391 HW1 SOL 463 17.841 27.551 24.821 1.00 0.00 H -ATOM 1392 HW2 SOL 463 16.811 28.491 23.991 1.00 0.00 H -ATOM 1393 OW SOL 464 16.411 29.701 22.941 1.00 0.00 O -ATOM 1394 HW1 SOL 464 17.271 29.721 22.421 1.00 0.00 H -ATOM 1395 HW2 SOL 464 16.551 30.171 23.821 1.00 0.00 H -ATOM 1396 OW SOL 465 6.130 1.041 25.881 1.00 0.00 O -ATOM 1397 HW1 SOL 465 5.640 0.171 25.971 1.00 0.00 H -ATOM 1398 HW2 SOL 465 5.900 1.471 25.011 1.00 0.00 H -ATOM 1399 OW SOL 466 8.090 18.661 23.641 1.00 0.00 O -ATOM 1400 HW1 SOL 466 8.490 19.571 23.551 1.00 0.00 H -ATOM 1401 HW2 SOL 466 7.090 18.741 23.701 1.00 0.00 H -ATOM 1402 OW SOL 467 15.251 28.611 20.521 1.00 0.00 O -ATOM 1403 HW1 SOL 467 14.621 27.851 20.651 1.00 0.00 H -ATOM 1404 HW2 SOL 467 15.731 28.791 21.381 1.00 0.00 H -ATOM 1405 OW SOL 468 5.980 25.911 21.321 1.00 0.00 O -ATOM 1406 HW1 SOL 468 6.220 26.601 20.641 1.00 0.00 H -ATOM 1407 HW2 SOL 468 5.200 26.241 21.861 1.00 0.00 H -ATOM 1408 OW SOL 469 12.811 22.071 28.061 1.00 0.00 O -ATOM 1409 HW1 SOL 469 11.951 21.571 27.931 1.00 0.00 H -ATOM 1410 HW2 SOL 469 13.431 21.531 28.621 1.00 0.00 H -ATOM 1411 OW SOL 470 10.411 25.631 22.911 1.00 0.00 O -ATOM 1412 HW1 SOL 470 10.671 25.591 23.871 1.00 0.00 H -ATOM 1413 HW2 SOL 470 9.561 25.121 22.771 1.00 0.00 H -ATOM 1414 OW SOL 471 8.650 22.101 20.571 1.00 0.00 O -ATOM 1415 HW1 SOL 471 9.240 22.731 20.081 1.00 0.00 H -ATOM 1416 HW2 SOL 471 8.840 21.161 20.281 1.00 0.00 H -ATOM 1417 OW SOL 472 13.621 30.061 24.071 1.00 0.00 O -ATOM 1418 HW1 SOL 472 14.451 29.771 23.591 1.00 0.00 H -ATOM 1419 HW2 SOL 472 13.131 30.731 23.511 1.00 0.00 H -ATOM 1420 OW SOL 473 5.500 20.581 27.471 1.00 0.00 O -ATOM 1421 HW1 SOL 473 5.450 20.531 28.471 1.00 0.00 H -ATOM 1422 HW2 SOL 473 5.520 21.541 27.181 1.00 0.00 H -ATOM 1423 OW SOL 474 17.951 29.281 27.351 1.00 0.00 O -ATOM 1424 HW1 SOL 474 17.331 29.131 26.591 1.00 0.00 H -ATOM 1425 HW2 SOL 474 17.431 29.391 28.201 1.00 0.00 H -ATOM 1426 OW SOL 475 3.210 28.051 21.041 1.00 0.00 O -ATOM 1427 HW1 SOL 475 4.030 28.441 20.621 1.00 0.00 H -ATOM 1428 HW2 SOL 475 2.940 27.231 20.551 1.00 0.00 H -ATOM 1429 OW SOL 476 14.581 25.971 25.901 1.00 0.00 O -ATOM 1430 HW1 SOL 476 14.531 25.321 26.651 1.00 0.00 H -ATOM 1431 HW2 SOL 476 15.381 26.561 26.031 1.00 0.00 H -ATOM 1432 OW SOL 477 14.001 19.691 22.881 1.00 0.00 O -ATOM 1433 HW1 SOL 477 13.761 19.321 21.981 1.00 0.00 H -ATOM 1434 HW2 SOL 477 14.991 19.851 22.921 1.00 0.00 H -ATOM 1435 OW SOL 478 3.820 25.621 23.421 1.00 0.00 O -ATOM 1436 HW1 SOL 478 4.270 24.721 23.391 1.00 0.00 H -ATOM 1437 HW2 SOL 478 2.880 25.511 23.751 1.00 0.00 H -ATOM 1438 OW SOL 479 6.140 19.841 19.791 1.00 0.00 O -ATOM 1439 HW1 SOL 479 7.120 19.621 19.861 1.00 0.00 H -ATOM 1440 HW2 SOL 479 5.830 19.671 18.861 1.00 0.00 H -ATOM 1441 OW SOL 480 9.220 23.651 27.611 1.00 0.00 O -ATOM 1442 HW1 SOL 480 8.970 23.561 26.651 1.00 0.00 H -ATOM 1443 HW2 SOL 480 9.700 22.831 27.921 1.00 0.00 H -ATOM 1444 OW SOL 481 5.390 19.261 23.741 1.00 0.00 O -ATOM 1445 HW1 SOL 481 4.580 19.271 24.321 1.00 0.00 H -ATOM 1446 HW2 SOL 481 5.420 20.091 23.191 1.00 0.00 H -ATOM 1447 OW SOL 482 2.970 18.971 20.331 1.00 0.00 O -ATOM 1448 HW1 SOL 482 3.460 19.811 20.121 1.00 0.00 H -ATOM 1449 HW2 SOL 482 3.590 18.321 20.781 1.00 0.00 H -ATOM 1450 OW SOL 483 9.351 20.981 23.421 1.00 0.00 O -ATOM 1451 HW1 SOL 483 8.871 21.391 22.641 1.00 0.00 H -ATOM 1452 HW2 SOL 483 10.341 20.961 23.231 1.00 0.00 H -ATOM 1453 OW SOL 484 4.590 30.141 26.031 1.00 0.00 O -ATOM 1454 HW1 SOL 484 3.880 29.871 26.681 1.00 0.00 H -ATOM 1455 HW2 SOL 484 4.330 29.861 25.101 1.00 0.00 H -ATOM 1456 OW SOL 485 10.321 24.111 18.781 1.00 0.00 O -ATOM 1457 HW1 SOL 485 9.911 24.931 18.391 1.00 0.00 H -ATOM 1458 HW2 SOL 485 10.961 24.371 19.511 1.00 0.00 H -ATOM 1459 OW SOL 486 8.660 23.161 25.041 1.00 0.00 O -ATOM 1460 HW1 SOL 486 8.340 23.881 24.421 1.00 0.00 H -ATOM 1461 HW2 SOL 486 8.900 22.351 24.511 1.00 0.00 H -ATOM 1462 OW SOL 487 10.171 19.011 26.151 1.00 0.00 O -ATOM 1463 HW1 SOL 487 9.451 19.061 25.461 1.00 0.00 H -ATOM 1464 HW2 SOL 487 9.931 18.321 26.841 1.00 0.00 H -ATOM 1465 OW SOL 488 14.291 30.351 27.291 1.00 0.00 O -ATOM 1466 HW1 SOL 488 13.741 29.511 27.221 1.00 0.00 H -ATOM 1467 HW2 SOL 488 14.551 30.641 26.371 1.00 0.00 H -ATOM 1468 OW SOL 489 14.661 24.521 28.541 1.00 0.00 O -ATOM 1469 HW1 SOL 489 14.361 23.571 28.611 1.00 0.00 H -ATOM 1470 HW2 SOL 489 15.391 24.681 29.201 1.00 0.00 H -ATOM 1471 OW SOL 490 18.571 26.951 22.391 1.00 0.00 O -ATOM 1472 HW1 SOL 490 18.991 26.311 23.031 1.00 0.00 H -ATOM 1473 HW2 SOL 490 18.191 26.441 21.611 1.00 0.00 H -ATOM 1474 OW SOL 491 13.901 24.371 19.401 1.00 0.00 O -ATOM 1475 HW1 SOL 491 13.361 24.161 20.211 1.00 0.00 H -ATOM 1476 HW2 SOL 491 14.811 23.961 19.491 1.00 0.00 H -ATOM 1477 OW SOL 492 5.270 21.181 21.901 1.00 0.00 O -ATOM 1478 HW1 SOL 492 5.540 20.591 21.151 1.00 0.00 H -ATOM 1479 HW2 SOL 492 5.270 22.131 21.591 1.00 0.00 H -ATOM 1480 OW SOL 493 16.381 29.611 29.411 1.00 0.00 O -ATOM 1481 HW1 SOL 493 16.431 30.421 30.001 1.00 0.00 H -ATOM 1482 HW2 SOL 493 15.521 29.631 28.901 1.00 0.00 H -ATOM 1483 OW SOL 494 7.050 29.121 22.301 1.00 0.00 O -ATOM 1484 HW1 SOL 494 6.910 29.191 23.291 1.00 0.00 H -ATOM 1485 HW2 SOL 494 7.890 28.611 22.121 1.00 0.00 H -ATOM 1486 OW SOL 495 4.100 26.751 31.131 1.00 0.00 O -ATOM 1487 HW1 SOL 495 4.960 26.871 31.631 1.00 0.00 H -ATOM 1488 HW2 SOL 495 3.680 25.881 31.401 1.00 0.00 H -ATOM 1489 OW SOL 496 3.670 29.621 23.631 1.00 0.00 O -ATOM 1490 HW1 SOL 496 3.600 30.451 23.071 1.00 0.00 H -ATOM 1491 HW2 SOL 496 3.710 28.821 23.031 1.00 0.00 H -ATOM 1492 OW SOL 497 5.660 23.991 27.271 1.00 0.00 O -ATOM 1493 HW1 SOL 497 5.780 24.651 26.531 1.00 0.00 H -ATOM 1494 HW2 SOL 497 6.120 24.331 28.101 1.00 0.00 H -ATOM 1495 OW SOL 498 15.821 25.011 23.341 1.00 0.00 O -ATOM 1496 HW1 SOL 498 15.511 25.621 24.071 1.00 0.00 H -ATOM 1497 HW2 SOL 498 16.321 25.531 22.651 1.00 0.00 H -ATOM 1498 OW SOL 499 5.730 27.321 28.911 1.00 0.00 O -ATOM 1499 HW1 SOL 499 6.170 28.211 28.821 1.00 0.00 H -ATOM 1500 HW2 SOL 499 5.100 27.321 29.681 1.00 0.00 H -ATOM 1501 OW SOL 500 13.601 27.241 29.071 1.00 0.00 O -ATOM 1502 HW1 SOL 500 12.851 27.241 28.411 1.00 0.00 H -ATOM 1503 HW2 SOL 500 13.971 26.321 29.161 1.00 0.00 H -ATOM 1504 OW SOL 501 12.091 23.871 21.371 1.00 0.00 O -ATOM 1505 HW1 SOL 501 12.221 23.031 21.911 1.00 0.00 H -ATOM 1506 HW2 SOL 501 11.801 24.611 21.971 1.00 0.00 H -ATOM 1507 OW SOL 502 0.370 0.491 0.211 1.00 0.00 O -ATOM 1508 HW1 SOL 502 0.900 0.001 0.891 1.00 0.00 H -ATOM 1509 HW2 SOL 502 0.590 1.471 0.261 1.00 0.00 H -ATOM 1510 OW SOL 503 7.320 24.961 29.261 1.00 0.00 O -ATOM 1511 HW1 SOL 503 7.910 24.701 28.501 1.00 0.00 H -ATOM 1512 HW2 SOL 503 7.040 25.921 29.151 1.00 0.00 H -ATOM 1513 OW SOL 504 3.070 19.251 24.801 1.00 0.00 O -ATOM 1514 HW1 SOL 504 2.960 20.191 25.131 1.00 0.00 H -ATOM 1515 HW2 SOL 504 3.020 18.621 25.571 1.00 0.00 H -ATOM 1516 OW SOL 505 16.221 22.291 22.361 1.00 0.00 O -ATOM 1517 HW1 SOL 505 16.241 21.531 23.001 1.00 0.00 H -ATOM 1518 HW2 SOL 505 15.741 23.061 22.761 1.00 0.00 H -ATOM 1519 OW SOL 506 10.231 26.281 28.281 1.00 0.00 O -ATOM 1520 HW1 SOL 506 10.381 26.491 29.241 1.00 0.00 H -ATOM 1521 HW2 SOL 506 9.931 25.331 28.191 1.00 0.00 H -ATOM 1522 OW SOL 507 15.401 21.361 19.871 1.00 0.00 O -ATOM 1523 HW1 SOL 507 14.791 20.611 20.101 1.00 0.00 H -ATOM 1524 HW2 SOL 507 15.621 21.881 20.701 1.00 0.00 H -ATOM 1525 OW SOL 508 13.031 27.001 19.041 1.00 0.00 O -ATOM 1526 HW1 SOL 508 13.371 26.071 19.191 1.00 0.00 H -ATOM 1527 HW2 SOL 508 13.211 27.271 18.091 1.00 0.00 H -ATOM 1528 OW SOL 509 3.190 26.721 28.111 1.00 0.00 O -ATOM 1529 HW1 SOL 509 4.120 27.081 28.161 1.00 0.00 H -ATOM 1530 HW2 SOL 509 3.130 25.871 28.631 1.00 0.00 H -ATOM 1531 OW SOL 510 3.390 23.711 28.681 1.00 0.00 O -ATOM 1532 HW1 SOL 510 2.870 22.881 28.511 1.00 0.00 H -ATOM 1533 HW2 SOL 510 4.160 23.761 28.041 1.00 0.00 H -ATOM 1534 OW SOL 511 10.021 26.581 31.001 1.00 0.00 O -ATOM 1535 HW1 SOL 511 10.431 26.261 31.861 1.00 0.00 H -ATOM 1536 HW2 SOL 511 9.061 26.311 30.971 1.00 0.00 H -ATOM 1537 OW SOL 512 0.400 24.061 29.761 1.00 0.00 O -ATOM 1538 HW1 SOL 512 1.250 23.731 29.351 1.00 0.00 H -ATOM 1539 HW2 SOL 512 0.530 24.211 30.741 1.00 0.00 H -ATOM 1540 OW SOL 513 8.150 24.341 21.871 1.00 0.00 O -ATOM 1541 HW1 SOL 513 8.220 23.451 21.411 1.00 0.00 H -ATOM 1542 HW2 SOL 513 7.210 24.681 21.791 1.00 0.00 H -ATOM 1543 OW SOL 514 16.571 24.661 30.681 1.00 0.00 O -ATOM 1544 HW1 SOL 514 16.191 23.971 31.301 1.00 0.00 H -ATOM 1545 HW2 SOL 514 17.391 24.301 30.241 1.00 0.00 H -ATOM 1546 OW SOL 515 6.710 23.261 0.081 1.00 0.00 O -ATOM 1547 HW1 SOL 515 6.370 22.371 -0.219 1.00 0.00 H -ATOM 1548 HW2 SOL 515 6.970 23.801 -0.719 1.00 0.00 H -ATOM 1549 OW SOL 516 4.730 23.621 20.531 1.00 0.00 O -ATOM 1550 HW1 SOL 516 5.340 24.421 20.571 1.00 0.00 H -ATOM 1551 HW2 SOL 516 3.780 23.931 20.601 1.00 0.00 H -ATOM 1552 OW SOL 517 13.471 29.211 30.961 1.00 0.00 O -ATOM 1553 HW1 SOL 517 13.711 28.581 30.221 1.00 0.00 H -ATOM 1554 HW2 SOL 517 12.571 29.611 30.781 1.00 0.00 H -ATOM 1555 OW SOL 518 13.021 27.171 21.711 1.00 0.00 O -ATOM 1556 HW1 SOL 518 12.161 26.861 22.131 1.00 0.00 H -ATOM 1557 HW2 SOL 518 12.981 27.031 20.721 1.00 0.00 H -ATOM 1558 OW SOL 519 0.830 31.201 28.841 1.00 0.00 O -ATOM 1559 HW1 SOL 519 0.780 31.191 29.841 1.00 0.00 H -ATOM 1560 HW2 SOL 519 0.000 30.791 28.461 1.00 0.00 H -ATOM 1561 OW SOL 520 9.030 19.481 19.951 1.00 0.00 O -ATOM 1562 HW1 SOL 520 9.540 19.491 19.091 1.00 0.00 H -ATOM 1563 HW2 SOL 520 9.590 19.061 20.661 1.00 0.00 H -ATOM 1564 OW SOL 521 17.261 19.971 23.851 1.00 0.00 O -ATOM 1565 HW1 SOL 521 17.991 19.801 23.181 1.00 0.00 H -ATOM 1566 HW2 SOL 521 16.951 19.101 24.231 1.00 0.00 H -ATOM 1567 OW SOL 522 12.801 27.891 25.341 1.00 0.00 O -ATOM 1568 HW1 SOL 522 13.401 27.081 25.361 1.00 0.00 H -ATOM 1569 HW2 SOL 522 13.201 28.581 24.741 1.00 0.00 H -ATOM 1570 OW SOL 523 18.411 20.371 28.251 1.00 0.00 O -ATOM 1571 HW1 SOL 523 18.801 19.521 27.891 1.00 0.00 H -ATOM 1572 HW2 SOL 523 17.431 20.391 28.061 1.00 0.00 H -ATOM 1573 OW SOL 524 2.630 21.881 25.821 1.00 0.00 O -ATOM 1574 HW1 SOL 524 1.840 22.391 25.481 1.00 0.00 H -ATOM 1575 HW2 SOL 524 2.540 21.731 26.801 1.00 0.00 H -ATOM 1576 OW SOL 525 8.220 28.641 1.111 1.00 0.00 O -ATOM 1577 HW1 SOL 525 8.620 28.631 0.191 1.00 0.00 H -ATOM 1578 HW2 SOL 525 8.320 29.561 1.511 1.00 0.00 H -ATOM 1579 OW SOL 526 9.160 27.721 21.531 1.00 0.00 O -ATOM 1580 HW1 SOL 526 9.790 28.101 20.851 1.00 0.00 H -ATOM 1581 HW2 SOL 526 9.560 26.891 21.921 1.00 0.00 H -ATOM 1582 OW SOL 527 16.141 0.311 0.281 1.00 0.00 O -ATOM 1583 HW1 SOL 527 16.741 0.341 1.081 1.00 0.00 H -ATOM 1584 HW2 SOL 527 15.391 0.951 0.411 1.00 0.00 H -ATOM 1585 OW SOL 528 10.391 29.601 25.581 1.00 0.00 O -ATOM 1586 HW1 SOL 528 9.691 29.131 26.121 1.00 0.00 H -ATOM 1587 HW2 SOL 528 10.981 28.921 25.151 1.00 0.00 H -ATOM 1588 OW SOL 529 10.141 20.981 28.331 1.00 0.00 O -ATOM 1589 HW1 SOL 529 10.061 20.621 27.401 1.00 0.00 H -ATOM 1590 HW2 SOL 529 10.121 20.221 28.981 1.00 0.00 H -ATOM 1591 OW SOL 530 17.091 22.471 1.201 1.00 0.00 O -ATOM 1592 HW1 SOL 530 17.821 23.161 1.241 1.00 0.00 H -ATOM 1593 HW2 SOL 530 17.371 21.721 0.611 1.00 0.00 H -ATOM 1594 OW SOL 531 0.750 22.071 18.951 1.00 0.00 O -ATOM 1595 HW1 SOL 531 -0.170 21.791 18.661 1.00 0.00 H -ATOM 1596 HW2 SOL 531 1.060 22.841 18.391 1.00 0.00 H -ATOM 1597 OW SOL 532 16.741 27.451 31.161 1.00 0.00 O -ATOM 1598 HW1 SOL 532 16.471 26.561 30.791 1.00 0.00 H -ATOM 1599 HW2 SOL 532 16.751 28.131 30.431 1.00 0.00 H -ATOM 1600 OW SOL 533 12.251 21.871 23.111 1.00 0.00 O -ATOM 1601 HW1 SOL 533 12.901 21.131 23.001 1.00 0.00 H -ATOM 1602 HW2 SOL 533 12.451 22.371 23.951 1.00 0.00 H -ATOM 1603 OW SOL 534 5.940 26.071 25.141 1.00 0.00 O -ATOM 1604 HW1 SOL 534 6.440 26.921 24.951 1.00 0.00 H -ATOM 1605 HW2 SOL 534 5.060 26.091 24.661 1.00 0.00 H -ATOM 1606 OW SOL 535 8.590 28.181 27.231 1.00 0.00 O -ATOM 1607 HW1 SOL 535 9.130 27.491 27.711 1.00 0.00 H -ATOM 1608 HW2 SOL 535 8.270 28.871 27.891 1.00 0.00 H -ATOM 1609 OW SOL 536 10.831 28.461 19.491 1.00 0.00 O -ATOM 1610 HW1 SOL 536 10.601 28.991 18.671 1.00 0.00 H -ATOM 1611 HW2 SOL 536 11.641 27.901 19.301 1.00 0.00 H -ATOM 1612 OW SOL 537 0.790 31.021 25.151 1.00 0.00 O -ATOM 1613 HW1 SOL 537 0.780 30.551 26.031 1.00 0.00 H -ATOM 1614 HW2 SOL 537 1.610 30.741 24.641 1.00 0.00 H -ATOM 1615 OW SOL 538 18.241 20.541 30.891 1.00 0.00 O -ATOM 1616 HW1 SOL 538 18.201 19.641 31.331 1.00 0.00 H -ATOM 1617 HW2 SOL 538 18.271 20.431 29.901 1.00 0.00 H -ATOM 1618 OW SOL 539 4.280 22.861 23.821 1.00 0.00 O -ATOM 1619 HW1 SOL 539 4.580 22.141 23.201 1.00 0.00 H -ATOM 1620 HW2 SOL 539 3.890 22.461 24.651 1.00 0.00 H -ATOM 1621 OW SOL 540 14.241 20.761 29.741 1.00 0.00 O -ATOM 1622 HW1 SOL 540 14.761 20.111 30.291 1.00 0.00 H -ATOM 1623 HW2 SOL 540 13.751 21.391 30.351 1.00 0.00 H -ATOM 1624 OW SOL 541 10.011 18.961 30.161 1.00 0.00 O -ATOM 1625 HW1 SOL 541 9.381 18.241 29.851 1.00 0.00 H -ATOM 1626 HW2 SOL 541 10.941 18.601 30.161 1.00 0.00 H -ATOM 1627 OW SOL 542 7.700 0.691 21.631 1.00 0.00 O -ATOM 1628 HW1 SOL 542 7.240 -0.179 21.801 1.00 0.00 H -ATOM 1629 HW2 SOL 542 8.610 0.661 22.041 1.00 0.00 H -ATOM 1630 OW SOL 543 13.521 19.141 20.301 1.00 0.00 O -ATOM 1631 HW1 SOL 543 13.871 18.731 19.461 1.00 0.00 H -ATOM 1632 HW2 SOL 543 12.621 18.761 20.501 1.00 0.00 H -ATOM 1633 OW SOL 544 13.001 23.151 25.531 1.00 0.00 O -ATOM 1634 HW1 SOL 544 12.411 23.951 25.571 1.00 0.00 H -ATOM 1635 HW2 SOL 544 13.151 22.801 26.461 1.00 0.00 H -ATOM 1636 OW SOL 545 15.931 20.831 27.441 1.00 0.00 O -ATOM 1637 HW1 SOL 545 15.091 20.821 27.981 1.00 0.00 H -ATOM 1638 HW2 SOL 545 15.951 21.661 26.881 1.00 0.00 H -ATOM 1639 OW SOL 546 0.390 29.391 21.621 1.00 0.00 O -ATOM 1640 HW1 SOL 546 1.380 29.281 21.531 1.00 0.00 H -ATOM 1641 HW2 SOL 546 -0.010 28.531 21.941 1.00 0.00 H -ATOM 1642 OW SOL 547 20.921 6.280 1.130 1.00 0.00 O -ATOM 1643 HW1 SOL 547 19.991 6.260 1.500 1.00 0.00 H -ATOM 1644 HW2 SOL 547 20.931 5.890 0.210 1.00 0.00 H -ATOM 1645 OW SOL 548 20.871 2.750 9.961 1.00 0.00 O -ATOM 1646 HW1 SOL 548 21.221 2.580 10.881 1.00 0.00 H -ATOM 1647 HW2 SOL 548 19.991 2.300 9.841 1.00 0.00 H -ATOM 1648 OW SOL 549 18.811 3.680 6.470 1.00 0.00 O -ATOM 1649 HW1 SOL 549 17.991 4.110 6.860 1.00 0.00 H -ATOM 1650 HW2 SOL 549 18.531 2.950 5.840 1.00 0.00 H -ATOM 1651 OW SOL 550 24.311 12.751 11.651 1.00 0.00 O -ATOM 1652 HW1 SOL 550 23.381 12.681 11.281 1.00 0.00 H -ATOM 1653 HW2 SOL 550 24.421 13.641 12.091 1.00 0.00 H -ATOM 1654 OW SOL 551 29.971 7.030 7.170 1.00 0.00 O -ATOM 1655 HW1 SOL 551 30.541 7.810 6.920 1.00 0.00 H -ATOM 1656 HW2 SOL 551 29.371 7.290 7.930 1.00 0.00 H -ATOM 1657 OW SOL 552 26.301 11.441 10.231 1.00 0.00 O -ATOM 1658 HW1 SOL 552 25.521 11.611 10.831 1.00 0.00 H -ATOM 1659 HW2 SOL 552 26.641 12.311 9.871 1.00 0.00 H -ATOM 1660 OW SOL 553 27.121 7.980 18.231 1.00 0.00 O -ATOM 1661 HW1 SOL 553 27.081 8.740 18.881 1.00 0.00 H -ATOM 1662 HW2 SOL 553 27.341 8.340 17.321 1.00 0.00 H -ATOM 1663 OW SOL 554 25.471 10.121 6.650 1.00 0.00 O -ATOM 1664 HW1 SOL 554 26.161 9.961 7.350 1.00 0.00 H -ATOM 1665 HW2 SOL 554 24.741 10.691 7.030 1.00 0.00 H -ATOM 1666 OW SOL 555 25.481 11.611 18.031 1.00 0.00 O -ATOM 1667 HW1 SOL 555 26.081 12.401 18.171 1.00 0.00 H -ATOM 1668 HW2 SOL 555 24.621 11.921 17.621 1.00 0.00 H -ATOM 1669 OW SOL 556 21.971 14.351 10.611 1.00 0.00 O -ATOM 1670 HW1 SOL 556 21.191 14.041 10.081 1.00 0.00 H -ATOM 1671 HW2 SOL 556 22.551 14.931 10.041 1.00 0.00 H -ATOM 1672 OW SOL 557 23.001 3.920 14.991 1.00 0.00 O -ATOM 1673 HW1 SOL 557 23.821 3.360 15.081 1.00 0.00 H -ATOM 1674 HW2 SOL 557 22.191 3.340 15.031 1.00 0.00 H -ATOM 1675 OW SOL 558 20.931 17.131 4.830 1.00 0.00 O -ATOM 1676 HW1 SOL 558 21.271 17.901 5.370 1.00 0.00 H -ATOM 1677 HW2 SOL 558 21.371 17.131 3.930 1.00 0.00 H -ATOM 1678 OW SOL 559 29.891 13.411 16.901 1.00 0.00 O -ATOM 1679 HW1 SOL 559 30.361 13.411 17.781 1.00 0.00 H -ATOM 1680 HW2 SOL 559 29.411 12.541 16.791 1.00 0.00 H -ATOM 1681 OW SOL 560 20.921 14.341 5.380 1.00 0.00 O -ATOM 1682 HW1 SOL 560 20.661 15.301 5.380 1.00 0.00 H -ATOM 1683 HW2 SOL 560 20.211 13.801 5.830 1.00 0.00 H -ATOM 1684 OW SOL 561 21.021 10.911 8.860 1.00 0.00 O -ATOM 1685 HW1 SOL 561 21.161 10.071 9.380 1.00 0.00 H -ATOM 1686 HW2 SOL 561 20.471 11.551 9.410 1.00 0.00 H -ATOM 1687 OW SOL 562 24.821 17.861 14.391 1.00 0.00 O -ATOM 1688 HW1 SOL 562 23.901 17.691 14.741 1.00 0.00 H -ATOM 1689 HW2 SOL 562 25.101 18.781 14.651 1.00 0.00 H -ATOM 1690 OW SOL 563 24.681 9.641 1.230 1.00 0.00 O -ATOM 1691 HW1 SOL 563 24.751 10.481 0.690 1.00 0.00 H -ATOM 1692 HW2 SOL 563 25.141 9.771 2.110 1.00 0.00 H -ATOM 1693 OW SOL 564 19.841 6.430 5.630 1.00 0.00 O -ATOM 1694 HW1 SOL 564 19.391 5.550 5.800 1.00 0.00 H -ATOM 1695 HW2 SOL 564 19.831 6.970 6.470 1.00 0.00 H -ATOM 1696 OW SOL 565 18.891 15.961 1.170 1.00 0.00 O -ATOM 1697 HW1 SOL 565 18.701 15.001 1.380 1.00 0.00 H -ATOM 1698 HW2 SOL 565 18.561 16.541 1.920 1.00 0.00 H -ATOM 1699 OW SOL 566 19.751 7.370 15.971 1.00 0.00 O -ATOM 1700 HW1 SOL 566 20.631 7.240 16.421 1.00 0.00 H -ATOM 1701 HW2 SOL 566 19.621 8.340 15.751 1.00 0.00 H -ATOM 1702 OW SOL 567 24.751 13.651 7.260 1.00 0.00 O -ATOM 1703 HW1 SOL 567 24.261 12.781 7.350 1.00 0.00 H -ATOM 1704 HW2 SOL 567 24.521 14.081 6.390 1.00 0.00 H -ATOM 1705 OW SOL 568 26.711 0.040 5.020 1.00 0.00 O -ATOM 1706 HW1 SOL 568 27.111 0.950 4.930 1.00 0.00 H -ATOM 1707 HW2 SOL 568 25.711 0.120 5.080 1.00 0.00 H -ATOM 1708 OW SOL 569 20.591 9.761 12.641 1.00 0.00 O -ATOM 1709 HW1 SOL 569 21.481 9.311 12.501 1.00 0.00 H -ATOM 1710 HW2 SOL 569 19.861 9.111 12.451 1.00 0.00 H -ATOM 1711 OW SOL 570 21.791 2.510 18.011 1.00 0.00 O -ATOM 1712 HW1 SOL 570 22.501 3.220 18.071 1.00 0.00 H -ATOM 1713 HW2 SOL 570 20.911 2.900 18.291 1.00 0.00 H -ATOM 1714 OW SOL 571 2.051 14.171 9.531 1.00 0.00 O -ATOM 1715 HW1 SOL 571 1.461 14.231 10.331 1.00 0.00 H -ATOM 1716 HW2 SOL 571 1.901 13.291 9.071 1.00 0.00 H -ATOM 1717 OW SOL 572 24.601 7.290 2.700 1.00 0.00 O -ATOM 1718 HW1 SOL 572 24.841 7.980 2.020 1.00 0.00 H -ATOM 1719 HW2 SOL 572 23.821 7.620 3.240 1.00 0.00 H -ATOM 1720 OW SOL 573 0.201 3.450 9.441 1.00 0.00 O -ATOM 1721 HW1 SOL 573 -0.659 2.950 9.311 1.00 0.00 H -ATOM 1722 HW2 SOL 573 0.821 2.910 10.001 1.00 0.00 H -ATOM 1723 OW SOL 574 26.691 6.050 14.651 1.00 0.00 O -ATOM 1724 HW1 SOL 574 26.221 6.020 15.541 1.00 0.00 H -ATOM 1725 HW2 SOL 574 26.181 5.500 13.991 1.00 0.00 H -ATOM 1726 OW SOL 575 28.351 8.900 15.721 1.00 0.00 O -ATOM 1727 HW1 SOL 575 28.811 8.060 15.431 1.00 0.00 H -ATOM 1728 HW2 SOL 575 27.791 9.240 14.971 1.00 0.00 H -ATOM 1729 OW SOL 576 28.531 4.100 12.421 1.00 0.00 O -ATOM 1730 HW1 SOL 576 27.761 4.440 12.961 1.00 0.00 H -ATOM 1731 HW2 SOL 576 28.191 3.590 11.631 1.00 0.00 H -ATOM 1732 OW SOL 577 29.031 7.010 4.290 1.00 0.00 O -ATOM 1733 HW1 SOL 577 29.291 6.970 5.250 1.00 0.00 H -ATOM 1734 HW2 SOL 577 28.181 6.500 4.150 1.00 0.00 H -ATOM 1735 OW SOL 578 19.381 8.110 7.890 1.00 0.00 O -ATOM 1736 HW1 SOL 578 20.371 7.990 7.980 1.00 0.00 H -ATOM 1737 HW2 SOL 578 19.141 9.060 8.100 1.00 0.00 H -ATOM 1738 OW SOL 579 19.921 18.211 15.711 1.00 0.00 O -ATOM 1739 HW1 SOL 579 19.821 18.061 16.701 1.00 0.00 H -ATOM 1740 HW2 SOL 579 19.061 18.571 15.351 1.00 0.00 H -ATOM 1741 OW SOL 580 27.271 3.480 1.950 1.00 0.00 O -ATOM 1742 HW1 SOL 580 27.861 4.110 1.460 1.00 0.00 H -ATOM 1743 HW2 SOL 580 27.461 2.540 1.660 1.00 0.00 H -ATOM 1744 OW SOL 581 24.121 1.960 8.850 1.00 0.00 O -ATOM 1745 HW1 SOL 581 24.071 1.910 9.850 1.00 0.00 H -ATOM 1746 HW2 SOL 581 24.141 2.920 8.560 1.00 0.00 H -ATOM 1747 OW SOL 582 28.701 14.561 4.770 1.00 0.00 O -ATOM 1748 HW1 SOL 582 28.241 15.281 4.250 1.00 0.00 H -ATOM 1749 HW2 SOL 582 28.661 14.761 5.750 1.00 0.00 H -ATOM 1750 OW SOL 583 22.131 18.011 8.530 1.00 0.00 O -ATOM 1751 HW1 SOL 583 22.631 17.151 8.590 1.00 0.00 H -ATOM 1752 HW2 SOL 583 22.781 18.781 8.500 1.00 0.00 H -ATOM 1753 OW SOL 584 30.891 15.501 15.061 1.00 0.00 O -ATOM 1754 HW1 SOL 584 30.951 14.731 15.701 1.00 0.00 H -ATOM 1755 HW2 SOL 584 30.371 15.241 14.261 1.00 0.00 H -ATOM 1756 OW SOL 585 21.831 9.431 2.420 1.00 0.00 O -ATOM 1757 HW1 SOL 585 22.651 9.821 2.000 1.00 0.00 H -ATOM 1758 HW2 SOL 585 21.561 8.611 1.930 1.00 0.00 H -ATOM 1759 OW SOL 586 23.231 12.661 17.271 1.00 0.00 O -ATOM 1760 HW1 SOL 586 22.731 12.671 16.411 1.00 0.00 H -ATOM 1761 HW2 SOL 586 22.601 12.481 18.031 1.00 0.00 H -ATOM 1762 OW SOL 587 29.731 17.761 2.370 1.00 0.00 O -ATOM 1763 HW1 SOL 587 29.131 17.141 2.870 1.00 0.00 H -ATOM 1764 HW2 SOL 587 30.041 17.321 1.520 1.00 0.00 H -ATOM 1765 OW SOL 588 20.641 2.850 14.981 1.00 0.00 O -ATOM 1766 HW1 SOL 588 19.841 3.450 14.851 1.00 0.00 H -ATOM 1767 HW2 SOL 588 20.541 2.360 15.841 1.00 0.00 H -ATOM 1768 OW SOL 589 23.261 17.431 3.230 1.00 0.00 O -ATOM 1769 HW1 SOL 589 23.591 17.821 4.090 1.00 0.00 H -ATOM 1770 HW2 SOL 589 24.021 17.361 2.580 1.00 0.00 H -ATOM 1771 OW SOL 590 21.111 17.851 12.411 1.00 0.00 O -ATOM 1772 HW1 SOL 590 21.681 17.201 12.911 1.00 0.00 H -ATOM 1773 HW2 SOL 590 20.951 17.521 11.481 1.00 0.00 H -ATOM 1774 OW SOL 591 28.021 16.981 9.040 1.00 0.00 O -ATOM 1775 HW1 SOL 591 28.821 16.411 9.250 1.00 0.00 H -ATOM 1776 HW2 SOL 591 27.531 16.581 8.270 1.00 0.00 H -ATOM 1777 OW SOL 592 22.441 7.000 4.800 1.00 0.00 O -ATOM 1778 HW1 SOL 592 22.891 6.100 4.770 1.00 0.00 H -ATOM 1779 HW2 SOL 592 21.501 6.890 5.130 1.00 0.00 H -ATOM 1780 OW SOL 593 24.761 1.220 1.170 1.00 0.00 O -ATOM 1781 HW1 SOL 593 25.741 1.000 1.240 1.00 0.00 H -ATOM 1782 HW2 SOL 593 24.451 1.050 0.240 1.00 0.00 H -ATOM 1783 OW SOL 594 26.431 2.640 17.491 1.00 0.00 O -ATOM 1784 HW1 SOL 594 27.101 2.030 17.921 1.00 0.00 H -ATOM 1785 HW2 SOL 594 25.701 2.830 18.141 1.00 0.00 H -ATOM 1786 OW SOL 595 27.501 15.141 11.951 1.00 0.00 O -ATOM 1787 HW1 SOL 595 27.271 14.891 11.011 1.00 0.00 H -ATOM 1788 HW2 SOL 595 28.111 14.451 12.341 1.00 0.00 H -ATOM 1789 OW SOL 596 26.651 14.021 9.240 1.00 0.00 O -ATOM 1790 HW1 SOL 596 27.551 14.161 8.820 1.00 0.00 H -ATOM 1791 HW2 SOL 596 25.941 14.041 8.530 1.00 0.00 H -ATOM 1792 OW SOL 597 27.841 5.030 8.990 1.00 0.00 O -ATOM 1793 HW1 SOL 597 27.591 4.940 8.030 1.00 0.00 H -ATOM 1794 HW2 SOL 597 28.321 4.210 9.300 1.00 0.00 H -ATOM 1795 OW SOL 598 24.011 0.640 5.120 1.00 0.00 O -ATOM 1796 HW1 SOL 598 23.201 0.650 5.700 1.00 0.00 H -ATOM 1797 HW2 SOL 598 24.041 1.470 4.570 1.00 0.00 H -ATOM 1798 OW SOL 599 1.731 11.881 0.410 1.00 0.00 O -ATOM 1799 HW1 SOL 599 2.051 11.121 0.980 1.00 0.00 H -ATOM 1800 HW2 SOL 599 0.811 12.151 0.710 1.00 0.00 H -ATOM 1801 OW SOL 600 21.591 0.350 1.710 1.00 0.00 O -ATOM 1802 HW1 SOL 600 22.081 1.190 1.500 1.00 0.00 H -ATOM 1803 HW2 SOL 600 22.211 -0.300 2.160 1.00 0.00 H -ATOM 1804 OW SOL 601 27.971 2.360 4.800 1.00 0.00 O -ATOM 1805 HW1 SOL 601 27.491 2.770 4.020 1.00 0.00 H -ATOM 1806 HW2 SOL 601 28.961 2.340 4.610 1.00 0.00 H -ATOM 1807 OW SOL 602 29.381 6.830 14.641 1.00 0.00 O -ATOM 1808 HW1 SOL 602 28.581 6.220 14.671 1.00 0.00 H -ATOM 1809 HW2 SOL 602 30.191 6.300 14.401 1.00 0.00 H -ATOM 1810 OW SOL 603 30.891 15.701 7.930 1.00 0.00 O -ATOM 1811 HW1 SOL 603 31.101 16.441 7.280 1.00 0.00 H -ATOM 1812 HW2 SOL 603 31.571 15.701 8.660 1.00 0.00 H -ATOM 1813 OW SOL 604 23.211 11.521 7.410 1.00 0.00 O -ATOM 1814 HW1 SOL 604 22.501 11.251 8.060 1.00 0.00 H -ATOM 1815 HW2 SOL 604 22.951 11.241 6.480 1.00 0.00 H -ATOM 1816 OW SOL 605 0.101 17.971 5.910 1.00 0.00 O -ATOM 1817 HW1 SOL 605 0.541 18.611 5.270 1.00 0.00 H -ATOM 1818 HW2 SOL 605 -0.399 18.491 6.610 1.00 0.00 H -ATOM 1819 OW SOL 606 28.941 5.490 0.160 1.00 0.00 O -ATOM 1820 HW1 SOL 606 28.531 6.310 -0.230 1.00 0.00 H -ATOM 1821 HW2 SOL 606 29.581 5.750 0.890 1.00 0.00 H -ATOM 1822 OW SOL 607 19.401 5.560 13.861 1.00 0.00 O -ATOM 1823 HW1 SOL 607 20.321 5.550 13.451 1.00 0.00 H -ATOM 1824 HW2 SOL 607 19.341 6.300 14.531 1.00 0.00 H -ATOM 1825 OW SOL 608 24.231 2.220 11.471 1.00 0.00 O -ATOM 1826 HW1 SOL 608 24.611 1.380 11.841 1.00 0.00 H -ATOM 1827 HW2 SOL 608 23.351 2.410 11.911 1.00 0.00 H -ATOM 1828 OW SOL 609 27.281 4.540 6.420 1.00 0.00 O -ATOM 1829 HW1 SOL 609 26.961 5.260 5.800 1.00 0.00 H -ATOM 1830 HW2 SOL 609 27.521 3.730 5.890 1.00 0.00 H -ATOM 1831 OW SOL 610 28.791 0.390 7.530 1.00 0.00 O -ATOM 1832 HW1 SOL 610 28.071 0.440 6.840 1.00 0.00 H -ATOM 1833 HW2 SOL 610 28.551 -0.300 8.220 1.00 0.00 H -ATOM 1834 OW SOL 611 23.501 13.851 1.740 1.00 0.00 O -ATOM 1835 HW1 SOL 611 22.631 13.701 2.210 1.00 0.00 H -ATOM 1836 HW2 SOL 611 23.331 14.111 0.790 1.00 0.00 H -ATOM 1837 OW SOL 612 23.891 2.560 3.280 1.00 0.00 O -ATOM 1838 HW1 SOL 612 24.161 1.970 2.530 1.00 0.00 H -ATOM 1839 HW2 SOL 612 23.891 3.510 2.970 1.00 0.00 H -ATOM 1840 OW SOL 613 29.261 13.471 13.401 1.00 0.00 O -ATOM 1841 HW1 SOL 613 28.461 13.241 13.951 1.00 0.00 H -ATOM 1842 HW2 SOL 613 30.091 13.211 13.891 1.00 0.00 H -ATOM 1843 OW SOL 614 29.731 11.951 11.001 1.00 0.00 O -ATOM 1844 HW1 SOL 614 29.331 12.391 11.811 1.00 0.00 H -ATOM 1845 HW2 SOL 614 29.321 12.321 10.171 1.00 0.00 H -ATOM 1846 OW SOL 615 27.771 0.890 14.021 1.00 0.00 O -ATOM 1847 HW1 SOL 615 28.021 0.690 13.071 1.00 0.00 H -ATOM 1848 HW2 SOL 615 28.491 1.450 14.441 1.00 0.00 H -ATOM 1849 OW SOL 616 28.421 11.161 17.191 1.00 0.00 O -ATOM 1850 HW1 SOL 616 27.431 11.221 17.291 1.00 0.00 H -ATOM 1851 HW2 SOL 616 28.651 10.361 16.631 1.00 0.00 H -ATOM 1852 OW SOL 617 25.671 10.501 3.680 1.00 0.00 O -ATOM 1853 HW1 SOL 617 25.531 10.571 4.670 1.00 0.00 H -ATOM 1854 HW2 SOL 617 26.511 9.991 3.500 1.00 0.00 H -ATOM 1855 OW SOL 618 22.721 8.130 12.511 1.00 0.00 O -ATOM 1856 HW1 SOL 618 23.581 8.250 13.011 1.00 0.00 H -ATOM 1857 HW2 SOL 618 22.301 7.260 12.781 1.00 0.00 H -ATOM 1858 OW SOL 619 0.131 3.860 12.621 1.00 0.00 O -ATOM 1859 HW1 SOL 619 0.341 4.600 13.261 1.00 0.00 H -ATOM 1860 HW2 SOL 619 -0.759 4.030 12.191 1.00 0.00 H -ATOM 1861 OW SOL 620 19.261 15.641 13.311 1.00 0.00 O -ATOM 1862 HW1 SOL 620 18.801 16.461 12.971 1.00 0.00 H -ATOM 1863 HW2 SOL 620 20.241 15.831 13.401 1.00 0.00 H -ATOM 1864 OW SOL 621 22.291 11.001 5.010 1.00 0.00 O -ATOM 1865 HW1 SOL 621 22.221 11.831 4.450 1.00 0.00 H -ATOM 1866 HW2 SOL 621 22.331 10.201 4.410 1.00 0.00 H -ATOM 1867 OW SOL 622 24.281 5.370 8.650 1.00 0.00 O -ATOM 1868 HW1 SOL 622 24.401 6.030 7.910 1.00 0.00 H -ATOM 1869 HW2 SOL 622 24.741 5.710 9.480 1.00 0.00 H -ATOM 1870 OW SOL 623 31.141 13.481 3.880 1.00 0.00 O -ATOM 1871 HW1 SOL 623 31.641 14.251 4.280 1.00 0.00 H -ATOM 1872 HW2 SOL 623 30.191 13.501 4.200 1.00 0.00 H -ATOM 1873 OW SOL 624 22.161 15.101 13.291 1.00 0.00 O -ATOM 1874 HW1 SOL 624 21.951 14.661 12.421 1.00 0.00 H -ATOM 1875 HW2 SOL 624 23.131 15.361 13.321 1.00 0.00 H -ATOM 1876 OW SOL 625 22.641 7.510 15.981 1.00 0.00 O -ATOM 1877 HW1 SOL 625 23.321 8.060 15.511 1.00 0.00 H -ATOM 1878 HW2 SOL 625 23.041 6.630 16.251 1.00 0.00 H -ATOM 1879 OW SOL 626 28.751 1.050 17.701 1.00 0.00 O -ATOM 1880 HW1 SOL 626 28.811 1.900 17.181 1.00 0.00 H -ATOM 1881 HW2 SOL 626 29.071 0.290 17.131 1.00 0.00 H -ATOM 1882 OW SOL 627 23.661 0.500 17.401 1.00 0.00 O -ATOM 1883 HW1 SOL 627 23.241 -0.070 16.701 1.00 0.00 H -ATOM 1884 HW2 SOL 627 23.001 1.190 17.721 1.00 0.00 H -ATOM 1885 OW SOL 628 24.351 8.700 10.291 1.00 0.00 O -ATOM 1886 HW1 SOL 628 24.791 9.590 10.201 1.00 0.00 H -ATOM 1887 HW2 SOL 628 23.721 8.700 11.061 1.00 0.00 H -ATOM 1888 OW SOL 629 0.991 8.620 10.451 1.00 0.00 O -ATOM 1889 HW1 SOL 629 0.241 8.620 9.791 1.00 0.00 H -ATOM 1890 HW2 SOL 629 1.361 7.700 10.541 1.00 0.00 H -ATOM 1891 OW SOL 630 30.711 5.250 2.750 1.00 0.00 O -ATOM 1892 HW1 SOL 630 30.841 4.410 3.290 1.00 0.00 H -ATOM 1893 HW2 SOL 630 30.421 5.990 3.350 1.00 0.00 H -ATOM 1894 OW SOL 631 21.691 2.130 12.311 1.00 0.00 O -ATOM 1895 HW1 SOL 631 21.461 2.500 13.211 1.00 0.00 H -ATOM 1896 HW2 SOL 631 21.391 1.180 12.251 1.00 0.00 H -ATOM 1897 OW SOL 632 18.991 13.101 12.821 1.00 0.00 O -ATOM 1898 HW1 SOL 632 19.521 12.611 13.501 1.00 0.00 H -ATOM 1899 HW2 SOL 632 19.211 14.081 12.871 1.00 0.00 H -ATOM 1900 OW SOL 633 25.941 6.340 10.641 1.00 0.00 O -ATOM 1901 HW1 SOL 633 26.531 6.080 9.881 1.00 0.00 H -ATOM 1902 HW2 SOL 633 25.661 7.300 10.531 1.00 0.00 H -ATOM 1903 OW SOL 634 21.691 0.630 6.180 1.00 0.00 O -ATOM 1904 HW1 SOL 634 21.581 1.570 6.510 1.00 0.00 H -ATOM 1905 HW2 SOL 634 21.641 0.000 6.950 1.00 0.00 H -ATOM 1906 OW SOL 635 28.851 7.660 9.661 1.00 0.00 O -ATOM 1907 HW1 SOL 635 29.001 7.870 10.621 1.00 0.00 H -ATOM 1908 HW2 SOL 635 28.551 6.710 9.571 1.00 0.00 H -ATOM 1909 OW SOL 636 28.421 15.731 17.001 1.00 0.00 O -ATOM 1910 HW1 SOL 636 28.221 16.171 16.121 1.00 0.00 H -ATOM 1911 HW2 SOL 636 28.811 14.821 16.841 1.00 0.00 H -ATOM 1912 OW SOL 637 22.121 8.980 18.041 1.00 0.00 O -ATOM 1913 HW1 SOL 637 22.881 9.420 18.521 1.00 0.00 H -ATOM 1914 HW2 SOL 637 22.471 8.510 17.221 1.00 0.00 H -ATOM 1915 OW SOL 638 29.301 13.331 8.490 1.00 0.00 O -ATOM 1916 HW1 SOL 638 29.371 12.491 7.940 1.00 0.00 H -ATOM 1917 HW2 SOL 638 29.921 14.021 8.130 1.00 0.00 H -ATOM 1918 OW SOL 639 21.811 8.100 9.491 1.00 0.00 O -ATOM 1919 HW1 SOL 639 22.741 8.460 9.541 1.00 0.00 H -ATOM 1920 HW2 SOL 639 21.751 7.250 10.011 1.00 0.00 H -ATOM 1921 OW SOL 640 22.011 5.090 10.061 1.00 0.00 O -ATOM 1922 HW1 SOL 640 21.491 4.260 9.891 1.00 0.00 H -ATOM 1923 HW2 SOL 640 22.781 5.140 9.421 1.00 0.00 H -ATOM 1924 OW SOL 641 30.001 3.800 16.781 1.00 0.00 O -ATOM 1925 HW1 SOL 641 29.551 4.430 17.421 1.00 0.00 H -ATOM 1926 HW2 SOL 641 30.931 4.110 16.611 1.00 0.00 H -ATOM 1927 OW SOL 642 30.221 2.070 14.771 1.00 0.00 O -ATOM 1928 HW1 SOL 642 30.221 2.710 15.541 1.00 0.00 H -ATOM 1929 HW2 SOL 642 30.501 2.550 13.941 1.00 0.00 H -ATOM 1930 OW SOL 643 18.701 13.261 2.000 1.00 0.00 O -ATOM 1931 HW1 SOL 643 17.771 13.471 1.690 1.00 0.00 H -ATOM 1932 HW2 SOL 643 18.801 12.271 2.130 1.00 0.00 H -ATOM 1933 OW SOL 644 19.501 18.011 9.270 1.00 0.00 O -ATOM 1934 HW1 SOL 644 19.081 17.151 9.000 1.00 0.00 H -ATOM 1935 HW2 SOL 644 20.441 18.041 8.930 1.00 0.00 H -ATOM 1936 OW SOL 645 23.661 15.681 9.100 1.00 0.00 O -ATOM 1937 HW1 SOL 645 24.321 16.421 9.190 1.00 0.00 H -ATOM 1938 HW2 SOL 645 24.101 14.891 8.680 1.00 0.00 H -ATOM 1939 OW SOL 646 28.641 7.960 12.381 1.00 0.00 O -ATOM 1940 HW1 SOL 646 29.051 7.640 13.241 1.00 0.00 H -ATOM 1941 HW2 SOL 646 27.681 7.690 12.351 1.00 0.00 H -ATOM 1942 OW SOL 647 19.021 5.440 11.141 1.00 0.00 O -ATOM 1943 HW1 SOL 647 19.871 5.110 10.731 1.00 0.00 H -ATOM 1944 HW2 SOL 647 19.151 5.590 12.121 1.00 0.00 H -ATOM 1945 OW SOL 648 20.511 5.200 17.221 1.00 0.00 O -ATOM 1946 HW1 SOL 648 21.101 4.800 16.521 1.00 0.00 H -ATOM 1947 HW2 SOL 648 19.931 5.910 16.811 1.00 0.00 H -ATOM 1948 OW SOL 649 26.771 5.720 3.250 1.00 0.00 O -ATOM 1949 HW1 SOL 649 26.841 4.830 2.790 1.00 0.00 H -ATOM 1950 HW2 SOL 649 25.831 6.060 3.170 1.00 0.00 H -ATOM 1951 OW SOL 650 21.141 15.641 17.441 1.00 0.00 O -ATOM 1952 HW1 SOL 650 20.841 16.211 18.201 1.00 0.00 H -ATOM 1953 HW2 SOL 650 21.071 14.671 17.701 1.00 0.00 H -ATOM 1954 OW SOL 651 25.331 4.640 12.691 1.00 0.00 O -ATOM 1955 HW1 SOL 651 24.991 3.750 12.391 1.00 0.00 H -ATOM 1956 HW2 SOL 651 25.591 5.180 11.891 1.00 0.00 H -ATOM 1957 OW SOL 652 27.921 16.781 14.651 1.00 0.00 O -ATOM 1958 HW1 SOL 652 27.681 16.601 13.701 1.00 0.00 H -ATOM 1959 HW2 SOL 652 28.221 17.721 14.751 1.00 0.00 H -ATOM 1960 OW SOL 653 23.351 5.000 1.910 1.00 0.00 O -ATOM 1961 HW1 SOL 653 23.961 5.800 1.950 1.00 0.00 H -ATOM 1962 HW2 SOL 653 22.401 5.310 1.980 1.00 0.00 H -ATOM 1963 OW SOL 654 20.211 11.371 14.661 1.00 0.00 O -ATOM 1964 HW1 SOL 654 20.431 10.761 15.421 1.00 0.00 H -ATOM 1965 HW2 SOL 654 20.311 10.881 13.801 1.00 0.00 H -ATOM 1966 OW SOL 655 0.861 10.591 12.341 1.00 0.00 O -ATOM 1967 HW1 SOL 655 1.101 9.961 11.601 1.00 0.00 H -ATOM 1968 HW2 SOL 655 -0.039 10.991 12.161 1.00 0.00 H -ATOM 1969 OW SOL 656 31.141 17.311 11.281 1.00 0.00 O -ATOM 1970 HW1 SOL 656 31.981 17.361 10.741 1.00 0.00 H -ATOM 1971 HW2 SOL 656 30.911 16.351 11.461 1.00 0.00 H -ATOM 1972 OW SOL 657 19.451 12.581 10.221 1.00 0.00 O -ATOM 1973 HW1 SOL 657 19.401 12.571 11.221 1.00 0.00 H -ATOM 1974 HW2 SOL 657 18.621 12.171 9.841 1.00 0.00 H -ATOM 1975 OW SOL 658 25.501 16.621 17.161 1.00 0.00 O -ATOM 1976 HW1 SOL 658 24.941 17.431 17.251 1.00 0.00 H -ATOM 1977 HW2 SOL 658 26.021 16.661 16.301 1.00 0.00 H -ATOM 1978 OW SOL 659 27.651 0.860 1.330 1.00 0.00 O -ATOM 1979 HW1 SOL 659 28.161 0.870 0.470 1.00 0.00 H -ATOM 1980 HW2 SOL 659 28.211 0.440 2.040 1.00 0.00 H -ATOM 1981 OW SOL 660 1.271 15.731 4.770 1.00 0.00 O -ATOM 1982 HW1 SOL 660 1.941 15.851 4.030 1.00 0.00 H -ATOM 1983 HW2 SOL 660 0.871 16.621 5.000 1.00 0.00 H -ATOM 1984 OW SOL 661 19.921 17.941 18.511 1.00 0.00 O -ATOM 1985 HW1 SOL 661 19.511 17.201 19.041 1.00 0.00 H -ATOM 1986 HW2 SOL 661 20.561 18.451 19.091 1.00 0.00 H -ATOM 1987 OW SOL 662 0.191 9.270 6.720 1.00 0.00 O -ATOM 1988 HW1 SOL 662 0.791 8.460 6.740 1.00 0.00 H -ATOM 1989 HW2 SOL 662 0.591 9.960 6.120 1.00 0.00 H -ATOM 1990 OW SOL 663 26.921 12.731 14.221 1.00 0.00 O -ATOM 1991 HW1 SOL 663 26.871 13.061 15.171 1.00 0.00 H -ATOM 1992 HW2 SOL 663 26.061 12.921 13.761 1.00 0.00 H -ATOM 1993 OW SOL 664 25.341 16.161 1.540 1.00 0.00 O -ATOM 1994 HW1 SOL 664 25.431 16.261 0.550 1.00 0.00 H -ATOM 1995 HW2 SOL 664 24.941 15.271 1.750 1.00 0.00 H -ATOM 1996 OW SOL 665 21.251 3.260 7.200 1.00 0.00 O -ATOM 1997 HW1 SOL 665 20.461 3.770 6.860 1.00 0.00 H -ATOM 1998 HW2 SOL 665 21.161 3.110 8.180 1.00 0.00 H -ATOM 1999 OW SOL 666 30.561 16.121 0.310 1.00 0.00 O -ATOM 2000 HW1 SOL 666 30.621 15.191 0.680 1.00 0.00 H -ATOM 2001 HW2 SOL 666 29.971 16.121 -0.490 1.00 0.00 H -ATOM 2002 OW SOL 667 26.841 10.021 13.721 1.00 0.00 O -ATOM 2003 HW1 SOL 667 27.241 10.011 12.801 1.00 0.00 H -ATOM 2004 HW2 SOL 667 26.941 10.941 14.121 1.00 0.00 H -ATOM 2005 OW SOL 668 27.781 9.100 2.910 1.00 0.00 O -ATOM 2006 HW1 SOL 668 28.411 9.480 2.230 1.00 0.00 H -ATOM 2007 HW2 SOL 668 28.181 8.270 3.300 1.00 0.00 H -ATOM 2008 OW SOL 669 22.341 12.881 14.901 1.00 0.00 O -ATOM 2009 HW1 SOL 669 22.211 13.811 14.561 1.00 0.00 H -ATOM 2010 HW2 SOL 669 21.501 12.361 14.771 1.00 0.00 H -ATOM 2011 OW SOL 670 29.011 10.981 6.960 1.00 0.00 O -ATOM 2012 HW1 SOL 670 28.311 10.511 7.500 1.00 0.00 H -ATOM 2013 HW2 SOL 670 29.601 10.301 6.530 1.00 0.00 H -ATOM 2014 OW SOL 671 28.761 2.360 9.711 1.00 0.00 O -ATOM 2015 HW1 SOL 671 28.681 2.000 8.781 1.00 0.00 H -ATOM 2016 HW2 SOL 671 28.741 1.600 10.361 1.00 0.00 H -ATOM 2017 OW SOL 672 24.521 14.871 4.910 1.00 0.00 O -ATOM 2018 HW1 SOL 672 24.941 14.291 4.210 1.00 0.00 H -ATOM 2019 HW2 SOL 672 24.081 15.661 4.470 1.00 0.00 H -ATOM 2020 OW SOL 673 21.171 13.481 2.900 1.00 0.00 O -ATOM 2021 HW1 SOL 673 20.211 13.491 2.630 1.00 0.00 H -ATOM 2022 HW2 SOL 673 21.291 14.011 3.740 1.00 0.00 H -ATOM 2023 OW SOL 674 19.671 10.131 17.261 1.00 0.00 O -ATOM 2024 HW1 SOL 674 18.901 9.801 17.801 1.00 0.00 H -ATOM 2025 HW2 SOL 674 20.521 9.831 17.681 1.00 0.00 H -ATOM 2026 OW SOL 675 25.341 2.030 14.891 1.00 0.00 O -ATOM 2027 HW1 SOL 675 26.241 1.870 14.491 1.00 0.00 H -ATOM 2028 HW2 SOL 675 25.421 2.080 15.881 1.00 0.00 H -ATOM 2029 OW SOL 676 19.341 1.660 3.180 1.00 0.00 O -ATOM 2030 HW1 SOL 676 19.171 2.490 2.640 1.00 0.00 H -ATOM 2031 HW2 SOL 676 20.241 1.290 2.960 1.00 0.00 H -ATOM 2032 OW SOL 677 30.451 13.351 1.190 1.00 0.00 O -ATOM 2033 HW1 SOL 677 29.461 13.241 1.210 1.00 0.00 H -ATOM 2034 HW2 SOL 677 30.791 13.501 2.120 1.00 0.00 H -ATOM 2035 OW SOL 678 24.751 8.420 14.311 1.00 0.00 O -ATOM 2036 HW1 SOL 678 25.311 9.230 14.141 1.00 0.00 H -ATOM 2037 HW2 SOL 678 25.341 7.620 14.341 1.00 0.00 H -ATOM 2038 OW SOL 679 25.781 5.650 17.081 1.00 0.00 O -ATOM 2039 HW1 SOL 679 25.971 6.300 17.821 1.00 0.00 H -ATOM 2040 HW2 SOL 679 26.381 4.850 17.171 1.00 0.00 H -ATOM 2041 OW SOL 680 22.521 17.411 15.601 1.00 0.00 O -ATOM 2042 HW1 SOL 680 21.611 17.821 15.581 1.00 0.00 H -ATOM 2043 HW2 SOL 680 22.451 16.471 15.921 1.00 0.00 H -ATOM 2044 OW SOL 681 30.871 3.250 4.490 1.00 0.00 O -ATOM 2045 HW1 SOL 681 31.521 2.510 4.380 1.00 0.00 H -ATOM 2046 HW2 SOL 681 31.071 3.750 5.330 1.00 0.00 H -ATOM 2047 OW SOL 682 24.561 7.450 6.520 1.00 0.00 O -ATOM 2048 HW1 SOL 682 25.061 8.300 6.330 1.00 0.00 H -ATOM 2049 HW2 SOL 682 23.681 7.470 6.040 1.00 0.00 H -ATOM 2050 OW SOL 683 27.211 13.741 0.160 1.00 0.00 O -ATOM 2051 HW1 SOL 683 26.751 13.891 1.040 1.00 0.00 H -ATOM 2052 HW2 SOL 683 27.651 14.591 -0.140 1.00 0.00 H -ATOM 2053 OW SOL 684 25.231 17.901 9.531 1.00 0.00 O -ATOM 2054 HW1 SOL 684 24.771 18.781 9.401 1.00 0.00 H -ATOM 2055 HW2 SOL 684 26.221 18.021 9.461 1.00 0.00 H -ATOM 2056 OW SOL 685 1.471 18.511 17.201 1.00 0.00 O -ATOM 2057 HW1 SOL 685 0.511 18.401 16.931 1.00 0.00 H -ATOM 2058 HW2 SOL 685 2.031 17.841 16.721 1.00 0.00 H -ATOM 2059 OW SOL 686 27.211 9.561 8.610 1.00 0.00 O -ATOM 2060 HW1 SOL 686 27.751 8.871 9.090 1.00 0.00 H -ATOM 2061 HW2 SOL 686 26.891 10.251 9.270 1.00 0.00 H -ATOM 2062 OW SOL 687 29.451 9.841 0.870 1.00 0.00 O -ATOM 2063 HW1 SOL 687 29.221 10.371 0.050 1.00 0.00 H -ATOM 2064 HW2 SOL 687 30.261 9.281 0.680 1.00 0.00 H -ATOM 2065 OW SOL 688 20.831 13.141 18.441 1.00 0.00 O -ATOM 2066 HW1 SOL 688 20.181 12.411 18.231 1.00 0.00 H -ATOM 2067 HW2 SOL 688 20.871 13.281 19.421 1.00 0.00 H -ATOM 2068 OW SOL 689 19.411 12.401 6.530 1.00 0.00 O -ATOM 2069 HW1 SOL 689 19.401 11.931 7.410 1.00 0.00 H -ATOM 2070 HW2 SOL 689 20.231 12.121 6.020 1.00 0.00 H -ATOM 2071 OW SOL 690 25.341 13.911 16.241 1.00 0.00 O -ATOM 2072 HW1 SOL 690 24.561 13.411 16.621 1.00 0.00 H -ATOM 2073 HW2 SOL 690 25.311 14.861 16.551 1.00 0.00 H -ATOM 2074 OW SOL 691 22.901 4.240 5.200 1.00 0.00 O -ATOM 2075 HW1 SOL 691 23.201 3.520 4.580 1.00 0.00 H -ATOM 2076 HW2 SOL 691 22.511 3.840 6.030 1.00 0.00 H -ATOM 2077 OW SOL 692 21.791 5.470 12.801 1.00 0.00 O -ATOM 2078 HW1 SOL 692 22.171 4.880 13.521 1.00 0.00 H -ATOM 2079 HW2 SOL 692 22.191 5.210 11.921 1.00 0.00 H -ATOM 2080 OW SOL 693 26.741 15.861 6.870 1.00 0.00 O -ATOM 2081 HW1 SOL 693 27.061 15.961 5.930 1.00 0.00 H -ATOM 2082 HW2 SOL 693 25.951 15.241 6.890 1.00 0.00 H -ATOM 2083 OW SOL 694 1.631 2.140 11.121 1.00 0.00 O -ATOM 2084 HW1 SOL 694 2.151 1.490 11.671 1.00 0.00 H -ATOM 2085 HW2 SOL 694 1.141 2.770 11.731 1.00 0.00 H -ATOM 2086 OW SOL 695 28.631 0.340 11.541 1.00 0.00 O -ATOM 2087 HW1 SOL 695 28.001 -0.380 11.231 1.00 0.00 H -ATOM 2088 HW2 SOL 695 29.561 -0.020 11.541 1.00 0.00 H -ATOM 2089 OW SOL 696 26.321 13.301 3.010 1.00 0.00 O -ATOM 2090 HW1 SOL 696 25.861 12.431 3.180 1.00 0.00 H -ATOM 2091 HW2 SOL 696 27.231 13.271 3.420 1.00 0.00 H -ATOM 2092 OW SOL 697 24.801 15.671 12.841 1.00 0.00 O -ATOM 2093 HW1 SOL 697 24.751 16.491 13.411 1.00 0.00 H -ATOM 2094 HW2 SOL 697 25.691 15.641 12.391 1.00 0.00 H -ATOM 2095 OW SOL 698 0.391 4.530 6.910 1.00 0.00 O -ATOM 2096 HW1 SOL 698 -0.199 5.330 6.950 1.00 0.00 H -ATOM 2097 HW2 SOL 698 0.541 4.180 7.840 1.00 0.00 H -ATOM 2098 OW SOL 699 19.011 10.771 3.000 1.00 0.00 O -ATOM 2099 HW1 SOL 699 20.001 10.661 2.910 1.00 0.00 H -ATOM 2100 HW2 SOL 699 18.611 9.911 3.320 1.00 0.00 H -ATOM 2101 OW SOL 700 27.371 16.461 3.370 1.00 0.00 O -ATOM 2102 HW1 SOL 700 26.601 16.111 2.830 1.00 0.00 H -ATOM 2103 HW2 SOL 700 27.051 17.171 3.990 1.00 0.00 H -ATOM 2104 OW SOL 701 20.921 6.280 19.751 1.00 0.00 O -ATOM 2105 HW1 SOL 701 19.991 6.260 20.121 1.00 0.00 H -ATOM 2106 HW2 SOL 701 20.931 5.890 18.831 1.00 0.00 H -ATOM 2107 OW SOL 702 20.871 2.750 28.581 1.00 0.00 O -ATOM 2108 HW1 SOL 702 21.221 2.580 29.501 1.00 0.00 H -ATOM 2109 HW2 SOL 702 19.991 2.300 28.461 1.00 0.00 H -ATOM 2110 OW SOL 703 18.811 3.680 25.091 1.00 0.00 O -ATOM 2111 HW1 SOL 703 17.991 4.110 25.481 1.00 0.00 H -ATOM 2112 HW2 SOL 703 18.531 2.950 24.461 1.00 0.00 H -ATOM 2113 OW SOL 704 24.311 12.751 30.271 1.00 0.00 O -ATOM 2114 HW1 SOL 704 23.381 12.681 29.901 1.00 0.00 H -ATOM 2115 HW2 SOL 704 24.421 13.641 30.711 1.00 0.00 H -ATOM 2116 OW SOL 705 29.971 7.030 25.791 1.00 0.00 O -ATOM 2117 HW1 SOL 705 30.541 7.810 25.541 1.00 0.00 H -ATOM 2118 HW2 SOL 705 29.371 7.290 26.551 1.00 0.00 H -ATOM 2119 OW SOL 706 26.301 11.441 28.851 1.00 0.00 O -ATOM 2120 HW1 SOL 706 25.521 11.611 29.451 1.00 0.00 H -ATOM 2121 HW2 SOL 706 26.641 12.311 28.491 1.00 0.00 H -ATOM 2122 OW SOL 707 25.471 10.121 25.271 1.00 0.00 O -ATOM 2123 HW1 SOL 707 26.161 9.961 25.971 1.00 0.00 H -ATOM 2124 HW2 SOL 707 24.741 10.691 25.651 1.00 0.00 H -ATOM 2125 OW SOL 708 21.971 14.351 29.231 1.00 0.00 O -ATOM 2126 HW1 SOL 708 21.191 14.041 28.701 1.00 0.00 H -ATOM 2127 HW2 SOL 708 22.551 14.931 28.661 1.00 0.00 H -ATOM 2128 OW SOL 709 1.991 15.051 0.781 1.00 0.00 O -ATOM 2129 HW1 SOL 709 2.231 15.991 1.041 1.00 0.00 H -ATOM 2130 HW2 SOL 709 1.831 14.511 1.601 1.00 0.00 H -ATOM 2131 OW SOL 710 20.931 17.131 23.451 1.00 0.00 O -ATOM 2132 HW1 SOL 710 21.271 17.901 23.991 1.00 0.00 H -ATOM 2133 HW2 SOL 710 21.371 17.131 22.551 1.00 0.00 H -ATOM 2134 OW SOL 711 20.921 14.341 24.001 1.00 0.00 O -ATOM 2135 HW1 SOL 711 20.661 15.301 24.001 1.00 0.00 H -ATOM 2136 HW2 SOL 711 20.211 13.801 24.451 1.00 0.00 H -ATOM 2137 OW SOL 712 21.021 10.911 27.481 1.00 0.00 O -ATOM 2138 HW1 SOL 712 21.161 10.071 28.001 1.00 0.00 H -ATOM 2139 HW2 SOL 712 20.471 11.551 28.031 1.00 0.00 H -ATOM 2140 OW SOL 713 24.681 9.641 19.851 1.00 0.00 O -ATOM 2141 HW1 SOL 713 24.751 10.481 19.311 1.00 0.00 H -ATOM 2142 HW2 SOL 713 25.141 9.771 20.731 1.00 0.00 H -ATOM 2143 OW SOL 714 19.841 6.430 24.251 1.00 0.00 O -ATOM 2144 HW1 SOL 714 19.391 5.550 24.421 1.00 0.00 H -ATOM 2145 HW2 SOL 714 19.831 6.970 25.091 1.00 0.00 H -ATOM 2146 OW SOL 715 18.891 15.961 19.791 1.00 0.00 O -ATOM 2147 HW1 SOL 715 18.701 15.001 20.001 1.00 0.00 H -ATOM 2148 HW2 SOL 715 18.561 16.541 20.541 1.00 0.00 H -ATOM 2149 OW SOL 716 24.751 13.651 25.881 1.00 0.00 O -ATOM 2150 HW1 SOL 716 24.261 12.781 25.971 1.00 0.00 H -ATOM 2151 HW2 SOL 716 24.521 14.081 25.011 1.00 0.00 H -ATOM 2152 OW SOL 717 26.711 0.040 23.641 1.00 0.00 O -ATOM 2153 HW1 SOL 717 27.111 0.950 23.551 1.00 0.00 H -ATOM 2154 HW2 SOL 717 25.711 0.120 23.701 1.00 0.00 H -ATOM 2155 OW SOL 718 20.591 9.761 0.031 1.00 0.00 O -ATOM 2156 HW1 SOL 718 21.481 9.311 -0.109 1.00 0.00 H -ATOM 2157 HW2 SOL 718 19.861 9.111 -0.159 1.00 0.00 H -ATOM 2158 OW SOL 719 2.051 14.171 28.151 1.00 0.00 O -ATOM 2159 HW1 SOL 719 1.461 14.231 28.951 1.00 0.00 H -ATOM 2160 HW2 SOL 719 1.901 13.291 27.691 1.00 0.00 H -ATOM 2161 OW SOL 720 24.601 7.290 21.321 1.00 0.00 O -ATOM 2162 HW1 SOL 720 24.841 7.980 20.641 1.00 0.00 H -ATOM 2163 HW2 SOL 720 23.821 7.620 21.861 1.00 0.00 H -ATOM 2164 OW SOL 721 0.201 3.450 28.061 1.00 0.00 O -ATOM 2165 HW1 SOL 721 -0.659 2.950 27.931 1.00 0.00 H -ATOM 2166 HW2 SOL 721 0.821 2.910 28.621 1.00 0.00 H -ATOM 2167 OW SOL 722 29.031 7.010 22.911 1.00 0.00 O -ATOM 2168 HW1 SOL 722 29.291 6.970 23.871 1.00 0.00 H -ATOM 2169 HW2 SOL 722 28.181 6.500 22.771 1.00 0.00 H -ATOM 2170 OW SOL 723 19.381 8.110 26.511 1.00 0.00 O -ATOM 2171 HW1 SOL 723 20.371 7.990 26.601 1.00 0.00 H -ATOM 2172 HW2 SOL 723 19.141 9.060 26.721 1.00 0.00 H -ATOM 2173 OW SOL 724 27.271 3.480 20.571 1.00 0.00 O -ATOM 2174 HW1 SOL 724 27.861 4.110 20.081 1.00 0.00 H -ATOM 2175 HW2 SOL 724 27.461 2.540 20.281 1.00 0.00 H -ATOM 2176 OW SOL 725 24.121 1.960 27.471 1.00 0.00 O -ATOM 2177 HW1 SOL 725 24.071 1.910 28.471 1.00 0.00 H -ATOM 2178 HW2 SOL 725 24.141 2.920 27.181 1.00 0.00 H -ATOM 2179 OW SOL 726 28.701 14.561 23.391 1.00 0.00 O -ATOM 2180 HW1 SOL 726 28.241 15.281 22.871 1.00 0.00 H -ATOM 2181 HW2 SOL 726 28.661 14.761 24.371 1.00 0.00 H -ATOM 2182 OW SOL 727 22.131 18.011 27.151 1.00 0.00 O -ATOM 2183 HW1 SOL 727 22.631 17.151 27.211 1.00 0.00 H -ATOM 2184 HW2 SOL 727 22.781 18.781 27.121 1.00 0.00 H -ATOM 2185 OW SOL 728 21.831 9.431 21.041 1.00 0.00 O -ATOM 2186 HW1 SOL 728 22.651 9.821 20.621 1.00 0.00 H -ATOM 2187 HW2 SOL 728 21.561 8.611 20.551 1.00 0.00 H -ATOM 2188 OW SOL 729 29.731 17.761 20.991 1.00 0.00 O -ATOM 2189 HW1 SOL 729 29.131 17.141 21.491 1.00 0.00 H -ATOM 2190 HW2 SOL 729 30.041 17.321 20.141 1.00 0.00 H -ATOM 2191 OW SOL 730 23.261 17.431 21.851 1.00 0.00 O -ATOM 2192 HW1 SOL 730 23.591 17.821 22.711 1.00 0.00 H -ATOM 2193 HW2 SOL 730 24.021 17.361 21.201 1.00 0.00 H -ATOM 2194 OW SOL 731 21.111 17.851 31.031 1.00 0.00 O -ATOM 2195 HW1 SOL 731 21.681 17.201 31.531 1.00 0.00 H -ATOM 2196 HW2 SOL 731 20.951 17.521 30.101 1.00 0.00 H -ATOM 2197 OW SOL 732 28.021 16.981 27.661 1.00 0.00 O -ATOM 2198 HW1 SOL 732 28.821 16.411 27.871 1.00 0.00 H -ATOM 2199 HW2 SOL 732 27.531 16.581 26.891 1.00 0.00 H -ATOM 2200 OW SOL 733 22.441 7.000 23.421 1.00 0.00 O -ATOM 2201 HW1 SOL 733 22.891 6.100 23.391 1.00 0.00 H -ATOM 2202 HW2 SOL 733 21.501 6.890 23.751 1.00 0.00 H -ATOM 2203 OW SOL 734 24.761 1.220 19.791 1.00 0.00 O -ATOM 2204 HW1 SOL 734 25.741 1.000 19.861 1.00 0.00 H -ATOM 2205 HW2 SOL 734 24.451 1.050 18.861 1.00 0.00 H -ATOM 2206 OW SOL 735 0.901 5.900 1.721 1.00 0.00 O -ATOM 2207 HW1 SOL 735 1.181 5.470 2.571 1.00 0.00 H -ATOM 2208 HW2 SOL 735 1.151 6.860 1.731 1.00 0.00 H -ATOM 2209 OW SOL 736 26.651 14.021 27.861 1.00 0.00 O -ATOM 2210 HW1 SOL 736 27.551 14.161 27.441 1.00 0.00 H -ATOM 2211 HW2 SOL 736 25.941 14.041 27.151 1.00 0.00 H -ATOM 2212 OW SOL 737 27.841 5.030 27.611 1.00 0.00 O -ATOM 2213 HW1 SOL 737 27.591 4.940 26.651 1.00 0.00 H -ATOM 2214 HW2 SOL 737 28.321 4.210 27.921 1.00 0.00 H -ATOM 2215 OW SOL 738 24.011 0.640 23.741 1.00 0.00 O -ATOM 2216 HW1 SOL 738 23.201 0.650 24.321 1.00 0.00 H -ATOM 2217 HW2 SOL 738 24.041 1.470 23.191 1.00 0.00 H -ATOM 2218 OW SOL 739 1.731 11.881 19.031 1.00 0.00 O -ATOM 2219 HW1 SOL 739 2.051 11.121 19.601 1.00 0.00 H -ATOM 2220 HW2 SOL 739 0.811 12.151 19.331 1.00 0.00 H -ATOM 2221 OW SOL 740 21.591 0.350 20.331 1.00 0.00 O -ATOM 2222 HW1 SOL 740 22.081 1.190 20.121 1.00 0.00 H -ATOM 2223 HW2 SOL 740 22.211 -0.300 20.781 1.00 0.00 H -ATOM 2224 OW SOL 741 27.971 2.360 23.421 1.00 0.00 O -ATOM 2225 HW1 SOL 741 27.491 2.770 22.641 1.00 0.00 H -ATOM 2226 HW2 SOL 741 28.961 2.340 23.231 1.00 0.00 H -ATOM 2227 OW SOL 742 30.891 15.701 26.551 1.00 0.00 O -ATOM 2228 HW1 SOL 742 31.101 16.441 25.901 1.00 0.00 H -ATOM 2229 HW2 SOL 742 31.571 15.701 27.281 1.00 0.00 H -ATOM 2230 OW SOL 743 23.211 11.521 26.031 1.00 0.00 O -ATOM 2231 HW1 SOL 743 22.501 11.251 26.681 1.00 0.00 H -ATOM 2232 HW2 SOL 743 22.951 11.241 25.101 1.00 0.00 H -ATOM 2233 OW SOL 744 0.101 17.971 24.531 1.00 0.00 O -ATOM 2234 HW1 SOL 744 0.541 18.611 23.891 1.00 0.00 H -ATOM 2235 HW2 SOL 744 -0.399 18.491 25.231 1.00 0.00 H -ATOM 2236 OW SOL 745 28.941 5.490 18.781 1.00 0.00 O -ATOM 2237 HW1 SOL 745 28.531 6.310 18.391 1.00 0.00 H -ATOM 2238 HW2 SOL 745 29.581 5.750 19.511 1.00 0.00 H -ATOM 2239 OW SOL 746 27.281 4.540 25.041 1.00 0.00 O -ATOM 2240 HW1 SOL 746 26.961 5.260 24.421 1.00 0.00 H -ATOM 2241 HW2 SOL 746 27.521 3.730 24.511 1.00 0.00 H -ATOM 2242 OW SOL 747 28.791 0.390 26.151 1.00 0.00 O -ATOM 2243 HW1 SOL 747 28.071 0.440 25.461 1.00 0.00 H -ATOM 2244 HW2 SOL 747 28.551 -0.300 26.841 1.00 0.00 H -ATOM 2245 OW SOL 748 23.501 13.851 20.361 1.00 0.00 O -ATOM 2246 HW1 SOL 748 22.631 13.701 20.831 1.00 0.00 H -ATOM 2247 HW2 SOL 748 23.331 14.111 19.411 1.00 0.00 H -ATOM 2248 OW SOL 749 1.291 5.750 19.401 1.00 0.00 O -ATOM 2249 HW1 SOL 749 0.751 5.540 20.211 1.00 0.00 H -ATOM 2250 HW2 SOL 749 2.201 5.340 19.491 1.00 0.00 H -ATOM 2251 OW SOL 750 23.891 2.560 21.901 1.00 0.00 O -ATOM 2252 HW1 SOL 750 24.161 1.970 21.151 1.00 0.00 H -ATOM 2253 HW2 SOL 750 23.891 3.510 21.591 1.00 0.00 H -ATOM 2254 OW SOL 751 29.731 11.951 29.621 1.00 0.00 O -ATOM 2255 HW1 SOL 751 29.331 12.391 30.431 1.00 0.00 H -ATOM 2256 HW2 SOL 751 29.321 12.321 28.791 1.00 0.00 H -ATOM 2257 OW SOL 752 25.671 10.501 22.301 1.00 0.00 O -ATOM 2258 HW1 SOL 752 25.531 10.571 23.291 1.00 0.00 H -ATOM 2259 HW2 SOL 752 26.511 9.991 22.121 1.00 0.00 H -ATOM 2260 OW SOL 753 22.721 8.130 31.131 1.00 0.00 O -ATOM 2261 HW1 SOL 753 23.581 8.250 31.631 1.00 0.00 H -ATOM 2262 HW2 SOL 753 22.301 7.260 31.401 1.00 0.00 H -ATOM 2263 OW SOL 754 0.131 3.860 0.011 1.00 0.00 O -ATOM 2264 HW1 SOL 754 0.341 4.600 0.651 1.00 0.00 H -ATOM 2265 HW2 SOL 754 -0.759 4.030 -0.419 1.00 0.00 H -ATOM 2266 OW SOL 755 22.291 11.001 23.631 1.00 0.00 O -ATOM 2267 HW1 SOL 755 22.221 11.831 23.071 1.00 0.00 H -ATOM 2268 HW2 SOL 755 22.331 10.201 23.031 1.00 0.00 H -ATOM 2269 OW SOL 756 24.281 5.370 27.271 1.00 0.00 O -ATOM 2270 HW1 SOL 756 24.401 6.030 26.531 1.00 0.00 H -ATOM 2271 HW2 SOL 756 24.741 5.710 28.101 1.00 0.00 H -ATOM 2272 OW SOL 757 31.141 13.481 22.501 1.00 0.00 O -ATOM 2273 HW1 SOL 757 31.641 14.251 22.901 1.00 0.00 H -ATOM 2274 HW2 SOL 757 30.191 13.501 22.821 1.00 0.00 H -ATOM 2275 OW SOL 758 0.111 14.451 30.041 1.00 0.00 O -ATOM 2276 HW1 SOL 758 0.581 14.581 30.911 1.00 0.00 H -ATOM 2277 HW2 SOL 758 -0.549 13.711 30.131 1.00 0.00 H -ATOM 2278 OW SOL 759 24.351 8.700 28.911 1.00 0.00 O -ATOM 2279 HW1 SOL 759 24.791 9.590 28.821 1.00 0.00 H -ATOM 2280 HW2 SOL 759 23.721 8.700 29.681 1.00 0.00 H -ATOM 2281 OW SOL 760 0.991 8.620 29.071 1.00 0.00 O -ATOM 2282 HW1 SOL 760 0.241 8.620 28.411 1.00 0.00 H -ATOM 2283 HW2 SOL 760 1.361 7.700 29.161 1.00 0.00 H -ATOM 2284 OW SOL 761 30.711 5.250 21.371 1.00 0.00 O -ATOM 2285 HW1 SOL 761 30.841 4.410 21.911 1.00 0.00 H -ATOM 2286 HW2 SOL 761 30.421 5.990 21.971 1.00 0.00 H -ATOM 2287 OW SOL 762 21.691 2.130 30.931 1.00 0.00 O -ATOM 2288 HW1 SOL 762 21.461 2.500 31.831 1.00 0.00 H -ATOM 2289 HW2 SOL 762 21.391 1.180 30.871 1.00 0.00 H -ATOM 2290 OW SOL 763 25.941 6.340 29.261 1.00 0.00 O -ATOM 2291 HW1 SOL 763 26.531 6.080 28.501 1.00 0.00 H -ATOM 2292 HW2 SOL 763 25.661 7.300 29.151 1.00 0.00 H -ATOM 2293 OW SOL 764 21.691 0.630 24.801 1.00 0.00 O -ATOM 2294 HW1 SOL 764 21.581 1.570 25.131 1.00 0.00 H -ATOM 2295 HW2 SOL 764 21.641 0.000 25.571 1.00 0.00 H -ATOM 2296 OW SOL 765 28.851 7.660 28.281 1.00 0.00 O -ATOM 2297 HW1 SOL 765 29.001 7.870 29.241 1.00 0.00 H -ATOM 2298 HW2 SOL 765 28.551 6.710 28.191 1.00 0.00 H -ATOM 2299 OW SOL 766 0.421 8.380 19.041 1.00 0.00 O -ATOM 2300 HW1 SOL 766 0.761 7.450 19.191 1.00 0.00 H -ATOM 2301 HW2 SOL 766 0.601 8.650 18.091 1.00 0.00 H -ATOM 2302 OW SOL 767 29.301 13.331 27.111 1.00 0.00 O -ATOM 2303 HW1 SOL 767 29.371 12.491 26.561 1.00 0.00 H -ATOM 2304 HW2 SOL 767 29.921 14.021 26.751 1.00 0.00 H -ATOM 2305 OW SOL 768 21.811 8.100 28.111 1.00 0.00 O -ATOM 2306 HW1 SOL 768 22.741 8.460 28.161 1.00 0.00 H -ATOM 2307 HW2 SOL 768 21.751 7.250 28.631 1.00 0.00 H -ATOM 2308 OW SOL 769 22.011 5.090 28.681 1.00 0.00 O -ATOM 2309 HW1 SOL 769 21.491 4.260 28.511 1.00 0.00 H -ATOM 2310 HW2 SOL 769 22.781 5.140 28.041 1.00 0.00 H -ATOM 2311 OW SOL 770 18.701 13.261 20.621 1.00 0.00 O -ATOM 2312 HW1 SOL 770 17.771 13.471 20.311 1.00 0.00 H -ATOM 2313 HW2 SOL 770 18.801 12.271 20.751 1.00 0.00 H -ATOM 2314 OW SOL 771 19.501 18.011 27.891 1.00 0.00 O -ATOM 2315 HW1 SOL 771 19.081 17.151 27.621 1.00 0.00 H -ATOM 2316 HW2 SOL 771 20.441 18.041 27.551 1.00 0.00 H -ATOM 2317 OW SOL 772 23.661 15.681 27.721 1.00 0.00 O -ATOM 2318 HW1 SOL 772 24.321 16.421 27.811 1.00 0.00 H -ATOM 2319 HW2 SOL 772 24.101 14.891 27.301 1.00 0.00 H -ATOM 2320 OW SOL 773 28.641 7.960 31.001 1.00 0.00 O -ATOM 2321 HW1 SOL 773 29.051 7.640 31.861 1.00 0.00 H -ATOM 2322 HW2 SOL 773 27.681 7.690 30.971 1.00 0.00 H -ATOM 2323 OW SOL 774 19.021 5.440 29.761 1.00 0.00 O -ATOM 2324 HW1 SOL 774 19.871 5.110 29.351 1.00 0.00 H -ATOM 2325 HW2 SOL 774 19.151 5.590 30.741 1.00 0.00 H -ATOM 2326 OW SOL 775 26.771 5.720 21.871 1.00 0.00 O -ATOM 2327 HW1 SOL 775 26.841 4.830 21.411 1.00 0.00 H -ATOM 2328 HW2 SOL 775 25.831 6.060 21.791 1.00 0.00 H -ATOM 2329 OW SOL 776 25.331 4.640 0.081 1.00 0.00 O -ATOM 2330 HW1 SOL 776 24.991 3.750 -0.219 1.00 0.00 H -ATOM 2331 HW2 SOL 776 25.591 5.180 -0.719 1.00 0.00 H -ATOM 2332 OW SOL 777 23.351 5.000 20.531 1.00 0.00 O -ATOM 2333 HW1 SOL 777 23.961 5.800 20.571 1.00 0.00 H -ATOM 2334 HW2 SOL 777 22.401 5.310 20.601 1.00 0.00 H -ATOM 2335 OW SOL 778 19.451 12.581 28.841 1.00 0.00 O -ATOM 2336 HW1 SOL 778 19.401 12.571 29.841 1.00 0.00 H -ATOM 2337 HW2 SOL 778 18.621 12.171 28.461 1.00 0.00 H -ATOM 2338 OW SOL 779 1.271 15.731 23.391 1.00 0.00 O -ATOM 2339 HW1 SOL 779 1.941 15.851 22.651 1.00 0.00 H -ATOM 2340 HW2 SOL 779 0.871 16.621 23.621 1.00 0.00 H -ATOM 2341 OW SOL 780 0.191 9.270 25.341 1.00 0.00 O -ATOM 2342 HW1 SOL 780 0.791 8.460 25.361 1.00 0.00 H -ATOM 2343 HW2 SOL 780 0.591 9.960 24.741 1.00 0.00 H -ATOM 2344 OW SOL 781 25.341 16.161 20.161 1.00 0.00 O -ATOM 2345 HW1 SOL 781 25.431 16.261 19.171 1.00 0.00 H -ATOM 2346 HW2 SOL 781 24.941 15.271 20.371 1.00 0.00 H -ATOM 2347 OW SOL 782 21.251 3.260 25.821 1.00 0.00 O -ATOM 2348 HW1 SOL 782 20.461 3.770 25.481 1.00 0.00 H -ATOM 2349 HW2 SOL 782 21.161 3.110 26.801 1.00 0.00 H -ATOM 2350 OW SOL 783 30.561 16.121 18.931 1.00 0.00 O -ATOM 2351 HW1 SOL 783 30.621 15.191 19.301 1.00 0.00 H -ATOM 2352 HW2 SOL 783 29.971 16.121 18.131 1.00 0.00 H -ATOM 2353 OW SOL 784 26.841 10.021 1.111 1.00 0.00 O -ATOM 2354 HW1 SOL 784 27.241 10.011 0.191 1.00 0.00 H -ATOM 2355 HW2 SOL 784 26.941 10.941 1.511 1.00 0.00 H -ATOM 2356 OW SOL 785 27.781 9.100 21.531 1.00 0.00 O -ATOM 2357 HW1 SOL 785 28.411 9.480 20.851 1.00 0.00 H -ATOM 2358 HW2 SOL 785 28.181 8.270 21.921 1.00 0.00 H -ATOM 2359 OW SOL 786 29.011 10.981 25.581 1.00 0.00 O -ATOM 2360 HW1 SOL 786 28.311 10.511 26.121 1.00 0.00 H -ATOM 2361 HW2 SOL 786 29.601 10.301 25.151 1.00 0.00 H -ATOM 2362 OW SOL 787 28.761 2.360 28.331 1.00 0.00 O -ATOM 2363 HW1 SOL 787 28.681 2.000 27.401 1.00 0.00 H -ATOM 2364 HW2 SOL 787 28.741 1.600 28.981 1.00 0.00 H -ATOM 2365 OW SOL 788 24.521 14.871 23.531 1.00 0.00 O -ATOM 2366 HW1 SOL 788 24.941 14.291 22.831 1.00 0.00 H -ATOM 2367 HW2 SOL 788 24.081 15.661 23.091 1.00 0.00 H -ATOM 2368 OW SOL 789 21.171 13.481 21.521 1.00 0.00 O -ATOM 2369 HW1 SOL 789 20.211 13.491 21.251 1.00 0.00 H -ATOM 2370 HW2 SOL 789 21.291 14.011 22.361 1.00 0.00 H -ATOM 2371 OW SOL 790 19.371 3.450 18.951 1.00 0.00 O -ATOM 2372 HW1 SOL 790 18.451 3.170 18.661 1.00 0.00 H -ATOM 2373 HW2 SOL 790 19.681 4.220 18.391 1.00 0.00 H -ATOM 2374 OW SOL 791 19.341 1.660 21.801 1.00 0.00 O -ATOM 2375 HW1 SOL 791 19.171 2.490 21.261 1.00 0.00 H -ATOM 2376 HW2 SOL 791 20.241 1.290 21.581 1.00 0.00 H -ATOM 2377 OW SOL 792 30.451 13.351 19.811 1.00 0.00 O -ATOM 2378 HW1 SOL 792 29.461 13.241 19.831 1.00 0.00 H -ATOM 2379 HW2 SOL 792 30.791 13.501 20.741 1.00 0.00 H -ATOM 2380 OW SOL 793 30.871 3.250 23.111 1.00 0.00 O -ATOM 2381 HW1 SOL 793 31.521 2.510 23.001 1.00 0.00 H -ATOM 2382 HW2 SOL 793 31.071 3.750 23.951 1.00 0.00 H -ATOM 2383 OW SOL 794 24.561 7.450 25.141 1.00 0.00 O -ATOM 2384 HW1 SOL 794 25.061 8.300 24.951 1.00 0.00 H -ATOM 2385 HW2 SOL 794 23.681 7.470 24.661 1.00 0.00 H -ATOM 2386 OW SOL 795 27.211 13.741 18.781 1.00 0.00 O -ATOM 2387 HW1 SOL 795 26.751 13.891 19.661 1.00 0.00 H -ATOM 2388 HW2 SOL 795 27.651 14.591 18.481 1.00 0.00 H -ATOM 2389 OW SOL 796 25.231 17.901 28.151 1.00 0.00 O -ATOM 2390 HW1 SOL 796 24.771 18.781 28.021 1.00 0.00 H -ATOM 2391 HW2 SOL 796 26.221 18.021 28.081 1.00 0.00 H -ATOM 2392 OW SOL 797 27.211 9.561 27.231 1.00 0.00 O -ATOM 2393 HW1 SOL 797 27.751 8.871 27.711 1.00 0.00 H -ATOM 2394 HW2 SOL 797 26.891 10.251 27.891 1.00 0.00 H -ATOM 2395 OW SOL 798 29.451 9.841 19.491 1.00 0.00 O -ATOM 2396 HW1 SOL 798 29.221 10.371 18.671 1.00 0.00 H -ATOM 2397 HW2 SOL 798 30.261 9.281 19.301 1.00 0.00 H -ATOM 2398 OW SOL 799 19.411 12.401 25.151 1.00 0.00 O -ATOM 2399 HW1 SOL 799 19.401 11.931 26.031 1.00 0.00 H -ATOM 2400 HW2 SOL 799 20.231 12.121 24.641 1.00 0.00 H -ATOM 2401 OW SOL 800 22.901 4.240 23.821 1.00 0.00 O -ATOM 2402 HW1 SOL 800 23.201 3.520 23.201 1.00 0.00 H -ATOM 2403 HW2 SOL 800 22.511 3.840 24.651 1.00 0.00 H -ATOM 2404 OW SOL 801 26.741 15.861 25.491 1.00 0.00 O -ATOM 2405 HW1 SOL 801 27.061 15.961 24.551 1.00 0.00 H -ATOM 2406 HW2 SOL 801 25.951 15.241 25.511 1.00 0.00 H -ATOM 2407 OW SOL 802 1.631 2.140 29.741 1.00 0.00 O -ATOM 2408 HW1 SOL 802 2.151 1.490 30.291 1.00 0.00 H -ATOM 2409 HW2 SOL 802 1.141 2.770 30.351 1.00 0.00 H -ATOM 2410 OW SOL 803 28.631 0.340 30.161 1.00 0.00 O -ATOM 2411 HW1 SOL 803 28.001 -0.380 29.851 1.00 0.00 H -ATOM 2412 HW2 SOL 803 29.561 -0.020 30.161 1.00 0.00 H -ATOM 2413 OW SOL 804 26.321 13.301 21.631 1.00 0.00 O -ATOM 2414 HW1 SOL 804 25.861 12.431 21.801 1.00 0.00 H -ATOM 2415 HW2 SOL 804 27.231 13.271 22.041 1.00 0.00 H -ATOM 2416 OW SOL 805 0.911 0.520 20.301 1.00 0.00 O -ATOM 2417 HW1 SOL 805 1.261 0.110 19.461 1.00 0.00 H -ATOM 2418 HW2 SOL 805 0.011 0.140 20.501 1.00 0.00 H -ATOM 2419 OW SOL 806 0.391 4.530 25.531 1.00 0.00 O -ATOM 2420 HW1 SOL 806 -0.199 5.330 25.571 1.00 0.00 H -ATOM 2421 HW2 SOL 806 0.541 4.180 26.461 1.00 0.00 H -ATOM 2422 OW SOL 807 19.011 10.771 21.621 1.00 0.00 O -ATOM 2423 HW1 SOL 807 20.001 10.661 21.531 1.00 0.00 H -ATOM 2424 HW2 SOL 807 18.611 9.911 21.941 1.00 0.00 H -ATOM 2425 OW SOL 808 27.371 16.461 21.991 1.00 0.00 O -ATOM 2426 HW1 SOL 808 26.601 16.111 21.451 1.00 0.00 H -ATOM 2427 HW2 SOL 808 27.051 17.171 22.611 1.00 0.00 H -ATOM 2428 OW SOL 809 20.921 24.901 1.130 1.00 0.00 O -ATOM 2429 HW1 SOL 809 19.991 24.881 1.500 1.00 0.00 H -ATOM 2430 HW2 SOL 809 20.931 24.511 0.210 1.00 0.00 H -ATOM 2431 OW SOL 810 20.871 21.371 9.961 1.00 0.00 O -ATOM 2432 HW1 SOL 810 21.221 21.201 10.881 1.00 0.00 H -ATOM 2433 HW2 SOL 810 19.991 20.921 9.841 1.00 0.00 H -ATOM 2434 OW SOL 811 18.811 22.301 6.470 1.00 0.00 O -ATOM 2435 HW1 SOL 811 17.991 22.731 6.860 1.00 0.00 H -ATOM 2436 HW2 SOL 811 18.531 21.571 5.840 1.00 0.00 H -ATOM 2437 OW SOL 812 29.971 25.651 7.170 1.00 0.00 O -ATOM 2438 HW1 SOL 812 30.541 26.431 6.920 1.00 0.00 H -ATOM 2439 HW2 SOL 812 29.371 25.911 7.930 1.00 0.00 H -ATOM 2440 OW SOL 813 26.301 30.061 10.231 1.00 0.00 O -ATOM 2441 HW1 SOL 813 25.521 30.231 10.831 1.00 0.00 H -ATOM 2442 HW2 SOL 813 26.641 30.931 9.871 1.00 0.00 H -ATOM 2443 OW SOL 814 27.121 26.601 18.231 1.00 0.00 O -ATOM 2444 HW1 SOL 814 27.081 27.361 18.881 1.00 0.00 H -ATOM 2445 HW2 SOL 814 27.341 26.961 17.321 1.00 0.00 H -ATOM 2446 OW SOL 815 25.471 28.741 6.650 1.00 0.00 O -ATOM 2447 HW1 SOL 815 26.161 28.581 7.350 1.00 0.00 H -ATOM 2448 HW2 SOL 815 24.741 29.311 7.030 1.00 0.00 H -ATOM 2449 OW SOL 816 23.001 22.541 14.991 1.00 0.00 O -ATOM 2450 HW1 SOL 816 23.821 21.981 15.081 1.00 0.00 H -ATOM 2451 HW2 SOL 816 22.191 21.961 15.031 1.00 0.00 H -ATOM 2452 OW SOL 817 21.021 29.531 8.860 1.00 0.00 O -ATOM 2453 HW1 SOL 817 21.161 28.691 9.380 1.00 0.00 H -ATOM 2454 HW2 SOL 817 20.471 30.171 9.410 1.00 0.00 H -ATOM 2455 OW SOL 818 24.681 28.261 1.230 1.00 0.00 O -ATOM 2456 HW1 SOL 818 24.751 29.101 0.690 1.00 0.00 H -ATOM 2457 HW2 SOL 818 25.141 28.391 2.110 1.00 0.00 H -ATOM 2458 OW SOL 819 19.841 25.051 5.630 1.00 0.00 O -ATOM 2459 HW1 SOL 819 19.391 24.171 5.800 1.00 0.00 H -ATOM 2460 HW2 SOL 819 19.831 25.591 6.470 1.00 0.00 H -ATOM 2461 OW SOL 820 19.751 25.991 15.971 1.00 0.00 O -ATOM 2462 HW1 SOL 820 20.631 25.861 16.421 1.00 0.00 H -ATOM 2463 HW2 SOL 820 19.621 26.961 15.751 1.00 0.00 H -ATOM 2464 OW SOL 821 24.751 1.041 7.260 1.00 0.00 O -ATOM 2465 HW1 SOL 821 24.261 0.171 7.350 1.00 0.00 H -ATOM 2466 HW2 SOL 821 24.521 1.471 6.390 1.00 0.00 H -ATOM 2467 OW SOL 822 26.711 18.661 5.020 1.00 0.00 O -ATOM 2468 HW1 SOL 822 27.111 19.571 4.930 1.00 0.00 H -ATOM 2469 HW2 SOL 822 25.711 18.741 5.080 1.00 0.00 H -ATOM 2470 OW SOL 823 20.591 28.381 12.641 1.00 0.00 O -ATOM 2471 HW1 SOL 823 21.481 27.931 12.501 1.00 0.00 H -ATOM 2472 HW2 SOL 823 19.861 27.731 12.451 1.00 0.00 H -ATOM 2473 OW SOL 824 21.791 21.131 18.011 1.00 0.00 O -ATOM 2474 HW1 SOL 824 22.501 21.841 18.071 1.00 0.00 H -ATOM 2475 HW2 SOL 824 20.911 21.521 18.291 1.00 0.00 H -ATOM 2476 OW SOL 825 24.601 25.911 2.700 1.00 0.00 O -ATOM 2477 HW1 SOL 825 24.841 26.601 2.020 1.00 0.00 H -ATOM 2478 HW2 SOL 825 23.821 26.241 3.240 1.00 0.00 H -ATOM 2479 OW SOL 826 0.201 22.071 9.441 1.00 0.00 O -ATOM 2480 HW1 SOL 826 -0.659 21.571 9.311 1.00 0.00 H -ATOM 2481 HW2 SOL 826 0.821 21.531 10.001 1.00 0.00 H -ATOM 2482 OW SOL 827 26.691 24.671 14.651 1.00 0.00 O -ATOM 2483 HW1 SOL 827 26.221 24.641 15.541 1.00 0.00 H -ATOM 2484 HW2 SOL 827 26.181 24.121 13.991 1.00 0.00 H -ATOM 2485 OW SOL 828 28.351 27.521 15.721 1.00 0.00 O -ATOM 2486 HW1 SOL 828 28.811 26.681 15.431 1.00 0.00 H -ATOM 2487 HW2 SOL 828 27.791 27.861 14.971 1.00 0.00 H -ATOM 2488 OW SOL 829 28.531 22.721 12.421 1.00 0.00 O -ATOM 2489 HW1 SOL 829 27.761 23.061 12.961 1.00 0.00 H -ATOM 2490 HW2 SOL 829 28.191 22.211 11.631 1.00 0.00 H -ATOM 2491 OW SOL 830 29.031 25.631 4.290 1.00 0.00 O -ATOM 2492 HW1 SOL 830 29.291 25.591 5.250 1.00 0.00 H -ATOM 2493 HW2 SOL 830 28.181 25.121 4.150 1.00 0.00 H -ATOM 2494 OW SOL 831 19.381 26.731 7.890 1.00 0.00 O -ATOM 2495 HW1 SOL 831 20.371 26.611 7.980 1.00 0.00 H -ATOM 2496 HW2 SOL 831 19.141 27.681 8.100 1.00 0.00 H -ATOM 2497 OW SOL 832 27.271 22.101 1.950 1.00 0.00 O -ATOM 2498 HW1 SOL 832 27.861 22.731 1.460 1.00 0.00 H -ATOM 2499 HW2 SOL 832 27.461 21.161 1.660 1.00 0.00 H -ATOM 2500 OW SOL 833 24.121 20.581 8.850 1.00 0.00 O -ATOM 2501 HW1 SOL 833 24.071 20.531 9.850 1.00 0.00 H -ATOM 2502 HW2 SOL 833 24.141 21.541 8.560 1.00 0.00 H -ATOM 2503 OW SOL 834 21.831 28.051 2.420 1.00 0.00 O -ATOM 2504 HW1 SOL 834 22.651 28.441 2.000 1.00 0.00 H -ATOM 2505 HW2 SOL 834 21.561 27.231 1.930 1.00 0.00 H -ATOM 2506 OW SOL 835 20.641 21.471 14.981 1.00 0.00 O -ATOM 2507 HW1 SOL 835 19.841 22.071 14.851 1.00 0.00 H -ATOM 2508 HW2 SOL 835 20.541 20.981 15.841 1.00 0.00 H -ATOM 2509 OW SOL 836 22.441 25.621 4.800 1.00 0.00 O -ATOM 2510 HW1 SOL 836 22.891 24.721 4.770 1.00 0.00 H -ATOM 2511 HW2 SOL 836 21.501 25.511 5.130 1.00 0.00 H -ATOM 2512 OW SOL 837 24.761 19.841 1.170 1.00 0.00 O -ATOM 2513 HW1 SOL 837 25.741 19.621 1.240 1.00 0.00 H -ATOM 2514 HW2 SOL 837 24.451 19.671 0.240 1.00 0.00 H -ATOM 2515 OW SOL 838 26.431 21.261 17.491 1.00 0.00 O -ATOM 2516 HW1 SOL 838 27.101 20.651 17.921 1.00 0.00 H -ATOM 2517 HW2 SOL 838 25.701 21.451 18.141 1.00 0.00 H -ATOM 2518 OW SOL 839 27.841 23.651 8.990 1.00 0.00 O -ATOM 2519 HW1 SOL 839 27.591 23.561 8.030 1.00 0.00 H -ATOM 2520 HW2 SOL 839 28.321 22.831 9.300 1.00 0.00 H -ATOM 2521 OW SOL 840 24.011 19.261 5.120 1.00 0.00 O -ATOM 2522 HW1 SOL 840 23.201 19.271 5.700 1.00 0.00 H -ATOM 2523 HW2 SOL 840 24.041 20.091 4.570 1.00 0.00 H -ATOM 2524 OW SOL 841 21.591 18.971 1.710 1.00 0.00 O -ATOM 2525 HW1 SOL 841 22.081 19.811 1.500 1.00 0.00 H -ATOM 2526 HW2 SOL 841 22.211 18.321 2.160 1.00 0.00 H -ATOM 2527 OW SOL 842 27.971 20.981 4.800 1.00 0.00 O -ATOM 2528 HW1 SOL 842 27.491 21.391 4.020 1.00 0.00 H -ATOM 2529 HW2 SOL 842 28.961 20.961 4.610 1.00 0.00 H -ATOM 2530 OW SOL 843 29.381 25.451 14.641 1.00 0.00 O -ATOM 2531 HW1 SOL 843 28.581 24.841 14.671 1.00 0.00 H -ATOM 2532 HW2 SOL 843 30.191 24.921 14.401 1.00 0.00 H -ATOM 2533 OW SOL 844 23.211 30.141 7.410 1.00 0.00 O -ATOM 2534 HW1 SOL 844 22.501 29.871 8.060 1.00 0.00 H -ATOM 2535 HW2 SOL 844 22.951 29.861 6.480 1.00 0.00 H -ATOM 2536 OW SOL 845 28.941 24.111 0.160 1.00 0.00 O -ATOM 2537 HW1 SOL 845 28.531 24.931 -0.230 1.00 0.00 H -ATOM 2538 HW2 SOL 845 29.581 24.371 0.890 1.00 0.00 H -ATOM 2539 OW SOL 846 19.401 24.181 13.861 1.00 0.00 O -ATOM 2540 HW1 SOL 846 20.321 24.171 13.451 1.00 0.00 H -ATOM 2541 HW2 SOL 846 19.341 24.921 14.531 1.00 0.00 H -ATOM 2542 OW SOL 847 24.231 20.841 11.471 1.00 0.00 O -ATOM 2543 HW1 SOL 847 24.611 20.001 11.841 1.00 0.00 H -ATOM 2544 HW2 SOL 847 23.351 21.031 11.911 1.00 0.00 H -ATOM 2545 OW SOL 848 27.281 23.161 6.420 1.00 0.00 O -ATOM 2546 HW1 SOL 848 26.961 23.881 5.800 1.00 0.00 H -ATOM 2547 HW2 SOL 848 27.521 22.351 5.890 1.00 0.00 H -ATOM 2548 OW SOL 849 28.791 19.011 7.530 1.00 0.00 O -ATOM 2549 HW1 SOL 849 28.071 19.061 6.840 1.00 0.00 H -ATOM 2550 HW2 SOL 849 28.551 18.321 8.220 1.00 0.00 H -ATOM 2551 OW SOL 850 23.891 21.181 3.280 1.00 0.00 O -ATOM 2552 HW1 SOL 850 24.161 20.591 2.530 1.00 0.00 H -ATOM 2553 HW2 SOL 850 23.891 22.131 2.970 1.00 0.00 H -ATOM 2554 OW SOL 851 27.771 19.511 14.021 1.00 0.00 O -ATOM 2555 HW1 SOL 851 28.021 19.311 13.071 1.00 0.00 H -ATOM 2556 HW2 SOL 851 28.491 20.071 14.441 1.00 0.00 H -ATOM 2557 OW SOL 852 28.421 29.781 17.191 1.00 0.00 O -ATOM 2558 HW1 SOL 852 27.431 29.841 17.291 1.00 0.00 H -ATOM 2559 HW2 SOL 852 28.651 28.981 16.631 1.00 0.00 H -ATOM 2560 OW SOL 853 25.671 29.121 3.680 1.00 0.00 O -ATOM 2561 HW1 SOL 853 25.531 29.191 4.670 1.00 0.00 H -ATOM 2562 HW2 SOL 853 26.511 28.611 3.500 1.00 0.00 H -ATOM 2563 OW SOL 854 22.721 26.751 12.511 1.00 0.00 O -ATOM 2564 HW1 SOL 854 23.581 26.871 13.011 1.00 0.00 H -ATOM 2565 HW2 SOL 854 22.301 25.881 12.781 1.00 0.00 H -ATOM 2566 OW SOL 855 0.131 22.481 12.621 1.00 0.00 O -ATOM 2567 HW1 SOL 855 0.341 23.221 13.261 1.00 0.00 H -ATOM 2568 HW2 SOL 855 -0.759 22.651 12.191 1.00 0.00 H -ATOM 2569 OW SOL 856 22.291 29.621 5.010 1.00 0.00 O -ATOM 2570 HW1 SOL 856 22.221 30.451 4.450 1.00 0.00 H -ATOM 2571 HW2 SOL 856 22.331 28.821 4.410 1.00 0.00 H -ATOM 2572 OW SOL 857 24.281 23.991 8.650 1.00 0.00 O -ATOM 2573 HW1 SOL 857 24.401 24.651 7.910 1.00 0.00 H -ATOM 2574 HW2 SOL 857 24.741 24.331 9.480 1.00 0.00 H -ATOM 2575 OW SOL 858 22.641 26.131 15.981 1.00 0.00 O -ATOM 2576 HW1 SOL 858 23.321 26.681 15.511 1.00 0.00 H -ATOM 2577 HW2 SOL 858 23.041 25.251 16.251 1.00 0.00 H -ATOM 2578 OW SOL 859 28.751 19.671 17.701 1.00 0.00 O -ATOM 2579 HW1 SOL 859 28.811 20.521 17.181 1.00 0.00 H -ATOM 2580 HW2 SOL 859 29.071 18.911 17.131 1.00 0.00 H -ATOM 2581 OW SOL 860 23.661 19.121 17.401 1.00 0.00 O -ATOM 2582 HW1 SOL 860 23.241 18.551 16.701 1.00 0.00 H -ATOM 2583 HW2 SOL 860 23.001 19.811 17.721 1.00 0.00 H -ATOM 2584 OW SOL 861 24.351 27.321 10.291 1.00 0.00 O -ATOM 2585 HW1 SOL 861 24.791 28.211 10.201 1.00 0.00 H -ATOM 2586 HW2 SOL 861 23.721 27.321 11.061 1.00 0.00 H -ATOM 2587 OW SOL 862 0.991 27.241 10.451 1.00 0.00 O -ATOM 2588 HW1 SOL 862 0.241 27.241 9.791 1.00 0.00 H -ATOM 2589 HW2 SOL 862 1.361 26.321 10.541 1.00 0.00 H -ATOM 2590 OW SOL 863 30.711 23.871 2.750 1.00 0.00 O -ATOM 2591 HW1 SOL 863 30.841 23.031 3.290 1.00 0.00 H -ATOM 2592 HW2 SOL 863 30.421 24.611 3.350 1.00 0.00 H -ATOM 2593 OW SOL 864 21.691 20.751 12.311 1.00 0.00 O -ATOM 2594 HW1 SOL 864 21.461 21.121 13.211 1.00 0.00 H -ATOM 2595 HW2 SOL 864 21.391 19.801 12.251 1.00 0.00 H -ATOM 2596 OW SOL 865 18.991 0.491 12.821 1.00 0.00 O -ATOM 2597 HW1 SOL 865 19.521 0.001 13.501 1.00 0.00 H -ATOM 2598 HW2 SOL 865 19.211 1.471 12.871 1.00 0.00 H -ATOM 2599 OW SOL 866 25.941 24.961 10.641 1.00 0.00 O -ATOM 2600 HW1 SOL 866 26.531 24.701 9.881 1.00 0.00 H -ATOM 2601 HW2 SOL 866 25.661 25.921 10.531 1.00 0.00 H -ATOM 2602 OW SOL 867 21.691 19.251 6.180 1.00 0.00 O -ATOM 2603 HW1 SOL 867 21.581 20.191 6.510 1.00 0.00 H -ATOM 2604 HW2 SOL 867 21.641 18.621 6.950 1.00 0.00 H -ATOM 2605 OW SOL 868 28.851 26.281 9.661 1.00 0.00 O -ATOM 2606 HW1 SOL 868 29.001 26.491 10.621 1.00 0.00 H -ATOM 2607 HW2 SOL 868 28.551 25.331 9.571 1.00 0.00 H -ATOM 2608 OW SOL 869 22.121 27.601 18.041 1.00 0.00 O -ATOM 2609 HW1 SOL 869 22.881 28.041 18.521 1.00 0.00 H -ATOM 2610 HW2 SOL 869 22.471 27.131 17.221 1.00 0.00 H -ATOM 2611 OW SOL 870 21.811 26.721 9.491 1.00 0.00 O -ATOM 2612 HW1 SOL 870 22.741 27.081 9.541 1.00 0.00 H -ATOM 2613 HW2 SOL 870 21.751 25.871 10.011 1.00 0.00 H -ATOM 2614 OW SOL 871 22.011 23.711 10.061 1.00 0.00 O -ATOM 2615 HW1 SOL 871 21.491 22.881 9.891 1.00 0.00 H -ATOM 2616 HW2 SOL 871 22.781 23.761 9.421 1.00 0.00 H -ATOM 2617 OW SOL 872 23.731 22.771 18.081 1.00 0.00 O -ATOM 2618 HW1 SOL 872 23.551 23.221 18.961 1.00 0.00 H -ATOM 2619 HW2 SOL 872 24.151 23.421 17.451 1.00 0.00 H -ATOM 2620 OW SOL 873 30.001 22.421 16.781 1.00 0.00 O -ATOM 2621 HW1 SOL 873 29.551 23.051 17.421 1.00 0.00 H -ATOM 2622 HW2 SOL 873 30.931 22.731 16.611 1.00 0.00 H -ATOM 2623 OW SOL 874 30.221 20.691 14.771 1.00 0.00 O -ATOM 2624 HW1 SOL 874 30.221 21.331 15.541 1.00 0.00 H -ATOM 2625 HW2 SOL 874 30.501 21.171 13.941 1.00 0.00 H -ATOM 2626 OW SOL 875 28.641 26.581 12.381 1.00 0.00 O -ATOM 2627 HW1 SOL 875 29.051 26.261 13.241 1.00 0.00 H -ATOM 2628 HW2 SOL 875 27.681 26.311 12.351 1.00 0.00 H -ATOM 2629 OW SOL 876 19.021 24.061 11.141 1.00 0.00 O -ATOM 2630 HW1 SOL 876 19.871 23.731 10.731 1.00 0.00 H -ATOM 2631 HW2 SOL 876 19.151 24.211 12.121 1.00 0.00 H -ATOM 2632 OW SOL 877 20.511 23.821 17.221 1.00 0.00 O -ATOM 2633 HW1 SOL 877 21.101 23.421 16.521 1.00 0.00 H -ATOM 2634 HW2 SOL 877 19.931 24.531 16.811 1.00 0.00 H -ATOM 2635 OW SOL 878 26.771 24.341 3.250 1.00 0.00 O -ATOM 2636 HW1 SOL 878 26.841 23.451 2.790 1.00 0.00 H -ATOM 2637 HW2 SOL 878 25.831 24.681 3.170 1.00 0.00 H -ATOM 2638 OW SOL 879 25.331 23.261 12.691 1.00 0.00 O -ATOM 2639 HW1 SOL 879 24.991 22.371 12.391 1.00 0.00 H -ATOM 2640 HW2 SOL 879 25.591 23.801 11.891 1.00 0.00 H -ATOM 2641 OW SOL 880 23.351 23.621 1.910 1.00 0.00 O -ATOM 2642 HW1 SOL 880 23.961 24.421 1.950 1.00 0.00 H -ATOM 2643 HW2 SOL 880 22.401 23.931 1.980 1.00 0.00 H -ATOM 2644 OW SOL 881 20.211 29.991 14.661 1.00 0.00 O -ATOM 2645 HW1 SOL 881 20.431 29.381 15.421 1.00 0.00 H -ATOM 2646 HW2 SOL 881 20.311 29.501 13.801 1.00 0.00 H -ATOM 2647 OW SOL 882 0.861 29.211 12.341 1.00 0.00 O -ATOM 2648 HW1 SOL 882 1.101 28.581 11.601 1.00 0.00 H -ATOM 2649 HW2 SOL 882 -0.039 29.611 12.161 1.00 0.00 H -ATOM 2650 OW SOL 883 19.451 31.201 10.221 1.00 0.00 O -ATOM 2651 HW1 SOL 883 19.401 31.191 11.221 1.00 0.00 H -ATOM 2652 HW2 SOL 883 18.621 30.791 9.841 1.00 0.00 H -ATOM 2653 OW SOL 884 27.651 19.481 1.330 1.00 0.00 O -ATOM 2654 HW1 SOL 884 28.161 19.491 0.470 1.00 0.00 H -ATOM 2655 HW2 SOL 884 28.211 19.061 2.040 1.00 0.00 H -ATOM 2656 OW SOL 885 0.191 27.891 6.720 1.00 0.00 O -ATOM 2657 HW1 SOL 885 0.791 27.081 6.740 1.00 0.00 H -ATOM 2658 HW2 SOL 885 0.591 28.581 6.120 1.00 0.00 H -ATOM 2659 OW SOL 886 21.251 21.881 7.200 1.00 0.00 O -ATOM 2660 HW1 SOL 886 20.461 22.391 6.860 1.00 0.00 H -ATOM 2661 HW2 SOL 886 21.161 21.731 8.180 1.00 0.00 H -ATOM 2662 OW SOL 887 26.841 28.641 13.721 1.00 0.00 O -ATOM 2663 HW1 SOL 887 27.241 28.631 12.801 1.00 0.00 H -ATOM 2664 HW2 SOL 887 26.941 29.561 14.121 1.00 0.00 H -ATOM 2665 OW SOL 888 27.781 27.721 2.910 1.00 0.00 O -ATOM 2666 HW1 SOL 888 28.411 28.101 2.230 1.00 0.00 H -ATOM 2667 HW2 SOL 888 28.181 26.891 3.300 1.00 0.00 H -ATOM 2668 OW SOL 889 22.341 0.271 14.901 1.00 0.00 O -ATOM 2669 HW1 SOL 889 22.211 1.201 14.561 1.00 0.00 H -ATOM 2670 HW2 SOL 889 21.501 -0.249 14.771 1.00 0.00 H -ATOM 2671 OW SOL 890 29.011 29.601 6.960 1.00 0.00 O -ATOM 2672 HW1 SOL 890 28.311 29.131 7.500 1.00 0.00 H -ATOM 2673 HW2 SOL 890 29.601 28.921 6.530 1.00 0.00 H -ATOM 2674 OW SOL 891 28.761 20.981 9.711 1.00 0.00 O -ATOM 2675 HW1 SOL 891 28.681 20.621 8.781 1.00 0.00 H -ATOM 2676 HW2 SOL 891 28.741 20.221 10.361 1.00 0.00 H -ATOM 2677 OW SOL 892 19.671 28.751 17.261 1.00 0.00 O -ATOM 2678 HW1 SOL 892 18.901 28.421 17.801 1.00 0.00 H -ATOM 2679 HW2 SOL 892 20.521 28.451 17.681 1.00 0.00 H -ATOM 2680 OW SOL 893 25.341 20.651 14.891 1.00 0.00 O -ATOM 2681 HW1 SOL 893 26.241 20.491 14.491 1.00 0.00 H -ATOM 2682 HW2 SOL 893 25.421 20.701 15.881 1.00 0.00 H -ATOM 2683 OW SOL 894 19.341 20.281 3.180 1.00 0.00 O -ATOM 2684 HW1 SOL 894 19.171 21.111 2.640 1.00 0.00 H -ATOM 2685 HW2 SOL 894 20.241 19.911 2.960 1.00 0.00 H -ATOM 2686 OW SOL 895 24.751 27.041 14.311 1.00 0.00 O -ATOM 2687 HW1 SOL 895 25.311 27.851 14.141 1.00 0.00 H -ATOM 2688 HW2 SOL 895 25.341 26.241 14.341 1.00 0.00 H -ATOM 2689 OW SOL 896 25.781 24.271 17.081 1.00 0.00 O -ATOM 2690 HW1 SOL 896 25.971 24.921 17.821 1.00 0.00 H -ATOM 2691 HW2 SOL 896 26.381 23.471 17.171 1.00 0.00 H -ATOM 2692 OW SOL 897 30.871 21.871 4.490 1.00 0.00 O -ATOM 2693 HW1 SOL 897 31.521 21.131 4.380 1.00 0.00 H -ATOM 2694 HW2 SOL 897 31.071 22.371 5.330 1.00 0.00 H -ATOM 2695 OW SOL 898 24.561 26.071 6.520 1.00 0.00 O -ATOM 2696 HW1 SOL 898 25.061 26.921 6.330 1.00 0.00 H -ATOM 2697 HW2 SOL 898 23.681 26.091 6.040 1.00 0.00 H -ATOM 2698 OW SOL 899 27.211 28.181 8.610 1.00 0.00 O -ATOM 2699 HW1 SOL 899 27.751 27.491 9.090 1.00 0.00 H -ATOM 2700 HW2 SOL 899 26.891 28.871 9.270 1.00 0.00 H -ATOM 2701 OW SOL 900 29.451 28.461 0.870 1.00 0.00 O -ATOM 2702 HW1 SOL 900 29.221 28.991 0.050 1.00 0.00 H -ATOM 2703 HW2 SOL 900 30.261 27.901 0.680 1.00 0.00 H -ATOM 2704 OW SOL 901 19.411 31.021 6.530 1.00 0.00 O -ATOM 2705 HW1 SOL 901 19.401 30.551 7.410 1.00 0.00 H -ATOM 2706 HW2 SOL 901 20.231 30.741 6.020 1.00 0.00 H -ATOM 2707 OW SOL 902 22.901 22.861 5.200 1.00 0.00 O -ATOM 2708 HW1 SOL 902 23.201 22.141 4.580 1.00 0.00 H -ATOM 2709 HW2 SOL 902 22.511 22.461 6.030 1.00 0.00 H -ATOM 2710 OW SOL 903 21.791 24.091 12.801 1.00 0.00 O -ATOM 2711 HW1 SOL 903 22.171 23.501 13.521 1.00 0.00 H -ATOM 2712 HW2 SOL 903 22.191 23.831 11.921 1.00 0.00 H -ATOM 2713 OW SOL 904 1.631 20.761 11.121 1.00 0.00 O -ATOM 2714 HW1 SOL 904 2.151 20.111 11.671 1.00 0.00 H -ATOM 2715 HW2 SOL 904 1.141 21.391 11.731 1.00 0.00 H -ATOM 2716 OW SOL 905 28.631 18.961 11.541 1.00 0.00 O -ATOM 2717 HW1 SOL 905 28.001 18.241 11.231 1.00 0.00 H -ATOM 2718 HW2 SOL 905 29.561 18.601 11.541 1.00 0.00 H -ATOM 2719 OW SOL 906 26.321 0.691 3.010 1.00 0.00 O -ATOM 2720 HW1 SOL 906 25.861 -0.179 3.180 1.00 0.00 H -ATOM 2721 HW2 SOL 906 27.231 0.661 3.420 1.00 0.00 H -ATOM 2722 OW SOL 907 0.911 19.141 1.680 1.00 0.00 O -ATOM 2723 HW1 SOL 907 1.261 18.731 0.840 1.00 0.00 H -ATOM 2724 HW2 SOL 907 0.011 18.761 1.880 1.00 0.00 H -ATOM 2725 OW SOL 908 0.391 23.151 6.910 1.00 0.00 O -ATOM 2726 HW1 SOL 908 -0.199 23.951 6.950 1.00 0.00 H -ATOM 2727 HW2 SOL 908 0.541 22.801 7.840 1.00 0.00 H -ATOM 2728 OW SOL 909 19.011 29.391 3.000 1.00 0.00 O -ATOM 2729 HW1 SOL 909 20.001 29.281 2.910 1.00 0.00 H -ATOM 2730 HW2 SOL 909 18.611 28.531 3.320 1.00 0.00 H -ATOM 2731 OW SOL 910 20.921 24.901 19.751 1.00 0.00 O -ATOM 2732 HW1 SOL 910 19.991 24.881 20.121 1.00 0.00 H -ATOM 2733 HW2 SOL 910 20.931 24.511 18.831 1.00 0.00 H -ATOM 2734 OW SOL 911 20.871 21.371 28.581 1.00 0.00 O -ATOM 2735 HW1 SOL 911 21.221 21.201 29.501 1.00 0.00 H -ATOM 2736 HW2 SOL 911 19.991 20.921 28.461 1.00 0.00 H -ATOM 2737 OW SOL 912 18.811 22.301 25.091 1.00 0.00 O -ATOM 2738 HW1 SOL 912 17.991 22.731 25.481 1.00 0.00 H -ATOM 2739 HW2 SOL 912 18.531 21.571 24.461 1.00 0.00 H -ATOM 2740 OW SOL 913 29.971 25.651 25.791 1.00 0.00 O -ATOM 2741 HW1 SOL 913 30.541 26.431 25.541 1.00 0.00 H -ATOM 2742 HW2 SOL 913 29.371 25.911 26.551 1.00 0.00 H -ATOM 2743 OW SOL 914 26.301 30.061 28.851 1.00 0.00 O -ATOM 2744 HW1 SOL 914 25.521 30.231 29.451 1.00 0.00 H -ATOM 2745 HW2 SOL 914 26.641 30.931 28.491 1.00 0.00 H -ATOM 2746 OW SOL 915 25.471 28.741 25.271 1.00 0.00 O -ATOM 2747 HW1 SOL 915 26.161 28.581 25.971 1.00 0.00 H -ATOM 2748 HW2 SOL 915 24.741 29.311 25.651 1.00 0.00 H -ATOM 2749 OW SOL 916 21.021 29.531 27.481 1.00 0.00 O -ATOM 2750 HW1 SOL 916 21.161 28.691 28.001 1.00 0.00 H -ATOM 2751 HW2 SOL 916 20.471 30.171 28.031 1.00 0.00 H -ATOM 2752 OW SOL 917 24.681 28.261 19.851 1.00 0.00 O -ATOM 2753 HW1 SOL 917 24.751 29.101 19.311 1.00 0.00 H -ATOM 2754 HW2 SOL 917 25.141 28.391 20.731 1.00 0.00 H -ATOM 2755 OW SOL 918 19.841 25.051 24.251 1.00 0.00 O -ATOM 2756 HW1 SOL 918 19.391 24.171 24.421 1.00 0.00 H -ATOM 2757 HW2 SOL 918 19.831 25.591 25.091 1.00 0.00 H -ATOM 2758 OW SOL 919 24.751 1.041 25.881 1.00 0.00 O -ATOM 2759 HW1 SOL 919 24.261 0.171 25.971 1.00 0.00 H -ATOM 2760 HW2 SOL 919 24.521 1.471 25.011 1.00 0.00 H -ATOM 2761 OW SOL 920 26.711 18.661 23.641 1.00 0.00 O -ATOM 2762 HW1 SOL 920 27.111 19.571 23.551 1.00 0.00 H -ATOM 2763 HW2 SOL 920 25.711 18.741 23.701 1.00 0.00 H -ATOM 2764 OW SOL 921 20.591 28.381 0.031 1.00 0.00 O -ATOM 2765 HW1 SOL 921 21.481 27.931 -0.109 1.00 0.00 H -ATOM 2766 HW2 SOL 921 19.861 27.731 -0.159 1.00 0.00 H -ATOM 2767 OW SOL 922 24.601 25.911 21.321 1.00 0.00 O -ATOM 2768 HW1 SOL 922 24.841 26.601 20.641 1.00 0.00 H -ATOM 2769 HW2 SOL 922 23.821 26.241 21.861 1.00 0.00 H -ATOM 2770 OW SOL 923 0.201 22.071 28.061 1.00 0.00 O -ATOM 2771 HW1 SOL 923 -0.659 21.571 27.931 1.00 0.00 H -ATOM 2772 HW2 SOL 923 0.821 21.531 28.621 1.00 0.00 H -ATOM 2773 OW SOL 924 29.031 25.631 22.911 1.00 0.00 O -ATOM 2774 HW1 SOL 924 29.291 25.591 23.871 1.00 0.00 H -ATOM 2775 HW2 SOL 924 28.181 25.121 22.771 1.00 0.00 H -ATOM 2776 OW SOL 925 19.381 26.731 26.511 1.00 0.00 O -ATOM 2777 HW1 SOL 925 20.371 26.611 26.601 1.00 0.00 H -ATOM 2778 HW2 SOL 925 19.141 27.681 26.721 1.00 0.00 H -ATOM 2779 OW SOL 926 27.271 22.101 20.571 1.00 0.00 O -ATOM 2780 HW1 SOL 926 27.861 22.731 20.081 1.00 0.00 H -ATOM 2781 HW2 SOL 926 27.461 21.161 20.281 1.00 0.00 H -ATOM 2782 OW SOL 927 24.121 20.581 27.471 1.00 0.00 O -ATOM 2783 HW1 SOL 927 24.071 20.531 28.471 1.00 0.00 H -ATOM 2784 HW2 SOL 927 24.141 21.541 27.181 1.00 0.00 H -ATOM 2785 OW SOL 928 21.831 28.051 21.041 1.00 0.00 O -ATOM 2786 HW1 SOL 928 22.651 28.441 20.621 1.00 0.00 H -ATOM 2787 HW2 SOL 928 21.561 27.231 20.551 1.00 0.00 H -ATOM 2788 OW SOL 929 22.441 25.621 23.421 1.00 0.00 O -ATOM 2789 HW1 SOL 929 22.891 24.721 23.391 1.00 0.00 H -ATOM 2790 HW2 SOL 929 21.501 25.511 23.751 1.00 0.00 H -ATOM 2791 OW SOL 930 24.761 19.841 19.791 1.00 0.00 O -ATOM 2792 HW1 SOL 930 25.741 19.621 19.861 1.00 0.00 H -ATOM 2793 HW2 SOL 930 24.451 19.671 18.861 1.00 0.00 H -ATOM 2794 OW SOL 931 0.901 24.521 1.721 1.00 0.00 O -ATOM 2795 HW1 SOL 931 1.181 24.091 2.571 1.00 0.00 H -ATOM 2796 HW2 SOL 931 1.151 25.481 1.731 1.00 0.00 H -ATOM 2797 OW SOL 932 27.841 23.651 27.611 1.00 0.00 O -ATOM 2798 HW1 SOL 932 27.591 23.561 26.651 1.00 0.00 H -ATOM 2799 HW2 SOL 932 28.321 22.831 27.921 1.00 0.00 H -ATOM 2800 OW SOL 933 24.011 19.261 23.741 1.00 0.00 O -ATOM 2801 HW1 SOL 933 23.201 19.271 24.321 1.00 0.00 H -ATOM 2802 HW2 SOL 933 24.041 20.091 23.191 1.00 0.00 H -ATOM 2803 OW SOL 934 21.591 18.971 20.331 1.00 0.00 O -ATOM 2804 HW1 SOL 934 22.081 19.811 20.121 1.00 0.00 H -ATOM 2805 HW2 SOL 934 22.211 18.321 20.781 1.00 0.00 H -ATOM 2806 OW SOL 935 27.971 20.981 23.421 1.00 0.00 O -ATOM 2807 HW1 SOL 935 27.491 21.391 22.641 1.00 0.00 H -ATOM 2808 HW2 SOL 935 28.961 20.961 23.231 1.00 0.00 H -ATOM 2809 OW SOL 936 23.211 30.141 26.031 1.00 0.00 O -ATOM 2810 HW1 SOL 936 22.501 29.871 26.681 1.00 0.00 H -ATOM 2811 HW2 SOL 936 22.951 29.861 25.101 1.00 0.00 H -ATOM 2812 OW SOL 937 28.941 24.111 18.781 1.00 0.00 O -ATOM 2813 HW1 SOL 937 28.531 24.931 18.391 1.00 0.00 H -ATOM 2814 HW2 SOL 937 29.581 24.371 19.511 1.00 0.00 H -ATOM 2815 OW SOL 938 27.281 23.161 25.041 1.00 0.00 O -ATOM 2816 HW1 SOL 938 26.961 23.881 24.421 1.00 0.00 H -ATOM 2817 HW2 SOL 938 27.521 22.351 24.511 1.00 0.00 H -ATOM 2818 OW SOL 939 28.791 19.011 26.151 1.00 0.00 O -ATOM 2819 HW1 SOL 939 28.071 19.061 25.461 1.00 0.00 H -ATOM 2820 HW2 SOL 939 28.551 18.321 26.841 1.00 0.00 H -ATOM 2821 OW SOL 940 1.291 24.371 19.401 1.00 0.00 O -ATOM 2822 HW1 SOL 940 0.751 24.161 20.211 1.00 0.00 H -ATOM 2823 HW2 SOL 940 2.201 23.961 19.491 1.00 0.00 H -ATOM 2824 OW SOL 941 23.891 21.181 21.901 1.00 0.00 O -ATOM 2825 HW1 SOL 941 24.161 20.591 21.151 1.00 0.00 H -ATOM 2826 HW2 SOL 941 23.891 22.131 21.591 1.00 0.00 H -ATOM 2827 OW SOL 942 25.671 29.121 22.301 1.00 0.00 O -ATOM 2828 HW1 SOL 942 25.531 29.191 23.291 1.00 0.00 H -ATOM 2829 HW2 SOL 942 26.511 28.611 22.121 1.00 0.00 H -ATOM 2830 OW SOL 943 22.721 26.751 31.131 1.00 0.00 O -ATOM 2831 HW1 SOL 943 23.581 26.871 31.631 1.00 0.00 H -ATOM 2832 HW2 SOL 943 22.301 25.881 31.401 1.00 0.00 H -ATOM 2833 OW SOL 944 0.131 22.481 0.011 1.00 0.00 O -ATOM 2834 HW1 SOL 944 0.341 23.221 0.651 1.00 0.00 H -ATOM 2835 HW2 SOL 944 -0.759 22.651 -0.419 1.00 0.00 H -ATOM 2836 OW SOL 945 22.291 29.621 23.631 1.00 0.00 O -ATOM 2837 HW1 SOL 945 22.221 30.451 23.071 1.00 0.00 H -ATOM 2838 HW2 SOL 945 22.331 28.821 23.031 1.00 0.00 H -ATOM 2839 OW SOL 946 24.281 23.991 27.271 1.00 0.00 O -ATOM 2840 HW1 SOL 946 24.401 24.651 26.531 1.00 0.00 H -ATOM 2841 HW2 SOL 946 24.741 24.331 28.101 1.00 0.00 H -ATOM 2842 OW SOL 947 24.351 27.321 28.911 1.00 0.00 O -ATOM 2843 HW1 SOL 947 24.791 28.211 28.821 1.00 0.00 H -ATOM 2844 HW2 SOL 947 23.721 27.321 29.681 1.00 0.00 H -ATOM 2845 OW SOL 948 0.991 27.241 29.071 1.00 0.00 O -ATOM 2846 HW1 SOL 948 0.241 27.241 28.411 1.00 0.00 H -ATOM 2847 HW2 SOL 948 1.361 26.321 29.161 1.00 0.00 H -ATOM 2848 OW SOL 949 30.711 23.871 21.371 1.00 0.00 O -ATOM 2849 HW1 SOL 949 30.841 23.031 21.911 1.00 0.00 H -ATOM 2850 HW2 SOL 949 30.421 24.611 21.971 1.00 0.00 H -ATOM 2851 OW SOL 950 21.691 20.751 30.931 1.00 0.00 O -ATOM 2852 HW1 SOL 950 21.461 21.121 31.831 1.00 0.00 H -ATOM 2853 HW2 SOL 950 21.391 19.801 30.871 1.00 0.00 H -ATOM 2854 OW SOL 951 18.991 0.491 0.211 1.00 0.00 O -ATOM 2855 HW1 SOL 951 19.521 0.001 0.891 1.00 0.00 H -ATOM 2856 HW2 SOL 951 19.211 1.471 0.261 1.00 0.00 H -ATOM 2857 OW SOL 952 25.941 24.961 29.261 1.00 0.00 O -ATOM 2858 HW1 SOL 952 26.531 24.701 28.501 1.00 0.00 H -ATOM 2859 HW2 SOL 952 25.661 25.921 29.151 1.00 0.00 H -ATOM 2860 OW SOL 953 21.691 19.251 24.801 1.00 0.00 O -ATOM 2861 HW1 SOL 953 21.581 20.191 25.131 1.00 0.00 H -ATOM 2862 HW2 SOL 953 21.641 18.621 25.571 1.00 0.00 H -ATOM 2863 OW SOL 954 28.851 26.281 28.281 1.00 0.00 O -ATOM 2864 HW1 SOL 954 29.001 26.491 29.241 1.00 0.00 H -ATOM 2865 HW2 SOL 954 28.551 25.331 28.191 1.00 0.00 H -ATOM 2866 OW SOL 955 0.421 27.001 19.041 1.00 0.00 O -ATOM 2867 HW1 SOL 955 0.761 26.071 19.191 1.00 0.00 H -ATOM 2868 HW2 SOL 955 0.601 27.271 18.091 1.00 0.00 H -ATOM 2869 OW SOL 956 21.811 26.721 28.111 1.00 0.00 O -ATOM 2870 HW1 SOL 956 22.741 27.081 28.161 1.00 0.00 H -ATOM 2871 HW2 SOL 956 21.751 25.871 28.631 1.00 0.00 H -ATOM 2872 OW SOL 957 22.011 23.711 28.681 1.00 0.00 O -ATOM 2873 HW1 SOL 957 21.491 22.881 28.511 1.00 0.00 H -ATOM 2874 HW2 SOL 957 22.781 23.761 28.041 1.00 0.00 H -ATOM 2875 OW SOL 958 28.641 26.581 31.001 1.00 0.00 O -ATOM 2876 HW1 SOL 958 29.051 26.261 31.861 1.00 0.00 H -ATOM 2877 HW2 SOL 958 27.681 26.311 30.971 1.00 0.00 H -ATOM 2878 OW SOL 959 19.021 24.061 29.761 1.00 0.00 O -ATOM 2879 HW1 SOL 959 19.871 23.731 29.351 1.00 0.00 H -ATOM 2880 HW2 SOL 959 19.151 24.211 30.741 1.00 0.00 H -ATOM 2881 OW SOL 960 26.771 24.341 21.871 1.00 0.00 O -ATOM 2882 HW1 SOL 960 26.841 23.451 21.411 1.00 0.00 H -ATOM 2883 HW2 SOL 960 25.831 24.681 21.791 1.00 0.00 H -ATOM 2884 OW SOL 961 25.331 23.261 0.081 1.00 0.00 O -ATOM 2885 HW1 SOL 961 24.991 22.371 -0.219 1.00 0.00 H -ATOM 2886 HW2 SOL 961 25.591 23.801 -0.719 1.00 0.00 H -ATOM 2887 OW SOL 962 23.351 23.621 20.531 1.00 0.00 O -ATOM 2888 HW1 SOL 962 23.961 24.421 20.571 1.00 0.00 H -ATOM 2889 HW2 SOL 962 22.401 23.931 20.601 1.00 0.00 H -ATOM 2890 OW SOL 963 0.861 29.211 30.961 1.00 0.00 O -ATOM 2891 HW1 SOL 963 1.101 28.581 30.221 1.00 0.00 H -ATOM 2892 HW2 SOL 963 -0.039 29.611 30.781 1.00 0.00 H -ATOM 2893 OW SOL 964 19.451 31.201 28.841 1.00 0.00 O -ATOM 2894 HW1 SOL 964 19.401 31.191 29.841 1.00 0.00 H -ATOM 2895 HW2 SOL 964 18.621 30.791 28.461 1.00 0.00 H -ATOM 2896 OW SOL 965 0.191 27.891 25.341 1.00 0.00 O -ATOM 2897 HW1 SOL 965 0.791 27.081 25.361 1.00 0.00 H -ATOM 2898 HW2 SOL 965 0.591 28.581 24.741 1.00 0.00 H -ATOM 2899 OW SOL 966 21.251 21.881 25.821 1.00 0.00 O -ATOM 2900 HW1 SOL 966 20.461 22.391 25.481 1.00 0.00 H -ATOM 2901 HW2 SOL 966 21.161 21.731 26.801 1.00 0.00 H -ATOM 2902 OW SOL 967 26.841 28.641 1.111 1.00 0.00 O -ATOM 2903 HW1 SOL 967 27.241 28.631 0.191 1.00 0.00 H -ATOM 2904 HW2 SOL 967 26.941 29.561 1.511 1.00 0.00 H -ATOM 2905 OW SOL 968 27.781 27.721 21.531 1.00 0.00 O -ATOM 2906 HW1 SOL 968 28.411 28.101 20.851 1.00 0.00 H -ATOM 2907 HW2 SOL 968 28.181 26.891 21.921 1.00 0.00 H -ATOM 2908 OW SOL 969 29.011 29.601 25.581 1.00 0.00 O -ATOM 2909 HW1 SOL 969 28.311 29.131 26.121 1.00 0.00 H -ATOM 2910 HW2 SOL 969 29.601 28.921 25.151 1.00 0.00 H -ATOM 2911 OW SOL 970 28.761 20.981 28.331 1.00 0.00 O -ATOM 2912 HW1 SOL 970 28.681 20.621 27.401 1.00 0.00 H -ATOM 2913 HW2 SOL 970 28.741 20.221 28.981 1.00 0.00 H -ATOM 2914 OW SOL 971 19.371 22.071 18.951 1.00 0.00 O -ATOM 2915 HW1 SOL 971 18.451 21.791 18.661 1.00 0.00 H -ATOM 2916 HW2 SOL 971 19.681 22.841 18.391 1.00 0.00 H -ATOM 2917 OW SOL 972 19.341 20.281 21.801 1.00 0.00 O -ATOM 2918 HW1 SOL 972 19.171 21.111 21.261 1.00 0.00 H -ATOM 2919 HW2 SOL 972 20.241 19.911 21.581 1.00 0.00 H -ATOM 2920 OW SOL 973 30.871 21.871 23.111 1.00 0.00 O -ATOM 2921 HW1 SOL 973 31.521 21.131 23.001 1.00 0.00 H -ATOM 2922 HW2 SOL 973 31.071 22.371 23.951 1.00 0.00 H -ATOM 2923 OW SOL 974 24.561 26.071 25.141 1.00 0.00 O -ATOM 2924 HW1 SOL 974 25.061 26.921 24.951 1.00 0.00 H -ATOM 2925 HW2 SOL 974 23.681 26.091 24.661 1.00 0.00 H -ATOM 2926 OW SOL 975 27.211 28.181 27.231 1.00 0.00 O -ATOM 2927 HW1 SOL 975 27.751 27.491 27.711 1.00 0.00 H -ATOM 2928 HW2 SOL 975 26.891 28.871 27.891 1.00 0.00 H -ATOM 2929 OW SOL 976 29.451 28.461 19.491 1.00 0.00 O -ATOM 2930 HW1 SOL 976 29.221 28.991 18.671 1.00 0.00 H -ATOM 2931 HW2 SOL 976 30.261 27.901 19.301 1.00 0.00 H -ATOM 2932 OW SOL 977 19.411 31.021 25.151 1.00 0.00 O -ATOM 2933 HW1 SOL 977 19.401 30.551 26.031 1.00 0.00 H -ATOM 2934 HW2 SOL 977 20.231 30.741 24.641 1.00 0.00 H -ATOM 2935 OW SOL 978 22.901 22.861 23.821 1.00 0.00 O -ATOM 2936 HW1 SOL 978 23.201 22.141 23.201 1.00 0.00 H -ATOM 2937 HW2 SOL 978 22.511 22.461 24.651 1.00 0.00 H -ATOM 2938 OW SOL 979 1.631 20.761 29.741 1.00 0.00 O -ATOM 2939 HW1 SOL 979 2.151 20.111 30.291 1.00 0.00 H -ATOM 2940 HW2 SOL 979 1.141 21.391 30.351 1.00 0.00 H -ATOM 2941 OW SOL 980 28.631 18.961 30.161 1.00 0.00 O -ATOM 2942 HW1 SOL 980 28.001 18.241 29.851 1.00 0.00 H -ATOM 2943 HW2 SOL 980 29.561 18.601 30.161 1.00 0.00 H -ATOM 2944 OW SOL 981 26.321 0.691 21.631 1.00 0.00 O -ATOM 2945 HW1 SOL 981 25.861 -0.179 21.801 1.00 0.00 H -ATOM 2946 HW2 SOL 981 27.231 0.661 22.041 1.00 0.00 H -ATOM 2947 OW SOL 982 0.911 19.141 20.301 1.00 0.00 O -ATOM 2948 HW1 SOL 982 1.261 18.731 19.461 1.00 0.00 H -ATOM 2949 HW2 SOL 982 0.011 18.761 20.501 1.00 0.00 H -ATOM 2950 OW SOL 983 0.391 23.151 25.531 1.00 0.00 O -ATOM 2951 HW1 SOL 983 -0.199 23.951 25.571 1.00 0.00 H -ATOM 2952 HW2 SOL 983 0.541 22.801 26.461 1.00 0.00 H -ATOM 2953 OW SOL 984 19.011 29.391 21.621 1.00 0.00 O -ATOM 2954 HW1 SOL 984 20.001 29.281 21.531 1.00 0.00 H -ATOM 2955 HW2 SOL 984 18.611 28.531 21.941 1.00 0.00 H -TER -ENDMDL diff --git a/examples/latte_scf/input.in b/examples/latte_scf/input.in deleted file mode 100644 index 21150808..00000000 --- a/examples/latte_scf/input.in +++ /dev/null @@ -1,27 +0,0 @@ -#Input file for SEDACS - -Verbosity= True -Threshold= 1.0E-7 -#CoordsFile= coords_1299.pdb -CoordsFile= wat2.xyz -#CoordsFile= algo.xyz -#CoordsFile= coords_2955.pdb -#CoordsFile= coords_100.pdb -#CoordsFile= coords_1032.pdb -#CoordsFile= water_128.xyz -GraphThreshold= 0.01 -MaxDeg= 500 #Max graph degree -Rcut= 3.0 #Radius cutoff -PartitionType= Metis -#PartitionType= Regular -#PartitionType= MinCut -NumParts= 1 -SCFTol= 1.0E-1 -Overlap= True -ElectronicTemperature= 1000 -MuCalculationType= #FromParts, Dynamical, None -Orbitals= {"H":1,"O":4} #This has to be know for each engine -NumAdaptiveIter= 100 #Number of graph adaptive iterations -Engine= {"Name":"LATTE","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/python/","Executable":"/home/cnegre/","RhoSolverMethod":"Diag","Accelerator":"No","AcceleratorPath":"/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/nvda"} #The name of the external code -#Engine= {"Name":"ProxyAFortran","InterfaceType":"Module","Path":"/home/cnegre/sedacs-Qi/proxies/fortran/","Executable":"/home/cnegre/"} #The name of the external code - diff --git a/examples/latte_scf/latte.in b/examples/latte_scf/latte.in deleted file mode 100644 index 5b48bfad..00000000 --- a/examples/latte_scf/latte.in +++ /dev/null @@ -1,80 +0,0 @@ -LATTE INPUT FILE -================ -#This input file resumes the content of MDcontroller and TBparam/control.in -#The parser will only read it if it's present inside the running folder. -#In case this file is not present Latte will read the two files as original. -#The order of the kewords is not important in this file. -#To get a full description of these keywords please see: -## https://github.com/lanl/LATTE/blob/master/Manual/LATTE_manual.pdf - -#General controls -CONTROL{ - XCONTROL= 1 - BASISTYPE= NONORTHO - PARAMPATH= '../../parameters/latte/TBparam/' - KBT= 0.0 - VERBOSE= 3 - ENTROPYKIND= 1 - SPINON= 0 SPINTOL= 1.0e-4 - ELECTRO= 1 ELECMETH= 0 ELEC_QTOL= 1.0e-5 - PBCON= 1 - MAXSCF= 100 - BREAKTOL= 1.0E-6 MINSP2ITER= 22 SP2CONV= REL - FULLQCONV= 0 QITER= 0 - QMIX= 0.1 SPINMIX= 0.25 MDMIX= 0.25 - SPARSEON= 0 THRESHOLDON= 1 NUMTHRESH= 1.0e-5 FILLINSTOP= 100 BLKSZ= 4 - MSPARSE= 1000 - RELAX= 0 RELAXTYPE= SD MAXITER= -1 RLXFTOL= 0.0000001 - SKIN= 1.0 - CHARGE= 0 - XBO= 1 - XBODISON= 1 - XBODISORDER= 5 - KON= 0 - DOKERNEL= F - KERNELSCHEME= 2 - NORECS= 3 - SAVEKERNEL= T - READKERNEL= F - DOKERNEL= F - KBT= 0.086 - SCLTYPE= TABLE -} - -#Controls for QMD (if using lammps MAXITER must be set to -1) -MDCONTROL{ - MAXITER= -1 - WRTFREQ= 1 - RSFREQ= 100000 - RSLEVEL= 0 -} - -MIXER{ - MixerType= Linear - Verbose= 3 - MPulay= 10 - MixCoeff= 0.05 - MixerON= T - } - - SP2{ - MDim= -1 - MinSP2Iter= 10 - MaxSP2Iter= 100 - Verbose= 10 - NumThresh= 1.0e-5 - SP2Tol= 1.0E-006 - SP2Conv= REL - Flavor= Alg2 - BMLType= Dense - } - - ZSP{ - MDim= -1 - Verbose= 10 - NumthreshI= 1.0e-8 - NumthreshF= 1.0e-5 - BMLType= Dense - ZSP= F - } - diff --git a/examples/latte_scf/main.py b/examples/latte_scf/main.py deleted file mode 100644 index 02cc04b8..00000000 --- a/examples/latte_scf/main.py +++ /dev/null @@ -1,35 +0,0 @@ -"""Main sedacs prototype driver to perform a -graph-based addaptive construction of the density -matrix together with a full self-consistent charge -optimization""" - -import sys - -import numpy as np -from sedacs.driver.latte_scf import get_adaptiveSCFDM -from sedacs.driver.init import get_args, init -from sedacs.charges import get_charges -import sedacs.globals as gl - -# Pass arguments from comand line -args = get_args() - -# Initialize sedacs - -np.set_printoptions(threshold=sys.maxsize) - -# Initialize sdc parameters -sdc, eng, comm, rank, numranks, sy, hindex, graphNL, nl, nlTrX, nlTrY, nlTrZ = init(args) - -sdc.verb = True - -mu = 0 -# Perform a graph-adaptive calculation of the density matrix -sy.charges,parts,subSysOnRank = get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL) - -#sy.energy,sy.forces = get_energy_and_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphDH) - - - - - diff --git a/examples/latte_scf/vars b/examples/latte_scf/vars deleted file mode 100644 index c6116796..00000000 --- a/examples/latte_scf/vars +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -THIS_PATH=`pwd` -export PYTHONPATH="" -MOD_PATH=$THIS_PATH/../../src/sedacs/ -MOD_PATH1=$THIS_PATH/../../src/ -MOD_PATH2=$THIS_PATH/../../src/sedacs/driver -PROXYA_FORTRAN_PATH=$THIS_PATH/../../proxies/fortran/build/ -PROXYA_PYTHON_FILES=$THIS_PATH/../../proxies/python/ -PROXYA_PYTHON_FOLDER=$THIS_PATH/../../ -PROGRESS_PATH=$HOME/qmd-progress/install/lib64/ -BML_PATH=$HOME/bml/install/lib64/ -export PROXYA_FORTRAN_PATH=$PROXYA_FORTRAN_PATH -export PROXYA_PYTHON_PATH=$PROXYA_PYTHON_PATH -export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$MOD_PATH1:$MOD_PATH2:$PROGRESS_PATH:$BML_PATH:$PROXYA_PYTHON_FOLDER:$PROXYA_PYTHON_FILES:$PROXYA_FORTRAN_PATH -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROGRESS_PATH:$BML_PATH -export PYTHONWARNINGS="ignore:Unverified HTTPS request" - -GPU_PATH=$THIS_PATH/../../src/sedacs/gpu -echo $GPU_PATH -export PYTHONPATH=$PYTHONPATH:$GPU_PATH - diff --git a/examples/latte_scf/wat.pdb b/examples/latte_scf/wat.pdb deleted file mode 100644 index 034d516a..00000000 --- a/examples/latte_scf/wat.pdb +++ /dev/null @@ -1,9 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE coords_100.pdb -CRYST1 50.459 50.459 50.459 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 H MOL 1 0.749 -0.000 0.442 0.00 0.00 H -ATOM 2 O MOL 1 0.000 0.020 -0.165 0.00 0.00 O -ATOM 3 H MOL 1 -0.749 -0.000 0.442 0.00 0.00 H -TER -END diff --git a/examples/latte_scf/wat.xyz b/examples/latte_scf/wat.xyz deleted file mode 100644 index 4c90a4d4..00000000 --- a/examples/latte_scf/wat.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -Lattice="10.00 0.0 0.0 0.0 10.00 0.0 0.0 0.0 10.00" -H 0.7493682 0.0000000 0.4424329 -O 0.0000000 0.0000000 -0.1653507 -H -0.7493682 0.0000000 0.4424329 diff --git a/examples/latte_scf/wat2.xyz b/examples/latte_scf/wat2.xyz deleted file mode 100644 index 4eda9feb..00000000 --- a/examples/latte_scf/wat2.xyz +++ /dev/null @@ -1,8 +0,0 @@ -6 -Lattice="110.00 0.0 0.0 0.0 110.00 0.0 0.0 0.0 110.00" -H 50.7493682 50.0000000 50.4424329 -O 50.0000000 50.0000000 49.8346493 -H 49.2506318 50.0000000 50.4424329 -H 10.7493682 10.0000000 10.4424329 -O 10.0000000 10.0000000 9.8346493 -H 9.2506318 10.0000000 10.4424329 diff --git a/examples/latte_scf/water_128.xyz b/examples/latte_scf/water_128.xyz deleted file mode 100644 index ddf850a9..00000000 --- a/examples/latte_scf/water_128.xyz +++ /dev/null @@ -1,386 +0,0 @@ -384 -Lattice="15.66 0.0 0.0 0.0 15.66 0.0 0.0 0.0 15.66" -H 1.4821741580963135 14.427353858947754 2.953700065612793 -O 1.6885966062545776 15.210265159606934 2.3970494270324707 -H 2.3674094676971436 14.887577056884766 1.7750413417816162 -H 1.725602626800537 1.2087194919586182 10.28447151184082 -O 1.457163691520691 0.2813889980316162 10.563945770263672 -H 1.375484585762024 0.24449187517166138 11.546887397766113 -H 12.558568954467773 14.682812690734863 9.085963249206543 -O 13.374778747558594 15.202472686767578 8.868748664855957 -H 14.192708969116211 14.738236427307129 9.219833374023438 -H 6.220971584320068 10.90986442565918 3.922910690307617 -O 5.395566463470459 11.367801666259766 3.851719856262207 -H 5.097456455230713 11.388015747070312 2.87663197517395 -H 13.928208351135254 6.038353443145752 1.3187469244003296 -O 14.39126968383789 6.452458381652832 0.5244671106338501 -H 14.677336692810059 5.6653947830200195 15.641419410705566 -H 11.000219345092773 1.4569547176361084 0.45885026454925537 -O 11.63747501373291 2.104846715927124 0.8563565611839294 -H 12.253790855407715 1.5968525409698486 1.4643044471740723 -H 8.34492301940918 10.484837532043457 4.09354305267334 -O 7.658782958984375 9.694025039672852 4.098236560821533 -H 8.161250114440918 8.91158390045166 4.3958234786987305 -H 15.37078857421875 9.183189392089844 11.81903076171875 -O 0.6639226675033569 9.312712669372559 11.556085586547852 -H 1.1555242538452148 8.781630516052246 12.177814483642578 -H 2.469231367111206 4.930058479309082 6.316625118255615 -O 1.8953945636749268 5.428220272064209 6.90617036819458 -H 1.317298173904419 4.663173198699951 7.2908854484558105 -H 4.391626834869385 1.8281409740447998 2.7765512466430664 -O 5.01270055770874 1.8962875604629517 2.043304443359375 -H 4.4229350090026855 2.101100444793701 1.224356770515442 -H 11.354153633117676 9.732658386230469 1.4163808822631836 -O 12.010466575622559 10.312472343444824 1.0070639848709106 -H 12.736639022827148 9.787837982177734 0.45557060837745667 -H 15.223688125610352 4.653311729431152 13.862953186035156 -O 14.768438339233398 4.34467887878418 14.679522514343262 -H 13.97741413116455 3.8146629333496094 14.375483512878418 -H 2.5933477878570557 2.2602338790893555 4.078963756561279 -O 3.5907583236694336 1.9742355346679688 4.357860565185547 -H 3.4221041202545166 1.4155670404434204 5.144217491149902 -H 11.827882766723633 5.23652458190918 12.129922866821289 -O 11.420333862304688 4.348351001739502 12.450085639953613 -H 11.13693618774414 3.948350667953491 11.59998893737793 -H 3.122493267059326 14.13240909576416 15.377690315246582 -O 3.406907320022583 13.9873685836792 0.637580156326294 -H 4.268272399902344 14.468565940856934 0.7348317503929138 -H 11.982939720153809 3.2170681953430176 6.133591651916504 -O 12.74484920501709 3.6578142642974854 6.557803630828857 -H 12.507513046264648 4.57366418838501 6.91209077835083 -H 4.577542304992676 5.402759075164795 0.7480008006095886 -O 3.8300294876098633 5.114811420440674 0.15346001088619232 -H 3.705512046813965 5.906427383422852 15.198246002197266 -H 4.8761677742004395 2.076591730117798 14.366914749145508 -O 5.596246242523193 1.586893081665039 13.9247465133667 -H 5.811666965484619 2.142857551574707 13.113996505737305 -H 13.377649307250977 1.042777180671692 9.423595428466797 -O 13.151018142700195 1.8292531967163086 10.050421714782715 -H 13.835417747497559 2.495191812515259 9.988792419433594 -H 7.997742176055908 11.266412734985352 9.060665130615234 -O 8.366767883300781 10.735424995422363 8.289185523986816 -H 7.682319641113281 10.126465797424316 8.000984191894531 -H 6.61982536315918 5.436073303222656 1.7336512804031372 -O 5.908255577087402 6.083886623382568 1.5545637607574463 -H 5.400964736938477 6.177191257476807 2.360203504562378 -H 13.306570053100586 8.240872383117676 12.238951683044434 -O 13.812541961669922 8.967954635620117 12.561972618103027 -H 13.299116134643555 9.732105255126953 12.134977340698242 -H 13.150106430053711 10.962871551513672 2.506638765335083 -O 13.738313674926758 11.23777961730957 3.2231998443603516 -H 14.14203929901123 12.027764320373535 2.7478020191192627 -H 9.468901634216309 8.692893028259277 11.753732681274414 -O 9.996575355529785 8.272689819335938 11.04357624053955 -H 9.358142852783203 7.589511394500732 10.609314918518066 -H 9.184500694274902 12.010608673095703 3.185051918029785 -O 9.332493782043457 11.644781112670898 4.082911014556885 -H 10.308004379272461 11.81727123260498 4.252378463745117 -H 14.13718318939209 3.084084987640381 6.320530414581299 -O 15.026741027832031 2.7198779582977295 6.185760021209717 -H 15.581278800964355 2.8094310760498047 7.003511428833008 -H 1.805783987045288 13.039594650268555 13.465221405029297 -O 1.2811273336410522 12.223275184631348 13.247485160827637 -H 0.8052940368652344 11.954380989074707 14.096330642700195 -H 8.574115753173828 12.27851676940918 1.1447495222091675 -O 9.307392120361328 12.729674339294434 1.5993788242340088 -H 8.992727279663086 13.581256866455078 1.8648567199707031 -H 0.4504242539405823 2.9571290016174316 4.610954761505127 -O 1.1356279850006104 2.80627703666687 3.858980894088745 -H 0.6570261716842651 2.2529356479644775 3.161118984222412 -H 2.2259984016418457 1.135374665260315 7.197758197784424 -O 2.8197834491729736 0.5862197875976562 6.640344619750977 -H 3.361316680908203 0.13465867936611176 7.2745137214660645 -H 2.7605855464935303 3.5155222415924072 10.508090019226074 -O 2.7270185947418213 2.7197012901306152 9.998039245605469 -H 3.6602747440338135 2.449582576751709 9.736455917358398 -H 5.481457233428955 0.6800147891044617 1.2360972166061401 -O 5.735907077789307 15.55340576171875 0.6875582933425903 -H 5.908614158630371 0.24427083134651184 15.490666389465332 -H 6.483280658721924 6.651552677154541 12.702972412109375 -O 6.861117839813232 5.836682319641113 12.391767501831055 -H 7.664957046508789 5.7625226974487305 13.000656127929688 -H 5.648747444152832 3.2264184951782227 8.506119728088379 -O 5.52994966506958 2.848599910736084 9.409486770629883 -H 6.039980888366699 2.0285658836364746 9.292366981506348 -H 12.85450553894043 6.765137195587158 10.680105209350586 -O 12.331360816955566 6.957432270050049 11.530010223388672 -H 11.486471176147461 7.264204025268555 11.158045768737793 -H 7.362239837646484 9.154353141784668 0.3254317045211792 -O 7.498302459716797 9.510848999023438 15.109041213989258 -H 8.419239044189453 9.094351768493652 14.665138244628906 -H 1.5374337434768677 4.2605109214782715 2.7824814319610596 -O 1.6234899759292603 5.16341495513916 2.2621734142303467 -H 2.4345974922180176 5.093528747558594 1.753399133682251 -H 13.98061466217041 13.565018653869629 0.982430636882782 -O 13.24919319152832 14.127765655517578 0.6269434690475464 -H 12.569368362426758 13.48637866973877 0.3310380280017853 -H 3.5146663188934326 10.071371078491211 1.0377812385559082 -O 2.739107131958008 9.517007827758789 0.8543626070022583 -H 2.8032007217407227 8.92596435546875 1.6306871175765991 -H 3.2404215335845947 9.397064208984375 7.563103199005127 -O 3.697007656097412 10.221046447753906 7.237059116363525 -H 3.5571937561035156 10.893165588378906 7.9507975578308105 -H 9.887673377990723 12.222174644470215 12.364692687988281 -O 9.317317962646484 13.004202842712402 11.984381675720215 -H 9.826249122619629 13.767129898071289 12.294698715209961 -H 14.60256576538086 1.0523858070373535 6.485602855682373 -O 14.413382530212402 0.06270215660333633 6.496177673339844 -H 14.147909164428711 15.534577369689941 7.447587966918945 -H 13.379937171936035 6.094424724578857 8.554449081420898 -O 13.894918441772461 6.2347235679626465 9.342596054077148 -H 14.61241626739502 6.858521938323975 9.085838317871094 -H 8.004314422607422 12.405964851379395 11.07300090789795 -O 7.369335651397705 12.221914291381836 10.350719451904297 -H 6.828718185424805 13.049220085144043 10.023193359375 -H 6.5086822509765625 14.756935119628906 4.994861602783203 -O 6.839446544647217 15.60968017578125 4.6459126472473145 -H 6.100698471069336 0.509876012802124 4.77648401260376 -H 1.814298391342163 7.485466480255127 14.199212074279785 -O 0.9792758822441101 7.4431376457214355 13.722976684570312 -H 0.34630855917930603 7.4032135009765625 14.47954273223877 -H 6.28085994720459 13.820106506347656 13.516830444335938 -O 6.905226230621338 13.168272972106934 13.857548713684082 -H 7.748592376708984 13.196846961975098 13.40528678894043 -H 2.5069146156311035 11.916142463684082 9.840462684631348 -O 2.6829140186309814 12.13232135772705 8.878107070922852 -H 1.8113011121749878 12.242073059082031 8.437335968017578 -H 14.037789344787598 9.845786094665527 4.642851829528809 -O 13.800369262695312 9.396403312683105 5.5100417137146 -H 14.389450073242188 8.535675048828125 5.423510551452637 -H 12.178966522216797 3.552061080932617 13.457749366760254 -O 12.67518424987793 2.939744710922241 14.132843971252441 -H 12.050117492675781 2.740718126296997 14.851271629333496 -H 6.341159820556641 4.153588771820068 12.246420860290527 -O 5.721994876861572 3.38653564453125 12.11013412475586 -H 5.833896160125732 3.1198267936706543 11.189043045043945 -H 0.4187822639942169 6.928407669067383 5.925801753997803 -O 15.306794166564941 7.189908027648926 5.43982458114624 -H 0.07627714425325394 7.3125996589660645 4.559133529663086 -H 15.205296516418457 13.601235389709473 10.856249809265137 -O 15.426885604858398 14.0115385055542 9.955629348754883 -H 0.4404774010181427 14.725579261779785 10.123786926269531 -H 7.781744480133057 6.341546058654785 10.87021255493164 -O 8.193033218383789 6.693912982940674 10.09223461151123 -H 7.419920921325684 6.874934673309326 9.521349906921387 -H 4.713289260864258 13.532459259033203 7.1375813484191895 -O 4.18504524230957 13.934209823608398 7.856135368347168 -H 3.663506269454956 13.236863136291504 8.294808387756348 -H 1.4324342012405396 7.933252811431885 8.537219047546387 -O 2.39997935295105 7.775256156921387 8.192770004272461 -H 2.2801403999328613 6.949921607971191 7.6617207527160645 -H 0.5963254570960999 6.013045310974121 12.672981262207031 -O 0.5425719022750854 4.989353179931641 12.51000690460205 -H 1.4733445644378662 4.74129056930542 12.26429271697998 -H 5.787660598754883 12.561777114868164 4.9811110496521 -O 5.850313663482666 13.304183006286621 5.696791172027588 -H 6.695471286773682 13.148829460144043 6.1641845703125 -H 9.32719898223877 8.223834991455078 1.8639791011810303 -O 10.29822063446045 8.110273361206055 1.9925719499588013 -H 10.310250282287598 7.87868595123291 2.945894479751587 -H 0.277807354927063 3.5526158809661865 8.722700119018555 -O 0.9846296906471252 3.210406541824341 8.203073501586914 -H 1.7031030654907227 3.0266921520233154 8.867362976074219 -H 2.8105833530426025 2.196861982345581 15.392070770263672 -O 3.735032796859741 2.4994215965270996 15.570079803466797 -H 3.644773006439209 3.4426615238189697 0.03853387013077736 -H 14.682604789733887 1.0238474607467651 2.0653231143951416 -O 15.566673278808594 1.3636430501937866 1.7907549142837524 -H 0.5717520117759705 0.6591038703918457 1.8086328506469727 -H 11.107076644897461 8.861739158630371 7.134167671203613 -O 11.434098243713379 8.342004776000977 6.366227149963379 -H 12.278743743896484 8.585103988647461 6.036701679229736 -H 6.849724292755127 2.226242780685425 14.659040451049805 -O 7.6959028244018555 2.413717269897461 15.109258651733398 -H 8.172039031982422 3.1463210582733154 14.650622367858887 -H 4.415694236755371 12.286710739135742 1.0233668088912964 -O 4.88289213180542 11.490494728088379 1.3367034196853638 -H 5.81308126449585 11.642242431640625 0.9043989777565002 -H 10.558619499206543 9.060455322265625 9.619710922241211 -O 10.549599647521973 9.386129379272461 8.682696342468262 -H 9.6725492477417 9.819774627685547 8.593550682067871 -H 6.1465864181518555 15.147404670715332 9.628643035888672 -O 5.529297351837158 14.445521354675293 9.938332557678223 -H 4.890136241912842 14.265419006347656 9.203654289245605 -H 12.137746810913086 14.339106559753418 4.88058614730835 -O 12.554288864135742 15.224326133728027 4.790942668914795 -H 13.392069816589355 15.262238502502441 5.262670993804932 -H 12.538585662841797 4.795741558074951 2.6958494186401367 -O 13.156197547912598 5.574193000793457 2.774204730987549 -H 13.542095184326172 5.429687976837158 3.6601510047912598 -H 1.6302706003189087 14.983660697937012 5.979812145233154 -O 0.8948200941085815 14.330414772033691 6.0626373291015625 -H 0.1337418407201767 14.884979248046875 6.267165660858154 -H 4.088843822479248 7.9247822761535645 14.16343879699707 -O 3.351106643676758 7.655316352844238 14.735418319702148 -H 3.2007994651794434 8.391205787658691 15.35331916809082 -H 0.15970730781555176 12.594325065612793 2.4045615196228027 -O 15.217007637023926 12.903790473937988 1.7151750326156616 -H 15.467392921447754 12.415807723999023 0.8731029033660889 -H 10.299698829650879 7.86765193939209 5.2782793045043945 -O 9.465031623840332 7.6437177658081055 4.793709754943848 -H 9.516728401184082 6.686868667602539 4.577350616455078 -H 11.606966972351074 11.700885772705078 0.35497593879699707 -O 11.372387886047363 12.519648551940918 15.574257850646973 -H 10.634315490722656 12.839116096496582 0.46611565351486206 -H 8.778069496154785 1.2632012367248535 15.487536430358887 -O 9.388166427612305 0.5421920418739319 0.13583745062351227 -H 9.037282943725586 0.09930628538131714 0.9319953322410583 -H 6.16838264465332 5.261773586273193 7.558151721954346 -O 6.098697662353516 4.416169166564941 7.145912170410156 -H 7.055895805358887 4.16866397857666 7.010154724121094 -H 7.392298221588135 10.838863372802734 15.570189476013184 -O 7.205356597900391 11.764328956604004 0.33388379216194153 -H 7.023780345916748 12.40236759185791 15.264869689941406 -H 8.928775787353516 4.274104595184326 5.8341803550720215 -O 8.753131866455078 3.6826674938201904 6.5963945388793945 -H 8.974727630615234 2.730682373046875 6.358644008636475 -H 0.35756778717041016 3.3287155628204346 15.077012062072754 -O 0.9291011691093445 2.5445761680603027 15.223231315612793 -H 0.5748293399810791 2.0781967639923096 0.3547714650630951 -H 4.015512466430664 3.467869758605957 4.926387310028076 -O 4.089820861816406 4.415233612060547 5.229217529296875 -H 4.887458801269531 4.509295463562012 5.778048038482666 -H 5.291957855224609 14.813364028930664 11.435693740844727 -O 5.140069007873535 14.953418731689453 12.421006202697754 -H 5.216044902801514 0.23042252659797668 12.654684066772461 -H 13.444220542907715 11.729223251342773 11.851582527160645 -O 12.642805099487305 11.136754989624023 11.598742485046387 -H 12.548523902893066 11.20355224609375 10.628812789916992 -H 9.697056770324707 15.593395233154297 14.027965545654297 -O 10.087967872619629 15.423428535461426 13.162454605102539 -H 11.05064868927002 0.002158439252525568 13.155196189880371 -H 2.523853063583374 11.595932006835938 12.188504219055176 -O 2.7947349548339844 11.257299423217773 11.32616901397705 -H 2.0624139308929443 10.607105255126953 11.156081199645996 -H 13.958531379699707 8.130409240722656 15.528944969177246 -O 13.822677612304688 9.02670955657959 15.227170944213867 -H 13.791452407836914 9.062285423278809 14.228338241577148 -H 10.27184772491455 9.424518585205078 13.943780899047852 -O 9.732276916503906 8.618180274963379 14.051572799682617 -H 10.166350364685059 8.033967971801758 14.658818244934082 -H 8.461220741271973 12.057075500488281 7.043845176696777 -O 8.419132232666016 12.80543041229248 6.415385723114014 -H 8.736284255981445 12.338397979736328 5.5919036865234375 -H 8.171420097351074 0.7793318033218384 5.426231861114502 -O 8.820952415466309 1.2351326942443848 6.013558864593506 -H 9.01926326751709 0.6126450300216675 6.739671230316162 -H 2.0820090770721436 7.869522571563721 3.1253793239593506 -O 2.9208269119262695 8.372122764587402 3.1731083393096924 -H 2.627509355545044 9.106399536132812 3.720787525177002 -H 11.650372505187988 10.628031730651855 8.698492050170898 -O 12.256834030151367 11.429168701171875 8.799505233764648 -H 13.083629608154297 11.129518508911133 8.284788131713867 -H 13.960386276245117 14.537196159362793 14.816256523132324 -O 14.3788480758667 14.84691047668457 13.965582847595215 -H 13.691018104553223 15.364837646484375 13.521903038024902 -H 11.58198356628418 1.196730613708496 5.081545829772949 -O 11.163005828857422 2.0494470596313477 5.276447772979736 -H 10.318563461303711 1.797735571861267 5.718932151794434 -H 6.0017476081848145 10.59385871887207 10.80034065246582 -O 5.272309303283691 10.05134105682373 11.150882720947266 -H 4.443428039550781 10.651139259338379 11.057957649230957 -H 12.516849517822266 11.899116516113281 4.271182060241699 -O 11.869437217712402 12.347843170166016 4.853531837463379 -H 12.166669845581055 12.171024322509766 5.7557244300842285 -H 15.470584869384766 4.516737461090088 11.073837280273438 -O 15.1124849319458 4.111335277557373 10.25562858581543 -H 14.591557502746582 4.877866744995117 9.938982963562012 -H 15.495829582214355 12.599084854125977 12.530135154724121 -O 14.549777030944824 12.876575469970703 12.166041374206543 -H 14.274829864501953 13.484247207641602 12.92894172668457 -H 4.544622421264648 5.858673572540283 4.278730869293213 -O 4.853733062744141 6.651581287384033 3.80159854888916 -H 4.038316249847412 7.112107276916504 3.6127209663391113 -H 11.086899757385254 2.9105334281921387 3.527799129486084 -O 11.044354438781738 3.5479931831359863 2.813129425048828 -H 11.100714683532715 3.017974376678467 2.005096435546875 -H 11.167326927185059 5.955437660217285 0.33261048793792725 -O 10.39560604095459 6.435065746307373 0.020402710884809494 -H 10.094603538513184 6.954756259918213 0.794249415397644 -H 5.193816661834717 9.804295539855957 7.193893909454346 -O 6.119728088378906 9.39712905883789 7.226724624633789 -H 6.320915699005127 9.148200988769531 6.31579065322876 -H 10.59584903717041 3.775369882583618 9.694656372070312 -O 10.687355041503906 2.999478340148926 10.27226734161377 -H 11.493496894836426 2.6317555904388428 9.933670043945312 -H 9.679096221923828 4.952756404876709 13.074913024902344 -O 8.934259414672852 4.986400127410889 13.691017150878906 -H 9.434240341186523 5.47733211517334 14.371708869934082 -H 3.9072349071502686 4.0586981773376465 11.940484046936035 -O 3.154937267303467 4.696625709533691 12.053990364074707 -H 3.5881435871124268 5.517663955688477 11.802338600158691 -H 0.2335490584373474 0.01581624709069729 13.774118423461914 -O 0.980350911617279 0.5342038869857788 13.378776550292969 -H 0.9922274947166443 1.4501113891601562 13.837281227111816 -H 12.65897274017334 0.9930011630058289 11.683954238891602 -O 12.707582473754883 0.764843225479126 12.696332931518555 -H 12.694315910339355 1.5772038698196411 13.278538703918457 -H 10.812484741210938 11.850899696350098 14.067712783813477 -O 10.624994277954102 11.294839859008789 13.30173397064209 -H 11.430129051208496 11.36072826385498 12.707429885864258 -H 7.020813941955566 7.331269264221191 1.747533917427063 -O 7.554996013641357 8.1338529586792 1.842114806175232 -H 7.4181599617004395 8.49007797241211 2.763763666152954 -H 11.144770622253418 5.892538547515869 8.100217819213867 -O 12.011418342590332 6.053420543670654 7.622436046600342 -H 11.807604789733887 6.768427848815918 7.026505947113037 -H 0.804131269454956 13.10036849975586 4.533726215362549 -O 1.1628715991973877 12.663919448852539 3.6855170726776123 -H 1.7346456050872803 11.923086166381836 3.9333012104034424 -H 9.218413352966309 1.9028451442718506 10.826943397521973 -O 8.582201957702637 1.300583004951477 11.322752952575684 -H 9.201321601867676 0.7191085815429688 11.809184074401855 -H 3.442178726196289 14.570088386535645 13.23493766784668 -O 2.64837646484375 14.339696884155273 13.757745742797852 -H 2.056213617324829 15.07002067565918 13.468094825744629 -H 6.184440612792969 8.607916831970215 14.012269973754883 -O 5.613175392150879 8.24959659576416 13.366471290588379 -H 5.421210289001465 8.999065399169922 12.734549522399902 -H 14.156079292297363 10.09754753112793 6.937656879425049 -O 14.381294250488281 10.39493465423584 7.833716869354248 -H 15.031318664550781 11.204416275024414 7.830630302429199 -H 9.186308860778809 5.373661041259766 9.201058387756348 -O 9.884927749633789 4.853215217590332 8.791373252868652 -H 9.495500564575195 4.389050006866455 7.994511127471924 -H 7.909711837768555 0.8771836757659912 10.073674201965332 -O 7.3992815017700195 0.40500327944755554 9.375271797180176 -H 8.047890663146973 0.01646227203309536 8.824193954467773 -H 4.144155025482178 7.798429012298584 11.0037202835083 -O 3.6634180545806885 7.110377311706543 10.5337553024292 -H 3.0318245887756348 7.595344543457031 9.977286338806152 -H 11.543298721313477 12.845231056213379 9.526606559753418 -O 11.121271133422852 13.702033042907715 9.871810913085938 -H 10.621376991271973 13.381515502929688 10.645342826843262 -H 7.287951469421387 15.405527114868164 1.4838590621948242 -O 8.058247566223145 15.133753776550293 2.1102092266082764 -H 7.733454704284668 15.314888954162598 3.0118229389190674 -H 5.935088634490967 7.812267303466797 7.968081951141357 -O 6.042677879333496 6.951498031616211 8.45356559753418 -H 5.2108025550842285 6.850614070892334 8.959635734558105 -H 15.26892375946045 9.244001388549805 8.84305191040039 -O 0.033080607652664185 8.36771297454834 9.159706115722656 -H 0.16065479815006256 8.65696907043457 10.071883201599121 -H 15.44448471069336 7.283434867858887 2.2880680561065674 -O 0.4308568835258484 7.290805816650391 2.960726737976074 -H 0.8542476892471313 6.4178080558776855 2.8072118759155273 -H 6.653284549713135 3.0818610191345215 2.4921748638153076 -O 7.361125946044922 3.674710988998413 2.2265164852142334 -H 7.656304359436035 3.247504234313965 1.4033161401748657 -H 13.179733276367188 15.35033893585205 1.7865592241287231 -O 13.136012077331543 0.4361955523490906 2.404041290283203 -H 13.092921257019043 15.597688674926758 3.281696081161499 -H 3.2176342010498047 10.340422630310059 5.482553958892822 -O 2.859381914138794 10.761625289916992 4.600158214569092 -H 3.671846389770508 10.996495246887207 4.227005958557129 -H 9.0103178024292 14.254643440246582 7.299729824066162 -O 9.379074096679688 15.032605171203613 7.842066287994385 -H 9.993480682373047 14.663202285766602 8.487648963928223 -H 1.057732105255127 10.423288345336914 0.49331533908843994 -O 0.2989242374897003 10.900001525878906 0.0640338882803917 -H 15.468161582946777 10.141322135925293 15.32434368133545 -H 0.5501918792724609 13.092039108276367 7.281371593475342 -O 0.34184548258781433 12.450984001159668 7.994649887084961 -H 0.06924410164356232 13.057560920715332 8.765048027038574 -H 9.83470630645752 4.528668403625488 3.769052028656006 -O 9.009892463684082 4.8917107582092285 4.168781280517578 -H 8.33976936340332 4.487730026245117 3.5564870834350586 diff --git a/proxies/python/aosa_hamiltonian.py b/proxies/python/aosa_hamiltonian.py index b8a82897..dd8cf9cc 100644 --- a/proxies/python/aosa_hamiltonian.py +++ b/proxies/python/aosa_hamiltonian.py @@ -82,7 +82,7 @@ def __init__(self,symbol,orb,filePath): if(count == self.nl): break - + parFile.close() def get_integral(coordsI,symbolI,orbI,coordsJ,symbolJ,orbJ): diff --git a/proxies/python/evals_dvals.py b/proxies/python/evals_dvals.py index 44ffbd59..40da99f4 100644 --- a/proxies/python/evals_dvals.py +++ b/proxies/python/evals_dvals.py @@ -23,9 +23,6 @@ # @param ham Hamiltonian matrix # @param nocc Number of occupied orbitals # @param core_size Number of atoms in the cores. -# @param method Type of algorithm used to compute DM -# @param accel Type of accelerator/special device used to compute DM. Default is No and -# will only use numpy. # @param mu Chemical potential. If set to none, the calculation will use nocc # @param etemp Electronic temperature # @param overlap Overlap matrix @@ -33,7 +30,7 @@ # # @return rho Density matrix # -def get_evals_dvals_proxy(ham, nocc, norbsInCore=None, method="Diag", accel="No", mu=None, etemp=0.0, overlap=None, full_data=False, verb=False, lib=None): +def get_evals_dvals_proxy(ham, nocc, norbsInCore=None, mu=None, etemp=0.0, verb=False, lib=None): """Calcualtion of the evals and dvals from H""" if verb: print("Computing Evals and Dvals") diff --git a/proxies/python/hamiltonian_elements.py b/proxies/python/hamiltonian_elements.py index c1cf3e07..49c2703a 100644 --- a/proxies/python/hamiltonian_elements.py +++ b/proxies/python/hamiltonian_elements.py @@ -81,6 +81,7 @@ def __init__(self,symbol,orb,filePath): if(count == self.nl): break + parFile.close() diff --git a/proxies/python/proxy_global.py b/proxies/python/proxy_global.py index 0201e56f..4bb16edb 100644 --- a/proxies/python/proxy_global.py +++ b/proxies/python/proxy_global.py @@ -27,6 +27,7 @@ def read_ppots(filename,symbols): for k in range(2,len(info)): ppots[i,j,k-2] = float(info[k]) ppots[j,i,:] = ppots[i,j,:] + myfile.close() diff --git a/src/sedacs/charges.py b/src/sedacs/charges.py index ab00850f..edca84f0 100644 --- a/src/sedacs/charges.py +++ b/src/sedacs/charges.py @@ -20,7 +20,7 @@ def get_charges(rho, znuc, types, part, hindex, over=None, verb=False): Parameters ---------- - rho : numpy 2D array + rho : 2D numpy array A 2D numpy array containing the elements of the Density matrix. znuc : int Number of valence electrons for every atom type. @@ -31,15 +31,15 @@ def get_charges(rho, znuc, types, part, hindex, over=None, verb=False): hindex : list Begining and ending of every index for atomic orbital block. Atom i will have its orbitals indexed in between (hindex[i],hindex[i+1]) - over : numpy 2D array + over : 2D numpy array A 2D numpy array containing the elements of the Overlap matrix. - verb : bool + verb : bool, optional If set to True information is printed. Returns ------- - 2D numpy array - A vector containing the Mulliquen charges is returned. + 1D numpy array + A vector containing the Mulliken charges is returned. Notes ----- @@ -95,13 +95,14 @@ def collect_charges(chargesOnRank, charges, part, nats, verb=False): List of atom indices in the part. nats : int Number of total atoms in the system. + verb : bool, optional + If set to True information is printed. Returns ------- 1D numpy array Returns the same vector chargesOnRank with the added charges of the part - """ if verb: status_at("collect_charges", "Collecting charges") diff --git a/src/sedacs/coulombic.py b/src/sedacs/coulombic.py index 7c664a0a..3cef3017 100644 --- a/src/sedacs/coulombic.py +++ b/src/sedacs/coulombic.py @@ -1,82 +1,136 @@ -"""coulombic -Some functions to copute Coulombic interactions +""" +coulombic.py +==================================== +Some functions to compute Coulombic interactions -So far: get_coulvs and build_coul_ham """ from sedacs.message import * -from sedacs.periodic_table import PeriodicTable from sedacs.interface_modules import build_coul_ham_module -from sedacs.ewald import ewald_self_energy, calculate_PME_ewald -from sedacs.ewald import init_PME_data, calculate_alpha_and_num_grids, CONV_FACTOR +from sedacs.ewald import calculate_PME_ewald +from sedacs.ewald import init_PME_data, calculate_alpha_and_num_grids from sedacs.neighbor_list import NeighborState import numpy as np import torch try: from mpi4py import MPI + mpiLib = True except ImportError as e: mpiLib = False -from multiprocessing import Pool if mpiLib: from sedacs.mpi import * import time -__all__ = [ - "get_coulvs","get_PME_coulvs","build_coul_ham","get_coulombic_forces" -] - -## Get short-range (non periodic) Coulombic potentials -# @param charges Excess electronic ocupation (this is the negative of the charge vector) -# @param coords Atomic positions -# @param unit_facto Unit factor to account for proper units. -# @param verb Verbosity level. -# -def get_coulvs(charges,coords,atomtypes,latticeVectors,unit_factor=14.3996437701414,verb=False): +__all__ = ["get_coulvs", "get_PME_coulvs", "build_coul_ham", "get_coulombic_forces"] + + +def get_coulvs( + charges, coords, atomtypes, latticeVectors, unit_factor=14.3996437701414, verb=False +): + """ + Get short-range (non periodic) Coulombic potentials + + Parameters + ---------- + charges : 1D numpy array, dtype: float + Excess electronic occupation (this is the negative of the charge vector) + coords : 2D numpy array, dtype: float + Atomic positions + atomtypes : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + unit_factor : float + Unit factor to account for proper units. + verb : bool + Verbosity level. If True, print additional information. + Returns + ------- + coulvs : 1D numpy array, dtype: float + The Coulomb potential for each atom. + """ nats = len(charges) coulvs = np.zeros(nats) alpha = 0.4 for i in range(nats): for j in range(nats): - if(i != j): - for nx in range(-1,2): - for ny in range(-1,2): - for nz in range(-1,2): - translation = nx * latticeVectors[0, :] + ny * latticeVectors[1, :] + nz * latticeVectors[2, :] - distance = np.linalg.norm(coords[j,:] - coords[i,:] + translation) + if i != j: + for nx in range(-1, 2): + for ny in range(-1, 2): + for nz in range(-1, 2): + translation = ( + nx * latticeVectors[0, :] + + ny * latticeVectors[1, :] + + nz * latticeVectors[2, :] + ) + distance = np.linalg.norm( + coords[j, :] - coords[i, :] + translation + ) erf = torch.erf(alpha * torch.Tensor([distance])) - coulvs[i] = coulvs[i] + erf * (unit_factor*charges[j])/(distance) - else: #We do not know how Hubbard Us are treated bu guest codes - #coulvs[i] = coulvs[i] + hubbard[types[i]]*q[i] - if atomtypes[i] == 1: -# coulvs[i] = coulvs[i] #+ 5.876141*charges[i] - coulvs[i] = coulvs[i] + 11.876141*charges[i] - elif atomtypes[i] == 0: - #coulvs[i] = coulvs[i] #+ 6.054683*charges[i] - coulvs[i] = coulvs[i] + 12.054683*charges[i] - + coulvs[i] = coulvs[i] + erf * (unit_factor * charges[j]) / ( + distance + ) + # else: # We do not know how Hubbard Us are treated bu guest codes + # # coulvs[i] = coulvs[i] + hubbard[types[i]]*q[i] + # if atomtypes[i] == 1: + # coulvs[i] = coulvs[i] + 11.876141 * charges[i] + # elif atomtypes[i] == 0: + # coulvs[i] = coulvs[i] + 12.054683 * charges[i] return coulvs + @torch.compile(dynamic=True) def calculate_dist_dips(pos_T, long_nbr_state): disps = long_nbr_state.calculate_displacement(pos_T) dists = torch.norm(disps, dim=0) - nbr_inds = torch.where((dists > long_nbr_state.cutoff) | (dists == 0.0), -1, long_nbr_state.nbr_inds) + nbr_inds = torch.where( + (dists > long_nbr_state.cutoff) | (dists == 0.0), -1, long_nbr_state.nbr_inds + ) dists = torch.where(dists == 0, 1, dists) return disps, dists, nbr_inds -## Get Periodic Coulombic potentials -# @param charges Excess electronic occupation (this is the negative of the charge vector) -# @param coords Atomic positions -# @param unit_facto Unit factor to account for proper units. -# @param verb Verbosity level. -# -def get_PME_coulvs(charges_np,hubbard_u_np,coords_np,atomtypes_np,lattice_vecs_np,calculate_forces=0): + +def get_PME_coulvs( + charges, + hubbard_u, + coords, + atomtypes, + lattice_vecs, + calculate_forces=0, +): + """ + Get periodic Coulombic potentials using the Particle Mesh Ewald method + + Parameters + ---------- + charges : 1D numpy array, dtype: float + Excess electronic occupation (this is the negative of the charge vector) + hubbard_u : 1D numpy array, dtype: float + Hubbard U values for each atom type. + coords : 2D numpy array, dtype: float + Atomic positions + atomtypes : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + lattice_vecs : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + calculate_forces : int, optional + If set to 1, calculate forces. Default is 0 (no forces calculated). + + Returns + ------- + coulvs : 1D numpy array, dtype: float + The Coulomb potential for each atom. + ewald_e : float + The total energy from the Ewald summation. + forces : 2D numpy array, dtype: float + The forces on each atom, if calculated. + """ np_dtype = np.float64 dtype = torch.float64 device = "cuda" @@ -84,52 +138,60 @@ def get_PME_coulvs(charges_np,hubbard_u_np,coords_np,atomtypes_np,lattice_vecs_n # so if box lengths are [10.0, 10.0, 10.0], cutoff shuold be at most 5.0. # because of the minumum image convention. - cutoff = 5.0 # real space cutoff - if cutoff > lattice_vecs_np[0][0]: - cutoff = float(lattice_vecs_np[0][0]) / 2 - buffer = 1.0 # buffer room - t_err = 5e-4 # force error + cutoff = 5.0 # real space cutoff + if cutoff > lattice_vecs[0][0]: + cutoff = float(lattice_vecs[0][0]) / 2 + buffer = 1.0 # buffer room + t_err = 5e-4 # force error PME_order = 6 - lattice_vecs = torch.from_numpy(lattice_vecs_np).to(device).to(dtype) - lattice_lengths = torch.norm(lattice_vecs, dim=1) - coords = torch.from_numpy(coords_np).to(device).to(dtype) -# coords = coords - lattice_lengths * torch.floor(coords / lattice_lengths) - charges = torch.from_numpy(charges_np).to(device).to(dtype) - hubbard_u = torch.from_numpy(hubbard_u_np).to(device).to(dtype) - atomtypes = torch.from_numpy(atomtypes_np).to(device).to(torch.int) - + lattice_vecs = torch.from_numpy(lattice_vecs).to(device).to(dtype) + coords = torch.from_numpy(coords).to(device).to(dtype) + charges = torch.from_numpy(charges).to(device).to(dtype) + hubbard_u = torch.from_numpy(hubbard_u).to(device).to(dtype) + atomtypes = torch.from_numpy(atomtypes).to(device).to(torch.int) # init PME grid size and related data - alpha, grid_dimensions = calculate_alpha_and_num_grids(lattice_vecs_np, cutoff, t_err) + alpha, grid_dimensions = calculate_alpha_and_num_grids( + lattice_vecs, cutoff, t_err + ) PME_data = init_PME_data(grid_dimensions, lattice_vecs, alpha, PME_order) - + # coords_T: [3, N], coords: [N, 3] coords_T = coords.T.contiguous() - nbr_state = NeighborState(coords_T, lattice_vecs, None, cutoff, is_dense=True, buffer=buffer) + nbr_state = NeighborState( + coords_T, lattice_vecs, None, cutoff, is_dense=True, buffer=buffer + ) disps, dists, nbr_inds = calculate_dist_dips(coords_T, nbr_state) -# breakpoint() # When this is first run, torch.compile might give bunch of warnings about complex numbers # and overall tuning process, they are safe to ignore - ewald_e, forces, coulvs = calculate_PME_ewald(coords, charges, lattice_vecs, - nbr_inds, disps, dists, - alpha, - cutoff, - PME_data, hubbard_u, atomtypes, calculate_forces = calculate_forces, calculate_dq = 1, screening = 1) - - # unit conversio and adding self energy (needed for energy conservation) - # self_energy, self_energy_dq = ewald_self_energy(charges, alpha, calculate_dq = 1) - # ewald_e = (ewald_e + self_energy) * CONV_FACTOR - ewald_e = ewald_e + 0.5 * torch.sum( hubbard_u * charges**2) - # coulvs = (coulvs + self_energy_dq) * CONV_FACTOR + ewald_e, forces, coulvs = calculate_PME_ewald( + coords, + charges, + lattice_vecs, + nbr_inds, + disps, + dists, + alpha, + cutoff, + PME_data, + hubbard_u, + atomtypes, + calculate_forces=calculate_forces, + calculate_dq=1, + screening=1, + ) + + # unit conversion and adding self energy (needed for energy conservation) + ewald_e = ewald_e + 0.5 * torch.sum(hubbard_u * charges**2) coulvs = coulvs + hubbard_u * charges ewald_e = ewald_e.double().cpu().detach().numpy() coulvs = coulvs.double().cpu().numpy() if calculate_forces: - return coulvs, ewald_e, forces.double().cpu().numpy() #* CONV_FACTOR + return coulvs, ewald_e, forces.double().cpu().numpy() else: - return coulvs, ewald_e + return coulvs, ewald_e ## Add coulombic potentials to the Hamiltonian # @param ham0 No-SCF Hamiltonian @@ -166,23 +228,26 @@ def build_coul_ham(engine,ham0,vcouls,types,charges,orbital_based,hindex,overlap return ham - -def get_coulombic_forces(charges,coords,atomTypes,symbols,factor=14.39964377014,field=None): +def get_coulombic_forces( + charges, coords, atomTypes, symbols, factor=14.39964377014, field=None +): nats = len(charges) - forces_coul = np.zeros((nats,3)) - forces_field = np.zeros((nats,3)) - forces = np.zeros((nats,3)) + forces_coul = np.zeros((nats, 3)) + forces_field = np.zeros((nats, 3)) + forces = np.zeros((nats, 3)) for i in range(nats): - #Coulombic Forces + # Coulombic Forces for j in range(nats): - if(i != j): - distance = np.linalg.norm(coords[i,:] - coords[j,:]) - direction = (coords[i,:] - coords[j,:])/distance - forces_coul[i,:] = forces_coul[i,:] - (factor*direction*charges[i]*charges[j])/(distance**2) - - #Field forces - if(field is not None): - forces_field[i,:] = forces_field[i,:] + field*charges[i] + if i != j: + distance = np.linalg.norm(coords[i, :] - coords[j, :]) + direction = (coords[i, :] - coords[j, :]) / distance + forces_coul[i, :] = forces_coul[i, :] - ( + factor * direction * charges[i] * charges[j] + ) / (distance**2) + + # Field forces + if field is not None: + forces_field[i, :] = forces_field[i, :] + field * charges[i] forces = forces_field + forces_coul else: forces = forces_coul diff --git a/src/sedacs/driver/graph_adaptive_scf.py b/src/sedacs/driver/graph_adaptive_scf.py index b8d497fe..8cf9e145 100644 --- a/src/sedacs/driver/graph_adaptive_scf.py +++ b/src/sedacs/driver/graph_adaptive_scf.py @@ -1,6 +1,13 @@ -"""Graph adaptive self-consistenf charge solver""" +""" +graph_adaptive_scf.py +==================================== +Graph adaptive self-consistent charge solver + +""" import time +import numpy as np +from pathlib import Path from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph from sedacs.graph_partition import get_coreHaloIndices, graph_partition @@ -8,28 +15,89 @@ from sedacs.sdc_density_matrix import get_density_matrix from sedacs.sdc_evals_dvals import get_evals_dvals from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates -from sedacs.mpi import collect_and_sum_matrices, collect_and_sum_vectors_float, collect_and_concatenate_vectors +from sedacs.mpi import ( + collect_and_sum_matrices, + collect_and_sum_vectors_float, + collect_and_concatenate_vectors, +) from sedacs.system import System, extract_subsystem, get_hindex -from sedacs.coulombic import get_coulvs, get_PME_coulvs, build_coul_ham +from sedacs.coulombic import get_PME_coulvs, build_coul_ham from sedacs.charges import get_charges, collect_charges from sedacs.evals_dvals import collect_evals, collect_dvals from sedacs.message import status_at, error_at, warning_at from sedacs.mixer import diis_mix, linear_mix from sedacs.chemical_potential import get_mu -import numpy as np +from sedacs.file_io import read_latte_tbparams try: from mpi4py import MPI + is_mpi_available = True -except ModuleNotFoundError: +except ModuleNotFoundError as e: is_mpi_available = False + error_at( + "get_adaptiveSCFDM_scf", + "mpi4py not found, parallelization will not be available", + ) + raise e __all__ = ["get_singlePoint_charges", "get_adaptiveSCFDM"] -def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu=0.0): - # computing DM for core+halo part - # +def get_singlePoint_charges( + sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu=0.0 +): + """ + Get the single point charges for the full system from graph-partitioned subsystems. + This function is called from the graph adaptive SCF loop. + For each SCF iteration, it follows the following steps: + 1. For each subsystem: + a. Extract the subsystem from the full system. + b. Compute the Hamiltonian matrix for the subsystem. + c. Compute the evals and dvals from the Hamiltonian matrix for the subsystem. + 2. Collect the full evals and dvals across all subsystems. + 3. Compute the global chemical potential for the full system using the collected full evals and dvals. + 4. For each subsystem: + a. Compute the density matrix for the subsystem. + b. Compute the charges for the subsystem. + 5. Collect the full graph and charges across all subsystems. + + Parameters + ---------- + sdc : sedacs driver object + Refer to driver/init.py for detailed information. + eng : engine object + Refer to engine.py for detailed information. + rank: int + Rank of the current process in the MPI communicator. + numranks: int + Total number of processes in the MPI communicator. + comm: MPI communicator + MPI communicator for parallelization. + parts: list of lists of int + List of partitions of the full system. + partsCoreHalo: list of lists of int + List of core and halo indices for each partition. + sy: System object + Refer to system.py for detailed information. + hindex: list of int + Orbital index for each atom in the system. The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1`. + gscf: int + Graph adaptive SCF iteration number. + mu: float + Chemical potential for the full system. Default is 0.0. + + Returns + ------- + fullGraphRho: 2D numpy array, dtype: float + The full graph collected from all subsystems. + fullCharges: 1D numpy array, dtype: float + The mulliken charges for the full system. + subSysOnRank: list of System objects + List of subsystem objects for each partition on the current rank. + mu: float + The chemical potential for the full system. + """ partsPerRank = int(sdc.nparts / numranks) partIndex1 = rank * partsPerRank partIndex2 = (rank + 1) * partsPerRank @@ -38,110 +106,121 @@ def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo evalsOnRank = None dvalsOnRank = None subSysOnRank = [] - ham_list = [None] * partsPerRank - over_list = [None] * partsPerRank for partIndex in range(partIndex1, partIndex2): - idx = partIndex - partIndex1 numberOfCoreAtoms = len(parts[partIndex]) subSy = System(len(partsCoreHalo[partIndex])) subSy.symbols = sy.symbols tic = time.perf_counter() - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex] + ) subSy.ncores = len(parts[partIndex]) - if(gscf == 0): - subSy.charges = np.zeros(len(subSy.types)) toc = time.perf_counter() print("Time for extract_subsystem", toc - tic, "(s)") partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) write_xyz_coordinates( - "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", + subSy.coords, + subSy.types, + subSy.symbols, ) tic = time.perf_counter() - #Get some electronic structure elements for the sybsystem - #This could eventually be computed in the engine if no basis set is - #provided in the SEDACS input file. - subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + # Get some electronic structure elements for the sybsystem + # This could eventually be computed in the engine if no basis set is + # provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex( + sdc.orbs, subSy.symbols, subSy.types, verb=True + ) norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian - if(sdc.over): - # eng.name = "LATTE" - ham0, over = get_hamiltonian(eng, partIndex, sdc.nparts, norbs, sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols, verbose=sdc.verb, get_overlap=True, newsystem=True) - #eng.name = "ProxyAPython" - else: - ham0 = get_hamiltonian(eng, partIndex, sdc.nparts, norbs, sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols, verbose=sdc.verb, get_overlap=False, newsystem=True) - over_list[idx] = over - # ham = ham0 tmpArray = np.zeros(numberOfCoreAtoms) tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] - norbsInCore = int(np.sum(tmpArray)) + print("Number of orbitals in the core =", norbsInCore) + nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals + + ham, over = get_hamiltonian( + eng, + partIndex, + sdc.nparts, + norbs, + sy.latticeVectors, + subSy.coords, + subSy.types, + subSy.symbols, + verb=False, + get_overlap=True, + newsystem=True, + ) - print("Number of orbitals in the core =",norbsInCore) -# print("ham0:", ham0) - # if gscf == 0: - if(sdc.over): - ham = build_coul_ham(eng,ham0,sy.coulvs[partsCoreHalo[partIndex]],subSy.types,subSy.charges,False,subSy.hindex,overlap=over,verb=True) - else: - ham = build_coul_ham(eng,ham0,sy.coulvs[partsCoreHalo[partIndex]],subSy.types,subSy.charges,False,subSy.hindex,overlap=None,verb=True) - ham_list[idx] = ham toc = time.perf_counter() print("Time for get_hamiltonian", toc - tic, "(s)") - #norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian - nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals tic = time.perf_counter() - evalsInPart, dvalsInPart = get_evals_dvals(eng,partIndex,sdc.nparts,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=True,newsystem=False) - #breakpoint() + evalsInPart, dvalsInPart = get_evals_dvals( + eng, + partIndex, + sdc.nparts, + sy.latticeVectors, + subSy.coords, + subSy.types, + subSy.symbols, + ham, + sy.coulvs[partsCoreHalo[partIndex]], + nocc=nocc, + norbsInCore=norbsInCore, + mu=mu, + etemp=sdc.etemp, + verb=False, + newsystem=False, + ) toc = time.perf_counter() print("Time for get_evals_dvals", toc - tic, "(s)") - # subSy.latticeVectors = sy.latticeVectors - # if(sdc.over): - # rho, evalsInPart, dvalsInPart = get_density_matrix(eng,subSy,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,mu=mu,etemp=sdc.etemp,overlap=over,full_data=True,verb=False) - # else: - # rho, evals, dvals = get_density_matrix(eng,subSy,ham,nocc=nocc,norbsInCore=norbsInCore,mu=None,etemp=sdc.etemp,overlap=None,full_data=True,verb=False, newsystem=False) - - evalsOnRank = collect_evals(evalsOnRank,evalsInPart,verb=True) - dvalsOnRank = collect_dvals(dvalsOnRank,dvalsInPart,verb=True) + evalsOnRank = collect_evals(evalsOnRank, evalsInPart, verb=True) + dvalsOnRank = collect_dvals(dvalsOnRank, dvalsInPart, verb=True) - if (is_mpi_available and numranks > 1): + if is_mpi_available and numranks > 1: fullEvals = collect_and_concatenate_vectors(evalsOnRank, comm) fullDvals = collect_and_concatenate_vectors(dvalsOnRank, comm) comm.Barrier() else: fullEvals = evalsOnRank fullDvals = dvalsOnRank - - mu = get_mu(mu, fullEvals, sdc.etemp, int(sy.numel/2), dvals=fullDvals, kB=8.61739e-5, verb=True) + # Calculate the global chemical potential from the evals and dvals collected from all subsystems + mu = get_mu( + mu, + fullEvals, + sdc.etemp, + int(sy.numel / 2), + dvals=fullDvals, + kB=8.61739e-5, + verb=True, + ) for partIndex in range(partIndex1, partIndex2): - idx = partIndex - partIndex1 numberOfCoreAtoms = len(parts[partIndex]) subSy = System(len(partsCoreHalo[partIndex])) subSy.symbols = sy.symbols tic = time.perf_counter() - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex] + ) subSy.ncores = len(parts[partIndex]) - ham = ham_list[idx] - over = over_list[idx] - if(gscf == 0): - subSy.charges = np.zeros(len(subSy.types)) toc = time.perf_counter() print("Time for extract_subsystem", toc - tic, "(s)") - partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" - write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates( - "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols - ) + tic = time.perf_counter() - #Get some electronic structure elements for the sybsystem - #This could eventually be computed in the engine if no basis set is - #provided in the SEDACS input file. - subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + # Get some electronic structure elements for the sybsystem + # This could eventually be computed in the engine if no basis set is + # provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex( + sdc.orbs, subSy.symbols, subSy.types, verb=True + ) norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian tmpArray = np.zeros(numberOfCoreAtoms) @@ -152,36 +231,57 @@ def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo subSy.latticeVectors = sy.latticeVectors tic = time.perf_counter() - - if eng.name == "LATTE": - rho, chargesInPart = get_density_matrix(eng,partIndex,sdc.nparts,norbs,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=True,newsystem=True,keepmem=True) - else: - rho = get_density_matrix(eng,partIndex,sdc.nparts,norbs,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=True) - - if(sdc.over): - chargesInPart = get_charges(rho,subSy.znuc,subSy.types,parts[partIndex],subSy.hindex,over=over_list[partIndex],verb=True) - else: - chargesInPart = get_charges(rho,subSy.znuc,subSy.types,parts[partIndex],subSy.hindex,over=None,verb=True) - - chargesInPart = chargesInPart[:len(parts[partIndex])] + + rho, chargesInPart = get_density_matrix( + eng, + partIndex, + sdc.nparts, + norbs, + sy.latticeVectors, + subSy.coords, + subSy.types, + subSy.symbols, + ham, + sy.coulvs[partsCoreHalo[partIndex]], + nocc=nocc, + norbsInCore=norbsInCore, + mu=mu, + etemp=sdc.etemp, + overlap=over, + full_data=False, + verb=False, + newsystem=True, + keepmem=True, + ) + + chargesInPart = chargesInPart[: len(parts[partIndex])] subSy.charges = chargesInPart - #Save the subsystems list for returning them + # Save the subsystems list for returning them subSysOnRank.append(subSy) - print("TotalCharge in part",partIndex,sum(chargesInPart)) - print("Charges in part",chargesInPart) - + print("TotalCharge in part", partIndex, sum(chargesInPart)) + # print("Charges in part", chargesInPart) + toc = time.perf_counter() print("Time to get_densityMatrix and get_charges", toc - tic, "(s)") # Building a graph from DMs graphOnRank = collect_graph_from_rho( - graphOnRank, rho, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex],len(parts[partIndex]), hindex + graphOnRank, + rho, + sdc.gthresh, + sy.nats, + sdc.maxDeg, + partsCoreHalo[partIndex], + len(parts[partIndex]), + hindex, ) - chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) + chargesOnRank = collect_charges( + chargesOnRank, chargesInPart, parts[partIndex], sy.nats, verb=True + ) - if (is_mpi_available and numranks > 1): + if is_mpi_available and numranks > 1: fullGraphRho = collect_and_sum_matrices(graphOnRank, rank, numranks, comm) fullCharges = collect_and_sum_vectors_float(chargesOnRank, rank, numranks, comm) comm.Barrier() @@ -190,77 +290,100 @@ def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo fullCharges = chargesOnRank # print_graph(fullGraphRho) - return fullGraphRho, fullCharges, fullEvals, fullDvals, subSysOnRank, mu + return fullGraphRho, fullCharges, subSysOnRank, mu def get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu): fullGraph = graphNL - #Iitial guess for the excess ocupation vector. This is the negative of - #the charge! + # Iitial guess for the excess ocupation vector. This is the negative of + # the charge! charges = sy.charges -# charges = np.zeros(sy.nats) - chargesOld = None + chargesOld = None chargesIn = None chargesOld = None chargesOut = None -# mu = -0.0 - sdc.etemp = 1000 - # Partition the graph - parts = graph_partition(sdc, eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, True) - njumps = 2 - partsCoreHalo = [] - numCores = [] + # Get the path of the current file + curr_file_path = Path(__file__) + # Get the directory of the current file + curr_dir = curr_file_path.parent + # Get the path of latte parameters + latte_param_path = curr_dir / Path( + "../../../parameters/latte/TBparam/electrons.dat" + ) + latte_tbparams = read_latte_tbparams(latte_param_path) + hubbard_u = [latte_tbparams[symbol]["HubbardU"] for symbol in sy.symbols] + hubbard_u = np.array(hubbard_u)[sy.types] for gscf in range(sdc.numAdaptIter): msg = "Graph-adaptive iteration" + str(gscf) - status_at("get_adaptiveSCFDM",msg) - #print("\nCore and halos indices for every part:") + status_at("get_adaptiveSCFDM", msg) + # Partition the graph + parts = graph_partition( + sdc, eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, True + ) + njumps = 2 + partsCoreHalo = [] + numCores = [] + # print("\nCore and halos indices for every part:") for i in range(sdc.nparts): coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) partsCoreHalo.append(coreHalo) numCores.append(nc) print("core,halo size:", i, "=", nc, nh) # print("coreHalo for part", i, "=", coreHalo) - symbols = np.array(sy.symbols)[sy.types] - hubbard_u = np.where(symbols == 'H', 12.054683, 0.0) + np.where(symbols == 'O', 11.876141, 0.0) if gscf == 0 and sum(charges == 0) != 0: sy.coulvs = np.zeros(len(charges)) else: - sy.coulvs, ewald_e = get_PME_coulvs(charges, hubbard_u, sy.coords, sy.types, sy.latticeVectors) - - fullGraphRho,charges,evals,dvals,subSysOnRank,mu = get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex,gscf,mu) - print("Collected charges",charges) - - scfError, charges, chargesOld, chargesIn, chargesOut = diis_mix(charges,chargesOld,chargesIn,chargesOut,gscf,verb=True) - #scfError,charges,chargesOld = linear_mix(0.25,charges,chargesOld,gscf) - #if gscf == 0: + sy.coulvs, ewald_e = get_PME_coulvs( + charges, hubbard_u, sy.coords, sy.types, sy.latticeVectors + ) + + fullGraphRho, charges, subSysOnRank, mu = get_singlePoint_charges( + sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu + ) + # print("Collected charges", charges) + + scfError, charges, chargesOld, chargesIn, chargesOut = diis_mix( + charges, chargesOld, chargesIn, chargesOut, gscf, verb=True + ) + # scfError,charges,chargesOld = linear_mix(0.25,charges,chargesOld,gscf) + # if gscf == 0: # scfError = sy.numel - #print_graph(fullGraphRho) + # print_graph(fullGraphRho) fullGraph = add_graphs(fullGraphRho, graphNL) for i in range(sy.nats): - print("Charges:",i,sy.symbols[sy.types[i]],charges[i]) - print("SCF ERR =",scfError) - print("TotalCharge",sum(charges)) - - if(scfError < sdc.scfTol): - status_at("get_adaptiveSCFDM","SCF converged with SCF error = "+str(scfError)) + print("Charges:", i, sy.symbols[sy.types[i]], charges[i]) + print("SCF ERR =", scfError) + print("TotalCharge", sum(charges)) + + if scfError < sdc.scfTol: + status_at( + "get_adaptiveSCFDM", "SCF converged with SCF error = " + str(scfError) + ) break - if(gscf == sdc.numAdaptIter - 1): - warning_at("get_adaptiveSCFDM","SCF did not converged ... ") + if gscf == sdc.numAdaptIter - 1: + warning_at("get_adaptiveSCFDM", "SCF did not converged ... ") AtToPrint = 0 subSy = System(fullGraphRho[AtToPrint, 0]) subSy.symbols = sy.symbols subSy.coords, subSy.types = extract_subsystem( - sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] + sy.coords, + sy.types, + sy.symbols, + fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1], ) if rank == 0: - write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) + write_pdb_coordinates( + "subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols + ) + write_xyz_coordinates( + "subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols + ) - return fullGraph,charges,mu,parts,subSysOnRank + return fullGraph, charges, mu, parts, subSysOnRank diff --git a/src/sedacs/driver/graph_adaptive_scf_energy_forces.py b/src/sedacs/driver/graph_adaptive_scf_energy_forces.py deleted file mode 100644 index 01ad98b1..00000000 --- a/src/sedacs/driver/graph_adaptive_scf_energy_forces.py +++ /dev/null @@ -1,263 +0,0 @@ -"""Graph adaptive self-consistenf charge solver""" - -import time - -from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph -from sedacs.graph_partition import get_coreHaloIndices, graph_partition -from sedacs.sdc_hamiltonian import get_hamiltonian -from sedacs.sdc_density_matrix import get_density_matrix -from sedacs.sdc_energy_forces import get_energy_forces -from sedacs.sdc_evals_dvals import get_evals_dvals -from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates -from sedacs.mpi import collect_and_sum_matrices, collect_and_sum_vectors_float, collect_and_concatenate_vectors -from sedacs.system import System, extract_subsystem, get_hindex -from sedacs.coulombic import get_coulvs, get_PME_coulvs, build_coul_ham -from sedacs.charges import get_charges, collect_charges -from sedacs.evals_dvals import collect_evals, collect_dvals -from sedacs.energy_forces import collect_energy, collect_forces -from sedacs.message import status_at, error_at, warning_at -from sedacs.mixer import diis_mix, linear_mix -from sedacs.chemical_potential import get_mu -import numpy as np - -try: - from mpi4py import MPI - is_mpi_available = True -except ModuleNotFoundError: - is_mpi_available = False - -__all__ = ["get_occ_singlePoint", "get_adaptiveSCFDM"] - - -## Single point calculation -# @brief Construct a connectivity graph based on constructing density matrices -# of parts of the system. -# -def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu=0.0): - # computing DM for core+halo part - # - partsPerRank = int(sdc.nparts / numranks) - partIndex1 = rank * partsPerRank - partIndex2 = (rank + 1) * partsPerRank - graphOnRank = None - chargesOnRank = None - evalsOnRank = None - dvalsOnRank = None - energyOnRank = None - forcesOnRank = None - subSysOnRank = [] - - for partIndex in range(partIndex1, partIndex2): -# print("Rank, part", rank, partIndex) - numberOfCoreAtoms = len(parts[partIndex]) - subSy = System(len(partsCoreHalo[partIndex])) - subSy.symbols = sy.symbols - tic = time.perf_counter() - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) - subSy.ncores = len(parts[partIndex]) - if(gscf == 0): - subSy.charges = np.zeros(len(subSy.types)) - toc = time.perf_counter() - print("Time for extract_subsystem", toc - tic, "(s)") - partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" - write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates( - "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols - ) - tic = time.perf_counter() - - #Get some electronic structure elements for the sybsystem - #This could eventually be computed in the engine if no basis set is - #provided in the SEDACS input file. - subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) - norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian - ham, over = get_hamiltonian(eng, partIndex, sdc.nparts, norbs, sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols, verbose=sdc.verb, get_overlap=True, newsystem=True) - - tmpArray = np.zeros(numberOfCoreAtoms) - tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] - - norbsInCore = np.sum(tmpArray) - nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals - print("Number of orbitals in the core =",norbsInCore) - - toc = time.perf_counter() - print("Time for get_hamiltonian", toc - tic, "(s)") - - tic = time.perf_counter() - evalsInPart, dvalsInPart = get_evals_dvals(eng,partIndex,sdc.nparts,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=sdc.verb,newsystem=False) - toc = time.perf_counter() - print("Time for get_evals_dvals", toc - tic, "(s)") - - evalsOnRank = collect_evals(evalsOnRank,evalsInPart,verb=True) - dvalsOnRank = collect_dvals(dvalsOnRank,dvalsInPart,verb=True) - - if (is_mpi_available and numranks > 1): - fullEvals = collect_and_concatenate_vectors(evalsOnRank, comm) - fullDvals = collect_and_concatenate_vectors(dvalsOnRank, comm) - comm.Barrier() - else: - fullEvals = evalsOnRank - fullDvals = dvalsOnRank - - mu = get_mu(mu, fullEvals, sdc.etemp, int(sy.numel/2), dvals=fullDvals, kB=8.61739e-5, verb=True) - - for partIndex in range(partIndex1, partIndex2): -# print("Rank, part", rank, partIndex) - numberOfCoreAtoms = len(parts[partIndex]) - subSy = System(len(partsCoreHalo[partIndex])) - subSy.symbols = sy.symbols - tic = time.perf_counter() - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) - subSy.ncores = len(parts[partIndex]) - if(gscf == 0): - subSy.charges = np.zeros(len(subSy.types)) - toc = time.perf_counter() - print("Time for extract_subsystem", toc - tic, "(s)") - partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" - write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates( - "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols - ) - tic = time.perf_counter() - - #Get some electronic structure elements for the sybsystem - #This could eventually be computed in the engine if no basis set is - #provided in the SEDACS input file. - subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) - norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian - tmpArray = np.zeros(numberOfCoreAtoms) - tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] - - norbsInCore = int(np.sum(tmpArray)) - nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals - subSy.latticeVectors = sy.latticeVectors - tic = time.perf_counter() - - rho, chargesInPart = get_density_matrix(eng,partIndex,sdc.nparts,norbs,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=sdc.verb,newsystem=True,keepmem=True) - - energyInPart, forcesInPart = get_energy_forces(eng,partIndex,sdc.nparts,norbs,ham,sy.latticeVectors,subSy.coords,subSy.types,subSy.symbols,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,numberOfCoreAtoms=numberOfCoreAtoms,mu=mu,etemp=sdc.etemp,verb=sdc.verb,newsystem=False,keepmem=False) - - chargesInPart = chargesInPart[:len(parts[partIndex])] - subSy.charges = chargesInPart - - forcesInPart = forcesInPart[:len(parts[partIndex])] - - #Save the subsystems list for returning them - subSysOnRank.append(subSy) - - print("TotalCharge in part",partIndex,sum(chargesInPart)) - print("Charges in part",chargesInPart) - - toc = time.perf_counter() - print("Time to get_densityMatrix", toc - tic, "(s)") - # Building a graph from DMs - graphOnRank = collect_graph_from_rho( - graphOnRank, rho, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex],len(parts[partIndex]), hindex - ) - - chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) - energyOnRank = collect_energy(energyOnRank,energyInPart,verb=True) - forcesOnRank = collect_forces(forcesOnRank,forcesInPart,parts[partIndex],sy.nats,verb=True) - - if (is_mpi_available and numranks > 1): - fullGraphRho = collect_and_sum_matrices(graphOnRank, rank, numranks, comm) - fullCharges = collect_and_sum_vectors_float(chargesOnRank, rank, numranks, comm) - fullEnergy = collect_and_sum_vectors_float(energyOnRank, rank, numranks, comm) - fullForces = collect_and_sum_matrices(forcesOnRank, rank, numranks, comm) - comm.Barrier() - else: - fullGraphRho = graphOnRank - fullCharges = chargesOnRank - fullEnergy = energyOnRank - fullForces = forcesOnRank - - print_graph(fullGraphRho) - return fullGraphRho, fullCharges, fullEvals, fullDvals, fullEnergy[0], fullForces, subSysOnRank, mu - - -def get_adaptiveSCFDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu): - fullGraph = graphNL - - #Initial guess for the excess ocupation vector. This is the negative of - #the charge! - #charges = np.zeros(sy.nats) - #charges = sy.charges - chargesOld = np.zeros(sy.nats) - chargesIn = None - chargesOld = None - chargesOut = None - sdc.etemp = 1000 - for gscf in range(sdc.numAdaptIter): - msg = "Graph-adaptive iteration" + str(gscf) - status_at("get_adaptiveSCFDM",msg) - # Partition the graph - parts = graph_partition(fullGraph, sdc.partitionType, sdc.nparts, True) - njumps = 2 - partsCoreHalo = [] - numCores = [] - - #print("\nCore and halos indices for every part:") - for i in range(sdc.nparts): - coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) - partsCoreHalo.append(coreHalo) - numCores.append(nc) - print("core,halo size:", i, "=", nc, nh) - # print("coreHalo for part", i, "=", coreHalo) - - symbols = np.array(sy.symbols)[sy.types] - hubbard_u = np.where(symbols == 'H', 12.054683, 0.0) + np.where(symbols == 'O', 11.876141, 0.0) - #if gscf == 0: - if np.sum(sy.charges == 0) == sy.nats: - sy.coulvs = np.zeros(len(sy.charges)) - ecoul = 0.0 - fcoul = np.zeros([len(sy.charges), 3]) - else: - sy.coulvs, ecoul, fcoul = get_PME_coulvs(sy.charges, hubbard_u, sy.coords, sy.types, sy.latticeVectors, calculate_forces=1) - fullGraphRho,sy.charges,evals,dvals,energy,forces,subSysOnRank,mu = get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu) - energy = energy - ecoul -# fcoul = fcoul * ((2*sy.charges - olddeltaq) / olddeltaq)[:,None] - forces = forces + fcoul -# with open('ecoul.log', 'a') as f: -# f.write(f'energy: {energy}, ecoul: {ecoul}\n') -# f.write(f'{ecoul}\n') -# f.write(f'forces: {forces}\n') -# f.write(f'fcoul: {fcoul}\n') -# f.write(f'sy.coulvs: {sy.coulvs}\n') - print("Collected charges",sy.charges) - - scfError, sy.charges, chargesOld, chargesIn, chargesOut = diis_mix(sy.charges,chargesOld,chargesIn,chargesOut,gscf,verb=True) - #scfError,charges,chargesOld = linear_mix(0.25,charges,chargesOld,gscf) - - #print_graph(fullGraphRho) - - - fullGraph = add_graphs(fullGraphRho, graphNL) - for i in range(sy.nats): - print("Charges:",i,sy.symbols[sy.types[i]],sy.charges[i]) - print("SCF ERR =",scfError) - print("TotalCharge",sum(sy.charges)) - - if(scfError < sdc.scfTol): - status_at("get_adaptiveSCFDM","SCF converged with SCF error = "+str(scfError)) - with open('ecoul.log', 'a') as f: - f.write(f'{ecoul}\n') - break - - if(gscf == sdc.numAdaptIter - 1): - warning_at("get_adaptiveSCFDM","SCF did not converged ... ") - - AtToPrint = 0 - - subSy = System(fullGraphRho[AtToPrint, 0]) - subSy.symbols = sy.symbols - subSy.coords, subSy.types = extract_subsystem( - sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] - ) - - if rank == 0: - write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) - - return fullGraph,sy.charges,energy,forces,mu,parts,subSysOnRank - - diff --git a/src/sedacs/driver/graph_adaptive_sp_energy_forces.py b/src/sedacs/driver/graph_adaptive_sp_energy_forces.py index 363c3137..ffcb3b3a 100644 --- a/src/sedacs/driver/graph_adaptive_sp_energy_forces.py +++ b/src/sedacs/driver/graph_adaptive_sp_energy_forces.py @@ -1,6 +1,12 @@ -"""Graph adaptive self-consistenf charge solver""" +""" +graph_adaptive_sp_energy_forces.py +==================================== +Graph adaptive single-point charge, energy and force solver + +""" import time +from pathlib import Path from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph from sedacs.graph_partition import get_coreHaloIndices, graph_partition @@ -9,7 +15,12 @@ from sedacs.sdc_energy_forces import get_energy_forces from sedacs.sdc_evals_dvals import get_evals_dvals from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates -from sedacs.mpi import collect_and_sum_matrices, collect_and_sum_vectors_float, collect_and_concatenate_vectors +from sedacs.mpi import ( + collect_and_sum_matrices, + collect_and_sum_matrices_float, + collect_and_sum_vectors_float, + collect_and_concatenate_vectors, +) from sedacs.system import System, extract_subsystem, get_hindex from sedacs.coulombic import get_coulvs, get_PME_coulvs, build_coul_ham from sedacs.charges import get_charges, collect_charges @@ -18,24 +29,77 @@ from sedacs.message import status_at, error_at, warning_at from sedacs.mixer import diis_mix, linear_mix from sedacs.chemical_potential import get_mu +from sedacs.file_io import read_latte_tbparams import numpy as np try: from mpi4py import MPI + is_mpi_available = True -except ModuleNotFoundError: +except ModuleNotFoundError as e: is_mpi_available = False - -__all__ = ["get_occ_singlePoint", "get_adaptiveSCFDM"] - - -## Single point calculation -# @brief Construct a connectivity graph based on constructing density matrices -# of parts of the system. -# -def get_singlePoint_energy_forces(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu=0.0): - # computing DM for core+halo part - # + error_at( + "get_adaptiveSCFDM_scf", + "mpi4py not found, parallelization will not be available", + ) + raise e + +__all__ = ["get_singlePoint_energy_forces", "get_adaptive_sp_energy_forces"] + + +def get_singlePoint_energy_forces( + sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, mu=0.0 +): + """ + Get the single point charges, energy, and forces for the full system from graph-partitioned subsystems. + This function is called from the graph adaptive SCF loop. + For each SCF iteration, it follows the following steps: + 1. For each subsystem: + a. Extract the subsystem from the full system. + b. Compute the Hamiltonian matrix for the subsystem. + c. Compute the evals and dvals from the Hamiltonian matrix for the subsystem. + 2. Collect the full evals and dvals across all subsystems. + 3. Compute the global chemical potential for the full system using the collected full evals and dvals. + 4. For each subsystem: + a. Compute the density matrix for the subsystem. + b. Compute the charges for the subsystem. + c. Compute the energy and forces for the subsystem. + 5. Collect the full graph, charges, energy, and forces across all subsystems. + + Parameters + ---------- + sdc : sedacs driver object + Refer to driver/init.py for detailed information. + eng : engine object + Refer to engine.py for detailed information. + rank: int + Rank of the current process in the MPI communicator. + numranks: int + Total number of processes in the MPI communicator. + comm: MPI communicator + MPI communicator for parallelization. + parts: list of lists of int + List of partitions of the full system. + partsCoreHalo: list of lists of int + List of core and halo indices for each partition. + sy: System object + Refer to system.py for detailed information. + hindex: list of int + Orbital index for each atom in the system. The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1`. + mu: float + Chemical potential for the full system. Default is 0.0. + + Returns + ------- + fullGraphRho: 2D numpy array, dtype: float + The full graph collected from all subsystems. + fullCharges: 1D numpy array, dtype: float + The mulliken charges for the full system. + subSysOnRank: list of System objects + List of subsystem objects for each partition on the current rank. + mu: float + The chemical potential for the full system. + """ partsPerRank = int(sdc.nparts / numranks) partIndex1 = rank * partsPerRank partIndex2 = (rank + 1) * partsPerRank @@ -48,82 +112,118 @@ def get_singlePoint_energy_forces(sdc, eng, rank, numranks, comm, parts, partsCo subSysOnRank = [] for partIndex in range(partIndex1, partIndex2): -# print("Rank, part", rank, partIndex) numberOfCoreAtoms = len(parts[partIndex]) subSy = System(len(partsCoreHalo[partIndex])) subSy.symbols = sy.symbols tic = time.perf_counter() - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex] + ) subSy.ncores = len(parts[partIndex]) - if(gscf == 0): - subSy.charges = np.zeros(len(subSy.types)) toc = time.perf_counter() print("Time for extract_subsystem", toc - tic, "(s)") partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) write_xyz_coordinates( - "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols + "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", + subSy.coords, + subSy.types, + subSy.symbols, ) tic = time.perf_counter() - #Get some electronic structure elements for the sybsystem - #This could eventually be computed in the engine if no basis set is - #provided in the SEDACS input file. - subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + # Get some electronic structure elements for the sybsystem + # This could eventually be computed in the engine if no basis set is + # provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex( + sdc.orbs, subSy.symbols, subSy.types, verb=True + ) norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian - ham, over = get_hamiltonian(eng, partIndex, sdc.nparts, norbs, sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols, verbose=sdc.verb, get_overlap=True, newsystem=True) - tmpArray = np.zeros(numberOfCoreAtoms) tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] - norbsInCore = np.sum(tmpArray) + print("Number of orbitals in the core =", norbsInCore) nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals - print("Number of orbitals in the core =",norbsInCore) + + ham, over = get_hamiltonian( + eng, + partIndex, + sdc.nparts, + norbs, + sy.latticeVectors, + subSy.coords, + subSy.types, + subSy.symbols, + verb=False, + get_overlap=True, + newsystem=True, + ) toc = time.perf_counter() print("Time for get_hamiltonian", toc - tic, "(s)") tic = time.perf_counter() - evalsInPart, dvalsInPart = get_evals_dvals(eng,partIndex,sdc.nparts,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=sdc.verb,newsystem=False) + evalsInPart, dvalsInPart = get_evals_dvals( + eng, + partIndex, + sdc.nparts, + sy.latticeVectors, + subSy.coords, + subSy.types, + subSy.symbols, + ham, + sy.coulvs[partsCoreHalo[partIndex]], + nocc=nocc, + norbsInCore=norbsInCore, + mu=mu, + etemp=sdc.etemp, + verb=False, + newsystem=False, + ) toc = time.perf_counter() print("Time for get_evals_dvals", toc - tic, "(s)") - evalsOnRank = collect_evals(evalsOnRank,evalsInPart,verb=True) - dvalsOnRank = collect_dvals(dvalsOnRank,dvalsInPart,verb=True) + evalsOnRank = collect_evals(evalsOnRank, evalsInPart, verb=True) + dvalsOnRank = collect_dvals(dvalsOnRank, dvalsInPart, verb=True) - if (is_mpi_available and numranks > 1): + if is_mpi_available and numranks > 1: fullEvals = collect_and_concatenate_vectors(evalsOnRank, comm) fullDvals = collect_and_concatenate_vectors(dvalsOnRank, comm) comm.Barrier() else: fullEvals = evalsOnRank fullDvals = dvalsOnRank - - mu = get_mu(mu, fullEvals, sdc.etemp, int(sy.numel/2), dvals=fullDvals, kB=8.61739e-5, verb=True) + # Calculate the global chemical potential from the evals and dvals collected from all subsystems + mu = get_mu( + mu, + fullEvals, + sdc.etemp, + int(sy.numel / 2), + dvals=fullDvals, + kB=8.61739e-5, + verb=True, + ) for partIndex in range(partIndex1, partIndex2): -# print("Rank, part", rank, partIndex) numberOfCoreAtoms = len(parts[partIndex]) subSy = System(len(partsCoreHalo[partIndex])) subSy.symbols = sy.symbols tic = time.perf_counter() - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) + subSy.coords, subSy.types = extract_subsystem( + sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex] + ) subSy.ncores = len(parts[partIndex]) - if(gscf == 0): - subSy.charges = np.zeros(len(subSy.types)) toc = time.perf_counter() print("Time for extract_subsystem", toc - tic, "(s)") - partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" - write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates( - "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols - ) + tic = time.perf_counter() - #Get some electronic structure elements for the sybsystem - #This could eventually be computed in the engine if no basis set is - #provided in the SEDACS input file. - subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) + # Get some electronic structure elements for the sybsystem + # This could eventually be computed in the engine if no basis set is + # provided in the SEDACS input file. + subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex( + sdc.orbs, subSy.symbols, subSy.types, verb=True + ) norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian tmpArray = np.zeros(numberOfCoreAtoms) tmpArray[:] = subSy.orbs[subSy.types[0:numberOfCoreAtoms]] @@ -131,38 +231,90 @@ def get_singlePoint_energy_forces(sdc, eng, rank, numranks, comm, parts, partsCo norbsInCore = int(np.sum(tmpArray)) nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals subSy.latticeVectors = sy.latticeVectors + tic = time.perf_counter() - rho, chargesInPart = get_density_matrix(eng,partIndex,sdc.nparts,norbs,sy.latticeVectors, subSy.coords, subSy.types, subSy.symbols,ham,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,mu=mu,etemp=sdc.etemp,overlap=over,full_data=False,verb=sdc.verb,newsystem=True,keepmem=True) + rho, chargesInPart = get_density_matrix( + eng, + partIndex, + sdc.nparts, + norbs, + sy.latticeVectors, + subSy.coords, + subSy.types, + subSy.symbols, + ham, + sy.coulvs[partsCoreHalo[partIndex]], + nocc=nocc, + norbsInCore=norbsInCore, + mu=mu, + etemp=sdc.etemp, + overlap=over, + full_data=False, + verb=False, + newsystem=True, + keepmem=True, + ) - energyInPart, forcesInPart = get_energy_forces(eng,partIndex,sdc.nparts,norbs,ham,sy.latticeVectors,subSy.coords,subSy.types,subSy.symbols,sy.coulvs[partsCoreHalo[partIndex]],nocc=nocc,norbsInCore=norbsInCore,numberOfCoreAtoms=numberOfCoreAtoms,mu=mu,etemp=sdc.etemp,verb=sdc.verb,newsystem=False,keepmem=False) + energyInPart, forcesInPart = get_energy_forces( + eng, + partIndex, + sdc.nparts, + norbs, + sy.latticeVectors, + subSy.coords, + subSy.types, + subSy.symbols, + ham, + sy.coulvs[partsCoreHalo[partIndex]], + nocc=nocc, + norbsInCore=norbsInCore, + numberOfCoreAtoms=numberOfCoreAtoms, + mu=mu, + etemp=sdc.etemp, + verb=False, + newsystem=False, + keepmem=False, + ) - chargesInPart = chargesInPart[:len(parts[partIndex])] + chargesInPart = chargesInPart[: len(parts[partIndex])] subSy.charges = chargesInPart - forcesInPart = forcesInPart[:len(parts[partIndex])] + forcesInPart = forcesInPart[: len(parts[partIndex])] - #Save the subsystems list for returning them + # Save the subsystems list for returning them subSysOnRank.append(subSy) - print("TotalCharge in part",partIndex,sum(chargesInPart)) - print("Charges in part",chargesInPart) - + print("TotalCharge in part", partIndex, sum(chargesInPart)) + # print("Charges in part", chargesInPart) + toc = time.perf_counter() print("Time to get_densityMatrix", toc - tic, "(s)") # Building a graph from DMs graphOnRank = collect_graph_from_rho( - graphOnRank, rho, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex],len(parts[partIndex]), hindex + graphOnRank, + rho, + sdc.gthresh, + sy.nats, + sdc.maxDeg, + partsCoreHalo[partIndex], + len(parts[partIndex]), + hindex, ) - chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) - energyOnRank = collect_energy(energyOnRank,energyInPart,verb=True) - forcesOnRank = collect_forces(forcesOnRank,forcesInPart,parts[partIndex],sy.nats,verb=True) + chargesOnRank = collect_charges( + chargesOnRank, chargesInPart, parts[partIndex], sy.nats, verb=True + ) + energyOnRank = collect_energy(energyOnRank, energyInPart, verb=True) + forcesOnRank = collect_forces( + forcesOnRank, forcesInPart, parts[partIndex], sy.nats, verb=True + ) - if (is_mpi_available and numranks > 1): + if is_mpi_available and numranks > 1: fullGraphRho = collect_and_sum_matrices(graphOnRank, rank, numranks, comm) fullCharges = collect_and_sum_vectors_float(chargesOnRank, rank, numranks, comm) fullEnergy = collect_and_sum_vectors_float(energyOnRank, rank, numranks, comm) - fullForces = collect_and_sum_matrices(forcesOnRank, rank, numranks, comm) + fullForces = collect_and_sum_matrices_float(forcesOnRank, comm) + # fullForces = collect_and_sum_matrices(forcesOnRank, rank, numranks, comm, dtype=float) comm.Barrier() else: fullGraphRho = graphOnRank @@ -170,22 +322,43 @@ def get_singlePoint_energy_forces(sdc, eng, rank, numranks, comm, parts, partsCo fullEnergy = energyOnRank fullForces = forcesOnRank - print_graph(fullGraphRho) - return fullGraphRho, fullCharges, fullEvals, fullDvals, fullEnergy[0], fullForces, subSysOnRank, mu + # print_graph(fullGraphRho) + return ( + fullGraphRho, + fullCharges, + fullEnergy[0], + fullForces, + subSysOnRank, + mu, + ) -def get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu): +def get_adaptive_sp_energy_forces( + sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu, shadow_md=True +): fullGraph = graphNL - sdc.etemp = 1000 - gscf = 0 + charges = sy.charges + # Get the path of the current file + curr_file_path = Path(__file__) + # Get the directory of the current file + curr_dir = curr_file_path.parent + # Get the path of latte parameters + latte_param_path = curr_dir / Path( + "../../../parameters/latte/TBparam/electrons.dat" + ) + latte_tbparams = read_latte_tbparams(latte_param_path) + hubbard_u = [latte_tbparams[symbol]["HubbardU"] for symbol in sy.symbols] + hubbard_u = np.array(hubbard_u)[sy.types] # Partition the graph - parts = graph_partition(fullGraph, sdc.partitionType, sdc.nparts, True) + parts = graph_partition( + sdc, eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, True + ) njumps = 2 partsCoreHalo = [] numCores = [] - #print("\nCore and halos indices for every part:") + # print("\nCore and halos indices for every part:") for i in range(sdc.nparts): coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) partsCoreHalo.append(coreHalo) @@ -193,27 +366,43 @@ def get_sp_energy_forces(sdc, eng, comm, rank, numranks, sy, hindex, graphNL, mu print("core,halo size:", i, "=", nc, nh) # print("coreHalo for part", i, "=", coreHalo) - symbols = np.array(sy.symbols)[sy.types] - hubbard_u = np.where(symbols == 'H', 12.054683, 0.0) + np.where(symbols == 'O', 11.876141, 0.0) - sy.coulvs, ecoul, fcoul = get_PME_coulvs(sy.charges, hubbard_u, sy.coords, sy.types, sy.latticeVectors, calculate_forces=1) - fullGraphRho,sy.charges,evals,dvals,energy,forces,subSysOnRank,mu = get_singlePoint_energy_forces(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, gscf, mu) + sy.coulvs, ecoul, fcoul = get_PME_coulvs( + charges, + hubbard_u, + sy.coords, + sy.types, + sy.latticeVectors, + calculate_forces=1, + ) + + fullGraphRho, charges, energy, forces, subSysOnRank, mu = ( + get_singlePoint_energy_forces( + sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, mu + ) + ) + if shadow_md: + fcoul = ((2 * charges - sy.charges) / sy.charges)[:, None] * fcoul energy = energy - ecoul forces = forces + fcoul fullGraph = add_graphs(fullGraphRho, graphNL) - + AtToPrint = 0 subSy = System(fullGraphRho[AtToPrint, 0]) subSy.symbols = sy.symbols subSy.coords, subSy.types = extract_subsystem( - sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] + sy.coords, + sy.types, + sy.symbols, + fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1], ) - if rank == 0: - write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) - - return fullGraph,sy.charges,energy,forces,mu,parts,subSysOnRank - + write_pdb_coordinates( + "subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols + ) + write_xyz_coordinates( + "subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols + ) + return fullGraph, charges, energy, forces, mu, parts, subSysOnRank diff --git a/src/sedacs/driver/init.py b/src/sedacs/driver/init.py index a56e3b95..fe9b8528 100644 --- a/src/sedacs/driver/init.py +++ b/src/sedacs/driver/init.py @@ -209,7 +209,7 @@ def init(args): fullGraph[:, :] = graphNL[:, :] #Initialize proxy/guest code - init_proxy(sy.symbols,sy.orbs) +# init_proxy(sy.symbols,sy.orbs) eng.up = True return sdc, eng, comm, rank, numranks, sy, hindex, fullGraph, nl, nlTrX, nlTrY, nlTrZ diff --git a/src/sedacs/energy_forces.py b/src/sedacs/energy_forces.py index 506c9404..4a823c6d 100644 --- a/src/sedacs/energy_forces.py +++ b/src/sedacs/energy_forces.py @@ -1,48 +1,73 @@ -"""Energy and forces -Some functions to compute energy and forces - -So far: Initital "collect_forces" -for nonorthogonal TB" +""" +energy_forces.py +==================================== +Some functions to collect energy and forces from multiple system parts at a given MPI rank """ import numpy as np -from sedacs.message import * +from sedacs.message import * + +__all__ = ["collect_energy", "collect_forces"] + -__all__ = ["collect_energy","collect_forces"] +def collect_energy(energyOnRank, energy, verb=False): + """ + Collects the energy from multiple system parts at a given MPI rank. + Parameters + ---------- + energyOnRank : float + Energy contribution which have been collected at the current rank. + energy : float + Energy contribution from each core region to be collected. + verb : bool, optional + If set to True information is printed. -## Collect energy at the current rank -# @param energyOnRank Energy on every rank. -# @param energy Energy to be collected. -# -def collect_energy(energyOnRank,energy,verb=False): - if(verb): - status_at("collect_energy","Collecting energy") + Returns + ------- + energyOnRank : float + Energy contribution which have been collected at the current rank. + """ + if verb: + status_at("collect_energy", "Collecting energy") - if(energyOnRank is None): + if energyOnRank is None: energyOnRank = np.zeros((1)) - energyOnRank[0] += energy + energyOnRank[0] += energy return energyOnRank -## Collect forces at the current rank -# @param forcesOnRank Full force matrix on every rank. -# @param forces Forces to be collected. -# @param part list of atom indices in the part. -# @param nats Number of total atoms on the rank -# -def collect_forces(forcesOnRank,forces,part,nats,verb=False): - if(verb): - status_at("collect_forces","Collecting forces") +def collect_forces(forcesOnRank, forces, part, nats, verb=False): + """ + Collects the forces from multiple system parts at a given MPI rank. - if(forcesOnRank is None): + Parameters + ---------- + forcesOnRank : 2D numpy array + Forces which have been at the current rank. + forces : 2D numpy array + Forces acting each core region to be collected. + part: list + List of atom indices in the part. + nats : int + Number of total atoms in the system. + verb : bool, optional + If set to True information is printed. + + Returns + ------- + forcesOnRank : 2D numpy array + Forces which have been collected at the current rank. + """ + if verb: + status_at("collect_forces", "Collecting forces") + + if forcesOnRank is None: forcesOnRank = np.zeros((nats, 3)) for i in range(len(part)): forcesOnRank[part[i]] = forces[i] return forcesOnRank - - diff --git a/src/sedacs/evals_dvals.py b/src/sedacs/evals_dvals.py index 93808cff..5df588f8 100644 --- a/src/sedacs/evals_dvals.py +++ b/src/sedacs/evals_dvals.py @@ -1,7 +1,7 @@ """ evals_dvals.py ==================================== -Some functions to compute evals and dvals +Some functions to collect evals and dvals from multiple system parts at a given MPI rank So far: Initital "collect_evals" and "collect_dvals" for nonorthogonal TB @@ -15,21 +15,21 @@ def collect_evals(evalsOnRank, evals, verb=False): """ - The function will collect eigenvalues (evals) from each core+halo part at the current rank. + Collects eigenvalues (evals) from multiple system parts at a given MPI rank. Paremeters ---------- - evalsOnRank : numpy 1D array - A 1D numpy array containing the eigenvalues at the current rank. + evalsOnRank : 1D numpy array + Eigenvalues which have been collected at the current rank. evals : numpy 1D array - A 1D numpy array containing the eigenvalues to be collected from each core+halo part. + Eigenvalues to be collected from each core+halo part. verb : bool, optional If set to True information is printed. Returns ------- - evalsOnRank : numpy 1D array - A 1D numpy array containing the eigenvalues at the current rank. + evalsOnRank : 1D numpy array + Eigenvalues which have been collected at the current rank. """ if verb: status_at("collect_evals", "Collecting evals") @@ -44,21 +44,22 @@ def collect_evals(evalsOnRank, evals, verb=False): def collect_dvals(dvalsOnRank, dvals, verb=False): """ - The function will collect the contributions (dvals) from each core+halo part to the eigenvectors of the full system at the current rank. + Collects dvals from multiple system parts at a given MPI rank. + Notes: dvals are the contributions to the eigenvectors of the full system from each core+halo part. Paremeters ---------- - dvalsOnRank : numpy 1D array - A 1D numpy array containing the dvals at the current rank. + dvalsOnRank : 1D numpy array + Dvals which have been collected at the current rank. dvals : numpy 1D array - A 1D numpy array containing the dvals to be collected from each core+halo part. + Dvals to be collected from each core+halo part. verb : bool, optional If set to True information is printed. Returns ------- - dvalsOnRank : numpy 1D array - A 1D numpy array containing the dvals at the current rank. + dvalsOnRank : 1D numpy array + Dvals which have been at the current rank. """ if verb: status_at("collect_dvals", "Collecting dvals") diff --git a/src/sedacs/ewald/PME_torch.py b/src/sedacs/ewald/PME_torch.py index 9eb8942e..3718fd66 100644 --- a/src/sedacs/ewald/PME_torch.py +++ b/src/sedacs/ewald/PME_torch.py @@ -200,8 +200,8 @@ def calculate_PME_ewald( cutoff, calculate_forces, calculate_dq) - if my_f_real is not None and my_f_real.device.type == 'cuda': - my_f_real = my_f_real.T.contiguous() + # if my_f_real is not None and my_f_real.device.type == 'cuda': + # my_f_real = my_f_real.T.contiguous() else: my_e_real, my_f_real, my_dq_real = ewald_real(nbr_inds, nbr_disp_vecs, @@ -237,4 +237,4 @@ def calculate_PME_ewald( - \ No newline at end of file + diff --git a/src/sedacs/ewald/ewald_torch.py b/src/sedacs/ewald/ewald_torch.py index e2ce4aa8..81296025 100644 --- a/src/sedacs/ewald/ewald_torch.py +++ b/src/sedacs/ewald/ewald_torch.py @@ -72,34 +72,39 @@ def ewald_real( return torch.sum(res) / 2.0, f, de_dq @torch.compile -def ewald_real_screening(my_start_ind, my_lcl_N, nbr_inds, nbr_diff_vecs, nbr_dists, charges, hubbard_u, atomtypes, +def ewald_real_screening(nbr_inds, nbr_diff_vecs, nbr_dists, charges, hubbard_u, atomtypes, alpha: float, cutoff: float, calculate_forces: int, calculate_dq: int): - ''' - Calculates real part of the ewald sum - - Inputs: - my_inds: Integer Tensor with shape [n,], n is the number of local atoms. - Stores the local atom indices. - nbr_inds: FP Tensor with shape [n,K], K is the max number of neighbors per atom. - Stores the neighbor indices within certain cutoff. - nbr_diff_vecs: FP Tensor with shape [3,n,K]. - Stores the displacement vectors - charges: FP Tensor with shape [N,], N is the total number of atoms - Charge per atom. - alpha: float - cutoff: float - calculate_forces: int. - Returns forces if set to 1, else returns None as forces - calculate_dq: int. - Returns de/dq if set to 1, else returns None - Output: - Energy: float - forces: FP Tensor with shape [3, n] - dq: FP Tensor with shape [n,] - - TODO: If an atom is close to its image, we need to handle it carefully. - ''' + """ + Computes the real-space contribution with the Hubbard-U screening correction to the Ewald summation. + + This function calculates the electrostatic interaction energy in the real-space + portion of the Ewald summation. It also optionally computes forces and derivatives + with respect to charge if `calculate_forces` or `calculate_dq` are set. + + Args: + nbr_inds (torch.Tensor): Indices of neighboring atoms. Shape: `(N, K)`, where: + - `N` is the number of local atoms. + - `K` is the maximum number of neighbors per atom. + nbr_diff_vecs (torch.Tensor): Displacement vectors to neighbors. Shape: `(3, N, K)`, where: + - `3` represents the x, y, and z components of the displacement. + - `N` is the number of local atoms. + - `K` is the number of neighbors per atom. + nbr_dists (torch.Tensor): Distances to neighboring atoms. Shape: `(N, K)`. + hubbard_u (torch.Tensor): Hubbard U values for each atom. Shape: `(N,)`. + atomtypes (torch.Tensor): Atomic types for each atom. Shape: `(N,)`. + charges (torch.Tensor): Atomic charge values. Shape: `(N,)`. + alpha (float): Ewald screening parameter (scalar). + cutoff (float): Cutoff distance for interactions (scalar). + calculate_forces (int): Flag to compute forces (`1` for True, `0` for False). + calculate_dq (int): Flag to compute charge derivatives (`1` for True, `0` for False). + + Returns: + Tuple[float, Optional[torch.Tensor], Optional[torch.Tensor]]: + - **(float)** Real-space energy contribution (scalar). + - **(torch.Tensor, shape `(3, N)`)** Forces on atoms if `calculate_forces` is enabled, otherwise `None`. + - **(torch.Tensor, shape `(N,)`)** Charge derivatives if `calculate_dq` is enabled, otherwise `None`. + """ # TODO: finalize DUMMY_ATOM_IND KECONST = 14.3996437701414 device = nbr_dists.device @@ -157,7 +162,7 @@ def ewald_real_screening(my_start_ind, my_lcl_N, nbr_inds, nbr_diff_vecs, nbr_di J0[different_element_mask] = J0[different_element_mask] - (1.0 * (SB - SC / MAGR) + \ 1.0 * (SE - SF / MAGR))[different_element_mask] - energy = charges[my_start_ind:my_start_ind+my_lcl_N, None] * J0 * charges[nbr_inds] + energy = charges[:, None] * J0 * charges[nbr_inds] if calculate_forces: nbr_diff_vecs = torch.transpose(nbr_diff_vecs, 0, 2).contiguous() @@ -166,15 +171,15 @@ def ewald_real_screening(my_start_ind, my_lcl_N, nbr_inds, nbr_diff_vecs, nbr_di DC = torch.where(mask.unsqueeze(2), nbr_diff_vecs / nbr_dists.unsqueeze(2), zero) CA = torch.where(mask, NUMREP_ERFC / MAGR, zero) CA = CA + 2.0 * alpha * torch.exp(-alpha2 * MAGR2) / math.sqrt(math.pi) - FORCE = -torch.sum((charges[my_start_ind:my_start_ind+my_lcl_N, None] * charges[nbr_inds] * \ + FORCE = -torch.sum((charges[:, None] * charges[nbr_inds] * \ torch.where(mask, CA / MAGR, zero)).unsqueeze(2) * \ DC * mask.unsqueeze(2), dim=1) - FORCE = FORCE + torch.sum(((charges[my_start_ind:my_start_ind+my_lcl_N, None] * charges[nbr_inds] * EXPTI) * \ + FORCE = FORCE + torch.sum(((charges[:, None] * charges[nbr_inds] * EXPTI) * \ ((torch.where(same_element_mask, SSE / MAGR2, zero) - 2.0 * SSB * MAGR - SSC) \ + SSA * (SSB * MAGR2 + SSC * MAGR + SSD + torch.where(same_element_mask, SSE / MAGR, zero)))).unsqueeze(2) * \ DC * same_element_mask.unsqueeze(2), dim=1) - FORCE = FORCE + torch.sum((charges[my_start_ind:my_start_ind+my_lcl_N, None] * charges[nbr_inds] * ((1.0 * (SA * (SB - torch.where(different_element_mask, SC / MAGR, zero)) - \ + FORCE = FORCE + torch.sum((charges[:, None] * charges[nbr_inds] * ((1.0 * (SA * (SB - torch.where(different_element_mask, SC / MAGR, zero)) - \ torch.where(different_element_mask, SC / MAGR2, zero))) + (1.0 * (SD * (SE - torch.where(different_element_mask, SF / MAGR, zero)) - \ torch.where(different_element_mask, SF / MAGR2, zero))))).unsqueeze(2) * DC * different_element_mask.unsqueeze(2), dim=1) diff --git a/src/sedacs/file_io.py b/src/sedacs/file_io.py index c4050f7f..bad62ce3 100644 --- a/src/sedacs/file_io.py +++ b/src/sedacs/file_io.py @@ -4,6 +4,7 @@ import numpy as np from sedacs.system import parameters_to_vectors +from collections import defaultdict __all__ = [ "read_coords_file", @@ -13,6 +14,7 @@ "read_pdb_file", "write_pdb_coordinates", "are_files_equivalent", + "read_latte_tbparams" ] @@ -237,7 +239,7 @@ def read_xyz_trajectory(fileName, lib="None", verb=True): coords = xyzc[:, :, 0:3] values = xyzc[:, :, 3] - return elems[:nats], coords, values + return elems[:nats], coords, values ## Read a pdb file @@ -403,3 +405,41 @@ def are_files_equivalent(file1, file2): if line1.strip() != line2.strip(): return False return True + +def read_latte_tbparams(file): + """ + Reads the TB parameters for LATTE from a file. + + Parameters + ---------- + file : str + Path to the TB parameters file. + + Returns + ------- + tbparams : dict + Dictionary containing the TB parameters for each element. + Each element is a key, and its value is another dictionary with the parameters. + """ + tbparams = defaultdict(dict) + with open(file, "r") as f: + lines = f.readlines() + for line in lines[2:]: + line = line.split() + if len(line) != 13: + continue + element = line[0] + tbparams[element]["basis"] = line[1] + tbparams[element]["Numel"] = float(line[2]) + tbparams[element]["Es"] = float(line[3]) + tbparams[element]["Ep"] = float(line[4]) + tbparams[element]["Ed"] = float(line[5]) + tbparams[element]["Ef"] = float(line[6]) + tbparams[element]["Mass"] = float(line[7]) + tbparams[element]["HubbardU"] = float(line[8]) + tbparams[element]["Wss"] = float(line[9]) + tbparams[element]["Wpp"] = float(line[10]) + tbparams[element]["Wdd"] = float(line[11]) + tbparams[element]["Wff"] = float(line[12]) + + return tbparams diff --git a/src/sedacs/graph.py b/src/sedacs/graph.py index 6e871b6c..ac2bcb2e 100644 --- a/src/sedacs/graph.py +++ b/src/sedacs/graph.py @@ -29,7 +29,7 @@ # a neighbor list. # @param coords System coordinates # @param nl Neighbor list `nl[i,0]` = total number of neighbors. -# `nl[i,1:nl[i,0]]` = neigbors of i. Self neighbor i to i is not included explicitly. +# `nl[i,1:nl[i,0]+1]` = neigbors of i. Self neighbor i to i is not included explicitly. # @param radius Radius Cutoff to search for the neighbors # @param maxDeg Max degrees allowed for each none # @param verb Verbosity mode diff --git a/src/sedacs/interface_modules.py b/src/sedacs/interface_modules.py index 2456084b..3ec53933 100644 --- a/src/sedacs/interface_modules.py +++ b/src/sedacs/interface_modules.py @@ -1,12 +1,16 @@ +""" +interface_modules.py +==================================== +Routines to handle the interface with the engines. +""" + import ctypes import os import numpy as np -from sedacs.message import * -import sys -from sedacs.engine import Engine +from sedacs.message import * from sedacs.globals import * -from sedacs.periodic_table import PeriodicTable +from sedacs.periodic_table import PeriodicTable # import the shared library try: @@ -15,44 +19,22 @@ except Exception as e: fortlib = False -try: +try: pylibFileName = os.environ["PROXYA_PYTHON_PATH"] pylib = True except Exception as e: pylib = False -# # try: -# # #fortlib = ctypes.CDLL(fortlibFileName) -# # get_hamiltonian_fortran = fortlib.proxya_get_hamiltonian -# # get_density_matrix_fortran = fortlib.proxya_get_density_matrix -# # except Exception as e: -# # fortlib = None -# # -if( (not fortlib) and (not pylib)): - print(fortlib,pylib) - error_at("interface_modules","No specific fortran or python library exists") +if (not fortlib) and (not pylib): + print(fortlib, pylib) + error_at("interface_modules", "No specific fortran or python library exists") raise e -# try: - # from proxies.python.first_level import get_hamiltonian_proxy - # from proxies.python.first_level import get_density_matrix_proxy -# except Exception as e: - # pythlib = None - # raise e - -try: - #from proxies.python.first_level import get_hamiltonian_proxy - #from proxies.python.first_level import get_density_matrix_proxy - - #import inspect - #print(inspect.getfile(get_density_matrix_proxy)) +try: from proxies.python.hamiltonian import get_hamiltonian_proxy from proxies.python.density_matrix import get_density_matrix_proxy from proxies.python.evals_dvals import get_evals_dvals_proxy - #from energy_and_forces import get_ppot_energy_expo_proxy - # #from energy_and_forces import get_ppot_forces_expo_proxy - # #from energy_and_forces import get_tb_forces_proxy from proxies.python.init_proxy import init_proxy_proxy from proxies.python.hamiltonian import build_coul_ham_proxy except Exception as e: @@ -60,37 +42,140 @@ raise e -__all__ = ["get_hamiltonian_module", "get_density_matrix_module", - "get_ppot_energy_expo", "get_ppot_forces_expo", "init_proxy", - "get_tb_forces_module","build_coul_ham_module" - ] - -#Initialize the proxy code -def init_proxy(symbols,orbs): - init_proxy_proxy(symbols,orbs) - - -def build_coul_ham_module(eng,ham0,vcouls,types,charges,orbital_based,hindex,overlap=None,verb=False): +__all__ = [ + "get_hamiltonian_module", + "get_density_matrix_module", + "get_evals_dvals_module", + "get_energy_forces_module", + "get_ppot_energy_expo", + "get_ppot_forces_expo", + "init_proxy", + "get_tb_forces_module", + "build_coul_ham_module", +] + + +# Initialize the proxy code +def init_proxy(symbols, orbs): + init_proxy_proxy(symbols, orbs) + + +def build_coul_ham_module( + eng, ham0, vcouls, types, charges, orbital_based, hindex, overlap=None, verb=False +): + """ + Interface to call external engine for adding Coulomb potential to the Hamiltonian matrix. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + ham0 : 2D numpy array, dtype: float + The non-SCF Hamiltonian matrix. + vcouls : 1D numpy array, dtype: float + The Coulomb potential for each atom. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + charges : 1D numpy array, dtype: float + The Mulliken charges for each atom. + orbital_based : bool + If True, Coulomb potential for every orbitals will be expected. + hindex : list of int + The orbital index for each atom. The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1`. + overlap : 2D numpy array, dtype: float, optional + Overlap matrix for nonorthogonal formulations. + verb : bool, optional + If True, enables verbose output. + + Returns + ------- + ham : 2D numpy array, dtype: float + The Hamiltonian matrix with the Coulomb potential added. + """ if eng.name == "ProxyAPython": - ham = build_coul_ham_proxy(ham0,vcouls,types,charges,orbital_based,hindex,overlap=overlap,verb=False) + ham = build_coul_ham_proxy( + ham0, + vcouls, + types, + charges, + orbital_based, + hindex, + overlap=overlap, + verb=False, + ) elif eng.name == "ProxyAFortran": - error_at("build_coul_ham_module","ProxyAFortran version not implemented yet") + error_at("build_coul_ham_module", "ProxyAFortran version not implemented yet") elif eng.name == "ProxyAC": - error_at("build_coul_ham_module","ProxyAC version not implemented yet") + error_at("build_coul_ham_module", "ProxyAC version not implemented yet") elif eng.name == "LATTE": + # If using LATTE as engine, the coulombic potential would be added directly in the LATTE code. ham = ham0 else: - error_at("build_coul_ham_module","No specific engine type defined") - + error_at("build_coul_ham_module", "No specific engine type defined") + return ham -def get_hamiltonian_module(eng,partIndex,nparts,norbs,latticeVectors,coords,atomTypes,symbols,get_overlap=True,verb=False,newsystem=True, keepmem=False): +def get_hamiltonian_module( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + get_overlap=True, + verb=False, + newsystem=True, + keepmem=False, +): + """ + Interface to call external engine for constructing a non-SCF Hamiltonian matrix. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + partIndex : int + Index of the current partition in the graph-partitioned system. + nparts : int + Total number of partitions in the graph-partitioned system. + norbs : int + Total number of orbitals in the current partition. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + coords : 2D numpy array, dtype: float + Atomic coordinates. For example, the z-coordinate of the first atom is coords[0,2]. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + symbols : list of str + Chemical symbols corresponding to each type index. + get_overlap : bool, optional + If True, computes the overlap matrix in addition to the Hamiltonian matrix. + verb : bool, optional + If True, enables verbose output. + newsystem : bool, optional + If True, notifies the engine that the provided system is new. + keepmem : bool, optional + If True, notifies the engine to retrieve stored electronic structure data from memory. + + Returns + ------- + ham: 2D numpy array, dtype: float + The non-SCF Hamiltonian matrix. + overlap: 2D numpy array, dtype: float, optional + The overlap matrix, if requested. + """ if eng.name == "ProxyAPython": - if(get_overlap): - hamiltonian, overlap = get_hamiltonian_proxy(coords,atomTypes,symbols,get_overlap=get_overlap,verb=verb) + if get_overlap: + hamiltonian, overlap = get_hamiltonian_proxy( + coords, types, symbols, get_overlap=get_overlap, verb=verb + ) else: - hamiltonian = get_hamiltonian_proxy(coords,atomTypes,symbols,get_overlap=get_overlap,verb=verb) + hamiltonian = get_hamiltonian_proxy( + coords, types, symbols, get_overlap=get_overlap, verb=verb + ) elif eng.name == "ProxyAFortran": nats = len(coords[:, 0]) @@ -114,76 +199,93 @@ def get_hamiltonian_module(eng,partIndex,nparts,norbs,latticeVectors,coords,atom ] # Passing a pointer to Fotran coords_ptr = coords.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - atomTypes_ptr = atomTypes.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) + atomTypes_ptr = types.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) hamiltonian = np.zeros((norbs, norbs)) overlap = np.zeros((norbs, norbs)) ham_ptr = hamiltonian.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) over_ptr = overlap.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) err = get_hamiltonian_fortran( - ctypes.c_int(nats), ctypes.c_int(norbs), coords_ptr, atomTypes_ptr, ham_ptr, over_ptr, ctypes.c_bool(verb) + ctypes.c_int(nats), + ctypes.c_int(norbs), + coords_ptr, + atomTypes_ptr, + ham_ptr, + over_ptr, + ctypes.c_bool(verb), ) elif eng.name == "LATTE": # Import the shared library - latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + latteLibFileName = os.environ["LATTE_PATH"] + "/liblatte.so" latteLib = ctypes.CDLL(latteLibFileName) - latte_compute_f = latteLib.latte_compute + latte_compute_f = latteLib.latte_compute - #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + # Periodic table: We use this to pass the chemical atom types as integer instead of characters. pt = PeriodicTable() + # In LATTE, compflag = 1 means we only want compute the non-SCF hamiltonian compflag = 1 - nats = len(coords[:,0]) + # Getting the number of atoms through the coordinates array + nats = len(coords[:, 0]) + # Here we don't care about ncores, so we set it to norbs ncores = norbs - # Getting atomic numbers + # Getting atomic numbers + # Get the number of distinct atom types through counting the elements in the symbols list nTypes = len(symbols) - atomicNumbers = np.zeros((nTypes),dtype=np.int32) - atomTypes32 = np.zeros((nats),dtype=np.int32) - atomTypes32[:] = atomTypes + # Initializing the atomic numbers array + atomicNumbers = np.zeros((nTypes), dtype=np.int32) + # Initializing the atomTypes array + atomTypes32 = np.zeros((nats), dtype=np.int32) + # Filling the atomTypes array with the types array + atomTypes32[:] = types + # Filling the atomic numbers array with the atomic numbers corresponding to the symbols for i in range(len(symbols)): atomicNumbers[i] = pt.get_atomic_number(symbols[i]) # Vectorizing 2D arrays for C-Fortran interoperability coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates - forcesFlat_out = np.zeros(3 * nats) # Vectorized forces + forcesFlat_out = np.zeros(3 * nats) # Vectorized forces hamFlat_out = np.zeros(norbs * norbs) # Vectorized hamiltonian overFlat_out = np.zeros(norbs * norbs) # Vectorized overlap - dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix - evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency - dvalsFlat_out = np.zeros(norbs) # Same here - chargesFlat_out = np.zeros(nats) # Same here - energyFlat_out = np.zeros(1) # Same here + dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix + evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency + dvalsFlat_out = np.zeros(norbs) # Same here + chargesFlat_out = np.zeros(nats) # Same here + energyFlat_out = np.zeros(1) # Same here + # Converting the coordinates array to a flat array for C-Fortran interoperability for i in range(nats): - coordsFlat_in[3*i] = coords[i,0] - coordsFlat_in[3*i+1] = coords[i,1] - coordsFlat_in[3*i+2] = coords[i,2] - + coordsFlat_in[3 * i] = coords[i, 0] + coordsFlat_in[3 * i + 1] = coords[i, 1] + coordsFlat_in[3 * i + 2] = coords[i, 2] + # Converting the lattice vectors array to a flat array for C-Fortran interoperability latticeVectorsFlat = np.zeros((9)) - latticeVectorsFlat[0] = latticeVectors[0,0] - latticeVectorsFlat[1] = latticeVectors[0,1] - latticeVectorsFlat[2] = latticeVectors[0,2] - - latticeVectorsFlat[3] = latticeVectors[1,0] - latticeVectorsFlat[4] = latticeVectors[1,1] - latticeVectorsFlat[5] = latticeVectors[1,2] - - latticeVectorsFlat[6] = latticeVectors[2,0] - latticeVectorsFlat[7] = latticeVectors[2,1] - latticeVectorsFlat[8] = latticeVectors[2,2] - + latticeVectorsFlat[0] = latticeVectors[0, 0] + latticeVectorsFlat[1] = latticeVectors[0, 1] + latticeVectorsFlat[2] = latticeVectors[0, 2] + + latticeVectorsFlat[3] = latticeVectors[1, 0] + latticeVectorsFlat[4] = latticeVectors[1, 1] + latticeVectorsFlat[5] = latticeVectors[1, 2] + + latticeVectorsFlat[6] = latticeVectors[2, 0] + latticeVectorsFlat[7] = latticeVectors[2, 1] + latticeVectorsFlat[8] = latticeVectors[2, 2] + # Initializing the Coulomb potential array with zeros vcoulsFlat = np.zeros(nats) - # Inputs + # Getting pointers to the input arrays coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) atomicNumbers_ptr = atomicNumbers.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) - latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as( + ctypes.POINTER(ctypes.c_double) + ) vcouls_ptr = vcoulsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - # Outputs + # Getting pointers to the output arrays ham_ptr = hamFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) over_ptr = overFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) dm_ptr = dmFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) @@ -195,7 +297,7 @@ def get_hamiltonian_module(eng,partIndex,nparts,norbs,latticeVectors,coords,atom # Call to the fortran funtion err = latte_compute_f( ctypes.c_int(compflag), - ctypes.c_int(partIndex+1), + ctypes.c_int(partIndex + 1), ctypes.c_int(nparts), ctypes.c_int(norbs), ctypes.c_int(ncores), @@ -203,6 +305,7 @@ def get_hamiltonian_module(eng,partIndex,nparts,norbs,latticeVectors,coords,atom ctypes.c_int(nats), ctypes.c_int(nTypes), ctypes.c_double(0.0), + ctypes.c_double(0.0), vcouls_ptr, coords_ptr, latticeVectors_ptr, @@ -221,90 +324,168 @@ def get_hamiltonian_module(eng,partIndex,nparts,norbs,latticeVectors,coords,atom ctypes.c_int(keepmem), ) - # Back to a 2D array for the forces + # Initializing 2D numpy arrays for the hamiltonian and overlap matrices hamiltonian = np.zeros((norbs, norbs)) overlap = np.zeros((norbs, norbs)) - + # Filling the hamiltonian and overlap matrices with the flattened output arrays from the Fortran function for i in range(norbs): hamiltonian[:, i] = hamFlat_out[norbs * i : norbs + norbs * i] overlap[:, i] = overFlat_out[norbs * i : norbs + norbs * i] else: - error_at("get_hamiltonian_module","No specific engine type defined") + error_at("get_hamiltonian_module", "No specific engine type defined") - if(get_overlap): + if get_overlap: return hamiltonian, overlap else: return hamiltonian -def get_evals_dvals_modules(eng,partIndex,nparts,latticeVectors,coords,atomTypes,symbols,hamiltonian,vcouls,nocc,norbsInCore=None,method="Diag",accel="No",mu=None,etemp=0.0,overlap=None,full_data=False,verb=False,newsystem=True): +def get_evals_dvals_modules( + eng, + partIndex, + nparts, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=None, + mu=None, + etemp=0.0, + verb=False, + newsystem=True, + keepmem=False, +): + """ + Interface to call external engine for computing eigenvalues and contributions (dvals) from each core+halo part to the eigenvectors of the full system. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + partIndex : int + Index of the current partition in the graph-partitioned system. + nparts : int + Total number of partitions in the graph-partitioned system. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + coords : 2D numpy array, dtype: float + Atomic coordinates. For example, the z-coordinate of the first atom is coords[0,2]. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + symbols : list of str + Chemical symbols corresponding to each type index. + ham : 2D numpy array, dtype: float + The Hamiltonian matrix. + vcouls : numpy 1D array, dtype: float + The Coulomb potential for each atom. + nocc : int + Number of occupied orbitals. + norbsInCore : int, optional + Number of orbitals in the core region. + mu : float, optional + Chemical potential for the system. + etemp : float, optional + Electronic temperature for the system. + verb : bool, optional + If True, enables verbose output. + newsystem : bool, optional + If True, notifies the engine that the provided system is new. + keepmem : bool, optional + If True, notifies the engine to retrieve stored electronic structure data from memory. + + Returns + ------- + evals: 1D numpy array, dtype: float + The eigenvalues of the input hamiltonian matrix, if requested. + dvals: 1D numpy array, dtype: float + The dvals of the input hamiltonian matrix, if requested. + """ if eng.name == "ProxyAPython": - evals, dvals = get_evals_dvals_proxy(hamiltonian, nocc, norbsInCore=norbsInCore, method="Diag", accel="No", mu=mu, etemp=etemp, overlap=overlap, full_data=full_data, verb=verb) + evals, dvals = get_evals_dvals_proxy( + ham, + nocc, + norbsInCore=norbsInCore, + mu=mu, + etemp=etemp, + verb=verb, + ) elif eng.name == "ProxyAFortran": - error_at("get_evals_dvals_modules","Not implemented yet.") + error_at("get_evals_dvals_modules", "Not implemented yet.") elif eng.name == "LATTE": # Import the shared library - latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + latteLibFileName = os.environ["LATTE_PATH"] + "/liblatte.so" latteLib = ctypes.CDLL(latteLibFileName) - latte_compute_f = latteLib.latte_compute + latte_compute_f = latteLib.latte_compute - #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + # Periodic table: We use this to pass the chemical atom types as integer instead of characters. pt = PeriodicTable() + # In LATTE, compflag = 2 means we want compute evals and dvals in addition to the hamiltonian (compflag = 1) compflag = 2 - nats = len(coords[:,0]) - norbs = len(hamiltonian[:,0]) - keepmem = False + # Getting the number of atoms through the coordinates array + nats = len(coords[:, 0]) + # Getting the number of orbitals through the hamiltonian array + norbs = len(ham[:, 0]) - # Getting atomic numbers + # Getting atomic numbers nTypes = len(symbols) - atomicNumbers = np.zeros((nTypes),dtype=np.int32) - atomTypes32 = np.zeros((nats),dtype=np.int32) - atomTypes32[:] = atomTypes + # Initializing the atomic numbers array + atomicNumbers = np.zeros((nTypes), dtype=np.int32) + # Initializing the atomTypes array + atomTypes32 = np.zeros((nats), dtype=np.int32) + # Filling the atomTypes array with the types array + atomTypes32[:] = types + # Filling the atomic numbers array with the atomic numbers corresponding to the symbols for i in range(len(symbols)): atomicNumbers[i] = pt.get_atomic_number(symbols[i]) # Vectorizing 2D arrays for C-Fortran interoperability coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates - forcesFlat_out = np.zeros(3 * nats) # Vectorized forces + forcesFlat_out = np.zeros(3 * nats) # Vectorized forces hamFlat_out = np.zeros(norbs * norbs) # Vectorized hamiltonian overFlat_out = np.zeros(norbs * norbs) # Vectorized overlap - dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix - evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency - dvalsFlat_out = np.zeros(norbs) # Same here - chargesFlat_out = np.zeros(nats) # Same here - energyFlat_out = np.zeros(1) # Same here + dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix + evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency + dvalsFlat_out = np.zeros(norbs) # Same here + chargesFlat_out = np.zeros(nats) # Same here + energyFlat_out = np.zeros(1) # Same here + # Converting the coordinates array to a flat array for C-Fortran interoperability for i in range(nats): - coordsFlat_in[3*i] = coords[i,0] - coordsFlat_in[3*i+1] = coords[i,1] - coordsFlat_in[3*i+2] = coords[i,2] - + coordsFlat_in[3 * i] = coords[i, 0] + coordsFlat_in[3 * i + 1] = coords[i, 1] + coordsFlat_in[3 * i + 2] = coords[i, 2] + # Converting the lattice vectors array to a flat array for C-Fortran interoperability latticeVectorsFlat = np.zeros((9)) - latticeVectorsFlat[0] = latticeVectors[0,0] - latticeVectorsFlat[1] = latticeVectors[0,1] - latticeVectorsFlat[2] = latticeVectors[0,2] - - latticeVectorsFlat[3] = latticeVectors[1,0] - latticeVectorsFlat[4] = latticeVectors[1,1] - latticeVectorsFlat[5] = latticeVectors[1,2] - - latticeVectorsFlat[6] = latticeVectors[2,0] - latticeVectorsFlat[7] = latticeVectors[2,1] - latticeVectorsFlat[8] = latticeVectors[2,2] - - # Inputs + latticeVectorsFlat[0] = latticeVectors[0, 0] + latticeVectorsFlat[1] = latticeVectors[0, 1] + latticeVectorsFlat[2] = latticeVectors[0, 2] + + latticeVectorsFlat[3] = latticeVectors[1, 0] + latticeVectorsFlat[4] = latticeVectors[1, 1] + latticeVectorsFlat[5] = latticeVectors[1, 2] + + latticeVectorsFlat[6] = latticeVectors[2, 0] + latticeVectorsFlat[7] = latticeVectors[2, 1] + latticeVectorsFlat[8] = latticeVectors[2, 2] + + # Getting pointers to the input arrays coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) atomicNumbers_ptr = atomicNumbers.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) - latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as( + ctypes.POINTER(ctypes.c_double) + ) vcouls_ptr = vcouls.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - # Outputs + # Getting pointers to the output arrays ham_ptr = hamFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) over_ptr = overFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) dm_ptr = dmFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) @@ -317,13 +498,14 @@ def get_evals_dvals_modules(eng,partIndex,nparts,latticeVectors,coords,atomTypes # Call to the fortran funtion err = latte_compute_f( ctypes.c_int(compflag), - ctypes.c_int(partIndex+1), + ctypes.c_int(partIndex + 1), ctypes.c_int(nparts), ctypes.c_int(norbs), ctypes.c_int(int(norbsInCore)), ctypes.c_int(nats), ctypes.c_int(nats), ctypes.c_int(nTypes), + ctypes.c_double(etemp), ctypes.c_double(mu), vcouls_ptr, coords_ptr, @@ -343,27 +525,123 @@ def get_evals_dvals_modules(eng,partIndex,nparts,latticeVectors,coords,atomTypes ctypes.c_int(keepmem), ) - #Back to a 2D array for the forces + # Initializing 1D numpy arrays for the eigenvalues and dvals evals = np.zeros((norbs)) dvals = np.zeros((norbs)) + # Filling the eigenvalues and dvals arrays with the output arrays from the Fortran function evals[:] = evalsFlat_out[:] dvals[:] = dvalsFlat_out[:] return evals, dvals -def get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors,coords,atomTypes,symbols,hamiltonian,vcouls,nocc,norbsInCore=None,method="Diag",accel="No",mu=None,etemp=0.0,overlap=None,full_data=False,verb=False,newsystem=True,keepmem=False): +def get_density_matrix_modules( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=None, + mu=None, + etemp=0.0, + overlap=None, + full_data=False, + verb=False, + newsystem=True, + keepmem=False, +): + """ + Interface to call external engine for constructing a density matrix. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + partIndex : int + Index of the current partition in the graph-partitioned system. + nparts : int + Total number of partitions in the graph-partitioned system. + norbs : int + Total number of orbitals in the current partition. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + coords : 2D numpy array, dtype: float + Atomic coordinates. For example, the z-coordinate of the first atom is coords[0,2]. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + symbols : list of str + Chemical symbols corresponding to each type index. + ham : 2D numpy array, dtype: float + The Hamiltonian matrix. + vcouls : 1D numpy array, dtype: float + The Coulomb potential for each atom. + nocc : int + Number of occupied orbitals. + norbsInCore : int, optional + Number of orbitals in the core region. + mu : float, optional + Chemical potential for the system. + etemp : float, optional + Electronic temperature for the system. + overlap : 2D numpy array, dtype: float, optional + The overlap matrix. + full_data : bool, optional + If True, retrieves additional data such as eigenvalues and contributions (dvals) from each core+halo part to the eigenvectors of the full system. + verb : bool, optional + If True, enables verbose output. + newsystem : bool, optional + If True, notifies the engine that the provided system is new. + keepmem : bool, optional + If True, notifies the engine to retrieve stored electronic structure data from memory. + + Returns + ------- + rho: 2D numpy array, dtype: float + The density matrix. + charges: 1D numpy array, dtype: float, optional + The Mulliken charges for each atom, if requested. + evals: 1D numpy array, dtype: float, optional + The eigenvalues of the input hamiltonian matrix, if requested. + dvals: 1D numpy array, dtype: float, optional + The dvals of the input hamiltonian matrix, if requested. + """ if eng.name == "ProxyAPython": method = eng.method accel = eng.accel - if(full_data): - density_matrix,evals,dvals = get_density_matrix_proxy(hamiltonian,nocc,norbsInCore=None,method=method,accel=accel,mu=mu, overlap=overlap,full_data=full_data,verb=False) + if full_data: + density_matrix, evals, dvals = get_density_matrix_proxy( + ham, + nocc, + norbsInCore=None, + method=method, + accel=accel, + mu=mu, + overlap=overlap, + full_data=full_data, + verb=False, + ) else: - density_matrix = get_density_matrix_proxy(hamiltonian,nocc,norbsInCore=None,method=method,accel=accel,mu=mu, overlap=overlap,full_data=full_data,verb=False) + density_matrix = get_density_matrix_proxy( + ham, + nocc, + norbsInCore=None, + method=method, + accel=accel, + mu=mu, + overlap=overlap, + full_data=full_data, + verb=False, + ) elif eng.name == "ProxyAFortran": # H needs to be flattened - norbs = len(hamiltonian[:, 0]) - ht = hamiltonian.T + norbs = len(ham[:, 0]) + ht = ham.T # Specify arguments type as a pointers get_density_matrix_fortran.argtypes = [ ctypes.c_int, @@ -373,72 +651,87 @@ def get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors,coords, ctypes.c_bool, ] # Passing a pointer to Fortran - hamiltonian_ptr = hamiltonian.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + hamiltonian_ptr = ham.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) density_matrix = np.zeros((norbs, norbs)) - density_matrix_ptr = density_matrix.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + density_matrix_ptr = density_matrix.ctypes.data_as( + ctypes.POINTER(ctypes.c_double) + ) err = get_density_matrix_fortran( - ctypes.c_int(norbs), ctypes.c_int(nocc), hamiltonian_ptr, density_matrix_ptr, ctypes.c_bool(verb) + ctypes.c_int(norbs), + ctypes.c_int(nocc), + hamiltonian_ptr, + density_matrix_ptr, + ctypes.c_bool(verb), ) elif eng.name == "LATTE": # Import the shared library - latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + latteLibFileName = os.environ["LATTE_PATH"] + "/liblatte.so" latteLib = ctypes.CDLL(latteLibFileName) - latte_compute_f = latteLib.latte_compute + latte_compute_f = latteLib.latte_compute - #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + # Periodic table: We use this to pass the chemical atom types as integer instead of characters. pt = PeriodicTable() + # In LATTE, compflag = 3 means we want compute the density matrix in addition to compflag = 1 and 2 compflag = 3 - nats = len(coords[:,0]) + # Getting the number of atoms through the coordinates array + nats = len(coords[:, 0]) - # Getting atomic numbers + # Getting atomic numbers nTypes = len(symbols) - atomicNumbers = np.zeros((nTypes),dtype=np.int32) - atomTypes32 = np.zeros((nats),dtype=np.int32) - atomTypes32[:] = atomTypes + # Initializing the atomic numbers array + atomicNumbers = np.zeros((nTypes), dtype=np.int32) + # Initializing the atomTypes array + atomTypes32 = np.zeros((nats), dtype=np.int32) + # Filling the atomTypes array with the types array + atomTypes32[:] = types + # Filling the atomic numbers array with the atomic numbers corresponding to the symbols for i in range(len(symbols)): atomicNumbers[i] = pt.get_atomic_number(symbols[i]) # Vectorizing 2D arrays for C-Fortran interoperability coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates - forcesFlat_out = np.zeros(3 * nats) # Vectorized forces + forcesFlat_out = np.zeros(3 * nats) # Vectorized forces hamFlat_out = np.zeros(norbs * norbs) # Vectorized hamiltonian overFlat_out = np.zeros(norbs * norbs) # Vectorized overlap - dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix - evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency - dvalsFlat_out = np.zeros(norbs) # Same here - chargesFlat_out = np.zeros(nats) # Same here - energyFlat_out = np.zeros(1) # Same here + dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix + evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency + dvalsFlat_out = np.zeros(norbs) # Same here + chargesFlat_out = np.zeros(nats) # Same here + energyFlat_out = np.zeros(1) # Same here + # Converting the coordinates array to a flat array for C-Fortran interoperability for i in range(nats): - coordsFlat_in[3*i] = coords[i,0] - coordsFlat_in[3*i+1] = coords[i,1] - coordsFlat_in[3*i+2] = coords[i,2] - + coordsFlat_in[3 * i] = coords[i, 0] + coordsFlat_in[3 * i + 1] = coords[i, 1] + coordsFlat_in[3 * i + 2] = coords[i, 2] + # Converting the lattice vectors array to a flat array for C-Fortran interoperability latticeVectorsFlat = np.zeros((9)) - latticeVectorsFlat[0] = latticeVectors[0,0] - latticeVectorsFlat[1] = latticeVectors[0,1] - latticeVectorsFlat[2] = latticeVectors[0,2] - - latticeVectorsFlat[3] = latticeVectors[1,0] - latticeVectorsFlat[4] = latticeVectors[1,1] - latticeVectorsFlat[5] = latticeVectors[1,2] - - latticeVectorsFlat[6] = latticeVectors[2,0] - latticeVectorsFlat[7] = latticeVectors[2,1] - latticeVectorsFlat[8] = latticeVectors[2,2] - - # Inputs + latticeVectorsFlat[0] = latticeVectors[0, 0] + latticeVectorsFlat[1] = latticeVectors[0, 1] + latticeVectorsFlat[2] = latticeVectors[0, 2] + + latticeVectorsFlat[3] = latticeVectors[1, 0] + latticeVectorsFlat[4] = latticeVectors[1, 1] + latticeVectorsFlat[5] = latticeVectors[1, 2] + + latticeVectorsFlat[6] = latticeVectors[2, 0] + latticeVectorsFlat[7] = latticeVectors[2, 1] + latticeVectorsFlat[8] = latticeVectors[2, 2] + + # Getting pointers to the input arrays coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) atomicNumbers_ptr = atomicNumbers.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) - latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as( + ctypes.POINTER(ctypes.c_double) + ) vcouls_ptr = vcouls.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - # Outputs + # Getting pointers to the output arrays ham_ptr = hamFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) over_ptr = overFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) dm_ptr = dmFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) @@ -447,18 +740,18 @@ def get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors,coords, dvals_ptr = dvalsFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) energy_ptr = energyFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) forces_ptr = forcesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - - + # Call to the fortran funtion err = latte_compute_f( ctypes.c_int(compflag), - ctypes.c_int(partIndex+1), + ctypes.c_int(partIndex + 1), ctypes.c_int(nparts), ctypes.c_int(norbs), ctypes.c_int(int(norbsInCore)), ctypes.c_int(nats), ctypes.c_int(nats), ctypes.c_int(nTypes), + ctypes.c_double(etemp), ctypes.c_double(mu), vcouls_ptr, coords_ptr, @@ -478,96 +771,193 @@ def get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors,coords, ctypes.c_int(keepmem), ) - - #Back to a 2D array for the forces + # Initializing 2D numpy arrays for the density matrix density_matrix = np.zeros((norbs, norbs)) + # Initializing 1D numpy arrays for charges charges = np.zeros((nats)) - charges[:] = chargesFlat_out[:] - + # Filling the density matrix and charges arrays with the output arrays from the Fortran function for i in range(norbs): density_matrix[:, i] = dmFlat_out[norbs * i : norbs + norbs * i] + charges[:] = chargesFlat_out[:] return density_matrix, charges else: method = eng.method accel = eng.accel - if(full_data): - density_matrix,evals,dvals = get_density_matrix_proxy(hamiltonian,nocc,norbsInCore=None,method=method,accel=accel,mu=mu, overlap=overlap,full_data=full_data,verb=False) + if full_data: + density_matrix, evals, dvals = get_density_matrix_proxy( + ham, + nocc, + norbsInCore=None, + method=method, + accel=accel, + mu=mu, + overlap=overlap, + full_data=full_data, + verb=False, + ) else: - density_matrix = get_density_matrix_proxy(hamiltonian,nocc,norbsInCore=None,method=method,accel=accel,mu=mu,overlap=overlap,full_data=full_data,verb=False) -# error_at("get_density_matrix_module","No specific engine type defined") - - if(full_data): - return density_matrix,evals,dvals + density_matrix = get_density_matrix_proxy( + ham, + nocc, + norbsInCore=None, + method=method, + accel=accel, + mu=mu, + overlap=overlap, + full_data=full_data, + verb=False, + ) + + if full_data: + return density_matrix, evals, dvals else: return density_matrix -def get_energy_forces_modules(eng,partIndex,nparts,norbs,hamiltonian,latticeVectors,coords,atomTypes,symbols,vcouls,nocc,norbsInCore=None,numberOfCoreAtoms=None,mu=None,etemp=0.0,verb=False,newsystem=True,keepmem=False): + +def get_energy_forces_modules( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=None, + numberOfCoreAtoms=None, + mu=None, + etemp=0.0, + verb=False, + newsystem=True, + keepmem=False, +): + """ + Interface to call external engine for computing the total energy and forces acting on each atom. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + partIndex : int + Index of the current partition in the graph-partitioned system. + nparts : int + Total number of partitions in the graph-partitioned system. + norbs : int + Total number of orbitals in the current partition. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + coords : 2D numpy array, dtype: float + Atomic coordinates. For example, the z-coordinate of the first atom is coords[0,2]. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + symbols : list of str + Chemical symbols corresponding to each type index. + ham : 2D numpy array, dtype: float + The Hamiltonian matrix. + vcouls : 1D numpy array, dtype: float + The Coulomb potential for each atom. + nocc : int + Number of occupied orbitals. + norbsInCore : int, optional + Number of orbitals in the core region. + numberOfCoreAtoms : int, optional + Number of atoms in the core region. + mu : float, optional + Chemical potential for the system. + etemp : float, optional + Electronic temperature for the system. + verb : bool, optional + If True, enables verbose output. + newsystem : bool, optional + If True, notifies the engine that the provided system is new. + keepmem : bool, optional + If True, notifies the engine to retrieve stored electronic structure data from memory. + + Returns + ------- + energy : float + The total energy of the system. + forces : 2D numpy array, dtype: float + Forces acting on each atom in the system. The forces are given in the same order as the coordinates. + """ if eng.name == "ProxyAPython": - error_at("get_energy_force_modules","Not implemented yet.") + error_at("get_energy_force_modules", "Not implemented yet.") elif eng.name == "ProxyAFortran": - error_at("get_energy_force_modules","Not implemented yet.") + error_at("get_energy_force_modules", "Not implemented yet.") elif eng.name == "LATTE": - + # Import the shared library - latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + latteLibFileName = os.environ["LATTE_PATH"] + "/liblatte.so" latteLib = ctypes.CDLL(latteLibFileName) - latte_compute_f = latteLib.latte_compute + latte_compute_f = latteLib.latte_compute - #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + # Periodic table: We use this to pass the chemical atom types as integer instead of characters. pt = PeriodicTable() + # In LATTE, compflag = 4 means we want compute the energy and forces in addition to compflag = 1, 2 and 3 compflag = 4 - nats = len(coords[:,0]) + # Getting the number of atoms through the coordinates array + nats = len(coords[:, 0]) - # Getting atomic numbers + # Getting atomic numbers nTypes = len(symbols) - atomicNumbers = np.zeros((nTypes),dtype=np.int32) - atomTypes32 = np.zeros((nats),dtype=np.int32) - atomTypes32[:] = atomTypes + # Initializing the atomic numbers array + atomicNumbers = np.zeros((nTypes), dtype=np.int32) + # Initializing the atomTypes array + atomTypes32 = np.zeros((nats), dtype=np.int32) + # Filling the atomTypes array with the types array + atomTypes32[:] = types + # Filling the atomic numbers array with the atomic numbers corresponding to the symbols for i in range(len(symbols)): atomicNumbers[i] = pt.get_atomic_number(symbols[i]) # Vectorizing 2D arrays for C-Fortran interoperability coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates - forcesFlat_out = np.zeros(3 * nats) # Vectorized forces + forcesFlat_out = np.zeros(3 * nats) # Vectorized forces hamFlat_out = np.zeros(norbs * norbs) # Vectorized hamiltonian overFlat_out = np.zeros(norbs * norbs) # Vectorized overlap - dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix - evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency - dvalsFlat_out = np.zeros(norbs) # Same here - chargesFlat_out = np.zeros(nats) # Same here - energyFlat_out = np.zeros(1) # Same here + dmFlat_out = np.zeros(norbs * norbs) # Vectorized density matrix + evalsFlat_out = np.zeros(norbs) # We call this one Flat just for consistency + dvalsFlat_out = np.zeros(norbs) # Same here + chargesFlat_out = np.zeros(nats) # Same here + energyFlat_out = np.zeros(1) # Same here + # Converting the coordinates array to a flat array for C-Fortran interoperability for i in range(nats): - coordsFlat_in[3*i] = coords[i,0] - coordsFlat_in[3*i+1] = coords[i,1] - coordsFlat_in[3*i+2] = coords[i,2] - + coordsFlat_in[3 * i] = coords[i, 0] + coordsFlat_in[3 * i + 1] = coords[i, 1] + coordsFlat_in[3 * i + 2] = coords[i, 2] + # Converting the lattice vectors array to a flat array for C-Fortran interoperability latticeVectorsFlat = np.zeros((9)) - latticeVectorsFlat[0] = latticeVectors[0,0] - latticeVectorsFlat[1] = latticeVectors[0,1] - latticeVectorsFlat[2] = latticeVectors[0,2] - - latticeVectorsFlat[3] = latticeVectors[1,0] - latticeVectorsFlat[4] = latticeVectors[1,1] - latticeVectorsFlat[5] = latticeVectors[1,2] - - latticeVectorsFlat[6] = latticeVectors[2,0] - latticeVectorsFlat[7] = latticeVectors[2,1] - latticeVectorsFlat[8] = latticeVectors[2,2] - - # Inputs + latticeVectorsFlat[0] = latticeVectors[0, 0] + latticeVectorsFlat[1] = latticeVectors[0, 1] + latticeVectorsFlat[2] = latticeVectors[0, 2] + + latticeVectorsFlat[3] = latticeVectors[1, 0] + latticeVectorsFlat[4] = latticeVectors[1, 1] + latticeVectorsFlat[5] = latticeVectors[1, 2] + + latticeVectorsFlat[6] = latticeVectors[2, 0] + latticeVectorsFlat[7] = latticeVectors[2, 1] + latticeVectorsFlat[8] = latticeVectors[2, 2] + + # Getting pointers to the input arrays coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) atomicNumbers_ptr = atomicNumbers.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) - latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + latticeVectors_ptr = latticeVectorsFlat.ctypes.data_as( + ctypes.POINTER(ctypes.c_double) + ) vcouls_ptr = vcouls.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - # Outputs + # Getting pointers to the output arrays ham_ptr = hamFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) over_ptr = overFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) dm_ptr = dmFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) @@ -577,17 +967,17 @@ def get_energy_forces_modules(eng,partIndex,nparts,norbs,hamiltonian,latticeVect energy_ptr = energyFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) forces_ptr = forcesFlat_out.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - # Call to the fortran funtion err = latte_compute_f( ctypes.c_int(compflag), - ctypes.c_int(partIndex+1), + ctypes.c_int(partIndex + 1), ctypes.c_int(nparts), ctypes.c_int(norbs), ctypes.c_int(norbsInCore), ctypes.c_int(numberOfCoreAtoms), ctypes.c_int(nats), ctypes.c_int(nTypes), + ctypes.c_double(etemp), ctypes.c_double(mu), vcouls_ptr, coords_ptr, @@ -607,101 +997,102 @@ def get_energy_forces_modules(eng,partIndex,nparts,norbs,hamiltonian,latticeVect ctypes.c_int(keepmem), ) - # Back to a 2D array for the forces + # Initializing 2D numpy arrays for the forces forces = np.zeros((nats, 3)) + # Filling the forces array with the output arrays from the Fortran function for i in range(nats): forces[i, 0] = forcesFlat_out[i * 3 + 0] forces[i, 1] = forcesFlat_out[i * 3 + 1] forces[i, 2] = forcesFlat_out[i * 3 + 2] else: - error_at("get_energy_force_modules","No specific engine type defined") + error_at("get_energy_force_modules", "No specific engine type defined") + + return energyFlat_out[0], forces - return energyFlat_out[0], forces -def get_ppot_energy_expo(coords,types): +def get_ppot_energy_expo(coords, types): - energy = get_ppot_energy_expo_proxy(coords,types) + energy = get_ppot_energy_expo_proxy(coords, types) return energy -def get_ppot_forces_expo(coords,types): +def get_ppot_forces_expo(coords, types): - forces = get_ppot_forces_expo_proxy(coords,types) + forces = get_ppot_forces_expo_proxy(coords, types) return forces -def get_tb_forces_module(ham,rho,charges,field,coords,atomTypes,symbols,overlap=None,verb=False): +def get_tb_forces_module( + ham, rho, charges, field, coords, atomTypes, symbols, overlap=None, verb=False +): - forces = get_tb_forces_proxy(ham,rho,charges,field,coords,atomTypes,symbols,overlap=None,verb=False) + forces = get_tb_forces_proxy( + ham, rho, charges, field, coords, atomTypes, symbols, overlap=None, verb=False + ) return forces - -def call_latte_modules(eng,Sy,verb=False,newsystem=True): +def call_latte_modules(eng, Sy, verb=False, newsystem=True): if eng.name == "LATTE": coords = Sy.coords latticeVectors = Sy.latticeVectors - symbols = np.array(Sy.symbols)[Sy.types] + symbols = np.array(Sy.symbols)[Sy.types] types = Sy.types # Import the shared library - latteLibFileName = os.environ['LATTE_PATH'] + '/liblatte.so' + latteLibFileName = os.environ["LATTE_PATH"] + "/liblatte.so" latteLib = ctypes.CDLL(latteLibFileName) latte_compute_f = latteLib.latte_c_bind - #Periodic table: We use this to pass the chemical atom types as integer instead of characters. + # Periodic table: We use this to pass the chemical atom types as integer instead of characters. pt = PeriodicTable() - compflag = np.zeros(5) - nats = len(coords[:,0]) + compflag = np.zeros(5) + nats = len(coords[:, 0]) norbs = Sy.norbs - err = True + err = True # Getting atomic numbers - #nTypes = len(symbols) + # nTypes = len(symbols) nTypes = len(Sy.symbols) - atomTypes32 = np.zeros((nats),dtype=np.int32) - atomTypes32[:] = Sy.types + 1 - #masses = np.where(symbols == 'H', 1.0, 0.0) + np.where(symbols == 'O', 16.0, 0.0) - masses = np.zeros(len(Sy.symbols),dtype=np.float64) + atomTypes32 = np.zeros((nats), dtype=np.int32) + atomTypes32[:] = Sy.types + 1 + masses = np.zeros(len(Sy.symbols), dtype=np.float64) for i in range(len(Sy.symbols)): - masses[i] = pt.mass[ pt.get_atomic_number(Sy.symbols[i]) ] + masses[i] = pt.mass[pt.get_atomic_number(Sy.symbols[i])] # Vectorizing 2D arrays for C-Fortran interoperability coordsFlat_in = np.zeros(3 * nats) # Vectorized coordinates - forcesFlat_out = np.zeros((3, nats), order='F') # Vectorized forces - chargesFlat_out = np.zeros(nats) # Same here - velFlat_out = np.zeros((3, nats), order='F') + forcesFlat_out = np.zeros((3, nats), order="F") # Vectorized forces + chargesFlat_out = np.zeros(nats) # Same here + velFlat_out = np.zeros((3, nats), order="F") energyFlat_out = np.zeros(1) - virialFlat_out = np.zeros((6,), order='F') -# coords = coords.T -# coords = np.asfortranarray(coords) + virialFlat_out = np.zeros((6,), order="F") for i in range(nats): - coordsFlat_in[3*i] = coords[i,0] - coordsFlat_in[3*i+1] = coords[i,1] - coordsFlat_in[3*i+2] = coords[i,2] - - -# latticeVectorsFlat = np.zeros((9)) - xlo = np.zeros(3) - xhi = np.zeros(3) - xhi[0] = latticeVectors[0,0] - xhi[1] = latticeVectors[1,1] - xhi[2] = latticeVectors[2,2] - #xlo[:] = -100 - #xhi[:] = 100 + coordsFlat_in[3 * i] = coords[i, 0] + coordsFlat_in[3 * i + 1] = coords[i, 1] + coordsFlat_in[3 * i + 2] = coords[i, 2] + + # latticeVectorsFlat = np.zeros((9)) + xlo = np.zeros(3) + xhi = np.zeros(3) + xhi[0] = latticeVectors[0, 0] + xhi[1] = latticeVectors[1, 1] + xhi[2] = latticeVectors[2, 2] + # xlo[:] = -100 + # xhi[:] = 100 xy, xz, yz = 0.0, 0.0, 0.0 maxiter = -1 # Inputs coords_ptr = coordsFlat_in.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - #coords_ptr = coords.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) + # coords_ptr = coords.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) atomTypes_ptr = atomTypes32.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) xlo_ptr = xlo.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) xhi_ptr = xhi.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) @@ -738,12 +1129,11 @@ def call_latte_modules(eng,Sy,verb=False,newsystem=True): ctypes.c_bool(err), ) - - #Back to a 2D array for the forces + # Back to a 2D array for the forces charges = np.zeros((nats)) - charges[:] = chargesFlat_out[:] + charges[:] = chargesFlat_out[:] return charges else: - error_at("call_latte_module","Not implemented yet") + error_at("call_latte_module", "Wrong engine assigned, must be LATTE") diff --git a/src/sedacs/mixer.py b/src/sedacs/mixer.py index 01eb1966..a3ed5e17 100644 --- a/src/sedacs/mixer.py +++ b/src/sedacs/mixer.py @@ -15,7 +15,7 @@ mpiLib = True except ImportError as e: mpiLib = False -from multiprocessing import Pool +#from multiprocessing import Pool if mpiLib: from sedacs.mpi import * diff --git a/src/sedacs/mpi.py b/src/sedacs/mpi.py index 3f4b924d..8fba4971 100644 --- a/src/sedacs/mpi.py +++ b/src/sedacs/mpi.py @@ -114,6 +114,17 @@ def collect_and_sum_matrices(matOnRank, rank, numranks, comm): return fullMat +def collect_and_sum_matrices_float(matOnRank, comm): + if comm is None: + raise ImportError("ERROR: Consider installing mpi4py and initializing MPI") + + # Initialize buffer for the result + fullMat = np.zeros_like(matOnRank) + + # Perform element-wise sum across all ranks + comm.Allreduce(matOnRank, fullMat, op=MPI.SUM) + + return fullMat def collect_and_sum_vectors_float(vectOnRank, rank, numranks, comm): diff --git a/src/sedacs/parser.py b/src/sedacs/parser.py index c2631272..5181dbae 100644 --- a/src/sedacs/parser.py +++ b/src/sedacs/parser.py @@ -149,6 +149,7 @@ def get_all_vals(self, fileName): else: break keyVals.update({key: listIn}) + myFile.close() return keyVals ## Get a string diff --git a/src/sedacs/sdc_density_matrix.py b/src/sedacs/sdc_density_matrix.py index 3af63198..bc209527 100644 --- a/src/sedacs/sdc_density_matrix.py +++ b/src/sedacs/sdc_density_matrix.py @@ -1,24 +1,96 @@ -"""Density matrix -Routines to build a density matrix. Typically -this will be done interfacing with an engine. - """ +sdc_density_matrix.py +==================================== +Routines to build a density matrix. +Typically this will be done interfacing with an engine. -import sys +""" from sedacs.interface_modules import get_density_matrix_modules __all__ = ["get_density_matrix"] -## Build the density matrix. -# @brief This will build a density matrix. Typically this will be done interfacing with an engine. -# @param eng Engine object. See sdc_engine.py for a full explanation -# @param nocc Number of occupied states -# @param ham Hamiltonian matrix -# @verb Verbosity -# -def get_density_matrix(eng,partIndex,nparts,norbs,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=None,mu=None,etemp=0.0,overlap=None,full_data=False,verb=False,newsystem=True,keepmem=False): +def get_density_matrix( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=None, + mu=None, + etemp=0.0, + overlap=None, + full_data=False, + verb=False, + newsystem=True, + keepmem=False, +): + """ + Constructs a density matrix, typically by interfacing with an external engine. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + partIndex : int + Index of the current partition in the graph-partitioned system. + nparts : int + Total number of partitions in the graph-partitioned system. + norbs : int + Total number of orbitals in the current partition. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + coords : 2D numpy array, dtype: float + Atomic coordinates. For example, the z-coordinate of the first atom is coords[0,2]. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + symbols : list of str + Chemical symbols corresponding to each type index. + ham : 2D numpy array, dtype: float + The Hamiltonian matrix. + vcouls : 1D numpy array, dtype: float + The Coulomb potential for each atom. + nocc : int + Number of occupied orbitals. + norbsInCore : int, optional + Number of orbitals in the core region. + method : str, optional + Type of algorithm used to compute density matrix. + accel : str, optional + Type of accelerator/special device used to compute DM. Default is "No". + mu : float, optional + Chemical potential for the system. + etemp : float, optional + Electronic temperature for the system. + overlap : 2D numpy array, dtype: float, optional + The overlap matrix. + full_data : bool, optional + If True, retrieves additional data such as eigenvalues and contributions (dvals) from each core+halo part to the eigenvectors of the full system. + verb : bool, optional + If True, enables verbose output. + newsystem : bool, optional + If True, notifies the engine that the provided system is new. + keepmem : bool, optional + If True, notifies the engine to retrieve stored electronic structure data from memory. + + Returns + ------- + rho: 2D numpy array, dtype: float + The density matrix. + charges: 1D numpy array, dtype: float, optional + The Mulliken charges for each atom, if requested. + evals: 1D numpy array, dtype: float, optional + The eigenvalues of the input hamiltonian matrix, if requested. + dvals: 1D numpy array, dtype: float, optional + The dvals of the input hamiltonian matrix, if requested. + """ if eng.interface == "None": print("ERROR!!! - Write your own Hamiltonian") @@ -26,16 +98,78 @@ def get_density_matrix(eng,partIndex,nparts,norbs,latticeVectors, coords, types, elif eng.interface == "Module": # We will call proxyA directly as it will be loaded as a module. if eng.name == "LATTE": - rho, charges = get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=norbsInCore,mu=mu,overlap=overlap,full_data=full_data,verb=verb,newsystem=newsystem,keepmem=keepmem) + rho, charges = get_density_matrix_modules( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=norbsInCore, + mu=mu, + etemp=etemp, + overlap=overlap, + full_data=full_data, + verb=verb, + newsystem=newsystem, + keepmem=keepmem, + ) elif full_data: - rho,evals,dvals = get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=norbsInCore,mu=mu,overlap=overlap,full_data=full_data,verb=verb,newsystem=newsystem,keepmem=keepmem) + rho, evals, dvals = get_density_matrix_modules( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=norbsInCore, + mu=mu, + etemp=etemp, + overlap=overlap, + full_data=full_data, + verb=verb, + newsystem=newsystem, + keepmem=keepmem, + ) else: - rho = get_density_matrix_modules(eng,partIndex,nparts,norbs,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=norbsInCore,mu=mu,overlap=overlap,full_data=False,verb=verb,newsystem=newsystem,keepmem=keepmem) + rho = get_density_matrix_modules( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=norbsInCore, + mu=mu, + etemp=etemp, + overlap=overlap, + full_data=False, + verb=verb, + newsystem=newsystem, + keepmem=keepmem, + ) else: - print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + print( + "ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI" + ) if eng.name == "LATTE": return rho, charges - elif full_data : - return rho,evals,dvals + elif full_data: + return rho, evals, dvals else: return rho diff --git a/src/sedacs/sdc_energy_forces.py b/src/sedacs/sdc_energy_forces.py index 6a02a614..609acd56 100644 --- a/src/sedacs/sdc_energy_forces.py +++ b/src/sedacs/sdc_energy_forces.py @@ -1,32 +1,114 @@ -"""Energy and force -Routines to calculate energy and force. Typically -this will be done interfacing with an engine. - """ +sdc_energy_forces.py +==================================== +Routines to calculate energy and force. +Typically this will be done interfacing with an engine. -import sys +""" from sedacs.interface_modules import get_energy_forces_modules __all__ = ["get_energy_forces"] -## Calculate the energy and force. -# @brief This will calculate energy and force. Typically this will be done interfacing with an engine. -# @param eng Engine object. See sdc_engine.py for a full explanation -# @param nocc Number of occupied states -# @param ham Hamiltonian matrix -# @verb Verbosity -# -def get_energy_forces(eng,partIndex,nparts,norbs,hamiltonian,latticeVectors,coords,atomTypes,symbols,vcouls,nocc,norbsInCore=None,numberOfCoreAtoms=None,mu=None,etemp=0.0,verb=False,newsystem=True,keepmem=False): +def get_energy_forces( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=None, + numberOfCoreAtoms=None, + mu=None, + etemp=0.0, + verb=False, + newsystem=True, + keepmem=False, +): + """ + Computes the total energy and forces acting on each atom, typically by interfacing with an external engine. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + partIndex : int + Index of the current partition in the graph-partitioned system. + nparts : int + Total number of partitions in the graph-partitioned system. + norbs : int + Total number of orbitals in the current partition. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + coords : 2D numpy array, dtype: float + Atomic coordinates. For example, the z-coordinate of the first atom is coords[0,2]. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + symbols : list of str + Chemical symbols corresponding to each type index. + ham : 2D numpy array, dtype: float + The Hamiltonian matrix. + vcouls : 1D numpy array, dtype: float + The Coulomb potential for each atom. + nocc : int + Number of occupied orbitals. + norbsInCore : int, optional + Number of orbitals in the core region. + numberOfCoreAtoms : int, optional + Number of atoms in the core region. + mu : float, optional + Chemical potential for the system. + etemp : float, optional + Electronic temperature for the system. + verb : bool, optional + If True, enables verbose output. + newsystem : bool, optional + If True, notifies the engine that the provided system is new. + keepmem : bool, optional + If True, notifies the engine to retrieve stored electronic structure data from memory. + + Returns + ------- + energy : float + The total energy of the system. + forces : 2D numpy array, dtype: float + Forces acting on each atom in the system. The forces are given in the same order as the coordinates. + """ if eng.interface == "None": print("ERROR!!! - Write your own Hamiltonian") # Tight interface using modules or an external code compiled as a library elif eng.interface == "Module": # We will call proxyA directly as it will be loaded as a module. - energy, forces = get_energy_forces_modules(eng,partIndex,nparts,norbs,hamiltonian,latticeVectors,coords,atomTypes,symbols,vcouls,nocc,norbsInCore=norbsInCore,numberOfCoreAtoms=numberOfCoreAtoms,mu=mu,etemp=etemp,verb=verb,newsystem=newsystem,keepmem=keepmem) + energy, forces = get_energy_forces_modules( + eng, + partIndex, + nparts, + norbs, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=norbsInCore, + numberOfCoreAtoms=numberOfCoreAtoms, + mu=mu, + etemp=etemp, + verb=verb, + newsystem=newsystem, + keepmem=keepmem, + ) else: - print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") - - return energy, forces + print( + "ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI" + ) + + return energy, forces diff --git a/src/sedacs/sdc_evals_dvals.py b/src/sedacs/sdc_evals_dvals.py index 9cb4dd98..4e7f5613 100644 --- a/src/sedacs/sdc_evals_dvals.py +++ b/src/sedacs/sdc_evals_dvals.py @@ -1,32 +1,102 @@ -"""Evals and dvals -Routines to compute evals and dvals. Typically -this will be done interfacing with an engine. - """ - -import sys +sdc_evals_dvals.py +====================================== +Routines to compute evals and dvals. +Typically this will be done interfacing with an engine. +""" from sedacs.interface_modules import get_evals_dvals_modules __all__ = ["get_evals_dvals"] -## Compute evals and dvals -# @brief This will compute evals and dvals. Typically this will be done interfacing with an engine. -# @param eng Engine object. See sdc_engine.py for a full explanation -# @param nocc Number of occupied states -# @param ham Hamiltonian matrix -# @verb Verbosity -# -def get_evals_dvals(eng,partIndex,nparts,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=None,mu=None,etemp=0.0,overlap=None,full_data=False,verb=False, newsystem=True): +def get_evals_dvals( + eng, + partIndex, + nparts, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=None, + mu=None, + etemp=0.0, + verb=False, + newsystem=True, +): + """ + Computes eigenvalues and contributions (dvals) from each core+halo part to the eigenvectors of the full system, typically by interfacing with an external engine. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + partIndex : int + Index of the current partition in the graph-partitioned system. + nparts : int + Total number of partitions in the graph-partitioned system. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + coords : 2D numpy array, dtype: float + Atomic coordinates. For example, the z-coordinate of the first atom is coords[0,2]. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + symbols : list of str + Chemical symbols corresponding to each type index. + ham : 2D numpy array, dtype: float + The Hamiltonian matrix. + vcouls : numpy 1D array, dtype: float + The Coulomb potential for each atom. + nocc : int + Number of occupied orbitals. + norbsInCore : int, optional + Number of orbitals in the core region. + mu : float, optional + Chemical potential for the system. + etemp : float, optional + Electronic temperature for the system. + verb : bool, optional + If True, enables verbose output. + newsystem : bool, optional + If True, notifies the engine that the provided system is new. + keepmem : bool, optional + If True, notifies the engine to retrieve stored electronic structure data from memory. + + Returns + ------- + evals: 1D numpy array, dtype: float + The eigenvalues of the input hamiltonian matrix, if requested. + dvals: 1D numpy array, dtype: float + The dvals of the input hamiltonian matrix, if requested. + """ if eng.interface == "None": print("ERROR!!! - Write your own Hamiltonian") # Tight interface using modules or an external code compiled as a library elif eng.interface == "Module": # We will call proxyA directly as it will be loaded as a module. - evals,dvals = get_evals_dvals_modules(eng,partIndex,nparts,latticeVectors, coords, types, symbols,ham,vcouls,nocc,norbsInCore=norbsInCore,mu=mu,overlap=overlap,full_data=full_data,verb=verb, newsystem=newsystem) + evals, dvals = get_evals_dvals_modules( + eng, + partIndex, + nparts, + latticeVectors, + coords, + types, + symbols, + ham, + vcouls, + nocc, + norbsInCore=norbsInCore, + mu=mu, + verb=verb, + newsystem=newsystem, + ) else: - print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") + print( + "ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI" + ) - return evals,dvals + return evals, dvals diff --git a/src/sedacs/sdc_hamiltonian.py b/src/sedacs/sdc_hamiltonian.py index 9de4fd5b..a707a7de 100644 --- a/src/sedacs/sdc_hamiltonian.py +++ b/src/sedacs/sdc_hamiltonian.py @@ -1,10 +1,9 @@ -"""Hamiltonian -Routines to build a Hamiltonian matrix. Typically -this will be done interfacing with an engine. - """ - -import sys +sdc_hamiltonian.py +==================================== +Routines to build a Hamiltonian matrix. +Typically this will be done interfacing with an engine. +""" from sedacs.interface_files import get_hamiltonian_files from sedacs.interface_modules import get_hamiltonian_module @@ -12,16 +11,8 @@ __all__ = ["get_hamiltonian"] -## Build the non-scf Hamiltonian matrix. -# @brief This will build a Hamiltonian matrix. Typically this will be done interfacing with an engine. -# @param eng Engine object. See sdc_engine.py for a full explanation -# @param coords Positions for every atom. z-coordinate of atom 1 = coords[0,2] -# @param types Index type for each atom in the system. Type for first atom = type[0] -# @param symbols Symbols for every atom type -# @verbose Verbosity -# def get_hamiltonian( - engine, + eng, partIndex, nparts, norbs, @@ -30,20 +21,57 @@ def get_hamiltonian( types, symbols, get_overlap=True, - verbose=False, + verb=False, newsystem=True, - keepmem=False + keepmem=False, ): + """ + Constructs a non-SCF Hamiltonian matrix, typically by interfacing with an external engine. + + Parameters + ---------- + eng : Engine object + Refer to engine.py for detailed information. + partIndex : int + Index of the current partition in the graph-partitioned system. + nparts : int + Total number of partitions in the graph-partitioned system. + norbs : int + Total number of orbitals in the current partition. + latticeVectors : 2D numpy array, dtype: float + A 3x3 matrix representing lattice vectors for periodic boundary conditions. + coords : 2D numpy array, dtype: float + Atomic coordinates. For example, the z-coordinate of the first atom is coords[0,2]. + types : 1D numpy array, dtype: int + Type indices for all atoms in the system. For example, the type of the first atom is types[0]. + symbols : list of str + Chemical symbols corresponding to each type index. + get_overlap : bool, optional + If True, computes the overlap matrix in addition to the Hamiltonian matrix. + verb : bool, optional + If True, enables verbose output. + newsystem : bool, optional + If True, notifies the engine that the provided system is new. + keepmem : bool, optional + If True, notifies the engine to retrieve stored electronic structure data from memory. + + Returns + ------- + ham: 2D numpy array + The non-SCF Hamiltonian matrix. + overlap: 2D numpy array, optional + The overlap matrix, if requested. + """ # Call the proper interface # If there is no interface, one should write its own Hamiltonian - if engine.interface == "None": + if eng.interface == "None": raise ValueError("ERROR!!! - Write your own Hamiltonian.") # Tight interface using modules or an external code compiled as a library - elif engine.interface == "Module": + elif eng.interface == "Module": # We will call proxyA directly as it will be loaded as a module. if get_overlap: ham, overlap = get_hamiltonian_module( - engine, + eng, partIndex, nparts, norbs, @@ -52,14 +80,14 @@ def get_hamiltonian( types, symbols, get_overlap=get_overlap, - verb=verbose, + verb=verb, newsystem=newsystem, - keepmem=keepmem + keepmem=keepmem, ) return ham, overlap else: return get_hamiltonian_module( - engine, + eng, partIndex, nparts, norbs, @@ -68,21 +96,21 @@ def get_hamiltonian( types, symbols, get_overlap=get_overlap, - verb=verbose, + verb=verb, newsystem=newsystem, - keepmem=keepmem + keepmem=keepmem, ) # Using any available library. We will use MDI here. - elif engine.interface == "MDI": + elif eng.interface == "MDI": raise NotImplemented("MDI interface not implemented yet") # Using unix sockets to interface the codes - elif engine.interface == "Socket": + elif eng.interface == "Socket": raise NotImplemented("Sockets not implemented yet") # Using files as a form of communication and transfering data. - elif engine.interface == "File": - return get_hamiltonian_files(engine, coords, types, symbols, verb=verbose) + elif eng.interface == "File": + return get_hamiltonian_files(eng, coords, types, symbols, verb=verb) raise ValueError( - f"ERROR!!!: Interface type not recognized: '{engine.interface}'. " + f"ERROR!!!: Interface type not recognized: '{eng.interface}'. " + f"Use any of the following: Module,File,Socket,MDI" ) diff --git a/src/sedacs/system.py b/src/sedacs/system.py index 0f670e48..4c2f7fbd 100644 --- a/src/sedacs/system.py +++ b/src/sedacs/system.py @@ -35,7 +35,7 @@ mpiLib = True except ImportError as e: mpiLib = False -from multiprocessing import Pool +#from multiprocessing import Pool if mpiLib: from sedacs.mpi import * From 4d7a1d6a897b7dc3a8d0f61ab1f7e73a5131e02e Mon Sep 17 00:00:00 2001 From: peterli3819 Date: Tue, 15 Apr 2025 13:45:07 -0600 Subject: [PATCH 3/4] remove files unrelated to latte interface --- parameters/dftb/sdc_siesta.py | 330 ---- parameters/dftb/sdc_sqlite.py | 670 -------- parameters/gpmd_interface_example/H2O.pdb | 9 - parameters/gpmd_interface_example/README.md | 15 - .../gpmd_interface_example/build_bml.sh | 23 - .../gpmd_interface_example/build_cmake.sh | 30 - .../gpmd_interface_example/build_progress.sh | 38 - .../gpmd_interface_example/clone_all_codes.sh | 4 - .../gpmd_interface_example/main_bch_dspl.py | 96 -- parameters/gpmd_interface_example/main_mpi.py | 49 - .../main_optim_params.py | 612 ------- .../main_optim_params_parallel.py | 882 ---------- parameters/gpmd_interface_example/vars | 11 - proxies/c/README.md | 1 - proxies/c/build.sh | 2 - proxies/c/proxy_a.c | 48 - proxies/c/proxy_a.h | 14 - proxies/c/proxy_a_lib.c | 253 --- proxies/fortran/CMakeLists.txt | 107 -- proxies/fortran/compile.sh | 1 - proxies/fortran/compile_with_cmake.sh | 24 - proxies/fortran/proxy_a.F90 | 31 - proxies/fortran/proxy_a_lib.F90 | 113 -- proxies/fortran/proxy_a_mod.F90 | 232 --- proxies/matlab/AtomicDensityMatrix.m | 36 - proxies/matlab/BondIntegral.m | 18 - proxies/matlab/COORD.m | 51 - proxies/matlab/CoulombMatrix.m | 16 - proxies/matlab/DM_Fermi.m | 37 - proxies/matlab/DM_PRT_Fermi.m | 43 - proxies/matlab/DensityMatrix.m | 13 - proxies/matlab/DensityMatrixPRT.m | 34 - proxies/matlab/Energy.m | 34 - proxies/matlab/Energy_save_00.m | 34 - proxies/matlab/Ewald_Real_Space.m | 97 -- proxies/matlab/Ewald_k_Space.m | 108 -- proxies/matlab/Forces.m | 109 -- proxies/matlab/Forces_save_00.m | 108 -- proxies/matlab/Get_q.m | 9 - proxies/matlab/GetdC.m | 86 - proxies/matlab/GetdH.m | 38 - proxies/matlab/GetdS.m | 37 - proxies/matlab/H0_and_S.m | 95 -- proxies/matlab/LoadBondIntegralParameters_H.m | 261 --- proxies/matlab/LoadBondIntegralParameters_S.m | 123 -- proxies/matlab/Main.m | 145 -- proxies/matlab/Main_save_00.m | 85 - proxies/matlab/Main_save_01.m | 110 -- proxies/matlab/PBC_Coulomb.m | 11 - proxies/matlab/PBC_CoulombPot.m | 29 - proxies/matlab/PBC_Energy.m | 30 - proxies/matlab/PBC_Forces.m | 36 - proxies/matlab/PBC_Hamiltonian.m | 12 - proxies/matlab/PBC_SCF.m | 21 - proxies/matlab/PBC_SCF_PRT.m | 43 - proxies/matlab/PBC_SCF_PRT_0.m | 42 - proxies/matlab/PBC_SCF_PRT_X.m | 48 - proxies/matlab/PBC_main.m | 101 -- proxies/matlab/SCF.m | 50 - proxies/matlab/SCF_save_00.m | 50 - proxies/matlab/ScaleTail.m | 26 - proxies/matlab/Slater_Koster_Block.m | 104 -- proxies/matlab/Slater_Koster_Pair.m | 94 -- proxies/matlab/Thresh.m | 10 - proxies/matlab/nearestneighborlist.m | 67 - proxies/python/aosa_hamiltonian.py | 130 -- proxies/python/chemical_potential.py | 211 --- proxies/python/coordinates.py | 58 - proxies/python/density_matrix.py | 309 ---- proxies/python/dnnprt.py | 279 --- proxies/python/energy_and_forces.py | 664 -------- proxies/python/evals_dvals.py | 74 - proxies/python/first_level.py | 441 ----- proxies/python/first_level_gpu.py | 303 ---- proxies/python/hamiltonian.py | 182 -- proxies/python/hamiltonian_elements.py | 310 ---- proxies/python/hamiltonian_random.py | 57 - proxies/python/init_proxy.py | 106 -- proxies/python/nonortho.py | 35 - proxies/python/proxy_global.py | 107 -- proxies/python/random_numbers.py | 69 - proxies/vars | 11 - src/sedacs/__init__.py | 0 src/sedacs/driver/classical.py | 47 - src/sedacs/driver/energy_and_forces.py | 164 -- src/sedacs/driver/graph_adaptive_MASTER.py | 876 ---------- src/sedacs/driver/old_t.py | 922 ---------- src/sedacs/ewald/charge_solver.py | 86 - src/sedacs/fock.py | 45 - src/sedacs/force_fields.py | 53 - src/sedacs/integrate.py | 31 - src/sedacs/interface_pyseqm.py | 701 -------- src/sedacs/latte/coords.pdb | 18 - src/sedacs/latte/coords.xyz | 14 - src/sedacs/latte/latte.py | 1501 ----------------- src/sedacs/latte/main_latte_call.py | 115 -- src/sedacs/latte/vars | 5 - src/sedacs/molSysData.py | 34 - src/sedacs/run_py.py | 11 - src/sedacs/src.cpp | 36 - src/sedacs/tbforce_modules.py | 149 -- src/sedacs/tbforces.py | 69 - 102 files changed, 14319 deletions(-) delete mode 100644 parameters/dftb/sdc_siesta.py delete mode 100644 parameters/dftb/sdc_sqlite.py delete mode 100644 parameters/gpmd_interface_example/H2O.pdb delete mode 100644 parameters/gpmd_interface_example/README.md delete mode 100644 parameters/gpmd_interface_example/build_bml.sh delete mode 100644 parameters/gpmd_interface_example/build_cmake.sh delete mode 100644 parameters/gpmd_interface_example/build_progress.sh delete mode 100644 parameters/gpmd_interface_example/clone_all_codes.sh delete mode 100644 parameters/gpmd_interface_example/main_bch_dspl.py delete mode 100644 parameters/gpmd_interface_example/main_mpi.py delete mode 100644 parameters/gpmd_interface_example/main_optim_params.py delete mode 100644 parameters/gpmd_interface_example/main_optim_params_parallel.py delete mode 100644 parameters/gpmd_interface_example/vars delete mode 100644 proxies/c/README.md delete mode 100644 proxies/c/build.sh delete mode 100644 proxies/c/proxy_a.c delete mode 100644 proxies/c/proxy_a.h delete mode 100644 proxies/c/proxy_a_lib.c delete mode 100644 proxies/fortran/CMakeLists.txt delete mode 100644 proxies/fortran/compile.sh delete mode 100644 proxies/fortran/compile_with_cmake.sh delete mode 100644 proxies/fortran/proxy_a.F90 delete mode 100644 proxies/fortran/proxy_a_lib.F90 delete mode 100644 proxies/fortran/proxy_a_mod.F90 delete mode 100644 proxies/matlab/AtomicDensityMatrix.m delete mode 100644 proxies/matlab/BondIntegral.m delete mode 100644 proxies/matlab/COORD.m delete mode 100644 proxies/matlab/CoulombMatrix.m delete mode 100644 proxies/matlab/DM_Fermi.m delete mode 100644 proxies/matlab/DM_PRT_Fermi.m delete mode 100644 proxies/matlab/DensityMatrix.m delete mode 100644 proxies/matlab/DensityMatrixPRT.m delete mode 100644 proxies/matlab/Energy.m delete mode 100644 proxies/matlab/Energy_save_00.m delete mode 100644 proxies/matlab/Ewald_Real_Space.m delete mode 100644 proxies/matlab/Ewald_k_Space.m delete mode 100644 proxies/matlab/Forces.m delete mode 100644 proxies/matlab/Forces_save_00.m delete mode 100644 proxies/matlab/Get_q.m delete mode 100644 proxies/matlab/GetdC.m delete mode 100644 proxies/matlab/GetdH.m delete mode 100644 proxies/matlab/GetdS.m delete mode 100644 proxies/matlab/H0_and_S.m delete mode 100644 proxies/matlab/LoadBondIntegralParameters_H.m delete mode 100644 proxies/matlab/LoadBondIntegralParameters_S.m delete mode 100644 proxies/matlab/Main.m delete mode 100644 proxies/matlab/Main_save_00.m delete mode 100644 proxies/matlab/Main_save_01.m delete mode 100644 proxies/matlab/PBC_Coulomb.m delete mode 100644 proxies/matlab/PBC_CoulombPot.m delete mode 100644 proxies/matlab/PBC_Energy.m delete mode 100644 proxies/matlab/PBC_Forces.m delete mode 100644 proxies/matlab/PBC_Hamiltonian.m delete mode 100644 proxies/matlab/PBC_SCF.m delete mode 100644 proxies/matlab/PBC_SCF_PRT.m delete mode 100644 proxies/matlab/PBC_SCF_PRT_0.m delete mode 100644 proxies/matlab/PBC_SCF_PRT_X.m delete mode 100644 proxies/matlab/PBC_main.m delete mode 100644 proxies/matlab/SCF.m delete mode 100644 proxies/matlab/SCF_save_00.m delete mode 100644 proxies/matlab/ScaleTail.m delete mode 100644 proxies/matlab/Slater_Koster_Block.m delete mode 100644 proxies/matlab/Slater_Koster_Pair.m delete mode 100644 proxies/matlab/Thresh.m delete mode 100644 proxies/matlab/nearestneighborlist.m delete mode 100644 proxies/python/aosa_hamiltonian.py delete mode 100644 proxies/python/chemical_potential.py delete mode 100644 proxies/python/coordinates.py delete mode 100644 proxies/python/density_matrix.py delete mode 100644 proxies/python/dnnprt.py delete mode 100644 proxies/python/energy_and_forces.py delete mode 100644 proxies/python/evals_dvals.py delete mode 100644 proxies/python/first_level.py delete mode 100644 proxies/python/first_level_gpu.py delete mode 100644 proxies/python/hamiltonian.py delete mode 100644 proxies/python/hamiltonian_elements.py delete mode 100644 proxies/python/hamiltonian_random.py delete mode 100644 proxies/python/init_proxy.py delete mode 100644 proxies/python/nonortho.py delete mode 100644 proxies/python/proxy_global.py delete mode 100644 proxies/python/random_numbers.py delete mode 100644 proxies/vars delete mode 100644 src/sedacs/__init__.py delete mode 100644 src/sedacs/driver/classical.py delete mode 100644 src/sedacs/driver/energy_and_forces.py delete mode 100644 src/sedacs/driver/graph_adaptive_MASTER.py delete mode 100644 src/sedacs/driver/old_t.py delete mode 100644 src/sedacs/ewald/charge_solver.py delete mode 100644 src/sedacs/fock.py delete mode 100644 src/sedacs/force_fields.py delete mode 100644 src/sedacs/integrate.py delete mode 100644 src/sedacs/interface_pyseqm.py delete mode 100644 src/sedacs/latte/coords.pdb delete mode 100644 src/sedacs/latte/coords.xyz delete mode 100644 src/sedacs/latte/latte.py delete mode 100644 src/sedacs/latte/main_latte_call.py delete mode 100644 src/sedacs/latte/vars delete mode 100644 src/sedacs/molSysData.py delete mode 100644 src/sedacs/run_py.py delete mode 100644 src/sedacs/src.cpp delete mode 100644 src/sedacs/tbforce_modules.py delete mode 100644 src/sedacs/tbforces.py diff --git a/parameters/dftb/sdc_siesta.py b/parameters/dftb/sdc_siesta.py deleted file mode 100644 index 1355fc0b..00000000 --- a/parameters/dftb/sdc_siesta.py +++ /dev/null @@ -1,330 +0,0 @@ -import numpy as np -import io, sys, os - -atomic_numbers = { - "H": 1, "He": 2, "Li": 3, "Be": 4, "B": 5, - "C": 6, "N": 7, "O": 8, "F": 9, "Ne": 10, - "Na": 11, "Mg": 12, "Al": 13, "Si": 14, "P": 15, - "S": 16, "Cl": 17, "Ar": 18, "K": 19, "Ca": 20, - "Sc": 21, "Ti": 22, "V": 23, "Cr": 24, "Mn": 25, - "Fe": 26, "Co": 27, "Ni": 28, "Cu": 29, "Zn": 30, - "Ga": 31, "Ge": 32, "As": 33, "Se": 34, "Br": 35, - "Kr": 36, "Rb": 37, "Sr": 38, "Y": 39, "Zr": 40, - "Nb": 41, "Mo": 42, "Tc": 43, "Ru": 44, "Rh": 45, - "Pd": 46, "Ag": 47, "Cd": 48, "In": 49, "Sn": 50, - "Sb": 51, "Te": 52, "I": 53, "Xe": 54, "Cs": 55, - "Ba": 56, "La": 57, "Ce": 58, "Pr": 59, "Nd": 60, - "Pm": 61, "Sm": 62, "Eu": 63, "Gd": 64, "Tb": 65, - "Dy": 66, "Ho": 67, "Er": 68, "Tm": 69, "Yb": 70, - "Lu": 71, "Hf": 72, "Ta": 73, "W": 74, "Re": 75, - "Os": 76, "Ir": 77, "Pt": 78, "Au": 79, "Hg": 80, - "Tl": 81, "Pb": 82, "Bi": 83, "Po": 84, "At": 85, - "Rn": 86, "Fr": 87, "Ra": 88, "Ac": 89, "Th": 90, - "Pa": 91, "U": 92, "Np": 93, "Pu": 94, "Am": 95, - "Cm": 96, "Bk": 97, "Cf": 98, "Es": 99, "Fm": 100 -} - -atomic_masses = { - "H": 1.008, "He": 4.0026, "Li": 6.94, "Be": 9.0122, "B": 10.81, - "C": 12.011, "N": 14.007, "O": 15.999, "F": 18.998, "Ne": 20.180, - "Na": 22.990, "Mg": 24.305, "Al": 26.982, "Si": 28.085, "P": 30.974, - "S": 32.06, "Cl": 35.45, "Ar": 39.948, "K": 39.098, "Ca": 40.078, - "Sc": 44.956, "Ti": 47.867, "V": 50.942, "Cr": 51.996, "Mn": 54.938, - "Fe": 55.845, "Co": 58.933, "Ni": 58.693, "Cu": 63.546, "Zn": 65.38, - "Ga": 69.723, "Ge": 72.63, "As": 74.922, "Se": 78.971, "Br": 79.904, - "Kr": 83.798, "Rb": 85.468, "Sr": 87.62, "Y": 88.906, "Zr": 91.224, - "Nb": 92.906, "Mo": 95.95, "Tc": 98, "Ru": 101.07, "Rh": 102.91, - "Pd": 106.42, "Ag": 107.87, "Cd": 112.41, "In": 114.82, "Sn": 118.71, - "Sb": 121.76, "Te": 127.6, "I": 126.9, "Xe": 131.29, "Cs": 132.91, - "Ba": 137.33, "La": 138.91, "Ce": 140.12, "Pr": 140.91, "Nd": 144.24, - "Pm": 145, "Sm": 150.36, "Eu": 151.96, "Gd": 157.25, "Tb": 158.93, - "Dy": 162.5, "Ho": 164.93, "Er": 167.26, "Tm": 168.93, "Yb": 173.05, - "Lu": 174.97, "Hf": 178.49, "Ta": 180.95, "W": 183.84, "Re": 186.21, - "Os": 190.23, "Ir": 192.22, "Pt": 195.08, "Au": 196.97, "Hg": 200.59, - "Tl": 204.38, "Pb": 207.2, "Bi": 208.98, "Po": 209, "At": 210, "Rn": 222, - "Fr": 223, "Ra": 226, "Ac": 227, "Th": 232.04, "Pa": 231.04, "U": 238.03, - "Np": 237, "Pu": 244, "Am": 243, "Cm": 247, "Bk": 247, "Cf": 251, "Es": 252, - "Fm": 257 -} - -UNIT_LENGTH = 'Ang' -UNIT_ENERGY = 'Ry' - - -def read_xyz_file(input_file): - species, coord = [], [] - - # Open input file for reading - with open(input_file, 'r') as infile: - # Read number of atoms - num_atoms = int(infile.readline().strip()) - # Skip blank line - infile.readline() - - # Process each line containing atom coordinates - for i in range(int(num_atoms)): - # Split line into atom species, x, y, z coordinates - line = infile.readline() - l = line.split() - atom_specie, x, y, z = l[0], l[1], l[2], l[3] - species.append(atom_specie) - coord.append([float(x), float(y), float(z)]) - return species, coord - - -def get_siesta_default_params(): - params = { - 'SystemName': 'molecule', - 'SystemLabel': 'molecule', - 'NumberOfAtoms': '8', - 'NumberOfSpecies': '3', - 'ChemicalSpeciesLabel': [], - 'LatticeConstant': '1.0 Ang', - 'LatticeVectors': [], - 'XC.functional': 'GGA', - 'XC.authors': 'PBE', - 'MeshCutoff': '1500 Ry', - 'MaxSCFIterations': '180', - 'DM.NumberPulay': '5', - 'DM.MixingWeight': '0.15', - 'DM.Tolerance': '1.d-4', - 'DM.UseSaveDM': 'T', - 'UseSaveData': 'T', - 'SolutionMethod': 'diagon', - 'ElectronicTemperature': '1 K', - 'SaveHS': 'F', - 'LongOutput': 'T', - 'WriteCoorStep': 'T', - 'WriteEigenvalues': 'T', - 'WriteCoorXmol': 'T', - 'WriteMullikenPop': '1', - 'AtomicCoordinatesFormat': 'Ang', - # 'MD.TypeOfRun': 'FC', - # 'BornCharge': 'T', - # 'MD.FCDispl': '0.01 bohr', - # 'PolarizationGrids': [], - 'MD.NumCGsteps': '0', - 'MD.MaxForceTol': '0.01 eV/Ang', - 'MD.VariableCell': 'F', - 'MD.MaxStressTol': '1 GPa', - 'WriteMDXmol': 'T', - 'kgrid_Monkhorst_Pack': [[1, 0, 0, 0.0], [0, 1, 0, 0.0], [0, 0, 1, 0.0]], - 'BandLinesScale': 'ReciprocalLatticeVectors', - 'Eigenvectors': 'T', - 'Diag.ParallelOverK': 'F', - 'WriteKbands': 'F', - 'BandLines': [['1', '0.0', '0.0', '0.0']], - '%block AtomicCoordinatesAndAtomicSpecies <': 'siesta.dat', - 'Slab.DipoleCorrection': 'False' - } - return params - - -def write_block(name, block): - """ - Generates a siesta block and returns text. - - """ - lines = [f'\n%block {name}'] - for row in block: - data = ' '.join(str(r) + '\t' for r in row) - lines.append(f' {data}') - lines.append(f'%endblock {name}' + '\n') - return '\n'.join(lines) + '\n' - - -def generate_text(param, filename='input.fdf', folder='./'): - """ - Generates a text file from the given parameters. - - :param param: Dictionary containing SIESTA parameters. - :param filename: Name of the file to write the parameters to (default is 'input.fdf'). - :param folder: Folder path where the file will be saved (default is current directory). - """ - buffer = io.StringIO() - for key, value in param.items(): - if isinstance(value, list): - buffer.write(write_block(key, value)) - else: - buffer.write(f"{key}\t{value}\n") - with open(folder + filename, 'w') as f: - f.write(buffer.getvalue()) - buffer.close() - - -def write_coordinates(output_file_name, species, coordinates, folder='./'): - with open(folder + output_file_name, 'w') as outfile: - for specie, coords in zip(species, coordinates): - outfile.write(f"{coords[0]:>8}\t{coords[1]:>8}\t{coords[2]:>8}\t" - f"{species_list.index(specie) + 1}\t{atomic_masses[specie]:>8}\n") - - -def compose_basic_params_and_blocks(input_file): - """ - Reads an XYZ file to extract atomic species and coordinates, computes lattice vectors, - and updates SIESTA parameters accordingly. - - :param input_file: Path to the XYZ file. - :return: Tuple containing species, coordinates, and species list. - """ - try: - # Extract species and coordinates from the XYZ file - species, coordinates = read_xyz_file(input_file) - - # Create a list of unique species - species_list = list(set(species)) - - block_ChemicalSpeciesLabel = [[str(i + 1), str(atomic_numbers[sp]), sp] for i, sp in enumerate(species_list)] - min_max = [round(max(np.array(coordinates).T[i]) - min(np.array(coordinates).T[i])) for i in range(3)] - block_latticeVectors = [ - [min_max[0] + 20, 0.0, 0.0], - [0.0, min_max[1] + 20, 0.0], - [0.0, 0.0, min_max[2] + 20] - ] - - # Update SIESTA parameters - siesta_params['NumberOfAtoms'] = len(coordinates) - siesta_params['NumberOfSpecies'] = len(species_list) - siesta_params['ChemicalSpeciesLabel'] = block_ChemicalSpeciesLabel - siesta_params['LatticeVectors'] = block_latticeVectors - - return species, coordinates, species_list - - except Exception as e: - print(f"Error processing xyz file, {e}") - sys.exit(0) - - -def composed_block_ExternalElectricField(efield_coord, efield_strenght): - """ - Composes the ExternalElectricField block for SIESTA input files based on the specified coordinate and strength. - - :param efield_coord: Coordinate axis ('x', 'y', or 'z') along which the electric field is applied. - :param efield_strength: Strength of the electric field in V/Angstrom. - :return: List representing the ExternalElectricField block for the specified axis and strength. - """ - if efield_coord == 'x': - return [[efield_strenght, 0.0, 0.0, 'V/Ang']] - elif efield_coord == 'y': - return [[0.0, efield_strenght, 0.0, 'V/Ang']] - elif efield_coord == 'z': - return [[0.0, 0.0, efield_strenght, 'V/Ang']] - else: - print("Problem composing block_ExternalElectricField") - print("Exiting") - sys.exit(0) - - -def copy_pseudopotentials_from_directory(elements, subfolder_name_orig, subfolder_name_dest): - import shutil - # Check if the subfolder_name_orig exits and is a valid path - if subfolder_name_orig is None: - print(subfolder_name_orig + " folder is not set.") - exit(1) - elif not os.path.exists(subfolder_name_orig): - print(f"Path '{subfolder_name_orig}' specified in subfolder_name_orig does not exist.") - exit(1) - - # Check if the subfolder_name_dest exits and is a valid path - if subfolder_name_dest is None: - print(subfolder_name_dest + " folder is not set.") - exit(1) - elif not os.path.exists(subfolder_name_orig): - print(f"Path '{subfolder_name_dest}' specified in subfolder_name_dest does not exist.") - exit(1) - - try: - # Copy the file from source_path to destination_path - for elem in elements: - shutil.copy(subfolder_name_orig + '/' + elem + '.psf', subfolder_name_dest) - # print("File copied successfully!") - except Exception as e: - print("An error occurred while copying the file:", e) - - -# def copy_pseudopotentials_from_environmental_variable(elements, subfolder_name): -# import shutil -# # Get the path from the environmental variable -# source_path = os.getenv('SIESTA_PSEUDOPOTENTIALS') -# -# # Check if the environmental variable is set and contains a valid path -# if source_path is None: -# print("Environmental variable SOURCE_PATH is not set.") -# exit(1) -# elif not os.path.exists(source_path): -# print(f"Path '{source_path}' specified in SOURCE_PATH does not exist.") -# exit(1) -# -# try: -# # Copy the file from source_path to destination_path -# for elem in elements: -# shutil.copy(source_path + '/' + elem + '.psf', subfolder_name) -# # print("File copied successfully!") -# except Exception as e: -# print("An error occurred while copying the file:", e) - - -def create_efield_folders(efields, species, subfolder_name_orig ): - """ - Creates directories for different electric field configurations and generates necessary SIESTA input files. - - :param efields: List of electric field strengths to be applied. - :param species: List of atomic species involved in the simulation. - :param subfolder_name_orig: folder from where pseudopotential will be copied - :return: List of created folder names. - """ - folder_list = [] - - for efield_strength in efields: - for efield_coord in ('x', 'y', 'z'): - # Construct the subfolder name - subfolder_name = base_folder+'/'+input_file.split('/')[-1][:-4] + '_E_' + str(efield_strength) + efield_coord + '/' - print("Creating", subfolder_name) - - # Add the subfolder name to the list - folder_list.append(subfolder_name) - - # Create the directory - os.makedirs(subfolder_name, exist_ok=True) - - # Update SIESTA parameters - siesta_params['Slab.DipoleCorrection'] = 'True' - siesta_params['ExternalElectricField'] = composed_block_ExternalElectricField(efield_coord, efield_strength) - - # Write SIESTA input file and coordinates file - generate_text(siesta_params, folder=subfolder_name) - write_coordinates('siesta.dat', species, coordinates, folder=subfolder_name) - - # Copy pseudopotential files for each species - for specie in species: - copy_pseudopotentials_from_directory(specie, subfolder_name_orig=subfolder_name_orig, - subfolder_name_dest=subfolder_name) - - return folder_list - - -pseudopot_dir = "../files/pseudopotentials/" -# Define SIESTA parameters -siesta_params = get_siesta_default_params() -input_file = sys.argv[1] -base_folder= input_file.split('/')[-1][:-4] -os.makedirs(base_folder, exist_ok=True) - -species, coordinates, species_list = compose_basic_params_and_blocks(input_file) -efields = [0.01, 0.02, -0.01, -0.02] -create_efield_folders(efields, species, pseudopot_dir) - -# FILE_LIST=all.dat -# while IFS= read -r file_name; do python /home/alopezb/lanl/materials/DWave/bethe/bethe.py/sdc_siesta.py molecules_c40_xyz/$file_name ; done < "$FILE_LIST" - - - - -# Generate the Bash for loop -# bash_for_loop = "" -# for folder_name in folder_list: -# bash_for_loop += f"cd {folder_name} && command_to_execute && cd ..\n" -# -# print(bash_for_loop) -# block_PolarizationGrids = [[20, 4, 4, 'yes'], [4, 20, 4, 'yes'], [4, 4, 20, 'yes']] -# siesta_params['PolarizationGrids'] = block_PolarizationGrids diff --git a/parameters/dftb/sdc_sqlite.py b/parameters/dftb/sdc_sqlite.py deleted file mode 100644 index c16d198a..00000000 --- a/parameters/dftb/sdc_sqlite.py +++ /dev/null @@ -1,670 +0,0 @@ -import sqlite3, os -import sys - -import numpy as np - - -# Function to execute an SQL query and return results avoiding duplicating code. -def execute_query(db_name, query, params=None): - """ - Execute a SQL query on the database. - - Args: - db_name (str): The name of the SQLite database. - query (str): The SQL query to execute. - params (tuple, optional): Parameters to pass to the query. - - Returns: - list: The result of the query. - """ - conn = None - try: - conn = sqlite3.connect(db_name) - c = conn.cursor() - - if params: - c.execute(query, params) - else: - c.execute(query) - - result = c.fetchall() if c.description else None - return result - except sqlite3.Error as e: - print("Error executing query:", e) - return None - finally: - if conn: - conn.close() - - -def get_column_names(table_name, db_name): - query = f"PRAGMA table_info({table_name})" - columns = execute_query(db_name, query) - - # Extract column names from the fetched data - column_names = [column[1] for column in columns] - return column_names - - -# Function to get column names for all tables in the database -def get_all_table_column_names(db_name): - conn = None - try: - conn = sqlite3.connect(db_name) - c = conn.cursor() - - # Get table names in the database - c.execute("SELECT name FROM sqlite_master WHERE type='table'") - table_names = c.fetchall() - - table_column_names = {} - - # Iterate over table names and get column names for each table - for table in table_names: - table_name = table[0] - # column_names = get_column_names(table_name, db_name) #instead of opening a new conn - - c.execute(f"PRAGMA table_info({table_name})") - columns = c.fetchall() - column_names = [column[1] for column in columns] # Extract column names from the fetched data - table_column_names[table_name] = column_names - - conn.close() - - return table_column_names - except sqlite3.Error as e: - print("Error get_all_table_column_names function", e) - return None - finally: - if conn: - conn.close() - - -# Function to extract dipole (in Debye) from output.txt using grep -def extract_dipole(file_path): - import subprocess - output = subprocess.getoutput(' grep dipol ' + file_path + ' |head -1') - return tuple(map(float, output.split()[-3:])) - - -# Function to extract dipole moments -def get_all_dipole_moments(db_name): - """ - Retrieve all dipole moments from the database. - - Returns: - numpy.ndarray: An array containing all dipole moments stored in the database. - """ - query = "SELECT dipole_x, dipole_y, dipole_z FROM Molecule" - dipole_data = execute_query(db_name, query) - if dipole_data: - return np.array(dipole_data) - else: - return np.array([]) - - -# Function to read atomic positions and species from molecule.xyz -def read_xyz(file_path): - with open(file_path, 'r') as file: - lines = file.readlines() - num_atoms = int(lines[0]) - atomic_data = [line.split() for line in lines[2:]] - species = [data[0] for data in atomic_data] - atomic_positions = [list(map(float, data[1:])) for data in atomic_data] - return num_atoms, species, atomic_positions - - -# Function to read Born charges from molecule.BC file -def read_born_charges(file_path): - try: - with open(file_path, 'r') as file: - next(file) # Skip the first line - bq = [list(map(float, line.split())) for line in file] - born_charges = [bq[i:i + 3] for i in range(0, len(bq), 3)] - return born_charges - except Exception as e: - print("Error reading born charges:", e) - return None - - -# Function to read forces from molecule.FA file -def read_forces(file_path): - with open(file_path, 'r') as file: - num_atoms = int(next(file)) # Read the number of atoms - forces = [tuple(map(float, line.split()[1:])) for line in file] - return forces - - -# Function to create a SQLite3 database and insert data -def create_database(db_name, folders): - conn = sqlite3.connect(db_name) - c = conn.cursor() - - # Create tables - c.execute('''CREATE TABLE IF NOT EXISTS Molecule ( - id INTEGER PRIMARY KEY, - name TEXT, - num_atoms INTEGER, - dipole_x REAL, - dipole_y REAL, - dipole_z REAL)''') - - c.execute('''CREATE TABLE IF NOT EXISTS Atom ( - id INTEGER PRIMARY KEY, - molecule_id INTEGER, - atom_number INTEGER, - species TEXT, - x REAL, - y REAL, - z REAL, - force_x REAL, - force_y REAL, - force_z REAL, - born_charge_xx REAL, - born_charge_xy REAL, - born_charge_xz REAL, - born_charge_yx REAL, - born_charge_yy REAL, - born_charge_yz REAL, - born_charge_zx REAL, - born_charge_zy REAL, - born_charge_zz REAL, - FOREIGN KEY(molecule_id) REFERENCES Molecule(id))''') - - # Insert data - for folder in folders: - molecule_name = folder.split('_')[1] - print(molecule_name) - xyz_file = os.path.join(folder, 'molecule.xyz') - born_charges_file = os.path.join(folder, 'molecule.BC') - forces_file = os.path.join(folder, 'molecule.FA') - output_file = os.path.join(folder, 'output.txt') - try: - - # Extract data - num_atoms, species, atomic_positions = read_xyz(xyz_file) - # born_charges = np.reshape(read_born_charges(born_charges_file), (num_atoms, 9)) - born_charges = read_born_charges(born_charges_file) - forces = read_forces(forces_file) - dipole = extract_dipole(output_file) - - # Insert into Molecule table - c.execute("INSERT INTO Molecule (name, num_atoms, dipole_x, dipole_y, dipole_z) VALUES (?, ?, ?, ?, ?)", - (molecule_name, num_atoms, dipole[0], dipole[1], dipole[2])) - molecule_id = c.lastrowid - - for i, (species_info, atom_position, born_charge, force) in enumerate( - zip(species, atomic_positions, born_charges, forces), 1): - c.execute( - "INSERT INTO Atom (molecule_id, atom_number, species, x, y, z, force_x, force_y, force_z, " - "born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz," - "born_charge_zx,born_charge_zy,born_charge_zz) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " - "?, ?, ?, ?)", - (molecule_id, i, species_info, atom_position[0], atom_position[1], atom_position[2], - force[0], force[1], force[2], born_charge[0][0], born_charge[0][1], born_charge[0][2], - born_charge[1][0], born_charge[1][1], born_charge[1][2], born_charge[2][0], born_charge[2][1], - born_charge[2][2])) - - # print(atomic_positions) - # Insert into Atom table - # for i, (species_info, atom_position, born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz, born_charge_zx,born_charge_zy,born_charge_zz, force) in enumerate( - # zip(species, atomic_positions, born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz, born_charge_zx,born_charge_zy,born_charge_zz, forces), 1): - # c.execute( - # "INSERT INTO Atom (molecule_id, atom_number, species, x, y, z, force_x, force_y, force_z, " - # "born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz," - # "born_charge_zx,born_charge_zy,born_charge_zz) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " - # "?, ?, ?, ?)", - # (molecule_id, i, species_info, atom_position[0], atom_position[1], atom_position[2], - # force[0], force[1], force[2], born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy,born_charge_yz,born_charge_zx,born_charge_zy,born_charge_zz)) - except Exception as e: - print(f"Error processing folder {folder}: {e}") - - conn.commit() - conn.close() - - -# Generic function to extract data from a specific molecule -def extract_data_from_molecule(db_name, molecule_name, query, *args): - """ - Extract data related to a specific molecule from the database. - - Args: - db_name (str): The name of the SQLite database. - molecule_name (str): The name of the molecule. - query (str): The SQL query to execute. - *args: Additional arguments to pass to the query. - - Returns: - tuple or list: The fetched data from the database. - """ - try: - data = execute_query(db_name, query, (molecule_name,) + args) - return data - except sqlite3.Error as e: - print("Error accessing database:", e) - - -def extract_atomic_positions_of_molecule(db_name, molecule_name): - """ - Extract atomic positions of all atoms in a specific molecule from the database. - - Args: - db_name (str): The name of the SQLite database. - molecule_name (str): The name of the molecule. - - Returns: - list: A list containing atomic positions for all atoms in the molecule. - """ - positions_query = ("SELECT x, y, z FROM Atom " - "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id WHERE Molecule.name=?") - - positions_data = execute_query(db_name, positions_query, (molecule_name,)) - if positions_data: - return positions_data - else: - return [] - - -# Function to extract born charges for all atoms in a specific molecule -def extract_born_charges_of_molecule1(db_name, molecule_name): - """ - Extract born charges for all atoms in a specific molecule from the database. - - Args: - db_name (str): The name of the SQLite database. - molecule_name (str): The name of the molecule. - - Returns: - list: A list containing born charges for all atoms in the molecule. - """ - - # Get molecule ID - q1 = "SELECT id FROM Molecule WHERE name=?", (molecule_name,) - molecule_id = execute_query(db_name, q1, (molecule_name,)) - q1 = "SELECT num_atoms FROM Molecule WHERE id=?", (molecule_id,) - num_atoms = execute_query(db_name, q1, (molecule_name,)) - - born_charges_data = execute_query(db_name, born_charges_query, (molecule_name,)) - if born_charges_data: - return born_charges_data - else: - return [] - - -def extract_born_charges_of_molecule(db_name, molecule_name): - """ - Extract born charges for all atoms in a specific molecule from the database. - - Args: - db_name (str): The name of the SQLite database. - molecule_name (str): The name of the molecule. - - Returns: - list: A list containing born charges for all atoms in the molecule. - """ - born_charges_query = ("SELECT born_charge_xx,born_charge_xy,born_charge_xz,born_charge_yx,born_charge_yy," - "born_charge_yz, born_charge_zx,born_charge_zy,born_charge_zz FROM Atom " - "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id WHERE Molecule.name=?") - - born_charges_data = execute_query(db_name, born_charges_query, (molecule_name,)) - if born_charges_data: - return born_charges_data - else: - return [] - - -# regression_testing function -def regression_testing(): - db_name = 'molecules.db' - molecule_name = '5' - - # Example usage: Retrieve dipole moment from a specific molecule - dipole_query = "SELECT dipole_x, dipole_y, dipole_z FROM Molecule WHERE name=?" - dipole_data = extract_data_from_molecule(db_name, molecule_name, dipole_query) - print(f"Dipole moment of molecule {molecule_name}: {dipole_data}") - - # Example usage: Retrieve forces from a specific atom in a specific molecule - atom_number = 1 - forces_query = ("SELECT force_x, force_y, force_z FROM Atom INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " - "WHERE Molecule.name=? AND Atom.atom_number=?") - forces_data = extract_data_from_molecule(db_name, molecule_name, forces_query, atom_number) - print(f"Forces on atom {atom_number} in molecule {molecule_name}: {forces_data}") - - # Retrieve atomic position of a specific atom in a specific molecule - position_query = ("SELECT x, y, z FROM Atom INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " - "WHERE Molecule.name=? AND Atom.atom_number=?") - position_data = extract_data_from_molecule(db_name, molecule_name, position_query, atom_number) - print(f"Atomic position of atom {atom_number} in molecule {molecule_name}: {position_data}") - - # Retrieve all atomic positions in a specific molecule - positions_data = extract_atomic_positions_of_molecule(db_name, molecule_name) - print(f"Atomic positions of all atoms in molecule {molecule_name}: {positions_data}") - - # Retrieve all born_charges in a specific molecule - born_charges_data = extract_born_charges_of_molecule(db_name, molecule_name) - print(f"Born_charges of all atoms in molecule {molecule_name}: {born_charges_data}") - - # retriev bond lengths for a given molecule - bond_lengths_matrix = calculate_bond_lengths_for_molecule(db_name, "2") - print("Bond Lengths Matrix:") - for v in bond_lengths_matrix: print(v) - - # Calculate statistics of all mag. mom. aligned along z - dipole_moments = get_all_dipole_moments(db_name) - rotated_dipoles = rotate_dipoles_to_z_axis(dipole_moments) - analyze_dipole_moments(rotated_dipoles, db_name) - - # Get info about the column name of a table (Atom) - d = get_column_names("Atom", db_name) - for v in d: print(v) - - # Get info about a molecule - d = extract_molecule_data(db_name, "2") - for v in d: print(v, d[v]) - - -def analyze_dipole_moments(dipoles, db_name): - dipole_array = get_all_dipole_moments(db_name) - - # Calculate statistics - dipole_mean = np.mean(dipole_array, axis=0) - dipole_median = np.median(dipole_array, axis=0) - dipole_std = np.std(dipole_array, axis=0) - # dipole_mean, dipole_median, dipole_std = analyze_dipole_moments(db_name) - print("Dipole moment statistics:") - print("Mean:", dipole_mean) - print("Median:", dipole_median) - print("Standard Deviation:", dipole_std) - - -# Function to calculate bond lengths between pairs of atoms -def calculate_bond_lengths(positions): - num_atoms = len(positions) - bond_lengths = [] - - for i in range(num_atoms): - for j in range(i + 1, num_atoms): - distance = np.linalg.norm(positions[i] - positions[j]) - bond_lengths.append((i, j, distance)) - - return bond_lengths - - -# Function to extract positions of atoms for each molecule from the database -def extract_positions_for_molecule(db_name, molecule_name): - """ - Extract atomic positions for a specific molecule from the database. - - Args: - db_name (str): The name of the SQLite database. - molecule_name (str): The name of the molecule. - - Returns: - numpy.ndarray: Array containing atomic positions for the molecule. - """ - query = ("SELECT x, y, z FROM Atom " - "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " - "WHERE Molecule.name=?") - positions = execute_query(db_name, query, (molecule_name,)) - return np.array(positions) - - -# Function to calculate bond lengths for each molecule -def calculate_bond_lengths_for_molecule(db_name, molecule_name): - # Extract positions of atoms for the molecule - positions = extract_positions_for_molecule(db_name, molecule_name) - # Calculate bond lengths - return calculate_bond_lengths(positions) - - -# Function to calculate bond angles between sets of three atoms -def calculate_bond_angles(positions): - num_atoms = len(positions) - bond_angles = [] - - for i in range(num_atoms): - for j in range(num_atoms): - for k in range(num_atoms): - if i != j and i != k and j != k: - vec_ij = positions[i] - positions[j] - vec_kj = positions[k] - positions[j] - angle = np.arccos(np.dot(vec_ij, vec_kj) / (np.linalg.norm(vec_ij) * np.linalg.norm(vec_kj))) - bond_angles.append((i, j, k, np.degrees(angle))) - - return bond_angles - - -# Function to calculate dihedral angles between sets of four atoms -def calculate_dihedral_angles(positions): - num_atoms = len(positions) - dihedral_angles = [] - - for i in range(num_atoms): - for j in range(num_atoms): - for k in range(num_atoms): - for l in range(num_atoms): - if len({i, j, k, l}) == 4: # Ensure all atoms are distinct - vec_ij = positions[i] - positions[j] - vec_jk = positions[j] - positions[k] - vec_kl = positions[k] - positions[l] - - normal_ijk = np.cross(vec_ij, vec_jk) - normal_jkl = np.cross(vec_jk, vec_kl) - - angle = np.arccos(np.dot(normal_ijk, normal_jkl) / - (np.linalg.norm(normal_ijk) * np.linalg.norm(normal_jkl))) - - # Determine sign of the angle based on the sign of the dot product - sign = np.sign(np.dot(normal_ijk, vec_kl)) - - dihedral_angle = np.degrees(angle) * sign - dihedral_angles.append((i, j, k, l, dihedral_angle)) - - return dihedral_angles - - -# Function to extract data from a molecule folder -def extract_molecule_data(db_name, molecule_name): - """ - Extract data for a molecule from the database. - - Args: - db_name (str): The name of the SQLite database. - molecule_name (str): The name of the molecule to extract data for. - - Returns: - dict: A dictionary containing information about the molecule, including its name, atomic positions, - Born charges, and dipole moment. - """ - # Extract molecule name from folder name - molecule_data = {'name': molecule_name} - - # Define SQL queries - atom_query = ("SELECT species, x, y, z FROM Atom " - "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " - "WHERE Molecule.name=?") - born_charge_query = ("SELECT born_charge_x, born_charge_y, born_charge_z FROM Atom " - "INNER JOIN Molecule ON Atom.molecule_id = Molecule.id " - "WHERE Molecule.name=?") - dipole_query = "SELECT dipole_x, dipole_y, dipole_z FROM Molecule WHERE name=?" - - # Execute SQL queries - atom_records = execute_query(db_name, atom_query, (molecule_name,)) - born_charge_records = execute_query(db_name, born_charge_query, (molecule_name,)) - dipole_record = execute_query(db_name, dipole_query, (molecule_name,)) - - # Process fetched data - atoms = [{'species': record[0], 'x': record[1], 'y': record[2], 'z': record[3]} for record in atom_records] - dipole = {'x': dipole_record[0][0], 'y': dipole_record[0][1], 'z': dipole_record[0][2]} if dipole_record else None - born_charges = [{'x': record[0], 'y': record[1], 'z': record[2]} for record in born_charge_records] - - # Populate molecule_data dictionary - molecule_data['atoms'] = atoms - molecule_data['born_charges'] = born_charges - molecule_data['dipole'] = dipole - - return molecule_data - - -def insert_new_molecule_data(db_name, molecule_name, num_atoms, dipole, atomic_positions, species, born_charges, - forces): - conn = sqlite3.connect(db_name) - c = conn.cursor() - - try: - # Insert into Molecule table - c.execute("INSERT INTO Molecule (name, num_atoms, dipole_x, dipole_y, dipole_z) VALUES (?, ?, ?, ?, ?)", - (molecule_name, num_atoms, dipole[0], dipole[1], dipole[2])) - molecule_id = c.lastrowid - - # Insert into Atom table - for i, (species_info, atom_position, born_charge, force) in enumerate( - zip(species, atomic_positions, born_charges, forces), 1): - c.execute( - "INSERT INTO Atom (molecule_id, atom_number, species, x, y, z, force_x, force_y, force_z, " - "born_charge_xx, born_charge_xy, born_charge_xz, born_charge_yx, born_charge_yy, born_charge_yz, " - "born_charge_zx, born_charge_zy, born_charge_zz) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", - (molecule_id, i, species_info, atom_position[0], atom_position[1], atom_position[2], - force[0], force[1], force[2], born_charge[0][0], born_charge[0][1], born_charge[0][2], - born_charge[1][0], born_charge[1][1], born_charge[1][2], born_charge[2][0], born_charge[2][1], - born_charge[2][2])) - - conn.commit() - print(f"Data for molecule '{molecule_name}' inserted successfully!") - except Exception as e: - conn.rollback() - print(f"Error inserting data for molecule '{molecule_name}': {e}") - finally: - conn.close() - - -# Function to check if a molecule exists in the database -def molecule_exists_in_database(db_name, molecule_name): - """ - Check if a molecule exists in the database. - - Args: - db_name (str): The name of the SQLite database. - molecule_name (str): The name of the molecule to check. - - Returns: - bool: True if the molecule exists in the database, False otherwise. - """ - query = "SELECT COUNT(*) FROM Molecule WHERE name=?" - result = execute_query(db_name, query, (molecule_name,)) - count = result[0][0] if result else 0 - return count > 0 - - -def print_table_column_names(): - table_column_names = get_all_table_column_names(db_name) - for table_name, column_names in table_column_names.items(): - print(f"Table: {table_name}") - print("Columns:", column_names) - - -def rotate_dipoles_to_z_axis(dipole_moments): - rotated_dipoles = [] - - for dipole in dipole_moments: - # Compute magnitude of dipole moment - magnitude = np.linalg.norm(dipole) - - # Find largest component and corresponding index - max_index = np.argmax(np.abs(dipole)) - - # Compute rotation angle - if max_index == 0: # x-component is largest - angle = np.arctan2(dipole[1], dipole[0]) - elif max_index == 1: # y-component is largest - angle = np.arctan2(dipole[0], dipole[1]) - np.pi / 2 - else: # z-component is largest, no rotation needed - angle = 0 - - # Create rotation matrix - rotation_matrix = np.array([[np.cos(angle), -np.sin(angle), 0], - [np.sin(angle), np.cos(angle), 0], - [0, 0, 1]]) - - # Rotate dipole moment - rotated_dipole = np.dot(rotation_matrix, dipole / magnitude) * magnitude - rotated_dipoles.append(rotated_dipole) - - return rotated_dipoles - - -def compute_born_charges_from_FA_files(prefix, field, force_filename, print_charges=0): - # Define directories - dirsp = [prefix + str(field) + 'x', prefix + str(field) + 'y', prefix + str(field) + 'z'] - dirsm = [prefix + str(field * -1) + 'x', prefix + str(field * -1) + 'y', prefix + str(field * -1) + 'z'] - # Read forces from files - forces_pos = [read_forces(v + '/' + force_filename) for v in dirsp] - forces_minus = [read_forces(v + "/" + force_filename) for v in dirsm] - charges = [] - for j in range(len(forces_minus[0])): - charges_atomk = [] - # Compute charges for each atom - for k in range(3): - charges_atomk.append([(forces_pos[i][j][k] - forces_minus[i][j][k]) / (2 * field) for i in range(3)]) - if print_charges: print( - '{:,d}\t {:,.3f}\t {:,.3f}\t {:,.3f} '.format(j+1, charges_atomk[k][0], charges_atomk[k][1], - charges_atomk[k][2])) - if print_charges: print('') - charges.append(charges_atomk) - return charges - - -def compute_born_charges_from_FA_files_highOrder(prefix, field1, field2, force_filename, print_charges=0): - # Define directories - dirsp1 = [prefix + str(field1) + 'x', prefix + str(field1) + 'y', prefix + str(field1) + 'z'] - dirsm1 = [prefix + str(field1 * -1) + 'x', prefix + str(field1 * -1) + 'y', prefix + str(field1 * -1) + 'z'] - dirsp2 = [prefix + str(field2) + 'x', prefix + str(field2) + 'y', prefix + str(field2) + 'z'] - dirsm2 = [prefix + str(field2 * -1) + 'x', prefix + str(field2 * -1) + 'y', prefix + str(field2 * -1) + 'z'] - - # Read forces from files - forces_pos1 = [read_forces(v + '/' + force_filename) for v in dirsp1] - forces_minus1 = [read_forces(v + "/" + force_filename) for v in dirsm1] - forces_pos2 = [read_forces(v + '/' + force_filename) for v in dirsp2] - forces_minus2 = [read_forces(v + "/" + force_filename) for v in dirsm2] - - charges = [] - for j in range(len(forces_minus1[0])): - charges_atomk = [] - # Compute charges for each atom - for k in range(3): - charges_atomk.append([(-1.0 / 12 * forces_pos2[i][j][k] + 2.0 / 3 * forces_pos1[i][j][k] - 2.0 / 3 * - forces_minus1[i][j][k] + 1.0 / 12 * forces_minus2[i][j][k]) / (1 * field1) for i in - range(3)]) - if print_charges: print( - '{:,d}\t {:,.3f}\t {:,.3f}\t {:,.3f} '.format(j+1, charges_atomk[k][0], charges_atomk[k][1], - charges_atomk[k][2])) - if print_charges: print('') - charges.append(charges_atomk) - return charges - - -if __name__ == "__main__": - db_name = 'molecules2.db' - # molecule_folders = [f for f in os.listdir('.') if os.path.isdir(f) and f.startswith('molecule_')] - # molecule_folders = ["molecule_149"] - # create_database(db_name, molecule_folders) - # regression_testing() - # d = extract_born_charges_of_molecule(db_name, "149") - # print(d) - # print(extract_molecule_data(db_name,"2")) - # print_table_column_names() - - # TEST: - # insert_new_molecule_data(db_name, molecule_name, num_atoms, dipole, atomic_positions, species, born_charges, forces) - # insert_new_molecule_data( - # update_database_with_new_molecules(db_name, molecule_folders) - # bond_angles = calculate_bond_angles(positions) - # dihedral_angles = calculate_dihedral_angles(positions) - # prefix = "C100-C1-10_E_" - # prefix = "C40-C1-4_E_" - prefix = "molecule_E_" - field1, field2 = 0.01, 0.02 - force_file_name = 'molecule.FA' - - charges = compute_born_charges_from_FA_files(prefix, field2, force_file_name, print_charges=1) - # charges = compute_born_charges_from_FA_files_highOrder(prefix, field1, field2, force_file_name, print_charges=1) diff --git a/parameters/gpmd_interface_example/H2O.pdb b/parameters/gpmd_interface_example/H2O.pdb deleted file mode 100644 index c7a2b2c5..00000000 --- a/parameters/gpmd_interface_example/H2O.pdb +++ /dev/null @@ -1,9 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE H2Oc.pdb -CRYST1 100.530 100.530 100.530 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 O HOH 1 50.077 50.084 50.265 0.00 0.00 O -ATOM 2 H HOH 0 49.659 50.945 50.265 0.00 0.00 H -ATOM 3 H HOH 0 51.058 49.765 50.265 0.00 0.00 H -TER -END diff --git a/parameters/gpmd_interface_example/README.md b/parameters/gpmd_interface_example/README.md deleted file mode 100644 index f6a65751..00000000 --- a/parameters/gpmd_interface_example/README.md +++ /dev/null @@ -1,15 +0,0 @@ -Example of GPMD code call from python -===================================== - - -Instructions: - - - Clone BML and PROGRESS repositories by using the `clone_all_codes.sh` script. - - Use the scripts to build BML (`buil_bml.sh`) followed by PROGRESS (`build_progress.sh`). - - - - Run as follows: - - mpirun -np python main_mpi.py - - diff --git a/parameters/gpmd_interface_example/build_bml.sh b/parameters/gpmd_interface_example/build_bml.sh deleted file mode 100644 index e2719e52..00000000 --- a/parameters/gpmd_interface_example/build_bml.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# Make sure all the paths are correct - - -MY_PATH=$(pwd) -export CC=${CC:=gcc} -export FC=${FC:=gfortran} -export CXX=${CXX:=g++} -export MAGMA_ROOT=${MAGMA_ROOT:="${HOME}/magma"} -export BLAS_VENDOR=${BLAS_VENDOR:=OpenBLAS} -export BML_OPENMP=${BML_OPENMP:=yes} -export BML_CUDA=${BML_CUDA:=no} -export BML_MAGMA=${BML_MAGMA:=no} -export BML_CUSOLVER=${BML_CUSOLVER:=no} -export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:=yes} -export INSTALL_DIR=${INSTALL_DIR:="${MY_PATH}/bml/install"} -export BML_TESTING=${BML_TESTING:=yes} -export CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:=Release} -export EXTRA_CFLAGS=${EXTRA_CFLAGS:="-g -O0 -lm -fPIC"} -export EXTRA_LINK_FLAGS=${EXTRA_LINK_FLAGS:="-lm -fPIC "} - -cd bml; ./build.sh configure; cd build; make -j; make install cd $MY_PATH diff --git a/parameters/gpmd_interface_example/build_cmake.sh b/parameters/gpmd_interface_example/build_cmake.sh deleted file mode 100644 index 5744591a..00000000 --- a/parameters/gpmd_interface_example/build_cmake.sh +++ /dev/null @@ -1,30 +0,0 @@ -THIS_PATH=`pwd` -METIS_LIB="$HOME/metis-5.1.0/build/Linux-x86_64/libmetis" -METIS_INC="$HOME/metis-5.1.0/build/Linux-x86_64/include" -PROGRESS_LIB="$THIS_PATH/qmd-progress/install/" -PROGRESS_INC="$THIS_PATH/qmd-progress/install/include" -BML_LIB="$THIS_PATH/bml/install/" -BML_INC="$THIS_PATH/bml/install/include" -cd ./qmd-progress/examples/gpmdk/ -rm -rf build -mkdir build -cd build - -# cmake using specified flags: -# Update the -L flag in "-DEXTRA_FCFLAGS" to point to the location of metis and GKlib libraries -# Update the "-DCMAKE_PREFIX_PATH" locations to point to the "install" directories of bml and qmd-progress as well as the general location of metis and GKlib -#cmake -DCMAKE_Fortran_COMPILER="gfortran" -DPROGRESS_MPI="no" \ -# -DEXTRA_FCFLAGS="-Wall -Wunused -fopenmp -lm -fPIC -g -O0 -fcheck=all --check=bounds -lbml -lbml_fortran -L$BML_LIB/lib64 -L$METIS_LIB -lprogress -L$PROGRESS_LIB/lib64 -lmetis -I$METIS_INC -I$PROGRESS_INC -I$BML_INC -lm -fPIC" \ -# -DLIB="yes" -DLATTE="no" -DLATTE_PREC="DOUBLE" -DLATTE_DIR="/home/cnegre/LATTE/" \ -# -DCMAKE_PREFIX_PATH="$PROGRESS_LIB;$PROGRESS_INC;$BML_LIB;$BML_INC;$METIS_LIB;$METIS_INC" ../src/ -#make - -cmake -DCMAKE_Fortran_COMPILER="gfortran" -DPROGRESS_MPI="no" \ - -DEXTRA_FCFLAGS="-Wall -Wunused -fopenmp -lm -fPIC -g -O0 -fcheck=all --check=bounds -lmetis -lm -fPIC" \ - -DLIB="yes" -DLATTE="no" -DLATTE_PREC="DOUBLE" -DLATTE_DIR="" \ - -DCMAKE_PREFIX_PATH="$PROGRESS_LIB;$PROGRESS_INC;$BML_LIB;$BML_INC;$METIS_LIB;$METIS_INC" ../src/ -make - - - - diff --git a/parameters/gpmd_interface_example/build_progress.sh b/parameters/gpmd_interface_example/build_progress.sh deleted file mode 100644 index 114d8bf0..00000000 --- a/parameters/gpmd_interface_example/build_progress.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Make sure all the paths are correct - - -rm -r build -rm -r install - -# Set METIS and BML Library locations -METIS_LIB="$HOME/metis-5.1.0/build/Linux-x86_64/libmetis" -METIS_INC="$HOME/metis-5.1.0/build/Linux-x86_64/include" - -MY_PATH=`pwd` - -BML_LIB="$MY_PATH/bml/install" - -cd qmd-progress - -export CC=${CC:=gcc} -export FC=${FC:=gfortran} -#export FC=${FC:=/usr/bin/mpif90} -export CXX=${CXX:=g++} -export PROGRESS_OPENMP=${PROGRESS_OPENMP:=yes} -export INSTALL_DIR=${INSTALL_DIR:="${MY_PATH}/qmd-progress/install"} -export PROGRESS_GRAPHLIB=${PROGRESS_GRAPHLIB:=no} -export PROGRESS_TESTING=${PROGRESS_TESTING:=yes} -export PROGRESS_MPI=${PROGRESS_MPI:=no} -export PROGRESS_BENCHMARKS=${PROGRESS_BENCHMARKS:=yes} -export CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:=Release} -export PROGRESS_EXAMPLES=${PROGRESS_EXAMPLES:=no} -export CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH:=$BML_LIB} -export BML_PREFIX_PATH=${BML_PREFIX_PATH:=$BML_LIB} -export EXTRA_FCFLAGS=${EXTRA_FCFLAGS:="-g -O0 -lm -fPIC"} -export EXTRA_LINK_FLAGS=${EXTRA_LINK_FLAGS:="-lm -fPIC"} -export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:=yes} -./build.sh configure ; cd build ; make install - - diff --git a/parameters/gpmd_interface_example/clone_all_codes.sh b/parameters/gpmd_interface_example/clone_all_codes.sh deleted file mode 100644 index 5c81511f..00000000 --- a/parameters/gpmd_interface_example/clone_all_codes.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -e -rm -rf bml; git clone -b hackathon git@github.com:lanl/bml.git -rm -rf qmd-progress; git clone -b hackathon git@github.com:lanl/qmd-progress.git - diff --git a/parameters/gpmd_interface_example/main_bch_dspl.py b/parameters/gpmd_interface_example/main_bch_dspl.py deleted file mode 100644 index 6fbd0c44..00000000 --- a/parameters/gpmd_interface_example/main_bch_dspl.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python3 - -import numpy as np -from sedacs.system import * -from sedacs.file_io import * -from sedacs.periodic_table import PeriodicTable -import ctypes as ct -import os -import scipy.linalg as sp -from gpmd import * - - -def get_displ_born_charges(latticeVectors,symbols,atomTypes,coordsIn,verb): - - nats = len(atomTypes) - bornDispl = np.zeros((nats,3,3)) - dspl = 1.0E-5 - field = np.zeros((3)) - coords = np.copy(coordsIn) - err,charges_out,forces_out,dipole_saved, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) - for j in range(nats): - coords[j,0] = coordsIn[j,0] + dspl - err,charges_out,forces_out,dipole_out_p, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) - coords[j,0] = coordsIn[j,0] - 2*dspl - err,charges_out,forces_out,dipole_out_m, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) - bornDispl[j,:,0] = (dipole_out_p - dipole_out_m)/(2*dspl) - coords[j,0] = coordsIn[j,0] + dspl - - for j in range(nats): - coords[j,1] = coordsIn[j,1] + dspl - err,charges_out,forces_out,dipole_out_p,energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) - coords[j,1] = coordsIn[j,1] - 2*dspl - err,charges_out,forces_out,dipole_out_m, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) - coords[j,1] = coordsIn[j,1] + dspl - bornDispl[j,:,1] = (dipole_out_p - dipole_out_m)/(2*dspl) - for j in range(nats): - coords[j,2] = coordsIn[j,2] + dspl - err,charges_out,forces_out,dipole_out_p, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) - coords[j,2] = coordsIn[j,2] - 2*dspl - err,charges_out,forces_out,dipole_out_m, energy = gpmd(latticeVectors,symbols,atomTypes,coords,field,verb) - coords[j,2] = coordsIn[j,2] + dspl - bornDispl[j,:,2] = (dipole_out_p - dipole_out_m)/(2*dspl) - - - bchMat = np.zeros((3,3)) - bornCharges = np.zeros((nats)) - for i in range(len(bornDispl[:,0,0])): - bchMat[:,:] = bornDispl[i,:,:] - E,Q = sp.eigh(bchMat) - bornCharges[i] = sum(E)/3.0 - - return bornCharges, bornDispl - - - -############################### -## Main starts here -############################### - -#****************************** -#Check forces with no Field -#****************************** -verb = 0 -#Load the coordinates and atom types -latticeVectors,symbols,atomTypes,coords0 = read_pdb_file("H2O.pdb",lib="None",verb=True) - -nats = len(atomTypes) -dspl = 0.00001 -field = np.zeros((3)) -field[0] = 0.0 - -#Get forces at coords0 -err,charges_out,forces0,dipole_out, energyp = gpmd(latticeVectors,symbols,atomTypes,coords0,field,verb) - -coordsP = np.copy(coords0) -coordsP[0,0] = coords0[0,0] + dspl -err,charges_out_pl,forces_out_pl,dipole_out, energyp = gpmd(latticeVectors,symbols,atomTypes,coordsP,field,verb) - -coordsM = np.copy(coords0) -coordsM[0,0] = coords0[0,0] - dspl -err,charges_out_pl,forces_out_pl,dipole_out, energym = gpmd(latticeVectors,symbols,atomTypes,coordsM,field,verb) - -print("Check: dE/dx,F",(energyp - energym)/(2*dspl),forces0[0,0]) -exit(0) -#****************************** -#Compute Born Charges using displacements -#****************************** - -bornChDiag,bornChargesDspl = get_displ_born_charges(latticeVectors,symbols,atomTypes,coords0,verb) - -for j in range(len(atomTypes)): - print("Atom index",j,"","Mulliquen Charges:",charges_out[j]) - print("Born Charges:\n",bornChargesDspl[j,:,:]) - - -exit(0) diff --git a/parameters/gpmd_interface_example/main_mpi.py b/parameters/gpmd_interface_example/main_mpi.py deleted file mode 100644 index c8d7f46c..00000000 --- a/parameters/gpmd_interface_example/main_mpi.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python3 - -import numpy as np -from sedacs.system import * -from sedacs.file_io import * -from sedacs.periodic_table import PeriodicTable -import ctypes as ct -import os -import scipy.linalg as sp -from gpmd import * -from sedacs.mpi import collect_and_sum_matrices - -MPI = None -try: - from mpi4py import MPI - - is_mpi_available = True -except ImportError: - is_mpi_available = False - - -############################### -## Main starts here -############################### - -if is_mpi_available: - comm = MPI.COMM_WORLD - rank = comm.Get_rank() - numranks = comm.Get_size() -else: - comm = None - rank = 0 - numranks = 1 - -#Folders with different set of params -folderName = "run"+str(rank) -my_path = os.getcwd() -new_path = my_path+"/"+folderName -os.chdir(new_path) -verb = 0 - -#Load the coordinates and atom types -latticeVectors,symbols,atomTypes,coords0 = read_coords_file("H2O.pdb",lib="None",verb=True) - -field = np.zeros((3)) - -#Get forces at coords0 with the params from folder "rank" -err,charges_out,forces0,dipole_out, energyp = gpmd(latticeVectors,symbols,atomTypes,coords0,field,verb) - diff --git a/parameters/gpmd_interface_example/main_optim_params.py b/parameters/gpmd_interface_example/main_optim_params.py deleted file mode 100644 index cb23b66a..00000000 --- a/parameters/gpmd_interface_example/main_optim_params.py +++ /dev/null @@ -1,612 +0,0 @@ -#!/usr/bin/env python3 -import sys - -import numpy as np -from sedacs.system import * -from sedacs.periodic_table import PeriodicTable -# from sdc_system import * -# from sdc_ptable import ptable -import ctypes as ct -import os -import scipy.linalg as sp -import sedacs.file_io as fileio -from scipy.optimize import minimize -from scipy import optimize -from gpmd import * -from datetime import datetime - - -#Run GPMD and get the total energy. -def get_energy(coords_in,lattiveVectors,atomTypes,symbols): - field = np.zeros((3)) - coords = coords_in.reshape(len(atomTypes),3) - err, charges_out, forces_saved, dipole_out, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) - with open("traj.xyz", 'a+') as line_file: - line_file.write((str(len(atomTypes))+ "\n")) - line_file.write(("t=")+"\n") - for i in range(len(atomTypes)): - line_file.write((symbols[atomTypes[i]] + " " + str(coords[i,0]) + " " + str(coords[i,1]) + " " + str(coords[i,2]) + "\n")) - - with open("energ.dat", 'a+') as line_file: - line_file.write(str(energy) + "\n") - - return energy - -def optimize_coordinates(lattiveVectors,types,symbols,coords,method='CG',parampath='/tmp',iterations=100,tol=0.01): - - coordsv = coords.reshape(-1) - result = minimize(get_energy, coordsv, args=(lattiveVectors,atomTypes,symbols), - method=method, jac=None, hess=None, hessp=None, - bounds=bounds, constraints=(), tol=0.001, callback=None, options={'maxiter': 100}) - -# bounds = np.zeros((len(coordsv), 2)) -# bounds[:, 0] = coordsv[:] -# bounds[:, 1] = coordsv[:] -# bounds[:, 0] = bounds[:, 0] - 5.1 -# bounds[:, 1] = bounds[:, 1] + 5.1 - -# dual_annealing(get_energy,bounds, args=(lattiveVectors,atomTypes,symbols), maxiter=1000, initial_temp=10.0, restart_temp_ratio=2e-05, visit=2.62, accept=-5.0, maxfun=10000000.0, seed=None, no_local_search=False, callback=None, x0=None) - -# result = optimize.anneal(get_energy, coordsv, args=(lattiveVectors,atomTypes,symbols), schedule='boltzmann', -# full_output=True, maxiter=500, lower=-10, -# upper=10, dwell=250, disp=True) - - return result.x - -def read_electfile_to_dict(filename): - with open(filename, 'r') as file: - file.readline() - lines = file.readlines() - - # Extract the headers (column names) - headers = lines[0].split() - - # Find the index where the second set of repeated headers starts (after the third column) - all_headers = headers - # Initialize a list to store all the dictionaries - dict_list = [] - - # Process the remaining lines to create dictionaries - for line in lines[1:]: - values = line.split() - - # Create a dictionary using headers as keys - # Convert numerical values (from the 4th column onward) to floats - data_dict = {all_headers[i]: (values[i] if i < 2 else float(values[i])) - for i in range(len(all_headers))} - - # Add the dictionary to the list - dict_list.append(data_dict) - - return dict_list - - -def read_ppotfile_to_dict(filename): - with open(filename, 'r') as file: - file.readline() - lines = file.readlines() - - # Extract the headers (column names) - headers = lines[0].split() - - # Find the index where the second set of repeated headers starts (after the third column) - all_headers = headers - # Initialize a list to store all the dictionaries - dict_list = [] - - # Process the remaining lines to create dictionaries - for line in lines[1:]: - values = line.split() - - # Create a dictionary using headers as keys - # Convert numerical values (from the 4th column onward) to floats - data_dict = {all_headers[i]: (values[i] if i < 2 else float(values[i])) - for i in range(len(all_headers))} - - # Add the dictionary to the list - dict_list.append(data_dict) - - return dict_list - - -def read_file_to_dict(filename): - with open(filename, 'r') as file: - file.readline() - lines = file.readlines() - - # Extract the headers (column names) - headers = lines[0].split() - - # Find the index where the second set of repeated headers starts (after the third column) - num_first_headers = 3 - first_set = headers[num_first_headers:num_first_headers + 8] # First set of H0, B1, etc. - second_set = [header + "_2" for header in first_set] # Rename second set - - # Combine the first 3 headers, first set of H0, B1, ..., and second set - all_headers = headers[:num_first_headers] + first_set + second_set - - # Initialize a list to store all the dictionaries - dict_list = [] - - # Process the remaining lines to create dictionaries - for line in lines[1:]: - values = line.split() - - # Create a dictionary using headers as keys - # Convert numerical values (from the 4th column onward) to floats - data_dict = {all_headers[i]: (values[i] if i < num_first_headers else float(values[i])) - for i in range(len(all_headers))} - - # Add the dictionary to the list - dict_list.append(data_dict) - - return dict_list - - -def get_dipole(coords, charges): - dipole = np.zeros(3) - - for i in range(len(charges)): - dipole[0] = dipole[0] + charges[i] * coords[i, 0] - dipole[1] = dipole[1] + charges[i] * coords[i, 1] - dipole[2] = dipole[2] + charges[i] * coords[i, 2] - - -def get_field_born_charges(latticeVectors, symbols, atomTypes, coords, verb): - field = np.zeros(3) - err, charges_out, forces_saved, dipole_out, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) - nats = len(atomTypes) - bornField = np.zeros((nats, 3, 3)) - for i in range(3): - field = np.zeros(3) - field[i] = -1.0E-4 - err, charges_out, forces_out, dipole_out, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) - bornField[:, :, i] = (forces_out - forces_saved) / np.linalg.norm(field) - - field = np.zeros(3) - field[i] = 1.0E-4 - err, charges_out, forces_out, dipole_out, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) - bornField[:, :, i] = (forces_out - forces_saved) / np.linalg.norm(field) - - bchMat = np.zeros((3, 3)) - bornCharges = np.zeros((nats)) - for i in range(len(bornField[:, 0, 0])): - bchMat[:, :] = bornField[i, :, :] - E, Q = sp.eigh(bchMat) - bornCharges[i] = sum(E) / 3.0 - - return bornCharges - - -def get_displ_born_charges(latticeVectors, symbols, atomTypes, coordsIn, verb): - nats = len(atomTypes) - bornDispl = np.zeros((nats, 3, 3)) - dspl = 1.0E-5 - field = np.zeros(3) - coords = np.copy(coordsIn) - err, charges_out, forces_out, dipole_saved, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, verb) - - # X-coords - for j in range(nats): - coords[j, 0] = coordsIn[j, 0] + dspl - err, charges_out, forces_out, dipole_out_p, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, - verb) - coords[j, 0] = coordsIn[j, 0] - dspl - err, charges_out, forces_out, dipole_out_m, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, - verb) - bornDispl[j, :, 0] = (dipole_out_p - dipole_out_m) / (2 * dspl) - - # Y-coords - for j in range(nats): - coords[j, 1] = coordsIn[j, 1] + dspl - err, charges_out, forces_out, dipole_out_p, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, - verb) - coords[j, 1] = coordsIn[j, 1] - dspl - err, charges_out, forces_out, dipole_out_m, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, - verb) - bornDispl[j, :, 1] = (dipole_out_p - dipole_out_m) / (2 * dspl) - - # Z-coords - for j in range(nats): - coords[j, 2] = coordsIn[j, 2] + dspl - err, charges_out, forces_out, dipole_out_p, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, - verb) - coords[j, 2] = coordsIn[j, 2] - dspl - err, charges_out, forces_out, dipole_out_m, energy = gpmd(latticeVectors, symbols, atomTypes, coords, field, - verb) - bornDispl[j, :, 2] = (dipole_out_p - dipole_out_m) / (2 * dspl) - - bchMat = np.zeros((3, 3)) - bornCharges = np.zeros((nats)) - for i in range(len(bornDispl[:, 0, 0])): - bchMat[:, :] = bornDispl[i, :, :] - E, Q = sp.eigh(bchMat) - bornCharges[i] = sum(E) / 3.0 - - return bornCharges, bornDispl - - -def get_forces_siesta(fname): - forces_siesta = [] - with open(fname) as f: - numlines = int(f.readline()) - for i in range(numlines): - l = f.readline().split() - forces_siesta.append([float(l[1]), float(l[2]), float(l[3])]) - forces_siesta = np.array(forces_siesta) - return forces_siesta - -#params_names, ppotparams_names,forces_siesta, all_integrals_SS,all_ppots -#params_values, params_names, forces_siesta, all_integrals - -def cost_function(params_names, ppotparams_names,forces_siesta, all_integrals_SS,all_ppots): - modif_CC_all_integrals(params_values, params_names, all_integrals) - modif_ppots(ppot_values, ppot_names, all_ppots) - modif_elect(elect_values, elect_names, all_elect) - err, charges, gpmd_forces, dipole, energy = gpmd(latticeVectors, symbols, atomTypes, coords0, field, verb) - sum_sq = [] - for gp, si in zip(forces_siesta, gpmd_forces): - sum_sq.append(np.linalg.norm(gp - si)) - total=sum( v*v for v in sum_sq) - print("total_cost", total) - # sys.exit() - return total - - -def cost_function2(all_values, int_names, ppot_names, elect_names, all_integrals, all_ppots, all_elect, - forces_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list - ): - nstr = len(coords_list) - nint = len(all_integrals) * len(int_names) - npp = len(all_ppots) * len(ppot_names) - nel = len(all_elect) * len(elect_names) - - int_values = [] * nint - ppot_values = [] * npp - elect_values = [] * nel - int_values[:] = all_values[0:nint] - ppot_values[:] = all_values[nint:nint + npp] - elect_values[:] = all_values[nint + npp:nint + npp + nel] - - modif_CC_all_integrals(int_values, params_names, all_integrals) - modif_ppots(ppot_values, ppot_names, all_ppots) - modif_elect(elect_values, elect_names, all_elect) - - nats = len(atomTypes_list[0]) - buffg = np.zeros((3 * nats)) - buffs = np.zeros((3 * nats)) - diffs_total = np.zeros((3 * nstr * nats)) - forcess = np.zeros((3 * nstr * nats)) - forcesg = np.zeros((3 * nstr * nats)) - - for istr in range(nstr): - nats = len(atomTypes_list[istr]) - latticeVectors = latticeVectors_list[istr] - symbols = symbols_list[istr] - atomTypes = atomTypes_list[istr] - coords0 = coords_list[istr] - forces_siesta = forces_siesta_list[istr] - - err, charges, gpmd_forces, dipole, energy = gpmd(latticeVectors, symbols, atomTypes, coords0, field, verb) - - for i in range(nats): - buffs[i * 3 + 0] = gpmd_forces[i, 0] - buffs[i * 3 + 1] = gpmd_forces[i, 1] - buffs[i * 3 + 2] = gpmd_forces[i, 2] - - buffg[i * 3 + 0] = forces_siesta[i, 0] - buffg[i * 3 + 1] = forces_siesta[i, 1] - buffg[i * 3 + 2] = forces_siesta[i, 2] - - forcess[istr * nats * 3:(istr + 1) * nats * 3] = buffs[:] - forcesg[istr * nats * 3:(istr + 1) * nats * 3] = buffg[:] - - diffs_total[:] = abs(forcess[:] - forcesg[:]) - - cost = (np.linalg.norm(diffs_total)) ** 2 - # print("gpmd",gpmd_forces) - # print("siesta",forces_siesta) - # print("reldif",(forces_siesta-gpmd_forces)/forces_siesta) - # exit(0) - - f = open("correl.dat", 'w') - for i in range(len(forcess)): - print(forcess[i], forcesg[i], file=f) - f.close() - f = open("correlP.dat", 'w') - cont = 0 - for i in range(nstr): - for j in range(nats): - for k in range(3): - if (symbols_list[0][atomTypes_list[0][j]] == "P"): - print(forcess[cont], forcesg[cont], file=f) - cont = cont + 1 - f.close() - - maxval = np.max(diffs_total) - maxindex = np.argmax(diffs_total) - cost_per_atom = np.sqrt(cost / (nats * nstr)) - mean_force = np.sqrt(sum(abs(forcess)) / (nats * nstr)) - print_cost(cost_per_atom, maxindex, maxval, mean_force) - - - #Save the result if there is a very good min - if(cost_per_atom < 0.9): - dt = datetime.now() - ts = datetime.timestamp(dt) - cmd = "cp -r ./TBparams " + "TBparams"+ts - os.system(cmd) - exit(0) - return cost - - -def print_cost(total, index, maxval, mean_force): - with open("cost.dat", 'a+') as line_file: - line_file.write(str(total) + "\n") - with open("index.dat", 'a+') as line_file: - line_file.write(str(index) + " " + str(maxval) + " " + str(mean_force) + "\n") - - -def modif_CC_all_integrals(params_values, params_names, all_integrals): - name_pos = {'H0': 3, 'B1': 4, 'B2': 5, 'B3': 6, 'B4': 7, 'B5': 8, 'R1': 9, 'Rcut': 10, 'H0_2': 11, 'B1_2': 12, - 'B2_2': 13, 'B3_2': 14, 'B4_2': 15, 'B5_2': 16, 'R1_2': 17, 'Rcut_2': 18} - - fname_bondints = "TBparams/bondints.nonortho_reference" - all_lines = [] - with open(fname_bondints, 'r') as fi: - numlines = int(fi.readline().split(" ")[1]) - header = fi.readline() - all_lines.append(f"Noints= {numlines}\n") - all_lines.append(header) - for _ in range(numlines): - line_spl = fi.readline().split() - element1, element2, k_ind = line_spl[0], line_spl[1], line_spl[2] - for index, d in enumerate(all_integrals): - if d.get('Element1') == element1 and d.get('Element2') == element2 and d.get('Kind') == k_ind: - for indx, name in enumerate(params_names): - line_spl[name_pos[name]] = str(params_values[index * len(params_names) + indx])[:18] - with open("lines.dat", 'a+') as line_file: - line_file.write((" ".join(map(str, line_spl)) + "\n")) - break - all_lines.append(" ".join(map(str, line_spl)) + "\n") - - with open("TBparams/bondints.nonortho", 'w') as fo: - fo.writelines(all_lines) - # sys.exit() - - -def modif_ppots(params_values, params_names, all_ppots): - name_pos = {'A0': 2, 'A1': 3, 'A2': 4, 'A3': 5, 'A4': 6, 'A5': 7, 'A6': 8, 'C': 9, 'R1': 10, 'Rcut': 11} - fname_ppot = "TBparams/ppots.nonortho_reference" - all_lines = [] - with open(fname_ppot, 'r') as fi: - numlines = int(fi.readline().split(" ")[1]) - header = fi.readline() - all_lines.append(f"Nopps= {numlines}\n") - all_lines.append(header) - for _ in range(numlines): - line_spl = fi.readline().split() - element1, element2 = line_spl[0], line_spl[1] - for index, d in enumerate(all_ppots): - print(d.get('Ele1'), element1) - if d.get('Ele1') == element1 and d.get('Ele2') == element2: - for indx, name in enumerate(params_names): - print(line_spl) - print(index, indx, len(params_names)) - print(params_values) - line_spl[name_pos[name]] = str(params_values[index * len(params_names) + indx])[:12] - with open("linesp.dat", 'a+') as line_file: - line_file.write((" ".join(map(str, line_spl)) + "\n")) - break - all_lines.append(" ".join(map(str, line_spl)) + "\n") - - with open("TBparams/ppots.nonortho", 'w') as fo: - fo.writelines(all_lines) - - -def modif_elect(params_values, params_names, all_elect): - name_pos = {'Es': 3, 'Ep': 4, 'Ed': 5, 'Ef': 6, 'HubbardU': 8, 'Wss': 9, 'Wpp': 10, 'Wdd': 11, 'Wff': 12} - fname_elect = "TBparams/electrons_reference.dat" - all_lines = [] - with open(fname_elect, 'r') as fi: - numlines = int(fi.readline().split()[1]) - header = fi.readline() - all_lines.append(f"Noelem= {numlines}\n") - all_lines.append(header) - for _ in range(numlines): - line_spl = fi.readline().split() - element1 = line_spl[0] - for index, d in enumerate(all_elect): - if d.get('Element') == element1: - for indx, name in enumerate(params_names): - print(line_spl) - print(index, indx, len(params_names)) - print(params_values) - line_spl[name_pos[name]] = str(params_values[index * len(params_names) + indx])[:12] - with open("linese.dat", 'a+') as line_file: - line_file.write((" ".join(map(str, line_spl)) + "\n")) - break - all_lines.append(" ".join(map(str, line_spl)) + "\n") - - with open("TBparams/electrons.dat", 'w') as fo: - fo.writelines(all_lines) - - -def extract_and_create_bounds(integrals, params_names): - result = [] - for key in params_names: - if key in integrals: - value = integrals[key] - lower_bound = value * 0.7 - upper_bound = value * 1.9 - result.append((min(lower_bound, upper_bound), max(lower_bound, upper_bound))) - return result - - -def extract_and_create_guess(integrals, params_names): - result = [] - for key in params_names: - if key in integrals: - value = integrals[key] - result.append(value) - return result - - -def get_atom_atoms_kind(atom1, atom2, kind): - for d0 in all_dicts: - if d0['Element1'] == atom1 and d0['Element2'] == atom2 and d0['Kind'] == kind: - return d0 - - -def get_atom_atoms_for_ppot(atom1, atom2, all_dicts_ppot): - for d0 in all_dicts_ppot: - if d0['Ele1'] == atom1 and d0['Ele2'] == atom2: - return d0 - - -def get_atom_for_elect(atom, all_dicts_elect): - for d0 in all_dicts_elect: - if d0['Element'] == atom: - return d0 - - -############################### -## Main starts here -############################### -from scipy.optimize import differential_evolution - -# Read all the parameters files -all_dicts = read_file_to_dict('TBparams/bondints.nonortho_reference') -all_dicts_ppot = read_ppotfile_to_dict('TBparams/ppots.nonortho_reference') -all_dicts_elect = read_electfile_to_dict('TBparams/electrons_reference.dat') - -number_of_structures = 1 -field = [0, 0, 0] -verb = 0 - -forces_siesta_list = [] -coords_list = [] -latticeVectors_list = [] -symbols_list = [] -atomTypes_list = [] - -# Read the structures into lists -for i in range(number_of_structures): - fname = "phosphorus_forces_positions/forces_0" + str(i) + "_phosph.FA" - forces_siesta = get_forces_siesta(fname) - coord_files = "phosphorus_forces_positions/coordinates_0" + str(i) + "_phosph.xyz" - latticeVectors, symbols, atomTypes, coords0 = fileio.read_xyz_file(coord_files, lib="None", verb=verb) - latticeVectors[:] = 0.0 - latticeVectors[0,0] = 28.00 - latticeVectors[1,1] = 29.00 - latticeVectors[2,2] = 35.00 - forces_siesta_list.append(forces_siesta) - coords_list.append(coords0) - latticeVectors_list.append(latticeVectors) - symbols_list.append(symbols) - atomTypes_list.append(atomTypes) - -atom_atom_kind = {'PP': ('P', 'P', ('sss', 'sps', 'pps', 'ppp')), - 'CC': ('C', 'C', ('sss', 'sps', 'pps', 'ppp')), - 'OO': ('O', 'O', ('sss', 'sps', 'pps', 'ppp')), - 'NN': ('N', 'N', ('sss', 'sps', 'pps', 'ppp')), - 'PO': ('P', 'O', ('sss', 'sps', 'pps', 'ppp')), - 'OP': ('O', 'P', ['sps']), - 'PN': ('P', 'N', ('sss', 'sps', 'pps', 'ppp')), - 'NP': ('N', 'P', ['sps']), - 'PC': ('P', 'C', ('sss', 'sps', 'pps', 'ppp')), - 'CP': ('C', 'P', ('sss', 'sps', 'pps', 'ppp')), - 'CN': ('C', 'N', ('sss', 'sps', 'pps', 'ppp')), - 'NC': ('N', 'C', ['sps']), - 'HP': ('H', 'P', ('sss', 'sps')), - 'HC': ('H', 'C', ('sss', 'sps'))} - -wished = ['PP', 'PO', 'OP', 'PC', 'PN', 'NP', 'HP'] -all_integrals_SS = [] -for elms in wished: - val = atom_atom_kind[elms] - for v in val[2]: - all_integrals_SS.append(get_atom_atoms_kind(val[0], val[1], v)) - -wished_ppots = [('P', 'P'), ('P', 'O'), ('P', 'C'), ('P', 'N'), ('P', 'H')] -all_ppots = [get_atom_atoms_for_ppot(elms[0], elms[1], all_dicts_ppot) for elms in wished_ppots] -dic_elect_P = get_atom_for_elect('P', all_dicts_elect) - -all_elect = [dic_elect_P] - -params_names = ['H0', 'B1', 'B2', 'H0_2', 'H0_2', 'B1_2', 'B2_2', 'B3_2', 'B4_2'] -ppotparams_names = ['A0', 'A1', 'A2'] -electparams_names = ['Es', 'Ep', 'HubbardU'] - -# params_names = ['H0', 'B1', 'B2']#'B1_2', "B2_2"]#, "B3_2", "B4_2", "B5_2"] -bounds = [v for integrals in all_integrals_SS for v in extract_and_create_bounds(integrals, params_names)] -guess = [v for integrals in all_integrals_SS for v in extract_and_create_guess(integrals, params_names)] -pguess = [v for ppots in all_ppots for v in extract_and_create_guess(ppots, ppotparams_names)] -eguess = [v for elect in all_elect for v in extract_and_create_guess(elect, electparams_names)] - -all_guess = guess + pguess + eguess # Merging lists - -all_guess_v = np.zeros(len(all_guess)) -all_guess_v[:] = all_guess[:] - -bounds = np.zeros((len(all_guess), 2)) -bounds[:, 0] = all_guess[:] -bounds[:, 1] = all_guess[:] -bounds[:, 0] = bounds[:, 0] - 0.5*abs(bounds[:, 0]) -bounds[:, 1] = bounds[:, 1] + 0.5*abs(bounds[:, 1]) - -# guess = [-8.0, -1, -0.5 , -0.5 , -0.5, -0.5, -0.5, -0.5, -0.5] -cost_ref = cost_function2(all_guess_v, params_names, ppotparams_names, electparams_names, all_integrals_SS, all_ppots, - all_elect, forces_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list - ) - - -optimize = False -if(optimize): - latticeVectors = latticeVectors_list[0] - symbols = symbols_list[0] - atomTypes = atomTypes_list[0] - coords0 = coords_list[0] - coords_new = optimize_coordinates(latticeVectors,atomTypes,symbols,coords0,method='BFGS',parampath='/tmp',iterations=100,tol=0.01) - - write_xyz_coordinates("opt_str.xyz", coords_new, atoTypes, symbols) - -method = "Diff" -if(method == "Anneal"): - result = dual_annealing(cost_function2,bounds, args=( - params_names, ppotparams_names, - electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list - ), maxiter=1000, initial_temp=10.0, restart_temp_ratio=2e-05, visit=2.62, accept=-5.0, maxfun=10000000.0, seed=None, no_local_search=False, callback=None, x0=None) -elif(method == "Diff"): - result = differential_evolution(cost_function2, bounds=bounds, args=( - params_names, ppotparams_names, - electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list - ), maxiter=3, recombination=0.1, mutation=0.1, tol=0.01, popsize=15, disp=True) -else: - result = minimize(cost_function2, all_guess, args=(params_names, ppotparams_names, - electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list), method='Nelder-Mead', jac=None, hess=None, hessp=None, - bounds=bounds, constraints=(), tol=0.001, callback=None, options={'maxiter': 6000}) - - -exit(0) - diff --git a/parameters/gpmd_interface_example/main_optim_params_parallel.py b/parameters/gpmd_interface_example/main_optim_params_parallel.py deleted file mode 100644 index f94cb17c..00000000 --- a/parameters/gpmd_interface_example/main_optim_params_parallel.py +++ /dev/null @@ -1,882 +0,0 @@ -#!/usr/bin/env python3 -import sys - -import numpy as np -from sedacs.system import * -from sedacs.periodic_table import PeriodicTable -# from sdc_system import * -# from sdc_ptable import ptable -import ctypes as ct -import os -import scipy.linalg as sp -import sedacs.file_io as fileio -from scipy.optimize import minimize -from scipy import optimize -from gpmd import * -from datetime import datetime -from concurrent.futures import ProcessPoolExecutor - -# !/usr/bin/env python3 - -import sys -import numpy as np -from sedacs.system import * -from sedacs.periodic_table import PeriodicTable -import ctypes as ct -import os -import scipy.linalg as sp -from scipy.optimize import minimize -from scipy import optimize -from gpmd import * -from datetime import datetime -from concurrent.futures import ProcessPoolExecutor - - -def get_energy(coords_in, lattice_vectors, atom_types, symbols): - """ - Calculate the total energy for a given molecular configuration. - - Args: - coords_in (np.ndarray): Flattened atomic coordinates. - lattice_vectors (np.ndarray): Lattice vectors defining the simulation box. - atom_types (list): List of atomic types. - symbols (list): List of atomic symbols. - - Returns: - float: Total energy of the configuration. - """ - field = np.zeros(3) - coords = coords_in.reshape(len(atom_types), 3) - err, charges_out, forces_saved, dipole_out, energy = gpmd( - lattice_vectors, symbols, atom_types, coords, field, verb - ) - - # Write trajectory to file - with open("traj.xyz", 'a+') as traj_file: - traj_file.write(f"{len(atom_types)}\n") - traj_file.write("t=\n") - for i, atom in enumerate(atom_types): - traj_file.write(f"{symbols[atom]} {coords[i, 0]} {coords[i, 1]} {coords[i, 2]}\n") - - # Write energy to file - with open("energ.dat", 'a+') as energy_file: - energy_file.write(f"{energy}\n") - - return energy - - -def optimize_coordinates(lattice_vectors, atom_types, symbols, coords, method='CG', iterations=100, tol=0.01): - """ - Optimize atomic coordinates to minimize energy. - - Args: - lattice_vectors (np.ndarray): Lattice vectors defining the simulation box. - atom_types (list): List of atomic types. - symbols (list): List of atomic symbols. - coords (np.ndarray): Initial atomic coordinates. - method (str): Optimization method (default is 'CG'). - iterations (int): Maximum number of iterations. - tol (float): Tolerance for convergence. - - Returns: - np.ndarray: Optimized atomic coordinates. - """ - coordsv = coords.reshape(-1) - result = minimize( - get_energy, coordsv, args=(lattice_vectors, atom_types, symbols), - method=method, tol=tol, options={'maxiter': iterations} - ) - return result.x - - -def read_file_to_dict(filename): - """ - Parse a structured file into a list of dictionaries. - - Args: - filename (str): File path to read. - - Returns: - list[dict]: List of dictionaries containing parsed data. - """ - with open(filename, 'r') as file: - file.readline() - lines = file.readlines() - - # Extract headers from the file - headers = lines[0].split() - num_headers = 3 - first_set = headers[num_headers:num_headers + 8] - second_set = [f"{header}_2" for header in first_set] - all_headers = headers[:num_headers] + first_set + second_set - - # Parse lines into dictionaries - dict_list = [] - for line in lines[1:]: - values = line.split() - data_dict = {all_headers[i]: (values[i] if i < num_headers else float(values[i])) - for i in range(len(all_headers))} - dict_list.append(data_dict) - - return dict_list - - -def get_dipole(coords, charges): - """ - Calculate the dipole moment. - - Args: - coords (np.ndarray): Atomic coordinates. - charges (np.ndarray): Atomic charges. - - Returns: - np.ndarray: Dipole moment vector. - """ - dipole = np.zeros(3) - for i, charge in enumerate(charges): - dipole += charge * coords[i] - return dipole - - -def get_field_born_charges(lattice_vectors, symbols, atom_types, coords, verb): - """ - Compute Born effective charges using the field method. - - Args: - lattice_vectors (np.ndarray): Lattice vectors defining the simulation box. - symbols (list): List of atomic symbols. - atom_types (list): List of atomic types. - coords (np.ndarray): Atomic coordinates. - verb (int): Verbosity level. - - Returns: - np.ndarray: Born effective charges. - """ - # Initialize variables - field = np.zeros(3) - err, charges_out, forces_saved, dipole_out, energy = gpmd( - lattice_vectors, symbols, atom_types, coords, field, verb - ) - nats = len(atom_types) - born_field = np.zeros((nats, 3, 3)) - - # Compute forces with perturbed fields - for i in range(3): - for delta in [-1e-4, 1e-4]: - field[i] = delta - err, charges_out, forces_out, dipole_out, energy = gpmd( - lattice_vectors, symbols, atom_types, coords, field, verb - ) - born_field[:, :, i] += (forces_out - forces_saved) / np.linalg.norm(field) - - # Calculate average Born charges - born_charges = [sum(sp.eigh(born_field[i])[0]) / 3 for i in range(nats)] - return np.array(born_charges) - - -def read_ppotfile_to_dict(filename): - """ - Parse a pseudopotential file into a list of dictionaries. - - Args: - filename (str): File path to read. - - Returns: - list[dict]: List of dictionaries containing pseudopotential data. - """ - with open(filename, 'r') as file: - file.readline() - lines = file.readlines() - - # Extract the headers (column names) - headers = lines[0].split() - - # Find the index where the second set of repeated headers starts (after the third column) - all_headers = headers - # Initialize a list to store all the dictionaries - dict_list = [] - - # Process the remaining lines to create dictionaries - for line in lines[1:]: - values = line.split() - - # Create a dictionary using headers as keys - # Convert numerical values (from the 4th column onward) to floats - data_dict = {all_headers[i]: (values[i] if i < 2 else float(values[i])) - for i in range(len(all_headers))} - - # Add the dictionary to the list - dict_list.append(data_dict) - - return dict_list - - -def get_displ_born_charges(lattice_vectors, symbols, atom_types, coords_in, verb): - """ - Compute Born effective charges using the displacement method. - - Args: - lattice_vectors (np.ndarray): Lattice vectors defining the simulation box. - symbols (list): List of atomic symbols. - atom_types (list): List of atomic types. - coords_in (np.ndarray): Initial atomic coordinates. - verb (int): Verbosity level. - - Returns: - tuple: (Born effective charges, displacement matrix). - """ - nats = len(atom_types) - born_displ = np.zeros((nats, 3, 3)) - dspl = 1.0E-5 - field = np.zeros(3) - coords = np.copy(coords_in) - - # Calculate dipole for initial configuration - _, _, _, dipole_saved, _ = gpmd(lattice_vectors, symbols, atom_types, coords, field, verb) - - # Perturb coordinates and compute dipole differences - for dim in range(3): # Iterate over X, Y, Z - for j in range(nats): - for delta in [-dspl, dspl]: - coords[j, dim] += delta - _, _, _, dipole_out, _ = gpmd(lattice_vectors, symbols, atom_types, coords, field, verb) - sign = 1 if delta > 0 else -1 - born_displ[j, :, dim] += sign * dipole_out - coords[j, dim] -= delta - - # Average Born charges - born_charges = [sum(sp.eigh(born_displ[i])[0]) / 3 for i in range(nats)] - return np.array(born_charges), born_displ - - -def get_forces_siesta(filename): - """ - Read atomic forces from a SIESTA output file. - - Args: - filename (str): Path to the forces file. - - Returns: - np.ndarray: Array of atomic forces. - """ - with open(filename, 'r') as file: - num_lines = int(file.readline().strip()) - forces = [list(map(float, file.readline().split()[1:])) for _ in range(num_lines)] - return np.array(forces) - - -def cost_function(params_values, params_names, forces_siesta, all_integrals): - """ - Calculate the cost function for optimization by comparing GPMD and SIESTA forces. - - Args: - params_values (list): List of parameter values to modify. - params_names (list): Names of the parameters. - forces_siesta (np.ndarray): Reference forces from SIESTA. - all_integrals (list): List of integrals data for modification. - - Returns: - float: Total cost as the sum of squared differences between forces. - """ - modif_CC_all_integrals(params_values, params_names, all_integrals) - _, _, gpmd_forces, _, _ = gpmd(latticeVectors, symbols, atomTypes, coords0, field, verb) - - # Compute sum of squared differences - total_cost = sum(np.linalg.norm(gp - si) ** 2 for gp, si in zip(gpmd_forces, forces_siesta)) - print(f"Total Cost: {total_cost}") - return total_cost - - -def modif_CC_all_integrals(params_values, params_names, all_integrals): - """ - Modify bond integrals based on the provided parameters. - - Args: - params_values (list): List of parameter values. - params_names (list): Names of the parameters. - all_integrals (list): List of integrals data. - """ - name_pos = {'H0': 3, 'B1': 4, 'B2': 5, 'B3': 6, 'B4': 7, 'B5': 8, 'R1': 9, 'Rcut': 10, 'H0_2': 11, 'B1_2': 12, - 'B2_2': 13, 'B3_2': 14, 'B4_2': 15, 'B5_2': 16, 'R1_2': 17, 'Rcut_2': 18} - - fname_bondints = "TBparams/bondints.nonortho_reference" - all_lines = [] - with open(fname_bondints, 'r') as file: - num_lines = int(file.readline().split()[1]) - header = file.readline() - all_lines.append(f"Noints= {num_lines}\n") - all_lines.append(header) - - for _ in range(num_lines): - line_spl = file.readline().split() - element1, element2, k_ind = line_spl[:3] - for idx, d in enumerate(all_integrals): - if d.get('Element1') == element1 and d.get('Element2') == element2 and d.get('Kind') == k_ind: - for p_idx, name in enumerate(params_names): - line_spl[name_pos[name]] = f"{params_values[idx * len(params_names) + p_idx]:.8f}" - break - all_lines.append(" ".join(line_spl) + "\n") - - # Write modified bond integrals to a new file - with open("TBparams/bondints.nonortho", 'w') as output_file: - output_file.writelines(all_lines) - - -def extract_and_create_bounds(integrals, params_names): - """ - Generate bounds for parameters based on their values in the integrals data. - - Args: - integrals (dict): Dictionary of integral data. - params_names (list): List of parameter names. - - Returns: - list[tuple]: Bounds for each parameter as (lower_bound, upper_bound). - """ - result = [] - for key in params_names: - if key in integrals: - value = integrals[key] - lower_bound = value * 0.7 - upper_bound = value * 1.9 - result.append((lower_bound, upper_bound)) - return result - - -def extract_and_create_guess(integrals, params_names): - """ - Generate initial guesses for parameters based on their values in the integrals data. - - Args: - integrals (dict): Dictionary of integral data. - params_names (list): List of parameter names. - - Returns: - list[float]: Initial guesses for each parameter. - """ - return [integrals[key] for key in params_names if key in integrals] - - -def print_cost(total, index, maxval, mean_force): - """ - Save the cost metrics to output files. - - Args: - total (float): Total cost. - index (int): Index of the maximum cost contributor. - maxval (float): Maximum value of the cost component. - mean_force (float): Mean force magnitude. - """ - with open("cost.dat", 'a+') as cost_file: - cost_file.write(f"{total}\n") - with open("index.dat", 'a+') as index_file: - index_file.write(f"{index} {maxval} {mean_force}\n") - - -def read_electfile_to_dict(filename): - """ - Parse an electron configuration file into a list of dictionaries. - - Args: - filename (str): Path to the electron configuration file. - - Returns: - list[dict]: List of dictionaries containing electron configuration data. - """ - with open(filename, 'r') as file: - file.readline() - lines = file.readlines() - - # Extract the headers (column names) - # Extract the headers (column names) - headers = lines[0].split() - - # Find the index where the second set of repeated headers starts (after the third column) - all_headers = headers - # Initialize a list to store all the dictionaries - dict_list = [] - - # Process the remaining lines to create dictionaries - for line in lines[1:]: - values = line.split() - - # Create a dictionary using headers as keys - # Convert numerical values (from the 4th column onward) to floats - data_dict = {all_headers[i]: (values[i] if i < 2 else float(values[i])) - for i in range(len(all_headers))} - - # Add the dictionary to the list - dict_list.append(data_dict) - - return dict_list - - -def cost_function2_old(all_values, int_names, ppot_names, elect_names, all_integrals, all_ppots, all_elect, - forces_siesta_list, energies_siesta_list, coords_list, lattice_vectors_list, symbols_list, - atom_types_list): - """ - Calculate the cost function for optimization across multiple structures. - - Args: - all_values (list): Flattened list of all parameter values (integrals, pseudopotentials, electrons). - ... - - Returns: - float: Total cost combining forces and energies. - """ - nstr = len(coords_list) - nint = len(all_integrals) * len(int_names) - npp = len(all_ppots) * len(ppot_names) - nel = len(all_elect) * len(elect_names) - - int_values = [] * nint - ppot_values = [] * npp - elect_values = [] * nel - int_values[:] = all_values[0:nint] - ppot_values[:] = all_values[nint:nint + npp] - elect_values[:] = all_values[nint + npp:nint + npp + nel] - - modif_CC_all_integrals(int_values, params_names, all_integrals) - modif_ppots(ppot_values, ppot_names, all_ppots) - modif_elect(elect_values, elect_names, all_elect) - - nats = len(atomTypes_list[0]) - buffg = np.zeros(3 * nats) - buffs = np.zeros(3 * nats) - diffs_total = np.zeros(3 * nstr * nats) - forcess = np.zeros(3 * nstr * nats) - forcesg = np.zeros(3 * nstr * nats) - - energies_gpmd = np.zeros(nstr) - - ################### Start parallel execution ################### - - futures_lst = [] - with ProcessPoolExecutor(max_workers=7) as exe: - for istr in range(nstr): - nats = len(atomTypes_list[istr]) - latticeVectors = latticeVectors_list[istr] - symbols = symbols_list[istr] - atomTypes = atomTypes_list[istr] - coords0 = coords_list[istr] - forces_siesta = forces_siesta_list[istr] - - futures_lst.append(exe.submit(gpmd, latticeVectors, symbols, atomTypes, coords0, field, verb)) - - for future in futures_lst: - err, charges, gpmd_forces, dipole, energy = future.result() - - for i in range(nats): - for i in range(nats): - # assign all three components at once using slicing - buffs[i * 3:(i + 1) * 3] = gpmd_forces[i] - buffg[i * 3:(i + 1) * 3] = forces_siesta[i] - - forcess[istr * nats * 3:(istr + 1) * nats * 3] = buffs[:] - forcesg[istr * nats * 3:(istr + 1) * nats * 3] = buffg[:] - print("ENERGY", istr, energy) - - energies_gpmd[istr] = energy - - ################### End parallel execution ################### - - diffs_total[:] = abs(forcess[:] - forcesg[:]) - - energies_gpmd[:] = energies_gpmd[:] - energies_gpmd[0] - diffs_energ = np.zeros((nstr)) - diffs_energ[:] = abs(energies_siesta_list[:] - energies_gpmd[:]) - cost_energ = (np.linalg.norm(diffs_energ)) ** 2 - - cost = (np.linalg.norm(diffs_total)) ** 2 - cost = cost + 100 * cost_energ - if (np.isnan(cost)): cost = 10000000.0 - # print("gpmd",gpmd_forces) - # print("siesta",forces_siesta) - # print("reldif",(forces_siesta-gpmd_forces)/forces_siesta) - # exit(0) - - f = open("correl.dat", 'w') - for i in range(len(forcess)): - print(forcess[i], forcesg[i], file=f) - f.close() - f = open("correlP.dat", 'w') - cont = 0 - for i in range(nstr): - for j in range(nats): - for k in range(3): - if (symbols_list[0][atomTypes_list[0][j]] == "P"): - print(forcess[cont], forcesg[cont], file=f) - cont = cont + 1 - f.close() - - maxval = np.max(diffs_total) - maxindex = np.argmax(diffs_total) - cost_per_atom = np.sqrt(cost / (nats * nstr)) - mean_force = np.sqrt(sum(abs(forcess)) / (nats * nstr)) - print_cost(cost_per_atom, maxindex, maxval, mean_force) - - # Save the result if there is a very good min - if (cost_per_atom < 0.1): - dt = datetime.now() - ts = datetime.timestamp(dt) - cmd = "cp -r ./TBparams " + "TBparams" + str(ts) - os.system(cmd) - exit(0) - - return cost - - -def cost_function2(all_values, int_names, ppot_names, elect_names, all_integrals, all_ppots, all_elect, - forces_siesta_list, energies_siesta_list, coords_list, lattice_vectors_list, symbols_list, - atom_types_list): - """ - Calculate the cost function for optimization across multiple structures. - - Args: - all_values (list): Flattened list of all parameter values (integrals, pseudopotentials, electrons). - ... - - Returns: - float: Total cost combining forces and energies. - """ - # Extract parameter groups - n_int = len(all_integrals) * len(int_names) - n_pp = len(all_ppots) * len(ppot_names) - n_el = len(all_elect) * len(elect_names) - - int_values = all_values[:n_int] - ppot_values = all_values[n_int:n_int + n_pp] - elect_values = all_values[n_int + n_pp:n_int + n_pp + n_el] - - # Update parameters - modif_CC_all_integrals(int_values, int_names, all_integrals) - modif_ppots(ppot_values, ppot_names, all_ppots) - modif_elect(elect_values, elect_names, all_elect) - - n_structures = len(coords_list) - total_force_diffs = [] - energies_gpmd = np.zeros(n_structures) - - # Buffers to store forces and diffs - forces_gpmd_all = np.zeros((n_structures, len(forces_siesta_list[0]), 3)) - forces_siesta_all = np.zeros_like(forces_gpmd_all) - - # Parallel evaluation of structures - with ProcessPoolExecutor(max_workers=2) as executor: - futures = [] - for i in range(len(coords_list)): - futures.append( - executor.submit( - gpmd, - lattice_vectors_list[i], - symbols_list[i], - atom_types_list[i], - coords_list[i], - np.zeros(3), # Field is zero by default - verb, - ) - ) - - for i, future in enumerate(futures): - err, charges, gpmd_forces, dipole, energy = future.result() - - # Store forces for correlation file - forces_gpmd_all[i] = gpmd_forces - forces_siesta_all[i] = forces_siesta_list[i] - - # Compute energy differences - energies_gpmd[i] = energy - - # Compute force differences for cost - total_force_diffs.extend(np.linalg.norm(gpmd_forces - forces_siesta_list[i], axis=1)) - - # Compute energy and force costs - diffs_energ = np.abs(energies_siesta_list - energies_gpmd) - energy_cost = np.linalg.norm(diffs_energ) ** 2 - - force_cost = np.linalg.norm(total_force_diffs) ** 2 - - # Weight energy cost more heavily - total_cost = force_cost + 100 * energy_cost - - # Handle NaN or infinity in the cost - if np.isnan(total_cost) or np.isinf(total_cost): - total_cost = 1e7 - - # Update correlation files - with open("correl.dat", 'w') as correl_file: - for i in range(n_structures): - for j in range(len(forces_siesta_list[i])): - correl_file.write(f"{forces_gpmd_all[i, j, 0]} {forces_siesta_all[i, j, 0]}\n") - - with open("correlP.dat", 'w') as correlp_file: - for i in range(n_structures): - for j in range(len(atom_types_list[i])): - if symbols_list[0][atom_types_list[0][j]] == "P": - correlp_file.write(f"{forces_gpmd_all[i, j, 0]} {forces_siesta_all[i, j, 0]}\n") - - # Print useful metrics - max_diff = np.max(total_force_diffs) - max_diff_index = np.argmax(total_force_diffs) - cost_per_atom = np.sqrt(force_cost / (n_structures * len(atom_types_list[0]))) - mean_force = np.mean(np.linalg.norm(forces_gpmd_all, axis=2)) - - print_cost(cost_per_atom, max_diff_index, max_diff, mean_force) - - # Save good results for potential future use - if cost_per_atom < 0.1: - timestamp = datetime.now().strftime("%Y%m%d%H%M%S") - os.system(f"cp -r ./TBparams ./TBparams_{timestamp}") - - return total_cost - - -def modif_ppots(params_values, params_names, all_ppots): - """ - Modify pseudopotential parameters based on the provided values. - - Args: - params_values (list): List of pseudopotential parameter values. - params_names (list): List of pseudopotential parameter names. - all_ppots (list): List of pseudopotential data. - """ - name_pos = {'A0': 2, 'A1': 3, 'A2': 4, 'A3': 5, 'A4': 6, 'A5': 7, 'C': 9, 'R1': 10, 'Rcut': 11} - fname_ppot = "TBparams/ppots.nonortho_reference" - - all_lines = [] - with open(fname_ppot, 'r') as file: - num_lines = int(file.readline().split()[1]) - header = file.readline() - all_lines.append(f"Nopps= {num_lines}\n") - all_lines.append(header) - - for _ in range(num_lines): - line_spl = file.readline().split() - element1, element2 = line_spl[:2] - for index, ppot in enumerate(all_ppots): - if ppot['Ele1'] == element1 and ppot['Ele2'] == element2: - for p_idx, name in enumerate(params_names): - line_spl[name_pos[name]] = f"{params_values[index * len(params_names) + p_idx]:.8f}" - break - all_lines.append(" ".join(line_spl) + "\n") - - with open("TBparams/ppots.nonortho", 'w') as file: - file.writelines(all_lines) - - -def modif_elect(params_values, params_names, all_elect): - """ - Modify electron configuration parameters based on the provided values. - - Args: - params_values (list): List of electron parameter values. - params_names (list): List of electron parameter names. - all_elect (list): List of electron configuration data. - """ - name_pos = {'Es': 3, 'Ep': 4, 'Ed': 5, 'Ef': 6, 'HubbardU': 8, 'Wss': 9, 'Wpp': 10, 'Wdd': 11, 'Wff': 12} - fname_elect = "TBparams/electrons_reference.dat" - - all_lines = [] - with open(fname_elect, 'r') as file: - num_lines = int(file.readline().split()[1]) - header = file.readline() - all_lines.append(f"Noelem= {num_lines}\n") - all_lines.append(header) - - for _ in range(num_lines): - line_spl = file.readline().split() - element = line_spl[0] - for index, elect in enumerate(all_elect): - if elect['Element'] == element: - for p_idx, name in enumerate(params_names): - line_spl[name_pos[name]] = f"{params_values[index * len(params_names) + p_idx]:.8f}" - break - all_lines.append(" ".join(line_spl) + "\n") - - with open("TBparams/electrons.dat", 'w') as file: - file.writelines(all_lines) - - -def get_atom_atoms_kind(atom1, atom2, kind): - for d0 in all_dicts: - if d0['Element1'] == atom1 and d0['Element2'] == atom2 and d0['Kind'] == kind: - return d0 - - -def get_atom_atoms_for_ppot(atom1, atom2, all_dicts_ppot): - for d0 in all_dicts_ppot: - if d0['Ele1'] == atom1 and d0['Ele2'] == atom2: - return d0 - - -def get_atom_for_elect(atom, all_dicts_elect): - for d0 in all_dicts_elect: - if d0['Element'] == atom: - return d0 - - -############################### -## Main starts here -############################### -from scipy.optimize import differential_evolution - -# Read all the parameters files -all_dicts = read_file_to_dict('TBparams/bondints.nonortho_reference') -all_dicts_ppot = read_ppotfile_to_dict('TBparams/ppots.nonortho_reference') -all_dicts_elect = read_electfile_to_dict('TBparams/electrons_reference.dat') - -number_of_structures = 31 -field = [0, 0, 0] -verb = 0 - -forces_siesta_list = [] -energies_siesta_list = np.zeros(number_of_structures) -coords_list = [] -latticeVectors_list = [] -symbols_list = [] -atomTypes_list = [] - -# Read the structures into lists -for i in range(number_of_structures): - - # For water, crashes - #fname = "forces_positions_h2o/h2o_" + str(i) + ".FA" - #forces_siesta = get_forces_siesta(fname) - #coord_files = "forces_positions_h2o/coordinates_" + str(i) + ".xyz" - #latticeVectors, symbols, atomTypes, coords0 = fileio.read_xyz_file(coord_files, lib="None", verb=verb) - #energ_files = "forces_positions_h2o/energy_" + str(i) + ".dat" - - # Fullerenes - prefix_list=["C44-D2-85_E_0.01x", "C44-C1-62_E_0.01x", "C44-Cs-11_E_0.01x", "C44-C2-81_E_0.01x", "C44-C1-64_E_0.01x", "C44-C2-87_E_0.01x", "C44-D2-2_E_0.01x", "C44-D3d-38_E_0.01x", "C44-Cs-28_E_0.01x", "C44-C1-59_E_0.01x", "C44-Cs-70_E_0.01x", "C44-D2-75_E_0.01x", "C44-C2-44_E_0.01x", "C44-Cs-84_E_0.01x", "C44-C2-34_E_0.01x", "C44-D3-35_E_0.01x", "C44-C1-60_E_0.01x", "C44-D2-24_E_0.01x", "C44-C1-58_E_0.01x", "C44-D3-80_E_0.01x", "C44-Cs-71_E_0.01x", "C44-C1-47_E_0.01x", "C44-C1-65_E_0.01x", "C44-C2-79_E_0.01x", "C44-C2-76_E_0.01x", "C44-C1-67_E_0.01x", "C44-C1-63_E_0.01x", "C44-Cs-54_E_0.01x", "C44-C2-74_E_0.01x", "C44-D3d-3_E_0.01x", "C44-Cs-33_E_0.01x"] - fnames = ["fullerenes/"+ prefix + ".FA" for prefix in prefix_list] - forces_siesta = get_forces_siesta(fnames[i]) - - all_coord_files = ["fullerenes/"+ prefix + ".xyz" for prefix in prefix_list] - latticeVectors, symbols, atomTypes, coords0 = fileio.read_xyz_file(all_coord_files[i], lib="None", verb=verb) - all_energ_files = ["fullerenes/energy_"+ prefix + ".dat" for prefix in prefix_list] - energ_files=all_energ_files[i] - - #fname = "forces_positions/forces_0" + str(i) + ".FA" - #forces_siesta = get_forces_siesta(fname) - #coord_files = "forces_positions/coordinates_0" + str(i) + ".xyz" - #latticeVectors, symbols, atomTypes, coords0 = fileio.read_xyz_file(coord_files, lib="None", verb=verb) - #energ_files = "forces_positions/energies_0" + str(i) + ".EN" - - with open(energ_files, 'r') as f: - energies_siesta_list = [float(lines.split()[0]) for lines in f] - - latticeVectors = np.diag([20.00, 20.00, 20.00]) - forces_siesta_list.append(forces_siesta) - coords_list.append(coords0) - latticeVectors_list.append(latticeVectors) - symbols_list.append(symbols) - atomTypes_list.append(atomTypes) - - -atom_atom_kind = {'PP': ('P', 'P', ('sss', 'sps', 'pps', 'ppp')), - 'CC': ('C', 'C', ('sss', 'sps', 'pps', 'ppp')), - 'OO': ('O', 'O', ('sss', 'sps', 'pps', 'ppp')), - 'NN': ('N', 'N', ('sss', 'sps', 'pps', 'ppp')), - 'PO': ('P', 'O', ('sss', 'sps', 'pps', 'ppp')), - 'OP': ('O', 'P', ['sps']), - 'PN': ('P', 'N', ('sss', 'sps', 'pps', 'ppp')), - 'NP': ('N', 'P', ['sps']), - 'PC': ('P', 'C', ('sss', 'sps', 'pps', 'ppp')), - 'CP': ('C', 'P', ('sss', 'sps', 'pps', 'ppp')), - 'CN': ('C', 'N', ('sss', 'sps', 'pps', 'ppp')), - 'CO': ('C', 'O', ('sss', 'sps', 'pps', 'ppp')), - 'OC': ('O', 'C', ['sps']), - 'NC': ('N', 'C', ['sps']), - 'HP': ('H', 'P', ('sss', 'sps')), - 'HO': ('H', 'O', ('sss', 'sps')), - 'HH': ('H', 'H', ['sss']), - 'HC': ('H', 'C', ('sss', 'sps'))} - -wished = ['CC']# , 'CO', 'OC', 'OO', 'HC', 'HO', 'HH'] -all_integrals_SS = [] -for elms in wished: - val = atom_atom_kind[elms] - for v in val[2]: - all_integrals_SS.append(get_atom_atoms_kind(val[0], val[1], v)) - -wished_ppots = [('C', 'C')]#, ('C', 'C'), ('H', 'H'), ('C', 'O'), ('C', 'H'), ('O', 'H')] -all_ppots = [get_atom_atoms_for_ppot(elms[0], elms[1], all_dicts_ppot) for elms in wished_ppots] -dic_elect_H = get_atom_for_elect('H', all_dicts_elect) -dic_elect_C = get_atom_for_elect('C', all_dicts_elect) -dic_elect_O = get_atom_for_elect('O', all_dicts_elect) - -all_elect = [dic_elect_O, dic_elect_C, dic_elect_H] - -params_names = ['H0', 'B1', 'B2', 'H0_2', 'H0_2', 'B1_2', 'B2_2', 'B3_2', 'B4_2'] -ppotparams_names = ['A0', 'A1', 'A2'] -electparams_names = ['Es', 'Ep', 'HubbardU'] - -# params_names = ['H0', 'B1', 'B2']#'B1_2', "B2_2"]#, "B3_2", "B4_2", "B5_2"] -bounds = [v for integrals in all_integrals_SS for v in extract_and_create_bounds(integrals, params_names)] -guess = [v for integrals in all_integrals_SS for v in extract_and_create_guess(integrals, params_names)] -pguess = [v for ppots in all_ppots for v in extract_and_create_guess(ppots, ppotparams_names)] -eguess = [v for elect in all_elect for v in extract_and_create_guess(elect, electparams_names)] - -all_guess = guess + pguess + eguess # Merging lists - -all_guess_v = np.zeros(len(all_guess)) -all_guess_v[:] = all_guess[:] - -bounds = np.zeros((len(all_guess), 2)) -bounds[:, 0] = all_guess[:] -bounds[:, 1] = all_guess[:] -bounds[:, 0] = bounds[:, 0] - 0.5 * abs(bounds[:, 0]) -bounds[:, 1] = bounds[:, 1] + 0.5 * abs(bounds[:, 1]) - -# guess = [-8.0, -1, -0.5 , -0.5 , -0.5, -0.5, -0.5, -0.5, -0.5] -cost_ref = cost_function2(all_guess_v, params_names, ppotparams_names, electparams_names, all_integrals_SS, all_ppots, - all_elect, forces_siesta_list, energies_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list - ) - -optimize = False -if (optimize): - latticeVectors = latticeVectors_list[0] - symbols = symbols_list[0] - atomTypes = atomTypes_list[0] - coords0 = coords_list[0] - coords_new = optimize_coordinates(latticeVectors, atomTypes, symbols, coords0, method='BFGS', parampath='/tmp', - iterations=100, tol=0.01) - write_xyz_coordinates("opt_str.xyz", coords_new, atoTypes, symbols) - -method = "Else" -if method == "Anneal": - result = dual_annealing(cost_function2, bounds, args=( - params_names, ppotparams_names, - electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list - ), maxiter=1000, initial_temp=10.0, restart_temp_ratio=2e-05, visit=2.62, accept=-5.0, maxfun=10000000.0, seed=None, - no_local_search=False, callback=None, x0=None) -elif method == "Diff": - result = differential_evolution(cost_function2, bounds=bounds, args=( - params_names, ppotparams_names, - electparams_names, all_integrals_SS, all_ppots, all_elect, forces_siesta_list, energies_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list - ), maxiter=3, recombination=0.1, mutation=0.1, tol=0.01, popsize=15, disp=True) -else: - result = minimize(cost_function2, all_guess, args=(params_names, ppotparams_names, - electparams_names, all_integrals_SS, all_ppots, all_elect, - forces_siesta_list, energies_siesta_list, - coords_list, - latticeVectors_list, - symbols_list, - atomTypes_list), method='Nelder-Mead', jac=None, hess=None, - hessp=None, - bounds=bounds, constraints=(), tol=0.0001, callback=None, options={'maxiter': 600000}) - -exit(0) - diff --git a/parameters/gpmd_interface_example/vars b/parameters/gpmd_interface_example/vars deleted file mode 100644 index af1a2f06..00000000 --- a/parameters/gpmd_interface_example/vars +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -THIS_PATH=`pwd` - -export SEDACS_PATH=$HOME/sedacs/src/ -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$THIS_PATH/qmd-progress/install/lib64 -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$THIS_PATH/bml/install/lib64 -GPMD_PATH=$THIS_PATH/qmg-progress/examples/gpmdk/build/ -export GPMD_PATH=$THIS_PATH/qmd-progress/examples/gpmdk/build/ -export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$GPMD_PATH:$LD_LIBRARY_PATH:$SEDACS_PATH -export PYTHONWARNINGS="ignore:Unverified HTTPS request" - diff --git a/proxies/c/README.md b/proxies/c/README.md deleted file mode 100644 index d0f81a09..00000000 --- a/proxies/c/README.md +++ /dev/null @@ -1 +0,0 @@ -Placeholder for C version of proxy_a code diff --git a/proxies/c/build.sh b/proxies/c/build.sh deleted file mode 100644 index 540edab0..00000000 --- a/proxies/c/build.sh +++ /dev/null @@ -1,2 +0,0 @@ -gcc-mp-12 -c proxy_a_lib.c -I/opt/local/include -gcc-mp-12 proxy_a.c -o proxy_a proxy_a_lib.o -L/opt/local/lib -lopenblas diff --git a/proxies/c/proxy_a.c b/proxies/c/proxy_a.c deleted file mode 100644 index b5f5d81a..00000000 --- a/proxies/c/proxy_a.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "proxy_a.h" - -int main(int argc, char *argv[]) -{ - double - *coords = NULL, - *H = NULL, - *D = NULL; - - int - *types, - nats, - nocc, - i, - j; - - nats = 2; - - coords = (double *)malloc(3*nats*sizeof(double)); - get_random_coordinates(nats,coords); - - for (i=0; i < nats; i++) { - printf("%30.18g\n",coords[3*i]); - } - types = (int *)malloc(nats*sizeof(int)); - for (i = 0; i < nats; i++) types[i] = 1; - - H = (double *)malloc(nats*nats*sizeof(double)); - get_hamiltonian(nats,coords, types, H, true); - printf("Hamiltonian matrix\n"); - for (i = 0; i < nats; i++) { - size_t ofst = nats * i; - for (j = 0; j < nats; j++) { - printf("%g\n",H[ofst + j]); - } - } - - D = (double *)malloc(nats*nats*sizeof(double)); - nocc = (int)((double)nats/2.0); - get_densityMatrix(nats,H, nocc, D, true); - printf("Density matrix:\n"); - for (i = 0; i < nats; i++) { - size_t ofst = nats * i; - for (j = 0; j < nats; j++) { - printf("%g\n",D[ofst + j]); - } - } -} diff --git a/proxies/c/proxy_a.h b/proxies/c/proxy_a.h deleted file mode 100644 index a0368baf..00000000 --- a/proxies/c/proxy_a.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef PROXY_A_H -#define PROXY_A_H - -#include -#include -#include -#include -#include - -int get_random_coordinates(int nats, double *coords); -int get_hamiltonian(int nats, double *coords, int *atomTypes, double *H, bool verb); -int get_densityMatrix(int nats, double *H, int Nocc, double *D, bool verb); - -#endif diff --git a/proxies/c/proxy_a_lib.c b/proxies/c/proxy_a_lib.c deleted file mode 100644 index e5a4ed6d..00000000 --- a/proxies/c/proxy_a_lib.c +++ /dev/null @@ -1,253 +0,0 @@ -/* - proxy_a_lib.c - - A prototype engine that: - - Reads the total number of atoms - - Constructs a set of random coordinates - - Constructs a simple Hamiltonian - - Computes the Density matrix from the Hamiltonian - - Translated from C to Fortran by Michael E. Wall, LANL - -*/ - -#include "proxy_a.h" -#include "lapack.h" - -/* - Simple random number generator - This is important in order to compare across codes - written in different languages. - - To initialize: - \verbatim - myRand = rand(123) - \endverbatim - where the argument of rand is the seed. - - To get a random number between "low" and "high": - \verbatim - rnd = myRand.get_rand(low,high) - \endverbatim -*/ - -double proxy_rand(double low, double high, int seed,bool init) -{ - static int - stat, - a = 321, - b = 231, - c = 13; - - double - w, - rnd; - - int - place; - - if (init) { - stat = seed * 1000; - rnd = 0.0;; - } - else { - w = high - low; - place = a * stat; - place = (int)(place/b); - rnd = ((double)(place % c))/((double)c); - place = rnd * 1000000; - stat = place; - rnd = low + w*rnd; - } - - return(rnd); -} - -/* - Generating random coordinates - @brief Creates a system of size "nats = Number of atoms" with coordindates having - a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. - - @param nats The total number of atoms - @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] -*/ - -int get_random_coordinates(int nats, double *coords) -{ - int - *seedin, - ssize, - length, - atomsCounter, - i, - j, - k; - - double - rnd, - latticeParam; - - length = (int)(pow((double)nats,1./3.)) + 1; - latticeParam = 2.0; - atomsCounter = 0; - rnd = proxy_rand(0.,0.,111,true); // set the random number seed - for (i = 0; i < length; i++) { - for (j = 0; j < length; j++) { - for (k = 0; k < length; k++) { - atomsCounter = atomsCounter + 1; - size_t ofst = (atomsCounter - 1) * 3; - if (atomsCounter > nats) break; - rnd = proxy_rand(-1.,1.,0,false); - coords[ofst + 0] = i * latticeParam + rnd; - printf("%lg\n",coords[ofst + 0]); - rnd = proxy_rand(-1.,1.,0,false); - coords[ofst + 1] = j * latticeParam + rnd; - rnd = proxy_rand(-1.,1.,0,false); - coords[ofst + 2] = k * latticeParam + rnd; - } - } - } - return(0); -} - -/* - Computes a Hamiltonian based on a single "s-like" orbitals per atom. - @author Anders Niklasson - @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances - \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. - - @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] - @param types Index type for each atom in the system. Type for first atom = type[0] (not used yet) - @return H 2D numpy array of Hamiltonian elements - @param verb Verbosity. If True is passed, information is printed. -*/ - -int get_hamiltonian(int nats, double *coords, int *atomTypes, double *H, bool verb) -{ - int - *N, - Nocc, - m, - n, - hdim, - i, - j, - k, - cnt; - - double - *xx, - a, - c, - x, - b, - d, - y, - tmp, - dvec[3], - dist2, - eps, - decay_min; - - hdim = nats; - Nocc = (int)((double)hdim/4.0); - eps = 1.0e-9; - decay_min = 0.1; - m = 78; - a = 3.817632; c = 0.816371; x = 1.029769; n = 13; - b = 1.927947; d = 3.386142; y = 2.135545; - if (H == NULL) { - perror("get_hamiltonian requires allocated H\n"); - exit(1); - } - if (verb) printf("Constructing a simple Hamiltonian for the full system\n"); - cnt = 0; - for (i = 0; i < hdim; i++) { - size_t iofst = i * 3; - x = fmod((a * x + c), (double)m); - y = fmod((b * y + d), (double)n); - for (j = i; j < hdim; j++) { - size_t jofst = j * 3; - dist2 = 0.0; - for (k = 0; k < 3; k++) { - dvec[k] = coords[iofst + k] - coords[jofst + k]; - dist2 += dvec[k]*dvec[k]; - } - tmp = (x/(double)m) * exp(-(y/(double)n + decay_min)*dist2); - H[i*nats + j] = tmp; - H[j*nats + i] = tmp; - } - } - return(0); -} -/* - Computes the Density matrix from a given Hamiltonian. - @author Anders Niklasson - @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ - \f[ \rho = \sum^{nocc} v_k v_k^T \f] - where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ - - @param H Hamiltonian mtrix - @param Nocc Number of occupied orbitals - @param verb Verbosity. If True is passed, information is printed. - - @return D Density matrix - -*/ - -int get_densityMatrix(int nats, double *H, int Nocc, double *D, bool verb) -{ - double - *Q, - *E, - mu, - *work; - - int - info, - lwork, - i, - j, - k, - hdim, - homoIndex, - lumoIndex; - - char - jobz = 'V', - uplo = 'U'; - - if (verb) printf("Computing the Density matrix"); - - hdim = nats; - lwork = 3*hdim - 1; - - Q = (double *)malloc(hdim*hdim*sizeof(double)); - work = (double *)malloc(lwork*sizeof(double)); - E = (double *)malloc(hdim*sizeof(double)); - memcpy(Q,H,hdim*hdim*sizeof(double)); - LAPACK_dsyev(&jobz,&uplo,&hdim,Q,&hdim,E,work,&lwork,&info); - if (verb) { - printf("Eigenvalues:\n"); - for (i = 0; i < hdim; i++) { - printf("%g\n",E[i]); - } - homoIndex = Nocc; - lumoIndex = Nocc + 1; - mu = 0.5*(E[homoIndex] + E[lumoIndex]); - memset(D,0,hdim*hdim*sizeof(double)); - for (i = 0; i < hdim; i++) { - size_t iofst = i * hdim; - for (j = 0; j < hdim; j++) { - size_t jofst = j * hdim; - for (k = 0; k < hdim; k++) { - if (E[k] < mu) { - D[iofst + j] = D[iofst + j] + Q[iofst + k]*Q[jofst + k]; - } - } - } - } - if (verb) printf("Chemical potential = %g\n",mu); - return(0); - } -} diff --git a/proxies/fortran/CMakeLists.txt b/proxies/fortran/CMakeLists.txt deleted file mode 100644 index 0c81ac04..00000000 --- a/proxies/fortran/CMakeLists.txt +++ /dev/null @@ -1,107 +0,0 @@ -cmake_minimum_required(VERSION 3.10.0) -project(appendix C CXX Fortran) - -set(dir ${CMAKE_CURRENT_SOURCE_DIR}/build/) -set(CMAKE_BUILD_DIRECTORY ${dir}) -set(CMAKE_CURRENT_BINARY_DIR ${dir}) - -include(FindPkgConfig) - -find_package(BML CONFIG QUIET) -pkg_check_modules(BML REQUIRED bml) -list(APPEND LINK_LIBRARIES BML::bml) -list(APPEND LINK_LIBRARIES ${BML_LDFLAGS}) -message(STATUS "Found bml: ${BML_LDFLAGS}") - -find_package(PROGRESS CONFIG QUIET) -pkg_check_modules(PROGRESS REQUIRED progress) -message(STATUS "Found progress: ${PROGRESS_LDFLAGS}") -list(APPEND LINK_LIBRARIES ${PROGRESS_LDFLAGS}) - -find_library(FOUND_METIS metis) - if(NOT FOUND_METIS) - message(FATAL_ERROR "Could not find metis library") - endif() - message(STATUS "Found metis: ${FOUND_METIS}") - add_definitions(-DDO_GRAPHLIB) - list(APPEND LINK_LIBRARIES ${FOUND_METIS}) - - get_filename_component(METIS_LIB ${FOUND_METIS} DIRECTORY) - list(APPEND LINK_LIBRARIES "-L/${METIS_LIB} -lmetis") - -if(PROGRESS_MPI) - message(STATUS "Will build with MPI") - add_definitions(-DDO_MPI) -endif() - -if(PROGRESS) - message(STATUS "Will build with MPI") - add_definitions(-DUSEPROGRESS) -endif() - -if(SANITY_CHECK) - message(STATUS "Will build with SANITY CHECK") - add_definitions(-DSANITY_CHECK) -endif() - -message(STATUS "Extra FC Flags ${EXTRA_FCFLAGS}") - -if(DEFINED EXTRA_FCFLAGS) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${EXTRA_FCFLAGS}") -endif() - - -if(LIB) - list(APPEND SHAREDLIB "-fPIC -shared") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${EXTRA_FCFLAGS} ${SHAREDLIB}") -endif() - -message(STATUS "Project sources = " ${PROJECT_SOURCE_DIR} ) -include_directories(${CMAKE_BINARY_DIR}/) -include_directories(${BML_INCLUDEDIR}) -include_directories(${PROGRESS_INCLUDEDIR}) - -list( - APPEND common_sources -"proxy_a_lib.F90" -"proxy_a_mod.F90" - ) - - -function(progress_appendix myappendix main_and_srcs) -list(GET main_and_srcs 0 main) -include_directories(${PROGRESS_INCLUDEDIR}) -add_executable(${myappendix} ${main} ${common_sources} ${extras}) -target_sources(${myappendix} PRIVATE ${ARGN}) -target_link_libraries(${myappendix} PUBLIC - ${LINK_LIBRARIES}) - set_target_properties(${myappendix} - PROPERTIES - LINK_FLAGS "") - #add_subdirectory(hamiltonian) -endfunction(progress_appendix) - -function(progress_appendix_library myappendix main_and_srcs) -list(GET main_and_srcs 0 main) -include_directories(${PROGRESS_INCLUDEDIR}) -add_library(${myappendix} SHARED ${main} ${common_sources} ${extras}) -target_sources(${myappendix} PRIVATE ${ARGN}) -target_link_libraries(${myappendix} PUBLIC - ${LINK_LIBRARIES}) - set_target_properties(${myappendix} - PROPERTIES - LINK_FLAGS "") -endfunction(progress_appendix_library) - -if(LIB) - progress_appendix_library( proxya_fortran proxy_a_lib.F90 proxy_a_mod.F90 ) - #progress_appendix( gpmd_a gpmd_secuential.F90 gpmdcov_lib_mod.F90) -else() - progress_appendix( proxya proxy_a.F90 ) -endif() - -SET(DESTINATION ${PROJECT_BINARY_DIR}) -install(FILES ${CMAKE_BINARY_DIR}/progress.pc - DESTINATION ${PROJECT_BINARY_DIR}) - -SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) diff --git a/proxies/fortran/compile.sh b/proxies/fortran/compile.sh deleted file mode 100644 index 65bce240..00000000 --- a/proxies/fortran/compile.sh +++ /dev/null @@ -1 +0,0 @@ -gfortran proxy_a_mod.F90 proxy_a.F90 -o proxy_a -llapack -lblas diff --git a/proxies/fortran/compile_with_cmake.sh b/proxies/fortran/compile_with_cmake.sh deleted file mode 100644 index 97624cd6..00000000 --- a/proxies/fortran/compile_with_cmake.sh +++ /dev/null @@ -1,24 +0,0 @@ -# Remove the build directory and create a new one -rm -rf build -mkdir build -# Move into the build directory -cd build -METIS_LIB="$HOME/metis-5.1.0/build/Linux-x86_64/libmetis" -METIS_INC="$HOME/metis-5.1.0/build/Linux-x86_64/include" -PROGRESS_LIB="$HOME/qmd-progress/install/" -PROGRESS_INC="$HOME/qmd-progress/install/include" -BML_LIB="$HOME/bml/install/" -BML_INC="$HOME/bml/install/include" - - -cmake -DPROGRESS="yes" -DCMAKE_Fortran_COMPILER="gfortran" -DPROGRESS_MPI="no" \ - -DEXTRA_FCFLAGS="-Wall -Wunused -fopenmp -lm -fPIC -g -O0 -fcheck=all --check=bounds -lmetis -lm -fPIC" \ - -DLIB="yes" -DLATTE_PREC="DOUBLE" \ - -DCMAKE_PREFIX_PATH="$PROGRESS_LIB;$PROGRESS_INC;$BML_LIB;$BML_INC;$METIS_LIB;$METIS_INC" ../ -make - -cp libproxya_fortran.so proxya_fortran.so - - - - diff --git a/proxies/fortran/proxy_a.F90 b/proxies/fortran/proxy_a.F90 deleted file mode 100644 index 41286a94..00000000 --- a/proxies/fortran/proxy_a.F90 +++ /dev/null @@ -1,31 +0,0 @@ -program proxy_a - use proxy_a_mod - implicit none - real(dp),allocatable :: coords(:,:) - integer,allocatable :: types(:) - real(dp), allocatable :: H(:,:),D(:,:) - integer :: nats,nocc,i,j - - nats = 2 - - call get_random_coordinates(nats,coords) - do i = 1,nats - write(*,*)coords(1,i) - enddo - allocate(types(nats)); types = 1 - allocate(H(nats,nats)) - call get_hamiltonian(coords,types,H,.true.) - write(*,*)"Hamiltonian matrix" - do i=1,nats - do j=1,nats - write(*,*)H(i,j) - enddo - enddo - - allocate(D(nats,nats)) - nocc = int(real(nats,dp)/2.0_dp) - call get_densityMatrix(H,nocc,D,.true.) - write(*,*)"Density matrix=",D - -end program proxy_a - diff --git a/proxies/fortran/proxy_a_lib.F90 b/proxies/fortran/proxy_a_lib.F90 deleted file mode 100644 index 9723abbf..00000000 --- a/proxies/fortran/proxy_a_lib.F90 +++ /dev/null @@ -1,113 +0,0 @@ -!> Library interface -!! \brief This file is used to interface to python via iso_c_binding -!! library. - -!> Get Hamiltonian -!! \brief General fortran proxy function to get the Hamiltonian -!! \param nats Number of atoms -!! \param norbs Number of atoms -!! \param coords_in Positions for all the atoms -!! \param atomTypes Atom types indices for every atom in the system -!! \param H_out Hamiltonian matrix -!! \param S_out Overlap matrix -!! \param verb_in Verbosity level -!! -function proxya_get_hamiltonian(nats,norbs,coords_in,atomTypes_in,H_out,S_out,verb_in) & - & result(err) bind(c, name='proxya_get_hamiltonian') - use iso_c_binding, only: c_char, c_double, c_int, c_bool - use proxy_a_mod - implicit none - integer(c_int), intent(in), value :: nats - integer(c_int), intent(in), value :: norbs - real(c_double), intent(in) :: coords_in(3*nats) - integer(c_int), intent(in) :: atomTypes_in(nats) - logical(c_bool), intent(in), value :: verb_in - logical(c_bool) :: err - real(c_double), intent(inout) :: H_out(norbs,norbs) - real(c_double), intent(inout) :: S_out(norbs,norbs) - - real(dp), allocatable :: coords(:,:) - integer, allocatable :: atomTypes(:) - integer :: i - real(dp), allocatable :: H(:,:) - real(dp), allocatable :: S(:,:) - logical :: verb - - err = .true. - - allocate(coords(3,nats)) !indices will need to be flipped - allocate(atomTypes(nats)) - allocate(H(norbs,norbs)) - allocate(S(norbs,norbs)) - - !Note that arrays appear in another order. We need to rearange - !the data. This is because of the column mayor (in python) vs. - !row mayor in fortran. - do i = 1, nats - coords(1,i) = coords_in((i-1)*3 + 1) - coords(2,i) = coords_in((i-1)*3 + 2) - coords(3,i) = coords_in((i-1)*3 + 3) - enddo - - atomTypes = atomTypes_in - - !A workaround to avoid fortran to c (one bit) boolean issues - if(verb_in .eqv. (1 == 1))then - verb = .true. - else - verb = .false. - endif - - call get_hamiltonian(coords,atomTypes,H,S,verb) - - H_out = H - S_out = S - - err = .false. - -end function proxya_get_hamiltonian - - -!> Get density matrix -!! \brief General fortran proxy function to get the density matrix -!! \param norbs Number of atoms -!! \param nocc Number of occupied orbitals -!! \param ham_in Hamiltonian matrix input -!! \param D_out Density matrix output -!! \param verb_in Verbosity level -!! -function proxya_get_density_matrix(norbs,nocc,ham_in,D_out,verb_in) & - & result(err) bind(c, name='proxya_get_density_matrix') - use iso_c_binding, only: c_char, c_double, c_int, c_bool - use proxy_a_mod - implicit none - integer(c_int), intent(in), value :: norbs - integer(c_int), intent(in), value :: nocc - real(c_double), intent(in) :: ham_in(norbs*norbs) - logical(c_bool), intent(in), value :: verb_in - logical(c_bool) :: err - real(c_double), intent(inout) :: D_out(norbs*norbs) - - real(dp), allocatable :: coords(:,:) - integer, allocatable :: atomTypes(:) - integer :: i - real(dp), allocatable :: D(:,:) - real(dp), allocatable :: ham(:,:) - logical :: verb - - err = .true. - - allocate(D(norbs,norbs)) - allocate(ham(norbs,norbs)) - !From flatt to matrix - do i = 1,norbs - ham(i,:) = ham_in(((i-1)*norbs + 1):i*norbs) - enddo - - call get_densityMatrix(ham,Nocc,D,verb) - !From matrix to faltt - do i = 1,norbs - D_out(((i-1)*norbs + 1):i*norbs) = D(i,:) - enddo - -end function proxya_get_density_matrix diff --git a/proxies/fortran/proxy_a_mod.F90 b/proxies/fortran/proxy_a_mod.F90 deleted file mode 100644 index bf9ed999..00000000 --- a/proxies/fortran/proxy_a_mod.F90 +++ /dev/null @@ -1,232 +0,0 @@ -!!> proxy code a -!! A prototype engine that: -!! - Reads the total number of atoms -!! - Constructs a set of random coordinates -!! - Constructs a simple Hamiltonian -!! - Computes the Density matrix from the Hamiltonian -!! -module proxy_a_mod - - implicit none - - integer, parameter :: dp = kind(1.0D0) !Precision - public :: get_random_coordinates, get_densityMatrix - -!!> Simple random number generator -!! This is important in order to compare across codes -!! written in different languages. -!! -!! To initialize: -!! \verbatim -!! myRand = rand(123) -!! \endverbatim -!! where the argument of rand is the seed. -!! -!! To get a random number between "low" and "high": -!! \verbatim -!! rnd = myRand.get_rand(low,high) -!! \endverbatim -!! -type, public :: rand - integer :: a = 321 - integer :: b = 231 - integer :: c = 13 - integer :: seed - integer :: stat - contains - procedure :: init => rand_init - procedure :: get_rand => rand_get_rand -end type rand -contains - - subroutine rand_init(self,seed) - implicit none - class(rand), intent(inout) :: self - integer, intent(in) :: seed - self%seed = seed - self%stat = seed*1000 - end subroutine rand_init - - function rand_get_rand(self,low,high) result(rnd) - implicit none - class(rand), intent(inout) :: self - real(dp) :: w - real(dp) :: rnd - real(dp), intent(in) :: low, high - integer :: place - w = high - low - place = self%a*self%stat - place = int(place/self%b) - rnd = real(mod(place,self%c))/real(self%c) - place = rnd*1000000 - self%stat = place - rnd = low + w*rnd - end function rand_get_rand - - - !!> Generating random coordinates - !! @brief Creates a system of size "nats = Number of atoms" with coordindates having - !! a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. - !! - !! @param nats The total number of atoms - !! @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] - !! - subroutine get_random_coordinates(nats,coords) - implicit none - integer :: nats,ssize,length,atomsCounter - integer :: i,j,k - integer, allocatable :: seedin(:) - real(dp), allocatable :: coords(:,:) - real(dp) :: rnd,latticeParam - type(rand) :: myrand - !Get random coordinates - length = int(real(nats)**(1.0/3.0)) + 1 - allocate(coords(3,nats)) - latticeParam = 2.0 - atomsCounter = 0 - call myrand%init(111) - do i = 1,length - do j = 1,length - do k = 1,length - atomsCounter = atomsCounter + 1 - if(atomsCounter > nats) exit - rnd = myrand%get_rand(-1.0_dp,1.0_dp) - coords(1,atomsCounter) = (i-1)*latticeParam + rnd - write(*,*)coords(1,atomsCounter) - rnd = myrand%get_rand(-1.0_dp,1.0_dp) - coords(2,atomsCounter) = (j-1)*latticeParam + rnd - rnd = myrand%get_rand(-1.0_dp,1.0_dp) - coords(3,atomsCounter) = (k-1)*latticeParam + rnd - enddo - enddo - enddo - return - end subroutine get_random_coordinates - - !! Computes a Hamiltonian based on a single "s-like" orbitals per atom. - ! @author Anders Niklasson - ! @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances - ! \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. - ! - ! @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] - ! @param types Index type for each atom in the system. Type for first atom = type[0] (not used yet) - ! @return H 2D numpy array of Hamiltonian elements - ! @param verb Verbosity. If True is passed, information is printed. - ! - subroutine get_hamiltonian(coords,atomTypes,H,S,verb) - implicit none - integer :: n,Nocc,m,hdim - logical, intent(in) :: verb - real(dp), allocatable :: xx(:) - real(dp), allocatable, intent(in) :: coords(:,:) - integer, allocatable, intent(in) :: atomTypes(:) - real(dp), allocatable, intent(out) :: H(:,:) - real(dp), allocatable, intent(out) :: S(:,:) - real(dp) :: a,c,x,b,d,y,tmp,dist,eps,decay_min - integer :: i,j,k,cnt - - hdim = size(coords,dim=2); Nocc = int(real(hdim)/4.0); eps = 1e-9; decay_min = 0.1; m = 78; - a = 3.817632; c = 0.816371; x = 1.029769; n = 13; - b = 1.927947; d = 3.386142; y = 2.135545; - if(.not. allocated(H)) allocate(H(hdim,hdim)) - if(verb) write(*,*)"Constructing a simple Hamiltonian for the full system" - cnt = 0 - do i = 1,hdim - x = mod((a*x+c),real(m)) - y = mod((b*y+d),real(n)) - do j = i,hdim - dist = norm2(coords(:,i)-coords(:,j)) - tmp = (x/real(m))*exp(-(y/real(n) + decay_min)*dist**2) - H(i,j) = tmp - H(j,i) = tmp - enddo - enddo - return - end subroutine get_hamiltonian - - !!> Computes the Density matrix from a given Hamiltonian. - !! @author Anders Niklasson - !! @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ - !! \f[ \rho = \sum^{nocc} v_k v_k^T \f] - !! where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ - !! - !! @param H Hamiltonian mtrix - !! @param Nocc Number of occupied orbitals - !! @param verb Verbosity. If True is passed, information is printed. - !! - !! @return D Density matrix - !! - subroutine get_densityMatrix(H,Nocc,D,verb) -#ifdef USEPROGRESS - use bml - use prg_densitymatrix_mod -#endif - - implicit none - integer :: Nocc - logical, intent(in) :: verb - real(dp), allocatable, intent(in) :: H(:,:) - real(dp), allocatable, intent(out) :: D(:,:) - real(dp), allocatable :: Q(:,:), E(:),tmpmat(:,:),f(:,:) - real(dp) :: mu - integer :: info, lwork,i,j,k,norbs,homoIndex,lumoIndex - real(dp), allocatable :: work(:) - real(dp) :: bndfil - character(LEN=1), parameter :: jobz = 'V', uplo = 'U' - -#ifdef USEPROGRESS - type(bml_matrix_t) :: D_bml,H_bml -#endif - if(verb) write(*,*)"Computing the Density matrix" - - norbs = size(H,dim=1) - -#ifdef USEPROGRESS - bndfil = real(nocc)/real(norbs) - call bml_zero_matrix(bml_matrix_dense,bml_element_real,& - &dp,norbs,norbs,D_bml) - call bml_zero_matrix(bml_matrix_dense,bml_element_real,& - &dp,norbs,norbs,H_bml) - call bml_import_from_dense(bml_matrix_dense,H,H_bml,0.0_dp,norbs) - call prg_build_density_t0(H_bml,D_bml,0.0_dp,bndfil,E) - call bml_export_to_dense(D_bml,D) - call bml_deallocate(D_bml) - call bml_deallocate(H_bml) -#else - lwork = 3*norbs - 1 - allocate(Q(norbs,norbs)) - allocate(work(lwork)) - allocate(E(norbs)) - Q = H - call dsyev(jobz,uplo,norbs,Q,norbs,E,work,lwork,info) - if(verb)write(*,*)"Eigenvalues",E - homoIndex = Nocc - lumoIndex = Nocc + 1 - mu = 0.5*(E(homoIndex) + E(lumoIndex)) - allocate(D(norbs,norbs)) - allocate(f(norbs,norbs)) - allocate(tmpmat(norbs,norbs)) - D = 0.0_dp - f = 0.0_dp - - do i = 1,norbs - if (E(i) < mu) then - f(i,i) = 1.0_dp - endif - enddo - - CALL DGEMM('N', 'N', norbs, norbs, norbs, 1.0_dp, & - tmpmat, norbs, Q, norbs, 0.0_dp, f, norbs) !Q*f - CALL DGEMM('N', 'T', norbs, norbs, norbs, 1.0_dp, & - tmpmat, norbs, Q, norbs, 0.0_dp, D, norbs) !(Q*f)*Qt - -#endif - - return - - end subroutine get_densityMatrix - - -end module proxy_a_mod - - diff --git a/proxies/matlab/AtomicDensityMatrix.m b/proxies/matlab/AtomicDensityMatrix.m deleted file mode 100644 index 3b54d659..00000000 --- a/proxies/matlab/AtomicDensityMatrix.m +++ /dev/null @@ -1,36 +0,0 @@ -function [D_atomic] = AtomicDensityMatrix(Nr_atoms,H_INDEX_START,H_INDEX_END,HDIM,Znuc); - -D_atomic = zeros(1,HDIM); - -INDEX = 0; -for I = 1:Nr_atoms - N_orb = H_INDEX_END(I)-H_INDEX_START(I) + 1; - if N_orb == 1 - INDEX = INDEX + 1; - D_atomic(INDEX) = Znuc(I); - else - if Znuc(I) <= 2 - INDEX = INDEX + 1; - D_atomic(INDEX) = Znuc(I); - - INDEX = INDEX + 1; - D_atomic(INDEX) = 0; - INDEX = INDEX + 1; - D_atomic(INDEX) = 0; - INDEX = INDEX + 1; - D_atomic(INDEX) = 0; - - else - INDEX = INDEX + 1; - D_atomic(INDEX) = 2; - - INDEX = INDEX + 1; - OCC = (Znuc(I)-2)/3; - D_atomic(INDEX) = OCC; - INDEX = INDEX + 1; - D_atomic(INDEX) = OCC; - INDEX = INDEX + 1; - D_atomic(INDEX) = OCC; - end - end -end diff --git a/proxies/matlab/BondIntegral.m b/proxies/matlab/BondIntegral.m deleted file mode 100644 index af89ff07..00000000 --- a/proxies/matlab/BondIntegral.m +++ /dev/null @@ -1,18 +0,0 @@ -function h = BondIntegral(dR,f) - -%%% dR: distance between atoms -%%% f: paramters/coefficeints for the bond integral - - if (dR <= f(7)) - RMOD = dR - f(6); - POLYNOM = RMOD*(f(2) + RMOD*(f(3) + RMOD*(f(4) + f(5)*RMOD))); - X = exp(POLYNOM); - elseif (dR > f(7)) & (dR < f(8)) - RMINUSR1 = dR - f(7); - X = f(9) + RMINUSR1*(f(10) + RMINUSR1*(f(11) + RMINUSR1*(f(12) + RMINUSR1*(f(13) + RMINUSR1*f(14))))); - else - X = 0; - end - h = f(1)*X; - - diff --git a/proxies/matlab/COORD.m b/proxies/matlab/COORD.m deleted file mode 100644 index 996dec8b..00000000 --- a/proxies/matlab/COORD.m +++ /dev/null @@ -1,51 +0,0 @@ -C 4.420001 4.520000 4.580000 -H 3.952899 3.984296 3.748600 -H 5.071440 5.306013 4.187320 -H 5.011723 3.820633 5.177613 -H 3.643938 4.969059 5.206467 -C 8.306417 8.922489 11.058251 -H 7.865654 8.396639 10.200538 -H 8.992247 9.727094 10.639195 -H 8.904344 8.233497 11.656443 -H 7.543664 9.375350 11.675742 -C 6.610673 10.624374 6.001819 -H 6.160123 10.106479 5.151284 -H 7.268551 11.425549 5.588731 -H 7.221693 9.947533 6.581240 -H 5.823319 11.071655 6.587968 -C 9.366899 6.173791 5.081823 -H 8.933342 5.638478 4.223453 -H 10.058373 6.941235 4.689739 -H 9.968428 5.474563 5.664468 -H 8.613620 6.610354 5.691975 -C 9.478122 12.338314 9.397453 -H 9.018586 11.787411 8.593005 -H 10.173401 13.102222 9.043487 -H 10.104399 11.631090 9.991622 -H 8.723496 12.779712 10.032465 -C 12.611055 8.972684 9.821024 -H 12.157151 8.430239 8.991073 -H 13.272277 9.726794 9.406545 -H 13.215367 8.258123 10.422758 -H 11.851780 9.389042 10.460303 -C 5.504395 5.739892 10.170246 -H 4.984621 5.201157 9.328596 -H 6.132797 6.531114 9.786514 -H 6.033806 5.041772 10.791585 -H 4.701655 6.239441 10.792016 -C 10.749151 9.799286 5.751812 -H 10.273222 9.228897 4.965396 -H 11.415380 10.553758 5.355932 -H 11.355674 9.087793 6.356916 -H 9.991911 10.216903 6.404219 -C 6.563228 7.033042 6.958737 -H 6.129016 6.519083 6.097352 -H 7.207507 7.808931 6.574565 -H 7.165189 6.313190 7.581883 -H 5.799429 7.501422 7.567627 -C 12.912482 12.239536 7.755493 -H 12.460887 11.708290 6.915681 -H 13.592325 13.037021 7.373497 -H 13.532606 11.558002 8.323343 -H 12.185690 12.735960 8.374372 -~ diff --git a/proxies/matlab/CoulombMatrix.m b/proxies/matlab/CoulombMatrix.m deleted file mode 100644 index c0bf4ccc..00000000 --- a/proxies/matlab/CoulombMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -function [CC] = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nr_atoms,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); - - dq_J = zeros(1,Nr_atoms); - CC = zeros(Nr_atoms); - Coulomb_Pot_k = 0; - for J = 1:Nr_atoms - dq_J(J) = 1; - for I = 1:Nr_atoms - [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); - end - [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); - Coulomb_Pot_dq_J = Coulomb_Pot_Real+Coulomb_Pot_k; - CC(:,J) = Coulomb_Pot_dq_J; - dq_J(J) = 0; - end -% CC = 0.5*(CC+CC'); diff --git a/proxies/matlab/DM_Fermi.m b/proxies/matlab/DM_Fermi.m deleted file mode 100644 index 4e7aebf1..00000000 --- a/proxies/matlab/DM_Fermi.m +++ /dev/null @@ -1,37 +0,0 @@ - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - function [P0,mu0] = DM_Fermi(H0,T,mu_0,Ne,m,eps,MaxIt) - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - N = max(size(H0)); - I = eye(N); - mu0 = mu_0; - OccErr = 1; - Cnt = 0; - while OccErr > eps - %kB = 6.33366256e-6; % Ry/K; - %kB = 3.166811429e-6; % Ha/K; - kB = 8.61739e-5; % eV/K; - beta = 1/(kB*T); % Temp in Kelvin - cnst = 2^(-2-m)*beta; - P0 = 0.5*I - cnst*(H0-mu0*I); - for i = 1:m - P02 = P0*P0; - ID0 = inv(2*(P02-P0) + I); - P_0 = ID0*P02; - P0 = P_0; - end - TrdPdmu = trace(beta*P0*(I-P0)); - if abs(TrdPdmu) > 1e-8 - mu0 = mu0 + (Ne - trace(P0))/TrdPdmu; - OccErr = abs(trace(P0)-Ne); - else - OccErr = 0; - end - Cnt = Cnt + 1; - if (Cnt >= MaxIt) - OccErr; - OccErr = 0; - Cnt = MaxIt; - end - end - % Adjust occupation - P0 = P0 + ((Ne - trace(P0))/TrdPdmu)*beta*P0*(I-P0); diff --git a/proxies/matlab/DM_PRT_Fermi.m b/proxies/matlab/DM_PRT_Fermi.m deleted file mode 100644 index dea0e2c0..00000000 --- a/proxies/matlab/DM_PRT_Fermi.m +++ /dev/null @@ -1,43 +0,0 @@ - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - function [P0,P1,mu0,mu1] = DM_PRT_Fermi(H0,H1,T,mu_0,mu1,Ne,m,eps,MaxIt) - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - N = max(size(H0)); - I = eye(N); mu_1_start = mu1; - mu0 = mu_0; mu1 = mu1; % Intial guess - OccErr = 1; - Cnt = 0; - while OccErr > eps - %kB = 6.33366256e-6; % Ry/K; - %kB = 3.166811429e-6; % Ha/K; - kB = 8.61739e-5; % eV/K; - beta = 1/(kB*T); % Temp in Kelvin - cnst = 2^(-2-m)*beta; - P0 = 0.5*I - cnst*(H0-mu0*I); - P1 = -cnst*(H1-mu1*I); - for i = 1:m - % hh = sort(real(eig(P0))); - P02 = P0*P0; - DX1 = P0*P1+P1*P0; - ID0 = inv(2*(P02-P0) + I); - P_0 = ID0*P02; - P_1 = ID0*(DX1+2*(P1-DX1)*P_0); - P0 = P_0; P1 = P_1; - end - TrdPdmu = trace(beta*P0*(I-P0)); - if abs(TrdPdmu) > 1e-9 - mu0 = mu0 + (Ne - trace(P0))/TrdPdmu; - mu1 = mu1 + (0 - trace(P1))/TrdPdmu; - OccErr = abs(trace(P0+P1)-Ne); - else - OccErr = 0; - end - Cnt = Cnt + 1; - if (Cnt >= MaxIt) - OccErr; - OccErr = 0; - Cnt = MaxIt; - end - end - % Adjust occupation - P0 = P0 + ((Ne - trace(P0))/TrdPdmu)*beta*P0*(I-P0); - P1 = P1 - trace(P1)*I/N; diff --git a/proxies/matlab/DensityMatrix.m b/proxies/matlab/DensityMatrix.m deleted file mode 100644 index 50c3b0d3..00000000 --- a/proxies/matlab/DensityMatrix.m +++ /dev/null @@ -1,13 +0,0 @@ -function [D,mu] = DensityMatrix(H,nocc) - -N = max(size(H)); -[Q,E] = eig(H); -e = sort(diag(E)); -mu = 0.5*(e(nocc)+e(nocc+1)); -D = zeros(N); -for i = 1:N - if e(i) < mu - D = D + Q(:,i)*Q(:,i)'; - end -end - diff --git a/proxies/matlab/DensityMatrixPRT.m b/proxies/matlab/DensityMatrixPRT.m deleted file mode 100644 index c3cde2cd..00000000 --- a/proxies/matlab/DensityMatrixPRT.m +++ /dev/null @@ -1,34 +0,0 @@ -function [D,D1] = DensityMatrixPRT(H0,H1,nocc) - -N = max(size(H0)); -[Q,E] = eig(H0); -e = diag(E); -mu = 0.5*(e(nocc)+e(nocc+1)); -D = zeros(N); -for i = 1:N - if e(i) < mu - D = D + Q(:,i)*Q(:,i)'; - end -end - -Q1 = 0*Q; -for i = 1:N - if e(i) < mu - for j = 1:N - H1Tmp = (Q(:,j)'*H1*Q(:,i)/(e(i) -e(j))); - if j ~= i - Q1(:,i) = Q1(:,i) + H1Tmp*Q(:,j); - end - end - end -end -D1 = Q1*Q' + Q*Q1'; % Calculated using Rayleigh Schrodinger Pertrubations theory - -% OccErr1 = trace(D1)-0 -% IdErr1 = norm(D1*D+D*D1-D1) -% ComErr1 = norm(D1*H0-H0*D1 + D*H1-H1*D) -% pause - - - - diff --git a/proxies/matlab/Energy.m b/proxies/matlab/Energy.m deleted file mode 100644 index 7389f4f0..00000000 --- a/proxies/matlab/Energy.m +++ /dev/null @@ -1,34 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Total energy calculation % -%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function [Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,U,Efield,D0,C,D,q,Rx,Ry,Rz,f,Te); - -%% E = 2*trace(H0*(D-D0)) + 0.5*sum_ij{i!=j} (qi*Cij*qj) + 0.5*sum_i qi^2*Ui - Efield*mu - 2*Te*S_ent -%% dipole = mu(:) = sum_i qi*R(i,:); qi = 2*(D_ii-D0_ii) - - -kB = 8.61739e-5; % eV/K; -N = max(size(q)); -D0 = diag(D0); -Eband0 = 2*trace(H0*(D-D0)); % Single-particle/band energy - -Ecoul = 0.5*q'*C*q; % Coulomb energy -for i = 1:N - Ecoul = Ecoul + 0.5*q(i)*U(i)*q(i); -end - -Edipole = 0; -for i = 1:N - Edipole = Edipole - q(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); % External-field-Dipole interaction energy -end - -S_ent = 0; eps = 1e-9 -for i = 1:N - if (f(i) < 1-eps) & (f(i) > eps) - S_ent = - kB*(f(i)*log(f(i)) + (1-f(i))*log(1-f(i))); - end -end - -Etot = Eband0 + Ecoul + Edipole - 2*Te*S_ent; % Total energy - - diff --git a/proxies/matlab/Energy_save_00.m b/proxies/matlab/Energy_save_00.m deleted file mode 100644 index 7389f4f0..00000000 --- a/proxies/matlab/Energy_save_00.m +++ /dev/null @@ -1,34 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Total energy calculation % -%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function [Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,U,Efield,D0,C,D,q,Rx,Ry,Rz,f,Te); - -%% E = 2*trace(H0*(D-D0)) + 0.5*sum_ij{i!=j} (qi*Cij*qj) + 0.5*sum_i qi^2*Ui - Efield*mu - 2*Te*S_ent -%% dipole = mu(:) = sum_i qi*R(i,:); qi = 2*(D_ii-D0_ii) - - -kB = 8.61739e-5; % eV/K; -N = max(size(q)); -D0 = diag(D0); -Eband0 = 2*trace(H0*(D-D0)); % Single-particle/band energy - -Ecoul = 0.5*q'*C*q; % Coulomb energy -for i = 1:N - Ecoul = Ecoul + 0.5*q(i)*U(i)*q(i); -end - -Edipole = 0; -for i = 1:N - Edipole = Edipole - q(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); % External-field-Dipole interaction energy -end - -S_ent = 0; eps = 1e-9 -for i = 1:N - if (f(i) < 1-eps) & (f(i) > eps) - S_ent = - kB*(f(i)*log(f(i)) + (1-f(i))*log(1-f(i))); - end -end - -Etot = Eband0 + Ecoul + Edipole - 2*Te*S_ent; % Total energy - - diff --git a/proxies/matlab/Ewald_Real_Space.m b/proxies/matlab/Ewald_Real_Space.m deleted file mode 100644 index 7eccbfa0..00000000 --- a/proxies/matlab/Ewald_Real_Space.m +++ /dev/null @@ -1,97 +0,0 @@ -function [COULOMBV,FCOUL] = Ewald_Real_Space(I,RX,RY,RZ,LBox,DELTAQ,U,Element_Type,Nr_atoms,COULACC,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType) - -ccnt = 0; -COULVOL = LBox(1)*LBox(2)*LBox(3); -SQRTX = sqrt(-log(COULACC)); -CALPHA = sqrt(pi)*((TIMERATIO*Nr_atoms/(COULVOL^2))^(1/6)); -COULCUT = SQRTX/CALPHA; -CALPHA2 = CALPHA*CALPHA; -if (COULCUT > 50) - COULCUT = 50; - CALPHA = SQRTX/COULCUT; -end -COULCUT2 = COULCUT*COULCUT; -CALPHA2 = CALPHA*CALPHA; - -RELPERM = 1; -KECONST = 14.3996437701414*RELPERM; -TFACT = 16.0/(5.0*KECONST); - -SQRTPI = sqrt(pi); - -FCOUL = zeros(3,1); -COULOMBV = 0; - -TI = TFACT*U(I); -TI2 = TI*TI; -TI3 = TI2*TI; -TI4 = TI2*TI2; -TI6 = TI4*TI2; - -SSA = TI; -SSB = TI3/48; -SSC = 3*TI2/16; -SSD = 11*TI/16; -SSE = 1; - -Ra = [RX(I),RY(I),RZ(I)]; - -for nnI = 1:nrnnlist(I) - Rb(1) = nnRx(I,nnI); - Rb(2) = nnRy(I,nnI); - Rb(3) = nnRz(I,nnI); - J = nnType(I,nnI); - - Rab = Rb-Ra; % OBS b - a !!! - dR = norm(Rab); - MAGR = dR; - MAGR2 = dR*dR; - - if (dR <= COULCUT) & (dR > 1e-12) - - TJ = TFACT*U(J); - DC = Rab/dR; - - %! Using Numerical Recipes ERFC - Z = abs(CALPHA*MAGR); - NUMREP_ERFC = erfc(Z); - - CA = NUMREP_ERFC/MAGR; - COULOMBV = COULOMBV + DELTAQ(J)*CA; - ccnt = ccnt + 1; - TEST(ccnt) = DELTAQ(J)*CA; - CA = CA + 2*CALPHA*exp( -CALPHA2*MAGR2 )/SQRTPI; - FORCE = -KECONST*DELTAQ(I)*DELTAQ(J)*CA/MAGR; - EXPTI = exp(-TI*MAGR ); - - if Element_Type(I) == Element_Type(J) - COULOMBV = COULOMBV - DELTAQ(J)*EXPTI*(SSB*MAGR2 + SSC*MAGR + SSD + SSE/MAGR); - ccnt = ccnt + 1; - TEST(ccnt) = - DELTAQ(J)*EXPTI*(SSB*MAGR2 + SSC*MAGR + SSD + SSE/MAGR); - FORCE = FORCE + (KECONST*DELTAQ(I)*DELTAQ(J)*EXPTI)*((SSE/MAGR2 - 2*SSB*MAGR - SSC) + SSA*(SSB*MAGR2 + SSC*MAGR + SSD + SSE/MAGR)); - else - TJ2 = TJ*TJ; - TJ3 = TJ2*TJ; - TJ4 = TJ2*TJ2; - TJ6 = TJ4*TJ2; - EXPTJ = exp( -TJ*MAGR ); - TI2MTJ2 = TI2 - TJ2; - TJ2MTI2 = -TI2MTJ2; - SA = TI; - SB = TJ4*TI/(2 * TI2MTJ2 * TI2MTJ2); - SC = (TJ6 - 3*TJ4*TI2)/(TI2MTJ2 * TI2MTJ2 * TI2MTJ2); - SD = TJ; - SE = TI4*TJ/(2 * TJ2MTI2 * TJ2MTI2); - SF = (TI6 - 3*TI4*TJ2)/(TJ2MTI2 * TJ2MTI2 * TJ2MTI2); - - COULOMBV = COULOMBV - (DELTAQ(J)*(EXPTI*(SB - (SC/MAGR)) + EXPTJ*(SE - (SF/MAGR)))); - FORCE = FORCE + KECONST*DELTAQ(I)*DELTAQ(J)*((EXPTI*(SA*(SB - (SC/MAGR)) - (SC/MAGR2))) + (EXPTJ*(SD*(SE - (SF/MAGR)) - (SF/MAGR2)))); - end - - FCOUL(1) = FCOUL(1) + DC(1)*FORCE; - FCOUL(2) = FCOUL(2) + DC(2)*FORCE; - FCOUL(3) = FCOUL(3) + DC(3)*FORCE; - end -end -COULOMBV = KECONST * COULOMBV; - diff --git a/proxies/matlab/Ewald_k_Space.m b/proxies/matlab/Ewald_k_Space.m deleted file mode 100644 index e8a8d1b2..00000000 --- a/proxies/matlab/Ewald_k_Space.m +++ /dev/null @@ -1,108 +0,0 @@ -function [COULOMBV,FCOUL] = Ewald_k_Space(RX,RY,RZ,LBox,DELTAQ,Nr_atoms,COULACC,TIMERATIO) - -COULVOL = LBox(1)*LBox(2)*LBox(3); - -SQRTX = sqrt(-log(COULACC)); -CALPHA = sqrt(pi)*((TIMERATIO*Nr_atoms/(COULVOL^2))^(1/6)); -COULCUT = SQRTX/CALPHA; -CALPHA2 = CALPHA*CALPHA; -if (COULCUT > 50) - COULCUT = 50; - CALPHA = SQRTX/COULCUT; -end -COULCUT2 = COULCUT*COULCUT; -KCUTOFF = 2*CALPHA*SQRTX; -KCUTOFF2 = KCUTOFF*KCUTOFF; -CALPHA2 = CALPHA*CALPHA; -FOURCALPHA2 = 4*CALPHA2; -RECIPVECS = zeros(3,3); -RECIPVECS(1,1) = 2*pi/LBox(1); -RECIPVECS(2,2) = 2*pi/LBox(2); -RECIPVECS(3,3) = 2*pi/LBox(3); -LMAX = floor(KCUTOFF / sqrt(RECIPVECS(1,1)*RECIPVECS(1,1))); -MMAX = floor(KCUTOFF / sqrt(RECIPVECS(2,2)*RECIPVECS(2,2))); -NMAX = floor(KCUTOFF / sqrt(RECIPVECS(3,3)*RECIPVECS(3,3))); - -RELPERM = 1; -KECONST = 14.3996437701414*RELPERM; - -SQRTPI = sqrt(pi); - -FCOUL = zeros(3,Nr_atoms); -COULOMBV = zeros(1,Nr_atoms); -SINLIST = zeros(Nr_atoms); -COSLIST = zeros(Nr_atoms); -%CR = R'; - -for L = 0:LMAX - - if L == 0 - MMIN = 0; - else - MMIN = -MMAX; - end - - L11 = L*RECIPVECS(1,1); - L12 = L*RECIPVECS(1,2); - L13 = L*RECIPVECS(1,3); - - for M = MMIN:MMAX - - NMIN = -NMAX; - - if (L == 0) & (M == 0) - NMIN = 1; - end - - M21 = L11 + M*RECIPVECS(2,1); - M22 = L12 + M*RECIPVECS(2,2); - M23 = L13 + M*RECIPVECS(2,3); - - for N = NMIN:NMAX - K(1) = M21 + N*RECIPVECS(3,1); - K(2) = M22 + N*RECIPVECS(3,2); - K(3) = M23 + N*RECIPVECS(3,3); - K2 = K(1)*K(1) + K(2)*K(2) + K(3)*K(3); - if K2 <= KCUTOFF2 - PREFACTOR = 8*pi*exp(-K2/(4*CALPHA2))/(COULVOL*K2); - PREVIR = (2/K2) + (2/(4*CALPHA2)); - - COSSUM = 0; - SINSUM = 0; - - %! Doing the sin and cos sums - - for I = 1:Nr_atoms - %DOT = K(1)*CR(1,I) + K(2)*CR(2,I) + K(3)*CR(3,I); - DOT = K(1)*RX(I) + K(2)*RY(I) + K(3)*RZ(I); - %! We re-use these in the next loop... - SINLIST(I) = sin(DOT); - COSLIST(I) = cos(DOT); - COSSUM = COSSUM + DELTAQ(I)*COSLIST(I); - SINSUM = SINSUM + DELTAQ(I)*SINLIST(I); - end - COSSUM2 = COSSUM*COSSUM; - SINSUM2 = SINSUM*SINSUM; - - %! Add up energy and force contributions - - KEPREF = KECONST*PREFACTOR; - for I = 1:Nr_atoms - COULOMBV(I) = COULOMBV(I) + KEPREF*(COSLIST(I)*COSSUM + SINLIST(I)*SINSUM); - FORCE = KEPREF * DELTAQ(I)*(SINLIST(I)*COSSUM - COSLIST(I)*SINSUM); - FCOUL(1,I) = FCOUL(1,I) + FORCE*K(1); - FCOUL(2,I) = FCOUL(2,I) + FORCE*K(2); - FCOUL(3,I) = FCOUL(3,I) + FORCE*K(3); - end - - KEPREF = KEPREF * (COSSUM2 + SINSUM2); - - end - end - end -end - -%! Point self energy -CORRFACT = 2*KECONST*CALPHA/SQRTPI; -COULOMBV = COULOMBV - CORRFACT*DELTAQ; - diff --git a/proxies/matlab/Forces.m b/proxies/matlab/Forces.m deleted file mode 100644 index d595c873..00000000 --- a/proxies/matlab/Forces.m +++ /dev/null @@ -1,109 +0,0 @@ -function [Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,U,q,Rx,Ry,Rz,Nats,H_INDEX_START,H_INDEX_END) - -HDIM = max(size(H0)); -Fcoul = zeros(3,Nats); -for i = 1:Nats - Fcoul(1,i) = -q(i)*q(:)'*dCx(:,i); - Fcoul(2,i) = -q(i)*q(:)'*dCy(:,i); - Fcoul(3,i) = -q(i)*q(:)'*dCz(:,i); -end - -Fband0 = zeros(3,Nats); -for i = 1:Nats % Slater-Koster Force SKForce from Tr[D*dH0/dR] - I_A = H_INDEX_START(i); - I_B = H_INDEX_END(i); - Xtmp = dHx(I_A:I_B,:)*D(:,I_A:I_B); - Ytmp = dHy(I_A:I_B,:)*D(:,I_A:I_B); - Ztmp = dHz(I_A:I_B,:)*D(:,I_A:I_B); - Fband0(1,i) = -2*2*trace(Xtmp); - Fband0(2,i) = -2*2*trace(Ytmp); - Fband0(3,i) = -2*2*trace(Ztmp); -end - -FSdipole = zeros(3,Nats); -for k = 1:Nats % Slater-Koster Force SKForce from Tr[D*dH0/dR] - k_a = H_INDEX_START(k); - k_b = H_INDEX_END(k); - d_Sx = zeros(HDIM); - d_Sx(:,k_a:k_b) = dSx(:,k_a:k_b); d_Sx(k_a:k_b,:) = dSx(:,k_a:k_b)'; - d_Sy = zeros(HDIM); - d_Sy(:,k_a:k_b) = dSy(:,k_a:k_b); d_Sy(k_a:k_b,:) = dSy(:,k_a:k_b)'; - d_Sz = zeros(HDIM); - d_Sz(:,k_a:k_b) = dSz(:,k_a:k_b); d_Sz(k_a:k_b,:) = dSz(:,k_a:k_b)'; - - dqi_dRkX = zeros(Nats,1); dqi_dRkY = zeros(Nats,1); dqi_dRkZ = zeros(Nats,1); - for i = 1:Nats - if i == k - dqi_dRkX(i) = -2*trace(D(k_a:k_b,:)*dSx(:,k_a:k_b)); - dqi_dRkY(i) = -2*trace(D(k_a:k_b,:)*dSy(:,k_a:k_b)); - dqi_dRkZ(i) = -2*trace(D(k_a:k_b,:)*dSz(:,k_a:k_b)); - else - i_a = H_INDEX_START(i); i_b = H_INDEX_END(i); - dqi_dRkX(i) = -2*trace(dSx(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); - dqi_dRkY(i) = -2*trace(dSy(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); - dqi_dRkZ(i) = -2*trace(dSz(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); - end - FSdipole(1,k) = FSdipole(1,k) - dqi_dRkX(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); - FSdipole(2,k) = FSdipole(2,k) - dqi_dRkY(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); - FSdipole(3,k) = FSdipole(3,k) - dqi_dRkZ(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); - end - if k == 1 - dqK = dqi_dRkX; - dQi_dRkx = dqK(:) - end -end - -Fdipole = zeros(3,Nats); -for i = 1:Nats - Fdipole(1,i) = q(i)*Efield(1); % Forces from External field-dipole interaction - Fdipole(2,i) = q(i)*Efield(2); % Forces from External field-dipole interaction - Fdipole(3,i) = q(i)*Efield(3); % Forces from External field-dipole interaction -end - -Z = S^(-1/2); -SIHD = 2*2*Z*Z'*H*D; % Pulay Force FPUL from 2Tr[ZZ'HD*dS/dR] -FPulay = zeros(3,Nats); -for i = 1:Nats - I_A = H_INDEX_START(i); - I_B = H_INDEX_END(i); - Xtmp = dSx(I_A:I_B,:)*SIHD(:,I_A:I_B); - Ytmp = dSy(I_A:I_B,:)*SIHD(:,I_A:I_B); - Ztmp = dSz(I_A:I_B,:)*SIHD(:,I_A:I_B); - FPulay(1,i) = trace(Xtmp); - FPulay(2,i) = trace(Ytmp); - FPulay(3,i) = trace(Ztmp); -end - -CoulPot = C*q; % Factor of 2 or 1/2 or +/- -FScoul = zeros(3,Nats); % Coulomb force FSCOUL from nonorthogonality -dDSX = zeros(HDIM,1); -dDSY = zeros(HDIM,1); -dDSZ = zeros(HDIM,1); -for Ia = 1:Nats % Derivatives Ra - Ia_A = H_INDEX_START(Ia); - Ia_B = H_INDEX_END(Ia); - for iq = 1:HDIM - dDSX(iq) = D(iq,Ia_A:Ia_B)*dSx(Ia_A:Ia_B,iq); - dDSY(iq) = D(iq,Ia_A:Ia_B)*dSy(Ia_A:Ia_B,iq); - dDSZ(iq) = D(iq,Ia_A:Ia_B)*dSz(Ia_A:Ia_B,iq); - end - for iq = Ia_A:Ia_B - dDSX(iq) = dDSX(iq) + D(iq,:)*dSx(iq,:)'; - dDSY(iq) = dDSY(iq) + D(iq,:)*dSy(iq,:)'; - dDSZ(iq) = dDSZ(iq) + D(iq,:)*dSz(iq,:)'; - end - for j = 1:Nats % Get the Mulliken charges for all atoms - j_a = H_INDEX_START(j); - j_b = H_INDEX_END(j); - dQLxdR = sum(dDSX(j_a:j_b)); % Derivative with respect to Ia of charge on atom j - dQLydR = sum(dDSY(j_a:j_b)); - dQLzdR = sum(dDSZ(j_a:j_b)); - FScoul(1,Ia) = FScoul(1,Ia) - dQLxdR*(U(j)*q(j) + CoulPot(j)); - FScoul(2,Ia) = FScoul(2,Ia) - dQLydR*(U(j)*q(j) + CoulPot(j)); - FScoul(3,Ia) = FScoul(3,Ia) - dQLzdR*(U(j)*q(j) + CoulPot(j)); - end - -end -FScoul = 2*FScoul; - -Ftot = Fband0 + Fcoul + Fdipole + FPulay + FScoul + FSdipole; % Collected total force diff --git a/proxies/matlab/Forces_save_00.m b/proxies/matlab/Forces_save_00.m deleted file mode 100644 index 812f56dd..00000000 --- a/proxies/matlab/Forces_save_00.m +++ /dev/null @@ -1,108 +0,0 @@ -function [Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,U,q,Rx,Ry,Rz,Nats,H_INDEX_START,H_INDEX_END) - -HDIM = max(size(H0)); -Fcoul = zeros(3,Nats); -for i = 1:Nats - Fcoul(1,i) = -q(i)*q(:)'*dCx(:,i); - Fcoul(2,i) = -q(i)*q(:)'*dCy(:,i); - Fcoul(3,i) = -q(i)*q(:)'*dCz(:,i); -end - -Fband0 = zeros(3,Nats); -for i = 1:Nats % Slater-Koster Force SKForce from Tr[D*dH0/dR] - I_A = H_INDEX_START(i); - I_B = H_INDEX_END(i); - Xtmp = dHx(I_A:I_B,:)*D(:,I_A:I_B); - Ytmp = dHy(I_A:I_B,:)*D(:,I_A:I_B); - Ztmp = dHz(I_A:I_B,:)*D(:,I_A:I_B); - Fband0(1,i) = -2*2*trace(Xtmp); - Fband0(2,i) = -2*2*trace(Ytmp); - Fband0(3,i) = -2*2*trace(Ztmp); -end - -FSdipole = zeros(3,Nats); -for k = 1:Nats % Slater-Koster Force SKForce from Tr[D*dH0/dR] - k_a = H_INDEX_START(k); - k_b = H_INDEX_END(k); - d_Sx = zeros(HDIM); - d_Sx(:,k_a:k_b) = dSx(:,k_a:k_b); d_Sx(k_a:k_b,:) = dSx(:,k_a:k_b)'; - d_Sy = zeros(HDIM); - d_Sy(:,k_a:k_b) = dSy(:,k_a:k_b); d_Sy(k_a:k_b,:) = dSy(:,k_a:k_b)'; - d_Sz = zeros(HDIM); - d_Sz(:,k_a:k_b) = dSz(:,k_a:k_b); d_Sz(k_a:k_b,:) = dSz(:,k_a:k_b)'; - - dqi_dRkX = zeros(Nats,1); dqi_dRkY = zeros(Nats,1); dqi_dRkZ = zeros(Nats,1); - for i = 1:Nats - if i == k - dqi_dRkX(i) = 2*trace(D(k_a:k_b,:)*dSx(:,k_a:k_b)); - dqi_dRkY(i) = 2*trace(D(k_a:k_b,:)*dSy(:,k_a:k_b)); - dqi_dRkZ(i) = 2*trace(D(k_a:k_b,:)*dSz(:,k_a:k_b)); - else - i_a = H_INDEX_START(i); i_b = H_INDEX_END(i); - dqi_dRkX(i) = 2*trace(dSx(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); - dqi_dRkY(i) = 2*trace(dSy(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); - dqi_dRkZ(i) = 2*trace(dSz(i_a:i_b,k_a:k_b)*D(k_a:k_b,i_a:i_b)); - end - FSdipole(1,k) = FSdipole(1,k) - dqi_dRkX(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); - FSdipole(2,k) = FSdipole(2,k) - dqi_dRkY(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); - FSdipole(3,k) = FSdipole(3,k) - dqi_dRkZ(i)*(Rx(i)*Efield(1)+Ry(i)*Efield(2)+Rz(i)*Efield(3)); - end - if k == 1 - check = dqi_dRkX(1:10)' - end -end - -Fdipole = zeros(3,Nats); -for i = 1:Nats - Fdipole(1,i) = q(i)*Efield(1); % Forces from External field-dipole interaction - Fdipole(2,i) = q(i)*Efield(2); % Forces from External field-dipole interaction - Fdipole(3,i) = q(i)*Efield(3); % Forces from External field-dipole interaction -end - -Z = S^(-1/2); -SIHD = 2*2*Z*Z'*H*D; % Pulay Force FPUL from 2Tr[ZZ'HD*dS/dR] -FPulay = zeros(3,Nats); -for i = 1:Nats - I_A = H_INDEX_START(i); - I_B = H_INDEX_END(i); - Xtmp = dSx(I_A:I_B,:)*SIHD(:,I_A:I_B); - Ytmp = dSy(I_A:I_B,:)*SIHD(:,I_A:I_B); - Ztmp = dSz(I_A:I_B,:)*SIHD(:,I_A:I_B); - FPulay(1,i) = trace(Xtmp); - FPulay(2,i) = trace(Ytmp); - FPulay(3,i) = trace(Ztmp); -end - -CoulPot = C*q; % Factor of 2 or 1/2 or +/- -FScoul = zeros(3,Nats); % Coulomb force FSCOUL from nonorthogonality -dDSX = zeros(HDIM,1); -dDSY = zeros(HDIM,1); -dDSZ = zeros(HDIM,1); -for Ia = 1:Nats % Derivatives Ra - Ia_A = H_INDEX_START(Ia); - Ia_B = H_INDEX_END(Ia); - for iq = 1:HDIM - dDSX(iq) = D(iq,Ia_A:Ia_B)*dSx(Ia_A:Ia_B,iq); - dDSY(iq) = D(iq,Ia_A:Ia_B)*dSy(Ia_A:Ia_B,iq); - dDSZ(iq) = D(iq,Ia_A:Ia_B)*dSz(Ia_A:Ia_B,iq); - end - for iq = Ia_A:Ia_B - dDSX(iq) = dDSX(iq) + D(iq,:)*dSx(iq,:)'; - dDSY(iq) = dDSY(iq) + D(iq,:)*dSy(iq,:)'; - dDSZ(iq) = dDSZ(iq) + D(iq,:)*dSz(iq,:)'; - end - for j = 1:Nats % Get the Mulliken charges for all atoms - j_a = H_INDEX_START(j); - j_b = H_INDEX_END(j); - dQLxdR = sum(dDSX(j_a:j_b)); % Derivative with respect to Ia of charge on atom j - dQLydR = sum(dDSY(j_a:j_b)); - dQLzdR = sum(dDSZ(j_a:j_b)); - FScoul(1,Ia) = FScoul(1,Ia) - dQLxdR*(U(j)*q(j) + CoulPot(j)); - FScoul(2,Ia) = FScoul(2,Ia) - dQLydR*(U(j)*q(j) + CoulPot(j)); - FScoul(3,Ia) = FScoul(3,Ia) - dQLzdR*(U(j)*q(j) + CoulPot(j)); - end - -end -FScoul = 2*FScoul; - -Ftot = Fband0 + Fcoul + Fdipole + FPulay + FScoul + FSdipole; % Collected total force diff --git a/proxies/matlab/Get_q.m b/proxies/matlab/Get_q.m deleted file mode 100644 index 852e3dba..00000000 --- a/proxies/matlab/Get_q.m +++ /dev/null @@ -1,9 +0,0 @@ -function [q] = Get_q(D,S,H_Index_Start,H_Index_End,Znuc,Nats) - -Z = S^(-1/2); -DS = 2*diag(D*S); -q = zeros(Nats,1); -for i = 1:Nats - q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); -end - diff --git a/proxies/matlab/GetdC.m b/proxies/matlab/GetdC.m deleted file mode 100644 index c068cc1d..00000000 --- a/proxies/matlab/GetdC.m +++ /dev/null @@ -1,86 +0,0 @@ -function [dCx,dCy,dCz] = GetdC(Nr_atoms,dh,Coulomb_acc,Rcut,TIMERATIO,HDIM,Hubbard_U,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox) - - dq_J = zeros(1,Nr_atoms); Nats = Nr_atoms; - dCx = zeros(Nr_atoms); dCy = zeros(Nr_atoms); dCz = zeros(Nr_atoms); - Coulomb_Pot_k = 0; - RX0 = RX; RY0 = RY; RZ0 = RZ; - - for J = 1:Nr_atoms - - dq_J = 0*dq_J; - dq_J(J) = 1; - - RX(J) = RX0(J) + dh; - [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); - for I = 1:Nr_atoms - [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); - end - [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); - Coulomb_Pot_p = Coulomb_Pot_Real + Coulomb_Pot_k; - RX = RX0; - - RX(J) = RX0(J) - dh; - [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); - for I = 1:Nr_atoms - [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); - end - [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); - Coulomb_Pot_m = Coulomb_Pot_Real + Coulomb_Pot_k; - RX = RX0; - - dCx(:,J) = (Coulomb_Pot_p - Coulomb_Pot_m)/(2*dh); - -%%%% -%RX0 = RX; -%RX(J) = RX0(J) + dh; -%Cp = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nr_atoms,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); -%RX = RX0; -% -%RX(J) = RX0(J) - dh; -%Cm = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nr_atoms,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); -%RX = RX0; -%dC_x = (Cp-Cm)/(2*dh); -%%%% - - RY = RY0; RY(J) = RY0(J) + dh; - [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); - for I = 1:Nr_atoms - [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); - end - [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); - Coulomb_Pot_p = Coulomb_Pot_Real + Coulomb_Pot_k; - RY = RY0; - - RY(J) = RY0(J) - dh; - [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); - for I = 1:Nr_atoms - [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); - end - [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); - Coulomb_Pot_m = Coulomb_Pot_Real + Coulomb_Pot_k; - RY = RY0; - - dCy(:,J) = (Coulomb_Pot_p - Coulomb_Pot_m)/(2*dh); - - RZ(J) = RZ0(J) + dh; - [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); - for I = 1:Nr_atoms - [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); - end - [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); - Coulomb_Pot_p = Coulomb_Pot_Real + Coulomb_Pot_k; - RZ = RZ0; - - RZ(J) = RZ0(J) - dh; - [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); - for I = 1:Nr_atoms - [Coulomb_Pot_Real(I),Coulomb_Force_Real(:,I)] = Ewald_Real_Space(I,RX,RY,RZ,LBox,dq_J,Hubbard_U,Element_Type,Nr_atoms,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType); - end - [Coulomb_Pot_k,Coulomb_Force_k] = Ewald_k_Space(RX,RY,RZ,LBox,dq_J,Nr_atoms,Coulomb_acc,TIMERATIO); - Coulomb_Pot_m = Coulomb_Pot_Real + Coulomb_Pot_k; - RZ = RZ0; - - dCz(:,J) = (Coulomb_Pot_p - Coulomb_Pot_m)/(2*dh); - - dq_J(J) = 0; - end diff --git a/proxies/matlab/GetdH.m b/proxies/matlab/GetdH.m deleted file mode 100644 index c86abcd6..00000000 --- a/proxies/matlab/GetdH.m +++ /dev/null @@ -1,38 +0,0 @@ -function [dH0x,dH0y,dH0z] = GetdH(Nr_atoms,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox,nrnnlist,nnRx,nnRy,nnRz,nnType) - -dH0x = zeros(HDIM,HDIM); dH0y = zeros(HDIM,HDIM); dH0z = zeros(HDIM,HDIM); -for I = 1:Nr_atoms - Type_pair(1) = Element_Type(I); - Rax_p = [RX(I)+dx,RY(I),RZ(I)]; Rax_m = [RX(I)-dx,RY(I),RZ(I)]; - Ray_p = [RX(I),RY(I)+dx,RZ(I)]; Ray_m = [RX(I),RY(I)-dx,RZ(I)]; - Raz_p = [RX(I),RY(I),RZ(I)+dx]; Raz_m = [RX(I),RY(I),RZ(I)-dx]; - IDim = H_INDEX_END(I)-H_INDEX_START(I)+1; - for J = 1:nrnnlist(I) - IJ = nnType(I,J); - if IJ ~= I - Type_pair(2) = Element_Type(IJ); - Rb = [nnRx(I,J),nnRy(I,J),nnRz(I,J)]; - JDim = H_INDEX_END(IJ)-H_INDEX_START(IJ)+1; - - [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,Es,Ep,U] = LoadBondIntegralParameters_H(Type_pair); % Used in BondIntegral(dR,fxx_xx) - diagonal(1:2) = [Es,Ep]; - dh0x_p = Slater_Koster_Pair(Rax_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - dh0x_m = Slater_Koster_Pair(Rax_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - dh0y_p = Slater_Koster_Pair(Ray_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - dh0y_m = Slater_Koster_Pair(Ray_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - dh0z_p = Slater_Koster_Pair(Raz_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - dh0z_m = Slater_Koster_Pair(Raz_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - - for II = 1:IDim - II_H = H_INDEX_START(I) + II - 1; - for JJ = 1:JDim - JJ_H = H_INDEX_START(IJ) + JJ - 1; - dH0x(II_H,JJ_H) = dH0x(II_H,JJ_H) + (dh0x_p(II,JJ)-dh0x_m(II,JJ))/(2*dx); - dH0y(II_H,JJ_H) = dH0y(II_H,JJ_H) + (dh0y_p(II,JJ)-dh0y_m(II,JJ))/(2*dx); - dH0z(II_H,JJ_H) = dH0z(II_H,JJ_H) + (dh0z_p(II,JJ)-dh0z_m(II,JJ))/(2*dx); - end - end - - end - end -end diff --git a/proxies/matlab/GetdS.m b/proxies/matlab/GetdS.m deleted file mode 100644 index 7564e558..00000000 --- a/proxies/matlab/GetdS.m +++ /dev/null @@ -1,37 +0,0 @@ -function [dSx,dSy,dSz] = GetdS(Nr_atoms,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox,nrnnlist,nnRx,nnRy,nnRz,nnType) - -dSx = zeros(HDIM,HDIM); dSy = zeros(HDIM,HDIM); dSz = zeros(HDIM,HDIM); -for I = 1:Nr_atoms - Type_pair(1) = Element_Type(I); - Rax_p = [RX(I)+dx,RY(I),RZ(I)]; Rax_m = [RX(I)-dx,RY(I),RZ(I)]; - Ray_p = [RX(I),RY(I)+dx,RZ(I)]; Ray_m = [RX(I),RY(I)-dx,RZ(I)]; - Raz_p = [RX(I),RY(I),RZ(I)+dx]; Raz_m = [RX(I),RY(I),RZ(I)-dx]; - IDim = H_INDEX_END(I)-H_INDEX_START(I)+1; - for J = 1:nrnnlist(I) - IJ = nnType(I,J) ; - if IJ ~= I - Type_pair(2) = Element_Type(IJ); - Rb = [nnRx(I,J),nnRy(I,J),nnRz(I,J)]; - JDim = H_INDEX_END(IJ)-H_INDEX_START(IJ)+1; - diagonal(1:2) = [1,1]; - [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi] = LoadBondIntegralParameters_S(Type_pair); - ds0x_p = Slater_Koster_Pair(Rax_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - ds0x_m = Slater_Koster_Pair(Rax_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - ds0y_p = Slater_Koster_Pair(Ray_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - ds0y_m = Slater_Koster_Pair(Ray_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - ds0z_p = Slater_Koster_Pair(Raz_p,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - ds0z_m = Slater_Koster_Pair(Raz_m,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - for II = 1:IDim - II_S = H_INDEX_START(I) + II - 1; - for JJ = 1:JDim - JJ_S = H_INDEX_START(IJ) + JJ - 1; - dSx(II_S,JJ_S) = dSx(II_S,JJ_S) + (ds0x_p(II,JJ)-ds0x_m(II,JJ))/(2*dx); - dSy(II_S,JJ_S) = dSy(II_S,JJ_S) + (ds0y_p(II,JJ)-ds0y_m(II,JJ))/(2*dx); - dSz(II_S,JJ_S) = dSz(II_S,JJ_S) + (ds0z_p(II,JJ)-ds0z_m(II,JJ))/(2*dx); - end - end - - end - end -end - diff --git a/proxies/matlab/H0_and_S.m b/proxies/matlab/H0_and_S.m deleted file mode 100644 index 0eb19a4d..00000000 --- a/proxies/matlab/H0_and_S.m +++ /dev/null @@ -1,95 +0,0 @@ -function [H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nr_atoms,nrnnlist,nnRx,nnRy,nnRz,nnType) - -%TYPE = A.textdata(:); -%RX = A.data(:,1); RY = A.data(:,2); RZ = A.data(:,3); -CNT = 1; -for i = 1:Nr_atoms - if char(TYPE(i)) == 'H' - H_INDEX_START(i) = CNT; - NrOrb(i) = 1; % a single s orbital - CNT = CNT+1; - H_INDEX_END(i) = CNT-1; - Znuc(i) = 1; % For hydrogen - Mnuc(i) = 1.0079; - else - H_INDEX_START(i) = CNT; - NrOrb(i) = 4; % one 1 + three p orbitals - CNT = CNT+4; - H_INDEX_END(i) = CNT-1; - if char(TYPE(i)) == 'O' - Znuc(i) = 6; % For oxygen - Mnuc(i) = 15.9994; - end - if char(TYPE(i)) == 'C' - Znuc(i) = 4; % For oxygen - Mnuc(i) = 12.01; - end - if char(TYPE(i)) == 'N' - Znuc(i) = 5; % For oxygen - Mnuc(i) = 14.0067; - end - end - Element_Type(i) = char(TYPE(i)); -end -HDIM = CNT-1; - -H0 = zeros(HDIM,HDIM); % Charge independent H0! -for I = 1:Nr_atoms - - Type_pair(1) = Element_Type(I); - Ra = [RX(I),RY(I),RZ(I)]; - IDim = H_INDEX_END(I)-H_INDEX_START(I)+1; - for J = 1:nrnnlist(I) - Type_pair(2) = Element_Type(nnType(I,J)); - Rb = [nnRx(I,J),nnRy(I,J),nnRz(I,J)]; - JDim = H_INDEX_END(nnType(I,J))-H_INDEX_START(nnType(I,J))+1; -% Hamiltonian block for a-b atom pair - [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,Es,Ep,U] = LoadBondIntegralParameters_H(Type_pair); % Used in BondIntegral(dR,fxx_xx); - if I == nnType(I,J) - Hubbard_U(I) = U; - end - diagonal(1:2) = [Es,Ep]; - h0 = Slater_Koster_Pair(Ra,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - for II = 1:IDim - II_H = H_INDEX_START(I) + II - 1; - for JJ = 1:JDim - JJ_H = H_INDEX_START(nnType(I,J)) + JJ - 1; - H0(II_H,JJ_H) = h0(II,JJ) ; - H0(JJ_H,II_H) = h0(II,JJ); - end - end - end - -end -H0 = 0.5*(H0+H0'); - -S = zeros(HDIM,HDIM); -for I = 1:Nr_atoms - Type_pair(1) = Element_Type(I); - Ra = [RX(I),RY(I),RZ(I)]; - IDim = H_INDEX_END(I)-H_INDEX_START(I)+1; - - for J = 1:nrnnlist(I) - Type_pair(2) = Element_Type(nnType(I,J)); - Rb = [nnRx(I,J),nnRy(I,J),nnRz(I,J)]; - JDim = H_INDEX_END(nnType(I,J))-H_INDEX_START(nnType(I,J))+1; -% Overlap block for a-b atom pair - [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi] = LoadBondIntegralParameters_S(Type_pair); - diagonal(1:2) = [1,1]; - s0 = Slater_Koster_Pair(Ra,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal); - for II = 1:IDim - II_S = H_INDEX_START(I) + II - 1; - for JJ = 1:JDim - JJ_S = H_INDEX_START(nnType(I,J)) + JJ - 1; - S(II_S,JJ_S) = s0(II,JJ); - S(JJ_S,II_S) = s0(II,JJ); - end - end - end -end -S = 0.5*(S+S'); - -D0 = AtomicDensityMatrix(Nr_atoms,H_INDEX_START,H_INDEX_END,HDIM,Znuc); -D0 = D0/2; - - diff --git a/proxies/matlab/LoadBondIntegralParameters_H.m b/proxies/matlab/LoadBondIntegralParameters_H.m deleted file mode 100644 index 809ac2bc..00000000 --- a/proxies/matlab/LoadBondIntegralParameters_H.m +++ /dev/null @@ -1,261 +0,0 @@ -function [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,Es,Ep,U] = LoadBondIntegralParameters_H(TYPE_PAIR) - -TYPE_a = TYPE_PAIR(1); -TYPE_b = TYPE_PAIR(2); - -if TYPE_a == 'H' - if TYPE_b == 'H' -% fss_sigma(1:8) = [-9.340000 -1.145903 -0.391777 0.000000 0.000000 0.750000 3.500000 4.000000]; - fss_sigma(1:8) = [-9.400000D0,-1.145903D0,-0.391777D0,0.000D0,0.000D0,0.750D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fps_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; -% Es = -6.35; % E_s -% Ep = 0; -% U = 12.85; % U for H - Es = -6.4835; % E_s - Ep = 0.0; - U = 12.054683; % U for H - elseif TYPE_b == 'C' -% fss_sigma(1:8) = [-9.072577 -1.393093 -0.430611 0.000000 0.000000 1.100000 3.500000 4.000000]; -% fsp_sigma(1:8) = [8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000]; -% fps_sigma(1:8) = [8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000]; - - fss_sigma(1:8) = [-9.235812D0,-1.372683D0,-0.408433D0,0.0000D0,0.0000D0,1.1000D0,3.5000D0,4.0000D0]; - fsp_sigma(1:8) = [8.104851D0,-0.936099D0,-0.626219D0,0.0000D0,0.0000D0,1.1000D0,3.5000D0,4.0000D0]; - fps_sigma(1:8) = [8.104851D0,-0.936099D0,-0.626219D0,0.0000D0,0.0000D0,1.1000D0,3.5000D0,4.0000D0]; - - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'O' -% fss_sigma(1:8) = [-12.230931 -1.808632 -0.421164 0.000000 0.000000 1.000000 3.500000 4.000000]; -% fsp_sigma(1:8) = [9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000]; -% fps_sigma(1:8) = [9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000]; - - fss_sigma(1:8) = [-12.189103D0,-1.800097D0,-0.325933D0,0.0000D0,0.0000D0,1.0000D0,3.5000D0,4.0000D0]; - fsp_sigma(1:8) = [9.518733D0,-1.333235D0,-0.393710D0,0.0000D0,0.0000D0,1.0000D0,3.5000D0,4.0000D0]; - fps_sigma(1:8) = [9.518733D0,-1.333235D0,-0.393710D0,0.0000D0,0.0000D0,1.0000D0,3.5000D0,4.0000D0]; - - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'N' -% fss_sigma(1:8) = [-12.095890 -1.519057 -0.277247 0.000000 0.000000 1.000000 3.500000 4.000000]; -% fsp_sigma(1:8) = [9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000]; -% fps_sigma(1:8) = [9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000]; - - fss_sigma(1:8) = [-12.631030D0,-1.585597D0,-0.250969D0,0.000D0,0.0000D0,1.000D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [9.837852D0,-1.234850D0,-0.324283D0,0.000D0,0.0000D0,1.000D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [9.837852D0,-1.234850D0,-0.324283D0,0.000D0,0.0000D0,1.000D0,3.500D0,4.000D0]; - - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - Es = 0; Ep = 0; U = 0; - end -elseif TYPE_a == 'C' - if TYPE_b == 'H' -% fss_sigma(1:8) = [-9.072577 -1.393093 -0.430611 0.000000 0.000000 1.100000 3.500000 4.000000]; -% fsp_sigma(1:8) = [8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000]; -% fps_sigma(1:8) = [8.176008 -0.985177 -0.427403 0.000000 0.000000 1.100000 3.500000 4.000000]; - - fss_sigma(1:8) = [-9.235812D0,-1.372683D0,-0.408433D0,0.000D0,0.000D0,1.100D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [8.104851D0,-0.936099D0,-0.626219D0,0.000D0,0.000D0,1.100D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [8.104851D0,-0.936099D0,-0.626219D0,0.000D0,0.000D0,1.100D0,3.500D0,4.000D0]; - - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'C' -% fss_sigma(1:8) = [-9.404207 -1.363297 -0.507128 0.000000 0.000000 1.400000 3.500000 4.000000]; -% fsp_sigma(1:8) = [8.662429 -1.047410 -0.661999 0.000000 0.000000 1.400000 3.500000 4.000000]; -% fps_sigma(1:8) = [8.662429 -1.047410 -0.661999 0.000000 0.000000 1.400000 3.500000 4.000000]; -% fpp_sigma(1:8) = [6.811512 -0.552299 -0.776890 0.000000 0.000000 1.400000 3.500000 4.000000]; -% fpp_pi(1:8) = [-3.550127 -1.925572 -0.132715 0.000000 0.000000 1.400000 3.500000 4.000000]; - - fss_sigma(1:8) = [-9.197237D0,-1.607050D0,-0.535057D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [8.562436D0,-0.980182D0,-0.646929D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [8.562436D0,-0.980182D0,-0.646929D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; - fpp_sigma(1:8) = [6.614756D0,-0.528591D0,-0.951460D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; - fpp_pi(1:8) = [-3.678302D0,-1.881668D0,-0.255951D0,0.000D0,0.000D0,1.400D0,3.500D0,4.000D0]; - -% Es = -13.75; % E_s -% Ep = -5.28; % E_p -% U = 10.000; % U for C - - Es = -13.7199; % E_s - Ep = -5.2541; % E_p - U = 14.240811; % U for C - - elseif TYPE_b == 'O' -% fss_sigma(1:8) = [-14.369472 -2.077439 -0.875471 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fsp_sigma(1:8) = [9.576296 -1.156217 -0.494803 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fps_sigma(1:8) = [14.037374 -1.192632 -0.654572 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_sigma(1:8) = [9.331152 -0.718120 -0.822100 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_pi(1:8) = [-5.334367 -2.263939 -0.204910 0.000000 0.000000 1.200000 3.500000 4.000000]; - - fss_sigma(1:8) = [-13.986685D0,-1.931973D0,-0.432011D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [10.718738D0,-1.389459D0,-0.182128D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [14.194791D0,-1.371650D0,-0.248285D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fpp_sigma(1:8) = [8.622023D0,-0.557144D0,-0.938551D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fpp_pi(1:8) = [-5.327397D0,-2.190160D0,-0.089303D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'N' -% fss_sigma(1:8) = [-7.010061 -1.730597 -0.575559 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fsp_sigma(1:8) = [7.543283 -1.293768 -0.624363 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fps_sigma(1:8) = [9.090970 -1.494255 -0.616711 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fpp_sigma(1:8) = [6.892240 -0.931920 -0.769164 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fpp_pi(1:8) = [-2.903346 -2.149349 -0.253006 0.000000 0.000000 1.500000 3.500000 4.000000]; - - fss_sigma(1:8) = [-7.409712D0,-1.940942D0,-0.219762D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [7.501761D0,-1.211169D0,-0.373905D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [8.697591D0,-1.267240D0,-0.178484D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - fpp_sigma(1:8) = [6.954600D0,-1.188456D0,-0.808043D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - fpp_pi(1:8) = [-2.921605D0,-2.203548D0,-0.409424D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - - Es = 0; Ep = 0; U = 0; - end -elseif TYPE_a == 'O' - if TYPE_b == 'H' -% fss_sigma(1:8) = [-12.230931 -1.808632 -0.421164 0.000000 0.000000 1.000000 3.500000 4.000000]; -% fsp_sigma(1:8) = [9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000]; -% fps_sigma(1:8) = [9.466088 -1.321262 -0.386336 0.000000 0.000000 1.000000 3.500000 4.000000]; - - fss_sigma(1:8) = [-12.189103D0,-1.800097D0,-0.325933D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [9.518733D0,-1.333235D0,-0.393710D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [9.518733D0,-1.333235D0,-0.393710D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; - - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'C' -% fss_sigma(1:8) = [-14.369472 -2.077439 -0.875471 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fsp_sigma(1:8) = [14.037374 -1.192632 -0.654572 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fps_sigma(1:8) = [9.576296 -1.156217 -0.494803 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_sigma(1:8) = [9.331152 -0.718120 -0.822100 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_pi(1:8) = [-5.334367 -2.263939 -0.204910 0.000000 0.000000 1.200000 3.500000 4.000000]; - - fss_sigma(1:8) = [-13.986685D0,-1.931973D0,-0.432011D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [14.194791D0,-1.371650D0,-0.248285D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [10.718738D0,-1.389459D0,-0.182128D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fpp_sigma(1:8) = [8.622023D0,-0.557144D0,-0.938551D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fpp_pi(1:8) = [-5.327397D0,-2.190160D0,-0.089303D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'O' -% fss_sigma(1:8) = [-12.737687 -1.851608 -0.666621 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fsp_sigma(1:8) = [13.683050 -1.684554 -0.468349 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fps_sigma(1:8) = [13.683050 -1.684554 -0.468349 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_sigma(1:8) = [9.460772 -1.211748 -0.581016 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_pi(1:8) = [-4.494595 -2.709223 -0.284124 0.000000 0.000000 1.200000 3.500000 4.000000]; - - fss_sigma(1:8) = [-14.387756D0,-2.244278D0,-1.645605D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - fsp_sigma(1:8) = [13.699127D0,-1.602358D0,-0.114474D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - fps_sigma(1:8) = [13.699127D0,-1.602358D0,-0.114474D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - fpp_sigma(1:8) = [9.235469D0,-1.131474D0,-0.924535D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - fpp_pi(1:8) = [ -4.526526D0,-2.487174D0,-0.201464D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - -% Es = -23.96; % E_s -% Ep = -9.02; % E_p -% U = 12.15; % U for O - - Es = -23.9377; % E_s - Ep = -9.0035; % E_p - U = 11.8761410; % U for O - - elseif TYPE_b == 'N' -% fss_sigma(1:8) = [-11.430028 -2.257346 -1.152844 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fsp_sigma(1:8) = [12.143744 -0.822913 -0.676127 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fps_sigma(1:8) = [11.597479 -1.382001 -0.765170 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_sigma(1:8) = [9.465191 -1.082032 -0.769214 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_pi(1:8) = [-4.676789 -2.171480 -0.288002 0.000000 0.000000 1.200000 3.500000 4.000000]; - - fss_sigma(1:8) = [-9.360078D0,-1.293118D0,-0.379415D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [10.723048D0,-0.454312D0,-0.916563D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [10.309052D0,-0.981652D0,-0.828497D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fpp_sigma(1:8) = [9.259131D0,-0.734112D0,-1.023762D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - fpp_pi(1:8) = [-4.532623D0,-1.999631D0,-0.286275D0,0.000D0,0.000D0,1.200D0,3.500D0,4.000D0]; - - Es = 0; Ep = 0; U = 0; - end -elseif TYPE_a == 'N' - if TYPE_b == 'H' -% fss_sigma(1:8) = [-12.095890 -1.519057 -0.277247 0.000000 0.000000 1.000000 3.500000 4.000000]; -% fsp_sigma(1:8) = [9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000]; -% fps_sigma(1:8) = [9.851338 -1.231616 -0.370836 0.000000 0.000000 1.000000 3.500000 4.000000]; - - fss_sigma(1:8) = [-12.631030D0,-1.585597D0,-0.250969D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [9.837852D0,-1.234850D0,-0.324283D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [9.837852D0,-1.234850D0,-0.324283D0,0.000D0,0.000D0,1.000D0,3.500D0,4.000D0]; - - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'C' -% fss_sigma(1:8) = [-7.010061 -1.730597 -0.575559 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fsp_sigma(1:8) = [9.090970 -1.494255 -0.616711 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fps_sigma(1:8) = [7.543283 -1.293768 -0.624363 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fpp_sigma(1:8) = [6.892240 -0.931920 -0.769164 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fpp_pi(1:8) = [-2.903346 -2.149349 -0.253006 0.000000 0.000000 1.500000 3.500000 4.000000]; - - fss_sigma(1:8) = [-7.409712D0,-1.940942D0,-0.219762D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - fsp_sigma(1:8) = [8.697591D0,-1.267240D0,-0.178484D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - fps_sigma(1:8) = [7.501761D0,-1.211169D0,-0.373905D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - fpp_sigma(1:8) = [6.954600D0,-1.188456D0,-0.808043D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - fpp_pi(1:8) = [-2.921605D0,-2.203548D0,-0.409424D0,0.000D0,0.000D0,1.500D0,3.500D0,4.000D0]; - - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'O' -% fss_sigma(1:8) = [-11.430028 -2.257346 -1.152844 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fsp_sigma(1:8) = [11.597479 -1.382001 -0.765170 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fps_sigma(1:8) = [12.143744 -0.822913 -0.676127 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_sigma(1:8) = [9.465191 -1.082032 -0.769214 0.000000 0.000000 1.200000 3.500000 4.000000]; -% fpp_pi(1:8) = [-4.676789 -2.171480 -0.288002 0.000000 0.000000 1.200000 3.500000 4.000000]; - - fss_sigma(1:8) = [-9.360078D0,-1.293118D0,-0.379415D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - fsp_sigma(1:8) = [10.309052D0,-0.981652D0,-0.828497D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - fps_sigma(1:8) = [10.723048D0,-0.454312D0,-0.916563D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - fpp_sigma(1:8) = [9.259131D0,-0.734112D0,-1.023762D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - fpp_pi(1:8) = [-4.532623D0,-1.999631D0,-0.286275D0,0.00D0,0.00D0,1.20D0,3.50D0,4.00D0]; - - Es = 0; Ep = 0; U = 0; - elseif TYPE_b == 'N' -% fss_sigma(1:8) = [-7.710330 -2.365312 -0.525527 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fsp_sigma(1:8) = [8.222314 -1.612118 -0.690081 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fps_sigma(1:8) = [8.222314 -1.612118 -0.690081 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fpp_sigma(1:8) = [7.178570 -1.176467 -0.571049 0.000000 0.000000 1.500000 3.500000 4.000000]; -% fpp_pi(1:8) = [-2.829344 -2.408049 -0.387709 0.000000 0.000000 1.500000 3.500000 4.000000]; - - fss_sigma(1:8) = [-7.165811D0,-2.348869D0,-0.541905D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; - fsp_sigma(1:8) = [8.212268D0,-1.499123D0,-0.526440D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; - fps_sigma(1:8) = [8.212268D0,-1.499123D0,-0.526440D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; - fpp_sigma(1:8) = [7.102331D0,-1.252366D0,-0.552533D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; - fpp_pi(1:8) = [-2.828938D0,-2.376886D0,-0.560898D0,0.00D0,0.00D0,1.50D0,3.50D0,4.00D0]; - -% Es = -18.58; % E_s -% Ep = -7.09; % E_p -% U = 15.93; % U for N - - Es = -18.5565; - Ep = -7.0625; - U = 17.3729; - - end -else - Es = 0; Ep = 0; U = 0; - fss_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fss_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fsp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fps_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; -end - -% Maybe better to pre-calculate? -fss_sigma = ScaleTail(fss_sigma); -fsp_sigma = ScaleTail(fsp_sigma); -fps_sigma = ScaleTail(fps_sigma); -fpp_sigma = ScaleTail(fpp_sigma); -fpp_pi = ScaleTail(fpp_pi); diff --git a/proxies/matlab/LoadBondIntegralParameters_S.m b/proxies/matlab/LoadBondIntegralParameters_S.m deleted file mode 100644 index 34e57efb..00000000 --- a/proxies/matlab/LoadBondIntegralParameters_S.m +++ /dev/null @@ -1,123 +0,0 @@ -function [fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi] = LoadBondIntegralParameters_S(Type_pair) - -Type_a = Type_pair(1); -Type_b = Type_pair(2); - -if Type_a == 'H' - if Type_b == 'H' - fss_sigma(1:8) = [0.575007 -1.391261 -0.778831 0.080209 -0.017759 0.750000 3.500000 4.000000]; - fsp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fps_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - elseif Type_b == 'C' - fss_sigma(1:8) = [0.416003 -1.459596 -0.654874 0.009140 -0.012658 1.100000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - elseif Type_b == 'O' - fss_sigma(1:8) = [0.404725 -1.702546 -0.707938 0.074904 -0.039922 1.000000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - elseif Type_b == 'N' - fss_sigma(1:8) = [0.446693 -1.500463 -0.657448 0.065741 -0.037004 1.000000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - end -elseif Type_a == 'C' - if Type_b == 'H' - fss_sigma(1:8) = [0.416003 -1.459596 -0.654874 0.009140 -0.012658 1.100000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.495695 -0.901626 -1.007214 0.189808 -0.057087 1.100000 3.500000 4.000000]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - elseif Type_b == 'C' - fss_sigma(1:8) = [0.346977 -1.519820 -0.570812 -0.013518 -0.015829 1.400000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.400467 -0.984048 -0.853949 0.157178 -0.073381 1.400000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.400467 -0.984048 -0.853949 0.157178 -0.073381 1.400000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.382417 0.102889 -2.786680 2.646356 -1.134320 1.400000 3.500000 4.000000]; - fpp_pi(1:8) = [0.214357 -1.948923 -0.578323 -0.034356 -0.007257 1.400000 3.500000 4.000000]; - elseif Type_b == 'O' - fss_sigma(1:8) = [0.375339 -1.547372 -0.642492 0.020614 -0.026699 1.200000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.373027 -0.776043 -1.019920 0.257539 -0.102838 1.200000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.458068 -1.035067 -0.937868 0.190562 -0.077841 1.200000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.322293 0.795473 -3.476601 2.589965 -0.897800 1.200000 3.500000 4.000000]; - fpp_pi(1:8) = [0.244570 -1.922717 -0.573671 -0.057280 -0.004108 1.200000 3.500000 4.000000]; - elseif Type_b == 'N' - fss_sigma(1:8) = [0.263438 -1.754525 -0.584215 -0.007801 -0.021729 1.500000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.326609 -1.197485 -0.807786 0.134891 -0.084373 1.500000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.337943 -1.335442 -0.769693 0.119373 -0.079493 1.500000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.350240 -0.467439 -1.849316 1.854403 -0.988471 1.500000 3.500000 4.000000]; - fpp_pi(1:8) = [0.158424 -2.114409 -0.582346 -0.051076 -0.006183 1.500000 3.500000 4.000000]; - end -elseif Type_a == 'O' - if Type_b == 'H' - fss_sigma(1:8) = [0.404725 -1.702546 -0.707938 0.074904 -0.039922 1.000000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.447660 -0.952979 -1.163537 0.400616 -0.156965 1.000000 3.500000 4.000000]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - elseif Type_b == 'C' - fss_sigma(1:8) = [0.375339 -1.547372 -0.642492 0.020614 -0.026699 1.200000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.458068 -1.035067 -0.937868 0.190562 -0.077841 1.200000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.373027 -0.776043 -1.019920 0.257539 -0.102838 1.200000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.322293 0.795473 -3.476601 2.589965 -0.897800 1.200000 3.500000 4.000000]; - fpp_pi(1:8) = [0.244570 -1.922717 -0.573671 -0.057280 -0.004108 1.200000 3.500000 4.000000]; - elseif Type_b == 'O' - fss_sigma(1:8) = [0.296445 -1.911896 -0.663451 0.038054 -0.046608 1.200000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.362143 -1.285274 -0.939591 0.204641 -0.106438 1.200000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.362143 -1.285274 -0.939591 0.204641 -0.106438 1.200000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.312044 0.121814 -2.519352 1.681266 -0.644566 1.200000 3.500000 4.000000]; - fpp_pi(1:8) = [0.193010 -2.168462 -0.580629 -0.105104 0.004891 1.200000 3.500000 4.000000]; - elseif Type_b == 'N' - fss_sigma(1:8) = [0.340064 -1.703613 -0.622348 0.036738 -0.040158 1.200000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.420014 -1.107918 -0.905594 0.188424 -0.088365 1.200000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.370946 -1.040947 -0.931097 0.252441 -0.115450 1.200000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.314073 0.499050 -2.914288 2.067657 -0.738439 1.200000 3.500000 4.000000]; - fpp_pi(1:8) = [0.223937 -1.991867 -0.537630 -0.081270 -0.004130 1.200000 3.500000 4.000000]; - end -elseif Type_a == 'N' - if Type_b == 'H' - fss_sigma(1:8) = [0.446693 -1.500463 -0.657448 0.065741 -0.037004 1.000000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.501530 -0.785734 -1.123232 0.394878 -0.148501 1.000000 3.500000 4.000000]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; - elseif Type_b == 'C' - fss_sigma(1:8) = [0.263438 -1.754525 -0.584215 -0.007801 -0.021729 1.500000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.337943 -1.335442 -0.769693 0.119373 -0.079493 1.500000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.326609 -1.197485 -0.807786 0.134891 -0.084373 1.500000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.350240 -0.467439 -1.849316 1.854403 -0.988471 1.500000 3.500000 4.000000]; - fpp_pi(1:8) = [0.158424 -2.114409 -0.582346 -0.051076 -0.006183 1.500000 3.500000 4.000000]; - elseif Type_b == 'O' - fss_sigma(1:8) = [0.340064 -1.703613 -0.622348 0.036738 -0.040158 1.200000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.370946 -1.040947 -0.931097 0.252441 -0.115450 1.200000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.420014 -1.107918 -0.905594 0.188424 -0.088365 1.200000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.314073 0.499050 -2.914288 2.067657 -0.738439 1.200000 3.500000 4.000000]; - fpp_pi(1:8) = [0.223937 -1.991867 -0.537630 -0.081270 -0.004130 1.200000 3.500000 4.000000]; - elseif Type_b == 'N' - fss_sigma(1:8) = [0.231654 -1.879002 -0.572765 -0.004579 -0.031106 1.500000 3.500000 4.000000]; - fsp_sigma(1:8) = [-0.305271 -1.385158 -0.751032 0.114531 -0.090839 1.500000 3.500000 4.000000]; - fps_sigma(1:8) = [-0.305271 -1.385158 -0.751032 0.114531 -0.090839 1.500000 3.500000 4.000000]; - fpp_sigma(1:8) = [-0.324668 -0.547805 -1.638658 1.495168 -0.827868 1.500000 3.500000 4.000000]; - fpp_pi(1:8) = [0.142909 -2.162036 -0.571942 -0.071640 -0.004682 1.500000 3.500000 4.000000]; - end -else - fss_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fsp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fps_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_sigma(1:8) = [0,0,0,0,0,0,0,0]; - fpp_pi(1:8) = [0,0,0,0,0,0,0,0]; -end - -% Maybe better to pre-calculate? -fss_sigma = ScaleTail(fss_sigma); -fsp_sigma = ScaleTail(fsp_sigma); -fps_sigma = ScaleTail(fps_sigma); -fpp_sigma = ScaleTail(fpp_sigma); -fpp_pi = ScaleTail(fpp_pi); diff --git a/proxies/matlab/Main.m b/proxies/matlab/Main.m deleted file mode 100644 index 59a05a5c..00000000 --- a/proxies/matlab/Main.m +++ /dev/null @@ -1,145 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% SCF-TB - PROXY APPLICATION % -% A.M.N. Niklasson, T1, LANL % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Total Energy: % -% E = 2Tr[H0(D-D0)] + (1/2)sum_{ij} q_i C_{ij} q_j - Efield*dipole % -% dipole = sum_i R_{i} q_i % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -clear; - -% Initial data, load atoms and coordinates, etc -%Nats = 50; % Number of atoms -%Nocc = 40; % Nr of electrons / 2 -Nats = 5; % Number of atoms -Nocc = 4; % Nr of electrons / 2 -Efield = 0*0.1*[0.90,0.0,-.00]'; %%% DOES NOT GIVE CRRECT FORCES FOR Efield > 0 -Te = 100 % Some electronic temperature -A = importdata('COORD.dat'); -TYPE = A.textdata(:); -RX = A.data(:,1); RY = A.data(:,2); RZ = A.data(:,3); -%LBox(1) = 14; LBox(2) = 14; LBox(3) = 14 % PBC -LBox(1) = 5; LBox(2) = 5; LBox(3) = 5 % PBC - -% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,4.0,Nats); -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats,nrnnlist,nnRx,nnRy,nnRz,nnType); -HDIM = max(size(H0)); -Z = S^(-1/2); -Z0 = Z; S0 = S; -Rcut = 10.42; Coulomb_acc = 10e-7; TIMERATIO = 10; - -% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); - -% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] -[H,Hcoul,Hdipole,D,Dorth,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); - -[Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -Eneries = [Etot,Eband0,Ecoul,Edipole,S_ent] -ZI = S^(1/2); -DO = ZI*D*ZI'; - -dx = 0.0001; -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,4.0,Nats); -[dSx,dSy,dSz] = GetdS(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox,nrnnlist,nnRx,nnRy,nnRz,nnType); -[dHx,dHy,dHz] = GetdH(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox,nrnnlist,nnRx,nnRy,nnRz,nnType); -[dCx,dCy,dCz] = GetdC(Nats,dx,Coulomb_acc,Rcut,TIMERATIO,HDIM,Hubbard_U,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); - -[Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,Hubbard_U,q,RX,RY,RZ,Nats,H_INDEX_START,H_INDEX_END); - -Force_1 = Ftot(1,:) -Force_2 = Ftot(2,:) -Force_2 = Ftot(3,:) -pause - -RX0 = RX; -%%%%%%%% FINITE DIFF FORCE - -DD = D; -q0 = Get_q(DD,S,H_INDEX_START,H_INDEX_END,Znuc,Nats); -CC = C; RX0 = RX; RY0 = RY; RZ0 = RZ; HH0 = H0; HH = H; - -RX = RX0; RX(1) = RX0(1) + 0.0001; - -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,4.0,Nats); -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats,nrnnlist,nnRx,nnRy,nnRz,nnType); Z = S^(-1/2); -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); -[H,Hcoul,Hdipole,D,Dorth,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); -%[Etot_p,Eband0_p,Ecoul_p,Edipole_p,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,DD,q0,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -[Etot_p,Eband0_p,Ecoul_p,Edipole_p,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -q_p = q; H_p = H; D_p = D; -q0_p = Get_q(DD,S,H_INDEX_START,H_INDEX_END,Znuc,Nats); - -RX = RX0; RX(1) = RX0(1) - 0.0001; -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,4.0,Nats); -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats,nrnnlist,nnRx,nnRy,nnRz,nnType); Z = S^(-1/2); -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); -[H,Hcoul,Hdipole,D,Dorth,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); -%[Etot_m,Eband0_m,Ecoul_m,Edipole_m,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,DD,q0,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -[Etot_m,Eband0_m,Ecoul_m,Edipole_m,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -q_m = q; H_m = H; D_m = D; -q0_m = Get_q(DD,S,H_INDEX_START,H_INDEX_END,Znuc,Nats); -RX = RX0; - -% Fixed charges d_ETOT = -0.241562399168060; -% Flexible charges d_ETOT = 0.164765711758719 -% Diff = -0.406328110926779 -d_ETOT = (Etot_p - Etot_m)/.0002 -F_analytic = Ftot(1,1) % = -0.214411998896872 with flexible D -ForceSum = Fcoul + Fband0 + Fdipole; % Correct for fixed D = DD and q = q0 -Force_without_FS = ForceSum(1,1) % = d_ETOT Correct for fixed D = DD and q = q0 -DipoleForce = Fdipole(1,1) -COmpare_Dipole_f = (Edipole_p - Edipole_m)/.0002 % = Fdipole(1,1) Correct for fixed D and q -f_Pul = FPulay(1,1) -fs_coul = FScoul(1,1) -fs_dip = FSdipole(1,1) -d_q = (q0_p - q0_m)/.0002; -fsForce = 0; -for i = 1:Nats - fsForce = fsForce + d_q(i)*(RX(i)*Efield(1) + RY(i)*Efield(2) + RZ(i)*Efield(3)); -end -fsForce % = FSdipole(1,1) Always correct - -%[Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,Hubbard_U,q,RX,RY,RZ,Nats,H_INDEX_START,H_INDEX_END); - -d_EBand0 = (Eband0_p-Eband0_m)/.0002 - -d_EBand = (2*trace(H_p*(D_p-diag(D0))) - 2*trace(H_m*(D_m-diag(D0))))/.0002 - -d_EDipole = (Edipole_p - Edipole_m)/.0002 -d_Ecoul = (Ecoul_p-Ecoul_m)/.0002 - -band0 = Fband0(1,1) -F_total = Ftot(1,1) -F_diople = Fdipole(1,1) + FSdipole(1,1) -FS_dipole = FSdipole(1,1) -F_coul = Fcoul(1,1) + FScoul(1,1) -FS_coul = FScoul(1,1) -F_pul = FPulay(1,1) -HEJ = 1 -pause - -RX = RX0; RX(1) = RX0(1) + 0.0001; -Edipole_p = 0; -for i = 1:Nats - Edipole_p = Edipole_p - q0(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy -end -RX = RX0; RX(1) = RX0(1) - 0.0001; -Edipole_m = 0; -for i = 1:Nats - Edipole_m = Edipole_m - q0(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy -end -d_FDipole = (Edipole_p - Edipole_m)/.0002 - -dq_dr = (q_p - q_m)/.0002; -d_Edipole_m = 0; -for i = 1:Nats - d_Edipole_m = d_Edipole_m - dq_dr(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy -end -d_EDipole = d_Edipole_m - -F11 = Fband0(1,1) + Fcoul(1,1) + FPulay(1,1) + FScoul(1,1) diff --git a/proxies/matlab/Main_save_00.m b/proxies/matlab/Main_save_00.m deleted file mode 100644 index 49895e91..00000000 --- a/proxies/matlab/Main_save_00.m +++ /dev/null @@ -1,85 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% SCF-TB - PROXY APPLICATION % -% A.M.N. Niklasson, T1, LANL % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Total Energy: % -% E = 2Tr[H0(D-D0)] + (1/2)sum_{ij} q_i C_{ij} q_j - Efield*dipole % -% dipole = sum_i R_{i} q_i % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -clear; - -% Initial data, load atoms and coordinates, etc -Nats = 50; % Number of atoms -Nocc = 40; % Nr of electrons / 2 -Efield = 1*[-0.40,0.3,-0.31]'; -Te = 100 % Some electronic temperature -A = importdata('COORD.dat'); -TYPE = A.textdata(:); -RX = A.data(:,1); RY = A.data(:,2); RZ = A.data(:,3); -LBox(1) = 14; LBox(2) = 14; LBox(3) = 14 % PBC - -% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); -Z = S^(-1/2); -Z0 = Z; S0 = S; -HDIM = max(size(H0)); -Rcut = 10.42; Coulomb_acc = 10e-7; TIMERATIO = 10; - -% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); - -% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] -[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); -[Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent - -%%%%%%%% Num Test Forces - -%%%%%%%%%%%%%%%%%%%%%%%% - -dx = 0.0001; -[dSx,dSy,dSz] = GetdS(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); -[dHx,dHy,dHz] = GetdH(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); -[dCx,dCy,dCz] = GetdC(Nats,dx,Coulomb_acc,Rcut,TIMERATIO,HDIM,Hubbard_U,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); - -[Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,Hubbard_U,q,RX,RY,RZ,Nats,H_INDEX_START,H_INDEX_END); - -% Zero Field -% Ftot(1,3) = -2.640524966084072 -% q(1:3)' = 0.299074107847914 -0.075231905026516 -0.074189178585703 - -Force_11 = Ftot(1,1) - -RX0 = RX; -%%%%%%%% FINITE DIFF FORCE -RX = RX0; RX(1) = RX0(1) + 0.0001; -% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); -Z = S^(-1/2); - -% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); - -% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] -[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); -[Etot_p,Eband0,Ecoul,Edipole_p,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -Edipole_p - -RX = RX0; RX(1) = RX0(1) - 0.0001; -% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); -Z = S^(-1/2); - -% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); - -% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] -[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); -[Etot_m,Eband0,Ecoul,Edipole_m,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -Edipole_m - -dETOT = (Etot_p - Etot_m)/.0002 -%dFDipole = (Edipole_p - Edipole_m)/.0002 - diff --git a/proxies/matlab/Main_save_01.m b/proxies/matlab/Main_save_01.m deleted file mode 100644 index 2b31add7..00000000 --- a/proxies/matlab/Main_save_01.m +++ /dev/null @@ -1,110 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% SCF-TB - PROXY APPLICATION % -% A.M.N. Niklasson, T1, LANL % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Total Energy: % -% E = 2Tr[H0(D-D0)] + (1/2)sum_{ij} q_i C_{ij} q_j - Efield*dipole % -% dipole = sum_i R_{i} q_i % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -clear; - -% Initial data, load atoms and coordinates, etc -Nats = 50; % Number of atoms -Nocc = 40; % Nr of electrons / 2 -Efield = 0.0*[0.90,0.0,-.00]'; -Te = 100 % Some electronic temperature -A = importdata('COORD.dat'); -TYPE = A.textdata(:); -RX = A.data(:,1); RY = A.data(:,2); RZ = A.data(:,3); -LBox(1) = 14; LBox(2) = 14; LBox(3) = 14 % PBC - -% Get Hamiltonian, Overlap, atomic DM = D0 (vector only), etc -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); -HDIM = max(size(H0)); -Z = S^(-1/2); -Z0 = Z; S0 = S; -Rcut = 10.42; Coulomb_acc = 10e-7; TIMERATIO = 10; - -% Get Coulomb Matrix. In principle we do not need an explicit representation of the Coulomb matrix C! -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); - -% SCF ground state optimization for H and D and q and occupation factors f, D*S*D = D, Tr[DS] = Nocc, f in [0,1] -[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); -[Etot,Eband0,Ecoul,Edipole,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent - -dx = 0.0001; -[dSx,dSy,dSz] = GetdS(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); -[dHx,dHy,dHz] = GetdH(Nats,dx,HDIM,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); -[dCx,dCy,dCz] = GetdC(Nats,dx,Coulomb_acc,Rcut,TIMERATIO,HDIM,Hubbard_U,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Element_Type,LBox); - -[Ftot,Fcoul,Fband0,Fdipole,FPulay,FScoul,FSdipole] = Forces(H,H0,S,C,D,D0,dHx,dHy,dHz,dSx,dSy,dSz,dCx,dCy,dCz,Efield,Hubbard_U,q,RX,RY,RZ,Nats,H_INDEX_START,H_INDEX_END); - -Force_11 = Ftot(1,1) - -RX0 = RX; -%%%%%%%% FINITE DIFF FORCE - -DD = D; -q0 = Get_q(DD,S,H_INDEX_START,H_INDEX_END,Znuc,Nats); -CC = C; RX0 = RX; RY0 = RY; RZ0 = RZ; HH0 = H0; HH = H; - -RX = RX0; RX(1) = RX0(1) + 0.0001; -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); - -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); -[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); -[Etot_p,Eband0_p,Ecoul_p,Edipole_p,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -q_p = q; H_p = H; D_p = D; - -RX = RX0; RX(1) = RX0(1) - 0.0001; -[nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(RX,RY,RZ,LBox,Rcut,Nats); - -[H0,S,D0,H_INDEX_START,H_INDEX_END,Element_Type,Mnuc,Znuc,Hubbard_U] = H0_and_S(TYPE,RX,RY,RZ,LBox,Nats); -C = CoulombMatrix(RX,RY,RZ,LBox,Hubbard_U,Element_Type,Nats,HDIM,Coulomb_acc,TIMERATIO,nnRx,nnRy,nnRz,nrnnlist,nnType,H_INDEX_START,H_INDEX_END); -[H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,RX,RY,RZ,H_INDEX_START,H_INDEX_END,Nocc,Hubbard_U,Znuc,Nats,Te); -[Etot_m,Eband0_m,Ecoul_m,Edipole_m,S_ent] = Energy(H0,Hubbard_U,Efield,D0,C,D,q,RX,RY,RZ,f,Te); % Energy calculation - 2*Te*S_ent -q_m = q; H_m = H; D_m = D; - -d_ETOT = (Etot_p - Etot_m)/.0002 -Ftot(1,1) - -pause -d_EBand0 = (Eband0_p-Eband0_m)/.0002 - -d_EBand = (2*trace(H_p*(D_p-diag(D0))) - 2*trace(H_m*(D_m-diag(D0))))/.0002 - -d_EDipole = (Edipole_p - Edipole_m)/.0002 -d_Ecoul = (Ecoul_p-Ecoul_m)/.0002 - -band0 = Fband0(1,1) -F_total = Ftot(1,1) -F_diople = Fdipole(1,1) + FSdipole(1,1) -FS_dipole = FSdipole(1,1) -F_coul = Fcoul(1,1) + FScoul(1,1) -FS_coul = FScoul(1,1) -F_pul = FPulay(1,1) -HEJ = 1 -pause - -RX = RX0; RX(1) = RX0(1) + 0.0001; -Edipole_p = 0; -for i = 1:Nats - Edipole_p = Edipole_p - q0(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy -end -RX = RX0; RX(1) = RX0(1) - 0.0001; -Edipole_m = 0; -for i = 1:Nats - Edipole_m = Edipole_m - q0(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy -end -d_FDipole = (Edipole_p - Edipole_m)/.0002 - -dq_dr = (q_p - q_m)/.0002; -d_Edipole_m = 0; -for i = 1:Nats - d_Edipole_m = d_Edipole_m - dq_dr(i)*(RX(i)*Efield(1)+RY(i)*Efield(2)+RZ(i)*Efield(3)); % External-field-Dipole interaction energy -end -d_EDipole = d_Edipole_m - -F11 = Fband0(1,1) + Fcoul(1,1) + FPulay(1,1) + FScoul(1,1) diff --git a/proxies/matlab/PBC_Coulomb.m b/proxies/matlab/PBC_Coulomb.m deleted file mode 100644 index be9bcbc0..00000000 --- a/proxies/matlab/PBC_Coulomb.m +++ /dev/null @@ -1,11 +0,0 @@ -function [C] = PBC_Coulomb(R,L,N,U) - -C = zeros(N); -for i = 1:N - C(i,i) = U(i); - for j = i+1:N - Dist2 = min([(R(i)-R(j))^2,(R(i)-R(j)+L)^2,(R(i)-R(j)-L)^2]); - %C(i,j) = (U(i)+U(j))*exp(-4*sqrt(Dist2)); C(j,i) = C(i,j); - C(i,j) = (U(i)+U(j))*exp(-1*sqrt(Dist2)); C(j,i) = C(i,j); - end -end diff --git a/proxies/matlab/PBC_CoulombPot.m b/proxies/matlab/PBC_CoulombPot.m deleted file mode 100644 index 95f09977..00000000 --- a/proxies/matlab/PBC_CoulombPot.m +++ /dev/null @@ -1,29 +0,0 @@ -function [Vcoul,dVcoul] = PBC_CoulombPot(q,C,U) - - N = max(size(q)); - Vcoul = zeros(N,1); - dVcoul = zeros(N,N); - for i = 1:N - for j = 1:N - if i~=j - Vcoul(i) = Vcoul(i) + q(j)/norm(R(i)-R(j)); - else - Vcoul(i) = Vcoul(i) + q(i)*U(i); - end - end - end - - for k = 1:N - for i = 1:N - for j = 1:N - if j~=i - if i==k - dVcoul(i,k) = dVcoul(i,k) - q(j)*(R(i)-R(j))/(norm(R(i)-R(j))^3); - end - if j==k - dVcoul(i,k) = dVcoul(i,k) + q(j)*(R(i)-R(j))/(norm(R(i)-R(j))^3); - end - end - end - end - end diff --git a/proxies/matlab/PBC_Energy.m b/proxies/matlab/PBC_Energy.m deleted file mode 100644 index 8557eeb8..00000000 --- a/proxies/matlab/PBC_Energy.m +++ /dev/null @@ -1,30 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Total energy calculation % -%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function [Etot,Eband0,Ecoul,Edipole,S_ent] = PBC_Energy(H0,Efield,D0,C,D,q,R,Te); - -%% E = 2*trace(H0*(D-D0)) + 0.5*sum_ij{i!=j} (qi*Cij*qj) + 0.5*sum_i qi^2*Ui - Efield*mu -%% dipole = mu(:) = sum_i qi*R(i,:); qi = 2*(D_ii-D0_ii) - -kB = 8.61739e-5; % eV/K; -N = max(size(q)); -Eband0 = 2*trace(H0*(D-D0)); % Single-particle/band energy - -Ecoul = 0.5*q'*C*q; % Coulomb energy - -Edipole = 0; -for i = 1:N - Edipole = Edipole - q(i)*R(i)*Efield; % External-field-Dipole interaction energy -end - -f = eig(D); -S_ent = 0; eps = 1e-9 -for i = 1:N - if (f(i) < 1-eps) & (f(i) > eps) - S_ent = - kB*(f(i)*log(f(i)) + (1-f(i))*log(1-f(i))); - end -end - -Etot = Eband0 + Ecoul + Edipole - 2*Te*S_ent; % Total energy - - diff --git a/proxies/matlab/PBC_Forces.m b/proxies/matlab/PBC_Forces.m deleted file mode 100644 index 8aeb7c19..00000000 --- a/proxies/matlab/PBC_Forces.m +++ /dev/null @@ -1,36 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Calcualte total forces and some matrix derivatives % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function [Ftot,dHdR,dCdR] = PBC_Forces(H0,Efield,D0,C,D,q,R,L,U,Rnd); - -N = max(size(q)); - -dHdR = 0*H0; -R0 = R; dR = 0.0001; -dEband0_dR = zeros(N,1); -dEcoul_dR = zeros(N,1); - -for i = 1:N - Rp = R0; - Rp(i,1) = Rp(i,1) + dR; % Finite difference forward displacement - Hp = PBC_Hamiltonian(Rp,L,N,Rnd); - Cp = PBC_Coulomb(Rp,L,N,U); - Rm = R0; - Rm(i,1) = Rm(i,1) - dR; % Finite difference backward displacement - Hm = PBC_Hamiltonian(Rm,L,N,Rnd); - Cm = PBC_Coulomb(Rm,L,N,U); - dHdR(:,i) = (Hp(:,i) - Hm(:,i))/(2*dR); %% H0 derivative collected columnwise. In reality dHdR = dHdR + dHdR' - dCdR(:,i) = (Cp(:,i) - Cm(:,i))/(2*dR); %% C derivative collected columnwise. In reality dCdR = dCdR + dCdR' -end %% Otherwise use q(:)'*dCdR(:,i), which is calculated in regular Ewald - -for i = 1:N % force contributions from band energy 2Tr[H(D-D0)] and Coulomb/Hartree energy (1/2) sum_{ij} q_i C_{ij}q_j - dEband0_dR(i) = 2*2*(D(i,:)-D0(i,:))*dHdR(:,i); - dEcoul_dR(i) = q(i)*q(:)'*dCdR(:,i); -end - -Fdipole = zeros(N,1); -for i = 1:N - Fdipole(i) = -q(i)*Efield; % Forces from External field-dipole interaction -end - -Ftot = - dEband0_dR - dEcoul_dR - Fdipole; % Collected total force diff --git a/proxies/matlab/PBC_Hamiltonian.m b/proxies/matlab/PBC_Hamiltonian.m deleted file mode 100644 index 4d85b51b..00000000 --- a/proxies/matlab/PBC_Hamiltonian.m +++ /dev/null @@ -1,12 +0,0 @@ -function [H0] = PBC_Hamiltonian(R,L,N,Rnd) - -av = sum(Rnd)/N; -H0 = zeros(N); -for i = 1:N - H0(i,i) = 1*(Rnd(i)-av); - for j = i+1:N - Dist2 = min([(R(i)-R(j))^2,(R(i)-R(j)+L)^2,(R(i)-R(j)-L)^2]); - %H0(i,j) = (Rnd(i)+Rnd(j))*exp(-3*Dist2); H0(j,i) = H0(i,j); - H0(i,j) = (Rnd(i)+Rnd(j))*exp(-1*Dist2); H0(j,i) = H0(i,j); - end -end diff --git a/proxies/matlab/PBC_SCF.m b/proxies/matlab/PBC_SCF.m deleted file mode 100644 index e33d93d7..00000000 --- a/proxies/matlab/PBC_SCF.m +++ /dev/null @@ -1,21 +0,0 @@ -function [H,Hcoul,Hdipole,D,q] = PBC_SCF(H0,Efield,D0,C,q,R,nocc,Te) - -N = max(size(H0)); -q_new = q; q_old = 0*q; -it = 0; res = 1; -Vdipole = zeros(N,1); -h = sort(eig(H0)); -mu0 = 0.5*(h(nocc)+h(nocc+1)); mu1 = 0; -while res > 1e-10 - it = it + 1; - Hdipole = diag(-R*Efield); - Hcoul = diag(C*q_new); - H = H0 + Hcoul + Hdipole; -% DA = DensityMatrix(H,nocc); % 2*trace(D) = Ne = 2*nocc - [D,mu0] = DM_Fermi(H,Te,mu0,nocc,16,1e-9,50); - q_old = q_new; - q = 2*diag(D-D0); - q_new = 0.2*q + (1-0.2)*q_old; - res = norm(q-q_old); -end - diff --git a/proxies/matlab/PBC_SCF_PRT.m b/proxies/matlab/PBC_SCF_PRT.m deleted file mode 100644 index fe97eba4..00000000 --- a/proxies/matlab/PBC_SCF_PRT.m +++ /dev/null @@ -1,43 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% SCF linear response calculation with respect to perturbation H1 % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function [H,H_1,Hcoul,Hdipole,D,D1,q] = PBC_SCF_PRT(H0,H1,C,Efield,D0,U,q,R,mu0,nocc,Te) - -mu1 = 0; -N = max(size(H0)); -q_new = q; q_old = 0*q; % Initial guess -q1 = 0*q; q1_new = q1; q1_old = q1; % Initial guess -Vdipole = zeros(N,1); - -it = 0; -while norm(q-q_old)+norm(q1-q1_old) > 1e-9 % Continue until convergence - it = it + 1; - - V1coul = C*q1_new; % Linear response in Coulomb/Hartree potential - - Vcoul = C*q_new; % Coulomb/Hartree potential - Hcoul = diag(Vcoul); % Hamiltonian from the linear response in Coulomb/Hartree potential - Hdipole = diag(-R*Efield); % Hamiltonian from external field dipole interaction - - H_1 = H1 + diag(V1coul); % Total net linear response Hamiltonian - H = H0 + Hcoul + Hdipole; % Total 0th-order Hamiltonian -% [D,D1] = DensityMatrixPRT(H,H_1,nocc); % 2*trace(D) = Ne = 2*nocc, D = density matrix, D1 = response density matrix - [D,D1,mu0,mu1] = DM_PRT_Fermi(H,H_1,Te,mu0,mu1,nocc,16,1e-9,20); -% Occ_Err = trace(D)-nocc -% OccErr1 = trace(D1)-0 -% IdErr = norm(D*D-D) -% IdErr1 = norm(D1*D+D*D1-D1) -% ComErr = norm(D*H-H*D) -% ComErr1 = norm(D1*H-H*D1 + D*H_1-H_1*D) - - q1_old = q1_new; - q1 = 2*diag(D1); - q1_new = 0.1*q1 + (1-0.1)*q1_old; % Simple linear mixing - - q_old = q_new; - q = 2*diag(D-D0); - q_new = 0.1*q + (1-0.1)*q_old; % Simple linear mixing - Res = norm(q-q_old) +norm(q1-q1_old) ; - %pause -end - diff --git a/proxies/matlab/PBC_SCF_PRT_0.m b/proxies/matlab/PBC_SCF_PRT_0.m deleted file mode 100644 index fc92aa7c..00000000 --- a/proxies/matlab/PBC_SCF_PRT_0.m +++ /dev/null @@ -1,42 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% SCF linear response calculation with respect to perturbation H1 % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function [H,H_1,Hcoul,Hdipole,D,D1,q] = PBC_SCF_PRT_0(H0,H1,C,Efield,D0,U,q,R,nocc) - -N = max(size(H0)); -q_new = q; q_old = 0*q; % Initial guess -q1 = 0*q; q1_new = q1; q1_old = q1; % Initial guess -Vdipole = zeros(N,1); - -it = 0; -while norm(q-q_old)+norm(q1-q1_old) > 1e-9 % Continue until convergence - it = it + 1; - - V1coul = C*q1_new; % Linear response in Coulomb/Hartree potential - - Vcoul = C*q_new; % Coulomb/Hartree potential - Hcoul = diag(Vcoul); % Hamiltonian from the linear response in Coulomb/Hartree potential - Hdipole = diag(-R*Efield); % Hamiltonian from external field dipole interaction - - H_1 = H1 + diag(V1coul); % Total net linear response Hamiltonian - H = H0 + Hcoul + Hdipole; % Total 0th-order Hamiltonian - [D,D1] = DensityMatrixPRT(H,H_1,nocc); % 2*trace(D) = Ne = 2*nocc, D = density matrix, D1 = response density matrix -% OccErr = trace(D)-nocc -% OccErr1 = trace(D1)-0 -% IdErr = norm(D*D-D) -% IdErr1 = norm(D1*D+D*D1-D1) -% ComErr = norm(D*H-H*D) -% ComErr1 = norm(D1*H-H*D1 + D*H_1-H_1*D) -% pause - - - - q1_old = q1_new; - q1 = 2*diag(D1); - q1_new = 0.1*q1 + (1-0.1)*q1_old; % Simple linear mixing - - q_old = q_new; - q = 2*diag(D-D0); - q_new = 0.1*q + (1-0.1)*q_old; % Simple linear mixing -end - diff --git a/proxies/matlab/PBC_SCF_PRT_X.m b/proxies/matlab/PBC_SCF_PRT_X.m deleted file mode 100644 index f05bd922..00000000 --- a/proxies/matlab/PBC_SCF_PRT_X.m +++ /dev/null @@ -1,48 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% SCF linear response calculation with respect to atomic displacements % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function [H,H_1,Hcoul,Hdipole,dVcoul,D,D1,q] = PBC_SCF_PRT_X(H0,dHdR,C,dCdR,Efield,D0,U,q,R,mu0,nocc,k,Te) - -N = max(size(H0)); -q_new = q; q_old = 0*q; -q1 = 0*q; q1_new = q1; q1_old = q1; -Vdipole = zeros(N,1); -mu1 = 0; - -H1 = zeros(N); -H1(:,k) = dHdR(:,k); -H1 = H1 + H1'; - -it = 0; -while norm(q-q_old)+norm(q1-q1_old) > 1e-9 - it = it + 1; - - V1coul = C*q1_new; % Linear response in Hartree/Coulomb potential from charge response due to dsiplacement - - dVcoul = dCdR(:,k)*q_new(k); % Linear response in Hartree/Coulomb potential from displacement only - dVcoul(k) = dVcoul(k) + q_new'*dCdR(:,k); % Combined total linear response in Hartree/Coulomb energy from displacement - - Vcoul = C*q_new; % Coulomb/Hartree potential - Hcoul = diag(Vcoul); % Coulomb/Hartree Hamiltonian - Hdipole = diag(-R*Efield); % Hamiltonian from external field-dipole interaction - dR = 0*R; dR(k) = 1; - - H_1 = H1 + diag(V1coul) + diag(dVcoul) + diag(-dR*Efield); % Linear response Hamiltonian - H = H0 + Hcoul + Hdipole; % Total ground-state Kohn-Sham Hamiltonian -% [D,D1] = DensityMatrixPRT(H,H_1,nocc); % 2*trace(D) = Ne = 2*nocc, D = density matrix, D1 = response density matrix -% Occ1 = trace(D1) - [D,D1,mu0,mu1] = DM_PRT_Fermi(H,H_1,Te,mu0,mu1,nocc,16,1e-9,20); -% Occ2 = trace(D1) -% IdFel = norm(D*D-D) -% norm(q-q_old)+norm(q1-q1_old) -% pause - - q1_old = q1_new; - q1 = 2*diag(D1); % Linear response in atom-projected charges - q1_new = 0.1*q1 + (1-0.1)*q1_old; % Simple linear mixing - - q_old = q_new; - q = 2*diag(D-D0); % Atomic charges - q_new = 0.1*q + (1-0.1)*q_old; % Simple linear mixing -end - diff --git a/proxies/matlab/PBC_main.m b/proxies/matlab/PBC_main.m deleted file mode 100644 index 3c85308e..00000000 --- a/proxies/matlab/PBC_main.m +++ /dev/null @@ -1,101 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Dual Susceptibility approach to calculate Born-Effective charges % -% 1-dimensional DFTB example with periodic boundary conditions % -% A.M.N. Niklasson, T1, LANL % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Todo: Implement in DFTB/LATTE, which includes % -% 0) Extenson from 1D to 3D with x,y, and z % -% 1) Extension to fractional occupation Te > 0, Done! % -% 2) Extension to general non-orthonormal basis sets % -% 3) If possible, do Periodic Boundary Conditions correctly, % -% without results depending on the edges in Hdipole, Correct!% -% 4) Implement response calculation with AI hardware/GPU % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Total Energy: % -% E = 2Tr[H0(D-D0)] + (1/2)sum_{ij} q_i C_{ij} q_j - Efield*dipole % -% dipole = sum_i R_{i} q_i, half filled, 1 basis-function/atom % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -clear; -N = 20; % N > 2 % Number of atoms and basis functions -Te = 50000 % Some electronic temperature -Efield = 0.0000; % External field +/- dEfield give the BEQ from force derivative -atoms = [1:N]; % Atomic positions -R0 = atoms; -atoms = [N-1:N,1:N-2]; % Atomic positions shifted cyclically => same BEQ but shifted -SEED = atoms; Rnd = (sin(2.4+3*SEED(:).^3-sin(pi*SEED(:)/N))); % "Randomized" seed for models -Rnd2 = (10 + 1*(sin(12+3.3*SEED(:).^5-sin(pi*SEED(:))))); % "Randomized" seed for models -R = atoms'; L = N; %R = R + 3.3; -U = Rnd2; -D0 = eye(N)/2; nocc = N/2; % Atomic denity matrix -H0 = PBC_Hamiltonian(R,L,N,Rnd); C = PBC_Coulomb(R,L,N,U); % Hamiltonian H0 and Coulomb matrix C, toy models - -n = N; M = 1; % M is the number of unit cells -Rtmp = R; Rndtmp = Rnd; Rndtmp2 = Rnd2; -for i = 1:M - R((i-1)*n+1:i*n) = (i-1)*L + Rtmp(1:n); - Rnd((i-1)*n+1:i*n) = Rndtmp(1:n); - Rnd2((i-1)*n+1:i*n) = Rndtmp2(1:n); -end -N = n*M; L = N; nocc = N/2; D0 = eye(N)/2; -U = Rnd2; -H0 = PBC_Hamiltonian(R,L,N,Rnd); C = PBC_Coulomb(R,L,N,U); % Hamiltonian H0 and Coulomb matrix C, toy models - -[D,mu0] = DensityMatrix(H0,nocc); q = 2*(diag(D-D0)); % Density matrix and first initial charge guess -[D,mu0] = DM_Fermi(H0,Te,mu0,nocc,16,1e-9,100); -[H,Hcoul,Hdipole,D,q] = PBC_SCF(H0,Efield,D0,C,q,R,nocc,Te); % Self-consistent optimization - -[Etot,Eband0,Ecoul,Edipole,S_ent] = PBC_Energy(H0,Efield,D0,C,D,q,R,Te); % Energy calculation - 2*Te*S_ent -[Ftot,dHdR,dCdR] = PBC_Forces(H0,Efield,D0,C,D,q,R,L,U,Rnd); % Forces and H0 and C derviative matrices (column wise) - -A = diag(R0); % Position operator -a_dipole = 2*trace(A*(D-D0)) % Dipole -alt_a_dipole = R'*q -pause - -%%% Calculate response in dipole with respect to atomic displacement, i.e. where d_dipole/dR_k = d^2_E//(dRk dEfield) -%%%% Use direct perturbation with respect to displacement, calculated sepconsistently as in DF-PRT -for k = 1:N - [H,H_1,Hcoul,Hdipole,dVcoul,D,D1,q] = PBC_SCF_PRT_X(H0,dHdR,C,dCdR,Efield,D0,U,q,R,mu0,nocc,k,Te); % N number of SCF_PRT, one for each k!!! -% ![H,H_1,Hcoul,Hdipole,dVcoul,D,D1,q] = PBC_SCF_PRT_X(H0,dHdR,C,dCdR,Efield,D0,U,q,R0,mu0,nocc,k,Te); % N number of SCF_PRT, one for each k!!! -q1 = diag(D1); -[k,q(1:10)']; -[k,q1(1:10)']; - - dA = 0*A; dA(k,k) = 1; - dadR(k) = 2*trace(A*D1) + 2*trace(dA*(D-D0)); % d_dipole/dR_k = d^2_E//(dRk dEfield) = 2*R'*q1 + 2*q(k); - Same = [dadR(k) ,2*R0*q1 + q(k)]; -end -a_dipole = R'*q -a_dipole_R0 = R0*q - -%% Use dual SCF susceptibility approach to DF-PRT with respect to dipole observable A -%% Susceptibility for dipole observable -> XA -A0 = A; -Q = eye(N)-D; -%[H,H_1,Hcoul,Hdipole,D,XA,q] = PBC_SCF_PRT(H0,A,C,Efield,D0,U,q,R,mu0,nocc,Te); % Only one SCF_PRT using the dual susceptibility approach!!! -[H,H_1,Hcoul,Hdipole,D,XA,q] = PBC_SCF_PRT(H0,A,C,Efield,D0,U,q,R0,mu0,nocc,Te); % Only one SCF_PRT using the dual susceptibility approach!!! -%[H,H_1,Hcoul,Hdipole,D,XA,q] = PBC_SCF_PRT_0(H0,A,C,Efield,D0,U,q,R,nocc); % At Te = 0 - -for k = 1:N %% Calculate dipole response using XA susceptibility - dA = 0*A; dA(k,k) = 1; - dVcoul = zeros(N,1); dR = zeros(N,1); dR(k) = 1; - dH = zeros(N); - dH(:,k) = dHdR(:,k); - dH = dH + dH'; - - dVcoul = dCdR(:,k)*q(k); dVcoul(k) = dVcoul(k) + q'*dCdR(:,k); - dH = dH + diag(dVcoul) + diag(-dR*Efield); - - da_dR(k) = 2*trace(XA*dH) + 2*trace(dA*(D-D0)); % d_dipole/dR_k = d^2_E//(dRk dEfield) from susceptibility calculation -end - -a_dipole = 2*trace(A*(D-D0)) % Still the same! - -% Check equivalence between the direct DF-PRT approach and the dual susceptibility formulation -Reldiff = norm(dadR-da_dR)/norm(dadR) -%q' -mm = 2 -dadR -da_dR -%da_dR(n*(mm-1)+1:mm*n) -%da_dR(n*mm+1:(mm+1)*n) diff --git a/proxies/matlab/SCF.m b/proxies/matlab/SCF.m deleted file mode 100644 index 2cb606ea..00000000 --- a/proxies/matlab/SCF.m +++ /dev/null @@ -1,50 +0,0 @@ -function [H,Hcoul,Hdipole,D,Dorth,q,f] = SCF(H0,S,Efield,C,Rx,Ry,Rz,H_Index_Start,H_Index_End,nocc,U,Znuc,Nats,Te) - -N = max(size(H0)); -it = 0; Res = 1; -Z = S^(-1/2); -h = sort(eig(Z'*H0*Z)); -mu0 = 0.5*(h(nocc)+h(nocc+1)); -[D,mu0] = DM_Fermi(Z'*H0*Z,Te,mu0,nocc,16,1e-9,50); -D = Z*D*Z'; -DS = 2*diag(D*S); -q = zeros(Nats,1); -for i = 1:Nats - q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); -end - -while Res > 1e-10 - it = it + 1; - Dipole = diag(-Rx*Efield(1)-Ry*Efield(2)-Rz*Efield(3)); - Hdipole = zeros(N); - CoulPot = C*q; - - Hcoul = zeros(N); - for i = 1:Nats - for j = H_Index_Start(i):H_Index_End(i) - Hdipole(j,j) = Dipole(i); - Hcoul(j,j) = U(i)*q(i) + CoulPot(i); - end - end - - Hcoul = 0.5*Hcoul*S + 0.5*S*Hcoul; - Hdipole = 0.5*Hdipole*S + 0.5*S*Hdipole; - H = H0 + Hcoul + Hdipole; - - [Dorth,mu0] = DM_Fermi(Z'*H*Z,Te,mu0,nocc,16,1e-9,50); - - D = Z*Dorth*Z'; - q_old = q; - - DS = 2*diag(D*S); - for i = 1:Nats - q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); - end - - Res = norm(q-q_old); - - q = q_old + 0.2*(q-q_old); - -end -f = eig(0.5*(Dorth+Dorth')); - diff --git a/proxies/matlab/SCF_save_00.m b/proxies/matlab/SCF_save_00.m deleted file mode 100644 index 7dc14a23..00000000 --- a/proxies/matlab/SCF_save_00.m +++ /dev/null @@ -1,50 +0,0 @@ -function [H,Hcoul,Hdipole,D,q,f] = SCF(H0,S,Efield,C,Rx,Ry,Rz,H_Index_Start,H_Index_End,nocc,U,Znuc,Nats,Te) - -N = max(size(H0)); -it = 0; Res = 1; -Z = S^(-1/2); -h = sort(eig(Z'*H0*Z)); -mu0 = 0.5*(h(nocc)+h(nocc+1)); -[D,mu0] = DM_Fermi(Z'*H0*Z,Te,mu0,nocc,16,1e-9,50); -D = Z*D*Z'; -DS = 2*diag(D*S); -q = zeros(Nats,1); -for i = 1:Nats - q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); -end - -while Res > 1e-10 - it = it + 1; - Dipole = diag(-Rx*Efield(1)-Ry*Efield(2)-Rz*Efield(3)); - Hdipole = zeros(N); - CoulPot = C*q; - - Hcoul = zeros(N); - for i = 1:Nats - for j = H_Index_Start(i):H_Index_End(i) - Hdipole(j,j) = Dipole(i); - Hcoul(j,j) = U(i)*q(i) + CoulPot(i); - end - end - - Hcoul = 0.5*Hcoul*S + 0.5*S*Hcoul; - Hdipole = 0.5*Hdipole*S + 0.5*S*Hdipole; - H = H0 + Hcoul + Hdipole; - - [Dorth,mu0] = DM_Fermi(Z'*H*Z,Te,mu0,nocc,16,1e-9,50); - - D = Z*Dorth*Z'; - q_old = q; - - DS = 2*diag(D*S); - for i = 1:Nats - q(i) = sum(DS(H_Index_Start(i):H_Index_End(i))) - Znuc(i); - end - - Res = norm(q-q_old); - - q = q_old + 0.2*(q-q_old); - -end -f = eig(0.5*(Dorth+Dorth')); - diff --git a/proxies/matlab/ScaleTail.m b/proxies/matlab/ScaleTail.m deleted file mode 100644 index 51d1ff17..00000000 --- a/proxies/matlab/ScaleTail.m +++ /dev/null @@ -1,26 +0,0 @@ -function A = ScaleTail(A) -if abs(A(1)) < 1e-12 - A(9:14) = 0; -else - R1 = A(7); - RCUT = A(8); - R1SQ = R1*R1; - RMOD = R1 - A(6); - POLYNOM = RMOD*(A(2) + RMOD*(A(3) + RMOD*(A(4) + A(5)*RMOD))); - SCL_R1 = exp(POLYNOM); - DELTA = RCUT - R1; -%! Now we're using a 6th order polynomial: fitted to value, first, -%! and second derivatives at R1 and R_cut - A(9) = SCL_R1; - RMOD = R1 - A(6); - DPOLY = A(2) + 2*A(3)*RMOD + 3*A(4)*RMOD*RMOD + 4*A(5)*RMOD*RMOD*RMOD; - A(10) = DPOLY*SCL_R1; - DDPOLY = 2*A(3) + 6*A(4)*RMOD + 12*A(5)*RMOD*RMOD; - A(11) = (DPOLY*DPOLY + DDPOLY)*SCL_R1/2; - DELTA2 = DELTA*DELTA; - DELTA3 = DELTA2*DELTA; - DELTA4 = DELTA3*DELTA; - A(12) = (-1/DELTA3)*(3*A(11)*DELTA2 + 6*A(10)*DELTA + 10*A(9)); - A(13) = (1/DELTA4)*(3*A(11)*DELTA2 + 8*A(10)*DELTA + 15*A(9)); - A(14) = (-1/(10*DELTA3))*(6*A(13)*DELTA2 + 3*A(12)*DELTA + A(11)); -end diff --git a/proxies/matlab/Slater_Koster_Block.m b/proxies/matlab/Slater_Koster_Block.m deleted file mode 100644 index 29542302..00000000 --- a/proxies/matlab/Slater_Koster_Block.m +++ /dev/null @@ -1,104 +0,0 @@ -function x0 = Slater_Koster_Block(IDim,JDim,Ra,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal) - -%%% Standard Slater-Koster sp-parameterization for an atomic block between a pair of atoms -%%% IDim, JDim: dimensions of the output block, e.g. 1 x 4 for H-O or 4 x 4 for O-O, or 4 x 1 for O-H -%%% Ra, Rb: are the vectors of the positions of the two atoms -%%% LBox: Periodic boundary conditions, i.e. length of box in x, y, z (cubic box only) -%%% Type_pair(1 or 2): Character of the type of each atom in the pair, e.g. 'H' for hydrogen of 'O' for oxygen -%%% fss_sigma, ... , fpp_pi: paramters for the bond integrals -%%% diagonal(1 or 2): atomic energies Es and Ep or diagonal elements of the overlap i.e. diagonal = 1 - - -atom_type_a = Type_pair(1); atom_type_b = Type_pair(2); -x0 = zeros(IDim,JDim); -RXb = Rb(1); RYb = Rb(2); RZb = Rb(3); - -for nr_shift_X = -1:1 % Periodic BC shifts in X, Y and Z. Costs a lot extra! -for nr_shift_Y = -1:1 -for nr_shift_Z = -1:1 - - Rb(1) = RXb + nr_shift_X*LBox(1); % Shifts for PBC - Rb(2) = RYb + nr_shift_Y*LBox(2); - Rb(3) = RZb + nr_shift_Z*LBox(3); - Rab = Rb-Ra; % OBS b - a !!! - dR = norm(Rab); - - if dR < 1e-12 % same position and thus the same type atom_type_a = atom_type_b, Ra = Rb - if atom_type_a == 'H' % s atom 1 x 1 - x0(1,1) = x0(1,1) + diagonal(1); % diagonal(1) = Es for atoms, = 1 for overlap - else % sp atom 4 x 4 Diagonal Only - x0(1,1) = x0(1,1) + diagonal(1); % diagonal(1) = Es for atoms, = 1 for overlap - x0(2,2) = x0(2,2) + diagonal(2); % diagonal(2) = Ep for atoms, = 1 for overlap - x0(3,3) = x0(3,3) + diagonal(2); - x0(4,4) = x0(4,4) + diagonal(2); - end - else - L = Rab(1)/dR; % Direction cosines - M = Rab(2)/dR; - N = Rab(3)/dR; - - if atom_type_a == 'H' - if atom_type_b == 'H' % s-s overlap 1 x 1 block - HSSS = BondIntegral(dR,fss_sigma); % Calculate the s-s bond integral - x0(1,1) = x0(1,1) + HSSS; - else % s-sp overlap 1 x 4 block - HSSS = BondIntegral(dR,fss_sigma); - HSPS = BondIntegral(dR,fsp_sigma); - x0(1,1) = x0(1,1) + HSSS; - x0(1,2) = x0(1,2) + L*HSPS; - x0(1,3) = x0(1,3) + M*HSPS; - x0(1,4) = x0(1,4) + N*HSPS; - end - else - if atom_type_b == 'H' % sp-s overlap 4 x 1 block - HSSS = BondIntegral(dR,fss_sigma); - HSPS = BondIntegral(dR,fsp_sigma); - x0(1,1) = x0(1,1) + HSSS; - x0(2,1) = x0(2,1) - L*HSPS; - x0(3,1) = x0(3,1) - M*HSPS; - x0(4,1) = x0(4,1) - N*HSPS; - else % sp-sp overlap - HSSS = BondIntegral(dR,fss_sigma); - HSPS = BondIntegral(dR,fsp_sigma); - HPSS = BondIntegral(dR,fps_sigma); - HPPS = BondIntegral(dR,fpp_sigma); - HPPP = BondIntegral(dR,fpp_pi); - - PPSMPP = HPPS - HPPP; - PXPX = HPPP + L*L*PPSMPP; - PXPY = L*M*PPSMPP; - PXPZ = L*N*PPSMPP; - PYPX = M*L*PPSMPP; - PYPY = HPPP + M*M*PPSMPP; - PYPZ = M*N*PPSMPP; - PZPX = N*L*PPSMPP; - PZPY = N*M*PPSMPP; - PZPZ = HPPP + N*N*PPSMPP; - - x0(1,1) = x0(1,1) + HSSS; - x0(1,2) = x0(1,2) + L*HSPS; % or 0 - x0(1,3) = x0(1,3) + M*HSPS; % or 0 - x0(1,4) = x0(1,4) + N*HSPS; % or 0 - - x0(2,1) = x0(2,1) - L*HPSS; % or 0 - - x0(2,2) = x0(2,2) + PXPX; - x0(2,3) = x0(2,3) + PXPY; - x0(2,4) = x0(2,4) + PXPZ; - - x0(3,1) = x0(3,1) - M*HPSS; % or 0 - - x0(3,2) = x0(3,2) + PYPX; - x0(3,3) = x0(3,3) + PYPY; - x0(3,4) = x0(3,4) + PYPZ; - x0(4,1) = x0(4,1) - N*HPSS; % or 0 - x0(4,2) = x0(4,2) + PZPX; - x0(4,3) = x0(4,3) + PZPY; - x0(4,4) = x0(4,4) + PZPZ; - end - end - end -end -end -end - diff --git a/proxies/matlab/Slater_Koster_Pair.m b/proxies/matlab/Slater_Koster_Pair.m deleted file mode 100644 index c0f69c3d..00000000 --- a/proxies/matlab/Slater_Koster_Pair.m +++ /dev/null @@ -1,94 +0,0 @@ -function x0 = Slater_Koster_Block(Ra,Rb,LBox,Type_pair,fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,diagonal) - -%%% Standard Slater-Koster sp-parameterization for an atomic block between a pair of atoms -%%% IDim, JDim: dimensions of the output block, e.g. 1 x 4 for H-O or 4 x 4 for O-O, or 4 x 1 for O-H -%%% Ra, Rb: are the vectors of the positions of the two atoms -%%% LBox: Periodic boundary conditions, i.e. length of box in x, y, z (cubic box only) -%%% Type_pair(1 or 2): Character of the type of each atom in the pair, e.g. 'H' for hydrogen of 'O' for oxygen -%%% fss_sigma, ... , fpp_pi: paramters for the bond integrals -%%% diagonal(1 or 2): atomic energies Es and Ep or diagonal elements of the overlap i.e. diagonal = 1 - - -atom_type_a = Type_pair(1); atom_type_b = Type_pair(2); -x0 = zeros(4); -RXb = Rb(1); RYb = Rb(2); RZb = Rb(3); - - Rab = Rb-Ra; % OBS b - a !!! - dR = norm(Rab); - - if dR < 1e-10 % same position and thus the same type atom_type_a = atom_type_b, Ra = Rb - if atom_type_a == 'H' % s atom 1 x 1 - x0(1,1) = x0(1,1) + diagonal(1); % diagonal(1) = Es for atoms, = 1 for overlap - else % sp atom 4 x 4 Diagonal Only - x0(1,1) = x0(1,1) + diagonal(1); % diagonal(1) = Es for atoms, = 1 for overlap - x0(2,2) = x0(2,2) + diagonal(2); % diagonal(2) = Ep for atoms, = 1 for overlap - x0(3,3) = x0(3,3) + diagonal(2); - x0(4,4) = x0(4,4) + diagonal(2); - end - else - L = Rab(1)/dR; % Direction cosines - M = Rab(2)/dR; - N = Rab(3)/dR; - - if atom_type_a == 'H' - if atom_type_b == 'H' % s-s overlap 1 x 1 block - HSSS = BondIntegral(dR,fss_sigma); % Calculate the s-s bond integral - x0(1,1) = x0(1,1) + HSSS; - else % s-sp overlap 1 x 4 block - HSSS = BondIntegral(dR,fss_sigma); - HSPS = BondIntegral(dR,fsp_sigma); - x0(1,1) = x0(1,1) + HSSS; - x0(1,2) = x0(1,2) + L*HSPS; - x0(1,3) = x0(1,3) + M*HSPS; - x0(1,4) = x0(1,4) + N*HSPS; - end - else - if atom_type_b == 'H' % sp-s overlap 4 x 1 block - HSSS = BondIntegral(dR,fss_sigma); - HSPS = BondIntegral(dR,fsp_sigma); - x0(1,1) = x0(1,1) + HSSS; - x0(2,1) = x0(2,1) - L*HSPS; - x0(3,1) = x0(3,1) - M*HSPS; - x0(4,1) = x0(4,1) - N*HSPS; - else % sp-sp overlap - HSSS = BondIntegral(dR,fss_sigma); - HSPS = BondIntegral(dR,fsp_sigma); - HPSS = BondIntegral(dR,fps_sigma); - HPPS = BondIntegral(dR,fpp_sigma); - HPPP = BondIntegral(dR,fpp_pi); - - PPSMPP = HPPS - HPPP; - PXPX = HPPP + L*L*PPSMPP; - PXPY = L*M*PPSMPP; - PXPZ = L*N*PPSMPP; - PYPX = M*L*PPSMPP; - PYPY = HPPP + M*M*PPSMPP; - PYPZ = M*N*PPSMPP; - PZPX = N*L*PPSMPP; - PZPY = N*M*PPSMPP; - PZPZ = HPPP + N*N*PPSMPP; - - x0(1,1) = x0(1,1) + HSSS; - x0(1,2) = x0(1,2) + L*HSPS; % or 0 - x0(1,3) = x0(1,3) + M*HSPS; % or 0 - x0(1,4) = x0(1,4) + N*HSPS; % or 0 - - x0(2,1) = x0(2,1) - L*HPSS; % or 0 - - x0(2,2) = x0(2,2) + PXPX; - x0(2,3) = x0(2,3) + PXPY; - x0(2,4) = x0(2,4) + PXPZ; - - x0(3,1) = x0(3,1) - M*HPSS; % or 0 - - x0(3,2) = x0(3,2) + PYPX; - x0(3,3) = x0(3,3) + PYPY; - x0(3,4) = x0(3,4) + PYPZ; - x0(4,1) = x0(4,1) - N*HPSS; % or 0 - x0(4,2) = x0(4,2) + PZPX; - x0(4,3) = x0(4,3) + PZPY; - x0(4,4) = x0(4,4) + PZPZ; - end - end - end - diff --git a/proxies/matlab/Thresh.m b/proxies/matlab/Thresh.m deleted file mode 100644 index fd05b2d5..00000000 --- a/proxies/matlab/Thresh.m +++ /dev/null @@ -1,10 +0,0 @@ -function [X] = Thresh(X,eps); - -N = max(size(X)); -for i = 1:N -for j = 1:N - if abs(X(i,j)) < eps - X(i,j) = 0; - end -end -end diff --git a/proxies/matlab/nearestneighborlist.m b/proxies/matlab/nearestneighborlist.m deleted file mode 100644 index 97d40ce4..00000000 --- a/proxies/matlab/nearestneighborlist.m +++ /dev/null @@ -1,67 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Simple N^2 brute force nearest neighborlist % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function [nrnnlist,nndist,nnRx,nnRy,nnRz,nnType,nnStruct,nrnnStruct] = nearestneighborlist(Rx,Ry,Rz,LBox,Rcut,N) - -% Rx, Ry, Rz are the coordinates of atoms -% LBox dimensions of peridic BC -% N number of atoms -% nrnnlist(I): number of atoms within distance of Rcut from atom I including atoms in the skin -% nndist(I,J): distance between atom I(in box) and J (including atoms in the skin) -% nnRx(I,J): x-coordinte of neighbor J to I within RCut (including atoms in the skin) -% nnRy(I,J): y-coordinte of neighbor J to I within RCut (including atoms in the skin) -% nnRz(I,J): z-coordinte of neighbor J to I within RCut (including atoms in the skin) -% nnType(I,J): The neighbor J of I corresponds to some translated atom number in the box that we need to keep track of -% nnStruct(I,J): The neigbors J to I within Rcut that are all within the box (not in the skin). -% nrnnStruct(I): Number of neigbors to I within Rcut that are all within the box (not in the skin). - -Lx = LBox(1); Ly = LBox(2); Lz = LBox(3); % Dimensions of periodic BC -nx = floor(Lx/Rcut); ny = floor(Ly/Rcut); nz = floor(Lz/Rcut); % Division into # cell boxes: nx, ny, nz - -nndist = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); % Allocation of memory, not optimized! -nnRx = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); % Make sure the fastes allocation for Forstran is used, e.g. (N,1) instead of (1,N) or the opposite! -nnRy = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); -nnRz = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); -type = zeros(10*N); -nnType = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); -nnStruct = zeros(N,floor(10+4*N/((nx+2)*(ny+2)*(nz+2)))); -nrnnStruct = zeros(N,1); -nrnnlist = zeros(N,1); - -% Simple N^2 brute force nearest neighborlist - for i = 1:N - cnt = 0; - tmp = zeros(N,1); - for m = 1:N - for j = -1:1 - for k = -1:1 - for l = -1:1 - Tx = Rx(m)+j*Lx; % Search all neigbors within a single translation (multiple translations could be necessary for small systems! - Ty = Ry(m)+k*Ly; - Tz = Rz(m)+l*Lz; - dist = norm([Rx(i),Ry(i),Rz(i)]-[Tx,Ty,Tz]); -% if (dist < Rcut) & (dist > 1e-12) % Neighbors within Rcut inlcuidng translated atoms in the "skin" - if (dist < Rcut) % Neighbors within Rcut inlcuidng translated atoms in the "skin" - cnt = cnt + 1; - nndist(i,cnt) = dist; - nnRx(i,cnt) = Tx; - nnRy(i,cnt) = Ty; - nnRz(i,cnt) = Tz; - nnType(i,cnt) = m; % Neigbor is number of original ordering number m in the box that might have been stranslated to the skin - tmp(m) = m; - end - end - end - end - end - nrnnlist(i) = cnt; - cnt2 = 0; - for ss = 1:N - if tmp(ss) > 0 % Includes only neighbors in the box within Rcut (without the skin) - cnt2 = cnt2 + 1; - nnStruct(i,cnt2) = ss; - end - end - nrnnStruct(i) = cnt2; - end - diff --git a/proxies/python/aosa_hamiltonian.py b/proxies/python/aosa_hamiltonian.py deleted file mode 100644 index dd8cf9cc..00000000 --- a/proxies/python/aosa_hamiltonian.py +++ /dev/null @@ -1,130 +0,0 @@ -"""AOSA and LATTE - prototype hamiltonian elements -Atomic orbital spherical approximation - - Reads the total number of atoms - - Constructs a set of random coordinates - - Constructs a simple Hamiltonian - - Computes the hamiltonian derivatives -""" - -import os -import sys - -import numpy as np -import scipy.linalg as sp -import sedacs.driver -#import sedacs.interface_modules -from sedacs.dev.io import src_path - -try: - import ctypes - - # import gpulibInterface as gpu - - gpuLib = True - arch = "nvda" - pwd = os.getcwd() - - if arch == "nvda": - print("loading nvidia...") - lib = ctypes.CDLL(str((src_path() / "gpu/nvda/libnvda.so").absolute())) - if arch == "amd": - lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) - -except: - gpuLib = False - - -__all__ = [ - "AOSA_Parameters", - "AOSA_Parameter", - "get_integral", - "get_integral_v1", -] - -class AOSA_Parameter: - def __init__(self,symbol,orb,filePath): - self.symbol = symbol - self.orbType = orb - parFile = open(filePath,"r") - count = 0 - symbFound = False - orbFound = False - for line in parFile: - info = line.split() - if(len(info) >= 1): - print(info) - if(info[0] == "Element="): - if(info[1] == symbol): - norbs = int(info[3]) - symbFound = True - print(info[1],symbol,symbFound) - if(symbFound and info[3] == orb): - print(info[5]) - orbFound = True - self.onsite = float(info[5]) - self.u = float(info[7]) - self.nl = int(info[9]) - self.kappas = np.zeros((self.nl)) - self.ds = np.zeros((self.nl,3)) - self.gammas = np.zeros((self.nl,4)) - if(symbFound and orbFound and info[0] == "LobeIndex="): - self.kappas[count] = float(info[3]) - self.ds[count,0] = float(info[5]) - self.ds[count,1] = float(info[6]) - self.ds[count,2] = float(info[7]) - - self.gammas[count,0] = float(info[9]) - self.gammas[count,1] = float(info[10]) - self.gammas[count,2] = float(info[11]) - self.gammas[count,3] = float(info[12]) - - count = count + 1 - - if(count == self.nl): - break - parFile.close() - - -def get_integral(coordsI,symbolI,orbI,coordsJ,symbolJ,orbJ): - - parI = AOSA_Parameters(symbolI,orbI) - parJ = AOSA_Parameters(symbolJ,orbJ) - - RIJ = coordsJ - coordsI - #Expo - inte = 0.0 - for li in range(parI.nl): - for lj in range(parJ.nl): - sn = np.sign(parI.kappas[li])*np.sign(parJ.kappas[lj]) - kappaIJ = sn*(abs(parI.kappas[li]) + abs(parJ.kappas[lj]))/2 - gammaIJ = (parI.gammas[li,0] + parI.gammas[li,0])/2 - dIJ = RIJ + parJ.ds[lj,:] - parI.ds[li,:] - #dIJ = np.dot(RIJ,parJ.ds[lj,:]) + parJ.ds[lj,:] - parI.ds[li,:] - inte = inte + kappaIJ*np.exp(gammaIJ*np.linalg.norm(dIJ)) - - sval = inte - hval = inte*(parI.onsite + parJ.onsite)/2 - - return hval, sval - - - -def get_integral_v1(coordsI,coordsJ,parI,parJ): - - RIJ = coordsJ - coordsI - #Expo - inte = 0.0 - for li in range(parI.nl): - for lj in range(parJ.nl): - sn = np.sign(parI.kappas[li])*np.sign(parJ.kappas[lj]) - kappaIJ = sn*(abs(parI.kappas[li]) + abs(parJ.kappas[lj]))/2 - gammaIJ = (parI.gammas[li,0] + parJ.gammas[lj,0])/2 - dIJ = RIJ + parJ.ds[lj,:] - parI.ds[li,:] - inte = inte + kappaIJ*np.exp(gammaIJ*np.linalg.norm(dIJ)) - - sval = inte - hval = inte*(parI.onsite + parJ.onsite)/2 - - return hval, sval - - diff --git a/proxies/python/chemical_potential.py b/proxies/python/chemical_potential.py deleted file mode 100644 index 4aed1810..00000000 --- a/proxies/python/chemical_potential.py +++ /dev/null @@ -1,211 +0,0 @@ -"""Chemical potential. This module will handle functions -related to the computation of chemical potential or Fermi -""" - -import os -import sys - -import numpy as np -import scipy.linalg as sp -import sedacs.driver -from sedacs.dev.io import src_path -from hamiltonian_elements import * -from sedacs.file_io import read_coords_file, write_xyz_coordinates -from dnnprt import * -from proxy_global import * -from hamiltonian_random import get_random_hamiltonian -from hamiltonian_random import get_random_coordinates -from hamiltonian_random import RandomNumberGenerator - - -__all__ = [ - "get_mu", - "fermi_dirac", -] - - -## Fermi-Dirac function -# @brief Get the Fermi-Dirac distribution probabilities given a set -# of energy values -# @param mu Chemical potential -# @param energy Energy value/s -# @param etemp Electronic temperature [K] -# @param kB Boltzman constant (default is in eV/K) -# -def fermi_dirac(mu, energy, temp, kB=8.61739e-5): - ''' - Get Fermi probability distributions (values are between 0 and 1) - ''' - fermi = 1/(1 + np.exp((energy - mu)/(kB*temp))) - - return fermi - - -## Comput the chemical potential -# @brief Get the chemical potential from a set of eigenvalues and their weights -# coputed from a partial trace over a "subsytem". It first uses a Newton-Raphson (NR) -# scheme. It then applies a bisection method if NR does not converge -# @param mu0 Initial guess of mu. If set to None, it will use (HOMO+LUMO)/2. -# @param evals Eigenvalues of the system -# @param etemp Electronicn temperature -# @param nocc Number of occupied orbitals (This is typically coputed from the total -# number of electrons) -# @param dvals Weights computed from a partial trace. If set to None, weights are set to 1.0. -# @param kB Boltzman constant (default is in eV/K) -# @param verb Verbosity switch -# -def get_mu(mu0, evals, etemp, nocc, dvals=None, kB=8.61739e-5, verb=False): - - if(verb): - print('\nCalculating mu ...,') - - a = 1.0 - nmax = 30 - tol = 1.0E-10 - - HOMO = evals[int(nocc)] - LUMO = evals[int(nocc) + 1] - mu = 0.5*(LUMO + HOMO) - norbs = len(evals) - notConverged = False - if(dvals is None): - dvals = np.ones((norbs)) - for i in range(nmax+1): - fermi = fermi_dirac(mu, evals, temp) - occ = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) - occErr = abs(occ - nocc) - dFermiDmu = (1/(kB*temp))*fermi*(1.0-fermi)*dvals - occ_prime = np.sum([dFermiDmu[i]*dvals[i] for i in range(norbs)]) - mu = mu + a*(nocc - occ)/occ_prime - if abs(occErr) < tol: - break - elif(abs(mu) > 1.0E10): - print('WARNING: Newton-Raphson did not converge (will try bisection) Occupation error = ', occErr) - notConverged = True - break - if verb: - print('N-R iteration (i,mu,occ,occErr)', i, mu, occ, occErr) - if(i == nmax): - print('WARNING: Newton-Raphson did not converge (will try bisection) Occupation error = ', occErr) - notConverged = True - - if(notConverged): - muMin = np.min(evals) - muMax = np.max(evals) - mu = muMin - step = abs(muMax-muMin) - Ft1 = 0.0 - Ft2 = 0.0 - prod = 0.0 - - #Sum of the occupations - fermi = fermi_dirac(mu, evals, temp) - ft1 = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) - ft1 = ft1 - nocc - - for i in range(1000001): - if(i == 1000000): - print("Bisection method in gpmdcov_musearch_bisec not converging ...") - exit(0) - if(mu > muMax + 1.0 or mu < muMin - 1.0): - print("Bisection method is diverging") - print("muMin=",muMin,"muMax=",muMax) - print(evals) - exit(0) - - if(abs(ft1) < tol): #tolerance control - occErr = ft2 - break - mu = mu + step - - ft2 = 0.0 - - #New sum of the occupations - fermi = fermi_dirac(mu, evals, temp) - ft2 = np.sum([fermi[i]*dvals[i] for i in range(norbs)]) - - ft2 = ft2 - nocc - - #Product to see the change in sign. - prod = ft2*ft1 - if(prod < 0): - mu = mu - step - step = step / 2.0 #If the root is inside we shorten the step. - else: - ft1 = ft2 #If not, Ef moves forward. - if verb: - print('Bisection iteration (i,mu,occ,occErr);', i, mu, occ, ft2) - - print('Final mu, error:', mu, occErr) - - return mu - -## Estimates mu from a matrix using the Girshgorin centers -# @brief It will use the diagonal elements as an approximation -# for eigenvalues. -# @param ham Hamiltonian matrix -# @param etemp Electroninc temperature -# @param nocc Number of occupied states -# @param kB Boltzman constante (default is in units of eV/K) -# @param verb Vorbosity switch -# -def estimate_mu(ham,etemp,nocc,kB=8.61739e-5,verb=False): - diag = np.sort(np.diagonal(ham)) - if(verb): - print("Estimating the chemical potential from diagonal elements ... \n") - mu0 = 0.5*(np.max(diag) + np.min(diag)) - print("diag",diag) - print("Mu0",mu0) - mu = get_mu(mu0,diag,etemp,nocc,kB=kB,dvals=None,verb=True) - - return mu - - -if __name__ == "__main__": - - n = len(sys.argv) - - if n == 1: - print("Give the total number of elements. Example:\n") - print("proxy_a 100\n") - sys.exit(0) - else: - norbs = int(sys.argv[1]) - - verb = True - - #Build random coordinates - coords = get_random_coordinates(norbs) - - #Build random Hamiltonian (Anders' version) - ham = get_random_hamiltonian(coords) - - print("\n Hamiltonan:") - print(ham) - - nocc = 0.5*norbs - etemp = 10000 - - #Scale the diagonal elements - scalingFactor = 1.0 - for i in range(norbs): - ham[i,i] = scalingFactor*ham[i,i] - - #Estimate mu from the diagonal elements of H - muEst = estimate_mu(ham,etemp,nocc,kB=8.61739e-5) - print("\n Estimated mu:",muEst) - - #Get eigenvalues and eigenvectors - evals, evects = sp.eigh(ham) - - #Compute exact mu - mu0 = 0.0 - muReal = get_mu(mu0,evals,etemp,nocc,dvals=None,verb=True) - print("\n Exact mu:",muEst) - - print("\n Realative error of mu estimation",abs((muReal - muEst)/muReal)) - - - - - diff --git a/proxies/python/coordinates.py b/proxies/python/coordinates.py deleted file mode 100644 index 05a4f04b..00000000 --- a/proxies/python/coordinates.py +++ /dev/null @@ -1,58 +0,0 @@ -"""coordinates -This code is only used to guide implemetations and understand which are the -basic elements needed to interface with the sedacs driver. -""" - -import os -import sys -import numpy as np -from random_numbers import RandomNumberGenerator - -__all__ = [ - "get_random_coordinates", -] - - -## Generating random coordinates -# @brief Creates a system of size "nats = Number of atoms" with coordindates having -# a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. -# This funtion is only used for testing purposes. -# @param nats The total number of atoms -# @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] -# -def get_random_coordinates(nats): - """Get random coordinates""" - length = int(nats ** (1 / 3)) + 1 - coords = np.zeros((nats, 3)) - latticeParam = 2.0 - atomsCounter = -1 - myrand = RandomNumberGenerator(111) - for i in range(length): - for j in range(length): - for k in range(length): - atomsCounter = atomsCounter + 1 - if atomsCounter >= nats: - break - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 0] = i * latticeParam + rnd - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 1] = j * latticeParam + rnd - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 2] = k * latticeParam + rnd - return coords - - -if __name__ == "__main__": - n = len(sys.argv) - if n == 1: - print("Give the total number of atoms. Example:\n") - print("python coordinates.py 100\n") - sys.exit(0) - else: - nats = int(sys.argv[1]) - - verb = True - - coords = get_random_coordinates(nats) - - print("Coordinates:",coords) diff --git a/proxies/python/density_matrix.py b/proxies/python/density_matrix.py deleted file mode 100644 index 9f3c174f..00000000 --- a/proxies/python/density_matrix.py +++ /dev/null @@ -1,309 +0,0 @@ -"""density_matrix -Computes the Density matrix from a given Hamiltonian -This code is only used to guide implemetations and understand which are the -basic elements needed to interface with the sedacs driver. -""" - -import os -import sys - -import numpy as np -import scipy.linalg as sp -from hamiltonian_elements import * -from dnnprt import * -from proxy_global import * -from coordinates import get_random_coordinates -from hamiltonian_random import get_random_hamiltonian -from proxies.python.hamiltonian import get_hamiltonian_proxy -from chemical_potential import fermi_dirac, get_mu -from nonortho import get_xmat -import gpuLibInterface as gpu -from init_proxy import init_proxy_accelerators -from proxy_global import bring_ham_list, bring_dm_list, bring_cublas_handle_list, bring_stream_list - -try: - import ctypes - - - gpuLib = True - arch = "nvda" - pwd = os.getcwd() - - if arch == "nvda": - print("loading nvidia...") - lib = ctypes.CDLL("/home/finkeljo/sedacs-gpmdsp2/src/sedacs/gpu/nvda/libnvda.so") - if arch == "amd": - lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) - -except: - gpuLib = False - -import ctypes - - - -__all__ = [ - "get_density_matrix_proxy", - "get_density_matrix_gpu", -] - - -## Computes the Density matrix from a given Hamiltonian. -# @author Anders Niklasson -# @brief This will create a Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# -# @param ham Hamiltonian matrix -# @param nocc Number of occupied orbitals -# @param core_size Number of atoms in the cores. -# @param method Type of algorithm used to compute DM -# @param accel Type of accelerator/special device used to compute DM. Default is No and -# will only use numpy. -# @param mu Chemical potential. If set to none, the calculation will use nocc -# @param etemp Electronic temperature -# @param overlap Overlap matrix -# @param verb Verbosity. If True is passed, information is printed. -# -# @return rho Density matrix -# -def get_density_matrix_proxy(ham, nocc, norbsInCore=None, method="Diag", accel="No", mu=None, etemp=0.0, overlap=None, full_data=False, verb=False, lib=None): - """Calcualtion of the full density matrix from H""" - if verb: - print("Computing the Density matrix") - - norbs = len(ham[:, 0]) - ham_orth = np.zeros((norbs, norbs)) - if overlap is not None: - # Get the inverse overlap factor - zmat = get_xmat(overlap, method="Diag", accel="No", verb=False) - - # Orthogonalize Hamiltonian - ham_orth = np.matmul(np.matmul(np.transpose(zmat), ham), zmat) - else: - ham_orth[:, :] = ham[:, :] - - if method == "Diag" and accel == "No": - evals, evects = sp.eigh(ham_orth) - print("evals",evals) - homoIndex = nocc - 1 - lumoIndex = nocc - - #If mu is not set we set mu HOMO+LUMO/2 - if (mu is None): - mu = 0.5 * (evals[homoIndex] + evals[lumoIndex]) - else: - pass - - if verb: - print("Chemical potential = ", mu) - - rho = np.zeros((norbs, norbs)) - if verb: - print("Eigenvalues of H:", evals) - - #If the electronic temperature is 0 - if(etemp < 1.0E-10): - for i in range(norbs): - if evals[i] < mu: - rho = rho + np.outer(evects[:, i], evects[:, i]) - else: - #mu = get_mu(mu, evals, etemp, nocc, dvals=None, kB=8.61739e-5, verb=False) - fvals = np.zeros((norbs)) - fvals = fermi_dirac(mu, evals, etemp, kB=8.61739e-5) - for i in range(norbs): - if evals[i] < mu: - rho = rho + fvals[i]*np.outer(evects[:, i], evects[:, i]) - - elif method == "SP2" and accel == "No": - #rho = dnnprt(ham_orth, norbs, nocc, H1=None, refi=False) - #rho = movingmu_sp2(ham,mu=mu,thresh=0.0,miniter=5,maxiter=50,sp2conv=1.0E-6,idemtol=1.0E-6,verb=True) - #rho = golden_sp2(ham,mu=mu,thresh=0.0,miniter=5,maxiter=50,sp2conv=1.0E-6,idemtol=1.0E-6,verb=True) - rho = sp2_basic(ham,nocc,thresh=0.0,minsp2iter=5,maxsp2iter=30,sp2conv=1.0E-5,idemtol=1.0E-5,verb=True) - - elif method == "SP2" and accel == "TC": - - accel_lib = bring_accel_lib() - - #print("--------set stream in python--------------") - #stream=gpu.set_stream(accel_lib); - #print(id(stream),stream) - - - - #print("\n") - #print("--------init cublas handle in python--------------") - #cublas_handle = gpu.cublasInit(accel_lib) - #print(id(cublas_handle),cublas_handle) - - cublas_handle_list=bring_cublas_handle_list() - streams_list = bring_stream_list() - dev_list = bring_dev_list() - d_ham = dev_list[0] - d_dm = dev_list[1] - - test_handle = cublas_handle_list[0] - test_stream = streams_list[0] - - # determine size - size_of_double = 8 #bytes - matSize = norbs * norbs * size_of_double - - size_of_float = 4 #bytes - matSize_f = norbs * norbs * size_of_float - - pinned_ham = dev_list[10] - pinned_dm = dev_list[11] - #gpu.memcpyHtoH(pinned_ham, ham, matSize, accel_lib) - #gpu.memcpyHtoD(d_ham, pinned_ham, matSize, accel_lib) - gpu.memcpyHtoD(d_ham, ham, matSize, accel_lib) - #e,v = np.linalg.eigh(ham) - #print(e) - rho=np.empty((norbs,norbs)) - print("device is = ", gpu.get_device(accel_lib)) - #ham = d_ham_list[0] - #dm = d_dm_list[0] - - - gpu.dmDNNSP2(dev_list,norbs,nocc,test_handle,test_stream,accel_lib) - - #gpu.dmGoldenSP2(d_ham_list[0],d_dm_list[0],norbs,mu,cublas_handle,accel_lib) - gpu.memcpyDtoH(rho, d_dm, matSize, accel_lib) - #gpu.memcpyDtoH(pinned_dm, d_dm_list[0], matSize, accel_lib) - #gpu.memcpyDtoH(pinned_dm, d_dm, matSize, accel_lib) - #gpu.memcpyHpinnedtoH(rho, pinned_dm, matSize, accel_lib) - #e1,v1 = np.linalg.eigh(rho) - - #gpu.dmMovingMuSP2(d_ham_list[0],d_dm_list[0],norbs,mu,cublas_handle,accel_lib) - #gpu.memcpyDtoH(rho, d_dm_list[0], matSize, accel_lib) - #e2,v2 = np.linalg.eigh(rho) - #for i in range(0,norbs): - # print(e1[i],e2[i]) - #exit() - #rho = sp2_basic(ham,nocc,thresh=0.0,minsp2iter=5,maxsp2iter=30,sp2conv=1.0E-5,idemtol=1.0E-5,verb=True) - - elif method == "SP2" and accel == "PBML": - print("No method yet") - else: - print("The combination of method and accelerator is unknown") - exit(0) - - if(overlap is not None): - rho = np.matmul(np.matmul(zmat,rho),np.transpose(zmat)) - - print(norbs) - dvals = np.zeros((norbs)) - if(method == "Diag"): - if (overlap is not None): - overTimesEvects = np.dot(overlap,evects) - else: - overTimesEvects = evects - for i in range(norbs): - #dvals = np.append(dvals, np.inner(evects[:norbsInCore,i],overTimesEvects[:norbsInCore,i])) - dvals[i] = np.inner(evects[:norbsInCore,i],overTimesEvects[:norbsInCore,i]) - else: - if(norbsInCore is not None): - dvals[:] = norbsInCore/norbs - else: - dvals[:] = 1.0 - - evals = np.zeros(norbs) - evals = np.diag(ham_orth) #We estimate the eigenvaluse from the Girshgorin centers - - - #print("Ham\n",ham_orth) - #print("Mu",mu) - #print("DM\n") - diagonal = np.diag(rho) - #print("tr",np.trace(rho)) - #print("NOCC",nocc,norbs) - #for i in range(norbs): - # print(diagonal[i]) - - #evals, evects = sp.eigh(rho) - if(full_data): - return rho, evals, dvals - else: - return rho - - - -## Computes the Density matrix from a given Hamiltonian. -# @author Josh Finkelstein -# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# using GPU/AI accelerator library -# -# @param H Hamiltonian matrix -# @param Nocc Number of occupied orbitals -# @param verb Verbosity. If True is passed, information is printed. -# -# @return D Density matrix -# -def get_density_matrix_gpu(H, N, Nocc, lib, verb=False): - """Calcualted the full density matrix from H""" - if verb: - print("Computing the Density matrix using GPU/AI accel library") - - # init DM - D = np.zeros((N, N)) - kbt = 0.1 - - # get DM from cusolver diag - #dm = gpu.dmDNNSP2(H,D,N,Nocc,lib) - # dm = gpu.dmCheby(H,D,N,Nocc,kbt,lib) - print("Density matrix=", D) - # dm = gpu.dmDiag(H,D,N,Nocc,kbt,lib) - # print("Density matrix=",dm) - #dm = gpu.dmMLSP2(H, D, N, Nocc, lib) - return D - - -if __name__ == "__main__": - n = len(sys.argv) - if n == 1: - print("Give the name of the algorithm and the total number of atoms. Example:\n") - print("density_matrix get_density_matrix_proxy 100\n") - sys.exit(0) - else: - algo = str(sys.argv[1]) - nats = int(sys.argv[2]) - - verb = True - coords = get_random_coordinates(nats) - atomTypes = np.zeros((nats),dtype=int) - symbols = []*nats - symbols[:] = "H" - - filename = "aosa_parameters.dat" - bas_per_atom = [1] - tbparams = read_tbparams(filename, symbols, bas_per_atom) - - nvtx.push_range("get hamiltonian proxy",color="blue", domain="get proxy h") - ham, over = get_hamiltonian_proxy(coords, atomTypes, symbols, get_overlap=True) - nvtx.pop_range(domain="get proxy h") - if (gpuLib == True): - ## - size_of_double = 8 # bytes - matSize = nats * nats * size_of_double - # cublas_handle = gpu.cublasInit(lib) - - #if (eng.accel == "TC"): - init_proxy_accelerators(1,4096) - - ## async copy of ham from host to device - gpu.memcpyHtoD(dev_list[0], ham, matSize, lib) - - - - - - if(algo == "get_density_matrix_proxy"): - occ = int(float(nats) / 2.0) - rho1 = get_density_matrix_proxy(ham, occ, method="SP2") - print(lib) - rho2 = get_density_matrix_proxy(ham, occ, method="SP2", accel="TC",d_ham=d_ham,d_dm=d_dm,lib=lib) - print("Density matrix=", rho1) - print("Density matrix=", rho2) - diff --git a/proxies/python/dnnprt.py b/proxies/python/dnnprt.py deleted file mode 100644 index ae8d554a..00000000 --- a/proxies/python/dnnprt.py +++ /dev/null @@ -1,279 +0,0 @@ -#!/usr/bin/env python -import numpy as np -import os, sys, argparse, time - - -def gershgorin(M): - # find eigenvalue estimates of the matrix M from the Gershgorin circle theorem - min_e = 0 - max_e = 0 - - for i in range(0, np.shape(M)[0]): - e = M[i, i] # Gershgorin eigenvalue circle center - r = 0 - - for j in range(0, np.shape(M)[0]): # compute sum of abs. val of components in row i - r += np.abs(M[i, j]) - - r -= np.abs(e) # Gershgorin eigenvalue circle radius - - # update min and max eigenvalues as you loop over rows - if e - r < min_e: - min_e = e - r - elif e + r > max_e: - max_e = e + r - - return (min_e, max_e) - - -def dual_half(S): - # Calculation of X^2 as defined in equation (15). Note that precision in numpy is closed under alegbraic operations when of the same data type and inherits the precision of the highest precision operand when not of the same data type. - S0 = np.half(S) - S1 = np.single(np.half(S - S0)) - S0S0 = np.single(np.matmul(S0, S0)) - S0S1 = np.matmul(S0, S1) - X = S0S0 + (S0S1 + np.transpose(S0S1)) - return X - -##SP2 method. -# @param h_bml Input Hamiltonian matrix -# @param rho_bml Output density matrix -# @param threshold Threshold for sparse matrix algebra -# @param bndfil Bond -# @param minsp2iter Minimum sp2 iterations -# @param maxsp2iter Maximum SP2 iterations -# @param sp2conv Convergence type -# @param idemtol Idempotency tolerance -# @param verbose A verbosity level -def sp2_basic(ham,occ,thresh=0.0,minsp2iter=5,maxsp2iter=30,sp2conv=1.0E-5,idemtol=1.0E-5,verb=False): - - hdim = len(ham[:,0]) - - # Normalize - emin, emax = gershgorin(ham) - rho = np.zeros((hdim,hdim)) - rho[:,:] = ham[:,:] - ident = np.diag(np.ones(hdim)) - rho[:,:] = (emax * ident[:,:] - ham[:,:]) / (emax - emin) - - # X2 <- X - for i in range(maxsp2iter): - - trx = np.trace(rho) - - #X2 <- X * X - X2 = np.dot(rho, rho) - - trx2 = np.trace(X2) - - #Trace reduction - if(verb): print("sp2iter", iter, occ, trx, abs(occ-trx)) - - if(trx - occ <= 0.0): - - #X <- 2 * X - X2 - rho = 2*rho - X2 - - trx = 2.0 * trx - trx2 - - else: - - #X <- X2 - rho[:,:] = X2[:,:] - - trx = trx2 - - - if(abs(occ-trx) < idemtol and i > minsp2iter): - break - - if(iter == maxsp2iter): - print("sp2 purification is not converging: stop!") - raise 1 - - - #rho = 2.0 * rho - - print("Rho inside",rho) - return rho - - - -#### DEEP-NN FORMULATION OF THE RECURSIVE SP2 FERMI-OPERATOR EXPANSION SCHEME -def dnnprt(H0, N, Nocc, H1=None, refi=False): - """ - Compute density matrix and first order response to perturbation, H1, in the - Hamiltonian, H0. Implementation mimics mixed precision solver. - - Inputs: - ------ - - H0: Hamiltonian matrix - H1: Perturbation to H0 - N: Matrix size - Nocc: Occupation number - dm_only: Compute density matrix only (True/False) - refi: Compute fp64 refinement (True/False) - - """ - np.set_printoptions(precision=15) - - dm_only = True - if H1 is not None: - dm_only = False - - #### INITIALIZE - eps = 1e-16 # Small value, but such that +/- eps is finite in single precision - Csp2 = 4.5 # Convergence criterion as derived by Emanuel - sgn = 0 # Initial value of sgn - I = np.eye(N) # Identity matrix - maxlayer = 100 # Maximum number of layers - v_sgn = np.zeros(maxlayer) # Keeps track of binary in-place learning choices - idemp_err = np.zeros(maxlayer) # Local error estimate - if dm_only == False: - idemp_err_1 = np.zeros(maxlayer) # Local error estimate - - #### CHOSE POST-PROCESSING ACTIVATION FUNCTION REFINEMENT OR NOT - Refinement = True # Or False - - #### LOAD HAMILTONIAN AS INPUT LAYER - X0 = H0 # Initial input layer - if not dm_only: - X1 = H1 - - #### 'EXACT' SOLUTION FOR COMPARISION ONLY - # e, v = np.linalg.eig(H0 + H1) # Diagonlize H as a brute force comparision - # e = np.sort(e) # Sort eigenvalues in increasing order - # E0 = np.sum(e[0:Nocc]) # Sum over the lowest Nocc states using absurd indexing - - #### INITIAL IN-PLACE LEARNING FOR FIRST LAYER - (hN, h1) = gershgorin(X0) # Alternatively, obtain eigenvalue estimates using Gersgorin circle theorem - W0 = -1 / (hN - h1) # Weight (scalar) - B0 = (hN / (hN - h1)) * I # Bias (diagonal matrix) - - #### INITIAL LINEAR TRANSFORM - S0 = W0 * X0 + B0 - S0 = np.single(S0) # Store in single precision - TrS0 = np.trace(S0) # Keep track of occupation - - if dm_only == False: - S1 = W0 * X1 - S1 = np.single(S1) # Store in single precision - TrS1 = np.trace(S1) # Keep track of occupation - - start = time.time() - #### COMPUTATIONAL DEEP LAYERS - for layer in range(maxlayer): - """ SP2 """ - #### ACTIVATION FUNCTION FROM TWO DUAL HALF-PRECISION MATRIX-MATRIX MULTIPLICATIONS - X0_h = np.single( - np.half(S0) - ) # First half-precision repsentation of X, single used to allow single accumulation - X0_l = np.single( - np.half(S0 - X0_h) - ) # Second half-precision repsentation of X, single used to allow single accumulation - X0_hh = np.single(np.matmul(X0_h, X0_h)) # Half-precision multiplication with single accumulation - X0_hl = np.single(np.matmul(X0_h, X0_l)) # Half-precision multiplication with single accumulation - X0_lh = np.transpose(X0_hl) # Use the matrix symmetry of X0 and X1 from the symmetry of S - X0 = np.single(X0_hh + X0_hl + X0_lh) # Additions in single precision - TrX0 = np.trace(X0) # Approximate occupation - print("TrX0",TrX0) - """""" """""" - - """ response """ - if dm_only == False: - #### ACTIVATION FUNCTION FROM TWO DUAL HALF-PRECISION MATRIX-MATRIX MULTIPLICATIONS - X1_h = np.single( - np.half(S1) - ) # First half-precision repsentation of X, single used to allow single accumulation - X1_l = np.single( - np.half(S1 - X1_h) - ) # Second half-precision repsentation of X, single used to allow single accumulation - X0X1_hh = np.single(np.matmul(X0_h, X1_h)) # Half-precision multiplication with single accumulation - X0X1_hl = np.single(np.matmul(X1_h, X0_l)) # Half-precision multiplication with single accumulation - X0X1_lh = np.single(np.matmul(X1_h, X0_l)) # Use the matrix symmetry of X0 and X1 from the symmetry of S - X0X1 = np.single(X0X1_hh + X0X1_hl + X0X1_lh) # Additions in single precision - X1X0 = np.transpose(X0X1) - X1 = np.single(X0X1 + X1X0) - TrX1 = np.trace(X1) # Approximate occupation - """""" """""" - - #### ERROR ESTIMATE OF IDEMPOTENCY - idemp_err[layer] = TrS0 - TrX0 # Error estimate for in-place learning and convergence control - - if dm_only == False: - idemp_err_1[layer] = TrS1 - TrX1 # Error estimate for in-place learning and convergence control - print( - layer, "Idemp error estimate:" + str(idemp_err_1[layer]) - ) # Can reach 0 exactely in low precision arithmetics - - #### LEARNING THROUGH A BINARY ON-THE-FLY IN-PLACE ERROR MINIMIZATION, WHERE sgn = (+/-)*1 - sgn = np.sign(np.abs(2 * TrS0 - TrX0 - Nocc) - np.abs(TrX0 - Nocc) - sgn * eps) - v_sgn[layer] = sgn # Vector with the sgn to keep track - W = sgn # Weight function - B = (1 - sgn) * S0 # Bias function - - #### LINEAR TRANSFORM - S0 = W * X0 + B # Affine linear transform, apply weight and bias - if dm_only == False: - S1 = W * X1 + (1 - W) * S1 # Affine linear transform, apply weight and bias - - #### KEEP TRACK OF THE NEW OCCUPATION - TrS0 = W * TrX0 + (1 - sgn) * TrS0 # Update trace - if dm_only == False: - TrS1 = W * TrX1 + (1 - sgn) * TrS1 # Update trace - - #### CONVERGENCE TEST - if idemp_err[layer] <= 0: - break - if ( - layer > 1 - and v_sgn[layer - 1] != v_sgn[layer - 2] - and idemp_err[layer] >= Csp2 * idemp_err[layer - 2] * idemp_err[layer - 2] - ): - break - - #### POST-PROCESSING REFINEMENT STEP - if refi == True: - #### WITH ACTIVATION FUNCTION REFINEMENT, f(X) = 2*X^2 - X^4, IN DOUBLE PRECISION - X = np.double(S) - X = 2 * X - np.matmul(X, X) - TrS = np.trace(X) - X = np.double(np.matmul(X, X)) - TrX = np.trace(X) - idemp_err[layer + 1] = TrS - TrX - print(layer + 1, "Refined error estimate = " + str(idemp_err[layer + 1])) - num_deep_layers = layer + 1 # +1 to account for the last refinement layer - D = X # Output layer estimate of density matrix - else: - #### WITHOUT ACTIVATION FUNCTION REFINEMENT, f(X) = X # Or, alternativley use half-precision multiplications - num_deep_layers = layer - D0 = np.double(S0) # Output layer estimate of density matrix D - if dm_only == False: - D1 = np.double(S1) # Output layer estimate of density matrix D - - end = time.time() - flops = 2 * N * N * N * num_deep_layers / (end - start) - print(str(end - start) + " sec") - print("FLOPS = " + str(flops / 1e12) + " teraflops") - - #### DOUBLE PRECISION ERROR ESTIMATES OF THE CONVERGED DENSITY MATRIX D - occ_err = np.abs(np.trace(D0) - Nocc) # Occupation Error - D02 = np.matmul(D0, D0) # Matrix square (for error analysis only!) - idem_err = np.abs(np.trace(D02) - np.trace(D0)) # Error estimate, Tr(X2-X) - idem_err_2_norm = np.linalg.norm(D02 - D0) # Idempotency Error in 2-norm - comm_err = np.linalg.norm(np.matmul(D0, H0) - np.matmul(H0, D0)) # Commutation error - energy = np.trace(-np.matmul(D0, H0)) # Band-energy - # energy_err = np.abs(energy - E0) # Band-energy error - - if not dm_only: - energy_1 = np.trace(np.matmul(D0, H1)) - energy_2 = 0.5 * np.trace(np.matmul(D1, H1)) - else: - energy_1 = None - energy_2 = None - - if dm_only: - return D0 - else: - return D0, D1 diff --git a/proxies/python/energy_and_forces.py b/proxies/python/energy_and_forces.py deleted file mode 100644 index c9bd205e..00000000 --- a/proxies/python/energy_and_forces.py +++ /dev/null @@ -1,664 +0,0 @@ -"""proxy code a -A prototype engine code that: - - Computes TB + coulombic forces - - Coputes band and coulombic energies -This code is only used to guide implemetations and understand which are the -basic elements needed to interface with the sedacs driver. -""" - -import os -import sys - -import numpy as np -import scipy.linalg as sp -import sedacs.driver -from sedacs.dev.io import src_path -from proxies.python.hamiltonian_elements import * -from sedacs.file_io import read_coords_file, write_xyz_coordinates -from proxies.python.dnnprt import * -from proxies.python.proxy_global import * - -__all__ = [ - "get_random_coordinates", - "get_hamiltonian_proxy", - "get_density_matrix_proxy", - "get_density_matrix_gpu", - "get_charges_proxy", - "get_tb_forces_proxy", - "get_ppot_energy_expo_proxy", - "init_proxy_proxy", - "get_ppot_forces_expo_proxy", - "build_coul_ham_proxy", -] - - -## Simple random number generator -# This is important in order to compare across codes -# written in different languages. -# -# To initialize: -# \verbatim -# myRand = rand(123) -# \endverbatim -# where the argument of rand is the seed. -# -# To get a random number between "low" and "high": -# \verbatim -# rnd = myRand.get_rand(low,high) -# \endverbatim -# -class RandomNumberGenerator: - """To generate random numbers.""" - - def __init__(self, seed): - self.a = 321 - self.b = 231 - self.c = 13 - self.seed = seed - self.status = seed * 1000 - - def generate(self, low, high): - """Get a random real number in between low and high.""" - w = high - low - place = self.a * self.status - place = int(place / self.b) - rand = (place % self.c) / self.c - place = int(rand * 1000000) - self.status = place - rand = low + w * rand - - return rand - - -## Generating random coordinates -# @brief Creates a system of size "nats = Number of atoms" with coordindates having -# a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. -# This funtion is only used for testing purposes. -# @param nats The total number of atoms -# @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] -# -def get_random_coordinates(nats): - """Get random coordinates""" - length = int(nats ** (1 / 3)) + 1 - coords = np.zeros((nats, 3)) - latticeParam = 2.0 - atomsCounter = -1 - myrand = RandomNumberGenerator(111) - for i in range(length): - for j in range(length): - for k in range(length): - atomsCounter = atomsCounter + 1 - if atomsCounter >= nats: - break - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 0] = i * latticeParam + rnd - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 1] = j * latticeParam + rnd - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 2] = k * latticeParam + rnd - return coords - -## Initialize proxy code -# @brief We will read all the parameters needed for the -# guest or proxy code to run. Every guest code will need to -# set up an initialization function and save parameters that -# need to be read from file only once. Bond integral parameter, -# pair potential, etc. will be stored in memory by the guest code. -# -def init_proxy_proxy(symbols,bas_per_atom): - #Some codes will have their own input file - #read_proxy_input_file() - #Read pair potentials - read_ppots("ppots.dat",symbols) - print_ppots() - #Read tb parameters - filename = "aosa_parameters.dat" - read_tbparams(filename, symbols, bas_per_atom) - - -## Computes a Hamiltonian based on exponential decay of orbital couplings. -# @author Anders Niklasson -# @brief Computes a hamiltonian based on exponential decays. -# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] -# @param atomTypes Index type for each atom in the system. Type for first atom = type[0] (not used yet) -# @param symbols Symbols for every atom type -# @param verb Verbosity. If True is passed, information is printed -# @para get_overlap If overlap needs to be returned -# @return ham 2D array of Hamiltonian elements -# -def get_hamiltonian_proxy(coords, atomTypes, symbols, verb=False, get_overlap=False): - """Constructs a simple tight-binding Hamiltonian""" - - # Internal periodic table for the code - symbols_internal = np.array(["Bl", "H", "C", "N", "O", "P"], dtype=str) - numel_internal = np.zeros(len(symbols_internal), dtype=int) - numel_internal[:] = 0, 1, 4, 5, 6, 5 - bas_per_atom = np.zeros(len(symbols_internal), dtype=int) - bas_per_atom[:] = 0, 1, 4, 4, 4, 4 - spOrbTypes = ["s", "px", "py", "pz"] - sOrbTypes = ["s"] - - nats = len(coords[:, 0]) - - # Map symbols to indices in symbols_internal - symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} - - # Translate `symbols` to `symbols_internal` indices - mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) - - # Convert atomTypes to `symbols_internal` indices - atom_internal_indices = mapped_indices[atomTypes] - - - # Sum the corresponding values in bas_per_atom and numel_internal - norbs = np.sum(bas_per_atom[atom_internal_indices]) - numel = np.sum(numel_internal[atom_internal_indices]) - - ham = np.zeros((norbs, norbs)) - if get_overlap: - over = np.zeros((norbs, norbs)) - if verb: - print("Constructing a simple Hamiltonian for the full system") - - colsh = 0 - rowsh = 0 - tbparams = bring_tbparams() - for i in range(0, nats): - for ii in range(bas_per_atom[atom_internal_indices[i]]): - colsh = rowsh - parI = tbparams[atomTypes[i]][ii] - for j in range(i, nats): - if i == j: - llimit = ii - else: - llimit = 0 - for jj in range(llimit,bas_per_atom[atom_internal_indices[j]]): - parJ = tbparams[atomTypes[j]][jj] - hval, sval = get_integral_v1(coords[i],coords[j],parI,parJ) - if(get_overlap): - over[rowsh,colsh] = sval - over[colsh,rowsh] = sval - - ham[rowsh, colsh] = hval - ham[colsh, rowsh] = hval - colsh = colsh + 1 - rowsh = rowsh + 1 - - if get_overlap: - return ham, over - else: - return ham - - -sedacs.driver.get_hamiltonian = get_hamiltonian_proxy - - -## Estimates mu from a matrix using the Girshgorin centers -# @brief It will use the diegonal elements as an approximation -# for eigenvalues. -def estimate_mu(ham,elec_temp,kb): - - diag = ham.np.diagonal(ham) - - -## Add coulombic potentials to the Hamiltonian -# @param ham0 No-SCF Hamiltonian -# @param vcouls Coulombic potentials for every atomic site -# @pparam orbital_based If set to True, coulombic potentials for every orbitals will be -# expected. -# @param hindex will give the orbital index for each atom -# The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1` -# @param overlap Overlap matrix for nonorthogonal formulations. -# @param verb Verbosity switch. -# -def build_coul_ham_proxy(ham0, vcouls, types, charges, orbital_based, hindex, overlap=None, verb=False): - norbs = len(ham0[:, 0]) - vcouls_orbs = np.zeros((norbs), dtype=float) # Expanded coulombic potentials - nats = len(hindex[:]) - 1 - - tbparams = bring_tbparams() - - if orbital_based: - error_at("build_coul_ham", "Orbital-based coulombic potential not implemented") - else: - for i in range(nats): - for ii in range(hindex[i], hindex[i + 1]): - k = ii - hindex[i] - vcouls_orbs[ii] = vcouls[i] + tbparams[types[i]][k].u * charges[i] - if overlap is None: - ham = ham0 + np.diag(vcouls_orbs) - else: - vmat = np.diag(vcouls_orbs) - ham = ham0 + 0.5 * (np.dot(overlap, vmat) + np.dot(vmat, overlap)) - return ham - - -sedacs.driver.build_coul_ham = build_coul_ham_proxy - - -## Computes the Density matrix from a given Hamiltonian. -# @author Anders Niklasson -# @brief This will create a Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# -# @param ham Hamiltonian matrix -# @param nocc Number of occupied orbitals -# @param method Type of algorithm used to compute DM -# @param accel Type of accelerator/special device used to compute DM. Default is No and -# will only use numpy. -# @param mu Chemical potential. If set to none, the calculation will use nocc -# @param elect_temp Electronic temperature -# @param overlap Overlap matrix -# @param verb Verbosity. If True is passed, information is printed. -# -# @return rho Density matrix -# -def get_density_matrix_proxy(ham, nocc, method="Diag", accel="No", mu=None, elect_temp=0.0, overlap=None, verb=False): - """Calcualtion of the full density matrix from H""" - if verb: - print("Computing the Density matrix") - - norbs = len(ham[:, 0]) - ham_orth = np.zeros((norbs, norbs)) - if overlap is not None: - # Get the inverse overlap factor - zmat = get_xmat(overlap, method="Diag", accel="No", verbose=False) - - # Orthogonalize Hamiltonian - ham_orth = np.matmul(np.matmul(np.transpose(zmat), ham), zmat) - else: - ham_orth[:, :] = ham[:, :] - - if method == "Diag" and accel == "No": - evals, evects = sp.eigh(ham_orth) - homoIndex = nocc - 1 - lumoIndex = nocc - mu = 0.5 * (evals[homoIndex] + evals[lumoIndex]) - rho = np.zeros((norbs, norbs)) - if verb: - print("Eigenvalues of H:", evals) - for i in range(norbs): - if evals[i] < mu: - rho = rho + np.outer(evects[:, i], evects[:, i]) - if verb: - print("Chemical potential = ", mu) - elif method == "SP2" and accel == "No": - rho = dnnprt(ham_orth, norbs, nocc, H1=None, refi=False) - print("No method yet") - elif method == "SP2" and accel == "PBML": - print("No method yet") - else: - print("The combination of method and accelerator is unknown") - exit(0) - - if(overlap is not None): - rho = np.matmul(np.matmul(zmat,rho),np.transpose(zmat)) - - return rho - - -sedacs.driver.get_density_matrix = get_density_matrix_proxy - - -## Computes the finite temperature density matrix (DRAFT) -# @todo Write this routine. -def get_density_matrix_T(H, Nocc, Tel, mu0, coreSize, core_ham_dim, S=None, verb=False): - kB = 8.61739e-5 # eV/K, kB = 6.33366256e-6 Ry/K, kB = 3.166811429e-6 Ha/K, #kB = 3.166811429e-6 #Ha/K - if verb: - print("Computing the renormalized Density matrix") - - if S is not None: - E_val, Q = scipy.linalg.eigh(H) ### need S? not ones with S $$$ - else: - E_val, Q = np.linalg.eigh(H) - N = len(H[:, 0]) - - # print('Q\n', Q[:,0]) - - homoIndex = Nocc - 1 - lumoIndex = Nocc - print("HOMO, LUMO:", E_val[homoIndex], E_val[lumoIndex]) - mu_test = 0.5 * (E_val[homoIndex] + E_val[lumoIndex]) # don't need it - print( - N, - Nocc, - ) - print("!!!! mu test:\n", mu_test) - - # use mu0 as a guess - - OccErr = 1.0 - beta = 1.0 / (kB * Tel) - f = np.array([]) - for i in range(N): - f_i = 1 / (np.exp(beta * (E_val[i] - mu0)) + 1) # save fi to f - f = np.append(f, f_i) - # Occ = Occ + f_i*E_occ[i,k] - - D = sum(np.outer(Q[:, i], Q[:, i] * f[i]) for i in range(Nocc)) * 2 - # np.savetxt('co2_32_dm.txt',D) - - # rho = Q@f_vector@Q.T - # or - # rho_ij = SUM_k Q_ik * f_kk * Q_jk - - print("core_ham_dim", core_ham_dim) - dVals = np.array([]) - for i in range(N): - dVals = np.append(dVals, np.inner(Q[:core_ham_dim, i], Q[:core_ham_dim, i])) - - return D, E_val, dVals - - -## Computes the Density matrix from a given Hamiltonian. -# @author Josh Finkelstein -# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# using GPU/AI accelerator library -# -# @param H Hamiltonian matrix -# @param Nocc Number of occupied orbitals -# @param verb Verbosity. If True is passed, information is printed. -# -# @return D Density matrix -# -def get_density_matrix_gpu(H, N, Nocc, lib, verb=False): - """Calcualted the full density matrix from H""" - if verb: - print("Computing the Density matrix using GPU/AI accel library") - - # init DM - D = np.zeros((N, N)) - kbt = 0.1 - - # get DM from cusolver diag - # dm = gpu.dmDNNSP2(H,D,N,Nocc,lib) - # dm = gpu.dmCheby(H,D,N,Nocc,kbt,lib) - print("Density matrix=", D) - # dm = gpu.dmDiag(H,D,N,Nocc,kbt,lib) - # print("Density matrix=",dm) - dm = gpu.dmMLSP2(H, D, N, Nocc, lib) - return D - -## Inverse overlap factorization -# @brief Constructs inverse overlap factors given the overlap matrix -# @param over Overlap matrix -# @param method If a particular needs to be used -# @param accel If an accelerater (hardwar/library/programing model) is used. -# @verb Verbosity switch -## -def get_xmat(over,method="Diag",accel="No",verb=False): - - if(verbose): - print("In get_xmat ...") - - hdim = len(over[0,:]) - if(method == "Diag" and accel == "No"): - e,v = sp.eigh(over) - s = 1./np.sqrt(e) - zmat = np.zeros((hdim,hdim)) - for i in range(hdim): - zmat[i, :] = s[i] * v[:, i] - zmat = np.matmul(v, zmat) - elif method == "Cholesky": - pass - else: - print("ERROR: Method not implemented") - exit(0) - - if verbose: - print("\nZmat Matrix") - print(zmat) - - return zmat - -## Get charges (Mulliken) -# @brief gets the Mulliken charges based on rho -# @param density_matrix Density matrix -def get_charges_proxy(density_matrix,ncores,hindex,overlap=None,verb=False): - if(verb): - status_at("get_charges","Getting charges from density matrix") - - charges = np.zeros((ncores)) - - if overlap is None: - fullDiag = np.diag(density_matrix) - for i in range(ncores): - for ii in range(hindex[i], hindex[i + 1]): - charges[i] = charges[i] + (1.0 - 2.0 * fullDiag[ii]) - else: # S x D - aux = np.dot(overlap, density_matrix) - fullDiag = np.diag(aux) - for i in range(ncores): - for ii in range(hindex[i], hindex[i + 1]): - charges[i] = charges[i] + (1.0 - 2.0 * fullDiag[ii]) - - if verb: - msg = "Total Charge for part= " + str(sum(charges)) - status_at("get_charges", msg) - - return charges - - -## Get TB forces -# \brief Get TB and Coulombic forces from the Hamiltonian, Density matrix -# and charges. -# \param ham Hamiltonian Matrix -# \param rho Density Matrix -# \param field External field -# \param coords Coordinates -# \param atomTypes Atomic types -# \param Symbols Atomic symbols for every type. -## -def get_tb_forces_proxy(ham, rho, charges, field, coords, atomTypes, symbols): - nats = len(coords[:, 0]) - forces = np.zeros((nats, 3)) - forces_coul = np.zeros((nats, 3)) - forces_field = np.zeros((nats, 3)) - forces_band = np.zeros((nats, 3)) - dl = 0.0001 - coordsp = np.zeros((nats, 3)) - coordsm = np.zeros((nats, 3)) - ham = get_hamiltonian_proxy(coords, atomTypes, symbols, verb=False) - vaux = np.ones((nats)) - vaux[:] = 0.5 - rho0 = np.diag(vaux) - - for i in range(len(ham[:, 0])): - # Band Forces from tr(rho dH/dr) - for k in range(3): - coordsp[:, :] = coords[:, :] - coordsp[i, k] = coords[i, k] + dl - hamp = get_hamiltonian_proxy(coordsp, atomTypes, symbols, verb=False) - # Hmu = get_pert(field,coordsp,nats) - # Hp[:,:] = Hp[:,:] + Hmu[:,:] - - coordsm[:, :] = coords[:, :] - coordsm[i, k] = coords[i, k] - dl - hamm = get_hamiltonian_proxy(coordsm, atomTypes, symbols, verb=False) - # Hmu = get_pert(field,coordsm,nats) - # Hm[:,:] = Hm[:,:] + Hmu[:,:] - - dHdx = (hamp - hamm) / (2 * dl) - aux = 2 * np.matmul(rho - rho0, dHdx) - forces_band[i, k] = np.trace(aux) - print("dHdx", dHdx) - - return forces_band - - -def get_ppot_forces_expo_proxy(coords, types): - nats = len(coords[:, 0]) - forces = np.zeros((nats, 3)) - direction = np.zeros(3) - ppots_in = bring_ppots() - ppots = np.zeros((4)) - for i in range(nats): - for j in range(nats): - if i != j: - ii = types[i] - jj = types[j] - ppots[:] = ppots_in[ii, jj, :] - direction = coords[i, :] - coords[j, :] - d = np.linalg.norm(direction) - direction = direction / d - arg = ppots[0] + ppots[1] * d + ppots[2] * d**2 + ppots[3] * d**3 - argPrime = ppots[1] + 2 * ppots[2] * d + 3 * ppots[3] * d**2 - forces[i, :] = -direction * argPrime * (np.exp(arg)) - print(forces[i, :]) - - return forces - - -def get_ppot_energy_expo_proxy(coords, types): - nats = len(coords[:, 0]) - forces = np.zeros((nats, 3)) - direction = np.zeros(3) - energy = 0.0 - ppots_in = bring_ppots() - ppot = np.zeros((4)) - for i in range(nats): - for j in range(nats): - if i != j: - ii = types[i] - jj = types[j] - ppot[:] = ppots_in[ii, jj, :] - direction = coords[i, :] - coords[j, :] - d = np.linalg.norm(direction) - arg = ppot[0] + ppot[1] * d + ppot[2] * d**2 + ppot[3] * d**3 - energy = energy + np.exp(arg) - - return energy - - -## Get band energy -# @brief Get the band energy from the density matrix and the non-SCF Hamiltonian -# @param ham0 Non-scf Hamiltonian matrix -# @param rho0 Atomized density matrix -# @param rho Density matrix -# @return energy Band energy -def get_band_energy(ham0,rho0,rho): - - energy = 2*np.trace(np.dot(ham0,(rho-rho0))) # Single-particle/band energy - return energy - -## Get the electronic free energy -# @brief This computed from the entropy of the Fermi distribution -# @param fvals A vector containing the Fermi function for every eigenenergy -# @param kB Boltzan constant (default is in eV/K) -# @param elect_temp Electronic temperature -# -def get_electron_entropy_energy(fvals,kB=8.61739e-5,elec_temp=0): - if(elec_temp > 1.0E-10): - entropy = 0.0 - tol = 1.0E-9 - entropy = -kB*np.sum( fvals[:]*np.log10(fvals[:]) + (1.0 - fvals[:])*np.log10(1.0 - fvals[:]) ) - else: - entropy = 0.0 - energy = -2.0*elec_temp*entropy - return energy - - -## Get pair potential forces -# \brief We will use a simple LJ -# \param coords -# -def get_ppot_forces_LJ(coords): - # Following Levine - # VLJ = epsilon*( (a/d)^12 - 2*(b/d)^6 ) - # FLJ = espilon*( -12*( (a**12)/(d**13) ) - 12*( (b**6)/(d**7) ) ) - epsilon = 0.1 - a = 1.0 - b = 1.0 - nats = len(coords[:, 0]) - forces = np.zeros((nats, 3)) - direction = np.zeros(3) - for i in range(nats): - for j in range(nats): - if i != j: - direction = coords[i, :] - coords[j, :] - d = np.linalg.norm(direction) - direction = direction / d - forces[i, :] = -direction * epsilon * (-12 * ((a**12) / (d**13)) + 12 * ((b**6) / (d**7))) - - return forces - - -def get_ppot_energy(coords): - epsilon = 0.1 - a = 1.0 - b = 1.0 - nats = len(coords[:, 0]) - direction = np.zeros(3) - energy = 0 - for i in range(nats): - for j in range(nats): - if i != j: - direction = coords[i, :] - coords[j, :] - d = np.linalg.norm(direction) - energy = energy + epsilon * ((a / d) ** 12 - 2 * (b / d) ** 6) - - energy = energy / 2.0 - - return energy - - -if __name__ == "__main__": - n = len(sys.argv) - if n == 1: - print("Give the total number of atoms. Example:\n") - print("proxy_a 100\n") - sys.exit(0) - else: - nats = int(sys.argv[1]) - - verb = True - # coords = get_random_coordinates(nats) - # atomTypes = np.zeros((nats),dtype=int) - # symbols = []*nats - # symbols[:] = "H" - latticeVectors, symbols, atomTypes, coords = read_coords_file("methane.xyz", lib="None", verb=True) - read_ppots("ppots.dat", symbols) - print_ppots() - - bas_per_atom = [4, 1] - filename = "aosa_parameters.dat" - tbparams = read_tbparams(filename, symbols, bas_per_atom) - print("tbparam", tbparams[0].symbol) - exit(0) - - ham, over = get_hamiltonian_proxy(coords, atomTypes, symbols, get_overlap=True) - - with np.printoptions(precision=3, suppress=True): - print(ham) - print(over) - exit(0) - gpuLibIn = False ## need to pass from input file or command line - occ = int(float(nats) / 2.0) # Get the total occupied orbitals - - if gpuLibIn == False: - print("Using CPU for DM construction. Consider installing accelerator library...") - rho = get_density_matrix_proxy(ham, occ) - npart = len(coords[:, 0]) - hindex = np.arange(npart + 1, dtype=int) - field = np.zeros(3) - charges = get_charges_proxy(rho, npart, hindex, overlap=None, verb=False) - eforces = get_tb_forces(ham, rho, charges, field, coords, atomTypes, symbols) - nforces = get_ppot_forces(coords) - - # eenergy = get_tb_energy() - nenergy = get_ppot_energy(coords) - - coords[0, 0] = coords[0, 0] + 0.001 - nenergyp = get_ppot_energy(coords) - - print((nenergyp - nenergy) / 0.001, nforces[0, 0]) - exit(0) - - print(nforces) - exit(0) - print("Hamiltonian matrix=", ham) - print("Density matrix=", rho) - print("Forces=", forces) diff --git a/proxies/python/evals_dvals.py b/proxies/python/evals_dvals.py deleted file mode 100644 index 40da99f4..00000000 --- a/proxies/python/evals_dvals.py +++ /dev/null @@ -1,74 +0,0 @@ -"""density_matrix -Computes the Density matrix from a given Hamiltonian -This code is only used to guide implemetations and understand which are the -basic elements needed to interface with the sedacs driver. -""" - -import numpy as np -import scipy.linalg as sp -from nonortho import get_xmat - - -__all__ = [ - "get_evals_dvals_proxy", -] - - -## Computes the Evals and Dvals from a given Hamiltonian. -# @author Anders Niklasson -# @brief This will create a Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# -# @param ham Hamiltonian matrix -# @param nocc Number of occupied orbitals -# @param core_size Number of atoms in the cores. -# @param mu Chemical potential. If set to none, the calculation will use nocc -# @param etemp Electronic temperature -# @param overlap Overlap matrix -# @param verb Verbosity. If True is passed, information is printed. -# -# @return rho Density matrix -# -def get_evals_dvals_proxy(ham, nocc, norbsInCore=None, mu=None, etemp=0.0, verb=False, lib=None): - """Calcualtion of the evals and dvals from H""" - if verb: - print("Computing Evals and Dvals") - - norbs = len(ham[:, 0]) - ham_orth = np.zeros((norbs, norbs)) - if overlap is not None: - # Get the inverse overlap factor - zmat = get_xmat(overlap, method="Diag", accel="No", verb=False) - - # Orthogonalize Hamiltonian - ham_orth = np.matmul(np.matmul(np.transpose(zmat), ham), zmat) - else: - ham_orth[:, :] = ham[:, :] - - dvals = np.zeros((norbs)) - if(method == "Diag"): - evals, evects = sp.eigh(ham_orth) - - if verb: - print("Eigenvalues of H:", evals) - - if (overlap is not None): - #overTimesEvects = np.dot(overlap,evects) - overTimesEvects = evects - else: - overTimesEvects = evects - for i in range(norbs): - dvals[i] = np.inner(evects[:norbsInCore,i],overTimesEvects[:norbsInCore,i]) - else: - if(norbsInCore is not None): - dvals[:] = norbsInCore/norbs - else: - dvals[:] = 1.0 - - evals = np.zeros(norbs) - evals = np.diag(ham_orth) #We estimate the eigenvaluse from the Girshgorin centers - - - return evals, dvals - diff --git a/proxies/python/first_level.py b/proxies/python/first_level.py deleted file mode 100644 index 7d6759bd..00000000 --- a/proxies/python/first_level.py +++ /dev/null @@ -1,441 +0,0 @@ -"""proxy code a -A prototype engine that: - - Reads the total number of atoms - - Constructs a set of random coordinates - - Constructs a simple Hamiltonian - - Computes the Density matrix from the Hamiltonian - - Computes atomic Mulliken charges - - Computes TB + coulombic forces -""" - -import os -import sys - -import numpy as np -import scipy.linalg as sp -import sedacs.driver -import sedacs.interface_modules -from sedacs.dev.io import src_path - -try: - import ctypes - - # import gpulibInterface as gpu - - gpuLib = True - arch = "nvda" - pwd = os.getcwd() - - if arch == "nvda": - print("loading nvidia...") - lib = ctypes.CDLL(str((src_path() / "gpu/nvda/libnvda.so").absolute())) - if arch == "amd": - lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) - -except: - gpuLib = False - - -__all__ = [ - "RandomNumberGenerator", - "get_random_coordinates", - "get_hamiltonian_proxy", - "get_density_matrix_proxy", - "get_density_matrix_gpu", - "get_charges_proxy", - "get_forces_proxy", -] - - -## Simple random number generator -# This is important in order to compare across codes -# written in different languages. -# -# To initialize: -# \verbatim -# myRand = rand(123) -# \endverbatim -# where the argument of rand is the seed. -# -# To get a random number between "low" and "high": -# \verbatim -# rnd = myRand.get_rand(low,high) -# \endverbatim -# -class RandomNumberGenerator: - """To generate random numbers.""" - - def __init__(self, seed): - self.a = 321 - self.b = 231 - self.c = 13 - self.seed = seed - self.status = seed * 1000 - - def generate(self, low, high): - """Get a random real number in between low and high.""" - w = high - low - place = self.a * self.status - place = int(place / self.b) - rand = (place % self.c) / self.c - place = int(rand * 1000000) - self.status = place - rand = low + w * rand - - return rand - - -## Generating random coordinates -# @brief Creates a system of size "nats = Number of atoms" with coordindates having -# a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. -# -# @param nats The total number of atoms -# @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] -# -def get_random_coordinates(nats): - """Get random coordinates""" - length = int(nats ** (1 / 3)) + 1 - coords = np.zeros((nats, 3)) - latticeParam = 2.0 - atomsCounter = -1 - myrand = RandomNumberGenerator(111) - for i in range(length): - for j in range(length): - for k in range(length): - atomsCounter = atomsCounter + 1 - if atomsCounter >= nats: - break - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 0] = i * latticeParam + rnd - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 1] = j * latticeParam + rnd - rnd = myrand.generate(-1.0, 1.0) - coords[atomsCounter, 2] = k * latticeParam + rnd - return coords - - -## Computes a Hamiltonian based on exponential decay of orbital couplings. -# @author Anders Niklasson -# @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances -# \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. -# -# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] -# @param atomTypes Index type for each atom in the system. Type for first atom = type[0] (not used yet) -# @param symbols Symbols for every atom type. -# @param verb Verbosity. If True is passed, information is printed -# @return ham 2D numpy array of Hamiltonian elements -# -def get_hamiltonian_proxy(coords, atomTypes, symbols, verb=False, get_overlap=False): - """Construct simple toy s-Hamiltonian""" - - - #Internal periodic table for the code - symbols_internal = np.array([ "Bl" , - "H" , "He" , - "Li" , "Be" , "B" , "C" , "N" , "O" , "F" , \ - ], dtype=str) - numel_internal = np.zeros(len(symbols_internal),dtype=int) - numel_internal[:] = 0, \ - 1 , 2 , \ - 1 , 2 , 3 , 4 , 5 , 6 , 7 , - - bas_per_atom = np.zeros(len(symbols_internal),dtype=int) - bas_per_atom[:] = 0, \ - 1 , 1 ,\ - 4 , 4, 4, 4 , 4, 4, 4, - - - nats = len(coords[:,0]) - numel = 0 - - # Map symbols to indices in symbols_internal - symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} - - # Translate `symbols` to `symbols_internal` indices - mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) - - # Convert atomTypes to `symbols_internal` indices - atom_internal_indices = mapped_indices[atomTypes] - - # Sum the corresponding values in bas_per_atom and numel_internal - norbs = np.sum(bas_per_atom[atom_internal_indices]) - numel = np.sum(numel_internal[atom_internal_indices]) - - - nocc = int(numel/2.0) - eps = 1e-9 - decay_min = 0.1 - m = 78 - a = 3.817632 - c = 0.816371 - x = 1.029769 - n = 13 - b = 1.927947 - d = 3.386142 - y = 2.135545 - ham = np.zeros((norbs, norbs)) - if(get_overlap): - over = np.zeros((norbs, norbs)) - if verb: - print("Constructing a simple Hamiltonian for the full system") - colsh = 0 - rowsh = 0 - for i in range(0, nats): - for ii in range(bas_per_atom[atom_internal_indices[i]]): - x = (a * x + c) % m # Hamiltonian parameters - y = (b * y + d) % n - colsh = 0 - for j in range(i, nats): - for jj in range(bas_per_atom[atom_internal_indices[j]]): - dist = np.linalg.norm(coords[i, :] - coords[j, :]) - tmp = np.exp(-(y / n + decay_min) * (dist**2)) - if(get_overlap): - over[rowsh,colsh] = tmp - over[colsh,rowsh] = tmp - - tmp = (x/m)*tmp - ham[rowsh, colsh] = tmp - ham[colsh, rowsh] = tmp - colsh = colsh + 1 - rowsh = rowsh + 1 - if(get_overlap): - return ham, over - else: - return ham - -sedacs.driver.get_hamiltonian = get_hamiltonian_proxy - -## Computes the Density matrix from a given Hamiltonian. -# @author Anders Niklasson -# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# -# @param ham Hamiltonian matrix -# @param nocc Number of occupied orbitals -# @param verb Verbosity. If True is passed, information is printed. -# -# @return rho Density matrix -# -def get_density_matrix_proxy(ham, nocc, verb=False): - """Calcualted the full density matrix from H""" - if verb: - print("Computing the Density matrix") - E, Q = sp.eigh(ham) - norbs = len(ham[:, 0]) - homoIndex = nocc - 1 - lumoIndex = nocc - mu = 0.5 * (E[homoIndex] + E[lumoIndex]) - rho = np.zeros((norbs, norbs)) - if verb: - print("Eigenvalues of H:", E) - for i in range(norbs): - if E[i] < mu: - rho = rho + np.outer(Q[:, i], Q[:, i]) - if verb: - print("Chemical potential = ", mu) - return rho - - -sedacs.driver.get_density_matrix = get_density_matrix_proxy - - -## Computes the finite temperature density matrix -# \param -def get_density_matrix_T(H, Nocc, Tel, mu0, coreSize, core_ham_dim, S=None, verb=False): - - kB = 8.61739e-5 # eV/K, kB = 6.33366256e-6 Ry/K, kB = 3.166811429e-6 Ha/K, #kB = 3.166811429e-6 #Ha/K - if(verb): print("Computing the renormalized Density matrix") - - if S is not None: - E_val,Q = scipy.linalg.eigh(H) ### need S? not ones with S $$$ - else: - E_val,Q = np.linalg.eigh(H) - N = len(H[:,0]) - - #print('Q\n', Q[:,0]) - - homoIndex = Nocc - 1 - lumoIndex = Nocc - print('HOMO, LUMO:', E_val[homoIndex], E_val[lumoIndex]) - mu_test = 0.5*(E_val[homoIndex] + E_val[lumoIndex]) #don't need it - print(N, Nocc,) - print('!!!! mu test:\n', mu_test) - - # use mu0 as a guess - - OccErr = 1.0 - beta = 1./(kB*Tel) - f = np.array([]) - for i in range(N): - f_i = 1/(np.exp(beta*(E_val[i] - mu0)) + 1) # save fi to f - f = np.append(f,f_i) - #Occ = Occ + f_i*E_occ[i,k] - - - D = sum(np.outer(Q[:, i],Q[:, i]*f[i]) for i in range(Nocc))*2 - #np.savetxt('co2_32_dm.txt',D) - - - # rho = Q@f_vector@Q.T - # or - # rho_ij = SUM_k Q_ik * f_kk * Q_jk - - - print('core_ham_dim', core_ham_dim) - dVals = np.array([]) - for i in range(N): - dVals = np.append(dVals, np.inner(Q[:core_ham_dim,i],Q[:core_ham_dim, i])) - - return D, E_val, dVals - - -## Computes the Density matrix from a given Hamiltonian. -# @author Josh Finkelstein -# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# using GPU/AI accelerator library -# -# @param H Hamiltonian matrix -# @param Nocc Number of occupied orbitals -# @param verb Verbosity. If True is passed, information is printed. -# -# @return D Density matrix -# -def get_density_matrix_gpu(H, N, Nocc, lib, verb=False): - """Calcualted the full density matrix from H""" - if verb: - print("Computing the Density matrix using GPU/AI accel library") - - # init DM - D = np.zeros((N, N)) - kbt = 0.1 - - # get DM from cusolver diag - # dm = gpu.dmDNNSP2(H,D,N,Nocc,lib) - # dm = gpu.dmCheby(H,D,N,Nocc,kbt,lib) - print("Density matrix=", D) - # dm = gpu.dmDiag(H,D,N,Nocc,kbt,lib) - # print("Density matrix=",dm) - dm = gpu.dmMLSP2(H, D, N, Nocc, lib) - return D - -def get_charges_proxy(density_matrix,ncores,hindex,overlap=None,verb=False): - if(verb): - status_at("get_charges","Getting charges from density matrix") - - fullDiag = np.diag(density_matrix) - charges = np.zeros((ncores)) - - if(overlap is None): - for i in range(ncores): - for ii in range(hindex[i],hindex[i+1]): - charges[i] = charges[i] + (1.0 - fullDiag[ii]) - else: - pass - - if(verb): - msg = "Total Charge for part= " + str(sum(charges)) - status_at("get_charges",msg) - - return charges - - -## Get TB forces -# \brief Get TB and Coulombic forces from the Hamiltonian, Density matrix -# and charges. -# \param ham Hamiltonian Matrix -# \param rho Density Matrix -# \param field External field -# \param coords Coordinates -# \param atomTypes Atomic types -# \param Symbols Atomic symbols for every type. -## -def get_tb_forces(ham, rho, charges, field, coords, atomTypes,symbols): - - nats = len(coords[:,0]) - forces = np.zeros((nats,3)) - forces_coul = np.zeros((nats,3)) - forces_field = np.zeros((nats,3)) - forces_band = np.zeros((nats,3)) - dl = 0.0001 - coordsp = np.zeros((nats,3)) - coordsm = np.zeros((nats,3)) - ham = get_hamiltonian_proxy(coords,atomTypes,symbols,verb=False) - vaux = np.ones((nats)) - vaux[:] = 0.5 - rho0 = np.diag(vaux) - - for i in range(len(ham[:,0])): - - #Band Forces from tr(rho dH/dr) - for k in range(3): - coordsp[:,:] = coords[:,:] - coordsp[i,k] = coords[i,k] + dl - hamp = get_hamiltonian_proxy(coordsp,atomTypes,symbols,verb=False) - #Hmu = get_pert(field,coordsp,nats) - #Hp[:,:] = Hp[:,:] + Hmu[:,:] - - coordsm[:,:] = coords[:,:] - coordsm[i,k] = coords[i,k] - dl - hamm = get_hamiltonian_proxy(coordsm,atomTypes,symbols,verb=False) - #Hmu = get_pert(field,coordsm,nats) - #Hm[:,:] = Hm[:,:] + Hmu[:,:] - - dHdx = (hamp - hamm)/(2*dl) - aux = 2*np.matmul(rho-rho0,dHdx) - forces_band[i,k] = np.trace(aux) - print("dHdx",dHdx) - - #Coulombic Forces - for j in range(len(ham[:,0])): - if(i != j): - distance = np.linalg.norm(coords[i,:] - coords[j,:]) - direction = (coords[i,:] - coords[j,:])/distance - #F_coul[i,:] = F_coul[i,:] - (14.3996437701414*1.0*direction*q[i]*q[j])/(distance**2) - forces_coul[i,:] = forces_coul[i,:] - (1.0*direction*charges[i]*charges[j])/(distance**2) - - #Field forces - #forces_field[i,:] = forces_field[i,:] + field*charges[i] - - forces[:,:] = - ( forces_band[:,:] + forces_coul[:,:] + forces_field[:,:]) - return forces - - -## Main program for proxy a -# \brief It will read the number of atoms, contruct -# a set of random coordinates and give back a Density matrix. -# -if __name__ == "__main__": - n = len(sys.argv) - if n == 1: - print("Give the total number of atoms. Example:\n") - print("proxy_a 100\n") - sys.exit(0) - else: - nats = int(sys.argv[1]) - - verb = True - coords = get_random_coordinates(nats) - atomTypes = np.zeros((nats),dtype=int) - symbols = []*nats - symbols[:] = "H" - - ham = get_hamiltonian_proxy(coords,atomTypes,symbols) - - gpuLibIn = False ## need to pass from input file or command line - occ = int(float(nats) / 2.0) # Get the total occupied orbitals - - if gpuLibIn == False: - print("Using CPU for DM construction. Consider installing accelerator library...") - rho = get_density_matrix_proxy(ham, occ) - npart = len(coords[:,0]) - hindex = np.arange(npart+1,dtype=int) - field = np.zeros(3) - charges = get_charges_proxy(rho,npart,hindex,overlap=None,verb=False) - forces = get_tb_forces(ham, rho, charges, field, coords, atomTypes,symbols) - print("Hamiltonian matrix=",ham) - print("Density matrix=",rho) - print("Forces=",forces) - diff --git a/proxies/python/first_level_gpu.py b/proxies/python/first_level_gpu.py deleted file mode 100644 index 297d6b41..00000000 --- a/proxies/python/first_level_gpu.py +++ /dev/null @@ -1,303 +0,0 @@ -"""proxy code a -A prototype engine that: - - Reads the total number of atoms - - Constructs a set of random coordinates - - Constructs a simple Hamiltonian - - Computes the Density matrix from the Hamiltonian -""" - -import ctypes -import sys - -import numpy as np -import scipy.linalg as sp -from juliacall import Main as jl - -import sedacs.driver -import sedacs.gpu as gpu -import sedacs.interface_modules -from sedacs.dev.io import src_path -from sedacs.gpu.library import Library - -gpuLib = True -arch = "nvda" - -if arch == "nvda": - print("loading nvidia...") - lib = Library(src_path() / "gpu/nvda/libnvda.so").as_dll() -if arch == "amd": - lib = Library(src_path() / "gpu/amd/libamd.so").as_dll() - - -## Simple random number generator -# This is important in order to compare across codes -# written in different languages. -# -# To initialize: -# \verbatim -# myRand = rand(123) -# \endverbatim -# where the argument of rand is the seed. -# -# To get a random number between "low" and "high": -# \verbatim -# rnd = myRand.get_rand(low,high) -# \endverbatim -# -class rand: - """To generate random numbers.""" - - def __init__(self, seed): - self.a = 321 - self.b = 231 - self.c = 13 - self.seed = seed - self.status = seed * 1000 - - def get_rand(self, low, high): - """Get a random real number in between low and high.""" - w = high - low - place = self.a * self.status - place = int(place / self.b) - rand = (place % self.c) / self.c - place = int(rand * 1000000) - self.status = place - rand = low + w * rand - - return rand - - -## Generating random coordinates -# @brief Creates a system of size "nats = Number of atoms" with coordindates having -# a random (-1,1) displacement from a simple cubic lattice with parameter 2.0 Ang. -# -# @param nats The total number of atoms -# @return coordinates Position for every atom. z-coordinate of atom 1 = coords[0,2] -# -def get_random_coordinates(nats): - """Get random coordinates""" - length = int(nats ** (1 / 3)) + 1 - coords = np.zeros((nats, 3)) - latticeParam = 2.0 - atomsCounter = -1 - myrand = rand(111) - for i in range(length): - for j in range(length): - for k in range(length): - atomsCounter = atomsCounter + 1 - if atomsCounter >= nats: - break - rnd = myrand.get_rand(-1.0, 1.0) - coords[atomsCounter, 0] = i * latticeParam + rnd - rnd = myrand.get_rand(-1.0, 1.0) - coords[atomsCounter, 1] = j * latticeParam + rnd - rnd = myrand.get_rand(-1.0, 1.0) - coords[atomsCounter, 2] = k * latticeParam + rnd - return coords - - -## Computes a Hamiltonian based on a single "s-like" orbitals per atom. -# @author Anders Niklasson -# @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances -# \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. -# -# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] -# @param types Index type for each atom in the system. Type for first atom = type[0] (not used yet) -# @return H 2D numpy array of Hamiltonian elements -# @param verb Verbosity. If True is passed, information is printed -# -def proxyA_get_hamiltonian(coords, atomTypes=np.zeros((1), dtype=int), verb=False): - """Construct simple toy s-Hamiltonian""" - N = len(coords[:, 1]) - Nocc = int(N / 4) - eps = 1e-9 - decay_min = 0.1 - m = 78 - a = 3.817632 - c = 0.816371 - x = 1.029769 - n = 13 - b = 1.927947 - d = 3.386142 - y = 2.135545 - H = np.zeros((N, N)) - if verb: - print("Constructing a simple Hamiltonian for the full system") - cnt = 0 - for i in range(0, N): - x = (a * x + c) % m # Hamiltonian parameters - y = (b * y + d) % n - for j in range(i, N): - dist = np.linalg.norm(coords[i, :] - coords[j, :]) - tmp = (x / m) * np.exp(-(y / n + decay_min) * (dist**2)) - H[i, j] = tmp - H[j, i] = tmp - return H - - -## Computes the Density matrix from a given Hamiltonian. -# @author Anders Niklasson -# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# -# @param H Hamiltonian matrix -# @param Nocc Number of occupied orbitals -# @param verb Verbosity. If True is passed, information is printed. -# -# @return D Density matrix -# -def get_densityMatrix(H, Nocc, verb=False): - """Calcualted the full density matrix from H""" - if verb: - print("Computing the Density matrix") - E, Q = sp.eigh(H) - N = len(H[:, 0]) - homoIndex = Nocc - 1 - lumoIndex = Nocc - mu = 0.5 * (E[homoIndex] + E[lumoIndex]) - D = np.zeros((N, N)) - if verb: - print("Eigenvalues of H:", E) - for i in range(N): - if E[i] < mu: - D = D + np.outer(Q[:, i], Q[:, i]) - if verb: - print("Chemical potential = ", mu) - return D - - -## Computes the Density matrix from a given Hamiltonian. -# @author Josh Finkelstein -# @brief This will create a "zero-temperature" Density matrix \f$ \rho \f$ -# \f[ \rho = \sum^{nocc} v_k v_k^T \f] -# where \f$ v_k \f$ are the eigenvectors of the matrix \f$ H \f$ -# using GPU/AI accelerator library -# -# @param H Hamiltonian matrix -# @param Nocc Number of occupied orbitals -# @param verb Verbosity. If True is passed, information is printed. -# -# @return D Density matrix -# -def get_densityMatrix_response_accel(H, P, D, R, N, Nocc, handle, lib, verb=False): - """Calcualte the full density matrix and its response to pertubation P in H""" - if verb: - print("Computing the Density matrix using GPU/AI accel library") - - # get DM from PRT - time = gpu.dmDNNPRT(H, P, D, R, N, Nocc, handle, lib) - return time - - -def get_densityMatrix_accel(H, D, N, Nocc, handle, lib, verb=False): - """Calcualted the full density matrix from H""" - if verb: - print("Computing the Density matrix using GPU/AI accel library") - - # init DM - # D = np.zeros((N,N)) - kbt = 0.001 - - # get DM from cusolver diag - # time = gpu.dmDNNSP2(H, D, N, Nocc, handle, lib) - # dm = gpu.dmCheby(H,D,N,Nocc,kbt,lib) - # print("Density matrix=",D) - # time = gpu.dmDiag(H,D,N,Nocc,kbt,lib) - # print("Density matrix=",dm) - time = gpu.dmMLSP2(H, D, N, Nocc, lib) - return time - - -## Main program for proxy a -# \brief It will read the number of atoms, contruct -# a set of random coordinates and give back a Density matrix. -# -if __name__ == "__main__": - nats = 512 - - coords = get_random_coordinates(nats) - - # H = proxyA_get_hamiltonian(coords) - jl.seval("using Pkg") - jl.seval('Pkg.activate("./GeneralizedSP2/examples")') - jl.seval(""" - using Distributions - using GershgorinDiscs - using GeneralizedSP2 - using LinearAlgebra - using ToyHamiltonians - using DelimitedFiles - set_isapprox_rtol(1e-13) - β = 1.25 # Physical - μ = 150 # Physical - sys_size = 512 - dist = LogUniform(100, 200) - Λ = rand(EigvalsSampler(dist), sys_size) - V = rand(EigvecsSampler(dist), sys_size, sys_size) - H = Hamiltonian(Eigen(Λ, V)) - savemodel("H.npy", H) - 𝚲 = eigvals(H) # Must be all reals - emin, emax = floor(minimum(𝚲)), ceil(maximum(𝚲)) - open("minmax.txt", "w") do f - write(f, string(emin) * "\n") - write(f, string(emax) * "\n") - end - H_scaled = rescale_one_zero(emin, emax)(H) - savemodel("H_scaled.npy", H_scaled) - """) - H = np.ascontiguousarray(np.load("H.npy"), dtype=np.float64) - - # Allocate dm - D = np.zeros((nats, nats)) - - P = np.zeros((nats, nats)) - R = np.zeros((nats, nats)) - - gpuLibIn = True ## need to pass from input file or command line - occ = int(float(nats) / 2.0) # Get the total occupied orbitals - - for i in range(10): - if gpuLibIn == False: - print("Using CPU for DM construction. Consider installing accelerator library...") - Dcpu = get_densityMatrix(H, occ) - break - - elif gpuLibIn == True: - if gpuLib == False: - print("No accelerator library found. Consider installing or change input.") - - ## allocate some gpu mem - size_of_double = 8 # bytes - matSize = nats * nats * size_of_double - cublas_handle = gpu.cublasInit(lib) - - d_ham = gpu.dev_alloc(matSize, lib) - d_prt = gpu.dev_alloc(matSize, lib) - d_dm = gpu.dev_alloc(matSize, lib) - d_rsp = gpu.dev_alloc(matSize, lib) - - ## copy ham from host to device - gpu.memcpyHtoD(d_ham, H, matSize, lib) - - ## copy ham from host to device - gpu.memcpyHtoD(d_prt, P, matSize, lib) - - print("iteration ", i) - timer = get_densityMatrix_accel(d_ham, d_dm, nats, occ, cublas_handle, lib) - # timer = get_densityMatrix_response_accel(d_ham, d_prt, d_dm, d_rsp, nats, occ, cublas_handle, lib) - print(f"python time = {timer:0.10f} seconds") - print("=========================") - - ## copy dm from device to host - size_of_double = 8 # bytes - matSize = nats * nats * size_of_double - gpu.memcpyDtoH(D, d_dm, matSize, lib) - - # print(D) - with open("cuda.npy", "wb") as f: - np.save(f, D) - gpu.dev_free(d_dm, lib) - gpu.dev_free(d_ham, lib) - gpu.dev_free(d_prt, lib) - gpu.dev_free(d_rsp, lib) diff --git a/proxies/python/hamiltonian.py b/proxies/python/hamiltonian.py deleted file mode 100644 index ac431895..00000000 --- a/proxies/python/hamiltonian.py +++ /dev/null @@ -1,182 +0,0 @@ -"""hamiltonian -A prototype engine code that: - - Constructs different Hamiltonians -This code is only used to guide implemetations and understand which are the -basic elements needed to interface with the sedacs driver. -""" - -import os -import sys - -import numpy as np -import sedacs.driver -from sedacs.dev.io import src_path -import scipy.linalg as sp -from hamiltonian_elements import * -from dnnprt import * -from proxies.python.proxy_global import * - -try: - import ctypes - - # import gpulibInterface as gpu - - gpuLib = True - arch = "nvda" - pwd = os.getcwd() - - if arch == "nvda": - print("loading nvidia...") - lib = ctypes.CDLL(str((src_path() / "gpu/nvda/libnvda.so").absolute())) - if arch == "amd": - lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) - -except: - gpuLib = False - - -__all__ = [ - "get_hamiltonian_proxy", - "get_random_hamiltonian", - "build_coul_ham_proxy" -] - - -## Computes a Hamiltonian based on exponential decay of orbital couplings. -# @author Anders Niklasson -# @brief Computes a hamiltonian based on exponential decays. -# @param coords Position for every atoms. z-coordinate of atom 1 = coords[0,2] -# @param atomTypes Index type for each atom in the system. Type for first atom = type[0] (not used yet) -# @param symbols Symbols for every atom type -# @param verb Verbosity. If True is passed, information is printed -# @para get_overlap If overlap needs to be returned -# @return ham 2D array of Hamiltonian elements -# -def get_hamiltonian_proxy(coords, atomTypes, symbols, verb=False, get_overlap=False): - """Constructs a simple tight-binding Hamiltonian""" - - # Internal periodic table for the code - symbols_internal = np.array(["Bl", "H", "C", "N", "O", "P"], dtype=str) - numel_internal = np.zeros(len(symbols_internal), dtype=int) - numel_internal[:] = 0, 1, 4, 5, 6, 5 - bas_per_atom = np.zeros(len(symbols_internal), dtype=int) - bas_per_atom[:] = 0, 1, 4, 4, 4, 4 - spOrbTypes = ["s", "px", "py", "pz"] - sOrbTypes = ["s"] - - nats = len(coords[:, 0]) - - # Map symbols to indices in symbols_internal - symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} - - # Translate `symbols` to `symbols_internal` indices - mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) - - # Convert atomTypes to `symbols_internal` indices - atom_internal_indices = mapped_indices[atomTypes] - - - # Sum the corresponding values in bas_per_atom and numel_internal - norbs = np.sum(bas_per_atom[atom_internal_indices]) - numel = np.sum(numel_internal[atom_internal_indices]) - - ham = np.zeros((norbs, norbs)) - if get_overlap: - over = np.zeros((norbs, norbs)) - if verb: - print("Constructing a simple Hamiltonian for the full system") - - colsh = 0 - rowsh = 0 - tbparams = bring_tbparams() - breakpoint() - for i in range(0, nats): - for ii in range(bas_per_atom[atom_internal_indices[i]]): - colsh = rowsh - parI = tbparams[atomTypes[i]][ii] - for j in range(i, nats): - if i == j: - llimit = ii - else: - llimit = 0 - for jj in range(llimit,bas_per_atom[atom_internal_indices[j]]): - parJ = tbparams[atomTypes[j]][jj] - hval, sval = get_integral_v1(coords[i],coords[j],parI,parJ) - if(get_overlap): - over[rowsh,colsh] = sval - over[colsh,rowsh] = sval - - ham[rowsh, colsh] = hval - ham[colsh, rowsh] = hval - colsh = colsh + 1 - rowsh = rowsh + 1 - - if get_overlap: - return ham, over - else: - return ham - - -sedacs.driver.get_hamiltonian = get_hamiltonian_proxy - -## Add coulombic potentials to the Hamiltonian -# @param ham0 No-SCF Hamiltonian -# @param vcouls Coulombic potentials for every atomic site -# @pparam orbital_based If set to True, coulombic potentials for every orbitals will be -# expected. -# @param hindex will give the orbital index for each atom -# The orbital indices for orbital i goes from `hindex[i]` to `hindex[i+1]-1` -# @param overlap Overlap matrix for nonorthogonal formulations. -# @param verb Verbosity switch. -# -def build_coul_ham_proxy(ham0, vcouls, types, charges, orbital_based, hindex, overlap=None, verb=False): - norbs = len(ham0[:, 0]) - vcouls_orbs = np.zeros((norbs), dtype=float) # Expanded coulombic potentials - nats = len(hindex[:]) - 1 - - tbparams = bring_tbparams() - - if orbital_based: - error_at("build_coul_ham", "Orbital-based coulombic potential not implemented") - else: - for i in range(nats): - for ii in range(hindex[i], hindex[i + 1]): - k = ii - hindex[i] - vcouls_orbs[ii] = vcouls[i] + tbparams[types[i]][k].u * charges[i] - if overlap is None: - ham = ham0 + np.diag(vcouls_orbs) - else: - vmat = np.diag(vcouls_orbs) - ham = ham0 + 0.5 * (np.dot(overlap, vmat) + np.dot(vmat, overlap)) - return ham - - -## Computes a Hamiltonian based on a single "s-like" orbitals per atom. -# @author Anders Niklasson -# @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances -# \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. -# -# @param ndim Size of the Hamiltonian matrix -# @param verb Verbosity. If True is passed, information is printed -# @return H 2D numpy array of Hamiltonian elements -# -def get_random_hamiltonian(coords,verb=False): - """Construct simple toy s-Hamiltonian """ - norbs = len(coords[:,0]) - eps = 1e-9; decay_min = 0.1; m = 78; - a = 3.817632; c = 0.816371; x = 1.029769; n = 13; - b = 1.927947; d = 3.386142; y = 2.135545; - ham = np.zeros((norbs,norbs)) - if(verb): print("Constructing a simple Hamiltonian for the full system") - cnt = 0 - for i in range(0,norbs): - x = (a*x+c)%m #Hamiltonian parameters - y = (b*y+d)%n - for j in range(i,norbs): - dist = np.linalg.norm(coords[i,:]-coords[j,:]) - tmp = (x/m)*np.exp(-(y/n + decay_min)*(dist**2)) - ham[i,j] = tmp - ham[j,i] = tmp - ham[i,i] = x*y - return ham - diff --git a/proxies/python/hamiltonian_elements.py b/proxies/python/hamiltonian_elements.py deleted file mode 100644 index 49c2703a..00000000 --- a/proxies/python/hamiltonian_elements.py +++ /dev/null @@ -1,310 +0,0 @@ -"""AOSA and LATTE - prototype hamiltonian elements -Atomic orbital spherical approximation - - Reads the total number of atoms - - Constructs a set of random coordinates - - Constructs a simple Hamiltonian - - Computes the hamiltonian derivatives -""" - -import os -import sys - -import numpy as np -import scipy.linalg as sp -#import sedacs.driver -#import sedacs.interface_modules -#from sedacs.dev.io import src_path - -try: - import ctypes - - # import gpulibInterface as gpu - - gpuLib = True - arch = "nvda" - pwd = os.getcwd() - - if arch == "nvda": - print("loading nvidia...") - lib = ctypes.CDLL(str((src_path() / "gpu/nvda/libnvda.so").absolute())) - if arch == "amd": - lib = ctypes.CDLL(str((src_path() / "gpu/amd/libamd.so").absolute())) - -except: - gpuLib = False - - -__all__ = [ - "AOSA_Parameter", - "get_integral", - "get_integral_v1", -] - -class AOSA_Parameter: - def __init__(self,symbol,orb,filePath): - self.symbol = symbol - self.orbType = orb - parFile = open(filePath,"r") - count = 0 - symbFound = False - orbFound = False - for line in parFile: - info = line.split() - if(len(info) >= 1): - print(info) - if(info[0] == "Element="): - if(info[1] == symbol): - norbs = int(info[3]) - symbFound = True - print(info[1],symbol,symbFound) - if(symbFound and info[3] == orb): - print(info[5]) - orbFound = True - self.onsite = float(info[5]) - self.u = float(info[7]) - self.nl = int(info[9]) - self.kappas = np.zeros((self.nl)) - self.ds = np.zeros((self.nl,3)) - self.gammas = np.zeros((self.nl,4)) - if(symbFound and orbFound and info[0] == "LobeIndex="): - self.kappas[count] = float(info[3]) - self.ds[count,0] = float(info[5]) - self.ds[count,1] = float(info[6]) - self.ds[count,2] = float(info[7]) - - self.gammas[count,0] = float(info[9]) - self.gammas[count,1] = float(info[10]) - self.gammas[count,2] = float(info[11]) - self.gammas[count,3] = float(info[12]) - - count = count + 1 - - if(count == self.nl): - break - parFile.close() - - - -def get_integral(coordsI,symbolI,orbI,coordsJ,symbolJ,orbJ): - - parI = AOSA_Parameters(symbolI,orbI) - parJ = AOSA_Parameters(symbolJ,orbJ) - - RIJ = coordsJ - coordsI - #Expo - inte = 0.0 - for li in range(parI.nl): - for lj in range(parJ.nl): - sn = np.sign(parI.kappas[li])*np.sign(parJ.kappas[lj]) - kappaIJ = sn*(abs(parI.kappas[li]) + abs(parJ.kappas[lj]))/2 - gammaIJ = (parI.gammas[li,0] + parI.gammas[li,0])/2 - dIJ = RIJ + parJ.ds[lj,:] - parI.ds[li,:] - #dIJ = np.dot(RIJ,parJ.ds[lj,:]) + parJ.ds[lj,:] - parI.ds[li,:] - inte = inte + kappaIJ*np.exp(gammaIJ*np.linalg.norm(dIJ)) - - sval = inte - hval = inte*(parI.onsite + parJ.onsite)/2 - - return hval, sval - - - -def get_integral_v1(coordsI,coordsJ,parI,parJ): - - RIJ = coordsJ - coordsI - #Expo - inte = 0.0 - for li in range(parI.nl): - for lj in range(parJ.nl): - sn = np.sign(parI.kappas[li])*np.sign(parJ.kappas[lj]) - kappaIJ = sn*(abs(parI.kappas[li]) + abs(parJ.kappas[lj]))/2 - gammaIJ = (parI.gammas[li,0] + parJ.gammas[lj,0])/2 - dIJ = RIJ + parJ.ds[lj,:] - parI.ds[li,:] - inte = inte + kappaIJ*np.exp(gammaIJ*np.linalg.norm(dIJ)) - - sval = inte - hval = inte*(parI.onsite + parJ.onsite)/2 - - return hval, sval - - -def LoadBondIntegralParameters_H(TYPE_PAIR): - - TYPE_a = TYPE_PAIR[0] - TYPE_b = TYPE_PAIR[1] - - fss_sigma = np.zeros((8)) - fsp_sigma = np.zeros((8)) - fps_sigma = np.zeros((8)) - fpp_sigma = np.zeros((8)) - fpp_pi = np.zeros((8)) - - if TYPE_a == 'H': - if TYPE_b == 'H': - fss_sigma[0:8] = [-9.400000,-1.145903,-0.391777,0.000,0.000,0.750,3.500,4.000] - fsp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fps_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_pi[0:8] = [0,0,0,0,0,0,0,0] - Es = -6.4835 - Ep = 0.0 - U = 12.054683 - elif TYPE_b == 'C': - fss_sigma[0:8] = [-9.235812,-1.372683,-0.408433,0.0000,0.0000,1.1000,3.5000,4.000 ] - fsp_sigma[0:8] = [8.104851 ,-0.936099 ,-0.626219 ,0.000 ,0.000 ,1.100 ,3.500 ,4.000 ] - fps_sigma[0:8] = [8.104851 ,-0.936099 ,-0.626219 ,0.000 ,0.000 ,1.100 ,3.500 ,4.000 ] - fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_pi[0:8] = [0,0,0,0,0,0,0,0] - Es = 0; Ep = 0; U = 0 - elif TYPE_b == 'O': - fss_sigma[0:8] = [-12.189103 ,-1.800097 ,-0.325933 ,0.000 ,0.000 ,1.000 ,3.500 ,4.000 ] - fsp_sigma[0:8] = [9.518733 ,-1.333235 ,-0.39371 ,0.000 ,0.000 ,1.000 ,3.500 ,4.000 ] - fps_sigma[0:8] = [9.518733 ,-1.333235 ,-0.39371 ,0.000 ,0.000 ,1.000 ,3.500 ,4.000 ] - fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_pi[0:8] = [0,0,0,0,0,0,0,0] - Es = 0; Ep = 0; U = 0 - elif TYPE_b == 'N': - fss_sigma[0:8] = [-12.63103 ,-1.585597 ,-0.250969 ,0.00 ,0.000 ,1.00 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [9.837852 ,-1.23485 ,-0.324283 ,0.00 ,0.000 ,1.00 ,3.50 ,4.00 ] - fps_sigma[0:8] = [9.837852 ,-1.23485 ,-0.324283 ,0.00 ,0.000 ,1.00 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_pi[0:8] = [0,0,0,0,0,0,0,0] - Es = 0; Ep = 0; U = 0 - elif TYPE_a == 'C': - if TYPE_b == 'H': - fss_sigma[0:8] = [-9.235812 ,-1.372683 ,-0.408433 ,0.00 ,0.00 ,1.10 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [8.104851 ,-0.936099 ,-0.626219 ,0.00 ,0.00 ,1.10 ,3.50 ,4.00 ] - fps_sigma[0:8] = [8.104851 ,-0.936099 ,-0.626219 ,0.00 ,0.00 ,1.10 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_pi[0:8] = [0,0,0,0,0,0,0,0] - Es = 0; Ep = 0; U = 0 - elif TYPE_b == 'C': - fss_sigma[0:8] = [-9.197237 ,-1.60705 ,-0.535057 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [8.562436 ,-0.980182 ,-0.646929 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] - fps_sigma[0:8] = [8.562436 ,-0.980182 ,-0.646929 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [6.614756 ,-0.528591 ,-0.95146 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] - fpp_pi[0:8] = [-3.678302 ,-1.881668 ,-0.255951 ,0.00 ,0.00 ,1.40 ,3.50 ,4.00 ] - Es = -13.7199 - Ep = -5.2541 - U = 14.240811 - elif TYPE_b == 'O': - fss_sigma[0:8] = [-13.986685 ,-1.931973 ,-0.432011 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [10.718738 ,-1.389459 ,-0.182128 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fps_sigma[0:8] = [14.194791 ,-1.37165 ,-0.248285 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [8.622023 ,-0.557144 ,-0.938551 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fpp_pi[0:8] = [-5.327397 ,-2.19016 ,-0.089303 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - Es = 0; Ep = 0; U = 0; - elif TYPE_b == 'N': - fss_sigma[0:8] = [-7.409712 ,-1.940942 ,-0.219762 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [7.501761 ,-1.211169 ,-0.373905 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - fps_sigma[0:8] = [8.697591 ,-1.26724 ,-0.178484 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [6.95460 ,-1.188456 ,-0.808043 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - fpp_pi[0:8] = [-2.921605 ,-2.203548 ,-0.409424 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - Es = 0; Ep = 0; U = 0 - elif TYPE_a == 'O': - if TYPE_b == 'H': - fss_sigma[0:8] = [-12.189103 ,-1.800097 ,-0.325933 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [9.518733 ,-1.333235 ,-0.39371 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] - fps_sigma[0:8] = [9.518733 ,-1.333235 ,-0.39371 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_pi[0:8] = [0,0,0,0,0,0,0,0] - Es = 0; Ep = 0; U = 0 - elif TYPE_b == 'C': - fss_sigma[0:8] = [-13.986685 ,-1.931973 ,-0.432011 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [14.194791 ,-1.37165 ,-0.248285 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fps_sigma[0:8] = [10.718738 ,-1.389459 ,-0.182128 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [8.622023 ,-0.557144 ,-0.938551 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fpp_pi[0:8] = [-5.327397 ,-2.19016 ,-0.089303 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - Es = 0; Ep = 0; U = 0 - elif TYPE_b == 'O': - fss_sigma[0:8] = [-14.387756 ,-2.244278 ,-1.645605 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - fsp_sigma[0:8] = [13.699127 ,-1.602358 ,-0.114474 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - fps_sigma[0:8] = [13.699127 ,-1.602358 ,-0.114474 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - fpp_sigma[0:8] = [9.235469 ,-1.131474 ,-0.924535 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - fpp_pi[0:8] = [ -4.526526 ,-2.487174 ,-0.201464 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - Es = -23.9377 - Ep = -9.0035 - U = 11.8761410 - elif TYPE_b == 'N': - fss_sigma[0:8] = [-9.360078 ,-1.293118 ,-0.379415 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [10.723048 ,-0.454312 ,-0.916563 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fps_sigma[0:8] = [10.309052 ,-0.981652 ,-0.828497 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [9.259131 ,-0.734112 ,-1.023762 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - fpp_pi[0:8] = [-4.532623 ,-1.999631 ,-0.286275 ,0.00 ,0.00 ,1.20 ,3.50 ,4.00 ] - Es = 0; Ep = 0; U = 0 - elif TYPE_a == 'N': - if TYPE_b == 'H': - fss_sigma[0:8] = [-12.63103 ,-1.585597 ,-0.250969 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [9.837852 ,-1.23485 ,-0.324283 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] - fps_sigma[0:8] = [9.837852 ,-1.23485 ,-0.324283 ,0.00 ,0.00 ,1.00 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_pi[0:8] = [0,0,0,0,0,0,0,0] - Es = 0; Ep = 0; U = 0 - elif TYPE_b == 'C': - fss_sigma[0:8] = [-7.409712 ,-1.940942 ,-0.219762 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - fsp_sigma[0:8] = [8.697591 ,-1.26724 ,-0.178484 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - fps_sigma[0:8] = [7.501761 ,-1.211169 ,-0.373905 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - fpp_sigma[0:8] = [6.95460 ,-1.188456 ,-0.808043 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - fpp_pi[0:8] = [-2.921605 ,-2.203548 ,-0.409424 ,0.00 ,0.00 ,1.50 ,3.50 ,4.00 ] - Es = 0; Ep = 0; U = 0 - elif TYPE_b == 'O': - fss_sigma[0:8] = [-9.360078 ,-1.293118 ,-0.379415 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - fsp_sigma[0:8] = [10.309052 ,-0.981652 ,-0.828497 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - fps_sigma[0:8] = [10.723048 ,-0.454312 ,-0.916563 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - fpp_sigma[0:8] = [9.259131 ,-0.734112 ,-1.023762 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - fpp_pi[0:8] = [-4.532623 ,-1.999631 ,-0.286275 ,0.0 ,0.0 ,1.2 ,3.5 ,4.0 ] - Es = 0; Ep = 0; U = 0 - elif TYPE_b == 'N': - fss_sigma[0:8] = [-7.165811 ,-2.348869 ,-0.541905 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] - fsp_sigma[0:8] = [8.212268 ,-1.499123 ,-0.52644 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] - fps_sigma[0:8] = [8.212268 ,-1.499123 ,-0.52644 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] - fpp_sigma[0:8] = [7.102331 ,-1.252366 ,-0.552533 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] - fpp_pi[0:8] = [-2.828938 ,-2.376886 ,-0.560898 ,0.0 ,0.0 ,1.5 ,3.5 ,4.0 ] - Es = -18.5565 - Ep = -7.0625 - U = 17.3729 - else: - Es = 0; Ep = 0; U = 0 - fss_sigma[0:8] = [0,0,0,0,0,0,0,0] - fss_sigma[0:8] = [0,0,0,0,0,0,0,0] - fsp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fps_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_sigma[0:8] = [0,0,0,0,0,0,0,0] - fpp_pi[0:8] = [0,0,0,0,0,0,0,0] - - #Maybe better to pre-calculate? - fss_sigma = ScaleTail(fss_sigma) - fsp_sigma = ScaleTail(fsp_sigma) - fps_sigma = ScaleTail(fps_sigma) - fpp_sigma = ScaleTail(fpp_sigma) - fpp_pi = ScaleTail(fpp_pi) - - return fss_sigma,fsp_sigma,fps_sigma,fpp_sigma,fpp_pi,Es,Ep,U - - -def ScaleTail(A): - if abs(A[0]) < 1e-12: - A[8:13] = 0; - else: - R1 = A[6] - RCUT = A[7] - R1SQ = R1*R1 - RMOD = R1 - A[5] - POLYNOM = RMOD*(A[1] + RMOD*(A[2] + RMOD*(A[3] + A[4]*RMOD))) - SCL_R1 = exp(POLYNOM) - DELTA = RCUT - R1 - # Now we're using a 6th order polynomial: fitted to value, first, - # and second derivatives at R1 and R_cut - A[8] = SCL_R1 - RMOD = R1 - A[5] - DPOLY = A[1] + 2*A[2]*RMOD + 3*A[3]*RMOD*RMOD + 4*A[4]*RMOD*RMOD*RMOD - A[9] = DPOLY*SCL_R1 - DDPOLY = 2*A[2] + 6*A[3]*RMOD + 12*A[4]*RMOD*RMOD - A[10] = (DPOLY*DPOLY + DDPOLY)*SCL_R1/2 - DELTA2 = DELTA*DELTA - DELTA3 = DELTA2*DELTA - DELTA4 = DELTA3*DELTA - A[11] = (-1/DELTA3)*(3*A[10]*DELTA2 + 6*A[9]*DELTA + 10*A[8]) - A[12] = (1/DELTA4)*(3*A[10]*DELTA2 + 8*A[9]*DELTA + 15*A[8]) - A[13] = (-1/(10*DELTA3))*(6*A[12]*DELTA2 + 3*A[11]*DELTA + A[10]) - diff --git a/proxies/python/hamiltonian_random.py b/proxies/python/hamiltonian_random.py deleted file mode 100644 index 5acc2ac8..00000000 --- a/proxies/python/hamiltonian_random.py +++ /dev/null @@ -1,57 +0,0 @@ -"""random number generator -This code is only used to guide implemetations and understand which are the -basic elements needed to interface with the sedacs driver. -""" - -import numpy as np -import sys -from random_numbers import RandomNumberGenerator -from coordinates import get_random_coordinates - - -## Computes a Hamiltonian based on a single "s-like" orbitals per atom. -# @author Anders Niklasson -# @brief Computes a hamiltonian \f$ H_{ij} = (x/m)\exp(-(y/n + decay_{min}) |R_{ij}|^2))\f$, based on distances -# \f$ R_{ij} \f$. \f$ x,m,y,n,decay_{min} \f$ are fixed parameters. -# -# @param ndim Size of the Hamiltonian matrix -# @param verb Verbosity. If True is passed, information is printed -# @return H 2D numpy array of Hamiltonian elements -# -def get_random_hamiltonian(coords,verb=False): - """Construct simple toy s-Hamiltonian """ - norbs = len(coords[:,0]) - eps = 1e-9; decay_min = 0.1; m = 78; - a = 3.817632; c = 0.816371; x = 1.029769; n = 13; - b = 1.927947; d = 3.386142; y = 2.135545; - ham = np.zeros((norbs,norbs)) - if(verb): print("Constructing a simple Hamiltonian for the full system") - cnt = 0 - for i in range(0,norbs): - x = (a*x+c)%m #Hamiltonian parameters - y = (b*y+d)%n - for j in range(i,norbs): - dist = np.linalg.norm(coords[i,:]-coords[j,:]) - tmp = (x/m)*np.exp(-(y/n + decay_min)*(dist**2)) - ham[i,j] = tmp - ham[j,i] = tmp - ham[i,i] = x*y - return ham - - -if __name__ == "__main__": - n = len(sys.argv) - if n == 1: - print("Give the total number of atoms/orbitals. Example:\n") - print("python hamiltonian_random.py 100\n") - sys.exit(0) - else: - nats = int(sys.argv[1]) - - verb = True - - coords = get_random_coordinates(nats) - ham = get_random_hamiltonian(coords,verb=verb) - - print("Hamiltonian:",ham) - diff --git a/proxies/python/init_proxy.py b/proxies/python/init_proxy.py deleted file mode 100644 index 245ca5f1..00000000 --- a/proxies/python/init_proxy.py +++ /dev/null @@ -1,106 +0,0 @@ -"""Init proxy -This code is only used to guide implemetations and understand which are the -basic elements needed to interface with the sedacs driver. -""" - -import os -import sys -from sedacs.dev.io import src_path -import scipy.linalg as sp -import numpy as np -from proxies.python.proxy_global import read_ppots, bring_ppots, print_ppots, read_tbparams -from proxies.python.proxy_global import bring_ham_list, bring_dm_list, touch_ham_list, touch_dm_list, bring_accel_lib, touch_accel_lib -from proxies.python.proxy_global import bring_cublas_handle_list, bring_stream_list, touch_cublas_handle_list, touch_stream_list -from proxies.python.proxy_global import bring_dev_list, touch_dev_list -import ctypes - -__all__ = [ - "init_proxy_proxy","init_proxy_accelerators" -] - - -## Initialize proxy code -# @brief We will read all the parameters needed for the -# guest or proxy code to run. Every guest code will need to -# set up an initialization function and save parameters that -# need to be read from file only once. Bond integral parameter, -# pair potential, etc. will be stored in memory by the guest code. -# -def init_proxy_proxy(symbols,bas_per_atom): - - # We should really have this be defined in the engine or something, it's hard to follow where - # these things are intended to be happening. - - - #Some codes will have their own input file - #read_proxy_input_file() - #Read pair potentials - read_ppots("ppots.dat",symbols) # Not sure what this is but it probably isn't intended to be hardcoded. - print_ppots() - #Read tb parameters - filename = "aosa_parameters.dat" - read_tbparams(filename, symbols, bas_per_atom) - -def init_proxy_accelerators(nparts,norbs,rank,full_accel_path): - - try: - import ctypes - gpuLib = True - arch = "nvda" - pwd = os.getcwd() - - if arch == "nvda": - print("loading nvidia...") - lib = ctypes.CDLL("/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/nvda/libnvda.so") - if arch == "amd": - lib = ctypes.CDLL("/home/finkeljo/vescratch/sedacs-gpmdsp2/src/sedacs/gpu/amd/libamd.so") - - import gpuLibInterface as gpu - - except: - gpuLib = False - - #set devices based on rank - num_devices=2 #num devices per node - gpu.set_device(rank%num_devices,lib) - - touch_accel_lib(full_accel_path) - accel_lib=bring_accel_lib() - - size_of_double = 8 #bytes - size_of_float = 4 #bytes - size_of_half = 2 #bytes - matSize = norbs * norbs * size_of_double - matSize_f = norbs * norbs * size_of_float - matSize_h = norbs * norbs * size_of_half - - # initialize global list storing ham and dm device vars - touch_cublas_handle_list() - touch_stream_list() - touch_dev_list() - - cublas_handle_list=bring_cublas_handle_list() - stream_list=bring_stream_list() - dev_list=bring_dev_list() - - print("CALLING GPU DEVALLOC!!---------------------") - for i in range(0,1): - print("Allocating device mem, handles and streams ...") - cublas_handle_list.append(gpu.cublasInit(accel_lib)) - stream_list.append(gpu.set_stream(accel_lib)) - - - # if sp2 - for i in range(0,3): - print("Allocating device mem, handles and streams ...") - dev_list.append(gpu.dev_alloc(matSize, lib)) - for i in range(3,8): - print("Allocating device mem, handles and streams ...") - dev_list.append(gpu.dev_alloc(matSize_f, lib)) - for i in range(8,10): - print("Allocating device mem, handles and streams ...") - dev_list.append(gpu.dev_alloc(matSize_h, lib)) - for i in range(10,12): - print("Allocating pinned mem ...") - dev_list.append(gpu.host_alloc_pinned(matSize, lib)) - diff --git a/proxies/python/nonortho.py b/proxies/python/nonortho.py deleted file mode 100644 index 98aee9bf..00000000 --- a/proxies/python/nonortho.py +++ /dev/null @@ -1,35 +0,0 @@ -import numpy as np -import scipy.linalg as sp - -## Inverse overlap factorization -# @brief Constructs inverse overlap factors given the overlap matrix -# @param over Overlap matrix -# @param method If a particular needs to be used -# @param accel If an accelerater (hardwar/library/programing model) is used. -# @verb Verbosity switch -## -def get_xmat(over,method="Diag",accel="No",verb=False): - - if(verb): - print("In get_xmat ...") - - hdim = len(over[0,:]) - if(method == "Diag" and accel == "No"): - e,v = sp.eigh(over) - s = 1./np.sqrt(e) - zmat = np.zeros((hdim,hdim)) - for i in range(hdim): - zmat[i, :] = s[i] * v[:, i] - zmat = np.matmul(v, zmat) - elif method == "Cholesky": - pass - else: - print("ERROR: Method not implemented") - exit(0) - - if verb: - print("\nZmat Matrix") - print(zmat) - - return zmat - diff --git a/proxies/python/proxy_global.py b/proxies/python/proxy_global.py deleted file mode 100644 index 4bb16edb..00000000 --- a/proxies/python/proxy_global.py +++ /dev/null @@ -1,107 +0,0 @@ -#Set some global variables such -#as the parameters that are needed -#throughout the code - -import numpy as np -from proxies.python.hamiltonian_elements import AOSA_Parameter -import ctypes - -ppots = None -tbparams = None -d_ham_list = None -d_dm_list = None - -def read_ppots(filename,symbols): - myfile = open(filename,"r") - global ppots - ppots = np.zeros((len(symbols),len(symbols),4)) - - for lines in myfile: - info = lines.split() - if(len(info) > 1): - pairI = info[0] - pairJ = info[1] - for i in range(len(symbols)): - for j in range(len(symbols)): - if(symbols[i] == pairI and symbols[j] == pairJ): - for k in range(2,len(info)): - ppots[i,j,k-2] = float(info[k]) - ppots[j,i,:] = ppots[i,j,:] - myfile.close() - - - -def print_ppots(): - print(ppots) - -def bring_ppots(): - return ppots - -def bring_cublas_handle_list(): - return cublas_handle_list - -def bring_stream_list(): - return stream_list - -def bring_ham_list(): - return d_ham_list - -def bring_dm_list(): - return d_dm_list - -def bring_dev_list(): - return dev_list - -def touch_cublas_handle_list(): - global cublas_handle_list - cublas_handle_list=[] - -def touch_stream_list(): - global stream_list - stream_list=[] - -def touch_ham_list(): - global d_ham_list - d_ham_list=[] - -def touch_dm_list(): - global d_dm_list - d_dm_list=[] - -def touch_dev_list(): - global dev_list - dev_list=[] - -def touch_accel_lib(full_path): - global accel_lib - #lib = ctypes.CDLL("/home/finkeljo/sedacs-gpmdsp2/src/sedacs/gpu/nvda/libnvda.so") - accel_lib = ctypes.CDLL(str(full_path)+"/libnvda.so") - -def bring_accel_lib(): - return accel_lib - -def read_tbparams(filename,symbols,bas_per_atom): - - ntypes = len(symbols) - - global tbparams - - tbparams = [None]*ntypes - sOrbTypes = ["s"] - spOrbTypes = ["s","px","py","pz"] - - for i in range(ntypes): - sublist = [None]*bas_per_atom[i] - for j in range(bas_per_atom[i]): - if(bas_per_atom[i] == 1): - orbTypes = sOrbTypes - elif(bas_per_atom[i] == 4): - orbTypes = spOrbTypes - param = AOSA_Parameter(symbols[i],orbTypes[j],filename) - sublist[j] = param - tbparams[i] = sublist - - -def bring_tbparams(): - return tbparams - diff --git a/proxies/python/random_numbers.py b/proxies/python/random_numbers.py deleted file mode 100644 index 487b3b35..00000000 --- a/proxies/python/random_numbers.py +++ /dev/null @@ -1,69 +0,0 @@ -"""random number generator -This code is only used to guide implemetations and understand which are the -basic elements needed to interface with the sedacs driver. -""" - -import os -import sys - -__all__ = [ - "RandomNumberGenerator", -] - - -## Simple random number generator -# This is important in order to compare across codes -# written in different languages. -# -# To initialize: -# \verbatim -# myRand = rand(123) -# \endverbatim -# where the argument of rand is the seed. -# -# To get a random number between "low" and "high": -# \verbatim -# rnd = myRand.get_rand(low,high) -# \endverbatim -# -class RandomNumberGenerator: - """To generate random numbers.""" - - def __init__(self, seed): - self.a = 321 - self.b = 231 - self.c = 13 - self.seed = seed - self.status = seed * 1000 - - def generate(self, low, high): - """Get a random real number in between low and high.""" - w = high - low - place = self.a * self.status - place = int(place / self.b) - rand = (place % self.c) / self.c - place = int(rand * 1000000) - self.status = place - rand = low + w * rand - - return rand - - -if __name__ == "__main__": - n = len(sys.argv) - if n == 1: - print("Give the total number of vector elements. Example:\n") - print("python random.py 100\n") - sys.exit(0) - else: - nel = int(sys.argv[1]) - - verb = True - - rnd = RandomNumberGenerator(1234) - - for i in range(nel): - print(i,rnd.generate(0,1)) - - - diff --git a/proxies/vars b/proxies/vars deleted file mode 100644 index 51759b63..00000000 --- a/proxies/vars +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -THIS_PATH=`pwd` -MOD_PATH=$THIS_PATH/../mods -LATTE_PATH=$THIS_PATH/../latte -PROXYA_PATH=$THIS_PATH/python_proxy -export PYTHONPATH=$PYTHONPATH:$MOD_PATH:$LATTE_PATH:$PROXYA_PATH -export PYTHONWARNINGS="ignore:Unverified HTTPS request" - -GPU_PATH=$THIS_PATH/../src/sedacs/gpu -export PYTHONPATH=$PYTHONPATH:$GPU_PATH - diff --git a/src/sedacs/__init__.py b/src/sedacs/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/sedacs/driver/classical.py b/src/sedacs/driver/classical.py deleted file mode 100644 index 03f90c25..00000000 --- a/src/sedacs/driver/classical.py +++ /dev/null @@ -1,47 +0,0 @@ -import numpy as np - -from proxies.python.first_level import get_random_coordinates -from sedacs.force_fields import get_classical_forces -from sedacs.integrate import do_timestep -from sedacs.periodic_table import PeriodicTable - -__all__ = ["do_MD"] - - -def do_MD(init_coords, types, symbols, latticeVectors, nl, nlTrX, nlTrY, nlTrZ, init_vels, dt, num_steps, gamma=0.1): - nats = len(init_coords[:, 0]) - init_coords = get_random_coordinates(nats) - for i in range(2): - symbols[i] = "C" - p = PeriodicTable() - atomicnumbers = np.zeros(nats, dtype=int) - for i in range(nats): - atomicnumbers[i] = p.get_atomic_number(symbols[types[i]]) - masses = p.mass[atomicnumbers[:]] - - masses3d = np.zeros((nats, 3)) - masses3d[:, 0] = masses[:] - masses3d[:, 1] = masses[:] - masses3d[:, 2] = masses[:] - - masses3d[:, :] = 40.0 - - print("doing MD...") - coords = init_coords - vels = init_vels - gamma = 0.1 - - myFile = open("traj.xyz", "w") - for i in range(0, num_steps): - forces = get_classical_forces( - coords, types, symbols, latticeVectors, nl, nlTrX, nlTrY, nlTrZ, "HarmonicAll", verb=False - ) - - coords, vels = do_timestep(coords, vels, forces, masses3d, gamma, dt) - if i % 100 == 0: - print(nats, file=myFile) - print("frame", i, file=myFile) - for j in range(nats): - print(symbols[types[j]], coords[j, 0], coords[j, 1], coords[j, 2], file=myFile) - - print(coords[0, :]) diff --git a/src/sedacs/driver/energy_and_forces.py b/src/sedacs/driver/energy_and_forces.py deleted file mode 100644 index 99663c38..00000000 --- a/src/sedacs/driver/energy_and_forces.py +++ /dev/null @@ -1,164 +0,0 @@ -"""Graph adaptive self-consistenf charge solver""" - -import time - -from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph -from sedacs.graph_partition import get_coreHaloIndices, graph_partition -from sedacs.hamiltonian import get_hamiltonian -from sedacs.density_matrix import get_density_matrix -from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates -from sedacs.mpi import collect_and_sum_matrices -from sedacs.system import System, extract_subsystem, get_hindex -from sedacs.coulombic import get_coulvs, build_coul_ham, get_coulombic_forces -from sedacs.charges import get_charges, collect_charges -from sedacs.tbforces import get_tb_forces -from sedacs.message import status_at, error_at, warning_at -from sedacs.mixer import diis_mix -import numpy as np -try: - from mpi4py import MPI - is_mpi_available = True -except ModuleNotFoundError: - is_mpi_available = False - -__all__ = ["get_occ_singlePoint", "get_adaptiveSCFDM_force"] - - -## Single point calculation -# @brief Construct a connectivity graph based on constructing density matrices -# of parts of the system. -# -def get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex): - # computing DM for core+halo part - # - partsPerRank = int(sdc.nparts / numranks) - partIndex1 = rank * partsPerRank - partIndex2 = (rank + 1) * partsPerRank - graphOnRank = None - chargesOnRank = None - for partIndex in range(partIndex1, partIndex2): - print("Rank, part", rank, partIndex) - subSy = System(len(partsCoreHalo[partIndex])) - subSy.symbols = sy.symbols - tic = time.perf_counter() - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) - toc = time.perf_counter() - print("Time for extract_subsystem", toc - tic, "(s)") - partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" - write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates( - "subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols - ) - tic = time.perf_counter() - - #ham0, over = get_hamiltonian(eng, subSy.coords, subSy.types, subSy.symbols, verbose=False, get_overlap=True) - ham0 = get_hamiltonian(eng, subSy.coords, subSy.types, subSy.symbols, verbose=False, get_overlap=False) - - #Get some electronic structure elements for the sybsystem - #This could eventually be computed in the engine if no basis set is - #provided in the SEDACS input file. - subSy.norbs, subSy.orbs, subSy.hindex, subSy.numel, subSy.znuc = get_hindex(sdc.orbs, subSy.symbols, subSy.types,verb=True) - - #ham = build_coul_ham(ham0,sy.coulvs[partsCoreHalo[partIndex]],False,subSy.hindex,overlap=over,verb=True) - ham = build_coul_ham(ham0,sy.coulvs[partsCoreHalo[partIndex]],False,subSy.hindex,overlap=None,verb=True) - - toc = time.perf_counter() - print("Time for get_hamiltonian", toc - tic, "(s)") - norbs = subSy.norbs # We have as many orbitals as columns in the Hamiltonian - nocc = int(float(subSy.numel) / 2.0) # Get the total occupied orbitals - tic = time.perf_counter() - #rho = get_density_matrix(eng,ham,nocc=nocc,mu=None,elect_temp=0.0,overlap=over,verb=False) - rho = get_density_matrix(eng,ham,nocc=nocc,mu=None,elect_temp=0.0,overlap=None,verb=False) - #chargesInPart = get_charges(rho,subSy.znuc,subSy.types,parts[partIndex],subSy.hindex,over=over,verb=True) - chargesInPart = get_charges(rho,subSy.znuc,subSy.types,parts[partIndex],subSy.hindex,over=None,verb=True) - print("TotalCharge in part",partIndex,sum(chargesInPart)) - print("Charges in part",chargesInPart) - - toc = time.perf_counter() - print("Time to get_densityMatrix", toc - tic, "(s)") - # Building a graph from DMs - graphOnRank = collect_graph_from_rho( - graphOnRank, rho, sdc.gthresh, sy.nats, sdc.maxDeg, parts[partIndex], hindex - ) - - chargesOnRank = collect_charges(chargesOnRank,chargesInPart,parts[partIndex],sy.nats,verb=True) - - - if (is_mpi_available and numranks > 1): - fullGraphRho = collect_and_sum_matrices(graphOnRank, rank, numranks, comm) - fullCharges = collect_and_sum_vector() - comm.Barrier() - else: - fullGraphRho = graphOnRank - fullCharges = chargesOnRank - - return fullGraphRho, fullCharges - - -def get_adaptiveSCFDM_force(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): - fullGraph = graphNL - - #Iitial guess for the excess ocupation vector. This is the negative of - #the charge! - charges = np.zeros(sy.nats) - chargesOld = np.zeros(sy.nats) - chargesIn = None - chargesOld = None - chargesOut = None - for gscf in range(sdc.numAdaptIter): - msg = "Graph-adaptive iteration" + str(gscf) - status_at("get_adaptiveSCFDM",msg) - # Partition the graph - parts = graph_partition(fullGraph, sdc.partitionType, sdc.nparts, False) - njumps = 1 - partsCoreHalo = [] - numCores = [] - print("\nCore and halos indices for every part:") - for i in range(sdc.nparts): - coreHalo, nc, nh = get_coreHaloIndices(parts[i], fullGraph, njumps) - partsCoreHalo.append(coreHalo) - numCores.append(nc) - print("coreHalo for part", i, "=", coreHalo) - - sy.coulvs = get_coulvs(charges,sy.coords) - #print(sy.coulvs) - - fullGraphRho,charges = get_singlePoint_charges(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex) - - scfError, charges, chargesOld, chargesIn, chargesOut = diis_mix(charges,chargesOld,chargesIn,chargesOut,gscf,False) - - fullGraph = add_graphs(fullGraphRho, graphNL) - print("Charges",charges) - print("ChargesOld",chargesOld) - print("SCF ERR =",scfError) - print("TotalCharge",sum(charges)) - print("All variables",dir()) - - if(scfError < sdc.scfTol): - status_at("get_adaptiveSCFDM","SCF converged with SCF error = "+str(scfError)) - break - - if(gscf == sdc.numAdaptIter - 1): - warning_at("get_adaptiveSCFDM","SCF did not converged ... ") - - #Get forces after SCF convergence. - - #Coulombic forces will be computed for the whole system - forces = get_coulombic_forces(charges,sy.coords,sy.types,sy.symbols,factor=14.39964377014,field=None) - forces = forces[:,:] + forces_tb[:,:] - print(forces) - exit(0) - - - - AtToPrint = 0 - - subSy = System(fullGraphRho[AtToPrint, 0]) - subSy.symbols = sy.symbols - subSy.coords, subSy.types = extract_subsystem( - sy.coords, sy.types, sy.symbols, fullGraph[AtToPrint, 1 : fullGraph[AtToPrint, 0] + 1] - ) - - if rank == 0: - write_pdb_coordinates("subSyG_fin.pdb", subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates("subSyG_fin.xyz", subSy.coords, subSy.types, subSy.symbols) diff --git a/src/sedacs/driver/graph_adaptive_MASTER.py b/src/sedacs/driver/graph_adaptive_MASTER.py deleted file mode 100644 index 9c9f06bf..00000000 --- a/src/sedacs/driver/graph_adaptive_MASTER.py +++ /dev/null @@ -1,876 +0,0 @@ -"""Graph adaptive solver""" -import warnings -warnings.simplefilter("ignore", FutureWarning) -import os -os.environ["PYTHONWARNINGS"] = "ignore:Unverified HTTPS request" -import time -import torch -print('num_threads',torch.get_num_threads()) -from sedacs.density_matrix import get_density_matrix, get_initDM, get_dmErrs, get_dmTrace -from sedacs.density_matrix_renorm import get_density_matrix_renorm -from sedacs.energy import get_eNuc, get_eTot -from sedacs.molSysData import get_molSysData -from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates -from sedacs.graph_partition import get_coreHaloIndices, graph_partition -from sedacs.hamiltonian import get_hamiltonian -from sedacs.mpi import collect_and_sum_matrices -from sedacs.system import System, extract_subsystem -from sedacs.evals import get_eVals -from sedacs.chemical_potential import get_mu -from sedacs.graph import get_initial_graph, update_dm_contraction, get_ch_graph, get_maskd, collect_graph_from_rho, add_graphs, print_graph, add_mult_graphs -from sedacs.interface_pyseqm import get_coreHalo_ham_inds, get_diag_guess_pyseqm, pyseqmObjects, get_molecule_pyseqm -import itertools -import sys -import psutil -import pickle -import socket -import copy -from seqm.seqm_functions.pack import pack -import gc -import numpy as np -try: - from mpi4py import MPI - is_mpi_available = True -except ModuleNotFoundError: - is_mpi_available = False -__all__ = ["get_singlePoint", "get_adaptiveDM"] - -## Single point calculation -# @brief Construct a connectivity graph based on constructing density matrices of parts of the system. -def get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, gpu_comm, parts, partsCoreHalo, sy, hindex, mu0, - molecule_whole, P_contr, graph_for_pairs, graph_maskd): - ''' - Function calculates CH hamiltonians (ham), then eVals and dVals on each rank of gpu_comm. - Then it gathers everything on global rank 0, computes chemical potential mu0. - sdc: - eng: - partsPerGPU: number of CH processed by one rank. - partsPerNode: number of CH processed on one node. - node_id: - node_rank: local rank on a node. E.g., for [0,1,2,3] [4,5,6,7], global rank 4 is local rank 0. - rank: global rank - gpu_comm: global communicator for ranks with GPU. - If on CPU, all ranks are involved. gpu_comm is identical to master comm. - If on GPU and num_gpus (per node) == node_numranks, gpu_comm is identical to master comm. - If on GPU and num_gpus (per node) <= node_numranks, gpu_comm is different form master comm. For example, 8 ranks on two nodes [0,1,2,3] and [4,5,6,7] with 2 GPUs per node. In that case, only ranks [0,1] and [4,5] are involved. They, however, become [0,1] [2,3] within gpu_comm. - parts: list of cores - partsCoreHalo: list of core+halo - sy: - hindex: - mu0: chemical potential - molecule_whole: pyseqm molecule object - P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) - graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size - graph_maskd: diagonal mask for P_contr - ''' - ### Instead of this: - # partIndex1 = rank * partsPerRank - # partIndex2 = (rank + 1) * partsPerRank - ### we do this because there might be fewer GPUs per node than ranks per node. - partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode - partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode - - if sdc.UHF: # open shell - dValOnRank = np.empty((2, 0)) - eValOnRank = np.empty((2, 0)) # this will store flattened eVals for all CH. 1d np array. - else: # closed shell - dValOnRank = np.array([]) # this will store flattened dVals for all CH. 1d np array. For mu0 - eValOnRank = np.array([]) # this will store flattened eVals for all CH. 1d np array. - eValOnRank_list = [] # this will store eVals arranged per CH. List of 1D torch tensors. For mu0 and later for dm - dValOnRank_list = [] # this will store dVals arranged per CH. List of 1D torch tensors. For mu0 and later for dm - Q_list = [] # Eigenvectors for each part - Nocc_list = [] # Number of occupied orbitals for each part. It's not used in thermal HF but lets keep this option. - core_indices_in_sub_expanded_list = [] # Indices of core hamiltonian in core+halo hamiltonian. Might be useful when core and halo atoms are shuffled to stay sorted, like in PySEQM. - NH_Nh_Hs_list = [] # list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham, nocc] - EELEC = 0.0 # this will sum electronic energy of CHs on the current rank - for partIndex in range(partIndex1, partIndex2): - ticHam = time.perf_counter() - #print("\n Rank, part", rank, partIndex) - subSy = System(len(partsCoreHalo[partIndex])) - subSy.symbols = sy.symbols - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) - - subSyCore = System(len(parts[partIndex])) - subSyCore.symbols = sy.symbols - subSyCore.coords,subSyCore.types = extract_subsystem(sy.coords,sy.types,sy.symbols,parts[partIndex]) - - if sdc.writeGeom: - partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" - write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) - write_xyz_coordinates("subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols) - partCoreFileName = "CoreSubSy"+str(rank)+"_"+str(partIndex)+".pdb" - write_pdb_coordinates(partCoreFileName,subSyCore.coords,subSyCore.types,subSyCore.symbols) - write_xyz_coordinates("CoreSubSy"+str(rank)+"_"+str(partIndex)+".xyz",subSyCore.coords,subSyCore.types,subSyCore.symbols) - - - core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub = \ - get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy, device=P_contr.device) - - # Get CH hamiltonian. If on GPU, temporarily redefine molecule_whole on GPU (its faster than transfering) and send P_contr to GPU. - # The idea is to have P_contr in shared memory on each node, then update in parallel on node 0. - # If initialized on GPU, then we'll need to transfer it back into shared memory CPU to update in parallel. Ideally, this needs to be fixed. - ham_timing = {} - if sdc.scfDevice == 'cuda': - device = 'cuda:{}'.format(node_rank) - tmp_molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] - ham, eElec = get_hamiltonian(sdc, eng, subSy.coords, subSy.types, subSy.symbols, - parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P_contr.to(device), graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, verbose=False) - del tmp_molecule_whole - else: - device = 'cpu' - ham, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, - parts[partIndex], partsCoreHalo[partIndex], molecule_whole, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, verbose=False) - EELEC += eElec - - - #print("TOT {:>8.3f} (s)".format(time.perf_counter() - tic)) - - # Get eVals, dVals - tic = time.perf_counter() - norbs = subSy.nats - occ = int(float(norbs) / 2.0) # Get the total occupied orbitals. Not used. - coreSize = len(parts[partIndex]) - eVals, dVals, Q, NH_Nh_Hs = get_eVals(eng, sdc, sy, ham, subSy.coords, subSy.symbols, subSy.types, sdc.Tel, mu0, - core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub, - coreSize, subSy, subSyCore, parts[partIndex], partsCoreHalo[partIndex], verbose=False) - del ham - - if sdc.UHF: - dValOnRank = np.append(dValOnRank, dVals, axis=1) - eValOnRank = np.append(eValOnRank, eVals.cpu().numpy(), axis=1) - else: - dValOnRank = np.append(dValOnRank, dVals) - eValOnRank = np.append(eValOnRank, eVals.cpu().numpy()) - eValOnRank_list.append(eVals.cpu()) - dValOnRank_list.append(dVals) - Q_list.append(Q.cpu()) - core_indices_in_sub_expanded_list.append(core_indices_in_sub_expanded) - NH_Nh_Hs_list.append(NH_Nh_Hs) - Nocc_list.append(occ) - #print("| t eVals/dVals {:>9.4f} (s)".format(time.perf_counter() - tic)) - ham_timing['eVals/dVals'] = time.perf_counter() - tic - ham_timing['TOT'] = time.perf_counter() - ticHam - #ham_timing_formatted = {key: f"{value:8.3f}" for key, value in ham_timing.items()} - formatted_string = " | ".join(f"{key} {value:8.3f}" for key, value in ham_timing.items()) - print('Rank', rank, 'part', partIndex, ':', formatted_string) - - - ########## - ########## - # tic = time.perf_counter() - # if rank != 0: - # gpu_comm.send(Q_list, dest=0, tag=0) - # else: - # Q_LIST = [Q_list] - # for i in range(1, gpu_comm.Get_size()): - # Q_LIST.append(gpu_comm.recv(source=i, tag=0)) - # print("Time Q_LIST send/recv {:>9.4f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - torch.save(Q_list, 'Q/Q_list_{}.pt'.format(rank)) #### oldR - print("Time to save Q_list {:>9.4f} (s)".format(time.perf_counter() - tic), rank) - - - tic = time.perf_counter() - full_dVals = None - full_eVals = None - eValOnRank_size = np.array(eValOnRank.shape[-1], dtype=int) - eValOnRank_SIZES = None - recvcounts = None - if rank == 0: - eValOnRank_SIZES = np.empty(gpu_comm.Get_size(), dtype=int) - - gpu_comm.Gather(eValOnRank_size, eValOnRank_SIZES, root=0) - if rank == 0: - if sdc.UHF: - full_dVals = np.empty((2, np.sum(eValOnRank_SIZES)), dtype=eValOnRank.dtype) - recvcounts = [2 * size for size in eValOnRank_SIZES] - else: - full_dVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) - full_eVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) #### oldR - - if sdc.UHF: - dValOnRank_flat = dValOnRank.flatten() - gpu_comm.Gatherv( - sendbuf=dValOnRank_flat, # Flattened 1D send buffer - recvbuf=(full_dVals, recvcounts), - root=0) - else: - gpu_comm.Gatherv(dValOnRank, [full_dVals, eValOnRank_SIZES], root=0) - gpu_comm.Gatherv(eValOnRank, [full_eVals, eValOnRank_SIZES], root=0) #### oldR - - eVal_LIST = gpu_comm.gather(eValOnRank_list, root=0) - dVal_LIST = gpu_comm.gather(dValOnRank_list, root=0) - NH_Nh_Hs_LIST = gpu_comm.gather(NH_Nh_Hs_list, root=0) - core_indices_in_sub_expanded_LIST = gpu_comm.gather(core_indices_in_sub_expanded_list, root=0) - Nocc_LIST = gpu_comm.gather(Nocc_list, root=0) - - ####### - ####### - if rank == 0: - Q_LIST = [] - for i in range(gpu_comm.Get_size()): - Q_LIST.append(torch.load('Q/Q_list_{}.pt'.format(i))) - - # Flatten the nested list of lists into a single list of tensors. One tensor per CH. - eVal_LIST = list(itertools.chain(*eVal_LIST)) - dVal_LIST = list(itertools.chain(*dVal_LIST)) - Q_LIST = list(itertools.chain(*Q_LIST)) - NH_Nh_Hs_LIST = list(itertools.chain(*NH_Nh_Hs_LIST)) - core_indices_in_sub_expanded_LIST = list(itertools.chain(*core_indices_in_sub_expanded_LIST)) - Nocc_LIST = list(itertools.chain(*Nocc_LIST)) - else: - Q_LIST = None - if node_rank == 0: print("| t commLists {:>9.4f} (s)".format(time.perf_counter() - tic), rank) - - if rank == 0: - tic = time.perf_counter() - ####### - ####### - mu0 = get_mu(mu0, full_dVals, full_eVals, sdc.Tel, sy.numel/2) #### oldR - - #mu0 = get_mu(mu0, np.concatenate(dVal_LIST, axis = -1), torch.cat(eVal_LIST, dim = -1), sdc.Tel, sy.nocc) # chemical potential calculation - print("Time mu0 {:>9.4f} (s)".format(time.perf_counter() - tic)) - - return EELEC, eVal_LIST, Q_LIST, NH_Nh_Hs_LIST, core_indices_in_sub_expanded_LIST, Nocc_LIST, mu0 - -def get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, P, P_contr, graph_for_pairs, graph_maskd): - ''' - Function calculates forces on ALL atoms via backprop through an electronic energy a CH. Updates forces in-place. - Electronic energy is obtained from a "rectangular" hamiltonian. - sdc: - eng: - partsPerGPU: number of CH processed by one rank. - partsPerNode: number of CH processed on one node. - node_id: - node_rank: local rank on a node. E.g., for [0,1,2,3] [4,5,6,7], global rank 4 is local rank 0. - rank: global rank - If on CPU, all ranks are involved. gpu_comm is identical to master comm. - If on GPU and num_gpus (per node) == node_numranks, gpu_comm is identical to master comm. - If on GPU and num_gpus (per node) <= node_numranks, gpu_comm is different form master comm. For example, 8 ranks on two nodes [0,1,2,3] and [4,5,6,7] with 2 GPUs per node. In that case, only ranks [0,1] and [4,5] are involved. They, however, become [0,1] [2,3] within gpu_comm. - parts: list of cores - partsCoreHalo: list of core+halo - sy: - hindex: - forces: array of atomic forces (n_atoms, 3) - molecule_whole: pyseqm molecule object - P: legacy, none - P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) - graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size - graph_maskd: diagonal mask for P_contr - ''' - partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode - partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode - EELEC = 0.0 - for partIndex in range(partIndex1, partIndex2): - #print("Rank, part", rank, partIndex) - subSy = System(len(partsCoreHalo[partIndex])) - subSy.symbols = sy.symbols - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) - - _, core_indices_in_sub_expanded, _ = \ - get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy) - - tic = time.perf_counter() - ham_timing = {} - tmp_molecule_whole = copy.deepcopy(molecule_whole) - if sdc.doForces: - tmp_molecule_whole.coordinates.requires_grad_(True) - f, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, - parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, ham_timing, doForces = True, verbose=False) - del tmp_molecule_whole - - forces += f - EELEC += eElec - #print("EelecCH {:>7.3f} eV |".format(eElec.item()), end=" ") - ham_timing['TOT'] = time.perf_counter() - tic - formatted_string = " | ".join(f"{key} {value:8.3f}" for key, value in ham_timing.items()) - print('Rank', rank, 'part', partIndex, ':', formatted_string, "|| EelecCH {:>7.3f} eV ||".format(eElec.item())) - del eElec, subSy, f - #print("TOT", time.perf_counter() - tic, "(s)") - return EELEC - -def get_singlePointDM(sdc, eng, rank, node_numranks, node_comm, parts, partsCoreHalo, sy, hindex, mu0, P_contr, graph_for_pairs, - eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list): - ''' - Function updates P_contr with core columns of CH dm. This is done in parallel on ALL local ranks of node 0. On CPU. That's slow. - sdc: - eng: - rank: global rank - node_numranks: nomber of ranks on a node (loca ranks) - node_comm: local comminicator on a node - parts: list of cores - partsCoreHalo: list of core+halo - sy: - hindex: orbital index for each atom in the system - mu0: chemical potential - P_contr: contracted dm. (sy.nats, sdc.maxDeg, 4,4) - graph_for_pairs: graph of communities. E.g. graph_for_pairs[i] is a whole CH community in which atom i is a core atom, including itself. graph_for_pairs[i][0] is a community size - eValOnRank_list: eigenvalues of CHs. Here, for all CHs. - Q_list: eigenvectors of CHs. Here, only those used by this rank are present. - NH_Nh_Hs_list: list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham]. Here, for all CHs. - core_indices_in_sub_expanded_list: indices of core columns in CH. E.g., CH[i] contains atoms [0,1,2,3], core atoms are [1,3], 4 AOs per atom. Then, core_indices_in_sub_expanded_list[i] is [4,5,6,7, 12,13,14,15]. - ''' - if rank == 0: print("eElec: {:>10.8f} | \u0394E| {:>10.8f}".format(sdc.EelecNew, abs(sdc.EelecNew - sdc.EelecOld)),) - sdc.EelecOld = sdc.EelecNew - - partsPerRank = int(sdc.nparts / node_numranks) - partIndex1 = rank * partsPerRank - partIndex2 = (rank + 1) * partsPerRank - graphOnRank = None - - maxDifList = [] - sumDifTot = 0 - P_contr_maxDifList = [] - P_contr_sumDifTot = 0 - for partIndex, i in zip(range(partIndex1,partIndex2), range(partsPerRank)): - # this will calculate the DM in subsys and update the whole DM - # rho_ren is a dm contructed with electronic temperature. Its shaped into 4x4 blocks, even for hydrogen atoms, as required by pyseqm - rho_ren, maxDif, sumDif = get_density_matrix_renorm(sdc, eng, sdc.Tel, mu0, P_contr, graph_for_pairs, - eValOnRank_list[partIndex], Q_list[i], NH_Nh_Hs_list[partIndex], core_indices_in_sub_expanded_list[partIndex]) - indices_in_sub = np.linspace(0,len(partsCoreHalo[partIndex])-1, len(partsCoreHalo[partIndex]), dtype = eng.np_int_dt) # indices for CH dm. [0:n_atoms] - core_indices_in_sub = indices_in_sub[np.isin(partsCoreHalo[partIndex], parts[partIndex])] # core column blocks in CH dm (assuming its shaped as [n_atoms, n_atoms, 4, 4]) - P_contr_maxDif = [] - P_contr_sumDif = 0 - if sdc.UHF: # open shell - ### vectorized. Faster for larger cores. - max_len = graph_for_pairs[parts[partIndex][0]][0] - - TMP1 = P_contr[:, :max_len,parts[partIndex]] # get part of P_contr that corresponds to cores of current CH - TMP2 = rho_ren.reshape((1, 2, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ - .transpose(3,4).reshape(2, (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4).transpose(3,4).transpose(1,2)[:,:,core_indices_in_sub] # get core column blocks of CH - P_contr_maxDif.append(torch.max(torch.abs(TMP1 - TMP2)).cpu().numpy()) # max difference in dm elements - P_contr_sumDif += torch.sum(torch.abs(TMP1 - TMP2)).cpu().numpy() # sum of abs differences between new and old dm. - P_contr[:,:max_len,parts[partIndex]] = (1-sdc.alpha)*TMP1 + sdc.alpha * TMP2 # update dm - - rho_ren = pack(rho_ren[0]+rho_ren[1], NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1]) # packing rho_ren from 4x4 blocks into normal form based on number of AOs per atom. - - else: - ### vectorized. Faster for larger cores. - max_len = graph_for_pairs[parts[partIndex][0]][0] - TMP1 = P_contr[:max_len,parts[partIndex]] # get part of P_contr that corresponds to cores of current CH - TMP2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1], 4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ - .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4).transpose(2,3).transpose(0,1)[:,core_indices_in_sub] # get core column blocks of CH - P_contr_maxDif.append(torch.max(torch.abs(TMP1 - TMP2)).cpu().numpy()) # max difference in dm elements - P_contr_sumDif += torch.sum(torch.abs(TMP1 - TMP2)).cpu().numpy() # sum of abs differences between new and old dm. - P_contr[:max_len,parts[partIndex]] = (1-sdc.alpha)*TMP1 + sdc.alpha * TMP2 # update dm - - ### Loop. Faster for many small cores (?). - # for i in range(len(parts[partIndex])): - # tmp1 = P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] - # tmp2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ - # .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4)[core_indices_in_sub[i]].transpose(1,2) - - # P_contr_maxDif.append(torch.max(torch.abs(tmp1 - tmp2)).cpu().numpy()) - # P_contr_sumDif += torch.sum(torch.abs(tmp1 - tmp2)).cpu().numpy() - # P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] = (1-sdc.alpha)*tmp1 + sdc.alpha*tmp2 - # del tmp1, tmp2 - - rho_ren = pack(rho_ren, NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1]) # packing rho_ren from 4x4 blocks into normal form based on number of AOs per atom. - - - P_contr_maxDif = max(P_contr_maxDif) - P_contr_maxDifList.append(P_contr_maxDif) - P_contr_sumDifTot += P_contr_sumDif - maxDifList.append(maxDif) - try: - sumDifTot += sumDif - except: - sumDifTot += 0 - graphOnRank = collect_graph_from_rho(graphOnRank, rho_ren, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex], hindex, verb=False) # get connectivity graph for the dm of current CH - del rho_ren - - print('HERE_DM_1') - print(" MAX |\u0394DM_ij|: {:>10.7f} at SubSy {:>5d}".format(max(P_contr_maxDifList), np.argmax(P_contr_maxDifList))) - print(" \u03A3 |\u0394DM_ij|: {:>10.7f}".format(P_contr_sumDifTot)) - return graphOnRank - -def print_memory_usage(rank, node_rank, message): - process = psutil.Process() - mem_info = process.memory_info() - print(f"{message} | Rank: {rank}, Node Rank: {node_rank}, Memory Usage: {mem_info.rss / (1024 ** 2):.2f} MB") -def tensor_size(tensor): - return tensor.element_size() * tensor.nelement() / (1024 ** 2) -# Collect all tensors in the current environment -def get_tensors(): - for obj in gc.get_objects(): - try: - if torch.is_tensor(obj): - yield obj - except Exception as e: - pass -def print_attribute_sizes(obj): - for attr in dir(obj): - # Skip private or callable attributes - if attr.startswith("_") or callable(getattr(obj, attr)): - continue - attribute = getattr(obj, attr) - size_bytes = attribute.nbytes if isinstance(attribute, np.ndarray) else attribute.element_size() * attribute.nelement() if isinstance(attribute, torch.Tensor) else sys.getsizeof(attribute) - size_mb = size_bytes / (1024 ** 2) # Convert bytes to MB - print(f"{attr}: {size_mb:.2f} MB") - - -def get_adaptiveDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): - ''' - The main driver function. It initializes supplementary comms, dm, graphs, performs scf cycle with graph and dm updates, and then computes forces. - sdc: - eng: - comm: master communicator - rank: global rank - numranks: number of global ranks - sy: - hindex: orbital index for each atom in the system - graphNL: initial connectivity graph - ''' - t_INIT = time.perf_counter() # time for scf initialization - tic = time.perf_counter() - sdc.EelecOld = 0.0 - - eng.use_pyseqm_lt = False # flag for using pyseqm "large tensors", e.g. ij vectors, masks, etc. These are extremely large for large systems. - # If False, pyseqm won't compute them and sedacs will coumpute only necessary subparts. - sdc.use_pyseqm_lt = eng.use_pyseqm_lt - - eng.reconstruct_dm = False # Flag for reconstructing the whole dm. For debug purposes only. - sdc.reconstruct_dm = eng.reconstruct_dm - - ### SETUP COMMS ### - node_comm = comm.Split_type(MPI.COMM_TYPE_SHARED) # local communicator for ranks on a node - node_rank = node_comm.Get_rank() # Local rank on a node - node_numranks = node_comm.Get_size() # Communicator size on a node - - node_name = socket.gethostname() - node_names = comm.allgather(node_name) - - unique_nodes = list(set(node_names)) - num_nodes = len(unique_nodes) # Total number of unique nodes - node_id = int(rank/node_numranks) - - # Get primary ranks on each node. E.g. when running 16 ranks on two nodes, these are ranks 0 and 8. - primary_rank = None - if node_rank == 0: - primary_rank = rank # Global rank of the primary rank on each node - # Gather the primary ranks from each node - primary_ranks = comm.allgather(primary_rank) - primary_ranks = [r for r in primary_ranks if r is not None] # Filter out None values - color = 0 if rank in primary_ranks else MPI.UNDEFINED - primary_comm = comm.Split(color=color, key=rank) # Communicator for primary ranks - - device = 'cpu' - if sdc.scfDevice == 'cuda' and sdc.numGPU == -1: - num_gpus = torch.cuda.device_count() - elif sdc.scfDevice == 'cuda': - num_gpus = sdc.numGPU - else: - num_gpus = node_numranks - - if num_gpus > node_numranks: - num_gpus = node_numranks - - color = 0 if node_rank < num_gpus else MPI.UNDEFINED - gpu_comm = comm.Split(color=color, key=rank) # global communicator for ranks with GPU. Identical to comm if running on CPU. - partsPerGPU = int(sdc.nparts / (num_gpus*num_nodes)) # assume all nodes have same number of GPUs! - partsPerNode = int(sdc.nparts / num_nodes) # How many CH are processed by each node. - - gpu_global_rank = None - if node_rank < num_gpus: - gpu_global_rank = rank # Global rank of the primary rank on each node - - # Gather the primary ranks from each node - gpu_global_ranks = comm.allgather(gpu_global_rank) - gpu_global_ranks = [r for r in gpu_global_ranks if r is not None] # Filter out None values - ### END SETUP COMMS ### - - # Some data type info for numpy and torch. Double precision is necessary for pyseqm. - if torch.get_default_dtype() == torch.float32: - eng.torch_dt = torch.float32 - sdc.torch_dt = eng.torch_dt - - eng.torch_int_dt = torch.int32 - sdc.torch_int_dt = eng.torch_int_dt - - eng.np_dt = np.float32 - sdc.np_dt = eng.np_dt - - eng.np_int_dt = np.int32 - sdc.np_int_dt = eng.np_int_dt - else: - eng.torch_dt = torch.float64 - sdc.torch_dt = eng.torch_dt - - eng.torch_int_dt = torch.int64 - sdc.torch_int_dt = eng.torch_int_dt - - eng.np_dt = np.float64 - sdc.np_dt = eng.np_dt - - eng.np_int_dt = np.int64 - sdc.np_int_dt = eng.np_int_dt - - fullGraph = graphNL.copy() - - # get pyseqm molecule object - tic = time.perf_counter() - with torch.no_grad(): - molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] - #print_attribute_sizes(molSysData.molecule_whole) - if rank == 0: print("Time to init molSysData {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - ### Initialization for SCF ### - # Things that are calculated on each primary rank of each node. - if node_rank == 0: - tic = time.perf_counter() - if rank == 0: print('Computing cores.') - parts = graph_partition(eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, sdc.verb) # cores - if rank == 0: print("Time to compute cores {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - if rank == 0: print('Loading the molecule and parameters.') - - partsCoreHalo = [] - if rank == 0: - print('\n|||| Adaptive iter:', 0, '||||') - print("Core and halos indices for every part:") - for i in range(sdc.nparts): - coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, sdc.numJumps, sdc, sy) # halos - partsCoreHalo.append(coreHalo) - if sdc.verb: print("coreHalo for part", i, "=", coreHalo) - if rank == 0: print(' N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) - print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) # Graph where new_graph_for_pairs[i] is a CH in which atom i is a core atom. new_graph_for_pairs[i][0] is the size of CH. - graph_for_pairs = new_graph_for_pairs # Here, same as new_graph_for_pairs - graph_maskd = get_maskd(sdc, sy, graph_for_pairs) # mask for diagonal block in contracted dm - print("Time to init mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - if sdc.UHF: - P_contr = torch.zeros(2, sy.nats*sdc.maxDeg,4,4, dtype=eng.torch_dt, device=device) # contracted density matrix - P_contr[:,graph_maskd] = 0.5*get_diag_guess_pyseqm(molecule_whole, sy) # diagonal initial guess - #P_contr = P_contr * torch.tensor([sy.nocc_alpha/(sy.numel/2), sy.nocc_beta/(sy.numel/2)], device = device).view(2, 1, 1, 1) - P_contr = P_contr.reshape(2, sy.nats, sdc.maxDeg, 4,4).transpose(1,2) # (2, n_atoms, max_deg, 4, 4). A rectangle of 4x4 square blocks. - P_contr_size = P_contr.size() - P_contr_nbytes = P_contr.numel() * P_contr.element_size() - else: - P_contr = torch.zeros(sy.nats*sdc.maxDeg,4,4, dtype=eng.torch_dt, device=device) # contracted density matrix - P_contr[graph_maskd] = get_diag_guess_pyseqm(molecule_whole, sy) # diagonal initial guess - P_contr = P_contr.reshape(sy.nats, sdc.maxDeg, 4,4).transpose(0,1) # (n_atoms, max_deg, 4, 4). A rectangle of 4x4 square blocks. - P_contr_size = P_contr.size() - P_contr_nbytes = P_contr.numel() * P_contr.element_size() - print("Time to init DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - # graphNL = collect_graph_from_rho(None, sdc.overlap_whole, sdc.gthreshinit, sy.nats, sdc.maxDeg, [i for i in range(0,sy.nats)],hindex) - del graphNL - else: - parts = None - sdc.nparts = None - - fullGraph = None - coreHalo = None - partsCoreHalo = None - - new_graph_for_pairs = None - graph_for_pairs = None - graph_maskd = None - - P_contr = None - P_contr_size = None - P_contr_nbytes = 0 - - tic = time.perf_counter() - parts = node_comm.bcast(parts, root=0) - sdc.nparts = node_comm.bcast(sdc.nparts, root=0) - if rank == 0: print("BCST1 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - # P_contr is in shared memory between ranks on one node but each node has its own copy. - P_contr_size = node_comm.bcast(P_contr_size, root=0) - P_contr_win = MPI.Win.Allocate_shared(P_contr_nbytes, torch.tensor(0, dtype=eng.torch_dt).element_size(), comm=node_comm) # 8 is the size of torch.float64 - P_contr_buf, P_contr_itemsize = P_contr_win.Shared_query(0) - P_contr_ary = np.ndarray(buffer=P_contr_buf, dtype=eng.np_dt, shape=(P_contr_size)) - if node_rank == 0: - P_contr_ary[:] = P_contr.cpu().numpy() - comm.Barrier() - del P_contr - P_contr = torch.from_numpy(P_contr_ary).to(device) - if rank == 0: print("BCST2 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - fullGraph = node_comm.bcast(fullGraph, root=0) - coreHalo = node_comm.bcast(coreHalo, root=0) - partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) - graph_maskd = node_comm.bcast(graph_maskd, root=0) - graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) - if rank == 0: print("BCST3 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - print("Time to init bcast and share DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - if rank == 0: - print("Time INIT {:>7.2f} (s)".format(time.perf_counter() - t_INIT)) - ### END Initialization for SCF ### - - ### SCF cycle ### - mu0 = -5.5 # initial guess for chemical potential - if sdc.UHF: - mu0 = np.array([mu0+0.1, mu0-0.1]) - mu0 = np.array([-1.3, -5.5]) - - for gsc in range(sdc.numAdaptIter): - if rank == 0: print('\n\n|||| Adaptive iter:', gsc, '||||') - #print_memory_usage(rank, node_rank, "Memory usage") - TIC_iter = time.perf_counter() - tic = time.perf_counter() - if node_rank == 0: # broadcasts dm from root rank (assuming its rank 0 on node 0) to primary ranks on other nodes. E.g. for ranks arranged as {node0:[0,1,2,3] node1:[4,5,6,7]}, dm is broadcates from 0 to 4. One of the major bottlenecks. - primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) - if rank == 0: print("Time to bcast DM_cpu_np {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - tic = time.perf_counter() - if gsc > 0: # lots of things have been done during initialization, so at iteration 0 we can proceed right to get_singlePoint - if node_rank == 0: # halos, dm contraction, and graphs are performed on primary ranks of each node and then broadcasted locally to other ranks - ### HALOS CALC ### - tic = time.perf_counter() - partsCoreHalo = [] - if rank == 0:print("Core and halos indices for every part:") - for i in range(sdc.nparts): - coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, sdc.numJumps, sdc, sy) - partsCoreHalo.append(coreHalo) - if sdc.verb and rank == 0: print("coreHalo for part", i, "=", coreHalo) - if rank == 0: print(' N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) - if rank == 0: print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic)) - ### END HALOS CALC ### - - tic = time.perf_counter() - new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) # Graph where new_graph_for_pairs[i] is a CH in which atom i is a core atom. new_graph_for_pairs[i][0] is the size of CH. - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - tic = time.perf_counter() - # torch.save(P_contr, 'P.pt') - # exit() - update_dm_contraction(sdc, sy, P_contr, graph_for_pairs, new_graph_for_pairs, device) # update dm contraction based on new_graph_for_pairs - graph_for_pairs = new_graph_for_pairs # reset graph_for_pairs - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - tic = time.perf_counter() - graph_maskd = get_maskd(sdc, sy, graph_for_pairs) # get diagonal mask of contracted dm - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - else: - coreHalo = None - partsCoreHalo = None - graph_for_pairs = None - graph_maskd = None - - tic = time.perf_counter() - coreHalo = node_comm.bcast(coreHalo, root=0) - partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) - graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) - graph_maskd = node_comm.bcast(graph_maskd, root=0) - if node_rank == 0: print("Time to bcast DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - # Single point part. For efficiency, the PySEQM dm needs to be reshaped in 4x4 blocks. - global_Eelec = np.zeros(1, dtype=np.float64) # this will sum electronic energy from CHs on ranks, giving total Eelec - if eng.interface == "PySEQM": - with torch.no_grad(): - if node_rank < num_gpus: # This condition is for GPU jobs only because sometimes there are fewer GPUs per node than ranks per nodes. - # We want more ranks per node because dm update always happens on CPU, on node 0, in parallel. - eElec, eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ - get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, gpu_comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, - P_contr, graph_for_pairs, graph_maskd) - gpu_comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) - else: - eElec, eValOnRank_list, Q_list, NH_Nh_Hs_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = 0, None, None, None, None, None, None - comm.Barrier() - else: - raise ValueError(f"ERROR!!!: Interface type not recognized: '{eng.interface}'. " + - f"Use any of the following: Module,File,Socket,MDI") - if gsc==0 and sdc.UHF: - print('sym break') - for I in range(len(Q_list)): - orb_idx = NH_Nh_Hs_list[I][3][0] - Q_list[I][0,:,orb_idx] = 0.9*Q_list[I][0,:,orb_idx-1] + 0.1*Q_list[I][0,:,orb_idx] - sdc.EelecNew = global_Eelec[0] - #torch.cuda.synchronize() - if rank == 0: print("Time to get_singlePoint {:>7.2f} (s)".format(time.perf_counter() - tic)) - - if sdc.restartLoad: # If True, these files will be read and used instead as default initial guess. - sdc.restartLoad = False - if node_rank == 0: - P_contr[:] = torch.load('P_contr.pt') - with open('parts.pkl','rb') as f: - parts = pickle.load(f) - with open('partsCoreHalo.pkl','rb') as f: - partsCoreHalo = pickle.load(f) - with open('fullGraph.pkl','rb') as f: - fullGraph = pickle.load(f) - mu0 = np.load('mu0.npy') - graph_for_pairs = np.load('graph_for_pairs.npy') - graph_maskd = np.load('graph_maskd.npy') - if rank == 0: - eValOnRank_list = torch.load('eValOnRank_list.pt') - Q_list = torch.load('Q_list.pt') - NH_Nh_Hs_list = torch.load('NH_Nh_Hs_list.pt') - core_indices_in_sub_expanded_list = torch.load('core_indices_in_sub_expanded_list.pt') - Nocc_list = torch.load('Nocc_list.pt') - - if rank == 0 and sdc.restartSave: # Save for future restart. Slows things down significantly. - torch.save(eValOnRank_list, 'eValOnRank_list.pt') - torch.save(Q_list, 'Q_list.pt') - torch.save(NH_Nh_Hs_list, 'NH_Nh_Hs_list.pt') - torch.save(core_indices_in_sub_expanded_list, 'core_indices_in_sub_expanded_list.pt') - torch.save(Nocc_list, 'Nocc_list.pt') - torch.save(P_contr, 'P_contr.pt') - with open('parts.pkl', 'wb') as f: - pickle.dump(parts, f) - with open('partsCoreHalo.pkl', 'wb') as f: - pickle.dump(partsCoreHalo, f) - with open('fullGraph.pkl', 'wb') as f: - pickle.dump(fullGraph, f) - np.save('mu0', mu0) - np.save('graph_for_pairs', graph_for_pairs) - np.save('graph_maskd', graph_maskd) - - if rank == 0: # this defines what part of density matrix will be updated by each rank on node 0. - tic = time.perf_counter() - partsPerRank = int(sdc.nparts / node_numranks) - partIndex1 = 0 * partsPerRank - partIndex2 = (0 + 1) * partsPerRank - Q_list_on_rank = Q_list[partIndex1:partIndex2] # Root rank processes its own part - for r in range(1, node_numranks): - partIndex1 = r * partsPerRank - partIndex2 = (r + 1) * partsPerRank - # Send only the necessary slice to each rank - node_comm.send(Q_list[partIndex1:partIndex2], dest=r, tag=0) - print("Time send Q_list slice {:>7.2f} (s)".format(time.perf_counter() - tic)) - - if rank < node_numranks and rank != 0: - Q_list_on_rank = node_comm.recv(source=0, tag=0) - - if rank < node_numranks: - tic = time.perf_counter() - ### BCAST DATA across ranks on node 0 ### - eValOnRank_list = node_comm.bcast(eValOnRank_list, root=0) - NH_Nh_Hs_list = node_comm.bcast(NH_Nh_Hs_list, root=0) - core_indices_in_sub_expanded_list = node_comm.bcast(core_indices_in_sub_expanded_list, root=0) - Nocc_list = node_comm.bcast(Nocc_list, root=0) - mu0 = node_comm.bcast(mu0, root=0) - node_comm.Barrier() - ### END BCAST DATA ### - - with torch.no_grad(): # dm update and the graph from dm - fullGraphRho = get_singlePointDM(sdc, eng, rank, node_numranks, node_comm, parts, partsCoreHalo, sy, hindex, mu0, P_contr, graph_for_pairs, - eValOnRank_list, Q_list_on_rank, NH_Nh_Hs_list, core_indices_in_sub_expanded_list) - if rank == 0: print("Time to updt DM {:>7.2f} (s)".format(time.perf_counter() - tic)) - node_comm.Barrier() - - tic = time.perf_counter() - fullGraphRho_LIST = node_comm.gather(fullGraphRho, root=0) # get dm-derived graphs from each rank - if rank == 0: - fullGraphRho_LIST.append(fullGraph) # adds the graph we got on the previous iteration. Note, when doing SCF, the graph keeps growing, no nodes from previous iterations are removed. - fullGraph = add_mult_graphs(fullGraphRho_LIST) # adds together the list of graphs - print("Time to add graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - del fullGraphRho - - if rank == 0: - tic = time.perf_counter() - if sdc.UHF: - trace = torch.sum(P_contr.transpose(1,2).reshape(2, molecule_whole.molsize*(len(graph_for_pairs[0])-1), 4,4)[:, graph_maskd].diagonal(dim1=-2, dim2=-1), dim=(1,2)) - print("DM TRACE: {:>10.8f}, {:>10.8f}".format(trace[0], trace[1])) - else: - trace = torch.sum(P_contr.transpose(0,1).reshape(molecule_whole.molsize*(len(graph_for_pairs[0])-1), 4,4)[graph_maskd].diagonal(dim1=-2, dim2=-1)) - print("DM TRACE: {:>10.7f}".format(trace)) - print("Time to get trace {:>7.2f} (s)".format(time.perf_counter() - tic)) - else: - fullGraph = None - - tic = time.perf_counter() - fullGraph = comm.bcast(fullGraph, root=0) # bcast the new graph across ALL ranks - if rank == 0: print("Time to bcast fullGraph {:>7.2f} (s)".format(time.perf_counter() - tic)) - del eValOnRank_list, Q_list, NH_Nh_Hs_list, Nocc_list - torch.cuda.empty_cache() - - # Function to calculate tensor size in megabytes (MB) - # if rank == 0: - # # Sort tensors by size and print them - # tensors = list(get_tensors()) - # tensors.sort(key=lambda x: tensor_size(x), reverse=True) - # print("Top memory-consuming tensors:") - # for tensor in tensors: - # if tensor_size(tensor) > 0.1: - # print(f"Tensor size: {tensor_size(tensor):.2f} MB | Shape: {tensor.shape} | Dtype: {tensor.dtype}") - if rank == 0: print("t Iter {:>8.2f} (s)".format(time.perf_counter() - TIC_iter)) - ### END SCF cycle ### - - ### FORCES CALC ### - tic_F_INIT = time.perf_counter() - if node_rank < num_gpus: - if node_rank == 0: # broadcasts dm from root rank (assuming its rank 0 on node 0) to primary ranks on other nodes. E.g. for ranks arranged as {node0:[0,1,2,3] node1:[4,5,6,7]}, dm is broadcates from 0 to 4. One of the major bottlenecks. - primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) - forces = np.zeros((sy.coords.shape)) - partsCoreHalo = [] - if rank == 0: print("\nCore and halos indices for every part:") - for i in range(sdc.nparts): - coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, sdc.numJumps, sdc, sy) - partsCoreHalo.append(coreHalo) - if sdc.verb: print("coreHalo for part", i, "=", coreHalo) - if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo))) - - tic = time.perf_counter() - new_graph_for_pairs = get_ch_graph(sdc, sy, fullGraph, parts, partsCoreHalo) - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - tic = time.perf_counter() - update_dm_contraction(sdc, sy, P_contr, graph_for_pairs, new_graph_for_pairs, device) - graph_for_pairs = new_graph_for_pairs - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - tic = time.perf_counter() - graph_maskd = get_maskd(sdc, sy, graph_for_pairs) - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - else: - forces = None - partsCoreHalo = None - new_graph_for_pairs = None - graph_for_pairs = None - graph_maskd = None - - if sdc.scfDevice == 'cuda': - device = 'cuda:{}'.format(node_rank) - else: - device = 'cpu' - - molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] - forces = gpu_comm.bcast(forces, root=0) - partsCoreHalo = gpu_comm.bcast(partsCoreHalo, root=0) - gpu_comm.Barrier() - graph_for_pairs = gpu_comm.bcast(graph_for_pairs, root=0) - new_graph_for_pairs = gpu_comm.bcast(new_graph_for_pairs, root=0) - graph_maskd = gpu_comm.bcast(graph_maskd, root=0) - if rank == 0: - forces[:] = .0 - gpu_comm.Barrier() - if rank == 0: print("Time init forces {:>8.2f} (s)".format(time.perf_counter() - tic_F_INIT)) - - tic = time.perf_counter() - if eng.interface == "PySEQM": - if sdc.doForces: - eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, - None, P_contr.to(device), graph_for_pairs, graph_maskd) - else: - with torch.no_grad(): - eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, parts, partsCoreHalo, sy, hindex, forces, molecule_whole, - None, P_contr.to(device), graph_for_pairs, graph_maskd) - global_Eelec = np.zeros(1, dtype=np.float64) - gpu_comm.Barrier() - gpu_comm.Allreduce(MPI.IN_PLACE, forces, op=MPI.SUM) - gpu_comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) #primary_comm - if rank == 0: - print("Time to get electron forces {:>8.2f} (s)".format(time.perf_counter() - tic)) - print("eElec: {:>10.12f}".format(global_Eelec[0]),) - - # Nuclear energy and forces. For now, done on one cpu/gpu, for the whole system at once (pyseqm style). Hence, do_large_tensors = True. Needs to be fixed. - if rank == 0: - molSysData = pyseqmObjects(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = True, device=device) #object with whatever initial parameters and tensors - tic = time.perf_counter() - eNucAB = get_eNuc(eng, molSysData) - eTot, eNuc = get_eTot(eng, molSysData, eNucAB, 0) - print("Enuc: {:>10.12f}".format(eNuc),) - L = eNuc.sum() - L.backward() - forceNuc = -molSysData.molecule_whole.coordinates.grad.detach() - molSysData.molecule_whole.coordinates.grad.zero_() - print("Time to get nuclear forces {:>8.2f} (s)".format(time.perf_counter() - tic)) - np.save('forces', (forces+forceNuc.cpu().numpy()[0]), ) - ### END FORCES CALC ### diff --git a/src/sedacs/driver/old_t.py b/src/sedacs/driver/old_t.py deleted file mode 100644 index 48b3f38d..00000000 --- a/src/sedacs/driver/old_t.py +++ /dev/null @@ -1,922 +0,0 @@ -"""Graph adaptive solver""" - -import time -import torch -print('num_threads',torch.get_num_threads()) -#torch.set_num_threads(20) - -from sedacs.density_matrix import get_density_matrix, get_initDM, get_dmErrs, get_dmTrace -from sedacs.density_matrix_renorm import get_density_matrix_renorm -from sedacs.energy import get_eElec, get_eNuc, get_eTot -from sedacs.forces import get_forces -from sedacs.molSysData import get_molSysData -from sedacs.fock import get_fock -from sedacs.file_io import write_pdb_coordinates, write_xyz_coordinates -from sedacs.graph import add_graphs, collect_graph_from_rho, print_graph, add_mult_graphs -from sedacs.graph_partition import get_coreHaloIndices, graph_partition -from sedacs.hamiltonian import get_hamiltonian, get_force -from sedacs.mpi import collect_and_sum_matrices -from sedacs.system import System, extract_subsystem -from sedacs.evals import get_eVals -from sedacs.chemical_potential import get_mu -from sedacs.graph import get_initial_graph -from sedacs.overlap import get_overlap -from sedacs.interface_pyseqm import get_coreHalo_ham_inds, get_diag_guess_pyseqm, ParamContainer, pyseqmObjects, get_molecule_pyseqm -import itertools -import sys -import psutil -import pickle -import socket -import copy - -from seqm.seqm_functions.pack import pack - -import gc - -import numpy as np - -try: - from mpi4py import MPI - - is_mpi_available = True -except ModuleNotFoundError: - is_mpi_available = False - -is_mpi_available = False - -mpiOnDebugFlag = True - - -__all__ = ["get_singlePoint", "get_adaptiveDM"] - -## Single point calculation -# @brief Construct a connectivity graph based on constructing density matrices -# of parts of the system. -# -def get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, numranks, comm, gpu_global_comm, parts, partsCoreHalo, sy, hindex, mu0, - molecule_whole, P, P_contr, graph_for_pairs, graph_maskd): - # computing DM for core+halo part - partsPerRank = int(sdc.nparts / numranks) - # partIndex1 = rank * partsPerRank - # partIndex2 = (rank + 1) * partsPerRank - partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode #+ node_id * num_nodes - partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode #+ node_id * num_nodes - - - graphOnRank = None - dValOnRank = np.array([]) - eValOnRank = np.array([]) - eValOnRank_list = [] - Q_list = [] # Eigenvectors for each part - I_list = [] # Indices for updating the columns in total DM - I_halo_list = [] # indices of coreHalo in whole - Nocc_list = [] # Number of occupied orbitals for each part - core_indices_in_sub_expanded_list = [] # Indices of core hamiltonian in core+halo hamiltonian. Might be useful when core and halo atoms are shuffled, like in PySEQM. - NH_Nh_Hs_list = [] # list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham] - Tel = sdc.Tel - - for partIndex in range(partIndex1, partIndex2): - tic = time.perf_counter() - print("\n Rank, part", rank, partIndex) - subSy = System(len(partsCoreHalo[partIndex])) - subSy.symbols = sy.symbols - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) - #partFileName = "subSy" + str(rank) + "_" + str(partIndex) + ".pdb" - #write_pdb_coordinates(partFileName, subSy.coords, subSy.types, subSy.symbols) - #write_xyz_coordinates("subSy" + str(rank) + "_" + str(partIndex) + ".xyz", subSy.coords, subSy.types, subSy.symbols) - - subSyCore = System(len(parts[partIndex])) - subSyCore.symbols = sy.symbols - subSyCore.coords,subSyCore.types = extract_subsystem(sy.coords,sy.types,sy.symbols,parts[partIndex]) - #partCoreFileName = "CoreSubSy"+str(rank)+"_"+str(partIndex)+".pdb" - #write_pdb_coordinates(partCoreFileName,subSyCore.coords,subSyCore.types,subSyCore.symbols) - #write_xyz_coordinates("CoreSubSy"+str(rank)+"_"+str(partIndex)+".xyz",subSyCore.coords,subSyCore.types,subSyCore.symbols) - - if sdc.scfDevice == 'cuda': - device = 'cuda:{}'.format(node_rank) - tmp_molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] - ham = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, - parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P, P_contr.to(device), graph_for_pairs, graph_maskd, None, - verbose=False) - del tmp_molecule_whole - else: - device = 'cpu' - ham = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, - parts[partIndex], partsCoreHalo[partIndex], molecule_whole, P, P_contr, graph_for_pairs, graph_maskd, None, - verbose=False) - print("TOT {:>8.3f} (s)".format(time.perf_counter() - tic)) - - tic = time.perf_counter() - norbs = subSy.nats - occ = int(float(norbs) / 2.0) # Get the total occupied orbitals - coreSize = len(parts[partIndex]) - eVals, dVals, Q, NH_Nh_Hs, I, I_halo, core_indices_in_sub_expanded = get_eVals(eng, sdc, sy, occ, ham, subSy.coords, subSy.symbols, subSy.types, Tel, mu0, - coreSize, subSy, subSyCore, parts[partIndex], partsCoreHalo[partIndex], - verbose=False) - - del ham - - dValOnRank = np.append(dValOnRank, dVals) - eValOnRank = np.append(eValOnRank, eVals.cpu().numpy()) - - eValOnRank_list.append(eVals.cpu()) - Q_list.append(Q.cpu()#.to(torch.float32) - ) - I_list.append(I) - I_halo_list.append(I_halo) - core_indices_in_sub_expanded_list.append(core_indices_in_sub_expanded) - NH_Nh_Hs_list.append(NH_Nh_Hs) - Nocc_list.append(occ) - - print("| t eVals/dVals {:>9.4f} (s)".format(time.perf_counter() - tic)) - - - tic = time.perf_counter() - torch.save(Q_list, 'Q/Q_list_{}.pt'.format(rank)) - print("Time to save Q_list {:>9.4f} (s)".format(time.perf_counter() - tic)) - - tic = time.perf_counter() - full_dVals = None - full_eVals = None - eValOnRank_size = np.array(len(eValOnRank), dtype=int) - eValOnRank_SIZES = None - - if mpiOnDebugFlag: - if rank == 0: - eValOnRank_SIZES = np.empty(gpu_global_comm.Get_size(), dtype=int) - - gpu_global_comm.Gather(eValOnRank_size, eValOnRank_SIZES, root=0) - if rank == 0: - full_dVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) - full_eVals = np.empty(np.sum(eValOnRank_SIZES), dtype=eValOnRank.dtype) - - gpu_global_comm.Gatherv(dValOnRank, [full_dVals, eValOnRank_SIZES], root=0) - gpu_global_comm.Gatherv(eValOnRank, [full_eVals, eValOnRank_SIZES], root=0) - eVal_LIST = gpu_global_comm.gather(eValOnRank_list, root=0) - #Q_LIST = comm.gather(Q_list, root=0) - NH_Nh_Hs_LIST = gpu_global_comm.gather(NH_Nh_Hs_list, root=0) - I_LIST = gpu_global_comm.gather(I_list, root=0) - I_halo_LIST = gpu_global_comm.gather(I_halo_list, root=0) - core_indices_in_sub_expanded_LIST = gpu_global_comm.gather(core_indices_in_sub_expanded_list, root=0) - Nocc_LIST = gpu_global_comm.gather(Nocc_list, root=0) - - if rank == 0: - - Q_LIST = [] - for i in range(numranks): - Q_LIST.append(torch.load('Q/Q_list_{}.pt'.format(i))) - - # Flatten the nested list of lists into a single list of tensors - eVal_LIST = list(itertools.chain(*eVal_LIST)) - Q_LIST = list(itertools.chain(*Q_LIST)) - NH_Nh_Hs_LIST = list(itertools.chain(*NH_Nh_Hs_LIST)) - I_LIST = list(itertools.chain(*I_LIST)) - I_halo_LIST = list(itertools.chain(*I_halo_LIST)) - core_indices_in_sub_expanded_LIST = list(itertools.chain(*core_indices_in_sub_expanded_LIST)) - Nocc_LIST = list(itertools.chain(*Nocc_LIST)) - else: - Q_LIST = None - - - if node_rank == 0: print("| t commLists {:>9.4f} (s)".format(time.perf_counter() - tic), rank) - if rank == 0: - mu0 = get_mu(mu0, full_dVals, full_eVals, Tel, sy.numel/2) - - return eVal_LIST, Q_LIST, NH_Nh_Hs_LIST, I_LIST, I_halo_LIST, core_indices_in_sub_expanded_LIST, Nocc_LIST, mu0 - -def get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, P, P_contr, graph_for_pairs, graph_maskd): - # partsPerRank = int(sdc.nparts / numranks) - # partIndex1 = rank * partsPerRank - # partIndex2 = (rank + 1) * partsPerRank - partIndex1 = (node_rank) * partsPerGPU + node_id*partsPerNode #+ node_id * num_nodes - partIndex2 = (node_rank + 1) * partsPerGPU + node_id*partsPerNode #+ node_id * num_nodes - - EELEC = 0.0 - for partIndex in range(partIndex1, partIndex2): - print("Rank, part", rank, partIndex) - subSy = System(len(partsCoreHalo[partIndex])) - subSy.symbols = sy.symbols - subSy.coords, subSy.types = extract_subsystem(sy.coords, sy.types, sy.symbols, partsCoreHalo[partIndex]) - - _, core_indices_in_sub_expanded, _, _, _ = \ - get_coreHalo_ham_inds(parts[partIndex], partsCoreHalo[partIndex], sdc, sy, subSy) - - tic = time.perf_counter() - tmp_molecule_whole = copy.deepcopy(molSysData.molecule_whole) - if sdc.doForces: - tmp_molecule_whole.coordinates.requires_grad_(True) - - # get_force - # get_hamiltonian - f, eElec = get_hamiltonian(sdc, eng,subSy.coords,subSy.types,subSy.symbols, - parts[partIndex], partsCoreHalo[partIndex], tmp_molecule_whole, P, P_contr, graph_for_pairs, graph_maskd, core_indices_in_sub_expanded, doForces = True, - verbose=False) - del tmp_molecule_whole - # if mpiOnDebugFlag: - # comm.Allreduce(f, forces, op=MPI.SUM) - # else: - # forces += f - - forces += f - EELEC += eElec - print("EelecCH {:>7.3f} |".format(eElec.item()), end=" ") - del eElec, subSy, f - print("TOT", time.perf_counter() - tic, "(s)") - #print("eElec_SUM: {:>10.7f}".format(EELEC),) - return EELEC - -def get_singlePointDM(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, mu0, dm, P_contr, graph_for_pairs, - eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list): - - partsPerRank = int(sdc.nparts / numranks) - partIndex1 = rank * partsPerRank - partIndex2 = (rank + 1) * partsPerRank - graphOnRank = None - - Tel = sdc.Tel - maxDifList = [] - sumDifTot = 0 - P_contr_maxDifList = [] - P_contr_sumDifTot = 0 - - for partIndex in range(partIndex1,partIndex2): - #tic = time.perf_counter() - # this will calculate the DM in subsys and update the whole DM - rho_ren, maxDif, sumDif = get_density_matrix_renorm(eng, Tel, mu0, dm, P_contr, graph_for_pairs, - eValOnRank_list[partIndex], Q_list[partIndex].to(torch.float64), NH_Nh_Hs_list[partIndex], I_list[partIndex], core_indices_in_sub_expanded_list[partIndex], Nocc_list[partIndex]) - - indices_in_sub = np.linspace(0,len(partsCoreHalo[partIndex])-1, len(partsCoreHalo[partIndex]), dtype = eng.np_int_dt) - core_indices_in_sub = indices_in_sub[np.isin(partsCoreHalo[partIndex], parts[partIndex])] - - #print("t DM1 {:>8.3f} (s)".format(time.perf_counter() - tic)) - alpha = sdc.alpha - P_contr_maxDif = [] - P_contr_sumDif = 0 - - ### vectorized loop. Faster for larger cores. - max_len = graph_for_pairs[parts[partIndex][0]][0] - TMP1 = P_contr[:max_len,parts[partIndex]]#.clone() - TMP2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ - .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4).transpose(2,3).transpose(0,1)[:,core_indices_in_sub]#.clone() - P_contr_maxDif.append(torch.max(torch.abs(TMP1 - TMP2)).cpu().numpy()) - P_contr_sumDif += torch.sum(torch.abs(TMP1 - TMP2)).cpu().numpy() - P_contr[:max_len,parts[partIndex]] = (1-alpha)*TMP1 + alpha * TMP2 - - # for i in range(len(parts[partIndex])): - # tmp1 = P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] - # tmp2 = rho_ren.reshape((1, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4, NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1],4)) \ - # .transpose(2,3).reshape((NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]), (NH_Nh_Hs_list[partIndex][0]+NH_Nh_Hs_list[partIndex][1]),4,4)[core_indices_in_sub[i]].transpose(1,2) - - # P_contr_maxDif.append(torch.max(torch.abs(tmp1 - tmp2)).cpu().numpy()) - # P_contr_sumDif += torch.sum(torch.abs(tmp1 - tmp2)).cpu().numpy() - # P_contr[:graph_for_pairs[parts[partIndex][i]][0],parts[partIndex][i]] = (1-alpha)*tmp1 + alpha*tmp2 - # del tmp1, tmp2 - - rho_ren = pack(rho_ren, NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1]) - - P_contr_maxDif = max(P_contr_maxDif) - P_contr_maxDifList.append(P_contr_maxDif) - P_contr_sumDifTot += P_contr_sumDif - - maxDifList.append(maxDif) - try: - sumDifTot += sumDif - except: - sumDifTot += 0 - graphOnRank = collect_graph_from_rho(graphOnRank, rho_ren, sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex], hindex, verb=False) - # graphOnRank = collect_graph_from_rho(graphOnRank, - # pack(dm[:,I_halo_list[partIndex][0], I_halo_list[partIndex][1]], NH_Nh_Hs_list[partIndex][0], NH_Nh_Hs_list[partIndex][1])[0], - # sdc.gthresh, sy.nats, sdc.maxDeg, partsCoreHalo[partIndex], hindex, verb=False) - del rho_ren - - print('HERE_DM_1') - if eng.reconstruct_dm: - print(" MAX |\u0394DM_ij|: {:>10.7f} at SubSy {:>5d}".format(max(maxDifList), np.argmax(maxDifList))) - print(" \u03A3 |\u0394DM_ij|: {:>10.7f}".format(sumDifTot)) - - print(" MAX |\u0394DM_ij|: {:>10.7f} at SubSy {:>5d}".format(max(P_contr_maxDifList), np.argmax(P_contr_maxDifList))) - print(" \u03A3 |\u0394DM_ij|: {:>10.7f}".format(P_contr_sumDifTot)) - - - return graphOnRank - -def print_memory_usage(rank, node_rank, message): - process = psutil.Process() - mem_info = process.memory_info() - print(f"{message} | Rank: {rank}, Node Rank: {node_rank}, Memory Usage: {mem_info.rss / (1024 ** 2):.2f} MB") -def tensor_size(tensor): - return tensor.element_size() * tensor.nelement() / (1024 ** 2) -# Collect all tensors in the current environment -def get_tensors(): - for obj in gc.get_objects(): - try: - if torch.is_tensor(obj): - yield obj - except Exception as e: - pass - -def print_attribute_sizes(obj): - for attr in dir(obj): - # Skip private or callable attributes - if attr.startswith("_") or callable(getattr(obj, attr)): - continue - attribute = getattr(obj, attr) - size_bytes = attribute.nbytes if isinstance(attribute, np.ndarray) else attribute.element_size() * attribute.nelement() if isinstance(attribute, torch.Tensor) else sys.getsizeof(attribute) - size_mb = size_bytes / (1024 ** 2) # Convert bytes to MB - print(f"{attr}: {size_mb:.2f} MB") - -class MyClass: - def __init__(self, data): - self.data = data - - def __repr__(self): - return f"MyClass(data={self.data})" - - -def get_adaptiveDM(sdc, eng, comm, rank, numranks, sy, hindex, graphNL): - t_INIT = time.perf_counter() - tic = time.perf_counter() - eng.use_pyseqm_lt = False - sdc.use_pyseqm_lt = eng.use_pyseqm_lt - - eng.reconstruct_dm = False - sdc.reconstruct_dm = eng.reconstruct_dm - - node_comm = comm.Split_type(MPI.COMM_TYPE_SHARED) # local communicator on a node - node_rank = node_comm.Get_rank() # Rank within the node - node_numranks = node_comm.Get_size() - - node_name = socket.gethostname() - node_names = comm.allgather(node_name) - - unique_nodes = list(set(node_names)) - num_nodes = len(unique_nodes) # Total number of unique nodes - node_id = int(rank/node_numranks) - - primary_rank = None - if node_rank == 0: - primary_rank = rank # Global rank of the primary rank on each node - - # Gather the primary ranks from each node - primary_ranks = comm.allgather(primary_rank) - primary_ranks = [r for r in primary_ranks if r is not None] # Filter out None values - - color = 0 if rank in primary_ranks else MPI.UNDEFINED - primary_comm = comm.Split(color=color, key=rank) - - device = 'cpu' - - if sdc.fDevice == 'cuda' and sdc.numGPU == -1: - num_gpus = torch.cuda.device_count() - elif sdc.fDevice == 'cuda': - num_gpus = sdc.numGPU - else: - num_gpus = node_numranks - - if num_gpus > node_numranks: - num_gpus = node_numranks - - color = 0 if node_rank < num_gpus else MPI.UNDEFINED - gpu_comm = comm.Split(color=color, key=rank) # comm for local GPUs. Identical to node_comm if running on CPU. - partsPerGPU = int(sdc.nparts / (num_gpus*num_nodes)) # assume all nodes have same number of GPUs - partsPerNode = int(sdc.nparts / num_nodes) - - color = 0 if node_rank < num_gpus else MPI.UNDEFINED - gpu_global_comm = comm.Split(color=color, key=rank) # global communicator for ranks with GPU. Identical to comm if running on CPU. - #gpu_global_rank = gpu_global_comm.Get_rank() # Rank within the node - #gpu_global_numranks = gpu_global_comm.Get_size() - - #print('gpu_global_rank', gpu_global_rank, gpu_global_numranks) - - - - if torch.get_default_dtype() == torch.float32: - eng.torch_dt = torch.float32 - sdc.torch_dt = eng.torch_dt - - eng.torch_int_dt = torch.int32 - sdc.torch_int_dt = eng.torch_int_dt - - eng.np_dt = np.float32 - sdc.np_dt = eng.np_dt - - eng.np_int_dt = np.int32 - sdc.np_int_dt = eng.np_int_dt - else: - eng.torch_dt = torch.float64 - sdc.torch_dt = eng.torch_dt - - eng.torch_int_dt = torch.int64 - sdc.torch_int_dt = eng.torch_int_dt - - eng.np_dt = np.float64 - sdc.np_dt = eng.np_dt - - eng.np_int_dt = np.int64 - sdc.np_int_dt = eng.np_int_dt - - njumps = sdc.numJumps - - tic = time.perf_counter() - fullGraph = graphNL.copy() - - with torch.no_grad(): - molecule_whole = get_molecule_pyseqm(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device)[0] - - #print_attribute_sizes(molSysData.molecule_whole) - if rank == 0: print("Time to init molSysData {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - if node_rank == 0: - tic = time.perf_counter() - print('Computing cores.') - parts = graph_partition(eng, fullGraph, sdc.partitionType, sdc.nparts, sy.coords, sdc.verb) - print("Time to compute cores {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - print('Loading the molecule and parameters.') - if eng.reconstruct_dm: - dm = get_initDM(eng, sdc, sy.coords, sy.symbols, sy.types, molecule_whole)#.share_memory_() - dm_size = dm.size() - nbytes = dm.numel() * dm.element_size() - - partsCoreHalo = [] - if rank == 0: - print('\n\n|||| Adaptive iter:', 0, '||||') - print("\nCore and halos indices for every part:") - for i in range(sdc.nparts): - coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, njumps, sdc, sy) - partsCoreHalo.append(coreHalo) - if sdc.verb: print("coreHalo for part", i, "=", coreHalo) - if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo)), '\n') - print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - new_graph_for_pairs = np.array(fullGraph.copy()) - for i in range(sy.nats): - for sublist_idx in range(sdc.nparts): - if i in parts[sublist_idx]: - new_graph_for_pairs[i, 0] = len(partsCoreHalo[sublist_idx]) - new_graph_for_pairs[i, 1:new_graph_for_pairs[i][0]+1] = partsCoreHalo[sublist_idx] - break - - graph_for_pairs = new_graph_for_pairs - graph_maskd = [] - counter = 0 - for j in range(sy.nats): - for i in graph_for_pairs[j][1:graph_for_pairs[j][0]+1]: - if i==j: - graph_maskd.append(counter) - counter +=1 - counter += int(sdc.maxDeg - graph_for_pairs[j][0]) - print("Time to init mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - P_contr = torch.zeros(sy.nats*sdc.maxDeg,4,4, dtype=eng.torch_dt, device=device) # density matrix - P_contr[graph_maskd] = get_diag_guess_pyseqm(molecule_whole, sy) - P_contr = P_contr.reshape(sy.nats, sdc.maxDeg, 4,4).transpose(0,1) - graph_maskd = np.array(graph_maskd) - P_contr_size = P_contr.size() - P_contr_nbytes = P_contr.numel() * P_contr.element_size() - - print("Time to init DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - # graphNL = collect_graph_from_rho(None, sdc.overlap_whole, sdc.gthreshinit, sy.nats, sdc.maxDeg, [i for i in range(0,sy.nats)],hindex) - del graphNL - else: - parts = None - sdc.nparts = None - if eng.reconstruct_dm: - dm = None - dm_size = None - nbytes = 0 - - fullGraph = None - coreHalo = None - partsCoreHalo = None - - new_graph_for_pairs = None - graph_for_pairs = None - graph_maskd = None - - P_contr = None - P_contr_size = None - P_contr_nbytes = 0 - - if mpiOnDebugFlag: - tic = time.perf_counter() - parts = node_comm.bcast(parts, root=0) - sdc.nparts = node_comm.bcast(sdc.nparts, root=0) - if rank == 0: print("BCST1 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - - tic = time.perf_counter() - if eng.reconstruct_dm: - dm_size = comm.bcast(dm_size, root=0) - win = MPI.Win.Allocate_shared(nbytes, torch.tensor(0, dtype=eng.torch_dt).element_size(), comm=comm) # 8 is the size of torch.float64 - buf, itemsize = win.Shared_query(0) - #assert itemsize == MPI.DOUBLE.Get_size() - ary = np.ndarray(buffer=buf, dtype=eng.np_dt, shape=(dm_size)) - if rank == 0: - ary[:] = dm.numpy() - del dm - dm = torch.from_numpy(ary) - print(ary.shape) - print(dm.shape) - - P_contr_size = node_comm.bcast(P_contr_size, root=0) - P_contr_win = MPI.Win.Allocate_shared(P_contr_nbytes, torch.tensor(0, dtype=eng.torch_dt).element_size(), comm=node_comm) # 8 is the size of torch.float64 - P_contr_buf, P_contr_itemsize = P_contr_win.Shared_query(0) - #assert P_contr_itemsize == MPI.DOUBLE.Get_size() - P_contr_ary = np.ndarray(buffer=P_contr_buf, dtype=eng.np_dt, shape=(P_contr_size)) - if node_rank == 0: - P_contr_ary[:] = P_contr.cpu().numpy() - comm.Barrier() - - del P_contr - P_contr = torch.from_numpy(P_contr_ary).to(device) - if rank == 0: print("BCST2 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - tic = time.perf_counter() - fullGraph = node_comm.bcast(fullGraph, root=0) - coreHalo = node_comm.bcast(coreHalo, root=0) - partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) - #new_graph_for_pairs = node_comm.bcast(new_graph_for_pairs, root=0) - graph_maskd = node_comm.bcast(graph_maskd, root=0) - graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) - if rank == 0: print("BCST3 {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - print("Time to init bcast and share DM {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - if rank == 0: - print("Time INIT {:>7.2f} (s)".format(time.perf_counter() - t_INIT)) - - - dmOld = None - mu0 = -5.5 - for gsc in range(sdc.numAdaptIter): - if rank == 0: print('\n\n|||| Adaptive iter:', gsc, '||||') - #print_memory_usage(rank, node_rank, "Memory usage") - TIC_iter = time.perf_counter() - tic = time.perf_counter() - if node_rank == 0: - primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) - if rank == 0:print("Time to bcast DM_cpu_np {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - # Partition the graph - tic = time.perf_counter() - if gsc > 0: - - if node_rank == 0: - tic = time.perf_counter() - partsCoreHalo = [] - if rank == 0:print("\nCore and halos indices for every part:") - for i in range(sdc.nparts): - coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, njumps, sdc, sy) - partsCoreHalo.append(coreHalo) - if sdc.verb and rank == 0: print("coreHalo for part", i, "=", coreHalo) - if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo)), '\n') - - if rank == 0: print("Time to compute halos {:>7.2f} (s)".format(time.perf_counter() - tic)) - - tic = time.perf_counter() - new_graph_for_pairs = np.array(fullGraph.copy()) - for i in range(sy.nats): - for sublist_idx in range(sdc.nparts): - if i in parts[sublist_idx]: - new_graph_for_pairs[i, 0] = len(partsCoreHalo[sublist_idx]) - new_graph_for_pairs[i, 1:new_graph_for_pairs[i][0]+1] = partsCoreHalo[sublist_idx] - break - - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - tic = time.perf_counter() - #### THIS IS BAD. NEEDS TO BE FIXEd $$$ - P_contr_new = torch.zeros_like(P_contr, device=device) - for i in range(sy.nats): - tmp1 = graph_for_pairs[i][1:graph_for_pairs[i][0]+1] - tmp2 = new_graph_for_pairs[i][1:new_graph_for_pairs[i][0]+1] - pos = np.searchsorted(tmp1, tmp2) - # Ensure the indices are within bounds - pos = np.clip(pos, a_min=0, a_max=len(tmp1) - 1) - # Check if the positions are valid and match - mask_isin_n_in_o = (pos < len(tmp1)) & (tmp1[pos] == tmp2) - #print('isin',(np.isin(tmp2, tmp1) == mask_isin_n_in_o).all()) - - pos = np.searchsorted(tmp2, tmp1) - # Ensure the indices are within bounds - #pos = np.clip(pos, max=len(tmp2) - 1) - # Check if the positions are valid and match - mask_isin_o_in_n = (pos < len(tmp2)) & (tmp2[pos] == tmp1) - #print('PC', (np.isin(tmp1, tmp2) == mask_isin_o_in_n).all()) - - P_contr_new[:,i][ :new_graph_for_pairs[i][0] ][ mask_isin_n_in_o ] = \ - P_contr[:,i][:graph_for_pairs[i][0]][ mask_isin_o_in_n ] - P_contr[:] = P_contr_new[:] - del P_contr_new - - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - tic = time.perf_counter() - graph_for_pairs = new_graph_for_pairs - # Initialize an array to hold graph_maskd values - graph_maskd = [] - # Track the position counter across rows in a vectorized way - counter = 0 - for j in range(sy.nats): - # Get neighbors for node j from graph_for_pairs - neighbors = graph_for_pairs[j][1:graph_for_pairs[j][0] + 1] - # Find positions where `i == j` (self-loops) in the neighbors list - mask = np.where(neighbors == j)[0] - # Calculate the absolute position for masked values and store them - graph_maskd.extend(counter + mask) - # Update the counter for the next row, adding the degree difference - counter += len(neighbors) + int(sdc.maxDeg - graph_for_pairs[j][0]) - # Convert graph_maskd to a NumPy array - graph_maskd = np.array(graph_maskd) - - if rank == 0: print("Time to updt DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - else: - coreHalo = None - partsCoreHalo = None - graph_for_pairs = None - #new_graph_for_pairs = None - graph_maskd = None - - tic = time.perf_counter() - if mpiOnDebugFlag: - coreHalo = node_comm.bcast(coreHalo, root=0) - partsCoreHalo = node_comm.bcast(partsCoreHalo, root=0) - graph_for_pairs = node_comm.bcast(graph_for_pairs, root=0) - #new_graph_for_pairs = node_comm.bcast(new_graph_for_pairs, root=0) - graph_maskd = node_comm.bcast(graph_maskd, root=0) - if node_rank == 0: print("Time to bcast DM and mod graphs {:>7.2f} (s)".format(time.perf_counter() - tic), rank) - - - tic = time.perf_counter() - # for efficiency, the PySEQM dm needs to be reshaped in 4x4 blocks. - if eng.interface == "PySEQM": - with torch.no_grad(): - if eng.reconstruct_dm: - eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ - get_singlePoint(sdc, eng, rank, node_rank, numranks, comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, - dm.reshape((molecule_whole.nmol, molecule_whole.molsize,4, molecule_whole.molsize,4)) \ - .transpose(2,3).reshape(molecule_whole.nmol*molecule_whole.molsize*molecule_whole.molsize,4,4), P_contr, graph_for_pairs, graph_maskd) - else: - if node_rank < num_gpus: - eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ - get_singlePoint(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, numranks, comm, gpu_global_comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, - None, P_contr, graph_for_pairs, graph_maskd) - else: - eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = None, None, None, None, None, None, None, None - - if mpiOnDebugFlag: comm.Barrier() - else: - eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, core_indices_in_sub_expanded_list, Nocc_list, mu0 = \ - get_singlePoint(sdc, eng, rank, node_rank, numranks, comm, parts, partsCoreHalo, sy, hindex, mu0, molecule_whole, dm) - - - if rank == 0: print("Time to get_singlePoint {:>7.2f} (s)".format(time.perf_counter() - tic)) - - if sdc.restartLoad: - sdc.restartLoad = False - if node_rank == 0: - P_contr[:] = torch.load('P_contr.pt') - with open('parts.pkl','rb') as f: - parts = pickle.load(f) - with open('partsCoreHalo.pkl','rb') as f: - partsCoreHalo = pickle.load(f) - with open('fullGraph.pkl','rb') as f: - fullGraph = pickle.load(f) - mu0 = np.load('mu0.npy') - graph_for_pairs = np.load('graph_for_pairs.npy') - graph_maskd = np.load('graph_maskd.npy') - if rank == 0: - eValOnRank_list = torch.load('eValOnRank_list.pt') - Q_list = torch.load('Q_list.pt') - NH_Nh_Hs_list = torch.load('NH_Nh_Hs_list.pt') - I_list = torch.load('I_list.pt') - I_halo_list = torch.load('I_halo_list.pt') - core_indices_in_sub_expanded_list = torch.load('core_indices_in_sub_expanded_list.pt') - Nocc_list = torch.load('Nocc_list.pt') - - - if rank == 0 and sdc.restartSave: - torch.save(eValOnRank_list, 'eValOnRank_list.pt') - torch.save(Q_list, 'Q_list.pt') - torch.save(NH_Nh_Hs_list, 'NH_Nh_Hs_list.pt') - torch.save(I_list, 'I_list.pt') - torch.save(I_halo_list, 'I_halo_list.pt') - torch.save(core_indices_in_sub_expanded_list, 'core_indices_in_sub_expanded_list.pt') - torch.save(Nocc_list, 'Nocc_list.pt') - torch.save(P_contr, 'P_contr.pt') - with open('parts.pkl', 'wb') as f: - pickle.dump(parts, f) - with open('partsCoreHalo.pkl', 'wb') as f: - pickle.dump(partsCoreHalo, f) - with open('fullGraph.pkl', 'wb') as f: - pickle.dump(fullGraph, f) - np.save('mu0', mu0) - np.save('graph_for_pairs', graph_for_pairs) - np.save('graph_maskd', graph_maskd) - - - #if rank == 0: - if rank < node_numranks: - tic = time.perf_counter() - eValOnRank_list = node_comm.bcast(eValOnRank_list, root=0) - Q_list = node_comm.bcast(Q_list, root=0) - NH_Nh_Hs_list = node_comm.bcast(NH_Nh_Hs_list, root=0) - I_list = node_comm.bcast(I_list, root=0) - I_halo_list = node_comm.bcast(I_halo_list, root=0) - core_indices_in_sub_expanded_list = node_comm.bcast(core_indices_in_sub_expanded_list, root=0) - Nocc_list = node_comm.bcast(Nocc_list, root=0) - mu0 = node_comm.bcast(mu0, root=0) - - - - - - with torch.no_grad(): - if eng.reconstruct_dm: - fullGraphRho = get_singlePointDM(sdc, eng, rank, 1, comm, parts, partsCoreHalo, sy, hindex, mu0, dm, P_contr, graph_for_pairs, - eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list) - else: - fullGraphRho = get_singlePointDM(sdc, eng, rank, node_numranks, node_comm, parts, partsCoreHalo, sy, hindex, mu0, None, P_contr, graph_for_pairs, - eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, core_indices_in_sub_expanded_list, Nocc_list) - - - ########### GATHER fullGraphRho ########### - - #np.save( 'graphs/fullGraphRho_{}'.format(rank), fullGraphRho,) - - if rank == 0: print("Time to updt DM {:>7.2f} (s)".format(time.perf_counter() - tic)) - - node_comm.Barrier() - - tic = time.perf_counter() - fullGraphRho_LIST = node_comm.gather(fullGraphRho, root=0) - if rank == 0: - - # fullGraphRho_LIST = [] - # for i in range(node_numranks): - # fullGraphRho_LIST.append(np.load('graphs/fullGraphRho_{}.npy'.format(i))) - - fullGraphRho_LIST.append(fullGraph) - fullGraph = add_mult_graphs(fullGraphRho_LIST) - print("Time to add graphs {:>7.2f} (s)".format(time.perf_counter() - tic)) - #fullGraph = add_graphs(fullGraph, fullGraphRho, ) - del fullGraphRho - - - if eng.reconstruct_dm: - trace = get_dmTrace(eng, dm) - print("DM TRACE: {:>10.7f}".format(trace)) - if rank == 0: - tic = time.perf_counter() - trace = torch.sum(P_contr.transpose(0,1).reshape(molecule_whole.molsize*(len(graph_for_pairs[0])-1), 4,4)[graph_maskd].diagonal(dim1=-2, dim2=-1)) - print("DM TRACE: {:>10.7f}".format(trace)) - print("Time to get trace {:>7.2f} (s)".format(time.perf_counter() - tic)) - - else: - fullGraph = None - - if mpiOnDebugFlag: - tic = time.perf_counter() - #comm.Barrier() - fullGraph = comm.bcast(fullGraph, root=0) - if rank == 0: print("Time to bcast fullGraph {:>7.2f} (s)".format(time.perf_counter() - tic)) - - del eValOnRank_list, Q_list, NH_Nh_Hs_list, I_list, I_halo_list, Nocc_list - torch.cuda.empty_cache() - - # Function to calculate tensor size in megabytes (MB) - # if rank == 0: - # # Sort tensors by size and print them - # tensors = list(get_tensors()) - # tensors.sort(key=lambda x: tensor_size(x), reverse=True) - # print("Top memory-consuming tensors:") - # for tensor in tensors: - # if tensor_size(tensor) > 0.1: - # print(f"Tensor size: {tensor_size(tensor):.2f} MB | Shape: {tensor.shape} | Dtype: {tensor.dtype}") - - if rank == 0: print("t Iter {:>8.2f} (s)".format(time.perf_counter() - TIC_iter)) - - ### forces calculation ### - tic = time.perf_counter() - if node_rank < num_gpus: - if node_rank == 0: - primary_comm.Bcast([P_contr.cpu().numpy(), MPI.DOUBLE], root=0) - forces = np.zeros((sy.coords.shape)) - partsCoreHalo = [] - if rank == 0: print("\nCore and halos indices for every part:") - for i in range(sdc.nparts): - coreHalo, nc = get_coreHaloIndices(eng, parts[i], fullGraph, njumps, sdc, sy) - partsCoreHalo.append(coreHalo) - if sdc.verb: print("coreHalo for part", i, "=", coreHalo) - if rank == 0: print('N atoms in core/coreHalo {:>6d} : {:>6d} {:>6d}'.format(i, len(parts[i]), len(coreHalo)), '\n') - - new_graph_for_pairs = np.array(fullGraph.copy()) - for i in range(sy.nats): - for sublist_idx in range(sdc.nparts): - if i in parts[sublist_idx]: - new_graph_for_pairs[i, 0] = len(partsCoreHalo[sublist_idx]) - new_graph_for_pairs[i, 1:new_graph_for_pairs[i][0]+1] = partsCoreHalo[sublist_idx] - break - - #### THIS IS BAD. NEEDS TO BE FIXEd $$$ - P_contr_new = torch.zeros_like(P_contr, device=device) - for i in range(len(new_graph_for_pairs)): - P_contr_new[:,i][ :new_graph_for_pairs[i][0] ][ np.isin(new_graph_for_pairs[i][1:new_graph_for_pairs[i][0]+1], graph_for_pairs[i][1:graph_for_pairs[i][0]+1]) ] = \ - P_contr[:,i][:graph_for_pairs[i][0]][ np.isin(graph_for_pairs[i][1:graph_for_pairs[i][0]+1], new_graph_for_pairs[i][1:new_graph_for_pairs[i][0]+1]) ] - P_contr[:] = P_contr_new[:] - del P_contr_new - - graph_for_pairs = new_graph_for_pairs - graph_maskd = [] - counter = 0 - for j in range(len(graph_for_pairs)): - sub_counter = 0 - for i in graph_for_pairs[j][1:graph_for_pairs[j][0]+1]: - if i==j: - graph_maskd.append(counter) - counter +=1 - sub_counter += 1 - counter += int(sdc.maxDeg - graph_for_pairs[j][0]) - else: - forces = None - partsCoreHalo = None - new_graph_for_pairs = None - graph_for_pairs = None - graph_maskd = None - - if sdc.fDevice == 'cuda': - device = 'cuda:{}'.format(node_rank) - else: - device = 'cpu' - - molSysData = pyseqmObjects(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = sdc.use_pyseqm_lt, device=device) #object with whatever initial parameters and tensors - #molSysData.molecule_whole.coordinates.requires_grad_(True) - - if mpiOnDebugFlag: - forces = gpu_comm.bcast(forces, root=0) - print('HERE1') - partsCoreHalo = gpu_comm.bcast(partsCoreHalo, root=0) - gpu_comm.Barrier() - graph_for_pairs = gpu_comm.bcast(graph_for_pairs, root=0) - new_graph_for_pairs = gpu_comm.bcast(new_graph_for_pairs, root=0) - graph_maskd = gpu_comm.bcast(graph_maskd, root=0) - - if rank == 0: - forces[:] = .0 - gpu_comm.Barrier() - else: - forces = np.zeros((sy.coords.shape)) - - if rank == 0: print("Time init forces {:>8.2f} (s)".format(time.perf_counter() - tic)) - - tic = time.perf_counter() - if eng.interface == "PySEQM": - if eng.reconstruct_dm: - eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, - dm.reshape((molSysData.molecule_whole.nmol, molSysData.molecule_whole.molsize,4, molSysData.molecule_whole.molsize,4)) \ - .transpose(2,3).reshape(molSysData.molecule_whole.nmol*molSysData.molecule_whole.molsize*molSysData.molecule_whole.molsize,4,4),P_contr, graph_for_pairs, graph_maskd) - else: - if sdc.doForces: - eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, num_gpus, gpu_comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, - None, P_contr.to(device), graph_for_pairs, graph_maskd) - else: - with torch.no_grad(): - eElec = get_singlePointForces(sdc, eng, partsPerGPU, partsPerNode, node_id, node_rank, rank, num_gpus, gpu_comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, - None, P_contr.to(device), graph_for_pairs, graph_maskd) - - if mpiOnDebugFlag: - global_Eelec = np.zeros(1, dtype=np.float64) - gpu_comm.Barrier() - gpu_comm.Allreduce(MPI.IN_PLACE, forces, op=MPI.SUM) - #eElec_LIST = gpu_comm.gather(eElec, root=0) - #comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) - gpu_comm.Allreduce(eElec, global_Eelec, op=MPI.SUM) #primary_comm - else: - eElec_LIST = eElec - else: - get_singlePointForces(sdc, eng, rank, numranks, comm, parts, partsCoreHalo, sy, hindex, forces, molSysData, dm) - if rank == 0: print("Time to get electron forces {:>8.2f} (s)".format(time.perf_counter() - tic)) - - if rank == 0: - del molSysData - molSysData = pyseqmObjects(sdc, sy.coords, sy.symbols, sy.types, do_large_tensors = True, device=device) #object with whatever initial parameters and tensors - - if mpiOnDebugFlag: - print("eElec: {:>10.12f}".format(global_Eelec[0]),) - else: - print("eElec: {:>10.12f}".format(eElec[0]),) - - tic = time.perf_counter() - eNucAB = get_eNuc(eng, molSysData) - eTot, eNuc = get_eTot(eng, molSysData, eNucAB, 0) - print("Enuc: {:>10.12f}".format(eNuc),) - L = eNuc.sum() - L.backward() - forceNuc = -molSysData.molecule_whole.coordinates.grad.detach() - molSysData.molecule_whole.coordinates.grad.zero_() - print("Time to get nuclear forces {:>8.2f} (s)".format(time.perf_counter() - tic)) - #print(forceNuc) - np.save('forces_test.np', (forces+forceNuc.cpu().numpy()[0]), ) - #np.save('forces_test.np', (forces), ) diff --git a/src/sedacs/ewald/charge_solver.py b/src/sedacs/ewald/charge_solver.py deleted file mode 100644 index 6404f0c4..00000000 --- a/src/sedacs/ewald/charge_solver.py +++ /dev/null @@ -1,86 +0,0 @@ -from sedacs.ewald import ewald_energy -from sedacs.ewald import CONV_FACTOR -import numpy as np -import matplotlib.pyplot as plt -import torch -from scipy.sparse.linalg import LinearOperator, cg, gmres -from typing import Callable, Optional, Tuple - -__all__ = ["QEQ_solver"] - -def QEQ_solver( - positions: torch.Tensor, - ewald_vec_func: Callable[[torch.Tensor], torch.Tensor], - b: np.ndarray, - h_u: np.ndarray, - init_charges: Optional[np.ndarray] = None, - A_inv: Optional[np.ndarray] = None, - rtol: float = 1e-5, - maxiter: int = 100 -) -> Tuple[torch.Tensor, int]: - """ - Solve the QEq (Charge Equilibration) equations using the GMRES solver. - - This function solves the system for atomic partial charges that minimize - electrostatic energy using an iterative linear solver. - - Args: - positions (torch.Tensor): Atomic positions tensor ([3, N]). - ewald_vec_func (Callable[[torch.Tensor], torch.Tensor]): Function computing Ewald vector. - b (np.ndarray): Negative electronegativity values and total charge constraint. - h_u (np.ndarray): Hardness values. - init_charges (Optional[np.ndarray], optional): Initial charge guess. Defaults to None. - A_inv (Optional[np.ndarray], optional): 1/diag(matrix), for jacobi preconditioner. Defaults to None. - rtol (float, optional): Relative tolerance for convergence. Defaults to 1e-5. - maxiter (int, optional): Maximum number of solver iterations. Defaults to 100. - - Returns: - Tuple[torch.Tensor, int]: Computed charges and iteration count. - """ - dtype = positions.dtype - device = positions.device - np_dtype = np.float32 - if dtype == torch.float64: - np_dtype = np.float64 - - N = positions.shape[1] - res = np.zeros(N+1, dtype=np_dtype) - iter_cnt = 0 - def mv(x): - nonlocal res, iter_cnt - iter_cnt += 1 - q = x[:-1] - elect = x[-1] - total_ch = np.sum(q) - charges = torch.from_numpy(q).type(dtype).to(device) - dq = ewald_vec_func(charges) - dq = dq.cpu().numpy() - res[:-1] = dq + elect + h_u * q - res[-1] = total_ch - return res - ''' - #TODO: Torch based solver is needed to not do data transfer between CPU and GPU. - #The torch based CG solver is already available but not GMRES. - res_torch = torch.zeros(N+1, dtype=dtype, device=device) - def mv_torch(x): - nonlocal res_torch - q = x[:-1] - elect = x[-1] - total_ch = mixed_precision_sum(q) - dq = ewald_vec_func(q) - res_torch[:-1] = dq + elect + h_u * q - res_torch[-1] = total_ch - return res_torch - ''' - - A = LinearOperator((N+1,N+1), matvec=mv) - if init_charges is not None: - init_charges = np.concatenate((init_charges, np.array([0.0]))) - - M = None - if A_inv is not None: - M = LinearOperator((N+1,N+1), matvec=lambda x: A_inv * x) - x, exit_code = gmres(A, b, x0=init_charges, rtol=rtol, maxiter=maxiter, M=M) - if exit_code > 0: - print(f"[WARNING] No QEQ convergence after {exit_code} iterations") - return torch.from_numpy(x).to(dtype).to(device), iter_cnt \ No newline at end of file diff --git a/src/sedacs/fock.py b/src/sedacs/fock.py deleted file mode 100644 index d27f41fd..00000000 --- a/src/sedacs/fock.py +++ /dev/null @@ -1,45 +0,0 @@ -from sedacs.interface_pyseqm import get_full_fock_pyseqm -import torch - -__all__ = ["get_fock"] - - -## Build the density matrix. -# @brief This will build a density matrix. Typically this will be done interfacing with an engine. -# @param eng Engine object. See sdc_engine.py for a full explanation -# @param nocc Number of occupied states -# @param ham Hamiltonian matrix -# @verbose Verbosity -# -def get_fock(eng, obj): - if eng.interface == "None": - print("ERROR!!! - Write your own Fock") - - # Tight interface using modules or an external code compiled as a library - elif eng.interface == "Module": - # We will call proxyA directly as it will be loaded as a module. - print("ERROR!!! - Write your own Fock") - exit() - elif eng.interface == "PySEQM": - - W_whole = torch.tensor([0], device=obj.molecule_whole.nocc.device) - return get_full_fock_pyseqm(obj.molecule_whole.nmol, obj.molecule_whole.molsize, obj.molecule_whole.dm, obj.M_whole, - obj.molecule_whole.maskd, obj.molecule_whole.mask, - obj.molecule_whole.idxi, obj.molecule_whole.idxj, obj.w_whole, W_whole, - obj.molecule_whole.parameters['g_ss'], - obj.molecule_whole.parameters['g_pp'], - obj.molecule_whole.parameters['g_sp'], - obj.molecule_whole.parameters['g_p2'], - obj.molecule_whole.parameters['h_sp'], - obj.molecule_whole.method, - obj.molecule_whole.parameters['s_orb_exp_tail'], - obj.molecule_whole.parameters['p_orb_exp_tail'], - obj.molecule_whole.parameters['d_orb_exp_tail'], - obj.molecule_whole.Z, - obj.molecule_whole.parameters['F0SD'], - obj.molecule_whole.parameters['G2SD']) - - else: - print("ERROR!!!: Interface type not recognized. Use any of the following: Module,File,Socket,MDI") - exit() - return rho diff --git a/src/sedacs/force_fields.py b/src/sedacs/force_fields.py deleted file mode 100644 index d080b207..00000000 --- a/src/sedacs/force_fields.py +++ /dev/null @@ -1,53 +0,0 @@ -"""ffields -Some functions to create force fields/potentials - -So far: Harmonic ffields. -""" - -import numpy as np - -from sedacs.message import error_at, status_at - -__all__ = ["get_classical_forces", "harmonic_potential"] - - -def get_classical_forces(coords, types, symbols, latticeVectors, nl, nlTrX, nlTrY, nlTrZ, fFieldName, verb=False): - if verb: - status_at("get_sdc_classical_force") - if fFieldName == "HarmonicAll": - return harmonic_potential(coords, nl, nlTrX, nlTrY, nlTrZ, verb=False) - - error_at("get_sdc_classical_force", message="No valid force filed name") - - -def harmonic_potential(coords, nl, nlTrX, nlTrY, nlTrZ, verb=False): - if verb: - status_at("harmonic_potential") - - # Get the forces on each atom - nats = len(coords[:, 0]) - forces = np.zeros((nats, 3)) - dVect = np.zeros(3) - forcesIJ = np.zeros(3) - for i in range(nats): - for j in range(1, nl[i, 0] + 1): - jj = nl[i, j] - jjX = coords[jj, 0] + nlTrX[j] - jjY = coords[jj, 1] + nlTrY[j] - jjZ = coords[jj, 2] + nlTrZ[j] - - dVect[0] = coords[i, 0] - jjX - dVect[1] = coords[i, 1] - jjY - dVect[2] = coords[i, 2] - jjZ - - distance2 = dVect[0] ** 2 + dVect[1] ** 2 + dVect[2] ** 2 - distance = np.sqrt(distance2) - if distance != 0.0: - dVectVersor = dVect / distance - - forcesIJ[:] = -2 * (distance - 1.0) * dVectVersor[:] - forces[i] = forces[i] + forcesIJ - # else: - # print("WARNING") - - return forces diff --git a/src/sedacs/integrate.py b/src/sedacs/integrate.py deleted file mode 100644 index 4b975f6f..00000000 --- a/src/sedacs/integrate.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Do MD timestep using GJF w half velocity""" - -import numpy as np - -__all__ = ["do_timestep"] - - -## Do time step integration. -# @brief -# @param -# @param -# @param -# @param -# @verb Verbosity -# -def do_timestep(coords, vels, forces, masses, gamma, dt, kT=None, verb=False): - n = np.shape(coords[:, :]) - - kT = 8.610e-5 * 300.0 - - vels[:, :] = vels[:, :] + dt * forces[:, :] / 2.0 / masses[:, :] - coords[:, :] = coords[:, :] + dt * vels[:, :] / 2.0 - - if gamma > 0 and kT is not None: - c = (1 - gamma * dt / 2.0) / (1 + gamma * dt / 2.0) - vels[:, :] = c * vels[:, :] + np.sqrt((1 - c**2) * kT / masses[:, :]) * np.random.normal(0, 1, n) - - coords[:, :] = coords[:, :] + dt * vels[:, :] / 2.0 - vels[:, :] = vels[:, :] + dt * forces[:, :] / 2.0 / masses[:, :] - - return coords, vels diff --git a/src/sedacs/interface_pyseqm.py b/src/sedacs/interface_pyseqm.py deleted file mode 100644 index 9708da79..00000000 --- a/src/sedacs/interface_pyseqm.py +++ /dev/null @@ -1,701 +0,0 @@ -import torch -import numpy as np -import sys -import scipy.linalg as sp -from sedacs.system import get_hindex -import sys - -try: - import seqm; PYSEQM = True - from seqm.seqm_functions.constants import Constants - from seqm.seqm_functions.make_dm_guess import make_dm_guess - from seqm.Molecule import Molecule - from seqm.ElectronicStructure import Electronic_Structure - import numpy as np - from seqm.seqm_functions.read_xyz import read_xyz - from seqm.MolecularDynamics import Geometry_Optimization_SD - from seqm.seqm_functions.fock import fock - from seqm.seqm_functions.fock_u_batch import fock_u_batch - from seqm.seqm_functions.hcore import hcore - from seqm.seqm_functions.diag import sym_eig_trunc - from seqm.seqm_functions.pack import * - from seqm.seqm_functions.energy import * - seqm.seqm_functions.scf_loop.debug=False - import torch - import time -except: PYSEQM = False - -class pyseqmObjects(torch.nn.Module): - ''' - Container for pyseqm objects - ''' - def __init__(self, sdc, coords, symbols,atomTypes, do_large_tensors=True, device='cpu'): - """ - Constructor - """ - super().__init__() - # self.M_whole, self.w_whole, self.molecule_whole, self.rho0xi_whole, self.rho0xj_whole = \ - # get_hcore_pyseqm(coords, symbols, atomTypes) - - self.M_whole, self.w_whole = None, None - self.molecule_whole = get_molecule_pyseqm(sdc, coords, symbols, atomTypes, do_large_tensors=do_large_tensors, device=device)[0].to(device) - if do_large_tensors: ### some tensors for calculating nuclear forces - self.w_ssss = torch.zeros_like(self.molecule_whole.idxi) - #print('Creating DM guess.') - #make_dm_guess(self.molecule_whole, self.molecule_whole.seqm_parameters, mix_homo_lumo=False, mix_coeff=0.3, overwrite_existing_dm=True); - ev = 27.21 - rho_0 = 0.5*ev/self.molecule_whole.parameters['g_ss'] - self.rho0xi_whole = rho_0[self.molecule_whole.idxi].clone() - self.rho0xj_whole = rho_0[self.molecule_whole.idxj].clone() - A = (self.molecule_whole.parameters['rho_core'][self.molecule_whole.idxi] != 0.000) - B = (self.molecule_whole.parameters['rho_core'][self.molecule_whole.idxj] != 0.000) - self.rho0xi_whole[A] =self.molecule_whole.parameters['rho_core'][self.molecule_whole.idxi][A] - self.rho0xj_whole[B] =self.molecule_whole.parameters['rho_core'][self.molecule_whole.idxj][B] - -def get_coreHalo_ham_inds(partIndex, partCoreHaloIndex, sdc, sy, subSy, device='cpu'): - ''' - partIndex: core indices - partCoreHaloIndex: core+halo indices - sdc: - sy: - subSy: - Function returns: - core_indices_in_sub: core indices of atoms in core+halo - core_indices_in_sub_expanded: core indices of core+halo hamiltonian in 4x4 blocks form (pyseqm format) - hindex_sub: orbital index for each atom in the CH (in CH numbering) - ''' - # generate local indexing of core+halo atoms - indices_in_sub = torch.linspace(0, len(partCoreHaloIndex) - 1, len(partCoreHaloIndex), dtype=sdc.torch_int_dt, device=device) - core_indices_in_sub = indices_in_sub[torch.isin(torch.tensor(partCoreHaloIndex, device=device), torch.tensor(partIndex, device=device))] # $$$ torch.searchsorted might be better - block_size = 4 - # Generate the expanded indices for each block - base_indices = torch.arange(block_size, dtype=sdc.torch_int_dt, device=device) # Create a base index tensor of size block_size - core_indices_in_sub_expanded = core_indices_in_sub.unsqueeze(1) * block_size + base_indices - core_indices_in_sub_expanded = core_indices_in_sub_expanded.flatten() - - norbs, norbs_for_every_type, hindex_sub, numel, numel_for_every_type = get_hindex(sdc.orbs, sdc.valency, sy.symbols, subSy.types) - hindex_sub = torch.from_numpy(hindex_sub).to(device, dtype=sdc.torch_int_dt) - return core_indices_in_sub, core_indices_in_sub_expanded, hindex_sub - -def get_nucAB_energy_pyseqm(Z, const, nmol, ni, nj, idxi, idxj, rij, \ - rho0xi,rho0xj,alp, chi, gam, method, parnuc): - return pair_nuclear_energy(Z, const, nmol, ni, nj, idxi, idxj, rij, \ - rho0xi,rho0xj,alp, chi, gam=gam, method=method, parameters=parnuc) - -def get_total_energy_pyseqm(nmol, pair_molid, EnucAB, Eelec): - return total_energy(nmol, pair_molid, EnucAB, Eelec) - -def get_full_fock_pyseqm(nmol, molsize, P, M, maskd, mask, idxi, idxj, w, W, gss, gpp, gsp, gp2, hsp, - themethod, zetas, zetap, zetad, Z, F0SD, G2SD): - return fock(nmol, molsize, P, M, maskd, mask, idxi, idxj, w, W, gss, gpp, gsp, gp2, hsp, - themethod, zetas, zetap, zetad, Z, F0SD, G2SD) - -def get_fock_pyseqm(P, P_sub, M, w_2, block_indices, nmol, idxi, idxj, rij, parameters, maskd_sub, mask_sub): - ''' - Function returns Fock matrix for CH. In 4x4 block pyseqm format - P: diagonal dm blocks of the whole system - P_sub: subsystem dm - M: 1elec hamiltonian of subsystem - w_2: 2c2e ints. subsystem-subsystem and subsystem-outer. no outer-outer - block_indices: subsystem atom numbers - nmol: number of molecules in a batch. Always 1 in SEDACS. - idxi, idxj: unique pairs between atoms in subsystem or between an atom in subsystem and in the outer system. - rij: distances for unique pairs - parameters: seqm atomic params - maskd_sub: indices of diagonal blocks in subsystem - mask_sub: indices of off-diagonal blocks in subsystem - ''' - idx_to_idx_mapping = {value: idx for idx, value in enumerate(block_indices)} - max_key = max(idx_to_idx_mapping.keys()) - lookup_tensor = torch.zeros(max_key + 1, dtype=torch.long, device = P_sub.device) - # Populate the lookup tensor - for key, value in idx_to_idx_mapping.items(): - lookup_tensor[key] = value - max_i = idxi.max() - max_j = idxj.max() - atom_max = max(max_i,max_j) - in_block_mask = torch.zeros(atom_max+1,dtype=torch.bool, device = P_sub.device) - in_block_mask[block_indices]=True - - isini = in_block_mask[idxi]#.to(torch.bool) - where_isini = torch.nonzero(isini).squeeze() - - isinj = in_block_mask[idxj]#.to(torch.bool) - where_isinj = torch.nonzero(isinj).squeeze() - - loc_i = idxi[isini] - loc_j = idxj[isinj] - - ### first doing idxi because its sorted - # idxi_sub_ovrlp_with_rest = torch.isin(idxi, block_indices) # <- insted of this - # Searchsorted gives you the indices where the elements should be placed to maintain order. Works with idxi (sorted) but not with idxj (not sorted) - pos = torch.searchsorted(block_indices, idxi) - # Ensure the indices are within bounds - pos = torch.clamp(pos, max=len(block_indices) - 1) - # Check if the positions are valid and match - idxi_sub_ovrlp_with_rest = (pos < len(block_indices)) & (block_indices[pos] == idxi) - - ### second, doing indx i because its a sequence of sorted maxtrix triangle rows - # idxj_sub_ovrlp_with_rest = torch.isin(idxj, block_indices) # <- instead of this - # start_ind = 0 - # end_ind = len(P) - 1 - # idxj_sub_ovrlp_with_rest = torch.zeros(int((len(P)*(len(P)-1)/2)), dtype=torch.bool, device=P.device) - # tmp_j = idxj[start_ind:end_ind] - # pos = torch.searchsorted(block_indices, tmp_j) - # pos = torch.clamp(pos, max=len(block_indices) - 1) - # valid_top_row = (pos < len(block_indices)) & (block_indices[pos] == tmp_j) - # del tmp_j, pos - # for i in range(0,len(P)): ### $$$ needs vecorization - # idxj_sub_ovrlp_with_rest[start_ind:end_ind] = valid_top_row[i:] - # start_ind = end_ind - # end_ind = end_ind + len(P) - i - 2 - idxj_sub_ovrlp_with_rest = torch.isin(idxj, block_indices) - - ### Populate diagonal 1c ### - F = M.clone() - Pptot = P_sub[...,1,1]+P_sub[...,2,2]+P_sub[...,3,3] - TMP = torch.zeros_like(M) - TMP[maskd_sub,0,0] = 0.5*P_sub[maskd_sub,0,0]*parameters['g_ss'][block_indices] + Pptot[maskd_sub]*(parameters['g_sp'][block_indices]-0.5*parameters['h_sp'][block_indices]) - for i in range(1,4): - #(p,p) - TMP[maskd_sub,i,i] = P_sub[maskd_sub,0,0]*(parameters['g_sp'][block_indices]-0.5*parameters['h_sp'][block_indices]) + 0.5*P_sub[maskd_sub,i,i]*parameters['g_pp'][block_indices] \ - + (Pptot[maskd_sub] - P_sub[maskd_sub,i,i]) * (1.25*parameters['g_p2'][block_indices]-0.25*parameters['g_pp'][block_indices]) - #(s,p) = (p,s) upper triangle - TMP[maskd_sub,0,i] = P_sub[maskd_sub,0,i]*(1.5*parameters['h_sp'][block_indices] - 0.5*parameters['g_sp'][block_indices]) - #(p,p*) - for i,j in [(1,2),(1,3),(2,3)]: - TMP[maskd_sub,i,j] = P_sub[maskd_sub,i,j]* (0.75*parameters['g_pp'][block_indices] - 1.25*parameters['g_p2'][block_indices]) - - F.add_(TMP) - del TMP, Pptot - - ############################################## - ### Populate diagonal 2c ### - dtype = P.dtype - device = P.device - weight = torch.tensor([1.0, - 2.0, 1.0, - 2.0, 2.0, 1.0, - 2.0, 2.0, 2.0, 1.0],dtype=dtype, device=device).reshape((-1,10)) - - PA = (P[idxi[idxj_sub_ovrlp_with_rest]][...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)]*weight).reshape((-1,10,1)) - PB = (P[idxj[idxi_sub_ovrlp_with_rest]][...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)]*weight).reshape((-1,1,10)) - - #w_2_inj=w_2[where_isinj] - suma = torch.einsum('ijk,ijk->ik',PA,w_2[where_isinj]) - sumA = torch.zeros(torch.sum(isinj),4,4,dtype=dtype, device=device) - sumA[...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)] = suma - jjj = lookup_tensor[loc_j] - indj_of_new_diag_in_old = maskd_sub[jjj] - F.index_add_(0,indj_of_new_diag_in_old, sumA) - del PA, where_isinj, suma, jjj, loc_j, indj_of_new_diag_in_old, sumA - - #w_2_ini=w_2[where_isini] - sumb = torch.einsum('ijk,ijk->ij',PB,w_2[where_isini]) - sumB = torch.zeros(torch.sum(isini),4,4,dtype=dtype, device=device) - sumB[...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)] = sumb - iii=lookup_tensor[loc_i] - indi_of_new_diag_in_old = maskd_sub[iii] - F.index_add_(0,indi_of_new_diag_in_old, sumB) - del PB, where_isini, sumb, iii, loc_i, indi_of_new_diag_in_old, sumB - - #################################################### - ### Populate off-diagonal ### - sub_inds = idxi_sub_ovrlp_with_rest * idxj_sub_ovrlp_with_rest - - summ = torch.zeros(w_2[sub_inds].shape[0],4,4,dtype=dtype, device=device) - ind = torch.tensor([[0,1,3,6], - [1,2,4,7], - [3,4,5,8], - [6,7,8,9]],dtype=torch.int64, device=device) - - # Pp =P[mask], P_{mu \in A, lambda \in B} - Pp = -0.5*P_sub[mask_sub] #* (rij.unsqueeze(-1).unsqueeze(-1) < 2.5) #*(rij > 2.0) - w2_sub_inds=w_2[sub_inds] - - for i in range(4): - for j in range(4): - #\sum_{nu \in A} \sum_{sigma \in B} P_{nu, sigma} * (mu nu, lambda, sigma) - a1=w2_sub_inds[...,ind[i],:][...,:,ind[j]] - summ[...,i,j] = torch.einsum('ijk,ijk->i',Pp,a1)#torch.sum(Pp*a1,dim=(1,2)) - del Pp - F.index_add_(0,mask_sub,summ) - del summ - - F0 = F.reshape(nmol,len(block_indices),len(block_indices),4,4).transpose(2,3) \ - .reshape(nmol, 4*len(block_indices), 4*len(block_indices)) - F0.add_(F0.triu(1).transpose(1,2)); - return F0 - -def get_fock_pyseqm_u(P, P_sub, M, w_2, block_indices, nmol, idxi, idxj, rij, parameters, maskd_sub, mask_sub): - ''' - Function returns Fock matrix for CH. In 4x4 block pyseqm format - P: diagonal dm blocks of the whole system - P_sub: subsystem dm - M: 1elec hamiltonian of subsystem - w_2: 2c2e ints. subsystem-subsystem and subsystem-outer. no outer-outer - block_indices: subsystem atom numbers - nmol: number of molecules in a batch. Always 1 in SEDACS. - idxi, idxj: unique pairs between atoms in subsystem or between an atom in subsystem and in the outer system. - rij: distances for unique pairs - parameters: seqm atomic params - maskd_sub: indices of diagonal blocks in subsystem - mask_sub: indices of off-diagonal blocks in subsystem - ''' - idx_to_idx_mapping = {value: idx for idx, value in enumerate(block_indices)} - max_key = max(idx_to_idx_mapping.keys()) - lookup_tensor = torch.zeros(max_key + 1, dtype=torch.long, device = P_sub.device) - # Populate the lookup tensor - for key, value in idx_to_idx_mapping.items(): - lookup_tensor[key] = value - max_i = idxi.max() - max_j = idxj.max() - atom_max = max(max_i,max_j) - in_block_mask = torch.zeros(atom_max+1,dtype=torch.bool, device = P_sub.device) - in_block_mask[block_indices]=True - - isini = in_block_mask[idxi]#.to(torch.bool) - where_isini = torch.nonzero(isini).squeeze() - - isinj = in_block_mask[idxj]#.to(torch.bool) - where_isinj = torch.nonzero(isinj).squeeze() - - loc_i = idxi[isini] - loc_j = idxj[isinj] - - ### first doing idxi because its sorted - # idxi_sub_ovrlp_with_rest = torch.isin(idxi, block_indices) # <- insted of this - # Searchsorted gives you the indices where the elements should be placed to maintain order. Works with idxi (sorted) but not with idxj (not sorted) - pos = torch.searchsorted(block_indices, idxi) - # Ensure the indices are within bounds - pos = torch.clamp(pos, max=len(block_indices) - 1) - # Check if the positions are valid and match - idxi_sub_ovrlp_with_rest = (pos < len(block_indices)) & (block_indices[pos] == idxi) - - ### second, doing indx i because its a sequence of sorted maxtrix triangle rows - # idxj_sub_ovrlp_with_rest = torch.isin(idxj, block_indices) # <- instead of this - # start_ind = 0 - # end_ind = len(P) - 1 - # idxj_sub_ovrlp_with_rest = torch.zeros(int((len(P)*(len(P)-1)/2)), dtype=torch.bool, device=P.device) - # tmp_j = idxj[start_ind:end_ind] - # pos = torch.searchsorted(block_indices, tmp_j) - # pos = torch.clamp(pos, max=len(block_indices) - 1) - # valid_top_row = (pos < len(block_indices)) & (block_indices[pos] == tmp_j) - # del tmp_j, pos - # for i in range(0,len(P)): ### $$$ needs vecorization - # idxj_sub_ovrlp_with_rest[start_ind:end_ind] = valid_top_row[i:] - # start_ind = end_ind - # end_ind = end_ind + len(P) - i - 2 - idxj_sub_ovrlp_with_rest = torch.isin(idxj, block_indices) - - P_sum_ab = P_sub[0]+P_sub[1] - - PAlpha_ = P_sub - - - ### Populate diagonal 1c ### - F = M.expand(2,-1,-1,-1).clone() - Pptot = P_sum_ab[...,1,1]+P_sum_ab[...,2,2]+P_sum_ab[...,3,3] - PAlpha_ptot_ = PAlpha_[...,1,1]+PAlpha_[...,2,2]+PAlpha_[...,3,3] - #(s,s) - TMP = torch.zeros_like(F) - TMP[:,maskd_sub,0,0] = PAlpha_[[1,0]][:,maskd_sub,0,0]*parameters['g_ss'][block_indices] + Pptot[maskd_sub]*parameters['g_sp'][block_indices] - PAlpha_ptot_[:,maskd_sub]*parameters['h_sp'][block_indices] - for i in range(1,4): - #(p,p) - TMP[:,maskd_sub,i,i] = P_sum_ab[maskd_sub,0,0]*parameters['g_sp'][block_indices]-PAlpha_[:,maskd_sub,0,0]*parameters['h_sp'][block_indices] + PAlpha_[[1,0]][:,maskd_sub,i,i]*parameters['g_pp'][block_indices] \ - +(Pptot[maskd_sub]-P_sum_ab[maskd_sub,i,i])*parameters['g_p2'][block_indices] - 0.5*(PAlpha_ptot_[:,maskd_sub]-PAlpha_[:,maskd_sub,i,i])*(parameters['g_pp'][block_indices]-parameters['g_p2'][block_indices]) - - #(s,p) = (p,s) upper triangle - TMP[:,maskd_sub,0,i] = 2*P_sum_ab[maskd_sub,0,i]*parameters['h_sp'][block_indices] - PAlpha_[:,maskd_sub,0,i]*(parameters['h_sp'][block_indices]+parameters['g_sp'][block_indices]) - #(p,p*) - for i,j in [(1,2),(1,3),(2,3)]: - TMP[:,maskd_sub,i,j] = P_sum_ab[maskd_sub,i,j] * (parameters['g_pp'][block_indices] - parameters['g_p2'][block_indices]) - 0.5*PAlpha_[:,maskd_sub,i,j]*(parameters['g_pp'][block_indices] + parameters['g_p2'][block_indices]) - - F.add_(TMP) - del TMP, Pptot, PAlpha_ptot_ - - ############################################## - ### Populate diagonal 2c ### - dtype = P.dtype - device = P.device - weight = torch.tensor([1.0, - 2.0, 1.0, - 2.0, 2.0, 1.0, - 2.0, 2.0, 2.0, 1.0],dtype=dtype, device=device).reshape((-1,10)) - - PA = ((P[0]+P[1])[idxi[idxj_sub_ovrlp_with_rest]][...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)]*weight).reshape((-1,10,1)) - PB = ((P[0]+P[1])[idxj[idxi_sub_ovrlp_with_rest]][...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)]*weight).reshape((-1,1,10)) - - #w_2_inj=w_2[where_isinj] - suma = torch.sum(PA*w_2[where_isinj],dim=1) - sumA = torch.zeros(torch.sum(isinj),4,4,dtype=dtype, device=device) - sumA[...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)] = suma - jjj = lookup_tensor[loc_j] - indj_of_new_diag_in_old = maskd_sub[jjj] - F[0].index_add_(0,indj_of_new_diag_in_old, sumA) - F[1].index_add_(0,indj_of_new_diag_in_old, sumA) - del PA, where_isinj, suma, jjj, loc_j, indj_of_new_diag_in_old, sumA - - #w_2_ini=w_2[where_isini] - sumb = torch.einsum('ijk,ijk->ij',PB,w_2[where_isini]) - sumB = torch.zeros(torch.sum(isini),4,4,dtype=dtype, device=device) - sumB[...,(0,0,1,0,1,2,0,1,2,3),(0,1,1,2,2,2,3,3,3,3)] = sumb - iii=lookup_tensor[loc_i] - indi_of_new_diag_in_old = maskd_sub[iii] - F[0].index_add_(0,indi_of_new_diag_in_old, sumB) - F[1].index_add_(0,indi_of_new_diag_in_old, sumB) - del PB, where_isini, sumb, iii, loc_i, indi_of_new_diag_in_old, sumB - - #################################################### - ### Populate off-diagonal ### - sub_inds = idxi_sub_ovrlp_with_rest * idxj_sub_ovrlp_with_rest - - summ = torch.zeros(2, w_2[sub_inds].shape[0],4,4,dtype=dtype, device=device) - ind = torch.tensor([[0,1,3,6], - [1,2,4,7], - [3,4,5,8], - [6,7,8,9]],dtype=torch.int64, device=device) - - # Pp =P[mask], P_{mu \in A, lambda \in B} - w2_sub_inds=w_2[sub_inds] - for i in range(4): - for j in range(4): - #\sum_{nu \in A} \sum_{sigma \in B} P_{nu, sigma} * (mu nu, lambda, sigma) - # a1=w2_sub_inds[...,ind[i],:][...,:,ind[j]] - # summ[...,i,j] = torch.einsum('ijk,ijk->i',-PAlpha_,a1)#torch.sum(Pp*a1,dim=(1,2)) - summ[...,i,j] = torch.sum(-PAlpha_[:,mask_sub]*w2_sub_inds[...,ind[i],:][...,:,ind[j]],dim=(2,3)) - - F.index_add_(1,mask_sub,summ) - del summ - - F0 = F.reshape(2, nmol, len(block_indices), len(block_indices), 4, 4) \ - .transpose(3,4) \ - .reshape(2, nmol, 4*len(block_indices), 4*len(block_indices)).transpose(0,1) - - F0.add_(F0.triu(1).transpose(2,3)) - return F0 - - -def get_hcore_pyseqm(coords,symbols,atomTypes, device='cpu', verb=False): - print('Creating Hcore.') - if(PYSEQM == False): - print("ERROR: No PySEQM installed") - symbols_internal = np.array([ "Bl" , - "H" , "He", - "Li", "Be", "B" , "C" , "N" , "O" , "F" , "Ne", \ - "Na", "Mg", "Al", "Si", "P" , "S" , "Cl", "Ar", - ], dtype=str) - numel_internal = np.zeros(len(symbols_internal),dtype=int) - numel_internal[:] = 0, \ - 1 , 2, \ - 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, \ - 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, - - bas_per_atom = np.zeros(len(symbols_internal),dtype=int) - bas_per_atom[:] = 0, \ - 1 ,1 ,\ - 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ - 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ - - # Map symbols to indices in symbols_internal - symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} - - # Translate `symbols` to `symbols_internal` indices - mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) - - # Convert atomTypes to `symbols_internal` indices - atom_internal_indices = mapped_indices[atomTypes] - - species = torch.as_tensor(np.array([atom_internal_indices,]), dtype=torch.int64, device=device) - coordinates = torch.tensor(np.array([coords,]), device=device, dtype=torch.float64) - const = Constants().to(device) - elements = [0]+sorted(set(species.reshape(-1).tolist())) - seqm_parameters = { - 'method' : 'PM6_SP', # AM1, MNDO, PM3, PM6, PM6_SP. PM6_SP is PM6 without d-orbitals. Effectively, PM6 for the first two rows of periodic table - 'scf_eps' : 1.0e-6, # unit eV, change of electric energy, as nuclear energy doesnt' change during SCF - 'scf_converger' : [0,0.8,0.93,30], # converger used for scf loop - # [0, 0.1], [0, alpha] constant mixing, P = alpha*P + (1.0-alpha)*Pnew - # [1], adaptive mixing - # [2], adaptive mixing, then pulay - 'sp2' : [False, 1.0e-5], # whether to use sp2 algorithm in scf loop, - #[True, eps] or [False], eps for SP2 conve criteria - 'elements' : elements, #[0,1,6,8], - 'learned' : [], # learned parameters name list, e.g ['U_ss'] - #'parameter_file_dir' : '../seqm/params/', # file directory for other required parameters - 'pair_outer_cutoff' : 1.0e10, # consistent with the unit on coordinates - 'eig' : True, # store orbital energies - } - molecule = Molecule(const, seqm_parameters, coordinates, species).to(device) - molecule.coordinates.requires_grad_(True) - - torch.cuda.empty_cache() - M, w, rho0xi, rho0xj = hcore(molecule) - - return M, w, molecule, rho0xi, rho0xj - -def get_molecule_pyseqm(sdc, coords, symbols, atomTypes, do_large_tensors=True, device='cpu', verb=False): - ''' - Function returns pyseqm molecule object for SEDACS - sdc: - coords: coordinates array - symbols: - atomTypes: - do_large_tensors: if False, PySEQM won't calculate large tensors like idxi, idxj, rij, xij, mask - ''' - # move to a sep file $$$ - torch.cuda.empty_cache() - """PYSEQM""" - # COHO - # symbols: (C, O, H) - # atomsTypes (0,1,2,1) - # construc dict: - if(PYSEQM == False): - print("ERROR: No PySCF installed") - - symbols_internal = np.array([ "Bl" , - "H" , "He", - "Li", "Be", "B" , "C" , "N" , "O" , "F" , "Ne", \ - "Na", "Mg", "Al", "Si", "P" , "S" , "Cl", "Ar", - ], dtype=str) - numel_internal = np.zeros(len(symbols_internal),dtype=int) - numel_internal[:] = 0, \ - 1 , 2, \ - 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, \ - 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, - - bas_per_atom = np.zeros(len(symbols_internal),dtype=int) - bas_per_atom[:] = 0, \ - 1 ,1 ,\ - 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ - 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ - - # Map symbols to indices in symbols_internal - symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} - # Translate `symbols` to `symbols_internal` indices - mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) - # Convert atomTypes to `symbols_internal` indices - atom_internal_indices = mapped_indices[atomTypes] - if sdc.torch_dt == torch.float64: - dtype_int = torch.int64 - else: - dtype_int = torch.int32 - species = torch.as_tensor(np.array([atom_internal_indices,]), dtype=dtype_int, device=device) - - if torch.is_tensor(coords): - coordinates = coords - else: - coordinates = torch.tensor(np.array([coords]), device=device, dtype=sdc.torch_dt) - - const = Constants().to(device) - elements = [0]+sorted(set(species.reshape(-1).tolist())) - seqm_parameters = { - 'method' : 'PM6_SP', # AM1, MNDO, PM3, PM6, PM6_SP. PM6_SP is PM6 without d-orbitals. Effectively, PM6 for the first two rows of periodic table - 'scf_eps' : 1.0e-6, # unit eV, change of electric energy, as nuclear energy doesnt' change during SCF - 'scf_converger' : [0,0.8,0.93,30], # converger used for scf loop - # [0, 0.1], [0, alpha] constant mixing, P = alpha*P + (1.0-alpha)*Pnew - # [1], adaptive mixing - # [2], adaptive mixing, then pulay - 'sp2' : [False, 1.0e-5], # whether to use sp2 algorithm in scf loop, - #[True, eps] or [False], eps for SP2 conve criteria - 'elements' : elements, #[0,1,6,8], - 'learned' : [], # learned parameters name list, e.g ['U_ss'] - #'parameter_file_dir' : '../seqm/params/', # file directory for other required parameters - 'pair_outer_cutoff' : 1.0e10, # consistent with the unit on coordinates - 'eig' : True, # store orbital energies - 'UHF': sdc.UHF, - } - - # Charge does not matter. Assigned to avoid internal pyseqm error. - if torch.sum(species)%2 == 0: - charges = 0 - else: - charges = -1 - - molecule = Molecule(const, seqm_parameters, coordinates, species, charges=charges, do_large_tensors=do_large_tensors).to(device) - return molecule, molecule.nocc - - -def get_eVals_pyseqm(sdc, H, Nocc, core_indices_in_sub_expanded_packed, molecule, verb=False, calcD=False): - ''' - Function returns eigenvalues, dVals, eigenvectors, list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham] - H: hamiltonian, 4x4 blocks - Nocc: number of occupied states - core_indices_in_sub_expanded_packed: core indices of core+halo hamiltonian in normal form corresponding to the number of AOs per atom - ''' - if(verb): print("Computing eVals/dVals") - - E_val, Q = sym_eig_trunc( H, molecule.nHeavy, molecule.nHydro, Nocc, eig_only=True) - Q = Q[0] - - if sdc.UHF: # open shell - N = Q.shape[-1] - dVals = torch.sum(Q[:, core_indices_in_sub_expanded_packed, :] ** 2, dim=1) - return E_val[0,:,:N], dVals.cpu().numpy(), Q - else: # closed shell - N = len(Q) - E_val = E_val[0,:N] - - #homoIndex = Nocc - 1 - #lumoIndex = Nocc - #mu_test = 0.5*(E_val[homoIndex] + E_val[lumoIndex]) #don't need it - #print(' SubSys HOMO/LUMO:', np.round(E_val[homoIndex].item(),4), np.round(E_val[lumoIndex].item(),4), end=" ") - - # rho = Q@f_vector@Q.T - # or - # rho_ij = SUM_k Q_ik * f_kk * Q_jk - dVals = torch.sum(Q[core_indices_in_sub_expanded_packed, :] ** 2, dim=0) - return E_val, dVals.cpu().numpy(), Q - - -def get_densityMatrix_renormalized_pyseqm(sdc, E_val, Q, Tel, mu0, NH_Nh_Hs): - ''' - Function returns dm corrected by fermi occupancies - E_val: eigenvalues - Q: eigenvectors - Tel: electronic temperature - mu0: chemical potential - NH_Nh_Hs: list of [number_of_heavy_atoms, number_of_hydrogens, dim_of_coreHalo_ham] - ''' - - kB = 8.61739e-5 # eV/K, kB = 6.33366256e-6 Ry/K, kB = 3.166811429e-6 Ha/K, #kB = 3.166811429e-6 #Ha/K - beta = 1./(kB*Tel) - - - # two lines below are vectorization of this: D = 2*sum(torch.outer(Q[:, i],Q[:, i]*f[i]) for i in range(Nocc)) - if sdc.UHF: - f = (1/(torch.exp(beta*(E_val - np.expand_dims(mu0, axis=1))) + 1)).unsqueeze(1) - Q_weighted = Q * f # Broadcasting multiplication - D = Q @ Q_weighted.transpose(-2,-1) - D = unpack(D, NH_Nh_Hs[0].repeat_interleave(2), NH_Nh_Hs[1].repeat_interleave(2), NH_Nh_Hs[2]) - else: - f = 1/(torch.exp(beta*(E_val - mu0)) + 1) - Q_weighted = Q * f # Broadcasting multiplication - D = 2 * Q @ Q_weighted.T - D = unpack(D, NH_Nh_Hs[0], NH_Nh_Hs[1], NH_Nh_Hs[2]) - return D - - -def get_overlap_pyseqm(coords,symbols,atomTypes, hindex, verb=False): - '''Overlap matrix from pyseqm. Returned in a packed form (not 4x4 blocks pyseqm format)''' - - # COHO - # symbols: (C, O, H) - # atomsTypes (0,1,2,1) - # construc dict: - if(PYSEQM == False): - print("ERROR: No PySCF installed") - from seqm.seqm_functions.constants import Constants - from seqm.Molecule import Molecule - import numpy as np - from seqm.seqm_functions.pack import pack - from seqm.seqm_functions.diat_overlap_PM6_SP import diatom_overlap_matrix_PM6_SP - from seqm.seqm_functions.constants import overlap_cutoff - seqm.seqm_functions.scf_loop.debug=False - - device = torch.device('cpu') - symbols_internal = np.array([ "Bl" , - "H" , "He", - "Li", "Be", "B" , "C" , "N" , "O" , "F" , "Ne", \ - "Na", "Mg", "Al", "Si", "P" , "S" , "Cl", "Ar", - ], dtype=str) - numel_internal = np.zeros(len(symbols_internal),dtype=int) - numel_internal[:] = 0, \ - 1 , 2, \ - 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, \ - 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, - - bas_per_atom = np.zeros(len(symbols_internal),dtype=int) - bas_per_atom[:] = 0, \ - 1 ,1 ,\ - 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ - 4 ,4 ,4 ,4 ,4 ,4 ,4 , 4, \ - - # Map symbols to indices in symbols_internal - symbol_to_index = {symbol: idx for idx, symbol in enumerate(symbols_internal)} - # Translate `symbols` to `symbols_internal` indices - mapped_indices = np.array([symbol_to_index[symbol] for symbol in symbols]) - # Convert atomTypes to `symbols_internal` indices - atom_internal_indices = mapped_indices[atomTypes] - # Vectorized approach to combine the arrays - combined_array = np.column_stack((atom_internal_indices[:, np.newaxis], coords)).tolist() - # Convert to the desired format - molecule_elem_coord = [[int(item[0]), tuple(item[1:])] for item in combined_array] - - - species = torch.as_tensor(np.array([np.array(atom_internal_indices)]), dtype=torch.int64, device=device) - coordinates = torch.tensor(np.array([coords]), device=device, dtype=torch.float64) - const = Constants().to(device) - elements = [0]+sorted(set(species.reshape(-1).tolist())) - seqm_parameters = { - 'method' : 'PM6_SP', # AM1, MNDO, PM3, PM6, PM6_SP. PM6_SP is PM6 without d-orbitals. Effectively, PM6 for the first two rows of periodic table - 'scf_eps' : 1.0e-6, # unit eV, change of electric energy, as nuclear energy doesnt' change during SCF - 'scf_converger' : [0,0.8,0.93,30], # converger used for scf loop - # [0, 0.1], [0, alpha] constant mixing, P = alpha*P + (1.0-alpha)*Pnew - # [1], adaptive mixing - # [2], adaptive mixing, then pulay - 'sp2' : [False, 1.0e-5], # whether to use sp2 algorithm in scf loop, - #[True, eps] or [False], eps for SP2 conve criteria - 'elements' : elements, #[0,1,6,8], - 'learned' : [], # learned parameters name list, e.g ['U_ss'] - #'parameter_file_dir' : '../seqm/params/', # file directory for other required parameters - 'pair_outer_cutoff' : 1.0e10, # consistent with the unit on coordinates - 'eig' : True # store orbital energies - } - molecule = Molecule(const, seqm_parameters, coordinates, species).to(device) - dtype = molecule.xij.dtype - device = molecule.xij.device - qn_int = molecule.const.qn_int - qnD_int = molecule.const.qnD_int - - if(molecule.method == 'PM6'): - zeta = torch.cat((molecule.parameters['zeta_s'].unsqueeze(1), molecule.parameters['zeta_p'].unsqueeze(1), molecule.parameters['zeta_d'].unsqueeze(1)),dim=1) - else: - zeta = torch.cat((molecule.parameters['zeta_s'].unsqueeze(1), molecule.parameters['zeta_p'].unsqueeze(1)),dim=1) - overlap_pairs = molecule.rij<=overlap_cutoff - - if molecule.method == 'PM6_SP': - di = torch.zeros((molecule.xij.shape[0], 4, 4),dtype=dtype, device=device) - di[overlap_pairs] = diatom_overlap_matrix_PM6_SP(molecule.ni[overlap_pairs], - molecule.nj[overlap_pairs], - molecule.xij[overlap_pairs], - molecule.rij[overlap_pairs], - zeta[molecule.idxi][overlap_pairs], - zeta[molecule.idxj][overlap_pairs], - qn_int) - - di_full = torch.zeros((molecule.nmol*molecule.molsize*molecule.molsize, 4, 4),dtype=dtype, device=device) - mask_H = molecule.Z==1 - mask_heavy = molecule.Z>1 - H_self_ovr = torch.zeros((4,4), dtype=dtype, device=device) - H_self_ovr[0,0] = 1.0 - - di_full[molecule.maskd[mask_H]] = H_self_ovr - di_full[molecule.maskd[mask_heavy]] = torch.eye(4, dtype=dtype, device=device) - di_full[molecule.mask] = di - di_full[molecule.mask_l] = di.transpose(1,2) - di_full = di_full.reshape(molecule.nmol,molecule.molsize,molecule.molsize,4,4).transpose(2,3) \ - .reshape(molecule.nmol, 4*molecule.molsize, 4*molecule.molsize) - di_full = pack(di_full, molecule.nHeavy, molecule.nHydro) - return di_full[0] - -def get_diag_guess_pyseqm(molecule, sy, verb=False): - ''' - Initial guess for dm diagonal - ''' - tore = molecule.const.tore - method = 'PM6_SP' - if method == 'PM6': - P0 = torch.zeros(sy.nats,9,9,dtype=molecule.coordinates.dtype, device=tore.device) # density matrix - P0[molecule.Z>1,0,0] = tore[molecule.Z[molecule.Z>1]]/4.0 - P0[:,1,1] = P0[:,0,0] - P0[:,2,2] = P0[:,0,0] - P0[:,3,3] = P0[:,0,0] - P0[molecule.Z==1,0,0] = 1.0 - else: - P0 = torch.zeros(sy.nats,4,4,dtype=molecule.coordinates.dtype, device=tore.device) # density matrix - P0[molecule.Z>1,0,0] = tore[molecule.Z[molecule.Z>1]]/4.0 - P0[:,1,1] = P0[:,0,0] - P0[:,2,2] = P0[:,0,0] - P0[:,3,3] = P0[:,0,0] - P0[molecule.Z==1,0,0] = 1.0 - return P0 diff --git a/src/sedacs/latte/coords.pdb b/src/sedacs/latte/coords.pdb deleted file mode 100644 index 30369570..00000000 --- a/src/sedacs/latte/coords.pdb +++ /dev/null @@ -1,18 +0,0 @@ -REMARK Generated by PROGRESS library -TITLE water_box.pdb -CRYST1 5.000 6.000 6.000 90.00 90.00 90.00 P 1 1 -MODEL 1 -ATOM 1 O MOL 1 -1.089 0.840 0.087 0.00 0.00 O -ATOM 2 H MOL 1 -0.379 0.620 0.678 0.00 0.00 H -ATOM 3 H MOL 1 -0.802 1.519 -0.513 0.00 0.00 H -ATOM 4 O SOL 2 6.791 5.329 8.737 0.00 0.00 O -ATOM 5 H SOL 2 6.911 5.989 7.997 0.00 0.00 H -ATOM 6 H SOL 2 7.251 5.669 9.567 0.00 0.00 H -ATOM 7 O SOL 3 1.881 3.409 0.417 0.00 0.00 O -ATOM 8 H SOL 3 0.961 3.129 0.127 0.00 0.00 H -ATOM 9 H SOL 3 2.191 4.179 -0.143 0.00 0.00 H -ATOM 10 O SOL 4 1.851 1.619 3.267 0.00 0.00 O -ATOM 11 H SOL 4 1.681 2.449 2.727 0.00 0.00 H -ATOM 12 H SOL 4 2.751 1.249 3.047 0.00 0.00 H -TER -END diff --git a/src/sedacs/latte/coords.xyz b/src/sedacs/latte/coords.xyz deleted file mode 100644 index 5f8f1348..00000000 --- a/src/sedacs/latte/coords.xyz +++ /dev/null @@ -1,14 +0,0 @@ - 12 -Lattice = "10.0 0.0 0.0 0.0 10.0 0.0 0.0 0.0 10.0" - O -1.08900 0.84000 0.08700 - H -0.37900 0.62000 0.67800 - H -0.80200 1.51900 -0.51300 - O 6.79100 5.32900 8.73700 - H 6.91100 5.98900 7.99700 - H 7.25100 5.66900 9.56700 - O 1.88100 3.40900 0.41700 - H 0.96100 3.12900 0.12700 - H 2.19100 4.17900 -0.14300 - O 1.85100 1.61900 3.26700 - H 1.68100 2.44900 2.72700 - H 2.75100 1.24900 3.04700 diff --git a/src/sedacs/latte/latte.py b/src/sedacs/latte/latte.py deleted file mode 100644 index fdc42cb9..00000000 --- a/src/sedacs/latte/latte.py +++ /dev/null @@ -1,1501 +0,0 @@ -import os -import sys -from multiprocessing import Pool - -import numpy as np -from scipy.linalg import eigh - - -### -# @brief Constructs a Hamiltonian and Overlap for LATTE Tight-binding. -# This is a python version of bldnewH.F90 LATTE routine -# -## -def build_HS( - nats, - coords_in, - box, - elempointer, - basis, - hes, - hep, - hed, - hef, - hdim, - cutoffList, - iglMap, - tabh, - tabs, - sspl, - hspl, - lentabint, - tabr, - hcut, - scut, - verbose, -): - if verbose: - print("In build_HS ...") - - # Indexing transformation coumn mayor to row mayor - coords = np.zeros((3, nats)) - coords[0, :] = coords_in[:, 0] - coords[1, :] = coords_in[:, 1] - coords[2, :] = coords_in[:, 2] - - pi = 3.1415926535 - ham = np.zeros((hdim, hdim)) - smat = np.eye((hdim)) - mybondint = np.zeros((4)) - myoverlapint = np.zeros((4)) - - # Build diagonal elements (pre-calculated) - ham_onsite = gen_Honsite(nats, elempointer, basis, hes, hep, hed, hef, hdim, verbose) - count = 0 - for i in range(hdim): - ham[i, i] = ham_onsite[i] - - orbitalList = get_orbitalList(nats, elempointer, basis) - - matindList = get_matindlist(nats, elempointer, basis) - rij = np.zeros((3)) - for i in range(nats): - basisi = orbitalList[:, i] - indi = matindList[i] - for j in range(nats): - for ix in range(-1, 2): - tx = ix * box[0, :] - for iy in range(-1, 2): - ty = iy * box[1, :] - for iz in range(-1, 2): - tz = iz * box[2, :] - neigh = coords[:, j] + tx + ty + tz - - # print(neigh) - rij[0] = neigh[0] - coords[0, i] - rij[1] = neigh[1] - coords[1, i] - rij[2] = neigh[2] - coords[2, i] - magr2 = rij[0] * rij[0] + rij[1] * rij[1] + rij[2] * rij[2] - rcuttb = cutoffList[j, i] - - if (magr2 < rcuttb * rcuttb) and (magr2 > 1.0e-12): - magr = np.sqrt(magr2) - basisj = orbitalList[:, j] - indj = matindList[j] - magrp = np.sqrt(rij[0] * rij[0] + rij[1] * rij[1]) - if abs(rij[0]) > 1.0e-12: - if (rij[0] > 0.0) and (rij[1] >= 0.0): - phi = 0.0 - elif (rij[0] > 0.0) and (rij[1] < 0.0): - phi = 2.0 * pi - else: - phi = pi - alpha = np.arctan(rij[1] / rij[0]) + phi - elif abs(rij[1]) > 1.0e-12: - if rij[1] > 1.0e-12: - alpha = pi / 2.0 - else: - alpha = 3.0 * pi / 2.0 - else: - alpha = 0.0 - - cosbeta = rij[2] / magr - beta = np.arccos(rij[2] / magr) - - # Build matrix elements using eqns (1)-(9) in PRB 72 165107 - - # The loops over LBRA and LKET need to take into account - # the orbitals assigned to each atom, e.g., sd rather than - # spd... - ibra = indi + 1 - lbrainc = 1 - while (basisi[lbrainc - 1]) != -1: - lbra = basisi[lbrainc - 1] - lbrainc = lbrainc + 1 - for mbra in range(-lbra, lbra + 1): - # We can calculate these two outside the - # MKET loop - iket = indj + 1 - lketinc = 1 - while basisj[lketinc - 1] != -1: - lket = basisj[lketinc - 1] - lketinc = lketinc + 1 - # Precompute the integrals outside Mket loop - for mp in range(min(lbra, lket) + 1): - mybondint[mp] = univscale( - i, - j, - lbra, - lket, - mp, - magr, - tabs, - tabh, - sspl, - hspl, - iglMap, - lentabint, - tabr, - tabh, - hcut, - scut, - "H", - ) - myoverlapint[mp] = univscale( - i, - j, - lbra, - lket, - mp, - magr, - tabs, - tabh, - sspl, - hspl, - iglMap, - lentabint, - tabr, - tabh, - hcut, - scut, - "S", - ) - - for mket in range(-lket, lket + 1): - # This is the sigma bonds (mp = 0) - # Hamiltonian build - # Pre-compute the angular part so we can use it - # again later if we're building the S matrix too - myangfactor = angfactor(lbra, lket, mbra, mket, 0, alpha, cosbeta) - ham[ibra - 1, iket - 1] = ( - ham[ibra - 1, iket - 1] + myangfactor * mybondint[0] - ) - smat[ibra - 1, iket - 1] = ( - smat[ibra - 1, iket - 1] + myangfactor * myoverlapint[0] - ) - # Everything else - count = count + 1 - for mp in range(1, min(lbra, lket) + 1): - myangfactor = angfactor(lbra, lket, mbra, mket, mp, alpha, cosbeta) - ham[ibra - 1, iket - 1] = ( - ham[ibra - 1, iket - 1] + myangfactor * mybondint[mp] - ) - smat[ibra - 1, iket - 1] = ( - smat[ibra - 1, iket - 1] + myangfactor * myoverlapint[mp] - ) - - iket = iket + 1 - - ibra = ibra + 1 - - if verbose: - print("\nHamiltonian Matrix") - print(ham) - print("\nOverlap Matrix") - print(smat) - - return (smat, ham) - - -def get_hdim(nats, elempointer, basis, verbose): - if verbose: - print("\nIn get_hdim ...") - - hdim = 0 - for i in range(nats): - if basis[elempointer[i]] == "s": - numorb = 1 - elif basis[elempointer[i]] == "p": - numorb = 3 - elif basis[elempointer[i]] == "d": - numorb = 5 - elif basis[elempointer[i]] == "f": - numorb = 7 - elif basis[elempointer[i]] == "sp": - numorb = 4 - elif basis[elempointer[i]] == "sd": - numorb = 6 - elif basis[elempointer[i]] == "sf": - numorb = 8 - elif basis[elempointer[i]] == "pd": - numorb = 8 - elif basis[elempointer[i]] == "pf": - numorb = 10 - elif basis[elempointer[i]] == "df": - numorb = 12 - elif basis[elempointer[i]] == "spd": - numorb = 9 - elif basis[elempointer[i]] == "spf": - numorb = 11 - elif basis[elempointer[i]] == "sdf": - numorb = 13 - elif basis[elempointer[i]] == "pdf": - numorb = 15 - elif basis[elempointer[i]] == "spdf": - numorb = 16 - hdim = hdim + numorb - - return hdim - - -### -# @brief Get onsite Hamiltonian elements for LATTE Tight-binding. -# This is a python version of genHonsite.F90 LATTE routine -# -## -def gen_Honsite(nats, elempointer, basis, hes, hep, hed, hef, hdim, verbose): - ham_onsite = np.zeros((hdim)) - index = -1 - for i in range(nats): - k = elempointer[i] - - if basis[k] == "s": - index = index + 1 - ham_onsite[index] = hes[k] - elif basis[k] == "p": - for subi in range(3): - index = index + 1 - ham_onsite[index] = hep[k] - elif basis[k] == "d": - for subi in range(5): - index = index + 1 - ham_onsite[index] = hed[k] - elif basis[k] == "f": - for subi in range(7): - index = index + 1 - ham_onsite[index] = hef[k] - elif basis[k] == "sp": - for subi in range(4): - index = index + 1 - if subi == 0: - ham_onsite[index] = hes[k] - else: - ham_onsite[index] = hep[k] - elif basis[k] == "sd": - for subi in range(6): - index = index + 1 - if subi == 0: - ham_onsite[index] = hes[k] - else: - ham_onsite[index] = hed[k] - elif basis[k] == "sf": - for subi in range(8): - index = index + 1 - if subi == 0: - ham_onsite[index] = hes[k] - else: - ham_onsite[index] = hef[k] - elif basis[k] == "pd": - for subi in range(8): - index = index + 1 - if subi <= 2: - ham_onsite[index] = hep[k] - else: - ham_onsite[index] = hed[k] - elif basis[k] == "pf": - for subi in range(10): - index = index + 1 - if subi <= 2: - ham_onsite[index] = hep[k] - else: - ham_onsite[index] = hef[k] - elif basis[k] == "df": - for subi in range(12): - index = index + 1 - if subi <= 4: - ham_onsite[index] = hed[k] - else: - ham_onsite[index] = hef[k] - elif basis[k] == "spd": - for subi in range(9): - index = index + 1 - if subi == 0: - ham_onsite[index] = hes[k] - elif subi > 0 & subi <= 3: - ham_onsite[index] = hep[k] - else: - ham_onsite[index] = hed[k] - elif basis[k] == "spf": - for subi in range(11): - index = index + 1 - if subi == 0: - ham_onsite[index] = hes[k] - elif subi > 0 & subi <= 3: - ham_onsite[index] = hep[k] - else: - ham_onsite[index] = hef[k] - elif basis[k] == "sdf": - for subi in range(13): - index = index + 1 - if subi == 0: - ham_onsite[index] = hes[k] - elif subi > 0 & subi <= 5: - ham_onsite[index] = hed[k] - else: - ham_onsite[index] = hef[k] - elif basis[k] == "pdf": - for subi in range(15): - index = index + 1 - if subi <= 2: - ham_onsite[index] = hep[k] - elif subi > 2 & subi <= 7: - ham_onsite[index] = hed[k] - else: - ham_onsite[index] = hef[k] - elif basis[k] == "spdf": - for subi in range(16): - index = index + 1 - if subi == 0: - ham_onsite[index] = hes[k] - elif subi > 0 & subi <= 3: - ham_onsite[index] = hep[k] - elif subi > 3 & subi <= 8: - ham_onsite[index] = hed[k] - else: - ham_onsite[index] = hef[k] - return ham_onsite - - -def get_orbitalList(nats, elempointer, basis): - orbital_list = np.zeros((5, nats), dtype=int) - for i in range(nats): - if basis[elempointer[i]] == "s": - orbital_list[0, i] = 0 - orbital_list[1, i] = -1 - elif basis[elempointer[i]] == "p": - orbital_list[0, i] = 0 - orbital_list[1, i] = -1 - elif basis[elempointer[i]] == "d": - orbital_list[0, i] = 2 - orbital_list[1, i] = -1 - elif basis[elempointer[i]] == "f": - orbital_list[0, i] = 3 - orbital_list[1, i] = -1 - elif basis[elempointer[i]] == "sp": - orbital_list[0, i] = 0 - orbital_list[1, i] = 1 - orbital_list[2, i] = -1 - elif basis[elempointer[i]] == "sd": - orbital_list[0, i] = 0 - orbital_list[1, i] = 2 - orbital_list[2, i] = -1 - elif basis[elempointer[i]] == "sf": - orbital_list[0, i] = 0 - orbital_list[1, i] = 3 - orbital_list[2, i] = -1 - elif basis[elempointer[i]] == "pd": - orbital_list[0, i] = 1 - orbital_list[1, i] = 2 - orbital_list[2, i] = -1 - elif basis[elempointer[i]] == "pf": - orbital_list[0, i] = 1 - orbital_list[1, i] = 3 - orbital_list[2, i] = -1 - elif basis[elempointer[i]] == "df": - orbital_list[0, i] = 2 - orbital_list[1, i] = 3 - orbital_list[2, i] = -1 - elif basis[elempointer[i]] == "spd": - orbital_list[0, i] = 0 - orbital_list[1, i] = 1 - orbital_list[2, i] = 2 - orbital_list[3, i] = -1 - elif basis[elempointer[i]] == "spf": - orbital_list[0, i] = 0 - orbital_list[1, i] = 1 - orbital_list[2, i] = 3 - orbital_list[3, i] = -1 - elif basis[elempointer[i]] == "sdf": - orbital_list[0, i] = 0 - orbital_list[1, i] = 2 - orbital_list[2, i] = 3 - orbital_list[3, i] = -1 - elif basis[elempointer[i]] == "pdf": - orbital_list[0, i] = 1 - orbital_list[1, i] = 2 - orbital_list[2, i] = 3 - orbital_list[3, i] = -1 - elif basis[elempointer[i]] == "spdf": - orbital_list[0, i] = 0 - orbital_list[1, i] = 1 - orbital_list[2, i] = 2 - orbital_list[3, i] = 3 - orbital_list[4, i] = -1 - - return orbital_list - - -def get_matindlist(nats, elempointer, basis): - matindlist = np.zeros((nats), dtype=int) - - for i in range(nats): - indi = 0 - for j in range(i): - if basis[elempointer[j]] == "s": - numorb = 1 - elif basis[elempointer[j]] == "p": - numorb = 3 - elif basis[elempointer[j]] == "d": - numorb = 5 - elif basis[elempointer[j]] == "f": - numorb = 7 - elif basis[elempointer[j]] == "sp": - numorb = 4 - elif basis[elempointer[j]] == "sd": - numorb = 6 - elif basis[elempointer[j]] == "sf": - numorb = 8 - elif basis[elempointer[j]] == "pd": - numorb = 8 - elif basis[elempointer[j]] == "pf": - numorb = 10 - elif basis[elempointer[j]] == "df": - numorb = 12 - elif basis[elempointer[j]] == "spd": - numorb = 9 - elif basis[elempointer[j]] == "spf": - numorb = 11 - elif basis[elempointer[j]] == "sdf": - numorb = 13 - elif basis[elempointer[j]] == "pdf": - numorb = 15 - elif basis[elempointer[j]] == "spdf": - numorb = 16 - indi = indi + numorb - matindlist[i] = indi - - return matindlist - - -## ANDERS CHANGES get the net partial occupations of the fully isolated atoms -def get_znuc(atele, ele, atocc, verbose): - if verbose: - print("\nIn get_znuc ...") - - znuc = np.zeros(len(atele)) - - for i in range(len(atele)): - for j in range(len(ele)): - if atele[i] == ele[j]: - znuc[i] = atocc[j] - return znuc - - -## ANDERS CHANGES easier indexing for matrices -def get_hindex(nats, elempointer, basis, hdim, verbose): - if verbose: - print("\nIn get_hindex ...") - - matindList = get_matindlist(nats, elempointer, basis) - h_start = np.ones(nats, dtype=int) - h_stop = np.ones(nats, dtype=int) - h_start[0:nats] = matindList[0:nats] - h_stop[0 : nats - 1] = matindList[1:nats] - h_stop[nats - 1] = hdim - - return (h_start, h_stop) - - -def get_btypeInt(noint, btype, atele, ele1, ele2, nats, verbose): - if verbose: - print("\nIn get_btypeInt ...") - - lMax = 0 - mpMax = 0 - btypeInt = np.zeros((3, noint), dtype=int) - for i in range(noint): - if btype[i] == "sss": - btypeInt[0, i] = 0 - btypeInt[1, i] = 0 - btypeInt[2, i] = 0 - elif btype[i] == "sps": - btypeInt[0, i] = 0 - btypeInt[1, i] = 1 - btypeInt[2, i] = 0 - elif btype[i] == "sds": - btypeInt[0, i] = 0 - btypeInt[1, i] = 2 - btypeInt[2, i] = 0 - elif btype[i] == "sfs": - btypeInt[0, i] = 0 - btypeInt[1, i] = 3 - btypeInt[2, i] = 0 - elif btype[i] == "pps": - btypeInt[0, i] = 1 - btypeInt[1, i] = 1 - btypeInt[2, i] = 0 - elif btype[i] == "ppp": - btypeInt[0, i] = 1 - btypeInt[1, i] = 1 - btypeInt[2, i] = 1 - elif btype[i] == "pds": - btypeInt[0, i] = 1 - btypeInt[1, i] = 2 - btypeInt[2, i] = 0 - elif btype[i] == "pdp": - btypeInt[0, i] = 1 - btypeInt[1, i] = 2 - btypeInt[2, i] = 1 - elif btype[i] == "pfs": - btypeInt[0, i] = 1 - btypeInt[1, i] = 3 - btypeInt[2, i] = 0 - elif btype[i] == "pfp": - btypeInt[0, i] = 1 - btypeInt[1, i] = 3 - btypeInt[2, i] = 1 - elif btype[i] == "dds": - btypeInt[0, i] = 2 - btypeInt[1, i] = 2 - btypeInt[2, i] = 0 - elif btype[i] == "ddp": - btypeInt[0, i] = 2 - btypeInt[1, i] = 2 - btypeInt[2, i] = 1 - elif btype[i] == "ddd": - btypeInt[0, i] = 2 - btypeInt[1, i] = 2 - btypeInt[2, i] = 2 - elif btype[i] == "dfs": - btypeInt[0, i] = 2 - btypeInt[1, i] = 3 - btypeInt[2, i] = 0 - elif btype[i] == "dfp": - btypeInt[0, i] = 2 - btypeInt[1, i] = 3 - btypeInt[2, i] = 1 - elif btype[i] == "dfd": - btypeInt[0, i] = 2 - btypeInt[1, i] = 3 - btypeInt[2, i] = 2 - elif btype[i] == "ffs": - btypeInt[0, i] = 3 - btypeInt[1, i] = 3 - btypeInt[2, i] = 0 - elif btype[i] == "ffp": - btypeInt[0, i] = 3 - btypeInt[1, i] = 3 - btypeInt[2, i] = 1 - elif btype[i] == "ffd": - btypeInt[0, i] = 3 - btypeInt[1, i] = 3 - btypeInt[2, i] = 2 - elif btype[i] == "fff": - btypeInt[0, i] = 3 - btypeInt[1, i] = 3 - btypeInt[2, i] = 3 - else: - print("Warning! Missed assigning a bond type in readtb") - sys.exit(0) - - if btypeInt[1, i] > lMax: - lMax = btypeInt[1, i] - if btypeInt[2, i] > mpMax: - mpMax = btypeInt[2, i] - - return lMax, mpMax, btypeInt - - -def build_integralMap_I(noint, btype, atele, ele1, ele2, nats, lMax, mpMax, btypeInt, i): - iglMapI = np.zeros((mpMax + 1, lMax + 1, lMax + 1, nats), dtype=int) - - for j in range(nats): - for l1 in range(lMax + 1): - for l2 in range(lMax + 1): - if l1 > l2: - ip1 = l2 - ip2 = l1 - else: - ip1 = l1 - ip2 = l2 - for mp in range(min(l1, l2) + 1): - # Build basis strind from L and M values - pure hackery - if ip1 == 0: - igltype = "s" - elif ip1 == 1: - igltype = "p" - elif ip1 == 2: - igltype = "d" - elif ip1 == 3: - igltype = "f" - - if ip2 == 0: - igltype = igltype + "s" - elif ip2 == 1: - igltype = igltype + "p" - elif ip2 == 2: - igltype = igltype + "d" - elif ip2 == 3: - igltype = igltype + "f" - - if mp == 0: - igltype = igltype + "s" - elif mp == 1: - igltype = igltype + "p" - elif mp == 2: - igltype = igltype + "d" - elif mp == 3: - igltype = igltype + "f" - - # It makes a difference if our atoms are of the species or not... - - # Easier case first ATELE(I) = ATELE(J) - - if atele[i] == atele[j]: - for ic in range(noint): - if (atele[i] == ele1[ic]) and (atele[j] == ele2[ic]) and (igltype == btype[ic]): - iglMapI[mp, l2, l1, j] = ic - - else: - # Elements are different - care must be taken with p-s, s-p etc - if l1 == l2: - for ic in range(noint): - if ( - ((atele[i] == ele1[ic]) and (atele[j] == ele2[ic])) - or ((atele[i] == ele2[ic]) and (atele[j] == ele1[ic])) - ) and (igltype == btype[ic]): - # Now we've ID'ed our bond integral - iglMapI[mp, l2, l1, j] = ic - breakloop = 1 - else: # l1 ne l2 - if l1 < l2: - for ic in range(noint): - if ((atele[i] == ele1[ic]) and (atele[j] == ele2[ic])) and (igltype == btype[ic]): - # Now we've ID'ed our bond integral - iglMapI[mp, l2, l1, j] = ic - else: - for ic in range(noint): - if ((atele[i] == ele2[ic]) and (atele[j] == ele1[ic])) and (igltype == btype[ic]): - # Now we've ID'ed our bond integral - iglMapI[mp, l2, l1, j] = ic - - return iglMapI - - -def build_integralMap_parPool(noint, btype, atele, ele1, ele2, nats, verbose, parallel=1): - if verbose: - print("\nIn build_integralMap_parPool ...") - - lMax, mpMax, btypeInt = get_btypeInt(noint, btype, atele, ele1, ele2, nats, verbose) - iglMap = np.zeros((mpMax + 1, lMax + 1, lMax + 1, nats, nats), dtype=int) - - if parallel > 1: - pool = Pool(processes=parallel) - results = [ - pool.apply_async(build_integralMap_I, [noint, btype, atele, ele1, ele2, nats, lMax, mpMax, btypeInt, val]) - for val in range(0, nats) - ] - for idx, val in enumerate(results): - iglMap[:, :, :, :, idx] = val.get() - pool.close() - elif parallel == 1: - for val in range(nats): - iglMap[:, :, :, :, val] = build_integralMap_I( - noint, btype, atele, ele1, ele2, nats, lMax, mpMax, btypeInt, val - ) - - return iglMap - - -def build_integralMap(noint, btype, atele, ele1, ele2, nats, verbose): - if verbose: - print("\nIn build_integralMap ...") - - lMax = 0 - mpMax = 0 - btypeInt = np.zeros((3, noint), dtype=int) - for i in range(noint): - if btype[i] == "sss": - btypeInt[0, i] = 0 - btypeInt[1, i] = 0 - btypeInt[2, i] = 0 - elif btype[i] == "sps": - btypeInt[0, i] = 0 - btypeInt[1, i] = 1 - btypeInt[2, i] = 0 - elif btype[i] == "sds": - btypeInt[0, i] = 0 - btypeInt[1, i] = 2 - btypeInt[2, i] = 0 - elif btype[i] == "sfs": - btypeInt[0, i] = 0 - btypeInt[1, i] = 3 - btypeInt[2, i] = 0 - elif btype[i] == "pps": - btypeInt[0, i] = 1 - btypeInt[1, i] = 1 - btypeInt[2, i] = 0 - elif btype[i] == "ppp": - btypeInt[0, i] = 1 - btypeInt[1, i] = 1 - btypeInt[2, i] = 1 - elif btype[i] == "pds": - btypeInt[0, i] = 1 - btypeInt[1, i] = 2 - btypeInt[2, i] = 0 - elif btype[i] == "pdp": - btypeInt[0, i] = 1 - btypeInt[1, i] = 2 - btypeInt[2, i] = 1 - elif btype[i] == "pfs": - btypeInt[0, i] = 1 - btypeInt[1, i] = 3 - btypeInt[2, i] = 0 - elif btype[i] == "pfp": - btypeInt[0, i] = 1 - btypeInt[1, i] = 3 - btypeInt[2, i] = 1 - elif btype[i] == "dds": - btypeInt[0, i] = 2 - btypeInt[1, i] = 2 - btypeInt[2, i] = 0 - elif btype[i] == "ddp": - btypeInt[0, i] = 2 - btypeInt[1, i] = 2 - btypeInt[2, i] = 1 - elif btype[i] == "ddd": - btypeInt[0, i] = 2 - btypeInt[1, i] = 2 - btypeInt[2, i] = 2 - elif btype[i] == "dfs": - btypeInt[0, i] = 2 - btypeInt[1, i] = 3 - btypeInt[2, i] = 0 - elif btype[i] == "dfp": - btypeInt[0, i] = 2 - btypeInt[1, i] = 3 - btypeInt[2, i] = 1 - elif btype[i] == "dfd": - btypeInt[0, i] = 2 - btypeInt[1, i] = 3 - btypeInt[2, i] = 2 - elif btype[i] == "ffs": - btypeInt[0, i] = 3 - btypeInt[1, i] = 3 - btypeInt[2, i] = 0 - elif btype[i] == "ffp": - btypeInt[0, i] = 3 - btypeInt[1, i] = 3 - btypeInt[2, i] = 1 - elif btype[i] == "ffd": - btypeInt[0, i] = 3 - btypeInt[1, i] = 3 - btypeInt[2, i] = 2 - elif btype[i] == "fff": - btypeInt[0, i] = 3 - btypeInt[1, i] = 3 - btypeInt[2, i] = 3 - else: - print("Warning! Missed assigning a bond type in readtb") - sys.exit(0) - - if btypeInt[1, i] > lMax: - lMax = btypeInt[1, i] - if btypeInt[2, i] > mpMax: - mpMax = btypeInt[2, i] - - iglMap = np.zeros((mpMax + 1, lMax + 1, lMax + 1, nats, nats), dtype=int) - for i in range(nats): - for j in range(nats): - for l1 in range(lMax + 1): - for l2 in range(lMax + 1): - if l1 > l2: - ip1 = l2 - ip2 = l1 - else: - ip1 = l1 - ip2 = l2 - for mp in range(min(l1, l2) + 1): - # Build basis strind from L and M values - pure hackery - if ip1 == 0: - igltype = "s" - elif ip1 == 1: - igltype = "p" - elif ip1 == 2: - igltype = "d" - elif ip1 == 3: - igltype = "f" - - if ip2 == 0: - igltype = igltype + "s" - elif ip2 == 1: - igltype = igltype + "p" - elif ip2 == 2: - igltype = igltype + "d" - elif ip2 == 3: - igltype = igltype + "f" - - if mp == 0: - igltype = igltype + "s" - elif mp == 1: - igltype = igltype + "p" - elif mp == 2: - igltype = igltype + "d" - elif mp == 3: - igltype = igltype + "f" - - # It makes a difference if our atoms are of the species or not... - - # Easier case first ATELE(I) = ATELE(J) - - if atele[i] == atele[j]: - for ic in range(noint): - if (atele[i] == ele1[ic]) and (atele[j] == ele2[ic]) and (igltype == btype[ic]): - iglMap[mp, l2, l1, j, i] = ic - - else: - # Elements are different - care must be taken with p-s, s-p etc - if l1 == l2: - for ic in range(noint): - if ( - ((atele[i] == ele1[ic]) and (atele[j] == ele2[ic])) - or ((atele[i] == ele2[ic]) and (atele[j] == ele1[ic])) - ) and (igltype == btype[ic]): - # Now we've ID'ed our bond integral - iglMap[mp, l2, l1, j, i] = ic - breakloop = 1 - else: # l1 ne l2 - if l1 < l2: - for ic in range(noint): - if ((atele[i] == ele1[ic]) and (atele[j] == ele2[ic])) and ( - igltype == btype[ic] - ): - # Now we've ID'ed our bond integral - iglMap[mp, l2, l1, j, i] = ic - else: - for ic in range(noint): - if ((atele[i] == ele2[ic]) and (atele[j] == ele1[ic])) and ( - igltype == btype[ic] - ): - # Now we've ID'ed our bond integral - iglMap[mp, l2, l1, j, i] = ic - - return iglMap - - -def univscale(i, j, l1, l2, mp, r, tabs, tbh, sspl, hspl, iglMap, lentabint, tabr, tabh, hcut, scut, whichint): - myIntegral = iglMap[mp, l2, l1, j, i] - klo = 1 - khi = lentabint[myIntegral] - while (khi - klo) > 1: - k = (khi + klo) / 2 - if tabr[int(k), myIntegral] > r: - khi = k - else: - klo = k - khi = int(khi) - klo = int(klo) - dx = tabr[(khi), (myIntegral)] - tabr[(klo), (myIntegral)] - sa = (tabr[(khi), (myIntegral)] - r) / dx - sb = (r - tabr[(klo), (myIntegral)]) / dx - if whichint == "H": - univscale = ( - sa * tabh[klo, myIntegral] - + sb * tabh[khi, myIntegral] - + ((sa * sa * sa - sa) * hspl[klo, myIntegral] + (sb * sb * sb - sb) * hspl[khi, myIntegral]) - * (dx * dx / 6.0) - ) - if r > hcut[myIntegral]: - univscale = 0.0 - else: - univscale = ( - sa * tabs[klo, myIntegral] - + sb * tabs[khi, myIntegral] - + ((sa * sa * sa - sa) * sspl[klo, myIntegral] + (sb * sb * sb - sb) * sspl[khi, myIntegral]) - * (dx * dx / 6.0) - ) - if r > scut[myIntegral]: - univscale = 0.0 - - if (l1 > l2) and ((l1 + l2 % 2) != 0): - univscale = -1.0 * univscale - - return univscale - - -def angfactor(lbra, lket, mbra, mket, mp, alpha, cosbeta): - mytlmmp = 0.0 - wig_lbra_mbra_mp = 0.0 - wig_lket_mket_mp = 0.0 - if mp == 0: - wig_lbra_mbra_0 = wignerd(lbra, abs(mbra), 0, cosbeta) - wig_lket_mket_0 = wignerd(lket, abs(mket), 0, cosbeta) - angfactor = 2.0 * (am(mbra, alpha) * wig_lbra_mbra_0) * (am(mket, alpha) * wig_lket_mket_0) - else: - wig_lbra_mbra_mp = wignerd(lbra, abs(mbra), mp, cosbeta) - wig_lket_mket_mp = wignerd(lket, abs(mket), mp, cosbeta) - wig_lbra_mbra_negmp = wignerd(lbra, abs(mbra), -mp, cosbeta) - wig_lket_mket_negmp = wignerd(lket, abs(mket), -mp, cosbeta) - - angfactor = ( - am(mbra, alpha) - * (((-1.0) ** mp) * wig_lbra_mbra_mp + wig_lbra_mbra_negmp) - * am(mket, alpha) - * (((-1.0) ** mp) * wig_lket_mket_mp + wig_lket_mket_negmp) - ) - - if mbra == 0: - mytlmmp = 0.0 - else: - mytlmmp = bm(mbra, alpha) * (((-1.0) ** mp) * wig_lbra_mbra_mp - wig_lbra_mbra_negmp) - - if mket == 0: - mytlmmp = 0.0 - else: - mytlmmp = mytlmmp * bm(mket, alpha) * (((-1.0) ** mp) * wig_lket_mket_mp - wig_lket_mket_negmp) - angfactor = angfactor + mytlmmp - - return angfactor - - -def am(m, alpha): - am = 0.0 - if m == 0: - am = 0.707106781186548 # 1/SQRT(2) - elif m > 0: - am = ((-1) ** m) * np.cos(abs(m) * alpha) - elif m < 0: - am = ((-1) ** m) * np.sin(abs(m) * alpha) - return am - - -def bm(m, alpha): - bm = 0.0 - if m == 0: - bm = 0.0 - elif m > 0: - bm = (-((-1) ** m)) * np.sin(abs(m) * alpha) - elif m < 0: - bm = ((-1) ** m) * np.cos(abs(m) * alpha) - return bm - - -# Builds Wigner d function -# notation conforms to that in PRB 72 165107 (2005), eq. (9) -def wignerd(l, m, mp, cosbeta): - wignerd = 0.0 - if abs(mp) > l: - wignerd = 0.0 - else: - pref = ( - (((-1.0) ** (l - mp)) / ((2.0) ** l)) - * sqrtfact(l + m) - * sqrtfact(l - m) - * sqrtfact(l + mp) - * sqrtfact(l - mp) - ) - wignered = 0.0 - for k in range(max(0, -m - mp), min(l - m, l - mp) + 1): - powtmp = float(m + mp) / 2.0 - power1 = float(l - k) - powtmp - power2 = float(k) + powtmp - - wignerd = wignerd + ((-1.0) ** k) * ((1.0 - cosbeta) ** power1) * ((1.0 + cosbeta) ** power2) / float( - factorial(k) * factorial(l - m - k) * factorial(l - mp - k) * factorial(m + mp + k) - ) - - wignerd = pref * wignerd - return wignerd - - -def factorial(k): - fact = 1.0 - - if k > 0: - for l in range(1, k + 1): - fact = fact * l - - return fact - - -def sqrtfact(k): - sqrtfact = np.sqrt(factorial(k)) - - return sqrtfact - - -### -# @brief Gets the bond integral paramters of the LATTE Tight-binding. -# This is a python version of readtb.F90 LATTE routine -# -# \param bondintsFileName Name of the file containing bond integrals -# \param electronsFileName Name of the file containing atomic data -# -# @detailed Bond integrals are the distance dependent Hamiltonian elements -# \f[ -# H_{ij} = -# \f] -# and -# \f[ -# H_{ii} = U_i -# \f] -# -## -def read_bondints(electronsFileName, bondintsFileName, verbose): - if verbose: - print("In read_bondints ...") - - # Checking if the file is in the local directory - if os.path.isfile(bondintsFileName): - if verbose >= 1: - print("\nWorking with file:", os.path.abspath(bondintsFileName), " ...") - else: - sys.exit("\nI can't find bondints in this directory") - if os.path.isfile(electronsFileName): - if verbose >= 1: - print("\nWorking with file:", os.path.abspath(electronsFileName), " ...") - else: - sys.exit("\nI can't find bondints in this directory") - - myBondintsFile = open(bondintsFileName, "r") - myElectronsFile = open(electronsFileName, "r") - - count = 0 - for lines in myElectronsFile: - count = count + 1 - lines_split = lines.split() - if len(lines_split) == 0: - break - if count == 1: - noelem = int(lines_split[1]) - ele = [] - basis = [] - atocc = np.zeros((noelem)) - hes = np.zeros((noelem)) - hep = np.zeros((noelem)) - hed = np.zeros((noelem)) - hef = np.zeros((noelem)) - mass = np.zeros((noelem)) - hubbardu = np.zeros((noelem)) - if count == 2: - pass - if count >= 3: - ele.append(lines_split[0]) - basis.append(lines_split[1]) - atocc[count - 3] = float(lines_split[2]) - hes[count - 3] = float(lines_split[3]) - hep[count - 3] = float(lines_split[4]) - hed[count - 3] = float(lines_split[5]) - hef[count - 3] = float(lines_split[6]) - mass[count - 3] = float(lines_split[7]) - hubbardu[count - 3] = float(lines_split[8]) - - if verbose: - print("\nTable data") - print("Nunber of elements =", noelem) - print("Elements =", ele) - print("Basis sets =", basis) - print("Atomic occupation =", atocc) - print("Self energy s =", hes) - print("Self energy p =", hep) - print("Self energy d =", hed) - print("Self energy f =", hef) - print("Atomic masses =", mass) - print("Hubbard Us =", hubbardu) - - count = 0 - listOfLines = [] - for lines in myBondintsFile: - count = count + 1 - lines_split = lines.split() - if len(lines_split) == 0: - break - if count == 1: - noint = int(lines_split[1]) - if count >= 2: - listOfLines.append(lines_split) - - # Getting the max number of entries - maxentry = 0 - for i in range(len(listOfLines)): - if len(listOfLines[i]) == 1: - maxentry = max(maxentry, int(listOfLines[i][0])) - - tabr = np.zeros((maxentry, noint)) - tabh = np.zeros((maxentry, noint)) - tabs = np.zeros((maxentry, noint)) - lentabint = np.zeros((noint), dtype=int) - hspl = np.zeros((maxentry, noint)) - sspl = np.zeros((maxentry, noint)) - hcut = np.zeros((noint)) - scut = np.zeros((noint)) - - count = 0 - ele1 = [] - ele2 = [] - btype = [] - for i in range(noint): - ele1.append(listOfLines[count][0]) - ele2.append(listOfLines[count][1]) - btype.append(listOfLines[count][2]) - count = count + 1 - lentabint[i] = int(listOfLines[count][0]) - count = count + 1 - for j in range(lentabint[i]): - tabr[j, i] = float(listOfLines[count][0]) - tabs[j, i] = float(listOfLines[count][1]) - tabh[j, i] = float(listOfLines[count][2]) - count = count + 1 - for j in range(lentabint[i]): - if tabr[j, i] > hcut[i]: - hcut[i] = tabr[j, i] - scut[i] = hcut[i] - - paramU = np.zeros((maxentry)) - - for i in range(noint): - n = lentabint[i] - 1 - hspl[0, i] = 0.0 - paramU[0] = 0.0 - - for j in range(1, n - 1): - sig = (tabr[j, i] - tabr[j - 1, i]) / (tabr[j + 1, i] - tabr[j - 1, i]) - p = sig * hspl[j - 1, i] + 2.0 - hspl[j, i] = (sig - 1.0) / p - paramU[j] = ( - 6.0 - * ( - (tabh[j + 1, i] - tabh[j, i]) / (tabr[j + 1, i] - tabr[j, i]) - - (tabh[j, i] - tabh[j - 1, i]) / (tabr[j, i] - tabr[j - 1, i]) - ) - / (tabr[j + 1, i] - tabr[j - 1, i]) - - sig * paramU[j - 1] - ) / p - qn = 0.0 - un = 0.0 - hspl[n, i] = (un - qn * paramU[n - 1]) / (qn * hspl[n - 1, i] + 1.0) - - # 1 > 0 - # n > n-1 (range n) - # n-1 > n-2 (range n-1) - - for k in range(n - 2, 0): - hspl[k, i] = hspl[k, i] * hspl[k + 1, i] + paramU[k] - - # Now for the overlap - for i in range(noint): - n = lentabint[i] - 1 - sspl[0, i] = 0.0 - paramU[0] = 0.0 - - for j in range(1, n - 1): - sig = (tabr[j, i] - tabr[j - 1, i]) / (tabr[j + 1, i] - tabr[j - 1, i]) - p = sig * sspl[j - 1, i] + 2.0 - sspl[j, i] = (sig - 1.0) / p - paramU[j] = ( - 6.0 - * ( - (tabh[j + 1, i] - tabh[j, i]) / (tabr[j + 1, i] - tabr[j, i]) - - (tabh[j, i] - tabh[j - 1, i]) / (tabr[j, i] - tabr[j - 1, i]) - ) - / (tabr[j + 1, i] - tabr[j - 1, i]) - - sig * paramU[j - 1] - ) / p - qn = 0.0 - un = 0.0 - sspl[n, i] = (un - qn * paramU[n - 1]) / (qn * sspl[n - 1, i] + 1.0) - - # 1 > 0 - # n > n-1 (range n) - # n-1 > n-2 (range n-1) - - for k in range(n - 2, 0): - sspl[k, i] = hspl[k, i] * sspl[k + 1, i] + paramU[k] - - # New: translate the 'pp pi's to L1 L2 MP for use later - - btype_int = np.zeros((3, noint), dtype=int) - for i in range(1, noint): - if btype[i] == "sss": - btype_int[0, i] = 0 - btype_int[1, i] = 0 - btype_int[2, i] = 0 - elif btype[i] == "sps": - btype_int[0, i] = 0 - btype_int[1, i] = 0 - btype_int[2, i] = 0 - elif btype[i] == "sds": - btype_int[0, i] = 0 - btype_int[1, i] = 1 - btype_int[2, i] = 0 - elif btype[i] == "sfs": - btype_int[0, i] = 0 - btype_int[1, i] = 2 - btype_int[2, i] = 0 - elif btype[i] == "pps": - btype_int[0, i] = 0 - btype_int[1, i] = 0 - btype_int[2, i] = 0 - elif btype[i] == "ppp": - btype_int[0, i] = 0 - btype_int[1, i] = 0 - btype_int[2, i] = 0 - elif btype[i] == "pds": - btype_int[0, i] = 0 - btype_int[1, i] = 1 - btype_int[2, i] = 0 - elif btype[i] == "pdp": - btype_int[0, i] = 0 - btype_int[1, i] = 1 - btype_int[2, i] = 0 - elif btype[i] == "pfs": - btype_int[0, i] = 0 - btype_int[1, i] = 2 - btype_int[2, i] = 0 - elif btype[i] == "pfp": - btype_int[0, i] = 0 - btype_int[1, i] = 2 - btype_int[2, i] = 0 - elif btype[i] == "dds": - btype_int[0, i] = 1 - btype_int[1, i] = 1 - btype_int[2, i] = 0 - elif btype[i] == "ddp": - btype_int[0, i] = 1 - btype_int[1, i] = 1 - btype_int[2, i] = 0 - elif btype[i] == "ddd": - btype_int[0, i] = 1 - btype_int[1, i] = 1 - btype_int[2, i] = 1 - elif btype[i] == "dfs": - btype_int[0, i] = 1 - btype_int[1, i] = 2 - btype_int[2, i] = 0 - elif btype[i] == "dfp": - btype_int[0, i] = 1 - btype_int[1, i] = 2 - btype_int[2, i] = 0 - elif btype[i] == "dfd": - btype_int[0, i] = 1 - btype_int[1, i] = 2 - btype_int[2, i] = 1 - elif btype[i] == "ffs": - btype_int[0, i] = 2 - btype_int[1, i] = 2 - btype_int[2, i] = 0 - elif btype[i] == "ffp": - btype_int[0, i] = 2 - btype_int[1, i] = 2 - btype_int[2, i] = 0 - elif btype[i] == "ffd": - btype_int[0, i] = 2 - btype_int[1, i] = 2 - btype_int[2, i] = 1 - elif btype[i] == "fff": - btype_int[0, i] = 2 - btype_int[1, i] = 2 - btype_int[2, i] = 2 - else: - print("Warning! Missed assigning a bond type in readtb") - sys.exit(0) - - # return(noelem,ele,ele,basis,atocc,hes,hep,hed,hef,mass,hubbardu,btype_int,) - return ( - noelem, - ele, - ele1, - ele2, - basis, - hes, - hep, - hed, - hef, - hcut, - scut, - noint, - btype, - tabh, - tabs, - sspl, - hspl, - lentabint, - tabr, - atocc, - mass, - hubbardu, - ) - - -def get_elempointer(atele, ele, verbose): - if verbose: - print("\nIn get_elempointer ...") - - noelem = len(ele) - nats = len(atele) - - elempointer = np.zeros((nats), dtype=int) - for i in range(nats): - for j in range(noelem): - if atele[i] == ele[j]: - elempointer[i] = j - - return elempointer - - -def get_cutoffList(nats, atele, ele1, ele2, hcut, scut, noint, verbose): - if verbose: - print("\nIn get_cutoffList ...") - - cutoffList = np.zeros((nats, nats)) - - for i in range(nats): - for j in range(nats): - rcuttb = 0.0 - - for k in range(noint): - if (atele[i] == ele1[k] and atele[j] == ele2[k]) or (atele[j] == ele1[k] and atele[i] == ele2[k]): - if hcut[k] > rcuttb: - rcuttb = hcut[k] - if scut[k] > rcuttb: - rcuttb = scut[k] - - cutoffList[j, i] = rcuttb - return cutoffList - - -def get_cutoffList_I(nats, atele, ele1, ele2, hcut, scut, noint, i): - cutoffList = np.zeros((nats, nats)) - for j in range(nats): - rcuttb = 0.0 - - for k in range(noint): - if (atele[i] == ele1[k] and atele[j] == ele2[k]) or (atele[j] == ele1[k] and atele[i] == ele2[k]): - if hcut[k] > rcuttb: - rcuttb = hcut[k] - if scut[k] > rcuttb: - rcuttb = scut[k] - - cutoffList[j, i] = rcuttb - return cutoffList - - -def get_cutoffList_par(nats, atele, ele1, ele2, hcut, scut, noint, verbose): - if verbose: - print("\nIn get_cutoffList_par ...") - - cutoffList = Parallel(n_jobs=12)( - delayed(get_cutoffList_I)(nats, atele, ele1, ele2, hcut, scut, noint, i) for i in range(nats) - ) - cutoffList = sum(cutoffList) - - return cutoffList - - -def get_cutoffList_I_vect(nats, atele, ele1, ele2, hcut, scut, noint, i): - cutoffListI = np.zeros((nats)) - for j in range(nats): - rcuttb = 0.0 - for k in range(noint): - if (atele[i] == ele1[k] and atele[j] == ele2[k]) or (atele[j] == ele1[k] and atele[i] == ele2[k]): - if hcut[k] > rcuttb: - rcuttb = hcut[k] - if scut[k] > rcuttb: - rcuttb = scut[k] - - cutoffListI[j] = rcuttb - - return cutoffListI - - -def get_cutoffList_parPool(nats, atele, ele1, ele2, hcut, scut, noint, verbose, parallel=1): - if verbose: - print("\nIn get_cutoffList_parPool ...") - - cutoffList = np.zeros((nats, nats)) - if parallel > 1: - pool = Pool(processes=parallel) - results = [ - pool.apply_async(get_cutoffList_I_vect, [nats, atele, ele1, ele2, hcut, scut, noint, val]) - for val in range(0, nats) - ] - for idx, val in enumerate(results): - cutoffList[idx, :] = val.get() - pool.close() - elif parallel == 1: - for val in range(nats): - cutoffList[val, :] = get_cutoffList_I_vect(nats, atele, ele1, ele2, hcut, scut, noint, val) - - return cutoffList - - -### -# @brief Constructs inverse overlap factors given S. -# This is a python version of genX.F90 LATTE routine -# -## -def genX(smat, method, verbose): - if verbose: - print("In genX ...") - - hdim = len(smat) - if method == "Diag": - # e,v = np.linalg.eig(smat) - e, v = eigh(smat) - s = 1.0 / np.sqrt(e) - zmat = np.zeros((hdim, hdim)) - for i in range(hdim): - zmat[i, :] = s[i] * v[:, i] - zmat = np.matmul(v, zmat) - elif method == "Cholesky": - pass - else: - print("ERROR: Method not implemented") - sys.exit(0) - - if verbose: - print("\nZmat Matrix") - print(zmat) - - return zmat - - -def fermi_exp(hmat, zmat, nocc, T): - hmat_orth = np.matmul(np.matmul(np.transpose(zmat), hmat), np.transpose(zmat)) - e, C = np.linalg.eigh(hmat_orth) - mu0 = 0.5 * (e[nocc - 1] + e[nocc]) - - kB = 8.61739e-5 - beta = 1.0 / (kB * T) - hdim = len(hmat) - - OccErr = 100.0 - iter = 0 - focc = np.zeros(hdim) - while OccErr > 1e-12: # Adjusts the chemical potential for a given Fermi-Dirac - iter = iter + 1 - occ = 0.0 - docc = 0.0 - for i in range(hdim): - tmp = beta * (e[i] - mu0) - if tmp < -100: - tmp = -100.0 - if tmp > 100: - tmp = 100.0 - focc[i] = 1.0 / (np.exp(tmp) + 1.0) - occ = np.sum(focc) - docc = np.sum(beta * focc * (1.0 - focc)) - OccErr = np.absolute(nocc - occ) - print(OccErr, nocc, occ) - if np.absolute(OccErr) > 1e-10: - mu0 = mu0 + (nocc - occ) / docc - - if iter > 20: - print(" Not Converging in feri_exp OccErr = ", OccErr) - OccErr = 0.0 - - if docc > 1e-14: - focc = focc + ((nocc - occ) / docc) * beta * focc * (1.0 - focc) - - dmat = np.zeros((hdim, hdim)) - for i in range(hdim): - dmat[:, i] = C[:, i] * focc[i] - dmat = np.matmul(dmat, np.transpose(C)) - dmat = np.matmul(np.matmul(zmat, dmat), np.transpose(zmat)) - - entropy = 0.0 - for i in range(hdim): - if focc[i] > 1e-14 and focc[i] < 1.0 - 1e-14: - entropy = entropy - kB * (focc[i] * np.log(focc[i]) + (1.0 - focc[i]) * np.log(1.0 - focc[i])) - - return (dmat, focc, C, e, mu0, entropy) diff --git a/src/sedacs/latte/main_latte_call.py b/src/sedacs/latte/main_latte_call.py deleted file mode 100644 index 36352a45..00000000 --- a/src/sedacs/latte/main_latte_call.py +++ /dev/null @@ -1,115 +0,0 @@ -import numpy as np -from latte import * -from sedacs.system import * -from sedacs.periodic_table import * - - -## General LATTE dm API call -# This function will take coordinates and atom type and -# retreive the density matrix. -# @param box Lattice vectors. box[0,:] = first lattice vectors -# @param symbols List of elements symbols for each atom type -# @param types A list of types for every atom in the system -# @param coords Positions for every atom in the system. coords[0,2] z-coordinate of atom 0 -# @return dm Density matrix -# -def get_latte_dm(box, symbols, types, coords): - nats = len(types) # Number of atoms - atele = [] - for i in range(nats): - atele.append(symbols[types[i]]) # Element for every atom in the system - - # Read bond integrals and atomic info - ( - noelem, - ele, - ele1, - ele2, - basis, - hes, - hep, - hed, - hef, - hcut, - scut, - noint, - btype, - tabh, - tabs, - sspl, - hspl, - lentabint, - tabr, - atocc, - mass, - hubbardu, - ) = read_bondints("electrons.dat", "bondints.table", myVerb) - - # Get element pointer - elempointer = get_elempointer(atele, ele, myVerb) - - # Get the dimension of Hamiltonian - hdim = get_hdim(nats, elempointer, basis, myVerb) - - # et cutoff list - cutoffList = get_cutoffList(nats, atele, ele1, ele2, hcut, scut, noint, myVerb) - - # Get integral map - iglMap = build_integralMap(noint, btype, atele, ele1, ele2, nats, myVerb) - - # Construct the Hamiltonian and Overlap - smat, ham = build_HS( - nats, - coords, - box, - elempointer, - basis, - hes, - hep, - hed, - hef, - hdim, - cutoffList, - iglMap, - tabh, - tabs, - sspl, - hspl, - lentabint, - tabr, - hcut, - scut, - myVerb, - ) - - # Get the inverse overlap factors - zmat = genX(smat, method="Diag", verbose=True) - - # Initializing a periodic table - pt = PeriodicTable() - - # Getting number of electrons - numel = 0 - for i in range(nats): - atnum = pt.get_atomic_number(symbols[types[i]]) - numel = numel + pt.numel[atnum] - - # Getting the number of occupied states - nocc = int(numel / 2.0) - - # Getting the density matrix - T = 100.0 - dm, focc, C, e, mu0, entropy = fermi_exp(ham, zmat, nocc, T) - - return dm - - -if __name__ == "__main__": - myVerb = True - # Read coordinates from pdb file - box, symbols, types, coords = read_xyz_file("coords.xyz", lib="Ase", verb=myVerb) - - # Call latte to get the density matrix - dm = get_latte_dm(box, symbols, types, coords) - print("Density matrix =") - print(dm) diff --git a/src/sedacs/latte/vars b/src/sedacs/latte/vars deleted file mode 100644 index 2e631f09..00000000 --- a/src/sedacs/latte/vars +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -PYLATTE_PATH=`pwd` -MOD_PATH=$PYLATTE_PATH/../ -export PYTHONPATH=$PYTHONPATH:$MOD_PATH -export PYTHONWARNINGS="ignore:Unverified HTTPS request" diff --git a/src/sedacs/molSysData.py b/src/sedacs/molSysData.py deleted file mode 100644 index 9f5fac22..00000000 --- a/src/sedacs/molSysData.py +++ /dev/null @@ -1,34 +0,0 @@ -"""eVals dVals -Routines to build eVals and dVals. Typically -this will be done interfacing with an engine. - -""" - -import sys - -from sedacs.interface_pyseqm import pyseqmObjects -import numpy as np - -__all__ = ["get_eVals"] - - -## Build the density matrix. -# @brief This will build a density matrix. Typically this will be done interfacing with an engine. -# @param eng Engine object. See sdc_engine.py for a full explanation -# @param nocc Number of occupied states -# @param ham Hamiltonian matrix -# @verbose Verbosity -# -def get_molSysData(eng, sdc, coords,symbols,atomTypes, do_large_tensors=True, device='cpu'): - if eng.interface == "None": - print("ERROR!!! - Write your own Data") - - # Tight interface using modules or an external code compiled as a library - elif eng.interface == "Module": - # We will call proxyA directly as it will be loaded as a module. - print('TBD') - exit() - elif eng.interface == "PySEQM": - return pyseqmObjects(sdc, coords,symbols,atomTypes, do_large_tensors=do_large_tensors, device=device) - - return diff --git a/src/sedacs/run_py.py b/src/sedacs/run_py.py deleted file mode 100644 index c36d8fcd..00000000 --- a/src/sedacs/run_py.py +++ /dev/null @@ -1,11 +0,0 @@ -import numpy as np -import your_module # Assuming your C++ module is compiled to Python as 'your_module' - -# Generate random matrix (M, N) -M, N = 3, 4 -matrix = np.random.rand(M, N) - -# Call C++ function to sum the elements of the matrix -result = your_module.sum_matrix(matrix) -print(f"Sum of matrix elements: {result}") - diff --git a/src/sedacs/src.cpp b/src/sedacs/src.cpp deleted file mode 100644 index 19f4fa28..00000000 --- a/src/sedacs/src.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -#include - - -// Python equivalent of import numpy as np, so that we can -// access numpy functions like np.random. Here in C++ this takes -// the form of np::random. -namespace py = pybind11; - -double sum_matrix(py::array_t marix) { - - // Access the data buffer of the NumPy array - py::buffer_info buf_info = matrix.request(); - - // Get a pointer to the - double* ptr = static_cast(buf_info.ptr); - - // Get shape of the matrix - size_t M = buf_info.shape[0]; // Rows - size_t N = buf_info.shape[1]; // Columns - - // Loop through and sum the elements - double sum = 0.0; - for (size_t i = 0; i < M; ++i) { - for (size_t j = 0; j < N; ++j) { - sum += ptr[i * N + j]; // Access element at (i, j) - } - } - return sum; -} - -PYBIND11_MODULE(your_module, m) { - m.def("sum_matrix", &sum_matrix, "Sum all elements of a matrix"); -} - diff --git a/src/sedacs/tbforce_modules.py b/src/sedacs/tbforce_modules.py deleted file mode 100644 index 325ce71e..00000000 --- a/src/sedacs/tbforce_modules.py +++ /dev/null @@ -1,149 +0,0 @@ -import ctypes -import os - -import numpy as np -from sedacs.message import * -import sys -from sedacs.engine import Engine -from sedacs.globals import * - -# import the shared library -fortlibFileName = os.environ["PROXYA_FORTRAN_PATH"] + "/proxya_fortran.so" -pylibFileName = os.environ["PROXYA_PYTHON_PATH"] -sys.path.append(pylibFileName) - -try: - fortlib = ctypes.CDLL(fortlibFileName) - get_hamiltonian_fortran = fortlib.proxya_get_hamiltonian - get_density_matrix_fortran = fortlib.proxya_get_density_matrix -except Exception as e: - fortlib = None - raise e - -try: - from first_level import get_hamiltonian_proxy - from first_level import get_density_matrix_proxy - from first_level import get_ppot_energy_expo_proxy - from first_level import get_ppot_forces_expo_proxy - from first_level import get_tb_forces_proxy - from first_level import init_proxy_proxy -except Exception as e: - pythlib = None - raise e - - -__all__ = ["get_hamiltonian_module", "get_density_matrix_module", - "get_ppot_energy_expo", "get_ppot_forces_expo", "init_proxy", - "get_tb_forces_module" - ] - -#Initialize the proxy code -def init_proxy(symbols,orbs): - init_proxy_proxy(symbols,orbs) - - - -#def get_hamiltonian_proxy(*args, **kwargs): -# raise NotImplementedError("implement this in an external module!") - - -def get_hamiltonian_module(eng,coords,atomTypes,symbols,get_overlap=True,verb=False): - - - if eng.name == "ProxyAPython": - if(get_overlap): - hamiltonian, overlap = get_hamiltonian_proxy(coords,atomTypes,symbols,get_overlap=get_overlap,verb=verb) - else: - hamiltonian = get_hamiltonian_proxy(coords,atomTypes,symbols,get_overlap=get_overlap,verb=verb) - - - elif eng.name == "ProxyAFortran": - nats = len(coords[:, 0]) - norbs = nats - - coords_in = np.zeros(3 * nats) # Vectorized coordinates - for i in range(nats): - coords_in[3 * i] = coords[i, 0] - coords_in[3 * i + 1] = coords[i, 1] - coords_in[3 * i + 2] = coords[i, 2] - - # Specify arguments type as a pointers - get_hamiltonian_fortran.argtypes = [ - ctypes.c_int, - ctypes.c_int, - ctypes.POINTER(ctypes.c_double), - ctypes.POINTER(ctypes.c_int), - ctypes.POINTER(ctypes.c_double), - ctypes.POINTER(ctypes.c_double), - ctypes.c_bool, - ] - # Passing a pointer to Fotran - coords_ptr = coords.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - atomTypes_ptr = atomTypes.ctypes.data_as(ctypes.POINTER(ctypes.c_int)) - hamiltonian = np.zeros((norbs, norbs)) - overlap = np.zeros((norbs, norbs)) - ham_ptr = hamiltonian.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - over_ptr = overlap.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - - err = get_hamiltonian_fortran( - ctypes.c_int(nats), ctypes.c_int(norbs), coords_ptr, atomTypes_ptr, ham_ptr, over_ptr, ctypes.c_bool(verb) - ) - else: - error_at("get_hamiltonian_module","No specific engine type defined") - - if(get_overlap): - return hamiltonian, overlap - else: - return hamiltonian - - -def get_density_matrix_modules(eng,hamiltonian,nocc,method="Diag",accel="No",mu=None,elect_temp=0.0,overlap=None, verb=False): - if eng.name == "ProxyAPython": - method = eng.method - accel = eng.accel - density_matrix = get_density_matrix_proxy(hamiltonian, nocc,method=method,accel=accel,mu=mu, overlap=overlap, verb=False) - elif eng.name == "ProxyAFortran": - # H needs to be flattened - norbs = len(hamiltonian[:, 0]) - ht = hamiltonian.T - # Specify arguments type as a pointers - get_density_matrix_fortran.argtypes = [ - ctypes.c_int, - ctypes.c_int, - ctypes.POINTER(ctypes.c_double), - ctypes.POINTER(ctypes.c_double), - ctypes.c_bool, - ] - # Passing a pointer to Fortran - hamiltonian_ptr = hamiltonian.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - density_matrix = np.zeros((norbs, norbs)) - density_matrix_ptr = density_matrix.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) - - err = get_density_matrix_fortran( - ctypes.c_int(norbs), ctypes.c_int(nocc), hamiltonian_ptr, density_matrix_ptr, ctypes.c_bool(verb) - ) - else: - error_at("get_density_matrix_module","No specific engine type defined") - - return density_matrix - - -def get_ppot_energy_expo(coords,types): - - energy = get_ppot_energy_expo_proxy(coords,types) - - return energy - - -def get_ppot_forces_expo(coords,types): - - forces = get_ppot_forces_expo_proxy(coords,types) - - return forces - - -def get_tb_forces_module(coords,types): - - forces = get_ppot_forces_expo_proxy(coords,types) - - return forces diff --git a/src/sedacs/tbforces.py b/src/sedacs/tbforces.py deleted file mode 100644 index 0fcde5d6..00000000 --- a/src/sedacs/tbforces.py +++ /dev/null @@ -1,69 +0,0 @@ -#TB forces -"""TB forces -Some functions to get the TB forces - -So far: get_tb_forces -""" - -from sedacs.message import * -from sedacs.periodic_table import PeriodicTable -import numpy as np - -try: - from mpi4py import MPI - mpiLib = True -except ImportError as e: - mpiLib = False -from multiprocessing import Pool - -if mpiLib: - from sedacs.mpi import * -import time - -__all__ = [ - "get_tb_forces" -] - - -## Get TB forces -# \brief Get TB and Coulombic forces from the Hamiltonian, Density matrix -# and charges. -# \param ham Hamiltonian Matrix -# \param rho Density Matrix -# \param field External field -# \param coords Coordinates -# \param atomTypes Atomic types -# \param Symbols Atomic symbols for every type. -## -def get_tb_forces(engine,ham,rho,charges,field,coords,atomTypes,symbols,overlap=None,verb=False): - - # Call the proper interface - # If there is no interface, one could write its own tb forces - if engine.interface == "None": - raise ValueError("ERROR!!! - Write your own TB forces.") - # Tight interface using modules or an external code compiled as a library - elif engine.interface == "Module": - # We will call proxyA directly as it will be loaded as a module. - if(overlap is not None): - raise NotImplemented("TB forces with overlap not implemented in proxy code") - else: - return get_tb_forces_module(ham,rho,charges,field,coords,atomTypes,symbols,overlap=overlap,verb=verb) - # Using any available library. We will use MDI here. - elif engine.interface == "MDI": - raise NotImplemented("MDI interface not implemented yet") - # Using unix sockets to interface the codes - elif engine.interface == "Socket": - raise NotImplemented("Sockets not implemented yet") - # Using files as a form of communication and transfering data. - elif engine.interface == "File": - raise NotImplemented("Sockets not implemented yet") - else: - raise ValueError(f"ERROR!!!: Interface type not recognized: '{engine.interface}'. " + - f"Use any of the following: Module,File,Socket,MDI") - - - - return forces - - - From 0a102348e49e0c4464e0a22e73bb630dda1bc56a Mon Sep 17 00:00:00 2001 From: peterli3819 Date: Tue, 15 Apr 2025 13:52:22 -0600 Subject: [PATCH 4/4] comment out proxies dependency when calling latte_interface --- src/sedacs/chemical_potential.py | 64 +++----------------------------- src/sedacs/interface_modules.py | 2 +- 2 files changed, 7 insertions(+), 59 deletions(-) diff --git a/src/sedacs/chemical_potential.py b/src/sedacs/chemical_potential.py index 4d3467c5..c64a4c47 100644 --- a/src/sedacs/chemical_potential.py +++ b/src/sedacs/chemical_potential.py @@ -1,21 +1,13 @@ -"""Chemical potential. This module will handle functions -related to the computation of chemical potential or Fermi """ +chemical_potential.py +==================================== +Chemical potential. This module will handle functions +related to the computation of chemical potential or Fermi +Dirac distribution. -import os -import sys +""" import numpy as np -import scipy.linalg as sp -import sedacs.driver -from sedacs.dev.io import src_path -from hamiltonian_elements import * -from sedacs.file_io import read_coords_file, write_xyz_coordinates -from dnnprt import * -from proxy_global import * -from hamiltonian_random import get_random_hamiltonian -from hamiltonian_random import get_random_coordinates -from hamiltonian_random import RandomNumberGenerator __all__ = [ @@ -165,50 +157,6 @@ def estimate_mu(ham,etemp,nocc,kB=8.61739e-5,verb=False): return mu - -if __name__ == "__main__": - - n = len(sys.argv) - - if n == 1: - print("Give the total number of elements. Example:\n") - print("proxy_a 100\n") - sys.exit(0) - else: - norbs = int(sys.argv[1]) - - verb = True - - #Build random coordinates - coords = get_random_coordinates(norbs) - - #Build random Hamiltonian (Anders' version) - ham = get_random_hamiltonian(coords) - - print("\n Hamiltonan:") - print(ham) - - nocc = 0.5*norbs - etemp = 10000 - - #Scale the diagonal elements - scalingFactor = 1.0 - for i in range(norbs): - ham[i,i] = scalingFactor*ham[i,i] - - #Estimate mu from the diagonal elements of H - muEst = estimate_mu(ham,etemp,nocc,kB=8.61739e-5) - print("\n Estimated mu:",muEst) - - #Get eigenvalues and eigenvectors - evals, evects = sp.eigh(ham) - - #Compute exact mu - mu0 = 0.0 - muReal = get_mu(mu0,evals,etemp,nocc,dvals=None,verb=True) - print("\n Exact mu:",muEst) - - print("\n Realative error of mu estimation",abs((muReal - muEst)/muReal)) diff --git a/src/sedacs/interface_modules.py b/src/sedacs/interface_modules.py index 3b30a40c..f8c4d138 100644 --- a/src/sedacs/interface_modules.py +++ b/src/sedacs/interface_modules.py @@ -43,7 +43,7 @@ from proxies.python.hamiltonian import build_coul_ham_proxy except Exception as e: pythlib = None - raise e + #raise e __all__ = [