00001 #include "meshholeinfo.h" 00002 00003 MeshHoleInfo::MeshHoleInfo(double pwx,double pwz,double pwy1,double pwy2){ 00004 assert(pwy2 > pwy1); 00005 wx = pwx; 00006 wz = pwz; 00007 wy1 = pwy1; 00008 wy2 = pwy2; 00009 } 00010 00011 00012 bool MeshHoleInfo::isCellInHole(Point3D &p1, Point3D &p2) const 00013 { 00014 assert(p1[X] < p2[X]); 00015 assert(p1[Y] < p2[Y]); 00016 assert(p1[Z] < p2[Z]); 00017 /* if ((wx > p1[X]) && (wx < p2[X]) && (wz > p1[Z]) && (wz < p2[Z])) 00018 { 00019 printf("XZ matches"); 00020 if ( (p1[Y] > wy2) || (p2[Y] < wy2)) 00021 printf("but Y dont"); 00022 else 00023 printf("and Y too"); 00024 }*/ 00025 00026 return ( (wx > p1[X]) && (wx <= p2[X]) && 00027 (wz > p1[Z]) && (wz <= p2[Z]) && 00028 !( (p1[Y] > wy2) || (p2[Y] < wy2))); 00029 00030 00031 } 00032 00042 bool MeshHoleInfo::isPointInViscinity(const Point3D &p,const Point3D &rad) const 00043 { 00044 return (fabs(p[X] - wx) < rad[X]) && (fabs(p[Z] - wz) < rad[Z]) && 00045 (p[Y] > (wy1 - rad[Y])) && (p[Y] < ( wy2 + rad[Y])); 00046 00047 } 00048 00049 00050 double MeshHoleInfo::getNormalVelocityFromInjectionRate(double inj,const Point3D &DX) 00051 { 00052 double dX=DX[X],dY=DX[Y],dZ=DX[Z]; 00053 double totalArea = (floor(wy2/dY) - floor(wy1/dY) + 1)*(2*dZ*dY + 2*dX*dY); 00054 totalArea+=2*dX*dZ; 00055 return inj/totalArea; 00056 }