blob: 210dc7726cc2ed50797c0a4df75a9477e6790b9e [file] [log] [blame]
#include "HPC_Sparse_Matrix.hpp"
#ifdef USING_MPI
#include <mpi.h>
#endif
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void destroyMatrix(HPC_Sparse_Matrix * &A)
{
if(A->title)
{
delete [] A->title;
}
if(A->nnz_in_row)
{
delete [] A->nnz_in_row;
}
if(A->list_of_vals)
{
delete [] A->list_of_vals;
}
if(A->ptr_to_vals_in_row !=0)
{
delete [] A->ptr_to_vals_in_row;
}
if(A->list_of_inds)
{
delete [] A->list_of_inds;
}
if(A->ptr_to_inds_in_row !=0)
{
delete [] A->ptr_to_inds_in_row;
}
if(A->ptr_to_diags)
{
delete [] A->ptr_to_diags;
}
#ifdef USING_MPI
if(A->external_index)
{
delete [] A->external_index;
}
if(A->external_local_index)
{
delete [] A->external_local_index;
}
if(A->elements_to_send)
{
delete [] A->elements_to_send;
}
if(A->neighbors)
{
delete [] A->neighbors;
}
if(A->recv_length)
{
delete [] A->recv_length;
}
if(A->send_length)
{
delete [] A->send_length;
}
if(A->send_buffer)
{
delete [] A->send_buffer;
}
#endif
delete A;
A = 0;
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#ifdef USING_SHAREDMEM_MPI
#ifndef SHAREDMEM_ALTERNATIVE
void destroySharedMemMatrix(HPC_Sparse_Matrix * &A)
{
if(A==0)
{
return; //noop
}
if(A->title)
{
delete [] A->title;
}
if(A->nnz_in_row)
{
MPI_Comm_free_mem(MPI_COMM_NODE,A->nnz_in_row);
}
if(A->list_of_vals)
{
MPI_Comm_free_mem(MPI_COMM_NODE,A->list_of_vals);
}
if(A->ptr_to_vals_in_row !=0)
{
MPI_Comm_free_mem(MPI_COMM_NODE,A->ptr_to_vals_in_row);
}
if(A->list_of_inds)
{
MPI_Comm_free_mem(MPI_COMM_NODE,A->list_of_inds);
}
if(A->ptr_to_inds_in_row !=0)
{
MPI_Comm_free_mem(MPI_COMM_NODE,A->ptr_to_inds_in_row);
}
// currently not allocated with shared memory
if(A->ptr_to_diags)
{
delete [] A->ptr_to_diags;
}
#ifdef USING_MPI
if(A->external_index)
{
delete [] A->external_index;
}
if(A->external_local_index)
{
delete [] A->external_local_index;
}
if(A->elements_to_send)
{
delete [] A->elements_to_send;
}
if(A->neighbors)
{
delete [] A->neighbors;
}
if(A->recv_length)
{
delete [] A->recv_length;
}
if(A->send_length)
{
delete [] A->send_length;
}
if(A->send_buffer)
{
delete [] A->send_buffer;
}
#endif
MPI_Comm_free_mem(MPI_COMM_NODE,A); A=0;
}
#endif
#endif
////////////////////////////////////////////////////////////////////////////////