21#include "fasp_functs.h"
43 for ( i = 0; i < u->
row; i++ ) {
44 if ( isnan(u->
val[i]) )
return TRUE;
147 if ( u == NULL )
return;
166 if ( u == NULL )
return;
201 for ( i = 0; i < n; ++i ) {
202 j = 1 + (
INT) (((
REAL)n)*rand()/(RAND_MAX+1.0));
203 x->
val[i] = (((
REAL)j)-va)/(vb-va);
229 if ( n > 0 ) x->
row = n;
234 INT myid, mybegin, myend;
235 INT nthreads = fasp_get_num_threads();
242#pragma omp parallel for private(myid, mybegin, myend)
243 for (myid = 0; myid < nthreads; myid++ ) {
245 memset(&xpt[mybegin], 0x0,
sizeof(
REAL)*(myend-mybegin));
250 memset(xpt, 0x0,
sizeof(
REAL)*n);
261#pragma omp parallel for private(myid, mybegin, myend)
262 for (myid = 0; myid < nthreads; myid++ ) {
264 for (i=mybegin; i<myend; ++i) xpt[i]=val;
269 for (i=0; i<n; ++i) xpt[i]=val;
298 if ( n > 0 ) u->
row = n;
304 nthreads = fasp_get_num_threads();
309 INT mybegin, myend, myid;
311#pragma omp parallel for private(myid, mybegin, myend, i)
313 for (myid = 0; myid < nthreads; myid++ ) {
315 for (i=mybegin; i<myend; ++i) u->
val[i] = m;
319 for (i=0; i<n; ++i) u->
val[i] = m;
360 const INT length = x->
row;
365 REAL Linf = 0.0, diffi = 0.0;
368 INT myid, mybegin, myend, nthreads;
371 nthreads = fasp_get_num_threads();
378#pragma omp parallel firstprivate(temp) private(myid, mybegin, myend, i, diffi)
380 myid = omp_get_thread_num();
382 for(i=mybegin; i<myend; i++) {
383 if ((diffi =
ABS(xpt[i]-ypt[i])) > temp) temp = diffi;
386 if(temp > Linf) Linf = temp;
391 for (i=0; i<length; ++i) {
392 if ((diffi =
ABS(xpt[i]-ypt[i])) > Linf) Linf = diffi;
421 if ( diag->
row != n ) {
422 printf(
"### ERROR: Sizes of diag = %d != dvector = %d!", diag->
row, n);
427 INT mybegin, myend, myid, nthreads;
430 nthreads = fasp_get_num_threads();
436#pragma omp parallel for private(myid, mybegin,myend)
437 for (myid = 0; myid < nthreads; myid++ ) {
439 for (i=mybegin; i<myend; ++i) val[i] = val[i]/sqrt(diag->
val[i]);
444 for (i=0; i<n; ++i) val[i] = val[i]/sqrt(diag->
val[i]);
void fasp_mem_free(void *mem)
Free up previous allocated memory body and set pointer to NULL.
void * fasp_mem_calloc(const unsigned int size, const unsigned int type)
Allocate, initiate, and check memory.
void fasp_chkerr(const SHORT status, const char *fctname)
Check error status and print out error messages before quit.
void fasp_get_start_end(const INT procid, const INT nprocs, const INT n, INT *start, INT *end)
Assign Load to each thread.
void fasp_dvec_free(dvector *u)
Free vector data space of REAL type.
void fasp_ivec_free(ivector *u)
Free vector data space of INT type.
void fasp_ivec_alloc(const INT m, ivector *u)
Create vector data space of INT type.
dvector fasp_dvec_create(const INT m)
Create dvector data space of REAL type.
ivector fasp_ivec_create(const INT m)
Create vector data space of INT type.
void fasp_dvec_rand(const INT n, dvector *x)
Generate fake random REAL vector in the range from 0 to 1.
void fasp_ivec_set(INT n, ivector *u, const INT m)
Set ivector value to be m.
void fasp_dvec_set(INT n, dvector *x, const REAL val)
Initialize dvector x[i]=val for i=0:n-1.
REAL fasp_dvec_maxdiff(const dvector *x, const dvector *y)
Maximal difference of two dvector x and y.
void fasp_dvec_alloc(const INT m, dvector *u)
Create dvector data space of REAL type.
void fasp_dvec_cp(const dvector *x, dvector *y)
Copy dvector x to dvector y.
void fasp_dvec_symdiagscale(dvector *b, const dvector *diag)
Symmetric diagonal scaling D^{-1/2}b.
SHORT fasp_dvec_isnan(const dvector *u)
Check a dvector whether there is NAN.
Main header file for the FASP project.
#define SHORT
FASP integer and floating point numbers.
#define TRUE
Definition of logic type.
Vector with n entries of REAL type.
REAL * val
actual vector entries
Vector with n entries of INT type.
INT * val
actual vector entries