Files
LBPM/tests/TestSphereCurvature.cpp
James E McClure 77157a4445 decl
2018-09-09 23:56:45 -04:00

57 lines
1.2 KiB
C++

#include <iostream>
#include <math.h>
#include "analysis/Minkowski.h"
#include "common/Domain.h"
#include "common/SpherePack.h"
using namespace std;
/*
* Compare the measured and analytical curvature for a sphere
*
*/
int main(int argc, char **argv)
{
int i,j,k;
int Nx,Ny,Nz;
double Lx,Ly,Lz;
double fluid_isovalue=0.0;
double solid_isovalue=0.0;
Lx = Ly = Lz = 1.0;
Nx = Ny = Nz = 102;
DoubleArray Phase(Nx,Ny,Nz);
DoubleArray CubeValues(2,2,2);
for (k=0; k<Nz; k++){
for (j=0; j<Ny; j++){
for (i=0; i<Nx; i++){
Phase(i,j,k) = sqrt((1.0*i-0.5*Nx)*(1.0*i-0.5*Nx)+(1.0*j-0.5*Ny)*(1.0*j-0.5*Ny)+(1.0*k-0.5*Nz)*(1.0*k-0.5*Nz))-0.3*Nx;
}
}
}
double wn_curvature_sum = 0.0;
double wn_area_sum = 0.0;
DECL sphere;
for (k=0; k<Nz-1; k++){
for (j=0; j<Ny-1; j++){
for (i=0; i<Nx-1; i++){
sphere.LocalIsosurface(Phase,0.f,i,j,k);
}
}
}
// printf("Mean Curvature Average = %f, Analytical = %f \n", wn_curvature_sum/wn_area_sum, 2.0/rad[0]/101 );
int toReturn = 0;
/* if ( fabs(wn_curvature_sum/wn_area_sum -2.0/rad[0]/101)*rad[0]*101.0*0.5 > 0.01 ){
toReturn = 1;
printf("Mean curvature test error exceeds relative error tolerance \n ");
}
*/
return toReturn;
}