#include #include #include "params.h" class simuland { private: float dC_dy(int x,int y,int z); float dC_dz(int x,int y,int z); float far ***C,far ***NextC; public: float dx,dy,dz,dt; int nx,ny,nz; float dC_dx(int x,int y,int z); float dC2_dx(int x,int y,int z); float dC2_dy(int x,int y,int z); float dC2_dz(int x,int y,int z); void Start(); void Step(); void End(); }; float simuland::dC_dx(int x,int y,int z) { if (x>0) return (C[x][y][z]-C[x-1][y][z])/dx; else return (C[x+1][y][z]-C[x][y][z])/dx; } float simuland::dC_dy(int x,int y,int z) { if (y>0) return (C[x][y][z]-C[x][y-1][z])/dy; else return (C[x][y+1][z]-C[x][y][z])/dy; } float simuland::dC_dz(int x,int y,int z) { if (z>0) return (C[x][y][z]-C[x][y][z-1])/dz; else return (C[x][y][z+1]-C[x][y][z])/dz; } float simuland::dC2_dx(int x,int y,int z) { if (x>0) return (dC_dx(x,y,z)-dC_dx(x-1,y,z))/dx; else return (dC_dx(x+1,y,z)-dC_dx(x,y,z))/dx; } float simuland::dC2_dy(int x,int y,int z) { if (y>0) return (dC_dy(x,y,z)-dC_dy(x,y-1,z))/dy; else return (dC_dy(x,y+1,z)-dC_dy(x,y,z))/dy; } float simuland::dC2_dz(int x,int y,int z) { if (z>0) return (dC_dz(x,y,z)-dC_dz(x,y,z-1))/dz; else return (dC_dz(x,y,z+1)-dC_dz(x,y,z))/dz; } const float dC=0.5; const float NumFloat=100000.0; void simuland::Start() { int i,j,k; t=0.0; nx=100; ny=10; nz=5; dx=x/(float)nx; dy=y/(float)ny; dz=z/(float)nz; // Lambda currently left out of dt estimation dt=dC/(-(u*dC)/(Rf*dx)+ (Dx*dC*dC)/(Rf*dx*dx)+ (Dy*dC*dC)/(Rf*dy*dy)+ (Dz*dC*dC)/(Rf*dz*dz)); NextC=new float **[nx]; C=new float **[nx]; for (i=0;i