diff --git a/src/main/java/com/interplug/qcast/biz/pwrGnrSimulation/PwrGnrSimService.java b/src/main/java/com/interplug/qcast/biz/pwrGnrSimulation/PwrGnrSimService.java index 0c4325e3..0016689d 100644 --- a/src/main/java/com/interplug/qcast/biz/pwrGnrSimulation/PwrGnrSimService.java +++ b/src/main/java/com/interplug/qcast/biz/pwrGnrSimulation/PwrGnrSimService.java @@ -253,9 +253,10 @@ public class PwrGnrSimService { } else { // 각도 dKoubai[i] = (2 * Math.PI) * (Double.parseDouble(data.getSlopeAngle()) / 360); } - - // dHoui[i] = Math.abs((2 * Math.PI) * (Double.parseDouble(data.getAzimuth()) / 360)); - dHoui[i] = (2 * Math.PI) * (Double.parseDouble(data.getAzimuth()) / 360); + //초기 계산식 - 절대치인정 + dHoui[i] = Math.abs((2 * Math.PI) * (Double.parseDouble(data.getAzimuth()) / 360)); + //변경된 계산식 - 절대치 불인정 + //dHoui[i] = (2 * Math.PI) * (Double.parseDouble(data.getAzimuth()) / 360); // 지붕별 모듈정보 셋팅 int j = 0; for (PwrGnrSimRoofResponse m : moduleGroupList) { @@ -867,11 +868,11 @@ public class PwrGnrSimService { // houi[rad]을 [도]로 변환 houi = (houi / (2 * Math.PI)) * 360; - // 電力ピークカット(houi 절대값으로 변경) + // 電力ピークカット double watt_peakcut_result = - ((matrix_multiply1 * (Math.cos(Math.abs(houi) * Math.PI / 180) + 1) + matrix_multiply2) < 0.1) + ((matrix_multiply1 * (Math.cos(houi * Math.PI / 180) + 1) + matrix_multiply2) < 0.1) ? 0.1 - : (matrix_multiply1 * (Math.cos(Math.abs(houi) * Math.PI / 180) + 1) + matrix_multiply2); + : (matrix_multiply1 * (Math.cos(houi * Math.PI / 180) + 1) + matrix_multiply2); //////////// // pcs1과 모듈 1의 전류차 구하기 용도 @@ -987,26 +988,23 @@ public class PwrGnrSimService { int sekisairitsu_ceil = (int) Math.ceil(sekisairitsu / 5.0) * 5; double pcs_henkankouritsu = (pcsHenkankouritsu * 1000 <= 985) ? Math.ceil(pcsHenkankouritsu * 1000 / 5) * 5 : 985; - int a = 1, b = 1; - - for(int i = 1 ; i < 37 ; i++){ - a++;//pcs効率によるピークカットデータベースから積載率の一致する行番号取得 - if(sekisairitsu_ceil == peakcut_by_pcs_data.get(i).get(0)){ + int i; + for (i = 1; i < 37; i++) { // pcs効率によるピークカットデータベースから積載率の一致する行番号取得 + if (sekisairitsu_ceil == peakcut_by_pcs_data.get(i).get(0)) { break; - }; - }; + } + } - for(int j = 1 ; j < 15 ; j++){ - b++;//pcs効率によるピークカットデータベースから積載率の一致する列番号取得 - if(pcs_henkankouritsu == peakcut_by_pcs_data.get(0).get(j)){ + int j; + for (j = 1; j < 15; j++) { // pcs効率によるピークカットデータベースから積載率の一致する列番号取得 + if (pcs_henkankouritsu == peakcut_by_pcs_data.get(0).get(j)) { break; - }; - }; - - double peakcut_by_pcs = peakcut_by_pcs_data.get(a).get(b); //ピークカット率を代入 - double peakcut_by_pcs_kijun = peakcut_by_pcs_data.get(a).get(10); //基準ピークカット率(変換効率0.965)を代入 - double peakcut_by_pcs_result = peakcut_by_pcs_kijun - peakcut_by_pcs; //ピークカット率と基準ピークカット率の差分を代入 + } + } + double peakcut_by_pcs = peakcut_by_pcs_data.get(i).get(j); // ピークカット率を代入 + double peakcut_by_pcs_kijun = peakcut_by_pcs_data.get(i).get(10); // 基準ピークカット率(変換効率0.965)を代入 + double peakcut_by_pcs_result = peakcut_by_pcs_kijun - peakcut_by_pcs; // ピークカット率と基準ピークカット率の差分を代入 if(((100 - watt_peakcut_result + peakcut_by_pcs_result) /100) < 1){ @@ -1869,20 +1867,20 @@ public class PwrGnrSimService { // + Math.cos(taiyousekii[i]) * Math.sin(koubai) * Math.sin(houi) * // Math.sin(jikakudo[i][j]))); // System.err.println( " " ); - //houi 절대값으로 변경 + cosTheta[m][j] = Math.max( 0, (Math.sin(latlng[i][0]) * Math.cos(koubai) - - Math.cos(latlng[i][0]) * Math.sin(koubai) * Math.cos(Math.abs(houi))) + - Math.cos(latlng[i][0]) * Math.sin(koubai) * Math.cos(houi)) * Math.sin(taiyousekii[i]) + (Math.cos(latlng[i][0]) * Math.cos(koubai) - + Math.sin(latlng[i][0]) * Math.sin(koubai) * Math.cos(Math.abs(houi))) + + Math.sin(latlng[i][0]) * Math.sin(koubai) * Math.cos(houi)) * Math.cos(taiyousekii[i]) * Math.cos(jikakudo[i][j]) + Math.cos(taiyousekii[i]) * Math.sin(koubai) - * Math.sin(Math.abs(houi)) + * Math.sin(houi) * Math.sin(jikakudo[i][j])); rb[m][j] = (cosThetaZ[i][j] == 0) ? 0 : cosTheta[m][j] / cosThetaZ[i][j];