git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@11904 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -25,23 +25,6 @@
|
||||
----------------------------------------------------------------------*/
|
||||
|
||||
#include "pair_reax_c.h"
|
||||
#if defined(PURE_REAX)
|
||||
#include "forces.h"
|
||||
#include "bond_orders.h"
|
||||
#include "bonds.h"
|
||||
#include "basic_comm.h"
|
||||
#include "hydrogen_bonds.h"
|
||||
#include "io_tools.h"
|
||||
#include "list.h"
|
||||
#include "lookup.h"
|
||||
#include "multi_body.h"
|
||||
#include "nonbonded.h"
|
||||
#include "qEq.h"
|
||||
#include "tool_box.h"
|
||||
#include "torsion_angles.h"
|
||||
#include "valence_angles.h"
|
||||
#include "vector.h"
|
||||
#elif defined(LAMMPS_REAX)
|
||||
#include "reaxc_forces.h"
|
||||
#include "reaxc_bond_orders.h"
|
||||
#include "reaxc_bonds.h"
|
||||
@ -56,7 +39,6 @@
|
||||
#include "reaxc_torsion_angles.h"
|
||||
#include "reaxc_valence_angles.h"
|
||||
#include "reaxc_vector.h"
|
||||
#endif
|
||||
|
||||
interaction_function Interaction_Functions[NUM_INTRS];
|
||||
|
||||
@ -91,23 +73,10 @@ void Compute_Bonded_Forces( reax_system *system, control_params *control,
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Mark beginning of a new timestep in bonded energy files */
|
||||
#if defined(TEST_ENERGY)
|
||||
Debug_Marker_Bonded( out_control, data->step );
|
||||
#endif
|
||||
|
||||
/* Implement all force calls as function pointers */
|
||||
for( i = 0; i < NUM_INTRS; i++ ) {
|
||||
#if defined(DEBUG)
|
||||
fprintf( stderr, "p%d: starting f%d\n", system->my_rank, i );
|
||||
MPI_Barrier( comm );
|
||||
#endif
|
||||
(Interaction_Functions[i])( system, control, data, workspace,
|
||||
lists, out_control );
|
||||
#if defined(DEBUG)
|
||||
fprintf( stderr, "p%d: f%d done\n", system->my_rank, i );
|
||||
MPI_Barrier( comm );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,10 +86,6 @@ void Compute_NonBonded_Forces( reax_system *system, control_params *control,
|
||||
reax_list **lists, output_controls *out_control,
|
||||
MPI_Comm comm )
|
||||
{
|
||||
/* Mark beginning of a new timestep in nonbonded energy files */
|
||||
#if defined(TEST_ENERGY)
|
||||
Debug_Marker_Nonbonded( out_control, data->step );
|
||||
#endif
|
||||
|
||||
/* van der Waals and Coulomb interactions */
|
||||
if( control->tabulate == 0 )
|
||||
@ -129,18 +94,9 @@ void Compute_NonBonded_Forces( reax_system *system, control_params *control,
|
||||
else
|
||||
Tabulated_vdW_Coulomb_Energy( system, control, data, workspace,
|
||||
lists, out_control );
|
||||
|
||||
#if defined(DEBUG)
|
||||
fprintf( stderr, "p%d: nonbonded forces done\n", system->my_rank );
|
||||
MPI_Barrier( comm );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* this version of Compute_Total_Force computes forces from
|
||||
coefficients accumulated by all interaction functions.
|
||||
Saves enormous time & space! */
|
||||
void Compute_Total_Force( reax_system *system, control_params *control,
|
||||
simulation_data *data, storage *workspace,
|
||||
reax_list **lists, mpi_datatypes *mpi_data )
|
||||
@ -157,33 +113,6 @@ void Compute_Total_Force( reax_system *system, control_params *control,
|
||||
Add_dBond_to_Forces_NPT( i, pj, data, workspace, lists );
|
||||
}
|
||||
|
||||
//Print_Total_Force( system, data, workspace );
|
||||
#if defined(PURE_REAX)
|
||||
/* now all forces are computed to their partially-final values
|
||||
based on the neighbors information each processor has had.
|
||||
final values of force on each atom needs to be computed by adding up
|
||||
all partially-final pieces */
|
||||
Coll( system, mpi_data, workspace->f, mpi_data->mpi_rvec,
|
||||
sizeof(rvec)/sizeof(void), rvec_unpacker );
|
||||
for( i = 0; i < system->n; ++i )
|
||||
rvec_Copy( system->my_atoms[i].f, workspace->f[i] );
|
||||
|
||||
#if defined(TEST_FORCES)
|
||||
Coll( system, mpi_data, workspace->f_ele, mpi_data->mpi_rvec, rvec_unpacker);
|
||||
Coll( system, mpi_data, workspace->f_vdw, mpi_data->mpi_rvec, rvec_unpacker);
|
||||
Coll( system, mpi_data, workspace->f_be, mpi_data->mpi_rvec, rvec_unpacker );
|
||||
Coll( system, mpi_data, workspace->f_lp, mpi_data->mpi_rvec, rvec_unpacker );
|
||||
Coll( system, mpi_data, workspace->f_ov, mpi_data->mpi_rvec, rvec_unpacker );
|
||||
Coll( system, mpi_data, workspace->f_un, mpi_data->mpi_rvec, rvec_unpacker );
|
||||
Coll( system, mpi_data, workspace->f_ang, mpi_data->mpi_rvec, rvec_unpacker);
|
||||
Coll( system, mpi_data, workspace->f_coa, mpi_data->mpi_rvec, rvec_unpacker);
|
||||
Coll( system, mpi_data, workspace->f_pen, mpi_data->mpi_rvec, rvec_unpacker);
|
||||
Coll( system, mpi_data, workspace->f_hb, mpi_data->mpi_rvec, rvec_unpacker );
|
||||
Coll( system, mpi_data, workspace->f_tor, mpi_data->mpi_rvec, rvec_unpacker);
|
||||
Coll( system, mpi_data, workspace->f_con, mpi_data->mpi_rvec, rvec_unpacker);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
void Validate_Lists( reax_system *system, storage *workspace, reax_list **lists,
|
||||
@ -201,12 +130,8 @@ void Validate_Lists( reax_system *system, storage *workspace, reax_list **lists,
|
||||
bonds = *lists + BONDS;
|
||||
|
||||
for( i = 0; i < N; ++i ) {
|
||||
// if( i < n ) - we need to update ghost estimates for delayed nbrings
|
||||
system->my_atoms[i].num_bonds = MAX(Num_Entries(i,bonds)*2, MIN_BONDS);
|
||||
|
||||
//if( End_Index(i, bonds) >= Start_Index(i+1, bonds)-2 )
|
||||
//workspace->realloc.bonds = 1;
|
||||
|
||||
if( i < N-1 )
|
||||
comp = Start_Index(i+1, bonds);
|
||||
else comp = bonds->num_intrs;
|
||||
@ -315,7 +240,6 @@ void Init_Forces( reax_system *system, control_params *control,
|
||||
workspace->bond_mark[i] = 0;
|
||||
for( i = system->n; i < system->N; ++i ) {
|
||||
workspace->bond_mark[i] = 1000; // put ghost atoms to an infinite distance
|
||||
//workspace->done_after[i] = Start_Index( i, far_nbrs );
|
||||
}
|
||||
|
||||
H = workspace->H;
|
||||
@ -329,6 +253,7 @@ void Init_Forces( reax_system *system, control_params *control,
|
||||
for( i = 0; i < system->N; ++i ) {
|
||||
atom_i = &(system->my_atoms[i]);
|
||||
type_i = atom_i->type;
|
||||
if (type_i < 0) continue;
|
||||
start_i = Start_Index(i, far_nbrs);
|
||||
end_i = End_Index(i, far_nbrs);
|
||||
btop_i = End_Index( i, bonds );
|
||||
@ -364,11 +289,6 @@ void Init_Forces( reax_system *system, control_params *control,
|
||||
nbr_pj = &( far_nbrs->select.far_nbr_list[pj] );
|
||||
j = nbr_pj->nbr;
|
||||
atom_j = &(system->my_atoms[j]);
|
||||
//fprintf( stderr, "%d%d i=%d x_i: %f %f %f,j=%d x_j: %f %f %f, d=%f\n",
|
||||
// MIN(atom_i->orig_id, atom_j->orig_id),
|
||||
// MAX(atom_i->orig_id, atom_j->orig_id),
|
||||
// i, atom_i->x[0], atom_i->x[1], atom_i->x[2],
|
||||
// j, atom_j->x[0], atom_j->x[1], atom_j->x[2], nbr_pj->d );
|
||||
if( renbr ) {
|
||||
if(nbr_pj->d <= cutoff)
|
||||
flag = 1;
|
||||
@ -390,6 +310,7 @@ void Init_Forces( reax_system *system, control_params *control,
|
||||
|
||||
if( flag ){
|
||||
type_j = atom_j->type;
|
||||
if (type_j < 0) continue;
|
||||
r_ij = nbr_pj->d;
|
||||
sbp_j = &(system->reax_param.sbp[type_j]);
|
||||
twbp = &(system->reax_param.tbp[type_i][type_j]);
|
||||
@ -398,11 +319,6 @@ void Init_Forces( reax_system *system, control_params *control,
|
||||
/* H matrix entry */
|
||||
if( j < system->n || atom_i->orig_id < atom_j->orig_id ) {//tryQEq||1
|
||||
H->entries[Htop].j = j;
|
||||
//fprintf( stdout, "%d%d %d %d\n",
|
||||
// MIN(atom_i->orig_id, atom_j->orig_id),
|
||||
// MAX(atom_i->orig_id, atom_j->orig_id),
|
||||
// MIN(atom_i->orig_id, atom_j->orig_id),
|
||||
// MAX(atom_i->orig_id, atom_j->orig_id) );
|
||||
if( control->tabulate == 0 )
|
||||
H->entries[Htop].val = Compute_H(r_ij,twbp->gamma,workspace->Tap);
|
||||
else H->entries[Htop].val = Compute_tabH(r_ij, type_i, type_j);
|
||||
@ -412,7 +328,6 @@ void Init_Forces( reax_system *system, control_params *control,
|
||||
/* hydrogen bond lists */
|
||||
if( control->hbond_cut > 0 && (ihb==1 || ihb==2) &&
|
||||
nbr_pj->d <= control->hbond_cut ) {
|
||||
// fprintf( stderr, "%d %d\n", atom1, atom2 );
|
||||
jhb = sbp_j->p_hbond;
|
||||
if( ihb == 1 && jhb == 2 ) {
|
||||
hbonds->select.hbond_list[ihb_top].nbr = j;
|
||||
@ -444,11 +359,7 @@ void Init_Forces( reax_system *system, control_params *control,
|
||||
workspace->bond_mark[j] = workspace->bond_mark[i] + 1;
|
||||
else if( workspace->bond_mark[i] > workspace->bond_mark[j] + 1 ) {
|
||||
workspace->bond_mark[i] = workspace->bond_mark[j] + 1;
|
||||
//if( workspace->bond_mark[i] == 1000 )
|
||||
// workspace->done_after[i] = pj;
|
||||
}
|
||||
//fprintf( stdout, "%d%d - %d(%d) %d(%d)\n",
|
||||
// i , j, i, workspace->bond_mark[i], j, workspace->bond_mark[j] );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -461,77 +372,10 @@ void Init_Forces( reax_system *system, control_params *control,
|
||||
}
|
||||
}
|
||||
|
||||
//fprintf( stderr, "after the first init loop\n" );
|
||||
/*for( i = system->n; i < system->N; ++i )
|
||||
if( workspace->bond_mark[i] > 3 ) {
|
||||
start_i = Start_Index(i, bonds);
|
||||
end_i = End_Index(i, bonds);
|
||||
num_bonds -= (end_i - start_i);
|
||||
Set_End_Index(i, start_i, bonds );
|
||||
}*/
|
||||
|
||||
/*for( i = system->n; i < system->N; ++i ) {
|
||||
start_i = Start_Index(i, far_nbrs);
|
||||
end_i = workspace->done_after[i];
|
||||
|
||||
if( workspace->bond_mark[i] >= 2 && start_i < end_i ) {
|
||||
atom_i = &(system->my_atoms[i]);
|
||||
type_i = atom_i->type;
|
||||
btop_i = End_Index( i, bonds );
|
||||
sbp_i = &(system->reax_param.sbp[type_i]);
|
||||
|
||||
for( pj = start_i; pj < end_i; ++pj ) {
|
||||
nbr_pj = &( far_nbrs->select.far_nbr_list[pj] );
|
||||
j = nbr_pj->nbr;
|
||||
|
||||
if( workspace->bond_mark[j] >= 2 && nbr_pj->d <= control->bond_cut ) {
|
||||
atom_j = &(system->my_atoms[j]);
|
||||
type_j = atom_j->type;
|
||||
sbp_j = &(system->reax_param.sbp[type_j]);
|
||||
twbp = &(system->reax_param.tbp[type_i][type_j]);
|
||||
|
||||
if( BOp( workspace, bonds, control->bo_cut,
|
||||
i , btop_i, nbr_pj, sbp_i, sbp_j, twbp ) ) {
|
||||
num_bonds += 2;
|
||||
++btop_i;
|
||||
|
||||
if( workspace->bond_mark[j] > workspace->bond_mark[i] + 1 )
|
||||
workspace->bond_mark[j] = workspace->bond_mark[i] + 1;
|
||||
else if( workspace->bond_mark[i] > workspace->bond_mark[j] + 1 )
|
||||
workspace->bond_mark[i] = workspace->bond_mark[j] + 1;
|
||||
|
||||
//fprintf( stdout, "%d%d - %d(%d) %d(%d) new\n",
|
||||
// i , j, i, workspace->bond_mark[i], j, workspace->bond_mark[j] );
|
||||
}
|
||||
}
|
||||
}
|
||||
Set_End_Index( i, btop_i, bonds );
|
||||
}
|
||||
}*/
|
||||
|
||||
workspace->realloc.Htop = Htop;
|
||||
workspace->realloc.num_bonds = num_bonds;
|
||||
workspace->realloc.num_hbonds = num_hbonds;
|
||||
|
||||
#if defined(DEBUG_FOCUS)
|
||||
fprintf( stderr, "p%d @ step%d: Htop = %d num_bonds = %d num_hbonds = %d\n",
|
||||
system->my_rank, data->step, Htop, num_bonds, num_hbonds );
|
||||
MPI_Barrier( comm );
|
||||
#endif
|
||||
#if defined( DEBUG )
|
||||
Print_Bonds( system, bonds, "debugbonds.out" );
|
||||
Print_Bond_List2( system, bonds, "pbonds.out" );
|
||||
Print_Sparse_Matrix( system, H );
|
||||
for( i = 0; i < H->n; ++i )
|
||||
for( j = H->start[i]; j < H->end[i]; ++j )
|
||||
fprintf( stderr, "%d %d %.15e\n",
|
||||
MIN(system->my_atoms[i].orig_id,
|
||||
system->my_atoms[H->entries[j].j].orig_id),
|
||||
MAX(system->my_atoms[i].orig_id,
|
||||
system->my_atoms[H->entries[j].j].orig_id),
|
||||
H->entries[j].val );
|
||||
#endif
|
||||
|
||||
Validate_Lists( system, workspace, lists, data->step,
|
||||
system->n, system->N, system->numH, comm );
|
||||
}
|
||||
@ -562,7 +406,6 @@ void Init_Forces_noQEq( reax_system *system, control_params *control,
|
||||
workspace->bond_mark[i] = 0;
|
||||
for( i = system->n; i < system->N; ++i ) {
|
||||
workspace->bond_mark[i] = 1000; // put ghost atoms to an infinite distance
|
||||
//workspace->done_after[i] = Start_Index( i, far_nbrs );
|
||||
}
|
||||
|
||||
num_bonds = 0;
|
||||
@ -573,6 +416,7 @@ void Init_Forces_noQEq( reax_system *system, control_params *control,
|
||||
for( i = 0; i < system->N; ++i ) {
|
||||
atom_i = &(system->my_atoms[i]);
|
||||
type_i = atom_i->type;
|
||||
if (type_i < 0) continue;
|
||||
start_i = Start_Index(i, far_nbrs);
|
||||
end_i = End_Index(i, far_nbrs);
|
||||
btop_i = End_Index( i, bonds );
|
||||
@ -623,6 +467,7 @@ void Init_Forces_noQEq( reax_system *system, control_params *control,
|
||||
|
||||
if( flag ) {
|
||||
type_j = atom_j->type;
|
||||
if (type_j < 0) continue;
|
||||
r_ij = nbr_pj->d;
|
||||
sbp_j = &(system->reax_param.sbp[type_j]);
|
||||
twbp = &(system->reax_param.tbp[type_i][type_j]);
|
||||
@ -651,8 +496,6 @@ void Init_Forces_noQEq( reax_system *system, control_params *control,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* uncorrected bond orders */
|
||||
if( //(workspace->bond_mark[i] < 3 || workspace->bond_mark[j] < 3) &&
|
||||
nbr_pj->d <= control->bond_cut &&
|
||||
BOp( workspace, bonds, control->bo_cut,
|
||||
@ -664,11 +507,7 @@ void Init_Forces_noQEq( reax_system *system, control_params *control,
|
||||
workspace->bond_mark[j] = workspace->bond_mark[i] + 1;
|
||||
else if( workspace->bond_mark[i] > workspace->bond_mark[j] + 1 ) {
|
||||
workspace->bond_mark[i] = workspace->bond_mark[j] + 1;
|
||||
//if( workspace->bond_mark[i] == 1000 )
|
||||
// workspace->done_after[i] = pj;
|
||||
}
|
||||
//fprintf( stdout, "%d%d - %d(%d) %d(%d)\n",
|
||||
// i , j, i, workspace->bond_mark[i], j, workspace->bond_mark[j] );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -678,27 +517,10 @@ void Init_Forces_noQEq( reax_system *system, control_params *control,
|
||||
Set_End_Index( atom_i->Hindex, ihb_top, hbonds );
|
||||
}
|
||||
|
||||
/*for( i = system->n; i < system->N; ++i )
|
||||
if( workspace->bond_mark[i] > 3 ) {
|
||||
start_i = Start_Index(i, bonds);
|
||||
end_i = End_Index(i, bonds);
|
||||
num_bonds -= (end_i - start_i);
|
||||
Set_End_Index(i, start_i, bonds );
|
||||
}*/
|
||||
|
||||
workspace->realloc.num_bonds = num_bonds;
|
||||
workspace->realloc.num_hbonds = num_hbonds;
|
||||
|
||||
#if defined(DEBUG_FOCUS)
|
||||
fprintf( stderr, "p%d @ step%d: num_bonds = %d num_hbonds = %d\n",
|
||||
system->my_rank, data->step, num_bonds, num_hbonds );
|
||||
MPI_Barrier( comm );
|
||||
#endif
|
||||
#if defined( DEBUG )
|
||||
Print_Bonds( system, bonds, "debugbonds.out" );
|
||||
Print_Bond_List2( system, bonds, "pbonds.out" );
|
||||
#endif
|
||||
|
||||
Validate_Lists( system, workspace, lists, data->step,
|
||||
system->n, system->N, system->numH, comm );
|
||||
}
|
||||
@ -736,6 +558,7 @@ void Estimate_Storages( reax_system *system, control_params *control,
|
||||
for( i = 0; i < system->N; ++i ) {
|
||||
atom_i = &(system->my_atoms[i]);
|
||||
type_i = atom_i->type;
|
||||
if (type_i < 0) continue;
|
||||
start_i = Start_Index(i, far_nbrs);
|
||||
end_i = End_Index(i, far_nbrs);
|
||||
sbp_i = &(system->reax_param.sbp[type_i]);
|
||||
@ -759,6 +582,7 @@ void Estimate_Storages( reax_system *system, control_params *control,
|
||||
|
||||
if(nbr_pj->d <= cutoff) {
|
||||
type_j = system->my_atoms[j].type;
|
||||
if (type_j < 0) continue;
|
||||
r_ij = nbr_pj->d;
|
||||
sbp_j = &(system->reax_param.sbp[type_j]);
|
||||
twbp = &(system->reax_param.tbp[type_i][type_j]);
|
||||
@ -818,16 +642,9 @@ void Estimate_Storages( reax_system *system, control_params *control,
|
||||
|
||||
for( i = 0; i < system->N; ++i ) {
|
||||
*num_3body += SQR(bond_top[i]);
|
||||
//if( i < system->n )
|
||||
bond_top[i] = MAX( bond_top[i] * 2, MIN_BONDS );
|
||||
//else bond_top[i] = MAX_BONDS;
|
||||
}
|
||||
|
||||
#if defined(DEBUG_FOCUS)
|
||||
fprintf( stderr, "p%d @ estimate storages: Htop = %d, num_3body = %d\n",
|
||||
system->my_rank, *Htop, *num_3body );
|
||||
MPI_Barrier( comm );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -838,23 +655,9 @@ void Compute_Forces( reax_system *system, control_params *control,
|
||||
{
|
||||
MPI_Comm comm;
|
||||
int qeq_flag;
|
||||
#if defined(LOG_PERFORMANCE)
|
||||
real t_start = 0;
|
||||
|
||||
//MPI_Barrier( mpi_data->world );
|
||||
if( system->my_rank == MASTER_NODE )
|
||||
t_start = Get_Time( );
|
||||
#endif
|
||||
|
||||
comm = mpi_data->world;
|
||||
/********* init forces ************/
|
||||
#if defined(PURE_REAX)
|
||||
if( control->qeq_freq && (data->step-data->prev_steps)%control->qeq_freq==0 )
|
||||
qeq_flag = 1;
|
||||
else qeq_flag = 0;
|
||||
#elif defined(LAMMPS_REAX)
|
||||
qeq_flag = 0;
|
||||
#endif
|
||||
|
||||
if( qeq_flag )
|
||||
Init_Forces( system, control, data, workspace, lists, out_control, comm );
|
||||
@ -862,79 +665,16 @@ void Compute_Forces( reax_system *system, control_params *control,
|
||||
Init_Forces_noQEq( system, control, data, workspace,
|
||||
lists, out_control, comm );
|
||||
|
||||
#if defined(LOG_PERFORMANCE)
|
||||
//MPI_Barrier( mpi_data->world );
|
||||
if( system->my_rank == MASTER_NODE )
|
||||
Update_Timing_Info( &t_start, &(data->timing.init_forces) );
|
||||
#endif
|
||||
|
||||
|
||||
/********* bonded interactions ************/
|
||||
Compute_Bonded_Forces( system, control, data, workspace,
|
||||
lists, out_control, mpi_data->world );
|
||||
|
||||
#if defined(LOG_PERFORMANCE)
|
||||
//MPI_Barrier( mpi_data->world );
|
||||
if( system->my_rank == MASTER_NODE )
|
||||
Update_Timing_Info( &t_start, &(data->timing.bonded) );
|
||||
#endif
|
||||
#if defined(DEBUG_FOCUS)
|
||||
fprintf( stderr, "p%d @ step%d: completed bonded\n",
|
||||
system->my_rank, data->step );
|
||||
MPI_Barrier( mpi_data->world );
|
||||
#endif
|
||||
|
||||
|
||||
/**************** qeq ************************/
|
||||
#if defined(PURE_REAX)
|
||||
if( qeq_flag )
|
||||
QEq( system, control, data, workspace, out_control, mpi_data );
|
||||
|
||||
#if defined(LOG_PERFORMANCE)
|
||||
//MPI_Barrier( mpi_data->world );
|
||||
if( system->my_rank == MASTER_NODE )
|
||||
Update_Timing_Info( &t_start, &(data->timing.qEq) );
|
||||
#endif
|
||||
#if defined(DEBUG_FOCUS)
|
||||
fprintf(stderr, "p%d @ step%d: qeq completed\n", system->my_rank, data->step);
|
||||
MPI_Barrier( mpi_data->world );
|
||||
#endif
|
||||
#endif //PURE_REAX
|
||||
|
||||
|
||||
/********* nonbonded interactions ************/
|
||||
Compute_NonBonded_Forces( system, control, data, workspace,
|
||||
lists, out_control, mpi_data->world );
|
||||
|
||||
#if defined(LOG_PERFORMANCE)
|
||||
//MPI_Barrier( mpi_data->world );
|
||||
if( system->my_rank == MASTER_NODE )
|
||||
Update_Timing_Info( &t_start, &(data->timing.nonb) );
|
||||
#endif
|
||||
#if defined(DEBUG_FOCUS)
|
||||
fprintf( stderr, "p%d @ step%d: nonbonded forces completed\n",
|
||||
system->my_rank, data->step );
|
||||
MPI_Barrier( mpi_data->world );
|
||||
#endif
|
||||
|
||||
|
||||
/*********** total force ***************/
|
||||
Compute_Total_Force( system, control, data, workspace, lists, mpi_data );
|
||||
|
||||
#if defined(LOG_PERFORMANCE)
|
||||
//MPI_Barrier( mpi_data->world );
|
||||
if( system->my_rank == MASTER_NODE )
|
||||
Update_Timing_Info( &t_start, &(data->timing.bonded) );
|
||||
#endif
|
||||
#if defined(DEBUG_FOCUS)
|
||||
fprintf( stderr, "p%d @ step%d: total forces computed\n",
|
||||
system->my_rank, data->step );
|
||||
//Print_Total_Force( system, data, workspace );
|
||||
MPI_Barrier( mpi_data->world );
|
||||
#endif
|
||||
|
||||
#if defined(TEST_FORCES)
|
||||
Print_Force_Files( system, control, data, workspace,
|
||||
lists, out_control, mpi_data );
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user