diff options
-rw-r--r-- | DisplayClass.cpp | 2 | ||||
-rw-r--r-- | Temparray.cpp | 74 |
2 files changed, 54 insertions, 22 deletions
diff --git a/DisplayClass.cpp b/DisplayClass.cpp index 712251a..b04c11c 100644 --- a/DisplayClass.cpp +++ b/DisplayClass.cpp @@ -75,7 +75,7 @@ void DisplayClass::renderScene(unsigned long delta) { glRotatef(-angle*5, 1.0, 1.0, 1.0); - Temparray temp(20, x, y, z); + static Temparray temp(20, x, y, z); triangles=temp.getTriangles(); temp.calcTemp(); diff --git a/Temparray.cpp b/Temparray.cpp index b47cf4b..5894e63 100644 --- a/Temparray.cpp +++ b/Temparray.cpp @@ -39,10 +39,12 @@ Temparray::Temparray(float initialtemp, int x0, int y0, int z0){ void Temparray::calcTemp(){ float specificconductivity = 0.7; - float areasmall, areabig, distance, capacity, capacity2, volume, thermalresistance, tau12, tau21; + float areasmall, area, areabig, distance, capacity, capacity2, capacity3, volume, thermalresistance, + thermalresistance2, tau12, tau21, tau13, tau31; float meterperunit = 3.0; float width, height, depth, innerwidth, innerdepth; float width2, height2, depth2, innerwidth2, innerdepth2; + float width3, height3, depth3, innerwidth3, innerdepth3; for(int i = 0; i < sx; ++i) { for(int j = 0; j < sy; ++j) { @@ -51,61 +53,91 @@ void Temparray::calcTemp(){ for(int m = 0; m < 4; m++) { width = cubehole(i, j, k, l).getWidth(); width2 = cubehole(i, j, k, l-1).getWidth(); + if(l!=5)width3 = cubehole(i, j, k, l+1).getWidth(); height = cubehole(i, j, k, l).getHeight(); height2 = cubehole(i, j, k, l-1).getHeight(); + if(l!=5)height3 = cubehole(i, j, k, l+1).getHeight(); depth = cubehole(i, j, k, l).getDepth(); depth2 = cubehole(i, j, k, l-1).getDepth(); + if(l!=5)depth3 = cubehole(i, j, k, l+1).getDepth(); innerwidth = cubehole(i, j, k, l).getInnerWidth(); innerwidth2 = cubehole(i, j, k, l-1).getInnerWidth(); + if(l!=5)innerwidth3 = cubehole(i, j, k, l+1).getInnerWidth(); innerdepth = cubehole(i, j, k, l).getInnerDepth(); innerdepth2 = cubehole(i, j, k, l-1).getInnerDepth(); + if(l!=5)innerdepth3 = cubehole(i, j, k, l+1).getInnerDepth(); if(m % 2 == 0) { - areasmall = (((width + innerwidth)/2)*height) / 0.9 * meterperunit; + if(l!=5)areasmall = (((width3 + innerwidth3)/2)*height3) / 0.9 * meterperunit; + area = (((width + innerwidth)/2)*height) / 0.9 * meterperunit; areabig = (((width2 + innerwidth2)/2)*height2) / 0.9 * meterperunit; thermalresistance = ((depth2 / 2 - (depth2 - innerdepth2)/4) - (depth / 2 - (depth - innerdepth)/4)) / 0.9 * meterperunit / - (specificconductivity * ((areasmall + areabig) / 2)); + (specificconductivity * ((area + areabig) / 2)); + if(l!=5)thermalresistance2 = ((depth / 2 - (depth - innerdepth)/4)- + (depth3 / 2 - (depth3 - innerdepth3)/4)) / 0.9 * meterperunit / + (specificconductivity * ((area + areasmall) / 2)); - capacity = specificconductivity *((((width + innerwidth)/2)*height)/0.9*meterperunit); - capacity2 = specificconductivity *((((width2 + innerwidth2)/2)*height2)/0.9*meterperunit); + capacity = specificconductivity *((((depth + innerdepth)/2)*((width + innerwidth)/2)* + height)/0.9*meterperunit); + capacity2 = specificconductivity *((((depth2 + innerdepth2)/2)*((width2 + innerwidth2)/2)* + height2)/0.9*meterperunit); + if(l!=5)capacity3 = specificconductivity *((((depth3 + innerdepth3)/2)*((width3 + innerwidth3)/2)* + height3)/0.9*meterperunit); } else if(m % 2 == 1) { - areasmall = (((depth + innerdepth)/2)*height) / 0.9 * meterperunit; + if(l!=5)areasmall = (((depth3 + innerdepth3)/2)*height3) / 0.9 * meterperunit; + area = (((depth + innerdepth)/2)*height) / 0.9 * meterperunit; areabig = (((depth2 + innerdepth2)/2)*height2) / 0.9 * meterperunit; thermalresistance = ((width2 / 2 - (width2 - innerwidth2)/4) - (width / 2 - (width - innerwidth)/4)) / 0.9 * meterperunit / - (specificconductivity * ((areasmall + areabig) / 2)); + (specificconductivity * ((area + areabig) / 2)); + if(l!=5)thermalresistance2 = ((width / 2 - (width - innerwidth)/4) - + (width3 / 2 - (width3 - innerwidth3)/4)) / 0.9 * meterperunit / + (specificconductivity * ((area + areasmall) / 2)); - capacity = specificconductivity *((((depth + innerdepth)/2)*height)/0.9*meterperunit); - capacity2 = specificconductivity *((((depth2 + innerdepth2)/2)*height2)/0.9*meterperunit); + capacity = specificconductivity *((((depth + innerdepth)/2)*((width + innerwidth)/2)* + height)/0.9*meterperunit); + capacity2 = specificconductivity *((((depth2 + innerdepth2)/2)*((width2 + innerwidth2)/2)* + height2)/0.9*meterperunit); + if(l!=5) + capacity3 = specificconductivity *((((depth3 + innerdepth3)/2)*((width3 + innerwidth3)/2)* + height3)/0.9*meterperunit); } tau12 = capacity * thermalresistance; tau21 = capacity2 * thermalresistance; + if(l!=5)tau13 = capacity * thermalresistance; + if(l!=5)tau31 = capacity3 * thermalresistance2; - temperaturenew(i, j, k, l, m) = - temperatureold(i, j, k, l, m) - ((temperatureold(i, j, k, l, m) - - temperatureold(i, j, k, l-1, m))*(1-exp(1/tau12))); - temperaturenew(i, j, k, l-1, m) = - temperatureold(i, j, k, l-1, m) + ((temperatureold(i, j, k, l, m) - - temperatureold(i, j, k, l-1, m))*(1-exp(1/tau21))); - - + temperatureold(i, j, k, l, m) = + temperatureold(i, j, k, l, m) + ((temperatureold(i, j, k, l, m) - + temperatureold(i, j, k, l-1, m))*(-exp(-(1/tau12)))); + temperatureold(i, j, k, l-1, m) = + temperatureold(i, j, k, l-1, m) - ((temperatureold(i, j, k, l, m) - + temperatureold(i, j, k, l-1, m))*(-exp(-(1/tau21)))); + + if(l!=5)temperatureold(i, j, k, l, m) = + temperatureold(i, j, k, l, m) + ((temperatureold(i, j, k, l, m) - + temperatureold(i, j, k, l+1, m))*(-exp(-(1/tau13)))); + if(l!=5)temperatureold(i, j, k, l+1, m) = + temperatureold(i, j, k, l+1, m) - ((temperatureold(i, j, k, l, m) - + temperatureold(i, j, k, l+1, m))*(-exp(-(1/tau31)))); } } } } } - for(int i = 0; i < sx; ++i) { + /*for(int i = 0; i < sx; ++i) { for(int j = 0; j < sy; ++j) { for(int k = 0; k < sz; ++k) { for(int l = 0; l < 6; ++l) { - for(int m = 0; m < 4; m++) {temperatureold(i, j, k, l, m)=temperaturenew(i, j, k, l, m);}}}}} - std::cerr << temperaturenew(2, 2, 2, 2, 2) << std::endl; - std::cerr << temperaturenew(2, 2, 2, 3, 2) << std::endl; + for(int m = 0; m < 4; m++) {temperatureold(i, j, k, l, m)=temperaturenew(i, j, k, l, m);}}}}}*/ + std::cerr << temperatureold(2, 2, 2, 1, 2) << std::endl; + std::cerr << temperatureold(2, 2, 2, 2, 2) << std::endl; + std::cerr << temperatureold(2, 2, 2, 3, 2) << std::endl; } std::list<Triangle> Temparray::getTriangles(){ |