Ignore:
Timestamp:
07/27/20 12:11:11 (5 years ago)
Author:
jdquinn
Message:

BUG: Array addressing when parsing results (Python); test translation; cleanup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py

    r25300 r25303  
    248248            rr = md.materials.radius
    249249            rho = md.materials.density
    250             rho_avg = (rho * np.diff(np.power(rr, 3), n=1, axis=0)) / np.diff(np.power(rr, 3).sum()).sum()
     250            rho_avg_partial = np.diff(np.power(rr, 3), n=1, axis=0)
     251            rho_avg = ((rho * rho_avg_partial) / rho_avg_partial.sum()).sum()
    251252            temp_field = np.empty((degmax + 1, nfreq, nlayer + 1, 6))
    252253            temp_field.fill(0.0)
     
    254255                for jj in range(nfreq):
    255256                    for kk in range(nlayer + 1):
    256                         if kk < nlayer + 1:
     257                        if kk < nlayer: # NOTE: Upper bound of range is non-inclusive (compare to src/m/solve/parseresultsfromdisk.m)
    257258                            ll = ii * (nlayer + 1) * 6 + (kk * 6 + 1) + 3
    258                             temp_field[ii, jj, kk, 0] = field[ll + (1 - 1), jj] * r0        # mm = 4
    259                             temp_field[ii, jj, kk, 1] = field[ll + (2 - 1), jj] * mu0       # mm = 5
    260                             temp_field[ii, jj, kk, 2] = field[ll + (3 - 1), jj] * r0        # mm = 6
    261                             temp_field[ii, jj, kk, 3] = field[ll + (4 - 1), jj] * mu0       # mm = 1
    262                             temp_field[ii, jj, kk, 4] = field[ll + (5 - 1), jj] * r0 * g0   # mm = 2
    263                             temp_field[ii, jj, kk, 5] = field[ll + (6 - 1), jj] * g0        # mm = 3
    264                             print(temp_field)
     259                            temp_field[ii, jj, kk, 0] = field[ll + (0 - 1), jj] * r0        # mm = 4
     260                            temp_field[ii, jj, kk, 1] = field[ll + (1 - 1), jj] * mu0       # mm = 5
     261                            temp_field[ii, jj, kk, 2] = field[ll + (2 - 1), jj] * r0        # mm = 6
     262                            temp_field[ii, jj, kk, 3] = field[ll + (3 - 1), jj] * mu0       # mm = 1
     263                            temp_field[ii, jj, kk, 4] = field[ll + (4 - 1), jj] * r0 * g0   # mm = 2
     264                            temp_field[ii, jj, kk, 5] = field[ll + (5 - 1), jj] * g0        # mm = 3
    265265                        else: # surface
    266                             ll = ii * (nlayer + 1) * 6 - 2
    267                             temp_field[ii, jj, kk, 0] = field[ll + (1 - 1), jj] * r0
    268                             temp_field[ii, jj, kk, 2] = field[ll + (2 - 1), jj] * r0
    269                             temp_field[ii, jj, kk, 4] = field[ll + (3 - 1), jj] * r0 * g0
     266                            ll = (ii + 1) * (nlayer + 1) * 6 - 2
     267                            temp_field[ii, jj, kk, 0] = field[ll + (0 - 1), jj] * r0
     268                            temp_field[ii, jj, kk, 2] = field[ll + (1 - 1), jj] * r0
     269                            temp_field[ii, jj, kk, 4] = field[ll + (2 - 1), jj] * r0 * g0
    270270                            # surface BC
    271271                            temp_field[ii, jj, kk, 3] = 0
    272272                            if md.love.forcing_type == 9:
    273273                                temp_field[ii, jj, kk, 1] = 0
    274                                 temp_field[ii, jj, kk, 5] = (2 * ii - 1) / r0 - ii * field[ll + (3 - 1), jj] * g0
     274                                temp_field[ii, jj, kk, 5] = (2 * (ii + 1) - 1) / r0 - (ii + 1) * field[ll + (2 - 1), jj] * g0
    275275                            elif md.love.forcing_type == 11:
    276                                 temp_field[ii, jj, kk, 1] = -(2 * (ii - 1) + 1) * rho_avg / 3
    277                                 temp_field[ii, jj, kk, 5] = (2 * ii - 1) / r0 - ii * field[ll + (3 - 1), jj] * g0
     276                                temp_field[ii, jj, kk, 1] = -(2 * ii + 1) * rho_avg / 3
     277                                temp_field[ii, jj, kk, 5] = (2 * (ii + 1) - 1) / r0 - (ii + 1) * field[ll + (2 - 1), jj] * g0
    278278            field = temp_field
    279279
Note: See TracChangeset for help on using the changeset viewer.