IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14325


Ignore:
Timestamp:
Jul 19, 2007, 2:31:43 PM (19 years ago)
Author:
magnier
Message:

fixed minor bugs

Location:
trunk/psModules/src/objects
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/models/pmModel_SERSIC.c

    r14324 r14325  
    5151
    5252    psF32 f2 = pow(z,PAR[PM_PAR_7]);
    53     psF32 f1 = exp(-z);
     53    psF32 f1 = exp(-f2);
    5454    psF32 z0 = PAR[PM_PAR_I0]*f1;
    5555    psF32 f0 = PAR[PM_PAR_SKY] + z0;
    5656
     57    assert (isfinite(f2));
     58    assert (isfinite(f1));
     59    assert (isfinite(z0));
     60    assert (isfinite(f0));
     61
    5762    if (deriv != NULL) {
    5863        psF32 *dPAR = deriv->data.F32;
    5964
    60         // note difference from a pure gaussian: q = params->data.F32[PM_PAR_I0]*r
    61         psF32 z1 = z0*PAR[PM_PAR_7]*pow(z,PAR[PM_PAR_7] - 1.0);
     65        // gradient is infinite for z = 0; saturate at z = 0.01
     66        psF32 z1 = (z < 0.01) ? z0*PAR[PM_PAR_7]*pow(0.01,PAR[PM_PAR_7] - 1.0) : z0*PAR[PM_PAR_7]*pow(z,PAR[PM_PAR_7] - 1.0);
    6267
    6368        dPAR[PM_PAR_SKY]  = +1.0;
    6469        dPAR[PM_PAR_I0]   = +f1;
    6570        dPAR[PM_PAR_7]    = (z == 0.0) ? 0.0 : -z0*f2*log(z);
     71
     72        assert (isfinite(z1));
     73        assert (isfinite(dPAR[PM_PAR_7]));
    6674
    6775        dPAR[PM_PAR_XPOS] = +1.0*z1*(2.0*px/PAR[PM_PAR_SXX] + Y*PAR[PM_PAR_SXY]);
     
    7078        dPAR[PM_PAR_SYY]  = +2.0*z1*py*py/PAR[PM_PAR_SYY];
    7179        dPAR[PM_PAR_SXY]  = -1.0*z1*X*Y;
    72     }
    73     return(f);
     80        dPAR[PM_PAR_SXY]  = -1.0*z1*X*Y;
     81    }
     82    return (f0);
    7483}
    7584
     
    156165            break;
    157166        case PM_PAR_7:
    158             params_min =   0.1;
     167            params_min =   0.25;
    159168            break;
    160169        default:
     
    244253    PAR[PM_PAR_SYY]  = PS_MAX(0.5, M_SQRT2*shape.sy);
    245254    PAR[PM_PAR_SXY]  = shape.sxy;
    246     PAR[PM_PAR_7]    = 1.0;
     255    PAR[PM_PAR_7]    = 0.5;
    247256
    248257    return(true);
  • trunk/psModules/src/objects/pmModelGroup.c

    r14324 r14325  
    66 *  @author EAM, IfA
    77 *
    8  *  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2007-07-20 00:27:59 $
     8 *  @version $Revision: 1.17 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2007-07-20 00:31:43 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4848                                          {"PS_MODEL_PGAUSS",       7, pmModelFunc_PGAUSS,  pmModelFlux_PGAUSS,  pmModelRadius_PGAUSS,  pmModelLimits_PGAUSS,  pmModelGuess_PGAUSS, pmModelFromPSF_PGAUSS, pmModelFitStatus_PGAUSS},
    4949                                          {"PS_MODEL_QGAUSS",       8, pmModelFunc_QGAUSS,  pmModelFlux_QGAUSS,  pmModelRadius_QGAUSS,  pmModelLimits_QGAUSS,  pmModelGuess_QGAUSS, pmModelFromPSF_QGAUSS, pmModelFitStatus_QGAUSS},
    50                                           {"PS_MODEL_RGAUSS",       8, pmModelFunc_RGAUSS,  pmModelFlux_RGAUSS,  pmModelRadius_RGAUSS,  pmModelLimits_RGAUSS,  pmModelGuess_RGAUSS, pmModelFromPSF_RGAUSS, pmModelFitStatus_RGAUSS}
     50                                          {"PS_MODEL_RGAUSS",       8, pmModelFunc_RGAUSS,  pmModelFlux_RGAUSS,  pmModelRadius_RGAUSS,  pmModelLimits_RGAUSS,  pmModelGuess_RGAUSS, pmModelFromPSF_RGAUSS, pmModelFitStatus_RGAUSS},
    5151                                          {"PS_MODEL_SERSIC",       8, pmModelFunc_SERSIC,  pmModelFlux_SERSIC,  pmModelRadius_SERSIC,  pmModelLimits_SERSIC,  pmModelGuess_SERSIC, pmModelFromPSF_SERSIC, pmModelFitStatus_SERSIC}
    5252                                      };
Note: See TracChangeset for help on using the changeset viewer.