Skip to content

Commit baa1c9d

Browse files
committed
Fix Hessian indexing problems in line limits
1 parent 718359f commit baa1c9d

File tree

1 file changed

+48
-51
lines changed

1 file changed

+48
-51
lines changed

src/opflow/model/power_bal_hiop/pbpolrajahiopsparsekernels.cpp

Lines changed: 48 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,86 +1560,85 @@ PetscErrorCode OPFLOWComputeSparseHessian_PBPOLRAJAHIOPSPARSE(
15601560
int *xidxt = lineparams->xidxt_dev_;
15611561
int *ln_hessp_idx = lineparams->hesssp_idx_dev_;
15621562
int *linelimidx = lineparams->linelimidx_dev_;
1563-
1563+
15641564
RAJA::forall<exago_raja_exec>(
15651565
RAJA::RangeSegment(0, lineparams->nlinelim),
15661566
RAJA_LAMBDA(RAJA::Index_type i) {
15671567
int off(0);
1568-
int j = linelimidx[i];
15691568

15701569
// from-bus diagonal entries already defined
15711570

1572-
// iHSS_dev[ln_hessp_idx[i] + off] = xidxf[j];
1573-
// jHSS_dev[ln_hessp_idx[i] + off] = xidxf[j];
1571+
// iHSS_dev[ln_hessp_idx[i] + off] = xidxf[i];
1572+
// jHSS_dev[ln_hessp_idx[i] + off] = xidxf[i];
15741573
// off++;
15751574

1576-
// iHSS_dev[ln_hessp_idx[i] + off] = xidxf[j];
1577-
// jHSS_dev[ln_hessp_idx[i] + off] = xidxf[j] + 1;
1575+
// iHSS_dev[ln_hessp_idx[i] + off] = xidxf[i];
1576+
// jHSS_dev[ln_hessp_idx[i] + off] = xidxf[i] + 1;
15781577
// off++;
15791578

1580-
// iHSS_dev[ln_hessp_idx[i] + off] = xidxf[j] + 1;
1581-
// jHSS_dev[ln_hessp_idx[i] + off] = xidxf[j];
1579+
// iHSS_dev[ln_hessp_idx[i] + off] = xidxf[i] + 1;
1580+
// jHSS_dev[ln_hessp_idx[i] + off] = xidxf[i];
15821581
// off++;
15831582

1584-
// iHSS_dev[ln_hessp_idx[i] + off] = xidxf[j] + 1;
1585-
// jHSS_dev[ln_hessp_idx[i] + off] = xidxf[j] + 1;
1583+
// iHSS_dev[ln_hessp_idx[i] + off] = xidxf[i] + 1;
1584+
// jHSS_dev[ln_hessp_idx[i] + off] = xidxf[i] + 1;
15861585
// off++;
15871586

15881587
// from-bus off diagonal entries only there if in upper part
1589-
if (xidxt[j] > xidxf[j]) {
1588+
if (xidxt[i] > xidxf[i]) {
15901589

1591-
iHSS_dev[ln_hessp_idx[i] + off] = xidxf[j];
1592-
jHSS_dev[ln_hessp_idx[i] + off] = xidxt[j];
1590+
iHSS_dev[ln_hessp_idx[i] + off] = xidxf[i];
1591+
jHSS_dev[ln_hessp_idx[i] + off] = xidxt[i];
15931592
off++;
15941593

1595-
iHSS_dev[ln_hessp_idx[i] + off] = xidxf[j];
1596-
jHSS_dev[ln_hessp_idx[i] + off] = xidxt[j] + 1;
1594+
iHSS_dev[ln_hessp_idx[i] + off] = xidxf[i];
1595+
jHSS_dev[ln_hessp_idx[i] + off] = xidxt[i] + 1;
15971596
off++;
15981597

1599-
iHSS_dev[ln_hessp_idx[i] + off] = xidxf[j] + 1;
1600-
jHSS_dev[ln_hessp_idx[i] + off] = xidxt[j];
1598+
iHSS_dev[ln_hessp_idx[i] + off] = xidxf[i] + 1;
1599+
jHSS_dev[ln_hessp_idx[i] + off] = xidxt[i];
16011600
off++;
16021601

1603-
iHSS_dev[ln_hessp_idx[i] + off] = xidxf[j] + 1;
1604-
jHSS_dev[ln_hessp_idx[i] + off] = xidxt[j] + 1;
1602+
iHSS_dev[ln_hessp_idx[i] + off] = xidxf[i] + 1;
1603+
jHSS_dev[ln_hessp_idx[i] + off] = xidxt[i] + 1;
16051604
off++;
16061605
}
16071606

16081607
// to-bus diagonal entries already defined
16091608

1610-
// iHSS_dev[ln_hessp_idx[i] + off] = xidxt[j];
1611-
// jHSS_dev[ln_hessp_idx[i] + off] = xidxt[j];
1609+
// iHSS_dev[ln_hessp_idx[i] + off] = xidxt[i];
1610+
// jHSS_dev[ln_hessp_idx[i] + off] = xidxt[i];
16121611
// off++;
16131612

1614-
// iHSS_dev[ln_hessp_idx[i] + off] = xidxt[j];
1615-
// jHSS_dev[ln_hessp_idx[i] + off] = xidxt[j] + 1;
1613+
// iHSS_dev[ln_hessp_idx[i] + off] = xidxt[i];
1614+
// jHSS_dev[ln_hessp_idx[i] + off] = xidxt[i] + 1;
16161615
// off++;
16171616

1618-
// iHSS_dev[ln_hessp_idx[i] + off] = xidxt[j] + 1;
1619-
// jHSS_dev[ln_hessp_idx[i] + off] = xidxt[j];
1617+
// iHSS_dev[ln_hessp_idx[i] + off] = xidxt[i] + 1;
1618+
// jHSS_dev[ln_hessp_idx[i] + off] = xidxt[i];
16201619
// off++;
16211620

1622-
// iHSS_dev[ln_hessp_idx[i] + off] = xidxt[j] + 1;
1623-
// jHSS_dev[ln_hessp_idx[i] + off] = xidxt[j] + 1;
1621+
// iHSS_dev[ln_hessp_idx[i] + off] = xidxt[i] + 1;
1622+
// jHSS_dev[ln_hessp_idx[i] + off] = xidxt[i] + 1;
16241623
// off++;
16251624

16261625
// to-bus off diagonal entries only there if in upper part
1627-
if (xidxf[j] > xidxt[j]) {
1626+
if (xidxf[i] > xidxt[i]) {
16281627

1629-
iHSS_dev[ln_hessp_idx[i] + off] = xidxt[j];
1630-
jHSS_dev[ln_hessp_idx[i] + off] = xidxf[j];
1628+
iHSS_dev[ln_hessp_idx[i] + off] = xidxt[i];
1629+
jHSS_dev[ln_hessp_idx[i] + off] = xidxf[i];
16311630
off++;
16321631

1633-
iHSS_dev[ln_hessp_idx[i] + off] = xidxt[j];
1634-
jHSS_dev[ln_hessp_idx[i] + off] = xidxf[j] + 1;
1632+
iHSS_dev[ln_hessp_idx[i] + off] = xidxt[i];
1633+
jHSS_dev[ln_hessp_idx[i] + off] = xidxf[i] + 1;
16351634
off++;
16361635

1637-
iHSS_dev[ln_hessp_idx[i] + off] = xidxt[j] + 1;
1638-
jHSS_dev[ln_hessp_idx[i] + off] = xidxf[j];
1636+
iHSS_dev[ln_hessp_idx[i] + off] = xidxt[i] + 1;
1637+
jHSS_dev[ln_hessp_idx[i] + off] = xidxf[i];
16391638
off++;
16401639

1641-
iHSS_dev[ln_hessp_idx[i] + off] = xidxt[j] + 1;
1642-
jHSS_dev[ln_hessp_idx[i] + off] = xidxf[j] + 1;
1640+
iHSS_dev[ln_hessp_idx[i] + off] = xidxt[i] + 1;
1641+
jHSS_dev[ln_hessp_idx[i] + off] = xidxf[i] + 1;
16431642
off++;
16441643
}
16451644
});
@@ -1799,8 +1798,6 @@ PetscErrorCode OPFLOWComputeSparseHessian_PBPOLRAJAHIOPSPARSE(
17991798
int *geqidxt = lineparams->geqidxt_dev_;
18001799
int *ln_hessp_idx = lineparams->hesssp_idx_dev_;
18011800

1802-
if (0) {
1803-
18041801
RAJA::forall<exago_raja_exec>(
18051802
RAJA::RangeSegment(0, lineparams->nlineON),
18061803
RAJA_LAMBDA(RAJA::Index_type i) {
@@ -2196,7 +2193,7 @@ PetscErrorCode OPFLOWComputeSparseHessian_PBPOLRAJAHIOPSPARSE(
21962193
MHSS_dev[l_hesssp_idx[i] + 1] = 0.0;
21972194
});
21982195
}
2199-
}
2196+
22002197
if (!opflow->ignore_lineflow_constraints) {
22012198
int *linelimidx = lineparams->linelimidx_dev_;
22022199
int *gineqidx = lineparams->gineqidx_dev_;
@@ -2217,7 +2214,7 @@ PetscErrorCode OPFLOWComputeSparseHessian_PBPOLRAJAHIOPSPARSE(
22172214
double Gft = Gft_arr[j], Bft = Bft_arr[j];
22182215
double Gtf = Gtf_arr[j], Btf = Btf_arr[j];
22192216
double Gtt = Gtt_arr[j], Btt = Btt_arr[j];
2220-
int fbusidx(busf_idx[i]), tbusidx(bust_idx[i]);
2217+
int fbusidx(busf_idx[j]), tbusidx(bust_idx[j]);
22212218

22222219
Pf = Gff * Vmf * Vmf +
22232220
Vmf * Vmt * (Gft * cos(thetaft) + Bft * sin(thetaft));
@@ -2470,11 +2467,11 @@ PetscErrorCode OPFLOWComputeSparseHessian_PBPOLRAJAHIOPSPARSE(
24702467
RAJA::atomicAdd<exago_raja_atomic>
24712468
(&MHSS_dev[fbusidx + 1], val[1]);
24722469

2473-
if (xidxt[i] > xidxf[i]) {
2470+
if (xidxt[j] > xidxf[j]) {
24742471
RAJA::atomicAdd<exago_raja_atomic>
2475-
(&MHSS_dev[ln_hessp_idx[i] + 0], val[2]);
2472+
(&MHSS_dev[ln_hessp_idx[j] + 0], val[2]);
24762473
RAJA::atomicAdd<exago_raja_atomic>
2477-
(&MHSS_dev[ln_hessp_idx[i] + 1], val[3]);
2474+
(&MHSS_dev[ln_hessp_idx[j] + 1], val[3]);
24782475
}
24792476

24802477
double d2Sf2_dVmf_dthetaf, d2Sf2_dVmf_dVmf, d2Sf2_dVmf_dthetat,
@@ -2528,11 +2525,11 @@ PetscErrorCode OPFLOWComputeSparseHessian_PBPOLRAJAHIOPSPARSE(
25282525
RAJA::atomicAdd<exago_raja_atomic>
25292526
(&MHSS_dev[fbusidx + 2], val[1]);
25302527

2531-
if (xidxt[i] > xidxf[i]) {
2528+
if (xidxt[j] > xidxf[j]) {
25322529
RAJA::atomicAdd<exago_raja_atomic>
2533-
(&MHSS_dev[ln_hessp_idx[i] + 2], val[2]);
2530+
(&MHSS_dev[ln_hessp_idx[j] + 2], val[2]);
25342531
RAJA::atomicAdd<exago_raja_atomic>
2535-
(&MHSS_dev[ln_hessp_idx[i] + 3], val[3]);
2532+
(&MHSS_dev[ln_hessp_idx[j] + 3], val[3]);
25362533
}
25372534

25382535
// ierr = MatSetValues(H,1,row,4,col,val,ADD_VALUES);CHKERRQ(ierr);
@@ -2591,11 +2588,11 @@ PetscErrorCode OPFLOWComputeSparseHessian_PBPOLRAJAHIOPSPARSE(
25912588
RAJA::atomicAdd<exago_raja_atomic>
25922589
(&MHSS_dev[tbusidx + 1], val[3]);
25932590

2594-
if (xidxf[i] > xidxt[i]) {
2591+
if (xidxf[j] > xidxt[j]) {
25952592
RAJA::atomicAdd<exago_raja_atomic>
2596-
(&MHSS_dev[ln_hessp_idx[i] + 0], val[0]);
2593+
(&MHSS_dev[ln_hessp_idx[j] + 0], val[0]);
25972594
RAJA::atomicAdd<exago_raja_atomic>
2598-
(&MHSS_dev[ln_hessp_idx[i] + 1], val[1]);
2595+
(&MHSS_dev[ln_hessp_idx[j] + 1], val[1]);
25992596
}
26002597
// ierr = MatSetValues(H,1,row,4,col,val,ADD_VALUES);CHKERRQ(ierr);
26012598

@@ -2650,9 +2647,9 @@ PetscErrorCode OPFLOWComputeSparseHessian_PBPOLRAJAHIOPSPARSE(
26502647
(&MHSS_dev[tbusidx + 2], val[3]);
26512648

26522649
RAJA::atomicAdd<exago_raja_atomic>
2653-
(&MHSS_dev[ln_hessp_idx[i] + 2], val[0]);
2650+
(&MHSS_dev[ln_hessp_idx[j] + 2], val[0]);
26542651
RAJA::atomicAdd<exago_raja_atomic>
2655-
(&MHSS_dev[ln_hessp_idx[i] + 3], val[1]);
2652+
(&MHSS_dev[ln_hessp_idx[j] + 3], val[1]);
26562653
});
26572654
}
26582655

0 commit comments

Comments
 (0)