00001 #include "setArrayData.h" 00002 #include "MultiDimArrayAccess.h" 00003 #include <math.h> 00004 #include <iostream.h> 00005 00006 00007 00008 void setArrayDataToConstant( 00009 MultiDimArrayAccess<double,2> &s 00010 , const int *lower, const int *upper 00011 , const double *xlo, const double *xhi, const double *dx 00012 , double value 00013 ) { 00014 for ( int jj=lower[1]; jj<=upper[1]; ++jj) { 00015 for ( int ii=lower[0]; ii<=upper[0]; ++ii ) { 00016 s(jj,ii) = value; 00017 } 00018 } 00019 } 00020 00021 00022 00023 00024 void setArrayDataToCoordinateSum( 00025 double *ptr 00026 , const int *lower 00027 , const int *upper 00028 , const double *xlo, const double *xhi, const double *dx 00029 ) { 00030 MultiDimArrayAccess<double,2> s( ptr , lower , upper , true ); 00031 for ( int jj=lower[1]; jj<=upper[1]; ++jj) { 00032 double y = xlo[1] + dx[1]*(jj-lower[1]+0.5); 00033 for ( int ii=lower[0]; ii<=upper[0]; ++ii ) { 00034 double x = xlo[0] + dx[0]*(ii-lower[0]+0.5); 00035 s(jj,ii) = x + y; 00036 } 00037 } 00038 } 00039 00040 00041 00042 00043 void setArrayDataToSinusoidal( 00044 MultiDimArrayAccess<double,2> &s 00045 , const int *lower 00046 , const int *upper 00047 , const double *xlo, const double *xhi, const double *dx 00048 ) { 00049 for ( int jj=lower[1]; jj<=upper[1]; ++jj) { 00050 double y = xlo[1] + dx[1]*(jj-lower[1]+0.5); 00051 double siny = sin(2*M_PI*y); 00052 for ( int ii=lower[0]; ii<=upper[0]; ++ii ) { 00053 double x = xlo[0] + dx[0]*(ii-lower[0]+0.5); 00054 double sinx = sin(2*M_PI*x); 00055 s(jj,ii) = sinx * siny; 00056 } 00057 } 00058 } 00059 00060 00061 00062 00063 void setArrayDataToSinusoidalGradient( 00064 double *gx_ptr, double *gy_ptr 00065 , const int *lower 00066 , const int *upper 00067 , const double *xlo, const double *xhi, const double *dx 00068 ) { 00069 MultiDimArrayAccess<double,2> gx( gx_ptr , lower , upper , true ); 00070 MultiDimArrayAccess<double,2> gy( gy_ptr , lower , upper , true ); 00071 for ( int jj=lower[1]; jj<=upper[1]; ++jj) { 00072 double y = xlo[1] + dx[1]*(jj-lower[1]+0.5); 00073 double siny = sin(2*M_PI*y); 00074 double cosy = cos(2*M_PI*y); 00075 for ( int ii=lower[0]; ii<=upper[0]; ++ii ) { 00076 double x = xlo[0] + dx[0]*(ii-lower[0]+0.5); 00077 double sinx = sin(2*M_PI*x); 00078 double cosx = cos(2*M_PI*x); 00079 gx(jj,ii) = 2*M_PI*cosx * siny; 00080 gy(jj,ii) = sinx * 2*M_PI*cosy; 00081 } 00082 } 00083 } 00084 00085 00086 00087 00088 void setArrayDataToScaled( 00089 MultiDimArrayAccess<double,2> &s 00090 , const int *lower, const int *upper 00091 , double factor 00092 ) { 00093 for ( int jj=lower[1]; jj<=upper[1]; ++jj) { 00094 for ( int ii=lower[0]; ii<=upper[0]; ++ii ) { 00095 s(jj,ii) *= factor; 00096 } 00097 } 00098 }