방위각 절대치 적용 #269

Merged
ysCha merged 1 commits from dev into prd-deploy 2025-12-17 18:45:12 +09:00

View File

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