From 7c90c9f2e9a4296d4a51fa6447420214ea902de3 Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <ohearnku@msu.edu> Date: Thu, 18 Feb 2021 17:20:39 -0500 Subject: [PATCH] Test: fix Python wrapper for QM/MM (interfaces out-of-date). Fix Fortran tester bugs. Add test artifacts. --- PG-PuReMD/src/cuda/cuda_bonds.cu | 61 +- PG-PuReMD/src/cuda/cuda_forces.cu | 136 ++- PG-PuReMD/src/cuda/cuda_multi_body.cu | 80 +- PG-PuReMD/src/cuda/cuda_torsion_angles.cu | 216 +++-- PG-PuReMD/src/cuda/cuda_valence_angles.cu | 498 +++++------ PG-PuReMD/src/cuda/cuda_valence_angles.h | 9 +- PG-PuReMD/src/reax_types.h | 4 +- test/library/qmmm_amber/forces_charges.txt | 777 ++++++++++++++++++ .../qmmm_amber/fortran_stub/driver.F03 | 26 +- .../fortran_stub/forces_charges.txt | 776 +++++++++++++++++ .../qmmm_amber/fortran_stub/reaxff_puremd.F03 | 2 +- .../qmmm_amber/fortran_stub/run_sim.bash | 3 +- test/library/qmmm_amber/tester_AVE.py | 13 +- 13 files changed, 2067 insertions(+), 534 deletions(-) create mode 100644 test/library/qmmm_amber/forces_charges.txt create mode 100644 test/library/qmmm_amber/fortran_stub/forces_charges.txt diff --git a/PG-PuReMD/src/cuda/cuda_bonds.cu b/PG-PuReMD/src/cuda/cuda_bonds.cu index 9cd4e0a4..5a705b17 100644 --- a/PG-PuReMD/src/cuda/cuda_bonds.cu +++ b/PG-PuReMD/src/cuda/cuda_bonds.cu @@ -30,14 +30,17 @@ CUDA_GLOBAL void Cuda_Bonds( reax_atom *my_atoms, global_parameters gp, single_body_parameters *sbp, two_body_parameters *tbp, storage p_workspace, reax_list p_bond_list, int n, int num_atom_types, - real *e_bond ) + real *e_bond_g ) { int i, j, pj; int start_i, end_i; int type_i, type_j; - real ebond, pow_BOs_be2, exp_be12, CEbo; + real pow_BOs_be2, exp_be12, CEbo; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + real e_bond_l; +#endif real gp3, gp4, gp7, gp10, gp37; - real exphu, exphua1, exphub1, exphuov, hulpov, estriph; + real exphu, exphua1, exphub1, exphuov, hulpov; real decobdbo, decobdboua, decobdboub; single_body_parameters *sbp_i, *sbp_j; two_body_parameters *twbp; @@ -59,6 +62,9 @@ CUDA_GLOBAL void Cuda_Bonds( reax_atom *my_atoms, global_parameters gp, gp7 = gp.l[7]; gp10 = gp.l[10]; gp37 = (int) gp.l[37]; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_bond_l = 0.0; +#endif start_i = Start_Index( i, bond_list ); end_i = End_Index( i, bond_list ); @@ -82,32 +88,21 @@ CUDA_GLOBAL void Cuda_Bonds( reax_atom *my_atoms, global_parameters gp, * (1.0 - twbp->p_be1 * twbp->p_be2 * pow_BOs_be2); /* calculate bond energy */ - ebond = -twbp->De_s * bo_ij->BO_s * exp_be12 +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_bond_g[i] += -twbp->De_s * bo_ij->BO_s * exp_be12 + - twbp->De_p * bo_ij->BO_pi + - twbp->De_pp * bo_ij->BO_pi2; +#else + e_bond_l += -twbp->De_s * bo_ij->BO_s * exp_be12 - twbp->De_p * bo_ij->BO_pi - twbp->De_pp * bo_ij->BO_pi2; - e_bond[i] += ebond; +#endif /* calculate derivatives of bond orders */ bo_ij->Cdbo += CEbo; bo_ij->Cdbopi -= CEbo + twbp->De_p; bo_ij->Cdbopi2 -= CEbo + twbp->De_pp; -#if defined(TEST_ENERGY) - //fprintf( out_control->ebond, "%6d%6d%24.15e%24.15e%24.15e\n", - fprintf( out_control->ebond, "%6d%6d%12.4f%12.4f%12.4f\n", - system->my_atoms[i].orig_id, - system->my_atoms[j].orig_id, - bo_ij->BO, ebond, data->my_en.e_bond ); -#endif - -#if defined(TEST_FORCES) - Add_dBO( system, lists, i, pj, CEbo, workspace->f_be ); - Add_dBOpinpi2( system, lists, i, pj, - -(CEbo + twbp->De_p), - -(CEbo + twbp->De_pp), - workspace->f_be, workspace->f_be ); -#endif - /* Stabilisation terminal triple bond */ if ( bo_ij->BO >= 1.00 ) { @@ -127,8 +122,11 @@ CUDA_GLOBAL void Cuda_Bonds( reax_atom *my_atoms, global_parameters gp, exphuov = EXP(gp4 * (workspace->Delta[i] + workspace->Delta[j])); hulpov = 1.0 / (1.0 + 25.0 * exphuov); - estriph = gp10 * exphu * hulpov * (exphua1 + exphub1); - e_bond[i] += estriph; +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_bond_g[i] += gp10 * exphu * hulpov * (exphua1 + exphub1); +#else + e_bond_l += gp10 * exphu * hulpov * (exphua1 + exphub1); +#endif decobdbo = gp10 * exphu * hulpov * (exphua1 + exphub1) * ( gp3 - 2.0 * gp7 * (bo_ij->BO - 2.5) ); @@ -140,21 +138,12 @@ CUDA_GLOBAL void Cuda_Bonds( reax_atom *my_atoms, global_parameters gp, bo_ij->Cdbo += decobdbo; workspace->CdDelta[i] += decobdboua; workspace->CdDelta[j] += decobdboub; - -#if defined(TEST_ENERGY) - //fprintf( out_control->ebond, - // "%6d%6d%24.15e%24.15e%24.15e%24.15e\n", - // system->my_atoms[i].orig_id, system->my_atoms[j].orig_id, - // estriph, decobdbo, decobdboua, decobdboub ); -#endif - -#if defined(TEST_FORCES) - Add_dBO( system, lists, i, pj, decobdbo, workspace->f_be ); - Add_dDelta( system, lists, i, decobdboua, workspace->f_be ); - Add_dDelta( system, lists, j, decobdboub, workspace->f_be ); -#endif } } } } + +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + atomicAdd( (double *) e_bond_g, (double) e_bond_l ); +#endif } diff --git a/PG-PuReMD/src/cuda/cuda_forces.cu b/PG-PuReMD/src/cuda/cuda_forces.cu index 6c658975..f0310b5f 100644 --- a/PG-PuReMD/src/cuda/cuda_forces.cu +++ b/PG-PuReMD/src/cuda/cuda_forces.cu @@ -223,7 +223,6 @@ CUDA_GLOBAL void k_init_distance( reax_atom *my_atoms, reax_list far_nbr_list, i { int i, j, pj, start_i, end_i; rvec x_i; - reax_atom *atom_j; i = blockIdx.x * blockDim.x + threadIdx.x; @@ -240,19 +239,18 @@ CUDA_GLOBAL void k_init_distance( reax_atom *my_atoms, reax_list far_nbr_list, i for ( pj = start_i; pj < end_i; ++pj ) { j = far_nbr_list.far_nbr_list.nbr[pj]; - atom_j = &my_atoms[j]; if ( i < j ) { - far_nbr_list.far_nbr_list.dvec[pj][0] = atom_j->x[0] - x_i[0]; - far_nbr_list.far_nbr_list.dvec[pj][1] = atom_j->x[1] - x_i[1]; - far_nbr_list.far_nbr_list.dvec[pj][2] = atom_j->x[2] - x_i[2]; + far_nbr_list.far_nbr_list.dvec[pj][0] = my_atoms[j].x[0] - x_i[0]; + far_nbr_list.far_nbr_list.dvec[pj][1] = my_atoms[j].x[1] - x_i[1]; + far_nbr_list.far_nbr_list.dvec[pj][2] = my_atoms[j].x[2] - x_i[2]; } else { - far_nbr_list.far_nbr_list.dvec[pj][0] = x_i[0] - atom_j->x[0]; - far_nbr_list.far_nbr_list.dvec[pj][1] = x_i[1] - atom_j->x[1]; - far_nbr_list.far_nbr_list.dvec[pj][2] = x_i[2] - atom_j->x[2]; + far_nbr_list.far_nbr_list.dvec[pj][0] = x_i[0] - my_atoms[j].x[0]; + far_nbr_list.far_nbr_list.dvec[pj][1] = x_i[1] - my_atoms[j].x[1]; + far_nbr_list.far_nbr_list.dvec[pj][2] = x_i[2] - my_atoms[j].x[2]; } far_nbr_list.far_nbr_list.d[pj] = rvec_Norm( far_nbr_list.far_nbr_list.dvec[pj] ); } @@ -263,7 +261,7 @@ CUDA_GLOBAL void k_init_distance( reax_atom *my_atoms, reax_list far_nbr_list, i * in the far neighbors list if it's a NOT re-neighboring step */ CUDA_GLOBAL void k_init_distance_opt( reax_atom *my_atoms, reax_list far_nbr_list, int N ) { - int j, pj, start_i, end_i, thread_id, warp_id, lane_id; + int j, pj, start_i, end_i, thread_id, warp_id, lane_id, itr; __shared__ rvec x_i; thread_id = blockIdx.x * blockDim.x + threadIdx.x; @@ -284,7 +282,7 @@ CUDA_GLOBAL void k_init_distance_opt( reax_atom *my_atoms, reax_list far_nbr_lis __syncthreads( ); /* update distance and displacement vector between atoms i and j (i-j) */ - for ( pj = start_i + lane_id; pj < end_i; pj += 32 ) + for ( itr = 0, pj = start_i + lane_id; itr < (end_i - start_i + 0x0000001F) >> 5; ++itr ) { j = far_nbr_list.far_nbr_list.nbr[pj]; @@ -301,6 +299,8 @@ CUDA_GLOBAL void k_init_distance_opt( reax_atom *my_atoms, reax_list far_nbr_lis far_nbr_list.far_nbr_list.dvec[pj][2] = x_i[2] - my_atoms[j].x[2]; } far_nbr_list.far_nbr_list.d[pj] = rvec_Norm( far_nbr_list.far_nbr_list.dvec[pj] ); + + pj += warpSize; } } @@ -1125,7 +1125,6 @@ CUDA_GLOBAL void k_update_sym_hbond_indices_opt( reax_atom *my_atoms, thread_id = blockIdx.x * blockDim.x + threadIdx.x; warp_id = thread_id >> 5; - lane_id = thread_id & 0x0000001F; if ( warp_id > N ) { @@ -1133,6 +1132,7 @@ CUDA_GLOBAL void k_update_sym_hbond_indices_opt( reax_atom *my_atoms, } i = warp_id; + lane_id = thread_id & 0x0000001F; start = Start_Index( my_atoms[i].Hindex, &hbond_list ); end = End_Index( my_atoms[i].Hindex, &hbond_list ); j = start + lane_id; @@ -1564,14 +1564,13 @@ int Cuda_Init_Forces( reax_system *system, control_params *control, if ( renbr == FALSE && dist_done == FALSE ) { + blocks = system->N * 32 / DEF_BLOCK_SIZE + + (system->N * 32 % DEF_BLOCK_SIZE == 0 ? 0 : 1); -// blocks = system->N * 32 / DEF_BLOCK_SIZE -// + (system->N * 32 % DEF_BLOCK_SIZE == 0 ? 0 : 1); - - k_init_distance <<< control->blocks_n, control->block_size_n >>> - ( system->d_my_atoms, *(lists[FAR_NBRS]), system->N ); -// k_init_distance_opt <<< blocks, DEF_BLOCK_SIZE >>> +// k_init_distance <<< control->blocks_n, control->block_size_n >>> // ( system->d_my_atoms, *(lists[FAR_NBRS]), system->N ); + k_init_distance_opt <<< blocks, DEF_BLOCK_SIZE >>> + ( system->d_my_atoms, *(lists[FAR_NBRS]), system->N ); cudaCheckError( ); dist_done = TRUE; @@ -1769,10 +1768,8 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, static int compute_bonded_part1 = FALSE; real *spad; rvec *rvec_spad; -#if defined(DEBUG_FOCUS) - real t_start, t_elapsed; -#endif +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) cuda_check_malloc( &workspace->scratch, &workspace->scratch_size, MAX( sizeof(real) * system->n, MAX( sizeof(real) * 3 * system->n, @@ -1781,6 +1778,7 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, (sizeof(real) + sizeof(rvec)) * system->n + sizeof(rvec) * control->blocks )))), "Cuda_Compute_Bonded_Forces::workspace->scratch" ); spad = (real *) workspace->scratch; +#endif update_energy = (out_control->energy_update_freq > 0 && data->step % out_control->energy_update_freq == 0) ? TRUE : FALSE; ret = SUCCESS; @@ -1810,31 +1808,59 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, cudaCheckError( ); /* 2. Bond Energy Interactions */ +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) cuda_memset( spad, 0, sizeof(real) * system->n, "Compute_Bonded_Forces::spad" ); +#else + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_bond, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_bond" ); +#endif Cuda_Bonds <<< control->blocks, control->block_size, sizeof(real) * control->block_size >>> ( system->d_my_atoms, system->reax_param.d_gp, system->reax_param.d_sbp, system->reax_param.d_tbp, *(workspace->d_workspace), *(lists[BONDS]), - system->n, system->reax_param.num_atom_types, spad ); + system->n, system->reax_param.num_atom_types, +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + spad +#else + &((simulation_data *)data->d_simulation_data)->my_en.e_bond +#endif + ); cudaCheckError( ); - /* reduction for E_BE */ +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) if ( update_energy == TRUE ) { Cuda_Reduction_Sum( spad, &((simulation_data *)data->d_simulation_data)->my_en.e_bond, system->n ); } +#endif /* 3. Atom Energy Interactions */ +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) cuda_memset( spad, 0, sizeof(real) * 3 * system->n, "Compute_Bonded_Forces::spad" ); +#else + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_lp, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_lp" ); + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_ov, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_ov" ); + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_un, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_un" ); +#endif Cuda_Atom_Energy_Part1 <<< control->blocks, control->block_size >>> ( system->d_my_atoms, system->reax_param.d_gp, system->reax_param.d_sbp, system->reax_param.d_tbp, *(workspace->d_workspace), *(lists[BONDS]), system->n, system->reax_param.num_atom_types, - spad, &spad[system->n], &spad[2 * system->n] ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + spad, &spad[system->n], &spad[2 * system->n] +#else + &((simulation_data *)data->d_simulation_data)->my_en.e_lp, + &((simulation_data *)data->d_simulation_data)->my_en.e_ov, + &((simulation_data *)data->d_simulation_data)->my_en.e_un +#endif + ); cudaCheckError( ); #if !defined(CUDA_ACCUM_FORCE_ATOMIC) @@ -1843,22 +1869,21 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, cudaCheckError( ); #endif +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) if ( update_energy == TRUE ) { - /* reduction for E_Lp */ Cuda_Reduction_Sum( spad, &((simulation_data *)data->d_simulation_data)->my_en.e_lp, system->n ); - /* reduction for E_Ov */ Cuda_Reduction_Sum( &spad[system->n], &((simulation_data *)data->d_simulation_data)->my_en.e_ov, system->n ); - /* reduction for E_Un */ Cuda_Reduction_Sum( &spad[2 * system->n], &((simulation_data *)data->d_simulation_data)->my_en.e_un, system->n ); } +#endif compute_bonded_part1 = TRUE; } @@ -1869,7 +1894,8 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, "Cuda_Compute_Bonded_Forces::workspace->scratch" ); thbody = (int *) workspace->scratch; - spad = (real *) workspace->scratch; /* in case scratch gets reallocated above, changing the pointer */ + /* in case scratch gets reallocated above, reassign scratch pointer */ + spad = (real *) workspace->scratch; ret = Cuda_Estimate_Storage_Three_Body( system, control, data, workspace, lists, thbody ); @@ -1878,32 +1904,49 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, { Cuda_Init_Three_Body_Indices( thbody, system->total_thbodies_indices, lists ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) cuda_memset( spad, 0, (sizeof(real) * 3 + sizeof(rvec)) * system->N + sizeof(rvec) * control->blocks_n, "Cuda_Compute_Bonded_Forces::spad" ); +#else + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_ang, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_ang" ); + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_pen, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_pen" ); + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_coa, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_coa" ); + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_ext_press, + 0, sizeof(rvec), "Cuda_Compute_Bonded_Forces::my_ext_press" ); +#endif Cuda_Valence_Angles_Part1 <<< control->blocks_n, control->block_size_n >>> - ( system->d_my_atoms, system->reax_param.d_gp, + ( system->d_my_atoms, system->reax_param.d_gp, system->reax_param.d_sbp, system->reax_param.d_thbp, (control_params *) control->d_control_params, *(workspace->d_workspace), *(lists[BONDS]), *(lists[THREE_BODIES]), system->n, system->N, system->reax_param.num_atom_types, - spad, &spad[system->N], &spad[2 * system->N], (rvec *) (&spad[3 * system->N]) ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + spad, &spad[system->N], &spad[2 * system->N], (rvec *) (&spad[3 * system->N]) +#else + &((simulation_data *)data->d_simulation_data)->my_en.e_ang, + &((simulation_data *)data->d_simulation_data)->my_en.e_pen, + &((simulation_data *)data->d_simulation_data)->my_en.e_coa, + &((simulation_data *)data->d_simulation_data)->my_ext_press +#endif + ); cudaCheckError( ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) if ( update_energy == TRUE ) { - /* reduction for E_Ang */ Cuda_Reduction_Sum( spad, &((simulation_data *)data->d_simulation_data)->my_en.e_ang, system->N ); - /* reduction for E_Pen */ Cuda_Reduction_Sum( &spad[system->N], &((simulation_data *)data->d_simulation_data)->my_en.e_pen, system->N ); - /* reduction for E_Coa */ Cuda_Reduction_Sum( &spad[2 * system->N], &((simulation_data *)data->d_simulation_data)->my_en.e_coa, system->N ); @@ -1913,7 +1956,6 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, { rvec_spad = (rvec *) (&spad[3 * system->N]); - /* reduction for ext_pres */ k_reduction_rvec <<< control->blocks_n, control->block_size_n, sizeof(rvec) * (control->block_size_n / 32) >>> ( rvec_spad, &rvec_spad[system->N], system->N ); @@ -1929,6 +1971,7 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, // &((simulation_data *)data->d_simulation_data)->my_ext_press, // system->N ); } +#endif #if !defined(CUDA_ACCUM_FORCE_ATOMIC) Cuda_Valence_Angles_Part2 <<< control->blocks_n, control->block_size_n >>> @@ -1938,25 +1981,40 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, #endif /* 5. Torsion Angles Interactions */ - cuda_memset( spad, 0, (sizeof(real) * 2 + sizeof(rvec)) * system->n + sizeof(rvec) * control->blocks, +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + cuda_memset( spad, 0,(sizeof(real) * 2 + sizeof(rvec)) * system->n + sizeof(rvec) * control->blocks, "Cuda_Compute_Bonded_Forces::spad" ); +#else + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_tor, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_tor" ); + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_en.e_con, + 0, sizeof(real), "Cuda_Compute_Bonded_Forces::e_con" ); + cuda_memset( &((simulation_data *)data->d_simulation_data)->my_ext_press, + 0, sizeof(rvec), "Cuda_Compute_Bonded_Forces::my_ext_press" ); +#endif Cuda_Torsion_Angles_Part1 <<< control->blocks, control->block_size >>> ( system->d_my_atoms, system->reax_param.d_gp, system->reax_param.d_fbp, (control_params *) control->d_control_params, *(lists[BONDS]), *(lists[THREE_BODIES]), *(workspace->d_workspace), system->n, system->reax_param.num_atom_types, - spad, &spad[system->n], (rvec *) (&spad[2 * system->n]) ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + spad, &spad[system->n], (rvec *) (&spad[2 * system->n]) +#else + &((simulation_data *)data->d_simulation_data)->my_en.e_tor, + &((simulation_data *)data->d_simulation_data)->my_en.e_con, + &((simulation_data *)data->d_simulation_data)->my_ext_press +#endif + ); cudaCheckError( ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) if ( update_energy == TRUE ) { - /* reduction for E_Tor */ Cuda_Reduction_Sum( spad, &((simulation_data *)data->d_simulation_data)->my_en.e_tor, system->n ); - /* reduction for E_Con */ Cuda_Reduction_Sum( &spad[system->n], &((simulation_data *)data->d_simulation_data)->my_en.e_con, system->n ); @@ -1966,7 +2024,6 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, { rvec_spad = (rvec *) (&spad[2 * system->n]); - /* reduction for ext_pres */ k_reduction_rvec <<< control->blocks, control->block_size, sizeof(rvec) * (control->block_size / 32) >>> ( rvec_spad, &rvec_spad[system->n], system->n ); @@ -1982,6 +2039,7 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, // &((simulation_data *)data->d_simulation_data)->my_ext_press, // system->n ); } +#endif #if !defined(CUDA_ACCUM_FORCE_ATOMIC) Cuda_Torsion_Angles_Part2 <<< control->blocks_n, control->block_size_n >>> @@ -2014,7 +2072,6 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, if ( update_energy == TRUE ) { - /* reduction for E_HB */ Cuda_Reduction_Sum( spad, &((simulation_data *)data->d_simulation_data)->my_en.e_hb, system->n ); @@ -2024,7 +2081,6 @@ int Cuda_Compute_Bonded_Forces( reax_system *system, control_params *control, { rvec_spad = (rvec *) (&spad[system->n]); - /* reduction for ext_pres */ k_reduction_rvec <<< control->blocks, control->block_size, sizeof(rvec) * (control->block_size / 32) >>> ( rvec_spad, &rvec_spad[system->n], system->n ); diff --git a/PG-PuReMD/src/cuda/cuda_multi_body.cu b/PG-PuReMD/src/cuda/cuda_multi_body.cu index 67f49c3d..7969ae7d 100644 --- a/PG-PuReMD/src/cuda/cuda_multi_body.cu +++ b/PG-PuReMD/src/cuda/cuda_multi_body.cu @@ -30,13 +30,16 @@ CUDA_GLOBAL void Cuda_Atom_Energy_Part1( reax_atom *my_atoms, global_parameters gp, single_body_parameters *sbp, two_body_parameters *tbp, storage workspace, reax_list bond_list, int n, int num_atom_types, - real *data_e_lp, real *dat_e_ov, real *data_e_un ) + real *e_lp_g, real *e_ov_g, real *e_un_g ) { int i, j, pj, type_i, type_j; real Delta_lpcorr, dfvl; - real e_lp, expvd2, inv_expvd2, dElp, CElp, DlpVi; - real e_lph, Di, vov3, deahu2dbo, deahu2dsbo; - real e_ov, CEover1, CEover2, CEover3, CEover4; + real expvd2, inv_expvd2, dElp, CElp, DlpVi; + real Di, vov3, deahu2dbo, deahu2dsbo; + real CEover1, CEover2, CEover3, CEover4; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + real e_lp_l; +#endif real exp_ovun1, exp_ovun2, sum_ovun1, sum_ovun2; real exp_ovun2n, exp_ovun6, exp_ovun8; real inv_exp_ovun1, inv_exp_ovun2, inv_exp_ovun2n, inv_exp_ovun8; @@ -71,8 +74,11 @@ CUDA_GLOBAL void Cuda_Atom_Energy_Part1( reax_atom *my_atoms, global_parameters inv_expvd2 = 1.0 / (1.0 + expvd2 ); /* calculate the energy */ - e_lp = p_lp2 * workspace.Delta_lp[i] * inv_expvd2; - data_e_lp[i] += e_lp; +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_lp_g[i] += p_lp2 * workspace.Delta_lp[i] * inv_expvd2; +#else + e_lp_l = p_lp2 * workspace.Delta_lp[i] * inv_expvd2; +#endif dElp = p_lp2 * inv_expvd2 + 75.0 * p_lp2 * workspace.Delta_lp[i] * expvd2 * SQR(inv_expvd2); @@ -80,14 +86,6 @@ CUDA_GLOBAL void Cuda_Atom_Energy_Part1( reax_atom *my_atoms, global_parameters workspace.CdDelta[i] += CElp; // lp - 1st term -#if defined(TEST_ENERGY) - fprintf( out_control->elp, "%23.15e%23.15e%23.15e%23.15e\n", - p_lp2, workspace.Delta_lp_temp[i], expvd2, dElp ); - fprintf( out_control->elp, "%6d%12.4f%12.4f%12.4f\n", - system->my_atoms[i].orig_id, workspace.nlp[i], - e_lp, data->my_en.e_lp ); -#endif - #if defined(TEST_FORCES) Add_dDelta( system, lists, i, CElp, workspace.f_lp ); // lp - 1st term #endif @@ -115,8 +113,11 @@ CUDA_GLOBAL void Cuda_Atom_Energy_Part1( reax_atom *my_atoms, global_parameters if ( vov3 > 3.0 ) { - e_lph = p_lp3 * SQR( vov3 - 3.0 ); - data_e_lp[i] += e_lph; +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_lp_g[i] += p_lp3 * SQR( vov3 - 3.0 ); +#else + e_lp_l += p_lp3 * SQR( vov3 - 3.0 ); +#endif deahu2dbo = 2.0 * p_lp3 * (vov3 - 3.0); deahu2dsbo = 2.0 * p_lp3 * (vov3 - 3.0) @@ -124,25 +125,18 @@ CUDA_GLOBAL void Cuda_Atom_Energy_Part1( reax_atom *my_atoms, global_parameters bo_ij->Cdbo += deahu2dbo; workspace.CdDelta[i] += deahu2dsbo; - -#if defined(TEST_ENERGY) - fprintf( out_control->elp,"C2cor%6d%6d%12.6f%12.6f%12.6f\n", - system->my_atoms[i].orig_id, system->my_atoms[j].orig_id, - e_lph, deahu2dbo, deahu2dsbo ); -#endif - -#if defined(TEST_FORCES) - Add_dBO( system, lists, i, pj, deahu2dbo, workspace.f_lp ); - Add_dDelta( system, lists, i, deahu2dsbo, workspace.f_lp ); -#endif } } } } } +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + atomicAdd( (double *) e_lp_g, (double) e_lp_l ); +#endif + /* over-coordination energy */ - if( sbp_i->mass > 21.0 ) + if ( sbp_i->mass > 21.0 ) { dfvl = 0.0; } @@ -179,8 +173,11 @@ CUDA_GLOBAL void Cuda_Atom_Energy_Part1( reax_atom *my_atoms, global_parameters DlpVi = 1.0 / (Delta_lpcorr + sbp_i->valency + 1.0e-8); CEover1 = Delta_lpcorr * DlpVi * inv_exp_ovun2; - e_ov = sum_ovun1 * CEover1; - dat_e_ov[i] += e_ov; +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_ov_g[i] += sum_ovun1 * CEover1; +#else + atomicAdd( (double *) e_ov_g, (double) (sum_ovun1 * CEover1) ); +#endif CEover2 = sum_ovun1 * DlpVi * inv_exp_ovun2 * (1.0 - Delta_lpcorr * ( DlpVi + p_ovun2 * exp_ovun2 * inv_exp_ovun2 )); @@ -201,7 +198,11 @@ CUDA_GLOBAL void Cuda_Atom_Energy_Part1( reax_atom *my_atoms, global_parameters inv_exp_ovun8 = 1.0 / (1.0 + exp_ovun8); e_un = -p_ovun5 * (1.0 - exp_ovun6) * inv_exp_ovun2n * inv_exp_ovun8; - data_e_un[i] += e_un; +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_un_g[i] += e_un; +#else + atomicAdd( (double *) e_un_g, (double) e_un ); +#endif CEunder1 = inv_exp_ovun2n * ( p_ovun5 * p_ovun6 * exp_ovun6 * inv_exp_ovun8 + p_ovun2 * e_un * exp_ovun2n ); @@ -302,23 +303,6 @@ CUDA_GLOBAL void Cuda_Atom_Energy_Part1( reax_atom *my_atoms, global_parameters workspace.f_un, workspace.f_un ); // UnCoor - 2b #endif } - -#if defined(TEST_ENERGY) - //fprintf( out_control->elp, "%6d%24.15e%24.15e%24.15e\n", - //fprintf( out_control->elp, "%6d%12.4f%12.4f%12.4f\n", - // system->my_atoms[i].orig_id, workspace.nlp[i], - // e_lp, data->my_en.e_lp ); - - //fprintf( out_control->eov, "%6d%24.15e%24.15e\n", - fprintf( out_control->eov, "%6d%12.4f%12.4f\n", - system->my_atoms[i].orig_id, - e_ov, data->my_en.e_ov + data->my_en.e_un ); - - //fprintf( out_control->eun, "%6d%24.15e%24.15e\n", - fprintf( out_control->eun, "%6d%12.4f%12.4f\n", - system->my_atoms[i].orig_id, - e_un, data->my_en.e_ov + data->my_en.e_un ); -#endif } diff --git a/PG-PuReMD/src/cuda/cuda_torsion_angles.cu b/PG-PuReMD/src/cuda/cuda_torsion_angles.cu index e0e10fe2..f9648c36 100644 --- a/PG-PuReMD/src/cuda/cuda_torsion_angles.cu +++ b/PG-PuReMD/src/cuda/cuda_torsion_angles.cu @@ -144,7 +144,7 @@ CUDA_DEVICE static real Calculate_Omega( const rvec dvec_ij, real r_ij, const rv CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_parameters gp, four_body_header *d_fbp, control_params *control, reax_list bond_list, reax_list thb_list, storage workspace, int n, int num_atom_types, - real *data_e_tor, real *data_e_con, rvec *data_ext_press ) + real *e_tor_g, real *e_con_g, rvec *ext_press_g ) { int i, j, k, l, pi, pj, pk, pl, pij, plk; int type_i, type_j, type_k, type_l; @@ -170,9 +170,14 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete real CEtors5, CEtors6, CEtors7, CEtors8, CEtors9; real Cconj, CEconj1, CEconj2, CEconj3; real CEconj4, CEconj5, CEconj6; - real e_tor, e_con; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + real e_tor_l, e_con_l; +#endif rvec dvec_li; rvec force, ext_press; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec ext_press_l; +#endif ivec rel_box_jl; // rtensor total_rtensor, temp_rtensor; four_body_header *fbh; @@ -193,6 +198,11 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete p_tor3 = gp.l[24]; p_tor4 = gp.l[25]; p_cot2 = gp.l[27]; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_tor_l = 0.0; + e_con_l = 0.0; + rvec_MakeZero( ext_press_l ); +#endif #if defined(DEBUG_FOCUS) num_frb_intrs = 0; #endif @@ -349,8 +359,11 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete // + fbp->V2 * exp_tor1 * (1.0 - SQR(cos_omega)) // + fbp->V3 * (0.5 + 2.0 * CUBE(cos_omega) - 1.5 * cos_omega); - e_tor = fn10 * sin_ijk * sin_jkl * CV; - data_e_tor[j] += e_tor; +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_tor_g[j] += fn10 * sin_ijk * sin_jkl * CV; +#else + e_tor_l += fn10 * sin_ijk * sin_jkl * CV; +#endif dfn11 = (-p_tor3 * exp_tor3_DjDk + (p_tor3 * exp_tor3_DjDk - p_tor4 * exp_tor4_DjDk) @@ -386,9 +399,13 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete /* 4-body conjugation energy */ fn12 = exp_cot2_ij * exp_cot2_jk * exp_cot2_kl; - e_con = fbp->p_cot1 * fn12 +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_con_g[j] += fbp->p_cot1 * fn12 * (1.0 + (SQR(cos_omega) - 1.0) * sin_ijk * sin_jkl); - data_e_con[j] += e_con; +#else + e_con_l += fbp->p_cot1 * fn12 + * (1.0 + (SQR(cos_omega) - 1.0) * sin_ijk * sin_jkl); +#endif Cconj = -2.0 * fn12 * fbp->p_cot1 * p_cot2 * (1.0 + (SQR(cos_omega) - 1.0) * sin_ijk * sin_jkl); @@ -491,7 +508,11 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete rvec_Scale( force, CEtors7 + CEconj4, p_ijk->dcos_dk ); atomic_rvecAdd( pbond_ij->ta_f, force ); rvec_iMultiply( ext_press, pbond_ij->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif rvec_ScaledAdd( workspace.f[j], CEtors7 + CEconj4, p_ijk->dcos_dj ); @@ -499,7 +520,11 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete rvec_Scale( force, CEtors7 + CEconj4, p_ijk->dcos_di ); atomic_rvecAdd( pbond_jk->ta_f, force ); rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif /* dcos_theta_jkl */ rvec_ScaledAdd( workspace.f[j], @@ -508,18 +533,30 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete rvec_Scale( force, CEtors8 + CEconj5, p_jkl->dcos_dj ); atomic_rvecAdd( pbond_jk->ta_f, force ); rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif rvec_Scale( force, CEtors8 + CEconj5, p_jkl->dcos_dk ); rvec_Add( pbond_kl->ta_f, force ); rvec_iMultiply( ext_press, rel_box_jl, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif /* dcos_omega */ rvec_Scale( force, CEtors9 + CEconj6, dcos_omega_di ); atomic_rvecAdd( pbond_ij->ta_f, force ); rvec_iMultiply( ext_press, pbond_ij->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif rvec_ScaledAdd( workspace.f[j], CEtors9 + CEconj6, dcos_omega_dj ); @@ -527,12 +564,20 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete rvec_Scale( force, CEtors9 + CEconj6, dcos_omega_dk ); rvec_Add( pbond_jk->ta_f, force ); rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif rvec_Scale( force, CEtors9 + CEconj6, dcos_omega_dl ); rvec_Add( pbond_kl->ta_f, force ); rvec_iMultiply( ext_press, rel_box_jl, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif #else ivec_Sum( rel_box_jl, pbond_jk->rel_box, pbond_kl->rel_box ); @@ -540,7 +585,11 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete rvec_Scale( force, CEtors7 + CEconj4, p_ijk->dcos_dk ); atomic_rvecAdd( workspace.f[i], force ); rvec_iMultiply( ext_press, pbond_ij->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif atomic_rvecScaledAdd( workspace.f[j], CEtors7 + CEconj4, p_ijk->dcos_dj ); @@ -548,7 +597,11 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete rvec_Scale( force, CEtors7 + CEconj4, p_ijk->dcos_di ); atomic_rvecAdd( workspace.f[k], force ); rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif /* dcos_theta_jkl */ atomic_rvecScaledAdd( workspace.f[j], @@ -557,18 +610,30 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete rvec_Scale( force, CEtors8 + CEconj5, p_jkl->dcos_dj ); atomic_rvecAdd( workspace.f[k], force ); rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif rvec_Scale( force, CEtors8 + CEconj5, p_jkl->dcos_dk ); atomic_rvecAdd( workspace.f[l], force ); rvec_iMultiply( ext_press, rel_box_jl, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif /* dcos_omega */ rvec_Scale( force, CEtors9 + CEconj6, dcos_omega_di ); atomic_rvecAdd( workspace.f[i], force ); rvec_iMultiply( ext_press, pbond_ij->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif atomic_rvecScaledAdd( workspace.f[j], CEtors9 + CEconj6, dcos_omega_dj ); @@ -576,111 +641,22 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete rvec_Scale( force, CEtors9 + CEconj6, dcos_omega_dk ); atomic_rvecAdd( workspace.f[k], force ); rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); - rvec_Add( data_ext_press[j], ext_press ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); +#endif rvec_Scale( force, CEtors9 + CEconj6, dcos_omega_dl ); rvec_Add( workspace.f[l], force ); rvec_iMultiply( ext_press, rel_box_jl, force ); - rvec_Add( data_ext_press[j], ext_press ); -#endif - } - -#if defined(TEST_ENERGY) - /* fprintf( out_control->etor, - "%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f\n", - r_ij, r_jk, r_kl, cos_ijk, cos_jkl, sin_ijk, sin_jkl ); - fprintf( out_control->etor, "%12.8f\n", dfn11 ); */ - /* fprintf( out_control->etor, - "%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f\n", - CEtors2, CEtors3, CEtors4, CEtors5, CEtors6, - CEtors7, CEtors8, CEtors9 ); */ - /* fprintf( out_control->etor, - "%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f\n", - htra, htrb, htrc, hthd, hthe, hnra, hnrc, hnhd, hnhe ); */ - /* fprintf( out_control->etor, - "%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f\n", - CEconj1, CEconj2, CEconj3, CEconj4, CEconj5, CEconj6 ); */ - - /* fprintf( out_control->etor, "%12.6f%12.6f%12.6f%12.6f\n", - fbp->V1, fbp->V2, fbp->V3, fbp->p_tor1 );*/ - - fprintf(out_control->etor, - //"%6d%6d%6d%6d%24.15e%24.15e%24.15e%24.15e\n", - "%6d%6d%6d%6d%12.4f%12.4f%12.4f%12.4f\n", - system->my_atoms[i].orig_id,system->my_atoms[j].orig_id, - system->my_atoms[k].orig_id,system->my_atoms[l].orig_id, - RAD2DEG(omega), BOA_jk, e_tor, data->my_en.e_tor ); - - fprintf(out_control->econ, - //"%6d%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e%24.15e\n", - "%6d%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f%12.4f\n", - system->my_atoms[i].orig_id,system->my_atoms[j].orig_id, - system->my_atoms[k].orig_id,system->my_atoms[l].orig_id, - RAD2DEG(omega), BOA_ij, BOA_jk, BOA_kl, - e_con, data->my_en.e_con ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_l, ext_press ); #endif - -#if defined(TEST_FORCES) - /* Torsion Forces */ - Add_dBOpinpi2( system, lists, j, pk, CEtors2, 0.0, - workspace.f_tor, workspace.f_tor ); - Add_dDelta( system, lists, j, CEtors3, workspace.f_tor ); - Add_dDelta( system, lists, k, CEtors3, workspace.f_tor ); - Add_dBO( system, lists, j, pij, CEtors4, workspace.f_tor ); - Add_dBO( system, lists, j, pk, CEtors5, workspace.f_tor ); - Add_dBO( system, lists, k, plk, CEtors6, workspace.f_tor ); - - rvec_ScaledAdd( workspace.f_tor[i], - CEtors7, p_ijk->dcos_dk ); - rvec_ScaledAdd( workspace.f_tor[j], - CEtors7, p_ijk->dcos_dj ); - rvec_ScaledAdd( workspace.f_tor[k], - CEtors7, p_ijk->dcos_di ); - - rvec_ScaledAdd( workspace.f_tor[j], - CEtors8, p_jkl->dcos_di ); - rvec_ScaledAdd( workspace.f_tor[k], - CEtors8, p_jkl->dcos_dj ); - rvec_ScaledAdd( workspace.f_tor[l], - CEtors8, p_jkl->dcos_dk ); - - rvec_ScaledAdd( workspace.f_tor[i], - CEtors9, dcos_omega_di ); - rvec_ScaledAdd( workspace.f_tor[j], - CEtors9, dcos_omega_dj ); - rvec_ScaledAdd( workspace.f_tor[k], - CEtors9, dcos_omega_dk ); - rvec_ScaledAdd( workspace.f_tor[l], - CEtors9, dcos_omega_dl ); - - /* Conjugation Forces */ - Add_dBO( system, lists, j, pij, CEconj1, workspace.f_con ); - Add_dBO( system, lists, j, pk, CEconj2, workspace.f_con ); - Add_dBO( system, lists, k, plk, CEconj3, workspace.f_con ); - - rvec_ScaledAdd( workspace.f_con[i], - CEconj4, p_ijk->dcos_dk ); - rvec_ScaledAdd( workspace.f_con[j], - CEconj4, p_ijk->dcos_dj ); - rvec_ScaledAdd( workspace.f_con[k], - CEconj4, p_ijk->dcos_di ); - - rvec_ScaledAdd( workspace.f_con[j], - CEconj5, p_jkl->dcos_di ); - rvec_ScaledAdd( workspace.f_con[k], - CEconj5, p_jkl->dcos_dj ); - rvec_ScaledAdd( workspace.f_con[l], - CEconj5, p_jkl->dcos_dk ); - - rvec_ScaledAdd( workspace.f_con[i], - CEconj6, dcos_omega_di ); - rvec_ScaledAdd( workspace.f_con[j], - CEconj6, dcos_omega_dj ); - rvec_ScaledAdd( workspace.f_con[k], - CEconj6, dcos_omega_dk ); - rvec_ScaledAdd( workspace.f_con[l], - CEconj6, dcos_omega_dl ); #endif + } } // pl check ends } // pl loop ends } // pi check ends @@ -689,6 +665,12 @@ CUDA_GLOBAL void Cuda_Torsion_Angles_Part1( reax_atom *my_atoms, global_paramete } // j<k && j-k neighbor check ends } // pk loop ends // } // j loop + +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + atomicAdd( (double *) e_tor_g, (double) e_tor_l ); + atomicAdd( (double *) e_con_g, (double) e_con_l ); + atomic_rvecAdd( *ext_press_g, ext_press_l ); +#endif } diff --git a/PG-PuReMD/src/cuda/cuda_valence_angles.cu b/PG-PuReMD/src/cuda/cuda_valence_angles.cu index 32ac5543..df1583ab 100644 --- a/PG-PuReMD/src/cuda/cuda_valence_angles.cu +++ b/PG-PuReMD/src/cuda/cuda_valence_angles.cu @@ -36,7 +36,7 @@ CUDA_GLOBAL void Cuda_Valence_Angles_Part1( reax_atom *my_atoms, global_parameters gp, single_body_parameters *sbp, three_body_header *d_thbh, control_params *control, storage workspace, reax_list bond_list, reax_list thb_list, int n, int N, int num_atom_types, - real *data_e_ang, real *data_e_pen, real *data_e_coa, rvec *my_ext_press ) + real *e_ang_g, real *e_pen_g, real *e_coa_g, rvec *ext_press_g ) { int i, j, pi, k, pk, t; int type_i, type_j, type_k; @@ -53,13 +53,19 @@ CUDA_GLOBAL void Cuda_Valence_Angles_Part1( reax_atom *my_atoms, real dSBO1, dSBO2, SBO, SBO2, CSBO2, SBOp, prod_SBO, vlpadj; real CEval1, CEval2, CEval3, CEval4, CEval5, CEval6, CEval7, CEval8; real CEpen1, CEpen2, CEpen3; - real e_ang, e_coa, e_pen; + real e_pen, e_coa; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + real e_ang_l, e_coa_l, e_pen_l; +#endif real CEcoa1, CEcoa2, CEcoa3, CEcoa4, CEcoa5; real Cf7ij, Cf7jk, Cf8j, Cf9j; real f7_ij, f7_jk, f8_Dj, f9_Dj; real Ctheta_0, theta_0, theta_00, theta, cos_theta, sin_theta; real BOA_ij, BOA_jk; rvec force, ext_press; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec ext_press_l; +#endif three_body_header *thbh; three_body_parameters *thbp; three_body_interaction_data *p_ijk; @@ -85,12 +91,19 @@ CUDA_GLOBAL void Cuda_Valence_Angles_Part1( reax_atom *my_atoms, p_val9 = gp.l[16]; p_val10 = gp.l[17]; //num_thb_intrs = j * THREE_BODY_OFFSET; +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_ang_l = 0.0; + e_coa_l = 0.0; + e_pen_l = 0.0; + rvec_MakeZero( ext_press_l ); +#endif type_j = my_atoms[j].type; start_j = Start_Index( j, &bond_list ); end_j = End_Index( j, &bond_list ); p_val3 = sbp[ type_j ].p_val3; p_val5 = sbp[ type_j ].p_val5; + /* sum of pi and pi-pi BO terms for all neighbors of atom j, * used in determining the equilibrium angle between i-j-k */ SBOp = 0.0; @@ -101,7 +114,7 @@ CUDA_GLOBAL void Cuda_Valence_Angles_Part1( reax_atom *my_atoms, for ( t = start_j; t < end_j; ++t ) { bo_jt = &bond_list.bond_list[t].bo_data; - SBOp += (bo_jt->BO_pi + bo_jt->BO_pi2); + SBOp += bo_jt->BO_pi + bo_jt->BO_pi2; temp = SQR( bo_jt->BO ); temp *= temp; temp *= temp; @@ -236,309 +249,239 @@ CUDA_GLOBAL void Cuda_Valence_Angles_Part1( reax_atom *my_atoms, /* Fortran ReaxFF code hard-codes the constant below * as of 2019-02-27, so use that for now */ - if ( j < n && BOA_jk >= 0.0 && (bo_ij->BO * bo_jk->BO) >= 0.00001 ) -// if ( j < n && BOA_jk >= 0.0 && (bo_ij->BO * bo_jk->BO) > SQR(control->thb_cut) ) + if ( j >= n || BOA_jk < 0.0 || (bo_ij->BO * bo_jk->BO) < 0.00001 ) +// if ( j >= n || BOA_jk < 0.0 || (bo_ij->BO * bo_jk->BO) < SQR(control->thb_cut) ) { - thbh = &d_thbh[ - index_thbp(type_i, type_j, type_k, num_atom_types) ]; + continue; + } + + thbh = &d_thbh[ + index_thbp(type_i, type_j, type_k, num_atom_types) ]; - for ( cnt = 0; cnt < thbh->cnt; ++cnt ) + for ( cnt = 0; cnt < thbh->cnt; ++cnt ) + { + /* valence angle does not exist in the force field */ + if ( FABS(thbh->prm[cnt].p_val1) < 0.001 ) { - /* valence angle does not exist in the force field */ - if ( FABS(thbh->prm[cnt].p_val1) < 0.001 ) - { - continue; - } + continue; + } - thbp = &thbh->prm[cnt]; - - /* calculate valence angle energy */ - p_val1 = thbp->p_val1; - p_val2 = thbp->p_val2; - p_val4 = thbp->p_val4; - p_val7 = thbp->p_val7; - theta_00 = thbp->theta_00; - - exp3ij = EXP( -p_val3 * POW( BOA_ij, p_val4 ) ); - f7_ij = 1.0 - exp3ij; - Cf7ij = p_val3 * p_val4 - * POW( BOA_ij, p_val4 - 1.0 ) * exp3ij; - - exp3jk = EXP( -p_val3 * POW( BOA_jk, p_val4 ) ); - f7_jk = 1.0 - exp3jk; - Cf7jk = p_val3 * p_val4 - * POW( BOA_jk, p_val4 - 1.0 ) * exp3jk; - - expval7 = EXP( -p_val7 * workspace.Delta_boc[j] ); - trm8 = 1.0 + expval6 + expval7; - f8_Dj = p_val5 - ( (p_val5 - 1.0) * (2.0 + expval6) / trm8 ); - Cf8j = ( (1.0 - p_val5) / SQR(trm8) ) - * (p_val6 * expval6 * trm8 - - (2.0 + expval6) * ( p_val6*expval6 - p_val7*expval7) ); - - theta_0 = 180.0 - theta_00 * (1.0 - EXP(-p_val10 * (2.0 - SBO2))); - theta_0 = DEG2RAD( theta_0 ); - - expval2theta = p_val1 * EXP(-p_val2 * SQR(theta_0 - theta)); - if ( p_val1 >= 0.0 ) - { - expval12theta = p_val1 - expval2theta; - } - /* to avoid linear Me-H-Me angles (6/6/06) */ - else - { - expval12theta = -expval2theta; - } + thbp = &thbh->prm[cnt]; + + /* calculate valence angle energy */ + p_val1 = thbp->p_val1; + p_val2 = thbp->p_val2; + p_val4 = thbp->p_val4; + p_val7 = thbp->p_val7; + theta_00 = thbp->theta_00; + + exp3ij = EXP( -p_val3 * POW( BOA_ij, p_val4 ) ); + f7_ij = 1.0 - exp3ij; + Cf7ij = p_val3 * p_val4 + * POW( BOA_ij, p_val4 - 1.0 ) * exp3ij; + + exp3jk = EXP( -p_val3 * POW( BOA_jk, p_val4 ) ); + f7_jk = 1.0 - exp3jk; + Cf7jk = p_val3 * p_val4 + * POW( BOA_jk, p_val4 - 1.0 ) * exp3jk; + + expval7 = EXP( -p_val7 * workspace.Delta_boc[j] ); + trm8 = 1.0 + expval6 + expval7; + f8_Dj = p_val5 - (p_val5 - 1.0) * (2.0 + expval6) / trm8; + Cf8j = ( (1.0 - p_val5) / SQR(trm8) ) + * (p_val6 * expval6 * trm8 + - (2.0 + expval6) * ( p_val6 * expval6 - p_val7 * expval7) ); + + theta_0 = 180.0 - theta_00 * (1.0 - EXP(-p_val10 * (2.0 - SBO2))); + theta_0 = DEG2RAD( theta_0 ); + + expval2theta = p_val1 * EXP(-p_val2 * SQR(theta_0 - theta)); + if ( p_val1 >= 0.0 ) + { + expval12theta = p_val1 - expval2theta; + } + /* to avoid linear Me-H-Me angles (6/6/06) */ + else + { + expval12theta = -expval2theta; + } - CEval1 = Cf7ij * f7_jk * f8_Dj * expval12theta; - CEval2 = Cf7jk * f7_ij * f8_Dj * expval12theta; - CEval3 = Cf8j * f7_ij * f7_jk * expval12theta; - CEval4 = 2.0 * p_val2 * f7_ij * f7_jk * f8_Dj - * expval2theta * (theta_0 - theta); + CEval1 = Cf7ij * f7_jk * f8_Dj * expval12theta; + CEval2 = Cf7jk * f7_ij * f8_Dj * expval12theta; + CEval3 = Cf8j * f7_ij * f7_jk * expval12theta; + CEval4 = 2.0 * p_val2 * f7_ij * f7_jk * f8_Dj + * expval2theta * (theta_0 - theta); - Ctheta_0 = p_val10 * DEG2RAD(theta_00) - * EXP( -p_val10 * (2.0 - SBO2) ); + Ctheta_0 = p_val10 * DEG2RAD(theta_00) + * EXP( -p_val10 * (2.0 - SBO2) ); - CEval5 = CEval4 * Ctheta_0 * CSBO2; - CEval6 = CEval5 * dSBO1; - CEval7 = CEval5 * dSBO2; - CEval8 = CEval4 / sin_theta; + CEval5 = CEval4 * Ctheta_0 * CSBO2; + CEval6 = CEval5 * dSBO1; + CEval7 = CEval5 * dSBO2; + CEval8 = CEval4 / sin_theta; - if ( pk < pi ) - { - e_ang = f7_ij * f7_jk * f8_Dj * expval12theta; - data_e_ang[j] += e_ang; - } + if ( pk < pi ) + { +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_ang_g[j] += f7_ij * f7_jk * f8_Dj * expval12theta; +#else + e_ang_l += f7_ij * f7_jk * f8_Dj * expval12theta; +#endif + } - /* calculate penalty for double bonds in valency angles */ - p_pen1 = thbp->p_pen1; - - exp_pen2ij = EXP( -p_pen2 * SQR( BOA_ij - 2.0 ) ); - exp_pen2jk = EXP( -p_pen2 * SQR( BOA_jk - 2.0 ) ); - exp_pen3 = EXP( -p_pen3 * workspace.Delta[j] ); - exp_pen4 = EXP( p_pen4 * workspace.Delta[j] ); - trm_pen34 = 1.0 + exp_pen3 + exp_pen4; - f9_Dj = ( 2.0 + exp_pen3 ) / trm_pen34; - Cf9j = (-p_pen3 * exp_pen3 * trm_pen34 - - (2.0 + exp_pen3) * ( -p_pen3 * exp_pen3 - + p_pen4 * exp_pen4 )) / SQR( trm_pen34 ); - /* very important: since each kernel generates all interactions, - * need to prevent all energies becoming duplicates */ - if ( pk < pi ) - { - e_pen = p_pen1 * f9_Dj * exp_pen2ij * exp_pen2jk; - data_e_pen[j] += e_pen; - } + /* calculate penalty for double bonds in valency angles */ + p_pen1 = thbp->p_pen1; + + exp_pen2ij = EXP( -p_pen2 * SQR( BOA_ij - 2.0 ) ); + exp_pen2jk = EXP( -p_pen2 * SQR( BOA_jk - 2.0 ) ); + exp_pen3 = EXP( -p_pen3 * workspace.Delta[j] ); + exp_pen4 = EXP( p_pen4 * workspace.Delta[j] ); + trm_pen34 = 1.0 + exp_pen3 + exp_pen4; + f9_Dj = ( 2.0 + exp_pen3 ) / trm_pen34; + Cf9j = (-p_pen3 * exp_pen3 * trm_pen34 + - (2.0 + exp_pen3) * ( -p_pen3 * exp_pen3 + + p_pen4 * exp_pen4 )) / SQR( trm_pen34 ); + + /* very important: since each kernel generates all interactions, + * need to prevent all energies becoming duplicates */ + if ( pk < pi ) + { + e_pen = p_pen1 * f9_Dj * exp_pen2ij * exp_pen2jk; +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_pen_g[j] += e_pen; +#else + e_pen_l += e_pen; +#endif + } - CEpen1 = e_pen * Cf9j / f9_Dj; - temp = -2.0 * p_pen2 * e_pen; - CEpen2 = temp * (BOA_ij - 2.0); - CEpen3 = temp * (BOA_jk - 2.0); - - /* calculate valency angle conjugation energy */ - p_coa1 = thbp->p_coa1; - - exp_coa2 = EXP( p_coa2 * workspace.Delta_boc[j] ); - e_coa = p_coa1 - * EXP( -p_coa4 * SQR(BOA_ij - 1.5) ) - * EXP( -p_coa4 * SQR(BOA_jk - 1.5) ) - * EXP( -p_coa3 * SQR(workspace.total_bond_order[i] - BOA_ij) ) - * EXP( -p_coa3 * SQR(workspace.total_bond_order[k] - BOA_jk) ) - / (1.0 + exp_coa2); - /* similar to above comment regarding if statement */ - if ( pk < pi ) - { - data_e_coa[j] += e_coa; - } + CEpen1 = e_pen * Cf9j / f9_Dj; + temp = -2.0 * p_pen2 * e_pen; + CEpen2 = temp * (BOA_ij - 2.0); + CEpen3 = temp * (BOA_jk - 2.0); + + /* calculate valency angle conjugation energy */ + p_coa1 = thbp->p_coa1; + + exp_coa2 = EXP( p_coa2 * workspace.Delta_boc[j] ); + e_coa = p_coa1 + * EXP( -p_coa4 * SQR(BOA_ij - 1.5) ) + * EXP( -p_coa4 * SQR(BOA_jk - 1.5) ) + * EXP( -p_coa3 * SQR(workspace.total_bond_order[i] - BOA_ij) ) + * EXP( -p_coa3 * SQR(workspace.total_bond_order[k] - BOA_jk) ) + / (1.0 + exp_coa2); + /* similar to above comment regarding if statement */ + if ( pk < pi ) + { +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + e_coa_g[j] += e_coa; +#else + e_coa_l += e_coa; +#endif + } - CEcoa1 = -2.0 * p_coa4 * (BOA_ij - 1.5) * e_coa; - CEcoa2 = -2.0 * p_coa4 * (BOA_jk - 1.5) * e_coa; - CEcoa3 = -p_coa2 * exp_coa2 * e_coa / (1.0 + exp_coa2); - CEcoa4 = -2.0 * p_coa3 * (workspace.total_bond_order[i] - BOA_ij) * e_coa; - CEcoa5 = -2.0 * p_coa3 * (workspace.total_bond_order[k] - BOA_jk) * e_coa; + CEcoa1 = -2.0 * p_coa4 * (BOA_ij - 1.5) * e_coa; + CEcoa2 = -2.0 * p_coa4 * (BOA_jk - 1.5) * e_coa; + CEcoa3 = -p_coa2 * exp_coa2 * e_coa / (1.0 + exp_coa2); + CEcoa4 = -2.0 * p_coa3 * (workspace.total_bond_order[i] - BOA_ij) * e_coa; + CEcoa5 = -2.0 * p_coa3 * (workspace.total_bond_order[k] - BOA_jk) * e_coa; - /* calculate force contributions */ - /* we must again check for pk < pi for entire forces part */ - if ( pk < pi ) - { + /* calculate force contributions */ + /* we must again check for pk < pi for entire forces part */ + if ( pk < pi ) + { #if !defined(CUDA_ACCUM_FORCE_ATOMIC) - bo_ij->Cdbo += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); - bo_jk->Cdbo += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5)); - workspace.CdDelta[j] += ((CEval3 + CEval7) + CEpen1 + CEcoa3); - pbond_ij->va_CdDelta += CEcoa4; - pbond_jk->va_CdDelta += CEcoa5; + bo_ij->Cdbo += CEval1 + CEpen2 + (CEcoa1 - CEcoa4); + bo_jk->Cdbo += CEval2 + CEpen3 + (CEcoa2 - CEcoa5); + workspace.CdDelta[j] += (CEval3 + CEval7) + CEpen1 + CEcoa3; + pbond_ij->va_CdDelta += CEcoa4; + pbond_jk->va_CdDelta += CEcoa5; #else - atomicAdd( &bo_ij->Cdbo, CEval1 + CEpen2 + (CEcoa1 - CEcoa4) ); - atomicAdd( &bo_jk->Cdbo, CEval2 + CEpen3 + (CEcoa2 - CEcoa5) ); - atomicAdd( &workspace.CdDelta[j], (CEval3 + CEval7) + CEpen1 + CEcoa3 ); - atomicAdd( &workspace.CdDelta[i], CEcoa4 ); - atomicAdd( &workspace.CdDelta[k], CEcoa5 ); + atomicAdd( &bo_ij->Cdbo, CEval1 + CEpen2 + (CEcoa1 - CEcoa4) ); + atomicAdd( &bo_jk->Cdbo, CEval2 + CEpen3 + (CEcoa2 - CEcoa5) ); + atomicAdd( &workspace.CdDelta[j], (CEval3 + CEval7) + CEpen1 + CEcoa3 ); + atomicAdd( &workspace.CdDelta[i], CEcoa4 ); + atomicAdd( &workspace.CdDelta[k], CEcoa5 ); #endif - for ( t = start_j; t < end_j; ++t ) - { - pbond_jt = &bond_list.bond_list[t]; - bo_jt = &pbond_jt->bo_data; - temp_bo_jt = bo_jt->BO; - temp = CUBE( temp_bo_jt ); - pBOjt7 = temp * temp * temp_bo_jt; + for ( t = start_j; t < end_j; ++t ) + { + pbond_jt = &bond_list.bond_list[t]; + bo_jt = &pbond_jt->bo_data; + temp_bo_jt = bo_jt->BO; + temp = CUBE( temp_bo_jt ); + pBOjt7 = temp * temp * temp_bo_jt; #if !defined(CUDA_ACCUM_FORCE_ATOMIC) - bo_jt->Cdbo += (CEval6 * pBOjt7); - bo_jt->Cdbopi += CEval5; - bo_jt->Cdbopi2 += CEval5; + bo_jt->Cdbo += (CEval6 * pBOjt7); + bo_jt->Cdbopi += CEval5; + bo_jt->Cdbopi2 += CEval5; #else - atomicAdd( &bo_jt->Cdbo, CEval6 * pBOjt7 ); - atomicAdd( &bo_jt->Cdbopi, CEval5 ); - atomicAdd( &bo_jt->Cdbopi2, CEval5 ); + atomicAdd( &bo_jt->Cdbo, CEval6 * pBOjt7 ); + atomicAdd( &bo_jt->Cdbopi, CEval5 ); + atomicAdd( &bo_jt->Cdbopi2, CEval5 ); #endif - } + } - if ( control->virial == 0 ) - { + if ( control->virial == 0 ) + { #if !defined(CUDA_ACCUM_FORCE_ATOMIC) - rvec_ScaledAdd( pbond_ij->va_f, CEval8, p_ijk->dcos_di ); - rvec_ScaledAdd( workspace.f[j], CEval8, p_ijk->dcos_dj ); - rvec_ScaledAdd( pbond_jk->va_f, CEval8, p_ijk->dcos_dk ); + rvec_ScaledAdd( pbond_ij->va_f, CEval8, p_ijk->dcos_di ); + rvec_ScaledAdd( workspace.f[j], CEval8, p_ijk->dcos_dj ); + rvec_ScaledAdd( pbond_jk->va_f, CEval8, p_ijk->dcos_dk ); #else - atomic_rvecScaledAdd( workspace.f[i], CEval8, p_ijk->dcos_di ); - atomic_rvecScaledAdd( workspace.f[j], CEval8, p_ijk->dcos_dj ); - atomic_rvecScaledAdd( workspace.f[k], CEval8, p_ijk->dcos_dk ); + atomic_rvecScaledAdd( workspace.f[i], CEval8, p_ijk->dcos_di ); + atomic_rvecScaledAdd( workspace.f[j], CEval8, p_ijk->dcos_dj ); + atomic_rvecScaledAdd( workspace.f[k], CEval8, p_ijk->dcos_dk ); #endif - } - else - { + } + else + { #if !defined(CUDA_ACCUM_FORCE_ATOMIC) - /* terms not related to bond order derivatives are - * added directly into forces and pressure vector/tensor */ - rvec_Scale( force, CEval8, p_ijk->dcos_di ); - rvec_Add( pbond_ij->va_f, force ); - rvec_iMultiply( ext_press, pbond_ij->rel_box, force ); - rvec_Add( my_ext_press[j], ext_press ); - - rvec_ScaledAdd( workspace.f[j], CEval8, p_ijk->dcos_dj ); - - rvec_Scale( force, CEval8, p_ijk->dcos_dk ); - rvec_Add( pbond_jk->va_f, force ); - rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); - rvec_Add( my_ext_press[j], ext_press ); + /* terms not related to bond order derivatives are + * added directly into forces and pressure vector/tensor */ + rvec_Scale( force, CEval8, p_ijk->dcos_di ); + rvec_Add( pbond_ij->va_f, force ); + rvec_iMultiply( ext_press, pbond_ij->rel_box, force ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); #else - /* terms not related to bond order derivatives are - * added directly into forces and pressure vector/tensor */ - rvec_Scale( force, CEval8, p_ijk->dcos_di ); - atomic_rvecAdd( workspace.f[i], force ); - rvec_iMultiply( ext_press, pbond_ij->rel_box, force ); - rvec_Add( my_ext_press[j], ext_press ); - - rvec_ScaledAdd( workspace.f[j], CEval8, p_ijk->dcos_dj ); - - rvec_Scale( force, CEval8, p_ijk->dcos_dk ); - atomic_rvecAdd( workspace.f[k], force ); - rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); - rvec_Add( my_ext_press[j], ext_press ); -#endif - } - } - -#if defined(TEST_ENERGY) - /*fprintf( out_control->eval, "%12.8f%12.8f%12.8f%12.8f\n", - p_val3, p_val4, BOA_ij, BOA_jk ); - fprintf(out_control->eval, "%13.8f%13.8f%13.8f%13.8f%13.8f\n", - workspace.Delta_e[j], workspace.vlpex[j], - dSBO1, dSBO2, vlpadj ); - fprintf( out_control->eval, "%12.8f%12.8f%12.8f%12.8f\n", - f7_ij, f7_jk, f8_Dj, expval12theta ); - fprintf( out_control->eval, - "%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f\n", - CEval1, CEval2, CEval3, CEval4, - CEval5, CEval6, CEval7, CEval8 ); - - fprintf( out_control->eval, - "%12.8f%12.8f%12.8f\n%12.8f%12.8f%12.8f\n%12.8f%12.8f%12.8f\n", - p_ijk->dcos_di[0]/sin_theta, p_ijk->dcos_di[1]/sin_theta, - p_ijk->dcos_di[2]/sin_theta, - p_ijk->dcos_dj[0]/sin_theta, p_ijk->dcos_dj[1]/sin_theta, - p_ijk->dcos_dj[2]/sin_theta, - p_ijk->dcos_dk[0]/sin_theta, p_ijk->dcos_dk[1]/sin_theta, - p_ijk->dcos_dk[2]/sin_theta); - - fprintf( out_control->eval, - "%6d%6d%6d%15.8f%15.8f\n", - system->my_atoms[i].orig_id, - system->my_atoms[j].orig_id, - system->my_atoms[k].orig_id, - RAD2DEG(theta), e_ang );*/ - - fprintf( out_control->eval, - //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e%24.15e\n", - "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f%12.4f\n", - system->my_atoms[i].orig_id, - system->my_atoms[j].orig_id, - system->my_atoms[k].orig_id, - RAD2DEG(theta), theta_0, BOA_ij, BOA_jk, - e_ang, data->my_en.e_ang ); - - fprintf( out_control->epen, - //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e\n", - "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f\n", - system->my_atoms[i].orig_id, - system->my_atoms[j].orig_id, - system->my_atoms[k].orig_id, - RAD2DEG(theta), BOA_ij, BOA_jk, e_pen, - data->my_en.e_pen ); - - fprintf( out_control->ecoa, - //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e\n", - "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f\n", - system->my_atoms[i].orig_id, - system->my_atoms[j].orig_id, - system->my_atoms[k].orig_id, - RAD2DEG(theta), BOA_ij, BOA_jk, - e_coa, data->my_en.e_coa ); + rvec_Add( ext_press_g[j], ext_press_l ); #endif -#if defined(TEST_FORCES) - /* angle forces */ - Add_dBO( system, lists, j, pi, CEval1, workspace.f_ang ); - Add_dBO( system, lists, j, pk, CEval2, workspace.f_ang ); - Add_dDelta( system, lists, j, - CEval3 + CEval7, workspace.f_ang ); + rvec_ScaledAdd( workspace.f[j], CEval8, p_ijk->dcos_dj ); - for( t = start_j; t < end_j; ++t ) - { - pbond_jt = &bond_list.bond_list[t]; - bo_jt = &pbond_jt->bo_data; - temp_bo_jt = bo_jt->BO; - temp = CUBE( temp_bo_jt ); - pBOjt7 = temp * temp * temp_bo_jt; + rvec_Scale( force, CEval8, p_ijk->dcos_dk ); + rvec_Add( pbond_jk->va_f, force ); + rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_g[j], ext_press_l ); +#endif +#else + /* terms not related to bond order derivatives are + * added directly into forces and pressure vector/tensor */ + rvec_Scale( force, CEval8, p_ijk->dcos_di ); + atomic_rvecAdd( workspace.f[i], force ); + rvec_iMultiply( ext_press, pbond_ij->rel_box, force ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_g[j], ext_press_l ); +#endif - Add_dBO( system, lists, j, t, pBOjt7 * CEval6, - workspace.f_ang ); - Add_dBOpinpi2( system, lists, j, t, CEval5, CEval5, - workspace.f_ang, workspace.f_ang ); - } + rvec_ScaledAdd( workspace.f[j], CEval8, p_ijk->dcos_dj ); - rvec_ScaledAdd( workspace.f_ang[i], CEval8, p_ijk->dcos_di ); - rvec_ScaledAdd( workspace.f_ang[j], CEval8, p_ijk->dcos_dj ); - rvec_ScaledAdd( workspace.f_ang[k], CEval8, p_ijk->dcos_dk ); - /* end angle forces */ - - /* penalty forces */ - Add_dDelta( system, lists, j, CEpen1, workspace.f_pen ); - Add_dBO( system, lists, j, pi, CEpen2, workspace.f_pen ); - Add_dBO( system, lists, j, pk, CEpen3, workspace.f_pen ); - /* end penalty forces */ - - /* coalition forces */ - Add_dBO( system, lists, j, pi, CEcoa1 - CEcoa4, - workspace.f_coa ); - Add_dBO( system, lists, j, pk, CEcoa2 - CEcoa5, - workspace.f_coa ); - Add_dDelta( system, lists, j, CEcoa3, workspace.f_coa ); - Add_dDelta( system, lists, i, CEcoa4, workspace.f_coa ); - Add_dDelta( system, lists, k, CEcoa5, workspace.f_coa ); - /* end coalition forces */ + rvec_Scale( force, CEval8, p_ijk->dcos_dk ); + atomic_rvecAdd( workspace.f[k], force ); + rvec_iMultiply( ext_press, pbond_jk->rel_box, force ); +#if !defined(CUDA_ACCUM_ENERGY_ATOMIC) + rvec_Add( ext_press_g[j], ext_press ); +#else + rvec_Add( ext_press_g[j], ext_press_l ); #endif +#endif + } } } } @@ -546,6 +489,13 @@ CUDA_GLOBAL void Cuda_Valence_Angles_Part1( reax_atom *my_atoms, Set_End_Index( pi, num_thb_intrs, &thb_list ); } + +#if defined(CUDA_ACCUM_ENERGY_ATOMIC) + atomicAdd( (double *) e_ang_g, (double) e_ang_l ); + atomicAdd( (double *) e_coa_g, (double) e_coa_l ); + atomicAdd( (double *) e_pen_g, (double) e_pen_l ); + atomic_rvecAdd( *ext_press_g, ext_press_l ); +#endif } diff --git a/PG-PuReMD/src/cuda/cuda_valence_angles.h b/PG-PuReMD/src/cuda/cuda_valence_angles.h index d91387d2..74df6b45 100644 --- a/PG-PuReMD/src/cuda/cuda_valence_angles.h +++ b/PG-PuReMD/src/cuda/cuda_valence_angles.h @@ -42,8 +42,8 @@ CUDA_GLOBAL void Cuda_Estimate_Valence_Angles( reax_atom *, control_params *, /* calculates the theta angle between atom triplet i-j-k */ -CUDA_DEVICE static inline void Calculate_Theta( const rvec dvec_ji, real d_ji, rvec dvec_jk, real d_jk, - real * const theta, real * const cos_theta ) +CUDA_DEVICE static inline void Calculate_Theta( const rvec dvec_ji, real d_ji, + const rvec dvec_jk, real d_jk, real * const theta, real * const cos_theta ) { assert( d_ji > 0.0 ); assert( d_jk > 0.0 ); @@ -64,8 +64,9 @@ CUDA_DEVICE static inline void Calculate_Theta( const rvec dvec_ji, real d_ji, r /* calculates the derivative of the cosine of the angle between atom triplet i-j-k */ -CUDA_DEVICE static inline void Calculate_dCos_Theta( const rvec dvec_ji, real d_ji, rvec dvec_jk, real d_jk, - rvec * const dcos_theta_di, rvec * const dcos_theta_dj, rvec * const dcos_theta_dk ) +CUDA_DEVICE static inline void Calculate_dCos_Theta( const rvec dvec_ji, + real d_ji, const rvec dvec_jk, real d_jk, rvec * const dcos_theta_di, + rvec * const dcos_theta_dj, rvec * const dcos_theta_dk ) { int t; real sqr_d_ji, sqr_d_jk, inv_dists, inv_dists3, dot_dvecs, Cdot_inv3; diff --git a/PG-PuReMD/src/reax_types.h b/PG-PuReMD/src/reax_types.h index ef2fbaa1..127b2578 100644 --- a/PG-PuReMD/src/reax_types.h +++ b/PG-PuReMD/src/reax_types.h @@ -84,6 +84,8 @@ #endif /* aggregate atomic forces using atomic operations */ #define CUDA_ACCUM_FORCE_ATOMIC +/* aggregate atomic energies using atomic operations */ +#define CUDA_ACCUM_ENERGY_ATOMIC /* disable assertions if NOT compiling with debug support -- * the definition (or lack thereof) controls how the assert macro is defined */ @@ -131,7 +133,7 @@ #if defined(USE_REF_FORTRAN_REAXFF_CONSTANTS) /* transcendental constant pi */ - #define PI (3.14159265) +// #define PI (3.14159265) /* unit conversion from ??? to kcal / mol */ #define C_ELE (332.0638) /* Boltzmann constant, AMU * A^2 / (ps^2 * K) */ diff --git a/test/library/qmmm_amber/forces_charges.txt b/test/library/qmmm_amber/forces_charges.txt new file mode 100644 index 00000000..fe88a529 --- /dev/null +++ b/test/library/qmmm_amber/forces_charges.txt @@ -0,0 +1,777 @@ +Total Energy |Kinetic Energy |Potential Energy + -1374.311060684900440 0.000000000000000 -1374.311060684900440 + +i |F_x |F_y |F_z |Q + 1 101.795785159104 -112.791218389056 91.729275100765 0.115792827421 + 2 74.441831586489 -127.881951035570 175.497941779944 -0.458827596916 + 3 -79.678635163780 275.299817782130 -6.125209056359 0.070840632741 + 4 -88.632872232707 -102.053723908406 -198.791581562968 -0.047478739049 + 5 15.609605985380 21.370352505907 -43.459224488185 -0.054830468036 + 6 12.891298453587 19.844796781149 -28.298438011388 -0.062644558024 + 7 -25.841707893576 17.405913183316 4.820262714472 0.067776819514 + 8 4.330130660676 14.498948069526 -13.261491776472 0.031530359055 + 9 -2.816499781569 2.454652467766 1.863859750108 0.055603650241 + 10 -3.265212674584 -0.626171560718 2.197754344043 -0.007073276704 + 11 1.569450698088 6.339172720895 -9.919553877391 0.054436086374 + 12 -8.913931526567 -10.682924389337 11.008195804094 0.090306161444 + 13 1.788942941122 1.415390304329 11.254019699132 0.056406471954 + 14 -1.923466479132 -0.666972779086 -1.149368816080 0.088161629986 + 15 -1.319583800108 -0.440845374930 1.296792972134 -0.834000000000 + 16 0.675543028589 0.121765607414 -0.550015463024 0.417000000000 + 17 0.738000809303 0.163411627921 -0.844842092094 0.417000000000 + 18 -0.697834778580 -0.880335779378 1.071039059692 -0.834000000000 + 19 0.238174324331 0.230471829704 -0.328026381719 0.417000000000 + 20 0.551310194132 0.540821392078 -0.667365158250 0.417000000000 + 21 -0.001507818490 -0.018421336054 0.008818580866 -0.834000000000 + 22 -0.000659147026 0.021065901842 -0.009921912712 0.417000000000 + 23 0.007025155658 0.046137962932 -0.020631530258 0.417000000000 + 24 0.005937754480 -0.015939054184 0.041505491902 -0.834000000000 + 25 -0.006573867985 0.026712714641 -0.079634537918 0.417000000000 + 26 -0.000418165561 0.001307002132 -0.003873860586 0.417000000000 + 27 -0.091751959010 -0.011419517522 0.081118676719 -0.834000000000 + 28 0.022480288619 -0.000282084491 -0.020265744212 0.417000000000 + 29 0.168808433594 0.025625054380 -0.158888645033 0.417000000000 + 30 -0.067184660158 -0.157636335109 0.060341885228 -0.834000000000 + 31 0.063222671761 0.113374708109 -0.053497578011 0.417000000000 + 32 0.006268945127 0.014668132846 -0.005967337396 0.417000000000 + 33 0.228532288950 -0.581601419919 0.557046037990 -0.834000000000 + 34 -0.081472817682 0.373237714699 -0.316439120156 0.417000000000 + 35 -0.191252315139 0.358866085543 -0.307855965855 0.417000000000 + 36 -0.083936575704 -0.053289821120 0.101793790283 -0.834000000000 + 37 0.021862599787 0.015376821532 -0.023183122487 0.417000000000 + 38 0.055982808400 0.024453596424 -0.059101353887 0.417000000000 + 39 -0.178700348066 -0.179072564979 0.017654436356 -0.834000000000 + 40 0.011486196070 0.010529310012 -0.001449331462 0.417000000000 + 41 0.050282798506 0.056898433706 -0.004128066251 0.417000000000 + 42 -0.983620194147 1.089073960669 0.626806119470 -0.834000000000 + 43 0.431204462226 -0.378513430781 -0.372943329812 0.417000000000 + 44 0.324161047261 -0.587291851177 -0.128877449867 0.417000000000 + 45 0.000010904533 0.000025770129 -0.000022669453 0.417000000000 + 46 -0.089543653440 -0.083803195323 0.059312910380 -0.834000000000 + 47 0.008196935416 0.006900305530 -0.004635010644 0.417000000000 + 48 0.115829626443 0.107697222585 -0.069589733815 0.417000000000 + 49 -0.038032016067 -0.124957045683 0.435439718413 -0.834000000000 + 50 0.021796902281 0.059696335719 -0.152646774236 0.417000000000 + 51 0.031096157214 0.033673891609 -0.176200474651 0.417000000000 + 52 -0.049181087800 -0.006652299240 0.165750618389 -0.834000000000 + 53 0.053361576970 -0.008036975414 -0.188197495142 0.417000000000 + 54 0.007086233140 0.000976195966 -0.030253242968 0.417000000000 + 55 -0.773136318983 -0.629643636841 0.300714515053 -0.834000000000 + 56 0.232703940711 0.206514377685 -0.071984653984 0.417000000000 + 57 0.529009597776 0.459468211802 -0.118830670859 0.417000000000 + 58 0.008835013078 -0.023345721431 0.028022691106 -0.834000000000 + 59 -0.022180174397 0.059538685884 -0.063201271754 0.417000000000 + 60 -0.005564985551 0.016349491376 -0.023505775278 0.417000000000 + 61 -0.350847270608 0.195762090476 0.372933630048 -0.834000000000 + 62 0.118109297250 -0.056456599179 -0.131166361191 0.417000000000 + 63 0.054389861958 -0.032285540050 -0.054700371420 0.417000000000 + 64 -0.568577826634 -1.767122408120 0.290674957325 -0.834000000000 + 65 0.247784509768 0.649481325260 -0.120975980763 0.417000000000 + 66 0.440799875917 0.910808765507 -0.005510560417 0.417000000000 + 67 -0.000605911543 0.000155562512 0.000601456366 -0.834000000000 + 68 0.000842718036 -0.000225008695 -0.000892660483 0.417000000000 + 69 -0.048805581315 -0.075283019773 0.137236584449 -0.834000000000 + 70 0.026680897537 0.028691887580 -0.053861760301 0.417000000000 + 71 0.015963431480 0.033256210873 -0.048190310078 0.417000000000 + 72 -0.386255021722 -0.761273488618 2.002083042167 -0.834000000000 + 73 0.089449756853 0.232476484061 -0.658889665506 0.417000000000 + 74 0.294491690533 0.374488118211 -0.824861522546 0.417000000000 + 75 -0.004997655577 0.001697958677 0.007505030369 -0.834000000000 + 76 0.000997172504 -0.000172303919 -0.001630209383 0.417000000000 + 77 0.017260726629 -0.009176133930 -0.030484004158 0.417000000000 + 78 -0.442538774434 0.136697743502 0.662395997113 -0.834000000000 + 79 0.377452577114 -0.079071081823 -0.622747428729 0.417000000000 + 80 0.124739709749 -0.031528070347 -0.199206861638 0.417000000000 + 81 0.000521175165 0.000075995231 -0.001086945367 0.417000000000 + 82 0.000000528359 0.000000250498 -0.000008079996 0.417000000000 + 83 -0.209058926347 0.201001723376 1.077553254957 -0.834000000000 + 84 0.138434414703 -0.093389479519 -0.880339502157 0.417000000000 + 85 0.068204991357 -0.171959614258 -0.544060960929 0.417000000000 + 86 0.590829606900 -0.654396660280 1.542548034258 -0.834000000000 + 87 -0.508847614472 0.370536533963 -0.890553344515 0.417000000000 + 88 -0.251099737095 0.402776254498 -0.648752078774 0.417000000000 + 89 0.000074492631 0.000015748039 -0.000052259325 0.417000000000 + 90 0.000013086342 0.000002034524 -0.000008017244 0.417000000000 + 91 -1.295983172838 0.135027441277 0.811813245094 -0.834000000000 + 92 0.557789776589 -0.109781723422 -0.296883803551 0.417000000000 + 93 0.622874195414 -0.155112363218 -0.488687913724 0.417000000000 + 94 -1.370319587579 0.643161275807 1.962332591384 -0.834000000000 + 95 0.552197409653 -0.352196800949 -1.182705185490 0.417000000000 + 96 0.635618741398 -0.552771202648 -0.737991072254 0.417000000000 + 97 -0.015959611649 -0.022608406429 0.000926530457 -0.834000000000 + 98 0.019303638442 0.034108664896 -0.001251339771 0.417000000000 + 99 0.000002352436 0.000003432362 -0.000000778642 0.417000000000 + 100 -0.011779446505 -0.049929036761 0.047780071268 -0.834000000000 + 101 0.025319077492 0.094800393251 -0.082454531431 0.417000000000 + 102 0.001411839899 0.011066105621 -0.009227341752 0.417000000000 + 103 -0.140062391878 -0.998735833279 0.702192318218 -0.834000000000 + 104 0.094315496486 0.658000327114 -0.353335121296 0.417000000000 + 105 0.165203300210 0.564054916210 -0.475555242114 0.417000000000 + 106 0.061740983797 0.347156779272 -0.006832762966 -0.834000000000 + 107 -0.003889576571 -0.134509516762 0.124565311304 0.417000000000 + 108 -0.016880122089 -0.204188817112 0.025488306705 0.417000000000 + 109 0.005273306137 0.033030581078 0.014268080973 -0.834000000000 + 110 -0.004998540676 -0.031159453470 -0.016453634299 0.417000000000 + 111 -0.010144692636 -0.060949846731 -0.024187785417 0.417000000000 + 112 0.807666262677 0.770313734183 0.326467632884 -0.834000000000 + 113 -0.270231090249 -0.293690762894 -0.167188836073 0.417000000000 + 114 -0.333146054130 -0.425119782367 0.086287680886 0.417000000000 + 115 0.212349031906 0.330971873505 0.212100717831 -0.834000000000 + 116 -0.055027753823 -0.096841317154 -0.069780279589 0.417000000000 + 117 -0.095389090898 -0.209533116053 -0.097161389528 0.417000000000 + 118 0.017969779697 0.053993922927 0.040664807594 -0.834000000000 + 119 -0.001449316522 -0.003471472637 -0.002540031549 0.417000000000 + 120 -0.009761603131 -0.031143346825 -0.028649844403 0.417000000000 + 121 -0.005013049000 0.012659569230 0.016854001154 -0.834000000000 + 122 0.000175616117 -0.000327196725 -0.000458317297 0.417000000000 + 123 0.006379152682 -0.015228524680 -0.016585748235 0.417000000000 + 124 0.000505120278 0.000499355135 0.000316697652 -0.834000000000 + 125 -0.000000145942 -0.000000176539 -0.000000109905 0.417000000000 + 126 -0.003345750780 -0.003146109016 -0.001878750278 0.417000000000 + 127 0.036535713942 0.014593039891 0.057078224347 -0.834000000000 + 128 -0.036953772385 -0.014731600295 -0.068733825765 0.417000000000 + 129 -0.036801749433 -0.013848160844 -0.046118894748 0.417000000000 + 130 0.020076850970 0.014427815563 0.012505325041 -0.834000000000 + 131 -0.002704766994 -0.002201928623 -0.001937977316 0.417000000000 + 132 -0.000220146277 -0.000142453760 -0.000107293033 0.417000000000 + 133 -0.001828946235 0.035750020731 0.149711670676 -0.834000000000 + 134 -0.013414169205 -0.040126557150 -0.160135592657 0.417000000000 + 135 -0.000989957770 -0.004779752087 -0.023624856970 0.417000000000 + 136 0.181012517384 1.472328946419 0.329367698086 -0.834000000000 + 137 0.009203133778 -0.639115584591 -0.229572579277 0.417000000000 + 138 -0.062870513222 -0.810827848293 0.258148293774 0.417000000000 + 139 0.155904037016 -0.061075688219 0.404686457703 -0.834000000000 + 140 -0.113919117433 0.068057911320 -0.347269148509 0.417000000000 + 141 -0.033254161007 0.023012549543 -0.100224201307 0.417000000000 + 142 0.018961383137 0.057808509151 0.003442271123 -0.834000000000 + 143 -0.011140769804 -0.052110541986 -0.002310199916 0.417000000000 + 144 -0.024803463385 -0.058649995030 -0.002848640820 0.417000000000 + 145 -0.000117206376 -0.000296516780 -0.000116817833 0.417000000000 + 146 -0.000145010383 -0.000423337802 -0.000092653552 0.417000000000 + 147 0.005802162464 0.035884081619 0.046763814626 -0.834000000000 + 148 -0.000034773464 -0.007186155183 -0.009399284021 0.417000000000 + 149 -0.001979732409 -0.006986891439 -0.010945144194 0.417000000000 + 150 -0.034742318872 0.081875533263 0.060995901674 -0.834000000000 + 151 0.011743614829 -0.020204788423 -0.015497252999 0.417000000000 + 152 0.048406676656 -0.139903566931 -0.110607534960 0.417000000000 + 153 -0.039463969790 0.046575193894 0.112828625559 -0.834000000000 + 154 0.013133639390 -0.020780207648 -0.039019717736 0.417000000000 + 155 0.018037582787 -0.027514509263 -0.080015151345 0.417000000000 + 156 0.000076091575 0.000095074796 0.000212165483 -0.834000000000 + 157 -0.001562066210 -0.001411120682 -0.003500555260 0.417000000000 + 158 -0.036332298914 0.041628878176 0.039798428301 -0.834000000000 + 159 0.062258872989 -0.070374749719 -0.082156548643 0.417000000000 + 160 0.009942345629 -0.010159076689 -0.010354628921 0.417000000000 + 161 -0.344871699727 0.423648633376 0.697510442653 -0.834000000000 + 162 0.256472495660 -0.222597423651 -0.477698246585 0.417000000000 + 163 0.095766227735 -0.117427749259 -0.207439619110 0.417000000000 + 164 -0.014795215754 0.489947236041 0.751136197519 -0.834000000000 + 165 -0.022087867026 -0.337063659491 -0.399857261235 0.417000000000 + 166 -0.004392241992 -0.126624918487 -0.197922516708 0.417000000000 + 167 0.907126799713 0.986980503014 1.575988776235 -0.834000000000 + 168 -0.512191793842 -0.494311828160 -0.549808752285 0.417000000000 + 169 -0.265689758048 -0.564644265212 -0.691244863972 0.417000000000 + 170 0.198702515492 0.072496922847 0.152652070645 -0.834000000000 + 171 -0.075418451225 -0.037446464833 -0.054256517821 0.417000000000 + 172 -0.217112167630 -0.073435344111 -0.156892192754 0.417000000000 + 173 0.189291601602 0.140493855829 0.579595193242 -0.834000000000 + 174 -0.097840893661 -0.026919957166 -0.281664977441 0.417000000000 + 175 -0.170469870030 -0.149238837859 -0.518459714464 0.417000000000 + 176 -0.001744893635 0.000444629537 -0.003065323249 0.417000000000 + 177 0.000230655012 -0.000970812974 -0.000637062945 0.417000000000 + 178 0.000051965130 -0.000314578976 -0.000143747542 0.417000000000 + 179 -0.241726966605 0.927228120866 0.550991959239 -0.834000000000 + 180 0.143518824382 -0.464993751602 -0.188722668686 0.417000000000 + 181 0.176408548736 -0.479426309084 -0.414953467144 0.417000000000 + 182 0.102442881176 0.172022787700 -0.013098440539 -0.834000000000 + 183 -0.063073132793 -0.072674004081 -0.007293158622 0.417000000000 + 184 -0.048905930418 -0.105424470271 0.036287860782 0.417000000000 + 185 -0.273246026377 0.119615079788 -0.958576729900 -0.834000000000 + 186 0.156778467231 -0.117977238705 0.749977301317 0.417000000000 + 187 0.343614203260 0.120010657656 0.589343690899 0.417000000000 + 188 0.333803961072 -0.051622086104 0.355114831495 -0.834000000000 + 189 -0.165532090471 0.039704938286 -0.224911571042 0.417000000000 + 190 -0.071686608660 0.015520351364 -0.074137209318 0.417000000000 + 191 0.007013845232 -0.002185094648 0.007223484847 -0.834000000000 + 192 -0.000000927253 0.000000208221 -0.000000967148 0.417000000000 + 193 -0.000408305916 0.000180857124 -0.000407811284 0.417000000000 + 194 -0.002793011861 -0.000967925271 -0.001775694011 0.417000000000 + 195 -0.000000004244 -0.000000001039 -0.000000001997 0.417000000000 + 196 1.860608440961 -0.435071203055 1.592528583861 -0.834000000000 + 197 -0.902118542312 -0.045832457025 -0.812459560506 0.417000000000 + 198 -0.852506011048 0.193311490953 -0.539359560919 0.417000000000 + 199 -0.000001250747 0.000005705033 -0.000002124746 0.417000000000 + 200 -0.608210333870 1.233438216561 0.033228865905 -0.834000000000 + 201 0.526326609811 -0.990882194778 -0.116083434046 0.417000000000 + 202 0.235687205315 -0.621473562640 0.139533293923 0.417000000000 + 203 -0.002544230446 0.006239143947 0.003458364744 0.417000000000 + 204 -0.027887339720 -0.192226071267 -0.072935635626 -0.834000000000 + 205 0.030029873962 0.083130158650 0.083870075361 0.417000000000 + 206 0.001812478342 0.099207544527 0.026592892441 0.417000000000 + 207 0.140650455998 -1.165311098783 0.328795338062 -0.834000000000 + 208 -0.107894367309 0.558809914379 -0.100441777651 0.417000000000 + 209 0.006346181450 0.708088189271 -0.151389217023 0.417000000000 + 210 -0.000000599548 0.000000466802 0.000000883710 0.417000000000 + 211 0.187101870728 -0.392418528398 -0.086318851453 -0.834000000000 + 212 -0.076439040274 0.165087496840 0.063664090783 0.417000000000 + 213 -0.066051637720 0.113746937924 0.015157336087 0.417000000000 + 214 0.000011333941 -0.000075911290 -0.000010090128 -0.834000000000 + 215 0.000009581982 -0.000012592922 0.000005751716 -0.834000000000 + 216 -0.000267911997 0.000265147118 -0.000058867695 0.417000000000 + 217 -0.006029862196 0.008041652996 -0.002022384277 0.417000000000 + 218 -0.002136711496 0.005260339697 -0.000511555583 0.417000000000 + 219 0.042110165243 -0.043044969657 -0.067088367021 -0.834000000000 + 220 -0.033089264589 0.035808386085 0.043089267094 0.417000000000 + 221 0.017565906950 -0.019225773495 0.023306087046 0.417000000000 + 222 0.649751962412 -0.851927324097 0.216377223664 -0.834000000000 + 223 -0.448706154352 0.506834999794 -0.166339966208 0.417000000000 + 224 -0.347952472007 0.486949606172 -0.019708248728 0.417000000000 + 225 0.099464810903 -0.199420359378 -0.142641975548 -0.834000000000 + 226 0.012384411073 0.012815500428 0.086558427397 0.417000000000 + 227 -0.071895962666 0.103949699710 0.078184225894 0.417000000000 + 228 0.039926762285 -0.033119857663 0.012516920864 -0.834000000000 + 229 -0.014129895826 0.009992014159 -0.003695512561 0.417000000000 + 230 -0.074119668519 0.065662576875 -0.027849581845 0.417000000000 + 231 0.034115020120 -0.131029457955 0.053324303077 -0.834000000000 + 232 -0.036059766608 0.094912970939 -0.043677100691 0.417000000000 + 233 -0.033213967793 0.165235161290 -0.060539704416 0.417000000000 + 234 0.212122332978 -0.188608852874 -0.079689659113 -0.834000000000 + 235 -0.051919980059 0.052766984738 0.013506647977 0.417000000000 + 236 -0.054922771535 0.041543990559 0.020651159494 0.417000000000 + 237 0.002313634871 -0.002444454211 -0.001873260274 -0.834000000000 + 238 -0.001302497454 0.001384484560 0.000818426536 0.417000000000 + 239 -0.057333766366 -0.180217219742 0.015905508353 -0.834000000000 + 240 0.006799897180 0.030942201698 -0.002200583585 0.417000000000 + 241 0.035655374754 0.100485220995 -0.017968727682 0.417000000000 + 242 -0.162265524525 0.644765730507 -0.545381218192 -0.834000000000 + 243 0.039051216555 -0.582117691292 0.209145025964 0.417000000000 + 244 0.075364422430 -0.239963421982 0.482654336683 0.417000000000 + 245 1.276020641555 -0.970417018456 0.636658794624 -0.834000000000 + 246 -0.514269712955 0.348025728430 -0.320937433431 0.417000000000 + 247 -0.710891240397 0.393481585921 -0.187354957060 0.417000000000 + 248 0.108159345515 -0.082187033187 0.023636548920 -0.834000000000 + 249 -0.025016282668 0.022787226483 -0.004601817043 0.417000000000 + 250 -0.038996125056 0.025038046900 -0.006681110240 0.417000000000 + 251 0.008570940278 -0.011738452553 -0.000678366181 -0.834000000000 + 252 -0.000043892077 0.000069606068 0.000002052509 0.417000000000 + 253 -0.000309697121 0.000366710172 0.000045401537 0.417000000000 + 254 0.145298898290 -0.177718027781 0.108094976951 -0.834000000000 + 255 -0.024531905922 0.030216812750 -0.021389873795 0.417000000000 + 256 -0.069871066899 0.070963013035 -0.039057446196 0.417000000000 + 257 -0.149588681439 0.339272956902 -0.581446756718 -0.834000000000 + 258 -0.057053524582 -0.025389092619 0.333050264462 0.417000000000 + 259 -0.057819622642 0.010614876140 0.142665471865 0.417000000000 + 260 -0.105328788694 -0.221773043294 -0.101967034007 -0.834000000000 + 261 0.038732510301 0.099569413706 0.045407672676 0.417000000000 + 262 0.023426964744 0.053630998934 0.011836537465 0.417000000000 + 263 0.098587051340 -0.457813874410 -0.005540453517 -0.834000000000 + 264 -0.014543292552 0.117611935653 0.004297121136 0.417000000000 + 265 -0.053390919100 0.186812944988 0.011433981545 0.417000000000 + 266 -0.000042241679 -0.000082885681 -0.000007858456 -0.834000000000 + 267 0.000159797124 0.000304688373 -0.000004015296 0.417000000000 + 268 -0.354258582573 -0.606312280314 -0.725003189665 -0.834000000000 + 269 0.125802910119 0.233874415242 0.212475817645 0.417000000000 + 270 0.104835417380 0.087144584702 0.519735895150 0.417000000000 + 271 0.018220971710 -0.712143311006 -1.625926493896 -0.834000000000 + 272 0.033630548757 0.200960808485 1.368412667724 0.417000000000 + 273 0.073040413412 0.511512006841 0.647647415197 0.417000000000 + 274 1.055026688862 -2.231481938879 0.612782156103 -0.834000000000 + 275 -0.625826496241 0.880962278247 -0.370957731118 0.417000000000 + 276 -0.301881678517 1.004686778868 -0.292795295353 0.417000000000 + 277 0.432917068082 -0.614058481224 -0.525511087789 -0.834000000000 + 278 -0.140253175613 0.290043098232 0.399327862726 0.417000000000 + 279 -0.165558355696 0.280855800330 0.139470278836 0.417000000000 + 280 0.081344192175 0.028473039210 -0.009079129936 -0.834000000000 + 281 -0.009924696539 -0.002626077782 0.001618031559 0.417000000000 + 282 -0.028572015526 -0.009653629443 0.000400156733 0.417000000000 + 283 -0.006951201371 0.000029633178 0.000783204502 0.417000000000 + 284 0.303983236789 0.006435901211 -0.019660930671 -0.834000000000 + 285 -0.150887169608 -0.001847819134 -0.006605693573 0.417000000000 + 286 -0.109542294901 -0.031010556274 0.049103505616 0.417000000000 + 287 0.469508388260 -0.115713658379 -0.044575379599 -0.834000000000 + 288 -0.147831181397 -0.012597684622 0.113531614862 0.417000000000 + 289 -0.209533101393 0.033015174262 0.010474433833 0.417000000000 + 290 0.027027635336 -0.004003229318 -0.007753691175 -0.834000000000 + 291 -0.082588173525 0.014531450237 0.023251471520 0.417000000000 + 292 -0.012242651392 0.001327904936 0.004863685572 0.417000000000 + 293 1.109788259872 -0.274390047549 0.011928276122 -0.834000000000 + 294 -0.544983646852 0.058584555871 -0.018051760421 0.417000000000 + 295 -0.425077175372 0.104955503878 0.028224485643 0.417000000000 + 296 0.002889506913 0.001289207187 -0.001982843573 -0.834000000000 + 297 -0.000034358314 -0.000014209240 0.000018938668 0.417000000000 + 298 0.000049067579 -0.000008700050 0.000022260902 -0.834000000000 + 299 -0.009775425915 0.001677215480 -0.004455864480 0.417000000000 + 300 -0.674797095271 -0.048693065442 0.134668997345 -0.834000000000 + 301 0.067866411265 -0.001876728990 0.002281770416 0.417000000000 + 302 0.292595051172 -0.028305619340 -0.044278021983 0.417000000000 + 303 -0.593207275365 0.247526776153 -0.038278560292 -0.834000000000 + 304 0.243649913893 -0.122727628624 -0.008190236768 0.417000000000 + 305 0.460857843240 -0.231865236930 0.100019516060 0.417000000000 + 306 0.005338762487 -0.000216291844 -0.003274762615 -0.834000000000 + 307 -0.029161379807 0.001400618866 0.019974301945 0.417000000000 + 308 -0.000009296308 0.000000974272 0.000006552451 0.417000000000 + 309 0.016410503883 -0.007899789637 -0.004786564257 -0.834000000000 + 310 -0.010690407543 0.003781877430 0.003161495154 0.417000000000 + 311 -0.000003262853 0.000001597662 0.000000805849 0.417000000000 + 312 -0.000540046426 0.000238020114 -0.000038663461 0.417000000000 + 313 0.112227027933 -0.059412511970 0.032801390295 -0.834000000000 + 314 -0.051277307641 0.030277010202 -0.015053604081 0.417000000000 + 315 -0.233218086242 0.116431600653 -0.076155665606 0.417000000000 + 316 0.026805727776 0.021321030073 0.005546127483 -0.834000000000 + 317 -0.012403448101 -0.007829187622 -0.002563759094 0.417000000000 + 318 -0.007252048830 -0.006293144113 -0.002456580822 0.417000000000 + 319 -0.036100746172 0.048207184728 -0.043730021150 -0.834000000000 + 320 -0.036794927613 0.011628955372 0.041856535235 0.417000000000 + 321 0.121366167983 -0.080305091347 -0.045770887921 0.417000000000 + 322 0.004485469650 -0.001678250753 0.000472385600 -0.834000000000 + 323 -0.035457421663 0.012941386211 -0.002831105463 0.417000000000 + 324 -0.000000049615 0.000000014251 -0.000000004387 0.417000000000 + 325 0.005975931790 -0.003151281550 -0.004230075181 -0.834000000000 + 326 -0.000800677327 0.000549211028 0.000616802652 0.417000000000 + 327 -0.005279480190 0.002689319429 0.002916831602 0.417000000000 + 328 0.954912270596 0.108105734150 0.170325528679 -0.834000000000 + 329 -0.489840856000 -0.143941334491 -0.058539636680 0.417000000000 + 330 -0.334347339118 -0.030917427713 -0.075209446849 0.417000000000 + 331 0.243845765317 -0.031251553370 0.125005816737 -0.834000000000 + 332 -0.159363769467 0.015201020395 -0.104942252453 0.417000000000 + 333 -0.259007344754 0.018256711737 -0.126611842006 0.417000000000 + 334 0.003069739059 0.003042881872 -0.001265858517 -0.834000000000 + 335 -0.000011146005 -0.000009322721 0.000004657371 0.417000000000 + 336 -0.018850255390 -0.017358723099 0.006828671549 0.417000000000 + 337 -0.268625471436 -0.134957225200 -0.143435772236 -0.834000000000 + 338 0.402155792814 0.257473555811 0.144952476156 0.417000000000 + 339 0.057572867059 0.008776468857 0.075913661170 0.417000000000 + 340 -0.000127985081 -0.000019874378 0.000062398605 0.417000000000 + 341 -0.562224016186 0.676452429235 -0.908522246673 -0.834000000000 + 342 0.229988830195 -0.335989696256 0.424775547227 0.417000000000 + 343 0.148941033717 -0.401677684529 0.712627155722 0.417000000000 + 344 0.160760063343 0.005777513469 0.028584330786 -0.834000000000 + 345 -0.052092124666 -0.006980930652 -0.008305796651 0.417000000000 + 346 -0.034957176524 0.000737407706 -0.007121407039 0.417000000000 + 347 -0.309072678016 0.370612991392 -1.195430223036 -0.834000000000 + 348 0.436150781833 -0.249773025276 1.005862536213 0.417000000000 + 349 0.236341716077 -0.090643342528 0.377966063864 0.417000000000 + 350 -0.372543281462 0.051337284419 -0.218679948589 -0.834000000000 + 351 0.246852229599 -0.002246874578 0.056531799999 0.417000000000 + 352 0.052956614944 -0.021404964668 0.073332394158 0.417000000000 + 353 0.013508292114 0.004792567714 0.003110186609 -0.834000000000 + 354 -0.000001159023 -0.000000360861 -0.000000249025 0.417000000000 + 355 -0.011196254609 -0.003590046962 -0.003112290371 0.417000000000 + 356 0.491656038577 -0.259667016022 0.344695935067 -0.834000000000 + 357 -0.091355159871 0.052162211078 -0.056741946338 0.417000000000 + 358 -0.246578734580 0.105106057373 -0.200737000302 0.417000000000 + 359 -0.364516866940 -0.120192341971 -0.092958420324 -0.834000000000 + 360 0.207858923082 0.095178953497 0.081453940708 0.417000000000 + 361 0.103639578944 0.034192936659 0.009679670050 0.417000000000 + 362 0.000000000000 0.000000000000 -0.000000000000 0.417000000000 + 363 -0.000568700334 -0.000451851023 0.000175467785 -0.834000000000 + 364 0.000006828301 0.000004742375 -0.000001389487 0.417000000000 + 365 -0.076005216345 0.037179903394 -0.009942432617 -0.834000000000 + 366 -0.016262562681 0.007131413343 -0.005577887931 0.417000000000 + 367 0.025119167954 -0.014868045375 0.002902688000 0.417000000000 + 368 -0.000000304081 0.000000016281 0.000000178244 0.417000000000 + 369 0.001981314905 -0.000696433098 -0.001000516188 -0.834000000000 + 370 -0.004650005116 0.000638517389 0.003868878556 0.417000000000 + 371 -0.000199714459 0.000067476450 0.000125600101 0.417000000000 + 372 -0.008176094182 -0.002121646500 0.007948819061 -0.834000000000 + 373 -0.000030175052 0.000133076545 -0.000968406866 0.417000000000 + 374 0.013480459945 0.000936874211 0.001918669643 0.417000000000 + 375 0.003408600832 0.006003006701 -0.007120174826 -0.834000000000 + 376 -0.004442955725 0.000169803869 0.000923646190 0.417000000000 + 377 0.050430232900 -0.016463123235 0.002747337528 0.417000000000 + 378 0.001788754221 0.000403977171 0.000086619791 -0.834000000000 + 379 -0.005465768665 -0.000902453476 0.000224710239 0.417000000000 + 380 -0.003726544730 -0.001152560502 -0.000246441228 0.417000000000 + 381 0.002688240423 -0.000992951498 0.000761875965 -0.834000000000 + 382 -0.000857887344 0.000215472065 -0.000225690589 0.417000000000 + 383 -0.000058230051 0.000024206932 -0.000013128778 0.417000000000 + 384 -0.169046781039 0.014621346866 -0.081294013431 -0.834000000000 + 385 0.054647431751 -0.004673179084 0.020744908376 0.417000000000 + 386 0.087063808458 -0.018145691175 0.029593700040 0.417000000000 + 387 -0.361480069985 0.166756385344 0.036285155816 -0.834000000000 + 388 0.218985060372 -0.105502866618 -0.049620539507 0.417000000000 + 389 0.216546272567 -0.118195760819 0.011060815292 0.417000000000 + 390 -0.348092161040 0.184472073773 0.175378579459 -0.834000000000 + 391 0.103696421178 -0.072135118317 -0.057306630159 0.417000000000 + 392 0.125031606205 -0.055851524742 -0.077235079777 0.417000000000 + 393 -0.443993837122 0.115200645991 -0.654960067541 -0.834000000000 + 394 0.052609186385 -0.100718352492 0.339750730727 0.417000000000 + 395 0.261366145967 0.006499775007 0.158856926449 0.417000000000 + 396 -0.033054128100 0.001362587068 -0.014235087148 -0.834000000000 + 397 0.062366253215 0.001926596447 0.024523654304 0.417000000000 + 398 0.066899965051 0.012976822652 0.023520768547 0.417000000000 + 399 -0.000008285408 0.000002944555 -0.000004058007 0.417000000000 + 400 -0.000280515198 0.000207333155 0.000037876449 0.417000000000 + 401 1.372520219650 -0.134538932953 -0.077354903974 -0.834000000000 + 402 -0.883729897460 0.004801866853 -0.050143464519 0.417000000000 + 403 -0.291259808814 0.041178778822 0.033041221175 0.417000000000 + 404 -0.009093119811 0.000749366263 0.002641854169 -0.834000000000 + 405 0.007748978297 -0.002756985180 0.002484774913 0.417000000000 + 406 0.004675920348 0.000338917432 -0.002266897149 0.417000000000 + 407 -0.000196177578 0.000063074096 0.000165446089 -0.834000000000 + 408 0.001669479935 -0.000308859483 -0.001341770327 0.417000000000 + 409 -0.000075645960 0.000073446909 0.000033119001 -0.834000000000 + 410 0.000113399367 -0.000080390874 -0.000083480561 0.417000000000 + 411 0.392238986922 0.093480029740 -0.509004599203 -0.834000000000 + 412 -0.425657889048 0.005296607502 0.389960532381 0.417000000000 + 413 -0.406471821714 0.017951629030 0.246213114891 0.417000000000 + 414 -0.026272582533 -0.000686534499 0.017159836620 -0.834000000000 + 415 0.086802058020 -0.002061181132 -0.046969972275 0.417000000000 + 416 0.000744378219 0.000012936481 -0.000417110801 0.417000000000 + 417 -0.000016910160 -0.000006756703 0.000006454925 -0.834000000000 + 418 0.010259731710 0.004334225242 -0.004266861075 0.417000000000 + 419 -0.745774850870 0.025512030094 0.209876235649 -0.834000000000 + 420 0.359042244267 0.037603822489 -0.110181883718 0.417000000000 + 421 0.444239750016 -0.036025638704 -0.037138409229 0.417000000000 + 422 -0.542564931855 -0.236002284212 0.154612057426 -0.834000000000 + 423 0.107555414777 0.057402983569 -0.028689736866 0.417000000000 + 424 0.401627453880 0.206342071764 -0.115485307231 0.417000000000 + 425 -1.946803731540 0.123925204984 -0.367809231491 -0.834000000000 + 426 0.710481459528 -0.014701733972 0.371285012341 0.417000000000 + 427 0.887715732703 -0.130995517101 -0.133762655353 0.417000000000 + 428 -0.016032465166 -0.011761854155 -0.003353666935 -0.834000000000 + 429 0.073933553890 0.052686033037 0.015555546133 0.417000000000 + 430 0.002280469132 0.001431583849 0.000340424444 0.417000000000 + 431 -0.417458646262 -0.337449394375 -0.219897115735 -0.834000000000 + 432 0.118417670017 0.116348818809 0.166294982283 0.417000000000 + 433 0.223981802901 0.201079363880 0.048234874424 0.417000000000 + 434 -0.000005607565 -0.000001560511 -0.000002466527 0.417000000000 + 435 -0.027446108298 -0.013236873564 -0.016216686406 -0.834000000000 + 436 0.011899645476 0.006404153892 0.005794311477 0.417000000000 + 437 0.003531790415 -0.000023148026 0.002264851130 0.417000000000 + 438 -0.016670006352 0.330949409223 -0.039829172461 -0.834000000000 + 439 0.011292231778 -0.107884637711 -0.012231767616 0.417000000000 + 440 0.026240387564 -0.226077895984 -0.040822376990 0.417000000000 + 441 0.000000375320 0.000000716702 -0.000000086904 0.417000000000 + 442 0.000236884001 0.016398623518 0.002770160701 -0.834000000000 + 443 0.000148820062 -0.004170368601 -0.000639104317 0.417000000000 + 444 0.000283287386 -0.007158242859 -0.001677346332 0.417000000000 + 445 -0.001824724484 -0.009456412927 -0.000790533885 -0.834000000000 + 446 -0.000670211706 0.004144450089 0.001265266765 0.417000000000 + 447 0.001633083214 0.002747437445 -0.001695250966 0.417000000000 + 448 -0.117537310303 0.746310454232 -0.213800769018 -0.834000000000 + 449 0.053334328439 -0.251859692226 0.015330739407 0.417000000000 + 450 -0.108878738054 -0.276595134592 0.414703555485 0.417000000000 + 451 -0.009388910469 0.010814308117 0.003344267545 -0.834000000000 + 452 0.003548538740 -0.002552280257 -0.001656022733 0.417000000000 + 453 0.005810849844 -0.009952780827 0.000619781506 0.417000000000 + 454 -0.013676261294 0.170426739262 -0.015259235181 -0.834000000000 + 455 0.011274664330 -0.074940245284 0.006586525384 0.417000000000 + 456 0.024022050254 -0.080520189736 -0.013866234503 0.417000000000 + 457 0.008927403433 -0.014293504994 -0.004982646689 -0.834000000000 + 458 0.048622811048 -0.048855608492 -0.003781736705 0.417000000000 + 459 -0.000044215898 0.000827144988 0.004746234751 0.417000000000 + 460 -0.000000765274 0.000000852070 -0.000000232133 0.417000000000 + 461 -0.000000311634 0.000000361686 -0.000000023202 0.417000000000 + 462 -0.031422263006 0.008065273253 0.014108482315 -0.834000000000 + 463 0.000993281709 0.003922122836 -0.007620743650 0.417000000000 + 464 0.050428619094 -0.028778131218 0.002309362931 0.417000000000 + 465 0.000160258604 0.007753106148 0.000266756145 -0.834000000000 + 466 0.001071570289 -0.008925938919 -0.001466217023 0.417000000000 + 467 -0.000497942004 -0.011090672747 0.000488657884 0.417000000000 + 468 -0.024085931594 0.050760744822 0.016552074070 -0.834000000000 + 469 0.010202269729 -0.046019163574 -0.011492990813 0.417000000000 + 470 0.009283425562 -0.012276069411 -0.006462164356 0.417000000000 + 471 -0.000000005004 0.000000010935 0.000000000349 0.417000000000 + 472 -0.000019475038 0.000053479436 -0.000005639660 0.417000000000 + 473 0.272218137231 -0.677990751889 -0.608653437704 -0.834000000000 + 474 -0.130956844974 0.169354613936 0.190022591496 0.417000000000 + 475 -0.060658550401 0.140854271176 0.275854337388 0.417000000000 + 476 -0.000000012825 0.000000016807 0.000000014994 0.417000000000 + 477 -0.077528303438 0.084987766635 0.021026826450 -0.834000000000 + 478 0.110933909471 -0.136938132117 -0.047696412094 0.417000000000 + 479 0.003177605541 -0.004352761420 0.003709444196 0.417000000000 + 480 -0.002302011349 0.007112633648 -0.003255966512 -0.834000000000 + 481 0.000783226007 -0.001957897830 0.001134061038 0.417000000000 + 482 0.000273133724 -0.000481220862 -0.000100494631 -0.834000000000 + 483 -0.002158491795 0.003300180491 0.000592709444 0.417000000000 + 484 -0.000247786554 0.000518511470 0.000149060666 0.417000000000 + 485 0.000034410249 -0.000107630352 -0.000047324452 -0.834000000000 + 486 -0.000006690883 0.000016673283 0.000009117410 0.417000000000 + 487 0.000373316723 -0.000631414142 0.000361571572 -0.834000000000 + 488 0.000778970589 0.000596386573 -0.001441482485 0.417000000000 + 489 -0.000027628022 0.000035151592 -0.000020119825 0.417000000000 + 490 -0.045522354245 0.120693913923 -0.020257499492 -0.834000000000 + 491 0.024328807654 -0.047306737774 0.003699198749 0.417000000000 + 492 -0.137004152217 0.064847433733 0.055577706945 0.417000000000 + 493 -0.057826147894 0.135261963408 0.061574027053 -0.834000000000 + 494 0.012890158894 -0.034652319150 -0.012125492740 0.417000000000 + 495 0.003877901894 -0.007975272384 -0.002366794709 0.417000000000 + 496 -0.002821572586 0.002775401160 -0.001135503882 -0.834000000000 + 497 0.000537181411 0.002823255327 0.001615196155 0.417000000000 + 498 0.000003667667 0.000025581567 0.000018497307 0.417000000000 + 499 -0.067498182820 -2.157237975189 -0.227533883219 -0.834000000000 + 500 -0.004899154869 1.036543782734 0.417658151042 0.417000000000 + 501 0.099069776987 0.706037406906 0.069870282519 0.417000000000 + 502 -0.108540959189 0.102104880723 -0.039501533536 -0.834000000000 + 503 0.054409765926 -0.039509953789 0.011791471861 0.417000000000 + 504 0.034956014611 -0.038395192063 0.007397143084 0.417000000000 + 505 0.467621481660 -0.570398904822 0.241320675903 -0.834000000000 + 506 -0.248012206366 0.354279172351 -0.102063605467 0.417000000000 + 507 -0.479033436797 0.539167097526 -0.237214196888 0.417000000000 + 508 0.060259866738 -0.176526543775 0.100172125255 -0.834000000000 + 509 -0.009784872504 -0.044030672337 0.003850323719 0.417000000000 + 510 -0.063183501522 0.252964794882 -0.135412804983 0.417000000000 + 511 0.252126375533 -0.584328006039 0.060731956375 -0.834000000000 + 512 -0.097233395490 0.284149805829 -0.070796071672 0.417000000000 + 513 -0.150248132195 0.478994885233 0.025309270576 0.417000000000 + 514 0.000330316804 0.039388938412 -0.011958365365 -0.834000000000 + 515 0.000903712578 -0.009915945555 0.003283737461 0.417000000000 + 516 -0.001078362958 -0.015222230323 0.006568113956 0.417000000000 + 517 0.006510263222 0.017099095162 0.001953501665 -0.834000000000 + 518 -0.000081649898 -0.000163146374 -0.000025358411 0.417000000000 + 519 -0.001390818854 -0.004404988737 -0.000887353612 0.417000000000 + 520 -0.000085220971 -0.000273129543 0.000017832361 0.417000000000 + 521 -0.000040526089 -0.000098280550 0.000008467209 0.417000000000 + 522 -0.006753719141 0.004810521592 -0.005987130601 -0.834000000000 + 523 0.000616553164 -0.000543839286 0.000545039985 0.417000000000 + 524 0.008576937999 -0.006780510419 0.009286145604 0.417000000000 + 525 -0.000739667748 -0.000682935462 -0.001062782117 -0.834000000000 + 526 0.000664740420 0.000769036382 0.000776876971 0.417000000000 + 527 0.000000489724 0.000000490660 0.000000534769 -0.834000000000 + 528 -0.000020397306 -0.000016338628 -0.000021760539 0.417000000000 + 529 -0.000420438667 -0.000520376968 -0.000760212221 0.417000000000 + 530 0.000077906763 0.000169970382 0.000269562858 0.417000000000 + 531 0.000126735988 0.000334427429 0.000378157876 0.417000000000 + 532 0.152912796645 0.388693776995 0.313519117055 -0.834000000000 + 533 -0.019655100645 -0.076620318245 -0.069366466673 0.417000000000 + 534 -0.048176259676 -0.102779390875 -0.067625572994 0.417000000000 + 535 -0.000221363568 -0.000268657244 -0.000576720978 -0.834000000000 + 536 0.000003959755 0.000008103372 0.000017073294 0.417000000000 + 537 0.000053016094 -0.000149496178 -0.000244125638 -0.834000000000 + 538 0.000453638061 -0.008888279481 -0.025541469620 0.417000000000 + 539 -0.002326557354 -0.002777020022 -0.002698626470 -0.834000000000 + 540 -0.000622834413 0.003892453807 -0.001207452747 0.417000000000 + 541 0.000001959832 0.000002310871 0.000002236958 0.417000000000 + 542 1.702209245813 0.402157227545 0.572313303023 -0.834000000000 + 543 -0.521752583120 -0.173842867893 -0.179993911516 0.417000000000 + 544 -0.895990847413 -0.204219871168 -0.572441841307 0.417000000000 + 545 1.201166711758 0.382868068249 1.914751482655 -0.834000000000 + 546 -0.489128297035 0.008504153829 -0.863291503979 0.417000000000 + 547 -0.561136336594 -0.353767972035 -1.298218201349 0.417000000000 + 548 0.147653457306 0.054204518220 0.048810354933 -0.834000000000 + 549 -0.063975776311 -0.038082113098 -0.031387011406 0.417000000000 + 550 -0.034174092974 -0.006732087904 0.009763716155 0.417000000000 + 551 -0.004826484108 -0.005961835570 -0.016887095368 -0.834000000000 + 552 0.007934703749 0.010649356903 0.024793021521 0.417000000000 + 553 0.000413679676 0.000349665554 0.001116568504 0.417000000000 + 554 0.000163650885 -0.000280313027 -0.000753268965 -0.834000000000 + 555 -0.000733665819 0.000871778379 0.003891086013 0.417000000000 + 556 -0.001447972244 0.003128690406 0.006990955597 0.417000000000 + 557 0.608833830897 1.900837155123 0.325796651105 -0.834000000000 + 558 -0.221914313329 -0.658101623378 -0.289402832691 0.417000000000 + 559 -0.575647724868 -1.303833747053 -0.411551191658 0.417000000000 + 560 0.024944627528 1.275475964320 3.271693698250 -0.834000000000 + 561 -0.006153972182 -0.537225388402 -1.136797115881 0.417000000000 + 562 0.115351164709 -0.273273387154 -1.610068560198 0.417000000000 + 563 -0.031146800618 0.489577825171 0.816380726536 -0.834000000000 + 564 -0.041776488444 -0.233376962729 -0.353588533140 0.417000000000 + 565 0.051463368619 -0.231455190882 -0.286315783551 0.417000000000 + 566 -0.000378667232 -0.000046436290 -0.000648264988 -0.834000000000 + 567 0.002060382905 -0.000085522757 0.003245405919 0.417000000000 + 568 0.067717953079 -0.073082622741 0.098139481596 -0.834000000000 + 569 -0.045576188207 0.049703316747 -0.074440640360 0.417000000000 + 570 0.020361773189 0.007000925669 0.041710486109 0.417000000000 + 571 -0.000397678220 -0.000132326599 -0.000045222637 -0.834000000000 + 572 0.003513251963 0.001316240347 0.000561165958 0.417000000000 + 573 -0.016060632534 -0.022544106866 -0.013115757904 -0.834000000000 + 574 0.005664087873 0.007187836942 0.003103518672 0.417000000000 + 575 0.017234669797 0.026665216781 0.016178492431 0.417000000000 + 576 -0.024404511982 0.007501231004 -0.031438903716 -0.834000000000 + 577 0.031623624702 -0.010601430271 0.035007724235 0.417000000000 + 578 0.004472016382 -0.002234250785 0.007435602401 0.417000000000 + 579 -0.000000213939 -0.000000052252 -0.000001291787 -0.834000000000 + 580 0.002955445790 -0.011649704835 -0.028873023433 -0.834000000000 + 581 0.000952491427 0.005156172545 0.015131331373 0.417000000000 + 582 -0.001386285582 0.003977344485 0.006524278082 0.417000000000 + 583 -0.013660142378 -0.041491701410 -0.005193751877 -0.834000000000 + 584 -0.136935484257 0.052730947438 -0.092447013034 0.417000000000 + 585 -0.015398458687 0.030090801901 -0.018647742002 0.417000000000 + 586 -2.280684704200 3.214930887578 1.632544292509 -0.834000000000 + 587 0.653781812093 -1.520075585908 -1.283835921313 0.417000000000 + 588 1.962689721247 -2.505997586926 -0.895782782686 0.417000000000 + 589 -0.133669247910 0.268278092045 0.155784282677 -0.834000000000 + 590 0.114128726085 -0.237910991767 -0.091640885382 0.417000000000 + 591 0.010613804899 -0.010063289703 0.008493432739 0.417000000000 + 592 -0.000371490107 -0.002237425857 -0.001432890231 -0.834000000000 + 593 0.000027658975 0.000256972243 0.000161111664 0.417000000000 + 594 0.002783531457 0.016455753911 0.008637629305 0.417000000000 + 595 -0.662449428423 0.613661091100 0.718921987118 -0.834000000000 + 596 0.611476073169 -0.566889885288 -0.595233896451 0.417000000000 + 597 0.232235948131 -0.297041739908 -0.299754112095 0.417000000000 + 598 0.000004911793 -0.000084889304 -0.000094283402 -0.834000000000 + 599 0.000000002962 0.000000035535 0.000000041146 0.417000000000 + 600 0.198797212240 0.139075646714 -0.176544975145 -0.834000000000 + 601 -0.235400421392 -0.235970141258 0.148430142637 0.417000000000 + 602 -0.017670038636 -0.008672648419 0.049288962990 0.417000000000 + 603 0.000011884367 0.000008714700 0.000003374192 0.417000000000 + 604 0.657801777727 0.905208100778 -1.400032982388 -0.834000000000 + 605 -0.510354038694 -0.932557362071 0.787115128735 0.417000000000 + 606 -0.566859442381 -0.491443105285 0.727078821083 0.417000000000 + 607 0.000022758815 -0.000004329357 0.000023998352 0.417000000000 + 608 -0.391278087459 -0.433152475224 0.264958752069 -0.834000000000 + 609 0.163044926308 0.259024150290 -0.147610377607 0.417000000000 + 610 0.095055042540 0.099494397695 -0.040911160082 0.417000000000 + 611 0.034222269128 0.033697803577 -0.011547888855 -0.834000000000 + 612 -0.004643353718 -0.005854879321 0.002566764215 0.417000000000 + 613 -0.015993088430 -0.027108773855 0.009072749764 0.417000000000 + 614 0.000096766063 0.000048969355 -0.000101178649 -0.834000000000 + 615 -0.004280044176 -0.001599892122 0.003884003610 0.417000000000 + 616 -0.467510284445 -1.863931927810 1.043884876100 -0.834000000000 + 617 0.068091143146 0.796959318017 -0.370461604955 0.417000000000 + 618 0.151228500702 0.696904873290 -0.534705761676 0.417000000000 + 619 -0.000369555484 0.000383210004 -0.001007982296 -0.834000000000 + 620 0.000135045066 -0.000193981490 0.000388055345 0.417000000000 + 621 -2.858060758613 -0.222133194173 1.672009511100 -0.834000000000 + 622 1.081461158761 0.207808681978 -0.560853927265 0.417000000000 + 623 1.141431137647 -0.120956556318 -0.767864888504 0.417000000000 + 624 0.149611444412 -0.394618862889 0.317749613483 -0.834000000000 + 625 -0.177778340594 0.481486953187 -0.400571306225 0.417000000000 + 626 -0.033656772853 0.038401855432 -0.034335933706 0.417000000000 + 627 0.003375292259 0.000918075189 -0.009897958402 -0.834000000000 + 628 -0.000794080464 -0.000193394479 0.003386096600 0.417000000000 + 629 0.038016837445 -0.011669256104 -0.039464271604 -0.834000000000 + 630 -0.014009275883 -0.009155722479 0.041339893203 0.417000000000 + 631 -0.007570382930 -0.011021391908 0.054332531353 0.417000000000 + 632 -0.233126089929 0.000289295611 0.203465603525 -0.834000000000 + 633 0.172308081731 0.033279447740 -0.186982225074 0.417000000000 + 634 0.058784217581 0.000318688243 -0.038500335382 0.417000000000 + 635 0.015791908765 0.047953305243 -0.051742668551 -0.834000000000 + 636 -0.018236790139 -0.039741056789 0.044506995138 0.417000000000 + 637 -0.006183792176 -0.012151419146 0.014053188536 0.417000000000 + 638 0.002048667171 0.002378975980 -0.002965672358 -0.834000000000 + 639 -0.000870745567 -0.000764074965 0.001094162446 0.417000000000 + 640 -0.005542694402 -0.006815035258 0.006942451808 0.417000000000 + 641 -0.162945905653 -0.692325621278 0.954944282173 -0.834000000000 + 642 0.098923052430 0.622901164772 -0.856006491027 0.417000000000 + 643 -0.000813124226 0.180074267977 -0.256372271977 0.417000000000 + 644 -0.018999296240 0.017794936569 -0.111854754664 -0.834000000000 + 645 0.004336479668 -0.002278243003 0.028790548738 0.417000000000 + 646 0.011996980885 -0.009849644137 0.042476957147 0.417000000000 + 647 0.009193782867 0.011730852295 -0.006587228112 -0.834000000000 + 648 0.001055439523 0.002148972580 0.005607798666 0.417000000000 + 649 -0.002768939887 -0.003666939618 0.002168225869 0.417000000000 + 650 0.120116832507 -0.204017743918 0.869302946022 -0.834000000000 + 651 -0.035410526589 0.076094153683 -0.187413229210 0.417000000000 + 652 -0.029175244643 0.035206867455 -0.182448971376 0.417000000000 + 653 -0.915866587738 -0.130690665120 2.374905109731 -0.834000000000 + 654 0.769975213724 0.130545826578 -1.309768373950 0.417000000000 + 655 0.286733113830 0.214964850704 -0.984292680991 0.417000000000 + 656 -0.047548417572 -0.034956886391 0.146454507540 -0.834000000000 + 657 0.083321088244 0.021400864303 -0.226361385196 0.417000000000 + 658 -0.001792456258 0.008953205535 -0.016951430821 0.417000000000 + 659 -0.000008250197 -0.000001340187 0.000026889929 0.417000000000 + 660 -0.000025362345 -0.000001504171 0.000031247599 0.417000000000 + 661 -0.000021008672 0.000049264781 -0.000062668494 -0.834000000000 + 662 0.000000001574 -0.000000006014 0.000000007377 0.417000000000 + 663 -0.053251718999 0.119678868452 -0.097897275320 -0.834000000000 + 664 0.035791869393 -0.058036883500 0.037507843215 0.417000000000 + 665 0.014219721843 -0.032017594390 0.031513286373 0.417000000000 + 666 -3.020915108444 -3.310253760354 2.267735476481 -0.834000000000 + 667 0.902295522088 1.428627732021 -0.895054147869 0.417000000000 + 668 1.570514730847 0.970723459337 -1.226695493738 0.417000000000 + 669 -0.440085104251 -0.335357207900 0.537447911442 -0.834000000000 + 670 0.195328847525 0.222260198953 -0.337448366986 0.417000000000 + 671 0.247859490072 0.207089018799 -0.240904970647 0.417000000000 + 672 -0.001978421086 -0.000412108970 0.002744302199 0.417000000000 + 673 -0.000025016649 -0.000361950269 0.000424664989 0.417000000000 + 674 -1.892955507484 -1.862288193530 -0.863944993521 -0.834000000000 + 675 0.610458336664 0.841365662226 0.225584179746 0.417000000000 + 676 1.175739774026 1.213493730963 0.075454008582 0.417000000000 + 677 -0.128374588870 -0.335645251614 0.031189022159 -0.834000000000 + 678 0.008282844788 0.045770573962 -0.003739400054 0.417000000000 + 679 0.038846445031 0.117271747295 -0.030499934923 0.417000000000 + 680 0.000059427830 0.000376494835 -0.000247085779 -0.834000000000 + 681 -0.001374854556 -0.006351424879 0.004728846887 0.417000000000 + 682 -0.074769885947 0.020264386089 -0.063809739922 -0.834000000000 + 683 -0.098434778284 0.104602363247 -0.099651369385 0.417000000000 + 684 0.052311872098 -0.030487867104 0.035368257315 0.417000000000 + 685 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 686 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 687 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 688 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 689 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 690 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 691 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 692 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 693 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 694 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 695 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 696 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 697 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 698 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 699 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 700 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 701 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 702 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 703 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 704 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 705 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 706 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 707 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 708 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 709 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 710 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 711 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 712 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 713 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 714 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 715 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 716 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 717 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 718 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 719 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 720 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 721 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 722 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 723 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 724 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 725 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 726 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 727 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 728 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 729 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 730 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 731 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 732 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 733 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 734 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 735 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 736 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 737 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 738 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 739 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 740 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 741 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 742 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 743 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 744 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 745 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 746 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 747 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 748 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 749 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 750 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 751 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 752 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 753 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 754 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 755 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 756 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 757 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 758 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 759 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 760 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 761 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 762 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 763 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 764 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 765 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 766 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 767 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 768 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 769 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 770 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 771 0.000000000000 0.000000000000 0.000000000000 -0.834000000000 + 772 0.000000000000 0.000000000000 0.000000000000 0.417000000000 + 773 0.000000000000 0.000000000000 0.000000000000 0.417000000000 diff --git a/test/library/qmmm_amber/fortran_stub/driver.F03 b/test/library/qmmm_amber/fortran_stub/driver.F03 index a61d3774..c097a977 100644 --- a/test/library/qmmm_amber/fortran_stub/driver.F03 +++ b/test/library/qmmm_amber/fortran_stub/driver.F03 @@ -69,7 +69,7 @@ contains ! Amber would set instead in real QM/MM simulation read (line, '(30x,3f10.5,1x,a5,6x,f10.5)', end=40, err=40) & mm_pos_q(4*nmm+1), mm_pos_q(4*nmm+2), mm_pos_q(4*nmm+3), & - mm_types(nmm+1), mm_pos_q(4*nqm+4) + mm_types(nmm+1), mm_pos_q(4*nmm+4) nmm = nmm + 1 endif @@ -109,7 +109,7 @@ program driver #define stderr 0 #endif - integer, parameter :: max_sim_steps = 3 + integer, parameter :: max_sim_steps = 0 character(len=1024), dimension(:), allocatable :: args character(len=1024) :: filename @@ -182,12 +182,20 @@ program driver endif end do - do ix = 1, max_sim_steps - call get_reaxff_puremd_forces( max_sim_steps, ix, sim_box_info, & - num_qm_atoms, qm_pos, qm_types_map, qm_q, num_mm_atoms, & - mm_pos_q, mm_types_map, e_total, qm_f, mm_f ) + call get_reaxff_puremd_forces( max_sim_steps, 0, sim_box_info, & + num_qm_atoms, qm_pos, qm_types_map, qm_q, num_mm_atoms, & + mm_pos_q, mm_types_map, e_total, qm_f, mm_f ) - write (stdout, fmt=75) 'Sim. Step:', ix, 'Total energy:', e_total + write (stdout, fmt=75) 'Total energy:', e_total + write (stdout, *) + write (stdout, fmt=79) 'i', 'F_x', 'F_y', 'F_z', 'Q' + do ix = 1, num_qm_atoms + write (stdout, fmt=80) ix, qm_f(3 * (ix - 1) + 1), & + qm_f(3 * (ix - 1) + 2), qm_f(3 * (ix - 1) + 3), qm_q(ix) + end do + do ix = 1, num_mm_atoms + write (stdout, fmt=80) ix + num_qm_atoms, mm_f(3 * (ix - 1) + 1), & + mm_f(3 * (ix - 1) + 2), mm_f(3 * (ix - 1) + 3), mm_pos_q(4 * (ix - 1) + 3) end do deallocate(args) @@ -201,5 +209,7 @@ program driver deallocate(mm_pos_q) deallocate(mm_f) - 75 format (A10, 1X, I3, 1X, A13, 1X, ES24.15) + 75 format (A13, 1X, F24.15) + 79 format (A6, '|', A24, '|', A24, '|', A24, '|', A24) + 80 format (I6, 1X, F24.15, 1X, F24.15, 1X, F24.15, 1X, F24.15) end program driver diff --git a/test/library/qmmm_amber/fortran_stub/forces_charges.txt b/test/library/qmmm_amber/fortran_stub/forces_charges.txt new file mode 100644 index 00000000..bf0d18f9 --- /dev/null +++ b/test/library/qmmm_amber/fortran_stub/forces_charges.txt @@ -0,0 +1,776 @@ +Total energy: -1374.311060684903623 + + i| F_x| F_y| F_z| Q + 1 101.795785159103403 -112.791218389056198 91.729275100765562 0.115792827420965 + 2 74.441831586487424 -127.881951035566928 175.497941779944568 -0.458827596916358 + 3 -79.678635163780541 275.299817782127434 -6.125209056360313 0.070840632740617 + 4 -88.632872232706347 -102.053723908404720 -198.791581562965433 -0.047478739049226 + 5 15.609605985380071 21.370352505906997 -43.459224488184844 -0.054830468036059 + 6 12.891298453586931 19.844796781148922 -28.298438011388235 -0.062644558024110 + 7 -25.841707893575201 17.405913183314592 4.820262714472239 0.067776819514187 + 8 4.330130660675830 14.498948069525134 -13.261491776471846 0.031530359055013 + 9 -2.816499781569538 2.454652467765156 1.863859750106969 0.055603650241363 + 10 -3.265212674584364 -0.626171560718239 2.197754344042865 -0.007073276703923 + 11 1.569450698087940 6.339172720894704 -9.919553877391289 0.054436086373693 + 12 -8.913931526567165 -10.682924389337582 11.008195804094409 0.090306161443704 + 13 1.788942941121586 1.415390304328931 11.254019699132716 0.056406471953649 + 14 -1.923466479131818 -0.666972779086753 -1.149368816080454 0.088161629986456 + 15 -1.319583800107266 -0.440845374929399 1.296792972133692 5.292260000000000 + 16 0.675543028588913 0.121765607413734 -0.550015463023671 4.905660000000000 + 17 0.738000809302813 0.163411627921033 -0.844842092094151 5.351760000000000 + 18 -0.697834778579487 -0.880335779377346 1.071039059692014 5.829160000000000 + 19 0.238174324330392 0.230471829704077 -0.328026381718985 6.541250000000000 + 20 0.551310194131938 0.540821392078033 -0.667365158250148 5.151060000000000 + 21 -0.001507818489752 -0.018421336053627 0.008818580865870 6.038760000000000 + 22 -0.000659147026087 0.021065901842085 -0.009921912711628 5.863530000000000 + 23 0.007025155657643 0.046137962931508 -0.020631530258210 5.476270000000000 + 24 0.005937754480085 -0.015939054183565 0.041505491902232 10.784549999999999 + 25 -0.006573867984874 0.026712714640778 -0.079634537918391 10.234260000000001 + 26 -0.000418165560755 0.001307002131661 -0.003873860586031 11.517749999999999 + 27 -0.091751959009878 -0.011419517522182 0.081118676718861 7.580290000000000 + 28 0.022480288618879 -0.000282084490824 -0.020265744212412 8.008780000000000 + 29 0.168808433593547 0.025625054380179 -0.158888645032520 6.816890000000000 + 30 -0.067184660158400 -0.157636335108828 0.060341885228351 4.617420000000000 + 31 0.063222671760531 0.113374708109263 -0.053497578011401 4.856260000000000 + 32 0.006268945127423 0.014668132846010 -0.005967337395798 5.240730000000000 + 33 0.228532288950245 -0.581601419918921 0.557046037990129 6.552740000000000 + 34 -0.081472817681716 0.373237714698963 -0.316439120156253 6.108260000000000 + 35 -0.191252315138734 0.358866085542691 -0.307855965854435 5.878240000000000 + 36 -0.083936575704029 -0.053289821120281 0.101793790283074 8.092700000000001 + 37 0.021862599786666 0.015376821531987 -0.023183122487369 7.780020000000000 + 38 0.055982808399861 0.024453596424413 -0.059101353886689 7.846700000000000 + 39 -0.178700348065892 -0.179072564979223 0.017654436356491 1.096200000000000 + 40 0.011486196069953 0.010529310012496 -0.001449331461634 1.295310000000000 + 41 0.050282798506192 0.056898433706161 -0.004128066250798 1.283590000000000 + 42 -0.983620194146529 1.089073960668541 0.626806119469049 4.015860000000000 + 43 0.431204462225368 -0.378513430781256 -0.372943329811419 4.624360000000000 + 44 0.324161047260786 -0.587291851176877 -0.128877449866240 3.666410000000000 + 45 0.000010904533110 0.000025770129227 -0.000022669453130 8.326610000000001 + 46 -0.089543653440113 -0.083803195322750 0.059312910380291 5.618590000000000 + 47 0.008196935415855 0.006900305530393 -0.004635010643697 5.715840000000000 + 48 0.115829626442594 0.107697222584493 -0.069589733814632 4.758930000000000 + 49 -0.038032016066978 -0.124957045682523 0.435439718412418 9.387710000000000 + 50 0.021796902280962 0.059696335719063 -0.152646774236311 9.444229999999999 + 51 0.031096157214296 0.033673891608992 -0.176200474650820 9.725190000000000 + 52 -0.049181087800176 -0.006652299240288 0.165750618388967 10.322690000000000 + 53 0.053361576969729 -0.008036975414172 -0.188197495142107 9.603930000000000 + 54 0.007086233139642 0.000976195966350 -0.030253242968143 11.078010000000001 + 55 -0.773136318982409 -0.629643636841290 0.300714515053361 2.957400000000000 + 56 0.232703940710627 0.206514377684647 -0.071984653983698 2.497970000000000 + 57 0.529009597776273 0.459468211802094 -0.118830670859379 2.395910000000000 + 58 0.008835013078452 -0.023345721431136 0.028022691106342 9.015029999999999 + 59 -0.022180174396589 0.059538685884092 -0.063201271754419 8.087149999999999 + 60 -0.005564985550849 0.016349491376452 -0.023505775277947 9.471840000000000 + 61 -0.350847270607992 0.195762090475561 0.372933630047434 6.230570000000000 + 62 0.118109297250021 -0.056456599178784 -0.131166361190491 7.045130000000000 + 63 0.054389861958203 -0.032285540049833 -0.054700371419826 6.458700000000000 + 64 -0.568577826634426 -1.767122408120227 0.290674957325003 2.550610000000000 + 65 0.247784509767648 0.649481325260381 -0.120975980762643 2.453910000000000 + 66 0.440799875917328 0.910808765506661 -0.005510560417715 2.207320000000000 + 67 -0.000605911543115 0.000155562511910 0.000601456365758 8.918990000000001 + 68 0.000842718036356 -0.000225008694507 -0.000892660482532 9.318410000000000 + 69 -0.048805581315027 -0.075283019772497 0.137236584448454 9.136250000000000 + 70 0.026680897537484 0.028691887579734 -0.053861760300959 8.966720000000000 + 71 0.015963431480250 0.033256210873479 -0.048190310077632 8.872249999999999 + 72 -0.386255021721743 -0.761273488617640 2.002083042165518 6.669870000000000 + 73 0.089449756852512 0.232476484061223 -0.658889665505225 7.579260000000000 + 74 0.294491690532600 0.374488118210814 -0.824861522545669 6.631090000000000 + 75 -0.004997655576839 0.001697958676925 0.007505030368824 10.313150000000000 + 76 0.000997172504198 -0.000172303919381 -0.001630209383040 10.775930000000001 + 77 0.017260726629111 -0.009176133930369 -0.030484004157807 9.875640000000001 + 78 -0.442538774433991 0.136697743501472 0.662395997112632 7.574660000000000 + 79 0.377452577114133 -0.079071081823414 -0.622747428729183 6.961670000000000 + 80 0.124739709749247 -0.031528070346852 -0.199206861638171 8.439209999999999 + 81 0.000521175165061 0.000075995231210 -0.001086945366856 11.263170000000001 + 82 0.000000528359259 0.000000250497899 -0.000008079996119 12.696389999999999 + 83 -0.209058926346587 0.201001723375834 1.077553254956371 8.190160000000001 + 84 0.138434414702459 -0.093389479519094 -0.880339502156105 7.437540000000000 + 85 0.068204991356525 -0.171959614257858 -0.544060960928483 8.008110000000000 + 86 0.590829606900120 -0.654396660279429 1.542548034256956 6.818580000000000 + 87 -0.508847614472170 0.370536533962709 -0.890553344514849 6.093510000000000 + 88 -0.251099737094869 0.402776254497934 -0.648752078773992 6.634890000000000 + 89 0.000074492631491 0.000015748039086 -0.000052259324528 6.072850000000000 + 90 0.000013086342410 0.000002034523928 -0.000008017243584 7.241130000000000 + 91 -1.295983172837285 0.135027441277250 0.811813245093759 4.197360000000000 + 92 0.557789776589205 -0.109781723421717 -0.296883803550787 3.744400000000000 + 93 0.622874195413708 -0.155112363218261 -0.488687913723848 4.731350000000000 + 94 -1.370319587577579 0.643161275806700 1.962332591382935 5.328210000000000 + 95 0.552197409652288 -0.352196800949072 -1.182705185489084 5.531500000000000 + 96 0.635618741397509 -0.552771202647405 -0.737991072253914 4.869670000000000 + 97 -0.015959611649088 -0.022608406429205 0.000926530456583 1.538960000000000 + 98 0.019303638442230 0.034108664895841 -0.001251339771322 1.607800000000000 + 99 0.000002352436488 0.000003432361967 -0.000000778641549 2.015900000000000 + 100 -0.011779446504819 -0.049929036760713 0.047780071267693 8.029830000000000 + 101 0.025319077492271 0.094800393250776 -0.082454531431140 7.190600000000000 + 102 0.001411839899115 0.011066105621368 -0.009227341751833 7.852120000000000 + 103 -0.140062391878011 -0.998735833278240 0.702192318217518 5.325090000000000 + 104 0.094315496486432 0.658000327113665 -0.353335121295528 4.383930000000000 + 105 0.165203300209815 0.564054916210073 -0.475555242114301 5.481310000000000 + 106 0.061740983797108 0.347156779271150 -0.006832762966632 3.322820000000000 + 107 -0.003889576571170 -0.134509516761727 0.124565311303828 2.561160000000000 + 108 -0.016880122088664 -0.204188817112123 0.025488306704742 3.425490000000000 + 109 0.005273306137279 0.033030581077968 0.014268080972970 5.525250000000000 + 110 -0.004998540676337 -0.031159453470199 -0.016453634299105 6.193360000000000 + 111 -0.010144692636284 -0.060949846730560 -0.024187785416532 4.708470000000000 + 112 0.807666262676423 0.770313734181767 0.326467632883352 4.226060000000000 + 113 -0.270231090248397 -0.293690762893401 -0.167188836072310 4.593110000000000 + 114 -0.333146054129646 -0.425119782366925 0.086287680885839 3.302190000000000 + 115 0.212349031905986 0.330971873504709 0.212100717830459 5.210720000000000 + 116 -0.055027753822987 -0.096841317153939 -0.069780279589103 6.049270000000000 + 117 -0.095389090897789 -0.209533116052810 -0.097161389527690 4.652080000000000 + 118 0.017969779697211 0.053993922927147 0.040664807593541 7.504080000000000 + 119 -0.001449316521936 -0.003471472636678 -0.002540031548943 7.971470000000000 + 120 -0.009761603131144 -0.031143346825431 -0.028649844403424 8.132070000000001 + 121 -0.005013049000331 0.012659569230348 0.016854001154203 9.764139999999999 + 122 0.000175616116949 -0.000327196724552 -0.000458317297342 10.282489999999999 + 123 0.006379152682118 -0.015228524680027 -0.016585748235158 8.898230000000000 + 124 0.000505120277971 0.000499355135316 0.000316697652278 4.617420000000000 + 125 -0.000000145941774 -0.000000176539205 -0.000000109905138 4.856260000000000 + 126 -0.003345750780294 -0.003146109015832 -0.001878750277584 5.240730000000000 + 127 0.036535713942416 0.014593039891317 0.057078224346519 9.675950000000000 + 128 -0.036953772384932 -0.014731600295309 -0.068733825765388 9.496510000000001 + 129 -0.036801749433091 -0.013848160843967 -0.046118894748112 8.815930000000000 + 130 0.020076850969509 0.014427815563007 0.012505325041336 6.443400000000000 + 131 -0.002704766994449 -0.002201928623085 -0.001937977316460 7.294420000000000 + 132 -0.000220146277049 -0.000142453759918 -0.000107293032849 6.486140000000000 + 133 -0.001828946235040 0.035750020730939 0.149711670676301 10.453360000000000 + 134 -0.013414169205471 -0.040126557150202 -0.160135592657365 9.720680000000000 + 135 -0.000989957769502 -0.004779752087111 -0.023624856969941 11.206220000000000 + 136 0.181012517383673 1.472328946417472 0.329367698084484 4.472950000000000 + 137 0.009203133778001 -0.639115584590281 -0.229572579276966 4.793880000000000 + 138 -0.062870513221989 -0.810827848292386 0.258148293774018 3.535660000000000 + 139 0.155904037015614 -0.061075688219332 0.404686457703004 9.180870000000001 + 140 -0.113919117432707 0.068057911319656 -0.347269148508940 8.556530000000000 + 141 -0.033254161006868 0.023012549542576 -0.100224201306671 9.906850000000000 + 142 0.018961383137425 0.057808509150770 0.003442271122660 1.096200000000000 + 143 -0.011140769803778 -0.052110541985972 -0.002310199915848 1.295310000000000 + 144 -0.024803463384762 -0.058649995029468 -0.002848640820042 1.283590000000000 + 145 -0.000117206376400 -0.000296516780368 -0.000116817833213 5.715840000000000 + 146 -0.000145010382782 -0.000423337802064 -0.000092653551561 2.497970000000000 + 147 0.005802162463509 0.035884081619355 0.046763814625874 9.478610000000000 + 148 -0.000034773464411 -0.007186155183229 -0.009399284020601 9.885130000000000 + 149 -0.001979732408743 -0.006986891439056 -0.010945144194096 10.196059999999999 + 150 -0.034742318871966 0.081875533263448 0.060995901674317 7.284210000000000 + 151 0.011743614828871 -0.020204788423375 -0.015497252999492 7.501210000000000 + 152 0.048406676655865 -0.139903566930586 -0.110607534959909 6.487870000000000 + 153 -0.039463969790426 0.046575193893918 0.112828625558503 9.872030000000001 + 154 0.013133639389915 -0.020780207647645 -0.039019717735687 9.762950000000000 + 155 0.018037582786592 -0.027514509262683 -0.080015151344962 10.021699999999999 + 156 0.000076091575330 0.000095074796155 0.000212165482847 11.289580000000001 + 157 -0.001562066209815 -0.001411120681936 -0.003500555259535 10.737080000000001 + 158 -0.036332298913858 0.041628878175907 0.039798428300896 7.114030000000000 + 159 0.062258872988545 -0.070374749718637 -0.082156548643233 7.060730000000000 + 160 0.009942345628666 -0.010159076688939 -0.010354628921483 6.792130000000000 + 161 -0.344871699726380 0.423648633375853 0.697510442652180 7.237960000000000 + 162 0.256472495659926 -0.222597423650409 -0.477698246584354 7.055470000000000 + 163 0.095766227734670 -0.117427749259074 -0.207439619109399 8.125600000000000 + 164 -0.014795215753890 0.489947236040778 0.751136197518344 7.605510000000000 + 165 -0.022087867026063 -0.337063659490313 -0.399857261234579 6.883370000000000 + 166 -0.004392241991851 -0.126624918487401 -0.197922516708349 8.381370000000000 + 167 0.907126799712811 0.986980503013421 1.575988776233412 5.804840000000000 + 168 -0.512191793841490 -0.494311828159557 -0.549808752283941 5.301210000000000 + 169 -0.265689758048153 -0.564644265211527 -0.691244863971515 5.908340000000000 + 170 0.198702515492245 0.072496922847266 0.152652070644667 6.740670000000000 + 171 -0.075418451225440 -0.037446464832945 -0.054256517820621 6.439550000000000 + 172 -0.217112167630128 -0.073435344110805 -0.156892192753754 6.011240000000000 + 173 0.189291601601809 0.140493855829268 0.579595193241346 8.634589999999999 + 174 -0.097840893660458 -0.026919957165900 -0.281664977441025 8.833679999999999 + 175 -0.170469870029535 -0.149238837858938 -0.518459714463503 7.722420000000000 + 176 -0.001744893634696 0.000444629537450 -0.003065323248745 10.816459999999999 + 177 0.000230655011580 -0.000970812973893 -0.000637062944507 7.930310000000000 + 178 0.000051965129966 -0.000314578976308 -0.000143747542273 6.790240000000000 + 179 -0.241726966604880 0.927228120865521 0.550991959237978 5.230900000000000 + 180 0.143518824381297 -0.464993751602071 -0.188722668685870 4.574910000000000 + 181 0.176408548735426 -0.479426309083663 -0.414953467143827 5.753060000000000 + 182 0.102442881175811 0.172022787699864 -0.013098440539026 1.538960000000000 + 183 -0.063073132792987 -0.072674004081218 -0.007293158621637 1.607800000000000 + 184 -0.048905930417687 -0.105424470270684 0.036287860782207 2.015900000000000 + 185 -0.273246026377863 0.119615079787182 -0.958576729899718 1.474450000000000 + 186 0.156778467231753 -0.117977238704804 0.749977301316809 1.550720000000000 + 187 0.343614203260723 0.120010657656097 0.589343690898568 0.607880000000000 + 188 0.333803961071363 -0.051622086103544 0.355114831494722 7.628870000000000 + 189 -0.165532090470484 0.039704938285953 -0.224911571041740 8.004400000000000 + 190 -0.071686608659853 0.015520351363987 -0.074137209318282 8.217630000000000 + 191 0.007013845231766 -0.002185094647883 0.007223484846819 9.251300000000001 + 192 -0.000000927252668 0.000000208221393 -0.000000967148277 9.910310000000001 + 193 -0.000408305915608 0.000180857124369 -0.000407811283867 9.293600000000000 + 194 -0.002793011860732 -0.000967925271106 -0.001775694011017 7.596820000000000 + 195 -0.000000004244174 -0.000000001039495 -0.000000001997462 6.967530000000000 + 196 1.860608440960173 -0.435071203054220 1.592528583859695 4.903620000000000 + 197 -0.902118542311118 -0.045832457025060 -0.812459560505187 5.060450000000000 + 198 -0.852506011046959 0.193311490952752 -0.539359560918864 4.609560000000000 + 199 -0.000001250747447 0.000005705033330 -0.000002124746464 5.506860000000000 + 200 -0.608210333869140 1.233438216560287 0.033228865904489 -4.415730000000000 + 201 0.526326609810169 -0.990882194777601 -0.116083434045528 -4.336880000000000 + 202 0.235687205314405 -0.621473562639673 0.139533293923762 -3.758240000000000 + 203 -0.002544230445919 0.006239143946983 0.003458364743655 -5.266690000000000 + 204 -0.027887339720386 -0.192226071267649 -0.072935635626010 -3.040110000000000 + 205 0.030029873962316 0.083130158650311 0.083870075361169 -3.228010000000000 + 206 0.001812478342466 0.099207544527479 0.026592892441342 -2.610670000000000 + 207 0.140650455998376 -1.165311098782633 0.328795338062464 2.960920000000000 + 208 -0.107894367309092 0.558809914379027 -0.100441777651170 2.188620000000000 + 209 0.006346181449797 0.708088189271302 -0.151389217023102 2.610410000000000 + 210 -0.000000599548110 0.000000466802468 0.000000883709713 -8.651109999999999 + 211 0.187101870727780 -0.392418528397959 -0.086318851453191 -1.863430000000000 + 212 -0.076439040274095 0.165087496839683 0.063664090783272 -2.792580000000000 + 213 -0.066051637719910 0.113746937924041 0.015157336086848 -1.714850000000000 + 214 0.000011333940992 -0.000075911290499 -0.000010090128349 -2.067230000000000 + 215 0.000009581981761 -0.000012592922137 0.000005751716276 2.284000000000000 + 216 -0.000267911997158 0.000265147117632 -0.000058867695378 3.051770000000000 + 217 -0.006029862195604 0.008041652995606 -0.002022384277297 1.919410000000000 + 218 -0.002136711495849 0.005260339697495 -0.000511555583350 1.440940000000000 + 219 0.042110165243245 -0.043044969656766 -0.067088367021237 -7.044900000000000 + 220 -0.033089264588755 0.035808386084757 0.043089267094027 -6.230330000000000 + 221 0.017565906950433 -0.019225773494863 0.023306087045649 -6.816770000000000 + 222 0.649751962412188 -0.851927324096881 0.216377223663774 2.133240000000000 + 223 -0.448706154351711 0.506834999793682 -0.166339966208352 2.645170000000000 + 224 -0.347952472007148 0.486949606171634 -0.019708248727773 1.308040000000000 + 225 0.099464810903487 -0.199420359378609 -0.142641975547753 -4.356480000000000 + 226 0.012384411072440 0.012815500428325 0.086558427397036 -4.262660000000000 + 227 -0.071895962665619 0.103949699710559 0.078184225894198 -3.957050000000000 + 228 0.039926762284723 -0.033119857662555 0.012516920864317 4.289060000000000 + 229 -0.014129895825869 0.009992014159021 -0.003695512560749 4.216650000000000 + 230 -0.074119668519354 0.065662576874479 -0.027849581844894 3.473060000000000 + 231 0.034115020119851 -0.131029457954568 0.053324303076533 5.109610000000000 + 232 -0.036059766607519 0.094912970939152 -0.043677100690686 5.262550000000000 + 233 -0.033213967792744 0.165235161289603 -0.060539704415713 4.349180000000000 + 234 0.212122332977852 -0.188608852873647 -0.079689659112630 -2.962320000000000 + 235 -0.051919980059053 0.052766984738030 0.013506647976740 -2.499540000000000 + 236 -0.054922771534831 0.041543990559093 0.020651159493700 -3.399830000000000 + 237 0.002313634870652 -0.002444454210856 -0.001873260274319 -5.700810000000000 + 238 -0.001302497453706 0.001384484559649 0.000818426536186 -4.836260000000000 + 239 -0.057333766366495 -0.180217219742321 0.015905508352600 2.042720000000000 + 240 0.006799897179689 0.030942201697986 -0.002200583585489 2.175510000000000 + 241 0.035655374754128 0.100485220994947 -0.017968727682319 2.926390000000000 + 242 -0.162265524525371 0.644765730506129 -0.545381218192566 -2.941030000000000 + 243 0.039051216554982 -0.582117691291035 0.209145025964669 -3.424630000000000 + 244 0.075364422430075 -0.239963421981031 0.482654336683461 -2.026700000000000 + 245 1.276020641554586 -0.970417018455765 0.636658794624161 3.657230000000000 + 246 -0.514269712954748 0.348025728429520 -0.320937433430479 4.422140000000000 + 247 -0.710891240396621 0.393481585920854 -0.187354957060298 2.985230000000000 + 248 0.108159345514691 -0.082187033186905 0.023636548919911 0.643600000000000 + 249 -0.025016282668149 0.022787226482604 -0.004601817042757 0.134700000000000 + 250 -0.038996125055940 0.025038046900208 -0.006681110240071 0.155000000000000 + 251 0.008570940278033 -0.011738452553356 -0.000678366181016 -1.528010000000000 + 252 -0.000043892077258 0.000069606068381 0.000002052509322 -1.347250000000000 + 253 -0.000309697120550 0.000366710172237 0.000045401536888 -2.012300000000000 + 254 0.145298898289754 -0.177718027780484 0.108094976951313 5.672100000000000 + 255 -0.024531905922066 0.030216812750039 -0.021389873795161 6.544370000000000 + 256 -0.069871066899035 0.070963013034491 -0.039057446196457 5.183980000000000 + 257 -0.149588681437955 0.339272956901585 -0.581446756717892 -2.097360000000000 + 258 -0.057053524582870 -0.025389092618504 0.333050264461613 -1.404080000000000 + 259 -0.057819622642352 0.010614876139785 0.142665471865072 -2.338160000000000 + 260 -0.105328788694524 -0.221773043294476 -0.101967034007432 -2.094900000000000 + 261 0.038732510301410 0.099569413706327 0.045407672676489 -2.475040000000000 + 262 0.023426964743891 0.053630998934267 0.011836537464829 -1.645920000000000 + 263 0.098587051340179 -0.457813874410281 -0.005540453516786 -0.025130000000000 + 264 -0.014543292551842 0.117611935653004 0.004297121136193 -0.324910000000000 + 265 -0.053390919099961 0.186812944987958 0.011433981544662 -0.707770000000000 + 266 -0.000042241679262 -0.000082885680712 -0.000007858456286 -1.136010000000000 + 267 0.000159797124064 0.000304688373255 -0.000004015296456 -0.198930000000000 + 268 -0.354258582573596 -0.606312280314270 -0.725003189664866 -0.373520000000000 + 269 0.125802910118781 0.233874415242275 0.212475817644587 -0.939720000000000 + 270 0.104835417379992 0.087144584702487 0.519735895150166 -0.840640000000000 + 271 0.018220971710327 -0.712143311006781 -1.625926493895282 -0.161680000000000 + 272 0.033630548756495 0.200960808486235 1.368412667722887 -0.263810000000000 + 273 0.073040413412203 0.511512006841806 0.647647415196525 0.226900000000000 + 274 1.055026688861519 -2.231481938877792 0.612782156103639 3.053920000000000 + 275 -0.625826496241319 0.880962278246141 -0.370957731117967 3.370570000000000 + 276 -0.301881678517114 1.004686778868037 -0.292795295353397 3.068550000000000 + 277 0.432917068081933 -0.614058481224396 -0.525511087788399 -0.285080000000000 + 278 -0.140253175613395 0.290043098232462 0.399327862725538 -0.398640000000000 + 279 -0.165558355696084 0.280855800330691 0.139470278835616 -0.801470000000000 + 280 0.081344192174733 0.028473039210381 -0.009079129935723 -0.456240000000000 + 281 -0.009924696539457 -0.002626077781665 0.001618031558952 -0.871610000000000 + 282 -0.028572015526392 -0.009653629443377 0.000400156732929 0.463980000000000 + 283 -0.006951201370738 0.000029633177657 0.000783204501596 -1.141390000000000 + 284 0.303983236788635 0.006435901211104 -0.019660930670593 -0.514780000000000 + 285 -0.150887169607621 -0.001847819133951 -0.006605693572854 0.399160000000000 + 286 -0.109542294900739 -0.031010556274160 0.049103505615530 -0.834310000000000 + 287 0.469508388259862 -0.115713658379216 -0.044575379598934 -0.469670000000000 + 288 -0.147831181397161 -0.012597684621834 0.113531614861787 -0.945660000000000 + 289 -0.209533101393492 0.033015174262096 0.010474433833198 -0.364470000000000 + 290 0.027027635335773 -0.004003229318380 -0.007753691174884 -3.511330000000000 + 291 -0.082588173525482 0.014531450237206 0.023251471519714 -2.992980000000000 + 292 -0.012242651392151 0.001327904936417 0.004863685572042 -4.377240000000000 + 293 1.109788259871302 -0.274390047548620 0.011928276122777 1.961820000000000 + 294 -0.544983646851377 0.058584555870650 -0.018051760421339 2.227580000000000 + 295 -0.425077175371590 0.104955503877671 0.028224485642500 1.189330000000000 + 296 0.002889506913405 0.001289207186508 -0.001982843572597 -5.122380000000000 + 297 -0.000034358314043 -0.000014209239884 0.000018938667753 -5.189020000000000 + 298 0.000049067578888 -0.000008700050134 0.000022260901830 6.836110000000000 + 299 -0.009775425914948 0.001677215479640 -0.004455864480158 6.484590000000000 + 300 -0.674797095270661 -0.048693065442154 0.134668997344487 -4.346430000000000 + 301 0.067866411264565 -0.001876728989614 0.002281770415995 -4.563060000000000 + 302 0.292595051171457 -0.028305619340042 -0.044278021983216 -4.376410000000000 + 303 -0.593207275364370 0.247526776153102 -0.038278560291814 -3.675350000000000 + 304 0.243649913892331 -0.122727628624398 -0.008190236768195 -4.400250000000000 + 305 0.460857843239295 -0.231865236930142 0.100019516059767 -2.957760000000000 + 306 0.005338762487379 -0.000216291844048 -0.003274762615487 -5.991260000000000 + 307 -0.029161379807470 0.001400618866010 0.019974301944522 -5.774260000000000 + 308 -0.000009296308195 0.000000974272388 0.000006552451486 -6.787600000000000 + 309 0.016410503883117 -0.007899789636646 -0.004786564257497 -3.403440000000000 + 310 -0.010690407542709 0.003781877430060 0.003161495154194 -3.512520000000000 + 311 -0.000003262852769 0.000001597661730 0.000000805849013 -3.253770000000000 + 312 -0.000540046426403 0.000238020113957 -0.000038663461260 3.326970000000000 + 313 0.112227027932931 -0.059412511969509 0.032801390294658 2.919920000000000 + 314 -0.051277307641101 0.030277010202327 -0.015053604080808 2.184960000000000 + 315 -0.233218086242225 0.116431600652766 -0.076155665606361 2.920870000000000 + 316 0.026805727775981 0.021321030073302 0.005546127482548 2.042720000000000 + 317 -0.012403448101034 -0.007829187622109 -0.002563759093546 2.175510000000000 + 318 -0.007252048830493 -0.006293144112578 -0.002456580822423 2.926390000000000 + 319 -0.036100746171761 0.048207184728190 -0.043730021149739 -6.161440000000000 + 320 -0.036794927612573 0.011628955372212 0.041856535234544 -6.214730000000000 + 321 0.121366167982808 -0.080305091346996 -0.045770887921202 -6.483340000000000 + 322 0.004485469649600 -0.001678250752773 0.000472385600086 -0.178690000000000 + 323 -0.035457421663160 0.012941386211196 -0.002831105462747 -0.317940000000000 + 324 -0.000000049615490 0.000000014251176 -0.000000004387440 -0.257020000000000 + 325 0.005975931789651 -0.003151281549724 -0.004230075181326 -6.037510000000000 + 326 -0.000800677326844 0.000549211027552 0.000616802652150 -6.220000000000000 + 327 -0.005279480190450 0.002689319429225 0.002916831602353 -5.149870000000000 + 328 0.954912270595291 0.108105734150142 0.170325528679257 2.981040000000000 + 329 -0.489840855998987 -0.143941334490804 -0.058539636679531 3.113070000000000 + 330 -0.334347339117773 -0.030917427712733 -0.075209446849366 2.822960000000000 + 331 0.243845765317015 -0.031251553369598 0.125005816736917 5.874060000000000 + 332 -0.159363769466539 0.015201020394900 -0.104942252453382 6.460520000000000 + 333 -0.259007344753720 0.018256711736790 -0.126611842005410 5.010730000000000 + 334 0.003069739059059 0.003042881871884 -0.001265858516859 -2.094900000000000 + 335 -0.000011146005033 -0.000009322720819 0.000004657370847 -2.475040000000000 + 336 -0.018850255389980 -0.017358723099172 0.006828671548509 -1.645920000000000 + 337 -0.268625471436465 -0.134957225199807 -0.143435772236302 -1.136010000000000 + 338 0.402155792814464 0.257473555811304 0.144952476155499 -1.317610000000000 + 339 0.057572867059323 0.008776468857620 0.075913661170100 -0.198930000000000 + 340 -0.000127985081474 -0.000019874377939 0.000062398604743 -5.345160000000000 + 341 -0.562224016185072 0.676452429235301 -0.908522246672035 -1.351120000000000 + 342 0.229988830194214 -0.335989696256359 0.424775547227047 -1.643680000000000 + 343 0.148941033716389 -0.401677684529235 0.712627155721190 -0.595320000000000 + 344 0.160760063342581 0.005777513468613 0.028584330785493 2.365840000000000 + 345 -0.052092124666331 -0.006980930652388 -0.008305796650844 2.384640000000000 + 346 -0.034957176523906 0.000737407705891 -0.007121407039380 3.151320000000000 + 347 -0.309072678016541 0.370612991391752 -1.195430223035319 0.618200000000000 + 348 0.436150781833420 -0.249773025275804 1.005862536212430 0.105190000000000 + 349 0.236341716076943 -0.090643342527676 0.377966063864183 0.021540000000000 + 350 -0.372543281462243 0.051337284418708 -0.218679948589043 -1.505200000000000 + 351 0.246852229599283 -0.002246874578542 0.056531799999417 -2.457010000000000 + 352 0.052956614943701 -0.021404964668371 0.073332394158173 -1.183480000000000 + 353 0.013508292113549 0.004792567713733 0.003110186608548 2.609460000000000 + 354 -0.000001159022635 -0.000000360860906 -0.000000249024646 2.542450000000000 + 355 -0.011196254609234 -0.003590046961899 -0.003112290370869 3.424480000000000 + 356 0.491656038576895 -0.259667016021298 0.344695935066502 5.875760000000000 + 357 -0.091355159871346 0.052162211078264 -0.056741946338020 6.364480000000000 + 358 -0.246578734580057 0.105106057372517 -0.200737000301763 6.450100000000000 + 359 -0.364516866939689 -0.120192341970517 -0.092958420323996 -1.241880000000000 + 360 0.207858923082373 0.095178953497101 0.081453940708044 -1.008100000000000 + 361 0.103639578943744 0.034192936658751 0.009679670049910 -0.801230000000000 + 362 0.000000000000001 0.000000000000000 -0.000000000000000 1.125100000000000 + 363 -0.000568700334151 -0.000451851023185 0.000175467784665 2.074700000000000 + 364 0.000006828300582 0.000004742374566 -0.000001389487327 1.428680000000000 + 365 -0.076005216345088 0.037179903393893 -0.009942432616908 -2.490920000000000 + 366 -0.016262562680945 0.007131413343023 -0.005577887931163 -3.041210000000000 + 367 0.025119167953794 -0.014868045374500 0.002902687999887 -1.757720000000000 + 368 -0.000000304081240 0.000000016280967 0.000000178243683 3.432060000000000 + 369 0.001981314905270 -0.000696433098384 -0.001000516188431 2.280850000000000 + 370 -0.004650005115574 0.000638517389289 0.003868878555755 1.999120000000000 + 371 -0.000199714458825 0.000067476450221 0.000125600100667 3.232460000000000 + 372 -0.008176094181927 -0.002121646499683 0.007948819061274 -6.722730000000000 + 373 -0.000030175051833 0.000133076545326 -0.000968406866477 -7.167210000000000 + 374 0.013480459944616 0.000936874210639 0.001918669642955 -7.397230000000000 + 375 0.003408600832503 0.006003006701023 -0.007120174825843 -0.066070000000000 + 376 -0.004442955725195 0.000169803868672 0.000923646190381 0.021950000000000 + 377 0.050430232899489 -0.016463123234634 0.002747337528454 0.277330000000000 + 378 0.001788754221150 0.000403977170964 0.000086619790810 -2.015670000000000 + 379 -0.005465768665322 -0.000902453476139 0.000224710238621 -1.513500000000000 + 380 -0.003726544730364 -0.001152560502102 -0.000246441228489 -2.381340000000000 + 381 0.002688240423107 -0.000992951497623 0.000761875965293 -3.887760000000000 + 382 -0.000857887344058 0.000215472064584 -0.000225690588731 -3.831240000000000 + 383 -0.000058230051065 0.000024206932426 -0.000013128777872 -3.550280000000000 + 384 -0.169046781039124 0.014621346865872 -0.081294013430512 -4.260440000000000 + 385 0.054647431750841 -0.004673179084117 0.020744908376115 -5.188320000000000 + 386 0.087063808457495 -0.018145691174934 0.029593700039677 -3.803630000000000 + 387 -0.361480069984289 0.166756385343553 0.036285155816004 0.750690000000000 + 388 0.218985060372112 -0.105502866617908 -0.049620539506472 1.599000000000000 + 389 0.216546272566835 -0.118195760818551 0.011060815291696 0.112690000000000 + 390 -0.348092161039936 0.184472073772582 0.175378579458716 3.283980000000000 + 391 0.103696421177519 -0.072135118316931 -0.057306630158806 3.529910000000000 + 392 0.125031606205051 -0.055851524741546 -0.077235079776766 4.117840000000000 + 393 -0.443993837121372 0.115200645991713 -0.654960067541077 -0.071230000000000 + 394 0.052609186384530 -0.100718352492507 0.339750730726813 -0.441840000000000 + 395 0.261366145966963 0.006499775006427 0.158856926449151 -0.265780000000000 + 396 -0.033054128099574 0.001362587068083 -0.014235087148086 -3.604210000000000 + 397 0.062366253215005 0.001926596447303 0.024523654304266 -3.678180000000000 + 398 0.066899965051071 0.012976822652222 0.023520768547217 -2.899690000000000 + 399 -0.000008285407544 0.000002944554963 -0.000004058007029 -5.696210000000000 + 400 -0.000280515198226 0.000207333155155 0.000037876449454 -0.579080000000000 + 401 1.372520219649839 -0.134538932952136 -0.077354903973175 -3.466280000000000 + 402 -0.883729897460074 0.004801866852392 -0.050143464519247 -3.864370000000000 + 403 -0.291259808814156 0.041178778821842 0.033041221174778 -3.848910000000000 + 404 -0.009093119810958 0.000749366262963 0.002641854168942 -6.456890000000000 + 405 0.007748978296953 -0.002756985179988 0.002484774913311 -7.181960000000000 + 406 0.004675920347606 0.000338917432220 -0.002266897149199 -6.640580000000000 + 407 -0.000196177578336 0.000063074096214 0.000165446089063 6.161500000000000 + 408 0.001669479934844 -0.000308859482801 -0.001341770326598 5.771290000000000 + 409 -0.000075645959907 0.000073446909200 0.000033119001302 6.405700000000000 + 410 0.000113399366856 -0.000080390874281 -0.000083480560815 6.227040000000000 + 411 0.392238986923057 0.093480029740014 -0.509004599202630 -1.074040000000000 + 412 -0.425657889048310 0.005296607502573 0.389960532380797 -0.910280000000000 + 413 -0.406471821714439 0.017951629030319 0.246213114891274 -1.893210000000000 + 414 -0.026272582532819 -0.000686534498757 0.017159836620044 4.873710000000000 + 415 0.086802058020091 -0.002061181132286 -0.046969972274704 4.065600000000000 + 416 0.000744378218773 0.000012936480523 -0.000417110801090 4.628050000000000 + 417 -0.000016910159626 -0.000006756703493 0.000006454924916 3.106540000000000 + 418 0.010259731710168 0.004334225241716 -0.004266861075235 3.127760000000000 + 419 -0.745774850870091 0.025512030093743 0.209876235649203 2.220770000000000 + 420 0.359042244267294 0.037603822488768 -0.110181883718056 2.406740000000000 + 421 0.444239750015863 -0.036025638704289 -0.037138409228909 1.487350000000000 + 422 -0.542564931854439 -0.236002284211561 0.154612057425821 2.266600000000000 + 423 0.107555414776899 0.057402983568685 -0.028689736866431 2.079590000000000 + 424 0.401627453879909 0.206342071764152 -0.115485307231308 2.431250000000000 + 425 -1.946803731539160 0.123925204985040 -0.367809231490730 1.958820000000000 + 426 0.710481459527489 -0.014701733971931 0.371285012341267 1.350470000000000 + 427 0.887715732702767 -0.130995517101024 -0.133762655352497 2.764490000000000 + 428 -0.016032465166067 -0.011761854155398 -0.003353666935122 -1.745230000000000 + 429 0.073933553889636 0.052686033036523 0.015555546133203 -1.472770000000000 + 430 0.002280469131856 0.001431583849380 0.000340424443557 -1.288040000000000 + 431 -0.417458646261752 -0.337449394374627 -0.219897115735352 -0.687840000000000 + 432 0.118417670017548 0.116348818808604 0.166294982282901 -1.398510000000000 + 433 0.223981802901367 0.201079363879658 0.048234874423668 -0.060480000000000 + 434 -0.000005607564644 -0.000001560510960 -0.000002466526777 -5.423350000000000 + 435 -0.027446108297985 -0.013236873563996 -0.016216686406198 -4.420620000000000 + 436 0.011899645476418 0.006404153892271 0.005794311477280 -3.589800000000000 + 437 0.003531790414839 -0.000023148025996 0.002264851129727 -4.545610000000000 + 438 -0.016670006352145 0.330949409222022 -0.039829172461000 3.217580000000000 + 439 0.011292231778366 -0.107884637711283 -0.012231767616148 2.993700000000000 + 440 0.026240387563701 -0.226077895984159 -0.040822376990003 3.896980000000000 + 441 0.000000375319563 0.000000716702058 -0.000000086904387 0.002790000000000 + 442 0.000236884001325 0.016398623518039 0.002770160701204 2.074700000000000 + 443 0.000148820061890 -0.004170368601283 -0.000639104316786 1.428680000000000 + 444 0.000283287385973 -0.007158242859077 -0.001677346331981 2.880020000000000 + 445 -0.001824724484085 -0.009456412927474 -0.000790533884607 1.012270000000000 + 446 -0.000670211705710 0.004144450088885 0.001265266765478 1.303950000000000 + 447 0.001633083213953 0.002747437444746 -0.001695250966334 0.080380000000000 + 448 -0.117537310302165 0.746310454231282 -0.213800769018916 2.834710000000000 + 449 0.053334328439165 -0.251859692225885 0.015330739407447 2.758620000000000 + 450 -0.108878738054227 -0.276595134591235 0.414703555485039 1.971670000000000 + 451 -0.009388910468808 0.010814308116545 0.003344267544597 -3.599520000000000 + 452 0.003548538740017 -0.002552280257246 -0.001656022732986 -3.778960000000000 + 453 0.005810849843530 -0.009952780826874 0.000619781506330 -4.459540000000000 + 454 -0.013676261293783 0.170426739261205 -0.015259235180946 0.799630000000000 + 455 0.011274664329620 -0.074940245283815 0.006586525384336 -0.013580000000000 + 456 0.024022050253666 -0.080520189735702 -0.013866234503231 0.859300000000000 + 457 0.008927403433261 -0.014293504994426 -0.004982646688560 -0.193750000000000 + 458 0.048622811048221 -0.048855608492151 -0.003781736705382 -0.553160000000000 + 459 -0.000044215897675 0.000827144987913 0.004746234751472 0.733190000000000 + 460 -0.000000765274028 0.000000852069880 -0.000000232133216 -3.554790000000000 + 461 -0.000000311634243 0.000000361686237 -0.000000023202493 -2.069250000000000 + 462 -0.031422263005475 0.008065273252652 0.014108482315264 -4.094600000000000 + 463 0.000993281708696 0.003922122836412 -0.007620743649951 -4.718940000000000 + 464 0.050428619094213 -0.028778131218083 0.002309362930553 -3.368620000000000 + 465 0.000160258603571 0.007753106148153 0.000266756145336 -2.657690000000000 + 466 0.001071570289058 -0.008925938919364 -0.001466217022635 -2.326670000000000 + 467 -0.000497942004427 -0.011090672746536 0.000488657884171 -3.469360000000000 + 468 -0.024085931593728 0.050760744821477 0.016552074069864 -1.713060000000000 + 469 0.010202269728845 -0.046019163573690 -0.011492990813432 -2.032950000000000 + 470 0.009283425562328 -0.012276069410701 -0.006462164356025 -2.278740000000000 + 471 -0.000000005003715 0.000000010934958 0.000000000348955 -1.297800000000000 + 472 -0.000019475038436 0.000053479436155 -0.000005639659765 -2.538390000000000 + 473 0.272218137230969 -0.677990751889352 -0.608653437704281 0.434880000000000 + 474 -0.130956844973574 0.169354613936348 0.190022591495635 0.603100000000000 + 475 -0.060658550401441 0.140854271176675 0.275854337387892 1.286280000000000 + 476 -0.000000012825366 0.000000016806700 0.000000014994312 4.182410000000000 + 477 -0.077528303437581 0.084987766634401 0.021026826449460 2.233080000000000 + 478 0.110933909471032 -0.136938132117344 -0.047696412094337 2.110970000000000 + 479 0.003177605540633 -0.004352761419909 0.003709444195757 2.732950000000000 + 480 -0.002302011349347 0.007112633648385 -0.003255966512213 -6.534800000000000 + 481 0.000783226006757 -0.001957897830144 0.001134061038207 -7.264230000000000 + 482 0.000273133724028 -0.000481220861517 -0.000100494631009 0.090370000000000 + 483 -0.002158491795467 0.003300180491419 0.000592709443943 -0.246400000000000 + 484 -0.000247786553793 0.000518511470415 0.000149060665622 0.724190000000000 + 485 0.000034410248936 -0.000107630352001 -0.000047324452225 2.135680000000000 + 486 -0.000006690882642 0.000016673282864 0.000009117409690 2.825720000000000 + 487 0.000373316722818 -0.000631414142180 0.000361571572353 -4.640880000000000 + 488 0.000778970588496 0.000596386573175 -0.001441482485054 -4.441790000000000 + 489 -0.000027628022388 0.000035151591738 -0.000020119825277 -5.553050000000000 + 490 -0.045522354244699 0.120693913922139 -0.020257499491763 -1.504210000000000 + 491 0.024328807653501 -0.047306737774166 0.003699198748983 -2.459010000000000 + 492 -0.137004152217034 0.064847433733130 0.055577706944783 -1.310150000000000 + 493 -0.057826147893572 0.135261963408239 0.061574027053171 3.839290000000000 + 494 0.012890158893693 -0.034652319150449 -0.012125492740119 3.513940000000000 + 495 0.003877901894151 -0.007975272384218 -0.002366794708589 4.673970000000000 + 496 -0.002821572585886 0.002775401159710 -0.001135503881537 3.292480000000000 + 497 0.000537181411499 0.002823255327126 0.001615196154920 2.597130000000000 + 498 0.000003667667210 0.000025581567207 0.000018497307465 4.064160000000000 + 499 -0.067498182820533 -2.157237975188928 -0.227533883218358 -1.773820000000000 + 500 -0.004899154869064 1.036543782734047 0.417658151041544 -0.889490000000000 + 501 0.099069776986857 0.706037406906231 0.069870282518655 -1.644030000000000 + 502 -0.108540959189328 0.102104880722406 -0.039501533535675 -5.646600000000000 + 503 0.054409765925610 -0.039509953788819 0.011791471860675 -5.271070000000000 + 504 0.034956014610476 -0.038395192062835 0.007397143083518 -5.057830000000000 + 505 0.467621481659883 -0.570398904822568 0.241320675902988 -4.024170000000000 + 506 -0.248012206366274 0.354279172351744 -0.102063605467148 -3.365160000000000 + 507 -0.479033436797129 0.539167097525846 -0.237214196888481 -3.981870000000000 + 508 0.060259866737924 -0.176526543774844 0.100172125254762 -4.516300000000000 + 509 -0.009784872504126 -0.044030672336720 0.003850323718979 -4.898490000000000 + 510 -0.063183501521919 0.252964794881632 -0.135412804983446 -4.927560000000000 + 511 0.252126375533139 -0.584328006039153 0.060731956375444 -2.314170000000000 + 512 -0.097233395489784 0.284149805829535 -0.070796071672181 -3.122740000000000 + 513 -0.150248132194833 0.478994885232776 0.025309270575973 -1.674090000000000 + 514 0.000330316803552 0.039388938412375 -0.011958365364700 -5.460660000000000 + 515 0.000903712577563 -0.009915945555234 0.003283737460593 -5.678650000000000 + 516 -0.001078362958017 -0.015222230323298 0.006568113955642 -6.307940000000000 + 517 0.006510263222126 0.017099095161716 0.001953501665450 -1.745230000000000 + 518 -0.000081649898016 -0.000163146373543 -0.000025358410749 -1.472770000000000 + 519 -0.001390818854235 -0.004404988736770 -0.000887353612275 -1.288040000000000 + 520 -0.000085220970549 -0.000273129542963 0.000017832361176 -0.060480000000000 + 521 -0.000040526088950 -0.000098280549545 0.000008467208764 -3.589800000000000 + 522 -0.006753719140784 0.004810521591808 -0.005987130601168 -8.371850000000000 + 523 0.000616553164270 -0.000543839286183 0.000545039985488 -8.215020000000001 + 524 0.008576937999399 -0.006780510419363 0.009286145604346 -8.665910000000000 + 525 -0.000739667748407 -0.000682935462276 -0.001062782117331 -6.601200000000000 + 526 0.000664740420180 0.000769036382159 0.000776876970981 -6.007820000000000 + 527 0.000000489723750 0.000000490659989 0.000000534769033 -7.653280000000000 + 528 -0.000020397305595 -0.000016338627850 -0.000021760539466 -7.768610000000000 + 529 -0.000420438667214 -0.000520376967687 -0.000760212220652 -6.938870000000000 + 530 0.000077906763416 0.000169970381977 0.000269562858096 -10.766719999999999 + 531 0.000126735987668 0.000334427429464 0.000378157875649 -9.806179999999999 + 532 0.152912796644453 0.388693776994787 0.313519117054635 -6.876050000000000 + 533 -0.019655100645462 -0.076620318245108 -0.069366466672689 -7.620590000000000 + 534 -0.048176259676319 -0.102779390874679 -0.067625572994152 -6.622630000000000 + 535 -0.000221363567527 -0.000268657243550 -0.000576720977754 -9.166850000000000 + 536 0.000003959755165 0.000008103372010 0.000017073294494 -9.843410000000000 + 537 0.000053016094390 -0.000149496177822 -0.000244125637820 -10.994619999999999 + 538 0.000453638060728 -0.008888279480708 -0.025541469620101 -10.042999999999999 + 539 -0.002326557353584 -0.002777020022365 -0.002698626469784 -8.838550000000000 + 540 -0.000622834412794 0.003892453806863 -0.001207452746713 -8.002730000000000 + 541 0.000001959832335 0.000002310871030 0.000002236957965 -8.710310000000000 + 542 1.702209245812768 0.402157227544879 0.572313303022355 -4.840610000000000 + 543 -0.521752583120079 -0.173842867893264 -0.179993911516381 -5.158520000000000 + 544 -0.895990847412936 -0.204219871168063 -0.572441841306995 -5.506220000000000 + 545 1.201166711757936 0.382868068249180 1.914751482654754 -6.812470000000000 + 546 -0.489128297034825 0.008504153829201 -0.863291503979072 -7.304450000000000 + 547 -0.561136336593787 -0.353767972034755 -1.298218201348908 -6.587460000000000 + 548 0.147653457306039 0.054204518220489 0.048810354932651 -5.970120000000000 + 549 -0.063975776311267 -0.038082113097670 -0.031387011406292 -6.200190000000000 + 550 -0.034174092974212 -0.006732087904403 0.009763716154822 -5.227710000000000 + 551 -0.004826484107869 -0.005961835569682 -0.016887095367767 -10.991470000000000 + 552 0.007934703749109 0.010649356902545 0.024793021520569 -10.223699999999999 + 553 0.000413679675544 0.000349665554222 0.001116568503698 -11.356059999999999 + 554 0.000163650884600 -0.000280313027200 -0.000753268964849 -9.991490000000001 + 555 -0.000733665818640 0.000871778379365 0.003891086013039 -9.745559999999999 + 556 -0.001447972243771 0.003128690406327 0.006990955597499 -9.157629999999999 + 557 0.608833830896516 1.900837155121658 0.325796651103923 -4.417400000000000 + 558 -0.221914313328614 -0.658101623377556 -0.289402832690450 -5.334390000000000 + 559 -0.575647724867512 -1.303833747052484 -0.411551191657074 -4.404270000000000 + 560 0.024944627527747 1.275475964320155 3.271693698248402 -6.339750000000000 + 561 -0.006153972181605 -0.537225388402367 -1.136797115880362 -7.006690000000000 + 562 0.115351164708826 -0.273273387153832 -1.610068560197219 -6.791690000000000 + 563 -0.031146800617663 0.489577825171225 0.816380726535266 -8.108350000000000 + 564 -0.041776488443667 -0.233376962728651 -0.353588533139971 -7.985710000000000 + 565 0.051463368619009 -0.231455190881550 -0.286315783550456 -7.871480000000000 + 566 -0.000378667231553 -0.000046436289727 -0.000648264987986 -11.142230000000000 + 567 0.002060382904902 -0.000085522757186 0.003245405919027 -10.630300000000000 + 568 0.067717953078847 -0.073082622741259 0.098139481596340 -8.986409999999999 + 569 -0.045576188207352 0.049703316747136 -0.074440640360559 -9.058820000000001 + 570 0.020361773188839 0.007000925668854 0.041710486108484 -9.802410000000000 + 571 -0.000397678219575 -0.000132326598563 -0.000045222637038 -8.165860000000000 + 572 0.003513251962539 0.001316240346793 0.000561165957495 -8.012919999999999 + 573 -0.016060632533759 -0.022544106865597 -0.013115757903585 -3.854000000000000 + 574 0.005664087872595 0.007187836941735 0.003103518672395 -3.183760000000000 + 575 0.017234669797414 0.026665216781499 0.016178492431189 -3.390400000000000 + 576 -0.024404511981975 0.007501231003616 -0.031438903715566 -9.618240000000000 + 577 0.031623624701734 -0.010601430271069 0.035007724235339 -8.853330000000000 + 578 0.004472016382104 -0.002234250784928 0.007435602400720 -10.290229999999999 + 579 -0.000000213938740 -0.000000052252252 -0.000001291786823 -12.631869999999999 + 580 0.002955445789763 -0.011649704835017 -0.028873023433233 -11.003909999999999 + 581 0.000952491427315 0.005156172544880 0.015131331372804 -11.076079999999999 + 582 -0.001386285581975 0.003977344485086 0.006524278082223 -10.921290000000001 + 583 -0.013660142378109 -0.041491701409661 -0.005193751877120 -7.603370000000000 + 584 -0.136935484256761 0.052730947437845 -0.092447013034401 -6.731100000000000 + 585 -0.015398458686719 0.030090801900495 -0.018647742001948 -8.091480000000001 + 586 -2.280684704199402 3.214930887577100 1.632544292506779 -4.427240000000000 + 587 0.653781812092823 -1.520075585907676 -1.283835921312151 -4.966790000000000 + 588 1.962689721246697 -2.505997586925963 -0.895782782685134 -3.672340000000000 + 589 -0.133669247910182 0.268278092044918 0.155784282676606 -7.113970000000000 + 590 0.114128726085263 -0.237910991766935 -0.091640885381566 -6.172410000000000 + 591 0.010613804898928 -0.010063289702567 0.008493432739520 -7.504180000000000 + 592 -0.000371490106900 -0.002237425857424 -0.001432890231261 -5.798040000000000 + 593 0.000027658974794 0.000256972242692 0.000161111663694 -6.089640000000000 + 594 0.002783531456759 0.016455753911440 0.008637629305435 -4.858220000000000 + 595 -0.662449428422768 0.613661091099604 0.718921987117248 -6.869760000000000 + 596 0.611476073168548 -0.566889885287825 -0.595233896450518 -6.033420000000000 + 597 0.232235948130837 -0.297041739908155 -0.299754112094752 -7.048430000000000 + 598 0.000004911792688 -0.000084889304263 -0.000094283401639 -8.401759999999999 + 599 0.000000002962256 0.000000035535404 0.000000041146283 -8.647420000000000 + 600 0.198797212239951 0.139075646713382 -0.176544975145526 -3.551910000000000 + 601 -0.235400421391555 -0.235970141257892 0.148430142636728 -3.357910000000000 + 602 -0.017670038635666 -0.008672648418524 0.049288962990271 -3.703940000000000 + 603 0.000011884367009 0.000008714700256 0.000003374191887 -2.496460000000000 + 604 0.657801777726127 0.905208100777097 -1.400032982388093 -1.900500000000000 + 605 -0.510354038693768 -0.932557362070799 0.787115128735531 -2.261830000000000 + 606 -0.566859442380366 -0.491443105284532 0.727078821083377 -2.022920000000000 + 607 0.000022758815159 -0.000004329357306 0.000023998352078 -9.904900000000000 + 608 -0.391278087458744 -0.433152475224281 0.264958752068864 -5.035060000000000 + 609 0.163044926308265 0.259024150289760 -0.147610377607309 -5.044780000000000 + 610 0.095055042539538 0.099494397695480 -0.040911160082483 -4.513580000000000 + 611 0.034222269128113 0.033697803576552 -0.011547888854554 -5.473270000000000 + 612 -0.004643353718348 -0.005854879320884 0.002566764214598 -5.749790000000000 + 613 -0.015993088429931 -0.027108773854845 0.009072749763537 -5.316110000000000 + 614 0.000096766063372 0.000048969354717 -0.000101178648981 -9.502700000000001 + 615 -0.004280044175998 -0.001599892122417 0.003884003610179 -8.808840000000000 + 616 -0.467510284445166 -1.863931927809848 1.043884876099687 -4.671740000000000 + 617 0.068091143145752 0.796959318017408 -0.370461604954662 -4.438200000000000 + 618 0.151228500702026 0.696904873289788 -0.534705761675487 -5.616420000000000 + 619 -0.000369555483705 0.000383210004465 -0.001007982295780 -11.313650000000001 + 620 0.000135045065788 -0.000193981490232 0.000388055344748 -11.047890000000001 + 621 -2.858060758611877 -0.222133194172157 1.672009511099692 -4.717190000000000 + 622 1.081461158760355 0.207808681978010 -0.560853927264765 -4.796740000000000 + 623 1.141431137646332 -0.120956556317738 -0.767864888503479 -5.275380000000000 + 624 0.149611444412245 -0.394618862889249 0.317749613483633 -6.439360000000000 + 625 -0.177778340593607 0.481486953186949 -0.400571306224956 -6.138650000000000 + 626 -0.033656772852640 0.038401855432552 -0.034335933706241 -6.790880000000000 + 627 0.003375292259101 0.000918075188511 -0.009897958401889 -11.456200000000001 + 628 -0.000794080464410 -0.000193394479113 0.003386096599844 -11.832340000000000 + 629 0.038016837444791 -0.011669256103525 -0.039464271603706 -9.509020000000000 + 630 -0.014009275882806 -0.009155722479315 0.041339893202753 -10.157760000000000 + 631 -0.007570382929585 -0.011021391907860 0.054332531353027 -9.948499999999999 + 632 -0.233126089929407 0.000289295610762 0.203465603524517 -7.492460000000000 + 633 0.172308081730765 0.033279447740201 -0.186982225073506 -7.586010000000000 + 634 0.058784217581317 0.000318688243053 -0.038500335381624 -7.124830000000000 + 635 0.015791908764951 0.047953305242514 -0.051742668550907 -8.748780000000000 + 636 -0.018236790139482 -0.039741056788747 0.044506995138482 -8.147620000000000 + 637 -0.006183792176198 -0.012151419145670 0.014053188535737 -9.030360000000000 + 638 0.002048667170739 0.002378975980168 -0.002965672357818 -9.260410000000000 + 639 -0.000870745567416 -0.000764074964840 0.001094162445623 -9.301750000000000 + 640 -0.005542694402298 -0.006815035257573 0.006942451807674 -8.337790000000000 + 641 -0.162945905652564 -0.692325621278213 0.954944282172970 -7.440850000000000 + 642 0.098923052430367 0.622901164772176 -0.856006491026413 -6.788690000000000 + 643 -0.000813124226427 0.180074267976775 -0.256372271976686 -8.183800000000000 + 644 -0.018999296240202 0.017794936569004 -0.111854754664136 -10.355549999999999 + 645 0.004336479667715 -0.002278243002953 0.028790548737841 -11.090510000000000 + 646 0.011996980884549 -0.009849644137114 0.042476957146940 -10.354600000000000 + 647 0.009193782866540 0.011730852295155 -0.006587228111944 -3.854000000000000 + 648 0.001055439522930 0.002148972579764 0.005607798665684 -3.183760000000000 + 649 -0.002768939886898 -0.003666939617861 0.002168225869093 -3.390400000000000 + 650 0.120116832506907 -0.204017743917567 0.869302946022013 -9.016050000000000 + 651 -0.035410526588705 0.076094153682970 -0.187413229209774 -9.428310000000000 + 652 -0.029175244643092 0.035206867454588 -0.182448971375654 -9.748810000000001 + 653 -0.915866587737797 -0.130690665119795 2.374905109730449 -7.180090000000000 + 654 0.769975213724169 0.130545826577490 -1.309768373949379 -6.417460000000000 + 655 0.286733113829698 0.214964850704283 -0.984292680990359 -7.599780000000000 + 656 -0.047548417572141 -0.034956886390518 0.146454507539665 -9.495120000000000 + 657 0.083321088243900 0.021400864302944 -0.226361385196351 -9.093050000000000 + 658 -0.001792456257894 0.008953205535033 -0.016951430821112 -10.067440000000000 + 659 -0.000008250197490 -0.000001340186841 0.000026889929414 -10.542520000000000 + 660 -0.000025362345207 -0.000001504171045 0.000031247598555 -10.449740000000000 + 661 -0.000021008671861 0.000049264780969 -0.000062668493885 -10.294430000000000 + 662 0.000000001574089 -0.000000006014436 0.000000007377109 -10.452510000000000 + 663 -0.053251718999074 0.119678868451530 -0.097897275319889 -7.401410000000000 + 664 0.035791869393301 -0.058036883499977 0.037507843214989 -6.814950000000000 + 665 0.014219721843127 -0.032017594390360 0.031513286372967 -8.264740000000000 + 666 -3.020915108443974 -3.310253760352892 2.267735476480613 -3.707350000000000 + 667 0.902295522088323 1.428627732020240 -0.895054147868653 -4.089580000000000 + 668 1.570514730846484 0.970723459336427 -1.226695493738042 -4.280190000000000 + 669 -0.440085104250784 -0.335357207900161 0.537447911441637 -6.952720000000000 + 670 0.195328847525031 0.222260198953268 -0.337448366985451 -7.224460000000000 + 671 0.247859490071765 0.207089018798567 -0.240904970646926 -6.231990000000000 + 672 -0.001978421086248 -0.000412108970393 0.002744302199189 -8.601500000000000 + 673 -0.000025016648692 -0.000361950269331 0.000424664988519 -10.124150000000000 + 674 -1.892955507483657 -1.862288193530141 -0.863944993520516 -1.519360000000000 + 675 0.610458336663620 0.841365662226024 0.225584179745723 -1.588150000000000 + 676 1.175739774026278 1.213493730963131 0.075454008581298 -2.391750000000000 + 677 -0.128374588870405 -0.335645251614280 0.031189022159357 -2.702850000000000 + 678 0.008282844788410 0.045770573961852 -0.003739400054261 -2.496460000000000 + 679 0.038846445031167 0.117271747295096 -0.030499934923293 -3.656110000000000 + 680 0.000059427829889 0.000376494835198 -0.000247085779361 -8.098929999999999 + 681 -0.001374854555670 -0.006351424879241 0.004728846887297 -8.127170000000000 + 682 -0.074769885947109 0.020264386089333 -0.063809739921754 -7.399710000000000 + 683 -0.098434778284052 0.104602363247176 -0.099651369385328 -6.910990000000000 + 684 0.052311872097535 -0.030487867103501 0.035368257315226 -6.825370000000000 + 685 0.000000000000000 0.000000000000000 0.000000000000000 8.635899999999999 + 686 0.000000000000000 0.000000000000000 0.000000000000000 9.496340000000000 + 687 0.000000000000000 0.000000000000000 0.000000000000000 9.012810000000000 + 688 0.000000000000000 0.000000000000000 0.000000000000000 11.747460000000000 + 689 0.000000000000000 0.000000000000000 0.000000000000000 11.928220000000000 + 690 0.000000000000000 0.000000000000000 0.000000000000000 12.833950000000000 + 691 0.000000000000000 0.000000000000000 0.000000000000000 13.742880000000000 + 692 0.000000000000000 0.000000000000000 0.000000000000000 6.726180000000000 + 693 0.000000000000000 0.000000000000000 0.000000000000000 5.618590000000000 + 694 0.000000000000000 0.000000000000000 0.000000000000000 4.758930000000000 + 695 0.000000000000000 0.000000000000000 0.000000000000000 2.957400000000000 + 696 0.000000000000000 0.000000000000000 0.000000000000000 2.395910000000000 + 697 0.000000000000000 0.000000000000000 0.000000000000000 11.977670000000000 + 698 0.000000000000000 0.000000000000000 0.000000000000000 11.771260000000000 + 699 0.000000000000000 0.000000000000000 0.000000000000000 11.965320000000000 + 700 0.000000000000000 0.000000000000000 0.000000000000000 7.732290000000000 + 701 0.000000000000000 0.000000000000000 0.000000000000000 7.814800000000000 + 702 0.000000000000000 0.000000000000000 0.000000000000000 5.622190000000000 + 703 0.000000000000000 0.000000000000000 0.000000000000000 6.336600000000000 + 704 0.000000000000000 0.000000000000000 0.000000000000000 -5.695180000000000 + 705 0.000000000000000 0.000000000000000 0.000000000000000 -6.458580000000000 + 706 0.000000000000000 0.000000000000000 0.000000000000000 -9.259610000000000 + 707 0.000000000000000 0.000000000000000 0.000000000000000 -9.609059999999999 + 708 0.000000000000000 0.000000000000000 0.000000000000000 -2.268980000000000 + 709 0.000000000000000 0.000000000000000 0.000000000000000 -2.430460000000000 + 710 0.000000000000000 0.000000000000000 0.000000000000000 1.612550000000000 + 711 0.000000000000000 0.000000000000000 0.000000000000000 2.485140000000000 + 712 0.000000000000000 0.000000000000000 0.000000000000000 -6.313790000000000 + 713 0.000000000000000 0.000000000000000 0.000000000000000 -1.317610000000000 + 714 0.000000000000000 0.000000000000000 0.000000000000000 -1.349160000000000 + 715 0.000000000000000 0.000000000000000 0.000000000000000 -0.852160000000000 + 716 0.000000000000000 0.000000000000000 0.000000000000000 -4.971830000000000 + 717 0.000000000000000 0.000000000000000 0.000000000000000 7.136820000000000 + 718 0.000000000000000 0.000000000000000 0.000000000000000 3.766450000000000 + 719 0.000000000000000 0.000000000000000 0.000000000000000 3.117710000000000 + 720 0.000000000000000 0.000000000000000 0.000000000000000 -5.543180000000000 + 721 0.000000000000000 0.000000000000000 0.000000000000000 -6.485230000000000 + 722 0.000000000000000 0.000000000000000 0.000000000000000 0.296920000000000 + 723 0.000000000000000 0.000000000000000 0.000000000000000 0.002790000000000 + 724 0.000000000000000 0.000000000000000 0.000000000000000 2.880020000000000 + 725 0.000000000000000 0.000000000000000 0.000000000000000 4.108620000000000 + 726 0.000000000000000 0.000000000000000 0.000000000000000 3.640810000000000 + 727 0.000000000000000 0.000000000000000 0.000000000000000 -6.605600000000000 + 728 0.000000000000000 0.000000000000000 0.000000000000000 -6.644380000000000 + 729 0.000000000000000 0.000000000000000 0.000000000000000 -0.441520000000000 + 730 0.000000000000000 0.000000000000000 0.000000000000000 0.467410000000000 + 731 0.000000000000000 0.000000000000000 0.000000000000000 7.103050000000000 + 732 0.000000000000000 0.000000000000000 0.000000000000000 7.242050000000000 + 733 0.000000000000000 0.000000000000000 0.000000000000000 3.616350000000000 + 734 0.000000000000000 0.000000000000000 0.000000000000000 -5.245640000000000 + 735 0.000000000000000 0.000000000000000 0.000000000000000 -6.084870000000000 + 736 0.000000000000000 0.000000000000000 0.000000000000000 0.296920000000000 + 737 0.000000000000000 0.000000000000000 0.000000000000000 1.125100000000000 + 738 0.000000000000000 0.000000000000000 0.000000000000000 -2.822110000000000 + 739 0.000000000000000 0.000000000000000 0.000000000000000 -1.985890000000000 + 740 0.000000000000000 0.000000000000000 0.000000000000000 3.780350000000000 + 741 0.000000000000000 0.000000000000000 0.000000000000000 3.208030000000000 + 742 0.000000000000000 0.000000000000000 0.000000000000000 -6.835910000000000 + 743 0.000000000000000 0.000000000000000 0.000000000000000 2.134110000000000 + 744 0.000000000000000 0.000000000000000 0.000000000000000 -0.687840000000000 + 745 0.000000000000000 0.000000000000000 0.000000000000000 -1.398510000000000 + 746 0.000000000000000 0.000000000000000 0.000000000000000 -4.420620000000000 + 747 0.000000000000000 0.000000000000000 0.000000000000000 -4.545610000000000 + 748 0.000000000000000 0.000000000000000 0.000000000000000 -7.473150000000000 + 749 0.000000000000000 0.000000000000000 0.000000000000000 -10.658300000000001 + 750 0.000000000000000 0.000000000000000 0.000000000000000 -9.634660000000000 + 751 0.000000000000000 0.000000000000000 0.000000000000000 -11.276350000000001 + 752 0.000000000000000 0.000000000000000 0.000000000000000 -11.967430000000000 + 753 0.000000000000000 0.000000000000000 0.000000000000000 -8.926290000000000 + 754 0.000000000000000 0.000000000000000 0.000000000000000 -13.140770000000000 + 755 0.000000000000000 0.000000000000000 0.000000000000000 -13.120469999999999 + 756 0.000000000000000 0.000000000000000 0.000000000000000 -9.209870000000000 + 757 0.000000000000000 0.000000000000000 0.000000000000000 -2.702850000000000 + 758 0.000000000000000 0.000000000000000 0.000000000000000 -3.656110000000000 + 759 0.000000000000000 0.000000000000000 0.000000000000000 -10.221550000000001 + 760 0.000000000000000 0.000000000000000 0.000000000000000 -10.206920000000000 + 761 0.000000000000000 0.000000000000000 0.000000000000000 -9.359230000000000 + 762 0.000000000000000 0.000000000000000 0.000000000000000 -12.086140000000000 + 763 0.000000000000000 0.000000000000000 0.000000000000000 -12.153910000000000 + 764 0.000000000000000 0.000000000000000 0.000000000000000 -11.042389999999999 + 765 0.000000000000000 0.000000000000000 0.000000000000000 -11.164500000000000 + 766 0.000000000000000 0.000000000000000 0.000000000000000 -11.139790000000000 + 767 0.000000000000000 0.000000000000000 0.000000000000000 -11.141360000000001 + 768 0.000000000000000 0.000000000000000 0.000000000000000 -10.162400000000000 + 769 0.000000000000000 0.000000000000000 0.000000000000000 -9.436180000000000 + 770 0.000000000000000 0.000000000000000 0.000000000000000 -9.761530000000000 + 771 0.000000000000000 0.000000000000000 0.000000000000000 -10.909630000000000 + 772 0.000000000000000 0.000000000000000 0.000000000000000 -10.890829999999999 + 773 0.000000000000000 0.000000000000000 0.000000000000000 -8.075450000000000 diff --git a/test/library/qmmm_amber/fortran_stub/reaxff_puremd.F03 b/test/library/qmmm_amber/fortran_stub/reaxff_puremd.F03 index dfa29adb..7920792d 100644 --- a/test/library/qmmm_amber/fortran_stub/reaxff_puremd.F03 +++ b/test/library/qmmm_amber/fortran_stub/reaxff_puremd.F03 @@ -213,7 +213,7 @@ contains ! 0.001 threshold for valence angle interactions keyword = "thb_cutoff" // char(0) - values = "0.001" // char(0) + values = "0.005" // char(0) ret = set_control_parameter( handle, c_loc(keyword), c_loc(values) ) if ( ret /= 0_c_int ) stop "ERROR: set_control_parameter" diff --git a/test/library/qmmm_amber/fortran_stub/run_sim.bash b/test/library/qmmm_amber/fortran_stub/run_sim.bash index 6e7d96eb..6a21ea2e 100644 --- a/test/library/qmmm_amber/fortran_stub/run_sim.bash +++ b/test/library/qmmm_amber/fortran_stub/run_sim.bash @@ -7,5 +7,6 @@ PROG="./driver" BGF_FILE="../AVE/fort.3" NUM_QM_ATOMS="14" NUM_MM_ATOMS="759" +LOG_FILE="forces_charges.txt" -"${PROG}" "${BGF_FILE}" "${NUM_QM_ATOMS}" "${NUM_MM_ATOMS}" +"${PROG}" "${BGF_FILE}" "${NUM_QM_ATOMS}" "${NUM_MM_ATOMS}" > "${LOG_FILE}" diff --git a/test/library/qmmm_amber/tester_AVE.py b/test/library/qmmm_amber/tester_AVE.py index f76f6e6f..62ef0978 100644 --- a/test/library/qmmm_amber/tester_AVE.py +++ b/test/library/qmmm_amber/tester_AVE.py @@ -363,7 +363,7 @@ if __name__ == '__main__': setup_qmmm = lib.setup_qmmm setup_qmmm.argtypes = [c_int, POINTER(c_int), POINTER(c_double), c_int, POINTER(c_int), POINTER(c_double), POINTER(c_double), - POINTER(c_double), c_char_p, c_char_p] + c_char_p, c_char_p] setup_qmmm.restype = c_void_p simulate = lib.simulate @@ -436,11 +436,16 @@ if __name__ == '__main__': qm_types = (c_int * num_qm_atoms)(*types[0:num_qm_atoms]) qm_p = (c_double * (3 * num_qm_atoms))(*p[0:(3 * num_qm_atoms)]) mm_types = (c_int * num_mm_atoms)(*types[num_qm_atoms:]) - mm_p = (c_double * (3 * num_mm_atoms))(*p[(3 * num_qm_atoms):]) - mm_q = (c_double * num_mm_atoms)(*q[num_qm_atoms:]) + p_q = [] + for i in range(num_mm_atoms): + p_q.append(p[3 * (num_qm_atoms + i)]) + p_q.append(p[3 * (num_qm_atoms + i) + 1]) + p_q.append(p[3 * (num_qm_atoms + i) + 2]) + p_q.append(q[num_qm_atoms + i]) + mm_p_q = (c_double * (4 * num_mm_atoms))(*p_q) handle = setup_qmmm(c_int(num_qm_atoms), qm_types, qm_p, - c_int(num_mm_atoms), mm_types, mm_p, mm_q, sim_box_info, + c_int(num_mm_atoms), mm_types, mm_p_q, sim_box_info, b"AVE/ffield", None) d = { -- GitLab