Newer
Older
Kurt A. O'Hearn
committed
/* space for keeping restriction info, if any */
if ( control->restrict_bonds )
{
sfree( workspace->restricted, "Finalize_Workspace::workspace->restricted" );
sfree( workspace->restricted_list, "Finalize_Workspace::workspace->restricted_list" );
}
Kurt A. O'Hearn
committed
#if defined(TEST_FORCES)
Kurt A. O'Hearn
committed
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
sfree( workspace->dDelta, "Finalize_Workspace::workspace->dDelta" );
sfree( workspace->f_ele, "Finalize_Workspace::workspace->f_ele" );
sfree( workspace->f_vdw, "Finalize_Workspace::workspace->f_vdw" );
sfree( workspace->f_bo, "Finalize_Workspace::workspace->f_bo" );
sfree( workspace->f_be, "Finalize_Workspace::workspace->f_be" );
sfree( workspace->f_lp, "Finalize_Workspace::workspace->f_lp" );
sfree( workspace->f_ov, "Finalize_Workspace::workspace->f_ov" );
sfree( workspace->f_un, "Finalize_Workspace::workspace->f_un" );
sfree( workspace->f_ang, "Finalize_Workspace::workspace->f_ang" );
sfree( workspace->f_coa, "Finalize_Workspace::workspace->f_coa" );
sfree( workspace->f_pen, "Finalize_Workspace::workspace->f_pen" );
sfree( workspace->f_hb, "Finalize_Workspace::workspace->f_hb" );
sfree( workspace->f_tor, "Finalize_Workspace::workspace->f_tor" );
sfree( workspace->f_con, "Finalize_Workspace::workspace->f_con" );
sfree( workspace->f_tot, "Finalize_Workspace::workspace->f_tot" );
sfree( workspace->rcounts, "Finalize_Workspace::workspace->rcounts" );
sfree( workspace->displs, "Finalize_Workspace::workspace->displs" );
sfree( workspace->id_all, "Finalize_Workspace::workspace->id_all" );
sfree( workspace->f_all, "Finalize_Workspace::workspace->f_all" );
#endif
}
static void Finalize_Lists( control_params * const control, reax_list ** const lists )
Kurt A. O'Hearn
committed
{
Kurt A. O'Hearn
committed
int i;
for ( i = 0; i < LIST_N; ++i )
Kurt A. O'Hearn
committed
{
Kurt A. O'Hearn
committed
Delete_List( lists[i] );
Kurt A. O'Hearn
committed
sfree( lists[i], "Finalize_Lists::lists[i]" );
Kurt A. O'Hearn
committed
}
}
static void Finalize_MPI_Datatypes( mpi_datatypes * const mpi_data )
Kurt A. O'Hearn
committed
{
int ret;
Deallocate_MPI_Buffers( mpi_data );
ret = MPI_Type_free( &mpi_data->mpi_atom_type );
Kurt A. O'Hearn
committed
Check_MPI_Error( ret, __FILE__, __LINE__ );
Kurt A. O'Hearn
committed
ret = MPI_Type_free( &mpi_data->boundary_atom_type );
Kurt A. O'Hearn
committed
Check_MPI_Error( ret, __FILE__, __LINE__ );
Kurt A. O'Hearn
committed
ret = MPI_Type_free( &mpi_data->mpi_rvec );
Kurt A. O'Hearn
committed
Check_MPI_Error( ret, __FILE__, __LINE__ );
Kurt A. O'Hearn
committed
ret = MPI_Type_free( &mpi_data->mpi_rvec2 );
Kurt A. O'Hearn
committed
Check_MPI_Error( ret, __FILE__, __LINE__ );
Kurt A. O'Hearn
committed
ret = MPI_Type_free( &mpi_data->restart_atom_type );
Kurt A. O'Hearn
committed
Check_MPI_Error( ret, __FILE__, __LINE__ );
Kurt A. O'Hearn
committed
MPI_Comm_free( &mpi_data->comm_mesh3D );
Kurt A. O'Hearn
committed
}
/* Deallocate top-level data structures, close file handles, etc.
*
*/
void Finalize( reax_system * const system, control_params * const control,
simulation_data * const data, storage * const workspace, reax_list ** const lists,
output_controls * const out_control, mpi_datatypes * const mpi_data,
const int output_enabled )
Kurt A. O'Hearn
committed
{
if ( control->tabulate )
{
Finalize_LR_Lookup_Table( system, control, workspace, mpi_data );
}
if ( output_enabled == TRUE )
{
Finalize_Output_Files( system, control, out_control );
}
Finalize_Lists( control, lists );
Kurt A. O'Hearn
committed
Finalize_Workspace( system, control, workspace );
Kurt A. O'Hearn
committed
Finalize_Simulation_Data( system, control, data, out_control );
Finalize_System( system, control, data );
Finalize_MPI_Datatypes( mpi_data );
}