void ElectrostaticSystem::saveFile(std::string fileName) const { std::ofstream outputFile; outputFile.open(fileName.c_str()); for(int j=jMin; j<=jMax; j++) { for(int i=iMin; i<=iMax; i++) { outputFile << getPotentialIJ(i, j) << " "; } outputFile << "\n"; } outputFile.close(); }
void SolvedElectrostaticSystem::findField() { fieldX = doubleGrid::Zero(iMax-iMin+1, jMax-jMin+1); // X components of field fieldY = doubleGrid::Zero(iMax-iMin+1, jMax-jMin+1); // Y components of field field = doubleGrid::Zero(iMax-iMin+1, jMax-jMin+1); // Magnitude of field for(int i=iMin; i<=iMax; i++) { for(int j=jMin; j<=jMax; j++) { // Components in i direction if(i==iMax) fieldX(i-iMin, j-jMin) = getPotentialIJ(i,j) - getPotentialIJ(i-1,j); else if(i==iMin) fieldX(i-iMin, j-jMin) = getPotentialIJ(i+1,j) -getPotentialIJ(i,j); else fieldX(i-iMin, j-jMin) = (getPotentialIJ(i+1,j)-getPotentialIJ(i-1,j))/2; // Components in j direction if(j==jMax) fieldY(i-iMin, j-jMin) = getPotentialIJ(i,j) - getPotentialIJ(i,j-1); else if(j==jMin) fieldY(i-iMin, j-jMin) = getPotentialIJ(i,j+1) -getPotentialIJ(i,j); else fieldY(i-iMin, j-jMin) = (getPotentialIJ(i,j+1)-getPotentialIJ(i,j-1))/2; // Full field field(i-iMin, j-jMin) = sqrt( pow(fieldX(i-iMin, j-jMin), 2) + pow(fieldY(i-iMin, j-jMin), 2) ); } } fieldFound = true; }