LIS_INT lis_vector_check(LIS_VECTOR v, LIS_INT level) { LIS_DEBUG_FUNC_IN; switch( level ) { case LIS_VECTOR_CHECK_NULL: if( !lis_is_malloc(v) ) { LIS_SETERR(LIS_ERR_ILL_ARG,"vector v is undefined\n"); return LIS_ERR_ILL_ARG; } break; default: if( !lis_is_malloc(v) ) { LIS_SETERR(LIS_ERR_ILL_ARG,"vector v is undefined\n"); return LIS_ERR_ILL_ARG; } if( v->status<=LIS_VECTOR_ASSEMBLING ) { LIS_SETERR(LIS_ERR_ILL_ARG,"vector v is assembling\n"); return LIS_ERR_ILL_ARG; } break; } LIS_DEBUG_FUNC_OUT; return LIS_SUCCESS; }
void lis_vector_is_null_f(LIS_VECTOR_F *vec, LIS_INT *ierr) { LIS_VECTOR v; LIS_DEBUG_FUNC_IN; v = (LIS_VECTOR)LIS_V2P(vec); if( !lis_is_malloc(v) ) { *ierr = LIS_TRUE; } else { if( v->status==LIS_VECTOR_NULL ) { *ierr = LIS_TRUE; } else { *ierr = LIS_FALSE; } } LIS_DEBUG_FUNC_OUT; return; }
LIS_INT lis_vector_destroy(LIS_VECTOR vec) { LIS_DEBUG_FUNC_IN; if( lis_is_malloc(vec) ) { if( vec->value && vec->is_destroy ) lis_free( vec->value ); if( vec->work ) lis_free( vec->work ); if( vec->ranges ) lis_free( vec->ranges ); if( vec ) lis_free(vec); } LIS_DEBUG_FUNC_OUT; return LIS_SUCCESS; }
LIS_INT lis_matrix_ilu_destroy(LIS_MATRIX_ILU A) { LIS_INT i,j; LIS_DEBUG_FUNC_IN; if( lis_is_malloc(A) ) { if( A->bsz ) { for(i=0;i<A->n;i++) { free(A->index[i]); for(j=0;j<A->nnz[i];j++) { free(A->values[i][j]); } if( A->nnz[i]>0 ) free(A->values[i]); } lis_free2(5,A->bsz,A->nnz,A->index,A->values,A->nnz_ma); } else { for(i=0;i<A->n;i++) { if( A->nnz[i]>0 ) { free(A->index[i]); free(A->value[i]); } } lis_free2(4,A->nnz,A->index,A->value,A->nnz_ma); } lis_free(A); } LIS_DEBUG_FUNC_OUT; return LIS_SUCCESS; }