Changeset 26870


Ignore:
Timestamp:
02/10/22 00:46:28 (3 years ago)
Author:
bdef
Message:

CHG: catching the case where a single costfunction is given as integer and not list

Location:
issm/trunk-jpl/src/m
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/inversion.py

    r26480 r26870  
    131131        md = checkfield(md, 'fieldname', 'inversion.step_threshold', 'size', [md.inversion.nsteps])
    132132        md = checkfield(md, 'fieldname', 'inversion.cost_functions', 'size', [num_costfunc], 'values', supportedcostfunctions())
    133         md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
    134         md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps, num_controls])
    135         md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
    136         md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
     133        if num_costfunc == 1:
     134            md.inversion.cost_functions_coefficients = np.squeeze(md.inversion.cost_functions_coefficients)
     135            md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices], '>=', 0)
     136        else:
     137            md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
     138
     139        if num_controls == 1:
     140            md.inversion.gradient_scaling = np.squeeze(md.inversion.gradient_scaling)
     141            md.inversion.min_parameters = np.squeeze(md.inversion.min_parameters)
     142            md.inversion.max_parameters = np.squeeze(md.inversion.max_parameters)
     143            md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps])
     144            md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices])
     145            md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices])
     146        else:
     147            md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps, num_controls])
     148            md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
     149            md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
    137150
    138151        # Only SSA, HO and FS are supported right now
  • issm/trunk-jpl/src/m/inversions/marshallcostfunctions.py

    r24213 r26870  
    1414              505: 'ThicknessAcrossGradient'}
    1515
    16     data = [cfDict[cf] for cf in cost_functions]
     16    if type(cost_functions == int):
     17        data = [cfDict[cost_functions]]
     18    else:
     19        data = [cfDict[cf] for cf in cost_functions]
    1720    #  #copy list first
    1821    # data = copy.deepcopy(cost_functions)
Note: See TracChangeset for help on using the changeset viewer.